[Reproducible-commits] [epydoc] 01/02: Imported Upstream version 3.0.1+dfsg

Sascha Steinbiss sascha at steinbiss.name
Mon May 30 23:21:03 UTC 2016


This is an automated email from the git hooks/post-receive script.

sascha-guest pushed a commit to branch master
in repository epydoc.

commit fe522a00061a7d1f4624a251a741e481f71ac62b
Author: Sascha Steinbiss <sascha at steinbiss.name>
Date:   Mon May 30 23:18:54 2016 +0000

    Imported Upstream version 3.0.1+dfsg
---
 LICENSE.txt                                        |   21 +
 Makefile                                           |   91 +
 PKG-INFO                                           |   10 +
 README.txt                                         |   57 +
 doc/api/bug-index.html                             |  140 +
 doc/api/class-tree.html                            |  549 +++
 doc/api/crarr.png                                  |  Bin 0 -> 340 bytes
 doc/api/epydoc-log.html                            |   34 +
 doc/api/epydoc-module.html                         |  493 ++
 doc/api/epydoc-pysrc.html                          |  349 ++
 doc/api/epydoc.apidoc-module.html                  |  664 +++
 doc/api/epydoc.apidoc-pysrc.html                   | 2748 +++++++++++
 doc/api/epydoc.apidoc.APIDoc-class.html            | 1326 +++++
 doc/api/epydoc.apidoc.ClassDoc-class.html          | 1001 ++++
 doc/api/epydoc.apidoc.ClassMethodDoc-class.html    |  440 ++
 doc/api/epydoc.apidoc.DocIndex-class.html          |  997 ++++
 doc/api/epydoc.apidoc.DottedName-class.html        | 1190 +++++
 ....apidoc.DottedName.InvalidDottedName-class.html |  161 +
 doc/api/epydoc.apidoc.GenericValueDoc-class.html   |  457 ++
 doc/api/epydoc.apidoc.ModuleDoc-class.html         |  904 ++++
 doc/api/epydoc.apidoc.NamespaceDoc-class.html      | 1130 +++++
 doc/api/epydoc.apidoc.PropertyDoc-class.html       |  625 +++
 doc/api/epydoc.apidoc.RoutineDoc-class.html        |  838 ++++
 doc/api/epydoc.apidoc.StaticMethodDoc-class.html   |  440 ++
 doc/api/epydoc.apidoc.ValueDoc-class.html          | 1112 +++++
 doc/api/epydoc.apidoc.VariableDoc-class.html       |  934 ++++
 doc/api/epydoc.apidoc._Sentinel-class.html         |  187 +
 doc/api/epydoc.checker-module.html                 |  228 +
 doc/api/epydoc.checker-pysrc.html                  |  558 +++
 doc/api/epydoc.checker.DocChecker-class.html       |  781 +++
 doc/api/epydoc.cli-module.html                     |  819 ++++
 doc/api/epydoc.cli-pysrc.html                      | 2181 +++++++++
 doc/api/epydoc.cli.ConsoleLogger-class.html        |  620 +++
 doc/api/epydoc.cli.HTMLLogger-class.html           |  575 +++
 doc/api/epydoc.cli.TerminalController-class.html   |  475 ++
 ...doc.cli.UnifiedProgressConsoleLogger-class.html |  439 ++
 doc/api/epydoc.compat-module.html                  |  176 +
 doc/api/epydoc.compat-pysrc.html                   |  371 ++
 doc/api/epydoc.css                                 |  322 ++
 doc/api/epydoc.docbuilder-module.html              | 1960 ++++++++
 doc/api/epydoc.docbuilder-pysrc.html               | 2049 ++++++++
 doc/api/epydoc.docbuilder.BuildOptions-class.html  |  399 ++
 ...epydoc.docbuilder._ProgressEstimator-class.html |  258 +
 doc/api/epydoc.docintrospecter-module.html         | 1698 +++++++
 doc/api/epydoc.docintrospecter-pysrc.html          | 1292 +++++
 doc/api/epydoc.docintrospecter._DevNull-class.html |  341 ++
 doc/api/epydoc.docparser-module.html               | 3527 +++++++++++++
 doc/api/epydoc.docparser-pysrc.html                | 2444 +++++++++
 doc/api/epydoc.docparser.ParseError-class.html     |  159 +
 doc/api/epydoc.docstringparser-module.html         | 1908 ++++++++
 doc/api/epydoc.docstringparser-pysrc.html          | 1739 +++++++
 ...pydoc.docstringparser.DocstringField-class.html |  362 ++
 doc/api/epydoc.docwriter-module.html               |  152 +
 doc/api/epydoc.docwriter-pysrc.html                |  134 +
 doc/api/epydoc.docwriter.dotgraph-module.html      | 1048 ++++
 doc/api/epydoc.docwriter.dotgraph-pysrc.html       | 1753 +++++++
 .../epydoc.docwriter.dotgraph.DotGraph-class.html  |  716 +++
 ...ydoc.docwriter.dotgraph.DotGraphEdge-class.html |  339 ++
 ...ydoc.docwriter.dotgraph.DotGraphNode-class.html |  292 ++
 ...writer.dotgraph.DotGraphUmlClassNode-class.html | 1526 ++++++
 ...riter.dotgraph.DotGraphUmlModuleNode-class.html |  607 +++
 doc/api/epydoc.docwriter.html-module.html          |  334 ++
 doc/api/epydoc.docwriter.html-pysrc.html           | 4256 ++++++++++++++++
 .../epydoc.docwriter.html.HTMLWriter-class.html    | 5176 ++++++++++++++++++++
 ....docwriter.html._HTMLDocstringLinker-class.html |  429 ++
 doc/api/epydoc.docwriter.html_colorize-module.html |  308 ++
 doc/api/epydoc.docwriter.html_colorize-pysrc.html  | 1091 +++++
 ....html_colorize.PythonSourceColorizer-class.html | 1285 +++++
 doc/api/epydoc.docwriter.html_css-module.html      |  680 +++
 doc/api/epydoc.docwriter.html_css-pysrc.html       |  673 +++
 doc/api/epydoc.docwriter.html_help-module.html     |  201 +
 doc/api/epydoc.docwriter.html_help-pysrc.html      |  313 ++
 doc/api/epydoc.docwriter.latex-module.html         |  150 +
 doc/api/epydoc.docwriter.latex-pysrc.html          | 1588 ++++++
 .../epydoc.docwriter.latex.LatexWriter-class.html  | 1347 +++++
 ...ex.LatexWriter._LatexDocstringLinker-class.html |  270 +
 doc/api/epydoc.docwriter.plaintext-module.html     |  143 +
 doc/api/epydoc.docwriter.plaintext-pysrc.html      |  518 ++
 ....docwriter.plaintext.PlaintextWriter-class.html |  407 ++
 doc/api/epydoc.docwriter.xlink-module.html         |  549 +++
 doc/api/epydoc.docwriter.xlink-pysrc.html          |  712 +++
 ...epydoc.docwriter.xlink.ApiLinkReader-class.html |  571 +++
 ...ydoc.docwriter.xlink.DocUrlGenerator-class.html |  530 ++
 .../epydoc.docwriter.xlink.UrlGenerator-class.html |  324 ++
 ...er.xlink.UrlGenerator.IndexAmbiguous-class.html |  162 +
 ...doc.docwriter.xlink.VoidUrlGenerator-class.html |  287 ++
 doc/api/epydoc.gui-module.html                     | 1009 ++++
 doc/api/epydoc.gui-pysrc.html                      | 1417 ++++++
 doc/api/epydoc.gui.EpydocGUI-class.html            |  629 +++
 doc/api/epydoc.gui.GUILogger-class.html            |  535 ++
 doc/api/epydoc.log-module.html                     |  773 +++
 doc/api/epydoc.log-pysrc.html                      |  426 ++
 doc/api/epydoc.log.Logger-class.html               |  532 ++
 doc/api/epydoc.log.SimpleLogger-class.html         |  249 +
 doc/api/epydoc.markup-module.html                  |  674 +++
 doc/api/epydoc.markup-pysrc.html                   |  945 ++++
 .../epydoc.markup.ConcatenatedDocstring-class.html |  304 ++
 doc/api/epydoc.markup.DocstringLinker-class.html   |  277 ++
 doc/api/epydoc.markup.Field-class.html             |  410 ++
 doc/api/epydoc.markup.ParseError-class.html        |  616 +++
 doc/api/epydoc.markup.ParsedDocstring-class.html   |  699 +++
 doc/api/epydoc.markup.doctest-module.html          |  381 ++
 doc/api/epydoc.markup.doctest-pysrc.html           |  533 ++
 ...ydoc.markup.doctest.DoctestColorizer-class.html |  899 ++++
 ....markup.doctest.HTMLDoctestColorizer-class.html |  365 ++
 ...markup.doctest.LaTeXDoctestColorizer-class.html |  339 ++
 ...c.markup.doctest.XMLDoctestColorizer-class.html |  340 ++
 doc/api/epydoc.markup.epytext-module.html          | 2363 +++++++++
 doc/api/epydoc.markup.epytext-pysrc.html           | 2378 +++++++++
 ...pydoc.markup.epytext.ColorizingError-class.html |  338 ++
 doc/api/epydoc.markup.epytext.Element-class.html   |  304 ++
 ...arkup.epytext.ParsedEpytextDocstring-class.html |  984 ++++
 ...ydoc.markup.epytext.StructuringError-class.html |  202 +
 doc/api/epydoc.markup.epytext.Token-class.html     |  647 +++
 ...doc.markup.epytext.TokenizationError-class.html |  202 +
 doc/api/epydoc.markup.javadoc-module.html          |  287 ++
 doc/api/epydoc.markup.javadoc-pysrc.html           |  415 ++
 ...arkup.javadoc.ParsedJavadocDocstring-class.html |  631 +++
 doc/api/epydoc.markup.plaintext-module.html        |  265 +
 doc/api/epydoc.markup.plaintext-pysrc.html         |  255 +
 ...p.plaintext.ParsedPlaintextDocstring-class.html |  523 ++
 doc/api/epydoc.markup.pyval_repr-module.html       |  284 ++
 doc/api/epydoc.markup.pyval_repr-pysrc.html        |  728 +++
 ...markup.pyval_repr.ColorizedPyvalRepr-class.html |  334 ++
 ...doc.markup.pyval_repr.PyvalColorizer-class.html |  855 ++++
 ...oc.markup.pyval_repr._ColorizerState-class.html |  259 +
 .../epydoc.markup.pyval_repr._Linebreak-class.html |  160 +
 .../epydoc.markup.pyval_repr._Maxlines-class.html  |  159 +
 doc/api/epydoc.markup.restructuredtext-module.html | 1138 +++++
 doc/api/epydoc.markup.restructuredtext-pysrc.html  | 1537 ++++++
 ...p.restructuredtext.OptimizedReporter-class.html |  346 ++
 ....restructuredtext.ParsedRstDocstring-class.html |  750 +++
 ...structuredtext._DocumentPseudoWriter-class.html |  413 ++
 ...structuredtext._EpydocHTMLTranslator-class.html | 1016 ++++
 ...tructuredtext._EpydocLaTeXTranslator-class.html |  677 +++
 ...arkup.restructuredtext._EpydocReader-class.html |  502 ++
 ...tructuredtext._SplitFieldsTranslator-class.html |  649 +++
 ...p.restructuredtext._SummaryExtractor-class.html |  421 ++
 ...kup.restructuredtext._TermsExtractor-class.html |  543 ++
 ...doc.markup.restructuredtext.dotgraph-class.html |  447 ++
 doc/api/epydoc.test-module.html                    |  238 +
 doc/api/epydoc.test-pysrc.html                     |  225 +
 doc/api/epydoc.test.util-module.html               |  567 +++
 doc/api/epydoc.test.util-pysrc.html                |  409 ++
 doc/api/epydoc.util-module.html                    |  740 +++
 doc/api/epydoc.util-pysrc.html                     |  487 ++
 doc/api/epydoc.util.RunSubprocessError-class.html  |  223 +
 doc/api/frames.html                                |   17 +
 doc/api/help.html                                  |  279 ++
 doc/api/identifier-index.html                      | 3868 +++++++++++++++
 doc/api/index.html                                 |   17 +
 doc/api/module-tree.html                           |  167 +
 doc/api/redirect.html                              |   38 +
 doc/api/term-index.html                            |  356 ++
 doc/api/toc-epydoc-module.html                     |   35 +
 doc/api/toc-epydoc.apidoc-module.html              |   66 +
 doc/api/toc-epydoc.checker-module.html             |   44 +
 doc/api/toc-epydoc.cli-module.html                 |   74 +
 doc/api/toc-epydoc.compat-module.html              |   32 +
 doc/api/toc-epydoc.docbuilder-module.html          |  110 +
 doc/api/toc-epydoc.docintrospecter-module.html     |  104 +
 doc/api/toc-epydoc.docparser-module.html           |  140 +
 doc/api/toc-epydoc.docstringparser-module.html     |   93 +
 doc/api/toc-epydoc.docwriter-module.html           |   29 +
 doc/api/toc-epydoc.docwriter.dotgraph-module.html  |   63 +
 doc/api/toc-epydoc.docwriter.html-module.html      |   37 +
 .../toc-epydoc.docwriter.html_colorize-module.html |   40 +
 doc/api/toc-epydoc.docwriter.html_css-module.html  |   66 +
 doc/api/toc-epydoc.docwriter.html_help-module.html |   31 +
 doc/api/toc-epydoc.docwriter.latex-module.html     |   31 +
 doc/api/toc-epydoc.docwriter.plaintext-module.html |   31 +
 doc/api/toc-epydoc.docwriter.xlink-module.html     |   42 +
 doc/api/toc-epydoc.gui-module.html                 |   82 +
 doc/api/toc-epydoc.log-module.html                 |   57 +
 doc/api/toc-epydoc.markup-module.html              |   51 +
 doc/api/toc-epydoc.markup.doctest-module.html      |   37 +
 doc/api/toc-epydoc.markup.epytext-module.html      |  119 +
 doc/api/toc-epydoc.markup.javadoc-module.html      |   33 +
 doc/api/toc-epydoc.markup.plaintext-module.html    |   33 +
 doc/api/toc-epydoc.markup.pyval_repr-module.html   |   44 +
 .../toc-epydoc.markup.restructuredtext-module.html |   85 +
 doc/api/toc-epydoc.test-module.html                |   32 +
 doc/api/toc-epydoc.test.util-module.html           |   42 +
 doc/api/toc-epydoc.util-module.html                |   46 +
 doc/api/toc-everything.html                        |  831 ++++
 doc/api/toc.html                                   |   62 +
 doc/api/todo-index.html                            |  206 +
 doc/configfile.html                                |  157 +
 doc/custom.css                                     |  150 +
 doc/docstrings.html                                |   88 +
 doc/doctest/apidoc.html                            |  327 ++
 doc/doctest/docbuilder.html                        |  436 ++
 doc/doctest/docintrospecter.html                   |  691 +++
 doc/doctest/docparser.html                         |  869 ++++
 doc/doctest/encoding.html                          |  300 ++
 doc/doctest/epytext.html                           |  402 ++
 doc/doctest/index.html                             |   82 +
 doc/doctest/javadoc.html                           |  112 +
 doc/doctest/plaintext.html                         |  111 +
 doc/doctest/pyval_repr.html                        |  367 ++
 doc/doctest/restructuredtext.html                  |  286 ++
 doc/doctest/zope2.html                             |  103 +
 doc/doctest/zope3.html                             |   74 +
 doc/docutils.css                                   |  273 ++
 doc/epydoc-man.html                                | 1101 +++++
 doc/epydoc.css                                     |  181 +
 doc/epydoc.html                                    | 3101 ++++++++++++
 doc/epydoc_gui.png                                 |  Bin 0 -> 6510 bytes
 doc/epydoc_guiconfig.png                           |  Bin 0 -> 21568 bytes
 doc/epydocgui-man.html                             |  612 +++
 doc/epytext.html                                   | 1076 ++++
 doc/epytextintro.html                              |   90 +
 doc/examples/class-tree.html                       |  123 +
 doc/examples/crarr.png                             |  Bin 0 -> 340 bytes
 doc/examples/epydoc.css                            |  322 ++
 doc/examples/epytext_example-module.html           |  223 +
 doc/examples/epytext_example-pysrc.html            |  156 +
 doc/examples/frames.html                           |   17 +
 doc/examples/grouped/class-tree.html               |  138 +
 doc/examples/grouped/crarr.png                     |  Bin 0 -> 340 bytes
 doc/examples/grouped/epydoc.css                    |  322 ++
 doc/examples/grouped/frames.html                   |   17 +
 doc/examples/grouped/help.html                     |  278 ++
 doc/examples/grouped/identifier-index.html         |  306 ++
 doc/examples/grouped/index.html                    |   17 +
 doc/examples/grouped/inh_example-module.html       |  189 +
 doc/examples/grouped/inh_example-pysrc.html        |  172 +
 doc/examples/grouped/inh_example.Animal-class.html |  175 +
 doc/examples/grouped/inh_example.Bird-class.html   |  196 +
 doc/examples/grouped/inh_example.Bug-class.html    |  213 +
 doc/examples/grouped/inh_example.Fish-class.html   |  196 +
 doc/examples/grouped/inh_example.Human-class.html  |  306 ++
 doc/examples/grouped/inh_example.Mammal-class.html |  202 +
 .../grouped/inh_example.Primate-class.html         |  243 +
 .../grouped/inh_example.Programmer-class.html      |  346 ++
 doc/examples/grouped/module-tree.html              |  115 +
 doc/examples/grouped/redirect.html                 |   38 +
 doc/examples/grouped/toc-everything.html           |   38 +
 doc/examples/grouped/toc-inh_example-module.html   |   38 +
 doc/examples/grouped/toc.html                      |   33 +
 doc/examples/help.html                             |  278 ++
 doc/examples/identifier-index.html                 |  369 ++
 doc/examples/included/class-tree.html              |  138 +
 doc/examples/included/crarr.png                    |  Bin 0 -> 340 bytes
 doc/examples/included/epydoc.css                   |  322 ++
 doc/examples/included/frames.html                  |   17 +
 doc/examples/included/help.html                    |  278 ++
 doc/examples/included/identifier-index.html        |  306 ++
 doc/examples/included/index.html                   |   17 +
 doc/examples/included/inh_example-module.html      |  189 +
 doc/examples/included/inh_example-pysrc.html       |  172 +
 .../included/inh_example.Animal-class.html         |  175 +
 doc/examples/included/inh_example.Bird-class.html  |  195 +
 doc/examples/included/inh_example.Bug-class.html   |  212 +
 doc/examples/included/inh_example.Fish-class.html  |  195 +
 doc/examples/included/inh_example.Human-class.html |  302 ++
 .../included/inh_example.Mammal-class.html         |  201 +
 .../included/inh_example.Primate-class.html        |  240 +
 .../included/inh_example.Programmer-class.html     |  340 ++
 doc/examples/included/module-tree.html             |  115 +
 doc/examples/included/redirect.html                |   38 +
 doc/examples/included/toc-everything.html          |   38 +
 doc/examples/included/toc-inh_example-module.html  |   38 +
 doc/examples/included/toc.html                     |   33 +
 doc/examples/index.html                            |   17 +
 doc/examples/listed/class-tree.html                |  138 +
 doc/examples/listed/crarr.png                      |  Bin 0 -> 340 bytes
 doc/examples/listed/epydoc.css                     |  322 ++
 doc/examples/listed/frames.html                    |   17 +
 doc/examples/listed/help.html                      |  278 ++
 doc/examples/listed/identifier-index.html          |  306 ++
 doc/examples/listed/index.html                     |   17 +
 doc/examples/listed/inh_example-module.html        |  189 +
 doc/examples/listed/inh_example-pysrc.html         |  172 +
 doc/examples/listed/inh_example.Animal-class.html  |  175 +
 doc/examples/listed/inh_example.Bird-class.html    |  165 +
 doc/examples/listed/inh_example.Bug-class.html     |  182 +
 doc/examples/listed/inh_example.Fish-class.html    |  165 +
 doc/examples/listed/inh_example.Human-class.html   |  222 +
 doc/examples/listed/inh_example.Mammal-class.html  |  171 +
 doc/examples/listed/inh_example.Primate-class.html |  194 +
 .../listed/inh_example.Programmer-class.html       |  244 +
 doc/examples/listed/module-tree.html               |  115 +
 doc/examples/listed/redirect.html                  |   38 +
 doc/examples/listed/toc-everything.html            |   38 +
 doc/examples/listed/toc-inh_example-module.html    |   38 +
 doc/examples/listed/toc.html                       |   33 +
 doc/examples/module-tree.html                      |  116 +
 doc/examples/redirect.html                         |   38 +
 doc/examples/sre-module.html                       |  908 ++++
 doc/examples/sre-pysrc.html                        |  429 ++
 doc/examples/sre.Scanner-class.html                |  167 +
 doc/examples/sre_constants.error-class.html        |  149 +
 doc/examples/term-index.html                       |  159 +
 doc/examples/toc-epytext_example-module.html       |   32 +
 doc/examples/toc-everything.html                   |   94 +
 doc/examples/toc-sre-module.html                   |   92 +
 doc/examples/toc.html                              |   34 +
 doc/faq.html                                       |  455 ++
 doc/fields.html                                    |  775 +++
 doc/future.html                                    |   65 +
 doc/history.html                                   |   81 +
 doc/home.thumbnail.png                             |  Bin 0 -> 8535 bytes
 doc/index.html                                     |  181 +
 doc/index.thumbnail.png                            |  Bin 0 -> 6418 bytes
 doc/installing.html                                |  250 +
 doc/license.html                                   |   65 +
 doc/manual-docstring.html                          |  122 +
 doc/manual-epytext.html                            | 1035 ++++
 doc/manual-fields.html                             |  553 +++
 doc/manual-install.html                            |  205 +
 doc/manual-othermarkup.html                        |  468 ++
 doc/manual-reference.html                          |  443 ++
 doc/manual-usage.html                              |  369 ++
 doc/othermarkup.html                               |  214 +
 doc/pysrc.thumbnail.png                            |  Bin 0 -> 7961 bytes
 doc/relatedprojects.html                           |  319 ++
 doc/sflogo.png                                     |  Bin 0 -> 2112 bytes
 doc/stylesheet.html                                |  113 +
 doc/uml.thumbnail.png                              |  Bin 0 -> 3799 bytes
 doc/using.html                                     |  476 ++
 doc/whatsnew.html                                  |  301 ++
 epydoc/__init__.py                                 |  227 +
 epydoc/apidoc.py                                   | 2203 +++++++++
 epydoc/checker.py                                  |  349 ++
 epydoc/cli.py                                      | 1470 ++++++
 epydoc/compat.py                                   |  250 +
 epydoc/docbuilder.py                               | 1358 +++++
 epydoc/docintrospecter.py                          | 1056 ++++
 epydoc/docparser.py                                | 2113 ++++++++
 epydoc/docstringparser.py                          | 1111 +++++
 epydoc/docwriter/__init__.py                       |   12 +
 epydoc/docwriter/dotgraph.py                       | 1351 +++++
 epydoc/docwriter/html.py                           | 3491 +++++++++++++
 epydoc/docwriter/html_colorize.py                  |  909 ++++
 epydoc/docwriter/html_css.py                       |  550 +++
 epydoc/docwriter/html_help.py                      |  190 +
 epydoc/docwriter/latex.py                          | 1187 +++++
 epydoc/docwriter/plaintext.py                      |  276 ++
 epydoc/docwriter/xlink.py                          |  505 ++
 epydoc/gui.py                                      | 1148 +++++
 epydoc/log.py                                      |  204 +
 epydoc/markup/__init__.py                          |  623 +++
 epydoc/markup/doctest.py                           |  311 ++
 epydoc/markup/epytext.py                           | 2116 ++++++++
 epydoc/markup/javadoc.py                           |  250 +
 epydoc/markup/plaintext.py                         |   78 +
 epydoc/markup/pyval_repr.py                        |  532 ++
 epydoc/markup/restructuredtext.py                  |  906 ++++
 epydoc/test/__init__.py                            |   97 +
 epydoc/test/util.py                                |  226 +
 epydoc/util.py                                     |  289 ++
 man/epydoc.1                                       |  762 +++
 man/epydocgui.1                                    |  420 ++
 scripts/.cvsignore                                 |    1 +
 scripts/apirst2html.py                             |   41 +
 scripts/epydoc                                     |   14 +
 scripts/epydoc.py                                  |   17 +
 scripts/epydoc.pyc                                 |  Bin 0 -> 428 bytes
 scripts/epydoc.pyw                                 |   17 +
 scripts/epydocgui                                  |    7 +
 setup.py                                           |   33 +
 362 files changed, 173533 insertions(+)

diff --git a/LICENSE.txt b/LICENSE.txt
new file mode 100644
index 0000000..7123b6d
--- /dev/null
+++ b/LICENSE.txt
@@ -0,0 +1,21 @@
+epydoc is released under the following license:
+
+    Permission is hereby granted, free of charge, to any person
+    obtaining a copy of this software and any associated documentation
+    files (the "Software"), to deal in the Software without
+    restriction, including without limitation the rights to use, copy,
+    modify, merge, publish, distribute, sublicense, and/or sell copies
+    of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be
+    included in all copies or substantial portions of the Software.
+
+    The software is provided "as is", without warranty of any
+    kind, express or implied, including but not limited to the
+    warranties of merchantability, fitness for a particular purpose
+    and noninfringement. In no event shall the authors or copyright
+    holders be liable for any claim, damages or other liability,
+    whether in an action of contract, tort or otherwise, arising from,
+    out of or in connection with the software or the use or other
+    dealings in the software.
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..045ee43
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,91 @@
+############################################################
+##  epydoc Makefile
+##
+##  Edward Loper
+############################################################
+
+##//////////////////////////////////////////////////////////////////////
+## Configuration variables
+##//////////////////////////////////////////////////////////////////////
+
+# Where do man pages and documentation go?
+LIB = /usr/share
+MAN = ${LIB}/man/
+DOC = ${LIB}/doc/
+
+# What version of python to use?
+PYTHON = python
+
+##//////////////////////////////////////////////////////////////////////
+## Makefile
+##//////////////////////////////////////////////////////////////////////
+all: usage
+usage:
+	@echo "Usage:"
+	@echo "  make install -- Install epydoc"
+	@echo "  make installdocs -- Install the documentation for epydoc"
+
+install:
+	$(PYTHON) setup.py install
+
+docs: installdocs
+installdocs:
+	@test -e ${MAN} || \
+	    echo "Could not find ${MAN}; check the makefile variables."
+	@test -e ${DOC} || \
+	    echo "Could not find ${DOC}; check the makefile variables."
+	@test -e ${MAN}
+	@test -e ${DOC}
+	test -e doc || ln -s ../webpage doc
+	test -e man || ln -s ../man man
+	cp man/*.1 ${MAN}/man1/
+	cp -r doc ${DOC}/epydoc/
+
+##//////////////////////////////////////////////////////////////////////
+## These targets should only be called from
+## the cvs repository (not from distributions).
+##//////////////////////////////////////////////////////////////////////
+
+# Clean.  
+#    - Erase any pyc and pyo files.
+#    - Get rid of build/dist directories
+clean:
+	rm -rf build dist MANIFEST
+	rm -f *.pyc epydoc/*.pyc epydoc/*/*.pyc
+	rm -f *.pyo epydoc/*.pyo epydoc/*/*.pyo
+	rm -f doc man 2>/dev/null || true
+
+# Distributions.
+# Build all from scratch; and create links for convenient access.
+distributions: clean sdist bdist
+
+# Source distributions
+sdist: gztardist zipdist
+
+# Built distributions
+bdist: rpmdist windist
+
+# Produce dist/$(NAME)-$(VERSION).tar.gz
+gztardist:
+	test -e doc || ln -s ../webpage doc
+	test -e man || ln -s ../man man
+	$(PYTHON) setup.py -q sdist --format=gztar
+
+# Produce dist/$(NAME)-$(VERSION).tar.gz
+zipdist:
+	test -e doc || ln -s ../webpage doc
+	test -e man || ln -s ../man man
+	$(PYTHON) setup.py -q sdist --format=zip
+
+# Produce dist/$(NAME)-$(VERSION)-1.noarch.rpm
+# Produce dist/$(NAME)-$(VERSION)-1.src.rpm
+rpmdist:
+	test -e doc || ln -s ../webpage doc
+	test -e man || ln -s ../man man
+	$(PYTHON) setup.py -q bdist --format=rpm
+
+# Produce dist/$(NAME)-$(VERSION).win32.exe
+windist:
+	test -e doc || ln -s ../webpage doc
+	test -e man || ln -s ../man man
+	$(PYTHON) setup.py -q bdist --format=wininst
diff --git a/PKG-INFO b/PKG-INFO
new file mode 100644
index 0000000..ae1121d
--- /dev/null
+++ b/PKG-INFO
@@ -0,0 +1,10 @@
+Metadata-Version: 1.0
+Name: epydoc
+Version: 3.0.1
+Summary: Edward Loper's API Documentation Generation Tool
+Home-page: http://epydoc.sourceforge.net
+Author: Edward Loper
+Author-email: edloper at gradient.cis.upenn.edu
+License: IBM Open Source License
+Description: UNKNOWN
+Platform: UNKNOWN
diff --git a/README.txt b/README.txt
new file mode 100644
index 0000000..a8c7793
--- /dev/null
+++ b/README.txt
@@ -0,0 +1,57 @@
+###############################################################
+###                         Epydoc                          ###
+###~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~###
+### Copyright (C) Edward Loper                              ###
+### Author: Edward Loper <edloper at gradient.cis.upenn.edu>   ###
+### URL: <http://epydoc.sourceforge.net>                    ###
+### For license information, see LICENSE.TXT                ###
+###############################################################
+
+Introduction
+~~~~~~~~~~~~
+    Epydoc is a tool for generating API documentation for Python
+    modules, based on their docstrings.  A lightweight markup language
+    called epytext can be used to format docstrings, and to add
+    information about specific fields, such as parameters and instance
+    variables.
+
+Documentation
+~~~~~~~~~~~~~
+    Documentation for epydoc, including installation and usage
+    instructions, and a complete description of the epytext markup
+    language, is available on the epydoc homepage:
+ 
+        <http://epydoc.sourceforge.net/>
+
+    This documentation is also available in the doc/ subdirectory of
+    the source distribution.
+
+Installing
+~~~~~~~~~~
+    To install epydoc, use make:
+
+        [user epydoc-3.0]$ su
+        Password:
+        [root epydoc-3.0]# make install
+        [root epydoc-3.0]# make installdocs
+
+    Or use the distutils setup.py script:
+
+        [user epydoc-3.0]$ su
+        Password:
+        [root epydoc-3.0]# python setup.py install
+
+    For complete installation instructions, including instructions on
+    how to install from RPM package, Debian package, or the windows
+    installer, see the epydoc homepage:
+
+        <http://epydoc.sourceforge.net/installing.html>
+
+Usage
+~~~~~
+    Run "epydoc --help" for a description of epydoc's usage.
+
+Contributing
+~~~~~~~~~~~~
+    If you are interested in contributing to epydoc, please email 
+    <edloper at gradient.cis.upenn.edu>.
diff --git a/doc/api/bug-index.html b/doc/api/bug-index.html
new file mode 100644
index 0000000..d8cb211
--- /dev/null
+++ b/doc/api/bug-index.html
@@ -0,0 +1,140 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Bug List</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >   Indices   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%"> </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="bug-index.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<center><b>[
+ <a href="identifier-index.html">Identifiers</a>
+| <a href="term-index.html">Term Definitions</a>
+| <a href="bug-index.html">Bugs</a>
+| <a href="todo-index.html">To Do</a>
+]</b></center><br />
+<h1 class="epydoc"><a name="bug">Bug List</a></h1>
+<br />
+<div>
+<table width="100%" class="metadata-index" bgcolor="#e0e0e0"><tr><td class="metadata-index"><b>Bugs in <a href="epydoc-module.html">epydoc</a></b>    <ul class="nomargin">
+      <li>UserDict.* is interpreted as imported .. why??</li>
+    </ul>
+</table></div>
+<div>
+<table width="100%" class="metadata-index" bgcolor="#e0e0e0"><tr><td class="metadata-index"><b>Bugs in <a href="epydoc.docparser-module.html#parse_classdef_bases">epydoc.docparser.parse_classdef_bases</a></b>    <ul class="nomargin">
+      <li>Does not handle either of:
+<pre class="literalblock">
+   - class A( (base.in.parens) ): pass
+   - class B( (lambda:calculated.base)() ): pass
+</pre></li>
+    </ul>
+</table></div>
+<div>
+<table width="100%" class="metadata-index" bgcolor="#e0e0e0"><tr><td class="metadata-index"><b>Bugs in <a href="epydoc.docparser-module.html#parse_dotted_name">epydoc.docparser.parse_dotted_name</a></b>    <ul class="nomargin">
+      <li>does not handle 'x.(y).z'</li>
+    </ul>
+</table></div>
+<div>
+<table width="100%" class="metadata-index" bgcolor="#e0e0e0"><tr><td class="metadata-index"><b>Bugs in <a href="epydoc.markup.epytext.Element-class.html#__str__">epydoc.markup.epytext.Element.__str__</a></b>    <ul class="nomargin">
+      <li>Doesn't escape '<' or '&' or '>'.</li>
+    </ul>
+</table></div>
+<br /><!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >   Indices   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:05:42 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/class-tree.html b/doc/api/class-tree.html
new file mode 100644
index 0000000..2dd242c
--- /dev/null
+++ b/doc/api/class-tree.html
@@ -0,0 +1,549 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Class Hierarchy</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >   Trees   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%"> </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="class-tree.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<center><b>
+ [ <a href="module-tree.html">Module Hierarchy</a>
+ | <a href="class-tree.html">Class Hierarchy</a> ]
+</b></center><br />
+<h1 class="epydoc">Class Hierarchy</h1>
+<ul class="nomargin-top">
+    <li> <strong class="uidlink">docutils.nodes.Body</strong>
+    <ul>
+    <li> <strong class="uidlink">docutils.nodes.General</strong>
+    <ul>
+    <li> <strong class="uidlink">docutils.nodes.image</strong>
+    <ul>
+    <li> <strong class="uidlink"><a href="epydoc.markup.restructuredtext.dotgraph-class.html">epydoc.markup.restructuredtext.dotgraph</a></strong>:
+      <em class="summary">A custom docutils node that should be rendered using Graphviz dot.</em>
+    </li>
+    </ul>
+    </li>
+    </ul>
+    </li>
+    </ul>
+    </li>
+    <li> <strong class="uidlink"><a href="epydoc.docbuilder.BuildOptions-class.html">epydoc.docbuilder.BuildOptions</a></strong>:
+      <em class="summary">Holds the parameters for a documentation building process.</em>
+    </li>
+    <li> <strong class="uidlink"><a href="epydoc.markup.ConcatenatedDocstring-class.html">epydoc.markup.ConcatenatedDocstring</a></strong>
+    </li>
+    <li> <strong class="uidlink"><a href="epydoc.checker.DocChecker-class.html">epydoc.checker.DocChecker</a></strong>:
+      <em class="summary">Documentation completeness checker.</em>
+    </li>
+    <li> <strong class="uidlink"><a href="epydoc.apidoc.DocIndex-class.html">epydoc.apidoc.DocIndex</a></strong>:
+      <em class="summary">[xx] out of date.</em>
+    </li>
+    <li> <strong class="uidlink"><a href="epydoc.docstringparser.DocstringField-class.html">epydoc.docstringparser.DocstringField</a></strong>:
+      <em class="summary">A simple docstring field, which can be used to describe specific 
+        information about an object, such as its author or its version.</em>
+    </li>
+    <li> <strong class="uidlink"><a href="epydoc.markup.DocstringLinker-class.html">epydoc.markup.DocstringLinker</a></strong>:
+      <em class="summary">A translator for crossreference links into and out of a 
+        <code>ParsedDocstring</code>.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="epydoc.docwriter.html._HTMLDocstringLinker-class.html" onclick="show_private();">epydoc.docwriter.html._HTMLDocstringLinker</a></strong>
+    </li>
+    <li> <strong class="uidlink"><a href="epydoc.docwriter.latex.LatexWriter._LatexDocstringLinker-class.html" onclick="show_private();">epydoc.docwriter.latex.LatexWriter._LatexDocstringLinker</a></strong>
+    </li>
+    </ul>
+    </li>
+    <li> <strong class="uidlink"><a href="epydoc.markup.doctest.DoctestColorizer-class.html">epydoc.markup.doctest.DoctestColorizer</a></strong>:
+      <em class="summary">An abstract base class for performing syntax highlighting on 
+        doctest blocks and other bits of Python code.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="epydoc.markup.doctest.HTMLDoctestColorizer-class.html">epydoc.markup.doctest.HTMLDoctestColorizer</a></strong>:
+      <em class="summary">A subclass of DoctestColorizer that generates HTML output.</em>
+    </li>
+    <li> <strong class="uidlink"><a href="epydoc.markup.doctest.LaTeXDoctestColorizer-class.html">epydoc.markup.doctest.LaTeXDoctestColorizer</a></strong>:
+      <em class="summary">A subclass of DoctestColorizer that generates LaTeX output.</em>
+    </li>
+    <li> <strong class="uidlink"><a href="epydoc.markup.doctest.XMLDoctestColorizer-class.html">epydoc.markup.doctest.XMLDoctestColorizer</a></strong>:
+      <em class="summary">A subclass of DoctestColorizer that generates XML-like output.</em>
+    </li>
+    </ul>
+    </li>
+    <li> <strong class="uidlink"><a href="epydoc.docwriter.dotgraph.DotGraph-class.html">epydoc.docwriter.dotgraph.DotGraph</a></strong>:
+      <em class="summary">A <tt class="rst-docutils literal"><span class="pre">dot</span></tt> directed graph.</em>
+    </li>
+    <li> <strong class="uidlink"><a href="epydoc.docwriter.dotgraph.DotGraphEdge-class.html">epydoc.docwriter.dotgraph.DotGraphEdge</a></strong>
+    </li>
+    <li> <strong class="uidlink"><a href="epydoc.docwriter.dotgraph.DotGraphNode-class.html">epydoc.docwriter.dotgraph.DotGraphNode</a></strong>
+    <ul>
+    <li> <strong class="uidlink"><a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html">epydoc.docwriter.dotgraph.DotGraphUmlClassNode</a></strong>:
+      <em class="summary">A specialized dot graph node used to display <a href="epydoc.apidoc.ClassDoc-class.html" class="link">ClassDoc</a>s using
+UML notation.</em>
+    </li>
+    <li> <strong class="uidlink"><a href="epydoc.docwriter.dotgraph.DotGraphUmlModuleNode-class.html">epydoc.docwriter.dotgraph.DotGraphUmlModuleNode</a></strong>:
+      <em class="summary">A specialized dot grah node used to display <a href="epydoc.apidoc.ModuleDoc-class.html" class="link">ModuleDoc</a>s using
+UML notation.</em>
+    </li>
+    </ul>
+    </li>
+    <li> <strong class="uidlink"><a href="epydoc.apidoc.DottedName-class.html">epydoc.apidoc.DottedName</a></strong>:
+      <em class="summary">A sequence of identifiers, separated by periods, used to name a 
+        Python variable, value, or argument.</em>
+    </li>
+    <li> <strong class="uidlink"><a href="epydoc.markup.epytext.Element-class.html">epydoc.markup.epytext.Element</a></strong>:
+      <em class="summary">A very simple DOM-like representation for parsed epytext documents.</em>
+    </li>
+    <li> <strong class="uidlink"><a href="epydoc.gui.EpydocGUI-class.html">epydoc.gui.EpydocGUI</a></strong>:
+      <em class="summary">A graphical user interace to epydoc.</em>
+    </li>
+    <li> <strong class="uidlink">exceptions.Exception</strong>:
+      <em class="summary">Common base class for all exceptions.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="epydoc.markup.ParseError-class.html">epydoc.markup.ParseError</a></strong>:
+      <em class="summary">The base class for errors generated while parsing docstrings.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="epydoc.markup.epytext.ColorizingError-class.html">epydoc.markup.epytext.ColorizingError</a></strong>:
+      <em class="summary">An error generated while colorizing a paragraph.</em>
+    </li>
+    <li> <strong class="uidlink"><a href="epydoc.markup.epytext.StructuringError-class.html">epydoc.markup.epytext.StructuringError</a></strong>:
+      <em class="summary">An error generated while structuring a formatted documentation 
+        string.</em>
+    </li>
+    <li> <strong class="uidlink"><a href="epydoc.markup.epytext.TokenizationError-class.html">epydoc.markup.epytext.TokenizationError</a></strong>:
+      <em class="summary">An error generated while tokenizing a formatted documentation 
+        string.</em>
+    </li>
+    </ul>
+    </li>
+    <li> <strong class="uidlink"><a href="epydoc.docparser.ParseError-class.html">epydoc.docparser.ParseError</a></strong>:
+      <em class="summary">An exception that is used to signify that <code>docparser</code> 
+        encountered syntactically invalid Python code while processing a 
+        Python source file.</em>
+    </li>
+    <li> <strong class="uidlink">exceptions.StandardError</strong>:
+      <em class="summary">Base class for all standard Python exceptions.</em>
+    <ul>
+    <li> <strong class="uidlink">exceptions.EnvironmentError</strong>:
+      <em class="summary">Base class for I/O related errors.</em>
+    <ul>
+    <li> <strong class="uidlink">exceptions.OSError</strong>:
+      <em class="summary">OS system call failed.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="epydoc.util.RunSubprocessError-class.html">epydoc.util.RunSubprocessError</a></strong>
+    </li>
+    </ul>
+    </li>
+    </ul>
+    </li>
+    <li> <strong class="uidlink">exceptions.LookupError</strong>:
+      <em class="summary">Base class for lookup errors.</em>
+    <ul>
+    <li> <strong class="uidlink">exceptions.IndexError</strong>:
+      <em class="summary">Sequence index out of range.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="epydoc.docwriter.xlink.UrlGenerator.IndexAmbiguous-class.html">epydoc.docwriter.xlink.UrlGenerator.IndexAmbiguous</a></strong>:
+      <em class="summary">The name looked for is ambiguous</em>
+    </li>
+    </ul>
+    </li>
+    </ul>
+    </li>
+    <li> <strong class="uidlink">exceptions.ValueError</strong>:
+      <em class="summary">Inappropriate argument value (of correct type).</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="epydoc.apidoc.DottedName.InvalidDottedName-class.html">epydoc.apidoc.DottedName.InvalidDottedName</a></strong>:
+      <em class="summary">An exception raised by the DottedName constructor when one of its 
+        arguments is not a valid dotted name.</em>
+    </li>
+    </ul>
+    </li>
+    </ul>
+    </li>
+    <li> <strong class="uidlink"><a href="epydoc.markup.pyval_repr._Linebreak-class.html" onclick="show_private();">epydoc.markup.pyval_repr._Linebreak</a></strong>:
+      <em class="summary">A control-flow exception that is raised when PyvalColorizer 
+        generates a string containing a newline, but the state object's 
+        linebreakok variable is False.</em>
+    </li>
+    <li> <strong class="uidlink"><a href="epydoc.markup.pyval_repr._Maxlines-class.html" onclick="show_private();">epydoc.markup.pyval_repr._Maxlines</a></strong>:
+      <em class="summary">A control-flow exception that is raised when PyvalColorizer exeeds 
+        the maximum number of allowed lines.</em>
+    </li>
+    </ul>
+    </li>
+    <li> <strong class="uidlink"><a href="epydoc.markup.Field-class.html">epydoc.markup.Field</a></strong>:
+      <em class="summary">The contents of a docstring's field.</em>
+    </li>
+    <li> <strong class="uidlink"><a href="epydoc.docwriter.html.HTMLWriter-class.html">epydoc.docwriter.html.HTMLWriter</a></strong>
+    </li>
+    <li> <strong class="uidlink">docutils.nodes.Inline</strong>
+    <ul>
+    <li> <strong class="uidlink">docutils.nodes.image</strong>
+    <ul>
+    <li> <strong class="uidlink"><a href="epydoc.markup.restructuredtext.dotgraph-class.html">epydoc.markup.restructuredtext.dotgraph</a></strong>:
+      <em class="summary">A custom docutils node that should be rendered using Graphviz dot.</em>
+    </li>
+    </ul>
+    </li>
+    </ul>
+    </li>
+    <li> <strong class="uidlink"><a href="epydoc.docwriter.latex.LatexWriter-class.html">epydoc.docwriter.latex.LatexWriter</a></strong>
+    </li>
+    <li> <strong class="uidlink"><a href="epydoc.log.Logger-class.html">epydoc.log.Logger</a></strong>:
+      <em class="summary">An abstract base class that defines the interface for <a 
+        name="index-loggers"></a><i class="indexterm">loggers</i>, which 
+        are used by epydoc to report information back to the user.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="epydoc.cli.ConsoleLogger-class.html">epydoc.cli.ConsoleLogger</a></strong>
+    <ul>
+    <li> <strong class="uidlink"><a href="epydoc.cli.UnifiedProgressConsoleLogger-class.html">epydoc.cli.UnifiedProgressConsoleLogger</a></strong>
+    </li>
+    </ul>
+    </li>
+    <li> <strong class="uidlink"><a href="epydoc.gui.GUILogger-class.html">epydoc.gui.GUILogger</a></strong>
+    </li>
+    <li> <strong class="uidlink"><a href="epydoc.cli.HTMLLogger-class.html">epydoc.cli.HTMLLogger</a></strong>:
+      <em class="summary">A logger used to generate a log of all warnings and messages to an 
+        HTML file.</em>
+    </li>
+    <li> <strong class="uidlink"><a href="epydoc.log.SimpleLogger-class.html">epydoc.log.SimpleLogger</a></strong>
+    </li>
+    </ul>
+    </li>
+    <li> <strong class="uidlink">docutils.nodes.Node</strong>:
+      <em class="summary">Abstract base class of nodes in a document tree.</em>
+    <ul>
+    <li> <strong class="uidlink">docutils.nodes.Element</strong>:
+      <em class="summary"><a href="epydoc.markup.epytext.Element-class.html" class="link">Element</a> is the superclass to all specific elements.</em>
+    <ul>
+    <li> <strong class="uidlink">docutils.nodes.image</strong>
+    <ul>
+    <li> <strong class="uidlink"><a href="epydoc.markup.restructuredtext.dotgraph-class.html">epydoc.markup.restructuredtext.dotgraph</a></strong>:
+      <em class="summary">A custom docutils node that should be rendered using Graphviz dot.</em>
+    </li>
+    </ul>
+    </li>
+    </ul>
+    </li>
+    </ul>
+    </li>
+    <li> <strong class="uidlink">docutils.nodes.NodeVisitor</strong>:
+      <em class="summary">"Visitor" pattern <a class="rst-citation-reference" href="#rst-gof95" id="rst-id1">[GoF95]</a> abstract superclass implementation for
+document tree traversals.</em>
+    <ul>
+    <li> <strong class="uidlink">docutils.writers.html4css1.HTMLTranslator</strong>:
+      <em class="summary">This HTML writer has been optimized to produce visually compact
+lists (less vertical whitespace).</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="epydoc.markup.restructuredtext._EpydocHTMLTranslator-class.html" onclick="show_private();">epydoc.markup.restructuredtext._EpydocHTMLTranslator</a></strong>
+    </li>
+    </ul>
+    </li>
+    <li> <strong class="uidlink">docutils.writers.latex2e.LaTeXTranslator</strong>
+    <ul>
+    <li> <strong class="uidlink"><a href="epydoc.markup.restructuredtext._EpydocLaTeXTranslator-class.html" onclick="show_private();">epydoc.markup.restructuredtext._EpydocLaTeXTranslator</a></strong>
+    </li>
+    </ul>
+    </li>
+    <li> <strong class="uidlink"><a href="epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html" onclick="show_private();">epydoc.markup.restructuredtext._SplitFieldsTranslator</a></strong>:
+      <em class="summary">A docutils translator that removes all fields from a document, and 
+        collects them into the instance variable <code>fields</code></em>
+    </li>
+    <li> <strong class="uidlink"><a href="epydoc.markup.restructuredtext._SummaryExtractor-class.html" onclick="show_private();">epydoc.markup.restructuredtext._SummaryExtractor</a></strong>:
+      <em class="summary">A docutils node visitor that extracts the first sentence from the 
+        first paragraph in a document.</em>
+    </li>
+    <li> <strong class="uidlink"><a href="epydoc.markup.restructuredtext._TermsExtractor-class.html" onclick="show_private();">epydoc.markup.restructuredtext._TermsExtractor</a></strong>:
+      <em class="summary">A docutils node visitor that extracts the terms from documentation.</em>
+    </li>
+    </ul>
+    </li>
+    <li> <strong class="uidlink"><a href="epydoc.markup.ParsedDocstring-class.html">epydoc.markup.ParsedDocstring</a></strong>:
+      <em class="summary">A standard intermediate representation for parsed docstrings that 
+        can be used to generate output.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html">epydoc.markup.epytext.ParsedEpytextDocstring</a></strong>
+    <ul>
+    <li> <strong class="uidlink"><a href="epydoc.markup.pyval_repr.ColorizedPyvalRepr-class.html">epydoc.markup.pyval_repr.ColorizedPyvalRepr</a></strong>
+    </li>
+    </ul>
+    </li>
+    <li> <strong class="uidlink"><a href="epydoc.markup.javadoc.ParsedJavadocDocstring-class.html">epydoc.markup.javadoc.ParsedJavadocDocstring</a></strong>:
+      <em class="summary">An encoded version of a Javadoc docstring.</em>
+    </li>
+    <li> <strong class="uidlink"><a href="epydoc.markup.plaintext.ParsedPlaintextDocstring-class.html">epydoc.markup.plaintext.ParsedPlaintextDocstring</a></strong>
+    </li>
+    <li> <strong class="uidlink"><a href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html">epydoc.markup.restructuredtext.ParsedRstDocstring</a></strong>:
+      <em class="summary">An encoded version of a ReStructuredText docstring.</em>
+    </li>
+    </ul>
+    </li>
+    <li> <strong class="uidlink"><a href="epydoc.docwriter.plaintext.PlaintextWriter-class.html">epydoc.docwriter.plaintext.PlaintextWriter</a></strong>
+    </li>
+    <li> <strong class="uidlink"><a href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html">epydoc.docwriter.html_colorize.PythonSourceColorizer</a></strong>:
+      <em class="summary">A class that renders a python module's source code into HTML pages.</em>
+    </li>
+    <li> <strong class="uidlink"><a href="epydoc.markup.pyval_repr.PyvalColorizer-class.html">epydoc.markup.pyval_repr.PyvalColorizer</a></strong>:
+      <em class="summary">Syntax highlighter for Python values.</em>
+    </li>
+    <li> <strong class="uidlink">docutils.utils.Reporter</strong>:
+      <em class="summary">Info/warning/error reporter and <tt class="rst-docutils literal"><span class="pre">system_message</span></tt> element generator.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="epydoc.markup.restructuredtext.OptimizedReporter-class.html">epydoc.markup.restructuredtext.OptimizedReporter</a></strong>:
+      <em class="summary">A reporter that ignores all debug messages.</em>
+    </li>
+    </ul>
+    </li>
+    <li> <strong class="uidlink">docutils.SettingsSpec</strong>:
+      <em class="summary">Runtime setting specification base class.</em>
+    <ul>
+    <li> <strong class="uidlink">docutils.Component</strong>:
+      <em class="summary">Base class for Docutils components.</em>
+    <ul>
+    <li> <strong class="uidlink">docutils.readers.Reader</strong>:
+      <em class="summary">Abstract base class for docutils Readers.</em>
+    <ul>
+    <li> <strong class="uidlink">docutils.readers.standalone.Reader</strong>
+    <ul>
+    <li> <strong class="uidlink"><a href="epydoc.docwriter.xlink.ApiLinkReader-class.html">epydoc.docwriter.xlink.ApiLinkReader</a></strong>:
+      <em class="summary">A Docutils standalone reader allowing external documentation links.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="epydoc.markup.restructuredtext._EpydocReader-class.html" onclick="show_private();">epydoc.markup.restructuredtext._EpydocReader</a></strong>:
+      <em class="summary">A reader that captures all errors that are generated by parsing, 
+        and appends them to a list.</em>
+    </li>
+    </ul>
+    </li>
+    </ul>
+    </li>
+    </ul>
+    </li>
+    <li> <strong class="uidlink">docutils.writers.Writer</strong>:
+      <em class="summary">Abstract base class for docutils Writers.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="epydoc.markup.restructuredtext._DocumentPseudoWriter-class.html" onclick="show_private();">epydoc.markup.restructuredtext._DocumentPseudoWriter</a></strong>:
+      <em class="summary">A pseudo-writer for the docutils framework, that can be used to 
+        access the document itself.</em>
+    </li>
+    </ul>
+    </li>
+    </ul>
+    </li>
+    </ul>
+    </li>
+    <li> <strong class="uidlink"><a href="epydoc.cli.TerminalController-class.html">epydoc.cli.TerminalController</a></strong>:
+      <em class="summary">A class that can be used to portably generate formatted output to a
+        terminal.</em>
+    </li>
+    <li> <strong class="uidlink"><a href="epydoc.markup.epytext.Token-class.html">epydoc.markup.epytext.Token</a></strong>:
+      <em class="summary"><code>Token</code>s are an intermediate data structure used while 
+        constructing the structuring DOM tree for a formatted docstring.</em>
+    </li>
+    <li> <strong class="uidlink">docutils.TransformSpec</strong>:
+      <em class="summary">Runtime transform specification base class.</em>
+    <ul>
+    <li> <strong class="uidlink">docutils.Component</strong>:
+      <em class="summary">Base class for Docutils components.</em>
+    <ul>
+    <li> <strong class="uidlink">docutils.readers.Reader</strong>:
+      <em class="summary">Abstract base class for docutils Readers.</em>
+    <ul>
+    <li> <strong class="uidlink">docutils.readers.standalone.Reader</strong>
+    <ul>
+    <li> <strong class="uidlink"><a href="epydoc.docwriter.xlink.ApiLinkReader-class.html">epydoc.docwriter.xlink.ApiLinkReader</a></strong>:
+      <em class="summary">A Docutils standalone reader allowing external documentation links.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="epydoc.markup.restructuredtext._EpydocReader-class.html" onclick="show_private();">epydoc.markup.restructuredtext._EpydocReader</a></strong>:
+      <em class="summary">A reader that captures all errors that are generated by parsing, 
+        and appends them to a list.</em>
+    </li>
+    </ul>
+    </li>
+    </ul>
+    </li>
+    </ul>
+    </li>
+    <li> <strong class="uidlink">docutils.writers.Writer</strong>:
+      <em class="summary">Abstract base class for docutils Writers.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="epydoc.markup.restructuredtext._DocumentPseudoWriter-class.html" onclick="show_private();">epydoc.markup.restructuredtext._DocumentPseudoWriter</a></strong>:
+      <em class="summary">A pseudo-writer for the docutils framework, that can be used to 
+        access the document itself.</em>
+    </li>
+    </ul>
+    </li>
+    </ul>
+    </li>
+    </ul>
+    </li>
+    <li> <strong class="uidlink"><a href="epydoc.docwriter.xlink.UrlGenerator-class.html">epydoc.docwriter.xlink.UrlGenerator</a></strong>:
+      <em class="summary">Generate URL from an object name.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="epydoc.docwriter.xlink.DocUrlGenerator-class.html">epydoc.docwriter.xlink.DocUrlGenerator</a></strong>:
+      <em class="summary">Read a <em>documentation index</em> and generate URL's for it.</em>
+    </li>
+    <li> <strong class="uidlink"><a href="epydoc.docwriter.xlink.VoidUrlGenerator-class.html">epydoc.docwriter.xlink.VoidUrlGenerator</a></strong>:
+      <em class="summary">Don't actually know any url, but don't report any error.</em>
+    </li>
+    </ul>
+    </li>
+    <li> <strong class="uidlink"><a href="epydoc.markup.pyval_repr._ColorizerState-class.html" onclick="show_private();">epydoc.markup.pyval_repr._ColorizerState</a></strong>:
+      <em class="summary">An object uesd to keep track of the current state of the pyval 
+        colorizer.</em>
+    </li>
+    <li> <strong class="uidlink"><a href="epydoc.docintrospecter._DevNull-class.html" onclick="show_private();">epydoc.docintrospecter._DevNull</a></strong>:
+      <em class="summary">A "file-like" object that discards anything that is 
+        written and always reports end-of-file when read.</em>
+    </li>
+    <li> <strong class="uidlink"><a href="epydoc.docbuilder._ProgressEstimator-class.html" onclick="show_private();">epydoc.docbuilder._ProgressEstimator</a></strong>:
+      <em class="summary">Used to keep track of progress when generating the initial docs for
+        the given items.</em>
+    </li>
+    <li> <strong class="uidlink"><a href="epydoc.apidoc._Sentinel-class.html" onclick="show_private();">epydoc.apidoc._Sentinel</a></strong>:
+      <em class="summary">A unique value that won't compare equal to any other value.</em>
+    </li>
+    <li> <strong class="uidlink">object</strong>:
+      <em class="summary">The most base type</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="epydoc.apidoc.APIDoc-class.html">epydoc.apidoc.APIDoc</a></strong>:
+      <em class="summary">API documentation information for a single element of a Python 
+        program.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="epydoc.apidoc.ValueDoc-class.html">epydoc.apidoc.ValueDoc</a></strong>:
+      <em class="summary">API documentation information about a single Python value.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="epydoc.apidoc.GenericValueDoc-class.html">epydoc.apidoc.GenericValueDoc</a></strong>:
+      <em class="summary">API documentation about a 'generic' value, i.e., one that does not 
+        have its own docstring or any information other than its value and 
+        parse representation.</em>
+    </li>
+    <li> <strong class="uidlink"><a href="epydoc.apidoc.NamespaceDoc-class.html">epydoc.apidoc.NamespaceDoc</a></strong>:
+      <em class="summary">API documentation information about a singe Python namespace value.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="epydoc.apidoc.ClassDoc-class.html">epydoc.apidoc.ClassDoc</a></strong>:
+      <em class="summary">API documentation information about a single class.</em>
+    </li>
+    <li> <strong class="uidlink"><a href="epydoc.apidoc.ModuleDoc-class.html">epydoc.apidoc.ModuleDoc</a></strong>:
+      <em class="summary">API documentation information about a single module.</em>
+    </li>
+    </ul>
+    </li>
+    <li> <strong class="uidlink"><a href="epydoc.apidoc.PropertyDoc-class.html">epydoc.apidoc.PropertyDoc</a></strong>:
+      <em class="summary">API documentation information about a single property.</em>
+    </li>
+    <li> <strong class="uidlink"><a href="epydoc.apidoc.RoutineDoc-class.html">epydoc.apidoc.RoutineDoc</a></strong>:
+      <em class="summary">API documentation information about a single routine.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="epydoc.apidoc.ClassMethodDoc-class.html">epydoc.apidoc.ClassMethodDoc</a></strong>
+    </li>
+    <li> <strong class="uidlink"><a href="epydoc.apidoc.StaticMethodDoc-class.html">epydoc.apidoc.StaticMethodDoc</a></strong>
+    </li>
+    </ul>
+    </li>
+    </ul>
+    </li>
+    <li> <strong class="uidlink"><a href="epydoc.apidoc.VariableDoc-class.html">epydoc.apidoc.VariableDoc</a></strong>:
+      <em class="summary">API documentation information about a single Python variable.</em>
+    </li>
+    </ul>
+    </li>
+    </ul>
+    </li>
+</ul>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >   Trees   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:05:43 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/crarr.png b/doc/api/crarr.png
new file mode 100644
index 0000000..26b43c5
Binary files /dev/null and b/doc/api/crarr.png differ
diff --git a/doc/api/epydoc-log.html b/doc/api/epydoc-log.html
new file mode 100644
index 0000000..417d965
--- /dev/null
+++ b/doc/api/epydoc-log.html
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Epydoc Log</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="epydoc">Epydoc Log</h1>
+<p class="log">Epydoc started at Wed Jan 30 14:03:35 2008</p><div class="log-warning"><b>Warning</b>: 
+epydoc.docwriter.dotgraph.DotGraphUmlClassNode._summary in multiple groups</div>
+<div class="log-warning"><b>Docstring Warning</b>: 
+<pre class="log">Failed identifier crossreference targets:
+- _val_is_private
+      (from epydoc.docwriter.html.HTMLWriter._private_subclasses)
+- docutils.nodes.Node.walk()
+      (from epydoc.markup.restructuredtext._DocumentPseudoWriter.translate)
+- docutils.nodes.Node.walkabout()
+      (from epydoc.markup.restructuredtext._DocumentPseudoWriter.translate)
+- docutils.nodes.NodeVisitor
+      (from epydoc.markup.restructuredtext._DocumentPseudoWriter.translate)
+- docutils.nodes.node_class_names
+      (from epydoc.markup.restructuredtext._DocumentPseudoWriter.translate)
+</pre></div>
+<div class="log-block"><h2 class="log-hdr">Epydoc Options</h2><div class="log-info">
+<table border="0" cellpadding="0" cellspacing="0">
+<tr valign="top" class="opt-changed"><td valign="top">css</td><td valign="top"><tt> = </tt></td><td valign="top"><tt>'white'</tt></td></tr><tr valign="top" class="opt-changed"><td valign="top">debug</td><td valign="top"><tt> = </tt></td><td valign="top"><tt>True</tt></td></tr><tr valign="top" class="opt-changed"><td valign="top">docformat</td><td valign="top"><tt> = </tt></td><td valign="top"><tt>'plaintext'</tt></td></tr><tr valign="top" class="opt-changed" [...]
+</div>
+</div><p class="log">Epydoc finished at Wed Jan 30 14:10:01 2008</p>
+<p class="log">(Elapsed time: 6 minutes, 26 seconds)</p></body>
+</html>
diff --git a/doc/api/epydoc-module.html b/doc/api/epydoc-module.html
new file mode 100644
index 0000000..1d30c1d
--- /dev/null
+++ b/doc/api/epydoc-module.html
@@ -0,0 +1,493 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >   Home   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        Package epydoc
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PACKAGE DESCRIPTION ==================== -->
+<h1 class="epydoc">Package epydoc</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc-pysrc.html">source code</a></span></p>
+<p>Automatic Python reference documentation generator.  Epydoc processes
+Python modules and docstrings to generate formatted API documentation,
+in the form of HTML pages.  Epydoc can be used via a command-line
+interface (<a href="epydoc.cli-module.html" class="link">epydoc.cli</a>) and a graphical interface (<a href="epydoc.gui-module.html" class="link">epydoc.gui</a>).
+Both interfaces let the user specify a set of modules or other objects
+to document, and produce API documentation using the following steps:</p>
+<ol class="rst-arabic simple">
+<li>Extract basic information about the specified objects, and objects
+that are related to them (such as the values defined by a module).
+This can be done via introspection, parsing, or both:<ul>
+<li><em>Introspection</em> imports the objects, and examines them directly
+using Python's introspection mechanisms.</li>
+<li><em>Parsing</em> reads the Python source files that define the objects,
+and extracts information from those files.</li>
+</ul>
+</li>
+<li>Combine and process that information.<ul>
+<li><strong>Merging</strong>: Merge the information obtained from introspection &
+parsing each object into a single structure.</li>
+<li><strong>Linking</strong>: Replace any "pointers" that were created for
+imported variables with the documentation that they point to.</li>
+<li><strong>Naming</strong>: Assign unique <em>canonical names</em> to each of the
+specified objects, and any related objects.</li>
+<li><strong>Docstrings</strong>: Parse the docstrings of each of the specified
+objects.</li>
+<li><strong>Inheritance</strong>: Add variables to classes for any values that
+they inherit from their base classes.</li>
+</ul>
+</li>
+<li>Generate output.  Output can be generated in a variety of formats:<ul>
+<li>An HTML webpage.</li>
+<li>A LaTeX document (which can be rendered as a PDF file)</li>
+<li>A plaintext description.</li>
+</ul>
+</li>
+</ol>
+<center><table border="0" cellpadding="0" cellspacing="0" class="graph" width="600">
+  <tr><td align="center">
+  <map id="overview_of_epydoc_s_architect" name="overview_of_epydoc_s_architect">
+<area shape="rect" href="epydoc.docintrospecter-module.html#introspect_docs" title="Introspect value:\nintrospect_docs()" alt="" coords="108,56,231,96" />
+<area shape="rect" href="epydoc.docbuilder-module.html#merge_docs" title="Merge introspected & parsed docs:\nmerge_docs()" alt="" coords="119,133,359,173" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html" title="APIDoc" alt="" coords="208,107,256,122" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html" title="APIDoc" alt="" coords="182,92,190,100" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html" title="APIDoc" alt="" coords="215,129,223,137" />
+<area shape="rect" href="epydoc.docparser-module.html#parse_docs" title="Parse source code:\nparse_docs()" alt="" coords="255,56,391,96" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html" title="APIDoc" alt="" coords="292,107,340,122" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html" title="APIDoc" alt="" coords="296,92,304,100" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html" title="APIDoc" alt="" coords="256,129,264,137" />
+<area shape="rect" href="epydoc.docbuilder-module.html#link_imports" title="Link imports:\nlink_imports()" alt="" coords="119,211,359,251" />
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html" title=" DocIndex" alt="" coords="240,185,302,199" />
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html" title=" DocIndex" alt="" coords="235,169,243,177" />
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html" title=" DocIndex" alt="" coords="235,207,243,215" />
+<area shape="rect" href="epydoc.docbuilder-module.html#assign_canonical_names" title="Assign names:\nassign_canonical_names()" alt="" coords="119,317,359,357" />
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html" title=" DocIndex" alt="" coords="240,277,302,291" />
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html" title=" DocIndex" alt="" coords="235,247,243,255" />
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html" title=" DocIndex" alt="" coords="235,313,243,321" />
+<area shape="rect" href="epydoc.docstringparser-module.html#parse_docstring" title="Parse docstrings:\nparse_docstring()" alt="" coords="119,395,359,435" />
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html" title=" DocIndex" alt="" coords="240,369,302,383" />
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html" title=" DocIndex" alt="" coords="235,353,243,361" />
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html" title=" DocIndex" alt="" coords="235,391,243,399" />
+<area shape="rect" href="epydoc.docbuilder-module.html#inherit_docs" title="Inherit docs from bases:\ninherit_docs()" alt="" coords="119,472,359,512" />
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html" title=" DocIndex" alt="" coords="240,446,302,461" />
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html" title=" DocIndex" alt="" coords="235,431,243,439" />
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html" title=" DocIndex" alt="" coords="235,468,243,476" />
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html" title="DocIndex" alt="" coords="200,537,278,561" />
+<area shape="rect" href="epydoc.docwriter.html-module.html" title="Write HTML output:\nHTMLWriter" alt="" coords="6,587,144,627" />
+<area shape="rect" href="epydoc.docwriter.latex-module.html" title="Write LaTeX output:\nLaTeXWriter" alt="" coords="168,587,310,627" />
+<area shape="rect" href="epydoc.docwriter.plaintext-module.html" title="Write text output:\nPlaintextWriter" alt="" coords="334,587,459,627" />
+<area shape="rect" href="epydoc.docbuilder-module.html#build_doc_index" title=" epydoc.\l docbuilder.\l build_doc_index()" alt="" coords="429,262,540,306" />
+<area shape="rect" href="epydoc.docbuilder-module.html#build_doc_index" title=" epydoc.\l docbuilder.\l build_doc_index()" alt="" coords="426,20,434,28" />
+<area shape="rect" href="epydoc.docbuilder-module.html#build_doc_index" title=" epydoc.\l docbuilder.\l build_doc_index()" alt="" coords="426,540,434,548" />
+<area shape="rect" href="epydoc.cli-module.html" title=" epydoc.\l cli()" alt="" coords="560,323,614,352" />
+<area shape="rect" href="epydoc.cli-module.html" title=" epydoc.\l cli()" alt="" coords="556,20,564,28" />
+<area shape="rect" href="epydoc.cli-module.html" title=" epydoc.\l cli()" alt="" coords="556,597,564,605" />
+</map>
+  <img src="overview_of_epydoc_s_architect.gif" alt="Overview of epydoc's architecture" usemap="#overview_of_epydoc_s_architect" ismap="ismap" class="graph-with-title" />
+  </td></tr>
+  <tr><td align='left'>
+<span class="graph-title">Overview of epydoc's architecture</span> -- <span class="graph-caption">The boxes represent steps in epydoc's processing chain.
+Arrows are annotated with the data classes used to
+communicate between steps.  The lines along the right
+side mark what portions of the processing chain are
+initiated by build_doc_index() and cli().  Click on
+any item to see its documentation.</span>
+  </td></tr>
+</table><br /></center><div class="rst-section" id="rst-package-organization">
+<h1 class="heading">Package Organization</h1>
+<p>The epydoc package contains the following subpackages and modules:</p>
+<center><table border="0" cellpadding="0" cellspacing="0" class="graph">
+  <tr><td align="center">
+  <map id="package_tree_for_epydoc" name="package_tree_for_epydoc">
+<area shape="rect" href="epydoc.apidoc-module.html" title="epydoc.apidoc" alt="" coords="25,55,75,76" />
+<area shape="rect" href="epydoc.checker-module.html" title="epydoc.checker" alt="" coords="83,55,140,76" />
+<area shape="rect" href="epydoc.cli-module.html" title="epydoc.cli" alt="" coords="148,55,176,76" />
+<area shape="rect" href="epydoc.compat-module.html" title="epydoc.compat" alt="" coords="184,55,239,76" />
+<area shape="rect" href="epydoc.docbuilder-module.html" title="epydoc.docbuilder" alt="" coords="247,55,316,76" />
+<area shape="rect" href="epydoc.docintrospecter-module.html" title="epydoc.docintrospecter" alt="" coords="324,55,424,76" />
+<area shape="rect" href="epydoc.docparser-module.html" title="epydoc.docparser" alt="" coords="432,55,500,76" />
+<area shape="rect" href="epydoc.docstringparser-module.html" title="epydoc.docstringparser" alt="" coords="25,97,500,119" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html" title="epydoc.docwriter.dotgraph" alt="" coords="35,173,97,195" />
+<area shape="rect" href="epydoc.docwriter.html-module.html" title="epydoc.docwriter.html" alt="" coords="105,173,140,195" />
+<area shape="rect" href="epydoc.docwriter.html_colorize-module.html" title="epydoc.docwriter.html_colorize" alt="" coords="148,173,235,195" />
+<area shape="rect" href="epydoc.docwriter.html_css-module.html" title="epydoc.docwriter.html_css" alt="" coords="243,173,304,195" />
+<area shape="rect" href="epydoc.docwriter.html_help-module.html" title="epydoc.docwriter.html_help" alt="" coords="312,173,379,195" />
+<area shape="rect" href="epydoc.docwriter.latex-module.html" title="epydoc.docwriter.latex" alt="" coords="387,173,424,195" />
+<area shape="rect" href="epydoc.docwriter.plaintext-module.html" title="epydoc.docwriter.plaintext" alt="" coords="432,173,491,195" />
+<area shape="rect" href="epydoc.docwriter.xlink-module.html" title="epydoc.docwriter.xlink" alt="" coords="35,216,491,237" />
+<area shape="rect" href="epydoc.docwriter-module.html" title="epydoc.docwriter" alt="" coords="25,140,500,247" />
+<area shape="rect" href="epydoc.gui-module.html" title="epydoc.gui" alt="" coords="25,268,259,289" />
+<area shape="rect" href="epydoc.log-module.html" title="epydoc.log" alt="" coords="267,268,500,289" />
+<area shape="rect" href="epydoc.markup.doctest-module.html" title="epydoc.markup.doctest" alt="" coords="35,344,92,365" />
+<area shape="rect" href="epydoc.markup.epytext-module.html" title="epydoc.markup.epytext" alt="" coords="100,344,156,365" />
+<area shape="rect" href="epydoc.markup.javadoc-module.html" title="epydoc.markup.javadoc" alt="" coords="164,344,224,365" />
+<area shape="rect" href="epydoc.markup.plaintext-module.html" title="epydoc.markup.plaintext" alt="" coords="232,344,295,365" />
+<area shape="rect" href="epydoc.markup.pyval_repr-module.html" title="epydoc.markup.pyval_repr" alt="" coords="303,344,377,365" />
+<area shape="rect" href="epydoc.markup.restructuredtext-module.html" title="epydoc.markup.restructuredtext" alt="" coords="385,344,491,365" />
+<area shape="rect" href="epydoc.markup-module.html" title="epydoc.markup" alt="" coords="25,311,500,375" />
+<area shape="rect" href="epydoc.test.util-module.html" title="epydoc.test.util" alt="" coords="35,429,275,451" />
+<area shape="rect" href="epydoc.test-module.html" title="epydoc.test" alt="" coords="25,396,284,460" />
+<area shape="rect" href="epydoc.util-module.html" title="epydoc.util" alt="" coords="292,417,500,460" />
+<area shape="rect" href="epydoc-module.html" title="epydoc" alt="" coords="16,21,509,469" />
+<area shape="rect" href="epydoc-module.html" title="epydoc" alt="" coords="5,5,520,475" />
+</map>
+  <img src="package_tree_for_epydoc.gif" alt='Package Tree for epydoc' usemap="#package_tree_for_epydoc" ismap="ismap" class="graph-with-title" />
+  </td></tr>
+  <tr><td align='center'>
+<span class="graph-title">Package Tree for epydoc</span>
+  </td></tr>
+</table><br /></center><p>The user interfaces are provided by the <a href="epydoc.gui-module.html" class="link">gui</a> and <a href="epydoc.cli-module.html" class="link">cli</a> modules.
+The <a href="epydoc.apidoc-module.html" class="link">apidoc</a> module defines the basic data types used to record
+information about Python objects.  The programmatic interface to
+epydoc is provided by <a href="epydoc.docbuilder-module.html" class="link">docbuilder</a>.  Docstring markup parsing is
+handled by the <a href="epydoc.markup-module.html" class="link">markup</a> package, and output generation is handled by
+the <a href="epydoc.docwriter-module.html" class="link">docwriter</a> package.  See the submodule list for more
+information about the submodules and subpackages.</p>
+</div>
+
+<hr />
+<div class="fields">      <p><strong>Author:</strong>
+        <a class="rst-reference external" href="mailto:edloper@gradient.cis.upenn.edu" target="_top">Edward Loper</a>
+      </p>
+      <p><strong>Requires:</strong>
+        Python 2.3+
+      </p>
+      <p><strong>Version:</strong>
+        3.0.1
+      </p>
+      <dl><dt>See Also:</dt>
+        <dd>
+          <a class="rst-reference external" href="http://epydoc.sourceforge.net" target="_top">The epydoc webpage</a>,
+          <a class="rst-reference external" href="http://epydoc.sourceforge.net/epytext.html" target="_top">The epytext markup language
+manual</a>
+        </dd>
+      </dl>
+      <strong>To Do:</strong>
+      <ul class="nomargin-top">
+        <li>
+        Create a better default top_page than trees.html.
+        </li>
+        <li>
+        Fix trees.html to work when documenting non-top-level
+modules/packages
+        </li>
+        <li>
+        Implement @include
+        </li>
+        <li>
+        Optimize epytext
+        </li>
+        <li>
+        More doctests
+        </li>
+        <li>
+        When introspecting, limit how much introspection you do (eg,
+don't construct docs for imported modules' vars if it's
+not necessary)
+        </li>
+      </ul>
+      <p><strong>Bug:</strong>
+        UserDict.* is interpreted as imported .. why??
+      </p>
+      <p><strong>License:</strong>
+        IBM Open Source License
+      </p>
+      <p><strong>Copyright:</strong>
+        © 2006 Edward Loper
+      </p>
+      <strong>Contributors (Alphabetical Order):</strong>
+      <ul class="nomargin-top">
+        <li>
+        <a class="rst-reference external" href="mailto:glyph@twistedmatrix.com" target="_top">Glyph Lefkowitz</a>
+        </li>
+        <li>
+        <a class="rst-reference external" href="mailto:edloper@gradient.cis.upenn.edu" target="_top">Edward Loper</a>
+        </li>
+        <li>
+        <a class="rst-reference external" href="mailto:bruce@cubik.org" target="_top">Bruce Mitchener</a>
+        </li>
+        <li>
+        <a class="rst-reference external" href="mailto:jeff@ohalloran.ca" target="_top">Jeff O'Halloran</a>
+        </li>
+        <li>
+        <a class="rst-reference external" href="mailto:spamies@bipbap.de" target="_top">Simon Pamies</a>
+        </li>
+        <li>
+        <a class="rst-reference external" href="mailto:kiko@async.com.br" target="_top">Christian Reis</a>
+        </li>
+        <li>
+        <a class="rst-reference external" href="mailto:daniele.varrazzo@gmail.com" target="_top">Daniele Varrazzo</a>
+        </li>
+      </ul>
+</div><!-- ==================== SUBMODULES ==================== -->
+<a name="section-Submodules"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Submodules</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Submodules"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    User Interface</th></tr>
+  <tr><td class="summary">
+  <ul class="nomargin">
+    <li> <strong class="uidlink"><a href="epydoc.cli-module.html">epydoc.cli</a></strong>: <em class="summary">Command-line interface for epydoc.</em>    </li>
+    <li> <strong class="uidlink"><a href="epydoc.gui-module.html">epydoc.gui</a></strong>: <em class="summary">Graphical interface to epydoc.</em>    </li>
+  </ul></td></tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Basic Data Types</th></tr>
+  <tr><td class="summary">
+  <ul class="nomargin">
+    <li> <strong class="uidlink"><a href="epydoc.apidoc-module.html">epydoc.apidoc</a></strong>: <em class="summary">Classes for encoding API documentation about Python programs.</em>    </li>
+  </ul></td></tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Documentation Generation</th></tr>
+  <tr><td class="summary">
+  <ul class="nomargin">
+    <li> <strong class="uidlink"><a href="epydoc.docbuilder-module.html">epydoc.docbuilder</a></strong>: <em class="summary">Construct data structures that encode the API documentation for 
+        Python objects.</em>    </li>
+    <li> <strong class="uidlink"><a href="epydoc.docintrospecter-module.html">epydoc.docintrospecter</a></strong>: <em class="summary">Extract API documentation about python objects by directly 
+        introspecting their values.</em>    </li>
+    <li> <strong class="uidlink"><a href="epydoc.docparser-module.html">epydoc.docparser</a></strong>: <em class="summary">Extract API documentation about python objects by parsing their 
+        source code.</em>    </li>
+  </ul></td></tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Docstring Processing</th></tr>
+  <tr><td class="summary">
+  <ul class="nomargin">
+    <li> <strong class="uidlink"><a href="epydoc.docstringparser-module.html">epydoc.docstringparser</a></strong>: <em class="summary">Parse docstrings and handle any fields it defines, such as 
+        <code>@type</code> and <code>@author</code>.</em>    </li>
+    <li> <strong class="uidlink"><a href="epydoc.markup-module.html">epydoc.markup</a></strong>: <em class="summary">Markup language support for docstrings.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="epydoc.markup.doctest-module.html">epydoc.markup.doctest</a></strong>: <em class="summary">Syntax highlighting for doctest blocks.</em>    </li>
+    <li> <strong class="uidlink"><a href="epydoc.markup.epytext-module.html">epydoc.markup.epytext</a></strong>: <em class="summary">Parser for epytext strings.</em>    </li>
+    <li> <strong class="uidlink"><a href="epydoc.markup.javadoc-module.html">epydoc.markup.javadoc</a></strong>: <em class="summary">Epydoc parser for <a href="http://java.sun.com/j2se/javadoc/" 
+        target="_top">Javadoc</a> docstrings.</em>    </li>
+    <li> <strong class="uidlink"><a href="epydoc.markup.plaintext-module.html">epydoc.markup.plaintext</a></strong>: <em class="summary">Parser for plaintext docstrings.</em>    </li>
+    <li> <strong class="uidlink"><a href="epydoc.markup.pyval_repr-module.html">epydoc.markup.pyval_repr</a></strong>: <em class="summary">Syntax highlighter for Python values.</em>    </li>
+    <li> <strong class="uidlink"><a href="epydoc.markup.restructuredtext-module.html">epydoc.markup.restructuredtext</a></strong>: <em class="summary">Epydoc parser for ReStructuredText strings.</em>    </li>
+    </ul>
+    </li>
+  </ul></td></tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Output Generation</th></tr>
+  <tr><td class="summary">
+  <ul class="nomargin">
+    <li> <strong class="uidlink"><a href="epydoc.docwriter-module.html">epydoc.docwriter</a></strong>: <em class="summary">Output generation.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="epydoc.docwriter.dotgraph-module.html">epydoc.docwriter.dotgraph</a></strong>: <em class="summary">Render Graphviz directed graphs as images.</em>    </li>
+    <li> <strong class="uidlink"><a href="epydoc.docwriter.html-module.html">epydoc.docwriter.html</a></strong>: <em class="summary">The HTML output generator for epydoc.</em>    </li>
+    <li> <strong class="uidlink"><a href="epydoc.docwriter.html_colorize-module.html">epydoc.docwriter.html_colorize</a></strong>: <em class="summary">Functions to produce colorized HTML code for various objects.</em>    </li>
+    <li> <strong class="uidlink"><a href="epydoc.docwriter.html_css-module.html">epydoc.docwriter.html_css</a></strong>: <em class="summary">Predefined CSS stylesheets for the HTML outputter (<a 
+        href="epydoc.docwriter.html-module.html" 
+        class="link">epydoc.docwriter.html</a>).</em>    </li>
+    <li> <strong class="uidlink"><a href="epydoc.docwriter.html_help-module.html">epydoc.docwriter.html_help</a></strong>: <em class="summary">Default help file for the HTML outputter (<a 
+        href="epydoc.docwriter.html-module.html" 
+        class="link">epydoc.docwriter.html</a>).</em>    </li>
+    <li> <strong class="uidlink"><a href="epydoc.docwriter.latex-module.html">epydoc.docwriter.latex</a></strong>: <em class="summary">The LaTeX output generator for epydoc.</em>    </li>
+    <li> <strong class="uidlink"><a href="epydoc.docwriter.plaintext-module.html">epydoc.docwriter.plaintext</a></strong>: <em class="summary">Plaintext output generation.</em>    </li>
+    <li> <strong class="uidlink"><a href="epydoc.docwriter.xlink-module.html">epydoc.docwriter.xlink</a></strong>: <em class="summary">A <a class="rst-rst-reference external rst-reference external" href="http://docutils.sourceforge.net/" target="_top">Docutils</a> interpreted text role for cross-API reference support.</em>    </li>
+    </ul>
+    </li>
+  </ul></td></tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Completeness Checking</th></tr>
+  <tr><td class="summary">
+  <ul class="nomargin">
+    <li> <strong class="uidlink"><a href="epydoc.checker-module.html">epydoc.checker</a></strong>: <em class="summary">Documentation completeness checker.</em>    </li>
+  </ul></td></tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Miscellaneous</th></tr>
+  <tr><td class="summary">
+  <ul class="nomargin">
+    <li> <strong class="uidlink"><a href="epydoc.compat-module.html">epydoc.compat</a></strong>: <em class="summary">Backwards compatibility with previous versions of Python.</em>    </li>
+    <li> <strong class="uidlink"><a href="epydoc.log-module.html">epydoc.log</a></strong>: <em class="summary">Functions used to report messages and progress updates to the user.</em>    </li>
+    <li> <strong class="uidlink"><a href="epydoc.test-module.html">epydoc.test</a></strong>: <em class="summary">Regression testing.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="epydoc.test.util-module.html">epydoc.test.util</a></strong>: <em class="summary">Utility functions used by the regression tests 
+        (<code>*.doctest</code>).</em>    </li>
+    </ul>
+    </li>
+    <li> <strong class="uidlink"><a href="epydoc.util-module.html">epydoc.util</a></strong>: <em class="summary">Miscellaneous utility functions that are used by multiple modules.</em>    </li>
+  </ul></td></tr>
+</table>
+
+<br />
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Variables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="DEBUG"></a><span class="summary-name">DEBUG</span> = <code title="True">True</code><br />
+      True if debugging is turned on.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="__author__"></a><span class="summary-name">__author__</span> = <code title="'Edward Loper <edloper at gradient.cis.upenn.edu>'"><code class="variable-quote">'</code><code class="variable-string">Edward Loper <edloper at gradient.cis.upenn.edu></code><code class="variable-quote">'</code></code><br />
+      The primary author of eypdoc
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="__license__"></a><span class="summary-name">__license__</span> = <code title="'IBM Open Source License'"><code class="variable-quote">'</code><code class="variable-string">IBM Open Source License</code><code class="variable-quote">'</code></code><br />
+      The license governing the use and distribution of epydoc
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="__url__"></a><span class="summary-name">__url__</span> = <code title="'http://epydoc.sourceforge.net'"><code class="variable-quote">'</code><code class="variable-string">http://epydoc.sourceforge.net</code><code class="variable-quote">'</code></code><br />
+      The URL for epydoc's homepage
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="__version__"></a><span class="summary-name">__version__</span> = <code title="'3.0.1'"><code class="variable-quote">'</code><code class="variable-string">3.0.1</code><code class="variable-quote">'</code></code><br />
+      The version of epydoc
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >   Home   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:05:46 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc-pysrc.html b/doc/api/epydoc-pysrc.html
new file mode 100644
index 0000000..8cba7cd
--- /dev/null
+++ b/doc/api/epydoc-pysrc.html
@@ -0,0 +1,349 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >   Home   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        Package epydoc
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="epydoc-module.html">Package epydoc</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno">  1</tt>  <tt class="py-line"><tt class="py-comment"># epydoc</tt> </tt>
+<a name="L2"></a><tt class="py-lineno">  2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L3"></a><tt class="py-lineno">  3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2005 Edward Loper</tt> </tt>
+<a name="L4"></a><tt class="py-lineno">  4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Author: Edward Loper <edloper at loper.org></tt> </tt>
+<a name="L5"></a><tt class="py-lineno">  5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># URL: <http://epydoc.sf.net></tt> </tt>
+<a name="L6"></a><tt class="py-lineno">  6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L7"></a><tt class="py-lineno">  7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># $Id: __init__.py 1691 2008-01-30 17:11:09Z edloper $</tt> </tt>
+<a name="L8"></a><tt class="py-lineno">  8</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L9"></a><tt class="py-lineno">  9</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L10"></a><tt class="py-lineno"> 10</tt>  <tt class="py-line"><tt class="py-docstring">Automatic Python reference documentation generator.  Epydoc processes</tt> </tt>
+<a name="L11"></a><tt class="py-lineno"> 11</tt>  <tt class="py-line"><tt class="py-docstring">Python modules and docstrings to generate formatted API documentation,</tt> </tt>
+<a name="L12"></a><tt class="py-lineno"> 12</tt>  <tt class="py-line"><tt class="py-docstring">in the form of HTML pages.  Epydoc can be used via a command-line</tt> </tt>
+<a name="L13"></a><tt class="py-lineno"> 13</tt>  <tt class="py-line"><tt class="py-docstring">interface (`epydoc.cli`) and a graphical interface (`epydoc.gui`).</tt> </tt>
+<a name="L14"></a><tt class="py-lineno"> 14</tt>  <tt class="py-line"><tt class="py-docstring">Both interfaces let the user specify a set of modules or other objects</tt> </tt>
+<a name="L15"></a><tt class="py-lineno"> 15</tt>  <tt class="py-line"><tt class="py-docstring">to document, and produce API documentation using the following steps:</tt> </tt>
+<a name="L16"></a><tt class="py-lineno"> 16</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L17"></a><tt class="py-lineno"> 17</tt>  <tt class="py-line"><tt class="py-docstring">1. Extract basic information about the specified objects, and objects</tt> </tt>
+<a name="L18"></a><tt class="py-lineno"> 18</tt>  <tt class="py-line"><tt class="py-docstring">   that are related to them (such as the values defined by a module).</tt> </tt>
+<a name="L19"></a><tt class="py-lineno"> 19</tt>  <tt class="py-line"><tt class="py-docstring">   This can be done via introspection, parsing, or both:</tt> </tt>
+<a name="L20"></a><tt class="py-lineno"> 20</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L21"></a><tt class="py-lineno"> 21</tt>  <tt class="py-line"><tt class="py-docstring">   * *Introspection* imports the objects, and examines them directly</tt> </tt>
+<a name="L22"></a><tt class="py-lineno"> 22</tt>  <tt class="py-line"><tt class="py-docstring">     using Python's introspection mechanisms.</tt> </tt>
+<a name="L23"></a><tt class="py-lineno"> 23</tt>  <tt class="py-line"><tt class="py-docstring">  </tt> </tt>
+<a name="L24"></a><tt class="py-lineno"> 24</tt>  <tt class="py-line"><tt class="py-docstring">   * *Parsing* reads the Python source files that define the objects,</tt> </tt>
+<a name="L25"></a><tt class="py-lineno"> 25</tt>  <tt class="py-line"><tt class="py-docstring">     and extracts information from those files.</tt> </tt>
+<a name="L26"></a><tt class="py-lineno"> 26</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L27"></a><tt class="py-lineno"> 27</tt>  <tt class="py-line"><tt class="py-docstring">2. Combine and process that information.</tt> </tt>
+<a name="L28"></a><tt class="py-lineno"> 28</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L29"></a><tt class="py-lineno"> 29</tt>  <tt class="py-line"><tt class="py-docstring">   * **Merging**: Merge the information obtained from introspection &</tt> </tt>
+<a name="L30"></a><tt class="py-lineno"> 30</tt>  <tt class="py-line"><tt class="py-docstring">     parsing each object into a single structure.</tt> </tt>
+<a name="L31"></a><tt class="py-lineno"> 31</tt>  <tt class="py-line"><tt class="py-docstring">     </tt> </tt>
+<a name="L32"></a><tt class="py-lineno"> 32</tt>  <tt class="py-line"><tt class="py-docstring">   * **Linking**: Replace any \"pointers\" that were created for</tt> </tt>
+<a name="L33"></a><tt class="py-lineno"> 33</tt>  <tt class="py-line"><tt class="py-docstring">     imported variables with the documentation that they point to.</tt> </tt>
+<a name="L34"></a><tt class="py-lineno"> 34</tt>  <tt class="py-line"><tt class="py-docstring">     </tt> </tt>
+<a name="L35"></a><tt class="py-lineno"> 35</tt>  <tt class="py-line"><tt class="py-docstring">   * **Naming**: Assign unique *canonical names* to each of the</tt> </tt>
+<a name="L36"></a><tt class="py-lineno"> 36</tt>  <tt class="py-line"><tt class="py-docstring">     specified objects, and any related objects.</tt> </tt>
+<a name="L37"></a><tt class="py-lineno"> 37</tt>  <tt class="py-line"><tt class="py-docstring">     </tt> </tt>
+<a name="L38"></a><tt class="py-lineno"> 38</tt>  <tt class="py-line"><tt class="py-docstring">   * **Docstrings**: Parse the docstrings of each of the specified</tt> </tt>
+<a name="L39"></a><tt class="py-lineno"> 39</tt>  <tt class="py-line"><tt class="py-docstring">     objects.</tt> </tt>
+<a name="L40"></a><tt class="py-lineno"> 40</tt>  <tt class="py-line"><tt class="py-docstring">     </tt> </tt>
+<a name="L41"></a><tt class="py-lineno"> 41</tt>  <tt class="py-line"><tt class="py-docstring">   * **Inheritance**: Add variables to classes for any values that</tt> </tt>
+<a name="L42"></a><tt class="py-lineno"> 42</tt>  <tt class="py-line"><tt class="py-docstring">     they inherit from their base classes.</tt> </tt>
+<a name="L43"></a><tt class="py-lineno"> 43</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L44"></a><tt class="py-lineno"> 44</tt>  <tt class="py-line"><tt class="py-docstring">3. Generate output.  Output can be generated in a variety of formats:</tt> </tt>
+<a name="L45"></a><tt class="py-lineno"> 45</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L46"></a><tt class="py-lineno"> 46</tt>  <tt class="py-line"><tt class="py-docstring">   * An HTML webpage.</tt> </tt>
+<a name="L47"></a><tt class="py-lineno"> 47</tt>  <tt class="py-line"><tt class="py-docstring">  </tt> </tt>
+<a name="L48"></a><tt class="py-lineno"> 48</tt>  <tt class="py-line"><tt class="py-docstring">   * A LaTeX document (which can be rendered as a PDF file)</tt> </tt>
+<a name="L49"></a><tt class="py-lineno"> 49</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L50"></a><tt class="py-lineno"> 50</tt>  <tt class="py-line"><tt class="py-docstring">   * A plaintext description.</tt> </tt>
+<a name="L51"></a><tt class="py-lineno"> 51</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L52"></a><tt class="py-lineno"> 52</tt>  <tt class="py-line"><tt class="py-docstring">.. digraph:: Overview of epydoc's architecture</tt> </tt>
+<a name="L53"></a><tt class="py-lineno"> 53</tt>  <tt class="py-line"><tt class="py-docstring">   :caption: The boxes represent steps in epydoc's processing chain.</tt> </tt>
+<a name="L54"></a><tt class="py-lineno"> 54</tt>  <tt class="py-line"><tt class="py-docstring">             Arrows are annotated with the data classes used to</tt> </tt>
+<a name="L55"></a><tt class="py-lineno"> 55</tt>  <tt class="py-line"><tt class="py-docstring">             communicate between steps.  The lines along the right</tt> </tt>
+<a name="L56"></a><tt class="py-lineno"> 56</tt>  <tt class="py-line"><tt class="py-docstring">             side mark what portions of the processing chain are</tt> </tt>
+<a name="L57"></a><tt class="py-lineno"> 57</tt>  <tt class="py-line"><tt class="py-docstring">             initiated by build_doc_index() and cli().  Click on</tt> </tt>
+<a name="L58"></a><tt class="py-lineno"> 58</tt>  <tt class="py-line"><tt class="py-docstring">             any item to see its documentation.</tt> </tt>
+<a name="L59"></a><tt class="py-lineno"> 59</tt>  <tt class="py-line"><tt class="py-docstring">             </tt> </tt>
+<a name="L60"></a><tt class="py-lineno"> 60</tt>  <tt class="py-line"><tt class="py-docstring">   /*</tt> </tt>
+<a name="L61"></a><tt class="py-lineno"> 61</tt>  <tt class="py-line"><tt class="py-docstring">                  Python module or value                 *       *</tt> </tt>
+<a name="L62"></a><tt class="py-lineno"> 62</tt>  <tt class="py-line"><tt class="py-docstring">                      /           \                      |       |</tt> </tt>
+<a name="L63"></a><tt class="py-lineno"> 63</tt>  <tt class="py-line"><tt class="py-docstring">                     V             V                     |       |</tt> </tt>
+<a name="L64"></a><tt class="py-lineno"> 64</tt>  <tt class="py-line"><tt class="py-docstring">            introspect_docs()  parse_docs()              |       |</tt> </tt>
+<a name="L65"></a><tt class="py-lineno"> 65</tt>  <tt class="py-line"><tt class="py-docstring">                        \        /                       |       |</tt> </tt>
+<a name="L66"></a><tt class="py-lineno"> 66</tt>  <tt class="py-line"><tt class="py-docstring">                         V      V                        |       |</tt> </tt>
+<a name="L67"></a><tt class="py-lineno"> 67</tt>  <tt class="py-line"><tt class="py-docstring">                        merge_docs()                     |       |</tt> </tt>
+<a name="L68"></a><tt class="py-lineno"> 68</tt>  <tt class="py-line"><tt class="py-docstring">                             |              build_doc_index()  cli()</tt> </tt>
+<a name="L69"></a><tt class="py-lineno"> 69</tt>  <tt class="py-line"><tt class="py-docstring">                             V                           |       |</tt> </tt>
+<a name="L70"></a><tt class="py-lineno"> 70</tt>  <tt class="py-line"><tt class="py-docstring">                       link_imports()                    |       |</tt> </tt>
+<a name="L71"></a><tt class="py-lineno"> 71</tt>  <tt class="py-line"><tt class="py-docstring">                             |                           |       |</tt> </tt>
+<a name="L72"></a><tt class="py-lineno"> 72</tt>  <tt class="py-line"><tt class="py-docstring">                             V                           |       |</tt> </tt>
+<a name="L73"></a><tt class="py-lineno"> 73</tt>  <tt class="py-line"><tt class="py-docstring">                    assign_canonical_names()             |       |</tt> </tt>
+<a name="L74"></a><tt class="py-lineno"> 74</tt>  <tt class="py-line"><tt class="py-docstring">                             |                           |       |</tt> </tt>
+<a name="L75"></a><tt class="py-lineno"> 75</tt>  <tt class="py-line"><tt class="py-docstring">                             V                           |       |</tt> </tt>
+<a name="L76"></a><tt class="py-lineno"> 76</tt>  <tt class="py-line"><tt class="py-docstring">                      parse_docstrings()                 |       |</tt> </tt>
+<a name="L77"></a><tt class="py-lineno"> 77</tt>  <tt class="py-line"><tt class="py-docstring">                             |                           |       |</tt> </tt>
+<a name="L78"></a><tt class="py-lineno"> 78</tt>  <tt class="py-line"><tt class="py-docstring">                             V                           |       |</tt> </tt>
+<a name="L79"></a><tt class="py-lineno"> 79</tt>  <tt class="py-line"><tt class="py-docstring">                       inherit_docs()                    *       |</tt> </tt>
+<a name="L80"></a><tt class="py-lineno"> 80</tt>  <tt class="py-line"><tt class="py-docstring">                      /      |        \                          |</tt> </tt>
+<a name="L81"></a><tt class="py-lineno"> 81</tt>  <tt class="py-line"><tt class="py-docstring">                     V       V         V                         |</tt> </tt>
+<a name="L82"></a><tt class="py-lineno"> 82</tt>  <tt class="py-line"><tt class="py-docstring">                HTMLWriter LaTeXWriter PlaintextWriter           *</tt> </tt>
+<a name="L83"></a><tt class="py-lineno"> 83</tt>  <tt class="py-line"><tt class="py-docstring">   */</tt> </tt>
+<a name="L84"></a><tt class="py-lineno"> 84</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L85"></a><tt class="py-lineno"> 85</tt>  <tt class="py-line"><tt class="py-docstring">   ranksep = 0.1;</tt> </tt>
+<a name="L86"></a><tt class="py-lineno"> 86</tt>  <tt class="py-line"><tt class="py-docstring">   node [shape="box", height="0", width="0"]</tt> </tt>
+<a name="L87"></a><tt class="py-lineno"> 87</tt>  <tt class="py-line"><tt class="py-docstring">   </tt> </tt>
+<a name="L88"></a><tt class="py-lineno"> 88</tt>  <tt class="py-line"><tt class="py-docstring">   { /* Task nodes */</tt> </tt>
+<a name="L89"></a><tt class="py-lineno"> 89</tt>  <tt class="py-line"><tt class="py-docstring">     node [fontcolor=\"#000060\"]</tt> </tt>
+<a name="L90"></a><tt class="py-lineno"> 90</tt>  <tt class="py-line"><tt class="py-docstring">     introspect  [label="Introspect value:\\nintrospect_docs()",</tt> </tt>
+<a name="L91"></a><tt class="py-lineno"> 91</tt>  <tt class="py-line"><tt class="py-docstring">                  href="<docintrospecter.introspect_docs>"]</tt> </tt>
+<a name="L92"></a><tt class="py-lineno"> 92</tt>  <tt class="py-line"><tt class="py-docstring">     parse       [label="Parse source code:\\nparse_docs()",</tt> </tt>
+<a name="L93"></a><tt class="py-lineno"> 93</tt>  <tt class="py-line"><tt class="py-docstring">                  href="<docparser.parse_docs>"]</tt> </tt>
+<a name="L94"></a><tt class="py-lineno"> 94</tt>  <tt class="py-line"><tt class="py-docstring">     merge       [label="Merge introspected & parsed docs:\\nmerge_docs()",</tt> </tt>
+<a name="L95"></a><tt class="py-lineno"> 95</tt>  <tt class="py-line"><tt class="py-docstring">                  href="<docbuilder.merge_docs>", width="2.5"]</tt> </tt>
+<a name="L96"></a><tt class="py-lineno"> 96</tt>  <tt class="py-line"><tt class="py-docstring">     link        [label="Link imports:\\nlink_imports()",</tt> </tt>
+<a name="L97"></a><tt class="py-lineno"> 97</tt>  <tt class="py-line"><tt class="py-docstring">                  href="<docbuilder.link_imports>", width="2.5"]</tt> </tt>
+<a name="L98"></a><tt class="py-lineno"> 98</tt>  <tt class="py-line"><tt class="py-docstring">     name        [label="Assign names:\\nassign_canonical_names()",</tt> </tt>
+<a name="L99"></a><tt class="py-lineno"> 99</tt>  <tt class="py-line"><tt class="py-docstring">                  href="<docbuilder.assign_canonical_names>", width="2.5"]</tt> </tt>
+<a name="L100"></a><tt class="py-lineno">100</tt>  <tt class="py-line"><tt class="py-docstring">     docstrings  [label="Parse docstrings:\\nparse_docstring()",</tt> </tt>
+<a name="L101"></a><tt class="py-lineno">101</tt>  <tt class="py-line"><tt class="py-docstring">                  href="<docstringparser.parse_docstring>", width="2.5"]</tt> </tt>
+<a name="L102"></a><tt class="py-lineno">102</tt>  <tt class="py-line"><tt class="py-docstring">     inheritance [label="Inherit docs from bases:\\ninherit_docs()",</tt> </tt>
+<a name="L103"></a><tt class="py-lineno">103</tt>  <tt class="py-line"><tt class="py-docstring">                  href="<docbuilder.inherit_docs>", width="2.5"]</tt> </tt>
+<a name="L104"></a><tt class="py-lineno">104</tt>  <tt class="py-line"><tt class="py-docstring">     write_html  [label="Write HTML output:\\nHTMLWriter",</tt> </tt>
+<a name="L105"></a><tt class="py-lineno">105</tt>  <tt class="py-line"><tt class="py-docstring">                 href="<docwriter.html>"]</tt> </tt>
+<a name="L106"></a><tt class="py-lineno">106</tt>  <tt class="py-line"><tt class="py-docstring">     write_latex  [label="Write LaTeX output:\\nLaTeXWriter",</tt> </tt>
+<a name="L107"></a><tt class="py-lineno">107</tt>  <tt class="py-line"><tt class="py-docstring">                 href="<docwriter.latex>"]</tt> </tt>
+<a name="L108"></a><tt class="py-lineno">108</tt>  <tt class="py-line"><tt class="py-docstring">     write_text  [label="Write text output:\\nPlaintextWriter",</tt> </tt>
+<a name="L109"></a><tt class="py-lineno">109</tt>  <tt class="py-line"><tt class="py-docstring">                 href="<docwriter.plaintext>"]</tt> </tt>
+<a name="L110"></a><tt class="py-lineno">110</tt>  <tt class="py-line"><tt class="py-docstring">   }</tt> </tt>
+<a name="L111"></a><tt class="py-lineno">111</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L112"></a><tt class="py-lineno">112</tt>  <tt class="py-line"><tt class="py-docstring">   { /* Input & Output nodes */</tt> </tt>
+<a name="L113"></a><tt class="py-lineno">113</tt>  <tt class="py-line"><tt class="py-docstring">     node [fontcolor=\"#602000\", shape="plaintext"]</tt> </tt>
+<a name="L114"></a><tt class="py-lineno">114</tt>  <tt class="py-line"><tt class="py-docstring">     input [label="Python module or value"]</tt> </tt>
+<a name="L115"></a><tt class="py-lineno">115</tt>  <tt class="py-line"><tt class="py-docstring">     output [label="DocIndex", href="<apidoc.DocIndex>"]</tt> </tt>
+<a name="L116"></a><tt class="py-lineno">116</tt>  <tt class="py-line"><tt class="py-docstring">   }</tt> </tt>
+<a name="L117"></a><tt class="py-lineno">117</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L118"></a><tt class="py-lineno">118</tt>  <tt class="py-line"><tt class="py-docstring">   { /* Graph edges */</tt> </tt>
+<a name="L119"></a><tt class="py-lineno">119</tt>  <tt class="py-line"><tt class="py-docstring">     edge [fontcolor=\"#602000\"]</tt> </tt>
+<a name="L120"></a><tt class="py-lineno">120</tt>  <tt class="py-line"><tt class="py-docstring">     input -> introspect</tt> </tt>
+<a name="L121"></a><tt class="py-lineno">121</tt>  <tt class="py-line"><tt class="py-docstring">     introspect -> merge [label="APIDoc", href="<apidoc.APIDoc>"]</tt> </tt>
+<a name="L122"></a><tt class="py-lineno">122</tt>  <tt class="py-line"><tt class="py-docstring">     input -> parse</tt> </tt>
+<a name="L123"></a><tt class="py-lineno">123</tt>  <tt class="py-line"><tt class="py-docstring">     parse -> merge [label="APIDoc", href="<apidoc.APIDoc>"]</tt> </tt>
+<a name="L124"></a><tt class="py-lineno">124</tt>  <tt class="py-line"><tt class="py-docstring">     merge -> link [label=" DocIndex", href="<apidoc.DocIndex>"]</tt> </tt>
+<a name="L125"></a><tt class="py-lineno">125</tt>  <tt class="py-line"><tt class="py-docstring">     link -> name [label=" DocIndex", href="<apidoc.DocIndex>"]</tt> </tt>
+<a name="L126"></a><tt class="py-lineno">126</tt>  <tt class="py-line"><tt class="py-docstring">     name -> docstrings [label=" DocIndex", href="<apidoc.DocIndex>"]</tt> </tt>
+<a name="L127"></a><tt class="py-lineno">127</tt>  <tt class="py-line"><tt class="py-docstring">     docstrings -> inheritance [label=" DocIndex", href="<apidoc.DocIndex>"]</tt> </tt>
+<a name="L128"></a><tt class="py-lineno">128</tt>  <tt class="py-line"><tt class="py-docstring">     inheritance -> output</tt> </tt>
+<a name="L129"></a><tt class="py-lineno">129</tt>  <tt class="py-line"><tt class="py-docstring">     output -> write_html</tt> </tt>
+<a name="L130"></a><tt class="py-lineno">130</tt>  <tt class="py-line"><tt class="py-docstring">     output -> write_latex</tt> </tt>
+<a name="L131"></a><tt class="py-lineno">131</tt>  <tt class="py-line"><tt class="py-docstring">     output -> write_text</tt> </tt>
+<a name="L132"></a><tt class="py-lineno">132</tt>  <tt class="py-line"><tt class="py-docstring">   }</tt> </tt>
+<a name="L133"></a><tt class="py-lineno">133</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L134"></a><tt class="py-lineno">134</tt>  <tt class="py-line"><tt class="py-docstring">   { /* Task collections */</tt> </tt>
+<a name="L135"></a><tt class="py-lineno">135</tt>  <tt class="py-line"><tt class="py-docstring">     node [shape="circle",label="",width=.1,height=.1]</tt> </tt>
+<a name="L136"></a><tt class="py-lineno">136</tt>  <tt class="py-line"><tt class="py-docstring">     edge [fontcolor="black", dir="none", fontcolor=\"#000060\"]</tt> </tt>
+<a name="L137"></a><tt class="py-lineno">137</tt>  <tt class="py-line"><tt class="py-docstring">     l3 -> l4 [label=" epydoc.\\l docbuilder.\\l build_doc_index()",</tt> </tt>
+<a name="L138"></a><tt class="py-lineno">138</tt>  <tt class="py-line"><tt class="py-docstring">               href="<docbuilder.build_doc_index>"]</tt> </tt>
+<a name="L139"></a><tt class="py-lineno">139</tt>  <tt class="py-line"><tt class="py-docstring">     l1 -> l2 [label=" epydoc.\\l cli()", href="<cli>"]</tt> </tt>
+<a name="L140"></a><tt class="py-lineno">140</tt>  <tt class="py-line"><tt class="py-docstring">   }</tt> </tt>
+<a name="L141"></a><tt class="py-lineno">141</tt>  <tt class="py-line"><tt class="py-docstring">   { rank=same; l1 l3 input }</tt> </tt>
+<a name="L142"></a><tt class="py-lineno">142</tt>  <tt class="py-line"><tt class="py-docstring">   { rank=same; l2 write_html }</tt> </tt>
+<a name="L143"></a><tt class="py-lineno">143</tt>  <tt class="py-line"><tt class="py-docstring">   { rank=same; l4 output }</tt> </tt>
+<a name="L144"></a><tt class="py-lineno">144</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L145"></a><tt class="py-lineno">145</tt>  <tt class="py-line"><tt class="py-docstring">Package Organization</tt> </tt>
+<a name="L146"></a><tt class="py-lineno">146</tt>  <tt class="py-line"><tt class="py-docstring">====================</tt> </tt>
+<a name="L147"></a><tt class="py-lineno">147</tt>  <tt class="py-line"><tt class="py-docstring">The epydoc package contains the following subpackages and modules:</tt> </tt>
+<a name="L148"></a><tt class="py-lineno">148</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L149"></a><tt class="py-lineno">149</tt>  <tt class="py-line"><tt class="py-docstring">.. packagetree::</tt> </tt>
+<a name="L150"></a><tt class="py-lineno">150</tt>  <tt class="py-line"><tt class="py-docstring">   :style: UML</tt> </tt>
+<a name="L151"></a><tt class="py-lineno">151</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L152"></a><tt class="py-lineno">152</tt>  <tt class="py-line"><tt class="py-docstring">The user interfaces are provided by the `gui` and `cli` modules.</tt> </tt>
+<a name="L153"></a><tt class="py-lineno">153</tt>  <tt class="py-line"><tt class="py-docstring">The `apidoc` module defines the basic data types used to record</tt> </tt>
+<a name="L154"></a><tt class="py-lineno">154</tt>  <tt class="py-line"><tt class="py-docstring">information about Python objects.  The programmatic interface to</tt> </tt>
+<a name="L155"></a><tt class="py-lineno">155</tt>  <tt class="py-line"><tt class="py-docstring">epydoc is provided by `docbuilder`.  Docstring markup parsing is</tt> </tt>
+<a name="L156"></a><tt class="py-lineno">156</tt>  <tt class="py-line"><tt class="py-docstring">handled by the `markup` package, and output generation is handled by</tt> </tt>
+<a name="L157"></a><tt class="py-lineno">157</tt>  <tt class="py-line"><tt class="py-docstring">the `docwriter` package.  See the submodule list for more</tt> </tt>
+<a name="L158"></a><tt class="py-lineno">158</tt>  <tt class="py-line"><tt class="py-docstring">information about the submodules and subpackages.</tt> </tt>
+<a name="L159"></a><tt class="py-lineno">159</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L160"></a><tt class="py-lineno">160</tt>  <tt class="py-line"><tt class="py-docstring">:group User Interface: gui, cli</tt> </tt>
+<a name="L161"></a><tt class="py-lineno">161</tt>  <tt class="py-line"><tt class="py-docstring">:group Basic Data Types: apidoc</tt> </tt>
+<a name="L162"></a><tt class="py-lineno">162</tt>  <tt class="py-line"><tt class="py-docstring">:group Documentation Generation: docbuilder, docintrospecter, docparser</tt> </tt>
+<a name="L163"></a><tt class="py-lineno">163</tt>  <tt class="py-line"><tt class="py-docstring">:group Docstring Processing: docstringparser, markup</tt> </tt>
+<a name="L164"></a><tt class="py-lineno">164</tt>  <tt class="py-line"><tt class="py-docstring">:group Output Generation: docwriter</tt> </tt>
+<a name="L165"></a><tt class="py-lineno">165</tt>  <tt class="py-line"><tt class="py-docstring">:group Completeness Checking: checker</tt> </tt>
+<a name="L166"></a><tt class="py-lineno">166</tt>  <tt class="py-line"><tt class="py-docstring">:group Miscellaneous: log, util, test, compat</tt> </tt>
+<a name="L167"></a><tt class="py-lineno">167</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L168"></a><tt class="py-lineno">168</tt>  <tt class="py-line"><tt class="py-docstring">:author: `Edward Loper <edloper at gradient.cis.upenn.edu>`__</tt> </tt>
+<a name="L169"></a><tt class="py-lineno">169</tt>  <tt class="py-line"><tt class="py-docstring">:requires: Python 2.3+</tt> </tt>
+<a name="L170"></a><tt class="py-lineno">170</tt>  <tt class="py-line"><tt class="py-docstring">:version: 3.0.1</tt> </tt>
+<a name="L171"></a><tt class="py-lineno">171</tt>  <tt class="py-line"><tt class="py-docstring">:see: `The epydoc webpage <http://epydoc.sourceforge.net>`__</tt> </tt>
+<a name="L172"></a><tt class="py-lineno">172</tt>  <tt class="py-line"><tt class="py-docstring">:see: `The epytext markup language</tt> </tt>
+<a name="L173"></a><tt class="py-lineno">173</tt>  <tt class="py-line"><tt class="py-docstring">    manual <http://epydoc.sourceforge.net/epytext.html>`__</tt> </tt>
+<a name="L174"></a><tt class="py-lineno">174</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L175"></a><tt class="py-lineno">175</tt>  <tt class="py-line"><tt class="py-docstring">:todo: Create a better default top_page than trees.html.</tt> </tt>
+<a name="L176"></a><tt class="py-lineno">176</tt>  <tt class="py-line"><tt class="py-docstring">:todo: Fix trees.html to work when documenting non-top-level</tt> </tt>
+<a name="L177"></a><tt class="py-lineno">177</tt>  <tt class="py-line"><tt class="py-docstring">       modules/packages</tt> </tt>
+<a name="L178"></a><tt class="py-lineno">178</tt>  <tt class="py-line"><tt class="py-docstring">:todo: Implement @include</tt> </tt>
+<a name="L179"></a><tt class="py-lineno">179</tt>  <tt class="py-line"><tt class="py-docstring">:todo: Optimize epytext</tt> </tt>
+<a name="L180"></a><tt class="py-lineno">180</tt>  <tt class="py-line"><tt class="py-docstring">:todo: More doctests</tt> </tt>
+<a name="L181"></a><tt class="py-lineno">181</tt>  <tt class="py-line"><tt class="py-docstring">:todo: When introspecting, limit how much introspection you do (eg,</tt> </tt>
+<a name="L182"></a><tt class="py-lineno">182</tt>  <tt class="py-line"><tt class="py-docstring">       don't construct docs for imported modules' vars if it's</tt> </tt>
+<a name="L183"></a><tt class="py-lineno">183</tt>  <tt class="py-line"><tt class="py-docstring">       not necessary)</tt> </tt>
+<a name="L184"></a><tt class="py-lineno">184</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L185"></a><tt class="py-lineno">185</tt>  <tt class="py-line"><tt class="py-docstring">:bug: UserDict.* is interpreted as imported .. why??</tt> </tt>
+<a name="L186"></a><tt class="py-lineno">186</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L187"></a><tt class="py-lineno">187</tt>  <tt class="py-line"><tt class="py-docstring">:license: IBM Open Source License</tt> </tt>
+<a name="L188"></a><tt class="py-lineno">188</tt>  <tt class="py-line"><tt class="py-docstring">:copyright: |copy| 2006 Edward Loper</tt> </tt>
+<a name="L189"></a><tt class="py-lineno">189</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L190"></a><tt class="py-lineno">190</tt>  <tt class="py-line"><tt class="py-docstring">:newfield contributor: Contributor, Contributors (Alphabetical Order)</tt> </tt>
+<a name="L191"></a><tt class="py-lineno">191</tt>  <tt class="py-line"><tt class="py-docstring">:contributor: `Glyph Lefkowitz  <mailto:glyph at twistedmatrix.com>`__</tt> </tt>
+<a name="L192"></a><tt class="py-lineno">192</tt>  <tt class="py-line"><tt class="py-docstring">:contributor: `Edward Loper  <mailto:edloper at gradient.cis.upenn.edu>`__</tt> </tt>
+<a name="L193"></a><tt class="py-lineno">193</tt>  <tt class="py-line"><tt class="py-docstring">:contributor: `Bruce Mitchener  <mailto:bruce at cubik.org>`__</tt> </tt>
+<a name="L194"></a><tt class="py-lineno">194</tt>  <tt class="py-line"><tt class="py-docstring">:contributor: `Jeff O'Halloran  <mailto:jeff at ohalloran.ca>`__</tt> </tt>
+<a name="L195"></a><tt class="py-lineno">195</tt>  <tt class="py-line"><tt class="py-docstring">:contributor: `Simon Pamies  <mailto:spamies at bipbap.de>`__</tt> </tt>
+<a name="L196"></a><tt class="py-lineno">196</tt>  <tt class="py-line"><tt class="py-docstring">:contributor: `Christian Reis  <mailto:kiko at async.com.br>`__</tt> </tt>
+<a name="L197"></a><tt class="py-lineno">197</tt>  <tt class="py-line"><tt class="py-docstring">:contributor: `Daniele Varrazzo  <mailto:daniele.varrazzo at gmail.com>`__</tt> </tt>
+<a name="L198"></a><tt class="py-lineno">198</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L199"></a><tt class="py-lineno">199</tt>  <tt class="py-line"><tt class="py-docstring">.. |copy| unicode:: 0xA9 .. copyright sign</tt> </tt>
+<a name="L200"></a><tt class="py-lineno">200</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L201"></a><tt class="py-lineno">201</tt>  <tt class="py-line"><tt class="py-name">__docformat__</tt> <tt class="py-op">=</tt> <tt class="py-string">'restructuredtext en'</tt> </tt>
+<a name="L202"></a><tt class="py-lineno">202</tt>  <tt class="py-line"> </tt>
+<a name="L203"></a><tt class="py-lineno">203</tt>  <tt class="py-line"><tt id="link-0" class="py-name" targets="Variable epydoc.__version__=epydoc-module.html#__version__"><a title="epydoc.__version__" class="py-name" href="#" onclick="return doclink('link-0', '__version__', 'link-0');">__version__</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'3.0.1'</tt> </tt>
+<a name="L204"></a><tt class="py-lineno">204</tt>  <tt class="py-line"><tt class="py-string">"""The version of epydoc"""</tt> </tt>
+<a name="L205"></a><tt class="py-lineno">205</tt>  <tt class="py-line"> </tt>
+<a name="L206"></a><tt class="py-lineno">206</tt>  <tt class="py-line"><tt id="link-1" class="py-name" targets="Variable epydoc.__author__=epydoc-module.html#__author__"><a title="epydoc.__author__" class="py-name" href="#" onclick="return doclink('link-1', '__author__', 'link-1');">__author__</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'Edward Loper <edloper at gradient.cis.upenn.edu>'</tt> </tt>
+<a name="L207"></a><tt class="py-lineno">207</tt>  <tt class="py-line"><tt class="py-string">"""The primary author of eypdoc"""</tt> </tt>
+<a name="L208"></a><tt class="py-lineno">208</tt>  <tt class="py-line"> </tt>
+<a name="L209"></a><tt class="py-lineno">209</tt>  <tt class="py-line"><tt id="link-2" class="py-name" targets="Variable epydoc.__url__=epydoc-module.html#__url__"><a title="epydoc.__url__" class="py-name" href="#" onclick="return doclink('link-2', '__url__', 'link-2');">__url__</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'http://epydoc.sourceforge.net'</tt> </tt>
+<a name="L210"></a><tt class="py-lineno">210</tt>  <tt class="py-line"><tt class="py-string">"""The URL for epydoc's homepage"""</tt> </tt>
+<a name="L211"></a><tt class="py-lineno">211</tt>  <tt class="py-line"> </tt>
+<a name="L212"></a><tt class="py-lineno">212</tt>  <tt class="py-line"><tt id="link-3" class="py-name" targets="Variable epydoc.__license__=epydoc-module.html#__license__"><a title="epydoc.__license__" class="py-name" href="#" onclick="return doclink('link-3', '__license__', 'link-3');">__license__</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'IBM Open Source License'</tt> </tt>
+<a name="L213"></a><tt class="py-lineno">213</tt>  <tt class="py-line"><tt class="py-string">"""The license governing the use and distribution of epydoc"""</tt> </tt>
+<a name="L214"></a><tt class="py-lineno">214</tt>  <tt class="py-line"> </tt>
+<a name="L215"></a><tt class="py-lineno">215</tt>  <tt class="py-line"><tt class="py-comment"># [xx] this should probably be a private variable:</tt> </tt>
+<a name="L216"></a><tt class="py-lineno">216</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt id="link-4" class="py-name" targets="Variable epydoc.DEBUG=epydoc-module.html#DEBUG,Variable epydoc.gui.DEBUG=epydoc.gui-module.html#DEBUG,Variable epydoc.log.DEBUG=epydoc.log-module.html#DEBUG"><a title="epydoc.DEBUG
+epydoc.gui.DEBUG
+epydoc.log.DEBUG" class="py-name" href="#" onclick="return doclink('link-4', 'DEBUG', 'link-4');">DEBUG</a></tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L217"></a><tt class="py-lineno">217</tt>  <tt class="py-line"><tt class="py-string">"""True if debugging is turned on."""</tt> </tt>
+<a name="L218"></a><tt class="py-lineno">218</tt>  <tt class="py-line"> </tt>
+<a name="L219"></a><tt class="py-lineno">219</tt>  <tt class="py-line"><tt class="py-comment"># Changes needed for docs:</tt> </tt>
+<a name="L220"></a><tt class="py-lineno">220</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#   - document the method for deciding what's public/private</tt> </tt>
+<a name="L221"></a><tt class="py-lineno">221</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#   - epytext: fields are defined slightly differently (@group)</tt> </tt>
+<a name="L222"></a><tt class="py-lineno">222</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#   - new fields</tt> </tt>
+<a name="L223"></a><tt class="py-lineno">223</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#   - document __extra_epydoc_fields__ and @newfield</tt> </tt>
+<a name="L224"></a><tt class="py-lineno">224</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#   - Add a faq?</tt> </tt>
+<a name="L225"></a><tt class="py-lineno">225</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#   - @type a,b,c: ...</tt> </tt>
+<a name="L226"></a><tt class="py-lineno">226</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#   - new command line option: --command-line-order</tt> </tt>
+<a name="L227"></a><tt class="py-lineno">227</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >   Home   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:09:41 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.apidoc-module.html b/doc/api/epydoc.apidoc-module.html
new file mode 100644
index 0000000..a10b379
--- /dev/null
+++ b/doc/api/epydoc.apidoc-module.html
@@ -0,0 +1,664 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.apidoc</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        Module apidoc
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.apidoc-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module apidoc</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.apidoc-pysrc.html">source code</a></span></p>
+<p>Classes for encoding API documentation about Python programs. These 
+  classes are used as a common representation for combining information 
+  derived from introspection and from parsing.</p>
+  <p>The API documentation for a Python program is encoded using a graph of
+  <a href="epydoc.apidoc.APIDoc-class.html" class="link">APIDoc</a> 
+  objects, each of which encodes information about a single Python variable
+  or value.  <code>APIDoc</code> has two direct subclasses: <a 
+  href="epydoc.apidoc.VariableDoc-class.html" class="link">VariableDoc</a>,
+  for documenting variables; and <a 
+  href="epydoc.apidoc.ValueDoc-class.html" class="link">ValueDoc</a>, for 
+  documenting values.  The <code>ValueDoc</code> class is subclassed 
+  further, to define the different pieces of information that should be 
+  recorded about each value type:</p>
+  <p></p>
+<center><table border="0" cellpadding="0" cellspacing="0" class="graph">
+  <tr><td align="center">
+  <map id="class_hierarchy_for_apidoc" name="class_hierarchy_for_apidoc">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html" title="APIDoc" alt="" coords="299,7,368,31" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html" title="ValueDoc" alt="" coords="239,63,319,87" />
+<area shape="rect" href="epydoc.apidoc.VariableDoc-class.html" title="VariableDoc" alt="" coords="343,63,436,87" />
+<area shape="rect" href="epydoc.apidoc.ClassDoc-class.html" title="ClassDoc" alt="" coords="97,175,175,199" />
+<area shape="rect" href="epydoc.apidoc.ClassMethodDoc-class.html" title="ClassMethodDoc" alt="" coords="369,175,492,199" />
+<area shape="rect" href="epydoc.apidoc.GenericValueDoc-class.html" title="GenericValueDoc" alt="" coords="5,119,131,143" />
+<area shape="rect" href="epydoc.apidoc.ModuleDoc-class.html" title="ModuleDoc" alt="" coords="199,175,287,199" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html" title="NamespaceDoc" alt="" coords="155,119,272,143" />
+<area shape="rect" href="epydoc.apidoc.PropertyDoc-class.html" title="PropertyDoc" alt="" coords="296,119,392,143" />
+<area shape="rect" href="epydoc.apidoc.RoutineDoc-class.html" title="RoutineDoc" alt="" coords="416,119,507,143" />
+<area shape="rect" href="epydoc.apidoc.StaticMethodDoc-class.html" title="StaticMethodDoc" alt="" coords="516,175,639,199" />
+</map>
+  <img src="class_hierarchy_for_apidoc.gif" alt='Class Hierarchy for APIDoc' usemap="#class_hierarchy_for_apidoc" ismap="ismap" class="graph-with-title" />
+  </td></tr>
+  <tr><td align='center'>
+<span class="graph-title">Class Hierarchy for APIDoc</span>
+  </td></tr>
+</table><br /></center>  <p></p>
+  <p>The distinction between variables and values is intentionally made 
+  explicit.  This allows us to distinguish information about a variable 
+  itself (such as whether it should be considered 'public' in its 
+  containing namespace) from information about the value it contains (such 
+  as what type the value has).  This distinction is also important because 
+  several variables can contain the same value: each variable should be 
+  described by a separate <code>VariableDoc</code>; but we only need one 
+  <code>ValueDoc</code>, since they share a single value.</p>
+
+<hr />
+<div class="fields">      <p><strong>To Do:</strong>
+        Add a cache to canonical name lookup?
+      </p>
+</div><!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Classes</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Classes"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.apidoc.DottedName-class.html" class="summary-name">DottedName</a><br />
+      A sequence of identifiers, separated by periods, used to name a 
+        Python variable, value, or argument.
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.apidoc._Sentinel-class.html" class="summary-name" onclick="show_private();">_Sentinel</a><br />
+      A unique value that won't compare equal to any other value.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.apidoc.APIDoc-class.html" class="summary-name">APIDoc</a><br />
+      API documentation information for a single element of a Python 
+        program.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.apidoc.VariableDoc-class.html" class="summary-name">VariableDoc</a><br />
+      API documentation information about a single Python variable.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.apidoc.ValueDoc-class.html" class="summary-name">ValueDoc</a><br />
+      API documentation information about a single Python value.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.apidoc.GenericValueDoc-class.html" class="summary-name">GenericValueDoc</a><br />
+      API documentation about a 'generic' value, i.e., one that does not 
+        have its own docstring or any information other than its value and 
+        parse representation.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.apidoc.NamespaceDoc-class.html" class="summary-name">NamespaceDoc</a><br />
+      API documentation information about a singe Python namespace value.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.apidoc.ModuleDoc-class.html" class="summary-name">ModuleDoc</a><br />
+      API documentation information about a single module.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.apidoc.ClassDoc-class.html" class="summary-name">ClassDoc</a><br />
+      API documentation information about a single class.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.apidoc.RoutineDoc-class.html" class="summary-name">RoutineDoc</a><br />
+      API documentation information about a single routine.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.apidoc.ClassMethodDoc-class.html" class="summary-name">ClassMethodDoc</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.apidoc.StaticMethodDoc-class.html" class="summary-name">StaticMethodDoc</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.apidoc.PropertyDoc-class.html" class="summary-name">PropertyDoc</a><br />
+      API documentation information about a single property.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.apidoc.DocIndex-class.html" class="summary-name">DocIndex</a><br />
+      [xx] out of date.
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTIONS ==================== -->
+<a name="section-Functions"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Functions</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Functions"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.apidoc-module.html#reachable_valdocs" class="summary-sig-name">reachable_valdocs</a>(<span class="summary-sig-arg">root</span>,
+        <span class="summary-sig-arg">**filters</span>)</span><br />
+      Return a list of all <code>ValueDoc</code>s that can be reached, 
+      directly or indirectly from the given root list of 
+      <code>ValueDoc</code>s.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.apidoc-pysrc.html#reachable_valdocs">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_reachable_valdo-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_reachable_valdo-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_reachable_valdo" name="call_graph_for_reachable_valdo">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__cmp__" title="APIDoc.__cmp__()" alt="" coords="559,6,729,38" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__hash__" title="APIDoc.__hash__()" alt="" coords="559,62,729,94" />
+<area shape="rect" href="epydoc.apidoc.ClassDoc-class.html#apidoc_links" title="ClassDoc.apidoc_links()" alt="" coords="541,118,747,150" />
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#reachable_valdocs" title="DocIndex.reachable_valdocs()" alt="" coords="7,174,257,206" />
+<area shape="rect" href="epydoc.apidoc-module.html#reachable_valdocs" title="reachable_valdocs()" alt="" coords="307,174,480,206" />
+<area shape="rect" href="epydoc.apidoc.ModuleDoc-class.html#apidoc_links" title="ModuleDoc.apidoc_links()" alt="" coords="532,174,756,206" />
+<area shape="rect" href="epydoc.apidoc.PropertyDoc-class.html#apidoc_links" title="PropertyDoc.apidoc_links()" alt="" coords="529,230,759,262" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#apidoc_links" title="ValueDoc.apidoc_links()" alt="" coords="539,286,749,318" />
+<area shape="rect" href="epydoc.apidoc.VariableDoc-class.html#apidoc_links" title="VariableDoc.apidoc_links()" alt="" coords="529,342,759,374" />
+</map>
+  <img src="call_graph_for_reachable_valdo.gif" alt='' usemap="#call_graph_for_reachable_valdo" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_flatten"></a><span class="summary-sig-name">_flatten</span>(<span class="summary-sig-arg">lst</span>,
+        <span class="summary-sig-arg">out</span>=<span class="summary-sig-default">None</span>)</span><br />
+      Return a flattened version of <code>lst</code>.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.apidoc-pysrc.html#_flatten">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__flatten-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__flatten-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__flatten" name="call_graph_for__flatten">
+<area shape="rect" href="epydoc.apidoc.RoutineDoc-class.html#all_args" title="RoutineDoc.all_args()" alt="" coords="7,6,193,38" />
+<area shape="rect" href="epydoc.apidoc-module.html#_flatten" title="_flatten()" alt="" coords="244,6,335,38" />
+</map>
+  <img src="call_graph_for__flatten.gif" alt='' usemap="#call_graph_for__flatten" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.apidoc-module.html#pp_apidoc" class="summary-sig-name">pp_apidoc</a>(<span class="summary-sig-arg">api_doc</span>,
+        <span class="summary-sig-arg">doublespace</span>=<span class="summary-sig-default">0</span>,
+        <span class="summary-sig-arg">depth</span>=<span class="summary-sig-default">5</span>,
+        <span class="summary-sig-arg">exclude</span>=<span class="summary-sig-default"><code class="variable-group">(</code><code class="variable-group">)</code></span>,
+        <span class="summary-sig-arg">include</span>=<span class="summary-sig-default"><code class="variable-group">(</code><code class="variable-group">)</code></span>,
+        <span class="summary-sig-arg">backpointers</span>=<span class="summary-sig-default">None</span>)</span><br />
+      Returns:
+      A multiline pretty-printed string representation for the given 
+      <code>APIDoc</code>.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.apidoc-pysrc.html#pp_apidoc">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_pp_list"></a><span class="summary-sig-name">_pp_list</span>(<span class="summary-sig-arg">api_doc</span>,
+        <span class="summary-sig-arg">items</span>,
+        <span class="summary-sig-arg">doublespace</span>,
+        <span class="summary-sig-arg">depth</span>,
+        <span class="summary-sig-arg">exclude</span>,
+        <span class="summary-sig-arg">include</span>,
+        <span class="summary-sig-arg">backpointers</span>,
+        <span class="summary-sig-arg">is_last</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.apidoc-pysrc.html#_pp_list">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_pp_dict"></a><span class="summary-sig-name">_pp_dict</span>(<span class="summary-sig-arg">api_doc</span>,
+        <span class="summary-sig-arg">dict</span>,
+        <span class="summary-sig-arg">doublespace</span>,
+        <span class="summary-sig-arg">depth</span>,
+        <span class="summary-sig-arg">exclude</span>,
+        <span class="summary-sig-arg">include</span>,
+        <span class="summary-sig-arg">backpointers</span>,
+        <span class="summary-sig-arg">is_last</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.apidoc-pysrc.html#_pp_dict">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_pp_apidoc"></a><span class="summary-sig-name">_pp_apidoc</span>(<span class="summary-sig-arg">api_doc</span>,
+        <span class="summary-sig-arg">val</span>,
+        <span class="summary-sig-arg">doublespace</span>,
+        <span class="summary-sig-arg">depth</span>,
+        <span class="summary-sig-arg">exclude</span>,
+        <span class="summary-sig-arg">include</span>,
+        <span class="summary-sig-arg">backpointers</span>,
+        <span class="summary-sig-arg">is_last</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.apidoc-pysrc.html#_pp_apidoc">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_pp_val"></a><span class="summary-sig-name">_pp_val</span>(<span class="summary-sig-arg">api_doc</span>,
+        <span class="summary-sig-arg">val</span>,
+        <span class="summary-sig-arg">doublespace</span>,
+        <span class="summary-sig-arg">depth</span>,
+        <span class="summary-sig-arg">exclude</span>,
+        <span class="summary-sig-arg">include</span>,
+        <span class="summary-sig-arg">backpointers</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.apidoc-pysrc.html#_pp_val">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Variables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.apidoc-module.html#UNKNOWN" class="summary-name">UNKNOWN</a> = <code title="_Sentinel('UNKNOWN')">_Sentinel('UNKNOWN')</code><br />
+      A special value used to indicate that a given piece of information 
+      about an object is unknown.
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTION DETAILS ==================== -->
+<a name="section-FunctionDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Function Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-FunctionDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="reachable_valdocs"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">reachable_valdocs</span>(<span class="sig-arg">root</span>,
+        <span class="sig-arg">**filters</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.apidoc-pysrc.html#reachable_valdocs">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_reachable_valdo-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_reachable_valdo-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_reachable_valdo" name="call_graph_for_reachable_valdo">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__cmp__" title="APIDoc.__cmp__()" alt="" coords="559,6,729,38" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__hash__" title="APIDoc.__hash__()" alt="" coords="559,62,729,94" />
+<area shape="rect" href="epydoc.apidoc.ClassDoc-class.html#apidoc_links" title="ClassDoc.apidoc_links()" alt="" coords="541,118,747,150" />
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#reachable_valdocs" title="DocIndex.reachable_valdocs()" alt="" coords="7,174,257,206" />
+<area shape="rect" href="epydoc.apidoc-module.html#reachable_valdocs" title="reachable_valdocs()" alt="" coords="307,174,480,206" />
+<area shape="rect" href="epydoc.apidoc.ModuleDoc-class.html#apidoc_links" title="ModuleDoc.apidoc_links()" alt="" coords="532,174,756,206" />
+<area shape="rect" href="epydoc.apidoc.PropertyDoc-class.html#apidoc_links" title="PropertyDoc.apidoc_links()" alt="" coords="529,230,759,262" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#apidoc_links" title="ValueDoc.apidoc_links()" alt="" coords="539,286,749,318" />
+<area shape="rect" href="epydoc.apidoc.VariableDoc-class.html#apidoc_links" title="VariableDoc.apidoc_links()" alt="" coords="529,342,759,374" />
+</map>
+  <img src="call_graph_for_reachable_valdo.gif" alt='' usemap="#call_graph_for_reachable_valdo" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Return a list of all <code>ValueDoc</code>s that can be reached, 
+  directly or indirectly from the given root list of 
+  <code>ValueDoc</code>s.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>filters</code></strong> - A set of filters that can be used to prevent 
+          <code>reachable_valdocs</code> from following specific link types
+          when looking for <code>ValueDoc</code>s that can be reached from 
+          the root set.  See <code>APIDoc.apidoc_links</code> for a more 
+          complete description.</li>
+    </ul></dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="pp_apidoc"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">pp_apidoc</span>(<span class="sig-arg">api_doc</span>,
+        <span class="sig-arg">doublespace</span>=<span class="sig-default">0</span>,
+        <span class="sig-arg">depth</span>=<span class="sig-default">5</span>,
+        <span class="sig-arg">exclude</span>=<span class="sig-default"><code class="variable-group">(</code><code class="variable-group">)</code></span>,
+        <span class="sig-arg">include</span>=<span class="sig-default"><code class="variable-group">(</code><code class="variable-group">)</code></span>,
+        <span class="sig-arg">backpointers</span>=<span class="sig-default">None</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.apidoc-pysrc.html#pp_apidoc">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>doublespace</code></strong> - If true, then extra lines will be inserted to make the output 
+          more readable.</li>
+        <li><strong class="pname"><code>depth</code></strong> - The maximum depth that pp_apidoc will descend into descendent 
+          VarDocs.  To put no limit on depth, use <code>depth=-1</code>.</li>
+        <li><strong class="pname"><code>exclude</code></strong> - A list of names of attributes whose values should not be shown.</li>
+        <li><strong class="pname"><code>backpointers</code></strong> - For internal use.</li>
+    </ul></dd>
+    <dt>Returns:</dt>
+        <dd>A multiline pretty-printed string representation for the given 
+          <code>APIDoc</code>.</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== VARIABLES DETAILS ==================== -->
+<a name="section-VariablesDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Variables Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-VariablesDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="UNKNOWN"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">UNKNOWN</h3>
+  <p>A special value used to indicate that a given piece of information 
+  about an object is unknown.  This is used as the default value for all 
+  instance variables.</p>
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+_Sentinel('UNKNOWN')
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:05:47 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.apidoc-pysrc.html b/doc/api/epydoc.apidoc-pysrc.html
new file mode 100644
index 0000000..b35f8f5
--- /dev/null
+++ b/doc/api/epydoc.apidoc-pysrc.html
@@ -0,0 +1,2748 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.apidoc</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        Module apidoc
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.apidoc-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="epydoc.apidoc-module.html">Module epydoc.apidoc</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno">   1</tt>  <tt class="py-line"><tt class="py-comment"># epydoc -- API Documentation Classes</tt> </tt>
+<a name="L2"></a><tt class="py-lineno">   2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L3"></a><tt class="py-lineno">   3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2005 Edward Loper</tt> </tt>
+<a name="L4"></a><tt class="py-lineno">   4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Author: Edward Loper <edloper at loper.org></tt> </tt>
+<a name="L5"></a><tt class="py-lineno">   5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># URL: <http://epydoc.sf.net></tt> </tt>
+<a name="L6"></a><tt class="py-lineno">   6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L7"></a><tt class="py-lineno">   7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># $Id: apidoc.py 1675 2008-01-29 17:12:56Z edloper $</tt> </tt>
+<a name="L8"></a><tt class="py-lineno">   8</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L9"></a><tt class="py-lineno">   9</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L10"></a><tt class="py-lineno">  10</tt>  <tt class="py-line"><tt class="py-docstring">Classes for encoding API documentation about Python programs.</tt> </tt>
+<a name="L11"></a><tt class="py-lineno">  11</tt>  <tt class="py-line"><tt class="py-docstring">These classes are used as a common representation for combining</tt> </tt>
+<a name="L12"></a><tt class="py-lineno">  12</tt>  <tt class="py-line"><tt class="py-docstring">information derived from introspection and from parsing.</tt> </tt>
+<a name="L13"></a><tt class="py-lineno">  13</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L14"></a><tt class="py-lineno">  14</tt>  <tt class="py-line"><tt class="py-docstring">The API documentation for a Python program is encoded using a graph of</tt> </tt>
+<a name="L15"></a><tt class="py-lineno">  15</tt>  <tt class="py-line"><tt class="py-docstring">L{APIDoc} objects, each of which encodes information about a single</tt> </tt>
+<a name="L16"></a><tt class="py-lineno">  16</tt>  <tt class="py-line"><tt class="py-docstring">Python variable or value.  C{APIDoc} has two direct subclasses:</tt> </tt>
+<a name="L17"></a><tt class="py-lineno">  17</tt>  <tt class="py-line"><tt class="py-docstring">L{VariableDoc}, for documenting variables; and L{ValueDoc}, for</tt> </tt>
+<a name="L18"></a><tt class="py-lineno">  18</tt>  <tt class="py-line"><tt class="py-docstring">documenting values.  The C{ValueDoc} class is subclassed further, to</tt> </tt>
+<a name="L19"></a><tt class="py-lineno">  19</tt>  <tt class="py-line"><tt class="py-docstring">define the different pieces of information that should be recorded</tt> </tt>
+<a name="L20"></a><tt class="py-lineno">  20</tt>  <tt class="py-line"><tt class="py-docstring">about each value type:</tt> </tt>
+<a name="L21"></a><tt class="py-lineno">  21</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L22"></a><tt class="py-lineno">  22</tt>  <tt class="py-line"><tt class="py-docstring">G{classtree: APIDoc}</tt> </tt>
+<a name="L23"></a><tt class="py-lineno">  23</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L24"></a><tt class="py-lineno">  24</tt>  <tt class="py-line"><tt class="py-docstring">The distinction between variables and values is intentionally made</tt> </tt>
+<a name="L25"></a><tt class="py-lineno">  25</tt>  <tt class="py-line"><tt class="py-docstring">explicit.  This allows us to distinguish information about a variable</tt> </tt>
+<a name="L26"></a><tt class="py-lineno">  26</tt>  <tt class="py-line"><tt class="py-docstring">itself (such as whether it should be considered 'public' in its</tt> </tt>
+<a name="L27"></a><tt class="py-lineno">  27</tt>  <tt class="py-line"><tt class="py-docstring">containing namespace) from information about the value it contains</tt> </tt>
+<a name="L28"></a><tt class="py-lineno">  28</tt>  <tt class="py-line"><tt class="py-docstring">(such as what type the value has).  This distinction is also important</tt> </tt>
+<a name="L29"></a><tt class="py-lineno">  29</tt>  <tt class="py-line"><tt class="py-docstring">because several variables can contain the same value: each variable</tt> </tt>
+<a name="L30"></a><tt class="py-lineno">  30</tt>  <tt class="py-line"><tt class="py-docstring">should be described by a separate C{VariableDoc}; but we only need one</tt> </tt>
+<a name="L31"></a><tt class="py-lineno">  31</tt>  <tt class="py-line"><tt class="py-docstring">C{ValueDoc}, since they share a single value.</tt> </tt>
+<a name="L32"></a><tt class="py-lineno">  32</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L33"></a><tt class="py-lineno">  33</tt>  <tt class="py-line"><tt class="py-docstring">@todo: Add a cache to canonical name lookup?</tt> </tt>
+<a name="L34"></a><tt class="py-lineno">  34</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L35"></a><tt class="py-lineno">  35</tt>  <tt class="py-line"><tt class="py-name">__docformat__</tt> <tt class="py-op">=</tt> <tt class="py-string">'epytext en'</tt> </tt>
+<a name="L36"></a><tt class="py-lineno">  36</tt>  <tt class="py-line"> </tt>
+<a name="L37"></a><tt class="py-lineno">  37</tt>  <tt class="py-line"><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L38"></a><tt class="py-lineno">  38</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## Imports</tt> </tt>
+<a name="L39"></a><tt class="py-lineno">  39</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L40"></a><tt class="py-lineno">  40</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L41"></a><tt class="py-lineno">  41</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">types</tt><tt class="py-op">,</tt> <tt class="py-name">re</tt><tt class="py-op">,</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-0" class="py-name" targets="Variable epydoc.apidoc.ModuleDoc.path=epydoc.apidoc.ModuleDoc-class.html#path"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-0', 'path', ' [...]
+<a name="L42"></a><tt class="py-lineno">  42</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-1" class="py-name" targets="Package epydoc=epydoc-module.html"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-1', 'epydoc', 'link-1');">epydoc</a></tt> <tt class="py-keyword">import</tt> <tt id="link-2" class="py-name" targets="Method epydoc.cli.ConsoleLogger.log()=epydoc.cli.ConsoleLogger-class.html#log,Method epydoc.cli.HTMLLogger.log()=epydoc.c [...]
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-2', 'log', 'link-2');">log</a></tt> </tt>
+<a name="L43"></a><tt class="py-lineno">  43</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-3" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-3', 'epydoc', 'link-1');">epydoc</a></tt> </tt>
+<a name="L44"></a><tt class="py-lineno">  44</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">__builtin__</tt> </tt>
+<a name="L45"></a><tt class="py-lineno">  45</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-4" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-4', 'epydoc', 'link-1');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-5" class="py-name" targets="Module epydoc.compat=epydoc.compat-module.html"><a title="epydoc.compat" class="py-name" href="#" onclick="return doclink('link-5', 'compat', 'link-5');">compat</a></tt> <tt cla [...]
+<a name="L46"></a><tt class="py-lineno">  46</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-6" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-6', 'epydoc', 'link-1');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-7" class="py-name" targets="Module epydoc.test.util=epydoc.test.util-module.html,Module epydoc.util=epydoc.util-module.html"><a title="epydoc.test.util
+epydoc.util" class="py-name" href="#" onclick="return doclink('link-7', 'util', 'link-7');">util</a></tt> <tt class="py-keyword">import</tt> <tt id="link-8" class="py-name" targets="Function epydoc.util.decode_with_backslashreplace()=epydoc.util-module.html#decode_with_backslashreplace"><a title="epydoc.util.decode_with_backslashreplace" class="py-name" href="#" onclick="return doclink('link-8', 'decode_with_backslashreplace', 'link-8');">decode_with_backslashreplace</a></tt><tt class="p [...]
+<a name="L47"></a><tt class="py-lineno">  47</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-10" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-10', 'epydoc', 'link-1');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-11" class="py-name" targets="Package epydoc.markup=epydoc.markup-module.html,Method epydoc.markup.doctest.DoctestColorizer.markup()=epydoc.markup.doctest.DoctestColorizer-class.html#markup,Method epydo [...]
+epydoc.markup.doctest.DoctestColorizer.markup
+epydoc.markup.doctest.HTMLDoctestColorizer.markup
+epydoc.markup.doctest.LaTeXDoctestColorizer.markup
+epydoc.markup.doctest.XMLDoctestColorizer.markup" class="py-name" href="#" onclick="return doclink('link-11', 'markup', 'link-11');">markup</a></tt><tt class="py-op">.</tt><tt id="link-12" class="py-name" targets="Method epydoc.apidoc.ValueDoc.pyval_repr()=epydoc.apidoc.ValueDoc-class.html#pyval_repr,Module epydoc.markup.pyval_repr=epydoc.markup.pyval_repr-module.html"><a title="epydoc.apidoc.ValueDoc.pyval_repr
+epydoc.markup.pyval_repr" class="py-name" href="#" onclick="return doclink('link-12', 'pyval_repr', 'link-12');">pyval_repr</a></tt> </tt>
+<a name="L48"></a><tt class="py-lineno">  48</tt>  <tt class="py-line"> </tt>
+<a name="L49"></a><tt class="py-lineno">  49</tt>  <tt class="py-line"><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L50"></a><tt class="py-lineno">  50</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Dotted Names</tt> </tt>
+<a name="L51"></a><tt class="py-lineno">  51</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L52"></a><tt class="py-lineno">  52</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="DottedName"></a><div id="DottedName-def"><a name="L53"></a><tt class="py-lineno">  53</tt> <a class="py-toggle" href="#" id="DottedName-toggle" onclick="return toggle('DottedName');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="epydoc.apidoc.DottedName-class.html">DottedName</a><tt class="py-op">:</tt> </tt>
+</div><div id="DottedName-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="DottedName-expanded"><a name="L54"></a><tt class="py-lineno">  54</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L55"></a><tt class="py-lineno">  55</tt>  <tt class="py-line"><tt class="py-docstring">    A sequence of identifiers, separated by periods, used to name a</tt> </tt>
+<a name="L56"></a><tt class="py-lineno">  56</tt>  <tt class="py-line"><tt class="py-docstring">    Python variable, value, or argument.  The identifiers that make up</tt> </tt>
+<a name="L57"></a><tt class="py-lineno">  57</tt>  <tt class="py-line"><tt class="py-docstring">    a dotted name can be accessed using the indexing operator:</tt> </tt>
+<a name="L58"></a><tt class="py-lineno">  58</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L59"></a><tt class="py-lineno">  59</tt>  <tt class="py-line"><tt class="py-docstring">        >>> name = DottedName('epydoc', 'api_doc', 'DottedName')</tt> </tt>
+<a name="L60"></a><tt class="py-lineno">  60</tt>  <tt class="py-line"><tt class="py-docstring">        >>> print name</tt> </tt>
+<a name="L61"></a><tt class="py-lineno">  61</tt>  <tt class="py-line"><tt class="py-docstring">        epydoc.apidoc.DottedName</tt> </tt>
+<a name="L62"></a><tt class="py-lineno">  62</tt>  <tt class="py-line"><tt class="py-docstring">        >>> name[1]</tt> </tt>
+<a name="L63"></a><tt class="py-lineno">  63</tt>  <tt class="py-line"><tt class="py-docstring">        'api_doc'</tt> </tt>
+<a name="L64"></a><tt class="py-lineno">  64</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L65"></a><tt class="py-lineno">  65</tt>  <tt class="py-line">    <tt id="link-13" class="py-name" targets="Variable epydoc.apidoc.DottedName.UNREACHABLE=epydoc.apidoc.DottedName-class.html#UNREACHABLE"><a title="epydoc.apidoc.DottedName.UNREACHABLE" class="py-name" href="#" onclick="return doclink('link-13', 'UNREACHABLE', 'link-13');">UNREACHABLE</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"??"</tt> </tt>
+<a name="L66"></a><tt class="py-lineno">  66</tt>  <tt class="py-line">    <tt id="link-14" class="py-name" targets="Variable epydoc.apidoc.DottedName._IDENTIFIER_RE=epydoc.apidoc.DottedName-class.html#_IDENTIFIER_RE"><a title="epydoc.apidoc.DottedName._IDENTIFIER_RE" class="py-name" href="#" onclick="return doclink('link-14', '_IDENTIFIER_RE', 'link-14');">_IDENTIFIER_RE</a></tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">compile</tt> [...]
+<a name="L67"></a><tt class="py-lineno">  67</tt>  <tt class="py-line"><tt class="py-string">        (%s |             # UNREACHABLE marker, or..</tt> </tt>
+<a name="L68"></a><tt class="py-lineno">  68</tt>  <tt class="py-line"><tt class="py-string">         (script-)?       #   Prefix: script (not a module)</tt> </tt>
+<a name="L69"></a><tt class="py-lineno">  69</tt>  <tt class="py-line"><tt class="py-string">         \w+              #   Identifier (yes, identifiers starting with a</tt> </tt>
+<a name="L70"></a><tt class="py-lineno">  70</tt>  <tt class="py-line"><tt class="py-string">                          #   digit are allowed. See SF bug #1649347)</tt> </tt>
+<a name="L71"></a><tt class="py-lineno">  71</tt>  <tt class="py-line"><tt class="py-string">         '?)              #   Suffix: submodule that is shadowed by a var</tt> </tt>
+<a name="L72"></a><tt class="py-lineno">  72</tt>  <tt class="py-line"><tt class="py-string">        (-\d+)?           # Suffix: unreachable vals with the same name</tt> </tt>
+<a name="L73"></a><tt class="py-lineno">  73</tt>  <tt class="py-line"><tt class="py-string">        $"""</tt> </tt>
+<a name="L74"></a><tt class="py-lineno">  74</tt>  <tt class="py-line">        <tt class="py-op">%</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">escape</tt><tt class="py-op">(</tt><tt id="link-15" class="py-name"><a title="epydoc.apidoc.DottedName.UNREACHABLE" class="py-name" href="#" onclick="return doclink('link-15', 'UNREACHABLE', 'link-13');">UNREACHABLE</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L75"></a><tt class="py-lineno">  75</tt>  <tt class="py-line"> </tt>
+<a name="DottedName.InvalidDottedName"></a><div id="DottedName.InvalidDottedName-def"><a name="L76"></a><tt class="py-lineno">  76</tt> <a class="py-toggle" href="#" id="DottedName.InvalidDottedName-toggle" onclick="return toggle('DottedName.InvalidDottedName');">-</a><tt class="py-line">    <tt class="py-keyword">class</tt> <a class="py-def-name" href="epydoc.apidoc.DottedName.InvalidDottedName-class.html">InvalidDottedName</a><tt class="py-op">(</tt><tt class="py-base-class">ValueError [...]
+</div><div id="DottedName.InvalidDottedName-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DottedName.InvalidDottedName-expanded"><a name="L77"></a><tt class="py-lineno">  77</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L78"></a><tt class="py-lineno">  78</tt>  <tt class="py-line"><tt class="py-docstring">        An exception raised by the DottedName constructor when one of</tt> </tt>
+<a name="L79"></a><tt class="py-lineno">  79</tt>  <tt class="py-line"><tt class="py-docstring">        its arguments is not a valid dotted name.</tt> </tt>
+<a name="L80"></a><tt class="py-lineno">  80</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+</div><a name="L81"></a><tt class="py-lineno">  81</tt>  <tt class="py-line"> </tt>
+<a name="L82"></a><tt class="py-lineno">  82</tt>  <tt class="py-line">    <tt id="link-16" class="py-name" targets="Variable epydoc.apidoc.DottedName._ok_identifiers=epydoc.apidoc.DottedName-class.html#_ok_identifiers"><a title="epydoc.apidoc.DottedName._ok_identifiers" class="py-name" href="#" onclick="return doclink('link-16', '_ok_identifiers', 'link-16');">_ok_identifiers</a></tt> <tt class="py-op">=</tt> <tt class="py-name">set</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L83"></a><tt class="py-lineno">  83</tt>  <tt class="py-line">    <tt class="py-string">"""A cache of identifier strings that have been checked against</tt> </tt>
+<a name="L84"></a><tt class="py-lineno">  84</tt>  <tt class="py-line"><tt class="py-string">    _IDENTIFIER_RE and found to be acceptable."""</tt> </tt>
+<a name="L85"></a><tt class="py-lineno">  85</tt>  <tt class="py-line">     </tt>
+<a name="DottedName.__init__"></a><div id="DottedName.__init__-def"><a name="L86"></a><tt class="py-lineno">  86</tt> <a class="py-toggle" href="#" id="DottedName.__init__-toggle" onclick="return toggle('DottedName.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.apidoc.DottedName-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py [...]
+</div><div id="DottedName.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DottedName.__init__-expanded"><a name="L87"></a><tt class="py-lineno">  87</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L88"></a><tt class="py-lineno">  88</tt>  <tt class="py-line"><tt class="py-docstring">        Construct a new dotted name from the given sequence of pieces,</tt> </tt>
+<a name="L89"></a><tt class="py-lineno">  89</tt>  <tt class="py-line"><tt class="py-docstring">        each of which can be either a C{string} or a C{DottedName}.</tt> </tt>
+<a name="L90"></a><tt class="py-lineno">  90</tt>  <tt class="py-line"><tt class="py-docstring">        Each piece is divided into a sequence of identifiers, and</tt> </tt>
+<a name="L91"></a><tt class="py-lineno">  91</tt>  <tt class="py-line"><tt class="py-docstring">        these sequences are combined together (in order) to form the</tt> </tt>
+<a name="L92"></a><tt class="py-lineno">  92</tt>  <tt class="py-line"><tt class="py-docstring">        identifier sequence for the new C{DottedName}.  If a piece</tt> </tt>
+<a name="L93"></a><tt class="py-lineno">  93</tt>  <tt class="py-line"><tt class="py-docstring">        contains a string, then it is divided into substrings by</tt> </tt>
+<a name="L94"></a><tt class="py-lineno">  94</tt>  <tt class="py-line"><tt class="py-docstring">        splitting on periods, and each substring is checked to see if</tt> </tt>
+<a name="L95"></a><tt class="py-lineno">  95</tt>  <tt class="py-line"><tt class="py-docstring">        it is a valid identifier.</tt> </tt>
+<a name="L96"></a><tt class="py-lineno">  96</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L97"></a><tt class="py-lineno">  97</tt>  <tt class="py-line"><tt class="py-docstring">        As an optimization, C{pieces} may also contain a single tuple</tt> </tt>
+<a name="L98"></a><tt class="py-lineno">  98</tt>  <tt class="py-line"><tt class="py-docstring">        of values.  In that case, that tuple will be used as the</tt> </tt>
+<a name="L99"></a><tt class="py-lineno">  99</tt>  <tt class="py-line"><tt class="py-docstring">        C{DottedName}'s identifiers; it will I{not} be checked to</tt> </tt>
+<a name="L100"></a><tt class="py-lineno"> 100</tt>  <tt class="py-line"><tt class="py-docstring">        see if it's valid.</tt> </tt>
+<a name="L101"></a><tt class="py-lineno"> 101</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L102"></a><tt class="py-lineno"> 102</tt>  <tt class="py-line"><tt class="py-docstring">        @kwparam strict: if true, then raise an L{InvalidDottedName}</tt> </tt>
+<a name="L103"></a><tt class="py-lineno"> 103</tt>  <tt class="py-line"><tt class="py-docstring">        if the given name is invalid.</tt> </tt>
+<a name="L104"></a><tt class="py-lineno"> 104</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L105"></a><tt class="py-lineno"> 105</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">pieces</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt> <tt class="py-keyword">and</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">pieces</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,< [...]
+<a name="L106"></a><tt class="py-lineno"> 106</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_identifiers</tt> <tt class="py-op">=</tt> <tt class="py-name">pieces</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-comment"># Optimization</tt> </tt>
+<a name="L107"></a><tt class="py-lineno"> 107</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> </tt>
+<a name="L108"></a><tt class="py-lineno"> 108</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">pieces</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L109"></a><tt class="py-lineno"> 109</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt id="link-17" class="py-name" targets="Class epydoc.apidoc.DottedName=epydoc.apidoc.DottedName-class.html"><a title="epydoc.apidoc.DottedName" class="py-name" href="#" onclick="return doclink('link-17', 'DottedName', 'link-17');">DottedName</a></tt><tt class="py-op">.</tt><tt id="link-18" class="py-name" targets="Class epydoc.apidoc.DottedName.InvalidDottedName=epydoc. [...]
+<a name="L110"></a><tt class="py-lineno"> 110</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_identifiers</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L111"></a><tt class="py-lineno"> 111</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">piece</tt> <tt class="py-keyword">in</tt> <tt class="py-name">pieces</tt><tt class="py-op">:</tt> </tt>
+<a name="L112"></a><tt class="py-lineno"> 112</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">piece</tt><tt class="py-op">,</tt> <tt id="link-19" class="py-name"><a title="epydoc.apidoc.DottedName" class="py-name" href="#" onclick="return doclink('link-19', 'DottedName', 'link-17');">DottedName</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L113"></a><tt class="py-lineno"> 113</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_identifiers</tt> <tt class="py-op">+=</tt> <tt class="py-name">piece</tt><tt class="py-op">.</tt><tt class="py-name">_identifiers</tt> </tt>
+<a name="L114"></a><tt class="py-lineno"> 114</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">piece</tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L115"></a><tt class="py-lineno"> 115</tt>  <tt class="py-line">                <tt class="py-keyword">for</tt> <tt class="py-name">subpiece</tt> <tt class="py-keyword">in</tt> <tt class="py-name">piece</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'.'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L116"></a><tt class="py-lineno"> 116</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">piece</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-20" class="py-name"><a title="epydoc.apidoc.DottedName._ok_identifiers" class="py-name" href="#" onclick="return doclink('link-20', '_ok_identifiers', 'link-16');">_ok_identifiers</a></tt><tt class="py-op">:</ [...]
+<a name="L117"></a><tt class="py-lineno"> 117</tt>  <tt class="py-line">                        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-21" class="py-name"><a title="epydoc.apidoc.DottedName._IDENTIFIER_RE" class="py-name" href="#" onclick="return doclink('link-21', '_IDENTIFIER_RE', 'link-14');">_IDENTIFIER_RE</a></tt><tt class="py-op">.</tt><tt class="py-name">match</tt><tt class="py-op">(</tt><tt  [...]
+<a name="L118"></a><tt class="py-lineno"> 118</tt>  <tt class="py-line">                            <tt class="py-keyword">if</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'strict'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L119"></a><tt class="py-lineno"> 119</tt>  <tt class="py-line">                                <tt class="py-keyword">raise</tt> <tt id="link-22" class="py-name"><a title="epydoc.apidoc.DottedName" class="py-name" href="#" onclick="return doclink('link-22', 'DottedName', 'link-17');">DottedName</a></tt><tt class="py-op">.</tt><tt id="link-23" class="py-name"><a title="epydoc.apidoc.DottedName.InvalidDottedName" class="py-name" href="#" onclick="return doclink('link-23', 'Invalid [...]
+<a name="L120"></a><tt class="py-lineno"> 120</tt>  <tt class="py-line">                                    <tt class="py-string">'Bad identifier %r'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">piece</tt><tt class="py-op">,</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L121"></a><tt class="py-lineno"> 121</tt>  <tt class="py-line">                            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L122"></a><tt class="py-lineno"> 122</tt>  <tt class="py-line">                                <tt id="link-24" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-24', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-25" class="py-name" targets="Method epydoc.checker.DocChecker.warning()=epydoc.checker.DocChecker-class.html#warning,Function epydoc.log.warning()=epydoc.log-module.html#warning"><a title="epydoc.checker.DocChecker.warning
+epydoc.log.warning" class="py-name" href="#" onclick="return doclink('link-25', 'warning', 'link-25');">warning</a></tt><tt class="py-op">(</tt><tt class="py-string">"Identifier %r looks suspicious; "</tt> </tt>
+<a name="L123"></a><tt class="py-lineno"> 123</tt>  <tt class="py-line">                                            <tt class="py-string">"using it anyway."</tt> <tt class="py-op">%</tt> <tt class="py-name">piece</tt><tt class="py-op">)</tt> </tt>
+<a name="L124"></a><tt class="py-lineno"> 124</tt>  <tt class="py-line">                        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-26" class="py-name"><a title="epydoc.apidoc.DottedName._ok_identifiers" class="py-name" href="#" onclick="return doclink('link-26', '_ok_identifiers', 'link-16');">_ok_identifiers</a></tt><tt class="py-op">.</tt><tt class="py-name">add</tt><tt class="py-op">(</tt><tt class="py-name">piece</tt><tt class="py-op">)</tt> </tt>
+<a name="L125"></a><tt class="py-lineno"> 125</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_identifiers</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">subpiece</tt><tt class="py-op">)</tt> </tt>
+<a name="L126"></a><tt class="py-lineno"> 126</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L127"></a><tt class="py-lineno"> 127</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">TypeError</tt><tt class="py-op">(</tt><tt class="py-string">'Bad identifier %r: expected '</tt> </tt>
+<a name="L128"></a><tt class="py-lineno"> 128</tt>  <tt class="py-line">                                <tt class="py-string">'DottedName or str'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">piece</tt><tt class="py-op">,</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L129"></a><tt class="py-lineno"> 129</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_identifiers</tt> <tt class="py-op">=</tt> <tt class="py-name">tuple</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_identifiers</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L130"></a><tt class="py-lineno"> 130</tt>  <tt class="py-line"> </tt>
+<a name="DottedName.__repr__"></a><div id="DottedName.__repr__-def"><a name="L131"></a><tt class="py-lineno"> 131</tt> <a class="py-toggle" href="#" id="DottedName.__repr__-toggle" onclick="return toggle('DottedName.__repr__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.apidoc.DottedName-class.html#__repr__">__repr__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="DottedName.__repr__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DottedName.__repr__-expanded"><a name="L132"></a><tt class="py-lineno"> 132</tt>  <tt class="py-line">        <tt class="py-name">idents</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">`</tt><tt class="py-name">ident</tt><tt class="py-op">`</tt> <tt class="py-keyword">for</tt> <tt class="py-name">ident</tt> <tt class="py-keyword">in</tt> <tt class="py-na [...]
+<a name="L133"></a><tt class="py-lineno"> 133</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">'DottedName('</tt> <tt class="py-op">+</tt> <tt class="py-string">', '</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">idents</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-string">')'</tt> </tt>
+</div><a name="L134"></a><tt class="py-lineno"> 134</tt>  <tt class="py-line"> </tt>
+<a name="DottedName.__str__"></a><div id="DottedName.__str__-def"><a name="L135"></a><tt class="py-lineno"> 135</tt> <a class="py-toggle" href="#" id="DottedName.__str__-toggle" onclick="return toggle('DottedName.__str__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.apidoc.DottedName-class.html#__str__">__str__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="DottedName.__str__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DottedName.__str__-expanded"><a name="L136"></a><tt class="py-lineno"> 136</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L137"></a><tt class="py-lineno"> 137</tt>  <tt class="py-line"><tt class="py-docstring">        Return the dotted name as a string formed by joining its</tt> </tt>
+<a name="L138"></a><tt class="py-lineno"> 138</tt>  <tt class="py-line"><tt class="py-docstring">        identifiers with periods:</tt> </tt>
+<a name="L139"></a><tt class="py-lineno"> 139</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L140"></a><tt class="py-lineno"> 140</tt>  <tt class="py-line"><tt class="py-docstring">            >>> print DottedName('epydoc', 'api_doc', DottedName')</tt> </tt>
+<a name="L141"></a><tt class="py-lineno"> 141</tt>  <tt class="py-line"><tt class="py-docstring">            epydoc.apidoc.DottedName</tt> </tt>
+<a name="L142"></a><tt class="py-lineno"> 142</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L143"></a><tt class="py-lineno"> 143</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">'.'</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_identifiers</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L144"></a><tt class="py-lineno"> 144</tt>  <tt class="py-line"> </tt>
+<a name="DottedName.__add__"></a><div id="DottedName.__add__-def"><a name="L145"></a><tt class="py-lineno"> 145</tt> <a class="py-toggle" href="#" id="DottedName.__add__-toggle" onclick="return toggle('DottedName.__add__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.apidoc.DottedName-class.html#__add__">__add__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">other</tt><tt class=" [...]
+</div><div id="DottedName.__add__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DottedName.__add__-expanded"><a name="L146"></a><tt class="py-lineno"> 146</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L147"></a><tt class="py-lineno"> 147</tt>  <tt class="py-line"><tt class="py-docstring">        Return a new C{DottedName} whose identifier sequence is formed</tt> </tt>
+<a name="L148"></a><tt class="py-lineno"> 148</tt>  <tt class="py-line"><tt class="py-docstring">        by adding C{other}'s identifier sequence to C{self}'s.</tt> </tt>
+<a name="L149"></a><tt class="py-lineno"> 149</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L150"></a><tt class="py-lineno"> 150</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">other</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">basestring</tt><tt class="py-op">,</tt> <tt id="link-27" class="py-name"><a title="epydoc.apidoc.DottedName" class="py-name" href="#" onclick="return doclink('link-27', 'DottedName', 'link-17');">DottedName</a></tt><tt clas [...]
+<a name="L151"></a><tt class="py-lineno"> 151</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt id="link-28" class="py-name"><a title="epydoc.apidoc.DottedName" class="py-name" href="#" onclick="return doclink('link-28', 'DottedName', 'link-17');">DottedName</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">other</tt><tt class="py-op">)</tt> </tt>
+<a name="L152"></a><tt class="py-lineno"> 152</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L153"></a><tt class="py-lineno"> 153</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt id="link-29" class="py-name"><a title="epydoc.apidoc.DottedName" class="py-name" href="#" onclick="return doclink('link-29', 'DottedName', 'link-17');">DottedName</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-name">other</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L154"></a><tt class="py-lineno"> 154</tt>  <tt class="py-line"> </tt>
+<a name="DottedName.__radd__"></a><div id="DottedName.__radd__-def"><a name="L155"></a><tt class="py-lineno"> 155</tt> <a class="py-toggle" href="#" id="DottedName.__radd__-toggle" onclick="return toggle('DottedName.__radd__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.apidoc.DottedName-class.html#__radd__">__radd__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">other</tt><tt c [...]
+</div><div id="DottedName.__radd__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DottedName.__radd__-expanded"><a name="L156"></a><tt class="py-lineno"> 156</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L157"></a><tt class="py-lineno"> 157</tt>  <tt class="py-line"><tt class="py-docstring">        Return a new C{DottedName} whose identifier sequence is formed</tt> </tt>
+<a name="L158"></a><tt class="py-lineno"> 158</tt>  <tt class="py-line"><tt class="py-docstring">        by adding C{self}'s identifier sequence to C{other}'s.</tt> </tt>
+<a name="L159"></a><tt class="py-lineno"> 159</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L160"></a><tt class="py-lineno"> 160</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">other</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">basestring</tt><tt class="py-op">,</tt> <tt id="link-30" class="py-name"><a title="epydoc.apidoc.DottedName" class="py-name" href="#" onclick="return doclink('link-30', 'DottedName', 'link-17');">DottedName</a></tt><tt clas [...]
+<a name="L161"></a><tt class="py-lineno"> 161</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt id="link-31" class="py-name"><a title="epydoc.apidoc.DottedName" class="py-name" href="#" onclick="return doclink('link-31', 'DottedName', 'link-17');">DottedName</a></tt><tt class="py-op">(</tt><tt class="py-name">other</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L162"></a><tt class="py-lineno"> 162</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L163"></a><tt class="py-lineno"> 163</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt id="link-32" class="py-name"><a title="epydoc.apidoc.DottedName" class="py-name" href="#" onclick="return doclink('link-32', 'DottedName', 'link-17');">DottedName</a></tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-op">(</tt><tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">other</tt><tt class="py-op">)</tt><tt class="py-op">+ [...]
+</div><a name="L164"></a><tt class="py-lineno"> 164</tt>  <tt class="py-line"> </tt>
+<a name="DottedName.__getitem__"></a><div id="DottedName.__getitem__-def"><a name="L165"></a><tt class="py-lineno"> 165</tt> <a class="py-toggle" href="#" id="DottedName.__getitem__-toggle" onclick="return toggle('DottedName.__getitem__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.apidoc.DottedName-class.html#__getitem__">__getitem__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-para [...]
+</div><div id="DottedName.__getitem__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DottedName.__getitem__-expanded"><a name="L166"></a><tt class="py-lineno"> 166</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L167"></a><tt class="py-lineno"> 167</tt>  <tt class="py-line"><tt class="py-docstring">        Return the C{i}th identifier in this C{DottedName}.  If C{i} is</tt> </tt>
+<a name="L168"></a><tt class="py-lineno"> 168</tt>  <tt class="py-line"><tt class="py-docstring">        a non-empty slice, then return a C{DottedName} built from the</tt> </tt>
+<a name="L169"></a><tt class="py-lineno"> 169</tt>  <tt class="py-line"><tt class="py-docstring">        identifiers selected by the slice.  If C{i} is an empty slice,</tt> </tt>
+<a name="L170"></a><tt class="py-lineno"> 170</tt>  <tt class="py-line"><tt class="py-docstring">        return an empty list (since empty C{DottedName}s are not valid).</tt> </tt>
+<a name="L171"></a><tt class="py-lineno"> 171</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L172"></a><tt class="py-lineno"> 172</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">i</tt><tt class="py-op">,</tt> <tt class="py-name">types</tt><tt class="py-op">.</tt><tt class="py-name">SliceType</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L173"></a><tt class="py-lineno"> 173</tt>  <tt class="py-line">            <tt class="py-name">pieces</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_identifiers</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">.</tt><tt class="py-name">start</tt><tt class="py-op">:</tt><tt class="py-name">i</tt><tt class="py-op">.</tt><tt class="py-name">stop</tt><tt class="py-op">]</tt> </tt>
+<a name="L174"></a><tt class="py-lineno"> 174</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">pieces</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt id="link-33" class="py-name"><a title="epydoc.apidoc.DottedName" class="py-name" href="#" onclick="return doclink('link-33', 'DottedName', 'link-17');">DottedName</a></tt><tt class="py-op">(</tt><tt class="py-name">pieces</tt><tt class="py-op">)</tt> </tt>
+<a name="L175"></a><tt class="py-lineno"> 175</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L176"></a><tt class="py-lineno"> 176</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L177"></a><tt class="py-lineno"> 177</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_identifiers</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt> </tt>
+</div><a name="L178"></a><tt class="py-lineno"> 178</tt>  <tt class="py-line"> </tt>
+<a name="DottedName.__hash__"></a><div id="DottedName.__hash__-def"><a name="L179"></a><tt class="py-lineno"> 179</tt> <a class="py-toggle" href="#" id="DottedName.__hash__-toggle" onclick="return toggle('DottedName.__hash__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.apidoc.DottedName-class.html#__hash__">__hash__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="DottedName.__hash__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DottedName.__hash__-expanded"><a name="L180"></a><tt class="py-lineno"> 180</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">hash</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_identifiers</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L181"></a><tt class="py-lineno"> 181</tt>  <tt class="py-line"> </tt>
+<a name="DottedName.__cmp__"></a><div id="DottedName.__cmp__-def"><a name="L182"></a><tt class="py-lineno"> 182</tt> <a class="py-toggle" href="#" id="DottedName.__cmp__-toggle" onclick="return toggle('DottedName.__cmp__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.apidoc.DottedName-class.html#__cmp__">__cmp__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">other</tt><tt class=" [...]
+</div><div id="DottedName.__cmp__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DottedName.__cmp__-expanded"><a name="L183"></a><tt class="py-lineno"> 183</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L184"></a><tt class="py-lineno"> 184</tt>  <tt class="py-line"><tt class="py-docstring">        Compare this dotted name to C{other}.  Two dotted names are</tt> </tt>
+<a name="L185"></a><tt class="py-lineno"> 185</tt>  <tt class="py-line"><tt class="py-docstring">        considered equal if their identifier subsequences are equal.</tt> </tt>
+<a name="L186"></a><tt class="py-lineno"> 186</tt>  <tt class="py-line"><tt class="py-docstring">        Ordering between dotted names is lexicographic, in order of</tt> </tt>
+<a name="L187"></a><tt class="py-lineno"> 187</tt>  <tt class="py-line"><tt class="py-docstring">        identifier from left to right.</tt> </tt>
+<a name="L188"></a><tt class="py-lineno"> 188</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L189"></a><tt class="py-lineno"> 189</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">other</tt><tt class="py-op">,</tt> <tt id="link-34" class="py-name"><a title="epydoc.apidoc.DottedName" class="py-name" href="#" onclick="return doclink('link-34', 'DottedName', 'link-17');">DottedName</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L190"></a><tt class="py-lineno"> 190</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-op">-</tt><tt class="py-number">1</tt> </tt>
+<a name="L191"></a><tt class="py-lineno"> 191</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">cmp</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_identifiers</tt><tt class="py-op">,</tt> <tt class="py-name">other</tt><tt class="py-op">.</tt><tt class="py-name">_identifiers</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L192"></a><tt class="py-lineno"> 192</tt>  <tt class="py-line"> </tt>
+<a name="DottedName.__len__"></a><div id="DottedName.__len__-def"><a name="L193"></a><tt class="py-lineno"> 193</tt> <a class="py-toggle" href="#" id="DottedName.__len__-toggle" onclick="return toggle('DottedName.__len__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.apidoc.DottedName-class.html#__len__">__len__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="DottedName.__len__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DottedName.__len__-expanded"><a name="L194"></a><tt class="py-lineno"> 194</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L195"></a><tt class="py-lineno"> 195</tt>  <tt class="py-line"><tt class="py-docstring">        Return the number of identifiers in this dotted name.</tt> </tt>
+<a name="L196"></a><tt class="py-lineno"> 196</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L197"></a><tt class="py-lineno"> 197</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_identifiers</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L198"></a><tt class="py-lineno"> 198</tt>  <tt class="py-line"> </tt>
+<a name="DottedName.container"></a><div id="DottedName.container-def"><a name="L199"></a><tt class="py-lineno"> 199</tt> <a class="py-toggle" href="#" id="DottedName.container-toggle" onclick="return toggle('DottedName.container');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.apidoc.DottedName-class.html#container">container</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="DottedName.container-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DottedName.container-expanded"><a name="L200"></a><tt class="py-lineno"> 200</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L201"></a><tt class="py-lineno"> 201</tt>  <tt class="py-line"><tt class="py-docstring">        Return the DottedName formed by removing the last identifier</tt> </tt>
+<a name="L202"></a><tt class="py-lineno"> 202</tt>  <tt class="py-line"><tt class="py-docstring">        from this dotted name's identifier sequence.  If this dotted</tt> </tt>
+<a name="L203"></a><tt class="py-lineno"> 203</tt>  <tt class="py-line"><tt class="py-docstring">        name only has one name in its identifier sequence, return</tt> </tt>
+<a name="L204"></a><tt class="py-lineno"> 204</tt>  <tt class="py-line"><tt class="py-docstring">        C{None} instead.</tt> </tt>
+<a name="L205"></a><tt class="py-lineno"> 205</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L206"></a><tt class="py-lineno"> 206</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_identifiers</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L207"></a><tt class="py-lineno"> 207</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
+<a name="L208"></a><tt class="py-lineno"> 208</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L209"></a><tt class="py-lineno"> 209</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt id="link-35" class="py-name"><a title="epydoc.apidoc.DottedName" class="py-name" href="#" onclick="return doclink('link-35', 'DottedName', 'link-17');">DottedName</a></tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_identifiers</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="p [...]
+</div><a name="L210"></a><tt class="py-lineno"> 210</tt>  <tt class="py-line"> </tt>
+<a name="DottedName.dominates"></a><div id="DottedName.dominates-def"><a name="L211"></a><tt class="py-lineno"> 211</tt> <a class="py-toggle" href="#" id="DottedName.dominates-toggle" onclick="return toggle('DottedName.dominates');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.apidoc.DottedName-class.html#dominates">dominates</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">name</tt> [...]
+</div><div id="DottedName.dominates-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DottedName.dominates-expanded"><a name="L212"></a><tt class="py-lineno"> 212</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L213"></a><tt class="py-lineno"> 213</tt>  <tt class="py-line"><tt class="py-docstring">        Return true if this dotted name is equal to a prefix of</tt> </tt>
+<a name="L214"></a><tt class="py-lineno"> 214</tt>  <tt class="py-line"><tt class="py-docstring">        C{name}.  If C{strict} is true, then also require that</tt> </tt>
+<a name="L215"></a><tt class="py-lineno"> 215</tt>  <tt class="py-line"><tt class="py-docstring">        C{self!=name}.</tt> </tt>
+<a name="L216"></a><tt class="py-lineno"> 216</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L217"></a><tt class="py-lineno"> 217</tt>  <tt class="py-line"><tt class="py-docstring">            >>> DottedName('a.b').dominates(DottedName('a.b.c.d'))</tt> </tt>
+<a name="L218"></a><tt class="py-lineno"> 218</tt>  <tt class="py-line"><tt class="py-docstring">            True</tt> </tt>
+<a name="L219"></a><tt class="py-lineno"> 219</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L220"></a><tt class="py-lineno"> 220</tt>  <tt class="py-line">        <tt class="py-name">len_self</tt> <tt class="py-op">=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_identifiers</tt><tt class="py-op">)</tt> </tt>
+<a name="L221"></a><tt class="py-lineno"> 221</tt>  <tt class="py-line">        <tt class="py-name">len_name</tt> <tt class="py-op">=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-36" class="py-name" targets="Variable epydoc.apidoc.VariableDoc.name=epydoc.apidoc.VariableDoc-class.html#name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-36', 'name', 'link-36');">name</a></tt><tt class="py-op">.</tt><tt class="py-na [...]
+<a name="L222"></a><tt class="py-lineno"> 222</tt>  <tt class="py-line"> </tt>
+<a name="L223"></a><tt class="py-lineno"> 223</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">len_self</tt> <tt class="py-op">></tt> <tt class="py-name">len_name</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-name">strict</tt> <tt class="py-keyword">and</tt> <tt class="py-name">len_self</tt> <tt class="py-op">==</tt> <tt class="py-name">len_name</tt><tt class="py-op">)</tt>< [...]
+<a name="L224"></a><tt class="py-lineno"> 224</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
+<a name="L225"></a><tt class="py-lineno"> 225</tt>  <tt class="py-line">        <tt class="py-comment"># The following is redundant (the first clause is implied by</tt> </tt>
+<a name="L226"></a><tt class="py-lineno"> 226</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># the second), but is done as an optimization.</tt> </tt>
+<a name="L227"></a><tt class="py-lineno"> 227</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_identifiers</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt id="link-37" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick= [...]
+<a name="L228"></a><tt class="py-lineno"> 228</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_identifiers</tt> <tt class="py-op">==</tt> <tt id="link-38" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-38', 'name', 'link-36');">name</a></tt><tt class="py-op">.</tt><tt class="py-name">_identifiers</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class [...]
+</div><a name="L229"></a><tt class="py-lineno"> 229</tt>  <tt class="py-line"> </tt>
+<a name="DottedName.contextualize"></a><div id="DottedName.contextualize-def"><a name="L230"></a><tt class="py-lineno"> 230</tt> <a class="py-toggle" href="#" id="DottedName.contextualize-toggle" onclick="return toggle('DottedName.contextualize');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.apidoc.DottedName-class.html#contextualize">contextualize</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt cl [...]
+</div><div id="DottedName.contextualize-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DottedName.contextualize-expanded"><a name="L231"></a><tt class="py-lineno"> 231</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L232"></a><tt class="py-lineno"> 232</tt>  <tt class="py-line"><tt class="py-docstring">        If C{self} and C{context} share a common ancestor, then return</tt> </tt>
+<a name="L233"></a><tt class="py-lineno"> 233</tt>  <tt class="py-line"><tt class="py-docstring">        a name for C{self}, relative to that ancestor.  If they do not</tt> </tt>
+<a name="L234"></a><tt class="py-lineno"> 234</tt>  <tt class="py-line"><tt class="py-docstring">        share a common ancestor (or if C{context} is C{UNKNOWN}), then</tt> </tt>
+<a name="L235"></a><tt class="py-lineno"> 235</tt>  <tt class="py-line"><tt class="py-docstring">        simply return C{self}.</tt> </tt>
+<a name="L236"></a><tt class="py-lineno"> 236</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L237"></a><tt class="py-lineno"> 237</tt>  <tt class="py-line"><tt class="py-docstring">        This is used to generate shorter versions of dotted names in</tt> </tt>
+<a name="L238"></a><tt class="py-lineno"> 238</tt>  <tt class="py-line"><tt class="py-docstring">        cases where users can infer the intended target from the</tt> </tt>
+<a name="L239"></a><tt class="py-lineno"> 239</tt>  <tt class="py-line"><tt class="py-docstring">        context.</tt> </tt>
+<a name="L240"></a><tt class="py-lineno"> 240</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt>
+<a name="L241"></a><tt class="py-lineno"> 241</tt>  <tt class="py-line"><tt class="py-docstring">        @type context: L{DottedName}</tt> </tt>
+<a name="L242"></a><tt class="py-lineno"> 242</tt>  <tt class="py-line"><tt class="py-docstring">        @rtype: L{DottedName}</tt> </tt>
+<a name="L243"></a><tt class="py-lineno"> 243</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L244"></a><tt class="py-lineno"> 244</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">context</tt> <tt class="py-keyword">is</tt> <tt id="link-39" class="py-name" targets="Variable epydoc.apidoc.UNKNOWN=epydoc.apidoc-module.html#UNKNOWN"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-39', 'UNKNOWN', 'link-39');">UNKNOWN</a></tt> <tt class="py-keyword">or</tt> <tt class="py-keyword">not</tt> <tt class="p [...]
+<a name="L245"></a><tt class="py-lineno"> 245</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">self</tt> </tt>
+<a name="L246"></a><tt class="py-lineno"> 246</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-name">context</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L247"></a><tt class="py-lineno"> 247</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-40" class="py-name" targets="Method epydoc.apidoc.DottedName.contextualize()=epydoc.apidoc.DottedName-class.html#contextualize"><a title="epydoc.apidoc.DottedName.contextualize" class="py-name" href="#" oncl [...]
+<a name="L248"></a><tt class="py-lineno"> 248</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L249"></a><tt class="py-lineno"> 249</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">self</tt> </tt>
+<a name="L250"></a><tt class="py-lineno"> 250</tt>  <tt class="py-line"> </tt>
+<a name="L251"></a><tt class="py-lineno"> 251</tt>  <tt class="py-line">        <tt class="py-comment"># Find the first index where self & context differ.</tt> </tt>
+<a name="L252"></a><tt class="py-lineno"> 252</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-name">min</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">context</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt [...]
+<a name="L253"></a><tt class="py-lineno"> 253</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_identifiers</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt> <tt class="py-op">!=</tt> <tt class="py-name">context</tt><tt class="py-op">.</tt><tt class="py-name">_identifiers</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt><tt class="py-op">: [...]
+<a name="L254"></a><tt class="py-lineno"> 254</tt>  <tt class="py-line">                <tt class="py-name">first_difference</tt> <tt class="py-op">=</tt> <tt class="py-name">i</tt> </tt>
+<a name="L255"></a><tt class="py-lineno"> 255</tt>  <tt class="py-line">                <tt class="py-keyword">break</tt> </tt>
+<a name="L256"></a><tt class="py-lineno"> 256</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L257"></a><tt class="py-lineno"> 257</tt>  <tt class="py-line">            <tt class="py-name">first_difference</tt> <tt class="py-op">=</tt> <tt class="py-name">i</tt><tt class="py-op">+</tt><tt class="py-number">1</tt> </tt>
+<a name="L258"></a><tt class="py-lineno"> 258</tt>  <tt class="py-line">             </tt>
+<a name="L259"></a><tt class="py-lineno"> 259</tt>  <tt class="py-line">        <tt class="py-comment"># Strip off anything before that index.</tt> </tt>
+<a name="L260"></a><tt class="py-lineno"> 260</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">first_difference</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L261"></a><tt class="py-lineno"> 261</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">self</tt> </tt>
+<a name="L262"></a><tt class="py-lineno"> 262</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">first_difference</tt> <tt class="py-op">==</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L263"></a><tt class="py-lineno"> 263</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt>
+<a name="L264"></a><tt class="py-lineno"> 264</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L265"></a><tt class="py-lineno"> 265</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-name">first_difference</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt>
+</div></div><a name="L266"></a><tt class="py-lineno"> 266</tt>  <tt class="py-line"> </tt>
+<a name="L267"></a><tt class="py-lineno"> 267</tt>  <tt class="py-line"><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L268"></a><tt class="py-lineno"> 268</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># UNKNOWN Value</tt> </tt>
+<a name="L269"></a><tt class="py-lineno"> 269</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L270"></a><tt class="py-lineno"> 270</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="_Sentinel"></a><div id="_Sentinel-def"><a name="L271"></a><tt class="py-lineno"> 271</tt> <a class="py-toggle" href="#" id="_Sentinel-toggle" onclick="return toggle('_Sentinel');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="epydoc.apidoc._Sentinel-class.html">_Sentinel</a><tt class="py-op">:</tt> </tt>
+</div><div id="_Sentinel-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_Sentinel-expanded"><a name="L272"></a><tt class="py-lineno"> 272</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L273"></a><tt class="py-lineno"> 273</tt>  <tt class="py-line"><tt class="py-docstring">    A unique value that won't compare equal to any other value.  This</tt> </tt>
+<a name="L274"></a><tt class="py-lineno"> 274</tt>  <tt class="py-line"><tt class="py-docstring">    class is used to create L{UNKNOWN}.</tt> </tt>
+<a name="L275"></a><tt class="py-lineno"> 275</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="_Sentinel.__init__"></a><div id="_Sentinel.__init__-def"><a name="L276"></a><tt class="py-lineno"> 276</tt> <a class="py-toggle" href="#" id="_Sentinel.__init__-toggle" onclick="return toggle('_Sentinel.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.apidoc._Sentinel-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">name</tt><tt class=" [...]
+</div><div id="_Sentinel.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_Sentinel.__init__-expanded"><a name="L277"></a><tt class="py-lineno"> 277</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-41" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-41', 'name', 'link-36');">name</a></tt> <tt class="py-op">=</tt> <tt id="link-42" class=" [...]
+</div><a name="_Sentinel.__repr__"></a><div id="_Sentinel.__repr__-def"><a name="L278"></a><tt class="py-lineno"> 278</tt> <a class="py-toggle" href="#" id="_Sentinel.__repr__-toggle" onclick="return toggle('_Sentinel.__repr__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.apidoc._Sentinel-class.html#__repr__">__repr__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_Sentinel.__repr__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_Sentinel.__repr__-expanded"><a name="L279"></a><tt class="py-lineno"> 279</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">'<%s>'</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-43" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doc [...]
+</div><a name="_Sentinel.__nonzero__"></a><div id="_Sentinel.__nonzero__-def"><a name="L280"></a><tt class="py-lineno"> 280</tt> <a class="py-toggle" href="#" id="_Sentinel.__nonzero__-toggle" onclick="return toggle('_Sentinel.__nonzero__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.apidoc._Sentinel-class.html#__nonzero__">__nonzero__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op"> [...]
+</div><div id="_Sentinel.__nonzero__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_Sentinel.__nonzero__-expanded"><a name="L281"></a><tt class="py-lineno"> 281</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">'Sentinel value <%s> can not be used as a boolean'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L282"></a><tt class="py-lineno"> 282</tt>  <tt class="py-line">                         <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-44" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-44', 'name', 'link-36');">name</a></tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L283"></a><tt class="py-lineno"> 283</tt>  <tt class="py-line"> </tt>
+<a name="L284"></a><tt class="py-lineno"> 284</tt>  <tt class="py-line"><tt id="link-45" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-45', 'UNKNOWN', 'link-39');">UNKNOWN</a></tt> <tt class="py-op">=</tt> <tt id="link-46" class="py-name" targets="Class epydoc.apidoc._Sentinel=epydoc.apidoc._Sentinel-class.html"><a title="epydoc.apidoc._Sentinel" class="py-name" href="#" onclick="return doclink('link-46', '_Sentinel', 'link-46');" [...]
+<a name="L285"></a><tt class="py-lineno"> 285</tt>  <tt class="py-line"><tt class="py-string">"""A special value used to indicate that a given piece of</tt> </tt>
+<a name="L286"></a><tt class="py-lineno"> 286</tt>  <tt class="py-line"><tt class="py-string">information about an object is unknown.  This is used as the</tt> </tt>
+<a name="L287"></a><tt class="py-lineno"> 287</tt>  <tt class="py-line"><tt class="py-string">default value for all instance variables."""</tt> </tt>
+<a name="L288"></a><tt class="py-lineno"> 288</tt>  <tt class="py-line"> </tt>
+<a name="L289"></a><tt class="py-lineno"> 289</tt>  <tt class="py-line"><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L290"></a><tt class="py-lineno"> 290</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># API Documentation Objects: Abstract Base Classes</tt> </tt>
+<a name="L291"></a><tt class="py-lineno"> 291</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L292"></a><tt class="py-lineno"> 292</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="APIDoc"></a><div id="APIDoc-def"><a name="L293"></a><tt class="py-lineno"> 293</tt> <a class="py-toggle" href="#" id="APIDoc-toggle" onclick="return toggle('APIDoc');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="epydoc.apidoc.APIDoc-class.html">APIDoc</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="APIDoc-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="APIDoc-expanded"><a name="L294"></a><tt class="py-lineno"> 294</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L295"></a><tt class="py-lineno"> 295</tt>  <tt class="py-line"><tt class="py-docstring">    API documentation information for a single element of a Python</tt> </tt>
+<a name="L296"></a><tt class="py-lineno"> 296</tt>  <tt class="py-line"><tt class="py-docstring">    program.  C{APIDoc} itself is an abstract base class; subclasses</tt> </tt>
+<a name="L297"></a><tt class="py-lineno"> 297</tt>  <tt class="py-line"><tt class="py-docstring">    are used to specify what information should be recorded about each</tt> </tt>
+<a name="L298"></a><tt class="py-lineno"> 298</tt>  <tt class="py-line"><tt class="py-docstring">    type of program element.  In particular, C{APIDoc} has two direct</tt> </tt>
+<a name="L299"></a><tt class="py-lineno"> 299</tt>  <tt class="py-line"><tt class="py-docstring">    subclasses, C{VariableDoc} for documenting variables and</tt> </tt>
+<a name="L300"></a><tt class="py-lineno"> 300</tt>  <tt class="py-line"><tt class="py-docstring">    C{ValueDoc} for documenting values; and the C{ValueDoc} class is</tt> </tt>
+<a name="L301"></a><tt class="py-lineno"> 301</tt>  <tt class="py-line"><tt class="py-docstring">    subclassed further for different value types.</tt> </tt>
+<a name="L302"></a><tt class="py-lineno"> 302</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L303"></a><tt class="py-lineno"> 303</tt>  <tt class="py-line"><tt class="py-docstring">    Each C{APIDoc} subclass specifies the set of attributes that</tt> </tt>
+<a name="L304"></a><tt class="py-lineno"> 304</tt>  <tt class="py-line"><tt class="py-docstring">    should be used to record information about the corresponding</tt> </tt>
+<a name="L305"></a><tt class="py-lineno"> 305</tt>  <tt class="py-line"><tt class="py-docstring">    program element type.  The default value for each attribute is</tt> </tt>
+<a name="L306"></a><tt class="py-lineno"> 306</tt>  <tt class="py-line"><tt class="py-docstring">    stored in the class; these default values can then be overridden</tt> </tt>
+<a name="L307"></a><tt class="py-lineno"> 307</tt>  <tt class="py-line"><tt class="py-docstring">    with instance variables.  Most attributes use the special value</tt> </tt>
+<a name="L308"></a><tt class="py-lineno"> 308</tt>  <tt class="py-line"><tt class="py-docstring">    L{UNKNOWN} as their default value, to indicate that the correct</tt> </tt>
+<a name="L309"></a><tt class="py-lineno"> 309</tt>  <tt class="py-line"><tt class="py-docstring">    value for that attribute has not yet been determined.  This makes</tt> </tt>
+<a name="L310"></a><tt class="py-lineno"> 310</tt>  <tt class="py-line"><tt class="py-docstring">    it easier to merge two C{APIDoc} objects that are documenting the</tt> </tt>
+<a name="L311"></a><tt class="py-lineno"> 311</tt>  <tt class="py-line"><tt class="py-docstring">    same element (in particular, to merge information about an element</tt> </tt>
+<a name="L312"></a><tt class="py-lineno"> 312</tt>  <tt class="py-line"><tt class="py-docstring">    that was derived from parsing with information that was derived</tt> </tt>
+<a name="L313"></a><tt class="py-lineno"> 313</tt>  <tt class="py-line"><tt class="py-docstring">    from introspection).</tt> </tt>
+<a name="L314"></a><tt class="py-lineno"> 314</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L315"></a><tt class="py-lineno"> 315</tt>  <tt class="py-line"><tt class="py-docstring">    For all attributes with boolean values, use only the constants</tt> </tt>
+<a name="L316"></a><tt class="py-lineno"> 316</tt>  <tt class="py-line"><tt class="py-docstring">    C{True} and C{False} to designate true and false.  In particular,</tt> </tt>
+<a name="L317"></a><tt class="py-lineno"> 317</tt>  <tt class="py-line"><tt class="py-docstring">    do I{not} use other values that evaluate as true or false, such as</tt> </tt>
+<a name="L318"></a><tt class="py-lineno"> 318</tt>  <tt class="py-line"><tt class="py-docstring">    C{2} or C{()}.  This restriction makes it easier to handle</tt> </tt>
+<a name="L319"></a><tt class="py-lineno"> 319</tt>  <tt class="py-line"><tt class="py-docstring">    C{UNKNOWN} values.  For example, to test if a boolean attribute is</tt> </tt>
+<a name="L320"></a><tt class="py-lineno"> 320</tt>  <tt class="py-line"><tt class="py-docstring">    C{True} or C{UNKNOWN}, use 'C{attrib in (True, UNKNOWN)}' or</tt> </tt>
+<a name="L321"></a><tt class="py-lineno"> 321</tt>  <tt class="py-line"><tt class="py-docstring">    'C{attrib is not False}'.</tt> </tt>
+<a name="L322"></a><tt class="py-lineno"> 322</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L323"></a><tt class="py-lineno"> 323</tt>  <tt class="py-line"><tt class="py-docstring">    Two C{APIDoc} objects describing the same object can be X{merged},</tt> </tt>
+<a name="L324"></a><tt class="py-lineno"> 324</tt>  <tt class="py-line"><tt class="py-docstring">    using the method L{merge_and_overwrite(other)}.  After two</tt> </tt>
+<a name="L325"></a><tt class="py-lineno"> 325</tt>  <tt class="py-line"><tt class="py-docstring">    C{APIDoc}s are merged, any changes to one will be reflected in the</tt> </tt>
+<a name="L326"></a><tt class="py-lineno"> 326</tt>  <tt class="py-line"><tt class="py-docstring">    other.  This is accomplished by setting the two C{APIDoc} objects</tt> </tt>
+<a name="L327"></a><tt class="py-lineno"> 327</tt>  <tt class="py-line"><tt class="py-docstring">    to use a shared instance dictionary.  See the documentation for</tt> </tt>
+<a name="L328"></a><tt class="py-lineno"> 328</tt>  <tt class="py-line"><tt class="py-docstring">    L{merge_and_overwrite} for more information, and some important</tt> </tt>
+<a name="L329"></a><tt class="py-lineno"> 329</tt>  <tt class="py-line"><tt class="py-docstring">    caveats about hashing.</tt> </tt>
+<a name="L330"></a><tt class="py-lineno"> 330</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L331"></a><tt class="py-lineno"> 331</tt>  <tt class="py-line">    <tt class="py-comment">#{ Docstrings</tt> </tt>
+<a name="L332"></a><tt class="py-lineno"> 332</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-47" class="py-name" targets="Variable epydoc.apidoc.APIDoc.docstring=epydoc.apidoc.APIDoc-class.html#docstring"><a title="epydoc.apidoc.APIDoc.docstring" class="py-name" href="#" onclick="return doclink('link-47', 'docstring', 'link-47');">docstring</a></tt> <tt class="py-op">=</tt> <tt id="link-48" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#"  [...]
+<a name="L333"></a><tt class="py-lineno"> 333</tt>  <tt class="py-line">    <tt class="py-string">"""@ivar: The documented item's docstring.</tt> </tt>
+<a name="L334"></a><tt class="py-lineno"> 334</tt>  <tt class="py-line"><tt class="py-string">       @type: C{string} or C{None}"""</tt> </tt>
+<a name="L335"></a><tt class="py-lineno"> 335</tt>  <tt class="py-line">     </tt>
+<a name="L336"></a><tt class="py-lineno"> 336</tt>  <tt class="py-line">    <tt id="link-49" class="py-name" targets="Variable epydoc.apidoc.APIDoc.docstring_lineno=epydoc.apidoc.APIDoc-class.html#docstring_lineno"><a title="epydoc.apidoc.APIDoc.docstring_lineno" class="py-name" href="#" onclick="return doclink('link-49', 'docstring_lineno', 'link-49');">docstring_lineno</a></tt> <tt class="py-op">=</tt> <tt id="link-50" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" hr [...]
+<a name="L337"></a><tt class="py-lineno"> 337</tt>  <tt class="py-line">    <tt class="py-string">"""@ivar: The line number on which the documented item's docstring</tt> </tt>
+<a name="L338"></a><tt class="py-lineno"> 338</tt>  <tt class="py-line"><tt class="py-string">       begins.</tt> </tt>
+<a name="L339"></a><tt class="py-lineno"> 339</tt>  <tt class="py-line"><tt class="py-string">       @type: C{int}"""</tt> </tt>
+<a name="L340"></a><tt class="py-lineno"> 340</tt>  <tt class="py-line">    <tt class="py-comment">#} end of "docstrings" group</tt> </tt>
+<a name="L341"></a><tt class="py-lineno"> 341</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L342"></a><tt class="py-lineno"> 342</tt>  <tt class="py-line">    <tt class="py-comment">#{ Information Extracted from Docstrings</tt> </tt>
+<a name="L343"></a><tt class="py-lineno"> 343</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-51" class="py-name" targets="Variable epydoc.apidoc.APIDoc.descr=epydoc.apidoc.APIDoc-class.html#descr,Variable epydoc.cli.descr=epydoc.cli-module.html#descr,Method epydoc.docwriter.html.HTMLWriter.descr()=epydoc.docwriter.html.HTMLWriter-class.html#descr,Method epydoc.markup.ParseError.descr()=epydoc.markup.ParseError-class.html#descr,Method epydoc.markup.epytext.Colorizi [...]
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-51', 'descr', 'link-51');">descr</a></tt> <tt class="py-op">=</tt> <tt id="link-52" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-52', 'UNKNOWN', 'link-39');">UNKNOWN</a></tt> </tt>
+<a name="L344"></a><tt class="py-lineno"> 344</tt>  <tt class="py-line">    <tt class="py-string">"""@ivar: A description of the documented item, extracted from its</tt> </tt>
+<a name="L345"></a><tt class="py-lineno"> 345</tt>  <tt class="py-line"><tt class="py-string">       docstring.</tt> </tt>
+<a name="L346"></a><tt class="py-lineno"> 346</tt>  <tt class="py-line"><tt class="py-string">       @type: L{ParsedDocstring<epydoc.markup.ParsedDocstring>}"""</tt> </tt>
+<a name="L347"></a><tt class="py-lineno"> 347</tt>  <tt class="py-line">     </tt>
+<a name="L348"></a><tt class="py-lineno"> 348</tt>  <tt class="py-line">    <tt id="link-53" class="py-name" targets="Variable epydoc.apidoc.APIDoc.summary=epydoc.apidoc.APIDoc-class.html#summary,Method epydoc.docwriter.html.HTMLWriter.summary()=epydoc.docwriter.html.HTMLWriter-class.html#summary,Method epydoc.markup.ConcatenatedDocstring.summary()=epydoc.markup.ConcatenatedDocstring-class.html#summary,Method epydoc.markup.ParsedDocstring.summary()=epydoc.markup.ParsedDocstring-class.htm [...]
+epydoc.docwriter.html.HTMLWriter.summary
+epydoc.markup.ConcatenatedDocstring.summary
+epydoc.markup.ParsedDocstring.summary
+epydoc.markup.epytext.ParsedEpytextDocstring.summary
+epydoc.markup.javadoc.ParsedJavadocDocstring.summary
+epydoc.markup.plaintext.ParsedPlaintextDocstring.summary
+epydoc.markup.restructuredtext.ParsedRstDocstring.summary" class="py-name" href="#" onclick="return doclink('link-53', 'summary', 'link-53');">summary</a></tt> <tt class="py-op">=</tt> <tt id="link-54" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-54', 'UNKNOWN', 'link-39');">UNKNOWN</a></tt> </tt>
+<a name="L349"></a><tt class="py-lineno"> 349</tt>  <tt class="py-line">    <tt class="py-string">"""@ivar: A summary description of the documented item, extracted from</tt> </tt>
+<a name="L350"></a><tt class="py-lineno"> 350</tt>  <tt class="py-line"><tt class="py-string">       its docstring.</tt> </tt>
+<a name="L351"></a><tt class="py-lineno"> 351</tt>  <tt class="py-line"><tt class="py-string">       @type: L{ParsedDocstring<epydoc.markup.ParsedDocstring>}"""</tt> </tt>
+<a name="L352"></a><tt class="py-lineno"> 352</tt>  <tt class="py-line">     </tt>
+<a name="L353"></a><tt class="py-lineno"> 353</tt>  <tt class="py-line">    <tt id="link-55" class="py-name" targets="Variable epydoc.apidoc.APIDoc.other_docs=epydoc.apidoc.APIDoc-class.html#other_docs"><a title="epydoc.apidoc.APIDoc.other_docs" class="py-name" href="#" onclick="return doclink('link-55', 'other_docs', 'link-55');">other_docs</a></tt> <tt class="py-op">=</tt> <tt id="link-56" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink [...]
+<a name="L354"></a><tt class="py-lineno"> 354</tt>  <tt class="py-line">    <tt class="py-string">"""@ivar: A flag indicating if the entire L{docstring} body (except tags</tt> </tt>
+<a name="L355"></a><tt class="py-lineno"> 355</tt>  <tt class="py-line"><tt class="py-string">       if any) is entirely included in the L{summary}.</tt> </tt>
+<a name="L356"></a><tt class="py-lineno"> 356</tt>  <tt class="py-line"><tt class="py-string">       @type: C{bool}"""</tt> </tt>
+<a name="L357"></a><tt class="py-lineno"> 357</tt>  <tt class="py-line">     </tt>
+<a name="L358"></a><tt class="py-lineno"> 358</tt>  <tt class="py-line">    <tt id="link-57" class="py-name" targets="Variable epydoc.apidoc.APIDoc.metadata=epydoc.apidoc.APIDoc-class.html#metadata"><a title="epydoc.apidoc.APIDoc.metadata" class="py-name" href="#" onclick="return doclink('link-57', 'metadata', 'link-57');">metadata</a></tt> <tt class="py-op">=</tt> <tt id="link-58" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-58' [...]
+<a name="L359"></a><tt class="py-lineno"> 359</tt>  <tt class="py-line">    <tt class="py-string">"""@ivar: Metadata about the documented item, extracted from fields in</tt> </tt>
+<a name="L360"></a><tt class="py-lineno"> 360</tt>  <tt class="py-line"><tt class="py-string">       its docstring.  I{Currently} this is encoded as a list of tuples</tt> </tt>
+<a name="L361"></a><tt class="py-lineno"> 361</tt>  <tt class="py-line"><tt class="py-string">       C{(field, arg, descr)}.  But that may change.</tt> </tt>
+<a name="L362"></a><tt class="py-lineno"> 362</tt>  <tt class="py-line"><tt class="py-string">       @type: C{(str, str, L{ParsedDocstring<markup.ParsedDocstring>})}"""</tt> </tt>
+<a name="L363"></a><tt class="py-lineno"> 363</tt>  <tt class="py-line">     </tt>
+<a name="L364"></a><tt class="py-lineno"> 364</tt>  <tt class="py-line">    <tt id="link-59" class="py-name" targets="Variable epydoc.apidoc.APIDoc.extra_docstring_fields=epydoc.apidoc.APIDoc-class.html#extra_docstring_fields"><a title="epydoc.apidoc.APIDoc.extra_docstring_fields" class="py-name" href="#" onclick="return doclink('link-59', 'extra_docstring_fields', 'link-59');">extra_docstring_fields</a></tt> <tt class="py-op">=</tt> <tt id="link-60" class="py-name"><a title="epydoc.apid [...]
+<a name="L365"></a><tt class="py-lineno"> 365</tt>  <tt class="py-line">    <tt class="py-string">"""@ivar: A list of new docstring fields tags that are defined by the</tt> </tt>
+<a name="L366"></a><tt class="py-lineno"> 366</tt>  <tt class="py-line"><tt class="py-string">       documented item's docstring.  These new field tags can be used by</tt> </tt>
+<a name="L367"></a><tt class="py-lineno"> 367</tt>  <tt class="py-line"><tt class="py-string">       this item or by any item it contains.</tt> </tt>
+<a name="L368"></a><tt class="py-lineno"> 368</tt>  <tt class="py-line"><tt class="py-string">       @type: L{DocstringField <epydoc.docstringparser.DocstringField>}"""</tt> </tt>
+<a name="L369"></a><tt class="py-lineno"> 369</tt>  <tt class="py-line">    <tt class="py-comment">#} end of "information extracted from docstrings" group</tt> </tt>
+<a name="L370"></a><tt class="py-lineno"> 370</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L371"></a><tt class="py-lineno"> 371</tt>  <tt class="py-line">    <tt class="py-comment">#{ Source Information</tt> </tt>
+<a name="L372"></a><tt class="py-lineno"> 372</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-61" class="py-name" targets="Variable epydoc.apidoc.APIDoc.docs_extracted_by=epydoc.apidoc.APIDoc-class.html#docs_extracted_by"><a title="epydoc.apidoc.APIDoc.docs_extracted_by" class="py-name" href="#" onclick="return doclink('link-61', 'docs_extracted_by', 'link-61');">docs_extracted_by</a></tt> <tt class="py-op">=</tt> <tt id="link-62" class="py-name"><a title="epydoc.a [...]
+<a name="L373"></a><tt class="py-lineno"> 373</tt>  <tt class="py-line">    <tt class="py-string">"""@ivar: Information about where the information contained by this</tt> </tt>
+<a name="L374"></a><tt class="py-lineno"> 374</tt>  <tt class="py-line"><tt class="py-string">       C{APIDoc} came from.  Can be one of C{'parser'},</tt> </tt>
+<a name="L375"></a><tt class="py-lineno"> 375</tt>  <tt class="py-line"><tt class="py-string">       C{'introspector'}, or C{'both'}.</tt> </tt>
+<a name="L376"></a><tt class="py-lineno"> 376</tt>  <tt class="py-line"><tt class="py-string">       @type: C{str}"""</tt> </tt>
+<a name="L377"></a><tt class="py-lineno"> 377</tt>  <tt class="py-line">    <tt class="py-comment">#} end of "source information" group</tt> </tt>
+<a name="L378"></a><tt class="py-lineno"> 378</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="APIDoc.__init__"></a><div id="APIDoc.__init__-def"><a name="L379"></a><tt class="py-lineno"> 379</tt> <a class="py-toggle" href="#" id="APIDoc.__init__-toggle" onclick="return toggle('APIDoc.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.apidoc.APIDoc-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-param">kwargs</tt [...]
+</div><div id="APIDoc.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="APIDoc.__init__-expanded"><a name="L380"></a><tt class="py-lineno"> 380</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L381"></a><tt class="py-lineno"> 381</tt>  <tt class="py-line"><tt class="py-docstring">        Construct a new C{APIDoc} object.  Keyword arguments may be</tt> </tt>
+<a name="L382"></a><tt class="py-lineno"> 382</tt>  <tt class="py-line"><tt class="py-docstring">        used to initialize the new C{APIDoc}'s attributes.</tt> </tt>
+<a name="L383"></a><tt class="py-lineno"> 383</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt>
+<a name="L384"></a><tt class="py-lineno"> 384</tt>  <tt class="py-line"><tt class="py-docstring">        @raise TypeError: If a keyword argument is specified that does</tt> </tt>
+<a name="L385"></a><tt class="py-lineno"> 385</tt>  <tt class="py-line"><tt class="py-docstring">            not correspond to a valid attribute for this (sub)class of</tt> </tt>
+<a name="L386"></a><tt class="py-lineno"> 386</tt>  <tt class="py-line"><tt class="py-docstring">            C{APIDoc}.</tt> </tt>
+<a name="L387"></a><tt class="py-lineno"> 387</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L388"></a><tt class="py-lineno"> 388</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-63" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-63', 'epydoc', 'link-1');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-64" class="py-name" targets="Variable epydoc.DEBUG=epydoc-module.html#DEBUG,Variable epydoc.gui.DEBUG=epydoc.gui-module.html#DEBUG,Variable epydoc.log.DEBUG=epydoc.log-module.html#DEBUG"><a title= [...]
+epydoc.gui.DEBUG
+epydoc.log.DEBUG" class="py-name" href="#" onclick="return doclink('link-64', 'DEBUG', 'link-64');">DEBUG</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L389"></a><tt class="py-lineno"> 389</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt id="link-65" class="py-name" targets="Variable epydoc.cli.key=epydoc.cli-module.html#key"><a title="epydoc.cli.key" class="py-name" href="#" onclick="return doclink('link-65', 'key', 'link-65');">key</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">kwargs</tt><tt class="py-op">:</tt> </tt>
+<a name="L390"></a><tt class="py-lineno"> 390</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt id="link-66" class="py-name"><a title="epydoc.cli.key" class="py-name" href="#" onclick="return doclink('link-66', 'key', 'link-65');">key</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">!=</tt> <tt class="py-string">'_'</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">hasa [...]
+<a name="L391"></a><tt class="py-lineno"> 391</tt>  <tt class="py-line">                    <tt class="py-keyword">raise</tt> <tt class="py-name">TypeError</tt><tt class="py-op">(</tt><tt class="py-string">'%s got unexpected arg %r'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L392"></a><tt class="py-lineno"> 392</tt>  <tt class="py-line">                                    <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt><tt class="py-op">,</tt> <tt id="link-68" class="py-name"><a title="epydoc.cli.key" class="py-name" href="#" onclick="return doclink('link-68', 'key', 'link-65');">key</a></tt><tt class="py-op">)</tt><tt class="py-op [...]
+<a name="L393"></a><tt class="py-lineno"> 393</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">.</tt><tt class="py-name">update</tt><tt class="py-op">(</tt><tt class="py-name">kwargs</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L394"></a><tt class="py-lineno"> 394</tt>  <tt class="py-line"> </tt>
+<a name="APIDoc._debug_setattr"></a><div id="APIDoc._debug_setattr-def"><a name="L395"></a><tt class="py-lineno"> 395</tt> <a class="py-toggle" href="#" id="APIDoc._debug_setattr-toggle" onclick="return toggle('APIDoc._debug_setattr');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.apidoc.APIDoc-class.html#_debug_setattr">_debug_setattr</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param" [...]
+</div><div id="APIDoc._debug_setattr-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="APIDoc._debug_setattr-expanded"><a name="L396"></a><tt class="py-lineno"> 396</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L397"></a><tt class="py-lineno"> 397</tt>  <tt class="py-line"><tt class="py-docstring">        Modify an C{APIDoc}'s attribute.  This is used when</tt> </tt>
+<a name="L398"></a><tt class="py-lineno"> 398</tt>  <tt class="py-line"><tt class="py-docstring">        L{epydoc.DEBUG} is true, to make sure we don't accidentally</tt> </tt>
+<a name="L399"></a><tt class="py-lineno"> 399</tt>  <tt class="py-line"><tt class="py-docstring">        set any inappropriate attributes on C{APIDoc} objects.</tt> </tt>
+<a name="L400"></a><tt class="py-lineno"> 400</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L401"></a><tt class="py-lineno"> 401</tt>  <tt class="py-line"><tt class="py-docstring">        @raise AttributeError: If C{attr} is not a valid attribute for</tt> </tt>
+<a name="L402"></a><tt class="py-lineno"> 402</tt>  <tt class="py-line"><tt class="py-docstring">            this (sub)class of C{APIDoc}.  (C{attr} is considered a</tt> </tt>
+<a name="L403"></a><tt class="py-lineno"> 403</tt>  <tt class="py-line"><tt class="py-docstring">            valid attribute iff C{self.__class__} defines an attribute</tt> </tt>
+<a name="L404"></a><tt class="py-lineno"> 404</tt>  <tt class="py-line"><tt class="py-docstring">            with that name.)</tt> </tt>
+<a name="L405"></a><tt class="py-lineno"> 405</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L406"></a><tt class="py-lineno"> 406</tt>  <tt class="py-line">        <tt class="py-comment"># Don't intercept special assignments like __class__, or</tt> </tt>
+<a name="L407"></a><tt class="py-lineno"> 407</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># assignments to private variables.</tt> </tt>
+<a name="L408"></a><tt class="py-lineno"> 408</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">attr</tt><tt class="py-op">.</tt><tt class="py-name">startswith</tt><tt class="py-op">(</tt><tt class="py-string">'_'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L409"></a><tt class="py-lineno"> 409</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">object</tt><tt class="py-op">.</tt><tt class="py-name">__setattr__</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">attr</tt><tt class="py-op">,</tt> <tt class="py-name">val</tt><tt class="py-op">)</tt> </tt>
+<a name="L410"></a><tt class="py-lineno"> 410</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">attr</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L411"></a><tt class="py-lineno"> 411</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">AttributeError</tt><tt class="py-op">(</tt><tt class="py-string">'%s does not define attribute %r'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L412"></a><tt class="py-lineno"> 412</tt>  <tt class="py-line">                            <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt><tt class="py-op">,</tt> <tt class="py-name">attr</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L413"></a><tt class="py-lineno"> 413</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">[</tt><tt class="py-name">attr</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">val</tt> </tt>
+</div><a name="L414"></a><tt class="py-lineno"> 414</tt>  <tt class="py-line"> </tt>
+<a name="L415"></a><tt class="py-lineno"> 415</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-69" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-69', 'epydoc', 'link-1');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-70" class="py-name"><a title="epydoc.DEBUG
+epydoc.gui.DEBUG
+epydoc.log.DEBUG" class="py-name" href="#" onclick="return doclink('link-70', 'DEBUG', 'link-64');">DEBUG</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L416"></a><tt class="py-lineno"> 416</tt>  <tt class="py-line">        <tt class="py-name">__setattr__</tt> <tt class="py-op">=</tt> <tt id="link-71" class="py-name" targets="Method epydoc.apidoc.APIDoc._debug_setattr()=epydoc.apidoc.APIDoc-class.html#_debug_setattr"><a title="epydoc.apidoc.APIDoc._debug_setattr" class="py-name" href="#" onclick="return doclink('link-71', '_debug_setattr', 'link-71');">_debug_setattr</a></tt> </tt>
+<a name="L417"></a><tt class="py-lineno"> 417</tt>  <tt class="py-line"> </tt>
+<a name="APIDoc.__repr__"></a><div id="APIDoc.__repr__-def"><a name="L418"></a><tt class="py-lineno"> 418</tt> <a class="py-toggle" href="#" id="APIDoc.__repr__-toggle" onclick="return toggle('APIDoc.__repr__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.apidoc.APIDoc-class.html#__repr__">__repr__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="APIDoc.__repr__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="APIDoc.__repr__-expanded"><a name="L419"></a><tt class="py-lineno"> 419</tt>  <tt class="py-line">       <tt class="py-keyword">return</tt> <tt class="py-string">'<%s>'</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt> </tt>
+</div><a name="L420"></a><tt class="py-lineno"> 420</tt>  <tt class="py-line">     </tt>
+<a name="APIDoc.pp"></a><div id="APIDoc.pp-def"><a name="L421"></a><tt class="py-lineno"> 421</tt> <a class="py-toggle" href="#" id="APIDoc.pp-toggle" onclick="return toggle('APIDoc.pp');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.apidoc.APIDoc-class.html#pp">pp</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">doublespace</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt [...]
+</div><div id="APIDoc.pp-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="APIDoc.pp-expanded"><a name="L422"></a><tt class="py-lineno"> 422</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L423"></a><tt class="py-lineno"> 423</tt>  <tt class="py-line"><tt class="py-docstring">        Return a pretty-printed string representation for the</tt> </tt>
+<a name="L424"></a><tt class="py-lineno"> 424</tt>  <tt class="py-line"><tt class="py-docstring">        information contained in this C{APIDoc}.</tt> </tt>
+<a name="L425"></a><tt class="py-lineno"> 425</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L426"></a><tt class="py-lineno"> 426</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-72" class="py-name" targets="Function epydoc.apidoc.pp_apidoc()=epydoc.apidoc-module.html#pp_apidoc"><a title="epydoc.apidoc.pp_apidoc" class="py-name" href="#" onclick="return doclink('link-72', 'pp_apidoc', 'link-72');">pp_apidoc</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">doublespace</tt><tt class= [...]
+</div><a name="L427"></a><tt class="py-lineno"> 427</tt>  <tt class="py-line">    <tt id="link-73" class="py-name" targets="Method epydoc.apidoc.DottedName.__str__()=epydoc.apidoc.DottedName-class.html#__str__,Method epydoc.markup.ParseError.__str__()=epydoc.markup.ParseError-class.html#__str__,Method epydoc.markup.epytext.Element.__str__()=epydoc.markup.epytext.Element-class.html#__str__,Method epydoc.markup.epytext.ParsedEpytextDocstring.__str__()=epydoc.markup.epytext.ParsedEpytextDoc [...]
+epydoc.markup.ParseError.__str__
+epydoc.markup.epytext.Element.__str__
+epydoc.markup.epytext.ParsedEpytextDocstring.__str__" class="py-name" href="#" onclick="return doclink('link-73', '__str__', 'link-73');">__str__</a></tt> <tt class="py-op">=</tt> <tt id="link-74" class="py-name" targets="Method epydoc.apidoc.APIDoc.pp()=epydoc.apidoc.APIDoc-class.html#pp"><a title="epydoc.apidoc.APIDoc.pp" class="py-name" href="#" onclick="return doclink('link-74', 'pp', 'link-74');">pp</a></tt> </tt>
+<a name="L428"></a><tt class="py-lineno"> 428</tt>  <tt class="py-line"> </tt>
+<a name="APIDoc.specialize_to"></a><div id="APIDoc.specialize_to-def"><a name="L429"></a><tt class="py-lineno"> 429</tt> <a class="py-toggle" href="#" id="APIDoc.specialize_to-toggle" onclick="return toggle('APIDoc.specialize_to');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.apidoc.APIDoc-class.html#specialize_to">specialize_to</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">cls</ [...]
+</div><div id="APIDoc.specialize_to-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="APIDoc.specialize_to-expanded"><a name="L430"></a><tt class="py-lineno"> 430</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L431"></a><tt class="py-lineno"> 431</tt>  <tt class="py-line"><tt class="py-docstring">        Change C{self}'s class to C{cls}.  C{cls} must be a subclass</tt> </tt>
+<a name="L432"></a><tt class="py-lineno"> 432</tt>  <tt class="py-line"><tt class="py-docstring">        of C{self}'s current class.  For example, if a generic</tt> </tt>
+<a name="L433"></a><tt class="py-lineno"> 433</tt>  <tt class="py-line"><tt class="py-docstring">        C{ValueDoc} was created for a value, and it is determined that</tt> </tt>
+<a name="L434"></a><tt class="py-lineno"> 434</tt>  <tt class="py-line"><tt class="py-docstring">        the value is a routine, you can update its class with:</tt> </tt>
+<a name="L435"></a><tt class="py-lineno"> 435</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt>
+<a name="L436"></a><tt class="py-lineno"> 436</tt>  <tt class="py-line"><tt class="py-docstring">            >>> valdoc.specialize_to(RoutineDoc)</tt> </tt>
+<a name="L437"></a><tt class="py-lineno"> 437</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L438"></a><tt class="py-lineno"> 438</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">issubclass</tt><tt class="py-op">(</tt><tt class="py-name">cls</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L439"></a><tt class="py-lineno"> 439</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">'Can not specialize to %r'</tt> <tt class="py-op">%</tt> <tt class="py-name">cls</tt><tt class="py-op">)</tt> </tt>
+<a name="L440"></a><tt class="py-lineno"> 440</tt>  <tt class="py-line">        <tt class="py-comment"># Update the class.</tt> </tt>
+<a name="L441"></a><tt class="py-lineno"> 441</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt> <tt class="py-op">=</tt> <tt class="py-name">cls</tt> </tt>
+<a name="L442"></a><tt class="py-lineno"> 442</tt>  <tt class="py-line">        <tt class="py-comment"># Update the class of any other apidoc's in the mergeset.</tt> </tt>
+<a name="L443"></a><tt class="py-lineno"> 443</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-75" class="py-name" targets="Variable epydoc.apidoc.APIDoc.__mergeset=epydoc.apidoc.APIDoc-class.html#__mergeset"><a title="epydoc.apidoc.APIDoc.__mergeset" class="py-name" href="#" onclick="return doclink('link-75', '__mergeset', 'link-75');">__mergeset</a></tt> <tt class="py-keyword"> [...]
+<a name="L444"></a><tt class="py-lineno"> 444</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt id="link-76" class="py-name" targets="Module epydoc.apidoc=epydoc.apidoc-module.html"><a title="epydoc.apidoc" class="py-name" href="#" onclick="return doclink('link-76', 'apidoc', 'link-76');">apidoc</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-77" class="py-name"><a title="epydoc.apidoc.APIDoc.__mergeset" cl [...]
+<a name="L445"></a><tt class="py-lineno"> 445</tt>  <tt class="py-line">                <tt id="link-78" class="py-name"><a title="epydoc.apidoc" class="py-name" href="#" onclick="return doclink('link-78', 'apidoc', 'link-76');">apidoc</a></tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt> <tt class="py-op">=</tt> <tt class="py-name">cls</tt> </tt>
+<a name="L446"></a><tt class="py-lineno"> 446</tt>  <tt class="py-line">        <tt class="py-comment"># Re-initialize self, in case the subclass constructor does</tt> </tt>
+<a name="L447"></a><tt class="py-lineno"> 447</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># any special processing on its arguments.</tt> </tt>
+<a name="L448"></a><tt class="py-lineno"> 448</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-79" class="py-name" targets="Method epydoc.apidoc.APIDoc.__init__()=epydoc.apidoc.APIDoc-class.html#__init__,Method epydoc.apidoc.DocIndex.__init__()=epydoc.apidoc.DocIndex-class.html#__init__,Method epydoc.apidoc.DottedName.__init__()=epydoc.apidoc.DottedName-class.html#__init__,Method epydoc.apidoc.NamespaceDoc.__i [...]
+epydoc.apidoc.DocIndex.__init__
+epydoc.apidoc.DottedName.__init__
+epydoc.apidoc.NamespaceDoc.__init__
+epydoc.apidoc.VariableDoc.__init__
+epydoc.apidoc._Sentinel.__init__
+epydoc.checker.DocChecker.__init__
+epydoc.cli.ConsoleLogger.__init__
+epydoc.cli.HTMLLogger.__init__
+epydoc.cli.TerminalController.__init__
+epydoc.cli.UnifiedProgressConsoleLogger.__init__
+epydoc.docbuilder.BuildOptions.__init__
+epydoc.docbuilder._ProgressEstimator.__init__
+epydoc.docintrospecter._DevNull.__init__
+epydoc.docstringparser.DocstringField.__init__
+epydoc.docwriter.dotgraph.DotGraph.__init__
+epydoc.docwriter.dotgraph.DotGraphEdge.__init__
+epydoc.docwriter.dotgraph.DotGraphNode.__init__
+epydoc.docwriter.dotgraph.DotGraphUmlClassNode.__init__
+epydoc.docwriter.dotgraph.DotGraphUmlModuleNode.__init__
+epydoc.docwriter.html.HTMLWriter.__init__
+epydoc.docwriter.html._HTMLDocstringLinker.__init__
+epydoc.docwriter.html_colorize.PythonSourceColorizer.__init__
+epydoc.docwriter.latex.LatexWriter.__init__
+epydoc.docwriter.xlink.ApiLinkReader.__init__
+epydoc.docwriter.xlink.DocUrlGenerator.__init__
+epydoc.gui.EpydocGUI.__init__
+epydoc.gui.GUILogger.__init__
+epydoc.log.SimpleLogger.__init__
+epydoc.markup.ConcatenatedDocstring.__init__
+epydoc.markup.Field.__init__
+epydoc.markup.ParseError.__init__
+epydoc.markup.epytext.ColorizingError.__init__
+epydoc.markup.epytext.Element.__init__
+epydoc.markup.epytext.ParsedEpytextDocstring.__init__
+epydoc.markup.epytext.Token.__init__
+epydoc.markup.javadoc.ParsedJavadocDocstring.__init__
+epydoc.markup.plaintext.ParsedPlaintextDocstring.__init__
+epydoc.markup.pyval_repr.ColorizedPyvalRepr.__init__
+epydoc.markup.pyval_repr.PyvalColorizer.__init__
+epydoc.markup.pyval_repr._ColorizerState.__init__
+epydoc.markup.restructuredtext.ParsedRstDocstring.__init__
+epydoc.markup.restructuredtext._DocumentPseudoWriter.__init__
+epydoc.markup.restructuredtext._EpydocHTMLTranslator.__init__
+epydoc.markup.restructuredtext._EpydocLaTeXTranslator.__init__
+epydoc.markup.restructuredtext._EpydocReader.__init__
+epydoc.markup.restructuredtext._SplitFieldsTranslator.__init__
+epydoc.markup.restructuredtext._SummaryExtractor.__init__
+epydoc.markup.restructuredtext._TermsExtractor.__init__
+epydoc.markup.restructuredtext.dotgraph.__init__
+epydoc.util.RunSubprocessError.__init__" class="py-name" href="#" onclick="return doclink('link-79', '__init__', 'link-79');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-op">**</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L449"></a><tt class="py-lineno"> 449</tt>  <tt class="py-line"> </tt>
+<a name="L450"></a><tt class="py-lineno"> 450</tt>  <tt class="py-line">    <tt id="link-80" class="py-name" targets="Variable epydoc.apidoc.APIDoc.__has_been_hashed=epydoc.apidoc.APIDoc-class.html#__has_been_hashed"><a title="epydoc.apidoc.APIDoc.__has_been_hashed" class="py-name" href="#" onclick="return doclink('link-80', '__has_been_hashed', 'link-80');">__has_been_hashed</a></tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L451"></a><tt class="py-lineno"> 451</tt>  <tt class="py-line">    <tt class="py-string">"""True iff L{self.__hash__()} has ever been called."""</tt> </tt>
+<a name="L452"></a><tt class="py-lineno"> 452</tt>  <tt class="py-line">     </tt>
+<a name="APIDoc.__hash__"></a><div id="APIDoc.__hash__-def"><a name="L453"></a><tt class="py-lineno"> 453</tt> <a class="py-toggle" href="#" id="APIDoc.__hash__-toggle" onclick="return toggle('APIDoc.__hash__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.apidoc.APIDoc-class.html#__hash__">__hash__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="APIDoc.__hash__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="APIDoc.__hash__-expanded"><a name="L454"></a><tt class="py-lineno"> 454</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-81" class="py-name"><a title="epydoc.apidoc.APIDoc.__has_been_hashed" class="py-name" href="#" onclick="return doclink('link-81', '__has_been_hashed', 'link-80');">__has_been_hashed</a></tt> <tt class="py-op">=</ [...]
+<a name="L455"></a><tt class="py-lineno"> 455</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">id</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L456"></a><tt class="py-lineno"> 456</tt>  <tt class="py-line"> </tt>
+<a name="APIDoc.__cmp__"></a><div id="APIDoc.__cmp__-def"><a name="L457"></a><tt class="py-lineno"> 457</tt> <a class="py-toggle" href="#" id="APIDoc.__cmp__-toggle" onclick="return toggle('APIDoc.__cmp__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.apidoc.APIDoc-class.html#__cmp__">__cmp__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">other</tt><tt class="py-op">)</tt><tt cla [...]
+</div><div id="APIDoc.__cmp__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="APIDoc.__cmp__-expanded"><a name="L458"></a><tt class="py-lineno"> 458</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">other</tt><tt class="py-op">,</tt> <tt id="link-82" class="py-name" targets="Class epydoc.apidoc.APIDoc=epydoc.apidoc.APIDoc-class.html">< [...]
+<a name="L459"></a><tt class="py-lineno"> 459</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt> <tt class="py-keyword">is</tt> <tt class="py-name">other</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-number">0</tt> </tt>
+<a name="L460"></a><tt class="py-lineno"> 460</tt>  <tt class="py-line">        <tt class="py-name">name_cmp</tt> <tt class="py-op">=</tt> <tt class="py-name">cmp</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-83" class="py-name" targets="Variable epydoc.apidoc.GenericValueDoc.canonical_name=epydoc.apidoc.GenericValueDoc-class.html#canonical_name,Variable epydoc.apidoc.ValueDoc.canonical_name=epydoc.apidoc.ValueDoc-class.html#canonical_name, [...]
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-83', 'canonical_name', 'link-83');">canonical_name</a></tt><tt class="py-op">,</tt> <tt class="py-name">other</tt><tt class="py-op">.</tt><tt id="link-84" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-84', 'canonical_name', 'link-83');">canonical_name</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L461"></a><tt class="py-lineno"> 461</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">name_cmp</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-op">-</tt><tt class="py-number">1</tt> </tt>
+<a name="L462"></a><tt class="py-lineno"> 462</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-name">name_cmp</tt> </tt>
+</div><a name="L463"></a><tt class="py-lineno"> 463</tt>  <tt class="py-line"> </tt>
+<a name="APIDoc.is_detailed"></a><div id="APIDoc.is_detailed-def"><a name="L464"></a><tt class="py-lineno"> 464</tt> <a class="py-toggle" href="#" id="APIDoc.is_detailed-toggle" onclick="return toggle('APIDoc.is_detailed');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.apidoc.APIDoc-class.html#is_detailed">is_detailed</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="APIDoc.is_detailed-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="APIDoc.is_detailed-expanded"><a name="L465"></a><tt class="py-lineno"> 465</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L466"></a><tt class="py-lineno"> 466</tt>  <tt class="py-line"><tt class="py-docstring">        Does this object deserve a box with extra details?</tt> </tt>
+<a name="L467"></a><tt class="py-lineno"> 467</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L468"></a><tt class="py-lineno"> 468</tt>  <tt class="py-line"><tt class="py-docstring">        @return: True if the object needs extra details, else False.</tt> </tt>
+<a name="L469"></a><tt class="py-lineno"> 469</tt>  <tt class="py-line"><tt class="py-docstring">        @rtype: C{bool}</tt> </tt>
+<a name="L470"></a><tt class="py-lineno"> 470</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L471"></a><tt class="py-lineno"> 471</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-85" class="py-name"><a title="epydoc.apidoc.APIDoc.other_docs" class="py-name" href="#" onclick="return doclink('link-85', 'other_docs', 'link-55');">other_docs</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">True</tt><tt class="py-op">:</tt> </tt>
+<a name="L472"></a><tt class="py-lineno"> 472</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
+<a name="L473"></a><tt class="py-lineno"> 473</tt>  <tt class="py-line"> </tt>
+<a name="L474"></a><tt class="py-lineno"> 474</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-86" class="py-name"><a title="epydoc.apidoc.APIDoc.metadata" class="py-name" href="#" onclick="return doclink('link-86', 'metadata', 'link-57');">metadata</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt id="link-87" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href=" [...]
+<a name="L475"></a><tt class="py-lineno"> 475</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">bool</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-88" class="py-name"><a title="epydoc.apidoc.APIDoc.metadata" class="py-name" href="#" onclick="return doclink('link-88', 'metadata', 'link-57');">metadata</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L476"></a><tt class="py-lineno"> 476</tt>  <tt class="py-line"> </tt>
+<a name="L477"></a><tt class="py-lineno"> 477</tt>  <tt class="py-line">    <tt id="link-89" class="py-name"><a title="epydoc.apidoc.APIDoc.__mergeset" class="py-name" href="#" onclick="return doclink('link-89', '__mergeset', 'link-75');">__mergeset</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L478"></a><tt class="py-lineno"> 478</tt>  <tt class="py-line">    <tt class="py-string">"""The set of all C{APIDoc} objects that have been merged with</tt> </tt>
+<a name="L479"></a><tt class="py-lineno"> 479</tt>  <tt class="py-line"><tt class="py-string">    this C{APIDoc} (using L{merge_and_overwrite()}).  Each C{APIDoc}</tt> </tt>
+<a name="L480"></a><tt class="py-lineno"> 480</tt>  <tt class="py-line"><tt class="py-string">    in this set shares a common instance dictionary (C{__dict__})."""</tt> </tt>
+<a name="L481"></a><tt class="py-lineno"> 481</tt>  <tt class="py-line">     </tt>
+<a name="APIDoc.merge_and_overwrite"></a><div id="APIDoc.merge_and_overwrite-def"><a name="L482"></a><tt class="py-lineno"> 482</tt> <a class="py-toggle" href="#" id="APIDoc.merge_and_overwrite-toggle" onclick="return toggle('APIDoc.merge_and_overwrite');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.apidoc.APIDoc-class.html#merge_and_overwrite">merge_and_overwrite</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-o [...]
+</div><div id="APIDoc.merge_and_overwrite-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="APIDoc.merge_and_overwrite-expanded"><a name="L483"></a><tt class="py-lineno"> 483</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L484"></a><tt class="py-lineno"> 484</tt>  <tt class="py-line"><tt class="py-docstring">        Combine C{self} and C{other} into a X{merged object}, such</tt> </tt>
+<a name="L485"></a><tt class="py-lineno"> 485</tt>  <tt class="py-line"><tt class="py-docstring">        that any changes made to one will affect the other.  Any</tt> </tt>
+<a name="L486"></a><tt class="py-lineno"> 486</tt>  <tt class="py-line"><tt class="py-docstring">        attributes that C{other} had before merging will be discarded.</tt> </tt>
+<a name="L487"></a><tt class="py-lineno"> 487</tt>  <tt class="py-line"><tt class="py-docstring">        This is accomplished by copying C{self.__dict__} over</tt> </tt>
+<a name="L488"></a><tt class="py-lineno"> 488</tt>  <tt class="py-line"><tt class="py-docstring">        C{other.__dict__} and C{self.__class__} over C{other.__class__}.</tt> </tt>
+<a name="L489"></a><tt class="py-lineno"> 489</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L490"></a><tt class="py-lineno"> 490</tt>  <tt class="py-line"><tt class="py-docstring">        Care must be taken with this method, since it modifies the</tt> </tt>
+<a name="L491"></a><tt class="py-lineno"> 491</tt>  <tt class="py-line"><tt class="py-docstring">        hash value of C{other}.  To help avoid the problems that this</tt> </tt>
+<a name="L492"></a><tt class="py-lineno"> 492</tt>  <tt class="py-line"><tt class="py-docstring">        can cause, C{merge_and_overwrite} will raise an exception if</tt> </tt>
+<a name="L493"></a><tt class="py-lineno"> 493</tt>  <tt class="py-line"><tt class="py-docstring">        C{other} has ever been hashed, unless C{ignore_hash_conflict}</tt> </tt>
+<a name="L494"></a><tt class="py-lineno"> 494</tt>  <tt class="py-line"><tt class="py-docstring">        is True.  Note that adding C{other} to a dictionary, set, or</tt> </tt>
+<a name="L495"></a><tt class="py-lineno"> 495</tt>  <tt class="py-line"><tt class="py-docstring">        similar data structure will implicitly cause it to be hashed.</tt> </tt>
+<a name="L496"></a><tt class="py-lineno"> 496</tt>  <tt class="py-line"><tt class="py-docstring">        If you do set C{ignore_hash_conflict} to True, then any</tt> </tt>
+<a name="L497"></a><tt class="py-lineno"> 497</tt>  <tt class="py-line"><tt class="py-docstring">        existing data structures that rely on C{other}'s hash staying</tt> </tt>
+<a name="L498"></a><tt class="py-lineno"> 498</tt>  <tt class="py-line"><tt class="py-docstring">        constant may become corrupted.</tt> </tt>
+<a name="L499"></a><tt class="py-lineno"> 499</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L500"></a><tt class="py-lineno"> 500</tt>  <tt class="py-line"><tt class="py-docstring">        @return: C{self}</tt> </tt>
+<a name="L501"></a><tt class="py-lineno"> 501</tt>  <tt class="py-line"><tt class="py-docstring">        @raise ValueError: If C{other} has ever been hashed.</tt> </tt>
+<a name="L502"></a><tt class="py-lineno"> 502</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L503"></a><tt class="py-lineno"> 503</tt>  <tt class="py-line">        <tt class="py-comment"># If we're already merged, then there's nothing to do.</tt> </tt>
+<a name="L504"></a><tt class="py-lineno"> 504</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt> <tt class="py-keyword">is</tt> <tt class="py-name">other</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L505"></a><tt class="py-lineno"> 505</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt> <tt class="py-keyword">is</tt> <tt class="py-name">other</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt> </tt>
+<a name="L506"></a><tt class="py-lineno"> 506</tt>  <tt class="py-line">             </tt>
+<a name="L507"></a><tt class="py-lineno"> 507</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">other</tt><tt class="py-op">.</tt><tt id="link-90" class="py-name"><a title="epydoc.apidoc.APIDoc.__has_been_hashed" class="py-name" href="#" onclick="return doclink('link-90', '__has_been_hashed', 'link-80');">__has_been_hashed</a></tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">ignore_hash_conflict</tt><tt class="py- [...]
+<a name="L508"></a><tt class="py-lineno"> 508</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"%r has already been hashed!  Merging it "</tt> </tt>
+<a name="L509"></a><tt class="py-lineno"> 509</tt>  <tt class="py-line">                             <tt class="py-string">"would cause its has value to change."</tt> <tt class="py-op">%</tt> <tt class="py-name">other</tt><tt class="py-op">)</tt> </tt>
+<a name="L510"></a><tt class="py-lineno"> 510</tt>  <tt class="py-line"> </tt>
+<a name="L511"></a><tt class="py-lineno"> 511</tt>  <tt class="py-line">        <tt class="py-comment"># If other was itself already merged with anything,</tt> </tt>
+<a name="L512"></a><tt class="py-lineno"> 512</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># then we need to merge those too.</tt> </tt>
+<a name="L513"></a><tt class="py-lineno"> 513</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">a</tt><tt class="py-op">,</tt><tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-91" class="py-name"><a title="epydoc.apidoc.APIDoc.__mergeset" class="py-name" href="#" onclick="return doclink('link-91', '__mergeset', 'link-75');">__mergeset</a></tt><tt class="py-op">,</tt [...]
+<a name="L514"></a><tt class="py-lineno"> 514</tt>  <tt class="py-line">        <tt class="py-name">mergeset</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-93" class="py-name"><a title="epydoc.apidoc.APIDoc.__mergeset" class="py-name" href="#" onclick="return doclink('link-93', '__mergeset', 'link-75');">__mergeset</a></tt> <tt class="py-keyword">or</tt> <tt class="py-op">[</tt><tt class="py-name">self</tt><tt class [...]
+<a name="L515"></a><tt class="py-lineno"> 515</tt>  <tt class="py-line">        <tt class="py-name">other</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">.</tt><tt id="link-95" class="py-name" targets="Method epydoc.docwriter.xlink.DocUrlGenerator.clear()=epydoc.docwriter.xlink.DocUrlGenerator-class.html#clear,Method epydoc.gui.GUILogger.clear()=epydoc.gui.GUILogger-class.html#clear"><a title="epydoc.docwriter.xlink.DocUrlGenerator.clear
+epydoc.gui.GUILogger.clear" class="py-name" href="#" onclick="return doclink('link-95', 'clear', 'link-95');">clear</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L516"></a><tt class="py-lineno"> 516</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt id="link-96" class="py-name"><a title="epydoc.apidoc" class="py-name" href="#" onclick="return doclink('link-96', 'apidoc', 'link-76');">apidoc</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">mergeset</tt><tt class="py-op">:</tt> </tt>
+<a name="L517"></a><tt class="py-lineno"> 517</tt>  <tt class="py-line">            <tt class="py-comment">#if apidoc is self: pass</tt> </tt>
+<a name="L518"></a><tt class="py-lineno"> 518</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt id="link-97" class="py-name"><a title="epydoc.apidoc" class="py-name" href="#" onclick="return doclink('link-97', 'apidoc', 'link-76');">apidoc</a></tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt> </tt>
+<a name="L519"></a><tt class="py-lineno"> 519</tt>  <tt class="py-line">            <tt id="link-98" class="py-name"><a title="epydoc.apidoc" class="py-name" href="#" onclick="return doclink('link-98', 'apidoc', 'link-76');">apidoc</a></tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt> </tt>
+<a name="L520"></a><tt class="py-lineno"> 520</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-99" class="py-name"><a title="epydoc.apidoc.APIDoc.__mergeset" class="py-name" href="#" onclick="return doclink('link-99', '__mergeset', 'link-75');">__mergeset</a></tt> <tt class="py-op">=</tt> <tt class="py-name">mergeset</tt> </tt>
+<a name="L521"></a><tt class="py-lineno"> 521</tt>  <tt class="py-line">        <tt class="py-comment"># Sanity chacks.</tt> </tt>
+<a name="L522"></a><tt class="py-lineno"> 522</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">assert</tt> <tt class="py-name">self</tt> <tt class="py-keyword">in</tt> <tt class="py-name">mergeset</tt> <tt class="py-keyword">and</tt> <tt class="py-name">other</tt> <tt class="py-keyword">in</tt> <tt class="py-name">mergeset</tt> </tt>
+<a name="L523"></a><tt class="py-lineno"> 523</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt id="link-100" class="py-name"><a title="epydoc.apidoc" class="py-name" href="#" onclick="return doclink('link-100', 'apidoc', 'link-76');">apidoc</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">mergeset</tt><tt class="py-op">:</tt> </tt>
+<a name="L524"></a><tt class="py-lineno"> 524</tt>  <tt class="py-line">            <tt class="py-keyword">assert</tt> <tt id="link-101" class="py-name"><a title="epydoc.apidoc" class="py-name" href="#" onclick="return doclink('link-101', 'apidoc', 'link-76');">apidoc</a></tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt> <tt class="py-keyword">is</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt> </tt>
+<a name="L525"></a><tt class="py-lineno"> 525</tt>  <tt class="py-line">        <tt class="py-comment"># Return self.</tt> </tt>
+<a name="L526"></a><tt class="py-lineno"> 526</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt> </tt>
+</div><a name="L527"></a><tt class="py-lineno"> 527</tt>  <tt class="py-line"> </tt>
+<a name="APIDoc.apidoc_links"></a><div id="APIDoc.apidoc_links-def"><a name="L528"></a><tt class="py-lineno"> 528</tt> <a class="py-toggle" href="#" id="APIDoc.apidoc_links-toggle" onclick="return toggle('APIDoc.apidoc_links');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.apidoc.APIDoc-class.html#apidoc_links">apidoc_links</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt cla [...]
+</div><div id="APIDoc.apidoc_links-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="APIDoc.apidoc_links-expanded"><a name="L529"></a><tt class="py-lineno"> 529</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L530"></a><tt class="py-lineno"> 530</tt>  <tt class="py-line"><tt class="py-docstring">        Return a list of all C{APIDoc}s that are directly linked from</tt> </tt>
+<a name="L531"></a><tt class="py-lineno"> 531</tt>  <tt class="py-line"><tt class="py-docstring">        this C{APIDoc} (i.e., are contained or pointed to by one or</tt> </tt>
+<a name="L532"></a><tt class="py-lineno"> 532</tt>  <tt class="py-line"><tt class="py-docstring">        more of this C{APIDoc}'s attributes.)</tt> </tt>
+<a name="L533"></a><tt class="py-lineno"> 533</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L534"></a><tt class="py-lineno"> 534</tt>  <tt class="py-line"><tt class="py-docstring">        Keyword argument C{filters} can be used to selectively exclude</tt> </tt>
+<a name="L535"></a><tt class="py-lineno"> 535</tt>  <tt class="py-line"><tt class="py-docstring">        certain categories of attribute value.  For example, using</tt> </tt>
+<a name="L536"></a><tt class="py-lineno"> 536</tt>  <tt class="py-line"><tt class="py-docstring">        C{includes=False} will exclude variables that were imported</tt> </tt>
+<a name="L537"></a><tt class="py-lineno"> 537</tt>  <tt class="py-line"><tt class="py-docstring">        from other modules; and C{subclasses=False} will exclude</tt> </tt>
+<a name="L538"></a><tt class="py-lineno"> 538</tt>  <tt class="py-line"><tt class="py-docstring">        subclasses.  The filter categories currently supported by</tt> </tt>
+<a name="L539"></a><tt class="py-lineno"> 539</tt>  <tt class="py-line"><tt class="py-docstring">        epydoc are:</tt> </tt>
+<a name="L540"></a><tt class="py-lineno"> 540</tt>  <tt class="py-line"><tt class="py-docstring">          - C{imports}: Imported variables.</tt> </tt>
+<a name="L541"></a><tt class="py-lineno"> 541</tt>  <tt class="py-line"><tt class="py-docstring">          - C{packages}: Containing packages for modules.</tt> </tt>
+<a name="L542"></a><tt class="py-lineno"> 542</tt>  <tt class="py-line"><tt class="py-docstring">          - C{submodules}: Contained submodules for packages.</tt> </tt>
+<a name="L543"></a><tt class="py-lineno"> 543</tt>  <tt class="py-line"><tt class="py-docstring">          - C{bases}: Bases for classes.</tt> </tt>
+<a name="L544"></a><tt class="py-lineno"> 544</tt>  <tt class="py-line"><tt class="py-docstring">          - C{subclasses}: Subclasses for classes.</tt> </tt>
+<a name="L545"></a><tt class="py-lineno"> 545</tt>  <tt class="py-line"><tt class="py-docstring">          - C{variables}: All variables.</tt> </tt>
+<a name="L546"></a><tt class="py-lineno"> 546</tt>  <tt class="py-line"><tt class="py-docstring">          - C{private}: Private variables.</tt> </tt>
+<a name="L547"></a><tt class="py-lineno"> 547</tt>  <tt class="py-line"><tt class="py-docstring">          - C{overrides}: Points from class variables to the variables</tt> </tt>
+<a name="L548"></a><tt class="py-lineno"> 548</tt>  <tt class="py-line"><tt class="py-docstring">            they override.  This filter is False by default.</tt> </tt>
+<a name="L549"></a><tt class="py-lineno"> 549</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L550"></a><tt class="py-lineno"> 550</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+</div></div><a name="L551"></a><tt class="py-lineno"> 551</tt>  <tt class="py-line"> </tt>
+<a name="reachable_valdocs"></a><div id="reachable_valdocs-def"><a name="L552"></a><tt class="py-lineno"> 552</tt> <a class="py-toggle" href="#" id="reachable_valdocs-toggle" onclick="return toggle('reachable_valdocs');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.apidoc-module.html#reachable_valdocs">reachable_valdocs</a><tt class="py-op">(</tt><tt class="py-param">root</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-p [...]
+</div><div id="reachable_valdocs-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="reachable_valdocs-expanded"><a name="L553"></a><tt class="py-lineno"> 553</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L554"></a><tt class="py-lineno"> 554</tt>  <tt class="py-line"><tt class="py-docstring">    Return a list of all C{ValueDoc}s that can be reached, directly or</tt> </tt>
+<a name="L555"></a><tt class="py-lineno"> 555</tt>  <tt class="py-line"><tt class="py-docstring">    indirectly from the given root list of C{ValueDoc}s.</tt> </tt>
+<a name="L556"></a><tt class="py-lineno"> 556</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L557"></a><tt class="py-lineno"> 557</tt>  <tt class="py-line"><tt class="py-docstring">    @param filters: A set of filters that can be used to prevent</tt> </tt>
+<a name="L558"></a><tt class="py-lineno"> 558</tt>  <tt class="py-line"><tt class="py-docstring">        C{reachable_valdocs} from following specific link types when</tt> </tt>
+<a name="L559"></a><tt class="py-lineno"> 559</tt>  <tt class="py-line"><tt class="py-docstring">        looking for C{ValueDoc}s that can be reached from the root</tt> </tt>
+<a name="L560"></a><tt class="py-lineno"> 560</tt>  <tt class="py-line"><tt class="py-docstring">        set.  See C{APIDoc.apidoc_links} for a more complete</tt> </tt>
+<a name="L561"></a><tt class="py-lineno"> 561</tt>  <tt class="py-line"><tt class="py-docstring">        description.</tt> </tt>
+<a name="L562"></a><tt class="py-lineno"> 562</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L563"></a><tt class="py-lineno"> 563</tt>  <tt class="py-line">    <tt class="py-name">apidoc_queue</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">root</tt><tt class="py-op">)</tt> </tt>
+<a name="L564"></a><tt class="py-lineno"> 564</tt>  <tt class="py-line">    <tt class="py-name">val_set</tt> <tt class="py-op">=</tt> <tt class="py-name">set</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L565"></a><tt class="py-lineno"> 565</tt>  <tt class="py-line">    <tt class="py-name">var_set</tt> <tt class="py-op">=</tt> <tt class="py-name">set</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L566"></a><tt class="py-lineno"> 566</tt>  <tt class="py-line">    <tt class="py-keyword">while</tt> <tt class="py-name">apidoc_queue</tt><tt class="py-op">:</tt> </tt>
+<a name="L567"></a><tt class="py-lineno"> 567</tt>  <tt class="py-line">        <tt class="py-name">api_doc</tt> <tt class="py-op">=</tt> <tt class="py-name">apidoc_queue</tt><tt class="py-op">.</tt><tt class="py-name">pop</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L568"></a><tt class="py-lineno"> 568</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt id="link-102" class="py-name" targets="Class epydoc.apidoc.ValueDoc=epydoc.apidoc.ValueDoc-class.html"><a title="epydoc.apidoc.ValueDoc" class="py-name" href="#" onclick="return doclink('link-102', 'ValueDoc', 'link-102');">ValueDoc</a></tt><tt class="py-op">)< [...]
+<a name="L569"></a><tt class="py-lineno"> 569</tt>  <tt class="py-line">            <tt class="py-name">val_set</tt><tt class="py-op">.</tt><tt class="py-name">add</tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">)</tt> </tt>
+<a name="L570"></a><tt class="py-lineno"> 570</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L571"></a><tt class="py-lineno"> 571</tt>  <tt class="py-line">            <tt class="py-name">var_set</tt><tt class="py-op">.</tt><tt class="py-name">add</tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">)</tt> </tt>
+<a name="L572"></a><tt class="py-lineno"> 572</tt>  <tt class="py-line">        <tt class="py-name">apidoc_queue</tt><tt class="py-op">.</tt><tt class="py-name">extend</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt id="link-103" class="py-name" targets="Variable epydoc.markup.restructuredtext._EpydocReader.v=epydoc.markup.restructuredtext._EpydocReader-class.html#v"><a title="epydoc.markup.restructuredtext._EpydocReader.v" class="py-name" href="#" onclick="return doclink('link-1 [...]
+epydoc.apidoc.ClassDoc.apidoc_links
+epydoc.apidoc.ModuleDoc.apidoc_links
+epydoc.apidoc.NamespaceDoc.apidoc_links
+epydoc.apidoc.PropertyDoc.apidoc_links
+epydoc.apidoc.ValueDoc.apidoc_links
+epydoc.apidoc.VariableDoc.apidoc_links" class="py-name" href="#" onclick="return doclink('link-105', 'apidoc_links', 'link-105');">apidoc_links</a></tt><tt class="py-op">(</tt><tt class="py-op">**</tt><tt class="py-name">filters</tt><tt class="py-op">)</tt> </tt>
+<a name="L573"></a><tt class="py-lineno"> 573</tt>  <tt class="py-line">                             <tt class="py-keyword">if</tt> <tt id="link-106" class="py-name"><a title="epydoc.markup.restructuredtext._EpydocReader.v" class="py-name" href="#" onclick="return doclink('link-106', 'v', 'link-103');">v</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">val_set</tt> <tt class="py-keyword">and</tt> <tt id="link-107" class="py-name"><a title="epydo [...]
+<a name="L574"></a><tt class="py-lineno"> 574</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">val_set</tt> </tt>
+</div><a name="L575"></a><tt class="py-lineno"> 575</tt>  <tt class="py-line"> </tt>
+<a name="L576"></a><tt class="py-lineno"> 576</tt>  <tt class="py-line"><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L577"></a><tt class="py-lineno"> 577</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Variable Documentation Objects</tt> </tt>
+<a name="L578"></a><tt class="py-lineno"> 578</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L579"></a><tt class="py-lineno"> 579</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="VariableDoc"></a><div id="VariableDoc-def"><a name="L580"></a><tt class="py-lineno"> 580</tt> <a class="py-toggle" href="#" id="VariableDoc-toggle" onclick="return toggle('VariableDoc');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="epydoc.apidoc.VariableDoc-class.html">VariableDoc</a><tt class="py-op">(</tt><tt class="py-base-class">APIDoc</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="VariableDoc-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="VariableDoc-expanded"><a name="L581"></a><tt class="py-lineno"> 581</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L582"></a><tt class="py-lineno"> 582</tt>  <tt class="py-line"><tt class="py-docstring">    API documentation information about a single Python variable.</tt> </tt>
+<a name="L583"></a><tt class="py-lineno"> 583</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L584"></a><tt class="py-lineno"> 584</tt>  <tt class="py-line"><tt class="py-docstring">    @note: The only time a C{VariableDoc} will have its own docstring</tt> </tt>
+<a name="L585"></a><tt class="py-lineno"> 585</tt>  <tt class="py-line"><tt class="py-docstring">    is if that variable was created using an assignment statement, and</tt> </tt>
+<a name="L586"></a><tt class="py-lineno"> 586</tt>  <tt class="py-line"><tt class="py-docstring">    that assignment statement had a docstring-comment or was followed</tt> </tt>
+<a name="L587"></a><tt class="py-lineno"> 587</tt>  <tt class="py-line"><tt class="py-docstring">    by a pseudo-docstring.</tt> </tt>
+<a name="L588"></a><tt class="py-lineno"> 588</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L589"></a><tt class="py-lineno"> 589</tt>  <tt class="py-line">    <tt class="py-comment">#{ Basic Variable Information</tt> </tt>
+<a name="L590"></a><tt class="py-lineno"> 590</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-108" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-108', 'name', 'link-36');">name</a></tt> <tt class="py-op">=</tt> <tt id="link-109" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-109', 'UNKNOWN', 'link-39');">UNKNOWN</a></tt> </tt>
+<a name="L591"></a><tt class="py-lineno"> 591</tt>  <tt class="py-line">    <tt class="py-string">"""@ivar: The name of this variable in its containing namespace.</tt> </tt>
+<a name="L592"></a><tt class="py-lineno"> 592</tt>  <tt class="py-line"><tt class="py-string">       @type: C{str}"""</tt> </tt>
+<a name="L593"></a><tt class="py-lineno"> 593</tt>  <tt class="py-line">     </tt>
+<a name="L594"></a><tt class="py-lineno"> 594</tt>  <tt class="py-line">    <tt id="link-110" class="py-name" targets="Method epydoc.apidoc.DocIndex.container()=epydoc.apidoc.DocIndex-class.html#container,Method epydoc.apidoc.DottedName.container()=epydoc.apidoc.DottedName-class.html#container,Variable epydoc.apidoc.VariableDoc.container=epydoc.apidoc.VariableDoc-class.html#container"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-110', 'container', 'link-110');">container</a></tt> <tt class="py-op">=</tt> <tt id="link-111" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-111', 'UNKNOWN', 'link-39');">UNKNOWN</a></tt> </tt>
+<a name="L595"></a><tt class="py-lineno"> 595</tt>  <tt class="py-line">    <tt class="py-string">"""@ivar: API documentation for the namespace that contains this</tt> </tt>
+<a name="L596"></a><tt class="py-lineno"> 596</tt>  <tt class="py-line"><tt class="py-string">       variable.</tt> </tt>
+<a name="L597"></a><tt class="py-lineno"> 597</tt>  <tt class="py-line"><tt class="py-string">       @type: L{ValueDoc}"""</tt> </tt>
+<a name="L598"></a><tt class="py-lineno"> 598</tt>  <tt class="py-line">     </tt>
+<a name="L599"></a><tt class="py-lineno"> 599</tt>  <tt class="py-line">    <tt id="link-112" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-112', 'canonical_name', 'link-83');">canonical_name</a></tt> <tt class="py-op">=</tt> <tt id="link-113" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-113', 'UNKNOWN', 'link-39');">UNKNOWN</a></tt> </tt>
+<a name="L600"></a><tt class="py-lineno"> 600</tt>  <tt class="py-line">    <tt class="py-string">"""@ivar: A dotted name that serves as a unique identifier for</tt> </tt>
+<a name="L601"></a><tt class="py-lineno"> 601</tt>  <tt class="py-line"><tt class="py-string">       this C{VariableDoc}.  It should be formed by concatenating</tt> </tt>
+<a name="L602"></a><tt class="py-lineno"> 602</tt>  <tt class="py-line"><tt class="py-string">       the C{VariableDoc}'s C{container} with its C{name}.</tt> </tt>
+<a name="L603"></a><tt class="py-lineno"> 603</tt>  <tt class="py-line"><tt class="py-string">       @type: L{DottedName}"""</tt> </tt>
+<a name="L604"></a><tt class="py-lineno"> 604</tt>  <tt class="py-line"> </tt>
+<a name="L605"></a><tt class="py-lineno"> 605</tt>  <tt class="py-line">    <tt id="link-114" class="py-name" targets="Variable epydoc.apidoc.VariableDoc.value=epydoc.apidoc.VariableDoc-class.html#value"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-114', 'value', 'link-114');">value</a></tt> <tt class="py-op">=</tt> <tt id="link-115" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link [...]
+<a name="L606"></a><tt class="py-lineno"> 606</tt>  <tt class="py-line">    <tt class="py-string">"""@ivar: The API documentation for this variable's value.</tt> </tt>
+<a name="L607"></a><tt class="py-lineno"> 607</tt>  <tt class="py-line"><tt class="py-string">       @type: L{ValueDoc}"""</tt> </tt>
+<a name="L608"></a><tt class="py-lineno"> 608</tt>  <tt class="py-line">    <tt class="py-comment">#}</tt> </tt>
+<a name="L609"></a><tt class="py-lineno"> 609</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L610"></a><tt class="py-lineno"> 610</tt>  <tt class="py-line">    <tt class="py-comment">#{ Information Extracted from Docstrings</tt> </tt>
+<a name="L611"></a><tt class="py-lineno"> 611</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-116" class="py-name" targets="Variable epydoc.apidoc.PropertyDoc.type_descr=epydoc.apidoc.PropertyDoc-class.html#type_descr,Variable epydoc.apidoc.VariableDoc.type_descr=epydoc.apidoc.VariableDoc-class.html#type_descr,Method epydoc.docwriter.html.HTMLWriter.type_descr()=epydoc.docwriter.html.HTMLWriter-class.html#type_descr"><a title="epydoc.apidoc.PropertyDoc.type_descr
+epydoc.apidoc.VariableDoc.type_descr
+epydoc.docwriter.html.HTMLWriter.type_descr" class="py-name" href="#" onclick="return doclink('link-116', 'type_descr', 'link-116');">type_descr</a></tt> <tt class="py-op">=</tt> <tt id="link-117" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-117', 'UNKNOWN', 'link-39');">UNKNOWN</a></tt>  </tt>
+<a name="L612"></a><tt class="py-lineno"> 612</tt>  <tt class="py-line">    <tt class="py-string">"""@ivar: A description of the variable's expected type, extracted from</tt> </tt>
+<a name="L613"></a><tt class="py-lineno"> 613</tt>  <tt class="py-line"><tt class="py-string">       its docstring.</tt> </tt>
+<a name="L614"></a><tt class="py-lineno"> 614</tt>  <tt class="py-line"><tt class="py-string">       @type: L{ParsedDocstring<epydoc.markup.ParsedDocstring>}"""</tt> </tt>
+<a name="L615"></a><tt class="py-lineno"> 615</tt>  <tt class="py-line">    <tt class="py-comment">#} end of "information extracted from docstrings" group</tt> </tt>
+<a name="L616"></a><tt class="py-lineno"> 616</tt>  <tt class="py-line"><tt class="py-comment"></tt>     </tt>
+<a name="L617"></a><tt class="py-lineno"> 617</tt>  <tt class="py-line">    <tt class="py-comment">#{ Information about Imported Variables</tt> </tt>
+<a name="L618"></a><tt class="py-lineno"> 618</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-118" class="py-name" targets="Variable epydoc.apidoc.VariableDoc.imported_from=epydoc.apidoc.VariableDoc-class.html#imported_from"><a title="epydoc.apidoc.VariableDoc.imported_from" class="py-name" href="#" onclick="return doclink('link-118', 'imported_from', 'link-118');">imported_from</a></tt> <tt class="py-op">=</tt> <tt id="link-119" class="py-name"><a title="epydoc.ap [...]
+<a name="L619"></a><tt class="py-lineno"> 619</tt>  <tt class="py-line">    <tt class="py-string">"""@ivar: The fully qualified dotted name of the variable that this</tt> </tt>
+<a name="L620"></a><tt class="py-lineno"> 620</tt>  <tt class="py-line"><tt class="py-string">       variable's value was imported from.  This attribute should only</tt> </tt>
+<a name="L621"></a><tt class="py-lineno"> 621</tt>  <tt class="py-line"><tt class="py-string">       be defined if C{is_instvar} is true.</tt> </tt>
+<a name="L622"></a><tt class="py-lineno"> 622</tt>  <tt class="py-line"><tt class="py-string">       @type: L{DottedName}"""</tt> </tt>
+<a name="L623"></a><tt class="py-lineno"> 623</tt>  <tt class="py-line"> </tt>
+<a name="L624"></a><tt class="py-lineno"> 624</tt>  <tt class="py-line">    <tt id="link-120" class="py-name" targets="Variable epydoc.apidoc.VariableDoc.is_imported=epydoc.apidoc.VariableDoc-class.html#is_imported"><a title="epydoc.apidoc.VariableDoc.is_imported" class="py-name" href="#" onclick="return doclink('link-120', 'is_imported', 'link-120');">is_imported</a></tt> <tt class="py-op">=</tt> <tt id="link-121" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" [...]
+<a name="L625"></a><tt class="py-lineno"> 625</tt>  <tt class="py-line">    <tt class="py-string">"""@ivar: Was this variable's value imported from another module?</tt> </tt>
+<a name="L626"></a><tt class="py-lineno"> 626</tt>  <tt class="py-line"><tt class="py-string">       (Exception: variables that are explicitly included in __all__ have</tt> </tt>
+<a name="L627"></a><tt class="py-lineno"> 627</tt>  <tt class="py-line"><tt class="py-string">       C{is_imported} set to C{False}, even if they are in fact</tt> </tt>
+<a name="L628"></a><tt class="py-lineno"> 628</tt>  <tt class="py-line"><tt class="py-string">       imported.)</tt> </tt>
+<a name="L629"></a><tt class="py-lineno"> 629</tt>  <tt class="py-line"><tt class="py-string">       @type: C{bool}"""</tt> </tt>
+<a name="L630"></a><tt class="py-lineno"> 630</tt>  <tt class="py-line">    <tt class="py-comment">#} end of "information about imported variables" group</tt> </tt>
+<a name="L631"></a><tt class="py-lineno"> 631</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L632"></a><tt class="py-lineno"> 632</tt>  <tt class="py-line">    <tt class="py-comment">#{ Information about Variables in Classes</tt> </tt>
+<a name="L633"></a><tt class="py-lineno"> 633</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-122" class="py-name" targets="Variable epydoc.apidoc.VariableDoc.is_instvar=epydoc.apidoc.VariableDoc-class.html#is_instvar"><a title="epydoc.apidoc.VariableDoc.is_instvar" class="py-name" href="#" onclick="return doclink('link-122', 'is_instvar', 'link-122');">is_instvar</a></tt> <tt class="py-op">=</tt> <tt id="link-123" class="py-name"><a title="epydoc.apidoc.UNKNOWN" c [...]
+<a name="L634"></a><tt class="py-lineno"> 634</tt>  <tt class="py-line">    <tt class="py-string">"""@ivar: If true, then this variable is an instance variable; if false,</tt> </tt>
+<a name="L635"></a><tt class="py-lineno"> 635</tt>  <tt class="py-line"><tt class="py-string">       then this variable is a class variable.  This attribute should</tt> </tt>
+<a name="L636"></a><tt class="py-lineno"> 636</tt>  <tt class="py-line"><tt class="py-string">       only be defined if the containing namespace is a class    </tt> </tt>
+<a name="L637"></a><tt class="py-lineno"> 637</tt>  <tt class="py-line"><tt class="py-string">       @type: C{bool}"""</tt> </tt>
+<a name="L638"></a><tt class="py-lineno"> 638</tt>  <tt class="py-line">     </tt>
+<a name="L639"></a><tt class="py-lineno"> 639</tt>  <tt class="py-line">    <tt id="link-124" class="py-name" targets="Variable epydoc.apidoc.VariableDoc.overrides=epydoc.apidoc.VariableDoc-class.html#overrides"><a title="epydoc.apidoc.VariableDoc.overrides" class="py-name" href="#" onclick="return doclink('link-124', 'overrides', 'link-124');">overrides</a></tt> <tt class="py-op">=</tt> <tt id="link-125" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick=" [...]
+<a name="L640"></a><tt class="py-lineno"> 640</tt>  <tt class="py-line">    <tt class="py-string">"""@ivar: The API documentation for the variable that is overridden by</tt> </tt>
+<a name="L641"></a><tt class="py-lineno"> 641</tt>  <tt class="py-line"><tt class="py-string">       this variable.  This attribute should only be defined if the</tt> </tt>
+<a name="L642"></a><tt class="py-lineno"> 642</tt>  <tt class="py-line"><tt class="py-string">       containing namespace is a class.</tt> </tt>
+<a name="L643"></a><tt class="py-lineno"> 643</tt>  <tt class="py-line"><tt class="py-string">       @type: L{VariableDoc}"""</tt> </tt>
+<a name="L644"></a><tt class="py-lineno"> 644</tt>  <tt class="py-line">    <tt class="py-comment">#} end of "information about variables in classes" group</tt> </tt>
+<a name="L645"></a><tt class="py-lineno"> 645</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L646"></a><tt class="py-lineno"> 646</tt>  <tt class="py-line">    <tt class="py-comment">#{ Flags</tt> </tt>
+<a name="L647"></a><tt class="py-lineno"> 647</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-126" class="py-name" targets="Variable epydoc.apidoc.VariableDoc.is_alias=epydoc.apidoc.VariableDoc-class.html#is_alias"><a title="epydoc.apidoc.VariableDoc.is_alias" class="py-name" href="#" onclick="return doclink('link-126', 'is_alias', 'link-126');">is_alias</a></tt> <tt class="py-op">=</tt> <tt id="link-127" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-n [...]
+<a name="L648"></a><tt class="py-lineno"> 648</tt>  <tt class="py-line">    <tt class="py-string">"""@ivar: Is this variable an alias for another variable with the same</tt> </tt>
+<a name="L649"></a><tt class="py-lineno"> 649</tt>  <tt class="py-line"><tt class="py-string">       value?  If so, then this variable will be dispreferred when</tt> </tt>
+<a name="L650"></a><tt class="py-lineno"> 650</tt>  <tt class="py-line"><tt class="py-string">       assigning canonical names.</tt> </tt>
+<a name="L651"></a><tt class="py-lineno"> 651</tt>  <tt class="py-line"><tt class="py-string">       @type: C{bool}"""</tt> </tt>
+<a name="L652"></a><tt class="py-lineno"> 652</tt>  <tt class="py-line">     </tt>
+<a name="L653"></a><tt class="py-lineno"> 653</tt>  <tt class="py-line">    <tt id="link-128" class="py-name" targets="Variable epydoc.apidoc.VariableDoc.is_public=epydoc.apidoc.VariableDoc-class.html#is_public"><a title="epydoc.apidoc.VariableDoc.is_public" class="py-name" href="#" onclick="return doclink('link-128', 'is_public', 'link-128');">is_public</a></tt> <tt class="py-op">=</tt> <tt id="link-129" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick=" [...]
+<a name="L654"></a><tt class="py-lineno"> 654</tt>  <tt class="py-line">    <tt class="py-string">"""@ivar: Is this variable part of its container's public API?</tt> </tt>
+<a name="L655"></a><tt class="py-lineno"> 655</tt>  <tt class="py-line"><tt class="py-string">       @type: C{bool}"""</tt> </tt>
+<a name="L656"></a><tt class="py-lineno"> 656</tt>  <tt class="py-line">    <tt class="py-comment">#} end of "flags" group</tt> </tt>
+<a name="L657"></a><tt class="py-lineno"> 657</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="VariableDoc.__init__"></a><div id="VariableDoc.__init__-def"><a name="L658"></a><tt class="py-lineno"> 658</tt> <a class="py-toggle" href="#" id="VariableDoc.__init__-toggle" onclick="return toggle('VariableDoc.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.apidoc.VariableDoc-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt cl [...]
+</div><div id="VariableDoc.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="VariableDoc.__init__-expanded"><a name="L659"></a><tt class="py-lineno"> 659</tt>  <tt class="py-line">        <tt id="link-130" class="py-name"><a title="epydoc.apidoc.APIDoc" class="py-name" href="#" onclick="return doclink('link-130', 'APIDoc', 'link-82');">APIDoc</a></tt><tt class="py-op">.</tt><tt id="link-131" class="py-name"><a title="epydoc.apidoc.APIDoc.__init__
+epydoc.apidoc.DocIndex.__init__
+epydoc.apidoc.DottedName.__init__
+epydoc.apidoc.NamespaceDoc.__init__
+epydoc.apidoc.VariableDoc.__init__
+epydoc.apidoc._Sentinel.__init__
+epydoc.checker.DocChecker.__init__
+epydoc.cli.ConsoleLogger.__init__
+epydoc.cli.HTMLLogger.__init__
+epydoc.cli.TerminalController.__init__
+epydoc.cli.UnifiedProgressConsoleLogger.__init__
+epydoc.docbuilder.BuildOptions.__init__
+epydoc.docbuilder._ProgressEstimator.__init__
+epydoc.docintrospecter._DevNull.__init__
+epydoc.docstringparser.DocstringField.__init__
+epydoc.docwriter.dotgraph.DotGraph.__init__
+epydoc.docwriter.dotgraph.DotGraphEdge.__init__
+epydoc.docwriter.dotgraph.DotGraphNode.__init__
+epydoc.docwriter.dotgraph.DotGraphUmlClassNode.__init__
+epydoc.docwriter.dotgraph.DotGraphUmlModuleNode.__init__
+epydoc.docwriter.html.HTMLWriter.__init__
+epydoc.docwriter.html._HTMLDocstringLinker.__init__
+epydoc.docwriter.html_colorize.PythonSourceColorizer.__init__
+epydoc.docwriter.latex.LatexWriter.__init__
+epydoc.docwriter.xlink.ApiLinkReader.__init__
+epydoc.docwriter.xlink.DocUrlGenerator.__init__
+epydoc.gui.EpydocGUI.__init__
+epydoc.gui.GUILogger.__init__
+epydoc.log.SimpleLogger.__init__
+epydoc.markup.ConcatenatedDocstring.__init__
+epydoc.markup.Field.__init__
+epydoc.markup.ParseError.__init__
+epydoc.markup.epytext.ColorizingError.__init__
+epydoc.markup.epytext.Element.__init__
+epydoc.markup.epytext.ParsedEpytextDocstring.__init__
+epydoc.markup.epytext.Token.__init__
+epydoc.markup.javadoc.ParsedJavadocDocstring.__init__
+epydoc.markup.plaintext.ParsedPlaintextDocstring.__init__
+epydoc.markup.pyval_repr.ColorizedPyvalRepr.__init__
+epydoc.markup.pyval_repr.PyvalColorizer.__init__
+epydoc.markup.pyval_repr._ColorizerState.__init__
+epydoc.markup.restructuredtext.ParsedRstDocstring.__init__
+epydoc.markup.restructuredtext._DocumentPseudoWriter.__init__
+epydoc.markup.restructuredtext._EpydocHTMLTranslator.__init__
+epydoc.markup.restructuredtext._EpydocLaTeXTranslator.__init__
+epydoc.markup.restructuredtext._EpydocReader.__init__
+epydoc.markup.restructuredtext._SplitFieldsTranslator.__init__
+epydoc.markup.restructuredtext._SummaryExtractor.__init__
+epydoc.markup.restructuredtext._TermsExtractor.__init__
+epydoc.markup.restructuredtext.dotgraph.__init__
+epydoc.util.RunSubprocessError.__init__" class="py-name" href="#" onclick="return doclink('link-131', '__init__', 'link-79');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-name">kwargs</tt><tt class="py-op">)</tt> </tt>
+<a name="L660"></a><tt class="py-lineno"> 660</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-132" class="py-name"><a title="epydoc.apidoc.VariableDoc.is_public" class="py-name" href="#" onclick="return doclink('link-132', 'is_public', 'link-128');">is_public</a></tt> <tt class="py-keyword">is</tt> <tt id="link-133" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return d [...]
+<a name="L661"></a><tt class="py-lineno"> 661</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-136" class="py-name"><a title="epydoc.apidoc.VariableDoc.is_public" class="py-name" href="#" onclick="return doclink('link-136', 'is_public', 'link-128');">is_public</a></tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-137" class="py-name" [...]
+<a name="L662"></a><tt class="py-lineno"> 662</tt>  <tt class="py-line">                              <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-138" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-138', 'name', 'link-36');">name</a></tt><tt class="py-op">.</tt><tt class="py-name">endswith</tt><tt class="py-op">(</tt><tt class="py-string">'_'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L663"></a><tt class="py-lineno"> 663</tt>  <tt class="py-line">         </tt>
+<a name="VariableDoc.__repr__"></a><div id="VariableDoc.__repr__-def"><a name="L664"></a><tt class="py-lineno"> 664</tt> <a class="py-toggle" href="#" id="VariableDoc.__repr__-toggle" onclick="return toggle('VariableDoc.__repr__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.apidoc.VariableDoc-class.html#__repr__">__repr__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="VariableDoc.__repr__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="VariableDoc.__repr__-expanded"><a name="L665"></a><tt class="py-lineno"> 665</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-139" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-139', 'canonical_name', 'link-83');">canonical_name</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt id="link-140" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-140', 'UNKNOWN', 'link-39');">UNKNOWN</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L666"></a><tt class="py-lineno"> 666</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">'<%s %s>'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-141" class="py-name"><a title="epydoc.apidoc.G [...]
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-141', 'canonical_name', 'link-83');">canonical_name</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L667"></a><tt class="py-lineno"> 667</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-142" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-142', 'name', 'link-36');">name</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt id="link-143" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" o [...]
+<a name="L668"></a><tt class="py-lineno"> 668</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">'<%s %s>'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-144" class="py-name"><a title="epydoc.apidoc.V [...]
+<a name="L669"></a><tt class="py-lineno"> 669</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt>                      </tt>
+<a name="L670"></a><tt class="py-lineno"> 670</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">'<%s>'</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt> </tt>
+</div><a name="L671"></a><tt class="py-lineno"> 671</tt>  <tt class="py-line"> </tt>
+<a name="VariableDoc._get_defining_module"></a><div id="VariableDoc._get_defining_module-def"><a name="L672"></a><tt class="py-lineno"> 672</tt> <a class="py-toggle" href="#" id="VariableDoc._get_defining_module-toggle" onclick="return toggle('VariableDoc._get_defining_module');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.apidoc.VariableDoc-class.html#_get_defining_module">_get_defining_module</a><tt class="py-op">(</tt><tt class="py- [...]
+</div><div id="VariableDoc._get_defining_module-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="VariableDoc._get_defining_module-expanded"><a name="L673"></a><tt class="py-lineno"> 673</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-145" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-145', 'container', 'link-110');">container</a></tt> <tt class="py-keyword">is</tt> <tt id="link-146" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-146', 'UNKNOWN', 'link-39');">UNKNOWN</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L674"></a><tt class="py-lineno"> 674</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt id="link-147" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-147', 'UNKNOWN', 'link-39');">UNKNOWN</a></tt> </tt>
+<a name="L675"></a><tt class="py-lineno"> 675</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-148" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-148', 'container', 'link-110');">container</a></tt><tt class="py-op">.</tt><tt id="link-149" class="py-name" targets="Variable epydoc.apidoc.ValueDoc.defining_module=epydoc.apidoc.ValueDoc-class.html#defining_module,Variable epydoc.apidoc.VariableDoc.defining_module=epydoc.apidoc.VariableDoc-class.html#defining_module"><a title="epydoc.apidoc.ValueDoc.defining_module
+epydoc.apidoc.VariableDoc.defining_module" class="py-name" href="#" onclick="return doclink('link-149', 'defining_module', 'link-149');">defining_module</a></tt> </tt>
+</div><a name="L676"></a><tt class="py-lineno"> 676</tt>  <tt class="py-line">    <tt id="link-150" class="py-name"><a title="epydoc.apidoc.ValueDoc.defining_module
+epydoc.apidoc.VariableDoc.defining_module" class="py-name" href="#" onclick="return doclink('link-150', 'defining_module', 'link-149');">defining_module</a></tt> <tt class="py-op">=</tt> <tt class="py-name">property</tt><tt class="py-op">(</tt><tt id="link-151" class="py-name" targets="Method epydoc.apidoc.VariableDoc._get_defining_module()=epydoc.apidoc.VariableDoc-class.html#_get_defining_module"><a title="epydoc.apidoc.VariableDoc._get_defining_module" class="py-name" href="#" onclick [...]
+<a name="L677"></a><tt class="py-lineno"> 677</tt>  <tt class="py-line"><tt class="py-string">    A read-only property that can be used to get the variable's</tt> </tt>
+<a name="L678"></a><tt class="py-lineno"> 678</tt>  <tt class="py-line"><tt class="py-string">    defining module.  This is defined as the defining module</tt> </tt>
+<a name="L679"></a><tt class="py-lineno"> 679</tt>  <tt class="py-line"><tt class="py-string">    of the variable's container."""</tt><tt class="py-op">)</tt> </tt>
+<a name="L680"></a><tt class="py-lineno"> 680</tt>  <tt class="py-line"> </tt>
+<a name="VariableDoc.apidoc_links"></a><div id="VariableDoc.apidoc_links-def"><a name="L681"></a><tt class="py-lineno"> 681</tt> <a class="py-toggle" href="#" id="VariableDoc.apidoc_links-toggle" onclick="return toggle('VariableDoc.apidoc_links');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.apidoc.VariableDoc-class.html#apidoc_links">apidoc_links</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt cla [...]
+</div><div id="VariableDoc.apidoc_links-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="VariableDoc.apidoc_links-expanded"><a name="L682"></a><tt class="py-lineno"> 682</tt>  <tt class="py-line">        <tt class="py-comment"># nb: overrides filter is *False* by default.</tt> </tt>
+<a name="L683"></a><tt class="py-lineno"> 683</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">filters</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'overrides'</tt><tt class="py-op">,</tt> <tt class="py-name">False</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L684"></a><tt class="py-lineno"> 684</tt>  <tt class="py-line">            <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-152" class="py-name"><a title="epydoc.apidoc.VariableDoc.overrides" class="py-name" href="#" onclick="return doclink('link-152', 'overrides', 'link-124');">overrides</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <t [...]
+<a name="L685"></a><tt class="py-lineno"> 685</tt>  <tt class="py-line">            <tt id="link-154" class="py-name"><a title="epydoc.apidoc.VariableDoc.overrides" class="py-name" href="#" onclick="return doclink('link-154', 'overrides', 'link-124');">overrides</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-155" class="py-name"><a title="epydoc.apidoc.VariableDoc.overrides" class="py-name" href="#" onclick="ret [...]
+<a name="L686"></a><tt class="py-lineno"> 686</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L687"></a><tt class="py-lineno"> 687</tt>  <tt class="py-line">            <tt id="link-156" class="py-name"><a title="epydoc.apidoc.VariableDoc.overrides" class="py-name" href="#" onclick="return doclink('link-156', 'overrides', 'link-124');">overrides</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L688"></a><tt class="py-lineno"> 688</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-157" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-157', 'value', 'link-114');">value</a></tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-158" class="py-name"><a title= [...]
+<a name="L689"></a><tt class="py-lineno"> 689</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">+</tt><tt id="link-159" class="py-name"><a title="epydoc.apidoc.VariableDoc.overrides" class="py-name" href="#" onclick="return doclink('link-159', 'overrides', 'link-124');">overrides</a></tt> </tt>
+<a name="L690"></a><tt class="py-lineno"> 690</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L691"></a><tt class="py-lineno"> 691</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-160" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-160', 'value', 'link-114');">value</a></tt><tt class="py-op">]</tt><tt class="py-op">+</tt><tt id="link-161" class="py-name"><a title="epydoc.apidoc.VariableDoc.ove [...]
+</div><a name="L692"></a><tt class="py-lineno"> 692</tt>  <tt class="py-line"> </tt>
+<a name="VariableDoc.is_detailed"></a><div id="VariableDoc.is_detailed-def"><a name="L693"></a><tt class="py-lineno"> 693</tt> <a class="py-toggle" href="#" id="VariableDoc.is_detailed-toggle" onclick="return toggle('VariableDoc.is_detailed');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.apidoc.VariableDoc-class.html#is_detailed">is_detailed</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py- [...]
+</div><div id="VariableDoc.is_detailed-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="VariableDoc.is_detailed-expanded"><a name="L694"></a><tt class="py-lineno"> 694</tt>  <tt class="py-line">        <tt class="py-name">pval</tt> <tt class="py-op">=</tt> <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-162" class="py-name" targets="Class epydoc.apidoc.VariableDoc=epydoc.apidoc.VariableDoc-class.html"><a title="epydoc.apidoc.VariableDoc" cla [...]
+epydoc.apidoc.GenericValueDoc.is_detailed
+epydoc.apidoc.NamespaceDoc.is_detailed
+epydoc.apidoc.PropertyDoc.is_detailed
+epydoc.apidoc.RoutineDoc.is_detailed
+epydoc.apidoc.VariableDoc.is_detailed" class="py-name" href="#" onclick="return doclink('link-163', 'is_detailed', 'link-163');">is_detailed</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L695"></a><tt class="py-lineno"> 695</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">pval</tt> <tt class="py-keyword">or</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-164" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-164', 'value', 'link-114');">value</a></tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt cla [...]
+<a name="L696"></a><tt class="py-lineno"> 696</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">pval</tt> </tt>
+<a name="L697"></a><tt class="py-lineno"> 697</tt>  <tt class="py-line"> </tt>
+<a name="L698"></a><tt class="py-lineno"> 698</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-166" class="py-name"><a title="epydoc.apidoc.VariableDoc.overrides" class="py-name" href="#" onclick="return doclink('link-166', 'overrides', 'link-124');">overrides</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt> [...]
+<a name="L699"></a><tt class="py-lineno"> 699</tt>  <tt class="py-line">            <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-168" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-168', 'value', 'link-114');">value</a></tt><tt class="py-op">,</tt> <tt id="link-169" class="py-name" targets="Class epydoc.apidoc.RoutineDoc=epydoc.apidoc.RoutineD [...]
+<a name="L700"></a><tt class="py-lineno"> 700</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
+<a name="L701"></a><tt class="py-lineno"> 701</tt>  <tt class="py-line"> </tt>
+<a name="L702"></a><tt class="py-lineno"> 702</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-170" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-170', 'value', 'link-114');">value</a></tt><tt class="py-op">,</tt> <tt id="link-171" class="py-name" targets="Class epydoc.apidoc.Generi [...]
+<a name="L703"></a><tt class="py-lineno"> 703</tt>  <tt class="py-line">            <tt class="py-comment"># [XX] This is a little hackish -- we assume that the</tt> </tt>
+<a name="L704"></a><tt class="py-lineno"> 704</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># summary lines will have SUMMARY_REPR_LINELEN chars,</tt> </tt>
+<a name="L705"></a><tt class="py-lineno"> 705</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># that len(name) of those will be taken up by the name,</tt> </tt>
+<a name="L706"></a><tt class="py-lineno"> 706</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># and that 3 of those will be taken up by " = " between</tt> </tt>
+<a name="L707"></a><tt class="py-lineno"> 707</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># the name & val.  Note that if any docwriter uses a</tt> </tt>
+<a name="L708"></a><tt class="py-lineno"> 708</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># different formula for maxlen for this, then it will</tt> </tt>
+<a name="L709"></a><tt class="py-lineno"> 709</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># not get the right value for is_detailed().</tt> </tt>
+<a name="L710"></a><tt class="py-lineno"> 710</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">maxlen</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-172" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-172', 'value', 'link-114');">value</a></tt><tt class="py-op">.</tt><tt id="link-173" class="py-name" targets="Variable epydoc.apidoc.Value [...]
+<a name="L711"></a><tt class="py-lineno"> 711</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-175" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-175', 'value', 'link-114');">value</a></tt><tt class="py-op">.</tt><tt id="link-176" class="py-name" targets="Method epydoc.apidoc.V [...]
+<a name="L712"></a><tt class="py-lineno"> 712</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L713"></a><tt class="py-lineno"> 713</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-177" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-177', 'value', 'link-114');">value</a></tt><tt class="py-op">.</tt><tt id="link-178" class="py-name"><a title="epydoc.apidoc.APIDoc.is_detailed
+epydoc.apidoc.GenericValueDoc.is_detailed
+epydoc.apidoc.NamespaceDoc.is_detailed
+epydoc.apidoc.PropertyDoc.is_detailed
+epydoc.apidoc.RoutineDoc.is_detailed
+epydoc.apidoc.VariableDoc.is_detailed" class="py-name" href="#" onclick="return doclink('link-178', 'is_detailed', 'link-163');">is_detailed</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L714"></a><tt class="py-lineno"> 714</tt>  <tt class="py-line"> </tt>
+<a name="L715"></a><tt class="py-lineno"> 715</tt>  <tt class="py-line"><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L716"></a><tt class="py-lineno"> 716</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Value Documentation Objects</tt> </tt>
+<a name="L717"></a><tt class="py-lineno"> 717</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L718"></a><tt class="py-lineno"> 718</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="ValueDoc"></a><div id="ValueDoc-def"><a name="L719"></a><tt class="py-lineno"> 719</tt> <a class="py-toggle" href="#" id="ValueDoc-toggle" onclick="return toggle('ValueDoc');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="epydoc.apidoc.ValueDoc-class.html">ValueDoc</a><tt class="py-op">(</tt><tt class="py-base-class">APIDoc</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ValueDoc-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="ValueDoc-expanded"><a name="L720"></a><tt class="py-lineno"> 720</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L721"></a><tt class="py-lineno"> 721</tt>  <tt class="py-line"><tt class="py-docstring">    API documentation information about a single Python value.</tt> </tt>
+<a name="L722"></a><tt class="py-lineno"> 722</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L723"></a><tt class="py-lineno"> 723</tt>  <tt class="py-line">    <tt id="link-179" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-179', 'canonical_name', 'link-83');">canonical_name</a></tt> <tt class="py-op">=</tt> <tt id="link-180" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-180', 'UNKNOWN', 'link-39');">UNKNOWN</a></tt> </tt>
+<a name="L724"></a><tt class="py-lineno"> 724</tt>  <tt class="py-line">    <tt class="py-string">"""@ivar: A dotted name that serves as a unique identifier for</tt> </tt>
+<a name="L725"></a><tt class="py-lineno"> 725</tt>  <tt class="py-line"><tt class="py-string">       this C{ValueDoc}'s value.  If the value can be reached using a</tt> </tt>
+<a name="L726"></a><tt class="py-lineno"> 726</tt>  <tt class="py-line"><tt class="py-string">       single sequence of identifiers (given the appropriate imports),</tt> </tt>
+<a name="L727"></a><tt class="py-lineno"> 727</tt>  <tt class="py-line"><tt class="py-string">       then that sequence of identifiers is used as its canonical name.</tt> </tt>
+<a name="L728"></a><tt class="py-lineno"> 728</tt>  <tt class="py-line"><tt class="py-string">       If the value can be reached by multiple sequences of identifiers</tt> </tt>
+<a name="L729"></a><tt class="py-lineno"> 729</tt>  <tt class="py-line"><tt class="py-string">       (i.e., if it has multiple aliases), then one of those sequences of</tt> </tt>
+<a name="L730"></a><tt class="py-lineno"> 730</tt>  <tt class="py-line"><tt class="py-string">       identifiers is used.  If the value cannot be reached by any</tt> </tt>
+<a name="L731"></a><tt class="py-lineno"> 731</tt>  <tt class="py-line"><tt class="py-string">       sequence of identifiers (e.g., if it was used as a base class but</tt> </tt>
+<a name="L732"></a><tt class="py-lineno"> 732</tt>  <tt class="py-line"><tt class="py-string">       then its variable was deleted), then its canonical name will start</tt> </tt>
+<a name="L733"></a><tt class="py-lineno"> 733</tt>  <tt class="py-line"><tt class="py-string">       with C{'??'}.  If necessary, a dash followed by a number will be</tt> </tt>
+<a name="L734"></a><tt class="py-lineno"> 734</tt>  <tt class="py-line"><tt class="py-string">       appended to the end of a non-reachable identifier to make its</tt> </tt>
+<a name="L735"></a><tt class="py-lineno"> 735</tt>  <tt class="py-line"><tt class="py-string">       canonical name unique.</tt> </tt>
+<a name="L736"></a><tt class="py-lineno"> 736</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L737"></a><tt class="py-lineno"> 737</tt>  <tt class="py-line"><tt class="py-string">       When possible, canonical names are chosen when new C{ValueDoc}s</tt> </tt>
+<a name="L738"></a><tt class="py-lineno"> 738</tt>  <tt class="py-line"><tt class="py-string">       are created.  However, this is sometimes not possible.  If a</tt> </tt>
+<a name="L739"></a><tt class="py-lineno"> 739</tt>  <tt class="py-line"><tt class="py-string">       canonical name can not be chosen when the C{ValueDoc} is created,</tt> </tt>
+<a name="L740"></a><tt class="py-lineno"> 740</tt>  <tt class="py-line"><tt class="py-string">       then one will be assigned by L{assign_canonical_names()</tt> </tt>
+<a name="L741"></a><tt class="py-lineno"> 741</tt>  <tt class="py-line"><tt class="py-string">       <docbuilder.assign_canonical_names>}.</tt> </tt>
+<a name="L742"></a><tt class="py-lineno"> 742</tt>  <tt class="py-line"><tt class="py-string">       </tt> </tt>
+<a name="L743"></a><tt class="py-lineno"> 743</tt>  <tt class="py-line"><tt class="py-string">       @type: L{DottedName}"""</tt> </tt>
+<a name="L744"></a><tt class="py-lineno"> 744</tt>  <tt class="py-line"> </tt>
+<a name="L745"></a><tt class="py-lineno"> 745</tt>  <tt class="py-line">    <tt class="py-comment">#{ Value Representation</tt> </tt>
+<a name="L746"></a><tt class="py-lineno"> 746</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-181" class="py-name" targets="Variable epydoc.apidoc.ValueDoc.pyval=epydoc.apidoc.ValueDoc-class.html#pyval"><a title="epydoc.apidoc.ValueDoc.pyval" class="py-name" href="#" onclick="return doclink('link-181', 'pyval', 'link-181');">pyval</a></tt> <tt class="py-op">=</tt> <tt id="link-182" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="r [...]
+<a name="L747"></a><tt class="py-lineno"> 747</tt>  <tt class="py-line">    <tt class="py-string">"""@ivar: A pointer to the actual Python object described by this</tt> </tt>
+<a name="L748"></a><tt class="py-lineno"> 748</tt>  <tt class="py-line"><tt class="py-string">       C{ValueDoc}.  This is used to display the value (e.g., when</tt> </tt>
+<a name="L749"></a><tt class="py-lineno"> 749</tt>  <tt class="py-line"><tt class="py-string">       describing a variable.)  Use L{pyval_repr()} to generate a</tt> </tt>
+<a name="L750"></a><tt class="py-lineno"> 750</tt>  <tt class="py-line"><tt class="py-string">       plaintext string representation of this value.</tt> </tt>
+<a name="L751"></a><tt class="py-lineno"> 751</tt>  <tt class="py-line"><tt class="py-string">       @type: Python object"""</tt> </tt>
+<a name="L752"></a><tt class="py-lineno"> 752</tt>  <tt class="py-line"> </tt>
+<a name="L753"></a><tt class="py-lineno"> 753</tt>  <tt class="py-line">    <tt id="link-183" class="py-name" targets="Variable epydoc.apidoc.ValueDoc.parse_repr=epydoc.apidoc.ValueDoc-class.html#parse_repr"><a title="epydoc.apidoc.ValueDoc.parse_repr" class="py-name" href="#" onclick="return doclink('link-183', 'parse_repr', 'link-183');">parse_repr</a></tt> <tt class="py-op">=</tt> <tt id="link-184" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="retu [...]
+<a name="L754"></a><tt class="py-lineno"> 754</tt>  <tt class="py-line">    <tt class="py-string">"""@ivar: A text representation of this value, extracted from </tt> </tt>
+<a name="L755"></a><tt class="py-lineno"> 755</tt>  <tt class="py-line"><tt class="py-string">       parsing its source code.  This representation may not accurately</tt> </tt>
+<a name="L756"></a><tt class="py-lineno"> 756</tt>  <tt class="py-line"><tt class="py-string">       reflect the actual value (e.g., if the value was modified after</tt> </tt>
+<a name="L757"></a><tt class="py-lineno"> 757</tt>  <tt class="py-line"><tt class="py-string">       the initial assignment).</tt> </tt>
+<a name="L758"></a><tt class="py-lineno"> 758</tt>  <tt class="py-line"><tt class="py-string">       @type: C{unicode}"""</tt> </tt>
+<a name="L759"></a><tt class="py-lineno"> 759</tt>  <tt class="py-line"> </tt>
+<a name="L760"></a><tt class="py-lineno"> 760</tt>  <tt class="py-line">    <tt id="link-185" class="py-name" targets="Variable epydoc.apidoc.ValueDoc.REPR_MAXLINES=epydoc.apidoc.ValueDoc-class.html#REPR_MAXLINES"><a title="epydoc.apidoc.ValueDoc.REPR_MAXLINES" class="py-name" href="#" onclick="return doclink('link-185', 'REPR_MAXLINES', 'link-185');">REPR_MAXLINES</a></tt> <tt class="py-op">=</tt> <tt class="py-number">5</tt> </tt>
+<a name="L761"></a><tt class="py-lineno"> 761</tt>  <tt class="py-line">    <tt class="py-string">"""@cvar: The maximum number of lines of text that should be</tt> </tt>
+<a name="L762"></a><tt class="py-lineno"> 762</tt>  <tt class="py-line"><tt class="py-string">    generated by L{pyval_repr()}.  If the string representation does</tt> </tt>
+<a name="L763"></a><tt class="py-lineno"> 763</tt>  <tt class="py-line"><tt class="py-string">    not fit in this number of lines, an ellpsis marker (...) will</tt> </tt>
+<a name="L764"></a><tt class="py-lineno"> 764</tt>  <tt class="py-line"><tt class="py-string">    be placed at the end of the formatted representation."""</tt> </tt>
+<a name="L765"></a><tt class="py-lineno"> 765</tt>  <tt class="py-line"> </tt>
+<a name="L766"></a><tt class="py-lineno"> 766</tt>  <tt class="py-line">    <tt id="link-186" class="py-name" targets="Variable epydoc.apidoc.ValueDoc.REPR_LINELEN=epydoc.apidoc.ValueDoc-class.html#REPR_LINELEN"><a title="epydoc.apidoc.ValueDoc.REPR_LINELEN" class="py-name" href="#" onclick="return doclink('link-186', 'REPR_LINELEN', 'link-186');">REPR_LINELEN</a></tt> <tt class="py-op">=</tt> <tt class="py-number">75</tt> </tt>
+<a name="L767"></a><tt class="py-lineno"> 767</tt>  <tt class="py-line">    <tt class="py-string">"""@cvar: The maximum number of characters for lines of text that</tt> </tt>
+<a name="L768"></a><tt class="py-lineno"> 768</tt>  <tt class="py-line"><tt class="py-string">    should be generated by L{pyval_repr()}.  Any lines that exceed</tt> </tt>
+<a name="L769"></a><tt class="py-lineno"> 769</tt>  <tt class="py-line"><tt class="py-string">    this number of characters will be line-wrappped; The S{crarr}</tt> </tt>
+<a name="L770"></a><tt class="py-lineno"> 770</tt>  <tt class="py-line"><tt class="py-string">    symbol will be used to indicate that the line was wrapped."""</tt> </tt>
+<a name="L771"></a><tt class="py-lineno"> 771</tt>  <tt class="py-line"> </tt>
+<a name="L772"></a><tt class="py-lineno"> 772</tt>  <tt class="py-line">    <tt id="link-187" class="py-name"><a title="epydoc.apidoc.ValueDoc.SUMMARY_REPR_LINELEN" class="py-name" href="#" onclick="return doclink('link-187', 'SUMMARY_REPR_LINELEN', 'link-173');">SUMMARY_REPR_LINELEN</a></tt> <tt class="py-op">=</tt> <tt class="py-number">75</tt> </tt>
+<a name="L773"></a><tt class="py-lineno"> 773</tt>  <tt class="py-line">    <tt class="py-string">"""@cvar: The maximum number of characters for the single-line</tt> </tt>
+<a name="L774"></a><tt class="py-lineno"> 774</tt>  <tt class="py-line"><tt class="py-string">    text representation generated by L{summary_pyval_repr()}.  If</tt> </tt>
+<a name="L775"></a><tt class="py-lineno"> 775</tt>  <tt class="py-line"><tt class="py-string">    the value's representation does not fit in this number of</tt> </tt>
+<a name="L776"></a><tt class="py-lineno"> 776</tt>  <tt class="py-line"><tt class="py-string">    characters, an ellipsis marker (...) will be placed at the end</tt> </tt>
+<a name="L777"></a><tt class="py-lineno"> 777</tt>  <tt class="py-line"><tt class="py-string">    of the formatted representation."""</tt> </tt>
+<a name="L778"></a><tt class="py-lineno"> 778</tt>  <tt class="py-line"> </tt>
+<a name="L779"></a><tt class="py-lineno"> 779</tt>  <tt class="py-line">    <tt id="link-188" class="py-name" targets="Variable epydoc.apidoc.ValueDoc.REPR_MIN_SCORE=epydoc.apidoc.ValueDoc-class.html#REPR_MIN_SCORE"><a title="epydoc.apidoc.ValueDoc.REPR_MIN_SCORE" class="py-name" href="#" onclick="return doclink('link-188', 'REPR_MIN_SCORE', 'link-188');">REPR_MIN_SCORE</a></tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L780"></a><tt class="py-lineno"> 780</tt>  <tt class="py-line">    <tt class="py-string">"""@cvar: The minimum score that a value representation based on</tt> </tt>
+<a name="L781"></a><tt class="py-lineno"> 781</tt>  <tt class="py-line"><tt class="py-string">    L{pyval} should have in order to be used instead of L{parse_repr}</tt> </tt>
+<a name="L782"></a><tt class="py-lineno"> 782</tt>  <tt class="py-line"><tt class="py-string">    as the canonical representation for this C{ValueDoc}'s value.</tt> </tt>
+<a name="L783"></a><tt class="py-lineno"> 783</tt>  <tt class="py-line"><tt class="py-string">    @see: L{epydoc.markup.pyval_repr}"""</tt> </tt>
+<a name="L784"></a><tt class="py-lineno"> 784</tt>  <tt class="py-line">    <tt class="py-comment">#} end of "value representation" group</tt> </tt>
+<a name="L785"></a><tt class="py-lineno"> 785</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L786"></a><tt class="py-lineno"> 786</tt>  <tt class="py-line">    <tt class="py-comment">#{ Context</tt> </tt>
+<a name="L787"></a><tt class="py-lineno"> 787</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-189" class="py-name"><a title="epydoc.apidoc.ValueDoc.defining_module
+epydoc.apidoc.VariableDoc.defining_module" class="py-name" href="#" onclick="return doclink('link-189', 'defining_module', 'link-149');">defining_module</a></tt> <tt class="py-op">=</tt> <tt id="link-190" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-190', 'UNKNOWN', 'link-39');">UNKNOWN</a></tt> </tt>
+<a name="L788"></a><tt class="py-lineno"> 788</tt>  <tt class="py-line">    <tt class="py-string">"""@ivar: The documentation for the module that defines this</tt> </tt>
+<a name="L789"></a><tt class="py-lineno"> 789</tt>  <tt class="py-line"><tt class="py-string">       value.  This is used, e.g., to lookup the appropriate markup</tt> </tt>
+<a name="L790"></a><tt class="py-lineno"> 790</tt>  <tt class="py-line"><tt class="py-string">       language for docstrings.  For a C{ModuleDoc},</tt> </tt>
+<a name="L791"></a><tt class="py-lineno"> 791</tt>  <tt class="py-line"><tt class="py-string">       C{defining_module} should be C{self}.</tt> </tt>
+<a name="L792"></a><tt class="py-lineno"> 792</tt>  <tt class="py-line"><tt class="py-string">       @type: L{ModuleDoc}"""</tt> </tt>
+<a name="L793"></a><tt class="py-lineno"> 793</tt>  <tt class="py-line">    <tt class="py-comment">#} end of "context group"</tt> </tt>
+<a name="L794"></a><tt class="py-lineno"> 794</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L795"></a><tt class="py-lineno"> 795</tt>  <tt class="py-line">    <tt class="py-comment">#{ Information about Imported Variables</tt> </tt>
+<a name="L796"></a><tt class="py-lineno"> 796</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-191" class="py-name" targets="Variable epydoc.apidoc.ValueDoc.proxy_for=epydoc.apidoc.ValueDoc-class.html#proxy_for"><a title="epydoc.apidoc.ValueDoc.proxy_for" class="py-name" href="#" onclick="return doclink('link-191', 'proxy_for', 'link-191');">proxy_for</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> <tt class="py-comment"># [xx] in progress.</tt> </tt>
+<a name="L797"></a><tt class="py-lineno"> 797</tt>  <tt class="py-line">    <tt class="py-string">"""@ivar: If C{proxy_for} is not None, then this value was</tt> </tt>
+<a name="L798"></a><tt class="py-lineno"> 798</tt>  <tt class="py-line"><tt class="py-string">       imported from another file.  C{proxy_for} is the dotted name of</tt> </tt>
+<a name="L799"></a><tt class="py-lineno"> 799</tt>  <tt class="py-line"><tt class="py-string">       the variable that this value was imported from.  If that</tt> </tt>
+<a name="L800"></a><tt class="py-lineno"> 800</tt>  <tt class="py-line"><tt class="py-string">       variable is documented, then its C{value} may contain more</tt> </tt>
+<a name="L801"></a><tt class="py-lineno"> 801</tt>  <tt class="py-line"><tt class="py-string">       complete API documentation about this value.  The C{proxy_for}</tt> </tt>
+<a name="L802"></a><tt class="py-lineno"> 802</tt>  <tt class="py-line"><tt class="py-string">       attribute is used by the source code parser to link imported</tt> </tt>
+<a name="L803"></a><tt class="py-lineno"> 803</tt>  <tt class="py-line"><tt class="py-string">       values to their source values (in particular, for base</tt> </tt>
+<a name="L804"></a><tt class="py-lineno"> 804</tt>  <tt class="py-line"><tt class="py-string">       classes).  When possible, these proxy C{ValueDoc}s are replaced</tt> </tt>
+<a name="L805"></a><tt class="py-lineno"> 805</tt>  <tt class="py-line"><tt class="py-string">       by the imported value's C{ValueDoc} by</tt> </tt>
+<a name="L806"></a><tt class="py-lineno"> 806</tt>  <tt class="py-line"><tt class="py-string">       L{link_imports()<docbuilder.link_imports>}.</tt> </tt>
+<a name="L807"></a><tt class="py-lineno"> 807</tt>  <tt class="py-line"><tt class="py-string">       @type: L{DottedName}"""</tt> </tt>
+<a name="L808"></a><tt class="py-lineno"> 808</tt>  <tt class="py-line">    <tt class="py-comment">#} end of "information about imported variables" group</tt> </tt>
+<a name="L809"></a><tt class="py-lineno"> 809</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L810"></a><tt class="py-lineno"> 810</tt>  <tt class="py-line">    <tt class="py-comment">#: @ivar:</tt> </tt>
+<a name="L811"></a><tt class="py-lineno"> 811</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#: This is currently used to extract values from __all__, etc, in</tt> </tt>
+<a name="L812"></a><tt class="py-lineno"> 812</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#: the docparser module; maybe I should specialize</tt> </tt>
+<a name="L813"></a><tt class="py-lineno"> 813</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#: process_assignment and extract it there?  Although, for __all__,</tt> </tt>
+<a name="L814"></a><tt class="py-lineno"> 814</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#: it's not clear where I'd put the value, since I just use it to</tt> </tt>
+<a name="L815"></a><tt class="py-lineno"> 815</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#: set private/public/imported attribs on other vars (that might not</tt> </tt>
+<a name="L816"></a><tt class="py-lineno"> 816</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#: exist yet at the time.)</tt> </tt>
+<a name="L817"></a><tt class="py-lineno"> 817</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-192" class="py-name" targets="Variable epydoc.apidoc.ValueDoc.toktree=epydoc.apidoc.ValueDoc-class.html#toktree"><a title="epydoc.apidoc.ValueDoc.toktree" class="py-name" href="#" onclick="return doclink('link-192', 'toktree', 'link-192');">toktree</a></tt> <tt class="py-op">=</tt> <tt id="link-193" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#"  [...]
+<a name="L818"></a><tt class="py-lineno"> 818</tt>  <tt class="py-line"> </tt>
+<a name="ValueDoc.__repr__"></a><div id="ValueDoc.__repr__-def"><a name="L819"></a><tt class="py-lineno"> 819</tt> <a class="py-toggle" href="#" id="ValueDoc.__repr__-toggle" onclick="return toggle('ValueDoc.__repr__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.apidoc.ValueDoc-class.html#__repr__">__repr__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ValueDoc.__repr__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ValueDoc.__repr__-expanded"><a name="L820"></a><tt class="py-lineno"> 820</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-194" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-194', 'canonical_name', 'link-83');">canonical_name</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt id="link-195" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-195', 'UNKNOWN', 'link-39');">UNKNOWN</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L821"></a><tt class="py-lineno"> 821</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">'<%s %s>'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-196" class="py-name"><a title="epydoc.apidoc.G [...]
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-196', 'canonical_name', 'link-83');">canonical_name</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L822"></a><tt class="py-lineno"> 822</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L823"></a><tt class="py-lineno"> 823</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">'<%s %s>'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt><tt class="py-op">,</tt> </tt>
+<a name="L824"></a><tt class="py-lineno"> 824</tt>  <tt class="py-line">                                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-197" class="py-name"><a title="epydoc.apidoc.ValueDoc.summary_pyval_repr" class="py-name" href="#" onclick="return doclink('link-197', 'summary_pyval_repr', 'link-176');">summary_pyval_repr</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-198" class="py-name" targets="Method ep [...]
+epydoc.markup.ParsedDocstring.to_plaintext
+epydoc.markup.epytext.ParsedEpytextDocstring.to_plaintext
+epydoc.markup.epytext.to_plaintext
+epydoc.markup.javadoc.ParsedJavadocDocstring.to_plaintext
+epydoc.markup.plaintext.ParsedPlaintextDocstring.to_plaintext
+epydoc.markup.restructuredtext.ParsedRstDocstring.to_plaintext" class="py-name" href="#" onclick="return doclink('link-198', 'to_plaintext', 'link-198');">to_plaintext</a></tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L825"></a><tt class="py-lineno"> 825</tt>  <tt class="py-line"> </tt>
+<a name="ValueDoc.__setstate__"></a><div id="ValueDoc.__setstate__-def"><a name="L826"></a><tt class="py-lineno"> 826</tt> <a class="py-toggle" href="#" id="ValueDoc.__setstate__-toggle" onclick="return toggle('ValueDoc.__setstate__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.apidoc.ValueDoc-class.html#__setstate__">__setstate__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">s [...]
+</div><div id="ValueDoc.__setstate__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ValueDoc.__setstate__-expanded"><a name="L827"></a><tt class="py-lineno"> 827</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt> <tt class="py-op">=</tt> <tt class="py-name">state</tt> </tt>
+</div><a name="L828"></a><tt class="py-lineno"> 828</tt>  <tt class="py-line"> </tt>
+<a name="ValueDoc.__getstate__"></a><div id="ValueDoc.__getstate__-def"><a name="L829"></a><tt class="py-lineno"> 829</tt> <a class="py-toggle" href="#" id="ValueDoc.__getstate__-toggle" onclick="return toggle('ValueDoc.__getstate__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.apidoc.ValueDoc-class.html#__getstate__">__getstate__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ValueDoc.__getstate__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ValueDoc.__getstate__-expanded"><a name="L830"></a><tt class="py-lineno"> 830</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L831"></a><tt class="py-lineno"> 831</tt>  <tt class="py-line"><tt class="py-docstring">        State serializer for the pickle module.  This is necessary</tt> </tt>
+<a name="L832"></a><tt class="py-lineno"> 832</tt>  <tt class="py-line"><tt class="py-docstring">        because sometimes the C{pyval} attribute contains an</tt> </tt>
+<a name="L833"></a><tt class="py-lineno"> 833</tt>  <tt class="py-line"><tt class="py-docstring">        un-pickleable value.</tt> </tt>
+<a name="L834"></a><tt class="py-lineno"> 834</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L835"></a><tt class="py-lineno"> 835</tt>  <tt class="py-line">        <tt class="py-comment"># Construct our pickled dictionary.  Maintain this dictionary</tt> </tt>
+<a name="L836"></a><tt class="py-lineno"> 836</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># as a private attribute, so we can reuse it later, since</tt> </tt>
+<a name="L837"></a><tt class="py-lineno"> 837</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># merged objects need to share a single dictionary.</tt> </tt>
+<a name="L838"></a><tt class="py-lineno"> 838</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-string">'_ValueDoc__pickle_state'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L839"></a><tt class="py-lineno"> 839</tt>  <tt class="py-line">            <tt class="py-comment"># Make sure __pyval_repr & __summary_pyval_repr are cached:</tt> </tt>
+<a name="L840"></a><tt class="py-lineno"> 840</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-199" class="py-name"><a title="epydoc.apidoc.ValueDoc.pyval_repr
+epydoc.markup.pyval_repr" class="py-name" href="#" onclick="return doclink('link-199', 'pyval_repr', 'link-12');">pyval_repr</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-200" class="py-name"><a title="epydoc.apidoc.ValueDoc.summary_pyval_repr" class="py-name" href="#" onclick="return doclink('link-200', 'summary_pyval_repr', 'link-176');">summary_pyval_repr</a></tt><tt class="py-op">(</t [...]
+<a name="L841"></a><tt class="py-lineno"> 841</tt>  <tt class="py-line">            <tt class="py-comment"># Construct the dictionary; leave out 'pyval'.</tt> </tt>
+<a name="L842"></a><tt class="py-lineno"> 842</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__pickle_state</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">.</tt><tt class="py-name">copy</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L843"></a><tt class="py-lineno"> 843</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__pickle_state</tt><tt class="py-op">[</tt><tt class="py-string">'pyval'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-201" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-201', 'UNKNOWN', 'link-39');">UNKNOWN</a></tt> </tt>
+<a name="L844"></a><tt class="py-lineno"> 844</tt>  <tt class="py-line"> </tt>
+<a name="L845"></a><tt class="py-lineno"> 845</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt id="link-202" class="py-name"><a title="epydoc.apidoc.GenericValueDoc" class="py-name" href="#" onclick="return doclink('link-202', 'GenericValueDoc', 'link-171');">GenericValueDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">: [...]
+<a name="L846"></a><tt class="py-lineno"> 846</tt>  <tt class="py-line">            <tt class="py-keyword">assert</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__pickle_state</tt> <tt class="py-op">!=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L847"></a><tt class="py-lineno"> 847</tt>  <tt class="py-line">        <tt class="py-comment"># Return the pickle state.</tt> </tt>
+<a name="L848"></a><tt class="py-lineno"> 848</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__pickle_state</tt> </tt>
+</div><a name="L849"></a><tt class="py-lineno"> 849</tt>  <tt class="py-line"> </tt>
+<a name="L850"></a><tt class="py-lineno"> 850</tt>  <tt class="py-line">    <tt class="py-comment">#{ Value Representation</tt> </tt>
+<a name="ValueDoc.pyval_repr"></a><div id="ValueDoc.pyval_repr-def"><a name="L851"></a><tt class="py-lineno"> 851</tt> <a class="py-toggle" href="#" id="ValueDoc.pyval_repr-toggle" onclick="return toggle('ValueDoc.pyval_repr');">-</a><tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.apidoc.ValueDoc-class.html#pyval_repr">pyval_repr</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt cla [...]
+</div><div id="ValueDoc.pyval_repr-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ValueDoc.pyval_repr-expanded"><a name="L852"></a><tt class="py-lineno"> 852</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L853"></a><tt class="py-lineno"> 853</tt>  <tt class="py-line"><tt class="py-docstring">        Return a formatted representation of the Python object</tt> </tt>
+<a name="L854"></a><tt class="py-lineno"> 854</tt>  <tt class="py-line"><tt class="py-docstring">        described by this C{ValueDoc}.  This representation may</tt> </tt>
+<a name="L855"></a><tt class="py-lineno"> 855</tt>  <tt class="py-line"><tt class="py-docstring">        include data from introspection or parsing, and is authorative</tt> </tt>
+<a name="L856"></a><tt class="py-lineno"> 856</tt>  <tt class="py-line"><tt class="py-docstring">        as 'the best way to represent a Python value.'  Any lines that</tt> </tt>
+<a name="L857"></a><tt class="py-lineno"> 857</tt>  <tt class="py-line"><tt class="py-docstring">        go beyond L{REPR_LINELEN} characters will be wrapped; and if</tt> </tt>
+<a name="L858"></a><tt class="py-lineno"> 858</tt>  <tt class="py-line"><tt class="py-docstring">        the representation as a whole takes more than L{REPR_MAXLINES}</tt> </tt>
+<a name="L859"></a><tt class="py-lineno"> 859</tt>  <tt class="py-line"><tt class="py-docstring">        lines, then it will be truncated (with an ellipsis marker).</tt> </tt>
+<a name="L860"></a><tt class="py-lineno"> 860</tt>  <tt class="py-line"><tt class="py-docstring">        This function will never return L{UNKNOWN} or C{None}.</tt> </tt>
+<a name="L861"></a><tt class="py-lineno"> 861</tt>  <tt class="py-line"><tt class="py-docstring">    </tt> </tt>
+<a name="L862"></a><tt class="py-lineno"> 862</tt>  <tt class="py-line"><tt class="py-docstring">        @rtype: L{ColorizedPyvalRepr}</tt> </tt>
+<a name="L863"></a><tt class="py-lineno"> 863</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L864"></a><tt class="py-lineno"> 864</tt>  <tt class="py-line">        <tt class="py-comment"># Use self.__pyval_repr to cache the result.</tt> </tt>
+<a name="L865"></a><tt class="py-lineno"> 865</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-string">'_ValueDoc__pyval_repr'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L866"></a><tt class="py-lineno"> 866</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__pyval_repr</tt> <tt class="py-op">=</tt> <tt id="link-203" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-203', 'epydoc', 'link-1');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-204" class="py-name"><a title="epydoc.markup
+epydoc.markup.doctest.DoctestColorizer.markup
+epydoc.markup.doctest.HTMLDoctestColorizer.markup
+epydoc.markup.doctest.LaTeXDoctestColorizer.markup
+epydoc.markup.doctest.XMLDoctestColorizer.markup" class="py-name" href="#" onclick="return doclink('link-204', 'markup', 'link-11');">markup</a></tt><tt class="py-op">.</tt><tt id="link-205" class="py-name"><a title="epydoc.apidoc.ValueDoc.pyval_repr
+epydoc.markup.pyval_repr" class="py-name" href="#" onclick="return doclink('link-205', 'pyval_repr', 'link-12');">pyval_repr</a></tt><tt class="py-op">.</tt><tt id="link-206" class="py-name" targets="Function epydoc.markup.pyval_repr.colorize_pyval()=epydoc.markup.pyval_repr-module.html#colorize_pyval"><a title="epydoc.markup.pyval_repr.colorize_pyval" class="py-name" href="#" onclick="return doclink('link-206', 'colorize_pyval', 'link-206');">colorize_pyval</a></tt><tt class="py-op">(</ [...]
+<a name="L867"></a><tt class="py-lineno"> 867</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-207" class="py-name"><a title="epydoc.apidoc.ValueDoc.pyval" class="py-name" href="#" onclick="return doclink('link-207', 'pyval', 'link-181');">pyval</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-208" class="py-name"><a title="epydoc.apidoc.ValueDoc.parse_repr" class="py-name" href=" [...]
+<a name="L868"></a><tt class="py-lineno"> 868</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-210" class="py-name"><a title="epydoc.apidoc.ValueDoc.REPR_LINELEN" class="py-name" href="#" onclick="return doclink('link-210', 'REPR_LINELEN', 'link-186');">REPR_LINELEN</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-211" class="py-name"><a title="epydoc.apidoc.ValueDoc.REPR_MAXLINES [...]
+<a name="L869"></a><tt class="py-lineno"> 869</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__pyval_repr</tt> </tt>
+</div><a name="L870"></a><tt class="py-lineno"> 870</tt>  <tt class="py-line"> </tt>
+<a name="ValueDoc.summary_pyval_repr"></a><div id="ValueDoc.summary_pyval_repr-def"><a name="L871"></a><tt class="py-lineno"> 871</tt> <a class="py-toggle" href="#" id="ValueDoc.summary_pyval_repr-toggle" onclick="return toggle('ValueDoc.summary_pyval_repr');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.apidoc.ValueDoc-class.html#summary_pyval_repr">summary_pyval_repr</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class=" [...]
+</div><div id="ValueDoc.summary_pyval_repr-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ValueDoc.summary_pyval_repr-expanded"><a name="L872"></a><tt class="py-lineno"> 872</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L873"></a><tt class="py-lineno"> 873</tt>  <tt class="py-line"><tt class="py-docstring">        Return a single-line formatted representation of the Python</tt> </tt>
+<a name="L874"></a><tt class="py-lineno"> 874</tt>  <tt class="py-line"><tt class="py-docstring">        object described by this C{ValueDoc}.  This representation may</tt> </tt>
+<a name="L875"></a><tt class="py-lineno"> 875</tt>  <tt class="py-line"><tt class="py-docstring">        include data from introspection or parsing, and is authorative</tt> </tt>
+<a name="L876"></a><tt class="py-lineno"> 876</tt>  <tt class="py-line"><tt class="py-docstring">        as 'the best way to summarize a Python value.'  If the</tt> </tt>
+<a name="L877"></a><tt class="py-lineno"> 877</tt>  <tt class="py-line"><tt class="py-docstring">        representation takes more then L{SUMMARY_REPR_LINELEN}</tt> </tt>
+<a name="L878"></a><tt class="py-lineno"> 878</tt>  <tt class="py-line"><tt class="py-docstring">        characters, then it will be truncated (with an ellipsis</tt> </tt>
+<a name="L879"></a><tt class="py-lineno"> 879</tt>  <tt class="py-line"><tt class="py-docstring">        marker).  This function will never return L{UNKNOWN} or</tt> </tt>
+<a name="L880"></a><tt class="py-lineno"> 880</tt>  <tt class="py-line"><tt class="py-docstring">        C{None}.</tt> </tt>
+<a name="L881"></a><tt class="py-lineno"> 881</tt>  <tt class="py-line"><tt class="py-docstring">    </tt> </tt>
+<a name="L882"></a><tt class="py-lineno"> 882</tt>  <tt class="py-line"><tt class="py-docstring">        @rtype: L{ColorizedPyvalRepr}</tt> </tt>
+<a name="L883"></a><tt class="py-lineno"> 883</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L884"></a><tt class="py-lineno"> 884</tt>  <tt class="py-line">        <tt class="py-comment"># If max_len is specified, then do *not* cache the result.</tt> </tt>
+<a name="L885"></a><tt class="py-lineno"> 885</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">max_len</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L886"></a><tt class="py-lineno"> 886</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt id="link-212" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-212', 'epydoc', 'link-1');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-213" class="py-name"><a title="epydoc.markup
+epydoc.markup.doctest.DoctestColorizer.markup
+epydoc.markup.doctest.HTMLDoctestColorizer.markup
+epydoc.markup.doctest.LaTeXDoctestColorizer.markup
+epydoc.markup.doctest.XMLDoctestColorizer.markup" class="py-name" href="#" onclick="return doclink('link-213', 'markup', 'link-11');">markup</a></tt><tt class="py-op">.</tt><tt id="link-214" class="py-name"><a title="epydoc.apidoc.ValueDoc.pyval_repr
+epydoc.markup.pyval_repr" class="py-name" href="#" onclick="return doclink('link-214', 'pyval_repr', 'link-12');">pyval_repr</a></tt><tt class="py-op">.</tt><tt id="link-215" class="py-name"><a title="epydoc.markup.pyval_repr.colorize_pyval" class="py-name" href="#" onclick="return doclink('link-215', 'colorize_pyval', 'link-206');">colorize_pyval</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L887"></a><tt class="py-lineno"> 887</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-216" class="py-name"><a title="epydoc.apidoc.ValueDoc.pyval" class="py-name" href="#" onclick="return doclink('link-216', 'pyval', 'link-181');">pyval</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-217" class="py-name"><a title="epydoc.apidoc.ValueDoc.parse_repr" class="py-name" href=" [...]
+<a name="L888"></a><tt class="py-lineno"> 888</tt>  <tt class="py-line">                <tt class="py-name">max_len</tt><tt class="py-op">,</tt> <tt class="py-name">maxlines</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-name">linebreakok</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
+<a name="L889"></a><tt class="py-lineno"> 889</tt>  <tt class="py-line">             </tt>
+<a name="L890"></a><tt class="py-lineno"> 890</tt>  <tt class="py-line">        <tt class="py-comment"># Use self.__summary_pyval_repr to cache the result.</tt> </tt>
+<a name="L891"></a><tt class="py-lineno"> 891</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-string">'_ValueDoc__summary_pyval_repr'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L892"></a><tt class="py-lineno"> 892</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__summary_pyval_repr</tt> <tt class="py-op">=</tt> <tt id="link-219" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-219', 'epydoc', 'link-1');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-220" class="py-name"><a title="epydoc.markup
+epydoc.markup.doctest.DoctestColorizer.markup
+epydoc.markup.doctest.HTMLDoctestColorizer.markup
+epydoc.markup.doctest.LaTeXDoctestColorizer.markup
+epydoc.markup.doctest.XMLDoctestColorizer.markup" class="py-name" href="#" onclick="return doclink('link-220', 'markup', 'link-11');">markup</a></tt><tt class="py-op">.</tt><tt id="link-221" class="py-name"><a title="epydoc.apidoc.ValueDoc.pyval_repr
+epydoc.markup.pyval_repr" class="py-name" href="#" onclick="return doclink('link-221', 'pyval_repr', 'link-12');">pyval_repr</a></tt><tt class="py-op">.</tt><tt id="link-222" class="py-name"><a title="epydoc.markup.pyval_repr.colorize_pyval" class="py-name" href="#" onclick="return doclink('link-222', 'colorize_pyval', 'link-206');">colorize_pyval</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L893"></a><tt class="py-lineno"> 893</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-223" class="py-name"><a title="epydoc.apidoc.ValueDoc.pyval" class="py-name" href="#" onclick="return doclink('link-223', 'pyval', 'link-181');">pyval</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-224" class="py-name"><a title="epydoc.apidoc.ValueDoc.parse_repr" class="py-name" href=" [...]
+<a name="L894"></a><tt class="py-lineno"> 894</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-226" class="py-name"><a title="epydoc.apidoc.ValueDoc.SUMMARY_REPR_LINELEN" class="py-name" href="#" onclick="return doclink('link-226', 'SUMMARY_REPR_LINELEN', 'link-173');">SUMMARY_REPR_LINELEN</a></tt><tt class="py-op">,</tt> <tt class="py-name">maxlines</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> [...]
+<a name="L895"></a><tt class="py-lineno"> 895</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__summary_pyval_repr</tt> </tt>
+</div><a name="L896"></a><tt class="py-lineno"> 896</tt>  <tt class="py-line">    <tt class="py-comment">#} end of "value representation" group</tt> </tt>
+<a name="L897"></a><tt class="py-lineno"> 897</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="ValueDoc.apidoc_links"></a><div id="ValueDoc.apidoc_links-def"><a name="L898"></a><tt class="py-lineno"> 898</tt> <a class="py-toggle" href="#" id="ValueDoc.apidoc_links-toggle" onclick="return toggle('ValueDoc.apidoc_links');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.apidoc.ValueDoc-class.html#apidoc_links">apidoc_links</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-op">**</ [...]
+</div><div id="ValueDoc.apidoc_links-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ValueDoc.apidoc_links-expanded"><a name="L899"></a><tt class="py-lineno"> 899</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+</div></div><a name="L900"></a><tt class="py-lineno"> 900</tt>  <tt class="py-line"> </tt>
+<a name="GenericValueDoc"></a><div id="GenericValueDoc-def"><a name="L901"></a><tt class="py-lineno"> 901</tt> <a class="py-toggle" href="#" id="GenericValueDoc-toggle" onclick="return toggle('GenericValueDoc');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="epydoc.apidoc.GenericValueDoc-class.html">GenericValueDoc</a><tt class="py-op">(</tt><tt class="py-base-class">ValueDoc</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="GenericValueDoc-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="GenericValueDoc-expanded"><a name="L902"></a><tt class="py-lineno"> 902</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L903"></a><tt class="py-lineno"> 903</tt>  <tt class="py-line"><tt class="py-docstring">    API documentation about a 'generic' value, i.e., one that does not</tt> </tt>
+<a name="L904"></a><tt class="py-lineno"> 904</tt>  <tt class="py-line"><tt class="py-docstring">    have its own docstring or any information other than its value and</tt> </tt>
+<a name="L905"></a><tt class="py-lineno"> 905</tt>  <tt class="py-line"><tt class="py-docstring">    parse representation.  C{GenericValueDoc}s do not get assigned</tt> </tt>
+<a name="L906"></a><tt class="py-lineno"> 906</tt>  <tt class="py-line"><tt class="py-docstring">    cannonical names.</tt> </tt>
+<a name="L907"></a><tt class="py-lineno"> 907</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L908"></a><tt class="py-lineno"> 908</tt>  <tt class="py-line">    <tt id="link-227" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-227', 'canonical_name', 'link-83');">canonical_name</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L909"></a><tt class="py-lineno"> 909</tt>  <tt class="py-line">     </tt>
+<a name="GenericValueDoc.is_detailed"></a><div id="GenericValueDoc.is_detailed-def"><a name="L910"></a><tt class="py-lineno"> 910</tt> <a class="py-toggle" href="#" id="GenericValueDoc.is_detailed-toggle" onclick="return toggle('GenericValueDoc.is_detailed');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.apidoc.GenericValueDoc-class.html#is_detailed">is_detailed</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op"> [...]
+</div><div id="GenericValueDoc.is_detailed-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="GenericValueDoc.is_detailed-expanded"><a name="L911"></a><tt class="py-lineno"> 911</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-228" class="py-name"><a title="epydoc.apidoc.ValueDoc.summary_pyval_repr" class="py-name" href="# [...]
+</div></div><a name="L912"></a><tt class="py-lineno"> 912</tt>  <tt class="py-line"> </tt>
+<a name="NamespaceDoc"></a><div id="NamespaceDoc-def"><a name="L913"></a><tt class="py-lineno"> 913</tt> <a class="py-toggle" href="#" id="NamespaceDoc-toggle" onclick="return toggle('NamespaceDoc');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="epydoc.apidoc.NamespaceDoc-class.html">NamespaceDoc</a><tt class="py-op">(</tt><tt class="py-base-class">ValueDoc</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NamespaceDoc-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="NamespaceDoc-expanded"><a name="L914"></a><tt class="py-lineno"> 914</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L915"></a><tt class="py-lineno"> 915</tt>  <tt class="py-line"><tt class="py-docstring">    API documentation information about a singe Python namespace</tt> </tt>
+<a name="L916"></a><tt class="py-lineno"> 916</tt>  <tt class="py-line"><tt class="py-docstring">    value.  (I.e., a module or a class).</tt> </tt>
+<a name="L917"></a><tt class="py-lineno"> 917</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L918"></a><tt class="py-lineno"> 918</tt>  <tt class="py-line">    <tt class="py-comment">#{ Information about Variables</tt> </tt>
+<a name="L919"></a><tt class="py-lineno"> 919</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-229" class="py-name" targets="Variable epydoc.apidoc.NamespaceDoc.variables=epydoc.apidoc.NamespaceDoc-class.html#variables"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-229', 'variables', 'link-229');">variables</a></tt> <tt class="py-op">=</tt> <tt id="link-230" class="py-name"><a title="epydoc.apidoc.UNKNOWN" cla [...]
+<a name="L920"></a><tt class="py-lineno"> 920</tt>  <tt class="py-line">    <tt class="py-string">"""@ivar: The contents of the namespace, encoded as a</tt> </tt>
+<a name="L921"></a><tt class="py-lineno"> 921</tt>  <tt class="py-line"><tt class="py-string">        dictionary mapping from identifiers to C{VariableDoc}s.  This</tt> </tt>
+<a name="L922"></a><tt class="py-lineno"> 922</tt>  <tt class="py-line"><tt class="py-string">        dictionary contains all names defined by the namespace,</tt> </tt>
+<a name="L923"></a><tt class="py-lineno"> 923</tt>  <tt class="py-line"><tt class="py-string">        including imported variables, aliased variables, and variables</tt> </tt>
+<a name="L924"></a><tt class="py-lineno"> 924</tt>  <tt class="py-line"><tt class="py-string">        inherited from base classes (once L{inherit_docs()</tt> </tt>
+<a name="L925"></a><tt class="py-lineno"> 925</tt>  <tt class="py-line"><tt class="py-string">        <epydoc.docbuilder.inherit_docs>} has added them).</tt> </tt>
+<a name="L926"></a><tt class="py-lineno"> 926</tt>  <tt class="py-line"><tt class="py-string">       @type: C{dict} from C{string} to L{VariableDoc}"""</tt> </tt>
+<a name="L927"></a><tt class="py-lineno"> 927</tt>  <tt class="py-line">    <tt id="link-231" class="py-name" targets="Variable epydoc.apidoc.NamespaceDoc.sorted_variables=epydoc.apidoc.NamespaceDoc-class.html#sorted_variables"><a title="epydoc.apidoc.NamespaceDoc.sorted_variables" class="py-name" href="#" onclick="return doclink('link-231', 'sorted_variables', 'link-231');">sorted_variables</a></tt> <tt class="py-op">=</tt> <tt id="link-232" class="py-name"><a title="epydoc.apidoc.UNKNO [...]
+<a name="L928"></a><tt class="py-lineno"> 928</tt>  <tt class="py-line">    <tt class="py-string">"""@ivar: A list of all variables defined by this</tt> </tt>
+<a name="L929"></a><tt class="py-lineno"> 929</tt>  <tt class="py-line"><tt class="py-string">       namespace, in sorted order.  The elements of this list should</tt> </tt>
+<a name="L930"></a><tt class="py-lineno"> 930</tt>  <tt class="py-line"><tt class="py-string">       exactly match the values of L{variables}.  The sort order for</tt> </tt>
+<a name="L931"></a><tt class="py-lineno"> 931</tt>  <tt class="py-line"><tt class="py-string">       this list is defined as follows:</tt> </tt>
+<a name="L932"></a><tt class="py-lineno"> 932</tt>  <tt class="py-line"><tt class="py-string">          - Any variables listed in a C{@sort} docstring field are</tt> </tt>
+<a name="L933"></a><tt class="py-lineno"> 933</tt>  <tt class="py-line"><tt class="py-string">            listed in the order given by that field.</tt> </tt>
+<a name="L934"></a><tt class="py-lineno"> 934</tt>  <tt class="py-line"><tt class="py-string">          - These are followed by any variables that were found while</tt> </tt>
+<a name="L935"></a><tt class="py-lineno"> 935</tt>  <tt class="py-line"><tt class="py-string">            parsing the source code, in the order in which they were</tt> </tt>
+<a name="L936"></a><tt class="py-lineno"> 936</tt>  <tt class="py-line"><tt class="py-string">            defined in the source file.</tt> </tt>
+<a name="L937"></a><tt class="py-lineno"> 937</tt>  <tt class="py-line"><tt class="py-string">          - Finally, any remaining variables are listed in</tt> </tt>
+<a name="L938"></a><tt class="py-lineno"> 938</tt>  <tt class="py-line"><tt class="py-string">            alphabetical order.</tt> </tt>
+<a name="L939"></a><tt class="py-lineno"> 939</tt>  <tt class="py-line"><tt class="py-string">       @type: C{list} of L{VariableDoc}"""</tt> </tt>
+<a name="L940"></a><tt class="py-lineno"> 940</tt>  <tt class="py-line">    <tt id="link-233" class="py-name" targets="Variable epydoc.apidoc.NamespaceDoc.sort_spec=epydoc.apidoc.NamespaceDoc-class.html#sort_spec"><a title="epydoc.apidoc.NamespaceDoc.sort_spec" class="py-name" href="#" onclick="return doclink('link-233', 'sort_spec', 'link-233');">sort_spec</a></tt> <tt class="py-op">=</tt> <tt id="link-234" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclic [...]
+<a name="L941"></a><tt class="py-lineno"> 941</tt>  <tt class="py-line">    <tt class="py-string">"""@ivar: The order in which variables should be listed,</tt> </tt>
+<a name="L942"></a><tt class="py-lineno"> 942</tt>  <tt class="py-line"><tt class="py-string">       encoded as a list of names.  Any variables whose names are not</tt> </tt>
+<a name="L943"></a><tt class="py-lineno"> 943</tt>  <tt class="py-line"><tt class="py-string">       included in this list should be listed alphabetically,</tt> </tt>
+<a name="L944"></a><tt class="py-lineno"> 944</tt>  <tt class="py-line"><tt class="py-string">       following the variables that are included.</tt> </tt>
+<a name="L945"></a><tt class="py-lineno"> 945</tt>  <tt class="py-line"><tt class="py-string">       @type: C{list} of C{str}"""</tt> </tt>
+<a name="L946"></a><tt class="py-lineno"> 946</tt>  <tt class="py-line">    <tt id="link-235" class="py-name" targets="Variable epydoc.apidoc.NamespaceDoc.group_specs=epydoc.apidoc.NamespaceDoc-class.html#group_specs"><a title="epydoc.apidoc.NamespaceDoc.group_specs" class="py-name" href="#" onclick="return doclink('link-235', 'group_specs', 'link-235');">group_specs</a></tt> <tt class="py-op">=</tt> <tt id="link-236" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href= [...]
+<a name="L947"></a><tt class="py-lineno"> 947</tt>  <tt class="py-line">    <tt class="py-string">"""@ivar: The groups that are defined by this namespace's</tt> </tt>
+<a name="L948"></a><tt class="py-lineno"> 948</tt>  <tt class="py-line"><tt class="py-string">       docstrings.  C{group_specs} is encoded as an ordered list of</tt> </tt>
+<a name="L949"></a><tt class="py-lineno"> 949</tt>  <tt class="py-line"><tt class="py-string">       tuples C{(group_name, elt_names)}, where C{group_name} is the</tt> </tt>
+<a name="L950"></a><tt class="py-lineno"> 950</tt>  <tt class="py-line"><tt class="py-string">        </tt> </tt>
+<a name="L951"></a><tt class="py-lineno"> 951</tt>  <tt class="py-line"><tt class="py-string">       name of a group and C{elt_names} is a list of element names in</tt> </tt>
+<a name="L952"></a><tt class="py-lineno"> 952</tt>  <tt class="py-line"><tt class="py-string">       that group.  (An element can be a variable or a submodule.)  A</tt> </tt>
+<a name="L953"></a><tt class="py-lineno"> 953</tt>  <tt class="py-line"><tt class="py-string">       '*' in an element name will match any string of characters.</tt> </tt>
+<a name="L954"></a><tt class="py-lineno"> 954</tt>  <tt class="py-line"><tt class="py-string">       @type: C{list} of C{(str,list)}"""</tt> </tt>
+<a name="L955"></a><tt class="py-lineno"> 955</tt>  <tt class="py-line">    <tt id="link-237" class="py-name" targets="Variable epydoc.apidoc.NamespaceDoc.variable_groups=epydoc.apidoc.NamespaceDoc-class.html#variable_groups"><a title="epydoc.apidoc.NamespaceDoc.variable_groups" class="py-name" href="#" onclick="return doclink('link-237', 'variable_groups', 'link-237');">variable_groups</a></tt> <tt class="py-op">=</tt> <tt id="link-238" class="py-name"><a title="epydoc.apidoc.UNKNOWN" c [...]
+<a name="L956"></a><tt class="py-lineno"> 956</tt>  <tt class="py-line">    <tt class="py-string">"""@ivar: A dictionary specifying what group each</tt> </tt>
+<a name="L957"></a><tt class="py-lineno"> 957</tt>  <tt class="py-line"><tt class="py-string">       variable belongs to.  The keys of the dictionary are group</tt> </tt>
+<a name="L958"></a><tt class="py-lineno"> 958</tt>  <tt class="py-line"><tt class="py-string">       names, and the values are lists of C{VariableDoc}s.  The order</tt> </tt>
+<a name="L959"></a><tt class="py-lineno"> 959</tt>  <tt class="py-line"><tt class="py-string">       that groups should be listed in should be taken from</tt> </tt>
+<a name="L960"></a><tt class="py-lineno"> 960</tt>  <tt class="py-line"><tt class="py-string">       L{group_specs}.</tt> </tt>
+<a name="L961"></a><tt class="py-lineno"> 961</tt>  <tt class="py-line"><tt class="py-string">       @type: C{dict} from C{str} to C{list} of L{VariableDoc}"""</tt> </tt>
+<a name="L962"></a><tt class="py-lineno"> 962</tt>  <tt class="py-line">    <tt class="py-comment">#} end of group "information about variables"</tt> </tt>
+<a name="L963"></a><tt class="py-lineno"> 963</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="NamespaceDoc.__init__"></a><div id="NamespaceDoc.__init__-def"><a name="L964"></a><tt class="py-lineno"> 964</tt> <a class="py-toggle" href="#" id="NamespaceDoc.__init__-toggle" onclick="return toggle('NamespaceDoc.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.apidoc.NamespaceDoc-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt>< [...]
+</div><div id="NamespaceDoc.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="NamespaceDoc.__init__-expanded"><a name="L965"></a><tt class="py-lineno"> 965</tt>  <tt class="py-line">        <tt class="py-name">kwargs</tt><tt class="py-op">.</tt><tt class="py-name">setdefault</tt><tt class="py-op">(</tt><tt class="py-string">'variables'</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
+<a name="L966"></a><tt class="py-lineno"> 966</tt>  <tt class="py-line">        <tt id="link-239" class="py-name"><a title="epydoc.apidoc.APIDoc" class="py-name" href="#" onclick="return doclink('link-239', 'APIDoc', 'link-82');">APIDoc</a></tt><tt class="py-op">.</tt><tt id="link-240" class="py-name"><a title="epydoc.apidoc.APIDoc.__init__
+epydoc.apidoc.DocIndex.__init__
+epydoc.apidoc.DottedName.__init__
+epydoc.apidoc.NamespaceDoc.__init__
+epydoc.apidoc.VariableDoc.__init__
+epydoc.apidoc._Sentinel.__init__
+epydoc.checker.DocChecker.__init__
+epydoc.cli.ConsoleLogger.__init__
+epydoc.cli.HTMLLogger.__init__
+epydoc.cli.TerminalController.__init__
+epydoc.cli.UnifiedProgressConsoleLogger.__init__
+epydoc.docbuilder.BuildOptions.__init__
+epydoc.docbuilder._ProgressEstimator.__init__
+epydoc.docintrospecter._DevNull.__init__
+epydoc.docstringparser.DocstringField.__init__
+epydoc.docwriter.dotgraph.DotGraph.__init__
+epydoc.docwriter.dotgraph.DotGraphEdge.__init__
+epydoc.docwriter.dotgraph.DotGraphNode.__init__
+epydoc.docwriter.dotgraph.DotGraphUmlClassNode.__init__
+epydoc.docwriter.dotgraph.DotGraphUmlModuleNode.__init__
+epydoc.docwriter.html.HTMLWriter.__init__
+epydoc.docwriter.html._HTMLDocstringLinker.__init__
+epydoc.docwriter.html_colorize.PythonSourceColorizer.__init__
+epydoc.docwriter.latex.LatexWriter.__init__
+epydoc.docwriter.xlink.ApiLinkReader.__init__
+epydoc.docwriter.xlink.DocUrlGenerator.__init__
+epydoc.gui.EpydocGUI.__init__
+epydoc.gui.GUILogger.__init__
+epydoc.log.SimpleLogger.__init__
+epydoc.markup.ConcatenatedDocstring.__init__
+epydoc.markup.Field.__init__
+epydoc.markup.ParseError.__init__
+epydoc.markup.epytext.ColorizingError.__init__
+epydoc.markup.epytext.Element.__init__
+epydoc.markup.epytext.ParsedEpytextDocstring.__init__
+epydoc.markup.epytext.Token.__init__
+epydoc.markup.javadoc.ParsedJavadocDocstring.__init__
+epydoc.markup.plaintext.ParsedPlaintextDocstring.__init__
+epydoc.markup.pyval_repr.ColorizedPyvalRepr.__init__
+epydoc.markup.pyval_repr.PyvalColorizer.__init__
+epydoc.markup.pyval_repr._ColorizerState.__init__
+epydoc.markup.restructuredtext.ParsedRstDocstring.__init__
+epydoc.markup.restructuredtext._DocumentPseudoWriter.__init__
+epydoc.markup.restructuredtext._EpydocHTMLTranslator.__init__
+epydoc.markup.restructuredtext._EpydocLaTeXTranslator.__init__
+epydoc.markup.restructuredtext._EpydocReader.__init__
+epydoc.markup.restructuredtext._SplitFieldsTranslator.__init__
+epydoc.markup.restructuredtext._SummaryExtractor.__init__
+epydoc.markup.restructuredtext._TermsExtractor.__init__
+epydoc.markup.restructuredtext.dotgraph.__init__
+epydoc.util.RunSubprocessError.__init__" class="py-name" href="#" onclick="return doclink('link-240', '__init__', 'link-79');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-name">kwargs</tt><tt class="py-op">)</tt> </tt>
+<a name="L967"></a><tt class="py-lineno"> 967</tt>  <tt class="py-line">        <tt class="py-keyword">assert</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-241" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-241', 'variables', 'link-229');">variables</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt id="link-242" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class [...]
+</div><a name="L968"></a><tt class="py-lineno"> 968</tt>  <tt class="py-line"> </tt>
+<a name="NamespaceDoc.is_detailed"></a><div id="NamespaceDoc.is_detailed-def"><a name="L969"></a><tt class="py-lineno"> 969</tt> <a class="py-toggle" href="#" id="NamespaceDoc.is_detailed-toggle" onclick="return toggle('NamespaceDoc.is_detailed');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.apidoc.NamespaceDoc-class.html#is_detailed">is_detailed</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class [...]
+</div><div id="NamespaceDoc.is_detailed-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="NamespaceDoc.is_detailed-expanded"><a name="L970"></a><tt class="py-lineno"> 970</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
+</div><a name="L971"></a><tt class="py-lineno"> 971</tt>  <tt class="py-line"> </tt>
+<a name="NamespaceDoc.apidoc_links"></a><div id="NamespaceDoc.apidoc_links-def"><a name="L972"></a><tt class="py-lineno"> 972</tt> <a class="py-toggle" href="#" id="NamespaceDoc.apidoc_links-toggle" onclick="return toggle('NamespaceDoc.apidoc_links');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.apidoc.NamespaceDoc-class.html#apidoc_links">apidoc_links</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <t [...]
+</div><div id="NamespaceDoc.apidoc_links-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="NamespaceDoc.apidoc_links-expanded"><a name="L973"></a><tt class="py-lineno"> 973</tt>  <tt class="py-line">        <tt id="link-243" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-243', 'variables', 'link-229');">variables</a></tt> <tt class="py-op">=</tt> <tt class="py-name">filters</tt><tt class="p [...]
+<a name="L974"></a><tt class="py-lineno"> 974</tt>  <tt class="py-line">        <tt id="link-244" class="py-name" targets="Variable epydoc.apidoc.ModuleDoc.imports=epydoc.apidoc.ModuleDoc-class.html#imports"><a title="epydoc.apidoc.ModuleDoc.imports" class="py-name" href="#" onclick="return doclink('link-244', 'imports', 'link-244');">imports</a></tt> <tt class="py-op">=</tt> <tt class="py-name">filters</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt c [...]
+<a name="L975"></a><tt class="py-lineno"> 975</tt>  <tt class="py-line">        <tt class="py-name">private</tt> <tt class="py-op">=</tt> <tt class="py-name">filters</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'private'</tt><tt class="py-op">,</tt> <tt class="py-name">True</tt><tt class="py-op">)</tt> </tt>
+<a name="L976"></a><tt class="py-lineno"> 976</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-245" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-245', 'variables', 'link-229');">variables</a></tt> <tt class="py-keyword">and</tt> <tt id="link-246" class="py-name"><a title="epydoc.apidoc.ModuleDoc.imports" class="py-name" href="#" onclick="return doclink('link-246', 'imports', 'link-244') [...]
+<a name="L977"></a><tt class="py-lineno"> 977</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-247" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-247', 'variables', 'link-229');">variables</a></tt><tt class="py-op">.</tt><tt class="py-name">values</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-comment"># lis [...]
+<a name="L978"></a><tt class="py-lineno"> 978</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-keyword">not</tt> <tt id="link-248" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-248', 'variables', 'link-229');">variables</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L979"></a><tt class="py-lineno"> 979</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L980"></a><tt class="py-lineno"> 980</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-keyword">not</tt> <tt id="link-249" class="py-name"><a title="epydoc.apidoc.ModuleDoc.imports" class="py-name" href="#" onclick="return doclink('link-249', 'imports', 'link-244');">imports</a></tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">private</tt><tt class="py-op">:</tt> </tt>
+<a name="L981"></a><tt class="py-lineno"> 981</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-op">[</tt><tt id="link-250" class="py-name"><a title="epydoc.markup.restructuredtext._EpydocReader.v" class="py-name" href="#" onclick="return doclink('link-250', 'v', 'link-103');">v</a></tt> <tt class="py-keyword">for</tt> <tt id="link-251" class="py-name"><a title="epydoc.markup.restructuredtext._EpydocReader.v" class="py-name" href="#" onclick="return d [...]
+<a name="L982"></a><tt class="py-lineno"> 982</tt>  <tt class="py-line">                    <tt id="link-253" class="py-name"><a title="epydoc.markup.restructuredtext._EpydocReader.v" class="py-name" href="#" onclick="return doclink('link-253', 'v', 'link-103');">v</a></tt><tt class="py-op">.</tt><tt id="link-254" class="py-name"><a title="epydoc.apidoc.VariableDoc.is_imported" class="py-name" href="#" onclick="return doclink('link-254', 'is_imported', 'link-120');">is_imported</a></tt>  [...]
+<a name="L983"></a><tt class="py-lineno"> 983</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-keyword">not</tt> <tt class="py-name">private</tt><tt class="py-op">:</tt> </tt>
+<a name="L984"></a><tt class="py-lineno"> 984</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-op">[</tt><tt id="link-257" class="py-name"><a title="epydoc.markup.restructuredtext._EpydocReader.v" class="py-name" href="#" onclick="return doclink('link-257', 'v', 'link-103');">v</a></tt> <tt class="py-keyword">for</tt> <tt id="link-258" class="py-name"><a title="epydoc.markup.restructuredtext._EpydocReader.v" class="py-name" href="#" onclick="return d [...]
+<a name="L985"></a><tt class="py-lineno"> 985</tt>  <tt class="py-line">                    <tt id="link-260" class="py-name"><a title="epydoc.markup.restructuredtext._EpydocReader.v" class="py-name" href="#" onclick="return doclink('link-260', 'v', 'link-103');">v</a></tt><tt class="py-op">.</tt><tt id="link-261" class="py-name"><a title="epydoc.apidoc.VariableDoc.is_public" class="py-name" href="#" onclick="return doclink('link-261', 'is_public', 'link-128');">is_public</a></tt> <tt cl [...]
+<a name="L986"></a><tt class="py-lineno"> 986</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-keyword">not</tt> <tt id="link-262" class="py-name"><a title="epydoc.apidoc.ModuleDoc.imports" class="py-name" href="#" onclick="return doclink('link-262', 'imports', 'link-244');">imports</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L987"></a><tt class="py-lineno"> 987</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-op">[</tt><tt id="link-263" class="py-name"><a title="epydoc.markup.restructuredtext._EpydocReader.v" class="py-name" href="#" onclick="return doclink('link-263', 'v', 'link-103');">v</a></tt> <tt class="py-keyword">for</tt> <tt id="link-264" class="py-name"><a title="epydoc.markup.restructuredtext._EpydocReader.v" class="py-name" href="#" onclick="return d [...]
+<a name="L988"></a><tt class="py-lineno"> 988</tt>  <tt class="py-line">                    <tt id="link-266" class="py-name"><a title="epydoc.markup.restructuredtext._EpydocReader.v" class="py-name" href="#" onclick="return doclink('link-266', 'v', 'link-103');">v</a></tt><tt class="py-op">.</tt><tt id="link-267" class="py-name"><a title="epydoc.apidoc.VariableDoc.is_imported" class="py-name" href="#" onclick="return doclink('link-267', 'is_imported', 'link-120');">is_imported</a></tt>  [...]
+<a name="L989"></a><tt class="py-lineno"> 989</tt>  <tt class="py-line">        <tt class="py-keyword">assert</tt> <tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-string">'this line should be unreachable'</tt> </tt>
+</div><a name="L990"></a><tt class="py-lineno"> 990</tt>  <tt class="py-line"> </tt>
+<a name="NamespaceDoc.init_sorted_variables"></a><div id="NamespaceDoc.init_sorted_variables-def"><a name="L991"></a><tt class="py-lineno"> 991</tt> <a class="py-toggle" href="#" id="NamespaceDoc.init_sorted_variables-toggle" onclick="return toggle('NamespaceDoc.init_sorted_variables');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.apidoc.NamespaceDoc-class.html#init_sorted_variables">init_sorted_variables</a><tt class="py-op">(</tt><tt [...]
+</div><div id="NamespaceDoc.init_sorted_variables-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="NamespaceDoc.init_sorted_variables-expanded"><a name="L992"></a><tt class="py-lineno"> 992</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L993"></a><tt class="py-lineno"> 993</tt>  <tt class="py-line"><tt class="py-docstring">        Initialize the L{sorted_variables} attribute, based on the</tt> </tt>
+<a name="L994"></a><tt class="py-lineno"> 994</tt>  <tt class="py-line"><tt class="py-docstring">        L{variables} and L{sort_spec} attributes.  This should usually</tt> </tt>
+<a name="L995"></a><tt class="py-lineno"> 995</tt>  <tt class="py-line"><tt class="py-docstring">        be called after all variables have been added to C{variables}</tt> </tt>
+<a name="L996"></a><tt class="py-lineno"> 996</tt>  <tt class="py-line"><tt class="py-docstring">        (including any inherited variables for classes).  </tt> </tt>
+<a name="L997"></a><tt class="py-lineno"> 997</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L998"></a><tt class="py-lineno"> 998</tt>  <tt class="py-line">        <tt class="py-name">unsorted</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-268" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-268', 'variables', 'link-229');">variables</a></tt><tt class="py-op">.</tt><tt class="py-name">copy</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L999"></a><tt class="py-lineno"> 999</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-269" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.sorted_variables" class="py-name" href="#" onclick="return doclink('link-269', 'sorted_variables', 'link-231');">sorted_variables</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L1000"></a><tt class="py-lineno">1000</tt>  <tt class="py-line">     </tt>
+<a name="L1001"></a><tt class="py-lineno">1001</tt>  <tt class="py-line">        <tt class="py-comment"># Add any variables that are listed in sort_spec</tt> </tt>
+<a name="L1002"></a><tt class="py-lineno">1002</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-270" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.sort_spec" class="py-name" href="#" onclick="return doclink('link-270', 'sort_spec', 'link-233');">sort_spec</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt id="link-271" class="py-name"><a title="epy [...]
+<a name="L1003"></a><tt class="py-lineno">1003</tt>  <tt class="py-line">            <tt class="py-name">unused_idents</tt> <tt class="py-op">=</tt> <tt class="py-name">set</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-272" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.sort_spec" class="py-name" href="#" onclick="return doclink('link-272', 'sort_spec', 'link-233');">sort_spec</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1004"></a><tt class="py-lineno">1004</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">ident</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-273" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.sort_spec" class="py-name" href="#" onclick="return doclink('link-273', 'sort_spec', 'link-233');">sort_spec</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1005"></a><tt class="py-lineno">1005</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">ident</tt> <tt class="py-keyword">in</tt> <tt class="py-name">unsorted</tt><tt class="py-op">:</tt> </tt>
+<a name="L1006"></a><tt class="py-lineno">1006</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-274" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.sorted_variables" class="py-name" href="#" onclick="return doclink('link-274', 'sorted_variables', 'link-231');">sorted_variables</a></tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">unsorted</tt><tt class="py-op">.</tt>< [...]
+<a name="L1007"></a><tt class="py-lineno">1007</tt>  <tt class="py-line">                    <tt class="py-name">unused_idents</tt><tt class="py-op">.</tt><tt class="py-name">discard</tt><tt class="py-op">(</tt><tt class="py-name">ident</tt><tt class="py-op">)</tt> </tt>
+<a name="L1008"></a><tt class="py-lineno">1008</tt>  <tt class="py-line">                <tt class="py-keyword">elif</tt> <tt class="py-string">'*'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">ident</tt><tt class="py-op">:</tt> </tt>
+<a name="L1009"></a><tt class="py-lineno">1009</tt>  <tt class="py-line">                    <tt class="py-name">regexp</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">compile</tt><tt class="py-op">(</tt><tt class="py-string">'^%s$'</tt> <tt class="py-op">%</tt> <tt class="py-name">ident</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">'*'</tt><tt class="py-op">,</tt> <tt class=" [...]
+<a name="L1010"></a><tt class="py-lineno">1010</tt>  <tt class="py-line">                    <tt class="py-comment"># sort within matching group?</tt> </tt>
+<a name="L1011"></a><tt class="py-lineno">1011</tt>  <tt class="py-line"><tt class="py-comment"></tt>                    <tt class="py-keyword">for</tt> <tt id="link-275" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-275', 'name', 'link-36');">name</a></tt><tt class="py-op">,</tt> <tt class="py-name">var_doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">unsorted</tt><tt class="py-op">.</tt><tt class="py-name">it [...]
+<a name="L1012"></a><tt class="py-lineno">1012</tt>  <tt class="py-line">                        <tt class="py-keyword">if</tt> <tt class="py-name">regexp</tt><tt class="py-op">.</tt><tt class="py-name">match</tt><tt class="py-op">(</tt><tt id="link-276" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-276', 'name', 'link-36');">name</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1013"></a><tt class="py-lineno">1013</tt>  <tt class="py-line">                            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-277" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.sorted_variables" class="py-name" href="#" onclick="return doclink('link-277', 'sorted_variables', 'link-231');">sorted_variables</a></tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">unsorted</tt><tt class="py-op" [...]
+<a name="L1014"></a><tt class="py-lineno">1014</tt>  <tt class="py-line">                            <tt class="py-name">unused_idents</tt><tt class="py-op">.</tt><tt class="py-name">discard</tt><tt class="py-op">(</tt><tt class="py-name">ident</tt><tt class="py-op">)</tt> </tt>
+<a name="L1015"></a><tt class="py-lineno">1015</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">ident</tt> <tt class="py-keyword">in</tt> <tt class="py-name">unused_idents</tt><tt class="py-op">:</tt> </tt>
+<a name="L1016"></a><tt class="py-lineno">1016</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">ident</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">[</tt><tt class="py-string">'__all__'</tt><tt class="py-op">,</tt> <tt class="py-string">'__docformat__'</tt><tt class="py-op">,</tt> <tt class="py-string">'__path__'</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L1017"></a><tt class="py-lineno">1017</tt>  <tt class="py-line">                    <tt id="link-279" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-279', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-280" class="py-name"><a title="epydoc.checker.DocChecker.warning
+epydoc.log.warning" class="py-name" href="#" onclick="return doclink('link-280', 'warning', 'link-25');">warning</a></tt><tt class="py-op">(</tt><tt class="py-string">"@sort: %s.%s not found"</tt> <tt class="py-op">%</tt> </tt>
+<a name="L1018"></a><tt class="py-lineno">1018</tt>  <tt class="py-line">                                <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-281" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-281', 'canonical_name', 'link-83');">canonical_name</a></tt><tt class="py-op">,</tt> <tt class="py-name">ident</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1019"></a><tt class="py-lineno">1019</tt>  <tt class="py-line">                     </tt>
+<a name="L1020"></a><tt class="py-lineno">1020</tt>  <tt class="py-line">     </tt>
+<a name="L1021"></a><tt class="py-lineno">1021</tt>  <tt class="py-line">        <tt class="py-comment"># Add any remaining variables in alphabetical order.</tt> </tt>
+<a name="L1022"></a><tt class="py-lineno">1022</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">var_docs</tt> <tt class="py-op">=</tt> <tt class="py-name">unsorted</tt><tt class="py-op">.</tt><tt class="py-name">items</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1023"></a><tt class="py-lineno">1023</tt>  <tt class="py-line">        <tt class="py-name">var_docs</tt><tt class="py-op">.</tt><tt class="py-name">sort</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1024"></a><tt class="py-lineno">1024</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt id="link-282" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-282', 'name', 'link-36');">name</a></tt><tt class="py-op">,</tt> <tt class="py-name">var_doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">var_docs</tt><tt class="py-op">:</tt> </tt>
+<a name="L1025"></a><tt class="py-lineno">1025</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-283" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.sorted_variables" class="py-name" href="#" onclick="return doclink('link-283', 'sorted_variables', 'link-231');">sorted_variables</a></tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">var_doc</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1026"></a><tt class="py-lineno">1026</tt>  <tt class="py-line"> </tt>
+<a name="NamespaceDoc.init_variable_groups"></a><div id="NamespaceDoc.init_variable_groups-def"><a name="L1027"></a><tt class="py-lineno">1027</tt> <a class="py-toggle" href="#" id="NamespaceDoc.init_variable_groups-toggle" onclick="return toggle('NamespaceDoc.init_variable_groups');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.apidoc.NamespaceDoc-class.html#init_variable_groups">init_variable_groups</a><tt class="py-op">(</tt><tt clas [...]
+</div><div id="NamespaceDoc.init_variable_groups-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="NamespaceDoc.init_variable_groups-expanded"><a name="L1028"></a><tt class="py-lineno">1028</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L1029"></a><tt class="py-lineno">1029</tt>  <tt class="py-line"><tt class="py-docstring">        Initialize the L{variable_groups} attribute, based on the</tt> </tt>
+<a name="L1030"></a><tt class="py-lineno">1030</tt>  <tt class="py-line"><tt class="py-docstring">        L{sorted_variables} and L{group_specs} attributes.</tt> </tt>
+<a name="L1031"></a><tt class="py-lineno">1031</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L1032"></a><tt class="py-lineno">1032</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-284" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.sorted_variables" class="py-name" href="#" onclick="return doclink('link-284', 'sorted_variables', 'link-231');">sorted_variables</a></tt> <tt class="py-keyword">is</tt> <tt id="link-285" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" hre [...]
+<a name="L1033"></a><tt class="py-lineno">1033</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-286" class="py-name" targets="Method epydoc.apidoc.NamespaceDoc.init_sorted_variables()=epydoc.apidoc.NamespaceDoc-class.html#init_sorted_variables"><a title="epydoc.apidoc.NamespaceDoc.init_sorted_variables" class="py-name" href="#" onclick="return doclink('link-286', 'init_sorted_variables', 'link-286');">init_sorted_variables</a></tt><t [...]
+<a name="L1034"></a><tt class="py-lineno">1034</tt>  <tt class="py-line">        <tt class="py-keyword">assert</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-287" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.sorted_variables" class="py-name" href="#" onclick="return doclink('link-287', 'sorted_variables', 'link-231');">sorted_variables</a></tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class=" [...]
+<a name="L1035"></a><tt class="py-lineno">1035</tt>  <tt class="py-line"> </tt>
+<a name="L1036"></a><tt class="py-lineno">1036</tt>  <tt class="py-line">        <tt class="py-name">elts</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt id="link-289" class="py-name"><a title="epydoc.markup.restructuredtext._EpydocReader.v" class="py-name" href="#" onclick="return doclink('link-289', 'v', 'link-103');">v</a></tt><tt class="py-op">.</tt><tt id="link-290" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" o [...]
+<a name="L1037"></a><tt class="py-lineno">1037</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_unused_groups</tt> <tt class="py-op">=</tt> <tt class="py-name">dict</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-name">n</tt><tt class="py-op">,</tt><tt class="py-name">set</tt><tt class="py-op">(</tt><tt class="py-name">i</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-k [...]
+<a name="L1038"></a><tt class="py-lineno">1038</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-295" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variable_groups" class="py-name" href="#" onclick="return doclink('link-295', 'variable_groups', 'link-237');">variable_groups</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-296" class="py-name" targets="Method epydoc.apidoc.Namespace [...]
+</div><a name="L1039"></a><tt class="py-lineno">1039</tt>  <tt class="py-line"> </tt>
+<a name="NamespaceDoc.group_names"></a><div id="NamespaceDoc.group_names-def"><a name="L1040"></a><tt class="py-lineno">1040</tt> <a class="py-toggle" href="#" id="NamespaceDoc.group_names-toggle" onclick="return toggle('NamespaceDoc.group_names');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.apidoc.NamespaceDoc-class.html#group_names">group_names</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt clas [...]
+</div><div id="NamespaceDoc.group_names-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="NamespaceDoc.group_names-expanded"><a name="L1041"></a><tt class="py-lineno">1041</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L1042"></a><tt class="py-lineno">1042</tt>  <tt class="py-line"><tt class="py-docstring">        Return a list of the group names defined by this namespace, in</tt> </tt>
+<a name="L1043"></a><tt class="py-lineno">1043</tt>  <tt class="py-line"><tt class="py-docstring">        the order in which they should be listed, with no duplicates.</tt> </tt>
+<a name="L1044"></a><tt class="py-lineno">1044</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L1045"></a><tt class="py-lineno">1045</tt>  <tt class="py-line">        <tt id="link-297" class="py-name" targets="Function epydoc.docwriter.dotgraph.name_list()=epydoc.docwriter.dotgraph-module.html#name_list"><a title="epydoc.docwriter.dotgraph.name_list" class="py-name" href="#" onclick="return doclink('link-297', 'name_list', 'link-297');">name_list</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-string">''</tt><tt class="py-op">]</tt> </tt>
+<a name="L1046"></a><tt class="py-lineno">1046</tt>  <tt class="py-line">        <tt class="py-name">name_set</tt> <tt class="py-op">=</tt> <tt class="py-name">set</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1047"></a><tt class="py-lineno">1047</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt id="link-298" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-298', 'name', 'link-36');">name</a></tt><tt class="py-op">,</tt> <tt class="py-name">spec</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-299" class="py-name"><a title="epydoc.apidoc.NamespaceDo [...]
+<a name="L1048"></a><tt class="py-lineno">1048</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt id="link-300" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-300', 'name', 'link-36');">name</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">name_set</tt><tt class="py-op">:</tt> </tt>
+<a name="L1049"></a><tt class="py-lineno">1049</tt>  <tt class="py-line">                <tt class="py-name">name_set</tt><tt class="py-op">.</tt><tt class="py-name">add</tt><tt class="py-op">(</tt><tt id="link-301" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-301', 'name', 'link-36');">name</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1050"></a><tt class="py-lineno">1050</tt>  <tt class="py-line">                <tt id="link-302" class="py-name"><a title="epydoc.docwriter.dotgraph.name_list" class="py-name" href="#" onclick="return doclink('link-302', 'name_list', 'link-297');">name_list</a></tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-303" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-303',  [...]
+<a name="L1051"></a><tt class="py-lineno">1051</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-304" class="py-name"><a title="epydoc.docwriter.dotgraph.name_list" class="py-name" href="#" onclick="return doclink('link-304', 'name_list', 'link-297');">name_list</a></tt> </tt>
+</div><a name="L1052"></a><tt class="py-lineno">1052</tt>  <tt class="py-line"> </tt>
+<a name="NamespaceDoc._init_grouping"></a><div id="NamespaceDoc._init_grouping-def"><a name="L1053"></a><tt class="py-lineno">1053</tt> <a class="py-toggle" href="#" id="NamespaceDoc._init_grouping-toggle" onclick="return toggle('NamespaceDoc._init_grouping');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.apidoc.NamespaceDoc-class.html#_init_grouping">_init_grouping</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py- [...]
+</div><div id="NamespaceDoc._init_grouping-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="NamespaceDoc._init_grouping-expanded"><a name="L1054"></a><tt class="py-lineno">1054</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L1055"></a><tt class="py-lineno">1055</tt>  <tt class="py-line"><tt class="py-docstring">        Divide a given a list of APIDoc objects into groups, as</tt> </tt>
+<a name="L1056"></a><tt class="py-lineno">1056</tt>  <tt class="py-line"><tt class="py-docstring">        specified by L{self.group_specs}.</tt> </tt>
+<a name="L1057"></a><tt class="py-lineno">1057</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1058"></a><tt class="py-lineno">1058</tt>  <tt class="py-line"><tt class="py-docstring">        @param elts: A list of tuples C{(name, apidoc)}.</tt> </tt>
+<a name="L1059"></a><tt class="py-lineno">1059</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt>
+<a name="L1060"></a><tt class="py-lineno">1060</tt>  <tt class="py-line"><tt class="py-docstring">        @return: A list of tuples C{(groupname, elts)}, where</tt> </tt>
+<a name="L1061"></a><tt class="py-lineno">1061</tt>  <tt class="py-line"><tt class="py-docstring">        C{groupname} is the name of a group and C{elts} is a list of</tt> </tt>
+<a name="L1062"></a><tt class="py-lineno">1062</tt>  <tt class="py-line"><tt class="py-docstring">        C{APIDoc}s in that group.  The first tuple has name C{''}, and</tt> </tt>
+<a name="L1063"></a><tt class="py-lineno">1063</tt>  <tt class="py-line"><tt class="py-docstring">        is used for ungrouped elements.  The remaining tuples are</tt> </tt>
+<a name="L1064"></a><tt class="py-lineno">1064</tt>  <tt class="py-line"><tt class="py-docstring">        listed in the order that they appear in C{self.group_specs}.</tt> </tt>
+<a name="L1065"></a><tt class="py-lineno">1065</tt>  <tt class="py-line"><tt class="py-docstring">        Within each tuple, the elements are listed in the order that</tt> </tt>
+<a name="L1066"></a><tt class="py-lineno">1066</tt>  <tt class="py-line"><tt class="py-docstring">        they appear in C{api_docs}.</tt> </tt>
+<a name="L1067"></a><tt class="py-lineno">1067</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L1068"></a><tt class="py-lineno">1068</tt>  <tt class="py-line">        <tt class="py-comment"># Make the common case fast.</tt> </tt>
+<a name="L1069"></a><tt class="py-lineno">1069</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-305" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.group_specs" class="py-name" href="#" onclick="return doclink('link-305', 'group_specs', 'link-235');">group_specs</a></tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <t [...]
+<a name="L1070"></a><tt class="py-lineno">1070</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-op">{</tt><tt class="py-string">''</tt><tt class="py-op">:</tt> <tt class="py-op">[</tt><tt class="py-name">elt</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-keyword">for</tt> <tt class="py-name">elt</tt> <tt class="py-keyword">in</tt> <tt class="py-name">elts</tt><tt class="py-op">]</tt><tt class="py-op">}< [...]
+<a name="L1071"></a><tt class="py-lineno">1071</tt>  <tt class="py-line"> </tt>
+<a name="L1072"></a><tt class="py-lineno">1072</tt>  <tt class="py-line">        <tt class="py-name">ungrouped</tt> <tt class="py-op">=</tt> <tt class="py-name">set</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">elt_doc</tt> <tt class="py-keyword">for</tt> <tt class="py-op">(</tt><tt class="py-name">elt_name</tt><tt class="py-op">,</tt> <tt class="py-name">elt_doc</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-name">elts</tt><tt class=" [...]
+<a name="L1073"></a><tt class="py-lineno">1073</tt>  <tt class="py-line"> </tt>
+<a name="L1074"></a><tt class="py-lineno">1074</tt>  <tt class="py-line">        <tt class="py-name">ungrouped</tt> <tt class="py-op">=</tt> <tt class="py-name">dict</tt><tt class="py-op">(</tt><tt class="py-name">elts</tt><tt class="py-op">)</tt> </tt>
+<a name="L1075"></a><tt class="py-lineno">1075</tt>  <tt class="py-line">        <tt class="py-name">groups</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L1076"></a><tt class="py-lineno">1076</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">elt_name</tt><tt class="py-op">,</tt> <tt class="py-name">elt_doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">elts</tt><tt class="py-op">:</tt> </tt>
+<a name="L1077"></a><tt class="py-lineno">1077</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-op">(</tt><tt class="py-name">group_name</tt><tt class="py-op">,</tt> <tt class="py-name">idents</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-306" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.group_specs" class="py-name" href="#" onclick="return doclink('link-306', 'group [...]
+<a name="L1078"></a><tt class="py-lineno">1078</tt>  <tt class="py-line">                <tt class="py-name">group</tt> <tt class="py-op">=</tt> <tt class="py-name">groups</tt><tt class="py-op">.</tt><tt class="py-name">setdefault</tt><tt class="py-op">(</tt><tt class="py-name">group_name</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1079"></a><tt class="py-lineno">1079</tt>  <tt class="py-line">                <tt class="py-name">unused_groups</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_unused_groups</tt><tt class="py-op">[</tt><tt class="py-name">group_name</tt><tt class="py-op">]</tt> </tt>
+<a name="L1080"></a><tt class="py-lineno">1080</tt>  <tt class="py-line">                <tt class="py-keyword">for</tt> <tt class="py-name">ident</tt> <tt class="py-keyword">in</tt> <tt class="py-name">idents</tt><tt class="py-op">:</tt> </tt>
+<a name="L1081"></a><tt class="py-lineno">1081</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">match</tt><tt class="py-op">(</tt><tt class="py-string">'^%s$'</tt> <tt class="py-op">%</tt> <tt class="py-name">ident</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">'*'</tt><tt class="py-op">,</tt> <tt class="py-string">'(.*)'</tt><tt cl [...]
+<a name="L1082"></a><tt class="py-lineno">1082</tt>  <tt class="py-line">                        <tt class="py-name">unused_groups</tt><tt class="py-op">.</tt><tt class="py-name">discard</tt><tt class="py-op">(</tt><tt class="py-name">ident</tt><tt class="py-op">)</tt> </tt>
+<a name="L1083"></a><tt class="py-lineno">1083</tt>  <tt class="py-line">                        <tt class="py-keyword">if</tt> <tt class="py-name">elt_name</tt> <tt class="py-keyword">in</tt> <tt class="py-name">ungrouped</tt><tt class="py-op">:</tt> </tt>
+<a name="L1084"></a><tt class="py-lineno">1084</tt>  <tt class="py-line">                            <tt class="py-name">group</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">ungrouped</tt><tt class="py-op">.</tt><tt class="py-name">pop</tt><tt class="py-op">(</tt><tt class="py-name">elt_name</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1085"></a><tt class="py-lineno">1085</tt>  <tt class="py-line">                        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1086"></a><tt class="py-lineno">1086</tt>  <tt class="py-line">                            <tt id="link-307" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-307', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-308" class="py-name"><a title="epydoc.checker.DocChecker.warning
+epydoc.log.warning" class="py-name" href="#" onclick="return doclink('link-308', 'warning', 'link-25');">warning</a></tt><tt class="py-op">(</tt><tt class="py-string">"%s.%s in multiple groups"</tt> <tt class="py-op">%</tt> </tt>
+<a name="L1087"></a><tt class="py-lineno">1087</tt>  <tt class="py-line">                                        <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-309" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-309', 'canonical_name', 'link-83');">canonical_name</a></tt><tt class="py-op">,</tt> <tt class="py-name">elt_name</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1088"></a><tt class="py-lineno">1088</tt>  <tt class="py-line"> </tt>
+<a name="L1089"></a><tt class="py-lineno">1089</tt>  <tt class="py-line">        <tt class="py-comment"># Convert ungrouped from an unordered set to an ordered list.</tt> </tt>
+<a name="L1090"></a><tt class="py-lineno">1090</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">groups</tt><tt class="py-op">[</tt><tt class="py-string">''</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">elt_doc</tt> <tt class="py-keyword">for</tt> <tt class="py-op">(</tt><tt class="py-name">elt_name</tt><tt class="py-op">,</tt> <tt class="py-name">elt_doc</tt><tt class="py-op">)</tt> <tt class="py-keyword [...]
+<a name="L1091"></a><tt class="py-lineno">1091</tt>  <tt class="py-line">                      <tt class="py-keyword">if</tt> <tt class="py-name">elt_name</tt> <tt class="py-keyword">in</tt> <tt class="py-name">ungrouped</tt><tt class="py-op">]</tt> </tt>
+<a name="L1092"></a><tt class="py-lineno">1092</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">groups</tt> </tt>
+</div><a name="L1093"></a><tt class="py-lineno">1093</tt>  <tt class="py-line">     </tt>
+<a name="NamespaceDoc.report_unused_groups"></a><div id="NamespaceDoc.report_unused_groups-def"><a name="L1094"></a><tt class="py-lineno">1094</tt> <a class="py-toggle" href="#" id="NamespaceDoc.report_unused_groups-toggle" onclick="return toggle('NamespaceDoc.report_unused_groups');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.apidoc.NamespaceDoc-class.html#report_unused_groups">report_unused_groups</a><tt class="py-op">(</tt><tt clas [...]
+</div><div id="NamespaceDoc.report_unused_groups-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="NamespaceDoc.report_unused_groups-expanded"><a name="L1095"></a><tt class="py-lineno">1095</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L1096"></a><tt class="py-lineno">1096</tt>  <tt class="py-line"><tt class="py-docstring">        Issue a warning for any @group items that were not used by</tt> </tt>
+<a name="L1097"></a><tt class="py-lineno">1097</tt>  <tt class="py-line"><tt class="py-docstring">        L{_init_grouping()}.</tt> </tt>
+<a name="L1098"></a><tt class="py-lineno">1098</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L1099"></a><tt class="py-lineno">1099</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-op">(</tt><tt class="py-name">group</tt><tt class="py-op">,</tt> <tt class="py-name">unused_idents</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_unused_groups</tt><tt class="py-op">.</tt><tt class="py-name">items</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="p [...]
+<a name="L1100"></a><tt class="py-lineno">1100</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">ident</tt> <tt class="py-keyword">in</tt> <tt class="py-name">unused_idents</tt><tt class="py-op">:</tt> </tt>
+<a name="L1101"></a><tt class="py-lineno">1101</tt>  <tt class="py-line">                <tt id="link-310" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-310', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-311" class="py-name"><a title="epydoc.checker.DocChecker.warning
+epydoc.log.warning" class="py-name" href="#" onclick="return doclink('link-311', 'warning', 'link-25');">warning</a></tt><tt class="py-op">(</tt><tt class="py-string">"@group %s: %s.%s not found"</tt> <tt class="py-op">%</tt> </tt>
+<a name="L1102"></a><tt class="py-lineno">1102</tt>  <tt class="py-line">                            <tt class="py-op">(</tt><tt class="py-name">group</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-312" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-312', 'canonical_name', 'link-83');">canonical_name</a></tt><tt class="py-op">,</tt> <tt class="py-name">ident</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L1103"></a><tt class="py-lineno">1103</tt>  <tt class="py-line">                         </tt>
+<a name="ModuleDoc"></a><div id="ModuleDoc-def"><a name="L1104"></a><tt class="py-lineno">1104</tt> <a class="py-toggle" href="#" id="ModuleDoc-toggle" onclick="return toggle('ModuleDoc');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="epydoc.apidoc.ModuleDoc-class.html">ModuleDoc</a><tt class="py-op">(</tt><tt class="py-base-class">NamespaceDoc</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ModuleDoc-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="ModuleDoc-expanded"><a name="L1105"></a><tt class="py-lineno">1105</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L1106"></a><tt class="py-lineno">1106</tt>  <tt class="py-line"><tt class="py-docstring">    API documentation information about a single module.</tt> </tt>
+<a name="L1107"></a><tt class="py-lineno">1107</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1108"></a><tt class="py-lineno">1108</tt>  <tt class="py-line">    <tt class="py-comment">#{ Information about the Module</tt> </tt>
+<a name="L1109"></a><tt class="py-lineno">1109</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-313" class="py-name" targets="Variable epydoc.apidoc.ModuleDoc.filename=epydoc.apidoc.ModuleDoc-class.html#filename"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-313', 'filename', 'link-313');">filename</a></tt> <tt class="py-op">=</tt> <tt id="link-314" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name"  [...]
+<a name="L1110"></a><tt class="py-lineno">1110</tt>  <tt class="py-line">    <tt class="py-string">"""@ivar: The name of the file that defines the module.</tt> </tt>
+<a name="L1111"></a><tt class="py-lineno">1111</tt>  <tt class="py-line"><tt class="py-string">       @type: C{string}"""</tt> </tt>
+<a name="L1112"></a><tt class="py-lineno">1112</tt>  <tt class="py-line">    <tt id="link-315" class="py-name" targets="Variable epydoc.apidoc.ModuleDoc.docformat=epydoc.apidoc.ModuleDoc-class.html#docformat"><a title="epydoc.apidoc.ModuleDoc.docformat" class="py-name" href="#" onclick="return doclink('link-315', 'docformat', 'link-315');">docformat</a></tt> <tt class="py-op">=</tt> <tt id="link-316" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="retur [...]
+<a name="L1113"></a><tt class="py-lineno">1113</tt>  <tt class="py-line">    <tt class="py-string">"""@ivar: The markup language used by docstrings in this module.</tt> </tt>
+<a name="L1114"></a><tt class="py-lineno">1114</tt>  <tt class="py-line"><tt class="py-string">       @type: C{string}"""</tt> </tt>
+<a name="L1115"></a><tt class="py-lineno">1115</tt>  <tt class="py-line">    <tt class="py-comment">#{ Information about Submodules</tt> </tt>
+<a name="L1116"></a><tt class="py-lineno">1116</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-317" class="py-name" targets="Variable epydoc.apidoc.ModuleDoc.submodules=epydoc.apidoc.ModuleDoc-class.html#submodules"><a title="epydoc.apidoc.ModuleDoc.submodules" class="py-name" href="#" onclick="return doclink('link-317', 'submodules', 'link-317');">submodules</a></tt> <tt class="py-op">=</tt> <tt id="link-318" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class= [...]
+<a name="L1117"></a><tt class="py-lineno">1117</tt>  <tt class="py-line">    <tt class="py-string">"""@ivar: Modules contained by this module (if this module</tt> </tt>
+<a name="L1118"></a><tt class="py-lineno">1118</tt>  <tt class="py-line"><tt class="py-string">       is a package).  (Note: on rare occasions, a module may have a</tt> </tt>
+<a name="L1119"></a><tt class="py-lineno">1119</tt>  <tt class="py-line"><tt class="py-string">       submodule that is shadowed by a variable with the same name.)</tt> </tt>
+<a name="L1120"></a><tt class="py-lineno">1120</tt>  <tt class="py-line"><tt class="py-string">       @type: C{list} of L{ModuleDoc}"""</tt> </tt>
+<a name="L1121"></a><tt class="py-lineno">1121</tt>  <tt class="py-line">    <tt id="link-319" class="py-name" targets="Variable epydoc.apidoc.ModuleDoc.submodule_groups=epydoc.apidoc.ModuleDoc-class.html#submodule_groups"><a title="epydoc.apidoc.ModuleDoc.submodule_groups" class="py-name" href="#" onclick="return doclink('link-319', 'submodule_groups', 'link-319');">submodule_groups</a></tt> <tt class="py-op">=</tt> <tt id="link-320" class="py-name"><a title="epydoc.apidoc.UNKNOWN" clas [...]
+<a name="L1122"></a><tt class="py-lineno">1122</tt>  <tt class="py-line">    <tt class="py-string">"""@ivar: A dictionary specifying what group each</tt> </tt>
+<a name="L1123"></a><tt class="py-lineno">1123</tt>  <tt class="py-line"><tt class="py-string">       submodule belongs to.  The keys of the dictionary are group</tt> </tt>
+<a name="L1124"></a><tt class="py-lineno">1124</tt>  <tt class="py-line"><tt class="py-string">       names, and the values are lists of C{ModuleDoc}s.  The order</tt> </tt>
+<a name="L1125"></a><tt class="py-lineno">1125</tt>  <tt class="py-line"><tt class="py-string">       that groups should be listed in should be taken from</tt> </tt>
+<a name="L1126"></a><tt class="py-lineno">1126</tt>  <tt class="py-line"><tt class="py-string">       L{group_specs}.</tt> </tt>
+<a name="L1127"></a><tt class="py-lineno">1127</tt>  <tt class="py-line"><tt class="py-string">       @type: C{dict} from C{str} to C{list} of L{ModuleDoc}"""</tt> </tt>
+<a name="L1128"></a><tt class="py-lineno">1128</tt>  <tt class="py-line">    <tt class="py-comment">#{ Information about Packages</tt> </tt>
+<a name="L1129"></a><tt class="py-lineno">1129</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-321" class="py-name" targets="Variable epydoc.apidoc.ModuleDoc.package=epydoc.apidoc.ModuleDoc-class.html#package"><a title="epydoc.apidoc.ModuleDoc.package" class="py-name" href="#" onclick="return doclink('link-321', 'package', 'link-321');">package</a></tt> <tt class="py-op">=</tt> <tt id="link-322" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href= [...]
+<a name="L1130"></a><tt class="py-lineno">1130</tt>  <tt class="py-line">    <tt class="py-string">"""@ivar: API documentation for the module's containing package.</tt> </tt>
+<a name="L1131"></a><tt class="py-lineno">1131</tt>  <tt class="py-line"><tt class="py-string">       @type: L{ModuleDoc}"""</tt> </tt>
+<a name="L1132"></a><tt class="py-lineno">1132</tt>  <tt class="py-line">    <tt id="link-323" class="py-name" targets="Variable epydoc.apidoc.ModuleDoc.is_package=epydoc.apidoc.ModuleDoc-class.html#is_package"><a title="epydoc.apidoc.ModuleDoc.is_package" class="py-name" href="#" onclick="return doclink('link-323', 'is_package', 'link-323');">is_package</a></tt> <tt class="py-op">=</tt> <tt id="link-324" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick=" [...]
+<a name="L1133"></a><tt class="py-lineno">1133</tt>  <tt class="py-line">    <tt class="py-string">"""@ivar: True if this C{ModuleDoc} describes a package.</tt> </tt>
+<a name="L1134"></a><tt class="py-lineno">1134</tt>  <tt class="py-line"><tt class="py-string">       @type: C{bool}"""</tt> </tt>
+<a name="L1135"></a><tt class="py-lineno">1135</tt>  <tt class="py-line">    <tt id="link-325" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-325', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-326" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-326', 'UNKNOWN', 'link-39');">UNKNOWN</a></tt> </tt>
+<a name="L1136"></a><tt class="py-lineno">1136</tt>  <tt class="py-line">    <tt class="py-string">"""@ivar: If this C{ModuleDoc} describes a package, then C{path}</tt> </tt>
+<a name="L1137"></a><tt class="py-lineno">1137</tt>  <tt class="py-line"><tt class="py-string">       contains a list of directories that constitute its path (i.e.,</tt> </tt>
+<a name="L1138"></a><tt class="py-lineno">1138</tt>  <tt class="py-line"><tt class="py-string">       the value of its C{__path__} variable).</tt> </tt>
+<a name="L1139"></a><tt class="py-lineno">1139</tt>  <tt class="py-line"><tt class="py-string">       @type: C{list} of C{str}"""</tt> </tt>
+<a name="L1140"></a><tt class="py-lineno">1140</tt>  <tt class="py-line">    <tt class="py-comment">#{ Information about Imported Variables</tt> </tt>
+<a name="L1141"></a><tt class="py-lineno">1141</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-327" class="py-name"><a title="epydoc.apidoc.ModuleDoc.imports" class="py-name" href="#" onclick="return doclink('link-327', 'imports', 'link-244');">imports</a></tt> <tt class="py-op">=</tt> <tt id="link-328" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-328', 'UNKNOWN', 'link-39');">UNKNOWN</a></tt> </tt>
+<a name="L1142"></a><tt class="py-lineno">1142</tt>  <tt class="py-line">    <tt class="py-string">"""@ivar: A list of the source names of variables imported into</tt> </tt>
+<a name="L1143"></a><tt class="py-lineno">1143</tt>  <tt class="py-line"><tt class="py-string">       this module.  This is used to construct import graphs.</tt> </tt>
+<a name="L1144"></a><tt class="py-lineno">1144</tt>  <tt class="py-line"><tt class="py-string">       @type: C{list} of L{DottedName}"""</tt> </tt>
+<a name="L1145"></a><tt class="py-lineno">1145</tt>  <tt class="py-line">    <tt class="py-comment">#}</tt> </tt>
+<a name="L1146"></a><tt class="py-lineno">1146</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="ModuleDoc.apidoc_links"></a><div id="ModuleDoc.apidoc_links-def"><a name="L1147"></a><tt class="py-lineno">1147</tt> <a class="py-toggle" href="#" id="ModuleDoc.apidoc_links-toggle" onclick="return toggle('ModuleDoc.apidoc_links');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.apidoc.ModuleDoc-class.html#apidoc_links">apidoc_links</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-op [...]
+</div><div id="ModuleDoc.apidoc_links-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ModuleDoc.apidoc_links-expanded"><a name="L1148"></a><tt class="py-lineno">1148</tt>  <tt class="py-line">        <tt class="py-name">val_docs</tt> <tt class="py-op">=</tt> <tt id="link-329" class="py-name" targets="Class epydoc.apidoc.NamespaceDoc=epydoc.apidoc.NamespaceDoc-class.html"><a title="epydoc.apidoc.NamespaceDoc" class="py-name" href="#" onclick="return doclink('l [...]
+epydoc.apidoc.ClassDoc.apidoc_links
+epydoc.apidoc.ModuleDoc.apidoc_links
+epydoc.apidoc.NamespaceDoc.apidoc_links
+epydoc.apidoc.PropertyDoc.apidoc_links
+epydoc.apidoc.ValueDoc.apidoc_links
+epydoc.apidoc.VariableDoc.apidoc_links" class="py-name" href="#" onclick="return doclink('link-330', 'apidoc_links', 'link-105');">apidoc_links</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-name">filters</tt><tt class="py-op">)</tt> </tt>
+<a name="L1149"></a><tt class="py-lineno">1149</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">filters</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'packages'</tt><tt class="py-op">,</tt> <tt class="py-name">True</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L1150"></a><tt class="py-lineno">1150</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-331" class="py-name"><a title="epydoc.apidoc.ModuleDoc.package" class="py-name" href="#" onclick="return doclink('link-331', 'package', 'link-321');">package</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-332" class="py-name" [...]
+<a name="L1151"></a><tt class="py-lineno">1151</tt>  <tt class="py-line">            <tt class="py-name">val_docs</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-333" class="py-name"><a title="epydoc.apidoc.ModuleDoc.package" class="py-name" href="#" onclick="return doclink('link-333', 'package', 'link-321');">package</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1152"></a><tt class="py-lineno">1152</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">filters</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'submodules'</tt><tt class="py-op">,</tt> <tt class="py-name">True</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L1153"></a><tt class="py-lineno">1153</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-334" class="py-name"><a title="epydoc.apidoc.ModuleDoc.submodules" class="py-name" href="#" onclick="return doclink('link-334', 'submodules', 'link-317');">submodules</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-335" class= [...]
+<a name="L1154"></a><tt class="py-lineno">1154</tt>  <tt class="py-line">            <tt class="py-name">val_docs</tt> <tt class="py-op">+=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-336" class="py-name"><a title="epydoc.apidoc.ModuleDoc.submodules" class="py-name" href="#" onclick="return doclink('link-336', 'submodules', 'link-317');">submodules</a></tt> </tt>
+<a name="L1155"></a><tt class="py-lineno">1155</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">val_docs</tt> </tt>
+</div><a name="L1156"></a><tt class="py-lineno">1156</tt>  <tt class="py-line"> </tt>
+<a name="ModuleDoc.init_submodule_groups"></a><div id="ModuleDoc.init_submodule_groups-def"><a name="L1157"></a><tt class="py-lineno">1157</tt> <a class="py-toggle" href="#" id="ModuleDoc.init_submodule_groups-toggle" onclick="return toggle('ModuleDoc.init_submodule_groups');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.apidoc.ModuleDoc-class.html#init_submodule_groups">init_submodule_groups</a><tt class="py-op">(</tt><tt class="py-par [...]
+</div><div id="ModuleDoc.init_submodule_groups-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ModuleDoc.init_submodule_groups-expanded"><a name="L1158"></a><tt class="py-lineno">1158</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L1159"></a><tt class="py-lineno">1159</tt>  <tt class="py-line"><tt class="py-docstring">        Initialize the L{submodule_groups} attribute, based on the</tt> </tt>
+<a name="L1160"></a><tt class="py-lineno">1160</tt>  <tt class="py-line"><tt class="py-docstring">        L{submodules} and L{group_specs} attributes.</tt> </tt>
+<a name="L1161"></a><tt class="py-lineno">1161</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L1162"></a><tt class="py-lineno">1162</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-337" class="py-name"><a title="epydoc.apidoc.ModuleDoc.submodules" class="py-name" href="#" onclick="return doclink('link-337', 'submodules', 'link-317');">submodules</a></tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-338" class="py-n [...]
+<a name="L1163"></a><tt class="py-lineno">1163</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> </tt>
+<a name="L1164"></a><tt class="py-lineno">1164</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-339" class="py-name"><a title="epydoc.apidoc.ModuleDoc.submodules" class="py-name" href="#" onclick="return doclink('link-339', 'submodules', 'link-317');">submodules</a></tt> <tt class="py-op">=</tt> <tt id="link-340" class="py-name" targets="Function epydoc.compat.sorted()=epydoc.compat-module.html#sorted"><a title="epydoc.compat.sorted" cla [...]
+<a name="L1165"></a><tt class="py-lineno">1165</tt>  <tt class="py-line">                                 <tt id="link-342" class="py-name"><a title="epydoc.cli.key" class="py-name" href="#" onclick="return doclink('link-342', 'key', 'link-65');">key</a></tt><tt class="py-op">=</tt><tt class="py-keyword">lambda</tt> <tt class="py-name">m</tt><tt class="py-op">:</tt><tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-343" class="py-name"><a title="epydoc.apidoc.GenericValueDoc. [...]
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-343', 'canonical_name', 'link-83');">canonical_name</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1166"></a><tt class="py-lineno">1166</tt>  <tt class="py-line">        <tt class="py-name">elts</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-344" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-344', 'canonical_name', 'link-83');">canonical_name</a></tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">m</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">m</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-345 [...]
+<a name="L1167"></a><tt class="py-lineno">1167</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-346" class="py-name"><a title="epydoc.apidoc.ModuleDoc.submodule_groups" class="py-name" href="#" onclick="return doclink('link-346', 'submodule_groups', 'link-319');">submodule_groups</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-347" class="py-name"><a title="epydoc.apidoc.NamespaceDoc._i [...]
+</div><a name="L1168"></a><tt class="py-lineno">1168</tt>  <tt class="py-line"> </tt>
+<a name="ModuleDoc.select_variables"></a><div id="ModuleDoc.select_variables-def"><a name="L1169"></a><tt class="py-lineno">1169</tt> <a class="py-toggle" href="#" id="ModuleDoc.select_variables-toggle" onclick="return toggle('ModuleDoc.select_variables');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.apidoc.ModuleDoc-class.html#select_variables">select_variables</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op" [...]
+<a name="L1170"></a><tt class="py-lineno">1170</tt>  <tt class="py-line">                         <tt class="py-param">imported</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">detailed</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ModuleDoc.select_variables-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ModuleDoc.select_variables-expanded"><a name="L1171"></a><tt class="py-lineno">1171</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L1172"></a><tt class="py-lineno">1172</tt>  <tt class="py-line"><tt class="py-docstring">        Return a specified subset of this module's L{sorted_variables}</tt> </tt>
+<a name="L1173"></a><tt class="py-lineno">1173</tt>  <tt class="py-line"><tt class="py-docstring">        list.  If C{value_type} is given, then only return variables</tt> </tt>
+<a name="L1174"></a><tt class="py-lineno">1174</tt>  <tt class="py-line"><tt class="py-docstring">        whose values have the specified type.  If C{group} is given,</tt> </tt>
+<a name="L1175"></a><tt class="py-lineno">1175</tt>  <tt class="py-line"><tt class="py-docstring">        then only return variables that belong to the specified group.</tt> </tt>
+<a name="L1176"></a><tt class="py-lineno">1176</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1177"></a><tt class="py-lineno">1177</tt>  <tt class="py-line"><tt class="py-docstring">        @require: The L{sorted_variables}, L{variable_groups}, and</tt> </tt>
+<a name="L1178"></a><tt class="py-lineno">1178</tt>  <tt class="py-line"><tt class="py-docstring">            L{submodule_groups} attributes must be initialized before</tt> </tt>
+<a name="L1179"></a><tt class="py-lineno">1179</tt>  <tt class="py-line"><tt class="py-docstring">            this method can be used.  See L{init_sorted_variables()},</tt> </tt>
+<a name="L1180"></a><tt class="py-lineno">1180</tt>  <tt class="py-line"><tt class="py-docstring">            L{init_variable_groups()}, and L{init_submodule_groups()}.</tt> </tt>
+<a name="L1181"></a><tt class="py-lineno">1181</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1182"></a><tt class="py-lineno">1182</tt>  <tt class="py-line"><tt class="py-docstring">        @param value_type: A string specifying the value type for</tt> </tt>
+<a name="L1183"></a><tt class="py-lineno">1183</tt>  <tt class="py-line"><tt class="py-docstring">            which variables should be returned.  Valid values are:</tt> </tt>
+<a name="L1184"></a><tt class="py-lineno">1184</tt>  <tt class="py-line"><tt class="py-docstring">              - 'class' - variables whose values are classes or types.</tt> </tt>
+<a name="L1185"></a><tt class="py-lineno">1185</tt>  <tt class="py-line"><tt class="py-docstring">              - 'function' - variables whose values are functions.</tt> </tt>
+<a name="L1186"></a><tt class="py-lineno">1186</tt>  <tt class="py-line"><tt class="py-docstring">              - 'other' - variables whose values are not classes,</tt> </tt>
+<a name="L1187"></a><tt class="py-lineno">1187</tt>  <tt class="py-line"><tt class="py-docstring">                 exceptions, types, or functions.</tt> </tt>
+<a name="L1188"></a><tt class="py-lineno">1188</tt>  <tt class="py-line"><tt class="py-docstring">        @type value_type: C{string}</tt> </tt>
+<a name="L1189"></a><tt class="py-lineno">1189</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt>
+<a name="L1190"></a><tt class="py-lineno">1190</tt>  <tt class="py-line"><tt class="py-docstring">        @param group: The name of the group for which variables should</tt> </tt>
+<a name="L1191"></a><tt class="py-lineno">1191</tt>  <tt class="py-line"><tt class="py-docstring">            be returned.  A complete list of the groups defined by</tt> </tt>
+<a name="L1192"></a><tt class="py-lineno">1192</tt>  <tt class="py-line"><tt class="py-docstring">            this C{ModuleDoc} is available in the L{group_names}</tt> </tt>
+<a name="L1193"></a><tt class="py-lineno">1193</tt>  <tt class="py-line"><tt class="py-docstring">            instance variable.  The first element of this list is</tt> </tt>
+<a name="L1194"></a><tt class="py-lineno">1194</tt>  <tt class="py-line"><tt class="py-docstring">            always the special group name C{''}, which is used for</tt> </tt>
+<a name="L1195"></a><tt class="py-lineno">1195</tt>  <tt class="py-line"><tt class="py-docstring">            variables that do not belong to any group.</tt> </tt>
+<a name="L1196"></a><tt class="py-lineno">1196</tt>  <tt class="py-line"><tt class="py-docstring">        @type group: C{string}</tt> </tt>
+<a name="L1197"></a><tt class="py-lineno">1197</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1198"></a><tt class="py-lineno">1198</tt>  <tt class="py-line"><tt class="py-docstring">        @param detailed: If True (False), return only the variables</tt> </tt>
+<a name="L1199"></a><tt class="py-lineno">1199</tt>  <tt class="py-line"><tt class="py-docstring">            deserving (not deserving) a detailed informative box.</tt> </tt>
+<a name="L1200"></a><tt class="py-lineno">1200</tt>  <tt class="py-line"><tt class="py-docstring">            If C{None}, don't care.</tt> </tt>
+<a name="L1201"></a><tt class="py-lineno">1201</tt>  <tt class="py-line"><tt class="py-docstring">        @type detailed: C{bool}</tt> </tt>
+<a name="L1202"></a><tt class="py-lineno">1202</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L1203"></a><tt class="py-lineno">1203</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-348" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.sorted_variables" class="py-name" href="#" onclick="return doclink('link-348', 'sorted_variables', 'link-231');">sorted_variables</a></tt> <tt class="py-keyword">is</tt> <tt id="link-349" class="py-name"><a title="epydoc.apidoc.UNKN [...]
+<a name="L1204"></a><tt class="py-lineno">1204</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-350" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variable_groups" class="py-name" href="#" onclick="return doclink('link-350', 'variable_groups', 'link-237');">variable_groups</a></tt> <tt class="py-keyword">is</tt> <tt id="link-351" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink( [...]
+<a name="L1205"></a><tt class="py-lineno">1205</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">'sorted_variables and variable_groups '</tt> </tt>
+<a name="L1206"></a><tt class="py-lineno">1206</tt>  <tt class="py-line">                             <tt class="py-string">'must be initialized first.'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1207"></a><tt class="py-lineno">1207</tt>  <tt class="py-line">         </tt>
+<a name="L1208"></a><tt class="py-lineno">1208</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">group</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> <tt class="py-name">var_list</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-352" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.sorted_variables" class="py-name" href="#" onclick="return doclink('link-352', 's [...]
+<a name="L1209"></a><tt class="py-lineno">1209</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1210"></a><tt class="py-lineno">1210</tt>  <tt class="py-line">            <tt class="py-name">var_list</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-353" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variable_groups" class="py-name" href="#" onclick="return doclink('link-353', 'variable_groups', 'link-237');">variable_groups</a></tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py [...]
+<a name="L1211"></a><tt class="py-lineno">1211</tt>  <tt class="py-line"> </tt>
+<a name="L1212"></a><tt class="py-lineno">1212</tt>  <tt class="py-line">        <tt class="py-comment"># Public/private filter (Count UNKNOWN as public)</tt> </tt>
+<a name="L1213"></a><tt class="py-lineno">1213</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">public</tt> <tt class="py-keyword">is</tt> <tt class="py-name">True</tt><tt class="py-op">:</tt> </tt>
+<a name="L1214"></a><tt class="py-lineno">1214</tt>  <tt class="py-line">            <tt class="py-name">var_list</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt id="link-355" class="py-name"><a title="epydoc.markup.restructuredtext._EpydocReader.v" class="py-name" href="#" onclick="return doclink('link-355', 'v', 'link-103');">v</a></tt> <tt class="py-keyword">for</tt> <tt id="link-356" class="py-name"><a title="epydoc.markup.restructuredtext._EpydocReader.v" class="py-name" h [...]
+<a name="L1215"></a><tt class="py-lineno">1215</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">public</tt> <tt class="py-keyword">is</tt> <tt class="py-name">False</tt><tt class="py-op">:</tt> </tt>
+<a name="L1216"></a><tt class="py-lineno">1216</tt>  <tt class="py-line">            <tt class="py-name">var_list</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt id="link-359" class="py-name"><a title="epydoc.markup.restructuredtext._EpydocReader.v" class="py-name" href="#" onclick="return doclink('link-359', 'v', 'link-103');">v</a></tt> <tt class="py-keyword">for</tt> <tt id="link-360" class="py-name"><a title="epydoc.markup.restructuredtext._EpydocReader.v" class="py-name" h [...]
+<a name="L1217"></a><tt class="py-lineno">1217</tt>  <tt class="py-line"> </tt>
+<a name="L1218"></a><tt class="py-lineno">1218</tt>  <tt class="py-line">        <tt class="py-comment"># Imported filter (Count UNKNOWN as non-imported)</tt> </tt>
+<a name="L1219"></a><tt class="py-lineno">1219</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">imported</tt> <tt class="py-keyword">is</tt> <tt class="py-name">True</tt><tt class="py-op">:</tt> </tt>
+<a name="L1220"></a><tt class="py-lineno">1220</tt>  <tt class="py-line">            <tt class="py-name">var_list</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt id="link-363" class="py-name"><a title="epydoc.markup.restructuredtext._EpydocReader.v" class="py-name" href="#" onclick="return doclink('link-363', 'v', 'link-103');">v</a></tt> <tt class="py-keyword">for</tt> <tt id="link-364" class="py-name"><a title="epydoc.markup.restructuredtext._EpydocReader.v" class="py-name" h [...]
+<a name="L1221"></a><tt class="py-lineno">1221</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">imported</tt> <tt class="py-keyword">is</tt> <tt class="py-name">False</tt><tt class="py-op">:</tt> </tt>
+<a name="L1222"></a><tt class="py-lineno">1222</tt>  <tt class="py-line">            <tt class="py-name">var_list</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt id="link-367" class="py-name"><a title="epydoc.markup.restructuredtext._EpydocReader.v" class="py-name" href="#" onclick="return doclink('link-367', 'v', 'link-103');">v</a></tt> <tt class="py-keyword">for</tt> <tt id="link-368" class="py-name"><a title="epydoc.markup.restructuredtext._EpydocReader.v" class="py-name" h [...]
+<a name="L1223"></a><tt class="py-lineno">1223</tt>  <tt class="py-line"> </tt>
+<a name="L1224"></a><tt class="py-lineno">1224</tt>  <tt class="py-line">        <tt class="py-comment"># Detailed filter</tt> </tt>
+<a name="L1225"></a><tt class="py-lineno">1225</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">detailed</tt> <tt class="py-keyword">is</tt> <tt class="py-name">True</tt><tt class="py-op">:</tt> </tt>
+<a name="L1226"></a><tt class="py-lineno">1226</tt>  <tt class="py-line">            <tt class="py-name">var_list</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt id="link-371" class="py-name"><a title="epydoc.markup.restructuredtext._EpydocReader.v" class="py-name" href="#" onclick="return doclink('link-371', 'v', 'link-103');">v</a></tt> <tt class="py-keyword">for</tt> <tt id="link-372" class="py-name"><a title="epydoc.markup.restructuredtext._EpydocReader.v" class="py-name" h [...]
+epydoc.apidoc.GenericValueDoc.is_detailed
+epydoc.apidoc.NamespaceDoc.is_detailed
+epydoc.apidoc.PropertyDoc.is_detailed
+epydoc.apidoc.RoutineDoc.is_detailed
+epydoc.apidoc.VariableDoc.is_detailed" class="py-name" href="#" onclick="return doclink('link-374', 'is_detailed', 'link-163');">is_detailed</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt class="py-name">True</tt><tt class="py-op">]</tt> </tt>
+<a name="L1227"></a><tt class="py-lineno">1227</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">detailed</tt> <tt class="py-keyword">is</tt> <tt class="py-name">False</tt><tt class="py-op">:</tt> </tt>
+<a name="L1228"></a><tt class="py-lineno">1228</tt>  <tt class="py-line">            <tt class="py-name">var_list</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt id="link-375" class="py-name"><a title="epydoc.markup.restructuredtext._EpydocReader.v" class="py-name" href="#" onclick="return doclink('link-375', 'v', 'link-103');">v</a></tt> <tt class="py-keyword">for</tt> <tt id="link-376" class="py-name"><a title="epydoc.markup.restructuredtext._EpydocReader.v" class="py-name" h [...]
+epydoc.apidoc.GenericValueDoc.is_detailed
+epydoc.apidoc.NamespaceDoc.is_detailed
+epydoc.apidoc.PropertyDoc.is_detailed
+epydoc.apidoc.RoutineDoc.is_detailed
+epydoc.apidoc.VariableDoc.is_detailed" class="py-name" href="#" onclick="return doclink('link-378', 'is_detailed', 'link-163');">is_detailed</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">True</tt><tt class="py-op">]</tt> </tt>
+<a name="L1229"></a><tt class="py-lineno">1229</tt>  <tt class="py-line"> </tt>
+<a name="L1230"></a><tt class="py-lineno">1230</tt>  <tt class="py-line">        <tt class="py-comment"># [xx] Modules are not currently included in any of these</tt> </tt>
+<a name="L1231"></a><tt class="py-lineno">1231</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># value types.</tt> </tt>
+<a name="L1232"></a><tt class="py-lineno">1232</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">value_type</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1233"></a><tt class="py-lineno">1233</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">var_list</tt> </tt>
+<a name="L1234"></a><tt class="py-lineno">1234</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">value_type</tt> <tt class="py-op">==</tt> <tt class="py-string">'class'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1235"></a><tt class="py-lineno">1235</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-op">[</tt><tt class="py-name">var_doc</tt> <tt class="py-keyword">for</tt> <tt class="py-name">var_doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">var_list</tt> </tt>
+<a name="L1236"></a><tt class="py-lineno">1236</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-379" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-379', 'value', 'link-114');">value</a></tt><tt class="py-op">,</tt> <tt id="link-380" class="py-n [...]
+<a name="L1237"></a><tt class="py-lineno">1237</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">value_type</tt> <tt class="py-op">==</tt> <tt class="py-string">'function'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1238"></a><tt class="py-lineno">1238</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-op">[</tt><tt class="py-name">var_doc</tt> <tt class="py-keyword">for</tt> <tt class="py-name">var_doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">var_list</tt> </tt>
+<a name="L1239"></a><tt class="py-lineno">1239</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-381" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-381', 'value', 'link-114');">value</a></tt><tt class="py-op">,</tt> <tt id="link-382" class="py-name"><a title="epydoc.ap [...]
+<a name="L1240"></a><tt class="py-lineno">1240</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">value_type</tt> <tt class="py-op">==</tt> <tt class="py-string">'other'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1241"></a><tt class="py-lineno">1241</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-op">[</tt><tt class="py-name">var_doc</tt> <tt class="py-keyword">for</tt> <tt class="py-name">var_doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">var_list</tt> </tt>
+<a name="L1242"></a><tt class="py-lineno">1242</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-383" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-383', 'value', 'link-114');">value</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L1243"></a><tt class="py-lineno">1243</tt>  <tt class="py-line">                                      <tt class="py-op">(</tt><tt id="link-384" class="py-name"><a title="epydoc.apidoc.ClassDoc" class="py-name" href="#" onclick="return doclink('link-384', 'ClassDoc', 'link-380');">ClassDoc</a></tt><tt class="py-op">,</tt> <tt id="link-385" class="py-name"><a title="epydoc.apidoc.RoutineDoc" class="py-name" href="#" onclick="return doclink('link-385', 'RoutineDoc', 'link-169');">R [...]
+<a name="L1244"></a><tt class="py-lineno">1244</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1245"></a><tt class="py-lineno">1245</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">'Bad value type %r'</tt> <tt class="py-op">%</tt> <tt class="py-name">value_type</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L1246"></a><tt class="py-lineno">1246</tt>  <tt class="py-line"> </tt>
+<a name="ClassDoc"></a><div id="ClassDoc-def"><a name="L1247"></a><tt class="py-lineno">1247</tt> <a class="py-toggle" href="#" id="ClassDoc-toggle" onclick="return toggle('ClassDoc');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="epydoc.apidoc.ClassDoc-class.html">ClassDoc</a><tt class="py-op">(</tt><tt class="py-base-class">NamespaceDoc</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ClassDoc-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="ClassDoc-expanded"><a name="L1248"></a><tt class="py-lineno">1248</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L1249"></a><tt class="py-lineno">1249</tt>  <tt class="py-line"><tt class="py-docstring">    API documentation information about a single class.</tt> </tt>
+<a name="L1250"></a><tt class="py-lineno">1250</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1251"></a><tt class="py-lineno">1251</tt>  <tt class="py-line">    <tt class="py-comment">#{ Information about Base Classes</tt> </tt>
+<a name="L1252"></a><tt class="py-lineno">1252</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-387" class="py-name" targets="Variable epydoc.apidoc.ClassDoc.bases=epydoc.apidoc.ClassDoc-class.html#bases"><a title="epydoc.apidoc.ClassDoc.bases" class="py-name" href="#" onclick="return doclink('link-387', 'bases', 'link-387');">bases</a></tt> <tt class="py-op">=</tt> <tt id="link-388" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick=" [...]
+<a name="L1253"></a><tt class="py-lineno">1253</tt>  <tt class="py-line">    <tt class="py-string">"""@ivar: API documentation for the class's base classes.</tt> </tt>
+<a name="L1254"></a><tt class="py-lineno">1254</tt>  <tt class="py-line"><tt class="py-string">    @type: C{list} of L{ClassDoc}"""</tt> </tt>
+<a name="L1255"></a><tt class="py-lineno">1255</tt>  <tt class="py-line">    <tt class="py-comment">#{ Information about Subclasses</tt> </tt>
+<a name="L1256"></a><tt class="py-lineno">1256</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-389" class="py-name" targets="Variable epydoc.apidoc.ClassDoc.subclasses=epydoc.apidoc.ClassDoc-class.html#subclasses"><a title="epydoc.apidoc.ClassDoc.subclasses" class="py-name" href="#" onclick="return doclink('link-389', 'subclasses', 'link-389');">subclasses</a></tt> <tt class="py-op">=</tt> <tt id="link-390" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py [...]
+<a name="L1257"></a><tt class="py-lineno">1257</tt>  <tt class="py-line">    <tt class="py-string">"""@ivar: API documentation for the class's known subclasses.</tt> </tt>
+<a name="L1258"></a><tt class="py-lineno">1258</tt>  <tt class="py-line"><tt class="py-string">    @type: C{list} of L{ClassDoc}"""</tt> </tt>
+<a name="L1259"></a><tt class="py-lineno">1259</tt>  <tt class="py-line">    <tt class="py-comment">#}</tt> </tt>
+<a name="L1260"></a><tt class="py-lineno">1260</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="ClassDoc.apidoc_links"></a><div id="ClassDoc.apidoc_links-def"><a name="L1261"></a><tt class="py-lineno">1261</tt> <a class="py-toggle" href="#" id="ClassDoc.apidoc_links-toggle" onclick="return toggle('ClassDoc.apidoc_links');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.apidoc.ClassDoc-class.html#apidoc_links">apidoc_links</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-op">**< [...]
+</div><div id="ClassDoc.apidoc_links-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ClassDoc.apidoc_links-expanded"><a name="L1262"></a><tt class="py-lineno">1262</tt>  <tt class="py-line">        <tt class="py-name">val_docs</tt> <tt class="py-op">=</tt> <tt id="link-391" class="py-name"><a title="epydoc.apidoc.NamespaceDoc" class="py-name" href="#" onclick="return doclink('link-391', 'NamespaceDoc', 'link-329');">NamespaceDoc</a></tt><tt class="py-op">.</t [...]
+epydoc.apidoc.ClassDoc.apidoc_links
+epydoc.apidoc.ModuleDoc.apidoc_links
+epydoc.apidoc.NamespaceDoc.apidoc_links
+epydoc.apidoc.PropertyDoc.apidoc_links
+epydoc.apidoc.ValueDoc.apidoc_links
+epydoc.apidoc.VariableDoc.apidoc_links" class="py-name" href="#" onclick="return doclink('link-392', 'apidoc_links', 'link-105');">apidoc_links</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-name">filters</tt><tt class="py-op">)</tt> </tt>
+<a name="L1263"></a><tt class="py-lineno">1263</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">filters</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'bases'</tt><tt class="py-op">,</tt> <tt class="py-name">True</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt>  </tt>
+<a name="L1264"></a><tt class="py-lineno">1264</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-393" class="py-name"><a title="epydoc.apidoc.ClassDoc.bases" class="py-name" href="#" onclick="return doclink('link-393', 'bases', 'link-387');">bases</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-394" class="py-name"><a tit [...]
+<a name="L1265"></a><tt class="py-lineno">1265</tt>  <tt class="py-line">            <tt class="py-name">val_docs</tt> <tt class="py-op">+=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-395" class="py-name"><a title="epydoc.apidoc.ClassDoc.bases" class="py-name" href="#" onclick="return doclink('link-395', 'bases', 'link-387');">bases</a></tt> </tt>
+<a name="L1266"></a><tt class="py-lineno">1266</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">filters</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'subclasses'</tt><tt class="py-op">,</tt> <tt class="py-name">True</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L1267"></a><tt class="py-lineno">1267</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-396" class="py-name"><a title="epydoc.apidoc.ClassDoc.subclasses" class="py-name" href="#" onclick="return doclink('link-396', 'subclasses', 'link-389');">subclasses</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-397" class=" [...]
+<a name="L1268"></a><tt class="py-lineno">1268</tt>  <tt class="py-line">            <tt class="py-name">val_docs</tt> <tt class="py-op">+=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-398" class="py-name"><a title="epydoc.apidoc.ClassDoc.subclasses" class="py-name" href="#" onclick="return doclink('link-398', 'subclasses', 'link-389');">subclasses</a></tt> </tt>
+<a name="L1269"></a><tt class="py-lineno">1269</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">val_docs</tt> </tt>
+</div><a name="L1270"></a><tt class="py-lineno">1270</tt>  <tt class="py-line">     </tt>
+<a name="ClassDoc.is_type"></a><div id="ClassDoc.is_type-def"><a name="L1271"></a><tt class="py-lineno">1271</tt> <a class="py-toggle" href="#" id="ClassDoc.is_type-toggle" onclick="return toggle('ClassDoc.is_type');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.apidoc.ClassDoc-class.html#is_type">is_type</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ClassDoc.is_type-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ClassDoc.is_type-expanded"><a name="L1272"></a><tt class="py-lineno">1272</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-399" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-399', 'canonical_name', 'link-83');">canonical_name</a></tt> <tt class="py-op">==</tt> <tt id="link-400" class="py-name"><a title="epydoc.apidoc.DottedName" class="py-name" href="#" onclick="return doclink('link-400', 'DottedName', 'link-17');">DottedName</a></tt><tt class="py-op">(</tt><tt class="py-string">'type'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-keyword">re [...]
+<a name="L1273"></a><tt class="py-lineno">1273</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-401" class="py-name"><a title="epydoc.apidoc.ClassDoc.bases" class="py-name" href="#" onclick="return doclink('link-401', 'bases', 'link-387');">bases</a></tt> <tt class="py-keyword">is</tt> <tt id="link-402" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-4 [...]
+<a name="L1274"></a><tt class="py-lineno">1274</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">base</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-403" class="py-name"><a title="epydoc.apidoc.ClassDoc.bases" class="py-name" href="#" onclick="return doclink('link-403', 'bases', 'link-387');">bases</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1275"></a><tt class="py-lineno">1275</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">base</tt><tt class="py-op">,</tt> <tt id="link-404" class="py-name"><a title="epydoc.apidoc.ClassDoc" class="py-name" href="#" onclick="return doclink('link-404', 'ClassDoc', 'link-380');">ClassDoc</a></tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-name">base</tt><tt c [...]
+<a name="L1276"></a><tt class="py-lineno">1276</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
+<a name="L1277"></a><tt class="py-lineno">1277</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
+</div><a name="L1278"></a><tt class="py-lineno">1278</tt>  <tt class="py-line">     </tt>
+<a name="ClassDoc.is_exception"></a><div id="ClassDoc.is_exception-def"><a name="L1279"></a><tt class="py-lineno">1279</tt> <a class="py-toggle" href="#" id="ClassDoc.is_exception-toggle" onclick="return toggle('ClassDoc.is_exception');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.apidoc.ClassDoc-class.html#is_exception">is_exception</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</t [...]
+</div><div id="ClassDoc.is_exception-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ClassDoc.is_exception-expanded"><a name="L1280"></a><tt class="py-lineno">1280</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-406" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-406', 'canonical_name', 'link-83');">canonical_name</a></tt> <tt class="py-op">==</tt> <tt id="link-407" class="py-name"><a title="epydoc.apidoc.DottedName" class="py-name" href="#" onclick="return doclink('link-407', 'DottedName', 'link-17');">DottedName</a></tt><tt class="py-op">(</tt><tt class="py-string">'Exception'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-keywor [...]
+<a name="L1281"></a><tt class="py-lineno">1281</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-408" class="py-name"><a title="epydoc.apidoc.ClassDoc.bases" class="py-name" href="#" onclick="return doclink('link-408', 'bases', 'link-387');">bases</a></tt> <tt class="py-keyword">is</tt> <tt id="link-409" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-4 [...]
+<a name="L1282"></a><tt class="py-lineno">1282</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">base</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-410" class="py-name"><a title="epydoc.apidoc.ClassDoc.bases" class="py-name" href="#" onclick="return doclink('link-410', 'bases', 'link-387');">bases</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1283"></a><tt class="py-lineno">1283</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">base</tt><tt class="py-op">,</tt> <tt id="link-411" class="py-name"><a title="epydoc.apidoc.ClassDoc" class="py-name" href="#" onclick="return doclink('link-411', 'ClassDoc', 'link-380');">ClassDoc</a></tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-name">base</tt><tt c [...]
+<a name="L1284"></a><tt class="py-lineno">1284</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
+<a name="L1285"></a><tt class="py-lineno">1285</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
+</div><a name="L1286"></a><tt class="py-lineno">1286</tt>  <tt class="py-line">     </tt>
+<a name="ClassDoc.is_newstyle_class"></a><div id="ClassDoc.is_newstyle_class-def"><a name="L1287"></a><tt class="py-lineno">1287</tt> <a class="py-toggle" href="#" id="ClassDoc.is_newstyle_class-toggle" onclick="return toggle('ClassDoc.is_newstyle_class');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.apidoc.ClassDoc-class.html#is_newstyle_class">is_newstyle_class</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op [...]
+</div><div id="ClassDoc.is_newstyle_class-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ClassDoc.is_newstyle_class-expanded"><a name="L1288"></a><tt class="py-lineno">1288</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-413" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-413', 'canonical_name', 'link-83');">canonical_name</a></tt> <tt class="py-op">==</tt> <tt id="link-414" class="py-name"><a title="epydoc.apidoc.DottedName" class="py-name" href="#" onclick="return doclink('link-414', 'DottedName', 'link-17');">DottedName</a></tt><tt class="py-op">(</tt><tt class="py-string">'object'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-keyword"> [...]
+<a name="L1289"></a><tt class="py-lineno">1289</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-415" class="py-name"><a title="epydoc.apidoc.ClassDoc.bases" class="py-name" href="#" onclick="return doclink('link-415', 'bases', 'link-387');">bases</a></tt> <tt class="py-keyword">is</tt> <tt id="link-416" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-4 [...]
+<a name="L1290"></a><tt class="py-lineno">1290</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">base</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-417" class="py-name"><a title="epydoc.apidoc.ClassDoc.bases" class="py-name" href="#" onclick="return doclink('link-417', 'bases', 'link-387');">bases</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1291"></a><tt class="py-lineno">1291</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">base</tt><tt class="py-op">,</tt> <tt id="link-418" class="py-name"><a title="epydoc.apidoc.ClassDoc" class="py-name" href="#" onclick="return doclink('link-418', 'ClassDoc', 'link-380');">ClassDoc</a></tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-name">base</tt><tt c [...]
+<a name="L1292"></a><tt class="py-lineno">1292</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
+<a name="L1293"></a><tt class="py-lineno">1293</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
+</div><a name="L1294"></a><tt class="py-lineno">1294</tt>  <tt class="py-line"> </tt>
+<a name="ClassDoc.mro"></a><div id="ClassDoc.mro-def"><a name="L1295"></a><tt class="py-lineno">1295</tt> <a class="py-toggle" href="#" id="ClassDoc.mro-toggle" onclick="return toggle('ClassDoc.mro');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.apidoc.ClassDoc-class.html#mro">mro</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">warn_about_bad_bases</tt><tt class="py-op">=</tt><tt c [...]
+</div><div id="ClassDoc.mro-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ClassDoc.mro-expanded"><a name="L1296"></a><tt class="py-lineno">1296</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-420" class="py-name"><a title="epydoc.apidoc.ClassDoc.is_newstyle_class" class="py-name" href="#" onclick="return doclink('link-420', 'is_newstyle_class', 'link-419');">is_newstyle_class [...]
+<a name="L1297"></a><tt class="py-lineno">1297</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-421" class="py-name" targets="Method epydoc.apidoc.ClassDoc._c3_mro()=epydoc.apidoc.ClassDoc-class.html#_c3_mro"><a title="epydoc.apidoc.ClassDoc._c3_mro" class="py-name" href="#" onclick="return doclink('link-421', '_c3_mro', 'link-421');">_c3_mro</a></tt><tt class="py-op">(</tt><tt class="py-name">warn_ [...]
+<a name="L1298"></a><tt class="py-lineno">1298</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1299"></a><tt class="py-lineno">1299</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-422" class="py-name" targets="Method epydoc.apidoc.ClassDoc._dfs_bases()=epydoc.apidoc.ClassDoc-class.html#_dfs_bases"><a title="epydoc.apidoc.ClassDoc._dfs_bases" class="py-name" href="#" onclick="return doclink('link-422', '_dfs_bases', 'link-422');">_dfs_bases</a></tt><tt class="py-op">(</tt><tt class= [...]
+</div><a name="L1300"></a><tt class="py-lineno">1300</tt>  <tt class="py-line">                 </tt>
+<a name="ClassDoc._dfs_bases"></a><div id="ClassDoc._dfs_bases-def"><a name="L1301"></a><tt class="py-lineno">1301</tt> <a class="py-toggle" href="#" id="ClassDoc._dfs_bases-toggle" onclick="return toggle('ClassDoc._dfs_bases');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.apidoc.ClassDoc-class.html#_dfs_bases">_dfs_bases</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">mro</tt><tt  [...]
+</div><div id="ClassDoc._dfs_bases-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ClassDoc._dfs_bases-expanded"><a name="L1302"></a><tt class="py-lineno">1302</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt> <tt class="py-keyword">in</tt> <tt class="py-name">seen</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt id="link-423" class="py-name" targets="Method epydoc.apidoc.ClassDoc.mro()=epydoc.ap [...]
+<a name="L1303"></a><tt class="py-lineno">1303</tt>  <tt class="py-line">        <tt id="link-424" class="py-name"><a title="epydoc.apidoc.ClassDoc.mro" class="py-name" href="#" onclick="return doclink('link-424', 'mro', 'link-423');">mro</a></tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L1304"></a><tt class="py-lineno">1304</tt>  <tt class="py-line">        <tt class="py-name">seen</tt><tt class="py-op">.</tt><tt class="py-name">add</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L1305"></a><tt class="py-lineno">1305</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-425" class="py-name"><a title="epydoc.apidoc.ClassDoc.bases" class="py-name" href="#" onclick="return doclink('link-425', 'bases', 'link-387');">bases</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt id="link-426" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" [...]
+<a name="L1306"></a><tt class="py-lineno">1306</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">base</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-427" class="py-name"><a title="epydoc.apidoc.ClassDoc.bases" class="py-name" href="#" onclick="return doclink('link-427', 'bases', 'link-387');">bases</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1307"></a><tt class="py-lineno">1307</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">base</tt><tt class="py-op">,</tt> <tt id="link-428" class="py-name"><a title="epydoc.apidoc.ClassDoc" class="py-name" href="#" onclick="return doclink('link-428', 'ClassDoc', 'link-380');">ClassDoc</a></tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-name">base</tt>< [...]
+<a name="L1308"></a><tt class="py-lineno">1308</tt>  <tt class="py-line">                    <tt class="py-name">base</tt><tt class="py-op">.</tt><tt id="link-430" class="py-name"><a title="epydoc.apidoc.ClassDoc._dfs_bases" class="py-name" href="#" onclick="return doclink('link-430', '_dfs_bases', 'link-422');">_dfs_bases</a></tt><tt class="py-op">(</tt><tt id="link-431" class="py-name"><a title="epydoc.apidoc.ClassDoc.mro" class="py-name" href="#" onclick="return doclink('link-431', 'm [...]
+<a name="L1309"></a><tt class="py-lineno">1309</tt>  <tt class="py-line">                <tt class="py-keyword">elif</tt> <tt class="py-name">warn_about_bad_bases</tt><tt class="py-op">:</tt> </tt>
+<a name="L1310"></a><tt class="py-lineno">1310</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-432" class="py-name" targets="Method epydoc.apidoc.ClassDoc._report_bad_base()=epydoc.apidoc.ClassDoc-class.html#_report_bad_base"><a title="epydoc.apidoc.ClassDoc._report_bad_base" class="py-name" href="#" onclick="return doclink('link-432', '_report_bad_base', 'link-432');">_report_bad_base</a></tt><tt class="py-op">(</tt><tt cla [...]
+<a name="L1311"></a><tt class="py-lineno">1311</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-433" class="py-name"><a title="epydoc.apidoc.ClassDoc.mro" class="py-name" href="#" onclick="return doclink('link-433', 'mro', 'link-423');">mro</a></tt> </tt>
+</div><a name="L1312"></a><tt class="py-lineno">1312</tt>  <tt class="py-line"> </tt>
+<a name="ClassDoc._c3_mro"></a><div id="ClassDoc._c3_mro-def"><a name="L1313"></a><tt class="py-lineno">1313</tt> <a class="py-toggle" href="#" id="ClassDoc._c3_mro-toggle" onclick="return toggle('ClassDoc._c3_mro');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.apidoc.ClassDoc-class.html#_c3_mro">_c3_mro</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">warn_about_bad_bases</tt><tt c [...]
+</div><div id="ClassDoc._c3_mro-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ClassDoc._c3_mro-expanded"><a name="L1314"></a><tt class="py-lineno">1314</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L1315"></a><tt class="py-lineno">1315</tt>  <tt class="py-line"><tt class="py-docstring">        Compute the class precedence list (mro) according to C3.</tt> </tt>
+<a name="L1316"></a><tt class="py-lineno">1316</tt>  <tt class="py-line"><tt class="py-docstring">        @seealso: U{http://www.python.org/2.3/mro.html}</tt> </tt>
+<a name="L1317"></a><tt class="py-lineno">1317</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L1318"></a><tt class="py-lineno">1318</tt>  <tt class="py-line">        <tt id="link-434" class="py-name"><a title="epydoc.apidoc.ClassDoc.bases" class="py-name" href="#" onclick="return doclink('link-434', 'bases', 'link-387');">bases</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">base</tt> <tt class="py-keyword">for</tt> <tt class="py-name">base</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link- [...]
+<a name="L1319"></a><tt class="py-lineno">1319</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-437" class="py-name"><a title="epydoc.apidoc.ClassDoc.bases" class="py-name" href="#" onclick="return doclink('link-437', 'bases', 'link-387');">bases</a></tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt> [...]
+<a name="L1320"></a><tt class="py-lineno">1320</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">base</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-439" class="py-name"><a title="epydoc.apidoc.ClassDoc.bases" class="py-name" href="#" onclick="return doclink('link-439', 'bases', 'link-387');">bases</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1321"></a><tt class="py-lineno">1321</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">base</tt><tt class="py-op">,</tt> <tt id="link-440" class="py-name"><a title="epydoc.apidoc.ClassDoc" class="py-name" href="#" onclick="return doclink('link-440', 'ClassDoc', 'link-380');">ClassDoc</a></tt><tt class="py-op">)</tt> <tt cl [...]
+<a name="L1322"></a><tt class="py-lineno">1322</tt>  <tt class="py-line">                    <tt class="py-name">base</tt><tt class="py-op">.</tt><tt id="link-441" class="py-name"><a title="epydoc.apidoc.ValueDoc.proxy_for" class="py-name" href="#" onclick="return doclink('link-441', 'proxy_for', 'link-191');">proxy_for</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1323"></a><tt class="py-lineno">1323</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-442" class="py-name"><a title="epydoc.apidoc.ClassDoc._report_bad_base" class="py-name" href="#" onclick="return doclink('link-442', '_report_bad_base', 'link-432');">_report_bad_base</a></tt><tt class="py-op">(</tt><tt class="py-name">base</tt><tt class="py-op">)</tt> </tt>
+<a name="L1324"></a><tt class="py-lineno">1324</tt>  <tt class="py-line">        <tt class="py-name">w</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">warn_about_bad_bases</tt><tt class="py-op">]</tt><tt class="py-op">*</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-443" class="py-name"><a title="epydoc.apidoc.ClassDoc.bases" class="py-name" href="#" onclick="return doclink('link-443', 'bases', 'link-387');">bases</a></tt><tt class="py-op"> [...]
+<a name="L1325"></a><tt class="py-lineno">1325</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-444" class="py-name" targets="Method epydoc.apidoc.ClassDoc._c3_merge()=epydoc.apidoc.ClassDoc-class.html#_c3_merge"><a title="epydoc.apidoc.ClassDoc._c3_merge" class="py-name" href="#" onclick="return doclink('link-444', '_c3_merge', 'link-444');">_c3_merge</a></tt><tt class="py-op">(</tt><tt class="py-op">[ [...]
+<a name="L1326"></a><tt class="py-lineno">1326</tt>  <tt class="py-line">                              <tt class="py-op">[</tt><tt class="py-name">list</tt><tt class="py-op">(</tt><tt id="link-448" class="py-name"><a title="epydoc.apidoc.ClassDoc.bases" class="py-name" href="#" onclick="return doclink('link-448', 'bases', 'link-387');">bases</a></tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1327"></a><tt class="py-lineno">1327</tt>  <tt class="py-line"> </tt>
+<a name="ClassDoc._report_bad_base"></a><div id="ClassDoc._report_bad_base-def"><a name="L1328"></a><tt class="py-lineno">1328</tt> <a class="py-toggle" href="#" id="ClassDoc._report_bad_base-toggle" onclick="return toggle('ClassDoc._report_bad_base');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.apidoc.ClassDoc-class.html#_report_bad_base">_report_bad_base</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</t [...]
+</div><div id="ClassDoc._report_bad_base-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ClassDoc._report_bad_base-expanded"><a name="L1329"></a><tt class="py-lineno">1329</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">base</tt><tt class="py-op">,</tt> <tt id="link-449" class="py-name"><a title="epydoc.apidoc.ClassDoc" class="py-nam [...]
+<a name="L1330"></a><tt class="py-lineno">1330</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">base</tt><tt class="py-op">,</tt> <tt id="link-450" class="py-name"><a title="epydoc.apidoc.GenericValueDoc" class="py-name" href="#" onclick="return doclink('link-450', 'GenericValueDoc', 'link-171');">GenericValueDoc</a></tt><tt class="py-op">)</tt><tt class="py- [...]
+<a name="L1331"></a><tt class="py-lineno">1331</tt>  <tt class="py-line">                <tt class="py-name">base_name</tt> <tt class="py-op">=</tt> <tt class="py-name">base</tt><tt class="py-op">.</tt><tt id="link-451" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-451', 'canonical_name', 'link-83');">canonical_name</a></tt> </tt>
+<a name="L1332"></a><tt class="py-lineno">1332</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">base</tt><tt class="py-op">.</tt><tt id="link-452" class="py-name"><a title="epydoc.apidoc.ValueDoc.parse_repr" class="py-name" href="#" onclick="return doclink('link-452', 'parse_repr', 'link-183');">parse_repr</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt id="link-453" class="py-name"><a title="epydoc.apidoc.UNKNOWN" cla [...]
+<a name="L1333"></a><tt class="py-lineno">1333</tt>  <tt class="py-line">                <tt class="py-name">base_name</tt> <tt class="py-op">=</tt> <tt class="py-name">base</tt><tt class="py-op">.</tt><tt id="link-454" class="py-name"><a title="epydoc.apidoc.ValueDoc.parse_repr" class="py-name" href="#" onclick="return doclink('link-454', 'parse_repr', 'link-183');">parse_repr</a></tt> </tt>
+<a name="L1334"></a><tt class="py-lineno">1334</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1335"></a><tt class="py-lineno">1335</tt>  <tt class="py-line">                <tt class="py-name">base_name</tt> <tt class="py-op">=</tt> <tt class="py-string">'%r'</tt> <tt class="py-op">%</tt> <tt class="py-name">base</tt> </tt>
+<a name="L1336"></a><tt class="py-lineno">1336</tt>  <tt class="py-line">            <tt id="link-455" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-455', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-456" class="py-name"><a title="epydoc.checker.DocChecker.warning
+epydoc.log.warning" class="py-name" href="#" onclick="return doclink('link-456', 'warning', 'link-25');">warning</a></tt><tt class="py-op">(</tt><tt class="py-string">"%s's base %s is not a class"</tt> <tt class="py-op">%</tt> </tt>
+<a name="L1337"></a><tt class="py-lineno">1337</tt>  <tt class="py-line">                        <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-457" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-457', 'canonical_name', 'link-83');">canonical_name</a></tt><tt class="py-op">,</tt> <tt class="py-name">base_name</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1338"></a><tt class="py-lineno">1338</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">base</tt><tt class="py-op">.</tt><tt id="link-458" class="py-name"><a title="epydoc.apidoc.ValueDoc.proxy_for" class="py-name" href="#" onclick="return doclink('link-458', 'proxy_for', 'link-191');">proxy_for</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1339"></a><tt class="py-lineno">1339</tt>  <tt class="py-line">            <tt id="link-459" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-459', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-460" class="py-name"><a title="epydoc.checker.DocChecker.warning
+epydoc.log.warning" class="py-name" href="#" onclick="return doclink('link-460', 'warning', 'link-25');">warning</a></tt><tt class="py-op">(</tt><tt class="py-string">"No information available for %s's base %s"</tt> <tt class="py-op">%</tt> </tt>
+<a name="L1340"></a><tt class="py-lineno">1340</tt>  <tt class="py-line">                        <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-461" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-461', 'canonical_name', 'link-83');">canonical_name</a></tt><tt class="py-op">,</tt> <tt class="py-name">base</tt><tt class="py-op">.</tt><tt id="link-462" class="py-name"><a title="epydoc.apidoc.ValueDoc.proxy_for" class="py-name" href="#" onclick="return doclink('link-462', 'proxy_for', 'link-191');">proxy_for</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1341"></a><tt class="py-lineno">1341</tt>  <tt class="py-line"> </tt>
+<a name="ClassDoc._c3_merge"></a><div id="ClassDoc._c3_merge-def"><a name="L1342"></a><tt class="py-lineno">1342</tt> <a class="py-toggle" href="#" id="ClassDoc._c3_merge-toggle" onclick="return toggle('ClassDoc._c3_merge');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.apidoc.ClassDoc-class.html#_c3_merge">_c3_merge</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">seqs</tt><tt class [...]
+</div><div id="ClassDoc._c3_merge-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ClassDoc._c3_merge-expanded"><a name="L1343"></a><tt class="py-lineno">1343</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L1344"></a><tt class="py-lineno">1344</tt>  <tt class="py-line"><tt class="py-docstring">        Helper function for L{_c3_mro}.</tt> </tt>
+<a name="L1345"></a><tt class="py-lineno">1345</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L1346"></a><tt class="py-lineno">1346</tt>  <tt class="py-line">        <tt class="py-name">res</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L1347"></a><tt class="py-lineno">1347</tt>  <tt class="py-line">        <tt class="py-keyword">while</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L1348"></a><tt class="py-lineno">1348</tt>  <tt class="py-line">          <tt class="py-name">nonemptyseqs</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt class="py-name">seq</tt> <tt class="py-keyword">for</tt> <tt class="py-name">seq</tt> <tt class="py-keyword">in</tt> <tt class="py-name">seqs</tt> <tt class="py-keyword">if</tt> <tt class="py-name">seq</tt><tt class="py-op">]</tt> </tt>
+<a name="L1349"></a><tt class="py-lineno">1349</tt>  <tt class="py-line">          <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">nonemptyseqs</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-name">res</tt> </tt>
+<a name="L1350"></a><tt class="py-lineno">1350</tt>  <tt class="py-line">          <tt class="py-keyword">for</tt> <tt class="py-name">seq</tt> <tt class="py-keyword">in</tt> <tt class="py-name">nonemptyseqs</tt><tt class="py-op">:</tt> <tt class="py-comment"># find merge candidates among seq heads</tt> </tt>
+<a name="L1351"></a><tt class="py-lineno">1351</tt>  <tt class="py-line">              <tt class="py-name">cand</tt> <tt class="py-op">=</tt> <tt class="py-name">seq</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L1352"></a><tt class="py-lineno">1352</tt>  <tt class="py-line">              <tt class="py-name">nothead</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt class="py-name">s</tt> <tt class="py-keyword">for</tt> <tt class="py-name">s</tt> <tt class="py-keyword">in</tt> <tt class="py-name">nonemptyseqs</tt> <tt class="py-keyword">if</tt> <tt class="py-name">cand</tt> <tt class="py-keyword">in</tt> <tt class="py-name">s</tt><tt class="py-op">[</tt><tt class="py-number">1</tt> [...]
+<a name="L1353"></a><tt class="py-lineno">1353</tt>  <tt class="py-line">              <tt class="py-keyword">if</tt> <tt class="py-name">nothead</tt><tt class="py-op">:</tt> <tt class="py-name">cand</tt><tt class="py-op">=</tt><tt class="py-name">None</tt> <tt class="py-comment">#reject candidate</tt> </tt>
+<a name="L1354"></a><tt class="py-lineno">1354</tt>  <tt class="py-line">              <tt class="py-keyword">else</tt><tt class="py-op">:</tt> <tt class="py-keyword">break</tt> </tt>
+<a name="L1355"></a><tt class="py-lineno">1355</tt>  <tt class="py-line">          <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">cand</tt><tt class="py-op">:</tt> <tt class="py-keyword">raise</tt> <tt class="py-string">"Inconsistent hierarchy"</tt> </tt>
+<a name="L1356"></a><tt class="py-lineno">1356</tt>  <tt class="py-line">          <tt class="py-name">res</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">cand</tt><tt class="py-op">)</tt> </tt>
+<a name="L1357"></a><tt class="py-lineno">1357</tt>  <tt class="py-line">          <tt class="py-keyword">for</tt> <tt class="py-name">seq</tt> <tt class="py-keyword">in</tt> <tt class="py-name">nonemptyseqs</tt><tt class="py-op">:</tt> <tt class="py-comment"># remove cand</tt> </tt>
+<a name="L1358"></a><tt class="py-lineno">1358</tt>  <tt class="py-line">              <tt class="py-keyword">if</tt> <tt class="py-name">seq</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-name">cand</tt><tt class="py-op">:</tt> <tt class="py-keyword">del</tt> <tt class="py-name">seq</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+</div><a name="L1359"></a><tt class="py-lineno">1359</tt>  <tt class="py-line">     </tt>
+<a name="ClassDoc.select_variables"></a><div id="ClassDoc.select_variables-def"><a name="L1360"></a><tt class="py-lineno">1360</tt> <a class="py-toggle" href="#" id="ClassDoc.select_variables-toggle" onclick="return toggle('ClassDoc.select_variables');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.apidoc.ClassDoc-class.html#select_variables">select_variables</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</t [...]
+<a name="L1361"></a><tt class="py-lineno">1361</tt>  <tt class="py-line">                         <tt class="py-param">public</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">imported</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">detailed</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ClassDoc.select_variables-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ClassDoc.select_variables-expanded"><a name="L1362"></a><tt class="py-lineno">1362</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L1363"></a><tt class="py-lineno">1363</tt>  <tt class="py-line"><tt class="py-docstring">        Return a specified subset of this class's L{sorted_variables}</tt> </tt>
+<a name="L1364"></a><tt class="py-lineno">1364</tt>  <tt class="py-line"><tt class="py-docstring">        list.  If C{value_type} is given, then only return variables</tt> </tt>
+<a name="L1365"></a><tt class="py-lineno">1365</tt>  <tt class="py-line"><tt class="py-docstring">        whose values have the specified type.  If C{group} is given,</tt> </tt>
+<a name="L1366"></a><tt class="py-lineno">1366</tt>  <tt class="py-line"><tt class="py-docstring">        then only return variables that belong to the specified group.</tt> </tt>
+<a name="L1367"></a><tt class="py-lineno">1367</tt>  <tt class="py-line"><tt class="py-docstring">        If C{inherited} is True, then only return inherited variables;</tt> </tt>
+<a name="L1368"></a><tt class="py-lineno">1368</tt>  <tt class="py-line"><tt class="py-docstring">        if C{inherited} is False, then only return local variables.</tt> </tt>
+<a name="L1369"></a><tt class="py-lineno">1369</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1370"></a><tt class="py-lineno">1370</tt>  <tt class="py-line"><tt class="py-docstring">        @require: The L{sorted_variables} and L{variable_groups}</tt> </tt>
+<a name="L1371"></a><tt class="py-lineno">1371</tt>  <tt class="py-line"><tt class="py-docstring">            attributes must be initialized before this method can be</tt> </tt>
+<a name="L1372"></a><tt class="py-lineno">1372</tt>  <tt class="py-line"><tt class="py-docstring">            used.  See L{init_sorted_variables()} and</tt> </tt>
+<a name="L1373"></a><tt class="py-lineno">1373</tt>  <tt class="py-line"><tt class="py-docstring">            L{init_variable_groups()}.</tt> </tt>
+<a name="L1374"></a><tt class="py-lineno">1374</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1375"></a><tt class="py-lineno">1375</tt>  <tt class="py-line"><tt class="py-docstring">        @param value_type: A string specifying the value type for</tt> </tt>
+<a name="L1376"></a><tt class="py-lineno">1376</tt>  <tt class="py-line"><tt class="py-docstring">            which variables should be returned.  Valid values are:</tt> </tt>
+<a name="L1377"></a><tt class="py-lineno">1377</tt>  <tt class="py-line"><tt class="py-docstring">              - 'instancemethod' - variables whose values are</tt> </tt>
+<a name="L1378"></a><tt class="py-lineno">1378</tt>  <tt class="py-line"><tt class="py-docstring">                instance methods.</tt> </tt>
+<a name="L1379"></a><tt class="py-lineno">1379</tt>  <tt class="py-line"><tt class="py-docstring">              - 'classmethod' - variables whose values are class</tt> </tt>
+<a name="L1380"></a><tt class="py-lineno">1380</tt>  <tt class="py-line"><tt class="py-docstring">                methods.</tt> </tt>
+<a name="L1381"></a><tt class="py-lineno">1381</tt>  <tt class="py-line"><tt class="py-docstring">              - 'staticmethod' - variables whose values are static</tt> </tt>
+<a name="L1382"></a><tt class="py-lineno">1382</tt>  <tt class="py-line"><tt class="py-docstring">                methods.</tt> </tt>
+<a name="L1383"></a><tt class="py-lineno">1383</tt>  <tt class="py-line"><tt class="py-docstring">              - 'properties' - variables whose values are properties.</tt> </tt>
+<a name="L1384"></a><tt class="py-lineno">1384</tt>  <tt class="py-line"><tt class="py-docstring">              - 'class' - variables whose values are nested classes</tt> </tt>
+<a name="L1385"></a><tt class="py-lineno">1385</tt>  <tt class="py-line"><tt class="py-docstring">                (including exceptions and types).</tt> </tt>
+<a name="L1386"></a><tt class="py-lineno">1386</tt>  <tt class="py-line"><tt class="py-docstring">              - 'instancevariable' - instance variables.  This includes</tt> </tt>
+<a name="L1387"></a><tt class="py-lineno">1387</tt>  <tt class="py-line"><tt class="py-docstring">                any variables that are explicitly marked as instance</tt> </tt>
+<a name="L1388"></a><tt class="py-lineno">1388</tt>  <tt class="py-line"><tt class="py-docstring">                variables with docstring fields; and variables with</tt> </tt>
+<a name="L1389"></a><tt class="py-lineno">1389</tt>  <tt class="py-line"><tt class="py-docstring">                docstrings that are initialized in the constructor.</tt> </tt>
+<a name="L1390"></a><tt class="py-lineno">1390</tt>  <tt class="py-line"><tt class="py-docstring">              - 'classvariable' - class variables.  This includes any</tt> </tt>
+<a name="L1391"></a><tt class="py-lineno">1391</tt>  <tt class="py-line"><tt class="py-docstring">                variables that are not included in any of the above</tt> </tt>
+<a name="L1392"></a><tt class="py-lineno">1392</tt>  <tt class="py-line"><tt class="py-docstring">                categories.</tt> </tt>
+<a name="L1393"></a><tt class="py-lineno">1393</tt>  <tt class="py-line"><tt class="py-docstring">        @type value_type: C{string}</tt> </tt>
+<a name="L1394"></a><tt class="py-lineno">1394</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt>
+<a name="L1395"></a><tt class="py-lineno">1395</tt>  <tt class="py-line"><tt class="py-docstring">        @param group: The name of the group for which variables should</tt> </tt>
+<a name="L1396"></a><tt class="py-lineno">1396</tt>  <tt class="py-line"><tt class="py-docstring">            be returned.  A complete list of the groups defined by</tt> </tt>
+<a name="L1397"></a><tt class="py-lineno">1397</tt>  <tt class="py-line"><tt class="py-docstring">            this C{ClassDoc} is available in the L{group_names}</tt> </tt>
+<a name="L1398"></a><tt class="py-lineno">1398</tt>  <tt class="py-line"><tt class="py-docstring">            instance variable.  The first element of this list is</tt> </tt>
+<a name="L1399"></a><tt class="py-lineno">1399</tt>  <tt class="py-line"><tt class="py-docstring">            always the special group name C{''}, which is used for</tt> </tt>
+<a name="L1400"></a><tt class="py-lineno">1400</tt>  <tt class="py-line"><tt class="py-docstring">            variables that do not belong to any group.</tt> </tt>
+<a name="L1401"></a><tt class="py-lineno">1401</tt>  <tt class="py-line"><tt class="py-docstring">        @type group: C{string}</tt> </tt>
+<a name="L1402"></a><tt class="py-lineno">1402</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1403"></a><tt class="py-lineno">1403</tt>  <tt class="py-line"><tt class="py-docstring">        @param inherited: If C{None}, then return both inherited and</tt> </tt>
+<a name="L1404"></a><tt class="py-lineno">1404</tt>  <tt class="py-line"><tt class="py-docstring">            local variables; if C{True}, then return only inherited</tt> </tt>
+<a name="L1405"></a><tt class="py-lineno">1405</tt>  <tt class="py-line"><tt class="py-docstring">            variables; if C{False}, then return only local variables.</tt> </tt>
+<a name="L1406"></a><tt class="py-lineno">1406</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1407"></a><tt class="py-lineno">1407</tt>  <tt class="py-line"><tt class="py-docstring">        @param detailed: If True (False), return only the variables</tt> </tt>
+<a name="L1408"></a><tt class="py-lineno">1408</tt>  <tt class="py-line"><tt class="py-docstring">            deserving (not deserving) a detailed informative box.</tt> </tt>
+<a name="L1409"></a><tt class="py-lineno">1409</tt>  <tt class="py-line"><tt class="py-docstring">            If C{None}, don't care.</tt> </tt>
+<a name="L1410"></a><tt class="py-lineno">1410</tt>  <tt class="py-line"><tt class="py-docstring">        @type detailed: C{bool}</tt> </tt>
+<a name="L1411"></a><tt class="py-lineno">1411</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L1412"></a><tt class="py-lineno">1412</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-463" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.sorted_variables" class="py-name" href="#" onclick="return doclink('link-463', 'sorted_variables', 'link-231');">sorted_variables</a></tt> <tt class="py-keyword">is</tt> <tt id="link-464" class="py-name"><a title="epydoc.apidoc.UNKN [...]
+<a name="L1413"></a><tt class="py-lineno">1413</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-465" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variable_groups" class="py-name" href="#" onclick="return doclink('link-465', 'variable_groups', 'link-237');">variable_groups</a></tt> <tt class="py-keyword">is</tt> <tt id="link-466" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink( [...]
+<a name="L1414"></a><tt class="py-lineno">1414</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">'sorted_variables and variable_groups '</tt> </tt>
+<a name="L1415"></a><tt class="py-lineno">1415</tt>  <tt class="py-line">                             <tt class="py-string">'must be initialized first.'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1416"></a><tt class="py-lineno">1416</tt>  <tt class="py-line">         </tt>
+<a name="L1417"></a><tt class="py-lineno">1417</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">group</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> <tt class="py-name">var_list</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-467" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.sorted_variables" class="py-name" href="#" onclick="return doclink('link-467', 's [...]
+<a name="L1418"></a><tt class="py-lineno">1418</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> <tt class="py-name">var_list</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-468" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variable_groups" class="py-name" href="#" onclick="return doclink('link-468', 'variable_groups', 'link-237');">variable_groups</a></tt><tt class="py-op">[</tt><tt class="p [...]
+<a name="L1419"></a><tt class="py-lineno">1419</tt>  <tt class="py-line"> </tt>
+<a name="L1420"></a><tt class="py-lineno">1420</tt>  <tt class="py-line">        <tt class="py-comment"># Public/private filter (Count UNKNOWN as public)</tt> </tt>
+<a name="L1421"></a><tt class="py-lineno">1421</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">public</tt> <tt class="py-keyword">is</tt> <tt class="py-name">True</tt><tt class="py-op">:</tt> </tt>
+<a name="L1422"></a><tt class="py-lineno">1422</tt>  <tt class="py-line">            <tt class="py-name">var_list</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt id="link-469" class="py-name"><a title="epydoc.markup.restructuredtext._EpydocReader.v" class="py-name" href="#" onclick="return doclink('link-469', 'v', 'link-103');">v</a></tt> <tt class="py-keyword">for</tt> <tt id="link-470" class="py-name"><a title="epydoc.markup.restructuredtext._EpydocReader.v" class="py-name" h [...]
+<a name="L1423"></a><tt class="py-lineno">1423</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">public</tt> <tt class="py-keyword">is</tt> <tt class="py-name">False</tt><tt class="py-op">:</tt> </tt>
+<a name="L1424"></a><tt class="py-lineno">1424</tt>  <tt class="py-line">            <tt class="py-name">var_list</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt id="link-473" class="py-name"><a title="epydoc.markup.restructuredtext._EpydocReader.v" class="py-name" href="#" onclick="return doclink('link-473', 'v', 'link-103');">v</a></tt> <tt class="py-keyword">for</tt> <tt id="link-474" class="py-name"><a title="epydoc.markup.restructuredtext._EpydocReader.v" class="py-name" h [...]
+<a name="L1425"></a><tt class="py-lineno">1425</tt>  <tt class="py-line"> </tt>
+<a name="L1426"></a><tt class="py-lineno">1426</tt>  <tt class="py-line">        <tt class="py-comment"># Inherited filter (Count UNKNOWN as non-inherited)</tt> </tt>
+<a name="L1427"></a><tt class="py-lineno">1427</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">inherited</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> <tt class="py-keyword">pass</tt> </tt>
+<a name="L1428"></a><tt class="py-lineno">1428</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">inherited</tt><tt class="py-op">:</tt> </tt>
+<a name="L1429"></a><tt class="py-lineno">1429</tt>  <tt class="py-line">            <tt class="py-name">var_list</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt id="link-477" class="py-name"><a title="epydoc.markup.restructuredtext._EpydocReader.v" class="py-name" href="#" onclick="return doclink('link-477', 'v', 'link-103');">v</a></tt> <tt class="py-keyword">for</tt> <tt id="link-478" class="py-name"><a title="epydoc.markup.restructuredtext._EpydocReader.v" class="py-name" h [...]
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-480', 'container', 'link-110');">container</a></tt> <tt class="py-op">!=</tt> <tt class="py-name">self</tt><tt class="py-op">]</tt> </tt>
+<a name="L1430"></a><tt class="py-lineno">1430</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1431"></a><tt class="py-lineno">1431</tt>  <tt class="py-line">            <tt class="py-name">var_list</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt id="link-481" class="py-name"><a title="epydoc.markup.restructuredtext._EpydocReader.v" class="py-name" href="#" onclick="return doclink('link-481', 'v', 'link-103');">v</a></tt> <tt class="py-keyword">for</tt> <tt id="link-482" class="py-name"><a title="epydoc.markup.restructuredtext._EpydocReader.v" class="py-name" h [...]
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-484', 'container', 'link-110');">container</a></tt> <tt class="py-op">==</tt> <tt class="py-name">self</tt> <tt class="py-op">]</tt> </tt>
+<a name="L1432"></a><tt class="py-lineno">1432</tt>  <tt class="py-line"> </tt>
+<a name="L1433"></a><tt class="py-lineno">1433</tt>  <tt class="py-line">        <tt class="py-comment"># Imported filter (Count UNKNOWN as non-imported)</tt> </tt>
+<a name="L1434"></a><tt class="py-lineno">1434</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">imported</tt> <tt class="py-keyword">is</tt> <tt class="py-name">True</tt><tt class="py-op">:</tt> </tt>
+<a name="L1435"></a><tt class="py-lineno">1435</tt>  <tt class="py-line">            <tt class="py-name">var_list</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt id="link-485" class="py-name"><a title="epydoc.markup.restructuredtext._EpydocReader.v" class="py-name" href="#" onclick="return doclink('link-485', 'v', 'link-103');">v</a></tt> <tt class="py-keyword">for</tt> <tt id="link-486" class="py-name"><a title="epydoc.markup.restructuredtext._EpydocReader.v" class="py-name" h [...]
+<a name="L1436"></a><tt class="py-lineno">1436</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">imported</tt> <tt class="py-keyword">is</tt> <tt class="py-name">False</tt><tt class="py-op">:</tt> </tt>
+<a name="L1437"></a><tt class="py-lineno">1437</tt>  <tt class="py-line">            <tt class="py-name">var_list</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt id="link-489" class="py-name"><a title="epydoc.markup.restructuredtext._EpydocReader.v" class="py-name" href="#" onclick="return doclink('link-489', 'v', 'link-103');">v</a></tt> <tt class="py-keyword">for</tt> <tt id="link-490" class="py-name"><a title="epydoc.markup.restructuredtext._EpydocReader.v" class="py-name" h [...]
+<a name="L1438"></a><tt class="py-lineno">1438</tt>  <tt class="py-line"> </tt>
+<a name="L1439"></a><tt class="py-lineno">1439</tt>  <tt class="py-line">        <tt class="py-comment"># Detailed filter</tt> </tt>
+<a name="L1440"></a><tt class="py-lineno">1440</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">detailed</tt> <tt class="py-keyword">is</tt> <tt class="py-name">True</tt><tt class="py-op">:</tt> </tt>
+<a name="L1441"></a><tt class="py-lineno">1441</tt>  <tt class="py-line">            <tt class="py-name">var_list</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt id="link-493" class="py-name"><a title="epydoc.markup.restructuredtext._EpydocReader.v" class="py-name" href="#" onclick="return doclink('link-493', 'v', 'link-103');">v</a></tt> <tt class="py-keyword">for</tt> <tt id="link-494" class="py-name"><a title="epydoc.markup.restructuredtext._EpydocReader.v" class="py-name" h [...]
+epydoc.apidoc.GenericValueDoc.is_detailed
+epydoc.apidoc.NamespaceDoc.is_detailed
+epydoc.apidoc.PropertyDoc.is_detailed
+epydoc.apidoc.RoutineDoc.is_detailed
+epydoc.apidoc.VariableDoc.is_detailed" class="py-name" href="#" onclick="return doclink('link-496', 'is_detailed', 'link-163');">is_detailed</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt class="py-name">True</tt><tt class="py-op">]</tt> </tt>
+<a name="L1442"></a><tt class="py-lineno">1442</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">detailed</tt> <tt class="py-keyword">is</tt> <tt class="py-name">False</tt><tt class="py-op">:</tt> </tt>
+<a name="L1443"></a><tt class="py-lineno">1443</tt>  <tt class="py-line">            <tt class="py-name">var_list</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt id="link-497" class="py-name"><a title="epydoc.markup.restructuredtext._EpydocReader.v" class="py-name" href="#" onclick="return doclink('link-497', 'v', 'link-103');">v</a></tt> <tt class="py-keyword">for</tt> <tt id="link-498" class="py-name"><a title="epydoc.markup.restructuredtext._EpydocReader.v" class="py-name" h [...]
+epydoc.apidoc.GenericValueDoc.is_detailed
+epydoc.apidoc.NamespaceDoc.is_detailed
+epydoc.apidoc.PropertyDoc.is_detailed
+epydoc.apidoc.RoutineDoc.is_detailed
+epydoc.apidoc.VariableDoc.is_detailed" class="py-name" href="#" onclick="return doclink('link-500', 'is_detailed', 'link-163');">is_detailed</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">True</tt><tt class="py-op">]</tt> </tt>
+<a name="L1444"></a><tt class="py-lineno">1444</tt>  <tt class="py-line"> </tt>
+<a name="L1445"></a><tt class="py-lineno">1445</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">value_type</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1446"></a><tt class="py-lineno">1446</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">var_list</tt> </tt>
+<a name="L1447"></a><tt class="py-lineno">1447</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">value_type</tt> <tt class="py-op">==</tt> <tt class="py-string">'method'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1448"></a><tt class="py-lineno">1448</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-op">[</tt><tt class="py-name">var_doc</tt> <tt class="py-keyword">for</tt> <tt class="py-name">var_doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">var_list</tt> </tt>
+<a name="L1449"></a><tt class="py-lineno">1449</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-501" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-501', 'value', 'link-114');">value</a></tt><tt class="py-op">,</tt> <tt id="link-502" class="py-n [...]
+<a name="L1450"></a><tt class="py-lineno">1450</tt>  <tt class="py-line">                        <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-503" class="py-name"><a title="epydoc.apidoc.VariableDoc.is_instvar" class="py-name" href="#" onclick="return doclink('link-503', 'is_instvar', 'link-122');">is_instvar</a></tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> <tt id="link-504" class="py-name"><a t [...]
+<a name="L1451"></a><tt class="py-lineno">1451</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">value_type</tt> <tt class="py-op">==</tt> <tt class="py-string">'instancemethod'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1452"></a><tt class="py-lineno">1452</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-op">[</tt><tt class="py-name">var_doc</tt> <tt class="py-keyword">for</tt> <tt class="py-name">var_doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">var_list</tt> </tt>
+<a name="L1453"></a><tt class="py-lineno">1453</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-505" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-505', 'value', 'link-114');">value</a></tt><tt class="py-op">,</tt> <tt id="link-506" class="py-n [...]
+<a name="L1454"></a><tt class="py-lineno">1454</tt>  <tt class="py-line">                        <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-507" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-507', 'value', 'link-114');">value</a></tt><tt class="py-op">,</tt> <tt id="link-508" class="py-name" targets="Class [...]
+<a name="L1455"></a><tt class="py-lineno">1455</tt>  <tt class="py-line">                        <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-509" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-509', 'value', 'link-114');">value</a></tt><tt class="py-op">,</tt> <tt id="link-510" class="py-name" targets="Class [...]
+<a name="L1456"></a><tt class="py-lineno">1456</tt>  <tt class="py-line">                        <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-511" class="py-name"><a title="epydoc.apidoc.VariableDoc.is_instvar" class="py-name" href="#" onclick="return doclink('link-511', 'is_instvar', 'link-122');">is_instvar</a></tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> <tt id="link-512" class="py-name"><a t [...]
+<a name="L1457"></a><tt class="py-lineno">1457</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">value_type</tt> <tt class="py-op">==</tt> <tt class="py-string">'classmethod'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1458"></a><tt class="py-lineno">1458</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-op">[</tt><tt class="py-name">var_doc</tt> <tt class="py-keyword">for</tt> <tt class="py-name">var_doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">var_list</tt> </tt>
+<a name="L1459"></a><tt class="py-lineno">1459</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-513" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-513', 'value', 'link-114');">value</a></tt><tt class="py-op">,</tt> <tt id="link-514" class="py-n [...]
+<a name="L1460"></a><tt class="py-lineno">1460</tt>  <tt class="py-line">                        <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-515" class="py-name"><a title="epydoc.apidoc.VariableDoc.is_instvar" class="py-name" href="#" onclick="return doclink('link-515', 'is_instvar', 'link-122');">is_instvar</a></tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> <tt id="link-516" class="py-name"><a t [...]
+<a name="L1461"></a><tt class="py-lineno">1461</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">value_type</tt> <tt class="py-op">==</tt> <tt class="py-string">'staticmethod'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1462"></a><tt class="py-lineno">1462</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-op">[</tt><tt class="py-name">var_doc</tt> <tt class="py-keyword">for</tt> <tt class="py-name">var_doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">var_list</tt> </tt>
+<a name="L1463"></a><tt class="py-lineno">1463</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-517" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-517', 'value', 'link-114');">value</a></tt><tt class="py-op">,</tt> <tt id="link-518" class="py-n [...]
+<a name="L1464"></a><tt class="py-lineno">1464</tt>  <tt class="py-line">                        <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-519" class="py-name"><a title="epydoc.apidoc.VariableDoc.is_instvar" class="py-name" href="#" onclick="return doclink('link-519', 'is_instvar', 'link-122');">is_instvar</a></tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> <tt id="link-520" class="py-name"><a t [...]
+<a name="L1465"></a><tt class="py-lineno">1465</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">value_type</tt> <tt class="py-op">==</tt> <tt class="py-string">'property'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1466"></a><tt class="py-lineno">1466</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-op">[</tt><tt class="py-name">var_doc</tt> <tt class="py-keyword">for</tt> <tt class="py-name">var_doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">var_list</tt> </tt>
+<a name="L1467"></a><tt class="py-lineno">1467</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-521" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-521', 'value', 'link-114');">value</a></tt><tt class="py-op">,</tt> <tt id="link-522" class="py-n [...]
+<a name="L1468"></a><tt class="py-lineno">1468</tt>  <tt class="py-line">                        <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-523" class="py-name"><a title="epydoc.apidoc.VariableDoc.is_instvar" class="py-name" href="#" onclick="return doclink('link-523', 'is_instvar', 'link-122');">is_instvar</a></tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> <tt id="link-524" class="py-name"><a t [...]
+<a name="L1469"></a><tt class="py-lineno">1469</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">value_type</tt> <tt class="py-op">==</tt> <tt class="py-string">'class'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1470"></a><tt class="py-lineno">1470</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-op">[</tt><tt class="py-name">var_doc</tt> <tt class="py-keyword">for</tt> <tt class="py-name">var_doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">var_list</tt> </tt>
+<a name="L1471"></a><tt class="py-lineno">1471</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-525" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-525', 'value', 'link-114');">value</a></tt><tt class="py-op">,</tt> <tt id="link-526" class="py-n [...]
+<a name="L1472"></a><tt class="py-lineno">1472</tt>  <tt class="py-line">                        <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-527" class="py-name"><a title="epydoc.apidoc.VariableDoc.is_instvar" class="py-name" href="#" onclick="return doclink('link-527', 'is_instvar', 'link-122');">is_instvar</a></tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> <tt id="link-528" class="py-name"><a t [...]
+<a name="L1473"></a><tt class="py-lineno">1473</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">value_type</tt> <tt class="py-op">==</tt> <tt class="py-string">'instancevariable'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1474"></a><tt class="py-lineno">1474</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-op">[</tt><tt class="py-name">var_doc</tt> <tt class="py-keyword">for</tt> <tt class="py-name">var_doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">var_list</tt> </tt>
+<a name="L1475"></a><tt class="py-lineno">1475</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-529" class="py-name"><a title="epydoc.apidoc.VariableDoc.is_instvar" class="py-name" href="#" onclick="return doclink('link-529', 'is_instvar', 'link-122');">is_instvar</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">True</tt><tt class="py-op">]</tt> </tt>
+<a name="L1476"></a><tt class="py-lineno">1476</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">value_type</tt> <tt class="py-op">==</tt> <tt class="py-string">'classvariable'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1477"></a><tt class="py-lineno">1477</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-op">[</tt><tt class="py-name">var_doc</tt> <tt class="py-keyword">for</tt> <tt class="py-name">var_doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">var_list</tt> </tt>
+<a name="L1478"></a><tt class="py-lineno">1478</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-530" class="py-name"><a title="epydoc.apidoc.VariableDoc.is_instvar" class="py-name" href="#" onclick="return doclink('link-530', 'is_instvar', 'link-122');">is_instvar</a></tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">False</tt><tt class="p [...]
+<a name="L1479"></a><tt class="py-lineno">1479</tt>  <tt class="py-line">                        <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-532" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-532', 'value', 'link-114');">value</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L1480"></a><tt class="py-lineno">1480</tt>  <tt class="py-line">                                       <tt class="py-op">(</tt><tt id="link-533" class="py-name"><a title="epydoc.apidoc.RoutineDoc" class="py-name" href="#" onclick="return doclink('link-533', 'RoutineDoc', 'link-169');">RoutineDoc</a></tt><tt class="py-op">,</tt> <tt id="link-534" class="py-name"><a title="epydoc.apidoc.ClassDoc" class="py-name" href="#" onclick="return doclink('link-534', 'ClassDoc', 'link-380'); [...]
+<a name="L1481"></a><tt class="py-lineno">1481</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1482"></a><tt class="py-lineno">1482</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">'Bad value type %r'</tt> <tt class="py-op">%</tt> <tt class="py-name">value_type</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L1483"></a><tt class="py-lineno">1483</tt>  <tt class="py-line"> </tt>
+<a name="RoutineDoc"></a><div id="RoutineDoc-def"><a name="L1484"></a><tt class="py-lineno">1484</tt> <a class="py-toggle" href="#" id="RoutineDoc-toggle" onclick="return toggle('RoutineDoc');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="epydoc.apidoc.RoutineDoc-class.html">RoutineDoc</a><tt class="py-op">(</tt><tt class="py-base-class">ValueDoc</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="RoutineDoc-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="RoutineDoc-expanded"><a name="L1485"></a><tt class="py-lineno">1485</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L1486"></a><tt class="py-lineno">1486</tt>  <tt class="py-line"><tt class="py-docstring">    API documentation information about a single routine.</tt> </tt>
+<a name="L1487"></a><tt class="py-lineno">1487</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1488"></a><tt class="py-lineno">1488</tt>  <tt class="py-line">    <tt class="py-comment">#{ Signature</tt> </tt>
+<a name="L1489"></a><tt class="py-lineno">1489</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-536" class="py-name" targets="Variable epydoc.apidoc.RoutineDoc.posargs=epydoc.apidoc.RoutineDoc-class.html#posargs"><a title="epydoc.apidoc.RoutineDoc.posargs" class="py-name" href="#" onclick="return doclink('link-536', 'posargs', 'link-536');">posargs</a></tt> <tt class="py-op">=</tt> <tt id="link-537" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" hr [...]
+<a name="L1490"></a><tt class="py-lineno">1490</tt>  <tt class="py-line">    <tt class="py-string">"""@ivar: The names of the routine's positional arguments.</tt> </tt>
+<a name="L1491"></a><tt class="py-lineno">1491</tt>  <tt class="py-line"><tt class="py-string">       If an argument list contains \"unpacking\" arguments, then</tt> </tt>
+<a name="L1492"></a><tt class="py-lineno">1492</tt>  <tt class="py-line"><tt class="py-string">       their names will be specified using nested lists.  E.g., if</tt> </tt>
+<a name="L1493"></a><tt class="py-lineno">1493</tt>  <tt class="py-line"><tt class="py-string">       a function's argument list is C{((x1,y1), (x2,y2))}, then</tt> </tt>
+<a name="L1494"></a><tt class="py-lineno">1494</tt>  <tt class="py-line"><tt class="py-string">       posargs will be C{[['x1','y1'], ['x2','y2']]}.</tt> </tt>
+<a name="L1495"></a><tt class="py-lineno">1495</tt>  <tt class="py-line"><tt class="py-string">       @type: C{list}"""</tt> </tt>
+<a name="L1496"></a><tt class="py-lineno">1496</tt>  <tt class="py-line">    <tt id="link-538" class="py-name" targets="Variable epydoc.apidoc.RoutineDoc.posarg_defaults=epydoc.apidoc.RoutineDoc-class.html#posarg_defaults"><a title="epydoc.apidoc.RoutineDoc.posarg_defaults" class="py-name" href="#" onclick="return doclink('link-538', 'posarg_defaults', 'link-538');">posarg_defaults</a></tt> <tt class="py-op">=</tt> <tt id="link-539" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class= [...]
+<a name="L1497"></a><tt class="py-lineno">1497</tt>  <tt class="py-line">    <tt class="py-string">"""@ivar: API documentation for the positional arguments'</tt> </tt>
+<a name="L1498"></a><tt class="py-lineno">1498</tt>  <tt class="py-line"><tt class="py-string">       default values.  This list has the same length as C{posargs}, and</tt> </tt>
+<a name="L1499"></a><tt class="py-lineno">1499</tt>  <tt class="py-line"><tt class="py-string">       each element of C{posarg_defaults} describes the corresponding</tt> </tt>
+<a name="L1500"></a><tt class="py-lineno">1500</tt>  <tt class="py-line"><tt class="py-string">       argument in C{posargs}.  For positional arguments with no default,</tt> </tt>
+<a name="L1501"></a><tt class="py-lineno">1501</tt>  <tt class="py-line"><tt class="py-string">       C{posargs_defaults} will contain None.</tt> </tt>
+<a name="L1502"></a><tt class="py-lineno">1502</tt>  <tt class="py-line"><tt class="py-string">       @type: C{list} of C{ValueDoc} or C{None}"""</tt> </tt>
+<a name="L1503"></a><tt class="py-lineno">1503</tt>  <tt class="py-line">    <tt id="link-540" class="py-name" targets="Variable epydoc.apidoc.RoutineDoc.vararg=epydoc.apidoc.RoutineDoc-class.html#vararg"><a title="epydoc.apidoc.RoutineDoc.vararg" class="py-name" href="#" onclick="return doclink('link-540', 'vararg', 'link-540');">vararg</a></tt> <tt class="py-op">=</tt> <tt id="link-541" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('l [...]
+<a name="L1504"></a><tt class="py-lineno">1504</tt>  <tt class="py-line">    <tt class="py-string">"""@ivar: The name of the routine's vararg argument, or C{None} if</tt> </tt>
+<a name="L1505"></a><tt class="py-lineno">1505</tt>  <tt class="py-line"><tt class="py-string">       it has no vararg argument.</tt> </tt>
+<a name="L1506"></a><tt class="py-lineno">1506</tt>  <tt class="py-line"><tt class="py-string">       @type: C{string} or C{None}"""</tt> </tt>
+<a name="L1507"></a><tt class="py-lineno">1507</tt>  <tt class="py-line">    <tt id="link-542" class="py-name" targets="Variable epydoc.apidoc.RoutineDoc.kwarg=epydoc.apidoc.RoutineDoc-class.html#kwarg"><a title="epydoc.apidoc.RoutineDoc.kwarg" class="py-name" href="#" onclick="return doclink('link-542', 'kwarg', 'link-542');">kwarg</a></tt> <tt class="py-op">=</tt> <tt id="link-543" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-5 [...]
+<a name="L1508"></a><tt class="py-lineno">1508</tt>  <tt class="py-line">    <tt class="py-string">"""@ivar: The name of the routine's keyword argument, or C{None} if</tt> </tt>
+<a name="L1509"></a><tt class="py-lineno">1509</tt>  <tt class="py-line"><tt class="py-string">       it has no keyword argument.</tt> </tt>
+<a name="L1510"></a><tt class="py-lineno">1510</tt>  <tt class="py-line"><tt class="py-string">       @type: C{string} or C{None}"""</tt> </tt>
+<a name="L1511"></a><tt class="py-lineno">1511</tt>  <tt class="py-line">    <tt id="link-544" class="py-name" targets="Variable epydoc.apidoc.RoutineDoc.lineno=epydoc.apidoc.RoutineDoc-class.html#lineno"><a title="epydoc.apidoc.RoutineDoc.lineno" class="py-name" href="#" onclick="return doclink('link-544', 'lineno', 'link-544');">lineno</a></tt> <tt class="py-op">=</tt> <tt id="link-545" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('l [...]
+<a name="L1512"></a><tt class="py-lineno">1512</tt>  <tt class="py-line">    <tt class="py-string">"""@ivar: The line number of the first line of the function's</tt> </tt>
+<a name="L1513"></a><tt class="py-lineno">1513</tt>  <tt class="py-line"><tt class="py-string">       signature.  For Python functions, this is equal to</tt> </tt>
+<a name="L1514"></a><tt class="py-lineno">1514</tt>  <tt class="py-line"><tt class="py-string">       C{func.func_code.co_firstlineno}.  The first line of a file</tt> </tt>
+<a name="L1515"></a><tt class="py-lineno">1515</tt>  <tt class="py-line"><tt class="py-string">       is considered line 1.</tt> </tt>
+<a name="L1516"></a><tt class="py-lineno">1516</tt>  <tt class="py-line"><tt class="py-string">       @type: C{int}"""</tt> </tt>
+<a name="L1517"></a><tt class="py-lineno">1517</tt>  <tt class="py-line">    <tt class="py-comment">#} end of "signature" group</tt> </tt>
+<a name="L1518"></a><tt class="py-lineno">1518</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L1519"></a><tt class="py-lineno">1519</tt>  <tt class="py-line">    <tt class="py-comment">#{ Decorators</tt> </tt>
+<a name="L1520"></a><tt class="py-lineno">1520</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-546" class="py-name" targets="Variable epydoc.apidoc.RoutineDoc.decorators=epydoc.apidoc.RoutineDoc-class.html#decorators"><a title="epydoc.apidoc.RoutineDoc.decorators" class="py-name" href="#" onclick="return doclink('link-546', 'decorators', 'link-546');">decorators</a></tt> <tt class="py-op">=</tt> <tt id="link-547" class="py-name"><a title="epydoc.apidoc.UNKNOWN" cla [...]
+<a name="L1521"></a><tt class="py-lineno">1521</tt>  <tt class="py-line">    <tt class="py-string">"""@ivar: A list of names of decorators that were applied to this</tt> </tt>
+<a name="L1522"></a><tt class="py-lineno">1522</tt>  <tt class="py-line"><tt class="py-string">       routine, in the order that they are listed in the source code.</tt> </tt>
+<a name="L1523"></a><tt class="py-lineno">1523</tt>  <tt class="py-line"><tt class="py-string">       (I.e., in the reverse of the order that they were applied in.)</tt> </tt>
+<a name="L1524"></a><tt class="py-lineno">1524</tt>  <tt class="py-line"><tt class="py-string">       @type: C{list} of C{string}"""</tt> </tt>
+<a name="L1525"></a><tt class="py-lineno">1525</tt>  <tt class="py-line">    <tt class="py-comment">#} end of "decorators" group</tt> </tt>
+<a name="L1526"></a><tt class="py-lineno">1526</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L1527"></a><tt class="py-lineno">1527</tt>  <tt class="py-line">    <tt class="py-comment">#{ Information Extracted from Docstrings</tt> </tt>
+<a name="L1528"></a><tt class="py-lineno">1528</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-548" class="py-name" targets="Variable epydoc.apidoc.RoutineDoc.arg_descrs=epydoc.apidoc.RoutineDoc-class.html#arg_descrs"><a title="epydoc.apidoc.RoutineDoc.arg_descrs" class="py-name" href="#" onclick="return doclink('link-548', 'arg_descrs', 'link-548');">arg_descrs</a></tt> <tt class="py-op">=</tt> <tt id="link-549" class="py-name"><a title="epydoc.apidoc.UNKNOWN" cla [...]
+<a name="L1529"></a><tt class="py-lineno">1529</tt>  <tt class="py-line">    <tt class="py-string">"""@ivar: A list of descriptions of the routine's</tt> </tt>
+<a name="L1530"></a><tt class="py-lineno">1530</tt>  <tt class="py-line"><tt class="py-string">       arguments.  Each element of this list is a tuple C{(args,</tt> </tt>
+<a name="L1531"></a><tt class="py-lineno">1531</tt>  <tt class="py-line"><tt class="py-string">       descr)}, where C{args} is a list of argument names; and</tt> </tt>
+<a name="L1532"></a><tt class="py-lineno">1532</tt>  <tt class="py-line"><tt class="py-string">       C{descr} is a L{ParsedDocstring</tt> </tt>
+<a name="L1533"></a><tt class="py-lineno">1533</tt>  <tt class="py-line"><tt class="py-string">       <epydoc.markup.ParsedDocstring>} describing the argument(s)</tt> </tt>
+<a name="L1534"></a><tt class="py-lineno">1534</tt>  <tt class="py-line"><tt class="py-string">       specified by C{arg}.</tt> </tt>
+<a name="L1535"></a><tt class="py-lineno">1535</tt>  <tt class="py-line"><tt class="py-string">       @type: C{list}"""</tt> </tt>
+<a name="L1536"></a><tt class="py-lineno">1536</tt>  <tt class="py-line">    <tt id="link-550" class="py-name" targets="Variable epydoc.apidoc.RoutineDoc.arg_types=epydoc.apidoc.RoutineDoc-class.html#arg_types"><a title="epydoc.apidoc.RoutineDoc.arg_types" class="py-name" href="#" onclick="return doclink('link-550', 'arg_types', 'link-550');">arg_types</a></tt> <tt class="py-op">=</tt> <tt id="link-551" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="re [...]
+<a name="L1537"></a><tt class="py-lineno">1537</tt>  <tt class="py-line">    <tt class="py-string">"""@ivar: Descriptions of the expected types for the</tt> </tt>
+<a name="L1538"></a><tt class="py-lineno">1538</tt>  <tt class="py-line"><tt class="py-string">       routine's arguments, encoded as a dictionary mapping from</tt> </tt>
+<a name="L1539"></a><tt class="py-lineno">1539</tt>  <tt class="py-line"><tt class="py-string">       argument names to type descriptions.</tt> </tt>
+<a name="L1540"></a><tt class="py-lineno">1540</tt>  <tt class="py-line"><tt class="py-string">       @type: C{dict} from C{string} to L{ParsedDocstring</tt> </tt>
+<a name="L1541"></a><tt class="py-lineno">1541</tt>  <tt class="py-line"><tt class="py-string">       <epydoc.markup.ParsedDocstring>}"""</tt> </tt>
+<a name="L1542"></a><tt class="py-lineno">1542</tt>  <tt class="py-line">    <tt id="link-552" class="py-name" targets="Variable epydoc.apidoc.RoutineDoc.return_descr=epydoc.apidoc.RoutineDoc-class.html#return_descr,Method epydoc.docwriter.html.HTMLWriter.return_descr()=epydoc.docwriter.html.HTMLWriter-class.html#return_descr"><a title="epydoc.apidoc.RoutineDoc.return_descr
+epydoc.docwriter.html.HTMLWriter.return_descr" class="py-name" href="#" onclick="return doclink('link-552', 'return_descr', 'link-552');">return_descr</a></tt> <tt class="py-op">=</tt> <tt id="link-553" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-553', 'UNKNOWN', 'link-39');">UNKNOWN</a></tt> </tt>
+<a name="L1543"></a><tt class="py-lineno">1543</tt>  <tt class="py-line">    <tt class="py-string">"""@ivar: A description of the value returned by this routine.</tt> </tt>
+<a name="L1544"></a><tt class="py-lineno">1544</tt>  <tt class="py-line"><tt class="py-string">       @type: L{ParsedDocstring<epydoc.markup.ParsedDocstring>}"""</tt> </tt>
+<a name="L1545"></a><tt class="py-lineno">1545</tt>  <tt class="py-line">    <tt id="link-554" class="py-name" targets="Variable epydoc.apidoc.RoutineDoc.return_type=epydoc.apidoc.RoutineDoc-class.html#return_type,Method epydoc.docwriter.html.HTMLWriter.return_type()=epydoc.docwriter.html.HTMLWriter-class.html#return_type"><a title="epydoc.apidoc.RoutineDoc.return_type
+epydoc.docwriter.html.HTMLWriter.return_type" class="py-name" href="#" onclick="return doclink('link-554', 'return_type', 'link-554');">return_type</a></tt> <tt class="py-op">=</tt> <tt id="link-555" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-555', 'UNKNOWN', 'link-39');">UNKNOWN</a></tt> </tt>
+<a name="L1546"></a><tt class="py-lineno">1546</tt>  <tt class="py-line">    <tt class="py-string">"""@ivar: A description of expected type for the value</tt> </tt>
+<a name="L1547"></a><tt class="py-lineno">1547</tt>  <tt class="py-line"><tt class="py-string">       returned by this routine.</tt> </tt>
+<a name="L1548"></a><tt class="py-lineno">1548</tt>  <tt class="py-line"><tt class="py-string">       @type: L{ParsedDocstring<epydoc.markup.ParsedDocstring>}"""</tt> </tt>
+<a name="L1549"></a><tt class="py-lineno">1549</tt>  <tt class="py-line">    <tt id="link-556" class="py-name" targets="Variable epydoc.apidoc.RoutineDoc.exception_descrs=epydoc.apidoc.RoutineDoc-class.html#exception_descrs"><a title="epydoc.apidoc.RoutineDoc.exception_descrs" class="py-name" href="#" onclick="return doclink('link-556', 'exception_descrs', 'link-556');">exception_descrs</a></tt> <tt class="py-op">=</tt> <tt id="link-557" class="py-name"><a title="epydoc.apidoc.UNKNOWN" c [...]
+<a name="L1550"></a><tt class="py-lineno">1550</tt>  <tt class="py-line">    <tt class="py-string">"""@ivar: A list of descriptions of exceptions</tt> </tt>
+<a name="L1551"></a><tt class="py-lineno">1551</tt>  <tt class="py-line"><tt class="py-string">       that the routine might raise.  Each element of this list is a</tt> </tt>
+<a name="L1552"></a><tt class="py-lineno">1552</tt>  <tt class="py-line"><tt class="py-string">       tuple C{(exc, descr)}, where C{exc} is a string contianing the</tt> </tt>
+<a name="L1553"></a><tt class="py-lineno">1553</tt>  <tt class="py-line"><tt class="py-string">       exception name; and C{descr} is a L{ParsedDocstring</tt> </tt>
+<a name="L1554"></a><tt class="py-lineno">1554</tt>  <tt class="py-line"><tt class="py-string">       <epydoc.markup.ParsedDocstring>} describing the circumstances</tt> </tt>
+<a name="L1555"></a><tt class="py-lineno">1555</tt>  <tt class="py-line"><tt class="py-string">       under which the exception specified by C{exc} is raised.</tt> </tt>
+<a name="L1556"></a><tt class="py-lineno">1556</tt>  <tt class="py-line"><tt class="py-string">       @type: C{list}"""</tt> </tt>
+<a name="L1557"></a><tt class="py-lineno">1557</tt>  <tt class="py-line">    <tt class="py-comment">#} end of "information extracted from docstrings" group</tt> </tt>
+<a name="L1558"></a><tt class="py-lineno">1558</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-558" class="py-name" targets="Variable epydoc.apidoc.RoutineDoc.callgraph_uid=epydoc.apidoc.RoutineDoc-class.html#callgraph_uid"><a title="epydoc.apidoc.RoutineDoc.callgraph_uid" class="py-name" href="#" onclick="return doclink('link-558', 'callgraph_uid', 'link-558');">callgraph_uid</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L1559"></a><tt class="py-lineno">1559</tt>  <tt class="py-line">    <tt class="py-string">"""@ivar: L{DotGraph}.uid of the call graph for the function.</tt> </tt>
+<a name="L1560"></a><tt class="py-lineno">1560</tt>  <tt class="py-line"><tt class="py-string">       @type: C{str}"""</tt> </tt>
+<a name="L1561"></a><tt class="py-lineno">1561</tt>  <tt class="py-line"> </tt>
+<a name="RoutineDoc.is_detailed"></a><div id="RoutineDoc.is_detailed-def"><a name="L1562"></a><tt class="py-lineno">1562</tt> <a class="py-toggle" href="#" id="RoutineDoc.is_detailed-toggle" onclick="return toggle('RoutineDoc.is_detailed');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.apidoc.RoutineDoc-class.html#is_detailed">is_detailed</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op"> [...]
+</div><div id="RoutineDoc.is_detailed-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="RoutineDoc.is_detailed-expanded"><a name="L1563"></a><tt class="py-lineno">1563</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-559" class="py-name"><a title="epydoc.apidoc.RoutineDoc" class="py-name" href="#" onclick="return doclink('link-559', 'RoutineDoc', 'link-169');">RoutineDoc</a></tt> [...]
+epydoc.apidoc.GenericValueDoc.is_detailed
+epydoc.apidoc.NamespaceDoc.is_detailed
+epydoc.apidoc.PropertyDoc.is_detailed
+epydoc.apidoc.RoutineDoc.is_detailed
+epydoc.apidoc.VariableDoc.is_detailed" class="py-name" href="#" onclick="return doclink('link-560', 'is_detailed', 'link-163');">is_detailed</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1564"></a><tt class="py-lineno">1564</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
+<a name="L1565"></a><tt class="py-lineno">1565</tt>  <tt class="py-line"> </tt>
+<a name="L1566"></a><tt class="py-lineno">1566</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-561" class="py-name"><a title="epydoc.apidoc.RoutineDoc.arg_descrs" class="py-name" href="#" onclick="return doclink('link-561', 'arg_descrs', 'link-548');">arg_descrs</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</ [...]
+<a name="L1567"></a><tt class="py-lineno">1567</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
+<a name="L1568"></a><tt class="py-lineno">1568</tt>  <tt class="py-line"> </tt>
+<a name="L1569"></a><tt class="py-lineno">1569</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-564" class="py-name"><a title="epydoc.apidoc.RoutineDoc.arg_types" class="py-name" href="#" onclick="return doclink('link-564', 'arg_types', 'link-550');">arg_types</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> [...]
+<a name="L1570"></a><tt class="py-lineno">1570</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
+<a name="L1571"></a><tt class="py-lineno">1571</tt>  <tt class="py-line"> </tt>
+<a name="L1572"></a><tt class="py-lineno">1572</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-567" class="py-name"><a title="epydoc.apidoc.RoutineDoc.return_descr
+epydoc.docwriter.html.HTMLWriter.return_descr" class="py-name" href="#" onclick="return doclink('link-567', 'return_descr', 'link-552');">return_descr</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-568" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-568', 'UNKNOWN', 'link-39');">UNKNOWN</a></tt><tt class="py-op">)</tt [...]
+<a name="L1573"></a><tt class="py-lineno">1573</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
+<a name="L1574"></a><tt class="py-lineno">1574</tt>  <tt class="py-line"> </tt>
+<a name="L1575"></a><tt class="py-lineno">1575</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-569" class="py-name"><a title="epydoc.apidoc.RoutineDoc.exception_descrs" class="py-name" href="#" onclick="return doclink('link-569', 'exception_descrs', 'link-556');">exception_descrs</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt [...]
+<a name="L1576"></a><tt class="py-lineno">1576</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
+<a name="L1577"></a><tt class="py-lineno">1577</tt>  <tt class="py-line"> </tt>
+<a name="L1578"></a><tt class="py-lineno">1578</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-572" class="py-name"><a title="epydoc.apidoc.RoutineDoc.decorators" class="py-name" href="#" onclick="return doclink('link-572', 'decorators', 'link-546');">decorators</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</ [...]
+<a name="L1579"></a><tt class="py-lineno">1579</tt>  <tt class="py-line">            <tt class="py-keyword">and</tt> <tt class="py-op">[</tt> <tt class="py-name">d</tt> <tt class="py-keyword">for</tt> <tt class="py-name">d</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-574" class="py-name"><a title="epydoc.apidoc.RoutineDoc.decorators" class="py-name" href="#" onclick="return doclink('link-574', 'decorators', 'link-546');">decorators [...]
+<a name="L1580"></a><tt class="py-lineno">1580</tt>  <tt class="py-line">                 <tt class="py-keyword">if</tt> <tt class="py-name">d</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-string">'classmethod'</tt><tt class="py-op">,</tt> <tt class="py-string">'staticmethod'</tt><tt class="py-op">)</tt> <tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1581"></a><tt class="py-lineno">1581</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
+<a name="L1582"></a><tt class="py-lineno">1582</tt>  <tt class="py-line"> </tt>
+<a name="L1583"></a><tt class="py-lineno">1583</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
+</div><a name="L1584"></a><tt class="py-lineno">1584</tt>  <tt class="py-line"> </tt>
+<a name="RoutineDoc.all_args"></a><div id="RoutineDoc.all_args-def"><a name="L1585"></a><tt class="py-lineno">1585</tt> <a class="py-toggle" href="#" id="RoutineDoc.all_args-toggle" onclick="return toggle('RoutineDoc.all_args');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.apidoc.RoutineDoc-class.html#all_args">all_args</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="RoutineDoc.all_args-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="RoutineDoc.all_args-expanded"><a name="L1586"></a><tt class="py-lineno">1586</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L1587"></a><tt class="py-lineno">1587</tt>  <tt class="py-line"><tt class="py-docstring">        @return: A list of the names of all arguments (positional,</tt> </tt>
+<a name="L1588"></a><tt class="py-lineno">1588</tt>  <tt class="py-line"><tt class="py-docstring">        vararg, and keyword), in order.  If a positional argument</tt> </tt>
+<a name="L1589"></a><tt class="py-lineno">1589</tt>  <tt class="py-line"><tt class="py-docstring">        consists of a tuple of names, then that tuple will be</tt> </tt>
+<a name="L1590"></a><tt class="py-lineno">1590</tt>  <tt class="py-line"><tt class="py-docstring">        flattened.</tt> </tt>
+<a name="L1591"></a><tt class="py-lineno">1591</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L1592"></a><tt class="py-lineno">1592</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-575" class="py-name"><a title="epydoc.apidoc.RoutineDoc.posargs" class="py-name" href="#" onclick="return doclink('link-575', 'posargs', 'link-536');">posargs</a></tt> <tt class="py-keyword">is</tt> <tt id="link-576" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink [...]
+<a name="L1593"></a><tt class="py-lineno">1593</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt id="link-577" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-577', 'UNKNOWN', 'link-39');">UNKNOWN</a></tt> </tt>
+<a name="L1594"></a><tt class="py-lineno">1594</tt>  <tt class="py-line">             </tt>
+<a name="L1595"></a><tt class="py-lineno">1595</tt>  <tt class="py-line">        <tt id="link-578" class="py-name" targets="Method epydoc.apidoc.RoutineDoc.all_args()=epydoc.apidoc.RoutineDoc-class.html#all_args"><a title="epydoc.apidoc.RoutineDoc.all_args" class="py-name" href="#" onclick="return doclink('link-578', 'all_args', 'link-578');">all_args</a></tt> <tt class="py-op">=</tt> <tt id="link-579" class="py-name" targets="Function epydoc.apidoc._flatten()=epydoc.apidoc-module.html#_ [...]
+<a name="L1596"></a><tt class="py-lineno">1596</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-581" class="py-name"><a title="epydoc.apidoc.RoutineDoc.vararg" class="py-name" href="#" onclick="return doclink('link-581', 'vararg', 'link-540');">vararg</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id=" [...]
+<a name="L1597"></a><tt class="py-lineno">1597</tt>  <tt class="py-line">            <tt id="link-583" class="py-name"><a title="epydoc.apidoc.RoutineDoc.all_args" class="py-name" href="#" onclick="return doclink('link-583', 'all_args', 'link-578');">all_args</a></tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-584" class="py-name"><a title="epydoc.apidoc.RoutineDoc.vararg" class="py-name" [...]
+<a name="L1598"></a><tt class="py-lineno">1598</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-585" class="py-name"><a title="epydoc.apidoc.RoutineDoc.kwarg" class="py-name" href="#" onclick="return doclink('link-585', 'kwarg', 'link-542');">kwarg</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="lin [...]
+<a name="L1599"></a><tt class="py-lineno">1599</tt>  <tt class="py-line">            <tt id="link-587" class="py-name"><a title="epydoc.apidoc.RoutineDoc.all_args" class="py-name" href="#" onclick="return doclink('link-587', 'all_args', 'link-578');">all_args</a></tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-588" class="py-name"><a title="epydoc.apidoc.RoutineDoc.kwarg" class="py-name"  [...]
+<a name="L1600"></a><tt class="py-lineno">1600</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-589" class="py-name"><a title="epydoc.apidoc.RoutineDoc.all_args" class="py-name" href="#" onclick="return doclink('link-589', 'all_args', 'link-578');">all_args</a></tt> </tt>
+</div></div><a name="L1601"></a><tt class="py-lineno">1601</tt>  <tt class="py-line"> </tt>
+<a name="_flatten"></a><div id="_flatten-def"><a name="L1602"></a><tt class="py-lineno">1602</tt> <a class="py-toggle" href="#" id="_flatten-toggle" onclick="return toggle('_flatten');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.apidoc-module.html#_flatten">_flatten</a><tt class="py-op">(</tt><tt class="py-param">lst</tt><tt class="py-op">,</tt> <tt class="py-param">out</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="p [...]
+</div><div id="_flatten-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_flatten-expanded"><a name="L1603"></a><tt class="py-lineno">1603</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L1604"></a><tt class="py-lineno">1604</tt>  <tt class="py-line"><tt class="py-docstring">    Return a flattened version of C{lst}.</tt> </tt>
+<a name="L1605"></a><tt class="py-lineno">1605</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1606"></a><tt class="py-lineno">1606</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">out</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> <tt class="py-name">out</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L1607"></a><tt class="py-lineno">1607</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">elt</tt> <tt class="py-keyword">in</tt> <tt class="py-name">lst</tt><tt class="py-op">:</tt> </tt>
+<a name="L1608"></a><tt class="py-lineno">1608</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">elt</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">list</tt><tt class="py-op">,</tt><tt class="py-name">tuple</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1609"></a><tt class="py-lineno">1609</tt>  <tt class="py-line">            <tt id="link-590" class="py-name"><a title="epydoc.apidoc._flatten" class="py-name" href="#" onclick="return doclink('link-590', '_flatten', 'link-579');">_flatten</a></tt><tt class="py-op">(</tt><tt class="py-name">elt</tt><tt class="py-op">,</tt> <tt class="py-name">out</tt><tt class="py-op">)</tt> </tt>
+<a name="L1610"></a><tt class="py-lineno">1610</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1611"></a><tt class="py-lineno">1611</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">elt</tt><tt class="py-op">)</tt> </tt>
+<a name="L1612"></a><tt class="py-lineno">1612</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">out</tt> </tt>
+</div><a name="L1613"></a><tt class="py-lineno">1613</tt>  <tt class="py-line"> </tt>
+<a name="ClassMethodDoc"></a><div id="ClassMethodDoc-def"><a name="L1614"></a><tt class="py-lineno">1614</tt> <a class="py-toggle" href="#" id="ClassMethodDoc-toggle" onclick="return toggle('ClassMethodDoc');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="epydoc.apidoc.ClassMethodDoc-class.html">ClassMethodDoc</a><tt class="py-op">(</tt><tt class="py-base-class">RoutineDoc</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-keyword [...]
+</div><a name="StaticMethodDoc"></a><div id="StaticMethodDoc-def"><a name="L1615"></a><tt class="py-lineno">1615</tt> <a class="py-toggle" href="#" id="StaticMethodDoc-toggle" onclick="return toggle('StaticMethodDoc');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="epydoc.apidoc.StaticMethodDoc-class.html">StaticMethodDoc</a><tt class="py-op">(</tt><tt class="py-base-class">RoutineDoc</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class [...]
+</div><a name="L1616"></a><tt class="py-lineno">1616</tt>  <tt class="py-line"> </tt>
+<a name="PropertyDoc"></a><div id="PropertyDoc-def"><a name="L1617"></a><tt class="py-lineno">1617</tt> <a class="py-toggle" href="#" id="PropertyDoc-toggle" onclick="return toggle('PropertyDoc');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="epydoc.apidoc.PropertyDoc-class.html">PropertyDoc</a><tt class="py-op">(</tt><tt class="py-base-class">ValueDoc</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="PropertyDoc-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="PropertyDoc-expanded"><a name="L1618"></a><tt class="py-lineno">1618</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L1619"></a><tt class="py-lineno">1619</tt>  <tt class="py-line"><tt class="py-docstring">    API documentation information about a single property.</tt> </tt>
+<a name="L1620"></a><tt class="py-lineno">1620</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1621"></a><tt class="py-lineno">1621</tt>  <tt class="py-line">    <tt class="py-comment">#{ Property Access Functions</tt> </tt>
+<a name="L1622"></a><tt class="py-lineno">1622</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-591" class="py-name" targets="Variable epydoc.apidoc.PropertyDoc.fget=epydoc.apidoc.PropertyDoc-class.html#fget"><a title="epydoc.apidoc.PropertyDoc.fget" class="py-name" href="#" onclick="return doclink('link-591', 'fget', 'link-591');">fget</a></tt> <tt class="py-op">=</tt> <tt id="link-592" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" oncli [...]
+<a name="L1623"></a><tt class="py-lineno">1623</tt>  <tt class="py-line">    <tt class="py-string">"""@ivar: API documentation for the property's get function.</tt> </tt>
+<a name="L1624"></a><tt class="py-lineno">1624</tt>  <tt class="py-line"><tt class="py-string">       @type: L{RoutineDoc}"""</tt> </tt>
+<a name="L1625"></a><tt class="py-lineno">1625</tt>  <tt class="py-line">    <tt id="link-593" class="py-name" targets="Variable epydoc.apidoc.PropertyDoc.fset=epydoc.apidoc.PropertyDoc-class.html#fset"><a title="epydoc.apidoc.PropertyDoc.fset" class="py-name" href="#" onclick="return doclink('link-593', 'fset', 'link-593');">fset</a></tt> <tt class="py-op">=</tt> <tt id="link-594" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-594 [...]
+<a name="L1626"></a><tt class="py-lineno">1626</tt>  <tt class="py-line">    <tt class="py-string">"""@ivar: API documentation for the property's set function.</tt> </tt>
+<a name="L1627"></a><tt class="py-lineno">1627</tt>  <tt class="py-line"><tt class="py-string">       @type: L{RoutineDoc}"""</tt> </tt>
+<a name="L1628"></a><tt class="py-lineno">1628</tt>  <tt class="py-line">    <tt id="link-595" class="py-name" targets="Variable epydoc.apidoc.PropertyDoc.fdel=epydoc.apidoc.PropertyDoc-class.html#fdel"><a title="epydoc.apidoc.PropertyDoc.fdel" class="py-name" href="#" onclick="return doclink('link-595', 'fdel', 'link-595');">fdel</a></tt> <tt class="py-op">=</tt> <tt id="link-596" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-596 [...]
+<a name="L1629"></a><tt class="py-lineno">1629</tt>  <tt class="py-line">    <tt class="py-string">"""@ivar: API documentation for the property's delete function.</tt> </tt>
+<a name="L1630"></a><tt class="py-lineno">1630</tt>  <tt class="py-line"><tt class="py-string">       @type: L{RoutineDoc}"""</tt> </tt>
+<a name="L1631"></a><tt class="py-lineno">1631</tt>  <tt class="py-line">    <tt class="py-comment">#}</tt> </tt>
+<a name="L1632"></a><tt class="py-lineno">1632</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#{ Information Extracted from Docstrings</tt> </tt>
+<a name="L1633"></a><tt class="py-lineno">1633</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-597" class="py-name"><a title="epydoc.apidoc.PropertyDoc.type_descr
+epydoc.apidoc.VariableDoc.type_descr
+epydoc.docwriter.html.HTMLWriter.type_descr" class="py-name" href="#" onclick="return doclink('link-597', 'type_descr', 'link-116');">type_descr</a></tt> <tt class="py-op">=</tt> <tt id="link-598" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-598', 'UNKNOWN', 'link-39');">UNKNOWN</a></tt> </tt>
+<a name="L1634"></a><tt class="py-lineno">1634</tt>  <tt class="py-line">    <tt class="py-string">"""@ivar: A description of the property's expected type, extracted</tt> </tt>
+<a name="L1635"></a><tt class="py-lineno">1635</tt>  <tt class="py-line"><tt class="py-string">       from its docstring.</tt> </tt>
+<a name="L1636"></a><tt class="py-lineno">1636</tt>  <tt class="py-line"><tt class="py-string">       @type: L{ParsedDocstring<epydoc.markup.ParsedDocstring>}"""</tt> </tt>
+<a name="L1637"></a><tt class="py-lineno">1637</tt>  <tt class="py-line">    <tt class="py-comment">#} end of "information extracted from docstrings" group</tt> </tt>
+<a name="L1638"></a><tt class="py-lineno">1638</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="PropertyDoc.apidoc_links"></a><div id="PropertyDoc.apidoc_links-def"><a name="L1639"></a><tt class="py-lineno">1639</tt> <a class="py-toggle" href="#" id="PropertyDoc.apidoc_links-toggle" onclick="return toggle('PropertyDoc.apidoc_links');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.apidoc.PropertyDoc-class.html#apidoc_links">apidoc_links</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt cl [...]
+</div><div id="PropertyDoc.apidoc_links-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="PropertyDoc.apidoc_links-expanded"><a name="L1640"></a><tt class="py-lineno">1640</tt>  <tt class="py-line">        <tt class="py-name">val_docs</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L1641"></a><tt class="py-lineno">1641</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-599" class="py-name"><a title="epydoc.apidoc.PropertyDoc.fget" class="py-name" href="#" onclick="return doclink('link-599', 'fget', 'link-591');">fget</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link- [...]
+<a name="L1642"></a><tt class="py-lineno">1642</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-602" class="py-name"><a title="epydoc.apidoc.PropertyDoc.fset" class="py-name" href="#" onclick="return doclink('link-602', 'fset', 'link-593');">fset</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link- [...]
+<a name="L1643"></a><tt class="py-lineno">1643</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-605" class="py-name"><a title="epydoc.apidoc.PropertyDoc.fdel" class="py-name" href="#" onclick="return doclink('link-605', 'fdel', 'link-595');">fdel</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link- [...]
+<a name="L1644"></a><tt class="py-lineno">1644</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">val_docs</tt> </tt>
+</div><a name="L1645"></a><tt class="py-lineno">1645</tt>  <tt class="py-line"> </tt>
+<a name="PropertyDoc.is_detailed"></a><div id="PropertyDoc.is_detailed-def"><a name="L1646"></a><tt class="py-lineno">1646</tt> <a class="py-toggle" href="#" id="PropertyDoc.is_detailed-toggle" onclick="return toggle('PropertyDoc.is_detailed');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.apidoc.PropertyDoc-class.html#is_detailed">is_detailed</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py [...]
+</div><div id="PropertyDoc.is_detailed-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="PropertyDoc.is_detailed-expanded"><a name="L1647"></a><tt class="py-lineno">1647</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-608" class="py-name"><a title="epydoc.apidoc.PropertyDoc" class="py-name" href="#" onclick="return doclink('link-608', 'PropertyDoc', 'link-522');">PropertyDoc</a> [...]
+epydoc.apidoc.GenericValueDoc.is_detailed
+epydoc.apidoc.NamespaceDoc.is_detailed
+epydoc.apidoc.PropertyDoc.is_detailed
+epydoc.apidoc.RoutineDoc.is_detailed
+epydoc.apidoc.VariableDoc.is_detailed" class="py-name" href="#" onclick="return doclink('link-609', 'is_detailed', 'link-163');">is_detailed</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1648"></a><tt class="py-lineno">1648</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
+<a name="L1649"></a><tt class="py-lineno">1649</tt>  <tt class="py-line"> </tt>
+<a name="L1650"></a><tt class="py-lineno">1650</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-610" class="py-name"><a title="epydoc.apidoc.PropertyDoc.fget" class="py-name" href="#" onclick="return doclink('link-610', 'fget', 'link-591');">fget</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link- [...]
+<a name="L1651"></a><tt class="py-lineno">1651</tt>  <tt class="py-line">             <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
+<a name="L1652"></a><tt class="py-lineno">1652</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-614" class="py-name"><a title="epydoc.apidoc.PropertyDoc.fset" class="py-name" href="#" onclick="return doclink('link-614', 'fset', 'link-593');">fset</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link- [...]
+<a name="L1653"></a><tt class="py-lineno">1653</tt>  <tt class="py-line">             <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
+<a name="L1654"></a><tt class="py-lineno">1654</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-618" class="py-name"><a title="epydoc.apidoc.PropertyDoc.fdel" class="py-name" href="#" onclick="return doclink('link-618', 'fdel', 'link-595');">fdel</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link- [...]
+<a name="L1655"></a><tt class="py-lineno">1655</tt>  <tt class="py-line">             <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
+<a name="L1656"></a><tt class="py-lineno">1656</tt>  <tt class="py-line"> </tt>
+<a name="L1657"></a><tt class="py-lineno">1657</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
+</div></div><a name="L1658"></a><tt class="py-lineno">1658</tt>  <tt class="py-line"> </tt>
+<a name="L1659"></a><tt class="py-lineno">1659</tt>  <tt class="py-line"><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L1660"></a><tt class="py-lineno">1660</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## Index</tt> </tt>
+<a name="L1661"></a><tt class="py-lineno">1661</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L1662"></a><tt class="py-lineno">1662</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="DocIndex"></a><div id="DocIndex-def"><a name="L1663"></a><tt class="py-lineno">1663</tt> <a class="py-toggle" href="#" id="DocIndex-toggle" onclick="return toggle('DocIndex');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="epydoc.apidoc.DocIndex-class.html">DocIndex</a><tt class="py-op">:</tt> </tt>
+</div><div id="DocIndex-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="DocIndex-expanded"><a name="L1664"></a><tt class="py-lineno">1664</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L1665"></a><tt class="py-lineno">1665</tt>  <tt class="py-line"><tt class="py-docstring">    [xx] out of date.</tt> </tt>
+<a name="L1666"></a><tt class="py-lineno">1666</tt>  <tt class="py-line"><tt class="py-docstring">    </tt> </tt>
+<a name="L1667"></a><tt class="py-lineno">1667</tt>  <tt class="py-line"><tt class="py-docstring">    An index that .. hmm...  it *can't* be used to access some things,</tt> </tt>
+<a name="L1668"></a><tt class="py-lineno">1668</tt>  <tt class="py-line"><tt class="py-docstring">    cuz they're not at the root level.  Do I want to add them or what?</tt> </tt>
+<a name="L1669"></a><tt class="py-lineno">1669</tt>  <tt class="py-line"><tt class="py-docstring">    And if so, then I have a sort of a new top level.  hmm..  so</tt> </tt>
+<a name="L1670"></a><tt class="py-lineno">1670</tt>  <tt class="py-line"><tt class="py-docstring">    basically the question is what to do with a name that's not in the</tt> </tt>
+<a name="L1671"></a><tt class="py-lineno">1671</tt>  <tt class="py-line"><tt class="py-docstring">    root var's name space.  2 types:</tt> </tt>
+<a name="L1672"></a><tt class="py-lineno">1672</tt>  <tt class="py-line"><tt class="py-docstring">      - entirely outside (eg os.path)</tt> </tt>
+<a name="L1673"></a><tt class="py-lineno">1673</tt>  <tt class="py-line"><tt class="py-docstring">      - inside but not known (eg a submodule that we didn't look at?)</tt> </tt>
+<a name="L1674"></a><tt class="py-lineno">1674</tt>  <tt class="py-line"><tt class="py-docstring">      - container of current thing not examined?</tt> </tt>
+<a name="L1675"></a><tt class="py-lineno">1675</tt>  <tt class="py-line"><tt class="py-docstring">    </tt> </tt>
+<a name="L1676"></a><tt class="py-lineno">1676</tt>  <tt class="py-line"><tt class="py-docstring">    An index of all the C{APIDoc} objects that can be reached from a</tt> </tt>
+<a name="L1677"></a><tt class="py-lineno">1677</tt>  <tt class="py-line"><tt class="py-docstring">    root set of C{ValueDoc}s.  </tt> </tt>
+<a name="L1678"></a><tt class="py-lineno">1678</tt>  <tt class="py-line"><tt class="py-docstring">    </tt> </tt>
+<a name="L1679"></a><tt class="py-lineno">1679</tt>  <tt class="py-line"><tt class="py-docstring">    The members of this index can be accessed by dotted name.  In</tt> </tt>
+<a name="L1680"></a><tt class="py-lineno">1680</tt>  <tt class="py-line"><tt class="py-docstring">    particular, C{DocIndex} defines two mappings, accessed via the</tt> </tt>
+<a name="L1681"></a><tt class="py-lineno">1681</tt>  <tt class="py-line"><tt class="py-docstring">    L{get_vardoc()} and L{get_valdoc()} methods, which can be used to</tt> </tt>
+<a name="L1682"></a><tt class="py-lineno">1682</tt>  <tt class="py-line"><tt class="py-docstring">    access C{VariableDoc}s or C{ValueDoc}s respectively by name.  (Two</tt> </tt>
+<a name="L1683"></a><tt class="py-lineno">1683</tt>  <tt class="py-line"><tt class="py-docstring">    separate mappings are necessary because a single name can be used</tt> </tt>
+<a name="L1684"></a><tt class="py-lineno">1684</tt>  <tt class="py-line"><tt class="py-docstring">    to refer to both a variable and to the value contained by that</tt> </tt>
+<a name="L1685"></a><tt class="py-lineno">1685</tt>  <tt class="py-line"><tt class="py-docstring">    variable.)</tt> </tt>
+<a name="L1686"></a><tt class="py-lineno">1686</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1687"></a><tt class="py-lineno">1687</tt>  <tt class="py-line"><tt class="py-docstring">    Additionally, the index defines two sets of C{ValueDoc}s:</tt> </tt>
+<a name="L1688"></a><tt class="py-lineno">1688</tt>  <tt class="py-line"><tt class="py-docstring">    \"reachable C{ValueDoc}s\" and \"contained C{ValueDoc}s\".  The</tt> </tt>
+<a name="L1689"></a><tt class="py-lineno">1689</tt>  <tt class="py-line"><tt class="py-docstring">    X{reachable C{ValueDoc}s} are defined as the set of all</tt> </tt>
+<a name="L1690"></a><tt class="py-lineno">1690</tt>  <tt class="py-line"><tt class="py-docstring">    C{ValueDoc}s that can be reached from the root set by following</tt> </tt>
+<a name="L1691"></a><tt class="py-lineno">1691</tt>  <tt class="py-line"><tt class="py-docstring">    I{any} sequence of pointers to C{ValueDoc}s or C{VariableDoc}s.</tt> </tt>
+<a name="L1692"></a><tt class="py-lineno">1692</tt>  <tt class="py-line"><tt class="py-docstring">    The X{contained C{ValueDoc}s} are defined as the set of all</tt> </tt>
+<a name="L1693"></a><tt class="py-lineno">1693</tt>  <tt class="py-line"><tt class="py-docstring">    C{ValueDoc}s that can be reached from the root set by following</tt> </tt>
+<a name="L1694"></a><tt class="py-lineno">1694</tt>  <tt class="py-line"><tt class="py-docstring">    only the C{ValueDoc} pointers defined by non-imported</tt> </tt>
+<a name="L1695"></a><tt class="py-lineno">1695</tt>  <tt class="py-line"><tt class="py-docstring">    C{VariableDoc}s.  For example, if the root set contains a module</tt> </tt>
+<a name="L1696"></a><tt class="py-lineno">1696</tt>  <tt class="py-line"><tt class="py-docstring">    C{m}, then the contained C{ValueDoc}s includes the C{ValueDoc}s</tt> </tt>
+<a name="L1697"></a><tt class="py-lineno">1697</tt>  <tt class="py-line"><tt class="py-docstring">    for any functions, variables, or classes defined in that module,</tt> </tt>
+<a name="L1698"></a><tt class="py-lineno">1698</tt>  <tt class="py-line"><tt class="py-docstring">    as well as methods and variables defined in classes defined in the</tt> </tt>
+<a name="L1699"></a><tt class="py-lineno">1699</tt>  <tt class="py-line"><tt class="py-docstring">    module.  The reachable C{ValueDoc}s includes all of those</tt> </tt>
+<a name="L1700"></a><tt class="py-lineno">1700</tt>  <tt class="py-line"><tt class="py-docstring">    C{ValueDoc}s, as well as C{ValueDoc}s for any values imported into</tt> </tt>
+<a name="L1701"></a><tt class="py-lineno">1701</tt>  <tt class="py-line"><tt class="py-docstring">    the module, and base classes for classes defined in the module.</tt> </tt>
+<a name="L1702"></a><tt class="py-lineno">1702</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1703"></a><tt class="py-lineno">1703</tt>  <tt class="py-line"> </tt>
+<a name="DocIndex.__init__"></a><div id="DocIndex.__init__-def"><a name="L1704"></a><tt class="py-lineno">1704</tt> <a class="py-toggle" href="#" id="DocIndex.__init__-toggle" onclick="return toggle('DocIndex.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.apidoc.DocIndex-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">root</tt><tt class="py-o [...]
+</div><div id="DocIndex.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DocIndex.__init__-expanded"><a name="L1705"></a><tt class="py-lineno">1705</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L1706"></a><tt class="py-lineno">1706</tt>  <tt class="py-line"><tt class="py-docstring">        Create a new documentation index, based on the given root set</tt> </tt>
+<a name="L1707"></a><tt class="py-lineno">1707</tt>  <tt class="py-line"><tt class="py-docstring">        of C{ValueDoc}s.  If any C{APIDoc}s reachable from the root</tt> </tt>
+<a name="L1708"></a><tt class="py-lineno">1708</tt>  <tt class="py-line"><tt class="py-docstring">        set does not have a canonical name, then it will be assigned</tt> </tt>
+<a name="L1709"></a><tt class="py-lineno">1709</tt>  <tt class="py-line"><tt class="py-docstring">        one.  etc.</tt> </tt>
+<a name="L1710"></a><tt class="py-lineno">1710</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt>
+<a name="L1711"></a><tt class="py-lineno">1711</tt>  <tt class="py-line"><tt class="py-docstring">        @param root: A list of C{ValueDoc}s.</tt> </tt>
+<a name="L1712"></a><tt class="py-lineno">1712</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L1713"></a><tt class="py-lineno">1713</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt id="link-622" class="py-name"><a title="epydoc.apidoc" class="py-name" href="#" onclick="return doclink('link-622', 'apidoc', 'link-76');">apidoc</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">root</tt><tt class="py-op">:</tt> </tt>
+<a name="L1714"></a><tt class="py-lineno">1714</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt id="link-623" class="py-name"><a title="epydoc.apidoc" class="py-name" href="#" onclick="return doclink('link-623', 'apidoc', 'link-76');">apidoc</a></tt><tt class="py-op">.</tt><tt id="link-624" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-624', 'canonical_name', 'link-83');">canonical_name</a></tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-625" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-625', 'UNKNOWN', 'link-39');">UNKNOWN</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1715"></a><tt class="py-lineno">1715</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"All APIdocs passed to DocIndexer "</tt> </tt>
+<a name="L1716"></a><tt class="py-lineno">1716</tt>  <tt class="py-line">                                 <tt class="py-string">"must already have canonical names."</tt><tt class="py-op">)</tt> </tt>
+<a name="L1717"></a><tt class="py-lineno">1717</tt>  <tt class="py-line">         </tt>
+<a name="L1718"></a><tt class="py-lineno">1718</tt>  <tt class="py-line">        <tt class="py-comment"># Initialize the root items list.  We sort them by length in</tt> </tt>
+<a name="L1719"></a><tt class="py-lineno">1719</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># ascending order.  (This ensures that variables will shadow</tt> </tt>
+<a name="L1720"></a><tt class="py-lineno">1720</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># submodules when appropriate.)</tt> </tt>
+<a name="L1721"></a><tt class="py-lineno">1721</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># When the elements name is the same, list in alphabetical order:</tt> </tt>
+<a name="L1722"></a><tt class="py-lineno">1722</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># this is needed by the check for duplicates below.</tt> </tt>
+<a name="L1723"></a><tt class="py-lineno">1723</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">root</tt> <tt class="py-op">=</tt> <tt id="link-626" class="py-name"><a title="epydoc.compat.sorted" class="py-name" href="#" onclick="return doclink('link-626', 'sorted', 'link-340');">sorted</a></tt><tt class="py-op">(</tt><tt class="py-name">root</tt><tt class="py-op">,</tt> </tt>
+<a name="L1724"></a><tt class="py-lineno">1724</tt>  <tt class="py-line">            <tt id="link-627" class="py-name"><a title="epydoc.cli.key" class="py-name" href="#" onclick="return doclink('link-627', 'key', 'link-65');">key</a></tt><tt class="py-op">=</tt><tt class="py-keyword">lambda</tt> <tt class="py-name">d</tt><tt class="py-op">:</tt> <tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">d</tt><tt class="py-op">.</tt><tt id="link-628"  [...]
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-628', 'canonical_name', 'link-83');">canonical_name</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">d</tt><tt class="py-op">.</tt><tt id="link-629" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-629', 'canonical_name', 'link-83');">canonical_name</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1725"></a><tt class="py-lineno">1725</tt>  <tt class="py-line">        <tt class="py-string">"""The list of C{ValueDoc}s to document.</tt> </tt>
+<a name="L1726"></a><tt class="py-lineno">1726</tt>  <tt class="py-line"><tt class="py-string">            @type: C{list}"""</tt> </tt>
+<a name="L1727"></a><tt class="py-lineno">1727</tt>  <tt class="py-line"> </tt>
+<a name="L1728"></a><tt class="py-lineno">1728</tt>  <tt class="py-line">        <tt class="py-comment"># Drop duplicated modules</tt> </tt>
+<a name="L1729"></a><tt class="py-lineno">1729</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># [xx] maybe what causes duplicates should be fixed instead.</tt> </tt>
+<a name="L1730"></a><tt class="py-lineno">1730</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#      If fixed, adjust the sort here above: sorting by names will not</tt> </tt>
+<a name="L1731"></a><tt class="py-lineno">1731</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#      be required anymore</tt> </tt>
+<a name="L1732"></a><tt class="py-lineno">1732</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">i</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L1733"></a><tt class="py-lineno">1733</tt>  <tt class="py-line">        <tt class="py-keyword">while</tt> <tt class="py-name">i</tt> <tt class="py-op"><</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">root</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1734"></a><tt class="py-lineno">1734</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">root</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-keyword">is</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">root</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt  [...]
+<a name="L1735"></a><tt class="py-lineno">1735</tt>  <tt class="py-line">                <tt class="py-keyword">del</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">root</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt> </tt>
+<a name="L1736"></a><tt class="py-lineno">1736</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1737"></a><tt class="py-lineno">1737</tt>  <tt class="py-line">                <tt class="py-name">i</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L1738"></a><tt class="py-lineno">1738</tt>  <tt class="py-line"> </tt>
+<a name="L1739"></a><tt class="py-lineno">1739</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mlclasses</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-630" class="py-name" targets="Method epydoc.apidoc.DocIndex._get_module_classes()=epydoc.apidoc.DocIndex-class.html#_get_module_classes"><a title="epydoc.apidoc.DocIndex._get_module_classes" class="py-name" href="#" onclick="return  [...]
+<a name="L1740"></a><tt class="py-lineno">1740</tt>  <tt class="py-line">        <tt class="py-string">"""A mapping from class names to L{ClassDoc}. Contains</tt> </tt>
+<a name="L1741"></a><tt class="py-lineno">1741</tt>  <tt class="py-line"><tt class="py-string">           classes defined at module level for modules in L{root}</tt> </tt>
+<a name="L1742"></a><tt class="py-lineno">1742</tt>  <tt class="py-line"><tt class="py-string">           and which can be used as fallback by L{find()} if looking</tt> </tt>
+<a name="L1743"></a><tt class="py-lineno">1743</tt>  <tt class="py-line"><tt class="py-string">           in containing namespaces fails.</tt> </tt>
+<a name="L1744"></a><tt class="py-lineno">1744</tt>  <tt class="py-line"><tt class="py-string">           @type: C{dict} from C{str} to L{ClassDoc} or C{list}"""</tt> </tt>
+<a name="L1745"></a><tt class="py-lineno">1745</tt>  <tt class="py-line"> </tt>
+<a name="L1746"></a><tt class="py-lineno">1746</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">callers</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L1747"></a><tt class="py-lineno">1747</tt>  <tt class="py-line">        <tt class="py-string">"""A dictionary mapping from C{RoutineDoc}s in this index</tt> </tt>
+<a name="L1748"></a><tt class="py-lineno">1748</tt>  <tt class="py-line"><tt class="py-string">           to lists of C{RoutineDoc}s for the routine's callers.</tt> </tt>
+<a name="L1749"></a><tt class="py-lineno">1749</tt>  <tt class="py-line"><tt class="py-string">           This dictionary is initialized by calling</tt> </tt>
+<a name="L1750"></a><tt class="py-lineno">1750</tt>  <tt class="py-line"><tt class="py-string">           L{read_profiling_info()}.</tt> </tt>
+<a name="L1751"></a><tt class="py-lineno">1751</tt>  <tt class="py-line"><tt class="py-string">           @type: C{list} of L{RoutineDoc}"""</tt> </tt>
+<a name="L1752"></a><tt class="py-lineno">1752</tt>  <tt class="py-line">         </tt>
+<a name="L1753"></a><tt class="py-lineno">1753</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">callees</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L1754"></a><tt class="py-lineno">1754</tt>  <tt class="py-line">        <tt class="py-string">"""A dictionary mapping from C{RoutineDoc}s in this index</tt> </tt>
+<a name="L1755"></a><tt class="py-lineno">1755</tt>  <tt class="py-line"><tt class="py-string">           to lists of C{RoutineDoc}s for the routine's callees.</tt> </tt>
+<a name="L1756"></a><tt class="py-lineno">1756</tt>  <tt class="py-line"><tt class="py-string">           This dictionary is initialized by calling</tt> </tt>
+<a name="L1757"></a><tt class="py-lineno">1757</tt>  <tt class="py-line"><tt class="py-string">           L{read_profiling_info()}.</tt> </tt>
+<a name="L1758"></a><tt class="py-lineno">1758</tt>  <tt class="py-line"><tt class="py-string">           @type: C{list} of L{RoutineDoc}"""</tt> </tt>
+<a name="L1759"></a><tt class="py-lineno">1759</tt>  <tt class="py-line"> </tt>
+<a name="L1760"></a><tt class="py-lineno">1760</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_funcid_to_doc</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L1761"></a><tt class="py-lineno">1761</tt>  <tt class="py-line">        <tt class="py-string">"""A mapping from C{profile} function ids to corresponding</tt> </tt>
+<a name="L1762"></a><tt class="py-lineno">1762</tt>  <tt class="py-line"><tt class="py-string">           C{APIDoc} objects.  A function id is a tuple of the form</tt> </tt>
+<a name="L1763"></a><tt class="py-lineno">1763</tt>  <tt class="py-line"><tt class="py-string">           C{(filename, lineno, funcname)}.  This is used to update</tt> </tt>
+<a name="L1764"></a><tt class="py-lineno">1764</tt>  <tt class="py-line"><tt class="py-string">           the L{callers} and L{callees} variables."""</tt> </tt>
+<a name="L1765"></a><tt class="py-lineno">1765</tt>  <tt class="py-line"> </tt>
+<a name="L1766"></a><tt class="py-lineno">1766</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_container_cache</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L1767"></a><tt class="py-lineno">1767</tt>  <tt class="py-line">        <tt class="py-string">"""A cache for the L{container()} method, to increase speed."""</tt> </tt>
+<a name="L1768"></a><tt class="py-lineno">1768</tt>  <tt class="py-line"> </tt>
+<a name="L1769"></a><tt class="py-lineno">1769</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_get_cache</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L1770"></a><tt class="py-lineno">1770</tt>  <tt class="py-line">        <tt class="py-string">"""A cache for the L{get_vardoc()} and L{get_valdoc()} methods,</tt> </tt>
+<a name="L1771"></a><tt class="py-lineno">1771</tt>  <tt class="py-line"><tt class="py-string">        to increase speed."""</tt> </tt>
+</div><a name="L1772"></a><tt class="py-lineno">1772</tt>  <tt class="py-line"> </tt>
+<a name="L1773"></a><tt class="py-lineno">1773</tt>  <tt class="py-line">    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L1774"></a><tt class="py-lineno">1774</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># Lookup methods</tt> </tt>
+<a name="L1775"></a><tt class="py-lineno">1775</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L1776"></a><tt class="py-lineno">1776</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># [xx]</tt> </tt>
+<a name="L1777"></a><tt class="py-lineno">1777</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># Currently these only work for things reachable from the</tt> </tt>
+<a name="L1778"></a><tt class="py-lineno">1778</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># root... :-/  I might want to change this so that imported</tt> </tt>
+<a name="L1779"></a><tt class="py-lineno">1779</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># values can be accessed even if they're not contained.  </tt> </tt>
+<a name="L1780"></a><tt class="py-lineno">1780</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># Also, I might want canonical names to not start with ??</tt> </tt>
+<a name="L1781"></a><tt class="py-lineno">1781</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># if the thing is a top-level imported module..?</tt> </tt>
+<a name="L1782"></a><tt class="py-lineno">1782</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="DocIndex.get_vardoc"></a><div id="DocIndex.get_vardoc-def"><a name="L1783"></a><tt class="py-lineno">1783</tt> <a class="py-toggle" href="#" id="DocIndex.get_vardoc-toggle" onclick="return toggle('DocIndex.get_vardoc');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.apidoc.DocIndex-class.html#get_vardoc">get_vardoc</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">name</tt><tt [...]
+</div><div id="DocIndex.get_vardoc-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DocIndex.get_vardoc-expanded"><a name="L1784"></a><tt class="py-lineno">1784</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L1785"></a><tt class="py-lineno">1785</tt>  <tt class="py-line"><tt class="py-docstring">        Return the C{VariableDoc} with the given name, or C{None} if this</tt> </tt>
+<a name="L1786"></a><tt class="py-lineno">1786</tt>  <tt class="py-line"><tt class="py-docstring">        index does not contain a C{VariableDoc} with the given name.</tt> </tt>
+<a name="L1787"></a><tt class="py-lineno">1787</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L1788"></a><tt class="py-lineno">1788</tt>  <tt class="py-line">        <tt class="py-name">var</tt><tt class="py-op">,</tt> <tt class="py-name">val</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-631" class="py-name" targets="Method epydoc.apidoc.DocIndex._get()=epydoc.apidoc.DocIndex-class.html#_get"><a title="epydoc.apidoc.DocIndex._get" class="py-name" href="#" onclick="return doclink('link-631', '_get', 'link-631');">_get</a>< [...]
+<a name="L1789"></a><tt class="py-lineno">1789</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">var</tt> </tt>
+</div><a name="L1790"></a><tt class="py-lineno">1790</tt>  <tt class="py-line"> </tt>
+<a name="DocIndex.get_valdoc"></a><div id="DocIndex.get_valdoc-def"><a name="L1791"></a><tt class="py-lineno">1791</tt> <a class="py-toggle" href="#" id="DocIndex.get_valdoc-toggle" onclick="return toggle('DocIndex.get_valdoc');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.apidoc.DocIndex-class.html#get_valdoc">get_valdoc</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">name</tt><tt [...]
+</div><div id="DocIndex.get_valdoc-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DocIndex.get_valdoc-expanded"><a name="L1792"></a><tt class="py-lineno">1792</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L1793"></a><tt class="py-lineno">1793</tt>  <tt class="py-line"><tt class="py-docstring">        Return the C{ValueDoc} with the given name, or C{None} if this</tt> </tt>
+<a name="L1794"></a><tt class="py-lineno">1794</tt>  <tt class="py-line"><tt class="py-docstring">        index does not contain a C{ValueDoc} with the given name.</tt> </tt>
+<a name="L1795"></a><tt class="py-lineno">1795</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L1796"></a><tt class="py-lineno">1796</tt>  <tt class="py-line">        <tt class="py-name">var</tt><tt class="py-op">,</tt> <tt class="py-name">val</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-633" class="py-name"><a title="epydoc.apidoc.DocIndex._get" class="py-name" href="#" onclick="return doclink('link-633', '_get', 'link-631');">_get</a></tt><tt class="py-op">(</tt><tt id="link-634" class="py-name"><a title="epydoc.apidoc. [...]
+<a name="L1797"></a><tt class="py-lineno">1797</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">val</tt> </tt>
+</div><a name="L1798"></a><tt class="py-lineno">1798</tt>  <tt class="py-line"> </tt>
+<a name="DocIndex._get"></a><div id="DocIndex._get-def"><a name="L1799"></a><tt class="py-lineno">1799</tt> <a class="py-toggle" href="#" id="DocIndex._get-toggle" onclick="return toggle('DocIndex._get');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.apidoc.DocIndex-class.html#_get">_get</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">name</tt><tt class="py-op">)</tt><tt class="py-o [...]
+</div><div id="DocIndex._get-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DocIndex._get-expanded"><a name="L1800"></a><tt class="py-lineno">1800</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L1801"></a><tt class="py-lineno">1801</tt>  <tt class="py-line"><tt class="py-docstring">        A helper function that's used to implement L{get_vardoc()}</tt> </tt>
+<a name="L1802"></a><tt class="py-lineno">1802</tt>  <tt class="py-line"><tt class="py-docstring">        and L{get_valdoc()}.</tt> </tt>
+<a name="L1803"></a><tt class="py-lineno">1803</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L1804"></a><tt class="py-lineno">1804</tt>  <tt class="py-line">        <tt class="py-comment"># Convert name to a DottedName, if necessary.</tt> </tt>
+<a name="L1805"></a><tt class="py-lineno">1805</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-635" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-635', 'name', 'link-36');">name</a></tt><tt class="py-op">,</tt> <tt id="link-636" class="py-name"><a title="epydoc.apidoc.DottedN [...]
+<a name="L1806"></a><tt class="py-lineno">1806</tt>  <tt class="py-line">            <tt id="link-637" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-637', 'name', 'link-36');">name</a></tt> <tt class="py-op">=</tt> <tt id="link-638" class="py-name"><a title="epydoc.apidoc.DottedName" class="py-name" href="#" onclick="return doclink('link-638', 'DottedName', 'link-17');">DottedName</a></tt><tt class="py-op">(</tt><tt id="l [...]
+<a name="L1807"></a><tt class="py-lineno">1807</tt>  <tt class="py-line"> </tt>
+<a name="L1808"></a><tt class="py-lineno">1808</tt>  <tt class="py-line">        <tt class="py-comment"># Check if the result is cached.</tt> </tt>
+<a name="L1809"></a><tt class="py-lineno">1809</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">val</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_get_cache</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt id="link-640" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-640', 'name', 'link-36');">name</a [...]
+<a name="L1810"></a><tt class="py-lineno">1810</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">val</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-name">val</tt> </tt>
+<a name="L1811"></a><tt class="py-lineno">1811</tt>  <tt class="py-line"> </tt>
+<a name="L1812"></a><tt class="py-lineno">1812</tt>  <tt class="py-line">        <tt class="py-comment"># Look for an element in the root set whose name is a prefix</tt> </tt>
+<a name="L1813"></a><tt class="py-lineno">1813</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># of `name`.  If we can't find one, then return None.</tt> </tt>
+<a name="L1814"></a><tt class="py-lineno">1814</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">for</tt> <tt class="py-name">root_valdoc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">root</tt><tt class="py-op">:</tt> </tt>
+<a name="L1815"></a><tt class="py-lineno">1815</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">root_valdoc</tt><tt class="py-op">.</tt><tt id="link-641" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-641', 'canonical_name', 'link-83');">canonical_name</a></tt><tt class="py-op">.</tt><tt id="link-642" class="py-name" targets="Method epydoc.apidoc.DottedName.dominates()=epydoc.apidoc.DottedName-class.html#dominates"><a title="epydoc.apidoc.DottedName.dominates" class="py-name" href="#" onclick="return doclink('link-642', 'dominates', 'link-642');">dominates</a></tt><tt class="py-op">(</tt>< [...]
+<a name="L1816"></a><tt class="py-lineno">1816</tt>  <tt class="py-line">                <tt class="py-comment"># Starting at the root valdoc, walk down the variable/</tt> </tt>
+<a name="L1817"></a><tt class="py-lineno">1817</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-comment"># submodule chain until we find the requested item.</tt> </tt>
+<a name="L1818"></a><tt class="py-lineno">1818</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-name">var_doc</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L1819"></a><tt class="py-lineno">1819</tt>  <tt class="py-line">                <tt class="py-name">val_doc</tt> <tt class="py-op">=</tt> <tt class="py-name">root_valdoc</tt> </tt>
+<a name="L1820"></a><tt class="py-lineno">1820</tt>  <tt class="py-line">                <tt class="py-keyword">for</tt> <tt class="py-name">identifier</tt> <tt class="py-keyword">in</tt> <tt id="link-644" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-644', 'name', 'link-36');">name</a></tt><tt class="py-op">[</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">root_valdoc</tt><tt class="py-op">.</ [...]
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-645', 'canonical_name', 'link-83');">canonical_name</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L1821"></a><tt class="py-lineno">1821</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">val_doc</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> <tt class="py-keyword">break</tt> </tt>
+<a name="L1822"></a><tt class="py-lineno">1822</tt>  <tt class="py-line">                    <tt class="py-name">var_doc</tt><tt class="py-op">,</tt> <tt class="py-name">val_doc</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-646" class="py-name" targets="Method epydoc.apidoc.DocIndex._get_from()=epydoc.apidoc.DocIndex-class.html#_get_from"><a title="epydoc.apidoc.DocIndex._get_from" class="py-name" href="#" onclick="return doclink('link-64 [...]
+<a name="L1823"></a><tt class="py-lineno">1823</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1824"></a><tt class="py-lineno">1824</tt>  <tt class="py-line">                    <tt class="py-comment"># If we found it, then return.</tt> </tt>
+<a name="L1825"></a><tt class="py-lineno">1825</tt>  <tt class="py-line"><tt class="py-comment"></tt>                    <tt class="py-keyword">if</tt> <tt class="py-name">var_doc</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">or</tt> <tt class="py-name">val_doc</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1826"></a><tt class="py-lineno">1826</tt>  <tt class="py-line">                        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_get_cache</tt><tt class="py-op">[</tt><tt id="link-647" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-647', 'name', 'link-36');">name</a></tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">var_doc</tt><tt cl [...]
+<a name="L1827"></a><tt class="py-lineno">1827</tt>  <tt class="py-line">                        <tt class="py-keyword">return</tt> <tt class="py-name">var_doc</tt><tt class="py-op">,</tt> <tt class="py-name">val_doc</tt> </tt>
+<a name="L1828"></a><tt class="py-lineno">1828</tt>  <tt class="py-line"> </tt>
+<a name="L1829"></a><tt class="py-lineno">1829</tt>  <tt class="py-line">        <tt class="py-comment"># We didn't find it.</tt> </tt>
+<a name="L1830"></a><tt class="py-lineno">1830</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_get_cache</tt><tt class="py-op">[</tt><tt id="link-648" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-648', 'name', 'link-36');">name</a></tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">None</ [...]
+<a name="L1831"></a><tt class="py-lineno">1831</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt> </tt>
+</div><a name="L1832"></a><tt class="py-lineno">1832</tt>  <tt class="py-line"> </tt>
+<a name="DocIndex._get_from"></a><div id="DocIndex._get_from-def"><a name="L1833"></a><tt class="py-lineno">1833</tt> <a class="py-toggle" href="#" id="DocIndex._get_from-toggle" onclick="return toggle('DocIndex._get_from');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.apidoc.DocIndex-class.html#_get_from">_get_from</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">val_doc</tt><tt cl [...]
+</div><div id="DocIndex._get_from-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DocIndex._get_from-expanded"><a name="L1834"></a><tt class="py-lineno">1834</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">val_doc</tt><tt class="py-op">,</tt> <tt id="link-649" class="py-name"><a title="epydoc.apidoc.NamespaceDoc" class="py-name" href="#" onclick="return doclink('li [...]
+<a name="L1835"></a><tt class="py-lineno">1835</tt>  <tt class="py-line">            <tt class="py-name">child_var</tt> <tt class="py-op">=</tt> <tt class="py-name">val_doc</tt><tt class="py-op">.</tt><tt id="link-650" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-650', 'variables', 'link-229');">variables</a></tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-name">identif [...]
+<a name="L1836"></a><tt class="py-lineno">1836</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">child_var</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1837"></a><tt class="py-lineno">1837</tt>  <tt class="py-line">                <tt class="py-name">child_val</tt> <tt class="py-op">=</tt> <tt class="py-name">child_var</tt><tt class="py-op">.</tt><tt id="link-651" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-651', 'value', 'link-114');">value</a></tt> </tt>
+<a name="L1838"></a><tt class="py-lineno">1838</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">child_val</tt> <tt class="py-keyword">is</tt> <tt id="link-652" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-652', 'UNKNOWN', 'link-39');">UNKNOWN</a></tt><tt class="py-op">:</tt> <tt class="py-name">child_val</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L1839"></a><tt class="py-lineno">1839</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">child_var</tt><tt class="py-op">,</tt> <tt class="py-name">child_val</tt> </tt>
+<a name="L1840"></a><tt class="py-lineno">1840</tt>  <tt class="py-line"> </tt>
+<a name="L1841"></a><tt class="py-lineno">1841</tt>  <tt class="py-line">        <tt class="py-comment"># If that fails, then see if it's a submodule.</tt> </tt>
+<a name="L1842"></a><tt class="py-lineno">1842</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">val_doc</tt><tt class="py-op">,</tt> <tt id="link-653" class="py-name"><a title="epydoc.apidoc.ModuleDoc" class="py-name" href="#" onclick="return doclink('link-653', 'ModuleDoc', 'link-386');">ModuleDoc</a></tt><tt class="py-op">)</tt> <tt class="p [...]
+<a name="L1843"></a><tt class="py-lineno">1843</tt>  <tt class="py-line">            <tt class="py-name">val_doc</tt><tt class="py-op">.</tt><tt id="link-654" class="py-name"><a title="epydoc.apidoc.ModuleDoc.submodules" class="py-name" href="#" onclick="return doclink('link-654', 'submodules', 'link-317');">submodules</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt id="link-655" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick [...]
+<a name="L1844"></a><tt class="py-lineno">1844</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">submodule</tt> <tt class="py-keyword">in</tt> <tt class="py-name">val_doc</tt><tt class="py-op">.</tt><tt id="link-656" class="py-name"><a title="epydoc.apidoc.ModuleDoc.submodules" class="py-name" href="#" onclick="return doclink('link-656', 'submodules', 'link-317');">submodules</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1845"></a><tt class="py-lineno">1845</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">submodule</tt><tt class="py-op">.</tt><tt id="link-657" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-657', 'canonical_name', 'link-83');">canonical_name</a></tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-name">identifier</tt><tt class="py-op">:</tt> </tt>
+<a name="L1846"></a><tt class="py-lineno">1846</tt>  <tt class="py-line">                    <tt class="py-name">var_doc</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L1847"></a><tt class="py-lineno">1847</tt>  <tt class="py-line">                    <tt class="py-name">val_doc</tt> <tt class="py-op">=</tt> <tt class="py-name">submodule</tt> </tt>
+<a name="L1848"></a><tt class="py-lineno">1848</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">val_doc</tt> <tt class="py-keyword">is</tt> <tt id="link-658" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-658', 'UNKNOWN', 'link-39');">UNKNOWN</a></tt><tt class="py-op">:</tt> <tt class="py-name">val_doc</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L1849"></a><tt class="py-lineno">1849</tt>  <tt class="py-line">                    <tt class="py-keyword">return</tt> <tt class="py-name">var_doc</tt><tt class="py-op">,</tt> <tt class="py-name">val_doc</tt> </tt>
+<a name="L1850"></a><tt class="py-lineno">1850</tt>  <tt class="py-line"> </tt>
+<a name="L1851"></a><tt class="py-lineno">1851</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt> </tt>
+</div><a name="L1852"></a><tt class="py-lineno">1852</tt>  <tt class="py-line"> </tt>
+<a name="DocIndex.find"></a><div id="DocIndex.find-def"><a name="L1853"></a><tt class="py-lineno">1853</tt> <a class="py-toggle" href="#" id="DocIndex.find-toggle" onclick="return toggle('DocIndex.find');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.apidoc.DocIndex-class.html#find">find</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">name</tt><tt class="py-op">,</tt> <tt class="py- [...]
+</div><div id="DocIndex.find-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DocIndex.find-expanded"><a name="L1854"></a><tt class="py-lineno">1854</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L1855"></a><tt class="py-lineno">1855</tt>  <tt class="py-line"><tt class="py-docstring">        Look for an C{APIDoc} named C{name}, relative to C{context}.</tt> </tt>
+<a name="L1856"></a><tt class="py-lineno">1856</tt>  <tt class="py-line"><tt class="py-docstring">        Return the C{APIDoc} if one is found; otherwise, return</tt> </tt>
+<a name="L1857"></a><tt class="py-lineno">1857</tt>  <tt class="py-line"><tt class="py-docstring">        C{None}.  C{find} looks in the following places, in order:</tt> </tt>
+<a name="L1858"></a><tt class="py-lineno">1858</tt>  <tt class="py-line"><tt class="py-docstring">          - Function parameters (if one matches, return C{None})</tt> </tt>
+<a name="L1859"></a><tt class="py-lineno">1859</tt>  <tt class="py-line"><tt class="py-docstring">          - All enclosing namespaces, from closest to furthest.</tt> </tt>
+<a name="L1860"></a><tt class="py-lineno">1860</tt>  <tt class="py-line"><tt class="py-docstring">          - If C{name} starts with C{'self'}, then strip it off and</tt> </tt>
+<a name="L1861"></a><tt class="py-lineno">1861</tt>  <tt class="py-line"><tt class="py-docstring">            look for the remaining part of the name using C{find}</tt> </tt>
+<a name="L1862"></a><tt class="py-lineno">1862</tt>  <tt class="py-line"><tt class="py-docstring">          - Builtins</tt> </tt>
+<a name="L1863"></a><tt class="py-lineno">1863</tt>  <tt class="py-line"><tt class="py-docstring">          - Parameter attributes</tt> </tt>
+<a name="L1864"></a><tt class="py-lineno">1864</tt>  <tt class="py-line"><tt class="py-docstring">          - Classes at module level (if the name is not ambiguous)</tt> </tt>
+<a name="L1865"></a><tt class="py-lineno">1865</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt>
+<a name="L1866"></a><tt class="py-lineno">1866</tt>  <tt class="py-line"><tt class="py-docstring">        @type name: C{str} or L{DottedName}</tt> </tt>
+<a name="L1867"></a><tt class="py-lineno">1867</tt>  <tt class="py-line"><tt class="py-docstring">        @type context: L{APIDoc}</tt> </tt>
+<a name="L1868"></a><tt class="py-lineno">1868</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L1869"></a><tt class="py-lineno">1869</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-659" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-659', 'name', 'link-36');">name</a></tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1870"></a><tt class="py-lineno">1870</tt>  <tt class="py-line">            <tt id="link-660" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-660', 'name', 'link-36');">name</a></tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt class="py-string">r'\(.*\)$'</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op [...]
+<a name="L1871"></a><tt class="py-lineno">1871</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">match</tt><tt class="py-op">(</tt><tt class="py-string">'^([a-zA-Z_]\w*)(\.[a-zA-Z_]\w*)*$'</tt><tt class="py-op">,</tt> <tt id="link-662" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-662', 'name', 'link-36');">name</a></tt><tt class="py [...]
+<a name="L1872"></a><tt class="py-lineno">1872</tt>  <tt class="py-line">                <tt id="link-663" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-663', 'name', 'link-36');">name</a></tt> <tt class="py-op">=</tt> <tt id="link-664" class="py-name"><a title="epydoc.apidoc.DottedName" class="py-name" href="#" onclick="return doclink('link-664', 'DottedName', 'link-17');">DottedName</a></tt><tt class="py-op">(</tt><tt i [...]
+<a name="L1873"></a><tt class="py-lineno">1873</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1874"></a><tt class="py-lineno">1874</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
+<a name="L1875"></a><tt class="py-lineno">1875</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-666" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-666', 'name', 'link-36');">name</a></tt><tt class="py-op">,</tt> <tt id="link-667" class="py-name"><a title="epydoc.apidoc.DottedName" class="py-name" href= [...]
+<a name="L1876"></a><tt class="py-lineno">1876</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">TypeError</tt><tt class="py-op">(</tt><tt class="py-string">"'name' should be a string or DottedName"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1877"></a><tt class="py-lineno">1877</tt>  <tt class="py-line">         </tt>
+<a name="L1878"></a><tt class="py-lineno">1878</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">context</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt> <tt class="py-keyword">or</tt> <tt class="py-name">context</tt><tt class="py-op">.</tt><tt id="link-668" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-668', 'canonical_name', 'link-83');">canonical_name</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1879"></a><tt class="py-lineno">1879</tt>  <tt class="py-line">            <tt class="py-name">container_name</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L1880"></a><tt class="py-lineno">1880</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1881"></a><tt class="py-lineno">1881</tt>  <tt class="py-line">            <tt class="py-name">container_name</tt> <tt class="py-op">=</tt> <tt class="py-name">context</tt><tt class="py-op">.</tt><tt id="link-669" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-669', 'canonical_name', 'link-83');">canonical_name</a></tt> </tt>
+<a name="L1882"></a><tt class="py-lineno">1882</tt>  <tt class="py-line"> </tt>
+<a name="L1883"></a><tt class="py-lineno">1883</tt>  <tt class="py-line">        <tt class="py-comment"># Check for the name in all containing namespaces, starting</tt> </tt>
+<a name="L1884"></a><tt class="py-lineno">1884</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># with the closest one.</tt> </tt>
+<a name="L1885"></a><tt class="py-lineno">1885</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">container_name</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-op">-</t [...]
+<a name="L1886"></a><tt class="py-lineno">1886</tt>  <tt class="py-line">            <tt class="py-name">relative_name</tt> <tt class="py-op">=</tt> <tt class="py-name">container_name</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-name">i</tt><tt class="py-op">]</tt><tt class="py-op">+</tt><tt id="link-670" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-670', 'name', 'link-36');">name</a></tt> </tt>
+<a name="L1887"></a><tt class="py-lineno">1887</tt>  <tt class="py-line">            <tt class="py-comment"># Is `name` the absolute name of a documented value?</tt> </tt>
+<a name="L1888"></a><tt class="py-lineno">1888</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># (excepting GenericValueDoc values.)</tt> </tt>
+<a name="L1889"></a><tt class="py-lineno">1889</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">val_doc</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-671" class="py-name" targets="Method epydoc.apidoc.DocIndex.get_valdoc()=epydoc.apidoc.DocIndex-class.html#get_valdoc"><a title="epydoc.apidoc.DocIndex.get_valdoc" class="py-name" href="#" onclick="return doclink('link-671', 'get_valdoc', 'link-671');">ge [...]
+<a name="L1890"></a><tt class="py-lineno">1890</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">val_doc</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L1891"></a><tt class="py-lineno">1891</tt>  <tt class="py-line">                <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">val_doc</tt><tt class="py-op">,</tt> <tt id="link-672" class="py-name"><a title="epydoc.apidoc.GenericValueDoc" class="py-name" href="#" onclick="return doclink('link-672', 'GenericValueDoc', 'link-171');">GenericValueDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py- [...]
+<a name="L1892"></a><tt class="py-lineno">1892</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">val_doc</tt> </tt>
+<a name="L1893"></a><tt class="py-lineno">1893</tt>  <tt class="py-line">            <tt class="py-comment"># Is `name` the absolute name of a documented variable?</tt> </tt>
+<a name="L1894"></a><tt class="py-lineno">1894</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">var_doc</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-673" class="py-name" targets="Method epydoc.apidoc.DocIndex.get_vardoc()=epydoc.apidoc.DocIndex-class.html#get_vardoc"><a title="epydoc.apidoc.DocIndex.get_vardoc" class="py-name" href="#" onclick="return doclink('link-673', 'get_vardoc', 'link-673');">ge [...]
+<a name="L1895"></a><tt class="py-lineno">1895</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">var_doc</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-name">var_doc</tt> </tt>
+<a name="L1896"></a><tt class="py-lineno">1896</tt>  <tt class="py-line"> </tt>
+<a name="L1897"></a><tt class="py-lineno">1897</tt>  <tt class="py-line">        <tt class="py-comment"># If the name begins with 'self', then try stripping that off</tt> </tt>
+<a name="L1898"></a><tt class="py-lineno">1898</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># and see if we can find the variable.</tt> </tt>
+<a name="L1899"></a><tt class="py-lineno">1899</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt id="link-674" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-674', 'name', 'link-36');">name</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">'self'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1900"></a><tt class="py-lineno">1900</tt>  <tt class="py-line">            <tt class="py-name">doc</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-675" class="py-name" targets="Method epydoc.apidoc.DocIndex.find()=epydoc.apidoc.DocIndex-class.html#find"><a title="epydoc.apidoc.DocIndex.find" class="py-name" href="#" onclick="return doclink('link-675', 'find', 'link-675');">find</a></tt><tt class="py-op">(</tt><tt class="py-string" [...]
+<a name="L1901"></a><tt class="py-lineno">1901</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">doc</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-name">doc</tt> </tt>
+<a name="L1902"></a><tt class="py-lineno">1902</tt>  <tt class="py-line"> </tt>
+<a name="L1903"></a><tt class="py-lineno">1903</tt>  <tt class="py-line">        <tt class="py-comment"># Is it the name of a builtin?</tt> </tt>
+<a name="L1904"></a><tt class="py-lineno">1904</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-677" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-677', 'name', 'link-36');">name</a></tt><tt class="py-op">)</tt><tt class="py-op">==</tt><tt class="py-number">1</tt> <tt class="py-keyword">and</tt> <tt class="py-name" [...]
+<a name="L1905"></a><tt class="py-lineno">1905</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
+<a name="L1906"></a><tt class="py-lineno">1906</tt>  <tt class="py-line">         </tt>
+<a name="L1907"></a><tt class="py-lineno">1907</tt>  <tt class="py-line">        <tt class="py-comment"># Is it a parameter's name or an attribute of a parameter?</tt> </tt>
+<a name="L1908"></a><tt class="py-lineno">1908</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">context</tt><tt class="py-op">,</tt> <tt id="link-679" class="py-name"><a title="epydoc.apidoc.RoutineDoc" class="py-name" href="#" onclick="return doclink('link-679', 'RoutineDoc', 'link-169');">RoutineDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1909"></a><tt class="py-lineno">1909</tt>  <tt class="py-line">            <tt id="link-680" class="py-name"><a title="epydoc.apidoc.RoutineDoc.all_args" class="py-name" href="#" onclick="return doclink('link-680', 'all_args', 'link-578');">all_args</a></tt> <tt class="py-op">=</tt> <tt class="py-name">context</tt><tt class="py-op">.</tt><tt id="link-681" class="py-name"><a title="epydoc.apidoc.RoutineDoc.all_args" class="py-name" href="#" onclick="return doclink('link-681', 'a [...]
+<a name="L1910"></a><tt class="py-lineno">1910</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt id="link-682" class="py-name"><a title="epydoc.apidoc.RoutineDoc.all_args" class="py-name" href="#" onclick="return doclink('link-682', 'all_args', 'link-578');">all_args</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt id="link-683" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-683', ' [...]
+<a name="L1911"></a><tt class="py-lineno">1911</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
+<a name="L1912"></a><tt class="py-lineno">1912</tt>  <tt class="py-line"> </tt>
+<a name="L1913"></a><tt class="py-lineno">1913</tt>  <tt class="py-line">        <tt class="py-comment"># Is this an object directly contained by any module?</tt> </tt>
+<a name="L1914"></a><tt class="py-lineno">1914</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">doc</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mlclasses</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt id="link-686" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-686', 'name', 'link-36');">name</a> [...]
+<a name="L1915"></a><tt class="py-lineno">1915</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt id="link-687" class="py-name"><a title="epydoc.apidoc.APIDoc" class="py-name" href="#" onclick="return doclink('link-687', 'APIDoc', 'link-82');">APIDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1916"></a><tt class="py-lineno">1916</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">doc</tt> </tt>
+<a name="L1917"></a><tt class="py-lineno">1917</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt class="py-name">list</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1918"></a><tt class="py-lineno">1918</tt>  <tt class="py-line">            <tt id="link-688" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-688', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-689" class="py-name"><a title="epydoc.checker.DocChecker.warning
+epydoc.log.warning" class="py-name" href="#" onclick="return doclink('link-689', 'warning', 'link-25');">warning</a></tt><tt class="py-op">(</tt><tt class="py-string">"%s is an ambiguous name: it may be %s"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt> </tt>
+<a name="L1919"></a><tt class="py-lineno">1919</tt>  <tt class="py-line">                <tt id="link-690" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-690', 'name', 'link-36');">name</a></tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L1920"></a><tt class="py-lineno">1920</tt>  <tt class="py-line">                <tt class="py-string">", "</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-op">[</tt> <tt class="py-string">"'%s'"</tt> <tt class="py-op">%</tt> <tt class="py-name">d</tt><tt class="py-op">.</tt><tt id="link-691" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-691', 'canonical_name', 'link-83');">canonical_name</a></tt> <tt class="py-keyword">for</tt> <tt class="py-name">d</tt> <tt class="py-keyword">in</tt> <tt class="py-name">doc</tt> <tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1921"></a><tt class="py-lineno">1921</tt>  <tt class="py-line"> </tt>
+<a name="L1922"></a><tt class="py-lineno">1922</tt>  <tt class="py-line">            <tt class="py-comment"># Drop this item so that the warning is reported only once.</tt> </tt>
+<a name="L1923"></a><tt class="py-lineno">1923</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># fail() will fail anyway.</tt> </tt>
+<a name="L1924"></a><tt class="py-lineno">1924</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">del</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mlclasses</tt><tt class="py-op">[</tt><tt id="link-692" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-692', 'name', 'link-36');">name</a></tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-num [...]
+</div><a name="L1925"></a><tt class="py-lineno">1925</tt>  <tt class="py-line"> </tt>
+<a name="DocIndex._get_module_classes"></a><div id="DocIndex._get_module_classes-def"><a name="L1926"></a><tt class="py-lineno">1926</tt> <a class="py-toggle" href="#" id="DocIndex._get_module_classes-toggle" onclick="return toggle('DocIndex._get_module_classes');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.apidoc.DocIndex-class.html#_get_module_classes">_get_module_classes</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt  [...]
+</div><div id="DocIndex._get_module_classes-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DocIndex._get_module_classes-expanded"><a name="L1927"></a><tt class="py-lineno">1927</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L1928"></a><tt class="py-lineno">1928</tt>  <tt class="py-line"><tt class="py-docstring">        Gather all the classes defined in a list of modules.</tt> </tt>
+<a name="L1929"></a><tt class="py-lineno">1929</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1930"></a><tt class="py-lineno">1930</tt>  <tt class="py-line"><tt class="py-docstring">        Very often people refers to classes only by class name,</tt> </tt>
+<a name="L1931"></a><tt class="py-lineno">1931</tt>  <tt class="py-line"><tt class="py-docstring">        even if they are not imported in the namespace. Linking</tt> </tt>
+<a name="L1932"></a><tt class="py-lineno">1932</tt>  <tt class="py-line"><tt class="py-docstring">        to such classes will fail if we look for them only in nested</tt> </tt>
+<a name="L1933"></a><tt class="py-lineno">1933</tt>  <tt class="py-line"><tt class="py-docstring">        namespaces. Allow them to retrieve only by name.</tt> </tt>
+<a name="L1934"></a><tt class="py-lineno">1934</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1935"></a><tt class="py-lineno">1935</tt>  <tt class="py-line"><tt class="py-docstring">        @param docs: containers of the objects to collect</tt> </tt>
+<a name="L1936"></a><tt class="py-lineno">1936</tt>  <tt class="py-line"><tt class="py-docstring">        @type docs: C{list} of C{APIDoc}</tt> </tt>
+<a name="L1937"></a><tt class="py-lineno">1937</tt>  <tt class="py-line"><tt class="py-docstring">        @return: mapping from objects name to the object(s) with that name</tt> </tt>
+<a name="L1938"></a><tt class="py-lineno">1938</tt>  <tt class="py-line"><tt class="py-docstring">        @rtype: C{dict} from C{str} to L{ClassDoc} or C{list}</tt> </tt>
+<a name="L1939"></a><tt class="py-lineno">1939</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L1940"></a><tt class="py-lineno">1940</tt>  <tt class="py-line">        <tt class="py-name">classes</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L1941"></a><tt class="py-lineno">1941</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">docs</tt><tt class="py-op">:</tt> </tt>
+<a name="L1942"></a><tt class="py-lineno">1942</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt id="link-693" class="py-name"><a title="epydoc.apidoc.ModuleDoc" class="py-name" href="#" onclick="return doclink('link-693', 'ModuleDoc', 'link-386');">ModuleDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1943"></a><tt class="py-lineno">1943</tt>  <tt class="py-line">                <tt class="py-keyword">continue</tt> </tt>
+<a name="L1944"></a><tt class="py-lineno">1944</tt>  <tt class="py-line"> </tt>
+<a name="L1945"></a><tt class="py-lineno">1945</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">var</tt> <tt class="py-keyword">in</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-694" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-694', 'variables', 'link-229');">variables</a></tt><tt class="py-op">.</tt><tt class="py-name">values</tt><tt class="py-op">(< [...]
+<a name="L1946"></a><tt class="py-lineno">1946</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">var</tt><tt class="py-op">.</tt><tt id="link-695" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-695', 'value', 'link-114');">value</a></tt><tt class="py-op">,</tt> <tt id="link-696" class="py-n [...]
+<a name="L1947"></a><tt class="py-lineno">1947</tt>  <tt class="py-line">                    <tt class="py-keyword">continue</tt> </tt>
+<a name="L1948"></a><tt class="py-lineno">1948</tt>  <tt class="py-line"> </tt>
+<a name="L1949"></a><tt class="py-lineno">1949</tt>  <tt class="py-line">                <tt class="py-name">val</tt> <tt class="py-op">=</tt> <tt class="py-name">var</tt><tt class="py-op">.</tt><tt id="link-697" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-697', 'value', 'link-114');">value</a></tt> </tt>
+<a name="L1950"></a><tt class="py-lineno">1950</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">val</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-698" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-698', 'UNKNOWN', 'link-39');">UNKNOWN</a></tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class= [...]
+epydoc.apidoc.VariableDoc.defining_module" class="py-name" href="#" onclick="return doclink('link-699', 'defining_module', 'link-149');">defining_module</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">doc</tt><tt class="py-op">:</tt> </tt>
+<a name="L1951"></a><tt class="py-lineno">1951</tt>  <tt class="py-line">                    <tt class="py-keyword">continue</tt> </tt>
+<a name="L1952"></a><tt class="py-lineno">1952</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">val</tt><tt class="py-op">.</tt><tt id="link-700" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-700', 'canonical_name', 'link-83');">canonical_name</a></tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-701" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-701', 'UNKNOWN', 'link-39');">UNKNOWN</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1953"></a><tt class="py-lineno">1953</tt>  <tt class="py-line">                    <tt class="py-keyword">continue</tt> </tt>
+<a name="L1954"></a><tt class="py-lineno">1954</tt>  <tt class="py-line"> </tt>
+<a name="L1955"></a><tt class="py-lineno">1955</tt>  <tt class="py-line">                <tt id="link-702" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-702', 'name', 'link-36');">name</a></tt> <tt class="py-op">=</tt> <tt class="py-name">val</tt><tt class="py-op">.</tt><tt id="link-703" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-703', 'canonical_name', 'link-83');">canonical_name</a></tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L1956"></a><tt class="py-lineno">1956</tt>  <tt class="py-line">                <tt class="py-name">vals</tt> <tt class="py-op">=</tt> <tt class="py-name">classes</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt id="link-704" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-704', 'name', 'link-36');">name</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1957"></a><tt class="py-lineno">1957</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">vals</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1958"></a><tt class="py-lineno">1958</tt>  <tt class="py-line">                    <tt class="py-name">classes</tt><tt class="py-op">[</tt><tt id="link-705" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-705', 'name', 'link-36');">name</a></tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">val</tt> </tt>
+<a name="L1959"></a><tt class="py-lineno">1959</tt>  <tt class="py-line">                <tt class="py-keyword">elif</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">vals</tt><tt class="py-op">,</tt> <tt class="py-name">list</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1960"></a><tt class="py-lineno">1960</tt>  <tt class="py-line">                    <tt class="py-name">classes</tt><tt class="py-op">[</tt><tt id="link-706" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-706', 'name', 'link-36');">name</a></tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> <tt class="py-name">vals</tt><tt class="py-op">,</tt> <tt class="py-name">val</tt> <tt class="py- [...]
+<a name="L1961"></a><tt class="py-lineno">1961</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1962"></a><tt class="py-lineno">1962</tt>  <tt class="py-line">                    <tt class="py-name">vals</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">)</tt> </tt>
+<a name="L1963"></a><tt class="py-lineno">1963</tt>  <tt class="py-line"> </tt>
+<a name="L1964"></a><tt class="py-lineno">1964</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">classes</tt> </tt>
+</div><a name="L1965"></a><tt class="py-lineno">1965</tt>  <tt class="py-line"> </tt>
+<a name="L1966"></a><tt class="py-lineno">1966</tt>  <tt class="py-line">    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L1967"></a><tt class="py-lineno">1967</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># etc</tt> </tt>
+<a name="L1968"></a><tt class="py-lineno">1968</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L1969"></a><tt class="py-lineno">1969</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="DocIndex.reachable_valdocs"></a><div id="DocIndex.reachable_valdocs-def"><a name="L1970"></a><tt class="py-lineno">1970</tt> <a class="py-toggle" href="#" id="DocIndex.reachable_valdocs-toggle" onclick="return toggle('DocIndex.reachable_valdocs');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.apidoc.DocIndex-class.html#reachable_valdocs">reachable_valdocs</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op [...]
+</div><div id="DocIndex.reachable_valdocs-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DocIndex.reachable_valdocs-expanded"><a name="L1971"></a><tt class="py-lineno">1971</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L1972"></a><tt class="py-lineno">1972</tt>  <tt class="py-line"><tt class="py-docstring">        Return a list of all C{ValueDoc}s that can be reached,</tt> </tt>
+<a name="L1973"></a><tt class="py-lineno">1973</tt>  <tt class="py-line"><tt class="py-docstring">        directly or indirectly from this C{DocIndex}'s root set.</tt> </tt>
+<a name="L1974"></a><tt class="py-lineno">1974</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt>
+<a name="L1975"></a><tt class="py-lineno">1975</tt>  <tt class="py-line"><tt class="py-docstring">        @param filters: A set of filters that can be used to prevent</tt> </tt>
+<a name="L1976"></a><tt class="py-lineno">1976</tt>  <tt class="py-line"><tt class="py-docstring">            C{reachable_valdocs} from following specific link types</tt> </tt>
+<a name="L1977"></a><tt class="py-lineno">1977</tt>  <tt class="py-line"><tt class="py-docstring">            when looking for C{ValueDoc}s that can be reached from the</tt> </tt>
+<a name="L1978"></a><tt class="py-lineno">1978</tt>  <tt class="py-line"><tt class="py-docstring">            root set.  See C{APIDoc.apidoc_links} for a more complete</tt> </tt>
+<a name="L1979"></a><tt class="py-lineno">1979</tt>  <tt class="py-line"><tt class="py-docstring">            description.</tt> </tt>
+<a name="L1980"></a><tt class="py-lineno">1980</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L1981"></a><tt class="py-lineno">1981</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-707" class="py-name" targets="Method epydoc.apidoc.DocIndex.reachable_valdocs()=epydoc.apidoc.DocIndex-class.html#reachable_valdocs,Function epydoc.apidoc.reachable_valdocs()=epydoc.apidoc-module.html#reachable_valdocs"><a title="epydoc.apidoc.DocIndex.reachable_valdocs
+epydoc.apidoc.reachable_valdocs" class="py-name" href="#" onclick="return doclink('link-707', 'reachable_valdocs', 'link-707');">reachable_valdocs</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">root</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-name">filters</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1982"></a><tt class="py-lineno">1982</tt>  <tt class="py-line"> </tt>
+<a name="DocIndex.container"></a><div id="DocIndex.container-def"><a name="L1983"></a><tt class="py-lineno">1983</tt> <a class="py-toggle" href="#" id="DocIndex.container-toggle" onclick="return toggle('DocIndex.container');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.apidoc.DocIndex-class.html#container">container</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">api_doc</tt><tt cl [...]
+</div><div id="DocIndex.container-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DocIndex.container-expanded"><a name="L1984"></a><tt class="py-lineno">1984</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L1985"></a><tt class="py-lineno">1985</tt>  <tt class="py-line"><tt class="py-docstring">        Return the C{ValueDoc} that contains the given C{APIDoc}, or</tt> </tt>
+<a name="L1986"></a><tt class="py-lineno">1986</tt>  <tt class="py-line"><tt class="py-docstring">        C{None} if its container is not in the index.</tt> </tt>
+<a name="L1987"></a><tt class="py-lineno">1987</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L1988"></a><tt class="py-lineno">1988</tt>  <tt class="py-line">        <tt class="py-comment"># Check if the result is cached.</tt> </tt>
+<a name="L1989"></a><tt class="py-lineno">1989</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">val</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_container_cache</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">)</tt> </tt>
+<a name="L1990"></a><tt class="py-lineno">1990</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">val</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-name">val</tt> </tt>
+<a name="L1991"></a><tt class="py-lineno">1991</tt>  <tt class="py-line">         </tt>
+<a name="L1992"></a><tt class="py-lineno">1992</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt id="link-708" class="py-name"><a title="epydoc.apidoc.GenericValueDoc" class="py-name" href="#" onclick="return doclink('link-708', 'GenericValueDoc', 'link-171');">GenericValueDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1993"></a><tt class="py-lineno">1993</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_container_cache</tt><tt class="py-op">[</tt><tt class="py-name">api_doc</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L1994"></a><tt class="py-lineno">1994</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> <tt class="py-comment"># [xx] unknown.</tt> </tt>
+<a name="L1995"></a><tt class="py-lineno">1995</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt id="link-709" class="py-name"><a title="epydoc.apidoc.VariableDoc" class="py-name" href="#" onclick="return doclink('link-709', 'VariableDoc', 'link-162');">VariableDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1996"></a><tt class="py-lineno">1996</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_container_cache</tt><tt class="py-op">[</tt><tt class="py-name">api_doc</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-710" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-710', 'container', 'link-110');">container</a></tt> </tt>
+<a name="L1997"></a><tt class="py-lineno">1997</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-711" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-711', 'container', 'link-110');">container</a></tt> </tt>
+<a name="L1998"></a><tt class="py-lineno">1998</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-712" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-712', 'canonical_name', 'link-83');">canonical_name</a></tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L1999"></a><tt class="py-lineno">1999</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_container_cache</tt><tt class="py-op">[</tt><tt class="py-name">api_doc</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L2000"></a><tt class="py-lineno">2000</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
+<a name="L2001"></a><tt class="py-lineno">2001</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt id="link-713" class="py-name"><a title="epydoc.apidoc.ModuleDoc" class="py-name" href="#" onclick="return doclink('link-713', 'ModuleDoc', 'link-386');">ModuleDoc</a></tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-name">api_doc</t [...]
+<a name="L2002"></a><tt class="py-lineno">2002</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_container_cache</tt><tt class="py-op">[</tt><tt class="py-name">api_doc</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-716" class="py-name"><a title="epydoc.apidoc.ModuleDoc.package" class="py-name" href="#" onclick="return doclink('link-716', 'package', 'l [...]
+<a name="L2003"></a><tt class="py-lineno">2003</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-717" class="py-name"><a title="epydoc.apidoc.ModuleDoc.package" class="py-name" href="#" onclick="return doclink('link-717', 'package', 'link-321');">package</a></tt> </tt>
+<a name="L2004"></a><tt class="py-lineno">2004</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L2005"></a><tt class="py-lineno">2005</tt>  <tt class="py-line">            <tt class="py-name">parent</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-718" class="py-name"><a title="epydoc.apidoc.DocIndex.get_valdoc" class="py-name" href="#" onclick="return doclink('link-718', 'get_valdoc', 'link-671');">get_valdoc</a></tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-719" class="py-na [...]
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-719', 'canonical_name', 'link-83');">canonical_name</a></tt><tt class="py-op">.</tt><tt id="link-720" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-720', 'container', 'link-110');">container</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2006"></a><tt class="py-lineno">2006</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_container_cache</tt><tt class="py-op">[</tt><tt class="py-name">api_doc</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">parent</tt> </tt>
+<a name="L2007"></a><tt class="py-lineno">2007</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">parent</tt> </tt>
+</div><a name="L2008"></a><tt class="py-lineno">2008</tt>  <tt class="py-line"> </tt>
+<a name="L2009"></a><tt class="py-lineno">2009</tt>  <tt class="py-line">    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L2010"></a><tt class="py-lineno">2010</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># Profiling information</tt> </tt>
+<a name="L2011"></a><tt class="py-lineno">2011</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L2012"></a><tt class="py-lineno">2012</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="DocIndex.read_profiling_info"></a><div id="DocIndex.read_profiling_info-def"><a name="L2013"></a><tt class="py-lineno">2013</tt> <a class="py-toggle" href="#" id="DocIndex.read_profiling_info-toggle" onclick="return toggle('DocIndex.read_profiling_info');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.apidoc.DocIndex-class.html#read_profiling_info">read_profiling_info</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt  [...]
+</div><div id="DocIndex.read_profiling_info-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DocIndex.read_profiling_info-expanded"><a name="L2014"></a><tt class="py-lineno">2014</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L2015"></a><tt class="py-lineno">2015</tt>  <tt class="py-line"><tt class="py-docstring">        Initialize the L{callers} and L{callees} variables, given a</tt> </tt>
+<a name="L2016"></a><tt class="py-lineno">2016</tt>  <tt class="py-line"><tt class="py-docstring">        C{Stat} object from the C{pstats} module.</tt> </tt>
+<a name="L2017"></a><tt class="py-lineno">2017</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt>
+<a name="L2018"></a><tt class="py-lineno">2018</tt>  <tt class="py-line"><tt class="py-docstring">        @warning: This method uses undocumented data structures inside</tt> </tt>
+<a name="L2019"></a><tt class="py-lineno">2019</tt>  <tt class="py-line"><tt class="py-docstring">            of C{profile_stats}.</tt> </tt>
+<a name="L2020"></a><tt class="py-lineno">2020</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L2021"></a><tt class="py-lineno">2021</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">callers</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">callers</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L2022"></a><tt class="py-lineno">2022</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">callees</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">callees</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L2023"></a><tt class="py-lineno">2023</tt>  <tt class="py-line">         </tt>
+<a name="L2024"></a><tt class="py-lineno">2024</tt>  <tt class="py-line">        <tt class="py-comment"># The Stat object encodes functions using `funcid`s, or</tt> </tt>
+<a name="L2025"></a><tt class="py-lineno">2025</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># tuples of (filename, lineno, funcname).  Create a mapping</tt> </tt>
+<a name="L2026"></a><tt class="py-lineno">2026</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># from these `funcid`s to `RoutineDoc`s.</tt> </tt>
+<a name="L2027"></a><tt class="py-lineno">2027</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-721" class="py-name" targets="Method epydoc.apidoc.DocIndex._update_funcid_to_doc()=epydoc.apidoc.DocIndex-class.html#_update_funcid_to_doc"><a title="epydoc.apidoc.DocIndex._update_funcid_to_doc" class="py-name" href="#" onclick="return doclink('link-721', '_update_funcid_to_doc', 'link-721');">_update_funcid_to_do [...]
+<a name="L2028"></a><tt class="py-lineno">2028</tt>  <tt class="py-line">         </tt>
+<a name="L2029"></a><tt class="py-lineno">2029</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">callee</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">cc</tt><tt class="py-op">,</tt> <tt class="py-name">nc</tt><tt class="py-op">,</tt> <tt class="py-name">tt</tt><tt class="py-op">,</tt> <tt class="py-name">ct</tt><tt class="py-op">,</tt> <tt class="py-name">callers</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt [...]
+<a name="L2030"></a><tt class="py-lineno">2030</tt>  <tt class="py-line">            <tt class="py-name">callee</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_funcid_to_doc</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-name">callee</tt><tt class="py-op">)</tt> </tt>
+<a name="L2031"></a><tt class="py-lineno">2031</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">callee</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> <tt class="py-keyword">continue</tt> </tt>
+<a name="L2032"></a><tt class="py-lineno">2032</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">caller</tt> <tt class="py-keyword">in</tt> <tt class="py-name">callers</tt><tt class="py-op">:</tt> </tt>
+<a name="L2033"></a><tt class="py-lineno">2033</tt>  <tt class="py-line">                <tt class="py-name">caller</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_funcid_to_doc</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-name">caller</tt><tt class="py-op">)</tt> </tt>
+<a name="L2034"></a><tt class="py-lineno">2034</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">caller</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> <tt class="py-keyword">continue</tt> </tt>
+<a name="L2035"></a><tt class="py-lineno">2035</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">callers</tt><tt class="py-op">.</tt><tt class="py-name">setdefault</tt><tt class="py-op">(</tt><tt class="py-name">callee</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">caller</ [...]
+<a name="L2036"></a><tt class="py-lineno">2036</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">callees</tt><tt class="py-op">.</tt><tt class="py-name">setdefault</tt><tt class="py-op">(</tt><tt class="py-name">caller</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">callee</ [...]
+</div><a name="L2037"></a><tt class="py-lineno">2037</tt>  <tt class="py-line"> </tt>
+<a name="DocIndex._update_funcid_to_doc"></a><div id="DocIndex._update_funcid_to_doc-def"><a name="L2038"></a><tt class="py-lineno">2038</tt> <a class="py-toggle" href="#" id="DocIndex._update_funcid_to_doc-toggle" onclick="return toggle('DocIndex._update_funcid_to_doc');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.apidoc.DocIndex-class.html#_update_funcid_to_doc">_update_funcid_to_doc</a><tt class="py-op">(</tt><tt class="py-param">s [...]
+</div><div id="DocIndex._update_funcid_to_doc-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DocIndex._update_funcid_to_doc-expanded"><a name="L2039"></a><tt class="py-lineno">2039</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L2040"></a><tt class="py-lineno">2040</tt>  <tt class="py-line"><tt class="py-docstring">        Update the dictionary mapping from C{pstat.Stat} funciton ids to</tt> </tt>
+<a name="L2041"></a><tt class="py-lineno">2041</tt>  <tt class="py-line"><tt class="py-docstring">        C{RoutineDoc}s.  C{pstat.Stat} function ids are tuples of</tt> </tt>
+<a name="L2042"></a><tt class="py-lineno">2042</tt>  <tt class="py-line"><tt class="py-docstring">        C{(filename, lineno, funcname)}.</tt> </tt>
+<a name="L2043"></a><tt class="py-lineno">2043</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L2044"></a><tt class="py-lineno">2044</tt>  <tt class="py-line">        <tt class="py-comment"># Maps (filename, lineno, funcname) -> RoutineDoc</tt> </tt>
+<a name="L2045"></a><tt class="py-lineno">2045</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">for</tt> <tt class="py-name">val_doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-722" class="py-name"><a title="epydoc.apidoc.DocIndex.reachable_valdocs
+epydoc.apidoc.reachable_valdocs" class="py-name" href="#" onclick="return doclink('link-722', 'reachable_valdocs', 'link-707');">reachable_valdocs</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L2046"></a><tt class="py-lineno">2046</tt>  <tt class="py-line">            <tt class="py-comment"># We only care about routines.</tt> </tt>
+<a name="L2047"></a><tt class="py-lineno">2047</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">val_doc</tt><tt class="py-op">,</tt> <tt id="link-723" class="py-name"><a title="epydoc.apidoc.RoutineDoc" class="py-name" href="#" onclick="return doclink('link-723', 'RoutineDoc', 'link-169');">RoutineDoc</a></tt><tt class="py-op">)</t [...]
+<a name="L2048"></a><tt class="py-lineno">2048</tt>  <tt class="py-line">            <tt class="py-comment"># Get the filename from the defining module.</tt> </tt>
+<a name="L2049"></a><tt class="py-lineno">2049</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">module</tt> <tt class="py-op">=</tt> <tt class="py-name">val_doc</tt><tt class="py-op">.</tt><tt id="link-724" class="py-name"><a title="epydoc.apidoc.ValueDoc.defining_module
+epydoc.apidoc.VariableDoc.defining_module" class="py-name" href="#" onclick="return doclink('link-724', 'defining_module', 'link-149');">defining_module</a></tt> </tt>
+<a name="L2050"></a><tt class="py-lineno">2050</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">module</tt> <tt class="py-keyword">is</tt> <tt id="link-725" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-725', 'UNKNOWN', 'link-39');">UNKNOWN</a></tt> <tt class="py-keyword">or</tt> <tt class="py-name">module</tt><tt class="py-op">.</tt><tt id="link-726" class="py-name"><a title="epydoc.apidoc. [...]
+<a name="L2051"></a><tt class="py-lineno">2051</tt>  <tt class="py-line">            <tt class="py-comment"># Normalize the filename.</tt> </tt>
+<a name="L2052"></a><tt class="py-lineno">2052</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt id="link-728" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-728', 'filename', 'link-313');">filename</a></tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-729" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return docli [...]
+<a name="L2053"></a><tt class="py-lineno">2053</tt>  <tt class="py-line">            <tt class="py-keyword">try</tt><tt class="py-op">:</tt> <tt id="link-731" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-731', 'filename', 'link-313');">filename</a></tt> <tt class="py-op">=</tt> <tt id="link-732" class="py-name"><a title="epydoc.util.py_src_filename" class="py-name" href="#" onclick="return doclink('link-732', 'py_src_f [...]
+<a name="L2054"></a><tt class="py-lineno">2054</tt>  <tt class="py-line">            <tt class="py-keyword">except</tt><tt class="py-op">:</tt> <tt class="py-keyword">pass</tt> </tt>
+<a name="L2055"></a><tt class="py-lineno">2055</tt>  <tt class="py-line">            <tt class="py-comment"># Look up the stat_func_id</tt> </tt>
+<a name="L2056"></a><tt class="py-lineno">2056</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">funcid</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt id="link-734" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-734', 'filename', 'link-313');">filename</a></tt><tt class="py-op">,</tt> <tt class="py-name">val_doc</tt><tt class="py-op">.</tt><tt id="link-735" class="py-name">< [...]
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-736', 'canonical_name', 'link-83');">canonical_name</a></tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L2057"></a><tt class="py-lineno">2057</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">funcid</tt> <tt class="py-keyword">in</tt> <tt class="py-name">profile_stats</tt><tt class="py-op">.</tt><tt class="py-name">stats</tt><tt class="py-op">:</tt> </tt>
+<a name="L2058"></a><tt class="py-lineno">2058</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_funcid_to_doc</tt><tt class="py-op">[</tt><tt class="py-name">funcid</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">val_doc</tt> </tt>
+</div></div><a name="L2059"></a><tt class="py-lineno">2059</tt>  <tt class="py-line"> </tt>
+<a name="L2060"></a><tt class="py-lineno">2060</tt>  <tt class="py-line"><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L2061"></a><tt class="py-lineno">2061</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## Pretty Printing</tt> </tt>
+<a name="L2062"></a><tt class="py-lineno">2062</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L2063"></a><tt class="py-lineno">2063</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="pp_apidoc"></a><div id="pp_apidoc-def"><a name="L2064"></a><tt class="py-lineno">2064</tt> <a class="py-toggle" href="#" id="pp_apidoc-toggle" onclick="return toggle('pp_apidoc');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.apidoc-module.html#pp_apidoc">pp_apidoc</a><tt class="py-op">(</tt><tt class="py-param">api_doc</tt><tt class="py-op">,</tt> <tt class="py-param">doublespace</tt><tt class="py-op">=</tt><tt class="py-number">0 [...]
+<a name="L2065"></a><tt class="py-lineno">2065</tt>  <tt class="py-line">              <tt class="py-param">backpointers</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="pp_apidoc-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="pp_apidoc-expanded"><a name="L2066"></a><tt class="py-lineno">2066</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L2067"></a><tt class="py-lineno">2067</tt>  <tt class="py-line"><tt class="py-docstring">    @return: A multiline pretty-printed string representation for the</tt> </tt>
+<a name="L2068"></a><tt class="py-lineno">2068</tt>  <tt class="py-line"><tt class="py-docstring">        given C{APIDoc}.</tt> </tt>
+<a name="L2069"></a><tt class="py-lineno">2069</tt>  <tt class="py-line"><tt class="py-docstring">    @param doublespace: If true, then extra lines will be</tt> </tt>
+<a name="L2070"></a><tt class="py-lineno">2070</tt>  <tt class="py-line"><tt class="py-docstring">        inserted to make the output more readable.</tt> </tt>
+<a name="L2071"></a><tt class="py-lineno">2071</tt>  <tt class="py-line"><tt class="py-docstring">    @param depth: The maximum depth that pp_apidoc will descend</tt> </tt>
+<a name="L2072"></a><tt class="py-lineno">2072</tt>  <tt class="py-line"><tt class="py-docstring">        into descendent VarDocs.  To put no limit on</tt> </tt>
+<a name="L2073"></a><tt class="py-lineno">2073</tt>  <tt class="py-line"><tt class="py-docstring">        depth, use C{depth=-1}.</tt> </tt>
+<a name="L2074"></a><tt class="py-lineno">2074</tt>  <tt class="py-line"><tt class="py-docstring">    @param exclude: A list of names of attributes whose values should</tt> </tt>
+<a name="L2075"></a><tt class="py-lineno">2075</tt>  <tt class="py-line"><tt class="py-docstring">        not be shown.</tt> </tt>
+<a name="L2076"></a><tt class="py-lineno">2076</tt>  <tt class="py-line"><tt class="py-docstring">    @param backpointers: For internal use.</tt> </tt>
+<a name="L2077"></a><tt class="py-lineno">2077</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L2078"></a><tt class="py-lineno">2078</tt>  <tt class="py-line">    <tt class="py-name">pyid</tt> <tt class="py-op">=</tt> <tt class="py-name">id</tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">)</tt> </tt>
+<a name="L2079"></a><tt class="py-lineno">2079</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">backpointers</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> <tt class="py-name">backpointers</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L2080"></a><tt class="py-lineno">2080</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt class="py-string">'canonical_name'</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L2081"></a><tt class="py-lineno">2081</tt>  <tt class="py-line">        <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-737" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-737', 'canonical_name', 'link-83');">canonical_name</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-738" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-738', 'UNKNOWN', 'link-39');">UNKNOWN</a></tt><tt class="py-op">)</tt>< [...]
+<a name="L2082"></a><tt class="py-lineno">2082</tt>  <tt class="py-line">        <tt id="link-739" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-739', 'name', 'link-36');">name</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'%s for %s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">.</tt><tt class="p [...]
+<a name="L2083"></a><tt class="py-lineno">2083</tt>  <tt class="py-line">                              <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-740" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-740', 'canonical_name', 'link-83');">canonical_name</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2084"></a><tt class="py-lineno">2084</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt class="py-string">'name'</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt id="link-741" class="py-name"><a title="epydoc.apidoc.UNKNOWN" cla [...]
+<a name="L2085"></a><tt class="py-lineno">2085</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt class="py-string">'container'</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt id="link-742" class="py-name"><a ti [...]
+<a name="L2086"></a><tt class="py-lineno">2086</tt>  <tt class="py-line">            <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-743" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-743', 'container', 'link-110');">container</a></tt><tt class="py-op">,</tt> <tt class="py-string">'canonical_name'</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+<a name="L2087"></a><tt class="py-lineno">2087</tt>  <tt class="py-line">            <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt id="link-744" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-744', 'UNKNOWN', 'link-39');">UNKNOWN</a></tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L2088"></a><tt class="py-lineno">2088</tt>  <tt class="py-line">            <tt id="link-745" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-745', 'name', 'link-36');">name</a></tt> <tt class="py-op">=</tt><tt class="py-string">'%s for %s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">.</tt><tt class [...]
+<a name="L2089"></a><tt class="py-lineno">2089</tt>  <tt class="py-line">                                 <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-746" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-746', 'container', 'link-110');">container</a></tt><tt class="py-op">.</tt><tt id="link-747" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-747', 'canonical_name', 'link-83');">canonical_name</a></tt><tt class="py-op">+</tt> </tt>
+<a name="L2090"></a><tt class="py-lineno">2090</tt>  <tt class="py-line">                                 <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-748" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-748', 'name', 'link-36');">name</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2091"></a><tt class="py-lineno">2091</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L2092"></a><tt class="py-lineno">2092</tt>  <tt class="py-line">            <tt id="link-749" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-749', 'name', 'link-36');">name</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'%s for %s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">.</tt><tt clas [...]
+<a name="L2093"></a><tt class="py-lineno">2093</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L2094"></a><tt class="py-lineno">2094</tt>  <tt class="py-line">        <tt id="link-751" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-751', 'name', 'link-36');">name</a></tt> <tt class="py-op">=</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt> </tt>
+<a name="L2095"></a><tt class="py-lineno">2095</tt>  <tt class="py-line">         </tt>
+<a name="L2096"></a><tt class="py-lineno">2096</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">pyid</tt> <tt class="py-keyword">in</tt> <tt class="py-name">backpointers</tt><tt class="py-op">:</tt> </tt>
+<a name="L2097"></a><tt class="py-lineno">2097</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">'%s [%s] (defined above)'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt id="link-752" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-752', 'name', 'link-36');">name</a></tt><tt class="py-op">,</tt> <tt class="py-name">backpointers</tt><tt class="py-op">[</tt><tt class="py-nam [...]
+<a name="L2098"></a><tt class="py-lineno">2098</tt>  <tt class="py-line">     </tt>
+<a name="L2099"></a><tt class="py-lineno">2099</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">depth</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L2100"></a><tt class="py-lineno">2100</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt class="py-string">'name'</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-753" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return docl [...]
+<a name="L2101"></a><tt class="py-lineno">2101</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">'%s...'</tt> <tt class="py-op">%</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-754" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-754', 'name', 'link-36');">name</a></tt> </tt>
+<a name="L2102"></a><tt class="py-lineno">2102</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L2103"></a><tt class="py-lineno">2103</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">'...'</tt> </tt>
+<a name="L2104"></a><tt class="py-lineno">2104</tt>  <tt class="py-line"> </tt>
+<a name="L2105"></a><tt class="py-lineno">2105</tt>  <tt class="py-line">    <tt class="py-name">backpointers</tt><tt class="py-op">[</tt><tt class="py-name">pyid</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">backpointers</tt><tt class="py-op">)</tt> </tt>
+<a name="L2106"></a><tt class="py-lineno">2106</tt>  <tt class="py-line">    <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-string">'%s [%s]'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt id="link-755" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-755', 'name', 'link-36');">name</a></tt><tt class="py-op">,</tt> <tt class="py-name">backpointers</tt><tt class="py-op">[</tt><tt class="py-name"> [...]
+<a name="L2107"></a><tt class="py-lineno">2107</tt>  <tt class="py-line"> </tt>
+<a name="L2108"></a><tt class="py-lineno">2108</tt>  <tt class="py-line">    <tt class="py-comment"># Only print non-empty fields:</tt> </tt>
+<a name="L2109"></a><tt class="py-lineno">2109</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">fields</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">field</tt> <tt class="py-keyword">for</tt> <tt class="py-name">field</tt> <tt class="py-keyword">in</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt class="py-op">(</tt><tt class="py-o [...]
+<a name="L2110"></a><tt class="py-lineno">2110</tt>  <tt class="py-line">              <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">field</tt> <tt class="py-keyword">in</tt> <tt class="py-name">include</tt> <tt class="py-keyword">or</tt> </tt>
+<a name="L2111"></a><tt class="py-lineno">2111</tt>  <tt class="py-line">                  <tt class="py-op">(</tt><tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt class="py-name">field</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt id="link-756" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-756', 'UNKNOWN', 'link-3 [...]
+<a name="L2112"></a><tt class="py-lineno">2112</tt>  <tt class="py-line">                   <tt class="py-keyword">and</tt> <tt class="py-name">field</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">exclude</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt>
+<a name="L2113"></a><tt class="py-lineno">2113</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">include</tt><tt class="py-op">:</tt> </tt>
+<a name="L2114"></a><tt class="py-lineno">2114</tt>  <tt class="py-line">        <tt class="py-name">fields</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">field</tt> <tt class="py-keyword">for</tt> <tt class="py-name">field</tt> <tt class="py-keyword">in</tt> <tt class="py-name">dir</tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">)</tt> </tt>
+<a name="L2115"></a><tt class="py-lineno">2115</tt>  <tt class="py-line">                  <tt class="py-keyword">if</tt> <tt class="py-name">field</tt> <tt class="py-keyword">in</tt> <tt class="py-name">include</tt><tt class="py-op">]</tt> </tt>
+<a name="L2116"></a><tt class="py-lineno">2116</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L2117"></a><tt class="py-lineno">2117</tt>  <tt class="py-line">        <tt class="py-name">fields</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">field</tt> <tt class="py-keyword">for</tt> <tt class="py-name">field</tt> <tt class="py-keyword">in</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L2118"></a><tt class="py-lineno">2118</tt>  <tt class="py-line">                  <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt class="py-name">field</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt id="link-757" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink [...]
+<a name="L2119"></a><tt class="py-lineno">2119</tt>  <tt class="py-line">                      <tt class="py-keyword">and</tt> <tt class="py-name">field</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">exclude</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt>
+<a name="L2120"></a><tt class="py-lineno">2120</tt>  <tt class="py-line">    <tt class="py-name">fields</tt><tt class="py-op">.</tt><tt class="py-name">sort</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L2121"></a><tt class="py-lineno">2121</tt>  <tt class="py-line">     </tt>
+<a name="L2122"></a><tt class="py-lineno">2122</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">field</tt> <tt class="py-keyword">in</tt> <tt class="py-name">fields</tt><tt class="py-op">:</tt> </tt>
+<a name="L2123"></a><tt class="py-lineno">2123</tt>  <tt class="py-line">        <tt class="py-name">fieldval</tt> <tt class="py-op">=</tt> <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt class="py-name">field</tt><tt class="py-op">)</tt> </tt>
+<a name="L2124"></a><tt class="py-lineno">2124</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">doublespace</tt><tt class="py-op">:</tt> <tt class="py-name">s</tt> <tt class="py-op">+=</tt> <tt class="py-string">'\n |'</tt> </tt>
+<a name="L2125"></a><tt class="py-lineno">2125</tt>  <tt class="py-line">        <tt class="py-name">s</tt> <tt class="py-op">+=</tt> <tt class="py-string">'\n +- %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">field</tt> </tt>
+<a name="L2126"></a><tt class="py-lineno">2126</tt>  <tt class="py-line"> </tt>
+<a name="L2127"></a><tt class="py-lineno">2127</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">fieldval</tt><tt class="py-op">,</tt> <tt class="py-name">types</tt><tt class="py-op">.</tt><tt class="py-name">ListType</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L2128"></a><tt class="py-lineno">2128</tt>  <tt class="py-line">            <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">fieldval</tt><tt class="py-op">)</tt><tt class="py-op">></tt><tt class="py-number">0</tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L2129"></a><tt class="py-lineno">2129</tt>  <tt class="py-line">            <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">fieldval</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt id="link-758" class="py-name"><a title="epydoc.apidoc.APIDoc" class="py-name" href="#" onclick="return doclink('link-758', 'APIDoc', 'link-82');">APIDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt>< [...]
+<a name="L2130"></a><tt class="py-lineno">2130</tt>  <tt class="py-line">            <tt class="py-name">s</tt> <tt class="py-op">+=</tt> <tt id="link-759" class="py-name" targets="Function epydoc.apidoc._pp_list()=epydoc.apidoc-module.html#_pp_list"><a title="epydoc.apidoc._pp_list" class="py-name" href="#" onclick="return doclink('link-759', '_pp_list', 'link-759');">_pp_list</a></tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt class="py-name">fi [...]
+<a name="L2131"></a><tt class="py-lineno">2131</tt>  <tt class="py-line">                          <tt class="py-name">exclude</tt><tt class="py-op">,</tt> <tt class="py-name">include</tt><tt class="py-op">,</tt> <tt class="py-name">backpointers</tt><tt class="py-op">,</tt> </tt>
+<a name="L2132"></a><tt class="py-lineno">2132</tt>  <tt class="py-line">                          <tt class="py-op">(</tt><tt class="py-name">field</tt> <tt class="py-keyword">is</tt> <tt class="py-name">fields</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2133"></a><tt class="py-lineno">2133</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-op">(</tt><tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">fieldval</tt><tt class="py-op">,</tt> <tt class="py-name">types</tt><tt class="py-op">.</tt><tt class="py-name">DictType</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L2134"></a><tt class="py-lineno">2134</tt>  <tt class="py-line">              <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">fieldval</tt><tt class="py-op">)</tt><tt class="py-op">></tt><tt class="py-number">0</tt> <tt class="py-keyword">and</tt>  </tt>
+<a name="L2135"></a><tt class="py-lineno">2135</tt>  <tt class="py-line">              <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">fieldval</tt><tt class="py-op">.</tt><tt class="py-name">values</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt id="link-760" class="py-name"><a title="epydoc.apidoc.APIDoc" class="py-name" href="#" onclick="return do [...]
+<a name="L2136"></a><tt class="py-lineno">2136</tt>  <tt class="py-line">            <tt class="py-name">s</tt> <tt class="py-op">+=</tt> <tt id="link-761" class="py-name" targets="Function epydoc.apidoc._pp_dict()=epydoc.apidoc-module.html#_pp_dict"><a title="epydoc.apidoc._pp_dict" class="py-name" href="#" onclick="return doclink('link-761', '_pp_dict', 'link-761');">_pp_dict</a></tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt class="py-name">fi [...]
+<a name="L2137"></a><tt class="py-lineno">2137</tt>  <tt class="py-line">                          <tt class="py-name">depth</tt><tt class="py-op">,</tt> <tt class="py-name">exclude</tt><tt class="py-op">,</tt> <tt class="py-name">include</tt><tt class="py-op">,</tt> <tt class="py-name">backpointers</tt><tt class="py-op">,</tt> </tt>
+<a name="L2138"></a><tt class="py-lineno">2138</tt>  <tt class="py-line">                          <tt class="py-op">(</tt><tt class="py-name">field</tt> <tt class="py-keyword">is</tt> <tt class="py-name">fields</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2139"></a><tt class="py-lineno">2139</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">fieldval</tt><tt class="py-op">,</tt> <tt id="link-762" class="py-name"><a title="epydoc.apidoc.APIDoc" class="py-name" href="#" onclick="return doclink('link-762', 'APIDoc', 'link-82');">APIDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L2140"></a><tt class="py-lineno">2140</tt>  <tt class="py-line">            <tt class="py-name">s</tt> <tt class="py-op">+=</tt> <tt id="link-763" class="py-name" targets="Function epydoc.apidoc._pp_apidoc()=epydoc.apidoc-module.html#_pp_apidoc"><a title="epydoc.apidoc._pp_apidoc" class="py-name" href="#" onclick="return doclink('link-763', '_pp_apidoc', 'link-763');">_pp_apidoc</a></tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt class="p [...]
+<a name="L2141"></a><tt class="py-lineno">2141</tt>  <tt class="py-line">                            <tt class="py-name">exclude</tt><tt class="py-op">,</tt> <tt class="py-name">include</tt><tt class="py-op">,</tt> <tt class="py-name">backpointers</tt><tt class="py-op">,</tt> </tt>
+<a name="L2142"></a><tt class="py-lineno">2142</tt>  <tt class="py-line">                            <tt class="py-op">(</tt><tt class="py-name">field</tt> <tt class="py-keyword">is</tt> <tt class="py-name">fields</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2143"></a><tt class="py-lineno">2143</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L2144"></a><tt class="py-lineno">2144</tt>  <tt class="py-line">            <tt class="py-name">s</tt> <tt class="py-op">+=</tt> <tt class="py-string">' = '</tt> <tt class="py-op">+</tt> <tt id="link-764" class="py-name" targets="Function epydoc.apidoc._pp_val()=epydoc.apidoc-module.html#_pp_val"><a title="epydoc.apidoc._pp_val" class="py-name" href="#" onclick="return doclink('link-764', '_pp_val', 'link-764');">_pp_val</a></tt><tt class="py-op">(</tt><tt class="py-name">api_do [...]
+<a name="L2145"></a><tt class="py-lineno">2145</tt>  <tt class="py-line">                                 <tt class="py-name">depth</tt><tt class="py-op">,</tt> <tt class="py-name">exclude</tt><tt class="py-op">,</tt> <tt class="py-name">include</tt><tt class="py-op">,</tt> <tt class="py-name">backpointers</tt><tt class="py-op">)</tt> </tt>
+<a name="L2146"></a><tt class="py-lineno">2146</tt>  <tt class="py-line">                 </tt>
+<a name="L2147"></a><tt class="py-lineno">2147</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">s</tt> </tt>
+</div><a name="L2148"></a><tt class="py-lineno">2148</tt>  <tt class="py-line"> </tt>
+<a name="_pp_list"></a><div id="_pp_list-def"><a name="L2149"></a><tt class="py-lineno">2149</tt> <a class="py-toggle" href="#" id="_pp_list-toggle" onclick="return toggle('_pp_list');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.apidoc-module.html#_pp_list">_pp_list</a><tt class="py-op">(</tt><tt class="py-param">api_doc</tt><tt class="py-op">,</tt> <tt class="py-param">items</tt><tt class="py-op">,</tt> <tt class="py-param">doublespace</ [...]
+<a name="L2150"></a><tt class="py-lineno">2150</tt>  <tt class="py-line">              <tt class="py-param">backpointers</tt><tt class="py-op">,</tt> <tt class="py-param">is_last</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_pp_list-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_pp_list-expanded"><a name="L2151"></a><tt class="py-lineno">2151</tt>  <tt class="py-line">    <tt class="py-name">line1</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">is_last</tt> <tt class="py-keyword">and</tt> <tt class="py-string">' '</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-string">'|'</tt> </tt>
+<a name="L2152"></a><tt class="py-lineno">2152</tt>  <tt class="py-line">    <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
+<a name="L2153"></a><tt class="py-lineno">2153</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">item</tt> <tt class="py-keyword">in</tt> <tt class="py-name">items</tt><tt class="py-op">:</tt> </tt>
+<a name="L2154"></a><tt class="py-lineno">2154</tt>  <tt class="py-line">        <tt class="py-name">line2</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">item</tt> <tt class="py-keyword">is</tt> <tt class="py-name">items</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-string">' '</tt><tt class="py-op">)</tt> <tt  [...]
+<a name="L2155"></a><tt class="py-lineno">2155</tt>  <tt class="py-line">        <tt class="py-name">joiner</tt> <tt class="py-op">=</tt> <tt class="py-string">'\n %s  %s '</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">line1</tt><tt class="py-op">,</tt> <tt class="py-name">line2</tt><tt class="py-op">)</tt> </tt>
+<a name="L2156"></a><tt class="py-lineno">2156</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">doublespace</tt><tt class="py-op">:</tt> <tt class="py-name">s</tt> <tt class="py-op">+=</tt> <tt class="py-string">'\n %s  |'</tt> <tt class="py-op">%</tt> <tt class="py-name">line1</tt> </tt>
+<a name="L2157"></a><tt class="py-lineno">2157</tt>  <tt class="py-line">        <tt class="py-name">s</tt> <tt class="py-op">+=</tt> <tt class="py-string">'\n %s  +- '</tt> <tt class="py-op">%</tt> <tt class="py-name">line1</tt> </tt>
+<a name="L2158"></a><tt class="py-lineno">2158</tt>  <tt class="py-line">        <tt class="py-name">valstr</tt> <tt class="py-op">=</tt> <tt id="link-765" class="py-name"><a title="epydoc.apidoc._pp_val" class="py-name" href="#" onclick="return doclink('link-765', '_pp_val', 'link-764');">_pp_val</a></tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt class="py-name">item</tt><tt class="py-op">,</tt> <tt class="py-name">doublespace</tt><tt class="py- [...]
+<a name="L2159"></a><tt class="py-lineno">2159</tt>  <tt class="py-line">                         <tt class="py-name">backpointers</tt><tt class="py-op">)</tt> </tt>
+<a name="L2160"></a><tt class="py-lineno">2160</tt>  <tt class="py-line">        <tt class="py-name">s</tt> <tt class="py-op">+=</tt> <tt class="py-name">joiner</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">valstr</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2161"></a><tt class="py-lineno">2161</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">s</tt> </tt>
+</div><a name="L2162"></a><tt class="py-lineno">2162</tt>  <tt class="py-line"> </tt>
+<a name="_pp_dict"></a><div id="_pp_dict-def"><a name="L2163"></a><tt class="py-lineno">2163</tt> <a class="py-toggle" href="#" id="_pp_dict-toggle" onclick="return toggle('_pp_dict');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.apidoc-module.html#_pp_dict">_pp_dict</a><tt class="py-op">(</tt><tt class="py-param">api_doc</tt><tt class="py-op">,</tt> <tt class="py-param">dict</tt><tt class="py-op">,</tt> <tt class="py-param">doublespace</t [...]
+<a name="L2164"></a><tt class="py-lineno">2164</tt>  <tt class="py-line">              <tt class="py-param">backpointers</tt><tt class="py-op">,</tt> <tt class="py-param">is_last</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_pp_dict-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_pp_dict-expanded"><a name="L2165"></a><tt class="py-lineno">2165</tt>  <tt class="py-line">    <tt class="py-name">items</tt> <tt class="py-op">=</tt> <tt class="py-name">dict</tt><tt class="py-op">.</tt><tt class="py-name">items</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L2166"></a><tt class="py-lineno">2166</tt>  <tt class="py-line">    <tt class="py-name">items</tt><tt class="py-op">.</tt><tt class="py-name">sort</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L2167"></a><tt class="py-lineno">2167</tt>  <tt class="py-line">    <tt class="py-name">line1</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">is_last</tt> <tt class="py-keyword">and</tt> <tt class="py-string">' '</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-string">'|'</tt> </tt>
+<a name="L2168"></a><tt class="py-lineno">2168</tt>  <tt class="py-line">    <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
+<a name="L2169"></a><tt class="py-lineno">2169</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">item</tt> <tt class="py-keyword">in</tt> <tt class="py-name">items</tt><tt class="py-op">:</tt> </tt>
+<a name="L2170"></a><tt class="py-lineno">2170</tt>  <tt class="py-line">        <tt class="py-name">line2</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">item</tt> <tt class="py-keyword">is</tt> <tt class="py-name">items</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-string">' '</tt><tt class="py-op">)</tt> <tt  [...]
+<a name="L2171"></a><tt class="py-lineno">2171</tt>  <tt class="py-line">        <tt class="py-name">joiner</tt> <tt class="py-op">=</tt> <tt class="py-string">'\n %s  %s '</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">line1</tt><tt class="py-op">,</tt> <tt class="py-name">line2</tt><tt class="py-op">)</tt> </tt>
+<a name="L2172"></a><tt class="py-lineno">2172</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">doublespace</tt><tt class="py-op">:</tt> <tt class="py-name">s</tt> <tt class="py-op">+=</tt> <tt class="py-string">'\n %s  |'</tt> <tt class="py-op">%</tt> <tt class="py-name">line1</tt> </tt>
+<a name="L2173"></a><tt class="py-lineno">2173</tt>  <tt class="py-line">        <tt class="py-name">s</tt> <tt class="py-op">+=</tt> <tt class="py-string">'\n %s  +- '</tt> <tt class="py-op">%</tt> <tt class="py-name">line1</tt> </tt>
+<a name="L2174"></a><tt class="py-lineno">2174</tt>  <tt class="py-line">        <tt class="py-name">valstr</tt> <tt class="py-op">=</tt> <tt id="link-766" class="py-name"><a title="epydoc.apidoc._pp_val" class="py-name" href="#" onclick="return doclink('link-766', '_pp_val', 'link-764');">_pp_val</a></tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt class="py-name">item</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt [...]
+<a name="L2175"></a><tt class="py-lineno">2175</tt>  <tt class="py-line">                         <tt class="py-name">include</tt><tt class="py-op">,</tt> <tt class="py-name">backpointers</tt><tt class="py-op">)</tt> </tt>
+<a name="L2176"></a><tt class="py-lineno">2176</tt>  <tt class="py-line">        <tt class="py-name">s</tt> <tt class="py-op">+=</tt> <tt class="py-name">joiner</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-string">'%s => %s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">item</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt cl [...]
+<a name="L2177"></a><tt class="py-lineno">2177</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">s</tt> </tt>
+</div><a name="L2178"></a><tt class="py-lineno">2178</tt>  <tt class="py-line"> </tt>
+<a name="_pp_apidoc"></a><div id="_pp_apidoc-def"><a name="L2179"></a><tt class="py-lineno">2179</tt> <a class="py-toggle" href="#" id="_pp_apidoc-toggle" onclick="return toggle('_pp_apidoc');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.apidoc-module.html#_pp_apidoc">_pp_apidoc</a><tt class="py-op">(</tt><tt class="py-param">api_doc</tt><tt class="py-op">,</tt> <tt class="py-param">val</tt><tt class="py-op">,</tt> <tt class="py-param">dou [...]
+<a name="L2180"></a><tt class="py-lineno">2180</tt>  <tt class="py-line">                <tt class="py-param">backpointers</tt><tt class="py-op">,</tt> <tt class="py-param">is_last</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_pp_apidoc-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_pp_apidoc-expanded"><a name="L2181"></a><tt class="py-lineno">2181</tt>  <tt class="py-line">    <tt class="py-name">line1</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">is_last</tt> <tt class="py-keyword">and</tt> <tt class="py-string">' '</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-string">'|'</tt> </tt>
+<a name="L2182"></a><tt class="py-lineno">2182</tt>  <tt class="py-line">    <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
+<a name="L2183"></a><tt class="py-lineno">2183</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">doublespace</tt><tt class="py-op">:</tt> <tt class="py-name">s</tt> <tt class="py-op">+=</tt> <tt class="py-string">'\n %s  |  '</tt> <tt class="py-op">%</tt> <tt class="py-name">line1</tt> </tt>
+<a name="L2184"></a><tt class="py-lineno">2184</tt>  <tt class="py-line">    <tt class="py-name">s</tt> <tt class="py-op">+=</tt> <tt class="py-string">'\n %s  +- '</tt> <tt class="py-op">%</tt> <tt class="py-name">line1</tt> </tt>
+<a name="L2185"></a><tt class="py-lineno">2185</tt>  <tt class="py-line">    <tt class="py-name">joiner</tt> <tt class="py-op">=</tt> <tt class="py-string">'\n %s    '</tt> <tt class="py-op">%</tt> <tt class="py-name">line1</tt> </tt>
+<a name="L2186"></a><tt class="py-lineno">2186</tt>  <tt class="py-line">    <tt class="py-name">childstr</tt> <tt class="py-op">=</tt> <tt id="link-767" class="py-name"><a title="epydoc.apidoc.pp_apidoc" class="py-name" href="#" onclick="return doclink('link-767', 'pp_apidoc', 'link-72');">pp_apidoc</a></tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">,</tt> <tt class="py-name">doublespace</tt><tt class="py-op">,</tt> <tt class="py-name">depth</tt><tt class="py- [...]
+<a name="L2187"></a><tt class="py-lineno">2187</tt>  <tt class="py-line">                         <tt class="py-name">include</tt><tt class="py-op">,</tt> <tt class="py-name">backpointers</tt><tt class="py-op">)</tt> </tt>
+<a name="L2188"></a><tt class="py-lineno">2188</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">s</tt> <tt class="py-op">+</tt> <tt class="py-name">joiner</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">childstr</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2189"></a><tt class="py-lineno">2189</tt>  <tt class="py-line">     </tt>
+<a name="_pp_val"></a><div id="_pp_val-def"><a name="L2190"></a><tt class="py-lineno">2190</tt> <a class="py-toggle" href="#" id="_pp_val-toggle" onclick="return toggle('_pp_val');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.apidoc-module.html#_pp_val">_pp_val</a><tt class="py-op">(</tt><tt class="py-param">api_doc</tt><tt class="py-op">,</tt> <tt class="py-param">val</tt><tt class="py-op">,</tt> <tt class="py-param">doublespace</tt><tt c [...]
+</div><div id="_pp_val-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_pp_val-expanded"><a name="L2191"></a><tt class="py-lineno">2191</tt>  <tt class="py-line">    <tt class="py-keyword">from</tt> <tt id="link-768" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-768', 'epydoc', 'link-1');">epydoc</a></tt> <tt class="py-keyword">import</tt> <tt id="link-769" class="py-name"><a title="epydoc.markup
+epydoc.markup.doctest.DoctestColorizer.markup
+epydoc.markup.doctest.HTMLDoctestColorizer.markup
+epydoc.markup.doctest.LaTeXDoctestColorizer.markup
+epydoc.markup.doctest.XMLDoctestColorizer.markup" class="py-name" href="#" onclick="return doclink('link-769', 'markup', 'link-11');">markup</a></tt> </tt>
+<a name="L2192"></a><tt class="py-lineno">2192</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">,</tt> <tt id="link-770" class="py-name"><a title="epydoc.apidoc.APIDoc" class="py-name" href="#" onclick="return doclink('link-770', 'APIDoc', 'link-82');">APIDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L2193"></a><tt class="py-lineno">2193</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-771" class="py-name"><a title="epydoc.apidoc.pp_apidoc" class="py-name" href="#" onclick="return doclink('link-771', 'pp_apidoc', 'link-72');">pp_apidoc</a></tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">,</tt> <tt class="py-name">doublespace</tt><tt class="py-op">,</tt> <tt class="py-name">depth</tt><tt class="py-op">-</tt><tt class= [...]
+<a name="L2194"></a><tt class="py-lineno">2194</tt>  <tt class="py-line">                         <tt class="py-name">include</tt><tt class="py-op">,</tt> <tt class="py-name">backpointers</tt><tt class="py-op">)</tt> </tt>
+<a name="L2195"></a><tt class="py-lineno">2195</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">,</tt> <tt id="link-772" class="py-name"><a title="epydoc.markup
+epydoc.markup.doctest.DoctestColorizer.markup
+epydoc.markup.doctest.HTMLDoctestColorizer.markup
+epydoc.markup.doctest.LaTeXDoctestColorizer.markup
+epydoc.markup.doctest.XMLDoctestColorizer.markup" class="py-name" href="#" onclick="return doclink('link-772', 'markup', 'link-11');">markup</a></tt><tt class="py-op">.</tt><tt id="link-773" class="py-name" targets="Class epydoc.markup.ParsedDocstring=epydoc.markup.ParsedDocstring-class.html"><a title="epydoc.markup.ParsedDocstring" class="py-name" href="#" onclick="return doclink('link-773', 'ParsedDocstring', 'link-773');">ParsedDocstring</a></tt><tt class="py-op">)</tt><tt class="py-o [...]
+<a name="L2196"></a><tt class="py-lineno">2196</tt>  <tt class="py-line">        <tt class="py-name">valrepr</tt> <tt class="py-op">=</tt> <tt class="py-op">`</tt><tt class="py-name">val</tt><tt class="py-op">.</tt><tt id="link-774" class="py-name"><a title="epydoc.markup.ConcatenatedDocstring.to_plaintext
+epydoc.markup.ParsedDocstring.to_plaintext
+epydoc.markup.epytext.ParsedEpytextDocstring.to_plaintext
+epydoc.markup.epytext.to_plaintext
+epydoc.markup.javadoc.ParsedJavadocDocstring.to_plaintext
+epydoc.markup.plaintext.ParsedPlaintextDocstring.to_plaintext
+epydoc.markup.restructuredtext.ParsedRstDocstring.to_plaintext" class="py-name" href="#" onclick="return doclink('link-774', 'to_plaintext', 'link-198');">to_plaintext</a></tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">`</tt> </tt>
+<a name="L2197"></a><tt class="py-lineno">2197</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">valrepr</tt><tt class="py-op">)</tt> <tt class="py-op"><</tt> <tt class="py-number">40</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-name">valrepr</tt> </tt>
+<a name="L2198"></a><tt class="py-lineno">2198</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-name">valrepr</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-number">37</tt><tt class="py-op">]</tt><tt class="py-op">+</tt><tt class="py-string">'...'</tt> </tt>
+<a name="L2199"></a><tt class="py-lineno">2199</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L2200"></a><tt class="py-lineno">2200</tt>  <tt class="py-line">        <tt class="py-name">valrepr</tt> <tt class="py-op">=</tt> <tt class="py-name">repr</tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">)</tt> </tt>
+<a name="L2201"></a><tt class="py-lineno">2201</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">valrepr</tt><tt class="py-op">)</tt> <tt class="py-op"><</tt> <tt class="py-number">40</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-name">valrepr</tt> </tt>
+<a name="L2202"></a><tt class="py-lineno">2202</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-name">valrepr</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-number">37</tt><tt class="py-op">]</tt><tt class="py-op">+</tt><tt class="py-string">'...'</tt> </tt>
+</div><a name="L2203"></a><tt class="py-lineno">2203</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:09:30 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.apidoc.APIDoc-class.html b/doc/api/epydoc.apidoc.APIDoc-class.html
new file mode 100644
index 0000000..e1431a2
--- /dev/null
+++ b/doc/api/epydoc.apidoc.APIDoc-class.html
@@ -0,0 +1,1326 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.apidoc.APIDoc</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.apidoc-module.html">Module apidoc</a> ::
+        Class APIDoc
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.apidoc.APIDoc-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class APIDoc</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.apidoc-pysrc.html#APIDoc">source code</a></span></p>
+<center>
+<center>  <map id="uml_class_diagram_for_epydoc_a" name="uml_class_diagram_for_epydoc_a">
+<area shape="rect" href="epydoc.markup.ParsedDocstring-class.html" title="A standard intermediate representation for parsed docstrings that can be used to generate output." alt="" coords="5,374,189,411" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html" title="API documentation information about a singe Python namespace value." alt="" coords="391,435,521,472" />
+<area shape="rect" href="epydoc.apidoc.ModuleDoc-class.html" title="API documentation information about a single module." alt="" coords="340,496,444,534" />
+<area shape="rect" href="epydoc.apidoc.ClassDoc-class.html" title="API documentation information about a single class." alt="" coords="473,496,567,534" />
+<area shape="rect" href="epydoc.apidoc.StaticMethodDoc-class.html" title="epydoc.apidoc.StaticMethodDoc" alt="" coords="635,496,773,534" />
+<area shape="rect" href="epydoc.apidoc.PropertyDoc-class.html" title="API documentation information about a single property." alt="" coords="551,435,660,472" />
+<area shape="rect" href="epydoc.apidoc.RoutineDoc-class.html" title="API documentation information about a single routine." alt="" coords="689,435,796,472" />
+<area shape="rect" href="epydoc.apidoc.ClassMethodDoc-class.html" title="epydoc.apidoc.ClassMethodDoc" alt="" coords="803,496,941,534" />
+<area shape="rect" href="epydoc.docstringparser.DocstringField-class.html" title="A simple docstring field, which can be used to describe specific information about an object, such as its author or its version." alt="" coords="219,374,435,411" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#docstring" title="The documented item's docstring." alt="" coords="332,28,705,47" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#docstring_lineno" title="The line number on which the documented item's docstring begins." alt="" coords="332,47,705,66" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#other_docs" title="A flag indicating if the entire docstring body (except tags if any) is  entirely included in the summary." alt="" coords="332,66,705,84" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#metadata" title="Metadata about the documented item, extracted from fields in its docstring." alt="" coords="332,84,705,103" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#docs_extracted_by" title="Information about where the information contained by this APIDoc came from." alt="" coords="332,103,705,122" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__init__" title="Construct a new APIDoc object." alt="" coords="332,124,705,143" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__setattr__" title="Modify an APIDoc's attribute." alt="" coords="332,143,705,162" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__repr__" title="repr(x)" alt="" coords="332,162,705,180" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#pp" title="Return a pretty-printed string representation for the information contained in this APIDoc." alt="" coords="332,180,705,199" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__str__" title="Return a pretty-printed string representation for the information contained in this APIDoc." alt="" coords="332,199,705,218" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#specialize_to" title="Change self's class to cls." alt="" coords="332,218,705,236" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__hash__" title="hash(x)" alt="" coords="332,236,705,255" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__cmp__" title="epydoc.apidoc.APIDoc.__cmp__" alt="" coords="332,255,705,274" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#is_detailed" title="Does this object deserve a box with extra details?" alt="" coords="332,274,705,292" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#merge_and_overwrite" title="Combine self and other into a merged object, such that any changes made to  one will affect the other." alt="" coords="332,292,705,311" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#apidoc_links" title="Return a list of all APIDocs that are directly linked from this APIDoc  (i.e., are contained or pointed to by one or more of this APIDoc's  attributes.)" alt="" coords="332,311,705,330" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html" title="API documentation information for a single element of a Python program." alt="" coords="320,6,717,336" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#descr" title="epydoc.apidoc.APIDoc.descr" alt="" coords="149,348,182,362" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#descr" title="descr" alt="" coords="327,244,335,252" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#descr" title="descr" alt="" coords="107,375,115,383" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#summary" title="epydoc.apidoc.APIDoc.summary" alt="" coords="223,348,279,362" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#summary" title="summary" alt="" coords="327,283,335,291" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#summary" title="summary" alt="" coords="139,375,147,383" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#extra_docstring_fields" title="epydoc.apidoc.APIDoc.extra_docstring_fields" alt="" coords="363,348,493,362" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#extra_docstring_fields" title="extra_docstring_fields" alt="" coords="376,327,384,335" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#extra_docstring_fields" title="extra_docstring_fields" alt="" coords="335,375,343,383" />
+<area shape="rect" href="epydoc.apidoc.VariableDoc-class.html" title="API documentation information about a single Python variable." alt="" coords="464,374,573,411" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html" title="API documentation information about a single Python value." alt="" coords="603,374,696,411" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html" title="A sequence of identifiers, separated by periods, used to name a Python variable, value, or argument." alt="" coords="747,152,859,190" />
+<area shape="rect" href="epydoc.apidoc.GenericValueDoc-class.html" title="API documentation about a 'generic' value, i.e., one that does not have its own docstring or any information other than its value and parse representation." alt="" coords="825,435,967,472" />
+</map>
+  <img src="uml_class_diagram_for_epydoc_a.gif" alt='' usemap="#uml_class_diagram_for_epydoc_a" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<p>API documentation information for a single element of a Python 
+  program.  <code>APIDoc</code> itself is an abstract base class; 
+  subclasses are used to specify what information should be recorded about 
+  each type of program element.  In particular, <code>APIDoc</code> has two
+  direct subclasses, <code>VariableDoc</code> for documenting variables and
+  <code>ValueDoc</code> for documenting values; and the 
+  <code>ValueDoc</code> class is subclassed further for different value 
+  types.</p>
+  <p>Each <code>APIDoc</code> subclass specifies the set of attributes that
+  should be used to record information about the corresponding program 
+  element type.  The default value for each attribute is stored in the 
+  class; these default values can then be overridden with instance 
+  variables.  Most attributes use the special value <a 
+  href="epydoc.apidoc-module.html#UNKNOWN" class="link">UNKNOWN</a> as 
+  their default value, to indicate that the correct value for that 
+  attribute has not yet been determined.  This makes it easier to merge two
+  <code>APIDoc</code> objects that are documenting the same element (in 
+  particular, to merge information about an element that was derived from 
+  parsing with information that was derived from introspection).</p>
+  <p>For all attributes with boolean values, use only the constants 
+  <code>True</code> and <code>False</code> to designate true and false.  In
+  particular, do <i>not</i> use other values that evaluate as true or 
+  false, such as <code>2</code> or <code>()</code>.  This restriction makes
+  it easier to handle <code>UNKNOWN</code> values.  For example, to test if
+  a boolean attribute is <code>True</code> or <code>UNKNOWN</code>, use 
+  '<code>attrib in (True, UNKNOWN)</code>' or '<code>attrib is not 
+  False</code>'.</p>
+  <p>Two <code>APIDoc</code> objects describing the same object can be <a 
+  name="index-merged"></a><i class="indexterm">merged</i>, using the method
+  <a href="epydoc.apidoc.APIDoc-class.html#merge_and_overwrite" 
+  class="link">merge_and_overwrite(other)</a>.  After two 
+  <code>APIDoc</code>s are merged, any changes to one will be reflected in 
+  the other.  This is accomplished by setting the two <code>APIDoc</code> 
+  objects to use a shared instance dictionary.  See the documentation for 
+  <a href="epydoc.apidoc.APIDoc-class.html#merge_and_overwrite" 
+  class="link">merge_and_overwrite</a> for more information, and some 
+  important caveats about hashing.</p>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.apidoc.APIDoc-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">**kwargs</span>)</span><br />
+      Construct a new <code>APIDoc</code> object.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.apidoc-pysrc.html#APIDoc.__init__">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for___init__-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for___init__-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for___init__" name="call_graph_for___init__">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__init__" title="__init__()" alt="" coords="396,258,492,290" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#specialize_to" title="specialize_to()" alt="" coords="111,6,242,38" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#__init__" title="NamespaceDoc.__init__()" alt="" coords="67,62,286,94" />
+<area shape="rect" href="epydoc.apidoc.VariableDoc-class.html#__init__" title="VariableDoc.__init__()" alt="" coords="78,118,275,150" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#_get_valuedoc" title="docintrospecter._get_valuedoc()" alt="" coords="46,174,307,206" />
+<area shape="rect" href="epydoc.docparser-module.html#apply_decorator" title="docparser.apply_decorator()" alt="" coords="60,230,292,262" />
+<area shape="rect" href="epydoc.docparser-module.html#init_arglist" title="docparser.init_arglist()" alt="" coords="80,286,272,318" />
+<area shape="rect" href="epydoc.docparser-module.html#lookup_value" title="docparser.lookup_value()" alt="" coords="71,342,282,374" />
+<area shape="rect" href="epydoc.docparser-module.html#process_funcdef" title="docparser.process_funcdef()" alt="" coords="60,398,292,430" />
+<area shape="rect" href="epydoc.docparser-module.html#rhs_to_valuedoc" title="docparser.rhs_to_valuedoc()" alt="" coords="59,454,294,486" />
+<area shape="rect" href="epydoc.docstringparser-module.html#parse_function_signature" title="docstringparser.parse_function_signature()" alt="" coords="6,510,347,542" />
+</map>
+  <img src="call_graph_for___init__.gif" alt='' usemap="#call_graph_for___init__" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.apidoc.APIDoc-class.html#_debug_setattr" class="summary-sig-name" onclick="show_private();">_debug_setattr</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">attr</span>,
+        <span class="summary-sig-arg">val</span>)</span><br />
+      Modify an <code>APIDoc</code>'s attribute.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.apidoc-pysrc.html#APIDoc._debug_setattr">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.apidoc.APIDoc-class.html#__setattr__" class="summary-sig-name">__setattr__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">attr</span>,
+        <span class="summary-sig-arg">val</span>)</span><br />
+      Modify an <code>APIDoc</code>'s attribute.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.apidoc-pysrc.html#APIDoc._debug_setattr">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.apidoc.APIDoc-class.html#__repr__" class="summary-sig-name">__repr__</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      repr(x)</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.apidoc-pysrc.html#APIDoc.__repr__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="pp"></a><span class="summary-sig-name">pp</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">doublespace</span>=<span class="summary-sig-default">0</span>,
+        <span class="summary-sig-arg">depth</span>=<span class="summary-sig-default">5</span>,
+        <span class="summary-sig-arg">exclude</span>=<span class="summary-sig-default"><code class="variable-group">(</code><code class="variable-group">)</code></span>,
+        <span class="summary-sig-arg">include</span>=<span class="summary-sig-default"><code class="variable-group">(</code><code class="variable-group">)</code></span>)</span><br />
+      Return a pretty-printed string representation for the information 
+      contained in this <code>APIDoc</code>.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.apidoc-pysrc.html#APIDoc.pp">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.apidoc.APIDoc-class.html#__str__" class="summary-sig-name">__str__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">doublespace</span>=<span class="summary-sig-default">0</span>,
+        <span class="summary-sig-arg">depth</span>=<span class="summary-sig-default">5</span>,
+        <span class="summary-sig-arg">exclude</span>=<span class="summary-sig-default"><code class="variable-group">(</code><code class="variable-group">)</code></span>,
+        <span class="summary-sig-arg">include</span>=<span class="summary-sig-default"><code class="variable-group">(</code><code class="variable-group">)</code></span>)</span><br />
+      Return a pretty-printed string representation for the information 
+      contained in this <code>APIDoc</code>.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.apidoc-pysrc.html#APIDoc.pp">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.apidoc.APIDoc-class.html#specialize_to" class="summary-sig-name">specialize_to</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">cls</span>)</span><br />
+      Change <code>self</code>'s class to <code>cls</code>.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.apidoc-pysrc.html#APIDoc.specialize_to">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_specialize_to-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_specialize_to-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_specialize_to" name="call_graph_for_specialize_to">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__init__" title="__init__()" alt="" coords="596,118,692,150" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#specialize_to" title="specialize_to()" alt="" coords="353,146,484,178" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#__init__" title="NamespaceDoc.__init__()" alt="" coords="535,174,753,206" />
+<area shape="rect" href="epydoc.docbuilder-module.html#merge_docs" title="docbuilder.merge_docs()" alt="" coords="51,6,259,38" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#introspect_class" title="docintrospecter.introspect_class()" alt="" coords="19,62,291,94" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#introspect_module" title="docintrospecter.introspect_module()" alt="" coords="9,118,300,150" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#introspect_other" title="docintrospecter.introspect_other()" alt="" coords="17,174,292,206" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#introspect_property" title="docintrospecter.introspect_property()" alt="" coords="5,230,304,262" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#introspect_routine" title="docintrospecter.introspect_routine()" alt="" coords="11,286,299,318" />
+</map>
+  <img src="call_graph_for_specialize_to.gif" alt='' usemap="#call_graph_for_specialize_to" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.apidoc.APIDoc-class.html#__hash__" class="summary-sig-name">__hash__</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      hash(x)</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.apidoc-pysrc.html#APIDoc.__hash__">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for___hash__-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for___hash__-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for___hash__" name="call_graph_for___hash__">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__hash__" title="__hash__()" alt="" coords="579,511,686,543" />
+<area shape="rect" href="epydoc.apidoc.ClassDoc-class.html#_dfs_bases" title="ClassDoc._dfs_bases()" alt="" coords="172,7,364,39" />
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#container" title="DocIndex.container()" alt="" coords="178,63,359,95" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#_init_grouping" title="NamespaceDoc._init_grouping()" alt="" coords="135,119,402,151" />
+<area shape="rect" href="epydoc.apidoc-module.html#reachable_valdocs" title="reachable_valdocs()" alt="" coords="182,175,355,207" />
+<area shape="rect" href="epydoc.docbuilder-module.html#assign_canonical_names" title="docbuilder.assign_canonical_names()" alt="" coords="118,231,419,263" />
+<area shape="rect" href="epydoc.docbuilder-module.html#build_doc_index" title="docbuilder.build_doc_index()" alt="" coords="147,287,390,319" />
+<area shape="rect" href="epydoc.docstringparser-module.html#parse_docstring" title="docstringparser.parse_docstring()" alt="" coords="132,343,404,375" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_add_attribute_edge" title="docwriter.dotgraph.DotGraphUmlClassNode._add_attribute_edge()" alt="" coords="6,399,531,431" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#add_valdoc_nodes" title="docwriter.dotgraph.add_valdoc_nodes()" alt="" coords="108,455,428,487" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#class_tree_graph" title="docwriter.dotgraph.class_tree_graph()" alt="" coords="115,511,422,543" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#import_graph" title="docwriter.dotgraph.import_graph()" alt="" coords="128,567,408,599" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#uml_class_tree_graph" title="docwriter.dotgraph.uml_class_tree_graph()" alt="" coords="96,623,440,655" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#__init__" title="docwriter.html.HTMLWriter.__init__()" alt="" coords="110,679,427,711" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_url" title="docwriter.html.HTMLWriter._url()" alt="" coords="126,735,411,767" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#pysrc_url" title="docwriter.html.HTMLWriter.pysrc_url()" alt="" coords="106,791,431,823" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_class_tree" title="docwriter.html.HTMLWriter.write_class_tree()" alt="" coords="80,847,456,879" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_inheritance_list" title="docwriter.html.HTMLWriter.write_inheritance_list()" alt="" coords="60,903,476,935" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_module_tree" title="docwriter.html.HTMLWriter.write_module_tree()" alt="" coords="71,959,466,991" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_summary_group" title="docwriter.html.HTMLWriter.write_summary_group()" alt="" coords="56,1015,480,1047" />
+</map>
+  <img src="call_graph_for___hash__.gif" alt='' usemap="#call_graph_for___hash__" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__cmp__"></a><span class="summary-sig-name">__cmp__</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">other</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.apidoc-pysrc.html#APIDoc.__cmp__">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for___cmp__-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for___cmp__-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for___cmp__" name="call_graph_for___cmp__">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__cmp__" title="__cmp__()" alt="" coords="575,1159,679,1191" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#merge_and_overwrite" title="merge_and_overwrite()" alt="" coords="167,11,364,43" />
+<area shape="rect" href="epydoc.apidoc.ClassDoc-class.html#_c3_merge" title="ClassDoc._c3_merge()" alt="" coords="169,67,361,99" />
+<area shape="rect" href="epydoc.apidoc.ClassDoc-class.html#select_variables" title="ClassDoc.select_variables()" alt="" coords="151,123,380,155" />
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#_get_module_classes" title="DocIndex._get_module_classes()" alt="" coords="129,179,401,211" />
+<area shape="rect" href="epydoc.apidoc.ModuleDoc-class.html#apidoc_links" title="ModuleDoc.apidoc_links()" alt="" coords="153,235,377,267" />
+<area shape="rect" href="epydoc.apidoc.PropertyDoc-class.html#apidoc_links" title="PropertyDoc.apidoc_links()" alt="" coords="151,291,380,323" />
+<area shape="rect" href="epydoc.apidoc.VariableDoc-class.html#apidoc_links" title="VariableDoc.apidoc_links()" alt="" coords="151,347,380,379" />
+<area shape="rect" href="epydoc.apidoc.VariableDoc-class.html#is_detailed" title="VariableDoc.is_detailed()" alt="" coords="157,403,373,435" />
+<area shape="rect" href="epydoc.apidoc-module.html#reachable_valdocs" title="reachable_valdocs()" alt="" coords="179,459,352,491" />
+<area shape="rect" href="epydoc.docbuilder-module.html#_report_errors" title="docbuilder._report_errors()" alt="" coords="153,515,377,547" />
+<area shape="rect" href="epydoc.docbuilder-module.html#_unreachable_name_for" title="docbuilder._unreachable_name_for()" alt="" coords="116,571,415,603" />
+<area shape="rect" href="epydoc.docbuilder-module.html#_var_shadows_self" title="docbuilder._var_shadows_self()" alt="" coords="135,627,396,659" />
+<area shape="rect" href="epydoc.docbuilder-module.html#assign_canonical_names" title="docbuilder.assign_canonical_names()" alt="" coords="115,683,416,715" />
+<area shape="rect" href="epydoc.docbuilder-module.html#find_overrides" title="docbuilder.find_overrides()" alt="" coords="152,739,379,771" />
+<area shape="rect" href="epydoc.docbuilder-module.html#inherit_docs" title="docbuilder.inherit_docs()" alt="" coords="160,795,371,827" />
+<area shape="rect" href="epydoc.docbuilder-module.html#merge_docs" title="docbuilder.merge_docs()" alt="" coords="161,851,369,883" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#get_value_from_filename" title="docintrospecter.get_value_from_filename()" alt="" coords="93,907,437,939" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#introspect_class" title="docintrospecter.introspect_class()" alt="" coords="129,963,401,995" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#introspect_module" title="docintrospecter.introspect_module()" alt="" coords="120,1019,411,1051" />
+<area shape="rect" href="epydoc.docparser-module.html#_global_name" title="docparser._global_name()" alt="" coords="157,1075,373,1107" />
+<area shape="rect" href="epydoc.docparser-module.html#_module_var_toktree" title="docparser._module_var_toktree()" alt="" coords="131,1131,400,1163" />
+<area shape="rect" href="epydoc.docparser-module.html#lhs_is_instvar" title="docparser.lhs_is_instvar()" alt="" coords="159,1187,372,1219" />
+<area shape="rect" href="epydoc.docparser-module.html#process_file" title="docparser.process_file()" alt="" coords="165,1243,365,1275" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#__init__" title="docwriter.dotgraph.DotGraphUmlClassNode.__init__()" alt="" coords="48,1299,483,1331" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlModuleNode-class.html#_color" title="docwriter.dotgraph.DotGraphUmlModuleNode._color()" alt="" coords="47,1355,484,1387" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#specialize_valdoc_node" title="docwriter.dotgraph.specialize_valdoc_node()" alt="" coords="87,1411,444,1443" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#uml_class_tree_graph" title="docwriter.dotgraph.uml_class_tree_graph()" alt="" coords="93,1467,437,1499" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#__init__" title="docwriter.html.HTMLWriter.__init__()" alt="" coords="107,1523,424,1555" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_attr_to_html" title="docwriter.html.HTMLWriter._attr_to_html()" alt="" coords="88,1579,443,1611" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_url" title="docwriter.html.HTMLWriter._url()" alt="" coords="123,1635,408,1667" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_val_is_public" title="docwriter.html.HTMLWriter._val_is_public()" alt="" coords="84,1691,447,1723" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#breadcrumbs" title="docwriter.html.HTMLWriter.breadcrumbs()" alt="" coords="91,1747,440,1779" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#function_signature" title="docwriter.html.HTMLWriter.function_signature()" alt="" coords="68,1803,463,1835" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#property_accessor_to_html" title="docwriter.html.HTMLWriter.property_accessor_to_html()" alt="" coords="37,1859,493,1891" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#pysrc_url" title="docwriter.html.HTMLWriter.pysrc_url()" alt="" coords="103,1915,428,1947" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#variable_tooltip" title="docwriter.html.HTMLWriter.variable_tooltip()" alt="" coords="80,1971,451,2003" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_details_entry" title="docwriter.html.HTMLWriter.write_details_entry()" alt="" coords="67,2027,464,2059" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_inheritance_list" title="docwriter.html.HTMLWriter.write_inheritance_list()" alt="" coords="57,2083,473,2115" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_module_tree" title="docwriter.html.HTMLWriter.write_module_tree()" alt="" coords="68,2139,463,2171" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_summary_group" title="docwriter.html.HTMLWriter.write_summary_group()" alt="" coords="53,2195,477,2227" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_summary_line" title="docwriter.html.HTMLWriter.write_summary_line()" alt="" coords="61,2251,469,2283" />
+<area shape="rect" href="epydoc.docwriter.html._HTMLDocstringLinker-class.html#translate_identifier_xref" title="docwriter.html._HTMLDocstringLinker.translate_identifier_xref()" alt="" coords="7,2307,524,2339" />
+</map>
+  <img src="call_graph_for___cmp__.gif" alt='' usemap="#call_graph_for___cmp__" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>bool</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.apidoc.APIDoc-class.html#is_detailed" class="summary-sig-name">is_detailed</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Does this object deserve a box with extra details?</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.apidoc-pysrc.html#APIDoc.is_detailed">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_is_detailed-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_is_detailed-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_is_detailed" name="call_graph_for_is_detailed">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#is_detailed" title="is_detailed()" alt="" coords="271,62,385,94" />
+<area shape="rect" href="epydoc.apidoc.PropertyDoc-class.html#is_detailed" title="PropertyDoc.is_detailed()" alt="" coords="7,6,220,38" />
+<area shape="rect" href="epydoc.apidoc.RoutineDoc-class.html#is_detailed" title="RoutineDoc.is_detailed()" alt="" coords="9,62,217,94" />
+<area shape="rect" href="epydoc.apidoc.VariableDoc-class.html#is_detailed" title="VariableDoc.is_detailed()" alt="" coords="5,118,221,150" />
+</map>
+  <img src="call_graph_for_is_detailed.gif" alt='' usemap="#call_graph_for_is_detailed" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.apidoc.APIDoc-class.html#merge_and_overwrite" class="summary-sig-name">merge_and_overwrite</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">other</span>,
+        <span class="summary-sig-arg">ignore_hash_conflict</span>=<span class="summary-sig-default">False</span>)</span><br />
+      Combine <code>self</code> and <code>other</code> into a <a 
+      name="index-merged_object"></a><i class="indexterm">merged 
+      object</i>, such that any changes made to one will affect the other.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.apidoc-pysrc.html#APIDoc.merge_and_overwrite">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_merge_and_overw-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_merge_and_overw-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_merge_and_overw" name="call_graph_for_merge_and_overw">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__cmp__" title="__cmp__()" alt="" coords="508,6,612,38" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#merge_and_overwrite" title="merge_and_overwrite()" alt="" coords="262,6,459,38" />
+<area shape="rect" href="epydoc.docbuilder-module.html#merge_docs" title="docbuilder.merge_docs()" alt="" coords="6,6,214,38" />
+</map>
+  <img src="call_graph_for_merge_and_overw.gif" alt='' usemap="#call_graph_for_merge_and_overw" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.apidoc.APIDoc-class.html#apidoc_links" class="summary-sig-name">apidoc_links</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">**filters</span>)</span><br />
+      Return a list of all <code>APIDoc</code>s that are directly linked 
+      from this <code>APIDoc</code> (i.e., are contained or pointed to by 
+      one or more of this <code>APIDoc</code>'s attributes.)</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.apidoc-pysrc.html#APIDoc.apidoc_links">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Class Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-ClassVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="__has_been_hashed"></a><span class="summary-name">__has_been_hashed</span> = <code title="False">False</code><br />
+      True iff <a href="epydoc.apidoc.APIDoc-class.html#__hash__" 
+      class="link">self.__hash__()</a> has ever been called.
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.apidoc.APIDoc-class.html#__mergeset" class="summary-name" onclick="show_private();">__mergeset</a> = <code title="None">None</code><br />
+      The set of all <code>APIDoc</code> objects that have been merged with
+      this <code>APIDoc</code> (using <a 
+      href="epydoc.apidoc.APIDoc-class.html#merge_and_overwrite" 
+      class="link">merge_and_overwrite()</a>).
+    </td>
+  </tr>
+</table>
+<!-- ==================== INSTANCE VARIABLES ==================== -->
+<a name="section-InstanceVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Docstrings</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>string</code> or <code>None</code></span>
+    </td><td class="summary">
+        <a name="docstring"></a><span class="summary-name">docstring</span> = <code title="_Sentinel('UNKNOWN')">_Sentinel('UNKNOWN')</code><br />
+      The documented item's docstring.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>int</code></span>
+    </td><td class="summary">
+        <a name="docstring_lineno"></a><span class="summary-name">docstring_lineno</span> = <code title="_Sentinel('UNKNOWN')">_Sentinel('UNKNOWN')</code><br />
+      The line number on which the documented item's docstring begins.
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Information Extracted from Docstrings</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><a href="epydoc.markup.ParsedDocstring-class.html" 
+      class="link">ParsedDocstring</a></span>
+    </td><td class="summary">
+        <a name="descr"></a><span class="summary-name">descr</span> = <code title="_Sentinel('UNKNOWN')">_Sentinel('UNKNOWN')</code><br />
+      A description of the documented item, extracted from its docstring.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><a href="epydoc.markup.ParsedDocstring-class.html" 
+      class="link">ParsedDocstring</a></span>
+    </td><td class="summary">
+        <a name="summary"></a><span class="summary-name">summary</span> = <code title="_Sentinel('UNKNOWN')">_Sentinel('UNKNOWN')</code><br />
+      A summary description of the documented item, extracted from its 
+      docstring.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>bool</code></span>
+    </td><td class="summary">
+        <a name="other_docs"></a><span class="summary-name">other_docs</span> = <code title="_Sentinel('UNKNOWN')">_Sentinel('UNKNOWN')</code><br />
+      A flag indicating if the entire <a 
+      href="epydoc.apidoc.APIDoc-class.html#docstring" 
+      class="link">docstring</a> body (except tags if any) is entirely 
+      included in the <a href="epydoc.apidoc.APIDoc-class.html#summary" 
+      class="link">summary</a>.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>(str, str, <a href="epydoc.markup.ParsedDocstring-class.html" 
+      class="link">ParsedDocstring</a>)</code></span>
+    </td><td class="summary">
+        <a href="epydoc.apidoc.APIDoc-class.html#metadata" class="summary-name">metadata</a> = <code title="_Sentinel('UNKNOWN')">_Sentinel('UNKNOWN')</code><br />
+      Metadata about the documented item, extracted from fields in its 
+      docstring.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><a href="epydoc.docstringparser.DocstringField-class.html" 
+      class="link">DocstringField</a></span>
+    </td><td class="summary">
+        <a href="epydoc.apidoc.APIDoc-class.html#extra_docstring_fields" class="summary-name">extra_docstring_fields</a> = <code title="_Sentinel('UNKNOWN')">_Sentinel('UNKNOWN')</code><br />
+      A list of new docstring fields tags that are defined by the 
+      documented item's docstring.
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Source Information</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>str</code></span>
+    </td><td class="summary">
+        <a href="epydoc.apidoc.APIDoc-class.html#docs_extracted_by" class="summary-name">docs_extracted_by</a> = <code title="_Sentinel('UNKNOWN')">_Sentinel('UNKNOWN')</code><br />
+      Information about where the information contained by this 
+      <code>APIDoc</code> came from.
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Properties</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Properties"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Method Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-MethodDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">**kwargs</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.apidoc-pysrc.html#APIDoc.__init__">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for___init__-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for___init__-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for___init__" name="call_graph_for___init__">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__init__" title="__init__()" alt="" coords="396,258,492,290" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#specialize_to" title="specialize_to()" alt="" coords="111,6,242,38" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#__init__" title="NamespaceDoc.__init__()" alt="" coords="67,62,286,94" />
+<area shape="rect" href="epydoc.apidoc.VariableDoc-class.html#__init__" title="VariableDoc.__init__()" alt="" coords="78,118,275,150" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#_get_valuedoc" title="docintrospecter._get_valuedoc()" alt="" coords="46,174,307,206" />
+<area shape="rect" href="epydoc.docparser-module.html#apply_decorator" title="docparser.apply_decorator()" alt="" coords="60,230,292,262" />
+<area shape="rect" href="epydoc.docparser-module.html#init_arglist" title="docparser.init_arglist()" alt="" coords="80,286,272,318" />
+<area shape="rect" href="epydoc.docparser-module.html#lookup_value" title="docparser.lookup_value()" alt="" coords="71,342,282,374" />
+<area shape="rect" href="epydoc.docparser-module.html#process_funcdef" title="docparser.process_funcdef()" alt="" coords="60,398,292,430" />
+<area shape="rect" href="epydoc.docparser-module.html#rhs_to_valuedoc" title="docparser.rhs_to_valuedoc()" alt="" coords="59,454,294,486" />
+<area shape="rect" href="epydoc.docstringparser-module.html#parse_function_signature" title="docstringparser.parse_function_signature()" alt="" coords="6,510,347,542" />
+</map>
+  <img src="call_graph_for___init__.gif" alt='' usemap="#call_graph_for___init__" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Construct a new <code>APIDoc</code> object.  Keyword arguments may be 
+  used to initialize the new <code>APIDoc</code>'s attributes.</p>
+  <dl class="fields">
+    <dt>Raises:</dt>
+    <dd><ul class="nomargin-top">
+        <li><code><strong class='fraise'>TypeError</strong></code> - If a keyword argument is specified that does not correspond to a 
+        valid attribute for this (sub)class of <code>APIDoc</code>.</li>
+    </ul></dd>
+    <dt>Overrides:
+        object.__init__
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="_debug_setattr"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">_debug_setattr</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">attr</span>,
+        <span class="sig-arg">val</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.apidoc-pysrc.html#APIDoc._debug_setattr">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Modify an <code>APIDoc</code>'s attribute.  This is used when <a 
+  href="epydoc-module.html#DEBUG" class="link">epydoc.DEBUG</a> is true, to
+  make sure we don't accidentally set any inappropriate attributes on 
+  <code>APIDoc</code> objects.</p>
+  <dl class="fields">
+    <dt>Raises:</dt>
+    <dd><ul class="nomargin-top">
+        <li><code><strong class='fraise'>AttributeError</strong></code> - If <code>attr</code> is not a valid attribute for this (sub)class 
+        of <code>APIDoc</code>.  (<code>attr</code> is considered a valid 
+        attribute iff <code>self.__class__</code> defines an attribute with
+        that name.)</li>
+    </ul></dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="__setattr__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__setattr__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">attr</span>,
+        <span class="sig-arg">val</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.apidoc-pysrc.html#APIDoc._debug_setattr">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Modify an <code>APIDoc</code>'s attribute.  This is used when <a 
+  href="epydoc-module.html#DEBUG" class="link">epydoc.DEBUG</a> is true, to
+  make sure we don't accidentally set any inappropriate attributes on 
+  <code>APIDoc</code> objects.</p>
+  <dl class="fields">
+    <dt>Raises:</dt>
+    <dd><ul class="nomargin-top">
+        <li><code><strong class='fraise'>AttributeError</strong></code> - If <code>attr</code> is not a valid attribute for this (sub)class 
+        of <code>APIDoc</code>.  (<code>attr</code> is considered a valid 
+        attribute iff <code>self.__class__</code> defines an attribute with
+        that name.)</li>
+    </ul></dd>
+    <dt>Overrides:
+        object.__setattr__
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="__repr__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__repr__</span>(<span class="sig-arg">self</span>)</span>
+    <br /><em class="fname">(Representation operator)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.apidoc-pysrc.html#APIDoc.__repr__">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <pre class="literalblock">
+repr(x)
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+        object.__repr__
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="__str__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__str__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">doublespace</span>=<span class="sig-default">0</span>,
+        <span class="sig-arg">depth</span>=<span class="sig-default">5</span>,
+        <span class="sig-arg">exclude</span>=<span class="sig-default"><code class="variable-group">(</code><code class="variable-group">)</code></span>,
+        <span class="sig-arg">include</span>=<span class="sig-default"><code class="variable-group">(</code><code class="variable-group">)</code></span>)</span>
+    <br /><em class="fname">(Informal representation operator)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.apidoc-pysrc.html#APIDoc.pp">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Return a pretty-printed string representation for the information 
+  contained in this <code>APIDoc</code>.</p>
+  <dl class="fields">
+    <dt>Overrides:
+        object.__str__
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="specialize_to"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">specialize_to</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">cls</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.apidoc-pysrc.html#APIDoc.specialize_to">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_specialize_to-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_specialize_to-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_specialize_to" name="call_graph_for_specialize_to">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__init__" title="__init__()" alt="" coords="596,118,692,150" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#specialize_to" title="specialize_to()" alt="" coords="353,146,484,178" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#__init__" title="NamespaceDoc.__init__()" alt="" coords="535,174,753,206" />
+<area shape="rect" href="epydoc.docbuilder-module.html#merge_docs" title="docbuilder.merge_docs()" alt="" coords="51,6,259,38" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#introspect_class" title="docintrospecter.introspect_class()" alt="" coords="19,62,291,94" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#introspect_module" title="docintrospecter.introspect_module()" alt="" coords="9,118,300,150" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#introspect_other" title="docintrospecter.introspect_other()" alt="" coords="17,174,292,206" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#introspect_property" title="docintrospecter.introspect_property()" alt="" coords="5,230,304,262" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#introspect_routine" title="docintrospecter.introspect_routine()" alt="" coords="11,286,299,318" />
+</map>
+  <img src="call_graph_for_specialize_to.gif" alt='' usemap="#call_graph_for_specialize_to" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Change <code>self</code>'s class to <code>cls</code>.  
+  <code>cls</code> must be a subclass of <code>self</code>'s current class.
+  For example, if a generic <code>ValueDoc</code> was created for a value, 
+  and it is determined that the value is a routine, you can update its 
+  class with:</p>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>valdoc.specialize_to(RoutineDoc)</pre>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="__hash__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__hash__</span>(<span class="sig-arg">self</span>)</span>
+    <br /><em class="fname">(Hashing function)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.apidoc-pysrc.html#APIDoc.__hash__">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for___hash__-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for___hash__-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for___hash__" name="call_graph_for___hash__">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__hash__" title="__hash__()" alt="" coords="579,511,686,543" />
+<area shape="rect" href="epydoc.apidoc.ClassDoc-class.html#_dfs_bases" title="ClassDoc._dfs_bases()" alt="" coords="172,7,364,39" />
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#container" title="DocIndex.container()" alt="" coords="178,63,359,95" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#_init_grouping" title="NamespaceDoc._init_grouping()" alt="" coords="135,119,402,151" />
+<area shape="rect" href="epydoc.apidoc-module.html#reachable_valdocs" title="reachable_valdocs()" alt="" coords="182,175,355,207" />
+<area shape="rect" href="epydoc.docbuilder-module.html#assign_canonical_names" title="docbuilder.assign_canonical_names()" alt="" coords="118,231,419,263" />
+<area shape="rect" href="epydoc.docbuilder-module.html#build_doc_index" title="docbuilder.build_doc_index()" alt="" coords="147,287,390,319" />
+<area shape="rect" href="epydoc.docstringparser-module.html#parse_docstring" title="docstringparser.parse_docstring()" alt="" coords="132,343,404,375" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_add_attribute_edge" title="docwriter.dotgraph.DotGraphUmlClassNode._add_attribute_edge()" alt="" coords="6,399,531,431" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#add_valdoc_nodes" title="docwriter.dotgraph.add_valdoc_nodes()" alt="" coords="108,455,428,487" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#class_tree_graph" title="docwriter.dotgraph.class_tree_graph()" alt="" coords="115,511,422,543" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#import_graph" title="docwriter.dotgraph.import_graph()" alt="" coords="128,567,408,599" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#uml_class_tree_graph" title="docwriter.dotgraph.uml_class_tree_graph()" alt="" coords="96,623,440,655" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#__init__" title="docwriter.html.HTMLWriter.__init__()" alt="" coords="110,679,427,711" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_url" title="docwriter.html.HTMLWriter._url()" alt="" coords="126,735,411,767" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#pysrc_url" title="docwriter.html.HTMLWriter.pysrc_url()" alt="" coords="106,791,431,823" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_class_tree" title="docwriter.html.HTMLWriter.write_class_tree()" alt="" coords="80,847,456,879" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_inheritance_list" title="docwriter.html.HTMLWriter.write_inheritance_list()" alt="" coords="60,903,476,935" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_module_tree" title="docwriter.html.HTMLWriter.write_module_tree()" alt="" coords="71,959,466,991" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_summary_group" title="docwriter.html.HTMLWriter.write_summary_group()" alt="" coords="56,1015,480,1047" />
+</map>
+  <img src="call_graph_for___hash__.gif" alt='' usemap="#call_graph_for___hash__" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <pre class="literalblock">
+hash(x)
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+        object.__hash__
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="is_detailed"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">is_detailed</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.apidoc-pysrc.html#APIDoc.is_detailed">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_is_detailed-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_is_detailed-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_is_detailed" name="call_graph_for_is_detailed">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#is_detailed" title="is_detailed()" alt="" coords="271,62,385,94" />
+<area shape="rect" href="epydoc.apidoc.PropertyDoc-class.html#is_detailed" title="PropertyDoc.is_detailed()" alt="" coords="7,6,220,38" />
+<area shape="rect" href="epydoc.apidoc.RoutineDoc-class.html#is_detailed" title="RoutineDoc.is_detailed()" alt="" coords="9,62,217,94" />
+<area shape="rect" href="epydoc.apidoc.VariableDoc-class.html#is_detailed" title="VariableDoc.is_detailed()" alt="" coords="5,118,221,150" />
+</map>
+  <img src="call_graph_for_is_detailed.gif" alt='' usemap="#call_graph_for_is_detailed" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Does this object deserve a box with extra details?</p>
+  <dl class="fields">
+    <dt>Returns: <code>bool</code></dt>
+        <dd>True if the object needs extra details, else False.</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="merge_and_overwrite"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">merge_and_overwrite</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">other</span>,
+        <span class="sig-arg">ignore_hash_conflict</span>=<span class="sig-default">False</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.apidoc-pysrc.html#APIDoc.merge_and_overwrite">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_merge_and_overw-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_merge_and_overw-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_merge_and_overw" name="call_graph_for_merge_and_overw">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__cmp__" title="__cmp__()" alt="" coords="508,6,612,38" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#merge_and_overwrite" title="merge_and_overwrite()" alt="" coords="262,6,459,38" />
+<area shape="rect" href="epydoc.docbuilder-module.html#merge_docs" title="docbuilder.merge_docs()" alt="" coords="6,6,214,38" />
+</map>
+  <img src="call_graph_for_merge_and_overw.gif" alt='' usemap="#call_graph_for_merge_and_overw" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Combine <code>self</code> and <code>other</code> into a <a 
+  name="index-merged_object"></a><i class="indexterm">merged object</i>, 
+  such that any changes made to one will affect the other.  Any attributes 
+  that <code>other</code> had before merging will be discarded. This is 
+  accomplished by copying <code>self.__dict__</code> over 
+  <code>other.__dict__</code> and <code>self.__class__</code> over 
+  <code>other.__class__</code>.</p>
+  <p>Care must be taken with this method, since it modifies the hash value 
+  of <code>other</code>.  To help avoid the problems that this can cause, 
+  <code>merge_and_overwrite</code> will raise an exception if 
+  <code>other</code> has ever been hashed, unless 
+  <code>ignore_hash_conflict</code> is True.  Note that adding 
+  <code>other</code> to a dictionary, set, or similar data structure will 
+  implicitly cause it to be hashed. If you do set 
+  <code>ignore_hash_conflict</code> to True, then any existing data 
+  structures that rely on <code>other</code>'s hash staying constant may 
+  become corrupted.</p>
+  <dl class="fields">
+    <dt>Returns:</dt>
+        <dd><code>self</code></dd>
+    <dt>Raises:</dt>
+    <dd><ul class="nomargin-top">
+        <li><code><strong class='fraise'>ValueError</strong></code> - If <code>other</code> has ever been hashed.</li>
+    </ul></dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="apidoc_links"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">apidoc_links</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">**filters</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.apidoc-pysrc.html#APIDoc.apidoc_links">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Return a list of all <code>APIDoc</code>s that are directly linked 
+  from this <code>APIDoc</code> (i.e., are contained or pointed to by one 
+  or more of this <code>APIDoc</code>'s attributes.)</p>
+  <p>Keyword argument <code>filters</code> can be used to selectively 
+  exclude certain categories of attribute value.  For example, using 
+  <code>includes=False</code> will exclude variables that were imported 
+  from other modules; and <code>subclasses=False</code> will exclude 
+  subclasses.  The filter categories currently supported by epydoc are:</p>
+  <ul>
+    <li>
+      <code>imports</code>: Imported variables.
+    </li>
+    <li>
+      <code>packages</code>: Containing packages for modules.
+    </li>
+    <li>
+      <code>submodules</code>: Contained submodules for packages.
+    </li>
+    <li>
+      <code>bases</code>: Bases for classes.
+    </li>
+    <li>
+      <code>subclasses</code>: Subclasses for classes.
+    </li>
+    <li>
+      <code>variables</code>: All variables.
+    </li>
+    <li>
+      <code>private</code>: Private variables.
+    </li>
+    <li>
+      <code>overrides</code>: Points from class variables to the variables 
+      they override.  This filter is False by default.
+    </li>
+  </ul>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== CLASS VARIABLE DETAILS ==================== -->
+<a name="section-ClassVariableDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Class Variable Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-ClassVariableDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="__mergeset"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">__mergeset</h3>
+  <p>The set of all <code>APIDoc</code> objects that have been merged with 
+  this <code>APIDoc</code> (using <a 
+  href="epydoc.apidoc.APIDoc-class.html#merge_and_overwrite" 
+  class="link">merge_and_overwrite()</a>).  Each <code>APIDoc</code> in 
+  this set shares a common instance dictionary (<code>__dict__</code>).</p>
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+None
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== INSTANCE VARIABLE DETAILS ==================== -->
+<a name="section-InstanceVariableDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Variable Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceVariableDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="metadata"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">metadata</h3>
+  Metadata about the documented item, extracted from fields in its 
+  docstring.  <i>Currently</i> this is encoded as a list of tuples 
+  <code>(field, arg, descr)</code>.  But that may change.
+  <dl class="fields">
+    <dt>Type:</dt>
+      <dd><code>(str, str, <a href="epydoc.markup.ParsedDocstring-class.html" 
+      class="link">ParsedDocstring</a>)</code></dd>
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+_Sentinel('UNKNOWN')
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="extra_docstring_fields"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">extra_docstring_fields</h3>
+  A list of new docstring fields tags that are defined by the documented 
+  item's docstring.  These new field tags can be used by this item or by 
+  any item it contains.
+  <dl class="fields">
+    <dt>Type:</dt>
+      <dd><a href="epydoc.docstringparser.DocstringField-class.html" 
+      class="link">DocstringField</a></dd>
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+_Sentinel('UNKNOWN')
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="docs_extracted_by"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">docs_extracted_by</h3>
+  Information about where the information contained by this 
+  <code>APIDoc</code> came from.  Can be one of <code>'parser'</code>, 
+  <code>'introspector'</code>, or <code>'both'</code>.
+  <dl class="fields">
+    <dt>Type:</dt>
+      <dd><code>str</code></dd>
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+_Sentinel('UNKNOWN')
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:06:57 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.apidoc.ClassDoc-class.html b/doc/api/epydoc.apidoc.ClassDoc-class.html
new file mode 100644
index 0000000..b94e686
--- /dev/null
+++ b/doc/api/epydoc.apidoc.ClassDoc-class.html
@@ -0,0 +1,1001 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.apidoc.ClassDoc</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.apidoc-module.html">Module apidoc</a> ::
+        Class ClassDoc
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.apidoc.ClassDoc-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class ClassDoc</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.apidoc-pysrc.html#ClassDoc">source code</a></span></p>
+<center>
+<center>  <map id="uml_class_diagram_for_epydoc_a_2" name="uml_class_diagram_for_epydoc_a_2">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#docstring" title="The documented item's docstring." alt="" coords="419,28,792,47" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#docstring_lineno" title="The line number on which the documented item's docstring begins." alt="" coords="419,47,792,65" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#other_docs" title="A flag indicating if the entire docstring body (except tags if any) is  entirely included in the summary." alt="" coords="419,65,792,84" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#metadata" title="Metadata about the documented item, extracted from fields in its docstring." alt="" coords="419,84,792,103" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#docs_extracted_by" title="Information about where the information contained by this APIDoc came from." alt="" coords="419,103,792,121" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__setattr__" title="Modify an APIDoc's attribute." alt="" coords="419,124,792,143" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#pp" title="Return a pretty-printed string representation for the information contained in this APIDoc." alt="" coords="419,143,792,161" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__str__" title="Return a pretty-printed string representation for the information contained in this APIDoc." alt="" coords="419,161,792,180" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#specialize_to" title="Change self's class to cls." alt="" coords="419,180,792,199" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__hash__" title="hash(x)" alt="" coords="419,199,792,217" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__cmp__" title="epydoc.apidoc.APIDoc.__cmp__" alt="" coords="419,217,792,236" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#merge_and_overwrite" title="Combine self and other into a merged object, such that any changes made to  one will affect the other." alt="" coords="419,236,792,255" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html" title="API documentation information for a single element of a Python program." alt="" coords="407,5,804,261" />
+<area shape="rect" href="epydoc.markup.ParsedDocstring-class.html" title="A standard intermediate representation for parsed docstrings that can be used to generate output." alt="" coords="5,408,189,445" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#descr" title="epydoc.apidoc.APIDoc.descr" alt="" coords="149,273,182,287" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#descr" title="descr" alt="" coords="413,168,421,176" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#descr" title="descr" alt="" coords="93,409,101,417" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#summary" title="epydoc.apidoc.APIDoc.summary" alt="" coords="245,273,301,287" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#summary" title="summary" alt="" coords="413,185,421,193" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#summary" title="summary" alt="" coords="101,409,109,417" />
+<area shape="rect" href="epydoc.docstringparser.DocstringField-class.html" title="A simple docstring field, which can be used to describe specific information about an object, such as its author or its version." alt="" coords="219,408,435,445" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#extra_docstring_fields" title="epydoc.apidoc.APIDoc.extra_docstring_fields" alt="" coords="472,273,603,287" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#extra_docstring_fields" title="extra_docstring_fields" alt="" coords="479,252,487,260" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#extra_docstring_fields" title="extra_docstring_fields" alt="" coords="335,409,343,417" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#pyval" title="A pointer to the actual Python object described by this ValueDoc." alt="" coords="476,321,735,340" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#parse_repr" title="A text representation of this value, extracted from parsing its source  code." alt="" coords="476,340,735,359" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#REPR_MAXLINES" title="The maximum number of lines of text that should be generated by  pyval_repr()." alt="" coords="476,359,735,377" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#REPR_LINELEN" title="The maximum number of characters for lines of text that should be generated by pyval_repr()." alt="" coords="476,377,735,396" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#SUMMARY_REPR_LINELEN" title="The maximum number of characters for the single-line text representation  generated by summary_pyval_repr()." alt="" coords="476,396,735,415" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#REPR_MIN_SCORE" title="The minimum score that a value representation based on pyval should have in order to be used instead of parse_repr as the canonical representation for  this ValueDoc's value." alt="" coords="476,415,735,433" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#toktree" title="This is currently used to extract values from __all__, etc, in the  docparser module; maybe I should specialize process_assignment and extract  it there?  Although, for __all__, it's not clear where I'd put the value,  since I just use it to set private/public/imported attribs on other vars  (that might not exist yet at the time.)" alt="" coords="476,433,735,452" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#__repr__" title="repr(x)" alt="" coords="476,455,735,473" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#__setstate__" title="epydoc.apidoc.ValueDoc.__setstate__" alt="" coords="476,473,735,492" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#__getstate__" title="State serializer for the pickle module." alt="" coords="476,492,735,511" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#pyval_repr" title="Return a formatted representation of the Python object described by this  ValueDoc." alt="" coords="476,511,735,529" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#summary_pyval_repr" title="Return a single-line formatted representation of the Python object  described by this ValueDoc." alt="" coords="476,529,735,548" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html" title="API documentation information about a single Python value." alt="" coords="464,299,747,555" />
+<area shape="rect" href="epydoc.apidoc.ClassDoc-class.html#apidoc_links" title="Return a list of all APIDocs that are directly linked from this APIDoc  (i.e., are contained or pointed to by one or more of this APIDoc's  attributes.)" alt="" coords="257,841,953,860" />
+<area shape="rect" href="epydoc.apidoc.ClassDoc-class.html#is_type" title="epydoc.apidoc.ClassDoc.is_type" alt="" coords="257,860,953,879" />
+<area shape="rect" href="epydoc.apidoc.ClassDoc-class.html#is_exception" title="epydoc.apidoc.ClassDoc.is_exception" alt="" coords="257,879,953,897" />
+<area shape="rect" href="epydoc.apidoc.ClassDoc-class.html#is_newstyle_class" title="epydoc.apidoc.ClassDoc.is_newstyle_class" alt="" coords="257,897,953,916" />
+<area shape="rect" href="epydoc.apidoc.ClassDoc-class.html#mro" title="epydoc.apidoc.ClassDoc.mro" alt="" coords="257,916,953,935" />
+<area shape="rect" href="epydoc.apidoc.ClassDoc-class.html#select_variables" title="Return a specified subset of this class's sorted_variables list." alt="" coords="257,935,953,953" />
+<area shape="rect" href="epydoc.apidoc.ClassDoc-class.html" title="API documentation information about a single class." alt="" coords="245,811,965,960" />
+<area shape="rect" href="epydoc.apidoc.ClassDoc-class.html#bases" title="epydoc.apidoc.ClassDoc.bases" alt="" coords="994,878,1030,893" />
+<area shape="rect" href="epydoc.apidoc.ClassDoc-class.html#bases" title="*" alt="" coords="971,897,976,911" />
+<area shape="rect" href="epydoc.apidoc.ClassDoc-class.html#bases" title="bases" alt="" coords="951,869,959,877" />
+<area shape="rect" href="epydoc.apidoc.ClassDoc-class.html#bases" title="*" alt="" coords="951,893,959,901" />
+<area shape="rect" href="epydoc.apidoc.ClassDoc-class.html#subclasses" title="epydoc.apidoc.ClassDoc.subclasses" alt="" coords="1031,878,1097,893" />
+<area shape="rect" href="epydoc.apidoc.ClassDoc-class.html#subclasses" title="*" alt="" coords="971,914,976,929" />
+<area shape="rect" href="epydoc.apidoc.ClassDoc-class.html#subclasses" title="subclasses" alt="" coords="951,852,959,860" />
+<area shape="rect" href="epydoc.apidoc.ClassDoc-class.html#subclasses" title="*" alt="" coords="951,911,959,919" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html" title="A sequence of identifiers, separated by periods, used to name a Python variable, value, or argument." alt="" coords="217,664,329,701" />
+<area shape="rect" href="epydoc.apidoc.ModuleDoc-class.html" title="API documentation information about a single module." alt="" coords="375,664,479,701" />
+<area shape="rect" href="epydoc.apidoc.VariableDoc-class.html" title="API documentation information about a single Python variable." alt="" coords="1145,867,1255,904" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#sort_spec" title="The order in which variables should be listed, encoded as a list of names." alt="" coords="520,615,689,633" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#group_specs" title="The groups that are defined by this namespace's docstrings." alt="" coords="520,633,689,652" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#__init__" title="Construct a new APIDoc object." alt="" coords="520,655,689,673" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#is_detailed" title="Does this object deserve a box with extra details?" alt="" coords="520,673,689,692" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#init_sorted_variables" title="Initialize the sorted_variables attribute, based on the variables and  sort_spec attributes." alt="" coords="520,692,689,711" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#init_variable_groups" title="Initialize the variable_groups attribute, based on the sorted_variables and group_specs attributes." alt="" coords="520,711,689,729" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#group_names" title="Return a list of the group names defined by this namespace, in the order in which they should be listed, with no duplicates." alt="" coords="520,729,689,748" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#report_unused_groups" title="Issue a warning for any @group items that were not used by  _init_grouping()." alt="" coords="520,748,689,767" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html" title="API documentation information about a singe Python namespace value." alt="" coords="508,592,737,773" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#variables" title="epydoc.apidoc.NamespaceDoc.variables" alt="" coords="1069,785,1123,799" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#variables" title="variables" alt="" coords="724,693,732,701" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#variables" title="variables" alt="" coords="1187,868,1195,876" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#sorted_variables" title="epydoc.apidoc.NamespaceDoc.sorted_variables" alt="" coords="903,785,1001,799" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#sorted_variables" title="*" alt="" coords="1187,845,1192,859" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#sorted_variables" title="sorted_variables" alt="" coords="687,721,695,729" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#sorted_variables" title="*" alt="" coords="1188,868,1196,876" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#variable_groups" title="epydoc.apidoc.NamespaceDoc.variable_groups" alt="" coords="1143,785,1239,799" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#variable_groups" title="*" alt="" coords="1192,845,1197,859" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#variable_groups" title="variable_groups" alt="" coords="724,737,732,745" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#variable_groups" title="*" alt="" coords="1191,868,1199,876" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#proxy_for" title="epydoc.apidoc.ValueDoc.proxy_for" alt="" coords="317,566,373,581" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#proxy_for" title="proxy_for" alt="" coords="471,539,479,547" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#proxy_for" title="proxy_for" alt="" coords="269,665,277,673" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#canonical_name" title="epydoc.apidoc.ValueDoc.canonical_name" alt="" coords="397,566,494,581" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#canonical_name" title="canonical_name" alt="" coords="471,537,479,545" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#canonical_name" title="canonical_name" alt="" coords="283,665,291,673" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#defining_module" title="epydoc.apidoc.ValueDoc.defining_module" alt="" coords="504,566,603,581" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#defining_module" title="defining_module" alt="" coords="507,545,515,553" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#defining_module" title="defining_module" alt="" coords="431,665,439,673" />
+</map>
+  <img src="uml_class_diagram_for_epydoc_a_2.gif" alt='' usemap="#uml_class_diagram_for_epydoc_a_2" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<p>API documentation information about a single class.</p>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.apidoc.ClassDoc-class.html#apidoc_links" class="summary-sig-name">apidoc_links</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">**filters</span>)</span><br />
+      Return a list of all <code>APIDoc</code>s that are directly linked 
+      from this <code>APIDoc</code> (i.e., are contained or pointed to by 
+      one or more of this <code>APIDoc</code>'s attributes.)</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.apidoc-pysrc.html#ClassDoc.apidoc_links">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_apidoc_links_2-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_apidoc_links_2-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_apidoc_links_2" name="call_graph_for_apidoc_links_2">
+<area shape="rect" href="epydoc.apidoc.ClassDoc-class.html#apidoc_links" title="apidoc_links()" alt="" coords="359,34,487,66" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#apidoc_links" title="NamespaceDoc.apidoc_links()" alt="" coords="538,34,788,66" />
+<area shape="rect" href="epydoc.apidoc-module.html#reachable_valdocs" title="reachable_valdocs()" alt="" coords="71,6,244,38" />
+<area shape="rect" href="epydoc.docbuilder-module.html#assign_canonical_names" title="docbuilder.assign_canonical_names()" alt="" coords="7,62,308,94" />
+</map>
+  <img src="call_graph_for_apidoc_links_2.gif" alt='' usemap="#call_graph_for_apidoc_links_2" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="is_type"></a><span class="summary-sig-name">is_type</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.apidoc-pysrc.html#ClassDoc.is_type">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_is_type-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_is_type-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_is_type" name="call_graph_for_is_type">
+<area shape="rect" href="epydoc.apidoc.ClassDoc-class.html#is_type" title="is_type()" alt="" coords="393,34,481,66" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__cmp__" title="DottedName.__cmp__()" alt="" coords="532,6,735,38" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__init__" title="DottedName.__init__()" alt="" coords="535,62,732,94" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_class" title="docwriter.html.HTMLWriter.write_class()" alt="" coords="5,34,344,66" />
+</map>
+  <img src="call_graph_for_is_type.gif" alt='' usemap="#call_graph_for_is_type" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="is_exception"></a><span class="summary-sig-name">is_exception</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.apidoc-pysrc.html#ClassDoc.is_exception">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_is_exception-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_is_exception-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_is_exception" name="call_graph_for_is_exception">
+<area shape="rect" href="epydoc.apidoc.ClassDoc-class.html#is_exception" title="is_exception()" alt="" coords="393,34,521,66" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__cmp__" title="DottedName.__cmp__()" alt="" coords="572,6,775,38" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__init__" title="DottedName.__init__()" alt="" coords="575,62,772,94" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_class" title="docwriter.html.HTMLWriter.write_class()" alt="" coords="5,34,344,66" />
+</map>
+  <img src="call_graph_for_is_exception.gif" alt='' usemap="#call_graph_for_is_exception" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="is_newstyle_class"></a><span class="summary-sig-name">is_newstyle_class</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.apidoc-pysrc.html#ClassDoc.is_newstyle_class">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_is_newstyle_cla-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_is_newstyle_cla-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_is_newstyle_cla" name="call_graph_for_is_newstyle_cla">
+<area shape="rect" href="epydoc.apidoc.ClassDoc-class.html#is_newstyle_class" title="is_newstyle_class()" alt="" coords="119,34,287,66" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__cmp__" title="DottedName.__cmp__()" alt="" coords="338,6,540,38" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__init__" title="DottedName.__init__()" alt="" coords="340,62,538,94" />
+<area shape="rect" href="epydoc.apidoc.ClassDoc-class.html#mro" title="mro()" alt="" coords="6,34,70,66" />
+</map>
+  <img src="call_graph_for_is_newstyle_cla.gif" alt='' usemap="#call_graph_for_is_newstyle_cla" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="mro"></a><span class="summary-sig-name">mro</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">warn_about_bad_bases</span>=<span class="summary-sig-default">False</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.apidoc-pysrc.html#ClassDoc.mro">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_mro-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_mro-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_mro" name="call_graph_for_mro">
+<area shape="rect" href="epydoc.apidoc.ClassDoc-class.html#_c3_mro" title="_c3_mro()" alt="" coords="619,62,720,94" />
+<area shape="rect" href="epydoc.apidoc.ClassDoc-class.html#_dfs_bases" title="_dfs_bases()" alt="" coords="611,118,728,150" />
+<area shape="rect" href="epydoc.apidoc.ClassDoc-class.html#is_newstyle_class" title="is_newstyle_class()" alt="" coords="585,174,753,206" />
+<area shape="rect" href="epydoc.apidoc.ClassDoc-class.html#mro" title="mro()" alt="" coords="472,118,536,150" />
+<area shape="rect" href="epydoc.docbuilder-module.html#find_overrides" title="docbuilder.find_overrides()" alt="" coords="101,6,328,38" />
+<area shape="rect" href="epydoc.docbuilder-module.html#inherit_docs" title="docbuilder.inherit_docs()" alt="" coords="109,62,320,94" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#uml_class_tree_graph" title="docwriter.dotgraph.uml_class_tree_graph()" alt="" coords="43,118,387,150" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_class_tree" title="docwriter.html.HTMLWriter.write_class_tree()" alt="" coords="27,174,403,206" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_inheritance_list" title="docwriter.html.HTMLWriter.write_inheritance_list()" alt="" coords="7,230,423,262" />
+</map>
+  <img src="call_graph_for_mro.gif" alt='' usemap="#call_graph_for_mro" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_dfs_bases"></a><span class="summary-sig-name">_dfs_bases</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">mro</span>,
+        <span class="summary-sig-arg">seen</span>,
+        <span class="summary-sig-arg">warn_about_bad_bases</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.apidoc-pysrc.html#ClassDoc._dfs_bases">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__dfs_bases-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__dfs_bases-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__dfs_bases" name="call_graph_for__dfs_bases">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__hash__" title="APIDoc.__hash__()" alt="" coords="284,30,455,62" />
+<area shape="rect" href="epydoc.apidoc.ClassDoc-class.html#_dfs_bases" title="_dfs_bases()" alt="" coords="117,30,235,62" />
+<area shape="rect" href="epydoc.apidoc.ClassDoc-class.html#mro" title="mro()" alt="" coords="5,30,69,62" />
+</map>
+  <img src="call_graph_for__dfs_bases.gif" alt='' usemap="#call_graph_for__dfs_bases" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.apidoc.ClassDoc-class.html#_c3_mro" class="summary-sig-name" onclick="show_private();">_c3_mro</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">warn_about_bad_bases</span>)</span><br />
+      Compute the class precedence list (mro) according to C3.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.apidoc-pysrc.html#ClassDoc._c3_mro">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__c3_mro-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__c3_mro-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__c3_mro" name="call_graph_for__c3_mro">
+<area shape="rect" href="epydoc.apidoc.ClassDoc-class.html#_c3_merge" title="_c3_merge()" alt="" coords="268,6,385,38" />
+<area shape="rect" href="epydoc.apidoc.ClassDoc-class.html#_c3_mro" title="_c3_mro()" alt="" coords="117,6,219,38" />
+<area shape="rect" href="epydoc.apidoc.ClassDoc-class.html#mro" title="mro()" alt="" coords="5,6,69,38" />
+</map>
+  <img src="call_graph_for__c3_mro.gif" alt='' usemap="#call_graph_for__c3_mro" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_report_bad_base"></a><span class="summary-sig-name">_report_bad_base</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">base</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.apidoc-pysrc.html#ClassDoc._report_bad_base">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_c3_merge"></a><span class="summary-sig-name">_c3_merge</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">seqs</span>)</span><br />
+      Helper function for <a 
+      href="epydoc.apidoc.ClassDoc-class.html#_c3_mro" class="link" 
+      onclick="show_private();">_c3_mro</a>.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.apidoc-pysrc.html#ClassDoc._c3_merge">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__c3_merge-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__c3_merge-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__c3_merge" name="call_graph_for__c3_merge">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__cmp__" title="APIDoc.__cmp__()" alt="" coords="323,6,494,38" />
+<area shape="rect" href="epydoc.apidoc.ClassDoc-class.html#_c3_merge" title="_c3_merge()" alt="" coords="156,6,274,38" />
+<area shape="rect" href="epydoc.apidoc.ClassDoc-class.html#_c3_mro" title="_c3_mro()" alt="" coords="6,6,107,38" />
+</map>
+  <img src="call_graph_for__c3_merge.gif" alt='' usemap="#call_graph_for__c3_merge" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.apidoc.ClassDoc-class.html#select_variables" class="summary-sig-name">select_variables</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">group</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">value_type</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">inherited</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">public</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">imported</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">detailed</span>=<span class="summary-sig-default">None</span>)</span><br />
+      Return a specified subset of this class's <a 
+      href="epydoc.apidoc.NamespaceDoc-class.html#sorted_variables" 
+      class="link">sorted_variables</a> list.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.apidoc-pysrc.html#ClassDoc.select_variables">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_select_variable-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_select_variable-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_select_variable" name="call_graph_for_select_variable">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__cmp__" title="APIDoc.__cmp__()" alt="" coords="697,6,868,38" />
+<area shape="rect" href="epydoc.apidoc.ClassDoc-class.html#select_variables" title="select_variables()" alt="" coords="473,34,625,66" />
+<area shape="rect" href="epydoc.apidoc.VariableDoc-class.html#is_detailed" title="VariableDoc.is_detailed()" alt="" coords="675,62,891,94" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_details_list" title="docwriter.html.HTMLWriter.write_details_list()" alt="" coords="24,6,405,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_summary_table" title="docwriter.html.HTMLWriter.write_summary_table()" alt="" coords="7,62,423,94" />
+</map>
+  <img src="call_graph_for_select_variable.gif" alt='' usemap="#call_graph_for_select_variable" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.NamespaceDoc-class.html">NamespaceDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.NamespaceDoc-class.html#__init__">__init__</a></code>,
+      <code><a href="epydoc.apidoc.NamespaceDoc-class.html#group_names">group_names</a></code>,
+      <code><a href="epydoc.apidoc.NamespaceDoc-class.html#init_sorted_variables">init_sorted_variables</a></code>,
+      <code><a href="epydoc.apidoc.NamespaceDoc-class.html#init_variable_groups">init_variable_groups</a></code>,
+      <code><a href="epydoc.apidoc.NamespaceDoc-class.html#is_detailed">is_detailed</a></code>,
+      <code><a href="epydoc.apidoc.NamespaceDoc-class.html#report_unused_groups">report_unused_groups</a></code>
+      </p>
+    <div class="private">    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.NamespaceDoc-class.html">NamespaceDoc</a></code></b> (private):
+      <code><a href="epydoc.apidoc.NamespaceDoc-class.html#_init_grouping" onclick="show_private();">_init_grouping</a></code>
+      </p></div>
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.ValueDoc-class.html">ValueDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#__getstate__">__getstate__</a></code>,
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#__repr__">__repr__</a></code>,
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#__setstate__">__setstate__</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.APIDoc-class.html">APIDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.APIDoc-class.html#__cmp__">__cmp__</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#__hash__">__hash__</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#__setattr__">__setattr__</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#__str__">__str__</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#merge_and_overwrite">merge_and_overwrite</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#pp">pp</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#specialize_to">specialize_to</a></code>
+      </p>
+    <div class="private">    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.APIDoc-class.html">APIDoc</a></code></b> (private):
+      <code><a href="epydoc.apidoc.APIDoc-class.html#_debug_setattr" onclick="show_private();">_debug_setattr</a></code>
+      </p></div>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>
+      </p>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Value Representation</th></tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.ValueDoc-class.html">ValueDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#pyval_repr">pyval_repr</a></code>,
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#summary_pyval_repr">summary_pyval_repr</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Class Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-ClassVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Value Representation</th></tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.ValueDoc-class.html">ValueDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#REPR_LINELEN">REPR_LINELEN</a></code>,
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#REPR_MAXLINES">REPR_MAXLINES</a></code>,
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#REPR_MIN_SCORE">REPR_MIN_SCORE</a></code>,
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#SUMMARY_REPR_LINELEN">SUMMARY_REPR_LINELEN</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== INSTANCE VARIABLES ==================== -->
+<a name="section-InstanceVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.ValueDoc-class.html">ValueDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#canonical_name">canonical_name</a></code>,
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#toktree">toktree</a></code>
+      </p>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Information about Base Classes</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>list</code> of <a href="epydoc.apidoc.ClassDoc-class.html" 
+      class="link">ClassDoc</a></span>
+    </td><td class="summary">
+        <a name="bases"></a><span class="summary-name">bases</span> = <code title="_Sentinel('UNKNOWN')">_Sentinel('UNKNOWN')</code><br />
+      API documentation for the class's base classes.
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Information about Subclasses</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>list</code> of <a href="epydoc.apidoc.ClassDoc-class.html" 
+      class="link">ClassDoc</a></span>
+    </td><td class="summary">
+        <a name="subclasses"></a><span class="summary-name">subclasses</span> = <code title="_Sentinel('UNKNOWN')">_Sentinel('UNKNOWN')</code><br />
+      API documentation for the class's known subclasses.
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Information about Variables</th></tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.NamespaceDoc-class.html">NamespaceDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.NamespaceDoc-class.html#group_specs">group_specs</a></code>,
+      <code><a href="epydoc.apidoc.NamespaceDoc-class.html#sort_spec">sort_spec</a></code>,
+      <code><a href="epydoc.apidoc.NamespaceDoc-class.html#sorted_variables">sorted_variables</a></code>,
+      <code><a href="epydoc.apidoc.NamespaceDoc-class.html#variable_groups">variable_groups</a></code>,
+      <code><a href="epydoc.apidoc.NamespaceDoc-class.html#variables">variables</a></code>
+      </p>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Value Representation</th></tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.ValueDoc-class.html">ValueDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#parse_repr">parse_repr</a></code>,
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#pyval">pyval</a></code>
+      </p>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Context</th></tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.ValueDoc-class.html">ValueDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#defining_module">defining_module</a></code>
+      </p>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Information about Imported Variables</th></tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.ValueDoc-class.html">ValueDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#proxy_for">proxy_for</a></code>
+      </p>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Docstrings</th></tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.APIDoc-class.html">APIDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.APIDoc-class.html#docstring">docstring</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#docstring_lineno">docstring_lineno</a></code>
+      </p>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Information Extracted from Docstrings</th></tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.APIDoc-class.html">APIDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.APIDoc-class.html#descr">descr</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#extra_docstring_fields">extra_docstring_fields</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#metadata">metadata</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#other_docs">other_docs</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#summary">summary</a></code>
+      </p>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Source Information</th></tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.APIDoc-class.html">APIDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.APIDoc-class.html#docs_extracted_by">docs_extracted_by</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Properties</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Properties"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Method Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-MethodDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="apidoc_links"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">apidoc_links</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">**filters</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.apidoc-pysrc.html#ClassDoc.apidoc_links">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_apidoc_links_2-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_apidoc_links_2-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_apidoc_links_2" name="call_graph_for_apidoc_links_2">
+<area shape="rect" href="epydoc.apidoc.ClassDoc-class.html#apidoc_links" title="apidoc_links()" alt="" coords="359,34,487,66" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#apidoc_links" title="NamespaceDoc.apidoc_links()" alt="" coords="538,34,788,66" />
+<area shape="rect" href="epydoc.apidoc-module.html#reachable_valdocs" title="reachable_valdocs()" alt="" coords="71,6,244,38" />
+<area shape="rect" href="epydoc.docbuilder-module.html#assign_canonical_names" title="docbuilder.assign_canonical_names()" alt="" coords="7,62,308,94" />
+</map>
+  <img src="call_graph_for_apidoc_links_2.gif" alt='' usemap="#call_graph_for_apidoc_links_2" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Return a list of all <code>APIDoc</code>s that are directly linked 
+  from this <code>APIDoc</code> (i.e., are contained or pointed to by one 
+  or more of this <code>APIDoc</code>'s attributes.)</p>
+  <p>Keyword argument <code>filters</code> can be used to selectively 
+  exclude certain categories of attribute value.  For example, using 
+  <code>includes=False</code> will exclude variables that were imported 
+  from other modules; and <code>subclasses=False</code> will exclude 
+  subclasses.  The filter categories currently supported by epydoc are:</p>
+  <ul>
+    <li>
+      <code>imports</code>: Imported variables.
+    </li>
+    <li>
+      <code>packages</code>: Containing packages for modules.
+    </li>
+    <li>
+      <code>submodules</code>: Contained submodules for packages.
+    </li>
+    <li>
+      <code>bases</code>: Bases for classes.
+    </li>
+    <li>
+      <code>subclasses</code>: Subclasses for classes.
+    </li>
+    <li>
+      <code>variables</code>: All variables.
+    </li>
+    <li>
+      <code>private</code>: Private variables.
+    </li>
+    <li>
+      <code>overrides</code>: Points from class variables to the variables 
+      they override.  This filter is False by default.
+    </li>
+  </ul>
+  <dl class="fields">
+    <dt>Overrides:
+        <a href="epydoc.apidoc.APIDoc-class.html#apidoc_links">APIDoc.apidoc_links</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="_c3_mro"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">_c3_mro</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">warn_about_bad_bases</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.apidoc-pysrc.html#ClassDoc._c3_mro">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__c3_mro-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for__c3_mro-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__c3_mro" name="call_graph_for__c3_mro">
+<area shape="rect" href="epydoc.apidoc.ClassDoc-class.html#_c3_merge" title="_c3_merge()" alt="" coords="268,6,385,38" />
+<area shape="rect" href="epydoc.apidoc.ClassDoc-class.html#_c3_mro" title="_c3_mro()" alt="" coords="117,6,219,38" />
+<area shape="rect" href="epydoc.apidoc.ClassDoc-class.html#mro" title="mro()" alt="" coords="5,6,69,38" />
+</map>
+  <img src="call_graph_for__c3_mro.gif" alt='' usemap="#call_graph_for__c3_mro" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Compute the class precedence list (mro) according to C3.</p>
+  <dl class="fields">
+  </dl>
+<div class="fields">      <p><strong>See Also:</strong>
+        <a href="http://www.python.org/2.3/mro.html" 
+        target="_top">http://www.python.org/2.3/mro.html</a>
+      </p>
+</div></td></tr></table>
+</div>
+<a name="select_variables"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">select_variables</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">group</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">value_type</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">inherited</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">public</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">imported</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">detailed</span>=<span class="sig-default">None</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.apidoc-pysrc.html#ClassDoc.select_variables">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_select_variable-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_select_variable-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_select_variable" name="call_graph_for_select_variable">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__cmp__" title="APIDoc.__cmp__()" alt="" coords="697,6,868,38" />
+<area shape="rect" href="epydoc.apidoc.ClassDoc-class.html#select_variables" title="select_variables()" alt="" coords="473,34,625,66" />
+<area shape="rect" href="epydoc.apidoc.VariableDoc-class.html#is_detailed" title="VariableDoc.is_detailed()" alt="" coords="675,62,891,94" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_details_list" title="docwriter.html.HTMLWriter.write_details_list()" alt="" coords="24,6,405,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_summary_table" title="docwriter.html.HTMLWriter.write_summary_table()" alt="" coords="7,62,423,94" />
+</map>
+  <img src="call_graph_for_select_variable.gif" alt='' usemap="#call_graph_for_select_variable" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Return a specified subset of this class's <a 
+  href="epydoc.apidoc.NamespaceDoc-class.html#sorted_variables" 
+  class="link">sorted_variables</a> list.  If <code>value_type</code> is 
+  given, then only return variables whose values have the specified type.  
+  If <code>group</code> is given, then only return variables that belong to
+  the specified group. If <code>inherited</code> is True, then only return 
+  inherited variables; if <code>inherited</code> is False, then only return
+  local variables.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>value_type</code></strong> (<code>string</code>) - A string specifying the value type for which variables should be 
+          returned.  Valid values are:
+          <ul>
+            <li>
+              'instancemethod' - variables whose values are instance 
+              methods.
+            </li>
+            <li>
+              'classmethod' - variables whose values are class methods.
+            </li>
+            <li>
+              'staticmethod' - variables whose values are static methods.
+            </li>
+            <li>
+              'properties' - variables whose values are properties.
+            </li>
+            <li>
+              'class' - variables whose values are nested classes 
+              (including exceptions and types).
+            </li>
+            <li>
+              'instancevariable' - instance variables.  This includes any 
+              variables that are explicitly marked as instance variables 
+              with docstring fields; and variables with docstrings that are
+              initialized in the constructor.
+            </li>
+            <li>
+              'classvariable' - class variables.  This includes any 
+              variables that are not included in any of the above 
+              categories.
+            </li>
+          </ul></li>
+        <li><strong class="pname"><code>group</code></strong> (<code>string</code>) - The name of the group for which variables should be returned.  A 
+          complete list of the groups defined by this <code>ClassDoc</code>
+          is available in the <a 
+          href="epydoc.apidoc.NamespaceDoc-class.html#group_names" 
+          class="link">group_names</a> instance variable.  The first 
+          element of this list is always the special group name 
+          <code>''</code>, which is used for variables that do not belong 
+          to any group.</li>
+        <li><strong class="pname"><code>inherited</code></strong> - If <code>None</code>, then return both inherited and local 
+          variables; if <code>True</code>, then return only inherited 
+          variables; if <code>False</code>, then return only local 
+          variables.</li>
+        <li><strong class="pname"><code>detailed</code></strong> (<code>bool</code>) - If True (False), return only the variables deserving (not 
+          deserving) a detailed informative box. If <code>None</code>, 
+          don't care.</li>
+    </ul></dd>
+  </dl>
+<div class="fields">      <p><strong>Requires:</strong>
+        The <a 
+        href="epydoc.apidoc.NamespaceDoc-class.html#sorted_variables" 
+        class="link">sorted_variables</a> and <a 
+        href="epydoc.apidoc.NamespaceDoc-class.html#variable_groups" 
+        class="link">variable_groups</a> attributes must be initialized 
+        before this method can be used.  See <a 
+        href="epydoc.apidoc.NamespaceDoc-class.html#init_sorted_variables" 
+        class="link">init_sorted_variables()</a> and <a 
+        href="epydoc.apidoc.NamespaceDoc-class.html#init_variable_groups" 
+        class="link">init_variable_groups()</a>.
+      </p>
+</div></td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:07:01 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.apidoc.ClassMethodDoc-class.html b/doc/api/epydoc.apidoc.ClassMethodDoc-class.html
new file mode 100644
index 0000000..43d222e
--- /dev/null
+++ b/doc/api/epydoc.apidoc.ClassMethodDoc-class.html
@@ -0,0 +1,440 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.apidoc.ClassMethodDoc</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.apidoc-module.html">Module apidoc</a> ::
+        Class ClassMethodDoc
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.apidoc.ClassMethodDoc-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class ClassMethodDoc</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.apidoc-pysrc.html#ClassMethodDoc">source code</a></span></p>
+<center>
+<center>  <map id="uml_class_diagram_for_epydoc_a_3" name="uml_class_diagram_for_epydoc_a_3">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#docstring" title="The documented item's docstring." alt="" coords="17,28,391,47" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#docstring_lineno" title="The line number on which the documented item's docstring begins." alt="" coords="17,47,391,65" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#other_docs" title="A flag indicating if the entire docstring body (except tags if any) is  entirely included in the summary." alt="" coords="17,65,391,84" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#metadata" title="Metadata about the documented item, extracted from fields in its docstring." alt="" coords="17,84,391,103" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#docs_extracted_by" title="Information about where the information contained by this APIDoc came from." alt="" coords="17,103,391,121" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__init__" title="Construct a new APIDoc object." alt="" coords="17,124,391,143" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__setattr__" title="Modify an APIDoc's attribute." alt="" coords="17,143,391,161" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#pp" title="Return a pretty-printed string representation for the information contained in this APIDoc." alt="" coords="17,161,391,180" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__str__" title="Return a pretty-printed string representation for the information contained in this APIDoc." alt="" coords="17,180,391,199" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#specialize_to" title="Change self's class to cls." alt="" coords="17,199,391,217" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__hash__" title="hash(x)" alt="" coords="17,217,391,236" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__cmp__" title="epydoc.apidoc.APIDoc.__cmp__" alt="" coords="17,236,391,255" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#merge_and_overwrite" title="Combine self and other into a merged object, such that any changes made to  one will affect the other." alt="" coords="17,255,391,273" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html" title="API documentation information for a single element of a Python program." alt="" coords="5,5,403,280" />
+<area shape="rect" href="epydoc.markup.ParsedDocstring-class.html" title="A standard intermediate representation for parsed docstrings that can be used to generate output." alt="" coords="380,907,564,944" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#descr" title="epydoc.apidoc.APIDoc.descr" alt="" coords="663,603,697,618" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#descr" title="descr" alt="" coords="381,271,389,279" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#descr" title="descr" alt="" coords="547,908,555,916" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#summary" title="epydoc.apidoc.APIDoc.summary" alt="" coords="711,603,767,618" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#summary" title="summary" alt="" coords="388,201,396,209" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#summary" title="summary" alt="" coords="549,913,557,921" />
+<area shape="rect" href="epydoc.docstringparser.DocstringField-class.html" title="A simple docstring field, which can be used to describe specific information about an object, such as its author or its version." alt="" coords="812,436,1028,473" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#extra_docstring_fields" title="epydoc.apidoc.APIDoc.extra_docstring_fields" alt="" coords="805,291,936,306" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#extra_docstring_fields" title="extra_docstring_fields" alt="" coords="388,155,396,163" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#extra_docstring_fields" title="extra_docstring_fields" alt="" coords="909,437,917,445" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#pyval" title="A pointer to the actual Python object described by this ValueDoc." alt="" coords="75,340,333,359" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#parse_repr" title="A text representation of this value, extracted from parsing its source  code." alt="" coords="75,359,333,377" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#REPR_MAXLINES" title="The maximum number of lines of text that should be generated by  pyval_repr()." alt="" coords="75,377,333,396" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#REPR_LINELEN" title="The maximum number of characters for lines of text that should be generated by pyval_repr()." alt="" coords="75,396,333,415" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#SUMMARY_REPR_LINELEN" title="The maximum number of characters for the single-line text representation  generated by summary_pyval_repr()." alt="" coords="75,415,333,433" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#REPR_MIN_SCORE" title="The minimum score that a value representation based on pyval should have in order to be used instead of parse_repr as the canonical representation for  this ValueDoc's value." alt="" coords="75,433,333,452" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#toktree" title="This is currently used to extract values from __all__, etc, in the  docparser module; maybe I should specialize process_assignment and extract  it there?  Although, for __all__, it's not clear where I'd put the value,  since I just use it to set private/public/imported attribs on other vars  (that might not exist yet at the time.)" alt="" coords="75,452,333,471" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#__repr__" title="repr(x)" alt="" coords="75,473,333,492" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#__setstate__" title="epydoc.apidoc.ValueDoc.__setstate__" alt="" coords="75,492,333,511" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#__getstate__" title="State serializer for the pickle module." alt="" coords="75,511,333,529" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#pyval_repr" title="Return a formatted representation of the Python object described by this  ValueDoc." alt="" coords="75,529,333,548" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#summary_pyval_repr" title="Return a single-line formatted representation of the Python object  described by this ValueDoc." alt="" coords="75,548,333,567" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#apidoc_links" title="Return a list of all APIDocs that are directly linked from this APIDoc  (i.e., are contained or pointed to by one or more of this APIDoc's  attributes.)" alt="" coords="75,567,333,585" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html" title="API documentation information about a single Python value." alt="" coords="63,317,345,592" />
+<area shape="rect" href="epydoc.apidoc.ClassMethodDoc-class.html" title="epydoc.apidoc.ClassMethodDoc" alt="" coords="140,904,268,947" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html" title="A sequence of identifiers, separated by periods, used to name a Python variable, value, or argument." alt="" coords="407,729,519,767" />
+<area shape="rect" href="epydoc.apidoc.ModuleDoc-class.html" title="API documentation information about a single module." alt="" coords="548,729,652,767" />
+<area shape="rect" href="epydoc.apidoc.RoutineDoc-class.html#posargs" title="The names of the routine's positional arguments." alt="" coords="77,652,329,671" />
+<area shape="rect" href="epydoc.apidoc.RoutineDoc-class.html#posarg_defaults" title="API documentation for the positional arguments' default values." alt="" coords="77,671,329,689" />
+<area shape="rect" href="epydoc.apidoc.RoutineDoc-class.html#vararg" title="The name of the routine's vararg argument, or None if it has no vararg  argument." alt="" coords="77,689,329,708" />
+<area shape="rect" href="epydoc.apidoc.RoutineDoc-class.html#kwarg" title="The name of the routine's keyword argument, or None if it has no keyword  argument." alt="" coords="77,708,329,727" />
+<area shape="rect" href="epydoc.apidoc.RoutineDoc-class.html#lineno" title="The line number of the first line of the function's signature." alt="" coords="77,727,329,745" />
+<area shape="rect" href="epydoc.apidoc.RoutineDoc-class.html#decorators" title="A list of names of decorators that were applied to this routine, in the  order that they are listed in the source code." alt="" coords="77,745,329,764" />
+<area shape="rect" href="epydoc.apidoc.RoutineDoc-class.html#arg_descrs" title="A list of descriptions of the routine's arguments." alt="" coords="77,764,329,783" />
+<area shape="rect" href="epydoc.apidoc.RoutineDoc-class.html#exception_descrs" title="A list of descriptions of exceptions that the routine might raise." alt="" coords="77,783,329,801" />
+<area shape="rect" href="epydoc.apidoc.RoutineDoc-class.html#callgraph_uid" title="DotGraph.uid of the call graph for the function." alt="" coords="77,801,329,820" />
+<area shape="rect" href="epydoc.apidoc.RoutineDoc-class.html#is_detailed" title="Does this object deserve a box with extra details?" alt="" coords="77,823,329,841" />
+<area shape="rect" href="epydoc.apidoc.RoutineDoc-class.html#all_args" title="Returns:  A list of the names of all arguments (positional, vararg, and keyword), in  order." alt="" coords="77,841,329,860" />
+<area shape="rect" href="epydoc.apidoc.RoutineDoc-class.html" title="API documentation information about a single routine." alt="" coords="65,629,377,867" />
+<area shape="rect" href="epydoc.apidoc.RoutineDoc-class.html#arg_types" title="epydoc.apidoc.RoutineDoc.arg_types" alt="" coords="455,878,515,893" />
+<area shape="rect" href="epydoc.apidoc.RoutineDoc-class.html#arg_types" title="arg_types" alt="" coords="364,800,372,808" />
+<area shape="rect" href="epydoc.apidoc.RoutineDoc-class.html#arg_types" title="arg_types" alt="" coords="461,908,469,916" />
+<area shape="rect" href="epydoc.apidoc.RoutineDoc-class.html#return_descr" title="epydoc.apidoc.RoutineDoc.return_descr" alt="" coords="351,878,427,893" />
+<area shape="rect" href="epydoc.apidoc.RoutineDoc-class.html#return_descr" title="return_descr" alt="" coords="303,857,311,865" />
+<area shape="rect" href="epydoc.apidoc.RoutineDoc-class.html#return_descr" title="return_descr" alt="" coords="392,908,400,916" />
+<area shape="rect" href="epydoc.apidoc.RoutineDoc-class.html#return_type" title="epydoc.apidoc.RoutineDoc.return_type" alt="" coords="257,878,325,893" />
+<area shape="rect" href="epydoc.apidoc.RoutineDoc-class.html#return_type" title="return_type" alt="" coords="227,857,235,865" />
+<area shape="rect" href="epydoc.apidoc.RoutineDoc-class.html#return_type" title="return_type" alt="" coords="387,913,395,921" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#canonical_name" title="epydoc.apidoc.ValueDoc.canonical_name" alt="" coords="381,603,478,618" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#canonical_name" title="canonical_name" alt="" coords="331,563,339,571" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#canonical_name" title="canonical_name" alt="" coords="452,731,460,739" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#proxy_for" title="epydoc.apidoc.ValueDoc.proxy_for" alt="" coords="309,603,365,618" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#proxy_for" title="proxy_for" alt="" coords="269,583,277,591" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#proxy_for" title="proxy_for" alt="" coords="455,731,463,739" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#defining_module" title="epydoc.apidoc.ValueDoc.defining_module" alt="" coords="521,603,620,618" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#defining_module" title="defining_module" alt="" coords="331,499,339,507" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#defining_module" title="defining_module" alt="" coords="592,731,600,739" />
+</map>
+  <img src="uml_class_diagram_for_epydoc_a_3.gif" alt='' usemap="#uml_class_diagram_for_epydoc_a_3" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.RoutineDoc-class.html">RoutineDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.RoutineDoc-class.html#all_args">all_args</a></code>,
+      <code><a href="epydoc.apidoc.RoutineDoc-class.html#is_detailed">is_detailed</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.ValueDoc-class.html">ValueDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#__getstate__">__getstate__</a></code>,
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#__repr__">__repr__</a></code>,
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#__setstate__">__setstate__</a></code>,
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#apidoc_links">apidoc_links</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.APIDoc-class.html">APIDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.APIDoc-class.html#__cmp__">__cmp__</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#__hash__">__hash__</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#__init__">__init__</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#__setattr__">__setattr__</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#__str__">__str__</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#merge_and_overwrite">merge_and_overwrite</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#pp">pp</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#specialize_to">specialize_to</a></code>
+      </p>
+    <div class="private">    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.APIDoc-class.html">APIDoc</a></code></b> (private):
+      <code><a href="epydoc.apidoc.APIDoc-class.html#_debug_setattr" onclick="show_private();">_debug_setattr</a></code>
+      </p></div>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>
+      </p>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Value Representation</th></tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.ValueDoc-class.html">ValueDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#pyval_repr">pyval_repr</a></code>,
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#summary_pyval_repr">summary_pyval_repr</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Class Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-ClassVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Value Representation</th></tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.ValueDoc-class.html">ValueDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#REPR_LINELEN">REPR_LINELEN</a></code>,
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#REPR_MAXLINES">REPR_MAXLINES</a></code>,
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#REPR_MIN_SCORE">REPR_MIN_SCORE</a></code>,
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#SUMMARY_REPR_LINELEN">SUMMARY_REPR_LINELEN</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== INSTANCE VARIABLES ==================== -->
+<a name="section-InstanceVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.RoutineDoc-class.html">RoutineDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.RoutineDoc-class.html#callgraph_uid">callgraph_uid</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.ValueDoc-class.html">ValueDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#canonical_name">canonical_name</a></code>,
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#toktree">toktree</a></code>
+      </p>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Signature</th></tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.RoutineDoc-class.html">RoutineDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.RoutineDoc-class.html#kwarg">kwarg</a></code>,
+      <code><a href="epydoc.apidoc.RoutineDoc-class.html#lineno">lineno</a></code>,
+      <code><a href="epydoc.apidoc.RoutineDoc-class.html#posarg_defaults">posarg_defaults</a></code>,
+      <code><a href="epydoc.apidoc.RoutineDoc-class.html#posargs">posargs</a></code>,
+      <code><a href="epydoc.apidoc.RoutineDoc-class.html#vararg">vararg</a></code>
+      </p>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Decorators</th></tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.RoutineDoc-class.html">RoutineDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.RoutineDoc-class.html#decorators">decorators</a></code>
+      </p>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Information Extracted from Docstrings</th></tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.RoutineDoc-class.html">RoutineDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.RoutineDoc-class.html#arg_descrs">arg_descrs</a></code>,
+      <code><a href="epydoc.apidoc.RoutineDoc-class.html#arg_types">arg_types</a></code>,
+      <code><a href="epydoc.apidoc.RoutineDoc-class.html#exception_descrs">exception_descrs</a></code>,
+      <code><a href="epydoc.apidoc.RoutineDoc-class.html#return_descr">return_descr</a></code>,
+      <code><a href="epydoc.apidoc.RoutineDoc-class.html#return_type">return_type</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.APIDoc-class.html">APIDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.APIDoc-class.html#descr">descr</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#extra_docstring_fields">extra_docstring_fields</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#metadata">metadata</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#other_docs">other_docs</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#summary">summary</a></code>
+      </p>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Value Representation</th></tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.ValueDoc-class.html">ValueDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#parse_repr">parse_repr</a></code>,
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#pyval">pyval</a></code>
+      </p>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Context</th></tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.ValueDoc-class.html">ValueDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#defining_module">defining_module</a></code>
+      </p>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Information about Imported Variables</th></tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.ValueDoc-class.html">ValueDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#proxy_for">proxy_for</a></code>
+      </p>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Docstrings</th></tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.APIDoc-class.html">APIDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.APIDoc-class.html#docstring">docstring</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#docstring_lineno">docstring_lineno</a></code>
+      </p>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Source Information</th></tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.APIDoc-class.html">APIDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.APIDoc-class.html#docs_extracted_by">docs_extracted_by</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Properties</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Properties"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:07:03 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.apidoc.DocIndex-class.html b/doc/api/epydoc.apidoc.DocIndex-class.html
new file mode 100644
index 0000000..e26e1ea
--- /dev/null
+++ b/doc/api/epydoc.apidoc.DocIndex-class.html
@@ -0,0 +1,997 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.apidoc.DocIndex</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.apidoc-module.html">Module apidoc</a> ::
+        Class DocIndex
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.apidoc.DocIndex-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class DocIndex</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.apidoc-pysrc.html#DocIndex">source code</a></span></p>
+<p>[xx] out of date.</p>
+  <p>An index that .. hmm...  it *can't* be used to access some things, cuz
+  they're not at the root level.  Do I want to add them or what? And if so,
+  then I have a sort of a new top level.  hmm..  so basically the question 
+  is what to do with a name that's not in the root var's name space.  2 
+  types:</p>
+  <ul>
+    <li>
+      entirely outside (eg os.path)
+    </li>
+    <li>
+      inside but not known (eg a submodule that we didn't look at?)
+    </li>
+    <li>
+      container of current thing not examined?
+    </li>
+  </ul>
+  <p>An index of all the <code>APIDoc</code> objects that can be reached 
+  from a root set of <code>ValueDoc</code>s.</p>
+  <p>The members of this index can be accessed by dotted name.  In 
+  particular, <code>DocIndex</code> defines two mappings, accessed via the 
+  <a href="epydoc.apidoc.DocIndex-class.html#get_vardoc" 
+  class="link">get_vardoc()</a> and <a 
+  href="epydoc.apidoc.DocIndex-class.html#get_valdoc" 
+  class="link">get_valdoc()</a> methods, which can be used to access 
+  <code>VariableDoc</code>s or <code>ValueDoc</code>s respectively by name.
+  (Two separate mappings are necessary because a single name can be used to
+  refer to both a variable and to the value contained by that 
+  variable.)</p>
+  <p>Additionally, the index defines two sets of <code>ValueDoc</code>s: 
+  "reachable <code>ValueDoc</code>s" and "contained 
+  <code>ValueDoc</code>s".  The <a 
+  name="index-reachable_ValueDocs"></a><i class="indexterm">reachable 
+  <code>ValueDoc</code>s</i> are defined as the set of all 
+  <code>ValueDoc</code>s that can be reached from the root set by following
+  <i>any</i> sequence of pointers to <code>ValueDoc</code>s or 
+  <code>VariableDoc</code>s. The <a name="index-contained_ValueDocs"></a><i
+  class="indexterm">contained <code>ValueDoc</code>s</i> are defined as the
+  set of all <code>ValueDoc</code>s that can be reached from the root set 
+  by following only the <code>ValueDoc</code> pointers defined by 
+  non-imported <code>VariableDoc</code>s.  For example, if the root set 
+  contains a module <code>m</code>, then the contained 
+  <code>ValueDoc</code>s includes the <code>ValueDoc</code>s for any 
+  functions, variables, or classes defined in that module, as well as 
+  methods and variables defined in classes defined in the module.  The 
+  reachable <code>ValueDoc</code>s includes all of those 
+  <code>ValueDoc</code>s, as well as <code>ValueDoc</code>s for any values 
+  imported into the module, and base classes for classes defined in the 
+  module.</p>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.apidoc.DocIndex-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">root</span>)</span><br />
+      Create a new documentation index, based on the given root set of 
+      <code>ValueDoc</code>s.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.apidoc-pysrc.html#DocIndex.__init__">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for___init___2-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for___init___2-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for___init___2" name="call_graph_for___init___2">
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#__init__" title="__init__()" alt="" coords="297,34,393,66" />
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#_get_module_classes" title="_get_module_classes()" alt="" coords="448,6,643,38" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__cmp__" title="DottedName.__cmp__()" alt="" coords="444,62,647,94" />
+<area shape="rect" href="epydoc.docbuilder-module.html#build_doc_index" title="docbuilder.build_doc_index()" alt="" coords="5,34,248,66" />
+</map>
+  <img src="call_graph_for___init___2.gif" alt='' usemap="#call_graph_for___init___2" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_vardoc"></a><span class="summary-sig-name">get_vardoc</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">name</span>)</span><br />
+      Return the <code>VariableDoc</code> with the given name, or 
+      <code>None</code> if this index does not contain a 
+      <code>VariableDoc</code> with the given name.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.apidoc-pysrc.html#DocIndex.get_vardoc">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_get_vardoc-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_get_vardoc-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_get_vardoc" name="call_graph_for_get_vardoc">
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#_get" title="_get()" alt="" coords="740,62,807,94" />
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#find" title="find()" alt="" coords="233,6,297,38" />
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#get_vardoc" title="get_vardoc()" alt="" coords="573,62,691,94" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_doc_or_ancestor_is_private" title="docwriter.html.HTMLWriter._doc_or_ancestor_is_private()" alt="" coords="31,62,500,94" />
+<area shape="rect" href="epydoc.docwriter.html._HTMLDocstringLinker-class.html#translate_identifier_xref" title="docwriter.html._HTMLDocstringLinker.translate_identifier_xref()" alt="" coords="7,118,524,150" />
+</map>
+  <img src="call_graph_for_get_vardoc.gif" alt='' usemap="#call_graph_for_get_vardoc" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_valdoc"></a><span class="summary-sig-name">get_valdoc</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">name</span>)</span><br />
+      Return the <code>ValueDoc</code> with the given name, or 
+      <code>None</code> if this index does not contain a 
+      <code>ValueDoc</code> with the given name.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.apidoc-pysrc.html#DocIndex.get_valdoc">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_get_valdoc-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_get_valdoc-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_get_valdoc" name="call_graph_for_get_valdoc">
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#_get" title="_get()" alt="" coords="690,118,756,150" />
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#container" title="container()" alt="" coords="188,6,292,38" />
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#get_valdoc" title="get_valdoc()" alt="" coords="524,118,639,150" />
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#find" title="find()" alt="" coords="208,62,272,94" />
+<area shape="rect" href="epydoc.docstringparser-module.html#user_docfields" title="docstringparser.user_docfields()" alt="" coords="110,118,371,150" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_doc_or_ancestor_is_private" title="docwriter.html.HTMLWriter._doc_or_ancestor_is_private()" alt="" coords="6,174,475,206" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_url" title="docwriter.html.HTMLWriter._url()" alt="" coords="98,230,383,262" />
+</map>
+  <img src="call_graph_for_get_valdoc.gif" alt='' usemap="#call_graph_for_get_valdoc" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_get"></a><span class="summary-sig-name">_get</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">name</span>)</span><br />
+      A helper function that's used to implement <a 
+      href="epydoc.apidoc.DocIndex-class.html#get_vardoc" 
+      class="link">get_vardoc()</a> and <a 
+      href="epydoc.apidoc.DocIndex-class.html#get_valdoc" 
+      class="link">get_valdoc()</a>.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.apidoc-pysrc.html#DocIndex._get">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__get-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__get-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__get" name="call_graph_for__get">
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#_get" title="_get()" alt="" coords="172,90,239,122" />
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#_get_from" title="_get_from()" alt="" coords="347,6,459,38" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__getitem__" title="DottedName.__getitem__()" alt="" coords="290,62,516,94" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__hash__" title="DottedName.__hash__()" alt="" coords="300,118,506,150" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#dominates" title="DottedName.dominates()" alt="" coords="298,174,508,206" />
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#get_valdoc" title="get_valdoc()" alt="" coords="7,62,122,94" />
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#get_vardoc" title="get_vardoc()" alt="" coords="6,118,123,150" />
+</map>
+  <img src="call_graph_for__get.gif" alt='' usemap="#call_graph_for__get" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_get_from"></a><span class="summary-sig-name">_get_from</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">val_doc</span>,
+        <span class="summary-sig-arg">identifier</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.apidoc-pysrc.html#DocIndex._get_from">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__get_from-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__get_from-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__get_from" name="call_graph_for__get_from">
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#_get" title="_get()" alt="" coords="7,6,73,38" />
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#_get_from" title="_get_from()" alt="" coords="124,6,236,38" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__getitem__" title="DottedName.__getitem__()" alt="" coords="287,6,513,38" />
+</map>
+  <img src="call_graph_for__get_from.gif" alt='' usemap="#call_graph_for__get_from" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.apidoc.DocIndex-class.html#find" class="summary-sig-name">find</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">name</span>,
+        <span class="summary-sig-arg">context</span>)</span><br />
+      Look for an <code>APIDoc</code> named <code>name</code>, relative to 
+      <code>context</code>.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.apidoc-pysrc.html#DocIndex.find">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_find-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_find-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_find" name="call_graph_for_find">
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#find" title="find()" alt="" coords="579,174,643,206" />
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#get_valdoc" title="get_valdoc()" alt="" coords="748,6,863,38" />
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#get_vardoc" title="get_vardoc()" alt="" coords="747,62,864,94" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__add__" title="DottedName.__add__()" alt="" coords="705,118,905,150" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__getitem__" title="DottedName.__getitem__()" alt="" coords="692,174,919,206" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__init__" title="DottedName.__init__()" alt="" coords="707,230,904,262" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__radd__" title="DottedName.__radd__()" alt="" coords="703,286,908,318" />
+<area shape="rect" href="epydoc.apidoc.RoutineDoc-class.html#all_args" title="RoutineDoc.all_args()" alt="" coords="712,342,899,374" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_add_attribute_edge" title="docwriter.dotgraph.DotGraphUmlClassNode._add_attribute_edge()" alt="" coords="5,6,531,38" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#import_graph" title="docwriter.dotgraph.import_graph()" alt="" coords="128,62,408,94" />
+<area shape="rect" href="epydoc.docwriter.html._HTMLDocstringLinker-class.html#translate_identifier_xref" title="docwriter.html._HTMLDocstringLinker.translate_identifier_xref()" alt="" coords="9,118,527,150" />
+<area shape="rect" href="epydoc.docwriter.html._HTMLDocstringLinker-class.html#url_for" title="docwriter.html._HTMLDocstringLinker.url_for()" alt="" coords="73,174,463,206" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#_build_graph" title="markup.epytext.ParsedEpytextDocstring._build_graph()" alt="" coords="48,230,488,262" />
+<area shape="rect" href="epydoc.markup.restructuredtext-module.html#_construct_classtree" title="markup.restructuredtext._construct_classtree()" alt="" coords="84,286,452,318" />
+<area shape="rect" href="epydoc.markup.restructuredtext-module.html#_construct_packagetree" title="markup.restructuredtext._construct_packagetree()" alt="" coords="72,342,464,374" />
+</map>
+  <img src="call_graph_for_find.gif" alt='' usemap="#call_graph_for_find" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>dict</code> from <code>str</code> to <a 
+      href="epydoc.apidoc.ClassDoc-class.html" class="link">ClassDoc</a> or
+      <code>list</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.apidoc.DocIndex-class.html#_get_module_classes" class="summary-sig-name" onclick="show_private();">_get_module_classes</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">docs</span>)</span><br />
+      Gather all the classes defined in a list of modules.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.apidoc-pysrc.html#DocIndex._get_module_classes">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__get_module_cla-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__get_module_cla-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__get_module_cla" name="call_graph_for__get_module_cla">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__cmp__" title="APIDoc.__cmp__()" alt="" coords="424,6,595,38" />
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#__init__" title="__init__()" alt="" coords="7,62,103,94" />
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#_get_module_classes" title="_get_module_classes()" alt="" coords="152,62,347,94" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__cmp__" title="DottedName.__cmp__()" alt="" coords="408,62,611,94" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__getitem__" title="DottedName.__getitem__()" alt="" coords="396,118,623,150" />
+</map>
+  <img src="call_graph_for__get_module_cla.gif" alt='' usemap="#call_graph_for__get_module_cla" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.apidoc.DocIndex-class.html#reachable_valdocs" class="summary-sig-name">reachable_valdocs</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">**filters</span>)</span><br />
+      Return a list of all <code>ValueDoc</code>s that can be reached, 
+      directly or indirectly from this <code>DocIndex</code>'s root set.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.apidoc-pysrc.html#DocIndex.reachable_valdocs">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_reachable_valdo_2-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_reachable_valdo_2-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_reachable_valdo_2" name="call_graph_for_reachable_valdo_2">
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#reachable_valdocs" title="reachable_valdocs()" alt="" coords="371,34,544,66" />
+<area shape="rect" href="epydoc.apidoc-module.html#reachable_valdocs" title="reachable_valdocs()" alt="" coords="592,34,766,66" />
+<area shape="rect" href="epydoc.docbuilder-module.html#build_doc_index" title="docbuilder.build_doc_index()" alt="" coords="43,6,286,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#__init__" title="docwriter.html.HTMLWriter.__init__()" alt="" coords="6,62,323,94" />
+</map>
+  <img src="call_graph_for_reachable_valdo_2.gif" alt='' usemap="#call_graph_for_reachable_valdo_2" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="container"></a><span class="summary-sig-name">container</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">api_doc</span>)</span><br />
+      Return the <code>ValueDoc</code> that contains the given 
+      <code>APIDoc</code>, or <code>None</code> if its container is not in 
+      the index.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.apidoc-pysrc.html#DocIndex.container">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_container-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_container-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_container" name="call_graph_for_container">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__hash__" title="APIDoc.__hash__()" alt="" coords="690,90,860,122" />
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#container" title="container()" alt="" coords="520,146,624,178" />
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#get_valdoc" title="get_valdoc()" alt="" coords="718,146,832,178" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#container" title="DottedName.container()" alt="" coords="674,202,876,234" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_url" title="docwriter.html.HTMLWriter._url()" alt="" coords="96,6,382,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_val_is_public" title="docwriter.html.HTMLWriter._val_is_public()" alt="" coords="58,62,420,94" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#breadcrumbs" title="docwriter.html.HTMLWriter.breadcrumbs()" alt="" coords="64,118,414,150" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#build_identifier_index" title="docwriter.html.HTMLWriter.build_identifier_index()" alt="" coords="28,174,450,206" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_project_toc" title="docwriter.html.HTMLWriter.write_project_toc()" alt="" coords="46,230,432,262" />
+<area shape="rect" href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#doc_kind" title="docwriter.html_colorize.PythonSourceColorizer.doc_kind()" alt="" coords="6,286,472,318" />
+</map>
+  <img src="call_graph_for_container.gif" alt='' usemap="#call_graph_for_container" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.apidoc.DocIndex-class.html#read_profiling_info" class="summary-sig-name">read_profiling_info</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">profile_stats</span>)</span><br />
+      Initialize the <a href="epydoc.apidoc.DocIndex-class.html#callers" 
+      class="link">callers</a> and <a 
+      href="epydoc.apidoc.DocIndex-class.html#callees" 
+      class="link">callees</a> variables, given a <code>Stat</code> object 
+      from the <code>pstats</code> module.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.apidoc-pysrc.html#DocIndex.read_profiling_info">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.apidoc.DocIndex-class.html#_update_funcid_to_doc" class="summary-sig-name" onclick="show_private();">_update_funcid_to_doc</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">profile_stats</span>)</span><br />
+      Update the dictionary mapping from <code>pstat.Stat</code> funciton 
+      ids to <code>RoutineDoc</code>s.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.apidoc-pysrc.html#DocIndex._update_funcid_to_doc">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== INSTANCE VARIABLES ==================== -->
+<a name="section-InstanceVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>list</code></span>
+    </td><td class="summary">
+        <a name="root"></a><span class="summary-name">root</span><br />
+      The list of <code>ValueDoc</code>s to document.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>dict</code> from <code>str</code> to <a 
+      href="epydoc.apidoc.ClassDoc-class.html" class="link">ClassDoc</a> or
+      <code>list</code></span>
+    </td><td class="summary">
+        <a href="epydoc.apidoc.DocIndex-class.html#mlclasses" class="summary-name">mlclasses</a><br />
+      A mapping from class names to <a 
+      href="epydoc.apidoc.ClassDoc-class.html" class="link">ClassDoc</a>.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>list</code> of <a href="epydoc.apidoc.RoutineDoc-class.html" 
+      class="link">RoutineDoc</a></span>
+    </td><td class="summary">
+        <a href="epydoc.apidoc.DocIndex-class.html#callers" class="summary-name">callers</a><br />
+      A dictionary mapping from <code>RoutineDoc</code>s in this index to 
+      lists of <code>RoutineDoc</code>s for the routine's callers.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>list</code> of <a href="epydoc.apidoc.RoutineDoc-class.html" 
+      class="link">RoutineDoc</a></span>
+    </td><td class="summary">
+        <a href="epydoc.apidoc.DocIndex-class.html#callees" class="summary-name">callees</a><br />
+      A dictionary mapping from <code>RoutineDoc</code>s in this index to 
+      lists of <code>RoutineDoc</code>s for the routine's callees.
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.apidoc.DocIndex-class.html#_funcid_to_doc" class="summary-name" onclick="show_private();">_funcid_to_doc</a><br />
+      A mapping from <code>profile</code> function ids to corresponding 
+      <code>APIDoc</code> objects.
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="_container_cache"></a><span class="summary-name">_container_cache</span><br />
+      A cache for the <a href="epydoc.apidoc.DocIndex-class.html#container"
+      class="link">container()</a> method, to increase speed.
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="_get_cache"></a><span class="summary-name">_get_cache</span><br />
+      A cache for the <a 
+      href="epydoc.apidoc.DocIndex-class.html#get_vardoc" 
+      class="link">get_vardoc()</a> and <a 
+      href="epydoc.apidoc.DocIndex-class.html#get_valdoc" 
+      class="link">get_valdoc()</a> methods, to increase speed.
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Method Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-MethodDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">root</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.apidoc-pysrc.html#DocIndex.__init__">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for___init___2-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for___init___2-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for___init___2" name="call_graph_for___init___2">
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#__init__" title="__init__()" alt="" coords="297,34,393,66" />
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#_get_module_classes" title="_get_module_classes()" alt="" coords="448,6,643,38" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__cmp__" title="DottedName.__cmp__()" alt="" coords="444,62,647,94" />
+<area shape="rect" href="epydoc.docbuilder-module.html#build_doc_index" title="docbuilder.build_doc_index()" alt="" coords="5,34,248,66" />
+</map>
+  <img src="call_graph_for___init___2.gif" alt='' usemap="#call_graph_for___init___2" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Create a new documentation index, based on the given root set of 
+  <code>ValueDoc</code>s.  If any <code>APIDoc</code>s reachable from the 
+  root set does not have a canonical name, then it will be assigned one.  
+  etc.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>root</code></strong> - A list of <code>ValueDoc</code>s.</li>
+    </ul></dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="find"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">find</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">name</span>,
+        <span class="sig-arg">context</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.apidoc-pysrc.html#DocIndex.find">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_find-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_find-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_find" name="call_graph_for_find">
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#find" title="find()" alt="" coords="579,174,643,206" />
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#get_valdoc" title="get_valdoc()" alt="" coords="748,6,863,38" />
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#get_vardoc" title="get_vardoc()" alt="" coords="747,62,864,94" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__add__" title="DottedName.__add__()" alt="" coords="705,118,905,150" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__getitem__" title="DottedName.__getitem__()" alt="" coords="692,174,919,206" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__init__" title="DottedName.__init__()" alt="" coords="707,230,904,262" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__radd__" title="DottedName.__radd__()" alt="" coords="703,286,908,318" />
+<area shape="rect" href="epydoc.apidoc.RoutineDoc-class.html#all_args" title="RoutineDoc.all_args()" alt="" coords="712,342,899,374" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_add_attribute_edge" title="docwriter.dotgraph.DotGraphUmlClassNode._add_attribute_edge()" alt="" coords="5,6,531,38" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#import_graph" title="docwriter.dotgraph.import_graph()" alt="" coords="128,62,408,94" />
+<area shape="rect" href="epydoc.docwriter.html._HTMLDocstringLinker-class.html#translate_identifier_xref" title="docwriter.html._HTMLDocstringLinker.translate_identifier_xref()" alt="" coords="9,118,527,150" />
+<area shape="rect" href="epydoc.docwriter.html._HTMLDocstringLinker-class.html#url_for" title="docwriter.html._HTMLDocstringLinker.url_for()" alt="" coords="73,174,463,206" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#_build_graph" title="markup.epytext.ParsedEpytextDocstring._build_graph()" alt="" coords="48,230,488,262" />
+<area shape="rect" href="epydoc.markup.restructuredtext-module.html#_construct_classtree" title="markup.restructuredtext._construct_classtree()" alt="" coords="84,286,452,318" />
+<area shape="rect" href="epydoc.markup.restructuredtext-module.html#_construct_packagetree" title="markup.restructuredtext._construct_packagetree()" alt="" coords="72,342,464,374" />
+</map>
+  <img src="call_graph_for_find.gif" alt='' usemap="#call_graph_for_find" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Look for an <code>APIDoc</code> named <code>name</code>, relative to 
+  <code>context</code>. Return the <code>APIDoc</code> if one is found; 
+  otherwise, return <code>None</code>.  <code>find</code> looks in the 
+  following places, in order:</p>
+  <ul>
+    <li>
+      Function parameters (if one matches, return <code>None</code>)
+    </li>
+    <li>
+      All enclosing namespaces, from closest to furthest.
+    </li>
+    <li>
+      If <code>name</code> starts with <code>'self'</code>, then strip it 
+      off and look for the remaining part of the name using 
+      <code>find</code>
+    </li>
+    <li>
+      Builtins
+    </li>
+    <li>
+      Parameter attributes
+    </li>
+    <li>
+      Classes at module level (if the name is not ambiguous)
+    </li>
+  </ul>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>name</code></strong> (<code>str</code> or <a href="epydoc.apidoc.DottedName-class.html"
+          class="link">DottedName</a>)</li>
+        <li><strong class="pname"><code>context</code></strong> (<a href="epydoc.apidoc.APIDoc-class.html" class="link">APIDoc</a>)</li>
+    </ul></dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="_get_module_classes"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">_get_module_classes</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">docs</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.apidoc-pysrc.html#DocIndex._get_module_classes">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__get_module_cla-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for__get_module_cla-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__get_module_cla" name="call_graph_for__get_module_cla">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__cmp__" title="APIDoc.__cmp__()" alt="" coords="424,6,595,38" />
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#__init__" title="__init__()" alt="" coords="7,62,103,94" />
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#_get_module_classes" title="_get_module_classes()" alt="" coords="152,62,347,94" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__cmp__" title="DottedName.__cmp__()" alt="" coords="408,62,611,94" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__getitem__" title="DottedName.__getitem__()" alt="" coords="396,118,623,150" />
+</map>
+  <img src="call_graph_for__get_module_cla.gif" alt='' usemap="#call_graph_for__get_module_cla" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Gather all the classes defined in a list of modules.</p>
+  <p>Very often people refers to classes only by class name, even if they 
+  are not imported in the namespace. Linking to such classes will fail if 
+  we look for them only in nested namespaces. Allow them to retrieve only 
+  by name.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>docs</code></strong> (<code>list</code> of <code>APIDoc</code>) - containers of the objects to collect</li>
+    </ul></dd>
+    <dt>Returns: <code>dict</code> from <code>str</code> to <a 
+      href="epydoc.apidoc.ClassDoc-class.html" class="link">ClassDoc</a> or
+      <code>list</code></dt>
+        <dd>mapping from objects name to the object(s) with that name</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="reachable_valdocs"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">reachable_valdocs</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">**filters</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.apidoc-pysrc.html#DocIndex.reachable_valdocs">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_reachable_valdo_2-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_reachable_valdo_2-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_reachable_valdo_2" name="call_graph_for_reachable_valdo_2">
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#reachable_valdocs" title="reachable_valdocs()" alt="" coords="371,34,544,66" />
+<area shape="rect" href="epydoc.apidoc-module.html#reachable_valdocs" title="reachable_valdocs()" alt="" coords="592,34,766,66" />
+<area shape="rect" href="epydoc.docbuilder-module.html#build_doc_index" title="docbuilder.build_doc_index()" alt="" coords="43,6,286,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#__init__" title="docwriter.html.HTMLWriter.__init__()" alt="" coords="6,62,323,94" />
+</map>
+  <img src="call_graph_for_reachable_valdo_2.gif" alt='' usemap="#call_graph_for_reachable_valdo_2" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Return a list of all <code>ValueDoc</code>s that can be reached, 
+  directly or indirectly from this <code>DocIndex</code>'s root set.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>filters</code></strong> - A set of filters that can be used to prevent 
+          <code>reachable_valdocs</code> from following specific link types
+          when looking for <code>ValueDoc</code>s that can be reached from 
+          the root set.  See <code>APIDoc.apidoc_links</code> for a more 
+          complete description.</li>
+    </ul></dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="read_profiling_info"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">read_profiling_info</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">profile_stats</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.apidoc-pysrc.html#DocIndex.read_profiling_info">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Initialize the <a href="epydoc.apidoc.DocIndex-class.html#callers" 
+  class="link">callers</a> and <a 
+  href="epydoc.apidoc.DocIndex-class.html#callees" class="link">callees</a>
+  variables, given a <code>Stat</code> object from the <code>pstats</code> 
+  module.</p>
+  <dl class="fields">
+  </dl>
+<div class="fields">      <p><strong>Warning:</strong>
+        This method uses undocumented data structures inside of 
+        <code>profile_stats</code>.
+      </p>
+</div></td></tr></table>
+</div>
+<a name="_update_funcid_to_doc"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">_update_funcid_to_doc</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">profile_stats</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.apidoc-pysrc.html#DocIndex._update_funcid_to_doc">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Update the dictionary mapping from <code>pstat.Stat</code> funciton 
+  ids to <code>RoutineDoc</code>s.  <code>pstat.Stat</code> function ids 
+  are tuples of <code>(filename, lineno, funcname)</code>.</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== INSTANCE VARIABLE DETAILS ==================== -->
+<a name="section-InstanceVariableDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Variable Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceVariableDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="mlclasses"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">mlclasses</h3>
+  <p>A mapping from class names to <a 
+  href="epydoc.apidoc.ClassDoc-class.html" class="link">ClassDoc</a>. 
+  Contains classes defined at module level for modules in <a 
+  href="epydoc.apidoc.DocIndex-class.html#root" class="link">root</a> and 
+  which can be used as fallback by <a 
+  href="epydoc.apidoc.DocIndex-class.html#find" class="link">find()</a> if 
+  looking in containing namespaces fails.</p>
+  <dl class="fields">
+    <dt>Type:</dt>
+      <dd><code>dict</code> from <code>str</code> to <a 
+      href="epydoc.apidoc.ClassDoc-class.html" class="link">ClassDoc</a> or
+      <code>list</code></dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="callers"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">callers</h3>
+  <p>A dictionary mapping from <code>RoutineDoc</code>s in this index to 
+  lists of <code>RoutineDoc</code>s for the routine's callers. This 
+  dictionary is initialized by calling <a 
+  href="epydoc.apidoc.DocIndex-class.html#read_profiling_info" 
+  class="link">read_profiling_info()</a>.</p>
+  <dl class="fields">
+    <dt>Type:</dt>
+      <dd><code>list</code> of <a href="epydoc.apidoc.RoutineDoc-class.html" 
+      class="link">RoutineDoc</a></dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="callees"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">callees</h3>
+  <p>A dictionary mapping from <code>RoutineDoc</code>s in this index to 
+  lists of <code>RoutineDoc</code>s for the routine's callees. This 
+  dictionary is initialized by calling <a 
+  href="epydoc.apidoc.DocIndex-class.html#read_profiling_info" 
+  class="link">read_profiling_info()</a>.</p>
+  <dl class="fields">
+    <dt>Type:</dt>
+      <dd><code>list</code> of <a href="epydoc.apidoc.RoutineDoc-class.html" 
+      class="link">RoutineDoc</a></dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="_funcid_to_doc"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">_funcid_to_doc</h3>
+  <p>A mapping from <code>profile</code> function ids to corresponding 
+  <code>APIDoc</code> objects.  A function id is a tuple of the form 
+  <code>(filename, lineno, funcname)</code>.  This is used to update the <a
+  href="epydoc.apidoc.DocIndex-class.html#callers" class="link">callers</a>
+  and <a href="epydoc.apidoc.DocIndex-class.html#callees" 
+  class="link">callees</a> variables.</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:07:06 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.apidoc.DottedName-class.html b/doc/api/epydoc.apidoc.DottedName-class.html
new file mode 100644
index 0000000..41ac7b0
--- /dev/null
+++ b/doc/api/epydoc.apidoc.DottedName-class.html
@@ -0,0 +1,1190 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.apidoc.DottedName</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.apidoc-module.html">Module apidoc</a> ::
+        Class DottedName
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.apidoc.DottedName-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class DottedName</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.apidoc-pysrc.html#DottedName">source code</a></span></p>
+<p>A sequence of identifiers, separated by periods, used to name a Python
+  variable, value, or argument.  The identifiers that make up a dotted name
+  can be accessed using the indexing operator:</p>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>name = DottedName(<span class="py-string">'epydoc'</span>, <span class="py-string">'api_doc'</span>, <span class="py-string">'DottedName'</span>)
+<span class="py-prompt">>>> </span><span class="py-keyword">print</span> name
+<span class="py-output">epydoc.apidoc.DottedName</span>
+<span class="py-output"></span><span class="py-prompt">>>> </span>name[1]
+<span class="py-output">'api_doc'</span></pre>
+
+<!-- ==================== NESTED CLASSES ==================== -->
+<a name="section-NestedClasses"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Nested Classes</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-NestedClasses"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.apidoc.DottedName.InvalidDottedName-class.html" class="summary-name">InvalidDottedName</a><br />
+      An exception raised by the DottedName constructor when one of its 
+        arguments is not a valid dotted name.
+    </td>
+  </tr>
+</table>
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.apidoc.DottedName-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">*pieces</span>,
+        <span class="summary-sig-arg">**options</span>)</span><br />
+      Construct a new dotted name from the given sequence of pieces, each 
+      of which can be either a <code>string</code> or a 
+      <code>DottedName</code>.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.apidoc-pysrc.html#DottedName.__init__">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for___init___3-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for___init___3-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for___init___3" name="call_graph_for___init___3">
+<area shape="rect" href="epydoc.apidoc.ClassDoc-class.html#is_exception" title="ClassDoc.is_exception()" alt="" coords="130,6,335,38" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__init__" title="__init__()" alt="" coords="508,762,604,794" />
+<area shape="rect" href="epydoc.apidoc.ClassDoc-class.html#is_newstyle_class" title="ClassDoc.is_newstyle_class()" alt="" coords="111,62,354,94" />
+<area shape="rect" href="epydoc.apidoc.ClassDoc-class.html#is_type" title="ClassDoc.is_type()" alt="" coords="151,118,314,150" />
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#find" title="DocIndex.find()" alt="" coords="160,174,304,206" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__add__" title="__add__()" alt="" coords="183,230,282,262" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__getitem__" title="__getitem__()" alt="" coords="168,286,296,318" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__radd__" title="__radd__()" alt="" coords="180,342,284,374" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#container" title="container()" alt="" coords="180,398,284,430" />
+<area shape="rect" href="epydoc.docbuilder-module.html#_get_docs_from_module_file" title="docbuilder._get_docs_from_module_file()" alt="" coords="63,454,402,486" />
+<area shape="rect" href="epydoc.docbuilder-module.html#_unreachable_name_for" title="docbuilder._unreachable_name_for()" alt="" coords="83,510,382,542" />
+<area shape="rect" href="epydoc.docbuilder-module.html#assign_canonical_names" title="docbuilder.assign_canonical_names()" alt="" coords="82,566,383,598" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#get_canonical_name" title="docintrospecter.get_canonical_name()" alt="" coords="79,622,386,654" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#get_containing_module" title="docintrospecter.get_containing_module()" alt="" coords="68,678,396,710" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#get_value_from_filename" title="docintrospecter.get_value_from_filename()" alt="" coords="60,734,404,766" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#introspect_module" title="docintrospecter.introspect_module()" alt="" coords="87,790,378,822" />
+<area shape="rect" href="epydoc.docparser-module.html#_get_module_name" title="docparser._get_module_name()" alt="" coords="103,846,362,878" />
+<area shape="rect" href="epydoc.docparser-module.html#_is_submodule_import_var" title="docparser._is_submodule_import_var()" alt="" coords="75,902,390,934" />
+<area shape="rect" href="epydoc.docparser-module.html#_process_fromstar_import" title="docparser._process_fromstar_import()" alt="" coords="79,958,386,990" />
+<area shape="rect" href="epydoc.docparser-module.html#apply_decorator" title="docparser.apply_decorator()" alt="" coords="116,1014,348,1046" />
+<area shape="rect" href="epydoc.docparser-module.html#find_base" title="docparser.find_base()" alt="" coords="140,1070,324,1102" />
+<area shape="rect" href="epydoc.docparser-module.html#parse_docs" title="docparser.parse_docs()" alt="" coords="135,1126,330,1158" />
+<area shape="rect" href="epydoc.docparser-module.html#parse_dotted_name" title="docparser.parse_dotted_name()" alt="" coords="104,1182,360,1214" />
+<area shape="rect" href="epydoc.docparser-module.html#process_classdef" title="docparser.process_classdef()" alt="" coords="114,1238,351,1270" />
+<area shape="rect" href="epydoc.docparser-module.html#process_from_import" title="docparser.process_from_import()" alt="" coords="98,1294,367,1326" />
+<area shape="rect" href="epydoc.docparser-module.html#process_funcdef" title="docparser.process_funcdef()" alt="" coords="116,1350,348,1382" />
+<area shape="rect" href="epydoc.docparser-module.html#rhs_to_valuedoc" title="docparser.rhs_to_valuedoc()" alt="" coords="115,1406,350,1438" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_raise_field" title="docstringparser.process_raise_field()" alt="" coords="84,1462,380,1494" />
+<area shape="rect" href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#doclink" title="docwriter.html_colorize.PythonSourceColorizer.doclink()" alt="" coords="7,1518,458,1550" />
+</map>
+  <img src="call_graph_for___init___3.gif" alt='' usemap="#call_graph_for___init___3" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__repr__"></a><span class="summary-sig-name">__repr__</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.apidoc-pysrc.html#DottedName.__repr__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.apidoc.DottedName-class.html#__str__" class="summary-sig-name">__str__</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Return the dotted name as a string formed by joining its identifiers 
+      with periods:</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.apidoc-pysrc.html#DottedName.__str__">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for___str__-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for___str__-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for___str__" name="call_graph_for___str__">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__str__" title="__str__()" alt="" coords="567,988,657,1020" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#_init_grouping" title="NamespaceDoc._init_grouping()" alt="" coords="128,8,395,40" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#__repr__" title="ValueDoc.__repr__()" alt="" coords="171,64,352,96" />
+<area shape="rect" href="epydoc.docbuilder-module.html#_get_docs_from_module_file" title="docbuilder._get_docs_from_module_file()" alt="" coords="92,120,431,152" />
+<area shape="rect" href="epydoc.docbuilder-module.html#_unreachable_name_for" title="docbuilder._unreachable_name_for()" alt="" coords="112,176,411,208" />
+<area shape="rect" href="epydoc.docbuilder-module.html#merge_bases" title="docbuilder.merge_bases()" alt="" coords="155,232,368,264" />
+<area shape="rect" href="epydoc.docbuilder-module.html#merge_docs" title="docbuilder.merge_docs()" alt="" coords="157,288,365,320" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#_get_valuedoc" title="docintrospecter._get_valuedoc()" alt="" coords="131,344,392,376" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#get_value_from_filename" title="docintrospecter.get_value_from_filename()" alt="" coords="89,400,433,432" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#introspect_module" title="docintrospecter.introspect_module()" alt="" coords="116,456,407,488" />
+<area shape="rect" href="epydoc.docparser-module.html#find_base" title="docparser.find_base()" alt="" coords="169,512,353,544" />
+<area shape="rect" href="epydoc.docparser-module.html#lookup_value" title="docparser.lookup_value()" alt="" coords="156,568,367,600" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphEdge-class.html#to_dotfile" title="docwriter.dotgraph.DotGraphEdge.to_dotfile()" alt="" coords="76,624,447,656" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphNode-class.html#to_dotfile" title="docwriter.dotgraph.DotGraphNode.to_dotfile()" alt="" coords="76,680,447,712" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_attribute_cell" title="docwriter.dotgraph.DotGraphUmlClassNode._attribute_cell()" alt="" coords="21,736,501,768" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_get_html_label" title="docwriter.dotgraph.DotGraphUmlClassNode._get_html_label()" alt="" coords="15,792,508,824" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_operation_cell" title="docwriter.dotgraph.DotGraphUmlClassNode._operation_cell()" alt="" coords="17,848,505,880" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#to_dotfile" title="docwriter.dotgraph.DotGraphUmlClassNode.to_dotfile()" alt="" coords="39,904,484,936" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlModuleNode-class.html#_get_html_label" title="docwriter.dotgraph.DotGraphUmlModuleNode._get_html_label()" alt="" coords="5,960,517,992" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlModuleNode-class.html#to_dotfile" title="docwriter.dotgraph.DotGraphUmlModuleNode.to_dotfile()" alt="" coords="31,1016,492,1048" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#name_list" title="docwriter.dotgraph.name_list()" alt="" coords="135,1072,388,1104" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#specialize_valdoc_node" title="docwriter.dotgraph.specialize_valdoc_node()" alt="" coords="83,1128,440,1160" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#uml_class_tree_graph" title="docwriter.dotgraph.uml_class_tree_graph()" alt="" coords="89,1184,433,1216" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_url" title="docwriter.html.HTMLWriter._url()" alt="" coords="119,1240,404,1272" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#href" title="docwriter.html.HTMLWriter.href()" alt="" coords="119,1296,404,1328" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#pysrc_url" title="docwriter.html.HTMLWriter.pysrc_url()" alt="" coords="99,1352,424,1384" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write" title="docwriter.html.HTMLWriter.write()" alt="" coords="115,1408,408,1440" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_class" title="docwriter.html.HTMLWriter.write_class()" alt="" coords="92,1464,431,1496" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_module" title="docwriter.html.HTMLWriter.write_module()" alt="" coords="83,1520,440,1552" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_redirect_page" title="docwriter.html.HTMLWriter.write_redirect_page()" alt="" coords="60,1576,463,1608" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_sourcecode" title="docwriter.html.HTMLWriter.write_sourcecode()" alt="" coords="68,1632,455,1664" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_toc_section" title="docwriter.html.HTMLWriter.write_toc_section()" alt="" coords="68,1688,455,1720" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_url_record" title="docwriter.html.HTMLWriter.write_url_record()" alt="" coords="72,1744,451,1776" />
+<area shape="rect" href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#doc_descr" title="docwriter.html_colorize.PythonSourceColorizer.doc_descr()" alt="" coords="25,1800,497,1832" />
+<area shape="rect" href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#handle_line" title="docwriter.html_colorize.PythonSourceColorizer.handle_line()" alt="" coords="20,1856,503,1888" />
+<area shape="rect" href="epydoc.log-module.html#info" title="log.info()" alt="" coords="216,1912,307,1944" />
+<area shape="rect" href="epydoc.log-module.html#progress" title="log.progress()" alt="" coords="199,1968,324,2000" />
+</map>
+  <img src="call_graph_for___str__.gif" alt='' usemap="#call_graph_for___str__" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__add__"></a><span class="summary-sig-name">__add__</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">other</span>)</span><br />
+      Return a new <code>DottedName</code> whose identifier sequence is 
+      formed by adding <code>other</code>'s identifier sequence to 
+      <code>self</code>'s.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.apidoc-pysrc.html#DottedName.__add__">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for___add__-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for___add__-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for___add__" name="call_graph_for___add__">
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#find" title="DocIndex.find()" alt="" coords="62,6,206,38" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__add__" title="__add__()" alt="" coords="311,90,410,122" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__init__" title="__init__()" alt="" coords="460,90,556,122" />
+<area shape="rect" href="epydoc.docparser-module.html#_global_name" title="docparser._global_name()" alt="" coords="26,62,242,94" />
+<area shape="rect" href="epydoc.docparser-module.html#lookup_value" title="docparser.lookup_value()" alt="" coords="28,118,239,150" />
+<area shape="rect" href="epydoc.docstringparser-module.html#set_var_descr" title="docstringparser.set_var_descr()" alt="" coords="6,174,262,206" />
+</map>
+  <img src="call_graph_for___add__.gif" alt='' usemap="#call_graph_for___add__" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__radd__"></a><span class="summary-sig-name">__radd__</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">other</span>)</span><br />
+      Return a new <code>DottedName</code> whose identifier sequence is 
+      formed by adding <code>self</code>'s identifier sequence to 
+      <code>other</code>'s.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.apidoc-pysrc.html#DottedName.__radd__">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for___radd__-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for___radd__-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for___radd__" name="call_graph_for___radd__">
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#find" title="DocIndex.find()" alt="" coords="35,6,179,38" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__radd__" title="__radd__()" alt="" coords="258,34,362,66" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__init__" title="__init__()" alt="" coords="412,34,508,66" />
+<area shape="rect" href="epydoc.docparser-module.html#_import_var" title="docparser._import_var()" alt="" coords="6,62,208,94" />
+</map>
+  <img src="call_graph_for___radd__.gif" alt='' usemap="#call_graph_for___radd__" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.apidoc.DottedName-class.html#__getitem__" class="summary-sig-name">__getitem__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">i</span>)</span><br />
+      Return the <code>i</code>th identifier in this 
+      <code>DottedName</code>.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.apidoc-pysrc.html#DottedName.__getitem__">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for___getitem__-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for___getitem__-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for___getitem__" name="call_graph_for___getitem__">
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#_get" title="DocIndex._get()" alt="" coords="189,9,333,41" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__getitem__" title="__getitem__()" alt="" coords="565,1073,693,1105" />
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#_get_from" title="DocIndex._get_from()" alt="" coords="167,65,356,97" />
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#_get_module_classes" title="DocIndex._get_module_classes()" alt="" coords="125,121,397,153" />
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#find" title="DocIndex.find()" alt="" coords="189,177,333,209" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__init__" title="__init__()" alt="" coords="743,1073,839,1105" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#contextualize" title="contextualize()" alt="" coords="195,233,328,265" />
+<area shape="rect" href="epydoc.apidoc.ModuleDoc-class.html#init_submodule_groups" title="ModuleDoc.init_submodule_groups()" alt="" coords="109,289,413,321" />
+<area shape="rect" href="epydoc.docbuilder-module.html#_report_valdoc_progress" title="docbuilder._report_valdoc_progress()" alt="" coords="111,345,412,377" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#verify_name" title="docintrospecter.verify_name()" alt="" coords="137,401,385,433" />
+<area shape="rect" href="epydoc.docparser-module.html#_find" title="docparser._find()" alt="" coords="187,457,336,489" />
+<area shape="rect" href="epydoc.docparser-module.html#_find_in_namespace" title="docparser._find_in_namespace()" alt="" coords="129,513,393,545" />
+<area shape="rect" href="epydoc.docparser-module.html#_global_name" title="docparser._global_name()" alt="" coords="153,569,369,601" />
+<area shape="rect" href="epydoc.docparser-module.html#_import_var" title="docparser._import_var()" alt="" coords="160,625,363,657" />
+<area shape="rect" href="epydoc.docparser-module.html#add_to_group" title="docparser.add_to_group()" alt="" coords="155,681,368,713" />
+<area shape="rect" href="epydoc.docparser-module.html#del_variable" title="docparser.del_variable()" alt="" coords="160,737,363,769" />
+<area shape="rect" href="epydoc.docparser-module.html#find_base" title="docparser.find_base()" alt="" coords="169,793,353,825" />
+<area shape="rect" href="epydoc.docparser-module.html#lookup_value" title="docparser.lookup_value()" alt="" coords="156,849,367,881" />
+<area shape="rect" href="epydoc.docparser-module.html#lookup_variable" title="docparser.lookup_variable()" alt="" coords="145,905,377,937" />
+<area shape="rect" href="epydoc.docparser-module.html#process_assignment" title="docparser.process_assignment()" alt="" coords="132,961,391,993" />
+<area shape="rect" href="epydoc.docstringparser-module.html#parse_docstring" title="docstringparser.parse_docstring()" alt="" coords="125,1017,397,1049" />
+<area shape="rect" href="epydoc.docstringparser-module.html#user_docfields" title="docstringparser.user_docfields()" alt="" coords="131,1073,392,1105" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#__init__" title="docwriter.dotgraph.DotGraphUmlClassNode.__init__()" alt="" coords="44,1129,479,1161" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlModuleNode-class.html#_get_html_label" title="docwriter.dotgraph.DotGraphUmlModuleNode._get_html_label()" alt="" coords="5,1185,517,1217" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#import_graph" title="docwriter.dotgraph.import_graph()" alt="" coords="121,1241,401,1273" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#uml_class_tree_graph" title="docwriter.dotgraph.uml_class_tree_graph()" alt="" coords="89,1297,433,1329" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_crumb" title="docwriter.html.HTMLWriter._crumb()" alt="" coords="105,1353,417,1385" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_doc_or_ancestor_is_private" title="docwriter.html.HTMLWriter._doc_or_ancestor_is_private()" alt="" coords="27,1409,496,1441" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_url" title="docwriter.html.HTMLWriter._url()" alt="" coords="119,1465,404,1497" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#breadcrumbs" title="docwriter.html.HTMLWriter.breadcrumbs()" alt="" coords="87,1521,436,1553" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#build_identifier_index" title="docwriter.html.HTMLWriter.build_identifier_index()" alt="" coords="51,1577,472,1609" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#doc_kind" title="docwriter.html.HTMLWriter.doc_kind()" alt="" coords="100,1633,423,1665" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#pysrc_url" title="docwriter.html.HTMLWriter.pysrc_url()" alt="" coords="99,1689,424,1721" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write" title="docwriter.html.HTMLWriter.write()" alt="" coords="115,1745,408,1777" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_class" title="docwriter.html.HTMLWriter.write_class()" alt="" coords="92,1801,431,1833" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_index_section" title="docwriter.html.HTMLWriter.write_index_section()" alt="" coords="59,1857,464,1889" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_module" title="docwriter.html.HTMLWriter.write_module()" alt="" coords="83,1913,440,1945" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_module_toc" title="docwriter.html.HTMLWriter.write_module_toc()" alt="" coords="67,1969,456,2001" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_module_tree_item" title="docwriter.html.HTMLWriter.write_module_tree_item()" alt="" coords="43,2025,480,2057" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_toc_section" title="docwriter.html.HTMLWriter.write_toc_section()" alt="" coords="68,2081,455,2113" />
+<area shape="rect" href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#doc_kind" title="docwriter.html_colorize.PythonSourceColorizer.doc_kind()" alt="" coords="28,2137,495,2169" />
+</map>
+  <img src="call_graph_for___getitem__.gif" alt='' usemap="#call_graph_for___getitem__" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__hash__"></a><span class="summary-sig-name">__hash__</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.apidoc-pysrc.html#DottedName.__hash__">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for___hash___2-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for___hash___2-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for___hash___2" name="call_graph_for___hash___2">
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#_get" title="DocIndex._get()" alt="" coords="148,6,292,38" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__hash__" title="__hash__()" alt="" coords="483,90,590,122" />
+<area shape="rect" href="epydoc.docbuilder-module.html#_get_docs_from_items" title="docbuilder._get_docs_from_items()" alt="" coords="76,62,364,94" />
+<area shape="rect" href="epydoc.docbuilder-module.html#_unreachable_name_for" title="docbuilder._unreachable_name_for()" alt="" coords="71,118,370,150" />
+<area shape="rect" href="epydoc.docwriter.html._HTMLDocstringLinker-class.html#_failed_xref" title="docwriter.html._HTMLDocstringLinker._failed_xref()" alt="" coords="6,174,435,206" />
+</map>
+  <img src="call_graph_for___hash___2.gif" alt='' usemap="#call_graph_for___hash___2" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.apidoc.DottedName-class.html#__cmp__" class="summary-sig-name">__cmp__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">other</span>)</span><br />
+      Compare this dotted name to <code>other</code>.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.apidoc-pysrc.html#DottedName.__cmp__">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for___cmp___2-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for___cmp___2-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for___cmp___2" name="call_graph_for___cmp___2">
+<area shape="rect" href="epydoc.apidoc.ClassDoc-class.html#is_exception" title="ClassDoc.is_exception()" alt="" coords="63,6,268,38" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__cmp__" title="__cmp__()" alt="" coords="375,510,479,542" />
+<area shape="rect" href="epydoc.apidoc.ClassDoc-class.html#is_newstyle_class" title="ClassDoc.is_newstyle_class()" alt="" coords="44,62,287,94" />
+<area shape="rect" href="epydoc.apidoc.ClassDoc-class.html#is_type" title="ClassDoc.is_type()" alt="" coords="84,118,247,150" />
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#__init__" title="DocIndex.__init__()" alt="" coords="77,174,253,206" />
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#_get_module_classes" title="DocIndex._get_module_classes()" alt="" coords="29,230,301,262" />
+<area shape="rect" href="epydoc.apidoc.ModuleDoc-class.html#init_submodule_groups" title="ModuleDoc.init_submodule_groups()" alt="" coords="13,286,317,318" />
+<area shape="rect" href="epydoc.docbuilder-module.html#_unreachable_name_for" title="docbuilder._unreachable_name_for()" alt="" coords="16,342,315,374" />
+<area shape="rect" href="epydoc.docbuilder-module.html#_var_shadows_self" title="docbuilder._var_shadows_self()" alt="" coords="35,398,296,430" />
+<area shape="rect" href="epydoc.docbuilder-module.html#build_doc_index" title="docbuilder.build_doc_index()" alt="" coords="44,454,287,486" />
+<area shape="rect" href="epydoc.docbuilder-module.html#merge_bases" title="docbuilder.merge_bases()" alt="" coords="59,510,272,542" />
+<area shape="rect" href="epydoc.docbuilder-module.html#merge_docs" title="docbuilder.merge_docs()" alt="" coords="61,566,269,598" />
+<area shape="rect" href="epydoc.docbuilder-module.html#merge_submodules" title="docbuilder.merge_submodules()" alt="" coords="35,622,296,654" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#introspect_module" title="docintrospecter.introspect_module()" alt="" coords="20,678,311,710" />
+<area shape="rect" href="epydoc.docparser-module.html#_is_submodule_import_var" title="docparser._is_submodule_import_var()" alt="" coords="8,734,323,766" />
+<area shape="rect" href="epydoc.docparser-module.html#apply_decorator" title="docparser.apply_decorator()" alt="" coords="49,790,281,822" />
+<area shape="rect" href="epydoc.docparser-module.html#find_base" title="docparser.find_base()" alt="" coords="73,846,257,878" />
+<area shape="rect" href="epydoc.docparser-module.html#lookup_value" title="docparser.lookup_value()" alt="" coords="60,902,271,934" />
+<area shape="rect" href="epydoc.docparser-module.html#process_classdef" title="docparser.process_classdef()" alt="" coords="47,958,284,990" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#add_valdoc_nodes" title="docwriter.dotgraph.add_valdoc_nodes()" alt="" coords="5,1014,325,1046" />
+</map>
+  <img src="call_graph_for___cmp___2.gif" alt='' usemap="#call_graph_for___cmp___2" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__len__"></a><span class="summary-sig-name">__len__</span>(<span class="summary-sig-arg">self</span>)</span><br />
+      Return the number of identifiers in this dotted name.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.apidoc-pysrc.html#DottedName.__len__">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for___len__-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for___len__-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for___len__" name="call_graph_for___len__">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__len__" title="__len__()" alt="" coords="406,118,502,150" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#contextualize" title="contextualize()" alt="" coords="115,6,248,38" />
+<area shape="rect" href="epydoc.docbuilder-module.html#_get_docs_from_items" title="docbuilder._get_docs_from_items()" alt="" coords="38,62,326,94" />
+<area shape="rect" href="epydoc.docparser-module.html#_import_var" title="docparser._import_var()" alt="" coords="80,118,283,150" />
+<area shape="rect" href="epydoc.docparser-module.html#lookup_variable" title="docparser.lookup_variable()" alt="" coords="66,174,298,206" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#breadcrumbs" title="docwriter.html.HTMLWriter.breadcrumbs()" alt="" coords="7,230,356,262" />
+</map>
+  <img src="call_graph_for___len__.gif" alt='' usemap="#call_graph_for___len__" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.apidoc.DottedName-class.html#container" class="summary-sig-name">container</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Return the DottedName formed by removing the last identifier from 
+      this dotted name's identifier sequence.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.apidoc-pysrc.html#DottedName.container">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_container_2-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_container_2-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_container_2" name="call_graph_for_container_2">
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#container" title="DocIndex.container()" alt="" coords="62,6,243,38" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#container" title="container()" alt="" coords="347,90,451,122" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__init__" title="__init__()" alt="" coords="500,90,596,122" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#introspect_module" title="docintrospecter.introspect_module()" alt="" coords="7,62,298,94" />
+<area shape="rect" href="epydoc.docparser-module.html#get_lhs_parent" title="docparser.get_lhs_parent()" alt="" coords="42,118,263,150" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#href" title="docwriter.html.HTMLWriter.href()" alt="" coords="10,174,295,206" />
+</map>
+  <img src="call_graph_for_container_2.gif" alt='' usemap="#call_graph_for_container_2" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.apidoc.DottedName-class.html#dominates" class="summary-sig-name">dominates</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">name</span>,
+        <span class="summary-sig-arg">strict</span>=<span class="summary-sig-default">False</span>)</span><br />
+      Return true if this dotted name is equal to a prefix of 
+      <code>name</code>.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.apidoc-pysrc.html#DottedName.dominates">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_dominates-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_dominates-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_dominates" name="call_graph_for_dominates">
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#_get" title="DocIndex._get()" alt="" coords="120,6,264,38" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#dominates" title="dominates()" alt="" coords="428,90,537,122" />
+<area shape="rect" href="epydoc.docbuilder-module.html#_var_shadows_self" title="docbuilder._var_shadows_self()" alt="" coords="61,62,323,94" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_find_top_page" title="docwriter.html.HTMLWriter._find_top_page()" alt="" coords="7,118,377,150" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#pysrc_url" title="docwriter.html.HTMLWriter.pysrc_url()" alt="" coords="29,174,355,206" />
+</map>
+  <img src="call_graph_for_dominates.gif" alt='' usemap="#call_graph_for_dominates" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><a href="epydoc.apidoc.DottedName-class.html" 
+      class="link">DottedName</a></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.apidoc.DottedName-class.html#contextualize" class="summary-sig-name">contextualize</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">context</span>)</span><br />
+      If <code>self</code> and <code>context</code> share a common 
+      ancestor, then return a name for <code>self</code>, relative to that 
+      ancestor.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.apidoc-pysrc.html#DottedName.contextualize">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_contextualize-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_contextualize-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_contextualize" name="call_graph_for_contextualize">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__getitem__" title="__getitem__()" alt="" coords="731,62,859,94" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__len__" title="__len__()" alt="" coords="747,118,843,150" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#contextualize" title="contextualize()" alt="" coords="549,90,683,122" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_get_html_label" title="docwriter.dotgraph.DotGraphUmlClassNode._get_html_label()" alt="" coords="7,6,500,38" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#add_valdoc_nodes" title="docwriter.dotgraph.add_valdoc_nodes()" alt="" coords="93,62,413,94" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#name_list" title="docwriter.dotgraph.name_list()" alt="" coords="127,118,380,150" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#href" title="docwriter.html.HTMLWriter.href()" alt="" coords="111,174,396,206" />
+</map>
+  <img src="call_graph_for_contextualize.gif" alt='' usemap="#call_graph_for_contextualize" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Class Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-ClassVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="UNREACHABLE"></a><span class="summary-name">UNREACHABLE</span> = <code title="'??'"><code class="variable-quote">'</code><code class="variable-string">??</code><code class="variable-quote">'</code></code>
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.apidoc.DottedName-class.html#_IDENTIFIER_RE" class="summary-name" onclick="show_private();">_IDENTIFIER_RE</a> = <code title="re.compile(r'(?x)(\?\?|(script-)?\w+\'?)(-\d+)?$')">re.compile(r'<code class="re-flags">(?x)</code><code class="re-group">(</code>\?\?<code class="re-op">|</code><code class="re-group">(</code>script-<code class="re-group">)</code><code class="re-op">?</code>\w<code class="re-op">+</code>\'<code class="re-op">?</code><code class="re-group"> [...]
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.apidoc.DottedName-class.html#_ok_identifiers" class="summary-name" onclick="show_private();">_ok_identifiers</a> = <code title="set(['??',
+     '??-1',
+     '??-10',
+     '??-11',
+     '??-12',
+     '??-13',
+     '??-2',
+     '??-3',
+..."><code class="variable-group">set([</code><code class="variable-quote">'</code><code class="variable-string">??</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">??-1</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">??-10</code><code class="variable-quote">'</code><code class="variable-op">, </co [...]
+      A cache of identifier strings that have been checked against 
+      _IDENTIFIER_RE and found to be acceptable.
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Method Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-MethodDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">*pieces</span>,
+        <span class="sig-arg">**options</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.apidoc-pysrc.html#DottedName.__init__">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for___init___3-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for___init___3-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for___init___3" name="call_graph_for___init___3">
+<area shape="rect" href="epydoc.apidoc.ClassDoc-class.html#is_exception" title="ClassDoc.is_exception()" alt="" coords="130,6,335,38" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__init__" title="__init__()" alt="" coords="508,762,604,794" />
+<area shape="rect" href="epydoc.apidoc.ClassDoc-class.html#is_newstyle_class" title="ClassDoc.is_newstyle_class()" alt="" coords="111,62,354,94" />
+<area shape="rect" href="epydoc.apidoc.ClassDoc-class.html#is_type" title="ClassDoc.is_type()" alt="" coords="151,118,314,150" />
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#find" title="DocIndex.find()" alt="" coords="160,174,304,206" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__add__" title="__add__()" alt="" coords="183,230,282,262" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__getitem__" title="__getitem__()" alt="" coords="168,286,296,318" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__radd__" title="__radd__()" alt="" coords="180,342,284,374" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#container" title="container()" alt="" coords="180,398,284,430" />
+<area shape="rect" href="epydoc.docbuilder-module.html#_get_docs_from_module_file" title="docbuilder._get_docs_from_module_file()" alt="" coords="63,454,402,486" />
+<area shape="rect" href="epydoc.docbuilder-module.html#_unreachable_name_for" title="docbuilder._unreachable_name_for()" alt="" coords="83,510,382,542" />
+<area shape="rect" href="epydoc.docbuilder-module.html#assign_canonical_names" title="docbuilder.assign_canonical_names()" alt="" coords="82,566,383,598" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#get_canonical_name" title="docintrospecter.get_canonical_name()" alt="" coords="79,622,386,654" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#get_containing_module" title="docintrospecter.get_containing_module()" alt="" coords="68,678,396,710" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#get_value_from_filename" title="docintrospecter.get_value_from_filename()" alt="" coords="60,734,404,766" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#introspect_module" title="docintrospecter.introspect_module()" alt="" coords="87,790,378,822" />
+<area shape="rect" href="epydoc.docparser-module.html#_get_module_name" title="docparser._get_module_name()" alt="" coords="103,846,362,878" />
+<area shape="rect" href="epydoc.docparser-module.html#_is_submodule_import_var" title="docparser._is_submodule_import_var()" alt="" coords="75,902,390,934" />
+<area shape="rect" href="epydoc.docparser-module.html#_process_fromstar_import" title="docparser._process_fromstar_import()" alt="" coords="79,958,386,990" />
+<area shape="rect" href="epydoc.docparser-module.html#apply_decorator" title="docparser.apply_decorator()" alt="" coords="116,1014,348,1046" />
+<area shape="rect" href="epydoc.docparser-module.html#find_base" title="docparser.find_base()" alt="" coords="140,1070,324,1102" />
+<area shape="rect" href="epydoc.docparser-module.html#parse_docs" title="docparser.parse_docs()" alt="" coords="135,1126,330,1158" />
+<area shape="rect" href="epydoc.docparser-module.html#parse_dotted_name" title="docparser.parse_dotted_name()" alt="" coords="104,1182,360,1214" />
+<area shape="rect" href="epydoc.docparser-module.html#process_classdef" title="docparser.process_classdef()" alt="" coords="114,1238,351,1270" />
+<area shape="rect" href="epydoc.docparser-module.html#process_from_import" title="docparser.process_from_import()" alt="" coords="98,1294,367,1326" />
+<area shape="rect" href="epydoc.docparser-module.html#process_funcdef" title="docparser.process_funcdef()" alt="" coords="116,1350,348,1382" />
+<area shape="rect" href="epydoc.docparser-module.html#rhs_to_valuedoc" title="docparser.rhs_to_valuedoc()" alt="" coords="115,1406,350,1438" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_raise_field" title="docstringparser.process_raise_field()" alt="" coords="84,1462,380,1494" />
+<area shape="rect" href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#doclink" title="docwriter.html_colorize.PythonSourceColorizer.doclink()" alt="" coords="7,1518,458,1550" />
+</map>
+  <img src="call_graph_for___init___3.gif" alt='' usemap="#call_graph_for___init___3" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Construct a new dotted name from the given sequence of pieces, each of
+  which can be either a <code>string</code> or a <code>DottedName</code>. 
+  Each piece is divided into a sequence of identifiers, and these sequences
+  are combined together (in order) to form the identifier sequence for the 
+  new <code>DottedName</code>.  If a piece contains a string, then it is 
+  divided into substrings by splitting on periods, and each substring is 
+  checked to see if it is a valid identifier.</p>
+  <p>As an optimization, <code>pieces</code> may also contain a single 
+  tuple of values.  In that case, that tuple will be used as the 
+  <code>DottedName</code>'s identifiers; it will <i>not</i> be checked to 
+  see if it's valid.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>strict</code></strong> - if true, then raise an <a 
+          href="epydoc.apidoc.DottedName.InvalidDottedName-class.html" 
+          class="link">InvalidDottedName</a> if the given name is invalid.</li>
+    </ul></dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="__str__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__str__</span>(<span class="sig-arg">self</span>)</span>
+    <br /><em class="fname">(Informal representation operator)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.apidoc-pysrc.html#DottedName.__str__">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for___str__-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for___str__-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for___str__" name="call_graph_for___str__">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__str__" title="__str__()" alt="" coords="567,988,657,1020" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#_init_grouping" title="NamespaceDoc._init_grouping()" alt="" coords="128,8,395,40" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#__repr__" title="ValueDoc.__repr__()" alt="" coords="171,64,352,96" />
+<area shape="rect" href="epydoc.docbuilder-module.html#_get_docs_from_module_file" title="docbuilder._get_docs_from_module_file()" alt="" coords="92,120,431,152" />
+<area shape="rect" href="epydoc.docbuilder-module.html#_unreachable_name_for" title="docbuilder._unreachable_name_for()" alt="" coords="112,176,411,208" />
+<area shape="rect" href="epydoc.docbuilder-module.html#merge_bases" title="docbuilder.merge_bases()" alt="" coords="155,232,368,264" />
+<area shape="rect" href="epydoc.docbuilder-module.html#merge_docs" title="docbuilder.merge_docs()" alt="" coords="157,288,365,320" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#_get_valuedoc" title="docintrospecter._get_valuedoc()" alt="" coords="131,344,392,376" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#get_value_from_filename" title="docintrospecter.get_value_from_filename()" alt="" coords="89,400,433,432" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#introspect_module" title="docintrospecter.introspect_module()" alt="" coords="116,456,407,488" />
+<area shape="rect" href="epydoc.docparser-module.html#find_base" title="docparser.find_base()" alt="" coords="169,512,353,544" />
+<area shape="rect" href="epydoc.docparser-module.html#lookup_value" title="docparser.lookup_value()" alt="" coords="156,568,367,600" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphEdge-class.html#to_dotfile" title="docwriter.dotgraph.DotGraphEdge.to_dotfile()" alt="" coords="76,624,447,656" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphNode-class.html#to_dotfile" title="docwriter.dotgraph.DotGraphNode.to_dotfile()" alt="" coords="76,680,447,712" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_attribute_cell" title="docwriter.dotgraph.DotGraphUmlClassNode._attribute_cell()" alt="" coords="21,736,501,768" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_get_html_label" title="docwriter.dotgraph.DotGraphUmlClassNode._get_html_label()" alt="" coords="15,792,508,824" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_operation_cell" title="docwriter.dotgraph.DotGraphUmlClassNode._operation_cell()" alt="" coords="17,848,505,880" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#to_dotfile" title="docwriter.dotgraph.DotGraphUmlClassNode.to_dotfile()" alt="" coords="39,904,484,936" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlModuleNode-class.html#_get_html_label" title="docwriter.dotgraph.DotGraphUmlModuleNode._get_html_label()" alt="" coords="5,960,517,992" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlModuleNode-class.html#to_dotfile" title="docwriter.dotgraph.DotGraphUmlModuleNode.to_dotfile()" alt="" coords="31,1016,492,1048" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#name_list" title="docwriter.dotgraph.name_list()" alt="" coords="135,1072,388,1104" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#specialize_valdoc_node" title="docwriter.dotgraph.specialize_valdoc_node()" alt="" coords="83,1128,440,1160" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#uml_class_tree_graph" title="docwriter.dotgraph.uml_class_tree_graph()" alt="" coords="89,1184,433,1216" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_url" title="docwriter.html.HTMLWriter._url()" alt="" coords="119,1240,404,1272" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#href" title="docwriter.html.HTMLWriter.href()" alt="" coords="119,1296,404,1328" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#pysrc_url" title="docwriter.html.HTMLWriter.pysrc_url()" alt="" coords="99,1352,424,1384" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write" title="docwriter.html.HTMLWriter.write()" alt="" coords="115,1408,408,1440" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_class" title="docwriter.html.HTMLWriter.write_class()" alt="" coords="92,1464,431,1496" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_module" title="docwriter.html.HTMLWriter.write_module()" alt="" coords="83,1520,440,1552" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_redirect_page" title="docwriter.html.HTMLWriter.write_redirect_page()" alt="" coords="60,1576,463,1608" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_sourcecode" title="docwriter.html.HTMLWriter.write_sourcecode()" alt="" coords="68,1632,455,1664" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_toc_section" title="docwriter.html.HTMLWriter.write_toc_section()" alt="" coords="68,1688,455,1720" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_url_record" title="docwriter.html.HTMLWriter.write_url_record()" alt="" coords="72,1744,451,1776" />
+<area shape="rect" href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#doc_descr" title="docwriter.html_colorize.PythonSourceColorizer.doc_descr()" alt="" coords="25,1800,497,1832" />
+<area shape="rect" href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#handle_line" title="docwriter.html_colorize.PythonSourceColorizer.handle_line()" alt="" coords="20,1856,503,1888" />
+<area shape="rect" href="epydoc.log-module.html#info" title="log.info()" alt="" coords="216,1912,307,1944" />
+<area shape="rect" href="epydoc.log-module.html#progress" title="log.progress()" alt="" coords="199,1968,324,2000" />
+</map>
+  <img src="call_graph_for___str__.gif" alt='' usemap="#call_graph_for___str__" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Return the dotted name as a string formed by joining its identifiers 
+  with periods:</p>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">print</span> DottedName(<span class="py-string">'epydoc'</span>, <span class="py-string">'api_doc'</span>, DottedName')
+<span class="py-output">epydoc.apidoc.DottedName</span></pre>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="__getitem__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__getitem__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">i</span>)</span>
+    <br /><em class="fname">(Indexing operator)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.apidoc-pysrc.html#DottedName.__getitem__">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for___getitem__-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for___getitem__-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for___getitem__" name="call_graph_for___getitem__">
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#_get" title="DocIndex._get()" alt="" coords="189,9,333,41" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__getitem__" title="__getitem__()" alt="" coords="565,1073,693,1105" />
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#_get_from" title="DocIndex._get_from()" alt="" coords="167,65,356,97" />
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#_get_module_classes" title="DocIndex._get_module_classes()" alt="" coords="125,121,397,153" />
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#find" title="DocIndex.find()" alt="" coords="189,177,333,209" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__init__" title="__init__()" alt="" coords="743,1073,839,1105" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#contextualize" title="contextualize()" alt="" coords="195,233,328,265" />
+<area shape="rect" href="epydoc.apidoc.ModuleDoc-class.html#init_submodule_groups" title="ModuleDoc.init_submodule_groups()" alt="" coords="109,289,413,321" />
+<area shape="rect" href="epydoc.docbuilder-module.html#_report_valdoc_progress" title="docbuilder._report_valdoc_progress()" alt="" coords="111,345,412,377" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#verify_name" title="docintrospecter.verify_name()" alt="" coords="137,401,385,433" />
+<area shape="rect" href="epydoc.docparser-module.html#_find" title="docparser._find()" alt="" coords="187,457,336,489" />
+<area shape="rect" href="epydoc.docparser-module.html#_find_in_namespace" title="docparser._find_in_namespace()" alt="" coords="129,513,393,545" />
+<area shape="rect" href="epydoc.docparser-module.html#_global_name" title="docparser._global_name()" alt="" coords="153,569,369,601" />
+<area shape="rect" href="epydoc.docparser-module.html#_import_var" title="docparser._import_var()" alt="" coords="160,625,363,657" />
+<area shape="rect" href="epydoc.docparser-module.html#add_to_group" title="docparser.add_to_group()" alt="" coords="155,681,368,713" />
+<area shape="rect" href="epydoc.docparser-module.html#del_variable" title="docparser.del_variable()" alt="" coords="160,737,363,769" />
+<area shape="rect" href="epydoc.docparser-module.html#find_base" title="docparser.find_base()" alt="" coords="169,793,353,825" />
+<area shape="rect" href="epydoc.docparser-module.html#lookup_value" title="docparser.lookup_value()" alt="" coords="156,849,367,881" />
+<area shape="rect" href="epydoc.docparser-module.html#lookup_variable" title="docparser.lookup_variable()" alt="" coords="145,905,377,937" />
+<area shape="rect" href="epydoc.docparser-module.html#process_assignment" title="docparser.process_assignment()" alt="" coords="132,961,391,993" />
+<area shape="rect" href="epydoc.docstringparser-module.html#parse_docstring" title="docstringparser.parse_docstring()" alt="" coords="125,1017,397,1049" />
+<area shape="rect" href="epydoc.docstringparser-module.html#user_docfields" title="docstringparser.user_docfields()" alt="" coords="131,1073,392,1105" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#__init__" title="docwriter.dotgraph.DotGraphUmlClassNode.__init__()" alt="" coords="44,1129,479,1161" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlModuleNode-class.html#_get_html_label" title="docwriter.dotgraph.DotGraphUmlModuleNode._get_html_label()" alt="" coords="5,1185,517,1217" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#import_graph" title="docwriter.dotgraph.import_graph()" alt="" coords="121,1241,401,1273" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#uml_class_tree_graph" title="docwriter.dotgraph.uml_class_tree_graph()" alt="" coords="89,1297,433,1329" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_crumb" title="docwriter.html.HTMLWriter._crumb()" alt="" coords="105,1353,417,1385" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_doc_or_ancestor_is_private" title="docwriter.html.HTMLWriter._doc_or_ancestor_is_private()" alt="" coords="27,1409,496,1441" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_url" title="docwriter.html.HTMLWriter._url()" alt="" coords="119,1465,404,1497" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#breadcrumbs" title="docwriter.html.HTMLWriter.breadcrumbs()" alt="" coords="87,1521,436,1553" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#build_identifier_index" title="docwriter.html.HTMLWriter.build_identifier_index()" alt="" coords="51,1577,472,1609" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#doc_kind" title="docwriter.html.HTMLWriter.doc_kind()" alt="" coords="100,1633,423,1665" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#pysrc_url" title="docwriter.html.HTMLWriter.pysrc_url()" alt="" coords="99,1689,424,1721" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write" title="docwriter.html.HTMLWriter.write()" alt="" coords="115,1745,408,1777" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_class" title="docwriter.html.HTMLWriter.write_class()" alt="" coords="92,1801,431,1833" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_index_section" title="docwriter.html.HTMLWriter.write_index_section()" alt="" coords="59,1857,464,1889" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_module" title="docwriter.html.HTMLWriter.write_module()" alt="" coords="83,1913,440,1945" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_module_toc" title="docwriter.html.HTMLWriter.write_module_toc()" alt="" coords="67,1969,456,2001" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_module_tree_item" title="docwriter.html.HTMLWriter.write_module_tree_item()" alt="" coords="43,2025,480,2057" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_toc_section" title="docwriter.html.HTMLWriter.write_toc_section()" alt="" coords="68,2081,455,2113" />
+<area shape="rect" href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#doc_kind" title="docwriter.html_colorize.PythonSourceColorizer.doc_kind()" alt="" coords="28,2137,495,2169" />
+</map>
+  <img src="call_graph_for___getitem__.gif" alt='' usemap="#call_graph_for___getitem__" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Return the <code>i</code>th identifier in this 
+  <code>DottedName</code>.  If <code>i</code> is a non-empty slice, then 
+  return a <code>DottedName</code> built from the identifiers selected by 
+  the slice.  If <code>i</code> is an empty slice, return an empty list 
+  (since empty <code>DottedName</code>s are not valid).</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="__cmp__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__cmp__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">other</span>)</span>
+    <br /><em class="fname">(Comparison operator)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.apidoc-pysrc.html#DottedName.__cmp__">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for___cmp___2-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for___cmp___2-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for___cmp___2" name="call_graph_for___cmp___2">
+<area shape="rect" href="epydoc.apidoc.ClassDoc-class.html#is_exception" title="ClassDoc.is_exception()" alt="" coords="63,6,268,38" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__cmp__" title="__cmp__()" alt="" coords="375,510,479,542" />
+<area shape="rect" href="epydoc.apidoc.ClassDoc-class.html#is_newstyle_class" title="ClassDoc.is_newstyle_class()" alt="" coords="44,62,287,94" />
+<area shape="rect" href="epydoc.apidoc.ClassDoc-class.html#is_type" title="ClassDoc.is_type()" alt="" coords="84,118,247,150" />
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#__init__" title="DocIndex.__init__()" alt="" coords="77,174,253,206" />
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#_get_module_classes" title="DocIndex._get_module_classes()" alt="" coords="29,230,301,262" />
+<area shape="rect" href="epydoc.apidoc.ModuleDoc-class.html#init_submodule_groups" title="ModuleDoc.init_submodule_groups()" alt="" coords="13,286,317,318" />
+<area shape="rect" href="epydoc.docbuilder-module.html#_unreachable_name_for" title="docbuilder._unreachable_name_for()" alt="" coords="16,342,315,374" />
+<area shape="rect" href="epydoc.docbuilder-module.html#_var_shadows_self" title="docbuilder._var_shadows_self()" alt="" coords="35,398,296,430" />
+<area shape="rect" href="epydoc.docbuilder-module.html#build_doc_index" title="docbuilder.build_doc_index()" alt="" coords="44,454,287,486" />
+<area shape="rect" href="epydoc.docbuilder-module.html#merge_bases" title="docbuilder.merge_bases()" alt="" coords="59,510,272,542" />
+<area shape="rect" href="epydoc.docbuilder-module.html#merge_docs" title="docbuilder.merge_docs()" alt="" coords="61,566,269,598" />
+<area shape="rect" href="epydoc.docbuilder-module.html#merge_submodules" title="docbuilder.merge_submodules()" alt="" coords="35,622,296,654" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#introspect_module" title="docintrospecter.introspect_module()" alt="" coords="20,678,311,710" />
+<area shape="rect" href="epydoc.docparser-module.html#_is_submodule_import_var" title="docparser._is_submodule_import_var()" alt="" coords="8,734,323,766" />
+<area shape="rect" href="epydoc.docparser-module.html#apply_decorator" title="docparser.apply_decorator()" alt="" coords="49,790,281,822" />
+<area shape="rect" href="epydoc.docparser-module.html#find_base" title="docparser.find_base()" alt="" coords="73,846,257,878" />
+<area shape="rect" href="epydoc.docparser-module.html#lookup_value" title="docparser.lookup_value()" alt="" coords="60,902,271,934" />
+<area shape="rect" href="epydoc.docparser-module.html#process_classdef" title="docparser.process_classdef()" alt="" coords="47,958,284,990" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#add_valdoc_nodes" title="docwriter.dotgraph.add_valdoc_nodes()" alt="" coords="5,1014,325,1046" />
+</map>
+  <img src="call_graph_for___cmp___2.gif" alt='' usemap="#call_graph_for___cmp___2" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Compare this dotted name to <code>other</code>.  Two dotted names are 
+  considered equal if their identifier subsequences are equal. Ordering 
+  between dotted names is lexicographic, in order of identifier from left 
+  to right.</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="container"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">container</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.apidoc-pysrc.html#DottedName.container">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_container_2-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_container_2-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_container_2" name="call_graph_for_container_2">
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#container" title="DocIndex.container()" alt="" coords="62,6,243,38" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#container" title="container()" alt="" coords="347,90,451,122" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__init__" title="__init__()" alt="" coords="500,90,596,122" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#introspect_module" title="docintrospecter.introspect_module()" alt="" coords="7,62,298,94" />
+<area shape="rect" href="epydoc.docparser-module.html#get_lhs_parent" title="docparser.get_lhs_parent()" alt="" coords="42,118,263,150" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#href" title="docwriter.html.HTMLWriter.href()" alt="" coords="10,174,295,206" />
+</map>
+  <img src="call_graph_for_container_2.gif" alt='' usemap="#call_graph_for_container_2" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Return the DottedName formed by removing the last identifier from this
+  dotted name's identifier sequence.  If this dotted name only has one name
+  in its identifier sequence, return <code>None</code> instead.</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="dominates"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">dominates</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">name</span>,
+        <span class="sig-arg">strict</span>=<span class="sig-default">False</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.apidoc-pysrc.html#DottedName.dominates">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_dominates-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_dominates-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_dominates" name="call_graph_for_dominates">
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#_get" title="DocIndex._get()" alt="" coords="120,6,264,38" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#dominates" title="dominates()" alt="" coords="428,90,537,122" />
+<area shape="rect" href="epydoc.docbuilder-module.html#_var_shadows_self" title="docbuilder._var_shadows_self()" alt="" coords="61,62,323,94" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_find_top_page" title="docwriter.html.HTMLWriter._find_top_page()" alt="" coords="7,118,377,150" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#pysrc_url" title="docwriter.html.HTMLWriter.pysrc_url()" alt="" coords="29,174,355,206" />
+</map>
+  <img src="call_graph_for_dominates.gif" alt='' usemap="#call_graph_for_dominates" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Return true if this dotted name is equal to a prefix of 
+  <code>name</code>.  If <code>strict</code> is true, then also require 
+  that <code>self!=name</code>.</p>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>DottedName(<span class="py-string">'a.b'</span>).dominates(DottedName(<span class="py-string">'a.b.c.d'</span>))
+<span class="py-output">True</span></pre>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="contextualize"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">contextualize</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">context</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.apidoc-pysrc.html#DottedName.contextualize">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_contextualize-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_contextualize-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_contextualize" name="call_graph_for_contextualize">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__getitem__" title="__getitem__()" alt="" coords="731,62,859,94" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__len__" title="__len__()" alt="" coords="747,118,843,150" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#contextualize" title="contextualize()" alt="" coords="549,90,683,122" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_get_html_label" title="docwriter.dotgraph.DotGraphUmlClassNode._get_html_label()" alt="" coords="7,6,500,38" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#add_valdoc_nodes" title="docwriter.dotgraph.add_valdoc_nodes()" alt="" coords="93,62,413,94" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#name_list" title="docwriter.dotgraph.name_list()" alt="" coords="127,118,380,150" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#href" title="docwriter.html.HTMLWriter.href()" alt="" coords="111,174,396,206" />
+</map>
+  <img src="call_graph_for_contextualize.gif" alt='' usemap="#call_graph_for_contextualize" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>If <code>self</code> and <code>context</code> share a common ancestor,
+  then return a name for <code>self</code>, relative to that ancestor.  If 
+  they do not share a common ancestor (or if <code>context</code> is 
+  <code>UNKNOWN</code>), then simply return <code>self</code>.</p>
+  <p>This is used to generate shorter versions of dotted names in cases 
+  where users can infer the intended target from the context.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>context</code></strong> (<a href="epydoc.apidoc.DottedName-class.html" 
+          class="link">DottedName</a>)</li>
+    </ul></dd>
+    <dt>Returns: <a href="epydoc.apidoc.DottedName-class.html" 
+      class="link">DottedName</a></dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== CLASS VARIABLE DETAILS ==================== -->
+<a name="section-ClassVariableDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Class Variable Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-ClassVariableDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="_IDENTIFIER_RE"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">_IDENTIFIER_RE</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+re.compile(r'<code class="re-flags">(?x)</code><code class="re-group">(</code>\?\?<code class="re-op">|</code><code class="re-group">(</code>script-<code class="re-group">)</code><code class="re-op">?</code>\w<code class="re-op">+</code>\'<code class="re-op">?</code><code class="re-group">)</code><code class="re-group">(</code>-\d<code class="re-op">+</code><code class="re-group">)</code><code class="re-op">?</code>$')
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="_ok_identifiers"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">_ok_identifiers</h3>
+  <p>A cache of identifier strings that have been checked against 
+  _IDENTIFIER_RE and found to be acceptable.</p>
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-group">set([</code><code class="variable-quote">'</code><code class="variable-string">??</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+     <code class="variable-quote">'</code><code class="variable-string">??-1</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+     <code class="variable-quote">'</code><code class="variable-string">??-10</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+     <code class="variable-quote">'</code><code class="variable-string">??-11</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+     <code class="variable-quote">'</code><code class="variable-string">??-12</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+     <code class="variable-quote">'</code><code class="variable-string">??-13</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+     <code class="variable-quote">'</code><code class="variable-string">??-2</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+     <code class="variable-quote">'</code><code class="variable-string">??-3</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:07:16 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.apidoc.DottedName.InvalidDottedName-class.html b/doc/api/epydoc.apidoc.DottedName.InvalidDottedName-class.html
new file mode 100644
index 0000000..e4d1ebf
--- /dev/null
+++ b/doc/api/epydoc.apidoc.DottedName.InvalidDottedName-class.html
@@ -0,0 +1,161 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.apidoc.DottedName.InvalidDottedName</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.apidoc-module.html">Module apidoc</a> ::
+        <a href="epydoc.apidoc.DottedName-class.html">Class DottedName</a> ::
+        Class InvalidDottedName
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.apidoc.DottedName.InvalidDottedName-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class InvalidDottedName</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.apidoc-pysrc.html#DottedName.InvalidDottedName">source code</a></span></p>
+<center>
+<center>  <map id="uml_class_diagram_for_epydoc_a_4" name="uml_class_diagram_for_epydoc_a_4">
+<area shape="rect" href="javascript:void(0);" title="Inappropriate argument value (of correct type)." alt="" coords="15,179,172,221" />
+<area shape="rect" href="epydoc.apidoc.DottedName.InvalidDottedName-class.html" title="An exception raised by the DottedName constructor when one of its arguments is not a valid dotted name." alt="" coords="24,240,163,283" />
+<area shape="rect" href="javascript:void(0);" title="Base class for all standard Python exceptions." alt="" coords="6,117,182,160" />
+<area shape="rect" href="javascript:void(0);" title="exceptions.Exception.__getitem__" alt="" coords="30,36,158,55" />
+<area shape="rect" href="javascript:void(0);" title="exceptions.Exception.__init__" alt="" coords="30,55,158,73" />
+<area shape="rect" href="javascript:void(0);" title="exceptions.Exception.__str__" alt="" coords="30,73,158,92" />
+<area shape="rect" href="javascript:void(0);" title="Common base class for all exceptions." alt="" coords="18,5,170,99" />
+</map>
+  <img src="uml_class_diagram_for_epydoc_a_4.gif" alt='' usemap="#uml_class_diagram_for_epydoc_a_4" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<p>An exception raised by the DottedName constructor when one of its 
+  arguments is not a valid dotted name.</p>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.Exception</code></b>:
+      <code>__getitem__</code>,
+      <code>__init__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:07:16 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.apidoc.GenericValueDoc-class.html b/doc/api/epydoc.apidoc.GenericValueDoc-class.html
new file mode 100644
index 0000000..dd4476c
--- /dev/null
+++ b/doc/api/epydoc.apidoc.GenericValueDoc-class.html
@@ -0,0 +1,457 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.apidoc.GenericValueDoc</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.apidoc-module.html">Module apidoc</a> ::
+        Class GenericValueDoc
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.apidoc.GenericValueDoc-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class GenericValueDoc</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.apidoc-pysrc.html#GenericValueDoc">source code</a></span></p>
+<center>
+<center>  <map id="uml_class_diagram_for_epydoc_a_5" name="uml_class_diagram_for_epydoc_a_5">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#docstring" title="The documented item's docstring." alt="" coords="419,28,792,47" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#docstring_lineno" title="The line number on which the documented item's docstring begins." alt="" coords="419,47,792,65" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#other_docs" title="A flag indicating if the entire docstring body (except tags if any) is  entirely included in the summary." alt="" coords="419,65,792,84" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#metadata" title="Metadata about the documented item, extracted from fields in its docstring." alt="" coords="419,84,792,103" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#docs_extracted_by" title="Information about where the information contained by this APIDoc came from." alt="" coords="419,103,792,121" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__init__" title="Construct a new APIDoc object." alt="" coords="419,124,792,143" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__setattr__" title="Modify an APIDoc's attribute." alt="" coords="419,143,792,161" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#pp" title="Return a pretty-printed string representation for the information contained in this APIDoc." alt="" coords="419,161,792,180" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__str__" title="Return a pretty-printed string representation for the information contained in this APIDoc." alt="" coords="419,180,792,199" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#specialize_to" title="Change self's class to cls." alt="" coords="419,199,792,217" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__hash__" title="hash(x)" alt="" coords="419,217,792,236" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__cmp__" title="epydoc.apidoc.APIDoc.__cmp__" alt="" coords="419,236,792,255" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#merge_and_overwrite" title="Combine self and other into a merged object, such that any changes made to  one will affect the other." alt="" coords="419,255,792,273" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html" title="API documentation information for a single element of a Python program." alt="" coords="407,5,804,280" />
+<area shape="rect" href="epydoc.markup.ParsedDocstring-class.html" title="A standard intermediate representation for parsed docstrings that can be used to generate output." alt="" coords="5,436,189,473" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#descr" title="epydoc.apidoc.APIDoc.descr" alt="" coords="147,291,181,306" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#descr" title="descr" alt="" coords="413,181,421,189" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#descr" title="descr" alt="" coords="93,437,101,445" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#summary" title="epydoc.apidoc.APIDoc.summary" alt="" coords="240,291,296,306" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#summary" title="summary" alt="" coords="413,199,421,207" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#summary" title="summary" alt="" coords="100,437,108,445" />
+<area shape="rect" href="epydoc.docstringparser.DocstringField-class.html" title="A simple docstring field, which can be used to describe specific information about an object, such as its author or its version." alt="" coords="219,436,435,473" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#extra_docstring_fields" title="epydoc.apidoc.APIDoc.extra_docstring_fields" alt="" coords="468,291,599,306" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#extra_docstring_fields" title="extra_docstring_fields" alt="" coords="479,271,487,279" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#extra_docstring_fields" title="extra_docstring_fields" alt="" coords="335,437,343,445" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#pyval" title="A pointer to the actual Python object described by this ValueDoc." alt="" coords="476,340,735,359" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#parse_repr" title="A text representation of this value, extracted from parsing its source  code." alt="" coords="476,359,735,377" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#REPR_MAXLINES" title="The maximum number of lines of text that should be generated by  pyval_repr()." alt="" coords="476,377,735,396" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#REPR_LINELEN" title="The maximum number of characters for lines of text that should be generated by pyval_repr()." alt="" coords="476,396,735,415" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#SUMMARY_REPR_LINELEN" title="The maximum number of characters for the single-line text representation  generated by summary_pyval_repr()." alt="" coords="476,415,735,433" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#REPR_MIN_SCORE" title="The minimum score that a value representation based on pyval should have in order to be used instead of parse_repr as the canonical representation for  this ValueDoc's value." alt="" coords="476,433,735,452" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#toktree" title="This is currently used to extract values from __all__, etc, in the  docparser module; maybe I should specialize process_assignment and extract  it there?  Although, for __all__, it's not clear where I'd put the value,  since I just use it to set private/public/imported attribs on other vars  (that might not exist yet at the time.)" alt="" coords="476,452,735,471" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#__repr__" title="repr(x)" alt="" coords="476,473,735,492" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#__setstate__" title="epydoc.apidoc.ValueDoc.__setstate__" alt="" coords="476,492,735,511" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#__getstate__" title="State serializer for the pickle module." alt="" coords="476,511,735,529" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#pyval_repr" title="Return a formatted representation of the Python object described by this  ValueDoc." alt="" coords="476,529,735,548" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#summary_pyval_repr" title="Return a single-line formatted representation of the Python object  described by this ValueDoc." alt="" coords="476,548,735,567" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#apidoc_links" title="Return a list of all APIDocs that are directly linked from this APIDoc  (i.e., are contained or pointed to by one or more of this APIDoc's  attributes.)" alt="" coords="476,567,735,585" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html" title="API documentation information about a single Python value." alt="" coords="464,317,747,592" />
+<area shape="rect" href="epydoc.apidoc.ModuleDoc-class.html" title="API documentation information about a single module." alt="" coords="281,639,385,676" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html" title="A sequence of identifiers, separated by periods, used to name a Python variable, value, or argument." alt="" coords="449,723,561,760" />
+<area shape="rect" href="epydoc.apidoc.GenericValueDoc-class.html#is_detailed" title="Does this object deserve a box with extra details?" alt="" coords="552,660,659,679" />
+<area shape="rect" href="epydoc.apidoc.GenericValueDoc-class.html" title="API documentation about a 'generic' value, i.e., one that does not have its own docstring or any information other than its value and parse representation." alt="" coords="540,629,671,685" />
+<area shape="rect" href="epydoc.apidoc.GenericValueDoc-class.html#canonical_name" title="epydoc.apidoc.GenericValueDoc.canonical_name" alt="" coords="558,697,655,711" />
+<area shape="rect" href="epydoc.apidoc.GenericValueDoc-class.html#canonical_name" title="canonical_name" alt="" coords="575,676,583,684" />
+<area shape="rect" href="epydoc.apidoc.GenericValueDoc-class.html#canonical_name" title="canonical_name" alt="" coords="517,724,525,732" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#defining_module" title="epydoc.apidoc.ValueDoc.defining_module" alt="" coords="335,603,433,618" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#defining_module" title="defining_module" alt="" coords="471,575,479,583" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#defining_module" title="defining_module" alt="" coords="324,640,332,648" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#proxy_for" title="epydoc.apidoc.ValueDoc.proxy_for" alt="" coords="469,650,525,665" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#proxy_for" title="proxy_for" alt="" coords="484,583,492,591" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#proxy_for" title="proxy_for" alt="" coords="489,724,497,732" />
+</map>
+  <img src="uml_class_diagram_for_epydoc_a_5.gif" alt='' usemap="#uml_class_diagram_for_epydoc_a_5" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<p>API documentation about a 'generic' value, i.e., one that does not 
+  have its own docstring or any information other than its value and parse 
+  representation.  <code>GenericValueDoc</code>s do not get assigned 
+  cannonical names.</p>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>bool</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.apidoc.GenericValueDoc-class.html#is_detailed" class="summary-sig-name">is_detailed</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Does this object deserve a box with extra details?</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.apidoc-pysrc.html#GenericValueDoc.is_detailed">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.ValueDoc-class.html">ValueDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#__getstate__">__getstate__</a></code>,
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#__repr__">__repr__</a></code>,
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#__setstate__">__setstate__</a></code>,
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#apidoc_links">apidoc_links</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.APIDoc-class.html">APIDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.APIDoc-class.html#__cmp__">__cmp__</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#__hash__">__hash__</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#__init__">__init__</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#__setattr__">__setattr__</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#__str__">__str__</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#merge_and_overwrite">merge_and_overwrite</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#pp">pp</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#specialize_to">specialize_to</a></code>
+      </p>
+    <div class="private">    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.APIDoc-class.html">APIDoc</a></code></b> (private):
+      <code><a href="epydoc.apidoc.APIDoc-class.html#_debug_setattr" onclick="show_private();">_debug_setattr</a></code>
+      </p></div>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>
+      </p>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Value Representation</th></tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.ValueDoc-class.html">ValueDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#pyval_repr">pyval_repr</a></code>,
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#summary_pyval_repr">summary_pyval_repr</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Class Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-ClassVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><a href="epydoc.apidoc.DottedName-class.html" 
+      class="link">DottedName</a></span>
+    </td><td class="summary">
+        <a name="canonical_name"></a><span class="summary-name">canonical_name</span> = <code title="None">None</code><br />
+      A dotted name that serves as a unique identifier for this 
+      <code>ValueDoc</code>'s value.
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Value Representation</th></tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.ValueDoc-class.html">ValueDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#REPR_LINELEN">REPR_LINELEN</a></code>,
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#REPR_MAXLINES">REPR_MAXLINES</a></code>,
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#REPR_MIN_SCORE">REPR_MIN_SCORE</a></code>,
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#SUMMARY_REPR_LINELEN">SUMMARY_REPR_LINELEN</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== INSTANCE VARIABLES ==================== -->
+<a name="section-InstanceVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.ValueDoc-class.html">ValueDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#toktree">toktree</a></code>
+      </p>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Value Representation</th></tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.ValueDoc-class.html">ValueDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#parse_repr">parse_repr</a></code>,
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#pyval">pyval</a></code>
+      </p>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Context</th></tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.ValueDoc-class.html">ValueDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#defining_module">defining_module</a></code>
+      </p>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Information about Imported Variables</th></tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.ValueDoc-class.html">ValueDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#proxy_for">proxy_for</a></code>
+      </p>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Docstrings</th></tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.APIDoc-class.html">APIDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.APIDoc-class.html#docstring">docstring</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#docstring_lineno">docstring_lineno</a></code>
+      </p>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Information Extracted from Docstrings</th></tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.APIDoc-class.html">APIDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.APIDoc-class.html#descr">descr</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#extra_docstring_fields">extra_docstring_fields</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#metadata">metadata</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#other_docs">other_docs</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#summary">summary</a></code>
+      </p>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Source Information</th></tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.APIDoc-class.html">APIDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.APIDoc-class.html#docs_extracted_by">docs_extracted_by</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Properties</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Properties"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Method Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-MethodDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="is_detailed"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">is_detailed</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.apidoc-pysrc.html#GenericValueDoc.is_detailed">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Does this object deserve a box with extra details?</p>
+  <dl class="fields">
+    <dt>Returns: <code>bool</code></dt>
+        <dd>True if the object needs extra details, else False.</dd>
+    <dt>Overrides:
+        <a href="epydoc.apidoc.APIDoc-class.html#is_detailed">APIDoc.is_detailed</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:07:17 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.apidoc.ModuleDoc-class.html b/doc/api/epydoc.apidoc.ModuleDoc-class.html
new file mode 100644
index 0000000..bb6e438
--- /dev/null
+++ b/doc/api/epydoc.apidoc.ModuleDoc-class.html
@@ -0,0 +1,904 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.apidoc.ModuleDoc</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.apidoc-module.html">Module apidoc</a> ::
+        Class ModuleDoc
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.apidoc.ModuleDoc-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class ModuleDoc</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.apidoc-pysrc.html#ModuleDoc">source code</a></span></p>
+<center>
+<center>  <map id="uml_class_diagram_for_epydoc_a_6" name="uml_class_diagram_for_epydoc_a_6">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#docstring" title="The documented item's docstring." alt="" coords="419,28,792,47" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#docstring_lineno" title="The line number on which the documented item's docstring begins." alt="" coords="419,47,792,65" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#other_docs" title="A flag indicating if the entire docstring body (except tags if any) is  entirely included in the summary." alt="" coords="419,65,792,84" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#metadata" title="Metadata about the documented item, extracted from fields in its docstring." alt="" coords="419,84,792,103" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#docs_extracted_by" title="Information about where the information contained by this APIDoc came from." alt="" coords="419,103,792,121" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__setattr__" title="Modify an APIDoc's attribute." alt="" coords="419,124,792,143" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#pp" title="Return a pretty-printed string representation for the information contained in this APIDoc." alt="" coords="419,143,792,161" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__str__" title="Return a pretty-printed string representation for the information contained in this APIDoc." alt="" coords="419,161,792,180" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#specialize_to" title="Change self's class to cls." alt="" coords="419,180,792,199" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__hash__" title="hash(x)" alt="" coords="419,199,792,217" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__cmp__" title="epydoc.apidoc.APIDoc.__cmp__" alt="" coords="419,217,792,236" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#merge_and_overwrite" title="Combine self and other into a merged object, such that any changes made to  one will affect the other." alt="" coords="419,236,792,255" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html" title="API documentation information for a single element of a Python program." alt="" coords="407,5,804,261" />
+<area shape="rect" href="epydoc.markup.ParsedDocstring-class.html" title="A standard intermediate representation for parsed docstrings that can be used to generate output." alt="" coords="5,408,189,445" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#descr" title="epydoc.apidoc.APIDoc.descr" alt="" coords="147,273,181,287" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#descr" title="descr" alt="" coords="413,168,421,176" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#descr" title="descr" alt="" coords="93,409,101,417" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#summary" title="epydoc.apidoc.APIDoc.summary" alt="" coords="241,273,297,287" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#summary" title="summary" alt="" coords="413,185,421,193" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#summary" title="summary" alt="" coords="101,409,109,417" />
+<area shape="rect" href="epydoc.docstringparser.DocstringField-class.html" title="A simple docstring field, which can be used to describe specific information about an object, such as its author or its version." alt="" coords="219,408,435,445" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#extra_docstring_fields" title="epydoc.apidoc.APIDoc.extra_docstring_fields" alt="" coords="468,273,599,287" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#extra_docstring_fields" title="extra_docstring_fields" alt="" coords="479,252,487,260" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#extra_docstring_fields" title="extra_docstring_fields" alt="" coords="335,409,343,417" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#pyval" title="A pointer to the actual Python object described by this ValueDoc." alt="" coords="476,321,735,340" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#parse_repr" title="A text representation of this value, extracted from parsing its source  code." alt="" coords="476,340,735,359" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#REPR_MAXLINES" title="The maximum number of lines of text that should be generated by  pyval_repr()." alt="" coords="476,359,735,377" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#REPR_LINELEN" title="The maximum number of characters for lines of text that should be generated by pyval_repr()." alt="" coords="476,377,735,396" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#SUMMARY_REPR_LINELEN" title="The maximum number of characters for the single-line text representation  generated by summary_pyval_repr()." alt="" coords="476,396,735,415" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#REPR_MIN_SCORE" title="The minimum score that a value representation based on pyval should have in order to be used instead of parse_repr as the canonical representation for  this ValueDoc's value." alt="" coords="476,415,735,433" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#toktree" title="This is currently used to extract values from __all__, etc, in the  docparser module; maybe I should specialize process_assignment and extract  it there?  Although, for __all__, it's not clear where I'd put the value,  since I just use it to set private/public/imported attribs on other vars  (that might not exist yet at the time.)" alt="" coords="476,433,735,452" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#__repr__" title="repr(x)" alt="" coords="476,455,735,473" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#__setstate__" title="epydoc.apidoc.ValueDoc.__setstate__" alt="" coords="476,473,735,492" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#__getstate__" title="State serializer for the pickle module." alt="" coords="476,492,735,511" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#pyval_repr" title="Return a formatted representation of the Python object described by this  ValueDoc." alt="" coords="476,511,735,529" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#summary_pyval_repr" title="Return a single-line formatted representation of the Python object  described by this ValueDoc." alt="" coords="476,529,735,548" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html" title="API documentation information about a single Python value." alt="" coords="464,299,747,555" />
+<area shape="rect" href="epydoc.apidoc.ModuleDoc-class.html#filename" title="The name of the file that defines the module." alt="" coords="307,820,904,839" />
+<area shape="rect" href="epydoc.apidoc.ModuleDoc-class.html#docformat" title="The markup language used by docstrings in this module." alt="" coords="307,839,904,857" />
+<area shape="rect" href="epydoc.apidoc.ModuleDoc-class.html#is_package" title="True if this ModuleDoc describes a package." alt="" coords="307,857,904,876" />
+<area shape="rect" href="epydoc.apidoc.ModuleDoc-class.html#path" title="If this ModuleDoc describes a package, then path contains a list of  directories that constitute its path (i.e., the value of its __path__  variable)." alt="" coords="307,876,904,895" />
+<area shape="rect" href="epydoc.apidoc.ModuleDoc-class.html#apidoc_links" title="Return a list of all APIDocs that are directly linked from this APIDoc  (i.e., are contained or pointed to by one or more of this APIDoc's  attributes.)" alt="" coords="307,897,904,916" />
+<area shape="rect" href="epydoc.apidoc.ModuleDoc-class.html#init_submodule_groups" title="Initialize the submodule_groups attribute, based on the submodules and  group_specs attributes." alt="" coords="307,916,904,935" />
+<area shape="rect" href="epydoc.apidoc.ModuleDoc-class.html#select_variables" title="Return a specified subset of this module's sorted_variables list." alt="" coords="307,935,904,953" />
+<area shape="rect" href="epydoc.apidoc.ModuleDoc-class.html" title="API documentation information about a single module." alt="" coords="295,797,935,960" />
+<area shape="rect" href="epydoc.apidoc.ModuleDoc-class.html#submodules" title="epydoc.apidoc.ModuleDoc.submodules" alt="" coords="964,871,1036,886" />
+<area shape="rect" href="epydoc.apidoc.ModuleDoc-class.html#submodules" title="*" alt="" coords="921,894,927,909" />
+<area shape="rect" href="epydoc.apidoc.ModuleDoc-class.html#submodules" title="submodules" alt="" coords="901,859,909,867" />
+<area shape="rect" href="epydoc.apidoc.ModuleDoc-class.html#submodules" title="*" alt="" coords="901,891,909,899" />
+<area shape="rect" href="epydoc.apidoc.ModuleDoc-class.html#submodule_groups" title="epydoc.apidoc.ModuleDoc.submodule_groups" alt="" coords="963,871,1077,886" />
+<area shape="rect" href="epydoc.apidoc.ModuleDoc-class.html#submodule_groups" title="*" alt="" coords="917,859,923,874" />
+<area shape="rect" href="epydoc.apidoc.ModuleDoc-class.html#submodule_groups" title="submodule_groups" alt="" coords="920,908,928,916" />
+<area shape="rect" href="epydoc.apidoc.ModuleDoc-class.html#submodule_groups" title="*" alt="" coords="901,849,909,857" />
+<area shape="rect" href="epydoc.apidoc.ModuleDoc-class.html#package" title="epydoc.apidoc.ModuleDoc.package" alt="" coords="1036,871,1087,886" />
+<area shape="rect" href="epydoc.apidoc.ModuleDoc-class.html#package" title="package" alt="" coords="901,840,909,848" />
+<area shape="rect" href="epydoc.apidoc.ModuleDoc-class.html#package" title="package" alt="" coords="901,909,909,917" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html" title="A sequence of identifiers, separated by periods, used to name a Python variable, value, or argument." alt="" coords="549,997,661,1035" />
+<area shape="rect" href="epydoc.apidoc.ModuleDoc-class.html#imports" title="epydoc.apidoc.ModuleDoc.imports" alt="" coords="605,971,651,986" />
+<area shape="rect" href="epydoc.apidoc.ModuleDoc-class.html#imports" title="*" alt="" coords="611,977,616,991" />
+<area shape="rect" href="epydoc.apidoc.ModuleDoc-class.html#imports" title="imports" alt="" coords="601,951,609,959" />
+<area shape="rect" href="epydoc.apidoc.ModuleDoc-class.html#imports" title="*" alt="" coords="601,999,609,1007" />
+<area shape="rect" href="epydoc.apidoc.VariableDoc-class.html" title="API documentation information about a single Python variable." alt="" coords="1272,860,1381,897" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#sort_spec" title="The order in which variables should be listed, encoded as a list of names." alt="" coords="520,601,689,620" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#group_specs" title="The groups that are defined by this namespace's docstrings." alt="" coords="520,620,689,639" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#__init__" title="Construct a new APIDoc object." alt="" coords="520,641,689,660" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#is_detailed" title="Does this object deserve a box with extra details?" alt="" coords="520,660,689,679" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#init_sorted_variables" title="Initialize the sorted_variables attribute, based on the variables and  sort_spec attributes." alt="" coords="520,679,689,697" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#init_variable_groups" title="Initialize the variable_groups attribute, based on the sorted_variables and group_specs attributes." alt="" coords="520,697,689,716" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#group_names" title="Return a list of the group names defined by this namespace, in the order in which they should be listed, with no duplicates." alt="" coords="520,716,689,735" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#report_unused_groups" title="Issue a warning for any @group items that were not used by  _init_grouping()." alt="" coords="520,735,689,753" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html" title="API documentation information about a singe Python namespace value." alt="" coords="508,579,737,760" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#variables" title="epydoc.apidoc.NamespaceDoc.variables" alt="" coords="1226,771,1281,786" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#variables" title="variables" alt="" coords="724,680,732,688" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#variables" title="variables" alt="" coords="1315,861,1323,869" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#sorted_variables" title="epydoc.apidoc.NamespaceDoc.sorted_variables" alt="" coords="808,771,907,786" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#sorted_variables" title="*" alt="" coords="1316,838,1321,853" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#sorted_variables" title="sorted_variables" alt="" coords="687,728,695,736" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#sorted_variables" title="*" alt="" coords="1316,861,1324,869" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#variable_groups" title="epydoc.apidoc.NamespaceDoc.variable_groups" alt="" coords="1088,771,1184,786" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#variable_groups" title="*" alt="" coords="1315,838,1320,853" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#variable_groups" title="variable_groups" alt="" coords="724,724,732,732" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#variable_groups" title="*" alt="" coords="1315,861,1323,869" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#defining_module" title="epydoc.apidoc.ValueDoc.defining_module" alt="" coords="211,662,309,677" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#defining_module" title="defining_module" alt="" coords="471,539,479,547" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#defining_module" title="defining_module" alt="" coords="301,829,309,837" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#canonical_name" title="epydoc.apidoc.ValueDoc.canonical_name" alt="" coords="1418,771,1515,786" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#canonical_name" title="canonical_name" alt="" coords="732,453,740,461" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#canonical_name" title="canonical_name" alt="" coords="647,1011,655,1019" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#proxy_for" title="epydoc.apidoc.ValueDoc.proxy_for" alt="" coords="289,771,345,786" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#proxy_for" title="proxy_for" alt="" coords="471,528,479,536" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#proxy_for" title="proxy_for" alt="" coords="556,1008,564,1016" />
+</map>
+  <img src="uml_class_diagram_for_epydoc_a_6.gif" alt='' usemap="#uml_class_diagram_for_epydoc_a_6" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<p>API documentation information about a single module.</p>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.apidoc.ModuleDoc-class.html#apidoc_links" class="summary-sig-name">apidoc_links</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">**filters</span>)</span><br />
+      Return a list of all <code>APIDoc</code>s that are directly linked 
+      from this <code>APIDoc</code> (i.e., are contained or pointed to by 
+      one or more of this <code>APIDoc</code>'s attributes.)</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.apidoc-pysrc.html#ModuleDoc.apidoc_links">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_apidoc_links_3-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_apidoc_links_3-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_apidoc_links_3" name="call_graph_for_apidoc_links_3">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__cmp__" title="APIDoc.__cmp__()" alt="" coords="578,6,748,38" />
+<area shape="rect" href="epydoc.apidoc.ModuleDoc-class.html#apidoc_links" title="apidoc_links()" alt="" coords="359,34,487,66" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#apidoc_links" title="NamespaceDoc.apidoc_links()" alt="" coords="538,62,788,94" />
+<area shape="rect" href="epydoc.apidoc-module.html#reachable_valdocs" title="reachable_valdocs()" alt="" coords="71,6,244,38" />
+<area shape="rect" href="epydoc.docbuilder-module.html#assign_canonical_names" title="docbuilder.assign_canonical_names()" alt="" coords="7,62,308,94" />
+</map>
+  <img src="call_graph_for_apidoc_links_3.gif" alt='' usemap="#call_graph_for_apidoc_links_3" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="init_submodule_groups"></a><span class="summary-sig-name">init_submodule_groups</span>(<span class="summary-sig-arg">self</span>)</span><br />
+      Initialize the <a 
+      href="epydoc.apidoc.ModuleDoc-class.html#submodule_groups" 
+      class="link">submodule_groups</a> attribute, based on the <a 
+      href="epydoc.apidoc.ModuleDoc-class.html#submodules" 
+      class="link">submodules</a> and <a 
+      href="epydoc.apidoc.NamespaceDoc-class.html#group_specs" 
+      class="link">group_specs</a> attributes.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.apidoc-pysrc.html#ModuleDoc.init_submodule_groups">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_init_submodule_-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_init_submodule_-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_init_submodule_" name="call_graph_for_init_submodule_">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__cmp__" title="DottedName.__cmp__()" alt="" coords="588,6,791,38" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__getitem__" title="DottedName.__getitem__()" alt="" coords="576,62,803,94" />
+<area shape="rect" href="epydoc.apidoc.ModuleDoc-class.html#init_submodule_groups" title="init_submodule_groups()" alt="" coords="296,62,507,94" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#_init_grouping" title="NamespaceDoc._init_grouping()" alt="" coords="556,118,823,150" />
+<area shape="rect" href="epydoc.docbuilder-module.html#build_doc_index" title="docbuilder.build_doc_index()" alt="" coords="5,62,248,94" />
+</map>
+  <img src="call_graph_for_init_submodule_.gif" alt='' usemap="#call_graph_for_init_submodule_" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.apidoc.ModuleDoc-class.html#select_variables" class="summary-sig-name">select_variables</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">group</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">value_type</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">public</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">imported</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">detailed</span>=<span class="summary-sig-default">None</span>)</span><br />
+      Return a specified subset of this module's <a 
+      href="epydoc.apidoc.NamespaceDoc-class.html#sorted_variables" 
+      class="link">sorted_variables</a> list.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.apidoc-pysrc.html#ModuleDoc.select_variables">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_select_variable_2-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_select_variable_2-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_select_variable_2" name="call_graph_for_select_variable_2">
+<area shape="rect" href="epydoc.apidoc.ModuleDoc-class.html#select_variables" title="select_variables()" alt="" coords="473,90,625,122" />
+<area shape="rect" href="epydoc.apidoc.VariableDoc-class.html#is_detailed" title="VariableDoc.is_detailed()" alt="" coords="675,90,891,122" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_details_list" title="docwriter.html.HTMLWriter.write_details_list()" alt="" coords="24,6,405,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_module_toc" title="docwriter.html.HTMLWriter.write_module_toc()" alt="" coords="20,62,409,94" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_project_toc" title="docwriter.html.HTMLWriter.write_project_toc()" alt="" coords="21,118,408,150" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_summary_table" title="docwriter.html.HTMLWriter.write_summary_table()" alt="" coords="7,174,423,206" />
+</map>
+  <img src="call_graph_for_select_variable_2.gif" alt='' usemap="#call_graph_for_select_variable_2" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.NamespaceDoc-class.html">NamespaceDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.NamespaceDoc-class.html#__init__">__init__</a></code>,
+      <code><a href="epydoc.apidoc.NamespaceDoc-class.html#group_names">group_names</a></code>,
+      <code><a href="epydoc.apidoc.NamespaceDoc-class.html#init_sorted_variables">init_sorted_variables</a></code>,
+      <code><a href="epydoc.apidoc.NamespaceDoc-class.html#init_variable_groups">init_variable_groups</a></code>,
+      <code><a href="epydoc.apidoc.NamespaceDoc-class.html#is_detailed">is_detailed</a></code>,
+      <code><a href="epydoc.apidoc.NamespaceDoc-class.html#report_unused_groups">report_unused_groups</a></code>
+      </p>
+    <div class="private">    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.NamespaceDoc-class.html">NamespaceDoc</a></code></b> (private):
+      <code><a href="epydoc.apidoc.NamespaceDoc-class.html#_init_grouping" onclick="show_private();">_init_grouping</a></code>
+      </p></div>
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.ValueDoc-class.html">ValueDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#__getstate__">__getstate__</a></code>,
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#__repr__">__repr__</a></code>,
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#__setstate__">__setstate__</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.APIDoc-class.html">APIDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.APIDoc-class.html#__cmp__">__cmp__</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#__hash__">__hash__</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#__setattr__">__setattr__</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#__str__">__str__</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#merge_and_overwrite">merge_and_overwrite</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#pp">pp</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#specialize_to">specialize_to</a></code>
+      </p>
+    <div class="private">    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.APIDoc-class.html">APIDoc</a></code></b> (private):
+      <code><a href="epydoc.apidoc.APIDoc-class.html#_debug_setattr" onclick="show_private();">_debug_setattr</a></code>
+      </p></div>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>
+      </p>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Value Representation</th></tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.ValueDoc-class.html">ValueDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#pyval_repr">pyval_repr</a></code>,
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#summary_pyval_repr">summary_pyval_repr</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Class Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-ClassVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Value Representation</th></tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.ValueDoc-class.html">ValueDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#REPR_LINELEN">REPR_LINELEN</a></code>,
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#REPR_MAXLINES">REPR_MAXLINES</a></code>,
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#REPR_MIN_SCORE">REPR_MIN_SCORE</a></code>,
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#SUMMARY_REPR_LINELEN">SUMMARY_REPR_LINELEN</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== INSTANCE VARIABLES ==================== -->
+<a name="section-InstanceVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.ValueDoc-class.html">ValueDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#canonical_name">canonical_name</a></code>,
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#toktree">toktree</a></code>
+      </p>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Information about the Module</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>string</code></span>
+    </td><td class="summary">
+        <a name="filename"></a><span class="summary-name">filename</span> = <code title="_Sentinel('UNKNOWN')">_Sentinel('UNKNOWN')</code><br />
+      The name of the file that defines the module.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>string</code></span>
+    </td><td class="summary">
+        <a name="docformat"></a><span class="summary-name">docformat</span> = <code title="_Sentinel('UNKNOWN')">_Sentinel('UNKNOWN')</code><br />
+      The markup language used by docstrings in this module.
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Information about Submodules</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>list</code> of <a href="epydoc.apidoc.ModuleDoc-class.html" 
+      class="link">ModuleDoc</a></span>
+    </td><td class="summary">
+        <a href="epydoc.apidoc.ModuleDoc-class.html#submodules" class="summary-name">submodules</a> = <code title="_Sentinel('UNKNOWN')">_Sentinel('UNKNOWN')</code><br />
+      Modules contained by this module (if this module is a package).
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>dict</code> from <code>str</code> to <code>list</code> of <a 
+      href="epydoc.apidoc.ModuleDoc-class.html" class="link">ModuleDoc</a></span>
+    </td><td class="summary">
+        <a href="epydoc.apidoc.ModuleDoc-class.html#submodule_groups" class="summary-name">submodule_groups</a> = <code title="_Sentinel('UNKNOWN')">_Sentinel('UNKNOWN')</code><br />
+      A dictionary specifying what group each submodule belongs to.
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Information about Packages</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><a href="epydoc.apidoc.ModuleDoc-class.html" 
+      class="link">ModuleDoc</a></span>
+    </td><td class="summary">
+        <a name="package"></a><span class="summary-name">package</span> = <code title="_Sentinel('UNKNOWN')">_Sentinel('UNKNOWN')</code><br />
+      API documentation for the module's containing package.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>bool</code></span>
+    </td><td class="summary">
+        <a name="is_package"></a><span class="summary-name">is_package</span> = <code title="_Sentinel('UNKNOWN')">_Sentinel('UNKNOWN')</code><br />
+      True if this <code>ModuleDoc</code> describes a package.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>list</code> of <code>str</code></span>
+    </td><td class="summary">
+        <a name="path"></a><span class="summary-name">path</span> = <code title="_Sentinel('UNKNOWN')">_Sentinel('UNKNOWN')</code><br />
+      If this <code>ModuleDoc</code> describes a package, then 
+      <code>path</code> contains a list of directories that constitute its 
+      path (i.e., the value of its <code>__path__</code> variable).
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Information about Imported Variables</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>list</code> of <a href="epydoc.apidoc.DottedName-class.html" 
+      class="link">DottedName</a></span>
+    </td><td class="summary">
+        <a href="epydoc.apidoc.ModuleDoc-class.html#imports" class="summary-name">imports</a> = <code title="_Sentinel('UNKNOWN')">_Sentinel('UNKNOWN')</code><br />
+      A list of the source names of variables imported into this module.
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.ValueDoc-class.html">ValueDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#proxy_for">proxy_for</a></code>
+      </p>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Information about Variables</th></tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.NamespaceDoc-class.html">NamespaceDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.NamespaceDoc-class.html#group_specs">group_specs</a></code>,
+      <code><a href="epydoc.apidoc.NamespaceDoc-class.html#sort_spec">sort_spec</a></code>,
+      <code><a href="epydoc.apidoc.NamespaceDoc-class.html#sorted_variables">sorted_variables</a></code>,
+      <code><a href="epydoc.apidoc.NamespaceDoc-class.html#variable_groups">variable_groups</a></code>,
+      <code><a href="epydoc.apidoc.NamespaceDoc-class.html#variables">variables</a></code>
+      </p>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Value Representation</th></tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.ValueDoc-class.html">ValueDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#parse_repr">parse_repr</a></code>,
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#pyval">pyval</a></code>
+      </p>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Context</th></tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.ValueDoc-class.html">ValueDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#defining_module">defining_module</a></code>
+      </p>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Docstrings</th></tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.APIDoc-class.html">APIDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.APIDoc-class.html#docstring">docstring</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#docstring_lineno">docstring_lineno</a></code>
+      </p>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Information Extracted from Docstrings</th></tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.APIDoc-class.html">APIDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.APIDoc-class.html#descr">descr</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#extra_docstring_fields">extra_docstring_fields</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#metadata">metadata</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#other_docs">other_docs</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#summary">summary</a></code>
+      </p>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Source Information</th></tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.APIDoc-class.html">APIDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.APIDoc-class.html#docs_extracted_by">docs_extracted_by</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Properties</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Properties"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Method Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-MethodDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="apidoc_links"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">apidoc_links</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">**filters</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.apidoc-pysrc.html#ModuleDoc.apidoc_links">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_apidoc_links_3-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_apidoc_links_3-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_apidoc_links_3" name="call_graph_for_apidoc_links_3">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__cmp__" title="APIDoc.__cmp__()" alt="" coords="578,6,748,38" />
+<area shape="rect" href="epydoc.apidoc.ModuleDoc-class.html#apidoc_links" title="apidoc_links()" alt="" coords="359,34,487,66" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#apidoc_links" title="NamespaceDoc.apidoc_links()" alt="" coords="538,62,788,94" />
+<area shape="rect" href="epydoc.apidoc-module.html#reachable_valdocs" title="reachable_valdocs()" alt="" coords="71,6,244,38" />
+<area shape="rect" href="epydoc.docbuilder-module.html#assign_canonical_names" title="docbuilder.assign_canonical_names()" alt="" coords="7,62,308,94" />
+</map>
+  <img src="call_graph_for_apidoc_links_3.gif" alt='' usemap="#call_graph_for_apidoc_links_3" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Return a list of all <code>APIDoc</code>s that are directly linked 
+  from this <code>APIDoc</code> (i.e., are contained or pointed to by one 
+  or more of this <code>APIDoc</code>'s attributes.)</p>
+  <p>Keyword argument <code>filters</code> can be used to selectively 
+  exclude certain categories of attribute value.  For example, using 
+  <code>includes=False</code> will exclude variables that were imported 
+  from other modules; and <code>subclasses=False</code> will exclude 
+  subclasses.  The filter categories currently supported by epydoc are:</p>
+  <ul>
+    <li>
+      <code>imports</code>: Imported variables.
+    </li>
+    <li>
+      <code>packages</code>: Containing packages for modules.
+    </li>
+    <li>
+      <code>submodules</code>: Contained submodules for packages.
+    </li>
+    <li>
+      <code>bases</code>: Bases for classes.
+    </li>
+    <li>
+      <code>subclasses</code>: Subclasses for classes.
+    </li>
+    <li>
+      <code>variables</code>: All variables.
+    </li>
+    <li>
+      <code>private</code>: Private variables.
+    </li>
+    <li>
+      <code>overrides</code>: Points from class variables to the variables 
+      they override.  This filter is False by default.
+    </li>
+  </ul>
+  <dl class="fields">
+    <dt>Overrides:
+        <a href="epydoc.apidoc.APIDoc-class.html#apidoc_links">APIDoc.apidoc_links</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="select_variables"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">select_variables</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">group</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">value_type</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">public</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">imported</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">detailed</span>=<span class="sig-default">None</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.apidoc-pysrc.html#ModuleDoc.select_variables">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_select_variable_2-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_select_variable_2-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_select_variable_2" name="call_graph_for_select_variable_2">
+<area shape="rect" href="epydoc.apidoc.ModuleDoc-class.html#select_variables" title="select_variables()" alt="" coords="473,90,625,122" />
+<area shape="rect" href="epydoc.apidoc.VariableDoc-class.html#is_detailed" title="VariableDoc.is_detailed()" alt="" coords="675,90,891,122" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_details_list" title="docwriter.html.HTMLWriter.write_details_list()" alt="" coords="24,6,405,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_module_toc" title="docwriter.html.HTMLWriter.write_module_toc()" alt="" coords="20,62,409,94" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_project_toc" title="docwriter.html.HTMLWriter.write_project_toc()" alt="" coords="21,118,408,150" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_summary_table" title="docwriter.html.HTMLWriter.write_summary_table()" alt="" coords="7,174,423,206" />
+</map>
+  <img src="call_graph_for_select_variable_2.gif" alt='' usemap="#call_graph_for_select_variable_2" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Return a specified subset of this module's <a 
+  href="epydoc.apidoc.NamespaceDoc-class.html#sorted_variables" 
+  class="link">sorted_variables</a> list.  If <code>value_type</code> is 
+  given, then only return variables whose values have the specified type.  
+  If <code>group</code> is given, then only return variables that belong to
+  the specified group.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>value_type</code></strong> (<code>string</code>) - A string specifying the value type for which variables should be 
+          returned.  Valid values are:
+          <ul>
+            <li>
+              'class' - variables whose values are classes or types.
+            </li>
+            <li>
+              'function' - variables whose values are functions.
+            </li>
+            <li>
+              'other' - variables whose values are not classes, exceptions,
+              types, or functions.
+            </li>
+          </ul></li>
+        <li><strong class="pname"><code>group</code></strong> (<code>string</code>) - The name of the group for which variables should be returned.  A 
+          complete list of the groups defined by this 
+          <code>ModuleDoc</code> is available in the <a 
+          href="epydoc.apidoc.NamespaceDoc-class.html#group_names" 
+          class="link">group_names</a> instance variable.  The first 
+          element of this list is always the special group name 
+          <code>''</code>, which is used for variables that do not belong 
+          to any group.</li>
+        <li><strong class="pname"><code>detailed</code></strong> (<code>bool</code>) - If True (False), return only the variables deserving (not 
+          deserving) a detailed informative box. If <code>None</code>, 
+          don't care.</li>
+    </ul></dd>
+  </dl>
+<div class="fields">      <p><strong>Requires:</strong>
+        The <a 
+        href="epydoc.apidoc.NamespaceDoc-class.html#sorted_variables" 
+        class="link">sorted_variables</a>, <a 
+        href="epydoc.apidoc.NamespaceDoc-class.html#variable_groups" 
+        class="link">variable_groups</a>, and <a 
+        href="epydoc.apidoc.ModuleDoc-class.html#submodule_groups" 
+        class="link">submodule_groups</a> attributes must be initialized 
+        before this method can be used.  See <a 
+        href="epydoc.apidoc.NamespaceDoc-class.html#init_sorted_variables" 
+        class="link">init_sorted_variables()</a>, <a 
+        href="epydoc.apidoc.NamespaceDoc-class.html#init_variable_groups" 
+        class="link">init_variable_groups()</a>, and <a 
+        href="epydoc.apidoc.ModuleDoc-class.html#init_submodule_groups" 
+        class="link">init_submodule_groups()</a>.
+      </p>
+</div></td></tr></table>
+</div>
+<br />
+<!-- ==================== INSTANCE VARIABLE DETAILS ==================== -->
+<a name="section-InstanceVariableDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Variable Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceVariableDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="submodules"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">submodules</h3>
+  Modules contained by this module (if this module is a package).  (Note: 
+  on rare occasions, a module may have a submodule that is shadowed by a 
+  variable with the same name.)
+  <dl class="fields">
+    <dt>Type:</dt>
+      <dd><code>list</code> of <a href="epydoc.apidoc.ModuleDoc-class.html" 
+      class="link">ModuleDoc</a></dd>
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+_Sentinel('UNKNOWN')
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="submodule_groups"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">submodule_groups</h3>
+  A dictionary specifying what group each submodule belongs to.  The keys 
+  of the dictionary are group names, and the values are lists of 
+  <code>ModuleDoc</code>s.  The order that groups should be listed in 
+  should be taken from <a 
+  href="epydoc.apidoc.NamespaceDoc-class.html#group_specs" 
+  class="link">group_specs</a>.
+  <dl class="fields">
+    <dt>Type:</dt>
+      <dd><code>dict</code> from <code>str</code> to <code>list</code> of <a 
+      href="epydoc.apidoc.ModuleDoc-class.html" class="link">ModuleDoc</a></dd>
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+_Sentinel('UNKNOWN')
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="imports"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">imports</h3>
+  A list of the source names of variables imported into this module.  This 
+  is used to construct import graphs.
+  <dl class="fields">
+    <dt>Type:</dt>
+      <dd><code>list</code> of <a href="epydoc.apidoc.DottedName-class.html" 
+      class="link">DottedName</a></dd>
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+_Sentinel('UNKNOWN')
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:07:20 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.apidoc.NamespaceDoc-class.html b/doc/api/epydoc.apidoc.NamespaceDoc-class.html
new file mode 100644
index 0000000..efa56f5
--- /dev/null
+++ b/doc/api/epydoc.apidoc.NamespaceDoc-class.html
@@ -0,0 +1,1130 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.apidoc.NamespaceDoc</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.apidoc-module.html">Module apidoc</a> ::
+        Class NamespaceDoc
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.apidoc.NamespaceDoc-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class NamespaceDoc</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.apidoc-pysrc.html#NamespaceDoc">source code</a></span></p>
+<center>
+<center>  <map id="uml_class_diagram_for_epydoc_a_7" name="uml_class_diagram_for_epydoc_a_7">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#docstring" title="The documented item's docstring." alt="" coords="419,28,792,47" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#docstring_lineno" title="The line number on which the documented item's docstring begins." alt="" coords="419,47,792,65" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#other_docs" title="A flag indicating if the entire docstring body (except tags if any) is  entirely included in the summary." alt="" coords="419,65,792,84" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#metadata" title="Metadata about the documented item, extracted from fields in its docstring." alt="" coords="419,84,792,103" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#docs_extracted_by" title="Information about where the information contained by this APIDoc came from." alt="" coords="419,103,792,121" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__setattr__" title="Modify an APIDoc's attribute." alt="" coords="419,124,792,143" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#pp" title="Return a pretty-printed string representation for the information contained in this APIDoc." alt="" coords="419,143,792,161" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__str__" title="Return a pretty-printed string representation for the information contained in this APIDoc." alt="" coords="419,161,792,180" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#specialize_to" title="Change self's class to cls." alt="" coords="419,180,792,199" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__hash__" title="hash(x)" alt="" coords="419,199,792,217" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__cmp__" title="epydoc.apidoc.APIDoc.__cmp__" alt="" coords="419,217,792,236" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#merge_and_overwrite" title="Combine self and other into a merged object, such that any changes made to  one will affect the other." alt="" coords="419,236,792,255" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html" title="API documentation information for a single element of a Python program." alt="" coords="407,5,804,261" />
+<area shape="rect" href="epydoc.markup.ParsedDocstring-class.html" title="A standard intermediate representation for parsed docstrings that can be used to generate output." alt="" coords="5,408,189,445" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#descr" title="epydoc.apidoc.APIDoc.descr" alt="" coords="149,273,182,287" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#descr" title="descr" alt="" coords="413,168,421,176" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#descr" title="descr" alt="" coords="93,409,101,417" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#summary" title="epydoc.apidoc.APIDoc.summary" alt="" coords="244,273,300,287" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#summary" title="summary" alt="" coords="413,185,421,193" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#summary" title="summary" alt="" coords="101,409,109,417" />
+<area shape="rect" href="epydoc.docstringparser.DocstringField-class.html" title="A simple docstring field, which can be used to describe specific information about an object, such as its author or its version." alt="" coords="219,408,435,445" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#extra_docstring_fields" title="epydoc.apidoc.APIDoc.extra_docstring_fields" alt="" coords="468,273,599,287" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#extra_docstring_fields" title="extra_docstring_fields" alt="" coords="479,252,487,260" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#extra_docstring_fields" title="extra_docstring_fields" alt="" coords="335,409,343,417" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#pyval" title="A pointer to the actual Python object described by this ValueDoc." alt="" coords="476,321,735,340" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#parse_repr" title="A text representation of this value, extracted from parsing its source  code." alt="" coords="476,340,735,359" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#REPR_MAXLINES" title="The maximum number of lines of text that should be generated by  pyval_repr()." alt="" coords="476,359,735,377" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#REPR_LINELEN" title="The maximum number of characters for lines of text that should be generated by pyval_repr()." alt="" coords="476,377,735,396" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#SUMMARY_REPR_LINELEN" title="The maximum number of characters for the single-line text representation  generated by summary_pyval_repr()." alt="" coords="476,396,735,415" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#REPR_MIN_SCORE" title="The minimum score that a value representation based on pyval should have in order to be used instead of parse_repr as the canonical representation for  this ValueDoc's value." alt="" coords="476,415,735,433" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#toktree" title="This is currently used to extract values from __all__, etc, in the  docparser module; maybe I should specialize process_assignment and extract  it there?  Although, for __all__, it's not clear where I'd put the value,  since I just use it to set private/public/imported attribs on other vars  (that might not exist yet at the time.)" alt="" coords="476,433,735,452" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#__repr__" title="repr(x)" alt="" coords="476,455,735,473" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#__setstate__" title="epydoc.apidoc.ValueDoc.__setstate__" alt="" coords="476,473,735,492" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#__getstate__" title="State serializer for the pickle module." alt="" coords="476,492,735,511" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#pyval_repr" title="Return a formatted representation of the Python object described by this  ValueDoc." alt="" coords="476,511,735,529" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#summary_pyval_repr" title="Return a single-line formatted representation of the Python object  described by this ValueDoc." alt="" coords="476,529,735,548" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html" title="API documentation information about a single Python value." alt="" coords="464,299,747,555" />
+<area shape="rect" href="epydoc.apidoc.ModuleDoc-class.html" title="API documentation information about a single module." alt="" coords="579,829,683,867" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html" title="A sequence of identifiers, separated by periods, used to name a Python variable, value, or argument." alt="" coords="767,673,879,711" />
+<area shape="rect" href="epydoc.apidoc.VariableDoc-class.html" title="API documentation information about a single Python variable." alt="" coords="737,829,847,867" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#sort_spec" title="The order in which variables should be listed, encoded as a list of names." alt="" coords="520,615,689,633" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#group_specs" title="The groups that are defined by this namespace's docstrings." alt="" coords="520,633,689,652" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#__init__" title="Construct a new APIDoc object." alt="" coords="520,655,689,673" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#is_detailed" title="Does this object deserve a box with extra details?" alt="" coords="520,673,689,692" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#apidoc_links" title="Return a list of all APIDocs that are directly linked from this APIDoc  (i.e., are contained or pointed to by one or more of this APIDoc's  attributes.)" alt="" coords="520,692,689,711" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#init_sorted_variables" title="Initialize the sorted_variables attribute, based on the variables and  sort_spec attributes." alt="" coords="520,711,689,729" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#init_variable_groups" title="Initialize the variable_groups attribute, based on the sorted_variables and group_specs attributes." alt="" coords="520,729,689,748" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#group_names" title="Return a list of the group names defined by this namespace, in the order in which they should be listed, with no duplicates." alt="" coords="520,748,689,767" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#report_unused_groups" title="Issue a warning for any @group items that were not used by  _init_grouping()." alt="" coords="520,767,689,785" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html" title="API documentation information about a singe Python namespace value." alt="" coords="508,592,737,792" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#variables" title="epydoc.apidoc.NamespaceDoc.variables" alt="" coords="893,803,947,818" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#variables" title="variables" alt="" coords="724,709,732,717" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#variables" title="variables" alt="" coords="832,839,840,847" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#sorted_variables" title="epydoc.apidoc.NamespaceDoc.sorted_variables" alt="" coords="657,803,756,818" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#sorted_variables" title="*" alt="" coords="729,821,735,835" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#sorted_variables" title="sorted_variables" alt="" coords="628,783,636,791" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#sorted_variables" title="*" alt="" coords="744,836,752,844" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#variable_groups" title="epydoc.apidoc.NamespaceDoc.variable_groups" alt="" coords="768,803,864,818" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#variable_groups" title="*" alt="" coords="776,807,781,822" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#variable_groups" title="variable_groups" alt="" coords="724,755,732,763" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#variable_groups" title="*" alt="" coords="779,831,787,839" />
+<area shape="rect" href="epydoc.apidoc.ClassDoc-class.html" title="API documentation information about a single class." alt="" coords="456,829,549,867" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#defining_module" title="epydoc.apidoc.ValueDoc.defining_module" alt="" coords="395,685,493,699" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#defining_module" title="defining_module" alt="" coords="471,531,479,539" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#defining_module" title="defining_module" alt="" coords="585,832,593,840" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#canonical_name" title="epydoc.apidoc.ValueDoc.canonical_name" alt="" coords="746,566,843,581" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#canonical_name" title="canonical_name" alt="" coords="721,545,729,553" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#canonical_name" title="canonical_name" alt="" coords="811,675,819,683" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#proxy_for" title="epydoc.apidoc.ValueDoc.proxy_for" alt="" coords="676,566,732,581" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#proxy_for" title="proxy_for" alt="" coords="641,545,649,553" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#proxy_for" title="proxy_for" alt="" coords="813,675,821,683" />
+</map>
+  <img src="uml_class_diagram_for_epydoc_a_7.gif" alt='' usemap="#uml_class_diagram_for_epydoc_a_7" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<p>API documentation information about a singe Python namespace value.  
+  (I.e., a module or a class).</p>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.apidoc.NamespaceDoc-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">**kwargs</span>)</span><br />
+      Construct a new <code>APIDoc</code> object.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.apidoc-pysrc.html#NamespaceDoc.__init__">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for___init___4-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for___init___4-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for___init___4" name="call_graph_for___init___4">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__init__" title="APIDoc.__init__()" alt="" coords="437,118,600,150" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#specialize_to" title="APIDoc.specialize_to()" alt="" coords="25,6,223,38" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#__init__" title="__init__()" alt="" coords="292,118,388,150" />
+<area shape="rect" href="epydoc.docparser-module.html#_import_var" title="docparser._import_var()" alt="" coords="23,62,225,94" />
+<area shape="rect" href="epydoc.docparser-module.html#_proxy_base" title="docparser._proxy_base()" alt="" coords="21,118,227,150" />
+<area shape="rect" href="epydoc.docparser-module.html#parse_docs" title="docparser.parse_docs()" alt="" coords="27,174,221,206" />
+<area shape="rect" href="epydoc.docparser-module.html#process_classdef" title="docparser.process_classdef()" alt="" coords="5,230,243,262" />
+</map>
+  <img src="call_graph_for___init___4.gif" alt='' usemap="#call_graph_for___init___4" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>bool</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.apidoc.NamespaceDoc-class.html#is_detailed" class="summary-sig-name">is_detailed</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Does this object deserve a box with extra details?</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.apidoc-pysrc.html#NamespaceDoc.is_detailed">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_is_detailed_3-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_is_detailed_3-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_is_detailed_3" name="call_graph_for_is_detailed_3">
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#is_detailed" title="is_detailed()" alt="" coords="271,6,385,38" />
+<area shape="rect" href="epydoc.apidoc.VariableDoc-class.html#is_detailed" title="VariableDoc.is_detailed()" alt="" coords="5,6,221,38" />
+</map>
+  <img src="call_graph_for_is_detailed_3.gif" alt='' usemap="#call_graph_for_is_detailed_3" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.apidoc.NamespaceDoc-class.html#apidoc_links" class="summary-sig-name">apidoc_links</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">**filters</span>)</span><br />
+      Return a list of all <code>APIDoc</code>s that are directly linked 
+      from this <code>APIDoc</code> (i.e., are contained or pointed to by 
+      one or more of this <code>APIDoc</code>'s attributes.)</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.apidoc-pysrc.html#NamespaceDoc.apidoc_links">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_apidoc_links_4-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_apidoc_links_4-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_apidoc_links_4" name="call_graph_for_apidoc_links_4">
+<area shape="rect" href="epydoc.apidoc.ClassDoc-class.html#apidoc_links" title="ClassDoc.apidoc_links()" alt="" coords="15,6,220,38" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#apidoc_links" title="apidoc_links()" alt="" coords="279,34,407,66" />
+<area shape="rect" href="epydoc.apidoc.ModuleDoc-class.html#apidoc_links" title="ModuleDoc.apidoc_links()" alt="" coords="5,62,229,94" />
+</map>
+  <img src="call_graph_for_apidoc_links_4.gif" alt='' usemap="#call_graph_for_apidoc_links_4" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.apidoc.NamespaceDoc-class.html#init_sorted_variables" class="summary-sig-name">init_sorted_variables</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Initialize the <a 
+      href="epydoc.apidoc.NamespaceDoc-class.html#sorted_variables" 
+      class="link">sorted_variables</a> attribute, based on the <a 
+      href="epydoc.apidoc.NamespaceDoc-class.html#variables" 
+      class="link">variables</a> and <a 
+      href="epydoc.apidoc.NamespaceDoc-class.html#sort_spec" 
+      class="link">sort_spec</a> attributes.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.apidoc-pysrc.html#NamespaceDoc.init_sorted_variables">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_init_sorted_var-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_init_sorted_var-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_init_sorted_var" name="call_graph_for_init_sorted_var">
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#init_sorted_variables" title="init_sorted_variables()" alt="" coords="296,6,488,38" />
+<area shape="rect" href="epydoc.docbuilder-module.html#build_doc_index" title="docbuilder.build_doc_index()" alt="" coords="5,6,248,38" />
+</map>
+  <img src="call_graph_for_init_sorted_var.gif" alt='' usemap="#call_graph_for_init_sorted_var" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="init_variable_groups"></a><span class="summary-sig-name">init_variable_groups</span>(<span class="summary-sig-arg">self</span>)</span><br />
+      Initialize the <a 
+      href="epydoc.apidoc.NamespaceDoc-class.html#variable_groups" 
+      class="link">variable_groups</a> attribute, based on the <a 
+      href="epydoc.apidoc.NamespaceDoc-class.html#sorted_variables" 
+      class="link">sorted_variables</a> and <a 
+      href="epydoc.apidoc.NamespaceDoc-class.html#group_specs" 
+      class="link">group_specs</a> attributes.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.apidoc-pysrc.html#NamespaceDoc.init_variable_groups">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_init_variable_g-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_init_variable_g-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_init_variable_g" name="call_graph_for_init_variable_g">
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#_init_grouping" title="_init_grouping()" alt="" coords="535,6,679,38" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#init_variable_groups" title="init_variable_groups()" alt="" coords="296,6,485,38" />
+<area shape="rect" href="epydoc.docbuilder-module.html#build_doc_index" title="docbuilder.build_doc_index()" alt="" coords="5,6,248,38" />
+</map>
+  <img src="call_graph_for_init_variable_g.gif" alt='' usemap="#call_graph_for_init_variable_g" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="group_names"></a><span class="summary-sig-name">group_names</span>(<span class="summary-sig-arg">self</span>)</span><br />
+      Return a list of the group names defined by this namespace, in the 
+      order in which they should be listed, with no duplicates.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.apidoc-pysrc.html#NamespaceDoc.group_names">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_group_names-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_group_names-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_group_names" name="call_graph_for_group_names">
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#group_names" title="group_names()" alt="" coords="473,34,607,66" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_module_list" title="docwriter.html.HTMLWriter.write_module_list()" alt="" coords="20,6,409,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_summary_table" title="docwriter.html.HTMLWriter.write_summary_table()" alt="" coords="7,62,423,94" />
+</map>
+  <img src="call_graph_for_group_names.gif" alt='' usemap="#call_graph_for_group_names" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.apidoc.NamespaceDoc-class.html#_init_grouping" class="summary-sig-name" onclick="show_private();">_init_grouping</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">elts</span>)</span><br />
+      Divide a given a list of APIDoc objects into groups, as specified by 
+      <a href="epydoc.apidoc.NamespaceDoc-class.html#group_specs" 
+      class="link">self.group_specs</a>.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.apidoc-pysrc.html#NamespaceDoc._init_grouping">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__init_grouping-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__init_grouping-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__init_grouping" name="call_graph_for__init_grouping">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__hash__" title="APIDoc.__hash__()" alt="" coords="565,6,736,38" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__str__" title="DottedName.__str__()" alt="" coords="556,62,745,94" />
+<area shape="rect" href="epydoc.apidoc.ModuleDoc-class.html#init_submodule_groups" title="ModuleDoc.init_submodule_groups()" alt="" coords="7,34,311,66" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#_init_grouping" title="_init_grouping()" alt="" coords="361,62,505,94" />
+<area shape="rect" href="epydoc.log-module.html#warning" title="log.warning()" alt="" coords="589,118,712,150" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#init_variable_groups" title="init_variable_groups()" alt="" coords="64,90,253,122" />
+</map>
+  <img src="call_graph_for__init_grouping.gif" alt='' usemap="#call_graph_for__init_grouping" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="report_unused_groups"></a><span class="summary-sig-name">report_unused_groups</span>(<span class="summary-sig-arg">self</span>)</span><br />
+      Issue a warning for any @group items that were not used by <a 
+      href="epydoc.apidoc.NamespaceDoc-class.html#_init_grouping" 
+      class="link" onclick="show_private();">_init_grouping()</a>.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.apidoc-pysrc.html#NamespaceDoc.report_unused_groups">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_report_unused_g-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_report_unused_g-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_report_unused_g" name="call_graph_for_report_unused_g">
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#report_unused_groups" title="report_unused_groups()" alt="" coords="297,6,497,38" />
+<area shape="rect" href="epydoc.docbuilder-module.html#build_doc_index" title="docbuilder.build_doc_index()" alt="" coords="5,6,248,38" />
+</map>
+  <img src="call_graph_for_report_unused_g.gif" alt='' usemap="#call_graph_for_report_unused_g" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.ValueDoc-class.html">ValueDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#__getstate__">__getstate__</a></code>,
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#__repr__">__repr__</a></code>,
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#__setstate__">__setstate__</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.APIDoc-class.html">APIDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.APIDoc-class.html#__cmp__">__cmp__</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#__hash__">__hash__</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#__setattr__">__setattr__</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#__str__">__str__</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#merge_and_overwrite">merge_and_overwrite</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#pp">pp</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#specialize_to">specialize_to</a></code>
+      </p>
+    <div class="private">    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.APIDoc-class.html">APIDoc</a></code></b> (private):
+      <code><a href="epydoc.apidoc.APIDoc-class.html#_debug_setattr" onclick="show_private();">_debug_setattr</a></code>
+      </p></div>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>
+      </p>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Value Representation</th></tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.ValueDoc-class.html">ValueDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#pyval_repr">pyval_repr</a></code>,
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#summary_pyval_repr">summary_pyval_repr</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Class Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-ClassVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Value Representation</th></tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.ValueDoc-class.html">ValueDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#REPR_LINELEN">REPR_LINELEN</a></code>,
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#REPR_MAXLINES">REPR_MAXLINES</a></code>,
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#REPR_MIN_SCORE">REPR_MIN_SCORE</a></code>,
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#SUMMARY_REPR_LINELEN">SUMMARY_REPR_LINELEN</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== INSTANCE VARIABLES ==================== -->
+<a name="section-InstanceVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.ValueDoc-class.html">ValueDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#canonical_name">canonical_name</a></code>,
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#toktree">toktree</a></code>
+      </p>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Information about Variables</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>dict</code> from <code>string</code> to <a 
+      href="epydoc.apidoc.VariableDoc-class.html" 
+      class="link">VariableDoc</a></span>
+    </td><td class="summary">
+        <a href="epydoc.apidoc.NamespaceDoc-class.html#variables" class="summary-name">variables</a> = <code title="_Sentinel('UNKNOWN')">_Sentinel('UNKNOWN')</code><br />
+      The contents of the namespace, encoded as a dictionary mapping from 
+      identifiers to <code>VariableDoc</code>s.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>list</code> of <a href="epydoc.apidoc.VariableDoc-class.html" 
+      class="link">VariableDoc</a></span>
+    </td><td class="summary">
+        <a href="epydoc.apidoc.NamespaceDoc-class.html#sorted_variables" class="summary-name">sorted_variables</a> = <code title="_Sentinel('UNKNOWN')">_Sentinel('UNKNOWN')</code><br />
+      A list of all variables defined by this namespace, in sorted order.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>list</code> of <code>str</code></span>
+    </td><td class="summary">
+        <a href="epydoc.apidoc.NamespaceDoc-class.html#sort_spec" class="summary-name">sort_spec</a> = <code title="_Sentinel('UNKNOWN')">_Sentinel('UNKNOWN')</code><br />
+      The order in which variables should be listed, encoded as a list of 
+      names.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>list</code> of <code>(str,list)</code></span>
+    </td><td class="summary">
+        <a href="epydoc.apidoc.NamespaceDoc-class.html#group_specs" class="summary-name">group_specs</a> = <code title="_Sentinel('UNKNOWN')">_Sentinel('UNKNOWN')</code><br />
+      The groups that are defined by this namespace's docstrings.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>dict</code> from <code>str</code> to <code>list</code> of <a 
+      href="epydoc.apidoc.VariableDoc-class.html" 
+      class="link">VariableDoc</a></span>
+    </td><td class="summary">
+        <a href="epydoc.apidoc.NamespaceDoc-class.html#variable_groups" class="summary-name">variable_groups</a> = <code title="_Sentinel('UNKNOWN')">_Sentinel('UNKNOWN')</code><br />
+      A dictionary specifying what group each variable belongs to.
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Value Representation</th></tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.ValueDoc-class.html">ValueDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#parse_repr">parse_repr</a></code>,
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#pyval">pyval</a></code>
+      </p>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Context</th></tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.ValueDoc-class.html">ValueDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#defining_module">defining_module</a></code>
+      </p>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Information about Imported Variables</th></tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.ValueDoc-class.html">ValueDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#proxy_for">proxy_for</a></code>
+      </p>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Docstrings</th></tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.APIDoc-class.html">APIDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.APIDoc-class.html#docstring">docstring</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#docstring_lineno">docstring_lineno</a></code>
+      </p>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Information Extracted from Docstrings</th></tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.APIDoc-class.html">APIDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.APIDoc-class.html#descr">descr</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#extra_docstring_fields">extra_docstring_fields</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#metadata">metadata</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#other_docs">other_docs</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#summary">summary</a></code>
+      </p>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Source Information</th></tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.APIDoc-class.html">APIDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.APIDoc-class.html#docs_extracted_by">docs_extracted_by</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Properties</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Properties"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Method Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-MethodDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">**kwargs</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.apidoc-pysrc.html#NamespaceDoc.__init__">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for___init___4-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for___init___4-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for___init___4" name="call_graph_for___init___4">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__init__" title="APIDoc.__init__()" alt="" coords="437,118,600,150" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#specialize_to" title="APIDoc.specialize_to()" alt="" coords="25,6,223,38" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#__init__" title="__init__()" alt="" coords="292,118,388,150" />
+<area shape="rect" href="epydoc.docparser-module.html#_import_var" title="docparser._import_var()" alt="" coords="23,62,225,94" />
+<area shape="rect" href="epydoc.docparser-module.html#_proxy_base" title="docparser._proxy_base()" alt="" coords="21,118,227,150" />
+<area shape="rect" href="epydoc.docparser-module.html#parse_docs" title="docparser.parse_docs()" alt="" coords="27,174,221,206" />
+<area shape="rect" href="epydoc.docparser-module.html#process_classdef" title="docparser.process_classdef()" alt="" coords="5,230,243,262" />
+</map>
+  <img src="call_graph_for___init___4.gif" alt='' usemap="#call_graph_for___init___4" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Construct a new <code>APIDoc</code> object.  Keyword arguments may be 
+  used to initialize the new <code>APIDoc</code>'s attributes.</p>
+  <dl class="fields">
+    <dt>Raises:</dt>
+    <dd><ul class="nomargin-top">
+        <li><code><strong class='fraise'>TypeError</strong></code> - If a keyword argument is specified that does not correspond to a 
+        valid attribute for this (sub)class of <code>APIDoc</code>.</li>
+    </ul></dd>
+    <dt>Overrides:
+        object.__init__
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="is_detailed"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">is_detailed</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.apidoc-pysrc.html#NamespaceDoc.is_detailed">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_is_detailed_3-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_is_detailed_3-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_is_detailed_3" name="call_graph_for_is_detailed_3">
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#is_detailed" title="is_detailed()" alt="" coords="271,6,385,38" />
+<area shape="rect" href="epydoc.apidoc.VariableDoc-class.html#is_detailed" title="VariableDoc.is_detailed()" alt="" coords="5,6,221,38" />
+</map>
+  <img src="call_graph_for_is_detailed_3.gif" alt='' usemap="#call_graph_for_is_detailed_3" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Does this object deserve a box with extra details?</p>
+  <dl class="fields">
+    <dt>Returns: <code>bool</code></dt>
+        <dd>True if the object needs extra details, else False.</dd>
+    <dt>Overrides:
+        <a href="epydoc.apidoc.APIDoc-class.html#is_detailed">APIDoc.is_detailed</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="apidoc_links"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">apidoc_links</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">**filters</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.apidoc-pysrc.html#NamespaceDoc.apidoc_links">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_apidoc_links_4-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_apidoc_links_4-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_apidoc_links_4" name="call_graph_for_apidoc_links_4">
+<area shape="rect" href="epydoc.apidoc.ClassDoc-class.html#apidoc_links" title="ClassDoc.apidoc_links()" alt="" coords="15,6,220,38" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#apidoc_links" title="apidoc_links()" alt="" coords="279,34,407,66" />
+<area shape="rect" href="epydoc.apidoc.ModuleDoc-class.html#apidoc_links" title="ModuleDoc.apidoc_links()" alt="" coords="5,62,229,94" />
+</map>
+  <img src="call_graph_for_apidoc_links_4.gif" alt='' usemap="#call_graph_for_apidoc_links_4" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Return a list of all <code>APIDoc</code>s that are directly linked 
+  from this <code>APIDoc</code> (i.e., are contained or pointed to by one 
+  or more of this <code>APIDoc</code>'s attributes.)</p>
+  <p>Keyword argument <code>filters</code> can be used to selectively 
+  exclude certain categories of attribute value.  For example, using 
+  <code>includes=False</code> will exclude variables that were imported 
+  from other modules; and <code>subclasses=False</code> will exclude 
+  subclasses.  The filter categories currently supported by epydoc are:</p>
+  <ul>
+    <li>
+      <code>imports</code>: Imported variables.
+    </li>
+    <li>
+      <code>packages</code>: Containing packages for modules.
+    </li>
+    <li>
+      <code>submodules</code>: Contained submodules for packages.
+    </li>
+    <li>
+      <code>bases</code>: Bases for classes.
+    </li>
+    <li>
+      <code>subclasses</code>: Subclasses for classes.
+    </li>
+    <li>
+      <code>variables</code>: All variables.
+    </li>
+    <li>
+      <code>private</code>: Private variables.
+    </li>
+    <li>
+      <code>overrides</code>: Points from class variables to the variables 
+      they override.  This filter is False by default.
+    </li>
+  </ul>
+  <dl class="fields">
+    <dt>Overrides:
+        <a href="epydoc.apidoc.APIDoc-class.html#apidoc_links">APIDoc.apidoc_links</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="init_sorted_variables"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">init_sorted_variables</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.apidoc-pysrc.html#NamespaceDoc.init_sorted_variables">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_init_sorted_var-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_init_sorted_var-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_init_sorted_var" name="call_graph_for_init_sorted_var">
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#init_sorted_variables" title="init_sorted_variables()" alt="" coords="296,6,488,38" />
+<area shape="rect" href="epydoc.docbuilder-module.html#build_doc_index" title="docbuilder.build_doc_index()" alt="" coords="5,6,248,38" />
+</map>
+  <img src="call_graph_for_init_sorted_var.gif" alt='' usemap="#call_graph_for_init_sorted_var" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Initialize the <a 
+  href="epydoc.apidoc.NamespaceDoc-class.html#sorted_variables" 
+  class="link">sorted_variables</a> attribute, based on the <a 
+  href="epydoc.apidoc.NamespaceDoc-class.html#variables" 
+  class="link">variables</a> and <a 
+  href="epydoc.apidoc.NamespaceDoc-class.html#sort_spec" 
+  class="link">sort_spec</a> attributes.  This should usually be called 
+  after all variables have been added to <code>variables</code> (including 
+  any inherited variables for classes).</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="_init_grouping"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">_init_grouping</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">elts</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.apidoc-pysrc.html#NamespaceDoc._init_grouping">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__init_grouping-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for__init_grouping-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__init_grouping" name="call_graph_for__init_grouping">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__hash__" title="APIDoc.__hash__()" alt="" coords="565,6,736,38" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__str__" title="DottedName.__str__()" alt="" coords="556,62,745,94" />
+<area shape="rect" href="epydoc.apidoc.ModuleDoc-class.html#init_submodule_groups" title="ModuleDoc.init_submodule_groups()" alt="" coords="7,34,311,66" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#_init_grouping" title="_init_grouping()" alt="" coords="361,62,505,94" />
+<area shape="rect" href="epydoc.log-module.html#warning" title="log.warning()" alt="" coords="589,118,712,150" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#init_variable_groups" title="init_variable_groups()" alt="" coords="64,90,253,122" />
+</map>
+  <img src="call_graph_for__init_grouping.gif" alt='' usemap="#call_graph_for__init_grouping" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Divide a given a list of APIDoc objects into groups, as specified by 
+  <a href="epydoc.apidoc.NamespaceDoc-class.html#group_specs" 
+  class="link">self.group_specs</a>.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>elts</code></strong> - A list of tuples <code>(name, apidoc)</code>.</li>
+    </ul></dd>
+    <dt>Returns:</dt>
+        <dd>A list of tuples <code>(groupname, elts)</code>, where 
+          <code>groupname</code> is the name of a group and 
+          <code>elts</code> is a list of <code>APIDoc</code>s in that 
+          group.  The first tuple has name <code>''</code>, and is used for
+          ungrouped elements.  The remaining tuples are listed in the order
+          that they appear in <code>self.group_specs</code>. Within each 
+          tuple, the elements are listed in the order that they appear in 
+          <code>api_docs</code>.</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== INSTANCE VARIABLE DETAILS ==================== -->
+<a name="section-InstanceVariableDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Variable Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceVariableDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="variables"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">variables</h3>
+  The contents of the namespace, encoded as a dictionary mapping from 
+  identifiers to <code>VariableDoc</code>s.  This dictionary contains all 
+  names defined by the namespace, including imported variables, aliased 
+  variables, and variables inherited from base classes (once <a 
+  href="epydoc.docbuilder-module.html#inherit_docs" 
+  class="link">inherit_docs()</a> has added them).
+  <dl class="fields">
+    <dt>Type:</dt>
+      <dd><code>dict</code> from <code>string</code> to <a 
+      href="epydoc.apidoc.VariableDoc-class.html" 
+      class="link">VariableDoc</a></dd>
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+_Sentinel('UNKNOWN')
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="sorted_variables"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">sorted_variables</h3>
+  A list of all variables defined by this namespace, in sorted order.  The 
+  elements of this list should exactly match the values of <a 
+  href="epydoc.apidoc.NamespaceDoc-class.html#variables" 
+  class="link">variables</a>.  The sort order for this list is defined as 
+  follows:
+  <ul>
+    <li>
+      Any variables listed in a <code>@sort</code> docstring field are 
+      listed in the order given by that field.
+    </li>
+    <li>
+      These are followed by any variables that were found while parsing the
+      source code, in the order in which they were defined in the source 
+      file.
+    </li>
+    <li>
+      Finally, any remaining variables are listed in alphabetical order.
+    </li>
+  </ul>
+  <dl class="fields">
+    <dt>Type:</dt>
+      <dd><code>list</code> of <a href="epydoc.apidoc.VariableDoc-class.html" 
+      class="link">VariableDoc</a></dd>
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+_Sentinel('UNKNOWN')
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="sort_spec"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">sort_spec</h3>
+  The order in which variables should be listed, encoded as a list of 
+  names.  Any variables whose names are not included in this list should be
+  listed alphabetically, following the variables that are included.
+  <dl class="fields">
+    <dt>Type:</dt>
+      <dd><code>list</code> of <code>str</code></dd>
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+_Sentinel('UNKNOWN')
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="group_specs"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">group_specs</h3>
+  The groups that are defined by this namespace's docstrings.  
+  <code>group_specs</code> is encoded as an ordered list of tuples 
+  <code>(group_name, elt_names)</code>, where <code>group_name</code> is 
+  the
+  <p>name of a group and <code>elt_names</code> is a list of element names 
+  in that group.  (An element can be a variable or a submodule.)  A '*' in 
+  an element name will match any string of characters.</p>
+  <dl class="fields">
+    <dt>Type:</dt>
+      <dd><code>list</code> of <code>(str,list)</code></dd>
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+_Sentinel('UNKNOWN')
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="variable_groups"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">variable_groups</h3>
+  A dictionary specifying what group each variable belongs to.  The keys of
+  the dictionary are group names, and the values are lists of 
+  <code>VariableDoc</code>s.  The order that groups should be listed in 
+  should be taken from <a 
+  href="epydoc.apidoc.NamespaceDoc-class.html#group_specs" 
+  class="link">group_specs</a>.
+  <dl class="fields">
+    <dt>Type:</dt>
+      <dd><code>dict</code> from <code>str</code> to <code>list</code> of <a 
+      href="epydoc.apidoc.VariableDoc-class.html" 
+      class="link">VariableDoc</a></dd>
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+_Sentinel('UNKNOWN')
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:07:24 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.apidoc.PropertyDoc-class.html b/doc/api/epydoc.apidoc.PropertyDoc-class.html
new file mode 100644
index 0000000..61efb75
--- /dev/null
+++ b/doc/api/epydoc.apidoc.PropertyDoc-class.html
@@ -0,0 +1,625 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.apidoc.PropertyDoc</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.apidoc-module.html">Module apidoc</a> ::
+        Class PropertyDoc
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.apidoc.PropertyDoc-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class PropertyDoc</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.apidoc-pysrc.html#PropertyDoc">source code</a></span></p>
+<center>
+<center>  <map id="uml_class_diagram_for_epydoc_a_8" name="uml_class_diagram_for_epydoc_a_8">
+<area shape="rect" href="epydoc.markup.ParsedDocstring-class.html" title="A standard intermediate representation for parsed docstrings that can be used to generate output." alt="" coords="25,723,209,760" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#docstring" title="The documented item's docstring." alt="" coords="363,28,736,47" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#docstring_lineno" title="The line number on which the documented item's docstring begins." alt="" coords="363,47,736,65" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#other_docs" title="A flag indicating if the entire docstring body (except tags if any) is  entirely included in the summary." alt="" coords="363,65,736,84" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#metadata" title="Metadata about the documented item, extracted from fields in its docstring." alt="" coords="363,84,736,103" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#docs_extracted_by" title="Information about where the information contained by this APIDoc came from." alt="" coords="363,103,736,121" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__init__" title="Construct a new APIDoc object." alt="" coords="363,124,736,143" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__setattr__" title="Modify an APIDoc's attribute." alt="" coords="363,143,736,161" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#pp" title="Return a pretty-printed string representation for the information contained in this APIDoc." alt="" coords="363,161,736,180" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__str__" title="Return a pretty-printed string representation for the information contained in this APIDoc." alt="" coords="363,180,736,199" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#specialize_to" title="Change self's class to cls." alt="" coords="363,199,736,217" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__hash__" title="hash(x)" alt="" coords="363,217,736,236" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__cmp__" title="epydoc.apidoc.APIDoc.__cmp__" alt="" coords="363,236,736,255" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#merge_and_overwrite" title="Combine self and other into a merged object, such that any changes made to  one will affect the other." alt="" coords="363,255,736,273" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html" title="API documentation information for a single element of a Python program." alt="" coords="351,5,748,280" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#descr" title="epydoc.apidoc.APIDoc.descr" alt="" coords="49,585,82,599" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#descr" title="descr" alt="" coords="357,180,365,188" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#descr" title="descr" alt="" coords="101,724,109,732" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#summary" title="epydoc.apidoc.APIDoc.summary" alt="" coords="95,585,151,599" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#summary" title="summary" alt="" coords="357,176,365,184" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#summary" title="summary" alt="" coords="109,724,117,732" />
+<area shape="rect" href="epydoc.docstringparser.DocstringField-class.html" title="A simple docstring field, which can be used to describe specific information about an object, such as its author or its version." alt="" coords="163,427,379,464" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#extra_docstring_fields" title="epydoc.apidoc.APIDoc.extra_docstring_fields" alt="" coords="412,291,543,306" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#extra_docstring_fields" title="extra_docstring_fields" alt="" coords="423,271,431,279" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#extra_docstring_fields" title="extra_docstring_fields" alt="" coords="279,428,287,436" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#pyval" title="A pointer to the actual Python object described by this ValueDoc." alt="" coords="420,340,679,359" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#parse_repr" title="A text representation of this value, extracted from parsing its source  code." alt="" coords="420,359,679,377" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#REPR_MAXLINES" title="The maximum number of lines of text that should be generated by  pyval_repr()." alt="" coords="420,377,679,396" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#REPR_LINELEN" title="The maximum number of characters for lines of text that should be generated by pyval_repr()." alt="" coords="420,396,679,415" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#SUMMARY_REPR_LINELEN" title="The maximum number of characters for the single-line text representation  generated by summary_pyval_repr()." alt="" coords="420,415,679,433" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#REPR_MIN_SCORE" title="The minimum score that a value representation based on pyval should have in order to be used instead of parse_repr as the canonical representation for  this ValueDoc's value." alt="" coords="420,433,679,452" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#toktree" title="This is currently used to extract values from __all__, etc, in the  docparser module; maybe I should specialize process_assignment and extract  it there?  Although, for __all__, it's not clear where I'd put the value,  since I just use it to set private/public/imported attribs on other vars  (that might not exist yet at the time.)" alt="" coords="420,452,679,471" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#__repr__" title="repr(x)" alt="" coords="420,473,679,492" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#__setstate__" title="epydoc.apidoc.ValueDoc.__setstate__" alt="" coords="420,492,679,511" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#__getstate__" title="State serializer for the pickle module." alt="" coords="420,511,679,529" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#pyval_repr" title="Return a formatted representation of the Python object described by this  ValueDoc." alt="" coords="420,529,679,548" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#summary_pyval_repr" title="Return a single-line formatted representation of the Python object  described by this ValueDoc." alt="" coords="420,548,679,567" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html" title="API documentation information about a single Python value." alt="" coords="408,317,691,573" />
+<area shape="rect" href="epydoc.apidoc.RoutineDoc-class.html" title="API documentation information about a single routine." alt="" coords="496,723,603,760" />
+<area shape="rect" href="epydoc.apidoc.PropertyDoc-class.html#apidoc_links" title="Return a list of all APIDocs that are directly linked from this APIDoc  (i.e., are contained or pointed to by one or more of this APIDoc's  attributes.)" alt="" coords="469,641,629,660" />
+<area shape="rect" href="epydoc.apidoc.PropertyDoc-class.html#is_detailed" title="Does this object deserve a box with extra details?" alt="" coords="469,660,629,679" />
+<area shape="rect" href="epydoc.apidoc.PropertyDoc-class.html" title="API documentation information about a single property." alt="" coords="457,611,641,685" />
+<area shape="rect" href="epydoc.apidoc.PropertyDoc-class.html#type_descr" title="epydoc.apidoc.PropertyDoc.type_descr" alt="" coords="333,697,400,711" />
+<area shape="rect" href="epydoc.apidoc.PropertyDoc-class.html#type_descr" title="type_descr" alt="" coords="464,661,472,669" />
+<area shape="rect" href="epydoc.apidoc.PropertyDoc-class.html#type_descr" title="type_descr" alt="" coords="176,724,184,732" />
+<area shape="rect" href="epydoc.apidoc.PropertyDoc-class.html#fget" title="epydoc.apidoc.PropertyDoc.fget" alt="" coords="490,697,513,711" />
+<area shape="rect" href="epydoc.apidoc.PropertyDoc-class.html#fget" title="fget" alt="" coords="493,676,501,684" />
+<area shape="rect" href="epydoc.apidoc.PropertyDoc-class.html#fget" title="fget" alt="" coords="503,724,511,732" />
+<area shape="rect" href="epydoc.apidoc.PropertyDoc-class.html#fset" title="epydoc.apidoc.PropertyDoc.fset" alt="" coords="549,697,571,711" />
+<area shape="rect" href="epydoc.apidoc.PropertyDoc-class.html#fset" title="fset" alt="" coords="545,676,553,684" />
+<area shape="rect" href="epydoc.apidoc.PropertyDoc-class.html#fset" title="fset" alt="" coords="545,724,553,732" />
+<area shape="rect" href="epydoc.apidoc.PropertyDoc-class.html#fdel" title="epydoc.apidoc.PropertyDoc.fdel" alt="" coords="573,697,595,711" />
+<area shape="rect" href="epydoc.apidoc.PropertyDoc-class.html#fdel" title="fdel" alt="" coords="567,676,575,684" />
+<area shape="rect" href="epydoc.apidoc.PropertyDoc-class.html#fdel" title="fdel" alt="" coords="559,724,567,732" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html" title="A sequence of identifiers, separated by periods, used to name a Python variable, value, or argument." alt="" coords="671,629,783,667" />
+<area shape="rect" href="epydoc.apidoc.ModuleDoc-class.html" title="API documentation information about a single module." alt="" coords="812,629,916,667" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#canonical_name" title="epydoc.apidoc.ValueDoc.canonical_name" alt="" coords="601,585,698,599" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#canonical_name" title="canonical_name" alt="" coords="572,564,580,572" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#canonical_name" title="canonical_name" alt="" coords="701,631,709,639" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#proxy_for" title="epydoc.apidoc.ValueDoc.proxy_for" alt="" coords="707,585,763,599" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#proxy_for" title="proxy_for" alt="" coords="676,555,684,563" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#proxy_for" title="proxy_for" alt="" coords="719,631,727,639" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#defining_module" title="epydoc.apidoc.ValueDoc.defining_module" alt="" coords="789,585,888,599" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#defining_module" title="defining_module" alt="" coords="676,524,684,532" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#defining_module" title="defining_module" alt="" coords="840,631,848,639" />
+</map>
+  <img src="uml_class_diagram_for_epydoc_a_8.gif" alt='' usemap="#uml_class_diagram_for_epydoc_a_8" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<p>API documentation information about a single property.</p>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.apidoc.PropertyDoc-class.html#apidoc_links" class="summary-sig-name">apidoc_links</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">**filters</span>)</span><br />
+      Return a list of all <code>APIDoc</code>s that are directly linked 
+      from this <code>APIDoc</code> (i.e., are contained or pointed to by 
+      one or more of this <code>APIDoc</code>'s attributes.)</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.apidoc-pysrc.html#PropertyDoc.apidoc_links">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_apidoc_links_5-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_apidoc_links_5-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_apidoc_links_5" name="call_graph_for_apidoc_links_5">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__cmp__" title="APIDoc.__cmp__()" alt="" coords="536,34,707,66" />
+<area shape="rect" href="epydoc.apidoc.PropertyDoc-class.html#apidoc_links" title="apidoc_links()" alt="" coords="359,34,487,66" />
+<area shape="rect" href="epydoc.apidoc-module.html#reachable_valdocs" title="reachable_valdocs()" alt="" coords="71,6,244,38" />
+<area shape="rect" href="epydoc.docbuilder-module.html#assign_canonical_names" title="docbuilder.assign_canonical_names()" alt="" coords="7,62,308,94" />
+</map>
+  <img src="call_graph_for_apidoc_links_5.gif" alt='' usemap="#call_graph_for_apidoc_links_5" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>bool</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.apidoc.PropertyDoc-class.html#is_detailed" class="summary-sig-name">is_detailed</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Does this object deserve a box with extra details?</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.apidoc-pysrc.html#PropertyDoc.is_detailed">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_is_detailed_4-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_is_detailed_4-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_is_detailed_4" name="call_graph_for_is_detailed_4">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#is_detailed" title="APIDoc.is_detailed()" alt="" coords="435,6,616,38" />
+<area shape="rect" href="epydoc.apidoc.PropertyDoc-class.html#is_detailed" title="is_detailed()" alt="" coords="271,6,385,38" />
+<area shape="rect" href="epydoc.apidoc.VariableDoc-class.html#is_detailed" title="VariableDoc.is_detailed()" alt="" coords="5,6,221,38" />
+</map>
+  <img src="call_graph_for_is_detailed_4.gif" alt='' usemap="#call_graph_for_is_detailed_4" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.ValueDoc-class.html">ValueDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#__getstate__">__getstate__</a></code>,
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#__repr__">__repr__</a></code>,
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#__setstate__">__setstate__</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.APIDoc-class.html">APIDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.APIDoc-class.html#__cmp__">__cmp__</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#__hash__">__hash__</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#__init__">__init__</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#__setattr__">__setattr__</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#__str__">__str__</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#merge_and_overwrite">merge_and_overwrite</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#pp">pp</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#specialize_to">specialize_to</a></code>
+      </p>
+    <div class="private">    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.APIDoc-class.html">APIDoc</a></code></b> (private):
+      <code><a href="epydoc.apidoc.APIDoc-class.html#_debug_setattr" onclick="show_private();">_debug_setattr</a></code>
+      </p></div>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>
+      </p>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Value Representation</th></tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.ValueDoc-class.html">ValueDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#pyval_repr">pyval_repr</a></code>,
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#summary_pyval_repr">summary_pyval_repr</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Class Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-ClassVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Value Representation</th></tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.ValueDoc-class.html">ValueDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#REPR_LINELEN">REPR_LINELEN</a></code>,
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#REPR_MAXLINES">REPR_MAXLINES</a></code>,
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#REPR_MIN_SCORE">REPR_MIN_SCORE</a></code>,
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#SUMMARY_REPR_LINELEN">SUMMARY_REPR_LINELEN</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== INSTANCE VARIABLES ==================== -->
+<a name="section-InstanceVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.ValueDoc-class.html">ValueDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#canonical_name">canonical_name</a></code>,
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#toktree">toktree</a></code>
+      </p>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Property Access Functions</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><a href="epydoc.apidoc.RoutineDoc-class.html" 
+      class="link">RoutineDoc</a></span>
+    </td><td class="summary">
+        <a name="fget"></a><span class="summary-name">fget</span> = <code title="_Sentinel('UNKNOWN')">_Sentinel('UNKNOWN')</code><br />
+      API documentation for the property's get function.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><a href="epydoc.apidoc.RoutineDoc-class.html" 
+      class="link">RoutineDoc</a></span>
+    </td><td class="summary">
+        <a name="fset"></a><span class="summary-name">fset</span> = <code title="_Sentinel('UNKNOWN')">_Sentinel('UNKNOWN')</code><br />
+      API documentation for the property's set function.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><a href="epydoc.apidoc.RoutineDoc-class.html" 
+      class="link">RoutineDoc</a></span>
+    </td><td class="summary">
+        <a name="fdel"></a><span class="summary-name">fdel</span> = <code title="_Sentinel('UNKNOWN')">_Sentinel('UNKNOWN')</code><br />
+      API documentation for the property's delete function.
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Information Extracted from Docstrings</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><a href="epydoc.markup.ParsedDocstring-class.html" 
+      class="link">ParsedDocstring</a></span>
+    </td><td class="summary">
+        <a name="type_descr"></a><span class="summary-name">type_descr</span> = <code title="_Sentinel('UNKNOWN')">_Sentinel('UNKNOWN')</code><br />
+      A description of the property's expected type, extracted from its 
+      docstring.
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.APIDoc-class.html">APIDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.APIDoc-class.html#descr">descr</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#extra_docstring_fields">extra_docstring_fields</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#metadata">metadata</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#other_docs">other_docs</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#summary">summary</a></code>
+      </p>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Value Representation</th></tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.ValueDoc-class.html">ValueDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#parse_repr">parse_repr</a></code>,
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#pyval">pyval</a></code>
+      </p>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Context</th></tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.ValueDoc-class.html">ValueDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#defining_module">defining_module</a></code>
+      </p>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Information about Imported Variables</th></tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.ValueDoc-class.html">ValueDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#proxy_for">proxy_for</a></code>
+      </p>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Docstrings</th></tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.APIDoc-class.html">APIDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.APIDoc-class.html#docstring">docstring</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#docstring_lineno">docstring_lineno</a></code>
+      </p>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Source Information</th></tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.APIDoc-class.html">APIDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.APIDoc-class.html#docs_extracted_by">docs_extracted_by</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Properties</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Properties"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Method Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-MethodDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="apidoc_links"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">apidoc_links</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">**filters</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.apidoc-pysrc.html#PropertyDoc.apidoc_links">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_apidoc_links_5-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_apidoc_links_5-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_apidoc_links_5" name="call_graph_for_apidoc_links_5">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__cmp__" title="APIDoc.__cmp__()" alt="" coords="536,34,707,66" />
+<area shape="rect" href="epydoc.apidoc.PropertyDoc-class.html#apidoc_links" title="apidoc_links()" alt="" coords="359,34,487,66" />
+<area shape="rect" href="epydoc.apidoc-module.html#reachable_valdocs" title="reachable_valdocs()" alt="" coords="71,6,244,38" />
+<area shape="rect" href="epydoc.docbuilder-module.html#assign_canonical_names" title="docbuilder.assign_canonical_names()" alt="" coords="7,62,308,94" />
+</map>
+  <img src="call_graph_for_apidoc_links_5.gif" alt='' usemap="#call_graph_for_apidoc_links_5" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Return a list of all <code>APIDoc</code>s that are directly linked 
+  from this <code>APIDoc</code> (i.e., are contained or pointed to by one 
+  or more of this <code>APIDoc</code>'s attributes.)</p>
+  <p>Keyword argument <code>filters</code> can be used to selectively 
+  exclude certain categories of attribute value.  For example, using 
+  <code>includes=False</code> will exclude variables that were imported 
+  from other modules; and <code>subclasses=False</code> will exclude 
+  subclasses.  The filter categories currently supported by epydoc are:</p>
+  <ul>
+    <li>
+      <code>imports</code>: Imported variables.
+    </li>
+    <li>
+      <code>packages</code>: Containing packages for modules.
+    </li>
+    <li>
+      <code>submodules</code>: Contained submodules for packages.
+    </li>
+    <li>
+      <code>bases</code>: Bases for classes.
+    </li>
+    <li>
+      <code>subclasses</code>: Subclasses for classes.
+    </li>
+    <li>
+      <code>variables</code>: All variables.
+    </li>
+    <li>
+      <code>private</code>: Private variables.
+    </li>
+    <li>
+      <code>overrides</code>: Points from class variables to the variables 
+      they override.  This filter is False by default.
+    </li>
+  </ul>
+  <dl class="fields">
+    <dt>Overrides:
+        <a href="epydoc.apidoc.APIDoc-class.html#apidoc_links">APIDoc.apidoc_links</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="is_detailed"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">is_detailed</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.apidoc-pysrc.html#PropertyDoc.is_detailed">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_is_detailed_4-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_is_detailed_4-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_is_detailed_4" name="call_graph_for_is_detailed_4">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#is_detailed" title="APIDoc.is_detailed()" alt="" coords="435,6,616,38" />
+<area shape="rect" href="epydoc.apidoc.PropertyDoc-class.html#is_detailed" title="is_detailed()" alt="" coords="271,6,385,38" />
+<area shape="rect" href="epydoc.apidoc.VariableDoc-class.html#is_detailed" title="VariableDoc.is_detailed()" alt="" coords="5,6,221,38" />
+</map>
+  <img src="call_graph_for_is_detailed_4.gif" alt='' usemap="#call_graph_for_is_detailed_4" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Does this object deserve a box with extra details?</p>
+  <dl class="fields">
+    <dt>Returns: <code>bool</code></dt>
+        <dd>True if the object needs extra details, else False.</dd>
+    <dt>Overrides:
+        <a href="epydoc.apidoc.APIDoc-class.html#is_detailed">APIDoc.is_detailed</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:07:25 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.apidoc.RoutineDoc-class.html b/doc/api/epydoc.apidoc.RoutineDoc-class.html
new file mode 100644
index 0000000..28c6299
--- /dev/null
+++ b/doc/api/epydoc.apidoc.RoutineDoc-class.html
@@ -0,0 +1,838 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.apidoc.RoutineDoc</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.apidoc-module.html">Module apidoc</a> ::
+        Class RoutineDoc
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.apidoc.RoutineDoc-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class RoutineDoc</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.apidoc-pysrc.html#RoutineDoc">source code</a></span></p>
+<center>
+<center>  <map id="uml_class_diagram_for_epydoc_a_9" name="uml_class_diagram_for_epydoc_a_9">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#docstring" title="The documented item's docstring." alt="" coords="56,28,429,47" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#docstring_lineno" title="The line number on which the documented item's docstring begins." alt="" coords="56,47,429,66" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#other_docs" title="A flag indicating if the entire docstring body (except tags if any) is  entirely included in the summary." alt="" coords="56,66,429,84" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#metadata" title="Metadata about the documented item, extracted from fields in its docstring." alt="" coords="56,84,429,103" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#docs_extracted_by" title="Information about where the information contained by this APIDoc came from." alt="" coords="56,103,429,122" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__init__" title="Construct a new APIDoc object." alt="" coords="56,124,429,143" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__setattr__" title="Modify an APIDoc's attribute." alt="" coords="56,143,429,162" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#pp" title="Return a pretty-printed string representation for the information contained in this APIDoc." alt="" coords="56,162,429,180" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__str__" title="Return a pretty-printed string representation for the information contained in this APIDoc." alt="" coords="56,180,429,199" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#specialize_to" title="Change self's class to cls." alt="" coords="56,199,429,218" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__hash__" title="hash(x)" alt="" coords="56,218,429,236" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__cmp__" title="epydoc.apidoc.APIDoc.__cmp__" alt="" coords="56,236,429,255" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#merge_and_overwrite" title="Combine self and other into a merged object, such that any changes made to  one will affect the other." alt="" coords="56,255,429,274" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html" title="API documentation information for a single element of a Python program." alt="" coords="44,6,441,280" />
+<area shape="rect" href="epydoc.markup.ParsedDocstring-class.html" title="A standard intermediate representation for parsed docstrings that can be used to generate output." alt="" coords="419,904,603,942" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#descr" title="epydoc.apidoc.APIDoc.descr" alt="" coords="830,604,863,618" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#descr" title="descr" alt="" coords="427,171,435,179" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#descr" title="descr" alt="" coords="588,915,596,923" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#summary" title="epydoc.apidoc.APIDoc.summary" alt="" coords="701,604,757,618" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#summary" title="summary" alt="" coords="420,271,428,279" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#summary" title="summary" alt="" coords="588,906,596,914" />
+<area shape="rect" href="epydoc.docstringparser.DocstringField-class.html" title="A simple docstring field, which can be used to describe specific information about an object, such as its author or its version." alt="" coords="873,436,1089,474" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#extra_docstring_fields" title="epydoc.apidoc.APIDoc.extra_docstring_fields" alt="" coords="867,292,997,306" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#extra_docstring_fields" title="extra_docstring_fields" alt="" coords="427,171,435,179" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#extra_docstring_fields" title="extra_docstring_fields" alt="" coords="971,438,979,446" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#pyval" title="A pointer to the actual Python object described by this ValueDoc." alt="" coords="113,340,372,359" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#parse_repr" title="A text representation of this value, extracted from parsing its source  code." alt="" coords="113,359,372,378" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#REPR_MAXLINES" title="The maximum number of lines of text that should be generated by  pyval_repr()." alt="" coords="113,378,372,396" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#REPR_LINELEN" title="The maximum number of characters for lines of text that should be generated by pyval_repr()." alt="" coords="113,396,372,415" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#SUMMARY_REPR_LINELEN" title="The maximum number of characters for the single-line text representation  generated by summary_pyval_repr()." alt="" coords="113,415,372,434" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#REPR_MIN_SCORE" title="The minimum score that a value representation based on pyval should have in order to be used instead of parse_repr as the canonical representation for  this ValueDoc's value." alt="" coords="113,434,372,452" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#toktree" title="This is currently used to extract values from __all__, etc, in the  docparser module; maybe I should specialize process_assignment and extract  it there?  Although, for __all__, it's not clear where I'd put the value,  since I just use it to set private/public/imported attribs on other vars  (that might not exist yet at the time.)" alt="" coords="113,452,372,471" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#__repr__" title="repr(x)" alt="" coords="113,474,372,492" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#__setstate__" title="epydoc.apidoc.ValueDoc.__setstate__" alt="" coords="113,492,372,511" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#__getstate__" title="State serializer for the pickle module." alt="" coords="113,511,372,530" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#pyval_repr" title="Return a formatted representation of the Python object described by this  ValueDoc." alt="" coords="113,530,372,548" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#summary_pyval_repr" title="Return a single-line formatted representation of the Python object  described by this ValueDoc." alt="" coords="113,548,372,567" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#apidoc_links" title="Return a list of all APIDocs that are directly linked from this APIDoc  (i.e., are contained or pointed to by one or more of this APIDoc's  attributes.)" alt="" coords="113,567,372,586" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html" title="API documentation information about a single Python value." alt="" coords="101,318,384,592" />
+<area shape="rect" href="epydoc.apidoc.ClassMethodDoc-class.html" title="epydoc.apidoc.ClassMethodDoc" alt="" coords="5,904,144,942" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html" title="A sequence of identifiers, separated by periods, used to name a Python variable, value, or argument." alt="" coords="445,730,557,767" />
+<area shape="rect" href="epydoc.apidoc.ModuleDoc-class.html" title="API documentation information about a single module." alt="" coords="587,730,691,767" />
+<area shape="rect" href="epydoc.apidoc.StaticMethodDoc-class.html" title="epydoc.apidoc.StaticMethodDoc" alt="" coords="173,904,312,942" />
+<area shape="rect" href="epydoc.apidoc.RoutineDoc-class.html#posargs" title="The names of the routine's positional arguments." alt="" coords="116,652,368,671" />
+<area shape="rect" href="epydoc.apidoc.RoutineDoc-class.html#posarg_defaults" title="API documentation for the positional arguments' default values." alt="" coords="116,671,368,690" />
+<area shape="rect" href="epydoc.apidoc.RoutineDoc-class.html#vararg" title="The name of the routine's vararg argument, or None if it has no vararg  argument." alt="" coords="116,690,368,708" />
+<area shape="rect" href="epydoc.apidoc.RoutineDoc-class.html#kwarg" title="The name of the routine's keyword argument, or None if it has no keyword  argument." alt="" coords="116,708,368,727" />
+<area shape="rect" href="epydoc.apidoc.RoutineDoc-class.html#lineno" title="The line number of the first line of the function's signature." alt="" coords="116,727,368,746" />
+<area shape="rect" href="epydoc.apidoc.RoutineDoc-class.html#decorators" title="A list of names of decorators that were applied to this routine, in the  order that they are listed in the source code." alt="" coords="116,746,368,764" />
+<area shape="rect" href="epydoc.apidoc.RoutineDoc-class.html#arg_descrs" title="A list of descriptions of the routine's arguments." alt="" coords="116,764,368,783" />
+<area shape="rect" href="epydoc.apidoc.RoutineDoc-class.html#exception_descrs" title="A list of descriptions of exceptions that the routine might raise." alt="" coords="116,783,368,802" />
+<area shape="rect" href="epydoc.apidoc.RoutineDoc-class.html#callgraph_uid" title="DotGraph.uid of the call graph for the function." alt="" coords="116,802,368,820" />
+<area shape="rect" href="epydoc.apidoc.RoutineDoc-class.html#is_detailed" title="Does this object deserve a box with extra details?" alt="" coords="116,823,368,842" />
+<area shape="rect" href="epydoc.apidoc.RoutineDoc-class.html#all_args" title="Returns:  A list of the names of all arguments (positional, vararg, and keyword), in  order." alt="" coords="116,842,368,860" />
+<area shape="rect" href="epydoc.apidoc.RoutineDoc-class.html" title="API documentation information about a single routine." alt="" coords="104,630,416,867" />
+<area shape="rect" href="epydoc.apidoc.RoutineDoc-class.html#arg_types" title="epydoc.apidoc.RoutineDoc.arg_types" alt="" coords="494,878,554,893" />
+<area shape="rect" href="epydoc.apidoc.RoutineDoc-class.html#arg_types" title="arg_types" alt="" coords="403,800,411,808" />
+<area shape="rect" href="epydoc.apidoc.RoutineDoc-class.html#arg_types" title="arg_types" alt="" coords="500,906,508,914" />
+<area shape="rect" href="epydoc.apidoc.RoutineDoc-class.html#return_descr" title="epydoc.apidoc.RoutineDoc.return_descr" alt="" coords="390,878,466,893" />
+<area shape="rect" href="epydoc.apidoc.RoutineDoc-class.html#return_descr" title="return_descr" alt="" coords="340,858,348,866" />
+<area shape="rect" href="epydoc.apidoc.RoutineDoc-class.html#return_descr" title="return_descr" alt="" coords="425,906,433,914" />
+<area shape="rect" href="epydoc.apidoc.RoutineDoc-class.html#return_type" title="epydoc.apidoc.RoutineDoc.return_type" alt="" coords="289,878,357,893" />
+<area shape="rect" href="epydoc.apidoc.RoutineDoc-class.html#return_type" title="return_type" alt="" coords="260,858,268,866" />
+<area shape="rect" href="epydoc.apidoc.RoutineDoc-class.html#return_type" title="return_type" alt="" coords="425,911,433,919" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#canonical_name" title="epydoc.apidoc.ValueDoc.canonical_name" alt="" coords="419,604,517,618" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#canonical_name" title="canonical_name" alt="" coords="369,563,377,571" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#canonical_name" title="canonical_name" alt="" coords="491,731,499,739" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#proxy_for" title="epydoc.apidoc.ValueDoc.proxy_for" alt="" coords="348,604,404,618" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#proxy_for" title="proxy_for" alt="" coords="308,583,316,591" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#proxy_for" title="proxy_for" alt="" coords="493,731,501,739" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#defining_module" title="epydoc.apidoc.ValueDoc.defining_module" alt="" coords="560,604,659,618" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#defining_module" title="defining_module" alt="" coords="369,499,377,507" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#defining_module" title="defining_module" alt="" coords="631,731,639,739" />
+</map>
+  <img src="uml_class_diagram_for_epydoc_a_9.gif" alt='' usemap="#uml_class_diagram_for_epydoc_a_9" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<p>API documentation information about a single routine.</p>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>bool</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.apidoc.RoutineDoc-class.html#is_detailed" class="summary-sig-name">is_detailed</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Does this object deserve a box with extra details?</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.apidoc-pysrc.html#RoutineDoc.is_detailed">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_is_detailed_5-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_is_detailed_5-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_is_detailed_5" name="call_graph_for_is_detailed_5">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#is_detailed" title="APIDoc.is_detailed()" alt="" coords="435,6,616,38" />
+<area shape="rect" href="epydoc.apidoc.RoutineDoc-class.html#is_detailed" title="is_detailed()" alt="" coords="271,6,385,38" />
+<area shape="rect" href="epydoc.apidoc.VariableDoc-class.html#is_detailed" title="VariableDoc.is_detailed()" alt="" coords="5,6,221,38" />
+</map>
+  <img src="call_graph_for_is_detailed_5.gif" alt='' usemap="#call_graph_for_is_detailed_5" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.apidoc.RoutineDoc-class.html#all_args" class="summary-sig-name">all_args</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Returns:
+      A list of the names of all arguments (positional, vararg, and 
+      keyword), in order.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.apidoc-pysrc.html#RoutineDoc.all_args">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_all_args-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_all_args-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_all_args" name="call_graph_for_all_args">
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#find" title="DocIndex.find()" alt="" coords="148,6,292,38" />
+<area shape="rect" href="epydoc.apidoc.RoutineDoc-class.html#all_args" title="all_args()" alt="" coords="483,90,576,122" />
+<area shape="rect" href="epydoc.apidoc-module.html#_flatten" title="_flatten()" alt="" coords="626,90,716,122" />
+<area shape="rect" href="epydoc.docstringparser-module.html#check_type_fields" title="docstringparser.check_type_fields()" alt="" coords="76,62,364,94" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_arg_field" title="docstringparser.process_arg_field()" alt="" coords="78,118,363,150" />
+<area shape="rect" href="epydoc.docwriter.html._HTMLDocstringLinker-class.html#_failed_xref" title="docwriter.html._HTMLDocstringLinker._failed_xref()" alt="" coords="6,174,435,206" />
+</map>
+  <img src="call_graph_for_all_args.gif" alt='' usemap="#call_graph_for_all_args" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.ValueDoc-class.html">ValueDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#__getstate__">__getstate__</a></code>,
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#__repr__">__repr__</a></code>,
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#__setstate__">__setstate__</a></code>,
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#apidoc_links">apidoc_links</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.APIDoc-class.html">APIDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.APIDoc-class.html#__cmp__">__cmp__</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#__hash__">__hash__</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#__init__">__init__</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#__setattr__">__setattr__</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#__str__">__str__</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#merge_and_overwrite">merge_and_overwrite</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#pp">pp</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#specialize_to">specialize_to</a></code>
+      </p>
+    <div class="private">    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.APIDoc-class.html">APIDoc</a></code></b> (private):
+      <code><a href="epydoc.apidoc.APIDoc-class.html#_debug_setattr" onclick="show_private();">_debug_setattr</a></code>
+      </p></div>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>
+      </p>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Value Representation</th></tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.ValueDoc-class.html">ValueDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#pyval_repr">pyval_repr</a></code>,
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#summary_pyval_repr">summary_pyval_repr</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Class Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-ClassVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Value Representation</th></tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.ValueDoc-class.html">ValueDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#REPR_LINELEN">REPR_LINELEN</a></code>,
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#REPR_MAXLINES">REPR_MAXLINES</a></code>,
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#REPR_MIN_SCORE">REPR_MIN_SCORE</a></code>,
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#SUMMARY_REPR_LINELEN">SUMMARY_REPR_LINELEN</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== INSTANCE VARIABLES ==================== -->
+<a name="section-InstanceVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>str</code></span>
+    </td><td class="summary">
+        <a name="callgraph_uid"></a><span class="summary-name">callgraph_uid</span> = <code title="None">None</code><br />
+      <a href="epydoc.docwriter.dotgraph.DotGraph-class.html" 
+      class="link">DotGraph</a>.uid of the call graph for the function.
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.ValueDoc-class.html">ValueDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#canonical_name">canonical_name</a></code>,
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#toktree">toktree</a></code>
+      </p>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Signature</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>list</code></span>
+    </td><td class="summary">
+        <a href="epydoc.apidoc.RoutineDoc-class.html#posargs" class="summary-name">posargs</a> = <code title="_Sentinel('UNKNOWN')">_Sentinel('UNKNOWN')</code><br />
+      The names of the routine's positional arguments.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>list</code> of <code>ValueDoc</code> or <code>None</code></span>
+    </td><td class="summary">
+        <a href="epydoc.apidoc.RoutineDoc-class.html#posarg_defaults" class="summary-name">posarg_defaults</a> = <code title="_Sentinel('UNKNOWN')">_Sentinel('UNKNOWN')</code><br />
+      API documentation for the positional arguments' default values.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>string</code> or <code>None</code></span>
+    </td><td class="summary">
+        <a name="vararg"></a><span class="summary-name">vararg</span> = <code title="_Sentinel('UNKNOWN')">_Sentinel('UNKNOWN')</code><br />
+      The name of the routine's vararg argument, or <code>None</code> if it
+      has no vararg argument.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>string</code> or <code>None</code></span>
+    </td><td class="summary">
+        <a name="kwarg"></a><span class="summary-name">kwarg</span> = <code title="_Sentinel('UNKNOWN')">_Sentinel('UNKNOWN')</code><br />
+      The name of the routine's keyword argument, or <code>None</code> if 
+      it has no keyword argument.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>int</code></span>
+    </td><td class="summary">
+        <a href="epydoc.apidoc.RoutineDoc-class.html#lineno" class="summary-name">lineno</a> = <code title="_Sentinel('UNKNOWN')">_Sentinel('UNKNOWN')</code><br />
+      The line number of the first line of the function's signature.
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Decorators</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>list</code> of <code>string</code></span>
+    </td><td class="summary">
+        <a href="epydoc.apidoc.RoutineDoc-class.html#decorators" class="summary-name">decorators</a> = <code title="_Sentinel('UNKNOWN')">_Sentinel('UNKNOWN')</code><br />
+      A list of names of decorators that were applied to this routine, in 
+      the order that they are listed in the source code.
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Information Extracted from Docstrings</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>list</code></span>
+    </td><td class="summary">
+        <a href="epydoc.apidoc.RoutineDoc-class.html#arg_descrs" class="summary-name">arg_descrs</a> = <code title="_Sentinel('UNKNOWN')">_Sentinel('UNKNOWN')</code><br />
+      A list of descriptions of the routine's arguments.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>dict</code> from <code>string</code> to <a 
+      href="epydoc.markup.ParsedDocstring-class.html" 
+      class="link">ParsedDocstring</a></span>
+    </td><td class="summary">
+        <a name="arg_types"></a><span class="summary-name">arg_types</span> = <code title="_Sentinel('UNKNOWN')">_Sentinel('UNKNOWN')</code><br />
+      Descriptions of the expected types for the routine's arguments, 
+      encoded as a dictionary mapping from argument names to type 
+      descriptions.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><a href="epydoc.markup.ParsedDocstring-class.html" 
+      class="link">ParsedDocstring</a></span>
+    </td><td class="summary">
+        <a name="return_descr"></a><span class="summary-name">return_descr</span> = <code title="_Sentinel('UNKNOWN')">_Sentinel('UNKNOWN')</code><br />
+      A description of the value returned by this routine.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><a href="epydoc.markup.ParsedDocstring-class.html" 
+      class="link">ParsedDocstring</a></span>
+    </td><td class="summary">
+        <a name="return_type"></a><span class="summary-name">return_type</span> = <code title="_Sentinel('UNKNOWN')">_Sentinel('UNKNOWN')</code><br />
+      A description of expected type for the value returned by this 
+      routine.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>list</code></span>
+    </td><td class="summary">
+        <a href="epydoc.apidoc.RoutineDoc-class.html#exception_descrs" class="summary-name">exception_descrs</a> = <code title="_Sentinel('UNKNOWN')">_Sentinel('UNKNOWN')</code><br />
+      A list of descriptions of exceptions that the routine might raise.
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.APIDoc-class.html">APIDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.APIDoc-class.html#descr">descr</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#extra_docstring_fields">extra_docstring_fields</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#metadata">metadata</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#other_docs">other_docs</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#summary">summary</a></code>
+      </p>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Value Representation</th></tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.ValueDoc-class.html">ValueDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#parse_repr">parse_repr</a></code>,
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#pyval">pyval</a></code>
+      </p>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Context</th></tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.ValueDoc-class.html">ValueDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#defining_module">defining_module</a></code>
+      </p>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Information about Imported Variables</th></tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.ValueDoc-class.html">ValueDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#proxy_for">proxy_for</a></code>
+      </p>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Docstrings</th></tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.APIDoc-class.html">APIDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.APIDoc-class.html#docstring">docstring</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#docstring_lineno">docstring_lineno</a></code>
+      </p>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Source Information</th></tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.APIDoc-class.html">APIDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.APIDoc-class.html#docs_extracted_by">docs_extracted_by</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Properties</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Properties"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Method Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-MethodDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="is_detailed"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">is_detailed</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.apidoc-pysrc.html#RoutineDoc.is_detailed">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_is_detailed_5-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_is_detailed_5-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_is_detailed_5" name="call_graph_for_is_detailed_5">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#is_detailed" title="APIDoc.is_detailed()" alt="" coords="435,6,616,38" />
+<area shape="rect" href="epydoc.apidoc.RoutineDoc-class.html#is_detailed" title="is_detailed()" alt="" coords="271,6,385,38" />
+<area shape="rect" href="epydoc.apidoc.VariableDoc-class.html#is_detailed" title="VariableDoc.is_detailed()" alt="" coords="5,6,221,38" />
+</map>
+  <img src="call_graph_for_is_detailed_5.gif" alt='' usemap="#call_graph_for_is_detailed_5" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Does this object deserve a box with extra details?</p>
+  <dl class="fields">
+    <dt>Returns: <code>bool</code></dt>
+        <dd>True if the object needs extra details, else False.</dd>
+    <dt>Overrides:
+        <a href="epydoc.apidoc.APIDoc-class.html#is_detailed">APIDoc.is_detailed</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="all_args"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">all_args</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.apidoc-pysrc.html#RoutineDoc.all_args">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_all_args-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_all_args-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_all_args" name="call_graph_for_all_args">
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#find" title="DocIndex.find()" alt="" coords="148,6,292,38" />
+<area shape="rect" href="epydoc.apidoc.RoutineDoc-class.html#all_args" title="all_args()" alt="" coords="483,90,576,122" />
+<area shape="rect" href="epydoc.apidoc-module.html#_flatten" title="_flatten()" alt="" coords="626,90,716,122" />
+<area shape="rect" href="epydoc.docstringparser-module.html#check_type_fields" title="docstringparser.check_type_fields()" alt="" coords="76,62,364,94" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_arg_field" title="docstringparser.process_arg_field()" alt="" coords="78,118,363,150" />
+<area shape="rect" href="epydoc.docwriter.html._HTMLDocstringLinker-class.html#_failed_xref" title="docwriter.html._HTMLDocstringLinker._failed_xref()" alt="" coords="6,174,435,206" />
+</map>
+  <img src="call_graph_for_all_args.gif" alt='' usemap="#call_graph_for_all_args" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  
+  <dl class="fields">
+    <dt>Returns:</dt>
+        <dd>A list of the names of all arguments (positional, vararg, and 
+          keyword), in order.  If a positional argument consists of a tuple
+          of names, then that tuple will be flattened.</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== INSTANCE VARIABLE DETAILS ==================== -->
+<a name="section-InstanceVariableDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Variable Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceVariableDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="posargs"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">posargs</h3>
+  The names of the routine's positional arguments. If an argument list 
+  contains "unpacking" arguments, then their names will be 
+  specified using nested lists.  E.g., if a function's argument list is 
+  <code>((x1,y1), (x2,y2))</code>, then posargs will be <code>[['x1','y1'],
+  ['x2','y2']]</code>.
+  <dl class="fields">
+    <dt>Type:</dt>
+      <dd><code>list</code></dd>
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+_Sentinel('UNKNOWN')
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="posarg_defaults"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">posarg_defaults</h3>
+  API documentation for the positional arguments' default values.  This 
+  list has the same length as <code>posargs</code>, and each element of 
+  <code>posarg_defaults</code> describes the corresponding argument in 
+  <code>posargs</code>.  For positional arguments with no default, 
+  <code>posargs_defaults</code> will contain None.
+  <dl class="fields">
+    <dt>Type:</dt>
+      <dd><code>list</code> of <code>ValueDoc</code> or <code>None</code></dd>
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+_Sentinel('UNKNOWN')
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="lineno"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">lineno</h3>
+  The line number of the first line of the function's signature.  For 
+  Python functions, this is equal to 
+  <code>func.func_code.co_firstlineno</code>.  The first line of a file is 
+  considered line 1.
+  <dl class="fields">
+    <dt>Type:</dt>
+      <dd><code>int</code></dd>
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+_Sentinel('UNKNOWN')
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="decorators"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">decorators</h3>
+  A list of names of decorators that were applied to this routine, in the 
+  order that they are listed in the source code. (I.e., in the reverse of 
+  the order that they were applied in.)
+  <dl class="fields">
+    <dt>Type:</dt>
+      <dd><code>list</code> of <code>string</code></dd>
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+_Sentinel('UNKNOWN')
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="arg_descrs"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">arg_descrs</h3>
+  A list of descriptions of the routine's arguments.  Each element of this 
+  list is a tuple <code>(args, descr)</code>, where <code>args</code> is a 
+  list of argument names; and <code>descr</code> is a <a 
+  href="epydoc.markup.ParsedDocstring-class.html" 
+  class="link">ParsedDocstring</a> describing the argument(s) specified by 
+  <code>arg</code>.
+  <dl class="fields">
+    <dt>Type:</dt>
+      <dd><code>list</code></dd>
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+_Sentinel('UNKNOWN')
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="exception_descrs"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">exception_descrs</h3>
+  A list of descriptions of exceptions that the routine might raise.  Each 
+  element of this list is a tuple <code>(exc, descr)</code>, where 
+  <code>exc</code> is a string contianing the exception name; and 
+  <code>descr</code> is a <a 
+  href="epydoc.markup.ParsedDocstring-class.html" 
+  class="link">ParsedDocstring</a> describing the circumstances under which
+  the exception specified by <code>exc</code> is raised.
+  <dl class="fields">
+    <dt>Type:</dt>
+      <dd><code>list</code></dd>
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+_Sentinel('UNKNOWN')
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:07:28 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.apidoc.StaticMethodDoc-class.html b/doc/api/epydoc.apidoc.StaticMethodDoc-class.html
new file mode 100644
index 0000000..3830cc8
--- /dev/null
+++ b/doc/api/epydoc.apidoc.StaticMethodDoc-class.html
@@ -0,0 +1,440 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.apidoc.StaticMethodDoc</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.apidoc-module.html">Module apidoc</a> ::
+        Class StaticMethodDoc
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.apidoc.StaticMethodDoc-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class StaticMethodDoc</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.apidoc-pysrc.html#StaticMethodDoc">source code</a></span></p>
+<center>
+<center>  <map id="uml_class_diagram_for_epydoc_a_10" name="uml_class_diagram_for_epydoc_a_10">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#docstring" title="The documented item's docstring." alt="" coords="17,28,391,47" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#docstring_lineno" title="The line number on which the documented item's docstring begins." alt="" coords="17,47,391,65" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#other_docs" title="A flag indicating if the entire docstring body (except tags if any) is  entirely included in the summary." alt="" coords="17,65,391,84" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#metadata" title="Metadata about the documented item, extracted from fields in its docstring." alt="" coords="17,84,391,103" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#docs_extracted_by" title="Information about where the information contained by this APIDoc came from." alt="" coords="17,103,391,121" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__init__" title="Construct a new APIDoc object." alt="" coords="17,124,391,143" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__setattr__" title="Modify an APIDoc's attribute." alt="" coords="17,143,391,161" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#pp" title="Return a pretty-printed string representation for the information contained in this APIDoc." alt="" coords="17,161,391,180" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__str__" title="Return a pretty-printed string representation for the information contained in this APIDoc." alt="" coords="17,180,391,199" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#specialize_to" title="Change self's class to cls." alt="" coords="17,199,391,217" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__hash__" title="hash(x)" alt="" coords="17,217,391,236" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__cmp__" title="epydoc.apidoc.APIDoc.__cmp__" alt="" coords="17,236,391,255" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#merge_and_overwrite" title="Combine self and other into a merged object, such that any changes made to  one will affect the other." alt="" coords="17,255,391,273" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html" title="API documentation information for a single element of a Python program." alt="" coords="5,5,403,280" />
+<area shape="rect" href="epydoc.markup.ParsedDocstring-class.html" title="A standard intermediate representation for parsed docstrings that can be used to generate output." alt="" coords="380,907,564,944" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#descr" title="epydoc.apidoc.APIDoc.descr" alt="" coords="663,603,697,618" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#descr" title="descr" alt="" coords="381,271,389,279" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#descr" title="descr" alt="" coords="547,908,555,916" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#summary" title="epydoc.apidoc.APIDoc.summary" alt="" coords="711,603,767,618" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#summary" title="summary" alt="" coords="388,201,396,209" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#summary" title="summary" alt="" coords="549,913,557,921" />
+<area shape="rect" href="epydoc.docstringparser.DocstringField-class.html" title="A simple docstring field, which can be used to describe specific information about an object, such as its author or its version." alt="" coords="812,436,1028,473" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#extra_docstring_fields" title="epydoc.apidoc.APIDoc.extra_docstring_fields" alt="" coords="805,291,936,306" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#extra_docstring_fields" title="extra_docstring_fields" alt="" coords="388,155,396,163" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#extra_docstring_fields" title="extra_docstring_fields" alt="" coords="909,437,917,445" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#pyval" title="A pointer to the actual Python object described by this ValueDoc." alt="" coords="75,340,333,359" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#parse_repr" title="A text representation of this value, extracted from parsing its source  code." alt="" coords="75,359,333,377" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#REPR_MAXLINES" title="The maximum number of lines of text that should be generated by  pyval_repr()." alt="" coords="75,377,333,396" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#REPR_LINELEN" title="The maximum number of characters for lines of text that should be generated by pyval_repr()." alt="" coords="75,396,333,415" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#SUMMARY_REPR_LINELEN" title="The maximum number of characters for the single-line text representation  generated by summary_pyval_repr()." alt="" coords="75,415,333,433" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#REPR_MIN_SCORE" title="The minimum score that a value representation based on pyval should have in order to be used instead of parse_repr as the canonical representation for  this ValueDoc's value." alt="" coords="75,433,333,452" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#toktree" title="This is currently used to extract values from __all__, etc, in the  docparser module; maybe I should specialize process_assignment and extract  it there?  Although, for __all__, it's not clear where I'd put the value,  since I just use it to set private/public/imported attribs on other vars  (that might not exist yet at the time.)" alt="" coords="75,452,333,471" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#__repr__" title="repr(x)" alt="" coords="75,473,333,492" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#__setstate__" title="epydoc.apidoc.ValueDoc.__setstate__" alt="" coords="75,492,333,511" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#__getstate__" title="State serializer for the pickle module." alt="" coords="75,511,333,529" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#pyval_repr" title="Return a formatted representation of the Python object described by this  ValueDoc." alt="" coords="75,529,333,548" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#summary_pyval_repr" title="Return a single-line formatted representation of the Python object  described by this ValueDoc." alt="" coords="75,548,333,567" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#apidoc_links" title="Return a list of all APIDocs that are directly linked from this APIDoc  (i.e., are contained or pointed to by one or more of this APIDoc's  attributes.)" alt="" coords="75,567,333,585" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html" title="API documentation information about a single Python value." alt="" coords="63,317,345,592" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html" title="A sequence of identifiers, separated by periods, used to name a Python variable, value, or argument." alt="" coords="407,729,519,767" />
+<area shape="rect" href="epydoc.apidoc.ModuleDoc-class.html" title="API documentation information about a single module." alt="" coords="548,729,652,767" />
+<area shape="rect" href="epydoc.apidoc.StaticMethodDoc-class.html" title="epydoc.apidoc.StaticMethodDoc" alt="" coords="140,904,268,947" />
+<area shape="rect" href="epydoc.apidoc.RoutineDoc-class.html#posargs" title="The names of the routine's positional arguments." alt="" coords="77,652,329,671" />
+<area shape="rect" href="epydoc.apidoc.RoutineDoc-class.html#posarg_defaults" title="API documentation for the positional arguments' default values." alt="" coords="77,671,329,689" />
+<area shape="rect" href="epydoc.apidoc.RoutineDoc-class.html#vararg" title="The name of the routine's vararg argument, or None if it has no vararg  argument." alt="" coords="77,689,329,708" />
+<area shape="rect" href="epydoc.apidoc.RoutineDoc-class.html#kwarg" title="The name of the routine's keyword argument, or None if it has no keyword  argument." alt="" coords="77,708,329,727" />
+<area shape="rect" href="epydoc.apidoc.RoutineDoc-class.html#lineno" title="The line number of the first line of the function's signature." alt="" coords="77,727,329,745" />
+<area shape="rect" href="epydoc.apidoc.RoutineDoc-class.html#decorators" title="A list of names of decorators that were applied to this routine, in the  order that they are listed in the source code." alt="" coords="77,745,329,764" />
+<area shape="rect" href="epydoc.apidoc.RoutineDoc-class.html#arg_descrs" title="A list of descriptions of the routine's arguments." alt="" coords="77,764,329,783" />
+<area shape="rect" href="epydoc.apidoc.RoutineDoc-class.html#exception_descrs" title="A list of descriptions of exceptions that the routine might raise." alt="" coords="77,783,329,801" />
+<area shape="rect" href="epydoc.apidoc.RoutineDoc-class.html#callgraph_uid" title="DotGraph.uid of the call graph for the function." alt="" coords="77,801,329,820" />
+<area shape="rect" href="epydoc.apidoc.RoutineDoc-class.html#is_detailed" title="Does this object deserve a box with extra details?" alt="" coords="77,823,329,841" />
+<area shape="rect" href="epydoc.apidoc.RoutineDoc-class.html#all_args" title="Returns:  A list of the names of all arguments (positional, vararg, and keyword), in  order." alt="" coords="77,841,329,860" />
+<area shape="rect" href="epydoc.apidoc.RoutineDoc-class.html" title="API documentation information about a single routine." alt="" coords="65,629,377,867" />
+<area shape="rect" href="epydoc.apidoc.RoutineDoc-class.html#arg_types" title="epydoc.apidoc.RoutineDoc.arg_types" alt="" coords="455,878,515,893" />
+<area shape="rect" href="epydoc.apidoc.RoutineDoc-class.html#arg_types" title="arg_types" alt="" coords="364,800,372,808" />
+<area shape="rect" href="epydoc.apidoc.RoutineDoc-class.html#arg_types" title="arg_types" alt="" coords="461,908,469,916" />
+<area shape="rect" href="epydoc.apidoc.RoutineDoc-class.html#return_descr" title="epydoc.apidoc.RoutineDoc.return_descr" alt="" coords="351,878,427,893" />
+<area shape="rect" href="epydoc.apidoc.RoutineDoc-class.html#return_descr" title="return_descr" alt="" coords="303,857,311,865" />
+<area shape="rect" href="epydoc.apidoc.RoutineDoc-class.html#return_descr" title="return_descr" alt="" coords="392,908,400,916" />
+<area shape="rect" href="epydoc.apidoc.RoutineDoc-class.html#return_type" title="epydoc.apidoc.RoutineDoc.return_type" alt="" coords="257,878,325,893" />
+<area shape="rect" href="epydoc.apidoc.RoutineDoc-class.html#return_type" title="return_type" alt="" coords="227,857,235,865" />
+<area shape="rect" href="epydoc.apidoc.RoutineDoc-class.html#return_type" title="return_type" alt="" coords="387,913,395,921" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#canonical_name" title="epydoc.apidoc.ValueDoc.canonical_name" alt="" coords="381,603,478,618" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#canonical_name" title="canonical_name" alt="" coords="331,563,339,571" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#canonical_name" title="canonical_name" alt="" coords="452,731,460,739" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#proxy_for" title="epydoc.apidoc.ValueDoc.proxy_for" alt="" coords="309,603,365,618" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#proxy_for" title="proxy_for" alt="" coords="269,583,277,591" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#proxy_for" title="proxy_for" alt="" coords="455,731,463,739" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#defining_module" title="epydoc.apidoc.ValueDoc.defining_module" alt="" coords="521,603,620,618" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#defining_module" title="defining_module" alt="" coords="331,499,339,507" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#defining_module" title="defining_module" alt="" coords="592,731,600,739" />
+</map>
+  <img src="uml_class_diagram_for_epydoc_a_10.gif" alt='' usemap="#uml_class_diagram_for_epydoc_a_10" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.RoutineDoc-class.html">RoutineDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.RoutineDoc-class.html#all_args">all_args</a></code>,
+      <code><a href="epydoc.apidoc.RoutineDoc-class.html#is_detailed">is_detailed</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.ValueDoc-class.html">ValueDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#__getstate__">__getstate__</a></code>,
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#__repr__">__repr__</a></code>,
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#__setstate__">__setstate__</a></code>,
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#apidoc_links">apidoc_links</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.APIDoc-class.html">APIDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.APIDoc-class.html#__cmp__">__cmp__</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#__hash__">__hash__</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#__init__">__init__</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#__setattr__">__setattr__</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#__str__">__str__</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#merge_and_overwrite">merge_and_overwrite</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#pp">pp</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#specialize_to">specialize_to</a></code>
+      </p>
+    <div class="private">    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.APIDoc-class.html">APIDoc</a></code></b> (private):
+      <code><a href="epydoc.apidoc.APIDoc-class.html#_debug_setattr" onclick="show_private();">_debug_setattr</a></code>
+      </p></div>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>
+      </p>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Value Representation</th></tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.ValueDoc-class.html">ValueDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#pyval_repr">pyval_repr</a></code>,
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#summary_pyval_repr">summary_pyval_repr</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Class Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-ClassVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Value Representation</th></tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.ValueDoc-class.html">ValueDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#REPR_LINELEN">REPR_LINELEN</a></code>,
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#REPR_MAXLINES">REPR_MAXLINES</a></code>,
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#REPR_MIN_SCORE">REPR_MIN_SCORE</a></code>,
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#SUMMARY_REPR_LINELEN">SUMMARY_REPR_LINELEN</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== INSTANCE VARIABLES ==================== -->
+<a name="section-InstanceVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.RoutineDoc-class.html">RoutineDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.RoutineDoc-class.html#callgraph_uid">callgraph_uid</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.ValueDoc-class.html">ValueDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#canonical_name">canonical_name</a></code>,
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#toktree">toktree</a></code>
+      </p>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Signature</th></tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.RoutineDoc-class.html">RoutineDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.RoutineDoc-class.html#kwarg">kwarg</a></code>,
+      <code><a href="epydoc.apidoc.RoutineDoc-class.html#lineno">lineno</a></code>,
+      <code><a href="epydoc.apidoc.RoutineDoc-class.html#posarg_defaults">posarg_defaults</a></code>,
+      <code><a href="epydoc.apidoc.RoutineDoc-class.html#posargs">posargs</a></code>,
+      <code><a href="epydoc.apidoc.RoutineDoc-class.html#vararg">vararg</a></code>
+      </p>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Decorators</th></tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.RoutineDoc-class.html">RoutineDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.RoutineDoc-class.html#decorators">decorators</a></code>
+      </p>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Information Extracted from Docstrings</th></tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.RoutineDoc-class.html">RoutineDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.RoutineDoc-class.html#arg_descrs">arg_descrs</a></code>,
+      <code><a href="epydoc.apidoc.RoutineDoc-class.html#arg_types">arg_types</a></code>,
+      <code><a href="epydoc.apidoc.RoutineDoc-class.html#exception_descrs">exception_descrs</a></code>,
+      <code><a href="epydoc.apidoc.RoutineDoc-class.html#return_descr">return_descr</a></code>,
+      <code><a href="epydoc.apidoc.RoutineDoc-class.html#return_type">return_type</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.APIDoc-class.html">APIDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.APIDoc-class.html#descr">descr</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#extra_docstring_fields">extra_docstring_fields</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#metadata">metadata</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#other_docs">other_docs</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#summary">summary</a></code>
+      </p>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Value Representation</th></tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.ValueDoc-class.html">ValueDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#parse_repr">parse_repr</a></code>,
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#pyval">pyval</a></code>
+      </p>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Context</th></tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.ValueDoc-class.html">ValueDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#defining_module">defining_module</a></code>
+      </p>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Information about Imported Variables</th></tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.ValueDoc-class.html">ValueDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.ValueDoc-class.html#proxy_for">proxy_for</a></code>
+      </p>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Docstrings</th></tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.APIDoc-class.html">APIDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.APIDoc-class.html#docstring">docstring</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#docstring_lineno">docstring_lineno</a></code>
+      </p>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Source Information</th></tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.APIDoc-class.html">APIDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.APIDoc-class.html#docs_extracted_by">docs_extracted_by</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Properties</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Properties"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:07:29 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.apidoc.ValueDoc-class.html b/doc/api/epydoc.apidoc.ValueDoc-class.html
new file mode 100644
index 0000000..effbb8a
--- /dev/null
+++ b/doc/api/epydoc.apidoc.ValueDoc-class.html
@@ -0,0 +1,1112 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.apidoc.ValueDoc</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.apidoc-module.html">Module apidoc</a> ::
+        Class ValueDoc
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.apidoc.ValueDoc-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class ValueDoc</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.apidoc-pysrc.html#ValueDoc">source code</a></span></p>
+<center>
+<center>  <map id="uml_class_diagram_for_epydoc_a_11" name="uml_class_diagram_for_epydoc_a_11">
+<area shape="rect" href="epydoc.apidoc.RoutineDoc-class.html" title="API documentation information about a single routine." alt="" coords="272,648,379,685" />
+<area shape="rect" href="epydoc.apidoc.ClassMethodDoc-class.html" title="epydoc.apidoc.ClassMethodDoc" alt="" coords="89,709,228,747" />
+<area shape="rect" href="epydoc.apidoc.StaticMethodDoc-class.html" title="epydoc.apidoc.StaticMethodDoc" alt="" coords="257,709,396,747" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html" title="API documentation information about a singe Python namespace value." alt="" coords="408,648,539,685" />
+<area shape="rect" href="epydoc.apidoc.ClassDoc-class.html" title="API documentation information about a single class." alt="" coords="425,709,519,747" />
+<area shape="rect" href="epydoc.apidoc.ModuleDoc-class.html" title="API documentation information about a single module." alt="" coords="548,709,652,747" />
+<area shape="rect" href="epydoc.apidoc.VariableDoc-class.html" title="API documentation information about a single Python variable." alt="" coords="833,133,943,171" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html" title="A sequence of identifiers, separated by periods, used to name a Python variable, value, or argument." alt="" coords="568,648,680,685" />
+<area shape="rect" href="epydoc.apidoc.PropertyDoc-class.html" title="API documentation information about a single property." alt="" coords="709,648,819,685" />
+<area shape="rect" href="epydoc.apidoc.GenericValueDoc-class.html" title="API documentation about a 'generic' value, i.e., one that does not have its own docstring or any information other than its value and parse representation." alt="" coords="848,648,989,685" />
+<area shape="rect" href="epydoc.markup.ParsedDocstring-class.html" title="A standard intermediate representation for parsed docstrings that can be used to generate output." alt="" coords="5,455,189,492" />
+<area shape="rect" href="epydoc.docstringparser.DocstringField-class.html" title="A simple docstring field, which can be used to describe specific information about an object, such as its author or its version." alt="" coords="219,455,435,492" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#docstring" title="The documented item's docstring." alt="" coords="419,28,792,47" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#docstring_lineno" title="The line number on which the documented item's docstring begins." alt="" coords="419,47,792,65" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#other_docs" title="A flag indicating if the entire docstring body (except tags if any) is  entirely included in the summary." alt="" coords="419,65,792,84" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#metadata" title="Metadata about the documented item, extracted from fields in its docstring." alt="" coords="419,84,792,103" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#docs_extracted_by" title="Information about where the information contained by this APIDoc came from." alt="" coords="419,103,792,121" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__init__" title="Construct a new APIDoc object." alt="" coords="419,124,792,143" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__setattr__" title="Modify an APIDoc's attribute." alt="" coords="419,143,792,161" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#pp" title="Return a pretty-printed string representation for the information contained in this APIDoc." alt="" coords="419,161,792,180" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__str__" title="Return a pretty-printed string representation for the information contained in this APIDoc." alt="" coords="419,180,792,199" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#specialize_to" title="Change self's class to cls." alt="" coords="419,199,792,217" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__hash__" title="hash(x)" alt="" coords="419,217,792,236" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__cmp__" title="epydoc.apidoc.APIDoc.__cmp__" alt="" coords="419,236,792,255" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#is_detailed" title="Does this object deserve a box with extra details?" alt="" coords="419,255,792,273" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#merge_and_overwrite" title="Combine self and other into a merged object, such that any changes made to  one will affect the other." alt="" coords="419,273,792,292" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html" title="API documentation information for a single element of a Python program." alt="" coords="407,5,804,299" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#descr" title="epydoc.apidoc.APIDoc.descr" alt="" coords="133,310,166,325" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#descr" title="descr" alt="" coords="413,191,421,199" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#descr" title="descr" alt="" coords="92,456,100,464" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#summary" title="epydoc.apidoc.APIDoc.summary" alt="" coords="244,310,300,325" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#summary" title="summary" alt="" coords="413,212,421,220" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#summary" title="summary" alt="" coords="101,456,109,464" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#extra_docstring_fields" title="epydoc.apidoc.APIDoc.extra_docstring_fields" alt="" coords="468,310,599,325" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#extra_docstring_fields" title="extra_docstring_fields" alt="" coords="477,289,485,297" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#extra_docstring_fields" title="extra_docstring_fields" alt="" coords="335,456,343,464" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#pyval" title="A pointer to the actual Python object described by this ValueDoc." alt="" coords="476,359,735,377" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#parse_repr" title="A text representation of this value, extracted from parsing its source  code." alt="" coords="476,377,735,396" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#REPR_MAXLINES" title="The maximum number of lines of text that should be generated by  pyval_repr()." alt="" coords="476,396,735,415" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#REPR_LINELEN" title="The maximum number of characters for lines of text that should be generated by pyval_repr()." alt="" coords="476,415,735,433" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#SUMMARY_REPR_LINELEN" title="The maximum number of characters for the single-line text representation  generated by summary_pyval_repr()." alt="" coords="476,433,735,452" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#REPR_MIN_SCORE" title="The minimum score that a value representation based on pyval should have in order to be used instead of parse_repr as the canonical representation for  this ValueDoc's value." alt="" coords="476,452,735,471" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#toktree" title="This is currently used to extract values from __all__, etc, in the  docparser module; maybe I should specialize process_assignment and extract  it there?  Although, for __all__, it's not clear where I'd put the value,  since I just use it to set private/public/imported attribs on other vars  (that might not exist yet at the time.)" alt="" coords="476,471,735,489" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#__repr__" title="repr(x)" alt="" coords="476,492,735,511" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#__setstate__" title="epydoc.apidoc.ValueDoc.__setstate__" alt="" coords="476,511,735,529" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#__getstate__" title="State serializer for the pickle module." alt="" coords="476,529,735,548" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#pyval_repr" title="Return a formatted representation of the Python object described by this  ValueDoc." alt="" coords="476,548,735,567" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#summary_pyval_repr" title="Return a single-line formatted representation of the Python object  described by this ValueDoc." alt="" coords="476,567,735,585" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#apidoc_links" title="Return a list of all APIDocs that are directly linked from this APIDoc  (i.e., are contained or pointed to by one or more of this APIDoc's  attributes.)" alt="" coords="476,585,735,604" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html" title="API documentation information about a single Python value." alt="" coords="464,336,747,611" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#canonical_name" title="epydoc.apidoc.ValueDoc.canonical_name" alt="" coords="538,622,635,637" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#canonical_name" title="canonical_name" alt="" coords="524,601,532,609" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#canonical_name" title="canonical_name" alt="" coords="575,652,583,660" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#proxy_for" title="epydoc.apidoc.ValueDoc.proxy_for" alt="" coords="637,622,693,637" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#proxy_for" title="proxy_for" alt="" coords="631,601,639,609" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#proxy_for" title="proxy_for" alt="" coords="628,649,636,657" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#defining_module" title="epydoc.apidoc.ValueDoc.defining_module" alt="" coords="1021,659,1120,674" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#defining_module" title="defining_module" alt="" coords="732,491,740,499" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#defining_module" title="defining_module" alt="" coords="637,723,645,731" />
+</map>
+  <img src="uml_class_diagram_for_epydoc_a_11.gif" alt='' usemap="#uml_class_diagram_for_epydoc_a_11" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<p>API documentation information about a single Python value.</p>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.apidoc.ValueDoc-class.html#__repr__" class="summary-sig-name">__repr__</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      repr(x)</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.apidoc-pysrc.html#ValueDoc.__repr__">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for___repr___3-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for___repr___3-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for___repr___3" name="call_graph_for___repr___3">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__str__" title="DottedName.__str__()" alt="" coords="159,6,348,38" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#__repr__" title="__repr__()" alt="" coords="7,6,108,38" />
+</map>
+  <img src="call_graph_for___repr___3.gif" alt='' usemap="#call_graph_for___repr___3" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__setstate__"></a><span class="summary-sig-name">__setstate__</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">state</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.apidoc-pysrc.html#ValueDoc.__setstate__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.apidoc.ValueDoc-class.html#__getstate__" class="summary-sig-name">__getstate__</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      State serializer for the pickle module.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.apidoc-pysrc.html#ValueDoc.__getstate__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.apidoc.ValueDoc-class.html#apidoc_links" class="summary-sig-name">apidoc_links</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">**filters</span>)</span><br />
+      Return a list of all <code>APIDoc</code>s that are directly linked 
+      from this <code>APIDoc</code> (i.e., are contained or pointed to by 
+      one or more of this <code>APIDoc</code>'s attributes.)</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.apidoc-pysrc.html#ValueDoc.apidoc_links">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_apidoc_links_6-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_apidoc_links_6-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_apidoc_links_6" name="call_graph_for_apidoc_links_6">
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#apidoc_links" title="apidoc_links()" alt="" coords="359,34,487,66" />
+<area shape="rect" href="epydoc.apidoc-module.html#reachable_valdocs" title="reachable_valdocs()" alt="" coords="71,6,244,38" />
+<area shape="rect" href="epydoc.docbuilder-module.html#assign_canonical_names" title="docbuilder.assign_canonical_names()" alt="" coords="7,62,308,94" />
+</map>
+  <img src="call_graph_for_apidoc_links_6.gif" alt='' usemap="#call_graph_for_apidoc_links_6" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.APIDoc-class.html">APIDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.APIDoc-class.html#__cmp__">__cmp__</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#__hash__">__hash__</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#__init__">__init__</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#__setattr__">__setattr__</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#__str__">__str__</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#is_detailed">is_detailed</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#merge_and_overwrite">merge_and_overwrite</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#pp">pp</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#specialize_to">specialize_to</a></code>
+      </p>
+    <div class="private">    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.APIDoc-class.html">APIDoc</a></code></b> (private):
+      <code><a href="epydoc.apidoc.APIDoc-class.html#_debug_setattr" onclick="show_private();">_debug_setattr</a></code>
+      </p></div>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>
+      </p>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Value Representation</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><a href="epydoc.markup.pyval_repr.ColorizedPyvalRepr-class.html" 
+      class="link">ColorizedPyvalRepr</a></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.apidoc.ValueDoc-class.html#pyval_repr" class="summary-sig-name">pyval_repr</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Return a formatted representation of the Python object described by 
+      this <code>ValueDoc</code>.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.apidoc-pysrc.html#ValueDoc.pyval_repr">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_pyval_repr-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_pyval_repr-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_pyval_repr" name="call_graph_for_pyval_repr">
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#pyval_repr" title="pyval_repr()" alt="" coords="428,34,543,66" />
+<area shape="rect" href="epydoc.markup.pyval_repr-module.html#colorize_pyval" title="markup.pyval_repr.colorize_pyval()" alt="" coords="592,34,883,66" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#pprint_value" title="docwriter.html.HTMLWriter.pprint_value()" alt="" coords="17,6,367,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#variable_tooltip" title="docwriter.html.HTMLWriter.variable_tooltip()" alt="" coords="7,62,377,94" />
+</map>
+  <img src="call_graph_for_pyval_repr.gif" alt='' usemap="#call_graph_for_pyval_repr" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><a href="epydoc.markup.pyval_repr.ColorizedPyvalRepr-class.html" 
+      class="link">ColorizedPyvalRepr</a></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.apidoc.ValueDoc-class.html#summary_pyval_repr" class="summary-sig-name">summary_pyval_repr</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">max_len</span>=<span class="summary-sig-default">None</span>)</span><br />
+      Return a single-line formatted representation of the Python object 
+      described by this <code>ValueDoc</code>.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.apidoc-pysrc.html#ValueDoc.summary_pyval_repr">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_summary_pyval_r-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_summary_pyval_r-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_summary_pyval_r" name="call_graph_for_summary_pyval_r">
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#summary_pyval_repr" title="summary_pyval_repr()" alt="" coords="543,90,735,122" />
+<area shape="rect" href="epydoc.markup.pyval_repr-module.html#colorize_pyval" title="markup.pyval_repr.colorize_pyval()" alt="" coords="784,90,1075,122" />
+<area shape="rect" href="epydoc.apidoc.VariableDoc-class.html#is_detailed" title="VariableDoc.is_detailed()" alt="" coords="141,6,357,38" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_operation_arg" title="docwriter.dotgraph.DotGraphUmlClassNode._operation_arg()" alt="" coords="7,62,492,94" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#func_arg" title="docwriter.html.HTMLWriter.func_arg()" alt="" coords="89,118,409,150" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_summary_line" title="docwriter.html.HTMLWriter.write_summary_line()" alt="" coords="45,174,453,206" />
+</map>
+  <img src="call_graph_for_summary_pyval_r.gif" alt='' usemap="#call_graph_for_summary_pyval_r" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Class Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-ClassVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Value Representation</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.apidoc.ValueDoc-class.html#REPR_MAXLINES" class="summary-name">REPR_MAXLINES</a> = <code title="5">5</code><br />
+      The maximum number of lines of text that should be generated by <a 
+      href="epydoc.apidoc.ValueDoc-class.html#pyval_repr" 
+      class="link">pyval_repr()</a>.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.apidoc.ValueDoc-class.html#REPR_LINELEN" class="summary-name">REPR_LINELEN</a> = <code title="75">75</code><br />
+      The maximum number of characters for lines of text that should be 
+      generated by <a href="epydoc.apidoc.ValueDoc-class.html#pyval_repr" 
+      class="link">pyval_repr()</a>.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.apidoc.ValueDoc-class.html#SUMMARY_REPR_LINELEN" class="summary-name">SUMMARY_REPR_LINELEN</a> = <code title="75">75</code><br />
+      The maximum number of characters for the single-line text 
+      representation generated by <a 
+      href="epydoc.apidoc.ValueDoc-class.html#summary_pyval_repr" 
+      class="link">summary_pyval_repr()</a>.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.apidoc.ValueDoc-class.html#REPR_MIN_SCORE" class="summary-name">REPR_MIN_SCORE</a> = <code title="0">0</code><br />
+      The minimum score that a value representation based on <a 
+      href="epydoc.apidoc.ValueDoc-class.html#pyval" class="link">pyval</a>
+      should have in order to be used instead of <a 
+      href="epydoc.apidoc.ValueDoc-class.html#parse_repr" 
+      class="link">parse_repr</a> as the canonical representation for this 
+      <code>ValueDoc</code>'s value.
+    </td>
+  </tr>
+</table>
+<!-- ==================== INSTANCE VARIABLES ==================== -->
+<a name="section-InstanceVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><a href="epydoc.apidoc.DottedName-class.html" 
+      class="link">DottedName</a></span>
+    </td><td class="summary">
+        <a href="epydoc.apidoc.ValueDoc-class.html#canonical_name" class="summary-name">canonical_name</a> = <code title="_Sentinel('UNKNOWN')">_Sentinel('UNKNOWN')</code><br />
+      A dotted name that serves as a unique identifier for this 
+      <code>ValueDoc</code>'s value.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="toktree"></a><span class="summary-name">toktree</span> = <code title="_Sentinel('UNKNOWN')">_Sentinel('UNKNOWN')</code><br />
+      This is currently used to extract values from __all__, etc, in the 
+      docparser module; maybe I should specialize process_assignment and 
+      extract it there?  Although, for __all__, it's not clear where I'd 
+      put the value, since I just use it to set private/public/imported 
+      attribs on other vars (that might not exist yet at the time.)
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Value Representation</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">Python object</span>
+    </td><td class="summary">
+        <a href="epydoc.apidoc.ValueDoc-class.html#pyval" class="summary-name">pyval</a> = <code title="_Sentinel('UNKNOWN')">_Sentinel('UNKNOWN')</code><br />
+      A pointer to the actual Python object described by this 
+      <code>ValueDoc</code>.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>unicode</code></span>
+    </td><td class="summary">
+        <a href="epydoc.apidoc.ValueDoc-class.html#parse_repr" class="summary-name">parse_repr</a> = <code title="_Sentinel('UNKNOWN')">_Sentinel('UNKNOWN')</code><br />
+      A text representation of this value, extracted from parsing its 
+      source code.
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Context</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><a href="epydoc.apidoc.ModuleDoc-class.html" 
+      class="link">ModuleDoc</a></span>
+    </td><td class="summary">
+        <a href="epydoc.apidoc.ValueDoc-class.html#defining_module" class="summary-name">defining_module</a> = <code title="_Sentinel('UNKNOWN')">_Sentinel('UNKNOWN')</code><br />
+      The documentation for the module that defines this value.
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Information about Imported Variables</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><a href="epydoc.apidoc.DottedName-class.html" 
+      class="link">DottedName</a></span>
+    </td><td class="summary">
+        <a href="epydoc.apidoc.ValueDoc-class.html#proxy_for" class="summary-name">proxy_for</a> = <code title="None">None</code><br />
+      If <code>proxy_for</code> is not None, then this value was imported 
+      from another file.
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Docstrings</th></tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.APIDoc-class.html">APIDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.APIDoc-class.html#docstring">docstring</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#docstring_lineno">docstring_lineno</a></code>
+      </p>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Information Extracted from Docstrings</th></tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.APIDoc-class.html">APIDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.APIDoc-class.html#descr">descr</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#extra_docstring_fields">extra_docstring_fields</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#metadata">metadata</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#other_docs">other_docs</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#summary">summary</a></code>
+      </p>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Source Information</th></tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.APIDoc-class.html">APIDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.APIDoc-class.html#docs_extracted_by">docs_extracted_by</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Properties</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Properties"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Method Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-MethodDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="__repr__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__repr__</span>(<span class="sig-arg">self</span>)</span>
+    <br /><em class="fname">(Representation operator)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.apidoc-pysrc.html#ValueDoc.__repr__">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for___repr___3-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for___repr___3-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for___repr___3" name="call_graph_for___repr___3">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__str__" title="DottedName.__str__()" alt="" coords="159,6,348,38" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#__repr__" title="__repr__()" alt="" coords="7,6,108,38" />
+</map>
+  <img src="call_graph_for___repr___3.gif" alt='' usemap="#call_graph_for___repr___3" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <pre class="literalblock">
+repr(x)
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+        object.__repr__
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="__getstate__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__getstate__</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.apidoc-pysrc.html#ValueDoc.__getstate__">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>State serializer for the pickle module.  This is necessary because 
+  sometimes the <code>pyval</code> attribute contains an un-pickleable 
+  value.</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="pyval_repr"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">pyval_repr</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.apidoc-pysrc.html#ValueDoc.pyval_repr">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_pyval_repr-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_pyval_repr-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_pyval_repr" name="call_graph_for_pyval_repr">
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#pyval_repr" title="pyval_repr()" alt="" coords="428,34,543,66" />
+<area shape="rect" href="epydoc.markup.pyval_repr-module.html#colorize_pyval" title="markup.pyval_repr.colorize_pyval()" alt="" coords="592,34,883,66" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#pprint_value" title="docwriter.html.HTMLWriter.pprint_value()" alt="" coords="17,6,367,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#variable_tooltip" title="docwriter.html.HTMLWriter.variable_tooltip()" alt="" coords="7,62,377,94" />
+</map>
+  <img src="call_graph_for_pyval_repr.gif" alt='' usemap="#call_graph_for_pyval_repr" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Return a formatted representation of the Python object described by 
+  this <code>ValueDoc</code>.  This representation may include data from 
+  introspection or parsing, and is authorative as 'the best way to 
+  represent a Python value.'  Any lines that go beyond <a 
+  href="epydoc.apidoc.ValueDoc-class.html#REPR_LINELEN" 
+  class="link">REPR_LINELEN</a> characters will be wrapped; and if the 
+  representation as a whole takes more than <a 
+  href="epydoc.apidoc.ValueDoc-class.html#REPR_MAXLINES" 
+  class="link">REPR_MAXLINES</a> lines, then it will be truncated (with an 
+  ellipsis marker). This function will never return <a 
+  href="epydoc.apidoc-module.html#UNKNOWN" class="link">UNKNOWN</a> or 
+  <code>None</code>.</p>
+  <dl class="fields">
+    <dt>Returns: <a href="epydoc.markup.pyval_repr.ColorizedPyvalRepr-class.html" 
+      class="link">ColorizedPyvalRepr</a></dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="summary_pyval_repr"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">summary_pyval_repr</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">max_len</span>=<span class="sig-default">None</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.apidoc-pysrc.html#ValueDoc.summary_pyval_repr">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_summary_pyval_r-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_summary_pyval_r-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_summary_pyval_r" name="call_graph_for_summary_pyval_r">
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#summary_pyval_repr" title="summary_pyval_repr()" alt="" coords="543,90,735,122" />
+<area shape="rect" href="epydoc.markup.pyval_repr-module.html#colorize_pyval" title="markup.pyval_repr.colorize_pyval()" alt="" coords="784,90,1075,122" />
+<area shape="rect" href="epydoc.apidoc.VariableDoc-class.html#is_detailed" title="VariableDoc.is_detailed()" alt="" coords="141,6,357,38" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_operation_arg" title="docwriter.dotgraph.DotGraphUmlClassNode._operation_arg()" alt="" coords="7,62,492,94" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#func_arg" title="docwriter.html.HTMLWriter.func_arg()" alt="" coords="89,118,409,150" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_summary_line" title="docwriter.html.HTMLWriter.write_summary_line()" alt="" coords="45,174,453,206" />
+</map>
+  <img src="call_graph_for_summary_pyval_r.gif" alt='' usemap="#call_graph_for_summary_pyval_r" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Return a single-line formatted representation of the Python object 
+  described by this <code>ValueDoc</code>.  This representation may include
+  data from introspection or parsing, and is authorative as 'the best way 
+  to summarize a Python value.'  If the representation takes more then <a 
+  href="epydoc.apidoc.ValueDoc-class.html#SUMMARY_REPR_LINELEN" 
+  class="link">SUMMARY_REPR_LINELEN</a> characters, then it will be 
+  truncated (with an ellipsis marker).  This function will never return <a 
+  href="epydoc.apidoc-module.html#UNKNOWN" class="link">UNKNOWN</a> or 
+  <code>None</code>.</p>
+  <dl class="fields">
+    <dt>Returns: <a href="epydoc.markup.pyval_repr.ColorizedPyvalRepr-class.html" 
+      class="link">ColorizedPyvalRepr</a></dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="apidoc_links"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">apidoc_links</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">**filters</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.apidoc-pysrc.html#ValueDoc.apidoc_links">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_apidoc_links_6-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_apidoc_links_6-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_apidoc_links_6" name="call_graph_for_apidoc_links_6">
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#apidoc_links" title="apidoc_links()" alt="" coords="359,34,487,66" />
+<area shape="rect" href="epydoc.apidoc-module.html#reachable_valdocs" title="reachable_valdocs()" alt="" coords="71,6,244,38" />
+<area shape="rect" href="epydoc.docbuilder-module.html#assign_canonical_names" title="docbuilder.assign_canonical_names()" alt="" coords="7,62,308,94" />
+</map>
+  <img src="call_graph_for_apidoc_links_6.gif" alt='' usemap="#call_graph_for_apidoc_links_6" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Return a list of all <code>APIDoc</code>s that are directly linked 
+  from this <code>APIDoc</code> (i.e., are contained or pointed to by one 
+  or more of this <code>APIDoc</code>'s attributes.)</p>
+  <p>Keyword argument <code>filters</code> can be used to selectively 
+  exclude certain categories of attribute value.  For example, using 
+  <code>includes=False</code> will exclude variables that were imported 
+  from other modules; and <code>subclasses=False</code> will exclude 
+  subclasses.  The filter categories currently supported by epydoc are:</p>
+  <ul>
+    <li>
+      <code>imports</code>: Imported variables.
+    </li>
+    <li>
+      <code>packages</code>: Containing packages for modules.
+    </li>
+    <li>
+      <code>submodules</code>: Contained submodules for packages.
+    </li>
+    <li>
+      <code>bases</code>: Bases for classes.
+    </li>
+    <li>
+      <code>subclasses</code>: Subclasses for classes.
+    </li>
+    <li>
+      <code>variables</code>: All variables.
+    </li>
+    <li>
+      <code>private</code>: Private variables.
+    </li>
+    <li>
+      <code>overrides</code>: Points from class variables to the variables 
+      they override.  This filter is False by default.
+    </li>
+  </ul>
+  <dl class="fields">
+    <dt>Overrides:
+        <a href="epydoc.apidoc.APIDoc-class.html#apidoc_links">APIDoc.apidoc_links</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== CLASS VARIABLE DETAILS ==================== -->
+<a name="section-ClassVariableDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Class Variable Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-ClassVariableDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="REPR_MAXLINES"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">REPR_MAXLINES</h3>
+  The maximum number of lines of text that should be generated by <a 
+  href="epydoc.apidoc.ValueDoc-class.html#pyval_repr" 
+  class="link">pyval_repr()</a>.  If the string representation does not fit
+  in this number of lines, an ellpsis marker (...) will be placed at the 
+  end of the formatted representation.
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+5
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="REPR_LINELEN"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">REPR_LINELEN</h3>
+  The maximum number of characters for lines of text that should be 
+  generated by <a href="epydoc.apidoc.ValueDoc-class.html#pyval_repr" 
+  class="link">pyval_repr()</a>.  Any lines that exceed this number of 
+  characters will be line-wrappped; The <span 
+  class="variable-linewrap"><img src="crarr.png" alt="\" /></span> symbol 
+  will be used to indicate that the line was wrapped.
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+75
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="SUMMARY_REPR_LINELEN"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">SUMMARY_REPR_LINELEN</h3>
+  The maximum number of characters for the single-line text representation 
+  generated by <a 
+  href="epydoc.apidoc.ValueDoc-class.html#summary_pyval_repr" 
+  class="link">summary_pyval_repr()</a>.  If the value's representation 
+  does not fit in this number of characters, an ellipsis marker (...) will 
+  be placed at the end of the formatted representation.
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+75
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="REPR_MIN_SCORE"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">REPR_MIN_SCORE</h3>
+  The minimum score that a value representation based on <a 
+  href="epydoc.apidoc.ValueDoc-class.html#pyval" class="link">pyval</a> 
+  should have in order to be used instead of <a 
+  href="epydoc.apidoc.ValueDoc-class.html#parse_repr" 
+  class="link">parse_repr</a> as the canonical representation for this 
+  <code>ValueDoc</code>'s value.
+  <dl class="fields">
+  </dl>
+<div class="fields">      <p><strong>See Also:</strong>
+        <a href="epydoc.markup.pyval_repr-module.html" 
+        class="link">epydoc.markup.pyval_repr</a>
+      </p>
+</div>  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+0
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== INSTANCE VARIABLE DETAILS ==================== -->
+<a name="section-InstanceVariableDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Variable Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceVariableDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="canonical_name"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">canonical_name</h3>
+  A dotted name that serves as a unique identifier for this 
+  <code>ValueDoc</code>'s value.  If the value can be reached using a 
+  single sequence of identifiers (given the appropriate imports), then that
+  sequence of identifiers is used as its canonical name. If the value can 
+  be reached by multiple sequences of identifiers (i.e., if it has multiple
+  aliases), then one of those sequences of identifiers is used.  If the 
+  value cannot be reached by any sequence of identifiers (e.g., if it was 
+  used as a base class but then its variable was deleted), then its 
+  canonical name will start with <code>'??'</code>.  If necessary, a dash 
+  followed by a number will be appended to the end of a non-reachable 
+  identifier to make its canonical name unique.
+  <p>When possible, canonical names are chosen when new 
+  <code>ValueDoc</code>s are created.  However, this is sometimes not 
+  possible.  If a canonical name can not be chosen when the 
+  <code>ValueDoc</code> is created, then one will be assigned by <a 
+  href="epydoc.docbuilder-module.html#assign_canonical_names" 
+  class="link">assign_canonical_names()</a>.</p>
+  <dl class="fields">
+    <dt>Type:</dt>
+      <dd><a href="epydoc.apidoc.DottedName-class.html" 
+      class="link">DottedName</a></dd>
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+_Sentinel('UNKNOWN')
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="pyval"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">pyval</h3>
+  A pointer to the actual Python object described by this 
+  <code>ValueDoc</code>.  This is used to display the value (e.g., when 
+  describing a variable.)  Use <a 
+  href="epydoc.apidoc.ValueDoc-class.html#pyval_repr" 
+  class="link">pyval_repr()</a> to generate a plaintext string 
+  representation of this value.
+  <dl class="fields">
+    <dt>Type:</dt>
+      <dd>Python object</dd>
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+_Sentinel('UNKNOWN')
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="parse_repr"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">parse_repr</h3>
+  A text representation of this value, extracted from parsing its source 
+  code.  This representation may not accurately reflect the actual value 
+  (e.g., if the value was modified after the initial assignment).
+  <dl class="fields">
+    <dt>Type:</dt>
+      <dd><code>unicode</code></dd>
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+_Sentinel('UNKNOWN')
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="defining_module"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">defining_module</h3>
+  The documentation for the module that defines this value.  This is used, 
+  e.g., to lookup the appropriate markup language for docstrings.  For a 
+  <code>ModuleDoc</code>, <code>defining_module</code> should be 
+  <code>self</code>.
+  <dl class="fields">
+    <dt>Type:</dt>
+      <dd><a href="epydoc.apidoc.ModuleDoc-class.html" 
+      class="link">ModuleDoc</a></dd>
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+_Sentinel('UNKNOWN')
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="proxy_for"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">proxy_for</h3>
+  If <code>proxy_for</code> is not None, then this value was imported from 
+  another file.  <code>proxy_for</code> is the dotted name of the variable 
+  that this value was imported from.  If that variable is documented, then 
+  its <code>value</code> may contain more complete API documentation about 
+  this value.  The <code>proxy_for</code> attribute is used by the source 
+  code parser to link imported values to their source values (in 
+  particular, for base classes).  When possible, these proxy 
+  <code>ValueDoc</code>s are replaced by the imported value's 
+  <code>ValueDoc</code> by <a 
+  href="epydoc.docbuilder-module.html#link_imports" 
+  class="link">link_imports()</a>.
+  <dl class="fields">
+    <dt>Type:</dt>
+      <dd><a href="epydoc.apidoc.DottedName-class.html" 
+      class="link">DottedName</a></dd>
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+None
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:07:32 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.apidoc.VariableDoc-class.html b/doc/api/epydoc.apidoc.VariableDoc-class.html
new file mode 100644
index 0000000..2954207
--- /dev/null
+++ b/doc/api/epydoc.apidoc.VariableDoc-class.html
@@ -0,0 +1,934 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.apidoc.VariableDoc</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.apidoc-module.html">Module apidoc</a> ::
+        Class VariableDoc
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.apidoc.VariableDoc-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class VariableDoc</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.apidoc-pysrc.html#VariableDoc">source code</a></span></p>
+<center>
+<center>  <map id="uml_class_diagram_for_epydoc_a_12" name="uml_class_diagram_for_epydoc_a_12">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#docstring" title="The documented item's docstring." alt="" coords="363,28,736,47" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#docstring_lineno" title="The line number on which the documented item's docstring begins." alt="" coords="363,47,736,65" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#other_docs" title="A flag indicating if the entire docstring body (except tags if any) is  entirely included in the summary." alt="" coords="363,65,736,84" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#metadata" title="Metadata about the documented item, extracted from fields in its docstring." alt="" coords="363,84,736,103" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#docs_extracted_by" title="Information about where the information contained by this APIDoc came from." alt="" coords="363,103,736,121" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__setattr__" title="Modify an APIDoc's attribute." alt="" coords="363,124,736,143" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#pp" title="Return a pretty-printed string representation for the information contained in this APIDoc." alt="" coords="363,143,736,161" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__str__" title="Return a pretty-printed string representation for the information contained in this APIDoc." alt="" coords="363,161,736,180" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#specialize_to" title="Change self's class to cls." alt="" coords="363,180,736,199" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__hash__" title="hash(x)" alt="" coords="363,199,736,217" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__cmp__" title="epydoc.apidoc.APIDoc.__cmp__" alt="" coords="363,217,736,236" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#merge_and_overwrite" title="Combine self and other into a merged object, such that any changes made to  one will affect the other." alt="" coords="363,236,736,255" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html" title="API documentation information for a single element of a Python program." alt="" coords="351,5,748,261" />
+<area shape="rect" href="epydoc.markup.ParsedDocstring-class.html" title="A standard intermediate representation for parsed docstrings that can be used to generate output." alt="" coords="35,555,219,592" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#descr" title="epydoc.apidoc.APIDoc.descr" alt="" coords="62,401,95,415" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#descr" title="descr" alt="" coords="357,167,365,175" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#descr" title="descr" alt="" coords="96,556,104,564" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#summary" title="epydoc.apidoc.APIDoc.summary" alt="" coords="145,401,201,415" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#summary" title="summary" alt="" coords="357,160,365,168" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#summary" title="summary" alt="" coords="119,556,127,564" />
+<area shape="rect" href="epydoc.docstringparser.DocstringField-class.html" title="A simple docstring field, which can be used to describe specific information about an object, such as its author or its version." alt="" coords="212,389,428,427" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#extra_docstring_fields" title="epydoc.apidoc.APIDoc.extra_docstring_fields" alt="" coords="412,273,543,287" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#extra_docstring_fields" title="extra_docstring_fields" alt="" coords="421,252,429,260" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#extra_docstring_fields" title="extra_docstring_fields" alt="" coords="324,391,332,399" />
+<area shape="rect" href="epydoc.apidoc.VariableDoc-class.html#name" title="The name of this variable in its containing namespace." alt="" coords="469,321,629,340" />
+<area shape="rect" href="epydoc.apidoc.VariableDoc-class.html#is_imported" title="Was this variable's value imported from another module? (Exception:  variables that are explicitly included in __all__ have is_imported set to  False, even if they are in fact imported.)" alt="" coords="469,340,629,359" />
+<area shape="rect" href="epydoc.apidoc.VariableDoc-class.html#is_instvar" title="If true, then this variable is an instance variable; if false, then this  variable is a class variable." alt="" coords="469,359,629,377" />
+<area shape="rect" href="epydoc.apidoc.VariableDoc-class.html#is_alias" title="Is this variable an alias for another variable with the same value?  If so, then this variable will be dispreferred when assigning canonical names." alt="" coords="469,377,629,396" />
+<area shape="rect" href="epydoc.apidoc.VariableDoc-class.html#is_public" title="Is this variable part of its container's public API?" alt="" coords="469,396,629,415" />
+<area shape="rect" href="epydoc.apidoc.VariableDoc-class.html#defining_module" title="A read-only property that can be used to get the variable's defining  module." alt="" coords="469,415,629,433" />
+<area shape="rect" href="epydoc.apidoc.VariableDoc-class.html#__init__" title="Construct a new APIDoc object." alt="" coords="469,436,629,455" />
+<area shape="rect" href="epydoc.apidoc.VariableDoc-class.html#__repr__" title="repr(x)" alt="" coords="469,455,629,473" />
+<area shape="rect" href="epydoc.apidoc.VariableDoc-class.html#apidoc_links" title="Return a list of all APIDocs that are directly linked from this APIDoc  (i.e., are contained or pointed to by one or more of this APIDoc's  attributes.)" alt="" coords="469,473,629,492" />
+<area shape="rect" href="epydoc.apidoc.VariableDoc-class.html#is_detailed" title="Does this object deserve a box with extra details?" alt="" coords="469,492,629,511" />
+<area shape="rect" href="epydoc.apidoc.VariableDoc-class.html" title="API documentation information about a single Python variable." alt="" coords="457,299,641,517" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html" title="A sequence of identifiers, separated by periods, used to name a Python variable, value, or argument." alt="" coords="396,555,508,592" />
+<area shape="rect" href="epydoc.apidoc.VariableDoc-class.html#type_descr" title="epydoc.apidoc.VariableDoc.type_descr" alt="" coords="388,529,455,543" />
+<area shape="rect" href="epydoc.apidoc.VariableDoc-class.html#type_descr" title="type_descr" alt="" coords="464,499,472,507" />
+<area shape="rect" href="epydoc.apidoc.VariableDoc-class.html#type_descr" title="type_descr" alt="" coords="159,556,167,564" />
+<area shape="rect" href="epydoc.apidoc.VariableDoc-class.html#canonical_name" title="epydoc.apidoc.VariableDoc.canonical_name" alt="" coords="355,529,453,543" />
+<area shape="rect" href="epydoc.apidoc.VariableDoc-class.html#canonical_name" title="canonical_name" alt="" coords="464,497,472,505" />
+<area shape="rect" href="epydoc.apidoc.VariableDoc-class.html#canonical_name" title="canonical_name" alt="" coords="403,564,411,572" />
+<area shape="rect" href="epydoc.apidoc.VariableDoc-class.html#imported_from" title="epydoc.apidoc.VariableDoc.imported_from" alt="" coords="475,529,562,543" />
+<area shape="rect" href="epydoc.apidoc.VariableDoc-class.html#imported_from" title="imported_from" alt="" coords="484,508,492,516" />
+<area shape="rect" href="epydoc.apidoc.VariableDoc-class.html#imported_from" title="imported_from" alt="" coords="456,556,464,564" />
+<area shape="rect" href="epydoc.apidoc.VariableDoc-class.html#overrides" title="epydoc.apidoc.VariableDoc.overrides" alt="" coords="671,401,727,415" />
+<area shape="rect" href="epydoc.apidoc.VariableDoc-class.html#overrides" title="overrides" alt="" coords="627,356,635,364" />
+<area shape="rect" href="epydoc.apidoc.VariableDoc-class.html#overrides" title="overrides" alt="" coords="627,452,635,460" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html" title="API documentation information about a single Python value." alt="" coords="599,555,692,592" />
+<area shape="rect" href="epydoc.apidoc.VariableDoc-class.html#container" title="epydoc.apidoc.VariableDoc.container" alt="" coords="611,529,667,543" />
+<area shape="rect" href="epydoc.apidoc.VariableDoc-class.html#container" title="container" alt="" coords="587,508,595,516" />
+<area shape="rect" href="epydoc.apidoc.VariableDoc-class.html#container" title="container" alt="" coords="621,556,629,564" />
+<area shape="rect" href="epydoc.apidoc.VariableDoc-class.html#value" title="epydoc.apidoc.VariableDoc.value" alt="" coords="667,529,701,543" />
+<area shape="rect" href="epydoc.apidoc.VariableDoc-class.html#value" title="value" alt="" coords="627,469,635,477" />
+<area shape="rect" href="epydoc.apidoc.VariableDoc-class.html#value" title="value" alt="" coords="655,556,663,564" />
+</map>
+  <img src="uml_class_diagram_for_epydoc_a_12.gif" alt='' usemap="#uml_class_diagram_for_epydoc_a_12" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<p>API documentation information about a single Python variable.</p>
+
+<hr />
+<div class="fields">      <p><strong>Note:</strong>
+        The only time a <code>VariableDoc</code> will have its own 
+        docstring is if that variable was created using an assignment 
+        statement, and that assignment statement had a docstring-comment or
+        was followed by a pseudo-docstring.
+      </p>
+</div><!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.apidoc.VariableDoc-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">**kwargs</span>)</span><br />
+      Construct a new <code>APIDoc</code> object.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.apidoc-pysrc.html#VariableDoc.__init__">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for___init___5-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for___init___5-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for___init___5" name="call_graph_for___init___5">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__init__" title="APIDoc.__init__()" alt="" coords="493,202,656,234" />
+<area shape="rect" href="epydoc.apidoc.VariableDoc-class.html#__init__" title="__init__()" alt="" coords="348,202,444,234" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#introspect_class" title="docintrospecter.introspect_class()" alt="" coords="16,6,288,38" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#introspect_module" title="docintrospecter.introspect_module()" alt="" coords="7,62,297,94" />
+<area shape="rect" href="epydoc.docparser-module.html#_add_import_var" title="docparser._add_import_var()" alt="" coords="33,118,271,150" />
+<area shape="rect" href="epydoc.docparser-module.html#find_base" title="docparser.find_base()" alt="" coords="60,174,244,206" />
+<area shape="rect" href="epydoc.docparser-module.html#process_assignment" title="docparser.process_assignment()" alt="" coords="23,230,281,262" />
+<area shape="rect" href="epydoc.docparser-module.html#process_classdef" title="docparser.process_classdef()" alt="" coords="33,286,271,318" />
+<area shape="rect" href="epydoc.docparser-module.html#process_funcdef" title="docparser.process_funcdef()" alt="" coords="36,342,268,374" />
+<area shape="rect" href="epydoc.docstringparser-module.html#set_var_descr" title="docstringparser.set_var_descr()" alt="" coords="24,398,280,430" />
+</map>
+  <img src="call_graph_for___init___5.gif" alt='' usemap="#call_graph_for___init___5" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.apidoc.VariableDoc-class.html#__repr__" class="summary-sig-name">__repr__</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      repr(x)</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.apidoc-pysrc.html#VariableDoc.__repr__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_get_defining_module"></a><span class="summary-sig-name">_get_defining_module</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.apidoc-pysrc.html#VariableDoc._get_defining_module">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__get_defining_m-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__get_defining_m-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__get_defining_m" name="call_graph_for__get_defining_m">
+<area shape="rect" href="epydoc.apidoc.VariableDoc-class.html#_get_defining_module" title="_get_defining_module()" alt="" coords="316,6,519,38" />
+<area shape="rect" href="epydoc.docstringparser-module.html#get_docformat" title="docstringparser.get_docformat()" alt="" coords="5,6,267,38" />
+</map>
+  <img src="call_graph_for__get_defining_m.gif" alt='' usemap="#call_graph_for__get_defining_m" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.apidoc.VariableDoc-class.html#apidoc_links" class="summary-sig-name">apidoc_links</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">**filters</span>)</span><br />
+      Return a list of all <code>APIDoc</code>s that are directly linked 
+      from this <code>APIDoc</code> (i.e., are contained or pointed to by 
+      one or more of this <code>APIDoc</code>'s attributes.)</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.apidoc-pysrc.html#VariableDoc.apidoc_links">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_apidoc_links_7-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_apidoc_links_7-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_apidoc_links_7" name="call_graph_for_apidoc_links_7">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__cmp__" title="APIDoc.__cmp__()" alt="" coords="405,6,576,38" />
+<area shape="rect" href="epydoc.apidoc.VariableDoc-class.html#apidoc_links" title="apidoc_links()" alt="" coords="228,6,356,38" />
+<area shape="rect" href="epydoc.apidoc-module.html#reachable_valdocs" title="reachable_valdocs()" alt="" coords="5,6,179,38" />
+</map>
+  <img src="call_graph_for_apidoc_links_7.gif" alt='' usemap="#call_graph_for_apidoc_links_7" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>bool</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.apidoc.VariableDoc-class.html#is_detailed" class="summary-sig-name">is_detailed</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Does this object deserve a box with extra details?</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.apidoc-pysrc.html#VariableDoc.is_detailed">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_is_detailed_6-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_is_detailed_6-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_is_detailed_6" name="call_graph_for_is_detailed_6">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__cmp__" title="APIDoc.__cmp__()" alt="" coords="681,6,852,38" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#is_detailed" title="APIDoc.is_detailed()" alt="" coords="676,62,857,94" />
+<area shape="rect" href="epydoc.apidoc.ClassDoc-class.html#select_variables" title="ClassDoc.select_variables()" alt="" coords="96,90,325,122" />
+<area shape="rect" href="epydoc.apidoc.VariableDoc-class.html#is_detailed" title="is_detailed()" alt="" coords="465,146,580,178" />
+<area shape="rect" href="epydoc.apidoc.ModuleDoc-class.html#select_variables" title="ModuleDoc.select_variables()" alt="" coords="87,146,335,178" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#is_detailed" title="NamespaceDoc.is_detailed()" alt="" coords="648,118,885,150" />
+<area shape="rect" href="epydoc.apidoc.PropertyDoc-class.html#is_detailed" title="PropertyDoc.is_detailed()" alt="" coords="660,174,873,206" />
+<area shape="rect" href="epydoc.apidoc.RoutineDoc-class.html#is_detailed" title="RoutineDoc.is_detailed()" alt="" coords="663,230,871,262" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#summary_pyval_repr" title="ValueDoc.summary_pyval_repr()" alt="" coords="629,286,904,318" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_summary_line" title="docwriter.html.HTMLWriter.write_summary_line()" alt="" coords="7,202,415,234" />
+</map>
+  <img src="call_graph_for_is_detailed_6.gif" alt='' usemap="#call_graph_for_is_detailed_6" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.APIDoc-class.html">APIDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.APIDoc-class.html#__cmp__">__cmp__</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#__hash__">__hash__</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#__setattr__">__setattr__</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#__str__">__str__</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#merge_and_overwrite">merge_and_overwrite</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#pp">pp</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#specialize_to">specialize_to</a></code>
+      </p>
+    <div class="private">    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.APIDoc-class.html">APIDoc</a></code></b> (private):
+      <code><a href="epydoc.apidoc.APIDoc-class.html#_debug_setattr" onclick="show_private();">_debug_setattr</a></code>
+      </p></div>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== INSTANCE VARIABLES ==================== -->
+<a name="section-InstanceVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Basic Variable Information</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>str</code></span>
+    </td><td class="summary">
+        <a name="name"></a><span class="summary-name">name</span> = <code title="_Sentinel('UNKNOWN')">_Sentinel('UNKNOWN')</code><br />
+      The name of this variable in its containing namespace.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><a href="epydoc.apidoc.ValueDoc-class.html" class="link">ValueDoc</a></span>
+    </td><td class="summary">
+        <a name="container"></a><span class="summary-name">container</span> = <code title="_Sentinel('UNKNOWN')">_Sentinel('UNKNOWN')</code><br />
+      API documentation for the namespace that contains this variable.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><a href="epydoc.apidoc.DottedName-class.html" 
+      class="link">DottedName</a></span>
+    </td><td class="summary">
+        <a href="epydoc.apidoc.VariableDoc-class.html#canonical_name" class="summary-name">canonical_name</a> = <code title="_Sentinel('UNKNOWN')">_Sentinel('UNKNOWN')</code><br />
+      A dotted name that serves as a unique identifier for this 
+      <code>VariableDoc</code>.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><a href="epydoc.apidoc.ValueDoc-class.html" class="link">ValueDoc</a></span>
+    </td><td class="summary">
+        <a name="value"></a><span class="summary-name">value</span> = <code title="_Sentinel('UNKNOWN')">_Sentinel('UNKNOWN')</code><br />
+      The API documentation for this variable's value.
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Information Extracted from Docstrings</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><a href="epydoc.markup.ParsedDocstring-class.html" 
+      class="link">ParsedDocstring</a></span>
+    </td><td class="summary">
+        <a name="type_descr"></a><span class="summary-name">type_descr</span> = <code title="_Sentinel('UNKNOWN')">_Sentinel('UNKNOWN')</code><br />
+      A description of the variable's expected type, extracted from its 
+      docstring.
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.APIDoc-class.html">APIDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.APIDoc-class.html#descr">descr</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#extra_docstring_fields">extra_docstring_fields</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#metadata">metadata</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#other_docs">other_docs</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#summary">summary</a></code>
+      </p>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Information about Imported Variables</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><a href="epydoc.apidoc.DottedName-class.html" 
+      class="link">DottedName</a></span>
+    </td><td class="summary">
+        <a href="epydoc.apidoc.VariableDoc-class.html#imported_from" class="summary-name">imported_from</a> = <code title="_Sentinel('UNKNOWN')">_Sentinel('UNKNOWN')</code><br />
+      The fully qualified dotted name of the variable that this variable's 
+      value was imported from.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>bool</code></span>
+    </td><td class="summary">
+        <a name="is_imported"></a><span class="summary-name">is_imported</span> = <code title="_Sentinel('UNKNOWN')">_Sentinel('UNKNOWN')</code><br />
+      Was this variable's value imported from another module? (Exception: 
+      variables that are explicitly included in __all__ have 
+      <code>is_imported</code> set to <code>False</code>, even if they are 
+      in fact imported.)
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Information about Variables in Classes</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>bool</code></span>
+    </td><td class="summary">
+        <a href="epydoc.apidoc.VariableDoc-class.html#is_instvar" class="summary-name">is_instvar</a> = <code title="_Sentinel('UNKNOWN')">_Sentinel('UNKNOWN')</code><br />
+      If true, then this variable is an instance variable; if false, then 
+      this variable is a class variable.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><a href="epydoc.apidoc.VariableDoc-class.html" 
+      class="link">VariableDoc</a></span>
+    </td><td class="summary">
+        <a href="epydoc.apidoc.VariableDoc-class.html#overrides" class="summary-name">overrides</a> = <code title="_Sentinel('UNKNOWN')">_Sentinel('UNKNOWN')</code><br />
+      The API documentation for the variable that is overridden by this 
+      variable.
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Flags</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>bool</code></span>
+    </td><td class="summary">
+        <a name="is_alias"></a><span class="summary-name">is_alias</span> = <code title="_Sentinel('UNKNOWN')">_Sentinel('UNKNOWN')</code><br />
+      Is this variable an alias for another variable with the same value?  
+      If so, then this variable will be dispreferred when assigning 
+      canonical names.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>bool</code></span>
+    </td><td class="summary">
+        <a name="is_public"></a><span class="summary-name">is_public</span> = <code title="_Sentinel('UNKNOWN')">_Sentinel('UNKNOWN')</code><br />
+      Is this variable part of its container's public API?
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Docstrings</th></tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.APIDoc-class.html">APIDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.APIDoc-class.html#docstring">docstring</a></code>,
+      <code><a href="epydoc.apidoc.APIDoc-class.html#docstring_lineno">docstring_lineno</a></code>
+      </p>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Source Information</th></tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.apidoc.APIDoc-class.html">APIDoc</a></code></b>:
+      <code><a href="epydoc.apidoc.APIDoc-class.html#docs_extracted_by">docs_extracted_by</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Properties</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Properties"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.apidoc.VariableDoc-class.html#defining_module" class="summary-name">defining_module</a><br />
+      A read-only property that can be used to get the variable's defining 
+      module.
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Method Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-MethodDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">**kwargs</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.apidoc-pysrc.html#VariableDoc.__init__">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for___init___5-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for___init___5-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for___init___5" name="call_graph_for___init___5">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__init__" title="APIDoc.__init__()" alt="" coords="493,202,656,234" />
+<area shape="rect" href="epydoc.apidoc.VariableDoc-class.html#__init__" title="__init__()" alt="" coords="348,202,444,234" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#introspect_class" title="docintrospecter.introspect_class()" alt="" coords="16,6,288,38" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#introspect_module" title="docintrospecter.introspect_module()" alt="" coords="7,62,297,94" />
+<area shape="rect" href="epydoc.docparser-module.html#_add_import_var" title="docparser._add_import_var()" alt="" coords="33,118,271,150" />
+<area shape="rect" href="epydoc.docparser-module.html#find_base" title="docparser.find_base()" alt="" coords="60,174,244,206" />
+<area shape="rect" href="epydoc.docparser-module.html#process_assignment" title="docparser.process_assignment()" alt="" coords="23,230,281,262" />
+<area shape="rect" href="epydoc.docparser-module.html#process_classdef" title="docparser.process_classdef()" alt="" coords="33,286,271,318" />
+<area shape="rect" href="epydoc.docparser-module.html#process_funcdef" title="docparser.process_funcdef()" alt="" coords="36,342,268,374" />
+<area shape="rect" href="epydoc.docstringparser-module.html#set_var_descr" title="docstringparser.set_var_descr()" alt="" coords="24,398,280,430" />
+</map>
+  <img src="call_graph_for___init___5.gif" alt='' usemap="#call_graph_for___init___5" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Construct a new <code>APIDoc</code> object.  Keyword arguments may be 
+  used to initialize the new <code>APIDoc</code>'s attributes.</p>
+  <dl class="fields">
+    <dt>Raises:</dt>
+    <dd><ul class="nomargin-top">
+        <li><code><strong class='fraise'>TypeError</strong></code> - If a keyword argument is specified that does not correspond to a 
+        valid attribute for this (sub)class of <code>APIDoc</code>.</li>
+    </ul></dd>
+    <dt>Overrides:
+        object.__init__
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="__repr__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__repr__</span>(<span class="sig-arg">self</span>)</span>
+    <br /><em class="fname">(Representation operator)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.apidoc-pysrc.html#VariableDoc.__repr__">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <pre class="literalblock">
+repr(x)
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+        object.__repr__
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="apidoc_links"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">apidoc_links</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">**filters</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.apidoc-pysrc.html#VariableDoc.apidoc_links">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_apidoc_links_7-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_apidoc_links_7-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_apidoc_links_7" name="call_graph_for_apidoc_links_7">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__cmp__" title="APIDoc.__cmp__()" alt="" coords="405,6,576,38" />
+<area shape="rect" href="epydoc.apidoc.VariableDoc-class.html#apidoc_links" title="apidoc_links()" alt="" coords="228,6,356,38" />
+<area shape="rect" href="epydoc.apidoc-module.html#reachable_valdocs" title="reachable_valdocs()" alt="" coords="5,6,179,38" />
+</map>
+  <img src="call_graph_for_apidoc_links_7.gif" alt='' usemap="#call_graph_for_apidoc_links_7" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Return a list of all <code>APIDoc</code>s that are directly linked 
+  from this <code>APIDoc</code> (i.e., are contained or pointed to by one 
+  or more of this <code>APIDoc</code>'s attributes.)</p>
+  <p>Keyword argument <code>filters</code> can be used to selectively 
+  exclude certain categories of attribute value.  For example, using 
+  <code>includes=False</code> will exclude variables that were imported 
+  from other modules; and <code>subclasses=False</code> will exclude 
+  subclasses.  The filter categories currently supported by epydoc are:</p>
+  <ul>
+    <li>
+      <code>imports</code>: Imported variables.
+    </li>
+    <li>
+      <code>packages</code>: Containing packages for modules.
+    </li>
+    <li>
+      <code>submodules</code>: Contained submodules for packages.
+    </li>
+    <li>
+      <code>bases</code>: Bases for classes.
+    </li>
+    <li>
+      <code>subclasses</code>: Subclasses for classes.
+    </li>
+    <li>
+      <code>variables</code>: All variables.
+    </li>
+    <li>
+      <code>private</code>: Private variables.
+    </li>
+    <li>
+      <code>overrides</code>: Points from class variables to the variables 
+      they override.  This filter is False by default.
+    </li>
+  </ul>
+  <dl class="fields">
+    <dt>Overrides:
+        <a href="epydoc.apidoc.APIDoc-class.html#apidoc_links">APIDoc.apidoc_links</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="is_detailed"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">is_detailed</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.apidoc-pysrc.html#VariableDoc.is_detailed">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_is_detailed_6-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_is_detailed_6-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_is_detailed_6" name="call_graph_for_is_detailed_6">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__cmp__" title="APIDoc.__cmp__()" alt="" coords="681,6,852,38" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#is_detailed" title="APIDoc.is_detailed()" alt="" coords="676,62,857,94" />
+<area shape="rect" href="epydoc.apidoc.ClassDoc-class.html#select_variables" title="ClassDoc.select_variables()" alt="" coords="96,90,325,122" />
+<area shape="rect" href="epydoc.apidoc.VariableDoc-class.html#is_detailed" title="is_detailed()" alt="" coords="465,146,580,178" />
+<area shape="rect" href="epydoc.apidoc.ModuleDoc-class.html#select_variables" title="ModuleDoc.select_variables()" alt="" coords="87,146,335,178" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#is_detailed" title="NamespaceDoc.is_detailed()" alt="" coords="648,118,885,150" />
+<area shape="rect" href="epydoc.apidoc.PropertyDoc-class.html#is_detailed" title="PropertyDoc.is_detailed()" alt="" coords="660,174,873,206" />
+<area shape="rect" href="epydoc.apidoc.RoutineDoc-class.html#is_detailed" title="RoutineDoc.is_detailed()" alt="" coords="663,230,871,262" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#summary_pyval_repr" title="ValueDoc.summary_pyval_repr()" alt="" coords="629,286,904,318" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_summary_line" title="docwriter.html.HTMLWriter.write_summary_line()" alt="" coords="7,202,415,234" />
+</map>
+  <img src="call_graph_for_is_detailed_6.gif" alt='' usemap="#call_graph_for_is_detailed_6" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Does this object deserve a box with extra details?</p>
+  <dl class="fields">
+    <dt>Returns: <code>bool</code></dt>
+        <dd>True if the object needs extra details, else False.</dd>
+    <dt>Overrides:
+        <a href="epydoc.apidoc.APIDoc-class.html#is_detailed">APIDoc.is_detailed</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== INSTANCE VARIABLE DETAILS ==================== -->
+<a name="section-InstanceVariableDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Variable Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceVariableDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="canonical_name"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">canonical_name</h3>
+  A dotted name that serves as a unique identifier for this 
+  <code>VariableDoc</code>.  It should be formed by concatenating the 
+  <code>VariableDoc</code>'s <code>container</code> with its 
+  <code>name</code>.
+  <dl class="fields">
+    <dt>Type:</dt>
+      <dd><a href="epydoc.apidoc.DottedName-class.html" 
+      class="link">DottedName</a></dd>
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+_Sentinel('UNKNOWN')
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="imported_from"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">imported_from</h3>
+  The fully qualified dotted name of the variable that this variable's 
+  value was imported from.  This attribute should only be defined if 
+  <code>is_instvar</code> is true.
+  <dl class="fields">
+    <dt>Type:</dt>
+      <dd><a href="epydoc.apidoc.DottedName-class.html" 
+      class="link">DottedName</a></dd>
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+_Sentinel('UNKNOWN')
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="is_instvar"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">is_instvar</h3>
+  If true, then this variable is an instance variable; if false, then this 
+  variable is a class variable.  This attribute should only be defined if 
+  the containing namespace is a class
+  <dl class="fields">
+    <dt>Type:</dt>
+      <dd><code>bool</code></dd>
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+_Sentinel('UNKNOWN')
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="overrides"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">overrides</h3>
+  The API documentation for the variable that is overridden by this 
+  variable.  This attribute should only be defined if the containing 
+  namespace is a class.
+  <dl class="fields">
+    <dt>Type:</dt>
+      <dd><a href="epydoc.apidoc.VariableDoc-class.html" 
+      class="link">VariableDoc</a></dd>
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+_Sentinel('UNKNOWN')
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== PROPERTY DETAILS ==================== -->
+<a name="section-PropertyDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Property Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-PropertyDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="defining_module"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">defining_module</h3>
+  <p>A read-only property that can be used to get the variable's defining 
+  module.  This is defined as the defining module of the variable's 
+  container.</p>
+  <dl class="fields">
+    <dt>Get Method:</dt>
+    <dd class="value"><span class="summary-sig"><a href="epydoc.apidoc.VariableDoc-class.html#_get_defining_module" class="summary-sig-name" onclick="show_private();">_get_defining_module</a>(<span class="summary-sig-arg">self</span>)</span>
+    </dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:07:34 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.apidoc._Sentinel-class.html b/doc/api/epydoc.apidoc._Sentinel-class.html
new file mode 100644
index 0000000..cf47db8
--- /dev/null
+++ b/doc/api/epydoc.apidoc._Sentinel-class.html
@@ -0,0 +1,187 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.apidoc._Sentinel</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.apidoc-module.html">Module apidoc</a> ::
+        Class _Sentinel
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.apidoc._Sentinel-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class _Sentinel</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.apidoc-pysrc.html#_Sentinel">source code</a></span></p>
+<p>A unique value that won't compare equal to any other value.  This 
+  class is used to create <a href="epydoc.apidoc-module.html#UNKNOWN" 
+  class="link">UNKNOWN</a>.</p>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__init__"></a><span class="summary-sig-name">__init__</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">name</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.apidoc-pysrc.html#_Sentinel.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__repr__"></a><span class="summary-sig-name">__repr__</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.apidoc-pysrc.html#_Sentinel.__repr__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__nonzero__"></a><span class="summary-sig-name">__nonzero__</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.apidoc-pysrc.html#_Sentinel.__nonzero__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:07:34 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.checker-module.html b/doc/api/epydoc.checker-module.html
new file mode 100644
index 0000000..80096ea
--- /dev/null
+++ b/doc/api/epydoc.checker-module.html
@@ -0,0 +1,228 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.checker</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        Module checker
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.checker-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module checker</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.checker-pysrc.html">source code</a></span></p>
+<p>Documentation completeness checker.  This module defines a single 
+  class, <code>DocChecker</code>, which can be used to check the that 
+  specified classes of objects are documented.</p>
+
+<!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Classes</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Classes"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.checker.DocChecker-class.html" class="summary-name">DocChecker</a><br />
+      Documentation completeness checker.
+    </td>
+  </tr>
+</table>
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Variables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="_NO_DOCS"></a><span class="summary-name">_NO_DOCS</span> = <code title="['__hash__', '__repr__', '__str__', '__cmp__']"><code class="variable-group">[</code><code class="variable-quote">'</code><code class="variable-string">__hash__</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">__repr__</code><code class="variable-quote">'</code><code class="variable-op">, </code><code clas [...]
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="_NO_BASIC"></a><span class="summary-name">_NO_BASIC</span> = <code title="['__hash__', '__repr__', '__str__', '__cmp__']"><code class="variable-group">[</code><code class="variable-quote">'</code><code class="variable-string">__hash__</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">__repr__</code><code class="variable-quote">'</code><code class="variable-op">, </code><code cl [...]
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.checker-module.html#_NO_RETURN" class="summary-name" onclick="show_private();">_NO_RETURN</a> = <code title="['__init__', '__hash__', '__repr__', '__str__', '__cmp__']"><code class="variable-group">[</code><code class="variable-quote">'</code><code class="variable-string">__init__</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">__hash__</code><code class="variable-quot [...]
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="_NO_PARAM"></a><span class="summary-name">_NO_PARAM</span> = <code title="['__cmp__']"><code class="variable-group">[</code><code class="variable-quote">'</code><code class="variable-string">__cmp__</code><code class="variable-quote">'</code><code class="variable-group">]</code></code>
+    </td>
+  </tr>
+</table>
+<!-- ==================== VARIABLES DETAILS ==================== -->
+<a name="section-VariablesDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Variables Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-VariablesDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="_NO_RETURN"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">_NO_RETURN</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-group">[</code><code class="variable-quote">'</code><code class="variable-string">__init__</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">__hash__</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">__repr__</code><code class="variable-quote">'</code><code class="variable-op">,  [...]
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:05:47 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.checker-pysrc.html b/doc/api/epydoc.checker-pysrc.html
new file mode 100644
index 0000000..717abfc
--- /dev/null
+++ b/doc/api/epydoc.checker-pysrc.html
@@ -0,0 +1,558 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.checker</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        Module checker
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.checker-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="epydoc.checker-module.html">Module epydoc.checker</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno">  1</tt>  <tt class="py-line"><tt class="py-comment">#</tt> </tt>
+<a name="L2"></a><tt class="py-lineno">  2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># objdoc: epydoc documentation completeness checker</tt> </tt>
+<a name="L3"></a><tt class="py-lineno">  3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Edward Loper</tt> </tt>
+<a name="L4"></a><tt class="py-lineno">  4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L5"></a><tt class="py-lineno">  5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Created [01/30/01 05:18 PM]</tt> </tt>
+<a name="L6"></a><tt class="py-lineno">  6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># $Id: checker.py 1366 2006-09-07 15:54:59Z edloper $</tt> </tt>
+<a name="L7"></a><tt class="py-lineno">  7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L8"></a><tt class="py-lineno">  8</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L9"></a><tt class="py-lineno">  9</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L10"></a><tt class="py-lineno"> 10</tt>  <tt class="py-line"><tt class="py-docstring">Documentation completeness checker.  This module defines a single</tt> </tt>
+<a name="L11"></a><tt class="py-lineno"> 11</tt>  <tt class="py-line"><tt class="py-docstring">class, C{DocChecker}, which can be used to check the that specified</tt> </tt>
+<a name="L12"></a><tt class="py-lineno"> 12</tt>  <tt class="py-line"><tt class="py-docstring">classes of objects are documented.</tt> </tt>
+<a name="L13"></a><tt class="py-lineno"> 13</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L14"></a><tt class="py-lineno"> 14</tt>  <tt class="py-line"><tt class="py-name">__docformat__</tt> <tt class="py-op">=</tt> <tt class="py-string">'epytext en'</tt> </tt>
+<a name="L15"></a><tt class="py-lineno"> 15</tt>  <tt class="py-line"> </tt>
+<a name="L16"></a><tt class="py-lineno"> 16</tt>  <tt class="py-line"><tt class="py-comment">##################################################</tt> </tt>
+<a name="L17"></a><tt class="py-lineno"> 17</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## Imports</tt> </tt>
+<a name="L18"></a><tt class="py-lineno"> 18</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">##################################################</tt> </tt>
+<a name="L19"></a><tt class="py-lineno"> 19</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L20"></a><tt class="py-lineno"> 20</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">re</tt><tt class="py-op">,</tt> <tt class="py-name">sys</tt><tt class="py-op">,</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-0" class="py-name" targets="Variable epydoc.apidoc.ModuleDoc.path=epydoc.apidoc.ModuleDoc-class.html#path"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-0', 'path', 'lin [...]
+<a name="L21"></a><tt class="py-lineno"> 21</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">xml</tt><tt class="py-op">.</tt><tt class="py-name">dom</tt><tt class="py-op">.</tt><tt class="py-name">minidom</tt> <tt class="py-keyword">import</tt> <tt class="py-name">Text</tt> <tt class="py-name">as</tt> <tt class="py-name">_Text</tt> </tt>
+<a name="L22"></a><tt class="py-lineno"> 22</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-1" class="py-name" targets="Package epydoc=epydoc-module.html"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-1', 'epydoc', 'link-1');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-2" class="py-name" targets="Module epydoc.apidoc=epydoc.apidoc-module.html"><a title="epydoc.apidoc" class="py-name" href="#" onclick="return doclink('link-2', 'a [...]
+<a name="L23"></a><tt class="py-lineno"> 23</tt>  <tt class="py-line"> </tt>
+<a name="L24"></a><tt class="py-lineno"> 24</tt>  <tt class="py-line"><tt class="py-comment"># The following methods may be undocumented:</tt> </tt>
+<a name="L25"></a><tt class="py-lineno"> 25</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt id="link-3" class="py-name" targets="Variable epydoc.checker._NO_DOCS=epydoc.checker-module.html#_NO_DOCS"><a title="epydoc.checker._NO_DOCS" class="py-name" href="#" onclick="return doclink('link-3', '_NO_DOCS', 'link-3');">_NO_DOCS</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-string">'__hash__'</tt><tt class="py-op">,</tt> <tt class="py-string">'__repr__'</tt [...]
+<a name="L26"></a><tt class="py-lineno"> 26</tt>  <tt class="py-line"> </tt>
+<a name="L27"></a><tt class="py-lineno"> 27</tt>  <tt class="py-line"><tt class="py-comment"># The following methods never need descriptions, authors, or</tt> </tt>
+<a name="L28"></a><tt class="py-lineno"> 28</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># versions:</tt> </tt>
+<a name="L29"></a><tt class="py-lineno"> 29</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt id="link-4" class="py-name" targets="Variable epydoc.checker._NO_BASIC=epydoc.checker-module.html#_NO_BASIC"><a title="epydoc.checker._NO_BASIC" class="py-name" href="#" onclick="return doclink('link-4', '_NO_BASIC', 'link-4');">_NO_BASIC</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-string">'__hash__'</tt><tt class="py-op">,</tt> <tt class="py-string">'__repr__ [...]
+<a name="L30"></a><tt class="py-lineno"> 30</tt>  <tt class="py-line"> </tt>
+<a name="L31"></a><tt class="py-lineno"> 31</tt>  <tt class="py-line"><tt class="py-comment"># The following methods never need return value descriptions.</tt> </tt>
+<a name="L32"></a><tt class="py-lineno"> 32</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt id="link-5" class="py-name" targets="Variable epydoc.checker._NO_RETURN=epydoc.checker-module.html#_NO_RETURN"><a title="epydoc.checker._NO_RETURN" class="py-name" href="#" onclick="return doclink('link-5', '_NO_RETURN', 'link-5');">_NO_RETURN</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-string">'__init__'</tt><tt class="py-op">,</tt> <tt class="py-string">'__h [...]
+<a name="L33"></a><tt class="py-lineno"> 33</tt>  <tt class="py-line"> </tt>
+<a name="L34"></a><tt class="py-lineno"> 34</tt>  <tt class="py-line"><tt class="py-comment"># The following methods don't need parameters documented:</tt> </tt>
+<a name="L35"></a><tt class="py-lineno"> 35</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt id="link-6" class="py-name" targets="Variable epydoc.checker._NO_PARAM=epydoc.checker-module.html#_NO_PARAM"><a title="epydoc.checker._NO_PARAM" class="py-name" href="#" onclick="return doclink('link-6', '_NO_PARAM', 'link-6');">_NO_PARAM</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-string">'__cmp__'</tt><tt class="py-op">]</tt> </tt>
+<a name="L36"></a><tt class="py-lineno"> 36</tt>  <tt class="py-line"> </tt>
+<a name="DocChecker"></a><div id="DocChecker-def"><a name="L37"></a><tt class="py-lineno"> 37</tt> <a class="py-toggle" href="#" id="DocChecker-toggle" onclick="return toggle('DocChecker');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="epydoc.checker.DocChecker-class.html">DocChecker</a><tt class="py-op">:</tt> </tt>
+</div><div id="DocChecker-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="DocChecker-expanded"><a name="L38"></a><tt class="py-lineno"> 38</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L39"></a><tt class="py-lineno"> 39</tt>  <tt class="py-line"><tt class="py-docstring">    Documentation completeness checker.  C{DocChecker} can be used to</tt> </tt>
+<a name="L40"></a><tt class="py-lineno"> 40</tt>  <tt class="py-line"><tt class="py-docstring">    check that specified classes of objects are documented.  To check</tt> </tt>
+<a name="L41"></a><tt class="py-lineno"> 41</tt>  <tt class="py-line"><tt class="py-docstring">    the documentation for a group of objects, you should create a</tt> </tt>
+<a name="L42"></a><tt class="py-lineno"> 42</tt>  <tt class="py-line"><tt class="py-docstring">    C{DocChecker} from a L{DocIndex<apidoc.DocIndex>} that documents</tt> </tt>
+<a name="L43"></a><tt class="py-lineno"> 43</tt>  <tt class="py-line"><tt class="py-docstring">    those objects; and then use the L{check} method to run specified</tt> </tt>
+<a name="L44"></a><tt class="py-lineno"> 44</tt>  <tt class="py-line"><tt class="py-docstring">    checks on the objects' documentation.</tt> </tt>
+<a name="L45"></a><tt class="py-lineno"> 45</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L46"></a><tt class="py-lineno"> 46</tt>  <tt class="py-line"><tt class="py-docstring">    What checks are run, and what objects they are run on, are</tt> </tt>
+<a name="L47"></a><tt class="py-lineno"> 47</tt>  <tt class="py-line"><tt class="py-docstring">    specified by the constants defined by C{DocChecker}.  These</tt> </tt>
+<a name="L48"></a><tt class="py-lineno"> 48</tt>  <tt class="py-line"><tt class="py-docstring">    constants are divided into three groups.  </tt> </tt>
+<a name="L49"></a><tt class="py-lineno"> 49</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L50"></a><tt class="py-lineno"> 50</tt>  <tt class="py-line"><tt class="py-docstring">      - Type specifiers indicate what type of objects should be</tt> </tt>
+<a name="L51"></a><tt class="py-lineno"> 51</tt>  <tt class="py-line"><tt class="py-docstring">        checked: L{MODULE}; L{CLASS}; L{FUNC}; L{VAR}; L{IVAR};</tt> </tt>
+<a name="L52"></a><tt class="py-lineno"> 52</tt>  <tt class="py-line"><tt class="py-docstring">        L{CVAR}; L{PARAM}; and L{RETURN}.</tt> </tt>
+<a name="L53"></a><tt class="py-lineno"> 53</tt>  <tt class="py-line"><tt class="py-docstring">      - Public/private specifiers indicate whether public or private</tt> </tt>
+<a name="L54"></a><tt class="py-lineno"> 54</tt>  <tt class="py-line"><tt class="py-docstring">        objects should be checked: L{PRIVATE}.</tt> </tt>
+<a name="L55"></a><tt class="py-lineno"> 55</tt>  <tt class="py-line"><tt class="py-docstring">      - Check specifiers indicate what checks should be run on the</tt> </tt>
+<a name="L56"></a><tt class="py-lineno"> 56</tt>  <tt class="py-line"><tt class="py-docstring">        objects: L{TYPE}; L{DESCR}; L{AUTHOR};</tt> </tt>
+<a name="L57"></a><tt class="py-lineno"> 57</tt>  <tt class="py-line"><tt class="py-docstring">        and L{VERSION}.</tt> </tt>
+<a name="L58"></a><tt class="py-lineno"> 58</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L59"></a><tt class="py-lineno"> 59</tt>  <tt class="py-line"><tt class="py-docstring">    The L{check} method is used to perform a check on the</tt> </tt>
+<a name="L60"></a><tt class="py-lineno"> 60</tt>  <tt class="py-line"><tt class="py-docstring">    documentation.  Its parameter is formed by or-ing together at</tt> </tt>
+<a name="L61"></a><tt class="py-lineno"> 61</tt>  <tt class="py-line"><tt class="py-docstring">    least one value from each specifier group:</tt> </tt>
+<a name="L62"></a><tt class="py-lineno"> 62</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L63"></a><tt class="py-lineno"> 63</tt>  <tt class="py-line"><tt class="py-docstring">        >>> checker.check(DocChecker.MODULE | DocChecker.DESCR)</tt> </tt>
+<a name="L64"></a><tt class="py-lineno"> 64</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt>
+<a name="L65"></a><tt class="py-lineno"> 65</tt>  <tt class="py-line"><tt class="py-docstring">    To specify multiple values from a single group, simply or their</tt> </tt>
+<a name="L66"></a><tt class="py-lineno"> 66</tt>  <tt class="py-line"><tt class="py-docstring">    values together:</tt> </tt>
+<a name="L67"></a><tt class="py-lineno"> 67</tt>  <tt class="py-line"><tt class="py-docstring">    </tt> </tt>
+<a name="L68"></a><tt class="py-lineno"> 68</tt>  <tt class="py-line"><tt class="py-docstring">        >>> checker.check(DocChecker.MODULE | DocChecker.CLASS |</tt> </tt>
+<a name="L69"></a><tt class="py-lineno"> 69</tt>  <tt class="py-line"><tt class="py-docstring">        ...               DocChecker.FUNC )</tt> </tt>
+<a name="L70"></a><tt class="py-lineno"> 70</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L71"></a><tt class="py-lineno"> 71</tt>  <tt class="py-line"><tt class="py-docstring">    @group Types: MODULE, CLASS, FUNC, VAR, IVAR, CVAR, PARAM,</tt> </tt>
+<a name="L72"></a><tt class="py-lineno"> 72</tt>  <tt class="py-line"><tt class="py-docstring">        RETURN, ALL_T</tt> </tt>
+<a name="L73"></a><tt class="py-lineno"> 73</tt>  <tt class="py-line"><tt class="py-docstring">    @type MODULE: C{int}</tt> </tt>
+<a name="L74"></a><tt class="py-lineno"> 74</tt>  <tt class="py-line"><tt class="py-docstring">    @cvar MODULE: Type specifier that indicates that the documentation</tt> </tt>
+<a name="L75"></a><tt class="py-lineno"> 75</tt>  <tt class="py-line"><tt class="py-docstring">        of modules should be checked.</tt> </tt>
+<a name="L76"></a><tt class="py-lineno"> 76</tt>  <tt class="py-line"><tt class="py-docstring">    @type CLASS: C{int}</tt> </tt>
+<a name="L77"></a><tt class="py-lineno"> 77</tt>  <tt class="py-line"><tt class="py-docstring">    @cvar CLASS: Type specifier that indicates that the documentation</tt> </tt>
+<a name="L78"></a><tt class="py-lineno"> 78</tt>  <tt class="py-line"><tt class="py-docstring">        of classes should be checked.</tt> </tt>
+<a name="L79"></a><tt class="py-lineno"> 79</tt>  <tt class="py-line"><tt class="py-docstring">    @type FUNC: C{int}</tt> </tt>
+<a name="L80"></a><tt class="py-lineno"> 80</tt>  <tt class="py-line"><tt class="py-docstring">    @cvar FUNC: Type specifier that indicates that the documentation</tt> </tt>
+<a name="L81"></a><tt class="py-lineno"> 81</tt>  <tt class="py-line"><tt class="py-docstring">        of functions should be checked.</tt> </tt>
+<a name="L82"></a><tt class="py-lineno"> 82</tt>  <tt class="py-line"><tt class="py-docstring">    @type VAR: C{int}</tt> </tt>
+<a name="L83"></a><tt class="py-lineno"> 83</tt>  <tt class="py-line"><tt class="py-docstring">    @cvar VAR: Type specifier that indicates that the documentation</tt> </tt>
+<a name="L84"></a><tt class="py-lineno"> 84</tt>  <tt class="py-line"><tt class="py-docstring">        of module variables should be checked.</tt> </tt>
+<a name="L85"></a><tt class="py-lineno"> 85</tt>  <tt class="py-line"><tt class="py-docstring">    @type IVAR: C{int}</tt> </tt>
+<a name="L86"></a><tt class="py-lineno"> 86</tt>  <tt class="py-line"><tt class="py-docstring">    @cvar IVAR: Type specifier that indicates that the documentation</tt> </tt>
+<a name="L87"></a><tt class="py-lineno"> 87</tt>  <tt class="py-line"><tt class="py-docstring">        of instance variables should be checked.</tt> </tt>
+<a name="L88"></a><tt class="py-lineno"> 88</tt>  <tt class="py-line"><tt class="py-docstring">    @type CVAR: C{int}</tt> </tt>
+<a name="L89"></a><tt class="py-lineno"> 89</tt>  <tt class="py-line"><tt class="py-docstring">    @cvar CVAR: Type specifier that indicates that the documentation</tt> </tt>
+<a name="L90"></a><tt class="py-lineno"> 90</tt>  <tt class="py-line"><tt class="py-docstring">        of class variables should be checked.</tt> </tt>
+<a name="L91"></a><tt class="py-lineno"> 91</tt>  <tt class="py-line"><tt class="py-docstring">    @type PARAM: C{int}</tt> </tt>
+<a name="L92"></a><tt class="py-lineno"> 92</tt>  <tt class="py-line"><tt class="py-docstring">    @cvar PARAM: Type specifier that indicates that the documentation</tt> </tt>
+<a name="L93"></a><tt class="py-lineno"> 93</tt>  <tt class="py-line"><tt class="py-docstring">        of function and method parameters should be checked.</tt> </tt>
+<a name="L94"></a><tt class="py-lineno"> 94</tt>  <tt class="py-line"><tt class="py-docstring">    @type RETURN: C{int}</tt> </tt>
+<a name="L95"></a><tt class="py-lineno"> 95</tt>  <tt class="py-line"><tt class="py-docstring">    @cvar RETURN: Type specifier that indicates that the documentation</tt> </tt>
+<a name="L96"></a><tt class="py-lineno"> 96</tt>  <tt class="py-line"><tt class="py-docstring">        of return values should be checked.</tt> </tt>
+<a name="L97"></a><tt class="py-lineno"> 97</tt>  <tt class="py-line"><tt class="py-docstring">    @type ALL_T: C{int}</tt> </tt>
+<a name="L98"></a><tt class="py-lineno"> 98</tt>  <tt class="py-line"><tt class="py-docstring">    @cvar ALL_T: Type specifier that indicates that the documentation</tt> </tt>
+<a name="L99"></a><tt class="py-lineno"> 99</tt>  <tt class="py-line"><tt class="py-docstring">        of all objects should be checked.</tt> </tt>
+<a name="L100"></a><tt class="py-lineno">100</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L101"></a><tt class="py-lineno">101</tt>  <tt class="py-line"><tt class="py-docstring">    @group Checks: TYPE, AUTHOR, VERSION, DESCR, ALL_C</tt> </tt>
+<a name="L102"></a><tt class="py-lineno">102</tt>  <tt class="py-line"><tt class="py-docstring">    @type TYPE: C{int}</tt> </tt>
+<a name="L103"></a><tt class="py-lineno">103</tt>  <tt class="py-line"><tt class="py-docstring">    @cvar TYPE: Check specifier that indicates that every variable and</tt> </tt>
+<a name="L104"></a><tt class="py-lineno">104</tt>  <tt class="py-line"><tt class="py-docstring">        parameter should have a C{@type} field.</tt> </tt>
+<a name="L105"></a><tt class="py-lineno">105</tt>  <tt class="py-line"><tt class="py-docstring">    @type AUTHOR: C{int}</tt> </tt>
+<a name="L106"></a><tt class="py-lineno">106</tt>  <tt class="py-line"><tt class="py-docstring">    @cvar AUTHOR: Check specifier that indicates that every object</tt> </tt>
+<a name="L107"></a><tt class="py-lineno">107</tt>  <tt class="py-line"><tt class="py-docstring">        should have an C{author} field.</tt> </tt>
+<a name="L108"></a><tt class="py-lineno">108</tt>  <tt class="py-line"><tt class="py-docstring">    @type VERSION: C{int}</tt> </tt>
+<a name="L109"></a><tt class="py-lineno">109</tt>  <tt class="py-line"><tt class="py-docstring">    @cvar VERSION: Check specifier that indicates that every object</tt> </tt>
+<a name="L110"></a><tt class="py-lineno">110</tt>  <tt class="py-line"><tt class="py-docstring">        should have a C{version} field.</tt> </tt>
+<a name="L111"></a><tt class="py-lineno">111</tt>  <tt class="py-line"><tt class="py-docstring">    @type DESCR: C{int}</tt> </tt>
+<a name="L112"></a><tt class="py-lineno">112</tt>  <tt class="py-line"><tt class="py-docstring">    @cvar DESCR: Check specifier that indicates that every object</tt> </tt>
+<a name="L113"></a><tt class="py-lineno">113</tt>  <tt class="py-line"><tt class="py-docstring">        should have a description.  </tt> </tt>
+<a name="L114"></a><tt class="py-lineno">114</tt>  <tt class="py-line"><tt class="py-docstring">    @type ALL_C: C{int}</tt> </tt>
+<a name="L115"></a><tt class="py-lineno">115</tt>  <tt class="py-line"><tt class="py-docstring">    @cvar ALL_C: Check specifier that indicates that  all checks</tt> </tt>
+<a name="L116"></a><tt class="py-lineno">116</tt>  <tt class="py-line"><tt class="py-docstring">        should be run.</tt> </tt>
+<a name="L117"></a><tt class="py-lineno">117</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L118"></a><tt class="py-lineno">118</tt>  <tt class="py-line"><tt class="py-docstring">    @group Publicity: PRIVATE</tt> </tt>
+<a name="L119"></a><tt class="py-lineno">119</tt>  <tt class="py-line"><tt class="py-docstring">    @type PRIVATE: C{int}</tt> </tt>
+<a name="L120"></a><tt class="py-lineno">120</tt>  <tt class="py-line"><tt class="py-docstring">    @cvar PRIVATE: Specifier that indicates that private objects should</tt> </tt>
+<a name="L121"></a><tt class="py-lineno">121</tt>  <tt class="py-line"><tt class="py-docstring">        be checked.</tt> </tt>
+<a name="L122"></a><tt class="py-lineno">122</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L123"></a><tt class="py-lineno">123</tt>  <tt class="py-line">    <tt class="py-comment"># Types</tt> </tt>
+<a name="L124"></a><tt class="py-lineno">124</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-7" class="py-name" targets="Variable epydoc.checker.DocChecker.MODULE=epydoc.checker.DocChecker-class.html#MODULE"><a title="epydoc.checker.DocChecker.MODULE" class="py-name" href="#" onclick="return doclink('link-7', 'MODULE', 'link-7');">MODULE</a></tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L125"></a><tt class="py-lineno">125</tt>  <tt class="py-line">    <tt id="link-8" class="py-name" targets="Variable epydoc.checker.DocChecker.CLASS=epydoc.checker.DocChecker-class.html#CLASS"><a title="epydoc.checker.DocChecker.CLASS" class="py-name" href="#" onclick="return doclink('link-8', 'CLASS', 'link-8');">CLASS</a></tt>  <tt class="py-op">=</tt> <tt class="py-number">2</tt> </tt>
+<a name="L126"></a><tt class="py-lineno">126</tt>  <tt class="py-line">    <tt id="link-9" class="py-name" targets="Variable epydoc.checker.DocChecker.FUNC=epydoc.checker.DocChecker-class.html#FUNC"><a title="epydoc.checker.DocChecker.FUNC" class="py-name" href="#" onclick="return doclink('link-9', 'FUNC', 'link-9');">FUNC</a></tt>   <tt class="py-op">=</tt> <tt class="py-number">4</tt> </tt>
+<a name="L127"></a><tt class="py-lineno">127</tt>  <tt class="py-line">    <tt id="link-10" class="py-name" targets="Variable epydoc.checker.DocChecker.VAR=epydoc.checker.DocChecker-class.html#VAR"><a title="epydoc.checker.DocChecker.VAR" class="py-name" href="#" onclick="return doclink('link-10', 'VAR', 'link-10');">VAR</a></tt>    <tt class="py-op">=</tt> <tt class="py-number">8</tt> </tt>
+<a name="L128"></a><tt class="py-lineno">128</tt>  <tt class="py-line">    <tt class="py-comment">#IVAR   = 16</tt> </tt>
+<a name="L129"></a><tt class="py-lineno">129</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#CVAR   = 32</tt> </tt>
+<a name="L130"></a><tt class="py-lineno">130</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-11" class="py-name" targets="Variable epydoc.checker.DocChecker.PARAM=epydoc.checker.DocChecker-class.html#PARAM"><a title="epydoc.checker.DocChecker.PARAM" class="py-name" href="#" onclick="return doclink('link-11', 'PARAM', 'link-11');">PARAM</a></tt>  <tt class="py-op">=</tt> <tt class="py-number">64</tt> </tt>
+<a name="L131"></a><tt class="py-lineno">131</tt>  <tt class="py-line">    <tt id="link-12" class="py-name" targets="Variable epydoc.checker.DocChecker.RETURN=epydoc.checker.DocChecker-class.html#RETURN"><a title="epydoc.checker.DocChecker.RETURN" class="py-name" href="#" onclick="return doclink('link-12', 'RETURN', 'link-12');">RETURN</a></tt> <tt class="py-op">=</tt> <tt class="py-number">128</tt> </tt>
+<a name="L132"></a><tt class="py-lineno">132</tt>  <tt class="py-line">    <tt id="link-13" class="py-name" targets="Variable epydoc.checker.DocChecker.PROPERTY=epydoc.checker.DocChecker-class.html#PROPERTY"><a title="epydoc.checker.DocChecker.PROPERTY" class="py-name" href="#" onclick="return doclink('link-13', 'PROPERTY', 'link-13');">PROPERTY</a></tt> <tt class="py-op">=</tt> <tt class="py-number">256</tt> </tt>
+<a name="L133"></a><tt class="py-lineno">133</tt>  <tt class="py-line">    <tt id="link-14" class="py-name" targets="Variable epydoc.checker.DocChecker.ALL_T=epydoc.checker.DocChecker-class.html#ALL_T"><a title="epydoc.checker.DocChecker.ALL_T" class="py-name" href="#" onclick="return doclink('link-14', 'ALL_T', 'link-14');">ALL_T</a></tt>  <tt class="py-op">=</tt> <tt class="py-number">1</tt><tt class="py-op">+</tt><tt class="py-number">2</tt><tt class="py-op">+</tt><tt class="py-number [...]
+<a name="L134"></a><tt class="py-lineno">134</tt>  <tt class="py-line"> </tt>
+<a name="L135"></a><tt class="py-lineno">135</tt>  <tt class="py-line">    <tt class="py-comment"># Checks</tt> </tt>
+<a name="L136"></a><tt class="py-lineno">136</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-15" class="py-name" targets="Variable epydoc.checker.DocChecker.TYPE=epydoc.checker.DocChecker-class.html#TYPE"><a title="epydoc.checker.DocChecker.TYPE" class="py-name" href="#" onclick="return doclink('link-15', 'TYPE', 'link-15');">TYPE</a></tt> <tt class="py-op">=</tt> <tt class="py-number">256</tt> </tt>
+<a name="L137"></a><tt class="py-lineno">137</tt>  <tt class="py-line">    <tt id="link-16" class="py-name" targets="Variable epydoc.checker.DocChecker.AUTHOR=epydoc.checker.DocChecker-class.html#AUTHOR"><a title="epydoc.checker.DocChecker.AUTHOR" class="py-name" href="#" onclick="return doclink('link-16', 'AUTHOR', 'link-16');">AUTHOR</a></tt> <tt class="py-op">=</tt> <tt class="py-number">1024</tt> </tt>
+<a name="L138"></a><tt class="py-lineno">138</tt>  <tt class="py-line">    <tt id="link-17" class="py-name" targets="Variable epydoc.checker.DocChecker.VERSION=epydoc.checker.DocChecker-class.html#VERSION"><a title="epydoc.checker.DocChecker.VERSION" class="py-name" href="#" onclick="return doclink('link-17', 'VERSION', 'link-17');">VERSION</a></tt> <tt class="py-op">=</tt> <tt class="py-number">2048</tt> </tt>
+<a name="L139"></a><tt class="py-lineno">139</tt>  <tt class="py-line">    <tt id="link-18" class="py-name" targets="Variable epydoc.checker.DocChecker.DESCR=epydoc.checker.DocChecker-class.html#DESCR"><a title="epydoc.checker.DocChecker.DESCR" class="py-name" href="#" onclick="return doclink('link-18', 'DESCR', 'link-18');">DESCR</a></tt> <tt class="py-op">=</tt> <tt class="py-number">4096</tt> </tt>
+<a name="L140"></a><tt class="py-lineno">140</tt>  <tt class="py-line">    <tt id="link-19" class="py-name" targets="Variable epydoc.checker.DocChecker.ALL_C=epydoc.checker.DocChecker-class.html#ALL_C"><a title="epydoc.checker.DocChecker.ALL_C" class="py-name" href="#" onclick="return doclink('link-19', 'ALL_C', 'link-19');">ALL_C</a></tt> <tt class="py-op">=</tt> <tt class="py-number">256</tt><tt class="py-op">+</tt><tt class="py-number">512</tt><tt class="py-op">+</tt><tt class="py-num [...]
+<a name="L141"></a><tt class="py-lineno">141</tt>  <tt class="py-line"> </tt>
+<a name="L142"></a><tt class="py-lineno">142</tt>  <tt class="py-line">    <tt class="py-comment"># Private/public</tt> </tt>
+<a name="L143"></a><tt class="py-lineno">143</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-20" class="py-name" targets="Variable epydoc.checker.DocChecker.PRIVATE=epydoc.checker.DocChecker-class.html#PRIVATE"><a title="epydoc.checker.DocChecker.PRIVATE" class="py-name" href="#" onclick="return doclink('link-20', 'PRIVATE', 'link-20');">PRIVATE</a></tt> <tt class="py-op">=</tt> <tt class="py-number">16384</tt> </tt>
+<a name="L144"></a><tt class="py-lineno">144</tt>  <tt class="py-line"> </tt>
+<a name="L145"></a><tt class="py-lineno">145</tt>  <tt class="py-line">    <tt id="link-21" class="py-name" targets="Variable epydoc.checker.DocChecker.ALL=epydoc.checker.DocChecker-class.html#ALL"><a title="epydoc.checker.DocChecker.ALL" class="py-name" href="#" onclick="return doclink('link-21', 'ALL', 'link-21');">ALL</a></tt> <tt class="py-op">=</tt> <tt id="link-22" class="py-name"><a title="epydoc.checker.DocChecker.ALL_T" class="py-name" href="#" onclick="return doclink('link-22', [...]
+<a name="L146"></a><tt class="py-lineno">146</tt>  <tt class="py-line"> </tt>
+<a name="DocChecker.__init__"></a><div id="DocChecker.__init__-def"><a name="L147"></a><tt class="py-lineno">147</tt> <a class="py-toggle" href="#" id="DocChecker.__init__-toggle" onclick="return toggle('DocChecker.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.checker.DocChecker-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">docindex</tt><t [...]
+</div><div id="DocChecker.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="DocChecker.__init__-expanded"><a name="L148"></a><tt class="py-lineno">148</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L149"></a><tt class="py-lineno">149</tt>  <tt class="py-line"><tt class="py-docstring">        Create a new C{DocChecker} that can be used to run checks on</tt> </tt>
+<a name="L150"></a><tt class="py-lineno">150</tt>  <tt class="py-line"><tt class="py-docstring">        the documentation of the objects documented by C{docindex}</tt> </tt>
+<a name="L151"></a><tt class="py-lineno">151</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L152"></a><tt class="py-lineno">152</tt>  <tt class="py-line"><tt class="py-docstring">        @param docindex: A documentation map containing the</tt> </tt>
+<a name="L153"></a><tt class="py-lineno">153</tt>  <tt class="py-line"><tt class="py-docstring">            documentation for the objects to be checked.</tt> </tt>
+<a name="L154"></a><tt class="py-lineno">154</tt>  <tt class="py-line"><tt class="py-docstring">        @type docindex: L{Docindex<apidoc.DocIndex>}</tt> </tt>
+<a name="L155"></a><tt class="py-lineno">155</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L156"></a><tt class="py-lineno">156</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_docindex</tt> <tt class="py-op">=</tt> <tt class="py-name">docindex</tt> </tt>
+<a name="L157"></a><tt class="py-lineno">157</tt>  <tt class="py-line"> </tt>
+<a name="L158"></a><tt class="py-lineno">158</tt>  <tt class="py-line">        <tt class="py-comment"># Initialize instance variables</tt> </tt>
+<a name="L159"></a><tt class="py-lineno">159</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_checks</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L160"></a><tt class="py-lineno">160</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_last_warn</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L161"></a><tt class="py-lineno">161</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_out</tt> <tt class="py-op">=</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">stdout</tt> </tt>
+<a name="L162"></a><tt class="py-lineno">162</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_num_warnings</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+</div><a name="L163"></a><tt class="py-lineno">163</tt>  <tt class="py-line"> </tt>
+<a name="DocChecker.check"></a><div id="DocChecker.check-def"><a name="L164"></a><tt class="py-lineno">164</tt> <a class="py-toggle" href="#" id="DocChecker.check-toggle" onclick="return toggle('DocChecker.check');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.checker.DocChecker-class.html#check">check</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-param">check_set [...]
+</div><div id="DocChecker.check-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="DocChecker.check-expanded"><a name="L165"></a><tt class="py-lineno">165</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L166"></a><tt class="py-lineno">166</tt>  <tt class="py-line"><tt class="py-docstring">        Run the specified checks on the documentation of the objects</tt> </tt>
+<a name="L167"></a><tt class="py-lineno">167</tt>  <tt class="py-line"><tt class="py-docstring">        contained by this C{DocChecker}'s C{DocIndex}.  Any errors found</tt> </tt>
+<a name="L168"></a><tt class="py-lineno">168</tt>  <tt class="py-line"><tt class="py-docstring">        are printed to standard out.</tt> </tt>
+<a name="L169"></a><tt class="py-lineno">169</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L170"></a><tt class="py-lineno">170</tt>  <tt class="py-line"><tt class="py-docstring">        @param check_sets: The checks that should be run on the</tt> </tt>
+<a name="L171"></a><tt class="py-lineno">171</tt>  <tt class="py-line"><tt class="py-docstring">            documentation.  This value is constructed by or-ing</tt> </tt>
+<a name="L172"></a><tt class="py-lineno">172</tt>  <tt class="py-line"><tt class="py-docstring">            together the specifiers that indicate which objects should</tt> </tt>
+<a name="L173"></a><tt class="py-lineno">173</tt>  <tt class="py-line"><tt class="py-docstring">            be checked, and which checks should be run.  See the</tt> </tt>
+<a name="L174"></a><tt class="py-lineno">174</tt>  <tt class="py-line"><tt class="py-docstring">            L{module description<checker>} for more information.</tt> </tt>
+<a name="L175"></a><tt class="py-lineno">175</tt>  <tt class="py-line"><tt class="py-docstring">            If no checks are specified, then a default set of checks</tt> </tt>
+<a name="L176"></a><tt class="py-lineno">176</tt>  <tt class="py-line"><tt class="py-docstring">            will be run.</tt> </tt>
+<a name="L177"></a><tt class="py-lineno">177</tt>  <tt class="py-line"><tt class="py-docstring">        @type check_sets: C{int}</tt> </tt>
+<a name="L178"></a><tt class="py-lineno">178</tt>  <tt class="py-line"><tt class="py-docstring">        @return: True if no problems were found.</tt> </tt>
+<a name="L179"></a><tt class="py-lineno">179</tt>  <tt class="py-line"><tt class="py-docstring">        @rtype: C{boolean}</tt> </tt>
+<a name="L180"></a><tt class="py-lineno">180</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L181"></a><tt class="py-lineno">181</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">check_sets</tt><tt class="py-op">:</tt> </tt>
+<a name="L182"></a><tt class="py-lineno">182</tt>  <tt class="py-line">            <tt class="py-name">check_sets</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt id="link-25" class="py-name" targets="Class epydoc.checker.DocChecker=epydoc.checker.DocChecker-class.html"><a title="epydoc.checker.DocChecker" class="py-name" href="#" onclick="return doclink('link-25', 'DocChecker', 'link-25');">DocChecker</a></tt><tt class="py-op">.</tt><tt id="link-26" class="py-name"><a title="ep [...]
+<a name="L183"></a><tt class="py-lineno">183</tt>  <tt class="py-line">                          <tt id="link-29" class="py-name"><a title="epydoc.checker.DocChecker" class="py-name" href="#" onclick="return doclink('link-29', 'DocChecker', 'link-25');">DocChecker</a></tt><tt class="py-op">.</tt><tt id="link-30" class="py-name"><a title="epydoc.checker.DocChecker.FUNC" class="py-name" href="#" onclick="return doclink('link-30', 'FUNC', 'link-9');">FUNC</a></tt> <tt class="py-op">|</tt> < [...]
+<a name="L184"></a><tt class="py-lineno">184</tt>  <tt class="py-line">                          <tt id="link-33" class="py-name"><a title="epydoc.checker.DocChecker" class="py-name" href="#" onclick="return doclink('link-33', 'DocChecker', 'link-25');">DocChecker</a></tt><tt class="py-op">.</tt><tt id="link-34" class="py-name"><a title="epydoc.checker.DocChecker.DESCR" class="py-name" href="#" onclick="return doclink('link-34', 'DESCR', 'link-18');">DESCR</a></tt><tt class="py-op">,</tt [...]
+<a name="L185"></a><tt class="py-lineno">185</tt>  <tt class="py-line">             </tt>
+<a name="L186"></a><tt class="py-lineno">186</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_warnings</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L187"></a><tt class="py-lineno">187</tt>  <tt class="py-line">        <tt id="link-35" class="py-name" targets="Method epydoc.cli.ConsoleLogger.log()=epydoc.cli.ConsoleLogger-class.html#log,Method epydoc.cli.HTMLLogger.log()=epydoc.cli.HTMLLogger-class.html#log,Method epydoc.gui.GUILogger.log()=epydoc.gui.GUILogger-class.html#log,Module epydoc.log=epydoc.log-module.html,Method epydoc.log.Logger.log()=epydoc.log.Logger-class.html#log,Method epydoc.log.SimpleLogger.log()=epydoc.lo [...]
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-35', 'log', 'link-35');">log</a></tt><tt class="py-op">.</tt><tt id="link-36" class="py-name" targets="Method epydoc.cli.ConsoleLogger.start_progress()=epydoc.cli.ConsoleLogger-class.html#start_progress,Method epydoc.cli.UnifiedProgressConsoleLogger.start_progress()=epydoc.cli.UnifiedProgressConsoleLogger-class.html#start_progress,Method epydoc.gui.GUILogger.start_progress()=epydoc.gui.GUILogger-class.htm [...]
+epydoc.cli.UnifiedProgressConsoleLogger.start_progress
+epydoc.gui.GUILogger.start_progress
+epydoc.log.Logger.start_progress
+epydoc.log.start_progress" class="py-name" href="#" onclick="return doclink('link-36', 'start_progress', 'link-36');">start_progress</a></tt><tt class="py-op">(</tt><tt class="py-string">'Checking docs'</tt><tt class="py-op">)</tt> </tt>
+<a name="L188"></a><tt class="py-lineno">188</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">j</tt><tt class="py-op">,</tt> <tt class="py-name">checks</tt> <tt class="py-keyword">in</tt> <tt class="py-name">enumerate</tt><tt class="py-op">(</tt><tt class="py-name">check_sets</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L189"></a><tt class="py-lineno">189</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-37" class="py-name" targets="Method epydoc.checker.DocChecker._check()=epydoc.checker.DocChecker-class.html#_check,Function epydoc.docstringparser._check()=epydoc.docstringparser-module.html#_check"><a title="epydoc.checker.DocChecker._check
+epydoc.docstringparser._check" class="py-name" href="#" onclick="return doclink('link-37', '_check', 'link-37');">_check</a></tt><tt class="py-op">(</tt><tt class="py-name">checks</tt><tt class="py-op">)</tt> </tt>
+<a name="L190"></a><tt class="py-lineno">190</tt>  <tt class="py-line">        <tt id="link-38" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-38', 'log', 'link-35');">log</a></tt><tt class="py-op">.</tt><tt id="link-39" class="py-name" targets="Method epydoc.cli.ConsoleLogger.end_progress()=epydoc.cli.ConsoleLogger-class.html#end_progress,Method epydoc.cli.UnifiedProgressConsoleLogger.end_progress()=epydoc.cli.UnifiedProgressConsoleLogger-class.html#end_progress,Method epydoc.gui.GUILogger.end_progress()=epydoc.gui.GUILogger-class.html#end_prog [...]
+epydoc.cli.UnifiedProgressConsoleLogger.end_progress
+epydoc.gui.GUILogger.end_progress
+epydoc.log.Logger.end_progress
+epydoc.log.end_progress" class="py-name" href="#" onclick="return doclink('link-39', 'end_progress', 'link-39');">end_progress</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L191"></a><tt class="py-lineno">191</tt>  <tt class="py-line"> </tt>
+<a name="L192"></a><tt class="py-lineno">192</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-op">(</tt><tt id="link-40" class="py-name" targets="Method epydoc.checker.DocChecker.warning()=epydoc.checker.DocChecker-class.html#warning,Function epydoc.log.warning()=epydoc.log-module.html#warning"><a title="epydoc.checker.DocChecker.warning
+epydoc.log.warning" class="py-name" href="#" onclick="return doclink('link-40', 'warning', 'link-40');">warning</a></tt><tt class="py-op">,</tt> <tt class="py-name">docs</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_warnings</tt><tt class="py-op">.</tt><tt class="py-name">items</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L193"></a><tt class="py-lineno">193</tt>  <tt class="py-line">            <tt class="py-name">docs</tt> <tt class="py-op">=</tt> <tt id="link-41" class="py-name" targets="Function epydoc.compat.sorted()=epydoc.compat-module.html#sorted"><a title="epydoc.compat.sorted" class="py-name" href="#" onclick="return doclink('link-41', 'sorted', 'link-41');">sorted</a></tt><tt class="py-op">(</tt><tt class="py-name">docs</tt><tt class="py-op">)</tt> </tt>
+<a name="L194"></a><tt class="py-lineno">194</tt>  <tt class="py-line">            <tt class="py-name">docnames</tt> <tt class="py-op">=</tt> <tt class="py-string">'\n'</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">'  - %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-42" class="py-name" targets="Method epydoc.checker.DocChecker._name()=epydoc.checker.DocChe [...]
+<a name="L195"></a><tt class="py-lineno">195</tt>  <tt class="py-line">            <tt id="link-43" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-43', 'log', 'link-35');">log</a></tt><tt class="py-op">.</tt><tt id="link-44" class="py-name"><a title="epydoc.checker.DocChecker.warning
+epydoc.log.warning" class="py-name" href="#" onclick="return doclink('link-44', 'warning', 'link-40');">warning</a></tt><tt class="py-op">(</tt><tt class="py-string">'%s:\n%s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt id="link-45" class="py-name"><a title="epydoc.checker.DocChecker.warning
+epydoc.log.warning" class="py-name" href="#" onclick="return doclink('link-45', 'warning', 'link-40');">warning</a></tt><tt class="py-op">,</tt> <tt class="py-name">docnames</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L196"></a><tt class="py-lineno">196</tt>  <tt class="py-line"> </tt>
+<a name="DocChecker._check"></a><div id="DocChecker._check-def"><a name="L197"></a><tt class="py-lineno">197</tt> <a class="py-toggle" href="#" id="DocChecker._check-toggle" onclick="return toggle('DocChecker._check');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.checker.DocChecker-class.html#_check">_check</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">checks</tt><tt class="py-op [...]
+</div><div id="DocChecker._check-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="DocChecker._check-expanded"><a name="L198"></a><tt class="py-lineno">198</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_checks</tt> <tt class="py-op">=</tt> <tt class="py-name">checks</tt> </tt>
+<a name="L199"></a><tt class="py-lineno">199</tt>  <tt class="py-line">         </tt>
+<a name="L200"></a><tt class="py-lineno">200</tt>  <tt class="py-line">        <tt class="py-comment"># Get the list of objects to check.</tt> </tt>
+<a name="L201"></a><tt class="py-lineno">201</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">valdocs</tt> <tt class="py-op">=</tt> <tt id="link-46" class="py-name"><a title="epydoc.compat.sorted" class="py-name" href="#" onclick="return doclink('link-46', 'sorted', 'link-41');">sorted</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_docindex</tt><tt class="py-op">.</tt><tt id="link-47" class="py-na [...]
+epydoc.apidoc.reachable_valdocs" class="py-name" href="#" onclick="return doclink('link-47', 'reachable_valdocs', 'link-47');">reachable_valdocs</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L202"></a><tt class="py-lineno">202</tt>  <tt class="py-line">            <tt id="link-48" class="py-name" targets="Variable epydoc.apidoc.ModuleDoc.imports=epydoc.apidoc.ModuleDoc-class.html#imports"><a title="epydoc.apidoc.ModuleDoc.imports" class="py-name" href="#" onclick="return doclink('link-48', 'imports', 'link-48');">imports</a></tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> <tt class="py-name">packages</tt><tt class="py-op">=</tt><tt [...]
+<a name="L203"></a><tt class="py-lineno">203</tt>  <tt class="py-line">            <tt id="link-51" class="py-name" targets="Variable epydoc.apidoc.ClassDoc.subclasses=epydoc.apidoc.ClassDoc-class.html#subclasses"><a title="epydoc.apidoc.ClassDoc.subclasses" class="py-name" href="#" onclick="return doclink('link-51', 'subclasses', 'link-51');">subclasses</a></tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> <tt class="py-name">private</tt> <tt class="py-o [...]
+<a name="L204"></a><tt class="py-lineno">204</tt>  <tt class="py-line">        <tt class="py-name">docs</tt> <tt class="py-op">=</tt> <tt class="py-name">set</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L205"></a><tt class="py-lineno">205</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">d</tt> <tt class="py-keyword">in</tt> <tt class="py-name">valdocs</tt><tt class="py-op">:</tt> </tt>
+<a name="L206"></a><tt class="py-lineno">206</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">d</tt><tt class="py-op">,</tt> <tt id="link-54" class="py-name" targets="Class epydoc.apidoc.GenericValueDoc=epydoc.apidoc.GenericValueDoc-class.html"><a title="epydoc.apidoc.GenericValueDoc" class="py-name" href="#" onclick="return doclink('link-54', 'GenericValueDo [...]
+<a name="L207"></a><tt class="py-lineno">207</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">valdocs</tt><tt class="py-op">:</tt> </tt>
+<a name="L208"></a><tt class="py-lineno">208</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt id="link-55" class="py-name" targets="Class epydoc.apidoc.NamespaceDoc=epydoc.apidoc.NamespaceDoc-class.html"><a title="epydoc.apidoc.NamespaceDoc" class="py-name" href="#" onclick="return doclink('link-55', 'NamespaceDoc', 'link-55');">NamespaceDoc</a></tt><tt  [...]
+<a name="L209"></a><tt class="py-lineno">209</tt>  <tt class="py-line">                <tt class="py-keyword">for</tt> <tt class="py-name">d</tt> <tt class="py-keyword">in</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-56" class="py-name" targets="Variable epydoc.apidoc.NamespaceDoc.variables=epydoc.apidoc.NamespaceDoc-class.html#variables"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-56', 'variables', 'link [...]
+<a name="L210"></a><tt class="py-lineno">210</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">d</tt><tt class="py-op">.</tt><tt id="link-57" class="py-name" targets="Variable epydoc.apidoc.VariableDoc.value=epydoc.apidoc.VariableDoc-class.html#value"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-57', 'value', 'link-57');">value</a> [...]
+<a name="L211"></a><tt class="py-lineno">211</tt>  <tt class="py-line"> </tt>
+<a name="L212"></a><tt class="py-lineno">212</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">i</tt><tt class="py-op">,</tt> <tt class="py-name">doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">enumerate</tt><tt class="py-op">(</tt><tt id="link-59" class="py-name"><a title="epydoc.compat.sorted" class="py-name" href="#" onclick="return doclink('link-59', 'sorted', 'link-41');">sorted</a></tt><tt class="py-op">(</tt><tt class="py-name">docs< [...]
+<a name="L213"></a><tt class="py-lineno">213</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt id="link-60" class="py-name" targets="Class epydoc.apidoc.ModuleDoc=epydoc.apidoc.ModuleDoc-class.html"><a title="epydoc.apidoc.ModuleDoc" class="py-name" href="#" onclick="return doclink('link-60', 'ModuleDoc', 'link-60');">ModuleDoc</a></tt><tt class="py-op">) [...]
+<a name="L214"></a><tt class="py-lineno">214</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-61" class="py-name" targets="Method epydoc.checker.DocChecker._check_module()=epydoc.checker.DocChecker-class.html#_check_module"><a title="epydoc.checker.DocChecker._check_module" class="py-name" href="#" onclick="return doclink('link-61', '_check_module', 'link-61');">_check_module</a></tt><tt class="py-op">(</tt><tt class="py-name">do [...]
+<a name="L215"></a><tt class="py-lineno">215</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt id="link-62" class="py-name" targets="Class epydoc.apidoc.ClassDoc=epydoc.apidoc.ClassDoc-class.html"><a title="epydoc.apidoc.ClassDoc" class="py-name" href="#" onclick="return doclink('link-62', 'ClassDoc', 'link-62');">ClassDoc</a></tt><tt class="py-op">)</t [...]
+<a name="L216"></a><tt class="py-lineno">216</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-63" class="py-name" targets="Method epydoc.checker.DocChecker._check_class()=epydoc.checker.DocChecker-class.html#_check_class"><a title="epydoc.checker.DocChecker._check_class" class="py-name" href="#" onclick="return doclink('link-63', '_check_class', 'link-63');">_check_class</a></tt><tt class="py-op">(</tt><tt class="py-name">doc</tt [...]
+<a name="L217"></a><tt class="py-lineno">217</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt id="link-64" class="py-name" targets="Class epydoc.apidoc.RoutineDoc=epydoc.apidoc.RoutineDoc-class.html"><a title="epydoc.apidoc.RoutineDoc" class="py-name" href="#" onclick="return doclink('link-64', 'RoutineDoc', 'link-64');">RoutineDoc</a></tt><tt class="p [...]
+<a name="L218"></a><tt class="py-lineno">218</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-65" class="py-name" targets="Method epydoc.checker.DocChecker._check_func()=epydoc.checker.DocChecker-class.html#_check_func"><a title="epydoc.checker.DocChecker._check_func" class="py-name" href="#" onclick="return doclink('link-65', '_check_func', 'link-65');">_check_func</a></tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt  [...]
+<a name="L219"></a><tt class="py-lineno">219</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt id="link-66" class="py-name" targets="Class epydoc.apidoc.PropertyDoc=epydoc.apidoc.PropertyDoc-class.html"><a title="epydoc.apidoc.PropertyDoc" class="py-name" href="#" onclick="return doclink('link-66', 'PropertyDoc', 'link-66');">PropertyDoc</a></tt><tt cla [...]
+<a name="L220"></a><tt class="py-lineno">220</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-67" class="py-name" targets="Method epydoc.checker.DocChecker._check_property()=epydoc.checker.DocChecker-class.html#_check_property"><a title="epydoc.checker.DocChecker._check_property" class="py-name" href="#" onclick="return doclink('link-67', '_check_property', 'link-67');">_check_property</a></tt><tt class="py-op">(</tt><tt class="p [...]
+<a name="L221"></a><tt class="py-lineno">221</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt id="link-68" class="py-name" targets="Class epydoc.apidoc.VariableDoc=epydoc.apidoc.VariableDoc-class.html"><a title="epydoc.apidoc.VariableDoc" class="py-name" href="#" onclick="return doclink('link-68', 'VariableDoc', 'link-68');">VariableDoc</a></tt><tt cla [...]
+<a name="L222"></a><tt class="py-lineno">222</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-69" class="py-name" targets="Method epydoc.checker.DocChecker._check_var()=epydoc.checker.DocChecker-class.html#_check_var"><a title="epydoc.checker.DocChecker._check_var" class="py-name" href="#" onclick="return doclink('link-69', '_check_var', 'link-69');">_check_var</a></tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class [...]
+<a name="L223"></a><tt class="py-lineno">223</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L224"></a><tt class="py-lineno">224</tt>  <tt class="py-line">                <tt id="link-70" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-70', 'log', 'link-35');">log</a></tt><tt class="py-op">.</tt><tt id="link-71" class="py-name" targets="Function epydoc.log.error()=epydoc.log-module.html#error"><a title="epydoc.log.error" class="py-name" href="#" onclick="return doclink('link-71', 'error', 'link-71');">error</a></tt><tt class="py-op">(</tt><tt class="py-string">"Don't know how to check %r"</tt> <tt class="py-op">%</tt> <tt class="py-name [...]
+</div><a name="L225"></a><tt class="py-lineno">225</tt>  <tt class="py-line"> </tt>
+<a name="DocChecker._name"></a><div id="DocChecker._name-def"><a name="L226"></a><tt class="py-lineno">226</tt> <a class="py-toggle" href="#" id="DocChecker._name-toggle" onclick="return toggle('DocChecker._name');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.checker.DocChecker-class.html#_name">_name</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">doc</tt><tt class="py-op">)</tt>< [...]
+</div><div id="DocChecker._name-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="DocChecker._name-expanded"><a name="L227"></a><tt class="py-lineno">227</tt>  <tt class="py-line">        <tt id="link-72" class="py-name" targets="Variable epydoc.apidoc.VariableDoc.name=epydoc.apidoc.VariableDoc-class.html#name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-72', 'name', 'link-72');">name</a></tt> <tt class="py-op [...]
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-73', 'canonical_name', 'link-73');">canonical_name</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L228"></a><tt class="py-lineno">228</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt id="link-74" class="py-name"><a title="epydoc.apidoc.RoutineDoc" class="py-name" href="#" onclick="return doclink('link-74', 'RoutineDoc', 'link-64');">RoutineDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt id="link-75" class="py-name"><a title="epy [...]
+<a name="L229"></a><tt class="py-lineno">229</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-76" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-76', 'name', 'link-72');">name</a></tt> </tt>
+</div><a name="L230"></a><tt class="py-lineno">230</tt>  <tt class="py-line"> </tt>
+<a name="DocChecker._check_basic"></a><div id="DocChecker._check_basic-def"><a name="L231"></a><tt class="py-lineno">231</tt> <a class="py-toggle" href="#" id="DocChecker._check_basic-toggle" onclick="return toggle('DocChecker._check_basic');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.checker.DocChecker-class.html#_check_basic">_check_basic</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="p [...]
+</div><div id="DocChecker._check_basic-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="DocChecker._check_basic-expanded"><a name="L232"></a><tt class="py-lineno">232</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L233"></a><tt class="py-lineno">233</tt>  <tt class="py-line"><tt class="py-docstring">        Check the description, author, version, and see-also fields of</tt> </tt>
+<a name="L234"></a><tt class="py-lineno">234</tt>  <tt class="py-line"><tt class="py-docstring">        C{doc}.  This is used as a helper function by L{_check_module},</tt> </tt>
+<a name="L235"></a><tt class="py-lineno">235</tt>  <tt class="py-line"><tt class="py-docstring">        L{_check_class}, and L{_check_func}.</tt> </tt>
+<a name="L236"></a><tt class="py-lineno">236</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L237"></a><tt class="py-lineno">237</tt>  <tt class="py-line"><tt class="py-docstring">        @param doc: The documentation that should be checked.</tt> </tt>
+<a name="L238"></a><tt class="py-lineno">238</tt>  <tt class="py-line"><tt class="py-docstring">        @type doc: L{APIDoc}</tt> </tt>
+<a name="L239"></a><tt class="py-lineno">239</tt>  <tt class="py-line"><tt class="py-docstring">        @rtype: C{None}</tt> </tt>
+<a name="L240"></a><tt class="py-lineno">240</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L241"></a><tt class="py-lineno">241</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_checks</tt> <tt class="py-op">&</tt> <tt id="link-77" class="py-name"><a title="epydoc.checker.DocChecker" class="py-name" href="#" onclick="return doclink('link-77', 'DocChecker', 'link-25');">DocChecker</a></tt><tt class="py-op">.</tt><tt id="link-78" cl [...]
+<a name="L242"></a><tt class="py-lineno">242</tt>  <tt class="py-line">            <tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-79" class="py-name" targets="Variable epydoc.apidoc.APIDoc.descr=epydoc.apidoc.APIDoc-class.html#descr,Variable epydoc.cli.descr=epydoc.cli-module.html#descr,Method epydoc.docwriter.html.HTMLWriter.descr()=epydoc.docwriter.html.HTMLWriter-class.html#descr,Method epydoc.markup.ParseError.descr()=epydoc.markup.ParseError [...]
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-79', 'descr', 'link-79');">descr</a></tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-80" class="py-name" targets="Variable epydoc.apidoc.UNKNOWN=epydoc.apidoc-module.html#UNKNOWN"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-80', 'UNKNOWN', 'link-80');">UNKNOWN</a></tt> [...]
+<a name="L243"></a><tt class="py-lineno">243</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-81" class="py-name" targets="Variable epydoc.apidoc.APIDoc.docstring=epydoc.apidoc.APIDoc-class.html#docstring"><a title="epydoc.apidoc.APIDoc.docstring" class="py-name" href="#" onclick="return doclink('link-81', 'docstring', 'link-81');">docstring</a></tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt [...]
+<a name="L244"></a><tt class="py-lineno">244</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-83" class="py-name"><a title="epydoc.checker.DocChecker.warning
+epydoc.log.warning" class="py-name" href="#" onclick="return doclink('link-83', 'warning', 'link-40');">warning</a></tt><tt class="py-op">(</tt><tt class="py-string">'Undocumented'</tt><tt class="py-op">,</tt> <tt class="py-name">doc</tt><tt class="py-op">)</tt> </tt>
+<a name="L245"></a><tt class="py-lineno">245</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L246"></a><tt class="py-lineno">246</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-84" class="py-name"><a title="epydoc.checker.DocChecker.warning
+epydoc.log.warning" class="py-name" href="#" onclick="return doclink('link-84', 'warning', 'link-40');">warning</a></tt><tt class="py-op">(</tt><tt class="py-string">'No description'</tt><tt class="py-op">,</tt> <tt class="py-name">doc</tt><tt class="py-op">)</tt> </tt>
+<a name="L247"></a><tt class="py-lineno">247</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_checks</tt> <tt class="py-op">&</tt> <tt id="link-85" class="py-name"><a title="epydoc.checker.DocChecker" class="py-name" href="#" onclick="return doclink('link-85', 'DocChecker', 'link-25');">DocChecker</a></tt><tt class="py-op">.</tt><tt id="link-86" class="py-name"><a title="epydoc.checker.DocChecke [...]
+<a name="L248"></a><tt class="py-lineno">248</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt id="link-87" class="py-name" targets="Method epydoc.markup.Field.tag()=epydoc.markup.Field-class.html#tag"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-87', 'tag', 'link-87');">tag</a></tt><tt class="py-op">,</tt> <tt id="link-88" class="py-name" targets="Method epydoc.markup.Field.arg()=epydoc.markup.Field-class.html#arg"><a  [...]
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-89', 'descr', 'link-79');">descr</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-90" class="py-name" targets="Variable epydoc.apidoc.APIDoc.metadata=epydoc.apidoc.APIDoc-class.html#metadata"><a title="epydoc.apidoc.APIDoc.metadata" class="py-name" href="#" onclick="return doclink('link-90', 'metadata', 'link-90');">metadata</a></tt>< [...]
+<a name="L249"></a><tt class="py-lineno">249</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-string">'author'</tt> <tt class="py-op">==</tt> <tt id="link-91" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-91', 'tag', 'link-87');">tag</a></tt><tt class="py-op">:</tt> <tt class="py-keyword">break</tt> </tt>
+<a name="L250"></a><tt class="py-lineno">250</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L251"></a><tt class="py-lineno">251</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-92" class="py-name"><a title="epydoc.checker.DocChecker.warning
+epydoc.log.warning" class="py-name" href="#" onclick="return doclink('link-92', 'warning', 'link-40');">warning</a></tt><tt class="py-op">(</tt><tt class="py-string">'No authors'</tt><tt class="py-op">,</tt> <tt class="py-name">doc</tt><tt class="py-op">)</tt> </tt>
+<a name="L252"></a><tt class="py-lineno">252</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_checks</tt> <tt class="py-op">&</tt> <tt id="link-93" class="py-name"><a title="epydoc.checker.DocChecker" class="py-name" href="#" onclick="return doclink('link-93', 'DocChecker', 'link-25');">DocChecker</a></tt><tt class="py-op">.</tt><tt id="link-94" class="py-name"><a title="epydoc.checker.DocChecke [...]
+<a name="L253"></a><tt class="py-lineno">253</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt id="link-95" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-95', 'tag', 'link-87');">tag</a></tt><tt class="py-op">,</tt> <tt id="link-96" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-96', 'arg', 'link-88');">arg</a></tt><tt class="py-op">,</tt> <tt id= [...]
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-97', 'descr', 'link-79');">descr</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-98" class="py-name"><a title="epydoc.apidoc.APIDoc.metadata" class="py-name" href="#" onclick="return doclink('link-98', 'metadata', 'link-90');">metadata</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L254"></a><tt class="py-lineno">254</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-string">'version'</tt> <tt class="py-op">==</tt> <tt id="link-99" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-99', 'tag', 'link-87');">tag</a></tt><tt class="py-op">:</tt> <tt class="py-keyword">break</tt> </tt>
+<a name="L255"></a><tt class="py-lineno">255</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L256"></a><tt class="py-lineno">256</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-100" class="py-name"><a title="epydoc.checker.DocChecker.warning
+epydoc.log.warning" class="py-name" href="#" onclick="return doclink('link-100', 'warning', 'link-40');">warning</a></tt><tt class="py-op">(</tt><tt class="py-string">'No version'</tt><tt class="py-op">,</tt> <tt class="py-name">doc</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L257"></a><tt class="py-lineno">257</tt>  <tt class="py-line">             </tt>
+<a name="DocChecker._check_module"></a><div id="DocChecker._check_module-def"><a name="L258"></a><tt class="py-lineno">258</tt> <a class="py-toggle" href="#" id="DocChecker._check_module-toggle" onclick="return toggle('DocChecker._check_module');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.checker.DocChecker-class.html#_check_module">_check_module</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt cl [...]
+</div><div id="DocChecker._check_module-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="DocChecker._check_module-expanded"><a name="L259"></a><tt class="py-lineno">259</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L260"></a><tt class="py-lineno">260</tt>  <tt class="py-line"><tt class="py-docstring">        Run checks on the module whose APIDoc is C{doc}.</tt> </tt>
+<a name="L261"></a><tt class="py-lineno">261</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt>
+<a name="L262"></a><tt class="py-lineno">262</tt>  <tt class="py-line"><tt class="py-docstring">        @param doc: The APIDoc of the module to check.</tt> </tt>
+<a name="L263"></a><tt class="py-lineno">263</tt>  <tt class="py-line"><tt class="py-docstring">        @type doc: L{APIDoc}</tt> </tt>
+<a name="L264"></a><tt class="py-lineno">264</tt>  <tt class="py-line"><tt class="py-docstring">        @rtype: C{None}</tt> </tt>
+<a name="L265"></a><tt class="py-lineno">265</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L266"></a><tt class="py-lineno">266</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_checks</tt> <tt class="py-op">&</tt> <tt id="link-101" class="py-name"><a title="epydoc.checker.DocChecker" class="py-name" href="#" onclick="return doclink('link-101', 'DocChecker', 'link-25');">DocChecker</a></tt><tt class="py-op">.</tt><tt id="link-102" class="py-name"><a title="epydoc.checker.DocChe [...]
+<a name="L267"></a><tt class="py-lineno">267</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-103" class="py-name" targets="Method epydoc.checker.DocChecker._check_basic()=epydoc.checker.DocChecker-class.html#_check_basic"><a title="epydoc.checker.DocChecker._check_basic" class="py-name" href="#" onclick="return doclink('link-103', '_check_basic', 'link-103');">_check_basic</a></tt><tt class="py-op">(</tt><tt class="py-name">doc</tt> [...]
+</div><a name="L268"></a><tt class="py-lineno">268</tt>  <tt class="py-line">         </tt>
+<a name="DocChecker._check_class"></a><div id="DocChecker._check_class-def"><a name="L269"></a><tt class="py-lineno">269</tt> <a class="py-toggle" href="#" id="DocChecker._check_class-toggle" onclick="return toggle('DocChecker._check_class');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.checker.DocChecker-class.html#_check_class">_check_class</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="p [...]
+</div><div id="DocChecker._check_class-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="DocChecker._check_class-expanded"><a name="L270"></a><tt class="py-lineno">270</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L271"></a><tt class="py-lineno">271</tt>  <tt class="py-line"><tt class="py-docstring">        Run checks on the class whose APIDoc is C{doc}.</tt> </tt>
+<a name="L272"></a><tt class="py-lineno">272</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt>
+<a name="L273"></a><tt class="py-lineno">273</tt>  <tt class="py-line"><tt class="py-docstring">        @param doc: The APIDoc of the class to check.</tt> </tt>
+<a name="L274"></a><tt class="py-lineno">274</tt>  <tt class="py-line"><tt class="py-docstring">        @type doc: L{APIDoc}</tt> </tt>
+<a name="L275"></a><tt class="py-lineno">275</tt>  <tt class="py-line"><tt class="py-docstring">        @rtype: C{None}</tt> </tt>
+<a name="L276"></a><tt class="py-lineno">276</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L277"></a><tt class="py-lineno">277</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_checks</tt> <tt class="py-op">&</tt> <tt id="link-104" class="py-name"><a title="epydoc.checker.DocChecker" class="py-name" href="#" onclick="return doclink('link-104', 'DocChecker', 'link-25');">DocChecker</a></tt><tt class="py-op">.</tt><tt id="link-105" class="py-name"><a title="epydoc.checker.DocChe [...]
+<a name="L278"></a><tt class="py-lineno">278</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-106" class="py-name"><a title="epydoc.checker.DocChecker._check_basic" class="py-name" href="#" onclick="return doclink('link-106', '_check_basic', 'link-103');">_check_basic</a></tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L279"></a><tt class="py-lineno">279</tt>  <tt class="py-line"> </tt>
+<a name="DocChecker._check_property"></a><div id="DocChecker._check_property-def"><a name="L280"></a><tt class="py-lineno">280</tt> <a class="py-toggle" href="#" id="DocChecker._check_property-toggle" onclick="return toggle('DocChecker._check_property');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.checker.DocChecker-class.html#_check_property">_check_property</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">, [...]
+</div><div id="DocChecker._check_property-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="DocChecker._check_property-expanded"><a name="L281"></a><tt class="py-lineno">281</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_checks</tt> <tt class="py-op">&</tt> <tt id="link-107" class="py-name"><a title="epydoc.checker.DocChecker" class="py-name" href="#" onclick="return  [...]
+<a name="L282"></a><tt class="py-lineno">282</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-109" class="py-name"><a title="epydoc.checker.DocChecker._check_basic" class="py-name" href="#" onclick="return doclink('link-109', '_check_basic', 'link-103');">_check_basic</a></tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L283"></a><tt class="py-lineno">283</tt>  <tt class="py-line"> </tt>
+<a name="DocChecker._check_var"></a><div id="DocChecker._check_var-def"><a name="L284"></a><tt class="py-lineno">284</tt> <a class="py-toggle" href="#" id="DocChecker._check_var-toggle" onclick="return toggle('DocChecker._check_var');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.checker.DocChecker-class.html#_check_var">_check_var</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">doc [...]
+</div><div id="DocChecker._check_var-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="DocChecker._check_var-expanded"><a name="L285"></a><tt class="py-lineno">285</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L286"></a><tt class="py-lineno">286</tt>  <tt class="py-line"><tt class="py-docstring">        Run checks on the variable whose documentation is C{var} and</tt> </tt>
+<a name="L287"></a><tt class="py-lineno">287</tt>  <tt class="py-line"><tt class="py-docstring">        whose name is C{name}.</tt> </tt>
+<a name="L288"></a><tt class="py-lineno">288</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt>
+<a name="L289"></a><tt class="py-lineno">289</tt>  <tt class="py-line"><tt class="py-docstring">        @param doc: The documentation for the variable to check.</tt> </tt>
+<a name="L290"></a><tt class="py-lineno">290</tt>  <tt class="py-line"><tt class="py-docstring">        @type doc: L{APIDoc}</tt> </tt>
+<a name="L291"></a><tt class="py-lineno">291</tt>  <tt class="py-line"><tt class="py-docstring">        @rtype: C{None}</tt> </tt>
+<a name="L292"></a><tt class="py-lineno">292</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L293"></a><tt class="py-lineno">293</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_checks</tt> <tt class="py-op">&</tt> <tt id="link-110" class="py-name"><a title="epydoc.checker.DocChecker" class="py-name" href="#" onclick="return doclink('link-110', 'DocChecker', 'link-25');">DocChecker</a></tt><tt class="py-op">.</tt><tt id="link-111" class="py-name"><a title="epydoc.checker.DocChe [...]
+<a name="L294"></a><tt class="py-lineno">294</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_checks</tt> <tt class="py-op">&</tt> <tt class="py-op">(</tt><tt id="link-112" class="py-name"><a title="epydoc.checker.DocChecker" class="py-name" href="#" onclick="return doclink('link-112', 'DocChecker', 'link-25');">DocChecker</a></tt><tt class="py-op">.</tt><tt id="link- [...]
+<a name="L295"></a><tt class="py-lineno">295</tt>  <tt class="py-line">                <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-116" class="py-name"><a title="epydoc.apidoc.APIDoc.descr
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-116', 'descr', 'link-79');">descr</a></tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-117" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-117', 'UNKNOWN', 'link-80');">UNKNOWN</a></tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L296"></a><tt class="py-lineno">296</tt>  <tt class="py-line">                <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-118" class="py-name" targets="Variable epydoc.apidoc.PropertyDoc.type_descr=epydoc.apidoc.PropertyDoc-class.html#type_descr,Variable epydoc.apidoc.VariableDoc.type_descr=epydoc.apidoc.VariableDoc-class.html#type_descr,Method epydoc.docwriter.html.HTMLWriter.type_descr()=epydoc.docwriter.html.HTMLWriter-class.html#type_descr"><a title="epy [...]
+epydoc.apidoc.VariableDoc.type_descr
+epydoc.docwriter.html.HTMLWriter.type_descr" class="py-name" href="#" onclick="return doclink('link-118', 'type_descr', 'link-118');">type_descr</a></tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-119" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-119', 'UNKNOWN', 'link-80');">UNKNOWN</a></tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L297"></a><tt class="py-lineno">297</tt>  <tt class="py-line">                <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-120" class="py-name"><a title="epydoc.apidoc.APIDoc.docstring" class="py-name" href="#" onclick="return doclink('link-120', 'docstring', 'link-81');">docstring</a></tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-121" class="py-name"><a title="epydoc.apidoc.UNKN [...]
+<a name="L298"></a><tt class="py-lineno">298</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-122" class="py-name"><a title="epydoc.checker.DocChecker.warning
+epydoc.log.warning" class="py-name" href="#" onclick="return doclink('link-122', 'warning', 'link-40');">warning</a></tt><tt class="py-op">(</tt><tt class="py-string">'Undocumented'</tt><tt class="py-op">,</tt> <tt class="py-name">doc</tt><tt class="py-op">)</tt> </tt>
+<a name="L299"></a><tt class="py-lineno">299</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L300"></a><tt class="py-lineno">300</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_checks</tt> <tt class="py-op">&</tt> <tt id="link-123" class="py-name"><a title="epydoc.checker.DocChecker" class="py-name" href="#" onclick="return doclink('link-123', 'DocChecker', 'link-25');">DocChecker</a></tt><tt class="py-op">.</tt><tt id="link-124" class="py-name" [...]
+<a name="L301"></a><tt class="py-lineno">301</tt>  <tt class="py-line">                    <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-125" class="py-name"><a title="epydoc.apidoc.APIDoc.descr
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-125', 'descr', 'link-79');">descr</a></tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-126" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-126', 'UNKNOWN', 'link-80');">UNKNOWN</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L302"></a><tt class="py-lineno">302</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-127" class="py-name"><a title="epydoc.checker.DocChecker.warning
+epydoc.log.warning" class="py-name" href="#" onclick="return doclink('link-127', 'warning', 'link-40');">warning</a></tt><tt class="py-op">(</tt><tt class="py-string">'No description'</tt><tt class="py-op">,</tt> <tt class="py-name">doc</tt><tt class="py-op">)</tt> </tt>
+<a name="L303"></a><tt class="py-lineno">303</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_checks</tt> <tt class="py-op">&</tt> <tt id="link-128" class="py-name"><a title="epydoc.checker.DocChecker" class="py-name" href="#" onclick="return doclink('link-128', 'DocChecker', 'link-25');">DocChecker</a></tt><tt class="py-op">.</tt><tt id="link-129" class="py-name" [...]
+<a name="L304"></a><tt class="py-lineno">304</tt>  <tt class="py-line">                    <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-130" class="py-name"><a title="epydoc.apidoc.PropertyDoc.type_descr
+epydoc.apidoc.VariableDoc.type_descr
+epydoc.docwriter.html.HTMLWriter.type_descr" class="py-name" href="#" onclick="return doclink('link-130', 'type_descr', 'link-118');">type_descr</a></tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-131" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-131', 'UNKNOWN', 'link-80');">UNKNOWN</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py [...]
+<a name="L305"></a><tt class="py-lineno">305</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-132" class="py-name"><a title="epydoc.checker.DocChecker.warning
+epydoc.log.warning" class="py-name" href="#" onclick="return doclink('link-132', 'warning', 'link-40');">warning</a></tt><tt class="py-op">(</tt><tt class="py-string">'No type information'</tt><tt class="py-op">,</tt> <tt class="py-name">doc</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L306"></a><tt class="py-lineno">306</tt>  <tt class="py-line">             </tt>
+<a name="DocChecker._check_func"></a><div id="DocChecker._check_func-def"><a name="L307"></a><tt class="py-lineno">307</tt> <a class="py-toggle" href="#" id="DocChecker._check_func-toggle" onclick="return toggle('DocChecker._check_func');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.checker.DocChecker-class.html#_check_func">_check_func</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-para [...]
+</div><div id="DocChecker._check_func-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="DocChecker._check_func-expanded"><a name="L308"></a><tt class="py-lineno">308</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L309"></a><tt class="py-lineno">309</tt>  <tt class="py-line"><tt class="py-docstring">        Run checks on the function whose APIDoc is C{doc}.</tt> </tt>
+<a name="L310"></a><tt class="py-lineno">310</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt>
+<a name="L311"></a><tt class="py-lineno">311</tt>  <tt class="py-line"><tt class="py-docstring">        @param doc: The APIDoc of the function to check.</tt> </tt>
+<a name="L312"></a><tt class="py-lineno">312</tt>  <tt class="py-line"><tt class="py-docstring">        @type doc: L{APIDoc}</tt> </tt>
+<a name="L313"></a><tt class="py-lineno">313</tt>  <tt class="py-line"><tt class="py-docstring">        @rtype: C{None}</tt> </tt>
+<a name="L314"></a><tt class="py-lineno">314</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L315"></a><tt class="py-lineno">315</tt>  <tt class="py-line">        <tt id="link-133" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-133', 'name', 'link-72');">name</a></tt> <tt class="py-op">=</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-134" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-134', 'canonical_name', 'link-73');">canonical_name</a></tt> </tt>
+<a name="L316"></a><tt class="py-lineno">316</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_checks</tt> <tt class="py-op">&</tt> <tt id="link-135" class="py-name"><a title="epydoc.checker.DocChecker" class="py-name" href="#" onclick="return doclink('link-135', 'DocChecker', 'link-25');">DocChecker</a></tt><tt class="py-op">.</tt><tt id="link-136" class="py-name"><a titl [...]
+<a name="L317"></a><tt class="py-lineno">317</tt>  <tt class="py-line">            <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-137" class="py-name"><a title="epydoc.apidoc.APIDoc.docstring" class="py-name" href="#" onclick="return doclink('link-137', 'docstring', 'link-81');">docstring</a></tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-138" class="py-name"><a title="epydoc.apidoc.UNKNOWN" [...]
+<a name="L318"></a><tt class="py-lineno">318</tt>  <tt class="py-line">            <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-139" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-139', 'canonical_name', 'link-73');">canonical_name</a></tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt id="link-140" class="py-name"><a title="epydoc.checker._NO_DOCS" class="py-name" href="#" onclick="return doclink('link-140', '_NO_DOCS', 'link-3');">_NO_DOCS</a></tt> [...]
+<a name="L319"></a><tt class="py-lineno">319</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-141" class="py-name"><a title="epydoc.checker.DocChecker.warning
+epydoc.log.warning" class="py-name" href="#" onclick="return doclink('link-141', 'warning', 'link-40');">warning</a></tt><tt class="py-op">(</tt><tt class="py-string">'Undocumented'</tt><tt class="py-op">,</tt> <tt class="py-name">doc</tt><tt class="py-op">)</tt> </tt>
+<a name="L320"></a><tt class="py-lineno">320</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> </tt>
+<a name="L321"></a><tt class="py-lineno">321</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_checks</tt> <tt class="py-op">&</tt> <tt id="link-142" class="py-name"><a title="epydoc.checker.DocChecker" class="py-name" href="#" onclick="return doclink('link-142', 'DocChecker', 'link-25');">DocChecker</a></tt><tt class="py-op">.</tt><tt id="link-143" class="py-name"><a titl [...]
+<a name="L322"></a><tt class="py-lineno">322</tt>  <tt class="py-line">            <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-144" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-144', 'canonical_name', 'link-73');">canonical_name</a></tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt id="link-145" class="py-name"><a title="epydoc.checker._NO_BASIC" class="py-name" href="#" onclick="return doclink('link-145', '_NO_BASIC', 'link-4');">_NO_BASIC</a></ [...]
+<a name="L323"></a><tt class="py-lineno">323</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-146" class="py-name"><a title="epydoc.checker.DocChecker._check_basic" class="py-name" href="#" onclick="return doclink('link-146', '_check_basic', 'link-103');">_check_basic</a></tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">)</tt> </tt>
+<a name="L324"></a><tt class="py-lineno">324</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_checks</tt> <tt class="py-op">&</tt> <tt id="link-147" class="py-name"><a title="epydoc.checker.DocChecker" class="py-name" href="#" onclick="return doclink('link-147', 'DocChecker', 'link-25');">DocChecker</a></tt><tt class="py-op">.</tt><tt id="link-148" class="py-name"><a titl [...]
+<a name="L325"></a><tt class="py-lineno">325</tt>  <tt class="py-line">            <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-149" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-149', 'canonical_name', 'link-73');">canonical_name</a></tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt id="link-150" class="py-name"><a title="epydoc.checker._NO_RETURN" class="py-name" href="#" onclick="return doclink('link-150', '_NO_RETURN', 'link-5');">_NO_RETURN</a [...]
+<a name="L326"></a><tt class="py-lineno">326</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-151" class="py-name" targets="Variable epydoc.apidoc.RoutineDoc.return_type=epydoc.apidoc.RoutineDoc-class.html#return_type,Method epydoc.docwriter.html.HTMLWriter.return_type()=epydoc.docwriter.html.HTMLWriter-class.html#return_type"><a title="epydoc.apidoc.RoutineDoc.return_type
+epydoc.docwriter.html.HTMLWriter.return_type" class="py-name" href="#" onclick="return doclink('link-151', 'return_type', 'link-151');">return_type</a></tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-152" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-152', 'UNKNOWN', 'link-80');">UNKNOWN</a></tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L327"></a><tt class="py-lineno">327</tt>  <tt class="py-line">                <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-153" class="py-name" targets="Variable epydoc.apidoc.RoutineDoc.return_descr=epydoc.apidoc.RoutineDoc-class.html#return_descr,Method epydoc.docwriter.html.HTMLWriter.return_descr()=epydoc.docwriter.html.HTMLWriter-class.html#return_descr"><a title="epydoc.apidoc.RoutineDoc.return_descr
+epydoc.docwriter.html.HTMLWriter.return_descr" class="py-name" href="#" onclick="return doclink('link-153', 'return_descr', 'link-153');">return_descr</a></tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-154" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-154', 'UNKNOWN', 'link-80');">UNKNOWN</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt cla [...]
+<a name="L328"></a><tt class="py-lineno">328</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-155" class="py-name"><a title="epydoc.checker.DocChecker.warning
+epydoc.log.warning" class="py-name" href="#" onclick="return doclink('link-155', 'warning', 'link-40');">warning</a></tt><tt class="py-op">(</tt><tt class="py-string">'No return descr'</tt><tt class="py-op">,</tt> <tt class="py-name">doc</tt><tt class="py-op">)</tt> </tt>
+<a name="L329"></a><tt class="py-lineno">329</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_checks</tt> <tt class="py-op">&</tt> <tt id="link-156" class="py-name"><a title="epydoc.checker.DocChecker" class="py-name" href="#" onclick="return doclink('link-156', 'DocChecker', 'link-25');">DocChecker</a></tt><tt class="py-op">.</tt><tt id="link-157" class="py-name"><a titl [...]
+<a name="L330"></a><tt class="py-lineno">330</tt>  <tt class="py-line">            <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-158" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-158', 'canonical_name', 'link-73');">canonical_name</a></tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt id="link-159" class="py-name"><a title="epydoc.checker._NO_PARAM" class="py-name" href="#" onclick="return doclink('link-159', '_NO_PARAM', 'link-6');">_NO_PARAM</a></ [...]
+<a name="L331"></a><tt class="py-lineno">331</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-160" class="py-name" targets="Variable epydoc.apidoc.RoutineDoc.arg_descrs=epydoc.apidoc.RoutineDoc-class.html#arg_descrs"><a title="epydoc.apidoc.RoutineDoc.arg_descrs" class="py-name" href="#" onclick="return doclink('link-160', 'arg_descrs', 'link-160');">arg_descrs</a></tt> <tt class="py-keyword">in</tt> <tt [...]
+<a name="L332"></a><tt class="py-lineno">332</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-162" class="py-name"><a title="epydoc.checker.DocChecker.warning
+epydoc.log.warning" class="py-name" href="#" onclick="return doclink('link-162', 'warning', 'link-40');">warning</a></tt><tt class="py-op">(</tt><tt class="py-string">'No argument info'</tt><tt class="py-op">,</tt> <tt class="py-name">doc</tt><tt class="py-op">)</tt> </tt>
+<a name="L333"></a><tt class="py-lineno">333</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L334"></a><tt class="py-lineno">334</tt>  <tt class="py-line">                <tt class="py-name">args_with_descr</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L335"></a><tt class="py-lineno">335</tt>  <tt class="py-line">                <tt class="py-keyword">for</tt> <tt id="link-163" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-163', 'arg', 'link-88');">arg</a></tt><tt class="py-op">,</tt> <tt id="link-164" class="py-name"><a title="epydoc.apidoc.APIDoc.descr
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-164', 'descr', 'link-79');">descr</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-165" class="py-name"><a title="epydoc.apidoc.RoutineDoc.arg_descrs" class="py-name" href="#" onclick="return doclink('link-165', 'arg_descrs', 'link-160');">arg_descrs</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L336"></a><tt class="py-lineno">336</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-166" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-166', 'arg', 'link-88');">arg</a></tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L337"></a><tt class="py-lineno">337</tt>  <tt class="py-line">                        <tt class="py-name">args_with_descr</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-167" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-167', 'arg', 'link-88');">arg</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L338"></a><tt class="py-lineno">338</tt>  <tt class="py-line">                    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L339"></a><tt class="py-lineno">339</tt>  <tt class="py-line">                        <tt class="py-name">args_with_descr</tt> <tt class="py-op">+=</tt> <tt id="link-168" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-168', 'arg', 'link-88');">arg</a></tt> </tt>
+<a name="L340"></a><tt class="py-lineno">340</tt>  <tt class="py-line">                <tt class="py-keyword">for</tt> <tt class="py-name">posarg</tt> <tt class="py-keyword">in</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-169" class="py-name" targets="Variable epydoc.apidoc.RoutineDoc.posargs=epydoc.apidoc.RoutineDoc-class.html#posargs"><a title="epydoc.apidoc.RoutineDoc.posargs" class="py-name" href="#" onclick="return doclink('link-169', 'posargs', 'link-169'); [...]
+<a name="L341"></a><tt class="py-lineno">341</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_checks</tt> <tt class="py-op">&</tt> <tt id="link-170" class="py-name"><a title="epydoc.checker.DocChecker" class="py-name" href="#" onclick="return doclink('link-170', 'DocChecker', 'link-25');">DocChecker</a></tt><tt class="py-op">.</tt><tt id="link-171" class="py-n [...]
+<a name="L342"></a><tt class="py-lineno">342</tt>  <tt class="py-line">                        <tt class="py-name">posarg</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">args_with_descr</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L343"></a><tt class="py-lineno">343</tt>  <tt class="py-line">                        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-172" class="py-name"><a title="epydoc.checker.DocChecker.warning
+epydoc.log.warning" class="py-name" href="#" onclick="return doclink('link-172', 'warning', 'link-40');">warning</a></tt><tt class="py-op">(</tt><tt class="py-string">'Argument(s) not described'</tt><tt class="py-op">,</tt> <tt class="py-name">doc</tt><tt class="py-op">)</tt> </tt>
+<a name="L344"></a><tt class="py-lineno">344</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_checks</tt> <tt class="py-op">&</tt> <tt id="link-173" class="py-name"><a title="epydoc.checker.DocChecker" class="py-name" href="#" onclick="return doclink('link-173', 'DocChecker', 'link-25');">DocChecker</a></tt><tt class="py-op">.</tt><tt id="link-174" class="py-n [...]
+<a name="L345"></a><tt class="py-lineno">345</tt>  <tt class="py-line">                        <tt class="py-name">posarg</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-175" class="py-name" targets="Variable epydoc.apidoc.RoutineDoc.arg_types=epydoc.apidoc.RoutineDoc-class.html#arg_types"><a title="epydoc.apidoc.RoutineDoc.arg_types" class="py-name" href="#" onclick="return doclink('link-175', 'arg_type [...]
+<a name="L346"></a><tt class="py-lineno">346</tt>  <tt class="py-line">                        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-176" class="py-name"><a title="epydoc.checker.DocChecker.warning
+epydoc.log.warning" class="py-name" href="#" onclick="return doclink('link-176', 'warning', 'link-40');">warning</a></tt><tt class="py-op">(</tt><tt class="py-string">'Argument type(s) not described'</tt><tt class="py-op">,</tt> <tt class="py-name">doc</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L347"></a><tt class="py-lineno">347</tt>  <tt class="py-line"> </tt>
+<a name="DocChecker.warning"></a><div id="DocChecker.warning-def"><a name="L348"></a><tt class="py-lineno">348</tt> <a class="py-toggle" href="#" id="DocChecker.warning-toggle" onclick="return toggle('DocChecker.warning');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.checker.DocChecker-class.html#warning">warning</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">msg</tt><tt class="py [...]
+</div><div id="DocChecker.warning-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="DocChecker.warning-expanded"><a name="L349"></a><tt class="py-lineno">349</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_warnings</tt><tt class="py-op">.</tt><tt class="py-name">setdefault</tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">,</tt><tt class="py-name">set</tt><tt class="py-op">(</tt> [...]
+</div></div><a name="L350"></a><tt class="py-lineno">350</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:09:52 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.checker.DocChecker-class.html b/doc/api/epydoc.checker.DocChecker-class.html
new file mode 100644
index 0000000..ade702d
--- /dev/null
+++ b/doc/api/epydoc.checker.DocChecker-class.html
@@ -0,0 +1,781 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.checker.DocChecker</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.checker-module.html">Module checker</a> ::
+        Class DocChecker
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.checker.DocChecker-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class DocChecker</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.checker-pysrc.html#DocChecker">source code</a></span></p>
+<p>Documentation completeness checker.  <code>DocChecker</code> can be 
+  used to check that specified classes of objects are documented.  To check
+  the documentation for a group of objects, you should create a 
+  <code>DocChecker</code> from a <a 
+  href="epydoc.apidoc.DocIndex-class.html" class="link">DocIndex</a> that 
+  documents those objects; and then use the <a 
+  href="epydoc.checker.DocChecker-class.html#check" class="link">check</a> 
+  method to run specified checks on the objects' documentation.</p>
+  <p>What checks are run, and what objects they are run on, are specified 
+  by the constants defined by <code>DocChecker</code>.  These constants are
+  divided into three groups.</p>
+  <ul>
+    <li>
+      Type specifiers indicate what type of objects should be checked: <a 
+      href="epydoc.checker.DocChecker-class.html#MODULE" 
+      class="link">MODULE</a>; <a 
+      href="epydoc.checker.DocChecker-class.html#CLASS" 
+      class="link">CLASS</a>; <a 
+      href="epydoc.checker.DocChecker-class.html#FUNC" 
+      class="link">FUNC</a>; <a 
+      href="epydoc.checker.DocChecker-class.html#VAR" class="link">VAR</a>;
+      <a href="epydoc.checker.DocChecker-class.html#IVAR" 
+      class="link">IVAR</a>; <a 
+      href="epydoc.checker.DocChecker-class.html#CVAR" 
+      class="link">CVAR</a>; <a 
+      href="epydoc.checker.DocChecker-class.html#PARAM" 
+      class="link">PARAM</a>; and <a 
+      href="epydoc.checker.DocChecker-class.html#RETURN" 
+      class="link">RETURN</a>.
+    </li>
+    <li>
+      Public/private specifiers indicate whether public or private objects 
+      should be checked: <a 
+      href="epydoc.checker.DocChecker-class.html#PRIVATE" 
+      class="link">PRIVATE</a>.
+    </li>
+    <li>
+      Check specifiers indicate what checks should be run on the objects: 
+      <a href="epydoc.checker.DocChecker-class.html#TYPE" 
+      class="link">TYPE</a>; <a 
+      href="epydoc.checker.DocChecker-class.html#DESCR" 
+      class="link">DESCR</a>; <a 
+      href="epydoc.checker.DocChecker-class.html#AUTHOR" 
+      class="link">AUTHOR</a>; and <a 
+      href="epydoc.checker.DocChecker-class.html#VERSION" 
+      class="link">VERSION</a>.
+    </li>
+  </ul>
+  <p>The <a href="epydoc.checker.DocChecker-class.html#check" 
+  class="link">check</a> method is used to perform a check on the 
+  documentation.  Its parameter is formed by or-ing together at least one 
+  value from each specifier group:</p>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>checker.check(DocChecker.MODULE | DocChecker.DESCR)</pre>
+  <p>To specify multiple values from a single group, simply or their values
+  together:</p>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>checker.check(DocChecker.MODULE | DocChecker.CLASS |
+<span class="py-more">... </span>              DocChecker.FUNC )</pre>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.checker.DocChecker-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">docindex</span>)</span><br />
+      Create a new <code>DocChecker</code> that can be used to run checks 
+      on the documentation of the objects documented by 
+      <code>docindex</code></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.checker-pysrc.html#DocChecker.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>boolean</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.checker.DocChecker-class.html#check" class="summary-sig-name">check</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">*check_sets</span>)</span><br />
+      Run the specified checks on the documentation of the objects 
+      contained by this <code>DocChecker</code>'s <code>DocIndex</code>.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.checker-pysrc.html#DocChecker.check">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_check"></a><span class="summary-sig-name">_check</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">checks</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.checker-pysrc.html#DocChecker._check">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_name"></a><span class="summary-sig-name">_name</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">doc</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.checker-pysrc.html#DocChecker._name">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>None</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.checker.DocChecker-class.html#_check_basic" class="summary-sig-name" onclick="show_private();">_check_basic</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">doc</span>)</span><br />
+      Check the description, author, version, and see-also fields of 
+      <code>doc</code>.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.checker-pysrc.html#DocChecker._check_basic">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>None</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.checker.DocChecker-class.html#_check_module" class="summary-sig-name" onclick="show_private();">_check_module</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">doc</span>)</span><br />
+      Run checks on the module whose APIDoc is <code>doc</code>.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.checker-pysrc.html#DocChecker._check_module">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>None</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.checker.DocChecker-class.html#_check_class" class="summary-sig-name" onclick="show_private();">_check_class</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">doc</span>)</span><br />
+      Run checks on the class whose APIDoc is <code>doc</code>.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.checker-pysrc.html#DocChecker._check_class">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_check_property"></a><span class="summary-sig-name">_check_property</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">doc</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.checker-pysrc.html#DocChecker._check_property">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>None</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.checker.DocChecker-class.html#_check_var" class="summary-sig-name" onclick="show_private();">_check_var</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">doc</span>)</span><br />
+      Run checks on the variable whose documentation is <code>var</code> 
+      and whose name is <code>name</code>.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.checker-pysrc.html#DocChecker._check_var">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>None</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.checker.DocChecker-class.html#_check_func" class="summary-sig-name" onclick="show_private();">_check_func</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">doc</span>)</span><br />
+      Run checks on the function whose APIDoc is <code>doc</code>.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.checker-pysrc.html#DocChecker._check_func">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="warning"></a><span class="summary-sig-name">warning</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">msg</span>,
+        <span class="summary-sig-arg">doc</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.checker-pysrc.html#DocChecker.warning">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Class Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-ClassVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="PROPERTY"></a><span class="summary-name">PROPERTY</span> = <code title="256">256</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="ALL"></a><span class="summary-name">ALL</span> = <code title="24831">24831</code>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Types</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>int</code></span>
+    </td><td class="summary">
+        <a name="MODULE"></a><span class="summary-name">MODULE</span> = <code title="1">1</code><br />
+      Type specifier that indicates that the documentation of modules 
+      should be checked.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>int</code></span>
+    </td><td class="summary">
+        <a name="CLASS"></a><span class="summary-name">CLASS</span> = <code title="2">2</code><br />
+      Type specifier that indicates that the documentation of classes 
+      should be checked.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>int</code></span>
+    </td><td class="summary">
+        <a name="FUNC"></a><span class="summary-name">FUNC</span> = <code title="4">4</code><br />
+      Type specifier that indicates that the documentation of functions 
+      should be checked.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>int</code></span>
+    </td><td class="summary">
+        <a name="VAR"></a><span class="summary-name">VAR</span> = <code title="8">8</code><br />
+      Type specifier that indicates that the documentation of module 
+      variables should be checked.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>int</code></span>
+    </td><td class="summary">
+        <a name="PARAM"></a><span class="summary-name">PARAM</span> = <code title="64">64</code><br />
+      Type specifier that indicates that the documentation of function and 
+      method parameters should be checked.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>int</code></span>
+    </td><td class="summary">
+        <a name="RETURN"></a><span class="summary-name">RETURN</span> = <code title="128">128</code><br />
+      Type specifier that indicates that the documentation of return values
+      should be checked.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>int</code></span>
+    </td><td class="summary">
+        <a name="ALL_T"></a><span class="summary-name">ALL_T</span> = <code title="511">511</code><br />
+      Type specifier that indicates that the documentation of all objects 
+      should be checked.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>int</code></span>
+    </td><td class="summary">
+        <a name="CVAR"></a><span class="summary-name">CVAR</span><br />
+      Type specifier that indicates that the documentation of class 
+      variables should be checked.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>int</code></span>
+    </td><td class="summary">
+        <a name="IVAR"></a><span class="summary-name">IVAR</span><br />
+      Type specifier that indicates that the documentation of instance 
+      variables should be checked.
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Checks</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>int</code></span>
+    </td><td class="summary">
+        <a name="TYPE"></a><span class="summary-name">TYPE</span> = <code title="256">256</code><br />
+      Check specifier that indicates that every variable and parameter 
+      should have a <code>@type</code> field.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>int</code></span>
+    </td><td class="summary">
+        <a name="AUTHOR"></a><span class="summary-name">AUTHOR</span> = <code title="1024">1024</code><br />
+      Check specifier that indicates that every object should have an 
+      <code>author</code> field.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>int</code></span>
+    </td><td class="summary">
+        <a name="VERSION"></a><span class="summary-name">VERSION</span> = <code title="2048">2048</code><br />
+      Check specifier that indicates that every object should have a 
+      <code>version</code> field.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>int</code></span>
+    </td><td class="summary">
+        <a name="DESCR"></a><span class="summary-name">DESCR</span> = <code title="4096">4096</code><br />
+      Check specifier that indicates that every object should have a 
+      description.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>int</code></span>
+    </td><td class="summary">
+        <a name="ALL_C"></a><span class="summary-name">ALL_C</span> = <code title="7936">7936</code><br />
+      Check specifier that indicates that  all checks should be run.
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Publicity</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>int</code></span>
+    </td><td class="summary">
+        <a name="PRIVATE"></a><span class="summary-name">PRIVATE</span> = <code title="16384">16384</code><br />
+      Specifier that indicates that private objects should be checked.
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Method Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-MethodDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">docindex</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.checker-pysrc.html#DocChecker.__init__">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Create a new <code>DocChecker</code> that can be used to run checks on
+  the documentation of the objects documented by <code>docindex</code></p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>docindex</code></strong> (<a href="epydoc.apidoc.DocIndex-class.html" 
+          class="link">Docindex</a>) - A documentation map containing the documentation for the objects 
+          to be checked.</li>
+    </ul></dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="check"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">check</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">*check_sets</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.checker-pysrc.html#DocChecker.check">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Run the specified checks on the documentation of the objects contained
+  by this <code>DocChecker</code>'s <code>DocIndex</code>.  Any errors 
+  found are printed to standard out.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>check_sets</code></strong> (<code>int</code>) - The checks that should be run on the documentation.  This value 
+          is constructed by or-ing together the specifiers that indicate 
+          which objects should be checked, and which checks should be run.
+          See the <a href="epydoc.checker-module.html" class="link">module 
+          description</a> for more information. If no checks are specified,
+          then a default set of checks will be run.</li>
+    </ul></dd>
+    <dt>Returns: <code>boolean</code></dt>
+        <dd>True if no problems were found.</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="_check_basic"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">_check_basic</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">doc</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.checker-pysrc.html#DocChecker._check_basic">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Check the description, author, version, and see-also fields of 
+  <code>doc</code>.  This is used as a helper function by <a 
+  href="epydoc.checker.DocChecker-class.html#_check_module" class="link" 
+  onclick="show_private();">_check_module</a>, <a 
+  href="epydoc.checker.DocChecker-class.html#_check_class" class="link" 
+  onclick="show_private();">_check_class</a>, and <a 
+  href="epydoc.checker.DocChecker-class.html#_check_func" class="link" 
+  onclick="show_private();">_check_func</a>.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>doc</code></strong> (<a href="epydoc.apidoc.APIDoc-class.html" class="link">APIDoc</a>) - The documentation that should be checked.</li>
+    </ul></dd>
+    <dt>Returns: <code>None</code></dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="_check_module"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">_check_module</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">doc</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.checker-pysrc.html#DocChecker._check_module">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Run checks on the module whose APIDoc is <code>doc</code>.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>doc</code></strong> (<a href="epydoc.apidoc.APIDoc-class.html" class="link">APIDoc</a>) - The APIDoc of the module to check.</li>
+    </ul></dd>
+    <dt>Returns: <code>None</code></dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="_check_class"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">_check_class</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">doc</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.checker-pysrc.html#DocChecker._check_class">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Run checks on the class whose APIDoc is <code>doc</code>.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>doc</code></strong> (<a href="epydoc.apidoc.APIDoc-class.html" class="link">APIDoc</a>) - The APIDoc of the class to check.</li>
+    </ul></dd>
+    <dt>Returns: <code>None</code></dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="_check_var"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">_check_var</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">doc</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.checker-pysrc.html#DocChecker._check_var">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Run checks on the variable whose documentation is <code>var</code> and
+  whose name is <code>name</code>.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>doc</code></strong> (<a href="epydoc.apidoc.APIDoc-class.html" class="link">APIDoc</a>) - The documentation for the variable to check.</li>
+    </ul></dd>
+    <dt>Returns: <code>None</code></dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="_check_func"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">_check_func</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">doc</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.checker-pysrc.html#DocChecker._check_func">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Run checks on the function whose APIDoc is <code>doc</code>.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>doc</code></strong> (<a href="epydoc.apidoc.APIDoc-class.html" class="link">APIDoc</a>) - The APIDoc of the function to check.</li>
+    </ul></dd>
+    <dt>Returns: <code>None</code></dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:07:35 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.cli-module.html b/doc/api/epydoc.cli-module.html
new file mode 100644
index 0000000..437c7d8
--- /dev/null
+++ b/doc/api/epydoc.cli-module.html
@@ -0,0 +1,819 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.cli</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        Module cli
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.cli-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module cli</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.cli-pysrc.html">source code</a></span></p>
+<p>Command-line interface for epydoc.  Abbreviated Usage:</p>
+<pre class="literalblock">
+epydoc [options] NAMES...
+
+    NAMES...                  The Python modules to document.
+    --html                    Generate HTML output (default).
+    --latex                   Generate LaTeX output.
+    --pdf                     Generate pdf output, via LaTeX.
+    -o DIR, --output DIR      The output directory.
+    --inheritance STYLE       The format for showing inherited objects.
+    -V, --version             Print the version of epydoc.
+    -h, --help                Display a usage message.
+</pre>
+  <p>Run "epydoc --help" for a complete option list.  See the 
+  epydoc(1) man page for more information.</p>
+  <h1 class="heading">Config Files</h1>
+    <p>Configuration files can be specified with the <code>--config</code> 
+    option. These files are read using <a 
+    href="http://docs.python.org/lib/module-ConfigParser.html" 
+    target="_top">ConfigParser</a>.  Configuration files may set options or
+    add names of modules to document.  Option names are (usually) identical
+    to the long names of command line options.  To specify names to 
+    document, use any of the following option names:</p>
+<pre class="literalblock">
+ module modules value values object objects
+</pre>
+    <p>A simple example of a config file is:</p>
+<pre class="literalblock">
+ [epydoc]
+ modules: sys, os, os.path, re, %(MYSANDBOXPATH)/utilities.py
+ name: Example
+ graph: classtree
+ introspect: no
+</pre>
+    <p>All ConfigParser interpolations are done using local values and the 
+    environment variables.</p>
+  <h1 class="heading">Verbosity Levels</h1>
+    <p>The <code>-v</code> and <code>-q</code> options increase and 
+    decrease verbosity, respectively.  The default verbosity level is zero.
+    The verbosity levels are currently defined as follows:</p>
+<pre class="literalblock">
+               Progress    Markup warnings   Warnings   Errors
+-3               none            no             no        no
+-2               none            no             no        yes
+-1               none            no             yes       yes
+ 0 (default)     bar             no             yes       yes
+ 1               bar             yes            yes       yes
+ 2               list            yes            yes       yes
+</pre>
+
+<!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Classes</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Classes"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Logging</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.cli.TerminalController-class.html" class="summary-name">TerminalController</a><br />
+      A class that can be used to portably generate formatted output to a
+        terminal.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.cli.ConsoleLogger-class.html" class="summary-name">ConsoleLogger</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.cli.UnifiedProgressConsoleLogger-class.html" class="summary-name">UnifiedProgressConsoleLogger</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.cli.HTMLLogger-class.html" class="summary-name">HTMLLogger</a><br />
+      A logger used to generate a log of all warnings and messages to an 
+        HTML file.
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTIONS ==================== -->
+<a name="section-Functions"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Functions</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Functions"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Argument & Config File Parsing</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="parse_arguments"></a><span class="summary-sig-name">parse_arguments</span>()</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.cli-pysrc.html#parse_arguments">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="parse_configfiles"></a><span class="summary-sig-name">parse_configfiles</span>(<span class="summary-sig-arg">configfiles</span>,
+        <span class="summary-sig-arg">options</span>,
+        <span class="summary-sig-arg">names</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.cli-pysrc.html#parse_configfiles">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_str_to_bool"></a><span class="summary-sig-name">_str_to_bool</span>(<span class="summary-sig-arg">val</span>,
+        <span class="summary-sig-arg">optname</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.cli-pysrc.html#_str_to_bool">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_str_to_int"></a><span class="summary-sig-name">_str_to_int</span>(<span class="summary-sig-arg">val</span>,
+        <span class="summary-sig-arg">optname</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.cli-pysrc.html#_str_to_int">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_str_to_list"></a><span class="summary-sig-name">_str_to_list</span>(<span class="summary-sig-arg">val</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.cli-pysrc.html#_str_to_list">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Interface</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="main"></a><span class="summary-sig-name">main</span>(<span class="summary-sig-arg">options</span>,
+        <span class="summary-sig-arg">names</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.cli-pysrc.html#main">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="write_html"></a><span class="summary-sig-name">write_html</span>(<span class="summary-sig-arg">docindex</span>,
+        <span class="summary-sig-arg">options</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.cli-pysrc.html#write_html">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.cli-module.html#write_pickle" class="summary-sig-name">write_pickle</a>(<span class="summary-sig-arg">docindex</span>,
+        <span class="summary-sig-arg">options</span>)</span><br />
+      Helper for writing output to a pickle file, which can then be read in
+      at a later time.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.cli-pysrc.html#write_pickle">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="pickle_persistent_id"></a><span class="summary-sig-name">pickle_persistent_id</span>(<span class="summary-sig-arg">obj</span>)</span><br />
+      Helper for pickling, which allows us to save and restore UNKNOWN, 
+      which is required to be identical to apidoc.UNKNOWN.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.cli-pysrc.html#pickle_persistent_id">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="pickle_persistent_load"></a><span class="summary-sig-name">pickle_persistent_load</span>(<span class="summary-sig-arg">identifier</span>)</span><br />
+      Helper for pickling, which allows us to save and restore UNKNOWN, 
+      which is required to be identical to apidoc.UNKNOWN.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.cli-pysrc.html#pickle_persistent_load">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="write_latex"></a><span class="summary-sig-name">write_latex</span>(<span class="summary-sig-arg">docindex</span>,
+        <span class="summary-sig-arg">options</span>,
+        <span class="summary-sig-arg">format</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.cli-pysrc.html#write_latex">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="write_text"></a><span class="summary-sig-name">write_text</span>(<span class="summary-sig-arg">docindex</span>,
+        <span class="summary-sig-arg">options</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.cli-pysrc.html#write_text">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="check_docs"></a><span class="summary-sig-name">check_docs</span>(<span class="summary-sig-arg">docindex</span>,
+        <span class="summary-sig-arg">options</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.cli-pysrc.html#check_docs">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="cli"></a><span class="summary-sig-name">cli</span>()</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.cli-pysrc.html#cli">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_profile"></a><span class="summary-sig-name">_profile</span>()</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.cli-pysrc.html#_profile">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Variables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="INHERITANCE_STYLES"></a><span class="summary-name">INHERITANCE_STYLES</span> = <code title="('grouped', 'listed', 'included')"><code class="variable-group">(</code><code class="variable-quote">'</code><code class="variable-string">grouped</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">listed</code><code class="variable-quote">'</code><code class="variable-op">, </code><code  [...]
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="GRAPH_TYPES"></a><span class="summary-name">GRAPH_TYPES</span> = <code title="('classtree', 'callgraph', 'umlclasstree')"><code class="variable-group">(</code><code class="variable-quote">'</code><code class="variable-string">classtree</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">callgraph</code><code class="variable-quote">'</code><code class="variable-op">, </code><code  [...]
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="ACTIONS"></a><span class="summary-name">ACTIONS</span> = <code title="('html', 'text', 'latex', 'dvi', 'ps', 'pdf', 'check')"><code class="variable-group">(</code><code class="variable-quote">'</code><code class="variable-string">html</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">text</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class= [...]
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="DEFAULT_DOCFORMAT"></a><span class="summary-name">DEFAULT_DOCFORMAT</span> = <code title="'epytext'"><code class="variable-quote">'</code><code class="variable-string">epytext</code><code class="variable-quote">'</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="PROFILER"></a><span class="summary-name">PROFILER</span> = <code title="'profile'"><code class="variable-quote">'</code><code class="variable-string">profile</code><code class="variable-quote">'</code></code><br />
+      Which profiler to use: 'hotshot' or 'profile'
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="descr"></a><span class="summary-name">descr</span> = <code title="'Black on white, with blue highlights'"><code class="variable-quote">'</code><code class="variable-string">Black on white, with blue highlights</code><code class="variable-quote">'</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="key"></a><span class="summary-name">key</span> = <code title="'white'"><code class="variable-quote">'</code><code class="variable-string">white</code><code class="variable-quote">'</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.cli-module.html#sheet" class="summary-name">sheet</a> = <code title="'''
+
+/* Epydoc CSS Stylesheet
+ *
+ * This stylesheet can be used to customize the appearance of epydoc\'\
+s
+ * HTML output.
+ *
+..."><code class="variable-quote">'</code><code class="variable-string">\n\n/* Epydoc CSS Stylesheet\n *\n * This stylesheet </code><code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="topic"></a><span class="summary-name">topic</span> = <code title="'inheritance'"><code class="variable-quote">'</code><code class="variable-string">inheritance</code><code class="variable-quote">'</code></code>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Help Topics</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.cli-module.html#DOCFORMATS" class="summary-name">DOCFORMATS</a> = <code title="('epytext', 'plaintext', 'restructuredtext', 'javadoc')"><code class="variable-group">(</code><code class="variable-quote">'</code><code class="variable-string">epytext</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">plaintext</code><code class="variable-quote">'</code><code class="variable- [...]
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.cli-module.html#HELP_TOPICS" class="summary-name">HELP_TOPICS</a> = <code title="{'css': '''The following built-in CSS stylesheets are available:
+        blue: Black on steel blue
+     default: Default stylesheet (=white)
+   grayscale: Grayscale black on white
+       black: White on black, with blue highlights
+       green: Black on green
+       white: Black on white, with blue highlights''',
+ 'docformat': '''__docformat__ is a module variable that specifies the\
+..."><code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">css</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">The following built-in CSS stylesheets </code><code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Argument & Config File Parsing</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.cli-module.html#OPTION_DEFAULTS" class="summary-name">OPTION_DEFAULTS</a> = <code title="{'action': 'html',
+ 'debug': True,
+ 'docformat': 'epytext',
+ 'exclude': [],
+ 'exclude_introspect': [],
+ 'exclude_parse': [],
+ 'external_api': [],
+ 'external_api_file': [],
+..."><code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">action</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">html</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">debug</code><code class="variable-quote">'</code><code class="variable-op">: </co [...]
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8"  class="private">
+  <th colspan="2" class="group-header"
+    >    Interface</th></tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.cli-module.html#_RERUN_LATEX_RE" class="summary-name" onclick="show_private();">_RERUN_LATEX_RE</a> = <code title="re.compile(r'(?im)^LaTeX\s+Warning:\s+Label\(s\)\s+may\s+have\s+change\
+d.\s+Rerun')">re.compile(r'<code class="re-flags">(?im)</code>^LaTeX\s<code class="re-op">+</code>Warning:\s<code class="re-op">+</code>Label\<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTION DETAILS ==================== -->
+<a name="section-FunctionDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Function Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-FunctionDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="write_pickle"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">write_pickle</span>(<span class="sig-arg">docindex</span>,
+        <span class="sig-arg">options</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.cli-pysrc.html#write_pickle">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Helper for writing output to a pickle file, which can then be read in 
+  at a later time.  But loading the pickle is only marginally faster than 
+  building the docs from scratch, so this has pretty limited 
+  application.</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== VARIABLES DETAILS ==================== -->
+<a name="section-VariablesDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Variables Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-VariablesDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="DOCFORMATS"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">DOCFORMATS</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-group">(</code><code class="variable-quote">'</code><code class="variable-string">epytext</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">plaintext</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">restructuredtext</code><code class="variable-quote">'</code><code class="variabl [...]
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="HELP_TOPICS"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">HELP_TOPICS</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">css</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'''</code><code class="variable-string">The following built-in CSS stylesheets are available:</code>
+<code class="variable-string">        blue: Black on steel blue</code>
+<code class="variable-string">     default: Default stylesheet (=white)</code>
+<code class="variable-string">   grayscale: Grayscale black on white</code>
+<code class="variable-string">       black: White on black, with blue highlights</code>
+<code class="variable-string">       green: Black on green</code>
+<code class="variable-string">       white: Black on white, with blue highlights</code><code class="variable-quote">'''</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">docformat</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'''</code><code class="variable-string">__docformat__ is a module variable that specifies the</code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="OPTION_DEFAULTS"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">OPTION_DEFAULTS</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">action</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">html</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">debug</code><code class="variable-quote">'</code><code class="variable-op">: </code>True<code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">docformat</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">epytext</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">exclude</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-group">[</code><code class="variable-group">]</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">exclude_introspect</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-group">[</code><code class="variable-group">]</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">exclude_parse</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-group">[</code><code class="variable-group">]</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">external_api</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-group">[</code><code class="variable-group">]</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">external_api_file</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-group">[</code><code class="variable-group">]</code><code class="variable-op">,</code>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="_RERUN_LATEX_RE"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">_RERUN_LATEX_RE</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+re.compile(r'<code class="re-flags">(?im)</code>^LaTeX\s<code class="re-op">+</code>Warning:\s<code class="re-op">+</code>Label\(s\)\s<code class="re-op">+</code>may\s<code class="re-op">+</code>have\s<code class="re-op">+</code>change<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+d.\s<code class="re-op">+</code>Rerun')
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="sheet"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">sheet</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'''</code><code class="variable-string"></code>
+<code class="variable-string"></code>
+<code class="variable-string">/* Epydoc CSS Stylesheet</code>
+<code class="variable-string"> *</code>
+<code class="variable-string"> * This stylesheet can be used to customize the appearance of epydoc\'</code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-string">s</code>
+<code class="variable-string"> * HTML output.</code>
+<code class="variable-string"> *</code>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:05:47 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.cli-pysrc.html b/doc/api/epydoc.cli-pysrc.html
new file mode 100644
index 0000000..05e8348
--- /dev/null
+++ b/doc/api/epydoc.cli-pysrc.html
@@ -0,0 +1,2181 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.cli</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        Module cli
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.cli-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="epydoc.cli-module.html">Module epydoc.cli</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno">   1</tt>  <tt class="py-line"><tt class="py-comment"># epydoc -- Command line interface</tt> </tt>
+<a name="L2"></a><tt class="py-lineno">   2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L3"></a><tt class="py-lineno">   3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2005 Edward Loper</tt> </tt>
+<a name="L4"></a><tt class="py-lineno">   4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Author: Edward Loper <edloper at loper.org></tt> </tt>
+<a name="L5"></a><tt class="py-lineno">   5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># URL: <http://epydoc.sf.net></tt> </tt>
+<a name="L6"></a><tt class="py-lineno">   6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L7"></a><tt class="py-lineno">   7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># $Id: cli.py 1678 2008-01-29 17:21:29Z edloper $</tt> </tt>
+<a name="L8"></a><tt class="py-lineno">   8</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L9"></a><tt class="py-lineno">   9</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L10"></a><tt class="py-lineno">  10</tt>  <tt class="py-line"><tt class="py-docstring">Command-line interface for epydoc.  Abbreviated Usage::</tt> </tt>
+<a name="L11"></a><tt class="py-lineno">  11</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L12"></a><tt class="py-lineno">  12</tt>  <tt class="py-line"><tt class="py-docstring"> epydoc [options] NAMES...</tt> </tt>
+<a name="L13"></a><tt class="py-lineno">  13</tt>  <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
+<a name="L14"></a><tt class="py-lineno">  14</tt>  <tt class="py-line"><tt class="py-docstring">     NAMES...                  The Python modules to document.</tt> </tt>
+<a name="L15"></a><tt class="py-lineno">  15</tt>  <tt class="py-line"><tt class="py-docstring">     --html                    Generate HTML output (default).</tt> </tt>
+<a name="L16"></a><tt class="py-lineno">  16</tt>  <tt class="py-line"><tt class="py-docstring">     --latex                   Generate LaTeX output.</tt> </tt>
+<a name="L17"></a><tt class="py-lineno">  17</tt>  <tt class="py-line"><tt class="py-docstring">     --pdf                     Generate pdf output, via LaTeX.</tt> </tt>
+<a name="L18"></a><tt class="py-lineno">  18</tt>  <tt class="py-line"><tt class="py-docstring">     -o DIR, --output DIR      The output directory.</tt> </tt>
+<a name="L19"></a><tt class="py-lineno">  19</tt>  <tt class="py-line"><tt class="py-docstring">     --inheritance STYLE       The format for showing inherited objects.</tt> </tt>
+<a name="L20"></a><tt class="py-lineno">  20</tt>  <tt class="py-line"><tt class="py-docstring">     -V, --version             Print the version of epydoc.</tt> </tt>
+<a name="L21"></a><tt class="py-lineno">  21</tt>  <tt class="py-line"><tt class="py-docstring">     -h, --help                Display a usage message.</tt> </tt>
+<a name="L22"></a><tt class="py-lineno">  22</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L23"></a><tt class="py-lineno">  23</tt>  <tt class="py-line"><tt class="py-docstring">Run \"epydoc --help\" for a complete option list.  See the epydoc(1)</tt> </tt>
+<a name="L24"></a><tt class="py-lineno">  24</tt>  <tt class="py-line"><tt class="py-docstring">man page for more information.</tt> </tt>
+<a name="L25"></a><tt class="py-lineno">  25</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L26"></a><tt class="py-lineno">  26</tt>  <tt class="py-line"><tt class="py-docstring">Config Files</tt> </tt>
+<a name="L27"></a><tt class="py-lineno">  27</tt>  <tt class="py-line"><tt class="py-docstring">============</tt> </tt>
+<a name="L28"></a><tt class="py-lineno">  28</tt>  <tt class="py-line"><tt class="py-docstring">Configuration files can be specified with the C{--config} option.</tt> </tt>
+<a name="L29"></a><tt class="py-lineno">  29</tt>  <tt class="py-line"><tt class="py-docstring">These files are read using U{ConfigParser</tt> </tt>
+<a name="L30"></a><tt class="py-lineno">  30</tt>  <tt class="py-line"><tt class="py-docstring"><http://docs.python.org/lib/module-ConfigParser.html>}.  Configuration</tt> </tt>
+<a name="L31"></a><tt class="py-lineno">  31</tt>  <tt class="py-line"><tt class="py-docstring">files may set options or add names of modules to document.  Option</tt> </tt>
+<a name="L32"></a><tt class="py-lineno">  32</tt>  <tt class="py-line"><tt class="py-docstring">names are (usually) identical to the long names of command line</tt> </tt>
+<a name="L33"></a><tt class="py-lineno">  33</tt>  <tt class="py-line"><tt class="py-docstring">options.  To specify names to document, use any of the following</tt> </tt>
+<a name="L34"></a><tt class="py-lineno">  34</tt>  <tt class="py-line"><tt class="py-docstring">option names::</tt> </tt>
+<a name="L35"></a><tt class="py-lineno">  35</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L36"></a><tt class="py-lineno">  36</tt>  <tt class="py-line"><tt class="py-docstring">  module modules value values object objects</tt> </tt>
+<a name="L37"></a><tt class="py-lineno">  37</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L38"></a><tt class="py-lineno">  38</tt>  <tt class="py-line"><tt class="py-docstring">A simple example of a config file is::</tt> </tt>
+<a name="L39"></a><tt class="py-lineno">  39</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L40"></a><tt class="py-lineno">  40</tt>  <tt class="py-line"><tt class="py-docstring">  [epydoc]</tt> </tt>
+<a name="L41"></a><tt class="py-lineno">  41</tt>  <tt class="py-line"><tt class="py-docstring">  modules: sys, os, os.path, re, %(MYSANDBOXPATH)/utilities.py</tt> </tt>
+<a name="L42"></a><tt class="py-lineno">  42</tt>  <tt class="py-line"><tt class="py-docstring">  name: Example</tt> </tt>
+<a name="L43"></a><tt class="py-lineno">  43</tt>  <tt class="py-line"><tt class="py-docstring">  graph: classtree</tt> </tt>
+<a name="L44"></a><tt class="py-lineno">  44</tt>  <tt class="py-line"><tt class="py-docstring">  introspect: no</tt> </tt>
+<a name="L45"></a><tt class="py-lineno">  45</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L46"></a><tt class="py-lineno">  46</tt>  <tt class="py-line"><tt class="py-docstring">All ConfigParser interpolations are done using local values and the</tt> </tt>
+<a name="L47"></a><tt class="py-lineno">  47</tt>  <tt class="py-line"><tt class="py-docstring">environment variables.</tt> </tt>
+<a name="L48"></a><tt class="py-lineno">  48</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L49"></a><tt class="py-lineno">  49</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L50"></a><tt class="py-lineno">  50</tt>  <tt class="py-line"><tt class="py-docstring">Verbosity Levels</tt> </tt>
+<a name="L51"></a><tt class="py-lineno">  51</tt>  <tt class="py-line"><tt class="py-docstring">================</tt> </tt>
+<a name="L52"></a><tt class="py-lineno">  52</tt>  <tt class="py-line"><tt class="py-docstring">The C{-v} and C{-q} options increase and decrease verbosity,</tt> </tt>
+<a name="L53"></a><tt class="py-lineno">  53</tt>  <tt class="py-line"><tt class="py-docstring">respectively.  The default verbosity level is zero.  The verbosity</tt> </tt>
+<a name="L54"></a><tt class="py-lineno">  54</tt>  <tt class="py-line"><tt class="py-docstring">levels are currently defined as follows::</tt> </tt>
+<a name="L55"></a><tt class="py-lineno">  55</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L56"></a><tt class="py-lineno">  56</tt>  <tt class="py-line"><tt class="py-docstring">                Progress    Markup warnings   Warnings   Errors</tt> </tt>
+<a name="L57"></a><tt class="py-lineno">  57</tt>  <tt class="py-line"><tt class="py-docstring"> -3               none            no             no        no</tt> </tt>
+<a name="L58"></a><tt class="py-lineno">  58</tt>  <tt class="py-line"><tt class="py-docstring"> -2               none            no             no        yes</tt> </tt>
+<a name="L59"></a><tt class="py-lineno">  59</tt>  <tt class="py-line"><tt class="py-docstring"> -1               none            no             yes       yes</tt> </tt>
+<a name="L60"></a><tt class="py-lineno">  60</tt>  <tt class="py-line"><tt class="py-docstring">  0 (default)     bar             no             yes       yes</tt> </tt>
+<a name="L61"></a><tt class="py-lineno">  61</tt>  <tt class="py-line"><tt class="py-docstring">  1               bar             yes            yes       yes</tt> </tt>
+<a name="L62"></a><tt class="py-lineno">  62</tt>  <tt class="py-line"><tt class="py-docstring">  2               list            yes            yes       yes</tt> </tt>
+<a name="L63"></a><tt class="py-lineno">  63</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L64"></a><tt class="py-lineno">  64</tt>  <tt class="py-line"><tt class="py-name">__docformat__</tt> <tt class="py-op">=</tt> <tt class="py-string">'epytext en'</tt> </tt>
+<a name="L65"></a><tt class="py-lineno">  65</tt>  <tt class="py-line"> </tt>
+<a name="L66"></a><tt class="py-lineno">  66</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">sys</tt><tt class="py-op">,</tt> <tt class="py-name">os</tt><tt class="py-op">,</tt> <tt class="py-name">time</tt><tt class="py-op">,</tt> <tt class="py-name">re</tt><tt class="py-op">,</tt> <tt class="py-name">pickle</tt><tt class="py-op">,</tt> <tt class="py-name">textwrap</tt> </tt>
+<a name="L67"></a><tt class="py-lineno">  67</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">glob</tt> <tt class="py-keyword">import</tt> <tt class="py-name">glob</tt> </tt>
+<a name="L68"></a><tt class="py-lineno">  68</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">optparse</tt> <tt class="py-keyword">import</tt> <tt class="py-name">OptionParser</tt><tt class="py-op">,</tt> <tt class="py-name">OptionGroup</tt><tt class="py-op">,</tt> <tt class="py-name">SUPPRESS_HELP</tt> </tt>
+<a name="L69"></a><tt class="py-lineno">  69</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">optparse</tt> </tt>
+<a name="L70"></a><tt class="py-lineno">  70</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-0" class="py-name" targets="Package epydoc=epydoc-module.html"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-0', 'epydoc', 'link-0');">epydoc</a></tt> </tt>
+<a name="L71"></a><tt class="py-lineno">  71</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-1" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-1', 'epydoc', 'link-0');">epydoc</a></tt> <tt class="py-keyword">import</tt> <tt id="link-2" class="py-name" targets="Method epydoc.cli.ConsoleLogger.log()=epydoc.cli.ConsoleLogger-class.html#log,Method epydoc.cli.HTMLLogger.log()=epydoc.cli.HTMLLogger-class.html#log,Method epydoc.g [...]
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-2', 'log', 'link-2');">log</a></tt> </tt>
+<a name="L72"></a><tt class="py-lineno">  72</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-3" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-3', 'epydoc', 'link-0');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-4" class="py-name" targets="Module epydoc.test.util=epydoc.test.util-module.html,Module epydoc.util=epydoc.util-module.html"><a title="epydoc.test.util
+epydoc.util" class="py-name" href="#" onclick="return doclink('link-4', 'util', 'link-4');">util</a></tt> <tt class="py-keyword">import</tt> <tt id="link-5" class="py-name" targets="Function epydoc.util.wordwrap()=epydoc.util-module.html#wordwrap"><a title="epydoc.util.wordwrap" class="py-name" href="#" onclick="return doclink('link-5', 'wordwrap', 'link-5');">wordwrap</a></tt><tt class="py-op">,</tt> <tt id="link-6" class="py-name" targets="Function epydoc.util.run_subprocess()=epydoc.u [...]
+<a name="L73"></a><tt class="py-lineno">  73</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-8" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-8', 'epydoc', 'link-0');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-9" class="py-name"><a title="epydoc.test.util
+epydoc.util" class="py-name" href="#" onclick="return doclink('link-9', 'util', 'link-4');">util</a></tt> <tt class="py-keyword">import</tt> <tt id="link-10" class="py-name" targets="Function epydoc.util.plaintext_to_html()=epydoc.util-module.html#plaintext_to_html"><a title="epydoc.util.plaintext_to_html" class="py-name" href="#" onclick="return doclink('link-10', 'plaintext_to_html', 'link-10');">plaintext_to_html</a></tt> </tt>
+<a name="L74"></a><tt class="py-lineno">  74</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-11" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-11', 'epydoc', 'link-0');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-12" class="py-name" targets="Module epydoc.apidoc=epydoc.apidoc-module.html"><a title="epydoc.apidoc" class="py-name" href="#" onclick="return doclink('link-12', 'apidoc', 'link-12');">apidoc</a></tt> <t [...]
+<a name="L75"></a><tt class="py-lineno">  75</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-14" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-14', 'epydoc', 'link-0');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-15" class="py-name" targets="Module epydoc.compat=epydoc.compat-module.html"><a title="epydoc.compat" class="py-name" href="#" onclick="return doclink('link-15', 'compat', 'link-15');">compat</a></tt> <t [...]
+<a name="L76"></a><tt class="py-lineno">  76</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">ConfigParser</tt> </tt>
+<a name="L77"></a><tt class="py-lineno">  77</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-16" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-16', 'epydoc', 'link-0');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-17" class="py-name" targets="Package epydoc.docwriter=epydoc.docwriter-module.html"><a title="epydoc.docwriter" class="py-name" href="#" onclick="return doclink('link-17', 'docwriter', 'link-17');">docwr [...]
+<a name="L78"></a><tt class="py-lineno">  78</tt>  <tt class="py-line"> </tt>
+<a name="L79"></a><tt class="py-lineno">  79</tt>  <tt class="py-line"><tt class="py-comment"># This module is only available if Docutils are in the system</tt> </tt>
+<a name="L80"></a><tt class="py-lineno">  80</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L81"></a><tt class="py-lineno">  81</tt>  <tt class="py-line">    <tt class="py-keyword">from</tt> <tt id="link-20" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-20', 'epydoc', 'link-0');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-21" class="py-name"><a title="epydoc.docwriter" class="py-name" href="#" onclick="return doclink('link-21', 'docwriter', 'link-17');">docwriter</a></tt> <tt class="py-keyword">import</tt> <tt id="lin [...]
+<a name="L82"></a><tt class="py-lineno">  82</tt>  <tt class="py-line"><tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt>
+<a name="L83"></a><tt class="py-lineno">  83</tt>  <tt class="py-line">    <tt id="link-23" class="py-name"><a title="epydoc.docwriter.xlink" class="py-name" href="#" onclick="return doclink('link-23', 'xlink', 'link-22');">xlink</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L84"></a><tt class="py-lineno">  84</tt>  <tt class="py-line"> </tt>
+<a name="L85"></a><tt class="py-lineno">  85</tt>  <tt class="py-line"><tt id="link-24" class="py-name" targets="Variable epydoc.cli.INHERITANCE_STYLES=epydoc.cli-module.html#INHERITANCE_STYLES"><a title="epydoc.cli.INHERITANCE_STYLES" class="py-name" href="#" onclick="return doclink('link-24', 'INHERITANCE_STYLES', 'link-24');">INHERITANCE_STYLES</a></tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">'grouped'</tt><tt class="py-op">,</tt> <tt class="py-string">' [...]
+<a name="L86"></a><tt class="py-lineno">  86</tt>  <tt class="py-line"><tt id="link-25" class="py-name" targets="Variable epydoc.cli.GRAPH_TYPES=epydoc.cli-module.html#GRAPH_TYPES,Variable epydoc.markup.epytext.GRAPH_TYPES=epydoc.markup.epytext-module.html#GRAPH_TYPES"><a title="epydoc.cli.GRAPH_TYPES
+epydoc.markup.epytext.GRAPH_TYPES" class="py-name" href="#" onclick="return doclink('link-25', 'GRAPH_TYPES', 'link-25');">GRAPH_TYPES</a></tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">'classtree'</tt><tt class="py-op">,</tt> <tt class="py-string">'callgraph'</tt><tt class="py-op">,</tt> <tt class="py-string">'umlclasstree'</tt><tt class="py-op">)</tt> </tt>
+<a name="L87"></a><tt class="py-lineno">  87</tt>  <tt class="py-line"><tt id="link-26" class="py-name" targets="Variable epydoc.cli.ACTIONS=epydoc.cli-module.html#ACTIONS"><a title="epydoc.cli.ACTIONS" class="py-name" href="#" onclick="return doclink('link-26', 'ACTIONS', 'link-26');">ACTIONS</a></tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">'html'</tt><tt class="py-op">,</tt> <tt class="py-string">'text'</tt><tt class="py-op">,</tt> <tt class="py-string">' [...]
+<a name="L88"></a><tt class="py-lineno">  88</tt>  <tt class="py-line"><tt id="link-27" class="py-name" targets="Variable epydoc.cli.DEFAULT_DOCFORMAT=epydoc.cli-module.html#DEFAULT_DOCFORMAT,Variable epydoc.docstringparser.DEFAULT_DOCFORMAT=epydoc.docstringparser-module.html#DEFAULT_DOCFORMAT"><a title="epydoc.cli.DEFAULT_DOCFORMAT
+epydoc.docstringparser.DEFAULT_DOCFORMAT" class="py-name" href="#" onclick="return doclink('link-27', 'DEFAULT_DOCFORMAT', 'link-27');">DEFAULT_DOCFORMAT</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'epytext'</tt> </tt>
+<a name="L89"></a><tt class="py-lineno">  89</tt>  <tt class="py-line"><tt id="link-28" class="py-name" targets="Variable epydoc.cli.PROFILER=epydoc.cli-module.html#PROFILER"><a title="epydoc.cli.PROFILER" class="py-name" href="#" onclick="return doclink('link-28', 'PROFILER', 'link-28');">PROFILER</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'profile'</tt> <tt class="py-comment">#: Which profiler to use: 'hotshot' or 'profile'</tt> </tt>
+<a name="L90"></a><tt class="py-lineno">  90</tt>  <tt class="py-line"> </tt>
+<a name="L91"></a><tt class="py-lineno">  91</tt>  <tt class="py-line"><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L92"></a><tt class="py-lineno">  92</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#{ Help Topics</tt> </tt>
+<a name="L93"></a><tt class="py-lineno">  93</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L94"></a><tt class="py-lineno">  94</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L95"></a><tt class="py-lineno">  95</tt>  <tt class="py-line"><tt id="link-29" class="py-name" targets="Variable epydoc.cli.DOCFORMATS=epydoc.cli-module.html#DOCFORMATS"><a title="epydoc.cli.DOCFORMATS" class="py-name" href="#" onclick="return doclink('link-29', 'DOCFORMATS', 'link-29');">DOCFORMATS</a></tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">'epytext'</tt><tt class="py-op">,</tt> <tt class="py-string">'plaintext'</tt><tt class="py-op">,</tt>  [...]
+<a name="L96"></a><tt class="py-lineno">  96</tt>  <tt class="py-line"><tt id="link-30" class="py-name" targets="Variable epydoc.cli.HELP_TOPICS=epydoc.cli-module.html#HELP_TOPICS"><a title="epydoc.cli.HELP_TOPICS" class="py-name" href="#" onclick="return doclink('link-30', 'HELP_TOPICS', 'link-30');">HELP_TOPICS</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
+<a name="L97"></a><tt class="py-lineno">  97</tt>  <tt class="py-line">    <tt class="py-string">'docformat'</tt><tt class="py-op">:</tt> <tt class="py-name">textwrap</tt><tt class="py-op">.</tt><tt class="py-name">dedent</tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L98"></a><tt class="py-lineno">  98</tt>  <tt class="py-line"><tt class="py-string">        __docformat__ is a module variable that specifies the markup</tt> </tt>
+<a name="L99"></a><tt class="py-lineno">  99</tt>  <tt class="py-line"><tt class="py-string">        language for the docstrings in a module.  Its value is a </tt> </tt>
+<a name="L100"></a><tt class="py-lineno"> 100</tt>  <tt class="py-line"><tt class="py-string">        string, consisting the name of a markup language, optionally </tt> </tt>
+<a name="L101"></a><tt class="py-lineno"> 101</tt>  <tt class="py-line"><tt class="py-string">        followed by a language code (such as "en" for English).  Epydoc</tt> </tt>
+<a name="L102"></a><tt class="py-lineno"> 102</tt>  <tt class="py-line"><tt class="py-string">        currently recognizes the following markup language names:</tt> </tt>
+<a name="L103"></a><tt class="py-lineno"> 103</tt>  <tt class="py-line"><tt class="py-string">        '''</tt> <tt class="py-op">+</tt> <tt class="py-string">', '</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt id="link-31" class="py-name"><a title="epydoc.cli.DOCFORMATS" class="py-name" href="#" onclick="return doclink('link-31', 'DOCFORMATS', 'link-29');">DOCFORMATS</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L104"></a><tt class="py-lineno"> 104</tt>  <tt class="py-line">    <tt class="py-string">'inheritance'</tt><tt class="py-op">:</tt> <tt class="py-name">textwrap</tt><tt class="py-op">.</tt><tt class="py-name">dedent</tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L105"></a><tt class="py-lineno"> 105</tt>  <tt class="py-line"><tt class="py-string">        The following inheritance formats are currently supported:</tt> </tt>
+<a name="L106"></a><tt class="py-lineno"> 106</tt>  <tt class="py-line"><tt class="py-string">            - grouped: inherited objects are gathered into groups,</tt> </tt>
+<a name="L107"></a><tt class="py-lineno"> 107</tt>  <tt class="py-line"><tt class="py-string">              based on what class they were inherited from.</tt> </tt>
+<a name="L108"></a><tt class="py-lineno"> 108</tt>  <tt class="py-line"><tt class="py-string">            - listed: inherited objects are listed in a short list</tt> </tt>
+<a name="L109"></a><tt class="py-lineno"> 109</tt>  <tt class="py-line"><tt class="py-string">              at the end of their section.</tt> </tt>
+<a name="L110"></a><tt class="py-lineno"> 110</tt>  <tt class="py-line"><tt class="py-string">            - included: inherited objects are mixed in with </tt> </tt>
+<a name="L111"></a><tt class="py-lineno"> 111</tt>  <tt class="py-line"><tt class="py-string">              non-inherited objects.'''</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L112"></a><tt class="py-lineno"> 112</tt>  <tt class="py-line">    <tt class="py-string">'css'</tt><tt class="py-op">:</tt> <tt class="py-name">textwrap</tt><tt class="py-op">.</tt><tt class="py-name">dedent</tt><tt class="py-op">(</tt> </tt>
+<a name="L113"></a><tt class="py-lineno"> 113</tt>  <tt class="py-line">        <tt class="py-string">'The following built-in CSS stylesheets are available:\n'</tt> <tt class="py-op">+</tt> </tt>
+<a name="L114"></a><tt class="py-lineno"> 114</tt>  <tt class="py-line">        <tt class="py-string">'\n'</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">'  %10s: %s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt id="link-32" class="py-name" targets="Variable epydoc.cli.key=epydoc.cli-module.html#key"><a title="epydoc.cli.key" class="py-name" href="#" onclick="return doclink('link-32', 'key', 'lin [...]
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-33', 'descr', 'link-33');">descr</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L115"></a><tt class="py-lineno"> 115</tt>  <tt class="py-line">                   <tt class="py-keyword">for</tt> <tt class="py-op">(</tt><tt id="link-34" class="py-name"><a title="epydoc.cli.key" class="py-name" href="#" onclick="return doclink('link-34', 'key', 'link-32');">key</a></tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt id="link-35" class="py-name" targets="Variable epydoc.cli.sheet=epydoc.cli-module.html#sheet"><a title="epydoc.cli.sheet" class="py-name" hre [...]
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-36', 'descr', 'link-33');">descr</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L116"></a><tt class="py-lineno"> 116</tt>  <tt class="py-line">                   <tt class="py-keyword">in</tt> <tt class="py-name">CSS_STYLESHEETS</tt><tt class="py-op">.</tt><tt class="py-name">items</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L117"></a><tt class="py-lineno"> 117</tt>  <tt class="py-line">    <tt class="py-comment">#'checks': textwrap.dedent('''\</tt> </tt>
+<a name="L118"></a><tt class="py-lineno"> 118</tt>  <tt class="py-line">    <tt class="py-comment">#</tt> </tt>
+<a name="L119"></a><tt class="py-lineno"> 119</tt>  <tt class="py-line">    <tt class="py-comment">#    '''),</tt> </tt>
+<a name="L120"></a><tt class="py-lineno"> 120</tt>  <tt class="py-line">    <tt class="py-op">}</tt> </tt>
+<a name="L121"></a><tt class="py-lineno"> 121</tt>  <tt class="py-line">         </tt>
+<a name="L122"></a><tt class="py-lineno"> 122</tt>  <tt class="py-line"> </tt>
+<a name="L123"></a><tt class="py-lineno"> 123</tt>  <tt class="py-line"><tt id="link-37" class="py-name"><a title="epydoc.cli.HELP_TOPICS" class="py-name" href="#" onclick="return doclink('link-37', 'HELP_TOPICS', 'link-30');">HELP_TOPICS</a></tt><tt class="py-op">[</tt><tt class="py-string">'topics'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-38" class="py-name"><a title="epydoc.util.wordwrap" class="py-name" href="#" onclick="return doclink('link-38', 'wordwrap', [...]
+<a name="L124"></a><tt class="py-lineno"> 124</tt>  <tt class="py-line">    <tt class="py-string">'Epydoc can provide additional help for the following topics: '</tt> <tt class="py-op">+</tt> </tt>
+<a name="L125"></a><tt class="py-lineno"> 125</tt>  <tt class="py-line">    <tt class="py-string">', '</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">'%r'</tt> <tt class="py-op">%</tt> <tt id="link-39" class="py-name" targets="Variable epydoc.cli.topic=epydoc.cli-module.html#topic"><a title="epydoc.cli.topic" class="py-name" href="#" onclick="return doclink('link-39', 'topic', 'link-39');">topic</a></tt> <tt  [...]
+<a name="L126"></a><tt class="py-lineno"> 126</tt>  <tt class="py-line">     </tt>
+<a name="L127"></a><tt class="py-lineno"> 127</tt>  <tt class="py-line"><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L128"></a><tt class="py-lineno"> 128</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#{ Argument & Config File Parsing</tt> </tt>
+<a name="L129"></a><tt class="py-lineno"> 129</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L130"></a><tt class="py-lineno"> 130</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L131"></a><tt class="py-lineno"> 131</tt>  <tt class="py-line"><tt id="link-42" class="py-name" targets="Variable epydoc.cli.OPTION_DEFAULTS=epydoc.cli-module.html#OPTION_DEFAULTS"><a title="epydoc.cli.OPTION_DEFAULTS" class="py-name" href="#" onclick="return doclink('link-42', 'OPTION_DEFAULTS', 'link-42');">OPTION_DEFAULTS</a></tt> <tt class="py-op">=</tt> <tt class="py-name">dict</tt><tt class="py-op">(</tt> </tt>
+<a name="L132"></a><tt class="py-lineno"> 132</tt>  <tt class="py-line">    <tt class="py-name">action</tt><tt class="py-op">=</tt><tt class="py-string">"html"</tt><tt class="py-op">,</tt> <tt class="py-name">show_frames</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> <tt id="link-43" class="py-name" targets="Variable epydoc.apidoc.ModuleDoc.docformat=epydoc.apidoc.ModuleDoc-class.html#docformat"><a title="epydoc.apidoc.ModuleDoc.docformat" class="py-nam [...]
+epydoc.docstringparser.DEFAULT_DOCFORMAT" class="py-name" href="#" onclick="return doclink('link-44', 'DEFAULT_DOCFORMAT', 'link-27');">DEFAULT_DOCFORMAT</a></tt><tt class="py-op">,</tt>  </tt>
+<a name="L133"></a><tt class="py-lineno"> 133</tt>  <tt class="py-line">    <tt class="py-name">show_private</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> <tt class="py-name">show_imports</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> <tt class="py-name">inheritance</tt><tt class="py-op">=</tt><tt class="py-string">"listed"</tt><tt class="py-op">,</tt> </tt>
+<a name="L134"></a><tt class="py-lineno"> 134</tt>  <tt class="py-line">    <tt class="py-name">verbose</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">quiet</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">load_pickle</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> <tt id="link-45" class="py-name" targets="Function epydoc.markup.epytext.parse()=epyd [...]
+epydoc.markup.parse" class="py-name" href="#" onclick="return doclink('link-45', 'parse', 'link-45');">parse</a></tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> <tt class="py-name">introspect</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> </tt>
+<a name="L135"></a><tt class="py-lineno"> 135</tt>  <tt class="py-line">    <tt id="link-46" class="py-name" targets="Function epydoc.log.debug()=epydoc.log-module.html#debug,Method epydoc.markup.restructuredtext.OptimizedReporter.debug()=epydoc.markup.restructuredtext.OptimizedReporter-class.html#debug"><a title="epydoc.log.debug
+epydoc.markup.restructuredtext.OptimizedReporter.debug" class="py-name" href="#" onclick="return doclink('link-46', 'debug', 'link-46');">debug</a></tt><tt class="py-op">=</tt><tt id="link-47" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-47', 'epydoc', 'link-0');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-48" class="py-name" targets="Variable epydoc.DEBUG=epydoc-module.html#DEBUG,Variable epydoc.gui.DEBUG=epydoc.gui-module.html#DEBUG, [...]
+epydoc.gui.DEBUG
+epydoc.log.DEBUG" class="py-name" href="#" onclick="return doclink('link-48', 'DEBUG', 'link-48');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-name">profile</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> <tt class="py-name">graphs</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L136"></a><tt class="py-lineno"> 136</tt>  <tt class="py-line">    <tt class="py-name">list_classes_separately</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> <tt class="py-name">graph_font</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">graph_font_size</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L137"></a><tt class="py-lineno"> 137</tt>  <tt class="py-line">    <tt class="py-name">include_source_code</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> <tt class="py-name">pstat_files</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">simple_term</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> <tt class="py-name">fail_on</tt><tt class="py- [...]
+<a name="L138"></a><tt class="py-lineno"> 138</tt>  <tt class="py-line">    <tt class="py-name">exclude</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">exclude_parse</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">exclude_introspect</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L139"></a><tt class="py-lineno"> 139</tt>  <tt class="py-line">    <tt class="py-name">external_api</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">external_api_file</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">external_api_root</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L140"></a><tt class="py-lineno"> 140</tt>  <tt class="py-line">    <tt class="py-name">redundant_details</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> <tt class="py-name">src_code_tab_width</tt><tt class="py-op">=</tt><tt class="py-number">8</tt><tt class="py-op">)</tt> </tt>
+<a name="L141"></a><tt class="py-lineno"> 141</tt>  <tt class="py-line"> </tt>
+<a name="parse_arguments"></a><div id="parse_arguments-def"><a name="L142"></a><tt class="py-lineno"> 142</tt> <a class="py-toggle" href="#" id="parse_arguments-toggle" onclick="return toggle('parse_arguments');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.cli-module.html#parse_arguments">parse_arguments</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="parse_arguments-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="parse_arguments-expanded"><a name="L143"></a><tt class="py-lineno"> 143</tt>  <tt class="py-line">    <tt class="py-comment"># Construct the option parser.</tt> </tt>
+<a name="L144"></a><tt class="py-lineno"> 144</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">usage</tt> <tt class="py-op">=</tt> <tt class="py-string">'%prog [ACTION] [options] NAMES...'</tt> </tt>
+<a name="L145"></a><tt class="py-lineno"> 145</tt>  <tt class="py-line">    <tt class="py-name">version</tt> <tt class="py-op">=</tt> <tt class="py-string">"Epydoc, version %s"</tt> <tt class="py-op">%</tt> <tt id="link-49" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-49', 'epydoc', 'link-0');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-50" class="py-name" targets="Variable epydoc.__version__=epydoc-module.html#__version__"><a title="e [...]
+<a name="L146"></a><tt class="py-lineno"> 146</tt>  <tt class="py-line">    <tt class="py-name">optparser</tt> <tt class="py-op">=</tt> <tt class="py-name">OptionParser</tt><tt class="py-op">(</tt><tt class="py-name">usage</tt><tt class="py-op">=</tt><tt class="py-name">usage</tt><tt class="py-op">,</tt> <tt class="py-name">add_help_option</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
+<a name="L147"></a><tt class="py-lineno"> 147</tt>  <tt class="py-line"> </tt>
+<a name="L148"></a><tt class="py-lineno"> 148</tt>  <tt class="py-line">    <tt class="py-name">optparser</tt><tt class="py-op">.</tt><tt class="py-name">add_option</tt><tt class="py-op">(</tt><tt class="py-string">'--config'</tt><tt class="py-op">,</tt> </tt>
+<a name="L149"></a><tt class="py-lineno"> 149</tt>  <tt class="py-line">        <tt class="py-name">action</tt><tt class="py-op">=</tt><tt class="py-string">'append'</tt><tt class="py-op">,</tt> <tt class="py-name">dest</tt><tt class="py-op">=</tt><tt class="py-string">"configfiles"</tt><tt class="py-op">,</tt> <tt class="py-name">metavar</tt><tt class="py-op">=</tt><tt class="py-string">'FILE'</tt><tt class="py-op">,</tt> </tt>
+<a name="L150"></a><tt class="py-lineno"> 150</tt>  <tt class="py-line">        <tt class="py-name">help</tt><tt class="py-op">=</tt><tt class="py-op">(</tt><tt class="py-string">"A configuration file, specifying additional OPTIONS "</tt> </tt>
+<a name="L151"></a><tt class="py-lineno"> 151</tt>  <tt class="py-line">              <tt class="py-string">"and/or NAMES.  This option may be repeated."</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L152"></a><tt class="py-lineno"> 152</tt>  <tt class="py-line"> </tt>
+<a name="L153"></a><tt class="py-lineno"> 153</tt>  <tt class="py-line">    <tt class="py-name">optparser</tt><tt class="py-op">.</tt><tt class="py-name">add_option</tt><tt class="py-op">(</tt><tt class="py-string">"--output"</tt><tt class="py-op">,</tt> <tt class="py-string">"-o"</tt><tt class="py-op">,</tt> </tt>
+<a name="L154"></a><tt class="py-lineno"> 154</tt>  <tt class="py-line">        <tt class="py-name">dest</tt><tt class="py-op">=</tt><tt class="py-string">"target"</tt><tt class="py-op">,</tt> <tt class="py-name">metavar</tt><tt class="py-op">=</tt><tt class="py-string">"PATH"</tt><tt class="py-op">,</tt> </tt>
+<a name="L155"></a><tt class="py-lineno"> 155</tt>  <tt class="py-line">        <tt class="py-name">help</tt><tt class="py-op">=</tt><tt class="py-string">"The output directory.  If PATH does not exist, then "</tt> </tt>
+<a name="L156"></a><tt class="py-lineno"> 156</tt>  <tt class="py-line">        <tt class="py-string">"it will be created."</tt><tt class="py-op">)</tt> </tt>
+<a name="L157"></a><tt class="py-lineno"> 157</tt>  <tt class="py-line"> </tt>
+<a name="L158"></a><tt class="py-lineno"> 158</tt>  <tt class="py-line">    <tt class="py-name">optparser</tt><tt class="py-op">.</tt><tt class="py-name">add_option</tt><tt class="py-op">(</tt><tt class="py-string">"--quiet"</tt><tt class="py-op">,</tt> <tt class="py-string">"-q"</tt><tt class="py-op">,</tt> </tt>
+<a name="L159"></a><tt class="py-lineno"> 159</tt>  <tt class="py-line">        <tt class="py-name">action</tt><tt class="py-op">=</tt><tt class="py-string">"count"</tt><tt class="py-op">,</tt> <tt class="py-name">dest</tt><tt class="py-op">=</tt><tt class="py-string">"quiet"</tt><tt class="py-op">,</tt> </tt>
+<a name="L160"></a><tt class="py-lineno"> 160</tt>  <tt class="py-line">        <tt class="py-name">help</tt><tt class="py-op">=</tt><tt class="py-string">"Decrease the verbosity."</tt><tt class="py-op">)</tt> </tt>
+<a name="L161"></a><tt class="py-lineno"> 161</tt>  <tt class="py-line"> </tt>
+<a name="L162"></a><tt class="py-lineno"> 162</tt>  <tt class="py-line">    <tt class="py-name">optparser</tt><tt class="py-op">.</tt><tt class="py-name">add_option</tt><tt class="py-op">(</tt><tt class="py-string">"--verbose"</tt><tt class="py-op">,</tt> <tt class="py-string">"-v"</tt><tt class="py-op">,</tt> </tt>
+<a name="L163"></a><tt class="py-lineno"> 163</tt>  <tt class="py-line">        <tt class="py-name">action</tt><tt class="py-op">=</tt><tt class="py-string">"count"</tt><tt class="py-op">,</tt> <tt class="py-name">dest</tt><tt class="py-op">=</tt><tt class="py-string">"verbose"</tt><tt class="py-op">,</tt> </tt>
+<a name="L164"></a><tt class="py-lineno"> 164</tt>  <tt class="py-line">        <tt class="py-name">help</tt><tt class="py-op">=</tt><tt class="py-string">"Increase the verbosity."</tt><tt class="py-op">)</tt> </tt>
+<a name="L165"></a><tt class="py-lineno"> 165</tt>  <tt class="py-line"> </tt>
+<a name="L166"></a><tt class="py-lineno"> 166</tt>  <tt class="py-line">    <tt class="py-name">optparser</tt><tt class="py-op">.</tt><tt class="py-name">add_option</tt><tt class="py-op">(</tt><tt class="py-string">"--debug"</tt><tt class="py-op">,</tt> </tt>
+<a name="L167"></a><tt class="py-lineno"> 167</tt>  <tt class="py-line">        <tt class="py-name">action</tt><tt class="py-op">=</tt><tt class="py-string">"store_true"</tt><tt class="py-op">,</tt> <tt class="py-name">dest</tt><tt class="py-op">=</tt><tt class="py-string">"debug"</tt><tt class="py-op">,</tt> </tt>
+<a name="L168"></a><tt class="py-lineno"> 168</tt>  <tt class="py-line">        <tt class="py-name">help</tt><tt class="py-op">=</tt><tt class="py-string">"Show full tracebacks for internal errors."</tt><tt class="py-op">)</tt> </tt>
+<a name="L169"></a><tt class="py-lineno"> 169</tt>  <tt class="py-line"> </tt>
+<a name="L170"></a><tt class="py-lineno"> 170</tt>  <tt class="py-line">    <tt class="py-name">optparser</tt><tt class="py-op">.</tt><tt class="py-name">add_option</tt><tt class="py-op">(</tt><tt class="py-string">"--simple-term"</tt><tt class="py-op">,</tt> </tt>
+<a name="L171"></a><tt class="py-lineno"> 171</tt>  <tt class="py-line">        <tt class="py-name">action</tt><tt class="py-op">=</tt><tt class="py-string">"store_true"</tt><tt class="py-op">,</tt> <tt class="py-name">dest</tt><tt class="py-op">=</tt><tt class="py-string">"simple_term"</tt><tt class="py-op">,</tt> </tt>
+<a name="L172"></a><tt class="py-lineno"> 172</tt>  <tt class="py-line">        <tt class="py-name">help</tt><tt class="py-op">=</tt><tt class="py-string">"Do not try to use color or cursor control when displaying "</tt> </tt>
+<a name="L173"></a><tt class="py-lineno"> 173</tt>  <tt class="py-line">        <tt class="py-string">"the progress bar, warnings, or errors."</tt><tt class="py-op">)</tt> </tt>
+<a name="L174"></a><tt class="py-lineno"> 174</tt>  <tt class="py-line"> </tt>
+<a name="L175"></a><tt class="py-lineno"> 175</tt>  <tt class="py-line"> </tt>
+<a name="L176"></a><tt class="py-lineno"> 176</tt>  <tt class="py-line">    <tt class="py-name">action_group</tt> <tt class="py-op">=</tt> <tt class="py-name">OptionGroup</tt><tt class="py-op">(</tt><tt class="py-name">optparser</tt><tt class="py-op">,</tt> <tt class="py-string">'Actions'</tt><tt class="py-op">)</tt> </tt>
+<a name="L177"></a><tt class="py-lineno"> 177</tt>  <tt class="py-line">    <tt class="py-name">optparser</tt><tt class="py-op">.</tt><tt class="py-name">add_option_group</tt><tt class="py-op">(</tt><tt class="py-name">action_group</tt><tt class="py-op">)</tt> </tt>
+<a name="L178"></a><tt class="py-lineno"> 178</tt>  <tt class="py-line"> </tt>
+<a name="L179"></a><tt class="py-lineno"> 179</tt>  <tt class="py-line">    <tt class="py-name">action_group</tt><tt class="py-op">.</tt><tt class="py-name">add_option</tt><tt class="py-op">(</tt><tt class="py-string">"--html"</tt><tt class="py-op">,</tt> </tt>
+<a name="L180"></a><tt class="py-lineno"> 180</tt>  <tt class="py-line">        <tt class="py-name">action</tt><tt class="py-op">=</tt><tt class="py-string">"store_const"</tt><tt class="py-op">,</tt> <tt class="py-name">dest</tt><tt class="py-op">=</tt><tt class="py-string">"action"</tt><tt class="py-op">,</tt> <tt class="py-name">const</tt><tt class="py-op">=</tt><tt class="py-string">"html"</tt><tt class="py-op">,</tt> </tt>
+<a name="L181"></a><tt class="py-lineno"> 181</tt>  <tt class="py-line">        <tt class="py-name">help</tt><tt class="py-op">=</tt><tt class="py-string">"Write HTML output."</tt><tt class="py-op">)</tt> </tt>
+<a name="L182"></a><tt class="py-lineno"> 182</tt>  <tt class="py-line"> </tt>
+<a name="L183"></a><tt class="py-lineno"> 183</tt>  <tt class="py-line">    <tt class="py-name">action_group</tt><tt class="py-op">.</tt><tt class="py-name">add_option</tt><tt class="py-op">(</tt><tt class="py-string">"--text"</tt><tt class="py-op">,</tt> </tt>
+<a name="L184"></a><tt class="py-lineno"> 184</tt>  <tt class="py-line">        <tt class="py-name">action</tt><tt class="py-op">=</tt><tt class="py-string">"store_const"</tt><tt class="py-op">,</tt> <tt class="py-name">dest</tt><tt class="py-op">=</tt><tt class="py-string">"action"</tt><tt class="py-op">,</tt> <tt class="py-name">const</tt><tt class="py-op">=</tt><tt class="py-string">"text"</tt><tt class="py-op">,</tt> </tt>
+<a name="L185"></a><tt class="py-lineno"> 185</tt>  <tt class="py-line">        <tt class="py-name">help</tt><tt class="py-op">=</tt><tt class="py-string">"Write plaintext output. (not implemented yet)"</tt><tt class="py-op">)</tt> </tt>
+<a name="L186"></a><tt class="py-lineno"> 186</tt>  <tt class="py-line"> </tt>
+<a name="L187"></a><tt class="py-lineno"> 187</tt>  <tt class="py-line">    <tt class="py-name">action_group</tt><tt class="py-op">.</tt><tt class="py-name">add_option</tt><tt class="py-op">(</tt><tt class="py-string">"--latex"</tt><tt class="py-op">,</tt> </tt>
+<a name="L188"></a><tt class="py-lineno"> 188</tt>  <tt class="py-line">        <tt class="py-name">action</tt><tt class="py-op">=</tt><tt class="py-string">"store_const"</tt><tt class="py-op">,</tt> <tt class="py-name">dest</tt><tt class="py-op">=</tt><tt class="py-string">"action"</tt><tt class="py-op">,</tt> <tt class="py-name">const</tt><tt class="py-op">=</tt><tt class="py-string">"latex"</tt><tt class="py-op">,</tt> </tt>
+<a name="L189"></a><tt class="py-lineno"> 189</tt>  <tt class="py-line">        <tt class="py-name">help</tt><tt class="py-op">=</tt><tt class="py-string">"Write LaTeX output."</tt><tt class="py-op">)</tt> </tt>
+<a name="L190"></a><tt class="py-lineno"> 190</tt>  <tt class="py-line"> </tt>
+<a name="L191"></a><tt class="py-lineno"> 191</tt>  <tt class="py-line">    <tt class="py-name">action_group</tt><tt class="py-op">.</tt><tt class="py-name">add_option</tt><tt class="py-op">(</tt><tt class="py-string">"--dvi"</tt><tt class="py-op">,</tt> </tt>
+<a name="L192"></a><tt class="py-lineno"> 192</tt>  <tt class="py-line">        <tt class="py-name">action</tt><tt class="py-op">=</tt><tt class="py-string">"store_const"</tt><tt class="py-op">,</tt> <tt class="py-name">dest</tt><tt class="py-op">=</tt><tt class="py-string">"action"</tt><tt class="py-op">,</tt> <tt class="py-name">const</tt><tt class="py-op">=</tt><tt class="py-string">"dvi"</tt><tt class="py-op">,</tt> </tt>
+<a name="L193"></a><tt class="py-lineno"> 193</tt>  <tt class="py-line">        <tt class="py-name">help</tt><tt class="py-op">=</tt><tt class="py-string">"Write DVI output."</tt><tt class="py-op">)</tt> </tt>
+<a name="L194"></a><tt class="py-lineno"> 194</tt>  <tt class="py-line"> </tt>
+<a name="L195"></a><tt class="py-lineno"> 195</tt>  <tt class="py-line">    <tt class="py-name">action_group</tt><tt class="py-op">.</tt><tt class="py-name">add_option</tt><tt class="py-op">(</tt><tt class="py-string">"--ps"</tt><tt class="py-op">,</tt> </tt>
+<a name="L196"></a><tt class="py-lineno"> 196</tt>  <tt class="py-line">        <tt class="py-name">action</tt><tt class="py-op">=</tt><tt class="py-string">"store_const"</tt><tt class="py-op">,</tt> <tt class="py-name">dest</tt><tt class="py-op">=</tt><tt class="py-string">"action"</tt><tt class="py-op">,</tt> <tt class="py-name">const</tt><tt class="py-op">=</tt><tt class="py-string">"ps"</tt><tt class="py-op">,</tt> </tt>
+<a name="L197"></a><tt class="py-lineno"> 197</tt>  <tt class="py-line">        <tt class="py-name">help</tt><tt class="py-op">=</tt><tt class="py-string">"Write Postscript output."</tt><tt class="py-op">)</tt> </tt>
+<a name="L198"></a><tt class="py-lineno"> 198</tt>  <tt class="py-line"> </tt>
+<a name="L199"></a><tt class="py-lineno"> 199</tt>  <tt class="py-line">    <tt class="py-name">action_group</tt><tt class="py-op">.</tt><tt class="py-name">add_option</tt><tt class="py-op">(</tt><tt class="py-string">"--pdf"</tt><tt class="py-op">,</tt> </tt>
+<a name="L200"></a><tt class="py-lineno"> 200</tt>  <tt class="py-line">        <tt class="py-name">action</tt><tt class="py-op">=</tt><tt class="py-string">"store_const"</tt><tt class="py-op">,</tt> <tt class="py-name">dest</tt><tt class="py-op">=</tt><tt class="py-string">"action"</tt><tt class="py-op">,</tt> <tt class="py-name">const</tt><tt class="py-op">=</tt><tt class="py-string">"pdf"</tt><tt class="py-op">,</tt> </tt>
+<a name="L201"></a><tt class="py-lineno"> 201</tt>  <tt class="py-line">        <tt class="py-name">help</tt><tt class="py-op">=</tt><tt class="py-string">"Write PDF output."</tt><tt class="py-op">)</tt> </tt>
+<a name="L202"></a><tt class="py-lineno"> 202</tt>  <tt class="py-line"> </tt>
+<a name="L203"></a><tt class="py-lineno"> 203</tt>  <tt class="py-line">    <tt class="py-name">action_group</tt><tt class="py-op">.</tt><tt class="py-name">add_option</tt><tt class="py-op">(</tt><tt class="py-string">"--check"</tt><tt class="py-op">,</tt> </tt>
+<a name="L204"></a><tt class="py-lineno"> 204</tt>  <tt class="py-line">        <tt class="py-name">action</tt><tt class="py-op">=</tt><tt class="py-string">"store_const"</tt><tt class="py-op">,</tt> <tt class="py-name">dest</tt><tt class="py-op">=</tt><tt class="py-string">"action"</tt><tt class="py-op">,</tt> <tt class="py-name">const</tt><tt class="py-op">=</tt><tt class="py-string">"check"</tt><tt class="py-op">,</tt> </tt>
+<a name="L205"></a><tt class="py-lineno"> 205</tt>  <tt class="py-line">        <tt class="py-name">help</tt><tt class="py-op">=</tt><tt class="py-string">"Check completeness of docs."</tt><tt class="py-op">)</tt> </tt>
+<a name="L206"></a><tt class="py-lineno"> 206</tt>  <tt class="py-line"> </tt>
+<a name="L207"></a><tt class="py-lineno"> 207</tt>  <tt class="py-line">    <tt class="py-name">action_group</tt><tt class="py-op">.</tt><tt class="py-name">add_option</tt><tt class="py-op">(</tt><tt class="py-string">"--pickle"</tt><tt class="py-op">,</tt> </tt>
+<a name="L208"></a><tt class="py-lineno"> 208</tt>  <tt class="py-line">        <tt class="py-name">action</tt><tt class="py-op">=</tt><tt class="py-string">"store_const"</tt><tt class="py-op">,</tt> <tt class="py-name">dest</tt><tt class="py-op">=</tt><tt class="py-string">"action"</tt><tt class="py-op">,</tt> <tt class="py-name">const</tt><tt class="py-op">=</tt><tt class="py-string">"pickle"</tt><tt class="py-op">,</tt> </tt>
+<a name="L209"></a><tt class="py-lineno"> 209</tt>  <tt class="py-line">        <tt class="py-name">help</tt><tt class="py-op">=</tt><tt class="py-string">"Write the documentation to a pickle file."</tt><tt class="py-op">)</tt> </tt>
+<a name="L210"></a><tt class="py-lineno"> 210</tt>  <tt class="py-line"> </tt>
+<a name="L211"></a><tt class="py-lineno"> 211</tt>  <tt class="py-line">    <tt class="py-comment"># Provide our own --help and --version options.</tt> </tt>
+<a name="L212"></a><tt class="py-lineno"> 212</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">action_group</tt><tt class="py-op">.</tt><tt class="py-name">add_option</tt><tt class="py-op">(</tt><tt class="py-string">"--version"</tt><tt class="py-op">,</tt> </tt>
+<a name="L213"></a><tt class="py-lineno"> 213</tt>  <tt class="py-line">        <tt class="py-name">action</tt><tt class="py-op">=</tt><tt class="py-string">"store_const"</tt><tt class="py-op">,</tt> <tt class="py-name">dest</tt><tt class="py-op">=</tt><tt class="py-string">"action"</tt><tt class="py-op">,</tt> <tt class="py-name">const</tt><tt class="py-op">=</tt><tt class="py-string">"version"</tt><tt class="py-op">,</tt> </tt>
+<a name="L214"></a><tt class="py-lineno"> 214</tt>  <tt class="py-line">        <tt class="py-name">help</tt><tt class="py-op">=</tt><tt class="py-string">"Show epydoc's version number and exit."</tt><tt class="py-op">)</tt> </tt>
+<a name="L215"></a><tt class="py-lineno"> 215</tt>  <tt class="py-line"> </tt>
+<a name="L216"></a><tt class="py-lineno"> 216</tt>  <tt class="py-line">    <tt class="py-name">action_group</tt><tt class="py-op">.</tt><tt class="py-name">add_option</tt><tt class="py-op">(</tt><tt class="py-string">"-h"</tt><tt class="py-op">,</tt> <tt class="py-string">"--help"</tt><tt class="py-op">,</tt> </tt>
+<a name="L217"></a><tt class="py-lineno"> 217</tt>  <tt class="py-line">        <tt class="py-name">action</tt><tt class="py-op">=</tt><tt class="py-string">"store_const"</tt><tt class="py-op">,</tt> <tt class="py-name">dest</tt><tt class="py-op">=</tt><tt class="py-string">"action"</tt><tt class="py-op">,</tt> <tt class="py-name">const</tt><tt class="py-op">=</tt><tt class="py-string">"help"</tt><tt class="py-op">,</tt> </tt>
+<a name="L218"></a><tt class="py-lineno"> 218</tt>  <tt class="py-line">        <tt class="py-name">help</tt><tt class="py-op">=</tt><tt class="py-string">"Show this message and exit.  For help on specific "</tt> </tt>
+<a name="L219"></a><tt class="py-lineno"> 219</tt>  <tt class="py-line">        <tt class="py-string">"topics, use \"--help TOPIC\".  Use \"--help topics\" for a "</tt> </tt>
+<a name="L220"></a><tt class="py-lineno"> 220</tt>  <tt class="py-line">        <tt class="py-string">"list of available help topics"</tt><tt class="py-op">)</tt> </tt>
+<a name="L221"></a><tt class="py-lineno"> 221</tt>  <tt class="py-line"> </tt>
+<a name="L222"></a><tt class="py-lineno"> 222</tt>  <tt class="py-line"> </tt>
+<a name="L223"></a><tt class="py-lineno"> 223</tt>  <tt class="py-line">    <tt class="py-name">generation_group</tt> <tt class="py-op">=</tt> <tt class="py-name">OptionGroup</tt><tt class="py-op">(</tt><tt class="py-name">optparser</tt><tt class="py-op">,</tt> <tt class="py-string">'Generation Options'</tt><tt class="py-op">)</tt> </tt>
+<a name="L224"></a><tt class="py-lineno"> 224</tt>  <tt class="py-line">    <tt class="py-name">optparser</tt><tt class="py-op">.</tt><tt class="py-name">add_option_group</tt><tt class="py-op">(</tt><tt class="py-name">generation_group</tt><tt class="py-op">)</tt> </tt>
+<a name="L225"></a><tt class="py-lineno"> 225</tt>  <tt class="py-line"> </tt>
+<a name="L226"></a><tt class="py-lineno"> 226</tt>  <tt class="py-line">    <tt class="py-name">generation_group</tt><tt class="py-op">.</tt><tt class="py-name">add_option</tt><tt class="py-op">(</tt><tt class="py-string">"--docformat"</tt><tt class="py-op">,</tt> </tt>
+<a name="L227"></a><tt class="py-lineno"> 227</tt>  <tt class="py-line">        <tt class="py-name">dest</tt><tt class="py-op">=</tt><tt class="py-string">"docformat"</tt><tt class="py-op">,</tt> <tt class="py-name">metavar</tt><tt class="py-op">=</tt><tt class="py-string">"NAME"</tt><tt class="py-op">,</tt> </tt>
+<a name="L228"></a><tt class="py-lineno"> 228</tt>  <tt class="py-line">        <tt class="py-name">help</tt><tt class="py-op">=</tt><tt class="py-string">"The default markup language for docstrings.  Defaults "</tt> </tt>
+<a name="L229"></a><tt class="py-lineno"> 229</tt>  <tt class="py-line">        <tt class="py-string">"to \"%s\"."</tt> <tt class="py-op">%</tt> <tt id="link-51" class="py-name"><a title="epydoc.cli.DEFAULT_DOCFORMAT
+epydoc.docstringparser.DEFAULT_DOCFORMAT" class="py-name" href="#" onclick="return doclink('link-51', 'DEFAULT_DOCFORMAT', 'link-27');">DEFAULT_DOCFORMAT</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L230"></a><tt class="py-lineno"> 230</tt>  <tt class="py-line"> </tt>
+<a name="L231"></a><tt class="py-lineno"> 231</tt>  <tt class="py-line">    <tt class="py-name">generation_group</tt><tt class="py-op">.</tt><tt class="py-name">add_option</tt><tt class="py-op">(</tt><tt class="py-string">"--parse-only"</tt><tt class="py-op">,</tt> </tt>
+<a name="L232"></a><tt class="py-lineno"> 232</tt>  <tt class="py-line">        <tt class="py-name">action</tt><tt class="py-op">=</tt><tt class="py-string">"store_false"</tt><tt class="py-op">,</tt> <tt class="py-name">dest</tt><tt class="py-op">=</tt><tt class="py-string">"introspect"</tt><tt class="py-op">,</tt> </tt>
+<a name="L233"></a><tt class="py-lineno"> 233</tt>  <tt class="py-line">        <tt class="py-name">help</tt><tt class="py-op">=</tt><tt class="py-string">"Get all information from parsing (don't introspect)"</tt><tt class="py-op">)</tt> </tt>
+<a name="L234"></a><tt class="py-lineno"> 234</tt>  <tt class="py-line"> </tt>
+<a name="L235"></a><tt class="py-lineno"> 235</tt>  <tt class="py-line">    <tt class="py-name">generation_group</tt><tt class="py-op">.</tt><tt class="py-name">add_option</tt><tt class="py-op">(</tt><tt class="py-string">"--introspect-only"</tt><tt class="py-op">,</tt> </tt>
+<a name="L236"></a><tt class="py-lineno"> 236</tt>  <tt class="py-line">        <tt class="py-name">action</tt><tt class="py-op">=</tt><tt class="py-string">"store_false"</tt><tt class="py-op">,</tt> <tt class="py-name">dest</tt><tt class="py-op">=</tt><tt class="py-string">"parse"</tt><tt class="py-op">,</tt> </tt>
+<a name="L237"></a><tt class="py-lineno"> 237</tt>  <tt class="py-line">        <tt class="py-name">help</tt><tt class="py-op">=</tt><tt class="py-string">"Get all information from introspecting (don't parse)"</tt><tt class="py-op">)</tt> </tt>
+<a name="L238"></a><tt class="py-lineno"> 238</tt>  <tt class="py-line"> </tt>
+<a name="L239"></a><tt class="py-lineno"> 239</tt>  <tt class="py-line">    <tt class="py-name">generation_group</tt><tt class="py-op">.</tt><tt class="py-name">add_option</tt><tt class="py-op">(</tt><tt class="py-string">"--exclude"</tt><tt class="py-op">,</tt> </tt>
+<a name="L240"></a><tt class="py-lineno"> 240</tt>  <tt class="py-line">        <tt class="py-name">dest</tt><tt class="py-op">=</tt><tt class="py-string">"exclude"</tt><tt class="py-op">,</tt> <tt class="py-name">metavar</tt><tt class="py-op">=</tt><tt class="py-string">"PATTERN"</tt><tt class="py-op">,</tt> <tt class="py-name">action</tt><tt class="py-op">=</tt><tt class="py-string">"append"</tt><tt class="py-op">,</tt> </tt>
+<a name="L241"></a><tt class="py-lineno"> 241</tt>  <tt class="py-line">        <tt class="py-name">help</tt><tt class="py-op">=</tt><tt class="py-string">"Exclude modules whose dotted name matches "</tt> </tt>
+<a name="L242"></a><tt class="py-lineno"> 242</tt>  <tt class="py-line">             <tt class="py-string">"the regular expression PATTERN"</tt><tt class="py-op">)</tt> </tt>
+<a name="L243"></a><tt class="py-lineno"> 243</tt>  <tt class="py-line"> </tt>
+<a name="L244"></a><tt class="py-lineno"> 244</tt>  <tt class="py-line">    <tt class="py-name">generation_group</tt><tt class="py-op">.</tt><tt class="py-name">add_option</tt><tt class="py-op">(</tt><tt class="py-string">"--exclude-introspect"</tt><tt class="py-op">,</tt> </tt>
+<a name="L245"></a><tt class="py-lineno"> 245</tt>  <tt class="py-line">        <tt class="py-name">dest</tt><tt class="py-op">=</tt><tt class="py-string">"exclude_introspect"</tt><tt class="py-op">,</tt> <tt class="py-name">metavar</tt><tt class="py-op">=</tt><tt class="py-string">"PATTERN"</tt><tt class="py-op">,</tt> <tt class="py-name">action</tt><tt class="py-op">=</tt><tt class="py-string">"append"</tt><tt class="py-op">,</tt> </tt>
+<a name="L246"></a><tt class="py-lineno"> 246</tt>  <tt class="py-line">        <tt class="py-name">help</tt><tt class="py-op">=</tt><tt class="py-string">"Exclude introspection of modules whose dotted name matches "</tt> </tt>
+<a name="L247"></a><tt class="py-lineno"> 247</tt>  <tt class="py-line">             <tt class="py-string">"the regular expression PATTERN"</tt><tt class="py-op">)</tt> </tt>
+<a name="L248"></a><tt class="py-lineno"> 248</tt>  <tt class="py-line"> </tt>
+<a name="L249"></a><tt class="py-lineno"> 249</tt>  <tt class="py-line">    <tt class="py-name">generation_group</tt><tt class="py-op">.</tt><tt class="py-name">add_option</tt><tt class="py-op">(</tt><tt class="py-string">"--exclude-parse"</tt><tt class="py-op">,</tt> </tt>
+<a name="L250"></a><tt class="py-lineno"> 250</tt>  <tt class="py-line">        <tt class="py-name">dest</tt><tt class="py-op">=</tt><tt class="py-string">"exclude_parse"</tt><tt class="py-op">,</tt> <tt class="py-name">metavar</tt><tt class="py-op">=</tt><tt class="py-string">"PATTERN"</tt><tt class="py-op">,</tt> <tt class="py-name">action</tt><tt class="py-op">=</tt><tt class="py-string">"append"</tt><tt class="py-op">,</tt> </tt>
+<a name="L251"></a><tt class="py-lineno"> 251</tt>  <tt class="py-line">        <tt class="py-name">help</tt><tt class="py-op">=</tt><tt class="py-string">"Exclude parsing of modules whose dotted name matches "</tt> </tt>
+<a name="L252"></a><tt class="py-lineno"> 252</tt>  <tt class="py-line">             <tt class="py-string">"the regular expression PATTERN"</tt><tt class="py-op">)</tt> </tt>
+<a name="L253"></a><tt class="py-lineno"> 253</tt>  <tt class="py-line"> </tt>
+<a name="L254"></a><tt class="py-lineno"> 254</tt>  <tt class="py-line">    <tt class="py-name">generation_group</tt><tt class="py-op">.</tt><tt class="py-name">add_option</tt><tt class="py-op">(</tt><tt class="py-string">"--inheritance"</tt><tt class="py-op">,</tt> </tt>
+<a name="L255"></a><tt class="py-lineno"> 255</tt>  <tt class="py-line">        <tt class="py-name">dest</tt><tt class="py-op">=</tt><tt class="py-string">"inheritance"</tt><tt class="py-op">,</tt> <tt class="py-name">metavar</tt><tt class="py-op">=</tt><tt class="py-string">"STYLE"</tt><tt class="py-op">,</tt> </tt>
+<a name="L256"></a><tt class="py-lineno"> 256</tt>  <tt class="py-line">        <tt class="py-name">help</tt><tt class="py-op">=</tt><tt class="py-string">"The format for showing inheritance objects.  STYLE "</tt> </tt>
+<a name="L257"></a><tt class="py-lineno"> 257</tt>  <tt class="py-line">        <tt class="py-string">"should be one of: %s."</tt> <tt class="py-op">%</tt> <tt class="py-string">', '</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt id="link-52" class="py-name"><a title="epydoc.cli.INHERITANCE_STYLES" class="py-name" href="#" onclick="return doclink('link-52', 'INHERITANCE_STYLES', 'link-24');">INHERITANCE_STYLES</a></tt><tt class="py-op">)</tt><tt clas [...]
+<a name="L258"></a><tt class="py-lineno"> 258</tt>  <tt class="py-line"> </tt>
+<a name="L259"></a><tt class="py-lineno"> 259</tt>  <tt class="py-line">    <tt class="py-name">generation_group</tt><tt class="py-op">.</tt><tt class="py-name">add_option</tt><tt class="py-op">(</tt><tt class="py-string">"--show-private"</tt><tt class="py-op">,</tt> </tt>
+<a name="L260"></a><tt class="py-lineno"> 260</tt>  <tt class="py-line">        <tt class="py-name">action</tt><tt class="py-op">=</tt><tt class="py-string">"store_true"</tt><tt class="py-op">,</tt> <tt class="py-name">dest</tt><tt class="py-op">=</tt><tt class="py-string">"show_private"</tt><tt class="py-op">,</tt> </tt>
+<a name="L261"></a><tt class="py-lineno"> 261</tt>  <tt class="py-line">        <tt class="py-name">help</tt><tt class="py-op">=</tt><tt class="py-string">"Include private variables in the output. (default)"</tt><tt class="py-op">)</tt> </tt>
+<a name="L262"></a><tt class="py-lineno"> 262</tt>  <tt class="py-line"> </tt>
+<a name="L263"></a><tt class="py-lineno"> 263</tt>  <tt class="py-line">    <tt class="py-name">generation_group</tt><tt class="py-op">.</tt><tt class="py-name">add_option</tt><tt class="py-op">(</tt><tt class="py-string">"--no-private"</tt><tt class="py-op">,</tt> </tt>
+<a name="L264"></a><tt class="py-lineno"> 264</tt>  <tt class="py-line">        <tt class="py-name">action</tt><tt class="py-op">=</tt><tt class="py-string">"store_false"</tt><tt class="py-op">,</tt> <tt class="py-name">dest</tt><tt class="py-op">=</tt><tt class="py-string">"show_private"</tt><tt class="py-op">,</tt> </tt>
+<a name="L265"></a><tt class="py-lineno"> 265</tt>  <tt class="py-line">        <tt class="py-name">help</tt><tt class="py-op">=</tt><tt class="py-string">"Do not include private variables in the output."</tt><tt class="py-op">)</tt> </tt>
+<a name="L266"></a><tt class="py-lineno"> 266</tt>  <tt class="py-line"> </tt>
+<a name="L267"></a><tt class="py-lineno"> 267</tt>  <tt class="py-line">    <tt class="py-name">generation_group</tt><tt class="py-op">.</tt><tt class="py-name">add_option</tt><tt class="py-op">(</tt><tt class="py-string">"--show-imports"</tt><tt class="py-op">,</tt> </tt>
+<a name="L268"></a><tt class="py-lineno"> 268</tt>  <tt class="py-line">        <tt class="py-name">action</tt><tt class="py-op">=</tt><tt class="py-string">"store_true"</tt><tt class="py-op">,</tt> <tt class="py-name">dest</tt><tt class="py-op">=</tt><tt class="py-string">"show_imports"</tt><tt class="py-op">,</tt> </tt>
+<a name="L269"></a><tt class="py-lineno"> 269</tt>  <tt class="py-line">        <tt class="py-name">help</tt><tt class="py-op">=</tt><tt class="py-string">"List each module's imports."</tt><tt class="py-op">)</tt> </tt>
+<a name="L270"></a><tt class="py-lineno"> 270</tt>  <tt class="py-line"> </tt>
+<a name="L271"></a><tt class="py-lineno"> 271</tt>  <tt class="py-line">    <tt class="py-name">generation_group</tt><tt class="py-op">.</tt><tt class="py-name">add_option</tt><tt class="py-op">(</tt><tt class="py-string">"--no-imports"</tt><tt class="py-op">,</tt> </tt>
+<a name="L272"></a><tt class="py-lineno"> 272</tt>  <tt class="py-line">        <tt class="py-name">action</tt><tt class="py-op">=</tt><tt class="py-string">"store_false"</tt><tt class="py-op">,</tt> <tt class="py-name">dest</tt><tt class="py-op">=</tt><tt class="py-string">"show_imports"</tt><tt class="py-op">,</tt> </tt>
+<a name="L273"></a><tt class="py-lineno"> 273</tt>  <tt class="py-line">        <tt class="py-name">help</tt><tt class="py-op">=</tt><tt class="py-string">"Do not list each module's imports. (default)"</tt><tt class="py-op">)</tt> </tt>
+<a name="L274"></a><tt class="py-lineno"> 274</tt>  <tt class="py-line"> </tt>
+<a name="L275"></a><tt class="py-lineno"> 275</tt>  <tt class="py-line">    <tt class="py-name">generation_group</tt><tt class="py-op">.</tt><tt class="py-name">add_option</tt><tt class="py-op">(</tt><tt class="py-string">'--show-sourcecode'</tt><tt class="py-op">,</tt> </tt>
+<a name="L276"></a><tt class="py-lineno"> 276</tt>  <tt class="py-line">        <tt class="py-name">action</tt><tt class="py-op">=</tt><tt class="py-string">'store_true'</tt><tt class="py-op">,</tt> <tt class="py-name">dest</tt><tt class="py-op">=</tt><tt class="py-string">'include_source_code'</tt><tt class="py-op">,</tt> </tt>
+<a name="L277"></a><tt class="py-lineno"> 277</tt>  <tt class="py-line">        <tt class="py-name">help</tt><tt class="py-op">=</tt><tt class="py-op">(</tt><tt class="py-string">"Include source code with syntax highlighting in the "</tt> </tt>
+<a name="L278"></a><tt class="py-lineno"> 278</tt>  <tt class="py-line">              <tt class="py-string">"HTML output. (default)"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L279"></a><tt class="py-lineno"> 279</tt>  <tt class="py-line"> </tt>
+<a name="L280"></a><tt class="py-lineno"> 280</tt>  <tt class="py-line">    <tt class="py-name">generation_group</tt><tt class="py-op">.</tt><tt class="py-name">add_option</tt><tt class="py-op">(</tt><tt class="py-string">'--no-sourcecode'</tt><tt class="py-op">,</tt> </tt>
+<a name="L281"></a><tt class="py-lineno"> 281</tt>  <tt class="py-line">        <tt class="py-name">action</tt><tt class="py-op">=</tt><tt class="py-string">'store_false'</tt><tt class="py-op">,</tt> <tt class="py-name">dest</tt><tt class="py-op">=</tt><tt class="py-string">'include_source_code'</tt><tt class="py-op">,</tt> </tt>
+<a name="L282"></a><tt class="py-lineno"> 282</tt>  <tt class="py-line">        <tt class="py-name">help</tt><tt class="py-op">=</tt><tt class="py-op">(</tt><tt class="py-string">"Do not include source code with syntax highlighting in the "</tt> </tt>
+<a name="L283"></a><tt class="py-lineno"> 283</tt>  <tt class="py-line">              <tt class="py-string">"HTML output."</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L284"></a><tt class="py-lineno"> 284</tt>  <tt class="py-line"> </tt>
+<a name="L285"></a><tt class="py-lineno"> 285</tt>  <tt class="py-line">    <tt class="py-name">generation_group</tt><tt class="py-op">.</tt><tt class="py-name">add_option</tt><tt class="py-op">(</tt><tt class="py-string">'--include-log'</tt><tt class="py-op">,</tt> </tt>
+<a name="L286"></a><tt class="py-lineno"> 286</tt>  <tt class="py-line">        <tt class="py-name">action</tt><tt class="py-op">=</tt><tt class="py-string">'store_true'</tt><tt class="py-op">,</tt> <tt class="py-name">dest</tt><tt class="py-op">=</tt><tt class="py-string">'include_log'</tt><tt class="py-op">,</tt> </tt>
+<a name="L287"></a><tt class="py-lineno"> 287</tt>  <tt class="py-line">        <tt class="py-name">help</tt><tt class="py-op">=</tt><tt class="py-op">(</tt><tt class="py-string">"Include a page with the process log (epydoc-log.html)"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L288"></a><tt class="py-lineno"> 288</tt>  <tt class="py-line"> </tt>
+<a name="L289"></a><tt class="py-lineno"> 289</tt>  <tt class="py-line">    <tt class="py-name">generation_group</tt><tt class="py-op">.</tt><tt class="py-name">add_option</tt><tt class="py-op">(</tt> </tt>
+<a name="L290"></a><tt class="py-lineno"> 290</tt>  <tt class="py-line">        <tt class="py-string">'--redundant-details'</tt><tt class="py-op">,</tt> </tt>
+<a name="L291"></a><tt class="py-lineno"> 291</tt>  <tt class="py-line">        <tt class="py-name">action</tt><tt class="py-op">=</tt><tt class="py-string">'store_true'</tt><tt class="py-op">,</tt> <tt class="py-name">dest</tt><tt class="py-op">=</tt><tt class="py-string">'redundant_details'</tt><tt class="py-op">,</tt> </tt>
+<a name="L292"></a><tt class="py-lineno"> 292</tt>  <tt class="py-line">        <tt class="py-name">help</tt><tt class="py-op">=</tt><tt class="py-op">(</tt><tt class="py-string">"Include values in the details lists even if all info "</tt> </tt>
+<a name="L293"></a><tt class="py-lineno"> 293</tt>  <tt class="py-line">              <tt class="py-string">"about them is already provided by the summary table."</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L294"></a><tt class="py-lineno"> 294</tt>  <tt class="py-line"> </tt>
+<a name="L295"></a><tt class="py-lineno"> 295</tt>  <tt class="py-line">    <tt class="py-name">output_group</tt> <tt class="py-op">=</tt> <tt class="py-name">OptionGroup</tt><tt class="py-op">(</tt><tt class="py-name">optparser</tt><tt class="py-op">,</tt> <tt class="py-string">'Output Options'</tt><tt class="py-op">)</tt> </tt>
+<a name="L296"></a><tt class="py-lineno"> 296</tt>  <tt class="py-line">    <tt class="py-name">optparser</tt><tt class="py-op">.</tt><tt class="py-name">add_option_group</tt><tt class="py-op">(</tt><tt class="py-name">output_group</tt><tt class="py-op">)</tt> </tt>
+<a name="L297"></a><tt class="py-lineno"> 297</tt>  <tt class="py-line"> </tt>
+<a name="L298"></a><tt class="py-lineno"> 298</tt>  <tt class="py-line">    <tt class="py-name">output_group</tt><tt class="py-op">.</tt><tt class="py-name">add_option</tt><tt class="py-op">(</tt><tt class="py-string">"--name"</tt><tt class="py-op">,</tt> <tt class="py-string">"-n"</tt><tt class="py-op">,</tt> </tt>
+<a name="L299"></a><tt class="py-lineno"> 299</tt>  <tt class="py-line">        <tt class="py-name">dest</tt><tt class="py-op">=</tt><tt class="py-string">"prj_name"</tt><tt class="py-op">,</tt> <tt class="py-name">metavar</tt><tt class="py-op">=</tt><tt class="py-string">"NAME"</tt><tt class="py-op">,</tt> </tt>
+<a name="L300"></a><tt class="py-lineno"> 300</tt>  <tt class="py-line">        <tt class="py-name">help</tt><tt class="py-op">=</tt><tt class="py-string">"The documented project's name (for the navigation bar)."</tt><tt class="py-op">)</tt> </tt>
+<a name="L301"></a><tt class="py-lineno"> 301</tt>  <tt class="py-line"> </tt>
+<a name="L302"></a><tt class="py-lineno"> 302</tt>  <tt class="py-line">    <tt class="py-name">output_group</tt><tt class="py-op">.</tt><tt class="py-name">add_option</tt><tt class="py-op">(</tt><tt class="py-string">"--css"</tt><tt class="py-op">,</tt> <tt class="py-string">"-c"</tt><tt class="py-op">,</tt> </tt>
+<a name="L303"></a><tt class="py-lineno"> 303</tt>  <tt class="py-line">        <tt class="py-name">dest</tt><tt class="py-op">=</tt><tt class="py-string">"css"</tt><tt class="py-op">,</tt> <tt class="py-name">metavar</tt><tt class="py-op">=</tt><tt class="py-string">"STYLESHEET"</tt><tt class="py-op">,</tt> </tt>
+<a name="L304"></a><tt class="py-lineno"> 304</tt>  <tt class="py-line">        <tt class="py-name">help</tt><tt class="py-op">=</tt><tt class="py-string">"The CSS stylesheet.  STYLESHEET can be either a "</tt> </tt>
+<a name="L305"></a><tt class="py-lineno"> 305</tt>  <tt class="py-line">        <tt class="py-string">"builtin stylesheet or the name of a CSS file."</tt><tt class="py-op">)</tt> </tt>
+<a name="L306"></a><tt class="py-lineno"> 306</tt>  <tt class="py-line"> </tt>
+<a name="L307"></a><tt class="py-lineno"> 307</tt>  <tt class="py-line">    <tt class="py-name">output_group</tt><tt class="py-op">.</tt><tt class="py-name">add_option</tt><tt class="py-op">(</tt><tt class="py-string">"--url"</tt><tt class="py-op">,</tt> <tt class="py-string">"-u"</tt><tt class="py-op">,</tt> </tt>
+<a name="L308"></a><tt class="py-lineno"> 308</tt>  <tt class="py-line">        <tt class="py-name">dest</tt><tt class="py-op">=</tt><tt class="py-string">"prj_url"</tt><tt class="py-op">,</tt> <tt class="py-name">metavar</tt><tt class="py-op">=</tt><tt class="py-string">"URL"</tt><tt class="py-op">,</tt> </tt>
+<a name="L309"></a><tt class="py-lineno"> 309</tt>  <tt class="py-line">        <tt class="py-name">help</tt><tt class="py-op">=</tt><tt class="py-string">"The documented project's URL (for the navigation bar)."</tt><tt class="py-op">)</tt> </tt>
+<a name="L310"></a><tt class="py-lineno"> 310</tt>  <tt class="py-line"> </tt>
+<a name="L311"></a><tt class="py-lineno"> 311</tt>  <tt class="py-line">    <tt class="py-name">output_group</tt><tt class="py-op">.</tt><tt class="py-name">add_option</tt><tt class="py-op">(</tt><tt class="py-string">"--navlink"</tt><tt class="py-op">,</tt> </tt>
+<a name="L312"></a><tt class="py-lineno"> 312</tt>  <tt class="py-line">        <tt class="py-name">dest</tt><tt class="py-op">=</tt><tt class="py-string">"prj_link"</tt><tt class="py-op">,</tt> <tt class="py-name">metavar</tt><tt class="py-op">=</tt><tt class="py-string">"HTML"</tt><tt class="py-op">,</tt> </tt>
+<a name="L313"></a><tt class="py-lineno"> 313</tt>  <tt class="py-line">        <tt class="py-name">help</tt><tt class="py-op">=</tt><tt class="py-string">"HTML code for a navigation link to place in the "</tt> </tt>
+<a name="L314"></a><tt class="py-lineno"> 314</tt>  <tt class="py-line">        <tt class="py-string">"navigation bar."</tt><tt class="py-op">)</tt> </tt>
+<a name="L315"></a><tt class="py-lineno"> 315</tt>  <tt class="py-line"> </tt>
+<a name="L316"></a><tt class="py-lineno"> 316</tt>  <tt class="py-line">    <tt class="py-name">output_group</tt><tt class="py-op">.</tt><tt class="py-name">add_option</tt><tt class="py-op">(</tt><tt class="py-string">"--top"</tt><tt class="py-op">,</tt> </tt>
+<a name="L317"></a><tt class="py-lineno"> 317</tt>  <tt class="py-line">        <tt class="py-name">dest</tt><tt class="py-op">=</tt><tt class="py-string">"top_page"</tt><tt class="py-op">,</tt> <tt class="py-name">metavar</tt><tt class="py-op">=</tt><tt class="py-string">"PAGE"</tt><tt class="py-op">,</tt> </tt>
+<a name="L318"></a><tt class="py-lineno"> 318</tt>  <tt class="py-line">        <tt class="py-name">help</tt><tt class="py-op">=</tt><tt class="py-string">"The \"top\" page for the HTML documentation.  PAGE can "</tt> </tt>
+<a name="L319"></a><tt class="py-lineno"> 319</tt>  <tt class="py-line">        <tt class="py-string">"be a URL, the name of a module or class, or one of the "</tt> </tt>
+<a name="L320"></a><tt class="py-lineno"> 320</tt>  <tt class="py-line">        <tt class="py-string">"special names \"trees.html\", \"indices.html\", or \"help.html\""</tt><tt class="py-op">)</tt> </tt>
+<a name="L321"></a><tt class="py-lineno"> 321</tt>  <tt class="py-line"> </tt>
+<a name="L322"></a><tt class="py-lineno"> 322</tt>  <tt class="py-line">    <tt class="py-name">output_group</tt><tt class="py-op">.</tt><tt class="py-name">add_option</tt><tt class="py-op">(</tt><tt class="py-string">"--help-file"</tt><tt class="py-op">,</tt> </tt>
+<a name="L323"></a><tt class="py-lineno"> 323</tt>  <tt class="py-line">        <tt class="py-name">dest</tt><tt class="py-op">=</tt><tt class="py-string">"help_file"</tt><tt class="py-op">,</tt> <tt class="py-name">metavar</tt><tt class="py-op">=</tt><tt class="py-string">"FILE"</tt><tt class="py-op">,</tt> </tt>
+<a name="L324"></a><tt class="py-lineno"> 324</tt>  <tt class="py-line">        <tt class="py-name">help</tt><tt class="py-op">=</tt><tt class="py-string">"An alternate help file.  FILE should contain the body "</tt> </tt>
+<a name="L325"></a><tt class="py-lineno"> 325</tt>  <tt class="py-line">        <tt class="py-string">"of an HTML file -- navigation bars will be added to it."</tt><tt class="py-op">)</tt> </tt>
+<a name="L326"></a><tt class="py-lineno"> 326</tt>  <tt class="py-line"> </tt>
+<a name="L327"></a><tt class="py-lineno"> 327</tt>  <tt class="py-line">    <tt class="py-name">output_group</tt><tt class="py-op">.</tt><tt class="py-name">add_option</tt><tt class="py-op">(</tt><tt class="py-string">"--show-frames"</tt><tt class="py-op">,</tt> </tt>
+<a name="L328"></a><tt class="py-lineno"> 328</tt>  <tt class="py-line">        <tt class="py-name">action</tt><tt class="py-op">=</tt><tt class="py-string">"store_true"</tt><tt class="py-op">,</tt> <tt class="py-name">dest</tt><tt class="py-op">=</tt><tt class="py-string">"show_frames"</tt><tt class="py-op">,</tt> </tt>
+<a name="L329"></a><tt class="py-lineno"> 329</tt>  <tt class="py-line">        <tt class="py-name">help</tt><tt class="py-op">=</tt><tt class="py-string">"Include frames in the HTML output. (default)"</tt><tt class="py-op">)</tt> </tt>
+<a name="L330"></a><tt class="py-lineno"> 330</tt>  <tt class="py-line"> </tt>
+<a name="L331"></a><tt class="py-lineno"> 331</tt>  <tt class="py-line">    <tt class="py-name">output_group</tt><tt class="py-op">.</tt><tt class="py-name">add_option</tt><tt class="py-op">(</tt><tt class="py-string">"--no-frames"</tt><tt class="py-op">,</tt> </tt>
+<a name="L332"></a><tt class="py-lineno"> 332</tt>  <tt class="py-line">        <tt class="py-name">action</tt><tt class="py-op">=</tt><tt class="py-string">"store_false"</tt><tt class="py-op">,</tt> <tt class="py-name">dest</tt><tt class="py-op">=</tt><tt class="py-string">"show_frames"</tt><tt class="py-op">,</tt> </tt>
+<a name="L333"></a><tt class="py-lineno"> 333</tt>  <tt class="py-line">        <tt class="py-name">help</tt><tt class="py-op">=</tt><tt class="py-string">"Do not include frames in the HTML output."</tt><tt class="py-op">)</tt> </tt>
+<a name="L334"></a><tt class="py-lineno"> 334</tt>  <tt class="py-line"> </tt>
+<a name="L335"></a><tt class="py-lineno"> 335</tt>  <tt class="py-line">    <tt class="py-name">output_group</tt><tt class="py-op">.</tt><tt class="py-name">add_option</tt><tt class="py-op">(</tt><tt class="py-string">'--separate-classes'</tt><tt class="py-op">,</tt> </tt>
+<a name="L336"></a><tt class="py-lineno"> 336</tt>  <tt class="py-line">        <tt class="py-name">action</tt><tt class="py-op">=</tt><tt class="py-string">'store_true'</tt><tt class="py-op">,</tt> <tt class="py-name">dest</tt><tt class="py-op">=</tt><tt class="py-string">'list_classes_separately'</tt><tt class="py-op">,</tt> </tt>
+<a name="L337"></a><tt class="py-lineno"> 337</tt>  <tt class="py-line">        <tt class="py-name">help</tt><tt class="py-op">=</tt><tt class="py-op">(</tt><tt class="py-string">"When generating LaTeX or PDF output, list each class in "</tt> </tt>
+<a name="L338"></a><tt class="py-lineno"> 338</tt>  <tt class="py-line">              <tt class="py-string">"its own section, instead of listing them under their "</tt> </tt>
+<a name="L339"></a><tt class="py-lineno"> 339</tt>  <tt class="py-line">              <tt class="py-string">"containing module."</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L340"></a><tt class="py-lineno"> 340</tt>  <tt class="py-line"> </tt>
+<a name="L341"></a><tt class="py-lineno"> 341</tt>  <tt class="py-line">    <tt class="py-name">output_group</tt><tt class="py-op">.</tt><tt class="py-name">add_option</tt><tt class="py-op">(</tt><tt class="py-string">'--src-code-tab-width'</tt><tt class="py-op">,</tt> </tt>
+<a name="L342"></a><tt class="py-lineno"> 342</tt>  <tt class="py-line">        <tt class="py-name">action</tt><tt class="py-op">=</tt><tt class="py-string">'store'</tt><tt class="py-op">,</tt> <tt class="py-name">type</tt><tt class="py-op">=</tt><tt class="py-string">'int'</tt><tt class="py-op">,</tt> <tt class="py-name">dest</tt><tt class="py-op">=</tt><tt class="py-string">'src_code_tab_width'</tt><tt class="py-op">,</tt> </tt>
+<a name="L343"></a><tt class="py-lineno"> 343</tt>  <tt class="py-line">        <tt class="py-name">help</tt><tt class="py-op">=</tt><tt class="py-op">(</tt><tt class="py-string">"When generating HTML output, sets the number of spaces "</tt> </tt>
+<a name="L344"></a><tt class="py-lineno"> 344</tt>  <tt class="py-line">              <tt class="py-string">"each tab in source code listings is replaced with."</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L345"></a><tt class="py-lineno"> 345</tt>  <tt class="py-line">     </tt>
+<a name="L346"></a><tt class="py-lineno"> 346</tt>  <tt class="py-line">    <tt class="py-comment"># The group of external API options.</tt> </tt>
+<a name="L347"></a><tt class="py-lineno"> 347</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># Skip if the module couldn't be imported (usually missing docutils)</tt> </tt>
+<a name="L348"></a><tt class="py-lineno"> 348</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt id="link-53" class="py-name"><a title="epydoc.docwriter.xlink" class="py-name" href="#" onclick="return doclink('link-53', 'xlink', 'link-22');">xlink</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L349"></a><tt class="py-lineno"> 349</tt>  <tt class="py-line">        <tt class="py-name">link_group</tt> <tt class="py-op">=</tt> <tt class="py-name">OptionGroup</tt><tt class="py-op">(</tt><tt class="py-name">optparser</tt><tt class="py-op">,</tt> </tt>
+<a name="L350"></a><tt class="py-lineno"> 350</tt>  <tt class="py-line">                                 <tt id="link-54" class="py-name"><a title="epydoc.docwriter.xlink" class="py-name" href="#" onclick="return doclink('link-54', 'xlink', 'link-22');">xlink</a></tt><tt class="py-op">.</tt><tt id="link-55" class="py-name" targets="Class epydoc.docwriter.xlink.ApiLinkReader=epydoc.docwriter.xlink.ApiLinkReader-class.html"><a title="epydoc.docwriter.xlink.ApiLinkReader" class="py-name" hr [...]
+<a name="L351"></a><tt class="py-lineno"> 351</tt>  <tt class="py-line">        <tt class="py-name">optparser</tt><tt class="py-op">.</tt><tt class="py-name">add_option_group</tt><tt class="py-op">(</tt><tt class="py-name">link_group</tt><tt class="py-op">)</tt> </tt>
+<a name="L352"></a><tt class="py-lineno"> 352</tt>  <tt class="py-line"> </tt>
+<a name="L353"></a><tt class="py-lineno"> 353</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">help</tt><tt class="py-op">,</tt> <tt class="py-name">names</tt><tt class="py-op">,</tt> <tt class="py-name">opts</tt> <tt class="py-keyword">in</tt> <tt id="link-57" class="py-name"><a title="epydoc.docwriter.xlink" class="py-name" href="#" onclick="return doclink('link-57', 'xlink', 'link-22');">xlink</a></tt><tt class="py-op">.</tt><tt id="link-58" class= [...]
+<a name="L354"></a><tt class="py-lineno"> 354</tt>  <tt class="py-line">            <tt class="py-name">opts</tt> <tt class="py-op">=</tt> <tt class="py-name">opts</tt><tt class="py-op">.</tt><tt class="py-name">copy</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L355"></a><tt class="py-lineno"> 355</tt>  <tt class="py-line">            <tt class="py-name">opts</tt><tt class="py-op">[</tt><tt class="py-string">'help'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">help</tt> </tt>
+<a name="L356"></a><tt class="py-lineno"> 356</tt>  <tt class="py-line">            <tt class="py-name">link_group</tt><tt class="py-op">.</tt><tt class="py-name">add_option</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">names</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-name">opts</tt><tt class="py-op">)</tt> </tt>
+<a name="L357"></a><tt class="py-lineno"> 357</tt>  <tt class="py-line"> </tt>
+<a name="L358"></a><tt class="py-lineno"> 358</tt>  <tt class="py-line">    <tt class="py-name">graph_group</tt> <tt class="py-op">=</tt> <tt class="py-name">OptionGroup</tt><tt class="py-op">(</tt><tt class="py-name">optparser</tt><tt class="py-op">,</tt> <tt class="py-string">'Graph Options'</tt><tt class="py-op">)</tt> </tt>
+<a name="L359"></a><tt class="py-lineno"> 359</tt>  <tt class="py-line">    <tt class="py-name">optparser</tt><tt class="py-op">.</tt><tt class="py-name">add_option_group</tt><tt class="py-op">(</tt><tt class="py-name">graph_group</tt><tt class="py-op">)</tt> </tt>
+<a name="L360"></a><tt class="py-lineno"> 360</tt>  <tt class="py-line"> </tt>
+<a name="L361"></a><tt class="py-lineno"> 361</tt>  <tt class="py-line">    <tt class="py-name">graph_group</tt><tt class="py-op">.</tt><tt class="py-name">add_option</tt><tt class="py-op">(</tt><tt class="py-string">'--graph'</tt><tt class="py-op">,</tt> </tt>
+<a name="L362"></a><tt class="py-lineno"> 362</tt>  <tt class="py-line">        <tt class="py-name">action</tt><tt class="py-op">=</tt><tt class="py-string">'append'</tt><tt class="py-op">,</tt> <tt class="py-name">dest</tt><tt class="py-op">=</tt><tt class="py-string">'graphs'</tt><tt class="py-op">,</tt> <tt class="py-name">metavar</tt><tt class="py-op">=</tt><tt class="py-string">'GRAPHTYPE'</tt><tt class="py-op">,</tt> </tt>
+<a name="L363"></a><tt class="py-lineno"> 363</tt>  <tt class="py-line">        <tt class="py-name">help</tt><tt class="py-op">=</tt><tt class="py-op">(</tt><tt class="py-string">"Include graphs of type GRAPHTYPE in the generated output.  "</tt> </tt>
+<a name="L364"></a><tt class="py-lineno"> 364</tt>  <tt class="py-line">              <tt class="py-string">"Graphs are generated using the Graphviz dot executable.  "</tt> </tt>
+<a name="L365"></a><tt class="py-lineno"> 365</tt>  <tt class="py-line">              <tt class="py-string">"If this executable is not on the path, then use --dotpath "</tt> </tt>
+<a name="L366"></a><tt class="py-lineno"> 366</tt>  <tt class="py-line">              <tt class="py-string">"to specify its location.  This option may be repeated to "</tt> </tt>
+<a name="L367"></a><tt class="py-lineno"> 367</tt>  <tt class="py-line">              <tt class="py-string">"include multiple graph types in the output.  GRAPHTYPE "</tt> </tt>
+<a name="L368"></a><tt class="py-lineno"> 368</tt>  <tt class="py-line">              <tt class="py-string">"should be one of: all, %s."</tt> <tt class="py-op">%</tt> <tt class="py-string">', '</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt id="link-60" class="py-name"><a title="epydoc.cli.GRAPH_TYPES
+epydoc.markup.epytext.GRAPH_TYPES" class="py-name" href="#" onclick="return doclink('link-60', 'GRAPH_TYPES', 'link-25');">GRAPH_TYPES</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L369"></a><tt class="py-lineno"> 369</tt>  <tt class="py-line"> </tt>
+<a name="L370"></a><tt class="py-lineno"> 370</tt>  <tt class="py-line">    <tt class="py-name">graph_group</tt><tt class="py-op">.</tt><tt class="py-name">add_option</tt><tt class="py-op">(</tt><tt class="py-string">"--dotpath"</tt><tt class="py-op">,</tt> </tt>
+<a name="L371"></a><tt class="py-lineno"> 371</tt>  <tt class="py-line">        <tt class="py-name">dest</tt><tt class="py-op">=</tt><tt class="py-string">"dotpath"</tt><tt class="py-op">,</tt> <tt class="py-name">metavar</tt><tt class="py-op">=</tt><tt class="py-string">'PATH'</tt><tt class="py-op">,</tt> </tt>
+<a name="L372"></a><tt class="py-lineno"> 372</tt>  <tt class="py-line">        <tt class="py-name">help</tt><tt class="py-op">=</tt><tt class="py-string">"The path to the Graphviz 'dot' executable."</tt><tt class="py-op">)</tt> </tt>
+<a name="L373"></a><tt class="py-lineno"> 373</tt>  <tt class="py-line"> </tt>
+<a name="L374"></a><tt class="py-lineno"> 374</tt>  <tt class="py-line">    <tt class="py-name">graph_group</tt><tt class="py-op">.</tt><tt class="py-name">add_option</tt><tt class="py-op">(</tt><tt class="py-string">'--graph-font'</tt><tt class="py-op">,</tt> </tt>
+<a name="L375"></a><tt class="py-lineno"> 375</tt>  <tt class="py-line">        <tt class="py-name">dest</tt><tt class="py-op">=</tt><tt class="py-string">'graph_font'</tt><tt class="py-op">,</tt> <tt class="py-name">metavar</tt><tt class="py-op">=</tt><tt class="py-string">'FONT'</tt><tt class="py-op">,</tt> </tt>
+<a name="L376"></a><tt class="py-lineno"> 376</tt>  <tt class="py-line">        <tt class="py-name">help</tt><tt class="py-op">=</tt><tt class="py-op">(</tt><tt class="py-string">"Specify the font used to generate Graphviz graphs.  (e.g., "</tt> </tt>
+<a name="L377"></a><tt class="py-lineno"> 377</tt>  <tt class="py-line">              <tt class="py-string">"helvetica or times)."</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L378"></a><tt class="py-lineno"> 378</tt>  <tt class="py-line"> </tt>
+<a name="L379"></a><tt class="py-lineno"> 379</tt>  <tt class="py-line">    <tt class="py-name">graph_group</tt><tt class="py-op">.</tt><tt class="py-name">add_option</tt><tt class="py-op">(</tt><tt class="py-string">'--graph-font-size'</tt><tt class="py-op">,</tt> </tt>
+<a name="L380"></a><tt class="py-lineno"> 380</tt>  <tt class="py-line">        <tt class="py-name">dest</tt><tt class="py-op">=</tt><tt class="py-string">'graph_font_size'</tt><tt class="py-op">,</tt> <tt class="py-name">metavar</tt><tt class="py-op">=</tt><tt class="py-string">'SIZE'</tt><tt class="py-op">,</tt> </tt>
+<a name="L381"></a><tt class="py-lineno"> 381</tt>  <tt class="py-line">        <tt class="py-name">help</tt><tt class="py-op">=</tt><tt class="py-op">(</tt><tt class="py-string">"Specify the font size used to generate Graphviz graphs, "</tt> </tt>
+<a name="L382"></a><tt class="py-lineno"> 382</tt>  <tt class="py-line">              <tt class="py-string">"in points."</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L383"></a><tt class="py-lineno"> 383</tt>  <tt class="py-line"> </tt>
+<a name="L384"></a><tt class="py-lineno"> 384</tt>  <tt class="py-line">    <tt class="py-name">graph_group</tt><tt class="py-op">.</tt><tt class="py-name">add_option</tt><tt class="py-op">(</tt><tt class="py-string">'--pstat'</tt><tt class="py-op">,</tt> </tt>
+<a name="L385"></a><tt class="py-lineno"> 385</tt>  <tt class="py-line">        <tt class="py-name">action</tt><tt class="py-op">=</tt><tt class="py-string">'append'</tt><tt class="py-op">,</tt> <tt class="py-name">dest</tt><tt class="py-op">=</tt><tt class="py-string">'pstat_files'</tt><tt class="py-op">,</tt> <tt class="py-name">metavar</tt><tt class="py-op">=</tt><tt class="py-string">'FILE'</tt><tt class="py-op">,</tt> </tt>
+<a name="L386"></a><tt class="py-lineno"> 386</tt>  <tt class="py-line">        <tt class="py-name">help</tt><tt class="py-op">=</tt><tt class="py-string">"A pstat output file, to be used in generating call graphs."</tt><tt class="py-op">)</tt> </tt>
+<a name="L387"></a><tt class="py-lineno"> 387</tt>  <tt class="py-line"> </tt>
+<a name="L388"></a><tt class="py-lineno"> 388</tt>  <tt class="py-line">    <tt class="py-comment"># this option is for developers, not users.</tt> </tt>
+<a name="L389"></a><tt class="py-lineno"> 389</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">graph_group</tt><tt class="py-op">.</tt><tt class="py-name">add_option</tt><tt class="py-op">(</tt><tt class="py-string">"--profile-epydoc"</tt><tt class="py-op">,</tt> </tt>
+<a name="L390"></a><tt class="py-lineno"> 390</tt>  <tt class="py-line">        <tt class="py-name">action</tt><tt class="py-op">=</tt><tt class="py-string">"store_true"</tt><tt class="py-op">,</tt> <tt class="py-name">dest</tt><tt class="py-op">=</tt><tt class="py-string">"profile"</tt><tt class="py-op">,</tt> </tt>
+<a name="L391"></a><tt class="py-lineno"> 391</tt>  <tt class="py-line">        <tt class="py-name">help</tt><tt class="py-op">=</tt><tt class="py-name">SUPPRESS_HELP</tt> <tt class="py-keyword">or</tt> </tt>
+<a name="L392"></a><tt class="py-lineno"> 392</tt>  <tt class="py-line">             <tt class="py-op">(</tt><tt class="py-string">"Run the hotshot profiler on epydoc itself.  Output "</tt> </tt>
+<a name="L393"></a><tt class="py-lineno"> 393</tt>  <tt class="py-line">              <tt class="py-string">"will be written to profile.out."</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L394"></a><tt class="py-lineno"> 394</tt>  <tt class="py-line"> </tt>
+<a name="L395"></a><tt class="py-lineno"> 395</tt>  <tt class="py-line"> </tt>
+<a name="L396"></a><tt class="py-lineno"> 396</tt>  <tt class="py-line">    <tt class="py-name">return_group</tt> <tt class="py-op">=</tt> <tt class="py-name">OptionGroup</tt><tt class="py-op">(</tt><tt class="py-name">optparser</tt><tt class="py-op">,</tt> <tt class="py-string">'Return Value Options'</tt><tt class="py-op">)</tt> </tt>
+<a name="L397"></a><tt class="py-lineno"> 397</tt>  <tt class="py-line">    <tt class="py-name">optparser</tt><tt class="py-op">.</tt><tt class="py-name">add_option_group</tt><tt class="py-op">(</tt><tt class="py-name">return_group</tt><tt class="py-op">)</tt> </tt>
+<a name="L398"></a><tt class="py-lineno"> 398</tt>  <tt class="py-line"> </tt>
+<a name="L399"></a><tt class="py-lineno"> 399</tt>  <tt class="py-line">    <tt class="py-name">return_group</tt><tt class="py-op">.</tt><tt class="py-name">add_option</tt><tt class="py-op">(</tt><tt class="py-string">"--fail-on-error"</tt><tt class="py-op">,</tt> </tt>
+<a name="L400"></a><tt class="py-lineno"> 400</tt>  <tt class="py-line">        <tt class="py-name">action</tt><tt class="py-op">=</tt><tt class="py-string">"store_const"</tt><tt class="py-op">,</tt> <tt class="py-name">dest</tt><tt class="py-op">=</tt><tt class="py-string">"fail_on"</tt><tt class="py-op">,</tt> <tt class="py-name">const</tt><tt class="py-op">=</tt><tt id="link-61" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-61', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-62" class="py-name" targets="Variable epydoc.log.ERROR=epydoc.log-module.html#ERROR"><a title="epydoc.log.ERROR" class="py-name" href="#" onclick="return doclink('link-62', 'ERROR', 'link-62');">ERROR</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L401"></a><tt class="py-lineno"> 401</tt>  <tt class="py-line">        <tt class="py-name">help</tt><tt class="py-op">=</tt><tt class="py-string">"Return a non-zero exit status, indicating failure, if any "</tt> </tt>
+<a name="L402"></a><tt class="py-lineno"> 402</tt>  <tt class="py-line">        <tt class="py-string">"errors are encountered."</tt><tt class="py-op">)</tt> </tt>
+<a name="L403"></a><tt class="py-lineno"> 403</tt>  <tt class="py-line"> </tt>
+<a name="L404"></a><tt class="py-lineno"> 404</tt>  <tt class="py-line">    <tt class="py-name">return_group</tt><tt class="py-op">.</tt><tt class="py-name">add_option</tt><tt class="py-op">(</tt><tt class="py-string">"--fail-on-warning"</tt><tt class="py-op">,</tt> </tt>
+<a name="L405"></a><tt class="py-lineno"> 405</tt>  <tt class="py-line">        <tt class="py-name">action</tt><tt class="py-op">=</tt><tt class="py-string">"store_const"</tt><tt class="py-op">,</tt> <tt class="py-name">dest</tt><tt class="py-op">=</tt><tt class="py-string">"fail_on"</tt><tt class="py-op">,</tt> <tt class="py-name">const</tt><tt class="py-op">=</tt><tt id="link-63" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-63', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-64" class="py-name" targets="Variable epydoc.log.WARNING=epydoc.log-module.html#WARNING"><a title="epydoc.log.WARNING" class="py-name" href="#" onclick="return doclink('link-64', 'WARNING', 'link-64');">WARNING</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L406"></a><tt class="py-lineno"> 406</tt>  <tt class="py-line">        <tt class="py-name">help</tt><tt class="py-op">=</tt><tt class="py-string">"Return a non-zero exit status, indicating failure, if any "</tt> </tt>
+<a name="L407"></a><tt class="py-lineno"> 407</tt>  <tt class="py-line">        <tt class="py-string">"errors or warnings are encountered (not including docstring "</tt> </tt>
+<a name="L408"></a><tt class="py-lineno"> 408</tt>  <tt class="py-line">        <tt class="py-string">"warnings)."</tt><tt class="py-op">)</tt> </tt>
+<a name="L409"></a><tt class="py-lineno"> 409</tt>  <tt class="py-line"> </tt>
+<a name="L410"></a><tt class="py-lineno"> 410</tt>  <tt class="py-line">    <tt class="py-name">return_group</tt><tt class="py-op">.</tt><tt class="py-name">add_option</tt><tt class="py-op">(</tt><tt class="py-string">"--fail-on-docstring-warning"</tt><tt class="py-op">,</tt> </tt>
+<a name="L411"></a><tt class="py-lineno"> 411</tt>  <tt class="py-line">        <tt class="py-name">action</tt><tt class="py-op">=</tt><tt class="py-string">"store_const"</tt><tt class="py-op">,</tt> <tt class="py-name">dest</tt><tt class="py-op">=</tt><tt class="py-string">"fail_on"</tt><tt class="py-op">,</tt> <tt class="py-name">const</tt><tt class="py-op">=</tt><tt id="link-65" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-65', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-66" class="py-name" targets="Variable epydoc.log.DOCSTRING_WARNING=epydoc.log-module.html#DOCSTRING_WARNING"><a title="epydoc.log.DOCSTRING_WARNING" class="py-name" href="#" onclick="return doclink('link-66', 'DOCSTRING_WARNING', 'link-66');">DOCSTRING_WARNING</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L412"></a><tt class="py-lineno"> 412</tt>  <tt class="py-line">        <tt class="py-name">help</tt><tt class="py-op">=</tt><tt class="py-string">"Return a non-zero exit status, indicating failure, if any "</tt> </tt>
+<a name="L413"></a><tt class="py-lineno"> 413</tt>  <tt class="py-line">        <tt class="py-string">"errors or warnings are encountered (including docstring "</tt> </tt>
+<a name="L414"></a><tt class="py-lineno"> 414</tt>  <tt class="py-line">        <tt class="py-string">"warnings)."</tt><tt class="py-op">)</tt> </tt>
+<a name="L415"></a><tt class="py-lineno"> 415</tt>  <tt class="py-line"> </tt>
+<a name="L416"></a><tt class="py-lineno"> 416</tt>  <tt class="py-line">    <tt class="py-comment"># Set the option parser's defaults.</tt> </tt>
+<a name="L417"></a><tt class="py-lineno"> 417</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">optparser</tt><tt class="py-op">.</tt><tt class="py-name">set_defaults</tt><tt class="py-op">(</tt><tt class="py-op">**</tt><tt id="link-67" class="py-name"><a title="epydoc.cli.OPTION_DEFAULTS" class="py-name" href="#" onclick="return doclink('link-67', 'OPTION_DEFAULTS', 'link-42');">OPTION_DEFAULTS</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L418"></a><tt class="py-lineno"> 418</tt>  <tt class="py-line"> </tt>
+<a name="L419"></a><tt class="py-lineno"> 419</tt>  <tt class="py-line">    <tt class="py-comment"># Parse the arguments.</tt> </tt>
+<a name="L420"></a><tt class="py-lineno"> 420</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">options</tt><tt class="py-op">,</tt> <tt class="py-name">names</tt> <tt class="py-op">=</tt> <tt class="py-name">optparser</tt><tt class="py-op">.</tt><tt class="py-name">parse_args</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L421"></a><tt class="py-lineno"> 421</tt>  <tt class="py-line"> </tt>
+<a name="L422"></a><tt class="py-lineno"> 422</tt>  <tt class="py-line">    <tt class="py-comment"># Print help message, if requested.  We also provide support for</tt> </tt>
+<a name="L423"></a><tt class="py-lineno"> 423</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># --help [topic]</tt> </tt>
+<a name="L424"></a><tt class="py-lineno"> 424</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">action</tt> <tt class="py-op">==</tt> <tt class="py-string">'help'</tt><tt class="py-op">:</tt> </tt>
+<a name="L425"></a><tt class="py-lineno"> 425</tt>  <tt class="py-line">        <tt class="py-name">names</tt> <tt class="py-op">=</tt> <tt class="py-name">set</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">n</tt><tt class="py-op">.</tt><tt class="py-name">lower</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">n</tt> <tt class="py-keyword">in</tt> <tt class="py-name">names</tt><tt class="py-op">]</tt><tt cla [...]
+<a name="L426"></a><tt class="py-lineno"> 426</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-op">(</tt><tt id="link-68" class="py-name"><a title="epydoc.cli.topic" class="py-name" href="#" onclick="return doclink('link-68', 'topic', 'link-39');">topic</a></tt><tt class="py-op">,</tt> <tt class="py-name">msg</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt id="link-69" class="py-name"><a title="epydoc.cli.HELP_TOPICS" class="py-name" href="# [...]
+<a name="L427"></a><tt class="py-lineno"> 427</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt id="link-70" class="py-name"><a title="epydoc.cli.topic" class="py-name" href="#" onclick="return doclink('link-70', 'topic', 'link-39');">topic</a></tt><tt class="py-op">.</tt><tt class="py-name">lower</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-name">names</tt><tt class="py-op">:</tt> </tt>
+<a name="L428"></a><tt class="py-lineno"> 428</tt>  <tt class="py-line">                <tt class="py-keyword">print</tt> <tt class="py-string">'\n'</tt> <tt class="py-op">+</tt> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt class="py-name">rstrip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-string">'\n'</tt> </tt>
+<a name="L429"></a><tt class="py-lineno"> 429</tt>  <tt class="py-line">                <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">exit</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+<a name="L430"></a><tt class="py-lineno"> 430</tt>  <tt class="py-line">        <tt class="py-name">optparser</tt><tt class="py-op">.</tt><tt class="py-name">print_help</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L431"></a><tt class="py-lineno"> 431</tt>  <tt class="py-line">        <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">exit</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+<a name="L432"></a><tt class="py-lineno"> 432</tt>  <tt class="py-line"> </tt>
+<a name="L433"></a><tt class="py-lineno"> 433</tt>  <tt class="py-line">    <tt class="py-comment"># Print version message, if requested.</tt> </tt>
+<a name="L434"></a><tt class="py-lineno"> 434</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">action</tt> <tt class="py-op">==</tt> <tt class="py-string">'version'</tt><tt class="py-op">:</tt> </tt>
+<a name="L435"></a><tt class="py-lineno"> 435</tt>  <tt class="py-line">        <tt class="py-keyword">print</tt> <tt class="py-name">version</tt> </tt>
+<a name="L436"></a><tt class="py-lineno"> 436</tt>  <tt class="py-line">        <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">exit</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+<a name="L437"></a><tt class="py-lineno"> 437</tt>  <tt class="py-line">     </tt>
+<a name="L438"></a><tt class="py-lineno"> 438</tt>  <tt class="py-line">    <tt class="py-comment"># Process any config files.</tt> </tt>
+<a name="L439"></a><tt class="py-lineno"> 439</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">configfiles</tt><tt class="py-op">:</tt> </tt>
+<a name="L440"></a><tt class="py-lineno"> 440</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L441"></a><tt class="py-lineno"> 441</tt>  <tt class="py-line">            <tt id="link-71" class="py-name" targets="Function epydoc.cli.parse_configfiles()=epydoc.cli-module.html#parse_configfiles"><a title="epydoc.cli.parse_configfiles" class="py-name" href="#" onclick="return doclink('link-71', 'parse_configfiles', 'link-71');">parse_configfiles</a></tt><tt class="py-op">(</tt><tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">configfiles</tt><tt clas [...]
+<a name="L442"></a><tt class="py-lineno"> 442</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-op">(</tt><tt class="py-name">KeyboardInterrupt</tt><tt class="py-op">,</tt><tt class="py-name">SystemExit</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-keyword">raise</tt> </tt>
+<a name="L443"></a><tt class="py-lineno"> 443</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
+<a name="L444"></a><tt class="py-lineno"> 444</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">configfiles</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L445"></a><tt class="py-lineno"> 445</tt>  <tt class="py-line">                <tt class="py-name">cf_name</tt> <tt class="py-op">=</tt> <tt class="py-string">'config file %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">configfiles</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L446"></a><tt class="py-lineno"> 446</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L447"></a><tt class="py-lineno"> 447</tt>  <tt class="py-line">                <tt class="py-name">cf_name</tt> <tt class="py-op">=</tt> <tt class="py-string">'config files %s'</tt> <tt class="py-op">%</tt> <tt class="py-string">', '</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">configfiles</tt><tt class="py-op">)</tt> </tt>
+<a name="L448"></a><tt class="py-lineno"> 448</tt>  <tt class="py-line">            <tt class="py-name">optparser</tt><tt class="py-op">.</tt><tt id="link-72" class="py-name" targets="Function epydoc.log.error()=epydoc.log-module.html#error"><a title="epydoc.log.error" class="py-name" href="#" onclick="return doclink('link-72', 'error', 'link-72');">error</a></tt><tt class="py-op">(</tt><tt class="py-string">'Error reading %s:\n    %s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</t [...]
+<a name="L449"></a><tt class="py-lineno"> 449</tt>  <tt class="py-line"> </tt>
+<a name="L450"></a><tt class="py-lineno"> 450</tt>  <tt class="py-line">    <tt class="py-comment"># Check if the input file is a pickle file.</tt> </tt>
+<a name="L451"></a><tt class="py-lineno"> 451</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">for</tt> <tt id="link-73" class="py-name" targets="Variable epydoc.apidoc.VariableDoc.name=epydoc.apidoc.VariableDoc-class.html#name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-73', 'name', 'link-73');">name</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">names</tt><tt class="py-op">:</tt> </tt>
+<a name="L452"></a><tt class="py-lineno"> 452</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-74" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-74', 'name', 'link-73');">name</a></tt><tt class="py-op">.</tt><tt class="py-name">endswith</tt><tt class="py-op">(</tt><tt class="py-string">'.pickle'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L453"></a><tt class="py-lineno"> 453</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">names</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L454"></a><tt class="py-lineno"> 454</tt>  <tt class="py-line">                <tt class="py-name">optparser</tt><tt class="py-op">.</tt><tt id="link-75" class="py-name"><a title="epydoc.log.error" class="py-name" href="#" onclick="return doclink('link-75', 'error', 'link-72');">error</a></tt><tt class="py-op">(</tt><tt class="py-string">"When a pickle file is specified, no other "</tt> </tt>
+<a name="L455"></a><tt class="py-lineno"> 455</tt>  <tt class="py-line">                               <tt class="py-string">"input files may be specified."</tt><tt class="py-op">)</tt> </tt>
+<a name="L456"></a><tt class="py-lineno"> 456</tt>  <tt class="py-line">            <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">load_pickle</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L457"></a><tt class="py-lineno"> 457</tt>  <tt class="py-line">     </tt>
+<a name="L458"></a><tt class="py-lineno"> 458</tt>  <tt class="py-line">    <tt class="py-comment"># Check to make sure all options are valid.</tt> </tt>
+<a name="L459"></a><tt class="py-lineno"> 459</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">names</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L460"></a><tt class="py-lineno"> 460</tt>  <tt class="py-line">        <tt class="py-name">optparser</tt><tt class="py-op">.</tt><tt id="link-76" class="py-name"><a title="epydoc.log.error" class="py-name" href="#" onclick="return doclink('link-76', 'error', 'link-72');">error</a></tt><tt class="py-op">(</tt><tt class="py-string">"No names specified."</tt><tt class="py-op">)</tt> </tt>
+<a name="L461"></a><tt class="py-lineno"> 461</tt>  <tt class="py-line">         </tt>
+<a name="L462"></a><tt class="py-lineno"> 462</tt>  <tt class="py-line">    <tt class="py-comment"># perform shell expansion.</tt> </tt>
+<a name="L463"></a><tt class="py-lineno"> 463</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">for</tt> <tt class="py-name">i</tt><tt class="py-op">,</tt> <tt id="link-77" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-77', 'name', 'link-73');">name</a></tt> <tt class="py-keyword">in</tt> <tt id="link-78" class="py-name" targets="Function epydoc.compat.reversed()=epydoc.compat-module.html#re [...]
+<a name="L464"></a><tt class="py-lineno"> 464</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-string">'?'</tt> <tt class="py-keyword">in</tt> <tt id="link-79" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-79', 'name', 'link-73');">name</a></tt> <tt class="py-keyword">or</tt> <tt class="py-string">'*'</tt> <tt class="py-keyword">in</tt> <tt id="link-80" class="py-name"><a title="epydoc.apidoc [...]
+<a name="L465"></a><tt class="py-lineno"> 465</tt>  <tt class="py-line">            <tt class="py-name">names</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">:</tt><tt class="py-name">i</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">glob</tt><tt class="py-op">(</tt><tt id="link-81" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink [...]
+<a name="L466"></a><tt class="py-lineno"> 466</tt>  <tt class="py-line">         </tt>
+<a name="L467"></a><tt class="py-lineno"> 467</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">inheritance</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt id="link-82" class="py-name"><a title="epydoc.cli.INHERITANCE_STYLES" class="py-name" href="#" onclick="return doclink('link-82', 'INHERITANCE_STYLES', 'link-24');">INHERITANCE_STYLES</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L468"></a><tt class="py-lineno"> 468</tt>  <tt class="py-line">        <tt class="py-name">optparser</tt><tt class="py-op">.</tt><tt id="link-83" class="py-name"><a title="epydoc.log.error" class="py-name" href="#" onclick="return doclink('link-83', 'error', 'link-72');">error</a></tt><tt class="py-op">(</tt><tt class="py-string">"Bad inheritance style.  Valid options are "</tt> <tt class="py-op">+</tt> </tt>
+<a name="L469"></a><tt class="py-lineno"> 469</tt>  <tt class="py-line">                        <tt class="py-string">","</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt id="link-84" class="py-name"><a title="epydoc.cli.INHERITANCE_STYLES" class="py-name" href="#" onclick="return doclink('link-84', 'INHERITANCE_STYLES', 'link-24');">INHERITANCE_STYLES</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L470"></a><tt class="py-lineno"> 470</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt id="link-85" class="py-name"><a title="epydoc.markup.epytext.parse
+epydoc.markup.parse" class="py-name" href="#" onclick="return doclink('link-85', 'parse', 'link-45');">parse</a></tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">introspect</tt><tt class="py-op">:</tt> </tt>
+<a name="L471"></a><tt class="py-lineno"> 471</tt>  <tt class="py-line">        <tt class="py-name">optparser</tt><tt class="py-op">.</tt><tt id="link-86" class="py-name"><a title="epydoc.log.error" class="py-name" href="#" onclick="return doclink('link-86', 'error', 'link-72');">error</a></tt><tt class="py-op">(</tt><tt class="py-string">"Invalid option combination: --parse-only "</tt> </tt>
+<a name="L472"></a><tt class="py-lineno"> 472</tt>  <tt class="py-line">                        <tt class="py-string">"and --introspect-only."</tt><tt class="py-op">)</tt> </tt>
+<a name="L473"></a><tt class="py-lineno"> 473</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">action</tt> <tt class="py-op">==</tt> <tt class="py-string">'text'</tt> <tt class="py-keyword">and</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">names</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L474"></a><tt class="py-lineno"> 474</tt>  <tt class="py-line">        <tt class="py-name">optparser</tt><tt class="py-op">.</tt><tt id="link-87" class="py-name"><a title="epydoc.log.error" class="py-name" href="#" onclick="return doclink('link-87', 'error', 'link-72');">error</a></tt><tt class="py-op">(</tt><tt class="py-string">"--text option takes only one name."</tt><tt class="py-op">)</tt> </tt>
+<a name="L475"></a><tt class="py-lineno"> 475</tt>  <tt class="py-line"> </tt>
+<a name="L476"></a><tt class="py-lineno"> 476</tt>  <tt class="py-line">    <tt class="py-comment"># Check the list of requested graph types to make sure they're</tt> </tt>
+<a name="L477"></a><tt class="py-lineno"> 477</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># acceptable.</tt> </tt>
+<a name="L478"></a><tt class="py-lineno"> 478</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">graphs</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">graph_type</tt><tt class="py-op">.</tt><tt class="py-name">lower</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">graph_type</tt> <tt class="py-keyword">in</tt> <tt class="py- [...]
+<a name="L479"></a><tt class="py-lineno"> 479</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">graph_type</tt> <tt class="py-keyword">in</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">graphs</tt><tt class="py-op">:</tt> </tt>
+<a name="L480"></a><tt class="py-lineno"> 480</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">graph_type</tt> <tt class="py-op">==</tt> <tt class="py-string">'callgraph'</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">pstat_files</tt><tt class="py-op">:</tt> </tt>
+<a name="L481"></a><tt class="py-lineno"> 481</tt>  <tt class="py-line">            <tt class="py-name">optparser</tt><tt class="py-op">.</tt><tt id="link-88" class="py-name"><a title="epydoc.log.error" class="py-name" href="#" onclick="return doclink('link-88', 'error', 'link-72');">error</a></tt><tt class="py-op">(</tt><tt class="py-string">'"callgraph" graph type may only be used if '</tt> </tt>
+<a name="L482"></a><tt class="py-lineno"> 482</tt>  <tt class="py-line">                            <tt class="py-string">'one or more pstat files are specified.'</tt><tt class="py-op">)</tt> </tt>
+<a name="L483"></a><tt class="py-lineno"> 483</tt>  <tt class="py-line">        <tt class="py-comment"># If it's 'all', then add everything (but don't add callgraph if</tt> </tt>
+<a name="L484"></a><tt class="py-lineno"> 484</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># we don't have any profiling info to base them on).</tt> </tt>
+<a name="L485"></a><tt class="py-lineno"> 485</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">graph_type</tt> <tt class="py-op">==</tt> <tt class="py-string">'all'</tt><tt class="py-op">:</tt> </tt>
+<a name="L486"></a><tt class="py-lineno"> 486</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">pstat_files</tt><tt class="py-op">:</tt> </tt>
+<a name="L487"></a><tt class="py-lineno"> 487</tt>  <tt class="py-line">                <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">graphs</tt> <tt class="py-op">=</tt> <tt id="link-89" class="py-name"><a title="epydoc.cli.GRAPH_TYPES
+epydoc.markup.epytext.GRAPH_TYPES" class="py-name" href="#" onclick="return doclink('link-89', 'GRAPH_TYPES', 'link-25');">GRAPH_TYPES</a></tt> </tt>
+<a name="L488"></a><tt class="py-lineno"> 488</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L489"></a><tt class="py-lineno"> 489</tt>  <tt class="py-line">                <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">graphs</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">g</tt> <tt class="py-keyword">for</tt> <tt class="py-name">g</tt> <tt class="py-keyword">in</tt> <tt id="link-90" class="py-name"><a title="epydoc.cli.GRAPH_TYPES
+epydoc.markup.epytext.GRAPH_TYPES" class="py-name" href="#" onclick="return doclink('link-90', 'GRAPH_TYPES', 'link-25');">GRAPH_TYPES</a></tt> <tt class="py-keyword">if</tt> <tt class="py-name">g</tt> <tt class="py-op">!=</tt> <tt class="py-string">'callgraph'</tt><tt class="py-op">]</tt> </tt>
+<a name="L490"></a><tt class="py-lineno"> 490</tt>  <tt class="py-line">            <tt class="py-keyword">break</tt> </tt>
+<a name="L491"></a><tt class="py-lineno"> 491</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">graph_type</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt id="link-91" class="py-name"><a title="epydoc.cli.GRAPH_TYPES
+epydoc.markup.epytext.GRAPH_TYPES" class="py-name" href="#" onclick="return doclink('link-91', 'GRAPH_TYPES', 'link-25');">GRAPH_TYPES</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L492"></a><tt class="py-lineno"> 492</tt>  <tt class="py-line">            <tt class="py-name">optparser</tt><tt class="py-op">.</tt><tt id="link-92" class="py-name"><a title="epydoc.log.error" class="py-name" href="#" onclick="return doclink('link-92', 'error', 'link-72');">error</a></tt><tt class="py-op">(</tt><tt class="py-string">"Invalid graph type %s."</tt> <tt class="py-op">%</tt> <tt class="py-name">graph_type</tt><tt class="py-op">)</tt> </tt>
+<a name="L493"></a><tt class="py-lineno"> 493</tt>  <tt class="py-line"> </tt>
+<a name="L494"></a><tt class="py-lineno"> 494</tt>  <tt class="py-line">    <tt class="py-comment"># Calculate verbosity.</tt> </tt>
+<a name="L495"></a><tt class="py-lineno"> 495</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">verbosity</tt> <tt class="py-op">=</tt> <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">options</tt><tt class="py-op">,</tt> <tt class="py-string">'verbosity'</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+<a name="L496"></a><tt class="py-lineno"> 496</tt>  <tt class="py-line">    <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">verbosity</tt> <tt class="py-op">=</tt> <tt class="py-name">verbosity</tt> <tt class="py-op">+</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">verbose</tt> <tt class="py-op">-</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">quiet</tt> </tt>
+<a name="L497"></a><tt class="py-lineno"> 497</tt>  <tt class="py-line"> </tt>
+<a name="L498"></a><tt class="py-lineno"> 498</tt>  <tt class="py-line">    <tt class="py-comment"># The target default depends on the action.</tt> </tt>
+<a name="L499"></a><tt class="py-lineno"> 499</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">target</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L500"></a><tt class="py-lineno"> 500</tt>  <tt class="py-line">        <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">target</tt> <tt class="py-op">=</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">action</tt> </tt>
+<a name="L501"></a><tt class="py-lineno"> 501</tt>  <tt class="py-line">     </tt>
+<a name="L502"></a><tt class="py-lineno"> 502</tt>  <tt class="py-line">    <tt class="py-comment"># Return parsed args.</tt> </tt>
+<a name="L503"></a><tt class="py-lineno"> 503</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">names</tt> <tt class="py-op">=</tt> <tt class="py-name">names</tt> </tt>
+<a name="L504"></a><tt class="py-lineno"> 504</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">options</tt><tt class="py-op">,</tt> <tt class="py-name">names</tt> </tt>
+</div><a name="L505"></a><tt class="py-lineno"> 505</tt>  <tt class="py-line"> </tt>
+<a name="parse_configfiles"></a><div id="parse_configfiles-def"><a name="L506"></a><tt class="py-lineno"> 506</tt> <a class="py-toggle" href="#" id="parse_configfiles-toggle" onclick="return toggle('parse_configfiles');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.cli-module.html#parse_configfiles">parse_configfiles</a><tt class="py-op">(</tt><tt class="py-param">configfiles</tt><tt class="py-op">,</tt> <tt class="py-param">options</tt><tt [...]
+</div><div id="parse_configfiles-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="parse_configfiles-expanded"><a name="L507"></a><tt class="py-lineno"> 507</tt>  <tt class="py-line">    <tt class="py-name">configparser</tt> <tt class="py-op">=</tt> <tt class="py-name">ConfigParser</tt><tt class="py-op">.</tt><tt class="py-name">ConfigParser</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L508"></a><tt class="py-lineno"> 508</tt>  <tt class="py-line">    <tt class="py-comment"># ConfigParser.read() silently ignores errors, so open the files</tt> </tt>
+<a name="L509"></a><tt class="py-lineno"> 509</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># manually (since we want to notify the user of any errors).</tt> </tt>
+<a name="L510"></a><tt class="py-lineno"> 510</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">for</tt> <tt class="py-name">configfile</tt> <tt class="py-keyword">in</tt> <tt class="py-name">configfiles</tt><tt class="py-op">:</tt> </tt>
+<a name="L511"></a><tt class="py-lineno"> 511</tt>  <tt class="py-line">        <tt class="py-name">fp</tt> <tt class="py-op">=</tt> <tt id="link-93" class="py-name" targets="Method epydoc.gui.EpydocGUI.open()=epydoc.gui.EpydocGUI-class.html#open"><a title="epydoc.gui.EpydocGUI.open" class="py-name" href="#" onclick="return doclink('link-93', 'open', 'link-93');">open</a></tt><tt class="py-op">(</tt><tt class="py-name">configfile</tt><tt class="py-op">,</tt> <tt class="py-string">'r'</tt [...]
+<a name="L512"></a><tt class="py-lineno"> 512</tt>  <tt class="py-line">        <tt class="py-name">configparser</tt><tt class="py-op">.</tt><tt class="py-name">readfp</tt><tt class="py-op">(</tt><tt class="py-name">fp</tt><tt class="py-op">,</tt> <tt class="py-name">configfile</tt><tt class="py-op">)</tt> </tt>
+<a name="L513"></a><tt class="py-lineno"> 513</tt>  <tt class="py-line">        <tt class="py-name">fp</tt><tt class="py-op">.</tt><tt id="link-94" class="py-name" targets="Method epydoc.cli.HTMLLogger.close()=epydoc.cli.HTMLLogger-class.html#close,Method epydoc.docintrospecter._DevNull.close()=epydoc.docintrospecter._DevNull-class.html#close,Method epydoc.log.Logger.close()=epydoc.log.Logger-class.html#close,Function epydoc.log.close()=epydoc.log-module.html#close"><a title="epydoc.cli. [...]
+epydoc.docintrospecter._DevNull.close
+epydoc.log.Logger.close
+epydoc.log.close" class="py-name" href="#" onclick="return doclink('link-94', 'close', 'link-94');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L514"></a><tt class="py-lineno"> 514</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">optname</tt> <tt class="py-keyword">in</tt> <tt class="py-name">configparser</tt><tt class="py-op">.</tt><tt class="py-name">options</tt><tt class="py-op">(</tt><tt class="py-string">'epydoc'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L515"></a><tt class="py-lineno"> 515</tt>  <tt class="py-line">        <tt class="py-name">val</tt> <tt class="py-op">=</tt> <tt class="py-name">configparser</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'epydoc'</tt><tt class="py-op">,</tt> <tt class="py-name">optname</tt><tt class="py-op">,</tt> <tt class="py-name">vars</tt><tt class="py-op">=</tt><tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">envi [...]
+<a name="L516"></a><tt class="py-lineno"> 516</tt>  <tt class="py-line">        <tt class="py-name">optname</tt> <tt class="py-op">=</tt> <tt class="py-name">optname</tt><tt class="py-op">.</tt><tt class="py-name">lower</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">strip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L517"></a><tt class="py-lineno"> 517</tt>  <tt class="py-line"> </tt>
+<a name="L518"></a><tt class="py-lineno"> 518</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">optname</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-string">'modules'</tt><tt class="py-op">,</tt> <tt class="py-string">'objects'</tt><tt class="py-op">,</tt> <tt class="py-string">'values'</tt><tt class="py-op">,</tt> </tt>
+<a name="L519"></a><tt class="py-lineno"> 519</tt>  <tt class="py-line">                       <tt class="py-string">'module'</tt><tt class="py-op">,</tt> <tt class="py-string">'object'</tt><tt class="py-op">,</tt> <tt class="py-string">'value'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L520"></a><tt class="py-lineno"> 520</tt>  <tt class="py-line">            <tt class="py-name">names</tt><tt class="py-op">.</tt><tt class="py-name">extend</tt><tt class="py-op">(</tt><tt id="link-95" class="py-name" targets="Function epydoc.cli._str_to_list()=epydoc.cli-module.html#_str_to_list"><a title="epydoc.cli._str_to_list" class="py-name" href="#" onclick="return doclink('link-95', '_str_to_list', 'link-95');">_str_to_list</a></tt><tt class="py-op">(</tt><tt class="py-na [...]
+<a name="L521"></a><tt class="py-lineno"> 521</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">optname</tt> <tt class="py-op">==</tt> <tt class="py-string">'target'</tt><tt class="py-op">:</tt> </tt>
+<a name="L522"></a><tt class="py-lineno"> 522</tt>  <tt class="py-line">            <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">target</tt> <tt class="py-op">=</tt> <tt class="py-name">val</tt> </tt>
+<a name="L523"></a><tt class="py-lineno"> 523</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">optname</tt> <tt class="py-op">==</tt> <tt class="py-string">'output'</tt><tt class="py-op">:</tt> </tt>
+<a name="L524"></a><tt class="py-lineno"> 524</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">val</tt><tt class="py-op">.</tt><tt class="py-name">lower</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt id="link-96" class="py-name"><a title="epydoc.cli.ACTIONS" class="py-name" href="#" onclick="return doclink('link-96', 'ACTIONS', 'link-26');">ACTIONS</a></tt><tt class="py-op">:< [...]
+<a name="L525"></a><tt class="py-lineno"> 525</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">'"%s" expected one of: %s'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L526"></a><tt class="py-lineno"> 526</tt>  <tt class="py-line">                                 <tt class="py-op">(</tt><tt class="py-name">optname</tt><tt class="py-op">,</tt> <tt class="py-string">', '</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt id="link-97" class="py-name"><a title="epydoc.cli.ACTIONS" class="py-name" href="#" onclick="return doclink('link-97', 'ACTIONS', 'link-26');">ACTIONS</a></tt><tt class="py-op">)</tt><tt class=" [...]
+<a name="L527"></a><tt class="py-lineno"> 527</tt>  <tt class="py-line">            <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">action</tt> <tt class="py-op">=</tt> <tt class="py-name">val</tt><tt class="py-op">.</tt><tt class="py-name">lower</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L528"></a><tt class="py-lineno"> 528</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">optname</tt> <tt class="py-op">==</tt> <tt class="py-string">'verbosity'</tt><tt class="py-op">:</tt> </tt>
+<a name="L529"></a><tt class="py-lineno"> 529</tt>  <tt class="py-line">            <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">verbosity</tt> <tt class="py-op">=</tt> <tt id="link-98" class="py-name" targets="Function epydoc.cli._str_to_int()=epydoc.cli-module.html#_str_to_int"><a title="epydoc.cli._str_to_int" class="py-name" href="#" onclick="return doclink('link-98', '_str_to_int', 'link-98');">_str_to_int</a></tt><tt class="py-op">(</tt><tt class="py- [...]
+<a name="L530"></a><tt class="py-lineno"> 530</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">optname</tt> <tt class="py-op">==</tt> <tt class="py-string">'debug'</tt><tt class="py-op">:</tt> </tt>
+<a name="L531"></a><tt class="py-lineno"> 531</tt>  <tt class="py-line">            <tt class="py-name">options</tt><tt class="py-op">.</tt><tt id="link-99" class="py-name"><a title="epydoc.log.debug
+epydoc.markup.restructuredtext.OptimizedReporter.debug" class="py-name" href="#" onclick="return doclink('link-99', 'debug', 'link-46');">debug</a></tt> <tt class="py-op">=</tt> <tt id="link-100" class="py-name" targets="Function epydoc.cli._str_to_bool()=epydoc.cli-module.html#_str_to_bool"><a title="epydoc.cli._str_to_bool" class="py-name" href="#" onclick="return doclink('link-100', '_str_to_bool', 'link-100');">_str_to_bool</a></tt><tt class="py-op">(</tt><tt class="py-name">val</tt> [...]
+<a name="L532"></a><tt class="py-lineno"> 532</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">optname</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-string">'simple-term'</tt><tt class="py-op">,</tt> <tt class="py-string">'simple_term'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L533"></a><tt class="py-lineno"> 533</tt>  <tt class="py-line">            <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">simple_term</tt> <tt class="py-op">=</tt> <tt id="link-101" class="py-name"><a title="epydoc.cli._str_to_bool" class="py-name" href="#" onclick="return doclink('link-101', '_str_to_bool', 'link-100');">_str_to_bool</a></tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">,</tt> <tt class="py-name">optname</tt> [...]
+<a name="L534"></a><tt class="py-lineno"> 534</tt>  <tt class="py-line"> </tt>
+<a name="L535"></a><tt class="py-lineno"> 535</tt>  <tt class="py-line">        <tt class="py-comment"># Generation options</tt> </tt>
+<a name="L536"></a><tt class="py-lineno"> 536</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">elif</tt> <tt class="py-name">optname</tt> <tt class="py-op">==</tt> <tt class="py-string">'docformat'</tt><tt class="py-op">:</tt> </tt>
+<a name="L537"></a><tt class="py-lineno"> 537</tt>  <tt class="py-line">            <tt class="py-name">options</tt><tt class="py-op">.</tt><tt id="link-102" class="py-name"><a title="epydoc.apidoc.ModuleDoc.docformat" class="py-name" href="#" onclick="return doclink('link-102', 'docformat', 'link-43');">docformat</a></tt> <tt class="py-op">=</tt> <tt class="py-name">val</tt> </tt>
+<a name="L538"></a><tt class="py-lineno"> 538</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">optname</tt> <tt class="py-op">==</tt> <tt class="py-string">'parse'</tt><tt class="py-op">:</tt> </tt>
+<a name="L539"></a><tt class="py-lineno"> 539</tt>  <tt class="py-line">            <tt class="py-name">options</tt><tt class="py-op">.</tt><tt id="link-103" class="py-name"><a title="epydoc.markup.epytext.parse
+epydoc.markup.parse" class="py-name" href="#" onclick="return doclink('link-103', 'parse', 'link-45');">parse</a></tt> <tt class="py-op">=</tt> <tt id="link-104" class="py-name"><a title="epydoc.cli._str_to_bool" class="py-name" href="#" onclick="return doclink('link-104', '_str_to_bool', 'link-100');">_str_to_bool</a></tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">,</tt> <tt class="py-name">optname</tt><tt class="py-op">)</tt> </tt>
+<a name="L540"></a><tt class="py-lineno"> 540</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">optname</tt> <tt class="py-op">==</tt> <tt class="py-string">'introspect'</tt><tt class="py-op">:</tt> </tt>
+<a name="L541"></a><tt class="py-lineno"> 541</tt>  <tt class="py-line">            <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">introspect</tt> <tt class="py-op">=</tt> <tt id="link-105" class="py-name"><a title="epydoc.cli._str_to_bool" class="py-name" href="#" onclick="return doclink('link-105', '_str_to_bool', 'link-100');">_str_to_bool</a></tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">,</tt> <tt class="py-name">optname</tt>< [...]
+<a name="L542"></a><tt class="py-lineno"> 542</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">optname</tt> <tt class="py-op">==</tt> <tt class="py-string">'exclude'</tt><tt class="py-op">:</tt> </tt>
+<a name="L543"></a><tt class="py-lineno"> 543</tt>  <tt class="py-line">            <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">exclude</tt><tt class="py-op">.</tt><tt class="py-name">extend</tt><tt class="py-op">(</tt><tt id="link-106" class="py-name"><a title="epydoc.cli._str_to_list" class="py-name" href="#" onclick="return doclink('link-106', '_str_to_list', 'link-95');">_str_to_list</a></tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class [...]
+<a name="L544"></a><tt class="py-lineno"> 544</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">optname</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-string">'exclude-parse'</tt><tt class="py-op">,</tt> <tt class="py-string">'exclude_parse'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L545"></a><tt class="py-lineno"> 545</tt>  <tt class="py-line">            <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">exclude_parse</tt><tt class="py-op">.</tt><tt class="py-name">extend</tt><tt class="py-op">(</tt><tt id="link-107" class="py-name"><a title="epydoc.cli._str_to_list" class="py-name" href="#" onclick="return doclink('link-107', '_str_to_list', 'link-95');">_str_to_list</a></tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt [...]
+<a name="L546"></a><tt class="py-lineno"> 546</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">optname</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-string">'exclude-introspect'</tt><tt class="py-op">,</tt> <tt class="py-string">'exclude_introspect'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L547"></a><tt class="py-lineno"> 547</tt>  <tt class="py-line">            <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">exclude_introspect</tt><tt class="py-op">.</tt><tt class="py-name">extend</tt><tt class="py-op">(</tt><tt id="link-108" class="py-name"><a title="epydoc.cli._str_to_list" class="py-name" href="#" onclick="return doclink('link-108', '_str_to_list', 'link-95');">_str_to_list</a></tt><tt class="py-op">(</tt><tt class="py-name">val</t [...]
+<a name="L548"></a><tt class="py-lineno"> 548</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">optname</tt> <tt class="py-op">==</tt> <tt class="py-string">'inheritance'</tt><tt class="py-op">:</tt> </tt>
+<a name="L549"></a><tt class="py-lineno"> 549</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">val</tt><tt class="py-op">.</tt><tt class="py-name">lower</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt id="link-109" class="py-name"><a title="epydoc.cli.INHERITANCE_STYLES" class="py-name" href="#" onclick="return doclink('link-109', 'INHERITANCE_STYLES', 'link-24');">INHERITANCE_ [...]
+<a name="L550"></a><tt class="py-lineno"> 550</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">'"%s" expected one of: %s.'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L551"></a><tt class="py-lineno"> 551</tt>  <tt class="py-line">                                 <tt class="py-op">(</tt><tt class="py-name">optname</tt><tt class="py-op">,</tt> <tt class="py-string">', '</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt id="link-110" class="py-name"><a title="epydoc.cli.INHERITANCE_STYLES" class="py-name" href="#" onclick="return doclink('link-110', 'INHERITANCE_STYLES', 'link-24');">INHERITANCE_STYLES</a></tt> [...]
+<a name="L552"></a><tt class="py-lineno"> 552</tt>  <tt class="py-line">            <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">inheritance</tt> <tt class="py-op">=</tt> <tt class="py-name">val</tt><tt class="py-op">.</tt><tt class="py-name">lower</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L553"></a><tt class="py-lineno"> 553</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">optname</tt> <tt class="py-op">==</tt><tt class="py-string">'private'</tt><tt class="py-op">:</tt> </tt>
+<a name="L554"></a><tt class="py-lineno"> 554</tt>  <tt class="py-line">            <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">show_private</tt> <tt class="py-op">=</tt> <tt id="link-111" class="py-name"><a title="epydoc.cli._str_to_bool" class="py-name" href="#" onclick="return doclink('link-111', '_str_to_bool', 'link-100');">_str_to_bool</a></tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">,</tt> <tt class="py-name">optname</tt [...]
+<a name="L555"></a><tt class="py-lineno"> 555</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">optname</tt> <tt class="py-op">==</tt><tt class="py-string">'imports'</tt><tt class="py-op">:</tt> </tt>
+<a name="L556"></a><tt class="py-lineno"> 556</tt>  <tt class="py-line">            <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">show_imports</tt> <tt class="py-op">=</tt> <tt id="link-112" class="py-name"><a title="epydoc.cli._str_to_bool" class="py-name" href="#" onclick="return doclink('link-112', '_str_to_bool', 'link-100');">_str_to_bool</a></tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">,</tt> <tt class="py-name">optname</tt [...]
+<a name="L557"></a><tt class="py-lineno"> 557</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">optname</tt> <tt class="py-op">==</tt> <tt class="py-string">'sourcecode'</tt><tt class="py-op">:</tt> </tt>
+<a name="L558"></a><tt class="py-lineno"> 558</tt>  <tt class="py-line">            <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">include_source_code</tt> <tt class="py-op">=</tt> <tt id="link-113" class="py-name"><a title="epydoc.cli._str_to_bool" class="py-name" href="#" onclick="return doclink('link-113', '_str_to_bool', 'link-100');">_str_to_bool</a></tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">,</tt> <tt class="py-name">optn [...]
+<a name="L559"></a><tt class="py-lineno"> 559</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">optname</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-string">'include-log'</tt><tt class="py-op">,</tt> <tt class="py-string">'include_log'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L560"></a><tt class="py-lineno"> 560</tt>  <tt class="py-line">            <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">include_log</tt> <tt class="py-op">=</tt> <tt id="link-114" class="py-name"><a title="epydoc.cli._str_to_bool" class="py-name" href="#" onclick="return doclink('link-114', '_str_to_bool', 'link-100');">_str_to_bool</a></tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">,</tt> <tt class="py-name">optname</tt> [...]
+<a name="L561"></a><tt class="py-lineno"> 561</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">optname</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-string">'redundant-details'</tt><tt class="py-op">,</tt> <tt class="py-string">'redundant_details'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L562"></a><tt class="py-lineno"> 562</tt>  <tt class="py-line">            <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">redundant_details</tt> <tt class="py-op">=</tt> <tt id="link-115" class="py-name"><a title="epydoc.cli._str_to_bool" class="py-name" href="#" onclick="return doclink('link-115', '_str_to_bool', 'link-100');">_str_to_bool</a></tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">,</tt> <tt class="py-name">optnam [...]
+<a name="L563"></a><tt class="py-lineno"> 563</tt>  <tt class="py-line"> </tt>
+<a name="L564"></a><tt class="py-lineno"> 564</tt>  <tt class="py-line">        <tt class="py-comment"># Output options</tt> </tt>
+<a name="L565"></a><tt class="py-lineno"> 565</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">elif</tt> <tt class="py-name">optname</tt> <tt class="py-op">==</tt> <tt class="py-string">'name'</tt><tt class="py-op">:</tt> </tt>
+<a name="L566"></a><tt class="py-lineno"> 566</tt>  <tt class="py-line">            <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">prj_name</tt> <tt class="py-op">=</tt> <tt class="py-name">val</tt> </tt>
+<a name="L567"></a><tt class="py-lineno"> 567</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">optname</tt> <tt class="py-op">==</tt> <tt class="py-string">'css'</tt><tt class="py-op">:</tt> </tt>
+<a name="L568"></a><tt class="py-lineno"> 568</tt>  <tt class="py-line">            <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">css</tt> <tt class="py-op">=</tt> <tt class="py-name">val</tt> </tt>
+<a name="L569"></a><tt class="py-lineno"> 569</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">optname</tt> <tt class="py-op">==</tt> <tt class="py-string">'url'</tt><tt class="py-op">:</tt> </tt>
+<a name="L570"></a><tt class="py-lineno"> 570</tt>  <tt class="py-line">            <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">prj_url</tt> <tt class="py-op">=</tt> <tt class="py-name">val</tt> </tt>
+<a name="L571"></a><tt class="py-lineno"> 571</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">optname</tt> <tt class="py-op">==</tt> <tt class="py-string">'link'</tt><tt class="py-op">:</tt> </tt>
+<a name="L572"></a><tt class="py-lineno"> 572</tt>  <tt class="py-line">            <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">prj_link</tt> <tt class="py-op">=</tt> <tt class="py-name">val</tt> </tt>
+<a name="L573"></a><tt class="py-lineno"> 573</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">optname</tt> <tt class="py-op">==</tt> <tt class="py-string">'top'</tt><tt class="py-op">:</tt> </tt>
+<a name="L574"></a><tt class="py-lineno"> 574</tt>  <tt class="py-line">            <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">top_page</tt> <tt class="py-op">=</tt> <tt class="py-name">val</tt> </tt>
+<a name="L575"></a><tt class="py-lineno"> 575</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">optname</tt> <tt class="py-op">==</tt> <tt class="py-string">'help'</tt><tt class="py-op">:</tt> </tt>
+<a name="L576"></a><tt class="py-lineno"> 576</tt>  <tt class="py-line">            <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">help_file</tt> <tt class="py-op">=</tt> <tt class="py-name">val</tt> </tt>
+<a name="L577"></a><tt class="py-lineno"> 577</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">optname</tt> <tt class="py-op">==</tt><tt class="py-string">'frames'</tt><tt class="py-op">:</tt> </tt>
+<a name="L578"></a><tt class="py-lineno"> 578</tt>  <tt class="py-line">            <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">show_frames</tt> <tt class="py-op">=</tt> <tt id="link-116" class="py-name"><a title="epydoc.cli._str_to_bool" class="py-name" href="#" onclick="return doclink('link-116', '_str_to_bool', 'link-100');">_str_to_bool</a></tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">,</tt> <tt class="py-name">optname</tt> [...]
+<a name="L579"></a><tt class="py-lineno"> 579</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">optname</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-string">'separate-classes'</tt><tt class="py-op">,</tt> <tt class="py-string">'separate_classes'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L580"></a><tt class="py-lineno"> 580</tt>  <tt class="py-line">            <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">list_classes_separately</tt> <tt class="py-op">=</tt> <tt id="link-117" class="py-name"><a title="epydoc.cli._str_to_bool" class="py-name" href="#" onclick="return doclink('link-117', '_str_to_bool', 'link-100');">_str_to_bool</a></tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">,</tt> <tt class="py-name"> [...]
+<a name="L581"></a><tt class="py-lineno"> 581</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">optname</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-string">'src-code-tab-width'</tt><tt class="py-op">,</tt> <tt class="py-string">'src_code_tab_width'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L582"></a><tt class="py-lineno"> 582</tt>  <tt class="py-line">            <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">src_code_tab_width</tt> <tt class="py-op">=</tt> <tt id="link-118" class="py-name"><a title="epydoc.cli._str_to_int" class="py-name" href="#" onclick="return doclink('link-118', '_str_to_int', 'link-98');">_str_to_int</a></tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">,</tt> <tt class="py-name">optname</ [...]
+<a name="L583"></a><tt class="py-lineno"> 583</tt>  <tt class="py-line"> </tt>
+<a name="L584"></a><tt class="py-lineno"> 584</tt>  <tt class="py-line">        <tt class="py-comment"># External API</tt> </tt>
+<a name="L585"></a><tt class="py-lineno"> 585</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">elif</tt> <tt class="py-name">optname</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-string">'external-api'</tt><tt class="py-op">,</tt> <tt class="py-string">'external_api'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L586"></a><tt class="py-lineno"> 586</tt>  <tt class="py-line">            <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">external_api</tt><tt class="py-op">.</tt><tt class="py-name">extend</tt><tt class="py-op">(</tt><tt id="link-119" class="py-name"><a title="epydoc.cli._str_to_list" class="py-name" href="#" onclick="return doclink('link-119', '_str_to_list', 'link-95');">_str_to_list</a></tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt  [...]
+<a name="L587"></a><tt class="py-lineno"> 587</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">optname</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-string">'external-api-file'</tt><tt class="py-op">,</tt> <tt class="py-string">'external_api_file'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L588"></a><tt class="py-lineno"> 588</tt>  <tt class="py-line">            <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">external_api_file</tt><tt class="py-op">.</tt><tt class="py-name">extend</tt><tt class="py-op">(</tt><tt id="link-120" class="py-name"><a title="epydoc.cli._str_to_list" class="py-name" href="#" onclick="return doclink('link-120', '_str_to_list', 'link-95');">_str_to_list</a></tt><tt class="py-op">(</tt><tt class="py-name">val</tt [...]
+<a name="L589"></a><tt class="py-lineno"> 589</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">optname</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-string">'external-api-root'</tt><tt class="py-op">,</tt> <tt class="py-string">'external_api_root'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L590"></a><tt class="py-lineno"> 590</tt>  <tt class="py-line">            <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">external_api_root</tt><tt class="py-op">.</tt><tt class="py-name">extend</tt><tt class="py-op">(</tt><tt id="link-121" class="py-name"><a title="epydoc.cli._str_to_list" class="py-name" href="#" onclick="return doclink('link-121', '_str_to_list', 'link-95');">_str_to_list</a></tt><tt class="py-op">(</tt><tt class="py-name">val</tt [...]
+<a name="L591"></a><tt class="py-lineno"> 591</tt>  <tt class="py-line"> </tt>
+<a name="L592"></a><tt class="py-lineno"> 592</tt>  <tt class="py-line">        <tt class="py-comment"># Graph options</tt> </tt>
+<a name="L593"></a><tt class="py-lineno"> 593</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">elif</tt> <tt class="py-name">optname</tt> <tt class="py-op">==</tt> <tt class="py-string">'graph'</tt><tt class="py-op">:</tt> </tt>
+<a name="L594"></a><tt class="py-lineno"> 594</tt>  <tt class="py-line">            <tt class="py-name">graphtypes</tt> <tt class="py-op">=</tt> <tt id="link-122" class="py-name"><a title="epydoc.cli._str_to_list" class="py-name" href="#" onclick="return doclink('link-122', '_str_to_list', 'link-95');">_str_to_list</a></tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">)</tt> </tt>
+<a name="L595"></a><tt class="py-lineno"> 595</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">graphtype</tt> <tt class="py-keyword">in</tt> <tt class="py-name">graphtypes</tt><tt class="py-op">:</tt> </tt>
+<a name="L596"></a><tt class="py-lineno"> 596</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">graphtype</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt id="link-123" class="py-name"><a title="epydoc.cli.GRAPH_TYPES
+epydoc.markup.epytext.GRAPH_TYPES" class="py-name" href="#" onclick="return doclink('link-123', 'GRAPH_TYPES', 'link-25');">GRAPH_TYPES</a></tt> <tt class="py-op">+</tt> <tt class="py-op">(</tt><tt class="py-string">'all'</tt><tt class="py-op">,</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L597"></a><tt class="py-lineno"> 597</tt>  <tt class="py-line">                    <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">'"%s" expected one of: all, %s.'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L598"></a><tt class="py-lineno"> 598</tt>  <tt class="py-line">                                     <tt class="py-op">(</tt><tt class="py-name">optname</tt><tt class="py-op">,</tt> <tt class="py-string">', '</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt id="link-124" class="py-name"><a title="epydoc.cli.GRAPH_TYPES
+epydoc.markup.epytext.GRAPH_TYPES" class="py-name" href="#" onclick="return doclink('link-124', 'GRAPH_TYPES', 'link-25');">GRAPH_TYPES</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L599"></a><tt class="py-lineno"> 599</tt>  <tt class="py-line">            <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">graphs</tt><tt class="py-op">.</tt><tt class="py-name">extend</tt><tt class="py-op">(</tt><tt class="py-name">graphtypes</tt><tt class="py-op">)</tt> </tt>
+<a name="L600"></a><tt class="py-lineno"> 600</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">optname</tt> <tt class="py-op">==</tt> <tt class="py-string">'dotpath'</tt><tt class="py-op">:</tt> </tt>
+<a name="L601"></a><tt class="py-lineno"> 601</tt>  <tt class="py-line">            <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">dotpath</tt> <tt class="py-op">=</tt> <tt class="py-name">val</tt> </tt>
+<a name="L602"></a><tt class="py-lineno"> 602</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">optname</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-string">'graph-font'</tt><tt class="py-op">,</tt> <tt class="py-string">'graph_font'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L603"></a><tt class="py-lineno"> 603</tt>  <tt class="py-line">            <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">graph_font</tt> <tt class="py-op">=</tt> <tt class="py-name">val</tt> </tt>
+<a name="L604"></a><tt class="py-lineno"> 604</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">optname</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-string">'graph-font-size'</tt><tt class="py-op">,</tt> <tt class="py-string">'graph_font_size'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L605"></a><tt class="py-lineno"> 605</tt>  <tt class="py-line">            <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">graph_font_size</tt> <tt class="py-op">=</tt> <tt id="link-125" class="py-name"><a title="epydoc.cli._str_to_int" class="py-name" href="#" onclick="return doclink('link-125', '_str_to_int', 'link-98');">_str_to_int</a></tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">,</tt> <tt class="py-name">optname</tt> [...]
+<a name="L606"></a><tt class="py-lineno"> 606</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">optname</tt> <tt class="py-op">==</tt> <tt class="py-string">'pstat'</tt><tt class="py-op">:</tt> </tt>
+<a name="L607"></a><tt class="py-lineno"> 607</tt>  <tt class="py-line">            <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">pstat_files</tt><tt class="py-op">.</tt><tt class="py-name">extend</tt><tt class="py-op">(</tt><tt id="link-126" class="py-name"><a title="epydoc.cli._str_to_list" class="py-name" href="#" onclick="return doclink('link-126', '_str_to_list', 'link-95');">_str_to_list</a></tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt c [...]
+<a name="L608"></a><tt class="py-lineno"> 608</tt>  <tt class="py-line"> </tt>
+<a name="L609"></a><tt class="py-lineno"> 609</tt>  <tt class="py-line">        <tt class="py-comment"># Return value options</tt> </tt>
+<a name="L610"></a><tt class="py-lineno"> 610</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">elif</tt> <tt class="py-name">optname</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-string">'failon'</tt><tt class="py-op">,</tt> <tt class="py-string">'fail-on'</tt><tt class="py-op">,</tt> <tt class="py-string">'fail_on'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L611"></a><tt class="py-lineno"> 611</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">val</tt><tt class="py-op">.</tt><tt class="py-name">lower</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">strip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-string">'error'</tt><tt class="py-op">,</tt> <tt class="py-string">'errors' [...]
+<a name="L612"></a><tt class="py-lineno"> 612</tt>  <tt class="py-line">                <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">fail_on</tt> <tt class="py-op">=</tt> <tt id="link-127" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-127', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-128" class="py-name"><a title="epydoc.log.ERROR" class="py-name" href="#" onclick="return doclink('link-128', 'ERROR', 'link-62');">ERROR</a></tt> </tt>
+<a name="L613"></a><tt class="py-lineno"> 613</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">val</tt><tt class="py-op">.</tt><tt class="py-name">lower</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">strip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-string">'warning'</tt><tt class="py-op">,</tt> <tt class="py-string">'war [...]
+<a name="L614"></a><tt class="py-lineno"> 614</tt>  <tt class="py-line">                <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">fail_on</tt> <tt class="py-op">=</tt> <tt id="link-129" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-129', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-130" class="py-name"><a title="epydoc.log.WARNING" class="py-name" href="#" onclick="return doclink('link-130', 'WARNING', 'link-64');">WARNING</a></tt> </tt>
+<a name="L615"></a><tt class="py-lineno"> 615</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">val</tt><tt class="py-op">.</tt><tt class="py-name">lower</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">strip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-string">'docstring_warning'</tt><tt class="py-op">,</tt> </tt>
+<a name="L616"></a><tt class="py-lineno"> 616</tt>  <tt class="py-line">                                         <tt class="py-string">'docstring_warnings'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L617"></a><tt class="py-lineno"> 617</tt>  <tt class="py-line">                <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">fail_on</tt> <tt class="py-op">=</tt> <tt id="link-131" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-131', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-132" class="py-name"><a title="epydoc.log.DOCSTRING_WARNING" class="py-name" href="#" onclick="return doclink('link-132', 'DOCSTRING_WARNING', 'link-66');">DOCSTRING_WARNING</a></tt> </tt>
+<a name="L618"></a><tt class="py-lineno"> 618</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L619"></a><tt class="py-lineno"> 619</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"%r expected one of: error, warning, "</tt> </tt>
+<a name="L620"></a><tt class="py-lineno"> 620</tt>  <tt class="py-line">                                 <tt class="py-string">"docstring_warning"</tt> <tt class="py-op">%</tt> <tt class="py-name">optname</tt><tt class="py-op">)</tt> </tt>
+<a name="L621"></a><tt class="py-lineno"> 621</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L622"></a><tt class="py-lineno"> 622</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">'Unknown option %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">optname</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L623"></a><tt class="py-lineno"> 623</tt>  <tt class="py-line"> </tt>
+<a name="_str_to_bool"></a><div id="_str_to_bool-def"><a name="L624"></a><tt class="py-lineno"> 624</tt> <a class="py-toggle" href="#" id="_str_to_bool-toggle" onclick="return toggle('_str_to_bool');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.cli-module.html#_str_to_bool">_str_to_bool</a><tt class="py-op">(</tt><tt class="py-param">val</tt><tt class="py-op">,</tt> <tt class="py-param">optname</tt><tt class="py-op">)</tt><tt class="py-op" [...]
+</div><div id="_str_to_bool-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_str_to_bool-expanded"><a name="L625"></a><tt class="py-lineno"> 625</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">val</tt><tt class="py-op">.</tt><tt class="py-name">lower</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-string">'0'</tt><tt class="py-op">,</tt> <tt class="py-string [...]
+<a name="L626"></a><tt class="py-lineno"> 626</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
+<a name="L627"></a><tt class="py-lineno"> 627</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">val</tt><tt class="py-op">.</tt><tt class="py-name">lower</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-string">'1'</tt><tt class="py-op">,</tt> <tt class="py-string">'yes'</tt><tt class="py-op">,</tt> <tt class="py-string">'true'</tt><tt class="py-op">,</tt> <tt class="py-string">'y'</ [...]
+<a name="L628"></a><tt class="py-lineno"> 628</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
+<a name="L629"></a><tt class="py-lineno"> 629</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L630"></a><tt class="py-lineno"> 630</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">'"%s" option expected a boolean'</tt> <tt class="py-op">%</tt> <tt class="py-name">optname</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L631"></a><tt class="py-lineno"> 631</tt>  <tt class="py-line">         </tt>
+<a name="_str_to_int"></a><div id="_str_to_int-def"><a name="L632"></a><tt class="py-lineno"> 632</tt> <a class="py-toggle" href="#" id="_str_to_int-toggle" onclick="return toggle('_str_to_int');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.cli-module.html#_str_to_int">_str_to_int</a><tt class="py-op">(</tt><tt class="py-param">val</tt><tt class="py-op">,</tt> <tt class="py-param">optname</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_str_to_int-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_str_to_int-expanded"><a name="L633"></a><tt class="py-lineno"> 633</tt>  <tt class="py-line">    <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L634"></a><tt class="py-lineno"> 634</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">)</tt> </tt>
+<a name="L635"></a><tt class="py-lineno"> 635</tt>  <tt class="py-line">    <tt class="py-keyword">except</tt> <tt class="py-name">ValueError</tt><tt class="py-op">:</tt> </tt>
+<a name="L636"></a><tt class="py-lineno"> 636</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">'"%s" option expected an int'</tt> <tt class="py-op">%</tt> <tt class="py-name">optname</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L637"></a><tt class="py-lineno"> 637</tt>  <tt class="py-line"> </tt>
+<a name="_str_to_list"></a><div id="_str_to_list-def"><a name="L638"></a><tt class="py-lineno"> 638</tt> <a class="py-toggle" href="#" id="_str_to_list-toggle" onclick="return toggle('_str_to_list');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.cli-module.html#_str_to_list">_str_to_list</a><tt class="py-op">(</tt><tt class="py-param">val</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_str_to_list-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_str_to_list-expanded"><a name="L639"></a><tt class="py-lineno"> 639</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">val</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">','</tt><tt class="py-op">,</tt> <tt class="py-string">' '</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-na [...]
+</div><a name="L640"></a><tt class="py-lineno"> 640</tt>  <tt class="py-line"> </tt>
+<a name="L641"></a><tt class="py-lineno"> 641</tt>  <tt class="py-line"><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L642"></a><tt class="py-lineno"> 642</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#{ Interface</tt> </tt>
+<a name="L643"></a><tt class="py-lineno"> 643</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L644"></a><tt class="py-lineno"> 644</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="main"></a><div id="main-def"><a name="L645"></a><tt class="py-lineno"> 645</tt> <a class="py-toggle" href="#" id="main-toggle" onclick="return toggle('main');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.cli-module.html#main">main</a><tt class="py-op">(</tt><tt class="py-param">options</tt><tt class="py-op">,</tt> <tt class="py-param">names</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="main-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="main-expanded"><a name="L646"></a><tt class="py-lineno"> 646</tt>  <tt class="py-line">    <tt class="py-comment"># Set the debug flag, if '--debug' was specified.</tt> </tt>
+<a name="L647"></a><tt class="py-lineno"> 647</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt id="link-133" class="py-name"><a title="epydoc.log.debug
+epydoc.markup.restructuredtext.OptimizedReporter.debug" class="py-name" href="#" onclick="return doclink('link-133', 'debug', 'link-46');">debug</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L648"></a><tt class="py-lineno"> 648</tt>  <tt class="py-line">        <tt id="link-134" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-134', 'epydoc', 'link-0');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-135" class="py-name"><a title="epydoc.DEBUG
+epydoc.gui.DEBUG
+epydoc.log.DEBUG" class="py-name" href="#" onclick="return doclink('link-135', 'DEBUG', 'link-48');">DEBUG</a></tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L649"></a><tt class="py-lineno"> 649</tt>  <tt class="py-line"> </tt>
+<a name="L650"></a><tt class="py-lineno"> 650</tt>  <tt class="py-line">    <tt class="py-comment">## [XX] Did this serve a purpose?  Commenting out for now:</tt> </tt>
+<a name="L651"></a><tt class="py-lineno"> 651</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#if options.action == 'text':</tt> </tt>
+<a name="L652"></a><tt class="py-lineno"> 652</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#    if options.parse and options.introspect:</tt> </tt>
+<a name="L653"></a><tt class="py-lineno"> 653</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#        options.parse = False</tt> </tt>
+<a name="L654"></a><tt class="py-lineno"> 654</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L655"></a><tt class="py-lineno"> 655</tt>  <tt class="py-line">    <tt class="py-comment"># Set up the logger</tt> </tt>
+<a name="L656"></a><tt class="py-lineno"> 656</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">simple_term</tt><tt class="py-op">:</tt> </tt>
+<a name="L657"></a><tt class="py-lineno"> 657</tt>  <tt class="py-line">        <tt id="link-136" class="py-name" targets="Class epydoc.cli.TerminalController=epydoc.cli.TerminalController-class.html"><a title="epydoc.cli.TerminalController" class="py-name" href="#" onclick="return doclink('link-136', 'TerminalController', 'link-136');">TerminalController</a></tt><tt class="py-op">.</tt><tt id="link-137" class="py-name" targets="Variable epydoc.cli.TerminalController.FORCE_SIMPLE_TERM=ep [...]
+<a name="L658"></a><tt class="py-lineno"> 658</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">action</tt> <tt class="py-op">==</tt> <tt class="py-string">'text'</tt><tt class="py-op">:</tt> </tt>
+<a name="L659"></a><tt class="py-lineno"> 659</tt>  <tt class="py-line">        <tt class="py-name">logger</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> <tt class="py-comment"># no logger for text output.</tt> </tt>
+<a name="L660"></a><tt class="py-lineno"> 660</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">verbosity</tt> <tt class="py-op">></tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L661"></a><tt class="py-lineno"> 661</tt>  <tt class="py-line">        <tt class="py-name">logger</tt> <tt class="py-op">=</tt> <tt id="link-138" class="py-name" targets="Class epydoc.cli.ConsoleLogger=epydoc.cli.ConsoleLogger-class.html"><a title="epydoc.cli.ConsoleLogger" class="py-name" href="#" onclick="return doclink('link-138', 'ConsoleLogger', 'link-138');">ConsoleLogger</a></tt><tt class="py-op">(</tt><tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py- [...]
+<a name="L662"></a><tt class="py-lineno"> 662</tt>  <tt class="py-line">        <tt id="link-139" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-139', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-140" class="py-name" targets="Function epydoc.log.register_logger()=epydoc.log-module.html#register_logger"><a title="epydoc.log.register_logger" class="py-name" href="#" onclick="return doclink('link-140', 'register_logger', 'link-140');">register_logger</a></tt><tt class="py-op">(</tt><tt class="py-name">logger</tt><tt class="py-o [...]
+<a name="L663"></a><tt class="py-lineno"> 663</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L664"></a><tt class="py-lineno"> 664</tt>  <tt class="py-line">        <tt class="py-comment"># Each number is a rough approximation of how long we spend on</tt> </tt>
+<a name="L665"></a><tt class="py-lineno"> 665</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># that task, used to divide up the unified progress bar.</tt> </tt>
+<a name="L666"></a><tt class="py-lineno"> 666</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">stages</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-number">40</tt><tt class="py-op">,</tt>  <tt class="py-comment"># Building documentation</tt> </tt>
+<a name="L667"></a><tt class="py-lineno"> 667</tt>  <tt class="py-line">                  <tt class="py-number">7</tt><tt class="py-op">,</tt>   <tt class="py-comment"># Merging parsed & introspected information</tt> </tt>
+<a name="L668"></a><tt class="py-lineno"> 668</tt>  <tt class="py-line">                  <tt class="py-number">1</tt><tt class="py-op">,</tt>   <tt class="py-comment"># Linking imported variables</tt> </tt>
+<a name="L669"></a><tt class="py-lineno"> 669</tt>  <tt class="py-line">                  <tt class="py-number">3</tt><tt class="py-op">,</tt>   <tt class="py-comment"># Indexing documentation</tt> </tt>
+<a name="L670"></a><tt class="py-lineno"> 670</tt>  <tt class="py-line">                  <tt class="py-number">1</tt><tt class="py-op">,</tt>   <tt class="py-comment"># Checking for overridden methods</tt> </tt>
+<a name="L671"></a><tt class="py-lineno"> 671</tt>  <tt class="py-line">                  <tt class="py-number">30</tt><tt class="py-op">,</tt>  <tt class="py-comment"># Parsing Docstrings</tt> </tt>
+<a name="L672"></a><tt class="py-lineno"> 672</tt>  <tt class="py-line">                  <tt class="py-number">1</tt><tt class="py-op">,</tt>   <tt class="py-comment"># Inheriting documentation</tt> </tt>
+<a name="L673"></a><tt class="py-lineno"> 673</tt>  <tt class="py-line">                  <tt class="py-number">2</tt><tt class="py-op">]</tt>   <tt class="py-comment"># Sorting & Grouping</tt> </tt>
+<a name="L674"></a><tt class="py-lineno"> 674</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">load_pickle</tt><tt class="py-op">:</tt> </tt>
+<a name="L675"></a><tt class="py-lineno"> 675</tt>  <tt class="py-line">            <tt class="py-name">stages</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-number">30</tt><tt class="py-op">]</tt> <tt class="py-comment"># Loading pickled documentation</tt> </tt>
+<a name="L676"></a><tt class="py-lineno"> 676</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">action</tt> <tt class="py-op">==</tt> <tt class="py-string">'html'</tt><tt class="py-op">:</tt> <tt class="py-name">stages</tt> <tt class="py-op">+=</tt> <tt class="py-op">[</tt><tt class="py-number">100</tt><tt class="py-op">]</tt> </tt>
+<a name="L677"></a><tt class="py-lineno"> 677</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">action</tt> <tt class="py-op">==</tt> <tt class="py-string">'text'</tt><tt class="py-op">:</tt> <tt class="py-name">stages</tt> <tt class="py-op">+=</tt> <tt class="py-op">[</tt><tt class="py-number">30</tt><tt class="py-op">]</tt> </tt>
+<a name="L678"></a><tt class="py-lineno"> 678</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">action</tt> <tt class="py-op">==</tt> <tt class="py-string">'latex'</tt><tt class="py-op">:</tt> <tt class="py-name">stages</tt> <tt class="py-op">+=</tt> <tt class="py-op">[</tt><tt class="py-number">60</tt><tt class="py-op">]</tt> </tt>
+<a name="L679"></a><tt class="py-lineno"> 679</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">action</tt> <tt class="py-op">==</tt> <tt class="py-string">'dvi'</tt><tt class="py-op">:</tt> <tt class="py-name">stages</tt> <tt class="py-op">+=</tt> <tt class="py-op">[</tt><tt class="py-number">60</tt><tt class="py-op">,</tt><tt class="py-number">30</tt><tt class="py-op">]</tt> </tt>
+<a name="L680"></a><tt class="py-lineno"> 680</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">action</tt> <tt class="py-op">==</tt> <tt class="py-string">'ps'</tt><tt class="py-op">:</tt> <tt class="py-name">stages</tt> <tt class="py-op">+=</tt> <tt class="py-op">[</tt><tt class="py-number">60</tt><tt class="py-op">,</tt><tt class="py-number">40</tt><tt class="py-op">]</tt> </tt>
+<a name="L681"></a><tt class="py-lineno"> 681</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">action</tt> <tt class="py-op">==</tt> <tt class="py-string">'pdf'</tt><tt class="py-op">:</tt> <tt class="py-name">stages</tt> <tt class="py-op">+=</tt> <tt class="py-op">[</tt><tt class="py-number">60</tt><tt class="py-op">,</tt><tt class="py-number">50</tt><tt class="py-op">]</tt> </tt>
+<a name="L682"></a><tt class="py-lineno"> 682</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">action</tt> <tt class="py-op">==</tt> <tt class="py-string">'check'</tt><tt class="py-op">:</tt> <tt class="py-name">stages</tt> <tt class="py-op">+=</tt> <tt class="py-op">[</tt><tt class="py-number">10</tt><tt class="py-op">]</tt> </tt>
+<a name="L683"></a><tt class="py-lineno"> 683</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">action</tt> <tt class="py-op">==</tt> <tt class="py-string">'pickle'</tt><tt class="py-op">:</tt> <tt class="py-name">stages</tt> <tt class="py-op">+=</tt> <tt class="py-op">[</tt><tt class="py-number">10</tt><tt class="py-op">]</tt> </tt>
+<a name="L684"></a><tt class="py-lineno"> 684</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">,</tt> <tt class="py-string">'%r not supported'</tt> <tt class="py-op">%</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">action</tt> </tt>
+<a name="L685"></a><tt class="py-lineno"> 685</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt id="link-141" class="py-name"><a title="epydoc.markup.epytext.parse
+epydoc.markup.parse" class="py-name" href="#" onclick="return doclink('link-141', 'parse', 'link-45');">parse</a></tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">introspect</tt><tt class="py-op">:</tt> </tt>
+<a name="L686"></a><tt class="py-lineno"> 686</tt>  <tt class="py-line">            <tt class="py-keyword">del</tt> <tt class="py-name">stages</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-comment"># no merging</tt> </tt>
+<a name="L687"></a><tt class="py-lineno"> 687</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">introspect</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt id="link-142" class="py-name"><a title="epydoc.markup.epytext.parse
+epydoc.markup.parse" class="py-name" href="#" onclick="return doclink('link-142', 'parse', 'link-45');">parse</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L688"></a><tt class="py-lineno"> 688</tt>  <tt class="py-line">            <tt class="py-keyword">del</tt> <tt class="py-name">stages</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-number">3</tt><tt class="py-op">]</tt> <tt class="py-comment"># no merging or linking</tt> </tt>
+<a name="L689"></a><tt class="py-lineno"> 689</tt>  <tt class="py-line">        <tt class="py-name">logger</tt> <tt class="py-op">=</tt> <tt id="link-143" class="py-name" targets="Class epydoc.cli.UnifiedProgressConsoleLogger=epydoc.cli.UnifiedProgressConsoleLogger-class.html"><a title="epydoc.cli.UnifiedProgressConsoleLogger" class="py-name" href="#" onclick="return doclink('link-143', 'UnifiedProgressConsoleLogger', 'link-143');">UnifiedProgressConsoleLogger</a></tt><tt class="py-op">( [...]
+<a name="L690"></a><tt class="py-lineno"> 690</tt>  <tt class="py-line">        <tt id="link-144" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-144', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-145" class="py-name"><a title="epydoc.log.register_logger" class="py-name" href="#" onclick="return doclink('link-145', 'register_logger', 'link-140');">register_logger</a></tt><tt class="py-op">(</tt><tt class="py-name">logger</tt><tt class="py-op">)</tt> </tt>
+<a name="L691"></a><tt class="py-lineno"> 691</tt>  <tt class="py-line"> </tt>
+<a name="L692"></a><tt class="py-lineno"> 692</tt>  <tt class="py-line">    <tt class="py-comment"># check the output directory.</tt> </tt>
+<a name="L693"></a><tt class="py-lineno"> 693</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">action</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-string">'text'</tt><tt class="py-op">,</tt> <tt class="py-string">'check'</tt><tt class="py-op">,</tt> <tt class="py-string">'pickle'</tt><tt class="py-op">)</tt><tt cl [...]
+<a name="L694"></a><tt class="py-lineno"> 694</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-146" class="py-name" targets="Variable epydoc.apidoc.ModuleDoc.path=epydoc.apidoc.ModuleDoc-class.html#path"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-146', 'path', 'link-146');">path</a></tt><tt class="py-op">.</tt><tt class="py-name">exists</tt><tt class="py-op" [...]
+<a name="L695"></a><tt class="py-lineno"> 695</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-147" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-147', 'path', 'link-146');">path</a></tt><tt class="py-op">.</tt><tt class="py-name">isdir</tt><tt class="py-op">(</tt><tt class="py-name">options</tt><tt class="py- [...]
+<a name="L696"></a><tt class="py-lineno"> 696</tt>  <tt class="py-line">                <tt id="link-148" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-148', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-149" class="py-name"><a title="epydoc.log.error" class="py-name" href="#" onclick="return doclink('link-149', 'error', 'link-72');">error</a></tt><tt class="py-op">(</tt><tt class="py-string">"%s is not a directory"</tt> <tt class="py-op">%</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">target</tt>< [...]
+<a name="L697"></a><tt class="py-lineno"> 697</tt>  <tt class="py-line">                <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">exit</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L698"></a><tt class="py-lineno"> 698</tt>  <tt class="py-line"> </tt>
+<a name="L699"></a><tt class="py-lineno"> 699</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">include_log</tt><tt class="py-op">:</tt> </tt>
+<a name="L700"></a><tt class="py-lineno"> 700</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">action</tt> <tt class="py-op">==</tt> <tt class="py-string">'html'</tt><tt class="py-op">:</tt> </tt>
+<a name="L701"></a><tt class="py-lineno"> 701</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-150" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-150', 'path', 'link-146');">path</a></tt><tt class="py-op">.</tt><tt class="py-name">exists</tt><tt class="py-op">(</tt><tt class="py-name">options</tt><tt class="py [...]
+<a name="L702"></a><tt class="py-lineno"> 702</tt>  <tt class="py-line">                <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">mkdir</tt><tt class="py-op">(</tt><tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">target</tt><tt class="py-op">)</tt> </tt>
+<a name="L703"></a><tt class="py-lineno"> 703</tt>  <tt class="py-line">            <tt id="link-151" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-151', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-152" class="py-name"><a title="epydoc.log.register_logger" class="py-name" href="#" onclick="return doclink('link-152', 'register_logger', 'link-140');">register_logger</a></tt><tt class="py-op">(</tt><tt id="link-153" class="py-name" targets="Class epydoc.cli.HTMLLogger=epydoc.cli.HTMLLogger-class.html"><a title="epydoc.cli.HTMLLog [...]
+<a name="L704"></a><tt class="py-lineno"> 704</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L705"></a><tt class="py-lineno"> 705</tt>  <tt class="py-line">            <tt id="link-154" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-154', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-155" class="py-name" targets="Method epydoc.checker.DocChecker.warning()=epydoc.checker.DocChecker-class.html#warning,Function epydoc.log.warning()=epydoc.log-module.html#warning"><a title="epydoc.checker.DocChecker.warning
+epydoc.log.warning" class="py-name" href="#" onclick="return doclink('link-155', 'warning', 'link-155');">warning</a></tt><tt class="py-op">(</tt><tt class="py-string">"--include-log requires --html"</tt><tt class="py-op">)</tt> </tt>
+<a name="L706"></a><tt class="py-lineno"> 706</tt>  <tt class="py-line"> </tt>
+<a name="L707"></a><tt class="py-lineno"> 707</tt>  <tt class="py-line">    <tt class="py-comment"># Set the default docformat</tt> </tt>
+<a name="L708"></a><tt class="py-lineno"> 708</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">from</tt> <tt id="link-156" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-156', 'epydoc', 'link-0');">epydoc</a></tt> <tt class="py-keyword">import</tt> <tt id="link-157" class="py-name" targets="Module epydoc.docstringparser=epydoc.docstringparser-module.html"><a title="epydoc.docstringparser" class="py-name" href="#" o [...]
+<a name="L709"></a><tt class="py-lineno"> 709</tt>  <tt class="py-line">    <tt id="link-158" class="py-name"><a title="epydoc.docstringparser" class="py-name" href="#" onclick="return doclink('link-158', 'docstringparser', 'link-157');">docstringparser</a></tt><tt class="py-op">.</tt><tt id="link-159" class="py-name"><a title="epydoc.cli.DEFAULT_DOCFORMAT
+epydoc.docstringparser.DEFAULT_DOCFORMAT" class="py-name" href="#" onclick="return doclink('link-159', 'DEFAULT_DOCFORMAT', 'link-27');">DEFAULT_DOCFORMAT</a></tt> <tt class="py-op">=</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt id="link-160" class="py-name"><a title="epydoc.apidoc.ModuleDoc.docformat" class="py-name" href="#" onclick="return doclink('link-160', 'docformat', 'link-43');">docformat</a></tt> </tt>
+<a name="L710"></a><tt class="py-lineno"> 710</tt>  <tt class="py-line"> </tt>
+<a name="L711"></a><tt class="py-lineno"> 711</tt>  <tt class="py-line">    <tt class="py-comment"># Configure the external API linking</tt> </tt>
+<a name="L712"></a><tt class="py-lineno"> 712</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt id="link-161" class="py-name"><a title="epydoc.docwriter.xlink" class="py-name" href="#" onclick="return doclink('link-161', 'xlink', 'link-22');">xlink</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L713"></a><tt class="py-lineno"> 713</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L714"></a><tt class="py-lineno"> 714</tt>  <tt class="py-line">            <tt id="link-162" class="py-name"><a title="epydoc.docwriter.xlink" class="py-name" href="#" onclick="return doclink('link-162', 'xlink', 'link-22');">xlink</a></tt><tt class="py-op">.</tt><tt id="link-163" class="py-name"><a title="epydoc.docwriter.xlink.ApiLinkReader" class="py-name" href="#" onclick="return doclink('link-163', 'ApiLinkReader', 'link-55');">ApiLinkReader</a></tt><tt class="py-op">.</tt> [...]
+<a name="L715"></a><tt class="py-lineno"> 715</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt><tt class="py-op">,</tt> <tt class="py-name">exc</tt><tt class="py-op">:</tt> </tt>
+<a name="L716"></a><tt class="py-lineno"> 716</tt>  <tt class="py-line">            <tt id="link-165" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-165', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-166" class="py-name"><a title="epydoc.log.error" class="py-name" href="#" onclick="return doclink('link-166', 'error', 'link-72');">error</a></tt><tt class="py-op">(</tt><tt class="py-string">"Error while configuring external API linking: %s: %s"</tt> </tt>
+<a name="L717"></a><tt class="py-lineno"> 717</tt>  <tt class="py-line">                <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">exc</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt><tt class="py-op">,</tt> <tt class="py-name">exc</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L718"></a><tt class="py-lineno"> 718</tt>  <tt class="py-line"> </tt>
+<a name="L719"></a><tt class="py-lineno"> 719</tt>  <tt class="py-line">    <tt class="py-comment"># Set the dot path</tt> </tt>
+<a name="L720"></a><tt class="py-lineno"> 720</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">dotpath</tt><tt class="py-op">:</tt> </tt>
+<a name="L721"></a><tt class="py-lineno"> 721</tt>  <tt class="py-line">        <tt class="py-keyword">from</tt> <tt id="link-167" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-167', 'epydoc', 'link-0');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-168" class="py-name"><a title="epydoc.docwriter" class="py-name" href="#" onclick="return doclink('link-168', 'docwriter', 'link-17');">docwriter</a></tt> <tt class="py-keyword">import</tt> <t [...]
+epydoc.markup.restructuredtext.dotgraph" class="py-name" href="#" onclick="return doclink('link-169', 'dotgraph', 'link-169');">dotgraph</a></tt> </tt>
+<a name="L722"></a><tt class="py-lineno"> 722</tt>  <tt class="py-line">        <tt id="link-170" class="py-name"><a title="epydoc.docwriter.dotgraph
+epydoc.markup.restructuredtext.dotgraph" class="py-name" href="#" onclick="return doclink('link-170', 'dotgraph', 'link-169');">dotgraph</a></tt><tt class="py-op">.</tt><tt id="link-171" class="py-name" targets="Variable epydoc.docwriter.dotgraph.DOT_COMMAND=epydoc.docwriter.dotgraph-module.html#DOT_COMMAND"><a title="epydoc.docwriter.dotgraph.DOT_COMMAND" class="py-name" href="#" onclick="return doclink('link-171', 'DOT_COMMAND', 'link-171');">DOT_COMMAND</a></tt> <tt class="py-op">=</t [...]
+<a name="L723"></a><tt class="py-lineno"> 723</tt>  <tt class="py-line"> </tt>
+<a name="L724"></a><tt class="py-lineno"> 724</tt>  <tt class="py-line">    <tt class="py-comment"># Set the default graph font & size</tt> </tt>
+<a name="L725"></a><tt class="py-lineno"> 725</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">graph_font</tt><tt class="py-op">:</tt> </tt>
+<a name="L726"></a><tt class="py-lineno"> 726</tt>  <tt class="py-line">        <tt class="py-keyword">from</tt> <tt id="link-172" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-172', 'epydoc', 'link-0');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-173" class="py-name"><a title="epydoc.docwriter" class="py-name" href="#" onclick="return doclink('link-173', 'docwriter', 'link-17');">docwriter</a></tt> <tt class="py-keyword">import</tt> <t [...]
+epydoc.markup.restructuredtext.dotgraph" class="py-name" href="#" onclick="return doclink('link-174', 'dotgraph', 'link-169');">dotgraph</a></tt> </tt>
+<a name="L727"></a><tt class="py-lineno"> 727</tt>  <tt class="py-line">        <tt class="py-name">fontname</tt> <tt class="py-op">=</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">graph_font</tt> </tt>
+<a name="L728"></a><tt class="py-lineno"> 728</tt>  <tt class="py-line">        <tt id="link-175" class="py-name"><a title="epydoc.docwriter.dotgraph
+epydoc.markup.restructuredtext.dotgraph" class="py-name" href="#" onclick="return doclink('link-175', 'dotgraph', 'link-169');">dotgraph</a></tt><tt class="py-op">.</tt><tt id="link-176" class="py-name" targets="Class epydoc.docwriter.dotgraph.DotGraph=epydoc.docwriter.dotgraph.DotGraph-class.html"><a title="epydoc.docwriter.dotgraph.DotGraph" class="py-name" href="#" onclick="return doclink('link-176', 'DotGraph', 'link-176');">DotGraph</a></tt><tt class="py-op">.</tt><tt id="link-177"  [...]
+<a name="L729"></a><tt class="py-lineno"> 729</tt>  <tt class="py-line">        <tt id="link-178" class="py-name"><a title="epydoc.docwriter.dotgraph
+epydoc.markup.restructuredtext.dotgraph" class="py-name" href="#" onclick="return doclink('link-178', 'dotgraph', 'link-169');">dotgraph</a></tt><tt class="py-op">.</tt><tt id="link-179" class="py-name"><a title="epydoc.docwriter.dotgraph.DotGraph" class="py-name" href="#" onclick="return doclink('link-179', 'DotGraph', 'link-176');">DotGraph</a></tt><tt class="py-op">.</tt><tt id="link-180" class="py-name" targets="Variable epydoc.docwriter.dotgraph.DotGraph.DEFAULT_EDGE_DEFAULTS=epydoc [...]
+<a name="L730"></a><tt class="py-lineno"> 730</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">graph_font_size</tt><tt class="py-op">:</tt> </tt>
+<a name="L731"></a><tt class="py-lineno"> 731</tt>  <tt class="py-line">        <tt class="py-keyword">from</tt> <tt id="link-181" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-181', 'epydoc', 'link-0');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-182" class="py-name"><a title="epydoc.docwriter" class="py-name" href="#" onclick="return doclink('link-182', 'docwriter', 'link-17');">docwriter</a></tt> <tt class="py-keyword">import</tt> <t [...]
+epydoc.markup.restructuredtext.dotgraph" class="py-name" href="#" onclick="return doclink('link-183', 'dotgraph', 'link-169');">dotgraph</a></tt> </tt>
+<a name="L732"></a><tt class="py-lineno"> 732</tt>  <tt class="py-line">        <tt class="py-name">fontsize</tt> <tt class="py-op">=</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">graph_font_size</tt> </tt>
+<a name="L733"></a><tt class="py-lineno"> 733</tt>  <tt class="py-line">        <tt id="link-184" class="py-name"><a title="epydoc.docwriter.dotgraph
+epydoc.markup.restructuredtext.dotgraph" class="py-name" href="#" onclick="return doclink('link-184', 'dotgraph', 'link-169');">dotgraph</a></tt><tt class="py-op">.</tt><tt id="link-185" class="py-name"><a title="epydoc.docwriter.dotgraph.DotGraph" class="py-name" href="#" onclick="return doclink('link-185', 'DotGraph', 'link-176');">DotGraph</a></tt><tt class="py-op">.</tt><tt id="link-186" class="py-name"><a title="epydoc.docwriter.dotgraph.DotGraph.DEFAULT_NODE_DEFAULTS" class="py-nam [...]
+<a name="L734"></a><tt class="py-lineno"> 734</tt>  <tt class="py-line">        <tt id="link-187" class="py-name"><a title="epydoc.docwriter.dotgraph
+epydoc.markup.restructuredtext.dotgraph" class="py-name" href="#" onclick="return doclink('link-187', 'dotgraph', 'link-169');">dotgraph</a></tt><tt class="py-op">.</tt><tt id="link-188" class="py-name"><a title="epydoc.docwriter.dotgraph.DotGraph" class="py-name" href="#" onclick="return doclink('link-188', 'DotGraph', 'link-176');">DotGraph</a></tt><tt class="py-op">.</tt><tt id="link-189" class="py-name"><a title="epydoc.docwriter.dotgraph.DotGraph.DEFAULT_EDGE_DEFAULTS" class="py-nam [...]
+<a name="L735"></a><tt class="py-lineno"> 735</tt>  <tt class="py-line"> </tt>
+<a name="L736"></a><tt class="py-lineno"> 736</tt>  <tt class="py-line">    <tt class="py-comment"># If the input name is a pickle file, then read the docindex that</tt> </tt>
+<a name="L737"></a><tt class="py-lineno"> 737</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># it contains.  Otherwise, build the docs for the input names.</tt> </tt>
+<a name="L738"></a><tt class="py-lineno"> 738</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">load_pickle</tt><tt class="py-op">:</tt> </tt>
+<a name="L739"></a><tt class="py-lineno"> 739</tt>  <tt class="py-line">        <tt class="py-keyword">assert</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">names</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt> </tt>
+<a name="L740"></a><tt class="py-lineno"> 740</tt>  <tt class="py-line">        <tt id="link-190" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-190', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-191" class="py-name" targets="Method epydoc.cli.ConsoleLogger.start_progress()=epydoc.cli.ConsoleLogger-class.html#start_progress,Method epydoc.cli.UnifiedProgressConsoleLogger.start_progress()=epydoc.cli.UnifiedProgressConsoleLogger-class.html#start_progress,Method epydoc.gui.GUILogger.start_progress()=epydoc.gui.GUILogger-class.ht [...]
+epydoc.cli.UnifiedProgressConsoleLogger.start_progress
+epydoc.gui.GUILogger.start_progress
+epydoc.log.Logger.start_progress
+epydoc.log.start_progress" class="py-name" href="#" onclick="return doclink('link-191', 'start_progress', 'link-191');">start_progress</a></tt><tt class="py-op">(</tt><tt class="py-string">'Deserializing'</tt><tt class="py-op">)</tt> </tt>
+<a name="L741"></a><tt class="py-lineno"> 741</tt>  <tt class="py-line">        <tt id="link-192" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-192', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-193" class="py-name" targets="Method epydoc.cli.ConsoleLogger.progress()=epydoc.cli.ConsoleLogger-class.html#progress,Method epydoc.cli.UnifiedProgressConsoleLogger.progress()=epydoc.cli.UnifiedProgressConsoleLogger-class.html#progress,Method epydoc.docbuilder._ProgressEstimator.progress()=epydoc.docbuilder._ProgressEstimator-class. [...]
+epydoc.cli.UnifiedProgressConsoleLogger.progress
+epydoc.docbuilder._ProgressEstimator.progress
+epydoc.gui.GUILogger.progress
+epydoc.log.Logger.progress
+epydoc.log.progress" class="py-name" href="#" onclick="return doclink('link-193', 'progress', 'link-193');">progress</a></tt><tt class="py-op">(</tt><tt class="py-number">0.1</tt><tt class="py-op">,</tt> <tt class="py-string">'Loading %r'</tt> <tt class="py-op">%</tt> <tt class="py-name">names</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L742"></a><tt class="py-lineno"> 742</tt>  <tt class="py-line">        <tt class="py-name">t0</tt> <tt class="py-op">=</tt> <tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py-name">time</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L743"></a><tt class="py-lineno"> 743</tt>  <tt class="py-line">        <tt class="py-name">unpickler</tt> <tt class="py-op">=</tt> <tt class="py-name">pickle</tt><tt class="py-op">.</tt><tt class="py-name">Unpickler</tt><tt class="py-op">(</tt><tt id="link-194" class="py-name"><a title="epydoc.gui.EpydocGUI.open" class="py-name" href="#" onclick="return doclink('link-194', 'open', 'link-93');">open</a></tt><tt class="py-op">(</tt><tt class="py-name">names</tt><tt class="py-op">[ [...]
+<a name="L744"></a><tt class="py-lineno"> 744</tt>  <tt class="py-line">        <tt class="py-name">unpickler</tt><tt class="py-op">.</tt><tt class="py-name">persistent_load</tt> <tt class="py-op">=</tt> <tt id="link-195" class="py-name" targets="Function epydoc.cli.pickle_persistent_load()=epydoc.cli-module.html#pickle_persistent_load"><a title="epydoc.cli.pickle_persistent_load" class="py-name" href="#" onclick="return doclink('link-195', 'pickle_persistent_load', 'link-195');">pickle_ [...]
+<a name="L745"></a><tt class="py-lineno"> 745</tt>  <tt class="py-line">        <tt class="py-name">docindex</tt> <tt class="py-op">=</tt> <tt class="py-name">unpickler</tt><tt class="py-op">.</tt><tt class="py-name">load</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L746"></a><tt class="py-lineno"> 746</tt>  <tt class="py-line">        <tt id="link-196" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-196', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-197" class="py-name"><a title="epydoc.log.debug
+epydoc.markup.restructuredtext.OptimizedReporter.debug" class="py-name" href="#" onclick="return doclink('link-197', 'debug', 'link-46');">debug</a></tt><tt class="py-op">(</tt><tt class="py-string">'deserialization time: %.1f sec'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py-name">time</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">-</tt><tt class="py-name">t0</tt><tt class="py-op">)</tt>< [...]
+<a name="L747"></a><tt class="py-lineno"> 747</tt>  <tt class="py-line">        <tt id="link-198" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-198', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-199" class="py-name" targets="Method epydoc.cli.ConsoleLogger.end_progress()=epydoc.cli.ConsoleLogger-class.html#end_progress,Method epydoc.cli.UnifiedProgressConsoleLogger.end_progress()=epydoc.cli.UnifiedProgressConsoleLogger-class.html#end_progress,Method epydoc.gui.GUILogger.end_progress()=epydoc.gui.GUILogger-class.html#end_pro [...]
+epydoc.cli.UnifiedProgressConsoleLogger.end_progress
+epydoc.gui.GUILogger.end_progress
+epydoc.log.Logger.end_progress
+epydoc.log.end_progress" class="py-name" href="#" onclick="return doclink('link-199', 'end_progress', 'link-199');">end_progress</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L748"></a><tt class="py-lineno"> 748</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L749"></a><tt class="py-lineno"> 749</tt>  <tt class="py-line">        <tt class="py-comment"># Build docs for the named values.</tt> </tt>
+<a name="L750"></a><tt class="py-lineno"> 750</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">from</tt> <tt id="link-200" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-200', 'epydoc', 'link-0');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-201" class="py-name" targets="Module epydoc.docbuilder=epydoc.docbuilder-module.html"><a title="epydoc.docbuilder" class="py-name" href="#" onclick="return doclink( [...]
+<a name="L751"></a><tt class="py-lineno"> 751</tt>  <tt class="py-line">        <tt class="py-name">exclude_parse</tt> <tt class="py-op">=</tt> <tt class="py-string">'|'</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">exclude_parse</tt><tt class="py-op">+</tt><tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">exclude</tt><tt class="py-op">)</tt> </tt>
+<a name="L752"></a><tt class="py-lineno"> 752</tt>  <tt class="py-line">        <tt class="py-name">exclude_introspect</tt> <tt class="py-op">=</tt> <tt class="py-string">'|'</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">exclude_introspect</tt><tt class="py-op">+</tt> </tt>
+<a name="L753"></a><tt class="py-lineno"> 753</tt>  <tt class="py-line">                                      <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">exclude</tt><tt class="py-op">)</tt> </tt>
+<a name="L754"></a><tt class="py-lineno"> 754</tt>  <tt class="py-line">        <tt class="py-name">docindex</tt> <tt class="py-op">=</tt> <tt id="link-203" class="py-name"><a title="epydoc.docbuilder.build_doc_index" class="py-name" href="#" onclick="return doclink('link-203', 'build_doc_index', 'link-202');">build_doc_index</a></tt><tt class="py-op">(</tt><tt class="py-name">names</tt><tt class="py-op">,</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">i [...]
+epydoc.markup.parse" class="py-name" href="#" onclick="return doclink('link-204', 'parse', 'link-45');">parse</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L755"></a><tt class="py-lineno"> 755</tt>  <tt class="py-line">                                   <tt class="py-name">add_submodules</tt><tt class="py-op">=</tt><tt class="py-op">(</tt><tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">action</tt><tt class="py-op">!=</tt><tt class="py-string">'text'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L756"></a><tt class="py-lineno"> 756</tt>  <tt class="py-line">                                   <tt class="py-name">exclude_introspect</tt><tt class="py-op">=</tt><tt class="py-name">exclude_introspect</tt><tt class="py-op">,</tt> </tt>
+<a name="L757"></a><tt class="py-lineno"> 757</tt>  <tt class="py-line">                                   <tt class="py-name">exclude_parse</tt><tt class="py-op">=</tt><tt class="py-name">exclude_parse</tt><tt class="py-op">)</tt> </tt>
+<a name="L758"></a><tt class="py-lineno"> 758</tt>  <tt class="py-line"> </tt>
+<a name="L759"></a><tt class="py-lineno"> 759</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">docindex</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L760"></a><tt class="py-lineno"> 760</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-205" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-205', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-206" class="py-name"><a title="epydoc.log.ERROR" class="py-name" href="#" onclick="return doclink('link-206', 'ERROR', 'link-62');">ERROR</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">logger</tt><tt class="py-op">.</tt><tt class="py-name">reported_message_levels</tt><tt class="py-op">:</tt> </tt>
+<a name="L761"></a><tt class="py-lineno"> 761</tt>  <tt class="py-line">            <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">exit</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L762"></a><tt class="py-lineno"> 762</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L763"></a><tt class="py-lineno"> 763</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-comment"># docbuilder already logged an error.</tt> </tt>
+<a name="L764"></a><tt class="py-lineno"> 764</tt>  <tt class="py-line"> </tt>
+<a name="L765"></a><tt class="py-lineno"> 765</tt>  <tt class="py-line">    <tt class="py-comment"># Load profile information, if it was given.</tt> </tt>
+<a name="L766"></a><tt class="py-lineno"> 766</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">pstat_files</tt><tt class="py-op">:</tt> </tt>
+<a name="L767"></a><tt class="py-lineno"> 767</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> <tt class="py-keyword">import</tt> <tt class="py-name">pstats</tt> </tt>
+<a name="L768"></a><tt class="py-lineno"> 768</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">ImportError</tt><tt class="py-op">:</tt> </tt>
+<a name="L769"></a><tt class="py-lineno"> 769</tt>  <tt class="py-line">            <tt id="link-207" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-207', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-208" class="py-name"><a title="epydoc.log.error" class="py-name" href="#" onclick="return doclink('link-208', 'error', 'link-72');">error</a></tt><tt class="py-op">(</tt><tt class="py-string">"Could not import pstats -- ignoring pstat files."</tt><tt class="py-op">)</tt> </tt>
+<a name="L770"></a><tt class="py-lineno"> 770</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L771"></a><tt class="py-lineno"> 771</tt>  <tt class="py-line">            <tt class="py-name">profile_stats</tt> <tt class="py-op">=</tt> <tt class="py-name">pstats</tt><tt class="py-op">.</tt><tt class="py-name">Stats</tt><tt class="py-op">(</tt><tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">pstat_files</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L772"></a><tt class="py-lineno"> 772</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt id="link-209" class="py-name" targets="Variable epydoc.apidoc.ModuleDoc.filename=epydoc.apidoc.ModuleDoc-class.html#filename"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-209', 'filename', 'link-209');">filename</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class= [...]
+<a name="L773"></a><tt class="py-lineno"> 773</tt>  <tt class="py-line">                <tt class="py-name">profile_stats</tt><tt class="py-op">.</tt><tt class="py-name">add</tt><tt class="py-op">(</tt><tt id="link-210" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-210', 'filename', 'link-209');">filename</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L774"></a><tt class="py-lineno"> 774</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">KeyboardInterrupt</tt><tt class="py-op">:</tt> <tt class="py-keyword">raise</tt> </tt>
+<a name="L775"></a><tt class="py-lineno"> 775</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
+<a name="L776"></a><tt class="py-lineno"> 776</tt>  <tt class="py-line">            <tt id="link-211" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-211', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-212" class="py-name"><a title="epydoc.log.error" class="py-name" href="#" onclick="return doclink('link-212', 'error', 'link-72');">error</a></tt><tt class="py-op">(</tt><tt class="py-string">"Error reading pstat file: %s"</tt> <tt class="py-op">%</tt> <tt class="py-name">e</tt><tt class="py-op">)</tt> </tt>
+<a name="L777"></a><tt class="py-lineno"> 777</tt>  <tt class="py-line">            <tt class="py-name">profile_stats</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L778"></a><tt class="py-lineno"> 778</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">profile_stats</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L779"></a><tt class="py-lineno"> 779</tt>  <tt class="py-line">            <tt class="py-name">docindex</tt><tt class="py-op">.</tt><tt id="link-213" class="py-name" targets="Method epydoc.apidoc.DocIndex.read_profiling_info()=epydoc.apidoc.DocIndex-class.html#read_profiling_info"><a title="epydoc.apidoc.DocIndex.read_profiling_info" class="py-name" href="#" onclick="return doclink('link-213', 'read_profiling_info', 'link-213');">read_profiling_info</a></tt><tt class="py-op">(</ [...]
+<a name="L780"></a><tt class="py-lineno"> 780</tt>  <tt class="py-line"> </tt>
+<a name="L781"></a><tt class="py-lineno"> 781</tt>  <tt class="py-line">    <tt class="py-comment"># Perform the specified action.</tt> </tt>
+<a name="L782"></a><tt class="py-lineno"> 782</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">action</tt> <tt class="py-op">==</tt> <tt class="py-string">'html'</tt><tt class="py-op">:</tt> </tt>
+<a name="L783"></a><tt class="py-lineno"> 783</tt>  <tt class="py-line">        <tt id="link-214" class="py-name" targets="Function epydoc.cli.write_html()=epydoc.cli-module.html#write_html"><a title="epydoc.cli.write_html" class="py-name" href="#" onclick="return doclink('link-214', 'write_html', 'link-214');">write_html</a></tt><tt class="py-op">(</tt><tt class="py-name">docindex</tt><tt class="py-op">,</tt> <tt class="py-name">options</tt><tt class="py-op">)</tt> </tt>
+<a name="L784"></a><tt class="py-lineno"> 784</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">action</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-string">'latex'</tt><tt class="py-op">,</tt> <tt class="py-string">'dvi'</tt><tt class="py-op">,</tt> <tt class="py-string">'ps'</tt><tt class="py-op">,</tt> <tt class="py-string">'pdf'</tt><tt class="py-op">)</tt><tt class="p [...]
+<a name="L785"></a><tt class="py-lineno"> 785</tt>  <tt class="py-line">        <tt id="link-215" class="py-name" targets="Function epydoc.cli.write_latex()=epydoc.cli-module.html#write_latex"><a title="epydoc.cli.write_latex" class="py-name" href="#" onclick="return doclink('link-215', 'write_latex', 'link-215');">write_latex</a></tt><tt class="py-op">(</tt><tt class="py-name">docindex</tt><tt class="py-op">,</tt> <tt class="py-name">options</tt><tt class="py-op">,</tt> <tt class="py-na [...]
+<a name="L786"></a><tt class="py-lineno"> 786</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">action</tt> <tt class="py-op">==</tt> <tt class="py-string">'text'</tt><tt class="py-op">:</tt> </tt>
+<a name="L787"></a><tt class="py-lineno"> 787</tt>  <tt class="py-line">        <tt id="link-216" class="py-name" targets="Function epydoc.cli.write_text()=epydoc.cli-module.html#write_text"><a title="epydoc.cli.write_text" class="py-name" href="#" onclick="return doclink('link-216', 'write_text', 'link-216');">write_text</a></tt><tt class="py-op">(</tt><tt class="py-name">docindex</tt><tt class="py-op">,</tt> <tt class="py-name">options</tt><tt class="py-op">)</tt> </tt>
+<a name="L788"></a><tt class="py-lineno"> 788</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">action</tt> <tt class="py-op">==</tt> <tt class="py-string">'check'</tt><tt class="py-op">:</tt> </tt>
+<a name="L789"></a><tt class="py-lineno"> 789</tt>  <tt class="py-line">        <tt id="link-217" class="py-name" targets="Function epydoc.cli.check_docs()=epydoc.cli-module.html#check_docs"><a title="epydoc.cli.check_docs" class="py-name" href="#" onclick="return doclink('link-217', 'check_docs', 'link-217');">check_docs</a></tt><tt class="py-op">(</tt><tt class="py-name">docindex</tt><tt class="py-op">,</tt> <tt class="py-name">options</tt><tt class="py-op">)</tt> </tt>
+<a name="L790"></a><tt class="py-lineno"> 790</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">action</tt> <tt class="py-op">==</tt> <tt class="py-string">'pickle'</tt><tt class="py-op">:</tt> </tt>
+<a name="L791"></a><tt class="py-lineno"> 791</tt>  <tt class="py-line">        <tt id="link-218" class="py-name" targets="Function epydoc.cli.write_pickle()=epydoc.cli-module.html#write_pickle"><a title="epydoc.cli.write_pickle" class="py-name" href="#" onclick="return doclink('link-218', 'write_pickle', 'link-218');">write_pickle</a></tt><tt class="py-op">(</tt><tt class="py-name">docindex</tt><tt class="py-op">,</tt> <tt class="py-name">options</tt><tt class="py-op">)</tt> </tt>
+<a name="L792"></a><tt class="py-lineno"> 792</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L793"></a><tt class="py-lineno"> 793</tt>  <tt class="py-line">        <tt class="py-keyword">print</tt> <tt class="py-op">>></tt><tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">stderr</tt><tt class="py-op">,</tt> <tt class="py-string">'\nUnsupported action %s!'</tt> <tt class="py-op">%</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">action</tt> </tt>
+<a name="L794"></a><tt class="py-lineno"> 794</tt>  <tt class="py-line"> </tt>
+<a name="L795"></a><tt class="py-lineno"> 795</tt>  <tt class="py-line">    <tt class="py-comment"># If we suppressed docstring warnings, then let the user know.</tt> </tt>
+<a name="L796"></a><tt class="py-lineno"> 796</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">logger</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-name">logger</tt><tt class="py-op">.</tt><tt class="py-name">suppressed_docstring_warning</tt><tt class="py-op">:</tt> </tt>
+<a name="L797"></a><tt class="py-lineno"> 797</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">logger</tt><tt class="py-op">.</tt><tt class="py-name">suppressed_docstring_warning</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L798"></a><tt class="py-lineno"> 798</tt>  <tt class="py-line">            <tt class="py-name">prefix</tt> <tt class="py-op">=</tt> <tt class="py-string">'1 markup error was found'</tt> </tt>
+<a name="L799"></a><tt class="py-lineno"> 799</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L800"></a><tt class="py-lineno"> 800</tt>  <tt class="py-line">            <tt class="py-name">prefix</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">'%d markup errors were found'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L801"></a><tt class="py-lineno"> 801</tt>  <tt class="py-line">                      <tt class="py-name">logger</tt><tt class="py-op">.</tt><tt class="py-name">suppressed_docstring_warning</tt><tt class="py-op">)</tt> </tt>
+<a name="L802"></a><tt class="py-lineno"> 802</tt>  <tt class="py-line">        <tt id="link-219" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-219', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-220" class="py-name"><a title="epydoc.checker.DocChecker.warning
+epydoc.log.warning" class="py-name" href="#" onclick="return doclink('link-220', 'warning', 'link-155');">warning</a></tt><tt class="py-op">(</tt><tt class="py-string">"%s while processing docstrings.  Use the verbose "</tt> </tt>
+<a name="L803"></a><tt class="py-lineno"> 803</tt>  <tt class="py-line">                    <tt class="py-string">"switch (-v) to display markup errors."</tt> <tt class="py-op">%</tt> <tt class="py-name">prefix</tt><tt class="py-op">)</tt> </tt>
+<a name="L804"></a><tt class="py-lineno"> 804</tt>  <tt class="py-line"> </tt>
+<a name="L805"></a><tt class="py-lineno"> 805</tt>  <tt class="py-line">    <tt class="py-comment"># Basic timing breakdown:</tt> </tt>
+<a name="L806"></a><tt class="py-lineno"> 806</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">verbosity</tt> <tt class="py-op">>=</tt> <tt class="py-number">2</tt> <tt class="py-keyword">and</tt> <tt class="py-name">logger</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L807"></a><tt class="py-lineno"> 807</tt>  <tt class="py-line">        <tt class="py-name">logger</tt><tt class="py-op">.</tt><tt id="link-221" class="py-name" targets="Method epydoc.cli.ConsoleLogger.print_times()=epydoc.cli.ConsoleLogger-class.html#print_times,Method epydoc.cli.UnifiedProgressConsoleLogger.print_times()=epydoc.cli.UnifiedProgressConsoleLogger-class.html#print_times"><a title="epydoc.cli.ConsoleLogger.print_times
+epydoc.cli.UnifiedProgressConsoleLogger.print_times" class="py-name" href="#" onclick="return doclink('link-221', 'print_times', 'link-221');">print_times</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L808"></a><tt class="py-lineno"> 808</tt>  <tt class="py-line"> </tt>
+<a name="L809"></a><tt class="py-lineno"> 809</tt>  <tt class="py-line">    <tt class="py-comment"># If we encountered any message types that we were requested to</tt> </tt>
+<a name="L810"></a><tt class="py-lineno"> 810</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># fail on, then exit with status 2.</tt> </tt>
+<a name="L811"></a><tt class="py-lineno"> 811</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">fail_on</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L812"></a><tt class="py-lineno"> 812</tt>  <tt class="py-line">        <tt class="py-name">max_reported_message_level</tt> <tt class="py-op">=</tt> <tt class="py-name">max</tt><tt class="py-op">(</tt><tt class="py-name">logger</tt><tt class="py-op">.</tt><tt class="py-name">reported_message_levels</tt><tt class="py-op">)</tt> </tt>
+<a name="L813"></a><tt class="py-lineno"> 813</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">max_reported_message_level</tt> <tt class="py-op">>=</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">fail_on</tt><tt class="py-op">:</tt> </tt>
+<a name="L814"></a><tt class="py-lineno"> 814</tt>  <tt class="py-line">            <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">exit</tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L815"></a><tt class="py-lineno"> 815</tt>  <tt class="py-line"> </tt>
+<a name="write_html"></a><div id="write_html-def"><a name="L816"></a><tt class="py-lineno"> 816</tt> <a class="py-toggle" href="#" id="write_html-toggle" onclick="return toggle('write_html');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.cli-module.html#write_html">write_html</a><tt class="py-op">(</tt><tt class="py-param">docindex</tt><tt class="py-op">,</tt> <tt class="py-param">options</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="write_html-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="write_html-expanded"><a name="L817"></a><tt class="py-lineno"> 817</tt>  <tt class="py-line">    <tt class="py-keyword">from</tt> <tt id="link-222" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-222', 'epydoc', 'link-0');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-223" class="py-name"><a title="epydoc.docwriter" class="py-name" href="#" on [...]
+<a name="L818"></a><tt class="py-lineno"> 818</tt>  <tt class="py-line">    <tt class="py-name">html_writer</tt> <tt class="py-op">=</tt> <tt id="link-226" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter" class="py-name" href="#" onclick="return doclink('link-226', 'HTMLWriter', 'link-225');">HTMLWriter</a></tt><tt class="py-op">(</tt><tt class="py-name">docindex</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-name">options</tt><tt class="py-op">.</tt><tt c [...]
+<a name="L819"></a><tt class="py-lineno"> 819</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">verbose</tt> <tt class="py-op">></tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L820"></a><tt class="py-lineno"> 820</tt>  <tt class="py-line">        <tt id="link-227" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-227', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-228" class="py-name"><a title="epydoc.cli.ConsoleLogger.start_progress
+epydoc.cli.UnifiedProgressConsoleLogger.start_progress
+epydoc.gui.GUILogger.start_progress
+epydoc.log.Logger.start_progress
+epydoc.log.start_progress" class="py-name" href="#" onclick="return doclink('link-228', 'start_progress', 'link-191');">start_progress</a></tt><tt class="py-op">(</tt><tt class="py-string">'Writing HTML docs to %r'</tt> <tt class="py-op">%</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">target</tt><tt class="py-op">)</tt> </tt>
+<a name="L821"></a><tt class="py-lineno"> 821</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L822"></a><tt class="py-lineno"> 822</tt>  <tt class="py-line">        <tt id="link-229" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-229', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-230" class="py-name"><a title="epydoc.cli.ConsoleLogger.start_progress
+epydoc.cli.UnifiedProgressConsoleLogger.start_progress
+epydoc.gui.GUILogger.start_progress
+epydoc.log.Logger.start_progress
+epydoc.log.start_progress" class="py-name" href="#" onclick="return doclink('link-230', 'start_progress', 'link-191');">start_progress</a></tt><tt class="py-op">(</tt><tt class="py-string">'Writing HTML docs'</tt><tt class="py-op">)</tt> </tt>
+<a name="L823"></a><tt class="py-lineno"> 823</tt>  <tt class="py-line">    <tt class="py-name">html_writer</tt><tt class="py-op">.</tt><tt id="link-231" class="py-name" targets="Method epydoc.docintrospecter._DevNull.write()=epydoc.docintrospecter._DevNull-class.html#write,Method epydoc.docwriter.dotgraph.DotGraph.write()=epydoc.docwriter.dotgraph.DotGraph-class.html#write,Method epydoc.docwriter.html.HTMLWriter.write()=epydoc.docwriter.html.HTMLWriter-class.html#write,Method epydoc.doc [...]
+epydoc.docwriter.dotgraph.DotGraph.write
+epydoc.docwriter.html.HTMLWriter.write
+epydoc.docwriter.latex.LatexWriter.write
+epydoc.docwriter.plaintext.PlaintextWriter.write" class="py-name" href="#" onclick="return doclink('link-231', 'write', 'link-231');">write</a></tt><tt class="py-op">(</tt><tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">target</tt><tt class="py-op">)</tt> </tt>
+<a name="L824"></a><tt class="py-lineno"> 824</tt>  <tt class="py-line">    <tt id="link-232" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-232', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-233" class="py-name"><a title="epydoc.cli.ConsoleLogger.end_progress
+epydoc.cli.UnifiedProgressConsoleLogger.end_progress
+epydoc.gui.GUILogger.end_progress
+epydoc.log.Logger.end_progress
+epydoc.log.end_progress" class="py-name" href="#" onclick="return doclink('link-233', 'end_progress', 'link-199');">end_progress</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L825"></a><tt class="py-lineno"> 825</tt>  <tt class="py-line"> </tt>
+<a name="write_pickle"></a><div id="write_pickle-def"><a name="L826"></a><tt class="py-lineno"> 826</tt> <a class="py-toggle" href="#" id="write_pickle-toggle" onclick="return toggle('write_pickle');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.cli-module.html#write_pickle">write_pickle</a><tt class="py-op">(</tt><tt class="py-param">docindex</tt><tt class="py-op">,</tt> <tt class="py-param">options</tt><tt class="py-op">)</tt><tt class="p [...]
+</div><div id="write_pickle-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="write_pickle-expanded"><a name="L827"></a><tt class="py-lineno"> 827</tt>  <tt class="py-line">    <tt class="py-docstring">"""Helper for writing output to a pickle file, which can then be</tt> </tt>
+<a name="L828"></a><tt class="py-lineno"> 828</tt>  <tt class="py-line"><tt class="py-docstring">    read in at a later time.  But loading the pickle is only marginally</tt> </tt>
+<a name="L829"></a><tt class="py-lineno"> 829</tt>  <tt class="py-line"><tt class="py-docstring">    faster than building the docs from scratch, so this has pretty</tt> </tt>
+<a name="L830"></a><tt class="py-lineno"> 830</tt>  <tt class="py-line"><tt class="py-docstring">    limited application."""</tt> </tt>
+<a name="L831"></a><tt class="py-lineno"> 831</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">target</tt> <tt class="py-op">==</tt> <tt class="py-string">'pickle'</tt><tt class="py-op">:</tt> </tt>
+<a name="L832"></a><tt class="py-lineno"> 832</tt>  <tt class="py-line">        <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">target</tt> <tt class="py-op">=</tt> <tt class="py-string">'api.pickle'</tt> </tt>
+<a name="L833"></a><tt class="py-lineno"> 833</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-keyword">not</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">target</tt><tt class="py-op">.</tt><tt class="py-name">endswith</tt><tt class="py-op">(</tt><tt class="py-string">'.pickle'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L834"></a><tt class="py-lineno"> 834</tt>  <tt class="py-line">        <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">target</tt> <tt class="py-op">+=</tt> <tt class="py-string">'.pickle'</tt> </tt>
+<a name="L835"></a><tt class="py-lineno"> 835</tt>  <tt class="py-line"> </tt>
+<a name="L836"></a><tt class="py-lineno"> 836</tt>  <tt class="py-line">    <tt id="link-234" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-234', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-235" class="py-name"><a title="epydoc.cli.ConsoleLogger.start_progress
+epydoc.cli.UnifiedProgressConsoleLogger.start_progress
+epydoc.gui.GUILogger.start_progress
+epydoc.log.Logger.start_progress
+epydoc.log.start_progress" class="py-name" href="#" onclick="return doclink('link-235', 'start_progress', 'link-191');">start_progress</a></tt><tt class="py-op">(</tt><tt class="py-string">'Serializing output'</tt><tt class="py-op">)</tt> </tt>
+<a name="L837"></a><tt class="py-lineno"> 837</tt>  <tt class="py-line">    <tt id="link-236" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-236', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-237" class="py-name"><a title="epydoc.cli.ConsoleLogger.progress
+epydoc.cli.UnifiedProgressConsoleLogger.progress
+epydoc.docbuilder._ProgressEstimator.progress
+epydoc.gui.GUILogger.progress
+epydoc.log.Logger.progress
+epydoc.log.progress" class="py-name" href="#" onclick="return doclink('link-237', 'progress', 'link-193');">progress</a></tt><tt class="py-op">(</tt><tt class="py-number">0.2</tt><tt class="py-op">,</tt> <tt class="py-string">'Writing %r'</tt> <tt class="py-op">%</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">target</tt><tt class="py-op">)</tt> </tt>
+<a name="L838"></a><tt class="py-lineno"> 838</tt>  <tt class="py-line">    <tt class="py-name">outfile</tt> <tt class="py-op">=</tt> <tt id="link-238" class="py-name"><a title="epydoc.gui.EpydocGUI.open" class="py-name" href="#" onclick="return doclink('link-238', 'open', 'link-93');">open</a></tt><tt class="py-op">(</tt><tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">target</tt><tt class="py-op">,</tt> <tt class="py-string">'wb'</tt><tt class="py-op">)</tt> </tt>
+<a name="L839"></a><tt class="py-lineno"> 839</tt>  <tt class="py-line">    <tt class="py-name">pickler</tt> <tt class="py-op">=</tt> <tt class="py-name">pickle</tt><tt class="py-op">.</tt><tt class="py-name">Pickler</tt><tt class="py-op">(</tt><tt class="py-name">outfile</tt><tt class="py-op">,</tt> <tt class="py-name">protocol</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+<a name="L840"></a><tt class="py-lineno"> 840</tt>  <tt class="py-line">    <tt class="py-name">pickler</tt><tt class="py-op">.</tt><tt class="py-name">persistent_id</tt> <tt class="py-op">=</tt> <tt id="link-239" class="py-name" targets="Function epydoc.cli.pickle_persistent_id()=epydoc.cli-module.html#pickle_persistent_id"><a title="epydoc.cli.pickle_persistent_id" class="py-name" href="#" onclick="return doclink('link-239', 'pickle_persistent_id', 'link-239');">pickle_persistent_id</a [...]
+<a name="L841"></a><tt class="py-lineno"> 841</tt>  <tt class="py-line">    <tt class="py-name">pickler</tt><tt class="py-op">.</tt><tt class="py-name">dump</tt><tt class="py-op">(</tt><tt class="py-name">docindex</tt><tt class="py-op">)</tt> </tt>
+<a name="L842"></a><tt class="py-lineno"> 842</tt>  <tt class="py-line">    <tt class="py-name">outfile</tt><tt class="py-op">.</tt><tt id="link-240" class="py-name"><a title="epydoc.cli.HTMLLogger.close
+epydoc.docintrospecter._DevNull.close
+epydoc.log.Logger.close
+epydoc.log.close" class="py-name" href="#" onclick="return doclink('link-240', 'close', 'link-94');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L843"></a><tt class="py-lineno"> 843</tt>  <tt class="py-line">    <tt id="link-241" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-241', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-242" class="py-name"><a title="epydoc.cli.ConsoleLogger.end_progress
+epydoc.cli.UnifiedProgressConsoleLogger.end_progress
+epydoc.gui.GUILogger.end_progress
+epydoc.log.Logger.end_progress
+epydoc.log.end_progress" class="py-name" href="#" onclick="return doclink('link-242', 'end_progress', 'link-199');">end_progress</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L844"></a><tt class="py-lineno"> 844</tt>  <tt class="py-line"> </tt>
+<a name="pickle_persistent_id"></a><div id="pickle_persistent_id-def"><a name="L845"></a><tt class="py-lineno"> 845</tt> <a class="py-toggle" href="#" id="pickle_persistent_id-toggle" onclick="return toggle('pickle_persistent_id');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.cli-module.html#pickle_persistent_id">pickle_persistent_id</a><tt class="py-op">(</tt><tt class="py-param">obj</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="pickle_persistent_id-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="pickle_persistent_id-expanded"><a name="L846"></a><tt class="py-lineno"> 846</tt>  <tt class="py-line">    <tt class="py-docstring">"""Helper for pickling, which allows us to save and restore UNKNOWN,</tt> </tt>
+<a name="L847"></a><tt class="py-lineno"> 847</tt>  <tt class="py-line"><tt class="py-docstring">    which is required to be identical to apidoc.UNKNOWN."""</tt> </tt>
+<a name="L848"></a><tt class="py-lineno"> 848</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">obj</tt> <tt class="py-keyword">is</tt> <tt id="link-243" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-243', 'UNKNOWN', 'link-13');">UNKNOWN</a></tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-string">'UNKNOWN'</tt> </tt>
+<a name="L849"></a><tt class="py-lineno"> 849</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
+</div><a name="L850"></a><tt class="py-lineno"> 850</tt>  <tt class="py-line"> </tt>
+<a name="pickle_persistent_load"></a><div id="pickle_persistent_load-def"><a name="L851"></a><tt class="py-lineno"> 851</tt> <a class="py-toggle" href="#" id="pickle_persistent_load-toggle" onclick="return toggle('pickle_persistent_load');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.cli-module.html#pickle_persistent_load">pickle_persistent_load</a><tt class="py-op">(</tt><tt class="py-param">identifier</tt><tt class="py-op">)</tt><tt clas [...]
+</div><div id="pickle_persistent_load-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="pickle_persistent_load-expanded"><a name="L852"></a><tt class="py-lineno"> 852</tt>  <tt class="py-line">    <tt class="py-docstring">"""Helper for pickling, which allows us to save and restore UNKNOWN,</tt> </tt>
+<a name="L853"></a><tt class="py-lineno"> 853</tt>  <tt class="py-line"><tt class="py-docstring">    which is required to be identical to apidoc.UNKNOWN."""</tt> </tt>
+<a name="L854"></a><tt class="py-lineno"> 854</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">identifier</tt> <tt class="py-op">==</tt> <tt class="py-string">'UNKNOWN'</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt id="link-244" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-244', 'UNKNOWN', 'link-13');">UNKNOWN</a></tt> </tt>
+<a name="L855"></a><tt class="py-lineno"> 855</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> <tt class="py-keyword">raise</tt> <tt class="py-name">pickle</tt><tt class="py-op">.</tt><tt class="py-name">UnpicklingError</tt><tt class="py-op">,</tt> <tt class="py-string">'Invalid persistent id'</tt> </tt>
+</div><a name="L856"></a><tt class="py-lineno"> 856</tt>  <tt class="py-line"> </tt>
+<a name="L857"></a><tt class="py-lineno"> 857</tt>  <tt class="py-line"><tt id="link-245" class="py-name" targets="Variable epydoc.cli._RERUN_LATEX_RE=epydoc.cli-module.html#_RERUN_LATEX_RE"><a title="epydoc.cli._RERUN_LATEX_RE" class="py-name" href="#" onclick="return doclink('link-245', '_RERUN_LATEX_RE', 'link-245');">_RERUN_LATEX_RE</a></tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">compile</tt><tt class="py-op">(</tt><tt class="p [...]
+<a name="L858"></a><tt class="py-lineno"> 858</tt>  <tt class="py-line">                             <tt class="py-string">r'\s+have\s+changed.\s+Rerun'</tt><tt class="py-op">)</tt> </tt>
+<a name="L859"></a><tt class="py-lineno"> 859</tt>  <tt class="py-line"> </tt>
+<a name="write_latex"></a><div id="write_latex-def"><a name="L860"></a><tt class="py-lineno"> 860</tt> <a class="py-toggle" href="#" id="write_latex-toggle" onclick="return toggle('write_latex');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.cli-module.html#write_latex">write_latex</a><tt class="py-op">(</tt><tt class="py-param">docindex</tt><tt class="py-op">,</tt> <tt class="py-param">options</tt><tt class="py-op">,</tt> <tt class="py-par [...]
+</div><div id="write_latex-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="write_latex-expanded"><a name="L861"></a><tt class="py-lineno"> 861</tt>  <tt class="py-line">    <tt class="py-keyword">from</tt> <tt id="link-246" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-246', 'epydoc', 'link-0');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-247" class="py-name"><a title="epydoc.docwriter" class="py-name" href="#"  [...]
+<a name="L862"></a><tt class="py-lineno"> 862</tt>  <tt class="py-line">    <tt class="py-name">latex_writer</tt> <tt class="py-op">=</tt> <tt id="link-250" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter" class="py-name" href="#" onclick="return doclink('link-250', 'LatexWriter', 'link-249');">LatexWriter</a></tt><tt class="py-op">(</tt><tt class="py-name">docindex</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-name">options</tt><tt class="py-op">.</tt> [...]
+<a name="L863"></a><tt class="py-lineno"> 863</tt>  <tt class="py-line">    <tt id="link-251" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-251', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-252" class="py-name"><a title="epydoc.cli.ConsoleLogger.start_progress
+epydoc.cli.UnifiedProgressConsoleLogger.start_progress
+epydoc.gui.GUILogger.start_progress
+epydoc.log.Logger.start_progress
+epydoc.log.start_progress" class="py-name" href="#" onclick="return doclink('link-252', 'start_progress', 'link-191');">start_progress</a></tt><tt class="py-op">(</tt><tt class="py-string">'Writing LaTeX docs'</tt><tt class="py-op">)</tt> </tt>
+<a name="L864"></a><tt class="py-lineno"> 864</tt>  <tt class="py-line">    <tt class="py-name">latex_writer</tt><tt class="py-op">.</tt><tt id="link-253" class="py-name"><a title="epydoc.docintrospecter._DevNull.write
+epydoc.docwriter.dotgraph.DotGraph.write
+epydoc.docwriter.html.HTMLWriter.write
+epydoc.docwriter.latex.LatexWriter.write
+epydoc.docwriter.plaintext.PlaintextWriter.write" class="py-name" href="#" onclick="return doclink('link-253', 'write', 'link-231');">write</a></tt><tt class="py-op">(</tt><tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">target</tt><tt class="py-op">)</tt> </tt>
+<a name="L865"></a><tt class="py-lineno"> 865</tt>  <tt class="py-line">    <tt id="link-254" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-254', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-255" class="py-name"><a title="epydoc.cli.ConsoleLogger.end_progress
+epydoc.cli.UnifiedProgressConsoleLogger.end_progress
+epydoc.gui.GUILogger.end_progress
+epydoc.log.Logger.end_progress
+epydoc.log.end_progress" class="py-name" href="#" onclick="return doclink('link-255', 'end_progress', 'link-199');">end_progress</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L866"></a><tt class="py-lineno"> 866</tt>  <tt class="py-line">    <tt class="py-comment"># If we're just generating the latex, and not any output format,</tt> </tt>
+<a name="L867"></a><tt class="py-lineno"> 867</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># then we're done.</tt> </tt>
+<a name="L868"></a><tt class="py-lineno"> 868</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">format</tt> <tt class="py-op">==</tt> <tt class="py-string">'latex'</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> </tt>
+<a name="L869"></a><tt class="py-lineno"> 869</tt>  <tt class="py-line">     </tt>
+<a name="L870"></a><tt class="py-lineno"> 870</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">format</tt> <tt class="py-op">==</tt> <tt class="py-string">'dvi'</tt><tt class="py-op">:</tt> <tt class="py-name">steps</tt> <tt class="py-op">=</tt> <tt class="py-number">4</tt> </tt>
+<a name="L871"></a><tt class="py-lineno"> 871</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">format</tt> <tt class="py-op">==</tt> <tt class="py-string">'ps'</tt><tt class="py-op">:</tt> <tt class="py-name">steps</tt> <tt class="py-op">=</tt> <tt class="py-number">5</tt> </tt>
+<a name="L872"></a><tt class="py-lineno"> 872</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">format</tt> <tt class="py-op">==</tt> <tt class="py-string">'pdf'</tt><tt class="py-op">:</tt> <tt class="py-name">steps</tt> <tt class="py-op">=</tt> <tt class="py-number">6</tt> </tt>
+<a name="L873"></a><tt class="py-lineno"> 873</tt>  <tt class="py-line">     </tt>
+<a name="L874"></a><tt class="py-lineno"> 874</tt>  <tt class="py-line">    <tt id="link-256" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-256', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-257" class="py-name"><a title="epydoc.cli.ConsoleLogger.start_progress
+epydoc.cli.UnifiedProgressConsoleLogger.start_progress
+epydoc.gui.GUILogger.start_progress
+epydoc.log.Logger.start_progress
+epydoc.log.start_progress" class="py-name" href="#" onclick="return doclink('link-257', 'start_progress', 'link-191');">start_progress</a></tt><tt class="py-op">(</tt><tt class="py-string">'Processing LaTeX docs'</tt><tt class="py-op">)</tt> </tt>
+<a name="L875"></a><tt class="py-lineno"> 875</tt>  <tt class="py-line">    <tt class="py-name">oldpath</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-258" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-258', 'path', 'link-146');">path</a></tt><tt class="py-op">.</tt><tt class="py-name">abspath</tt><tt class="py-op">(</tt><tt class="py-name">os</tt><tt class="py-op">.</tt><tt cl [...]
+<a name="L876"></a><tt class="py-lineno"> 876</tt>  <tt class="py-line">    <tt class="py-name">running</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> <tt class="py-comment"># keep track of what we're doing.</tt> </tt>
+<a name="L877"></a><tt class="py-lineno"> 877</tt>  <tt class="py-line">    <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L878"></a><tt class="py-lineno"> 878</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L879"></a><tt class="py-lineno"> 879</tt>  <tt class="py-line">            <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">chdir</tt><tt class="py-op">(</tt><tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">target</tt><tt class="py-op">)</tt> </tt>
+<a name="L880"></a><tt class="py-lineno"> 880</tt>  <tt class="py-line"> </tt>
+<a name="L881"></a><tt class="py-lineno"> 881</tt>  <tt class="py-line">            <tt class="py-comment"># Clear any old files out of the way.</tt> </tt>
+<a name="L882"></a><tt class="py-lineno"> 882</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">for</tt> <tt class="py-name">ext</tt> <tt class="py-keyword">in</tt> <tt class="py-string">'tex aux log out idx ilg toc ind'</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L883"></a><tt class="py-lineno"> 883</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-259" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-259', 'path', 'link-146');">path</a></tt><tt class="py-op">.</tt><tt class="py-name">exists</tt><tt class="py-op">(</tt><tt class="py-string">'apidoc.%s'</tt> <tt class="py-op">%</tt> <tt class [...]
+<a name="L884"></a><tt class="py-lineno"> 884</tt>  <tt class="py-line">                    <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">remove</tt><tt class="py-op">(</tt><tt class="py-string">'apidoc.%s'</tt> <tt class="py-op">%</tt> <tt class="py-name">ext</tt><tt class="py-op">)</tt> </tt>
+<a name="L885"></a><tt class="py-lineno"> 885</tt>  <tt class="py-line"> </tt>
+<a name="L886"></a><tt class="py-lineno"> 886</tt>  <tt class="py-line">            <tt class="py-comment"># The first pass generates index files.</tt> </tt>
+<a name="L887"></a><tt class="py-lineno"> 887</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">running</tt> <tt class="py-op">=</tt> <tt class="py-string">'latex'</tt> </tt>
+<a name="L888"></a><tt class="py-lineno"> 888</tt>  <tt class="py-line">            <tt id="link-260" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-260', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-261" class="py-name"><a title="epydoc.cli.ConsoleLogger.progress
+epydoc.cli.UnifiedProgressConsoleLogger.progress
+epydoc.docbuilder._ProgressEstimator.progress
+epydoc.gui.GUILogger.progress
+epydoc.log.Logger.progress
+epydoc.log.progress" class="py-name" href="#" onclick="return doclink('link-261', 'progress', 'link-193');">progress</a></tt><tt class="py-op">(</tt><tt class="py-number">0.</tt><tt class="py-op">/</tt><tt class="py-name">steps</tt><tt class="py-op">,</tt> <tt class="py-string">'LaTeX: First pass'</tt><tt class="py-op">)</tt> </tt>
+<a name="L889"></a><tt class="py-lineno"> 889</tt>  <tt class="py-line">            <tt id="link-262" class="py-name"><a title="epydoc.util.run_subprocess" class="py-name" href="#" onclick="return doclink('link-262', 'run_subprocess', 'link-6');">run_subprocess</a></tt><tt class="py-op">(</tt><tt class="py-string">'latex api.tex'</tt><tt class="py-op">)</tt> </tt>
+<a name="L890"></a><tt class="py-lineno"> 890</tt>  <tt class="py-line"> </tt>
+<a name="L891"></a><tt class="py-lineno"> 891</tt>  <tt class="py-line">            <tt class="py-comment"># Build the index.</tt> </tt>
+<a name="L892"></a><tt class="py-lineno"> 892</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">running</tt> <tt class="py-op">=</tt> <tt class="py-string">'makeindex'</tt> </tt>
+<a name="L893"></a><tt class="py-lineno"> 893</tt>  <tt class="py-line">            <tt id="link-263" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-263', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-264" class="py-name"><a title="epydoc.cli.ConsoleLogger.progress
+epydoc.cli.UnifiedProgressConsoleLogger.progress
+epydoc.docbuilder._ProgressEstimator.progress
+epydoc.gui.GUILogger.progress
+epydoc.log.Logger.progress
+epydoc.log.progress" class="py-name" href="#" onclick="return doclink('link-264', 'progress', 'link-193');">progress</a></tt><tt class="py-op">(</tt><tt class="py-number">1.</tt><tt class="py-op">/</tt><tt class="py-name">steps</tt><tt class="py-op">,</tt> <tt class="py-string">'LaTeX: Build index'</tt><tt class="py-op">)</tt> </tt>
+<a name="L894"></a><tt class="py-lineno"> 894</tt>  <tt class="py-line">            <tt id="link-265" class="py-name"><a title="epydoc.util.run_subprocess" class="py-name" href="#" onclick="return doclink('link-265', 'run_subprocess', 'link-6');">run_subprocess</a></tt><tt class="py-op">(</tt><tt class="py-string">'makeindex api.idx'</tt><tt class="py-op">)</tt> </tt>
+<a name="L895"></a><tt class="py-lineno"> 895</tt>  <tt class="py-line"> </tt>
+<a name="L896"></a><tt class="py-lineno"> 896</tt>  <tt class="py-line">            <tt class="py-comment"># The second pass generates our output.</tt> </tt>
+<a name="L897"></a><tt class="py-lineno"> 897</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">running</tt> <tt class="py-op">=</tt> <tt class="py-string">'latex'</tt> </tt>
+<a name="L898"></a><tt class="py-lineno"> 898</tt>  <tt class="py-line">            <tt id="link-266" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-266', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-267" class="py-name"><a title="epydoc.cli.ConsoleLogger.progress
+epydoc.cli.UnifiedProgressConsoleLogger.progress
+epydoc.docbuilder._ProgressEstimator.progress
+epydoc.gui.GUILogger.progress
+epydoc.log.Logger.progress
+epydoc.log.progress" class="py-name" href="#" onclick="return doclink('link-267', 'progress', 'link-193');">progress</a></tt><tt class="py-op">(</tt><tt class="py-number">2.</tt><tt class="py-op">/</tt><tt class="py-name">steps</tt><tt class="py-op">,</tt> <tt class="py-string">'LaTeX: Second pass'</tt><tt class="py-op">)</tt> </tt>
+<a name="L899"></a><tt class="py-lineno"> 899</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-name">err</tt> <tt class="py-op">=</tt> <tt id="link-268" class="py-name"><a title="epydoc.util.run_subprocess" class="py-name" href="#" onclick="return doclink('link-268', 'run_subprocess', 'link-6');">run_subprocess</a></tt><tt class="py-op">(</tt><tt class="py-string">'latex api.tex'</tt><tt class="py-op">)</tt> </tt>
+<a name="L900"></a><tt class="py-lineno"> 900</tt>  <tt class="py-line">             </tt>
+<a name="L901"></a><tt class="py-lineno"> 901</tt>  <tt class="py-line">            <tt class="py-comment"># The third pass is only necessary if the second pass</tt> </tt>
+<a name="L902"></a><tt class="py-lineno"> 902</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># changed what page some things are on.</tt> </tt>
+<a name="L903"></a><tt class="py-lineno"> 903</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">running</tt> <tt class="py-op">=</tt> <tt class="py-string">'latex'</tt> </tt>
+<a name="L904"></a><tt class="py-lineno"> 904</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt id="link-269" class="py-name"><a title="epydoc.cli._RERUN_LATEX_RE" class="py-name" href="#" onclick="return doclink('link-269', '_RERUN_LATEX_RE', 'link-245');">_RERUN_LATEX_RE</a></tt><tt class="py-op">.</tt><tt class="py-name">match</tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L905"></a><tt class="py-lineno"> 905</tt>  <tt class="py-line">                <tt id="link-270" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-270', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-271" class="py-name"><a title="epydoc.cli.ConsoleLogger.progress
+epydoc.cli.UnifiedProgressConsoleLogger.progress
+epydoc.docbuilder._ProgressEstimator.progress
+epydoc.gui.GUILogger.progress
+epydoc.log.Logger.progress
+epydoc.log.progress" class="py-name" href="#" onclick="return doclink('link-271', 'progress', 'link-193');">progress</a></tt><tt class="py-op">(</tt><tt class="py-number">3.</tt><tt class="py-op">/</tt><tt class="py-name">steps</tt><tt class="py-op">,</tt> <tt class="py-string">'LaTeX: Third pass'</tt><tt class="py-op">)</tt> </tt>
+<a name="L906"></a><tt class="py-lineno"> 906</tt>  <tt class="py-line">                <tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-name">err</tt> <tt class="py-op">=</tt> <tt id="link-272" class="py-name"><a title="epydoc.util.run_subprocess" class="py-name" href="#" onclick="return doclink('link-272', 'run_subprocess', 'link-6');">run_subprocess</a></tt><tt class="py-op">(</tt><tt class="py-string">'latex api.tex'</tt><tt class="py-op">)</tt> </tt>
+<a name="L907"></a><tt class="py-lineno"> 907</tt>  <tt class="py-line">  </tt>
+<a name="L908"></a><tt class="py-lineno"> 908</tt>  <tt class="py-line">            <tt class="py-comment"># A fourth path should (almost?) never be necessary.</tt> </tt>
+<a name="L909"></a><tt class="py-lineno"> 909</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">running</tt> <tt class="py-op">=</tt> <tt class="py-string">'latex'</tt> </tt>
+<a name="L910"></a><tt class="py-lineno"> 910</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt id="link-273" class="py-name"><a title="epydoc.cli._RERUN_LATEX_RE" class="py-name" href="#" onclick="return doclink('link-273', '_RERUN_LATEX_RE', 'link-245');">_RERUN_LATEX_RE</a></tt><tt class="py-op">.</tt><tt class="py-name">match</tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L911"></a><tt class="py-lineno"> 911</tt>  <tt class="py-line">                <tt id="link-274" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-274', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-275" class="py-name"><a title="epydoc.cli.ConsoleLogger.progress
+epydoc.cli.UnifiedProgressConsoleLogger.progress
+epydoc.docbuilder._ProgressEstimator.progress
+epydoc.gui.GUILogger.progress
+epydoc.log.Logger.progress
+epydoc.log.progress" class="py-name" href="#" onclick="return doclink('link-275', 'progress', 'link-193');">progress</a></tt><tt class="py-op">(</tt><tt class="py-number">3.</tt><tt class="py-op">/</tt><tt class="py-name">steps</tt><tt class="py-op">,</tt> <tt class="py-string">'LaTeX: Fourth pass'</tt><tt class="py-op">)</tt> </tt>
+<a name="L912"></a><tt class="py-lineno"> 912</tt>  <tt class="py-line">                <tt id="link-276" class="py-name"><a title="epydoc.util.run_subprocess" class="py-name" href="#" onclick="return doclink('link-276', 'run_subprocess', 'link-6');">run_subprocess</a></tt><tt class="py-op">(</tt><tt class="py-string">'latex api.tex'</tt><tt class="py-op">)</tt> </tt>
+<a name="L913"></a><tt class="py-lineno"> 913</tt>  <tt class="py-line"> </tt>
+<a name="L914"></a><tt class="py-lineno"> 914</tt>  <tt class="py-line">            <tt class="py-comment"># If requested, convert to postscript.</tt> </tt>
+<a name="L915"></a><tt class="py-lineno"> 915</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt class="py-name">format</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-string">'ps'</tt><tt class="py-op">,</tt> <tt class="py-string">'pdf'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L916"></a><tt class="py-lineno"> 916</tt>  <tt class="py-line">                <tt class="py-name">running</tt> <tt class="py-op">=</tt> <tt class="py-string">'dvips'</tt> </tt>
+<a name="L917"></a><tt class="py-lineno"> 917</tt>  <tt class="py-line">                <tt id="link-277" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-277', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-278" class="py-name"><a title="epydoc.cli.ConsoleLogger.progress
+epydoc.cli.UnifiedProgressConsoleLogger.progress
+epydoc.docbuilder._ProgressEstimator.progress
+epydoc.gui.GUILogger.progress
+epydoc.log.Logger.progress
+epydoc.log.progress" class="py-name" href="#" onclick="return doclink('link-278', 'progress', 'link-193');">progress</a></tt><tt class="py-op">(</tt><tt class="py-number">4.</tt><tt class="py-op">/</tt><tt class="py-name">steps</tt><tt class="py-op">,</tt> <tt class="py-string">'dvips'</tt><tt class="py-op">)</tt> </tt>
+<a name="L918"></a><tt class="py-lineno"> 918</tt>  <tt class="py-line">                <tt id="link-279" class="py-name"><a title="epydoc.util.run_subprocess" class="py-name" href="#" onclick="return doclink('link-279', 'run_subprocess', 'link-6');">run_subprocess</a></tt><tt class="py-op">(</tt><tt class="py-string">'dvips api.dvi -o api.ps -G0 -Ppdf'</tt><tt class="py-op">)</tt> </tt>
+<a name="L919"></a><tt class="py-lineno"> 919</tt>  <tt class="py-line"> </tt>
+<a name="L920"></a><tt class="py-lineno"> 920</tt>  <tt class="py-line">            <tt class="py-comment"># If requested, convert to pdf.</tt> </tt>
+<a name="L921"></a><tt class="py-lineno"> 921</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt class="py-name">format</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-string">'pdf'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L922"></a><tt class="py-lineno"> 922</tt>  <tt class="py-line">                <tt class="py-name">running</tt> <tt class="py-op">=</tt> <tt class="py-string">'ps2pdf'</tt> </tt>
+<a name="L923"></a><tt class="py-lineno"> 923</tt>  <tt class="py-line">                <tt id="link-280" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-280', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-281" class="py-name"><a title="epydoc.cli.ConsoleLogger.progress
+epydoc.cli.UnifiedProgressConsoleLogger.progress
+epydoc.docbuilder._ProgressEstimator.progress
+epydoc.gui.GUILogger.progress
+epydoc.log.Logger.progress
+epydoc.log.progress" class="py-name" href="#" onclick="return doclink('link-281', 'progress', 'link-193');">progress</a></tt><tt class="py-op">(</tt><tt class="py-number">5.</tt><tt class="py-op">/</tt><tt class="py-name">steps</tt><tt class="py-op">,</tt> <tt class="py-string">'ps2pdf'</tt><tt class="py-op">)</tt> </tt>
+<a name="L924"></a><tt class="py-lineno"> 924</tt>  <tt class="py-line">                <tt id="link-282" class="py-name"><a title="epydoc.util.run_subprocess" class="py-name" href="#" onclick="return doclink('link-282', 'run_subprocess', 'link-6');">run_subprocess</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L925"></a><tt class="py-lineno"> 925</tt>  <tt class="py-line">                    <tt class="py-string">'ps2pdf -sPAPERSIZE#letter -dMaxSubsetPct#100 '</tt> </tt>
+<a name="L926"></a><tt class="py-lineno"> 926</tt>  <tt class="py-line">                    <tt class="py-string">'-dSubsetFonts#true -dCompatibilityLevel#1.2 '</tt> </tt>
+<a name="L927"></a><tt class="py-lineno"> 927</tt>  <tt class="py-line">                    <tt class="py-string">'-dEmbedAllFonts#true api.ps api.pdf'</tt><tt class="py-op">)</tt> </tt>
+<a name="L928"></a><tt class="py-lineno"> 928</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt id="link-283" class="py-name"><a title="epydoc.util.RunSubprocessError" class="py-name" href="#" onclick="return doclink('link-283', 'RunSubprocessError', 'link-7');">RunSubprocessError</a></tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
+<a name="L929"></a><tt class="py-lineno"> 929</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">running</tt> <tt class="py-op">==</tt> <tt class="py-string">'latex'</tt><tt class="py-op">:</tt> </tt>
+<a name="L930"></a><tt class="py-lineno"> 930</tt>  <tt class="py-line">                <tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">out</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt class="py-string">r'(?sm)\A.*?!( LaTeX Error:)?'</tt><tt class="py-op">,</tt> <tt class="py-string">r''</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">.</tt><tt class= [...]
+<a name="L931"></a><tt class="py-lineno"> 931</tt>  <tt class="py-line">                <tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">out</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt class="py-string">r'(?sm)\s*Type X to quit.*'</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py- [...]
+<a name="L932"></a><tt class="py-lineno"> 932</tt>  <tt class="py-line">                <tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">out</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt class="py-string">r'(?sm)^! Emergency stop.*'</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py- [...]
+<a name="L933"></a><tt class="py-lineno"> 933</tt>  <tt class="py-line">            <tt id="link-284" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-284', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-285" class="py-name"><a title="epydoc.log.error" class="py-name" href="#" onclick="return doclink('link-285', 'error', 'link-72');">error</a></tt><tt class="py-op">(</tt><tt class="py-string">"%s failed: %s"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">running</tt><tt class="py-op">,</tt> <tt class="py-o [...]
+<a name="L934"></a><tt class="py-lineno"> 934</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">OSError</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
+<a name="L935"></a><tt class="py-lineno"> 935</tt>  <tt class="py-line">            <tt id="link-286" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-286', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-287" class="py-name"><a title="epydoc.log.error" class="py-name" href="#" onclick="return doclink('link-287', 'error', 'link-72');">error</a></tt><tt class="py-op">(</tt><tt class="py-string">"%s failed: %s"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">running</tt><tt class="py-op">,</tt> <tt class="py-n [...]
+<a name="L936"></a><tt class="py-lineno"> 936</tt>  <tt class="py-line">    <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt>
+<a name="L937"></a><tt class="py-lineno"> 937</tt>  <tt class="py-line">        <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">chdir</tt><tt class="py-op">(</tt><tt class="py-name">oldpath</tt><tt class="py-op">)</tt> </tt>
+<a name="L938"></a><tt class="py-lineno"> 938</tt>  <tt class="py-line">        <tt id="link-288" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-288', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-289" class="py-name"><a title="epydoc.cli.ConsoleLogger.end_progress
+epydoc.cli.UnifiedProgressConsoleLogger.end_progress
+epydoc.gui.GUILogger.end_progress
+epydoc.log.Logger.end_progress
+epydoc.log.end_progress" class="py-name" href="#" onclick="return doclink('link-289', 'end_progress', 'link-199');">end_progress</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L939"></a><tt class="py-lineno"> 939</tt>  <tt class="py-line"> </tt>
+<a name="write_text"></a><div id="write_text-def"><a name="L940"></a><tt class="py-lineno"> 940</tt> <a class="py-toggle" href="#" id="write_text-toggle" onclick="return toggle('write_text');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.cli-module.html#write_text">write_text</a><tt class="py-op">(</tt><tt class="py-param">docindex</tt><tt class="py-op">,</tt> <tt class="py-param">options</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="write_text-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="write_text-expanded"><a name="L941"></a><tt class="py-lineno"> 941</tt>  <tt class="py-line">    <tt id="link-290" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-290', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-291" class="py-name"><a title="epydoc.cli.ConsoleLogger.start_progress
+epydoc.cli.UnifiedProgressConsoleLogger.start_progress
+epydoc.gui.GUILogger.start_progress
+epydoc.log.Logger.start_progress
+epydoc.log.start_progress" class="py-name" href="#" onclick="return doclink('link-291', 'start_progress', 'link-191');">start_progress</a></tt><tt class="py-op">(</tt><tt class="py-string">'Writing output'</tt><tt class="py-op">)</tt> </tt>
+<a name="L942"></a><tt class="py-lineno"> 942</tt>  <tt class="py-line">    <tt class="py-keyword">from</tt> <tt id="link-292" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-292', 'epydoc', 'link-0');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-293" class="py-name"><a title="epydoc.docwriter" class="py-name" href="#" onclick="return doclink('link-293', 'docwriter', 'link-17');">docwriter</a></tt><tt class="py-op">.</tt><tt id="link-294"  [...]
+epydoc.markup.plaintext" class="py-name" href="#" onclick="return doclink('link-294', 'plaintext', 'link-294');">plaintext</a></tt> <tt class="py-keyword">import</tt> <tt id="link-295" class="py-name" targets="Class epydoc.docwriter.plaintext.PlaintextWriter=epydoc.docwriter.plaintext.PlaintextWriter-class.html"><a title="epydoc.docwriter.plaintext.PlaintextWriter" class="py-name" href="#" onclick="return doclink('link-295', 'PlaintextWriter', 'link-295');">PlaintextWriter</a></tt> </tt>
+<a name="L943"></a><tt class="py-lineno"> 943</tt>  <tt class="py-line">    <tt class="py-name">plaintext_writer</tt> <tt class="py-op">=</tt> <tt id="link-296" class="py-name"><a title="epydoc.docwriter.plaintext.PlaintextWriter" class="py-name" href="#" onclick="return doclink('link-296', 'PlaintextWriter', 'link-295');">PlaintextWriter</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L944"></a><tt class="py-lineno"> 944</tt>  <tt class="py-line">    <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
+<a name="L945"></a><tt class="py-lineno"> 945</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt id="link-297" class="py-name"><a title="epydoc.apidoc" class="py-name" href="#" onclick="return doclink('link-297', 'apidoc', 'link-12');">apidoc</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">docindex</tt><tt class="py-op">.</tt><tt class="py-name">root</tt><tt class="py-op">:</tt> </tt>
+<a name="L946"></a><tt class="py-lineno"> 946</tt>  <tt class="py-line">        <tt class="py-name">s</tt> <tt class="py-op">+=</tt> <tt class="py-name">plaintext_writer</tt><tt class="py-op">.</tt><tt id="link-298" class="py-name"><a title="epydoc.docintrospecter._DevNull.write
+epydoc.docwriter.dotgraph.DotGraph.write
+epydoc.docwriter.html.HTMLWriter.write
+epydoc.docwriter.latex.LatexWriter.write
+epydoc.docwriter.plaintext.PlaintextWriter.write" class="py-name" href="#" onclick="return doclink('link-298', 'write', 'link-231');">write</a></tt><tt class="py-op">(</tt><tt id="link-299" class="py-name"><a title="epydoc.apidoc" class="py-name" href="#" onclick="return doclink('link-299', 'apidoc', 'link-12');">apidoc</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L947"></a><tt class="py-lineno"> 947</tt>  <tt class="py-line">    <tt id="link-300" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-300', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-301" class="py-name"><a title="epydoc.cli.ConsoleLogger.end_progress
+epydoc.cli.UnifiedProgressConsoleLogger.end_progress
+epydoc.gui.GUILogger.end_progress
+epydoc.log.Logger.end_progress
+epydoc.log.end_progress" class="py-name" href="#" onclick="return doclink('link-301', 'end_progress', 'link-199');">end_progress</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L948"></a><tt class="py-lineno"> 948</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">,</tt> <tt class="py-name">unicode</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L949"></a><tt class="py-lineno"> 949</tt>  <tt class="py-line">        <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">s</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">'ascii'</tt><tt class="py-op">,</tt> <tt class="py-string">'backslashreplace'</tt><tt class="py-op">)</tt> </tt>
+<a name="L950"></a><tt class="py-lineno"> 950</tt>  <tt class="py-line">    <tt class="py-keyword">print</tt> <tt class="py-name">s</tt> </tt>
+</div><a name="L951"></a><tt class="py-lineno"> 951</tt>  <tt class="py-line"> </tt>
+<a name="check_docs"></a><div id="check_docs-def"><a name="L952"></a><tt class="py-lineno"> 952</tt> <a class="py-toggle" href="#" id="check_docs-toggle" onclick="return toggle('check_docs');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.cli-module.html#check_docs">check_docs</a><tt class="py-op">(</tt><tt class="py-param">docindex</tt><tt class="py-op">,</tt> <tt class="py-param">options</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="check_docs-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="check_docs-expanded"><a name="L953"></a><tt class="py-lineno"> 953</tt>  <tt class="py-line">    <tt class="py-keyword">from</tt> <tt id="link-302" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-302', 'epydoc', 'link-0');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-303" class="py-name" targets="Module epydoc.checker=epydoc.checker-module.ht [...]
+<a name="L954"></a><tt class="py-lineno"> 954</tt>  <tt class="py-line">    <tt id="link-305" class="py-name"><a title="epydoc.checker.DocChecker" class="py-name" href="#" onclick="return doclink('link-305', 'DocChecker', 'link-304');">DocChecker</a></tt><tt class="py-op">(</tt><tt class="py-name">docindex</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-306" class="py-name" targets="Method epydoc.checker.DocChecker.check()=epydoc.checker.DocChecker-class.html#check"><a t [...]
+</div><a name="L955"></a><tt class="py-lineno"> 955</tt>  <tt class="py-line">                 </tt>
+<a name="cli"></a><div id="cli-def"><a name="L956"></a><tt class="py-lineno"> 956</tt> <a class="py-toggle" href="#" id="cli-toggle" onclick="return toggle('cli');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.cli-module.html#cli">cli</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="cli-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="cli-expanded"><a name="L957"></a><tt class="py-lineno"> 957</tt>  <tt class="py-line">    <tt class="py-comment"># Parse command-line arguments.</tt> </tt>
+<a name="L958"></a><tt class="py-lineno"> 958</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">options</tt><tt class="py-op">,</tt> <tt class="py-name">names</tt> <tt class="py-op">=</tt> <tt id="link-307" class="py-name" targets="Function epydoc.cli.parse_arguments()=epydoc.cli-module.html#parse_arguments"><a title="epydoc.cli.parse_arguments" class="py-name" href="#" onclick="return doclink('link-307', 'parse_arguments', 'link-307');">parse_arguments</a></t [...]
+<a name="L959"></a><tt class="py-lineno"> 959</tt>  <tt class="py-line"> </tt>
+<a name="L960"></a><tt class="py-lineno"> 960</tt>  <tt class="py-line">    <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L961"></a><tt class="py-lineno"> 961</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L962"></a><tt class="py-lineno"> 962</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">profile</tt><tt class="py-op">:</tt> </tt>
+<a name="L963"></a><tt class="py-lineno"> 963</tt>  <tt class="py-line">                <tt id="link-308" class="py-name" targets="Function epydoc.cli._profile()=epydoc.cli-module.html#_profile"><a title="epydoc.cli._profile" class="py-name" href="#" onclick="return doclink('link-308', '_profile', 'link-308');">_profile</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L964"></a><tt class="py-lineno"> 964</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L965"></a><tt class="py-lineno"> 965</tt>  <tt class="py-line">                <tt id="link-309" class="py-name" targets="Function epydoc.cli.main()=epydoc.cli-module.html#main,Function epydoc.test.main()=epydoc.test-module.html#main"><a title="epydoc.cli.main
+epydoc.test.main" class="py-name" href="#" onclick="return doclink('link-309', 'main', 'link-309');">main</a></tt><tt class="py-op">(</tt><tt class="py-name">options</tt><tt class="py-op">,</tt> <tt class="py-name">names</tt><tt class="py-op">)</tt> </tt>
+<a name="L966"></a><tt class="py-lineno"> 966</tt>  <tt class="py-line">        <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt>
+<a name="L967"></a><tt class="py-lineno"> 967</tt>  <tt class="py-line">            <tt id="link-310" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-310', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-311" class="py-name"><a title="epydoc.cli.HTMLLogger.close
+epydoc.docintrospecter._DevNull.close
+epydoc.log.Logger.close
+epydoc.log.close" class="py-name" href="#" onclick="return doclink('link-311', 'close', 'link-94');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L968"></a><tt class="py-lineno"> 968</tt>  <tt class="py-line">    <tt class="py-keyword">except</tt> <tt class="py-name">SystemExit</tt><tt class="py-op">:</tt> </tt>
+<a name="L969"></a><tt class="py-lineno"> 969</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> </tt>
+<a name="L970"></a><tt class="py-lineno"> 970</tt>  <tt class="py-line">    <tt class="py-keyword">except</tt> <tt class="py-name">KeyboardInterrupt</tt><tt class="py-op">:</tt> </tt>
+<a name="L971"></a><tt class="py-lineno"> 971</tt>  <tt class="py-line">        <tt class="py-keyword">print</tt> <tt class="py-string">'\n\n'</tt> </tt>
+<a name="L972"></a><tt class="py-lineno"> 972</tt>  <tt class="py-line">        <tt class="py-keyword">print</tt> <tt class="py-op">>></tt><tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">stderr</tt><tt class="py-op">,</tt> <tt class="py-string">'Keyboard interrupt.'</tt> </tt>
+<a name="L973"></a><tt class="py-lineno"> 973</tt>  <tt class="py-line">    <tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt>
+<a name="L974"></a><tt class="py-lineno"> 974</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt id="link-312" class="py-name"><a title="epydoc.log.debug
+epydoc.markup.restructuredtext.OptimizedReporter.debug" class="py-name" href="#" onclick="return doclink('link-312', 'debug', 'link-46');">debug</a></tt><tt class="py-op">:</tt> <tt class="py-keyword">raise</tt> </tt>
+<a name="L975"></a><tt class="py-lineno"> 975</tt>  <tt class="py-line">        <tt class="py-keyword">print</tt> <tt class="py-string">'\n\n'</tt> </tt>
+<a name="L976"></a><tt class="py-lineno"> 976</tt>  <tt class="py-line">        <tt class="py-name">exc_info</tt> <tt class="py-op">=</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">exc_info</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L977"></a><tt class="py-lineno"> 977</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">exc_info</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt class="py-name">exc_info</tt><tt class="py-op">[ [...]
+<a name="L978"></a><tt class="py-lineno"> 978</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt class="py-name">exc_info</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L979"></a><tt class="py-lineno"> 979</tt>  <tt class="py-line">        <tt class="py-keyword">print</tt> <tt class="py-op">>></tt><tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">stderr</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-string">'\nUNEXPECTED ERROR:\n'</tt> </tt>
+<a name="L980"></a><tt class="py-lineno"> 980</tt>  <tt class="py-line">                             <tt class="py-string">'%s\n'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt><tt class="py-op">)</tt><tt class [...]
+<a name="L981"></a><tt class="py-lineno"> 981</tt>  <tt class="py-line">        <tt class="py-keyword">print</tt> <tt class="py-op">>></tt><tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">stderr</tt><tt class="py-op">,</tt> <tt class="py-string">'Use --debug to see trace information.'</tt> </tt>
+<a name="L982"></a><tt class="py-lineno"> 982</tt>  <tt class="py-line">        <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">exit</tt><tt class="py-op">(</tt><tt class="py-number">3</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L983"></a><tt class="py-lineno"> 983</tt>  <tt class="py-line">     </tt>
+<a name="_profile"></a><div id="_profile-def"><a name="L984"></a><tt class="py-lineno"> 984</tt> <a class="py-toggle" href="#" id="_profile-toggle" onclick="return toggle('_profile');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.cli-module.html#_profile">_profile</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_profile-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_profile-expanded"><a name="L985"></a><tt class="py-lineno"> 985</tt>  <tt class="py-line">    <tt class="py-comment"># Hotshot profiler.</tt> </tt>
+<a name="L986"></a><tt class="py-lineno"> 986</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt id="link-313" class="py-name"><a title="epydoc.cli.PROFILER" class="py-name" href="#" onclick="return doclink('link-313', 'PROFILER', 'link-28');">PROFILER</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'hotshot'</tt><tt class="py-op">:</tt> </tt>
+<a name="L987"></a><tt class="py-lineno"> 987</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> <tt class="py-keyword">import</tt> <tt class="py-name">hotshot</tt><tt class="py-op">,</tt> <tt class="py-name">hotshot</tt><tt class="py-op">.</tt><tt class="py-name">stats</tt> </tt>
+<a name="L988"></a><tt class="py-lineno"> 988</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">ImportError</tt><tt class="py-op">:</tt> </tt>
+<a name="L989"></a><tt class="py-lineno"> 989</tt>  <tt class="py-line">            <tt class="py-keyword">print</tt> <tt class="py-op">>></tt><tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">stderr</tt><tt class="py-op">,</tt> <tt class="py-string">"Could not import profile module!"</tt> </tt>
+<a name="L990"></a><tt class="py-lineno"> 990</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> </tt>
+<a name="L991"></a><tt class="py-lineno"> 991</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L992"></a><tt class="py-lineno"> 992</tt>  <tt class="py-line">            <tt class="py-name">prof</tt> <tt class="py-op">=</tt> <tt class="py-name">hotshot</tt><tt class="py-op">.</tt><tt class="py-name">Profile</tt><tt class="py-op">(</tt><tt class="py-string">'hotshot.out'</tt><tt class="py-op">)</tt> </tt>
+<a name="L993"></a><tt class="py-lineno"> 993</tt>  <tt class="py-line">            <tt class="py-name">prof</tt> <tt class="py-op">=</tt> <tt class="py-name">prof</tt><tt class="py-op">.</tt><tt class="py-name">runctx</tt><tt class="py-op">(</tt><tt class="py-string">'main(*parse_arguments())'</tt><tt class="py-op">,</tt> <tt class="py-name">globals</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py- [...]
+<a name="L994"></a><tt class="py-lineno"> 994</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">SystemExit</tt><tt class="py-op">:</tt> </tt>
+<a name="L995"></a><tt class="py-lineno"> 995</tt>  <tt class="py-line">            <tt class="py-keyword">pass</tt> </tt>
+<a name="L996"></a><tt class="py-lineno"> 996</tt>  <tt class="py-line">        <tt class="py-name">prof</tt><tt class="py-op">.</tt><tt id="link-314" class="py-name"><a title="epydoc.cli.HTMLLogger.close
+epydoc.docintrospecter._DevNull.close
+epydoc.log.Logger.close
+epydoc.log.close" class="py-name" href="#" onclick="return doclink('link-314', 'close', 'link-94');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L997"></a><tt class="py-lineno"> 997</tt>  <tt class="py-line">        <tt class="py-comment"># Convert profile.hotshot -> profile.out</tt> </tt>
+<a name="L998"></a><tt class="py-lineno"> 998</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">print</tt> <tt class="py-string">'Consolidating hotshot profiling info...'</tt> </tt>
+<a name="L999"></a><tt class="py-lineno"> 999</tt>  <tt class="py-line">        <tt class="py-name">hotshot</tt><tt class="py-op">.</tt><tt class="py-name">stats</tt><tt class="py-op">.</tt><tt class="py-name">load</tt><tt class="py-op">(</tt><tt class="py-string">'hotshot.out'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">dump_stats</tt><tt class="py-op">(</tt><tt class="py-string">'profile.out'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1000"></a><tt class="py-lineno">1000</tt>  <tt class="py-line"> </tt>
+<a name="L1001"></a><tt class="py-lineno">1001</tt>  <tt class="py-line">    <tt class="py-comment"># Standard 'profile' profiler.</tt> </tt>
+<a name="L1002"></a><tt class="py-lineno">1002</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">elif</tt> <tt id="link-315" class="py-name"><a title="epydoc.cli.PROFILER" class="py-name" href="#" onclick="return doclink('link-315', 'PROFILER', 'link-28');">PROFILER</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'profile'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1003"></a><tt class="py-lineno">1003</tt>  <tt class="py-line">        <tt class="py-comment"># cProfile module was added in Python 2.5 -- use it if its'</tt> </tt>
+<a name="L1004"></a><tt class="py-lineno">1004</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># available, since it's faster.</tt> </tt>
+<a name="L1005"></a><tt class="py-lineno">1005</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> <tt class="py-keyword">from</tt> <tt class="py-name">cProfile</tt> <tt class="py-keyword">import</tt> <tt class="py-name">Profile</tt> </tt>
+<a name="L1006"></a><tt class="py-lineno">1006</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">ImportError</tt><tt class="py-op">:</tt> </tt>
+<a name="L1007"></a><tt class="py-lineno">1007</tt>  <tt class="py-line">            <tt class="py-keyword">try</tt><tt class="py-op">:</tt> <tt class="py-keyword">from</tt> <tt class="py-name">profile</tt> <tt class="py-keyword">import</tt> <tt class="py-name">Profile</tt> </tt>
+<a name="L1008"></a><tt class="py-lineno">1008</tt>  <tt class="py-line">            <tt class="py-keyword">except</tt> <tt class="py-name">ImportError</tt><tt class="py-op">:</tt> </tt>
+<a name="L1009"></a><tt class="py-lineno">1009</tt>  <tt class="py-line">                <tt class="py-keyword">print</tt> <tt class="py-op">>></tt><tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">stderr</tt><tt class="py-op">,</tt> <tt class="py-string">"Could not import profile module!"</tt> </tt>
+<a name="L1010"></a><tt class="py-lineno">1010</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> </tt>
+<a name="L1011"></a><tt class="py-lineno">1011</tt>  <tt class="py-line"> </tt>
+<a name="L1012"></a><tt class="py-lineno">1012</tt>  <tt class="py-line">        <tt class="py-comment"># There was a bug in Python 2.4's profiler.  Check if it's</tt> </tt>
+<a name="L1013"></a><tt class="py-lineno">1013</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># present, and if so, fix it.  (Bug was fixed in 2.4maint:</tt> </tt>
+<a name="L1014"></a><tt class="py-lineno">1014</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># <http://mail.python.org/pipermail/python-checkins/</tt> </tt>
+<a name="L1015"></a><tt class="py-lineno">1015</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#                         2005-September/047099.html>)</tt> </tt>
+<a name="L1016"></a><tt class="py-lineno">1016</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">Profile</tt><tt class="py-op">,</tt> <tt class="py-string">'dispatch'</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L1017"></a><tt class="py-lineno">1017</tt>  <tt class="py-line">            <tt class="py-name">Profile</tt><tt class="py-op">.</tt><tt class="py-name">dispatch</tt><tt class="py-op">[</tt><tt class="py-string">'c_exception'</tt><tt class="py-op">]</tt> <tt class="py-keyword">is</tt> </tt>
+<a name="L1018"></a><tt class="py-lineno">1018</tt>  <tt class="py-line">            <tt class="py-name">Profile</tt><tt class="py-op">.</tt><tt class="py-name">trace_dispatch_exception</tt><tt class="py-op">.</tt><tt class="py-name">im_func</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1019"></a><tt class="py-lineno">1019</tt>  <tt class="py-line">            <tt class="py-name">trace_dispatch_return</tt> <tt class="py-op">=</tt> <tt class="py-name">Profile</tt><tt class="py-op">.</tt><tt class="py-name">trace_dispatch_return</tt><tt class="py-op">.</tt><tt class="py-name">im_func</tt> </tt>
+<a name="L1020"></a><tt class="py-lineno">1020</tt>  <tt class="py-line">            <tt class="py-name">Profile</tt><tt class="py-op">.</tt><tt class="py-name">dispatch</tt><tt class="py-op">[</tt><tt class="py-string">'c_exception'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">trace_dispatch_return</tt> </tt>
+<a name="L1021"></a><tt class="py-lineno">1021</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L1022"></a><tt class="py-lineno">1022</tt>  <tt class="py-line">            <tt class="py-name">prof</tt> <tt class="py-op">=</tt> <tt class="py-name">Profile</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1023"></a><tt class="py-lineno">1023</tt>  <tt class="py-line">            <tt class="py-name">prof</tt> <tt class="py-op">=</tt> <tt class="py-name">prof</tt><tt class="py-op">.</tt><tt class="py-name">runctx</tt><tt class="py-op">(</tt><tt class="py-string">'main(*parse_arguments())'</tt><tt class="py-op">,</tt> <tt class="py-name">globals</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py [...]
+<a name="L1024"></a><tt class="py-lineno">1024</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">SystemExit</tt><tt class="py-op">:</tt> </tt>
+<a name="L1025"></a><tt class="py-lineno">1025</tt>  <tt class="py-line">            <tt class="py-keyword">pass</tt> </tt>
+<a name="L1026"></a><tt class="py-lineno">1026</tt>  <tt class="py-line">        <tt class="py-name">prof</tt><tt class="py-op">.</tt><tt class="py-name">dump_stats</tt><tt class="py-op">(</tt><tt class="py-string">'profile.out'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1027"></a><tt class="py-lineno">1027</tt>  <tt class="py-line"> </tt>
+<a name="L1028"></a><tt class="py-lineno">1028</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1029"></a><tt class="py-lineno">1029</tt>  <tt class="py-line">        <tt class="py-keyword">print</tt> <tt class="py-op">>></tt><tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">stderr</tt><tt class="py-op">,</tt> <tt class="py-string">'Unknown profiler %s'</tt> <tt class="py-op">%</tt> <tt id="link-316" class="py-name"><a title="epydoc.cli.PROFILER" class="py-name" href="#" onclick="return doclink('link-316', 'PROFILER', 'link-28');">PROFILER</a>< [...]
+<a name="L1030"></a><tt class="py-lineno">1030</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> </tt>
+</div><a name="L1031"></a><tt class="py-lineno">1031</tt>  <tt class="py-line">     </tt>
+<a name="L1032"></a><tt class="py-lineno">1032</tt>  <tt class="py-line"><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L1033"></a><tt class="py-lineno">1033</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#{ Logging</tt> </tt>
+<a name="L1034"></a><tt class="py-lineno">1034</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L1035"></a><tt class="py-lineno">1035</tt>  <tt class="py-line"><tt class="py-comment"></tt>     </tt>
+<a name="TerminalController"></a><div id="TerminalController-def"><a name="L1036"></a><tt class="py-lineno">1036</tt> <a class="py-toggle" href="#" id="TerminalController-toggle" onclick="return toggle('TerminalController');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="epydoc.cli.TerminalController-class.html">TerminalController</a><tt class="py-op">:</tt> </tt>
+</div><div id="TerminalController-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="TerminalController-expanded"><a name="L1037"></a><tt class="py-lineno">1037</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L1038"></a><tt class="py-lineno">1038</tt>  <tt class="py-line"><tt class="py-docstring">    A class that can be used to portably generate formatted output to</tt> </tt>
+<a name="L1039"></a><tt class="py-lineno">1039</tt>  <tt class="py-line"><tt class="py-docstring">    a terminal.  See</tt> </tt>
+<a name="L1040"></a><tt class="py-lineno">1040</tt>  <tt class="py-line"><tt class="py-docstring">    U{http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/475116}</tt> </tt>
+<a name="L1041"></a><tt class="py-lineno">1041</tt>  <tt class="py-line"><tt class="py-docstring">    for documentation.  (This is a somewhat stripped-down version.)</tt> </tt>
+<a name="L1042"></a><tt class="py-lineno">1042</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1043"></a><tt class="py-lineno">1043</tt>  <tt class="py-line">    <tt id="link-317" class="py-name" targets="Variable epydoc.cli.TerminalController.BOL=epydoc.cli.TerminalController-class.html#BOL"><a title="epydoc.cli.TerminalController.BOL" class="py-name" href="#" onclick="return doclink('link-317', 'BOL', 'link-317');">BOL</a></tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt>             <tt class="py-comment">#: Move the cursor to the beginning of the line</tt> </tt>
+<a name="L1044"></a><tt class="py-lineno">1044</tt>  <tt class="py-line">    <tt id="link-318" class="py-name" targets="Variable epydoc.cli.TerminalController.UP=epydoc.cli.TerminalController-class.html#UP"><a title="epydoc.cli.TerminalController.UP" class="py-name" href="#" onclick="return doclink('link-318', 'UP', 'link-318');">UP</a></tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt>              <tt class="py-comment">#: Move the cursor up one line</tt> </tt>
+<a name="L1045"></a><tt class="py-lineno">1045</tt>  <tt class="py-line">    <tt id="link-319" class="py-name" targets="Variable epydoc.cli.TerminalController.DOWN=epydoc.cli.TerminalController-class.html#DOWN"><a title="epydoc.cli.TerminalController.DOWN" class="py-name" href="#" onclick="return doclink('link-319', 'DOWN', 'link-319');">DOWN</a></tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt>            <tt class="py-comment">#: Move the cursor down one line</tt> </tt>
+<a name="L1046"></a><tt class="py-lineno">1046</tt>  <tt class="py-line">    <tt id="link-320" class="py-name" targets="Variable epydoc.cli.TerminalController.LEFT=epydoc.cli.TerminalController-class.html#LEFT"><a title="epydoc.cli.TerminalController.LEFT" class="py-name" href="#" onclick="return doclink('link-320', 'LEFT', 'link-320');">LEFT</a></tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt>            <tt class="py-comment">#: Move the cursor left one char</tt> </tt>
+<a name="L1047"></a><tt class="py-lineno">1047</tt>  <tt class="py-line">    <tt id="link-321" class="py-name" targets="Variable epydoc.cli.TerminalController.RIGHT=epydoc.cli.TerminalController-class.html#RIGHT"><a title="epydoc.cli.TerminalController.RIGHT" class="py-name" href="#" onclick="return doclink('link-321', 'RIGHT', 'link-321');">RIGHT</a></tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt>           <tt class="py-comment">#: Move the cursor right one char</tt> </tt>
+<a name="L1048"></a><tt class="py-lineno">1048</tt>  <tt class="py-line">    <tt id="link-322" class="py-name" targets="Variable epydoc.cli.TerminalController.CLEAR_EOL=epydoc.cli.TerminalController-class.html#CLEAR_EOL"><a title="epydoc.cli.TerminalController.CLEAR_EOL" class="py-name" href="#" onclick="return doclink('link-322', 'CLEAR_EOL', 'link-322');">CLEAR_EOL</a></tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt>       <tt class="py-comment">#: Clear to the end of the li [...]
+<a name="L1049"></a><tt class="py-lineno">1049</tt>  <tt class="py-line">    <tt id="link-323" class="py-name" targets="Variable epydoc.cli.TerminalController.CLEAR_LINE=epydoc.cli.TerminalController-class.html#CLEAR_LINE"><a title="epydoc.cli.TerminalController.CLEAR_LINE" class="py-name" href="#" onclick="return doclink('link-323', 'CLEAR_LINE', 'link-323');">CLEAR_LINE</a></tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt>      <tt class="py-comment">#: Clear the current line [...]
+<a name="L1050"></a><tt class="py-lineno">1050</tt>  <tt class="py-line">    <tt id="link-324" class="py-name" targets="Variable epydoc.cli.TerminalController.BOLD=epydoc.cli.TerminalController-class.html#BOLD"><a title="epydoc.cli.TerminalController.BOLD" class="py-name" href="#" onclick="return doclink('link-324', 'BOLD', 'link-324');">BOLD</a></tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt>            <tt class="py-comment">#: Turn on bold mode</tt> </tt>
+<a name="L1051"></a><tt class="py-lineno">1051</tt>  <tt class="py-line">    <tt id="link-325" class="py-name" targets="Variable epydoc.cli.TerminalController.NORMAL=epydoc.cli.TerminalController-class.html#NORMAL"><a title="epydoc.cli.TerminalController.NORMAL" class="py-name" href="#" onclick="return doclink('link-325', 'NORMAL', 'link-325');">NORMAL</a></tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt>          <tt class="py-comment">#: Turn off all modes</tt> </tt>
+<a name="L1052"></a><tt class="py-lineno">1052</tt>  <tt class="py-line">    <tt id="link-326" class="py-name" targets="Variable epydoc.cli.TerminalController.COLS=epydoc.cli.TerminalController-class.html#COLS"><a title="epydoc.cli.TerminalController.COLS" class="py-name" href="#" onclick="return doclink('link-326', 'COLS', 'link-326');">COLS</a></tt> <tt class="py-op">=</tt> <tt class="py-number">75</tt>            <tt class="py-comment">#: Width of the terminal (default to 75)</tt> </tt>
+<a name="L1053"></a><tt class="py-lineno">1053</tt>  <tt class="py-line">    <tt id="link-327" class="py-name" targets="Variable epydoc.cli.TerminalController.BLACK=epydoc.cli.TerminalController-class.html#BLACK"><a title="epydoc.cli.TerminalController.BLACK" class="py-name" href="#" onclick="return doclink('link-327', 'BLACK', 'link-327');">BLACK</a></tt> <tt class="py-op">=</tt> <tt id="link-328" class="py-name" targets="Variable epydoc.cli.TerminalController.BLUE=epydoc.cli.TerminalCo [...]
+<a name="L1054"></a><tt class="py-lineno">1054</tt>  <tt class="py-line">     </tt>
+<a name="L1055"></a><tt class="py-lineno">1055</tt>  <tt class="py-line">    <tt id="link-335" class="py-name" targets="Variable epydoc.cli.TerminalController._STRING_CAPABILITIES=epydoc.cli.TerminalController-class.html#_STRING_CAPABILITIES"><a title="epydoc.cli.TerminalController._STRING_CAPABILITIES" class="py-name" href="#" onclick="return doclink('link-335', '_STRING_CAPABILITIES', 'link-335');">_STRING_CAPABILITIES</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"""</tt> </tt>
+<a name="L1056"></a><tt class="py-lineno">1056</tt>  <tt class="py-line"><tt class="py-string">    BOL=cr UP=cuu1 DOWN=cud1 LEFT=cub1 RIGHT=cuf1</tt> </tt>
+<a name="L1057"></a><tt class="py-lineno">1057</tt>  <tt class="py-line"><tt class="py-string">    CLEAR_EOL=el BOLD=bold UNDERLINE=smul NORMAL=sgr0"""</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1058"></a><tt class="py-lineno">1058</tt>  <tt class="py-line">    <tt id="link-336" class="py-name" targets="Variable epydoc.cli.TerminalController._COLORS=epydoc.cli.TerminalController-class.html#_COLORS"><a title="epydoc.cli.TerminalController._COLORS" class="py-name" href="#" onclick="return doclink('link-336', '_COLORS', 'link-336');">_COLORS</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"""BLACK BLUE GREEN CYAN RED MAGENTA YELLOW WHITE"""</tt><tt class="py-op">. [...]
+<a name="L1059"></a><tt class="py-lineno">1059</tt>  <tt class="py-line">    <tt id="link-337" class="py-name" targets="Variable epydoc.cli.TerminalController._ANSICOLORS=epydoc.cli.TerminalController-class.html#_ANSICOLORS"><a title="epydoc.cli.TerminalController._ANSICOLORS" class="py-name" href="#" onclick="return doclink('link-337', '_ANSICOLORS', 'link-337');">_ANSICOLORS</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"BLACK RED GREEN YELLOW BLUE MAGENTA CYAN WHITE"</tt><tt [...]
+<a name="L1060"></a><tt class="py-lineno">1060</tt>  <tt class="py-line"> </tt>
+<a name="L1061"></a><tt class="py-lineno">1061</tt>  <tt class="py-line">    <tt class="py-comment">#: If this is set to true, then new TerminalControllers will</tt> </tt>
+<a name="L1062"></a><tt class="py-lineno">1062</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#: assume that the terminal is not capable of doing manipulation</tt> </tt>
+<a name="L1063"></a><tt class="py-lineno">1063</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#: of any kind.</tt> </tt>
+<a name="L1064"></a><tt class="py-lineno">1064</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-338" class="py-name"><a title="epydoc.cli.TerminalController.FORCE_SIMPLE_TERM" class="py-name" href="#" onclick="return doclink('link-338', 'FORCE_SIMPLE_TERM', 'link-137');">FORCE_SIMPLE_TERM</a></tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L1065"></a><tt class="py-lineno">1065</tt>  <tt class="py-line"> </tt>
+<a name="TerminalController.__init__"></a><div id="TerminalController.__init__-def"><a name="L1066"></a><tt class="py-lineno">1066</tt> <a class="py-toggle" href="#" id="TerminalController.__init__-toggle" onclick="return toggle('TerminalController.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.cli.TerminalController-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt [...]
+</div><div id="TerminalController.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="TerminalController.__init__-expanded"><a name="L1067"></a><tt class="py-lineno">1067</tt>  <tt class="py-line">        <tt class="py-comment"># If the stream isn't a tty, then assume it has no capabilities.</tt> </tt>
+<a name="L1068"></a><tt class="py-lineno">1068</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">term_stream</tt><tt class="py-op">.</tt><tt class="py-name">isatty</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> </tt>
+<a name="L1069"></a><tt class="py-lineno">1069</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-339" class="py-name"><a title="epydoc.cli.TerminalController.FORCE_SIMPLE_TERM" class="py-name" href="#" onclick="return doclink('link-339', 'FORCE_SIMPLE_TERM', 'link-137');">FORCE_SIMPLE_TERM</a></tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> </tt>
+<a name="L1070"></a><tt class="py-lineno">1070</tt>  <tt class="py-line"> </tt>
+<a name="L1071"></a><tt class="py-lineno">1071</tt>  <tt class="py-line">        <tt class="py-comment"># Curses isn't available on all platforms</tt> </tt>
+<a name="L1072"></a><tt class="py-lineno">1072</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> <tt class="py-keyword">import</tt> <tt class="py-name">curses</tt> </tt>
+<a name="L1073"></a><tt class="py-lineno">1073</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt>
+<a name="L1074"></a><tt class="py-lineno">1074</tt>  <tt class="py-line">            <tt class="py-comment"># If it's not available, then try faking enough to get a</tt> </tt>
+<a name="L1075"></a><tt class="py-lineno">1075</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># simple progress bar.</tt> </tt>
+<a name="L1076"></a><tt class="py-lineno">1076</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-340" class="py-name"><a title="epydoc.cli.TerminalController.BOL" class="py-name" href="#" onclick="return doclink('link-340', 'BOL', 'link-317');">BOL</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'\r'</tt> </tt>
+<a name="L1077"></a><tt class="py-lineno">1077</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-341" class="py-name"><a title="epydoc.cli.TerminalController.CLEAR_LINE" class="py-name" href="#" onclick="return doclink('link-341', 'CLEAR_LINE', 'link-323');">CLEAR_LINE</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'\r'</tt> <tt class="py-op">+</tt> <tt class="py-string">' '</tt><tt class="py-op">*</tt><tt class="py-name">sel [...]
+<a name="L1078"></a><tt class="py-lineno">1078</tt>  <tt class="py-line">             </tt>
+<a name="L1079"></a><tt class="py-lineno">1079</tt>  <tt class="py-line">        <tt class="py-comment"># Check the terminal type.  If we fail, then assume that the</tt> </tt>
+<a name="L1080"></a><tt class="py-lineno">1080</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># terminal has no capabilities.</tt> </tt>
+<a name="L1081"></a><tt class="py-lineno">1081</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> <tt class="py-name">curses</tt><tt class="py-op">.</tt><tt class="py-name">setupterm</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1082"></a><tt class="py-lineno">1082</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> </tt>
+<a name="L1083"></a><tt class="py-lineno">1083</tt>  <tt class="py-line"> </tt>
+<a name="L1084"></a><tt class="py-lineno">1084</tt>  <tt class="py-line">        <tt class="py-comment"># Look up numeric capabilities.</tt> </tt>
+<a name="L1085"></a><tt class="py-lineno">1085</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-343" class="py-name"><a title="epydoc.cli.TerminalController.COLS" class="py-name" href="#" onclick="return doclink('link-343', 'COLS', 'link-326');">COLS</a></tt> <tt class="py-op">=</tt> <tt class="py-name">curses</tt><tt class="py-op">.</tt><tt class="py-name">tigetnum</tt><tt class="py-op">(</tt><tt class="py-st [...]
+<a name="L1086"></a><tt class="py-lineno">1086</tt>  <tt class="py-line">         </tt>
+<a name="L1087"></a><tt class="py-lineno">1087</tt>  <tt class="py-line">        <tt class="py-comment"># Look up string capabilities.</tt> </tt>
+<a name="L1088"></a><tt class="py-lineno">1088</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">for</tt> <tt class="py-name">capability</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-344" class="py-name"><a title="epydoc.cli.TerminalController._STRING_CAPABILITIES" class="py-name" href="#" onclick="return doclink('link-344', '_STRING_CAPABILITIES', 'link-335');">_STRING_CAPABILITIES</a></tt><tt cla [...]
+<a name="L1089"></a><tt class="py-lineno">1089</tt>  <tt class="py-line">            <tt class="py-op">(</tt><tt class="py-name">attrib</tt><tt class="py-op">,</tt> <tt class="py-name">cap_name</tt><tt class="py-op">)</tt> <tt class="py-op">=</tt> <tt class="py-name">capability</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'='</tt><tt class="py-op">)</tt> </tt>
+<a name="L1090"></a><tt class="py-lineno">1090</tt>  <tt class="py-line">            <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">attrib</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-345" class="py-name" targets="Method epydoc.cli.TerminalController._tigetstr()=epydoc.cli.TerminalController-class.html#_tigetstr"><a title="epydoc.cli.TerminalController._tig [...]
+<a name="L1091"></a><tt class="py-lineno">1091</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-346" class="py-name"><a title="epydoc.cli.TerminalController.BOL" class="py-name" href="#" onclick="return doclink('link-346', 'BOL', 'link-317');">BOL</a></tt> <tt class="py-keyword">and</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-347" class="py-name"><a title="epydoc.cli.TerminalContr [...]
+<a name="L1092"></a><tt class="py-lineno">1092</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-348" class="py-name"><a title="epydoc.cli.TerminalController.CLEAR_LINE" class="py-name" href="#" onclick="return doclink('link-348', 'CLEAR_LINE', 'link-323');">CLEAR_LINE</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-349" class="py-name"><a title="epydoc.cli.TerminalController.BOL" cl [...]
+<a name="L1093"></a><tt class="py-lineno">1093</tt>  <tt class="py-line"> </tt>
+<a name="L1094"></a><tt class="py-lineno">1094</tt>  <tt class="py-line">        <tt class="py-comment"># Colors</tt> </tt>
+<a name="L1095"></a><tt class="py-lineno">1095</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">set_fg</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-351" class="py-name"><a title="epydoc.cli.TerminalController._tigetstr" class="py-name" href="#" onclick="return doclink('link-351', '_tigetstr', 'link-345');">_tigetstr</a></tt><tt class="py-op">(</tt><tt class="py-string">'setf'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1096"></a><tt class="py-lineno">1096</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">set_fg</tt><tt class="py-op">:</tt> </tt>
+<a name="L1097"></a><tt class="py-lineno">1097</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">i</tt><tt class="py-op">,</tt><tt class="py-name">color</tt> <tt class="py-keyword">in</tt> <tt class="py-name">zip</tt><tt class="py-op">(</tt><tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-352" class="py-name"><a title="epydoc.c [...]
+<a name="L1098"></a><tt class="py-lineno">1098</tt>  <tt class="py-line">                <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">color</tt><tt class="py-op">,</tt> <tt class="py-name">curses</tt><tt class="py-op">.</tt><tt class="py-name">tparm</tt><tt class="py-op">(</tt><tt class="py-name">set_fg</tt><tt class="py-op">,</tt> <tt class="py-name">i</tt><tt class="py-op">)</tt> <tt class="py-keyword" [...]
+<a name="L1099"></a><tt class="py-lineno">1099</tt>  <tt class="py-line">        <tt class="py-name">set_fg_ansi</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-354" class="py-name"><a title="epydoc.cli.TerminalController._tigetstr" class="py-name" href="#" onclick="return doclink('link-354', '_tigetstr', 'link-345');">_tigetstr</a></tt><tt class="py-op">(</tt><tt class="py-string">'setaf'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1100"></a><tt class="py-lineno">1100</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">set_fg_ansi</tt><tt class="py-op">:</tt> </tt>
+<a name="L1101"></a><tt class="py-lineno">1101</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">i</tt><tt class="py-op">,</tt><tt class="py-name">color</tt> <tt class="py-keyword">in</tt> <tt class="py-name">zip</tt><tt class="py-op">(</tt><tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-355" class="py-name"><a title="epydoc.c [...]
+<a name="L1102"></a><tt class="py-lineno">1102</tt>  <tt class="py-line">                <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">color</tt><tt class="py-op">,</tt> <tt class="py-name">curses</tt><tt class="py-op">.</tt><tt class="py-name">tparm</tt><tt class="py-op">(</tt><tt class="py-name">set_fg_ansi</tt><tt class="py-op">,</tt> <tt class="py-name">i</tt><tt class="py-op">)</tt> <tt class="py-key [...]
+</div><a name="L1103"></a><tt class="py-lineno">1103</tt>  <tt class="py-line"> </tt>
+<a name="TerminalController._tigetstr"></a><div id="TerminalController._tigetstr-def"><a name="L1104"></a><tt class="py-lineno">1104</tt> <a class="py-toggle" href="#" id="TerminalController._tigetstr-toggle" onclick="return toggle('TerminalController._tigetstr');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.cli.TerminalController-class.html#_tigetstr">_tigetstr</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op" [...]
+</div><div id="TerminalController._tigetstr-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="TerminalController._tigetstr-expanded"><a name="L1105"></a><tt class="py-lineno">1105</tt>  <tt class="py-line">        <tt class="py-comment"># String capabilities can include "delays" of the form "$<2>".</tt> </tt>
+<a name="L1106"></a><tt class="py-lineno">1106</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># For any modern terminal, we should be able to just ignore</tt> </tt>
+<a name="L1107"></a><tt class="py-lineno">1107</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># these, so strip them out.</tt> </tt>
+<a name="L1108"></a><tt class="py-lineno">1108</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">import</tt> <tt class="py-name">curses</tt> </tt>
+<a name="L1109"></a><tt class="py-lineno">1109</tt>  <tt class="py-line">        <tt class="py-name">cap</tt> <tt class="py-op">=</tt> <tt class="py-name">curses</tt><tt class="py-op">.</tt><tt class="py-name">tigetstr</tt><tt class="py-op">(</tt><tt class="py-name">cap_name</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-string">''</tt> </tt>
+<a name="L1110"></a><tt class="py-lineno">1110</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt class="py-string">r'\$<\d+>[/*]?'</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">,</tt> <tt class="py-name">cap</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L1111"></a><tt class="py-lineno">1111</tt>  <tt class="py-line"> </tt>
+<a name="ConsoleLogger"></a><div id="ConsoleLogger-def"><a name="L1112"></a><tt class="py-lineno">1112</tt> <a class="py-toggle" href="#" id="ConsoleLogger-toggle" onclick="return toggle('ConsoleLogger');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="epydoc.cli.ConsoleLogger-class.html">ConsoleLogger</a><tt class="py-op">(</tt><tt class="py-base-class">log</tt><tt class="py-op">.</tt><tt class="py-base-class">Logger</tt><tt class="py-op">)</tt>< [...]
+</div><div id="ConsoleLogger-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="ConsoleLogger-expanded"><a name="ConsoleLogger.__init__"></a><div id="ConsoleLogger.__init__-def"><a name="L1113"></a><tt class="py-lineno">1113</tt> <a class="py-toggle" href="#" id="ConsoleLogger.__init__-toggle" onclick="return toggle('ConsoleLogger.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.cli.ConsoleLogger-class.htm [...]
+</div><div id="ConsoleLogger.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ConsoleLogger.__init__-expanded"><a name="L1114"></a><tt class="py-lineno">1114</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_verbosity</tt> <tt class="py-op">=</tt> <tt class="py-name">verbosity</tt> </tt>
+<a name="L1115"></a><tt class="py-lineno">1115</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_progress</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L1116"></a><tt class="py-lineno">1116</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_message_blocks</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L1117"></a><tt class="py-lineno">1117</tt>  <tt class="py-line">        <tt class="py-comment"># For ETA display:</tt> </tt>
+<a name="L1118"></a><tt class="py-lineno">1118</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_progress_start_time</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L1119"></a><tt class="py-lineno">1119</tt>  <tt class="py-line">        <tt class="py-comment"># For per-task times:</tt> </tt>
+<a name="L1120"></a><tt class="py-lineno">1120</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_task_times</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L1121"></a><tt class="py-lineno">1121</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_progress_header</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L1122"></a><tt class="py-lineno">1122</tt>  <tt class="py-line"> </tt>
+<a name="L1123"></a><tt class="py-lineno">1123</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">reported_message_levels</tt> <tt class="py-op">=</tt> <tt class="py-name">set</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1124"></a><tt class="py-lineno">1124</tt>  <tt class="py-line">        <tt class="py-string">"""This set contains all the message levels (WARNING, ERROR,</tt> </tt>
+<a name="L1125"></a><tt class="py-lineno">1125</tt>  <tt class="py-line"><tt class="py-string">        etc) that have been reported.  It is used by the options</tt> </tt>
+<a name="L1126"></a><tt class="py-lineno">1126</tt>  <tt class="py-line"><tt class="py-string">        --fail-on-warning etc to determine the return value."""</tt> </tt>
+<a name="L1127"></a><tt class="py-lineno">1127</tt>  <tt class="py-line">         </tt>
+<a name="L1128"></a><tt class="py-lineno">1128</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">suppressed_docstring_warning</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L1129"></a><tt class="py-lineno">1129</tt>  <tt class="py-line">        <tt class="py-string">"""This variable will be incremented once every time a</tt> </tt>
+<a name="L1130"></a><tt class="py-lineno">1130</tt>  <tt class="py-line"><tt class="py-string">        docstring warning is reported tothe logger, but the verbosity</tt> </tt>
+<a name="L1131"></a><tt class="py-lineno">1131</tt>  <tt class="py-line"><tt class="py-string">        level is too low for it to be displayed."""</tt> </tt>
+<a name="L1132"></a><tt class="py-lineno">1132</tt>  <tt class="py-line"> </tt>
+<a name="L1133"></a><tt class="py-lineno">1133</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">term</tt> <tt class="py-op">=</tt> <tt id="link-357" class="py-name"><a title="epydoc.cli.TerminalController" class="py-name" href="#" onclick="return doclink('link-357', 'TerminalController', 'link-136');">TerminalController</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1134"></a><tt class="py-lineno">1134</tt>  <tt class="py-line"> </tt>
+<a name="L1135"></a><tt class="py-lineno">1135</tt>  <tt class="py-line">        <tt class="py-comment"># Set the progress bar mode.</tt> </tt>
+<a name="L1136"></a><tt class="py-lineno">1136</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">verbosity</tt> <tt class="py-op">>=</tt> <tt class="py-number">2</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_progress_mode</tt> <tt class="py-op">=</tt> <tt class="py-string">'list'</tt> </tt>
+<a name="L1137"></a><tt class="py-lineno">1137</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">verbosity</tt> <tt class="py-op">>=</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L1138"></a><tt class="py-lineno">1138</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">progress_mode</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1139"></a><tt class="py-lineno">1139</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_progress_mode</tt> <tt class="py-op">=</tt> <tt class="py-name">progress_mode</tt> </tt>
+<a name="L1140"></a><tt class="py-lineno">1140</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">term</tt><tt class="py-op">.</tt><tt id="link-358" class="py-name"><a title="epydoc.cli.TerminalController.COLS" class="py-name" href="#" onclick="return doclink('link-358', 'COLS', 'link-326');">COLS</a></tt> <tt class="py-op"><</tt> <tt class="py-number">15</tt><tt class="py-op">:</tt> </tt>
+<a name="L1141"></a><tt class="py-lineno">1141</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_progress_mode</tt> <tt class="py-op">=</tt> <tt class="py-string">'simple-bar'</tt> </tt>
+<a name="L1142"></a><tt class="py-lineno">1142</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">term</tt><tt class="py-op">.</tt><tt id="link-359" class="py-name"><a title="epydoc.cli.TerminalController.BOL" class="py-name" href="#" onclick="return doclink('link-359', 'BOL', 'link-317');">BOL</a></tt> <tt class="py-keyword">and</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class [...]
+<a name="L1143"></a><tt class="py-lineno">1143</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_progress_mode</tt> <tt class="py-op">=</tt> <tt class="py-string">'multiline-bar'</tt> </tt>
+<a name="L1144"></a><tt class="py-lineno">1144</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">term</tt><tt class="py-op">.</tt><tt id="link-362" class="py-name"><a title="epydoc.cli.TerminalController.BOL" class="py-name" href="#" onclick="return doclink('link-362', 'BOL', 'link-317');">BOL</a></tt> <tt class="py-keyword">and</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class [...]
+<a name="L1145"></a><tt class="py-lineno">1145</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_progress_mode</tt> <tt class="py-op">=</tt> <tt class="py-string">'bar'</tt> </tt>
+<a name="L1146"></a><tt class="py-lineno">1146</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1147"></a><tt class="py-lineno">1147</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_progress_mode</tt> <tt class="py-op">=</tt> <tt class="py-string">'simple-bar'</tt> </tt>
+<a name="L1148"></a><tt class="py-lineno">1148</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_progress_mode</tt> <tt class="py-op">=</tt> <tt class="py-string">'hide'</tt> </tt>
+</div><a name="L1149"></a><tt class="py-lineno">1149</tt>  <tt class="py-line"> </tt>
+<a name="ConsoleLogger.start_block"></a><div id="ConsoleLogger.start_block-def"><a name="L1150"></a><tt class="py-lineno">1150</tt> <a class="py-toggle" href="#" id="ConsoleLogger.start_block-toggle" onclick="return toggle('ConsoleLogger.start_block');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.cli.ConsoleLogger-class.html#start_block">start_block</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt c [...]
+</div><div id="ConsoleLogger.start_block-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ConsoleLogger.start_block-expanded"><a name="L1151"></a><tt class="py-lineno">1151</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_message_blocks</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt> <tt class="py-op">(</tt><tt class="py-name">header</tt><tt class="py-op">,</tt> <tt  [...]
+</div><a name="L1152"></a><tt class="py-lineno">1152</tt>  <tt class="py-line"> </tt>
+<a name="ConsoleLogger.end_block"></a><div id="ConsoleLogger.end_block-def"><a name="L1153"></a><tt class="py-lineno">1153</tt> <a class="py-toggle" href="#" id="ConsoleLogger.end_block-toggle" onclick="return toggle('ConsoleLogger.end_block');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.cli.ConsoleLogger-class.html#end_block">end_block</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op"> [...]
+</div><div id="ConsoleLogger.end_block-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ConsoleLogger.end_block-expanded"><a name="L1154"></a><tt class="py-lineno">1154</tt>  <tt class="py-line">        <tt class="py-name">header</tt><tt class="py-op">,</tt> <tt class="py-name">messages</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_message_blocks</tt><tt class="py-op">.</tt><tt class="py-name">pop</tt>< [...]
+<a name="L1155"></a><tt class="py-lineno">1155</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">messages</tt><tt class="py-op">:</tt> </tt>
+<a name="L1156"></a><tt class="py-lineno">1156</tt>  <tt class="py-line">            <tt class="py-name">width</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">term</tt><tt class="py-op">.</tt><tt id="link-364" class="py-name"><a title="epydoc.cli.TerminalController.COLS" class="py-name" href="#" onclick="return doclink('link-364', 'COLS', 'link-326');">COLS</a></tt> <tt class="py-op">-</tt> <tt class="py-number">5</tt> <tt class="py- [...]
+<a name="L1157"></a><tt class="py-lineno">1157</tt>  <tt class="py-line">            <tt class="py-name">prefix</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">term</tt><tt class="py-op">.</tt><tt id="link-365" class="py-name"><a title="epydoc.cli.TerminalController.CYAN" class="py-name" href="#" onclick="return doclink('link-365', 'CYAN', 'link-330');">CYAN</a></tt><tt class="py-op">+</tt><tt class="py-name">self</tt><tt class="py-o [...]
+<a name="L1158"></a><tt class="py-lineno">1158</tt>  <tt class="py-line">            <tt class="py-name">divider</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">term</tt><tt class="py-op">.</tt><tt id="link-368" class="py-name"><a title="epydoc.cli.TerminalController.CYAN" class="py-name" href="#" onclick="return doclink('link-368', 'CYAN', 'link-330');">CYAN</a></tt><tt class="py-op">+</tt><tt class="py-name" [...]
+<a name="L1159"></a><tt class="py-lineno">1159</tt>  <tt class="py-line">                       <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">term</tt><tt class="py-op">.</tt><tt id="link-370" class="py-name"><a title="epydoc.cli.TerminalController.NORMAL" class="py-name" href="#" onclick="return doclink('link-370', 'NORMAL', 'link-325');">NORMAL</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1160"></a><tt class="py-lineno">1160</tt>  <tt class="py-line">            <tt class="py-comment"># Mark up the header:</tt> </tt>
+<a name="L1161"></a><tt class="py-lineno">1161</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">header</tt> <tt class="py-op">=</tt> <tt id="link-371" class="py-name"><a title="epydoc.util.wordwrap" class="py-name" href="#" onclick="return doclink('link-371', 'wordwrap', 'link-5');">wordwrap</a></tt><tt class="py-op">(</tt><tt class="py-name">header</tt><tt class="py-op">,</tt> <tt class="py-name">right</tt><tt class="py-op">=</tt><tt class="py-name"> [...]
+<a name="L1162"></a><tt class="py-lineno">1162</tt>  <tt class="py-line">            <tt class="py-name">header</tt> <tt class="py-op">=</tt> <tt class="py-string">'\n'</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">prefix</tt><tt class="py-op">+</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">term</tt><tt class="py-op">.</tt><tt id="link-372" class="py-name"><a title="epydoc.cli.Te [...]
+<a name="L1163"></a><tt class="py-lineno">1163</tt>  <tt class="py-line">                                <tt class="py-keyword">for</tt> <tt class="py-name">l</tt> <tt class="py-keyword">in</tt> <tt class="py-name">header</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1164"></a><tt class="py-lineno">1164</tt>  <tt class="py-line">            <tt class="py-comment"># Construct the body:</tt> </tt>
+<a name="L1165"></a><tt class="py-lineno">1165</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt id="link-374" class="py-name" targets="Method epydoc.markup.Field.body()=epydoc.markup.Field-class.html#body"><a title="epydoc.markup.Field.body" class="py-name" href="#" onclick="return doclink('link-374', 'body', 'link-374');">body</a></tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
+<a name="L1166"></a><tt class="py-lineno">1166</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">message</tt> <tt class="py-keyword">in</tt> <tt class="py-name">messages</tt><tt class="py-op">:</tt> </tt>
+<a name="L1167"></a><tt class="py-lineno">1167</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">message</tt><tt class="py-op">.</tt><tt class="py-name">endswith</tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt id="link-375" class="py-name"><a title="epydoc.markup.Field.body" class="py-name" href="#" onclick="return doclink('link-375', 'body', 'link-374');">body</a></tt> <tt class="p [...]
+<a name="L1168"></a><tt class="py-lineno">1168</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> <tt id="link-376" class="py-name"><a title="epydoc.markup.Field.body" class="py-name" href="#" onclick="return doclink('link-376', 'body', 'link-374');">body</a></tt> <tt class="py-op">+=</tt> <tt class="py-name">message</tt><tt class="py-op">+</tt><tt class="py-string">'\n'</tt> </tt>
+<a name="L1169"></a><tt class="py-lineno">1169</tt>  <tt class="py-line">            <tt class="py-comment"># Indent the body:</tt> </tt>
+<a name="L1170"></a><tt class="py-lineno">1170</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt id="link-377" class="py-name"><a title="epydoc.markup.Field.body" class="py-name" href="#" onclick="return doclink('link-377', 'body', 'link-374');">body</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'\n'</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">prefix</tt><tt class="py-op">+</tt> [...]
+<a name="L1171"></a><tt class="py-lineno">1171</tt>  <tt class="py-line">            <tt class="py-comment"># Put it all together:</tt> </tt>
+<a name="L1172"></a><tt class="py-lineno">1172</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">message</tt> <tt class="py-op">=</tt> <tt class="py-name">divider</tt> <tt class="py-op">+</tt> <tt class="py-string">'\n'</tt> <tt class="py-op">+</tt> <tt class="py-name">header</tt> <tt class="py-op">+</tt> <tt class="py-string">'\n'</tt> <tt class="py-op">+</tt> <tt id="link-379" class="py-name"><a title="epydoc.markup.Field.body" class="py-name" href=" [...]
+<a name="L1173"></a><tt class="py-lineno">1173</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-380" class="py-name" targets="Method epydoc.cli.ConsoleLogger._report()=epydoc.cli.ConsoleLogger-class.html#_report"><a title="epydoc.cli.ConsoleLogger._report" class="py-name" href="#" onclick="return doclink('link-380', '_report', 'link-380');">_report</a></tt><tt class="py-op">(</tt><tt class="py-name">message</tt><tt class="py-op">)</t [...]
+</div><a name="L1174"></a><tt class="py-lineno">1174</tt>  <tt class="py-line">             </tt>
+<a name="ConsoleLogger._format"></a><div id="ConsoleLogger._format-def"><a name="L1175"></a><tt class="py-lineno">1175</tt> <a class="py-toggle" href="#" id="ConsoleLogger._format-toggle" onclick="return toggle('ConsoleLogger._format');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.cli.ConsoleLogger-class.html#_format">_format</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">prefix</ [...]
+</div><div id="ConsoleLogger._format-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ConsoleLogger._format-expanded"><a name="L1176"></a><tt class="py-lineno">1176</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L1177"></a><tt class="py-lineno">1177</tt>  <tt class="py-line"><tt class="py-docstring">        Rewrap the message; but preserve newlines, and don't touch any</tt> </tt>
+<a name="L1178"></a><tt class="py-lineno">1178</tt>  <tt class="py-line"><tt class="py-docstring">        lines that begin with spaces.</tt> </tt>
+<a name="L1179"></a><tt class="py-lineno">1179</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L1180"></a><tt class="py-lineno">1180</tt>  <tt class="py-line">        <tt class="py-name">lines</tt> <tt class="py-op">=</tt> <tt class="py-name">message</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1181"></a><tt class="py-lineno">1181</tt>  <tt class="py-line">        <tt class="py-name">startindex</tt> <tt class="py-op">=</tt> <tt class="py-name">indent</tt> <tt class="py-op">=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">prefix</tt><tt class="py-op">)</tt> </tt>
+<a name="L1182"></a><tt class="py-lineno">1182</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">lines</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1183"></a><tt class="py-lineno">1183</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">lines</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">startswith</tt><tt class="py-op">(</tt><tt class="py-string">' '</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1184"></a><tt class="py-lineno">1184</tt>  <tt class="py-line">                <tt class="py-name">lines</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">' '</tt><tt class="py-op">*</tt><tt class="py-op">(</tt><tt class="py-name">indent</tt><tt class="py-op">-</tt><tt class="py-name">startindex</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-name">lines</tt><tt class="py-op">[</tt>< [...]
+<a name="L1185"></a><tt class="py-lineno">1185</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1186"></a><tt class="py-lineno">1186</tt>  <tt class="py-line">                <tt class="py-name">width</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">term</tt><tt class="py-op">.</tt><tt id="link-381" class="py-name"><a title="epydoc.cli.TerminalController.COLS" class="py-name" href="#" onclick="return doclink('link-381', 'COLS', 'link-326');">COLS</a></tt> <tt class="py-op">-</tt> <tt class="py-number">5</tt> <tt class= [...]
+<a name="L1187"></a><tt class="py-lineno">1187</tt>  <tt class="py-line">                <tt class="py-name">lines</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-382" class="py-name"><a title="epydoc.util.wordwrap" class="py-name" href="#" onclick="return doclink('link-382', 'wordwrap', 'link-5');">wordwrap</a></tt><tt class="py-op">(</tt><tt class="py-name">lines</tt><tt class="py-op">[</tt><tt class="py-name">i</tt>< [...]
+<a name="L1188"></a><tt class="py-lineno">1188</tt>  <tt class="py-line">            <tt class="py-name">startindex</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L1189"></a><tt class="py-lineno">1189</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">color</tt><tt class="py-op">+</tt><tt class="py-name">prefix</tt><tt class="py-op">+</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">term</tt><tt class="py-op">.</tt><tt id="link-383" class="py-name"><a title="epydoc.cli.TerminalController.NORMAL" class="py-name" href="#" onclick="return doclink('link-383', 'NORMAL', 'link-32 [...]
+</div><a name="L1190"></a><tt class="py-lineno">1190</tt>  <tt class="py-line"> </tt>
+<a name="ConsoleLogger.log"></a><div id="ConsoleLogger.log-def"><a name="L1191"></a><tt class="py-lineno">1191</tt> <a class="py-toggle" href="#" id="ConsoleLogger.log-toggle" onclick="return toggle('ConsoleLogger.log');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.cli.ConsoleLogger-class.html#log">log</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">level</tt><tt class="py-op">,</t [...]
+</div><div id="ConsoleLogger.log-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ConsoleLogger.log-expanded"><a name="L1192"></a><tt class="py-lineno">1192</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">reported_message_levels</tt><tt class="py-op">.</tt><tt class="py-name">add</tt><tt class="py-op">(</tt><tt class="py-name">level</tt><tt class="py-op">)</tt> </tt>
+<a name="L1193"></a><tt class="py-lineno">1193</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_verbosity</tt> <tt class="py-op">>=</tt> <tt class="py-op">-</tt><tt class="py-number">2</tt> <tt class="py-keyword">and</tt> <tt class="py-name">level</tt> <tt class="py-op">>=</tt> <tt id="link-384" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-384', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-385" class="py-name"><a title="epydoc.log.ERROR" class="py-name" href="#" onclick="return doclink('link-385', 'ERROR', 'link-62');">ERROR</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1194"></a><tt class="py-lineno">1194</tt>  <tt class="py-line">            <tt class="py-name">message</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-386" class="py-name" targets="Method epydoc.cli.ConsoleLogger._format()=epydoc.cli.ConsoleLogger-class.html#_format"><a title="epydoc.cli.ConsoleLogger._format" class="py-name" href="#" onclick="return doclink('link-386', '_format', 'link-386');">_format</a></tt><tt class="py-op">(< [...]
+<a name="L1195"></a><tt class="py-lineno">1195</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_verbosity</tt> <tt class="py-op">>=</tt> <tt class="py-op">-</tt><tt class="py-number">1</tt> <tt class="py-keyword">and</tt> <tt class="py-name">level</tt> <tt class="py-op">>=</tt> <tt id="link-388" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-388', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-389" class="py-name"><a title="epydoc.log.WARNING" class="py-name" href="#" onclick="return doclink('link-389', 'WARNING', 'link-64');">WARNING</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1196"></a><tt class="py-lineno">1196</tt>  <tt class="py-line">            <tt class="py-name">message</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-390" class="py-name"><a title="epydoc.cli.ConsoleLogger._format" class="py-name" href="#" onclick="return doclink('link-390', '_format', 'link-386');">_format</a></tt><tt class="py-op">(</tt><tt class="py-string">'Warning: '</tt><tt class="py-op">,</tt> <tt class="py-name">message</ [...]
+<a name="L1197"></a><tt class="py-lineno">1197</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_verbosity</tt> <tt class="py-op">>=</tt> <tt class="py-number">1</tt> <tt class="py-keyword">and</tt> <tt class="py-name">level</tt> <tt class="py-op">>=</tt> <tt id="link-392" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-392', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-393" class="py-name"><a title="epydoc.log.DOCSTRING_WARNING" class="py-name" href="#" onclick="return doclink('link-393', 'DOCSTRING_WARNING', 'link-66');">DOCSTRING_WARNING</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1198"></a><tt class="py-lineno">1198</tt>  <tt class="py-line">            <tt class="py-name">message</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-394" class="py-name"><a title="epydoc.cli.ConsoleLogger._format" class="py-name" href="#" onclick="return doclink('link-394', '_format', 'link-386');">_format</a></tt><tt class="py-op">(</tt><tt class="py-string">'Warning: '</tt><tt class="py-op">,</tt> <tt class="py-name">message</ [...]
+<a name="L1199"></a><tt class="py-lineno">1199</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_verbosity</tt> <tt class="py-op">>=</tt> <tt class="py-number">3</tt> <tt class="py-keyword">and</tt> <tt class="py-name">level</tt> <tt class="py-op">>=</tt> <tt id="link-396" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-396', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-397" class="py-name" targets="Variable epydoc.log.INFO=epydoc.log-module.html#INFO"><a title="epydoc.log.INFO" class="py-name" href="#" onclick="return doclink('link-397', 'INFO', 'link-397');">INFO</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1200"></a><tt class="py-lineno">1200</tt>  <tt class="py-line">            <tt class="py-name">message</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-398" class="py-name"><a title="epydoc.cli.ConsoleLogger._format" class="py-name" href="#" onclick="return doclink('link-398', '_format', 'link-386');">_format</a></tt><tt class="py-op">(</tt><tt class="py-string">'   Info: '</tt><tt class="py-op">,</tt> <tt class="py-name">message</ [...]
+<a name="L1201"></a><tt class="py-lineno">1201</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt id="link-400" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-400', 'epydoc', 'link-0');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-401" class="py-name"><a title="epydoc.DEBUG
+epydoc.gui.DEBUG
+epydoc.log.DEBUG" class="py-name" href="#" onclick="return doclink('link-401', 'DEBUG', 'link-48');">DEBUG</a></tt> <tt class="py-keyword">and</tt> <tt class="py-name">level</tt> <tt class="py-op">==</tt> <tt id="link-402" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-402', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-403" class="py-name"><a title="epydoc.DEBUG
+epydoc.gui.DEBUG
+epydoc.log.DEBUG" class="py-name" href="#" onclick="return doclink('link-403', 'DEBUG', 'link-48');">DEBUG</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1202"></a><tt class="py-lineno">1202</tt>  <tt class="py-line">            <tt class="py-name">message</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-404" class="py-name"><a title="epydoc.cli.ConsoleLogger._format" class="py-name" href="#" onclick="return doclink('link-404', '_format', 'link-386');">_format</a></tt><tt class="py-op">(</tt><tt class="py-string">'  Debug: '</tt><tt class="py-op">,</tt> <tt class="py-name">message</ [...]
+<a name="L1203"></a><tt class="py-lineno">1203</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1204"></a><tt class="py-lineno">1204</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">level</tt> <tt class="py-op">>=</tt> <tt id="link-406" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-406', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-407" class="py-name"><a title="epydoc.log.DOCSTRING_WARNING" class="py-name" href="#" onclick="return doclink('link-407', 'DOCSTRING_WARNING', 'link-66');">DOCSTRING_WARNING</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1205"></a><tt class="py-lineno">1205</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">suppressed_docstring_warning</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L1206"></a><tt class="py-lineno">1206</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> </tt>
+<a name="L1207"></a><tt class="py-lineno">1207</tt>  <tt class="py-line">             </tt>
+<a name="L1208"></a><tt class="py-lineno">1208</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-408" class="py-name"><a title="epydoc.cli.ConsoleLogger._report" class="py-name" href="#" onclick="return doclink('link-408', '_report', 'link-380');">_report</a></tt><tt class="py-op">(</tt><tt class="py-name">message</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1209"></a><tt class="py-lineno">1209</tt>  <tt class="py-line"> </tt>
+<a name="ConsoleLogger._report"></a><div id="ConsoleLogger._report-def"><a name="L1210"></a><tt class="py-lineno">1210</tt> <a class="py-toggle" href="#" id="ConsoleLogger._report-toggle" onclick="return toggle('ConsoleLogger._report');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.cli.ConsoleLogger-class.html#_report">_report</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">message< [...]
+</div><div id="ConsoleLogger._report-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ConsoleLogger._report-expanded"><a name="L1211"></a><tt class="py-lineno">1211</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">message</tt><tt class="py-op">.</tt><tt class="py-name">endswith</tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class [...]
+<a name="L1212"></a><tt class="py-lineno">1212</tt>  <tt class="py-line">         </tt>
+<a name="L1213"></a><tt class="py-lineno">1213</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_message_blocks</tt><tt class="py-op">:</tt> </tt>
+<a name="L1214"></a><tt class="py-lineno">1214</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_message_blocks</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">message</tt><tt [...]
+<a name="L1215"></a><tt class="py-lineno">1215</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1216"></a><tt class="py-lineno">1216</tt>  <tt class="py-line">            <tt class="py-comment"># If we're in the middle of displaying a progress bar,</tt> </tt>
+<a name="L1217"></a><tt class="py-lineno">1217</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># then make room for the message.</tt> </tt>
+<a name="L1218"></a><tt class="py-lineno">1218</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_progress_mode</tt> <tt class="py-op">==</tt> <tt class="py-string">'simple-bar'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1219"></a><tt class="py-lineno">1219</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_progress</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1220"></a><tt class="py-lineno">1220</tt>  <tt class="py-line">                    <tt class="py-keyword">print</tt> </tt>
+<a name="L1221"></a><tt class="py-lineno">1221</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_progress</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L1222"></a><tt class="py-lineno">1222</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_progress_mode</tt> <tt class="py-op">==</tt> <tt class="py-string">'bar'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1223"></a><tt class="py-lineno">1223</tt>  <tt class="py-line">                <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">stdout</tt><tt class="py-op">.</tt><tt id="link-409" class="py-name"><a title="epydoc.docintrospecter._DevNull.write
+epydoc.docwriter.dotgraph.DotGraph.write
+epydoc.docwriter.html.HTMLWriter.write
+epydoc.docwriter.latex.LatexWriter.write
+epydoc.docwriter.plaintext.PlaintextWriter.write" class="py-name" href="#" onclick="return doclink('link-409', 'write', 'link-231');">write</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">term</tt><tt class="py-op">.</tt><tt id="link-410" class="py-name"><a title="epydoc.cli.TerminalController.CLEAR_LINE" class="py-name" href="#" onclick="return doclink('link-410', 'CLEAR_LINE', 'link-323');">CLEAR_LINE</a></tt><tt class="py-op">)< [...]
+<a name="L1224"></a><tt class="py-lineno">1224</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_progress_mode</tt> <tt class="py-op">==</tt> <tt class="py-string">'multiline-bar'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1225"></a><tt class="py-lineno">1225</tt>  <tt class="py-line">                <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">stdout</tt><tt class="py-op">.</tt><tt id="link-411" class="py-name"><a title="epydoc.docintrospecter._DevNull.write
+epydoc.docwriter.dotgraph.DotGraph.write
+epydoc.docwriter.html.HTMLWriter.write
+epydoc.docwriter.latex.LatexWriter.write
+epydoc.docwriter.plaintext.PlaintextWriter.write" class="py-name" href="#" onclick="return doclink('link-411', 'write', 'link-231');">write</a></tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">term</tt><tt class="py-op">.</tt><tt id="link-412" class="py-name"><a title="epydoc.cli.TerminalController.CLEAR_EOL" class="py-name" href="#" onclick="return doclink('link-412', 'CLEAR_EOL', 'link-322');">CLEAR_EOL</a></tt [...]
+<a name="L1226"></a><tt class="py-lineno">1226</tt>  <tt class="py-line">                                 <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">term</tt><tt class="py-op">.</tt><tt id="link-413" class="py-name"><a title="epydoc.cli.TerminalController.CLEAR_EOL" class="py-name" href="#" onclick="return doclink('link-413', 'CLEAR_EOL', 'link-322');">CLEAR_EOL</a></tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class= [...]
+<a name="L1227"></a><tt class="py-lineno">1227</tt>  <tt class="py-line"> </tt>
+<a name="L1228"></a><tt class="py-lineno">1228</tt>  <tt class="py-line">            <tt class="py-comment"># Display the message message.</tt> </tt>
+<a name="L1229"></a><tt class="py-lineno">1229</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">stdout</tt><tt class="py-op">.</tt><tt id="link-415" class="py-name"><a title="epydoc.docintrospecter._DevNull.write
+epydoc.docwriter.dotgraph.DotGraph.write
+epydoc.docwriter.html.HTMLWriter.write
+epydoc.docwriter.latex.LatexWriter.write
+epydoc.docwriter.plaintext.PlaintextWriter.write" class="py-name" href="#" onclick="return doclink('link-415', 'write', 'link-231');">write</a></tt><tt class="py-op">(</tt><tt class="py-name">message</tt><tt class="py-op">)</tt> </tt>
+<a name="L1230"></a><tt class="py-lineno">1230</tt>  <tt class="py-line">            <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">stdout</tt><tt class="py-op">.</tt><tt id="link-416" class="py-name" targets="Method epydoc.docintrospecter._DevNull.flush()=epydoc.docintrospecter._DevNull-class.html#flush"><a title="epydoc.docintrospecter._DevNull.flush" class="py-name" href="#" onclick="return doclink('link-416', 'flush', 'link-416');">flush</a></tt><tt class="py [...]
+</div><a name="L1231"></a><tt class="py-lineno">1231</tt>  <tt class="py-line">                 </tt>
+<a name="ConsoleLogger.progress"></a><div id="ConsoleLogger.progress-def"><a name="L1232"></a><tt class="py-lineno">1232</tt> <a class="py-toggle" href="#" id="ConsoleLogger.progress-toggle" onclick="return toggle('ConsoleLogger.progress');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.cli.ConsoleLogger-class.html#progress">progress</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">pe [...]
+</div><div id="ConsoleLogger.progress-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ConsoleLogger.progress-expanded"><a name="L1233"></a><tt class="py-lineno">1233</tt>  <tt class="py-line">        <tt class="py-name">percent</tt> <tt class="py-op">=</tt> <tt class="py-name">min</tt><tt class="py-op">(</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt> <tt class="py-name">percent</tt><tt class="py-op">)</tt> </tt>
+<a name="L1234"></a><tt class="py-lineno">1234</tt>  <tt class="py-line">        <tt class="py-name">message</tt> <tt class="py-op">=</tt> <tt class="py-string">'%s'</tt> <tt class="py-op">%</tt> <tt class="py-name">message</tt> </tt>
+<a name="L1235"></a><tt class="py-lineno">1235</tt>  <tt class="py-line">         </tt>
+<a name="L1236"></a><tt class="py-lineno">1236</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_progress_mode</tt> <tt class="py-op">==</tt> <tt class="py-string">'list'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1237"></a><tt class="py-lineno">1237</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">message</tt><tt class="py-op">:</tt> </tt>
+<a name="L1238"></a><tt class="py-lineno">1238</tt>  <tt class="py-line">                <tt class="py-keyword">print</tt> <tt class="py-string">'[%3d%%] %s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-number">100</tt><tt class="py-op">*</tt><tt class="py-name">percent</tt><tt class="py-op">,</tt> <tt class="py-name">message</tt><tt class="py-op">)</tt> </tt>
+<a name="L1239"></a><tt class="py-lineno">1239</tt>  <tt class="py-line">                <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">stdout</tt><tt class="py-op">.</tt><tt id="link-417" class="py-name"><a title="epydoc.docintrospecter._DevNull.flush" class="py-name" href="#" onclick="return doclink('link-417', 'flush', 'link-416');">flush</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1240"></a><tt class="py-lineno">1240</tt>  <tt class="py-line">                 </tt>
+<a name="L1241"></a><tt class="py-lineno">1241</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_progress_mode</tt> <tt class="py-op">==</tt> <tt class="py-string">'bar'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1242"></a><tt class="py-lineno">1242</tt>  <tt class="py-line">            <tt class="py-name">dots</tt> <tt class="py-op">=</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">term</tt><tt class="py-op">.</tt><tt id="link-418" class="py-name"><a title="epydoc.cli.TerminalController.COLS" class="py-name" href="#" onclick="return doclink('link-418', 'COLS', 'link-326');">COLS</a [...]
+<a name="L1243"></a><tt class="py-lineno">1243</tt>  <tt class="py-line">            <tt class="py-name">background</tt> <tt class="py-op">=</tt> <tt class="py-string">'-'</tt><tt class="py-op">*</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">term</tt><tt class="py-op">.</tt><tt id="link-419" class="py-name"><a title="epydoc.cli.TerminalController.COLS" class="py-name" href="#" onclick="return doclink('link-419', 'COLS', 'link-326');" [...]
+<a name="L1244"></a><tt class="py-lineno">1244</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">message</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">term</tt><tt class="py-op">.</tt><tt id="link-420" class="py-name"><a title="epydoc.cli.TerminalController.COLS" class="py-name" href="#" onclick="return doclink('lin [...]
+<a name="L1245"></a><tt class="py-lineno">1245</tt>  <tt class="py-line">                <tt class="py-name">message</tt> <tt class="py-op">=</tt> <tt class="py-name">message</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">term</tt><tt class="py-op">.</tt><tt id="link-421" class="py-name"><a title="epydoc.cli.TerminalController.COLS" class="py-name" href="#" onclick="return doclink('link-421', 'COLS', 'link-326' [...]
+<a name="L1246"></a><tt class="py-lineno">1246</tt>  <tt class="py-line">            <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">stdout</tt><tt class="py-op">.</tt><tt id="link-422" class="py-name"><a title="epydoc.docintrospecter._DevNull.write
+epydoc.docwriter.dotgraph.DotGraph.write
+epydoc.docwriter.html.HTMLWriter.write
+epydoc.docwriter.latex.LatexWriter.write
+epydoc.docwriter.plaintext.PlaintextWriter.write" class="py-name" href="#" onclick="return doclink('link-422', 'write', 'link-231');">write</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">term</tt><tt class="py-op">.</tt><tt id="link-423" class="py-name"><a title="epydoc.cli.TerminalController.CLEAR_LINE" class="py-name" href="#" onclick="return doclink('link-423', 'CLEAR_LINE', 'link-323');">CLEAR_LINE</a></tt> <tt class="py-op">+ [...]
+<a name="L1247"></a><tt class="py-lineno">1247</tt>  <tt class="py-line">                             <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">term</tt><tt class="py-op">.</tt><tt id="link-424" class="py-name"><a title="epydoc.cli.TerminalController.GREEN" class="py-name" href="#" onclick="return doclink('link-424', 'GREEN', 'link-329');">GREEN</a></tt> <tt class="py-op">+</tt> <tt class="py-string">'['</tt> <tt class="py-op">+</tt> <tt class="py-name">sel [...]
+<a name="L1248"></a><tt class="py-lineno">1248</tt>  <tt class="py-line">                             <tt class="py-string">'='</tt><tt class="py-op">*</tt><tt class="py-name">dots</tt> <tt class="py-op">+</tt> <tt class="py-name">background</tt><tt class="py-op">[</tt><tt class="py-name">dots</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">term</tt><tt class="py-op">.</tt><tt id="link- [...]
+<a name="L1249"></a><tt class="py-lineno">1249</tt>  <tt class="py-line">                             <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">term</tt><tt class="py-op">.</tt><tt id="link-427" class="py-name"><a title="epydoc.cli.TerminalController.GREEN" class="py-name" href="#" onclick="return doclink('link-427', 'GREEN', 'link-329');">GREEN</a></tt> <tt class="py-op">+</tt> <tt class="py-string">'] '</tt> <tt class="py-op">+</tt> <tt class="py-name">se [...]
+<a name="L1250"></a><tt class="py-lineno">1250</tt>  <tt class="py-line">                             <tt class="py-name">message</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">term</tt><tt class="py-op">.</tt><tt id="link-429" class="py-name"><a title="epydoc.cli.TerminalController.BOL" class="py-name" href="#" onclick="return doclink('link-429', 'BOL', 'link-317');">BOL</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1251"></a><tt class="py-lineno">1251</tt>  <tt class="py-line">            <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">stdout</tt><tt class="py-op">.</tt><tt id="link-430" class="py-name"><a title="epydoc.docintrospecter._DevNull.flush" class="py-name" href="#" onclick="return doclink('link-430', 'flush', 'link-416');">flush</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1252"></a><tt class="py-lineno">1252</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_progress</tt> <tt class="py-op">=</tt> <tt class="py-name">percent</tt> </tt>
+<a name="L1253"></a><tt class="py-lineno">1253</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_progress_mode</tt> <tt class="py-op">==</tt> <tt class="py-string">'multiline-bar'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1254"></a><tt class="py-lineno">1254</tt>  <tt class="py-line">            <tt class="py-name">dots</tt> <tt class="py-op">=</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">term</tt><tt class="py-op">.</tt><tt id="link-431" class="py-name"><a title="epydoc.cli.TerminalController.COLS" class="py-name" href="#" onclick="return doclink('link-431', 'COLS', 'link-326');">COLS</a [...]
+<a name="L1255"></a><tt class="py-lineno">1255</tt>  <tt class="py-line">            <tt class="py-name">background</tt> <tt class="py-op">=</tt> <tt class="py-string">'-'</tt><tt class="py-op">*</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">term</tt><tt class="py-op">.</tt><tt id="link-432" class="py-name"><a title="epydoc.cli.TerminalController.COLS" class="py-name" href="#" onclick="return doclink('link-432', 'COLS', 'link-326');" [...]
+<a name="L1256"></a><tt class="py-lineno">1256</tt>  <tt class="py-line">             </tt>
+<a name="L1257"></a><tt class="py-lineno">1257</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">message</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">term</tt><tt class="py-op">.</tt><tt id="link-433" class="py-name"><a title="epydoc.cli.TerminalController.COLS" class="py-name" href="#" onclick="return doclink('lin [...]
+<a name="L1258"></a><tt class="py-lineno">1258</tt>  <tt class="py-line">                <tt class="py-name">message</tt> <tt class="py-op">=</tt> <tt class="py-name">message</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">term</tt><tt class="py-op">.</tt><tt id="link-434" class="py-name"><a title="epydoc.cli.TerminalController.COLS" class="py-name" href="#" onclick="return doclink('link-434', 'COLS', 'link-326' [...]
+<a name="L1259"></a><tt class="py-lineno">1259</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1260"></a><tt class="py-lineno">1260</tt>  <tt class="py-line">                <tt class="py-name">message</tt> <tt class="py-op">=</tt> <tt class="py-name">message</tt><tt class="py-op">.</tt><tt class="py-name">center</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">term</tt><tt class="py-op">.</tt><tt id="link-435" class="py-name"><a title="epydoc.cli.TerminalController.COLS" class="py-name" href="#" onclick="return doclink [...]
+<a name="L1261"></a><tt class="py-lineno">1261</tt>  <tt class="py-line"> </tt>
+<a name="L1262"></a><tt class="py-lineno">1262</tt>  <tt class="py-line">            <tt class="py-name">time_elapsed</tt> <tt class="py-op">=</tt> <tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py-name">time</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">-</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_progress_start_time</tt> </tt>
+<a name="L1263"></a><tt class="py-lineno">1263</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">percent</tt> <tt class="py-op">></tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L1264"></a><tt class="py-lineno">1264</tt>  <tt class="py-line">                <tt class="py-name">time_remain</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">time_elapsed</tt> <tt class="py-op">/</tt> <tt class="py-name">percent</tt><tt class="py-op">)</tt> <tt class="py-op">*</tt> <tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">-</tt><tt class="py-name">percent</tt><tt class="py-op">)</tt> </tt>
+<a name="L1265"></a><tt class="py-lineno">1265</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1266"></a><tt class="py-lineno">1266</tt>  <tt class="py-line">                <tt class="py-name">time_remain</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L1267"></a><tt class="py-lineno">1267</tt>  <tt class="py-line"> </tt>
+<a name="L1268"></a><tt class="py-lineno">1268</tt>  <tt class="py-line">            <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">stdout</tt><tt class="py-op">.</tt><tt id="link-436" class="py-name"><a title="epydoc.docintrospecter._DevNull.write
+epydoc.docwriter.dotgraph.DotGraph.write
+epydoc.docwriter.html.HTMLWriter.write
+epydoc.docwriter.latex.LatexWriter.write
+epydoc.docwriter.plaintext.PlaintextWriter.write" class="py-name" href="#" onclick="return doclink('link-436', 'write', 'link-231');">write</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L1269"></a><tt class="py-lineno">1269</tt>  <tt class="py-line">                <tt class="py-comment"># Line 1:</tt> </tt>
+<a name="L1270"></a><tt class="py-lineno">1270</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">term</tt><tt class="py-op">.</tt><tt id="link-437" class="py-name"><a title="epydoc.cli.TerminalController.CLEAR_EOL" class="py-name" href="#" onclick="return doclink('link-437', 'CLEAR_EOL', 'link-322');">CLEAR_EOL</a></tt> <tt class="py-op">+</tt> <tt class="py-string">'      '</tt> <tt class="py-op">+</tt> </tt>
+<a name="L1271"></a><tt class="py-lineno">1271</tt>  <tt class="py-line">                <tt class="py-string">'%-8s'</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-438" class="py-name" targets="Method epydoc.cli.ConsoleLogger._timestr()=epydoc.cli.ConsoleLogger-class.html#_timestr"><a title="epydoc.cli.ConsoleLogger._timestr" class="py-name" href="#" onclick="return doclink('link-438', '_timestr', 'link-438');">_timestr</a></tt><tt class= [...]
+<a name="L1272"></a><tt class="py-lineno">1272</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">term</tt><tt class="py-op">.</tt><tt id="link-439" class="py-name"><a title="epydoc.cli.TerminalController.BOLD" class="py-name" href="#" onclick="return doclink('link-439', 'BOLD', 'link-324');">BOLD</a></tt> <tt class="py-op">+</tt> <tt class="py-string">'Progress:'</tt><tt class="py-op">.</tt><tt class="py-name">center</tt><t [...]
+<a name="L1273"></a><tt class="py-lineno">1273</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">term</tt><tt class="py-op">.</tt><tt id="link-441" class="py-name"><a title="epydoc.cli.TerminalController.NORMAL" class="py-name" href="#" onclick="return doclink('link-441', 'NORMAL', 'link-325');">NORMAL</a></tt> <tt class="py-op">+</tt> <tt class="py-string">'%8s'</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><t [...]
+<a name="L1274"></a><tt class="py-lineno">1274</tt>  <tt class="py-line">                <tt class="py-comment"># Line 2:</tt> </tt>
+<a name="L1275"></a><tt class="py-lineno">1275</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">term</tt><tt class="py-op">.</tt><tt id="link-443" class="py-name"><a title="epydoc.cli.TerminalController.CLEAR_EOL" class="py-name" href="#" onclick="return doclink('link-443', 'CLEAR_EOL', 'link-322');">CLEAR_EOL</a></tt> <tt class="py-op">+</tt> <tt class="py-op">(</tt><tt class="py-string">'%3d%% '</tt> <tt class="py-op">%< [...]
+<a name="L1276"></a><tt class="py-lineno">1276</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">term</tt><tt class="py-op">.</tt><tt id="link-444" class="py-name"><a title="epydoc.cli.TerminalController.GREEN" class="py-name" href="#" onclick="return doclink('link-444', 'GREEN', 'link-329');">GREEN</a></tt> <tt class="py-op">+</tt> <tt class="py-string">'['</tt> <tt class="py-op">+</tt>  <tt class="py-name">self</tt><tt cl [...]
+<a name="L1277"></a><tt class="py-lineno">1277</tt>  <tt class="py-line">                <tt class="py-name">background</tt><tt class="py-op">[</tt><tt class="py-name">dots</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">term</tt><tt class="py-op">.</tt><tt id="link-446" class="py-name"><a title="epydoc.cli.TerminalController.NORMAL" class="py-name" href="#" onclick="return doclink('lin [...]
+<a name="L1278"></a><tt class="py-lineno">1278</tt>  <tt class="py-line">                <tt class="py-string">']'</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">term</tt><tt class="py-op">.</tt><tt id="link-448" class="py-name"><a title="epydoc.cli.TerminalController.NORMAL" class="py-name" href="#" onclick="return doclink('link-448', 'NORMAL', 'link-325');">NORMAL</a></tt> <tt class="py-op">+</tt> <tt class="py-string">'\n'</tt> < [...]
+<a name="L1279"></a><tt class="py-lineno">1279</tt>  <tt class="py-line">                <tt class="py-comment"># Line 3:</tt> </tt>
+<a name="L1280"></a><tt class="py-lineno">1280</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">term</tt><tt class="py-op">.</tt><tt id="link-449" class="py-name"><a title="epydoc.cli.TerminalController.CLEAR_EOL" class="py-name" href="#" onclick="return doclink('link-449', 'CLEAR_EOL', 'link-322');">CLEAR_EOL</a></tt> <tt class="py-op">+</tt> <tt class="py-string">'      '</tt> <tt class="py-op">+</tt> <tt class="py-name" [...]
+<a name="L1281"></a><tt class="py-lineno">1281</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">term</tt><tt class="py-op">.</tt><tt id="link-451" class="py-name"><a title="epydoc.cli.TerminalController.UP" class="py-name" href="#" onclick="return doclink('link-451', 'UP', 'link-318');">UP</a></tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">term</tt><tt class="py-op">. [...]
+<a name="L1282"></a><tt class="py-lineno">1282</tt>  <tt class="py-line">             </tt>
+<a name="L1283"></a><tt class="py-lineno">1283</tt>  <tt class="py-line">            <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">stdout</tt><tt class="py-op">.</tt><tt id="link-453" class="py-name"><a title="epydoc.docintrospecter._DevNull.flush" class="py-name" href="#" onclick="return doclink('link-453', 'flush', 'link-416');">flush</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1284"></a><tt class="py-lineno">1284</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_progress</tt> <tt class="py-op">=</tt> <tt class="py-name">percent</tt> </tt>
+<a name="L1285"></a><tt class="py-lineno">1285</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_progress_mode</tt> <tt class="py-op">==</tt> <tt class="py-string">'simple-bar'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1286"></a><tt class="py-lineno">1286</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_progress</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1287"></a><tt class="py-lineno">1287</tt>  <tt class="py-line">                <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">stdout</tt><tt class="py-op">.</tt><tt id="link-454" class="py-name"><a title="epydoc.docintrospecter._DevNull.write
+epydoc.docwriter.dotgraph.DotGraph.write
+epydoc.docwriter.html.HTMLWriter.write
+epydoc.docwriter.latex.LatexWriter.write
+epydoc.docwriter.plaintext.PlaintextWriter.write" class="py-name" href="#" onclick="return doclink('link-454', 'write', 'link-231');">write</a></tt><tt class="py-op">(</tt><tt class="py-string">'  ['</tt><tt class="py-op">)</tt> </tt>
+<a name="L1288"></a><tt class="py-lineno">1288</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_progress</tt> <tt class="py-op">=</tt> <tt class="py-number">0.0</tt> </tt>
+<a name="L1289"></a><tt class="py-lineno">1289</tt>  <tt class="py-line">            <tt class="py-name">dots</tt> <tt class="py-op">=</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">term</tt><tt class="py-op">.</tt><tt id="link-455" class="py-name"><a title="epydoc.cli.TerminalController.COLS" class="py-name" href="#" onclick="return doclink('link-455', 'COLS', 'link-326');">COLS</a [...]
+<a name="L1290"></a><tt class="py-lineno">1290</tt>  <tt class="py-line">            <tt class="py-name">progress_dots</tt> <tt class="py-op">=</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">term</tt><tt class="py-op">.</tt><tt id="link-456" class="py-name"><a title="epydoc.cli.TerminalController.COLS" class="py-name" href="#" onclick="return doclink('link-456', 'COLS', 'link-326'); [...]
+<a name="L1291"></a><tt class="py-lineno">1291</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">dots</tt> <tt class="py-op">></tt> <tt class="py-name">progress_dots</tt><tt class="py-op">:</tt> </tt>
+<a name="L1292"></a><tt class="py-lineno">1292</tt>  <tt class="py-line">                <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">stdout</tt><tt class="py-op">.</tt><tt id="link-457" class="py-name"><a title="epydoc.docintrospecter._DevNull.write
+epydoc.docwriter.dotgraph.DotGraph.write
+epydoc.docwriter.html.HTMLWriter.write
+epydoc.docwriter.latex.LatexWriter.write
+epydoc.docwriter.plaintext.PlaintextWriter.write" class="py-name" href="#" onclick="return doclink('link-457', 'write', 'link-231');">write</a></tt><tt class="py-op">(</tt><tt class="py-string">'.'</tt><tt class="py-op">*</tt><tt class="py-op">(</tt><tt class="py-name">dots</tt><tt class="py-op">-</tt><tt class="py-name">progress_dots</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1293"></a><tt class="py-lineno">1293</tt>  <tt class="py-line">                <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">stdout</tt><tt class="py-op">.</tt><tt id="link-458" class="py-name"><a title="epydoc.docintrospecter._DevNull.flush" class="py-name" href="#" onclick="return doclink('link-458', 'flush', 'link-416');">flush</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1294"></a><tt class="py-lineno">1294</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_progress</tt> <tt class="py-op">=</tt> <tt class="py-name">percent</tt> </tt>
+</div><a name="L1295"></a><tt class="py-lineno">1295</tt>  <tt class="py-line"> </tt>
+<a name="ConsoleLogger._timestr"></a><div id="ConsoleLogger._timestr-def"><a name="L1296"></a><tt class="py-lineno">1296</tt> <a class="py-toggle" href="#" id="ConsoleLogger._timestr-toggle" onclick="return toggle('ConsoleLogger._timestr');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.cli.ConsoleLogger-class.html#_timestr">_timestr</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">dt [...]
+</div><div id="ConsoleLogger._timestr-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ConsoleLogger._timestr-expanded"><a name="L1297"></a><tt class="py-lineno">1297</tt>  <tt class="py-line">        <tt class="py-name">dt</tt> <tt class="py-op">=</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">dt</tt><tt class="py-op">)</tt> </tt>
+<a name="L1298"></a><tt class="py-lineno">1298</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">dt</tt> <tt class="py-op">>=</tt> <tt class="py-number">3600</tt><tt class="py-op">:</tt> </tt>
+<a name="L1299"></a><tt class="py-lineno">1299</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">'%d:%02d:%02d'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">dt</tt><tt class="py-op">/</tt><tt class="py-number">3600</tt><tt class="py-op">,</tt> <tt class="py-name">dt</tt><tt class="py-op">%</tt><tt class="py-number">3600</tt><tt class="py-op">/</tt><tt class="py-number">60</tt><tt class="py-op">,</tt> <tt class="py- [...]
+<a name="L1300"></a><tt class="py-lineno">1300</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1301"></a><tt class="py-lineno">1301</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">'%02d:%02d'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">dt</tt><tt class="py-op">/</tt><tt class="py-number">60</tt><tt class="py-op">,</tt> <tt class="py-name">dt</tt><tt class="py-op">%</tt><tt class="py-number">60</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1302"></a><tt class="py-lineno">1302</tt>  <tt class="py-line"> </tt>
+<a name="ConsoleLogger.start_progress"></a><div id="ConsoleLogger.start_progress-def"><a name="L1303"></a><tt class="py-lineno">1303</tt> <a class="py-toggle" href="#" id="ConsoleLogger.start_progress-toggle" onclick="return toggle('ConsoleLogger.start_progress');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.cli.ConsoleLogger-class.html#start_progress">start_progress</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="p [...]
+</div><div id="ConsoleLogger.start_progress-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ConsoleLogger.start_progress-expanded"><a name="L1304"></a><tt class="py-lineno">1304</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_progress</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1305"></a><tt class="py-lineno">1305</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt> </tt>
+<a name="L1306"></a><tt class="py-lineno">1306</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_progress</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L1307"></a><tt class="py-lineno">1307</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_progress_start_time</tt> <tt class="py-op">=</tt> <tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py-name">time</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1308"></a><tt class="py-lineno">1308</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_progress_header</tt> <tt class="py-op">=</tt> <tt class="py-name">header</tt> </tt>
+<a name="L1309"></a><tt class="py-lineno">1309</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_progress_mode</tt> <tt class="py-op">!=</tt> <tt class="py-string">'hide'</tt> <tt class="py-keyword">and</tt> <tt class="py-name">header</tt><tt class="py-op">:</tt> </tt>
+<a name="L1310"></a><tt class="py-lineno">1310</tt>  <tt class="py-line">            <tt class="py-keyword">print</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">term</tt><tt class="py-op">.</tt><tt id="link-459" class="py-name"><a title="epydoc.cli.TerminalController.BOLD" class="py-name" href="#" onclick="return doclink('link-459', 'BOLD', 'link-324');">BOLD</a></tt> <tt class="py-op">+</tt> <tt class="py-name">header</tt> <tt class="py-op">+</tt> <tt clas [...]
+</div><a name="L1311"></a><tt class="py-lineno">1311</tt>  <tt class="py-line"> </tt>
+<a name="ConsoleLogger.end_progress"></a><div id="ConsoleLogger.end_progress-def"><a name="L1312"></a><tt class="py-lineno">1312</tt> <a class="py-toggle" href="#" id="ConsoleLogger.end_progress-toggle" onclick="return toggle('ConsoleLogger.end_progress');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.cli.ConsoleLogger-class.html#end_progress">end_progress</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt> [...]
+</div><div id="ConsoleLogger.end_progress-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ConsoleLogger.end_progress-expanded"><a name="L1313"></a><tt class="py-lineno">1313</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-461" class="py-name"><a title="epydoc.cli.ConsoleLogger.progress
+epydoc.cli.UnifiedProgressConsoleLogger.progress
+epydoc.docbuilder._ProgressEstimator.progress
+epydoc.gui.GUILogger.progress
+epydoc.log.Logger.progress
+epydoc.log.progress" class="py-name" href="#" onclick="return doclink('link-461', 'progress', 'link-193');">progress</a></tt><tt class="py-op">(</tt><tt class="py-number">1.</tt><tt class="py-op">)</tt> </tt>
+<a name="L1314"></a><tt class="py-lineno">1314</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_progress_mode</tt> <tt class="py-op">==</tt> <tt class="py-string">'bar'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1315"></a><tt class="py-lineno">1315</tt>  <tt class="py-line">            <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">stdout</tt><tt class="py-op">.</tt><tt id="link-462" class="py-name"><a title="epydoc.docintrospecter._DevNull.write
+epydoc.docwriter.dotgraph.DotGraph.write
+epydoc.docwriter.html.HTMLWriter.write
+epydoc.docwriter.latex.LatexWriter.write
+epydoc.docwriter.plaintext.PlaintextWriter.write" class="py-name" href="#" onclick="return doclink('link-462', 'write', 'link-231');">write</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">term</tt><tt class="py-op">.</tt><tt id="link-463" class="py-name"><a title="epydoc.cli.TerminalController.CLEAR_LINE" class="py-name" href="#" onclick="return doclink('link-463', 'CLEAR_LINE', 'link-323');">CLEAR_LINE</a></tt><tt class="py-op">)< [...]
+<a name="L1316"></a><tt class="py-lineno">1316</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_progress_mode</tt> <tt class="py-op">==</tt> <tt class="py-string">'multiline-bar'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1317"></a><tt class="py-lineno">1317</tt>  <tt class="py-line">                <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">stdout</tt><tt class="py-op">.</tt><tt id="link-464" class="py-name"><a title="epydoc.docintrospecter._DevNull.write
+epydoc.docwriter.dotgraph.DotGraph.write
+epydoc.docwriter.html.HTMLWriter.write
+epydoc.docwriter.latex.LatexWriter.write
+epydoc.docwriter.plaintext.PlaintextWriter.write" class="py-name" href="#" onclick="return doclink('link-464', 'write', 'link-231');">write</a></tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">term</tt><tt class="py-op">.</tt><tt id="link-465" class="py-name"><a title="epydoc.cli.TerminalController.CLEAR_EOL" class="py-name" href="#" onclick="return doclink('link-465', 'CLEAR_EOL', 'link-322');">CLEAR_EOL</a></tt [...]
+<a name="L1318"></a><tt class="py-lineno">1318</tt>  <tt class="py-line">                                 <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">term</tt><tt class="py-op">.</tt><tt id="link-466" class="py-name"><a title="epydoc.cli.TerminalController.CLEAR_EOL" class="py-name" href="#" onclick="return doclink('link-466', 'CLEAR_EOL', 'link-322');">CLEAR_EOL</a></tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class= [...]
+<a name="L1319"></a><tt class="py-lineno">1319</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_progress_mode</tt> <tt class="py-op">==</tt> <tt class="py-string">'simple-bar'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1320"></a><tt class="py-lineno">1320</tt>  <tt class="py-line">            <tt class="py-keyword">print</tt> <tt class="py-string">']'</tt> </tt>
+<a name="L1321"></a><tt class="py-lineno">1321</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_progress</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L1322"></a><tt class="py-lineno">1322</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_task_times</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt> <tt class="py-op">(</tt><tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py-name">time</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">-</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class=" [...]
+<a name="L1323"></a><tt class="py-lineno">1323</tt>  <tt class="py-line">                                  <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_progress_header</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt> </tt>
+</div><a name="L1324"></a><tt class="py-lineno">1324</tt>  <tt class="py-line"> </tt>
+<a name="ConsoleLogger.print_times"></a><div id="ConsoleLogger.print_times-def"><a name="L1325"></a><tt class="py-lineno">1325</tt> <a class="py-toggle" href="#" id="ConsoleLogger.print_times-toggle" onclick="return toggle('ConsoleLogger.print_times');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.cli.ConsoleLogger-class.html#print_times">print_times</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt cl [...]
+</div><div id="ConsoleLogger.print_times-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ConsoleLogger.print_times-expanded"><a name="L1326"></a><tt class="py-lineno">1326</tt>  <tt class="py-line">        <tt class="py-keyword">print</tt> </tt>
+<a name="L1327"></a><tt class="py-lineno">1327</tt>  <tt class="py-line">        <tt class="py-keyword">print</tt> <tt class="py-string">'Timing summary:'</tt> </tt>
+<a name="L1328"></a><tt class="py-lineno">1328</tt>  <tt class="py-line">        <tt class="py-name">total</tt> <tt class="py-op">=</tt> <tt class="py-name">sum</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">time</tt> <tt class="py-keyword">for</tt> <tt class="py-op">(</tt><tt class="py-name">time</tt><tt class="py-op">,</tt> <tt class="py-name">task</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt>< [...]
+<a name="L1329"></a><tt class="py-lineno">1329</tt>  <tt class="py-line">        <tt class="py-name">max_t</tt> <tt class="py-op">=</tt> <tt class="py-name">max</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">time</tt> <tt class="py-keyword">for</tt> <tt class="py-op">(</tt><tt class="py-name">time</tt><tt class="py-op">,</tt> <tt class="py-name">task</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt>< [...]
+<a name="L1330"></a><tt class="py-lineno">1330</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-op">(</tt><tt class="py-name">time</tt><tt class="py-op">,</tt> <tt class="py-name">task</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_task_times</tt><tt class="py-op">:</tt> </tt>
+<a name="L1331"></a><tt class="py-lineno">1331</tt>  <tt class="py-line">            <tt class="py-name">task</tt> <tt class="py-op">=</tt> <tt class="py-name">task</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-number">31</tt><tt class="py-op">]</tt> </tt>
+<a name="L1332"></a><tt class="py-lineno">1332</tt>  <tt class="py-line">            <tt class="py-keyword">print</tt> <tt class="py-string">'  %s%s %7.1fs'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">task</tt><tt class="py-op">,</tt> <tt class="py-string">'.'</tt><tt class="py-op">*</tt><tt class="py-op">(</tt><tt class="py-number">35</tt><tt class="py-op">-</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">task</tt><tt class="py-o [...]
+<a name="L1333"></a><tt class="py-lineno">1333</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">term</tt><tt class="py-op">.</tt><tt id="link-468" class="py-name"><a title="epydoc.cli.TerminalController.COLS" class="py-name" href="#" onclick="return doclink('link-468', 'COLS', 'link-326');">COLS</a></tt> <tt class="py-op">></tt> <tt class="py-number">55</tt><tt class="py-op">:</tt> </tt>
+<a name="L1334"></a><tt class="py-lineno">1334</tt>  <tt class="py-line">                <tt class="py-keyword">print</tt> <tt class="py-string">'|'</tt><tt class="py-op">+</tt><tt class="py-string">'='</tt> <tt class="py-op">*</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">term</tt><tt class="py-op">.</tt><tt id="link-469" class="py-name"><a title="epydoc.cli.TerminalController.COL [...]
+<a name="L1335"></a><tt class="py-lineno">1335</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1336"></a><tt class="py-lineno">1336</tt>  <tt class="py-line">                <tt class="py-keyword">print</tt> </tt>
+<a name="L1337"></a><tt class="py-lineno">1337</tt>  <tt class="py-line">        <tt class="py-keyword">print</tt> </tt>
+</div></div><a name="L1338"></a><tt class="py-lineno">1338</tt>  <tt class="py-line"> </tt>
+<a name="UnifiedProgressConsoleLogger"></a><div id="UnifiedProgressConsoleLogger-def"><a name="L1339"></a><tt class="py-lineno">1339</tt> <a class="py-toggle" href="#" id="UnifiedProgressConsoleLogger-toggle" onclick="return toggle('UnifiedProgressConsoleLogger');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="epydoc.cli.UnifiedProgressConsoleLogger-class.html">UnifiedProgressConsoleLogger</a><tt class="py-op">(</tt><tt class="py-base-class">Cons [...]
+</div><div id="UnifiedProgressConsoleLogger-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="UnifiedProgressConsoleLogger-expanded"><a name="UnifiedProgressConsoleLogger.__init__"></a><div id="UnifiedProgressConsoleLogger.__init__-def"><a name="L1340"></a><tt class="py-lineno">1340</tt> <a class="py-toggle" href="#" id="UnifiedProgressConsoleLogger.__init__-toggle" onclick="return toggle('UnifiedProgressConsoleLogger.__init__');">-</a><tt class="py-line">    <tt c [...]
+</div><div id="UnifiedProgressConsoleLogger.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="UnifiedProgressConsoleLogger.__init__-expanded"><a name="L1341"></a><tt class="py-lineno">1341</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stage</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L1342"></a><tt class="py-lineno">1342</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stages</tt> <tt class="py-op">=</tt> <tt class="py-name">stages</tt> </tt>
+<a name="L1343"></a><tt class="py-lineno">1343</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">task</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L1344"></a><tt class="py-lineno">1344</tt>  <tt class="py-line">        <tt id="link-470" class="py-name"><a title="epydoc.cli.ConsoleLogger" class="py-name" href="#" onclick="return doclink('link-470', 'ConsoleLogger', 'link-138');">ConsoleLogger</a></tt><tt class="py-op">.</tt><tt id="link-471" class="py-name" targets="Method epydoc.apidoc.APIDoc.__init__()=epydoc.apidoc.APIDoc-class.html#__init__,Method epydoc.apidoc.DocIndex.__init__()=epydoc.apidoc.DocIndex-class.html#__ini [...]
+epydoc.apidoc.DocIndex.__init__
+epydoc.apidoc.DottedName.__init__
+epydoc.apidoc.NamespaceDoc.__init__
+epydoc.apidoc.VariableDoc.__init__
+epydoc.apidoc._Sentinel.__init__
+epydoc.checker.DocChecker.__init__
+epydoc.cli.ConsoleLogger.__init__
+epydoc.cli.HTMLLogger.__init__
+epydoc.cli.TerminalController.__init__
+epydoc.cli.UnifiedProgressConsoleLogger.__init__
+epydoc.docbuilder.BuildOptions.__init__
+epydoc.docbuilder._ProgressEstimator.__init__
+epydoc.docintrospecter._DevNull.__init__
+epydoc.docstringparser.DocstringField.__init__
+epydoc.docwriter.dotgraph.DotGraph.__init__
+epydoc.docwriter.dotgraph.DotGraphEdge.__init__
+epydoc.docwriter.dotgraph.DotGraphNode.__init__
+epydoc.docwriter.dotgraph.DotGraphUmlClassNode.__init__
+epydoc.docwriter.dotgraph.DotGraphUmlModuleNode.__init__
+epydoc.docwriter.html.HTMLWriter.__init__
+epydoc.docwriter.html._HTMLDocstringLinker.__init__
+epydoc.docwriter.html_colorize.PythonSourceColorizer.__init__
+epydoc.docwriter.latex.LatexWriter.__init__
+epydoc.docwriter.xlink.ApiLinkReader.__init__
+epydoc.docwriter.xlink.DocUrlGenerator.__init__
+epydoc.gui.EpydocGUI.__init__
+epydoc.gui.GUILogger.__init__
+epydoc.log.SimpleLogger.__init__
+epydoc.markup.ConcatenatedDocstring.__init__
+epydoc.markup.Field.__init__
+epydoc.markup.ParseError.__init__
+epydoc.markup.epytext.ColorizingError.__init__
+epydoc.markup.epytext.Element.__init__
+epydoc.markup.epytext.ParsedEpytextDocstring.__init__
+epydoc.markup.epytext.Token.__init__
+epydoc.markup.javadoc.ParsedJavadocDocstring.__init__
+epydoc.markup.plaintext.ParsedPlaintextDocstring.__init__
+epydoc.markup.pyval_repr.ColorizedPyvalRepr.__init__
+epydoc.markup.pyval_repr.PyvalColorizer.__init__
+epydoc.markup.pyval_repr._ColorizerState.__init__
+epydoc.markup.restructuredtext.ParsedRstDocstring.__init__
+epydoc.markup.restructuredtext._DocumentPseudoWriter.__init__
+epydoc.markup.restructuredtext._EpydocHTMLTranslator.__init__
+epydoc.markup.restructuredtext._EpydocLaTeXTranslator.__init__
+epydoc.markup.restructuredtext._EpydocReader.__init__
+epydoc.markup.restructuredtext._SplitFieldsTranslator.__init__
+epydoc.markup.restructuredtext._SummaryExtractor.__init__
+epydoc.markup.restructuredtext._TermsExtractor.__init__
+epydoc.markup.restructuredtext.dotgraph.__init__
+epydoc.util.RunSubprocessError.__init__" class="py-name" href="#" onclick="return doclink('link-471', '__init__', 'link-471');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">verbosity</tt><tt class="py-op">,</tt> <tt class="py-name">progress_mode</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1345"></a><tt class="py-lineno">1345</tt>  <tt class="py-line">         </tt>
+<a name="UnifiedProgressConsoleLogger.progress"></a><div id="UnifiedProgressConsoleLogger.progress-def"><a name="L1346"></a><tt class="py-lineno">1346</tt> <a class="py-toggle" href="#" id="UnifiedProgressConsoleLogger.progress-toggle" onclick="return toggle('UnifiedProgressConsoleLogger.progress');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.cli.UnifiedProgressConsoleLogger-class.html#progress">progress</a><tt class="py-op">(</tt><tt [...]
+</div><div id="UnifiedProgressConsoleLogger.progress-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="UnifiedProgressConsoleLogger.progress-expanded"><a name="L1347"></a><tt class="py-lineno">1347</tt>  <tt class="py-line">        <tt class="py-comment">#p = float(self.stage-1+percent)/self.stages</tt> </tt>
+<a name="L1348"></a><tt class="py-lineno">1348</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">i</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stage</tt><tt class="py-op">-</tt><tt class="py-number">1</tt> </tt>
+<a name="L1349"></a><tt class="py-lineno">1349</tt>  <tt class="py-line">        <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">sum</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stages</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-name">i</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-name">percent [...]
+<a name="L1350"></a><tt class="py-lineno">1350</tt>  <tt class="py-line">             <tt class="py-name">float</tt><tt class="py-op">(</tt><tt class="py-name">sum</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stages</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1351"></a><tt class="py-lineno">1351</tt>  <tt class="py-line"> </tt>
+<a name="L1352"></a><tt class="py-lineno">1352</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">message</tt> <tt class="py-keyword">is</tt> <tt id="link-472" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-472', 'UNKNOWN', 'link-13');">UNKNOWN</a></tt><tt class="py-op">:</tt> <tt class="py-name">message</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L1353"></a><tt class="py-lineno">1353</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">message</tt><tt class="py-op">:</tt> <tt class="py-name">message</tt> <tt class="py-op">=</tt> <tt class="py-string">'%s: %s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">task</tt><tt class="py-op">,</tt> <tt class="py-name">message</tt><tt class="py-op">)</tt> </tt>
+<a name="L1354"></a><tt class="py-lineno">1354</tt>  <tt class="py-line">        <tt id="link-473" class="py-name"><a title="epydoc.cli.ConsoleLogger" class="py-name" href="#" onclick="return doclink('link-473', 'ConsoleLogger', 'link-138');">ConsoleLogger</a></tt><tt class="py-op">.</tt><tt id="link-474" class="py-name"><a title="epydoc.cli.ConsoleLogger.progress
+epydoc.cli.UnifiedProgressConsoleLogger.progress
+epydoc.docbuilder._ProgressEstimator.progress
+epydoc.gui.GUILogger.progress
+epydoc.log.Logger.progress
+epydoc.log.progress" class="py-name" href="#" onclick="return doclink('link-474', 'progress', 'link-193');">progress</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">p</tt><tt class="py-op">,</tt> <tt class="py-name">message</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1355"></a><tt class="py-lineno">1355</tt>  <tt class="py-line"> </tt>
+<a name="UnifiedProgressConsoleLogger.start_progress"></a><div id="UnifiedProgressConsoleLogger.start_progress-def"><a name="L1356"></a><tt class="py-lineno">1356</tt> <a class="py-toggle" href="#" id="UnifiedProgressConsoleLogger.start_progress-toggle" onclick="return toggle('UnifiedProgressConsoleLogger.start_progress');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.cli.UnifiedProgressConsoleLogger-class.html#start_progress">start_pro [...]
+</div><div id="UnifiedProgressConsoleLogger.start_progress-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="UnifiedProgressConsoleLogger.start_progress-expanded"><a name="L1357"></a><tt class="py-lineno">1357</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">task</tt> <tt class="py-op">=</tt> <tt class="py-name">header</tt> </tt>
+<a name="L1358"></a><tt class="py-lineno">1358</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stage</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L1359"></a><tt class="py-lineno">1359</tt>  <tt class="py-line">            <tt id="link-475" class="py-name"><a title="epydoc.cli.ConsoleLogger" class="py-name" href="#" onclick="return doclink('link-475', 'ConsoleLogger', 'link-138');">ConsoleLogger</a></tt><tt class="py-op">.</tt><tt id="link-476" class="py-name"><a title="epydoc.cli.ConsoleLogger.start_progress
+epydoc.cli.UnifiedProgressConsoleLogger.start_progress
+epydoc.gui.GUILogger.start_progress
+epydoc.log.Logger.start_progress
+epydoc.log.start_progress" class="py-name" href="#" onclick="return doclink('link-476', 'start_progress', 'link-191');">start_progress</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L1360"></a><tt class="py-lineno">1360</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stage</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+</div><a name="L1361"></a><tt class="py-lineno">1361</tt>  <tt class="py-line"> </tt>
+<a name="UnifiedProgressConsoleLogger.end_progress"></a><div id="UnifiedProgressConsoleLogger.end_progress-def"><a name="L1362"></a><tt class="py-lineno">1362</tt> <a class="py-toggle" href="#" id="UnifiedProgressConsoleLogger.end_progress-toggle" onclick="return toggle('UnifiedProgressConsoleLogger.end_progress');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.cli.UnifiedProgressConsoleLogger-class.html#end_progress">end_progress</a><tt [...]
+</div><div id="UnifiedProgressConsoleLogger.end_progress-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="UnifiedProgressConsoleLogger.end_progress-expanded"><a name="L1363"></a><tt class="py-lineno">1363</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stage</tt> <tt class="py-op">==</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt [...]
+<a name="L1364"></a><tt class="py-lineno">1364</tt>  <tt class="py-line">            <tt id="link-477" class="py-name"><a title="epydoc.cli.ConsoleLogger" class="py-name" href="#" onclick="return doclink('link-477', 'ConsoleLogger', 'link-138');">ConsoleLogger</a></tt><tt class="py-op">.</tt><tt id="link-478" class="py-name"><a title="epydoc.cli.ConsoleLogger.end_progress
+epydoc.cli.UnifiedProgressConsoleLogger.end_progress
+epydoc.gui.GUILogger.end_progress
+epydoc.log.Logger.end_progress
+epydoc.log.end_progress" class="py-name" href="#" onclick="return doclink('link-478', 'end_progress', 'link-199');">end_progress</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1365"></a><tt class="py-lineno">1365</tt>  <tt class="py-line"> </tt>
+<a name="UnifiedProgressConsoleLogger.print_times"></a><div id="UnifiedProgressConsoleLogger.print_times-def"><a name="L1366"></a><tt class="py-lineno">1366</tt> <a class="py-toggle" href="#" id="UnifiedProgressConsoleLogger.print_times-toggle" onclick="return toggle('UnifiedProgressConsoleLogger.print_times');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.cli.UnifiedProgressConsoleLogger-class.html#print_times">print_times</a><tt class [...]
+</div><div id="UnifiedProgressConsoleLogger.print_times-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="UnifiedProgressConsoleLogger.print_times-expanded"><a name="L1367"></a><tt class="py-lineno">1367</tt>  <tt class="py-line">        <tt class="py-keyword">pass</tt> </tt>
+</div></div><a name="L1368"></a><tt class="py-lineno">1368</tt>  <tt class="py-line"> </tt>
+<a name="HTMLLogger"></a><div id="HTMLLogger-def"><a name="L1369"></a><tt class="py-lineno">1369</tt> <a class="py-toggle" href="#" id="HTMLLogger-toggle" onclick="return toggle('HTMLLogger');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="epydoc.cli.HTMLLogger-class.html">HTMLLogger</a><tt class="py-op">(</tt><tt class="py-base-class">log</tt><tt class="py-op">.</tt><tt class="py-base-class">Logger</tt><tt class="py-op">)</tt><tt class="py-op">: [...]
+</div><div id="HTMLLogger-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="HTMLLogger-expanded"><a name="L1370"></a><tt class="py-lineno">1370</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L1371"></a><tt class="py-lineno">1371</tt>  <tt class="py-line"><tt class="py-docstring">    A logger used to generate a log of all warnings and messages to an</tt> </tt>
+<a name="L1372"></a><tt class="py-lineno">1372</tt>  <tt class="py-line"><tt class="py-docstring">    HTML file.</tt> </tt>
+<a name="L1373"></a><tt class="py-lineno">1373</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1374"></a><tt class="py-lineno">1374</tt>  <tt class="py-line">     </tt>
+<a name="L1375"></a><tt class="py-lineno">1375</tt>  <tt class="py-line">    <tt id="link-479" class="py-name" targets="Variable epydoc.cli.HTMLLogger.FILENAME=epydoc.cli.HTMLLogger-class.html#FILENAME"><a title="epydoc.cli.HTMLLogger.FILENAME" class="py-name" href="#" onclick="return doclink('link-479', 'FILENAME', 'link-479');">FILENAME</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"epydoc-log.html"</tt> </tt>
+<a name="L1376"></a><tt class="py-lineno">1376</tt>  <tt class="py-line">    <tt id="link-480" class="py-name" targets="Variable epydoc.cli.HTMLLogger.HEADER=epydoc.cli.HTMLLogger-class.html#HEADER"><a title="epydoc.cli.HTMLLogger.HEADER" class="py-name" href="#" onclick="return doclink('link-480', 'HEADER', 'link-480');">HEADER</a></tt> <tt class="py-op">=</tt> <tt class="py-name">textwrap</tt><tt class="py-op">.</tt><tt class="py-name">dedent</tt><tt class="py-op">(</tt><tt class="py-s [...]
+<a name="L1377"></a><tt class="py-lineno">1377</tt>  <tt class="py-line"><tt class="py-string">        <?xml version="1.0" encoding="ascii"?></tt> </tt>
+<a name="L1378"></a><tt class="py-lineno">1378</tt>  <tt class="py-line"><tt class="py-string">        <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"</tt> </tt>
+<a name="L1379"></a><tt class="py-lineno">1379</tt>  <tt class="py-line"><tt class="py-string">                  "DTD/xhtml1-transitional.dtd"></tt> </tt>
+<a name="L1380"></a><tt class="py-lineno">1380</tt>  <tt class="py-line"><tt class="py-string">        <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"></tt> </tt>
+<a name="L1381"></a><tt class="py-lineno">1381</tt>  <tt class="py-line"><tt class="py-string">        <head></tt> </tt>
+<a name="L1382"></a><tt class="py-lineno">1382</tt>  <tt class="py-line"><tt class="py-string">          <title>Epydoc Log</title></tt> </tt>
+<a name="L1383"></a><tt class="py-lineno">1383</tt>  <tt class="py-line"><tt class="py-string">          <link rel="stylesheet" href="epydoc.css" type="text/css" /></tt> </tt>
+<a name="L1384"></a><tt class="py-lineno">1384</tt>  <tt class="py-line"><tt class="py-string">        </head></tt> </tt>
+<a name="L1385"></a><tt class="py-lineno">1385</tt>  <tt class="py-line"><tt class="py-string">        </tt> </tt>
+<a name="L1386"></a><tt class="py-lineno">1386</tt>  <tt class="py-line"><tt class="py-string">        <body bgcolor="white" text="black" link="blue" vlink="#204080"</tt> </tt>
+<a name="L1387"></a><tt class="py-lineno">1387</tt>  <tt class="py-line"><tt class="py-string">              alink="#204080"></tt> </tt>
+<a name="L1388"></a><tt class="py-lineno">1388</tt>  <tt class="py-line"><tt class="py-string">        <h1 class="epydoc">Epydoc Log</h1></tt> </tt>
+<a name="L1389"></a><tt class="py-lineno">1389</tt>  <tt class="py-line"><tt class="py-string">        <p class="log">Epydoc started at %s</p>'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L1390"></a><tt class="py-lineno">1390</tt>  <tt class="py-line">    <tt id="link-481" class="py-name" targets="Variable epydoc.cli.HTMLLogger.START_BLOCK=epydoc.cli.HTMLLogger-class.html#START_BLOCK"><a title="epydoc.cli.HTMLLogger.START_BLOCK" class="py-name" href="#" onclick="return doclink('link-481', 'START_BLOCK', 'link-481');">START_BLOCK</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'<div class="log-block"><h2 class="log-hdr">%s</h2>'</tt> </tt>
+<a name="L1391"></a><tt class="py-lineno">1391</tt>  <tt class="py-line">    <tt id="link-482" class="py-name" targets="Variable epydoc.cli.HTMLLogger.MESSAGE=epydoc.cli.HTMLLogger-class.html#MESSAGE"><a title="epydoc.cli.HTMLLogger.MESSAGE" class="py-name" href="#" onclick="return doclink('link-482', 'MESSAGE', 'link-482');">MESSAGE</a></tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">'<div class="log-%s"><b>%s</b>: \n'</tt> </tt>
+<a name="L1392"></a><tt class="py-lineno">1392</tt>  <tt class="py-line">               <tt class="py-string">'%s</div>\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1393"></a><tt class="py-lineno">1393</tt>  <tt class="py-line">    <tt id="link-483" class="py-name" targets="Variable epydoc.cli.HTMLLogger.END_BLOCK=epydoc.cli.HTMLLogger-class.html#END_BLOCK"><a title="epydoc.cli.HTMLLogger.END_BLOCK" class="py-name" href="#" onclick="return doclink('link-483', 'END_BLOCK', 'link-483');">END_BLOCK</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'</div>'</tt> </tt>
+<a name="L1394"></a><tt class="py-lineno">1394</tt>  <tt class="py-line">    <tt id="link-484" class="py-name" targets="Variable epydoc.cli.HTMLLogger.FOOTER=epydoc.cli.HTMLLogger-class.html#FOOTER"><a title="epydoc.cli.HTMLLogger.FOOTER" class="py-name" href="#" onclick="return doclink('link-484', 'FOOTER', 'link-484');">FOOTER</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"</body>\n</html>\n"</tt> </tt>
+<a name="L1395"></a><tt class="py-lineno">1395</tt>  <tt class="py-line">     </tt>
+<a name="HTMLLogger.__init__"></a><div id="HTMLLogger.__init__-def"><a name="L1396"></a><tt class="py-lineno">1396</tt> <a class="py-toggle" href="#" id="HTMLLogger.__init__-toggle" onclick="return toggle('HTMLLogger.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.cli.HTMLLogger-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">directory</tt><tt [...]
+</div><div id="HTMLLogger.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLLogger.__init__-expanded"><a name="L1397"></a><tt class="py-lineno">1397</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">start_time</tt> <tt class="py-op">=</tt> <tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py-name">time</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1398"></a><tt class="py-lineno">1398</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">out</tt> <tt class="py-op">=</tt> <tt id="link-485" class="py-name"><a title="epydoc.gui.EpydocGUI.open" class="py-name" href="#" onclick="return doclink('link-485', 'open', 'link-93');">open</a></tt><tt class="py-op">(</tt><tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-486" class="py-name"><a title="epydoc.apidoc.Modul [...]
+<a name="L1399"></a><tt class="py-lineno">1399</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">out</tt><tt class="py-op">.</tt><tt id="link-488" class="py-name"><a title="epydoc.docintrospecter._DevNull.write
+epydoc.docwriter.dotgraph.DotGraph.write
+epydoc.docwriter.html.HTMLWriter.write
+epydoc.docwriter.latex.LatexWriter.write
+epydoc.docwriter.plaintext.PlaintextWriter.write" class="py-name" href="#" onclick="return doclink('link-488', 'write', 'link-231');">write</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-489" class="py-name"><a title="epydoc.cli.HTMLLogger.HEADER" class="py-name" href="#" onclick="return doclink('link-489', 'HEADER', 'link-480');">HEADER</a></tt> <tt class="py-op">%</tt> <tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py- [...]
+<a name="L1400"></a><tt class="py-lineno">1400</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">is_empty</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L1401"></a><tt class="py-lineno">1401</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">options</tt> <tt class="py-op">=</tt> <tt class="py-name">options</tt> </tt>
+</div><a name="L1402"></a><tt class="py-lineno">1402</tt>  <tt class="py-line"> </tt>
+<a name="HTMLLogger.write_options"></a><div id="HTMLLogger.write_options-def"><a name="L1403"></a><tt class="py-lineno">1403</tt> <a class="py-toggle" href="#" id="HTMLLogger.write_options-toggle" onclick="return toggle('HTMLLogger.write_options');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.cli.HTMLLogger-class.html#write_options">write_options</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt clas [...]
+</div><div id="HTMLLogger.write_options-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLLogger.write_options-expanded"><a name="L1404"></a><tt class="py-lineno">1404</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">out</tt><tt class="py-op">.</tt><tt id="link-490" class="py-name"><a title="epydoc.docintrospecter._DevNull.write
+epydoc.docwriter.dotgraph.DotGraph.write
+epydoc.docwriter.html.HTMLWriter.write
+epydoc.docwriter.latex.LatexWriter.write
+epydoc.docwriter.plaintext.PlaintextWriter.write" class="py-name" href="#" onclick="return doclink('link-490', 'write', 'link-231');">write</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-491" class="py-name"><a title="epydoc.cli.HTMLLogger.START_BLOCK" class="py-name" href="#" onclick="return doclink('link-491', 'START_BLOCK', 'link-481');">START_BLOCK</a></tt> <tt class="py-op">%</tt> <tt class="py-string">'Epydoc Options'</tt><tt class [...]
+<a name="L1405"></a><tt class="py-lineno">1405</tt>  <tt class="py-line">        <tt class="py-name">msg</tt> <tt class="py-op">=</tt> <tt class="py-string">'<table border="0" cellpadding="0" cellspacing="0">\n'</tt> </tt>
+<a name="L1406"></a><tt class="py-lineno">1406</tt>  <tt class="py-line">        <tt class="py-name">opts</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt id="link-492" class="py-name"><a title="epydoc.cli.key" class="py-name" href="#" onclick="return doclink('link-492', 'key', 'link-32');">key</a></tt><tt class="py-op">,</tt> <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">options</tt><tt class="py-op">,</tt> <tt id="link-493" [...]
+<a name="L1407"></a><tt class="py-lineno">1407</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt id="link-495" class="py-name"><a title="epydoc.cli.key" class="py-name" href="#" onclick="return doclink('link-495', 'key', 'link-32');">key</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">dir</tt><tt class="py-op">(</tt><tt class="py-name">optparse</tt><tt class="py-op">.</tt><tt class="py-name">Values</tt><tt class="py-o [...]
+<a name="L1408"></a><tt class="py-lineno">1408</tt>  <tt class="py-line">        <tt class="py-name">opts</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">==</tt><tt id="link-496" class="py-name"><a title="epydoc.cli.OPTION_DEFAULTS" class="py-name" href="#" onclick="return doclink('link-496', 'OPTION_DEFAULTS', 'link-42');">OPTION_DEFAULTS</a></tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py- [...]
+<a name="L1409"></a><tt class="py-lineno">1409</tt>  <tt class="py-line">                <tt class="py-keyword">for</tt> <tt class="py-op">(</tt><tt id="link-499" class="py-name"><a title="epydoc.cli.key" class="py-name" href="#" onclick="return doclink('link-499', 'key', 'link-32');">key</a></tt><tt class="py-op">,</tt> <tt class="py-name">val</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-name">opts</tt><tt class="py-op">]</tt> </tt>
+<a name="L1410"></a><tt class="py-lineno">1410</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">is_default</tt><tt class="py-op">,</tt> <tt id="link-500" class="py-name"><a title="epydoc.cli.key" class="py-name" href="#" onclick="return doclink('link-500', 'key', 'link-32');">key</a></tt><tt class="py-op">,</tt> <tt class="py-name">val</tt> <tt class="py-keyword">in</tt> <tt id="link-501" class="py-name" targets="Function epydoc.compat.sorted()=epydoc [...]
+<a name="L1411"></a><tt class="py-lineno">1411</tt>  <tt class="py-line">            <tt class="py-name">css</tt> <tt class="py-op">=</tt> <tt class="py-name">is_default</tt> <tt class="py-keyword">and</tt> <tt class="py-string">'opt-default'</tt> <tt class="py-keyword">or</tt> <tt class="py-string">'opt-changed'</tt> </tt>
+<a name="L1412"></a><tt class="py-lineno">1412</tt>  <tt class="py-line">            <tt class="py-name">msg</tt> <tt class="py-op">+=</tt> <tt class="py-op">(</tt><tt class="py-string">'<tr valign="top" class="%s"><td valign="top">%s</td>'</tt> </tt>
+<a name="L1413"></a><tt class="py-lineno">1413</tt>  <tt class="py-line">                    <tt class="py-string">'<td valign="top"><tt>&nbsp;=&nbsp;</tt></td>'</tt> </tt>
+<a name="L1414"></a><tt class="py-lineno">1414</tt>  <tt class="py-line">                    <tt class="py-string">'<td valign="top"><tt>%s</tt></td></tr>'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L1415"></a><tt class="py-lineno">1415</tt>  <tt class="py-line">                    <tt class="py-op">(</tt><tt class="py-name">css</tt><tt class="py-op">,</tt> <tt id="link-502" class="py-name"><a title="epydoc.cli.key" class="py-name" href="#" onclick="return doclink('link-502', 'key', 'link-32');">key</a></tt><tt class="py-op">,</tt> <tt id="link-503" class="py-name"><a title="epydoc.util.plaintext_to_html" class="py-name" href="#" onclick="return doclink('link-503', 'plainte [...]
+<a name="L1416"></a><tt class="py-lineno">1416</tt>  <tt class="py-line">        <tt class="py-name">msg</tt> <tt class="py-op">+=</tt> <tt class="py-string">'</table>\n'</tt> </tt>
+<a name="L1417"></a><tt class="py-lineno">1417</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">out</tt><tt class="py-op">.</tt><tt id="link-504" class="py-name"><a title="epydoc.docintrospecter._DevNull.write
+epydoc.docwriter.dotgraph.DotGraph.write
+epydoc.docwriter.html.HTMLWriter.write
+epydoc.docwriter.latex.LatexWriter.write
+epydoc.docwriter.plaintext.PlaintextWriter.write" class="py-name" href="#" onclick="return doclink('link-504', 'write', 'link-231');">write</a></tt><tt class="py-op">(</tt><tt class="py-string">'<div class="log-info">\n%s</div>\n'</tt> <tt class="py-op">%</tt> <tt class="py-name">msg</tt><tt class="py-op">)</tt> </tt>
+<a name="L1418"></a><tt class="py-lineno">1418</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">out</tt><tt class="py-op">.</tt><tt id="link-505" class="py-name"><a title="epydoc.docintrospecter._DevNull.write
+epydoc.docwriter.dotgraph.DotGraph.write
+epydoc.docwriter.html.HTMLWriter.write
+epydoc.docwriter.latex.LatexWriter.write
+epydoc.docwriter.plaintext.PlaintextWriter.write" class="py-name" href="#" onclick="return doclink('link-505', 'write', 'link-231');">write</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-506" class="py-name"><a title="epydoc.cli.HTMLLogger.END_BLOCK" class="py-name" href="#" onclick="return doclink('link-506', 'END_BLOCK', 'link-483');">END_BLOCK</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1419"></a><tt class="py-lineno">1419</tt>  <tt class="py-line"> </tt>
+<a name="HTMLLogger.start_block"></a><div id="HTMLLogger.start_block-def"><a name="L1420"></a><tt class="py-lineno">1420</tt> <a class="py-toggle" href="#" id="HTMLLogger.start_block-toggle" onclick="return toggle('HTMLLogger.start_block');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.cli.HTMLLogger-class.html#start_block">start_block</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param" [...]
+</div><div id="HTMLLogger.start_block-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLLogger.start_block-expanded"><a name="L1421"></a><tt class="py-lineno">1421</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">out</tt><tt class="py-op">.</tt><tt id="link-507" class="py-name"><a title="epydoc.docintrospecter._DevNull.write
+epydoc.docwriter.dotgraph.DotGraph.write
+epydoc.docwriter.html.HTMLWriter.write
+epydoc.docwriter.latex.LatexWriter.write
+epydoc.docwriter.plaintext.PlaintextWriter.write" class="py-name" href="#" onclick="return doclink('link-507', 'write', 'link-231');">write</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-508" class="py-name"><a title="epydoc.cli.HTMLLogger.START_BLOCK" class="py-name" href="#" onclick="return doclink('link-508', 'START_BLOCK', 'link-481');">START_BLOCK</a></tt> <tt class="py-op">%</tt> <tt class="py-name">header</tt><tt class="py-op">)</ [...]
+</div><a name="L1422"></a><tt class="py-lineno">1422</tt>  <tt class="py-line"> </tt>
+<a name="HTMLLogger.end_block"></a><div id="HTMLLogger.end_block-def"><a name="L1423"></a><tt class="py-lineno">1423</tt> <a class="py-toggle" href="#" id="HTMLLogger.end_block-toggle" onclick="return toggle('HTMLLogger.end_block');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.cli.HTMLLogger-class.html#end_block">end_block</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="HTMLLogger.end_block-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLLogger.end_block-expanded"><a name="L1424"></a><tt class="py-lineno">1424</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">out</tt><tt class="py-op">.</tt><tt id="link-509" class="py-name"><a title="epydoc.docintrospecter._DevNull.write
+epydoc.docwriter.dotgraph.DotGraph.write
+epydoc.docwriter.html.HTMLWriter.write
+epydoc.docwriter.latex.LatexWriter.write
+epydoc.docwriter.plaintext.PlaintextWriter.write" class="py-name" href="#" onclick="return doclink('link-509', 'write', 'link-231');">write</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-510" class="py-name"><a title="epydoc.cli.HTMLLogger.END_BLOCK" class="py-name" href="#" onclick="return doclink('link-510', 'END_BLOCK', 'link-483');">END_BLOCK</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1425"></a><tt class="py-lineno">1425</tt>  <tt class="py-line"> </tt>
+<a name="HTMLLogger.log"></a><div id="HTMLLogger.log-def"><a name="L1426"></a><tt class="py-lineno">1426</tt> <a class="py-toggle" href="#" id="HTMLLogger.log-toggle" onclick="return toggle('HTMLLogger.log');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.cli.HTMLLogger-class.html#log">log</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">level</tt><tt class="py-op">,</tt> <tt class="p [...]
+</div><div id="HTMLLogger.log-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLLogger.log-expanded"><a name="L1427"></a><tt class="py-lineno">1427</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">message</tt><tt class="py-op">.</tt><tt class="py-name">endswith</tt><tt class="py-op">(</tt><tt class="py-string">"(-v) to display markup errors."</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-keyword">retu [...]
+<a name="L1428"></a><tt class="py-lineno">1428</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">level</tt> <tt class="py-op">>=</tt> <tt id="link-511" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-511', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-512" class="py-name"><a title="epydoc.log.ERROR" class="py-name" href="#" onclick="return doclink('link-512', 'ERROR', 'link-62');">ERROR</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1429"></a><tt class="py-lineno">1429</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">out</tt><tt class="py-op">.</tt><tt id="link-513" class="py-name"><a title="epydoc.docintrospecter._DevNull.write
+epydoc.docwriter.dotgraph.DotGraph.write
+epydoc.docwriter.html.HTMLWriter.write
+epydoc.docwriter.latex.LatexWriter.write
+epydoc.docwriter.plaintext.PlaintextWriter.write" class="py-name" href="#" onclick="return doclink('link-513', 'write', 'link-231');">write</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-514" class="py-name" targets="Method epydoc.cli.HTMLLogger._message()=epydoc.cli.HTMLLogger-class.html#_message"><a title="epydoc.cli.HTMLLogger._message" class="py-name" href="#" onclick="return doclink('link-514', '_message', 'link-514');">_message</a> [...]
+<a name="L1430"></a><tt class="py-lineno">1430</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">level</tt> <tt class="py-op">>=</tt> <tt id="link-515" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-515', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-516" class="py-name"><a title="epydoc.log.WARNING" class="py-name" href="#" onclick="return doclink('link-516', 'WARNING', 'link-64');">WARNING</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1431"></a><tt class="py-lineno">1431</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">out</tt><tt class="py-op">.</tt><tt id="link-517" class="py-name"><a title="epydoc.docintrospecter._DevNull.write
+epydoc.docwriter.dotgraph.DotGraph.write
+epydoc.docwriter.html.HTMLWriter.write
+epydoc.docwriter.latex.LatexWriter.write
+epydoc.docwriter.plaintext.PlaintextWriter.write" class="py-name" href="#" onclick="return doclink('link-517', 'write', 'link-231');">write</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-518" class="py-name"><a title="epydoc.cli.HTMLLogger._message" class="py-name" href="#" onclick="return doclink('link-518', '_message', 'link-514');">_message</a></tt><tt class="py-op">(</tt><tt class="py-string">'warning'</tt><tt class="py-op">,</tt> <t [...]
+<a name="L1432"></a><tt class="py-lineno">1432</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">level</tt> <tt class="py-op">>=</tt> <tt id="link-519" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-519', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-520" class="py-name"><a title="epydoc.log.DOCSTRING_WARNING" class="py-name" href="#" onclick="return doclink('link-520', 'DOCSTRING_WARNING', 'link-66');">DOCSTRING_WARNING</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1433"></a><tt class="py-lineno">1433</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">out</tt><tt class="py-op">.</tt><tt id="link-521" class="py-name"><a title="epydoc.docintrospecter._DevNull.write
+epydoc.docwriter.dotgraph.DotGraph.write
+epydoc.docwriter.html.HTMLWriter.write
+epydoc.docwriter.latex.LatexWriter.write
+epydoc.docwriter.plaintext.PlaintextWriter.write" class="py-name" href="#" onclick="return doclink('link-521', 'write', 'link-231');">write</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-522" class="py-name"><a title="epydoc.cli.HTMLLogger._message" class="py-name" href="#" onclick="return doclink('link-522', '_message', 'link-514');">_message</a></tt><tt class="py-op">(</tt><tt class="py-string">'docstring warning'</tt><tt class="py-op" [...]
+</div><a name="L1434"></a><tt class="py-lineno">1434</tt>  <tt class="py-line"> </tt>
+<a name="HTMLLogger._message"></a><div id="HTMLLogger._message-def"><a name="L1435"></a><tt class="py-lineno">1435</tt> <a class="py-toggle" href="#" id="HTMLLogger._message-toggle" onclick="return toggle('HTMLLogger._message');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.cli.HTMLLogger-class.html#_message">_message</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">level</tt><tt cla [...]
+</div><div id="HTMLLogger._message-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLLogger._message-expanded"><a name="L1436"></a><tt class="py-lineno">1436</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">is_empty</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L1437"></a><tt class="py-lineno">1437</tt>  <tt class="py-line">        <tt class="py-name">message</tt> <tt class="py-op">=</tt> <tt id="link-523" class="py-name"><a title="epydoc.util.plaintext_to_html" class="py-name" href="#" onclick="return doclink('link-523', 'plaintext_to_html', 'link-10');">plaintext_to_html</a></tt><tt class="py-op">(</tt><tt class="py-name">message</tt><tt class="py-op">)</tt> </tt>
+<a name="L1438"></a><tt class="py-lineno">1438</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-string">'\n'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">message</tt><tt class="py-op">:</tt> </tt>
+<a name="L1439"></a><tt class="py-lineno">1439</tt>  <tt class="py-line">            <tt class="py-name">message</tt> <tt class="py-op">=</tt> <tt class="py-string">'<pre class="log">%s</pre>'</tt> <tt class="py-op">%</tt> <tt class="py-name">message</tt> </tt>
+<a name="L1440"></a><tt class="py-lineno">1440</tt>  <tt class="py-line">        <tt class="py-name">hdr</tt> <tt class="py-op">=</tt> <tt class="py-string">' '</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">w</tt><tt class="py-op">.</tt><tt class="py-name">capitalize</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">w</tt> <tt class="py-keyword">in</tt> <t [...]
+<a name="L1441"></a><tt class="py-lineno">1441</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-524" class="py-name"><a title="epydoc.cli.HTMLLogger.MESSAGE" class="py-name" href="#" onclick="return doclink('link-524', 'MESSAGE', 'link-482');">MESSAGE</a></tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">level</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="p [...]
+</div><a name="L1442"></a><tt class="py-lineno">1442</tt>  <tt class="py-line"> </tt>
+<a name="HTMLLogger.close"></a><div id="HTMLLogger.close-def"><a name="L1443"></a><tt class="py-lineno">1443</tt> <a class="py-toggle" href="#" id="HTMLLogger.close-toggle" onclick="return toggle('HTMLLogger.close');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.cli.HTMLLogger-class.html#close">close</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="HTMLLogger.close-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLLogger.close-expanded"><a name="L1444"></a><tt class="py-lineno">1444</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">is_empty</tt><tt class="py-op">:</tt> </tt>
+<a name="L1445"></a><tt class="py-lineno">1445</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">out</tt><tt class="py-op">.</tt><tt id="link-525" class="py-name"><a title="epydoc.docintrospecter._DevNull.write
+epydoc.docwriter.dotgraph.DotGraph.write
+epydoc.docwriter.html.HTMLWriter.write
+epydoc.docwriter.latex.LatexWriter.write
+epydoc.docwriter.plaintext.PlaintextWriter.write" class="py-name" href="#" onclick="return doclink('link-525', 'write', 'link-231');">write</a></tt><tt class="py-op">(</tt><tt class="py-string">'<div class="log-info">'</tt> </tt>
+<a name="L1446"></a><tt class="py-lineno">1446</tt>  <tt class="py-line">                           <tt class="py-string">'No warnings or errors!</div>'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1447"></a><tt class="py-lineno">1447</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-526" class="py-name" targets="Method epydoc.cli.HTMLLogger.write_options()=epydoc.cli.HTMLLogger-class.html#write_options"><a title="epydoc.cli.HTMLLogger.write_options" class="py-name" href="#" onclick="return doclink('link-526', 'write_options', 'link-526');">write_options</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt clas [...]
+<a name="L1448"></a><tt class="py-lineno">1448</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">out</tt><tt class="py-op">.</tt><tt id="link-527" class="py-name"><a title="epydoc.docintrospecter._DevNull.write
+epydoc.docwriter.dotgraph.DotGraph.write
+epydoc.docwriter.html.HTMLWriter.write
+epydoc.docwriter.latex.LatexWriter.write
+epydoc.docwriter.plaintext.PlaintextWriter.write" class="py-name" href="#" onclick="return doclink('link-527', 'write', 'link-231');">write</a></tt><tt class="py-op">(</tt><tt class="py-string">'<p class="log">Epydoc finished at %s</p>\n'</tt> </tt>
+<a name="L1449"></a><tt class="py-lineno">1449</tt>  <tt class="py-line">                       <tt class="py-string">'<p class="log">(Elapsed time: %s)</p>'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L1450"></a><tt class="py-lineno">1450</tt>  <tt class="py-line">                       <tt class="py-op">(</tt><tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py-name">ctime</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-528" class="py-name" targets="Method epydoc.cli.HTMLLogger._elapsed_time()=epydoc.cli.HTMLLogger-class.html#_elapsed_time"><a title="epydoc.cli.HTMLLo [...]
+<a name="L1451"></a><tt class="py-lineno">1451</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">out</tt><tt class="py-op">.</tt><tt id="link-529" class="py-name"><a title="epydoc.docintrospecter._DevNull.write
+epydoc.docwriter.dotgraph.DotGraph.write
+epydoc.docwriter.html.HTMLWriter.write
+epydoc.docwriter.latex.LatexWriter.write
+epydoc.docwriter.plaintext.PlaintextWriter.write" class="py-name" href="#" onclick="return doclink('link-529', 'write', 'link-231');">write</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-530" class="py-name"><a title="epydoc.cli.HTMLLogger.FOOTER" class="py-name" href="#" onclick="return doclink('link-530', 'FOOTER', 'link-484');">FOOTER</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1452"></a><tt class="py-lineno">1452</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">out</tt><tt class="py-op">.</tt><tt id="link-531" class="py-name"><a title="epydoc.cli.HTMLLogger.close
+epydoc.docintrospecter._DevNull.close
+epydoc.log.Logger.close
+epydoc.log.close" class="py-name" href="#" onclick="return doclink('link-531', 'close', 'link-94');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1453"></a><tt class="py-lineno">1453</tt>  <tt class="py-line"> </tt>
+<a name="HTMLLogger._elapsed_time"></a><div id="HTMLLogger._elapsed_time-def"><a name="L1454"></a><tt class="py-lineno">1454</tt> <a class="py-toggle" href="#" id="HTMLLogger._elapsed_time-toggle" onclick="return toggle('HTMLLogger._elapsed_time');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.cli.HTMLLogger-class.html#_elapsed_time">_elapsed_time</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class [...]
+</div><div id="HTMLLogger._elapsed_time-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLLogger._elapsed_time-expanded"><a name="L1455"></a><tt class="py-lineno">1455</tt>  <tt class="py-line">        <tt class="py-name">secs</tt> <tt class="py-op">=</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py-name">time</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">-</t [...]
+<a name="L1456"></a><tt class="py-lineno">1456</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">secs</tt> <tt class="py-op"><</tt> <tt class="py-number">60</tt><tt class="py-op">:</tt> </tt>
+<a name="L1457"></a><tt class="py-lineno">1457</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">'%d seconds'</tt> <tt class="py-op">%</tt> <tt class="py-name">secs</tt> </tt>
+<a name="L1458"></a><tt class="py-lineno">1458</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">secs</tt> <tt class="py-op"><</tt> <tt class="py-number">3600</tt><tt class="py-op">:</tt> </tt>
+<a name="L1459"></a><tt class="py-lineno">1459</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">'%d minutes, %d seconds'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">secs</tt><tt class="py-op">/</tt><tt class="py-number">60</tt><tt class="py-op">,</tt> <tt class="py-name">secs</tt><tt class="py-op">%</tt><tt class="py-number">60</tt><tt class="py-op">)</tt> </tt>
+<a name="L1460"></a><tt class="py-lineno">1460</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1461"></a><tt class="py-lineno">1461</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">'%d hours, %d minutes'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">secs</tt><tt class="py-op">/</tt><tt class="py-number">3600</tt><tt class="py-op">,</tt> <tt class="py-name">secs</tt><tt class="py-op">%</tt><tt class="py-number">3600</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L1462"></a><tt class="py-lineno">1462</tt>  <tt class="py-line">             </tt>
+<a name="L1463"></a><tt class="py-lineno">1463</tt>  <tt class="py-line"> </tt>
+<a name="L1464"></a><tt class="py-lineno">1464</tt>  <tt class="py-line"><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L1465"></a><tt class="py-lineno">1465</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## main</tt> </tt>
+<a name="L1466"></a><tt class="py-lineno">1466</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L1467"></a><tt class="py-lineno">1467</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L1468"></a><tt class="py-lineno">1468</tt>  <tt class="py-line"><tt class="py-keyword">if</tt> <tt class="py-name">__name__</tt> <tt class="py-op">==</tt> <tt class="py-string">'__main__'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1469"></a><tt class="py-lineno">1469</tt>  <tt class="py-line">    <tt id="link-532" class="py-name" targets="Module epydoc.cli=epydoc.cli-module.html,Function epydoc.cli.cli()=epydoc.cli-module.html#cli"><a title="epydoc.cli
+epydoc.cli.cli" class="py-name" href="#" onclick="return doclink('link-532', 'cli', 'link-532');">cli</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1470"></a><tt class="py-lineno">1470</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:09:23 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.cli.ConsoleLogger-class.html b/doc/api/epydoc.cli.ConsoleLogger-class.html
new file mode 100644
index 0000000..695228b
--- /dev/null
+++ b/doc/api/epydoc.cli.ConsoleLogger-class.html
@@ -0,0 +1,620 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.cli.ConsoleLogger</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.cli-module.html">Module cli</a> ::
+        Class ConsoleLogger
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.cli.ConsoleLogger-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class ConsoleLogger</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.cli-pysrc.html#ConsoleLogger">source code</a></span></p>
+<center>
+<center>  <map id="uml_class_diagram_for_epydoc_c" name="uml_class_diagram_for_epydoc_c">
+<area shape="rect" href="epydoc.log.Logger-class.html#close" title="Perform any tasks needed to close this logger." alt="" coords="127,36,193,55" />
+<area shape="rect" href="epydoc.log.Logger-class.html" title="An abstract base class that defines the interface for loggers, which are used by epydoc to report information back to the user." alt="" coords="115,5,205,61" />
+<area shape="rect" href="epydoc.cli.ConsoleLogger-class.html#reported_message_levels" title="This set contains all the message levels (WARNING, ERROR, etc) that have  been reported." alt="" coords="17,103,303,121" />
+<area shape="rect" href="epydoc.cli.ConsoleLogger-class.html#suppressed_docstring_warning" title="This variable will be incremented once every time a docstring warning is  reported tothe logger, but the verbosity level is too low for it to be  displayed." alt="" coords="17,121,303,140" />
+<area shape="rect" href="epydoc.cli.ConsoleLogger-class.html#__init__" title="epydoc.cli.ConsoleLogger.__init__" alt="" coords="17,143,303,161" />
+<area shape="rect" href="epydoc.cli.ConsoleLogger-class.html#start_block" title="Start a new message block." alt="" coords="17,161,303,180" />
+<area shape="rect" href="epydoc.cli.ConsoleLogger-class.html#end_block" title="End a warning block." alt="" coords="17,180,303,199" />
+<area shape="rect" href="epydoc.cli.ConsoleLogger-class.html#log" title="Display a message." alt="" coords="17,199,303,217" />
+<area shape="rect" href="epydoc.cli.ConsoleLogger-class.html#progress" title="Update the progress display." alt="" coords="17,217,303,236" />
+<area shape="rect" href="epydoc.cli.ConsoleLogger-class.html#start_progress" title="Begin displaying progress for a new task." alt="" coords="17,236,303,255" />
+<area shape="rect" href="epydoc.cli.ConsoleLogger-class.html#end_progress" title="Finish off the display of progress for the current task." alt="" coords="17,255,303,273" />
+<area shape="rect" href="epydoc.cli.ConsoleLogger-class.html#print_times" title="epydoc.cli.ConsoleLogger.print_times" alt="" coords="17,273,303,292" />
+<area shape="rect" href="epydoc.cli.ConsoleLogger-class.html" title="epydoc.cli.ConsoleLogger" alt="" coords="5,80,315,299" />
+<area shape="rect" href="epydoc.cli.UnifiedProgressConsoleLogger-class.html" title="epydoc.cli.UnifiedProgressConsoleLogger" alt="" coords="49,317,271,355" />
+</map>
+  <img src="uml_class_diagram_for_epydoc_c.gif" alt='' usemap="#uml_class_diagram_for_epydoc_c" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__init__"></a><span class="summary-sig-name">__init__</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">verbosity</span>,
+        <span class="summary-sig-arg">progress_mode</span>=<span class="summary-sig-default">None</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.cli-pysrc.html#ConsoleLogger.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.cli.ConsoleLogger-class.html#start_block" class="summary-sig-name">start_block</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">header</span>)</span><br />
+      Start a new message block.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.cli-pysrc.html#ConsoleLogger.start_block">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.cli.ConsoleLogger-class.html#end_block" class="summary-sig-name">end_block</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      End a warning block.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.cli-pysrc.html#ConsoleLogger.end_block">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_format"></a><span class="summary-sig-name">_format</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">prefix</span>,
+        <span class="summary-sig-arg">message</span>,
+        <span class="summary-sig-arg">color</span>)</span><br />
+      Rewrap the message; but preserve newlines, and don't touch any lines 
+      that begin with spaces.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.cli-pysrc.html#ConsoleLogger._format">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.cli.ConsoleLogger-class.html#log" class="summary-sig-name">log</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">level</span>,
+        <span class="summary-sig-arg">message</span>)</span><br />
+      Display a message.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.cli-pysrc.html#ConsoleLogger.log">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_report"></a><span class="summary-sig-name">_report</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">message</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.cli-pysrc.html#ConsoleLogger._report">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.cli.ConsoleLogger-class.html#progress" class="summary-sig-name">progress</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">percent</span>,
+        <span class="summary-sig-arg">message</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>)</span><br />
+      Update the progress display.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.cli-pysrc.html#ConsoleLogger.progress">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_timestr"></a><span class="summary-sig-name">_timestr</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">dt</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.cli-pysrc.html#ConsoleLogger._timestr">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.cli.ConsoleLogger-class.html#start_progress" class="summary-sig-name">start_progress</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">header</span>=<span class="summary-sig-default">None</span>)</span><br />
+      Begin displaying progress for a new task.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.cli-pysrc.html#ConsoleLogger.start_progress">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.cli.ConsoleLogger-class.html#end_progress" class="summary-sig-name">end_progress</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Finish off the display of progress for the current task.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.cli-pysrc.html#ConsoleLogger.end_progress">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="print_times"></a><span class="summary-sig-name">print_times</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.cli-pysrc.html#ConsoleLogger.print_times">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.log.Logger-class.html">log.Logger</a></code></b>:
+      <code><a href="epydoc.log.Logger-class.html#close">close</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== INSTANCE VARIABLES ==================== -->
+<a name="section-InstanceVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.cli.ConsoleLogger-class.html#reported_message_levels" class="summary-name">reported_message_levels</a><br />
+      This set contains all the message levels (WARNING, ERROR, etc) that 
+      have been reported.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="suppressed_docstring_warning"></a><span class="summary-name">suppressed_docstring_warning</span><br />
+      This variable will be incremented once every time a docstring warning
+      is reported tothe logger, but the verbosity level is too low for it 
+      to be displayed.
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Method Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-MethodDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="start_block"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">start_block</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">header</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.cli-pysrc.html#ConsoleLogger.start_block">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Start a new message block.  Any calls to <a 
+  href="epydoc.log-module.html#info" class="link">info()</a>, <a 
+  href="epydoc.log-module.html#warning" class="link">warning()</a>, or <a 
+  href="epydoc.log-module.html#error" class="link">error()</a> that occur 
+  between a call to <code>start_block</code> and a corresponding call to 
+  <code>end_block</code> will be grouped together, and displayed with a 
+  common header. <code>start_block</code> can be called multiple times (to 
+  form nested blocks), but every call to <code>start_block</code> 
+  <i>must</i> be balanced by a call to <code>end_block</code>.</p>
+  <dl class="fields">
+    <dt>Overrides:
+        <a href="epydoc.log.Logger-class.html#start_block">log.Logger.start_block</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="end_block"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">end_block</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.cli-pysrc.html#ConsoleLogger.end_block">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>End a warning block.  See <a 
+  href="epydoc.cli.ConsoleLogger-class.html#start_block" 
+  class="link">start_block</a> for details.</p>
+  <dl class="fields">
+    <dt>Overrides:
+        <a href="epydoc.log.Logger-class.html#end_block">log.Logger.end_block</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="log"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">log</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">level</span>,
+        <span class="sig-arg">message</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.cli-pysrc.html#ConsoleLogger.log">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Display a message.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>message</code></strong> - The message string to display.  <code>message</code> may contain 
+          newlines, but does not need to end in a newline.</li>
+        <li><strong class="pname"><code>level</code></strong> - An integer value indicating the severity of the message.</li>
+    </ul></dd>
+    <dt>Overrides:
+        <a href="epydoc.log.Logger-class.html#log">log.Logger.log</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="progress"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">progress</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">percent</span>,
+        <span class="sig-arg">message</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.cli-pysrc.html#ConsoleLogger.progress">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Update the progress display.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>percent</code></strong> - A float from 0.0 to 1.0, indicating how much progress has been 
+          made.</li>
+        <li><strong class="pname"><code>message</code></strong> - A message indicating the most recent action that contributed 
+          towards that progress.</li>
+    </ul></dd>
+    <dt>Overrides:
+        <a href="epydoc.log.Logger-class.html#progress">log.Logger.progress</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="start_progress"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">start_progress</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">header</span>=<span class="sig-default">None</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.cli-pysrc.html#ConsoleLogger.start_progress">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Begin displaying progress for a new task.  <code>header</code> is a 
+  description of the task for which progress is being reported. Each call 
+  to <code>start_progress</code> must be followed by a call to 
+  <code>end_progress</code> (with no intervening calls to 
+  <code>start_progress</code>).</p>
+  <dl class="fields">
+    <dt>Overrides:
+        <a href="epydoc.log.Logger-class.html#start_progress">log.Logger.start_progress</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="end_progress"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">end_progress</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.cli-pysrc.html#ConsoleLogger.end_progress">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Finish off the display of progress for the current task.  See <a 
+  href="epydoc.cli.ConsoleLogger-class.html#start_progress" 
+  class="link">start_progress</a> for more information.</p>
+  <dl class="fields">
+    <dt>Overrides:
+        <a href="epydoc.log.Logger-class.html#end_progress">log.Logger.end_progress</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== INSTANCE VARIABLE DETAILS ==================== -->
+<a name="section-InstanceVariableDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Variable Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceVariableDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="reported_message_levels"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">reported_message_levels</h3>
+  <p>This set contains all the message levels (WARNING, ERROR, etc) that 
+  have been reported.  It is used by the options --fail-on-warning etc to 
+  determine the return value.</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:07:35 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.cli.HTMLLogger-class.html b/doc/api/epydoc.cli.HTMLLogger-class.html
new file mode 100644
index 0000000..7289edd
--- /dev/null
+++ b/doc/api/epydoc.cli.HTMLLogger-class.html
@@ -0,0 +1,575 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.cli.HTMLLogger</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.cli-module.html">Module cli</a> ::
+        Class HTMLLogger
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.cli.HTMLLogger-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class HTMLLogger</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.cli-pysrc.html#HTMLLogger">source code</a></span></p>
+<center>
+<center>  <map id="uml_class_diagram_for_epydoc_c_2" name="uml_class_diagram_for_epydoc_c_2">
+<area shape="rect" href="epydoc.log.Logger-class.html#start_progress" title="Begin displaying progress for a new task." alt="" coords="18,36,234,55" />
+<area shape="rect" href="epydoc.log.Logger-class.html#end_progress" title="Finish off the display of progress for the current task." alt="" coords="18,55,234,74" />
+<area shape="rect" href="epydoc.log.Logger-class.html#progress" title="Update the progress display." alt="" coords="18,74,234,92" />
+<area shape="rect" href="epydoc.log.Logger-class.html" title="An abstract base class that defines the interface for loggers, which are used by epydoc to report information back to the user." alt="" coords="6,6,246,99" />
+<area shape="rect" href="epydoc.cli.HTMLLogger-class.html#FILENAME" title="epydoc.cli.HTMLLogger.FILENAME" alt="" coords="28,140,223,159" />
+<area shape="rect" href="epydoc.cli.HTMLLogger-class.html#HEADER" title="epydoc.cli.HTMLLogger.HEADER" alt="" coords="28,159,223,178" />
+<area shape="rect" href="epydoc.cli.HTMLLogger-class.html#START_BLOCK" title="epydoc.cli.HTMLLogger.START_BLOCK" alt="" coords="28,178,223,196" />
+<area shape="rect" href="epydoc.cli.HTMLLogger-class.html#MESSAGE" title="epydoc.cli.HTMLLogger.MESSAGE" alt="" coords="28,196,223,215" />
+<area shape="rect" href="epydoc.cli.HTMLLogger-class.html#END_BLOCK" title="epydoc.cli.HTMLLogger.END_BLOCK" alt="" coords="28,215,223,234" />
+<area shape="rect" href="epydoc.cli.HTMLLogger-class.html#FOOTER" title="epydoc.cli.HTMLLogger.FOOTER" alt="" coords="28,234,223,252" />
+<area shape="rect" href="epydoc.cli.HTMLLogger-class.html#__init__" title="epydoc.cli.HTMLLogger.__init__" alt="" coords="28,255,223,274" />
+<area shape="rect" href="epydoc.cli.HTMLLogger-class.html#write_options" title="epydoc.cli.HTMLLogger.write_options" alt="" coords="28,274,223,292" />
+<area shape="rect" href="epydoc.cli.HTMLLogger-class.html#start_block" title="Start a new message block." alt="" coords="28,292,223,311" />
+<area shape="rect" href="epydoc.cli.HTMLLogger-class.html#end_block" title="End a warning block." alt="" coords="28,311,223,330" />
+<area shape="rect" href="epydoc.cli.HTMLLogger-class.html#log" title="Display a message." alt="" coords="28,330,223,348" />
+<area shape="rect" href="epydoc.cli.HTMLLogger-class.html#close" title="Perform any tasks needed to close this logger." alt="" coords="28,348,223,367" />
+<area shape="rect" href="epydoc.cli.HTMLLogger-class.html" title="A logger used to generate a log of all warnings and messages to an HTML file." alt="" coords="16,118,235,374" />
+</map>
+  <img src="uml_class_diagram_for_epydoc_c_2.gif" alt='' usemap="#uml_class_diagram_for_epydoc_c_2" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<p>A logger used to generate a log of all warnings and messages to an 
+  HTML file.</p>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__init__"></a><span class="summary-sig-name">__init__</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">directory</span>,
+        <span class="summary-sig-arg">options</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.cli-pysrc.html#HTMLLogger.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="write_options"></a><span class="summary-sig-name">write_options</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">options</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.cli-pysrc.html#HTMLLogger.write_options">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.cli.HTMLLogger-class.html#start_block" class="summary-sig-name">start_block</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">header</span>)</span><br />
+      Start a new message block.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.cli-pysrc.html#HTMLLogger.start_block">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.cli.HTMLLogger-class.html#end_block" class="summary-sig-name">end_block</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      End a warning block.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.cli-pysrc.html#HTMLLogger.end_block">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.cli.HTMLLogger-class.html#log" class="summary-sig-name">log</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">level</span>,
+        <span class="summary-sig-arg">message</span>)</span><br />
+      Display a message.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.cli-pysrc.html#HTMLLogger.log">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_message"></a><span class="summary-sig-name">_message</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">level</span>,
+        <span class="summary-sig-arg">message</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.cli-pysrc.html#HTMLLogger._message">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.cli.HTMLLogger-class.html#close" class="summary-sig-name">close</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Perform any tasks needed to close this logger.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.cli-pysrc.html#HTMLLogger.close">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_elapsed_time"></a><span class="summary-sig-name">_elapsed_time</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.cli-pysrc.html#HTMLLogger._elapsed_time">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.log.Logger-class.html">log.Logger</a></code></b>:
+      <code><a href="epydoc.log.Logger-class.html#end_progress">end_progress</a></code>,
+      <code><a href="epydoc.log.Logger-class.html#progress">progress</a></code>,
+      <code><a href="epydoc.log.Logger-class.html#start_progress">start_progress</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Class Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-ClassVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="FILENAME"></a><span class="summary-name">FILENAME</span> = <code title="'epydoc-log.html'"><code class="variable-quote">'</code><code class="variable-string">epydoc-log.html</code><code class="variable-quote">'</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.cli.HTMLLogger-class.html#HEADER" class="summary-name">HEADER</a> = <code title="'''<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Epydoc Log</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+</head>
+..."><code class="variable-quote">'</code><code class="variable-string"><?xml version="1.0" encoding="ascii"?>\n<!DOCTYPE ht</code><code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.cli.HTMLLogger-class.html#START_BLOCK" class="summary-name">START_BLOCK</a> = <code title="'<div class="log-block"><h2 class="log-hdr">%s</h2>'"><code class="variable-quote">'</code><code class="variable-string"><div class="log-block"><h2 class="log-hdr">%s</</code><code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="MESSAGE"></a><span class="summary-name">MESSAGE</span> = <code title="'''<div class="log-%s"><b>%s</b>: 
+%s</div>
+'''"><code class="variable-quote">'</code><code class="variable-string"><div class="log-%s"><b>%s</b>: \n%s</div>\n</code><code class="variable-quote">'</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="END_BLOCK"></a><span class="summary-name">END_BLOCK</span> = <code title="'</div>'"><code class="variable-quote">'</code><code class="variable-string"></div></code><code class="variable-quote">'</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="FOOTER"></a><span class="summary-name">FOOTER</span> = <code title="'''</body>
+</html>
+'''"><code class="variable-quote">'</code><code class="variable-string"></body>\n</html>\n</code><code class="variable-quote">'</code></code>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Method Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-MethodDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="start_block"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">start_block</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">header</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.cli-pysrc.html#HTMLLogger.start_block">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Start a new message block.  Any calls to <a 
+  href="epydoc.log-module.html#info" class="link">info()</a>, <a 
+  href="epydoc.log-module.html#warning" class="link">warning()</a>, or <a 
+  href="epydoc.log-module.html#error" class="link">error()</a> that occur 
+  between a call to <code>start_block</code> and a corresponding call to 
+  <code>end_block</code> will be grouped together, and displayed with a 
+  common header. <code>start_block</code> can be called multiple times (to 
+  form nested blocks), but every call to <code>start_block</code> 
+  <i>must</i> be balanced by a call to <code>end_block</code>.</p>
+  <dl class="fields">
+    <dt>Overrides:
+        <a href="epydoc.log.Logger-class.html#start_block">log.Logger.start_block</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="end_block"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">end_block</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.cli-pysrc.html#HTMLLogger.end_block">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>End a warning block.  See <a 
+  href="epydoc.cli.ConsoleLogger-class.html#start_block" 
+  class="link">start_block</a> for details.</p>
+  <dl class="fields">
+    <dt>Overrides:
+        <a href="epydoc.log.Logger-class.html#end_block">log.Logger.end_block</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="log"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">log</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">level</span>,
+        <span class="sig-arg">message</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.cli-pysrc.html#HTMLLogger.log">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Display a message.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>message</code></strong> - The message string to display.  <code>message</code> may contain 
+          newlines, but does not need to end in a newline.</li>
+        <li><strong class="pname"><code>level</code></strong> - An integer value indicating the severity of the message.</li>
+    </ul></dd>
+    <dt>Overrides:
+        <a href="epydoc.log.Logger-class.html#log">log.Logger.log</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="close"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">close</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.cli-pysrc.html#HTMLLogger.close">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Perform any tasks needed to close this logger.</p>
+  <dl class="fields">
+    <dt>Overrides:
+        <a href="epydoc.log.Logger-class.html#close">log.Logger.close</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== CLASS VARIABLE DETAILS ==================== -->
+<a name="section-ClassVariableDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Class Variable Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-ClassVariableDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="HEADER"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">HEADER</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'''</code><code class="variable-string"><?xml version="1.0" encoding="ascii"?></code>
+<code class="variable-string"><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"</code>
+<code class="variable-string">          "DTD/xhtml1-transitional.dtd"></code>
+<code class="variable-string"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"></code>
+<code class="variable-string"><head></code>
+<code class="variable-string">  <title>Epydoc Log</title></code>
+<code class="variable-string">  <link rel="stylesheet" href="epydoc.css" type="text/css" /></code>
+<code class="variable-string"></head></code>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="START_BLOCK"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">START_BLOCK</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string"><div class="log-block"><h2 class="log-hdr">%s</h2></code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:07:36 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.cli.TerminalController-class.html b/doc/api/epydoc.cli.TerminalController-class.html
new file mode 100644
index 0000000..d973890
--- /dev/null
+++ b/doc/api/epydoc.cli.TerminalController-class.html
@@ -0,0 +1,475 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.cli.TerminalController</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.cli-module.html">Module cli</a> ::
+        Class TerminalController
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.cli.TerminalController-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class TerminalController</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.cli-pysrc.html#TerminalController">source code</a></span></p>
+<p>A class that can be used to portably generate formatted output to a 
+  terminal.  See <a 
+  href="http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/475116" 
+  target="_top">http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/475116</a>
+  for documentation.  (This is a somewhat stripped-down version.)</p>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__init__"></a><span class="summary-sig-name">__init__</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">term_stream</span>=<span class="summary-sig-default">sys.stdout</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.cli-pysrc.html#TerminalController.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_tigetstr"></a><span class="summary-sig-name">_tigetstr</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">cap_name</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.cli-pysrc.html#TerminalController._tigetstr">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Class Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-ClassVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="BOL"></a><span class="summary-name">BOL</span> = <code title="''"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></code><br />
+      Move the cursor to the beginning of the line
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="UP"></a><span class="summary-name">UP</span> = <code title="''"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></code><br />
+      Move the cursor up one line
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="DOWN"></a><span class="summary-name">DOWN</span> = <code title="''"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></code><br />
+      Move the cursor down one line
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="LEFT"></a><span class="summary-name">LEFT</span> = <code title="''"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></code><br />
+      Move the cursor left one char
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="RIGHT"></a><span class="summary-name">RIGHT</span> = <code title="''"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></code><br />
+      Move the cursor right one char
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="CLEAR_EOL"></a><span class="summary-name">CLEAR_EOL</span> = <code title="''"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></code><br />
+      Clear to the end of the line.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="CLEAR_LINE"></a><span class="summary-name">CLEAR_LINE</span> = <code title="''"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></code><br />
+      Clear the current line; cursor to BOL.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="BOLD"></a><span class="summary-name">BOLD</span> = <code title="''"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></code><br />
+      Turn on bold mode
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="NORMAL"></a><span class="summary-name">NORMAL</span> = <code title="''"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></code><br />
+      Turn off all modes
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="COLS"></a><span class="summary-name">COLS</span> = <code title="75">75</code><br />
+      Width of the terminal (default to 75)
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="WHITE"></a><span class="summary-name">WHITE</span> = <code title="''"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="YELLOW"></a><span class="summary-name">YELLOW</span> = <code title="''"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="MAGENTA"></a><span class="summary-name">MAGENTA</span> = <code title="''"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="RED"></a><span class="summary-name">RED</span> = <code title="''"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="CYAN"></a><span class="summary-name">CYAN</span> = <code title="''"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="GREEN"></a><span class="summary-name">GREEN</span> = <code title="''"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="BLUE"></a><span class="summary-name">BLUE</span> = <code title="''"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="BLACK"></a><span class="summary-name">BLACK</span> = <code title="''"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></code>
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.cli.TerminalController-class.html#_STRING_CAPABILITIES" class="summary-name" onclick="show_private();">_STRING_CAPABILITIES</a> = <code title="['BOL=cr',
+ 'UP=cuu1',
+ 'DOWN=cud1',
+ 'LEFT=cub1',
+ 'RIGHT=cuf1',
+ 'CLEAR_EOL=el',
+ 'BOLD=bold',
+ 'UNDERLINE=smul',
+..."><code class="variable-group">[</code><code class="variable-quote">'</code><code class="variable-string">BOL=cr</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">UP=cuu1</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">DOWN=cud1</code><code class="variable-quote">'</code><code class="variable-op" [...]
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.cli.TerminalController-class.html#_COLORS" class="summary-name" onclick="show_private();">_COLORS</a> = <code title="['BLACK',
+ 'BLUE',
+ 'GREEN',
+ 'CYAN',
+ 'RED',
+ 'MAGENTA',
+ 'YELLOW',
+ 'WHITE']"><code class="variable-group">[</code><code class="variable-quote">'</code><code class="variable-string">BLACK</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">BLUE</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">GREEN</code><code class="variable-quote">'</code><code class="variable-op">, [...]
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.cli.TerminalController-class.html#_ANSICOLORS" class="summary-name" onclick="show_private();">_ANSICOLORS</a> = <code title="['BLACK',
+ 'RED',
+ 'GREEN',
+ 'YELLOW',
+ 'BLUE',
+ 'MAGENTA',
+ 'CYAN',
+ 'WHITE']"><code class="variable-group">[</code><code class="variable-quote">'</code><code class="variable-string">BLACK</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">RED</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">GREEN</code><code class="variable-quote">'</code><code class="variable-op">,  [...]
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="FORCE_SIMPLE_TERM"></a><span class="summary-name">FORCE_SIMPLE_TERM</span> = <code title="False">False</code><br />
+      If this is set to true, then new TerminalControllers will assume that
+      the terminal is not capable of doing manipulation of any kind.
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLE DETAILS ==================== -->
+<a name="section-ClassVariableDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Class Variable Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-ClassVariableDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="_STRING_CAPABILITIES"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">_STRING_CAPABILITIES</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-group">[</code><code class="variable-quote">'</code><code class="variable-string">BOL=cr</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">UP=cuu1</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">DOWN=cud1</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">LEFT=cub1</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">RIGHT=cuf1</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">CLEAR_EOL=el</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">BOLD=bold</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">UNDERLINE=smul</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="_COLORS"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">_COLORS</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-group">[</code><code class="variable-quote">'</code><code class="variable-string">BLACK</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">BLUE</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">GREEN</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">CYAN</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">RED</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">MAGENTA</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">YELLOW</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">WHITE</code><code class="variable-quote">'</code><code class="variable-group">]</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="_ANSICOLORS"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">_ANSICOLORS</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-group">[</code><code class="variable-quote">'</code><code class="variable-string">BLACK</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">RED</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">GREEN</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">YELLOW</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">BLUE</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">MAGENTA</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">CYAN</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">WHITE</code><code class="variable-quote">'</code><code class="variable-group">]</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:07:36 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.cli.UnifiedProgressConsoleLogger-class.html b/doc/api/epydoc.cli.UnifiedProgressConsoleLogger-class.html
new file mode 100644
index 0000000..6bc601d
--- /dev/null
+++ b/doc/api/epydoc.cli.UnifiedProgressConsoleLogger-class.html
@@ -0,0 +1,439 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.cli.UnifiedProgressConsoleLogger</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.cli-module.html">Module cli</a> ::
+        Class UnifiedProgressConsoleLogger
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.cli.UnifiedProgressConsoleLogger-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class UnifiedProgressConsoleLogger</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.cli-pysrc.html#UnifiedProgressConsoleLogger">source code</a></span></p>
+<center>
+<center>  <map id="uml_class_diagram_for_epydoc_c_3" name="uml_class_diagram_for_epydoc_c_3">
+<area shape="rect" href="epydoc.cli.ConsoleLogger-class.html#reported_message_levels" title="This set contains all the message levels (WARNING, ERROR, etc) that have  been reported." alt="" coords="88,103,280,121" />
+<area shape="rect" href="epydoc.cli.ConsoleLogger-class.html#suppressed_docstring_warning" title="This variable will be incremented once every time a docstring warning is  reported tothe logger, but the verbosity level is too low for it to be  displayed." alt="" coords="88,121,280,140" />
+<area shape="rect" href="epydoc.cli.ConsoleLogger-class.html#start_block" title="Start a new message block." alt="" coords="88,143,280,161" />
+<area shape="rect" href="epydoc.cli.ConsoleLogger-class.html#end_block" title="End a warning block." alt="" coords="88,161,280,180" />
+<area shape="rect" href="epydoc.cli.ConsoleLogger-class.html#log" title="Display a message." alt="" coords="88,180,280,199" />
+<area shape="rect" href="epydoc.cli.ConsoleLogger-class.html" title="epydoc.cli.ConsoleLogger" alt="" coords="76,80,292,205" />
+<area shape="rect" href="epydoc.cli.UnifiedProgressConsoleLogger-class.html#__init__" title="epydoc.cli.UnifiedProgressConsoleLogger.__init__" alt="" coords="17,255,351,273" />
+<area shape="rect" href="epydoc.cli.UnifiedProgressConsoleLogger-class.html#progress" title="Update the progress display." alt="" coords="17,273,351,292" />
+<area shape="rect" href="epydoc.cli.UnifiedProgressConsoleLogger-class.html#start_progress" title="Begin displaying progress for a new task." alt="" coords="17,292,351,311" />
+<area shape="rect" href="epydoc.cli.UnifiedProgressConsoleLogger-class.html#end_progress" title="Finish off the display of progress for the current task." alt="" coords="17,311,351,329" />
+<area shape="rect" href="epydoc.cli.UnifiedProgressConsoleLogger-class.html#print_times" title="epydoc.cli.UnifiedProgressConsoleLogger.print_times" alt="" coords="17,329,351,348" />
+<area shape="rect" href="epydoc.cli.UnifiedProgressConsoleLogger-class.html" title="epydoc.cli.UnifiedProgressConsoleLogger" alt="" coords="5,224,363,355" />
+<area shape="rect" href="epydoc.log.Logger-class.html#close" title="Perform any tasks needed to close this logger." alt="" coords="151,36,217,55" />
+<area shape="rect" href="epydoc.log.Logger-class.html" title="An abstract base class that defines the interface for loggers, which are used by epydoc to report information back to the user." alt="" coords="139,5,229,61" />
+</map>
+  <img src="uml_class_diagram_for_epydoc_c_3.gif" alt='' usemap="#uml_class_diagram_for_epydoc_c_3" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.cli.UnifiedProgressConsoleLogger-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">verbosity</span>,
+        <span class="summary-sig-arg">stages</span>,
+        <span class="summary-sig-arg">progress_mode</span>=<span class="summary-sig-default">None</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.cli-pysrc.html#UnifiedProgressConsoleLogger.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.cli.UnifiedProgressConsoleLogger-class.html#progress" class="summary-sig-name">progress</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">percent</span>,
+        <span class="summary-sig-arg">message</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>)</span><br />
+      Update the progress display.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.cli-pysrc.html#UnifiedProgressConsoleLogger.progress">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.cli.UnifiedProgressConsoleLogger-class.html#start_progress" class="summary-sig-name">start_progress</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">header</span>=<span class="summary-sig-default">None</span>)</span><br />
+      Begin displaying progress for a new task.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.cli-pysrc.html#UnifiedProgressConsoleLogger.start_progress">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.cli.UnifiedProgressConsoleLogger-class.html#end_progress" class="summary-sig-name">end_progress</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Finish off the display of progress for the current task.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.cli-pysrc.html#UnifiedProgressConsoleLogger.end_progress">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.cli.UnifiedProgressConsoleLogger-class.html#print_times" class="summary-sig-name">print_times</a>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.cli-pysrc.html#UnifiedProgressConsoleLogger.print_times">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.cli.ConsoleLogger-class.html">ConsoleLogger</a></code></b>:
+      <code><a href="epydoc.cli.ConsoleLogger-class.html#end_block">end_block</a></code>,
+      <code><a href="epydoc.cli.ConsoleLogger-class.html#log">log</a></code>,
+      <code><a href="epydoc.cli.ConsoleLogger-class.html#start_block">start_block</a></code>
+      </p>
+    <div class="private">    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.cli.ConsoleLogger-class.html">ConsoleLogger</a></code></b> (private):
+      <code><a href="epydoc.cli.ConsoleLogger-class.html#_format" onclick="show_private();">_format</a></code>,
+      <code><a href="epydoc.cli.ConsoleLogger-class.html#_report" onclick="show_private();">_report</a></code>,
+      <code><a href="epydoc.cli.ConsoleLogger-class.html#_timestr" onclick="show_private();">_timestr</a></code>
+      </p></div>
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.log.Logger-class.html">log.Logger</a></code></b>:
+      <code><a href="epydoc.log.Logger-class.html#close">close</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== INSTANCE VARIABLES ==================== -->
+<a name="section-InstanceVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.cli.ConsoleLogger-class.html">ConsoleLogger</a></code></b>:
+      <code><a href="epydoc.cli.ConsoleLogger-class.html#reported_message_levels">reported_message_levels</a></code>,
+      <code><a href="epydoc.cli.ConsoleLogger-class.html#suppressed_docstring_warning">suppressed_docstring_warning</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Method Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-MethodDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">verbosity</span>,
+        <span class="sig-arg">stages</span>,
+        <span class="sig-arg">progress_mode</span>=<span class="sig-default">None</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.cli-pysrc.html#UnifiedProgressConsoleLogger.__init__">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  
+  <dl class="fields">
+    <dt>Overrides:
+        <a href="epydoc.cli.ConsoleLogger-class.html#__init__">ConsoleLogger.__init__</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="progress"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">progress</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">percent</span>,
+        <span class="sig-arg">message</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.cli-pysrc.html#UnifiedProgressConsoleLogger.progress">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Update the progress display.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>percent</code></strong> - A float from 0.0 to 1.0, indicating how much progress has been 
+          made.</li>
+        <li><strong class="pname"><code>message</code></strong> - A message indicating the most recent action that contributed 
+          towards that progress.</li>
+    </ul></dd>
+    <dt>Overrides:
+        <a href="epydoc.log.Logger-class.html#progress">log.Logger.progress</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="start_progress"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">start_progress</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">header</span>=<span class="sig-default">None</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.cli-pysrc.html#UnifiedProgressConsoleLogger.start_progress">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Begin displaying progress for a new task.  <code>header</code> is a 
+  description of the task for which progress is being reported. Each call 
+  to <code>start_progress</code> must be followed by a call to 
+  <code>end_progress</code> (with no intervening calls to 
+  <code>start_progress</code>).</p>
+  <dl class="fields">
+    <dt>Overrides:
+        <a href="epydoc.log.Logger-class.html#start_progress">log.Logger.start_progress</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="end_progress"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">end_progress</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.cli-pysrc.html#UnifiedProgressConsoleLogger.end_progress">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Finish off the display of progress for the current task.  See <a 
+  href="epydoc.cli.ConsoleLogger-class.html#start_progress" 
+  class="link">start_progress</a> for more information.</p>
+  <dl class="fields">
+    <dt>Overrides:
+        <a href="epydoc.log.Logger-class.html#end_progress">log.Logger.end_progress</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="print_times"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">print_times</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.cli-pysrc.html#UnifiedProgressConsoleLogger.print_times">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  
+  <dl class="fields">
+    <dt>Overrides:
+        <a href="epydoc.cli.ConsoleLogger-class.html#print_times">ConsoleLogger.print_times</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:07:37 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.compat-module.html b/doc/api/epydoc.compat-module.html
new file mode 100644
index 0000000..5d5333e
--- /dev/null
+++ b/doc/api/epydoc.compat-module.html
@@ -0,0 +1,176 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.compat</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        Module compat
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.compat-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module compat</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.compat-pysrc.html">source code</a></span></p>
+<p>Backwards compatibility with previous versions of Python.</p>
+  <p>This module provides backwards compatibility by defining several 
+  functions and classes that were not available in earlier versions of 
+  Python.  Intented usage:</p>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">from</span> epydoc.compat <span class="py-keyword">import</span> *</pre>
+  <p>Currently, epydoc requires Python 2.3+.</p>
+
+<!-- ==================== FUNCTIONS ==================== -->
+<a name="section-Functions"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Functions</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Functions"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="sorted"></a><span class="summary-sig-name">sorted</span>(<span class="summary-sig-arg">iterable</span>,
+        <span class="summary-sig-arg">cmp</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">key</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">reverse</span>=<span class="summary-sig-default">False</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.compat-pysrc.html#sorted">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="reversed"></a><span class="summary-sig-name">reversed</span>(<span class="summary-sig-arg">iterable</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.compat-pysrc.html#reversed">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:05:47 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.compat-pysrc.html b/doc/api/epydoc.compat-pysrc.html
new file mode 100644
index 0000000..49eedf2
--- /dev/null
+++ b/doc/api/epydoc.compat-pysrc.html
@@ -0,0 +1,371 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.compat</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        Module compat
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.compat-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="epydoc.compat-module.html">Module epydoc.compat</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno">  1</tt>  <tt class="py-line"><tt class="py-comment"># epydoc -- Backwards compatibility</tt> </tt>
+<a name="L2"></a><tt class="py-lineno">  2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L3"></a><tt class="py-lineno">  3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2005 Edward Loper</tt> </tt>
+<a name="L4"></a><tt class="py-lineno">  4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Author: Edward Loper <edloper at loper.org></tt> </tt>
+<a name="L5"></a><tt class="py-lineno">  5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># URL: <http://epydoc.sf.net></tt> </tt>
+<a name="L6"></a><tt class="py-lineno">  6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L7"></a><tt class="py-lineno">  7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># $Id: util.py 956 2006-03-10 01:30:51Z edloper $</tt> </tt>
+<a name="L8"></a><tt class="py-lineno">  8</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L9"></a><tt class="py-lineno">  9</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L10"></a><tt class="py-lineno"> 10</tt>  <tt class="py-line"><tt class="py-docstring">Backwards compatibility with previous versions of Python.</tt> </tt>
+<a name="L11"></a><tt class="py-lineno"> 11</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L12"></a><tt class="py-lineno"> 12</tt>  <tt class="py-line"><tt class="py-docstring">This module provides backwards compatibility by defining several</tt> </tt>
+<a name="L13"></a><tt class="py-lineno"> 13</tt>  <tt class="py-line"><tt class="py-docstring">functions and classes that were not available in earlier versions of</tt> </tt>
+<a name="L14"></a><tt class="py-lineno"> 14</tt>  <tt class="py-line"><tt class="py-docstring">Python.  Intented usage:</tt> </tt>
+<a name="L15"></a><tt class="py-lineno"> 15</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L16"></a><tt class="py-lineno"> 16</tt>  <tt class="py-line"><tt class="py-docstring">    >>> from epydoc.compat import *</tt> </tt>
+<a name="L17"></a><tt class="py-lineno"> 17</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L18"></a><tt class="py-lineno"> 18</tt>  <tt class="py-line"><tt class="py-docstring">Currently, epydoc requires Python 2.3+.</tt> </tt>
+<a name="L19"></a><tt class="py-lineno"> 19</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L20"></a><tt class="py-lineno"> 20</tt>  <tt class="py-line"><tt class="py-name">__docformat__</tt> <tt class="py-op">=</tt> <tt class="py-string">'epytext'</tt> </tt>
+<a name="L21"></a><tt class="py-lineno"> 21</tt>  <tt class="py-line"> </tt>
+<a name="L22"></a><tt class="py-lineno"> 22</tt>  <tt class="py-line"><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L23"></a><tt class="py-lineno"> 23</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#{ New in Python 2.4</tt> </tt>
+<a name="L24"></a><tt class="py-lineno"> 24</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L25"></a><tt class="py-lineno"> 25</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L26"></a><tt class="py-lineno"> 26</tt>  <tt class="py-line"><tt class="py-comment"># set</tt> </tt>
+<a name="L27"></a><tt class="py-lineno"> 27</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L28"></a><tt class="py-lineno"> 28</tt>  <tt class="py-line">    <tt class="py-name">set</tt> </tt>
+<a name="L29"></a><tt class="py-lineno"> 29</tt>  <tt class="py-line"><tt class="py-keyword">except</tt> <tt class="py-name">NameError</tt><tt class="py-op">:</tt> </tt>
+<a name="L30"></a><tt class="py-lineno"> 30</tt>  <tt class="py-line">    <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L31"></a><tt class="py-lineno"> 31</tt>  <tt class="py-line">        <tt class="py-keyword">from</tt> <tt class="py-name">sets</tt> <tt class="py-keyword">import</tt> <tt class="py-name">Set</tt> <tt class="py-name">as</tt> <tt class="py-name">set</tt><tt class="py-op">,</tt> <tt class="py-name">ImmutableSet</tt> <tt class="py-name">as</tt> <tt class="py-name">frozenset</tt> </tt>
+<a name="L32"></a><tt class="py-lineno"> 32</tt>  <tt class="py-line">    <tt class="py-keyword">except</tt> <tt class="py-name">ImportError</tt><tt class="py-op">:</tt> </tt>
+<a name="L33"></a><tt class="py-lineno"> 33</tt>  <tt class="py-line">        <tt class="py-keyword">pass</tt> <tt class="py-comment"># use fallback, in the next section.</tt> </tt>
+<a name="L34"></a><tt class="py-lineno"> 34</tt>  <tt class="py-line"> </tt>
+<a name="L35"></a><tt class="py-lineno"> 35</tt>  <tt class="py-line"><tt class="py-comment"># sorted</tt> </tt>
+<a name="L36"></a><tt class="py-lineno"> 36</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">try</tt><tt class="py-op">:</tt>  </tt>
+<a name="L37"></a><tt class="py-lineno"> 37</tt>  <tt class="py-line">    <tt id="link-0" class="py-name" targets="Function epydoc.compat.sorted()=epydoc.compat-module.html#sorted"><a title="epydoc.compat.sorted" class="py-name" href="#" onclick="return doclink('link-0', 'sorted', 'link-0');">sorted</a></tt> </tt>
+<a name="L38"></a><tt class="py-lineno"> 38</tt>  <tt class="py-line"><tt class="py-keyword">except</tt> <tt class="py-name">NameError</tt><tt class="py-op">:</tt> </tt>
+<a name="sorted"></a><div id="sorted-def"><a name="L39"></a><tt class="py-lineno"> 39</tt> <a class="py-toggle" href="#" id="sorted-toggle" onclick="return toggle('sorted');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.compat-module.html#sorted">sorted</a><tt class="py-op">(</tt><tt class="py-param">iterable</tt><tt class="py-op">,</tt> <tt class="py-param">cmp</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op"> [...]
+</div><div id="sorted-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="sorted-expanded"><a name="L40"></a><tt class="py-lineno"> 40</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-1" class="py-name" targets="Variable epydoc.cli.key=epydoc.cli-module.html#key"><a title="epydoc.cli.key" class="py-name" href="#" onclick="return doclink('link-1', 'key', 'link-1');">key</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</t [...]
+<a name="L41"></a><tt class="py-lineno"> 41</tt>  <tt class="py-line">            <tt class="py-name">elts</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">iterable</tt><tt class="py-op">)</tt> </tt>
+<a name="L42"></a><tt class="py-lineno"> 42</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L43"></a><tt class="py-lineno"> 43</tt>  <tt class="py-line">            <tt class="py-name">elts</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt id="link-2" class="py-name"><a title="epydoc.cli.key" class="py-name" href="#" onclick="return doclink('link-2', 'key', 'link-1');">key</a></tt><tt class="py-op">(</tt><tt id="link-3" class="py-name" targets="Variable epydoc.markup.restructuredtext._EpydocReader.v=epydoc.markup.restructuredtext._Epydoc [...]
+<a name="L44"></a><tt class="py-lineno"> 44</tt>  <tt class="py-line"> </tt>
+<a name="L45"></a><tt class="py-lineno"> 45</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">reverse</tt><tt class="py-op">:</tt> <tt class="py-name">elts</tt><tt class="py-op">.</tt><tt class="py-name">reverse</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-comment"># stable sort.</tt> </tt>
+<a name="L46"></a><tt class="py-lineno"> 46</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">cmp</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> <tt class="py-name">elts</tt><tt class="py-op">.</tt><tt class="py-name">sort</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L47"></a><tt class="py-lineno"> 47</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> <tt class="py-name">elts</tt><tt class="py-op">.</tt><tt class="py-name">sort</tt><tt class="py-op">(</tt><tt class="py-name">cmp</tt><tt class="py-op">)</tt> </tt>
+<a name="L48"></a><tt class="py-lineno"> 48</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">reverse</tt><tt class="py-op">:</tt> <tt class="py-name">elts</tt><tt class="py-op">.</tt><tt class="py-name">reverse</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L49"></a><tt class="py-lineno"> 49</tt>  <tt class="py-line">     </tt>
+<a name="L50"></a><tt class="py-lineno"> 50</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-6" class="py-name"><a title="epydoc.cli.key" class="py-name" href="#" onclick="return doclink('link-6', 'key', 'link-1');">key</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L51"></a><tt class="py-lineno"> 51</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">elts</tt> </tt>
+<a name="L52"></a><tt class="py-lineno"> 52</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L53"></a><tt class="py-lineno"> 53</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-op">[</tt><tt id="link-7" class="py-name"><a title="epydoc.markup.restructuredtext._EpydocReader.v" class="py-name" href="#" onclick="return doclink('link-7', 'v', 'link-3');">v</a></tt> <tt class="py-keyword">for</tt> <tt class="py-op">(</tt><tt class="py-name">k</tt><tt class="py-op">,</tt><tt id="link-8" class="py-name"><a title="epydoc.markup.restructured [...]
+</div><a name="L54"></a><tt class="py-lineno"> 54</tt>  <tt class="py-line"> </tt>
+<a name="L55"></a><tt class="py-lineno"> 55</tt>  <tt class="py-line"><tt class="py-comment"># reversed</tt> </tt>
+<a name="L56"></a><tt class="py-lineno"> 56</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">try</tt><tt class="py-op">:</tt>  </tt>
+<a name="L57"></a><tt class="py-lineno"> 57</tt>  <tt class="py-line">    <tt id="link-9" class="py-name" targets="Function epydoc.compat.reversed()=epydoc.compat-module.html#reversed"><a title="epydoc.compat.reversed" class="py-name" href="#" onclick="return doclink('link-9', 'reversed', 'link-9');">reversed</a></tt> </tt>
+<a name="L58"></a><tt class="py-lineno"> 58</tt>  <tt class="py-line"><tt class="py-keyword">except</tt> <tt class="py-name">NameError</tt><tt class="py-op">:</tt> </tt>
+<a name="reversed"></a><div id="reversed-def"><a name="L59"></a><tt class="py-lineno"> 59</tt> <a class="py-toggle" href="#" id="reversed-toggle" onclick="return toggle('reversed');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.compat-module.html#reversed">reversed</a><tt class="py-op">(</tt><tt class="py-param">iterable</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="reversed-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="reversed-expanded"><a name="L60"></a><tt class="py-lineno"> 60</tt>  <tt class="py-line">        <tt class="py-name">elts</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">iterable</tt><tt class="py-op">)</tt> </tt>
+<a name="L61"></a><tt class="py-lineno"> 61</tt>  <tt class="py-line">        <tt class="py-name">elts</tt><tt class="py-op">.</tt><tt class="py-name">reverse</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L62"></a><tt class="py-lineno"> 62</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">elts</tt> </tt>
+</div><a name="L63"></a><tt class="py-lineno"> 63</tt>  <tt class="py-line"> </tt>
+<a name="L64"></a><tt class="py-lineno"> 64</tt>  <tt class="py-line"><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L65"></a><tt class="py-lineno"> 65</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#{ New in Python 2.3</tt> </tt>
+<a name="L66"></a><tt class="py-lineno"> 66</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L67"></a><tt class="py-lineno"> 67</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Below is my initial attempt at backporting enough code that </tt> </tt>
+<a name="L68"></a><tt class="py-lineno"> 68</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># epydoc 3 would run under python 2.2.  However, I'm starting</tt> </tt>
+<a name="L69"></a><tt class="py-lineno"> 69</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># to think that it's not worth the trouble.  At the very least,</tt> </tt>
+<a name="L70"></a><tt class="py-lineno"> 70</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># epydoc's current unicode handling still doesn't work under</tt> </tt>
+<a name="L71"></a><tt class="py-lineno"> 71</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># 2.2 (after the backports below), since the 'xmlcharrefreplace'</tt> </tt>
+<a name="L72"></a><tt class="py-lineno"> 72</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># error handler was introduced in python 2.3.</tt> </tt>
+<a name="L73"></a><tt class="py-lineno"> 73</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L74"></a><tt class="py-lineno"> 74</tt>  <tt class="py-line"><tt class="py-comment"># # basestring</tt> </tt>
+<a name="L75"></a><tt class="py-lineno"> 75</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># try:</tt> </tt>
+<a name="L76"></a><tt class="py-lineno"> 76</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#     basestring</tt> </tt>
+<a name="L77"></a><tt class="py-lineno"> 77</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># except NameError:</tt> </tt>
+<a name="L78"></a><tt class="py-lineno"> 78</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#     basestring = (str, unicode)</tt> </tt>
+<a name="L79"></a><tt class="py-lineno"> 79</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L80"></a><tt class="py-lineno"> 80</tt>  <tt class="py-line"><tt class="py-comment"># # sum</tt> </tt>
+<a name="L81"></a><tt class="py-lineno"> 81</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># try:</tt> </tt>
+<a name="L82"></a><tt class="py-lineno"> 82</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#     sum</tt> </tt>
+<a name="L83"></a><tt class="py-lineno"> 83</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># except NameError:</tt> </tt>
+<a name="L84"></a><tt class="py-lineno"> 84</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#     def _add(a,b): return a+b</tt> </tt>
+<a name="L85"></a><tt class="py-lineno"> 85</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#     def sum(vals): return reduce(_add, vals, 0)</tt> </tt>
+<a name="L86"></a><tt class="py-lineno"> 86</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L87"></a><tt class="py-lineno"> 87</tt>  <tt class="py-line"><tt class="py-comment"># # True & False</tt> </tt>
+<a name="L88"></a><tt class="py-lineno"> 88</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># try:</tt> </tt>
+<a name="L89"></a><tt class="py-lineno"> 89</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#     True</tt> </tt>
+<a name="L90"></a><tt class="py-lineno"> 90</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># except NameError:</tt> </tt>
+<a name="L91"></a><tt class="py-lineno"> 91</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#     True = 1</tt> </tt>
+<a name="L92"></a><tt class="py-lineno"> 92</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#     False = 0</tt> </tt>
+<a name="L93"></a><tt class="py-lineno"> 93</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L94"></a><tt class="py-lineno"> 94</tt>  <tt class="py-line"><tt class="py-comment"># # enumerate</tt> </tt>
+<a name="L95"></a><tt class="py-lineno"> 95</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># try:</tt> </tt>
+<a name="L96"></a><tt class="py-lineno"> 96</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#     enumerate</tt> </tt>
+<a name="L97"></a><tt class="py-lineno"> 97</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># except NameError:</tt> </tt>
+<a name="L98"></a><tt class="py-lineno"> 98</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#     def enumerate(iterable):</tt> </tt>
+<a name="L99"></a><tt class="py-lineno"> 99</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#         lst = list(iterable)</tt> </tt>
+<a name="L100"></a><tt class="py-lineno">100</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#         return zip(range(len(lst)), lst)</tt> </tt>
+<a name="L101"></a><tt class="py-lineno">101</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L102"></a><tt class="py-lineno">102</tt>  <tt class="py-line"><tt class="py-comment"># # set</tt> </tt>
+<a name="L103"></a><tt class="py-lineno">103</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># try:</tt> </tt>
+<a name="L104"></a><tt class="py-lineno">104</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#     set</tt> </tt>
+<a name="L105"></a><tt class="py-lineno">105</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># except NameError:</tt> </tt>
+<a name="L106"></a><tt class="py-lineno">106</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#     class set(dict):</tt> </tt>
+<a name="L107"></a><tt class="py-lineno">107</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#         def __init__(self, elts=()):</tt> </tt>
+<a name="L108"></a><tt class="py-lineno">108</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#             dict.__init__(self, [(e,1) for e in elts])</tt> </tt>
+<a name="L109"></a><tt class="py-lineno">109</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#         def __repr__(self):</tt> </tt>
+<a name="L110"></a><tt class="py-lineno">110</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#             return 'set(%r)' % list(self)</tt> </tt>
+<a name="L111"></a><tt class="py-lineno">111</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#         def add(self, key): self[key] = 1</tt> </tt>
+<a name="L112"></a><tt class="py-lineno">112</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#         def copy(self):</tt> </tt>
+<a name="L113"></a><tt class="py-lineno">113</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#             return set(dict.copy(self))</tt> </tt>
+<a name="L114"></a><tt class="py-lineno">114</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#         def difference(self, other):</tt> </tt>
+<a name="L115"></a><tt class="py-lineno">115</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#             return set([v for v in self if v not in other])</tt> </tt>
+<a name="L116"></a><tt class="py-lineno">116</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#         def difference_udpate(self, other):</tt> </tt>
+<a name="L117"></a><tt class="py-lineno">117</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#             newval = self.difference(other)</tt> </tt>
+<a name="L118"></a><tt class="py-lineno">118</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#             self.clear(); self.update(newval)</tt> </tt>
+<a name="L119"></a><tt class="py-lineno">119</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#         def discard(self, elt):</tt> </tt>
+<a name="L120"></a><tt class="py-lineno">120</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#             try: del self[elt]</tt> </tt>
+<a name="L121"></a><tt class="py-lineno">121</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#             except: pass</tt> </tt>
+<a name="L122"></a><tt class="py-lineno">122</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#         def intersection(self, other):</tt> </tt>
+<a name="L123"></a><tt class="py-lineno">123</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#             return self.copy().update(other)</tt> </tt>
+<a name="L124"></a><tt class="py-lineno">124</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#         def intersection_update(self, other):</tt> </tt>
+<a name="L125"></a><tt class="py-lineno">125</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#             newval = self.intersection(other)</tt> </tt>
+<a name="L126"></a><tt class="py-lineno">126</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#             self.clear(); self.update(newval)</tt> </tt>
+<a name="L127"></a><tt class="py-lineno">127</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#         def issubset(self, other):</tt> </tt>
+<a name="L128"></a><tt class="py-lineno">128</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#             for elt in self:</tt> </tt>
+<a name="L129"></a><tt class="py-lineno">129</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#                 if elt not in other: return False</tt> </tt>
+<a name="L130"></a><tt class="py-lineno">130</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#             return True</tt> </tt>
+<a name="L131"></a><tt class="py-lineno">131</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#         def issuperset(self, other):</tt> </tt>
+<a name="L132"></a><tt class="py-lineno">132</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#             for elt in other:</tt> </tt>
+<a name="L133"></a><tt class="py-lineno">133</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#                 if elt not in self: return False</tt> </tt>
+<a name="L134"></a><tt class="py-lineno">134</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#             return True</tt> </tt>
+<a name="L135"></a><tt class="py-lineno">135</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#         def pop(self): self.popitem()[0]</tt> </tt>
+<a name="L136"></a><tt class="py-lineno">136</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#         def remove(self, elt): del self[elt]</tt> </tt>
+<a name="L137"></a><tt class="py-lineno">137</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#         def symmetric_difference(self, other):</tt> </tt>
+<a name="L138"></a><tt class="py-lineno">138</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#             return set([v for v in list(self)+list(other)</tt> </tt>
+<a name="L139"></a><tt class="py-lineno">139</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#                         if (v in self)^(v in other)])</tt> </tt>
+<a name="L140"></a><tt class="py-lineno">140</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#         def symmatric_difference_update(self, other):</tt> </tt>
+<a name="L141"></a><tt class="py-lineno">141</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#             newval = self.symmetric_difference(other)</tt> </tt>
+<a name="L142"></a><tt class="py-lineno">142</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#             self.clear(); self.update(newval)</tt> </tt>
+<a name="L143"></a><tt class="py-lineno">143</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#         def union(self, other):</tt> </tt>
+<a name="L144"></a><tt class="py-lineno">144</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#             return set([v for v in list(self)+list(other)</tt> </tt>
+<a name="L145"></a><tt class="py-lineno">145</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#                         if (v in self) or (v in other)])</tt> </tt>
+<a name="L146"></a><tt class="py-lineno">146</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#         def union_update(self, other):</tt> </tt>
+<a name="L147"></a><tt class="py-lineno">147</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#             newval = self.union(other)</tt> </tt>
+<a name="L148"></a><tt class="py-lineno">148</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#             self.clear(); self.update(newval)</tt> </tt>
+<a name="L149"></a><tt class="py-lineno">149</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#         def update(self, other):</tt> </tt>
+<a name="L150"></a><tt class="py-lineno">150</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#             dict.update(self, set(other))</tt> </tt>
+<a name="L151"></a><tt class="py-lineno">151</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L152"></a><tt class="py-lineno">152</tt>  <tt class="py-line"><tt class="py-comment"># # optparse module</tt> </tt>
+<a name="L153"></a><tt class="py-lineno">153</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># try:</tt> </tt>
+<a name="L154"></a><tt class="py-lineno">154</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#     import optparse</tt> </tt>
+<a name="L155"></a><tt class="py-lineno">155</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># except ImportError:</tt> </tt>
+<a name="L156"></a><tt class="py-lineno">156</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#     import new, sys, getopt</tt> </tt>
+<a name="L157"></a><tt class="py-lineno">157</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#     class _OptionVals:</tt> </tt>
+<a name="L158"></a><tt class="py-lineno">158</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#         def __init__(self, vals): self.__dict__.update(vals)</tt> </tt>
+<a name="L159"></a><tt class="py-lineno">159</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#     class OptionParser:</tt> </tt>
+<a name="L160"></a><tt class="py-lineno">160</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#         def __init__(self, usage=None, version=None):</tt> </tt>
+<a name="L161"></a><tt class="py-lineno">161</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#             self.usage = usage</tt> </tt>
+<a name="L162"></a><tt class="py-lineno">162</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#             self.version = version</tt> </tt>
+<a name="L163"></a><tt class="py-lineno">163</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#             self.shortops = ['h']</tt> </tt>
+<a name="L164"></a><tt class="py-lineno">164</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#             self.longops = []</tt> </tt>
+<a name="L165"></a><tt class="py-lineno">165</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#             self.option_specs = {}</tt> </tt>
+<a name="L166"></a><tt class="py-lineno">166</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#             self.defaults = {}</tt> </tt>
+<a name="L167"></a><tt class="py-lineno">167</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#         def fail(self, message, exitval=1):</tt> </tt>
+<a name="L168"></a><tt class="py-lineno">168</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#             print >>sys.stderr, message</tt> </tt>
+<a name="L169"></a><tt class="py-lineno">169</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#             system.exit(exitval)</tt> </tt>
+<a name="L170"></a><tt class="py-lineno">170</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#         def add_option_group(self, group): pass</tt> </tt>
+<a name="L171"></a><tt class="py-lineno">171</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#         def set_defaults(self, **defaults):</tt> </tt>
+<a name="L172"></a><tt class="py-lineno">172</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#             self.defaults = defaults.copy()</tt> </tt>
+<a name="L173"></a><tt class="py-lineno">173</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#         def parse_args(self):</tt> </tt>
+<a name="L174"></a><tt class="py-lineno">174</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#             try:</tt> </tt>
+<a name="L175"></a><tt class="py-lineno">175</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#                 (opts, names) = getopt.getopt(sys.argv[1:],</tt> </tt>
+<a name="L176"></a><tt class="py-lineno">176</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#                                               ''.join(self.shortops),</tt> </tt>
+<a name="L177"></a><tt class="py-lineno">177</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#                                               self.longops)</tt> </tt>
+<a name="L178"></a><tt class="py-lineno">178</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#             except getopt.GetoptError, e:</tt> </tt>
+<a name="L179"></a><tt class="py-lineno">179</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#                 self.fail(e)</tt> </tt>
+<a name="L180"></a><tt class="py-lineno">180</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L181"></a><tt class="py-lineno">181</tt>  <tt class="py-line"><tt class="py-comment">#             options = self.defaults.copy()</tt> </tt>
+<a name="L182"></a><tt class="py-lineno">182</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#             for (opt,val) in opts:</tt> </tt>
+<a name="L183"></a><tt class="py-lineno">183</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#                 if opt == '-h':</tt> </tt>
+<a name="L184"></a><tt class="py-lineno">184</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#                     self.fail('No help available')</tt> </tt>
+<a name="L185"></a><tt class="py-lineno">185</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#                 if opt not in self.option_specs:</tt> </tt>
+<a name="L186"></a><tt class="py-lineno">186</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#                     self.fail('Unknown option %s' % opt)</tt> </tt>
+<a name="L187"></a><tt class="py-lineno">187</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#                 (action, dest, const) = self.option_specs[opt]</tt> </tt>
+<a name="L188"></a><tt class="py-lineno">188</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#                 if action == 'store':</tt> </tt>
+<a name="L189"></a><tt class="py-lineno">189</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#                     options[dest] = val</tt> </tt>
+<a name="L190"></a><tt class="py-lineno">190</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#                 elif action == 'store_const':</tt> </tt>
+<a name="L191"></a><tt class="py-lineno">191</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#                     options[dest] = const</tt> </tt>
+<a name="L192"></a><tt class="py-lineno">192</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#                 elif action == 'count':</tt> </tt>
+<a name="L193"></a><tt class="py-lineno">193</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#                     options[dest] = options.get(dest,0)+1</tt> </tt>
+<a name="L194"></a><tt class="py-lineno">194</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#                 elif action == 'append':</tt> </tt>
+<a name="L195"></a><tt class="py-lineno">195</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#                     options.setdefault(dest, []).append(val)</tt> </tt>
+<a name="L196"></a><tt class="py-lineno">196</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#                 else:</tt> </tt>
+<a name="L197"></a><tt class="py-lineno">197</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#                     self.fail('unsupported action: %s' % action)</tt> </tt>
+<a name="L198"></a><tt class="py-lineno">198</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#             for (action,dest,const) in self.option_specs.values():</tt> </tt>
+<a name="L199"></a><tt class="py-lineno">199</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#                 if dest not in options:</tt> </tt>
+<a name="L200"></a><tt class="py-lineno">200</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#                     if action == 'count': options[dest] = 0</tt> </tt>
+<a name="L201"></a><tt class="py-lineno">201</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#                     elif action == 'append': options[dest] = []</tt> </tt>
+<a name="L202"></a><tt class="py-lineno">202</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#                     else: options[dest] = None</tt> </tt>
+<a name="L203"></a><tt class="py-lineno">203</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#             for name in names:</tt> </tt>
+<a name="L204"></a><tt class="py-lineno">204</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#                 if name.startswith('-'):</tt> </tt>
+<a name="L205"></a><tt class="py-lineno">205</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#                     self.fail('names must follow options')</tt> </tt>
+<a name="L206"></a><tt class="py-lineno">206</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#             return _OptionVals(options), names</tt> </tt>
+<a name="L207"></a><tt class="py-lineno">207</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#     class OptionGroup:</tt> </tt>
+<a name="L208"></a><tt class="py-lineno">208</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#         def __init__(self, optparser, name):</tt> </tt>
+<a name="L209"></a><tt class="py-lineno">209</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#             self.optparser = optparser</tt> </tt>
+<a name="L210"></a><tt class="py-lineno">210</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#             self.name = name</tt> </tt>
+<a name="L211"></a><tt class="py-lineno">211</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L212"></a><tt class="py-lineno">212</tt>  <tt class="py-line"><tt class="py-comment">#         def add_option(self, *args, **kwargs):</tt> </tt>
+<a name="L213"></a><tt class="py-lineno">213</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#             action = 'store'</tt> </tt>
+<a name="L214"></a><tt class="py-lineno">214</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#             dest = None</tt> </tt>
+<a name="L215"></a><tt class="py-lineno">215</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#             const = None</tt> </tt>
+<a name="L216"></a><tt class="py-lineno">216</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#             for (key,val) in kwargs.items():</tt> </tt>
+<a name="L217"></a><tt class="py-lineno">217</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#                 if key == 'action': action = val</tt> </tt>
+<a name="L218"></a><tt class="py-lineno">218</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#                 elif key == 'dest': dest = val</tt> </tt>
+<a name="L219"></a><tt class="py-lineno">219</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#                 elif key == 'const': const = val</tt> </tt>
+<a name="L220"></a><tt class="py-lineno">220</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#                 elif key in ('help', 'metavar'): pass</tt> </tt>
+<a name="L221"></a><tt class="py-lineno">221</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#                 else: self.fail('unsupported: %s' % key)</tt> </tt>
+<a name="L222"></a><tt class="py-lineno">222</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L223"></a><tt class="py-lineno">223</tt>  <tt class="py-line"><tt class="py-comment">#             if action not in ('store_const', 'store_true', 'store_false',</tt> </tt>
+<a name="L224"></a><tt class="py-lineno">224</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#                               'store', 'count', 'append'):</tt> </tt>
+<a name="L225"></a><tt class="py-lineno">225</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#                 self.fail('unsupported action: %s' % action)</tt> </tt>
+<a name="L226"></a><tt class="py-lineno">226</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L227"></a><tt class="py-lineno">227</tt>  <tt class="py-line"><tt class="py-comment">#             optparser = self.optparser</tt> </tt>
+<a name="L228"></a><tt class="py-lineno">228</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#             for arg in args:</tt> </tt>
+<a name="L229"></a><tt class="py-lineno">229</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#                 if arg.startswith('--'):</tt> </tt>
+<a name="L230"></a><tt class="py-lineno">230</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#                     optparser.longops.append(arg[2:])</tt> </tt>
+<a name="L231"></a><tt class="py-lineno">231</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#                 elif arg.startswith('-') and len(arg)==2:</tt> </tt>
+<a name="L232"></a><tt class="py-lineno">232</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#                     optparser.shortops += arg[1]</tt> </tt>
+<a name="L233"></a><tt class="py-lineno">233</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#                     if action in ('store', 'append'):</tt> </tt>
+<a name="L234"></a><tt class="py-lineno">234</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#                         optparser.shortops += ':'</tt> </tt>
+<a name="L235"></a><tt class="py-lineno">235</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#                 else:</tt> </tt>
+<a name="L236"></a><tt class="py-lineno">236</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#                     self.fail('bad option name %s' % arg)</tt> </tt>
+<a name="L237"></a><tt class="py-lineno">237</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#                 if action == 'store_true':</tt> </tt>
+<a name="L238"></a><tt class="py-lineno">238</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#                     (action, const) = ('store_const', True)</tt> </tt>
+<a name="L239"></a><tt class="py-lineno">239</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#                 if action == 'store_false':</tt> </tt>
+<a name="L240"></a><tt class="py-lineno">240</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#                     (action, const) = ('store_const', False)</tt> </tt>
+<a name="L241"></a><tt class="py-lineno">241</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#                 optparser.option_specs[arg] = (action, dest, const)</tt> </tt>
+<a name="L242"></a><tt class="py-lineno">242</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L243"></a><tt class="py-lineno">243</tt>  <tt class="py-line"><tt class="py-comment">#     # Install a fake module.</tt> </tt>
+<a name="L244"></a><tt class="py-lineno">244</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#     optparse = new.module('optparse')</tt> </tt>
+<a name="L245"></a><tt class="py-lineno">245</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#     optparse.OptionParser = OptionParser</tt> </tt>
+<a name="L246"></a><tt class="py-lineno">246</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#     optparse.OptionGroup = OptionGroup</tt> </tt>
+<a name="L247"></a><tt class="py-lineno">247</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#     sys.modules['optparse'] = optparse</tt> </tt>
+<a name="L248"></a><tt class="py-lineno">248</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#     # Clean up</tt> </tt>
+<a name="L249"></a><tt class="py-lineno">249</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#     del OptionParser, OptionGroup</tt> </tt>
+<a name="L250"></a><tt class="py-lineno">250</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:09:52 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.css b/doc/api/epydoc.css
new file mode 100644
index 0000000..86d4170
--- /dev/null
+++ b/doc/api/epydoc.css
@@ -0,0 +1,322 @@
+
+
+/* Epydoc CSS Stylesheet
+ *
+ * This stylesheet can be used to customize the appearance of epydoc's
+ * HTML output.
+ *
+ */
+
+/* Default Colors & Styles
+ *   - Set the default foreground & background color with 'body'; and 
+ *     link colors with 'a:link' and 'a:visited'.
+ *   - Use bold for decision list terms.
+ *   - The heading styles defined here are used for headings *within*
+ *     docstring descriptions.  All headings used by epydoc itself use
+ *     either class='epydoc' or class='toc' (CSS styles for both
+ *     defined below).
+ */
+body                        { background: #ffffff; color: #000000; }
+p                           { margin-top: 0.5em; margin-bottom: 0.5em; }
+a:link                      { color: #0000ff; }
+a:visited                   { color: #204080; }
+dt                          { font-weight: bold; }
+h1                          { font-size: +140%; font-style: italic;
+                              font-weight: bold; }
+h2                          { font-size: +125%; font-style: italic;
+                              font-weight: bold; }
+h3                          { font-size: +110%; font-style: italic;
+                              font-weight: normal; }
+code                        { font-size: 100%; }
+/* N.B.: class, not pseudoclass */
+a.link                      { font-family: monospace; }
+ 
+/* Page Header & Footer
+ *   - The standard page header consists of a navigation bar (with
+ *     pointers to standard pages such as 'home' and 'trees'); a
+ *     breadcrumbs list, which can be used to navigate to containing
+ *     classes or modules; options links, to show/hide private
+ *     variables and to show/hide frames; and a page title (using
+ *     <h1>).  The page title may be followed by a link to the
+ *     corresponding source code (using 'span.codelink').
+ *   - The footer consists of a navigation bar, a timestamp, and a
+ *     pointer to epydoc's homepage.
+ */ 
+h1.epydoc                   { margin: 0; font-size: +140%; font-weight: bold; }
+h2.epydoc                   { font-size: +130%; font-weight: bold; }
+h3.epydoc                   { font-size: +115%; font-weight: bold;
+                              margin-top: 0.2em; }
+td h3.epydoc                { font-size: +115%; font-weight: bold;
+                              margin-bottom: 0; }
+table.navbar                { background: #a0c0ff; color: #000000;
+                              border: 2px groove #c0d0d0; }
+table.navbar table          { color: #000000; }
+th.navbar-select            { background: #70b0ff;
+                              color: #000000; } 
+table.navbar a              { text-decoration: none; }  
+table.navbar a:link         { color: #0000ff; }
+table.navbar a:visited      { color: #204080; }
+span.breadcrumbs            { font-size: 85%; font-weight: bold; }
+span.options                { font-size: 70%; }
+span.codelink               { font-size: 85%; }
+td.footer                   { font-size: 85%; }
+
+/* Table Headers
+ *   - Each summary table and details section begins with a 'header'
+ *     row.  This row contains a section title (marked by
+ *     'span.table-header') as well as a show/hide private link
+ *     (marked by 'span.options', defined above).
+ *   - Summary tables that contain user-defined groups mark those
+ *     groups using 'group header' rows.
+ */
+td.table-header             { background: #70b0ff; color: #000000;
+                              border: 1px solid #608090; }
+td.table-header table       { color: #000000; }
+td.table-header table a:link      { color: #0000ff; }
+td.table-header table a:visited   { color: #204080; }
+span.table-header           { font-size: 120%; font-weight: bold; }
+th.group-header             { background: #c0e0f8; color: #000000;
+                              text-align: left; font-style: italic; 
+                              font-size: 115%; 
+                              border: 1px solid #608090; }
+
+/* Summary Tables (functions, variables, etc)
+ *   - Each object is described by a single row of the table with
+ *     two cells.  The left cell gives the object's type, and is
+ *     marked with 'code.summary-type'.  The right cell gives the
+ *     object's name and a summary description.
+ *   - CSS styles for the table's header and group headers are
+ *     defined above, under 'Table Headers'
+ */
+table.summary               { border-collapse: collapse;
+                              background: #e8f0f8; color: #000000;
+                              border: 1px solid #608090;
+                              margin-bottom: 0.5em; }
+td.summary                  { border: 1px solid #608090; }
+code.summary-type           { font-size: 85%; }
+table.summary a:link        { color: #0000ff; }
+table.summary a:visited     { color: #204080; }
+
+
+/* Details Tables (functions, variables, etc)
+ *   - Each object is described in its own div.
+ *   - A single-row summary table w/ table-header is used as
+ *     a header for each details section (CSS style for table-header
+ *     is defined above, under 'Table Headers').
+ */
+table.details               { border-collapse: collapse;
+                              background: #e8f0f8; color: #000000;
+                              border: 1px solid #608090;
+                              margin: .2em 0 0 0; }
+table.details table         { color: #000000; }
+table.details a:link        { color: #0000ff; }
+table.details a:visited     { color: #204080; }
+
+/* Fields */
+dl.fields                   { margin-left: 2em; margin-top: 1em;
+                              margin-bottom: 1em; }
+dl.fields dd ul             { margin-left: 0em; padding-left: 0em; }
+dl.fields dd ul li ul       { margin-left: 2em; padding-left: 0em; }
+div.fields                  { margin-left: 2em; }
+div.fields p                { margin-bottom: 0.5em; }
+
+/* Index tables (identifier index, term index, etc)
+ *   - link-index is used for indices containing lists of links
+ *     (namely, the identifier index & term index).
+ *   - index-where is used in link indices for the text indicating
+ *     the container/source for each link.
+ *   - metadata-index is used for indices containing metadata
+ *     extracted from fields (namely, the bug index & todo index).
+ */
+table.link-index            { border-collapse: collapse;
+                              background: #e8f0f8; color: #000000;
+                              border: 1px solid #608090; }
+td.link-index               { border-width: 0px; }
+table.link-index a:link     { color: #0000ff; }
+table.link-index a:visited  { color: #204080; }
+span.index-where            { font-size: 70%; }
+table.metadata-index        { border-collapse: collapse;
+                              background: #e8f0f8; color: #000000;
+                              border: 1px solid #608090; 
+                              margin: .2em 0 0 0; }
+td.metadata-index           { border-width: 1px; border-style: solid; }
+table.metadata-index a:link { color: #0000ff; }
+table.metadata-index a:visited  { color: #204080; }
+
+/* Function signatures
+ *   - sig* is used for the signature in the details section.
+ *   - .summary-sig* is used for the signature in the summary 
+ *     table, and when listing property accessor functions.
+ * */
+.sig-name                   { color: #006080; }
+.sig-arg                    { color: #008060; }
+.sig-default                { color: #602000; }
+.summary-sig                { font-family: monospace; }
+.summary-sig-name           { color: #006080; font-weight: bold; }
+table.summary a.summary-sig-name:link
+                            { color: #006080; font-weight: bold; }
+table.summary a.summary-sig-name:visited
+                            { color: #006080; font-weight: bold; }
+.summary-sig-arg            { color: #006040; }
+.summary-sig-default        { color: #501800; }
+
+/* Subclass list
+ */
+ul.subclass-list { display: inline; }
+ul.subclass-list li { display: inline; }
+
+/* To render variables, classes etc. like functions */
+table.summary .summary-name { color: #006080; font-weight: bold;
+                              font-family: monospace; }
+table.summary
+     a.summary-name:link    { color: #006080; font-weight: bold;
+                              font-family: monospace; }
+table.summary
+    a.summary-name:visited  { color: #006080; font-weight: bold;
+                              font-family: monospace; }
+
+/* Variable values
+ *   - In the 'variable details' sections, each varaible's value is
+ *     listed in a 'pre.variable' box.  The width of this box is
+ *     restricted to 80 chars; if the value's repr is longer than
+ *     this it will be wrapped, using a backslash marked with
+ *     class 'variable-linewrap'.  If the value's repr is longer
+ *     than 3 lines, the rest will be ellided; and an ellipsis
+ *     marker ('...' marked with 'variable-ellipsis') will be used.
+ *   - If the value is a string, its quote marks will be marked
+ *     with 'variable-quote'.
+ *   - If the variable is a regexp, it is syntax-highlighted using
+ *     the re* CSS classes.
+ */
+pre.variable                { padding: .5em; margin: 0;
+                              background: #dce4ec; color: #000000;
+                              border: 1px solid #708890; }
+.variable-linewrap          { color: #604000; font-weight: bold; }
+.variable-ellipsis          { color: #604000; font-weight: bold; }
+.variable-quote             { color: #604000; font-weight: bold; }
+.variable-group             { color: #008000; font-weight: bold; }
+.variable-op                { color: #604000; font-weight: bold; }
+.variable-string            { color: #006030; }
+.variable-unknown           { color: #a00000; font-weight: bold; }
+.re                         { color: #000000; }
+.re-char                    { color: #006030; }
+.re-op                      { color: #600000; }
+.re-group                   { color: #003060; }
+.re-ref                     { color: #404040; }
+
+/* Base tree
+ *   - Used by class pages to display the base class hierarchy.
+ */
+pre.base-tree               { font-size: 80%; margin: 0; }
+
+/* Frames-based table of contents headers
+ *   - Consists of two frames: one for selecting modules; and
+ *     the other listing the contents of the selected module.
+ *   - h1.toc is used for each frame's heading
+ *   - h2.toc is used for subheadings within each frame.
+ */
+h1.toc                      { text-align: center; font-size: 105%;
+                              margin: 0; font-weight: bold;
+                              padding: 0; }
+h2.toc                      { font-size: 100%; font-weight: bold; 
+                              margin: 0.5em 0 0 -0.3em; }
+
+/* Syntax Highlighting for Source Code
+ *   - doctest examples are displayed in a 'pre.py-doctest' block.
+ *     If the example is in a details table entry, then it will use
+ *     the colors specified by the 'table pre.py-doctest' line.
+ *   - Source code listings are displayed in a 'pre.py-src' block.
+ *     Each line is marked with 'span.py-line' (used to draw a line
+ *     down the left margin, separating the code from the line
+ *     numbers).  Line numbers are displayed with 'span.py-lineno'.
+ *     The expand/collapse block toggle button is displayed with
+ *     'a.py-toggle' (Note: the CSS style for 'a.py-toggle' should not
+ *     modify the font size of the text.)
+ *   - If a source code page is opened with an anchor, then the
+ *     corresponding code block will be highlighted.  The code
+ *     block's header is highlighted with 'py-highlight-hdr'; and
+ *     the code block's body is highlighted with 'py-highlight'.
+ *   - The remaining py-* classes are used to perform syntax
+ *     highlighting (py-string for string literals, py-name for names,
+ *     etc.)
+ */
+pre.py-doctest              { padding: .5em; margin: 1em;
+                              background: #e8f0f8; color: #000000;
+                              border: 1px solid #708890; }
+table pre.py-doctest        { background: #dce4ec;
+                              color: #000000; }
+pre.py-src                  { border: 2px solid #000000; 
+                              background: #f0f0f0; color: #000000; }
+.py-line                    { border-left: 2px solid #000000; 
+                              margin-left: .2em; padding-left: .4em; }
+.py-lineno                  { font-style: italic; font-size: 90%;
+                              padding-left: .5em; }
+a.py-toggle                 { text-decoration: none; }
+div.py-highlight-hdr        { border-top: 2px solid #000000;
+                              border-bottom: 2px solid #000000;
+                              background: #d8e8e8; }
+div.py-highlight            { border-bottom: 2px solid #000000;
+                              background: #d0e0e0; }
+.py-prompt                  { color: #005050; font-weight: bold;}
+.py-more                    { color: #005050; font-weight: bold;}
+.py-string                  { color: #006030; }
+.py-comment                 { color: #003060; }
+.py-keyword                 { color: #600000; }
+.py-output                  { color: #404040; }
+.py-name                    { color: #000050; }
+.py-name:link               { color: #000050 !important; }
+.py-name:visited            { color: #000050 !important; }
+.py-number                  { color: #005000; }
+.py-defname                 { color: #000060; font-weight: bold; }
+.py-def-name                { color: #000060; font-weight: bold; }
+.py-base-class              { color: #000060; }
+.py-param                   { color: #000060; }
+.py-docstring               { color: #006030; }
+.py-decorator               { color: #804020; }
+/* Use this if you don't want links to names underlined: */
+/*a.py-name                   { text-decoration: none; }*/
+
+/* Graphs & Diagrams
+ *   - These CSS styles are used for graphs & diagrams generated using
+ *     Graphviz dot.  'img.graph-without-title' is used for bare
+ *     diagrams (to remove the border created by making the image
+ *     clickable).
+ */
+img.graph-without-title     { border: none; }
+img.graph-with-title        { border: 1px solid #000000; }
+span.graph-title            { font-weight: bold; }
+span.graph-caption          { }
+
+/* General-purpose classes
+ *   - 'p.indent-wrapped-lines' defines a paragraph whose first line
+ *     is not indented, but whose subsequent lines are.
+ *   - The 'nomargin-top' class is used to remove the top margin (e.g.
+ *     from lists).  The 'nomargin' class is used to remove both the
+ *     top and bottom margin (but not the left or right margin --
+ *     for lists, that would cause the bullets to disappear.)
+ */
+p.indent-wrapped-lines      { padding: 0 0 0 7em; text-indent: -7em; 
+                              margin: 0; }
+.nomargin-top               { margin-top: 0; }
+.nomargin                   { margin-top: 0; margin-bottom: 0; }
+
+/* HTML Log */
+div.log-block               { padding: 0; margin: .5em 0 .5em 0;
+                              background: #e8f0f8; color: #000000;
+                              border: 1px solid #000000; }
+div.log-error               { padding: .1em .3em .1em .3em; margin: 4px;
+                              background: #ffb0b0; color: #000000;
+                              border: 1px solid #000000; }
+div.log-warning             { padding: .1em .3em .1em .3em; margin: 4px;
+                              background: #ffffb0; color: #000000;
+                              border: 1px solid #000000; }
+div.log-info               { padding: .1em .3em .1em .3em; margin: 4px;
+                              background: #b0ffb0; color: #000000;
+                              border: 1px solid #000000; }
+h2.log-hdr                  { background: #70b0ff; color: #000000;
+                              margin: 0; padding: 0em 0.5em 0em 0.5em;
+                              border-bottom: 1px solid #000000; font-size: 110%; }
+p.log                       { font-weight: bold; margin: .5em 0 .5em 0; }
+tr.opt-changed              { color: #000000; font-weight: bold; }
+tr.opt-default              { color: #606060; }
+pre.log                     { margin: 0; padding: 0; padding-left: 1em; }
diff --git a/doc/api/epydoc.docbuilder-module.html b/doc/api/epydoc.docbuilder-module.html
new file mode 100644
index 0000000..cef0574
--- /dev/null
+++ b/doc/api/epydoc.docbuilder-module.html
@@ -0,0 +1,1960 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.docbuilder</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        Module docbuilder
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.docbuilder-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module docbuilder</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.docbuilder-pysrc.html">source code</a></span></p>
+<p>Construct data structures that encode the API documentation for Python
+  objects.  These data structures are created using a series of steps:</p>
+  <ol start="1">
+    <li>
+      <b>Building docs</b>: Extract basic information about the objects, 
+      and objects that are related to them.  This can be done by 
+      introspecting the objects' values (with <a 
+      href="epydoc.docintrospecter-module.html" 
+      class="link">epydoc.docintrospecter</a>; or by parsing their source 
+      code (with <a href="epydoc.docparser-module.html" 
+      class="link">epydoc.docparser</a>.
+    </li>
+    <li>
+      <b>Merging</b>: Combine the information obtained from introspection 
+      & parsing each object into a single structure.
+    </li>
+    <li>
+      <b>Linking</b>: Replace any 'pointers' that were created for imported
+      variables by their target (if it's available).
+    </li>
+    <li>
+      <b>Naming</b>: Chose a unique 'canonical name' for each object.
+    </li>
+    <li>
+      <b>Docstring Parsing</b>: Parse the docstring of each object, and 
+      extract any pertinant information.
+    </li>
+    <li>
+      <b>Inheritance</b>: Add information about variables that classes 
+      inherit from their base classes.
+    </li>
+  </ol>
+  <p>The documentation information for each individual object is 
+  represented using an <a href="epydoc.apidoc.APIDoc-class.html" 
+  class="link">APIDoc</a>; and the documentation for a collection of 
+  objects is represented using a <a 
+  href="epydoc.apidoc.DocIndex-class.html" class="link">DocIndex</a>.</p>
+  <p>The main interface to <code>epydoc.docbuilder</code> consists of two 
+  functions:</p>
+  <ul>
+    <li>
+      <a href="epydoc.docbuilder-module.html#build_doc" 
+      class="link">build_doc()</a> -- Builds documentation for a single 
+      item, and returns it as an <a href="epydoc.apidoc.APIDoc-class.html" 
+      class="link">APIDoc</a> object.
+    </li>
+    <li>
+      <a href="epydoc.docbuilder-module.html#build_doc_index" 
+      class="link">build_doc_index()</a> -- Builds documentation for a 
+      collection of items, and returns it as a <a 
+      href="epydoc.apidoc.DocIndex-class.html" class="link">DocIndex</a> 
+      object.
+    </li>
+  </ul>
+  <p>The remaining functions are used by these two main functions to 
+  perform individual steps in the creation of the documentation.</p>
+
+<!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Classes</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Classes"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docbuilder.BuildOptions-class.html" class="summary-name">BuildOptions</a><br />
+      Holds the parameters for a documentation building process.
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docbuilder._ProgressEstimator-class.html" class="summary-name" onclick="show_private();">_ProgressEstimator</a><br />
+      Used to keep track of progress when generating the initial docs for
+        the given items.
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTIONS ==================== -->
+<a name="section-Functions"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Functions</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Functions"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_report_errors"></a><span class="summary-sig-name">_report_errors</span>(<span class="summary-sig-arg">name</span>,
+        <span class="summary-sig-arg">introspect_doc</span>,
+        <span class="summary-sig-arg">parse_doc</span>,
+        <span class="summary-sig-arg">introspect_error</span>,
+        <span class="summary-sig-arg">parse_error</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docbuilder-pysrc.html#_report_errors">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__report_errors-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__report_errors-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__report_errors" name="call_graph_for__report_errors">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__cmp__" title="apidoc.APIDoc.__cmp__()" alt="" coords="499,6,723,38" />
+<area shape="rect" href="epydoc.docbuilder-module.html#_get_docs_from_module_file" title="_get_docs_from_module_file()" alt="" coords="7,6,260,38" />
+<area shape="rect" href="epydoc.docbuilder-module.html#_report_errors" title="_report_errors()" alt="" coords="309,6,451,38" />
+</map>
+  <img src="call_graph_for__report_errors.gif" alt='' usemap="#call_graph_for__report_errors" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docbuilder-module.html#find_overrides" class="summary-sig-name">find_overrides</a>(<span class="summary-sig-arg">class_doc</span>)</span><br />
+      Set the <code>overrides</code> attribute for all variables in 
+      <code>class_doc</code>.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docbuilder-pysrc.html#find_overrides">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_find_overrides-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_find_overrides-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_find_overrides" name="call_graph_for_find_overrides">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__cmp__" title="apidoc.APIDoc.__cmp__()" alt="" coords="406,6,630,38" />
+<area shape="rect" href="epydoc.apidoc.ClassDoc-class.html#mro" title="apidoc.ClassDoc.mro()" alt="" coords="420,62,615,94" />
+<area shape="rect" href="epydoc.docbuilder-module.html#build_doc_index" title="build_doc_index()" alt="" coords="6,34,166,66" />
+<area shape="rect" href="epydoc.docbuilder-module.html#find_overrides" title="find_overrides()" alt="" coords="215,34,356,66" />
+</map>
+  <img src="call_graph_for_find_overrides.gif" alt='' usemap="#call_graph_for_find_overrides" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Documentation Construction</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><a href="epydoc.apidoc.APIDoc-class.html" class="link">APIDoc</a></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docbuilder-module.html#build_doc" class="summary-sig-name">build_doc</a>(<span class="summary-sig-arg">item</span>,
+        <span class="summary-sig-arg">introspect</span>=<span class="summary-sig-default">True</span>,
+        <span class="summary-sig-arg">parse</span>=<span class="summary-sig-default">True</span>,
+        <span class="summary-sig-arg">add_submodules</span>=<span class="summary-sig-default">True</span>,
+        <span class="summary-sig-arg">exclude_introspect</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">exclude_parse</span>=<span class="summary-sig-default">None</span>)</span><br />
+      Build API documentation for a given item, and return it as an <a 
+      href="epydoc.apidoc.APIDoc-class.html" class="link">APIDoc</a> 
+      object.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docbuilder-pysrc.html#build_doc">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><a href="epydoc.apidoc.DocIndex-class.html" class="link">DocIndex</a></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docbuilder-module.html#build_doc_index" class="summary-sig-name">build_doc_index</a>(<span class="summary-sig-arg">items</span>,
+        <span class="summary-sig-arg">introspect</span>=<span class="summary-sig-default">True</span>,
+        <span class="summary-sig-arg">parse</span>=<span class="summary-sig-default">True</span>,
+        <span class="summary-sig-arg">add_submodules</span>=<span class="summary-sig-default">True</span>,
+        <span class="summary-sig-arg">exclude_introspect</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">exclude_parse</span>=<span class="summary-sig-default">None</span>)</span><br />
+      Build API documentation for the given list of items, and return it in
+      the form of a <a href="epydoc.apidoc.DocIndex-class.html" 
+      class="link">DocIndex</a>.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docbuilder-pysrc.html#build_doc_index">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_build_doc_index-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_build_doc_index-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_build_doc_index" name="call_graph_for_build_doc_index">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__hash__" title="apidoc.APIDoc.__hash__()" alt="" coords="291,6,515,38" />
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#__init__" title="apidoc.DocIndex.__init__()" alt="" coords="289,62,516,94" />
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#reachable_valdocs" title="apidoc.DocIndex.reachable_valdocs()" alt="" coords="251,118,555,150" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__cmp__" title="apidoc.DottedName.__cmp__()" alt="" coords="275,174,531,206" />
+<area shape="rect" href="epydoc.apidoc.ModuleDoc-class.html#init_submodule_groups" title="apidoc.ModuleDoc.init_submodule_groups()" alt="" coords="224,230,581,262" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#init_sorted_variables" title="apidoc.NamespaceDoc.init_sorted_variables()" alt="" coords="220,286,585,318" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#init_variable_groups" title="apidoc.NamespaceDoc.init_variable_groups()" alt="" coords="221,342,584,374" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#report_unused_groups" title="apidoc.NamespaceDoc.report_unused_groups()" alt="" coords="215,398,591,430" />
+<area shape="rect" href="epydoc.docbuilder.BuildOptions-class.html#__init__" title="BuildOptions.__init__()" alt="" coords="301,454,504,486" />
+<area shape="rect" href="epydoc.docbuilder-module.html#_get_docs_from_items" title="_get_docs_from_items()" alt="" coords="300,510,505,542" />
+<area shape="rect" href="epydoc.docbuilder-module.html#_report_valdoc_progress" title="_report_valdoc_progress()" alt="" coords="293,566,512,598" />
+<area shape="rect" href="epydoc.docbuilder-module.html#assign_canonical_names" title="assign_canonical_names()" alt="" coords="293,622,512,654" />
+<area shape="rect" href="epydoc.docbuilder-module.html#build_doc_index" title="build_doc_index()" alt="" coords="5,538,165,570" />
+<area shape="rect" href="epydoc.docbuilder-module.html#find_overrides" title="find_overrides()" alt="" coords="332,678,473,710" />
+<area shape="rect" href="epydoc.docbuilder-module.html#inherit_docs" title="inherit_docs()" alt="" coords="339,734,467,766" />
+<area shape="rect" href="epydoc.docbuilder-module.html#link_imports" title="link_imports()" alt="" coords="339,790,467,822" />
+<area shape="rect" href="epydoc.docbuilder-module.html#merge_docs" title="merge_docs()" alt="" coords="341,846,464,878" />
+<area shape="rect" href="epydoc.docstringparser-module.html#parse_docstring" title="docstringparser.parse_docstring()" alt="" coords="267,902,539,934" />
+<area shape="rect" href="epydoc.log-module.html#end_progress" title="log.end_progress()" alt="" coords="321,958,484,990" />
+<area shape="rect" href="epydoc.log-module.html#progress" title="log.progress()" alt="" coords="340,1014,465,1046" />
+<area shape="rect" href="epydoc.log-module.html#start_progress" title="log.start_progress()" alt="" coords="320,1070,485,1102" />
+</map>
+  <img src="call_graph_for_build_doc_index.gif" alt='' usemap="#call_graph_for_build_doc_index" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_report_valdoc_progress"></a><span class="summary-sig-name">_report_valdoc_progress</span>(<span class="summary-sig-arg">i</span>,
+        <span class="summary-sig-arg">val_doc</span>,
+        <span class="summary-sig-arg">val_docs</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docbuilder-pysrc.html#_report_valdoc_progress">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__report_valdoc_-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__report_valdoc_-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__report_valdoc_" name="call_graph_for__report_valdoc_">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__getitem__" title="apidoc.DottedName.__getitem__()" alt="" coords="484,6,764,38" />
+<area shape="rect" href="epydoc.docbuilder-module.html#_report_valdoc_progress" title="_report_valdoc_progress()" alt="" coords="215,34,434,66" />
+<area shape="rect" href="epydoc.log-module.html#progress" title="log.progress()" alt="" coords="562,62,687,94" />
+<area shape="rect" href="epydoc.docbuilder-module.html#build_doc_index" title="build_doc_index()" alt="" coords="6,34,166,66" />
+</map>
+  <img src="call_graph_for__report_valdoc_.gif" alt='' usemap="#call_graph_for__report_valdoc_" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_get_docs_from_items"></a><span class="summary-sig-name">_get_docs_from_items</span>(<span class="summary-sig-arg">items</span>,
+        <span class="summary-sig-arg">options</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docbuilder-pysrc.html#_get_docs_from_items">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__get_docs_from_-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__get_docs_from_-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__get_docs_from_" name="call_graph_for__get_docs_from_">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__hash__" title="apidoc.DottedName.__hash__()" alt="" coords="468,6,727,38" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__len__" title="apidoc.DottedName.__len__()" alt="" coords="473,62,721,94" />
+<area shape="rect" href="epydoc.docbuilder._ProgressEstimator-class.html#__init__" title="_ProgressEstimator.__init__()" alt="" coords="473,118,721,150" />
+<area shape="rect" href="epydoc.docbuilder-module.html#_get_docs_from_items" title="_get_docs_from_items()" alt="" coords="213,230,419,262" />
+<area shape="rect" href="epydoc.docbuilder-module.html#_get_docs_from_module_file" title="_get_docs_from_module_file()" alt="" coords="471,174,724,206" />
+<area shape="rect" href="epydoc.docbuilder-module.html#_get_docs_from_submodules" title="_get_docs_from_submodules()" alt="" coords="471,230,724,262" />
+<area shape="rect" href="epydoc.log-module.html#end_progress" title="log.end_progress()" alt="" coords="516,286,679,318" />
+<area shape="rect" href="epydoc.log-module.html#start_progress" title="log.start_progress()" alt="" coords="515,342,680,374" />
+<area shape="rect" href="epydoc.util-module.html#is_module_file" title="util.is_module_file()" alt="" coords="509,398,685,430" />
+<area shape="rect" href="epydoc.util-module.html#is_package_dir" title="util.is_package_dir()" alt="" coords="509,454,685,486" />
+<area shape="rect" href="epydoc.docbuilder-module.html#build_doc_index" title="build_doc_index()" alt="" coords="5,230,165,262" />
+</map>
+  <img src="call_graph_for__get_docs_from_.gif" alt='' usemap="#call_graph_for__get_docs_from_" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_get_docs_from_pyobject"></a><span class="summary-sig-name">_get_docs_from_pyobject</span>(<span class="summary-sig-arg">obj</span>,
+        <span class="summary-sig-arg">options</span>,
+        <span class="summary-sig-arg">progress_estimator</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docbuilder-pysrc.html#_get_docs_from_pyobject">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_get_docs_from_pyname"></a><span class="summary-sig-name">_get_docs_from_pyname</span>(<span class="summary-sig-arg">name</span>,
+        <span class="summary-sig-arg">options</span>,
+        <span class="summary-sig-arg">progress_estimator</span>,
+        <span class="summary-sig-arg">suppress_warnings</span>=<span class="summary-sig-default">False</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docbuilder-pysrc.html#_get_docs_from_pyname">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_get_docs_from_pyscript"></a><span class="summary-sig-name">_get_docs_from_pyscript</span>(<span class="summary-sig-arg">filename</span>,
+        <span class="summary-sig-arg">options</span>,
+        <span class="summary-sig-arg">progress_estimator</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docbuilder-pysrc.html#_get_docs_from_pyscript">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docbuilder-module.html#_get_docs_from_module_file" class="summary-sig-name" onclick="show_private();">_get_docs_from_module_file</a>(<span class="summary-sig-arg">filename</span>,
+        <span class="summary-sig-arg">options</span>,
+        <span class="summary-sig-arg">progress_estimator</span>,
+        <span class="summary-sig-arg">parent_docs</span>=<span class="summary-sig-default"><code class="variable-group">(</code>None<code class="variable-op">, </code>None<code class="variable-group">)</code></span>)</span><br />
+      Construct and return the API documentation for the python module with
+      the given filename.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docbuilder-pysrc.html#_get_docs_from_module_file">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__get_docs_from__5-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__get_docs_from__5-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__get_docs_from__5" name="call_graph_for__get_docs_from__5">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__init__" title="apidoc.DottedName.__init__()" alt="" coords="624,6,875,38" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__str__" title="apidoc.DottedName.__str__()" alt="" coords="628,62,871,94" />
+<area shape="rect" href="epydoc.docbuilder.BuildOptions-class.html#must_introspect" title="BuildOptions.must_introspect()" alt="" coords="620,118,879,150" />
+<area shape="rect" href="epydoc.docbuilder.BuildOptions-class.html#must_parse" title="BuildOptions.must_parse()" alt="" coords="638,174,862,206" />
+<area shape="rect" href="epydoc.docbuilder._ProgressEstimator-class.html#progress" title="_ProgressEstimator.progress()" alt="" coords="626,230,874,262" />
+<area shape="rect" href="epydoc.docbuilder-module.html#_get_docs_from_items" title="_get_docs_from_items()" alt="" coords="31,230,236,262" />
+<area shape="rect" href="epydoc.docbuilder-module.html#_get_docs_from_module_file" title="_get_docs_from_module_file()" alt="" coords="311,258,564,290" />
+<area shape="rect" href="epydoc.docbuilder-module.html#_report_errors" title="_report_errors()" alt="" coords="679,286,820,318" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#introspect_docs" title="docintrospecter.introspect_docs()" alt="" coords="615,342,884,374" />
+<area shape="rect" href="epydoc.docparser-module.html#parse_docs" title="docparser.parse_docs()" alt="" coords="652,398,847,430" />
+<area shape="rect" href="epydoc.log-module.html#progress" title="log.progress()" alt="" coords="687,454,812,486" />
+<area shape="rect" href="epydoc.util-module.html#py_src_filename" title="util.py_src_filename()" alt="" coords="655,510,844,542" />
+<area shape="rect" href="epydoc.docbuilder-module.html#_get_docs_from_submodules" title="_get_docs_from_submodules()" alt="" coords="7,286,260,318" />
+</map>
+  <img src="call_graph_for__get_docs_from__5.gif" alt='' usemap="#call_graph_for__get_docs_from__5" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_get_docs_from_submodules"></a><span class="summary-sig-name">_get_docs_from_submodules</span>(<span class="summary-sig-arg">item</span>,
+        <span class="summary-sig-arg">pkg_docs</span>,
+        <span class="summary-sig-arg">options</span>,
+        <span class="summary-sig-arg">progress_estimator</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docbuilder-pysrc.html#_get_docs_from_submodules">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__get_docs_from__6-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__get_docs_from__6-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__get_docs_from__6" name="call_graph_for__get_docs_from__6">
+<area shape="rect" href="epydoc.docbuilder._ProgressEstimator-class.html#revise_estimate" title="_ProgressEstimator.revise_estimate()" alt="" coords="563,6,864,38" />
+<area shape="rect" href="epydoc.docbuilder-module.html#_get_docs_from_items" title="_get_docs_from_items()" alt="" coords="5,90,211,122" />
+<area shape="rect" href="epydoc.docbuilder-module.html#_get_docs_from_submodules" title="_get_docs_from_submodules()" alt="" coords="260,90,513,122" />
+<area shape="rect" href="epydoc.docbuilder-module.html#_get_docs_from_module_file" title="_get_docs_from_module_file()" alt="" coords="587,62,840,94" />
+<area shape="rect" href="epydoc.util-module.html#is_module_file" title="util.is_module_file()" alt="" coords="625,118,801,150" />
+<area shape="rect" href="epydoc.util-module.html#is_package_dir" title="util.is_package_dir()" alt="" coords="625,174,801,206" />
+</map>
+  <img src="call_graph_for__get_docs_from__6.gif" alt='' usemap="#call_graph_for__get_docs_from__6" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Merging</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docbuilder-module.html#register_attribute_mergefunc" class="summary-sig-name">register_attribute_mergefunc</a>(<span class="summary-sig-arg">attrib</span>,
+        <span class="summary-sig-arg">mergefunc</span>)</span><br />
+      Register an attribute merge function.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docbuilder-pysrc.html#register_attribute_mergefunc">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docbuilder-module.html#merge_docs" class="summary-sig-name">merge_docs</a>(<span class="summary-sig-arg">introspect_doc</span>,
+        <span class="summary-sig-arg">parse_doc</span>,
+        <span class="summary-sig-arg">cyclecheck</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">path</span>=<span class="summary-sig-default">None</span>)</span><br />
+      Merge the API documentation information that was obtained from 
+      introspection with information that was obtained from parsing.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docbuilder-pysrc.html#merge_docs">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_merge_docs-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_merge_docs-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_merge_docs" name="call_graph_for_merge_docs">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__cmp__" title="apidoc.APIDoc.__cmp__()" alt="" coords="481,6,705,38" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#merge_and_overwrite" title="apidoc.APIDoc.merge_and_overwrite()" alt="" coords="435,62,752,94" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#specialize_to" title="apidoc.APIDoc.specialize_to()" alt="" coords="468,118,719,150" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__cmp__" title="apidoc.DottedName.__cmp__()" alt="" coords="465,174,721,206" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__str__" title="apidoc.DottedName.__str__()" alt="" coords="472,230,715,262" />
+<area shape="rect" href="epydoc.docbuilder-module.html#_merge_posargs_and_defaults" title="_merge_posargs_and_defaults()" alt="" coords="463,286,724,318" />
+<area shape="rect" href="epydoc.docbuilder-module.html#build_doc_index" title="build_doc_index()" alt="" coords="29,90,189,122" />
+<area shape="rect" href="epydoc.docbuilder-module.html#merge_docs" title="merge_docs()" alt="" coords="263,202,385,234" />
+<area shape="rect" href="epydoc.docbuilder-module.html#merge_attribute" title="merge_attribute()" alt="" coords="517,342,669,374" />
+<area shape="rect" href="epydoc.docbuilder-module.html#merge_bases" title="merge_bases()" alt="" coords="44,146,175,178" />
+<area shape="rect" href="epydoc.log-module.html#info" title="log.info()" alt="" coords="548,398,639,430" />
+<area shape="rect" href="epydoc.docbuilder-module.html#merge_posarg_defaults" title="merge_posarg_defaults()" alt="" coords="5,202,213,234" />
+<area shape="rect" href="epydoc.docbuilder-module.html#merge_value" title="merge_value()" alt="" coords="44,258,175,290" />
+<area shape="rect" href="epydoc.docbuilder-module.html#merge_variables" title="merge_variables()" alt="" coords="31,314,188,346" />
+</map>
+  <img src="call_graph_for_merge_docs.gif" alt='' usemap="#call_graph_for_merge_docs" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_merge_posargs_and_defaults"></a><span class="summary-sig-name">_merge_posargs_and_defaults</span>(<span class="summary-sig-arg">introspect_doc</span>,
+        <span class="summary-sig-arg">parse_doc</span>,
+        <span class="summary-sig-arg">path</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docbuilder-pysrc.html#_merge_posargs_and_defaults">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__merge_posargs_-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__merge_posargs_-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__merge_posargs_" name="call_graph_for__merge_posargs_">
+<area shape="rect" href="epydoc.docbuilder-module.html#_merge_posargs_and_defaults" title="_merge_posargs_and_defaults()" alt="" coords="179,6,440,38" />
+<area shape="rect" href="epydoc.docbuilder-module.html#merge_docs" title="merge_docs()" alt="" coords="7,6,129,38" />
+</map>
+  <img src="call_graph_for__merge_posargs_.gif" alt='' usemap="#call_graph_for__merge_posargs_" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="merge_attribute"></a><span class="summary-sig-name">merge_attribute</span>(<span class="summary-sig-arg">attrib</span>,
+        <span class="summary-sig-arg">introspect_doc</span>,
+        <span class="summary-sig-arg">parse_doc</span>,
+        <span class="summary-sig-arg">cyclecheck</span>,
+        <span class="summary-sig-arg">path</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docbuilder-pysrc.html#merge_attribute">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_merge_attribute-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_merge_attribute-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_merge_attribute" name="call_graph_for_merge_attribute">
+<area shape="rect" href="epydoc.docbuilder-module.html#merge_attribute" title="merge_attribute()" alt="" coords="179,202,331,234" />
+<area shape="rect" href="epydoc.docbuilder-module.html#merge_bases" title="merge_bases()" alt="" coords="428,6,559,38" />
+<area shape="rect" href="epydoc.docbuilder-module.html#merge_docs_extracted_by" title="merge_docs_extracted_by()" alt="" coords="379,62,608,94" />
+<area shape="rect" href="epydoc.docbuilder-module.html#merge_docstring" title="merge_docstring()" alt="" coords="415,118,572,150" />
+<area shape="rect" href="epydoc.docbuilder-module.html#merge_posarg_defaults" title="merge_posarg_defaults()" alt="" coords="389,174,597,206" />
+<area shape="rect" href="epydoc.docbuilder-module.html#merge_proxy_for" title="merge_proxy_for()" alt="" coords="412,230,575,262" />
+<area shape="rect" href="epydoc.docbuilder-module.html#merge_submodules" title="merge_submodules()" alt="" coords="404,286,583,318" />
+<area shape="rect" href="epydoc.docbuilder-module.html#merge_value" title="merge_value()" alt="" coords="428,342,559,374" />
+<area shape="rect" href="epydoc.docbuilder-module.html#merge_variables" title="merge_variables()" alt="" coords="415,398,572,430" />
+<area shape="rect" href="epydoc.docbuilder-module.html#merge_docs" title="merge_docs()" alt="" coords="7,202,129,234" />
+</map>
+  <img src="call_graph_for_merge_attribute.gif" alt='' usemap="#call_graph_for_merge_attribute" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="merge_variables"></a><span class="summary-sig-name">merge_variables</span>(<span class="summary-sig-arg">varlist1</span>,
+        <span class="summary-sig-arg">varlist2</span>,
+        <span class="summary-sig-arg">precedence</span>,
+        <span class="summary-sig-arg">cyclecheck</span>,
+        <span class="summary-sig-arg">path</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docbuilder-pysrc.html#merge_variables">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_merge_variables-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_merge_variables-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_merge_variables" name="call_graph_for_merge_variables">
+<area shape="rect" href="epydoc.docbuilder-module.html#merge_attribute" title="merge_attribute()" alt="" coords="5,6,157,38" />
+<area shape="rect" href="epydoc.docbuilder-module.html#merge_variables" title="merge_variables()" alt="" coords="205,6,363,38" />
+<area shape="rect" href="epydoc.docbuilder-module.html#merge_docs" title="merge_docs()" alt="" coords="412,6,535,38" />
+</map>
+  <img src="call_graph_for_merge_variables.gif" alt='' usemap="#call_graph_for_merge_variables" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="merge_value"></a><span class="summary-sig-name">merge_value</span>(<span class="summary-sig-arg">value1</span>,
+        <span class="summary-sig-arg">value2</span>,
+        <span class="summary-sig-arg">precedence</span>,
+        <span class="summary-sig-arg">cyclecheck</span>,
+        <span class="summary-sig-arg">path</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docbuilder-pysrc.html#merge_value">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_merge_value-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_merge_value-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_merge_value" name="call_graph_for_merge_value">
+<area shape="rect" href="epydoc.docbuilder-module.html#merge_attribute" title="merge_attribute()" alt="" coords="6,6,158,38" />
+<area shape="rect" href="epydoc.docbuilder-module.html#merge_value" title="merge_value()" alt="" coords="206,6,336,38" />
+<area shape="rect" href="epydoc.docbuilder-module.html#merge_docs" title="merge_docs()" alt="" coords="386,6,508,38" />
+</map>
+  <img src="call_graph_for_merge_value.gif" alt='' usemap="#call_graph_for_merge_value" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="merge_overrides"></a><span class="summary-sig-name">merge_overrides</span>(<span class="summary-sig-arg">v1</span>,
+        <span class="summary-sig-arg">v2</span>,
+        <span class="summary-sig-arg">precedence</span>,
+        <span class="summary-sig-arg">cyclecheck</span>,
+        <span class="summary-sig-arg">path</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docbuilder-pysrc.html#merge_overrides">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="merge_fget"></a><span class="summary-sig-name">merge_fget</span>(<span class="summary-sig-arg">v1</span>,
+        <span class="summary-sig-arg">v2</span>,
+        <span class="summary-sig-arg">precedence</span>,
+        <span class="summary-sig-arg">cyclecheck</span>,
+        <span class="summary-sig-arg">path</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docbuilder-pysrc.html#merge_fget">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="merge_fset"></a><span class="summary-sig-name">merge_fset</span>(<span class="summary-sig-arg">v1</span>,
+        <span class="summary-sig-arg">v2</span>,
+        <span class="summary-sig-arg">precedence</span>,
+        <span class="summary-sig-arg">cyclecheck</span>,
+        <span class="summary-sig-arg">path</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docbuilder-pysrc.html#merge_fset">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="merge_fdel"></a><span class="summary-sig-name">merge_fdel</span>(<span class="summary-sig-arg">v1</span>,
+        <span class="summary-sig-arg">v2</span>,
+        <span class="summary-sig-arg">precedence</span>,
+        <span class="summary-sig-arg">cyclecheck</span>,
+        <span class="summary-sig-arg">path</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docbuilder-pysrc.html#merge_fdel">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="merge_proxy_for"></a><span class="summary-sig-name">merge_proxy_for</span>(<span class="summary-sig-arg">v1</span>,
+        <span class="summary-sig-arg">v2</span>,
+        <span class="summary-sig-arg">precedence</span>,
+        <span class="summary-sig-arg">cyclecheck</span>,
+        <span class="summary-sig-arg">path</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docbuilder-pysrc.html#merge_proxy_for">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_merge_proxy_for-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_merge_proxy_for-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_merge_proxy_for" name="call_graph_for_merge_proxy_for">
+<area shape="rect" href="epydoc.docbuilder-module.html#merge_attribute" title="merge_attribute()" alt="" coords="5,6,157,38" />
+<area shape="rect" href="epydoc.docbuilder-module.html#merge_proxy_for" title="merge_proxy_for()" alt="" coords="207,6,369,38" />
+</map>
+  <img src="call_graph_for_merge_proxy_for.gif" alt='' usemap="#call_graph_for_merge_proxy_for" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="merge_bases"></a><span class="summary-sig-name">merge_bases</span>(<span class="summary-sig-arg">baselist1</span>,
+        <span class="summary-sig-arg">baselist2</span>,
+        <span class="summary-sig-arg">precedence</span>,
+        <span class="summary-sig-arg">cyclecheck</span>,
+        <span class="summary-sig-arg">path</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docbuilder-pysrc.html#merge_bases">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_merge_bases-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_merge_bases-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_merge_bases" name="call_graph_for_merge_bases">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__cmp__" title="apidoc.DottedName.__cmp__()" alt="" coords="385,6,641,38" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__str__" title="apidoc.DottedName.__str__()" alt="" coords="392,62,635,94" />
+<area shape="rect" href="epydoc.docbuilder-module.html#merge_attribute" title="merge_attribute()" alt="" coords="5,90,157,122" />
+<area shape="rect" href="epydoc.docbuilder-module.html#merge_bases" title="merge_bases()" alt="" coords="205,90,336,122" />
+<area shape="rect" href="epydoc.docbuilder-module.html#merge_docs" title="merge_docs()" alt="" coords="452,118,575,150" />
+<area shape="rect" href="epydoc.log-module.html#info" title="log.info()" alt="" coords="468,174,559,206" />
+</map>
+  <img src="call_graph_for_merge_bases.gif" alt='' usemap="#call_graph_for_merge_bases" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="merge_posarg_defaults"></a><span class="summary-sig-name">merge_posarg_defaults</span>(<span class="summary-sig-arg">defaults1</span>,
+        <span class="summary-sig-arg">defaults2</span>,
+        <span class="summary-sig-arg">precedence</span>,
+        <span class="summary-sig-arg">cyclecheck</span>,
+        <span class="summary-sig-arg">path</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docbuilder-pysrc.html#merge_posarg_defaults">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_merge_posarg_de-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_merge_posarg_de-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_merge_posarg_de" name="call_graph_for_merge_posarg_de">
+<area shape="rect" href="epydoc.docbuilder-module.html#merge_attribute" title="merge_attribute()" alt="" coords="5,6,157,38" />
+<area shape="rect" href="epydoc.docbuilder-module.html#merge_posarg_defaults" title="merge_posarg_defaults()" alt="" coords="205,6,413,38" />
+<area shape="rect" href="epydoc.docbuilder-module.html#merge_docs" title="merge_docs()" alt="" coords="463,6,585,38" />
+</map>
+  <img src="call_graph_for_merge_posarg_de.gif" alt='' usemap="#call_graph_for_merge_posarg_de" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="merge_docstring"></a><span class="summary-sig-name">merge_docstring</span>(<span class="summary-sig-arg">docstring1</span>,
+        <span class="summary-sig-arg">docstring2</span>,
+        <span class="summary-sig-arg">precedence</span>,
+        <span class="summary-sig-arg">cyclecheck</span>,
+        <span class="summary-sig-arg">path</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docbuilder-pysrc.html#merge_docstring">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_merge_docstring-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_merge_docstring-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_merge_docstring" name="call_graph_for_merge_docstring">
+<area shape="rect" href="epydoc.docbuilder-module.html#merge_attribute" title="merge_attribute()" alt="" coords="6,6,158,38" />
+<area shape="rect" href="epydoc.docbuilder-module.html#merge_docstring" title="merge_docstring()" alt="" coords="207,6,364,38" />
+</map>
+  <img src="call_graph_for_merge_docstring.gif" alt='' usemap="#call_graph_for_merge_docstring" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="merge_docs_extracted_by"></a><span class="summary-sig-name">merge_docs_extracted_by</span>(<span class="summary-sig-arg">v1</span>,
+        <span class="summary-sig-arg">v2</span>,
+        <span class="summary-sig-arg">precedence</span>,
+        <span class="summary-sig-arg">cyclecheck</span>,
+        <span class="summary-sig-arg">path</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docbuilder-pysrc.html#merge_docs_extracted_by">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_merge_docs_extr-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_merge_docs_extr-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_merge_docs_extr" name="call_graph_for_merge_docs_extr">
+<area shape="rect" href="epydoc.docbuilder-module.html#merge_attribute" title="merge_attribute()" alt="" coords="5,6,157,38" />
+<area shape="rect" href="epydoc.docbuilder-module.html#merge_docs_extracted_by" title="merge_docs_extracted_by()" alt="" coords="205,6,435,38" />
+</map>
+  <img src="call_graph_for_merge_docs_extr.gif" alt='' usemap="#call_graph_for_merge_docs_extr" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="merge_submodules"></a><span class="summary-sig-name">merge_submodules</span>(<span class="summary-sig-arg">v1</span>,
+        <span class="summary-sig-arg">v2</span>,
+        <span class="summary-sig-arg">precedence</span>,
+        <span class="summary-sig-arg">cyclecheck</span>,
+        <span class="summary-sig-arg">path</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docbuilder-pysrc.html#merge_submodules">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_merge_submodule-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_merge_submodule-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_merge_submodule" name="call_graph_for_merge_submodule">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__cmp__" title="apidoc.DottedName.__cmp__()" alt="" coords="433,6,689,38" />
+<area shape="rect" href="epydoc.docbuilder-module.html#merge_attribute" title="merge_attribute()" alt="" coords="5,6,157,38" />
+<area shape="rect" href="epydoc.docbuilder-module.html#merge_submodules" title="merge_submodules()" alt="" coords="205,6,384,38" />
+</map>
+  <img src="call_graph_for_merge_submodule.gif" alt='' usemap="#call_graph_for_merge_submodule" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Linking</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="link_imports"></a><span class="summary-sig-name">link_imports</span>(<span class="summary-sig-arg">val_doc</span>,
+        <span class="summary-sig-arg">docindex</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docbuilder-pysrc.html#link_imports">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_link_imports-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_link_imports-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_link_imports" name="call_graph_for_link_imports">
+<area shape="rect" href="epydoc.docbuilder-module.html#build_doc_index" title="build_doc_index()" alt="" coords="5,6,165,38" />
+<area shape="rect" href="epydoc.docbuilder-module.html#link_imports" title="link_imports()" alt="" coords="215,6,343,38" />
+</map>
+  <img src="call_graph_for_link_imports.gif" alt='' usemap="#call_graph_for_link_imports" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Naming</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docbuilder-module.html#assign_canonical_names" class="summary-sig-name">assign_canonical_names</a>(<span class="summary-sig-arg">val_doc</span>,
+        <span class="summary-sig-arg">name</span>,
+        <span class="summary-sig-arg">docindex</span>,
+        <span class="summary-sig-arg">score</span>=<span class="summary-sig-default">0</span>)</span><br />
+      Assign a canonical name to <code>val_doc</code> (if it doesn't have 
+      one already), and (recursively) to each variable in 
+      <code>val_doc</code>.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docbuilder-pysrc.html#assign_canonical_names">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_assign_canonica-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_assign_canonica-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_assign_canonica" name="call_graph_for_assign_canonica">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__cmp__" title="apidoc.APIDoc.__cmp__()" alt="" coords="509,6,733,38" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__hash__" title="apidoc.APIDoc.__hash__()" alt="" coords="509,62,733,94" />
+<area shape="rect" href="epydoc.apidoc.ClassDoc-class.html#apidoc_links" title="apidoc.ClassDoc.apidoc_links()" alt="" coords="492,118,751,150" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__init__" title="apidoc.DottedName.__init__()" alt="" coords="496,174,747,206" />
+<area shape="rect" href="epydoc.apidoc.ModuleDoc-class.html#apidoc_links" title="apidoc.ModuleDoc.apidoc_links()" alt="" coords="483,230,760,262" />
+<area shape="rect" href="epydoc.apidoc.PropertyDoc-class.html#apidoc_links" title="apidoc.PropertyDoc.apidoc_links()" alt="" coords="480,286,763,318" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#apidoc_links" title="apidoc.ValueDoc.apidoc_links()" alt="" coords="489,342,753,374" />
+<area shape="rect" href="epydoc.docbuilder-module.html#_unreachable_name_for" title="_unreachable_name_for()" alt="" coords="515,398,728,430" />
+<area shape="rect" href="epydoc.docbuilder-module.html#_var_shadows_self" title="_var_shadows_self()" alt="" coords="532,454,711,486" />
+<area shape="rect" href="epydoc.docbuilder-module.html#assign_canonical_names" title="assign_canonical_names()" alt="" coords="213,230,432,262" />
+<area shape="rect" href="epydoc.docbuilder-module.html#build_doc_index" title="build_doc_index()" alt="" coords="5,230,165,262" />
+</map>
+  <img src="call_graph_for_assign_canonica.gif" alt='' usemap="#call_graph_for_assign_canonica" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_var_shadows_self"></a><span class="summary-sig-name">_var_shadows_self</span>(<span class="summary-sig-arg">var_doc</span>,
+        <span class="summary-sig-arg">varname</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docbuilder-pysrc.html#_var_shadows_self">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__var_shadows_se-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__var_shadows_se-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__var_shadows_se" name="call_graph_for__var_shadows_se">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__cmp__" title="apidoc.APIDoc.__cmp__()" alt="" coords="520,6,744,38" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__cmp__" title="apidoc.DottedName.__cmp__()" alt="" coords="504,62,760,94" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#dominates" title="apidoc.DottedName.dominates()" alt="" coords="500,118,764,150" />
+<area shape="rect" href="epydoc.docbuilder-module.html#_var_shadows_self" title="_var_shadows_self()" alt="" coords="272,62,451,94" />
+<area shape="rect" href="epydoc.docbuilder-module.html#assign_canonical_names" title="assign_canonical_names()" alt="" coords="6,62,224,94" />
+</map>
+  <img src="call_graph_for__var_shadows_se.gif" alt='' usemap="#call_graph_for__var_shadows_se" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_fix_self_shadowing_var"></a><span class="summary-sig-name">_fix_self_shadowing_var</span>(<span class="summary-sig-arg">var_doc</span>,
+        <span class="summary-sig-arg">varname</span>,
+        <span class="summary-sig-arg">docindex</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docbuilder-pysrc.html#_fix_self_shadowing_var">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_unreachable_name_for"></a><span class="summary-sig-name">_unreachable_name_for</span>(<span class="summary-sig-arg">val_doc</span>,
+        <span class="summary-sig-arg">docindex</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docbuilder-pysrc.html#_unreachable_name_for">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__unreachable_na-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__unreachable_na-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__unreachable_na" name="call_graph_for__unreachable_na">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__cmp__" title="apidoc.APIDoc.__cmp__()" alt="" coords="555,6,779,38" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__cmp__" title="apidoc.DottedName.__cmp__()" alt="" coords="539,62,795,94" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__hash__" title="apidoc.DottedName.__hash__()" alt="" coords="538,118,796,150" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__init__" title="apidoc.DottedName.__init__()" alt="" coords="542,174,792,206" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__str__" title="apidoc.DottedName.__str__()" alt="" coords="546,230,788,262" />
+<area shape="rect" href="epydoc.docbuilder-module.html#_unreachable_name_for" title="_unreachable_name_for()" alt="" coords="274,118,487,150" />
+<area shape="rect" href="epydoc.docbuilder-module.html#assign_canonical_names" title="assign_canonical_names()" alt="" coords="6,118,224,150" />
+</map>
+  <img src="call_graph_for__unreachable_na.gif" alt='' usemap="#call_graph_for__unreachable_na" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Inheritance</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="inherit_docs"></a><span class="summary-sig-name">inherit_docs</span>(<span class="summary-sig-arg">class_doc</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docbuilder-pysrc.html#inherit_docs">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_inherit_docs-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_inherit_docs-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_inherit_docs" name="call_graph_for_inherit_docs">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__cmp__" title="apidoc.APIDoc.__cmp__()" alt="" coords="390,6,614,38" />
+<area shape="rect" href="epydoc.apidoc.ClassDoc-class.html#mro" title="apidoc.ClassDoc.mro()" alt="" coords="404,62,599,94" />
+<area shape="rect" href="epydoc.docbuilder-module.html#_inherit_info" title="_inherit_info()" alt="" coords="436,118,567,150" />
+<area shape="rect" href="epydoc.docbuilder-module.html#build_doc_index" title="build_doc_index()" alt="" coords="6,62,166,94" />
+<area shape="rect" href="epydoc.docbuilder-module.html#inherit_docs" title="inherit_docs()" alt="" coords="214,62,342,94" />
+</map>
+  <img src="call_graph_for_inherit_docs.gif" alt='' usemap="#call_graph_for_inherit_docs" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_inherit_info"></a><span class="summary-sig-name">_inherit_info</span>(<span class="summary-sig-arg">var_doc</span>)</span><br />
+      Copy any relevant documentation information from the variable that 
+      <code>var_doc</code> overrides into <code>var_doc</code> itself.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docbuilder-pysrc.html#_inherit_info">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__inherit_info-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__inherit_info-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__inherit_info" name="call_graph_for__inherit_info">
+<area shape="rect" href="epydoc.docbuilder-module.html#_inherit_info" title="_inherit_info()" alt="" coords="183,6,313,38" />
+<area shape="rect" href="epydoc.docbuilder-module.html#inherit_docs" title="inherit_docs()" alt="" coords="5,6,133,38" />
+</map>
+  <img src="call_graph_for__inherit_info.gif" alt='' usemap="#call_graph_for__inherit_info" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+</table>
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Variables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docbuilder-module.html#_INHERITED_ATTRIBS" class="summary-name" onclick="show_private();">_INHERITED_ATTRIBS</a> = <code title="['descr',
+ 'summary',
+ 'metadata',
+ 'extra_docstring_fields',
+ 'type_descr',
+ 'arg_descrs',
+ 'arg_types',
+ 'return_descr',
+..."><code class="variable-group">[</code><code class="variable-quote">'</code><code class="variable-string">descr</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">summary</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">metadata</code><code class="variable-quote">'</code><code class="variable-op">, [...]
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Merging</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docbuilder-module.html#MERGE_PRECEDENCE" class="summary-name">MERGE_PRECEDENCE</a> = <code title="{'canonical_name': 'introspect',
+ 'docformat': 'parse',
+ 'docstring': 'introspect',
+ 'filename': 'parse',
+ 'is_alias': 'parse',
+ 'is_imported': 'introspect',
+ 'is_package': 'parse',
+ 'repr': 'parse',
+..."><code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">canonical_name</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">introspect</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">docformat</code><code class="variable-ellipsis">...</code></code><br />
+      Indicates whether information from introspection or parsing should be
+      given precedence, for specific attributes.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docbuilder-module.html#DEFAULT_MERGE_PRECEDENCE" class="summary-name">DEFAULT_MERGE_PRECEDENCE</a> = <code title="'introspect'"><code class="variable-quote">'</code><code class="variable-string">introspect</code><code class="variable-quote">'</code></code><br />
+      Indicates whether information from introspection or parsing should be
+      given precedence.
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="_attribute_mergefunc_registry"></a><span class="summary-name">_attribute_mergefunc_registry</span> = <code title="{}">{}</code>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8"  class="private">
+  <th colspan="2" class="group-header"
+    >    Naming</th></tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docbuilder-module.html#_name_scores" class="summary-name" onclick="show_private();">_name_scores</a> = <code title="{<GenericValueDoc ??-12>: -10000,
+ <ModuleDoc ConfigParser>: 2147483647,
+ <ValueDoc Tkinter.At>: 2147483647,
+ <ValueDoc Tkinter.AtEnd>: 2147483647,
+ <ValueDoc Tkinter.AtInsert>: 2147483647,
+ <ValueDoc Tkinter.AtSelFirst>: 2147483647,
+ <ValueDoc Tkinter.AtSelLast>: 2147483647,
+ <ValueDoc Tkinter.BaseWidget>: 2147483647,
+..."><code class="variable-group">{</code><GenericValueDoc ??-12><code class="variable-op">: </code>-10000<code class="variable-op">, </code><ModuleDoc Co<code class="variable-ellipsis">...</code></code><br />
+      A dictionary mapping from each <code>ValueDoc</code> to the score 
+      that has been assigned to its current cannonical name.
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docbuilder-module.html#_unreachable_names" class="summary-name" onclick="show_private();">_unreachable_names</a> = <code title="{DottedName('??'): 14,
+ DottedName('??', 'APIDoc'): 4,
+ DottedName('??', 'ApiLinkReader'): 2,
+ DottedName('??', 'ArithmeticError'): 4,
+ DottedName('??', 'AssertionError'): 1,
+ DottedName('??', 'AttributeError'): 1,
+ DottedName('??', 'Body'): 1,
+ DottedName('??', 'ClassDoc'): 1,
+..."><code class="variable-group">{</code>DottedName('??')<code class="variable-op">: </code>14<code class="variable-op">, </code>DottedName('??', '<code class="variable-ellipsis">...</code></code><br />
+      The set of names that have been used for unreachable objects.
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTION DETAILS ==================== -->
+<a name="section-FunctionDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Function Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-FunctionDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="build_doc"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">build_doc</span>(<span class="sig-arg">item</span>,
+        <span class="sig-arg">introspect</span>=<span class="sig-default">True</span>,
+        <span class="sig-arg">parse</span>=<span class="sig-default">True</span>,
+        <span class="sig-arg">add_submodules</span>=<span class="sig-default">True</span>,
+        <span class="sig-arg">exclude_introspect</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">exclude_parse</span>=<span class="sig-default">None</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docbuilder-pysrc.html#build_doc">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Build API documentation for a given item, and return it as an <a 
+  href="epydoc.apidoc.APIDoc-class.html" class="link">APIDoc</a> 
+  object.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>item</code></strong> - The item to document, specified using any of the following:
+          <ul>
+            <li>
+              A string, naming a python package directory (e.g., 
+              <code>'epydoc/markup'</code>)
+            </li>
+            <li>
+              A string, naming a python file (e.g., 
+              <code>'epydoc/docparser.py'</code>)
+            </li>
+            <li>
+              A string, naming a python object (e.g., 
+              <code>'epydoc.docparser.DocParser'</code>)
+            </li>
+            <li>
+              Any (non-string) python object (e.g., 
+              <code>list.append</code>)
+            </li>
+          </ul></li>
+        <li><strong class="pname"><code>introspect</code></strong> - If true, then use introspection to examine the specified items.  
+          Otherwise, just use parsing.</li>
+        <li><strong class="pname"><code>parse</code></strong> - If true, then use parsing to examine the specified items.  
+          Otherwise, just use introspection.</li>
+    </ul></dd>
+    <dt>Returns: <a href="epydoc.apidoc.APIDoc-class.html" class="link">APIDoc</a></dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="build_doc_index"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">build_doc_index</span>(<span class="sig-arg">items</span>,
+        <span class="sig-arg">introspect</span>=<span class="sig-default">True</span>,
+        <span class="sig-arg">parse</span>=<span class="sig-default">True</span>,
+        <span class="sig-arg">add_submodules</span>=<span class="sig-default">True</span>,
+        <span class="sig-arg">exclude_introspect</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">exclude_parse</span>=<span class="sig-default">None</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docbuilder-pysrc.html#build_doc_index">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_build_doc_index-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_build_doc_index-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_build_doc_index" name="call_graph_for_build_doc_index">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__hash__" title="apidoc.APIDoc.__hash__()" alt="" coords="291,6,515,38" />
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#__init__" title="apidoc.DocIndex.__init__()" alt="" coords="289,62,516,94" />
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#reachable_valdocs" title="apidoc.DocIndex.reachable_valdocs()" alt="" coords="251,118,555,150" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__cmp__" title="apidoc.DottedName.__cmp__()" alt="" coords="275,174,531,206" />
+<area shape="rect" href="epydoc.apidoc.ModuleDoc-class.html#init_submodule_groups" title="apidoc.ModuleDoc.init_submodule_groups()" alt="" coords="224,230,581,262" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#init_sorted_variables" title="apidoc.NamespaceDoc.init_sorted_variables()" alt="" coords="220,286,585,318" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#init_variable_groups" title="apidoc.NamespaceDoc.init_variable_groups()" alt="" coords="221,342,584,374" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#report_unused_groups" title="apidoc.NamespaceDoc.report_unused_groups()" alt="" coords="215,398,591,430" />
+<area shape="rect" href="epydoc.docbuilder.BuildOptions-class.html#__init__" title="BuildOptions.__init__()" alt="" coords="301,454,504,486" />
+<area shape="rect" href="epydoc.docbuilder-module.html#_get_docs_from_items" title="_get_docs_from_items()" alt="" coords="300,510,505,542" />
+<area shape="rect" href="epydoc.docbuilder-module.html#_report_valdoc_progress" title="_report_valdoc_progress()" alt="" coords="293,566,512,598" />
+<area shape="rect" href="epydoc.docbuilder-module.html#assign_canonical_names" title="assign_canonical_names()" alt="" coords="293,622,512,654" />
+<area shape="rect" href="epydoc.docbuilder-module.html#build_doc_index" title="build_doc_index()" alt="" coords="5,538,165,570" />
+<area shape="rect" href="epydoc.docbuilder-module.html#find_overrides" title="find_overrides()" alt="" coords="332,678,473,710" />
+<area shape="rect" href="epydoc.docbuilder-module.html#inherit_docs" title="inherit_docs()" alt="" coords="339,734,467,766" />
+<area shape="rect" href="epydoc.docbuilder-module.html#link_imports" title="link_imports()" alt="" coords="339,790,467,822" />
+<area shape="rect" href="epydoc.docbuilder-module.html#merge_docs" title="merge_docs()" alt="" coords="341,846,464,878" />
+<area shape="rect" href="epydoc.docstringparser-module.html#parse_docstring" title="docstringparser.parse_docstring()" alt="" coords="267,902,539,934" />
+<area shape="rect" href="epydoc.log-module.html#end_progress" title="log.end_progress()" alt="" coords="321,958,484,990" />
+<area shape="rect" href="epydoc.log-module.html#progress" title="log.progress()" alt="" coords="340,1014,465,1046" />
+<area shape="rect" href="epydoc.log-module.html#start_progress" title="log.start_progress()" alt="" coords="320,1070,485,1102" />
+</map>
+  <img src="call_graph_for_build_doc_index.gif" alt='' usemap="#call_graph_for_build_doc_index" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Build API documentation for the given list of items, and return it in 
+  the form of a <a href="epydoc.apidoc.DocIndex-class.html" 
+  class="link">DocIndex</a>.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>items</code></strong> - The items to document, specified using any of the following:
+          <ul>
+            <li>
+              A string, naming a python package directory (e.g., 
+              <code>'epydoc/markup'</code>)
+            </li>
+            <li>
+              A string, naming a python file (e.g., 
+              <code>'epydoc/docparser.py'</code>)
+            </li>
+            <li>
+              A string, naming a python object (e.g., 
+              <code>'epydoc.docparser.DocParser'</code>)
+            </li>
+            <li>
+              Any (non-string) python object (e.g., 
+              <code>list.append</code>)
+            </li>
+          </ul></li>
+        <li><strong class="pname"><code>introspect</code></strong> - If true, then use introspection to examine the specified items.  
+          Otherwise, just use parsing.</li>
+        <li><strong class="pname"><code>parse</code></strong> - If true, then use parsing to examine the specified items.  
+          Otherwise, just use introspection.</li>
+    </ul></dd>
+    <dt>Returns: <a href="epydoc.apidoc.DocIndex-class.html" class="link">DocIndex</a></dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="_get_docs_from_module_file"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">_get_docs_from_module_file</span>(<span class="sig-arg">filename</span>,
+        <span class="sig-arg">options</span>,
+        <span class="sig-arg">progress_estimator</span>,
+        <span class="sig-arg">parent_docs</span>=<span class="sig-default"><code class="variable-group">(</code>None<code class="variable-op">, </code>None<code class="variable-group">)</code></span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docbuilder-pysrc.html#_get_docs_from_module_file">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__get_docs_from__5-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for__get_docs_from__5-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__get_docs_from__5" name="call_graph_for__get_docs_from__5">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__init__" title="apidoc.DottedName.__init__()" alt="" coords="624,6,875,38" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__str__" title="apidoc.DottedName.__str__()" alt="" coords="628,62,871,94" />
+<area shape="rect" href="epydoc.docbuilder.BuildOptions-class.html#must_introspect" title="BuildOptions.must_introspect()" alt="" coords="620,118,879,150" />
+<area shape="rect" href="epydoc.docbuilder.BuildOptions-class.html#must_parse" title="BuildOptions.must_parse()" alt="" coords="638,174,862,206" />
+<area shape="rect" href="epydoc.docbuilder._ProgressEstimator-class.html#progress" title="_ProgressEstimator.progress()" alt="" coords="626,230,874,262" />
+<area shape="rect" href="epydoc.docbuilder-module.html#_get_docs_from_items" title="_get_docs_from_items()" alt="" coords="31,230,236,262" />
+<area shape="rect" href="epydoc.docbuilder-module.html#_get_docs_from_module_file" title="_get_docs_from_module_file()" alt="" coords="311,258,564,290" />
+<area shape="rect" href="epydoc.docbuilder-module.html#_report_errors" title="_report_errors()" alt="" coords="679,286,820,318" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#introspect_docs" title="docintrospecter.introspect_docs()" alt="" coords="615,342,884,374" />
+<area shape="rect" href="epydoc.docparser-module.html#parse_docs" title="docparser.parse_docs()" alt="" coords="652,398,847,430" />
+<area shape="rect" href="epydoc.log-module.html#progress" title="log.progress()" alt="" coords="687,454,812,486" />
+<area shape="rect" href="epydoc.util-module.html#py_src_filename" title="util.py_src_filename()" alt="" coords="655,510,844,542" />
+<area shape="rect" href="epydoc.docbuilder-module.html#_get_docs_from_submodules" title="_get_docs_from_submodules()" alt="" coords="7,286,260,318" />
+</map>
+  <img src="call_graph_for__get_docs_from__5.gif" alt='' usemap="#call_graph_for__get_docs_from__5" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Construct and return the API documentation for the python module with 
+  the given filename.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>parent_docs</code></strong> - The <code>ModuleDoc</code> of the containing package. If 
+          <code>parent_docs</code> is not provided, then this method will 
+          check if the given filename is contained in a package; and if so,
+          it will construct a stub <code>ModuleDoc</code> for the 
+          containing package(s).  <code>parent_docs</code> is a tuple, 
+          where the first element is the parent from introspection, and the
+          second element is the parent from parsing.</li>
+    </ul></dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="register_attribute_mergefunc"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">register_attribute_mergefunc</span>(<span class="sig-arg">attrib</span>,
+        <span class="sig-arg">mergefunc</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docbuilder-pysrc.html#register_attribute_mergefunc">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Register an attribute merge function.  This function will be called by
+  <a href="epydoc.docbuilder-module.html#merge_docs" 
+  class="link">merge_docs()</a> when it needs to merge the attribute values
+  of two <code>APIDoc</code>s.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>attrib</code></strong> - The name of the attribute whose values are merged by 
+          <code>mergefunc</code>.</li>
+        <li><strong class="pname"><code>mergefunc</code></strong> - The merge function, whose sinature is:
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">def</span> <span class="py-defname">mergefunc</span>(introspect_val, parse_val, precedence, cyclecheck, path):
+<span class="py-more">... </span>    return calculate_merged_value(introspect_val, parse_val)</pre>
+          <p>Where <code>introspect_val</code> and <code>parse_val</code> 
+          are the two values to combine; <code>precedence</code> is a 
+          string indicating which value takes precedence for this attribute
+          (<code>'introspect'</code> or <code>'parse'</code>); 
+          <code>cyclecheck</code> is a value used by 
+          <code>merge_docs()</code> to make sure that it only visits each 
+          pair of docs once; and <code>path</code> is a string describing 
+          the path that was taken from the root to this attribute (used to 
+          generate log messages).</p>
+          <p>If the merge function needs to call <code>merge_docs</code>, 
+          then it should pass <code>cyclecheck</code> and <code>path</code>
+          back in.  (When appropriate, a suffix should be added to 
+          <code>path</code> to describe the path taken to the merged 
+          values.)</p></li>
+    </ul></dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="merge_docs"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">merge_docs</span>(<span class="sig-arg">introspect_doc</span>,
+        <span class="sig-arg">parse_doc</span>,
+        <span class="sig-arg">cyclecheck</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">path</span>=<span class="sig-default">None</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docbuilder-pysrc.html#merge_docs">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_merge_docs-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_merge_docs-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_merge_docs" name="call_graph_for_merge_docs">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__cmp__" title="apidoc.APIDoc.__cmp__()" alt="" coords="481,6,705,38" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#merge_and_overwrite" title="apidoc.APIDoc.merge_and_overwrite()" alt="" coords="435,62,752,94" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#specialize_to" title="apidoc.APIDoc.specialize_to()" alt="" coords="468,118,719,150" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__cmp__" title="apidoc.DottedName.__cmp__()" alt="" coords="465,174,721,206" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__str__" title="apidoc.DottedName.__str__()" alt="" coords="472,230,715,262" />
+<area shape="rect" href="epydoc.docbuilder-module.html#_merge_posargs_and_defaults" title="_merge_posargs_and_defaults()" alt="" coords="463,286,724,318" />
+<area shape="rect" href="epydoc.docbuilder-module.html#build_doc_index" title="build_doc_index()" alt="" coords="29,90,189,122" />
+<area shape="rect" href="epydoc.docbuilder-module.html#merge_docs" title="merge_docs()" alt="" coords="263,202,385,234" />
+<area shape="rect" href="epydoc.docbuilder-module.html#merge_attribute" title="merge_attribute()" alt="" coords="517,342,669,374" />
+<area shape="rect" href="epydoc.docbuilder-module.html#merge_bases" title="merge_bases()" alt="" coords="44,146,175,178" />
+<area shape="rect" href="epydoc.log-module.html#info" title="log.info()" alt="" coords="548,398,639,430" />
+<area shape="rect" href="epydoc.docbuilder-module.html#merge_posarg_defaults" title="merge_posarg_defaults()" alt="" coords="5,202,213,234" />
+<area shape="rect" href="epydoc.docbuilder-module.html#merge_value" title="merge_value()" alt="" coords="44,258,175,290" />
+<area shape="rect" href="epydoc.docbuilder-module.html#merge_variables" title="merge_variables()" alt="" coords="31,314,188,346" />
+</map>
+  <img src="call_graph_for_merge_docs.gif" alt='' usemap="#call_graph_for_merge_docs" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Merge the API documentation information that was obtained from 
+  introspection with information that was obtained from parsing. 
+  <code>introspect_doc</code> and <code>parse_doc</code> should be two 
+  <code>APIDoc</code> instances that describe the same object.  
+  <code>merge_docs</code> combines the information from these two 
+  instances, and returns the merged <code>APIDoc</code>.</p>
+  <p>If <code>introspect_doc</code> and <code>parse_doc</code> are 
+  compatible, then they will be <i>merged</i> -- i.e., they will be coerced
+  to a common class, and their state will be stored in a shared dictionary.
+  Once they have been merged, any change made to the attributes of one will
+  affect the other.  The value for the each of the merged 
+  <code>APIDoc</code>'s attributes is formed by combining the values of the
+  source <code>APIDoc</code>s' attributes, as follows:</p>
+  <ul>
+    <li>
+      If either of the source attributes' value is <code>UNKNOWN</code>, 
+      then use the other source attribute's value.
+    </li>
+    <li>
+      Otherwise, if an attribute merge function has been registered for the
+      attribute, then use that function to calculate the merged value from 
+      the two source attribute values.
+    </li>
+    <li>
+      Otherwise, if <a 
+      href="epydoc.docbuilder-module.html#MERGE_PRECEDENCE" 
+      class="link">MERGE_PRECEDENCE</a> is defined for the attribute, then 
+      use the attribute value from the source that it indicates.
+    </li>
+    <li>
+      Otherwise, use the attribute value from the source indicated by <a 
+      href="epydoc.docbuilder-module.html#DEFAULT_MERGE_PRECEDENCE" 
+      class="link">DEFAULT_MERGE_PRECEDENCE</a>.
+    </li>
+  </ul>
+  <p>If <code>introspect_doc</code> and <code>parse_doc</code> are 
+  <i>not</i> compatible (e.g., if their values have incompatible types), 
+  then <code>merge_docs()</code> will simply return either 
+  <code>introspect_doc</code> or <code>parse_doc</code>, depending on the 
+  value of <a href="epydoc.docbuilder-module.html#DEFAULT_MERGE_PRECEDENCE"
+  class="link">DEFAULT_MERGE_PRECEDENCE</a>.  The two input 
+  <code>APIDoc</code>s will not be merged or modified in any way.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>cyclecheck</code></strong>, <strong class="pname"><code>path</code></strong> - These arguments should only be provided when 
+          <code>merge_docs()</code> is called by an attribute merge 
+          function.  See <a 
+          href="epydoc.docbuilder-module.html#register_attribute_mergefunc"
+          class="link">register_attribute_mergefunc()</a> for more details.</li>
+    </ul></dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="assign_canonical_names"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">assign_canonical_names</span>(<span class="sig-arg">val_doc</span>,
+        <span class="sig-arg">name</span>,
+        <span class="sig-arg">docindex</span>,
+        <span class="sig-arg">score</span>=<span class="sig-default">0</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docbuilder-pysrc.html#assign_canonical_names">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_assign_canonica-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_assign_canonica-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_assign_canonica" name="call_graph_for_assign_canonica">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__cmp__" title="apidoc.APIDoc.__cmp__()" alt="" coords="509,6,733,38" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__hash__" title="apidoc.APIDoc.__hash__()" alt="" coords="509,62,733,94" />
+<area shape="rect" href="epydoc.apidoc.ClassDoc-class.html#apidoc_links" title="apidoc.ClassDoc.apidoc_links()" alt="" coords="492,118,751,150" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__init__" title="apidoc.DottedName.__init__()" alt="" coords="496,174,747,206" />
+<area shape="rect" href="epydoc.apidoc.ModuleDoc-class.html#apidoc_links" title="apidoc.ModuleDoc.apidoc_links()" alt="" coords="483,230,760,262" />
+<area shape="rect" href="epydoc.apidoc.PropertyDoc-class.html#apidoc_links" title="apidoc.PropertyDoc.apidoc_links()" alt="" coords="480,286,763,318" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#apidoc_links" title="apidoc.ValueDoc.apidoc_links()" alt="" coords="489,342,753,374" />
+<area shape="rect" href="epydoc.docbuilder-module.html#_unreachable_name_for" title="_unreachable_name_for()" alt="" coords="515,398,728,430" />
+<area shape="rect" href="epydoc.docbuilder-module.html#_var_shadows_self" title="_var_shadows_self()" alt="" coords="532,454,711,486" />
+<area shape="rect" href="epydoc.docbuilder-module.html#assign_canonical_names" title="assign_canonical_names()" alt="" coords="213,230,432,262" />
+<area shape="rect" href="epydoc.docbuilder-module.html#build_doc_index" title="build_doc_index()" alt="" coords="5,230,165,262" />
+</map>
+  <img src="call_graph_for_assign_canonica.gif" alt='' usemap="#call_graph_for_assign_canonica" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Assign a canonical name to <code>val_doc</code> (if it doesn't have 
+  one already), and (recursively) to each variable in <code>val_doc</code>.
+  In particular, <code>val_doc</code> will be assigned the canonical name 
+  <code>name</code> iff either:</p>
+  <ul>
+    <li>
+      <code>val_doc</code>'s canonical name is <code>UNKNOWN</code>; or
+    </li>
+    <li>
+      <code>val_doc</code>'s current canonical name was assigned by this 
+      method; but the score of the new name (<code>score</code>) is higher 
+      than the score of the current name 
+      (<code>score_dict[val_doc]</code>).
+    </li>
+  </ul>
+  <p>Note that canonical names will even be assigned to values like 
+  integers and <code>None</code>; but these should be harmless.</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="find_overrides"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">find_overrides</span>(<span class="sig-arg">class_doc</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docbuilder-pysrc.html#find_overrides">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_find_overrides-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_find_overrides-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_find_overrides" name="call_graph_for_find_overrides">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__cmp__" title="apidoc.APIDoc.__cmp__()" alt="" coords="406,6,630,38" />
+<area shape="rect" href="epydoc.apidoc.ClassDoc-class.html#mro" title="apidoc.ClassDoc.mro()" alt="" coords="420,62,615,94" />
+<area shape="rect" href="epydoc.docbuilder-module.html#build_doc_index" title="build_doc_index()" alt="" coords="6,34,166,66" />
+<area shape="rect" href="epydoc.docbuilder-module.html#find_overrides" title="find_overrides()" alt="" coords="215,34,356,66" />
+</map>
+  <img src="call_graph_for_find_overrides.gif" alt='' usemap="#call_graph_for_find_overrides" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Set the <code>overrides</code> attribute for all variables in 
+  <code>class_doc</code>. This needs to be done early (before docstring 
+  parsing), so we can know which docstrings to suppress warnings for.</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== VARIABLES DETAILS ==================== -->
+<a name="section-VariablesDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Variables Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-VariablesDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="MERGE_PRECEDENCE"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">MERGE_PRECEDENCE</h3>
+  <p>Indicates whether information from introspection or parsing should be 
+  given precedence, for specific attributes.  This dictionary maps from 
+  attribute names to either <code>'introspect'</code> or 
+  <code>'parse'</code>.</p>
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">canonical_name</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">introspect</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">docformat</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">parse</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">docstring</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">introspect</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">filename</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">parse</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">is_alias</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">parse</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">is_imported</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">introspect</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">is_package</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">parse</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">repr</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">parse</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="DEFAULT_MERGE_PRECEDENCE"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">DEFAULT_MERGE_PRECEDENCE</h3>
+  <p>Indicates whether information from introspection or parsing should be 
+  given precedence.  Should be either <code>'introspect'</code> or 
+  <code>'parse'</code></p>
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">introspect</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="_name_scores"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">_name_scores</h3>
+  <p>A dictionary mapping from each <code>ValueDoc</code> to the score that
+  has been assigned to its current cannonical name.  If <a 
+  href="epydoc.docbuilder-module.html#assign_canonical_names" 
+  class="link">assign_canonical_names()</a> finds a canonical name with a 
+  better score, then it will replace the old name.</p>
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-group">{</code><GenericValueDoc ??-12><code class="variable-op">: </code>-10000<code class="variable-op">,</code>
+ <ModuleDoc ConfigParser><code class="variable-op">: </code>2147483647<code class="variable-op">,</code>
+ <ValueDoc Tkinter.At><code class="variable-op">: </code>2147483647<code class="variable-op">,</code>
+ <ValueDoc Tkinter.AtEnd><code class="variable-op">: </code>2147483647<code class="variable-op">,</code>
+ <ValueDoc Tkinter.AtInsert><code class="variable-op">: </code>2147483647<code class="variable-op">,</code>
+ <ValueDoc Tkinter.AtSelFirst><code class="variable-op">: </code>2147483647<code class="variable-op">,</code>
+ <ValueDoc Tkinter.AtSelLast><code class="variable-op">: </code>2147483647<code class="variable-op">,</code>
+ <ValueDoc Tkinter.BaseWidget><code class="variable-op">: </code>2147483647<code class="variable-op">,</code>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="_unreachable_names"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">_unreachable_names</h3>
+  <p>The set of names that have been used for unreachable objects.  This is
+  used to ensure there are no duplicate cannonical names assigned. 
+  <code>_unreachable_names</code> is a dictionary mapping from dotted names
+  to integer ids, where the next unused unreachable name derived from 
+  dotted name <code>n</code> is <code>DottedName('%s-%s' % (n, 
+  str(_unreachable_names[n]+1))</code></p>
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-group">{</code>DottedName('??')<code class="variable-op">: </code>14<code class="variable-op">,</code>
+ DottedName('??', 'APIDoc')<code class="variable-op">: </code>4<code class="variable-op">,</code>
+ DottedName('??', 'ApiLinkReader')<code class="variable-op">: </code>2<code class="variable-op">,</code>
+ DottedName('??', 'ArithmeticError')<code class="variable-op">: </code>4<code class="variable-op">,</code>
+ DottedName('??', 'AssertionError')<code class="variable-op">: </code>1<code class="variable-op">,</code>
+ DottedName('??', 'AttributeError')<code class="variable-op">: </code>1<code class="variable-op">,</code>
+ DottedName('??', 'Body')<code class="variable-op">: </code>1<code class="variable-op">,</code>
+ DottedName('??', 'ClassDoc')<code class="variable-op">: </code>1<code class="variable-op">,</code>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="_INHERITED_ATTRIBS"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">_INHERITED_ATTRIBS</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-group">[</code><code class="variable-quote">'</code><code class="variable-string">descr</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">summary</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">metadata</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">extra_docstring_fields</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">type_descr</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">arg_descrs</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">arg_types</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">return_descr</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:06:01 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.docbuilder-pysrc.html b/doc/api/epydoc.docbuilder-pysrc.html
new file mode 100644
index 0000000..2d13f9d
--- /dev/null
+++ b/doc/api/epydoc.docbuilder-pysrc.html
@@ -0,0 +1,2049 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.docbuilder</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        Module docbuilder
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.docbuilder-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="epydoc.docbuilder-module.html">Module epydoc.docbuilder</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno">   1</tt>  <tt class="py-line"><tt class="py-comment"># epydoc -- Documentation Builder</tt> </tt>
+<a name="L2"></a><tt class="py-lineno">   2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L3"></a><tt class="py-lineno">   3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2005 Edward Loper</tt> </tt>
+<a name="L4"></a><tt class="py-lineno">   4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Author: Edward Loper <edloper at loper.org></tt> </tt>
+<a name="L5"></a><tt class="py-lineno">   5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># URL: <http://epydoc.sf.net></tt> </tt>
+<a name="L6"></a><tt class="py-lineno">   6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L7"></a><tt class="py-lineno">   7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># $Id: docbuilder.py 1683 2008-01-29 22:17:39Z edloper $</tt> </tt>
+<a name="L8"></a><tt class="py-lineno">   8</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L9"></a><tt class="py-lineno">   9</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L10"></a><tt class="py-lineno">  10</tt>  <tt class="py-line"><tt class="py-docstring">Construct data structures that encode the API documentation for Python</tt> </tt>
+<a name="L11"></a><tt class="py-lineno">  11</tt>  <tt class="py-line"><tt class="py-docstring">objects.  These data structures are created using a series of steps:</tt> </tt>
+<a name="L12"></a><tt class="py-lineno">  12</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L13"></a><tt class="py-lineno">  13</tt>  <tt class="py-line"><tt class="py-docstring">  1. B{Building docs}: Extract basic information about the objects,</tt> </tt>
+<a name="L14"></a><tt class="py-lineno">  14</tt>  <tt class="py-line"><tt class="py-docstring">     and objects that are related to them.  This can be done by</tt> </tt>
+<a name="L15"></a><tt class="py-lineno">  15</tt>  <tt class="py-line"><tt class="py-docstring">     introspecting the objects' values (with L{epydoc.docintrospecter}; or</tt> </tt>
+<a name="L16"></a><tt class="py-lineno">  16</tt>  <tt class="py-line"><tt class="py-docstring">     by parsing their source code (with L{epydoc.docparser}.</tt> </tt>
+<a name="L17"></a><tt class="py-lineno">  17</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L18"></a><tt class="py-lineno">  18</tt>  <tt class="py-line"><tt class="py-docstring">  2. B{Merging}: Combine the information obtained from introspection &</tt> </tt>
+<a name="L19"></a><tt class="py-lineno">  19</tt>  <tt class="py-line"><tt class="py-docstring">     parsing each object into a single structure.</tt> </tt>
+<a name="L20"></a><tt class="py-lineno">  20</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L21"></a><tt class="py-lineno">  21</tt>  <tt class="py-line"><tt class="py-docstring">  3. B{Linking}: Replace any 'pointers' that were created for imported</tt> </tt>
+<a name="L22"></a><tt class="py-lineno">  22</tt>  <tt class="py-line"><tt class="py-docstring">     variables by their target (if it's available).</tt> </tt>
+<a name="L23"></a><tt class="py-lineno">  23</tt>  <tt class="py-line"><tt class="py-docstring">  </tt> </tt>
+<a name="L24"></a><tt class="py-lineno">  24</tt>  <tt class="py-line"><tt class="py-docstring">  4. B{Naming}: Chose a unique 'canonical name' for each</tt> </tt>
+<a name="L25"></a><tt class="py-lineno">  25</tt>  <tt class="py-line"><tt class="py-docstring">     object.</tt> </tt>
+<a name="L26"></a><tt class="py-lineno">  26</tt>  <tt class="py-line"><tt class="py-docstring">  </tt> </tt>
+<a name="L27"></a><tt class="py-lineno">  27</tt>  <tt class="py-line"><tt class="py-docstring">  5. B{Docstring Parsing}: Parse the docstring of each object, and</tt> </tt>
+<a name="L28"></a><tt class="py-lineno">  28</tt>  <tt class="py-line"><tt class="py-docstring">     extract any pertinant information.</tt> </tt>
+<a name="L29"></a><tt class="py-lineno">  29</tt>  <tt class="py-line"><tt class="py-docstring">  </tt> </tt>
+<a name="L30"></a><tt class="py-lineno">  30</tt>  <tt class="py-line"><tt class="py-docstring">  6. B{Inheritance}: Add information about variables that classes</tt> </tt>
+<a name="L31"></a><tt class="py-lineno">  31</tt>  <tt class="py-line"><tt class="py-docstring">     inherit from their base classes.</tt> </tt>
+<a name="L32"></a><tt class="py-lineno">  32</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L33"></a><tt class="py-lineno">  33</tt>  <tt class="py-line"><tt class="py-docstring">The documentation information for each individual object is</tt> </tt>
+<a name="L34"></a><tt class="py-lineno">  34</tt>  <tt class="py-line"><tt class="py-docstring">represented using an L{APIDoc}; and the documentation for a collection</tt> </tt>
+<a name="L35"></a><tt class="py-lineno">  35</tt>  <tt class="py-line"><tt class="py-docstring">of objects is represented using a L{DocIndex}.</tt> </tt>
+<a name="L36"></a><tt class="py-lineno">  36</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L37"></a><tt class="py-lineno">  37</tt>  <tt class="py-line"><tt class="py-docstring">The main interface to C{epydoc.docbuilder} consists of two functions:</tt> </tt>
+<a name="L38"></a><tt class="py-lineno">  38</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L39"></a><tt class="py-lineno">  39</tt>  <tt class="py-line"><tt class="py-docstring">  - L{build_doc()} -- Builds documentation for a single item, and</tt> </tt>
+<a name="L40"></a><tt class="py-lineno">  40</tt>  <tt class="py-line"><tt class="py-docstring">    returns it as an L{APIDoc} object.</tt> </tt>
+<a name="L41"></a><tt class="py-lineno">  41</tt>  <tt class="py-line"><tt class="py-docstring">  - L{build_doc_index()} -- Builds documentation for a collection of</tt> </tt>
+<a name="L42"></a><tt class="py-lineno">  42</tt>  <tt class="py-line"><tt class="py-docstring">    items, and returns it as a L{DocIndex} object.</tt> </tt>
+<a name="L43"></a><tt class="py-lineno">  43</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L44"></a><tt class="py-lineno">  44</tt>  <tt class="py-line"><tt class="py-docstring">The remaining functions are used by these two main functions to</tt> </tt>
+<a name="L45"></a><tt class="py-lineno">  45</tt>  <tt class="py-line"><tt class="py-docstring">perform individual steps in the creation of the documentation.</tt> </tt>
+<a name="L46"></a><tt class="py-lineno">  46</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L47"></a><tt class="py-lineno">  47</tt>  <tt class="py-line"><tt class="py-docstring">@group Documentation Construction: build_doc, build_doc_index,</tt> </tt>
+<a name="L48"></a><tt class="py-lineno">  48</tt>  <tt class="py-line"><tt class="py-docstring">    _get_docs_from_*, _report_valdoc_progress</tt> </tt>
+<a name="L49"></a><tt class="py-lineno">  49</tt>  <tt class="py-line"><tt class="py-docstring">@group Merging: *MERGE*, *merge*</tt> </tt>
+<a name="L50"></a><tt class="py-lineno">  50</tt>  <tt class="py-line"><tt class="py-docstring">@group Linking: link_imports</tt> </tt>
+<a name="L51"></a><tt class="py-lineno">  51</tt>  <tt class="py-line"><tt class="py-docstring">@group Naming: _name_scores, _unreachable_names, assign_canonical_names,</tt> </tt>
+<a name="L52"></a><tt class="py-lineno">  52</tt>  <tt class="py-line"><tt class="py-docstring">    _var_shadows_self, _fix_self_shadowing_var, _unreachable_name_for</tt> </tt>
+<a name="L53"></a><tt class="py-lineno">  53</tt>  <tt class="py-line"><tt class="py-docstring">@group Inheritance: inherit_docs, _inherit_info</tt> </tt>
+<a name="L54"></a><tt class="py-lineno">  54</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L55"></a><tt class="py-lineno">  55</tt>  <tt class="py-line"><tt class="py-name">__docformat__</tt> <tt class="py-op">=</tt> <tt class="py-string">'epytext en'</tt> </tt>
+<a name="L56"></a><tt class="py-lineno">  56</tt>  <tt class="py-line"> </tt>
+<a name="L57"></a><tt class="py-lineno">  57</tt>  <tt class="py-line"><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L58"></a><tt class="py-lineno">  58</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## Contents</tt> </tt>
+<a name="L59"></a><tt class="py-lineno">  59</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L60"></a><tt class="py-lineno">  60</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## 1. build_doc() & build_doc_index() -- the main interface.</tt> </tt>
+<a name="L61"></a><tt class="py-lineno">  61</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## 2. merge_docs() -- helper, used to merge parse & introspect info</tt> </tt>
+<a name="L62"></a><tt class="py-lineno">  62</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## 3. link_imports() -- helper, used to connect imported vars w/ values</tt> </tt>
+<a name="L63"></a><tt class="py-lineno">  63</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## 4. assign_canonical_names() -- helper, used to set canonical names</tt> </tt>
+<a name="L64"></a><tt class="py-lineno">  64</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## 5. inherit_docs() -- helper, used to inherit docs from base classes</tt> </tt>
+<a name="L65"></a><tt class="py-lineno">  65</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L66"></a><tt class="py-lineno">  66</tt>  <tt class="py-line"><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L67"></a><tt class="py-lineno">  67</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## Imports</tt> </tt>
+<a name="L68"></a><tt class="py-lineno">  68</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L69"></a><tt class="py-lineno">  69</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L70"></a><tt class="py-lineno">  70</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">sys</tt><tt class="py-op">,</tt> <tt class="py-name">os</tt><tt class="py-op">,</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-0" class="py-name" targets="Variable epydoc.apidoc.ModuleDoc.path=epydoc.apidoc.ModuleDoc-class.html#path"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-0', 'path', 'li [...]
+<a name="L71"></a><tt class="py-lineno">  71</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-1" class="py-name" targets="Package epydoc=epydoc-module.html"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-1', 'epydoc', 'link-1');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-2" class="py-name" targets="Module epydoc.apidoc=epydoc.apidoc-module.html"><a title="epydoc.apidoc" class="py-name" href="#" onclick="return doclink('link-2', ' [...]
+<a name="L72"></a><tt class="py-lineno">  72</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-3" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-3', 'epydoc', 'link-1');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-4" class="py-name" targets="Module epydoc.docintrospecter=epydoc.docintrospecter-module.html"><a title="epydoc.docintrospecter" class="py-name" href="#" onclick="return doclink('link-4', 'docintrospecter', [...]
+<a name="L73"></a><tt class="py-lineno">  73</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-6" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-6', 'epydoc', 'link-1');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-7" class="py-name" targets="Module epydoc.docparser=epydoc.docparser-module.html"><a title="epydoc.docparser" class="py-name" href="#" onclick="return doclink('link-7', 'docparser', 'link-7');">docparser</ [...]
+epydoc.markup.ParseError" class="py-name" href="#" onclick="return doclink('link-9', 'ParseError', 'link-9');">ParseError</a></tt> </tt>
+<a name="L74"></a><tt class="py-lineno">  74</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-10" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-10', 'epydoc', 'link-1');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-11" class="py-name" targets="Module epydoc.docstringparser=epydoc.docstringparser-module.html"><a title="epydoc.docstringparser" class="py-name" href="#" onclick="return doclink('link-11', 'docstringpars [...]
+epydoc.markup.epytext.parse_docstring
+epydoc.markup.javadoc.parse_docstring
+epydoc.markup.plaintext.parse_docstring
+epydoc.markup.restructuredtext.parse_docstring" class="py-name" href="#" onclick="return doclink('link-12', 'parse_docstring', 'link-12');">parse_docstring</a></tt> </tt>
+<a name="L75"></a><tt class="py-lineno">  75</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-13" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-13', 'epydoc', 'link-1');">epydoc</a></tt> <tt class="py-keyword">import</tt> <tt id="link-14" class="py-name" targets="Method epydoc.cli.ConsoleLogger.log()=epydoc.cli.ConsoleLogger-class.html#log,Method epydoc.cli.HTMLLogger.log()=epydoc.cli.HTMLLogger-class.html#log,Method epydo [...]
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-14', 'log', 'link-14');">log</a></tt> </tt>
+<a name="L76"></a><tt class="py-lineno">  76</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-15" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-15', 'epydoc', 'link-1');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-16" class="py-name" targets="Module epydoc.test.util=epydoc.test.util-module.html,Module epydoc.util=epydoc.util-module.html"><a title="epydoc.test.util
+epydoc.util" class="py-name" href="#" onclick="return doclink('link-16', 'util', 'link-16');">util</a></tt> <tt class="py-keyword">import</tt> <tt class="py-op">*</tt> </tt>
+<a name="L77"></a><tt class="py-lineno">  77</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-17" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-17', 'epydoc', 'link-1');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-18" class="py-name" targets="Module epydoc.compat=epydoc.compat-module.html"><a title="epydoc.compat" class="py-name" href="#" onclick="return doclink('link-18', 'compat', 'link-18');">compat</a></tt> <t [...]
+<a name="L78"></a><tt class="py-lineno">  78</tt>  <tt class="py-line"> </tt>
+<a name="L79"></a><tt class="py-lineno">  79</tt>  <tt class="py-line"><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L80"></a><tt class="py-lineno">  80</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## 1. build_doc()</tt> </tt>
+<a name="L81"></a><tt class="py-lineno">  81</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L82"></a><tt class="py-lineno">  82</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="BuildOptions"></a><div id="BuildOptions-def"><a name="L83"></a><tt class="py-lineno">  83</tt> <a class="py-toggle" href="#" id="BuildOptions-toggle" onclick="return toggle('BuildOptions');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="epydoc.docbuilder.BuildOptions-class.html">BuildOptions</a><tt class="py-op">:</tt> </tt>
+</div><div id="BuildOptions-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="BuildOptions-expanded"><a name="L84"></a><tt class="py-lineno">  84</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L85"></a><tt class="py-lineno">  85</tt>  <tt class="py-line"><tt class="py-docstring">    Holds the parameters for a documentation building process.</tt> </tt>
+<a name="L86"></a><tt class="py-lineno">  86</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="BuildOptions.__init__"></a><div id="BuildOptions.__init__-def"><a name="L87"></a><tt class="py-lineno">  87</tt> <a class="py-toggle" href="#" id="BuildOptions.__init__-toggle" onclick="return toggle('BuildOptions.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docbuilder.BuildOptions-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">in [...]
+<a name="L88"></a><tt class="py-lineno">  88</tt>  <tt class="py-line">                 <tt class="py-param">exclude_introspect</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">exclude_parse</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L89"></a><tt class="py-lineno">  89</tt>  <tt class="py-line">                 <tt class="py-param">add_submodules</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="BuildOptions.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="BuildOptions.__init__-expanded"><a name="L90"></a><tt class="py-lineno">  90</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">introspect</tt> <tt class="py-op">=</tt> <tt class="py-name">introspect</tt> </tt>
+<a name="L91"></a><tt class="py-lineno">  91</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-19" class="py-name" targets="Function epydoc.markup.epytext.parse()=epydoc.markup.epytext-module.html#parse,Function epydoc.markup.parse()=epydoc.markup-module.html#parse"><a title="epydoc.markup.epytext.parse
+epydoc.markup.parse" class="py-name" href="#" onclick="return doclink('link-19', 'parse', 'link-19');">parse</a></tt> <tt class="py-op">=</tt> <tt id="link-20" class="py-name"><a title="epydoc.markup.epytext.parse
+epydoc.markup.parse" class="py-name" href="#" onclick="return doclink('link-20', 'parse', 'link-19');">parse</a></tt> </tt>
+<a name="L92"></a><tt class="py-lineno">  92</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exclude_introspect</tt> <tt class="py-op">=</tt> <tt class="py-name">exclude_introspect</tt> </tt>
+<a name="L93"></a><tt class="py-lineno">  93</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exclude_parse</tt> <tt class="py-op">=</tt> <tt class="py-name">exclude_parse</tt> </tt>
+<a name="L94"></a><tt class="py-lineno">  94</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">add_submodules</tt> <tt class="py-op">=</tt> <tt class="py-name">add_submodules</tt> </tt>
+<a name="L95"></a><tt class="py-lineno">  95</tt>  <tt class="py-line"> </tt>
+<a name="L96"></a><tt class="py-lineno">  96</tt>  <tt class="py-line">        <tt class="py-comment"># Test for pattern syntax and compile them into pattern objects.</tt> </tt>
+<a name="L97"></a><tt class="py-lineno">  97</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L98"></a><tt class="py-lineno">  98</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_introspect_regexp</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">exclude_introspect</tt> </tt>
+<a name="L99"></a><tt class="py-lineno">  99</tt>  <tt class="py-line">                <tt class="py-keyword">and</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">compile</tt><tt class="py-op">(</tt><tt class="py-name">exclude_introspect</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+<a name="L100"></a><tt class="py-lineno"> 100</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_parse_regexp</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">exclude_parse</tt> </tt>
+<a name="L101"></a><tt class="py-lineno"> 101</tt>  <tt class="py-line">                <tt class="py-keyword">and</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">compile</tt><tt class="py-op">(</tt><tt class="py-name">exclude_parse</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+<a name="L102"></a><tt class="py-lineno"> 102</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt><tt class="py-op">,</tt> <tt class="py-name">exc</tt><tt class="py-op">:</tt> </tt>
+<a name="L103"></a><tt class="py-lineno"> 103</tt>  <tt class="py-line">            <tt id="link-21" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-21', 'log', 'link-14');">log</a></tt><tt class="py-op">.</tt><tt id="link-22" class="py-name" targets="Function epydoc.log.error()=epydoc.log-module.html#error"><a title="epydoc.log.error" class="py-name" href="#" onclick="return doclink('link-22', 'error', 'link-22');">error</a></tt><tt class="py-op">(</tt><tt class="py-string">'Error in regular expression pattern: %s'</tt> <tt class="py-op">%</tt> <tt c [...]
+<a name="L104"></a><tt class="py-lineno"> 104</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> </tt>
+</div><a name="L105"></a><tt class="py-lineno"> 105</tt>  <tt class="py-line"> </tt>
+<a name="BuildOptions.must_introspect"></a><div id="BuildOptions.must_introspect-def"><a name="L106"></a><tt class="py-lineno"> 106</tt> <a class="py-toggle" href="#" id="BuildOptions.must_introspect-toggle" onclick="return toggle('BuildOptions.must_introspect');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docbuilder.BuildOptions-class.html#must_introspect">must_introspect</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt c [...]
+</div><div id="BuildOptions.must_introspect-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="BuildOptions.must_introspect-expanded"><a name="L107"></a><tt class="py-lineno"> 107</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L108"></a><tt class="py-lineno"> 108</tt>  <tt class="py-line"><tt class="py-docstring">        Return C{True} if a module is to be introsepcted with the current</tt> </tt>
+<a name="L109"></a><tt class="py-lineno"> 109</tt>  <tt class="py-line"><tt class="py-docstring">        settings.</tt> </tt>
+<a name="L110"></a><tt class="py-lineno"> 110</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L111"></a><tt class="py-lineno"> 111</tt>  <tt class="py-line"><tt class="py-docstring">        @param name: The name of the module to test</tt> </tt>
+<a name="L112"></a><tt class="py-lineno"> 112</tt>  <tt class="py-line"><tt class="py-docstring">        @type name: L{DottedName} or C{str}</tt> </tt>
+<a name="L113"></a><tt class="py-lineno"> 113</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L114"></a><tt class="py-lineno"> 114</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">introspect</tt> \ </tt>
+<a name="L115"></a><tt class="py-lineno"> 115</tt>  <tt class="py-line">            <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-23" class="py-name" targets="Method epydoc.docbuilder.BuildOptions._matches_filter()=epydoc.docbuilder.BuildOptions-class.html#_matches_filter"><a title="epydoc.docbuilder.BuildOptions._matches_filter" class="py-name" href="#" onclick="return doclink('link-23', '_matches_filter [...]
+</div><a name="L116"></a><tt class="py-lineno"> 116</tt>  <tt class="py-line"> </tt>
+<a name="BuildOptions.must_parse"></a><div id="BuildOptions.must_parse-def"><a name="L117"></a><tt class="py-lineno"> 117</tt> <a class="py-toggle" href="#" id="BuildOptions.must_parse-toggle" onclick="return toggle('BuildOptions.must_parse');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docbuilder.BuildOptions-class.html#must_parse">must_parse</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class= [...]
+</div><div id="BuildOptions.must_parse-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="BuildOptions.must_parse-expanded"><a name="L118"></a><tt class="py-lineno"> 118</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L119"></a><tt class="py-lineno"> 119</tt>  <tt class="py-line"><tt class="py-docstring">        Return C{True} if a module is to be parsed with the current settings.</tt> </tt>
+<a name="L120"></a><tt class="py-lineno"> 120</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L121"></a><tt class="py-lineno"> 121</tt>  <tt class="py-line"><tt class="py-docstring">        @param name: The name of the module to test</tt> </tt>
+<a name="L122"></a><tt class="py-lineno"> 122</tt>  <tt class="py-line"><tt class="py-docstring">        @type name: L{DottedName} or C{str}</tt> </tt>
+<a name="L123"></a><tt class="py-lineno"> 123</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L124"></a><tt class="py-lineno"> 124</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-25" class="py-name"><a title="epydoc.markup.epytext.parse
+epydoc.markup.parse" class="py-name" href="#" onclick="return doclink('link-25', 'parse', 'link-19');">parse</a></tt> \ </tt>
+<a name="L125"></a><tt class="py-lineno"> 125</tt>  <tt class="py-line">            <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-26" class="py-name"><a title="epydoc.docbuilder.BuildOptions._matches_filter" class="py-name" href="#" onclick="return doclink('link-26', '_matches_filter', 'link-23');">_matches_filter</a></tt><tt class="py-op">(</tt><tt id="link-27" class="py-name"><a title="epydoc.apidoc.Var [...]
+</div><a name="L126"></a><tt class="py-lineno"> 126</tt>  <tt class="py-line"> </tt>
+<a name="BuildOptions._matches_filter"></a><div id="BuildOptions._matches_filter-def"><a name="L127"></a><tt class="py-lineno"> 127</tt> <a class="py-toggle" href="#" id="BuildOptions._matches_filter-toggle" onclick="return toggle('BuildOptions._matches_filter');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docbuilder.BuildOptions-class.html#_matches_filter">_matches_filter</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt c [...]
+</div><div id="BuildOptions._matches_filter-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="BuildOptions._matches_filter-expanded"><a name="L128"></a><tt class="py-lineno"> 128</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L129"></a><tt class="py-lineno"> 129</tt>  <tt class="py-line"><tt class="py-docstring">        Test if a module name matches a pattern.</tt> </tt>
+<a name="L130"></a><tt class="py-lineno"> 130</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L131"></a><tt class="py-lineno"> 131</tt>  <tt class="py-line"><tt class="py-docstring">        @param name: The name of the module to test</tt> </tt>
+<a name="L132"></a><tt class="py-lineno"> 132</tt>  <tt class="py-line"><tt class="py-docstring">        @type name: L{DottedName} or C{str}</tt> </tt>
+<a name="L133"></a><tt class="py-lineno"> 133</tt>  <tt class="py-line"><tt class="py-docstring">        @param regexp: The pattern object to match C{name} against.</tt> </tt>
+<a name="L134"></a><tt class="py-lineno"> 134</tt>  <tt class="py-line"><tt class="py-docstring">            If C{None}, return C{False}</tt> </tt>
+<a name="L135"></a><tt class="py-lineno"> 135</tt>  <tt class="py-line"><tt class="py-docstring">        @type regexp: C{pattern}</tt> </tt>
+<a name="L136"></a><tt class="py-lineno"> 136</tt>  <tt class="py-line"><tt class="py-docstring">        @return: C{True} if C{name} in dotted format matches C{regexp},</tt> </tt>
+<a name="L137"></a><tt class="py-lineno"> 137</tt>  <tt class="py-line"><tt class="py-docstring">            else C{False}</tt> </tt>
+<a name="L138"></a><tt class="py-lineno"> 138</tt>  <tt class="py-line"><tt class="py-docstring">        @rtype: C{bool}</tt> </tt>
+<a name="L139"></a><tt class="py-lineno"> 139</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L140"></a><tt class="py-lineno"> 140</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">regexp</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
+<a name="L141"></a><tt class="py-lineno"> 141</tt>  <tt class="py-line"> </tt>
+<a name="L142"></a><tt class="py-lineno"> 142</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-28" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-28', 'name', 'link-24');">name</a></tt><tt class="py-op">,</tt> <tt id="link-29" class="py-name" targets="Class epydoc.apidoc.DottedName=epydoc.apidoc.DottedName-class.html"><a title="epydoc.a [...]
+<a name="L143"></a><tt class="py-lineno"> 143</tt>  <tt class="py-line">            <tt id="link-30" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-30', 'name', 'link-24');">name</a></tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt id="link-31" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-31', 'name', 'link-24');">name< [...]
+<a name="L144"></a><tt class="py-lineno"> 144</tt>  <tt class="py-line"> </tt>
+<a name="L145"></a><tt class="py-lineno"> 145</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">bool</tt><tt class="py-op">(</tt><tt class="py-name">regexp</tt><tt class="py-op">.</tt><tt class="py-name">search</tt><tt class="py-op">(</tt><tt id="link-32" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-32', 'name', 'link-24');">name</a></tt><tt class="py-op">)</tt><tt class="py-op">)</ [...]
+</div></div><a name="L146"></a><tt class="py-lineno"> 146</tt>  <tt class="py-line"> </tt>
+<a name="L147"></a><tt class="py-lineno"> 147</tt>  <tt class="py-line"> </tt>
+<a name="build_doc"></a><div id="build_doc-def"><a name="L148"></a><tt class="py-lineno"> 148</tt> <a class="py-toggle" href="#" id="build_doc-toggle" onclick="return toggle('build_doc');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docbuilder-module.html#build_doc">build_doc</a><tt class="py-op">(</tt><tt class="py-param">item</tt><tt class="py-op">,</tt> <tt class="py-param">introspect</tt><tt class="py-op">=</tt><tt class="py-name">True [...]
+<a name="L149"></a><tt class="py-lineno"> 149</tt>  <tt class="py-line">              <tt class="py-param">exclude_introspect</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">exclude_parse</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="build_doc-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="build_doc-expanded"><a name="L150"></a><tt class="py-lineno"> 150</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L151"></a><tt class="py-lineno"> 151</tt>  <tt class="py-line"><tt class="py-docstring">    Build API documentation for a given item, and return it as</tt> </tt>
+<a name="L152"></a><tt class="py-lineno"> 152</tt>  <tt class="py-line"><tt class="py-docstring">    an L{APIDoc} object.</tt> </tt>
+<a name="L153"></a><tt class="py-lineno"> 153</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L154"></a><tt class="py-lineno"> 154</tt>  <tt class="py-line"><tt class="py-docstring">    @rtype: L{APIDoc}</tt> </tt>
+<a name="L155"></a><tt class="py-lineno"> 155</tt>  <tt class="py-line"><tt class="py-docstring">    @param item: The item to document, specified using any of the</tt> </tt>
+<a name="L156"></a><tt class="py-lineno"> 156</tt>  <tt class="py-line"><tt class="py-docstring">        following:</tt> </tt>
+<a name="L157"></a><tt class="py-lineno"> 157</tt>  <tt class="py-line"><tt class="py-docstring">          - A string, naming a python package directory</tt> </tt>
+<a name="L158"></a><tt class="py-lineno"> 158</tt>  <tt class="py-line"><tt class="py-docstring">            (e.g., C{'epydoc/markup'})</tt> </tt>
+<a name="L159"></a><tt class="py-lineno"> 159</tt>  <tt class="py-line"><tt class="py-docstring">          - A string, naming a python file</tt> </tt>
+<a name="L160"></a><tt class="py-lineno"> 160</tt>  <tt class="py-line"><tt class="py-docstring">            (e.g., C{'epydoc/docparser.py'})</tt> </tt>
+<a name="L161"></a><tt class="py-lineno"> 161</tt>  <tt class="py-line"><tt class="py-docstring">          - A string, naming a python object</tt> </tt>
+<a name="L162"></a><tt class="py-lineno"> 162</tt>  <tt class="py-line"><tt class="py-docstring">            (e.g., C{'epydoc.docparser.DocParser'})</tt> </tt>
+<a name="L163"></a><tt class="py-lineno"> 163</tt>  <tt class="py-line"><tt class="py-docstring">          - Any (non-string) python object</tt> </tt>
+<a name="L164"></a><tt class="py-lineno"> 164</tt>  <tt class="py-line"><tt class="py-docstring">            (e.g., C{list.append})</tt> </tt>
+<a name="L165"></a><tt class="py-lineno"> 165</tt>  <tt class="py-line"><tt class="py-docstring">    @param introspect: If true, then use introspection to examine the</tt> </tt>
+<a name="L166"></a><tt class="py-lineno"> 166</tt>  <tt class="py-line"><tt class="py-docstring">        specified items.  Otherwise, just use parsing.</tt> </tt>
+<a name="L167"></a><tt class="py-lineno"> 167</tt>  <tt class="py-line"><tt class="py-docstring">    @param parse: If true, then use parsing to examine the specified</tt> </tt>
+<a name="L168"></a><tt class="py-lineno"> 168</tt>  <tt class="py-line"><tt class="py-docstring">        items.  Otherwise, just use introspection.</tt> </tt>
+<a name="L169"></a><tt class="py-lineno"> 169</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L170"></a><tt class="py-lineno"> 170</tt>  <tt class="py-line">    <tt class="py-name">docindex</tt> <tt class="py-op">=</tt> <tt id="link-33" class="py-name" targets="Function epydoc.docbuilder.build_doc_index()=epydoc.docbuilder-module.html#build_doc_index"><a title="epydoc.docbuilder.build_doc_index" class="py-name" href="#" onclick="return doclink('link-33', 'build_doc_index', 'link-33');">build_doc_index</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py- [...]
+epydoc.markup.parse" class="py-name" href="#" onclick="return doclink('link-34', 'parse', 'link-19');">parse</a></tt><tt class="py-op">,</tt> <tt class="py-name">add_submodules</tt><tt class="py-op">,</tt> </tt>
+<a name="L171"></a><tt class="py-lineno"> 171</tt>  <tt class="py-line">                               <tt class="py-name">exclude_introspect</tt><tt class="py-op">=</tt><tt class="py-name">exclude_introspect</tt><tt class="py-op">,</tt> </tt>
+<a name="L172"></a><tt class="py-lineno"> 172</tt>  <tt class="py-line">                               <tt class="py-name">exclude_parse</tt><tt class="py-op">=</tt><tt class="py-name">exclude_parse</tt><tt class="py-op">)</tt> </tt>
+<a name="L173"></a><tt class="py-lineno"> 173</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">docindex</tt><tt class="py-op">.</tt><tt class="py-name">root</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+</div><a name="L174"></a><tt class="py-lineno"> 174</tt>  <tt class="py-line"> </tt>
+<a name="build_doc_index"></a><div id="build_doc_index-def"><a name="L175"></a><tt class="py-lineno"> 175</tt> <a class="py-toggle" href="#" id="build_doc_index-toggle" onclick="return toggle('build_doc_index');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docbuilder-module.html#build_doc_index">build_doc_index</a><tt class="py-op">(</tt><tt class="py-param">items</tt><tt class="py-op">,</tt> <tt class="py-param">introspect</tt><tt class=" [...]
+<a name="L176"></a><tt class="py-lineno"> 176</tt>  <tt class="py-line">                    <tt class="py-param">exclude_introspect</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">exclude_parse</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="build_doc_index-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="build_doc_index-expanded"><a name="L177"></a><tt class="py-lineno"> 177</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L178"></a><tt class="py-lineno"> 178</tt>  <tt class="py-line"><tt class="py-docstring">    Build API documentation for the given list of items, and</tt> </tt>
+<a name="L179"></a><tt class="py-lineno"> 179</tt>  <tt class="py-line"><tt class="py-docstring">    return it in the form of a L{DocIndex}.</tt> </tt>
+<a name="L180"></a><tt class="py-lineno"> 180</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L181"></a><tt class="py-lineno"> 181</tt>  <tt class="py-line"><tt class="py-docstring">    @rtype: L{DocIndex}</tt> </tt>
+<a name="L182"></a><tt class="py-lineno"> 182</tt>  <tt class="py-line"><tt class="py-docstring">    @param items: The items to document, specified using any of the</tt> </tt>
+<a name="L183"></a><tt class="py-lineno"> 183</tt>  <tt class="py-line"><tt class="py-docstring">        following:</tt> </tt>
+<a name="L184"></a><tt class="py-lineno"> 184</tt>  <tt class="py-line"><tt class="py-docstring">          - A string, naming a python package directory</tt> </tt>
+<a name="L185"></a><tt class="py-lineno"> 185</tt>  <tt class="py-line"><tt class="py-docstring">            (e.g., C{'epydoc/markup'})</tt> </tt>
+<a name="L186"></a><tt class="py-lineno"> 186</tt>  <tt class="py-line"><tt class="py-docstring">          - A string, naming a python file</tt> </tt>
+<a name="L187"></a><tt class="py-lineno"> 187</tt>  <tt class="py-line"><tt class="py-docstring">            (e.g., C{'epydoc/docparser.py'})</tt> </tt>
+<a name="L188"></a><tt class="py-lineno"> 188</tt>  <tt class="py-line"><tt class="py-docstring">          - A string, naming a python object</tt> </tt>
+<a name="L189"></a><tt class="py-lineno"> 189</tt>  <tt class="py-line"><tt class="py-docstring">            (e.g., C{'epydoc.docparser.DocParser'})</tt> </tt>
+<a name="L190"></a><tt class="py-lineno"> 190</tt>  <tt class="py-line"><tt class="py-docstring">          - Any (non-string) python object</tt> </tt>
+<a name="L191"></a><tt class="py-lineno"> 191</tt>  <tt class="py-line"><tt class="py-docstring">            (e.g., C{list.append})</tt> </tt>
+<a name="L192"></a><tt class="py-lineno"> 192</tt>  <tt class="py-line"><tt class="py-docstring">    @param introspect: If true, then use introspection to examine the</tt> </tt>
+<a name="L193"></a><tt class="py-lineno"> 193</tt>  <tt class="py-line"><tt class="py-docstring">        specified items.  Otherwise, just use parsing.</tt> </tt>
+<a name="L194"></a><tt class="py-lineno"> 194</tt>  <tt class="py-line"><tt class="py-docstring">    @param parse: If true, then use parsing to examine the specified</tt> </tt>
+<a name="L195"></a><tt class="py-lineno"> 195</tt>  <tt class="py-line"><tt class="py-docstring">        items.  Otherwise, just use introspection.</tt> </tt>
+<a name="L196"></a><tt class="py-lineno"> 196</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L197"></a><tt class="py-lineno"> 197</tt>  <tt class="py-line">    <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L198"></a><tt class="py-lineno"> 198</tt>  <tt class="py-line">        <tt class="py-name">options</tt> <tt class="py-op">=</tt> <tt id="link-35" class="py-name" targets="Class epydoc.docbuilder.BuildOptions=epydoc.docbuilder.BuildOptions-class.html"><a title="epydoc.docbuilder.BuildOptions" class="py-name" href="#" onclick="return doclink('link-35', 'BuildOptions', 'link-35');">BuildOptions</a></tt><tt class="py-op">(</tt><tt id="link-36" class="py-name"><a title="epydoc.markup [...]
+epydoc.markup.parse" class="py-name" href="#" onclick="return doclink('link-36', 'parse', 'link-19');">parse</a></tt><tt class="py-op">=</tt><tt id="link-37" class="py-name"><a title="epydoc.markup.epytext.parse
+epydoc.markup.parse" class="py-name" href="#" onclick="return doclink('link-37', 'parse', 'link-19');">parse</a></tt><tt class="py-op">,</tt> <tt class="py-name">introspect</tt><tt class="py-op">=</tt><tt class="py-name">introspect</tt><tt class="py-op">,</tt> </tt>
+<a name="L199"></a><tt class="py-lineno"> 199</tt>  <tt class="py-line">            <tt class="py-name">exclude_introspect</tt><tt class="py-op">=</tt><tt class="py-name">exclude_introspect</tt><tt class="py-op">,</tt> <tt class="py-name">exclude_parse</tt><tt class="py-op">=</tt><tt class="py-name">exclude_parse</tt><tt class="py-op">,</tt> </tt>
+<a name="L200"></a><tt class="py-lineno"> 200</tt>  <tt class="py-line">            <tt class="py-name">add_submodules</tt><tt class="py-op">=</tt><tt class="py-name">add_submodules</tt><tt class="py-op">)</tt> </tt>
+<a name="L201"></a><tt class="py-lineno"> 201</tt>  <tt class="py-line">    <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
+<a name="L202"></a><tt class="py-lineno"> 202</tt>  <tt class="py-line">        <tt class="py-comment"># log.error already reported by constructor.</tt> </tt>
+<a name="L203"></a><tt class="py-lineno"> 203</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
+<a name="L204"></a><tt class="py-lineno"> 204</tt>  <tt class="py-line"> </tt>
+<a name="L205"></a><tt class="py-lineno"> 205</tt>  <tt class="py-line">    <tt class="py-comment"># Get the basic docs for each item.</tt> </tt>
+<a name="L206"></a><tt class="py-lineno"> 206</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">doc_pairs</tt> <tt class="py-op">=</tt> <tt id="link-38" class="py-name" targets="Function epydoc.docbuilder._get_docs_from_items()=epydoc.docbuilder-module.html#_get_docs_from_items"><a title="epydoc.docbuilder._get_docs_from_items" class="py-name" href="#" onclick="return doclink('link-38', '_get_docs_from_items', 'link-38');">_get_docs_from_items</a></tt><tt clas [...]
+<a name="L207"></a><tt class="py-lineno"> 207</tt>  <tt class="py-line"> </tt>
+<a name="L208"></a><tt class="py-lineno"> 208</tt>  <tt class="py-line">    <tt class="py-comment"># Merge the introspection & parse docs.</tt> </tt>
+<a name="L209"></a><tt class="py-lineno"> 209</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt id="link-39" class="py-name"><a title="epydoc.markup.epytext.parse
+epydoc.markup.parse" class="py-name" href="#" onclick="return doclink('link-39', 'parse', 'link-19');">parse</a></tt> <tt class="py-keyword">and</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">introspect</tt><tt class="py-op">:</tt> </tt>
+<a name="L210"></a><tt class="py-lineno"> 210</tt>  <tt class="py-line">        <tt id="link-40" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-40', 'log', 'link-14');">log</a></tt><tt class="py-op">.</tt><tt id="link-41" class="py-name" targets="Method epydoc.cli.ConsoleLogger.start_progress()=epydoc.cli.ConsoleLogger-class.html#start_progress,Method epydoc.cli.UnifiedProgressConsoleLogger.start_progress()=epydoc.cli.UnifiedProgressConsoleLogger-class.html#start_progress,Method epydoc.gui.GUILogger.start_progress()=epydoc.gui.GUILogger-class.htm [...]
+epydoc.cli.UnifiedProgressConsoleLogger.start_progress
+epydoc.gui.GUILogger.start_progress
+epydoc.log.Logger.start_progress
+epydoc.log.start_progress" class="py-name" href="#" onclick="return doclink('link-41', 'start_progress', 'link-41');">start_progress</a></tt><tt class="py-op">(</tt><tt class="py-string">'Merging parsed & introspected information'</tt><tt class="py-op">)</tt> </tt>
+<a name="L211"></a><tt class="py-lineno"> 211</tt>  <tt class="py-line">        <tt class="py-name">docs</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L212"></a><tt class="py-lineno"> 212</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">i</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">introspect_doc</tt><tt class="py-op">,</tt> <tt class="py-name">parse_doc</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-name">enumerate</tt><tt class="py-op">(</tt><tt class="py-name">doc_pairs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L213"></a><tt class="py-lineno"> 213</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">introspect_doc</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-name">parse_doc</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L214"></a><tt class="py-lineno"> 214</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">introspect_doc</tt><tt class="py-op">.</tt><tt id="link-42" class="py-name" targets="Variable epydoc.apidoc.GenericValueDoc.canonical_name=epydoc.apidoc.GenericValueDoc-class.html#canonical_name,Variable epydoc.apidoc.ValueDoc.canonical_name=epydoc.apidoc.ValueDoc-class.html#canonical_name,Variable epydoc.apidoc.VariableDoc.canonical_name=epydoc.apido [...]
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-42', 'canonical_name', 'link-42');">canonical_name</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-43" class="py-name" targets="Variable epydoc.apidoc.UNKNOWN=epydoc.apidoc-module.html#UNKNOWN"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('lin [...]
+<a name="L215"></a><tt class="py-lineno"> 215</tt>  <tt class="py-line">                    <tt id="link-44" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-44', 'name', 'link-24');">name</a></tt> <tt class="py-op">=</tt> <tt class="py-name">introspect_doc</tt><tt class="py-op">.</tt><tt id="link-45" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-45', 'canonical_name', 'link-42');">canonical_name</a></tt> </tt>
+<a name="L216"></a><tt class="py-lineno"> 216</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L217"></a><tt class="py-lineno"> 217</tt>  <tt class="py-line">                    <tt id="link-46" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-46', 'name', 'link-24');">name</a></tt> <tt class="py-op">=</tt> <tt class="py-name">parse_doc</tt><tt class="py-op">.</tt><tt id="link-47" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-47', 'canonical_name', 'link-42');">canonical_name</a></tt> </tt>
+<a name="L218"></a><tt class="py-lineno"> 218</tt>  <tt class="py-line">                <tt id="link-48" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-48', 'log', 'link-14');">log</a></tt><tt class="py-op">.</tt><tt id="link-49" class="py-name" targets="Method epydoc.cli.ConsoleLogger.progress()=epydoc.cli.ConsoleLogger-class.html#progress,Method epydoc.cli.UnifiedProgressConsoleLogger.progress()=epydoc.cli.UnifiedProgressConsoleLogger-class.html#progress,Method epydoc.docbuilder._ProgressEstimator.progress()=epydoc.docbuilder._ProgressEstimator-class.h [...]
+epydoc.cli.UnifiedProgressConsoleLogger.progress
+epydoc.docbuilder._ProgressEstimator.progress
+epydoc.gui.GUILogger.progress
+epydoc.log.Logger.progress
+epydoc.log.progress" class="py-name" href="#" onclick="return doclink('link-49', 'progress', 'link-49');">progress</a></tt><tt class="py-op">(</tt><tt class="py-name">float</tt><tt class="py-op">(</tt><tt class="py-name">i</tt><tt class="py-op">)</tt><tt class="py-op">/</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">doc_pairs</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt id="link-50" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class=" [...]
+<a name="L219"></a><tt class="py-lineno"> 219</tt>  <tt class="py-line">                <tt class="py-name">docs</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-51" class="py-name" targets="Function epydoc.docbuilder.merge_docs()=epydoc.docbuilder-module.html#merge_docs"><a title="epydoc.docbuilder.merge_docs" class="py-name" href="#" onclick="return doclink('link-51', 'merge_docs', 'link-51');">merge_docs</a></tt><tt class="py-op">(</tt><t [...]
+<a name="L220"></a><tt class="py-lineno"> 220</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">introspect_doc</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L221"></a><tt class="py-lineno"> 221</tt>  <tt class="py-line">                <tt class="py-name">docs</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">introspect_doc</tt><tt class="py-op">)</tt> </tt>
+<a name="L222"></a><tt class="py-lineno"> 222</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">parse_doc</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L223"></a><tt class="py-lineno"> 223</tt>  <tt class="py-line">                <tt class="py-name">docs</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">parse_doc</tt><tt class="py-op">)</tt> </tt>
+<a name="L224"></a><tt class="py-lineno"> 224</tt>  <tt class="py-line">        <tt id="link-52" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-52', 'log', 'link-14');">log</a></tt><tt class="py-op">.</tt><tt id="link-53" class="py-name" targets="Method epydoc.cli.ConsoleLogger.end_progress()=epydoc.cli.ConsoleLogger-class.html#end_progress,Method epydoc.cli.UnifiedProgressConsoleLogger.end_progress()=epydoc.cli.UnifiedProgressConsoleLogger-class.html#end_progress,Method epydoc.gui.GUILogger.end_progress()=epydoc.gui.GUILogger-class.html#end_prog [...]
+epydoc.cli.UnifiedProgressConsoleLogger.end_progress
+epydoc.gui.GUILogger.end_progress
+epydoc.log.Logger.end_progress
+epydoc.log.end_progress" class="py-name" href="#" onclick="return doclink('link-53', 'end_progress', 'link-53');">end_progress</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L225"></a><tt class="py-lineno"> 225</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">introspect</tt><tt class="py-op">:</tt> </tt>
+<a name="L226"></a><tt class="py-lineno"> 226</tt>  <tt class="py-line">        <tt class="py-name">docs</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">doc_pair</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-keyword">for</tt> <tt class="py-name">doc_pair</tt> <tt class="py-keyword">in</tt> <tt class="py-name">doc_pairs</tt> <tt class="py-keyword">if</tt> <tt class="py-name">doc_pair</tt><tt class="py-op">[</tt><tt [...]
+<a name="L227"></a><tt class="py-lineno"> 227</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L228"></a><tt class="py-lineno"> 228</tt>  <tt class="py-line">        <tt class="py-name">docs</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">doc_pair</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-keyword">for</tt> <tt class="py-name">doc_pair</tt> <tt class="py-keyword">in</tt> <tt class="py-name">doc_pairs</tt> <tt class="py-keyword">if</tt> <tt class="py-name">doc_pair</tt><tt class="py-op">[</tt><tt [...]
+<a name="L229"></a><tt class="py-lineno"> 229</tt>  <tt class="py-line"> </tt>
+<a name="L230"></a><tt class="py-lineno"> 230</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">docs</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L231"></a><tt class="py-lineno"> 231</tt>  <tt class="py-line">        <tt id="link-54" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-54', 'log', 'link-14');">log</a></tt><tt class="py-op">.</tt><tt id="link-55" class="py-name"><a title="epydoc.log.error" class="py-name" href="#" onclick="return doclink('link-55', 'error', 'link-22');">error</a></tt><tt class="py-op">(</tt><tt class="py-string">'Nothing left to document!'</tt><tt class="py-op">)</tt> </tt>
+<a name="L232"></a><tt class="py-lineno"> 232</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
+<a name="L233"></a><tt class="py-lineno"> 233</tt>  <tt class="py-line"> </tt>
+<a name="L234"></a><tt class="py-lineno"> 234</tt>  <tt class="py-line">    <tt class="py-comment"># Collect the docs into a single index.</tt> </tt>
+<a name="L235"></a><tt class="py-lineno"> 235</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">docindex</tt> <tt class="py-op">=</tt> <tt id="link-56" class="py-name" targets="Class epydoc.apidoc.DocIndex=epydoc.apidoc.DocIndex-class.html"><a title="epydoc.apidoc.DocIndex" class="py-name" href="#" onclick="return doclink('link-56', 'DocIndex', 'link-56');">DocIndex</a></tt><tt class="py-op">(</tt><tt class="py-name">docs</tt><tt class="py-op">)</tt> </tt>
+<a name="L236"></a><tt class="py-lineno"> 236</tt>  <tt class="py-line"> </tt>
+<a name="L237"></a><tt class="py-lineno"> 237</tt>  <tt class="py-line">    <tt class="py-comment"># Replace any proxy valuedocs that we got from importing with</tt> </tt>
+<a name="L238"></a><tt class="py-lineno"> 238</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># their targets.</tt> </tt>
+<a name="L239"></a><tt class="py-lineno"> 239</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt id="link-57" class="py-name"><a title="epydoc.markup.epytext.parse
+epydoc.markup.parse" class="py-name" href="#" onclick="return doclink('link-57', 'parse', 'link-19');">parse</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L240"></a><tt class="py-lineno"> 240</tt>  <tt class="py-line">        <tt id="link-58" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-58', 'log', 'link-14');">log</a></tt><tt class="py-op">.</tt><tt id="link-59" class="py-name"><a title="epydoc.cli.ConsoleLogger.start_progress
+epydoc.cli.UnifiedProgressConsoleLogger.start_progress
+epydoc.gui.GUILogger.start_progress
+epydoc.log.Logger.start_progress
+epydoc.log.start_progress" class="py-name" href="#" onclick="return doclink('link-59', 'start_progress', 'link-41');">start_progress</a></tt><tt class="py-op">(</tt><tt class="py-string">'Linking imported variables'</tt><tt class="py-op">)</tt> </tt>
+<a name="L241"></a><tt class="py-lineno"> 241</tt>  <tt class="py-line">        <tt class="py-name">valdocs</tt> <tt class="py-op">=</tt> <tt id="link-60" class="py-name" targets="Function epydoc.compat.sorted()=epydoc.compat-module.html#sorted"><a title="epydoc.compat.sorted" class="py-name" href="#" onclick="return doclink('link-60', 'sorted', 'link-60');">sorted</a></tt><tt class="py-op">(</tt><tt class="py-name">docindex</tt><tt class="py-op">.</tt><tt id="link-61" class="py-name" ta [...]
+epydoc.apidoc.reachable_valdocs" class="py-name" href="#" onclick="return doclink('link-61', 'reachable_valdocs', 'link-61');">reachable_valdocs</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L242"></a><tt class="py-lineno"> 242</tt>  <tt class="py-line">            <tt id="link-62" class="py-name" targets="Variable epydoc.apidoc.ModuleDoc.imports=epydoc.apidoc.ModuleDoc-class.html#imports"><a title="epydoc.apidoc.ModuleDoc.imports" class="py-name" href="#" onclick="return doclink('link-62', 'imports', 'link-62');">imports</a></tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> <tt id="link-63" class="py-name" targets="Variable epydoc.a [...]
+<a name="L243"></a><tt class="py-lineno"> 243</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">i</tt><tt class="py-op">,</tt> <tt class="py-name">val_doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">enumerate</tt><tt class="py-op">(</tt><tt class="py-name">valdocs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L244"></a><tt class="py-lineno"> 244</tt>  <tt class="py-line">            <tt id="link-65" class="py-name" targets="Function epydoc.docbuilder._report_valdoc_progress()=epydoc.docbuilder-module.html#_report_valdoc_progress"><a title="epydoc.docbuilder._report_valdoc_progress" class="py-name" href="#" onclick="return doclink('link-65', '_report_valdoc_progress', 'link-65');">_report_valdoc_progress</a></tt><tt class="py-op">(</tt><tt class="py-name">i</tt><tt class="py-op">,</tt [...]
+<a name="L245"></a><tt class="py-lineno"> 245</tt>  <tt class="py-line">            <tt id="link-66" class="py-name" targets="Function epydoc.docbuilder.link_imports()=epydoc.docbuilder-module.html#link_imports"><a title="epydoc.docbuilder.link_imports" class="py-name" href="#" onclick="return doclink('link-66', 'link_imports', 'link-66');">link_imports</a></tt><tt class="py-op">(</tt><tt class="py-name">val_doc</tt><tt class="py-op">,</tt> <tt class="py-name">docindex</tt><tt class="py- [...]
+<a name="L246"></a><tt class="py-lineno"> 246</tt>  <tt class="py-line">        <tt id="link-67" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-67', 'log', 'link-14');">log</a></tt><tt class="py-op">.</tt><tt id="link-68" class="py-name"><a title="epydoc.cli.ConsoleLogger.end_progress
+epydoc.cli.UnifiedProgressConsoleLogger.end_progress
+epydoc.gui.GUILogger.end_progress
+epydoc.log.Logger.end_progress
+epydoc.log.end_progress" class="py-name" href="#" onclick="return doclink('link-68', 'end_progress', 'link-53');">end_progress</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L247"></a><tt class="py-lineno"> 247</tt>  <tt class="py-line"> </tt>
+<a name="L248"></a><tt class="py-lineno"> 248</tt>  <tt class="py-line">    <tt class="py-comment"># Assign canonical names.</tt> </tt>
+<a name="L249"></a><tt class="py-lineno"> 249</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-69" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-69', 'log', 'link-14');">log</a></tt><tt class="py-op">.</tt><tt id="link-70" class="py-name"><a title="epydoc.cli.ConsoleLogger.start_progress
+epydoc.cli.UnifiedProgressConsoleLogger.start_progress
+epydoc.gui.GUILogger.start_progress
+epydoc.log.Logger.start_progress
+epydoc.log.start_progress" class="py-name" href="#" onclick="return doclink('link-70', 'start_progress', 'link-41');">start_progress</a></tt><tt class="py-op">(</tt><tt class="py-string">'Indexing documentation'</tt><tt class="py-op">)</tt> </tt>
+<a name="L250"></a><tt class="py-lineno"> 250</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">i</tt><tt class="py-op">,</tt> <tt class="py-name">val_doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">enumerate</tt><tt class="py-op">(</tt><tt class="py-name">docindex</tt><tt class="py-op">.</tt><tt class="py-name">root</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L251"></a><tt class="py-lineno"> 251</tt>  <tt class="py-line">        <tt id="link-71" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-71', 'log', 'link-14');">log</a></tt><tt class="py-op">.</tt><tt id="link-72" class="py-name"><a title="epydoc.cli.ConsoleLogger.progress
+epydoc.cli.UnifiedProgressConsoleLogger.progress
+epydoc.docbuilder._ProgressEstimator.progress
+epydoc.gui.GUILogger.progress
+epydoc.log.Logger.progress
+epydoc.log.progress" class="py-name" href="#" onclick="return doclink('link-72', 'progress', 'link-49');">progress</a></tt><tt class="py-op">(</tt><tt class="py-name">float</tt><tt class="py-op">(</tt><tt class="py-name">i</tt><tt class="py-op">)</tt><tt class="py-op">/</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">docindex</tt><tt class="py-op">.</tt><tt class="py-name">root</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">val_doc</t [...]
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-73', 'canonical_name', 'link-42');">canonical_name</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L252"></a><tt class="py-lineno"> 252</tt>  <tt class="py-line">        <tt id="link-74" class="py-name" targets="Function epydoc.docbuilder.assign_canonical_names()=epydoc.docbuilder-module.html#assign_canonical_names"><a title="epydoc.docbuilder.assign_canonical_names" class="py-name" href="#" onclick="return doclink('link-74', 'assign_canonical_names', 'link-74');">assign_canonical_names</a></tt><tt class="py-op">(</tt><tt class="py-name">val_doc</tt><tt class="py-op">,</tt> < [...]
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-75', 'canonical_name', 'link-42');">canonical_name</a></tt><tt class="py-op">,</tt> <tt class="py-name">docindex</tt><tt class="py-op">)</tt> </tt>
+<a name="L253"></a><tt class="py-lineno"> 253</tt>  <tt class="py-line">    <tt id="link-76" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-76', 'log', 'link-14');">log</a></tt><tt class="py-op">.</tt><tt id="link-77" class="py-name"><a title="epydoc.cli.ConsoleLogger.end_progress
+epydoc.cli.UnifiedProgressConsoleLogger.end_progress
+epydoc.gui.GUILogger.end_progress
+epydoc.log.Logger.end_progress
+epydoc.log.end_progress" class="py-name" href="#" onclick="return doclink('link-77', 'end_progress', 'link-53');">end_progress</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L254"></a><tt class="py-lineno"> 254</tt>  <tt class="py-line"> </tt>
+<a name="L255"></a><tt class="py-lineno"> 255</tt>  <tt class="py-line">    <tt class="py-comment"># Set overrides pointers</tt> </tt>
+<a name="L256"></a><tt class="py-lineno"> 256</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-78" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-78', 'log', 'link-14');">log</a></tt><tt class="py-op">.</tt><tt id="link-79" class="py-name"><a title="epydoc.cli.ConsoleLogger.start_progress
+epydoc.cli.UnifiedProgressConsoleLogger.start_progress
+epydoc.gui.GUILogger.start_progress
+epydoc.log.Logger.start_progress
+epydoc.log.start_progress" class="py-name" href="#" onclick="return doclink('link-79', 'start_progress', 'link-41');">start_progress</a></tt><tt class="py-op">(</tt><tt class="py-string">'Checking for overridden methods'</tt><tt class="py-op">)</tt> </tt>
+<a name="L257"></a><tt class="py-lineno"> 257</tt>  <tt class="py-line">    <tt class="py-name">valdocs</tt> <tt class="py-op">=</tt> <tt id="link-80" class="py-name"><a title="epydoc.compat.sorted" class="py-name" href="#" onclick="return doclink('link-80', 'sorted', 'link-60');">sorted</a></tt><tt class="py-op">(</tt><tt class="py-name">docindex</tt><tt class="py-op">.</tt><tt id="link-81" class="py-name"><a title="epydoc.apidoc.DocIndex.reachable_valdocs
+epydoc.apidoc.reachable_valdocs" class="py-name" href="#" onclick="return doclink('link-81', 'reachable_valdocs', 'link-61');">reachable_valdocs</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L258"></a><tt class="py-lineno"> 258</tt>  <tt class="py-line">        <tt id="link-82" class="py-name"><a title="epydoc.apidoc.ModuleDoc.imports" class="py-name" href="#" onclick="return doclink('link-82', 'imports', 'link-62');">imports</a></tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> <tt id="link-83" class="py-name"><a title="epydoc.apidoc.ModuleDoc.submodules" class="py-name" href="#" onclick="return doclink('link-83', 'submodules', 'lin [...]
+<a name="L259"></a><tt class="py-lineno"> 259</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">i</tt><tt class="py-op">,</tt> <tt class="py-name">val_doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">enumerate</tt><tt class="py-op">(</tt><tt class="py-name">valdocs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L260"></a><tt class="py-lineno"> 260</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">val_doc</tt><tt class="py-op">,</tt> <tt id="link-85" class="py-name" targets="Class epydoc.apidoc.ClassDoc=epydoc.apidoc.ClassDoc-class.html"><a title="epydoc.apidoc.ClassDoc" class="py-name" href="#" onclick="return doclink('link-85', 'ClassDoc', 'link-85');">ClassDoc</a></tt><tt class="py-op">)</tt [...]
+<a name="L261"></a><tt class="py-lineno"> 261</tt>  <tt class="py-line">            <tt class="py-name">percent</tt> <tt class="py-op">=</tt> <tt class="py-name">float</tt><tt class="py-op">(</tt><tt class="py-name">i</tt><tt class="py-op">)</tt><tt class="py-op">/</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">valdocs</tt><tt class="py-op">)</tt> </tt>
+<a name="L262"></a><tt class="py-lineno"> 262</tt>  <tt class="py-line">            <tt id="link-86" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-86', 'log', 'link-14');">log</a></tt><tt class="py-op">.</tt><tt id="link-87" class="py-name"><a title="epydoc.cli.ConsoleLogger.progress
+epydoc.cli.UnifiedProgressConsoleLogger.progress
+epydoc.docbuilder._ProgressEstimator.progress
+epydoc.gui.GUILogger.progress
+epydoc.log.Logger.progress
+epydoc.log.progress" class="py-name" href="#" onclick="return doclink('link-87', 'progress', 'link-49');">progress</a></tt><tt class="py-op">(</tt><tt class="py-name">percent</tt><tt class="py-op">,</tt> <tt class="py-name">val_doc</tt><tt class="py-op">.</tt><tt id="link-88" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-88', 'canonical_name', 'link-42');">canonical_name</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L263"></a><tt class="py-lineno"> 263</tt>  <tt class="py-line">            <tt id="link-89" class="py-name" targets="Function epydoc.docbuilder.find_overrides()=epydoc.docbuilder-module.html#find_overrides"><a title="epydoc.docbuilder.find_overrides" class="py-name" href="#" onclick="return doclink('link-89', 'find_overrides', 'link-89');">find_overrides</a></tt><tt class="py-op">(</tt><tt class="py-name">val_doc</tt><tt class="py-op">)</tt> </tt>
+<a name="L264"></a><tt class="py-lineno"> 264</tt>  <tt class="py-line">    <tt id="link-90" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-90', 'log', 'link-14');">log</a></tt><tt class="py-op">.</tt><tt id="link-91" class="py-name"><a title="epydoc.cli.ConsoleLogger.end_progress
+epydoc.cli.UnifiedProgressConsoleLogger.end_progress
+epydoc.gui.GUILogger.end_progress
+epydoc.log.Logger.end_progress
+epydoc.log.end_progress" class="py-name" href="#" onclick="return doclink('link-91', 'end_progress', 'link-53');">end_progress</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L265"></a><tt class="py-lineno"> 265</tt>  <tt class="py-line">     </tt>
+<a name="L266"></a><tt class="py-lineno"> 266</tt>  <tt class="py-line">    <tt class="py-comment"># Parse the docstrings for each object.</tt> </tt>
+<a name="L267"></a><tt class="py-lineno"> 267</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-92" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-92', 'log', 'link-14');">log</a></tt><tt class="py-op">.</tt><tt id="link-93" class="py-name"><a title="epydoc.cli.ConsoleLogger.start_progress
+epydoc.cli.UnifiedProgressConsoleLogger.start_progress
+epydoc.gui.GUILogger.start_progress
+epydoc.log.Logger.start_progress
+epydoc.log.start_progress" class="py-name" href="#" onclick="return doclink('link-93', 'start_progress', 'link-41');">start_progress</a></tt><tt class="py-op">(</tt><tt class="py-string">'Parsing docstrings'</tt><tt class="py-op">)</tt> </tt>
+<a name="L268"></a><tt class="py-lineno"> 268</tt>  <tt class="py-line">    <tt class="py-name">suppress_warnings</tt> <tt class="py-op">=</tt> <tt class="py-name">set</tt><tt class="py-op">(</tt><tt class="py-name">valdocs</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">difference</tt><tt class="py-op">(</tt> </tt>
+<a name="L269"></a><tt class="py-lineno"> 269</tt>  <tt class="py-line">        <tt class="py-name">docindex</tt><tt class="py-op">.</tt><tt id="link-94" class="py-name"><a title="epydoc.apidoc.DocIndex.reachable_valdocs
+epydoc.apidoc.reachable_valdocs" class="py-name" href="#" onclick="return doclink('link-94', 'reachable_valdocs', 'link-61');">reachable_valdocs</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L270"></a><tt class="py-lineno"> 270</tt>  <tt class="py-line">            <tt id="link-95" class="py-name"><a title="epydoc.apidoc.ModuleDoc.imports" class="py-name" href="#" onclick="return doclink('link-95', 'imports', 'link-62');">imports</a></tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> <tt id="link-96" class="py-name"><a title="epydoc.apidoc.ModuleDoc.submodules" class="py-name" href="#" onclick="return doclink('link-96', 'submodules',  [...]
+<a name="L271"></a><tt class="py-lineno"> 271</tt>  <tt class="py-line">            <tt id="link-98" class="py-name" targets="Variable epydoc.apidoc.ClassDoc.bases=epydoc.apidoc.ClassDoc-class.html#bases"><a title="epydoc.apidoc.ClassDoc.bases" class="py-name" href="#" onclick="return doclink('link-98', 'bases', 'link-98');">bases</a></tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> <tt id="link-99" class="py-name" targets="Variable epydoc.apidoc.Variabl [...]
+<a name="L272"></a><tt class="py-lineno"> 272</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">i</tt><tt class="py-op">,</tt> <tt class="py-name">val_doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">enumerate</tt><tt class="py-op">(</tt><tt class="py-name">valdocs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L273"></a><tt class="py-lineno"> 273</tt>  <tt class="py-line">        <tt id="link-100" class="py-name"><a title="epydoc.docbuilder._report_valdoc_progress" class="py-name" href="#" onclick="return doclink('link-100', '_report_valdoc_progress', 'link-65');">_report_valdoc_progress</a></tt><tt class="py-op">(</tt><tt class="py-name">i</tt><tt class="py-op">,</tt> <tt class="py-name">val_doc</tt><tt class="py-op">,</tt> <tt class="py-name">valdocs</tt><tt class="py-op">)</tt> </tt>
+<a name="L274"></a><tt class="py-lineno"> 274</tt>  <tt class="py-line">        <tt class="py-comment"># the value's docstring</tt> </tt>
+<a name="L275"></a><tt class="py-lineno"> 275</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt id="link-101" class="py-name"><a title="epydoc.docstringparser.parse_docstring
+epydoc.markup.epytext.parse_docstring
+epydoc.markup.javadoc.parse_docstring
+epydoc.markup.plaintext.parse_docstring
+epydoc.markup.restructuredtext.parse_docstring" class="py-name" href="#" onclick="return doclink('link-101', 'parse_docstring', 'link-12');">parse_docstring</a></tt><tt class="py-op">(</tt><tt class="py-name">val_doc</tt><tt class="py-op">,</tt> <tt class="py-name">docindex</tt><tt class="py-op">,</tt> <tt class="py-name">suppress_warnings</tt><tt class="py-op">)</tt> </tt>
+<a name="L276"></a><tt class="py-lineno"> 276</tt>  <tt class="py-line">        <tt class="py-comment"># the value's variables' docstrings</tt> </tt>
+<a name="L277"></a><tt class="py-lineno"> 277</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">val_doc</tt><tt class="py-op">,</tt> <tt id="link-102" class="py-name" targets="Class epydoc.apidoc.NamespaceDoc=epydoc.apidoc.NamespaceDoc-class.html"><a title="epydoc.apidoc.NamespaceDoc" class="py-name" href="#" onclick="return doclink('link-102', [...]
+<a name="L278"></a><tt class="py-lineno"> 278</tt>  <tt class="py-line">            <tt class="py-name">val_doc</tt><tt class="py-op">.</tt><tt id="link-103" class="py-name" targets="Variable epydoc.apidoc.NamespaceDoc.variables=epydoc.apidoc.NamespaceDoc-class.html#variables"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-103', 'variables', 'link-103');">variables</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</ [...]
+<a name="L279"></a><tt class="py-lineno"> 279</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">var_doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">val_doc</tt><tt class="py-op">.</tt><tt id="link-105" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-105', 'variables', 'link-103');">variables</a></tt><tt class="py-op">.</tt><tt class="py-name">values</tt><tt class="py [...]
+<a name="L280"></a><tt class="py-lineno"> 280</tt>  <tt class="py-line">                <tt class="py-comment"># Now we have a chance to propagate the defining module</tt> </tt>
+<a name="L281"></a><tt class="py-lineno"> 281</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-comment"># to objects for which introspection is not possible,</tt> </tt>
+<a name="L282"></a><tt class="py-lineno"> 282</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-comment"># such as properties.</tt> </tt>
+<a name="L283"></a><tt class="py-lineno"> 283</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-106" class="py-name" targets="Variable epydoc.apidoc.VariableDoc.value=epydoc.apidoc.VariableDoc-class.html#value"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="r [...]
+<a name="L284"></a><tt class="py-lineno"> 284</tt>  <tt class="py-line">                    <tt class="py-keyword">and</tt> <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-108" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-108', 'value', 'link-106');">value</a></tt><tt class="py-op">.</tt><tt id="link-109" class="py-name" targets="Variable epydoc.apidoc.ValueDoc.defining_module=epydoc.apidoc.ValueDoc [...]
+epydoc.apidoc.VariableDoc.defining_module" class="py-name" href="#" onclick="return doclink('link-109', 'defining_module', 'link-109');">defining_module</a></tt> <tt class="py-keyword">is</tt> <tt id="link-110" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-110', 'UNKNOWN', 'link-43');">UNKNOWN</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L285"></a><tt class="py-lineno"> 285</tt>  <tt class="py-line">                    <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-111" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-111', 'value', 'link-106');">value</a></tt><tt class="py-op">.</tt><tt id="link-112" class="py-name"><a title="epydoc.apidoc.ValueDoc.defining_module
+epydoc.apidoc.VariableDoc.defining_module" class="py-name" href="#" onclick="return doclink('link-112', 'defining_module', 'link-109');">defining_module</a></tt> <tt class="py-op">=</tt> <tt class="py-name">val_doc</tt><tt class="py-op">.</tt><tt id="link-113" class="py-name"><a title="epydoc.apidoc.ValueDoc.defining_module
+epydoc.apidoc.VariableDoc.defining_module" class="py-name" href="#" onclick="return doclink('link-113', 'defining_module', 'link-109');">defining_module</a></tt> </tt>
+<a name="L286"></a><tt class="py-lineno"> 286</tt>  <tt class="py-line">                <tt id="link-114" class="py-name"><a title="epydoc.docstringparser.parse_docstring
+epydoc.markup.epytext.parse_docstring
+epydoc.markup.javadoc.parse_docstring
+epydoc.markup.plaintext.parse_docstring
+epydoc.markup.restructuredtext.parse_docstring" class="py-name" href="#" onclick="return doclink('link-114', 'parse_docstring', 'link-12');">parse_docstring</a></tt><tt class="py-op">(</tt><tt class="py-name">var_doc</tt><tt class="py-op">,</tt> <tt class="py-name">docindex</tt><tt class="py-op">,</tt> <tt class="py-name">suppress_warnings</tt><tt class="py-op">)</tt> </tt>
+<a name="L287"></a><tt class="py-lineno"> 287</tt>  <tt class="py-line">    <tt id="link-115" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-115', 'log', 'link-14');">log</a></tt><tt class="py-op">.</tt><tt id="link-116" class="py-name"><a title="epydoc.cli.ConsoleLogger.end_progress
+epydoc.cli.UnifiedProgressConsoleLogger.end_progress
+epydoc.gui.GUILogger.end_progress
+epydoc.log.Logger.end_progress
+epydoc.log.end_progress" class="py-name" href="#" onclick="return doclink('link-116', 'end_progress', 'link-53');">end_progress</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L288"></a><tt class="py-lineno"> 288</tt>  <tt class="py-line"> </tt>
+<a name="L289"></a><tt class="py-lineno"> 289</tt>  <tt class="py-line">    <tt class="py-comment"># Take care of inheritance.</tt> </tt>
+<a name="L290"></a><tt class="py-lineno"> 290</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-117" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-117', 'log', 'link-14');">log</a></tt><tt class="py-op">.</tt><tt id="link-118" class="py-name"><a title="epydoc.cli.ConsoleLogger.start_progress
+epydoc.cli.UnifiedProgressConsoleLogger.start_progress
+epydoc.gui.GUILogger.start_progress
+epydoc.log.Logger.start_progress
+epydoc.log.start_progress" class="py-name" href="#" onclick="return doclink('link-118', 'start_progress', 'link-41');">start_progress</a></tt><tt class="py-op">(</tt><tt class="py-string">'Inheriting documentation'</tt><tt class="py-op">)</tt> </tt>
+<a name="L291"></a><tt class="py-lineno"> 291</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">i</tt><tt class="py-op">,</tt> <tt class="py-name">val_doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">enumerate</tt><tt class="py-op">(</tt><tt class="py-name">valdocs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L292"></a><tt class="py-lineno"> 292</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">val_doc</tt><tt class="py-op">,</tt> <tt id="link-119" class="py-name"><a title="epydoc.apidoc.ClassDoc" class="py-name" href="#" onclick="return doclink('link-119', 'ClassDoc', 'link-85');">ClassDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L293"></a><tt class="py-lineno"> 293</tt>  <tt class="py-line">            <tt class="py-name">percent</tt> <tt class="py-op">=</tt> <tt class="py-name">float</tt><tt class="py-op">(</tt><tt class="py-name">i</tt><tt class="py-op">)</tt><tt class="py-op">/</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">valdocs</tt><tt class="py-op">)</tt> </tt>
+<a name="L294"></a><tt class="py-lineno"> 294</tt>  <tt class="py-line">            <tt id="link-120" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-120', 'log', 'link-14');">log</a></tt><tt class="py-op">.</tt><tt id="link-121" class="py-name"><a title="epydoc.cli.ConsoleLogger.progress
+epydoc.cli.UnifiedProgressConsoleLogger.progress
+epydoc.docbuilder._ProgressEstimator.progress
+epydoc.gui.GUILogger.progress
+epydoc.log.Logger.progress
+epydoc.log.progress" class="py-name" href="#" onclick="return doclink('link-121', 'progress', 'link-49');">progress</a></tt><tt class="py-op">(</tt><tt class="py-name">percent</tt><tt class="py-op">,</tt> <tt class="py-name">val_doc</tt><tt class="py-op">.</tt><tt id="link-122" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-122', 'canonical_name', 'link-42');">canonical_name</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L295"></a><tt class="py-lineno"> 295</tt>  <tt class="py-line">            <tt id="link-123" class="py-name" targets="Function epydoc.docbuilder.inherit_docs()=epydoc.docbuilder-module.html#inherit_docs"><a title="epydoc.docbuilder.inherit_docs" class="py-name" href="#" onclick="return doclink('link-123', 'inherit_docs', 'link-123');">inherit_docs</a></tt><tt class="py-op">(</tt><tt class="py-name">val_doc</tt><tt class="py-op">)</tt> </tt>
+<a name="L296"></a><tt class="py-lineno"> 296</tt>  <tt class="py-line">    <tt id="link-124" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-124', 'log', 'link-14');">log</a></tt><tt class="py-op">.</tt><tt id="link-125" class="py-name"><a title="epydoc.cli.ConsoleLogger.end_progress
+epydoc.cli.UnifiedProgressConsoleLogger.end_progress
+epydoc.gui.GUILogger.end_progress
+epydoc.log.Logger.end_progress
+epydoc.log.end_progress" class="py-name" href="#" onclick="return doclink('link-125', 'end_progress', 'link-53');">end_progress</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L297"></a><tt class="py-lineno"> 297</tt>  <tt class="py-line"> </tt>
+<a name="L298"></a><tt class="py-lineno"> 298</tt>  <tt class="py-line">    <tt class="py-comment"># Initialize the groups & sortedvars attributes.</tt> </tt>
+<a name="L299"></a><tt class="py-lineno"> 299</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-126" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-126', 'log', 'link-14');">log</a></tt><tt class="py-op">.</tt><tt id="link-127" class="py-name"><a title="epydoc.cli.ConsoleLogger.start_progress
+epydoc.cli.UnifiedProgressConsoleLogger.start_progress
+epydoc.gui.GUILogger.start_progress
+epydoc.log.Logger.start_progress
+epydoc.log.start_progress" class="py-name" href="#" onclick="return doclink('link-127', 'start_progress', 'link-41');">start_progress</a></tt><tt class="py-op">(</tt><tt class="py-string">'Sorting & Grouping'</tt><tt class="py-op">)</tt> </tt>
+<a name="L300"></a><tt class="py-lineno"> 300</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">i</tt><tt class="py-op">,</tt> <tt class="py-name">val_doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">enumerate</tt><tt class="py-op">(</tt><tt class="py-name">valdocs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L301"></a><tt class="py-lineno"> 301</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">val_doc</tt><tt class="py-op">,</tt> <tt id="link-128" class="py-name"><a title="epydoc.apidoc.NamespaceDoc" class="py-name" href="#" onclick="return doclink('link-128', 'NamespaceDoc', 'link-102');">NamespaceDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L302"></a><tt class="py-lineno"> 302</tt>  <tt class="py-line">            <tt class="py-name">percent</tt> <tt class="py-op">=</tt> <tt class="py-name">float</tt><tt class="py-op">(</tt><tt class="py-name">i</tt><tt class="py-op">)</tt><tt class="py-op">/</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">valdocs</tt><tt class="py-op">)</tt> </tt>
+<a name="L303"></a><tt class="py-lineno"> 303</tt>  <tt class="py-line">            <tt id="link-129" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-129', 'log', 'link-14');">log</a></tt><tt class="py-op">.</tt><tt id="link-130" class="py-name"><a title="epydoc.cli.ConsoleLogger.progress
+epydoc.cli.UnifiedProgressConsoleLogger.progress
+epydoc.docbuilder._ProgressEstimator.progress
+epydoc.gui.GUILogger.progress
+epydoc.log.Logger.progress
+epydoc.log.progress" class="py-name" href="#" onclick="return doclink('link-130', 'progress', 'link-49');">progress</a></tt><tt class="py-op">(</tt><tt class="py-name">percent</tt><tt class="py-op">,</tt> <tt class="py-name">val_doc</tt><tt class="py-op">.</tt><tt id="link-131" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-131', 'canonical_name', 'link-42');">canonical_name</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L304"></a><tt class="py-lineno"> 304</tt>  <tt class="py-line">            <tt class="py-name">val_doc</tt><tt class="py-op">.</tt><tt id="link-132" class="py-name" targets="Method epydoc.apidoc.NamespaceDoc.init_sorted_variables()=epydoc.apidoc.NamespaceDoc-class.html#init_sorted_variables"><a title="epydoc.apidoc.NamespaceDoc.init_sorted_variables" class="py-name" href="#" onclick="return doclink('link-132', 'init_sorted_variables', 'link-132');">init_sorted_variables</a></tt> [...]
+<a name="L305"></a><tt class="py-lineno"> 305</tt>  <tt class="py-line">            <tt class="py-name">val_doc</tt><tt class="py-op">.</tt><tt id="link-133" class="py-name" targets="Method epydoc.apidoc.NamespaceDoc.init_variable_groups()=epydoc.apidoc.NamespaceDoc-class.html#init_variable_groups"><a title="epydoc.apidoc.NamespaceDoc.init_variable_groups" class="py-name" href="#" onclick="return doclink('link-133', 'init_variable_groups', 'link-133');">init_variable_groups</a></tt><tt c [...]
+<a name="L306"></a><tt class="py-lineno"> 306</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">val_doc</tt><tt class="py-op">,</tt> <tt id="link-134" class="py-name" targets="Class epydoc.apidoc.ModuleDoc=epydoc.apidoc.ModuleDoc-class.html"><a title="epydoc.apidoc.ModuleDoc" class="py-name" href="#" onclick="return doclink('link-134', 'ModuleDoc', 'link-134');">ModuleDoc</a></tt><tt class=" [...]
+<a name="L307"></a><tt class="py-lineno"> 307</tt>  <tt class="py-line">                <tt class="py-name">val_doc</tt><tt class="py-op">.</tt><tt id="link-135" class="py-name" targets="Method epydoc.apidoc.ModuleDoc.init_submodule_groups()=epydoc.apidoc.ModuleDoc-class.html#init_submodule_groups"><a title="epydoc.apidoc.ModuleDoc.init_submodule_groups" class="py-name" href="#" onclick="return doclink('link-135', 'init_submodule_groups', 'link-135');">init_submodule_groups</a></tt><tt c [...]
+<a name="L308"></a><tt class="py-lineno"> 308</tt>  <tt class="py-line">            <tt class="py-name">val_doc</tt><tt class="py-op">.</tt><tt id="link-136" class="py-name" targets="Method epydoc.apidoc.NamespaceDoc.report_unused_groups()=epydoc.apidoc.NamespaceDoc-class.html#report_unused_groups"><a title="epydoc.apidoc.NamespaceDoc.report_unused_groups" class="py-name" href="#" onclick="return doclink('link-136', 'report_unused_groups', 'link-136');">report_unused_groups</a></tt><tt c [...]
+<a name="L309"></a><tt class="py-lineno"> 309</tt>  <tt class="py-line">    <tt id="link-137" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-137', 'log', 'link-14');">log</a></tt><tt class="py-op">.</tt><tt id="link-138" class="py-name"><a title="epydoc.cli.ConsoleLogger.end_progress
+epydoc.cli.UnifiedProgressConsoleLogger.end_progress
+epydoc.gui.GUILogger.end_progress
+epydoc.log.Logger.end_progress
+epydoc.log.end_progress" class="py-name" href="#" onclick="return doclink('link-138', 'end_progress', 'link-53');">end_progress</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L310"></a><tt class="py-lineno"> 310</tt>  <tt class="py-line"> </tt>
+<a name="L311"></a><tt class="py-lineno"> 311</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">docindex</tt> </tt>
+</div><a name="L312"></a><tt class="py-lineno"> 312</tt>  <tt class="py-line"> </tt>
+<a name="_report_valdoc_progress"></a><div id="_report_valdoc_progress-def"><a name="L313"></a><tt class="py-lineno"> 313</tt> <a class="py-toggle" href="#" id="_report_valdoc_progress-toggle" onclick="return toggle('_report_valdoc_progress');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docbuilder-module.html#_report_valdoc_progress">_report_valdoc_progress</a><tt class="py-op">(</tt><tt class="py-param">i</tt><tt class="py-op">,</tt> <tt [...]
+</div><div id="_report_valdoc_progress-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_report_valdoc_progress-expanded"><a name="L314"></a><tt class="py-lineno"> 314</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">val_doc</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt id="link-139" class="py-name"><a title="epydoc.apidoc.ModuleDoc" class= [...]
+<a name="L315"></a><tt class="py-lineno"> 315</tt>  <tt class="py-line">        <tt class="py-name">val_doc</tt><tt class="py-op">.</tt><tt id="link-141" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-141', 'canonical_name', 'link-42');">canonical_name</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt id="link-142" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-142', 'UNKNOWN', 'link-43');">UNKNOWN</a></tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L316"></a><tt class="py-lineno"> 316</tt>  <tt class="py-line">        <tt class="py-keyword">not</tt> <tt class="py-name">val_doc</tt><tt class="py-op">.</tt><tt id="link-143" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-143', 'canonical_name', 'link-42');">canonical_name</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">startswith</tt><tt class="py-op">(</tt><tt class="py-string">'??'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L317"></a><tt class="py-lineno"> 317</tt>  <tt class="py-line">        <tt id="link-144" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-144', 'log', 'link-14');">log</a></tt><tt class="py-op">.</tt><tt id="link-145" class="py-name"><a title="epydoc.cli.ConsoleLogger.progress
+epydoc.cli.UnifiedProgressConsoleLogger.progress
+epydoc.docbuilder._ProgressEstimator.progress
+epydoc.gui.GUILogger.progress
+epydoc.log.Logger.progress
+epydoc.log.progress" class="py-name" href="#" onclick="return doclink('link-145', 'progress', 'link-49');">progress</a></tt><tt class="py-op">(</tt><tt class="py-name">float</tt><tt class="py-op">(</tt><tt class="py-name">i</tt><tt class="py-op">)</tt><tt class="py-op">/</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">val_docs</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">val_doc</tt><tt class="py-op">.</tt><tt id="link-146" class="p [...]
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-146', 'canonical_name', 'link-42');">canonical_name</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L318"></a><tt class="py-lineno"> 318</tt>  <tt class="py-line"> </tt>
+<a name="L319"></a><tt class="py-lineno"> 319</tt>  <tt class="py-line"><tt class="py-comment">#/////////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L320"></a><tt class="py-lineno"> 320</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Documentation Generation</tt> </tt>
+<a name="L321"></a><tt class="py-lineno"> 321</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#/////////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L322"></a><tt class="py-lineno"> 322</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="_get_docs_from_items"></a><div id="_get_docs_from_items-def"><a name="L323"></a><tt class="py-lineno"> 323</tt> <a class="py-toggle" href="#" id="_get_docs_from_items-toggle" onclick="return toggle('_get_docs_from_items');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docbuilder-module.html#_get_docs_from_items">_get_docs_from_items</a><tt class="py-op">(</tt><tt class="py-param">items</tt><tt class="py-op">,</tt> <tt class="py-par [...]
+</div><div id="_get_docs_from_items-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_get_docs_from_items-expanded"><a name="L324"></a><tt class="py-lineno"> 324</tt>  <tt class="py-line"> </tt>
+<a name="L325"></a><tt class="py-lineno"> 325</tt>  <tt class="py-line">    <tt class="py-comment"># Start the progress bar.</tt> </tt>
+<a name="L326"></a><tt class="py-lineno"> 326</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-147" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-147', 'log', 'link-14');">log</a></tt><tt class="py-op">.</tt><tt id="link-148" class="py-name"><a title="epydoc.cli.ConsoleLogger.start_progress
+epydoc.cli.UnifiedProgressConsoleLogger.start_progress
+epydoc.gui.GUILogger.start_progress
+epydoc.log.Logger.start_progress
+epydoc.log.start_progress" class="py-name" href="#" onclick="return doclink('link-148', 'start_progress', 'link-41');">start_progress</a></tt><tt class="py-op">(</tt><tt class="py-string">'Building documentation'</tt><tt class="py-op">)</tt> </tt>
+<a name="L327"></a><tt class="py-lineno"> 327</tt>  <tt class="py-line">    <tt class="py-name">progress_estimator</tt> <tt class="py-op">=</tt> <tt id="link-149" class="py-name" targets="Class epydoc.docbuilder._ProgressEstimator=epydoc.docbuilder._ProgressEstimator-class.html"><a title="epydoc.docbuilder._ProgressEstimator" class="py-name" href="#" onclick="return doclink('link-149', '_ProgressEstimator', 'link-149');">_ProgressEstimator</a></tt><tt class="py-op">(</tt><tt class="py-na [...]
+<a name="L328"></a><tt class="py-lineno"> 328</tt>  <tt class="py-line"> </tt>
+<a name="L329"></a><tt class="py-lineno"> 329</tt>  <tt class="py-line">    <tt class="py-comment"># Check for duplicate item names.</tt> </tt>
+<a name="L330"></a><tt class="py-lineno"> 330</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">item_set</tt> <tt class="py-op">=</tt> <tt class="py-name">set</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L331"></a><tt class="py-lineno"> 331</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">item</tt> <tt class="py-keyword">in</tt> <tt class="py-name">items</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L332"></a><tt class="py-lineno"> 332</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">item</tt> <tt class="py-keyword">in</tt> <tt class="py-name">item_set</tt><tt class="py-op">:</tt> </tt>
+<a name="L333"></a><tt class="py-lineno"> 333</tt>  <tt class="py-line">            <tt id="link-150" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-150', 'log', 'link-14');">log</a></tt><tt class="py-op">.</tt><tt id="link-151" class="py-name" targets="Method epydoc.checker.DocChecker.warning()=epydoc.checker.DocChecker-class.html#warning,Function epydoc.log.warning()=epydoc.log-module.html#warning"><a title="epydoc.checker.DocChecker.warning
+epydoc.log.warning" class="py-name" href="#" onclick="return doclink('link-151', 'warning', 'link-151');">warning</a></tt><tt class="py-op">(</tt><tt class="py-string">"Name %r given multiple times"</tt> <tt class="py-op">%</tt> <tt class="py-name">item</tt><tt class="py-op">)</tt> </tt>
+<a name="L334"></a><tt class="py-lineno"> 334</tt>  <tt class="py-line">            <tt class="py-name">items</tt><tt class="py-op">.</tt><tt class="py-name">remove</tt><tt class="py-op">(</tt><tt class="py-name">item</tt><tt class="py-op">)</tt> </tt>
+<a name="L335"></a><tt class="py-lineno"> 335</tt>  <tt class="py-line">        <tt class="py-name">item_set</tt><tt class="py-op">.</tt><tt class="py-name">add</tt><tt class="py-op">(</tt><tt class="py-name">item</tt><tt class="py-op">)</tt> </tt>
+<a name="L336"></a><tt class="py-lineno"> 336</tt>  <tt class="py-line"> </tt>
+<a name="L337"></a><tt class="py-lineno"> 337</tt>  <tt class="py-line">    <tt class="py-comment"># Keep track of what top-level canonical names we've assigned, to</tt> </tt>
+<a name="L338"></a><tt class="py-lineno"> 338</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># make sure there are no naming conflicts.  This dict maps</tt> </tt>
+<a name="L339"></a><tt class="py-lineno"> 339</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># canonical names to the item names they came from (so we can print</tt> </tt>
+<a name="L340"></a><tt class="py-lineno"> 340</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># useful error messages).</tt> </tt>
+<a name="L341"></a><tt class="py-lineno"> 341</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">canonical_names</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L342"></a><tt class="py-lineno"> 342</tt>  <tt class="py-line"> </tt>
+<a name="L343"></a><tt class="py-lineno"> 343</tt>  <tt class="py-line">    <tt class="py-comment"># Collect (introspectdoc, parsedoc) pairs for each item.</tt> </tt>
+<a name="L344"></a><tt class="py-lineno"> 344</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">doc_pairs</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L345"></a><tt class="py-lineno"> 345</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">item</tt> <tt class="py-keyword">in</tt> <tt class="py-name">items</tt><tt class="py-op">:</tt> </tt>
+<a name="L346"></a><tt class="py-lineno"> 346</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">item</tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L347"></a><tt class="py-lineno"> 347</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt id="link-152" class="py-name" targets="Function epydoc.util.is_module_file()=epydoc.util-module.html#is_module_file"><a title="epydoc.util.is_module_file" class="py-name" href="#" onclick="return doclink('link-152', 'is_module_file', 'link-152');">is_module_file</a></tt><tt class="py-op">(</tt><tt class="py-name">item</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L348"></a><tt class="py-lineno"> 348</tt>  <tt class="py-line">                <tt class="py-name">doc_pairs</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-153" class="py-name" targets="Function epydoc.docbuilder._get_docs_from_module_file()=epydoc.docbuilder-module.html#_get_docs_from_module_file"><a title="epydoc.docbuilder._get_docs_from_module_file" class="py-name" href="#" onclick="return doclink('link-153', '_get_docs_from_m [...]
+<a name="L349"></a><tt class="py-lineno"> 349</tt>  <tt class="py-line">                    <tt class="py-name">item</tt><tt class="py-op">,</tt> <tt class="py-name">options</tt><tt class="py-op">,</tt> <tt class="py-name">progress_estimator</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L350"></a><tt class="py-lineno"> 350</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt id="link-154" class="py-name" targets="Function epydoc.util.is_package_dir()=epydoc.util-module.html#is_package_dir"><a title="epydoc.util.is_package_dir" class="py-name" href="#" onclick="return doclink('link-154', 'is_package_dir', 'link-154');">is_package_dir</a></tt><tt class="py-op">(</tt><tt class="py-name">item</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L351"></a><tt class="py-lineno"> 351</tt>  <tt class="py-line">                <tt class="py-name">pkgfile</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-155" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-155', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt class="py-name">abspath</tt><tt class="py-op">(</tt><tt class="py-name">os</tt><tt class="py-op">.< [...]
+<a name="L352"></a><tt class="py-lineno"> 352</tt>  <tt class="py-line">                <tt class="py-name">doc_pairs</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-157" class="py-name"><a title="epydoc.docbuilder._get_docs_from_module_file" class="py-name" href="#" onclick="return doclink('link-157', '_get_docs_from_module_file', 'link-153');">_get_docs_from_module_file</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L353"></a><tt class="py-lineno"> 353</tt>  <tt class="py-line">                    <tt class="py-name">pkgfile</tt><tt class="py-op">,</tt> <tt class="py-name">options</tt><tt class="py-op">,</tt> <tt class="py-name">progress_estimator</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L354"></a><tt class="py-lineno"> 354</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-158" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-158', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt class="py-name">isfile</tt><tt class="py-op">(</tt><tt class="py-name">item</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L355"></a><tt class="py-lineno"> 355</tt>  <tt class="py-line">                <tt class="py-name">doc_pairs</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-159" class="py-name" targets="Function epydoc.docbuilder._get_docs_from_pyscript()=epydoc.docbuilder-module.html#_get_docs_from_pyscript"><a title="epydoc.docbuilder._get_docs_from_pyscript" class="py-name" href="#" onclick="return doclink('link-159', '_get_docs_from_pyscript', [...]
+<a name="L356"></a><tt class="py-lineno"> 356</tt>  <tt class="py-line">                    <tt class="py-name">item</tt><tt class="py-op">,</tt> <tt class="py-name">options</tt><tt class="py-op">,</tt> <tt class="py-name">progress_estimator</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L357"></a><tt class="py-lineno"> 357</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">__builtin__</tt><tt class="py-op">,</tt> <tt class="py-name">item</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L358"></a><tt class="py-lineno"> 358</tt>  <tt class="py-line">                <tt class="py-name">val</tt> <tt class="py-op">=</tt> <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">__builtin__</tt><tt class="py-op">,</tt> <tt class="py-name">item</tt><tt class="py-op">)</tt> </tt>
+<a name="L359"></a><tt class="py-lineno"> 359</tt>  <tt class="py-line">                <tt class="py-name">doc_pairs</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-160" class="py-name" targets="Function epydoc.docbuilder._get_docs_from_pyobject()=epydoc.docbuilder-module.html#_get_docs_from_pyobject"><a title="epydoc.docbuilder._get_docs_from_pyobject" class="py-name" href="#" onclick="return doclink('link-160', '_get_docs_from_pyobject', [...]
+<a name="L360"></a><tt class="py-lineno"> 360</tt>  <tt class="py-line">                    <tt class="py-name">val</tt><tt class="py-op">,</tt> <tt class="py-name">options</tt><tt class="py-op">,</tt> <tt class="py-name">progress_estimator</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L361"></a><tt class="py-lineno"> 361</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt id="link-161" class="py-name" targets="Function epydoc.util.is_pyname()=epydoc.util-module.html#is_pyname"><a title="epydoc.util.is_pyname" class="py-name" href="#" onclick="return doclink('link-161', 'is_pyname', 'link-161');">is_pyname</a></tt><tt class="py-op">(</tt><tt class="py-name">item</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L362"></a><tt class="py-lineno"> 362</tt>  <tt class="py-line">                <tt class="py-name">doc_pairs</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-162" class="py-name" targets="Function epydoc.docbuilder._get_docs_from_pyname()=epydoc.docbuilder-module.html#_get_docs_from_pyname"><a title="epydoc.docbuilder._get_docs_from_pyname" class="py-name" href="#" onclick="return doclink('link-162', '_get_docs_from_pyname', 'link-1 [...]
+<a name="L363"></a><tt class="py-lineno"> 363</tt>  <tt class="py-line">                    <tt class="py-name">item</tt><tt class="py-op">,</tt> <tt class="py-name">options</tt><tt class="py-op">,</tt> <tt class="py-name">progress_estimator</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L364"></a><tt class="py-lineno"> 364</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-163" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-163', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt class="py-name">isdir</tt><tt class="py-op">(</tt><tt class="py-name">item</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L365"></a><tt class="py-lineno"> 365</tt>  <tt class="py-line">                <tt id="link-164" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-164', 'log', 'link-14');">log</a></tt><tt class="py-op">.</tt><tt id="link-165" class="py-name"><a title="epydoc.log.error" class="py-name" href="#" onclick="return doclink('link-165', 'error', 'link-22');">error</a></tt><tt class="py-op">(</tt><tt class="py-string">"Directory %r is not a package"</tt> <tt class="py-op">%</tt> <tt class="py-name">item</tt><tt class="py-op">)</tt> </tt>
+<a name="L366"></a><tt class="py-lineno"> 366</tt>  <tt class="py-line">                <tt class="py-keyword">continue</tt> </tt>
+<a name="L367"></a><tt class="py-lineno"> 367</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-166" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-166', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt class="py-name">isfile</tt><tt class="py-op">(</tt><tt class="py-name">item</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L368"></a><tt class="py-lineno"> 368</tt>  <tt class="py-line">                <tt id="link-167" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-167', 'log', 'link-14');">log</a></tt><tt class="py-op">.</tt><tt id="link-168" class="py-name"><a title="epydoc.log.error" class="py-name" href="#" onclick="return doclink('link-168', 'error', 'link-22');">error</a></tt><tt class="py-op">(</tt><tt class="py-string">"File %s is not a Python module"</tt> <tt class="py-op">%</tt> <tt class="py-name">item</tt><tt class="py-op">)</tt> </tt>
+<a name="L369"></a><tt class="py-lineno"> 369</tt>  <tt class="py-line">                <tt class="py-keyword">continue</tt> </tt>
+<a name="L370"></a><tt class="py-lineno"> 370</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L371"></a><tt class="py-lineno"> 371</tt>  <tt class="py-line">                <tt id="link-169" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-169', 'log', 'link-14');">log</a></tt><tt class="py-op">.</tt><tt id="link-170" class="py-name"><a title="epydoc.log.error" class="py-name" href="#" onclick="return doclink('link-170', 'error', 'link-22');">error</a></tt><tt class="py-op">(</tt><tt class="py-string">"Could not find a file or object named %s"</tt> <tt class="py-op">%</tt> </tt>
+<a name="L372"></a><tt class="py-lineno"> 372</tt>  <tt class="py-line">                          <tt class="py-name">item</tt><tt class="py-op">)</tt> </tt>
+<a name="L373"></a><tt class="py-lineno"> 373</tt>  <tt class="py-line">                <tt class="py-keyword">continue</tt> </tt>
+<a name="L374"></a><tt class="py-lineno"> 374</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L375"></a><tt class="py-lineno"> 375</tt>  <tt class="py-line">            <tt class="py-name">doc_pairs</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-171" class="py-name"><a title="epydoc.docbuilder._get_docs_from_pyobject" class="py-name" href="#" onclick="return doclink('link-171', '_get_docs_from_pyobject', 'link-160');">_get_docs_from_pyobject</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L376"></a><tt class="py-lineno"> 376</tt>  <tt class="py-line">                <tt class="py-name">item</tt><tt class="py-op">,</tt> <tt class="py-name">options</tt><tt class="py-op">,</tt> <tt class="py-name">progress_estimator</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L377"></a><tt class="py-lineno"> 377</tt>  <tt class="py-line"> </tt>
+<a name="L378"></a><tt class="py-lineno"> 378</tt>  <tt class="py-line">        <tt class="py-comment"># Make sure there are no naming conflicts.</tt> </tt>
+<a name="L379"></a><tt class="py-lineno"> 379</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt id="link-172" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-172', 'name', 'link-24');">name</a></tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">doc_pairs</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</ [...]
+<a name="L380"></a><tt class="py-lineno"> 380</tt>  <tt class="py-line">                <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">doc_pairs</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-string">'canonical_name'</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op [...]
+<a name="L381"></a><tt class="py-lineno"> 381</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-173" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-173', 'name', 'link-24');">name</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">canonical_names</tt><tt class="py-op">:</tt> </tt>
+<a name="L382"></a><tt class="py-lineno"> 382</tt>  <tt class="py-line">            <tt id="link-174" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-174', 'log', 'link-14');">log</a></tt><tt class="py-op">.</tt><tt id="link-175" class="py-name"><a title="epydoc.log.error" class="py-name" href="#" onclick="return doclink('link-175', 'error', 'link-22');">error</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L383"></a><tt class="py-lineno"> 383</tt>  <tt class="py-line">                <tt class="py-string">'Two of the specified items, %r and %r, have the same '</tt> </tt>
+<a name="L384"></a><tt class="py-lineno"> 384</tt>  <tt class="py-line">                <tt class="py-string">'canonical name ("%s").  This may mean that you specified '</tt> </tt>
+<a name="L385"></a><tt class="py-lineno"> 385</tt>  <tt class="py-line">                <tt class="py-string">'two different files that both use the same module name.  '</tt> </tt>
+<a name="L386"></a><tt class="py-lineno"> 386</tt>  <tt class="py-line">                <tt class="py-string">'Ignoring the second item (%r)'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L387"></a><tt class="py-lineno"> 387</tt>  <tt class="py-line">                <tt class="py-op">(</tt><tt class="py-name">canonical_names</tt><tt class="py-op">[</tt><tt id="link-176" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-176', 'name', 'link-24');">name</a></tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">item</tt><tt class="py-op">,</tt> <tt id="link-177" class="py-name"><a title [...]
+<a name="L388"></a><tt class="py-lineno"> 388</tt>  <tt class="py-line">            <tt class="py-name">doc_pairs</tt><tt class="py-op">.</tt><tt class="py-name">pop</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L389"></a><tt class="py-lineno"> 389</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L390"></a><tt class="py-lineno"> 390</tt>  <tt class="py-line">            <tt class="py-name">canonical_names</tt><tt class="py-op">[</tt><tt id="link-179" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-179', 'name', 'link-24');">name</a></tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">item</tt>                 </tt>
+<a name="L391"></a><tt class="py-lineno"> 391</tt>  <tt class="py-line"> </tt>
+<a name="L392"></a><tt class="py-lineno"> 392</tt>  <tt class="py-line">        <tt class="py-comment"># This will only have an effect if doc_pairs[-1] contains a</tt> </tt>
+<a name="L393"></a><tt class="py-lineno"> 393</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># package's docs.  The 'not is_module_file(item)' prevents</tt> </tt>
+<a name="L394"></a><tt class="py-lineno"> 394</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># us from adding subdirectories if they explicitly specify</tt> </tt>
+<a name="L395"></a><tt class="py-lineno"> 395</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># a package's __init__.py file.</tt> </tt>
+<a name="L396"></a><tt class="py-lineno"> 396</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">add_submodules</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt id="link-180" class="py-name"><a title="epydoc.util.is_module_file" class="py-name" href="#" onclick="return doclink('link-180', 'is_module_file', 'link-152');">is_module_file</a></tt><tt c [...]
+<a name="L397"></a><tt class="py-lineno"> 397</tt>  <tt class="py-line">            <tt class="py-name">doc_pairs</tt> <tt class="py-op">+=</tt> <tt id="link-181" class="py-name" targets="Function epydoc.docbuilder._get_docs_from_submodules()=epydoc.docbuilder-module.html#_get_docs_from_submodules"><a title="epydoc.docbuilder._get_docs_from_submodules" class="py-name" href="#" onclick="return doclink('link-181', '_get_docs_from_submodules', 'link-181');">_get_docs_from_submodules</a></tt [...]
+<a name="L398"></a><tt class="py-lineno"> 398</tt>  <tt class="py-line">                <tt class="py-name">item</tt><tt class="py-op">,</tt> <tt class="py-name">doc_pairs</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">options</tt><tt class="py-op">,</tt> <tt class="py-name">progress_estimator</tt><tt class="py-op">)</tt> </tt>
+<a name="L399"></a><tt class="py-lineno"> 399</tt>  <tt class="py-line"> </tt>
+<a name="L400"></a><tt class="py-lineno"> 400</tt>  <tt class="py-line">    <tt id="link-182" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-182', 'log', 'link-14');">log</a></tt><tt class="py-op">.</tt><tt id="link-183" class="py-name"><a title="epydoc.cli.ConsoleLogger.end_progress
+epydoc.cli.UnifiedProgressConsoleLogger.end_progress
+epydoc.gui.GUILogger.end_progress
+epydoc.log.Logger.end_progress
+epydoc.log.end_progress" class="py-name" href="#" onclick="return doclink('link-183', 'end_progress', 'link-53');">end_progress</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L401"></a><tt class="py-lineno"> 401</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">doc_pairs</tt> </tt>
+</div><a name="L402"></a><tt class="py-lineno"> 402</tt>  <tt class="py-line"> </tt>
+<a name="_get_docs_from_pyobject"></a><div id="_get_docs_from_pyobject-def"><a name="L403"></a><tt class="py-lineno"> 403</tt> <a class="py-toggle" href="#" id="_get_docs_from_pyobject-toggle" onclick="return toggle('_get_docs_from_pyobject');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docbuilder-module.html#_get_docs_from_pyobject">_get_docs_from_pyobject</a><tt class="py-op">(</tt><tt class="py-param">obj</tt><tt class="py-op">,</tt> < [...]
+</div><div id="_get_docs_from_pyobject-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_get_docs_from_pyobject-expanded"><a name="L404"></a><tt class="py-lineno"> 404</tt>  <tt class="py-line">    <tt class="py-name">progress_estimator</tt><tt class="py-op">.</tt><tt class="py-name">complete</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L405"></a><tt class="py-lineno"> 405</tt>  <tt class="py-line">    <tt id="link-184" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-184', 'log', 'link-14');">log</a></tt><tt class="py-op">.</tt><tt id="link-185" class="py-name"><a title="epydoc.cli.ConsoleLogger.progress
+epydoc.cli.UnifiedProgressConsoleLogger.progress
+epydoc.docbuilder._ProgressEstimator.progress
+epydoc.gui.GUILogger.progress
+epydoc.log.Logger.progress
+epydoc.log.progress" class="py-name" href="#" onclick="return doclink('link-185', 'progress', 'link-49');">progress</a></tt><tt class="py-op">(</tt><tt class="py-name">progress_estimator</tt><tt class="py-op">.</tt><tt id="link-186" class="py-name"><a title="epydoc.cli.ConsoleLogger.progress
+epydoc.cli.UnifiedProgressConsoleLogger.progress
+epydoc.docbuilder._ProgressEstimator.progress
+epydoc.gui.GUILogger.progress
+epydoc.log.Logger.progress
+epydoc.log.progress" class="py-name" href="#" onclick="return doclink('link-186', 'progress', 'link-49');">progress</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">repr</tt><tt class="py-op">(</tt><tt class="py-name">obj</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L406"></a><tt class="py-lineno"> 406</tt>  <tt class="py-line">     </tt>
+<a name="L407"></a><tt class="py-lineno"> 407</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">introspect</tt><tt class="py-op">:</tt> </tt>
+<a name="L408"></a><tt class="py-lineno"> 408</tt>  <tt class="py-line">        <tt id="link-187" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-187', 'log', 'link-14');">log</a></tt><tt class="py-op">.</tt><tt id="link-188" class="py-name"><a title="epydoc.log.error" class="py-name" href="#" onclick="return doclink('link-188', 'error', 'link-22');">error</a></tt><tt class="py-op">(</tt><tt class="py-string">"Cannot get docs for Python objects without "</tt> </tt>
+<a name="L409"></a><tt class="py-lineno"> 409</tt>  <tt class="py-line">                  <tt class="py-string">"introspecting them."</tt><tt class="py-op">)</tt> </tt>
+<a name="L410"></a><tt class="py-lineno"> 410</tt>  <tt class="py-line">             </tt>
+<a name="L411"></a><tt class="py-lineno"> 411</tt>  <tt class="py-line">    <tt class="py-name">introspect_doc</tt> <tt class="py-op">=</tt> <tt class="py-name">parse_doc</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L412"></a><tt class="py-lineno"> 412</tt>  <tt class="py-line">    <tt class="py-name">introspect_error</tt> <tt class="py-op">=</tt> <tt class="py-name">parse_error</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L413"></a><tt class="py-lineno"> 413</tt>  <tt class="py-line">    <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L414"></a><tt class="py-lineno"> 414</tt>  <tt class="py-line">        <tt class="py-name">introspect_doc</tt> <tt class="py-op">=</tt> <tt id="link-189" class="py-name"><a title="epydoc.docintrospecter.introspect_docs" class="py-name" href="#" onclick="return doclink('link-189', 'introspect_docs', 'link-5');">introspect_docs</a></tt><tt class="py-op">(</tt><tt id="link-190" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return docli [...]
+<a name="L415"></a><tt class="py-lineno"> 415</tt>  <tt class="py-line">    <tt class="py-keyword">except</tt> <tt class="py-name">ImportError</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
+<a name="L416"></a><tt class="py-lineno"> 416</tt>  <tt class="py-line">        <tt id="link-191" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-191', 'log', 'link-14');">log</a></tt><tt class="py-op">.</tt><tt id="link-192" class="py-name"><a title="epydoc.log.error" class="py-name" href="#" onclick="return doclink('link-192', 'error', 'link-22');">error</a></tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">)</tt> </tt>
+<a name="L417"></a><tt class="py-lineno"> 417</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+<a name="L418"></a><tt class="py-lineno"> 418</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt id="link-193" class="py-name"><a title="epydoc.markup.epytext.parse
+epydoc.markup.parse" class="py-name" href="#" onclick="return doclink('link-193', 'parse', 'link-19');">parse</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L419"></a><tt class="py-lineno"> 419</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">introspect_doc</tt><tt class="py-op">.</tt><tt id="link-194" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-194', 'canonical_name', 'link-42');">canonical_name</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L420"></a><tt class="py-lineno"> 420</tt>  <tt class="py-line">            <tt class="py-name">prev_introspect</tt> <tt class="py-op">=</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">introspect</tt> </tt>
+<a name="L421"></a><tt class="py-lineno"> 421</tt>  <tt class="py-line">            <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">introspect</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L422"></a><tt class="py-lineno"> 422</tt>  <tt class="py-line">            <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L423"></a><tt class="py-lineno"> 423</tt>  <tt class="py-line">                <tt class="py-name">_</tt><tt class="py-op">,</tt> <tt id="link-195" class="py-name"><a title="epydoc.docparser.parse_docs" class="py-name" href="#" onclick="return doclink('link-195', 'parse_docs', 'link-8');">parse_docs</a></tt> <tt class="py-op">=</tt> <tt id="link-196" class="py-name"><a title="epydoc.docbuilder._get_docs_from_pyname" class="py-name" href="#" onclick="return doclink('link-196', '_ [...]
+<a name="L424"></a><tt class="py-lineno"> 424</tt>  <tt class="py-line">                    <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">introspect_doc</tt><tt class="py-op">.</tt><tt id="link-197" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-197', 'canonical_name', 'link-42');">canonical_name</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">options</tt><tt class="py-op">,</tt> </tt>
+<a name="L425"></a><tt class="py-lineno"> 425</tt>  <tt class="py-line">                    <tt class="py-name">progress_estimator</tt><tt class="py-op">,</tt> <tt class="py-name">suppress_warnings</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt>
+<a name="L426"></a><tt class="py-lineno"> 426</tt>  <tt class="py-line">            <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt>
+<a name="L427"></a><tt class="py-lineno"> 427</tt>  <tt class="py-line">                <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">introspect</tt> <tt class="py-op">=</tt> <tt class="py-name">prev_introspect</tt> </tt>
+<a name="L428"></a><tt class="py-lineno"> 428</tt>  <tt class="py-line"> </tt>
+<a name="L429"></a><tt class="py-lineno"> 429</tt>  <tt class="py-line">    <tt class="py-comment"># We need a name:</tt> </tt>
+<a name="L430"></a><tt class="py-lineno"> 430</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">introspect_doc</tt><tt class="py-op">.</tt><tt id="link-198" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-198', 'canonical_name', 'link-42');">canonical_name</a></tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-199" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-199', 'UNKNOWN', 'link-43');">UNKNOWN</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L431"></a><tt class="py-lineno"> 431</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">obj</tt><tt class="py-op">,</tt> <tt class="py-string">'__name__'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L432"></a><tt class="py-lineno"> 432</tt>  <tt class="py-line">            <tt class="py-name">introspect_doc</tt><tt class="py-op">.</tt><tt id="link-200" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-200', 'canonical_name', 'link-42');">canonical_name</a></tt> <tt class="py-op">=</tt> <tt id="link-201" class="py-name"><a title="epydoc.apidoc.DottedName" class="py-name" href="#" onclick="return doclink('link-201', 'DottedName', 'link-29');">DottedName</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L433"></a><tt class="py-lineno"> 433</tt>  <tt class="py-line">                <tt id="link-202" class="py-name"><a title="epydoc.apidoc.DottedName" class="py-name" href="#" onclick="return doclink('link-202', 'DottedName', 'link-29');">DottedName</a></tt><tt class="py-op">.</tt><tt id="link-203" class="py-name" targets="Variable epydoc.apidoc.DottedName.UNREACHABLE=epydoc.apidoc.DottedName-class.html#UNREACHABLE"><a title="epydoc.apidoc.DottedName.UNREACHABLE" class="py-name" h [...]
+<a name="L434"></a><tt class="py-lineno"> 434</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L435"></a><tt class="py-lineno"> 435</tt>  <tt class="py-line">            <tt class="py-name">introspect_doc</tt><tt class="py-op">.</tt><tt id="link-204" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-204', 'canonical_name', 'link-42');">canonical_name</a></tt> <tt class="py-op">=</tt> <tt id="link-205" class="py-name"><a title="epydoc.apidoc.DottedName" class="py-name" href="#" onclick="return doclink('link-205', 'DottedName', 'link-29');">DottedName</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L436"></a><tt class="py-lineno"> 436</tt>  <tt class="py-line">                <tt id="link-206" class="py-name"><a title="epydoc.apidoc.DottedName" class="py-name" href="#" onclick="return doclink('link-206', 'DottedName', 'link-29');">DottedName</a></tt><tt class="py-op">.</tt><tt id="link-207" class="py-name"><a title="epydoc.apidoc.DottedName.UNREACHABLE" class="py-name" href="#" onclick="return doclink('link-207', 'UNREACHABLE', 'link-203');">UNREACHABLE</a></tt><tt class=" [...]
+<a name="L437"></a><tt class="py-lineno"> 437</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-name">introspect_doc</tt><tt class="py-op">,</tt> <tt class="py-name">parse_doc</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L438"></a><tt class="py-lineno"> 438</tt>  <tt class="py-line"> </tt>
+<a name="_get_docs_from_pyname"></a><div id="_get_docs_from_pyname-def"><a name="L439"></a><tt class="py-lineno"> 439</tt> <a class="py-toggle" href="#" id="_get_docs_from_pyname-toggle" onclick="return toggle('_get_docs_from_pyname');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docbuilder-module.html#_get_docs_from_pyname">_get_docs_from_pyname</a><tt class="py-op">(</tt><tt class="py-param">name</tt><tt class="py-op">,</tt> <tt class="p [...]
+<a name="L440"></a><tt class="py-lineno"> 440</tt>  <tt class="py-line">                          <tt class="py-param">suppress_warnings</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_get_docs_from_pyname-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_get_docs_from_pyname-expanded"><a name="L441"></a><tt class="py-lineno"> 441</tt>  <tt class="py-line">    <tt class="py-name">progress_estimator</tt><tt class="py-op">.</tt><tt class="py-name">complete</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L442"></a><tt class="py-lineno"> 442</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt id="link-208" class="py-name" targets="Method epydoc.docbuilder.BuildOptions.must_introspect()=epydoc.docbuilder.BuildOptions-class.html#must_introspect"><a title="epydoc.docbuilder.BuildOptions.must_introspect" class="py-name" href="#" onclick="return doclink('link-208', 'must_introspect', 'link-208');">must_introspect</a> [...]
+<a name="L443"></a><tt class="py-lineno"> 443</tt>  <tt class="py-line">        <tt id="link-212" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-212', 'log', 'link-14');">log</a></tt><tt class="py-op">.</tt><tt id="link-213" class="py-name"><a title="epydoc.cli.ConsoleLogger.progress
+epydoc.cli.UnifiedProgressConsoleLogger.progress
+epydoc.docbuilder._ProgressEstimator.progress
+epydoc.gui.GUILogger.progress
+epydoc.log.Logger.progress
+epydoc.log.progress" class="py-name" href="#" onclick="return doclink('link-213', 'progress', 'link-49');">progress</a></tt><tt class="py-op">(</tt><tt class="py-name">progress_estimator</tt><tt class="py-op">.</tt><tt id="link-214" class="py-name"><a title="epydoc.cli.ConsoleLogger.progress
+epydoc.cli.UnifiedProgressConsoleLogger.progress
+epydoc.docbuilder._ProgressEstimator.progress
+epydoc.gui.GUILogger.progress
+epydoc.log.Logger.progress
+epydoc.log.progress" class="py-name" href="#" onclick="return doclink('link-214', 'progress', 'link-49');">progress</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt id="link-215" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-215', 'name', 'link-24');">name</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L444"></a><tt class="py-lineno"> 444</tt>  <tt class="py-line">     </tt>
+<a name="L445"></a><tt class="py-lineno"> 445</tt>  <tt class="py-line">    <tt class="py-name">introspect_doc</tt> <tt class="py-op">=</tt> <tt class="py-name">parse_doc</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L446"></a><tt class="py-lineno"> 446</tt>  <tt class="py-line">    <tt class="py-name">introspect_error</tt> <tt class="py-op">=</tt> <tt class="py-name">parse_error</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L447"></a><tt class="py-lineno"> 447</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt id="link-216" class="py-name"><a title="epydoc.docbuilder.BuildOptions.must_introspect" class="py-name" href="#" onclick="return doclink('link-216', 'must_introspect', 'link-208');">must_introspect</a></tt><tt class="py-op">(</tt><tt id="link-217" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" hre [...]
+<a name="L448"></a><tt class="py-lineno"> 448</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L449"></a><tt class="py-lineno"> 449</tt>  <tt class="py-line">            <tt class="py-name">introspect_doc</tt> <tt class="py-op">=</tt> <tt id="link-218" class="py-name"><a title="epydoc.docintrospecter.introspect_docs" class="py-name" href="#" onclick="return doclink('link-218', 'introspect_docs', 'link-5');">introspect_docs</a></tt><tt class="py-op">(</tt><tt id="link-219" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return do [...]
+<a name="L450"></a><tt class="py-lineno"> 450</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">ImportError</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
+<a name="L451"></a><tt class="py-lineno"> 451</tt>  <tt class="py-line">            <tt class="py-name">introspect_error</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">)</tt> </tt>
+<a name="L452"></a><tt class="py-lineno"> 452</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt id="link-221" class="py-name"><a title="epydoc.docbuilder.BuildOptions.must_parse" class="py-name" href="#" onclick="return doclink('link-221', 'must_parse', 'link-210');">must_parse</a></tt><tt class="py-op">(</tt><tt id="link-222" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick=" [...]
+<a name="L453"></a><tt class="py-lineno"> 453</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L454"></a><tt class="py-lineno"> 454</tt>  <tt class="py-line">            <tt class="py-name">parse_doc</tt> <tt class="py-op">=</tt> <tt id="link-223" class="py-name"><a title="epydoc.docparser.parse_docs" class="py-name" href="#" onclick="return doclink('link-223', 'parse_docs', 'link-8');">parse_docs</a></tt><tt class="py-op">(</tt><tt id="link-224" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-224', 'name',  [...]
+<a name="L455"></a><tt class="py-lineno"> 455</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt id="link-226" class="py-name"><a title="epydoc.docparser.ParseError
+epydoc.markup.ParseError" class="py-name" href="#" onclick="return doclink('link-226', 'ParseError', 'link-9');">ParseError</a></tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
+<a name="L456"></a><tt class="py-lineno"> 456</tt>  <tt class="py-line">            <tt class="py-name">parse_error</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">)</tt> </tt>
+<a name="L457"></a><tt class="py-lineno"> 457</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">ImportError</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
+<a name="L458"></a><tt class="py-lineno"> 458</tt>  <tt class="py-line">            <tt class="py-comment"># If we get here, then there' probably no python source</tt> </tt>
+<a name="L459"></a><tt class="py-lineno"> 459</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># available; don't bother to generate a warnining.</tt> </tt>
+<a name="L460"></a><tt class="py-lineno"> 460</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">pass</tt> </tt>
+<a name="L461"></a><tt class="py-lineno"> 461</tt>  <tt class="py-line">         </tt>
+<a name="L462"></a><tt class="py-lineno"> 462</tt>  <tt class="py-line">    <tt class="py-comment"># Report any errors we encountered.</tt> </tt>
+<a name="L463"></a><tt class="py-lineno"> 463</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">suppress_warnings</tt><tt class="py-op">:</tt> </tt>
+<a name="L464"></a><tt class="py-lineno"> 464</tt>  <tt class="py-line">        <tt id="link-227" class="py-name" targets="Function epydoc.docbuilder._report_errors()=epydoc.docbuilder-module.html#_report_errors"><a title="epydoc.docbuilder._report_errors" class="py-name" href="#" onclick="return doclink('link-227', '_report_errors', 'link-227');">_report_errors</a></tt><tt class="py-op">(</tt><tt id="link-228" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" hre [...]
+<a name="L465"></a><tt class="py-lineno"> 465</tt>  <tt class="py-line">                       <tt class="py-name">introspect_error</tt><tt class="py-op">,</tt> <tt class="py-name">parse_error</tt><tt class="py-op">)</tt> </tt>
+<a name="L466"></a><tt class="py-lineno"> 466</tt>  <tt class="py-line"> </tt>
+<a name="L467"></a><tt class="py-lineno"> 467</tt>  <tt class="py-line">    <tt class="py-comment"># Return the docs we found.</tt> </tt>
+<a name="L468"></a><tt class="py-lineno"> 468</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-name">introspect_doc</tt><tt class="py-op">,</tt> <tt class="py-name">parse_doc</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L469"></a><tt class="py-lineno"> 469</tt>  <tt class="py-line"> </tt>
+<a name="_get_docs_from_pyscript"></a><div id="_get_docs_from_pyscript-def"><a name="L470"></a><tt class="py-lineno"> 470</tt> <a class="py-toggle" href="#" id="_get_docs_from_pyscript-toggle" onclick="return toggle('_get_docs_from_pyscript');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docbuilder-module.html#_get_docs_from_pyscript">_get_docs_from_pyscript</a><tt class="py-op">(</tt><tt class="py-param">filename</tt><tt class="py-op">,</ [...]
+</div><div id="_get_docs_from_pyscript-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_get_docs_from_pyscript-expanded"><a name="L471"></a><tt class="py-lineno"> 471</tt>  <tt class="py-line">    <tt class="py-comment"># [xx] I should be careful about what names I allow as filenames,</tt> </tt>
+<a name="L472"></a><tt class="py-lineno"> 472</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># and maybe do some munging to prevent problems.</tt> </tt>
+<a name="L473"></a><tt class="py-lineno"> 473</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L474"></a><tt class="py-lineno"> 474</tt>  <tt class="py-line">    <tt class="py-name">introspect_doc</tt> <tt class="py-op">=</tt> <tt class="py-name">parse_doc</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L475"></a><tt class="py-lineno"> 475</tt>  <tt class="py-line">    <tt class="py-name">introspect_error</tt> <tt class="py-op">=</tt> <tt class="py-name">parse_error</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L476"></a><tt class="py-lineno"> 476</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">introspect</tt><tt class="py-op">:</tt> </tt>
+<a name="L477"></a><tt class="py-lineno"> 477</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L478"></a><tt class="py-lineno"> 478</tt>  <tt class="py-line">            <tt class="py-name">introspect_doc</tt> <tt class="py-op">=</tt> <tt id="link-229" class="py-name"><a title="epydoc.docintrospecter.introspect_docs" class="py-name" href="#" onclick="return doclink('link-229', 'introspect_docs', 'link-5');">introspect_docs</a></tt><tt class="py-op">(</tt><tt id="link-230" class="py-name" targets="Variable epydoc.apidoc.ModuleDoc.filename=epydoc.apidoc.ModuleDoc-class.html [...]
+<a name="L479"></a><tt class="py-lineno"> 479</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">introspect_doc</tt><tt class="py-op">.</tt><tt id="link-232" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-232', 'canonical_name', 'link-42');">canonical_name</a></tt> <tt class="py-keyword">is</tt> <tt id="link-233" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-233', 'UNKNOWN', 'link-43');">UNKNOWN</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L480"></a><tt class="py-lineno"> 480</tt>  <tt class="py-line">                <tt class="py-name">introspect_doc</tt><tt class="py-op">.</tt><tt id="link-234" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-234', 'canonical_name', 'link-42');">canonical_name</a></tt> <tt class="py-op">=</tt> <tt id="link-235" class="py-name" targets="Function epydoc.util.munge_script_name()=epydoc.util-module.html#munge_script_name"><a title="epydoc.util.munge_script_name" class="py-name" href="#" onclick="return doclink('link-235', 'munge_script_name', 'link-235');">munge_script_name</a></tt><tt class="py-op">( [...]
+<a name="L481"></a><tt class="py-lineno"> 481</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">ImportError</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
+<a name="L482"></a><tt class="py-lineno"> 482</tt>  <tt class="py-line">            <tt class="py-name">introspect_error</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">)</tt> </tt>
+<a name="L483"></a><tt class="py-lineno"> 483</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt id="link-237" class="py-name"><a title="epydoc.markup.epytext.parse
+epydoc.markup.parse" class="py-name" href="#" onclick="return doclink('link-237', 'parse', 'link-19');">parse</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L484"></a><tt class="py-lineno"> 484</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L485"></a><tt class="py-lineno"> 485</tt>  <tt class="py-line">            <tt class="py-name">parse_doc</tt> <tt class="py-op">=</tt> <tt id="link-238" class="py-name"><a title="epydoc.docparser.parse_docs" class="py-name" href="#" onclick="return doclink('link-238', 'parse_docs', 'link-8');">parse_docs</a></tt><tt class="py-op">(</tt><tt id="link-239" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-239', 'filen [...]
+<a name="L486"></a><tt class="py-lineno"> 486</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt id="link-241" class="py-name"><a title="epydoc.docparser.ParseError
+epydoc.markup.ParseError" class="py-name" href="#" onclick="return doclink('link-241', 'ParseError', 'link-9');">ParseError</a></tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
+<a name="L487"></a><tt class="py-lineno"> 487</tt>  <tt class="py-line">            <tt class="py-name">parse_error</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">)</tt> </tt>
+<a name="L488"></a><tt class="py-lineno"> 488</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">ImportError</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
+<a name="L489"></a><tt class="py-lineno"> 489</tt>  <tt class="py-line">            <tt class="py-name">parse_error</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">)</tt> </tt>
+<a name="L490"></a><tt class="py-lineno"> 490</tt>  <tt class="py-line">                 </tt>
+<a name="L491"></a><tt class="py-lineno"> 491</tt>  <tt class="py-line">    <tt class="py-comment"># Report any errors we encountered.</tt> </tt>
+<a name="L492"></a><tt class="py-lineno"> 492</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-242" class="py-name"><a title="epydoc.docbuilder._report_errors" class="py-name" href="#" onclick="return doclink('link-242', '_report_errors', 'link-227');">_report_errors</a></tt><tt class="py-op">(</tt><tt id="link-243" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-243', 'filename', 'link-230');">filen [...]
+<a name="L493"></a><tt class="py-lineno"> 493</tt>  <tt class="py-line">                   <tt class="py-name">introspect_error</tt><tt class="py-op">,</tt> <tt class="py-name">parse_error</tt><tt class="py-op">)</tt> </tt>
+<a name="L494"></a><tt class="py-lineno"> 494</tt>  <tt class="py-line"> </tt>
+<a name="L495"></a><tt class="py-lineno"> 495</tt>  <tt class="py-line">    <tt class="py-comment"># Return the docs we found.</tt> </tt>
+<a name="L496"></a><tt class="py-lineno"> 496</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-name">introspect_doc</tt><tt class="py-op">,</tt> <tt class="py-name">parse_doc</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L497"></a><tt class="py-lineno"> 497</tt>  <tt class="py-line">     </tt>
+<a name="_get_docs_from_module_file"></a><div id="_get_docs_from_module_file-def"><a name="L498"></a><tt class="py-lineno"> 498</tt> <a class="py-toggle" href="#" id="_get_docs_from_module_file-toggle" onclick="return toggle('_get_docs_from_module_file');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docbuilder-module.html#_get_docs_from_module_file">_get_docs_from_module_file</a><tt class="py-op">(</tt><tt class="py-param">filename</tt><tt [...]
+<a name="L499"></a><tt class="py-lineno"> 499</tt>  <tt class="py-line">                               <tt class="py-param">parent_docs</tt><tt class="py-op">=</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_get_docs_from_module_file-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_get_docs_from_module_file-expanded"><a name="L500"></a><tt class="py-lineno"> 500</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L501"></a><tt class="py-lineno"> 501</tt>  <tt class="py-line"><tt class="py-docstring">    Construct and return the API documentation for the python</tt> </tt>
+<a name="L502"></a><tt class="py-lineno"> 502</tt>  <tt class="py-line"><tt class="py-docstring">    module with the given filename.</tt> </tt>
+<a name="L503"></a><tt class="py-lineno"> 503</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L504"></a><tt class="py-lineno"> 504</tt>  <tt class="py-line"><tt class="py-docstring">    @param parent_docs: The C{ModuleDoc} of the containing package.</tt> </tt>
+<a name="L505"></a><tt class="py-lineno"> 505</tt>  <tt class="py-line"><tt class="py-docstring">        If C{parent_docs} is not provided, then this method will</tt> </tt>
+<a name="L506"></a><tt class="py-lineno"> 506</tt>  <tt class="py-line"><tt class="py-docstring">        check if the given filename is contained in a package; and</tt> </tt>
+<a name="L507"></a><tt class="py-lineno"> 507</tt>  <tt class="py-line"><tt class="py-docstring">        if so, it will construct a stub C{ModuleDoc} for the</tt> </tt>
+<a name="L508"></a><tt class="py-lineno"> 508</tt>  <tt class="py-line"><tt class="py-docstring">        containing package(s).  C{parent_docs} is a tuple, where</tt> </tt>
+<a name="L509"></a><tt class="py-lineno"> 509</tt>  <tt class="py-line"><tt class="py-docstring">        the first element is the parent from introspection, and</tt> </tt>
+<a name="L510"></a><tt class="py-lineno"> 510</tt>  <tt class="py-line"><tt class="py-docstring">        the second element is the parent from parsing.</tt> </tt>
+<a name="L511"></a><tt class="py-lineno"> 511</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L512"></a><tt class="py-lineno"> 512</tt>  <tt class="py-line">    <tt class="py-comment"># Record our progress.</tt> </tt>
+<a name="L513"></a><tt class="py-lineno"> 513</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">modulename</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-244" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-244', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt class="py-name">splitext</tt><tt class="py-op">(</tt><tt class="py-name">os</tt> [...]
+<a name="L514"></a><tt class="py-lineno"> 514</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">modulename</tt> <tt class="py-op">==</tt> <tt class="py-string">'__init__'</tt><tt class="py-op">:</tt> </tt>
+<a name="L515"></a><tt class="py-lineno"> 515</tt>  <tt class="py-line">        <tt class="py-name">modulename</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-247" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-247', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-name">os</tt><tt class="py-op">.</tt><tt [...]
+<a name="L516"></a><tt class="py-lineno"> 516</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">parent_docs</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L517"></a><tt class="py-lineno"> 517</tt>  <tt class="py-line">        <tt class="py-name">modulename</tt> <tt class="py-op">=</tt> <tt id="link-250" class="py-name"><a title="epydoc.apidoc.DottedName" class="py-name" href="#" onclick="return doclink('link-250', 'DottedName', 'link-29');">DottedName</a></tt><tt class="py-op">(</tt><tt class="py-name">parent_docs</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-2 [...]
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-251', 'canonical_name', 'link-42');">canonical_name</a></tt><tt class="py-op">,</tt> <tt class="py-name">modulename</tt><tt class="py-op">)</tt> </tt>
+<a name="L518"></a><tt class="py-lineno"> 518</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">parent_docs</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L519"></a><tt class="py-lineno"> 519</tt>  <tt class="py-line">        <tt class="py-name">modulename</tt> <tt class="py-op">=</tt> <tt id="link-252" class="py-name"><a title="epydoc.apidoc.DottedName" class="py-name" href="#" onclick="return doclink('link-252', 'DottedName', 'link-29');">DottedName</a></tt><tt class="py-op">(</tt><tt class="py-name">parent_docs</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-2 [...]
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-253', 'canonical_name', 'link-42');">canonical_name</a></tt><tt class="py-op">,</tt> <tt class="py-name">modulename</tt><tt class="py-op">)</tt> </tt>
+<a name="L520"></a><tt class="py-lineno"> 520</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt id="link-254" class="py-name"><a title="epydoc.docbuilder.BuildOptions.must_introspect" class="py-name" href="#" onclick="return doclink('link-254', 'must_introspect', 'link-208');">must_introspect</a></tt><tt class="py-op">(</tt><tt class="py-name">modulename</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt  [...]
+<a name="L521"></a><tt class="py-lineno"> 521</tt>  <tt class="py-line">        <tt id="link-256" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-256', 'log', 'link-14');">log</a></tt><tt class="py-op">.</tt><tt id="link-257" class="py-name"><a title="epydoc.cli.ConsoleLogger.progress
+epydoc.cli.UnifiedProgressConsoleLogger.progress
+epydoc.docbuilder._ProgressEstimator.progress
+epydoc.gui.GUILogger.progress
+epydoc.log.Logger.progress
+epydoc.log.progress" class="py-name" href="#" onclick="return doclink('link-257', 'progress', 'link-49');">progress</a></tt><tt class="py-op">(</tt><tt class="py-name">progress_estimator</tt><tt class="py-op">.</tt><tt id="link-258" class="py-name"><a title="epydoc.cli.ConsoleLogger.progress
+epydoc.cli.UnifiedProgressConsoleLogger.progress
+epydoc.docbuilder._ProgressEstimator.progress
+epydoc.gui.GUILogger.progress
+epydoc.log.Logger.progress
+epydoc.log.progress" class="py-name" href="#" onclick="return doclink('link-258', 'progress', 'link-49');">progress</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L522"></a><tt class="py-lineno"> 522</tt>  <tt class="py-line">                     <tt class="py-string">'%s (%s)'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">modulename</tt><tt class="py-op">,</tt> <tt id="link-259" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-259', 'filename', 'link-230');">filename</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L523"></a><tt class="py-lineno"> 523</tt>  <tt class="py-line">    <tt class="py-name">progress_estimator</tt><tt class="py-op">.</tt><tt class="py-name">complete</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L524"></a><tt class="py-lineno"> 524</tt>  <tt class="py-line">     </tt>
+<a name="L525"></a><tt class="py-lineno"> 525</tt>  <tt class="py-line">    <tt class="py-comment"># Normalize the filename.</tt> </tt>
+<a name="L526"></a><tt class="py-lineno"> 526</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-260" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-260', 'filename', 'link-230');">filename</a></tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-261" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link- [...]
+<a name="L527"></a><tt class="py-lineno"> 527</tt>  <tt class="py-line"> </tt>
+<a name="L528"></a><tt class="py-lineno"> 528</tt>  <tt class="py-line">    <tt class="py-comment"># When possible, use the source version of the file.</tt> </tt>
+<a name="L529"></a><tt class="py-lineno"> 529</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L530"></a><tt class="py-lineno"> 530</tt>  <tt class="py-line">        <tt id="link-264" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-264', 'filename', 'link-230');">filename</a></tt> <tt class="py-op">=</tt> <tt id="link-265" class="py-name" targets="Function epydoc.util.py_src_filename()=epydoc.util-module.html#py_src_filename"><a title="epydoc.util.py_src_filename" class="py-name" href="#" onclick="return d [...]
+<a name="L531"></a><tt class="py-lineno"> 531</tt>  <tt class="py-line">        <tt class="py-name">src_file_available</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L532"></a><tt class="py-lineno"> 532</tt>  <tt class="py-line">    <tt class="py-keyword">except</tt> <tt class="py-name">ValueError</tt><tt class="py-op">:</tt> </tt>
+<a name="L533"></a><tt class="py-lineno"> 533</tt>  <tt class="py-line">        <tt class="py-name">src_file_available</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L534"></a><tt class="py-lineno"> 534</tt>  <tt class="py-line"> </tt>
+<a name="L535"></a><tt class="py-lineno"> 535</tt>  <tt class="py-line">    <tt class="py-comment"># Get the introspected & parsed docs (as appropriate)</tt> </tt>
+<a name="L536"></a><tt class="py-lineno"> 536</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">introspect_doc</tt> <tt class="py-op">=</tt> <tt class="py-name">parse_doc</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L537"></a><tt class="py-lineno"> 537</tt>  <tt class="py-line">    <tt class="py-name">introspect_error</tt> <tt class="py-op">=</tt> <tt class="py-name">parse_error</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L538"></a><tt class="py-lineno"> 538</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt id="link-267" class="py-name"><a title="epydoc.docbuilder.BuildOptions.must_introspect" class="py-name" href="#" onclick="return doclink('link-267', 'must_introspect', 'link-208');">must_introspect</a></tt><tt class="py-op">(</tt><tt class="py-name">modulename</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L539"></a><tt class="py-lineno"> 539</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L540"></a><tt class="py-lineno"> 540</tt>  <tt class="py-line">            <tt class="py-name">introspect_doc</tt> <tt class="py-op">=</tt> <tt id="link-268" class="py-name"><a title="epydoc.docintrospecter.introspect_docs" class="py-name" href="#" onclick="return doclink('link-268', 'introspect_docs', 'link-5');">introspect_docs</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L541"></a><tt class="py-lineno"> 541</tt>  <tt class="py-line">                <tt id="link-269" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-269', 'filename', 'link-230');">filename</a></tt><tt class="py-op">=</tt><tt id="link-270" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-270', 'filename', 'link-230');">filename</a></tt><tt class="py-op [...]
+<a name="L542"></a><tt class="py-lineno"> 542</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">introspect_doc</tt><tt class="py-op">.</tt><tt id="link-271" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-271', 'canonical_name', 'link-42');">canonical_name</a></tt> <tt class="py-keyword">is</tt> <tt id="link-272" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-272', 'UNKNOWN', 'link-43');">UNKNOWN</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L543"></a><tt class="py-lineno"> 543</tt>  <tt class="py-line">                <tt class="py-name">introspect_doc</tt><tt class="py-op">.</tt><tt id="link-273" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-273', 'canonical_name', 'link-42');">canonical_name</a></tt> <tt class="py-op">=</tt> <tt class="py-name">modulename</tt> </tt>
+<a name="L544"></a><tt class="py-lineno"> 544</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">ImportError</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
+<a name="L545"></a><tt class="py-lineno"> 545</tt>  <tt class="py-line">            <tt class="py-name">introspect_error</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">)</tt> </tt>
+<a name="L546"></a><tt class="py-lineno"> 546</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">src_file_available</tt> <tt class="py-keyword">and</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt id="link-274" class="py-name"><a title="epydoc.docbuilder.BuildOptions.must_parse" class="py-name" href="#" onclick="return doclink('link-274', 'must_parse', 'link-210');">must_parse</a></tt><tt class="py-op">(</tt><tt class="py-name">modulename</tt [...]
+<a name="L547"></a><tt class="py-lineno"> 547</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L548"></a><tt class="py-lineno"> 548</tt>  <tt class="py-line">            <tt class="py-name">parse_doc</tt> <tt class="py-op">=</tt> <tt id="link-275" class="py-name"><a title="epydoc.docparser.parse_docs" class="py-name" href="#" onclick="return doclink('link-275', 'parse_docs', 'link-8');">parse_docs</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L549"></a><tt class="py-lineno"> 549</tt>  <tt class="py-line">                <tt id="link-276" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-276', 'filename', 'link-230');">filename</a></tt><tt class="py-op">=</tt><tt id="link-277" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-277', 'filename', 'link-230');">filename</a></tt><tt class="py-op [...]
+<a name="L550"></a><tt class="py-lineno"> 550</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt id="link-278" class="py-name"><a title="epydoc.docparser.ParseError
+epydoc.markup.ParseError" class="py-name" href="#" onclick="return doclink('link-278', 'ParseError', 'link-9');">ParseError</a></tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
+<a name="L551"></a><tt class="py-lineno"> 551</tt>  <tt class="py-line">            <tt class="py-name">parse_error</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">)</tt> </tt>
+<a name="L552"></a><tt class="py-lineno"> 552</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">ImportError</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
+<a name="L553"></a><tt class="py-lineno"> 553</tt>  <tt class="py-line">            <tt class="py-name">parse_error</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">)</tt> </tt>
+<a name="L554"></a><tt class="py-lineno"> 554</tt>  <tt class="py-line"> </tt>
+<a name="L555"></a><tt class="py-lineno"> 555</tt>  <tt class="py-line">    <tt class="py-comment"># Report any errors we encountered.</tt> </tt>
+<a name="L556"></a><tt class="py-lineno"> 556</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-279" class="py-name"><a title="epydoc.docbuilder._report_errors" class="py-name" href="#" onclick="return doclink('link-279', '_report_errors', 'link-227');">_report_errors</a></tt><tt class="py-op">(</tt><tt id="link-280" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-280', 'filename', 'link-230');">filen [...]
+<a name="L557"></a><tt class="py-lineno"> 557</tt>  <tt class="py-line">                   <tt class="py-name">introspect_error</tt><tt class="py-op">,</tt> <tt class="py-name">parse_error</tt><tt class="py-op">)</tt> </tt>
+<a name="L558"></a><tt class="py-lineno"> 558</tt>  <tt class="py-line"> </tt>
+<a name="L559"></a><tt class="py-lineno"> 559</tt>  <tt class="py-line">    <tt class="py-comment"># Return the docs we found.</tt> </tt>
+<a name="L560"></a><tt class="py-lineno"> 560</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-name">introspect_doc</tt><tt class="py-op">,</tt> <tt class="py-name">parse_doc</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L561"></a><tt class="py-lineno"> 561</tt>  <tt class="py-line"> </tt>
+<a name="_get_docs_from_submodules"></a><div id="_get_docs_from_submodules-def"><a name="L562"></a><tt class="py-lineno"> 562</tt> <a class="py-toggle" href="#" id="_get_docs_from_submodules-toggle" onclick="return toggle('_get_docs_from_submodules');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docbuilder-module.html#_get_docs_from_submodules">_get_docs_from_submodules</a><tt class="py-op">(</tt><tt class="py-param">item</tt><tt class="py [...]
+</div><div id="_get_docs_from_submodules-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_get_docs_from_submodules-expanded"><a name="L563"></a><tt class="py-lineno"> 563</tt>  <tt class="py-line">    <tt class="py-comment"># Extract the package's __path__.</tt> </tt>
+<a name="L564"></a><tt class="py-lineno"> 564</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">pkg_docs</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt id="link-281" class="py-name"><a title="epydoc.apidoc.ModuleDoc" class="py-name" href="#" onclick="return doclink('link-281', 'ModuleDoc', 'link-134');">ModuleD [...]
+<a name="L565"></a><tt class="py-lineno"> 565</tt>  <tt class="py-line">        <tt class="py-name">pkg_path</tt> <tt class="py-op">=</tt> <tt class="py-name">pkg_docs</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-283" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-283', 'path', 'link-0');">path</a></tt> </tt>
+<a name="L566"></a><tt class="py-lineno"> 566</tt>  <tt class="py-line">        <tt class="py-name">package_dir</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-284" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-284', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-name">pkg_docs</tt><tt class="py-op">[< [...]
+<a name="L567"></a><tt class="py-lineno"> 567</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">pkg_docs</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt id="link-286" class="py-name"><a title="epydoc.apidoc.ModuleDoc" class="py-name" href="#" onclick="return doclink('link-286', 'ModuleDoc', 'link-134');">ModuleDoc</a></tt><tt class="py-o [...]
+<a name="L568"></a><tt class="py-lineno"> 568</tt>  <tt class="py-line">        <tt class="py-name">pkg_path</tt> <tt class="py-op">=</tt> <tt class="py-name">pkg_docs</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-288" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-288', 'path', 'link-0');">path</a></tt> </tt>
+<a name="L569"></a><tt class="py-lineno"> 569</tt>  <tt class="py-line">        <tt class="py-name">package_dir</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-289" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-289', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-name">pkg_docs</tt><tt class="py-op">[< [...]
+<a name="L570"></a><tt class="py-lineno"> 570</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L571"></a><tt class="py-lineno"> 571</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L572"></a><tt class="py-lineno"> 572</tt>  <tt class="py-line"> </tt>
+<a name="L573"></a><tt class="py-lineno"> 573</tt>  <tt class="py-line">    <tt class="py-name">module_filenames</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L574"></a><tt class="py-lineno"> 574</tt>  <tt class="py-line">    <tt class="py-name">subpackage_dirs</tt> <tt class="py-op">=</tt> <tt class="py-name">set</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L575"></a><tt class="py-lineno"> 575</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">subdir</tt> <tt class="py-keyword">in</tt> <tt class="py-name">pkg_path</tt><tt class="py-op">:</tt> </tt>
+<a name="L576"></a><tt class="py-lineno"> 576</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-291" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-291', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt class="py-name">isdir</tt><tt class="py-op">(</tt><tt class="py-name">subdir</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L577"></a><tt class="py-lineno"> 577</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt id="link-292" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-292', 'name', 'link-24');">name</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">listdir</tt><tt class="py-op">(</tt><tt class="py-name">subdir</tt><tt class="py-op">)</tt><tt class=" [...]
+<a name="L578"></a><tt class="py-lineno"> 578</tt>  <tt class="py-line">                <tt id="link-293" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-293', 'filename', 'link-230');">filename</a></tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-294" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-294', 'path', 'l [...]
+<a name="L579"></a><tt class="py-lineno"> 579</tt>  <tt class="py-line">                <tt class="py-comment"># Is it a valid module filename?</tt> </tt>
+<a name="L580"></a><tt class="py-lineno"> 580</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-keyword">if</tt> <tt id="link-296" class="py-name"><a title="epydoc.util.is_module_file" class="py-name" href="#" onclick="return doclink('link-296', 'is_module_file', 'link-152');">is_module_file</a></tt><tt class="py-op">(</tt><tt id="link-297" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link- [...]
+<a name="L581"></a><tt class="py-lineno"> 581</tt>  <tt class="py-line">                    <tt class="py-name">basename</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-298" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-298', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt class="py-name">splitext</tt><tt class="py-op">(</tt><tt id="link-299" class="py-name"><a titl [...]
+<a name="L582"></a><tt class="py-lineno"> 582</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-300" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-300', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-name">basename</tt><tt class="py-op">)</tt><tt class="py-o [...]
+<a name="L583"></a><tt class="py-lineno"> 583</tt>  <tt class="py-line">                        <tt class="py-name">module_filenames</tt><tt class="py-op">[</tt><tt class="py-name">basename</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-301" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-301', 'filename', 'link-230');">filename</a></tt> </tt>
+<a name="L584"></a><tt class="py-lineno"> 584</tt>  <tt class="py-line">                <tt class="py-comment"># Is it a valid package filename?</tt> </tt>
+<a name="L585"></a><tt class="py-lineno"> 585</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-keyword">if</tt> <tt id="link-302" class="py-name"><a title="epydoc.util.is_package_dir" class="py-name" href="#" onclick="return doclink('link-302', 'is_package_dir', 'link-154');">is_package_dir</a></tt><tt class="py-op">(</tt><tt id="link-303" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link- [...]
+<a name="L586"></a><tt class="py-lineno"> 586</tt>  <tt class="py-line">                    <tt class="py-name">subpackage_dirs</tt><tt class="py-op">.</tt><tt class="py-name">add</tt><tt class="py-op">(</tt><tt id="link-304" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-304', 'filename', 'link-230');">filename</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L587"></a><tt class="py-lineno"> 587</tt>  <tt class="py-line"> </tt>
+<a name="L588"></a><tt class="py-lineno"> 588</tt>  <tt class="py-line">    <tt class="py-comment"># Update our estimate of the number of modules in this package.</tt> </tt>
+<a name="L589"></a><tt class="py-lineno"> 589</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">progress_estimator</tt><tt class="py-op">.</tt><tt id="link-305" class="py-name" targets="Method epydoc.docbuilder._ProgressEstimator.revise_estimate()=epydoc.docbuilder._ProgressEstimator-class.html#revise_estimate"><a title="epydoc.docbuilder._ProgressEstimator.revise_estimate" class="py-name" href="#" onclick="return doclink('link-305', 'revise_estimate', 'link-3 [...]
+<a name="L590"></a><tt class="py-lineno"> 590</tt>  <tt class="py-line">                                       <tt class="py-name">subpackage_dirs</tt><tt class="py-op">)</tt> </tt>
+<a name="L591"></a><tt class="py-lineno"> 591</tt>  <tt class="py-line"> </tt>
+<a name="L592"></a><tt class="py-lineno"> 592</tt>  <tt class="py-line">    <tt class="py-name">docs</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">pkg_docs</tt><tt class="py-op">]</tt> </tt>
+<a name="L593"></a><tt class="py-lineno"> 593</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">module_filename</tt> <tt class="py-keyword">in</tt> <tt class="py-name">module_filenames</tt><tt class="py-op">.</tt><tt class="py-name">values</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L594"></a><tt class="py-lineno"> 594</tt>  <tt class="py-line">        <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt id="link-306" class="py-name"><a title="epydoc.docbuilder._get_docs_from_module_file" class="py-name" href="#" onclick="return doclink('link-306', '_get_docs_from_module_file', 'link-153');">_get_docs_from_module_file</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L595"></a><tt class="py-lineno"> 595</tt>  <tt class="py-line">            <tt class="py-name">module_filename</tt><tt class="py-op">,</tt> <tt class="py-name">options</tt><tt class="py-op">,</tt> <tt class="py-name">progress_estimator</tt><tt class="py-op">,</tt> <tt class="py-name">pkg_docs</tt><tt class="py-op">)</tt> </tt>
+<a name="L596"></a><tt class="py-lineno"> 596</tt>  <tt class="py-line">        <tt class="py-name">docs</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">d</tt><tt class="py-op">)</tt> </tt>
+<a name="L597"></a><tt class="py-lineno"> 597</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">subpackage_dir</tt> <tt class="py-keyword">in</tt> <tt class="py-name">subpackage_dirs</tt><tt class="py-op">:</tt> </tt>
+<a name="L598"></a><tt class="py-lineno"> 598</tt>  <tt class="py-line">        <tt class="py-name">subpackage_file</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-307" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-307', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">subpackage_dir</tt><tt class=" [...]
+<a name="L599"></a><tt class="py-lineno"> 599</tt>  <tt class="py-line">        <tt class="py-name">docs</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-308" class="py-name"><a title="epydoc.docbuilder._get_docs_from_module_file" class="py-name" href="#" onclick="return doclink('link-308', '_get_docs_from_module_file', 'link-153');">_get_docs_from_module_file</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L600"></a><tt class="py-lineno"> 600</tt>  <tt class="py-line">            <tt class="py-name">subpackage_file</tt><tt class="py-op">,</tt> <tt class="py-name">options</tt><tt class="py-op">,</tt> <tt class="py-name">progress_estimator</tt><tt class="py-op">,</tt> <tt class="py-name">pkg_docs</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L601"></a><tt class="py-lineno"> 601</tt>  <tt class="py-line">        <tt class="py-name">docs</tt> <tt class="py-op">+=</tt> <tt id="link-309" class="py-name"><a title="epydoc.docbuilder._get_docs_from_submodules" class="py-name" href="#" onclick="return doclink('link-309', '_get_docs_from_submodules', 'link-181');">_get_docs_from_submodules</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L602"></a><tt class="py-lineno"> 602</tt>  <tt class="py-line">            <tt class="py-name">subpackage_dir</tt><tt class="py-op">,</tt> <tt class="py-name">docs</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">options</tt><tt class="py-op">,</tt> <tt class="py-name">progress_estimator</tt><tt class="py-op">)</tt> </tt>
+<a name="L603"></a><tt class="py-lineno"> 603</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">docs</tt> </tt>
+</div><a name="L604"></a><tt class="py-lineno"> 604</tt>  <tt class="py-line"> </tt>
+<a name="_report_errors"></a><div id="_report_errors-def"><a name="L605"></a><tt class="py-lineno"> 605</tt> <a class="py-toggle" href="#" id="_report_errors-toggle" onclick="return toggle('_report_errors');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docbuilder-module.html#_report_errors">_report_errors</a><tt class="py-op">(</tt><tt class="py-param">name</tt><tt class="py-op">,</tt> <tt class="py-param">introspect_doc</tt><tt class="py- [...]
+<a name="L606"></a><tt class="py-lineno"> 606</tt>  <tt class="py-line">                   <tt class="py-param">introspect_error</tt><tt class="py-op">,</tt> <tt class="py-param">parse_error</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_report_errors-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_report_errors-expanded"><a name="L607"></a><tt class="py-lineno"> 607</tt>  <tt class="py-line">    <tt class="py-name">hdr</tt> <tt class="py-op">=</tt> <tt class="py-string">'In %s:\n'</tt> <tt class="py-op">%</tt> <tt id="link-310" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-310', 'name', 'link-24');">name</a></tt> </tt>
+<a name="L608"></a><tt class="py-lineno"> 608</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">introspect_doc</tt> <tt class="py-op">==</tt> <tt class="py-name">parse_doc</tt> <tt class="py-op">==</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L609"></a><tt class="py-lineno"> 609</tt>  <tt class="py-line">        <tt id="link-311" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-311', 'log', 'link-14');">log</a></tt><tt class="py-op">.</tt><tt id="link-312" class="py-name" targets="Method epydoc.cli.ConsoleLogger.start_block()=epydoc.cli.ConsoleLogger-class.html#start_block,Method epydoc.cli.HTMLLogger.start_block()=epydoc.cli.HTMLLogger-class.html#start_block,Method epydoc.gui.GUILogger.start_block()=epydoc.gui.GUILogger-class.html#start_block,Method epydoc.log.Logger.start_bloc [...]
+epydoc.cli.HTMLLogger.start_block
+epydoc.gui.GUILogger.start_block
+epydoc.log.Logger.start_block
+epydoc.log.start_block" class="py-name" href="#" onclick="return doclink('link-312', 'start_block', 'link-312');">start_block</a></tt><tt class="py-op">(</tt><tt class="py-string">'%sNo documentation available!'</tt> <tt class="py-op">%</tt> <tt class="py-name">hdr</tt><tt class="py-op">)</tt> </tt>
+<a name="L610"></a><tt class="py-lineno"> 610</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">introspect_error</tt><tt class="py-op">:</tt> </tt>
+<a name="L611"></a><tt class="py-lineno"> 611</tt>  <tt class="py-line">            <tt id="link-313" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-313', 'log', 'link-14');">log</a></tt><tt class="py-op">.</tt><tt id="link-314" class="py-name"><a title="epydoc.log.error" class="py-name" href="#" onclick="return doclink('link-314', 'error', 'link-22');">error</a></tt><tt class="py-op">(</tt><tt class="py-string">'Import failed:\n%s'</tt> <tt class="py-op">%</tt> <tt class="py-name">introspect_error</tt><tt class="py-op">)</tt> </tt>
+<a name="L612"></a><tt class="py-lineno"> 612</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">parse_error</tt><tt class="py-op">:</tt> </tt>
+<a name="L613"></a><tt class="py-lineno"> 613</tt>  <tt class="py-line">            <tt id="link-315" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-315', 'log', 'link-14');">log</a></tt><tt class="py-op">.</tt><tt id="link-316" class="py-name"><a title="epydoc.log.error" class="py-name" href="#" onclick="return doclink('link-316', 'error', 'link-22');">error</a></tt><tt class="py-op">(</tt><tt class="py-string">'Source code parsing failed:\n%s'</tt> <tt class="py-op">%</tt> <tt class="py-name">parse_error</tt><tt class="py-op">)</tt> </tt>
+<a name="L614"></a><tt class="py-lineno"> 614</tt>  <tt class="py-line">        <tt id="link-317" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-317', 'log', 'link-14');">log</a></tt><tt class="py-op">.</tt><tt id="link-318" class="py-name" targets="Method epydoc.cli.ConsoleLogger.end_block()=epydoc.cli.ConsoleLogger-class.html#end_block,Method epydoc.cli.HTMLLogger.end_block()=epydoc.cli.HTMLLogger-class.html#end_block,Method epydoc.gui.GUILogger.end_block()=epydoc.gui.GUILogger-class.html#end_block,Method epydoc.log.Logger.end_block()=epydoc.log [...]
+epydoc.cli.HTMLLogger.end_block
+epydoc.gui.GUILogger.end_block
+epydoc.log.Logger.end_block
+epydoc.log.end_block" class="py-name" href="#" onclick="return doclink('link-318', 'end_block', 'link-318');">end_block</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L615"></a><tt class="py-lineno"> 615</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">introspect_error</tt><tt class="py-op">:</tt> </tt>
+<a name="L616"></a><tt class="py-lineno"> 616</tt>  <tt class="py-line">        <tt id="link-319" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-319', 'log', 'link-14');">log</a></tt><tt class="py-op">.</tt><tt id="link-320" class="py-name"><a title="epydoc.cli.ConsoleLogger.start_block
+epydoc.cli.HTMLLogger.start_block
+epydoc.gui.GUILogger.start_block
+epydoc.log.Logger.start_block
+epydoc.log.start_block" class="py-name" href="#" onclick="return doclink('link-320', 'start_block', 'link-312');">start_block</a></tt><tt class="py-op">(</tt><tt class="py-string">'%sImport failed (but source code parsing '</tt> </tt>
+<a name="L617"></a><tt class="py-lineno"> 617</tt>  <tt class="py-line">                        <tt class="py-string">'was successful).'</tt> <tt class="py-op">%</tt> <tt class="py-name">hdr</tt><tt class="py-op">)</tt> </tt>
+<a name="L618"></a><tt class="py-lineno"> 618</tt>  <tt class="py-line">        <tt id="link-321" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-321', 'log', 'link-14');">log</a></tt><tt class="py-op">.</tt><tt id="link-322" class="py-name"><a title="epydoc.log.error" class="py-name" href="#" onclick="return doclink('link-322', 'error', 'link-22');">error</a></tt><tt class="py-op">(</tt><tt class="py-name">introspect_error</tt><tt class="py-op">)</tt> </tt>
+<a name="L619"></a><tt class="py-lineno"> 619</tt>  <tt class="py-line">        <tt id="link-323" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-323', 'log', 'link-14');">log</a></tt><tt class="py-op">.</tt><tt id="link-324" class="py-name"><a title="epydoc.cli.ConsoleLogger.end_block
+epydoc.cli.HTMLLogger.end_block
+epydoc.gui.GUILogger.end_block
+epydoc.log.Logger.end_block
+epydoc.log.end_block" class="py-name" href="#" onclick="return doclink('link-324', 'end_block', 'link-318');">end_block</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L620"></a><tt class="py-lineno"> 620</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">parse_error</tt><tt class="py-op">:</tt> </tt>
+<a name="L621"></a><tt class="py-lineno"> 621</tt>  <tt class="py-line">        <tt id="link-325" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-325', 'log', 'link-14');">log</a></tt><tt class="py-op">.</tt><tt id="link-326" class="py-name"><a title="epydoc.cli.ConsoleLogger.start_block
+epydoc.cli.HTMLLogger.start_block
+epydoc.gui.GUILogger.start_block
+epydoc.log.Logger.start_block
+epydoc.log.start_block" class="py-name" href="#" onclick="return doclink('link-326', 'start_block', 'link-312');">start_block</a></tt><tt class="py-op">(</tt><tt class="py-string">'%sSource code parsing failed (but '</tt> </tt>
+<a name="L622"></a><tt class="py-lineno"> 622</tt>  <tt class="py-line">                        <tt class="py-string">'introspection was successful).'</tt> <tt class="py-op">%</tt> <tt class="py-name">hdr</tt><tt class="py-op">)</tt> </tt>
+<a name="L623"></a><tt class="py-lineno"> 623</tt>  <tt class="py-line">        <tt id="link-327" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-327', 'log', 'link-14');">log</a></tt><tt class="py-op">.</tt><tt id="link-328" class="py-name"><a title="epydoc.log.error" class="py-name" href="#" onclick="return doclink('link-328', 'error', 'link-22');">error</a></tt><tt class="py-op">(</tt><tt class="py-name">parse_error</tt><tt class="py-op">)</tt> </tt>
+<a name="L624"></a><tt class="py-lineno"> 624</tt>  <tt class="py-line">        <tt id="link-329" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-329', 'log', 'link-14');">log</a></tt><tt class="py-op">.</tt><tt id="link-330" class="py-name"><a title="epydoc.cli.ConsoleLogger.end_block
+epydoc.cli.HTMLLogger.end_block
+epydoc.gui.GUILogger.end_block
+epydoc.log.Logger.end_block
+epydoc.log.end_block" class="py-name" href="#" onclick="return doclink('link-330', 'end_block', 'link-318');">end_block</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L625"></a><tt class="py-lineno"> 625</tt>  <tt class="py-line"> </tt>
+<a name="L626"></a><tt class="py-lineno"> 626</tt>  <tt class="py-line"> </tt>
+<a name="L627"></a><tt class="py-lineno"> 627</tt>  <tt class="py-line"><tt class="py-comment">#/////////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L628"></a><tt class="py-lineno"> 628</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Progress Estimation (for Documentation Generation)</tt> </tt>
+<a name="L629"></a><tt class="py-lineno"> 629</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#/////////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L630"></a><tt class="py-lineno"> 630</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="_ProgressEstimator"></a><div id="_ProgressEstimator-def"><a name="L631"></a><tt class="py-lineno"> 631</tt> <a class="py-toggle" href="#" id="_ProgressEstimator-toggle" onclick="return toggle('_ProgressEstimator');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="epydoc.docbuilder._ProgressEstimator-class.html">_ProgressEstimator</a><tt class="py-op">:</tt> </tt>
+</div><div id="_ProgressEstimator-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_ProgressEstimator-expanded"><a name="L632"></a><tt class="py-lineno"> 632</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L633"></a><tt class="py-lineno"> 633</tt>  <tt class="py-line"><tt class="py-docstring">    Used to keep track of progress when generating the initial docs</tt> </tt>
+<a name="L634"></a><tt class="py-lineno"> 634</tt>  <tt class="py-line"><tt class="py-docstring">    for the given items.  (It is not known in advance how many items a</tt> </tt>
+<a name="L635"></a><tt class="py-lineno"> 635</tt>  <tt class="py-line"><tt class="py-docstring">    package directory will contain, since it might depend on those</tt> </tt>
+<a name="L636"></a><tt class="py-lineno"> 636</tt>  <tt class="py-line"><tt class="py-docstring">    packages' __path__ values.)</tt> </tt>
+<a name="L637"></a><tt class="py-lineno"> 637</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="_ProgressEstimator.__init__"></a><div id="_ProgressEstimator.__init__-def"><a name="L638"></a><tt class="py-lineno"> 638</tt> <a class="py-toggle" href="#" id="_ProgressEstimator.__init__-toggle" onclick="return toggle('_ProgressEstimator.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docbuilder._ProgressEstimator-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op" [...]
+</div><div id="_ProgressEstimator.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ProgressEstimator.__init__-expanded"><a name="L639"></a><tt class="py-lineno"> 639</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">est_totals</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L640"></a><tt class="py-lineno"> 640</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">complete</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L641"></a><tt class="py-lineno"> 641</tt>  <tt class="py-line">         </tt>
+<a name="L642"></a><tt class="py-lineno"> 642</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">item</tt> <tt class="py-keyword">in</tt> <tt class="py-name">items</tt><tt class="py-op">:</tt> </tt>
+<a name="L643"></a><tt class="py-lineno"> 643</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt id="link-331" class="py-name"><a title="epydoc.util.is_package_dir" class="py-name" href="#" onclick="return doclink('link-331', 'is_package_dir', 'link-154');">is_package_dir</a></tt><tt class="py-op">(</tt><tt class="py-name">item</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L644"></a><tt class="py-lineno"> 644</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">est_totals</tt><tt class="py-op">[</tt><tt class="py-name">item</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-332" class="py-name" targets="Method epydoc.docbuilder._ProgressEstimator._est_pkg_modules()=epydoc.docbuilder._ProgressEstimator-class.html#_est_p [...]
+<a name="L645"></a><tt class="py-lineno"> 645</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L646"></a><tt class="py-lineno"> 646</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">est_totals</tt><tt class="py-op">[</tt><tt class="py-name">item</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+</div><a name="L647"></a><tt class="py-lineno"> 647</tt>  <tt class="py-line"> </tt>
+<a name="_ProgressEstimator.progress"></a><div id="_ProgressEstimator.progress-def"><a name="L648"></a><tt class="py-lineno"> 648</tt> <a class="py-toggle" href="#" id="_ProgressEstimator.progress-toggle" onclick="return toggle('_ProgressEstimator.progress');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docbuilder._ProgressEstimator-class.html#progress">progress</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op" [...]
+</div><div id="_ProgressEstimator.progress-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ProgressEstimator.progress-expanded"><a name="L649"></a><tt class="py-lineno"> 649</tt>  <tt class="py-line">        <tt class="py-name">total</tt> <tt class="py-op">=</tt> <tt class="py-name">sum</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">est_totals</tt><tt class="py-op">.</tt><tt class="py-name">values</tt><tt [...]
+<a name="L650"></a><tt class="py-lineno"> 650</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">float</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">complete</tt><tt class="py-op">)</tt> <tt class="py-op">/</tt> <tt class="py-name">total</tt> </tt>
+</div><a name="L651"></a><tt class="py-lineno"> 651</tt>  <tt class="py-line"> </tt>
+<a name="_ProgressEstimator.revise_estimate"></a><div id="_ProgressEstimator.revise_estimate-def"><a name="L652"></a><tt class="py-lineno"> 652</tt> <a class="py-toggle" href="#" id="_ProgressEstimator.revise_estimate-toggle" onclick="return toggle('_ProgressEstimator.revise_estimate');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docbuilder._ProgressEstimator-class.html#revise_estimate">revise_estimate</a><tt class="py-op">(</tt><tt c [...]
+</div><div id="_ProgressEstimator.revise_estimate-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ProgressEstimator.revise_estimate-expanded"><a name="L653"></a><tt class="py-lineno"> 653</tt>  <tt class="py-line">        <tt class="py-keyword">del</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">est_totals</tt><tt class="py-op">[</tt><tt class="py-name">pkg_item</tt><tt class="py-op">]</tt> </tt>
+<a name="L654"></a><tt class="py-lineno"> 654</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">item</tt> <tt class="py-keyword">in</tt> <tt class="py-name">modules</tt><tt class="py-op">:</tt> </tt>
+<a name="L655"></a><tt class="py-lineno"> 655</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">est_totals</tt><tt class="py-op">[</tt><tt class="py-name">item</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L656"></a><tt class="py-lineno"> 656</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">item</tt> <tt class="py-keyword">in</tt> <tt class="py-name">subpackages</tt><tt class="py-op">:</tt> </tt>
+<a name="L657"></a><tt class="py-lineno"> 657</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">est_totals</tt><tt class="py-op">[</tt><tt class="py-name">item</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-333" class="py-name"><a title="epydoc.docbuilder._ProgressEstimator._est_pkg_modules" class="py-name" href="#" onclick="return doclink('link-333', '_es [...]
+</div><a name="L658"></a><tt class="py-lineno"> 658</tt>  <tt class="py-line"> </tt>
+<a name="_ProgressEstimator._est_pkg_modules"></a><div id="_ProgressEstimator._est_pkg_modules-def"><a name="L659"></a><tt class="py-lineno"> 659</tt> <a class="py-toggle" href="#" id="_ProgressEstimator._est_pkg_modules-toggle" onclick="return toggle('_ProgressEstimator._est_pkg_modules');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docbuilder._ProgressEstimator-class.html#_est_pkg_modules">_est_pkg_modules</a><tt class="py-op">(</tt [...]
+</div><div id="_ProgressEstimator._est_pkg_modules-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ProgressEstimator._est_pkg_modules-expanded"><a name="L660"></a><tt class="py-lineno"> 660</tt>  <tt class="py-line">        <tt class="py-name">num_items</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L661"></a><tt class="py-lineno"> 661</tt>  <tt class="py-line">         </tt>
+<a name="L662"></a><tt class="py-lineno"> 662</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-334" class="py-name"><a title="epydoc.util.is_package_dir" class="py-name" href="#" onclick="return doclink('link-334', 'is_package_dir', 'link-154');">is_package_dir</a></tt><tt class="py-op">(</tt><tt class="py-name">package_dir</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L663"></a><tt class="py-lineno"> 663</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt id="link-335" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-335', 'name', 'link-24');">name</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">listdir</tt><tt class="py-op">(</tt><tt class="py-name">package_dir</tt><tt class="py-op">)</tt><tt cl [...]
+<a name="L664"></a><tt class="py-lineno"> 664</tt>  <tt class="py-line">                <tt id="link-336" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-336', 'filename', 'link-230');">filename</a></tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-337" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-337', 'path', 'l [...]
+<a name="L665"></a><tt class="py-lineno"> 665</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt id="link-339" class="py-name"><a title="epydoc.util.is_module_file" class="py-name" href="#" onclick="return doclink('link-339', 'is_module_file', 'link-152');">is_module_file</a></tt><tt class="py-op">(</tt><tt id="link-340" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-340', 'filename', 'link-230' [...]
+<a name="L666"></a><tt class="py-lineno"> 666</tt>  <tt class="py-line">                    <tt class="py-name">num_items</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L667"></a><tt class="py-lineno"> 667</tt>  <tt class="py-line">                <tt class="py-keyword">elif</tt> <tt id="link-341" class="py-name"><a title="epydoc.util.is_package_dir" class="py-name" href="#" onclick="return doclink('link-341', 'is_package_dir', 'link-154');">is_package_dir</a></tt><tt class="py-op">(</tt><tt id="link-342" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-342', 'filename', 'link-23 [...]
+<a name="L668"></a><tt class="py-lineno"> 668</tt>  <tt class="py-line">                    <tt class="py-name">num_items</tt> <tt class="py-op">+=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-343" class="py-name"><a title="epydoc.docbuilder._ProgressEstimator._est_pkg_modules" class="py-name" href="#" onclick="return doclink('link-343', '_est_pkg_modules', 'link-332');">_est_pkg_modules</a></tt><tt class="py-op">(</tt><tt id="link-344" class="py-name"><a title= [...]
+<a name="L669"></a><tt class="py-lineno"> 669</tt>  <tt class="py-line">                     </tt>
+<a name="L670"></a><tt class="py-lineno"> 670</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">num_items</tt> </tt>
+</div></div><a name="L671"></a><tt class="py-lineno"> 671</tt>  <tt class="py-line">         </tt>
+<a name="L672"></a><tt class="py-lineno"> 672</tt>  <tt class="py-line"><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L673"></a><tt class="py-lineno"> 673</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## Doc Merger</tt> </tt>
+<a name="L674"></a><tt class="py-lineno"> 674</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L675"></a><tt class="py-lineno"> 675</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L676"></a><tt class="py-lineno"> 676</tt>  <tt class="py-line"><tt id="link-345" class="py-name" targets="Variable epydoc.docbuilder.MERGE_PRECEDENCE=epydoc.docbuilder-module.html#MERGE_PRECEDENCE"><a title="epydoc.docbuilder.MERGE_PRECEDENCE" class="py-name" href="#" onclick="return doclink('link-345', 'MERGE_PRECEDENCE', 'link-345');">MERGE_PRECEDENCE</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
+<a name="L677"></a><tt class="py-lineno"> 677</tt>  <tt class="py-line">    <tt class="py-string">'repr'</tt><tt class="py-op">:</tt> <tt class="py-string">'parse'</tt><tt class="py-op">,</tt> </tt>
+<a name="L678"></a><tt class="py-lineno"> 678</tt>  <tt class="py-line"> </tt>
+<a name="L679"></a><tt class="py-lineno"> 679</tt>  <tt class="py-line">    <tt class="py-comment"># The names we get from introspection match the names that users</tt> </tt>
+<a name="L680"></a><tt class="py-lineno"> 680</tt>  <tt class="py-line">    <tt class="py-comment"># can actually use -- i.e., they take magic into account.</tt> </tt>
+<a name="L681"></a><tt class="py-lineno"> 681</tt>  <tt class="py-line">    <tt class="py-string">'canonical_name'</tt><tt class="py-op">:</tt> <tt class="py-string">'introspect'</tt><tt class="py-op">,</tt> </tt>
+<a name="L682"></a><tt class="py-lineno"> 682</tt>  <tt class="py-line"> </tt>
+<a name="L683"></a><tt class="py-lineno"> 683</tt>  <tt class="py-line">    <tt class="py-comment"># Only fall-back on the parser for is_imported if the introspecter</tt> </tt>
+<a name="L684"></a><tt class="py-lineno"> 684</tt>  <tt class="py-line">    <tt class="py-comment"># isn't sure.  Otherwise, we can end up thinking that vars</tt> </tt>
+<a name="L685"></a><tt class="py-lineno"> 685</tt>  <tt class="py-line">    <tt class="py-comment"># containing modules are not imported, which can cause external</tt> </tt>
+<a name="L686"></a><tt class="py-lineno"> 686</tt>  <tt class="py-line">    <tt class="py-comment"># modules to show up in the docs (sf bug #1653486)</tt> </tt>
+<a name="L687"></a><tt class="py-lineno"> 687</tt>  <tt class="py-line">    <tt class="py-string">'is_imported'</tt><tt class="py-op">:</tt> <tt class="py-string">'introspect'</tt><tt class="py-op">,</tt> </tt>
+<a name="L688"></a><tt class="py-lineno"> 688</tt>  <tt class="py-line"> </tt>
+<a name="L689"></a><tt class="py-lineno"> 689</tt>  <tt class="py-line">    <tt class="py-comment"># The parser can tell if an assignment creates an alias or not.</tt> </tt>
+<a name="L690"></a><tt class="py-lineno"> 690</tt>  <tt class="py-line">    <tt class="py-string">'is_alias'</tt><tt class="py-op">:</tt> <tt class="py-string">'parse'</tt><tt class="py-op">,</tt> </tt>
+<a name="L691"></a><tt class="py-lineno"> 691</tt>  <tt class="py-line"> </tt>
+<a name="L692"></a><tt class="py-lineno"> 692</tt>  <tt class="py-line">    <tt class="py-comment"># The parser is better able to determine what text file something</tt> </tt>
+<a name="L693"></a><tt class="py-lineno"> 693</tt>  <tt class="py-line">    <tt class="py-comment"># came from; e.g., it can't be fooled by 'covert' imports.</tt> </tt>
+<a name="L694"></a><tt class="py-lineno"> 694</tt>  <tt class="py-line">    <tt class="py-string">'docformat'</tt><tt class="py-op">:</tt> <tt class="py-string">'parse'</tt><tt class="py-op">,</tt> </tt>
+<a name="L695"></a><tt class="py-lineno"> 695</tt>  <tt class="py-line"> </tt>
+<a name="L696"></a><tt class="py-lineno"> 696</tt>  <tt class="py-line">    <tt class="py-comment"># The parse should be able to tell definitively whether a module</tt> </tt>
+<a name="L697"></a><tt class="py-lineno"> 697</tt>  <tt class="py-line">    <tt class="py-comment"># is a package or not.</tt> </tt>
+<a name="L698"></a><tt class="py-lineno"> 698</tt>  <tt class="py-line">    <tt class="py-string">'is_package'</tt><tt class="py-op">:</tt> <tt class="py-string">'parse'</tt><tt class="py-op">,</tt> </tt>
+<a name="L699"></a><tt class="py-lineno"> 699</tt>  <tt class="py-line"> </tt>
+<a name="L700"></a><tt class="py-lineno"> 700</tt>  <tt class="py-line">    <tt class="py-comment"># Extract the sort spec from the order in which values are defined</tt> </tt>
+<a name="L701"></a><tt class="py-lineno"> 701</tt>  <tt class="py-line">    <tt class="py-comment"># in the source file.</tt> </tt>
+<a name="L702"></a><tt class="py-lineno"> 702</tt>  <tt class="py-line">    <tt class="py-string">'sort_spec'</tt><tt class="py-op">:</tt> <tt class="py-string">'parse'</tt><tt class="py-op">,</tt> </tt>
+<a name="L703"></a><tt class="py-lineno"> 703</tt>  <tt class="py-line">     </tt>
+<a name="L704"></a><tt class="py-lineno"> 704</tt>  <tt class="py-line">    <tt class="py-string">'submodules'</tt><tt class="py-op">:</tt> <tt class="py-string">'introspect'</tt><tt class="py-op">,</tt> </tt>
+<a name="L705"></a><tt class="py-lineno"> 705</tt>  <tt class="py-line"> </tt>
+<a name="L706"></a><tt class="py-lineno"> 706</tt>  <tt class="py-line">    <tt class="py-comment"># The filename used by 'parse' is the source file.</tt> </tt>
+<a name="L707"></a><tt class="py-lineno"> 707</tt>  <tt class="py-line">    <tt class="py-string">'filename'</tt><tt class="py-op">:</tt> <tt class="py-string">'parse'</tt><tt class="py-op">,</tt> </tt>
+<a name="L708"></a><tt class="py-lineno"> 708</tt>  <tt class="py-line"> </tt>
+<a name="L709"></a><tt class="py-lineno"> 709</tt>  <tt class="py-line">    <tt class="py-comment"># 'parse' is more likely to get the encoding right, but</tt> </tt>
+<a name="L710"></a><tt class="py-lineno"> 710</tt>  <tt class="py-line">    <tt class="py-comment"># 'introspect' will handle programatically generated docstrings.</tt> </tt>
+<a name="L711"></a><tt class="py-lineno"> 711</tt>  <tt class="py-line">    <tt class="py-comment"># Which is better?</tt> </tt>
+<a name="L712"></a><tt class="py-lineno"> 712</tt>  <tt class="py-line">    <tt class="py-string">'docstring'</tt><tt class="py-op">:</tt> <tt class="py-string">'introspect'</tt><tt class="py-op">,</tt> </tt>
+<a name="L713"></a><tt class="py-lineno"> 713</tt>  <tt class="py-line">    <tt class="py-op">}</tt> </tt>
+<a name="L714"></a><tt class="py-lineno"> 714</tt>  <tt class="py-line"><tt class="py-string">"""Indicates whether information from introspection or parsing should be</tt> </tt>
+<a name="L715"></a><tt class="py-lineno"> 715</tt>  <tt class="py-line"><tt class="py-string">given precedence, for specific attributes.  This dictionary maps from</tt> </tt>
+<a name="L716"></a><tt class="py-lineno"> 716</tt>  <tt class="py-line"><tt class="py-string">attribute names to either C{'introspect'} or C{'parse'}."""</tt> </tt>
+<a name="L717"></a><tt class="py-lineno"> 717</tt>  <tt class="py-line"> </tt>
+<a name="L718"></a><tt class="py-lineno"> 718</tt>  <tt class="py-line"><tt id="link-346" class="py-name" targets="Variable epydoc.docbuilder.DEFAULT_MERGE_PRECEDENCE=epydoc.docbuilder-module.html#DEFAULT_MERGE_PRECEDENCE"><a title="epydoc.docbuilder.DEFAULT_MERGE_PRECEDENCE" class="py-name" href="#" onclick="return doclink('link-346', 'DEFAULT_MERGE_PRECEDENCE', 'link-346');">DEFAULT_MERGE_PRECEDENCE</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'introspect'</tt> </tt>
+<a name="L719"></a><tt class="py-lineno"> 719</tt>  <tt class="py-line"><tt class="py-string">"""Indicates whether information from introspection or parsing should be</tt> </tt>
+<a name="L720"></a><tt class="py-lineno"> 720</tt>  <tt class="py-line"><tt class="py-string">given precedence.  Should be either C{'introspect'} or C{'parse'}"""</tt> </tt>
+<a name="L721"></a><tt class="py-lineno"> 721</tt>  <tt class="py-line"> </tt>
+<a name="L722"></a><tt class="py-lineno"> 722</tt>  <tt class="py-line"><tt id="link-347" class="py-name" targets="Variable epydoc.docbuilder._attribute_mergefunc_registry=epydoc.docbuilder-module.html#_attribute_mergefunc_registry"><a title="epydoc.docbuilder._attribute_mergefunc_registry" class="py-name" href="#" onclick="return doclink('link-347', '_attribute_mergefunc_registry', 'link-347');">_attribute_mergefunc_registry</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt  [...]
+<a name="register_attribute_mergefunc"></a><div id="register_attribute_mergefunc-def"><a name="L723"></a><tt class="py-lineno"> 723</tt> <a class="py-toggle" href="#" id="register_attribute_mergefunc-toggle" onclick="return toggle('register_attribute_mergefunc');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docbuilder-module.html#register_attribute_mergefunc">register_attribute_mergefunc</a><tt class="py-op">(</tt><tt class="py-param">attr [...]
+</div><div id="register_attribute_mergefunc-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="register_attribute_mergefunc-expanded"><a name="L724"></a><tt class="py-lineno"> 724</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L725"></a><tt class="py-lineno"> 725</tt>  <tt class="py-line"><tt class="py-docstring">    Register an attribute merge function.  This function will be</tt> </tt>
+<a name="L726"></a><tt class="py-lineno"> 726</tt>  <tt class="py-line"><tt class="py-docstring">    called by L{merge_docs()} when it needs to merge the attribute</tt> </tt>
+<a name="L727"></a><tt class="py-lineno"> 727</tt>  <tt class="py-line"><tt class="py-docstring">    values of two C{APIDoc}s.</tt> </tt>
+<a name="L728"></a><tt class="py-lineno"> 728</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L729"></a><tt class="py-lineno"> 729</tt>  <tt class="py-line"><tt class="py-docstring">    @param attrib: The name of the attribute whose values are merged</tt> </tt>
+<a name="L730"></a><tt class="py-lineno"> 730</tt>  <tt class="py-line"><tt class="py-docstring">    by C{mergefunc}.</tt> </tt>
+<a name="L731"></a><tt class="py-lineno"> 731</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L732"></a><tt class="py-lineno"> 732</tt>  <tt class="py-line"><tt class="py-docstring">    @param mergefunc: The merge function, whose sinature is:</tt> </tt>
+<a name="L733"></a><tt class="py-lineno"> 733</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L734"></a><tt class="py-lineno"> 734</tt>  <tt class="py-line"><tt class="py-docstring">    >>> def mergefunc(introspect_val, parse_val, precedence, cyclecheck, path):</tt> </tt>
+<a name="L735"></a><tt class="py-lineno"> 735</tt>  <tt class="py-line"><tt class="py-docstring">    ...     return calculate_merged_value(introspect_val, parse_val)</tt> </tt>
+<a name="L736"></a><tt class="py-lineno"> 736</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L737"></a><tt class="py-lineno"> 737</tt>  <tt class="py-line"><tt class="py-docstring">    Where C{introspect_val} and C{parse_val} are the two values to</tt> </tt>
+<a name="L738"></a><tt class="py-lineno"> 738</tt>  <tt class="py-line"><tt class="py-docstring">    combine; C{precedence} is a string indicating which value takes</tt> </tt>
+<a name="L739"></a><tt class="py-lineno"> 739</tt>  <tt class="py-line"><tt class="py-docstring">    precedence for this attribute (C{'introspect'} or C{'parse'});</tt> </tt>
+<a name="L740"></a><tt class="py-lineno"> 740</tt>  <tt class="py-line"><tt class="py-docstring">    C{cyclecheck} is a value used by C{merge_docs()} to make sure that</tt> </tt>
+<a name="L741"></a><tt class="py-lineno"> 741</tt>  <tt class="py-line"><tt class="py-docstring">    it only visits each pair of docs once; and C{path} is a string</tt> </tt>
+<a name="L742"></a><tt class="py-lineno"> 742</tt>  <tt class="py-line"><tt class="py-docstring">    describing the path that was taken from the root to this</tt> </tt>
+<a name="L743"></a><tt class="py-lineno"> 743</tt>  <tt class="py-line"><tt class="py-docstring">    attribute (used to generate log messages).</tt> </tt>
+<a name="L744"></a><tt class="py-lineno"> 744</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L745"></a><tt class="py-lineno"> 745</tt>  <tt class="py-line"><tt class="py-docstring">    If the merge function needs to call C{merge_docs}, then it should</tt> </tt>
+<a name="L746"></a><tt class="py-lineno"> 746</tt>  <tt class="py-line"><tt class="py-docstring">    pass C{cyclecheck} and C{path} back in.  (When appropriate, a</tt> </tt>
+<a name="L747"></a><tt class="py-lineno"> 747</tt>  <tt class="py-line"><tt class="py-docstring">    suffix should be added to C{path} to describe the path taken to</tt> </tt>
+<a name="L748"></a><tt class="py-lineno"> 748</tt>  <tt class="py-line"><tt class="py-docstring">    the merged values.)</tt> </tt>
+<a name="L749"></a><tt class="py-lineno"> 749</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L750"></a><tt class="py-lineno"> 750</tt>  <tt class="py-line">    <tt id="link-348" class="py-name"><a title="epydoc.docbuilder._attribute_mergefunc_registry" class="py-name" href="#" onclick="return doclink('link-348', '_attribute_mergefunc_registry', 'link-347');">_attribute_mergefunc_registry</a></tt><tt class="py-op">[</tt><tt class="py-name">attrib</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">mergefunc</tt> </tt>
+</div><a name="L751"></a><tt class="py-lineno"> 751</tt>  <tt class="py-line"> </tt>
+<a name="merge_docs"></a><div id="merge_docs-def"><a name="L752"></a><tt class="py-lineno"> 752</tt> <a class="py-toggle" href="#" id="merge_docs-toggle" onclick="return toggle('merge_docs');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docbuilder-module.html#merge_docs">merge_docs</a><tt class="py-op">(</tt><tt class="py-param">introspect_doc</tt><tt class="py-op">,</tt> <tt class="py-param">parse_doc</tt><tt class="py-op">,</tt> <tt clas [...]
+</div><div id="merge_docs-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="merge_docs-expanded"><a name="L753"></a><tt class="py-lineno"> 753</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L754"></a><tt class="py-lineno"> 754</tt>  <tt class="py-line"><tt class="py-docstring">    Merge the API documentation information that was obtained from</tt> </tt>
+<a name="L755"></a><tt class="py-lineno"> 755</tt>  <tt class="py-line"><tt class="py-docstring">    introspection with information that was obtained from parsing.</tt> </tt>
+<a name="L756"></a><tt class="py-lineno"> 756</tt>  <tt class="py-line"><tt class="py-docstring">    C{introspect_doc} and C{parse_doc} should be two C{APIDoc} instances</tt> </tt>
+<a name="L757"></a><tt class="py-lineno"> 757</tt>  <tt class="py-line"><tt class="py-docstring">    that describe the same object.  C{merge_docs} combines the</tt> </tt>
+<a name="L758"></a><tt class="py-lineno"> 758</tt>  <tt class="py-line"><tt class="py-docstring">    information from these two instances, and returns the merged</tt> </tt>
+<a name="L759"></a><tt class="py-lineno"> 759</tt>  <tt class="py-line"><tt class="py-docstring">    C{APIDoc}.</tt> </tt>
+<a name="L760"></a><tt class="py-lineno"> 760</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L761"></a><tt class="py-lineno"> 761</tt>  <tt class="py-line"><tt class="py-docstring">    If C{introspect_doc} and C{parse_doc} are compatible, then they will</tt> </tt>
+<a name="L762"></a><tt class="py-lineno"> 762</tt>  <tt class="py-line"><tt class="py-docstring">    be I{merged} -- i.e., they will be coerced to a common class, and</tt> </tt>
+<a name="L763"></a><tt class="py-lineno"> 763</tt>  <tt class="py-line"><tt class="py-docstring">    their state will be stored in a shared dictionary.  Once they have</tt> </tt>
+<a name="L764"></a><tt class="py-lineno"> 764</tt>  <tt class="py-line"><tt class="py-docstring">    been merged, any change made to the attributes of one will affect</tt> </tt>
+<a name="L765"></a><tt class="py-lineno"> 765</tt>  <tt class="py-line"><tt class="py-docstring">    the other.  The value for the each of the merged C{APIDoc}'s</tt> </tt>
+<a name="L766"></a><tt class="py-lineno"> 766</tt>  <tt class="py-line"><tt class="py-docstring">    attributes is formed by combining the values of the source</tt> </tt>
+<a name="L767"></a><tt class="py-lineno"> 767</tt>  <tt class="py-line"><tt class="py-docstring">    C{APIDoc}s' attributes, as follows:</tt> </tt>
+<a name="L768"></a><tt class="py-lineno"> 768</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L769"></a><tt class="py-lineno"> 769</tt>  <tt class="py-line"><tt class="py-docstring">      - If either of the source attributes' value is C{UNKNOWN}, then</tt> </tt>
+<a name="L770"></a><tt class="py-lineno"> 770</tt>  <tt class="py-line"><tt class="py-docstring">        use the other source attribute's value.</tt> </tt>
+<a name="L771"></a><tt class="py-lineno"> 771</tt>  <tt class="py-line"><tt class="py-docstring">      - Otherwise, if an attribute merge function has been registered</tt> </tt>
+<a name="L772"></a><tt class="py-lineno"> 772</tt>  <tt class="py-line"><tt class="py-docstring">        for the attribute, then use that function to calculate the</tt> </tt>
+<a name="L773"></a><tt class="py-lineno"> 773</tt>  <tt class="py-line"><tt class="py-docstring">        merged value from the two source attribute values.</tt> </tt>
+<a name="L774"></a><tt class="py-lineno"> 774</tt>  <tt class="py-line"><tt class="py-docstring">      - Otherwise, if L{MERGE_PRECEDENCE} is defined for the</tt> </tt>
+<a name="L775"></a><tt class="py-lineno"> 775</tt>  <tt class="py-line"><tt class="py-docstring">        attribute, then use the attribute value from the source that</tt> </tt>
+<a name="L776"></a><tt class="py-lineno"> 776</tt>  <tt class="py-line"><tt class="py-docstring">        it indicates.</tt> </tt>
+<a name="L777"></a><tt class="py-lineno"> 777</tt>  <tt class="py-line"><tt class="py-docstring">      - Otherwise, use the attribute value from the source indicated</tt> </tt>
+<a name="L778"></a><tt class="py-lineno"> 778</tt>  <tt class="py-line"><tt class="py-docstring">        by L{DEFAULT_MERGE_PRECEDENCE}.</tt> </tt>
+<a name="L779"></a><tt class="py-lineno"> 779</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L780"></a><tt class="py-lineno"> 780</tt>  <tt class="py-line"><tt class="py-docstring">    If C{introspect_doc} and C{parse_doc} are I{not} compatible (e.g., if</tt> </tt>
+<a name="L781"></a><tt class="py-lineno"> 781</tt>  <tt class="py-line"><tt class="py-docstring">    their values have incompatible types), then C{merge_docs()} will</tt> </tt>
+<a name="L782"></a><tt class="py-lineno"> 782</tt>  <tt class="py-line"><tt class="py-docstring">    simply return either C{introspect_doc} or C{parse_doc}, depending on</tt> </tt>
+<a name="L783"></a><tt class="py-lineno"> 783</tt>  <tt class="py-line"><tt class="py-docstring">    the value of L{DEFAULT_MERGE_PRECEDENCE}.  The two input</tt> </tt>
+<a name="L784"></a><tt class="py-lineno"> 784</tt>  <tt class="py-line"><tt class="py-docstring">    C{APIDoc}s will not be merged or modified in any way.</tt> </tt>
+<a name="L785"></a><tt class="py-lineno"> 785</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L786"></a><tt class="py-lineno"> 786</tt>  <tt class="py-line"><tt class="py-docstring">    @param cyclecheck, path: These arguments should only be provided</tt> </tt>
+<a name="L787"></a><tt class="py-lineno"> 787</tt>  <tt class="py-line"><tt class="py-docstring">        when C{merge_docs()} is called by an attribute merge</tt> </tt>
+<a name="L788"></a><tt class="py-lineno"> 788</tt>  <tt class="py-line"><tt class="py-docstring">        function.  See L{register_attribute_mergefunc()} for more</tt> </tt>
+<a name="L789"></a><tt class="py-lineno"> 789</tt>  <tt class="py-line"><tt class="py-docstring">        details.</tt> </tt>
+<a name="L790"></a><tt class="py-lineno"> 790</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L791"></a><tt class="py-lineno"> 791</tt>  <tt class="py-line">    <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">introspect_doc</tt><tt class="py-op">,</tt> <tt id="link-349" class="py-name" targets="Class epydoc.apidoc.APIDoc=epydoc.apidoc.APIDoc-class.html"><a title="epydoc.apidoc.APIDoc" class="py-name" href="#" onclick="return doclink('link-349', 'APIDoc', 'link-349');">APIDoc</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L792"></a><tt class="py-lineno"> 792</tt>  <tt class="py-line">    <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">parse_doc</tt><tt class="py-op">,</tt> <tt id="link-350" class="py-name"><a title="epydoc.apidoc.APIDoc" class="py-name" href="#" onclick="return doclink('link-350', 'APIDoc', 'link-349');">APIDoc</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L793"></a><tt class="py-lineno"> 793</tt>  <tt class="py-line"> </tt>
+<a name="L794"></a><tt class="py-lineno"> 794</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">cyclecheck</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L795"></a><tt class="py-lineno"> 795</tt>  <tt class="py-line">        <tt class="py-name">cyclecheck</tt> <tt class="py-op">=</tt> <tt class="py-name">set</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L796"></a><tt class="py-lineno"> 796</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">introspect_doc</tt><tt class="py-op">.</tt><tt id="link-351" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-351', 'canonical_name', 'link-42');">canonical_name</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-352" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-352', 'UNKNOWN', 'link-43');">UNKNOWN</a></tt><tt class="py-op">)</tt>< [...]
+<a name="L797"></a><tt class="py-lineno"> 797</tt>  <tt class="py-line">            <tt id="link-353" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-353', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'%s'</tt> <tt class="py-op">%</tt> <tt class="py-name">introspect_doc</tt><tt class="py-op">.</tt><tt id="link-354" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-354', 'canonical_name', 'link-42');">canonical_name</a></tt> </tt>
+<a name="L798"></a><tt class="py-lineno"> 798</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">parse_doc</tt><tt class="py-op">.</tt><tt id="link-355" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-355', 'canonical_name', 'link-42');">canonical_name</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-356" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-356', 'UNKNOWN', 'link-43');">UNKNOWN</a></tt><tt class="py-op">)</tt>< [...]
+<a name="L799"></a><tt class="py-lineno"> 799</tt>  <tt class="py-line">            <tt id="link-357" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-357', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'%s'</tt> <tt class="py-op">%</tt> <tt class="py-name">parse_doc</tt><tt class="py-op">.</tt><tt id="link-358" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-358', 'canonical_name', 'link-42');">canonical_name</a></tt> </tt>
+<a name="L800"></a><tt class="py-lineno"> 800</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L801"></a><tt class="py-lineno"> 801</tt>  <tt class="py-line">            <tt id="link-359" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-359', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'??'</tt> </tt>
+<a name="L802"></a><tt class="py-lineno"> 802</tt>  <tt class="py-line"> </tt>
+<a name="L803"></a><tt class="py-lineno"> 803</tt>  <tt class="py-line">    <tt class="py-comment"># If we've already examined this pair, then there's nothing</tt> </tt>
+<a name="L804"></a><tt class="py-lineno"> 804</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># more to do.  The reason that we check id's here is that we</tt> </tt>
+<a name="L805"></a><tt class="py-lineno"> 805</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># want to avoid hashing the APIDoc objects for now, so we can</tt> </tt>
+<a name="L806"></a><tt class="py-lineno"> 806</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># use APIDoc.merge_and_overwrite() later.</tt> </tt>
+<a name="L807"></a><tt class="py-lineno"> 807</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">id</tt><tt class="py-op">(</tt><tt class="py-name">introspect_doc</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">id</tt><tt class="py-op">(</tt><tt class="py-name">parse_doc</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-name">cyclechec [...]
+<a name="L808"></a><tt class="py-lineno"> 808</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">introspect_doc</tt> </tt>
+<a name="L809"></a><tt class="py-lineno"> 809</tt>  <tt class="py-line">    <tt class="py-name">cyclecheck</tt><tt class="py-op">.</tt><tt class="py-name">add</tt><tt class="py-op">(</tt> <tt class="py-op">(</tt><tt class="py-name">id</tt><tt class="py-op">(</tt><tt class="py-name">introspect_doc</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">id</tt><tt class="py-op">(</tt><tt class="py-name">parse_doc</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt cla [...]
+<a name="L810"></a><tt class="py-lineno"> 810</tt>  <tt class="py-line"> </tt>
+<a name="L811"></a><tt class="py-lineno"> 811</tt>  <tt class="py-line">    <tt class="py-comment"># If these two are already merged, then we're done.  (Two</tt> </tt>
+<a name="L812"></a><tt class="py-lineno"> 812</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># APIDoc's compare equal iff they are identical or have been</tt> </tt>
+<a name="L813"></a><tt class="py-lineno"> 813</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># merged.)</tt> </tt>
+<a name="L814"></a><tt class="py-lineno"> 814</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">introspect_doc</tt> <tt class="py-op">==</tt> <tt class="py-name">parse_doc</tt><tt class="py-op">:</tt> </tt>
+<a name="L815"></a><tt class="py-lineno"> 815</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">introspect_doc</tt> </tt>
+<a name="L816"></a><tt class="py-lineno"> 816</tt>  <tt class="py-line"> </tt>
+<a name="L817"></a><tt class="py-lineno"> 817</tt>  <tt class="py-line">    <tt class="py-comment"># If both values are GenericValueDoc, then we don't want to merge</tt> </tt>
+<a name="L818"></a><tt class="py-lineno"> 818</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># them.  E.g., we don't want to merge 2+2 with 4.  So just copy</tt> </tt>
+<a name="L819"></a><tt class="py-lineno"> 819</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># the parse_doc's parse_repr to introspect_doc, & return it.</tt> </tt>
+<a name="L820"></a><tt class="py-lineno"> 820</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># (In particular, do *not* call merge_and_overwrite.)</tt> </tt>
+<a name="L821"></a><tt class="py-lineno"> 821</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">introspect_doc</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">parse_doc</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt id="link-360" class="py-name" targets="Class epydoc.apidoc.GenericValueD [...]
+<a name="L822"></a><tt class="py-lineno"> 822</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">parse_doc</tt><tt class="py-op">.</tt><tt id="link-361" class="py-name" targets="Variable epydoc.apidoc.ValueDoc.parse_repr=epydoc.apidoc.ValueDoc-class.html#parse_repr"><a title="epydoc.apidoc.ValueDoc.parse_repr" class="py-name" href="#" onclick="return doclink('link-361', 'parse_repr', 'link-361');">parse_repr</a></tt> <tt class="py-keyword">is</tt> <tt cl [...]
+<a name="L823"></a><tt class="py-lineno"> 823</tt>  <tt class="py-line">            <tt class="py-name">introspect_doc</tt><tt class="py-op">.</tt><tt id="link-363" class="py-name"><a title="epydoc.apidoc.ValueDoc.parse_repr" class="py-name" href="#" onclick="return doclink('link-363', 'parse_repr', 'link-361');">parse_repr</a></tt> <tt class="py-op">=</tt> <tt class="py-name">parse_doc</tt><tt class="py-op">.</tt><tt id="link-364" class="py-name"><a title="epydoc.apidoc.ValueDoc.parse_r [...]
+<a name="L824"></a><tt class="py-lineno"> 824</tt>  <tt class="py-line">        <tt class="py-name">introspect_doc</tt><tt class="py-op">.</tt><tt id="link-365" class="py-name" targets="Variable epydoc.apidoc.APIDoc.docs_extracted_by=epydoc.apidoc.APIDoc-class.html#docs_extracted_by"><a title="epydoc.apidoc.APIDoc.docs_extracted_by" class="py-name" href="#" onclick="return doclink('link-365', 'docs_extracted_by', 'link-365');">docs_extracted_by</a></tt> <tt class="py-op">=</tt> <tt class [...]
+<a name="L825"></a><tt class="py-lineno"> 825</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">introspect_doc</tt> </tt>
+<a name="L826"></a><tt class="py-lineno"> 826</tt>  <tt class="py-line"> </tt>
+<a name="L827"></a><tt class="py-lineno"> 827</tt>  <tt class="py-line">    <tt class="py-comment"># Perform several sanity checks here -- if we accidentally</tt> </tt>
+<a name="L828"></a><tt class="py-lineno"> 828</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># merge values that shouldn't get merged, then bad things can</tt> </tt>
+<a name="L829"></a><tt class="py-lineno"> 829</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># happen.</tt> </tt>
+<a name="L830"></a><tt class="py-lineno"> 830</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">mismatch</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L831"></a><tt class="py-lineno"> 831</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">introspect_doc</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt> <tt class="py-op">!=</tt> <tt class="py-name">parse_doc</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L832"></a><tt class="py-lineno"> 832</tt>  <tt class="py-line">        <tt class="py-keyword">not</tt> <tt class="py-op">(</tt><tt class="py-name">issubclass</tt><tt class="py-op">(</tt><tt class="py-name">introspect_doc</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">,</tt> <tt class="py-name">parse_doc</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> </tt>
+<a name="L833"></a><tt class="py-lineno"> 833</tt>  <tt class="py-line">             <tt class="py-name">issubclass</tt><tt class="py-op">(</tt><tt class="py-name">parse_doc</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">,</tt> <tt class="py-name">introspect_doc</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L834"></a><tt class="py-lineno"> 834</tt>  <tt class="py-line">        <tt class="py-name">mismatch</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">"value types don't match -- i=%r, p=%r."</tt> <tt class="py-op">%</tt> </tt>
+<a name="L835"></a><tt class="py-lineno"> 835</tt>  <tt class="py-line">                    <tt class="py-op">(</tt><tt class="py-name">introspect_doc</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">,</tt> <tt class="py-name">parse_doc</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L836"></a><tt class="py-lineno"> 836</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">introspect_doc</tt><tt class="py-op">,</tt> <tt id="link-366" class="py-name"><a title="epydoc.apidoc.ValueDoc" class="py-name" href="#" onclick="return doclink('link-366', 'ValueDoc', 'link-107');">ValueDoc</a></tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L837"></a><tt class="py-lineno"> 837</tt>  <tt class="py-line">        <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">parse_doc</tt><tt class="py-op">,</tt> <tt id="link-367" class="py-name"><a title="epydoc.apidoc.ValueDoc" class="py-name" href="#" onclick="return doclink('link-367', 'ValueDoc', 'link-107');">ValueDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L838"></a><tt class="py-lineno"> 838</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">introspect_doc</tt><tt class="py-op">.</tt><tt id="link-368" class="py-name" targets="Variable epydoc.apidoc.ValueDoc.pyval=epydoc.apidoc.ValueDoc-class.html#pyval"><a title="epydoc.apidoc.ValueDoc.pyval" class="py-name" href="#" onclick="return doclink('link-368', 'pyval', 'link-368');">pyval</a></tt> <tt class="py-keyword">is</tt> <t [...]
+<a name="L839"></a><tt class="py-lineno"> 839</tt>  <tt class="py-line">            <tt class="py-name">parse_doc</tt><tt class="py-op">.</tt><tt id="link-370" class="py-name"><a title="epydoc.apidoc.ValueDoc.pyval" class="py-name" href="#" onclick="return doclink('link-370', 'pyval', 'link-368');">pyval</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt id="link-371" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclin [...]
+<a name="L840"></a><tt class="py-lineno"> 840</tt>  <tt class="py-line">            <tt class="py-name">introspect_doc</tt><tt class="py-op">.</tt><tt id="link-372" class="py-name"><a title="epydoc.apidoc.ValueDoc.pyval" class="py-name" href="#" onclick="return doclink('link-372', 'pyval', 'link-368');">pyval</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">parse_doc</tt><tt class="py-op">.</tt><tt id="link-373" class="py-name"><a title="epydoc. [...]
+<a name="L841"></a><tt class="py-lineno"> 841</tt>  <tt class="py-line">            <tt class="py-name">mismatch</tt> <tt class="py-op">=</tt> <tt class="py-string">"values don't match."</tt> </tt>
+<a name="L842"></a><tt class="py-lineno"> 842</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-op">(</tt><tt class="py-name">introspect_doc</tt><tt class="py-op">.</tt><tt id="link-374" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-374', 'canonical_name', 'link-42');">canonical_name</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-375" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-375', 'UNKNOWN', 'link-43');">UNKNOWN</a></tt><tt class="py-op">)</tt>  [...]
+<a name="L843"></a><tt class="py-lineno"> 843</tt>  <tt class="py-line">            <tt class="py-name">parse_doc</tt><tt class="py-op">.</tt><tt id="link-376" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-376', 'canonical_name', 'link-42');">canonical_name</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-377" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-377', 'UNKNOWN', 'link-43');">UNKNOWN</a></tt><tt class="py-op">)</tt>  [...]
+<a name="L844"></a><tt class="py-lineno"> 844</tt>  <tt class="py-line">            <tt class="py-name">introspect_doc</tt><tt class="py-op">.</tt><tt id="link-378" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-378', 'canonical_name', 'link-42');">canonical_name</a></tt> <tt class="py-op">!=</tt> <tt class="py-name">parse_doc</tt><tt class="py-op">.</tt><tt id="link-379" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-379', 'canonical_name', 'link-42');">canonical_name</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L845"></a><tt class="py-lineno"> 845</tt>  <tt class="py-line">            <tt class="py-name">mismatch</tt> <tt class="py-op">=</tt> <tt class="py-string">"canonical names don't match."</tt> </tt>
+<a name="L846"></a><tt class="py-lineno"> 846</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">mismatch</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L847"></a><tt class="py-lineno"> 847</tt>  <tt class="py-line">        <tt id="link-380" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-380', 'log', 'link-14');">log</a></tt><tt class="py-op">.</tt><tt id="link-381" class="py-name" targets="Function epydoc.log.info()=epydoc.log-module.html#info"><a title="epydoc.log.info" class="py-name" href="#" onclick="return doclink('link-381', 'info', 'link-381');">info</a></tt><tt class="py-op">(</tt><tt class="py-string">"Not merging the parsed & introspected values of %s, "</tt> </tt>
+<a name="L848"></a><tt class="py-lineno"> 848</tt>  <tt class="py-line">                 <tt class="py-string">"since their %s"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt id="link-382" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-382', 'path', 'link-0');">path</a></tt><tt class="py-op">,</tt> <tt class="py-name">mismatch</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L849"></a><tt class="py-lineno"> 849</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-383" class="py-name"><a title="epydoc.docbuilder.DEFAULT_MERGE_PRECEDENCE" class="py-name" href="#" onclick="return doclink('link-383', 'DEFAULT_MERGE_PRECEDENCE', 'link-346');">DEFAULT_MERGE_PRECEDENCE</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'introspect'</tt><tt class="py-op">:</tt> </tt>
+<a name="L850"></a><tt class="py-lineno"> 850</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">introspect_doc</tt> </tt>
+<a name="L851"></a><tt class="py-lineno"> 851</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L852"></a><tt class="py-lineno"> 852</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">parse_doc</tt> </tt>
+<a name="L853"></a><tt class="py-lineno"> 853</tt>  <tt class="py-line"> </tt>
+<a name="L854"></a><tt class="py-lineno"> 854</tt>  <tt class="py-line">    <tt class="py-comment"># If one apidoc's class is a superclass of the other's, then</tt> </tt>
+<a name="L855"></a><tt class="py-lineno"> 855</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># specialize it to the more specific class.</tt> </tt>
+<a name="L856"></a><tt class="py-lineno"> 856</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">introspect_doc</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">parse_doc</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">:</tt> </tt>
+<a name="L857"></a><tt class="py-lineno"> 857</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">issubclass</tt><tt class="py-op">(</tt><tt class="py-name">introspect_doc</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">,</tt> <tt class="py-name">parse_doc</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L858"></a><tt class="py-lineno"> 858</tt>  <tt class="py-line">            <tt class="py-name">parse_doc</tt><tt class="py-op">.</tt><tt id="link-384" class="py-name" targets="Method epydoc.apidoc.APIDoc.specialize_to()=epydoc.apidoc.APIDoc-class.html#specialize_to"><a title="epydoc.apidoc.APIDoc.specialize_to" class="py-name" href="#" onclick="return doclink('link-384', 'specialize_to', 'link-384');">specialize_to</a></tt><tt class="py-op">(</tt><tt class="py-name">introspect_d [...]
+<a name="L859"></a><tt class="py-lineno"> 859</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">issubclass</tt><tt class="py-op">(</tt><tt class="py-name">parse_doc</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">,</tt> <tt class="py-name">introspect_doc</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L860"></a><tt class="py-lineno"> 860</tt>  <tt class="py-line">            <tt class="py-name">introspect_doc</tt><tt class="py-op">.</tt><tt id="link-385" class="py-name"><a title="epydoc.apidoc.APIDoc.specialize_to" class="py-name" href="#" onclick="return doclink('link-385', 'specialize_to', 'link-384');">specialize_to</a></tt><tt class="py-op">(</tt><tt class="py-name">parse_doc</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">)</tt> </tt>
+<a name="L861"></a><tt class="py-lineno"> 861</tt>  <tt class="py-line">    <tt class="py-keyword">assert</tt> <tt class="py-name">introspect_doc</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt> <tt class="py-keyword">is</tt> <tt class="py-name">parse_doc</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt> </tt>
+<a name="L862"></a><tt class="py-lineno"> 862</tt>  <tt class="py-line"> </tt>
+<a name="L863"></a><tt class="py-lineno"> 863</tt>  <tt class="py-line">    <tt class="py-comment"># The posargs and defaults are tied together -- if we merge</tt> </tt>
+<a name="L864"></a><tt class="py-lineno"> 864</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># the posargs one way, then we need to merge the defaults the</tt> </tt>
+<a name="L865"></a><tt class="py-lineno"> 865</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># same way.  So check them first.  (This is a minor hack)</tt> </tt>
+<a name="L866"></a><tt class="py-lineno"> 866</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">introspect_doc</tt><tt class="py-op">,</tt> <tt id="link-386" class="py-name" targets="Class epydoc.apidoc.RoutineDoc=epydoc.apidoc.RoutineDoc-class.html"><a title="epydoc.apidoc.RoutineDoc" class="py-name" href="#" onclick="return doclink('link-386', 'R [...]
+<a name="L867"></a><tt class="py-lineno"> 867</tt>  <tt class="py-line">        <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">parse_doc</tt><tt class="py-op">,</tt> <tt id="link-387" class="py-name"><a title="epydoc.apidoc.RoutineDoc" class="py-name" href="#" onclick="return doclink('link-387', 'RoutineDoc', 'link-386');">RoutineDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L868"></a><tt class="py-lineno"> 868</tt>  <tt class="py-line">        <tt id="link-388" class="py-name" targets="Function epydoc.docbuilder._merge_posargs_and_defaults()=epydoc.docbuilder-module.html#_merge_posargs_and_defaults"><a title="epydoc.docbuilder._merge_posargs_and_defaults" class="py-name" href="#" onclick="return doclink('link-388', '_merge_posargs_and_defaults', 'link-388');">_merge_posargs_and_defaults</a></tt><tt class="py-op">(</tt><tt class="py-name">introspect [...]
+<a name="L869"></a><tt class="py-lineno"> 869</tt>  <tt class="py-line">     </tt>
+<a name="L870"></a><tt class="py-lineno"> 870</tt>  <tt class="py-line">    <tt class="py-comment"># Merge the two api_doc's attributes.</tt> </tt>
+<a name="L871"></a><tt class="py-lineno"> 871</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">for</tt> <tt class="py-name">attrib</tt> <tt class="py-keyword">in</tt> <tt class="py-name">set</tt><tt class="py-op">(</tt><tt class="py-name">introspect_doc</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> </tt>
+<a name="L872"></a><tt class="py-lineno"> 872</tt>  <tt class="py-line">                      <tt class="py-name">parse_doc</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L873"></a><tt class="py-lineno"> 873</tt>  <tt class="py-line">        <tt class="py-comment"># Be sure not to merge any private attributes (especially</tt> </tt>
+<a name="L874"></a><tt class="py-lineno"> 874</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># __mergeset or __has_been_hashed!)</tt> </tt>
+<a name="L875"></a><tt class="py-lineno"> 875</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">attrib</tt><tt class="py-op">.</tt><tt class="py-name">startswith</tt><tt class="py-op">(</tt><tt class="py-string">'_'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-keyword">continue</tt> </tt>
+<a name="L876"></a><tt class="py-lineno"> 876</tt>  <tt class="py-line">        <tt id="link-390" class="py-name" targets="Function epydoc.docbuilder.merge_attribute()=epydoc.docbuilder-module.html#merge_attribute"><a title="epydoc.docbuilder.merge_attribute" class="py-name" href="#" onclick="return doclink('link-390', 'merge_attribute', 'link-390');">merge_attribute</a></tt><tt class="py-op">(</tt><tt class="py-name">attrib</tt><tt class="py-op">,</tt> <tt class="py-name">introspect_doc [...]
+<a name="L877"></a><tt class="py-lineno"> 877</tt>  <tt class="py-line">                             <tt class="py-name">cyclecheck</tt><tt class="py-op">,</tt> <tt id="link-391" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-391', 'path', 'link-0');">path</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L878"></a><tt class="py-lineno"> 878</tt>  <tt class="py-line"> </tt>
+<a name="L879"></a><tt class="py-lineno"> 879</tt>  <tt class="py-line">    <tt class="py-comment"># Set the dictionaries to be shared.</tt> </tt>
+<a name="L880"></a><tt class="py-lineno"> 880</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">return</tt> <tt class="py-name">introspect_doc</tt><tt class="py-op">.</tt><tt id="link-392" class="py-name" targets="Method epydoc.apidoc.APIDoc.merge_and_overwrite()=epydoc.apidoc.APIDoc-class.html#merge_and_overwrite"><a title="epydoc.apidoc.APIDoc.merge_and_overwrite" class="py-name" href="#" onclick="return doclink('link-392', 'merge_and_overwrite', 'link-39 [...]
+</div><a name="L881"></a><tt class="py-lineno"> 881</tt>  <tt class="py-line"> </tt>
+<a name="_merge_posargs_and_defaults"></a><div id="_merge_posargs_and_defaults-def"><a name="L882"></a><tt class="py-lineno"> 882</tt> <a class="py-toggle" href="#" id="_merge_posargs_and_defaults-toggle" onclick="return toggle('_merge_posargs_and_defaults');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docbuilder-module.html#_merge_posargs_and_defaults">_merge_posargs_and_defaults</a><tt class="py-op">(</tt><tt class="py-param">introspect [...]
+</div><div id="_merge_posargs_and_defaults-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_merge_posargs_and_defaults-expanded"><a name="L883"></a><tt class="py-lineno"> 883</tt>  <tt class="py-line">    <tt class="py-comment"># If either is unknown, then let merge_attrib handle it.</tt> </tt>
+<a name="L884"></a><tt class="py-lineno"> 884</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">introspect_doc</tt><tt class="py-op">.</tt><tt id="link-393" class="py-name" targets="Variable epydoc.apidoc.RoutineDoc.posargs=epydoc.apidoc.RoutineDoc-class.html#posargs"><a title="epydoc.apidoc.RoutineDoc.posargs" class="py-name" href="#" onclick="return doclink('link-393', 'posargs', 'link-393');">posargs</a></tt> <tt class="py-key [...]
+<a name="L885"></a><tt class="py-lineno"> 885</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt>  </tt>
+<a name="L886"></a><tt class="py-lineno"> 886</tt>  <tt class="py-line">         </tt>
+<a name="L887"></a><tt class="py-lineno"> 887</tt>  <tt class="py-line">    <tt class="py-comment"># If the introspected doc just has '...', then trust the parsed doc.</tt> </tt>
+<a name="L888"></a><tt class="py-lineno"> 888</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">introspect_doc</tt><tt class="py-op">.</tt><tt id="link-397" class="py-name"><a title="epydoc.apidoc.RoutineDoc.posargs" class="py-name" href="#" onclick="return doclink('link-397', 'posargs', 'link-393');">posargs</a></tt> <tt class="py-op">==</tt> <tt class="py-op">[</tt><tt class="py-string">'...'</tt><tt class="py-op">]</tt> <tt cl [...]
+<a name="L889"></a><tt class="py-lineno"> 889</tt>  <tt class="py-line">        <tt class="py-name">introspect_doc</tt><tt class="py-op">.</tt><tt id="link-399" class="py-name"><a title="epydoc.apidoc.RoutineDoc.posargs" class="py-name" href="#" onclick="return doclink('link-399', 'posargs', 'link-393');">posargs</a></tt> <tt class="py-op">=</tt> <tt class="py-name">parse_doc</tt><tt class="py-op">.</tt><tt id="link-400" class="py-name"><a title="epydoc.apidoc.RoutineDoc.posargs" class=" [...]
+<a name="L890"></a><tt class="py-lineno"> 890</tt>  <tt class="py-line">        <tt class="py-name">introspect_doc</tt><tt class="py-op">.</tt><tt id="link-401" class="py-name" targets="Variable epydoc.apidoc.RoutineDoc.posarg_defaults=epydoc.apidoc.RoutineDoc-class.html#posarg_defaults"><a title="epydoc.apidoc.RoutineDoc.posarg_defaults" class="py-name" href="#" onclick="return doclink('link-401', 'posarg_defaults', 'link-401');">posarg_defaults</a></tt> <tt class="py-op">=</tt> <tt cla [...]
+<a name="L891"></a><tt class="py-lineno"> 891</tt>  <tt class="py-line"> </tt>
+<a name="L892"></a><tt class="py-lineno"> 892</tt>  <tt class="py-line">    <tt class="py-comment"># If they are incompatible, then check the precedence.</tt> </tt>
+<a name="L893"></a><tt class="py-lineno"> 893</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">elif</tt> <tt class="py-name">introspect_doc</tt><tt class="py-op">.</tt><tt id="link-403" class="py-name"><a title="epydoc.apidoc.RoutineDoc.posargs" class="py-name" href="#" onclick="return doclink('link-403', 'posargs', 'link-393');">posargs</a></tt> <tt class="py-op">!=</tt> <tt class="py-name">parse_doc</tt><tt class="py-op">.</tt><tt id="link-404" class="py [...]
+<a name="L894"></a><tt class="py-lineno"> 894</tt>  <tt class="py-line">        <tt id="link-405" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-405', 'log', 'link-14');">log</a></tt><tt class="py-op">.</tt><tt id="link-406" class="py-name"><a title="epydoc.log.info" class="py-name" href="#" onclick="return doclink('link-406', 'info', 'link-381');">info</a></tt><tt class="py-op">(</tt><tt class="py-string">"Not merging the parsed & introspected arg "</tt> </tt>
+<a name="L895"></a><tt class="py-lineno"> 895</tt>  <tt class="py-line">                 <tt class="py-string">"lists for %s, since they don't match (%s vs %s)"</tt> </tt>
+<a name="L896"></a><tt class="py-lineno"> 896</tt>  <tt class="py-line">                  <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt id="link-407" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-407', 'path', 'link-0');">path</a></tt><tt class="py-op">,</tt> <tt class="py-name">introspect_doc</tt><tt class="py-op">.</tt><tt id="link-408" class="py-name"><a title="epydoc.apidoc.RoutineDoc.posargs" class="py-name" hre [...]
+<a name="L897"></a><tt class="py-lineno"> 897</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt id="link-410" class="py-name"><a title="epydoc.docbuilder.MERGE_PRECEDENCE" class="py-name" href="#" onclick="return doclink('link-410', 'MERGE_PRECEDENCE', 'link-345');">MERGE_PRECEDENCE</a></tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'posargs'</tt><tt class="py-op">,</tt> <tt id="link-411" cl [...]
+<a name="L898"></a><tt class="py-lineno"> 898</tt>  <tt class="py-line">            <tt class="py-string">'introspect'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L899"></a><tt class="py-lineno"> 899</tt>  <tt class="py-line">            <tt class="py-name">parse_doc</tt><tt class="py-op">.</tt><tt id="link-412" class="py-name"><a title="epydoc.apidoc.RoutineDoc.posargs" class="py-name" href="#" onclick="return doclink('link-412', 'posargs', 'link-393');">posargs</a></tt> <tt class="py-op">=</tt> <tt class="py-name">introspect_doc</tt><tt class="py-op">.</tt><tt id="link-413" class="py-name"><a title="epydoc.apidoc.RoutineDoc.posargs" cla [...]
+<a name="L900"></a><tt class="py-lineno"> 900</tt>  <tt class="py-line">            <tt class="py-name">parse_doc</tt><tt class="py-op">.</tt><tt id="link-414" class="py-name"><a title="epydoc.apidoc.RoutineDoc.posarg_defaults" class="py-name" href="#" onclick="return doclink('link-414', 'posarg_defaults', 'link-401');">posarg_defaults</a></tt> <tt class="py-op">=</tt> <tt class="py-name">introspect_doc</tt><tt class="py-op">.</tt><tt id="link-415" class="py-name"><a title="epydoc.apidoc [...]
+<a name="L901"></a><tt class="py-lineno"> 901</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L902"></a><tt class="py-lineno"> 902</tt>  <tt class="py-line">            <tt class="py-name">introspect_doc</tt><tt class="py-op">.</tt><tt id="link-416" class="py-name"><a title="epydoc.apidoc.RoutineDoc.posargs" class="py-name" href="#" onclick="return doclink('link-416', 'posargs', 'link-393');">posargs</a></tt> <tt class="py-op">=</tt> <tt class="py-name">parse_doc</tt><tt class="py-op">.</tt><tt id="link-417" class="py-name"><a title="epydoc.apidoc.RoutineDoc.posargs" cla [...]
+<a name="L903"></a><tt class="py-lineno"> 903</tt>  <tt class="py-line">            <tt class="py-name">introspect_doc</tt><tt class="py-op">.</tt><tt id="link-418" class="py-name"><a title="epydoc.apidoc.RoutineDoc.posarg_defaults" class="py-name" href="#" onclick="return doclink('link-418', 'posarg_defaults', 'link-401');">posarg_defaults</a></tt> <tt class="py-op">=</tt> <tt class="py-name">parse_doc</tt><tt class="py-op">.</tt><tt id="link-419" class="py-name"><a title="epydoc.apidoc [...]
+</div><a name="L904"></a><tt class="py-lineno"> 904</tt>  <tt class="py-line"> </tt>
+<a name="merge_attribute"></a><div id="merge_attribute-def"><a name="L905"></a><tt class="py-lineno"> 905</tt> <a class="py-toggle" href="#" id="merge_attribute-toggle" onclick="return toggle('merge_attribute');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docbuilder-module.html#merge_attribute">merge_attribute</a><tt class="py-op">(</tt><tt class="py-param">attrib</tt><tt class="py-op">,</tt> <tt class="py-param">introspect_doc</tt><tt cl [...]
+</div><div id="merge_attribute-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="merge_attribute-expanded"><a name="L906"></a><tt class="py-lineno"> 906</tt>  <tt class="py-line">    <tt class="py-name">precedence</tt> <tt class="py-op">=</tt> <tt id="link-420" class="py-name"><a title="epydoc.docbuilder.MERGE_PRECEDENCE" class="py-name" href="#" onclick="return doclink('link-420', 'MERGE_PRECEDENCE', 'link-345');">MERGE_PRECEDENCE</a></tt><tt class="py-op">.</tt>< [...]
+<a name="L907"></a><tt class="py-lineno"> 907</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">precedence</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-string">'parse'</tt><tt class="py-op">,</tt> <tt class="py-string">'introspect'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L908"></a><tt class="py-lineno"> 908</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">'Bad precedence value %r'</tt> <tt class="py-op">%</tt> <tt class="py-name">precedence</tt><tt class="py-op">)</tt> </tt>
+<a name="L909"></a><tt class="py-lineno"> 909</tt>  <tt class="py-line">     </tt>
+<a name="L910"></a><tt class="py-lineno"> 910</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">introspect_doc</tt><tt class="py-op">,</tt> <tt class="py-name">attrib</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt id="link-422" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-422', 'UNKNOWN', 'link-43');">UN [...]
+<a name="L911"></a><tt class="py-lineno"> 911</tt>  <tt class="py-line">        <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">parse_doc</tt><tt class="py-op">,</tt> <tt class="py-name">attrib</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt id="link-423" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-423', 'UNKNOWN', 'link-43');">UNKNOWN</a></tt><tt class= [...]
+<a name="L912"></a><tt class="py-lineno"> 912</tt>  <tt class="py-line">        <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt class="py-name">introspect_doc</tt><tt class="py-op">,</tt> <tt class="py-name">attrib</tt><tt class="py-op">,</tt> <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">parse_doc</tt><tt class="py-op">,</tt> <tt class="py-name">attrib</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L913"></a><tt class="py-lineno"> 913</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-op">(</tt><tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">introspect_doc</tt><tt class="py-op">,</tt> <tt class="py-name">attrib</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt id="link-424" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('lin [...]
+<a name="L914"></a><tt class="py-lineno"> 914</tt>  <tt class="py-line">          <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">parse_doc</tt><tt class="py-op">,</tt> <tt class="py-name">attrib</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt id="link-425" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-425', 'UNKNOWN', 'link-43');">UNKNOWN</a></tt><tt class="py-op">)</tt><tt class="py-op [...]
+<a name="L915"></a><tt class="py-lineno"> 915</tt>  <tt class="py-line">        <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt class="py-name">parse_doc</tt><tt class="py-op">,</tt> <tt class="py-name">attrib</tt><tt class="py-op">,</tt> <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">introspect_doc</tt><tt class="py-op">,</tt> <tt class="py-name">attrib</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L916"></a><tt class="py-lineno"> 916</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-op">(</tt><tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">introspect_doc</tt><tt class="py-op">,</tt> <tt class="py-name">attrib</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt id="link-426" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-426', 'UNKNOWN', 'link-43');"> [...]
+<a name="L917"></a><tt class="py-lineno"> 917</tt>  <tt class="py-line">          <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">parse_doc</tt><tt class="py-op">,</tt> <tt class="py-name">attrib</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt id="link-427" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-427', 'UNKNOWN', 'link-43');">UNKNOWN</a></tt><tt class="py-op">)</tt><tt class="py-op [...]
+<a name="L918"></a><tt class="py-lineno"> 918</tt>  <tt class="py-line">        <tt class="py-keyword">pass</tt> </tt>
+<a name="L919"></a><tt class="py-lineno"> 919</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L920"></a><tt class="py-lineno"> 920</tt>  <tt class="py-line">        <tt class="py-comment"># Both APIDoc objects have values; we need to merge them.</tt> </tt>
+<a name="L921"></a><tt class="py-lineno"> 921</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">introspect_val</tt> <tt class="py-op">=</tt> <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">introspect_doc</tt><tt class="py-op">,</tt> <tt class="py-name">attrib</tt><tt class="py-op">)</tt> </tt>
+<a name="L922"></a><tt class="py-lineno"> 922</tt>  <tt class="py-line">        <tt class="py-name">parse_val</tt> <tt class="py-op">=</tt> <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">parse_doc</tt><tt class="py-op">,</tt> <tt class="py-name">attrib</tt><tt class="py-op">)</tt> </tt>
+<a name="L923"></a><tt class="py-lineno"> 923</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">attrib</tt> <tt class="py-keyword">in</tt> <tt id="link-428" class="py-name"><a title="epydoc.docbuilder._attribute_mergefunc_registry" class="py-name" href="#" onclick="return doclink('link-428', '_attribute_mergefunc_registry', 'link-347');">_attribute_mergefunc_registry</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L924"></a><tt class="py-lineno"> 924</tt>  <tt class="py-line">            <tt class="py-name">handler</tt> <tt class="py-op">=</tt> <tt id="link-429" class="py-name"><a title="epydoc.docbuilder._attribute_mergefunc_registry" class="py-name" href="#" onclick="return doclink('link-429', '_attribute_mergefunc_registry', 'link-347');">_attribute_mergefunc_registry</a></tt><tt class="py-op">[</tt><tt class="py-name">attrib</tt><tt class="py-op">]</tt> </tt>
+<a name="L925"></a><tt class="py-lineno"> 925</tt>  <tt class="py-line">            <tt class="py-name">merged_val</tt> <tt class="py-op">=</tt> <tt class="py-name">handler</tt><tt class="py-op">(</tt><tt class="py-name">introspect_val</tt><tt class="py-op">,</tt> <tt class="py-name">parse_val</tt><tt class="py-op">,</tt> <tt class="py-name">precedence</tt><tt class="py-op">,</tt> </tt>
+<a name="L926"></a><tt class="py-lineno"> 926</tt>  <tt class="py-line">                                 <tt class="py-name">cyclecheck</tt><tt class="py-op">,</tt> <tt id="link-430" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-430', 'path', 'link-0');">path</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L927"></a><tt class="py-lineno"> 927</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">precedence</tt> <tt class="py-op">==</tt> <tt class="py-string">'introspect'</tt><tt class="py-op">:</tt> </tt>
+<a name="L928"></a><tt class="py-lineno"> 928</tt>  <tt class="py-line">            <tt class="py-name">merged_val</tt> <tt class="py-op">=</tt> <tt class="py-name">introspect_val</tt> </tt>
+<a name="L929"></a><tt class="py-lineno"> 929</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">precedence</tt> <tt class="py-op">==</tt> <tt class="py-string">'parse'</tt><tt class="py-op">:</tt> </tt>
+<a name="L930"></a><tt class="py-lineno"> 930</tt>  <tt class="py-line">            <tt class="py-name">merged_val</tt> <tt class="py-op">=</tt> <tt class="py-name">parse_val</tt> </tt>
+<a name="L931"></a><tt class="py-lineno"> 931</tt>  <tt class="py-line"> </tt>
+<a name="L932"></a><tt class="py-lineno"> 932</tt>  <tt class="py-line">        <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt class="py-name">introspect_doc</tt><tt class="py-op">,</tt> <tt class="py-name">attrib</tt><tt class="py-op">,</tt> <tt class="py-name">merged_val</tt><tt class="py-op">)</tt> </tt>
+<a name="L933"></a><tt class="py-lineno"> 933</tt>  <tt class="py-line">        <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt class="py-name">parse_doc</tt><tt class="py-op">,</tt> <tt class="py-name">attrib</tt><tt class="py-op">,</tt> <tt class="py-name">merged_val</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L934"></a><tt class="py-lineno"> 934</tt>  <tt class="py-line"> </tt>
+<a name="merge_variables"></a><div id="merge_variables-def"><a name="L935"></a><tt class="py-lineno"> 935</tt> <a class="py-toggle" href="#" id="merge_variables-toggle" onclick="return toggle('merge_variables');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docbuilder-module.html#merge_variables">merge_variables</a><tt class="py-op">(</tt><tt class="py-param">varlist1</tt><tt class="py-op">,</tt> <tt class="py-param">varlist2</tt><tt class= [...]
+</div><div id="merge_variables-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="merge_variables-expanded"><a name="L936"></a><tt class="py-lineno"> 936</tt>  <tt class="py-line">    <tt class="py-comment"># Merge all variables that are in both sets.</tt> </tt>
+<a name="L937"></a><tt class="py-lineno"> 937</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">for</tt> <tt class="py-name">varname</tt><tt class="py-op">,</tt> <tt class="py-name">var1</tt> <tt class="py-keyword">in</tt> <tt class="py-name">varlist1</tt><tt class="py-op">.</tt><tt class="py-name">items</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L938"></a><tt class="py-lineno"> 938</tt>  <tt class="py-line">        <tt class="py-name">var2</tt> <tt class="py-op">=</tt> <tt class="py-name">varlist2</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-name">varname</tt><tt class="py-op">)</tt> </tt>
+<a name="L939"></a><tt class="py-lineno"> 939</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">var2</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L940"></a><tt class="py-lineno"> 940</tt>  <tt class="py-line">            <tt class="py-name">var</tt> <tt class="py-op">=</tt> <tt id="link-431" class="py-name"><a title="epydoc.docbuilder.merge_docs" class="py-name" href="#" onclick="return doclink('link-431', 'merge_docs', 'link-51');">merge_docs</a></tt><tt class="py-op">(</tt><tt class="py-name">var1</tt><tt class="py-op">,</tt> <tt class="py-name">var2</tt><tt class="py-op">,</tt> <tt class="py-name">cyclecheck</tt><tt cl [...]
+<a name="L941"></a><tt class="py-lineno"> 941</tt>  <tt class="py-line">            <tt class="py-name">varlist1</tt><tt class="py-op">[</tt><tt class="py-name">varname</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">var</tt> </tt>
+<a name="L942"></a><tt class="py-lineno"> 942</tt>  <tt class="py-line">            <tt class="py-name">varlist2</tt><tt class="py-op">[</tt><tt class="py-name">varname</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">var</tt> </tt>
+<a name="L943"></a><tt class="py-lineno"> 943</tt>  <tt class="py-line"> </tt>
+<a name="L944"></a><tt class="py-lineno"> 944</tt>  <tt class="py-line">    <tt class="py-comment"># Copy any variables that are not in varlist1 over.</tt> </tt>
+<a name="L945"></a><tt class="py-lineno"> 945</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">for</tt> <tt class="py-name">varname</tt><tt class="py-op">,</tt> <tt class="py-name">var</tt> <tt class="py-keyword">in</tt> <tt class="py-name">varlist2</tt><tt class="py-op">.</tt><tt class="py-name">items</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L946"></a><tt class="py-lineno"> 946</tt>  <tt class="py-line">        <tt class="py-name">varlist1</tt><tt class="py-op">.</tt><tt class="py-name">setdefault</tt><tt class="py-op">(</tt><tt class="py-name">varname</tt><tt class="py-op">,</tt> <tt class="py-name">var</tt><tt class="py-op">)</tt> </tt>
+<a name="L947"></a><tt class="py-lineno"> 947</tt>  <tt class="py-line"> </tt>
+<a name="L948"></a><tt class="py-lineno"> 948</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">varlist1</tt> </tt>
+</div><a name="L949"></a><tt class="py-lineno"> 949</tt>  <tt class="py-line"> </tt>
+<a name="merge_value"></a><div id="merge_value-def"><a name="L950"></a><tt class="py-lineno"> 950</tt> <a class="py-toggle" href="#" id="merge_value-toggle" onclick="return toggle('merge_value');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docbuilder-module.html#merge_value">merge_value</a><tt class="py-op">(</tt><tt class="py-param">value1</tt><tt class="py-op">,</tt> <tt class="py-param">value2</tt><tt class="py-op">,</tt> <tt class="py [...]
+</div><div id="merge_value-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="merge_value-expanded"><a name="L951"></a><tt class="py-lineno"> 951</tt>  <tt class="py-line">    <tt class="py-keyword">assert</tt> <tt class="py-name">value1</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-name">value2</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt cla [...]
+<a name="L952"></a><tt class="py-lineno"> 952</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-433" class="py-name"><a title="epydoc.docbuilder.merge_docs" class="py-name" href="#" onclick="return doclink('link-433', 'merge_docs', 'link-51');">merge_docs</a></tt><tt class="py-op">(</tt><tt class="py-name">value1</tt><tt class="py-op">,</tt> <tt class="py-name">value2</tt><tt class="py-op">,</tt> <tt class="py-name">cyclecheck</tt><tt class="py-op">,</tt> <tt  [...]
+</div><a name="L953"></a><tt class="py-lineno"> 953</tt>  <tt class="py-line"> </tt>
+<a name="merge_overrides"></a><div id="merge_overrides-def"><a name="L954"></a><tt class="py-lineno"> 954</tt> <a class="py-toggle" href="#" id="merge_overrides-toggle" onclick="return toggle('merge_overrides');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docbuilder-module.html#merge_overrides">merge_overrides</a><tt class="py-op">(</tt><tt class="py-param">v1</tt><tt class="py-op">,</tt> <tt class="py-param">v2</tt><tt class="py-op">,</t [...]
+</div><div id="merge_overrides-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="merge_overrides-expanded"><a name="L955"></a><tt class="py-lineno"> 955</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-435" class="py-name" targets="Function epydoc.docbuilder.merge_value()=epydoc.docbuilder-module.html#merge_value"><a title="epydoc.docbuilder.merge_value" class="py-name" href="#" onclick="return doclink('link-435', 'merge_value', 'link-4 [...]
+</div><a name="merge_fget"></a><div id="merge_fget-def"><a name="L956"></a><tt class="py-lineno"> 956</tt> <a class="py-toggle" href="#" id="merge_fget-toggle" onclick="return toggle('merge_fget');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docbuilder-module.html#merge_fget">merge_fget</a><tt class="py-op">(</tt><tt class="py-param">v1</tt><tt class="py-op">,</tt> <tt class="py-param">v2</tt><tt class="py-op">,</tt> <tt class="py-param"> [...]
+</div><div id="merge_fget-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="merge_fget-expanded"><a name="L957"></a><tt class="py-lineno"> 957</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-437" class="py-name"><a title="epydoc.docbuilder.merge_value" class="py-name" href="#" onclick="return doclink('link-437', 'merge_value', 'link-435');">merge_value</a></tt><tt class="py-op">(</tt><tt class="py-name">v1</tt><tt class="py-op">,</tt>  [...]
+</div><a name="merge_fset"></a><div id="merge_fset-def"><a name="L958"></a><tt class="py-lineno"> 958</tt> <a class="py-toggle" href="#" id="merge_fset-toggle" onclick="return toggle('merge_fset');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docbuilder-module.html#merge_fset">merge_fset</a><tt class="py-op">(</tt><tt class="py-param">v1</tt><tt class="py-op">,</tt> <tt class="py-param">v2</tt><tt class="py-op">,</tt> <tt class="py-param"> [...]
+</div><div id="merge_fset-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="merge_fset-expanded"><a name="L959"></a><tt class="py-lineno"> 959</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-439" class="py-name"><a title="epydoc.docbuilder.merge_value" class="py-name" href="#" onclick="return doclink('link-439', 'merge_value', 'link-435');">merge_value</a></tt><tt class="py-op">(</tt><tt class="py-name">v1</tt><tt class="py-op">,</tt>  [...]
+</div><a name="merge_fdel"></a><div id="merge_fdel-def"><a name="L960"></a><tt class="py-lineno"> 960</tt> <a class="py-toggle" href="#" id="merge_fdel-toggle" onclick="return toggle('merge_fdel');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docbuilder-module.html#merge_fdel">merge_fdel</a><tt class="py-op">(</tt><tt class="py-param">v1</tt><tt class="py-op">,</tt> <tt class="py-param">v2</tt><tt class="py-op">,</tt> <tt class="py-param"> [...]
+</div><div id="merge_fdel-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="merge_fdel-expanded"><a name="L961"></a><tt class="py-lineno"> 961</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-441" class="py-name"><a title="epydoc.docbuilder.merge_value" class="py-name" href="#" onclick="return doclink('link-441', 'merge_value', 'link-435');">merge_value</a></tt><tt class="py-op">(</tt><tt class="py-name">v1</tt><tt class="py-op">,</tt>  [...]
+</div><a name="L962"></a><tt class="py-lineno"> 962</tt>  <tt class="py-line"> </tt>
+<a name="merge_proxy_for"></a><div id="merge_proxy_for-def"><a name="L963"></a><tt class="py-lineno"> 963</tt> <a class="py-toggle" href="#" id="merge_proxy_for-toggle" onclick="return toggle('merge_proxy_for');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docbuilder-module.html#merge_proxy_for">merge_proxy_for</a><tt class="py-op">(</tt><tt class="py-param">v1</tt><tt class="py-op">,</tt> <tt class="py-param">v2</tt><tt class="py-op">,</t [...]
+</div><div id="merge_proxy_for-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="merge_proxy_for-expanded"><a name="L964"></a><tt class="py-lineno"> 964</tt>  <tt class="py-line">    <tt class="py-comment"># Anything we got from introspection shouldn't have a proxy_for</tt> </tt>
+<a name="L965"></a><tt class="py-lineno"> 965</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># attribute -- it should be the actual object's documentation.</tt> </tt>
+<a name="L966"></a><tt class="py-lineno"> 966</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">return</tt> <tt class="py-name">v1</tt> </tt>
+</div><a name="L967"></a><tt class="py-lineno"> 967</tt>  <tt class="py-line"> </tt>
+<a name="merge_bases"></a><div id="merge_bases-def"><a name="L968"></a><tt class="py-lineno"> 968</tt> <a class="py-toggle" href="#" id="merge_bases-toggle" onclick="return toggle('merge_bases');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docbuilder-module.html#merge_bases">merge_bases</a><tt class="py-op">(</tt><tt class="py-param">baselist1</tt><tt class="py-op">,</tt> <tt class="py-param">baselist2</tt><tt class="py-op">,</tt> <tt cla [...]
+</div><div id="merge_bases-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="merge_bases-expanded"><a name="L969"></a><tt class="py-lineno"> 969</tt>  <tt class="py-line">    <tt class="py-comment"># Be careful here -- if we get it wrong, then we could end up</tt> </tt>
+<a name="L970"></a><tt class="py-lineno"> 970</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># merging two unrelated classes, which could lead to bad</tt> </tt>
+<a name="L971"></a><tt class="py-lineno"> 971</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># things (e.g., a class that's its own subclass).  So only</tt> </tt>
+<a name="L972"></a><tt class="py-lineno"> 972</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># merge two bases if we're quite sure they're the same class.</tt> </tt>
+<a name="L973"></a><tt class="py-lineno"> 973</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># (In particular, if they have the same canonical name.)</tt> </tt>
+<a name="L974"></a><tt class="py-lineno"> 974</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L975"></a><tt class="py-lineno"> 975</tt>  <tt class="py-line">    <tt class="py-comment"># If the lengths don't match up, then give up.  This is most</tt> </tt>
+<a name="L976"></a><tt class="py-lineno"> 976</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># often caused by __metaclass__.</tt> </tt>
+<a name="L977"></a><tt class="py-lineno"> 977</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">baselist1</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">baselist2</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L978"></a><tt class="py-lineno"> 978</tt>  <tt class="py-line">        <tt id="link-443" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-443', 'log', 'link-14');">log</a></tt><tt class="py-op">.</tt><tt id="link-444" class="py-name"><a title="epydoc.log.info" class="py-name" href="#" onclick="return doclink('link-444', 'info', 'link-381');">info</a></tt><tt class="py-op">(</tt><tt class="py-string">"Not merging the introspected & parsed base lists "</tt> </tt>
+<a name="L979"></a><tt class="py-lineno"> 979</tt>  <tt class="py-line">                 <tt class="py-string">"for %s, since their lengths don't match (%s vs %s)"</tt> <tt class="py-op">%</tt> </tt>
+<a name="L980"></a><tt class="py-lineno"> 980</tt>  <tt class="py-line">                 <tt class="py-op">(</tt><tt id="link-445" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-445', 'path', 'link-0');">path</a></tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">baselist1</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt [...]
+<a name="L981"></a><tt class="py-lineno"> 981</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">precedence</tt> <tt class="py-op">==</tt> <tt class="py-string">'introspect'</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-name">baselist1</tt> </tt>
+<a name="L982"></a><tt class="py-lineno"> 982</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-name">baselist2</tt> </tt>
+<a name="L983"></a><tt class="py-lineno"> 983</tt>  <tt class="py-line"> </tt>
+<a name="L984"></a><tt class="py-lineno"> 984</tt>  <tt class="py-line">    <tt class="py-comment"># If any names disagree, then give up.</tt> </tt>
+<a name="L985"></a><tt class="py-lineno"> 985</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">for</tt> <tt class="py-name">base1</tt><tt class="py-op">,</tt> <tt class="py-name">base2</tt> <tt class="py-keyword">in</tt> <tt class="py-name">zip</tt><tt class="py-op">(</tt><tt class="py-name">baselist1</tt><tt class="py-op">,</tt> <tt class="py-name">baselist2</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L986"></a><tt class="py-lineno"> 986</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">base1</tt><tt class="py-op">.</tt><tt id="link-446" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-446', 'canonical_name', 'link-42');">canonical_name</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-447" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-447', 'UNKNOWN', 'link-43');">UNKNOWN</a></tt><tt class="py-op">)</tt>  [...]
+<a name="L987"></a><tt class="py-lineno"> 987</tt>  <tt class="py-line">             <tt class="py-name">base2</tt><tt class="py-op">.</tt><tt id="link-448" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-448', 'canonical_name', 'link-42');">canonical_name</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-449" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-449', 'UNKNOWN', 'link-43');">UNKNOWN</a></tt><tt class="py-op">)</tt>< [...]
+<a name="L988"></a><tt class="py-lineno"> 988</tt>  <tt class="py-line">            <tt class="py-name">base1</tt><tt class="py-op">.</tt><tt id="link-450" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-450', 'canonical_name', 'link-42');">canonical_name</a></tt> <tt class="py-op">!=</tt> <tt class="py-name">base2</tt><tt class="py-op">.</tt><tt id="link-451" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-451', 'canonical_name', 'link-42');">canonical_name</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L989"></a><tt class="py-lineno"> 989</tt>  <tt class="py-line">            <tt id="link-452" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-452', 'log', 'link-14');">log</a></tt><tt class="py-op">.</tt><tt id="link-453" class="py-name"><a title="epydoc.log.info" class="py-name" href="#" onclick="return doclink('link-453', 'info', 'link-381');">info</a></tt><tt class="py-op">(</tt><tt class="py-string">"Not merging the parsed & introspected base "</tt> </tt>
+<a name="L990"></a><tt class="py-lineno"> 990</tt>  <tt class="py-line">                     <tt class="py-string">"lists for %s, since the bases' names don't match "</tt> </tt>
+<a name="L991"></a><tt class="py-lineno"> 991</tt>  <tt class="py-line">                     <tt class="py-string">"(%s vs %s)"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt id="link-454" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-454', 'path', 'link-0');">path</a></tt><tt class="py-op">,</tt> <tt class="py-name">base1</tt><tt class="py-op">.</tt><tt id="link-455" class="py-name"><a title="epydoc.apidoc.Gener [...]
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-455', 'canonical_name', 'link-42');">canonical_name</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L992"></a><tt class="py-lineno"> 992</tt>  <tt class="py-line">                                     <tt class="py-name">base2</tt><tt class="py-op">.</tt><tt id="link-456" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-456', 'canonical_name', 'link-42');">canonical_name</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L993"></a><tt class="py-lineno"> 993</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">precedence</tt> <tt class="py-op">==</tt> <tt class="py-string">'introspect'</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-name">baselist1</tt> </tt>
+<a name="L994"></a><tt class="py-lineno"> 994</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-name">baselist2</tt> </tt>
+<a name="L995"></a><tt class="py-lineno"> 995</tt>  <tt class="py-line"> </tt>
+<a name="L996"></a><tt class="py-lineno"> 996</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">i</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">base1</tt><tt class="py-op">,</tt> <tt class="py-name">base2</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-name">enumerate</tt><tt class="py-op">(</tt><tt class="py-name">zip</tt><tt class="py-op">(</tt><tt class="py-name">baselist1</tt><tt class="py-op">,</tt> [...]
+<a name="L997"></a><tt class="py-lineno"> 997</tt>  <tt class="py-line">        <tt class="py-name">base</tt> <tt class="py-op">=</tt> <tt id="link-457" class="py-name"><a title="epydoc.docbuilder.merge_docs" class="py-name" href="#" onclick="return doclink('link-457', 'merge_docs', 'link-51');">merge_docs</a></tt><tt class="py-op">(</tt><tt class="py-name">base1</tt><tt class="py-op">,</tt> <tt class="py-name">base2</tt><tt class="py-op">,</tt> <tt class="py-name">cyclecheck</tt><tt cla [...]
+<a name="L998"></a><tt class="py-lineno"> 998</tt>  <tt class="py-line">                           <tt class="py-string">'%s.__bases__[%d]'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt id="link-458" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-458', 'path', 'link-0');">path</a></tt><tt class="py-op">,</tt> <tt class="py-name">i</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L999"></a><tt class="py-lineno"> 999</tt>  <tt class="py-line">        <tt class="py-name">baselist1</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">baselist2</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">base</tt> </tt>
+<a name="L1000"></a><tt class="py-lineno">1000</tt>  <tt class="py-line"> </tt>
+<a name="L1001"></a><tt class="py-lineno">1001</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">baselist1</tt> </tt>
+</div><a name="L1002"></a><tt class="py-lineno">1002</tt>  <tt class="py-line"> </tt>
+<a name="merge_posarg_defaults"></a><div id="merge_posarg_defaults-def"><a name="L1003"></a><tt class="py-lineno">1003</tt> <a class="py-toggle" href="#" id="merge_posarg_defaults-toggle" onclick="return toggle('merge_posarg_defaults');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docbuilder-module.html#merge_posarg_defaults">merge_posarg_defaults</a><tt class="py-op">(</tt><tt class="py-param">defaults1</tt><tt class="py-op">,</tt> <tt cl [...]
+</div><div id="merge_posarg_defaults-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="merge_posarg_defaults-expanded"><a name="L1004"></a><tt class="py-lineno">1004</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">defaults1</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">defaults2</tt><tt class="py-op">) [...]
+<a name="L1005"></a><tt class="py-lineno">1005</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">precedence</tt> <tt class="py-op">==</tt> <tt class="py-string">'introspect'</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-name">defaults1</tt> </tt>
+<a name="L1006"></a><tt class="py-lineno">1006</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-name">defaults2</tt> </tt>
+<a name="L1007"></a><tt class="py-lineno">1007</tt>  <tt class="py-line">    <tt class="py-name">defaults</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L1008"></a><tt class="py-lineno">1008</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">i</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">d1</tt><tt class="py-op">,</tt> <tt class="py-name">d2</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-name">enumerate</tt><tt class="py-op">(</tt><tt class="py-name">zip</tt><tt class="py-op">(</tt><tt class="py-name">defaults1</tt><tt class="py-op">,</tt> <tt  [...]
+<a name="L1009"></a><tt class="py-lineno">1009</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">d1</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-name">d2</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1010"></a><tt class="py-lineno">1010</tt>  <tt class="py-line">            <tt class="py-name">d_path</tt> <tt class="py-op">=</tt> <tt class="py-string">'%s.<default-arg-val>[%d]'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt id="link-459" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-459', 'path', 'link-0');">path</a></tt><tt class="py-op">,</tt> <tt class="py-name">i</tt><tt class="py-op">)</t [...]
+<a name="L1011"></a><tt class="py-lineno">1011</tt>  <tt class="py-line">            <tt class="py-name">defaults</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-460" class="py-name"><a title="epydoc.docbuilder.merge_docs" class="py-name" href="#" onclick="return doclink('link-460', 'merge_docs', 'link-51');">merge_docs</a></tt><tt class="py-op">(</tt><tt class="py-name">d1</tt><tt class="py-op">,</tt> <tt class="py-name">d2</tt><tt class=" [...]
+<a name="L1012"></a><tt class="py-lineno">1012</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">precedence</tt> <tt class="py-op">==</tt> <tt class="py-string">'introspect'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1013"></a><tt class="py-lineno">1013</tt>  <tt class="py-line">            <tt class="py-name">defaults</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">d1</tt><tt class="py-op">)</tt> </tt>
+<a name="L1014"></a><tt class="py-lineno">1014</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1015"></a><tt class="py-lineno">1015</tt>  <tt class="py-line">            <tt class="py-name">defaults</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">d2</tt><tt class="py-op">)</tt> </tt>
+<a name="L1016"></a><tt class="py-lineno">1016</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">defaults</tt> </tt>
+</div><a name="L1017"></a><tt class="py-lineno">1017</tt>  <tt class="py-line"> </tt>
+<a name="merge_docstring"></a><div id="merge_docstring-def"><a name="L1018"></a><tt class="py-lineno">1018</tt> <a class="py-toggle" href="#" id="merge_docstring-toggle" onclick="return toggle('merge_docstring');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docbuilder-module.html#merge_docstring">merge_docstring</a><tt class="py-op">(</tt><tt class="py-param">docstring1</tt><tt class="py-op">,</tt> <tt class="py-param">docstring2</tt><tt c [...]
+</div><div id="merge_docstring-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="merge_docstring-expanded"><a name="L1019"></a><tt class="py-lineno">1019</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">docstring1</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt> <tt class="py-keyword">or</tt> <tt class="py-name">docstring1</tt> <tt class="py-keyword">is</tt> <tt id="link-461" class="py-name"><a title="epydoc.apidoc.U [...]
+<a name="L1020"></a><tt class="py-lineno">1020</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">docstring2</tt> </tt>
+<a name="L1021"></a><tt class="py-lineno">1021</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1022"></a><tt class="py-lineno">1022</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">docstring1</tt> </tt>
+</div><a name="L1023"></a><tt class="py-lineno">1023</tt>  <tt class="py-line"> </tt>
+<a name="merge_docs_extracted_by"></a><div id="merge_docs_extracted_by-def"><a name="L1024"></a><tt class="py-lineno">1024</tt> <a class="py-toggle" href="#" id="merge_docs_extracted_by-toggle" onclick="return toggle('merge_docs_extracted_by');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docbuilder-module.html#merge_docs_extracted_by">merge_docs_extracted_by</a><tt class="py-op">(</tt><tt class="py-param">v1</tt><tt class="py-op">,</tt> < [...]
+</div><div id="merge_docs_extracted_by-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="merge_docs_extracted_by-expanded"><a name="L1025"></a><tt class="py-lineno">1025</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-string">'both'</tt> </tt>
+</div><a name="L1026"></a><tt class="py-lineno">1026</tt>  <tt class="py-line"> </tt>
+<a name="merge_submodules"></a><div id="merge_submodules-def"><a name="L1027"></a><tt class="py-lineno">1027</tt> <a class="py-toggle" href="#" id="merge_submodules-toggle" onclick="return toggle('merge_submodules');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docbuilder-module.html#merge_submodules">merge_submodules</a><tt class="py-op">(</tt><tt class="py-param">v1</tt><tt class="py-op">,</tt> <tt class="py-param">v2</tt><tt class="py-o [...]
+</div><div id="merge_submodules-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="merge_submodules-expanded"><a name="L1028"></a><tt class="py-lineno">1028</tt>  <tt class="py-line">    <tt class="py-name">n1</tt> <tt class="py-op">=</tt> <tt id="link-462" class="py-name"><a title="epydoc.compat.sorted" class="py-name" href="#" onclick="return doclink('link-462', 'sorted', 'link-60');">sorted</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-nam [...]
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-463', 'canonical_name', 'link-42');">canonical_name</a></tt> <tt class="py-keyword">for</tt> <tt class="py-name">m</tt> <tt class="py-keyword">in</tt> <tt class="py-name">v1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1029"></a><tt class="py-lineno">1029</tt>  <tt class="py-line">    <tt class="py-name">n2</tt> <tt class="py-op">=</tt> <tt id="link-464" class="py-name"><a title="epydoc.compat.sorted" class="py-name" href="#" onclick="return doclink('link-464', 'sorted', 'link-60');">sorted</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-465" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-465', 'canonical_name', 'link-42');">canonical_name</a></tt> <tt class="py-keyword">for</tt> <tt class="py-name">m</tt> <tt class="py-keyword">in</tt> <tt class="py-name">v2</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1030"></a><tt class="py-lineno">1030</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">n1</tt> <tt class="py-op">!=</tt> <tt class="py-name">n2</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-name">n2</tt> <tt class="py-op">!=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1031"></a><tt class="py-lineno">1031</tt>  <tt class="py-line">        <tt id="link-466" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-466', 'log', 'link-14');">log</a></tt><tt class="py-op">.</tt><tt id="link-467" class="py-name"><a title="epydoc.log.info" class="py-name" href="#" onclick="return doclink('link-467', 'info', 'link-381');">info</a></tt><tt class="py-op">(</tt><tt class="py-string">'Introspector & parser disagree about submodules '</tt> </tt>
+<a name="L1032"></a><tt class="py-lineno">1032</tt>  <tt class="py-line">                 <tt class="py-string">'for %s: (%s) vs (%s)'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt id="link-468" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-468', 'path', 'link-0');">path</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L1033"></a><tt class="py-lineno">1033</tt>  <tt class="py-line">                                           <tt class="py-string">', '</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">n</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">n</tt> <tt class="py-keyword">in</tt> <tt class="py-name">n1</tt><tt class="py-op">]</tt> [...]
+<a name="L1034"></a><tt class="py-lineno">1034</tt>  <tt class="py-line">                                           <tt class="py-string">', '</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">n</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">n</tt> <tt class="py-keyword">in</tt> <tt class="py-name">n2</tt><tt class="py-op">]</tt> [...]
+<a name="L1035"></a><tt class="py-lineno">1035</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">v1</tt> <tt class="py-op">+</tt> <tt class="py-op">[</tt><tt class="py-name">m</tt> <tt class="py-keyword">for</tt> <tt class="py-name">m</tt> <tt class="py-keyword">in</tt> <tt class="py-name">v2</tt> <tt class="py-keyword">if</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-469" class="py-name"><a title="epydoc.apidoc.GenericValueDoc [...]
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-469', 'canonical_name', 'link-42');">canonical_name</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">n1</tt><tt class="py-op">]</tt> </tt>
+<a name="L1036"></a><tt class="py-lineno">1036</tt>  <tt class="py-line">                 </tt>
+<a name="L1037"></a><tt class="py-lineno">1037</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">v1</tt> </tt>
+</div><a name="L1038"></a><tt class="py-lineno">1038</tt>  <tt class="py-line"> </tt>
+<a name="L1039"></a><tt class="py-lineno">1039</tt>  <tt class="py-line"><tt id="link-470" class="py-name" targets="Function epydoc.docbuilder.register_attribute_mergefunc()=epydoc.docbuilder-module.html#register_attribute_mergefunc"><a title="epydoc.docbuilder.register_attribute_mergefunc" class="py-name" href="#" onclick="return doclink('link-470', 'register_attribute_mergefunc', 'link-470');">register_attribute_mergefunc</a></tt><tt class="py-op">(</tt><tt class="py-string">'variables [...]
+<a name="L1040"></a><tt class="py-lineno">1040</tt>  <tt class="py-line"><tt id="link-472" class="py-name"><a title="epydoc.docbuilder.register_attribute_mergefunc" class="py-name" href="#" onclick="return doclink('link-472', 'register_attribute_mergefunc', 'link-470');">register_attribute_mergefunc</a></tt><tt class="py-op">(</tt><tt class="py-string">'value'</tt><tt class="py-op">,</tt> <tt id="link-473" class="py-name"><a title="epydoc.docbuilder.merge_value" class="py-name" href="#"  [...]
+<a name="L1041"></a><tt class="py-lineno">1041</tt>  <tt class="py-line"><tt id="link-474" class="py-name"><a title="epydoc.docbuilder.register_attribute_mergefunc" class="py-name" href="#" onclick="return doclink('link-474', 'register_attribute_mergefunc', 'link-470');">register_attribute_mergefunc</a></tt><tt class="py-op">(</tt><tt class="py-string">'overrides'</tt><tt class="py-op">,</tt> <tt id="link-475" class="py-name" targets="Function epydoc.docbuilder.merge_overrides()=epydoc.d [...]
+<a name="L1042"></a><tt class="py-lineno">1042</tt>  <tt class="py-line"><tt id="link-476" class="py-name"><a title="epydoc.docbuilder.register_attribute_mergefunc" class="py-name" href="#" onclick="return doclink('link-476', 'register_attribute_mergefunc', 'link-470');">register_attribute_mergefunc</a></tt><tt class="py-op">(</tt><tt class="py-string">'fget'</tt><tt class="py-op">,</tt> <tt id="link-477" class="py-name" targets="Function epydoc.docbuilder.merge_fget()=epydoc.docbuilder- [...]
+<a name="L1043"></a><tt class="py-lineno">1043</tt>  <tt class="py-line"><tt id="link-478" class="py-name"><a title="epydoc.docbuilder.register_attribute_mergefunc" class="py-name" href="#" onclick="return doclink('link-478', 'register_attribute_mergefunc', 'link-470');">register_attribute_mergefunc</a></tt><tt class="py-op">(</tt><tt class="py-string">'fset'</tt><tt class="py-op">,</tt> <tt id="link-479" class="py-name" targets="Function epydoc.docbuilder.merge_fset()=epydoc.docbuilder- [...]
+<a name="L1044"></a><tt class="py-lineno">1044</tt>  <tt class="py-line"><tt id="link-480" class="py-name"><a title="epydoc.docbuilder.register_attribute_mergefunc" class="py-name" href="#" onclick="return doclink('link-480', 'register_attribute_mergefunc', 'link-470');">register_attribute_mergefunc</a></tt><tt class="py-op">(</tt><tt class="py-string">'fdel'</tt><tt class="py-op">,</tt> <tt id="link-481" class="py-name" targets="Function epydoc.docbuilder.merge_fdel()=epydoc.docbuilder- [...]
+<a name="L1045"></a><tt class="py-lineno">1045</tt>  <tt class="py-line"><tt id="link-482" class="py-name"><a title="epydoc.docbuilder.register_attribute_mergefunc" class="py-name" href="#" onclick="return doclink('link-482', 'register_attribute_mergefunc', 'link-470');">register_attribute_mergefunc</a></tt><tt class="py-op">(</tt><tt class="py-string">'proxy_for'</tt><tt class="py-op">,</tt> <tt id="link-483" class="py-name" targets="Function epydoc.docbuilder.merge_proxy_for()=epydoc.d [...]
+<a name="L1046"></a><tt class="py-lineno">1046</tt>  <tt class="py-line"><tt id="link-484" class="py-name"><a title="epydoc.docbuilder.register_attribute_mergefunc" class="py-name" href="#" onclick="return doclink('link-484', 'register_attribute_mergefunc', 'link-470');">register_attribute_mergefunc</a></tt><tt class="py-op">(</tt><tt class="py-string">'bases'</tt><tt class="py-op">,</tt> <tt id="link-485" class="py-name" targets="Function epydoc.docbuilder.merge_bases()=epydoc.docbuilde [...]
+<a name="L1047"></a><tt class="py-lineno">1047</tt>  <tt class="py-line"><tt id="link-486" class="py-name"><a title="epydoc.docbuilder.register_attribute_mergefunc" class="py-name" href="#" onclick="return doclink('link-486', 'register_attribute_mergefunc', 'link-470');">register_attribute_mergefunc</a></tt><tt class="py-op">(</tt><tt class="py-string">'posarg_defaults'</tt><tt class="py-op">,</tt> <tt id="link-487" class="py-name" targets="Function epydoc.docbuilder.merge_posarg_default [...]
+<a name="L1048"></a><tt class="py-lineno">1048</tt>  <tt class="py-line"><tt id="link-488" class="py-name"><a title="epydoc.docbuilder.register_attribute_mergefunc" class="py-name" href="#" onclick="return doclink('link-488', 'register_attribute_mergefunc', 'link-470');">register_attribute_mergefunc</a></tt><tt class="py-op">(</tt><tt class="py-string">'docstring'</tt><tt class="py-op">,</tt> <tt id="link-489" class="py-name" targets="Function epydoc.docbuilder.merge_docstring()=epydoc.d [...]
+<a name="L1049"></a><tt class="py-lineno">1049</tt>  <tt class="py-line"><tt id="link-490" class="py-name"><a title="epydoc.docbuilder.register_attribute_mergefunc" class="py-name" href="#" onclick="return doclink('link-490', 'register_attribute_mergefunc', 'link-470');">register_attribute_mergefunc</a></tt><tt class="py-op">(</tt><tt class="py-string">'docs_extracted_by'</tt><tt class="py-op">,</tt> <tt id="link-491" class="py-name" targets="Function epydoc.docbuilder.merge_docs_extract [...]
+<a name="L1050"></a><tt class="py-lineno">1050</tt>  <tt class="py-line"><tt id="link-492" class="py-name"><a title="epydoc.docbuilder.register_attribute_mergefunc" class="py-name" href="#" onclick="return doclink('link-492', 'register_attribute_mergefunc', 'link-470');">register_attribute_mergefunc</a></tt><tt class="py-op">(</tt><tt class="py-string">'submodules'</tt><tt class="py-op">,</tt> <tt id="link-493" class="py-name" targets="Function epydoc.docbuilder.merge_submodules()=epydoc [...]
+<a name="L1051"></a><tt class="py-lineno">1051</tt>  <tt class="py-line"> </tt>
+<a name="L1052"></a><tt class="py-lineno">1052</tt>  <tt class="py-line"><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L1053"></a><tt class="py-lineno">1053</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## Import Linking</tt> </tt>
+<a name="L1054"></a><tt class="py-lineno">1054</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L1055"></a><tt class="py-lineno">1055</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="link_imports"></a><div id="link_imports-def"><a name="L1056"></a><tt class="py-lineno">1056</tt> <a class="py-toggle" href="#" id="link_imports-toggle" onclick="return toggle('link_imports');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docbuilder-module.html#link_imports">link_imports</a><tt class="py-op">(</tt><tt class="py-param">val_doc</tt><tt class="py-op">,</tt> <tt class="py-param">docindex</tt><tt class="py-op">)</tt><tt  [...]
+</div><div id="link_imports-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="link_imports-expanded"><a name="L1057"></a><tt class="py-lineno">1057</tt>  <tt class="py-line">    <tt class="py-comment"># Check if the ValueDoc has an unresolved proxy_for link.</tt> </tt>
+<a name="L1058"></a><tt class="py-lineno">1058</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># If so, then resolve it.</tt> </tt>
+<a name="L1059"></a><tt class="py-lineno">1059</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">while</tt> <tt class="py-name">val_doc</tt><tt class="py-op">.</tt><tt id="link-494" class="py-name" targets="Variable epydoc.apidoc.ValueDoc.proxy_for=epydoc.apidoc.ValueDoc-class.html#proxy_for"><a title="epydoc.apidoc.ValueDoc.proxy_for" class="py-name" href="#" onclick="return doclink('link-494', 'proxy_for', 'link-494');">proxy_for</a></tt> <tt class="py-ke [...]
+<a name="L1060"></a><tt class="py-lineno">1060</tt>  <tt class="py-line">        <tt class="py-comment"># Find the valuedoc that the proxy_for name points to.</tt> </tt>
+<a name="L1061"></a><tt class="py-lineno">1061</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">src_doc</tt> <tt class="py-op">=</tt> <tt class="py-name">docindex</tt><tt class="py-op">.</tt><tt id="link-496" class="py-name" targets="Method epydoc.apidoc.DocIndex.get_valdoc()=epydoc.apidoc.DocIndex-class.html#get_valdoc"><a title="epydoc.apidoc.DocIndex.get_valdoc" class="py-name" href="#" onclick="return doclink('link-496', 'get_valdoc', 'link-496');">ge [...]
+<a name="L1062"></a><tt class="py-lineno">1062</tt>  <tt class="py-line"> </tt>
+<a name="L1063"></a><tt class="py-lineno">1063</tt>  <tt class="py-line">        <tt class="py-comment"># If we don't have any valuedoc at that address, then</tt> </tt>
+<a name="L1064"></a><tt class="py-lineno">1064</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># set that address as its canonical name.</tt> </tt>
+<a name="L1065"></a><tt class="py-lineno">1065</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># [XXX] Do I really want to do this?</tt> </tt>
+<a name="L1066"></a><tt class="py-lineno">1066</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">src_doc</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1067"></a><tt class="py-lineno">1067</tt>  <tt class="py-line">            <tt class="py-name">val_doc</tt><tt class="py-op">.</tt><tt id="link-498" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-498', 'canonical_name', 'link-42');">canonical_name</a></tt> <tt class="py-op">=</tt> <tt class="py-name">val_doc</tt><tt class="py-op">.</tt><tt id="link-499" class="py-name"><a title="epydoc.apidoc.ValueDoc.proxy_for" class="py-name" href="#" onclick="return doclink('link-499', 'proxy_for', 'link-494');">proxy_for</a></tt> </tt>
+<a name="L1068"></a><tt class="py-lineno">1068</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> </tt>
+<a name="L1069"></a><tt class="py-lineno">1069</tt>  <tt class="py-line"> </tt>
+<a name="L1070"></a><tt class="py-lineno">1070</tt>  <tt class="py-line">        <tt class="py-comment"># If we *do* have something at that address, then</tt> </tt>
+<a name="L1071"></a><tt class="py-lineno">1071</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># merge the proxy `val_doc` with it.</tt> </tt>
+<a name="L1072"></a><tt class="py-lineno">1072</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">elif</tt> <tt class="py-name">src_doc</tt> <tt class="py-op">!=</tt> <tt class="py-name">val_doc</tt><tt class="py-op">:</tt> </tt>
+<a name="L1073"></a><tt class="py-lineno">1073</tt>  <tt class="py-line">            <tt class="py-comment"># Copy any subclass information from val_doc->src_doc.</tt> </tt>
+<a name="L1074"></a><tt class="py-lineno">1074</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">val_doc</tt><tt class="py-op">,</tt> <tt id="link-500" class="py-name"><a title="epydoc.apidoc.ClassDoc" class="py-name" href="#" onclick="return doclink('link-500', 'ClassDoc', 'link-85');">ClassDoc</a></tt><tt class="py-op">)</tt> <tt class="p [...]
+<a name="L1075"></a><tt class="py-lineno">1075</tt>  <tt class="py-line">                <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">src_doc</tt><tt class="py-op">,</tt> <tt id="link-501" class="py-name"><a title="epydoc.apidoc.ClassDoc" class="py-name" href="#" onclick="return doclink('link-501', 'ClassDoc', 'link-85');">ClassDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1076"></a><tt class="py-lineno">1076</tt>  <tt class="py-line">                <tt class="py-keyword">for</tt> <tt class="py-name">subclass</tt> <tt class="py-keyword">in</tt> <tt class="py-name">val_doc</tt><tt class="py-op">.</tt><tt id="link-502" class="py-name"><a title="epydoc.apidoc.ClassDoc.subclasses" class="py-name" href="#" onclick="return doclink('link-502', 'subclasses', 'link-64');">subclasses</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1077"></a><tt class="py-lineno">1077</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">subclass</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">src_doc</tt><tt class="py-op">.</tt><tt id="link-503" class="py-name"><a title="epydoc.apidoc.ClassDoc.subclasses" class="py-name" href="#" onclick="return doclink('link-503', 'subclasses', 'link-64');">subclasses</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1078"></a><tt class="py-lineno">1078</tt>  <tt class="py-line">                        <tt class="py-name">src_doc</tt><tt class="py-op">.</tt><tt id="link-504" class="py-name"><a title="epydoc.apidoc.ClassDoc.subclasses" class="py-name" href="#" onclick="return doclink('link-504', 'subclasses', 'link-64');">subclasses</a></tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">subclass</tt><tt class="py-op">)</tt> </tt>
+<a name="L1079"></a><tt class="py-lineno">1079</tt>  <tt class="py-line">            <tt class="py-comment"># Then overwrite val_doc with the contents of src_doc.</tt> </tt>
+<a name="L1080"></a><tt class="py-lineno">1080</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">src_doc</tt><tt class="py-op">.</tt><tt id="link-505" class="py-name"><a title="epydoc.apidoc.APIDoc.merge_and_overwrite" class="py-name" href="#" onclick="return doclink('link-505', 'merge_and_overwrite', 'link-392');">merge_and_overwrite</a></tt><tt class="py-op">(</tt><tt class="py-name">val_doc</tt><tt class="py-op">,</tt> <tt class="py-name">ignore_has [...]
+<a name="L1081"></a><tt class="py-lineno">1081</tt>  <tt class="py-line"> </tt>
+<a name="L1082"></a><tt class="py-lineno">1082</tt>  <tt class="py-line">        <tt class="py-comment"># If the proxy_for link points back at src_doc</tt> </tt>
+<a name="L1083"></a><tt class="py-lineno">1083</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># itself, then we most likely have a variable that's</tt> </tt>
+<a name="L1084"></a><tt class="py-lineno">1084</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># shadowing a submodule that it should be equal to.</tt> </tt>
+<a name="L1085"></a><tt class="py-lineno">1085</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># So just get rid of the variable.</tt> </tt>
+<a name="L1086"></a><tt class="py-lineno">1086</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">elif</tt> <tt class="py-name">src_doc</tt> <tt class="py-op">==</tt> <tt class="py-name">val_doc</tt><tt class="py-op">:</tt> </tt>
+<a name="L1087"></a><tt class="py-lineno">1087</tt>  <tt class="py-line">            <tt class="py-name">parent_name</tt> <tt class="py-op">=</tt> <tt class="py-name">val_doc</tt><tt class="py-op">.</tt><tt id="link-506" class="py-name"><a title="epydoc.apidoc.ValueDoc.proxy_for" class="py-name" href="#" onclick="return doclink('link-506', 'proxy_for', 'link-494');">proxy_for</a></tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt c [...]
+<a name="L1088"></a><tt class="py-lineno">1088</tt>  <tt class="py-line">            <tt class="py-name">var_name</tt> <tt class="py-op">=</tt> <tt class="py-name">val_doc</tt><tt class="py-op">.</tt><tt id="link-507" class="py-name"><a title="epydoc.apidoc.ValueDoc.proxy_for" class="py-name" href="#" onclick="return doclink('link-507', 'proxy_for', 'link-494');">proxy_for</a></tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L1089"></a><tt class="py-lineno">1089</tt>  <tt class="py-line">            <tt class="py-name">parent</tt> <tt class="py-op">=</tt> <tt class="py-name">docindex</tt><tt class="py-op">.</tt><tt id="link-508" class="py-name"><a title="epydoc.apidoc.DocIndex.get_valdoc" class="py-name" href="#" onclick="return doclink('link-508', 'get_valdoc', 'link-496');">get_valdoc</a></tt><tt class="py-op">(</tt><tt class="py-name">parent_name</tt><tt class="py-op">)</tt> </tt>
+<a name="L1090"></a><tt class="py-lineno">1090</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">parent</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-name">var_name</tt> <tt class="py-keyword">in</tt> <tt class="py-name">parent</tt><tt class="py-op">.</tt><tt id="link-509" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" h [...]
+<a name="L1091"></a><tt class="py-lineno">1091</tt>  <tt class="py-line">                <tt class="py-keyword">del</tt> <tt class="py-name">parent</tt><tt class="py-op">.</tt><tt id="link-510" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-510', 'variables', 'link-103');">variables</a></tt><tt class="py-op">[</tt><tt class="py-name">var_name</tt><tt class="py-op">]</tt> </tt>
+<a name="L1092"></a><tt class="py-lineno">1092</tt>  <tt class="py-line">            <tt class="py-name">src_doc</tt><tt class="py-op">.</tt><tt id="link-511" class="py-name"><a title="epydoc.apidoc.ValueDoc.proxy_for" class="py-name" href="#" onclick="return doclink('link-511', 'proxy_for', 'link-494');">proxy_for</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+</div><a name="L1093"></a><tt class="py-lineno">1093</tt>  <tt class="py-line"> </tt>
+<a name="L1094"></a><tt class="py-lineno">1094</tt>  <tt class="py-line"><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L1095"></a><tt class="py-lineno">1095</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## Canonical Name Assignment</tt> </tt>
+<a name="L1096"></a><tt class="py-lineno">1096</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L1097"></a><tt class="py-lineno">1097</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L1098"></a><tt class="py-lineno">1098</tt>  <tt class="py-line"><tt id="link-512" class="py-name" targets="Variable epydoc.docbuilder._name_scores=epydoc.docbuilder-module.html#_name_scores"><a title="epydoc.docbuilder._name_scores" class="py-name" href="#" onclick="return doclink('link-512', '_name_scores', 'link-512');">_name_scores</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L1099"></a><tt class="py-lineno">1099</tt>  <tt class="py-line"><tt class="py-string">"""A dictionary mapping from each C{ValueDoc} to the score that has</tt> </tt>
+<a name="L1100"></a><tt class="py-lineno">1100</tt>  <tt class="py-line"><tt class="py-string">been assigned to its current cannonical name.  If</tt> </tt>
+<a name="L1101"></a><tt class="py-lineno">1101</tt>  <tt class="py-line"><tt class="py-string">L{assign_canonical_names()} finds a canonical name with a better</tt> </tt>
+<a name="L1102"></a><tt class="py-lineno">1102</tt>  <tt class="py-line"><tt class="py-string">score, then it will replace the old name."""</tt> </tt>
+<a name="L1103"></a><tt class="py-lineno">1103</tt>  <tt class="py-line"> </tt>
+<a name="L1104"></a><tt class="py-lineno">1104</tt>  <tt class="py-line"><tt id="link-513" class="py-name" targets="Variable epydoc.docbuilder._unreachable_names=epydoc.docbuilder-module.html#_unreachable_names"><a title="epydoc.docbuilder._unreachable_names" class="py-name" href="#" onclick="return doclink('link-513', '_unreachable_names', 'link-513');">_unreachable_names</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt id="link-514" class="py-name"><a title="epydoc.apidoc. [...]
+<a name="L1105"></a><tt class="py-lineno">1105</tt>  <tt class="py-line"><tt class="py-string">"""The set of names that have been used for unreachable objects.  This</tt> </tt>
+<a name="L1106"></a><tt class="py-lineno">1106</tt>  <tt class="py-line"><tt class="py-string">is used to ensure there are no duplicate cannonical names assigned.</tt> </tt>
+<a name="L1107"></a><tt class="py-lineno">1107</tt>  <tt class="py-line"><tt class="py-string">C{_unreachable_names} is a dictionary mapping from dotted names to</tt> </tt>
+<a name="L1108"></a><tt class="py-lineno">1108</tt>  <tt class="py-line"><tt class="py-string">integer ids, where the next unused unreachable name derived from</tt> </tt>
+<a name="L1109"></a><tt class="py-lineno">1109</tt>  <tt class="py-line"><tt class="py-string">dotted name C{n} is</tt> </tt>
+<a name="L1110"></a><tt class="py-lineno">1110</tt>  <tt class="py-line"><tt class="py-string">C{DottedName('%s-%s' % (n, str(_unreachable_names[n]+1))}"""</tt> </tt>
+<a name="L1111"></a><tt class="py-lineno">1111</tt>  <tt class="py-line"> </tt>
+<a name="assign_canonical_names"></a><div id="assign_canonical_names-def"><a name="L1112"></a><tt class="py-lineno">1112</tt> <a class="py-toggle" href="#" id="assign_canonical_names-toggle" onclick="return toggle('assign_canonical_names');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docbuilder-module.html#assign_canonical_names">assign_canonical_names</a><tt class="py-op">(</tt><tt class="py-param">val_doc</tt><tt class="py-op">,</tt> <t [...]
+</div><div id="assign_canonical_names-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="assign_canonical_names-expanded"><a name="L1113"></a><tt class="py-lineno">1113</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L1114"></a><tt class="py-lineno">1114</tt>  <tt class="py-line"><tt class="py-docstring">    Assign a canonical name to C{val_doc} (if it doesn't have one</tt> </tt>
+<a name="L1115"></a><tt class="py-lineno">1115</tt>  <tt class="py-line"><tt class="py-docstring">    already), and (recursively) to each variable in C{val_doc}.</tt> </tt>
+<a name="L1116"></a><tt class="py-lineno">1116</tt>  <tt class="py-line"><tt class="py-docstring">    In particular, C{val_doc} will be assigned the canonical name</tt> </tt>
+<a name="L1117"></a><tt class="py-lineno">1117</tt>  <tt class="py-line"><tt class="py-docstring">    C{name} iff either:</tt> </tt>
+<a name="L1118"></a><tt class="py-lineno">1118</tt>  <tt class="py-line"><tt class="py-docstring">      - C{val_doc}'s canonical name is C{UNKNOWN}; or</tt> </tt>
+<a name="L1119"></a><tt class="py-lineno">1119</tt>  <tt class="py-line"><tt class="py-docstring">      - C{val_doc}'s current canonical name was assigned by this</tt> </tt>
+<a name="L1120"></a><tt class="py-lineno">1120</tt>  <tt class="py-line"><tt class="py-docstring">        method; but the score of the new name (C{score}) is higher</tt> </tt>
+<a name="L1121"></a><tt class="py-lineno">1121</tt>  <tt class="py-line"><tt class="py-docstring">        than the score of the current name (C{score_dict[val_doc]}).</tt> </tt>
+<a name="L1122"></a><tt class="py-lineno">1122</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt>
+<a name="L1123"></a><tt class="py-lineno">1123</tt>  <tt class="py-line"><tt class="py-docstring">    Note that canonical names will even be assigned to values</tt> </tt>
+<a name="L1124"></a><tt class="py-lineno">1124</tt>  <tt class="py-line"><tt class="py-docstring">    like integers and C{None}; but these should be harmless.</tt> </tt>
+<a name="L1125"></a><tt class="py-lineno">1125</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1126"></a><tt class="py-lineno">1126</tt>  <tt class="py-line">    <tt class="py-comment"># If we've already visited this node, and our new score</tt> </tt>
+<a name="L1127"></a><tt class="py-lineno">1127</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># doesn't beat our old score, then there's nothing more to do.</tt> </tt>
+<a name="L1128"></a><tt class="py-lineno">1128</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># Note that since score increases strictly monotonically, this</tt> </tt>
+<a name="L1129"></a><tt class="py-lineno">1129</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># also prevents us from going in cycles.</tt> </tt>
+<a name="L1130"></a><tt class="py-lineno">1130</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">val_doc</tt> <tt class="py-keyword">in</tt> <tt id="link-517" class="py-name"><a title="epydoc.docbuilder._name_scores" class="py-name" href="#" onclick="return doclink('link-517', '_name_scores', 'link-512');">_name_scores</a></tt> <tt class="py-keyword">and</tt> <tt class="py-name">score</tt> <tt class="py-op"><=</tt> <tt id="lin [...]
+<a name="L1131"></a><tt class="py-lineno">1131</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> </tt>
+<a name="L1132"></a><tt class="py-lineno">1132</tt>  <tt class="py-line"> </tt>
+<a name="L1133"></a><tt class="py-lineno">1133</tt>  <tt class="py-line">    <tt class="py-comment"># Update val_doc's canonical name, if appropriate.</tt> </tt>
+<a name="L1134"></a><tt class="py-lineno">1134</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">val_doc</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt id="link-519" class="py-name"><a title="epydoc.docbuilder._name_scores" class="py-name" href="#" onclick="return doclink('link-519', '_name_scores', 'link-512');">_name_scores</a></tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L1135"></a><tt class="py-lineno">1135</tt>  <tt class="py-line">        <tt class="py-name">val_doc</tt><tt class="py-op">.</tt><tt id="link-520" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-520', 'canonical_name', 'link-42');">canonical_name</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt id="link-521" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-521', 'UNKNOWN', 'link-43');">UNKNOWN</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1136"></a><tt class="py-lineno">1136</tt>  <tt class="py-line">        <tt class="py-comment"># If this is the first time we've seen val_doc, and it</tt> </tt>
+<a name="L1137"></a><tt class="py-lineno">1137</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># already has a name, then don't change that name.</tt> </tt>
+<a name="L1138"></a><tt class="py-lineno">1138</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt id="link-522" class="py-name"><a title="epydoc.docbuilder._name_scores" class="py-name" href="#" onclick="return doclink('link-522', '_name_scores', 'link-512');">_name_scores</a></tt><tt class="py-op">[</tt><tt class="py-name">val_doc</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">maxint</tt> </tt>
+<a name="L1139"></a><tt class="py-lineno">1139</tt>  <tt class="py-line">        <tt id="link-523" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-523', 'name', 'link-24');">name</a></tt> <tt class="py-op">=</tt> <tt class="py-name">val_doc</tt><tt class="py-op">.</tt><tt id="link-524" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-524', 'canonical_name', 'link-42');">canonical_name</a></tt> </tt>
+<a name="L1140"></a><tt class="py-lineno">1140</tt>  <tt class="py-line">        <tt class="py-name">score</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L1141"></a><tt class="py-lineno">1141</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1142"></a><tt class="py-lineno">1142</tt>  <tt class="py-line">        <tt class="py-comment"># Otherwise, update the name iff the new score is better</tt> </tt>
+<a name="L1143"></a><tt class="py-lineno">1143</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># than the old one.</tt> </tt>
+<a name="L1144"></a><tt class="py-lineno">1144</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">val_doc</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt id="link-525" class="py-name"><a title="epydoc.docbuilder._name_scores" class="py-name" href="#" onclick="return doclink('link-525', '_name_scores', 'link-512');">_name_scores</a></tt> <tt class="py-keyword">or</tt> </tt>
+<a name="L1145"></a><tt class="py-lineno">1145</tt>  <tt class="py-line">            <tt class="py-name">score</tt> <tt class="py-op">></tt> <tt id="link-526" class="py-name"><a title="epydoc.docbuilder._name_scores" class="py-name" href="#" onclick="return doclink('link-526', '_name_scores', 'link-512');">_name_scores</a></tt><tt class="py-op">[</tt><tt class="py-name">val_doc</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1146"></a><tt class="py-lineno">1146</tt>  <tt class="py-line">            <tt class="py-name">val_doc</tt><tt class="py-op">.</tt><tt id="link-527" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-527', 'canonical_name', 'link-42');">canonical_name</a></tt> <tt class="py-op">=</tt> <tt id="link-528" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-528', 'name', 'link-24');">name</a></tt> </tt>
+<a name="L1147"></a><tt class="py-lineno">1147</tt>  <tt class="py-line">            <tt id="link-529" class="py-name"><a title="epydoc.docbuilder._name_scores" class="py-name" href="#" onclick="return doclink('link-529', '_name_scores', 'link-512');">_name_scores</a></tt><tt class="py-op">[</tt><tt class="py-name">val_doc</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">score</tt> </tt>
+<a name="L1148"></a><tt class="py-lineno">1148</tt>  <tt class="py-line"> </tt>
+<a name="L1149"></a><tt class="py-lineno">1149</tt>  <tt class="py-line">    <tt class="py-comment"># Recurse to any contained values.</tt> </tt>
+<a name="L1150"></a><tt class="py-lineno">1150</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">val_doc</tt><tt class="py-op">,</tt> <tt id="link-530" class="py-name"><a title="epydoc.apidoc.NamespaceDoc" class="py-name" href="#" onclick="return doclink('link-530', 'NamespaceDoc', 'link-102');">NamespaceDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1151"></a><tt class="py-lineno">1151</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">var_doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">val_doc</tt><tt class="py-op">.</tt><tt id="link-531" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-531', 'variables', 'link-103');">variables</a></tt><tt class="py-op">.</tt><tt class="py-name">values</tt><tt class="py-op [...]
+<a name="L1152"></a><tt class="py-lineno">1152</tt>  <tt class="py-line">            <tt class="py-comment"># Set the variable's canonical name.</tt> </tt>
+<a name="L1153"></a><tt class="py-lineno">1153</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">varname</tt> <tt class="py-op">=</tt> <tt id="link-532" class="py-name"><a title="epydoc.apidoc.DottedName" class="py-name" href="#" onclick="return doclink('link-532', 'DottedName', 'link-29');">DottedName</a></tt><tt class="py-op">(</tt><tt id="link-533" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doc [...]
+<a name="L1154"></a><tt class="py-lineno">1154</tt>  <tt class="py-line">            <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-535" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-535', 'canonical_name', 'link-42');">canonical_name</a></tt> <tt class="py-op">=</tt> <tt class="py-name">varname</tt> </tt>
+<a name="L1155"></a><tt class="py-lineno">1155</tt>  <tt class="py-line"> </tt>
+<a name="L1156"></a><tt class="py-lineno">1156</tt>  <tt class="py-line">            <tt class="py-comment"># If the value is unknown, or is a generic value doc, then</tt> </tt>
+<a name="L1157"></a><tt class="py-lineno">1157</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># the valuedoc doesn't get assigned a name; move on.</tt> </tt>
+<a name="L1158"></a><tt class="py-lineno">1158</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-536" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-536', 'value', 'link-106');">value</a></tt> <tt class="py-keyword">is</tt> <tt id="link-537" class="py-name"><a title="epydoc.apidoc.UNK [...]
+<a name="L1159"></a><tt class="py-lineno">1159</tt>  <tt class="py-line">                <tt class="py-keyword">or</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-538" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-538', 'value', 'link-106');">value</a></tt><tt class="py-op">,</tt> <tt id="link-539" class="py-name"><a title="epydoc.apidoc [...]
+<a name="L1160"></a><tt class="py-lineno">1160</tt>  <tt class="py-line">                <tt class="py-keyword">continue</tt> </tt>
+<a name="L1161"></a><tt class="py-lineno">1161</tt>  <tt class="py-line">             </tt>
+<a name="L1162"></a><tt class="py-lineno">1162</tt>  <tt class="py-line">            <tt class="py-comment"># [XX] After svn commit 1644-1647, I'm not sure if this</tt> </tt>
+<a name="L1163"></a><tt class="py-lineno">1163</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># ever gets used:  This check is for cases like</tt> </tt>
+<a name="L1164"></a><tt class="py-lineno">1164</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># curses.wrapper, where an imported variable shadows its</tt> </tt>
+<a name="L1165"></a><tt class="py-lineno">1165</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># value's "real" location.</tt> </tt>
+<a name="L1166"></a><tt class="py-lineno">1166</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt id="link-540" class="py-name" targets="Function epydoc.docbuilder._var_shadows_self()=epydoc.docbuilder-module.html#_var_shadows_self"><a title="epydoc.docbuilder._var_shadows_self" class="py-name" href="#" onclick="return doclink('link-540', '_var_shadows_self', 'link-540');">_var_shadows_self</a></tt><tt class="py-op">(</tt><tt class="py-na [...]
+<a name="L1167"></a><tt class="py-lineno">1167</tt>  <tt class="py-line">                <tt id="link-541" class="py-name" targets="Function epydoc.docbuilder._fix_self_shadowing_var()=epydoc.docbuilder-module.html#_fix_self_shadowing_var"><a title="epydoc.docbuilder._fix_self_shadowing_var" class="py-name" href="#" onclick="return doclink('link-541', '_fix_self_shadowing_var', 'link-541');">_fix_self_shadowing_var</a></tt><tt class="py-op">(</tt><tt class="py-name">var_doc</tt><tt class [...]
+<a name="L1168"></a><tt class="py-lineno">1168</tt>  <tt class="py-line">     </tt>
+<a name="L1169"></a><tt class="py-lineno">1169</tt>  <tt class="py-line">            <tt class="py-comment"># Find the score for this new name.            </tt> </tt>
+<a name="L1170"></a><tt class="py-lineno">1170</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">vardoc_score</tt> <tt class="py-op">=</tt> <tt class="py-name">score</tt><tt class="py-op">-</tt><tt class="py-number">1</tt> </tt>
+<a name="L1171"></a><tt class="py-lineno">1171</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-542" class="py-name" targets="Variable epydoc.apidoc.VariableDoc.is_imported=epydoc.apidoc.VariableDoc-class.html#is_imported"><a title="epydoc.apidoc.VariableDoc.is_imported" class="py-name" href="#" onclick="return doclink('link-542', 'is_imported', 'link-542');">is_imported</a></tt> <tt class="py-keywor [...]
+<a name="L1172"></a><tt class="py-lineno">1172</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-544" class="py-name"><a title="epydoc.apidoc.VariableDoc.is_imported" class="py-name" href="#" onclick="return doclink('link-544', 'is_imported', 'link-542');">is_imported</a></tt><tt class="py-op">:</tt> <tt class="py-name">vardoc_score</tt> <tt class="py-op">-=</tt> <tt class="py-number">100</tt> </tt>
+<a name="L1173"></a><tt class="py-lineno">1173</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-545" class="py-name" targets="Variable epydoc.apidoc.VariableDoc.is_alias=epydoc.apidoc.VariableDoc-class.html#is_alias"><a title="epydoc.apidoc.VariableDoc.is_alias" class="py-name" href="#" onclick="return doclink('link-545', 'is_alias', 'link-545');">is_alias</a></tt> <tt class="py-keyword">is</tt> <tt  [...]
+<a name="L1174"></a><tt class="py-lineno">1174</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-547" class="py-name"><a title="epydoc.apidoc.VariableDoc.is_alias" class="py-name" href="#" onclick="return doclink('link-547', 'is_alias', 'link-545');">is_alias</a></tt><tt class="py-op">:</tt> <tt class="py-name">vardoc_score</tt> <tt class="py-op">-=</tt> <tt class="py-number">1000</tt> </tt>
+<a name="L1175"></a><tt class="py-lineno">1175</tt>  <tt class="py-line">             </tt>
+<a name="L1176"></a><tt class="py-lineno">1176</tt>  <tt class="py-line">            <tt id="link-548" class="py-name"><a title="epydoc.docbuilder.assign_canonical_names" class="py-name" href="#" onclick="return doclink('link-548', 'assign_canonical_names', 'link-74');">assign_canonical_names</a></tt><tt class="py-op">(</tt><tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-549" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick= [...]
+<a name="L1177"></a><tt class="py-lineno">1177</tt>  <tt class="py-line">                                   <tt class="py-name">docindex</tt><tt class="py-op">,</tt> <tt class="py-name">vardoc_score</tt><tt class="py-op">)</tt> </tt>
+<a name="L1178"></a><tt class="py-lineno">1178</tt>  <tt class="py-line"> </tt>
+<a name="L1179"></a><tt class="py-lineno">1179</tt>  <tt class="py-line">    <tt class="py-comment"># Recurse to any directly reachable values.</tt> </tt>
+<a name="L1180"></a><tt class="py-lineno">1180</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">for</tt> <tt class="py-name">val_doc_2</tt> <tt class="py-keyword">in</tt> <tt class="py-name">val_doc</tt><tt class="py-op">.</tt><tt id="link-550" class="py-name" targets="Method epydoc.apidoc.APIDoc.apidoc_links()=epydoc.apidoc.APIDoc-class.html#apidoc_links,Method epydoc.apidoc.ClassDoc.apidoc_links()=epydoc.apidoc.ClassDoc-class.html#apidoc_links,Method epy [...]
+epydoc.apidoc.ClassDoc.apidoc_links
+epydoc.apidoc.ModuleDoc.apidoc_links
+epydoc.apidoc.NamespaceDoc.apidoc_links
+epydoc.apidoc.PropertyDoc.apidoc_links
+epydoc.apidoc.ValueDoc.apidoc_links
+epydoc.apidoc.VariableDoc.apidoc_links" class="py-name" href="#" onclick="return doclink('link-550', 'apidoc_links', 'link-550');">apidoc_links</a></tt><tt class="py-op">(</tt><tt id="link-551" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-551', 'variables', 'link-103');">variables</a></tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1181"></a><tt class="py-lineno">1181</tt>  <tt class="py-line">        <tt class="py-name">val_name</tt><tt class="py-op">,</tt> <tt class="py-name">val_score</tt> <tt class="py-op">=</tt> <tt id="link-552" class="py-name" targets="Function epydoc.docbuilder._unreachable_name_for()=epydoc.docbuilder-module.html#_unreachable_name_for"><a title="epydoc.docbuilder._unreachable_name_for" class="py-name" href="#" onclick="return doclink('link-552', '_unreachable_name_for', 'link-552 [...]
+<a name="L1182"></a><tt class="py-lineno">1182</tt>  <tt class="py-line">        <tt id="link-553" class="py-name"><a title="epydoc.docbuilder.assign_canonical_names" class="py-name" href="#" onclick="return doclink('link-553', 'assign_canonical_names', 'link-74');">assign_canonical_names</a></tt><tt class="py-op">(</tt><tt class="py-name">val_doc_2</tt><tt class="py-op">,</tt> <tt class="py-name">val_name</tt><tt class="py-op">,</tt> <tt class="py-name">docindex</tt><tt class="py-op">,< [...]
+</div><a name="L1183"></a><tt class="py-lineno">1183</tt>  <tt class="py-line"> </tt>
+<a name="_var_shadows_self"></a><div id="_var_shadows_self-def"><a name="L1184"></a><tt class="py-lineno">1184</tt> <a class="py-toggle" href="#" id="_var_shadows_self-toggle" onclick="return toggle('_var_shadows_self');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docbuilder-module.html#_var_shadows_self">_var_shadows_self</a><tt class="py-op">(</tt><tt class="py-param">var_doc</tt><tt class="py-op">,</tt> <tt class="py-param">varname</tt [...]
+</div><div id="_var_shadows_self-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_var_shadows_self-expanded"><a name="L1185"></a><tt class="py-lineno">1185</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-554" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-554', 'value', 'link-106');">value [...]
+<a name="L1186"></a><tt class="py-lineno">1186</tt>  <tt class="py-line">            <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-556" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-556', 'value', 'link-106');">value</a></tt><tt class="py-op">.</tt><tt id="link-557" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-557', 'canonical_name', 'link-42');">canonical_name</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-558" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-558', 'UNKNOWN', 'link-43');">UNKNOWN</a></tt><tt class="py-op">)</tt>  [...]
+<a name="L1187"></a><tt class="py-lineno">1187</tt>  <tt class="py-line">            <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-559" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-559', 'value', 'link-106');">value</a></tt><tt class="py-op">.</tt><tt id="link-560" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-560', 'canonical_name', 'link-42');">canonical_name</a></tt> <tt class="py-op">!=</tt> <tt class="py-name">varname</tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L1188"></a><tt class="py-lineno">1188</tt>  <tt class="py-line">            <tt class="py-name">varname</tt><tt class="py-op">.</tt><tt id="link-561" class="py-name" targets="Method epydoc.apidoc.DottedName.dominates()=epydoc.apidoc.DottedName-class.html#dominates"><a title="epydoc.apidoc.DottedName.dominates" class="py-name" href="#" onclick="return doclink('link-561', 'dominates', 'link-561');">dominates</a></tt><tt class="py-op">(</tt><tt class="py-name">var_doc</tt><tt class [...]
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-563', 'canonical_name', 'link-42');">canonical_name</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1189"></a><tt class="py-lineno">1189</tt>  <tt class="py-line"> </tt>
+<a name="_fix_self_shadowing_var"></a><div id="_fix_self_shadowing_var-def"><a name="L1190"></a><tt class="py-lineno">1190</tt> <a class="py-toggle" href="#" id="_fix_self_shadowing_var-toggle" onclick="return toggle('_fix_self_shadowing_var');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docbuilder-module.html#_fix_self_shadowing_var">_fix_self_shadowing_var</a><tt class="py-op">(</tt><tt class="py-param">var_doc</tt><tt class="py-op">,</ [...]
+</div><div id="_fix_self_shadowing_var-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_fix_self_shadowing_var-expanded"><a name="L1191"></a><tt class="py-lineno">1191</tt>  <tt class="py-line">    <tt class="py-comment"># If possible, find another name for the shadowed value.</tt> </tt>
+<a name="L1192"></a><tt class="py-lineno">1192</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">cname</tt> <tt class="py-op">=</tt> <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-564" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-564', 'value', 'link-106');">value</a></tt><tt class="py-op">.</tt><tt id="link-565" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.ca [...]
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-565', 'canonical_name', 'link-42');">canonical_name</a></tt> </tt>
+<a name="L1193"></a><tt class="py-lineno">1193</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">cname</tt><tt class="py-op">)</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1194"></a><tt class="py-lineno">1194</tt>  <tt class="py-line">        <tt class="py-name">new_name</tt> <tt class="py-op">=</tt> <tt class="py-name">cname</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-name">i</tt><tt class="py-op">]</tt> <tt class="py-op">+</tt> <tt class="py-op">(</tt><tt class="py-name">cname</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt><tt class="py-op">+</tt><tt class="py-string">"'"</tt><tt class="py-op [...]
+<a name="L1195"></a><tt class="py-lineno">1195</tt>  <tt class="py-line">        <tt class="py-name">val_doc</tt> <tt class="py-op">=</tt> <tt class="py-name">docindex</tt><tt class="py-op">.</tt><tt id="link-566" class="py-name"><a title="epydoc.apidoc.DocIndex.get_valdoc" class="py-name" href="#" onclick="return doclink('link-566', 'get_valdoc', 'link-496');">get_valdoc</a></tt><tt class="py-op">(</tt><tt class="py-name">new_name</tt><tt class="py-op">)</tt> </tt>
+<a name="L1196"></a><tt class="py-lineno">1196</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">val_doc</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1197"></a><tt class="py-lineno">1197</tt>  <tt class="py-line">            <tt id="link-567" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-567', 'log', 'link-14');">log</a></tt><tt class="py-op">.</tt><tt id="link-568" class="py-name"><a title="epydoc.checker.DocChecker.warning
+epydoc.log.warning" class="py-name" href="#" onclick="return doclink('link-568', 'warning', 'link-151');">warning</a></tt><tt class="py-op">(</tt><tt class="py-string">"%s shadows its own value -- using %s instead"</tt> <tt class="py-op">%</tt> </tt>
+<a name="L1198"></a><tt class="py-lineno">1198</tt>  <tt class="py-line">                     <tt class="py-op">(</tt><tt class="py-name">varname</tt><tt class="py-op">,</tt> <tt class="py-name">new_name</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1199"></a><tt class="py-lineno">1199</tt>  <tt class="py-line">            <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-569" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-569', 'value', 'link-106');">value</a></tt> <tt class="py-op">=</tt> <tt class="py-name">val_doc</tt> </tt>
+<a name="L1200"></a><tt class="py-lineno">1200</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> </tt>
+<a name="L1201"></a><tt class="py-lineno">1201</tt>  <tt class="py-line"> </tt>
+<a name="L1202"></a><tt class="py-lineno">1202</tt>  <tt class="py-line">    <tt class="py-comment"># If we couldn't find the actual value, use an unreachable name.</tt> </tt>
+<a name="L1203"></a><tt class="py-lineno">1203</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-570" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-570', 'name', 'link-24');">name</a></tt><tt class="py-op">,</tt> <tt class="py-name">score</tt> <tt class="py-op">=</tt> <tt id="link-571" class="py-name"><a title="epydoc.docbuilder._unreachable_name_for" class="py-name" href="#" onclick="return doclink(' [...]
+<a name="L1204"></a><tt class="py-lineno">1204</tt>  <tt class="py-line">    <tt id="link-573" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-573', 'log', 'link-14');">log</a></tt><tt class="py-op">.</tt><tt id="link-574" class="py-name"><a title="epydoc.checker.DocChecker.warning
+epydoc.log.warning" class="py-name" href="#" onclick="return doclink('link-574', 'warning', 'link-151');">warning</a></tt><tt class="py-op">(</tt><tt class="py-string">'%s shadows itself -- using %s instead'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">varname</tt><tt class="py-op">,</tt> <tt id="link-575" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-575', 'name', 'link-24');">name</a></tt><t [...]
+<a name="L1205"></a><tt class="py-lineno">1205</tt>  <tt class="py-line">    <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-576" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-576', 'value', 'link-106');">value</a></tt><tt class="py-op">.</tt><tt id="link-577" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-577', 'canonical_name', 'link-42');">canonical_name</a></tt> <tt class="py-op">=</tt> <tt id="link-578" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-578', 'name', 'link-24');">name</a></tt> </tt>
+</div><a name="L1206"></a><tt class="py-lineno">1206</tt>  <tt class="py-line"> </tt>
+<a name="_unreachable_name_for"></a><div id="_unreachable_name_for-def"><a name="L1207"></a><tt class="py-lineno">1207</tt> <a class="py-toggle" href="#" id="_unreachable_name_for-toggle" onclick="return toggle('_unreachable_name_for');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docbuilder-module.html#_unreachable_name_for">_unreachable_name_for</a><tt class="py-op">(</tt><tt class="py-param">val_doc</tt><tt class="py-op">,</tt> <tt clas [...]
+</div><div id="_unreachable_name_for-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_unreachable_name_for-expanded"><a name="L1208"></a><tt class="py-lineno">1208</tt>  <tt class="py-line">    <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">val_doc</tt><tt class="py-op">,</tt> <tt id="link-579" class="py-name"><a title="epydoc.apidoc.ValueDoc" class="py-name" href="#" onclick="return doclink('link [...]
+<a name="L1209"></a><tt class="py-lineno">1209</tt>  <tt class="py-line">     </tt>
+<a name="L1210"></a><tt class="py-lineno">1210</tt>  <tt class="py-line">    <tt class="py-comment"># [xx] (when) does this help?</tt> </tt>
+<a name="L1211"></a><tt class="py-lineno">1211</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">val_doc</tt><tt class="py-op">,</tt> <tt id="link-580" class="py-name"><a title="epydoc.apidoc.ModuleDoc" class="py-name" href="#" onclick="return doclink('link-580', 'ModuleDoc', 'link-134');">ModuleDoc</a></tt><tt class="py-op">)</tt> <tt class="py-ke [...]
+<a name="L1212"></a><tt class="py-lineno">1212</tt>  <tt class="py-line">        <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">val_doc</tt><tt class="py-op">.</tt><tt id="link-581" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-581', 'canonical_name', 'link-42');">canonical_name</a></tt><tt class="py-op">)</tt><tt class="py-op">==</tt><tt class="py-number">1</tt> <tt class="py-keyword">and</tt> <tt class="py-name">val_doc</tt><tt class="py-op">.</tt><tt id="link-582" class="py-name" targets="Variable epydoc.apidoc.ModuleDoc.package=epydoc.apidoc.ModuleDoc-class.html#package"><a title="epydoc.apidoc.ModuleDoc.package [...]
+<a name="L1213"></a><tt class="py-lineno">1213</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">root_val</tt> <tt class="py-keyword">in</tt> <tt class="py-name">docindex</tt><tt class="py-op">.</tt><tt class="py-name">root</tt><tt class="py-op">:</tt> </tt>
+<a name="L1214"></a><tt class="py-lineno">1214</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">root_val</tt><tt class="py-op">.</tt><tt id="link-583" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-583', 'canonical_name', 'link-42');">canonical_name</a></tt> <tt class="py-op">==</tt> <tt class="py-name">val_doc</tt><tt class="py-op">.</tt><tt id="link-584" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-584', 'canonical_name', 'link-42');">canonical_name</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1215"></a><tt class="py-lineno">1215</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">root_val</tt> <tt class="py-op">!=</tt> <tt class="py-name">val_doc</tt><tt class="py-op">:</tt>  </tt>
+<a name="L1216"></a><tt class="py-lineno">1216</tt>  <tt class="py-line">                    <tt id="link-585" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-585', 'log', 'link-14');">log</a></tt><tt class="py-op">.</tt><tt id="link-586" class="py-name"><a title="epydoc.log.error" class="py-name" href="#" onclick="return doclink('link-586', 'error', 'link-22');">error</a></tt><tt class="py-op">(</tt><tt class="py-string">"Name conflict: %r vs %r"</tt> <tt class="py-op">%</tt> </tt>
+<a name="L1217"></a><tt class="py-lineno">1217</tt>  <tt class="py-line">                              <tt class="py-op">(</tt><tt class="py-name">val_doc</tt><tt class="py-op">,</tt> <tt class="py-name">root_val</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1218"></a><tt class="py-lineno">1218</tt>  <tt class="py-line">                <tt class="py-keyword">break</tt> </tt>
+<a name="L1219"></a><tt class="py-lineno">1219</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1220"></a><tt class="py-lineno">1220</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">val_doc</tt><tt class="py-op">.</tt><tt id="link-587" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-587', 'canonical_name', 'link-42');">canonical_name</a></tt><tt class="py-op">,</tt> <tt class="py-op">-</tt><tt class="py-number">1000</tt> </tt>
+<a name="L1221"></a><tt class="py-lineno">1221</tt>  <tt class="py-line"> </tt>
+<a name="L1222"></a><tt class="py-lineno">1222</tt>  <tt class="py-line">    <tt class="py-comment"># Assign it an 'unreachable' name:</tt> </tt>
+<a name="L1223"></a><tt class="py-lineno">1223</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">val_doc</tt><tt class="py-op">.</tt><tt id="link-588" class="py-name"><a title="epydoc.apidoc.ValueDoc.pyval" class="py-name" href="#" onclick="return doclink('link-588', 'pyval', 'link-368');">pyval</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt id="link-589" class="py-name"><a tit [...]
+<a name="L1224"></a><tt class="py-lineno">1224</tt>  <tt class="py-line">          <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">val_doc</tt><tt class="py-op">.</tt><tt id="link-590" class="py-name"><a title="epydoc.apidoc.ValueDoc.pyval" class="py-name" href="#" onclick="return doclink('link-590', 'pyval', 'link-368');">pyval</a></tt><tt class="py-op">,</tt> <tt class="py-string">'__name__'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-o [...]
+<a name="L1225"></a><tt class="py-lineno">1225</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L1226"></a><tt class="py-lineno">1226</tt>  <tt class="py-line">            <tt id="link-591" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-591', 'name', 'link-24');">name</a></tt> <tt class="py-op">=</tt> <tt id="link-592" class="py-name"><a title="epydoc.apidoc.DottedName" class="py-name" href="#" onclick="return doclink('link-592', 'DottedName', 'link-29');">DottedName</a></tt><tt class="py-op">(</tt><tt id="l [...]
+<a name="L1227"></a><tt class="py-lineno">1227</tt>  <tt class="py-line">                              <tt class="py-name">val_doc</tt><tt class="py-op">.</tt><tt id="link-595" class="py-name"><a title="epydoc.apidoc.ValueDoc.pyval" class="py-name" href="#" onclick="return doclink('link-595', 'pyval', 'link-368');">pyval</a></tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt><tt class="py-op">,</tt> <tt class="py-name">strict</tt><tt class="py-op">=</tt><tt class="py-name">True [...]
+<a name="L1228"></a><tt class="py-lineno">1228</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt id="link-596" class="py-name"><a title="epydoc.apidoc.DottedName" class="py-name" href="#" onclick="return doclink('link-596', 'DottedName', 'link-29');">DottedName</a></tt><tt class="py-op">.</tt><tt id="link-597" class="py-name" targets="Class epydoc.apidoc.DottedName.InvalidDottedName=epydoc.apidoc.DottedName.InvalidDottedName-class.html"><a title="epydoc.apidoc.Dott [...]
+<a name="L1229"></a><tt class="py-lineno">1229</tt>  <tt class="py-line">            <tt id="link-598" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-598', 'name', 'link-24');">name</a></tt> <tt class="py-op">=</tt> <tt id="link-599" class="py-name"><a title="epydoc.apidoc.DottedName" class="py-name" href="#" onclick="return doclink('link-599', 'DottedName', 'link-29');">DottedName</a></tt><tt class="py-op">(</tt><tt id="l [...]
+<a name="L1230"></a><tt class="py-lineno">1230</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1231"></a><tt class="py-lineno">1231</tt>  <tt class="py-line">        <tt id="link-602" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-602', 'name', 'link-24');">name</a></tt> <tt class="py-op">=</tt> <tt id="link-603" class="py-name"><a title="epydoc.apidoc.DottedName" class="py-name" href="#" onclick="return doclink('link-603', 'DottedName', 'link-29');">DottedName</a></tt><tt class="py-op">(</tt><tt id="link- [...]
+<a name="L1232"></a><tt class="py-lineno">1232</tt>  <tt class="py-line"> </tt>
+<a name="L1233"></a><tt class="py-lineno">1233</tt>  <tt class="py-line">    <tt class="py-comment"># Uniquify the name.</tt> </tt>
+<a name="L1234"></a><tt class="py-lineno">1234</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt id="link-606" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-606', 'name', 'link-24');">name</a></tt> <tt class="py-keyword">in</tt> <tt id="link-607" class="py-name"><a title="epydoc.docbuilder._unreachable_names" class="py-name" href="#" onclick="return doclink('link-607', '_unreacha [...]
+<a name="L1235"></a><tt class="py-lineno">1235</tt>  <tt class="py-line">        <tt id="link-608" class="py-name"><a title="epydoc.docbuilder._unreachable_names" class="py-name" href="#" onclick="return doclink('link-608', '_unreachable_names', 'link-513');">_unreachable_names</a></tt><tt class="py-op">[</tt><tt id="link-609" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-609', 'name', 'link-24');">name</a></tt><tt class= [...]
+<a name="L1236"></a><tt class="py-lineno">1236</tt>  <tt class="py-line">        <tt id="link-610" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-610', 'name', 'link-24');">name</a></tt> <tt class="py-op">=</tt> <tt id="link-611" class="py-name"><a title="epydoc.apidoc.DottedName" class="py-name" href="#" onclick="return doclink('link-611', 'DottedName', 'link-29');">DottedName</a></tt><tt class="py-op">(</tt><tt class="py [...]
+<a name="L1237"></a><tt class="py-lineno">1237</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1238"></a><tt class="py-lineno">1238</tt>  <tt class="py-line">        <tt id="link-615" class="py-name"><a title="epydoc.docbuilder._unreachable_names" class="py-name" href="#" onclick="return doclink('link-615', '_unreachable_names', 'link-513');">_unreachable_names</a></tt><tt class="py-op">[</tt><tt id="link-616" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-616', 'name', 'link-24');">name</a></tt><tt class= [...]
+<a name="L1239"></a><tt class="py-lineno">1239</tt>  <tt class="py-line">     </tt>
+<a name="L1240"></a><tt class="py-lineno">1240</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-617" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-617', 'name', 'link-24');">name</a></tt><tt class="py-op">,</tt> <tt class="py-op">-</tt><tt class="py-number">10000</tt> </tt>
+</div><a name="L1241"></a><tt class="py-lineno">1241</tt>  <tt class="py-line"> </tt>
+<a name="L1242"></a><tt class="py-lineno">1242</tt>  <tt class="py-line"><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L1243"></a><tt class="py-lineno">1243</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## Documentation Inheritance</tt> </tt>
+<a name="L1244"></a><tt class="py-lineno">1244</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L1245"></a><tt class="py-lineno">1245</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="find_overrides"></a><div id="find_overrides-def"><a name="L1246"></a><tt class="py-lineno">1246</tt> <a class="py-toggle" href="#" id="find_overrides-toggle" onclick="return toggle('find_overrides');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docbuilder-module.html#find_overrides">find_overrides</a><tt class="py-op">(</tt><tt class="py-param">class_doc</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="find_overrides-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="find_overrides-expanded"><a name="L1247"></a><tt class="py-lineno">1247</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L1248"></a><tt class="py-lineno">1248</tt>  <tt class="py-line"><tt class="py-docstring">    Set the C{overrides} attribute for all variables in C{class_doc}.</tt> </tt>
+<a name="L1249"></a><tt class="py-lineno">1249</tt>  <tt class="py-line"><tt class="py-docstring">    This needs to be done early (before docstring parsing), so we can</tt> </tt>
+<a name="L1250"></a><tt class="py-lineno">1250</tt>  <tt class="py-line"><tt class="py-docstring">    know which docstrings to suppress warnings for.</tt> </tt>
+<a name="L1251"></a><tt class="py-lineno">1251</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1252"></a><tt class="py-lineno">1252</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">base_class</tt> <tt class="py-keyword">in</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">class_doc</tt><tt class="py-op">.</tt><tt id="link-618" class="py-name" targets="Method epydoc.apidoc.ClassDoc.mro()=epydoc.apidoc.ClassDoc-class.html#mro"><a title="epydoc.apidoc.ClassDoc.mro" class="py-name" href="#" onclick="return doclink( [...]
+<a name="L1253"></a><tt class="py-lineno">1253</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">base_class</tt> <tt class="py-op">==</tt> <tt class="py-name">class_doc</tt><tt class="py-op">:</tt> <tt class="py-keyword">continue</tt> </tt>
+<a name="L1254"></a><tt class="py-lineno">1254</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">base_class</tt><tt class="py-op">.</tt><tt id="link-619" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-619', 'variables', 'link-103');">variables</a></tt> <tt class="py-keyword">is</tt> <tt id="link-620" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick=" [...]
+<a name="L1255"></a><tt class="py-lineno">1255</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt id="link-621" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-621', 'name', 'link-24');">name</a></tt><tt class="py-op">,</tt> <tt class="py-name">var_doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">base_class</tt><tt class="py-op">.</tt><tt id="link-622" class="py-name"><a title="epydoc.apidoc.Na [...]
+<a name="L1256"></a><tt class="py-lineno">1256</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-op">(</tt> <tt class="py-keyword">not</tt> <tt class="py-op">(</tt><tt id="link-623" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-623', 'name', 'link-24');">name</a></tt><tt class="py-op">.</tt><tt class="py-name">startswith</tt><tt class="py-op">(</tt><tt class="py-string">'__'</tt><tt class= [...]
+<a name="L1257"></a><tt class="py-lineno">1257</tt>  <tt class="py-line">                 <tt class="py-name">base_class</tt> <tt class="py-op">==</tt> <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-625" class="py-name" targets="Method epydoc.apidoc.DocIndex.container()=epydoc.apidoc.DocIndex-class.html#container,Method epydoc.apidoc.DottedName.container()=epydoc.apidoc.DottedName-class.html#container,Variable epydoc.apidoc.VariableDoc.container=epydoc.apidoc.Variab [...]
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-625', 'container', 'link-625');">container</a></tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L1258"></a><tt class="py-lineno">1258</tt>  <tt class="py-line">                 <tt id="link-626" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-626', 'name', 'link-24');">name</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">class_doc</tt><tt class="py-op">.</tt><tt id="link-627" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-627' [...]
+<a name="L1259"></a><tt class="py-lineno">1259</tt>  <tt class="py-line">                 <tt class="py-name">class_doc</tt><tt class="py-op">.</tt><tt id="link-628" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-628', 'variables', 'link-103');">variables</a></tt><tt class="py-op">[</tt><tt id="link-629" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-6 [...]
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-630', 'container', 'link-625');">container</a></tt><tt class="py-op">==</tt><tt class="py-name">class_doc</tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L1260"></a><tt class="py-lineno">1260</tt>  <tt class="py-line">                 <tt class="py-name">class_doc</tt><tt class="py-op">.</tt><tt id="link-631" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-631', 'variables', 'link-103');">variables</a></tt><tt class="py-op">[</tt><tt id="link-632" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-6 [...]
+<a name="L1261"></a><tt class="py-lineno">1261</tt>  <tt class="py-line">                <tt class="py-name">class_doc</tt><tt class="py-op">.</tt><tt id="link-635" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-635', 'variables', 'link-103');">variables</a></tt><tt class="py-op">[</tt><tt id="link-636" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-63 [...]
+</div><a name="L1262"></a><tt class="py-lineno">1262</tt>  <tt class="py-line">     </tt>
+<a name="L1263"></a><tt class="py-lineno">1263</tt>  <tt class="py-line">     </tt>
+<a name="inherit_docs"></a><div id="inherit_docs-def"><a name="L1264"></a><tt class="py-lineno">1264</tt> <a class="py-toggle" href="#" id="inherit_docs-toggle" onclick="return toggle('inherit_docs');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docbuilder-module.html#inherit_docs">inherit_docs</a><tt class="py-op">(</tt><tt class="py-param">class_doc</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="inherit_docs-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="inherit_docs-expanded"><a name="L1265"></a><tt class="py-lineno">1265</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">base_class</tt> <tt class="py-keyword">in</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">class_doc</tt><tt class="py-op">.</tt><tt id="link-638" class="py-name"><a title="epydoc.apidoc.ClassDoc.mro" class="py [...]
+<a name="L1266"></a><tt class="py-lineno">1266</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">base_class</tt> <tt class="py-op">==</tt> <tt class="py-name">class_doc</tt><tt class="py-op">:</tt> <tt class="py-keyword">continue</tt> </tt>
+<a name="L1267"></a><tt class="py-lineno">1267</tt>  <tt class="py-line"> </tt>
+<a name="L1268"></a><tt class="py-lineno">1268</tt>  <tt class="py-line">        <tt class="py-comment"># Inherit any groups.  Place them *after* this class's groups,</tt> </tt>
+<a name="L1269"></a><tt class="py-lineno">1269</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># so that any groups that are important to this class come</tt> </tt>
+<a name="L1270"></a><tt class="py-lineno">1270</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># first.</tt> </tt>
+<a name="L1271"></a><tt class="py-lineno">1271</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">base_class</tt><tt class="py-op">.</tt><tt id="link-639" class="py-name" targets="Variable epydoc.apidoc.NamespaceDoc.group_specs=epydoc.apidoc.NamespaceDoc-class.html#group_specs"><a title="epydoc.apidoc.NamespaceDoc.group_specs" class="py-name" href="#" onclick="return doclink('link-639', 'group_specs', 'link-639');">group_specs [...]
+<a name="L1272"></a><tt class="py-lineno">1272</tt>  <tt class="py-line">            <tt class="py-name">class_doc</tt><tt class="py-op">.</tt><tt id="link-641" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.group_specs" class="py-name" href="#" onclick="return doclink('link-641', 'group_specs', 'link-639');">group_specs</a></tt> <tt class="py-op">+=</tt> <tt class="py-op">[</tt><tt class="py-name">gs</tt> <tt class="py-keyword">for</tt> <tt class="py-name">gs</tt> <tt class="py-ke [...]
+<a name="L1273"></a><tt class="py-lineno">1273</tt>  <tt class="py-line">                                      <tt class="py-keyword">if</tt> <tt class="py-name">gs</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">class_doc</tt><tt class="py-op">.</tt><tt id="link-643" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.group_specs" class="py-name" href="#" onclick="return doclink('link-643', 'group_specs', 'link-639');">group_specs</a></tt><tt cla [...]
+<a name="L1274"></a><tt class="py-lineno">1274</tt>  <tt class="py-line"> </tt>
+<a name="L1275"></a><tt class="py-lineno">1275</tt>  <tt class="py-line">        <tt class="py-comment"># Inherit any variables.</tt> </tt>
+<a name="L1276"></a><tt class="py-lineno">1276</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">base_class</tt><tt class="py-op">.</tt><tt id="link-644" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-644', 'variables', 'link-103');">variables</a></tt> <tt class="py-keyword">is</tt> <tt id="link-645" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class= [...]
+<a name="L1277"></a><tt class="py-lineno">1277</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt id="link-646" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-646', 'name', 'link-24');">name</a></tt><tt class="py-op">,</tt> <tt class="py-name">var_doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">base_class</tt><tt class="py-op">.</tt><tt id="link-647" class="py-name"><a title="epydoc.apidoc.Na [...]
+<a name="L1278"></a><tt class="py-lineno">1278</tt>  <tt class="py-line">            <tt class="py-comment"># If it's a __private variable, then don't inherit it.</tt> </tt>
+<a name="L1279"></a><tt class="py-lineno">1279</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt id="link-648" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-648', 'name', 'link-24');">name</a></tt><tt class="py-op">.</tt><tt class="py-name">startswith</tt><tt class="py-op">(</tt><tt class="py-string">'__'</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt cl [...]
+<a name="L1280"></a><tt class="py-lineno">1280</tt>  <tt class="py-line">                <tt class="py-keyword">continue</tt> </tt>
+<a name="L1281"></a><tt class="py-lineno">1281</tt>  <tt class="py-line">             </tt>
+<a name="L1282"></a><tt class="py-lineno">1282</tt>  <tt class="py-line">            <tt class="py-comment"># Inhetit only from the defining class. Or else, in case of</tt> </tt>
+<a name="L1283"></a><tt class="py-lineno">1283</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># multiple inheritance, we may import from a grand-ancestor</tt> </tt>
+<a name="L1284"></a><tt class="py-lineno">1284</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># variables overridden by a class that follows in mro.</tt> </tt>
+<a name="L1285"></a><tt class="py-lineno">1285</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt class="py-name">base_class</tt> <tt class="py-op">!=</tt> <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-650" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-650', 'container', 'link-625');">container</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1286"></a><tt class="py-lineno">1286</tt>  <tt class="py-line">                <tt class="py-keyword">continue</tt> </tt>
+<a name="L1287"></a><tt class="py-lineno">1287</tt>  <tt class="py-line">             </tt>
+<a name="L1288"></a><tt class="py-lineno">1288</tt>  <tt class="py-line">            <tt class="py-comment"># If class_doc doesn't have a variable with this name,</tt> </tt>
+<a name="L1289"></a><tt class="py-lineno">1289</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># then inherit it.</tt> </tt>
+<a name="L1290"></a><tt class="py-lineno">1290</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt id="link-651" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-651', 'name', 'link-24');">name</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">class_doc</tt><tt class="py-op">.</tt><tt id="link-652" class="py-name"><a title="epydoc.apid [...]
+<a name="L1291"></a><tt class="py-lineno">1291</tt>  <tt class="py-line">                <tt class="py-name">class_doc</tt><tt class="py-op">.</tt><tt id="link-653" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-653', 'variables', 'link-103');">variables</a></tt><tt class="py-op">[</tt><tt id="link-654" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-65 [...]
+<a name="L1292"></a><tt class="py-lineno">1292</tt>  <tt class="py-line"> </tt>
+<a name="L1293"></a><tt class="py-lineno">1293</tt>  <tt class="py-line">            <tt class="py-comment"># Otherwise, class_doc already contains a variable</tt> </tt>
+<a name="L1294"></a><tt class="py-lineno">1294</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># that shadows var_doc.  But if class_doc's var is</tt> </tt>
+<a name="L1295"></a><tt class="py-lineno">1295</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># local, then record the fact that it overrides</tt> </tt>
+<a name="L1296"></a><tt class="py-lineno">1296</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># var_doc.</tt> </tt>
+<a name="L1297"></a><tt class="py-lineno">1297</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">elif</tt> <tt class="py-name">class_doc</tt><tt class="py-op">.</tt><tt id="link-655" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-655', 'variables', 'link-103');">variables</a></tt><tt class="py-op">[</tt><tt id="link-656" class="py-name"><a title="epydoc.apidoc.VariableDoc.name"  [...]
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-657', 'container', 'link-625');">container</a></tt><tt class="py-op">==</tt><tt class="py-name">class_doc</tt><tt class="py-op">:</tt> </tt>
+<a name="L1298"></a><tt class="py-lineno">1298</tt>  <tt class="py-line">                <tt class="py-name">class_doc</tt><tt class="py-op">.</tt><tt id="link-658" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-658', 'variables', 'link-103');">variables</a></tt><tt class="py-op">[</tt><tt id="link-659" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-65 [...]
+<a name="L1299"></a><tt class="py-lineno">1299</tt>  <tt class="py-line">                <tt id="link-661" class="py-name" targets="Function epydoc.docbuilder._inherit_info()=epydoc.docbuilder-module.html#_inherit_info"><a title="epydoc.docbuilder._inherit_info" class="py-name" href="#" onclick="return doclink('link-661', '_inherit_info', 'link-661');">_inherit_info</a></tt><tt class="py-op">(</tt><tt class="py-name">class_doc</tt><tt class="py-op">.</tt><tt id="link-662" class="py-name" [...]
+</div><a name="L1300"></a><tt class="py-lineno">1300</tt>  <tt class="py-line"> </tt>
+<a name="L1301"></a><tt class="py-lineno">1301</tt>  <tt class="py-line"><tt id="link-664" class="py-name" targets="Variable epydoc.docbuilder._INHERITED_ATTRIBS=epydoc.docbuilder-module.html#_INHERITED_ATTRIBS"><a title="epydoc.docbuilder._INHERITED_ATTRIBS" class="py-name" href="#" onclick="return doclink('link-664', '_INHERITED_ATTRIBS', 'link-664');">_INHERITED_ATTRIBS</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> </tt>
+<a name="L1302"></a><tt class="py-lineno">1302</tt>  <tt class="py-line">    <tt class="py-string">'descr'</tt><tt class="py-op">,</tt> <tt class="py-string">'summary'</tt><tt class="py-op">,</tt> <tt class="py-string">'metadata'</tt><tt class="py-op">,</tt> <tt class="py-string">'extra_docstring_fields'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1303"></a><tt class="py-lineno">1303</tt>  <tt class="py-line">    <tt class="py-string">'type_descr'</tt><tt class="py-op">,</tt> <tt class="py-string">'arg_descrs'</tt><tt class="py-op">,</tt> <tt class="py-string">'arg_types'</tt><tt class="py-op">,</tt> <tt class="py-string">'return_descr'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1304"></a><tt class="py-lineno">1304</tt>  <tt class="py-line">    <tt class="py-string">'return_type'</tt><tt class="py-op">,</tt> <tt class="py-string">'exception_descrs'</tt><tt class="py-op">]</tt> </tt>
+<a name="L1305"></a><tt class="py-lineno">1305</tt>  <tt class="py-line"> </tt>
+<a name="L1306"></a><tt class="py-lineno">1306</tt>  <tt class="py-line"><tt class="py-name">_method_descriptor</tt> <tt class="py-op">=</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">list</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">)</tt> </tt>
+<a name="L1307"></a><tt class="py-lineno">1307</tt>  <tt class="py-line"> </tt>
+<a name="_inherit_info"></a><div id="_inherit_info-def"><a name="L1308"></a><tt class="py-lineno">1308</tt> <a class="py-toggle" href="#" id="_inherit_info-toggle" onclick="return toggle('_inherit_info');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docbuilder-module.html#_inherit_info">_inherit_info</a><tt class="py-op">(</tt><tt class="py-param">var_doc</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_inherit_info-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_inherit_info-expanded"><a name="L1309"></a><tt class="py-lineno">1309</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L1310"></a><tt class="py-lineno">1310</tt>  <tt class="py-line"><tt class="py-docstring">    Copy any relevant documentation information from the variable that</tt> </tt>
+<a name="L1311"></a><tt class="py-lineno">1311</tt>  <tt class="py-line"><tt class="py-docstring">    C{var_doc} overrides into C{var_doc} itself.</tt> </tt>
+<a name="L1312"></a><tt class="py-lineno">1312</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1313"></a><tt class="py-lineno">1313</tt>  <tt class="py-line">    <tt class="py-name">src_var</tt> <tt class="py-op">=</tt> <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-665" class="py-name"><a title="epydoc.apidoc.VariableDoc.overrides" class="py-name" href="#" onclick="return doclink('link-665', 'overrides', 'link-99');">overrides</a></tt> </tt>
+<a name="L1314"></a><tt class="py-lineno">1314</tt>  <tt class="py-line">    <tt class="py-name">src_val</tt> <tt class="py-op">=</tt> <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-666" class="py-name"><a title="epydoc.apidoc.VariableDoc.overrides" class="py-name" href="#" onclick="return doclink('link-666', 'overrides', 'link-99');">overrides</a></tt><tt class="py-op">.</tt><tt id="link-667" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name [...]
+<a name="L1315"></a><tt class="py-lineno">1315</tt>  <tt class="py-line">    <tt class="py-name">val_doc</tt> <tt class="py-op">=</tt> <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-668" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-668', 'value', 'link-106');">value</a></tt> </tt>
+<a name="L1316"></a><tt class="py-lineno">1316</tt>  <tt class="py-line"> </tt>
+<a name="L1317"></a><tt class="py-lineno">1317</tt>  <tt class="py-line">    <tt class="py-comment"># Special case: if the source value and target values are both c</tt> </tt>
+<a name="L1318"></a><tt class="py-lineno">1318</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># extension methods, and the target value's signature is not</tt> </tt>
+<a name="L1319"></a><tt class="py-lineno">1319</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># specified, then inherit the source value's signature.</tt> </tt>
+<a name="L1320"></a><tt class="py-lineno">1320</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">val_doc</tt><tt class="py-op">,</tt> <tt id="link-669" class="py-name"><a title="epydoc.apidoc.RoutineDoc" class="py-name" href="#" onclick="return doclink('link-669', 'RoutineDoc', 'link-386');">RoutineDoc</a></tt><tt class="py-op">)</tt> <tt class="py [...]
+<a name="L1321"></a><tt class="py-lineno">1321</tt>  <tt class="py-line">        <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">src_val</tt><tt class="py-op">,</tt> <tt id="link-670" class="py-name"><a title="epydoc.apidoc.RoutineDoc" class="py-name" href="#" onclick="return doclink('link-670', 'RoutineDoc', 'link-386');">RoutineDoc</a></tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L1322"></a><tt class="py-lineno">1322</tt>  <tt class="py-line">        <tt class="py-op">(</tt><tt class="py-name">inspect</tt><tt class="py-op">.</tt><tt class="py-name">isbuiltin</tt><tt class="py-op">(</tt><tt class="py-name">val_doc</tt><tt class="py-op">.</tt><tt id="link-671" class="py-name"><a title="epydoc.apidoc.ValueDoc.pyval" class="py-name" href="#" onclick="return doclink('link-671', 'pyval', 'link-368');">pyval</a></tt><tt class="py-op">)</tt> <tt class="py-keywor [...]
+<a name="L1323"></a><tt class="py-lineno">1323</tt>  <tt class="py-line">         <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">val_doc</tt><tt class="py-op">.</tt><tt id="link-672" class="py-name"><a title="epydoc.apidoc.ValueDoc.pyval" class="py-name" href="#" onclick="return doclink('link-672', 'pyval', 'link-368');">pyval</a></tt><tt class="py-op">,</tt> <tt class="py-name">_method_descriptor</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt cl [...]
+<a name="L1324"></a><tt class="py-lineno">1324</tt>  <tt class="py-line">        <tt class="py-op">(</tt><tt class="py-name">inspect</tt><tt class="py-op">.</tt><tt class="py-name">isbuiltin</tt><tt class="py-op">(</tt><tt class="py-name">src_val</tt><tt class="py-op">.</tt><tt id="link-673" class="py-name"><a title="epydoc.apidoc.ValueDoc.pyval" class="py-name" href="#" onclick="return doclink('link-673', 'pyval', 'link-368');">pyval</a></tt><tt class="py-op">)</tt> <tt class="py-keywor [...]
+<a name="L1325"></a><tt class="py-lineno">1325</tt>  <tt class="py-line">         <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">src_val</tt><tt class="py-op">.</tt><tt id="link-674" class="py-name"><a title="epydoc.apidoc.ValueDoc.pyval" class="py-name" href="#" onclick="return doclink('link-674', 'pyval', 'link-368');">pyval</a></tt><tt class="py-op">,</tt> <tt class="py-name">_method_descriptor</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt cl [...]
+<a name="L1326"></a><tt class="py-lineno">1326</tt>  <tt class="py-line">        <tt class="py-name">val_doc</tt><tt class="py-op">.</tt><tt id="link-675" class="py-name" targets="Method epydoc.apidoc.RoutineDoc.all_args()=epydoc.apidoc.RoutineDoc-class.html#all_args"><a title="epydoc.apidoc.RoutineDoc.all_args" class="py-name" href="#" onclick="return doclink('link-675', 'all_args', 'link-675');">all_args</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-keyword">in [...]
+<a name="L1327"></a><tt class="py-lineno">1327</tt>  <tt class="py-line">        <tt class="py-name">src_val</tt><tt class="py-op">.</tt><tt id="link-677" class="py-name"><a title="epydoc.apidoc.RoutineDoc.all_args" class="py-name" href="#" onclick="return doclink('link-677', 'all_args', 'link-675');">all_args</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="p [...]
+<a name="L1328"></a><tt class="py-lineno">1328</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">attrib</tt> <tt class="py-keyword">in</tt> <tt class="py-op">[</tt><tt class="py-string">'posargs'</tt><tt class="py-op">,</tt> <tt class="py-string">'posarg_defaults'</tt><tt class="py-op">,</tt> <tt class="py-string">'vararg'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1329"></a><tt class="py-lineno">1329</tt>  <tt class="py-line">                       <tt class="py-string">'kwarg'</tt><tt class="py-op">,</tt> <tt class="py-string">'return_type'</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L1330"></a><tt class="py-lineno">1330</tt>  <tt class="py-line">            <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt class="py-name">val_doc</tt><tt class="py-op">,</tt> <tt class="py-name">attrib</tt><tt class="py-op">,</tt> <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">src_val</tt><tt class="py-op">,</tt> <tt class="py-name">attrib</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1331"></a><tt class="py-lineno">1331</tt>  <tt class="py-line">     </tt>
+<a name="L1332"></a><tt class="py-lineno">1332</tt>  <tt class="py-line">    <tt class="py-comment"># If the new variable has a docstring, then don't inherit</tt> </tt>
+<a name="L1333"></a><tt class="py-lineno">1333</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># anything, even if the docstring is blank.</tt> </tt>
+<a name="L1334"></a><tt class="py-lineno">1334</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-679" class="py-name" targets="Variable epydoc.apidoc.APIDoc.docstring=epydoc.apidoc.APIDoc-class.html#docstring"><a title="epydoc.apidoc.APIDoc.docstring" class="py-name" href="#" onclick="return doclink('link-679', 'docstring', 'link-679');">docstring</a></tt> <tt class="py-keyword">no [...]
+<a name="L1335"></a><tt class="py-lineno">1335</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> </tt>
+<a name="L1336"></a><tt class="py-lineno">1336</tt>  <tt class="py-line">    <tt class="py-comment"># [xx] Do I want a check like this:?</tt> </tt>
+<a name="L1337"></a><tt class="py-lineno">1337</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#     # If it's a method and the signature doesn't match well enough,</tt> </tt>
+<a name="L1338"></a><tt class="py-lineno">1338</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#     # then give up.</tt> </tt>
+<a name="L1339"></a><tt class="py-lineno">1339</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#     if (isinstance(src_val, RoutineDoc) and</tt> </tt>
+<a name="L1340"></a><tt class="py-lineno">1340</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#         isinstance(val_doc, RoutineDoc)):</tt> </tt>
+<a name="L1341"></a><tt class="py-lineno">1341</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#         if (src_val.posargs != val_doc.posargs[:len(src_val.posargs)] or</tt> </tt>
+<a name="L1342"></a><tt class="py-lineno">1342</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#             src_val.vararg != None and src_val.vararg != val_doc.vararg):</tt> </tt>
+<a name="L1343"></a><tt class="py-lineno">1343</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#             log.docstring_warning(</tt> </tt>
+<a name="L1344"></a><tt class="py-lineno">1344</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#                 "The signature of %s does not match the signature of the "</tt> </tt>
+<a name="L1345"></a><tt class="py-lineno">1345</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#                 "method it overrides (%s); not inheriting documentation." %</tt> </tt>
+<a name="L1346"></a><tt class="py-lineno">1346</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#                 (var_doc.canonical_name, src_var.canonical_name))</tt> </tt>
+<a name="L1347"></a><tt class="py-lineno">1347</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#             return</tt> </tt>
+<a name="L1348"></a><tt class="py-lineno">1348</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L1349"></a><tt class="py-lineno">1349</tt>  <tt class="py-line">    <tt class="py-comment"># Inherit attributes!</tt> </tt>
+<a name="L1350"></a><tt class="py-lineno">1350</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">for</tt> <tt class="py-name">attrib</tt> <tt class="py-keyword">in</tt> <tt id="link-681" class="py-name"><a title="epydoc.docbuilder._INHERITED_ATTRIBS" class="py-name" href="#" onclick="return doclink('link-681', '_INHERITED_ATTRIBS', 'link-664');">_INHERITED_ATTRIBS</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1351"></a><tt class="py-lineno">1351</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">var_doc</tt><tt class="py-op">,</tt> <tt class="py-name">attrib</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">src_var</tt><tt class="py-op">,</tt> <tt class="py-name">attrib</tt><tt class=" [...]
+<a name="L1352"></a><tt class="py-lineno">1352</tt>  <tt class="py-line">            <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">src_var</tt><tt class="py-op">,</tt> <tt class="py-name">attrib</tt><tt class="py-op">)</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-682" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" oncli [...]
+<a name="L1353"></a><tt class="py-lineno">1353</tt>  <tt class="py-line">            <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt class="py-name">var_doc</tt><tt class="py-op">,</tt> <tt class="py-name">attrib</tt><tt class="py-op">,</tt> <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">src_var</tt><tt class="py-op">,</tt> <tt class="py-name">attrib</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1354"></a><tt class="py-lineno">1354</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-op">(</tt><tt class="py-name">src_val</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L1355"></a><tt class="py-lineno">1355</tt>  <tt class="py-line">              <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">val_doc</tt><tt class="py-op">,</tt> <tt class="py-name">attrib</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">src_val</tt><tt class="py-op">,</tt> <tt class="py-name">attrib</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L1356"></a><tt class="py-lineno">1356</tt>  <tt class="py-line">              <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">src_val</tt><tt class="py-op">,</tt> <tt class="py-name">attrib</tt><tt class="py-op">)</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-683" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onc [...]
+<a name="L1357"></a><tt class="py-lineno">1357</tt>  <tt class="py-line">              <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">val_doc</tt><tt class="py-op">,</tt> <tt class="py-name">attrib</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-684" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-684', [...]
+<a name="L1358"></a><tt class="py-lineno">1358</tt>  <tt class="py-line">            <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt class="py-name">val_doc</tt><tt class="py-op">,</tt> <tt class="py-name">attrib</tt><tt class="py-op">,</tt> <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">src_val</tt><tt class="py-op">,</tt> <tt class="py-name">attrib</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1359"></a><tt class="py-lineno">1359</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:09:19 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.docbuilder.BuildOptions-class.html b/doc/api/epydoc.docbuilder.BuildOptions-class.html
new file mode 100644
index 0000000..15ad7dc
--- /dev/null
+++ b/doc/api/epydoc.docbuilder.BuildOptions-class.html
@@ -0,0 +1,399 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.docbuilder.BuildOptions</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.docbuilder-module.html">Module docbuilder</a> ::
+        Class BuildOptions
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.docbuilder.BuildOptions-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class BuildOptions</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.docbuilder-pysrc.html#BuildOptions">source code</a></span></p>
+<p>Holds the parameters for a documentation building process.</p>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__init__"></a><span class="summary-sig-name">__init__</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">introspect</span>=<span class="summary-sig-default">True</span>,
+        <span class="summary-sig-arg">parse</span>=<span class="summary-sig-default">True</span>,
+        <span class="summary-sig-arg">exclude_introspect</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">exclude_parse</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">add_submodules</span>=<span class="summary-sig-default">True</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docbuilder-pysrc.html#BuildOptions.__init__">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for___init___12-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for___init___12-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for___init___12" name="call_graph_for___init___12">
+<area shape="rect" href="epydoc.docbuilder.BuildOptions-class.html#__init__" title="__init__()" alt="" coords="215,6,311,38" />
+<area shape="rect" href="epydoc.docbuilder-module.html#build_doc_index" title="build_doc_index()" alt="" coords="5,6,165,38" />
+</map>
+  <img src="call_graph_for___init___12.gif" alt='' usemap="#call_graph_for___init___12" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docbuilder.BuildOptions-class.html#must_introspect" class="summary-sig-name">must_introspect</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">name</span>)</span><br />
+      Return <code>True</code> if a module is to be introsepcted with the 
+      current settings.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docbuilder-pysrc.html#BuildOptions.must_introspect">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_must_introspect-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_must_introspect-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_must_introspect" name="call_graph_for_must_introspect">
+<area shape="rect" href="epydoc.docbuilder.BuildOptions-class.html#_matches_filter" title="_matches_filter()" alt="" coords="513,6,663,38" />
+<area shape="rect" href="epydoc.docbuilder.BuildOptions-class.html#must_introspect" title="must_introspect()" alt="" coords="311,6,463,38" />
+<area shape="rect" href="epydoc.docbuilder-module.html#_get_docs_from_module_file" title="_get_docs_from_module_file()" alt="" coords="7,6,260,38" />
+</map>
+  <img src="call_graph_for_must_introspect.gif" alt='' usemap="#call_graph_for_must_introspect" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docbuilder.BuildOptions-class.html#must_parse" class="summary-sig-name">must_parse</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">name</span>)</span><br />
+      Return <code>True</code> if a module is to be parsed with the current
+      settings.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docbuilder-pysrc.html#BuildOptions.must_parse">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_must_parse-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_must_parse-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_must_parse" name="call_graph_for_must_parse">
+<area shape="rect" href="epydoc.docbuilder.BuildOptions-class.html#_matches_filter" title="_matches_filter()" alt="" coords="479,6,628,38" />
+<area shape="rect" href="epydoc.docbuilder.BuildOptions-class.html#must_parse" title="must_parse()" alt="" coords="311,6,428,38" />
+<area shape="rect" href="epydoc.docbuilder-module.html#_get_docs_from_module_file" title="_get_docs_from_module_file()" alt="" coords="7,6,260,38" />
+</map>
+  <img src="call_graph_for_must_parse.gif" alt='' usemap="#call_graph_for_must_parse" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>bool</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docbuilder.BuildOptions-class.html#_matches_filter" class="summary-sig-name" onclick="show_private();">_matches_filter</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">name</span>,
+        <span class="summary-sig-arg">regexp</span>)</span><br />
+      Test if a module name matches a pattern.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docbuilder-pysrc.html#BuildOptions._matches_filter">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__matches_filter-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__matches_filter-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__matches_filter" name="call_graph_for__matches_filter">
+<area shape="rect" href="epydoc.docbuilder.BuildOptions-class.html#_matches_filter" title="_matches_filter()" alt="" coords="209,34,359,66" />
+<area shape="rect" href="epydoc.docbuilder.BuildOptions-class.html#must_introspect" title="must_introspect()" alt="" coords="7,6,159,38" />
+<area shape="rect" href="epydoc.docbuilder.BuildOptions-class.html#must_parse" title="must_parse()" alt="" coords="24,62,141,94" />
+</map>
+  <img src="call_graph_for__matches_filter.gif" alt='' usemap="#call_graph_for__matches_filter" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Method Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-MethodDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="must_introspect"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">must_introspect</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">name</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docbuilder-pysrc.html#BuildOptions.must_introspect">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_must_introspect-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_must_introspect-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_must_introspect" name="call_graph_for_must_introspect">
+<area shape="rect" href="epydoc.docbuilder.BuildOptions-class.html#_matches_filter" title="_matches_filter()" alt="" coords="513,6,663,38" />
+<area shape="rect" href="epydoc.docbuilder.BuildOptions-class.html#must_introspect" title="must_introspect()" alt="" coords="311,6,463,38" />
+<area shape="rect" href="epydoc.docbuilder-module.html#_get_docs_from_module_file" title="_get_docs_from_module_file()" alt="" coords="7,6,260,38" />
+</map>
+  <img src="call_graph_for_must_introspect.gif" alt='' usemap="#call_graph_for_must_introspect" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Return <code>True</code> if a module is to be introsepcted with the 
+  current settings.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>name</code></strong> (<a href="epydoc.apidoc.DottedName-class.html" 
+          class="link">DottedName</a> or <code>str</code>) - The name of the module to test</li>
+    </ul></dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="must_parse"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">must_parse</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">name</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docbuilder-pysrc.html#BuildOptions.must_parse">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_must_parse-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_must_parse-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_must_parse" name="call_graph_for_must_parse">
+<area shape="rect" href="epydoc.docbuilder.BuildOptions-class.html#_matches_filter" title="_matches_filter()" alt="" coords="479,6,628,38" />
+<area shape="rect" href="epydoc.docbuilder.BuildOptions-class.html#must_parse" title="must_parse()" alt="" coords="311,6,428,38" />
+<area shape="rect" href="epydoc.docbuilder-module.html#_get_docs_from_module_file" title="_get_docs_from_module_file()" alt="" coords="7,6,260,38" />
+</map>
+  <img src="call_graph_for_must_parse.gif" alt='' usemap="#call_graph_for_must_parse" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Return <code>True</code> if a module is to be parsed with the current 
+  settings.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>name</code></strong> (<a href="epydoc.apidoc.DottedName-class.html" 
+          class="link">DottedName</a> or <code>str</code>) - The name of the module to test</li>
+    </ul></dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="_matches_filter"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">_matches_filter</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">name</span>,
+        <span class="sig-arg">regexp</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docbuilder-pysrc.html#BuildOptions._matches_filter">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__matches_filter-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for__matches_filter-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__matches_filter" name="call_graph_for__matches_filter">
+<area shape="rect" href="epydoc.docbuilder.BuildOptions-class.html#_matches_filter" title="_matches_filter()" alt="" coords="209,34,359,66" />
+<area shape="rect" href="epydoc.docbuilder.BuildOptions-class.html#must_introspect" title="must_introspect()" alt="" coords="7,6,159,38" />
+<area shape="rect" href="epydoc.docbuilder.BuildOptions-class.html#must_parse" title="must_parse()" alt="" coords="24,62,141,94" />
+</map>
+  <img src="call_graph_for__matches_filter.gif" alt='' usemap="#call_graph_for__matches_filter" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Test if a module name matches a pattern.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>name</code></strong> (<a href="epydoc.apidoc.DottedName-class.html" 
+          class="link">DottedName</a> or <code>str</code>) - The name of the module to test</li>
+        <li><strong class="pname"><code>regexp</code></strong> (<code>pattern</code>) - The pattern object to match <code>name</code> against. If 
+          <code>None</code>, return <code>False</code></li>
+    </ul></dd>
+    <dt>Returns: <code>bool</code></dt>
+        <dd><code>True</code> if <code>name</code> in dotted format matches 
+          <code>regexp</code>, else <code>False</code></dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:07:37 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.docbuilder._ProgressEstimator-class.html b/doc/api/epydoc.docbuilder._ProgressEstimator-class.html
new file mode 100644
index 0000000..8ba08da
--- /dev/null
+++ b/doc/api/epydoc.docbuilder._ProgressEstimator-class.html
@@ -0,0 +1,258 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.docbuilder._ProgressEstimator</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.docbuilder-module.html">Module docbuilder</a> ::
+        Class _ProgressEstimator
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.docbuilder._ProgressEstimator-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class _ProgressEstimator</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.docbuilder-pysrc.html#_ProgressEstimator">source code</a></span></p>
+<p>Used to keep track of progress when generating the initial docs for 
+  the given items.  (It is not known in advance how many items a package 
+  directory will contain, since it might depend on those packages' __path__
+  values.)</p>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__init__"></a><span class="summary-sig-name">__init__</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">items</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docbuilder-pysrc.html#_ProgressEstimator.__init__">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for___init___13-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for___init___13-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for___init___13" name="call_graph_for___init___13">
+<area shape="rect" href="epydoc.docbuilder._ProgressEstimator-class.html#__init__" title="__init__()" alt="" coords="260,34,356,66" />
+<area shape="rect" href="epydoc.docbuilder._ProgressEstimator-class.html#_est_pkg_modules" title="_est_pkg_modules()" alt="" coords="408,6,581,38" />
+<area shape="rect" href="epydoc.util-module.html#is_package_dir" title="util.is_package_dir()" alt="" coords="407,62,583,94" />
+<area shape="rect" href="epydoc.docbuilder-module.html#_get_docs_from_items" title="_get_docs_from_items()" alt="" coords="5,34,211,66" />
+</map>
+  <img src="call_graph_for___init___13.gif" alt='' usemap="#call_graph_for___init___13" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="progress"></a><span class="summary-sig-name">progress</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docbuilder-pysrc.html#_ProgressEstimator.progress">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_progress_4-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_progress_4-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_progress_4" name="call_graph_for_progress_4">
+<area shape="rect" href="epydoc.docbuilder._ProgressEstimator-class.html#progress" title="progress()" alt="" coords="309,6,408,38" />
+<area shape="rect" href="epydoc.docbuilder-module.html#_get_docs_from_module_file" title="_get_docs_from_module_file()" alt="" coords="7,6,260,38" />
+</map>
+  <img src="call_graph_for_progress_4.gif" alt='' usemap="#call_graph_for_progress_4" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="revise_estimate"></a><span class="summary-sig-name">revise_estimate</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">pkg_item</span>,
+        <span class="summary-sig-arg">modules</span>,
+        <span class="summary-sig-arg">subpackages</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docbuilder-pysrc.html#_ProgressEstimator.revise_estimate">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_revise_estimate-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_revise_estimate-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_revise_estimate" name="call_graph_for_revise_estimate">
+<area shape="rect" href="epydoc.docbuilder._ProgressEstimator-class.html#_est_pkg_modules" title="_est_pkg_modules()" alt="" coords="511,6,684,38" />
+<area shape="rect" href="epydoc.docbuilder._ProgressEstimator-class.html#revise_estimate" title="revise_estimate()" alt="" coords="310,6,462,38" />
+<area shape="rect" href="epydoc.docbuilder-module.html#_get_docs_from_submodules" title="_get_docs_from_submodules()" alt="" coords="7,6,260,38" />
+</map>
+  <img src="call_graph_for_revise_estimate.gif" alt='' usemap="#call_graph_for_revise_estimate" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_est_pkg_modules"></a><span class="summary-sig-name">_est_pkg_modules</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">package_dir</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docbuilder-pysrc.html#_ProgressEstimator._est_pkg_modules">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__est_pkg_module-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__est_pkg_module-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__est_pkg_module" name="call_graph_for__est_pkg_module">
+<area shape="rect" href="epydoc.docbuilder._ProgressEstimator-class.html#__init__" title="__init__()" alt="" coords="33,6,129,38" />
+<area shape="rect" href="epydoc.docbuilder._ProgressEstimator-class.html#_est_pkg_modules" title="_est_pkg_modules()" alt="" coords="207,34,380,66" />
+<area shape="rect" href="epydoc.util-module.html#is_module_file" title="util.is_module_file()" alt="" coords="431,6,607,38" />
+<area shape="rect" href="epydoc.util-module.html#is_package_dir" title="util.is_package_dir()" alt="" coords="431,62,607,94" />
+<area shape="rect" href="epydoc.docbuilder._ProgressEstimator-class.html#revise_estimate" title="revise_estimate()" alt="" coords="5,62,157,94" />
+</map>
+  <img src="call_graph_for__est_pkg_module.gif" alt='' usemap="#call_graph_for__est_pkg_module" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:07:38 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.docintrospecter-module.html b/doc/api/epydoc.docintrospecter-module.html
new file mode 100644
index 0000000..79f907d
--- /dev/null
+++ b/doc/api/epydoc.docintrospecter-module.html
@@ -0,0 +1,1698 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.docintrospecter</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        Module docintrospecter
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.docintrospecter-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module docintrospecter</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.docintrospecter-pysrc.html">source code</a></span></p>
+<p>Extract API documentation about python objects by directly 
+  introspecting their values.</p>
+  <p>The function <a 
+  href="epydoc.docintrospecter-module.html#introspect_docs" 
+  class="link">introspect_docs()</a>, which provides the main interface of 
+  this module, examines a Python objects via introspection, and uses the 
+  information it finds to create an <a 
+  href="epydoc.apidoc.APIDoc-class.html" class="link">APIDoc</a> objects 
+  containing the API documentation for that objects.</p>
+  <p>The <a href="epydoc.docintrospecter-module.html#register_introspecter"
+  class="link">register_introspecter()</a> method can be used to extend the
+  functionality of <code>docintrospector</code>, by providing methods that 
+  handle special value types.</p>
+
+<!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Classes</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Classes"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docintrospecter._DevNull-class.html" class="summary-name" onclick="show_private();">_DevNull</a><br />
+      A "file-like" object that discards anything that is 
+        written and always reports end-of-file when read.
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTIONS ==================== -->
+<a name="section-Functions"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Functions</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Functions"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="clear_cache"></a><span class="summary-sig-name">clear_cache</span>()</span><br />
+      Discard any cached <code>APIDoc</code> values that have been computed
+      for introspected values.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docintrospecter-pysrc.html#clear_cache">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docintrospecter-module.html#introspect_docs" class="summary-sig-name">introspect_docs</a>(<span class="summary-sig-arg">value</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">name</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">filename</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">context</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">is_script</span>=<span class="summary-sig-default">False</span>,
+        <span class="summary-sig-arg">module_name</span>=<span class="summary-sig-default">None</span>)</span><br />
+      Generate the API documentation for a specified object by 
+      introspecting Python values, and return it as a <a 
+      href="epydoc.apidoc.ValueDoc-class.html" class="link">ValueDoc</a>.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docintrospecter-pysrc.html#introspect_docs">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_introspect_docs-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_introspect_docs-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_introspect_docs" name="call_graph_for_introspect_docs">
+<area shape="rect" href="epydoc.docbuilder-module.html#_get_docs_from_module_file" title="docbuilder._get_docs_from_module_file()" alt="" coords="5,174,344,206" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#introspect_docs" title="introspect_docs()" alt="" coords="392,230,544,262" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#_get_introspecter" title="_get_introspecter()" alt="" coords="624,62,787,94" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#_get_valuedoc" title="_get_valuedoc()" alt="" coords="633,118,777,150" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#get_value_from_filename" title="get_value_from_filename()" alt="" coords="592,174,819,206" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#introspect_class" title="introspect_class()" alt="" coords="628,6,783,38" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#introspect_module" title="introspect_module()" alt="" coords="619,230,792,262" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#introspect_other" title="introspect_other()" alt="" coords="628,286,783,318" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#introspect_property" title="introspect_property()" alt="" coords="615,342,796,374" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#introspect_routine" title="introspect_routine()" alt="" coords="620,398,791,430" />
+<area shape="rect" href="epydoc.docparser-module.html#lookup_name" title="docparser.lookup_name()" alt="" coords="69,230,280,262" />
+<area shape="rect" href="epydoc.docparser-module.html#parse_docs" title="docparser.parse_docs()" alt="" coords="77,286,272,318" />
+</map>
+  <img src="call_graph_for_introspect_docs.gif" alt='' usemap="#call_graph_for_introspect_docs" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docintrospecter-module.html#_get_valuedoc" class="summary-sig-name" onclick="show_private();">_get_valuedoc</a>(<span class="summary-sig-arg">value</span>)</span><br />
+      If a <code>ValueDoc</code> for the given value exists in the valuedoc
+      cache, then return it; otherwise, create a new <code>ValueDoc</code>,
+      add it to the cache, and return it.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docintrospecter-pysrc.html#_get_valuedoc">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__get_valuedoc-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__get_valuedoc-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__get_valuedoc" name="call_graph_for__get_valuedoc">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__init__" title="apidoc.APIDoc.__init__()" alt="" coords="412,6,628,38" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__str__" title="apidoc.DottedName.__str__()" alt="" coords="399,62,641,94" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#_get_valuedoc" title="_get_valuedoc()" alt="" coords="205,146,349,178" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#get_canonical_name" title="get_canonical_name()" alt="" coords="427,118,613,150" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#get_containing_module" title="get_containing_module()" alt="" coords="416,174,624,206" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#introspect_module" title="introspect_module()" alt="" coords="433,230,607,262" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#introspect_docs" title="introspect_docs()" alt="" coords="5,146,157,178" />
+</map>
+  <img src="call_graph_for__get_valuedoc.gif" alt='' usemap="#call_graph_for__get_valuedoc" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="introspect_module"></a><span class="summary-sig-name">introspect_module</span>(<span class="summary-sig-arg">module</span>,
+        <span class="summary-sig-arg">module_doc</span>,
+        <span class="summary-sig-arg">module_name</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">preliminary</span>=<span class="summary-sig-default">False</span>)</span><br />
+      Add API documentation information about the module 
+      <code>module</code> to <code>module_doc</code>.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docintrospecter-pysrc.html#introspect_module">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_introspect_modu-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_introspect_modu-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_introspect_modu" name="call_graph_for_introspect_modu">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__cmp__" title="apidoc.APIDoc.__cmp__()" alt="" coords="244,118,468,150" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#specialize_to" title="apidoc.APIDoc.specialize_to()" alt="" coords="231,174,482,206" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__cmp__" title="apidoc.DottedName.__cmp__()" alt="" coords="228,230,484,262" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__init__" title="apidoc.DottedName.__init__()" alt="" coords="231,286,482,318" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__str__" title="apidoc.DottedName.__str__()" alt="" coords="235,342,478,374" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#container" title="apidoc.DottedName.container()" alt="" coords="228,398,484,430" />
+<area shape="rect" href="epydoc.apidoc.VariableDoc-class.html#__init__" title="apidoc.VariableDoc.__init__()" alt="" coords="231,454,482,486" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#_get_valuedoc" title="_get_valuedoc()" alt="" coords="284,6,428,38" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#introspect_module" title="introspect_module()" alt="" coords="6,286,179,318" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#get_containing_module" title="get_containing_module()" alt="" coords="252,510,460,542" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#get_docstring" title="get_docstring()" alt="" coords="288,566,424,598" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#introspect_docs" title="introspect_docs()" alt="" coords="280,62,432,94" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#is_future_feature" title="is_future_feature()" alt="" coords="275,622,438,654" />
+<area shape="rect" href="epydoc.util-module.html#py_src_filename" title="util.py_src_filename()" alt="" coords="262,678,451,710" />
+</map>
+  <img src="call_graph_for_introspect_modu.gif" alt='' usemap="#call_graph_for_introspect_modu" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="introspect_class"></a><span class="summary-sig-name">introspect_class</span>(<span class="summary-sig-arg">cls</span>,
+        <span class="summary-sig-arg">class_doc</span>,
+        <span class="summary-sig-arg">module_name</span>=<span class="summary-sig-default">None</span>)</span><br />
+      Add API documentation information about the class <code>cls</code> to
+      <code>class_doc</code>.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docintrospecter-pysrc.html#introspect_class">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_introspect_clas-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_introspect_clas-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_introspect_clas" name="call_graph_for_introspect_clas">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__cmp__" title="apidoc.APIDoc.__cmp__()" alt="" coords="223,6,447,38" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#specialize_to" title="apidoc.APIDoc.specialize_to()" alt="" coords="210,62,460,94" />
+<area shape="rect" href="epydoc.apidoc.VariableDoc-class.html#__init__" title="apidoc.VariableDoc.__init__()" alt="" coords="210,118,460,150" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#get_docstring" title="get_docstring()" alt="" coords="267,174,403,206" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#introspect_class" title="introspect_class()" alt="" coords="6,146,160,178" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#introspect_docs" title="introspect_docs()" alt="" coords="259,230,411,262" />
+</map>
+  <img src="call_graph_for_introspect_clas.gif" alt='' usemap="#call_graph_for_introspect_clas" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="introspect_routine"></a><span class="summary-sig-name">introspect_routine</span>(<span class="summary-sig-arg">routine</span>,
+        <span class="summary-sig-arg">routine_doc</span>,
+        <span class="summary-sig-arg">module_name</span>=<span class="summary-sig-default">None</span>)</span><br />
+      Add API documentation information about the function 
+      <code>routine</code> to <code>routine_doc</code> (specializing it to 
+      <code>Routine_doc</code>).</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docintrospecter-pysrc.html#introspect_routine">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_introspect_rout-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_introspect_rout-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_introspect_rout" name="call_graph_for_introspect_rout">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#specialize_to" title="apidoc.APIDoc.specialize_to()" alt="" coords="226,62,476,94" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#get_docstring" title="get_docstring()" alt="" coords="283,118,419,150" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#introspect_docs" title="introspect_docs()" alt="" coords="275,6,427,38" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#introspect_routine" title="introspect_routine()" alt="" coords="6,34,176,66" />
+</map>
+  <img src="call_graph_for_introspect_rout.gif" alt='' usemap="#call_graph_for_introspect_rout" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="introspect_property"></a><span class="summary-sig-name">introspect_property</span>(<span class="summary-sig-arg">prop</span>,
+        <span class="summary-sig-arg">prop_doc</span>,
+        <span class="summary-sig-arg">module_name</span>=<span class="summary-sig-default">None</span>)</span><br />
+      Add API documentation information about the property 
+      <code>prop</code> to <code>prop_doc</code> (specializing it to 
+      <code>PropertyDoc</code>).</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docintrospecter-pysrc.html#introspect_property">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_introspect_prop-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_introspect_prop-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_introspect_prop" name="call_graph_for_introspect_prop">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#specialize_to" title="apidoc.APIDoc.specialize_to()" alt="" coords="236,62,487,94" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#get_docstring" title="get_docstring()" alt="" coords="293,118,429,150" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#introspect_docs" title="introspect_docs()" alt="" coords="285,6,437,38" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#introspect_property" title="introspect_property()" alt="" coords="5,34,187,66" />
+</map>
+  <img src="call_graph_for_introspect_prop.gif" alt='' usemap="#call_graph_for_introspect_prop" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="introspect_other"></a><span class="summary-sig-name">introspect_other</span>(<span class="summary-sig-arg">val</span>,
+        <span class="summary-sig-arg">val_doc</span>,
+        <span class="summary-sig-arg">module_name</span>=<span class="summary-sig-default">None</span>)</span><br />
+      Specialize val_doc to a <code>GenericValueDoc</code> and return it.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docintrospecter-pysrc.html#introspect_other">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_introspect_othe-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_introspect_othe-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_introspect_othe" name="call_graph_for_introspect_othe">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#specialize_to" title="apidoc.APIDoc.specialize_to()" alt="" coords="412,6,663,38" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#introspect_docs" title="introspect_docs()" alt="" coords="5,6,157,38" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#introspect_other" title="introspect_other()" alt="" coords="207,6,361,38" />
+</map>
+  <img src="call_graph_for_introspect_othe.gif" alt='' usemap="#call_graph_for_introspect_othe" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docintrospecter-module.html#isclass" class="summary-sig-name">isclass</a>(<span class="summary-sig-arg">object</span>)</span><br />
+      Return true if the given object is a class.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docintrospecter-pysrc.html#isclass">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_isclass-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_isclass-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_isclass" name="call_graph_for_isclass">
+<area shape="rect" href="epydoc.docintrospecter-module.html#_get_introspecter" title="_get_introspecter()" alt="" coords="30,6,192,38" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#isclass" title="isclass()" alt="" coords="266,62,348,94" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#get_canonical_name" title="get_canonical_name()" alt="" coords="18,62,204,94" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#get_containing_module" title="get_containing_module()" alt="" coords="7,118,215,150" />
+</map>
+  <img src="call_graph_for_isclass.gif" alt='' usemap="#call_graph_for_isclass" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docintrospecter-module.html#register_class_type" class="summary-sig-name">register_class_type</a>(<span class="summary-sig-arg">typ</span>)</span><br />
+      Add a type to the lists of types that should be treated as classes.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docintrospecter-pysrc.html#register_class_type">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="is_future_feature"></a><span class="summary-sig-name">is_future_feature</span>(<span class="summary-sig-arg">object</span>)</span><br />
+      Return True if <code>object</code> results from a <code>from 
+      __future__ import feature</code> statement.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docintrospecter-pysrc.html#is_future_feature">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_is_future_featu-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_is_future_featu-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_is_future_featu" name="call_graph_for_is_future_featu">
+<area shape="rect" href="epydoc.docintrospecter-module.html#introspect_module" title="introspect_module()" alt="" coords="6,30,179,62" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#is_future_feature" title="is_future_feature()" alt="" coords="227,30,390,62" />
+</map>
+  <img src="call_graph_for_is_future_featu.gif" alt='' usemap="#call_graph_for_is_future_featu" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>unicode</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_docstring"></a><span class="summary-sig-name">get_docstring</span>(<span class="summary-sig-arg">value</span>,
+        <span class="summary-sig-arg">module_name</span>=<span class="summary-sig-default">None</span>)</span><br />
+      Return the docstring for the given value; or <code>None</code> if it 
+      does not have a docstring.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docintrospecter-pysrc.html#get_docstring">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_get_docstring-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_get_docstring-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_get_docstring" name="call_graph_for_get_docstring">
+<area shape="rect" href="epydoc.docintrospecter-module.html#get_docstring" title="get_docstring()" alt="" coords="235,90,371,122" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#introspect_class" title="introspect_class()" alt="" coords="19,6,173,38" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#introspect_module" title="introspect_module()" alt="" coords="9,62,183,94" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#introspect_property" title="introspect_property()" alt="" coords="5,118,187,150" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#introspect_routine" title="introspect_routine()" alt="" coords="11,174,181,206" />
+</map>
+  <img src="call_graph_for_get_docstring.gif" alt='' usemap="#call_graph_for_get_docstring" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><a href="epydoc.apidoc.DottedName-class.html" 
+      class="link">DottedName</a> or <code>UNKNOWN</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docintrospecter-module.html#get_canonical_name" class="summary-sig-name">get_canonical_name</a>(<span class="summary-sig-arg">value</span>,
+        <span class="summary-sig-arg">strict</span>=<span class="summary-sig-default">False</span>)</span><br />
+      Returns:
+      the canonical name for <code>value</code>, or <code>UNKNOWN</code> if
+      no canonical name can be found.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docintrospecter-pysrc.html#get_canonical_name">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_get_canonical_n-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_get_canonical_n-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_get_canonical_n" name="call_graph_for_get_canonical_n">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__init__" title="apidoc.DottedName.__init__()" alt="" coords="432,6,683,38" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#_find_function_module" title="_find_function_module()" alt="" coords="452,62,663,94" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#_get_valuedoc" title="_get_valuedoc()" alt="" coords="5,90,149,122" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#get_canonical_name" title="get_canonical_name()" alt="" coords="197,90,384,122" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#isclass" title="isclass()" alt="" coords="516,118,599,150" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#verify_name" title="verify_name()" alt="" coords="493,174,621,206" />
+</map>
+  <img src="call_graph_for_get_canonical_n.gif" alt='' usemap="#call_graph_for_get_canonical_n" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docintrospecter-module.html#verify_name" class="summary-sig-name">verify_name</a>(<span class="summary-sig-arg">value</span>,
+        <span class="summary-sig-arg">dotted_name</span>)</span><br />
+      Verify the name.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docintrospecter-pysrc.html#verify_name">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_verify_name-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_verify_name-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_verify_name" name="call_graph_for_verify_name">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__getitem__" title="apidoc.DottedName.__getitem__()" alt="" coords="417,6,697,38" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#get_canonical_name" title="get_canonical_name()" alt="" coords="5,6,192,38" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#verify_name" title="verify_name()" alt="" coords="240,6,368,38" />
+</map>
+  <img src="call_graph_for_verify_name.gif" alt='' usemap="#call_graph_for_verify_name" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="value_repr"></a><span class="summary-sig-name">value_repr</span>(<span class="summary-sig-arg">value</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docintrospecter-pysrc.html#value_repr">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><a href="epydoc.apidoc.DottedName-class.html" 
+      class="link">DottedName</a></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_containing_module"></a><span class="summary-sig-name">get_containing_module</span>(<span class="summary-sig-arg">value</span>)</span><br />
+      Return the name of the module containing the given value, or 
+      <code>None</code> if the module name can't be determined.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docintrospecter-pysrc.html#get_containing_module">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_get_containing_-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_get_containing_-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_get_containing_" name="call_graph_for_get_containing_">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__init__" title="apidoc.DottedName.__init__()" alt="" coords="485,6,736,38" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#_find_function_module" title="_find_function_module()" alt="" coords="505,62,716,94" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#_get_valuedoc" title="_get_valuedoc()" alt="" coords="20,34,164,66" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#get_containing_module" title="get_containing_module()" alt="" coords="228,62,436,94" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#isclass" title="isclass()" alt="" coords="569,118,652,150" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#introspect_module" title="introspect_module()" alt="" coords="5,90,179,122" />
+</map>
+  <img src="call_graph_for_get_containing_.gif" alt='' usemap="#call_graph_for_get_containing_" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>module</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docintrospecter-module.html#_find_function_module" class="summary-sig-name" onclick="show_private();">_find_function_module</a>(<span class="summary-sig-arg">func</span>)</span><br />
+      Returns:
+      The module that defines the given function.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docintrospecter-pysrc.html#_find_function_module">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__find_function_-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__find_function_-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__find_function_" name="call_graph_for__find_function_">
+<area shape="rect" href="epydoc.docintrospecter-module.html#_find_function_module" title="_find_function_module()" alt="" coords="264,34,475,66" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#get_canonical_name" title="get_canonical_name()" alt="" coords="17,6,204,38" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#get_containing_module" title="get_containing_module()" alt="" coords="7,62,215,94" />
+</map>
+  <img src="call_graph_for__find_function_.gif" alt='' usemap="#call_graph_for__find_function_" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docintrospecter-module.html#register_introspecter" class="summary-sig-name">register_introspecter</a>(<span class="summary-sig-arg">applicability_test</span>,
+        <span class="summary-sig-arg">introspecter</span>,
+        <span class="summary-sig-arg">priority</span>=<span class="summary-sig-default">10</span>)</span><br />
+      Register an introspecter function.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docintrospecter-pysrc.html#register_introspecter">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_get_introspecter"></a><span class="summary-sig-name">_get_introspecter</span>(<span class="summary-sig-arg">value</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docintrospecter-pysrc.html#_get_introspecter">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__get_introspect-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__get_introspect-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__get_introspect" name="call_graph_for__get_introspect">
+<area shape="rect" href="epydoc.docintrospecter-module.html#_get_introspecter" title="_get_introspecter()" alt="" coords="207,90,369,122" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#is_getset" title="is_getset()" alt="" coords="428,6,529,38" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#is_member" title="is_member()" alt="" coords="420,62,537,94" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#is_property" title="is_property()" alt="" coords="419,118,539,150" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#isclass" title="isclass()" alt="" coords="437,174,520,206" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#introspect_docs" title="introspect_docs()" alt="" coords="5,90,157,122" />
+</map>
+  <img src="call_graph_for__get_introspect.gif" alt='' usemap="#call_graph_for__get_introspect" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="is_classmethod"></a><span class="summary-sig-name">is_classmethod</span>(<span class="summary-sig-arg">v</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docintrospecter-pysrc.html#is_classmethod">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="is_staticmethod"></a><span class="summary-sig-name">is_staticmethod</span>(<span class="summary-sig-arg">v</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docintrospecter-pysrc.html#is_staticmethod">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="is_property"></a><span class="summary-sig-name">is_property</span>(<span class="summary-sig-arg">v</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docintrospecter-pysrc.html#is_property">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_is_property-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_is_property-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_is_property" name="call_graph_for_is_property">
+<area shape="rect" href="epydoc.docintrospecter-module.html#_get_introspecter" title="_get_introspecter()" alt="" coords="7,6,169,38" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#is_property" title="is_property()" alt="" coords="219,6,339,38" />
+</map>
+  <img src="call_graph_for_is_property.gif" alt='' usemap="#call_graph_for_is_property" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="is_getset"></a><span class="summary-sig-name">is_getset</span>(<span class="summary-sig-arg">v</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docintrospecter-pysrc.html#is_getset">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_is_getset-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_is_getset-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_is_getset" name="call_graph_for_is_getset">
+<area shape="rect" href="epydoc.docintrospecter-module.html#_get_introspecter" title="_get_introspecter()" alt="" coords="7,6,169,38" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#is_getset" title="is_getset()" alt="" coords="219,6,320,38" />
+</map>
+  <img src="call_graph_for_is_getset.gif" alt='' usemap="#call_graph_for_is_getset" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="is_member"></a><span class="summary-sig-name">is_member</span>(<span class="summary-sig-arg">v</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docintrospecter-pysrc.html#is_member">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_is_member-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_is_member-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_is_member" name="call_graph_for_is_member">
+<area shape="rect" href="epydoc.docintrospecter-module.html#_get_introspecter" title="_get_introspecter()" alt="" coords="7,6,169,38" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#is_member" title="is_member()" alt="" coords="220,6,337,38" />
+</map>
+  <img src="call_graph_for_is_member.gif" alt='' usemap="#call_graph_for_is_member" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_value_from_filename"></a><span class="summary-sig-name">get_value_from_filename</span>(<span class="summary-sig-arg">filename</span>,
+        <span class="summary-sig-arg">context</span>=<span class="summary-sig-default">None</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docintrospecter-pysrc.html#get_value_from_filename">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_get_value_from_-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_get_value_from_-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_get_value_from_" name="call_graph_for_get_value_from_">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__cmp__" title="apidoc.APIDoc.__cmp__()" alt="" coords="493,6,717,38" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__init__" title="apidoc.DottedName.__init__()" alt="" coords="480,62,731,94" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__str__" title="apidoc.DottedName.__str__()" alt="" coords="484,118,727,150" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#_import" title="_import()" alt="" coords="559,174,652,206" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#get_value_from_filename" title="get_value_from_filename()" alt="" coords="205,118,432,150" />
+<area shape="rect" href="epydoc.util-module.html#is_package_dir" title="util.is_package_dir()" alt="" coords="517,230,693,262" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#introspect_docs" title="introspect_docs()" alt="" coords="5,118,157,150" />
+</map>
+  <img src="call_graph_for_get_value_from_.gif" alt='' usemap="#call_graph_for_get_value_from_" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_value_from_scriptname"></a><span class="summary-sig-name">get_value_from_scriptname</span>(<span class="summary-sig-arg">filename</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docintrospecter-pysrc.html#get_value_from_scriptname">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docintrospecter-module.html#get_value_from_name" class="summary-sig-name">get_value_from_name</a>(<span class="summary-sig-arg">name</span>,
+        <span class="summary-sig-arg">globs</span>=<span class="summary-sig-default">None</span>)</span><br />
+      Given a name, return the corresponding value.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docintrospecter-pysrc.html#get_value_from_name">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_lookup"></a><span class="summary-sig-name">_lookup</span>(<span class="summary-sig-arg">module</span>,
+        <span class="summary-sig-arg">name</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docintrospecter-pysrc.html#_lookup">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docintrospecter-module.html#_import" class="summary-sig-name" onclick="show_private();">_import</a>(<span class="summary-sig-arg">name</span>,
+        <span class="summary-sig-arg">filename</span>=<span class="summary-sig-default">None</span>)</span><br />
+      Run the given callable in a 'sandboxed' environment.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docintrospecter-pysrc.html#_import">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__import-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__import-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__import" name="call_graph_for__import">
+<area shape="rect" href="epydoc.docintrospecter-module.html#_import" title="_import()" alt="" coords="281,6,375,38" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#get_value_from_filename" title="get_value_from_filename()" alt="" coords="5,6,232,38" />
+</map>
+  <img src="call_graph_for__import.gif" alt='' usemap="#call_graph_for__import" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docintrospecter-module.html#introspect_docstring_lineno" class="summary-sig-name">introspect_docstring_lineno</a>(<span class="summary-sig-arg">api_doc</span>)</span><br />
+      Try to determine the line number on which the given item's docstring 
+      begins.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docintrospecter-pysrc.html#introspect_docstring_lineno">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_is_zope_type"></a><span class="summary-sig-name">_is_zope_type</span>(<span class="summary-sig-arg">val</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docintrospecter-pysrc.html#_is_zope_type">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_is_zope_method"></a><span class="summary-sig-name">_is_zope_method</span>(<span class="summary-sig-arg">val</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docintrospecter-pysrc.html#_is_zope_method">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Variables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docintrospecter-module.html#_valuedoc_cache" class="summary-name" onclick="show_private();">_valuedoc_cache</a> = <code title="{135394656: <ValueDoc epydoc.docintrospecter.ClassType>,
+ 135394848: <ValueDoc epydoc.docintrospecter.InstanceType>,
+ 135395040: <ValueDoc epydoc.docintrospecter.MethodType>,
+ 135396096: <ClassDoc file>,
+ 135400544: <ClassDoc float>,
+ 135401088: <ClassDoc int>,
+ 135402368: <ClassDoc list>,
+ 135404832: <ClassDoc long>,
+..."><code class="variable-group">{</code>135394656<code class="variable-op">: </code><ValueDoc epydoc.docintrospecter<code class="variable-ellipsis">...</code></code><br />
+      A cache containing the API documentation for values that we've 
+      already seen.
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docintrospecter-module.html#_introspected_values" class="summary-name" onclick="show_private();">_introspected_values</a> = <code title="{135396096: True,
+ 135400544: True,
+ 135401088: True,
+ 135402368: True,
+ 135404832: True,
+ 135405600: True,
+ 135408504: True,
+ 135408512: True,
+..."><code class="variable-group">{</code>135396096<code class="variable-op">: </code>True<code class="variable-op">, </code>135400544<code class="variable-op">: </code>True<code class="variable-op">, </code>1354<code class="variable-ellipsis">...</code></code><br />
+      A record which values we've introspected, encoded as a dictionary 
+      from pyid to <code>bool</code>.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docintrospecter-module.html#UNDOCUMENTED_MODULE_VARS" class="summary-name">UNDOCUMENTED_MODULE_VARS</a> = <code title="('__builtins__',
+ '__doc__',
+ '__all__',
+ '__file__',
+ '__path__',
+ '__name__',
+ '__extra_epydoc_fields__',
+ '__docformat__')"><code class="variable-group">(</code><code class="variable-quote">'</code><code class="variable-string">__builtins__</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">__doc__</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">__all_</code><code class="variable-ellipsis">...</code></c [...]
+      A list of module variables that should not be included in a module's 
+      API documentation.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docintrospecter-module.html#UNDOCUMENTED_CLASS_VARS" class="summary-name">UNDOCUMENTED_CLASS_VARS</a> = <code title="('__doc__',
+ '__module__',
+ '__dict__',
+ '__weakref__',
+ '__slots__',
+ '__pyx_vtable__')"><code class="variable-group">(</code><code class="variable-quote">'</code><code class="variable-string">__doc__</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">__module__</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">__dict__</code><code class="variable-quote">'</code><code c [...]
+      A list of class variables that should not be included in a class's 
+      API documentation.
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="_CLASS_TYPES"></a><span class="summary-name">_CLASS_TYPES</span> = <code title="set([<type 'classobj'>, <type 'type'>])"><code class="variable-group">set([</code><type 'classobj'><code class="variable-op">, </code><type 'type'><code class="variable-group">])</code></code><br />
+      A list of types that should be treated as classes.
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="__future_check_works"></a><span class="summary-name">__future_check_works</span> = <code title="True">True</code>
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="_introspecter_registry"></a><span class="summary-name">_introspecter_registry</span> = <code title="[]">[]</code>
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="_dev_null"></a><span class="summary-name">_dev_null</span> = <code title="sys.stdout">sys.stdout</code>
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="_ZopeType"></a><span class="summary-name">_ZopeType</span> = <code title="type(_ExtensionClass)">type(_ExtensionClass)</code>
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTION DETAILS ==================== -->
+<a name="section-FunctionDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Function Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-FunctionDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="introspect_docs"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">introspect_docs</span>(<span class="sig-arg">value</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">name</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">filename</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">context</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">is_script</span>=<span class="sig-default">False</span>,
+        <span class="sig-arg">module_name</span>=<span class="sig-default">None</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docintrospecter-pysrc.html#introspect_docs">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_introspect_docs-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_introspect_docs-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_introspect_docs" name="call_graph_for_introspect_docs">
+<area shape="rect" href="epydoc.docbuilder-module.html#_get_docs_from_module_file" title="docbuilder._get_docs_from_module_file()" alt="" coords="5,174,344,206" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#introspect_docs" title="introspect_docs()" alt="" coords="392,230,544,262" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#_get_introspecter" title="_get_introspecter()" alt="" coords="624,62,787,94" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#_get_valuedoc" title="_get_valuedoc()" alt="" coords="633,118,777,150" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#get_value_from_filename" title="get_value_from_filename()" alt="" coords="592,174,819,206" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#introspect_class" title="introspect_class()" alt="" coords="628,6,783,38" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#introspect_module" title="introspect_module()" alt="" coords="619,230,792,262" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#introspect_other" title="introspect_other()" alt="" coords="628,286,783,318" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#introspect_property" title="introspect_property()" alt="" coords="615,342,796,374" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#introspect_routine" title="introspect_routine()" alt="" coords="620,398,791,430" />
+<area shape="rect" href="epydoc.docparser-module.html#lookup_name" title="docparser.lookup_name()" alt="" coords="69,230,280,262" />
+<area shape="rect" href="epydoc.docparser-module.html#parse_docs" title="docparser.parse_docs()" alt="" coords="77,286,272,318" />
+</map>
+  <img src="call_graph_for_introspect_docs.gif" alt='' usemap="#call_graph_for_introspect_docs" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Generate the API documentation for a specified object by introspecting
+  Python values, and return it as a <a 
+  href="epydoc.apidoc.ValueDoc-class.html" class="link">ValueDoc</a>.  The 
+  object to generate documentation for may be specified using the 
+  <code>value</code> parameter, the <code>filename</code> parameter, 
+  <i>or</i> the <code>name</code> parameter.  (It is an error to specify 
+  more than one of these three parameters, or to not specify any of 
+  them.)</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>value</code></strong> - The python object that should be documented.</li>
+        <li><strong class="pname"><code>filename</code></strong> - The name of the file that contains the python source code for a 
+          package, module, or script.  If <code>filename</code> is 
+          specified, then <code>introspect</code> will return a 
+          <code>ModuleDoc</code> describing its contents.</li>
+        <li><strong class="pname"><code>name</code></strong> - The fully-qualified python dotted name of any value (including 
+          packages, modules, classes, and functions).  
+          <code>DocParser</code> will automatically figure out which 
+          module(s) it needs to import in order to find the documentation 
+          for the specified object.</li>
+        <li><strong class="pname"><code>context</code></strong> - The API documentation for the class of module that contains 
+          <code>value</code> (if available).</li>
+        <li><strong class="pname"><code>module_name</code></strong> - The name of the module where the value is defined. Useful to 
+          retrieve the docstring encoding if there is no way to detect the 
+          module by introspection (such as in properties)</li>
+    </ul></dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="_get_valuedoc"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">_get_valuedoc</span>(<span class="sig-arg">value</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docintrospecter-pysrc.html#_get_valuedoc">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__get_valuedoc-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for__get_valuedoc-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__get_valuedoc" name="call_graph_for__get_valuedoc">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__init__" title="apidoc.APIDoc.__init__()" alt="" coords="412,6,628,38" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__str__" title="apidoc.DottedName.__str__()" alt="" coords="399,62,641,94" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#_get_valuedoc" title="_get_valuedoc()" alt="" coords="205,146,349,178" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#get_canonical_name" title="get_canonical_name()" alt="" coords="427,118,613,150" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#get_containing_module" title="get_containing_module()" alt="" coords="416,174,624,206" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#introspect_module" title="introspect_module()" alt="" coords="433,230,607,262" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#introspect_docs" title="introspect_docs()" alt="" coords="5,146,157,178" />
+</map>
+  <img src="call_graph_for__get_valuedoc.gif" alt='' usemap="#call_graph_for__get_valuedoc" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>If a <code>ValueDoc</code> for the given value exists in the valuedoc 
+  cache, then return it; otherwise, create a new <code>ValueDoc</code>, add
+  it to the cache, and return it.  When possible, the new 
+  <code>ValueDoc</code>'s <code>pyval</code>, <code>repr</code>, and 
+  <code>canonical_name</code> attributes will be set appropriately.</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="isclass"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">isclass</span>(<span class="sig-arg">object</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docintrospecter-pysrc.html#isclass">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_isclass-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_isclass-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_isclass" name="call_graph_for_isclass">
+<area shape="rect" href="epydoc.docintrospecter-module.html#_get_introspecter" title="_get_introspecter()" alt="" coords="30,6,192,38" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#isclass" title="isclass()" alt="" coords="266,62,348,94" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#get_canonical_name" title="get_canonical_name()" alt="" coords="18,62,204,94" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#get_containing_module" title="get_containing_module()" alt="" coords="7,118,215,150" />
+</map>
+  <img src="call_graph_for_isclass.gif" alt='' usemap="#call_graph_for_isclass" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Return true if the given object is a class.  In particular, return 
+  true if object is an instance of <code>types.TypeType</code> or of 
+  <code>types.ClassType</code>.  This is used instead of 
+  <code>inspect.isclass()</code>, because the latter returns true for 
+  objects that are not classes (in particular, it returns true for any 
+  object that has a <code>__bases__</code> attribute, including objects 
+  that define <code>__getattr__</code> to always return a value).</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="register_class_type"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">register_class_type</span>(<span class="sig-arg">typ</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docintrospecter-pysrc.html#register_class_type">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Add a type to the lists of types that should be treated as classes.  
+  By default, this list contains <code>TypeType</code> and 
+  <code>ClassType</code>.</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="get_canonical_name"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">get_canonical_name</span>(<span class="sig-arg">value</span>,
+        <span class="sig-arg">strict</span>=<span class="sig-default">False</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docintrospecter-pysrc.html#get_canonical_name">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_get_canonical_n-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_get_canonical_n-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_get_canonical_n" name="call_graph_for_get_canonical_n">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__init__" title="apidoc.DottedName.__init__()" alt="" coords="432,6,683,38" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#_find_function_module" title="_find_function_module()" alt="" coords="452,62,663,94" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#_get_valuedoc" title="_get_valuedoc()" alt="" coords="5,90,149,122" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#get_canonical_name" title="get_canonical_name()" alt="" coords="197,90,384,122" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#isclass" title="isclass()" alt="" coords="516,118,599,150" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#verify_name" title="verify_name()" alt="" coords="493,174,621,206" />
+</map>
+  <img src="call_graph_for_get_canonical_n.gif" alt='' usemap="#call_graph_for_get_canonical_n" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  
+  <dl class="fields">
+    <dt>Returns: <a href="epydoc.apidoc.DottedName-class.html" 
+      class="link">DottedName</a> or <code>UNKNOWN</code></dt>
+        <dd>the canonical name for <code>value</code>, or 
+          <code>UNKNOWN</code> if no canonical name can be found.  
+          Currently, <code>get_canonical_name</code> can find canonical 
+          names for: modules; functions; non-nested classes; methods of 
+          non-nested classes; and some class methods of non-nested classes.</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="verify_name"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">verify_name</span>(<span class="sig-arg">value</span>,
+        <span class="sig-arg">dotted_name</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docintrospecter-pysrc.html#verify_name">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_verify_name-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_verify_name-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_verify_name" name="call_graph_for_verify_name">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__getitem__" title="apidoc.DottedName.__getitem__()" alt="" coords="417,6,697,38" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#get_canonical_name" title="get_canonical_name()" alt="" coords="5,6,192,38" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#verify_name" title="verify_name()" alt="" coords="240,6,368,38" />
+</map>
+  <img src="call_graph_for_verify_name.gif" alt='' usemap="#call_graph_for_verify_name" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Verify the name.  E.g., if it's a nested class, then we won't be able 
+  to find it with the name we constructed.</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="_find_function_module"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">_find_function_module</span>(<span class="sig-arg">func</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docintrospecter-pysrc.html#_find_function_module">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__find_function_-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for__find_function_-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__find_function_" name="call_graph_for__find_function_">
+<area shape="rect" href="epydoc.docintrospecter-module.html#_find_function_module" title="_find_function_module()" alt="" coords="264,34,475,66" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#get_canonical_name" title="get_canonical_name()" alt="" coords="17,6,204,38" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#get_containing_module" title="get_containing_module()" alt="" coords="7,62,215,94" />
+</map>
+  <img src="call_graph_for__find_function_.gif" alt='' usemap="#call_graph_for__find_function_" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>func</code></strong> (<code>function</code>) - The function whose module should be found.</li>
+    </ul></dd>
+    <dt>Returns: <code>module</code></dt>
+        <dd>The module that defines the given function.</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="register_introspecter"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">register_introspecter</span>(<span class="sig-arg">applicability_test</span>,
+        <span class="sig-arg">introspecter</span>,
+        <span class="sig-arg">priority</span>=<span class="sig-default">10</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docintrospecter-pysrc.html#register_introspecter">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Register an introspecter function.  Introspecter functions take two 
+  arguments, a python value and a <code>ValueDoc</code> object, and should 
+  add information about the given value to the the <code>ValueDoc</code>. 
+  Usually, the first line of an inspecter function will specialize it to a 
+  sublass of <code>ValueDoc</code>, using <a 
+  href="epydoc.apidoc.APIDoc-class.html#specialize_to" 
+  class="link">ValueDoc.specialize_to()</a>:</p>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">def</span> <span class="py-defname">typical_introspecter</span>(value, value_doc):
+<span class="py-more">... </span>    value_doc.specialize_to(SomeSubclassOfValueDoc)
+<span class="py-more">... </span>    <add info to value_doc></pre>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>priority</code></strong> - The priority of this introspecter, which determines the order in 
+          which introspecters are tried -- introspecters with lower numbers
+          are tried first.  The standard introspecters have priorities 
+          ranging from 20 to 30.  The default priority (10) will place new 
+          introspecters before standard introspecters.</li>
+    </ul></dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="get_value_from_name"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">get_value_from_name</span>(<span class="sig-arg">name</span>,
+        <span class="sig-arg">globs</span>=<span class="sig-default">None</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docintrospecter-pysrc.html#get_value_from_name">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Given a name, return the corresponding value.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>globs</code></strong> - A namespace to check for the value, if there is no module 
+          containing the named value.  Defaults to __builtin__.</li>
+    </ul></dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="_import"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">_import</span>(<span class="sig-arg">name</span>,
+        <span class="sig-arg">filename</span>=<span class="sig-default">None</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docintrospecter-pysrc.html#_import">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__import-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for__import-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__import" name="call_graph_for__import">
+<area shape="rect" href="epydoc.docintrospecter-module.html#_import" title="_import()" alt="" coords="281,6,375,38" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#get_value_from_filename" title="get_value_from_filename()" alt="" coords="5,6,232,38" />
+</map>
+  <img src="call_graph_for__import.gif" alt='' usemap="#call_graph_for__import" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Run the given callable in a 'sandboxed' environment. Currently, this 
+  includes saving and restoring the contents of sys and __builtins__; and 
+  suppressing stdin, stdout, and stderr.</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="introspect_docstring_lineno"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">introspect_docstring_lineno</span>(<span class="sig-arg">api_doc</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docintrospecter-pysrc.html#introspect_docstring_lineno">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Try to determine the line number on which the given item's docstring 
+  begins.  Return the line number, or <code>None</code> if the line number 
+  can't be determined.  The line number of the first line in the file is 
+  1.</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== VARIABLES DETAILS ==================== -->
+<a name="section-VariablesDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Variables Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-VariablesDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="_valuedoc_cache"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">_valuedoc_cache</h3>
+  <p>A cache containing the API documentation for values that we've already
+  seen.  This cache is implemented as a dictionary that maps a value's pyid
+  to its <a href="epydoc.apidoc.ValueDoc-class.html" 
+  class="link">ValueDoc</a>.</p>
+  <p>Note that if we encounter a value but decide not to introspect it 
+  (because it's imported from another module), then 
+  <code>_valuedoc_cache</code> will contain an entry for the value, but the
+  value will not be listed in <a 
+  href="epydoc.docintrospecter-module.html#_introspected_values" 
+  class="link" onclick="show_private();">_introspected_values</a>.</p>
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-group">{</code>135394656<code class="variable-op">: </code><ValueDoc epydoc.docintrospecter.ClassType><code class="variable-op">,</code>
+ 135394848<code class="variable-op">: </code><ValueDoc epydoc.docintrospecter.InstanceType><code class="variable-op">,</code>
+ 135395040<code class="variable-op">: </code><ValueDoc epydoc.docintrospecter.MethodType><code class="variable-op">,</code>
+ 135396096<code class="variable-op">: </code><ClassDoc file><code class="variable-op">,</code>
+ 135400544<code class="variable-op">: </code><ClassDoc float><code class="variable-op">,</code>
+ 135401088<code class="variable-op">: </code><ClassDoc int><code class="variable-op">,</code>
+ 135402368<code class="variable-op">: </code><ClassDoc list><code class="variable-op">,</code>
+ 135404832<code class="variable-op">: </code><ClassDoc long><code class="variable-op">,</code>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="_introspected_values"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">_introspected_values</h3>
+  <p>A record which values we've introspected, encoded as a dictionary from
+  pyid to <code>bool</code>.</p>
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-group">{</code>135396096<code class="variable-op">: </code>True<code class="variable-op">,</code>
+ 135400544<code class="variable-op">: </code>True<code class="variable-op">,</code>
+ 135401088<code class="variable-op">: </code>True<code class="variable-op">,</code>
+ 135402368<code class="variable-op">: </code>True<code class="variable-op">,</code>
+ 135404832<code class="variable-op">: </code>True<code class="variable-op">,</code>
+ 135405600<code class="variable-op">: </code>True<code class="variable-op">,</code>
+ 135408504<code class="variable-op">: </code>True<code class="variable-op">,</code>
+ 135408512<code class="variable-op">: </code>True<code class="variable-op">,</code>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="UNDOCUMENTED_MODULE_VARS"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">UNDOCUMENTED_MODULE_VARS</h3>
+  <p>A list of module variables that should not be included in a module's 
+  API documentation.</p>
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-group">(</code><code class="variable-quote">'</code><code class="variable-string">__builtins__</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">__doc__</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">__all__</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">__file__</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">__path__</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">__name__</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">__extra_epydoc_fields__</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">__docformat__</code><code class="variable-quote">'</code><code class="variable-group">)</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="UNDOCUMENTED_CLASS_VARS"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">UNDOCUMENTED_CLASS_VARS</h3>
+  <p>A list of class variables that should not be included in a class's API
+  documentation.</p>
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-group">(</code><code class="variable-quote">'</code><code class="variable-string">__doc__</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">__module__</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">__dict__</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">__weakref__</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">__slots__</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">__pyx_vtable__</code><code class="variable-quote">'</code><code class="variable-group">)</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:06:07 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.docintrospecter-pysrc.html b/doc/api/epydoc.docintrospecter-pysrc.html
new file mode 100644
index 0000000..3ef3bb4
--- /dev/null
+++ b/doc/api/epydoc.docintrospecter-pysrc.html
@@ -0,0 +1,1292 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.docintrospecter</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        Module docintrospecter
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.docintrospecter-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="epydoc.docintrospecter-module.html">Module epydoc.docintrospecter</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno">   1</tt>  <tt class="py-line"><tt class="py-comment"># epydoc -- Introspection</tt> </tt>
+<a name="L2"></a><tt class="py-lineno">   2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L3"></a><tt class="py-lineno">   3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2005 Edward Loper</tt> </tt>
+<a name="L4"></a><tt class="py-lineno">   4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Author: Edward Loper <edloper at loper.org></tt> </tt>
+<a name="L5"></a><tt class="py-lineno">   5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># URL: <http://epydoc.sf.net></tt> </tt>
+<a name="L6"></a><tt class="py-lineno">   6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L7"></a><tt class="py-lineno">   7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># $Id: docintrospecter.py 1678 2008-01-29 17:21:29Z edloper $</tt> </tt>
+<a name="L8"></a><tt class="py-lineno">   8</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L9"></a><tt class="py-lineno">   9</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L10"></a><tt class="py-lineno">  10</tt>  <tt class="py-line"><tt class="py-docstring">Extract API documentation about python objects by directly introspecting</tt> </tt>
+<a name="L11"></a><tt class="py-lineno">  11</tt>  <tt class="py-line"><tt class="py-docstring">their values.</tt> </tt>
+<a name="L12"></a><tt class="py-lineno">  12</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L13"></a><tt class="py-lineno">  13</tt>  <tt class="py-line"><tt class="py-docstring">The function L{introspect_docs()}, which provides the main interface</tt> </tt>
+<a name="L14"></a><tt class="py-lineno">  14</tt>  <tt class="py-line"><tt class="py-docstring">of this module, examines a Python objects via introspection, and uses</tt> </tt>
+<a name="L15"></a><tt class="py-lineno">  15</tt>  <tt class="py-line"><tt class="py-docstring">the information it finds to create an L{APIDoc} objects containing the</tt> </tt>
+<a name="L16"></a><tt class="py-lineno">  16</tt>  <tt class="py-line"><tt class="py-docstring">API documentation for that objects.</tt> </tt>
+<a name="L17"></a><tt class="py-lineno">  17</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L18"></a><tt class="py-lineno">  18</tt>  <tt class="py-line"><tt class="py-docstring">The L{register_introspecter()} method can be used to extend the</tt> </tt>
+<a name="L19"></a><tt class="py-lineno">  19</tt>  <tt class="py-line"><tt class="py-docstring">functionality of C{docintrospector}, by providing methods that handle</tt> </tt>
+<a name="L20"></a><tt class="py-lineno">  20</tt>  <tt class="py-line"><tt class="py-docstring">special value types.</tt> </tt>
+<a name="L21"></a><tt class="py-lineno">  21</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L22"></a><tt class="py-lineno">  22</tt>  <tt class="py-line"><tt class="py-name">__docformat__</tt> <tt class="py-op">=</tt> <tt class="py-string">'epytext en'</tt> </tt>
+<a name="L23"></a><tt class="py-lineno">  23</tt>  <tt class="py-line"> </tt>
+<a name="L24"></a><tt class="py-lineno">  24</tt>  <tt class="py-line"><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L25"></a><tt class="py-lineno">  25</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## Imports</tt> </tt>
+<a name="L26"></a><tt class="py-lineno">  26</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L27"></a><tt class="py-lineno">  27</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L28"></a><tt class="py-lineno">  28</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">inspect</tt><tt class="py-op">,</tt> <tt class="py-name">re</tt><tt class="py-op">,</tt> <tt class="py-name">sys</tt><tt class="py-op">,</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-0" class="py-name" targets="Variable epydoc.apidoc.ModuleDoc.path=epydoc.apidoc.ModuleDoc-class.html#path"><a title="epydoc.apidoc.ModuleDoc.path" class="py-nam [...]
+<a name="L29"></a><tt class="py-lineno">  29</tt>  <tt class="py-line"><tt class="py-comment"># API documentation encoding:</tt> </tt>
+<a name="L30"></a><tt class="py-lineno">  30</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">from</tt> <tt id="link-1" class="py-name" targets="Package epydoc=epydoc-module.html"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-1', 'epydoc', 'link-1');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-2" class="py-name" targets="Module epydoc.apidoc=epydoc.apidoc-module.html"><a title="epydoc.apidoc" class="py-name" href="#" onclick [...]
+<a name="L31"></a><tt class="py-lineno">  31</tt>  <tt class="py-line"><tt class="py-comment"># Type comparisons:</tt> </tt>
+<a name="L32"></a><tt class="py-lineno">  32</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">from</tt> <tt class="py-name">types</tt> <tt class="py-keyword">import</tt> <tt class="py-op">*</tt> </tt>
+<a name="L33"></a><tt class="py-lineno">  33</tt>  <tt class="py-line"><tt class="py-comment"># Error reporting:</tt> </tt>
+<a name="L34"></a><tt class="py-lineno">  34</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">from</tt> <tt id="link-3" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-3', 'epydoc', 'link-1');">epydoc</a></tt> <tt class="py-keyword">import</tt> <tt id="link-4" class="py-name" targets="Method epydoc.cli.ConsoleLogger.log()=epydoc.cli.ConsoleLogger-class.html#log,Method epydoc.cli.HTMLLogger.log()=epydoc.cli.HTMLLogger-cl [...]
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-4', 'log', 'link-4');">log</a></tt> </tt>
+<a name="L35"></a><tt class="py-lineno">  35</tt>  <tt class="py-line"><tt class="py-comment"># Helper functions:</tt> </tt>
+<a name="L36"></a><tt class="py-lineno">  36</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">from</tt> <tt id="link-5" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-5', 'epydoc', 'link-1');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-6" class="py-name" targets="Module epydoc.test.util=epydoc.test.util-module.html,Module epydoc.util=epydoc.util-module.html"><a title="epydoc.test.util
+epydoc.util" class="py-name" href="#" onclick="return doclink('link-6', 'util', 'link-6');">util</a></tt> <tt class="py-keyword">import</tt> <tt class="py-op">*</tt> </tt>
+<a name="L37"></a><tt class="py-lineno">  37</tt>  <tt class="py-line"><tt class="py-comment"># For extracting encoding for docstrings:</tt> </tt>
+<a name="L38"></a><tt class="py-lineno">  38</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">import</tt> <tt id="link-7" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-7', 'epydoc', 'link-1');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-8" class="py-name" targets="Module epydoc.docparser=epydoc.docparser-module.html"><a title="epydoc.docparser" class="py-name" href="#" onclick="return doclink('link-8', 'docpa [...]
+<a name="L39"></a><tt class="py-lineno">  39</tt>  <tt class="py-line"><tt class="py-comment"># Builtin values</tt> </tt>
+<a name="L40"></a><tt class="py-lineno">  40</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">import</tt> <tt class="py-name">__builtin__</tt> </tt>
+<a name="L41"></a><tt class="py-lineno">  41</tt>  <tt class="py-line"><tt class="py-comment"># Backwards compatibility</tt> </tt>
+<a name="L42"></a><tt class="py-lineno">  42</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">from</tt> <tt id="link-9" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-9', 'epydoc', 'link-1');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-10" class="py-name" targets="Module epydoc.compat=epydoc.compat-module.html"><a title="epydoc.compat" class="py-name" href="#" onclick="return doclink('link-10', 'compat', 'link [...]
+<a name="L43"></a><tt class="py-lineno">  43</tt>  <tt class="py-line"> </tt>
+<a name="L44"></a><tt class="py-lineno">  44</tt>  <tt class="py-line"><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L45"></a><tt class="py-lineno">  45</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## Caches</tt> </tt>
+<a name="L46"></a><tt class="py-lineno">  46</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L47"></a><tt class="py-lineno">  47</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L48"></a><tt class="py-lineno">  48</tt>  <tt class="py-line"><tt id="link-11" class="py-name" targets="Variable epydoc.docintrospecter._valuedoc_cache=epydoc.docintrospecter-module.html#_valuedoc_cache"><a title="epydoc.docintrospecter._valuedoc_cache" class="py-name" href="#" onclick="return doclink('link-11', '_valuedoc_cache', 'link-11');">_valuedoc_cache</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L49"></a><tt class="py-lineno">  49</tt>  <tt class="py-line"><tt class="py-string">"""A cache containing the API documentation for values that we've</tt> </tt>
+<a name="L50"></a><tt class="py-lineno">  50</tt>  <tt class="py-line"><tt class="py-string">already seen.  This cache is implemented as a dictionary that maps a</tt> </tt>
+<a name="L51"></a><tt class="py-lineno">  51</tt>  <tt class="py-line"><tt class="py-string">value's pyid to its L{ValueDoc}.</tt> </tt>
+<a name="L52"></a><tt class="py-lineno">  52</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L53"></a><tt class="py-lineno">  53</tt>  <tt class="py-line"><tt class="py-string">Note that if we encounter a value but decide not to introspect it</tt> </tt>
+<a name="L54"></a><tt class="py-lineno">  54</tt>  <tt class="py-line"><tt class="py-string">(because it's imported from another module), then C{_valuedoc_cache}</tt> </tt>
+<a name="L55"></a><tt class="py-lineno">  55</tt>  <tt class="py-line"><tt class="py-string">will contain an entry for the value, but the value will not be listed</tt> </tt>
+<a name="L56"></a><tt class="py-lineno">  56</tt>  <tt class="py-line"><tt class="py-string">in L{_introspected_values}."""</tt> </tt>
+<a name="L57"></a><tt class="py-lineno">  57</tt>  <tt class="py-line"> </tt>
+<a name="L58"></a><tt class="py-lineno">  58</tt>  <tt class="py-line"><tt id="link-12" class="py-name" targets="Variable epydoc.docintrospecter._introspected_values=epydoc.docintrospecter-module.html#_introspected_values"><a title="epydoc.docintrospecter._introspected_values" class="py-name" href="#" onclick="return doclink('link-12', '_introspected_values', 'link-12');">_introspected_values</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L59"></a><tt class="py-lineno">  59</tt>  <tt class="py-line"><tt class="py-string">"""A record which values we've introspected, encoded as a dictionary from</tt> </tt>
+<a name="L60"></a><tt class="py-lineno">  60</tt>  <tt class="py-line"><tt class="py-string">pyid to C{bool}."""</tt> </tt>
+<a name="L61"></a><tt class="py-lineno">  61</tt>  <tt class="py-line"> </tt>
+<a name="clear_cache"></a><div id="clear_cache-def"><a name="L62"></a><tt class="py-lineno">  62</tt> <a class="py-toggle" href="#" id="clear_cache-toggle" onclick="return toggle('clear_cache');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docintrospecter-module.html#clear_cache">clear_cache</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="clear_cache-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="clear_cache-expanded"><a name="L63"></a><tt class="py-lineno">  63</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L64"></a><tt class="py-lineno">  64</tt>  <tt class="py-line"><tt class="py-docstring">    Discard any cached C{APIDoc} values that have been computed for</tt> </tt>
+<a name="L65"></a><tt class="py-lineno">  65</tt>  <tt class="py-line"><tt class="py-docstring">    introspected values.</tt> </tt>
+<a name="L66"></a><tt class="py-lineno">  66</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L67"></a><tt class="py-lineno">  67</tt>  <tt class="py-line">    <tt id="link-13" class="py-name"><a title="epydoc.docintrospecter._valuedoc_cache" class="py-name" href="#" onclick="return doclink('link-13', '_valuedoc_cache', 'link-11');">_valuedoc_cache</a></tt><tt class="py-op">.</tt><tt id="link-14" class="py-name" targets="Method epydoc.docwriter.xlink.DocUrlGenerator.clear()=epydoc.docwriter.xlink.DocUrlGenerator-class.html#clear,Method epydoc.gui.GUILogger.clear()=epydoc [...]
+epydoc.gui.GUILogger.clear" class="py-name" href="#" onclick="return doclink('link-14', 'clear', 'link-14');">clear</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L68"></a><tt class="py-lineno">  68</tt>  <tt class="py-line">    <tt id="link-15" class="py-name"><a title="epydoc.docintrospecter._introspected_values" class="py-name" href="#" onclick="return doclink('link-15', '_introspected_values', 'link-12');">_introspected_values</a></tt><tt class="py-op">.</tt><tt id="link-16" class="py-name"><a title="epydoc.docwriter.xlink.DocUrlGenerator.clear
+epydoc.gui.GUILogger.clear" class="py-name" href="#" onclick="return doclink('link-16', 'clear', 'link-14');">clear</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L69"></a><tt class="py-lineno">  69</tt>  <tt class="py-line"> </tt>
+<a name="L70"></a><tt class="py-lineno">  70</tt>  <tt class="py-line"><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L71"></a><tt class="py-lineno">  71</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## Introspection</tt> </tt>
+<a name="L72"></a><tt class="py-lineno">  72</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L73"></a><tt class="py-lineno">  73</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="introspect_docs"></a><div id="introspect_docs-def"><a name="L74"></a><tt class="py-lineno">  74</tt> <a class="py-toggle" href="#" id="introspect_docs-toggle" onclick="return toggle('introspect_docs');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docintrospecter-module.html#introspect_docs">introspect_docs</a><tt class="py-op">(</tt><tt class="py-param">value</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-o [...]
+<a name="L75"></a><tt class="py-lineno">  75</tt>  <tt class="py-line">                    <tt class="py-param">is_script</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> <tt class="py-param">module_name</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="introspect_docs-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="introspect_docs-expanded"><a name="L76"></a><tt class="py-lineno">  76</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L77"></a><tt class="py-lineno">  77</tt>  <tt class="py-line"><tt class="py-docstring">    Generate the API documentation for a specified object by</tt> </tt>
+<a name="L78"></a><tt class="py-lineno">  78</tt>  <tt class="py-line"><tt class="py-docstring">    introspecting Python values, and return it as a L{ValueDoc}.  The</tt> </tt>
+<a name="L79"></a><tt class="py-lineno">  79</tt>  <tt class="py-line"><tt class="py-docstring">    object to generate documentation for may be specified using</tt> </tt>
+<a name="L80"></a><tt class="py-lineno">  80</tt>  <tt class="py-line"><tt class="py-docstring">    the C{value} parameter, the C{filename} parameter, I{or} the</tt> </tt>
+<a name="L81"></a><tt class="py-lineno">  81</tt>  <tt class="py-line"><tt class="py-docstring">    C{name} parameter.  (It is an error to specify more than one</tt> </tt>
+<a name="L82"></a><tt class="py-lineno">  82</tt>  <tt class="py-line"><tt class="py-docstring">    of these three parameters, or to not specify any of them.)</tt> </tt>
+<a name="L83"></a><tt class="py-lineno">  83</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L84"></a><tt class="py-lineno">  84</tt>  <tt class="py-line"><tt class="py-docstring">    @param value: The python object that should be documented.</tt> </tt>
+<a name="L85"></a><tt class="py-lineno">  85</tt>  <tt class="py-line"><tt class="py-docstring">    @param filename: The name of the file that contains the python</tt> </tt>
+<a name="L86"></a><tt class="py-lineno">  86</tt>  <tt class="py-line"><tt class="py-docstring">        source code for a package, module, or script.  If</tt> </tt>
+<a name="L87"></a><tt class="py-lineno">  87</tt>  <tt class="py-line"><tt class="py-docstring">        C{filename} is specified, then C{introspect} will return a</tt> </tt>
+<a name="L88"></a><tt class="py-lineno">  88</tt>  <tt class="py-line"><tt class="py-docstring">        C{ModuleDoc} describing its contents.</tt> </tt>
+<a name="L89"></a><tt class="py-lineno">  89</tt>  <tt class="py-line"><tt class="py-docstring">    @param name: The fully-qualified python dotted name of any</tt> </tt>
+<a name="L90"></a><tt class="py-lineno">  90</tt>  <tt class="py-line"><tt class="py-docstring">        value (including packages, modules, classes, and</tt> </tt>
+<a name="L91"></a><tt class="py-lineno">  91</tt>  <tt class="py-line"><tt class="py-docstring">        functions).  C{DocParser} will automatically figure out</tt> </tt>
+<a name="L92"></a><tt class="py-lineno">  92</tt>  <tt class="py-line"><tt class="py-docstring">        which module(s) it needs to import in order to find the</tt> </tt>
+<a name="L93"></a><tt class="py-lineno">  93</tt>  <tt class="py-line"><tt class="py-docstring">        documentation for the specified object.</tt> </tt>
+<a name="L94"></a><tt class="py-lineno">  94</tt>  <tt class="py-line"><tt class="py-docstring">    @param context: The API documentation for the class of module</tt> </tt>
+<a name="L95"></a><tt class="py-lineno">  95</tt>  <tt class="py-line"><tt class="py-docstring">        that contains C{value} (if available).</tt> </tt>
+<a name="L96"></a><tt class="py-lineno">  96</tt>  <tt class="py-line"><tt class="py-docstring">    @param module_name: The name of the module where the value is defined.</tt> </tt>
+<a name="L97"></a><tt class="py-lineno">  97</tt>  <tt class="py-line"><tt class="py-docstring">        Useful to retrieve the docstring encoding if there is no way to</tt> </tt>
+<a name="L98"></a><tt class="py-lineno">  98</tt>  <tt class="py-line"><tt class="py-docstring">        detect the module by introspection (such as in properties)</tt> </tt>
+<a name="L99"></a><tt class="py-lineno">  99</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L100"></a><tt class="py-lineno"> 100</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-17" class="py-name" targets="Variable epydoc.apidoc.VariableDoc.value=epydoc.apidoc.VariableDoc-class.html#value"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-17', 'value', 'link-17');">value</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt id="link-18" class="p [...]
+<a name="L101"></a><tt class="py-lineno"> 101</tt>  <tt class="py-line">        <tt id="link-20" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-20', 'value', 'link-17');">value</a></tt> <tt class="py-op">=</tt> <tt id="link-21" class="py-name" targets="Function epydoc.docintrospecter.get_value_from_name()=epydoc.docintrospecter-module.html#get_value_from_name"><a title="epydoc.docintrospecter.get_value_from_name" class="p [...]
+<a name="L102"></a><tt class="py-lineno"> 102</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt id="link-24" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-24', 'value', 'link-17');">value</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt id="link-25" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return d [...]
+<a name="L103"></a><tt class="py-lineno"> 103</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">is_script</tt><tt class="py-op">:</tt> </tt>
+<a name="L104"></a><tt class="py-lineno"> 104</tt>  <tt class="py-line">            <tt id="link-27" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-27', 'value', 'link-17');">value</a></tt> <tt class="py-op">=</tt> <tt id="link-28" class="py-name" targets="Function epydoc.docintrospecter.get_value_from_scriptname()=epydoc.docintrospecter-module.html#get_value_from_scriptname"><a title="epydoc.docintrospecter.get_value_fro [...]
+<a name="L105"></a><tt class="py-lineno"> 105</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L106"></a><tt class="py-lineno"> 106</tt>  <tt class="py-line">            <tt id="link-30" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-30', 'value', 'link-17');">value</a></tt> <tt class="py-op">=</tt> <tt id="link-31" class="py-name" targets="Function epydoc.docintrospecter.get_value_from_filename()=epydoc.docintrospecter-module.html#get_value_from_filename"><a title="epydoc.docintrospecter.get_value_from_fi [...]
+<a name="L107"></a><tt class="py-lineno"> 107</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt id="link-33" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-33', 'name', 'link-18');">name</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt id="link-34" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return do [...]
+<a name="L108"></a><tt class="py-lineno"> 108</tt>  <tt class="py-line">        <tt class="py-comment"># it's ok if value is None -- that's a value, after all.</tt> </tt>
+<a name="L109"></a><tt class="py-lineno"> 109</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">pass</tt>  </tt>
+<a name="L110"></a><tt class="py-lineno"> 110</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L111"></a><tt class="py-lineno"> 111</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"Expected exactly one of the following "</tt> </tt>
+<a name="L112"></a><tt class="py-lineno"> 112</tt>  <tt class="py-line">                         <tt class="py-string">"arguments: value, name, filename"</tt><tt class="py-op">)</tt> </tt>
+<a name="L113"></a><tt class="py-lineno"> 113</tt>  <tt class="py-line">     </tt>
+<a name="L114"></a><tt class="py-lineno"> 114</tt>  <tt class="py-line">    <tt class="py-name">pyid</tt> <tt class="py-op">=</tt> <tt class="py-name">id</tt><tt class="py-op">(</tt><tt id="link-35" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-35', 'value', 'link-17');">value</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L115"></a><tt class="py-lineno"> 115</tt>  <tt class="py-line"> </tt>
+<a name="L116"></a><tt class="py-lineno"> 116</tt>  <tt class="py-line">    <tt class="py-comment"># If we've already introspected this value, then simply return</tt> </tt>
+<a name="L117"></a><tt class="py-lineno"> 117</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># its ValueDoc from our cache.</tt> </tt>
+<a name="L118"></a><tt class="py-lineno"> 118</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">pyid</tt> <tt class="py-keyword">in</tt> <tt id="link-36" class="py-name"><a title="epydoc.docintrospecter._introspected_values" class="py-name" href="#" onclick="return doclink('link-36', '_introspected_values', 'link-12');">_introspected_values</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L119"></a><tt class="py-lineno"> 119</tt>  <tt class="py-line">        <tt class="py-comment"># If the file is a script, then adjust its name.</tt> </tt>
+<a name="L120"></a><tt class="py-lineno"> 120</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">is_script</tt> <tt class="py-keyword">and</tt> <tt id="link-37" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-37', 'filename', 'link-19');">filename</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py- [...]
+<a name="L121"></a><tt class="py-lineno"> 121</tt>  <tt class="py-line">            <tt id="link-38" class="py-name"><a title="epydoc.docintrospecter._valuedoc_cache" class="py-name" href="#" onclick="return doclink('link-38', '_valuedoc_cache', 'link-11');">_valuedoc_cache</a></tt><tt class="py-op">[</tt><tt class="py-name">pyid</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-39" class="py-name" targets="Variable epydoc.apidoc.GenericValueDoc.canonical_name=epydoc.apido [...]
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-39', 'canonical_name', 'link-39');">canonical_name</a></tt> <tt class="py-op">=</tt> <tt id="link-40" class="py-name"><a title="epydoc.apidoc.DottedName" class="py-name" href="#" onclick="return doclink('link-40', 'DottedName', 'link-22');">DottedName</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L122"></a><tt class="py-lineno"> 122</tt>  <tt class="py-line">                <tt id="link-41" class="py-name" targets="Function epydoc.util.munge_script_name()=epydoc.util-module.html#munge_script_name"><a title="epydoc.util.munge_script_name" class="py-name" href="#" onclick="return doclink('link-41', 'munge_script_name', 'link-41');">munge_script_name</a></tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt id="link-42" class="py-name"><a title [...]
+<a name="L123"></a><tt class="py-lineno"> 123</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-43" class="py-name"><a title="epydoc.docintrospecter._valuedoc_cache" class="py-name" href="#" onclick="return doclink('link-43', '_valuedoc_cache', 'link-11');">_valuedoc_cache</a></tt><tt class="py-op">[</tt><tt class="py-name">pyid</tt><tt class="py-op">]</tt> </tt>
+<a name="L124"></a><tt class="py-lineno"> 124</tt>  <tt class="py-line"> </tt>
+<a name="L125"></a><tt class="py-lineno"> 125</tt>  <tt class="py-line">    <tt class="py-comment"># Create an initial value doc for this value & add it to the cache.</tt> </tt>
+<a name="L126"></a><tt class="py-lineno"> 126</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">val_doc</tt> <tt class="py-op">=</tt> <tt id="link-44" class="py-name" targets="Function epydoc.docintrospecter._get_valuedoc()=epydoc.docintrospecter-module.html#_get_valuedoc"><a title="epydoc.docintrospecter._get_valuedoc" class="py-name" href="#" onclick="return doclink('link-44', '_get_valuedoc', 'link-44');">_get_valuedoc</a></tt><tt class="py-op">(</tt><tt id [...]
+<a name="L127"></a><tt class="py-lineno"> 127</tt>  <tt class="py-line"> </tt>
+<a name="L128"></a><tt class="py-lineno"> 128</tt>  <tt class="py-line">    <tt class="py-comment"># Introspect the value.</tt> </tt>
+<a name="L129"></a><tt class="py-lineno"> 129</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-46" class="py-name"><a title="epydoc.docintrospecter._introspected_values" class="py-name" href="#" onclick="return doclink('link-46', '_introspected_values', 'link-12');">_introspected_values</a></tt><tt class="py-op">[</tt><tt class="py-name">pyid</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L130"></a><tt class="py-lineno"> 130</tt>  <tt class="py-line">    <tt class="py-name">introspect_func</tt> <tt class="py-op">=</tt> <tt id="link-47" class="py-name" targets="Function epydoc.docintrospecter._get_introspecter()=epydoc.docintrospecter-module.html#_get_introspecter"><a title="epydoc.docintrospecter._get_introspecter" class="py-name" href="#" onclick="return doclink('link-47', '_get_introspecter', 'link-47');">_get_introspecter</a></tt><tt class="py-op">(</tt><tt id [...]
+<a name="L131"></a><tt class="py-lineno"> 131</tt>  <tt class="py-line">    <tt class="py-name">introspect_func</tt><tt class="py-op">(</tt><tt id="link-49" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-49', 'value', 'link-17');">value</a></tt><tt class="py-op">,</tt> <tt class="py-name">val_doc</tt><tt class="py-op">,</tt> <tt class="py-name">module_name</tt><tt class="py-op">=</tt><tt class="py-name">module_name</tt><t [...]
+<a name="L132"></a><tt class="py-lineno"> 132</tt>  <tt class="py-line"> </tt>
+<a name="L133"></a><tt class="py-lineno"> 133</tt>  <tt class="py-line">    <tt class="py-comment"># Set canonical name, if it was given</tt> </tt>
+<a name="L134"></a><tt class="py-lineno"> 134</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">val_doc</tt><tt class="py-op">.</tt><tt id="link-50" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-50', 'canonical_name', 'link-39');">canonical_name</a></tt> <tt class="py-keyword">is</tt> <tt id="link-51" class="py-name" targets="Variable epydoc.apidoc.UNKNOWN=epydoc.apidoc-module.html#UNKNOWN"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-51', 'UNKNOWN', 'link-51');">UNKNOWN</a></tt> <tt class="py-keyword">and</tt> <tt id="link-52" class="py-nam [...]
+<a name="L135"></a><tt class="py-lineno"> 135</tt>  <tt class="py-line">        <tt class="py-name">val_doc</tt><tt class="py-op">.</tt><tt id="link-53" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-53', 'canonical_name', 'link-39');">canonical_name</a></tt> <tt class="py-op">=</tt> <tt id="link-54" class="py-name"><a title="epydoc.apidoc.DottedName" class="py-name" href="#" onclick="return doclink('link-54', 'DottedName', 'link-22');">DottedName</a></tt><tt class="py-op">(</tt><tt id="link-55" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="re [...]
+<a name="L136"></a><tt class="py-lineno"> 136</tt>  <tt class="py-line"> </tt>
+<a name="L137"></a><tt class="py-lineno"> 137</tt>  <tt class="py-line">    <tt class="py-comment"># If the file is a script, then adjust its name.</tt> </tt>
+<a name="L138"></a><tt class="py-lineno"> 138</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">is_script</tt> <tt class="py-keyword">and</tt> <tt id="link-56" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-56', 'filename', 'link-19');">filename</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op"> [...]
+<a name="L139"></a><tt class="py-lineno"> 139</tt>  <tt class="py-line">        <tt class="py-name">val_doc</tt><tt class="py-op">.</tt><tt id="link-57" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-57', 'canonical_name', 'link-39');">canonical_name</a></tt> <tt class="py-op">=</tt> <tt id="link-58" class="py-name"><a title="epydoc.apidoc.DottedName" class="py-name" href="#" onclick="return doclink('link-58', 'DottedName', 'link-22');">DottedName</a></tt><tt class="py-op">(</tt><tt id="link-59" class="py-name"><a title="epydoc.util.munge_script_name" class="py-name" href="#" onclick="ret [...]
+<a name="L140"></a><tt class="py-lineno"> 140</tt>  <tt class="py-line">         </tt>
+<a name="L141"></a><tt class="py-lineno"> 141</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">val_doc</tt><tt class="py-op">.</tt><tt id="link-61" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-61', 'canonical_name', 'link-39');">canonical_name</a></tt> <tt class="py-keyword">is</tt> <tt id="link-62" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-62', 'UNKNOWN', 'link-51');">UNKNOWN</a></tt> <tt class="py-keyword">and</tt> <tt id="link-63" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onc [...]
+<a name="L142"></a><tt class="py-lineno"> 142</tt>  <tt class="py-line">        <tt class="py-name">shadowed_name</tt> <tt class="py-op">=</tt> <tt id="link-64" class="py-name"><a title="epydoc.apidoc.DottedName" class="py-name" href="#" onclick="return doclink('link-64', 'DottedName', 'link-22');">DottedName</a></tt><tt class="py-op">(</tt><tt id="link-65" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-65', 'value', 'lin [...]
+<a name="L143"></a><tt class="py-lineno"> 143</tt>  <tt class="py-line">        <tt id="link-66" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-66', 'log', 'link-4');">log</a></tt><tt class="py-op">.</tt><tt id="link-67" class="py-name" targets="Method epydoc.checker.DocChecker.warning()=epydoc.checker.DocChecker-class.html#warning,Function epydoc.log.warning()=epydoc.log-module.html#warning"><a title="epydoc.checker.DocChecker.warning
+epydoc.log.warning" class="py-name" href="#" onclick="return doclink('link-67', 'warning', 'link-67');">warning</a></tt><tt class="py-op">(</tt><tt class="py-string">"Module %s is shadowed by a variable with "</tt> </tt>
+<a name="L144"></a><tt class="py-lineno"> 144</tt>  <tt class="py-line">                    <tt class="py-string">"the same name."</tt> <tt class="py-op">%</tt> <tt class="py-name">shadowed_name</tt><tt class="py-op">)</tt> </tt>
+<a name="L145"></a><tt class="py-lineno"> 145</tt>  <tt class="py-line">        <tt class="py-name">val_doc</tt><tt class="py-op">.</tt><tt id="link-68" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-68', 'canonical_name', 'link-39');">canonical_name</a></tt> <tt class="py-op">=</tt> <tt id="link-69" class="py-name"><a title="epydoc.apidoc.DottedName" class="py-name" href="#" onclick="return doclink('link-69', 'DottedName', 'link-22');">DottedName</a></tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">shadowed_name</tt><tt class="py-op">)</ [...]
+<a name="L146"></a><tt class="py-lineno"> 146</tt>  <tt class="py-line"> </tt>
+<a name="L147"></a><tt class="py-lineno"> 147</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">val_doc</tt> </tt>
+</div><a name="L148"></a><tt class="py-lineno"> 148</tt>  <tt class="py-line"> </tt>
+<a name="_get_valuedoc"></a><div id="_get_valuedoc-def"><a name="L149"></a><tt class="py-lineno"> 149</tt> <a class="py-toggle" href="#" id="_get_valuedoc-toggle" onclick="return toggle('_get_valuedoc');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docintrospecter-module.html#_get_valuedoc">_get_valuedoc</a><tt class="py-op">(</tt><tt class="py-param">value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_get_valuedoc-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_get_valuedoc-expanded"><a name="L150"></a><tt class="py-lineno"> 150</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L151"></a><tt class="py-lineno"> 151</tt>  <tt class="py-line"><tt class="py-docstring">    If a C{ValueDoc} for the given value exists in the valuedoc</tt> </tt>
+<a name="L152"></a><tt class="py-lineno"> 152</tt>  <tt class="py-line"><tt class="py-docstring">    cache, then return it; otherwise, create a new C{ValueDoc},</tt> </tt>
+<a name="L153"></a><tt class="py-lineno"> 153</tt>  <tt class="py-line"><tt class="py-docstring">    add it to the cache, and return it.  When possible, the new</tt> </tt>
+<a name="L154"></a><tt class="py-lineno"> 154</tt>  <tt class="py-line"><tt class="py-docstring">    C{ValueDoc}'s C{pyval}, C{repr}, and C{canonical_name}</tt> </tt>
+<a name="L155"></a><tt class="py-lineno"> 155</tt>  <tt class="py-line"><tt class="py-docstring">    attributes will be set appropriately.</tt> </tt>
+<a name="L156"></a><tt class="py-lineno"> 156</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L157"></a><tt class="py-lineno"> 157</tt>  <tt class="py-line">    <tt class="py-name">pyid</tt> <tt class="py-op">=</tt> <tt class="py-name">id</tt><tt class="py-op">(</tt><tt id="link-70" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-70', 'value', 'link-17');">value</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L158"></a><tt class="py-lineno"> 158</tt>  <tt class="py-line">    <tt class="py-name">val_doc</tt> <tt class="py-op">=</tt> <tt id="link-71" class="py-name"><a title="epydoc.docintrospecter._valuedoc_cache" class="py-name" href="#" onclick="return doclink('link-71', '_valuedoc_cache', 'link-11');">_valuedoc_cache</a></tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-name">pyid</tt><tt class="py-op">)</tt> </tt>
+<a name="L159"></a><tt class="py-lineno"> 159</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">val_doc</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L160"></a><tt class="py-lineno"> 160</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> <tt id="link-72" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-72', 'canonical_name', 'link-39');">canonical_name</a></tt> <tt class="py-op">=</tt> <tt id="link-73" class="py-name" targets="Function epydoc.docintrospecter.get_canonical_name()=epydoc.docintrospecter-module.html#get_canonical_name,Method epydoc.docwriter.xlink.UrlGenerator.get_canonical_name()=epydoc.docwriter.xlink.UrlGenerator-class.html#get_canonical_name"><a title="epydoc.docintrospect [...]
+epydoc.docwriter.xlink.UrlGenerator.get_canonical_name" class="py-name" href="#" onclick="return doclink('link-73', 'get_canonical_name', 'link-73');">get_canonical_name</a></tt><tt class="py-op">(</tt><tt id="link-74" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-74', 'value', 'link-17');">value</a></tt><tt class="py-op">,</tt> <tt class="py-name">strict</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class [...]
+<a name="L161"></a><tt class="py-lineno"> 161</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt id="link-75" class="py-name"><a title="epydoc.apidoc.DottedName" class="py-name" href="#" onclick="return doclink('link-75', 'DottedName', 'link-22');">DottedName</a></tt><tt class="py-op">.</tt><tt id="link-76" class="py-name" targets="Class epydoc.apidoc.DottedName.InvalidDottedName=epydoc.apidoc.DottedName.InvalidDottedName-class.html"><a title="epydoc.apidoc.DottedNa [...]
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-77', 'canonical_name', 'link-39');">canonical_name</a></tt> <tt class="py-op">=</tt> <tt id="link-78" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-78', 'UNKNOWN', 'link-51');">UNKNOWN</a></tt> </tt>
+<a name="L162"></a><tt class="py-lineno"> 162</tt>  <tt class="py-line">        <tt class="py-name">val_doc</tt> <tt class="py-op">=</tt> <tt id="link-79" class="py-name" targets="Class epydoc.apidoc.ValueDoc=epydoc.apidoc.ValueDoc-class.html"><a title="epydoc.apidoc.ValueDoc" class="py-name" href="#" onclick="return doclink('link-79', 'ValueDoc', 'link-79');">ValueDoc</a></tt><tt class="py-op">(</tt><tt id="link-80" class="py-name" targets="Variable epydoc.apidoc.ValueDoc.pyval=epydoc.a [...]
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-82', 'canonical_name', 'link-39');">canonical_name</a></tt> <tt class="py-op">=</tt> <tt id="link-83" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-83', 'canonical_name', 'link-39');">canonical_name</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L163"></a><tt class="py-lineno"> 163</tt>  <tt class="py-line">                           <tt id="link-84" class="py-name" targets="Variable epydoc.apidoc.APIDoc.docs_extracted_by=epydoc.apidoc.APIDoc-class.html#docs_extracted_by"><a title="epydoc.apidoc.APIDoc.docs_extracted_by" class="py-name" href="#" onclick="return doclink('link-84', 'docs_extracted_by', 'link-84');">docs_extracted_by</a></tt><tt class="py-op">=</tt><tt class="py-string">'introspecter'</tt><tt class="py-op" [...]
+<a name="L164"></a><tt class="py-lineno"> 164</tt>  <tt class="py-line">        <tt id="link-85" class="py-name"><a title="epydoc.docintrospecter._valuedoc_cache" class="py-name" href="#" onclick="return doclink('link-85', '_valuedoc_cache', 'link-11');">_valuedoc_cache</a></tt><tt class="py-op">[</tt><tt class="py-name">pyid</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">val_doc</tt> </tt>
+<a name="L165"></a><tt class="py-lineno"> 165</tt>  <tt class="py-line">         </tt>
+<a name="L166"></a><tt class="py-lineno"> 166</tt>  <tt class="py-line">        <tt class="py-comment"># If it's a module, then do some preliminary introspection.</tt> </tt>
+<a name="L167"></a><tt class="py-lineno"> 167</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># Otherwise, check what the containing module is (used e.g.</tt> </tt>
+<a name="L168"></a><tt class="py-lineno"> 168</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># to decide what markup language should be used for docstrings)</tt> </tt>
+<a name="L169"></a><tt class="py-lineno"> 169</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">inspect</tt><tt class="py-op">.</tt><tt class="py-name">ismodule</tt><tt class="py-op">(</tt><tt id="link-86" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-86', 'value', 'link-17');">value</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L170"></a><tt class="py-lineno"> 170</tt>  <tt class="py-line">            <tt id="link-87" class="py-name" targets="Function epydoc.docintrospecter.introspect_module()=epydoc.docintrospecter-module.html#introspect_module"><a title="epydoc.docintrospecter.introspect_module" class="py-name" href="#" onclick="return doclink('link-87', 'introspect_module', 'link-87');">introspect_module</a></tt><tt class="py-op">(</tt><tt id="link-88" class="py-name"><a title="epydoc.apidoc.Variabl [...]
+<a name="L171"></a><tt class="py-lineno"> 171</tt>  <tt class="py-line">            <tt class="py-name">val_doc</tt><tt class="py-op">.</tt><tt id="link-89" class="py-name" targets="Variable epydoc.apidoc.ValueDoc.defining_module=epydoc.apidoc.ValueDoc-class.html#defining_module,Variable epydoc.apidoc.VariableDoc.defining_module=epydoc.apidoc.VariableDoc-class.html#defining_module"><a title="epydoc.apidoc.ValueDoc.defining_module
+epydoc.apidoc.VariableDoc.defining_module" class="py-name" href="#" onclick="return doclink('link-89', 'defining_module', 'link-89');">defining_module</a></tt> <tt class="py-op">=</tt> <tt class="py-name">val_doc</tt> </tt>
+<a name="L172"></a><tt class="py-lineno"> 172</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L173"></a><tt class="py-lineno"> 173</tt>  <tt class="py-line">            <tt class="py-name">module_name</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt id="link-90" class="py-name" targets="Function epydoc.docintrospecter.get_containing_module()=epydoc.docintrospecter-module.html#get_containing_module"><a title="epydoc.docintrospecter.get_containing_module" class="py-name" href="#" onclick="return doclink('link-90', 'get_containing_module [...]
+<a name="L174"></a><tt class="py-lineno"> 174</tt>  <tt class="py-line">            <tt class="py-name">module</tt> <tt class="py-op">=</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">modules</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-name">module_name</tt><tt class="py-op">)</tt> </tt>
+<a name="L175"></a><tt class="py-lineno"> 175</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">module</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-name">inspect</tt><tt class="py-op">.</tt><tt class="py-name">ismodule</tt><tt class="py-op">(</tt><tt class="py-name">module</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L176"></a><tt class="py-lineno"> 176</tt>  <tt class="py-line">                <tt class="py-name">val_doc</tt><tt class="py-op">.</tt><tt id="link-92" class="py-name"><a title="epydoc.apidoc.ValueDoc.defining_module
+epydoc.apidoc.VariableDoc.defining_module" class="py-name" href="#" onclick="return doclink('link-92', 'defining_module', 'link-89');">defining_module</a></tt> <tt class="py-op">=</tt> <tt id="link-93" class="py-name"><a title="epydoc.docintrospecter._get_valuedoc" class="py-name" href="#" onclick="return doclink('link-93', '_get_valuedoc', 'link-44');">_get_valuedoc</a></tt><tt class="py-op">(</tt><tt class="py-name">module</tt><tt class="py-op">)</tt> </tt>
+<a name="L177"></a><tt class="py-lineno"> 177</tt>  <tt class="py-line">             </tt>
+<a name="L178"></a><tt class="py-lineno"> 178</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">val_doc</tt> </tt>
+</div><a name="L179"></a><tt class="py-lineno"> 179</tt>  <tt class="py-line"> </tt>
+<a name="L180"></a><tt class="py-lineno"> 180</tt>  <tt class="py-line"><tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L181"></a><tt class="py-lineno"> 181</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Module Introspection</tt> </tt>
+<a name="L182"></a><tt class="py-lineno"> 182</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L183"></a><tt class="py-lineno"> 183</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L184"></a><tt class="py-lineno"> 184</tt>  <tt class="py-line"><tt class="py-comment">#: A list of module variables that should not be included in a</tt> </tt>
+<a name="L185"></a><tt class="py-lineno"> 185</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#: module's API documentation.</tt> </tt>
+<a name="L186"></a><tt class="py-lineno"> 186</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt id="link-94" class="py-name" targets="Variable epydoc.docintrospecter.UNDOCUMENTED_MODULE_VARS=epydoc.docintrospecter-module.html#UNDOCUMENTED_MODULE_VARS"><a title="epydoc.docintrospecter.UNDOCUMENTED_MODULE_VARS" class="py-name" href="#" onclick="return doclink('link-94', 'UNDOCUMENTED_MODULE_VARS', 'link-94');">UNDOCUMENTED_MODULE_VARS</a></tt> <tt class="py-op">=</tt> <tt class="py [...]
+<a name="L187"></a><tt class="py-lineno"> 187</tt>  <tt class="py-line">    <tt class="py-string">'__builtins__'</tt><tt class="py-op">,</tt> <tt class="py-string">'__doc__'</tt><tt class="py-op">,</tt> <tt class="py-string">'__all__'</tt><tt class="py-op">,</tt> <tt class="py-string">'__file__'</tt><tt class="py-op">,</tt> <tt class="py-string">'__path__'</tt><tt class="py-op">,</tt> </tt>
+<a name="L188"></a><tt class="py-lineno"> 188</tt>  <tt class="py-line">    <tt class="py-string">'__name__'</tt><tt class="py-op">,</tt> <tt class="py-string">'__extra_epydoc_fields__'</tt><tt class="py-op">,</tt> <tt class="py-string">'__docformat__'</tt><tt class="py-op">)</tt> </tt>
+<a name="L189"></a><tt class="py-lineno"> 189</tt>  <tt class="py-line"> </tt>
+<a name="introspect_module"></a><div id="introspect_module-def"><a name="L190"></a><tt class="py-lineno"> 190</tt> <a class="py-toggle" href="#" id="introspect_module-toggle" onclick="return toggle('introspect_module');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docintrospecter-module.html#introspect_module">introspect_module</a><tt class="py-op">(</tt><tt class="py-param">module</tt><tt class="py-op">,</tt> <tt class="py-param">module_d [...]
+</div><div id="introspect_module-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="introspect_module-expanded"><a name="L191"></a><tt class="py-lineno"> 191</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L192"></a><tt class="py-lineno"> 192</tt>  <tt class="py-line"><tt class="py-docstring">    Add API documentation information about the module C{module}</tt> </tt>
+<a name="L193"></a><tt class="py-lineno"> 193</tt>  <tt class="py-line"><tt class="py-docstring">    to C{module_doc}.</tt> </tt>
+<a name="L194"></a><tt class="py-lineno"> 194</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L195"></a><tt class="py-lineno"> 195</tt>  <tt class="py-line">    <tt class="py-name">module_doc</tt><tt class="py-op">.</tt><tt id="link-95" class="py-name" targets="Method epydoc.apidoc.APIDoc.specialize_to()=epydoc.apidoc.APIDoc-class.html#specialize_to"><a title="epydoc.apidoc.APIDoc.specialize_to" class="py-name" href="#" onclick="return doclink('link-95', 'specialize_to', 'link-95');">specialize_to</a></tt><tt class="py-op">(</tt><tt id="link-96" class="py-name" targets=" [...]
+<a name="L196"></a><tt class="py-lineno"> 196</tt>  <tt class="py-line"> </tt>
+<a name="L197"></a><tt class="py-lineno"> 197</tt>  <tt class="py-line">    <tt class="py-comment"># Record the module's docformat</tt> </tt>
+<a name="L198"></a><tt class="py-lineno"> 198</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">module</tt><tt class="py-op">,</tt> <tt class="py-string">'__docformat__'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L199"></a><tt class="py-lineno"> 199</tt>  <tt class="py-line">        <tt class="py-name">module_doc</tt><tt class="py-op">.</tt><tt id="link-97" class="py-name" targets="Variable epydoc.apidoc.ModuleDoc.docformat=epydoc.apidoc.ModuleDoc-class.html#docformat"><a title="epydoc.apidoc.ModuleDoc.docformat" class="py-name" href="#" onclick="return doclink('link-97', 'docformat', 'link-97');">docformat</a></tt> <tt class="py-op">=</tt> <tt class="py-name">unicode</tt><tt class="py-o [...]
+<a name="L200"></a><tt class="py-lineno"> 200</tt>  <tt class="py-line">                                   </tt>
+<a name="L201"></a><tt class="py-lineno"> 201</tt>  <tt class="py-line">    <tt class="py-comment"># Record the module's filename</tt> </tt>
+<a name="L202"></a><tt class="py-lineno"> 202</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">module</tt><tt class="py-op">,</tt> <tt class="py-string">'__file__'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L203"></a><tt class="py-lineno"> 203</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> <tt class="py-name">module_doc</tt><tt class="py-op">.</tt><tt id="link-98" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-98', 'filename', 'link-19');">filename</a></tt> <tt class="py-op">=</tt> <tt class="py-name">unicode</tt><tt class="py-op">(</tt><tt class="py-name">module</tt><tt c [...]
+<a name="L204"></a><tt class="py-lineno"> 204</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">KeyboardInterrupt</tt><tt class="py-op">:</tt> <tt class="py-keyword">raise</tt> </tt>
+<a name="L205"></a><tt class="py-lineno"> 205</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt><tt class="py-op">:</tt> <tt class="py-keyword">pass</tt> </tt>
+<a name="L206"></a><tt class="py-lineno"> 206</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">module_doc</tt><tt class="py-op">.</tt><tt id="link-99" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-99', 'filename', 'link-19');">filename</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt id="link-100" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-na [...]
+<a name="L207"></a><tt class="py-lineno"> 207</tt>  <tt class="py-line">            <tt class="py-keyword">try</tt><tt class="py-op">:</tt> <tt class="py-name">module_doc</tt><tt class="py-op">.</tt><tt id="link-101" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-101', 'filename', 'link-19');">filename</a></tt> <tt class="py-op">=</tt> <tt id="link-102" class="py-name" targets="Function epydoc.util.py_src_filename()=epyd [...]
+<a name="L208"></a><tt class="py-lineno"> 208</tt>  <tt class="py-line">            <tt class="py-keyword">except</tt> <tt class="py-name">ValueError</tt><tt class="py-op">:</tt> <tt class="py-keyword">pass</tt> </tt>
+<a name="L209"></a><tt class="py-lineno"> 209</tt>  <tt class="py-line"> </tt>
+<a name="L210"></a><tt class="py-lineno"> 210</tt>  <tt class="py-line">    <tt class="py-comment"># If this is just a preliminary introspection, then don't do</tt> </tt>
+<a name="L211"></a><tt class="py-lineno"> 211</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># anything else.  (Typically this is true if this module was</tt> </tt>
+<a name="L212"></a><tt class="py-lineno"> 212</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># imported, but is not included in the set of modules we're</tt> </tt>
+<a name="L213"></a><tt class="py-lineno"> 213</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># documenting.)</tt> </tt>
+<a name="L214"></a><tt class="py-lineno"> 214</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">module_doc</tt><tt class="py-op">.</tt><tt id="link-104" class="py-name" targets="Variable epydoc.apidoc.NamespaceDoc.variables=epydoc.apidoc.NamespaceDoc-class.html#variables"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-104', 'variables', 'link-104');">variables</a></tt> <tt class="py-op">=</tt> <tt class=" [...]
+<a name="L215"></a><tt class="py-lineno"> 215</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">preliminary</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> </tt>
+<a name="L216"></a><tt class="py-lineno"> 216</tt>  <tt class="py-line"> </tt>
+<a name="L217"></a><tt class="py-lineno"> 217</tt>  <tt class="py-line">    <tt class="py-comment"># Record the module's docstring</tt> </tt>
+<a name="L218"></a><tt class="py-lineno"> 218</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">module</tt><tt class="py-op">,</tt> <tt class="py-string">'__doc__'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L219"></a><tt class="py-lineno"> 219</tt>  <tt class="py-line">        <tt class="py-name">module_doc</tt><tt class="py-op">.</tt><tt id="link-105" class="py-name" targets="Variable epydoc.apidoc.APIDoc.docstring=epydoc.apidoc.APIDoc-class.html#docstring"><a title="epydoc.apidoc.APIDoc.docstring" class="py-name" href="#" onclick="return doclink('link-105', 'docstring', 'link-105');">docstring</a></tt> <tt class="py-op">=</tt> <tt id="link-106" class="py-name" targets="Function e [...]
+<a name="L220"></a><tt class="py-lineno"> 220</tt>  <tt class="py-line"> </tt>
+<a name="L221"></a><tt class="py-lineno"> 221</tt>  <tt class="py-line">    <tt class="py-comment"># If the module has a __path__, then it's (probably) a</tt> </tt>
+<a name="L222"></a><tt class="py-lineno"> 222</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># package; so set is_package=True and record its __path__.</tt> </tt>
+<a name="L223"></a><tt class="py-lineno"> 223</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">module</tt><tt class="py-op">,</tt> <tt class="py-string">'__path__'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L224"></a><tt class="py-lineno"> 224</tt>  <tt class="py-line">        <tt class="py-name">module_doc</tt><tt class="py-op">.</tt><tt id="link-107" class="py-name" targets="Variable epydoc.apidoc.ModuleDoc.is_package=epydoc.apidoc.ModuleDoc-class.html#is_package"><a title="epydoc.apidoc.ModuleDoc.is_package" class="py-name" href="#" onclick="return doclink('link-107', 'is_package', 'link-107');">is_package</a></tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L225"></a><tt class="py-lineno"> 225</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> <tt class="py-name">module_doc</tt><tt class="py-op">.</tt><tt id="link-108" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-108', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">unicode</tt><tt class="py-op">(</tt><tt class="py-name">p</ [...]
+<a name="L226"></a><tt class="py-lineno"> 226</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">KeyboardInterrupt</tt><tt class="py-op">:</tt> <tt class="py-keyword">raise</tt> </tt>
+<a name="L227"></a><tt class="py-lineno"> 227</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt><tt class="py-op">:</tt> <tt class="py-keyword">pass</tt> </tt>
+<a name="L228"></a><tt class="py-lineno"> 228</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L229"></a><tt class="py-lineno"> 229</tt>  <tt class="py-line">        <tt class="py-name">module_doc</tt><tt class="py-op">.</tt><tt id="link-109" class="py-name"><a title="epydoc.apidoc.ModuleDoc.is_package" class="py-name" href="#" onclick="return doclink('link-109', 'is_package', 'link-107');">is_package</a></tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L230"></a><tt class="py-lineno"> 230</tt>  <tt class="py-line"> </tt>
+<a name="L231"></a><tt class="py-lineno"> 231</tt>  <tt class="py-line">    <tt class="py-comment"># Make sure we have a name for the package.</tt> </tt>
+<a name="L232"></a><tt class="py-lineno"> 232</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">dotted_name</tt> <tt class="py-op">=</tt> <tt class="py-name">module_doc</tt><tt class="py-op">.</tt><tt id="link-110" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-110', 'canonical_name', 'link-39');">canonical_name</a></tt> </tt>
+<a name="L233"></a><tt class="py-lineno"> 233</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">dotted_name</tt> <tt class="py-keyword">is</tt> <tt id="link-111" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-111', 'UNKNOWN', 'link-51');">UNKNOWN</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L234"></a><tt class="py-lineno"> 234</tt>  <tt class="py-line">        <tt class="py-name">dotted_name</tt> <tt class="py-op">=</tt> <tt id="link-112" class="py-name"><a title="epydoc.apidoc.DottedName" class="py-name" href="#" onclick="return doclink('link-112', 'DottedName', 'link-22');">DottedName</a></tt><tt class="py-op">(</tt><tt class="py-name">module</tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt><tt class="py-op">)</tt> </tt>
+<a name="L235"></a><tt class="py-lineno"> 235</tt>  <tt class="py-line">    <tt class="py-name">name_without_primes</tt> <tt class="py-op">=</tt> <tt id="link-113" class="py-name"><a title="epydoc.apidoc.DottedName" class="py-name" href="#" onclick="return doclink('link-113', 'DottedName', 'link-22');">DottedName</a></tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">dotted_name</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class [...]
+<a name="L236"></a><tt class="py-lineno"> 236</tt>  <tt class="py-line">         </tt>
+<a name="L237"></a><tt class="py-lineno"> 237</tt>  <tt class="py-line">    <tt class="py-comment"># Record the module's parent package, if it has one.</tt> </tt>
+<a name="L238"></a><tt class="py-lineno"> 238</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">dotted_name</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L239"></a><tt class="py-lineno"> 239</tt>  <tt class="py-line">        <tt class="py-name">package_name</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">dotted_name</tt><tt class="py-op">.</tt><tt id="link-114" class="py-name" targets="Method epydoc.apidoc.DocIndex.container()=epydoc.apidoc.DocIndex-class.html#container,Method epydoc.apidoc.DottedName.container()=epydoc.apidoc.DottedName-class.html#container,Variable epydoc.ap [...]
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-114', 'container', 'link-114');">container</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L240"></a><tt class="py-lineno"> 240</tt>  <tt class="py-line">        <tt id="link-115" class="py-name" targets="Variable epydoc.apidoc.ModuleDoc.package=epydoc.apidoc.ModuleDoc-class.html#package"><a title="epydoc.apidoc.ModuleDoc.package" class="py-name" href="#" onclick="return doclink('link-115', 'package', 'link-115');">package</a></tt> <tt class="py-op">=</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">modules</tt><tt class="py-op">.</tt><tt c [...]
+<a name="L241"></a><tt class="py-lineno"> 241</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-116" class="py-name"><a title="epydoc.apidoc.ModuleDoc.package" class="py-name" href="#" onclick="return doclink('link-116', 'package', 'link-115');">package</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L242"></a><tt class="py-lineno"> 242</tt>  <tt class="py-line">            <tt class="py-name">module_doc</tt><tt class="py-op">.</tt><tt id="link-117" class="py-name"><a title="epydoc.apidoc.ModuleDoc.package" class="py-name" href="#" onclick="return doclink('link-117', 'package', 'link-115');">package</a></tt> <tt class="py-op">=</tt> <tt id="link-118" class="py-name" targets="Function epydoc.docintrospecter.introspect_docs()=epydoc.docintrospecter-module.html#introspect_docs" [...]
+<a name="L243"></a><tt class="py-lineno"> 243</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L244"></a><tt class="py-lineno"> 244</tt>  <tt class="py-line">        <tt class="py-name">module_doc</tt><tt class="py-op">.</tt><tt id="link-120" class="py-name"><a title="epydoc.apidoc.ModuleDoc.package" class="py-name" href="#" onclick="return doclink('link-120', 'package', 'link-115');">package</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L245"></a><tt class="py-lineno"> 245</tt>  <tt class="py-line"> </tt>
+<a name="L246"></a><tt class="py-lineno"> 246</tt>  <tt class="py-line">    <tt class="py-comment"># Initialize the submodules property</tt> </tt>
+<a name="L247"></a><tt class="py-lineno"> 247</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">module_doc</tt><tt class="py-op">.</tt><tt id="link-121" class="py-name" targets="Variable epydoc.apidoc.ModuleDoc.submodules=epydoc.apidoc.ModuleDoc-class.html#submodules"><a title="epydoc.apidoc.ModuleDoc.submodules" class="py-name" href="#" onclick="return doclink('link-121', 'submodules', 'link-121');">submodules</a></tt> <tt class="py-op">=</tt> <tt class="py-o [...]
+<a name="L248"></a><tt class="py-lineno"> 248</tt>  <tt class="py-line"> </tt>
+<a name="L249"></a><tt class="py-lineno"> 249</tt>  <tt class="py-line">    <tt class="py-comment"># Add the module to its parent package's submodules list.</tt> </tt>
+<a name="L250"></a><tt class="py-lineno"> 250</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">module_doc</tt><tt class="py-op">.</tt><tt id="link-122" class="py-name"><a title="epydoc.apidoc.ModuleDoc.package" class="py-name" href="#" onclick="return doclink('link-122', 'package', 'link-115');">package</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><t [...]
+<a name="L251"></a><tt class="py-lineno"> 251</tt>  <tt class="py-line">        <tt class="py-name">module_doc</tt><tt class="py-op">.</tt><tt id="link-124" class="py-name"><a title="epydoc.apidoc.ModuleDoc.package" class="py-name" href="#" onclick="return doclink('link-124', 'package', 'link-115');">package</a></tt><tt class="py-op">.</tt><tt id="link-125" class="py-name"><a title="epydoc.apidoc.ModuleDoc.submodules" class="py-name" href="#" onclick="return doclink('link-125', 'submodul [...]
+<a name="L252"></a><tt class="py-lineno"> 252</tt>  <tt class="py-line"> </tt>
+<a name="L253"></a><tt class="py-lineno"> 253</tt>  <tt class="py-line">    <tt class="py-comment"># Look up the module's __all__ attribute (public names).</tt> </tt>
+<a name="L254"></a><tt class="py-lineno"> 254</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">public_names</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L255"></a><tt class="py-lineno"> 255</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">module</tt><tt class="py-op">,</tt> <tt class="py-string">'__all__'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L256"></a><tt class="py-lineno"> 256</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L257"></a><tt class="py-lineno"> 257</tt>  <tt class="py-line">            <tt class="py-name">public_names</tt> <tt class="py-op">=</tt> <tt class="py-name">set</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt id="link-126" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-126', 'name', 'link-18');">name</a></tt><tt class="py-op">)</tt> <tt class="py-keyword [...]
+<a name="L258"></a><tt class="py-lineno"> 258</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">KeyboardInterrupt</tt><tt class="py-op">:</tt> <tt class="py-keyword">raise</tt> </tt>
+<a name="L259"></a><tt class="py-lineno"> 259</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt><tt class="py-op">:</tt> <tt class="py-keyword">pass</tt> </tt>
+<a name="L260"></a><tt class="py-lineno"> 260</tt>  <tt class="py-line"> </tt>
+<a name="L261"></a><tt class="py-lineno"> 261</tt>  <tt class="py-line">    <tt class="py-comment"># Record the module's variables.</tt> </tt>
+<a name="L262"></a><tt class="py-lineno"> 262</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">module_doc</tt><tt class="py-op">.</tt><tt id="link-128" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-128', 'variables', 'link-104');">variables</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L263"></a><tt class="py-lineno"> 263</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">child_name</tt> <tt class="py-keyword">in</tt> <tt class="py-name">dir</tt><tt class="py-op">(</tt><tt class="py-name">module</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L264"></a><tt class="py-lineno"> 264</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">child_name</tt> <tt class="py-keyword">in</tt> <tt id="link-129" class="py-name"><a title="epydoc.docintrospecter.UNDOCUMENTED_MODULE_VARS" class="py-name" href="#" onclick="return doclink('link-129', 'UNDOCUMENTED_MODULE_VARS', 'link-94');">UNDOCUMENTED_MODULE_VARS</a></tt><tt class="py-op">:</tt> <tt class="py-keyword">continue</tt> </tt>
+<a name="L265"></a><tt class="py-lineno"> 265</tt>  <tt class="py-line">        <tt class="py-name">child</tt> <tt class="py-op">=</tt> <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">module</tt><tt class="py-op">,</tt> <tt class="py-name">child_name</tt><tt class="py-op">)</tt> </tt>
+<a name="L266"></a><tt class="py-lineno"> 266</tt>  <tt class="py-line"> </tt>
+<a name="L267"></a><tt class="py-lineno"> 267</tt>  <tt class="py-line">        <tt class="py-comment"># Create a VariableDoc for the child, and introspect its</tt> </tt>
+<a name="L268"></a><tt class="py-lineno"> 268</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># value if it's defined in this module.</tt> </tt>
+<a name="L269"></a><tt class="py-lineno"> 269</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt id="link-130" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-130', 'container', 'link-114');">container</a></tt> <tt class="py-op">=</tt> <tt id="link-131" class="py-name"><a title="epydoc.docintrospecter.get_containing_module" class="py-name" href="#" onclick="return doclink('link-131', 'get_containing_module', 'link-90');">get_containing_module</a></tt><tt class="py-op">(</tt><tt class="py-name">child</tt><tt class="py-op">)</tt> </tt>
+<a name="L270"></a><tt class="py-lineno"> 270</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-op">(</tt><tt id="link-132" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-132', 'container', 'link-114');">container</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L271"></a><tt class="py-lineno"> 271</tt>  <tt class="py-line">             <tt id="link-133" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-133', 'container', 'link-114');">container</a></tt> <tt class="py-op">==</tt> <tt class="py-name">name_without_primes</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> </tt>
+<a name="L272"></a><tt class="py-lineno"> 272</tt>  <tt class="py-line">            <tt class="py-op">(</tt><tt class="py-name">public_names</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L273"></a><tt class="py-lineno"> 273</tt>  <tt class="py-line">             <tt class="py-name">child_name</tt> <tt class="py-keyword">in</tt> <tt class="py-name">public_names</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L274"></a><tt class="py-lineno"> 274</tt>  <tt class="py-line">            <tt class="py-comment"># Local variable.</tt> </tt>
+<a name="L275"></a><tt class="py-lineno"> 275</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">child_val_doc</tt> <tt class="py-op">=</tt> <tt id="link-134" class="py-name"><a title="epydoc.docintrospecter.introspect_docs" class="py-name" href="#" onclick="return doclink('link-134', 'introspect_docs', 'link-118');">introspect_docs</a></tt><tt class="py-op">(</tt><tt class="py-name">child</tt><tt class="py-op">,</tt> <tt class="py-name">context</tt><tt [...]
+<a name="L276"></a><tt class="py-lineno"> 276</tt>  <tt class="py-line">                                            <tt class="py-name">module_name</tt><tt class="py-op">=</tt><tt class="py-name">dotted_name</tt><tt class="py-op">)</tt> </tt>
+<a name="L277"></a><tt class="py-lineno"> 277</tt>  <tt class="py-line">            <tt class="py-name">child_var_doc</tt> <tt class="py-op">=</tt> <tt id="link-135" class="py-name" targets="Class epydoc.apidoc.VariableDoc=epydoc.apidoc.VariableDoc-class.html"><a title="epydoc.apidoc.VariableDoc" class="py-name" href="#" onclick="return doclink('link-135', 'VariableDoc', 'link-135');">VariableDoc</a></tt><tt class="py-op">(</tt><tt id="link-136" class="py-name"><a title="epydoc.apidoc.Va [...]
+<a name="L278"></a><tt class="py-lineno"> 278</tt>  <tt class="py-line">                                        <tt id="link-137" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-137', 'value', 'link-17');">value</a></tt><tt class="py-op">=</tt><tt class="py-name">child_val_doc</tt><tt class="py-op">,</tt> </tt>
+<a name="L279"></a><tt class="py-lineno"> 279</tt>  <tt class="py-line">                                        <tt id="link-138" class="py-name" targets="Variable epydoc.apidoc.VariableDoc.is_imported=epydoc.apidoc.VariableDoc-class.html#is_imported"><a title="epydoc.apidoc.VariableDoc.is_imported" class="py-name" href="#" onclick="return doclink('link-138', 'is_imported', 'link-138');">is_imported</a></tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> </tt>
+<a name="L280"></a><tt class="py-lineno"> 280</tt>  <tt class="py-line">                                        <tt id="link-139" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-139', 'container', 'link-114');">container</a></tt><tt class="py-op">=</tt><tt class="py-name">module_doc</tt><tt class="py-op">,</tt> </tt>
+<a name="L281"></a><tt class="py-lineno"> 281</tt>  <tt class="py-line">                                        <tt id="link-140" class="py-name"><a title="epydoc.apidoc.APIDoc.docs_extracted_by" class="py-name" href="#" onclick="return doclink('link-140', 'docs_extracted_by', 'link-84');">docs_extracted_by</a></tt><tt class="py-op">=</tt><tt class="py-string">'introspecter'</tt><tt class="py-op">)</tt> </tt>
+<a name="L282"></a><tt class="py-lineno"> 282</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt id="link-141" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-141', 'container', 'link-114');">container</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt> <tt class="py-keyword">or</tt> <tt class="py-name">module_doc</tt><tt class="py-op">.</tt><tt id="link-142" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-142', 'canonical_name', 'link-39');">canonical_name</a></tt> <tt class="py-keyword">is</tt> <tt id="link-143" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-143', 'UNKNOWN', 'link-51');">UNKNOWN</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L283"></a><tt class="py-lineno"> 283</tt>  <tt class="py-line"> </tt>
+<a name="L284"></a><tt class="py-lineno"> 284</tt>  <tt class="py-line">            <tt class="py-comment"># Don't introspect stuff "from __future__"</tt> </tt>
+<a name="L285"></a><tt class="py-lineno"> 285</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt id="link-144" class="py-name" targets="Function epydoc.docintrospecter.is_future_feature()=epydoc.docintrospecter-module.html#is_future_feature"><a title="epydoc.docintrospecter.is_future_feature" class="py-name" href="#" onclick="return doclink('link-144', 'is_future_feature', 'link-144');">is_future_feature</a></tt><tt class="py-op">(</tt><t [...]
+<a name="L286"></a><tt class="py-lineno"> 286</tt>  <tt class="py-line"> </tt>
+<a name="L287"></a><tt class="py-lineno"> 287</tt>  <tt class="py-line">            <tt class="py-comment"># Possibly imported variable.</tt> </tt>
+<a name="L288"></a><tt class="py-lineno"> 288</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">child_val_doc</tt> <tt class="py-op">=</tt> <tt id="link-145" class="py-name"><a title="epydoc.docintrospecter.introspect_docs" class="py-name" href="#" onclick="return doclink('link-145', 'introspect_docs', 'link-118');">introspect_docs</a></tt><tt class="py-op">(</tt><tt class="py-name">child</tt><tt class="py-op">,</tt> <tt class="py-name">context</tt><tt [...]
+<a name="L289"></a><tt class="py-lineno"> 289</tt>  <tt class="py-line">            <tt class="py-name">child_var_doc</tt> <tt class="py-op">=</tt> <tt id="link-146" class="py-name"><a title="epydoc.apidoc.VariableDoc" class="py-name" href="#" onclick="return doclink('link-146', 'VariableDoc', 'link-135');">VariableDoc</a></tt><tt class="py-op">(</tt><tt id="link-147" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-147', 'n [...]
+<a name="L290"></a><tt class="py-lineno"> 290</tt>  <tt class="py-line">                                        <tt id="link-148" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-148', 'value', 'link-17');">value</a></tt><tt class="py-op">=</tt><tt class="py-name">child_val_doc</tt><tt class="py-op">,</tt> </tt>
+<a name="L291"></a><tt class="py-lineno"> 291</tt>  <tt class="py-line">                                        <tt id="link-149" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-149', 'container', 'link-114');">container</a></tt><tt class="py-op">=</tt><tt class="py-name">module_doc</tt><tt class="py-op">,</tt> </tt>
+<a name="L292"></a><tt class="py-lineno"> 292</tt>  <tt class="py-line">                                        <tt id="link-150" class="py-name"><a title="epydoc.apidoc.APIDoc.docs_extracted_by" class="py-name" href="#" onclick="return doclink('link-150', 'docs_extracted_by', 'link-84');">docs_extracted_by</a></tt><tt class="py-op">=</tt><tt class="py-string">'introspecter'</tt><tt class="py-op">)</tt> </tt>
+<a name="L293"></a><tt class="py-lineno"> 293</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L294"></a><tt class="py-lineno"> 294</tt>  <tt class="py-line">            <tt class="py-comment"># Imported variable.</tt> </tt>
+<a name="L295"></a><tt class="py-lineno"> 295</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">child_val_doc</tt> <tt class="py-op">=</tt> <tt id="link-151" class="py-name"><a title="epydoc.docintrospecter._get_valuedoc" class="py-name" href="#" onclick="return doclink('link-151', '_get_valuedoc', 'link-44');">_get_valuedoc</a></tt><tt class="py-op">(</tt><tt class="py-name">child</tt><tt class="py-op">)</tt> </tt>
+<a name="L296"></a><tt class="py-lineno"> 296</tt>  <tt class="py-line">            <tt class="py-name">child_var_doc</tt> <tt class="py-op">=</tt> <tt id="link-152" class="py-name"><a title="epydoc.apidoc.VariableDoc" class="py-name" href="#" onclick="return doclink('link-152', 'VariableDoc', 'link-135');">VariableDoc</a></tt><tt class="py-op">(</tt><tt id="link-153" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-153', 'n [...]
+<a name="L297"></a><tt class="py-lineno"> 297</tt>  <tt class="py-line">                                        <tt id="link-154" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-154', 'value', 'link-17');">value</a></tt><tt class="py-op">=</tt><tt class="py-name">child_val_doc</tt><tt class="py-op">,</tt> </tt>
+<a name="L298"></a><tt class="py-lineno"> 298</tt>  <tt class="py-line">                                        <tt id="link-155" class="py-name"><a title="epydoc.apidoc.VariableDoc.is_imported" class="py-name" href="#" onclick="return doclink('link-155', 'is_imported', 'link-138');">is_imported</a></tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> </tt>
+<a name="L299"></a><tt class="py-lineno"> 299</tt>  <tt class="py-line">                                        <tt id="link-156" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-156', 'container', 'link-114');">container</a></tt><tt class="py-op">=</tt><tt class="py-name">module_doc</tt><tt class="py-op">,</tt> </tt>
+<a name="L300"></a><tt class="py-lineno"> 300</tt>  <tt class="py-line">                                        <tt id="link-157" class="py-name"><a title="epydoc.apidoc.APIDoc.docs_extracted_by" class="py-name" href="#" onclick="return doclink('link-157', 'docs_extracted_by', 'link-84');">docs_extracted_by</a></tt><tt class="py-op">=</tt><tt class="py-string">'introspecter'</tt><tt class="py-op">)</tt> </tt>
+<a name="L301"></a><tt class="py-lineno"> 301</tt>  <tt class="py-line"> </tt>
+<a name="L302"></a><tt class="py-lineno"> 302</tt>  <tt class="py-line">        <tt class="py-comment"># If the module's __all__ attribute is set, use it to set the</tt> </tt>
+<a name="L303"></a><tt class="py-lineno"> 303</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># variables public/private status and imported status.</tt> </tt>
+<a name="L304"></a><tt class="py-lineno"> 304</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">public_names</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L305"></a><tt class="py-lineno"> 305</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">child_name</tt> <tt class="py-keyword">in</tt> <tt class="py-name">public_names</tt><tt class="py-op">:</tt> </tt>
+<a name="L306"></a><tt class="py-lineno"> 306</tt>  <tt class="py-line">                <tt class="py-name">child_var_doc</tt><tt class="py-op">.</tt><tt id="link-158" class="py-name" targets="Variable epydoc.apidoc.VariableDoc.is_public=epydoc.apidoc.VariableDoc-class.html#is_public"><a title="epydoc.apidoc.VariableDoc.is_public" class="py-name" href="#" onclick="return doclink('link-158', 'is_public', 'link-158');">is_public</a></tt> <tt class="py-op">=</tt> <tt class="py-name">True</t [...]
+<a name="L307"></a><tt class="py-lineno"> 307</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">child_var_doc</tt><tt class="py-op">,</tt> <tt id="link-159" class="py-name"><a title="epydoc.apidoc.ModuleDoc" class="py-name" href="#" onclick="return doclink('link-159', 'ModuleDoc', 'link-96');">ModuleDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</ [...]
+<a name="L308"></a><tt class="py-lineno"> 308</tt>  <tt class="py-line">                    <tt class="py-name">child_var_doc</tt><tt class="py-op">.</tt><tt id="link-160" class="py-name"><a title="epydoc.apidoc.VariableDoc.is_imported" class="py-name" href="#" onclick="return doclink('link-160', 'is_imported', 'link-138');">is_imported</a></tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L309"></a><tt class="py-lineno"> 309</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L310"></a><tt class="py-lineno"> 310</tt>  <tt class="py-line">                <tt class="py-name">child_var_doc</tt><tt class="py-op">.</tt><tt id="link-161" class="py-name"><a title="epydoc.apidoc.VariableDoc.is_public" class="py-name" href="#" onclick="return doclink('link-161', 'is_public', 'link-158');">is_public</a></tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L311"></a><tt class="py-lineno"> 311</tt>  <tt class="py-line"> </tt>
+<a name="L312"></a><tt class="py-lineno"> 312</tt>  <tt class="py-line">        <tt class="py-name">module_doc</tt><tt class="py-op">.</tt><tt id="link-162" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-162', 'variables', 'link-104');">variables</a></tt><tt class="py-op">[</tt><tt class="py-name">child_name</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">child_var_doc</tt> </tt>
+<a name="L313"></a><tt class="py-lineno"> 313</tt>  <tt class="py-line"> </tt>
+<a name="L314"></a><tt class="py-lineno"> 314</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">module_doc</tt> </tt>
+</div><a name="L315"></a><tt class="py-lineno"> 315</tt>  <tt class="py-line"> </tt>
+<a name="L316"></a><tt class="py-lineno"> 316</tt>  <tt class="py-line"><tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L317"></a><tt class="py-lineno"> 317</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Class Introspection</tt> </tt>
+<a name="L318"></a><tt class="py-lineno"> 318</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L319"></a><tt class="py-lineno"> 319</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L320"></a><tt class="py-lineno"> 320</tt>  <tt class="py-line"><tt class="py-comment">#: A list of class variables that should not be included in a</tt> </tt>
+<a name="L321"></a><tt class="py-lineno"> 321</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#: class's API documentation.</tt> </tt>
+<a name="L322"></a><tt class="py-lineno"> 322</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt id="link-163" class="py-name" targets="Variable epydoc.docintrospecter.UNDOCUMENTED_CLASS_VARS=epydoc.docintrospecter-module.html#UNDOCUMENTED_CLASS_VARS"><a title="epydoc.docintrospecter.UNDOCUMENTED_CLASS_VARS" class="py-name" href="#" onclick="return doclink('link-163', 'UNDOCUMENTED_CLASS_VARS', 'link-163');">UNDOCUMENTED_CLASS_VARS</a></tt> <tt class="py-op">=</tt> <tt class="py-o [...]
+<a name="L323"></a><tt class="py-lineno"> 323</tt>  <tt class="py-line">    <tt class="py-string">'__doc__'</tt><tt class="py-op">,</tt> <tt class="py-string">'__module__'</tt><tt class="py-op">,</tt> <tt class="py-string">'__dict__'</tt><tt class="py-op">,</tt> <tt class="py-string">'__weakref__'</tt><tt class="py-op">,</tt> <tt class="py-string">'__slots__'</tt><tt class="py-op">,</tt> </tt>
+<a name="L324"></a><tt class="py-lineno"> 324</tt>  <tt class="py-line">    <tt class="py-string">'__pyx_vtable__'</tt><tt class="py-op">)</tt> </tt>
+<a name="L325"></a><tt class="py-lineno"> 325</tt>  <tt class="py-line"> </tt>
+<a name="introspect_class"></a><div id="introspect_class-def"><a name="L326"></a><tt class="py-lineno"> 326</tt> <a class="py-toggle" href="#" id="introspect_class-toggle" onclick="return toggle('introspect_class');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docintrospecter-module.html#introspect_class">introspect_class</a><tt class="py-op">(</tt><tt class="py-param">cls</tt><tt class="py-op">,</tt> <tt class="py-param">class_doc</tt><tt [...]
+</div><div id="introspect_class-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="introspect_class-expanded"><a name="L327"></a><tt class="py-lineno"> 327</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L328"></a><tt class="py-lineno"> 328</tt>  <tt class="py-line"><tt class="py-docstring">    Add API documentation information about the class C{cls}</tt> </tt>
+<a name="L329"></a><tt class="py-lineno"> 329</tt>  <tt class="py-line"><tt class="py-docstring">    to C{class_doc}.</tt> </tt>
+<a name="L330"></a><tt class="py-lineno"> 330</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L331"></a><tt class="py-lineno"> 331</tt>  <tt class="py-line">    <tt class="py-name">class_doc</tt><tt class="py-op">.</tt><tt id="link-164" class="py-name"><a title="epydoc.apidoc.APIDoc.specialize_to" class="py-name" href="#" onclick="return doclink('link-164', 'specialize_to', 'link-95');">specialize_to</a></tt><tt class="py-op">(</tt><tt id="link-165" class="py-name" targets="Class epydoc.apidoc.ClassDoc=epydoc.apidoc.ClassDoc-class.html"><a title="epydoc.apidoc.ClassDoc"  [...]
+<a name="L332"></a><tt class="py-lineno"> 332</tt>  <tt class="py-line"> </tt>
+<a name="L333"></a><tt class="py-lineno"> 333</tt>  <tt class="py-line">    <tt class="py-comment"># Record the class's docstring.</tt> </tt>
+<a name="L334"></a><tt class="py-lineno"> 334</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">class_doc</tt><tt class="py-op">.</tt><tt id="link-166" class="py-name"><a title="epydoc.apidoc.APIDoc.docstring" class="py-name" href="#" onclick="return doclink('link-166', 'docstring', 'link-105');">docstring</a></tt> <tt class="py-op">=</tt> <tt id="link-167" class="py-name"><a title="epydoc.docintrospecter.get_docstring" class="py-name" href="#" onclick="return [...]
+<a name="L335"></a><tt class="py-lineno"> 335</tt>  <tt class="py-line"> </tt>
+<a name="L336"></a><tt class="py-lineno"> 336</tt>  <tt class="py-line">    <tt class="py-comment"># Record the class's __all__ attribute (public names).</tt> </tt>
+<a name="L337"></a><tt class="py-lineno"> 337</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">public_names</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L338"></a><tt class="py-lineno"> 338</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">cls</tt><tt class="py-op">,</tt> <tt class="py-string">'__all__'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L339"></a><tt class="py-lineno"> 339</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L340"></a><tt class="py-lineno"> 340</tt>  <tt class="py-line">            <tt class="py-name">public_names</tt> <tt class="py-op">=</tt> <tt class="py-name">set</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt id="link-168" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-168', 'name', 'link-18');">name</a></tt><tt class="py-op">)</tt> <tt class="py-keyword [...]
+<a name="L341"></a><tt class="py-lineno"> 341</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">KeyboardInterrupt</tt><tt class="py-op">:</tt> <tt class="py-keyword">raise</tt> </tt>
+<a name="L342"></a><tt class="py-lineno"> 342</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt><tt class="py-op">:</tt> <tt class="py-keyword">pass</tt> </tt>
+<a name="L343"></a><tt class="py-lineno"> 343</tt>  <tt class="py-line"> </tt>
+<a name="L344"></a><tt class="py-lineno"> 344</tt>  <tt class="py-line">    <tt class="py-comment"># Start a list of subclasses.</tt> </tt>
+<a name="L345"></a><tt class="py-lineno"> 345</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">class_doc</tt><tt class="py-op">.</tt><tt id="link-170" class="py-name" targets="Variable epydoc.apidoc.ClassDoc.subclasses=epydoc.apidoc.ClassDoc-class.html#subclasses"><a title="epydoc.apidoc.ClassDoc.subclasses" class="py-name" href="#" onclick="return doclink('link-170', 'subclasses', 'link-170');">subclasses</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[ [...]
+<a name="L346"></a><tt class="py-lineno"> 346</tt>  <tt class="py-line"> </tt>
+<a name="L347"></a><tt class="py-lineno"> 347</tt>  <tt class="py-line">    <tt class="py-comment"># Sometimes users will define a __metaclass__ that copies all</tt> </tt>
+<a name="L348"></a><tt class="py-lineno"> 348</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># class attributes from bases directly into the derived class's</tt> </tt>
+<a name="L349"></a><tt class="py-lineno"> 349</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># __dict__ when the class is created.  (This saves the lookup time</tt> </tt>
+<a name="L350"></a><tt class="py-lineno"> 350</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># needed to search the base tree for an attribute.)  But for the</tt> </tt>
+<a name="L351"></a><tt class="py-lineno"> 351</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># docs, we only want to list these copied attributes in the</tt> </tt>
+<a name="L352"></a><tt class="py-lineno"> 352</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># parent.  So only add an attribute if it is not identical to an</tt> </tt>
+<a name="L353"></a><tt class="py-lineno"> 353</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># attribute of a base class.  (Unfortunately, this can sometimes</tt> </tt>
+<a name="L354"></a><tt class="py-lineno"> 354</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># cause an attribute to look like it was inherited, even though it</tt> </tt>
+<a name="L355"></a><tt class="py-lineno"> 355</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># wasn't, if it happens to have the exact same value as the</tt> </tt>
+<a name="L356"></a><tt class="py-lineno"> 356</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># corresponding base's attribute.)  An example of a case where</tt> </tt>
+<a name="L357"></a><tt class="py-lineno"> 357</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># this helps is PyQt -- subclasses of QWidget get about 300</tt> </tt>
+<a name="L358"></a><tt class="py-lineno"> 358</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># methods injected into them.</tt> </tt>
+<a name="L359"></a><tt class="py-lineno"> 359</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">base_children</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L360"></a><tt class="py-lineno"> 360</tt>  <tt class="py-line">     </tt>
+<a name="L361"></a><tt class="py-lineno"> 361</tt>  <tt class="py-line">    <tt class="py-comment"># Record the class's base classes; and add the class to its</tt> </tt>
+<a name="L362"></a><tt class="py-lineno"> 362</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># base class's subclass lists.</tt> </tt>
+<a name="L363"></a><tt class="py-lineno"> 363</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">cls</tt><tt class="py-op">,</tt> <tt class="py-string">'__bases__'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L364"></a><tt class="py-lineno"> 364</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> <tt id="link-171" class="py-name" targets="Variable epydoc.apidoc.ClassDoc.bases=epydoc.apidoc.ClassDoc-class.html#bases"><a title="epydoc.apidoc.ClassDoc.bases" class="py-name" href="#" onclick="return doclink('link-171', 'bases', 'link-171');">bases</a></tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-nam [...]
+<a name="L365"></a><tt class="py-lineno"> 365</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt>
+<a name="L366"></a><tt class="py-lineno"> 366</tt>  <tt class="py-line">            <tt id="link-172" class="py-name"><a title="epydoc.apidoc.ClassDoc.bases" class="py-name" href="#" onclick="return doclink('link-172', 'bases', 'link-171');">bases</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L367"></a><tt class="py-lineno"> 367</tt>  <tt class="py-line">            <tt id="link-173" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-173', 'log', 'link-4');">log</a></tt><tt class="py-op">.</tt><tt id="link-174" class="py-name"><a title="epydoc.checker.DocChecker.warning
+epydoc.log.warning" class="py-name" href="#" onclick="return doclink('link-174', 'warning', 'link-67');">warning</a></tt><tt class="py-op">(</tt><tt class="py-string">"Class '%s' defines __bases__, but it does not "</tt> </tt>
+<a name="L368"></a><tt class="py-lineno"> 368</tt>  <tt class="py-line">                        <tt class="py-string">"contain an iterable; ignoring base list."</tt> </tt>
+<a name="L369"></a><tt class="py-lineno"> 369</tt>  <tt class="py-line">                        <tt class="py-op">%</tt> <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">cls</tt><tt class="py-op">,</tt> <tt class="py-string">'__name__'</tt><tt class="py-op">,</tt> <tt class="py-string">'??'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L370"></a><tt class="py-lineno"> 370</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-175" class="py-name"><a title="epydoc.apidoc.ClassDoc.bases" class="py-name" href="#" onclick="return doclink('link-175', 'bases', 'link-171');">bases</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L371"></a><tt class="py-lineno"> 371</tt>  <tt class="py-line">            <tt class="py-name">class_doc</tt><tt class="py-op">.</tt><tt id="link-176" class="py-name"><a title="epydoc.apidoc.ClassDoc.bases" class="py-name" href="#" onclick="return doclink('link-176', 'bases', 'link-171');">bases</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L372"></a><tt class="py-lineno"> 372</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">base</tt> <tt class="py-keyword">in</tt> <tt id="link-177" class="py-name"><a title="epydoc.apidoc.ClassDoc.bases" class="py-name" href="#" onclick="return doclink('link-177', 'bases', 'link-171');">bases</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L373"></a><tt class="py-lineno"> 373</tt>  <tt class="py-line">                <tt class="py-name">basedoc</tt> <tt class="py-op">=</tt> <tt id="link-178" class="py-name"><a title="epydoc.docintrospecter.introspect_docs" class="py-name" href="#" onclick="return doclink('link-178', 'introspect_docs', 'link-118');">introspect_docs</a></tt><tt class="py-op">(</tt><tt class="py-name">base</tt><tt class="py-op">)</tt> </tt>
+<a name="L374"></a><tt class="py-lineno"> 374</tt>  <tt class="py-line">                <tt class="py-name">class_doc</tt><tt class="py-op">.</tt><tt id="link-179" class="py-name"><a title="epydoc.apidoc.ClassDoc.bases" class="py-name" href="#" onclick="return doclink('link-179', 'bases', 'link-171');">bases</a></tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">basedoc</tt><tt class="py-op">)</tt> </tt>
+<a name="L375"></a><tt class="py-lineno"> 375</tt>  <tt class="py-line">                <tt class="py-name">basedoc</tt><tt class="py-op">.</tt><tt id="link-180" class="py-name"><a title="epydoc.apidoc.ClassDoc.subclasses" class="py-name" href="#" onclick="return doclink('link-180', 'subclasses', 'link-170');">subclasses</a></tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">class_doc</tt><tt class="py-op">)</tt> </tt>
+<a name="L376"></a><tt class="py-lineno"> 376</tt>  <tt class="py-line">             </tt>
+<a name="L377"></a><tt class="py-lineno"> 377</tt>  <tt class="py-line">            <tt id="link-181" class="py-name"><a title="epydoc.apidoc.ClassDoc.bases" class="py-name" href="#" onclick="return doclink('link-181', 'bases', 'link-171');">bases</a></tt><tt class="py-op">.</tt><tt class="py-name">reverse</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L378"></a><tt class="py-lineno"> 378</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">base</tt> <tt class="py-keyword">in</tt> <tt id="link-182" class="py-name"><a title="epydoc.apidoc.ClassDoc.bases" class="py-name" href="#" onclick="return doclink('link-182', 'bases', 'link-171');">bases</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L379"></a><tt class="py-lineno"> 379</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">base</tt><tt class="py-op">,</tt> <tt class="py-string">'__dict__'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L380"></a><tt class="py-lineno"> 380</tt>  <tt class="py-line">                    <tt class="py-name">base_children</tt><tt class="py-op">.</tt><tt class="py-name">update</tt><tt class="py-op">(</tt><tt class="py-name">base</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">)</tt> </tt>
+<a name="L381"></a><tt class="py-lineno"> 381</tt>  <tt class="py-line"> </tt>
+<a name="L382"></a><tt class="py-lineno"> 382</tt>  <tt class="py-line">    <tt class="py-comment"># The module name is not defined if the class is being introspected</tt> </tt>
+<a name="L383"></a><tt class="py-lineno"> 383</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># as another class base.</tt> </tt>
+<a name="L384"></a><tt class="py-lineno"> 384</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">module_name</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-name">class_doc</tt><tt class="py-op">.</tt><tt id="link-183" class="py-name"><a title="epydoc.apidoc.ValueDoc.defining_module
+epydoc.apidoc.VariableDoc.defining_module" class="py-name" href="#" onclick="return doclink('link-183', 'defining_module', 'link-89');">defining_module</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-184" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-184', 'UNKNOWN', 'link-51');">UNKNOWN</a></tt><tt class="py-op">)</t [...]
+<a name="L385"></a><tt class="py-lineno"> 385</tt>  <tt class="py-line">        <tt class="py-name">module_name</tt> <tt class="py-op">=</tt> <tt class="py-name">class_doc</tt><tt class="py-op">.</tt><tt id="link-185" class="py-name"><a title="epydoc.apidoc.ValueDoc.defining_module
+epydoc.apidoc.VariableDoc.defining_module" class="py-name" href="#" onclick="return doclink('link-185', 'defining_module', 'link-89');">defining_module</a></tt><tt class="py-op">.</tt><tt id="link-186" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-186', 'canonical_name', 'link-39');">canonical_name</a></tt> </tt>
+<a name="L386"></a><tt class="py-lineno"> 386</tt>  <tt class="py-line">         </tt>
+<a name="L387"></a><tt class="py-lineno"> 387</tt>  <tt class="py-line">    <tt class="py-comment"># Record the class's local variables.</tt> </tt>
+<a name="L388"></a><tt class="py-lineno"> 388</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">class_doc</tt><tt class="py-op">.</tt><tt id="link-187" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-187', 'variables', 'link-104');">variables</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L389"></a><tt class="py-lineno"> 389</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">cls</tt><tt class="py-op">,</tt> <tt class="py-string">'__dict__'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L390"></a><tt class="py-lineno"> 390</tt>  <tt class="py-line">        <tt class="py-name">private_prefix</tt> <tt class="py-op">=</tt> <tt class="py-string">'_%s__'</tt> <tt class="py-op">%</tt> <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">cls</tt><tt class="py-op">,</tt> <tt class="py-string">'__name__'</tt><tt class="py-op">,</tt> <tt class="py-string">'<none>'</tt><tt class="py-op">)</tt> </tt>
+<a name="L391"></a><tt class="py-lineno"> 391</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">child_name</tt><tt class="py-op">,</tt> <tt class="py-name">child</tt> <tt class="py-keyword">in</tt> <tt class="py-name">cls</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">.</tt><tt class="py-name">items</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L392"></a><tt class="py-lineno"> 392</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">child_name</tt> <tt class="py-keyword">in</tt> <tt class="py-name">base_children</tt> </tt>
+<a name="L393"></a><tt class="py-lineno"> 393</tt>  <tt class="py-line">                <tt class="py-keyword">and</tt> <tt class="py-name">base_children</tt><tt class="py-op">[</tt><tt class="py-name">child_name</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-name">child</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L394"></a><tt class="py-lineno"> 394</tt>  <tt class="py-line">                <tt class="py-keyword">continue</tt> </tt>
+<a name="L395"></a><tt class="py-lineno"> 395</tt>  <tt class="py-line"> </tt>
+<a name="L396"></a><tt class="py-lineno"> 396</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">child_name</tt><tt class="py-op">.</tt><tt class="py-name">startswith</tt><tt class="py-op">(</tt><tt class="py-name">private_prefix</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L397"></a><tt class="py-lineno"> 397</tt>  <tt class="py-line">                <tt class="py-name">child_name</tt> <tt class="py-op">=</tt> <tt class="py-name">child_name</tt><tt class="py-op">[</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">private_prefix</tt><tt class="py-op">)</tt><tt class="py-op">-</tt><tt class="py-number">2</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt>
+<a name="L398"></a><tt class="py-lineno"> 398</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">child_name</tt> <tt class="py-keyword">in</tt> <tt id="link-188" class="py-name"><a title="epydoc.docintrospecter.UNDOCUMENTED_CLASS_VARS" class="py-name" href="#" onclick="return doclink('link-188', 'UNDOCUMENTED_CLASS_VARS', 'link-163');">UNDOCUMENTED_CLASS_VARS</a></tt><tt class="py-op">:</tt> <tt class="py-keyword">continue</tt> </tt>
+<a name="L399"></a><tt class="py-lineno"> 399</tt>  <tt class="py-line">            <tt class="py-name">val_doc</tt> <tt class="py-op">=</tt> <tt id="link-189" class="py-name"><a title="epydoc.docintrospecter.introspect_docs" class="py-name" href="#" onclick="return doclink('link-189', 'introspect_docs', 'link-118');">introspect_docs</a></tt><tt class="py-op">(</tt><tt class="py-name">child</tt><tt class="py-op">,</tt> <tt class="py-name">context</tt><tt class="py-op">=</tt><tt class="py [...]
+<a name="L400"></a><tt class="py-lineno"> 400</tt>  <tt class="py-line">                                      <tt class="py-name">module_name</tt><tt class="py-op">=</tt><tt class="py-name">module_name</tt><tt class="py-op">)</tt> </tt>
+<a name="L401"></a><tt class="py-lineno"> 401</tt>  <tt class="py-line">            <tt class="py-name">var_doc</tt> <tt class="py-op">=</tt> <tt id="link-190" class="py-name"><a title="epydoc.apidoc.VariableDoc" class="py-name" href="#" onclick="return doclink('link-190', 'VariableDoc', 'link-135');">VariableDoc</a></tt><tt class="py-op">(</tt><tt id="link-191" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-191', 'name',  [...]
+<a name="L402"></a><tt class="py-lineno"> 402</tt>  <tt class="py-line">                                  <tt id="link-193" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-193', 'container', 'link-114');">container</a></tt><tt class="py-op">=</tt><tt class="py-name">class_doc</tt><tt class="py-op">,</tt> </tt>
+<a name="L403"></a><tt class="py-lineno"> 403</tt>  <tt class="py-line">                                  <tt id="link-194" class="py-name"><a title="epydoc.apidoc.APIDoc.docs_extracted_by" class="py-name" href="#" onclick="return doclink('link-194', 'docs_extracted_by', 'link-84');">docs_extracted_by</a></tt><tt class="py-op">=</tt><tt class="py-string">'introspecter'</tt><tt class="py-op">)</tt> </tt>
+<a name="L404"></a><tt class="py-lineno"> 404</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">public_names</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L405"></a><tt class="py-lineno"> 405</tt>  <tt class="py-line">                <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-195" class="py-name"><a title="epydoc.apidoc.VariableDoc.is_public" class="py-name" href="#" onclick="return doclink('link-195', 'is_public', 'link-158');">is_public</a></tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">child_name</tt> <tt class="py-keyword">in</tt> <tt class="py-name">public_names</tt><tt cla [...]
+<a name="L406"></a><tt class="py-lineno"> 406</tt>  <tt class="py-line">            <tt class="py-name">class_doc</tt><tt class="py-op">.</tt><tt id="link-196" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-196', 'variables', 'link-104');">variables</a></tt><tt class="py-op">[</tt><tt class="py-name">child_name</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">var_doc</tt> </tt>
+<a name="L407"></a><tt class="py-lineno"> 407</tt>  <tt class="py-line"> </tt>
+<a name="L408"></a><tt class="py-lineno"> 408</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">class_doc</tt> </tt>
+</div><a name="L409"></a><tt class="py-lineno"> 409</tt>  <tt class="py-line"> </tt>
+<a name="L410"></a><tt class="py-lineno"> 410</tt>  <tt class="py-line"><tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L411"></a><tt class="py-lineno"> 411</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Routine Introspection</tt> </tt>
+<a name="L412"></a><tt class="py-lineno"> 412</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L413"></a><tt class="py-lineno"> 413</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="introspect_routine"></a><div id="introspect_routine-def"><a name="L414"></a><tt class="py-lineno"> 414</tt> <a class="py-toggle" href="#" id="introspect_routine-toggle" onclick="return toggle('introspect_routine');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docintrospecter-module.html#introspect_routine">introspect_routine</a><tt class="py-op">(</tt><tt class="py-param">routine</tt><tt class="py-op">,</tt> <tt class="py-param">r [...]
+</div><div id="introspect_routine-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="introspect_routine-expanded"><a name="L415"></a><tt class="py-lineno"> 415</tt>  <tt class="py-line">    <tt class="py-docstring">"""Add API documentation information about the function</tt> </tt>
+<a name="L416"></a><tt class="py-lineno"> 416</tt>  <tt class="py-line"><tt class="py-docstring">    C{routine} to C{routine_doc} (specializing it to C{Routine_doc})."""</tt> </tt>
+<a name="L417"></a><tt class="py-lineno"> 417</tt>  <tt class="py-line">    <tt class="py-name">routine_doc</tt><tt class="py-op">.</tt><tt id="link-197" class="py-name"><a title="epydoc.apidoc.APIDoc.specialize_to" class="py-name" href="#" onclick="return doclink('link-197', 'specialize_to', 'link-95');">specialize_to</a></tt><tt class="py-op">(</tt><tt id="link-198" class="py-name" targets="Class epydoc.apidoc.RoutineDoc=epydoc.apidoc.RoutineDoc-class.html"><a title="epydoc.apidoc.Rout [...]
+<a name="L418"></a><tt class="py-lineno"> 418</tt>  <tt class="py-line">     </tt>
+<a name="L419"></a><tt class="py-lineno"> 419</tt>  <tt class="py-line">    <tt class="py-comment"># Extract the underying function</tt> </tt>
+<a name="L420"></a><tt class="py-lineno"> 420</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">routine</tt><tt class="py-op">,</tt> <tt class="py-name">MethodType</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L421"></a><tt class="py-lineno"> 421</tt>  <tt class="py-line">        <tt class="py-name">func</tt> <tt class="py-op">=</tt> <tt class="py-name">routine</tt><tt class="py-op">.</tt><tt class="py-name">im_func</tt> </tt>
+<a name="L422"></a><tt class="py-lineno"> 422</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">routine</tt><tt class="py-op">,</tt> <tt class="py-name">staticmethod</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L423"></a><tt class="py-lineno"> 423</tt>  <tt class="py-line">        <tt class="py-name">func</tt> <tt class="py-op">=</tt> <tt class="py-name">routine</tt><tt class="py-op">.</tt><tt class="py-name">__get__</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+<a name="L424"></a><tt class="py-lineno"> 424</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">routine</tt><tt class="py-op">,</tt> <tt class="py-name">classmethod</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L425"></a><tt class="py-lineno"> 425</tt>  <tt class="py-line">        <tt class="py-name">func</tt> <tt class="py-op">=</tt> <tt class="py-name">routine</tt><tt class="py-op">.</tt><tt class="py-name">__get__</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">im_func</tt> </tt>
+<a name="L426"></a><tt class="py-lineno"> 426</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L427"></a><tt class="py-lineno"> 427</tt>  <tt class="py-line">        <tt class="py-name">func</tt> <tt class="py-op">=</tt> <tt class="py-name">routine</tt> </tt>
+<a name="L428"></a><tt class="py-lineno"> 428</tt>  <tt class="py-line"> </tt>
+<a name="L429"></a><tt class="py-lineno"> 429</tt>  <tt class="py-line">    <tt class="py-comment"># Record the function's docstring.</tt> </tt>
+<a name="L430"></a><tt class="py-lineno"> 430</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">routine_doc</tt><tt class="py-op">.</tt><tt id="link-199" class="py-name"><a title="epydoc.apidoc.APIDoc.docstring" class="py-name" href="#" onclick="return doclink('link-199', 'docstring', 'link-105');">docstring</a></tt> <tt class="py-op">=</tt> <tt id="link-200" class="py-name"><a title="epydoc.docintrospecter.get_docstring" class="py-name" href="#" onclick="retu [...]
+<a name="L431"></a><tt class="py-lineno"> 431</tt>  <tt class="py-line"> </tt>
+<a name="L432"></a><tt class="py-lineno"> 432</tt>  <tt class="py-line">    <tt class="py-comment"># Record the function's signature.</tt> </tt>
+<a name="L433"></a><tt class="py-lineno"> 433</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">func</tt><tt class="py-op">,</tt> <tt class="py-name">FunctionType</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L434"></a><tt class="py-lineno"> 434</tt>  <tt class="py-line">        <tt class="py-op">(</tt><tt class="py-name">args</tt><tt class="py-op">,</tt> <tt id="link-201" class="py-name" targets="Variable epydoc.apidoc.RoutineDoc.vararg=epydoc.apidoc.RoutineDoc-class.html#vararg"><a title="epydoc.apidoc.RoutineDoc.vararg" class="py-name" href="#" onclick="return doclink('link-201', 'vararg', 'link-201');">vararg</a></tt><tt class="py-op">,</tt> <tt id="link-202" class="py-name" targ [...]
+<a name="L435"></a><tt class="py-lineno"> 435</tt>  <tt class="py-line"> </tt>
+<a name="L436"></a><tt class="py-lineno"> 436</tt>  <tt class="py-line">        <tt class="py-comment"># Add the arguments.</tt> </tt>
+<a name="L437"></a><tt class="py-lineno"> 437</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">routine_doc</tt><tt class="py-op">.</tt><tt id="link-203" class="py-name" targets="Variable epydoc.apidoc.RoutineDoc.posargs=epydoc.apidoc.RoutineDoc-class.html#posargs"><a title="epydoc.apidoc.RoutineDoc.posargs" class="py-name" href="#" onclick="return doclink('link-203', 'posargs', 'link-203');">posargs</a></tt> <tt class="py-op">=</tt> <tt class="py-name">ar [...]
+<a name="L438"></a><tt class="py-lineno"> 438</tt>  <tt class="py-line">        <tt class="py-name">routine_doc</tt><tt class="py-op">.</tt><tt id="link-204" class="py-name"><a title="epydoc.apidoc.RoutineDoc.vararg" class="py-name" href="#" onclick="return doclink('link-204', 'vararg', 'link-201');">vararg</a></tt> <tt class="py-op">=</tt> <tt id="link-205" class="py-name"><a title="epydoc.apidoc.RoutineDoc.vararg" class="py-name" href="#" onclick="return doclink('link-205', 'vararg', ' [...]
+<a name="L439"></a><tt class="py-lineno"> 439</tt>  <tt class="py-line">        <tt class="py-name">routine_doc</tt><tt class="py-op">.</tt><tt id="link-206" class="py-name"><a title="epydoc.apidoc.RoutineDoc.kwarg" class="py-name" href="#" onclick="return doclink('link-206', 'kwarg', 'link-202');">kwarg</a></tt> <tt class="py-op">=</tt> <tt id="link-207" class="py-name"><a title="epydoc.apidoc.RoutineDoc.kwarg" class="py-name" href="#" onclick="return doclink('link-207', 'kwarg', 'link- [...]
+<a name="L440"></a><tt class="py-lineno"> 440</tt>  <tt class="py-line"> </tt>
+<a name="L441"></a><tt class="py-lineno"> 441</tt>  <tt class="py-line">        <tt class="py-comment"># Set default values for positional arguments.</tt> </tt>
+<a name="L442"></a><tt class="py-lineno"> 442</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">routine_doc</tt><tt class="py-op">.</tt><tt id="link-208" class="py-name" targets="Variable epydoc.apidoc.RoutineDoc.posarg_defaults=epydoc.apidoc.RoutineDoc-class.html#posarg_defaults"><a title="epydoc.apidoc.RoutineDoc.posarg_defaults" class="py-name" href="#" onclick="return doclink('link-208', 'posarg_defaults', 'link-208');">posarg_defaults</a></tt> <tt cla [...]
+<a name="L443"></a><tt class="py-lineno"> 443</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">defaults</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L444"></a><tt class="py-lineno"> 444</tt>  <tt class="py-line">            <tt class="py-name">offset</tt> <tt class="py-op">=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">args</tt><tt class="py-op">)</tt><tt class="py-op">-</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">defaults</tt><tt class="py-op">)</tt> </tt>
+<a name="L445"></a><tt class="py-lineno"> 445</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">defaults</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L446"></a><tt class="py-lineno"> 446</tt>  <tt class="py-line">                <tt class="py-name">default_val</tt> <tt class="py-op">=</tt> <tt id="link-209" class="py-name"><a title="epydoc.docintrospecter.introspect_docs" class="py-name" href="#" onclick="return doclink('link-209', 'introspect_docs', 'link-118');">introspect_docs</a></tt><tt class="py-op">(</tt><tt class="py-name">defaults</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt><tt class [...]
+<a name="L447"></a><tt class="py-lineno"> 447</tt>  <tt class="py-line">                <tt class="py-name">routine_doc</tt><tt class="py-op">.</tt><tt id="link-210" class="py-name"><a title="epydoc.apidoc.RoutineDoc.posarg_defaults" class="py-name" href="#" onclick="return doclink('link-210', 'posarg_defaults', 'link-208');">posarg_defaults</a></tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">+</tt><tt class="py-name">offset</tt><tt class="py-op">]</tt> <tt class= [...]
+<a name="L448"></a><tt class="py-lineno"> 448</tt>  <tt class="py-line"> </tt>
+<a name="L449"></a><tt class="py-lineno"> 449</tt>  <tt class="py-line">        <tt class="py-comment"># If it's a bound method, then strip off the first argument.</tt> </tt>
+<a name="L450"></a><tt class="py-lineno"> 450</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">routine</tt><tt class="py-op">,</tt> <tt class="py-name">MethodType</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-name">routine</tt><tt class="py-op">.</tt><tt class="py-name">im_self</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">no [...]
+<a name="L451"></a><tt class="py-lineno"> 451</tt>  <tt class="py-line">            <tt class="py-name">routine_doc</tt><tt class="py-op">.</tt><tt id="link-211" class="py-name"><a title="epydoc.apidoc.RoutineDoc.posargs" class="py-name" href="#" onclick="return doclink('link-211', 'posargs', 'link-203');">posargs</a></tt> <tt class="py-op">=</tt> <tt class="py-name">routine_doc</tt><tt class="py-op">.</tt><tt id="link-212" class="py-name"><a title="epydoc.apidoc.RoutineDoc.posargs" clas [...]
+<a name="L452"></a><tt class="py-lineno"> 452</tt>  <tt class="py-line">            <tt class="py-name">routine_doc</tt><tt class="py-op">.</tt><tt id="link-213" class="py-name"><a title="epydoc.apidoc.RoutineDoc.posarg_defaults" class="py-name" href="#" onclick="return doclink('link-213', 'posarg_defaults', 'link-208');">posarg_defaults</a></tt> <tt class="py-op">=</tt> <tt class="py-name">routine_doc</tt><tt class="py-op">.</tt><tt id="link-214" class="py-name"><a title="epydoc.apidoc. [...]
+<a name="L453"></a><tt class="py-lineno"> 453</tt>  <tt class="py-line"> </tt>
+<a name="L454"></a><tt class="py-lineno"> 454</tt>  <tt class="py-line">        <tt class="py-comment"># Set the routine's line number.</tt> </tt>
+<a name="L455"></a><tt class="py-lineno"> 455</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">func</tt><tt class="py-op">,</tt> <tt class="py-string">'func_code'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L456"></a><tt class="py-lineno"> 456</tt>  <tt class="py-line">            <tt class="py-name">routine_doc</tt><tt class="py-op">.</tt><tt id="link-215" class="py-name" targets="Variable epydoc.apidoc.RoutineDoc.lineno=epydoc.apidoc.RoutineDoc-class.html#lineno"><a title="epydoc.apidoc.RoutineDoc.lineno" class="py-name" href="#" onclick="return doclink('link-215', 'lineno', 'link-215');">lineno</a></tt> <tt class="py-op">=</tt> <tt class="py-name">func</tt><tt class="py-op">.</t [...]
+<a name="L457"></a><tt class="py-lineno"> 457</tt>  <tt class="py-line"> </tt>
+<a name="L458"></a><tt class="py-lineno"> 458</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L459"></a><tt class="py-lineno"> 459</tt>  <tt class="py-line">        <tt class="py-comment"># [XX] I should probably use UNKNOWN here??</tt> </tt>
+<a name="L460"></a><tt class="py-lineno"> 460</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># dvarrazzo: if '...' is to be changed, also check that</tt> </tt>
+<a name="L461"></a><tt class="py-lineno"> 461</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># `docstringparser.process_arg_field()` works correctly.</tt> </tt>
+<a name="L462"></a><tt class="py-lineno"> 462</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># See SF bug #1556024.</tt> </tt>
+<a name="L463"></a><tt class="py-lineno"> 463</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">routine_doc</tt><tt class="py-op">.</tt><tt id="link-216" class="py-name"><a title="epydoc.apidoc.RoutineDoc.posargs" class="py-name" href="#" onclick="return doclink('link-216', 'posargs', 'link-203');">posargs</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-string">'...'</tt><tt class="py-op">]</tt> </tt>
+<a name="L464"></a><tt class="py-lineno"> 464</tt>  <tt class="py-line">        <tt class="py-name">routine_doc</tt><tt class="py-op">.</tt><tt id="link-217" class="py-name"><a title="epydoc.apidoc.RoutineDoc.posarg_defaults" class="py-name" href="#" onclick="return doclink('link-217', 'posarg_defaults', 'link-208');">posarg_defaults</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">None</tt><tt class="py-op">]</tt> </tt>
+<a name="L465"></a><tt class="py-lineno"> 465</tt>  <tt class="py-line">        <tt class="py-name">routine_doc</tt><tt class="py-op">.</tt><tt id="link-218" class="py-name"><a title="epydoc.apidoc.RoutineDoc.kwarg" class="py-name" href="#" onclick="return doclink('link-218', 'kwarg', 'link-202');">kwarg</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L466"></a><tt class="py-lineno"> 466</tt>  <tt class="py-line">        <tt class="py-name">routine_doc</tt><tt class="py-op">.</tt><tt id="link-219" class="py-name"><a title="epydoc.apidoc.RoutineDoc.vararg" class="py-name" href="#" onclick="return doclink('link-219', 'vararg', 'link-201');">vararg</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L467"></a><tt class="py-lineno"> 467</tt>  <tt class="py-line"> </tt>
+<a name="L468"></a><tt class="py-lineno"> 468</tt>  <tt class="py-line">    <tt class="py-comment"># Change type, if appropriate.</tt> </tt>
+<a name="L469"></a><tt class="py-lineno"> 469</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">routine</tt><tt class="py-op">,</tt> <tt class="py-name">staticmethod</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L470"></a><tt class="py-lineno"> 470</tt>  <tt class="py-line">        <tt class="py-name">routine_doc</tt><tt class="py-op">.</tt><tt id="link-220" class="py-name"><a title="epydoc.apidoc.APIDoc.specialize_to" class="py-name" href="#" onclick="return doclink('link-220', 'specialize_to', 'link-95');">specialize_to</a></tt><tt class="py-op">(</tt><tt id="link-221" class="py-name" targets="Class epydoc.apidoc.StaticMethodDoc=epydoc.apidoc.StaticMethodDoc-class.html"><a title="epyd [...]
+<a name="L471"></a><tt class="py-lineno"> 471</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">routine</tt><tt class="py-op">,</tt> <tt class="py-name">classmethod</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L472"></a><tt class="py-lineno"> 472</tt>  <tt class="py-line">        <tt class="py-name">routine_doc</tt><tt class="py-op">.</tt><tt id="link-222" class="py-name"><a title="epydoc.apidoc.APIDoc.specialize_to" class="py-name" href="#" onclick="return doclink('link-222', 'specialize_to', 'link-95');">specialize_to</a></tt><tt class="py-op">(</tt><tt id="link-223" class="py-name" targets="Class epydoc.apidoc.ClassMethodDoc=epydoc.apidoc.ClassMethodDoc-class.html"><a title="epydoc [...]
+<a name="L473"></a><tt class="py-lineno"> 473</tt>  <tt class="py-line">         </tt>
+<a name="L474"></a><tt class="py-lineno"> 474</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">routine_doc</tt> </tt>
+</div><a name="L475"></a><tt class="py-lineno"> 475</tt>  <tt class="py-line"> </tt>
+<a name="L476"></a><tt class="py-lineno"> 476</tt>  <tt class="py-line"><tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L477"></a><tt class="py-lineno"> 477</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Property Introspection</tt> </tt>
+<a name="L478"></a><tt class="py-lineno"> 478</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L479"></a><tt class="py-lineno"> 479</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="introspect_property"></a><div id="introspect_property-def"><a name="L480"></a><tt class="py-lineno"> 480</tt> <a class="py-toggle" href="#" id="introspect_property-toggle" onclick="return toggle('introspect_property');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docintrospecter-module.html#introspect_property">introspect_property</a><tt class="py-op">(</tt><tt class="py-param">prop</tt><tt class="py-op">,</tt> <tt class="py-param [...]
+</div><div id="introspect_property-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="introspect_property-expanded"><a name="L481"></a><tt class="py-lineno"> 481</tt>  <tt class="py-line">    <tt class="py-docstring">"""Add API documentation information about the property</tt> </tt>
+<a name="L482"></a><tt class="py-lineno"> 482</tt>  <tt class="py-line"><tt class="py-docstring">    C{prop} to C{prop_doc} (specializing it to C{PropertyDoc})."""</tt> </tt>
+<a name="L483"></a><tt class="py-lineno"> 483</tt>  <tt class="py-line">    <tt class="py-name">prop_doc</tt><tt class="py-op">.</tt><tt id="link-224" class="py-name"><a title="epydoc.apidoc.APIDoc.specialize_to" class="py-name" href="#" onclick="return doclink('link-224', 'specialize_to', 'link-95');">specialize_to</a></tt><tt class="py-op">(</tt><tt id="link-225" class="py-name" targets="Class epydoc.apidoc.PropertyDoc=epydoc.apidoc.PropertyDoc-class.html"><a title="epydoc.apidoc.Prope [...]
+<a name="L484"></a><tt class="py-lineno"> 484</tt>  <tt class="py-line"> </tt>
+<a name="L485"></a><tt class="py-lineno"> 485</tt>  <tt class="py-line">    <tt class="py-comment"># Record the property's docstring.</tt> </tt>
+<a name="L486"></a><tt class="py-lineno"> 486</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">prop_doc</tt><tt class="py-op">.</tt><tt id="link-226" class="py-name"><a title="epydoc.apidoc.APIDoc.docstring" class="py-name" href="#" onclick="return doclink('link-226', 'docstring', 'link-105');">docstring</a></tt> <tt class="py-op">=</tt> <tt id="link-227" class="py-name"><a title="epydoc.docintrospecter.get_docstring" class="py-name" href="#" onclick="return  [...]
+<a name="L487"></a><tt class="py-lineno"> 487</tt>  <tt class="py-line"> </tt>
+<a name="L488"></a><tt class="py-lineno"> 488</tt>  <tt class="py-line">    <tt class="py-comment"># Record the property's access functions.</tt> </tt>
+<a name="L489"></a><tt class="py-lineno"> 489</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">prop</tt><tt class="py-op">,</tt> <tt class="py-string">'fget'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L490"></a><tt class="py-lineno"> 490</tt>  <tt class="py-line">        <tt class="py-name">prop_doc</tt><tt class="py-op">.</tt><tt id="link-228" class="py-name" targets="Variable epydoc.apidoc.PropertyDoc.fget=epydoc.apidoc.PropertyDoc-class.html#fget"><a title="epydoc.apidoc.PropertyDoc.fget" class="py-name" href="#" onclick="return doclink('link-228', 'fget', 'link-228');">fget</a></tt> <tt class="py-op">=</tt> <tt id="link-229" class="py-name"><a title="epydoc.docintrospecte [...]
+<a name="L491"></a><tt class="py-lineno"> 491</tt>  <tt class="py-line">        <tt class="py-name">prop_doc</tt><tt class="py-op">.</tt><tt id="link-231" class="py-name" targets="Variable epydoc.apidoc.PropertyDoc.fset=epydoc.apidoc.PropertyDoc-class.html#fset"><a title="epydoc.apidoc.PropertyDoc.fset" class="py-name" href="#" onclick="return doclink('link-231', 'fset', 'link-231');">fset</a></tt> <tt class="py-op">=</tt> <tt id="link-232" class="py-name"><a title="epydoc.docintrospecte [...]
+<a name="L492"></a><tt class="py-lineno"> 492</tt>  <tt class="py-line">        <tt class="py-name">prop_doc</tt><tt class="py-op">.</tt><tt id="link-234" class="py-name" targets="Variable epydoc.apidoc.PropertyDoc.fdel=epydoc.apidoc.PropertyDoc-class.html#fdel"><a title="epydoc.apidoc.PropertyDoc.fdel" class="py-name" href="#" onclick="return doclink('link-234', 'fdel', 'link-234');">fdel</a></tt> <tt class="py-op">=</tt> <tt id="link-235" class="py-name"><a title="epydoc.docintrospecte [...]
+<a name="L493"></a><tt class="py-lineno"> 493</tt>  <tt class="py-line">     </tt>
+<a name="L494"></a><tt class="py-lineno"> 494</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">prop_doc</tt> </tt>
+</div><a name="L495"></a><tt class="py-lineno"> 495</tt>  <tt class="py-line"> </tt>
+<a name="L496"></a><tt class="py-lineno"> 496</tt>  <tt class="py-line"><tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L497"></a><tt class="py-lineno"> 497</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Generic Value Introspection</tt> </tt>
+<a name="L498"></a><tt class="py-lineno"> 498</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L499"></a><tt class="py-lineno"> 499</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="introspect_other"></a><div id="introspect_other-def"><a name="L500"></a><tt class="py-lineno"> 500</tt> <a class="py-toggle" href="#" id="introspect_other-toggle" onclick="return toggle('introspect_other');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docintrospecter-module.html#introspect_other">introspect_other</a><tt class="py-op">(</tt><tt class="py-param">val</tt><tt class="py-op">,</tt> <tt class="py-param">val_doc</tt><tt c [...]
+</div><div id="introspect_other-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="introspect_other-expanded"><a name="L501"></a><tt class="py-lineno"> 501</tt>  <tt class="py-line">    <tt class="py-docstring">"""Specialize val_doc to a C{GenericValueDoc} and return it."""</tt> </tt>
+<a name="L502"></a><tt class="py-lineno"> 502</tt>  <tt class="py-line">    <tt class="py-name">val_doc</tt><tt class="py-op">.</tt><tt id="link-237" class="py-name"><a title="epydoc.apidoc.APIDoc.specialize_to" class="py-name" href="#" onclick="return doclink('link-237', 'specialize_to', 'link-95');">specialize_to</a></tt><tt class="py-op">(</tt><tt id="link-238" class="py-name" targets="Class epydoc.apidoc.GenericValueDoc=epydoc.apidoc.GenericValueDoc-class.html"><a title="epydoc.apido [...]
+<a name="L503"></a><tt class="py-lineno"> 503</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">val_doc</tt> </tt>
+</div><a name="L504"></a><tt class="py-lineno"> 504</tt>  <tt class="py-line"> </tt>
+<a name="L505"></a><tt class="py-lineno"> 505</tt>  <tt class="py-line"><tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L506"></a><tt class="py-lineno"> 506</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Helper functions</tt> </tt>
+<a name="L507"></a><tt class="py-lineno"> 507</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L508"></a><tt class="py-lineno"> 508</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="isclass"></a><div id="isclass-def"><a name="L509"></a><tt class="py-lineno"> 509</tt> <a class="py-toggle" href="#" id="isclass-toggle" onclick="return toggle('isclass');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docintrospecter-module.html#isclass">isclass</a><tt class="py-op">(</tt><tt class="py-param">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="isclass-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="isclass-expanded"><a name="L510"></a><tt class="py-lineno"> 510</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L511"></a><tt class="py-lineno"> 511</tt>  <tt class="py-line"><tt class="py-docstring">    Return true if the given object is a class.  In particular, return</tt> </tt>
+<a name="L512"></a><tt class="py-lineno"> 512</tt>  <tt class="py-line"><tt class="py-docstring">    true if object is an instance of C{types.TypeType} or of</tt> </tt>
+<a name="L513"></a><tt class="py-lineno"> 513</tt>  <tt class="py-line"><tt class="py-docstring">    C{types.ClassType}.  This is used instead of C{inspect.isclass()},</tt> </tt>
+<a name="L514"></a><tt class="py-lineno"> 514</tt>  <tt class="py-line"><tt class="py-docstring">    because the latter returns true for objects that are not classes</tt> </tt>
+<a name="L515"></a><tt class="py-lineno"> 515</tt>  <tt class="py-line"><tt class="py-docstring">    (in particular, it returns true for any object that has a</tt> </tt>
+<a name="L516"></a><tt class="py-lineno"> 516</tt>  <tt class="py-line"><tt class="py-docstring">    C{__bases__} attribute, including objects that define</tt> </tt>
+<a name="L517"></a><tt class="py-lineno"> 517</tt>  <tt class="py-line"><tt class="py-docstring">    C{__getattr__} to always return a value).</tt> </tt>
+<a name="L518"></a><tt class="py-lineno"> 518</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L519"></a><tt class="py-lineno"> 519</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">object</tt><tt class="py-op">,</tt> <tt class="py-name">tuple</tt><tt class="py-op">(</tt><tt id="link-239" class="py-name" targets="Variable epydoc.docintrospecter._CLASS_TYPES=epydoc.docintrospecter-module.html#_CLASS_TYPES"><a title="epydoc.docintrospecter._CLASS_TYPES" class="py-name" href="#" onc [...]
+</div><a name="L520"></a><tt class="py-lineno"> 520</tt>  <tt class="py-line"> </tt>
+<a name="L521"></a><tt class="py-lineno"> 521</tt>  <tt class="py-line"><tt id="link-240" class="py-name"><a title="epydoc.docintrospecter._CLASS_TYPES" class="py-name" href="#" onclick="return doclink('link-240', '_CLASS_TYPES', 'link-239');">_CLASS_TYPES</a></tt> <tt class="py-op">=</tt> <tt class="py-name">set</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">TypeType</tt><tt class="py-op">,</tt> <tt class="py-name">ClassType</tt><tt class="py-op">]</tt><tt class [...]
+<a name="L522"></a><tt class="py-lineno"> 522</tt>  <tt class="py-line"><tt class="py-string">"""A list of types that should be treated as classes."""</tt> </tt>
+<a name="L523"></a><tt class="py-lineno"> 523</tt>  <tt class="py-line"> </tt>
+<a name="register_class_type"></a><div id="register_class_type-def"><a name="L524"></a><tt class="py-lineno"> 524</tt> <a class="py-toggle" href="#" id="register_class_type-toggle" onclick="return toggle('register_class_type');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docintrospecter-module.html#register_class_type">register_class_type</a><tt class="py-op">(</tt><tt class="py-param">typ</tt><tt class="py-op">)</tt><tt class="py-op">:</ [...]
+</div><div id="register_class_type-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="register_class_type-expanded"><a name="L525"></a><tt class="py-lineno"> 525</tt>  <tt class="py-line">    <tt class="py-docstring">"""Add a type to the lists of types that should be treated as</tt> </tt>
+<a name="L526"></a><tt class="py-lineno"> 526</tt>  <tt class="py-line"><tt class="py-docstring">    classes.  By default, this list contains C{TypeType} and</tt> </tt>
+<a name="L527"></a><tt class="py-lineno"> 527</tt>  <tt class="py-line"><tt class="py-docstring">    C{ClassType}."""</tt> </tt>
+<a name="L528"></a><tt class="py-lineno"> 528</tt>  <tt class="py-line">    <tt id="link-241" class="py-name"><a title="epydoc.docintrospecter._CLASS_TYPES" class="py-name" href="#" onclick="return doclink('link-241', '_CLASS_TYPES', 'link-239');">_CLASS_TYPES</a></tt><tt class="py-op">.</tt><tt class="py-name">add</tt><tt class="py-op">(</tt><tt class="py-name">typ</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L529"></a><tt class="py-lineno"> 529</tt>  <tt class="py-line"> </tt>
+<a name="L530"></a><tt class="py-lineno"> 530</tt>  <tt class="py-line"><tt id="link-242" class="py-name" targets="Variable epydoc.docintrospecter.__future_check_works=epydoc.docintrospecter-module.html#__future_check_works"><a title="epydoc.docintrospecter.__future_check_works" class="py-name" href="#" onclick="return doclink('link-242', '__future_check_works', 'link-242');">__future_check_works</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L531"></a><tt class="py-lineno"> 531</tt>  <tt class="py-line"> </tt>
+<a name="is_future_feature"></a><div id="is_future_feature-def"><a name="L532"></a><tt class="py-lineno"> 532</tt> <a class="py-toggle" href="#" id="is_future_feature-toggle" onclick="return toggle('is_future_feature');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docintrospecter-module.html#is_future_feature">is_future_feature</a><tt class="py-op">(</tt><tt class="py-param">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="is_future_feature-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="is_future_feature-expanded"><a name="L533"></a><tt class="py-lineno"> 533</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L534"></a><tt class="py-lineno"> 534</tt>  <tt class="py-line"><tt class="py-docstring">    Return True if C{object} results from a C{from __future__ import feature}</tt> </tt>
+<a name="L535"></a><tt class="py-lineno"> 535</tt>  <tt class="py-line"><tt class="py-docstring">    statement.</tt> </tt>
+<a name="L536"></a><tt class="py-lineno"> 536</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L537"></a><tt class="py-lineno"> 537</tt>  <tt class="py-line">    <tt class="py-comment"># Guard from unexpected implementation changes of the __future__ module.</tt> </tt>
+<a name="L538"></a><tt class="py-lineno"> 538</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">global</tt> <tt id="link-243" class="py-name"><a title="epydoc.docintrospecter.__future_check_works" class="py-name" href="#" onclick="return doclink('link-243', '__future_check_works', 'link-242');">__future_check_works</a></tt> </tt>
+<a name="L539"></a><tt class="py-lineno"> 539</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-244" class="py-name"><a title="epydoc.docintrospecter.__future_check_works" class="py-name" href="#" onclick="return doclink('link-244', '__future_check_works', 'link-242');">__future_check_works</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L540"></a><tt class="py-lineno"> 540</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-245" class="py-name"><a title="epydoc.docintrospecter.__future_check_works" class="py-name" href="#" onclick="return doclink('link-245', '__future_check_works', 'link-242');">__future_check_works</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L541"></a><tt class="py-lineno"> 541</tt>  <tt class="py-line">            <tt class="py-keyword">import</tt> <tt class="py-name">__future__</tt> </tt>
+<a name="L542"></a><tt class="py-lineno"> 542</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">object</tt><tt class="py-op">,</tt> <tt class="py-name">__future__</tt><tt class="py-op">.</tt><tt class="py-name">_Feature</tt><tt class="py-op">)</tt> </tt>
+<a name="L543"></a><tt class="py-lineno"> 543</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L544"></a><tt class="py-lineno"> 544</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
+<a name="L545"></a><tt class="py-lineno"> 545</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L546"></a><tt class="py-lineno"> 546</tt>  <tt class="py-line">        <tt id="link-246" class="py-name"><a title="epydoc.docintrospecter.__future_check_works" class="py-name" href="#" onclick="return doclink('link-246', '__future_check_works', 'link-242');">__future_check_works</a></tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L547"></a><tt class="py-lineno"> 547</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L548"></a><tt class="py-lineno"> 548</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt id="link-247" class="py-name"><a title="epydoc.docintrospecter.is_future_feature" class="py-name" href="#" onclick="return doclink('link-247', 'is_future_feature', 'link-144');">is_future_feature</a></tt><tt class="py-op">(</tt><tt class="py-name">object</tt><tt class="py-op">)</tt> </tt>
+<a name="L549"></a><tt class="py-lineno"> 549</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt>
+<a name="L550"></a><tt class="py-lineno"> 550</tt>  <tt class="py-line">            <tt id="link-248" class="py-name"><a title="epydoc.docintrospecter.__future_check_works" class="py-name" href="#" onclick="return doclink('link-248', '__future_check_works', 'link-242');">__future_check_works</a></tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L551"></a><tt class="py-lineno"> 551</tt>  <tt class="py-line">            <tt id="link-249" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-249', 'log', 'link-4');">log</a></tt><tt class="py-op">.</tt><tt id="link-250" class="py-name"><a title="epydoc.checker.DocChecker.warning
+epydoc.log.warning" class="py-name" href="#" onclick="return doclink('link-250', 'warning', 'link-67');">warning</a></tt><tt class="py-op">(</tt><tt class="py-string">"Troubles inspecting __future__. Python implementation"</tt> </tt>
+<a name="L552"></a><tt class="py-lineno"> 552</tt>  <tt class="py-line">                        <tt class="py-string">" may have been changed."</tt><tt class="py-op">)</tt> </tt>
+<a name="L553"></a><tt class="py-lineno"> 553</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
+</div><a name="L554"></a><tt class="py-lineno"> 554</tt>  <tt class="py-line"> </tt>
+<a name="get_docstring"></a><div id="get_docstring-def"><a name="L555"></a><tt class="py-lineno"> 555</tt> <a class="py-toggle" href="#" id="get_docstring-toggle" onclick="return toggle('get_docstring');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docintrospecter-module.html#get_docstring">get_docstring</a><tt class="py-op">(</tt><tt class="py-param">value</tt><tt class="py-op">,</tt> <tt class="py-param">module_name</tt><tt class="py-op" [...]
+</div><div id="get_docstring-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="get_docstring-expanded"><a name="L556"></a><tt class="py-lineno"> 556</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L557"></a><tt class="py-lineno"> 557</tt>  <tt class="py-line"><tt class="py-docstring">    Return the docstring for the given value; or C{None} if it</tt> </tt>
+<a name="L558"></a><tt class="py-lineno"> 558</tt>  <tt class="py-line"><tt class="py-docstring">    does not have a docstring.</tt> </tt>
+<a name="L559"></a><tt class="py-lineno"> 559</tt>  <tt class="py-line"><tt class="py-docstring">    @rtype: C{unicode}</tt> </tt>
+<a name="L560"></a><tt class="py-lineno"> 560</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L561"></a><tt class="py-lineno"> 561</tt>  <tt class="py-line">    <tt id="link-251" class="py-name"><a title="epydoc.apidoc.APIDoc.docstring" class="py-name" href="#" onclick="return doclink('link-251', 'docstring', 'link-105');">docstring</a></tt> <tt class="py-op">=</tt> <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt id="link-252" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-252', 'value', 'link [...]
+<a name="L562"></a><tt class="py-lineno"> 562</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-253" class="py-name"><a title="epydoc.apidoc.APIDoc.docstring" class="py-name" href="#" onclick="return doclink('link-253', 'docstring', 'link-105');">docstring</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L563"></a><tt class="py-lineno"> 563</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
+<a name="L564"></a><tt class="py-lineno"> 564</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-254" class="py-name"><a title="epydoc.apidoc.APIDoc.docstring" class="py-name" href="#" onclick="return doclink('link-254', 'docstring', 'link-105');">docstring</a></tt><tt class="py-op">,</tt> <tt class="py-name">unicode</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L565"></a><tt class="py-lineno"> 565</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-255" class="py-name"><a title="epydoc.apidoc.APIDoc.docstring" class="py-name" href="#" onclick="return doclink('link-255', 'docstring', 'link-105');">docstring</a></tt> </tt>
+<a name="L566"></a><tt class="py-lineno"> 566</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-256" class="py-name"><a title="epydoc.apidoc.APIDoc.docstring" class="py-name" href="#" onclick="return doclink('link-256', 'docstring', 'link-105');">docstring</a></tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L567"></a><tt class="py-lineno"> 567</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-name">unicode</tt><tt class="py-op">(</tt><tt id="link-257" class="py-name"><a title="epydoc.apidoc.APIDoc.docstring" class="py-name" href="#" onclick="return doclink('link-257', 'docstring', 'link-105');">docstring</a></tt><tt class="py-op">,</tt> <tt class="py-string">'ascii'</tt><tt class="py-op">)</tt> </tt>
+<a name="L568"></a><tt class="py-lineno"> 568</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">UnicodeDecodeError</tt><tt class="py-op">:</tt> </tt>
+<a name="L569"></a><tt class="py-lineno"> 569</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">module_name</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L570"></a><tt class="py-lineno"> 570</tt>  <tt class="py-line">                <tt class="py-name">module_name</tt> <tt class="py-op">=</tt> <tt id="link-258" class="py-name"><a title="epydoc.docintrospecter.get_containing_module" class="py-name" href="#" onclick="return doclink('link-258', 'get_containing_module', 'link-90');">get_containing_module</a></tt><tt class="py-op">(</tt><tt id="link-259" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href=" [...]
+<a name="L571"></a><tt class="py-lineno"> 571</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">module_name</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L572"></a><tt class="py-lineno"> 572</tt>  <tt class="py-line">                <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L573"></a><tt class="py-lineno"> 573</tt>  <tt class="py-line">                    <tt class="py-name">module</tt> <tt class="py-op">=</tt> <tt id="link-260" class="py-name"><a title="epydoc.docintrospecter.get_value_from_name" class="py-name" href="#" onclick="return doclink('link-260', 'get_value_from_name', 'link-21');">get_value_from_name</a></tt><tt class="py-op">(</tt><tt class="py-name">module_name</tt><tt class="py-op">)</tt> </tt>
+<a name="L574"></a><tt class="py-lineno"> 574</tt>  <tt class="py-line">                    <tt id="link-261" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-261', 'filename', 'link-19');">filename</a></tt> <tt class="py-op">=</tt> <tt id="link-262" class="py-name"><a title="epydoc.util.py_src_filename" class="py-name" href="#" onclick="return doclink('link-262', 'py_src_filename', 'link-102');">py_src_filename</a></tt><t [...]
+<a name="L575"></a><tt class="py-lineno"> 575</tt>  <tt class="py-line">                    <tt class="py-name">encoding</tt> <tt class="py-op">=</tt> <tt id="link-263" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-263', 'epydoc', 'link-1');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-264" class="py-name"><a title="epydoc.docparser" class="py-name" href="#" onclick="return doclink('link-264', 'docparser', 'link-8');">docparser</a></tt>< [...]
+<a name="L576"></a><tt class="py-lineno"> 576</tt>  <tt class="py-line">                    <tt class="py-keyword">return</tt> <tt class="py-name">unicode</tt><tt class="py-op">(</tt><tt id="link-267" class="py-name"><a title="epydoc.apidoc.APIDoc.docstring" class="py-name" href="#" onclick="return doclink('link-267', 'docstring', 'link-105');">docstring</a></tt><tt class="py-op">,</tt> <tt class="py-name">encoding</tt><tt class="py-op">)</tt> </tt>
+<a name="L577"></a><tt class="py-lineno"> 577</tt>  <tt class="py-line">                <tt class="py-keyword">except</tt> <tt class="py-name">KeyboardInterrupt</tt><tt class="py-op">:</tt> <tt class="py-keyword">raise</tt> </tt>
+<a name="L578"></a><tt class="py-lineno"> 578</tt>  <tt class="py-line">                <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt><tt class="py-op">:</tt> <tt class="py-keyword">pass</tt> </tt>
+<a name="L579"></a><tt class="py-lineno"> 579</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt id="link-268" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-268', 'value', 'link-17');">value</a></tt><tt class="py-op">,</tt> <tt class="py-string">'__name__'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt id="link-269" class="py-name"><a [...]
+<a name="L580"></a><tt class="py-lineno"> 580</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> <tt id="link-271" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-271', 'name', 'link-18');">name</a></tt> <tt class="py-op">=</tt> <tt class="py-name">repr</tt><tt class="py-op">(</tt><tt id="link-272" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" [...]
+<a name="L581"></a><tt class="py-lineno"> 581</tt>  <tt class="py-line">            <tt id="link-273" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-273', 'log', 'link-4');">log</a></tt><tt class="py-op">.</tt><tt id="link-274" class="py-name"><a title="epydoc.checker.DocChecker.warning
+epydoc.log.warning" class="py-name" href="#" onclick="return doclink('link-274', 'warning', 'link-67');">warning</a></tt><tt class="py-op">(</tt><tt class="py-string">"%s's docstring is not a unicode string, but it "</tt> </tt>
+<a name="L582"></a><tt class="py-lineno"> 582</tt>  <tt class="py-line">                        <tt class="py-string">"contains non-ascii data -- treating it as "</tt> </tt>
+<a name="L583"></a><tt class="py-lineno"> 583</tt>  <tt class="py-line">                        <tt class="py-string">"latin-1."</tt> <tt class="py-op">%</tt> <tt id="link-275" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-275', 'name', 'link-18');">name</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L584"></a><tt class="py-lineno"> 584</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">unicode</tt><tt class="py-op">(</tt><tt id="link-276" class="py-name"><a title="epydoc.apidoc.APIDoc.docstring" class="py-name" href="#" onclick="return doclink('link-276', 'docstring', 'link-105');">docstring</a></tt><tt class="py-op">,</tt> <tt class="py-string">'latin-1'</tt><tt class="py-op">)</tt> </tt>
+<a name="L585"></a><tt class="py-lineno"> 585</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
+<a name="L586"></a><tt class="py-lineno"> 586</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt id="link-277" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-277', 'value', 'link-17');">value</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">BuiltinMethodType</tt><tt class="py-op">:</tt> </tt>
+<a name="L587"></a><tt class="py-lineno"> 587</tt>  <tt class="py-line">        <tt class="py-comment"># Don't issue a warning for this special case.</tt> </tt>
+<a name="L588"></a><tt class="py-lineno"> 588</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
+<a name="L589"></a><tt class="py-lineno"> 589</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L590"></a><tt class="py-lineno"> 590</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt id="link-278" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-278', 'value', 'link-17');">value</a></tt><tt class="py-op">,</tt> <tt class="py-string">'__name__'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt id="link-279" class="py-name"><a tit [...]
+<a name="L591"></a><tt class="py-lineno"> 591</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> <tt id="link-281" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-281', 'name', 'link-18');">name</a></tt> <tt class="py-op">=</tt> <tt class="py-name">repr</tt><tt class="py-op">(</tt><tt id="link-282" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onc [...]
+<a name="L592"></a><tt class="py-lineno"> 592</tt>  <tt class="py-line">        <tt id="link-283" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-283', 'log', 'link-4');">log</a></tt><tt class="py-op">.</tt><tt id="link-284" class="py-name"><a title="epydoc.checker.DocChecker.warning
+epydoc.log.warning" class="py-name" href="#" onclick="return doclink('link-284', 'warning', 'link-67');">warning</a></tt><tt class="py-op">(</tt><tt class="py-string">"%s's docstring is not a string -- ignoring it."</tt> <tt class="py-op">%</tt> </tt>
+<a name="L593"></a><tt class="py-lineno"> 593</tt>  <tt class="py-line">                    <tt id="link-285" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-285', 'name', 'link-18');">name</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L594"></a><tt class="py-lineno"> 594</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
+</div><a name="L595"></a><tt class="py-lineno"> 595</tt>  <tt class="py-line"> </tt>
+<a name="get_canonical_name"></a><div id="get_canonical_name-def"><a name="L596"></a><tt class="py-lineno"> 596</tt> <a class="py-toggle" href="#" id="get_canonical_name-toggle" onclick="return toggle('get_canonical_name');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docintrospecter-module.html#get_canonical_name">get_canonical_name</a><tt class="py-op">(</tt><tt class="py-param">value</tt><tt class="py-op">,</tt> <tt class="py-param">str [...]
+</div><div id="get_canonical_name-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="get_canonical_name-expanded"><a name="L597"></a><tt class="py-lineno"> 597</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L598"></a><tt class="py-lineno"> 598</tt>  <tt class="py-line"><tt class="py-docstring">    @return: the canonical name for C{value}, or C{UNKNOWN} if no</tt> </tt>
+<a name="L599"></a><tt class="py-lineno"> 599</tt>  <tt class="py-line"><tt class="py-docstring">    canonical name can be found.  Currently, C{get_canonical_name}</tt> </tt>
+<a name="L600"></a><tt class="py-lineno"> 600</tt>  <tt class="py-line"><tt class="py-docstring">    can find canonical names for: modules; functions; non-nested</tt> </tt>
+<a name="L601"></a><tt class="py-lineno"> 601</tt>  <tt class="py-line"><tt class="py-docstring">    classes; methods of non-nested classes; and some class methods</tt> </tt>
+<a name="L602"></a><tt class="py-lineno"> 602</tt>  <tt class="py-line"><tt class="py-docstring">    of non-nested classes.</tt> </tt>
+<a name="L603"></a><tt class="py-lineno"> 603</tt>  <tt class="py-line"><tt class="py-docstring">    </tt> </tt>
+<a name="L604"></a><tt class="py-lineno"> 604</tt>  <tt class="py-line"><tt class="py-docstring">    @rtype: L{DottedName} or C{UNKNOWN}</tt> </tt>
+<a name="L605"></a><tt class="py-lineno"> 605</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L606"></a><tt class="py-lineno"> 606</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt id="link-286" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-286', 'value', 'link-17');">value</a></tt><tt class="py-op">,</tt> <tt class="py-string">'__name__'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="p [...]
+<a name="L607"></a><tt class="py-lineno"> 607</tt>  <tt class="py-line"> </tt>
+<a name="L608"></a><tt class="py-lineno"> 608</tt>  <tt class="py-line">    <tt class="py-comment"># Get the name via introspection.</tt> </tt>
+<a name="L609"></a><tt class="py-lineno"> 609</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-288" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-288', 'value', 'link-17');">value</a></tt><tt class="py-op">,</tt> <tt class="py-name">ModuleType</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L610"></a><tt class="py-lineno"> 610</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L611"></a><tt class="py-lineno"> 611</tt>  <tt class="py-line">            <tt class="py-name">dotted_name</tt> <tt class="py-op">=</tt> <tt id="link-289" class="py-name"><a title="epydoc.apidoc.DottedName" class="py-name" href="#" onclick="return doclink('link-289', 'DottedName', 'link-22');">DottedName</a></tt><tt class="py-op">(</tt><tt id="link-290" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-290', 'value' [...]
+<a name="L612"></a><tt class="py-lineno"> 612</tt>  <tt class="py-line">            <tt class="py-comment"># If the module is shadowed by a variable in its parent</tt> </tt>
+<a name="L613"></a><tt class="py-lineno"> 613</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># package(s), then add a prime mark to the end, to</tt> </tt>
+<a name="L614"></a><tt class="py-lineno"> 614</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># differentiate it from the variable that shadows it.</tt> </tt>
+<a name="L615"></a><tt class="py-lineno"> 615</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt id="link-291" class="py-name" targets="Function epydoc.docintrospecter.verify_name()=epydoc.docintrospecter-module.html#verify_name"><a title="epydoc.docintrospecter.verify_name" class="py-name" href="#" onclick="return doclink('link-291', 'verify_name', 'link-291');">verify_name</a></tt><tt class="py-op">(</tt><tt id="link-292" class="py-name [...]
+<a name="L616"></a><tt class="py-lineno"> 616</tt>  <tt class="py-line">                <tt id="link-294" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-294', 'log', 'link-4');">log</a></tt><tt class="py-op">.</tt><tt id="link-295" class="py-name"><a title="epydoc.checker.DocChecker.warning
+epydoc.log.warning" class="py-name" href="#" onclick="return doclink('link-295', 'warning', 'link-67');">warning</a></tt><tt class="py-op">(</tt><tt class="py-string">"Module %s is shadowed by a variable with "</tt> </tt>
+<a name="L617"></a><tt class="py-lineno"> 617</tt>  <tt class="py-line">                            <tt class="py-string">"the same name."</tt> <tt class="py-op">%</tt> <tt class="py-name">dotted_name</tt><tt class="py-op">)</tt> </tt>
+<a name="L618"></a><tt class="py-lineno"> 618</tt>  <tt class="py-line">                <tt class="py-comment"># Note -- this return bypasses verify_name check:</tt> </tt>
+<a name="L619"></a><tt class="py-lineno"> 619</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-keyword">return</tt> <tt id="link-296" class="py-name"><a title="epydoc.apidoc.DottedName" class="py-name" href="#" onclick="return doclink('link-296', 'DottedName', 'link-22');">DottedName</a></tt><tt class="py-op">(</tt><tt id="link-297" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-297', 'v [...]
+<a name="L620"></a><tt class="py-lineno"> 620</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt id="link-298" class="py-name"><a title="epydoc.apidoc.DottedName" class="py-name" href="#" onclick="return doclink('link-298', 'DottedName', 'link-22');">DottedName</a></tt><tt class="py-op">.</tt><tt id="link-299" class="py-name"><a title="epydoc.apidoc.DottedName.InvalidDottedName" class="py-name" href="#" onclick="return doclink('link-299', 'InvalidDottedName', 'link- [...]
+<a name="L621"></a><tt class="py-lineno"> 621</tt>  <tt class="py-line">            <tt class="py-comment"># Name is not a valid Python identifier -- treat as script.</tt> </tt>
+<a name="L622"></a><tt class="py-lineno"> 622</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt id="link-300" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-300', 'value', 'link-17');">value</a></tt><tt class="py-op">,</tt> <tt class="py-string">'__file__'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L623"></a><tt class="py-lineno"> 623</tt>  <tt class="py-line">                <tt id="link-301" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-301', 'filename', 'link-19');">filename</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'%s'</tt> <tt class="py-op">%</tt> <tt id="link-302" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-302', 'v [...]
+epydoc.markup.ParseError.__str__
+epydoc.markup.epytext.Element.__str__
+epydoc.markup.epytext.ParsedEpytextDocstring.__str__" class="py-name" href="#" onclick="return doclink('link-303', '__str__', 'link-303');">__str__</a></tt> </tt>
+<a name="L624"></a><tt class="py-lineno"> 624</tt>  <tt class="py-line">                <tt class="py-name">dotted_name</tt> <tt class="py-op">=</tt> <tt id="link-304" class="py-name"><a title="epydoc.apidoc.DottedName" class="py-name" href="#" onclick="return doclink('link-304', 'DottedName', 'link-22');">DottedName</a></tt><tt class="py-op">(</tt><tt id="link-305" class="py-name"><a title="epydoc.util.munge_script_name" class="py-name" href="#" onclick="return doclink('link-305', 'mung [...]
+<a name="L625"></a><tt class="py-lineno"> 625</tt>  <tt class="py-line">         </tt>
+<a name="L626"></a><tt class="py-lineno"> 626</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt id="link-307" class="py-name" targets="Function epydoc.docintrospecter.isclass()=epydoc.docintrospecter-module.html#isclass"><a title="epydoc.docintrospecter.isclass" class="py-name" href="#" onclick="return doclink('link-307', 'isclass', 'link-307');">isclass</a></tt><tt class="py-op">(</tt><tt id="link-308" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py [...]
+<a name="L627"></a><tt class="py-lineno"> 627</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-309" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-309', 'value', 'link-17');">value</a></tt><tt class="py-op">.</tt><tt class="py-name">__module__</tt> <tt class="py-op">==</tt> <tt class="py-string">'__builtin__'</tt><tt class="py-op">:</tt> </tt>
+<a name="L628"></a><tt class="py-lineno"> 628</tt>  <tt class="py-line">            <tt class="py-name">dotted_name</tt> <tt class="py-op">=</tt> <tt id="link-310" class="py-name"><a title="epydoc.apidoc.DottedName" class="py-name" href="#" onclick="return doclink('link-310', 'DottedName', 'link-22');">DottedName</a></tt><tt class="py-op">(</tt><tt id="link-311" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-311', 'value' [...]
+<a name="L629"></a><tt class="py-lineno"> 629</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L630"></a><tt class="py-lineno"> 630</tt>  <tt class="py-line">            <tt class="py-name">dotted_name</tt> <tt class="py-op">=</tt> <tt id="link-312" class="py-name"><a title="epydoc.apidoc.DottedName" class="py-name" href="#" onclick="return doclink('link-312', 'DottedName', 'link-22');">DottedName</a></tt><tt class="py-op">(</tt><tt id="link-313" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-313', 'value' [...]
+<a name="L631"></a><tt class="py-lineno"> 631</tt>  <tt class="py-line">                                     <tt class="py-name">strict</tt><tt class="py-op">=</tt><tt class="py-name">strict</tt><tt class="py-op">)</tt> </tt>
+<a name="L632"></a><tt class="py-lineno"> 632</tt>  <tt class="py-line">             </tt>
+<a name="L633"></a><tt class="py-lineno"> 633</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-op">(</tt><tt class="py-name">inspect</tt><tt class="py-op">.</tt><tt class="py-name">ismethod</tt><tt class="py-op">(</tt><tt id="link-315" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-315', 'value', 'link-17');">value</a></tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt id="link-31 [...]
+<a name="L634"></a><tt class="py-lineno"> 634</tt>  <tt class="py-line">          <tt id="link-317" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-317', 'value', 'link-17');">value</a></tt><tt class="py-op">.</tt><tt class="py-name">im_class</tt> <tt class="py-keyword">is</tt> <tt class="py-name">ClassType</tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L635"></a><tt class="py-lineno"> 635</tt>  <tt class="py-line">          <tt class="py-keyword">not</tt> <tt id="link-318" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-318', 'value', 'link-17');">value</a></tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt><tt class="py-op">.</tt><tt class="py-name">startswith</tt><tt class="py-op">(</tt><tt class="py-string">'<'</tt><tt class="py-op">)</tt><tt cla [...]
+<a name="L636"></a><tt class="py-lineno"> 636</tt>  <tt class="py-line">        <tt class="py-name">class_name</tt> <tt class="py-op">=</tt> <tt id="link-319" class="py-name"><a title="epydoc.docintrospecter.get_canonical_name
+epydoc.docwriter.xlink.UrlGenerator.get_canonical_name" class="py-name" href="#" onclick="return doclink('link-319', 'get_canonical_name', 'link-73');">get_canonical_name</a></tt><tt class="py-op">(</tt><tt id="link-320" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-320', 'value', 'link-17');">value</a></tt><tt class="py-op">.</tt><tt class="py-name">im_self</tt><tt class="py-op">)</tt> </tt>
+<a name="L637"></a><tt class="py-lineno"> 637</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">class_name</tt> <tt class="py-keyword">is</tt> <tt id="link-321" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-321', 'UNKNOWN', 'link-51');">UNKNOWN</a></tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt id="link-322" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" hre [...]
+<a name="L638"></a><tt class="py-lineno"> 638</tt>  <tt class="py-line">        <tt class="py-name">dotted_name</tt> <tt class="py-op">=</tt> <tt id="link-323" class="py-name"><a title="epydoc.apidoc.DottedName" class="py-name" href="#" onclick="return doclink('link-323', 'DottedName', 'link-22');">DottedName</a></tt><tt class="py-op">(</tt><tt class="py-name">class_name</tt><tt class="py-op">,</tt> <tt id="link-324" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-na [...]
+<a name="L639"></a><tt class="py-lineno"> 639</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-op">(</tt><tt class="py-name">inspect</tt><tt class="py-op">.</tt><tt class="py-name">ismethod</tt><tt class="py-op">(</tt><tt id="link-325" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-325', 'value', 'link-17');">value</a></tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L640"></a><tt class="py-lineno"> 640</tt>  <tt class="py-line">          <tt class="py-keyword">not</tt> <tt id="link-326" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-326', 'value', 'link-17');">value</a></tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt><tt class="py-op">.</tt><tt class="py-name">startswith</tt><tt class="py-op">(</tt><tt class="py-string">'<'</tt><tt class="py-op">)</tt><tt cla [...]
+<a name="L641"></a><tt class="py-lineno"> 641</tt>  <tt class="py-line">        <tt class="py-name">class_name</tt> <tt class="py-op">=</tt> <tt id="link-327" class="py-name"><a title="epydoc.docintrospecter.get_canonical_name
+epydoc.docwriter.xlink.UrlGenerator.get_canonical_name" class="py-name" href="#" onclick="return doclink('link-327', 'get_canonical_name', 'link-73');">get_canonical_name</a></tt><tt class="py-op">(</tt><tt id="link-328" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-328', 'value', 'link-17');">value</a></tt><tt class="py-op">.</tt><tt class="py-name">im_class</tt><tt class="py-op">)</tt> </tt>
+<a name="L642"></a><tt class="py-lineno"> 642</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">class_name</tt> <tt class="py-keyword">is</tt> <tt id="link-329" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-329', 'UNKNOWN', 'link-51');">UNKNOWN</a></tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt id="link-330" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" hre [...]
+<a name="L643"></a><tt class="py-lineno"> 643</tt>  <tt class="py-line">        <tt class="py-name">dotted_name</tt> <tt class="py-op">=</tt> <tt id="link-331" class="py-name"><a title="epydoc.apidoc.DottedName" class="py-name" href="#" onclick="return doclink('link-331', 'DottedName', 'link-22');">DottedName</a></tt><tt class="py-op">(</tt><tt class="py-name">class_name</tt><tt class="py-op">,</tt> <tt id="link-332" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-na [...]
+<a name="L644"></a><tt class="py-lineno"> 644</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-op">(</tt><tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-333" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-333', 'value', 'link-17');">value</a></tt><tt class="py-op">,</tt> <tt class="py-name">FunctionType</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L645"></a><tt class="py-lineno"> 645</tt>  <tt class="py-line">          <tt class="py-keyword">not</tt> <tt id="link-334" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-334', 'value', 'link-17');">value</a></tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt><tt class="py-op">.</tt><tt class="py-name">startswith</tt><tt class="py-op">(</tt><tt class="py-string">'<'</tt><tt class="py-op">)</tt><tt cla [...]
+<a name="L646"></a><tt class="py-lineno"> 646</tt>  <tt class="py-line">        <tt class="py-name">module_name</tt> <tt class="py-op">=</tt> <tt id="link-335" class="py-name" targets="Function epydoc.docintrospecter._find_function_module()=epydoc.docintrospecter-module.html#_find_function_module"><a title="epydoc.docintrospecter._find_function_module" class="py-name" href="#" onclick="return doclink('link-335', '_find_function_module', 'link-335');">_find_function_module</a></tt><tt cla [...]
+<a name="L647"></a><tt class="py-lineno"> 647</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">module_name</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt id="link-337" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-337', 'UNKNOWN', 'link-51');">UNKNOWN</a></tt> </tt>
+<a name="L648"></a><tt class="py-lineno"> 648</tt>  <tt class="py-line">        <tt class="py-name">dotted_name</tt> <tt class="py-op">=</tt> <tt id="link-338" class="py-name"><a title="epydoc.apidoc.DottedName" class="py-name" href="#" onclick="return doclink('link-338', 'DottedName', 'link-22');">DottedName</a></tt><tt class="py-op">(</tt><tt class="py-name">module_name</tt><tt class="py-op">,</tt> <tt id="link-339" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-n [...]
+<a name="L649"></a><tt class="py-lineno"> 649</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L650"></a><tt class="py-lineno"> 650</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-340" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-340', 'UNKNOWN', 'link-51');">UNKNOWN</a></tt> </tt>
+<a name="L651"></a><tt class="py-lineno"> 651</tt>  <tt class="py-line"> </tt>
+<a name="L652"></a><tt class="py-lineno"> 652</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-341" class="py-name"><a title="epydoc.docintrospecter.verify_name" class="py-name" href="#" onclick="return doclink('link-341', 'verify_name', 'link-291');">verify_name</a></tt><tt class="py-op">(</tt><tt id="link-342" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-342', 'value', 'link-17');">value</ [...]
+</div><a name="L653"></a><tt class="py-lineno"> 653</tt>  <tt class="py-line"> </tt>
+<a name="verify_name"></a><div id="verify_name-def"><a name="L654"></a><tt class="py-lineno"> 654</tt> <a class="py-toggle" href="#" id="verify_name-toggle" onclick="return toggle('verify_name');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docintrospecter-module.html#verify_name">verify_name</a><tt class="py-op">(</tt><tt class="py-param">value</tt><tt class="py-op">,</tt> <tt class="py-param">dotted_name</tt><tt class="py-op">)</tt><tt c [...]
+</div><div id="verify_name-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="verify_name-expanded"><a name="L655"></a><tt class="py-lineno"> 655</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L656"></a><tt class="py-lineno"> 656</tt>  <tt class="py-line"><tt class="py-docstring">    Verify the name.  E.g., if it's a nested class, then we won't be</tt> </tt>
+<a name="L657"></a><tt class="py-lineno"> 657</tt>  <tt class="py-line"><tt class="py-docstring">    able to find it with the name we constructed.</tt> </tt>
+<a name="L658"></a><tt class="py-lineno"> 658</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L659"></a><tt class="py-lineno"> 659</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">dotted_name</tt> <tt class="py-keyword">is</tt> <tt id="link-343" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-343', 'UNKNOWN', 'link-51');">UNKNOWN</a></tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt id="link-344" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href=" [...]
+<a name="L660"></a><tt class="py-lineno"> 660</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">dotted_name</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt> <tt class="py-keyword">and</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">__builtin__</tt><tt class="py-op">,</tt> <tt class="py-name">dotted_name</tt><tt class="py-op">[</tt><tt clas [...]
+<a name="L661"></a><tt class="py-lineno"> 661</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">dotted_name</tt> </tt>
+<a name="L662"></a><tt class="py-lineno"> 662</tt>  <tt class="py-line">    <tt class="py-name">named_value</tt> <tt class="py-op">=</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">modules</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-name">dotted_name</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L663"></a><tt class="py-lineno"> 663</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">named_value</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt id="link-345" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-345', 'UNKNOWN', 'link-51');">UNKNOWN</a></tt> </tt>
+<a name="L664"></a><tt class="py-lineno"> 664</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">identifier</tt> <tt class="py-keyword">in</tt> <tt class="py-name">dotted_name</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L665"></a><tt class="py-lineno"> 665</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> <tt class="py-name">named_value</tt> <tt class="py-op">=</tt> <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">named_value</tt><tt class="py-op">,</tt> <tt class="py-name">identifier</tt><tt class="py-op">)</tt> </tt>
+<a name="L666"></a><tt class="py-lineno"> 666</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt id="link-346" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-346', 'UNKNOWN', 'link-51');">UNKNOWN</a></tt> </tt>
+<a name="L667"></a><tt class="py-lineno"> 667</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-347" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-347', 'value', 'link-17');">value</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">named_value</tt><tt class="py-op">:</tt> </tt>
+<a name="L668"></a><tt class="py-lineno"> 668</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">dotted_name</tt> </tt>
+<a name="L669"></a><tt class="py-lineno"> 669</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L670"></a><tt class="py-lineno"> 670</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-348" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-348', 'UNKNOWN', 'link-51');">UNKNOWN</a></tt> </tt>
+</div><a name="L671"></a><tt class="py-lineno"> 671</tt>  <tt class="py-line"> </tt>
+<a name="L672"></a><tt class="py-lineno"> 672</tt>  <tt class="py-line"><tt class="py-comment"># [xx] not used:</tt> </tt>
+<a name="value_repr"></a><div id="value_repr-def"><a name="L673"></a><tt class="py-lineno"> 673</tt> <a class="py-toggle" href="#" id="value_repr-toggle" onclick="return toggle('value_repr');">-</a><tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docintrospecter-module.html#value_repr">value_repr</a><tt class="py-op">(</tt><tt class="py-param">value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="value_repr-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="value_repr-expanded"><a name="L674"></a><tt class="py-lineno"> 674</tt>  <tt class="py-line">    <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L675"></a><tt class="py-lineno"> 675</tt>  <tt class="py-line">        <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-string">'%r'</tt> <tt class="py-op">%</tt> <tt id="link-349" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-349', 'value', 'link-17');">value</a></tt> </tt>
+<a name="L676"></a><tt class="py-lineno"> 676</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L677"></a><tt class="py-lineno"> 677</tt>  <tt class="py-line">            <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt id="link-350" class="py-name" targets="Function epydoc.util.decode_with_backslashreplace()=epydoc.util-module.html#decode_with_backslashreplace"><a title="epydoc.util.decode_with_backslashreplace" class="py-name" href="#" onclick="return doclink('link-350', 'decode_with_backslashreplace', 'link-350');">decode_with_backslashreplace</a></tt><tt class=" [...]
+<a name="L678"></a><tt class="py-lineno"> 678</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">s</tt> </tt>
+<a name="L679"></a><tt class="py-lineno"> 679</tt>  <tt class="py-line">    <tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt>
+<a name="L680"></a><tt class="py-lineno"> 680</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-351" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-351', 'UNKNOWN', 'link-51');">UNKNOWN</a></tt> </tt>
+</div><a name="L681"></a><tt class="py-lineno"> 681</tt>  <tt class="py-line"> </tt>
+<a name="get_containing_module"></a><div id="get_containing_module-def"><a name="L682"></a><tt class="py-lineno"> 682</tt> <a class="py-toggle" href="#" id="get_containing_module-toggle" onclick="return toggle('get_containing_module');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docintrospecter-module.html#get_containing_module">get_containing_module</a><tt class="py-op">(</tt><tt class="py-param">value</tt><tt class="py-op">)</tt><tt cla [...]
+</div><div id="get_containing_module-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="get_containing_module-expanded"><a name="L683"></a><tt class="py-lineno"> 683</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L684"></a><tt class="py-lineno"> 684</tt>  <tt class="py-line"><tt class="py-docstring">    Return the name of the module containing the given value, or</tt> </tt>
+<a name="L685"></a><tt class="py-lineno"> 685</tt>  <tt class="py-line"><tt class="py-docstring">    C{None} if the module name can't be determined.</tt> </tt>
+<a name="L686"></a><tt class="py-lineno"> 686</tt>  <tt class="py-line"><tt class="py-docstring">    @rtype: L{DottedName}</tt> </tt>
+<a name="L687"></a><tt class="py-lineno"> 687</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L688"></a><tt class="py-lineno"> 688</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">inspect</tt><tt class="py-op">.</tt><tt class="py-name">ismodule</tt><tt class="py-op">(</tt><tt id="link-352" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-352', 'value', 'link-17');">value</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L689"></a><tt class="py-lineno"> 689</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-353" class="py-name"><a title="epydoc.apidoc.DottedName" class="py-name" href="#" onclick="return doclink('link-353', 'DottedName', 'link-22');">DottedName</a></tt><tt class="py-op">(</tt><tt id="link-354" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-354', 'value', 'link-17');">value</a></tt><t [...]
+<a name="L690"></a><tt class="py-lineno"> 690</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt id="link-355" class="py-name"><a title="epydoc.docintrospecter.isclass" class="py-name" href="#" onclick="return doclink('link-355', 'isclass', 'link-307');">isclass</a></tt><tt class="py-op">(</tt><tt id="link-356" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-356', 'value', 'link-17');">value</a></tt><tt cla [...]
+<a name="L691"></a><tt class="py-lineno"> 691</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-357" class="py-name"><a title="epydoc.apidoc.DottedName" class="py-name" href="#" onclick="return doclink('link-357', 'DottedName', 'link-22');">DottedName</a></tt><tt class="py-op">(</tt><tt id="link-358" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-358', 'value', 'link-17');">value</a></tt><t [...]
+<a name="L692"></a><tt class="py-lineno"> 692</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-op">(</tt><tt class="py-name">inspect</tt><tt class="py-op">.</tt><tt class="py-name">ismethod</tt><tt class="py-op">(</tt><tt id="link-359" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-359', 'value', 'link-17');">value</a></tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt id="link-36 [...]
+<a name="L693"></a><tt class="py-lineno"> 693</tt>  <tt class="py-line">          <tt id="link-361" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-361', 'value', 'link-17');">value</a></tt><tt class="py-op">.</tt><tt class="py-name">im_class</tt> <tt class="py-keyword">is</tt> <tt class="py-name">ClassType</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-comment"># class method.</tt> </tt>
+<a name="L694"></a><tt class="py-lineno"> 694</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-362" class="py-name"><a title="epydoc.apidoc.DottedName" class="py-name" href="#" onclick="return doclink('link-362', 'DottedName', 'link-22');">DottedName</a></tt><tt class="py-op">(</tt><tt id="link-363" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-363', 'value', 'link-17');">value</a></tt><t [...]
+<a name="L695"></a><tt class="py-lineno"> 695</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">inspect</tt><tt class="py-op">.</tt><tt class="py-name">ismethod</tt><tt class="py-op">(</tt><tt id="link-364" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-364', 'value', 'link-17');">value</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L696"></a><tt class="py-lineno"> 696</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-365" class="py-name"><a title="epydoc.apidoc.DottedName" class="py-name" href="#" onclick="return doclink('link-365', 'DottedName', 'link-22');">DottedName</a></tt><tt class="py-op">(</tt><tt id="link-366" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-366', 'value', 'link-17');">value</a></tt><t [...]
+<a name="L697"></a><tt class="py-lineno"> 697</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">inspect</tt><tt class="py-op">.</tt><tt class="py-name">isroutine</tt><tt class="py-op">(</tt><tt id="link-367" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-367', 'value', 'link-17');">value</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L698"></a><tt class="py-lineno"> 698</tt>  <tt class="py-line">        <tt class="py-name">module</tt> <tt class="py-op">=</tt> <tt id="link-368" class="py-name"><a title="epydoc.docintrospecter._find_function_module" class="py-name" href="#" onclick="return doclink('link-368', '_find_function_module', 'link-335');">_find_function_module</a></tt><tt class="py-op">(</tt><tt id="link-369" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick=" [...]
+<a name="L699"></a><tt class="py-lineno"> 699</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">module</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
+<a name="L700"></a><tt class="py-lineno"> 700</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-370" class="py-name"><a title="epydoc.apidoc.DottedName" class="py-name" href="#" onclick="return doclink('link-370', 'DottedName', 'link-22');">DottedName</a></tt><tt class="py-op">(</tt><tt class="py-name">module</tt><tt class="py-op">)</tt> </tt>
+<a name="L701"></a><tt class="py-lineno"> 701</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L702"></a><tt class="py-lineno"> 702</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
+</div><a name="L703"></a><tt class="py-lineno"> 703</tt>  <tt class="py-line"> </tt>
+<a name="_find_function_module"></a><div id="_find_function_module-def"><a name="L704"></a><tt class="py-lineno"> 704</tt> <a class="py-toggle" href="#" id="_find_function_module-toggle" onclick="return toggle('_find_function_module');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docintrospecter-module.html#_find_function_module">_find_function_module</a><tt class="py-op">(</tt><tt class="py-param">func</tt><tt class="py-op">)</tt><tt clas [...]
+</div><div id="_find_function_module-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_find_function_module-expanded"><a name="L705"></a><tt class="py-lineno"> 705</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L706"></a><tt class="py-lineno"> 706</tt>  <tt class="py-line"><tt class="py-docstring">    @return: The module that defines the given function.</tt> </tt>
+<a name="L707"></a><tt class="py-lineno"> 707</tt>  <tt class="py-line"><tt class="py-docstring">    @rtype: C{module}</tt> </tt>
+<a name="L708"></a><tt class="py-lineno"> 708</tt>  <tt class="py-line"><tt class="py-docstring">    @param func: The function whose module should be found.</tt> </tt>
+<a name="L709"></a><tt class="py-lineno"> 709</tt>  <tt class="py-line"><tt class="py-docstring">    @type func: C{function}</tt> </tt>
+<a name="L710"></a><tt class="py-lineno"> 710</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L711"></a><tt class="py-lineno"> 711</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">func</tt><tt class="py-op">,</tt> <tt class="py-string">'__module__'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L712"></a><tt class="py-lineno"> 712</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">func</tt><tt class="py-op">.</tt><tt class="py-name">__module__</tt> </tt>
+<a name="L713"></a><tt class="py-lineno"> 713</tt>  <tt class="py-line">    <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L714"></a><tt class="py-lineno"> 714</tt>  <tt class="py-line">        <tt class="py-name">module</tt> <tt class="py-op">=</tt> <tt class="py-name">inspect</tt><tt class="py-op">.</tt><tt class="py-name">getmodule</tt><tt class="py-op">(</tt><tt class="py-name">func</tt><tt class="py-op">)</tt> </tt>
+<a name="L715"></a><tt class="py-lineno"> 715</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">module</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-name">module</tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt> </tt>
+<a name="L716"></a><tt class="py-lineno"> 716</tt>  <tt class="py-line">    <tt class="py-keyword">except</tt> <tt class="py-name">KeyboardInterrupt</tt><tt class="py-op">:</tt> <tt class="py-keyword">raise</tt> </tt>
+<a name="L717"></a><tt class="py-lineno"> 717</tt>  <tt class="py-line">    <tt class="py-keyword">except</tt><tt class="py-op">:</tt> <tt class="py-keyword">pass</tt> </tt>
+<a name="L718"></a><tt class="py-lineno"> 718</tt>  <tt class="py-line"> </tt>
+<a name="L719"></a><tt class="py-lineno"> 719</tt>  <tt class="py-line">    <tt class="py-comment"># This fallback shouldn't usually be needed.  But it is needed in</tt> </tt>
+<a name="L720"></a><tt class="py-lineno"> 720</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># a couple special cases (including using epydoc to document</tt> </tt>
+<a name="L721"></a><tt class="py-lineno"> 721</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># itself).  In particular, if a module gets loaded twice, using</tt> </tt>
+<a name="L722"></a><tt class="py-lineno"> 722</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># two different names for the same file, then this helps.</tt> </tt>
+<a name="L723"></a><tt class="py-lineno"> 723</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">for</tt> <tt class="py-name">module</tt> <tt class="py-keyword">in</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">modules</tt><tt class="py-op">.</tt><tt class="py-name">values</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L724"></a><tt class="py-lineno"> 724</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">module</tt><tt class="py-op">,</tt> <tt class="py-string">'__dict__'</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L725"></a><tt class="py-lineno"> 725</tt>  <tt class="py-line">            <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">func</tt><tt class="py-op">,</tt> <tt class="py-string">'func_globals'</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L726"></a><tt class="py-lineno"> 726</tt>  <tt class="py-line">            <tt class="py-name">func</tt><tt class="py-op">.</tt><tt class="py-name">func_globals</tt> <tt class="py-keyword">is</tt> <tt class="py-name">module</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L727"></a><tt class="py-lineno"> 727</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">module</tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt> </tt>
+<a name="L728"></a><tt class="py-lineno"> 728</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
+</div><a name="L729"></a><tt class="py-lineno"> 729</tt>  <tt class="py-line"> </tt>
+<a name="L730"></a><tt class="py-lineno"> 730</tt>  <tt class="py-line"><tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L731"></a><tt class="py-lineno"> 731</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Introspection Dispatch Table</tt> </tt>
+<a name="L732"></a><tt class="py-lineno"> 732</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L733"></a><tt class="py-lineno"> 733</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L734"></a><tt class="py-lineno"> 734</tt>  <tt class="py-line"><tt id="link-371" class="py-name" targets="Variable epydoc.docintrospecter._introspecter_registry=epydoc.docintrospecter-module.html#_introspecter_registry"><a title="epydoc.docintrospecter._introspecter_registry" class="py-name" href="#" onclick="return doclink('link-371', '_introspecter_registry', 'link-371');">_introspecter_registry</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="register_introspecter"></a><div id="register_introspecter-def"><a name="L735"></a><tt class="py-lineno"> 735</tt> <a class="py-toggle" href="#" id="register_introspecter-toggle" onclick="return toggle('register_introspecter');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docintrospecter-module.html#register_introspecter">register_introspecter</a><tt class="py-op">(</tt><tt class="py-param">applicability_test</tt><tt class="py-op"> [...]
+</div><div id="register_introspecter-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="register_introspecter-expanded"><a name="L736"></a><tt class="py-lineno"> 736</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L737"></a><tt class="py-lineno"> 737</tt>  <tt class="py-line"><tt class="py-docstring">    Register an introspecter function.  Introspecter functions take</tt> </tt>
+<a name="L738"></a><tt class="py-lineno"> 738</tt>  <tt class="py-line"><tt class="py-docstring">    two arguments, a python value and a C{ValueDoc} object, and should</tt> </tt>
+<a name="L739"></a><tt class="py-lineno"> 739</tt>  <tt class="py-line"><tt class="py-docstring">    add information about the given value to the the C{ValueDoc}.</tt> </tt>
+<a name="L740"></a><tt class="py-lineno"> 740</tt>  <tt class="py-line"><tt class="py-docstring">    Usually, the first line of an inspecter function will specialize</tt> </tt>
+<a name="L741"></a><tt class="py-lineno"> 741</tt>  <tt class="py-line"><tt class="py-docstring">    it to a sublass of C{ValueDoc}, using L{ValueDoc.specialize_to()}:</tt> </tt>
+<a name="L742"></a><tt class="py-lineno"> 742</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L743"></a><tt class="py-lineno"> 743</tt>  <tt class="py-line"><tt class="py-docstring">        >>> def typical_introspecter(value, value_doc):</tt> </tt>
+<a name="L744"></a><tt class="py-lineno"> 744</tt>  <tt class="py-line"><tt class="py-docstring">        ...     value_doc.specialize_to(SomeSubclassOfValueDoc)</tt> </tt>
+<a name="L745"></a><tt class="py-lineno"> 745</tt>  <tt class="py-line"><tt class="py-docstring">        ...     <add info to value_doc></tt> </tt>
+<a name="L746"></a><tt class="py-lineno"> 746</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L747"></a><tt class="py-lineno"> 747</tt>  <tt class="py-line"><tt class="py-docstring">    @param priority: The priority of this introspecter, which determines</tt> </tt>
+<a name="L748"></a><tt class="py-lineno"> 748</tt>  <tt class="py-line"><tt class="py-docstring">    the order in which introspecters are tried -- introspecters with lower</tt> </tt>
+<a name="L749"></a><tt class="py-lineno"> 749</tt>  <tt class="py-line"><tt class="py-docstring">    numbers are tried first.  The standard introspecters have priorities</tt> </tt>
+<a name="L750"></a><tt class="py-lineno"> 750</tt>  <tt class="py-line"><tt class="py-docstring">    ranging from 20 to 30.  The default priority (10) will place new</tt> </tt>
+<a name="L751"></a><tt class="py-lineno"> 751</tt>  <tt class="py-line"><tt class="py-docstring">    introspecters before standard introspecters.</tt> </tt>
+<a name="L752"></a><tt class="py-lineno"> 752</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L753"></a><tt class="py-lineno"> 753</tt>  <tt class="py-line">    <tt id="link-372" class="py-name"><a title="epydoc.docintrospecter._introspecter_registry" class="py-name" href="#" onclick="return doclink('link-372', '_introspecter_registry', 'link-371');">_introspecter_registry</a></tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt> <tt class="py-op">(</tt><tt class="py-name">priority</tt><tt class="py-op">,</tt> <tt class="py-name">applicabili [...]
+<a name="L754"></a><tt class="py-lineno"> 754</tt>  <tt class="py-line">                                    <tt class="py-name">introspecter</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt> </tt>
+<a name="L755"></a><tt class="py-lineno"> 755</tt>  <tt class="py-line">    <tt id="link-373" class="py-name"><a title="epydoc.docintrospecter._introspecter_registry" class="py-name" href="#" onclick="return doclink('link-373', '_introspecter_registry', 'link-371');">_introspecter_registry</a></tt><tt class="py-op">.</tt><tt class="py-name">sort</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L756"></a><tt class="py-lineno"> 756</tt>  <tt class="py-line">     </tt>
+<a name="_get_introspecter"></a><div id="_get_introspecter-def"><a name="L757"></a><tt class="py-lineno"> 757</tt> <a class="py-toggle" href="#" id="_get_introspecter-toggle" onclick="return toggle('_get_introspecter');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docintrospecter-module.html#_get_introspecter">_get_introspecter</a><tt class="py-op">(</tt><tt class="py-param">value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_get_introspecter-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_get_introspecter-expanded"><a name="L758"></a><tt class="py-lineno"> 758</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-op">(</tt><tt class="py-name">priority</tt><tt class="py-op">,</tt> <tt class="py-name">applicability_test</tt><tt class="py-op">,</tt> <tt class="py-name">introspecter</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt id= [...]
+<a name="L759"></a><tt class="py-lineno"> 759</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">applicability_test</tt><tt class="py-op">(</tt><tt id="link-375" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-375', 'value', 'link-17');">value</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L760"></a><tt class="py-lineno"> 760</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">introspecter</tt> </tt>
+<a name="L761"></a><tt class="py-lineno"> 761</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L762"></a><tt class="py-lineno"> 762</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-376" class="py-name" targets="Function epydoc.docintrospecter.introspect_other()=epydoc.docintrospecter-module.html#introspect_other"><a title="epydoc.docintrospecter.introspect_other" class="py-name" href="#" onclick="return doclink('link-376', 'introspect_other', 'link-376');">introspect_other</a></tt> </tt>
+</div><a name="L763"></a><tt class="py-lineno"> 763</tt>  <tt class="py-line"> </tt>
+<a name="L764"></a><tt class="py-lineno"> 764</tt>  <tt class="py-line"><tt class="py-comment"># Register the standard introspecter functions.</tt> </tt>
+<a name="is_classmethod"></a><div id="is_classmethod-def"><a name="L765"></a><tt class="py-lineno"> 765</tt> <a class="py-toggle" href="#" id="is_classmethod-toggle" onclick="return toggle('is_classmethod');">-</a><tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docintrospecter-module.html#is_classmethod">is_classmethod</a><tt class="py-op">(</tt><tt class="py-param">v</tt><tt class="py-op">)</tt><tt class="py-op">:</tt>  [...]
+</div><a name="is_staticmethod"></a><div id="is_staticmethod-def"><a name="L766"></a><tt class="py-lineno"> 766</tt> <a class="py-toggle" href="#" id="is_staticmethod-toggle" onclick="return toggle('is_staticmethod');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docintrospecter-module.html#is_staticmethod">is_staticmethod</a><tt class="py-op">(</tt><tt class="py-param">v</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-ke [...]
+</div><a name="is_property"></a><div id="is_property-def"><a name="L767"></a><tt class="py-lineno"> 767</tt> <a class="py-toggle" href="#" id="is_property-toggle" onclick="return toggle('is_property');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docintrospecter-module.html#is_property">is_property</a><tt class="py-op">(</tt><tt class="py-param">v</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt c [...]
+</div><a name="L768"></a><tt class="py-lineno"> 768</tt>  <tt class="py-line"><tt id="link-380" class="py-name" targets="Function epydoc.docintrospecter.register_introspecter()=epydoc.docintrospecter-module.html#register_introspecter"><a title="epydoc.docintrospecter.register_introspecter" class="py-name" href="#" onclick="return doclink('link-380', 'register_introspecter', 'link-380');">register_introspecter</a></tt><tt class="py-op">(</tt><tt class="py-name">inspect</tt><tt class="py-o [...]
+<a name="L769"></a><tt class="py-lineno"> 769</tt>  <tt class="py-line"><tt id="link-382" class="py-name"><a title="epydoc.docintrospecter.register_introspecter" class="py-name" href="#" onclick="return doclink('link-382', 'register_introspecter', 'link-380');">register_introspecter</a></tt><tt class="py-op">(</tt><tt id="link-383" class="py-name"><a title="epydoc.docintrospecter.isclass" class="py-name" href="#" onclick="return doclink('link-383', 'isclass', 'link-307');">isclass</a></t [...]
+<a name="L770"></a><tt class="py-lineno"> 770</tt>  <tt class="py-line"><tt id="link-385" class="py-name"><a title="epydoc.docintrospecter.register_introspecter" class="py-name" href="#" onclick="return doclink('link-385', 'register_introspecter', 'link-380');">register_introspecter</a></tt><tt class="py-op">(</tt><tt class="py-name">inspect</tt><tt class="py-op">.</tt><tt class="py-name">isroutine</tt><tt class="py-op">,</tt> <tt id="link-386" class="py-name" targets="Function epydoc.do [...]
+<a name="L771"></a><tt class="py-lineno"> 771</tt>  <tt class="py-line"><tt id="link-387" class="py-name"><a title="epydoc.docintrospecter.register_introspecter" class="py-name" href="#" onclick="return doclink('link-387', 'register_introspecter', 'link-380');">register_introspecter</a></tt><tt class="py-op">(</tt><tt id="link-388" class="py-name" targets="Function epydoc.docintrospecter.is_property()=epydoc.docintrospecter-module.html#is_property"><a title="epydoc.docintrospecter.is_pro [...]
+<a name="L772"></a><tt class="py-lineno"> 772</tt>  <tt class="py-line"> </tt>
+<a name="L773"></a><tt class="py-lineno"> 773</tt>  <tt class="py-line"><tt class="py-comment"># Register getset_descriptor as a property</tt> </tt>
+<a name="L774"></a><tt class="py-lineno"> 774</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L775"></a><tt class="py-lineno"> 775</tt>  <tt class="py-line">    <tt class="py-keyword">import</tt> <tt class="py-name">array</tt> </tt>
+<a name="L776"></a><tt class="py-lineno"> 776</tt>  <tt class="py-line">    <tt class="py-name">getset_type</tt> <tt class="py-op">=</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">array</tt><tt class="py-op">.</tt><tt class="py-name">array</tt><tt class="py-op">.</tt><tt class="py-name">typecode</tt><tt class="py-op">)</tt> </tt>
+<a name="L777"></a><tt class="py-lineno"> 777</tt>  <tt class="py-line">    <tt class="py-keyword">del</tt> <tt class="py-name">array</tt> </tt>
+<a name="is_getset"></a><div id="is_getset-def"><a name="L778"></a><tt class="py-lineno"> 778</tt> <a class="py-toggle" href="#" id="is_getset-toggle" onclick="return toggle('is_getset');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docintrospecter-module.html#is_getset">is_getset</a><tt class="py-op">(</tt><tt class="py-param">v</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-name" [...]
+</div><a name="L779"></a><tt class="py-lineno"> 779</tt>  <tt class="py-line">    <tt id="link-391" class="py-name"><a title="epydoc.docintrospecter.register_introspecter" class="py-name" href="#" onclick="return doclink('link-391', 'register_introspecter', 'link-380');">register_introspecter</a></tt><tt class="py-op">(</tt><tt id="link-392" class="py-name" targets="Function epydoc.docintrospecter.is_getset()=epydoc.docintrospecter-module.html#is_getset"><a title="epydoc.docintrospecter. [...]
+<a name="L780"></a><tt class="py-lineno"> 780</tt>  <tt class="py-line"><tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt>
+<a name="L781"></a><tt class="py-lineno"> 781</tt>  <tt class="py-line">    <tt class="py-keyword">pass</tt> </tt>
+<a name="L782"></a><tt class="py-lineno"> 782</tt>  <tt class="py-line"> </tt>
+<a name="L783"></a><tt class="py-lineno"> 783</tt>  <tt class="py-line"><tt class="py-comment"># Register member_descriptor as a property</tt> </tt>
+<a name="L784"></a><tt class="py-lineno"> 784</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L785"></a><tt class="py-lineno"> 785</tt>  <tt class="py-line">    <tt class="py-keyword">import</tt> <tt class="py-name">datetime</tt> </tt>
+<a name="L786"></a><tt class="py-lineno"> 786</tt>  <tt class="py-line">    <tt class="py-name">member_type</tt> <tt class="py-op">=</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">datetime</tt><tt class="py-op">.</tt><tt class="py-name">timedelta</tt><tt class="py-op">.</tt><tt class="py-name">days</tt><tt class="py-op">)</tt> </tt>
+<a name="L787"></a><tt class="py-lineno"> 787</tt>  <tt class="py-line">    <tt class="py-keyword">del</tt> <tt class="py-name">datetime</tt> </tt>
+<a name="is_member"></a><div id="is_member-def"><a name="L788"></a><tt class="py-lineno"> 788</tt> <a class="py-toggle" href="#" id="is_member-toggle" onclick="return toggle('is_member');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docintrospecter-module.html#is_member">is_member</a><tt class="py-op">(</tt><tt class="py-param">v</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-name" [...]
+</div><a name="L789"></a><tt class="py-lineno"> 789</tt>  <tt class="py-line">    <tt id="link-395" class="py-name"><a title="epydoc.docintrospecter.register_introspecter" class="py-name" href="#" onclick="return doclink('link-395', 'register_introspecter', 'link-380');">register_introspecter</a></tt><tt class="py-op">(</tt><tt id="link-396" class="py-name" targets="Function epydoc.docintrospecter.is_member()=epydoc.docintrospecter-module.html#is_member"><a title="epydoc.docintrospecter. [...]
+<a name="L790"></a><tt class="py-lineno"> 790</tt>  <tt class="py-line"><tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt>
+<a name="L791"></a><tt class="py-lineno"> 791</tt>  <tt class="py-line">    <tt class="py-keyword">pass</tt> </tt>
+<a name="L792"></a><tt class="py-lineno"> 792</tt>  <tt class="py-line"> </tt>
+<a name="L793"></a><tt class="py-lineno"> 793</tt>  <tt class="py-line"><tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L794"></a><tt class="py-lineno"> 794</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Import support</tt> </tt>
+<a name="L795"></a><tt class="py-lineno"> 795</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L796"></a><tt class="py-lineno"> 796</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="get_value_from_filename"></a><div id="get_value_from_filename-def"><a name="L797"></a><tt class="py-lineno"> 797</tt> <a class="py-toggle" href="#" id="get_value_from_filename-toggle" onclick="return toggle('get_value_from_filename');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docintrospecter-module.html#get_value_from_filename">get_value_from_filename</a><tt class="py-op">(</tt><tt class="py-param">filename</tt><tt class="py-op [...]
+</div><div id="get_value_from_filename-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="get_value_from_filename-expanded"><a name="L798"></a><tt class="py-lineno"> 798</tt>  <tt class="py-line">    <tt class="py-comment"># Normalize the filename.</tt> </tt>
+<a name="L799"></a><tt class="py-lineno"> 799</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-398" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-398', 'filename', 'link-19');">filename</a></tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-399" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-3 [...]
+<a name="L800"></a><tt class="py-lineno"> 800</tt>  <tt class="py-line"> </tt>
+<a name="L801"></a><tt class="py-lineno"> 801</tt>  <tt class="py-line">    <tt class="py-comment"># Divide the filename into a base directory and a name.  (For</tt> </tt>
+<a name="L802"></a><tt class="py-lineno"> 802</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># packages, use the package's parent directory as the base, and</tt> </tt>
+<a name="L803"></a><tt class="py-lineno"> 803</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># the directory name as its name).</tt> </tt>
+<a name="L804"></a><tt class="py-lineno"> 804</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">basedir</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-402" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-402', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt id="link-403" class="py-name" [...]
+<a name="L805"></a><tt class="py-lineno"> 805</tt>  <tt class="py-line">    <tt id="link-404" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-404', 'name', 'link-18');">name</a></tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-405" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-405', 'path', 'link-0');">path</a></tt> [...]
+<a name="L806"></a><tt class="py-lineno"> 806</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-408" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-408', 'name', 'link-18');">name</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'__init__'</tt><tt class="py-op">:</tt> </tt>
+<a name="L807"></a><tt class="py-lineno"> 807</tt>  <tt class="py-line">        <tt class="py-name">basedir</tt><tt class="py-op">,</tt> <tt id="link-409" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-409', 'name', 'link-18');">name</a></tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-410" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick= [...]
+<a name="L808"></a><tt class="py-lineno"> 808</tt>  <tt class="py-line">    <tt id="link-411" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-411', 'name', 'link-18');">name</a></tt> <tt class="py-op">=</tt> <tt id="link-412" class="py-name"><a title="epydoc.apidoc.DottedName" class="py-name" href="#" onclick="return doclink('link-412', 'DottedName', 'link-22');">DottedName</a></tt><tt class="py-op">(</tt><tt id="link-413"  [...]
+<a name="L809"></a><tt class="py-lineno"> 809</tt>  <tt class="py-line"> </tt>
+<a name="L810"></a><tt class="py-lineno"> 810</tt>  <tt class="py-line">    <tt class="py-comment"># If the context wasn't provided, then check if the file is in a</tt> </tt>
+<a name="L811"></a><tt class="py-lineno"> 811</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># package directory.  If so, then update basedir & name to contain</tt> </tt>
+<a name="L812"></a><tt class="py-lineno"> 812</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># the topmost package's directory and the fully qualified name for</tt> </tt>
+<a name="L813"></a><tt class="py-lineno"> 813</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># this file.  (This update assume the default value of __path__</tt> </tt>
+<a name="L814"></a><tt class="py-lineno"> 814</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># for the parent packages; if the parent packages override their</tt> </tt>
+<a name="L815"></a><tt class="py-lineno"> 815</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># __path__s, then this can cause us not to find the value.)</tt> </tt>
+<a name="L816"></a><tt class="py-lineno"> 816</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">context</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L817"></a><tt class="py-lineno"> 817</tt>  <tt class="py-line">        <tt class="py-keyword">while</tt> <tt id="link-414" class="py-name" targets="Function epydoc.util.is_package_dir()=epydoc.util-module.html#is_package_dir"><a title="epydoc.util.is_package_dir" class="py-name" href="#" onclick="return doclink('link-414', 'is_package_dir', 'link-414');">is_package_dir</a></tt><tt class="py-op">(</tt><tt class="py-name">basedir</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L818"></a><tt class="py-lineno"> 818</tt>  <tt class="py-line">            <tt class="py-name">basedir</tt><tt class="py-op">,</tt> <tt class="py-name">pkg_name</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-415" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-415', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">( [...]
+<a name="L819"></a><tt class="py-lineno"> 819</tt>  <tt class="py-line">            <tt id="link-416" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-416', 'name', 'link-18');">name</a></tt> <tt class="py-op">=</tt> <tt id="link-417" class="py-name"><a title="epydoc.apidoc.DottedName" class="py-name" href="#" onclick="return doclink('link-417', 'DottedName', 'link-22');">DottedName</a></tt><tt class="py-op">(</tt><tt class= [...]
+<a name="L820"></a><tt class="py-lineno"> 820</tt>  <tt class="py-line">             </tt>
+<a name="L821"></a><tt class="py-lineno"> 821</tt>  <tt class="py-line">    <tt class="py-comment"># If a parent package was specified, then find the directory of</tt> </tt>
+<a name="L822"></a><tt class="py-lineno"> 822</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># the topmost package, and the fully qualified name for this file.</tt> </tt>
+<a name="L823"></a><tt class="py-lineno"> 823</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">context</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L824"></a><tt class="py-lineno"> 824</tt>  <tt class="py-line">        <tt class="py-comment"># Combine the name.</tt> </tt>
+<a name="L825"></a><tt class="py-lineno"> 825</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt id="link-419" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-419', 'name', 'link-18');">name</a></tt> <tt class="py-op">=</tt> <tt id="link-420" class="py-name"><a title="epydoc.apidoc.DottedName" class="py-name" href="#" onclick="return doclink('link-420', 'DottedName', 'link-22');">DottedName</a></tt><tt class= [...]
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-421', 'canonical_name', 'link-39');">canonical_name</a></tt><tt class="py-op">,</tt> <tt id="link-422" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-422', 'name', 'link-18');">name</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L826"></a><tt class="py-lineno"> 826</tt>  <tt class="py-line">        <tt class="py-comment"># Find the directory of the base package.</tt> </tt>
+<a name="L827"></a><tt class="py-lineno"> 827</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">while</tt> <tt class="py-name">context</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-423" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-423', 'UNKNOWN', 'link-51');">UNKNOWN</a></tt><tt clas [...]
+<a name="L828"></a><tt class="py-lineno"> 828</tt>  <tt class="py-line">            <tt class="py-name">pkg_dir</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-424" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-424', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-name">context</tt><tt class="py-op">.</ [...]
+<a name="L829"></a><tt class="py-lineno"> 829</tt>  <tt class="py-line">            <tt class="py-name">basedir</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-426" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-426', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-name">pkg_dir</tt><tt class="py-op">)</ [...]
+<a name="L830"></a><tt class="py-lineno"> 830</tt>  <tt class="py-line">            <tt class="py-name">context</tt> <tt class="py-op">=</tt> <tt class="py-name">context</tt><tt class="py-op">.</tt><tt id="link-427" class="py-name"><a title="epydoc.apidoc.ModuleDoc.package" class="py-name" href="#" onclick="return doclink('link-427', 'package', 'link-115');">package</a></tt> </tt>
+<a name="L831"></a><tt class="py-lineno"> 831</tt>  <tt class="py-line"> </tt>
+<a name="L832"></a><tt class="py-lineno"> 832</tt>  <tt class="py-line">    <tt class="py-comment"># Import the module.  (basedir is the directory of the module's</tt> </tt>
+<a name="L833"></a><tt class="py-lineno"> 833</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># topmost package, or its own directory if it's not in a package;</tt> </tt>
+<a name="L834"></a><tt class="py-lineno"> 834</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># and name is the fully qualified dotted name for the module.)</tt> </tt>
+<a name="L835"></a><tt class="py-lineno"> 835</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">old_sys_path</tt> <tt class="py-op">=</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt id="link-428" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-428', 'path', 'link-0');">path</a></tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt>
+<a name="L836"></a><tt class="py-lineno"> 836</tt>  <tt class="py-line">    <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L837"></a><tt class="py-lineno"> 837</tt>  <tt class="py-line">        <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt id="link-429" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-429', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt class="py-name">insert</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">basedir</tt><tt class="py-op">)</tt> </tt>
+<a name="L838"></a><tt class="py-lineno"> 838</tt>  <tt class="py-line">        <tt class="py-comment"># This will make sure that we get the module itself, even</tt> </tt>
+<a name="L839"></a><tt class="py-lineno"> 839</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># if it is shadowed by a variable.  (E.g., curses.wrapper):</tt> </tt>
+<a name="L840"></a><tt class="py-lineno"> 840</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt id="link-430" class="py-name" targets="Function epydoc.docintrospecter._import()=epydoc.docintrospecter-module.html#_import,Method epydoc.docwriter.html.HTMLWriter._import()=epydoc.docwriter.html.HTMLWriter-class.html#_import"><a title="epydoc.docintrospecter._import
+epydoc.docwriter.html.HTMLWriter._import" class="py-name" href="#" onclick="return doclink('link-430', '_import', 'link-430');">_import</a></tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt id="link-431" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-431', 'name', 'link-18');">name</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L841"></a><tt class="py-lineno"> 841</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt id="link-432" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-432', 'name', 'link-18');">name</a></tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">modules</tt><tt class="py-op"> [...]
+<a name="L842"></a><tt class="py-lineno"> 842</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">modules</tt><tt class="py-op">[</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt id="link-433" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-433', 'name', 'link-18');">name</a></tt><tt class="py-op">)</tt><tt class="py-op"> [...]
+<a name="L843"></a><tt class="py-lineno"> 843</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L844"></a><tt class="py-lineno"> 844</tt>  <tt class="py-line">            <tt class="py-comment"># Use this as a fallback -- it *shouldn't* ever be needed.</tt> </tt>
+<a name="L845"></a><tt class="py-lineno"> 845</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">return</tt> <tt id="link-434" class="py-name"><a title="epydoc.docintrospecter.get_value_from_name" class="py-name" href="#" onclick="return doclink('link-434', 'get_value_from_name', 'link-21');">get_value_from_name</a></tt><tt class="py-op">(</tt><tt id="link-435" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick [...]
+<a name="L846"></a><tt class="py-lineno"> 846</tt>  <tt class="py-line">    <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt>
+<a name="L847"></a><tt class="py-lineno"> 847</tt>  <tt class="py-line">        <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt id="link-436" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-436', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt class="py-name">old_sys_path</tt> </tt>
+</div><a name="L848"></a><tt class="py-lineno"> 848</tt>  <tt class="py-line"> </tt>
+<a name="get_value_from_scriptname"></a><div id="get_value_from_scriptname-def"><a name="L849"></a><tt class="py-lineno"> 849</tt> <a class="py-toggle" href="#" id="get_value_from_scriptname-toggle" onclick="return toggle('get_value_from_scriptname');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docintrospecter-module.html#get_value_from_scriptname">get_value_from_scriptname</a><tt class="py-op">(</tt><tt class="py-param">filename</tt><tt  [...]
+</div><div id="get_value_from_scriptname-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="get_value_from_scriptname-expanded"><a name="L850"></a><tt class="py-lineno"> 850</tt>  <tt class="py-line">    <tt id="link-437" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-437', 'name', 'link-18');">name</a></tt> <tt class="py-op">=</tt> <tt id="link-438" class="py-name"><a title="epydoc.util.munge_script_ [...]
+<a name="L851"></a><tt class="py-lineno"> 851</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-440" class="py-name"><a title="epydoc.docintrospecter._import
+epydoc.docwriter.html.HTMLWriter._import" class="py-name" href="#" onclick="return doclink('link-440', '_import', 'link-430');">_import</a></tt><tt class="py-op">(</tt><tt id="link-441" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-441', 'name', 'link-18');">name</a></tt><tt class="py-op">,</tt> <tt id="link-442" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink(' [...]
+</div><a name="L852"></a><tt class="py-lineno"> 852</tt>  <tt class="py-line"> </tt>
+<a name="get_value_from_name"></a><div id="get_value_from_name-def"><a name="L853"></a><tt class="py-lineno"> 853</tt> <a class="py-toggle" href="#" id="get_value_from_name-toggle" onclick="return toggle('get_value_from_name');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docintrospecter-module.html#get_value_from_name">get_value_from_name</a><tt class="py-op">(</tt><tt class="py-param">name</tt><tt class="py-op">,</tt> <tt class="py-param [...]
+</div><div id="get_value_from_name-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="get_value_from_name-expanded"><a name="L854"></a><tt class="py-lineno"> 854</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L855"></a><tt class="py-lineno"> 855</tt>  <tt class="py-line"><tt class="py-docstring">    Given a name, return the corresponding value.</tt> </tt>
+<a name="L856"></a><tt class="py-lineno"> 856</tt>  <tt class="py-line"><tt class="py-docstring">    </tt> </tt>
+<a name="L857"></a><tt class="py-lineno"> 857</tt>  <tt class="py-line"><tt class="py-docstring">    @param globs: A namespace to check for the value, if there is no</tt> </tt>
+<a name="L858"></a><tt class="py-lineno"> 858</tt>  <tt class="py-line"><tt class="py-docstring">        module containing the named value.  Defaults to __builtin__.</tt> </tt>
+<a name="L859"></a><tt class="py-lineno"> 859</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L860"></a><tt class="py-lineno"> 860</tt>  <tt class="py-line">    <tt id="link-443" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-443', 'name', 'link-18');">name</a></tt> <tt class="py-op">=</tt> <tt id="link-444" class="py-name"><a title="epydoc.apidoc.DottedName" class="py-name" href="#" onclick="return doclink('link-444', 'DottedName', 'link-22');">DottedName</a></tt><tt class="py-op">(</tt><tt id="link-445"  [...]
+<a name="L861"></a><tt class="py-lineno"> 861</tt>  <tt class="py-line"> </tt>
+<a name="L862"></a><tt class="py-lineno"> 862</tt>  <tt class="py-line">    <tt class="py-comment"># Import the topmost module/package.  If we fail, then check if</tt> </tt>
+<a name="L863"></a><tt class="py-lineno"> 863</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># the requested name refers to a builtin.</tt> </tt>
+<a name="L864"></a><tt class="py-lineno"> 864</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L865"></a><tt class="py-lineno"> 865</tt>  <tt class="py-line">        <tt class="py-name">module</tt> <tt class="py-op">=</tt> <tt id="link-446" class="py-name"><a title="epydoc.docintrospecter._import
+epydoc.docwriter.html.HTMLWriter._import" class="py-name" href="#" onclick="return doclink('link-446', '_import', 'link-430');">_import</a></tt><tt class="py-op">(</tt><tt id="link-447" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-447', 'name', 'link-18');">name</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L866"></a><tt class="py-lineno"> 866</tt>  <tt class="py-line">    <tt class="py-keyword">except</tt> <tt class="py-name">ImportError</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
+<a name="L867"></a><tt class="py-lineno"> 867</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">globs</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> <tt class="py-name">globs</tt> <tt class="py-op">=</tt> <tt class="py-name">__builtin__</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt> </tt>
+<a name="L868"></a><tt class="py-lineno"> 868</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-448" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-448', 'name', 'link-18');">name</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-keyword">in</tt> <tt class="py-name">globs</tt><tt class="py-op">:</tt> </tt>
+<a name="L869"></a><tt class="py-lineno"> 869</tt>  <tt class="py-line">            <tt class="py-keyword">try</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt id="link-449" class="py-name" targets="Function epydoc.docintrospecter._lookup()=epydoc.docintrospecter-module.html#_lookup"><a title="epydoc.docintrospecter._lookup" class="py-name" href="#" onclick="return doclink('link-449', '_lookup', 'link-449');">_lookup</a></tt><tt class="py-op">(</tt><tt class="py-name"> [...]
+<a name="L870"></a><tt class="py-lineno"> 870</tt>  <tt class="py-line">            <tt class="py-keyword">except</tt><tt class="py-op">:</tt> <tt class="py-keyword">raise</tt> <tt class="py-name">e</tt> </tt>
+<a name="L871"></a><tt class="py-lineno"> 871</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L872"></a><tt class="py-lineno"> 872</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> </tt>
+<a name="L873"></a><tt class="py-lineno"> 873</tt>  <tt class="py-line"> </tt>
+<a name="L874"></a><tt class="py-lineno"> 874</tt>  <tt class="py-line">    <tt class="py-comment"># Find the requested value in the module/package or its submodules.</tt> </tt>
+<a name="L875"></a><tt class="py-lineno"> 875</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-452" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-452', 'n [...]
+<a name="L876"></a><tt class="py-lineno"> 876</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt id="link-453" class="py-name"><a title="epydoc.docintrospecter._lookup" class="py-name" href="#" onclick="return doclink('link-453', '_lookup', 'link-449');">_lookup</a></tt><tt class="py-op">(</tt><tt class="py-name">module</tt><tt class="py-op">,</tt> <tt id="link-454" class="py-name"><a title="epydoc.apidoc.Varia [...]
+<a name="L877"></a><tt class="py-lineno"> 877</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">ImportError</tt><tt class="py-op">:</tt> <tt class="py-keyword">pass</tt> </tt>
+<a name="L878"></a><tt class="py-lineno"> 878</tt>  <tt class="py-line">        <tt class="py-name">module</tt> <tt class="py-op">=</tt> <tt id="link-455" class="py-name"><a title="epydoc.docintrospecter._import
+epydoc.docwriter.html.HTMLWriter._import" class="py-name" href="#" onclick="return doclink('link-455', '_import', 'link-430');">_import</a></tt><tt class="py-op">(</tt><tt class="py-string">'.'</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt id="link-456" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-456', 'name', 'link-18');">name</a></tt><tt class="py-op">[</tt><tt class="py-op">:</t [...]
+<a name="L879"></a><tt class="py-lineno"> 879</tt>  <tt class="py-line">        <tt class="py-name">module</tt> <tt class="py-op">=</tt> <tt id="link-457" class="py-name"><a title="epydoc.docintrospecter._lookup" class="py-name" href="#" onclick="return doclink('link-457', '_lookup', 'link-449');">_lookup</a></tt><tt class="py-op">(</tt><tt class="py-name">module</tt><tt class="py-op">,</tt> <tt id="link-458" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href= [...]
+<a name="L880"></a><tt class="py-lineno"> 880</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">module</tt> </tt>
+</div><a name="L881"></a><tt class="py-lineno"> 881</tt>  <tt class="py-line"> </tt>
+<a name="_lookup"></a><div id="_lookup-def"><a name="L882"></a><tt class="py-lineno"> 882</tt> <a class="py-toggle" href="#" id="_lookup-toggle" onclick="return toggle('_lookup');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docintrospecter-module.html#_lookup">_lookup</a><tt class="py-op">(</tt><tt class="py-param">module</tt><tt class="py-op">,</tt> <tt class="py-param">name</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_lookup-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_lookup-expanded"><a name="L883"></a><tt class="py-lineno"> 883</tt>  <tt class="py-line">    <tt class="py-name">val</tt> <tt class="py-op">=</tt> <tt class="py-name">module</tt> </tt>
+<a name="L884"></a><tt class="py-lineno"> 884</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">i</tt><tt class="py-op">,</tt> <tt class="py-name">identifier</tt> <tt class="py-keyword">in</tt> <tt class="py-name">enumerate</tt><tt class="py-op">(</tt><tt id="link-459" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-459', 'name', 'link-18');">name</a></tt><tt class="py-op">)</tt><tt class="py [...]
+<a name="L885"></a><tt class="py-lineno"> 885</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> <tt class="py-name">val</tt> <tt class="py-op">=</tt> <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">,</tt> <tt class="py-name">identifier</tt><tt class="py-op">)</tt> </tt>
+<a name="L886"></a><tt class="py-lineno"> 886</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">AttributeError</tt><tt class="py-op">:</tt> </tt>
+<a name="L887"></a><tt class="py-lineno"> 887</tt>  <tt class="py-line">            <tt class="py-name">exc_msg</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">'no variable named %s in %s'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L888"></a><tt class="py-lineno"> 888</tt>  <tt class="py-line">                       <tt class="py-op">(</tt><tt class="py-name">identifier</tt><tt class="py-op">,</tt> <tt class="py-string">'.'</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt id="link-460" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-460', 'name', 'link-18');">name</a></tt><tt class="py-op">[</tt><tt class=" [...]
+<a name="L889"></a><tt class="py-lineno"> 889</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ImportError</tt><tt class="py-op">(</tt><tt class="py-name">exc_msg</tt><tt class="py-op">)</tt> </tt>
+<a name="L890"></a><tt class="py-lineno"> 890</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">val</tt> </tt>
+</div><a name="L891"></a><tt class="py-lineno"> 891</tt>  <tt class="py-line">             </tt>
+<a name="_import"></a><div id="_import-def"><a name="L892"></a><tt class="py-lineno"> 892</tt> <a class="py-toggle" href="#" id="_import-toggle" onclick="return toggle('_import');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docintrospecter-module.html#_import">_import</a><tt class="py-op">(</tt><tt class="py-param">name</tt><tt class="py-op">,</tt> <tt class="py-param">filename</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt  [...]
+</div><div id="_import-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_import-expanded"><a name="L893"></a><tt class="py-lineno"> 893</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L894"></a><tt class="py-lineno"> 894</tt>  <tt class="py-line"><tt class="py-docstring">    Run the given callable in a 'sandboxed' environment.</tt> </tt>
+<a name="L895"></a><tt class="py-lineno"> 895</tt>  <tt class="py-line"><tt class="py-docstring">    Currently, this includes saving and restoring the contents of</tt> </tt>
+<a name="L896"></a><tt class="py-lineno"> 896</tt>  <tt class="py-line"><tt class="py-docstring">    sys and __builtins__; and suppressing stdin, stdout, and stderr.</tt> </tt>
+<a name="L897"></a><tt class="py-lineno"> 897</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L898"></a><tt class="py-lineno"> 898</tt>  <tt class="py-line">    <tt class="py-comment"># Note that we just do a shallow copy of sys.  In particular,</tt> </tt>
+<a name="L899"></a><tt class="py-lineno"> 899</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># any changes made to sys.modules will be kept.  But we do</tt> </tt>
+<a name="L900"></a><tt class="py-lineno"> 900</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># explicitly store sys.path.</tt> </tt>
+<a name="L901"></a><tt class="py-lineno"> 901</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">old_sys</tt> <tt class="py-op">=</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">.</tt><tt class="py-name">copy</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L902"></a><tt class="py-lineno"> 902</tt>  <tt class="py-line">    <tt class="py-name">old_sys_path</tt> <tt class="py-op">=</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt id="link-461" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-461', 'path', 'link-0');">path</a></tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt>
+<a name="L903"></a><tt class="py-lineno"> 903</tt>  <tt class="py-line">    <tt class="py-name">old_builtins</tt> <tt class="py-op">=</tt> <tt class="py-name">__builtin__</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">.</tt><tt class="py-name">copy</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L904"></a><tt class="py-lineno"> 904</tt>  <tt class="py-line"> </tt>
+<a name="L905"></a><tt class="py-lineno"> 905</tt>  <tt class="py-line">    <tt class="py-comment"># Add the current directory to sys.path, in case they're trying to</tt> </tt>
+<a name="L906"></a><tt class="py-lineno"> 906</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># import a module by name that resides in the current directory.</tt> </tt>
+<a name="L907"></a><tt class="py-lineno"> 907</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># But add it to the end -- otherwise, the explicit directory added</tt> </tt>
+<a name="L908"></a><tt class="py-lineno"> 908</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># in get_value_from_filename might get overwritten</tt> </tt>
+<a name="L909"></a><tt class="py-lineno"> 909</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt id="link-462" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-462', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">''</tt><tt class="py-op">)</tt> </tt>
+<a name="L910"></a><tt class="py-lineno"> 910</tt>  <tt class="py-line"> </tt>
+<a name="L911"></a><tt class="py-lineno"> 911</tt>  <tt class="py-line">    <tt class="py-comment"># Suppress input and output.  (These get restored when we restore</tt> </tt>
+<a name="L912"></a><tt class="py-lineno"> 912</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># sys to old_sys).  </tt> </tt>
+<a name="L913"></a><tt class="py-lineno"> 913</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">stdin</tt> <tt class="py-op">=</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">stdout</tt> <tt class="py-op">=</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">stderr</tt> <tt class="py-op">=</tt> <tt id="link-463" class="py-name" targets="Variable epydoc.doc [...]
+<a name="L914"></a><tt class="py-lineno"> 914</tt>  <tt class="py-line">    <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">__stdin__</tt> <tt class="py-op">=</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">__stdout__</tt> <tt class="py-op">=</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">__stderr__</tt> <tt class="py-op">=</tt> <tt id="link-464" class="py-name"><a title="epydoc.docintrospecter._dev_null"  [...]
+<a name="L915"></a><tt class="py-lineno"> 915</tt>  <tt class="py-line"> </tt>
+<a name="L916"></a><tt class="py-lineno"> 916</tt>  <tt class="py-line">    <tt class="py-comment"># Remove any command-line arguments</tt> </tt>
+<a name="L917"></a><tt class="py-lineno"> 917</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">argv</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-string">'(imported)'</tt><tt class="py-op">]</tt> </tt>
+<a name="L918"></a><tt class="py-lineno"> 918</tt>  <tt class="py-line"> </tt>
+<a name="L919"></a><tt class="py-lineno"> 919</tt>  <tt class="py-line">    <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L920"></a><tt class="py-lineno"> 920</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L921"></a><tt class="py-lineno"> 921</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt id="link-465" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-465', 'filename', 'link-19');">filename</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L922"></a><tt class="py-lineno"> 922</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">__import__</tt><tt class="py-op">(</tt><tt id="link-466" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-466', 'name', 'link-18');">name</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L923"></a><tt class="py-lineno"> 923</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L924"></a><tt class="py-lineno"> 924</tt>  <tt class="py-line">                <tt class="py-comment"># For importing scripts:</tt> </tt>
+<a name="L925"></a><tt class="py-lineno"> 925</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-keyword">return</tt> <tt class="py-name">imp</tt><tt class="py-op">.</tt><tt class="py-name">load_source</tt><tt class="py-op">(</tt><tt id="link-467" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-467', 'name', 'link-18');">name</a></tt><tt class="py-op">,</tt> <tt id="link-468" class="py-name" [...]
+<a name="L926"></a><tt class="py-lineno"> 926</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">KeyboardInterrupt</tt><tt class="py-op">:</tt> <tt class="py-keyword">raise</tt> </tt>
+<a name="L927"></a><tt class="py-lineno"> 927</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt>
+<a name="L928"></a><tt class="py-lineno"> 928</tt>  <tt class="py-line">            <tt class="py-name">exc_typ</tt><tt class="py-op">,</tt> <tt class="py-name">exc_val</tt><tt class="py-op">,</tt> <tt class="py-name">exc_tb</tt> <tt class="py-op">=</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">exc_info</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L929"></a><tt class="py-lineno"> 929</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">exc_val</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L930"></a><tt class="py-lineno"> 930</tt>  <tt class="py-line">                <tt class="py-name">estr</tt> <tt class="py-op">=</tt> <tt class="py-string">'%s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">exc_typ</tt><tt class="py-op">,</tt><tt class="py-op">)</tt> </tt>
+<a name="L931"></a><tt class="py-lineno"> 931</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L932"></a><tt class="py-lineno"> 932</tt>  <tt class="py-line">                <tt class="py-name">estr</tt> <tt class="py-op">=</tt> <tt class="py-string">'%s: %s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">exc_typ</tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt><tt class="py-op">,</tt> <tt class="py-name">exc_val</tt><tt class="py-op">)</tt> </tt>
+<a name="L933"></a><tt class="py-lineno"> 933</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">exc_tb</tt><tt class="py-op">.</tt><tt class="py-name">tb_next</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L934"></a><tt class="py-lineno"> 934</tt>  <tt class="py-line">                <tt class="py-name">estr</tt> <tt class="py-op">+=</tt> <tt class="py-string">' (line %d)'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">exc_tb</tt><tt class="py-op">.</tt><tt class="py-name">tb_next</tt><tt class="py-op">.</tt><tt class="py-name">tb_lineno</tt><tt class="py-op">,</tt><tt class="py-op">)</tt> </tt>
+<a name="L935"></a><tt class="py-lineno"> 935</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ImportError</tt><tt class="py-op">(</tt><tt class="py-name">estr</tt><tt class="py-op">)</tt> </tt>
+<a name="L936"></a><tt class="py-lineno"> 936</tt>  <tt class="py-line">    <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt>
+<a name="L937"></a><tt class="py-lineno"> 937</tt>  <tt class="py-line">        <tt class="py-comment"># Restore the important values that we saved.</tt> </tt>
+<a name="L938"></a><tt class="py-lineno"> 938</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">__builtin__</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">.</tt><tt id="link-469" class="py-name"><a title="epydoc.docwriter.xlink.DocUrlGenerator.clear
+epydoc.gui.GUILogger.clear" class="py-name" href="#" onclick="return doclink('link-469', 'clear', 'link-14');">clear</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L939"></a><tt class="py-lineno"> 939</tt>  <tt class="py-line">        <tt class="py-name">__builtin__</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">.</tt><tt class="py-name">update</tt><tt class="py-op">(</tt><tt class="py-name">old_builtins</tt><tt class="py-op">)</tt> </tt>
+<a name="L940"></a><tt class="py-lineno"> 940</tt>  <tt class="py-line">        <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">.</tt><tt id="link-470" class="py-name"><a title="epydoc.docwriter.xlink.DocUrlGenerator.clear
+epydoc.gui.GUILogger.clear" class="py-name" href="#" onclick="return doclink('link-470', 'clear', 'link-14');">clear</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L941"></a><tt class="py-lineno"> 941</tt>  <tt class="py-line">        <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">.</tt><tt class="py-name">update</tt><tt class="py-op">(</tt><tt class="py-name">old_sys</tt><tt class="py-op">)</tt> </tt>
+<a name="L942"></a><tt class="py-lineno"> 942</tt>  <tt class="py-line">        <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt id="link-471" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-471', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt class="py-name">old_sys_path</tt> </tt>
+</div><a name="L943"></a><tt class="py-lineno"> 943</tt>  <tt class="py-line">         </tt>
+<a name="introspect_docstring_lineno"></a><div id="introspect_docstring_lineno-def"><a name="L944"></a><tt class="py-lineno"> 944</tt> <a class="py-toggle" href="#" id="introspect_docstring_lineno-toggle" onclick="return toggle('introspect_docstring_lineno');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docintrospecter-module.html#introspect_docstring_lineno">introspect_docstring_lineno</a><tt class="py-op">(</tt><tt class="py-param">api_d [...]
+</div><div id="introspect_docstring_lineno-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="introspect_docstring_lineno-expanded"><a name="L945"></a><tt class="py-lineno"> 945</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L946"></a><tt class="py-lineno"> 946</tt>  <tt class="py-line"><tt class="py-docstring">    Try to determine the line number on which the given item's</tt> </tt>
+<a name="L947"></a><tt class="py-lineno"> 947</tt>  <tt class="py-line"><tt class="py-docstring">    docstring begins.  Return the line number, or C{None} if the line</tt> </tt>
+<a name="L948"></a><tt class="py-lineno"> 948</tt>  <tt class="py-line"><tt class="py-docstring">    number can't be determined.  The line number of the first line in</tt> </tt>
+<a name="L949"></a><tt class="py-lineno"> 949</tt>  <tt class="py-line"><tt class="py-docstring">    the file is 1.</tt> </tt>
+<a name="L950"></a><tt class="py-lineno"> 950</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L951"></a><tt class="py-lineno"> 951</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-472" class="py-name" targets="Variable epydoc.apidoc.APIDoc.docstring_lineno=epydoc.apidoc.APIDoc-class.html#docstring_lineno"><a title="epydoc.apidoc.APIDoc.docstring_lineno" class="py-name" href="#" onclick="return doclink('link-472', 'docstring_lineno', 'link-472');">docstring_lineno</a></tt> <tt class="py-keywo [...]
+<a name="L952"></a><tt class="py-lineno"> 952</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-474" class="py-name"><a title="epydoc.apidoc.APIDoc.docstring_lineno" class="py-name" href="#" onclick="return doclink('link-474', 'docstring_lineno', 'link-472');">docstring_lineno</a></tt> </tt>
+<a name="L953"></a><tt class="py-lineno"> 953</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt id="link-475" class="py-name"><a title="epydoc.apidoc.ValueDoc" class="py-name" href="#" onclick="return doclink('link-475', 'ValueDoc', 'link-79');">ValueDoc</a></tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-name">api_doc</tt><tt class [...]
+<a name="L954"></a><tt class="py-lineno"> 954</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L955"></a><tt class="py-lineno"> 955</tt>  <tt class="py-line">            <tt class="py-name">lines</tt><tt class="py-op">,</tt> <tt id="link-478" class="py-name"><a title="epydoc.apidoc.RoutineDoc.lineno" class="py-name" href="#" onclick="return doclink('link-478', 'lineno', 'link-215');">lineno</a></tt> <tt class="py-op">=</tt> <tt class="py-name">inspect</tt><tt class="py-op">.</tt><tt class="py-name">findsource</tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt [...]
+<a name="L956"></a><tt class="py-lineno"> 956</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt id="link-480" class="py-name"><a title="epydoc.apidoc.ModuleDoc" class="py-name" href="#" onclick="return doclink('link-480', 'ModuleDoc', 'link-96');">ModuleDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt id [...]
+<a name="L957"></a><tt class="py-lineno"> 957</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt id="link-482" class="py-name"><a title="epydoc.apidoc.RoutineDoc.lineno" class="py-name" href="#" onclick="return doclink('link-482', 'lineno', 'link-215');">lineno</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt id="link-483" class="py-name"><a title="epydoc.apidoc.RoutineDoc.lineno" class="py-name" href="#" onclick="re [...]
+<a name="L958"></a><tt class="py-lineno"> 958</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">lines</tt><tt class="py-op">[</tt><tt id="link-484" class="py-name"><a title="epydoc.apidoc.RoutineDoc.lineno" class="py-name" href="#" onclick="return doclink('link-484', 'lineno', 'link-215');">lineno</a></tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'#'</tt><tt class= [...]
+<a name="L959"></a><tt class="py-lineno"> 959</tt>  <tt class="py-line">                    <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-485" class="py-name"><a title="epydoc.apidoc.APIDoc.docstring_lineno" class="py-name" href="#" onclick="return doclink('link-485', 'docstring_lineno', 'link-472');">docstring_lineno</a></tt> <tt class="py-op">=</tt> <tt id="link-486" class="py-name"><a title="epydoc.apidoc.RoutineDoc.lineno" class="py-name" href="#" onclick="retu [...]
+<a name="L960"></a><tt class="py-lineno"> 960</tt>  <tt class="py-line">                    <tt class="py-keyword">return</tt> <tt id="link-487" class="py-name"><a title="epydoc.apidoc.RoutineDoc.lineno" class="py-name" href="#" onclick="return doclink('link-487', 'lineno', 'link-215');">lineno</a></tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt> </tt>
+<a name="L961"></a><tt class="py-lineno"> 961</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">IOError</tt><tt class="py-op">:</tt> <tt class="py-keyword">pass</tt> </tt>
+<a name="L962"></a><tt class="py-lineno"> 962</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">TypeError</tt><tt class="py-op">:</tt> <tt class="py-keyword">pass</tt> </tt>
+<a name="L963"></a><tt class="py-lineno"> 963</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">IndexError</tt><tt class="py-op">:</tt> </tt>
+<a name="L964"></a><tt class="py-lineno"> 964</tt>  <tt class="py-line">            <tt id="link-488" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-488', 'log', 'link-4');">log</a></tt><tt class="py-op">.</tt><tt id="link-489" class="py-name"><a title="epydoc.checker.DocChecker.warning
+epydoc.log.warning" class="py-name" href="#" onclick="return doclink('link-489', 'warning', 'link-67');">warning</a></tt><tt class="py-op">(</tt><tt class="py-string">'inspect.findsource(%s) raised IndexError'</tt> </tt>
+<a name="L965"></a><tt class="py-lineno"> 965</tt>  <tt class="py-line">                        <tt class="py-op">%</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-490" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-490', 'canonical_name', 'link-39');">canonical_name</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L966"></a><tt class="py-lineno"> 966</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
+</div><a name="L967"></a><tt class="py-lineno"> 967</tt>  <tt class="py-line"> </tt>
+<a name="_DevNull"></a><div id="_DevNull-def"><a name="L968"></a><tt class="py-lineno"> 968</tt> <a class="py-toggle" href="#" id="_DevNull-toggle" onclick="return toggle('_DevNull');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="epydoc.docintrospecter._DevNull-class.html">_DevNull</a><tt class="py-op">:</tt> </tt>
+</div><div id="_DevNull-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_DevNull-expanded"><a name="L969"></a><tt class="py-lineno"> 969</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L970"></a><tt class="py-lineno"> 970</tt>  <tt class="py-line"><tt class="py-docstring">    A "file-like" object that discards anything that is written and</tt> </tt>
+<a name="L971"></a><tt class="py-lineno"> 971</tt>  <tt class="py-line"><tt class="py-docstring">    always reports end-of-file when read.  C{_DevNull} is used by</tt> </tt>
+<a name="L972"></a><tt class="py-lineno"> 972</tt>  <tt class="py-line"><tt class="py-docstring">    L{_import()} to discard output when importing modules; and to</tt> </tt>
+<a name="L973"></a><tt class="py-lineno"> 973</tt>  <tt class="py-line"><tt class="py-docstring">    ensure that stdin appears closed.</tt> </tt>
+<a name="L974"></a><tt class="py-lineno"> 974</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="_DevNull.__init__"></a><div id="_DevNull.__init__-def"><a name="L975"></a><tt class="py-lineno"> 975</tt> <a class="py-toggle" href="#" id="_DevNull.__init__-toggle" onclick="return toggle('_DevNull.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docintrospecter._DevNull-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_DevNull.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_DevNull.__init__-expanded"><a name="L976"></a><tt class="py-lineno"> 976</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">closed</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L977"></a><tt class="py-lineno"> 977</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mode</tt> <tt class="py-op">=</tt> <tt class="py-string">'r+'</tt> </tt>
+<a name="L978"></a><tt class="py-lineno"> 978</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">softspace</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L979"></a><tt class="py-lineno"> 979</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-491" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-491', 'name', 'link-18');">name</a></tt><tt class="py-op">=</tt><tt class="py-string">'</dev/null>'</tt> </tt>
+</div><a name="_DevNull.close"></a><div id="_DevNull.close-def"><a name="L980"></a><tt class="py-lineno"> 980</tt> <a class="py-toggle" href="#" id="_DevNull.close-toggle" onclick="return toggle('_DevNull.close');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docintrospecter._DevNull-class.html#close">close</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-keyword">pa [...]
+</div><a name="_DevNull.flush"></a><div id="_DevNull.flush-def"><a name="L981"></a><tt class="py-lineno"> 981</tt> <a class="py-toggle" href="#" id="_DevNull.flush-toggle" onclick="return toggle('_DevNull.flush');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docintrospecter._DevNull-class.html#flush">flush</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-keyword">pa [...]
+</div><a name="_DevNull.read"></a><div id="_DevNull.read-def"><a name="L982"></a><tt class="py-lineno"> 982</tt> <a class="py-toggle" href="#" id="_DevNull.read-toggle" onclick="return toggle('_DevNull.read');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docintrospecter._DevNull-class.html#read">read</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">size</tt><tt class="py-op">=</tt>< [...]
+</div><a name="_DevNull.readline"></a><div id="_DevNull.readline-def"><a name="L983"></a><tt class="py-lineno"> 983</tt> <a class="py-toggle" href="#" id="_DevNull.readline-toggle" onclick="return toggle('_DevNull.readline');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docintrospecter._DevNull-class.html#readline">readline</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">size</tt>< [...]
+</div><a name="_DevNull.readlines"></a><div id="_DevNull.readlines-def"><a name="L984"></a><tt class="py-lineno"> 984</tt> <a class="py-toggle" href="#" id="_DevNull.readlines-toggle" onclick="return toggle('_DevNull.readlines');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docintrospecter._DevNull-class.html#readlines">readlines</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">size [...]
+</div><a name="_DevNull.seek"></a><div id="_DevNull.seek-def"><a name="L985"></a><tt class="py-lineno"> 985</tt> <a class="py-toggle" href="#" id="_DevNull.seek-toggle" onclick="return toggle('_DevNull.seek');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docintrospecter._DevNull-class.html#seek">seek</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">offset</tt><tt class="py-op">,</tt [...]
+</div><a name="_DevNull.tell"></a><div id="_DevNull.tell-def"><a name="L986"></a><tt class="py-lineno"> 986</tt> <a class="py-toggle" href="#" id="_DevNull.tell-toggle" onclick="return toggle('_DevNull.tell');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docintrospecter._DevNull-class.html#tell">tell</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</ [...]
+</div><a name="_DevNull.truncate"></a><div id="_DevNull.truncate-def"><a name="L987"></a><tt class="py-lineno"> 987</tt> <a class="py-toggle" href="#" id="_DevNull.truncate-toggle" onclick="return toggle('_DevNull.truncate');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docintrospecter._DevNull-class.html#truncate">truncate</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">size</tt>< [...]
+</div><a name="_DevNull.write"></a><div id="_DevNull.write-def"><a name="L988"></a><tt class="py-lineno"> 988</tt> <a class="py-toggle" href="#" id="_DevNull.write-toggle" onclick="return toggle('_DevNull.write');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docintrospecter._DevNull-class.html#write">write</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">str</tt><tt class="py-op">)< [...]
+</div><a name="_DevNull.writelines"></a><div id="_DevNull.writelines-def"><a name="L989"></a><tt class="py-lineno"> 989</tt> <a class="py-toggle" href="#" id="_DevNull.writelines-toggle" onclick="return toggle('_DevNull.writelines');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docintrospecter._DevNull-class.html#writelines">writelines</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param [...]
+</div><a name="L990"></a><tt class="py-lineno"> 990</tt>  <tt class="py-line">    <tt class="py-name">xreadlines</tt> <tt class="py-op">=</tt> <tt id="link-492" class="py-name" targets="Method epydoc.docintrospecter._DevNull.readlines()=epydoc.docintrospecter._DevNull-class.html#readlines"><a title="epydoc.docintrospecter._DevNull.readlines" class="py-name" href="#" onclick="return doclink('link-492', 'readlines', 'link-492');">readlines</a></tt> </tt>
+</div><a name="L991"></a><tt class="py-lineno"> 991</tt>  <tt class="py-line"><tt id="link-493" class="py-name"><a title="epydoc.docintrospecter._dev_null" class="py-name" href="#" onclick="return doclink('link-493', '_dev_null', 'link-463');">_dev_null</a></tt> <tt class="py-op">=</tt> <tt id="link-494" class="py-name" targets="Class epydoc.docintrospecter._DevNull=epydoc.docintrospecter._DevNull-class.html"><a title="epydoc.docintrospecter._DevNull" class="py-name" href="#" onclick="re [...]
+<a name="L992"></a><tt class="py-lineno"> 992</tt>  <tt class="py-line">     </tt>
+<a name="L993"></a><tt class="py-lineno"> 993</tt>  <tt class="py-line"><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L994"></a><tt class="py-lineno"> 994</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## Zope InterfaceClass</tt> </tt>
+<a name="L995"></a><tt class="py-lineno"> 995</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L996"></a><tt class="py-lineno"> 996</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L997"></a><tt class="py-lineno"> 997</tt>  <tt class="py-line"><tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L998"></a><tt class="py-lineno"> 998</tt>  <tt class="py-line">    <tt class="py-keyword">from</tt> <tt class="py-name">zope</tt><tt class="py-op">.</tt><tt class="py-name">interface</tt><tt class="py-op">.</tt><tt class="py-name">interface</tt> <tt class="py-keyword">import</tt> <tt class="py-name">InterfaceClass</tt> <tt class="py-name">as</tt> <tt class="py-name">_ZopeInterfaceClass</tt> </tt>
+<a name="L999"></a><tt class="py-lineno"> 999</tt>  <tt class="py-line">    <tt id="link-495" class="py-name" targets="Function epydoc.docintrospecter.register_class_type()=epydoc.docintrospecter-module.html#register_class_type"><a title="epydoc.docintrospecter.register_class_type" class="py-name" href="#" onclick="return doclink('link-495', 'register_class_type', 'link-495');">register_class_type</a></tt><tt class="py-op">(</tt><tt class="py-name">_ZopeInterfaceClass</tt><tt class="py-o [...]
+<a name="L1000"></a><tt class="py-lineno">1000</tt>  <tt class="py-line"><tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt>
+<a name="L1001"></a><tt class="py-lineno">1001</tt>  <tt class="py-line">    <tt class="py-keyword">pass</tt> </tt>
+<a name="L1002"></a><tt class="py-lineno">1002</tt>  <tt class="py-line"> </tt>
+<a name="L1003"></a><tt class="py-lineno">1003</tt>  <tt class="py-line"><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L1004"></a><tt class="py-lineno">1004</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## Zope Extension classes</tt> </tt>
+<a name="L1005"></a><tt class="py-lineno">1005</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L1006"></a><tt class="py-lineno">1006</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L1007"></a><tt class="py-lineno">1007</tt>  <tt class="py-line"><tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L1008"></a><tt class="py-lineno">1008</tt>  <tt class="py-line">    <tt class="py-comment"># Register type(ExtensionClass.ExtensionClass)</tt> </tt>
+<a name="L1009"></a><tt class="py-lineno">1009</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">from</tt> <tt class="py-name">ExtensionClass</tt> <tt class="py-keyword">import</tt> <tt class="py-name">ExtensionClass</tt> <tt class="py-name">as</tt> <tt class="py-name">_ExtensionClass</tt> </tt>
+<a name="L1010"></a><tt class="py-lineno">1010</tt>  <tt class="py-line">    <tt id="link-496" class="py-name" targets="Variable epydoc.docintrospecter._ZopeType=epydoc.docintrospecter-module.html#_ZopeType"><a title="epydoc.docintrospecter._ZopeType" class="py-name" href="#" onclick="return doclink('link-496', '_ZopeType', 'link-496');">_ZopeType</a></tt> <tt class="py-op">=</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">_ExtensionClass</tt><tt class="py-o [...]
+<a name="_is_zope_type"></a><div id="_is_zope_type-def"><a name="L1011"></a><tt class="py-lineno">1011</tt> <a class="py-toggle" href="#" id="_is_zope_type-toggle" onclick="return toggle('_is_zope_type');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docintrospecter-module.html#_is_zope_type">_is_zope_type</a><tt class="py-op">(</tt><tt class="py-param">val</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_is_zope_type-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_is_zope_type-expanded"><a name="L1012"></a><tt class="py-lineno">1012</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">,</tt> <tt id="link-497" class="py-name"><a title="epydoc.docintrospecter._ZopeType" class="py-name" href="#" onclick="return doclink('link-4 [...]
+</div><a name="L1013"></a><tt class="py-lineno">1013</tt>  <tt class="py-line">    <tt id="link-498" class="py-name"><a title="epydoc.docintrospecter.register_introspecter" class="py-name" href="#" onclick="return doclink('link-498', 'register_introspecter', 'link-380');">register_introspecter</a></tt><tt class="py-op">(</tt><tt id="link-499" class="py-name" targets="Function epydoc.docintrospecter._is_zope_type()=epydoc.docintrospecter-module.html#_is_zope_type"><a title="epydoc.docintr [...]
+<a name="L1014"></a><tt class="py-lineno">1014</tt>  <tt class="py-line"> </tt>
+<a name="L1015"></a><tt class="py-lineno">1015</tt>  <tt class="py-line">    <tt class="py-comment"># Register ExtensionClass.*MethodType</tt> </tt>
+<a name="L1016"></a><tt class="py-lineno">1016</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">from</tt> <tt class="py-name">ExtensionClass</tt> <tt class="py-keyword">import</tt> <tt class="py-name">PythonMethodType</tt> <tt class="py-name">as</tt> <tt class="py-name">_ZopeMethodType</tt> </tt>
+<a name="L1017"></a><tt class="py-lineno">1017</tt>  <tt class="py-line">    <tt class="py-keyword">from</tt> <tt class="py-name">ExtensionClass</tt> <tt class="py-keyword">import</tt> <tt class="py-name">ExtensionMethodType</tt> <tt class="py-name">as</tt> <tt class="py-name">_ZopeCMethodType</tt> </tt>
+<a name="_is_zope_method"></a><div id="_is_zope_method-def"><a name="L1018"></a><tt class="py-lineno">1018</tt> <a class="py-toggle" href="#" id="_is_zope_method-toggle" onclick="return toggle('_is_zope_method');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docintrospecter-module.html#_is_zope_method">_is_zope_method</a><tt class="py-op">(</tt><tt class="py-param">val</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_is_zope_method-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_is_zope_method-expanded"><a name="L1019"></a><tt class="py-lineno">1019</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">_ZopeMethodType</tt><tt class="py-op">,</tt> <tt class="py-name">_ZopeCMethodType</tt> [...]
+</div><a name="L1020"></a><tt class="py-lineno">1020</tt>  <tt class="py-line">    <tt id="link-501" class="py-name"><a title="epydoc.docintrospecter.register_introspecter" class="py-name" href="#" onclick="return doclink('link-501', 'register_introspecter', 'link-380');">register_introspecter</a></tt><tt class="py-op">(</tt><tt id="link-502" class="py-name" targets="Function epydoc.docintrospecter._is_zope_method()=epydoc.docintrospecter-module.html#_is_zope_method"><a title="epydoc.doc [...]
+<a name="L1021"></a><tt class="py-lineno">1021</tt>  <tt class="py-line"><tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt>
+<a name="L1022"></a><tt class="py-lineno">1022</tt>  <tt class="py-line">    <tt class="py-keyword">pass</tt> </tt>
+<a name="L1023"></a><tt class="py-lineno">1023</tt>  <tt class="py-line">                          </tt>
+<a name="L1024"></a><tt class="py-lineno">1024</tt>  <tt class="py-line"> </tt>
+<a name="L1025"></a><tt class="py-lineno">1025</tt>  <tt class="py-line"> </tt>
+<a name="L1026"></a><tt class="py-lineno">1026</tt>  <tt class="py-line">     </tt>
+<a name="L1027"></a><tt class="py-lineno">1027</tt>  <tt class="py-line"><tt class="py-comment"># [xx]</tt> </tt>
+<a name="L1028"></a><tt class="py-lineno">1028</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-number">0</tt> <tt class="py-comment"># hm..  otherwise the following gets treated as a docstring!  ouch!</tt> </tt>
+<a name="L1029"></a><tt class="py-lineno">1029</tt>  <tt class="py-line"><tt class="py-string">"""</tt> </tt>
+<a name="L1030"></a><tt class="py-lineno">1030</tt>  <tt class="py-line"><tt class="py-string">######################################################################</tt> </tt>
+<a name="L1031"></a><tt class="py-lineno">1031</tt>  <tt class="py-line"><tt class="py-string">## Zope Extension...</tt> </tt>
+<a name="L1032"></a><tt class="py-lineno">1032</tt>  <tt class="py-line"><tt class="py-string">######################################################################</tt> </tt>
+<a name="L1033"></a><tt class="py-lineno">1033</tt>  <tt class="py-line"><tt class="py-string">class ZopeIntrospecter(Introspecter):</tt> </tt>
+<a name="L1034"></a><tt class="py-lineno">1034</tt>  <tt class="py-line"><tt class="py-string">    VALUEDOC_CLASSES = Introspecter.VALUEDOC_CLASSES.copy()</tt> </tt>
+<a name="L1035"></a><tt class="py-lineno">1035</tt>  <tt class="py-line"><tt class="py-string">    VALUEDOC_CLASSES.update({</tt> </tt>
+<a name="L1036"></a><tt class="py-lineno">1036</tt>  <tt class="py-line"><tt class="py-string">        'module': ZopeModuleDoc,</tt> </tt>
+<a name="L1037"></a><tt class="py-lineno">1037</tt>  <tt class="py-line"><tt class="py-string">        'class': ZopeClassDoc,</tt> </tt>
+<a name="L1038"></a><tt class="py-lineno">1038</tt>  <tt class="py-line"><tt class="py-string">        'interface': ZopeInterfaceDoc,</tt> </tt>
+<a name="L1039"></a><tt class="py-lineno">1039</tt>  <tt class="py-line"><tt class="py-string">        'attribute': ZopeAttributeDoc,</tt> </tt>
+<a name="L1040"></a><tt class="py-lineno">1040</tt>  <tt class="py-line"><tt class="py-string">        })</tt> </tt>
+<a name="L1041"></a><tt class="py-lineno">1041</tt>  <tt class="py-line"><tt class="py-string">    </tt> </tt>
+<a name="L1042"></a><tt class="py-lineno">1042</tt>  <tt class="py-line"><tt class="py-string">    def add_module_child(self, child, child_name, module_doc):</tt> </tt>
+<a name="L1043"></a><tt class="py-lineno">1043</tt>  <tt class="py-line"><tt class="py-string">        if isinstance(child, zope.interfaces.Interface):</tt> </tt>
+<a name="L1044"></a><tt class="py-lineno">1044</tt>  <tt class="py-line"><tt class="py-string">            module_doc.add_zope_interface(child_name)</tt> </tt>
+<a name="L1045"></a><tt class="py-lineno">1045</tt>  <tt class="py-line"><tt class="py-string">        else:</tt> </tt>
+<a name="L1046"></a><tt class="py-lineno">1046</tt>  <tt class="py-line"><tt class="py-string">            Introspecter.add_module_child(self, child, child_name, module_doc)</tt> </tt>
+<a name="L1047"></a><tt class="py-lineno">1047</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L1048"></a><tt class="py-lineno">1048</tt>  <tt class="py-line"><tt class="py-string">    def add_class_child(self, child, child_name, class_doc):</tt> </tt>
+<a name="L1049"></a><tt class="py-lineno">1049</tt>  <tt class="py-line"><tt class="py-string">        if isinstance(child, zope.interfaces.Interface):</tt> </tt>
+<a name="L1050"></a><tt class="py-lineno">1050</tt>  <tt class="py-line"><tt class="py-string">            class_doc.add_zope_interface(child_name)</tt> </tt>
+<a name="L1051"></a><tt class="py-lineno">1051</tt>  <tt class="py-line"><tt class="py-string">        else:</tt> </tt>
+<a name="L1052"></a><tt class="py-lineno">1052</tt>  <tt class="py-line"><tt class="py-string">            Introspecter.add_class_child(self, child, child_name, class_doc)</tt> </tt>
+<a name="L1053"></a><tt class="py-lineno">1053</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L1054"></a><tt class="py-lineno">1054</tt>  <tt class="py-line"><tt class="py-string">    def introspect_zope_interface(self, interface, interfacename):</tt> </tt>
+<a name="L1055"></a><tt class="py-lineno">1055</tt>  <tt class="py-line"><tt class="py-string">        pass # etc...</tt> </tt>
+<a name="L1056"></a><tt class="py-lineno">1056</tt>  <tt class="py-line"><tt class="py-string">"""</tt> </tt>
+<a name="L1057"></a><tt class="py-lineno">1057</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:09:25 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.docintrospecter._DevNull-class.html b/doc/api/epydoc.docintrospecter._DevNull-class.html
new file mode 100644
index 0000000..83b1c09
--- /dev/null
+++ b/doc/api/epydoc.docintrospecter._DevNull-class.html
@@ -0,0 +1,341 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.docintrospecter._DevNull</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.docintrospecter-module.html">Module docintrospecter</a> ::
+        Class _DevNull
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.docintrospecter._DevNull-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class _DevNull</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.docintrospecter-pysrc.html#_DevNull">source code</a></span></p>
+<p>A "file-like" object that discards anything that is written 
+  and always reports end-of-file when read.  <code>_DevNull</code> is used 
+  by <a href="epydoc.docintrospecter-module.html#_import" class="link" 
+  onclick="show_private();">_import()</a> to discard output when importing 
+  modules; and to ensure that stdin appears closed.</p>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__init__"></a><span class="summary-sig-name">__init__</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docintrospecter-pysrc.html#_DevNull.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="close"></a><span class="summary-sig-name">close</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docintrospecter-pysrc.html#_DevNull.close">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="flush"></a><span class="summary-sig-name">flush</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docintrospecter-pysrc.html#_DevNull.flush">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="read"></a><span class="summary-sig-name">read</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">size</span>=<span class="summary-sig-default">0</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docintrospecter-pysrc.html#_DevNull.read">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="readline"></a><span class="summary-sig-name">readline</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">size</span>=<span class="summary-sig-default">0</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docintrospecter-pysrc.html#_DevNull.readline">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="readlines"></a><span class="summary-sig-name">readlines</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">sizehint</span>=<span class="summary-sig-default">0</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docintrospecter-pysrc.html#_DevNull.readlines">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="seek"></a><span class="summary-sig-name">seek</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">offset</span>,
+        <span class="summary-sig-arg">whence</span>=<span class="summary-sig-default">0</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docintrospecter-pysrc.html#_DevNull.seek">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="tell"></a><span class="summary-sig-name">tell</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docintrospecter-pysrc.html#_DevNull.tell">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="truncate"></a><span class="summary-sig-name">truncate</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">size</span>=<span class="summary-sig-default">0</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docintrospecter-pysrc.html#_DevNull.truncate">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="write"></a><span class="summary-sig-name">write</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">str</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docintrospecter-pysrc.html#_DevNull.write">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="writelines"></a><span class="summary-sig-name">writelines</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">sequence</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docintrospecter-pysrc.html#_DevNull.writelines">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="xreadlines"></a><span class="summary-sig-name">xreadlines</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">sizehint</span>=<span class="summary-sig-default">0</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docintrospecter-pysrc.html#_DevNull.readlines">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:07:38 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.docparser-module.html b/doc/api/epydoc.docparser-module.html
new file mode 100644
index 0000000..e805a93
--- /dev/null
+++ b/doc/api/epydoc.docparser-module.html
@@ -0,0 +1,3527 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.docparser</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        Module docparser
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.docparser-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module docparser</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.docparser-pysrc.html">source code</a></span></p>
+<p>Extract API documentation about python objects by parsing their source
+  code.</p>
+  <p>The function <a href="epydoc.docparser-module.html#parse_docs" 
+  class="link">parse_docs()</a>, which provides the main interface of this 
+  module, reads and parses the Python source code for a module, and uses it
+  to create an <a href="epydoc.apidoc.APIDoc-class.html" 
+  class="link">APIDoc</a> object containing the API documentation for the 
+  variables and values defined in that modules.</p>
+  <p>Currently, <code>parse_docs()</code> extracts documentation from the 
+  following source code constructions:</p>
+  <ul>
+    <li>
+      module docstring
+    </li>
+    <li>
+      import statements
+    </li>
+    <li>
+      class definition blocks
+    </li>
+    <li>
+      function definition blocks
+    </li>
+    <li>
+      assignment statements
+      <ul>
+        <li>
+          simple assignment statements
+        </li>
+        <li>
+          assignment statements with multiple <code>'='</code>s
+        </li>
+        <li>
+          assignment statements with unpacked left-hand sides
+        </li>
+        <li>
+          assignment statements that wrap a function in classmethod or 
+          staticmethod.
+        </li>
+        <li>
+          assignment to special variables __path__, __all__, and 
+          __docformat__.
+        </li>
+      </ul>
+    </li>
+    <li>
+      delete statements
+    </li>
+  </ul>
+  <p><code>parse_docs()</code> does not yet support the following source 
+  code constructions:</p>
+  <ul>
+    <li>
+      assignment statements that create properties
+    </li>
+  </ul>
+  <p>By default, <code>parse_docs()</code> will expore the contents of 
+  top-level <code>try</code> and <code>if</code> blocks.  If desired, 
+  <code>parse_docs()</code> can also be configured to explore the contents 
+  of <code>while</code> and <code>for</code> blocks. (See the configuration
+  constants, below.)</p>
+
+<hr />
+<div class="fields">      <p><strong>To Do:</strong>
+        Make it possible to extend the functionality of 
+    <code>parse_docs()</code>, by replacing process_line with a dispatch 
+    table that can be customized (similarly to 
+    <code>docintrospector.register_introspector()</code>).
+      </p>
+</div><!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Classes</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Classes"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docparser.ParseError-class.html" class="summary-name">ParseError</a><br />
+      An exception that is used to signify that <code>docparser</code> 
+        encountered syntactically invalid Python code while processing a 
+        Python source file.
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTIONS ==================== -->
+<a name="section-Functions"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Functions</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Functions"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Module parser</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><a href="epydoc.apidoc.ValueDoc-class.html" class="link">ValueDoc</a></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docparser-module.html#parse_docs" class="summary-sig-name">parse_docs</a>(<span class="summary-sig-arg">filename</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">name</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">context</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">is_script</span>=<span class="summary-sig-default">False</span>)</span><br />
+      Generate the API documentation for a specified object by parsing 
+      Python source files, and return it as a <a 
+      href="epydoc.apidoc.ValueDoc-class.html" class="link">ValueDoc</a>.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docparser-pysrc.html#parse_docs">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_parse_docs-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_parse_docs-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_parse_docs" name="call_graph_for_parse_docs">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__init__" title="apidoc.DottedName.__init__()" alt="" coords="571,62,821,94" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#__init__" title="apidoc.NamespaceDoc.__init__()" alt="" coords="560,118,832,150" />
+<area shape="rect" href="epydoc.docbuilder-module.html#_get_docs_from_module_file" title="docbuilder._get_docs_from_module_file()" alt="" coords="5,202,344,234" />
+<area shape="rect" href="epydoc.docparser-module.html#parse_docs" title="parse_docs()" alt="" coords="393,230,511,262" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#introspect_docs" title="docintrospecter.introspect_docs()" alt="" coords="561,174,831,206" />
+<area shape="rect" href="epydoc.docparser-module.html#_find" title="_find()" alt="" coords="659,6,733,38" />
+<area shape="rect" href="epydoc.docparser-module.html#_get_module_name" title="_get_module_name()" alt="" coords="605,230,787,262" />
+<area shape="rect" href="epydoc.docparser-module.html#_parse_package" title="_parse_package()" alt="" coords="619,286,773,318" />
+<area shape="rect" href="epydoc.docparser-module.html#find_base" title="find_base()" alt="" coords="121,258,228,290" />
+<area shape="rect" href="epydoc.docparser-module.html#handle_special_module_vars" title="handle_special_module_vars()" alt="" coords="571,342,821,374" />
+<area shape="rect" href="epydoc.docparser-module.html#process_file" title="process_file()" alt="" coords="633,398,759,430" />
+<area shape="rect" href="epydoc.log-module.html#info" title="log.info()" alt="" coords="651,454,741,486" />
+<area shape="rect" href="epydoc.util-module.html#py_src_filename" title="util.py_src_filename()" alt="" coords="601,510,791,542" />
+</map>
+  <img src="call_graph_for_parse_docs.gif" alt='' usemap="#call_graph_for_parse_docs" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_parse_package"></a><span class="summary-sig-name">_parse_package</span>(<span class="summary-sig-arg">package_dir</span>)</span><br />
+      If the given directory is a package directory, then parse its 
+      __init__.py file (and the __init__.py files of all ancestor 
+      packages); and return its <code>ModuleDoc</code>.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docparser-pysrc.html#_parse_package">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__parse_package-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__parse_package-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__parse_package" name="call_graph_for__parse_package">
+<area shape="rect" href="epydoc.docparser-module.html#_parse_package" title="_parse_package()" alt="" coords="173,6,328,38" />
+<area shape="rect" href="epydoc.util-module.html#is_package_dir" title="util.is_package_dir()" alt="" coords="377,6,553,38" />
+<area shape="rect" href="epydoc.docparser-module.html#parse_docs" title="parse_docs()" alt="" coords="7,6,124,38" />
+</map>
+  <img src="call_graph_for__parse_package.gif" alt='' usemap="#call_graph_for__parse_package" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="handle_special_module_vars"></a><span class="summary-sig-name">handle_special_module_vars</span>(<span class="summary-sig-arg">module_doc</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docparser-pysrc.html#handle_special_module_vars">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_handle_special_-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_handle_special_-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_handle_special_" name="call_graph_for_handle_special_">
+<area shape="rect" href="epydoc.docparser-module.html#_module_var_toktree" title="_module_var_toktree()" alt="" coords="475,6,670,38" />
+<area shape="rect" href="epydoc.docparser-module.html#handle_special_module_vars" title="handle_special_module_vars()" alt="" coords="175,62,426,94" />
+<area shape="rect" href="epydoc.docparser-module.html#parse_string" title="parse_string()" alt="" coords="510,62,635,94" />
+<area shape="rect" href="epydoc.docparser-module.html#parse_string_list" title="parse_string_list()" alt="" coords="494,118,651,150" />
+<area shape="rect" href="epydoc.docparser-module.html#parse_docs" title="parse_docs()" alt="" coords="7,62,124,94" />
+</map>
+  <img src="call_graph_for_handle_special_.gif" alt='' usemap="#call_graph_for_handle_special_" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_module_var_toktree"></a><span class="summary-sig-name">_module_var_toktree</span>(<span class="summary-sig-arg">module_doc</span>,
+        <span class="summary-sig-arg">name</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docparser-pysrc.html#_module_var_toktree">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__module_var_tok-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__module_var_tok-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__module_var_tok" name="call_graph_for__module_var_tok">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__cmp__" title="apidoc.APIDoc.__cmp__()" alt="" coords="550,6,774,38" />
+<area shape="rect" href="epydoc.docparser-module.html#_module_var_toktree" title="_module_var_toktree()" alt="" coords="307,6,502,38" />
+<area shape="rect" href="epydoc.docparser-module.html#handle_special_module_vars" title="handle_special_module_vars()" alt="" coords="7,6,258,38" />
+</map>
+  <img src="call_graph_for__module_var_tok.gif" alt='' usemap="#call_graph_for__module_var_tok" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8"  class="private">
+  <th colspan="2" class="group-header"
+    >    Module Lookup</th></tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docparser-module.html#_find" class="summary-sig-name" onclick="show_private();">_find</a>(<span class="summary-sig-arg">name</span>,
+        <span class="summary-sig-arg">package_doc</span>=<span class="summary-sig-default">None</span>)</span><br />
+      Return the API documentaiton for the object whose name is 
+      <code>name</code>.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docparser-pysrc.html#_find">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__find-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__find-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__find" name="call_graph_for__find">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__getitem__" title="apidoc.DottedName.__getitem__()" alt="" coords="409,6,689,38" />
+<area shape="rect" href="epydoc.docparser-module.html#_find" title="_find()" alt="" coords="285,146,360,178" />
+<area shape="rect" href="epydoc.docparser-module.html#_find_in_namespace" title="_find_in_namespace()" alt="" coords="455,62,644,94" />
+<area shape="rect" href="epydoc.docparser-module.html#_get_filename" title="_get_filename()" alt="" coords="479,118,620,150" />
+<area shape="rect" href="epydoc.docparser-module.html#_is_submodule_import_var" title="_is_submodule_import_var()" alt="" coords="429,174,669,206" />
+<area shape="rect" href="epydoc.docparser-module.html#parse_docs" title="parse_docs()" alt="" coords="491,230,608,262" />
+<area shape="rect" href="epydoc.docparser-module.html#_process_fromstar_import" title="_process_fromstar_import()" alt="" coords="5,146,237,178" />
+</map>
+  <img src="call_graph_for__find.gif" alt='' usemap="#call_graph_for__find" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docparser-module.html#_is_submodule_import_var" class="summary-sig-name" onclick="show_private();">_is_submodule_import_var</a>(<span class="summary-sig-arg">module_doc</span>,
+        <span class="summary-sig-arg">var_name</span>)</span><br />
+      Return true if <code>var_name</code> is the name of a variable in 
+      <code>module_doc</code> that just contains an 
+      <code>imported_from</code> link to a submodule of the same name.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docparser-pysrc.html#_is_submodule_import_var">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__is_submodule_i-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__is_submodule_i-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__is_submodule_i" name="call_graph_for__is_submodule_i">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__cmp__" title="apidoc.DottedName.__cmp__()" alt="" coords="417,6,673,38" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__init__" title="apidoc.DottedName.__init__()" alt="" coords="420,62,671,94" />
+<area shape="rect" href="epydoc.docparser-module.html#_find" title="_find()" alt="" coords="5,34,80,66" />
+<area shape="rect" href="epydoc.docparser-module.html#_is_submodule_import_var" title="_is_submodule_import_var()" alt="" coords="128,34,368,66" />
+</map>
+  <img src="call_graph_for__is_submodule_i.gif" alt='' usemap="#call_graph_for__is_submodule_i" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_find_in_namespace"></a><span class="summary-sig-name">_find_in_namespace</span>(<span class="summary-sig-arg">name</span>,
+        <span class="summary-sig-arg">namespace_doc</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docparser-pysrc.html#_find_in_namespace">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__find_in_namesp-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__find_in_namesp-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__find_in_namesp" name="call_graph_for__find_in_namesp">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__getitem__" title="apidoc.DottedName.__getitem__()" alt="" coords="367,6,647,38" />
+<area shape="rect" href="epydoc.docparser-module.html#_find" title="_find()" alt="" coords="5,6,80,38" />
+<area shape="rect" href="epydoc.docparser-module.html#_find_in_namespace" title="_find_in_namespace()" alt="" coords="128,6,317,38" />
+</map>
+  <img src="call_graph_for__find_in_namesp.gif" alt='' usemap="#call_graph_for__find_in_namesp" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_get_filename"></a><span class="summary-sig-name">_get_filename</span>(<span class="summary-sig-arg">identifier</span>,
+        <span class="summary-sig-arg">path</span>=<span class="summary-sig-default">None</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docparser-pysrc.html#_get_filename">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__get_filename-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__get_filename-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__get_filename" name="call_graph_for__get_filename">
+<area shape="rect" href="epydoc.docparser-module.html#_find" title="_find()" alt="" coords="6,6,80,38" />
+<area shape="rect" href="epydoc.docparser-module.html#_get_filename" title="_get_filename()" alt="" coords="128,6,270,38" />
+</map>
+  <img src="call_graph_for__get_filename.gif" alt='' usemap="#call_graph_for__get_filename" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    File tokenization loop</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docparser-module.html#process_file" class="summary-sig-name">process_file</a>(<span class="summary-sig-arg">module_doc</span>)</span><br />
+      Read the given <code>ModuleDoc</code>'s file, and add variables 
+      corresponding to any objects defined in that file.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docparser-pysrc.html#process_file">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_process_file-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_process_file-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_process_file" name="call_graph_for_process_file">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__cmp__" title="apidoc.APIDoc.__cmp__()" alt="" coords="383,6,607,38" />
+<area shape="rect" href="epydoc.docparser-module.html#add_to_group" title="add_to_group()" alt="" coords="427,62,563,94" />
+<area shape="rect" href="epydoc.docparser-module.html#get_module_encoding" title="get_module_encoding()" alt="" coords="395,118,595,150" />
+<area shape="rect" href="epydoc.docparser-module.html#parse_docs" title="parse_docs()" alt="" coords="7,146,124,178" />
+<area shape="rect" href="epydoc.docparser-module.html#process_file" title="process_file()" alt="" coords="173,146,299,178" />
+<area shape="rect" href="epydoc.docparser-module.html#process_line" title="process_line()" alt="" coords="431,174,559,206" />
+<area shape="rect" href="epydoc.docparser-module.html#shallow_parse" title="shallow_parse()" alt="" coords="424,230,565,262" />
+<area shape="rect" href="epydoc.util-module.html#decode_with_backslashreplace" title="util.decode_with_backslashreplace()" alt="" coords="347,286,643,318" />
+</map>
+  <img src="call_graph_for_process_file.gif" alt='' usemap="#call_graph_for_process_file" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="add_to_group"></a><span class="summary-sig-name">add_to_group</span>(<span class="summary-sig-arg">container</span>,
+        <span class="summary-sig-arg">api_doc</span>,
+        <span class="summary-sig-arg">group_name</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docparser-pysrc.html#add_to_group">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_add_to_group-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_add_to_group-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_add_to_group" name="call_graph_for_add_to_group">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__getitem__" title="apidoc.DottedName.__getitem__()" alt="" coords="367,6,647,38" />
+<area shape="rect" href="epydoc.docparser-module.html#add_to_group" title="add_to_group()" alt="" coords="180,6,316,38" />
+<area shape="rect" href="epydoc.docparser-module.html#process_file" title="process_file()" alt="" coords="5,6,131,38" />
+</map>
+  <img src="call_graph_for_add_to_group.gif" alt='' usemap="#call_graph_for_add_to_group" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="script_guard"></a><span class="summary-sig-name">script_guard</span>(<span class="summary-sig-arg">line</span>)</span><br />
+      Detect the idiomatic trick <code>if __name__ == 
+      "__main__":</code></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docparser-pysrc.html#script_guard">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_script_guard-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_script_guard-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_script_guard" name="call_graph_for_script_guard">
+<area shape="rect" href="epydoc.docparser-module.html#process_control_flow_line" title="process_control_flow_line()" alt="" coords="7,6,239,38" />
+<area shape="rect" href="epydoc.docparser-module.html#script_guard" title="script_guard()" alt="" coords="289,6,415,38" />
+</map>
+  <img src="call_graph_for_script_guard.gif" alt='' usemap="#call_graph_for_script_guard" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Shallow parser</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docparser-module.html#shallow_parse" class="summary-sig-name">shallow_parse</a>(<span class="summary-sig-arg">line_toks</span>)</span><br />
+      Given a flat list of tokens, return a nested tree structure (called a
+      <a name="index-token_tree"></a><i class="indexterm">token tree</i>), 
+      whose leaves are identical to the original list, but whose structure 
+      reflects the structure implied by the grouping tokens (i.e., 
+      parenthases, braces, and brackets).</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docparser-pysrc.html#shallow_parse">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_shallow_parse-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_shallow_parse-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_shallow_parse" name="call_graph_for_shallow_parse">
+<area shape="rect" href="epydoc.docparser-module.html#process_file" title="process_file()" alt="" coords="5,6,131,38" />
+<area shape="rect" href="epydoc.docparser-module.html#shallow_parse" title="shallow_parse()" alt="" coords="179,6,320,38" />
+</map>
+  <img src="call_graph_for_shallow_parse.gif" alt='' usemap="#call_graph_for_shallow_parse" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Line processing</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docparser-module.html#process_line" class="summary-sig-name">process_line</a>(<span class="summary-sig-arg">line</span>,
+        <span class="summary-sig-arg">parent_docs</span>,
+        <span class="summary-sig-arg">prev_line_doc</span>,
+        <span class="summary-sig-arg">lineno</span>,
+        <span class="summary-sig-arg">comments</span>,
+        <span class="summary-sig-arg">decorators</span>,
+        <span class="summary-sig-arg">encoding</span>)</span><br />
+      Returns:
+      <code>new-doc</code>, <code>decorator</code>..?</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docparser-pysrc.html#process_line">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_process_line-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_process_line-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_process_line" name="call_graph_for_process_line">
+<area shape="rect" href="epydoc.docparser-module.html#process_assignment" title="process_assignment()" alt="" coords="383,6,567,38" />
+<area shape="rect" href="epydoc.docparser-module.html#process_classdef" title="process_classdef()" alt="" coords="395,62,555,94" />
+<area shape="rect" href="epydoc.docparser-module.html#process_control_flow_line" title="process_control_flow_line()" alt="" coords="359,118,591,150" />
+<area shape="rect" href="epydoc.docparser-module.html#process_del" title="process_del()" alt="" coords="413,174,536,206" />
+<area shape="rect" href="epydoc.docparser-module.html#process_docstring" title="process_docstring()" alt="" coords="389,230,560,262" />
+<area shape="rect" href="epydoc.docparser-module.html#process_file" title="process_file()" alt="" coords="5,314,131,346" />
+<area shape="rect" href="epydoc.docparser-module.html#process_line" title="process_line()" alt="" coords="180,314,308,346" />
+<area shape="rect" href="epydoc.docparser-module.html#process_from_import" title="process_from_import()" alt="" coords="377,286,572,318" />
+<area shape="rect" href="epydoc.docparser-module.html#process_funcdef" title="process_funcdef()" alt="" coords="396,342,553,374" />
+<area shape="rect" href="epydoc.docparser-module.html#process_import" title="process_import()" alt="" coords="400,398,549,430" />
+<area shape="rect" href="epydoc.docparser-module.html#process_multi_stmt" title="process_multi_stmt()" alt="" coords="384,454,565,486" />
+<area shape="rect" href="epydoc.docparser-module.html#process_one_line_block" title="process_one_line_block()" alt="" coords="367,510,583,542" />
+</map>
+  <img src="call_graph_for_process_line.gif" alt='' usemap="#call_graph_for_process_line" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="process_control_flow_line"></a><span class="summary-sig-name">process_control_flow_line</span>(<span class="summary-sig-arg">line</span>,
+        <span class="summary-sig-arg">parent_docs</span>,
+        <span class="summary-sig-arg">prev_line_doc</span>,
+        <span class="summary-sig-arg">lineno</span>,
+        <span class="summary-sig-arg">comments</span>,
+        <span class="summary-sig-arg">decorators</span>,
+        <span class="summary-sig-arg">encoding</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docparser-pysrc.html#process_control_flow_line">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_process_control-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_process_control-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_process_control" name="call_graph_for_process_control">
+<area shape="rect" href="epydoc.docparser-module.html#process_control_flow_line" title="process_control_flow_line()" alt="" coords="185,6,417,38" />
+<area shape="rect" href="epydoc.docparser-module.html#script_guard" title="script_guard()" alt="" coords="468,6,593,38" />
+<area shape="rect" href="epydoc.docparser-module.html#process_line" title="process_line()" alt="" coords="7,6,135,38" />
+</map>
+  <img src="call_graph_for_process_control.gif" alt='' usemap="#call_graph_for_process_control" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="process_import"></a><span class="summary-sig-name">process_import</span>(<span class="summary-sig-arg">line</span>,
+        <span class="summary-sig-arg">parent_docs</span>,
+        <span class="summary-sig-arg">prev_line_doc</span>,
+        <span class="summary-sig-arg">lineno</span>,
+        <span class="summary-sig-arg">comments</span>,
+        <span class="summary-sig-arg">decorators</span>,
+        <span class="summary-sig-arg">encoding</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docparser-pysrc.html#process_import">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_process_import-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_process_import-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_process_import" name="call_graph_for_process_import">
+<area shape="rect" href="epydoc.docparser-module.html#_import_var" title="_import_var()" alt="" coords="412,6,538,38" />
+<area shape="rect" href="epydoc.docparser-module.html#parse_dotted_name" title="parse_dotted_name()" alt="" coords="386,62,564,94" />
+<area shape="rect" href="epydoc.docparser-module.html#process_import" title="process_import()" alt="" coords="186,62,335,94" />
+<area shape="rect" href="epydoc.docparser-module.html#split_on" title="split_on()" alt="" coords="428,118,522,150" />
+<area shape="rect" href="epydoc.docparser-module.html#process_line" title="process_line()" alt="" coords="7,62,135,94" />
+</map>
+  <img src="call_graph_for_process_import.gif" alt='' usemap="#call_graph_for_process_import" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="process_from_import"></a><span class="summary-sig-name">process_from_import</span>(<span class="summary-sig-arg">line</span>,
+        <span class="summary-sig-arg">parent_docs</span>,
+        <span class="summary-sig-arg">prev_line_doc</span>,
+        <span class="summary-sig-arg">lineno</span>,
+        <span class="summary-sig-arg">comments</span>,
+        <span class="summary-sig-arg">decorators</span>,
+        <span class="summary-sig-arg">encoding</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docparser-pysrc.html#process_from_import">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_process_from_im-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_process_from_im-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_process_from_im" name="call_graph_for_process_from_im">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__init__" title="apidoc.DottedName.__init__()" alt="" coords="429,6,680,38" />
+<area shape="rect" href="epydoc.docparser-module.html#_import_var_as" title="_import_var_as()" alt="" coords="479,62,631,94" />
+<area shape="rect" href="epydoc.docparser-module.html#_process_fromstar_import" title="_process_fromstar_import()" alt="" coords="439,118,671,150" />
+<area shape="rect" href="epydoc.docparser-module.html#parse_dotted_name" title="parse_dotted_name()" alt="" coords="465,174,644,206" />
+<area shape="rect" href="epydoc.docparser-module.html#parse_name" title="parse_name()" alt="" coords="493,230,616,262" />
+<area shape="rect" href="epydoc.docparser-module.html#process_from_import" title="process_from_import()" alt="" coords="185,146,380,178" />
+<area shape="rect" href="epydoc.docparser-module.html#split_on" title="split_on()" alt="" coords="508,286,601,318" />
+<area shape="rect" href="epydoc.docparser-module.html#process_line" title="process_line()" alt="" coords="7,146,135,178" />
+</map>
+  <img src="call_graph_for_process_from_im.gif" alt='' usemap="#call_graph_for_process_from_im" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docparser-module.html#_process_fromstar_import" class="summary-sig-name" onclick="show_private();">_process_fromstar_import</a>(<span class="summary-sig-arg">src</span>,
+        <span class="summary-sig-arg">parent_docs</span>)</span><br />
+      Handle a statement of the form:</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docparser-pysrc.html#_process_fromstar_import">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__process_fromst-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__process_fromst-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__process_fromst" name="call_graph_for__process_fromst">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__init__" title="apidoc.DottedName.__init__()" alt="" coords="531,6,782,38" />
+<area shape="rect" href="epydoc.docparser-module.html#_add_import_var" title="_add_import_var()" alt="" coords="575,62,738,94" />
+<area shape="rect" href="epydoc.docparser-module.html#_find" title="_find()" alt="" coords="619,118,694,150" />
+<area shape="rect" href="epydoc.docparser-module.html#_global_name" title="_global_name()" alt="" coords="586,174,727,206" />
+<area shape="rect" href="epydoc.docparser-module.html#_process_fromstar_import" title="_process_fromstar_import()" alt="" coords="251,90,483,122" />
+<area shape="rect" href="epydoc.docparser-module.html#process_from_import" title="process_from_import()" alt="" coords="7,90,202,122" />
+</map>
+  <img src="call_graph_for__process_fromst.gif" alt='' usemap="#call_graph_for__process_fromst" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docparser-module.html#_import_var" class="summary-sig-name" onclick="show_private();">_import_var</a>(<span class="summary-sig-arg">name</span>,
+        <span class="summary-sig-arg">parent_docs</span>)</span><br />
+      Handle a statement of the form:</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docparser-pysrc.html#_import_var">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__import_var-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__import_var-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__import_var" name="call_graph_for__import_var">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__getitem__" title="apidoc.DottedName.__getitem__()" alt="" coords="383,6,663,38" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__len__" title="apidoc.DottedName.__len__()" alt="" coords="399,62,647,94" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__radd__" title="apidoc.DottedName.__radd__()" alt="" coords="393,118,652,150" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#__init__" title="apidoc.NamespaceDoc.__init__()" alt="" coords="387,174,659,206" />
+<area shape="rect" href="epydoc.docparser-module.html#_add_import_var" title="_add_import_var()" alt="" coords="441,230,604,262" />
+<area shape="rect" href="epydoc.docparser-module.html#_global_name" title="_global_name()" alt="" coords="452,286,593,318" />
+<area shape="rect" href="epydoc.docparser-module.html#_import_var" title="_import_var()" alt="" coords="207,146,332,178" />
+<area shape="rect" href="epydoc.docparser-module.html#process_import" title="process_import()" alt="" coords="7,146,156,178" />
+</map>
+  <img src="call_graph_for__import_var.gif" alt='' usemap="#call_graph_for__import_var" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docparser-module.html#_import_var_as" class="summary-sig-name" onclick="show_private();">_import_var_as</a>(<span class="summary-sig-arg">src</span>,
+        <span class="summary-sig-arg">name</span>,
+        <span class="summary-sig-arg">parent_docs</span>)</span><br />
+      Handle a statement of the form:</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docparser-pysrc.html#_import_var_as">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__import_var_as-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__import_var_as-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__import_var_as" name="call_graph_for__import_var_as">
+<area shape="rect" href="epydoc.docparser-module.html#_add_import_var" title="_add_import_var()" alt="" coords="452,6,615,38" />
+<area shape="rect" href="epydoc.docparser-module.html#_global_name" title="_global_name()" alt="" coords="463,62,604,94" />
+<area shape="rect" href="epydoc.docparser-module.html#_import_var_as" title="_import_var_as()" alt="" coords="251,34,403,66" />
+<area shape="rect" href="epydoc.docparser-module.html#process_from_import" title="process_from_import()" alt="" coords="7,34,201,66" />
+</map>
+  <img src="call_graph_for__import_var_as.gif" alt='' usemap="#call_graph_for__import_var_as" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_add_import_var"></a><span class="summary-sig-name">_add_import_var</span>(<span class="summary-sig-arg">src</span>,
+        <span class="summary-sig-arg">name</span>,
+        <span class="summary-sig-arg">container</span>)</span><br />
+      Add a new imported variable named <code>name</code> to 
+      <code>container</code>, with <code>imported_from=src</code>.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docparser-pysrc.html#_add_import_var">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__add_import_var-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__add_import_var-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__add_import_var" name="call_graph_for__add_import_var">
+<area shape="rect" href="epydoc.apidoc.VariableDoc-class.html#__init__" title="apidoc.VariableDoc.__init__()" alt="" coords="499,34,750,66" />
+<area shape="rect" href="epydoc.docparser-module.html#_add_import_var" title="_add_import_var()" alt="" coords="287,62,450,94" />
+<area shape="rect" href="epydoc.docparser-module.html#set_variable" title="set_variable()" alt="" coords="563,90,686,122" />
+<area shape="rect" href="epydoc.docparser-module.html#_import_var" title="_import_var()" alt="" coords="59,6,184,38" />
+<area shape="rect" href="epydoc.docparser-module.html#_import_var_as" title="_import_var_as()" alt="" coords="46,62,198,94" />
+<area shape="rect" href="epydoc.docparser-module.html#_process_fromstar_import" title="_process_fromstar_import()" alt="" coords="6,118,238,150" />
+</map>
+  <img src="call_graph_for__add_import_var.gif" alt='' usemap="#call_graph_for__add_import_var" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_global_name"></a><span class="summary-sig-name">_global_name</span>(<span class="summary-sig-arg">name</span>,
+        <span class="summary-sig-arg">parent_docs</span>)</span><br />
+      If the given name is package-local (relative to the current context, 
+      as determined by <code>parent_docs</code>), then convert it to a 
+      global name.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docparser-pysrc.html#_global_name">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__global_name-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__global_name-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__global_name" name="call_graph_for__global_name">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__cmp__" title="apidoc.APIDoc.__cmp__()" alt="" coords="504,6,728,38" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__add__" title="apidoc.DottedName.__add__()" alt="" coords="491,62,742,94" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__getitem__" title="apidoc.DottedName.__getitem__()" alt="" coords="476,118,756,150" />
+<area shape="rect" href="epydoc.docparser-module.html#_global_name" title="_global_name()" alt="" coords="286,62,427,94" />
+<area shape="rect" href="epydoc.docparser-module.html#_import_var" title="_import_var()" alt="" coords="59,6,184,38" />
+<area shape="rect" href="epydoc.docparser-module.html#_import_var_as" title="_import_var_as()" alt="" coords="46,62,198,94" />
+<area shape="rect" href="epydoc.docparser-module.html#_process_fromstar_import" title="_process_fromstar_import()" alt="" coords="6,118,238,150" />
+</map>
+  <img src="call_graph_for__global_name.gif" alt='' usemap="#call_graph_for__global_name" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="process_assignment"></a><span class="summary-sig-name">process_assignment</span>(<span class="summary-sig-arg">line</span>,
+        <span class="summary-sig-arg">parent_docs</span>,
+        <span class="summary-sig-arg">prev_line_doc</span>,
+        <span class="summary-sig-arg">lineno</span>,
+        <span class="summary-sig-arg">comments</span>,
+        <span class="summary-sig-arg">decorators</span>,
+        <span class="summary-sig-arg">encoding</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docparser-pysrc.html#process_assignment">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_process_assignm-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_process_assignm-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_process_assignm" name="call_graph_for_process_assignm">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__getitem__" title="apidoc.DottedName.__getitem__()" alt="" coords="420,6,700,38" />
+<area shape="rect" href="epydoc.apidoc.VariableDoc-class.html#__init__" title="apidoc.VariableDoc.__init__()" alt="" coords="435,62,686,94" />
+<area shape="rect" href="epydoc.docparser-module.html#add_docstring_from_comments" title="add_docstring_from_comments()" alt="" coords="426,118,695,150" />
+<area shape="rect" href="epydoc.docparser-module.html#dotted_names_in" title="dotted_names_in()" alt="" coords="480,174,640,206" />
+<area shape="rect" href="epydoc.docparser-module.html#get_lhs_parent" title="get_lhs_parent()" alt="" coords="488,230,632,262" />
+<area shape="rect" href="epydoc.docparser-module.html#lhs_is_instvar" title="lhs_is_instvar()" alt="" coords="492,286,628,318" />
+<area shape="rect" href="epydoc.docparser-module.html#parse_dotted_name" title="parse_dotted_name()" alt="" coords="471,342,650,374" />
+<area shape="rect" href="epydoc.docparser-module.html#process_assignment" title="process_assignment()" alt="" coords="186,258,370,290" />
+<area shape="rect" href="epydoc.docparser-module.html#rhs_to_valuedoc" title="rhs_to_valuedoc()" alt="" coords="482,398,639,430" />
+<area shape="rect" href="epydoc.docparser-module.html#set_variable" title="set_variable()" alt="" coords="499,454,622,486" />
+<area shape="rect" href="epydoc.docparser-module.html#split_on" title="split_on()" alt="" coords="514,510,607,542" />
+<area shape="rect" href="epydoc.docparser-module.html#process_line" title="process_line()" alt="" coords="7,258,135,290" />
+</map>
+  <img src="call_graph_for_process_assignm.gif" alt='' usemap="#call_graph_for_process_assignm" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="lhs_is_instvar"></a><span class="summary-sig-name">lhs_is_instvar</span>(<span class="summary-sig-arg">lhs_pieces</span>,
+        <span class="summary-sig-arg">parent_docs</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docparser-pysrc.html#lhs_is_instvar">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_lhs_is_instvar-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_lhs_is_instvar-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_lhs_is_instvar" name="call_graph_for_lhs_is_instvar">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__cmp__" title="apidoc.APIDoc.__cmp__()" alt="" coords="427,6,651,38" />
+<area shape="rect" href="epydoc.docparser-module.html#lhs_is_instvar" title="lhs_is_instvar()" alt="" coords="241,6,377,38" />
+<area shape="rect" href="epydoc.docparser-module.html#process_assignment" title="process_assignment()" alt="" coords="7,6,191,38" />
+</map>
+  <img src="call_graph_for_lhs_is_instvar.gif" alt='' usemap="#call_graph_for_lhs_is_instvar" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="rhs_to_valuedoc"></a><span class="summary-sig-name">rhs_to_valuedoc</span>(<span class="summary-sig-arg">rhs</span>,
+        <span class="summary-sig-arg">parent_docs</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docparser-pysrc.html#rhs_to_valuedoc">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_rhs_to_valuedoc-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_rhs_to_valuedoc-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_rhs_to_valuedoc" name="call_graph_for_rhs_to_valuedoc">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__init__" title="apidoc.APIDoc.__init__()" alt="" coords="465,6,681,38" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__init__" title="apidoc.DottedName.__init__()" alt="" coords="448,62,699,94" />
+<area shape="rect" href="epydoc.docparser-module.html#apply_decorator" title="apply_decorator()" alt="" coords="496,118,651,150" />
+<area shape="rect" href="epydoc.docparser-module.html#lookup_value" title="lookup_value()" alt="" coords="505,174,641,206" />
+<area shape="rect" href="epydoc.docparser-module.html#parse_dotted_name" title="parse_dotted_name()" alt="" coords="484,230,663,262" />
+<area shape="rect" href="epydoc.docparser-module.html#pp_toktree" title="pp_toktree()" alt="" coords="516,286,631,318" />
+<area shape="rect" href="epydoc.docparser-module.html#process_assignment" title="process_assignment()" alt="" coords="7,146,191,178" />
+<area shape="rect" href="epydoc.docparser-module.html#rhs_to_valuedoc" title="rhs_to_valuedoc()" alt="" coords="241,146,399,178" />
+</map>
+  <img src="call_graph_for_rhs_to_valuedoc.gif" alt='' usemap="#call_graph_for_rhs_to_valuedoc" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_lhs_parent"></a><span class="summary-sig-name">get_lhs_parent</span>(<span class="summary-sig-arg">lhs_name</span>,
+        <span class="summary-sig-arg">parent_docs</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docparser-pysrc.html#get_lhs_parent">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_get_lhs_parent-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_get_lhs_parent-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_get_lhs_parent" name="call_graph_for_get_lhs_parent">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#container" title="apidoc.DottedName.container()" alt="" coords="433,6,689,38" />
+<area shape="rect" href="epydoc.docparser-module.html#get_lhs_parent" title="get_lhs_parent()" alt="" coords="240,34,384,66" />
+<area shape="rect" href="epydoc.docparser-module.html#lookup_value" title="lookup_value()" alt="" coords="493,62,629,94" />
+<area shape="rect" href="epydoc.docparser-module.html#process_assignment" title="process_assignment()" alt="" coords="7,34,191,66" />
+</map>
+  <img src="call_graph_for_get_lhs_parent.gif" alt='' usemap="#call_graph_for_get_lhs_parent" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docparser-module.html#process_one_line_block" class="summary-sig-name">process_one_line_block</a>(<span class="summary-sig-arg">line</span>,
+        <span class="summary-sig-arg">parent_docs</span>,
+        <span class="summary-sig-arg">prev_line_doc</span>,
+        <span class="summary-sig-arg">lineno</span>,
+        <span class="summary-sig-arg">comments</span>,
+        <span class="summary-sig-arg">decorators</span>,
+        <span class="summary-sig-arg">encoding</span>)</span><br />
+      The line handler for single-line blocks, such as:</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docparser-pysrc.html#process_one_line_block">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_process_one_lin-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_process_one_lin-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_process_one_lin" name="call_graph_for_process_one_lin">
+<area shape="rect" href="epydoc.docparser-module.html#process_line" title="process_line()" alt="" coords="7,6,135,38" />
+<area shape="rect" href="epydoc.docparser-module.html#process_one_line_block" title="process_one_line_block()" alt="" coords="184,6,400,38" />
+</map>
+  <img src="call_graph_for_process_one_lin.gif" alt='' usemap="#call_graph_for_process_one_lin" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docparser-module.html#process_multi_stmt" class="summary-sig-name">process_multi_stmt</a>(<span class="summary-sig-arg">line</span>,
+        <span class="summary-sig-arg">parent_docs</span>,
+        <span class="summary-sig-arg">prev_line_doc</span>,
+        <span class="summary-sig-arg">lineno</span>,
+        <span class="summary-sig-arg">comments</span>,
+        <span class="summary-sig-arg">decorators</span>,
+        <span class="summary-sig-arg">encoding</span>)</span><br />
+      The line handler for semicolon-separated statements, such as:</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docparser-pysrc.html#process_multi_stmt">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_process_multi_s-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_process_multi_s-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_process_multi_s" name="call_graph_for_process_multi_s">
+<area shape="rect" href="epydoc.docparser-module.html#process_line" title="process_line()" alt="" coords="7,6,135,38" />
+<area shape="rect" href="epydoc.docparser-module.html#process_multi_stmt" title="process_multi_stmt()" alt="" coords="184,6,366,38" />
+<area shape="rect" href="epydoc.docparser-module.html#split_on" title="split_on()" alt="" coords="415,6,508,38" />
+</map>
+  <img src="call_graph_for_process_multi_s.gif" alt='' usemap="#call_graph_for_process_multi_s" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docparser-module.html#process_del" class="summary-sig-name">process_del</a>(<span class="summary-sig-arg">line</span>,
+        <span class="summary-sig-arg">parent_docs</span>,
+        <span class="summary-sig-arg">prev_line_doc</span>,
+        <span class="summary-sig-arg">lineno</span>,
+        <span class="summary-sig-arg">comments</span>,
+        <span class="summary-sig-arg">decorators</span>,
+        <span class="summary-sig-arg">encoding</span>)</span><br />
+      The line handler for delete statements, such as:</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docparser-pysrc.html#process_del">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_process_del-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_process_del-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_process_del" name="call_graph_for_process_del">
+<area shape="rect" href="epydoc.docparser-module.html#del_variable" title="del_variable()" alt="" coords="376,6,501,38" />
+<area shape="rect" href="epydoc.docparser-module.html#dotted_names_in" title="dotted_names_in()" alt="" coords="359,62,519,94" />
+<area shape="rect" href="epydoc.docparser-module.html#process_del" title="process_del()" alt="" coords="185,62,308,94" />
+<area shape="rect" href="epydoc.docparser-module.html#split_on" title="split_on()" alt="" coords="392,118,485,150" />
+<area shape="rect" href="epydoc.docparser-module.html#process_line" title="process_line()" alt="" coords="7,62,135,94" />
+</map>
+  <img src="call_graph_for_process_del.gif" alt='' usemap="#call_graph_for_process_del" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docparser-module.html#process_docstring" class="summary-sig-name">process_docstring</a>(<span class="summary-sig-arg">line</span>,
+        <span class="summary-sig-arg">parent_docs</span>,
+        <span class="summary-sig-arg">prev_line_doc</span>,
+        <span class="summary-sig-arg">lineno</span>,
+        <span class="summary-sig-arg">comments</span>,
+        <span class="summary-sig-arg">decorators</span>,
+        <span class="summary-sig-arg">encoding</span>)</span><br />
+      The line handler for bare string literals.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docparser-pysrc.html#process_docstring">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_process_docstri-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_process_docstri-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_process_docstri" name="call_graph_for_process_docstri">
+<area shape="rect" href="epydoc.docparser-module.html#parse_string" title="parse_string()" alt="" coords="404,6,529,38" />
+<area shape="rect" href="epydoc.docparser-module.html#process_docstring" title="process_docstring()" alt="" coords="184,34,355,66" />
+<area shape="rect" href="epydoc.docparser-module.html#set_variable" title="set_variable()" alt="" coords="405,62,528,94" />
+<area shape="rect" href="epydoc.docparser-module.html#process_line" title="process_line()" alt="" coords="7,34,135,66" />
+</map>
+  <img src="call_graph_for_process_docstri.gif" alt='' usemap="#call_graph_for_process_docstri" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docparser-module.html#process_funcdef" class="summary-sig-name">process_funcdef</a>(<span class="summary-sig-arg">line</span>,
+        <span class="summary-sig-arg">parent_docs</span>,
+        <span class="summary-sig-arg">prev_line_doc</span>,
+        <span class="summary-sig-arg">lineno</span>,
+        <span class="summary-sig-arg">comments</span>,
+        <span class="summary-sig-arg">decorators</span>,
+        <span class="summary-sig-arg">encoding</span>)</span><br />
+      The line handler for function declaration lines, such as:</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docparser-pysrc.html#process_funcdef">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_process_funcdef-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_process_funcdef-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_process_funcdef" name="call_graph_for_process_funcdef">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__init__" title="apidoc.APIDoc.__init__()" alt="" coords="418,6,634,38" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__init__" title="apidoc.DottedName.__init__()" alt="" coords="400,62,651,94" />
+<area shape="rect" href="epydoc.apidoc.VariableDoc-class.html#__init__" title="apidoc.VariableDoc.__init__()" alt="" coords="400,118,651,150" />
+<area shape="rect" href="epydoc.docparser-module.html#add_docstring_from_comments" title="add_docstring_from_comments()" alt="" coords="391,174,660,206" />
+<area shape="rect" href="epydoc.docparser-module.html#init_arglist" title="init_arglist()" alt="" coords="468,230,583,262" />
+<area shape="rect" href="epydoc.docparser-module.html#parse_name" title="parse_name()" alt="" coords="464,286,587,318" />
+<area shape="rect" href="epydoc.docparser-module.html#process_funcdef" title="process_funcdef()" alt="" coords="184,174,342,206" />
+<area shape="rect" href="epydoc.docparser-module.html#set_variable" title="set_variable()" alt="" coords="464,342,587,374" />
+<area shape="rect" href="epydoc.docparser-module.html#process_line" title="process_line()" alt="" coords="7,174,135,206" />
+</map>
+  <img src="call_graph_for_process_funcdef.gif" alt='' usemap="#call_graph_for_process_funcdef" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="apply_decorator"></a><span class="summary-sig-name">apply_decorator</span>(<span class="summary-sig-arg">decorator_name</span>,
+        <span class="summary-sig-arg">func_doc</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docparser-pysrc.html#apply_decorator">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_apply_decorator-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_apply_decorator-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_apply_decorator" name="call_graph_for_apply_decorator">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__init__" title="apidoc.APIDoc.__init__()" alt="" coords="437,6,653,38" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__cmp__" title="apidoc.DottedName.__cmp__()" alt="" coords="417,62,673,94" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__init__" title="apidoc.DottedName.__init__()" alt="" coords="420,118,671,150" />
+<area shape="rect" href="epydoc.docparser-module.html#apply_decorator" title="apply_decorator()" alt="" coords="213,62,368,94" />
+<area shape="rect" href="epydoc.docparser-module.html#rhs_to_valuedoc" title="rhs_to_valuedoc()" alt="" coords="7,62,164,94" />
+</map>
+  <img src="call_graph_for_apply_decorator.gif" alt='' usemap="#call_graph_for_apply_decorator" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="init_arglist"></a><span class="summary-sig-name">init_arglist</span>(<span class="summary-sig-arg">func_doc</span>,
+        <span class="summary-sig-arg">arglist</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docparser-pysrc.html#init_arglist">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_init_arglist-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_init_arglist-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_init_arglist" name="call_graph_for_init_arglist">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__init__" title="apidoc.APIDoc.__init__()" alt="" coords="376,6,592,38" />
+<area shape="rect" href="epydoc.docparser-module.html#init_arglist" title="init_arglist()" alt="" coords="212,90,327,122" />
+<area shape="rect" href="epydoc.docparser-module.html#parse_funcdef_arg" title="parse_funcdef_arg()" alt="" coords="397,62,571,94" />
+<area shape="rect" href="epydoc.docparser-module.html#pp_toktree" title="pp_toktree()" alt="" coords="427,118,541,150" />
+<area shape="rect" href="epydoc.docparser-module.html#split_on" title="split_on()" alt="" coords="437,174,531,206" />
+<area shape="rect" href="epydoc.docparser-module.html#process_funcdef" title="process_funcdef()" alt="" coords="5,90,163,122" />
+</map>
+  <img src="call_graph_for_init_arglist.gif" alt='' usemap="#call_graph_for_init_arglist" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docparser-module.html#process_classdef" class="summary-sig-name">process_classdef</a>(<span class="summary-sig-arg">line</span>,
+        <span class="summary-sig-arg">parent_docs</span>,
+        <span class="summary-sig-arg">prev_line_doc</span>,
+        <span class="summary-sig-arg">lineno</span>,
+        <span class="summary-sig-arg">comments</span>,
+        <span class="summary-sig-arg">decorators</span>,
+        <span class="summary-sig-arg">encoding</span>)</span><br />
+      The line handler for class declaration lines, such as:</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docparser-pysrc.html#process_classdef">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_process_classde-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_process_classde-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_process_classde" name="call_graph_for_process_classde">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__cmp__" title="apidoc.DottedName.__cmp__()" alt="" coords="403,6,659,38" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__init__" title="apidoc.DottedName.__init__()" alt="" coords="405,62,656,94" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#__init__" title="apidoc.NamespaceDoc.__init__()" alt="" coords="395,118,667,150" />
+<area shape="rect" href="epydoc.apidoc.VariableDoc-class.html#__init__" title="apidoc.VariableDoc.__init__()" alt="" coords="405,174,656,206" />
+<area shape="rect" href="epydoc.docparser-module.html#add_docstring_from_comments" title="add_docstring_from_comments()" alt="" coords="396,230,665,262" />
+<area shape="rect" href="epydoc.docparser-module.html#find_base" title="find_base()" alt="" coords="477,286,584,318" />
+<area shape="rect" href="epydoc.docparser-module.html#parse_classdef_bases" title="parse_classdef_bases()" alt="" coords="433,342,628,374" />
+<area shape="rect" href="epydoc.docparser-module.html#parse_name" title="parse_name()" alt="" coords="469,398,592,430" />
+<area shape="rect" href="epydoc.docparser-module.html#process_classdef" title="process_classdef()" alt="" coords="185,230,345,262" />
+<area shape="rect" href="epydoc.docparser-module.html#set_variable" title="set_variable()" alt="" coords="469,454,592,486" />
+<area shape="rect" href="epydoc.docparser-module.html#process_line" title="process_line()" alt="" coords="7,230,135,262" />
+</map>
+  <img src="call_graph_for_process_classde.gif" alt='' usemap="#call_graph_for_process_classde" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_proxy_base"></a><span class="summary-sig-name">_proxy_base</span>(<span class="summary-sig-arg">**attribs</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docparser-pysrc.html#_proxy_base">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__proxy_base-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__proxy_base-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__proxy_base" name="call_graph_for__proxy_base">
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#__init__" title="apidoc.NamespaceDoc.__init__()" alt="" coords="339,6,611,38" />
+<area shape="rect" href="epydoc.docparser-module.html#_proxy_base" title="_proxy_base()" alt="" coords="160,6,291,38" />
+<area shape="rect" href="epydoc.docparser-module.html#find_base" title="find_base()" alt="" coords="5,6,112,38" />
+</map>
+  <img src="call_graph_for__proxy_base.gif" alt='' usemap="#call_graph_for__proxy_base" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="find_base"></a><span class="summary-sig-name">find_base</span>(<span class="summary-sig-arg">name</span>,
+        <span class="summary-sig-arg">parent_docs</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docparser-pysrc.html#find_base">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_find_base-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_find_base-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_find_base" name="call_graph_for_find_base">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__cmp__" title="apidoc.DottedName.__cmp__()" alt="" coords="384,6,640,38" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__getitem__" title="apidoc.DottedName.__getitem__()" alt="" coords="372,62,652,94" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__init__" title="apidoc.DottedName.__init__()" alt="" coords="387,118,638,150" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__str__" title="apidoc.DottedName.__str__()" alt="" coords="391,174,634,206" />
+<area shape="rect" href="epydoc.apidoc.VariableDoc-class.html#__init__" title="apidoc.VariableDoc.__init__()" alt="" coords="387,230,638,262" />
+<area shape="rect" href="epydoc.docparser-module.html#_proxy_base" title="_proxy_base()" alt="" coords="447,286,578,318" />
+<area shape="rect" href="epydoc.docparser-module.html#find_base" title="find_base()" alt="" coords="216,258,323,290" />
+<area shape="rect" href="epydoc.docparser-module.html#lookup_name" title="lookup_name()" alt="" coords="444,342,580,374" />
+<area shape="rect" href="epydoc.docparser-module.html#lookup_variable" title="lookup_variable()" alt="" coords="435,398,590,430" />
+<area shape="rect" href="epydoc.docparser-module.html#parse_docs" title="parse_docs()" alt="" coords="454,454,571,486" />
+<area shape="rect" href="epydoc.log-module.html#info" title="log.info()" alt="" coords="467,510,558,542" />
+<area shape="rect" href="epydoc.docparser-module.html#process_classdef" title="process_classdef()" alt="" coords="7,258,167,290" />
+</map>
+  <img src="call_graph_for_find_base.gif" alt='' usemap="#call_graph_for_find_base" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Parsing</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="dotted_names_in"></a><span class="summary-sig-name">dotted_names_in</span>(<span class="summary-sig-arg">elt_list</span>)</span><br />
+      Return a list of all simple dotted names in the given expression.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docparser-pysrc.html#dotted_names_in">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_dotted_names_in-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_dotted_names_in-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_dotted_names_in" name="call_graph_for_dotted_names_in">
+<area shape="rect" href="epydoc.docparser-module.html#dotted_names_in" title="dotted_names_in()" alt="" coords="241,34,401,66" />
+<area shape="rect" href="epydoc.docparser-module.html#parse_dotted_name" title="parse_dotted_name()" alt="" coords="452,34,631,66" />
+<area shape="rect" href="epydoc.docparser-module.html#process_assignment" title="process_assignment()" alt="" coords="7,6,191,38" />
+<area shape="rect" href="epydoc.docparser-module.html#process_del" title="process_del()" alt="" coords="37,62,160,94" />
+</map>
+  <img src="call_graph_for_dotted_names_in.gif" alt='' usemap="#call_graph_for_dotted_names_in" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docparser-module.html#parse_name" class="summary-sig-name">parse_name</a>(<span class="summary-sig-arg">elt</span>,
+        <span class="summary-sig-arg">strip_parens</span>=<span class="summary-sig-default">False</span>)</span><br />
+      If the given token tree element is a name token, then return that 
+      name as a string.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docparser-pysrc.html#parse_name">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_parse_name-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_parse_name-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_parse_name" name="call_graph_for_parse_name">
+<area shape="rect" href="epydoc.docparser-module.html#parse_dotted_name" title="parse_dotted_name()" alt="" coords="15,6,193,38" />
+<area shape="rect" href="epydoc.docparser-module.html#parse_name" title="parse_name()" alt="" coords="252,90,375,122" />
+<area shape="rect" href="epydoc.docparser-module.html#process_classdef" title="process_classdef()" alt="" coords="24,62,184,94" />
+<area shape="rect" href="epydoc.docparser-module.html#process_from_import" title="process_from_import()" alt="" coords="7,118,201,150" />
+<area shape="rect" href="epydoc.docparser-module.html#process_funcdef" title="process_funcdef()" alt="" coords="25,174,183,206" />
+</map>
+  <img src="call_graph_for_parse_name.gif" alt='' usemap="#call_graph_for_parse_name" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docparser-module.html#parse_dotted_name" class="summary-sig-name">parse_dotted_name</a>(<span class="summary-sig-arg">elt_list</span>,
+        <span class="summary-sig-arg">strip_parens</span>=<span class="summary-sig-default">True</span>,
+        <span class="summary-sig-arg">parent_name</span>=<span class="summary-sig-default">None</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docparser-pysrc.html#parse_dotted_name">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_parse_dotted_na-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_parse_dotted_na-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_parse_dotted_na" name="call_graph_for_parse_dotted_na">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__init__" title="apidoc.DottedName.__init__()" alt="" coords="480,118,731,150" />
+<area shape="rect" href="epydoc.docparser-module.html#dotted_names_in" title="dotted_names_in()" alt="" coords="24,6,184,38" />
+<area shape="rect" href="epydoc.docparser-module.html#parse_dotted_name" title="parse_dotted_name()" alt="" coords="252,146,431,178" />
+<area shape="rect" href="epydoc.docparser-module.html#parse_classdef_bases" title="parse_classdef_bases()" alt="" coords="7,62,201,94" />
+<area shape="rect" href="epydoc.docparser-module.html#parse_name" title="parse_name()" alt="" coords="544,174,667,206" />
+<area shape="rect" href="epydoc.docparser-module.html#process_assignment" title="process_assignment()" alt="" coords="12,118,196,150" />
+<area shape="rect" href="epydoc.docparser-module.html#process_from_import" title="process_from_import()" alt="" coords="7,174,201,206" />
+<area shape="rect" href="epydoc.docparser-module.html#process_import" title="process_import()" alt="" coords="29,230,179,262" />
+<area shape="rect" href="epydoc.docparser-module.html#rhs_to_valuedoc" title="rhs_to_valuedoc()" alt="" coords="25,286,183,318" />
+</map>
+  <img src="call_graph_for_parse_dotted_na.gif" alt='' usemap="#call_graph_for_parse_dotted_na" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="split_on"></a><span class="summary-sig-name">split_on</span>(<span class="summary-sig-arg">elt_list</span>,
+        <span class="summary-sig-arg">split_tok</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docparser-pysrc.html#split_on">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_split_on-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_split_on-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_split_on" name="call_graph_for_split_on">
+<area shape="rect" href="epydoc.docparser-module.html#init_arglist" title="init_arglist()" alt="" coords="47,6,161,38" />
+<area shape="rect" href="epydoc.docparser-module.html#split_on" title="split_on()" alt="" coords="252,202,345,234" />
+<area shape="rect" href="epydoc.docparser-module.html#parse_classdef_bases" title="parse_classdef_bases()" alt="" coords="7,62,201,94" />
+<area shape="rect" href="epydoc.docparser-module.html#parse_string_list" title="parse_string_list()" alt="" coords="25,118,183,150" />
+<area shape="rect" href="epydoc.docparser-module.html#process_assignment" title="process_assignment()" alt="" coords="12,174,196,206" />
+<area shape="rect" href="epydoc.docparser-module.html#process_del" title="process_del()" alt="" coords="43,230,165,262" />
+<area shape="rect" href="epydoc.docparser-module.html#process_from_import" title="process_from_import()" alt="" coords="7,286,201,318" />
+<area shape="rect" href="epydoc.docparser-module.html#process_import" title="process_import()" alt="" coords="29,342,179,374" />
+<area shape="rect" href="epydoc.docparser-module.html#process_multi_stmt" title="process_multi_stmt()" alt="" coords="13,398,195,430" />
+</map>
+  <img src="call_graph_for_split_on.gif" alt='' usemap="#call_graph_for_split_on" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docparser-module.html#parse_funcdef_arg" class="summary-sig-name">parse_funcdef_arg</a>(<span class="summary-sig-arg">elt</span>)</span><br />
+      If the given tree token element contains a valid function definition 
+      argument (i.e., an identifier token or nested list of identifiers), 
+      then return a corresponding string identifier or nested list of 
+      string identifiers.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docparser-pysrc.html#parse_funcdef_arg">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_parse_funcdef_a-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_parse_funcdef_a-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_parse_funcdef_a" name="call_graph_for_parse_funcdef_a">
+<area shape="rect" href="epydoc.docparser-module.html#init_arglist" title="init_arglist()" alt="" coords="7,30,121,62" />
+<area shape="rect" href="epydoc.docparser-module.html#parse_funcdef_arg" title="parse_funcdef_arg()" alt="" coords="171,30,344,62" />
+</map>
+  <img src="call_graph_for_parse_funcdef_a.gif" alt='' usemap="#call_graph_for_parse_funcdef_a" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docparser-module.html#parse_classdef_bases" class="summary-sig-name">parse_classdef_bases</a>(<span class="summary-sig-arg">elt</span>)</span><br />
+      If the given tree token element contains a valid base list (that 
+      contains only dotted names), then return a corresponding list of <a 
+      href="epydoc.apidoc.DottedName-class.html" 
+      class="link">DottedName</a>s.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docparser-pysrc.html#parse_classdef_bases">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_parse_classdef_-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_parse_classdef_-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_parse_classdef_" name="call_graph_for_parse_classdef_">
+<area shape="rect" href="epydoc.docparser-module.html#parse_classdef_bases" title="parse_classdef_bases()" alt="" coords="216,34,411,66" />
+<area shape="rect" href="epydoc.docparser-module.html#parse_dotted_name" title="parse_dotted_name()" alt="" coords="460,6,639,38" />
+<area shape="rect" href="epydoc.docparser-module.html#split_on" title="split_on()" alt="" coords="503,62,596,94" />
+<area shape="rect" href="epydoc.docparser-module.html#process_classdef" title="process_classdef()" alt="" coords="7,34,167,66" />
+</map>
+  <img src="call_graph_for_parse_classdef_.gif" alt='' usemap="#call_graph_for_parse_classdef_" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docparser-module.html#parse_dotted_name_list" class="summary-sig-name">parse_dotted_name_list</a>(<span class="summary-sig-arg">elt_list</span>)</span><br />
+      If the given list of tree token elements contains a comma-separated 
+      list of dotted names, then return a corresponding list of <a 
+      href="epydoc.apidoc.DottedName-class.html" 
+      class="link">DottedName</a> objects.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docparser-pysrc.html#parse_dotted_name_list">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="parse_string"></a><span class="summary-sig-name">parse_string</span>(<span class="summary-sig-arg">elt_list</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docparser-pysrc.html#parse_string">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_parse_string-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_parse_string-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_parse_string" name="call_graph_for_parse_string">
+<area shape="rect" href="epydoc.docparser-module.html#handle_special_module_vars" title="handle_special_module_vars()" alt="" coords="7,6,257,38" />
+<area shape="rect" href="epydoc.docparser-module.html#parse_string" title="parse_string()" alt="" coords="308,62,433,94" />
+<area shape="rect" href="epydoc.docparser-module.html#parse_string_list" title="parse_string_list()" alt="" coords="53,62,211,94" />
+<area shape="rect" href="epydoc.docparser-module.html#process_docstring" title="process_docstring()" alt="" coords="47,118,217,150" />
+</map>
+  <img src="call_graph_for_parse_string.gif" alt='' usemap="#call_graph_for_parse_string" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="parse_string_list"></a><span class="summary-sig-name">parse_string_list</span>(<span class="summary-sig-arg">elt_list</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docparser-pysrc.html#parse_string_list">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_parse_string_li-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_parse_string_li-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_parse_string_li" name="call_graph_for_parse_string_li">
+<area shape="rect" href="epydoc.docparser-module.html#handle_special_module_vars" title="handle_special_module_vars()" alt="" coords="7,34,257,66" />
+<area shape="rect" href="epydoc.docparser-module.html#parse_string_list" title="parse_string_list()" alt="" coords="308,34,465,66" />
+<area shape="rect" href="epydoc.docparser-module.html#parse_string" title="parse_string()" alt="" coords="516,6,641,38" />
+<area shape="rect" href="epydoc.docparser-module.html#split_on" title="split_on()" alt="" coords="532,62,625,94" />
+</map>
+  <img src="call_graph_for_parse_string_li.gif" alt='' usemap="#call_graph_for_parse_string_li" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Variable Manipulation</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docparser-module.html#set_variable" class="summary-sig-name">set_variable</a>(<span class="summary-sig-arg">namespace</span>,
+        <span class="summary-sig-arg">var_doc</span>,
+        <span class="summary-sig-arg">preserve_docstring</span>=<span class="summary-sig-default">False</span>)</span><br />
+      Add var_doc to namespace.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docparser-pysrc.html#set_variable">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_set_variable-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_set_variable-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_set_variable" name="call_graph_for_set_variable">
+<area shape="rect" href="epydoc.docparser-module.html#_add_import_var" title="_add_import_var()" alt="" coords="18,6,180,38" />
+<area shape="rect" href="epydoc.docparser-module.html#set_variable" title="set_variable()" alt="" coords="242,118,364,150" />
+<area shape="rect" href="epydoc.docparser-module.html#process_assignment" title="process_assignment()" alt="" coords="7,62,191,94" />
+<area shape="rect" href="epydoc.docparser-module.html#process_classdef" title="process_classdef()" alt="" coords="19,118,179,150" />
+<area shape="rect" href="epydoc.docparser-module.html#process_docstring" title="process_docstring()" alt="" coords="14,174,184,206" />
+<area shape="rect" href="epydoc.docparser-module.html#process_funcdef" title="process_funcdef()" alt="" coords="20,230,178,262" />
+</map>
+  <img src="call_graph_for_set_variable.gif" alt='' usemap="#call_graph_for_set_variable" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="del_variable"></a><span class="summary-sig-name">del_variable</span>(<span class="summary-sig-arg">namespace</span>,
+        <span class="summary-sig-arg">name</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docparser-pysrc.html#del_variable">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_del_variable-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_del_variable-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_del_variable" name="call_graph_for_del_variable">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__getitem__" title="apidoc.DottedName.__getitem__()" alt="" coords="356,6,636,38" />
+<area shape="rect" href="epydoc.docparser-module.html#del_variable" title="del_variable()" alt="" coords="180,6,306,38" />
+<area shape="rect" href="epydoc.docparser-module.html#process_del" title="process_del()" alt="" coords="7,6,130,38" />
+</map>
+  <img src="call_graph_for_del_variable.gif" alt='' usemap="#call_graph_for_del_variable" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Name Lookup</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><a href="epydoc.apidoc.VariableDoc-class.html" 
+      class="link">VariableDoc</a> or <code>None</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="lookup_name"></a><span class="summary-sig-name">lookup_name</span>(<span class="summary-sig-arg">identifier</span>,
+        <span class="summary-sig-arg">parent_docs</span>)</span><br />
+      Find and return the documentation for the variable named by the given
+      identifier.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docparser-pysrc.html#lookup_name">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_lookup_name-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_lookup_name-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_lookup_name" name="call_graph_for_lookup_name">
+<area shape="rect" href="epydoc.docintrospecter-module.html#introspect_docs" title="docintrospecter.introspect_docs()" alt="" coords="393,62,663,94" />
+<area shape="rect" href="epydoc.docparser-module.html#find_base" title="find_base()" alt="" coords="29,6,136,38" />
+<area shape="rect" href="epydoc.docparser-module.html#lookup_name" title="lookup_name()" alt="" coords="208,62,344,94" />
+<area shape="rect" href="epydoc.docparser-module.html#lookup_value" title="lookup_value()" alt="" coords="15,62,151,94" />
+<area shape="rect" href="epydoc.docparser-module.html#lookup_variable" title="lookup_variable()" alt="" coords="5,118,160,150" />
+</map>
+  <img src="call_graph_for_lookup_name.gif" alt='' usemap="#call_graph_for_lookup_name" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="lookup_variable"></a><span class="summary-sig-name">lookup_variable</span>(<span class="summary-sig-arg">dotted_name</span>,
+        <span class="summary-sig-arg">parent_docs</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docparser-pysrc.html#lookup_variable">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_lookup_variable-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_lookup_variable-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_lookup_variable" name="call_graph_for_lookup_variable">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__getitem__" title="apidoc.DottedName.__getitem__()" alt="" coords="364,6,644,38" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__len__" title="apidoc.DottedName.__len__()" alt="" coords="380,62,628,94" />
+<area shape="rect" href="epydoc.docparser-module.html#find_base" title="find_base()" alt="" coords="6,90,112,122" />
+<area shape="rect" href="epydoc.docparser-module.html#lookup_variable" title="lookup_variable()" alt="" coords="160,90,315,122" />
+<area shape="rect" href="epydoc.docparser-module.html#lookup_name" title="lookup_name()" alt="" coords="436,118,572,150" />
+<area shape="rect" href="epydoc.docparser-module.html#lookup_value" title="lookup_value()" alt="" coords="436,174,572,206" />
+</map>
+  <img src="call_graph_for_lookup_variable.gif" alt='' usemap="#call_graph_for_lookup_variable" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="lookup_value"></a><span class="summary-sig-name">lookup_value</span>(<span class="summary-sig-arg">dotted_name</span>,
+        <span class="summary-sig-arg">parent_docs</span>)</span><br />
+      Find and return the documentation for the value contained in the 
+      variable with the given name in the current namespace.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docparser-pysrc.html#lookup_value">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_lookup_value-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_lookup_value-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_lookup_value" name="call_graph_for_lookup_value">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__init__" title="apidoc.APIDoc.__init__()" alt="" coords="431,6,647,38" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__add__" title="apidoc.DottedName.__add__()" alt="" coords="413,62,664,94" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__cmp__" title="apidoc.DottedName.__cmp__()" alt="" coords="411,118,667,150" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__getitem__" title="apidoc.DottedName.__getitem__()" alt="" coords="399,174,679,206" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__str__" title="apidoc.DottedName.__str__()" alt="" coords="417,230,660,262" />
+<area shape="rect" href="epydoc.docparser-module.html#get_lhs_parent" title="get_lhs_parent()" alt="" coords="13,90,157,122" />
+<area shape="rect" href="epydoc.docparser-module.html#lookup_value" title="lookup_value()" alt="" coords="213,146,349,178" />
+<area shape="rect" href="epydoc.docparser-module.html#lookup_name" title="lookup_name()" alt="" coords="471,286,607,318" />
+<area shape="rect" href="epydoc.docparser-module.html#lookup_variable" title="lookup_variable()" alt="" coords="8,146,163,178" />
+<area shape="rect" href="epydoc.docparser-module.html#rhs_to_valuedoc" title="rhs_to_valuedoc()" alt="" coords="7,202,164,234" />
+</map>
+  <img src="call_graph_for_lookup_value.gif" alt='' usemap="#call_graph_for_lookup_value" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Docstring Comments</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="add_docstring_from_comments"></a><span class="summary-sig-name">add_docstring_from_comments</span>(<span class="summary-sig-arg">api_doc</span>,
+        <span class="summary-sig-arg">comments</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docparser-pysrc.html#add_docstring_from_comments">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_add_docstring_f-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_add_docstring_f-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_add_docstring_f" name="call_graph_for_add_docstring_f">
+<area shape="rect" href="epydoc.docparser-module.html#add_docstring_from_comments" title="add_docstring_from_comments()" alt="" coords="241,62,511,94" />
+<area shape="rect" href="epydoc.docparser-module.html#process_assignment" title="process_assignment()" alt="" coords="7,6,191,38" />
+<area shape="rect" href="epydoc.docparser-module.html#process_classdef" title="process_classdef()" alt="" coords="19,62,179,94" />
+<area shape="rect" href="epydoc.docparser-module.html#process_funcdef" title="process_funcdef()" alt="" coords="20,118,177,150" />
+</map>
+  <img src="call_graph_for_add_docstring_f.gif" alt='' usemap="#call_graph_for_add_docstring_f" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Tree tokens</th></tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_join_toktree"></a><span class="summary-sig-name">_join_toktree</span>(<span class="summary-sig-arg">s1</span>,
+        <span class="summary-sig-arg">s2</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docparser-pysrc.html#_join_toktree">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_pp_toktree_add_piece"></a><span class="summary-sig-name">_pp_toktree_add_piece</span>(<span class="summary-sig-arg">spacing</span>,
+        <span class="summary-sig-arg">pieces</span>,
+        <span class="summary-sig-arg">piece</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docparser-pysrc.html#_pp_toktree_add_piece">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__pp_toktree_add-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__pp_toktree_add-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__pp_toktree_add" name="call_graph_for__pp_toktree_add">
+<area shape="rect" href="epydoc.docparser-module.html#_pp_toktree" title="_pp_toktree()" alt="" coords="7,6,130,38" />
+<area shape="rect" href="epydoc.docparser-module.html#_pp_toktree_add_piece" title="_pp_toktree_add_piece()" alt="" coords="180,6,388,38" />
+</map>
+  <img src="call_graph_for__pp_toktree_add.gif" alt='' usemap="#call_graph_for__pp_toktree_add" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="pp_toktree"></a><span class="summary-sig-name">pp_toktree</span>(<span class="summary-sig-arg">elts</span>,
+        <span class="summary-sig-arg">spacing</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string">normal</code><code class="variable-quote">'</code></span>,
+        <span class="summary-sig-arg">indent</span>=<span class="summary-sig-default">0</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docparser-pysrc.html#pp_toktree">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_pp_toktree-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_pp_toktree-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_pp_toktree" name="call_graph_for_pp_toktree">
+<area shape="rect" href="epydoc.docparser-module.html#_pp_toktree" title="_pp_toktree()" alt="" coords="378,34,500,66" />
+<area shape="rect" href="epydoc.docparser-module.html#init_arglist" title="init_arglist()" alt="" coords="28,6,143,38" />
+<area shape="rect" href="epydoc.docparser-module.html#pp_toktree" title="pp_toktree()" alt="" coords="214,34,328,66" />
+<area shape="rect" href="epydoc.docparser-module.html#rhs_to_valuedoc" title="rhs_to_valuedoc()" alt="" coords="7,62,164,94" />
+</map>
+  <img src="call_graph_for_pp_toktree.gif" alt='' usemap="#call_graph_for_pp_toktree" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_pp_toktree"></a><span class="summary-sig-name">_pp_toktree</span>(<span class="summary-sig-arg">elts</span>,
+        <span class="summary-sig-arg">spacing</span>,
+        <span class="summary-sig-arg">indent</span>,
+        <span class="summary-sig-arg">pieces</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docparser-pysrc.html#_pp_toktree">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__pp_toktree-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__pp_toktree-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__pp_toktree" name="call_graph_for__pp_toktree">
+<area shape="rect" href="epydoc.docparser-module.html#_pp_toktree" title="_pp_toktree()" alt="" coords="169,30,292,62" />
+<area shape="rect" href="epydoc.docparser-module.html#_pp_toktree_add_piece" title="_pp_toktree_add_piece()" alt="" coords="343,30,551,62" />
+<area shape="rect" href="epydoc.docparser-module.html#pp_toktree" title="pp_toktree()" alt="" coords="5,30,120,62" />
+</map>
+  <img src="call_graph_for__pp_toktree.gif" alt='' usemap="#call_graph_for__pp_toktree" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Helper Functions</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docparser-module.html#get_module_encoding" class="summary-sig-name">get_module_encoding</a>(<span class="summary-sig-arg">filename</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docparser-pysrc.html#get_module_encoding">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_get_module_enco-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_get_module_enco-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_get_module_enco" name="call_graph_for_get_module_enco">
+<area shape="rect" href="epydoc.docparser-module.html#get_module_encoding" title="get_module_encoding()" alt="" coords="179,6,379,38" />
+<area shape="rect" href="epydoc.docparser-module.html#process_file" title="process_file()" alt="" coords="5,6,131,38" />
+</map>
+  <img src="call_graph_for_get_module_enco.gif" alt='' usemap="#call_graph_for_get_module_enco" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_get_module_name"></a><span class="summary-sig-name">_get_module_name</span>(<span class="summary-sig-arg">filename</span>,
+        <span class="summary-sig-arg">package_doc</span>)</span><br />
+      Return (dotted_name, is_package)</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docparser-pysrc.html#_get_module_name">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__get_module_nam-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__get_module_nam-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__get_module_nam" name="call_graph_for__get_module_nam">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__init__" title="apidoc.DottedName.__init__()" alt="" coords="405,6,656,38" />
+<area shape="rect" href="epydoc.docparser-module.html#_get_module_name" title="_get_module_name()" alt="" coords="175,6,356,38" />
+<area shape="rect" href="epydoc.docparser-module.html#parse_docs" title="parse_docs()" alt="" coords="7,6,124,38" />
+</map>
+  <img src="call_graph_for__get_module_nam.gif" alt='' usemap="#call_graph_for__get_module_nam" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docparser-module.html#flatten" class="summary-sig-name">flatten</a>(<span class="summary-sig-arg">lst</span>,
+        <span class="summary-sig-arg">out</span>=<span class="summary-sig-default">None</span>)</span><br />
+      Returns:
+      a flat list containing the leaves of the given nested list.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docparser-pysrc.html#flatten">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Variables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>dict</code></span>
+    </td><td class="summary">
+        <a href="epydoc.docparser-module.html#_moduledoc_cache" class="summary-name" onclick="show_private();">_moduledoc_cache</a> = <code title="{'/home/edloper/newdata/projects/docutils/docutils/__init__.py': <Modu\
+leDoc docutils>,
+ '/home/edloper/newdata/projects/docutils/docutils/nodes.py': <ModuleD\
+oc docutils.nodes>,
+ '/home/edloper/newdata/projects/docutils/docutils/utils.py': <ModuleD\
+oc docutils.utils>,
+ '/home/edloper/newdata/projects/docutils/docutils/writers/__init__.py\
+': <ModuleDoc docutils.writers>,
+..."><code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">/home/edloper/newdata/projects/docutils/d</code><code class="variable-ellipsis">...</code></code><br />
+      A cache of <code>ModuleDoc</code>s that we've already created.
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Configuration Constants: Control Flow</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="PARSE_TRY_BLOCKS"></a><span class="summary-name">PARSE_TRY_BLOCKS</span> = <code title="True">True</code><br />
+      Should the contents of <code>try</code> blocks be examined?
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="PARSE_EXCEPT_BLOCKS"></a><span class="summary-name">PARSE_EXCEPT_BLOCKS</span> = <code title="True">True</code><br />
+      Should the contents of <code>except</code> blocks be examined?
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="PARSE_FINALLY_BLOCKS"></a><span class="summary-name">PARSE_FINALLY_BLOCKS</span> = <code title="True">True</code><br />
+      Should the contents of <code>finally</code> blocks be examined?
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="PARSE_IF_BLOCKS"></a><span class="summary-name">PARSE_IF_BLOCKS</span> = <code title="True">True</code><br />
+      Should the contents of <code>if</code> blocks be examined?
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="PARSE_ELSE_BLOCKS"></a><span class="summary-name">PARSE_ELSE_BLOCKS</span> = <code title="True">True</code><br />
+      Should the contents of <code>else</code> and <code>elif</code> blocks
+      be examined?
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="PARSE_WHILE_BLOCKS"></a><span class="summary-name">PARSE_WHILE_BLOCKS</span> = <code title="False">False</code><br />
+      Should the contents of <code>while</code> blocks be examined?
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="PARSE_FOR_BLOCKS"></a><span class="summary-name">PARSE_FOR_BLOCKS</span> = <code title="False">False</code><br />
+      Should the contents of <code>for</code> blocks be examined?
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Configuration Constants: Imports</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docparser-module.html#IMPORT_HANDLING" class="summary-name">IMPORT_HANDLING</a> = <code title="'link'"><code class="variable-quote">'</code><code class="variable-string">link</code><code class="variable-quote">'</code></code><br />
+      What should <code>docparser</code> do when it encounters an import 
+      statement?
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docparser-module.html#IMPORT_STAR_HANDLING" class="summary-name">IMPORT_STAR_HANDLING</a> = <code title="'parse'"><code class="variable-quote">'</code><code class="variable-string">parse</code><code class="variable-quote">'</code></code><br />
+      When <code>docparser</code> encounters a <code>'from <i 
+      class="math">m</i> import *'</code> statement, and is unable to parse
+      <code><i class="math">m</i></code> (either because <a 
+      href="epydoc.docparser-module.html#IMPORT_HANDLING" 
+      class="link">IMPORT_HANDLING</a>=<code>'link'</code>, or because 
+      parsing failed), how should it determine the list of identifiers 
+      expored by <code><i class="math">m</i></code>?
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docparser-module.html#DEFAULT_DECORATOR_BEHAVIOR" class="summary-name">DEFAULT_DECORATOR_BEHAVIOR</a> = <code title="'transparent'"><code class="variable-quote">'</code><code class="variable-string">transparent</code><code class="variable-quote">'</code></code><br />
+      When <code>DocParse</code> encounters an unknown decorator, what 
+      should it do to the documentation of the decorated function?
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docparser-module.html#BASE_HANDLING" class="summary-name">BASE_HANDLING</a> = <code title="'parse'"><code class="variable-quote">'</code><code class="variable-string">parse</code><code class="variable-quote">'</code></code><br />
+      What should <code>docparser</code> do when it encounters a base class
+      that was imported from another module?
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Configuration Constants: Comment docstrings</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="COMMENT_DOCSTRING_MARKER"></a><span class="summary-name">COMMENT_DOCSTRING_MARKER</span> = <code title="'#:'"><code class="variable-quote">'</code><code class="variable-string">#:</code><code class="variable-quote">'</code></code><br />
+      The prefix used to mark comments that contain attribute docstrings 
+      for variables.
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Configuration Constants: Grouping</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docparser-module.html#START_GROUP_MARKER" class="summary-name">START_GROUP_MARKER</a> = <code title="'#{'"><code class="variable-quote">'</code><code class="variable-string">#{</code><code class="variable-quote">'</code></code><br />
+      The prefix used to mark a comment that starts a group.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docparser-module.html#END_GROUP_MARKER" class="summary-name">END_GROUP_MARKER</a> = <code title="'#}'"><code class="variable-quote">'</code><code class="variable-string">#}</code><code class="variable-quote">'</code></code><br />
+      The prefix used to mark a comment that ends a group.
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Line processing</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docparser-module.html#CONTROL_FLOW_KEYWORDS" class="summary-name">CONTROL_FLOW_KEYWORDS</a> = <code title="['if', 'elif', 'else', 'while', 'for', 'try', 'except', 'finally']"><code class="variable-group">[</code><code class="variable-quote">'</code><code class="variable-string">if</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">elif</code><code class="variable-quote">' [...]
+      A list of the control flow keywords.
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTION DETAILS ==================== -->
+<a name="section-FunctionDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Function Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-FunctionDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="parse_docs"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">parse_docs</span>(<span class="sig-arg">filename</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">name</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">context</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">is_script</span>=<span class="sig-default">False</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docparser-pysrc.html#parse_docs">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_parse_docs-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_parse_docs-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_parse_docs" name="call_graph_for_parse_docs">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__init__" title="apidoc.DottedName.__init__()" alt="" coords="571,62,821,94" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#__init__" title="apidoc.NamespaceDoc.__init__()" alt="" coords="560,118,832,150" />
+<area shape="rect" href="epydoc.docbuilder-module.html#_get_docs_from_module_file" title="docbuilder._get_docs_from_module_file()" alt="" coords="5,202,344,234" />
+<area shape="rect" href="epydoc.docparser-module.html#parse_docs" title="parse_docs()" alt="" coords="393,230,511,262" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#introspect_docs" title="docintrospecter.introspect_docs()" alt="" coords="561,174,831,206" />
+<area shape="rect" href="epydoc.docparser-module.html#_find" title="_find()" alt="" coords="659,6,733,38" />
+<area shape="rect" href="epydoc.docparser-module.html#_get_module_name" title="_get_module_name()" alt="" coords="605,230,787,262" />
+<area shape="rect" href="epydoc.docparser-module.html#_parse_package" title="_parse_package()" alt="" coords="619,286,773,318" />
+<area shape="rect" href="epydoc.docparser-module.html#find_base" title="find_base()" alt="" coords="121,258,228,290" />
+<area shape="rect" href="epydoc.docparser-module.html#handle_special_module_vars" title="handle_special_module_vars()" alt="" coords="571,342,821,374" />
+<area shape="rect" href="epydoc.docparser-module.html#process_file" title="process_file()" alt="" coords="633,398,759,430" />
+<area shape="rect" href="epydoc.log-module.html#info" title="log.info()" alt="" coords="651,454,741,486" />
+<area shape="rect" href="epydoc.util-module.html#py_src_filename" title="util.py_src_filename()" alt="" coords="601,510,791,542" />
+</map>
+  <img src="call_graph_for_parse_docs.gif" alt='' usemap="#call_graph_for_parse_docs" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Generate the API documentation for a specified object by parsing 
+  Python source files, and return it as a <a 
+  href="epydoc.apidoc.ValueDoc-class.html" class="link">ValueDoc</a>. The 
+  object to generate documentation for may be specified using the 
+  <code>filename</code> parameter <i>or</i> the <code>name</code> 
+  parameter. (It is an error to specify both a filename and a name; or to 
+  specify neither a filename nor a name).</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>filename</code></strong> - The name of the file that contains the python source code for a 
+          package, module, or script.  If <code>filename</code> is 
+          specified, then <code>parse</code> will return a 
+          <code>ModuleDoc</code> describing its contents.</li>
+        <li><strong class="pname"><code>name</code></strong> - The fully-qualified python dotted name of any value (including 
+          packages, modules, classes, and functions).  
+          <code>parse_docs()</code> will automatically figure out which 
+          module(s) it needs to parse in order to find the documentation 
+          for the specified object.</li>
+        <li><strong class="pname"><code>context</code></strong> - The API documentation for the package that contains 
+          <code>filename</code>.  If no context is given, then 
+          <code>filename</code> is assumed to contain a top-level module or
+          package.  It is an error to specify a <code>context</code> if the
+          <code>name</code> argument is used.</li>
+    </ul></dd>
+    <dt>Returns: <a href="epydoc.apidoc.ValueDoc-class.html" class="link">ValueDoc</a></dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="_find"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">_find</span>(<span class="sig-arg">name</span>,
+        <span class="sig-arg">package_doc</span>=<span class="sig-default">None</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docparser-pysrc.html#_find">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__find-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for__find-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__find" name="call_graph_for__find">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__getitem__" title="apidoc.DottedName.__getitem__()" alt="" coords="409,6,689,38" />
+<area shape="rect" href="epydoc.docparser-module.html#_find" title="_find()" alt="" coords="285,146,360,178" />
+<area shape="rect" href="epydoc.docparser-module.html#_find_in_namespace" title="_find_in_namespace()" alt="" coords="455,62,644,94" />
+<area shape="rect" href="epydoc.docparser-module.html#_get_filename" title="_get_filename()" alt="" coords="479,118,620,150" />
+<area shape="rect" href="epydoc.docparser-module.html#_is_submodule_import_var" title="_is_submodule_import_var()" alt="" coords="429,174,669,206" />
+<area shape="rect" href="epydoc.docparser-module.html#parse_docs" title="parse_docs()" alt="" coords="491,230,608,262" />
+<area shape="rect" href="epydoc.docparser-module.html#_process_fromstar_import" title="_process_fromstar_import()" alt="" coords="5,146,237,178" />
+</map>
+  <img src="call_graph_for__find.gif" alt='' usemap="#call_graph_for__find" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Return the API documentaiton for the object whose name is 
+  <code>name</code>.  <code>package_doc</code>, if specified, is the API 
+  documentation for the package containing the named object.</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="_is_submodule_import_var"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">_is_submodule_import_var</span>(<span class="sig-arg">module_doc</span>,
+        <span class="sig-arg">var_name</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docparser-pysrc.html#_is_submodule_import_var">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__is_submodule_i-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for__is_submodule_i-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__is_submodule_i" name="call_graph_for__is_submodule_i">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__cmp__" title="apidoc.DottedName.__cmp__()" alt="" coords="417,6,673,38" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__init__" title="apidoc.DottedName.__init__()" alt="" coords="420,62,671,94" />
+<area shape="rect" href="epydoc.docparser-module.html#_find" title="_find()" alt="" coords="5,34,80,66" />
+<area shape="rect" href="epydoc.docparser-module.html#_is_submodule_import_var" title="_is_submodule_import_var()" alt="" coords="128,34,368,66" />
+</map>
+  <img src="call_graph_for__is_submodule_i.gif" alt='' usemap="#call_graph_for__is_submodule_i" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Return true if <code>var_name</code> is the name of a variable in 
+  <code>module_doc</code> that just contains an <code>imported_from</code> 
+  link to a submodule of the same name.  (I.e., is a variable created when 
+  a package imports one of its own submodules.)</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="process_file"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">process_file</span>(<span class="sig-arg">module_doc</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docparser-pysrc.html#process_file">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_process_file-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_process_file-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_process_file" name="call_graph_for_process_file">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__cmp__" title="apidoc.APIDoc.__cmp__()" alt="" coords="383,6,607,38" />
+<area shape="rect" href="epydoc.docparser-module.html#add_to_group" title="add_to_group()" alt="" coords="427,62,563,94" />
+<area shape="rect" href="epydoc.docparser-module.html#get_module_encoding" title="get_module_encoding()" alt="" coords="395,118,595,150" />
+<area shape="rect" href="epydoc.docparser-module.html#parse_docs" title="parse_docs()" alt="" coords="7,146,124,178" />
+<area shape="rect" href="epydoc.docparser-module.html#process_file" title="process_file()" alt="" coords="173,146,299,178" />
+<area shape="rect" href="epydoc.docparser-module.html#process_line" title="process_line()" alt="" coords="431,174,559,206" />
+<area shape="rect" href="epydoc.docparser-module.html#shallow_parse" title="shallow_parse()" alt="" coords="424,230,565,262" />
+<area shape="rect" href="epydoc.util-module.html#decode_with_backslashreplace" title="util.decode_with_backslashreplace()" alt="" coords="347,286,643,318" />
+</map>
+  <img src="call_graph_for_process_file.gif" alt='' usemap="#call_graph_for_process_file" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Read the given <code>ModuleDoc</code>'s file, and add variables 
+  corresponding to any objects defined in that file.  In particular, read 
+  and tokenize <code>module_doc.filename</code>, and process each logical 
+  line using <a href="epydoc.docparser-module.html#process_line" 
+  class="link">process_line()</a>.</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="shallow_parse"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">shallow_parse</span>(<span class="sig-arg">line_toks</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docparser-pysrc.html#shallow_parse">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_shallow_parse-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_shallow_parse-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_shallow_parse" name="call_graph_for_shallow_parse">
+<area shape="rect" href="epydoc.docparser-module.html#process_file" title="process_file()" alt="" coords="5,6,131,38" />
+<area shape="rect" href="epydoc.docparser-module.html#shallow_parse" title="shallow_parse()" alt="" coords="179,6,320,38" />
+</map>
+  <img src="call_graph_for_shallow_parse.gif" alt='' usemap="#call_graph_for_shallow_parse" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Given a flat list of tokens, return a nested tree structure (called a 
+  <a name="index-token_tree"></a><i class="indexterm">token tree</i>), 
+  whose leaves are identical to the original list, but whose structure 
+  reflects the structure implied by the grouping tokens (i.e., parenthases,
+  braces, and brackets).  If the parenthases, braces, and brackets do not 
+  match, or are not balanced, then raise a ParseError.</p>
+  <p>Assign some structure to a sequence of structure (group parens).</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="process_line"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">process_line</span>(<span class="sig-arg">line</span>,
+        <span class="sig-arg">parent_docs</span>,
+        <span class="sig-arg">prev_line_doc</span>,
+        <span class="sig-arg">lineno</span>,
+        <span class="sig-arg">comments</span>,
+        <span class="sig-arg">decorators</span>,
+        <span class="sig-arg">encoding</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docparser-pysrc.html#process_line">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_process_line-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_process_line-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_process_line" name="call_graph_for_process_line">
+<area shape="rect" href="epydoc.docparser-module.html#process_assignment" title="process_assignment()" alt="" coords="383,6,567,38" />
+<area shape="rect" href="epydoc.docparser-module.html#process_classdef" title="process_classdef()" alt="" coords="395,62,555,94" />
+<area shape="rect" href="epydoc.docparser-module.html#process_control_flow_line" title="process_control_flow_line()" alt="" coords="359,118,591,150" />
+<area shape="rect" href="epydoc.docparser-module.html#process_del" title="process_del()" alt="" coords="413,174,536,206" />
+<area shape="rect" href="epydoc.docparser-module.html#process_docstring" title="process_docstring()" alt="" coords="389,230,560,262" />
+<area shape="rect" href="epydoc.docparser-module.html#process_file" title="process_file()" alt="" coords="5,314,131,346" />
+<area shape="rect" href="epydoc.docparser-module.html#process_line" title="process_line()" alt="" coords="180,314,308,346" />
+<area shape="rect" href="epydoc.docparser-module.html#process_from_import" title="process_from_import()" alt="" coords="377,286,572,318" />
+<area shape="rect" href="epydoc.docparser-module.html#process_funcdef" title="process_funcdef()" alt="" coords="396,342,553,374" />
+<area shape="rect" href="epydoc.docparser-module.html#process_import" title="process_import()" alt="" coords="400,398,549,430" />
+<area shape="rect" href="epydoc.docparser-module.html#process_multi_stmt" title="process_multi_stmt()" alt="" coords="384,454,565,486" />
+<area shape="rect" href="epydoc.docparser-module.html#process_one_line_block" title="process_one_line_block()" alt="" coords="367,510,583,542" />
+</map>
+  <img src="call_graph_for_process_line.gif" alt='' usemap="#call_graph_for_process_line" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  
+  <dl class="fields">
+    <dt>Returns:</dt>
+        <dd><code>new-doc</code>, <code>decorator</code>..?</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="_process_fromstar_import"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">_process_fromstar_import</span>(<span class="sig-arg">src</span>,
+        <span class="sig-arg">parent_docs</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docparser-pysrc.html#_process_fromstar_import">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__process_fromst-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for__process_fromst-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__process_fromst" name="call_graph_for__process_fromst">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__init__" title="apidoc.DottedName.__init__()" alt="" coords="531,6,782,38" />
+<area shape="rect" href="epydoc.docparser-module.html#_add_import_var" title="_add_import_var()" alt="" coords="575,62,738,94" />
+<area shape="rect" href="epydoc.docparser-module.html#_find" title="_find()" alt="" coords="619,118,694,150" />
+<area shape="rect" href="epydoc.docparser-module.html#_global_name" title="_global_name()" alt="" coords="586,174,727,206" />
+<area shape="rect" href="epydoc.docparser-module.html#_process_fromstar_import" title="_process_fromstar_import()" alt="" coords="251,90,483,122" />
+<area shape="rect" href="epydoc.docparser-module.html#process_from_import" title="process_from_import()" alt="" coords="7,90,202,122" />
+</map>
+  <img src="call_graph_for__process_fromst.gif" alt='' usemap="#call_graph_for__process_fromst" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Handle a statement of the form:</p>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">from</span> <src> <span class="py-keyword">import</span> *</pre>
+  <p>If <a href="epydoc.docparser-module.html#IMPORT_HANDLING" 
+  class="link">IMPORT_HANDLING</a> is <code>'parse'</code>, then first try 
+  to parse the module <code><i class="math"><src></i></code>, and 
+  copy all of its exported variables to <code>parent_docs[-1]</code>.</p>
+  <p>Otherwise, try to determine the names of the variables exported by 
+  <code><i class="math"><src></i></code>, and create a new variable 
+  for each export.  If <a 
+  href="epydoc.docparser-module.html#IMPORT_STAR_HANDLING" 
+  class="link">IMPORT_STAR_HANDLING</a> is <code>'parse'</code>, then the 
+  list of exports if found by parsing <code><i 
+  class="math"><src></i></code>; if it is <code>'introspect'</code>, 
+  then the list of exports is found by importing and introspecting <code><i
+  class="math"><src></i></code>.</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="_import_var"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">_import_var</span>(<span class="sig-arg">name</span>,
+        <span class="sig-arg">parent_docs</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docparser-pysrc.html#_import_var">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__import_var-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for__import_var-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__import_var" name="call_graph_for__import_var">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__getitem__" title="apidoc.DottedName.__getitem__()" alt="" coords="383,6,663,38" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__len__" title="apidoc.DottedName.__len__()" alt="" coords="399,62,647,94" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__radd__" title="apidoc.DottedName.__radd__()" alt="" coords="393,118,652,150" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#__init__" title="apidoc.NamespaceDoc.__init__()" alt="" coords="387,174,659,206" />
+<area shape="rect" href="epydoc.docparser-module.html#_add_import_var" title="_add_import_var()" alt="" coords="441,230,604,262" />
+<area shape="rect" href="epydoc.docparser-module.html#_global_name" title="_global_name()" alt="" coords="452,286,593,318" />
+<area shape="rect" href="epydoc.docparser-module.html#_import_var" title="_import_var()" alt="" coords="207,146,332,178" />
+<area shape="rect" href="epydoc.docparser-module.html#process_import" title="process_import()" alt="" coords="7,146,156,178" />
+</map>
+  <img src="call_graph_for__import_var.gif" alt='' usemap="#call_graph_for__import_var" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Handle a statement of the form:</p>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">import</span> <name></pre>
+  <p>If <a href="epydoc.docparser-module.html#IMPORT_HANDLING" 
+  class="link">IMPORT_HANDLING</a> is <code>'parse'</code>, then first try 
+  to find the value by parsing; and create an appropriate variable in 
+  parentdoc.</p>
+  <p>Otherwise, add a variable for the imported variable.  (More than one 
+  variable may be created for cases like <code>'import a.b'</code>, where 
+  we need to create a variable <code>'a'</code> in parentdoc containing a 
+  proxy module; and a variable <code>'b'</code> in the proxy module.</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="_import_var_as"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">_import_var_as</span>(<span class="sig-arg">src</span>,
+        <span class="sig-arg">name</span>,
+        <span class="sig-arg">parent_docs</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docparser-pysrc.html#_import_var_as">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__import_var_as-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for__import_var_as-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__import_var_as" name="call_graph_for__import_var_as">
+<area shape="rect" href="epydoc.docparser-module.html#_add_import_var" title="_add_import_var()" alt="" coords="452,6,615,38" />
+<area shape="rect" href="epydoc.docparser-module.html#_global_name" title="_global_name()" alt="" coords="463,62,604,94" />
+<area shape="rect" href="epydoc.docparser-module.html#_import_var_as" title="_import_var_as()" alt="" coords="251,34,403,66" />
+<area shape="rect" href="epydoc.docparser-module.html#process_from_import" title="process_from_import()" alt="" coords="7,34,201,66" />
+</map>
+  <img src="call_graph_for__import_var_as.gif" alt='' usemap="#call_graph_for__import_var_as" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Handle a statement of the form:</p>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">import</span> src <span class="py-keyword">as</span> name</pre>
+  <p>If <a href="epydoc.docparser-module.html#IMPORT_HANDLING" 
+  class="link">IMPORT_HANDLING</a> is <code>'parse'</code>, then first try 
+  to find the value by parsing; and create an appropriate variable in 
+  parentdoc.</p>
+  <p>Otherwise, create a variables with its <code>imported_from</code> 
+  attribute pointing to the imported object.</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="process_one_line_block"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">process_one_line_block</span>(<span class="sig-arg">line</span>,
+        <span class="sig-arg">parent_docs</span>,
+        <span class="sig-arg">prev_line_doc</span>,
+        <span class="sig-arg">lineno</span>,
+        <span class="sig-arg">comments</span>,
+        <span class="sig-arg">decorators</span>,
+        <span class="sig-arg">encoding</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docparser-pysrc.html#process_one_line_block">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_process_one_lin-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_process_one_lin-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_process_one_lin" name="call_graph_for_process_one_lin">
+<area shape="rect" href="epydoc.docparser-module.html#process_line" title="process_line()" alt="" coords="7,6,135,38" />
+<area shape="rect" href="epydoc.docparser-module.html#process_one_line_block" title="process_one_line_block()" alt="" coords="184,6,400,38" />
+</map>
+  <img src="call_graph_for_process_one_lin.gif" alt='' usemap="#call_graph_for_process_one_lin" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>The line handler for single-line blocks, such as:</p>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">def</span> <span class="py-defname">f</span>(x): return x*2</pre>
+  <p>This handler calls <a href="epydoc.docparser-module.html#process_line"
+  class="link">process_line</a> twice: once for the tokens up to and 
+  including the colon, and once for the remaining tokens.  The comment 
+  docstring is applied to the first line only.</p>
+  <dl class="fields">
+    <dt>Returns:</dt>
+        <dd><code>None</code></dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="process_multi_stmt"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">process_multi_stmt</span>(<span class="sig-arg">line</span>,
+        <span class="sig-arg">parent_docs</span>,
+        <span class="sig-arg">prev_line_doc</span>,
+        <span class="sig-arg">lineno</span>,
+        <span class="sig-arg">comments</span>,
+        <span class="sig-arg">decorators</span>,
+        <span class="sig-arg">encoding</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docparser-pysrc.html#process_multi_stmt">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_process_multi_s-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_process_multi_s-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_process_multi_s" name="call_graph_for_process_multi_s">
+<area shape="rect" href="epydoc.docparser-module.html#process_line" title="process_line()" alt="" coords="7,6,135,38" />
+<area shape="rect" href="epydoc.docparser-module.html#process_multi_stmt" title="process_multi_stmt()" alt="" coords="184,6,366,38" />
+<area shape="rect" href="epydoc.docparser-module.html#split_on" title="split_on()" alt="" coords="415,6,508,38" />
+</map>
+  <img src="call_graph_for_process_multi_s.gif" alt='' usemap="#call_graph_for_process_multi_s" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>The line handler for semicolon-separated statements, such as:</p>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>x=1; y=2; z=3</pre>
+  <p>This handler calls <a href="epydoc.docparser-module.html#process_line"
+  class="link">process_line</a> once for each statement. The comment 
+  docstring is not passed on to any of the sub-statements.</p>
+  <dl class="fields">
+    <dt>Returns:</dt>
+        <dd><code>None</code></dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="process_del"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">process_del</span>(<span class="sig-arg">line</span>,
+        <span class="sig-arg">parent_docs</span>,
+        <span class="sig-arg">prev_line_doc</span>,
+        <span class="sig-arg">lineno</span>,
+        <span class="sig-arg">comments</span>,
+        <span class="sig-arg">decorators</span>,
+        <span class="sig-arg">encoding</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docparser-pysrc.html#process_del">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_process_del-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_process_del-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_process_del" name="call_graph_for_process_del">
+<area shape="rect" href="epydoc.docparser-module.html#del_variable" title="del_variable()" alt="" coords="376,6,501,38" />
+<area shape="rect" href="epydoc.docparser-module.html#dotted_names_in" title="dotted_names_in()" alt="" coords="359,62,519,94" />
+<area shape="rect" href="epydoc.docparser-module.html#process_del" title="process_del()" alt="" coords="185,62,308,94" />
+<area shape="rect" href="epydoc.docparser-module.html#split_on" title="split_on()" alt="" coords="392,118,485,150" />
+<area shape="rect" href="epydoc.docparser-module.html#process_line" title="process_line()" alt="" coords="7,62,135,94" />
+</map>
+  <img src="call_graph_for_process_del.gif" alt='' usemap="#call_graph_for_process_del" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>The line handler for delete statements, such as:</p>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">del</span> x, y.z</pre>
+  <p>This handler calls <a href="epydoc.docparser-module.html#del_variable"
+  class="link">del_variable</a> for each dotted variable in the variable 
+  list.  The variable list may be nested.  Complex expressions in the 
+  variable list (such as <code>x[3]</code>) are ignored.</p>
+  <dl class="fields">
+    <dt>Returns:</dt>
+        <dd><code>None</code></dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="process_docstring"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">process_docstring</span>(<span class="sig-arg">line</span>,
+        <span class="sig-arg">parent_docs</span>,
+        <span class="sig-arg">prev_line_doc</span>,
+        <span class="sig-arg">lineno</span>,
+        <span class="sig-arg">comments</span>,
+        <span class="sig-arg">decorators</span>,
+        <span class="sig-arg">encoding</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docparser-pysrc.html#process_docstring">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_process_docstri-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_process_docstri-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_process_docstri" name="call_graph_for_process_docstri">
+<area shape="rect" href="epydoc.docparser-module.html#parse_string" title="parse_string()" alt="" coords="404,6,529,38" />
+<area shape="rect" href="epydoc.docparser-module.html#process_docstring" title="process_docstring()" alt="" coords="184,34,355,66" />
+<area shape="rect" href="epydoc.docparser-module.html#set_variable" title="set_variable()" alt="" coords="405,62,528,94" />
+<area shape="rect" href="epydoc.docparser-module.html#process_line" title="process_line()" alt="" coords="7,34,135,66" />
+</map>
+  <img src="call_graph_for_process_docstri.gif" alt='' usemap="#call_graph_for_process_docstri" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>The line handler for bare string literals.  If 
+  <code>prev_line_doc</code> is not <code>None</code>, then the string 
+  literal is added to that <code>APIDoc</code> as a docstring.  If it 
+  already has a docstring (from comment docstrings), then the new docstring
+  will be appended to the old one.</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="process_funcdef"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">process_funcdef</span>(<span class="sig-arg">line</span>,
+        <span class="sig-arg">parent_docs</span>,
+        <span class="sig-arg">prev_line_doc</span>,
+        <span class="sig-arg">lineno</span>,
+        <span class="sig-arg">comments</span>,
+        <span class="sig-arg">decorators</span>,
+        <span class="sig-arg">encoding</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docparser-pysrc.html#process_funcdef">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_process_funcdef-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_process_funcdef-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_process_funcdef" name="call_graph_for_process_funcdef">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__init__" title="apidoc.APIDoc.__init__()" alt="" coords="418,6,634,38" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__init__" title="apidoc.DottedName.__init__()" alt="" coords="400,62,651,94" />
+<area shape="rect" href="epydoc.apidoc.VariableDoc-class.html#__init__" title="apidoc.VariableDoc.__init__()" alt="" coords="400,118,651,150" />
+<area shape="rect" href="epydoc.docparser-module.html#add_docstring_from_comments" title="add_docstring_from_comments()" alt="" coords="391,174,660,206" />
+<area shape="rect" href="epydoc.docparser-module.html#init_arglist" title="init_arglist()" alt="" coords="468,230,583,262" />
+<area shape="rect" href="epydoc.docparser-module.html#parse_name" title="parse_name()" alt="" coords="464,286,587,318" />
+<area shape="rect" href="epydoc.docparser-module.html#process_funcdef" title="process_funcdef()" alt="" coords="184,174,342,206" />
+<area shape="rect" href="epydoc.docparser-module.html#set_variable" title="set_variable()" alt="" coords="464,342,587,374" />
+<area shape="rect" href="epydoc.docparser-module.html#process_line" title="process_line()" alt="" coords="7,174,135,206" />
+</map>
+  <img src="call_graph_for_process_funcdef.gif" alt='' usemap="#call_graph_for_process_funcdef" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>The line handler for function declaration lines, such as:</p>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">def</span> <span class="py-defname">f</span>(a, b=22, (c,d)):</pre>
+  <p>This handler creates and initializes a new <code>VariableDoc</code> 
+  containing a <code>RoutineDoc</code>, adds the <code>VariableDoc</code> 
+  to the containing namespace, and returns the <code>RoutineDoc</code>.</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="process_classdef"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">process_classdef</span>(<span class="sig-arg">line</span>,
+        <span class="sig-arg">parent_docs</span>,
+        <span class="sig-arg">prev_line_doc</span>,
+        <span class="sig-arg">lineno</span>,
+        <span class="sig-arg">comments</span>,
+        <span class="sig-arg">decorators</span>,
+        <span class="sig-arg">encoding</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docparser-pysrc.html#process_classdef">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_process_classde-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_process_classde-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_process_classde" name="call_graph_for_process_classde">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__cmp__" title="apidoc.DottedName.__cmp__()" alt="" coords="403,6,659,38" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__init__" title="apidoc.DottedName.__init__()" alt="" coords="405,62,656,94" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#__init__" title="apidoc.NamespaceDoc.__init__()" alt="" coords="395,118,667,150" />
+<area shape="rect" href="epydoc.apidoc.VariableDoc-class.html#__init__" title="apidoc.VariableDoc.__init__()" alt="" coords="405,174,656,206" />
+<area shape="rect" href="epydoc.docparser-module.html#add_docstring_from_comments" title="add_docstring_from_comments()" alt="" coords="396,230,665,262" />
+<area shape="rect" href="epydoc.docparser-module.html#find_base" title="find_base()" alt="" coords="477,286,584,318" />
+<area shape="rect" href="epydoc.docparser-module.html#parse_classdef_bases" title="parse_classdef_bases()" alt="" coords="433,342,628,374" />
+<area shape="rect" href="epydoc.docparser-module.html#parse_name" title="parse_name()" alt="" coords="469,398,592,430" />
+<area shape="rect" href="epydoc.docparser-module.html#process_classdef" title="process_classdef()" alt="" coords="185,230,345,262" />
+<area shape="rect" href="epydoc.docparser-module.html#set_variable" title="set_variable()" alt="" coords="469,454,592,486" />
+<area shape="rect" href="epydoc.docparser-module.html#process_line" title="process_line()" alt="" coords="7,230,135,262" />
+</map>
+  <img src="call_graph_for_process_classde.gif" alt='' usemap="#call_graph_for_process_classde" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>The line handler for class declaration lines, such as:</p>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">class</span> <span class="py-defname">Foo</span>(Bar, Baz):</pre>
+  <p>This handler creates and initializes a new <code>VariableDoc</code> 
+  containing a <code>ClassDoc</code>, adds the <code>VariableDoc</code> to 
+  the containing namespace, and returns the <code>ClassDoc</code>.</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="parse_name"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">parse_name</span>(<span class="sig-arg">elt</span>,
+        <span class="sig-arg">strip_parens</span>=<span class="sig-default">False</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docparser-pysrc.html#parse_name">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_parse_name-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_parse_name-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_parse_name" name="call_graph_for_parse_name">
+<area shape="rect" href="epydoc.docparser-module.html#parse_dotted_name" title="parse_dotted_name()" alt="" coords="15,6,193,38" />
+<area shape="rect" href="epydoc.docparser-module.html#parse_name" title="parse_name()" alt="" coords="252,90,375,122" />
+<area shape="rect" href="epydoc.docparser-module.html#process_classdef" title="process_classdef()" alt="" coords="24,62,184,94" />
+<area shape="rect" href="epydoc.docparser-module.html#process_from_import" title="process_from_import()" alt="" coords="7,118,201,150" />
+<area shape="rect" href="epydoc.docparser-module.html#process_funcdef" title="process_funcdef()" alt="" coords="25,174,183,206" />
+</map>
+  <img src="call_graph_for_parse_name.gif" alt='' usemap="#call_graph_for_parse_name" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>If the given token tree element is a name token, then return that name
+  as a string.  Otherwise, raise ParseError.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>strip_parens</code></strong> - If true, then if elt is a single name enclosed in parenthases, 
+          then return that name.</li>
+    </ul></dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="parse_dotted_name"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">parse_dotted_name</span>(<span class="sig-arg">elt_list</span>,
+        <span class="sig-arg">strip_parens</span>=<span class="sig-default">True</span>,
+        <span class="sig-arg">parent_name</span>=<span class="sig-default">None</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docparser-pysrc.html#parse_dotted_name">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_parse_dotted_na-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_parse_dotted_na-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_parse_dotted_na" name="call_graph_for_parse_dotted_na">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__init__" title="apidoc.DottedName.__init__()" alt="" coords="480,118,731,150" />
+<area shape="rect" href="epydoc.docparser-module.html#dotted_names_in" title="dotted_names_in()" alt="" coords="24,6,184,38" />
+<area shape="rect" href="epydoc.docparser-module.html#parse_dotted_name" title="parse_dotted_name()" alt="" coords="252,146,431,178" />
+<area shape="rect" href="epydoc.docparser-module.html#parse_classdef_bases" title="parse_classdef_bases()" alt="" coords="7,62,201,94" />
+<area shape="rect" href="epydoc.docparser-module.html#parse_name" title="parse_name()" alt="" coords="544,174,667,206" />
+<area shape="rect" href="epydoc.docparser-module.html#process_assignment" title="process_assignment()" alt="" coords="12,118,196,150" />
+<area shape="rect" href="epydoc.docparser-module.html#process_from_import" title="process_from_import()" alt="" coords="7,174,201,206" />
+<area shape="rect" href="epydoc.docparser-module.html#process_import" title="process_import()" alt="" coords="29,230,179,262" />
+<area shape="rect" href="epydoc.docparser-module.html#rhs_to_valuedoc" title="rhs_to_valuedoc()" alt="" coords="25,286,183,318" />
+</map>
+  <img src="call_graph_for_parse_dotted_na.gif" alt='' usemap="#call_graph_for_parse_dotted_na" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>parent_name</code></strong> (<a href="epydoc.apidoc.DottedName-class.html" 
+          class="link">DottedName</a>) - canonical name of referring module, to resolve relative imports.</li>
+    </ul></dd>
+  </dl>
+<div class="fields">      <p><strong>Bug:</strong>
+        does not handle 'x.(y).z'
+      </p>
+</div></td></tr></table>
+</div>
+<a name="parse_funcdef_arg"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">parse_funcdef_arg</span>(<span class="sig-arg">elt</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docparser-pysrc.html#parse_funcdef_arg">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_parse_funcdef_a-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_parse_funcdef_a-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_parse_funcdef_a" name="call_graph_for_parse_funcdef_a">
+<area shape="rect" href="epydoc.docparser-module.html#init_arglist" title="init_arglist()" alt="" coords="7,30,121,62" />
+<area shape="rect" href="epydoc.docparser-module.html#parse_funcdef_arg" title="parse_funcdef_arg()" alt="" coords="171,30,344,62" />
+</map>
+  <img src="call_graph_for_parse_funcdef_a.gif" alt='' usemap="#call_graph_for_parse_funcdef_a" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>If the given tree token element contains a valid function definition 
+  argument (i.e., an identifier token or nested list of identifiers), then 
+  return a corresponding string identifier or nested list of string 
+  identifiers.  Otherwise, raise a ParseError.</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="parse_classdef_bases"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">parse_classdef_bases</span>(<span class="sig-arg">elt</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docparser-pysrc.html#parse_classdef_bases">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_parse_classdef_-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_parse_classdef_-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_parse_classdef_" name="call_graph_for_parse_classdef_">
+<area shape="rect" href="epydoc.docparser-module.html#parse_classdef_bases" title="parse_classdef_bases()" alt="" coords="216,34,411,66" />
+<area shape="rect" href="epydoc.docparser-module.html#parse_dotted_name" title="parse_dotted_name()" alt="" coords="460,6,639,38" />
+<area shape="rect" href="epydoc.docparser-module.html#split_on" title="split_on()" alt="" coords="503,62,596,94" />
+<area shape="rect" href="epydoc.docparser-module.html#process_classdef" title="process_classdef()" alt="" coords="7,34,167,66" />
+</map>
+  <img src="call_graph_for_parse_classdef_.gif" alt='' usemap="#call_graph_for_parse_classdef_" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>If the given tree token element contains a valid base list (that 
+  contains only dotted names), then return a corresponding list of <a 
+  href="epydoc.apidoc.DottedName-class.html" class="link">DottedName</a>s.
+  Otherwise, raise a ParseError.</p>
+  <dl class="fields">
+  </dl>
+<div class="fields">      <p><strong>Bug:</strong>
+        Does not handle either of:
+<pre class="literalblock">
+   - class A( (base.in.parens) ): pass
+   - class B( (lambda:calculated.base)() ): pass
+</pre>
+      </p>
+</div></td></tr></table>
+</div>
+<a name="parse_dotted_name_list"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">parse_dotted_name_list</span>(<span class="sig-arg">elt_list</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docparser-pysrc.html#parse_dotted_name_list">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>If the given list of tree token elements contains a comma-separated 
+  list of dotted names, then return a corresponding list of <a 
+  href="epydoc.apidoc.DottedName-class.html" class="link">DottedName</a> 
+  objects.  Otherwise, raise ParseError.</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="set_variable"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">set_variable</span>(<span class="sig-arg">namespace</span>,
+        <span class="sig-arg">var_doc</span>,
+        <span class="sig-arg">preserve_docstring</span>=<span class="sig-default">False</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docparser-pysrc.html#set_variable">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_set_variable-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_set_variable-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_set_variable" name="call_graph_for_set_variable">
+<area shape="rect" href="epydoc.docparser-module.html#_add_import_var" title="_add_import_var()" alt="" coords="18,6,180,38" />
+<area shape="rect" href="epydoc.docparser-module.html#set_variable" title="set_variable()" alt="" coords="242,118,364,150" />
+<area shape="rect" href="epydoc.docparser-module.html#process_assignment" title="process_assignment()" alt="" coords="7,62,191,94" />
+<area shape="rect" href="epydoc.docparser-module.html#process_classdef" title="process_classdef()" alt="" coords="19,118,179,150" />
+<area shape="rect" href="epydoc.docparser-module.html#process_docstring" title="process_docstring()" alt="" coords="14,174,184,206" />
+<area shape="rect" href="epydoc.docparser-module.html#process_funcdef" title="process_funcdef()" alt="" coords="20,230,178,262" />
+</map>
+  <img src="call_graph_for_set_variable.gif" alt='' usemap="#call_graph_for_set_variable" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Add var_doc to namespace.  If namespace already contains a variable 
+  with the same name, then discard the old variable.  If 
+  <code>preserve_docstring</code> is true, then keep the old variable's 
+  docstring when overwriting a variable.</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="get_module_encoding"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">get_module_encoding</span>(<span class="sig-arg">filename</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docparser-pysrc.html#get_module_encoding">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_get_module_enco-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_get_module_enco-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_get_module_enco" name="call_graph_for_get_module_enco">
+<area shape="rect" href="epydoc.docparser-module.html#get_module_encoding" title="get_module_encoding()" alt="" coords="179,6,379,38" />
+<area shape="rect" href="epydoc.docparser-module.html#process_file" title="process_file()" alt="" coords="5,6,131,38" />
+</map>
+  <img src="call_graph_for_get_module_enco.gif" alt='' usemap="#call_graph_for_get_module_enco" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  
+  <dl class="fields">
+  </dl>
+<div class="fields">      <p><strong>See Also:</strong>
+        <a href="http://www.python.org/peps/pep-0263.html" 
+        target="_top">PEP 263</a>
+      </p>
+</div></td></tr></table>
+</div>
+<a name="flatten"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">flatten</span>(<span class="sig-arg">lst</span>,
+        <span class="sig-arg">out</span>=<span class="sig-default">None</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docparser-pysrc.html#flatten">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>lst</code></strong> - The nested list that should be flattened.</li>
+    </ul></dd>
+    <dt>Returns:</dt>
+        <dd>a flat list containing the leaves of the given nested list.</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== VARIABLES DETAILS ==================== -->
+<a name="section-VariablesDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Variables Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-VariablesDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="_moduledoc_cache"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">_moduledoc_cache</h3>
+  <p>A cache of <code>ModuleDoc</code>s that we've already created. 
+  <code>_moduledoc_cache</code> is a dictionary mapping from filenames to 
+  <code>ValueDoc</code> objects.</p>
+  <dl class="fields">
+    <dt>Type:</dt>
+      <dd><code>dict</code></dd>
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">/home/edloper/newdata/projects/docutils/docutils/__init__.py</code><code class="variable-quote">'</code><code class="variable-op">: </code><Modu<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+leDoc docutils><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">/home/edloper/newdata/projects/docutils/docutils/nodes.py</code><code class="variable-quote">'</code><code class="variable-op">: </code><ModuleD<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+oc docutils.nodes><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">/home/edloper/newdata/projects/docutils/docutils/utils.py</code><code class="variable-quote">'</code><code class="variable-op">: </code><ModuleD<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+oc docutils.utils><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">/home/edloper/newdata/projects/docutils/docutils/writers/__init__.py</code><code class="variable-quote"></code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-quote">'</code><code class="variable-op">: </code><ModuleDoc docutils.writers><code class="variable-op">,</code>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="IMPORT_HANDLING"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">IMPORT_HANDLING</h3>
+  <p>What should <code>docparser</code> do when it encounters an import 
+  statement?</p>
+  <ul>
+    <li>
+      <code>'link'</code>: Create variabledoc objects with imported_from 
+      pointers to the source object.
+    </li>
+    <li>
+      <code>'parse'</code>: Parse the imported file, to find the actual 
+      documentation for the imported object.  (This will fall back to the 
+      'link' behavior if the imported file can't be parsed, e.g., if it's a
+      builtin.)
+    </li>
+  </ul>
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">link</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="IMPORT_STAR_HANDLING"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">IMPORT_STAR_HANDLING</h3>
+  <p>When <code>docparser</code> encounters a <code>'from <i 
+  class="math">m</i> import *'</code> statement, and is unable to parse 
+  <code><i class="math">m</i></code> (either because <a 
+  href="epydoc.docparser-module.html#IMPORT_HANDLING" 
+  class="link">IMPORT_HANDLING</a>=<code>'link'</code>, or because parsing 
+  failed), how should it determine the list of identifiers expored by 
+  <code><i class="math">m</i></code>?</p>
+  <ul>
+    <li>
+      <code>'ignore'</code>: ignore the import statement, and don't create 
+      any new variables.
+    </li>
+    <li>
+      <code>'parse'</code>: parse it to find a list of the identifiers that
+      it exports.  (This will fall back to the 'ignore' behavior if the 
+      imported file can't be parsed, e.g., if it's a builtin.)
+    </li>
+    <li>
+      <code>'introspect'</code>: import the module and introspect it (using
+      <code>dir</code>) to find a list of the identifiers that it exports.
+      (This will fall back to the 'ignore' behavior if the imported file 
+      can't be parsed, e.g., if it's a builtin.)
+    </li>
+  </ul>
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">parse</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="DEFAULT_DECORATOR_BEHAVIOR"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">DEFAULT_DECORATOR_BEHAVIOR</h3>
+  <p>When <code>DocParse</code> encounters an unknown decorator, what 
+  should it do to the documentation of the decorated function?</p>
+  <ul>
+    <li>
+      <code>'transparent'</code>: leave the function's documentation as-is.
+    </li>
+    <li>
+      <code>'opaque'</code>: replace the function's documentation with an 
+      empty <code>ValueDoc</code> object, reflecting the fact that we have 
+      no knowledge about what value the decorator returns.
+    </li>
+  </ul>
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">transparent</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="BASE_HANDLING"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">BASE_HANDLING</h3>
+  <p>What should <code>docparser</code> do when it encounters a base class 
+  that was imported from another module?</p>
+  <ul>
+    <li>
+      <code>'link'</code>: Create a valuedoc with a <code>proxy_for</code> 
+      pointer to the base class.
+    </li>
+    <li>
+      <code>'parse'</code>: Parse the file containing the base class, to 
+      find the actual documentation for it.  (This will fall back to the 
+      'link' behavior if the imported file can't be parsed, e.g., if it's a
+      builtin.)
+    </li>
+  </ul>
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">parse</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="START_GROUP_MARKER"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">START_GROUP_MARKER</h3>
+  <p>The prefix used to mark a comment that starts a group.  This marker 
+  should be followed (on the same line) by the name of the group. Following
+  a start-group comment, all variables defined at the same indentation 
+  level will be assigned to this group name, until the parser reaches the 
+  end of the file, a matching end-group comment, or another start-group 
+  comment at the same indentation level.</p>
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">#{</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="END_GROUP_MARKER"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">END_GROUP_MARKER</h3>
+  <p>The prefix used to mark a comment that ends a group.  See <a 
+  href="epydoc.docparser-module.html#START_GROUP_MARKER" 
+  class="link">START_GROUP_MARKER</a>.</p>
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">#}</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="CONTROL_FLOW_KEYWORDS"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">CONTROL_FLOW_KEYWORDS</h3>
+  <p>A list of the control flow keywords.  If a line begins with one of 
+  these keywords, then it should be handled by 
+  <code>process_control_flow_line</code>.</p>
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-group">[</code><code class="variable-quote">'</code><code class="variable-string">if</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">elif</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">else</code><code class="variable-quote">'</code><code class="variable-op">, </code><code c [...]
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:06:21 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.docparser-pysrc.html b/doc/api/epydoc.docparser-pysrc.html
new file mode 100644
index 0000000..82c0a0f
--- /dev/null
+++ b/doc/api/epydoc.docparser-pysrc.html
@@ -0,0 +1,2444 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.docparser</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        Module docparser
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.docparser-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="epydoc.docparser-module.html">Module epydoc.docparser</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno">   1</tt>  <tt class="py-line"><tt class="py-comment"># epydoc -- Source code parsing</tt> </tt>
+<a name="L2"></a><tt class="py-lineno">   2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L3"></a><tt class="py-lineno">   3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2005 Edward Loper</tt> </tt>
+<a name="L4"></a><tt class="py-lineno">   4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Author: Edward Loper <edloper at loper.org></tt> </tt>
+<a name="L5"></a><tt class="py-lineno">   5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># URL: <http://epydoc.sf.net></tt> </tt>
+<a name="L6"></a><tt class="py-lineno">   6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L7"></a><tt class="py-lineno">   7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># $Id: docparser.py 1673 2008-01-29 05:42:58Z edloper $</tt> </tt>
+<a name="L8"></a><tt class="py-lineno">   8</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L9"></a><tt class="py-lineno">   9</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L10"></a><tt class="py-lineno">  10</tt>  <tt class="py-line"><tt class="py-docstring">Extract API documentation about python objects by parsing their source</tt> </tt>
+<a name="L11"></a><tt class="py-lineno">  11</tt>  <tt class="py-line"><tt class="py-docstring">code.</tt> </tt>
+<a name="L12"></a><tt class="py-lineno">  12</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L13"></a><tt class="py-lineno">  13</tt>  <tt class="py-line"><tt class="py-docstring">The function L{parse_docs()}, which provides the main interface</tt> </tt>
+<a name="L14"></a><tt class="py-lineno">  14</tt>  <tt class="py-line"><tt class="py-docstring">of this module, reads and parses the Python source code for a</tt> </tt>
+<a name="L15"></a><tt class="py-lineno">  15</tt>  <tt class="py-line"><tt class="py-docstring">module, and uses it to create an L{APIDoc} object containing</tt> </tt>
+<a name="L16"></a><tt class="py-lineno">  16</tt>  <tt class="py-line"><tt class="py-docstring">the API documentation for the variables and values defined in</tt> </tt>
+<a name="L17"></a><tt class="py-lineno">  17</tt>  <tt class="py-line"><tt class="py-docstring">that modules.</tt> </tt>
+<a name="L18"></a><tt class="py-lineno">  18</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L19"></a><tt class="py-lineno">  19</tt>  <tt class="py-line"><tt class="py-docstring">Currently, C{parse_docs()} extracts documentation from the following</tt> </tt>
+<a name="L20"></a><tt class="py-lineno">  20</tt>  <tt class="py-line"><tt class="py-docstring">source code constructions:</tt> </tt>
+<a name="L21"></a><tt class="py-lineno">  21</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L22"></a><tt class="py-lineno">  22</tt>  <tt class="py-line"><tt class="py-docstring">  - module docstring</tt> </tt>
+<a name="L23"></a><tt class="py-lineno">  23</tt>  <tt class="py-line"><tt class="py-docstring">  - import statements</tt> </tt>
+<a name="L24"></a><tt class="py-lineno">  24</tt>  <tt class="py-line"><tt class="py-docstring">  - class definition blocks</tt> </tt>
+<a name="L25"></a><tt class="py-lineno">  25</tt>  <tt class="py-line"><tt class="py-docstring">  - function definition blocks</tt> </tt>
+<a name="L26"></a><tt class="py-lineno">  26</tt>  <tt class="py-line"><tt class="py-docstring">  - assignment statements</tt> </tt>
+<a name="L27"></a><tt class="py-lineno">  27</tt>  <tt class="py-line"><tt class="py-docstring">    - simple assignment statements</tt> </tt>
+<a name="L28"></a><tt class="py-lineno">  28</tt>  <tt class="py-line"><tt class="py-docstring">    - assignment statements with multiple C{'='}s</tt> </tt>
+<a name="L29"></a><tt class="py-lineno">  29</tt>  <tt class="py-line"><tt class="py-docstring">    - assignment statements with unpacked left-hand sides</tt> </tt>
+<a name="L30"></a><tt class="py-lineno">  30</tt>  <tt class="py-line"><tt class="py-docstring">    - assignment statements that wrap a function in classmethod</tt> </tt>
+<a name="L31"></a><tt class="py-lineno">  31</tt>  <tt class="py-line"><tt class="py-docstring">      or staticmethod.</tt> </tt>
+<a name="L32"></a><tt class="py-lineno">  32</tt>  <tt class="py-line"><tt class="py-docstring">    - assignment to special variables __path__, __all__, and</tt> </tt>
+<a name="L33"></a><tt class="py-lineno">  33</tt>  <tt class="py-line"><tt class="py-docstring">      __docformat__.</tt> </tt>
+<a name="L34"></a><tt class="py-lineno">  34</tt>  <tt class="py-line"><tt class="py-docstring">  - delete statements</tt> </tt>
+<a name="L35"></a><tt class="py-lineno">  35</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L36"></a><tt class="py-lineno">  36</tt>  <tt class="py-line"><tt class="py-docstring">C{parse_docs()} does not yet support the following source code</tt> </tt>
+<a name="L37"></a><tt class="py-lineno">  37</tt>  <tt class="py-line"><tt class="py-docstring">constructions:</tt> </tt>
+<a name="L38"></a><tt class="py-lineno">  38</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L39"></a><tt class="py-lineno">  39</tt>  <tt class="py-line"><tt class="py-docstring">  - assignment statements that create properties</tt> </tt>
+<a name="L40"></a><tt class="py-lineno">  40</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L41"></a><tt class="py-lineno">  41</tt>  <tt class="py-line"><tt class="py-docstring">By default, C{parse_docs()} will expore the contents of top-level</tt> </tt>
+<a name="L42"></a><tt class="py-lineno">  42</tt>  <tt class="py-line"><tt class="py-docstring">C{try} and C{if} blocks.  If desired, C{parse_docs()} can also</tt> </tt>
+<a name="L43"></a><tt class="py-lineno">  43</tt>  <tt class="py-line"><tt class="py-docstring">be configured to explore the contents of C{while} and C{for} blocks.</tt> </tt>
+<a name="L44"></a><tt class="py-lineno">  44</tt>  <tt class="py-line"><tt class="py-docstring">(See the configuration constants, below.)</tt> </tt>
+<a name="L45"></a><tt class="py-lineno">  45</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L46"></a><tt class="py-lineno">  46</tt>  <tt class="py-line"><tt class="py-docstring">@todo: Make it possible to extend the functionality of C{parse_docs()},</tt> </tt>
+<a name="L47"></a><tt class="py-lineno">  47</tt>  <tt class="py-line"><tt class="py-docstring">       by replacing process_line with a dispatch table that can be</tt> </tt>
+<a name="L48"></a><tt class="py-lineno">  48</tt>  <tt class="py-line"><tt class="py-docstring">       customized (similarly to C{docintrospector.register_introspector()}).</tt> </tt>
+<a name="L49"></a><tt class="py-lineno">  49</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L50"></a><tt class="py-lineno">  50</tt>  <tt class="py-line"><tt class="py-name">__docformat__</tt> <tt class="py-op">=</tt> <tt class="py-string">'epytext en'</tt> </tt>
+<a name="L51"></a><tt class="py-lineno">  51</tt>  <tt class="py-line"> </tt>
+<a name="L52"></a><tt class="py-lineno">  52</tt>  <tt class="py-line"><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L53"></a><tt class="py-lineno">  53</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## Imports</tt> </tt>
+<a name="L54"></a><tt class="py-lineno">  54</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L55"></a><tt class="py-lineno">  55</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L56"></a><tt class="py-lineno">  56</tt>  <tt class="py-line"><tt class="py-comment"># Python source code parsing:</tt> </tt>
+<a name="L57"></a><tt class="py-lineno">  57</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">import</tt> <tt class="py-name">token</tt><tt class="py-op">,</tt> <tt class="py-name">tokenize</tt> </tt>
+<a name="L58"></a><tt class="py-lineno">  58</tt>  <tt class="py-line"><tt class="py-comment"># Finding modules:</tt> </tt>
+<a name="L59"></a><tt class="py-lineno">  59</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">import</tt> <tt class="py-name">imp</tt> </tt>
+<a name="L60"></a><tt class="py-lineno">  60</tt>  <tt class="py-line"><tt class="py-comment"># File services:</tt> </tt>
+<a name="L61"></a><tt class="py-lineno">  61</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">import</tt> <tt class="py-name">os</tt><tt class="py-op">,</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-0" class="py-name" targets="Variable epydoc.apidoc.ModuleDoc.path=epydoc.apidoc.ModuleDoc-class.html#path"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-0', 'path', 'link-0');">path</a></tt><tt [...]
+<a name="L62"></a><tt class="py-lineno">  62</tt>  <tt class="py-line"><tt class="py-comment"># Unicode:</tt> </tt>
+<a name="L63"></a><tt class="py-lineno">  63</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">import</tt> <tt class="py-name">codecs</tt> </tt>
+<a name="L64"></a><tt class="py-lineno">  64</tt>  <tt class="py-line"><tt class="py-comment"># API documentation encoding:</tt> </tt>
+<a name="L65"></a><tt class="py-lineno">  65</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">from</tt> <tt id="link-1" class="py-name" targets="Package epydoc=epydoc-module.html"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-1', 'epydoc', 'link-1');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-2" class="py-name" targets="Module epydoc.apidoc=epydoc.apidoc-module.html"><a title="epydoc.apidoc" class="py-name" href="#" onclick [...]
+<a name="L66"></a><tt class="py-lineno">  66</tt>  <tt class="py-line"><tt class="py-comment"># For looking up the docs of builtins:</tt> </tt>
+<a name="L67"></a><tt class="py-lineno">  67</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">import</tt> <tt class="py-name">__builtin__</tt><tt class="py-op">,</tt> <tt class="py-name">exceptions</tt> </tt>
+<a name="L68"></a><tt class="py-lineno">  68</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-3" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-3', 'epydoc', 'link-1');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-4" class="py-name" targets="Module epydoc.docintrospecter=epydoc.docintrospecter-module.html"><a title="epydoc.docintrospecter" class="py-name" href="#" onclick="return doclink('link-4', 'docintrospecter [...]
+<a name="L69"></a><tt class="py-lineno">  69</tt>  <tt class="py-line"><tt class="py-comment"># Misc utility functions:</tt> </tt>
+<a name="L70"></a><tt class="py-lineno">  70</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">from</tt> <tt id="link-5" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-5', 'epydoc', 'link-1');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-6" class="py-name" targets="Module epydoc.test.util=epydoc.test.util-module.html,Module epydoc.util=epydoc.util-module.html"><a title="epydoc.test.util
+epydoc.util" class="py-name" href="#" onclick="return doclink('link-6', 'util', 'link-6');">util</a></tt> <tt class="py-keyword">import</tt> <tt class="py-op">*</tt> </tt>
+<a name="L71"></a><tt class="py-lineno">  71</tt>  <tt class="py-line"><tt class="py-comment"># Backwards compatibility</tt> </tt>
+<a name="L72"></a><tt class="py-lineno">  72</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">from</tt> <tt id="link-7" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-7', 'epydoc', 'link-1');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-8" class="py-name" targets="Module epydoc.compat=epydoc.compat-module.html"><a title="epydoc.compat" class="py-name" href="#" onclick="return doclink('link-8', 'compat', 'link-8 [...]
+<a name="L73"></a><tt class="py-lineno">  73</tt>  <tt class="py-line"> </tt>
+<a name="L74"></a><tt class="py-lineno">  74</tt>  <tt class="py-line"><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L75"></a><tt class="py-lineno">  75</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## Doc Parser</tt> </tt>
+<a name="L76"></a><tt class="py-lineno">  76</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L77"></a><tt class="py-lineno">  77</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="ParseError"></a><div id="ParseError-def"><a name="L78"></a><tt class="py-lineno">  78</tt> <a class="py-toggle" href="#" id="ParseError-toggle" onclick="return toggle('ParseError');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="epydoc.docparser.ParseError-class.html">ParseError</a><tt class="py-op">(</tt><tt class="py-base-class">Exception</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ParseError-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="ParseError-expanded"><a name="L79"></a><tt class="py-lineno">  79</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L80"></a><tt class="py-lineno">  80</tt>  <tt class="py-line"><tt class="py-docstring">    An exception that is used to signify that C{docparser} encountered</tt> </tt>
+<a name="L81"></a><tt class="py-lineno">  81</tt>  <tt class="py-line"><tt class="py-docstring">    syntactically invalid Python code while processing a Python source</tt> </tt>
+<a name="L82"></a><tt class="py-lineno">  82</tt>  <tt class="py-line"><tt class="py-docstring">    file.</tt> </tt>
+<a name="L83"></a><tt class="py-lineno">  83</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+</div><a name="L84"></a><tt class="py-lineno">  84</tt>  <tt class="py-line"> </tt>
+<a name="L85"></a><tt class="py-lineno">  85</tt>  <tt class="py-line"><tt id="link-9" class="py-name" targets="Variable epydoc.docparser._moduledoc_cache=epydoc.docparser-module.html#_moduledoc_cache"><a title="epydoc.docparser._moduledoc_cache" class="py-name" href="#" onclick="return doclink('link-9', '_moduledoc_cache', 'link-9');">_moduledoc_cache</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L86"></a><tt class="py-lineno">  86</tt>  <tt class="py-line"><tt class="py-string">"""A cache of C{ModuleDoc}s that we've already created.</tt> </tt>
+<a name="L87"></a><tt class="py-lineno">  87</tt>  <tt class="py-line"><tt class="py-string">C{_moduledoc_cache} is a dictionary mapping from filenames to</tt> </tt>
+<a name="L88"></a><tt class="py-lineno">  88</tt>  <tt class="py-line"><tt class="py-string">C{ValueDoc} objects.</tt> </tt>
+<a name="L89"></a><tt class="py-lineno">  89</tt>  <tt class="py-line"><tt class="py-string">@type: C{dict}"""</tt> </tt>
+<a name="L90"></a><tt class="py-lineno">  90</tt>  <tt class="py-line"> </tt>
+<a name="L91"></a><tt class="py-lineno">  91</tt>  <tt class="py-line"><tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L92"></a><tt class="py-lineno">  92</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Configuration Constants</tt> </tt>
+<a name="L93"></a><tt class="py-lineno">  93</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L94"></a><tt class="py-lineno">  94</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L95"></a><tt class="py-lineno">  95</tt>  <tt class="py-line"><tt class="py-comment">#{ Configuration Constants: Control Flow </tt> </tt>
+<a name="L96"></a><tt class="py-lineno">  96</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt id="link-10" class="py-name" targets="Variable epydoc.docparser.PARSE_TRY_BLOCKS=epydoc.docparser-module.html#PARSE_TRY_BLOCKS"><a title="epydoc.docparser.PARSE_TRY_BLOCKS" class="py-name" href="#" onclick="return doclink('link-10', 'PARSE_TRY_BLOCKS', 'link-10');">PARSE_TRY_BLOCKS</a></tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L97"></a><tt class="py-lineno">  97</tt>  <tt class="py-line"><tt class="py-string">"""Should the contents of C{try} blocks be examined?"""</tt> </tt>
+<a name="L98"></a><tt class="py-lineno">  98</tt>  <tt class="py-line"><tt id="link-11" class="py-name" targets="Variable epydoc.docparser.PARSE_EXCEPT_BLOCKS=epydoc.docparser-module.html#PARSE_EXCEPT_BLOCKS"><a title="epydoc.docparser.PARSE_EXCEPT_BLOCKS" class="py-name" href="#" onclick="return doclink('link-11', 'PARSE_EXCEPT_BLOCKS', 'link-11');">PARSE_EXCEPT_BLOCKS</a></tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L99"></a><tt class="py-lineno">  99</tt>  <tt class="py-line"><tt class="py-string">"""Should the contents of C{except} blocks be examined?"""</tt> </tt>
+<a name="L100"></a><tt class="py-lineno"> 100</tt>  <tt class="py-line"><tt id="link-12" class="py-name" targets="Variable epydoc.docparser.PARSE_FINALLY_BLOCKS=epydoc.docparser-module.html#PARSE_FINALLY_BLOCKS"><a title="epydoc.docparser.PARSE_FINALLY_BLOCKS" class="py-name" href="#" onclick="return doclink('link-12', 'PARSE_FINALLY_BLOCKS', 'link-12');">PARSE_FINALLY_BLOCKS</a></tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L101"></a><tt class="py-lineno"> 101</tt>  <tt class="py-line"><tt class="py-string">"""Should the contents of C{finally} blocks be examined?"""</tt> </tt>
+<a name="L102"></a><tt class="py-lineno"> 102</tt>  <tt class="py-line"><tt id="link-13" class="py-name" targets="Variable epydoc.docparser.PARSE_IF_BLOCKS=epydoc.docparser-module.html#PARSE_IF_BLOCKS"><a title="epydoc.docparser.PARSE_IF_BLOCKS" class="py-name" href="#" onclick="return doclink('link-13', 'PARSE_IF_BLOCKS', 'link-13');">PARSE_IF_BLOCKS</a></tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L103"></a><tt class="py-lineno"> 103</tt>  <tt class="py-line"><tt class="py-string">"""Should the contents of C{if} blocks be examined?"""</tt> </tt>
+<a name="L104"></a><tt class="py-lineno"> 104</tt>  <tt class="py-line"><tt id="link-14" class="py-name" targets="Variable epydoc.docparser.PARSE_ELSE_BLOCKS=epydoc.docparser-module.html#PARSE_ELSE_BLOCKS"><a title="epydoc.docparser.PARSE_ELSE_BLOCKS" class="py-name" href="#" onclick="return doclink('link-14', 'PARSE_ELSE_BLOCKS', 'link-14');">PARSE_ELSE_BLOCKS</a></tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L105"></a><tt class="py-lineno"> 105</tt>  <tt class="py-line"><tt class="py-string">"""Should the contents of C{else} and C{elif} blocks be examined?"""</tt> </tt>
+<a name="L106"></a><tt class="py-lineno"> 106</tt>  <tt class="py-line"><tt id="link-15" class="py-name" targets="Variable epydoc.docparser.PARSE_WHILE_BLOCKS=epydoc.docparser-module.html#PARSE_WHILE_BLOCKS"><a title="epydoc.docparser.PARSE_WHILE_BLOCKS" class="py-name" href="#" onclick="return doclink('link-15', 'PARSE_WHILE_BLOCKS', 'link-15');">PARSE_WHILE_BLOCKS</a></tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L107"></a><tt class="py-lineno"> 107</tt>  <tt class="py-line"><tt class="py-string">"""Should the contents of C{while} blocks be examined?"""</tt> </tt>
+<a name="L108"></a><tt class="py-lineno"> 108</tt>  <tt class="py-line"><tt id="link-16" class="py-name" targets="Variable epydoc.docparser.PARSE_FOR_BLOCKS=epydoc.docparser-module.html#PARSE_FOR_BLOCKS"><a title="epydoc.docparser.PARSE_FOR_BLOCKS" class="py-name" href="#" onclick="return doclink('link-16', 'PARSE_FOR_BLOCKS', 'link-16');">PARSE_FOR_BLOCKS</a></tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L109"></a><tt class="py-lineno"> 109</tt>  <tt class="py-line"><tt class="py-string">"""Should the contents of C{for} blocks be examined?"""</tt> </tt>
+<a name="L110"></a><tt class="py-lineno"> 110</tt>  <tt class="py-line"> </tt>
+<a name="L111"></a><tt class="py-lineno"> 111</tt>  <tt class="py-line"><tt class="py-comment">#{ Configuration Constants: Imports</tt> </tt>
+<a name="L112"></a><tt class="py-lineno"> 112</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt id="link-17" class="py-name" targets="Variable epydoc.docparser.IMPORT_HANDLING=epydoc.docparser-module.html#IMPORT_HANDLING"><a title="epydoc.docparser.IMPORT_HANDLING" class="py-name" href="#" onclick="return doclink('link-17', 'IMPORT_HANDLING', 'link-17');">IMPORT_HANDLING</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'link'</tt> </tt>
+<a name="L113"></a><tt class="py-lineno"> 113</tt>  <tt class="py-line"><tt class="py-string">"""What should C{docparser} do when it encounters an import</tt> </tt>
+<a name="L114"></a><tt class="py-lineno"> 114</tt>  <tt class="py-line"><tt class="py-string">statement?</tt> </tt>
+<a name="L115"></a><tt class="py-lineno"> 115</tt>  <tt class="py-line"><tt class="py-string">  - C{'link'}: Create variabledoc objects with imported_from pointers</tt> </tt>
+<a name="L116"></a><tt class="py-lineno"> 116</tt>  <tt class="py-line"><tt class="py-string">    to the source object.</tt> </tt>
+<a name="L117"></a><tt class="py-lineno"> 117</tt>  <tt class="py-line"><tt class="py-string">  - C{'parse'}: Parse the imported file, to find the actual</tt> </tt>
+<a name="L118"></a><tt class="py-lineno"> 118</tt>  <tt class="py-line"><tt class="py-string">    documentation for the imported object.  (This will fall back</tt> </tt>
+<a name="L119"></a><tt class="py-lineno"> 119</tt>  <tt class="py-line"><tt class="py-string">    to the 'link' behavior if the imported file can't be parsed,</tt> </tt>
+<a name="L120"></a><tt class="py-lineno"> 120</tt>  <tt class="py-line"><tt class="py-string">    e.g., if it's a builtin.)</tt> </tt>
+<a name="L121"></a><tt class="py-lineno"> 121</tt>  <tt class="py-line"><tt class="py-string">"""</tt> </tt>
+<a name="L122"></a><tt class="py-lineno"> 122</tt>  <tt class="py-line"> </tt>
+<a name="L123"></a><tt class="py-lineno"> 123</tt>  <tt class="py-line"><tt id="link-18" class="py-name" targets="Variable epydoc.docparser.IMPORT_STAR_HANDLING=epydoc.docparser-module.html#IMPORT_STAR_HANDLING"><a title="epydoc.docparser.IMPORT_STAR_HANDLING" class="py-name" href="#" onclick="return doclink('link-18', 'IMPORT_STAR_HANDLING', 'link-18');">IMPORT_STAR_HANDLING</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'parse'</tt> </tt>
+<a name="L124"></a><tt class="py-lineno"> 124</tt>  <tt class="py-line"><tt class="py-string">"""When C{docparser} encounters a C{'from M{m} import *'}</tt> </tt>
+<a name="L125"></a><tt class="py-lineno"> 125</tt>  <tt class="py-line"><tt class="py-string">statement, and is unable to parse C{M{m}} (either because</tt> </tt>
+<a name="L126"></a><tt class="py-lineno"> 126</tt>  <tt class="py-line"><tt class="py-string">L{IMPORT_HANDLING}=C{'link'}, or because parsing failed), how</tt> </tt>
+<a name="L127"></a><tt class="py-lineno"> 127</tt>  <tt class="py-line"><tt class="py-string">should it determine the list of identifiers expored by C{M{m}}?</tt> </tt>
+<a name="L128"></a><tt class="py-lineno"> 128</tt>  <tt class="py-line"><tt class="py-string">  - C{'ignore'}: ignore the import statement, and don't create</tt> </tt>
+<a name="L129"></a><tt class="py-lineno"> 129</tt>  <tt class="py-line"><tt class="py-string">    any new variables.</tt> </tt>
+<a name="L130"></a><tt class="py-lineno"> 130</tt>  <tt class="py-line"><tt class="py-string">  - C{'parse'}: parse it to find a list of the identifiers that it</tt> </tt>
+<a name="L131"></a><tt class="py-lineno"> 131</tt>  <tt class="py-line"><tt class="py-string">    exports.  (This will fall back to the 'ignore' behavior if the</tt> </tt>
+<a name="L132"></a><tt class="py-lineno"> 132</tt>  <tt class="py-line"><tt class="py-string">    imported file can't be parsed, e.g., if it's a builtin.)</tt> </tt>
+<a name="L133"></a><tt class="py-lineno"> 133</tt>  <tt class="py-line"><tt class="py-string">  - C{'introspect'}: import the module and introspect it (using C{dir})</tt> </tt>
+<a name="L134"></a><tt class="py-lineno"> 134</tt>  <tt class="py-line"><tt class="py-string">    to find a list of the identifiers that it exports.  (This will</tt> </tt>
+<a name="L135"></a><tt class="py-lineno"> 135</tt>  <tt class="py-line"><tt class="py-string">    fall back to the 'ignore' behavior if the imported file can't</tt> </tt>
+<a name="L136"></a><tt class="py-lineno"> 136</tt>  <tt class="py-line"><tt class="py-string">    be parsed, e.g., if it's a builtin.)</tt> </tt>
+<a name="L137"></a><tt class="py-lineno"> 137</tt>  <tt class="py-line"><tt class="py-string">"""</tt> </tt>
+<a name="L138"></a><tt class="py-lineno"> 138</tt>  <tt class="py-line"> </tt>
+<a name="L139"></a><tt class="py-lineno"> 139</tt>  <tt class="py-line"><tt id="link-19" class="py-name" targets="Variable epydoc.docparser.DEFAULT_DECORATOR_BEHAVIOR=epydoc.docparser-module.html#DEFAULT_DECORATOR_BEHAVIOR"><a title="epydoc.docparser.DEFAULT_DECORATOR_BEHAVIOR" class="py-name" href="#" onclick="return doclink('link-19', 'DEFAULT_DECORATOR_BEHAVIOR', 'link-19');">DEFAULT_DECORATOR_BEHAVIOR</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'transparent'</tt> </tt>
+<a name="L140"></a><tt class="py-lineno"> 140</tt>  <tt class="py-line"><tt class="py-string">"""When C{DocParse} encounters an unknown decorator, what should</tt> </tt>
+<a name="L141"></a><tt class="py-lineno"> 141</tt>  <tt class="py-line"><tt class="py-string">it do to the documentation of the decorated function?</tt> </tt>
+<a name="L142"></a><tt class="py-lineno"> 142</tt>  <tt class="py-line"><tt class="py-string">  - C{'transparent'}: leave the function's documentation as-is.</tt> </tt>
+<a name="L143"></a><tt class="py-lineno"> 143</tt>  <tt class="py-line"><tt class="py-string">  - C{'opaque'}: replace the function's documentation with an</tt> </tt>
+<a name="L144"></a><tt class="py-lineno"> 144</tt>  <tt class="py-line"><tt class="py-string">    empty C{ValueDoc} object, reflecting the fact that we have no</tt> </tt>
+<a name="L145"></a><tt class="py-lineno"> 145</tt>  <tt class="py-line"><tt class="py-string">    knowledge about what value the decorator returns.</tt> </tt>
+<a name="L146"></a><tt class="py-lineno"> 146</tt>  <tt class="py-line"><tt class="py-string">"""</tt> </tt>
+<a name="L147"></a><tt class="py-lineno"> 147</tt>  <tt class="py-line"> </tt>
+<a name="L148"></a><tt class="py-lineno"> 148</tt>  <tt class="py-line"><tt id="link-20" class="py-name" targets="Variable epydoc.docparser.BASE_HANDLING=epydoc.docparser-module.html#BASE_HANDLING"><a title="epydoc.docparser.BASE_HANDLING" class="py-name" href="#" onclick="return doclink('link-20', 'BASE_HANDLING', 'link-20');">BASE_HANDLING</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'parse'</tt><tt class="py-comment">#'link'</tt> </tt>
+<a name="L149"></a><tt class="py-lineno"> 149</tt>  <tt class="py-line"><tt class="py-string">"""What should C{docparser} do when it encounters a base class that</tt> </tt>
+<a name="L150"></a><tt class="py-lineno"> 150</tt>  <tt class="py-line"><tt class="py-string">was imported from another module?</tt> </tt>
+<a name="L151"></a><tt class="py-lineno"> 151</tt>  <tt class="py-line"><tt class="py-string">  - C{'link'}: Create a valuedoc with a C{proxy_for} pointer to the</tt> </tt>
+<a name="L152"></a><tt class="py-lineno"> 152</tt>  <tt class="py-line"><tt class="py-string">    base class.</tt> </tt>
+<a name="L153"></a><tt class="py-lineno"> 153</tt>  <tt class="py-line"><tt class="py-string">  - C{'parse'}: Parse the file containing the base class, to find</tt> </tt>
+<a name="L154"></a><tt class="py-lineno"> 154</tt>  <tt class="py-line"><tt class="py-string">    the actual documentation for it.  (This will fall back to the</tt> </tt>
+<a name="L155"></a><tt class="py-lineno"> 155</tt>  <tt class="py-line"><tt class="py-string">    'link' behavior if the imported file can't be parsed, e.g., if</tt> </tt>
+<a name="L156"></a><tt class="py-lineno"> 156</tt>  <tt class="py-line"><tt class="py-string">    it's a builtin.)</tt> </tt>
+<a name="L157"></a><tt class="py-lineno"> 157</tt>  <tt class="py-line"><tt class="py-string">"""</tt> </tt>
+<a name="L158"></a><tt class="py-lineno"> 158</tt>  <tt class="py-line"> </tt>
+<a name="L159"></a><tt class="py-lineno"> 159</tt>  <tt class="py-line"><tt class="py-comment">#{ Configuration Constants: Comment docstrings</tt> </tt>
+<a name="L160"></a><tt class="py-lineno"> 160</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt id="link-21" class="py-name" targets="Variable epydoc.docparser.COMMENT_DOCSTRING_MARKER=epydoc.docparser-module.html#COMMENT_DOCSTRING_MARKER"><a title="epydoc.docparser.COMMENT_DOCSTRING_MARKER" class="py-name" href="#" onclick="return doclink('link-21', 'COMMENT_DOCSTRING_MARKER', 'link-21');">COMMENT_DOCSTRING_MARKER</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'#:'</tt> </tt>
+<a name="L161"></a><tt class="py-lineno"> 161</tt>  <tt class="py-line"><tt class="py-string">"""The prefix used to mark comments that contain attribute</tt> </tt>
+<a name="L162"></a><tt class="py-lineno"> 162</tt>  <tt class="py-line"><tt class="py-string">docstrings for variables."""</tt> </tt>
+<a name="L163"></a><tt class="py-lineno"> 163</tt>  <tt class="py-line"> </tt>
+<a name="L164"></a><tt class="py-lineno"> 164</tt>  <tt class="py-line"><tt class="py-comment">#{ Configuration Constants: Grouping</tt> </tt>
+<a name="L165"></a><tt class="py-lineno"> 165</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt id="link-22" class="py-name" targets="Variable epydoc.docparser.START_GROUP_MARKER=epydoc.docparser-module.html#START_GROUP_MARKER"><a title="epydoc.docparser.START_GROUP_MARKER" class="py-name" href="#" onclick="return doclink('link-22', 'START_GROUP_MARKER', 'link-22');">START_GROUP_MARKER</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'#{'</tt> </tt>
+<a name="L166"></a><tt class="py-lineno"> 166</tt>  <tt class="py-line"><tt class="py-string">"""The prefix used to mark a comment that starts a group.  This marker</tt> </tt>
+<a name="L167"></a><tt class="py-lineno"> 167</tt>  <tt class="py-line"><tt class="py-string">should be followed (on the same line) by the name of the group.</tt> </tt>
+<a name="L168"></a><tt class="py-lineno"> 168</tt>  <tt class="py-line"><tt class="py-string">Following a start-group comment, all variables defined at the same</tt> </tt>
+<a name="L169"></a><tt class="py-lineno"> 169</tt>  <tt class="py-line"><tt class="py-string">indentation level will be assigned to this group name, until the</tt> </tt>
+<a name="L170"></a><tt class="py-lineno"> 170</tt>  <tt class="py-line"><tt class="py-string">parser reaches the end of the file, a matching end-group comment, or</tt> </tt>
+<a name="L171"></a><tt class="py-lineno"> 171</tt>  <tt class="py-line"><tt class="py-string">another start-group comment at the same indentation level.</tt> </tt>
+<a name="L172"></a><tt class="py-lineno"> 172</tt>  <tt class="py-line"><tt class="py-string">"""</tt> </tt>
+<a name="L173"></a><tt class="py-lineno"> 173</tt>  <tt class="py-line"> </tt>
+<a name="L174"></a><tt class="py-lineno"> 174</tt>  <tt class="py-line"><tt id="link-23" class="py-name" targets="Variable epydoc.docparser.END_GROUP_MARKER=epydoc.docparser-module.html#END_GROUP_MARKER"><a title="epydoc.docparser.END_GROUP_MARKER" class="py-name" href="#" onclick="return doclink('link-23', 'END_GROUP_MARKER', 'link-23');">END_GROUP_MARKER</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'#}'</tt> </tt>
+<a name="L175"></a><tt class="py-lineno"> 175</tt>  <tt class="py-line"><tt class="py-string">"""The prefix used to mark a comment that ends a group.  See</tt> </tt>
+<a name="L176"></a><tt class="py-lineno"> 176</tt>  <tt class="py-line"><tt class="py-string">L{START_GROUP_MARKER}."""</tt> </tt>
+<a name="L177"></a><tt class="py-lineno"> 177</tt>  <tt class="py-line"> </tt>
+<a name="L178"></a><tt class="py-lineno"> 178</tt>  <tt class="py-line"><tt class="py-comment">#/////////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L179"></a><tt class="py-lineno"> 179</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#{ Module parser</tt> </tt>
+<a name="L180"></a><tt class="py-lineno"> 180</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#/////////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L181"></a><tt class="py-lineno"> 181</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="parse_docs"></a><div id="parse_docs-def"><a name="L182"></a><tt class="py-lineno"> 182</tt> <a class="py-toggle" href="#" id="parse_docs-toggle" onclick="return toggle('parse_docs');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docparser-module.html#parse_docs">parse_docs</a><tt class="py-op">(</tt><tt class="py-param">filename</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">n [...]
+</div><div id="parse_docs-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="parse_docs-expanded"><a name="L183"></a><tt class="py-lineno"> 183</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L184"></a><tt class="py-lineno"> 184</tt>  <tt class="py-line"><tt class="py-docstring">    Generate the API documentation for a specified object by</tt> </tt>
+<a name="L185"></a><tt class="py-lineno"> 185</tt>  <tt class="py-line"><tt class="py-docstring">    parsing Python source files, and return it as a L{ValueDoc}.</tt> </tt>
+<a name="L186"></a><tt class="py-lineno"> 186</tt>  <tt class="py-line"><tt class="py-docstring">    The object to generate documentation for may be specified</tt> </tt>
+<a name="L187"></a><tt class="py-lineno"> 187</tt>  <tt class="py-line"><tt class="py-docstring">    using the C{filename} parameter I{or} the C{name} parameter.</tt> </tt>
+<a name="L188"></a><tt class="py-lineno"> 188</tt>  <tt class="py-line"><tt class="py-docstring">    (It is an error to specify both a filename and a name; or to</tt> </tt>
+<a name="L189"></a><tt class="py-lineno"> 189</tt>  <tt class="py-line"><tt class="py-docstring">    specify neither a filename nor a name).</tt> </tt>
+<a name="L190"></a><tt class="py-lineno"> 190</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L191"></a><tt class="py-lineno"> 191</tt>  <tt class="py-line"><tt class="py-docstring">    @param filename: The name of the file that contains the python</tt> </tt>
+<a name="L192"></a><tt class="py-lineno"> 192</tt>  <tt class="py-line"><tt class="py-docstring">        source code for a package, module, or script.  If</tt> </tt>
+<a name="L193"></a><tt class="py-lineno"> 193</tt>  <tt class="py-line"><tt class="py-docstring">        C{filename} is specified, then C{parse} will return a</tt> </tt>
+<a name="L194"></a><tt class="py-lineno"> 194</tt>  <tt class="py-line"><tt class="py-docstring">        C{ModuleDoc} describing its contents.</tt> </tt>
+<a name="L195"></a><tt class="py-lineno"> 195</tt>  <tt class="py-line"><tt class="py-docstring">    @param name: The fully-qualified python dotted name of any</tt> </tt>
+<a name="L196"></a><tt class="py-lineno"> 196</tt>  <tt class="py-line"><tt class="py-docstring">        value (including packages, modules, classes, and</tt> </tt>
+<a name="L197"></a><tt class="py-lineno"> 197</tt>  <tt class="py-line"><tt class="py-docstring">        functions).  C{parse_docs()} will automatically figure out</tt> </tt>
+<a name="L198"></a><tt class="py-lineno"> 198</tt>  <tt class="py-line"><tt class="py-docstring">        which module(s) it needs to parse in order to find the</tt> </tt>
+<a name="L199"></a><tt class="py-lineno"> 199</tt>  <tt class="py-line"><tt class="py-docstring">        documentation for the specified object.</tt> </tt>
+<a name="L200"></a><tt class="py-lineno"> 200</tt>  <tt class="py-line"><tt class="py-docstring">    @param context: The API documentation for the package that</tt> </tt>
+<a name="L201"></a><tt class="py-lineno"> 201</tt>  <tt class="py-line"><tt class="py-docstring">        contains C{filename}.  If no context is given, then</tt> </tt>
+<a name="L202"></a><tt class="py-lineno"> 202</tt>  <tt class="py-line"><tt class="py-docstring">        C{filename} is assumed to contain a top-level module or</tt> </tt>
+<a name="L203"></a><tt class="py-lineno"> 203</tt>  <tt class="py-line"><tt class="py-docstring">        package.  It is an error to specify a C{context} if the</tt> </tt>
+<a name="L204"></a><tt class="py-lineno"> 204</tt>  <tt class="py-line"><tt class="py-docstring">        C{name} argument is used.</tt> </tt>
+<a name="L205"></a><tt class="py-lineno"> 205</tt>  <tt class="py-line"><tt class="py-docstring">    @rtype: L{ValueDoc}</tt> </tt>
+<a name="L206"></a><tt class="py-lineno"> 206</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L207"></a><tt class="py-lineno"> 207</tt>  <tt class="py-line">    <tt class="py-comment"># Always introspect __builtins__ & exceptions (e.g., in case</tt> </tt>
+<a name="L208"></a><tt class="py-lineno"> 208</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># they're used as base classes.)</tt> </tt>
+<a name="L209"></a><tt class="py-lineno"> 209</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-24" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-24', 'epydoc', 'link-1');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-25" class="py-name"><a title="epydoc.docintrospecter" class="py-name" href="#" onclick="return doclink('link-25', 'docintrospecter', 'link-4');">docintrospecter</a></tt><tt class="py-op">.</tt><tt id="li [...]
+<a name="L210"></a><tt class="py-lineno"> 210</tt>  <tt class="py-line">    <tt id="link-27" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-27', 'epydoc', 'link-1');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-28" class="py-name"><a title="epydoc.docintrospecter" class="py-name" href="#" onclick="return doclink('link-28', 'docintrospecter', 'link-4');">docintrospecter</a></tt><tt class="py-op">.</tt><tt id="link-29" class="py-name"><a ti [...]
+<a name="L211"></a><tt class="py-lineno"> 211</tt>  <tt class="py-line">     </tt>
+<a name="L212"></a><tt class="py-lineno"> 212</tt>  <tt class="py-line">    <tt class="py-comment"># If our input is a python object name, then delegate to</tt> </tt>
+<a name="L213"></a><tt class="py-lineno"> 213</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># _find().</tt> </tt>
+<a name="L214"></a><tt class="py-lineno"> 214</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt id="link-30" class="py-name" targets="Variable epydoc.apidoc.ModuleDoc.filename=epydoc.apidoc.ModuleDoc-class.html#filename"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-30', 'filename', 'link-30');">filename</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt> <tt class="py-keywor [...]
+<a name="L215"></a><tt class="py-lineno"> 215</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">context</tt><tt class="py-op">:</tt> </tt>
+<a name="L216"></a><tt class="py-lineno"> 216</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"context should only be specified together "</tt> </tt>
+<a name="L217"></a><tt class="py-lineno"> 217</tt>  <tt class="py-line">                             <tt class="py-string">"with filename, not with name."</tt><tt class="py-op">)</tt> </tt>
+<a name="L218"></a><tt class="py-lineno"> 218</tt>  <tt class="py-line">        <tt id="link-32" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-32', 'name', 'link-31');">name</a></tt> <tt class="py-op">=</tt> <tt id="link-33" class="py-name" targets="Class epydoc.apidoc.DottedName=epydoc.apidoc.DottedName-class.html"><a title="epydoc.apidoc.DottedName" class="py-name" href="#" onclick="return doclink('link-33', 'DottedName [...]
+<a name="L219"></a><tt class="py-lineno"> 219</tt>  <tt class="py-line">        <tt class="py-name">val_doc</tt> <tt class="py-op">=</tt> <tt id="link-35" class="py-name" targets="Function epydoc.docparser._find()=epydoc.docparser-module.html#_find"><a title="epydoc.docparser._find" class="py-name" href="#" onclick="return doclink('link-35', '_find', 'link-35');">_find</a></tt><tt class="py-op">(</tt><tt id="link-36" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-nam [...]
+<a name="L220"></a><tt class="py-lineno"> 220</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">val_doc</tt><tt class="py-op">.</tt><tt id="link-37" class="py-name" targets="Variable epydoc.apidoc.GenericValueDoc.canonical_name=epydoc.apidoc.GenericValueDoc-class.html#canonical_name,Variable epydoc.apidoc.ValueDoc.canonical_name=epydoc.apidoc.ValueDoc-class.html#canonical_name,Variable epydoc.apidoc.VariableDoc.canonical_name=epydoc.apidoc.VariableDoc-c [...]
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-37', 'canonical_name', 'link-37');">canonical_name</a></tt> <tt class="py-keyword">is</tt> <tt id="link-38" class="py-name" targets="Variable epydoc.apidoc.UNKNOWN=epydoc.apidoc-module.html#UNKNOWN"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-38', 'UNKNOWN', 'link-38');">UNKNOWN</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L221"></a><tt class="py-lineno"> 221</tt>  <tt class="py-line">            <tt class="py-name">val_doc</tt><tt class="py-op">.</tt><tt id="link-39" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-39', 'canonical_name', 'link-37');">canonical_name</a></tt> <tt class="py-op">=</tt> <tt id="link-40" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-40', 'name', 'link-31');">name</a></tt> </tt>
+<a name="L222"></a><tt class="py-lineno"> 222</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">val_doc</tt> </tt>
+<a name="L223"></a><tt class="py-lineno"> 223</tt>  <tt class="py-line"> </tt>
+<a name="L224"></a><tt class="py-lineno"> 224</tt>  <tt class="py-line">    <tt class="py-comment"># If our input is a filename, then create a ModuleDoc for it,</tt> </tt>
+<a name="L225"></a><tt class="py-lineno"> 225</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># and use process_file() to populate its attributes.</tt> </tt>
+<a name="L226"></a><tt class="py-lineno"> 226</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">elif</tt> <tt id="link-41" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-41', 'filename', 'link-30');">filename</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt id="link-42" class="py-name"><a title="epydoc. [...]
+<a name="L227"></a><tt class="py-lineno"> 227</tt>  <tt class="py-line">        <tt class="py-comment"># Use a python source version, if possible.</tt> </tt>
+<a name="L228"></a><tt class="py-lineno"> 228</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">is_script</tt><tt class="py-op">:</tt> </tt>
+<a name="L229"></a><tt class="py-lineno"> 229</tt>  <tt class="py-line">            <tt class="py-keyword">try</tt><tt class="py-op">:</tt> <tt id="link-43" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-43', 'filename', 'link-30');">filename</a></tt> <tt class="py-op">=</tt> <tt id="link-44" class="py-name" targets="Function epydoc.util.py_src_filename()=epydoc.util-module.html#py_src_filename"><a title="epydoc.util.py_ [...]
+<a name="L230"></a><tt class="py-lineno"> 230</tt>  <tt class="py-line">            <tt class="py-keyword">except</tt> <tt class="py-name">ValueError</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> <tt class="py-keyword">raise</tt> <tt class="py-name">ImportError</tt><tt class="py-op">(</tt><tt class="py-string">'%s'</tt> <tt class="py-op">%</tt> <tt class="py-name">e</tt><tt class="py-op">)</tt> </tt>
+<a name="L231"></a><tt class="py-lineno"> 231</tt>  <tt class="py-line"> </tt>
+<a name="L232"></a><tt class="py-lineno"> 232</tt>  <tt class="py-line">        <tt class="py-comment"># Check the cache, first.</tt> </tt>
+<a name="L233"></a><tt class="py-lineno"> 233</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt id="link-46" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-46', 'filename', 'link-30');">filename</a></tt> <tt class="py-keyword">in</tt> <tt id="link-47" class="py-name"><a title="epydoc.docparser._moduledoc_cache" class="py-name" href="#" onclick="return doclink('link-47', '_mo [...]
+<a name="L234"></a><tt class="py-lineno"> 234</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt id="link-48" class="py-name"><a title="epydoc.docparser._moduledoc_cache" class="py-name" href="#" onclick="return doclink('link-48', '_moduledoc_cache', 'link-9');">_moduledoc_cache</a></tt><tt class="py-op">[</tt><tt id="link-49" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-49', 'filename', 'link [...]
+<a name="L235"></a><tt class="py-lineno"> 235</tt>  <tt class="py-line">         </tt>
+<a name="L236"></a><tt class="py-lineno"> 236</tt>  <tt class="py-line">        <tt id="link-50" class="py-name" targets="Method epydoc.cli.ConsoleLogger.log()=epydoc.cli.ConsoleLogger-class.html#log,Method epydoc.cli.HTMLLogger.log()=epydoc.cli.HTMLLogger-class.html#log,Method epydoc.gui.GUILogger.log()=epydoc.gui.GUILogger-class.html#log,Module epydoc.log=epydoc.log-module.html,Method epydoc.log.Logger.log()=epydoc.log.Logger-class.html#log,Method epydoc.log.SimpleLogger.log()=epydoc.l [...]
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-50', 'log', 'link-50');">log</a></tt><tt class="py-op">.</tt><tt id="link-51" class="py-name" targets="Function epydoc.log.info()=epydoc.log-module.html#info"><a title="epydoc.log.info" class="py-name" href="#" onclick="return doclink('link-51', 'info', 'link-51');">info</a></tt><tt class="py-op">(</tt><tt class="py-string">"Parsing %s"</tt> <tt class="py-op">%</tt> <tt id="link-52" class="py-name"><a tit [...]
+<a name="L237"></a><tt class="py-lineno"> 237</tt>  <tt class="py-line"> </tt>
+<a name="L238"></a><tt class="py-lineno"> 238</tt>  <tt class="py-line">        <tt class="py-comment"># If the context wasn't provided, then check if the file is in</tt> </tt>
+<a name="L239"></a><tt class="py-lineno"> 239</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># a package directory.  If so, then update basedir & name to</tt> </tt>
+<a name="L240"></a><tt class="py-lineno"> 240</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># contain the topmost package's directory and the fully</tt> </tt>
+<a name="L241"></a><tt class="py-lineno"> 241</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># qualified name for this file.  (This update assume the</tt> </tt>
+<a name="L242"></a><tt class="py-lineno"> 242</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># default value of __path__ for the parent packages; if the</tt> </tt>
+<a name="L243"></a><tt class="py-lineno"> 243</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># parent packages override their __path__s, then this can</tt> </tt>
+<a name="L244"></a><tt class="py-lineno"> 244</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># cause us not to find the value.)</tt> </tt>
+<a name="L245"></a><tt class="py-lineno"> 245</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">context</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">is_script</tt><tt class="py-op">:</tt> </tt>
+<a name="L246"></a><tt class="py-lineno"> 246</tt>  <tt class="py-line">            <tt class="py-name">basedir</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-53" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-53', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt id="link-54" class="py-name"><a title="epydoc.apido [...]
+<a name="L247"></a><tt class="py-lineno"> 247</tt>  <tt class="py-line">            <tt id="link-55" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-55', 'name', 'link-31');">name</a></tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-56" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-56', 'path', 'link-0');">path</a>< [...]
+<a name="L248"></a><tt class="py-lineno"> 248</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt id="link-59" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-59', 'name', 'link-31');">name</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'__init__'</tt><tt class="py-op">:</tt> </tt>
+<a name="L249"></a><tt class="py-lineno"> 249</tt>  <tt class="py-line">                <tt class="py-name">basedir</tt><tt class="py-op">,</tt> <tt id="link-60" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-60', 'name', 'link-31');">name</a></tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-61" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onc [...]
+<a name="L250"></a><tt class="py-lineno"> 250</tt>  <tt class="py-line">            <tt class="py-name">context</tt> <tt class="py-op">=</tt> <tt id="link-62" class="py-name" targets="Function epydoc.docparser._parse_package()=epydoc.docparser-module.html#_parse_package"><a title="epydoc.docparser._parse_package" class="py-name" href="#" onclick="return doclink('link-62', '_parse_package', 'link-62');">_parse_package</a></tt><tt class="py-op">(</tt><tt class="py-name">basedir</tt><tt cla [...]
+<a name="L251"></a><tt class="py-lineno"> 251</tt>  <tt class="py-line"> </tt>
+<a name="L252"></a><tt class="py-lineno"> 252</tt>  <tt class="py-line">        <tt class="py-comment"># Figure out the canonical name of the module we're parsing.</tt> </tt>
+<a name="L253"></a><tt class="py-lineno"> 253</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">is_script</tt><tt class="py-op">:</tt> </tt>
+<a name="L254"></a><tt class="py-lineno"> 254</tt>  <tt class="py-line">            <tt class="py-name">module_name</tt><tt class="py-op">,</tt> <tt class="py-name">is_pkg</tt> <tt class="py-op">=</tt> <tt id="link-63" class="py-name" targets="Function epydoc.docparser._get_module_name()=epydoc.docparser-module.html#_get_module_name"><a title="epydoc.docparser._get_module_name" class="py-name" href="#" onclick="return doclink('link-63', '_get_module_name', 'link-63');">_get_module_name</ [...]
+<a name="L255"></a><tt class="py-lineno"> 255</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L256"></a><tt class="py-lineno"> 256</tt>  <tt class="py-line">            <tt class="py-name">module_name</tt> <tt class="py-op">=</tt> <tt id="link-65" class="py-name"><a title="epydoc.apidoc.DottedName" class="py-name" href="#" onclick="return doclink('link-65', 'DottedName', 'link-33');">DottedName</a></tt><tt class="py-op">(</tt><tt id="link-66" class="py-name" targets="Function epydoc.util.munge_script_name()=epydoc.util-module.html#munge_script_name"><a title="epydoc.util [...]
+<a name="L257"></a><tt class="py-lineno"> 257</tt>  <tt class="py-line">            <tt class="py-name">is_pkg</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L258"></a><tt class="py-lineno"> 258</tt>  <tt class="py-line"> </tt>
+<a name="L259"></a><tt class="py-lineno"> 259</tt>  <tt class="py-line">        <tt class="py-comment"># Create a new ModuleDoc for the module, & add it to the cache.</tt> </tt>
+<a name="L260"></a><tt class="py-lineno"> 260</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">module_doc</tt> <tt class="py-op">=</tt> <tt id="link-68" class="py-name" targets="Class epydoc.apidoc.ModuleDoc=epydoc.apidoc.ModuleDoc-class.html"><a title="epydoc.apidoc.ModuleDoc" class="py-name" href="#" onclick="return doclink('link-68', 'ModuleDoc', 'link-68');">ModuleDoc</a></tt><tt class="py-op">(</tt><tt id="link-69" class="py-name"><a title="epydoc.ap [...]
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-69', 'canonical_name', 'link-37');">canonical_name</a></tt><tt class="py-op">=</tt><tt class="py-name">module_name</tt><tt class="py-op">,</tt> <tt id="link-70" class="py-name" targets="Variable epydoc.apidoc.NamespaceDoc.variables=epydoc.apidoc.NamespaceDoc-class.html#variables"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-70', 'varia [...]
+<a name="L261"></a><tt class="py-lineno"> 261</tt>  <tt class="py-line">                               <tt id="link-71" class="py-name" targets="Variable epydoc.apidoc.NamespaceDoc.sort_spec=epydoc.apidoc.NamespaceDoc-class.html#sort_spec"><a title="epydoc.apidoc.NamespaceDoc.sort_spec" class="py-name" href="#" onclick="return doclink('link-71', 'sort_spec', 'link-71');">sort_spec</a></tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt [...]
+<a name="L262"></a><tt class="py-lineno"> 262</tt>  <tt class="py-line">                               <tt id="link-73" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-73', 'filename', 'link-30');">filename</a></tt><tt class="py-op">=</tt><tt id="link-74" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-74', 'filename', 'link-30');">filename</a></tt><tt cla [...]
+<a name="L263"></a><tt class="py-lineno"> 263</tt>  <tt class="py-line">                               <tt id="link-76" class="py-name" targets="Variable epydoc.apidoc.ModuleDoc.is_package=epydoc.apidoc.ModuleDoc-class.html#is_package"><a title="epydoc.apidoc.ModuleDoc.is_package" class="py-name" href="#" onclick="return doclink('link-76', 'is_package', 'link-76');">is_package</a></tt><tt class="py-op">=</tt><tt class="py-name">is_pkg</tt><tt class="py-op">,</tt> <tt id="link-77" class=" [...]
+<a name="L264"></a><tt class="py-lineno"> 264</tt>  <tt class="py-line">                               <tt id="link-78" class="py-name" targets="Variable epydoc.apidoc.APIDoc.docs_extracted_by=epydoc.apidoc.APIDoc-class.html#docs_extracted_by"><a title="epydoc.apidoc.APIDoc.docs_extracted_by" class="py-name" href="#" onclick="return doclink('link-78', 'docs_extracted_by', 'link-78');">docs_extracted_by</a></tt><tt class="py-op">=</tt><tt class="py-string">'parser'</tt><tt class="py-op">) [...]
+<a name="L265"></a><tt class="py-lineno"> 265</tt>  <tt class="py-line">        <tt class="py-name">module_doc</tt><tt class="py-op">.</tt><tt id="link-79" class="py-name" targets="Variable epydoc.apidoc.ValueDoc.defining_module=epydoc.apidoc.ValueDoc-class.html#defining_module,Variable epydoc.apidoc.VariableDoc.defining_module=epydoc.apidoc.VariableDoc-class.html#defining_module"><a title="epydoc.apidoc.ValueDoc.defining_module
+epydoc.apidoc.VariableDoc.defining_module" class="py-name" href="#" onclick="return doclink('link-79', 'defining_module', 'link-79');">defining_module</a></tt> <tt class="py-op">=</tt> <tt class="py-name">module_doc</tt> </tt>
+<a name="L266"></a><tt class="py-lineno"> 266</tt>  <tt class="py-line">        <tt id="link-80" class="py-name"><a title="epydoc.docparser._moduledoc_cache" class="py-name" href="#" onclick="return doclink('link-80', '_moduledoc_cache', 'link-9');">_moduledoc_cache</a></tt><tt class="py-op">[</tt><tt id="link-81" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-81', 'filename', 'link-30');">filename</a></tt><tt class="py- [...]
+<a name="L267"></a><tt class="py-lineno"> 267</tt>  <tt class="py-line"> </tt>
+<a name="L268"></a><tt class="py-lineno"> 268</tt>  <tt class="py-line">        <tt class="py-comment"># Set the module's __path__ to its default value.</tt> </tt>
+<a name="L269"></a><tt class="py-lineno"> 269</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">is_pkg</tt><tt class="py-op">:</tt> </tt>
+<a name="L270"></a><tt class="py-lineno"> 270</tt>  <tt class="py-line">            <tt class="py-name">module_doc</tt><tt class="py-op">.</tt><tt id="link-82" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-82', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-83" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py [...]
+<a name="L271"></a><tt class="py-lineno"> 271</tt>  <tt class="py-line">         </tt>
+<a name="L272"></a><tt class="py-lineno"> 272</tt>  <tt class="py-line">        <tt class="py-comment"># Add this module to the parent package's list of submodules.</tt> </tt>
+<a name="L273"></a><tt class="py-lineno"> 273</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">context</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L274"></a><tt class="py-lineno"> 274</tt>  <tt class="py-line">            <tt class="py-name">context</tt><tt class="py-op">.</tt><tt id="link-85" class="py-name"><a title="epydoc.apidoc.ModuleDoc.submodules" class="py-name" href="#" onclick="return doclink('link-85', 'submodules', 'link-77');">submodules</a></tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">module_doc</tt><tt class="py-op">)</tt> </tt>
+<a name="L275"></a><tt class="py-lineno"> 275</tt>  <tt class="py-line"> </tt>
+<a name="L276"></a><tt class="py-lineno"> 276</tt>  <tt class="py-line">        <tt class="py-comment"># Tokenize & process the contents of the module's source file.</tt> </tt>
+<a name="L277"></a><tt class="py-lineno"> 277</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L278"></a><tt class="py-lineno"> 278</tt>  <tt class="py-line">            <tt id="link-86" class="py-name" targets="Function epydoc.docparser.process_file()=epydoc.docparser-module.html#process_file"><a title="epydoc.docparser.process_file" class="py-name" href="#" onclick="return doclink('link-86', 'process_file', 'link-86');">process_file</a></tt><tt class="py-op">(</tt><tt class="py-name">module_doc</tt><tt class="py-op">)</tt> </tt>
+<a name="L279"></a><tt class="py-lineno"> 279</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">tokenize</tt><tt class="py-op">.</tt><tt class="py-name">TokenError</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
+<a name="L280"></a><tt class="py-lineno"> 280</tt>  <tt class="py-line">            <tt class="py-name">msg</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">srow</tt><tt class="py-op">,</tt> <tt class="py-name">scol</tt><tt class="py-op">)</tt> <tt class="py-op">=</tt> <tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">args</tt> </tt>
+<a name="L281"></a><tt class="py-lineno"> 281</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt id="link-87" class="py-name" targets="Class epydoc.docparser.ParseError=epydoc.docparser.ParseError-class.html,Class epydoc.markup.ParseError=epydoc.markup.ParseError-class.html"><a title="epydoc.docparser.ParseError
+epydoc.markup.ParseError" class="py-name" href="#" onclick="return doclink('link-87', 'ParseError', 'link-87');">ParseError</a></tt><tt class="py-op">(</tt><tt class="py-string">'Error during parsing: %s '</tt> </tt>
+<a name="L282"></a><tt class="py-lineno"> 282</tt>  <tt class="py-line">                             <tt class="py-string">'(%s, line %d, char %d)'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L283"></a><tt class="py-lineno"> 283</tt>  <tt class="py-line">                             <tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">,</tt> <tt class="py-name">module_doc</tt><tt class="py-op">.</tt><tt id="link-88" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-88', 'filename', 'link-30');">filename</a></tt><tt class="py-op">,</tt> <tt class="py-name">srow</tt><tt class="py-op">,</t [...]
+<a name="L284"></a><tt class="py-lineno"> 284</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">IndentationError</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
+<a name="L285"></a><tt class="py-lineno"> 285</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt id="link-89" class="py-name"><a title="epydoc.docparser.ParseError
+epydoc.markup.ParseError" class="py-name" href="#" onclick="return doclink('link-89', 'ParseError', 'link-87');">ParseError</a></tt><tt class="py-op">(</tt><tt class="py-string">'Error during parsing: %s (%s)'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L286"></a><tt class="py-lineno"> 286</tt>  <tt class="py-line">                             <tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">,</tt> <tt class="py-name">module_doc</tt><tt class="py-op">.</tt><tt id="link-90" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-90', 'filename', 'link-30');">filename</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L287"></a><tt class="py-lineno"> 287</tt>  <tt class="py-line"> </tt>
+<a name="L288"></a><tt class="py-lineno"> 288</tt>  <tt class="py-line">        <tt class="py-comment"># Handle any special variables (__path__, __docformat__, etc.)</tt> </tt>
+<a name="L289"></a><tt class="py-lineno"> 289</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt id="link-91" class="py-name" targets="Function epydoc.docparser.handle_special_module_vars()=epydoc.docparser-module.html#handle_special_module_vars"><a title="epydoc.docparser.handle_special_module_vars" class="py-name" href="#" onclick="return doclink('link-91', 'handle_special_module_vars', 'link-91');">handle_special_module_vars</a></tt><tt class="py-op">(</tt><tt class="py [...]
+<a name="L290"></a><tt class="py-lineno"> 290</tt>  <tt class="py-line"> </tt>
+<a name="L291"></a><tt class="py-lineno"> 291</tt>  <tt class="py-line">        <tt class="py-comment"># Return the completed ModuleDoc</tt> </tt>
+<a name="L292"></a><tt class="py-lineno"> 292</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">return</tt> <tt class="py-name">module_doc</tt> </tt>
+<a name="L293"></a><tt class="py-lineno"> 293</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L294"></a><tt class="py-lineno"> 294</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"Expected exactly one of the following "</tt> </tt>
+<a name="L295"></a><tt class="py-lineno"> 295</tt>  <tt class="py-line">                         <tt class="py-string">"arguments: name, filename"</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L296"></a><tt class="py-lineno"> 296</tt>  <tt class="py-line"> </tt>
+<a name="_parse_package"></a><div id="_parse_package-def"><a name="L297"></a><tt class="py-lineno"> 297</tt> <a class="py-toggle" href="#" id="_parse_package-toggle" onclick="return toggle('_parse_package');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docparser-module.html#_parse_package">_parse_package</a><tt class="py-op">(</tt><tt class="py-param">package_dir</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_parse_package-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_parse_package-expanded"><a name="L298"></a><tt class="py-lineno"> 298</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L299"></a><tt class="py-lineno"> 299</tt>  <tt class="py-line"><tt class="py-docstring">    If the given directory is a package directory, then parse its</tt> </tt>
+<a name="L300"></a><tt class="py-lineno"> 300</tt>  <tt class="py-line"><tt class="py-docstring">    __init__.py file (and the __init__.py files of all ancestor</tt> </tt>
+<a name="L301"></a><tt class="py-lineno"> 301</tt>  <tt class="py-line"><tt class="py-docstring">    packages); and return its C{ModuleDoc}.</tt> </tt>
+<a name="L302"></a><tt class="py-lineno"> 302</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L303"></a><tt class="py-lineno"> 303</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-92" class="py-name" targets="Function epydoc.util.is_package_dir()=epydoc.util-module.html#is_package_dir"><a title="epydoc.util.is_package_dir" class="py-name" href="#" onclick="return doclink('link-92', 'is_package_dir', 'link-92');">is_package_dir</a></tt><tt class="py-op">(</tt><tt class="py-name">package_dir</tt><tt class="py-op">)</ [...]
+<a name="L304"></a><tt class="py-lineno"> 304</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
+<a name="L305"></a><tt class="py-lineno"> 305</tt>  <tt class="py-line">    <tt class="py-name">parent_dir</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-93" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-93', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-name">package_dir</tt><tt class="py-op">)</tt> [...]
+<a name="L306"></a><tt class="py-lineno"> 306</tt>  <tt class="py-line">    <tt class="py-name">parent_doc</tt> <tt class="py-op">=</tt> <tt id="link-94" class="py-name"><a title="epydoc.docparser._parse_package" class="py-name" href="#" onclick="return doclink('link-94', '_parse_package', 'link-62');">_parse_package</a></tt><tt class="py-op">(</tt><tt class="py-name">parent_dir</tt><tt class="py-op">)</tt> </tt>
+<a name="L307"></a><tt class="py-lineno"> 307</tt>  <tt class="py-line">    <tt class="py-name">package_file</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-95" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-95', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">package_dir</tt><tt class="py-op">,</tt [...]
+<a name="L308"></a><tt class="py-lineno"> 308</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-96" class="py-name" targets="Function epydoc.docparser.parse_docs()=epydoc.docparser-module.html#parse_docs"><a title="epydoc.docparser.parse_docs" class="py-name" href="#" onclick="return doclink('link-96', 'parse_docs', 'link-96');">parse_docs</a></tt><tt class="py-op">(</tt><tt id="link-97" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-nam [...]
+</div><a name="L309"></a><tt class="py-lineno"> 309</tt>  <tt class="py-line">         </tt>
+<a name="L310"></a><tt class="py-lineno"> 310</tt>  <tt class="py-line"><tt class="py-comment"># Special vars:</tt> </tt>
+<a name="L311"></a><tt class="py-lineno"> 311</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># C{__docformat__}, C{__all__}, and C{__path__}.</tt> </tt>
+<a name="handle_special_module_vars"></a><div id="handle_special_module_vars-def"><a name="L312"></a><tt class="py-lineno"> 312</tt> <a class="py-toggle" href="#" id="handle_special_module_vars-toggle" onclick="return toggle('handle_special_module_vars');">-</a><tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docparser-module.html#handle_special_module_vars">handle_special_module_vars</a><tt class="py-op">(</tt><tt class= [...]
+</div><div id="handle_special_module_vars-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="handle_special_module_vars-expanded"><a name="L313"></a><tt class="py-lineno"> 313</tt>  <tt class="py-line">    <tt class="py-comment"># If __docformat__ is defined, parse its value.</tt> </tt>
+<a name="L314"></a><tt class="py-lineno"> 314</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-98" class="py-name" targets="Variable epydoc.apidoc.ValueDoc.toktree=epydoc.apidoc.ValueDoc-class.html#toktree"><a title="epydoc.apidoc.ValueDoc.toktree" class="py-name" href="#" onclick="return doclink('link-98', 'toktree', 'link-98');">toktree</a></tt> <tt class="py-op">=</tt> <tt id="link-99" class="py-name" targets="Function epydoc.docparser._module_var_toktree()=epydo [...]
+<a name="L315"></a><tt class="py-lineno"> 315</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-100" class="py-name"><a title="epydoc.apidoc.ValueDoc.toktree" class="py-name" href="#" onclick="return doclink('link-100', 'toktree', 'link-98');">toktree</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L316"></a><tt class="py-lineno"> 316</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> <tt class="py-name">module_doc</tt><tt class="py-op">.</tt><tt id="link-101" class="py-name" targets="Variable epydoc.apidoc.ModuleDoc.docformat=epydoc.apidoc.ModuleDoc-class.html#docformat"><a title="epydoc.apidoc.ModuleDoc.docformat" class="py-name" href="#" onclick="return doclink('link-101', 'docformat', 'link-101');">docformat</a></tt> <tt class="py [...]
+<a name="L317"></a><tt class="py-lineno"> 317</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt><tt class="py-op">:</tt> <tt class="py-keyword">pass</tt> </tt>
+<a name="L318"></a><tt class="py-lineno"> 318</tt>  <tt class="py-line">        <tt class="py-keyword">del</tt> <tt class="py-name">module_doc</tt><tt class="py-op">.</tt><tt id="link-104" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-104', 'variables', 'link-70');">variables</a></tt><tt class="py-op">[</tt><tt class="py-string">'__docformat__'</tt><tt class="py-op">]</tt> </tt>
+<a name="L319"></a><tt class="py-lineno"> 319</tt>  <tt class="py-line">             </tt>
+<a name="L320"></a><tt class="py-lineno"> 320</tt>  <tt class="py-line">    <tt class="py-comment"># If __all__ is defined, parse its value.</tt> </tt>
+<a name="L321"></a><tt class="py-lineno"> 321</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-105" class="py-name"><a title="epydoc.apidoc.ValueDoc.toktree" class="py-name" href="#" onclick="return doclink('link-105', 'toktree', 'link-98');">toktree</a></tt> <tt class="py-op">=</tt> <tt id="link-106" class="py-name"><a title="epydoc.docparser._module_var_toktree" class="py-name" href="#" onclick="return doclink('link-106', '_module_var_toktree', 'link-99');">_modul [...]
+<a name="L322"></a><tt class="py-lineno"> 322</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-107" class="py-name"><a title="epydoc.apidoc.ValueDoc.toktree" class="py-name" href="#" onclick="return doclink('link-107', 'toktree', 'link-98');">toktree</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L323"></a><tt class="py-lineno"> 323</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L324"></a><tt class="py-lineno"> 324</tt>  <tt class="py-line">            <tt class="py-name">public_names</tt> <tt class="py-op">=</tt> <tt class="py-name">set</tt><tt class="py-op">(</tt><tt id="link-108" class="py-name" targets="Function epydoc.docparser.parse_string_list()=epydoc.docparser-module.html#parse_string_list"><a title="epydoc.docparser.parse_string_list" class="py-name" href="#" onclick="return doclink('link-108', 'parse_string_list', 'link-108');">parse_string_l [...]
+<a name="L325"></a><tt class="py-lineno"> 325</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt id="link-110" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-110', 'name', 'link-31');">name</a></tt><tt class="py-op">,</tt> <tt class="py-name">var_doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">module_doc</tt><tt class="py-op">.</tt><tt id="link-111" class="py-name"><a title="epydoc.apidoc [...]
+<a name="L326"></a><tt class="py-lineno"> 326</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt id="link-112" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-112', 'name', 'link-31');">name</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">public_names</tt><tt class="py-op">:</tt> </tt>
+<a name="L327"></a><tt class="py-lineno"> 327</tt>  <tt class="py-line">                    <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-113" class="py-name" targets="Variable epydoc.apidoc.VariableDoc.is_public=epydoc.apidoc.VariableDoc-class.html#is_public"><a title="epydoc.apidoc.VariableDoc.is_public" class="py-name" href="#" onclick="return doclink('link-113', 'is_public', 'link-113');">is_public</a></tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L328"></a><tt class="py-lineno"> 328</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">var_doc</tt><tt class="py-op">,</tt> <tt id="link-114" class="py-name"><a title="epydoc.apidoc.ModuleDoc" class="py-name" href="#" onclick="return doclink('link-114', 'ModuleDoc', 'link-68');">ModuleDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L329"></a><tt class="py-lineno"> 329</tt>  <tt class="py-line">                        <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-115" class="py-name" targets="Variable epydoc.apidoc.VariableDoc.is_imported=epydoc.apidoc.VariableDoc-class.html#is_imported"><a title="epydoc.apidoc.VariableDoc.is_imported" class="py-name" href="#" onclick="return doclink('link-115', 'is_imported', 'link-115');">is_imported</a></tt> <tt class="py-op">=</tt> <tt class="py-n [...]
+<a name="L330"></a><tt class="py-lineno"> 330</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L331"></a><tt class="py-lineno"> 331</tt>  <tt class="py-line">                    <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-116" class="py-name"><a title="epydoc.apidoc.VariableDoc.is_public" class="py-name" href="#" onclick="return doclink('link-116', 'is_public', 'link-113');">is_public</a></tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L332"></a><tt class="py-lineno"> 332</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt id="link-117" class="py-name"><a title="epydoc.docparser.ParseError
+epydoc.markup.ParseError" class="py-name" href="#" onclick="return doclink('link-117', 'ParseError', 'link-87');">ParseError</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L333"></a><tt class="py-lineno"> 333</tt>  <tt class="py-line">            <tt class="py-comment"># If we couldn't parse the list, give precedence to introspection.</tt> </tt>
+<a name="L334"></a><tt class="py-lineno"> 334</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">for</tt> <tt id="link-118" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-118', 'name', 'link-31');">name</a></tt><tt class="py-op">,</tt> <tt class="py-name">var_doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">module_doc</tt><tt class="py-op">.</tt><tt id="link-119" class="py-n [...]
+<a name="L335"></a><tt class="py-lineno"> 335</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">var_doc</tt><tt class="py-op">,</tt> <tt id="link-120" class="py-name"><a title="epydoc.apidoc.ModuleDoc" class="py-name" href="#" onclick="return doclink('link-120', 'ModuleDoc', 'link-68');">ModuleDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L336"></a><tt class="py-lineno"> 336</tt>  <tt class="py-line">                    <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-121" class="py-name"><a title="epydoc.apidoc.VariableDoc.is_imported" class="py-name" href="#" onclick="return doclink('link-121', 'is_imported', 'link-115');">is_imported</a></tt> <tt class="py-op">=</tt> <tt id="link-122" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-122 [...]
+<a name="L337"></a><tt class="py-lineno"> 337</tt>  <tt class="py-line">        <tt class="py-keyword">del</tt> <tt class="py-name">module_doc</tt><tt class="py-op">.</tt><tt id="link-123" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-123', 'variables', 'link-70');">variables</a></tt><tt class="py-op">[</tt><tt class="py-string">'__all__'</tt><tt class="py-op">]</tt> </tt>
+<a name="L338"></a><tt class="py-lineno"> 338</tt>  <tt class="py-line"> </tt>
+<a name="L339"></a><tt class="py-lineno"> 339</tt>  <tt class="py-line">    <tt class="py-comment"># If __path__ is defined, then extract its value (pkgs only)</tt> </tt>
+<a name="L340"></a><tt class="py-lineno"> 340</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">module_doc</tt><tt class="py-op">.</tt><tt id="link-124" class="py-name"><a title="epydoc.apidoc.ModuleDoc.is_package" class="py-name" href="#" onclick="return doclink('link-124', 'is_package', 'link-76');">is_package</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L341"></a><tt class="py-lineno"> 341</tt>  <tt class="py-line">        <tt id="link-125" class="py-name"><a title="epydoc.apidoc.ValueDoc.toktree" class="py-name" href="#" onclick="return doclink('link-125', 'toktree', 'link-98');">toktree</a></tt> <tt class="py-op">=</tt> <tt id="link-126" class="py-name"><a title="epydoc.docparser._module_var_toktree" class="py-name" href="#" onclick="return doclink('link-126', '_module_var_toktree', 'link-99');">_module_var_toktree</a></tt><t [...]
+<a name="L342"></a><tt class="py-lineno"> 342</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-127" class="py-name"><a title="epydoc.apidoc.ValueDoc.toktree" class="py-name" href="#" onclick="return doclink('link-127', 'toktree', 'link-98');">toktree</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L343"></a><tt class="py-lineno"> 343</tt>  <tt class="py-line">            <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L344"></a><tt class="py-lineno"> 344</tt>  <tt class="py-line">                <tt class="py-name">module_doc</tt><tt class="py-op">.</tt><tt id="link-128" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-128', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt id="link-129" class="py-name"><a title="epydoc.docparser.parse_string_list" class="py-name" href="#" onclick="return doclink('link-129', 'parse_str [...]
+<a name="L345"></a><tt class="py-lineno"> 345</tt>  <tt class="py-line">            <tt class="py-keyword">except</tt> <tt id="link-131" class="py-name"><a title="epydoc.docparser.ParseError
+epydoc.markup.ParseError" class="py-name" href="#" onclick="return doclink('link-131', 'ParseError', 'link-87');">ParseError</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L346"></a><tt class="py-lineno"> 346</tt>  <tt class="py-line">                <tt class="py-keyword">pass</tt> <tt class="py-comment"># [xx]</tt> </tt>
+<a name="L347"></a><tt class="py-lineno"> 347</tt>  <tt class="py-line">            <tt class="py-keyword">del</tt> <tt class="py-name">module_doc</tt><tt class="py-op">.</tt><tt id="link-132" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-132', 'variables', 'link-70');">variables</a></tt><tt class="py-op">[</tt><tt class="py-string">'__path__'</tt><tt class="py-op">]</tt> </tt>
+</div><a name="L348"></a><tt class="py-lineno"> 348</tt>  <tt class="py-line"> </tt>
+<a name="_module_var_toktree"></a><div id="_module_var_toktree-def"><a name="L349"></a><tt class="py-lineno"> 349</tt> <a class="py-toggle" href="#" id="_module_var_toktree-toggle" onclick="return toggle('_module_var_toktree');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docparser-module.html#_module_var_toktree">_module_var_toktree</a><tt class="py-op">(</tt><tt class="py-param">module_doc</tt><tt class="py-op">,</tt> <tt class="py-param [...]
+</div><div id="_module_var_toktree-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_module_var_toktree-expanded"><a name="L350"></a><tt class="py-lineno"> 350</tt>  <tt class="py-line">    <tt class="py-name">var_doc</tt> <tt class="py-op">=</tt> <tt class="py-name">module_doc</tt><tt class="py-op">.</tt><tt id="link-133" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-133', 'variables', 'link [...]
+<a name="L351"></a><tt class="py-lineno"> 351</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">var_doc</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt> <tt class="py-keyword">or</tt> <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-135" class="py-name" targets="Variable epydoc.apidoc.VariableDoc.value=epydoc.apidoc.VariableDoc-class.html#value"><a title="epydoc.apidoc.VariableDoc.value" class="py [...]
+<a name="L352"></a><tt class="py-lineno"> 352</tt>  <tt class="py-line">        <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-137" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-137', 'value', 'link-135');">value</a></tt><tt class="py-op">.</tt><tt id="link-138" class="py-name"><a title="epydoc.apidoc.ValueDoc.toktree" class="py-name" href="#" onclick="return doclink('link-138', 'toktree', 'link-98' [...]
+<a name="L353"></a><tt class="py-lineno"> 353</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
+<a name="L354"></a><tt class="py-lineno"> 354</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L355"></a><tt class="py-lineno"> 355</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-140" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-140', 'value', 'link-135');">value</a></tt><tt class="py-op">.</tt><tt id="link-141" class="py-name"><a title="epydoc.apidoc.ValueDoc.toktree" class="py-name" href="#" onclick="return docli [...]
+</div><a name="L356"></a><tt class="py-lineno"> 356</tt>  <tt class="py-line"> </tt>
+<a name="L357"></a><tt class="py-lineno"> 357</tt>  <tt class="py-line"><tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L358"></a><tt class="py-lineno"> 358</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#{ Module Lookup</tt> </tt>
+<a name="L359"></a><tt class="py-lineno"> 359</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L360"></a><tt class="py-lineno"> 360</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="_find"></a><div id="_find-def"><a name="L361"></a><tt class="py-lineno"> 361</tt> <a class="py-toggle" href="#" id="_find-toggle" onclick="return toggle('_find');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docparser-module.html#_find">_find</a><tt class="py-op">(</tt><tt class="py-param">name</tt><tt class="py-op">,</tt> <tt class="py-param">package_doc</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">) [...]
+</div><div id="_find-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_find-expanded"><a name="L362"></a><tt class="py-lineno"> 362</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L363"></a><tt class="py-lineno"> 363</tt>  <tt class="py-line"><tt class="py-docstring">    Return the API documentaiton for the object whose name is</tt> </tt>
+<a name="L364"></a><tt class="py-lineno"> 364</tt>  <tt class="py-line"><tt class="py-docstring">    C{name}.  C{package_doc}, if specified, is the API</tt> </tt>
+<a name="L365"></a><tt class="py-lineno"> 365</tt>  <tt class="py-line"><tt class="py-docstring">    documentation for the package containing the named object.</tt> </tt>
+<a name="L366"></a><tt class="py-lineno"> 366</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L367"></a><tt class="py-lineno"> 367</tt>  <tt class="py-line">    <tt class="py-comment"># If we're inside a package, then find the package's path.</tt> </tt>
+<a name="L368"></a><tt class="py-lineno"> 368</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">package_doc</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L369"></a><tt class="py-lineno"> 369</tt>  <tt class="py-line">        <tt id="link-142" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-142', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L370"></a><tt class="py-lineno"> 370</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">package_doc</tt><tt class="py-op">.</tt><tt id="link-143" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-143', 'path', 'link-0');">path</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt id="link-144" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" [...]
+<a name="L371"></a><tt class="py-lineno"> 371</tt>  <tt class="py-line">        <tt id="link-145" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-145', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt class="py-name">package_doc</tt><tt class="py-op">.</tt><tt id="link-146" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-146', 'path', 'link-0');">pat [...]
+<a name="L372"></a><tt class="py-lineno"> 372</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L373"></a><tt class="py-lineno"> 373</tt>  <tt class="py-line">        <tt id="link-147" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-147', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-148" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-148', 'path',  [...]
+<a name="L374"></a><tt class="py-lineno"> 374</tt>  <tt class="py-line"> </tt>
+<a name="L375"></a><tt class="py-lineno"> 375</tt>  <tt class="py-line">    <tt class="py-comment"># The leftmost identifier in `name` should be a module or</tt> </tt>
+<a name="L376"></a><tt class="py-lineno"> 376</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># package on the given path; find it and parse it.</tt> </tt>
+<a name="L377"></a><tt class="py-lineno"> 377</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-150" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-150', 'filename', 'link-30');">filename</a></tt> <tt class="py-op">=</tt> <tt id="link-151" class="py-name" targets="Function epydoc.docparser._get_filename()=epydoc.docparser-module.html#_get_filename"><a title="epydoc.docparser._get_filename" class="py- [...]
+<a name="L378"></a><tt class="py-lineno"> 378</tt>  <tt class="py-line">    <tt class="py-name">module_doc</tt> <tt class="py-op">=</tt> <tt id="link-154" class="py-name"><a title="epydoc.docparser.parse_docs" class="py-name" href="#" onclick="return doclink('link-154', 'parse_docs', 'link-96');">parse_docs</a></tt><tt class="py-op">(</tt><tt id="link-155" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-155', 'filename',  [...]
+<a name="L379"></a><tt class="py-lineno"> 379</tt>  <tt class="py-line"> </tt>
+<a name="L380"></a><tt class="py-lineno"> 380</tt>  <tt class="py-line">    <tt class="py-comment"># If the name just has one identifier, then the module we just</tt> </tt>
+<a name="L381"></a><tt class="py-lineno"> 381</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># parsed is the object we're looking for; return it.</tt> </tt>
+<a name="L382"></a><tt class="py-lineno"> 382</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-156" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-156', 'name', 'link-31');">name</a></tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> <tt class="py-keyword">return< [...]
+<a name="L383"></a><tt class="py-lineno"> 383</tt>  <tt class="py-line"> </tt>
+<a name="L384"></a><tt class="py-lineno"> 384</tt>  <tt class="py-line">    <tt class="py-comment"># Otherwise, we're looking for something inside the module.</tt> </tt>
+<a name="L385"></a><tt class="py-lineno"> 385</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># First, check to see if it's in a variable (but ignore</tt> </tt>
+<a name="L386"></a><tt class="py-lineno"> 386</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># variables that just contain imported submodules).</tt> </tt>
+<a name="L387"></a><tt class="py-lineno"> 387</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-157" class="py-name" targets="Function epydoc.docparser._is_submodule_import_var()=epydoc.docparser-module.html#_is_submodule_import_var"><a title="epydoc.docparser._is_submodule_import_var" class="py-name" href="#" onclick="return doclink('link-157', '_is_submodule_import_var', 'link-157');">_is_submodule_impo [...]
+<a name="L388"></a><tt class="py-lineno"> 388</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt id="link-159" class="py-name" targets="Function epydoc.docparser._find_in_namespace()=epydoc.docparser-module.html#_find_in_namespace"><a title="epydoc.docparser._find_in_namespace" class="py-name" href="#" onclick="return doclink('link-159', '_find_in_namespace', 'link-159');">_find_in_namespace</a></tt><tt class=" [...]
+<a name="L389"></a><tt class="py-lineno"> 389</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">ImportError</tt><tt class="py-op">:</tt> <tt class="py-keyword">pass</tt> </tt>
+<a name="L390"></a><tt class="py-lineno"> 390</tt>  <tt class="py-line"> </tt>
+<a name="L391"></a><tt class="py-lineno"> 391</tt>  <tt class="py-line">    <tt class="py-comment"># If not, then check to see if it's in a subpackage.</tt> </tt>
+<a name="L392"></a><tt class="py-lineno"> 392</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">module_doc</tt><tt class="py-op">.</tt><tt id="link-161" class="py-name"><a title="epydoc.apidoc.ModuleDoc.is_package" class="py-name" href="#" onclick="return doclink('link-161', 'is_package', 'link-76');">is_package</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L393"></a><tt class="py-lineno"> 393</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-162" class="py-name"><a title="epydoc.docparser._find" class="py-name" href="#" onclick="return doclink('link-162', '_find', 'link-35');">_find</a></tt><tt class="py-op">(</tt><tt id="link-163" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-163', 'name', 'link-31');">name</a></tt><tt class="py-op" [...]
+<a name="L394"></a><tt class="py-lineno"> 394</tt>  <tt class="py-line"> </tt>
+<a name="L395"></a><tt class="py-lineno"> 395</tt>  <tt class="py-line">    <tt class="py-comment"># If it's not in a variable or a subpackage, then we can't</tt> </tt>
+<a name="L396"></a><tt class="py-lineno"> 396</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># find it.</tt> </tt>
+<a name="L397"></a><tt class="py-lineno"> 397</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">raise</tt> <tt class="py-name">ImportError</tt><tt class="py-op">(</tt><tt class="py-string">'Could not find value'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L398"></a><tt class="py-lineno"> 398</tt>  <tt class="py-line"> </tt>
+<a name="_is_submodule_import_var"></a><div id="_is_submodule_import_var-def"><a name="L399"></a><tt class="py-lineno"> 399</tt> <a class="py-toggle" href="#" id="_is_submodule_import_var-toggle" onclick="return toggle('_is_submodule_import_var');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docparser-module.html#_is_submodule_import_var">_is_submodule_import_var</a><tt class="py-op">(</tt><tt class="py-param">module_doc</tt><tt class="py- [...]
+</div><div id="_is_submodule_import_var-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_is_submodule_import_var-expanded"><a name="L400"></a><tt class="py-lineno"> 400</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L401"></a><tt class="py-lineno"> 401</tt>  <tt class="py-line"><tt class="py-docstring">    Return true if C{var_name} is the name of a variable in</tt> </tt>
+<a name="L402"></a><tt class="py-lineno"> 402</tt>  <tt class="py-line"><tt class="py-docstring">    C{module_doc} that just contains an C{imported_from} link to a</tt> </tt>
+<a name="L403"></a><tt class="py-lineno"> 403</tt>  <tt class="py-line"><tt class="py-docstring">    submodule of the same name.  (I.e., is a variable created when</tt> </tt>
+<a name="L404"></a><tt class="py-lineno"> 404</tt>  <tt class="py-line"><tt class="py-docstring">    a package imports one of its own submodules.)</tt> </tt>
+<a name="L405"></a><tt class="py-lineno"> 405</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L406"></a><tt class="py-lineno"> 406</tt>  <tt class="py-line">    <tt class="py-name">var_doc</tt> <tt class="py-op">=</tt> <tt class="py-name">module_doc</tt><tt class="py-op">.</tt><tt id="link-164" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-164', 'variables', 'link-70');">variables</a></tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-name">var_name</tt><tt [...]
+<a name="L407"></a><tt class="py-lineno"> 407</tt>  <tt class="py-line">    <tt class="py-name">full_var_name</tt> <tt class="py-op">=</tt> <tt id="link-165" class="py-name"><a title="epydoc.apidoc.DottedName" class="py-name" href="#" onclick="return doclink('link-165', 'DottedName', 'link-33');">DottedName</a></tt><tt class="py-op">(</tt><tt class="py-name">module_doc</tt><tt class="py-op">.</tt><tt id="link-166" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-166', 'canonical_name', 'link-37');">canonical_name</a></tt><tt class="py-op">,</tt> <tt class="py-name">var_name</tt><tt class="py-op">)</tt> </tt>
+<a name="L408"></a><tt class="py-lineno"> 408</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-name">var_doc</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L409"></a><tt class="py-lineno"> 409</tt>  <tt class="py-line">            <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-167" class="py-name" targets="Variable epydoc.apidoc.VariableDoc.imported_from=epydoc.apidoc.VariableDoc-class.html#imported_from"><a title="epydoc.apidoc.VariableDoc.imported_from" class="py-name" href="#" onclick="return doclink('link-167', 'imported_from', 'link-167');">imported_from</a></tt> <tt class="py-op">==</tt> <tt class="py-na [...]
+</div><a name="L410"></a><tt class="py-lineno"> 410</tt>  <tt class="py-line">     </tt>
+<a name="_find_in_namespace"></a><div id="_find_in_namespace-def"><a name="L411"></a><tt class="py-lineno"> 411</tt> <a class="py-toggle" href="#" id="_find_in_namespace-toggle" onclick="return toggle('_find_in_namespace');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docparser-module.html#_find_in_namespace">_find_in_namespace</a><tt class="py-op">(</tt><tt class="py-param">name</tt><tt class="py-op">,</tt> <tt class="py-param">namespace_ [...]
+</div><div id="_find_in_namespace-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_find_in_namespace-expanded"><a name="L412"></a><tt class="py-lineno"> 412</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-168" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-168', 'name', 'link-31');">name</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> < [...]
+<a name="L413"></a><tt class="py-lineno"> 413</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">ImportError</tt><tt class="py-op">(</tt><tt class="py-string">'Could not find value'</tt><tt class="py-op">)</tt> </tt>
+<a name="L414"></a><tt class="py-lineno"> 414</tt>  <tt class="py-line">     </tt>
+<a name="L415"></a><tt class="py-lineno"> 415</tt>  <tt class="py-line">    <tt class="py-comment"># Look up the variable in the namespace.</tt> </tt>
+<a name="L416"></a><tt class="py-lineno"> 416</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">var_doc</tt> <tt class="py-op">=</tt> <tt class="py-name">namespace_doc</tt><tt class="py-op">.</tt><tt id="link-170" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-170', 'variables', 'link-70');">variables</a></tt><tt class="py-op">[</tt><tt id="link-171" class="py-name"><a title="epydoc.apidoc [...]
+<a name="L417"></a><tt class="py-lineno"> 417</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-172" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-172', 'value', 'link-135');">value</a></tt> <tt class="py-keyword">is</tt> <tt id="link-173" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link- [...]
+<a name="L418"></a><tt class="py-lineno"> 418</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">ImportError</tt><tt class="py-op">(</tt><tt class="py-string">'Could not find value'</tt><tt class="py-op">)</tt> </tt>
+<a name="L419"></a><tt class="py-lineno"> 419</tt>  <tt class="py-line">    <tt class="py-name">val_doc</tt> <tt class="py-op">=</tt> <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-174" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-174', 'value', 'link-135');">value</a></tt> </tt>
+<a name="L420"></a><tt class="py-lineno"> 420</tt>  <tt class="py-line"> </tt>
+<a name="L421"></a><tt class="py-lineno"> 421</tt>  <tt class="py-line">    <tt class="py-comment"># If the variable's value was imported, then follow its</tt> </tt>
+<a name="L422"></a><tt class="py-lineno"> 422</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># alias link.</tt> </tt>
+<a name="L423"></a><tt class="py-lineno"> 423</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-175" class="py-name"><a title="epydoc.apidoc.VariableDoc.imported_from" class="py-name" href="#" onclick="return doclink('link-175', 'imported_from', 'link-167');">imported_from</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py- [...]
+<a name="L424"></a><tt class="py-lineno"> 424</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-177" class="py-name"><a title="epydoc.docparser._find" class="py-name" href="#" onclick="return doclink('link-177', '_find', 'link-35');">_find</a></tt><tt class="py-op">(</tt><tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-178" class="py-name"><a title="epydoc.apidoc.VariableDoc.imported_from" class="py-name" href="#" onclick="return doclin [...]
+<a name="L425"></a><tt class="py-lineno"> 425</tt>  <tt class="py-line"> </tt>
+<a name="L426"></a><tt class="py-lineno"> 426</tt>  <tt class="py-line">    <tt class="py-comment"># Otherwise, if the name has one identifier, then this is the</tt> </tt>
+<a name="L427"></a><tt class="py-lineno"> 427</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># value we're looking for; return it.</tt> </tt>
+<a name="L428"></a><tt class="py-lineno"> 428</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">elif</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-180" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-180', 'name', 'link-31');">name</a></tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L429"></a><tt class="py-lineno"> 429</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">val_doc</tt> </tt>
+<a name="L430"></a><tt class="py-lineno"> 430</tt>  <tt class="py-line"> </tt>
+<a name="L431"></a><tt class="py-lineno"> 431</tt>  <tt class="py-line">    <tt class="py-comment"># Otherwise, if this value is a namespace, look inside it.</tt> </tt>
+<a name="L432"></a><tt class="py-lineno"> 432</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">val_doc</tt><tt class="py-op">,</tt> <tt id="link-181" class="py-name" targets="Class epydoc.apidoc.NamespaceDoc=epydoc.apidoc.NamespaceDoc-class.html"><a title="epydoc.apidoc.NamespaceDoc" class="py-name" href="#" onclick="return doclink('link-181', 'NamespaceDoc', 'link-181 [...]
+<a name="L433"></a><tt class="py-lineno"> 433</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-182" class="py-name"><a title="epydoc.docparser._find_in_namespace" class="py-name" href="#" onclick="return doclink('link-182', '_find_in_namespace', 'link-159');">_find_in_namespace</a></tt><tt class="py-op">(</tt><tt id="link-183" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-183', 'name', 'li [...]
+<a name="L434"></a><tt class="py-lineno"> 434</tt>  <tt class="py-line"> </tt>
+<a name="L435"></a><tt class="py-lineno"> 435</tt>  <tt class="py-line">    <tt class="py-comment"># Otherwise, we ran into a dead end.</tt> </tt>
+<a name="L436"></a><tt class="py-lineno"> 436</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L437"></a><tt class="py-lineno"> 437</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">ImportError</tt><tt class="py-op">(</tt><tt class="py-string">'Could not find value'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L438"></a><tt class="py-lineno"> 438</tt>  <tt class="py-line">     </tt>
+<a name="_get_filename"></a><div id="_get_filename-def"><a name="L439"></a><tt class="py-lineno"> 439</tt> <a class="py-toggle" href="#" id="_get_filename-toggle" onclick="return toggle('_get_filename');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docparser-module.html#_get_filename">_get_filename</a><tt class="py-op">(</tt><tt class="py-param">identifier</tt><tt class="py-op">,</tt> <tt class="py-param">path</tt><tt class="py-op">=</tt>< [...]
+</div><div id="_get_filename-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_get_filename-expanded"><a name="L440"></a><tt class="py-lineno"> 440</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-184" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-184', 'path', 'link-0');">path</a></tt> <tt class="py-keyword">is</tt> <tt id="link-185" class="py-name"><a title="epydoc.apidoc.U [...]
+<a name="L441"></a><tt class="py-lineno"> 441</tt>  <tt class="py-line">    <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L442"></a><tt class="py-lineno"> 442</tt>  <tt class="py-line">        <tt class="py-name">fp</tt><tt class="py-op">,</tt> <tt id="link-187" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-187', 'filename', 'link-30');">filename</a></tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">,</tt><tt class="py-name">m</tt><tt class="py-op">,</tt><tt class="py-name">typ</tt><t [...]
+<a name="L443"></a><tt class="py-lineno"> 443</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">fp</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> <tt class="py-name">fp</tt><tt class="py-op">.</tt><tt id="link-189" class="py-name" targets="Method epydoc.cli.HTMLLogger.close()=epydoc.cli.HTMLLogger-class.html#close,Method epydoc.docintrospecter._DevNull.close()=epydoc.docintrospec [...]
+epydoc.docintrospecter._DevNull.close
+epydoc.log.Logger.close
+epydoc.log.close" class="py-name" href="#" onclick="return doclink('link-189', 'close', 'link-189');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L444"></a><tt class="py-lineno"> 444</tt>  <tt class="py-line">    <tt class="py-keyword">except</tt> <tt class="py-name">ImportError</tt><tt class="py-op">:</tt> </tt>
+<a name="L445"></a><tt class="py-lineno"> 445</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">ImportError</tt><tt class="py-op">,</tt> <tt class="py-string">'No Python source file found.'</tt> </tt>
+<a name="L446"></a><tt class="py-lineno"> 446</tt>  <tt class="py-line"> </tt>
+<a name="L447"></a><tt class="py-lineno"> 447</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">typ</tt> <tt class="py-op">==</tt> <tt class="py-name">imp</tt><tt class="py-op">.</tt><tt class="py-name">PY_SOURCE</tt><tt class="py-op">:</tt> </tt>
+<a name="L448"></a><tt class="py-lineno"> 448</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-190" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-190', 'filename', 'link-30');">filename</a></tt> </tt>
+<a name="L449"></a><tt class="py-lineno"> 449</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">typ</tt> <tt class="py-op">==</tt> <tt class="py-name">imp</tt><tt class="py-op">.</tt><tt class="py-name">PY_COMPILED</tt><tt class="py-op">:</tt> </tt>
+<a name="L450"></a><tt class="py-lineno"> 450</tt>  <tt class="py-line">        <tt class="py-comment"># See if we can find a corresponding non-compiled version.</tt> </tt>
+<a name="L451"></a><tt class="py-lineno"> 451</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt id="link-191" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-191', 'filename', 'link-30');">filename</a></tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt class="py-string">'.py\w$'</tt><tt class="py-op">,</tt> <tt class="py- [...]
+<a name="L452"></a><tt class="py-lineno"> 452</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-193" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-193', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt class="py-name">exists</tt><tt class="py-op">(</tt><tt id="link-194" class="py-name"><a title="epydoc. [...]
+<a name="L453"></a><tt class="py-lineno"> 453</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ImportError</tt><tt class="py-op">,</tt> <tt class="py-string">'No Python source file found.'</tt> </tt>
+<a name="L454"></a><tt class="py-lineno"> 454</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-195" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-195', 'filename', 'link-30');">filename</a></tt> </tt>
+<a name="L455"></a><tt class="py-lineno"> 455</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">typ</tt> <tt class="py-op">==</tt> <tt class="py-name">imp</tt><tt class="py-op">.</tt><tt class="py-name">PKG_DIRECTORY</tt><tt class="py-op">:</tt> </tt>
+<a name="L456"></a><tt class="py-lineno"> 456</tt>  <tt class="py-line">        <tt id="link-196" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-196', 'filename', 'link-30');">filename</a></tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-197" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-197', 'path', 'link-0');" [...]
+<a name="L457"></a><tt class="py-lineno"> 457</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-199" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-199', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt class="py-name">exists</tt><tt class="py-op">(</tt><tt id="link-200" class="py-name"><a title="epydoc. [...]
+<a name="L458"></a><tt class="py-lineno"> 458</tt>  <tt class="py-line">            <tt id="link-201" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-201', 'filename', 'link-30');">filename</a></tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-202" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-202', 'path', 'link-0 [...]
+<a name="L459"></a><tt class="py-lineno"> 459</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-204" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-204', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt class="py-name">exists</tt><tt class="py-op">(</tt><tt id="link-205" class="py-name"><a title="epy [...]
+<a name="L460"></a><tt class="py-lineno"> 460</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">ImportError</tt><tt class="py-op">,</tt> <tt class="py-string">'No package file found.'</tt> </tt>
+<a name="L461"></a><tt class="py-lineno"> 461</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-206" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-206', 'filename', 'link-30');">filename</a></tt> </tt>
+<a name="L462"></a><tt class="py-lineno"> 462</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">typ</tt> <tt class="py-op">==</tt> <tt class="py-name">imp</tt><tt class="py-op">.</tt><tt class="py-name">C_BUILTIN</tt><tt class="py-op">:</tt> </tt>
+<a name="L463"></a><tt class="py-lineno"> 463</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">ImportError</tt><tt class="py-op">,</tt> <tt class="py-string">'No Python source file for builtin modules.'</tt> </tt>
+<a name="L464"></a><tt class="py-lineno"> 464</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">typ</tt> <tt class="py-op">==</tt> <tt class="py-name">imp</tt><tt class="py-op">.</tt><tt class="py-name">C_EXTENSION</tt><tt class="py-op">:</tt> </tt>
+<a name="L465"></a><tt class="py-lineno"> 465</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">ImportError</tt><tt class="py-op">,</tt> <tt class="py-string">'No Python source file for c extensions.'</tt> </tt>
+<a name="L466"></a><tt class="py-lineno"> 466</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L467"></a><tt class="py-lineno"> 467</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">ImportError</tt><tt class="py-op">,</tt> <tt class="py-string">'No Python source file found.'</tt> </tt>
+</div><a name="L468"></a><tt class="py-lineno"> 468</tt>  <tt class="py-line"> </tt>
+<a name="L469"></a><tt class="py-lineno"> 469</tt>  <tt class="py-line"><tt class="py-comment">#/////////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L470"></a><tt class="py-lineno"> 470</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#{ File tokenization loop</tt> </tt>
+<a name="L471"></a><tt class="py-lineno"> 471</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#/////////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L472"></a><tt class="py-lineno"> 472</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="process_file"></a><div id="process_file-def"><a name="L473"></a><tt class="py-lineno"> 473</tt> <a class="py-toggle" href="#" id="process_file-toggle" onclick="return toggle('process_file');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docparser-module.html#process_file">process_file</a><tt class="py-op">(</tt><tt class="py-param">module_doc</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="process_file-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="process_file-expanded"><a name="L474"></a><tt class="py-lineno"> 474</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L475"></a><tt class="py-lineno"> 475</tt>  <tt class="py-line"><tt class="py-docstring">    Read the given C{ModuleDoc}'s file, and add variables</tt> </tt>
+<a name="L476"></a><tt class="py-lineno"> 476</tt>  <tt class="py-line"><tt class="py-docstring">    corresponding to any objects defined in that file.  In</tt> </tt>
+<a name="L477"></a><tt class="py-lineno"> 477</tt>  <tt class="py-line"><tt class="py-docstring">    particular, read and tokenize C{module_doc.filename}, and</tt> </tt>
+<a name="L478"></a><tt class="py-lineno"> 478</tt>  <tt class="py-line"><tt class="py-docstring">    process each logical line using L{process_line()}.</tt> </tt>
+<a name="L479"></a><tt class="py-lineno"> 479</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L480"></a><tt class="py-lineno"> 480</tt>  <tt class="py-line">    <tt class="py-comment"># Keep track of the current line number:</tt> </tt>
+<a name="L481"></a><tt class="py-lineno"> 481</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-207" class="py-name" targets="Variable epydoc.apidoc.RoutineDoc.lineno=epydoc.apidoc.RoutineDoc-class.html#lineno"><a title="epydoc.apidoc.RoutineDoc.lineno" class="py-name" href="#" onclick="return doclink('link-207', 'lineno', 'link-207');">lineno</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L482"></a><tt class="py-lineno"> 482</tt>  <tt class="py-line">     </tt>
+<a name="L483"></a><tt class="py-lineno"> 483</tt>  <tt class="py-line">    <tt class="py-comment"># Use this list to collect the tokens on a single logical line:</tt> </tt>
+<a name="L484"></a><tt class="py-lineno"> 484</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">line_toks</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L485"></a><tt class="py-lineno"> 485</tt>  <tt class="py-line">     </tt>
+<a name="L486"></a><tt class="py-lineno"> 486</tt>  <tt class="py-line">    <tt class="py-comment"># This list contains one APIDoc for each indentation level.</tt> </tt>
+<a name="L487"></a><tt class="py-lineno"> 487</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># The first element is the APIDoc for the module, and each</tt> </tt>
+<a name="L488"></a><tt class="py-lineno"> 488</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># subsequent element is the APIDoc for the object at that</tt> </tt>
+<a name="L489"></a><tt class="py-lineno"> 489</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># indentation level.  The final element of the list is the</tt> </tt>
+<a name="L490"></a><tt class="py-lineno"> 490</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># C{APIDoc} for the entity that we're currently processing.</tt> </tt>
+<a name="L491"></a><tt class="py-lineno"> 491</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">parent_docs</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">module_doc</tt><tt class="py-op">]</tt> </tt>
+<a name="L492"></a><tt class="py-lineno"> 492</tt>  <tt class="py-line"> </tt>
+<a name="L493"></a><tt class="py-lineno"> 493</tt>  <tt class="py-line">    <tt class="py-comment"># The APIDoc for the object that was defined by the previous</tt> </tt>
+<a name="L494"></a><tt class="py-lineno"> 494</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># line, if any; or None otherwise.  This is used to update</tt> </tt>
+<a name="L495"></a><tt class="py-lineno"> 495</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># parent_docs when we encounter an indent; and to decide what</tt> </tt>
+<a name="L496"></a><tt class="py-lineno"> 496</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># object (if any) is described by a docstring.</tt> </tt>
+<a name="L497"></a><tt class="py-lineno"> 497</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">prev_line_doc</tt> <tt class="py-op">=</tt> <tt class="py-name">module_doc</tt> </tt>
+<a name="L498"></a><tt class="py-lineno"> 498</tt>  <tt class="py-line"> </tt>
+<a name="L499"></a><tt class="py-lineno"> 499</tt>  <tt class="py-line">    <tt class="py-comment"># A list of comments that occur before or on the current</tt> </tt>
+<a name="L500"></a><tt class="py-lineno"> 500</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># logical line, used to build the comment docstring.  Each</tt> </tt>
+<a name="L501"></a><tt class="py-lineno"> 501</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># element is a tuple (comment_text, comment_lineno).</tt> </tt>
+<a name="L502"></a><tt class="py-lineno"> 502</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">comments</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L503"></a><tt class="py-lineno"> 503</tt>  <tt class="py-line"> </tt>
+<a name="L504"></a><tt class="py-lineno"> 504</tt>  <tt class="py-line">    <tt class="py-comment"># A list of decorator lines that occur before the current</tt> </tt>
+<a name="L505"></a><tt class="py-lineno"> 505</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># logical line.  This is used so we can process a function</tt> </tt>
+<a name="L506"></a><tt class="py-lineno"> 506</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># declaration line and its decorators all at once.</tt> </tt>
+<a name="L507"></a><tt class="py-lineno"> 507</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-208" class="py-name" targets="Variable epydoc.apidoc.RoutineDoc.decorators=epydoc.apidoc.RoutineDoc-class.html#decorators"><a title="epydoc.apidoc.RoutineDoc.decorators" class="py-name" href="#" onclick="return doclink('link-208', 'decorators', 'link-208');">decorators</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L508"></a><tt class="py-lineno"> 508</tt>  <tt class="py-line"> </tt>
+<a name="L509"></a><tt class="py-lineno"> 509</tt>  <tt class="py-line">    <tt class="py-comment"># A list of group names, one for each indentation level.  This is</tt> </tt>
+<a name="L510"></a><tt class="py-lineno"> 510</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># used to keep track groups that are defined by comment markers</tt> </tt>
+<a name="L511"></a><tt class="py-lineno"> 511</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># START_GROUP_MARKER and END_GROUP_MARKER.</tt> </tt>
+<a name="L512"></a><tt class="py-lineno"> 512</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">groups</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">None</tt><tt class="py-op">]</tt> </tt>
+<a name="L513"></a><tt class="py-lineno"> 513</tt>  <tt class="py-line"> </tt>
+<a name="L514"></a><tt class="py-lineno"> 514</tt>  <tt class="py-line">    <tt class="py-comment"># When we encounter a comment start group marker, set this to the</tt> </tt>
+<a name="L515"></a><tt class="py-lineno"> 515</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># name of the group; but wait until we're ready to process the</tt> </tt>
+<a name="L516"></a><tt class="py-lineno"> 516</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># next line before we actually set groups[-1] to this value.  This</tt> </tt>
+<a name="L517"></a><tt class="py-lineno"> 517</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># is necessary because at the top of a block, the tokenizer gives</tt> </tt>
+<a name="L518"></a><tt class="py-lineno"> 518</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># us comments before the INDENT token; but if we encounter a group</tt> </tt>
+<a name="L519"></a><tt class="py-lineno"> 519</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># start marker at the top of a block, then we want it to apply</tt> </tt>
+<a name="L520"></a><tt class="py-lineno"> 520</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># inside that block, not outside it.</tt> </tt>
+<a name="L521"></a><tt class="py-lineno"> 521</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">start_group</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L522"></a><tt class="py-lineno"> 522</tt>  <tt class="py-line"> </tt>
+<a name="L523"></a><tt class="py-lineno"> 523</tt>  <tt class="py-line">    <tt class="py-comment"># Check if the source file declares an encoding.</tt> </tt>
+<a name="L524"></a><tt class="py-lineno"> 524</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">encoding</tt> <tt class="py-op">=</tt> <tt id="link-209" class="py-name" targets="Function epydoc.docparser.get_module_encoding()=epydoc.docparser-module.html#get_module_encoding"><a title="epydoc.docparser.get_module_encoding" class="py-name" href="#" onclick="return doclink('link-209', 'get_module_encoding', 'link-209');">get_module_encoding</a></tt><tt class="py- [...]
+<a name="L525"></a><tt class="py-lineno"> 525</tt>  <tt class="py-line"> </tt>
+<a name="L526"></a><tt class="py-lineno"> 526</tt>  <tt class="py-line">    <tt class="py-comment"># The token-eating loop:</tt> </tt>
+<a name="L527"></a><tt class="py-lineno"> 527</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L528"></a><tt class="py-lineno"> 528</tt>  <tt class="py-line">        <tt class="py-name">module_file</tt> <tt class="py-op">=</tt> <tt class="py-name">codecs</tt><tt class="py-op">.</tt><tt id="link-211" class="py-name" targets="Method epydoc.gui.EpydocGUI.open()=epydoc.gui.EpydocGUI-class.html#open"><a title="epydoc.gui.EpydocGUI.open" class="py-name" href="#" onclick="return doclink('link-211', 'open', 'link-211');">open</a></tt><tt class="py-op">(</tt><tt class="py-name">mo [...]
+<a name="L529"></a><tt class="py-lineno"> 529</tt>  <tt class="py-line">    <tt class="py-keyword">except</tt> <tt class="py-name">LookupError</tt><tt class="py-op">:</tt> </tt>
+<a name="L530"></a><tt class="py-lineno"> 530</tt>  <tt class="py-line">        <tt id="link-213" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-213', 'log', 'link-50');">log</a></tt><tt class="py-op">.</tt><tt id="link-214" class="py-name" targets="Method epydoc.checker.DocChecker.warning()=epydoc.checker.DocChecker-class.html#warning,Function epydoc.log.warning()=epydoc.log-module.html#warning"><a title="epydoc.checker.DocChecker.warning
+epydoc.log.warning" class="py-name" href="#" onclick="return doclink('link-214', 'warning', 'link-214');">warning</a></tt><tt class="py-op">(</tt><tt class="py-string">"Unknown encoding %r for %s; using the default"</tt> </tt>
+<a name="L531"></a><tt class="py-lineno"> 531</tt>  <tt class="py-line">                    <tt class="py-string">"encoding instead (iso-8859-1)"</tt> <tt class="py-op">%</tt> </tt>
+<a name="L532"></a><tt class="py-lineno"> 532</tt>  <tt class="py-line">                    <tt class="py-op">(</tt><tt class="py-name">encoding</tt><tt class="py-op">,</tt> <tt class="py-name">module_doc</tt><tt class="py-op">.</tt><tt id="link-215" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-215', 'filename', 'link-30');">filename</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L533"></a><tt class="py-lineno"> 533</tt>  <tt class="py-line">        <tt class="py-name">encoding</tt> <tt class="py-op">=</tt> <tt class="py-string">'iso-8859-1'</tt> </tt>
+<a name="L534"></a><tt class="py-lineno"> 534</tt>  <tt class="py-line">        <tt class="py-name">module_file</tt> <tt class="py-op">=</tt> <tt class="py-name">codecs</tt><tt class="py-op">.</tt><tt id="link-216" class="py-name"><a title="epydoc.gui.EpydocGUI.open" class="py-name" href="#" onclick="return doclink('link-216', 'open', 'link-211');">open</a></tt><tt class="py-op">(</tt><tt class="py-name">module_doc</tt><tt class="py-op">.</tt><tt id="link-217" class="py-name"><a title="e [...]
+<a name="L535"></a><tt class="py-lineno"> 535</tt>  <tt class="py-line">    <tt class="py-name">tok_iter</tt> <tt class="py-op">=</tt> <tt class="py-name">tokenize</tt><tt class="py-op">.</tt><tt class="py-name">generate_tokens</tt><tt class="py-op">(</tt><tt class="py-name">module_file</tt><tt class="py-op">.</tt><tt id="link-218" class="py-name" targets="Method epydoc.docintrospecter._DevNull.readline()=epydoc.docintrospecter._DevNull-class.html#readline"><a title="epydoc.docintrospect [...]
+<a name="L536"></a><tt class="py-lineno"> 536</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">toktype</tt><tt class="py-op">,</tt> <tt class="py-name">toktext</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">srow</tt><tt class="py-op">,</tt><tt class="py-name">scol</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">erow</tt><tt class="py-op">,</tt><tt class="py-name">ecol</tt><tt class [...]
+<a name="L537"></a><tt class="py-lineno"> 537</tt>  <tt class="py-line">        <tt class="py-comment"># BOM encoding marker: ignore.</tt> </tt>
+<a name="L538"></a><tt class="py-lineno"> 538</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">toktype</tt> <tt class="py-op">==</tt> <tt class="py-name">token</tt><tt class="py-op">.</tt><tt class="py-name">ERRORTOKEN</tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L539"></a><tt class="py-lineno"> 539</tt>  <tt class="py-line">            <tt class="py-op">(</tt><tt class="py-name">toktext</tt> <tt class="py-op">==</tt> <tt class="py-string">u'\ufeff'</tt> <tt class="py-keyword">or</tt> </tt>
+<a name="L540"></a><tt class="py-lineno"> 540</tt>  <tt class="py-line">             <tt class="py-name">toktext</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-name">encoding</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-string">'\xef\xbb\xbf'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L541"></a><tt class="py-lineno"> 541</tt>  <tt class="py-line">            <tt class="py-keyword">pass</tt> </tt>
+<a name="L542"></a><tt class="py-lineno"> 542</tt>  <tt class="py-line">             </tt>
+<a name="L543"></a><tt class="py-lineno"> 543</tt>  <tt class="py-line">        <tt class="py-comment"># Error token: abort</tt> </tt>
+<a name="L544"></a><tt class="py-lineno"> 544</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">elif</tt> <tt class="py-name">toktype</tt> <tt class="py-op">==</tt> <tt class="py-name">token</tt><tt class="py-op">.</tt><tt class="py-name">ERRORTOKEN</tt><tt class="py-op">:</tt> </tt>
+<a name="L545"></a><tt class="py-lineno"> 545</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt id="link-219" class="py-name"><a title="epydoc.docparser.ParseError
+epydoc.markup.ParseError" class="py-name" href="#" onclick="return doclink('link-219', 'ParseError', 'link-87');">ParseError</a></tt><tt class="py-op">(</tt><tt class="py-string">'Error during parsing: invalid syntax '</tt> </tt>
+<a name="L546"></a><tt class="py-lineno"> 546</tt>  <tt class="py-line">                             <tt class="py-string">'(%s, line %d, char %d: %r)'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L547"></a><tt class="py-lineno"> 547</tt>  <tt class="py-line">                             <tt class="py-op">(</tt><tt class="py-name">module_doc</tt><tt class="py-op">.</tt><tt id="link-220" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-220', 'filename', 'link-30');">filename</a></tt><tt class="py-op">,</tt> <tt class="py-name">srow</tt><tt class="py-op">,</tt> <tt class="py-name">scol</tt><tt class="py-op">, [...]
+<a name="L548"></a><tt class="py-lineno"> 548</tt>  <tt class="py-line">         </tt>
+<a name="L549"></a><tt class="py-lineno"> 549</tt>  <tt class="py-line">        <tt class="py-comment"># Indent token: update the parent_doc stack.</tt> </tt>
+<a name="L550"></a><tt class="py-lineno"> 550</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">elif</tt> <tt class="py-name">toktype</tt> <tt class="py-op">==</tt> <tt class="py-name">token</tt><tt class="py-op">.</tt><tt class="py-name">INDENT</tt><tt class="py-op">:</tt> </tt>
+<a name="L551"></a><tt class="py-lineno"> 551</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">prev_line_doc</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L552"></a><tt class="py-lineno"> 552</tt>  <tt class="py-line">                <tt class="py-name">parent_docs</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">parent_docs</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L553"></a><tt class="py-lineno"> 553</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L554"></a><tt class="py-lineno"> 554</tt>  <tt class="py-line">                <tt class="py-name">parent_docs</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">prev_line_doc</tt><tt class="py-op">)</tt> </tt>
+<a name="L555"></a><tt class="py-lineno"> 555</tt>  <tt class="py-line">            <tt class="py-name">groups</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+<a name="L556"></a><tt class="py-lineno"> 556</tt>  <tt class="py-line">                 </tt>
+<a name="L557"></a><tt class="py-lineno"> 557</tt>  <tt class="py-line">        <tt class="py-comment"># Dedent token: update the parent_doc stack.</tt> </tt>
+<a name="L558"></a><tt class="py-lineno"> 558</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">elif</tt> <tt class="py-name">toktype</tt> <tt class="py-op">==</tt> <tt class="py-name">token</tt><tt class="py-op">.</tt><tt class="py-name">DEDENT</tt><tt class="py-op">:</tt> </tt>
+<a name="L559"></a><tt class="py-lineno"> 559</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">line_toks</tt> <tt class="py-op">==</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L560"></a><tt class="py-lineno"> 560</tt>  <tt class="py-line">                <tt class="py-name">parent_docs</tt><tt class="py-op">.</tt><tt class="py-name">pop</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L561"></a><tt class="py-lineno"> 561</tt>  <tt class="py-line">                <tt class="py-name">groups</tt><tt class="py-op">.</tt><tt class="py-name">pop</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L562"></a><tt class="py-lineno"> 562</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L563"></a><tt class="py-lineno"> 563</tt>  <tt class="py-line">                <tt class="py-comment"># This *should* only happen if the file ends on an</tt> </tt>
+<a name="L564"></a><tt class="py-lineno"> 564</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-comment"># indented line, with no final newline.</tt> </tt>
+<a name="L565"></a><tt class="py-lineno"> 565</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-comment"># (otherwise, this is the wrong thing to do.)</tt> </tt>
+<a name="L566"></a><tt class="py-lineno"> 566</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-keyword">pass</tt> </tt>
+<a name="L567"></a><tt class="py-lineno"> 567</tt>  <tt class="py-line">             </tt>
+<a name="L568"></a><tt class="py-lineno"> 568</tt>  <tt class="py-line">        <tt class="py-comment"># Line-internal newline token: if we're still at the start of</tt> </tt>
+<a name="L569"></a><tt class="py-lineno"> 569</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># the logical line, and we've seen one or more comment lines,</tt> </tt>
+<a name="L570"></a><tt class="py-lineno"> 570</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># then discard them: blank lines are not allowed between a</tt> </tt>
+<a name="L571"></a><tt class="py-lineno"> 571</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># comment block and the thing it describes.</tt> </tt>
+<a name="L572"></a><tt class="py-lineno"> 572</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">elif</tt> <tt class="py-name">toktype</tt> <tt class="py-op">==</tt> <tt class="py-name">tokenize</tt><tt class="py-op">.</tt><tt class="py-name">NL</tt><tt class="py-op">:</tt> </tt>
+<a name="L573"></a><tt class="py-lineno"> 573</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">comments</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">line_toks</tt><tt class="py-op">:</tt> </tt>
+<a name="L574"></a><tt class="py-lineno"> 574</tt>  <tt class="py-line">                <tt id="link-221" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-221', 'log', 'link-50');">log</a></tt><tt class="py-op">.</tt><tt id="link-222" class="py-name"><a title="epydoc.checker.DocChecker.warning
+epydoc.log.warning" class="py-name" href="#" onclick="return doclink('link-222', 'warning', 'link-214');">warning</a></tt><tt class="py-op">(</tt><tt class="py-string">'Ignoring docstring comment block followed by '</tt> </tt>
+<a name="L575"></a><tt class="py-lineno"> 575</tt>  <tt class="py-line">                            <tt class="py-string">'a blank line in %r on line %r'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L576"></a><tt class="py-lineno"> 576</tt>  <tt class="py-line">                            <tt class="py-op">(</tt><tt class="py-name">module_doc</tt><tt class="py-op">.</tt><tt id="link-223" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-223', 'filename', 'link-30');">filename</a></tt><tt class="py-op">,</tt> <tt class="py-name">srow</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">)</t [...]
+<a name="L577"></a><tt class="py-lineno"> 577</tt>  <tt class="py-line">                <tt class="py-name">comments</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L578"></a><tt class="py-lineno"> 578</tt>  <tt class="py-line">                 </tt>
+<a name="L579"></a><tt class="py-lineno"> 579</tt>  <tt class="py-line">        <tt class="py-comment"># Comment token: add to comments if appropriate.</tt> </tt>
+<a name="L580"></a><tt class="py-lineno"> 580</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">elif</tt> <tt class="py-name">toktype</tt> <tt class="py-op">==</tt> <tt class="py-name">tokenize</tt><tt class="py-op">.</tt><tt class="py-name">COMMENT</tt><tt class="py-op">:</tt> </tt>
+<a name="L581"></a><tt class="py-lineno"> 581</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">toktext</tt><tt class="py-op">.</tt><tt class="py-name">startswith</tt><tt class="py-op">(</tt><tt id="link-224" class="py-name"><a title="epydoc.docparser.COMMENT_DOCSTRING_MARKER" class="py-name" href="#" onclick="return doclink('link-224', 'COMMENT_DOCSTRING_MARKER', 'link-21');">COMMENT_DOCSTRING_MARKER</a></tt><tt class="py-op">)</tt><tt class="py-op [...]
+<a name="L582"></a><tt class="py-lineno"> 582</tt>  <tt class="py-line">                <tt class="py-name">comment_line</tt> <tt class="py-op">=</tt> <tt class="py-name">toktext</tt><tt class="py-op">[</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-225" class="py-name"><a title="epydoc.docparser.COMMENT_DOCSTRING_MARKER" class="py-name" href="#" onclick="return doclink('link-225', 'COMMENT_DOCSTRING_MARKER', 'link-21');">COMMENT_DOCSTRING_MARKER</a></tt><tt class=" [...]
+<a name="L583"></a><tt class="py-lineno"> 583</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">comment_line</tt><tt class="py-op">.</tt><tt class="py-name">startswith</tt><tt class="py-op">(</tt><tt class="py-string">" "</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L584"></a><tt class="py-lineno"> 584</tt>  <tt class="py-line">                    <tt class="py-name">comment_line</tt> <tt class="py-op">=</tt> <tt class="py-name">comment_line</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt>
+<a name="L585"></a><tt class="py-lineno"> 585</tt>  <tt class="py-line">                <tt class="py-name">comments</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt> <tt class="py-op">[</tt><tt class="py-name">comment_line</tt><tt class="py-op">,</tt> <tt class="py-name">srow</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L586"></a><tt class="py-lineno"> 586</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">toktext</tt><tt class="py-op">.</tt><tt class="py-name">startswith</tt><tt class="py-op">(</tt><tt id="link-226" class="py-name"><a title="epydoc.docparser.START_GROUP_MARKER" class="py-name" href="#" onclick="return doclink('link-226', 'START_GROUP_MARKER', 'link-22');">START_GROUP_MARKER</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L587"></a><tt class="py-lineno"> 587</tt>  <tt class="py-line">                <tt class="py-name">start_group</tt> <tt class="py-op">=</tt> <tt class="py-name">toktext</tt><tt class="py-op">[</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-227" class="py-name"><a title="epydoc.docparser.START_GROUP_MARKER" class="py-name" href="#" onclick="return doclink('link-227', 'START_GROUP_MARKER', 'link-22');">START_GROUP_MARKER</a></tt><tt class="py-op">)</tt><tt cl [...]
+<a name="L588"></a><tt class="py-lineno"> 588</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">toktext</tt><tt class="py-op">.</tt><tt class="py-name">startswith</tt><tt class="py-op">(</tt><tt id="link-228" class="py-name"><a title="epydoc.docparser.END_GROUP_MARKER" class="py-name" href="#" onclick="return doclink('link-228', 'END_GROUP_MARKER', 'link-23');">END_GROUP_MARKER</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L589"></a><tt class="py-lineno"> 589</tt>  <tt class="py-line">                <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">groups</tt><tt class="py-op">)</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> [...]
+<a name="L590"></a><tt class="py-lineno"> 590</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">groups</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L591"></a><tt class="py-lineno"> 591</tt>  <tt class="py-line">                        <tt class="py-name">groups</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L592"></a><tt class="py-lineno"> 592</tt>  <tt class="py-line">                        <tt class="py-keyword">break</tt> </tt>
+<a name="L593"></a><tt class="py-lineno"> 593</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L594"></a><tt class="py-lineno"> 594</tt>  <tt class="py-line">                    <tt id="link-229" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-229', 'log', 'link-50');">log</a></tt><tt class="py-op">.</tt><tt id="link-230" class="py-name"><a title="epydoc.checker.DocChecker.warning
+epydoc.log.warning" class="py-name" href="#" onclick="return doclink('link-230', 'warning', 'link-214');">warning</a></tt><tt class="py-op">(</tt><tt class="py-string">"Got group end marker without a corresponding "</tt> </tt>
+<a name="L595"></a><tt class="py-lineno"> 595</tt>  <tt class="py-line">                                <tt class="py-string">"start marker in %r on line %r"</tt> <tt class="py-op">%</tt>  </tt>
+<a name="L596"></a><tt class="py-lineno"> 596</tt>  <tt class="py-line">                                <tt class="py-op">(</tt><tt class="py-name">module_doc</tt><tt class="py-op">.</tt><tt id="link-231" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-231', 'filename', 'link-30');">filename</a></tt><tt class="py-op">,</tt> <tt class="py-name">srow</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L597"></a><tt class="py-lineno"> 597</tt>  <tt class="py-line">             </tt>
+<a name="L598"></a><tt class="py-lineno"> 598</tt>  <tt class="py-line">        <tt class="py-comment"># Normal token: Add it to line_toks.  (If it's a non-unicode</tt> </tt>
+<a name="L599"></a><tt class="py-lineno"> 599</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># string literal, then we need to re-encode using the file's</tt> </tt>
+<a name="L600"></a><tt class="py-lineno"> 600</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># encoding, to get back to the original 8-bit data; and then</tt> </tt>
+<a name="L601"></a><tt class="py-lineno"> 601</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># convert that string with 8-bit data to a 7-bit ascii</tt> </tt>
+<a name="L602"></a><tt class="py-lineno"> 602</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># representation.)</tt> </tt>
+<a name="L603"></a><tt class="py-lineno"> 603</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">elif</tt> <tt class="py-name">toktype</tt> <tt class="py-op">!=</tt> <tt class="py-name">token</tt><tt class="py-op">.</tt><tt class="py-name">NEWLINE</tt> <tt class="py-keyword">and</tt> <tt class="py-name">toktype</tt> <tt class="py-op">!=</tt> <tt class="py-name">token</tt><tt class="py-op">.</tt><tt class="py-name">ENDMARKER</tt><tt class="py-op">:</tt> </tt>
+<a name="L604"></a><tt class="py-lineno"> 604</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt id="link-232" class="py-name"><a title="epydoc.apidoc.RoutineDoc.lineno" class="py-name" href="#" onclick="return doclink('link-232', 'lineno', 'link-207');">lineno</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> <tt id="link-233" class="py-name"><a title="epydoc.apidoc.RoutineDoc.lineno" class="py-name" href="#" onclick="ret [...]
+<a name="L605"></a><tt class="py-lineno"> 605</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">toktype</tt> <tt class="py-op">==</tt> <tt class="py-name">token</tt><tt class="py-op">.</tt><tt class="py-name">STRING</tt><tt class="py-op">:</tt> </tt>
+<a name="L606"></a><tt class="py-lineno"> 606</tt>  <tt class="py-line">                <tt class="py-name">str_prefixes</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">match</tt><tt class="py-op">(</tt><tt class="py-string">'[^\'"]*'</tt><tt class="py-op">,</tt> <tt class="py-name">toktext</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">group</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L607"></a><tt class="py-lineno"> 607</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-string">'u'</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">str_prefixes</tt><tt class="py-op">:</tt> </tt>
+<a name="L608"></a><tt class="py-lineno"> 608</tt>  <tt class="py-line">                    <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">toktext</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-name">encoding</tt><tt class="py-op">)</tt> </tt>
+<a name="L609"></a><tt class="py-lineno"> 609</tt>  <tt class="py-line">                    <tt class="py-name">toktext</tt> <tt class="py-op">=</tt> <tt id="link-234" class="py-name" targets="Function epydoc.util.decode_with_backslashreplace()=epydoc.util-module.html#decode_with_backslashreplace"><a title="epydoc.util.decode_with_backslashreplace" class="py-name" href="#" onclick="return doclink('link-234', 'decode_with_backslashreplace', 'link-234');">decode_with_backslashreplace</a></ [...]
+<a name="L610"></a><tt class="py-lineno"> 610</tt>  <tt class="py-line">            <tt class="py-name">line_toks</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt> <tt class="py-op">(</tt><tt class="py-name">toktype</tt><tt class="py-op">,</tt> <tt class="py-name">toktext</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt> </tt>
+<a name="L611"></a><tt class="py-lineno"> 611</tt>  <tt class="py-line">             </tt>
+<a name="L612"></a><tt class="py-lineno"> 612</tt>  <tt class="py-line">        <tt class="py-comment"># Decorator line: add it to the decorators list.</tt> </tt>
+<a name="L613"></a><tt class="py-lineno"> 613</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">elif</tt> <tt class="py-name">line_toks</tt> <tt class="py-keyword">and</tt> <tt class="py-name">line_toks</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-op">(</tt><tt class="py-name">token</tt><tt class="py-op">.</tt><tt class="py-name">OP</tt><tt class="py-op">,</tt> <tt class="py-str [...]
+<a name="L614"></a><tt class="py-lineno"> 614</tt>  <tt class="py-line">            <tt id="link-235" class="py-name"><a title="epydoc.apidoc.RoutineDoc.decorators" class="py-name" href="#" onclick="return doclink('link-235', 'decorators', 'link-208');">decorators</a></tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-236" class="py-name" targets="Function epydoc.docparser.shallow_parse()=epydoc.docparser-module.html#shallow_parse"><a title="e [...]
+<a name="L615"></a><tt class="py-lineno"> 615</tt>  <tt class="py-line">            <tt class="py-name">line_toks</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L616"></a><tt class="py-lineno"> 616</tt>  <tt class="py-line"> </tt>
+<a name="L617"></a><tt class="py-lineno"> 617</tt>  <tt class="py-line">        <tt class="py-comment"># End of line token, but nothing to do.</tt> </tt>
+<a name="L618"></a><tt class="py-lineno"> 618</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">elif</tt> <tt class="py-name">line_toks</tt> <tt class="py-op">==</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L619"></a><tt class="py-lineno"> 619</tt>  <tt class="py-line">            <tt class="py-keyword">pass</tt> </tt>
+<a name="L620"></a><tt class="py-lineno"> 620</tt>  <tt class="py-line">             </tt>
+<a name="L621"></a><tt class="py-lineno"> 621</tt>  <tt class="py-line">        <tt class="py-comment"># End of line token: parse the logical line & process it.</tt> </tt>
+<a name="L622"></a><tt class="py-lineno"> 622</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L623"></a><tt class="py-lineno"> 623</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">start_group</tt><tt class="py-op">:</tt> </tt>
+<a name="L624"></a><tt class="py-lineno"> 624</tt>  <tt class="py-line">                <tt class="py-name">groups</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">start_group</tt> </tt>
+<a name="L625"></a><tt class="py-lineno"> 625</tt>  <tt class="py-line">                <tt class="py-name">start_group</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L626"></a><tt class="py-lineno"> 626</tt>  <tt class="py-line"> </tt>
+<a name="L627"></a><tt class="py-lineno"> 627</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">parent_docs</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">!=</tt> <tt class="py-string">'skip_block'</tt><tt class="py-op">:</tt> </tt>
+<a name="L628"></a><tt class="py-lineno"> 628</tt>  <tt class="py-line">                <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L629"></a><tt class="py-lineno"> 629</tt>  <tt class="py-line">                    <tt class="py-name">prev_line_doc</tt> <tt class="py-op">=</tt> <tt id="link-237" class="py-name" targets="Function epydoc.docparser.process_line()=epydoc.docparser-module.html#process_line"><a title="epydoc.docparser.process_line" class="py-name" href="#" onclick="return doclink('link-237', 'process_line', 'link-237');">process_line</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L630"></a><tt class="py-lineno"> 630</tt>  <tt class="py-line">                        <tt id="link-238" class="py-name"><a title="epydoc.docparser.shallow_parse" class="py-name" href="#" onclick="return doclink('link-238', 'shallow_parse', 'link-236');">shallow_parse</a></tt><tt class="py-op">(</tt><tt class="py-name">line_toks</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">parent_docs</tt><tt class="py-op">,</tt> <tt class="py-name">prev_line_doc</tt> [...]
+<a name="L631"></a><tt class="py-lineno"> 631</tt>  <tt class="py-line">                        <tt id="link-239" class="py-name"><a title="epydoc.apidoc.RoutineDoc.lineno" class="py-name" href="#" onclick="return doclink('link-239', 'lineno', 'link-207');">lineno</a></tt><tt class="py-op">,</tt> <tt class="py-name">comments</tt><tt class="py-op">,</tt> <tt id="link-240" class="py-name"><a title="epydoc.apidoc.RoutineDoc.decorators" class="py-name" href="#" onclick="return doclink('link- [...]
+<a name="L632"></a><tt class="py-lineno"> 632</tt>  <tt class="py-line">                <tt class="py-keyword">except</tt> <tt id="link-241" class="py-name"><a title="epydoc.docparser.ParseError
+epydoc.markup.ParseError" class="py-name" href="#" onclick="return doclink('link-241', 'ParseError', 'link-87');">ParseError</a></tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
+<a name="L633"></a><tt class="py-lineno"> 633</tt>  <tt class="py-line">                    <tt class="py-keyword">raise</tt> <tt id="link-242" class="py-name"><a title="epydoc.docparser.ParseError
+epydoc.markup.ParseError" class="py-name" href="#" onclick="return doclink('link-242', 'ParseError', 'link-87');">ParseError</a></tt><tt class="py-op">(</tt><tt class="py-string">'Error during parsing: invalid '</tt> </tt>
+<a name="L634"></a><tt class="py-lineno"> 634</tt>  <tt class="py-line">                                     <tt class="py-string">'syntax (%s, line %d) -- %s'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L635"></a><tt class="py-lineno"> 635</tt>  <tt class="py-line">                                     <tt class="py-op">(</tt><tt class="py-name">module_doc</tt><tt class="py-op">.</tt><tt id="link-243" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-243', 'filename', 'link-30');">filename</a></tt><tt class="py-op">,</tt> <tt id="link-244" class="py-name"><a title="epydoc.apidoc.RoutineDoc.lineno" class="py-name" h [...]
+<a name="L636"></a><tt class="py-lineno"> 636</tt>  <tt class="py-line">                <tt class="py-keyword">except</tt> <tt class="py-name">KeyboardInterrupt</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> <tt class="py-keyword">raise</tt> </tt>
+<a name="L637"></a><tt class="py-lineno"> 637</tt>  <tt class="py-line">                <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
+<a name="L638"></a><tt class="py-lineno"> 638</tt>  <tt class="py-line">                    <tt id="link-245" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-245', 'log', 'link-50');">log</a></tt><tt class="py-op">.</tt><tt id="link-246" class="py-name" targets="Function epydoc.log.error()=epydoc.log-module.html#error"><a title="epydoc.log.error" class="py-name" href="#" onclick="return doclink('link-246', 'error', 'link-246');">error</a></tt><tt class="py-op">(</tt><tt class="py-string">'Internal error during parsing (%s, line '</tt> </tt>
+<a name="L639"></a><tt class="py-lineno"> 639</tt>  <tt class="py-line">                              <tt class="py-string">'%s):\n%s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">module_doc</tt><tt class="py-op">.</tt><tt id="link-247" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-247', 'filename', 'link-30');">filename</a></tt><tt class="py-op">,</tt> <tt id="link-248" class="py-name"><a t [...]
+<a name="L640"></a><tt class="py-lineno"> 640</tt>  <tt class="py-line">                    <tt class="py-keyword">raise</tt> </tt>
+<a name="L641"></a><tt class="py-lineno"> 641</tt>  <tt class="py-line"> </tt>
+<a name="L642"></a><tt class="py-lineno"> 642</tt>  <tt class="py-line">                <tt class="py-comment"># grouping...</tt> </tt>
+<a name="L643"></a><tt class="py-lineno"> 643</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-keyword">if</tt> <tt class="py-name">groups</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-keyword">and</tt> <tt class="py-name">prev_line_doc</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> < [...]
+<a name="L644"></a><tt class="py-lineno"> 644</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">prev_line_doc</tt><tt class="py-op">,</tt> <tt id="link-249" class="py-name" targets="Class epydoc.apidoc.VariableDoc=epydoc.apidoc.VariableDoc-class.html"><a title="epydoc.apidoc.VariableDoc" class="py-name" href="#" onclick="return doclink('link-249', 'VariableDoc', 'link-249');">Variabl [...]
+<a name="L645"></a><tt class="py-lineno"> 645</tt>  <tt class="py-line">                        <tt class="py-comment"># prev_line_doc's container will only be</tt> </tt>
+<a name="L646"></a><tt class="py-lineno"> 646</tt>  <tt class="py-line"><tt class="py-comment"></tt>                        <tt class="py-comment"># UNKNOWN if it's an instance variable that</tt> </tt>
+<a name="L647"></a><tt class="py-lineno"> 647</tt>  <tt class="py-line"><tt class="py-comment"></tt>                        <tt class="py-comment"># didn't have a doc-comment, but might still</tt> </tt>
+<a name="L648"></a><tt class="py-lineno"> 648</tt>  <tt class="py-line"><tt class="py-comment"></tt>                        <tt class="py-comment"># be followed by a docstring.  Since we</tt> </tt>
+<a name="L649"></a><tt class="py-lineno"> 649</tt>  <tt class="py-line"><tt class="py-comment"></tt>                        <tt class="py-comment"># tokenize in order, we can't do lookahead to</tt> </tt>
+<a name="L650"></a><tt class="py-lineno"> 650</tt>  <tt class="py-line"><tt class="py-comment"></tt>                        <tt class="py-comment"># see if the variable will have a comment; but</tt> </tt>
+<a name="L651"></a><tt class="py-lineno"> 651</tt>  <tt class="py-line"><tt class="py-comment"></tt>                        <tt class="py-comment"># it should only be added to the container if</tt> </tt>
+<a name="L652"></a><tt class="py-lineno"> 652</tt>  <tt class="py-line"><tt class="py-comment"></tt>                        <tt class="py-comment"># it does.  So we defer the grouping of that</tt> </tt>
+<a name="L653"></a><tt class="py-lineno"> 653</tt>  <tt class="py-line"><tt class="py-comment"></tt>                        <tt class="py-comment"># to be handled by process_docstring instead.</tt> </tt>
+<a name="L654"></a><tt class="py-lineno"> 654</tt>  <tt class="py-line"><tt class="py-comment"></tt>                        <tt class="py-keyword">if</tt> <tt class="py-name">prev_line_doc</tt><tt class="py-op">.</tt><tt id="link-250" class="py-name" targets="Method epydoc.apidoc.DocIndex.container()=epydoc.apidoc.DocIndex-class.html#container,Method epydoc.apidoc.DottedName.container()=epydoc.apidoc.DottedName-class.html#container,Variable epydoc.apidoc.VariableDoc.container=epydoc.apid [...]
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-250', 'container', 'link-250');">container</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt id="link-251" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-251', 'UNKNOWN', 'link-38');">UNKNOWN</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L655"></a><tt class="py-lineno"> 655</tt>  <tt class="py-line">                            <tt id="link-252" class="py-name" targets="Function epydoc.docparser.add_to_group()=epydoc.docparser-module.html#add_to_group"><a title="epydoc.docparser.add_to_group" class="py-name" href="#" onclick="return doclink('link-252', 'add_to_group', 'link-252');">add_to_group</a></tt><tt class="py-op">(</tt><tt class="py-name">prev_line_doc</tt><tt class="py-op">.</tt><tt id="link-253" class="p [...]
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-253', 'container', 'link-250');">container</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L656"></a><tt class="py-lineno"> 656</tt>  <tt class="py-line">                                         <tt class="py-name">prev_line_doc</tt><tt class="py-op">,</tt> <tt class="py-name">groups</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L657"></a><tt class="py-lineno"> 657</tt>  <tt class="py-line">                    <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">parent_docs</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt id="link-254" class="py-name"><a title="epydoc.apidoc.NamespaceDoc" class="py-name" href="#" onclick="return doclink('link-254', 'NamespaceDoc' [...]
+<a name="L658"></a><tt class="py-lineno"> 658</tt>  <tt class="py-line">                        <tt id="link-255" class="py-name"><a title="epydoc.docparser.add_to_group" class="py-name" href="#" onclick="return doclink('link-255', 'add_to_group', 'link-252');">add_to_group</a></tt><tt class="py-op">(</tt><tt class="py-name">parent_docs</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">prev [...]
+<a name="L659"></a><tt class="py-lineno"> 659</tt>  <tt class="py-line">                                     <tt class="py-name">groups</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L660"></a><tt class="py-lineno"> 660</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L661"></a><tt class="py-lineno"> 661</tt>  <tt class="py-line">                <tt class="py-name">prev_line_doc</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L662"></a><tt class="py-lineno"> 662</tt>  <tt class="py-line"> </tt>
+<a name="L663"></a><tt class="py-lineno"> 663</tt>  <tt class="py-line">            <tt class="py-comment"># Reset line contents.</tt> </tt>
+<a name="L664"></a><tt class="py-lineno"> 664</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">line_toks</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L665"></a><tt class="py-lineno"> 665</tt>  <tt class="py-line">            <tt id="link-256" class="py-name"><a title="epydoc.apidoc.RoutineDoc.lineno" class="py-name" href="#" onclick="return doclink('link-256', 'lineno', 'link-207');">lineno</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L666"></a><tt class="py-lineno"> 666</tt>  <tt class="py-line">            <tt class="py-name">comments</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L667"></a><tt class="py-lineno"> 667</tt>  <tt class="py-line">            <tt id="link-257" class="py-name"><a title="epydoc.apidoc.RoutineDoc.decorators" class="py-name" href="#" onclick="return doclink('link-257', 'decorators', 'link-208');">decorators</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+</div><a name="L668"></a><tt class="py-lineno"> 668</tt>  <tt class="py-line">             </tt>
+<a name="add_to_group"></a><div id="add_to_group-def"><a name="L669"></a><tt class="py-lineno"> 669</tt> <a class="py-toggle" href="#" id="add_to_group-toggle" onclick="return toggle('add_to_group');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docparser-module.html#add_to_group">add_to_group</a><tt class="py-op">(</tt><tt class="py-param">container</tt><tt class="py-op">,</tt> <tt class="py-param">api_doc</tt><tt class="py-op">,</tt> <tt  [...]
+</div><div id="add_to_group-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="add_to_group-expanded"><a name="L670"></a><tt class="py-lineno"> 670</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-258" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-258', 'container', 'link-250');">container</a></tt><tt class="py-op">.</tt><tt id="link-259" class="py-name" targets="Variable epydoc.apidoc.NamespaceDoc.group_specs=epydoc.apidoc.NamespaceDoc-class.html#group_specs"><a title="epydoc.apidoc.NamespaceDoc.group_specs" class="py-name" href="#" onclick="return doclink('link-259', 'group_specs', 'link-259');">group_specs</a></tt> <tt class="py-keyword" [...]
+<a name="L671"></a><tt class="py-lineno"> 671</tt>  <tt class="py-line">        <tt id="link-261" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-261', 'container', 'link-250');">container</a></tt><tt class="py-op">.</tt><tt id="link-262" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.group_specs" class="py-name" href="#" onclick="return doclink('link-262', 'group_specs', 'link-259');">group_specs</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L672"></a><tt class="py-lineno"> 672</tt>  <tt class="py-line"> </tt>
+<a name="L673"></a><tt class="py-lineno"> 673</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt id="link-263" class="py-name"><a title="epydoc.apidoc.VariableDoc" class="py-name" href="#" onclick="return doclink('link-263', 'VariableDoc', 'link-249');">VariableDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L674"></a><tt class="py-lineno"> 674</tt>  <tt class="py-line">        <tt class="py-name">var_name</tt> <tt class="py-op">=</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-264" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-264', 'name', 'link-31');">name</a></tt> </tt>
+<a name="L675"></a><tt class="py-lineno"> 675</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L676"></a><tt class="py-lineno"> 676</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-265" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-265', 'canonical_name', 'link-37');">canonical_name</a></tt> <tt class="py-keyword">is</tt> <tt id="link-266" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-266', 'UNKNOWN', 'link-38');">UNKNOWN</a></tt><tt class="py-op">:</tt> <tt id="link-267" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-267', 'log', 'link-50');">log</a></tt><tt class="py-op">.</tt><tt id="link-268" class="py-name" targets="Function epydoc.log.debug()=epydoc.log-module.html#debug,Method epydoc.markup.restructuredtext.OptimizedReporter.debug()=epydoc.markup.restructuredtext.OptimizedReporter-class.html#debug"><a title="epydoc.log.debug
+epydoc.markup.restructuredtext.OptimizedReporter.debug" class="py-name" href="#" onclick="return doclink('link-268', 'debug', 'link-268');">debug</a></tt><tt class="py-op">(</tt><tt class="py-string">'ouch'</tt><tt class="py-op">,</tt> <tt class="py-op">`</tt><tt class="py-name">api_doc</tt><tt class="py-op">`</tt><tt class="py-op">)</tt> </tt>
+<a name="L677"></a><tt class="py-lineno"> 677</tt>  <tt class="py-line">        <tt class="py-name">var_name</tt> <tt class="py-op">=</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-269" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-269', 'canonical_name', 'link-37');">canonical_name</a></tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L678"></a><tt class="py-lineno"> 678</tt>  <tt class="py-line"> </tt>
+<a name="L679"></a><tt class="py-lineno"> 679</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-op">(</tt><tt id="link-270" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-270', 'name', 'link-31');">name</a></tt><tt class="py-op">,</tt> <tt class="py-name">group_vars</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt id="link-271" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-271', 'container', 'link-250');">container</a></tt><tt class="py-op">.</tt><tt id="link-272" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.group_specs" class="py-name" href="#" onclick="return doclink('link-272', 'group_specs', 'link-259');">group_specs</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L680"></a><tt class="py-lineno"> 680</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-273" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-273', 'name', 'link-31');">name</a></tt> <tt class="py-op">==</tt> <tt class="py-name">group_name</tt><tt class="py-op">:</tt> </tt>
+<a name="L681"></a><tt class="py-lineno"> 681</tt>  <tt class="py-line">            <tt class="py-name">group_vars</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">var_name</tt><tt class="py-op">)</tt> </tt>
+<a name="L682"></a><tt class="py-lineno"> 682</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> </tt>
+<a name="L683"></a><tt class="py-lineno"> 683</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L684"></a><tt class="py-lineno"> 684</tt>  <tt class="py-line">        <tt id="link-274" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-274', 'container', 'link-250');">container</a></tt><tt class="py-op">.</tt><tt id="link-275" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.group_specs" class="py-name" href="#" onclick="return doclink('link-275', 'group_specs', 'link-259');">group_specs</a></tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt> <tt class="py-op">(</tt><tt class="py-name">group_n [...]
+</div><a name="L685"></a><tt class="py-lineno"> 685</tt>  <tt class="py-line"> </tt>
+<a name="script_guard"></a><div id="script_guard-def"><a name="L686"></a><tt class="py-lineno"> 686</tt> <a class="py-toggle" href="#" id="script_guard-toggle" onclick="return toggle('script_guard');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docparser-module.html#script_guard">script_guard</a><tt class="py-op">(</tt><tt class="py-param">line</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="script_guard-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="script_guard-expanded"><a name="L687"></a><tt class="py-lineno"> 687</tt>  <tt class="py-line">    <tt class="py-docstring">"""Detect the idiomatic trick C{if __name__ == "__main__":}"""</tt> </tt>
+<a name="L688"></a><tt class="py-lineno"> 688</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">line</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">5</tt> </tt>
+<a name="L689"></a><tt class="py-lineno"> 689</tt>  <tt class="py-line">        <tt class="py-keyword">and</tt> <tt class="py-name">line</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">'__name__'</tt> <tt class="py-comment"># this is the most selective</tt> </tt>
+<a name="L690"></a><tt class="py-lineno"> 690</tt>  <tt class="py-line">        <tt class="py-keyword">and</tt> <tt class="py-name">line</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">'if'</tt> </tt>
+<a name="L691"></a><tt class="py-lineno"> 691</tt>  <tt class="py-line">        <tt class="py-keyword">and</tt> <tt class="py-name">line</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">'=='</tt> </tt>
+<a name="L692"></a><tt class="py-lineno"> 692</tt>  <tt class="py-line">        <tt class="py-keyword">and</tt> <tt class="py-name">line</tt><tt class="py-op">[</tt><tt class="py-number">4</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">':'</tt> </tt>
+<a name="L693"></a><tt class="py-lineno"> 693</tt>  <tt class="py-line">        <tt class="py-keyword">and</tt> <tt class="py-name">line</tt><tt class="py-op">[</tt><tt class="py-number">3</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string [...]
+</div><a name="L694"></a><tt class="py-lineno"> 694</tt>  <tt class="py-line"> </tt>
+<a name="L695"></a><tt class="py-lineno"> 695</tt>  <tt class="py-line"><tt class="py-comment">#/////////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L696"></a><tt class="py-lineno"> 696</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#{ Shallow parser</tt> </tt>
+<a name="L697"></a><tt class="py-lineno"> 697</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#/////////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L698"></a><tt class="py-lineno"> 698</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="shallow_parse"></a><div id="shallow_parse-def"><a name="L699"></a><tt class="py-lineno"> 699</tt> <a class="py-toggle" href="#" id="shallow_parse-toggle" onclick="return toggle('shallow_parse');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docparser-module.html#shallow_parse">shallow_parse</a><tt class="py-op">(</tt><tt class="py-param">line_toks</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="shallow_parse-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="shallow_parse-expanded"><a name="L700"></a><tt class="py-lineno"> 700</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L701"></a><tt class="py-lineno"> 701</tt>  <tt class="py-line"><tt class="py-docstring">    Given a flat list of tokens, return a nested tree structure</tt> </tt>
+<a name="L702"></a><tt class="py-lineno"> 702</tt>  <tt class="py-line"><tt class="py-docstring">    (called a X{token tree}), whose leaves are identical to the</tt> </tt>
+<a name="L703"></a><tt class="py-lineno"> 703</tt>  <tt class="py-line"><tt class="py-docstring">    original list, but whose structure reflects the structure</tt> </tt>
+<a name="L704"></a><tt class="py-lineno"> 704</tt>  <tt class="py-line"><tt class="py-docstring">    implied by the grouping tokens (i.e., parenthases, braces, and</tt> </tt>
+<a name="L705"></a><tt class="py-lineno"> 705</tt>  <tt class="py-line"><tt class="py-docstring">    brackets).  If the parenthases, braces, and brackets do not</tt> </tt>
+<a name="L706"></a><tt class="py-lineno"> 706</tt>  <tt class="py-line"><tt class="py-docstring">    match, or are not balanced, then raise a ParseError.</tt> </tt>
+<a name="L707"></a><tt class="py-lineno"> 707</tt>  <tt class="py-line"><tt class="py-docstring">    </tt> </tt>
+<a name="L708"></a><tt class="py-lineno"> 708</tt>  <tt class="py-line"><tt class="py-docstring">    Assign some structure to a sequence of structure (group parens).</tt> </tt>
+<a name="L709"></a><tt class="py-lineno"> 709</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L710"></a><tt class="py-lineno"> 710</tt>  <tt class="py-line">    <tt class="py-name">stack</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">]</tt> </tt>
+<a name="L711"></a><tt class="py-lineno"> 711</tt>  <tt class="py-line">    <tt class="py-name">parens</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L712"></a><tt class="py-lineno"> 712</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">tok</tt> <tt class="py-keyword">in</tt> <tt class="py-name">line_toks</tt><tt class="py-op">:</tt> </tt>
+<a name="L713"></a><tt class="py-lineno"> 713</tt>  <tt class="py-line">        <tt class="py-name">toktype</tt><tt class="py-op">,</tt> <tt class="py-name">toktext</tt> <tt class="py-op">=</tt> <tt class="py-name">tok</tt> </tt>
+<a name="L714"></a><tt class="py-lineno"> 714</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">toktext</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-string">'('</tt><tt class="py-op">,</tt><tt class="py-string">'['</tt><tt class="py-op">,</tt><tt class="py-string">'{'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L715"></a><tt class="py-lineno"> 715</tt>  <tt class="py-line">            <tt class="py-name">parens</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">tok</tt><tt class="py-op">)</tt> </tt>
+<a name="L716"></a><tt class="py-lineno"> 716</tt>  <tt class="py-line">            <tt class="py-name">stack</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">tok</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L717"></a><tt class="py-lineno"> 717</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">toktext</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-string">'}'</tt><tt class="py-op">,</tt><tt class="py-string">']'</tt><tt class="py-op">,</tt><tt class="py-string">')'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L718"></a><tt class="py-lineno"> 718</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">parens</tt><tt class="py-op">:</tt> </tt>
+<a name="L719"></a><tt class="py-lineno"> 719</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt id="link-276" class="py-name"><a title="epydoc.docparser.ParseError
+epydoc.markup.ParseError" class="py-name" href="#" onclick="return doclink('link-276', 'ParseError', 'link-87');">ParseError</a></tt><tt class="py-op">(</tt><tt class="py-string">'Unbalanced parens'</tt><tt class="py-op">)</tt> </tt>
+<a name="L720"></a><tt class="py-lineno"> 720</tt>  <tt class="py-line">            <tt class="py-name">left_paren</tt> <tt class="py-op">=</tt> <tt class="py-name">parens</tt><tt class="py-op">.</tt><tt class="py-name">pop</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L721"></a><tt class="py-lineno"> 721</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">left_paren</tt><tt class="py-op">+</tt><tt class="py-name">toktext</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-string">'()'</tt><tt class="py-op">,</tt> <tt class="py-string">'[]'</tt><tt class="py-op">,</tt> <tt class="py-string">'{}'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L722"></a><tt class="py-lineno"> 722</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt id="link-277" class="py-name"><a title="epydoc.docparser.ParseError
+epydoc.markup.ParseError" class="py-name" href="#" onclick="return doclink('link-277', 'ParseError', 'link-87');">ParseError</a></tt><tt class="py-op">(</tt><tt class="py-string">'Mismatched parens'</tt><tt class="py-op">)</tt> </tt>
+<a name="L723"></a><tt class="py-lineno"> 723</tt>  <tt class="py-line">            <tt class="py-name">lst</tt> <tt class="py-op">=</tt> <tt class="py-name">stack</tt><tt class="py-op">.</tt><tt class="py-name">pop</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L724"></a><tt class="py-lineno"> 724</tt>  <tt class="py-line">            <tt class="py-name">lst</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">tok</tt><tt class="py-op">)</tt> </tt>
+<a name="L725"></a><tt class="py-lineno"> 725</tt>  <tt class="py-line">            <tt class="py-name">stack</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">lst</tt><tt class="py-op">)</tt> </tt>
+<a name="L726"></a><tt class="py-lineno"> 726</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L727"></a><tt class="py-lineno"> 727</tt>  <tt class="py-line">            <tt class="py-name">stack</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">tok</tt><tt class="py-op">)</tt> </tt>
+<a name="L728"></a><tt class="py-lineno"> 728</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">stack</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-number">1</tt> <tt class="py-keyword">or</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">parens</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L729"></a><tt class="py-lineno"> 729</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt id="link-278" class="py-name"><a title="epydoc.docparser.ParseError
+epydoc.markup.ParseError" class="py-name" href="#" onclick="return doclink('link-278', 'ParseError', 'link-87');">ParseError</a></tt><tt class="py-op">(</tt><tt class="py-string">'Unbalanced parens'</tt><tt class="py-op">)</tt> </tt>
+<a name="L730"></a><tt class="py-lineno"> 730</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">stack</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+</div><a name="L731"></a><tt class="py-lineno"> 731</tt>  <tt class="py-line"> </tt>
+<a name="L732"></a><tt class="py-lineno"> 732</tt>  <tt class="py-line"><tt class="py-comment">#/////////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L733"></a><tt class="py-lineno"> 733</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#{ Line processing</tt> </tt>
+<a name="L734"></a><tt class="py-lineno"> 734</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#/////////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L735"></a><tt class="py-lineno"> 735</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># The methods process_*() are used to handle lines.</tt> </tt>
+<a name="L736"></a><tt class="py-lineno"> 736</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="process_line"></a><div id="process_line-def"><a name="L737"></a><tt class="py-lineno"> 737</tt> <a class="py-toggle" href="#" id="process_line-toggle" onclick="return toggle('process_line');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docparser-module.html#process_line">process_line</a><tt class="py-op">(</tt><tt class="py-param">line</tt><tt class="py-op">,</tt> <tt class="py-param">parent_docs</tt><tt class="py-op">,</tt> <tt c [...]
+<a name="L738"></a><tt class="py-lineno"> 738</tt>  <tt class="py-line">                 <tt class="py-param">comments</tt><tt class="py-op">,</tt> <tt class="py-param">decorators</tt><tt class="py-op">,</tt> <tt class="py-param">encoding</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="process_line-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="process_line-expanded"><a name="L739"></a><tt class="py-lineno"> 739</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L740"></a><tt class="py-lineno"> 740</tt>  <tt class="py-line"><tt class="py-docstring">    @return: C{new-doc}, C{decorator}..?</tt> </tt>
+<a name="L741"></a><tt class="py-lineno"> 741</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L742"></a><tt class="py-lineno"> 742</tt>  <tt class="py-line">    <tt class="py-name">args</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">line</tt><tt class="py-op">,</tt> <tt class="py-name">parent_docs</tt><tt class="py-op">,</tt> <tt class="py-name">prev_line_doc</tt><tt class="py-op">,</tt> <tt id="link-279" class="py-name"><a title="epydoc.apidoc.RoutineDoc.lineno" class="py-name" href="#" onclick="return doclink('link-279', 'lineno', 'link-207') [...]
+<a name="L743"></a><tt class="py-lineno"> 743</tt>  <tt class="py-line">            <tt class="py-name">comments</tt><tt class="py-op">,</tt> <tt id="link-280" class="py-name"><a title="epydoc.apidoc.RoutineDoc.decorators" class="py-name" href="#" onclick="return doclink('link-280', 'decorators', 'link-208');">decorators</a></tt><tt class="py-op">,</tt> <tt class="py-name">encoding</tt><tt class="py-op">)</tt> </tt>
+<a name="L744"></a><tt class="py-lineno"> 744</tt>  <tt class="py-line"> </tt>
+<a name="L745"></a><tt class="py-lineno"> 745</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">line</tt><tt class="py-op">:</tt> <tt class="py-comment"># blank line.</tt> </tt>
+<a name="L746"></a><tt class="py-lineno"> 746</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
+<a name="L747"></a><tt class="py-lineno"> 747</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-op">(</tt><tt class="py-name">token</tt><tt class="py-op">.</tt><tt class="py-name">OP</tt><tt class="py-op">,</tt> <tt class="py-string">':'</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-name">line</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py- [...]
+<a name="L748"></a><tt class="py-lineno"> 748</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-281" class="py-name" targets="Function epydoc.docparser.process_one_line_block()=epydoc.docparser-module.html#process_one_line_block"><a title="epydoc.docparser.process_one_line_block" class="py-name" href="#" onclick="return doclink('link-281', 'process_one_line_block', 'link-281');">process_one_line_block</a></tt><tt class="py-op">(</tt><tt class="py-op">*</tt [...]
+<a name="L749"></a><tt class="py-lineno"> 749</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-op">(</tt><tt class="py-name">token</tt><tt class="py-op">.</tt><tt class="py-name">OP</tt><tt class="py-op">,</tt> <tt class="py-string">';'</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-name">line</tt><tt class="py-op">:</tt> </tt>
+<a name="L750"></a><tt class="py-lineno"> 750</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-282" class="py-name" targets="Function epydoc.docparser.process_multi_stmt()=epydoc.docparser-module.html#process_multi_stmt"><a title="epydoc.docparser.process_multi_stmt" class="py-name" href="#" onclick="return doclink('link-282', 'process_multi_stmt', 'link-282');">process_multi_stmt</a></tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name" [...]
+<a name="L751"></a><tt class="py-lineno"> 751</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">line</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-op">(</tt><tt class="py-name">token</tt><tt class="py-op">.</tt><tt class="py-name">NAME</tt><tt class="py-op">,</tt> <tt class="py-string">'def'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L752"></a><tt class="py-lineno"> 752</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-283" class="py-name" targets="Function epydoc.docparser.process_funcdef()=epydoc.docparser-module.html#process_funcdef"><a title="epydoc.docparser.process_funcdef" class="py-name" href="#" onclick="return doclink('link-283', 'process_funcdef', 'link-283');">process_funcdef</a></tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">args</tt><tt c [...]
+<a name="L753"></a><tt class="py-lineno"> 753</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">line</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-op">(</tt><tt class="py-name">token</tt><tt class="py-op">.</tt><tt class="py-name">OP</tt><tt class="py-op">,</tt> <tt class="py-string">'@'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L754"></a><tt class="py-lineno"> 754</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-284" class="py-name"><a title="epydoc.docparser.process_funcdef" class="py-name" href="#" onclick="return doclink('link-284', 'process_funcdef', 'link-283');">process_funcdef</a></tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">args</tt><tt class="py-op">)</tt> </tt>
+<a name="L755"></a><tt class="py-lineno"> 755</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">line</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-op">(</tt><tt class="py-name">token</tt><tt class="py-op">.</tt><tt class="py-name">NAME</tt><tt class="py-op">,</tt> <tt class="py-string">'class'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L756"></a><tt class="py-lineno"> 756</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-285" class="py-name" targets="Function epydoc.docparser.process_classdef()=epydoc.docparser-module.html#process_classdef"><a title="epydoc.docparser.process_classdef" class="py-name" href="#" onclick="return doclink('link-285', 'process_classdef', 'link-285');">process_classdef</a></tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">args</tt> [...]
+<a name="L757"></a><tt class="py-lineno"> 757</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">line</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-op">(</tt><tt class="py-name">token</tt><tt class="py-op">.</tt><tt class="py-name">NAME</tt><tt class="py-op">,</tt> <tt class="py-string">'import'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L758"></a><tt class="py-lineno"> 758</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-286" class="py-name" targets="Function epydoc.docparser.process_import()=epydoc.docparser-module.html#process_import"><a title="epydoc.docparser.process_import" class="py-name" href="#" onclick="return doclink('link-286', 'process_import', 'link-286');">process_import</a></tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">args</tt><tt class= [...]
+<a name="L759"></a><tt class="py-lineno"> 759</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">line</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-op">(</tt><tt class="py-name">token</tt><tt class="py-op">.</tt><tt class="py-name">NAME</tt><tt class="py-op">,</tt> <tt class="py-string">'from'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L760"></a><tt class="py-lineno"> 760</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-287" class="py-name" targets="Function epydoc.docparser.process_from_import()=epydoc.docparser-module.html#process_from_import"><a title="epydoc.docparser.process_from_import" class="py-name" href="#" onclick="return doclink('link-287', 'process_from_import', 'link-287');">process_from_import</a></tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py- [...]
+<a name="L761"></a><tt class="py-lineno"> 761</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">line</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-op">(</tt><tt class="py-name">token</tt><tt class="py-op">.</tt><tt class="py-name">NAME</tt><tt class="py-op">,</tt> <tt class="py-string">'del'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L762"></a><tt class="py-lineno"> 762</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-288" class="py-name" targets="Function epydoc.docparser.process_del()=epydoc.docparser-module.html#process_del"><a title="epydoc.docparser.process_del" class="py-name" href="#" onclick="return doclink('link-288', 'process_del', 'link-288');">process_del</a></tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">args</tt><tt class="py-op">)</tt> </tt>
+<a name="L763"></a><tt class="py-lineno"> 763</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">line</tt><tt class="py-op">)</tt><tt class="py-op">==</tt><tt class="py-number">1</tt> <tt class="py-keyword">and</tt> <tt class="py-name">line</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class= [...]
+<a name="L764"></a><tt class="py-lineno"> 764</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-289" class="py-name" targets="Function epydoc.docparser.process_docstring()=epydoc.docparser-module.html#process_docstring"><a title="epydoc.docparser.process_docstring" class="py-name" href="#" onclick="return doclink('link-289', 'process_docstring', 'link-289');">process_docstring</a></tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">args [...]
+<a name="L765"></a><tt class="py-lineno"> 765</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-op">(</tt><tt class="py-name">token</tt><tt class="py-op">.</tt><tt class="py-name">OP</tt><tt class="py-op">,</tt> <tt class="py-string">'='</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-name">line</tt><tt class="py-op">:</tt> </tt>
+<a name="L766"></a><tt class="py-lineno"> 766</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-290" class="py-name" targets="Function epydoc.docparser.process_assignment()=epydoc.docparser-module.html#process_assignment"><a title="epydoc.docparser.process_assignment" class="py-name" href="#" onclick="return doclink('link-290', 'process_assignment', 'link-290');">process_assignment</a></tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name" [...]
+<a name="L767"></a><tt class="py-lineno"> 767</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-op">(</tt><tt class="py-name">line</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-name">token</tt><tt class="py-op">.</tt><tt class="py-name">NAME</tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L768"></a><tt class="py-lineno"> 768</tt>  <tt class="py-line">          <tt class="py-name">line</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-keyword">in</tt> <tt id="link-291" class="py-name" targets="Variable epydoc.docparser.CONTROL_FLOW_KEYWORDS=epydoc.docparser-module.html#CONTROL_FLOW_KEYWORDS"><a title="epydoc.docparser.CONTROL_FLOW_KEYWORDS" clas [...]
+<a name="L769"></a><tt class="py-lineno"> 769</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-292" class="py-name" targets="Function epydoc.docparser.process_control_flow_line()=epydoc.docparser-module.html#process_control_flow_line"><a title="epydoc.docparser.process_control_flow_line" class="py-name" href="#" onclick="return doclink('link-292', 'process_control_flow_line', 'link-292');">process_control_flow_line</a></tt><tt class="py-op">(</tt><tt clas [...]
+<a name="L770"></a><tt class="py-lineno"> 770</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L771"></a><tt class="py-lineno"> 771</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
+</div><a name="L772"></a><tt class="py-lineno"> 772</tt>  <tt class="py-line">        <tt class="py-comment"># [xx] do something with control structures like for/if?</tt> </tt>
+<a name="L773"></a><tt class="py-lineno"> 773</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L774"></a><tt class="py-lineno"> 774</tt>  <tt class="py-line"><tt class="py-comment">#/////////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L775"></a><tt class="py-lineno"> 775</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Line handler: control flow</tt> </tt>
+<a name="L776"></a><tt class="py-lineno"> 776</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#/////////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L777"></a><tt class="py-lineno"> 777</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L778"></a><tt class="py-lineno"> 778</tt>  <tt class="py-line"><tt id="link-293" class="py-name"><a title="epydoc.docparser.CONTROL_FLOW_KEYWORDS" class="py-name" href="#" onclick="return doclink('link-293', 'CONTROL_FLOW_KEYWORDS', 'link-291');">CONTROL_FLOW_KEYWORDS</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> </tt>
+<a name="L779"></a><tt class="py-lineno"> 779</tt>  <tt class="py-line">    <tt class="py-comment">#: A list of the control flow keywords.  If a line begins with</tt> </tt>
+<a name="L780"></a><tt class="py-lineno"> 780</tt>  <tt class="py-line">    <tt class="py-comment">#: one of these keywords, then it should be handled by</tt> </tt>
+<a name="L781"></a><tt class="py-lineno"> 781</tt>  <tt class="py-line">    <tt class="py-comment">#: C{process_control_flow_line}.</tt> </tt>
+<a name="L782"></a><tt class="py-lineno"> 782</tt>  <tt class="py-line">    <tt class="py-string">'if'</tt><tt class="py-op">,</tt> <tt class="py-string">'elif'</tt><tt class="py-op">,</tt> <tt class="py-string">'else'</tt><tt class="py-op">,</tt> <tt class="py-string">'while'</tt><tt class="py-op">,</tt> <tt class="py-string">'for'</tt><tt class="py-op">,</tt> <tt class="py-string">'try'</tt><tt class="py-op">,</tt> <tt class="py-string">'except'</tt><tt class="py-op">,</tt> <tt class=" [...]
+<a name="L783"></a><tt class="py-lineno"> 783</tt>  <tt class="py-line"> </tt>
+<a name="process_control_flow_line"></a><div id="process_control_flow_line-def"><a name="L784"></a><tt class="py-lineno"> 784</tt> <a class="py-toggle" href="#" id="process_control_flow_line-toggle" onclick="return toggle('process_control_flow_line');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docparser-module.html#process_control_flow_line">process_control_flow_line</a><tt class="py-op">(</tt><tt class="py-param">line</tt><tt class="py- [...]
+<a name="L785"></a><tt class="py-lineno"> 785</tt>  <tt class="py-line">                              <tt class="py-param">lineno</tt><tt class="py-op">,</tt> <tt class="py-param">comments</tt><tt class="py-op">,</tt> <tt class="py-param">decorators</tt><tt class="py-op">,</tt> <tt class="py-param">encoding</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="process_control_flow_line-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="process_control_flow_line-expanded"><a name="L786"></a><tt class="py-lineno"> 786</tt>  <tt class="py-line">    <tt class="py-name">keyword</tt> <tt class="py-op">=</tt> <tt class="py-name">line</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L787"></a><tt class="py-lineno"> 787</tt>  <tt class="py-line"> </tt>
+<a name="L788"></a><tt class="py-lineno"> 788</tt>  <tt class="py-line">    <tt class="py-comment"># If it's a 'for' block: create the loop variable.</tt> </tt>
+<a name="L789"></a><tt class="py-lineno"> 789</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">keyword</tt> <tt class="py-op">==</tt> <tt class="py-string">'for'</tt> <tt class="py-keyword">and</tt> <tt id="link-294" class="py-name"><a title="epydoc.docparser.PARSE_FOR_BLOCKS" class="py-name" href="#" onclick="return doclink('link-294', 'PARSE_FOR_BLOCKS', 'link-16');">PARSE_FOR_BLOCKS</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L790"></a><tt class="py-lineno"> 790</tt>  <tt class="py-line">        <tt class="py-name">loopvar_name</tt> <tt class="py-op">=</tt> <tt id="link-295" class="py-name" targets="Function epydoc.docparser.parse_dotted_name()=epydoc.docparser-module.html#parse_dotted_name"><a title="epydoc.docparser.parse_dotted_name" class="py-name" href="#" onclick="return doclink('link-295', 'parse_dotted_name', 'link-295');">parse_dotted_name</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L791"></a><tt class="py-lineno"> 791</tt>  <tt class="py-line">            <tt id="link-296" class="py-name" targets="Function epydoc.docparser.split_on()=epydoc.docparser-module.html#split_on"><a title="epydoc.docparser.split_on" class="py-name" href="#" onclick="return doclink('link-296', 'split_on', 'link-296');">split_on</a></tt><tt class="py-op">(</tt><tt class="py-name">line</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">] [...]
+<a name="L792"></a><tt class="py-lineno"> 792</tt>  <tt class="py-line">        <tt class="py-name">parent</tt> <tt class="py-op">=</tt> <tt id="link-297" class="py-name" targets="Function epydoc.docparser.get_lhs_parent()=epydoc.docparser-module.html#get_lhs_parent"><a title="epydoc.docparser.get_lhs_parent" class="py-name" href="#" onclick="return doclink('link-297', 'get_lhs_parent', 'link-297');">get_lhs_parent</a></tt><tt class="py-op">(</tt><tt class="py-name">loopvar_name</tt><tt  [...]
+<a name="L793"></a><tt class="py-lineno"> 793</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">parent</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L794"></a><tt class="py-lineno"> 794</tt>  <tt class="py-line">            <tt class="py-name">var_doc</tt> <tt class="py-op">=</tt> <tt id="link-298" class="py-name"><a title="epydoc.apidoc.VariableDoc" class="py-name" href="#" onclick="return doclink('link-298', 'VariableDoc', 'link-249');">VariableDoc</a></tt><tt class="py-op">(</tt><tt id="link-299" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-299', 'name',  [...]
+<a name="L795"></a><tt class="py-lineno"> 795</tt>  <tt class="py-line">                                  <tt id="link-301" class="py-name"><a title="epydoc.apidoc.VariableDoc.is_imported" class="py-name" href="#" onclick="return doclink('link-301', 'is_imported', 'link-115');">is_imported</a></tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> <tt id="link-302" class="py-name" targets="Variable epydoc.apidoc.VariableDoc.is_instvar=epydoc.apidoc.VariableDoc [...]
+<a name="L796"></a><tt class="py-lineno"> 796</tt>  <tt class="py-line">                                  <tt id="link-303" class="py-name"><a title="epydoc.apidoc.APIDoc.docs_extracted_by" class="py-name" href="#" onclick="return doclink('link-303', 'docs_extracted_by', 'link-78');">docs_extracted_by</a></tt><tt class="py-op">=</tt><tt class="py-string">'parser'</tt><tt class="py-op">)</tt> </tt>
+<a name="L797"></a><tt class="py-lineno"> 797</tt>  <tt class="py-line">            <tt id="link-304" class="py-name" targets="Function epydoc.docparser.set_variable()=epydoc.docparser-module.html#set_variable"><a title="epydoc.docparser.set_variable" class="py-name" href="#" onclick="return doclink('link-304', 'set_variable', 'link-304');">set_variable</a></tt><tt class="py-op">(</tt><tt class="py-name">parent</tt><tt class="py-op">,</tt> <tt class="py-name">var_doc</tt><tt class="py-op [...]
+<a name="L798"></a><tt class="py-lineno"> 798</tt>  <tt class="py-line">     </tt>
+<a name="L799"></a><tt class="py-lineno"> 799</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">keyword</tt> <tt class="py-op">==</tt> <tt class="py-string">'if'</tt> <tt class="py-keyword">and</tt> <tt id="link-305" class="py-name"><a title="epydoc.docparser.PARSE_IF_BLOCKS" class="py-name" href="#" onclick="return doclink('link-305', 'PARSE_IF_BLOCKS', 'link-13');">PARSE_IF_BLOCKS</a></tt> <tt class="py-keyw [...]
+<a name="L800"></a><tt class="py-lineno"> 800</tt>  <tt class="py-line">        <tt class="py-op">(</tt><tt class="py-name">keyword</tt> <tt class="py-op">==</tt> <tt class="py-string">'elif'</tt> <tt class="py-keyword">and</tt> <tt id="link-307" class="py-name"><a title="epydoc.docparser.PARSE_ELSE_BLOCKS" class="py-name" href="#" onclick="return doclink('link-307', 'PARSE_ELSE_BLOCKS', 'link-14');">PARSE_ELSE_BLOCKS</a></tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> </tt>
+<a name="L801"></a><tt class="py-lineno"> 801</tt>  <tt class="py-line">        <tt class="py-op">(</tt><tt class="py-name">keyword</tt> <tt class="py-op">==</tt> <tt class="py-string">'else'</tt> <tt class="py-keyword">and</tt> <tt id="link-308" class="py-name"><a title="epydoc.docparser.PARSE_ELSE_BLOCKS" class="py-name" href="#" onclick="return doclink('link-308', 'PARSE_ELSE_BLOCKS', 'link-14');">PARSE_ELSE_BLOCKS</a></tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> </tt>
+<a name="L802"></a><tt class="py-lineno"> 802</tt>  <tt class="py-line">        <tt class="py-op">(</tt><tt class="py-name">keyword</tt> <tt class="py-op">==</tt> <tt class="py-string">'while'</tt> <tt class="py-keyword">and</tt> <tt id="link-309" class="py-name"><a title="epydoc.docparser.PARSE_WHILE_BLOCKS" class="py-name" href="#" onclick="return doclink('link-309', 'PARSE_WHILE_BLOCKS', 'link-15');">PARSE_WHILE_BLOCKS</a></tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> </tt>
+<a name="L803"></a><tt class="py-lineno"> 803</tt>  <tt class="py-line">        <tt class="py-op">(</tt><tt class="py-name">keyword</tt> <tt class="py-op">==</tt> <tt class="py-string">'for'</tt> <tt class="py-keyword">and</tt> <tt id="link-310" class="py-name"><a title="epydoc.docparser.PARSE_FOR_BLOCKS" class="py-name" href="#" onclick="return doclink('link-310', 'PARSE_FOR_BLOCKS', 'link-16');">PARSE_FOR_BLOCKS</a></tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> </tt>
+<a name="L804"></a><tt class="py-lineno"> 804</tt>  <tt class="py-line">        <tt class="py-op">(</tt><tt class="py-name">keyword</tt> <tt class="py-op">==</tt> <tt class="py-string">'try'</tt> <tt class="py-keyword">and</tt> <tt id="link-311" class="py-name"><a title="epydoc.docparser.PARSE_TRY_BLOCKS" class="py-name" href="#" onclick="return doclink('link-311', 'PARSE_TRY_BLOCKS', 'link-10');">PARSE_TRY_BLOCKS</a></tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> </tt>
+<a name="L805"></a><tt class="py-lineno"> 805</tt>  <tt class="py-line">        <tt class="py-op">(</tt><tt class="py-name">keyword</tt> <tt class="py-op">==</tt> <tt class="py-string">'except'</tt> <tt class="py-keyword">and</tt> <tt id="link-312" class="py-name"><a title="epydoc.docparser.PARSE_EXCEPT_BLOCKS" class="py-name" href="#" onclick="return doclink('link-312', 'PARSE_EXCEPT_BLOCKS', 'link-11');">PARSE_EXCEPT_BLOCKS</a></tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> </tt>
+<a name="L806"></a><tt class="py-lineno"> 806</tt>  <tt class="py-line">        <tt class="py-op">(</tt><tt class="py-name">keyword</tt> <tt class="py-op">==</tt> <tt class="py-string">'finally'</tt> <tt class="py-keyword">and</tt> <tt id="link-313" class="py-name"><a title="epydoc.docparser.PARSE_FINALLY_BLOCKS" class="py-name" href="#" onclick="return doclink('link-313', 'PARSE_FINALLY_BLOCKS', 'link-12');">PARSE_FINALLY_BLOCKS</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt><t [...]
+<a name="L807"></a><tt class="py-lineno"> 807</tt>  <tt class="py-line">        <tt class="py-comment"># Return "None" to indicate that we should process the</tt> </tt>
+<a name="L808"></a><tt class="py-lineno"> 808</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># block using the same context that we were already in.</tt> </tt>
+<a name="L809"></a><tt class="py-lineno"> 809</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
+<a name="L810"></a><tt class="py-lineno"> 810</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L811"></a><tt class="py-lineno"> 811</tt>  <tt class="py-line">        <tt class="py-comment"># Return 'skip_block' to indicate that we should ignore</tt> </tt>
+<a name="L812"></a><tt class="py-lineno"> 812</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># the contents of this block.</tt> </tt>
+<a name="L813"></a><tt class="py-lineno"> 813</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">return</tt> <tt class="py-string">'skip_block'</tt> </tt>
+</div><a name="L814"></a><tt class="py-lineno"> 814</tt>  <tt class="py-line"> </tt>
+<a name="L815"></a><tt class="py-lineno"> 815</tt>  <tt class="py-line"><tt class="py-comment">#/////////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L816"></a><tt class="py-lineno"> 816</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Line handler: imports</tt> </tt>
+<a name="L817"></a><tt class="py-lineno"> 817</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#/////////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L818"></a><tt class="py-lineno"> 818</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># [xx] I could optionally add ValueDoc's for the imported</tt> </tt>
+<a name="L819"></a><tt class="py-lineno"> 819</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># variables with proxy_for set to the imported source; but</tt> </tt>
+<a name="L820"></a><tt class="py-lineno"> 820</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># I don't think I gain much of anything by doing so.</tt> </tt>
+<a name="L821"></a><tt class="py-lineno"> 821</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="process_import"></a><div id="process_import-def"><a name="L822"></a><tt class="py-lineno"> 822</tt> <a class="py-toggle" href="#" id="process_import-toggle" onclick="return toggle('process_import');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docparser-module.html#process_import">process_import</a><tt class="py-op">(</tt><tt class="py-param">line</tt><tt class="py-op">,</tt> <tt class="py-param">parent_docs</tt><tt class="py-op"> [...]
+<a name="L823"></a><tt class="py-lineno"> 823</tt>  <tt class="py-line">                   <tt class="py-param">comments</tt><tt class="py-op">,</tt> <tt class="py-param">decorators</tt><tt class="py-op">,</tt> <tt class="py-param">encoding</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="process_import-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="process_import-expanded"><a name="L824"></a><tt class="py-lineno"> 824</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">parent_docs</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt i [...]
+<a name="L825"></a><tt class="py-lineno"> 825</tt>  <tt class="py-line">     </tt>
+<a name="L826"></a><tt class="py-lineno"> 826</tt>  <tt class="py-line">    <tt class="py-name">names</tt> <tt class="py-op">=</tt> <tt id="link-315" class="py-name"><a title="epydoc.docparser.split_on" class="py-name" href="#" onclick="return doclink('link-315', 'split_on', 'link-296');">split_on</a></tt><tt class="py-op">(</tt><tt class="py-name">line</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt cla [...]
+<a name="L827"></a><tt class="py-lineno"> 827</tt>  <tt class="py-line">     </tt>
+<a name="L828"></a><tt class="py-lineno"> 828</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt id="link-316" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-316', 'name', 'link-31');">name</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">names</tt><tt class="py-op">:</tt> </tt>
+<a name="L829"></a><tt class="py-lineno"> 829</tt>  <tt class="py-line">        <tt class="py-name">name_pieces</tt> <tt class="py-op">=</tt> <tt id="link-317" class="py-name"><a title="epydoc.docparser.split_on" class="py-name" href="#" onclick="return doclink('link-317', 'split_on', 'link-296');">split_on</a></tt><tt class="py-op">(</tt><tt id="link-318" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-318', 'name', 'link- [...]
+<a name="L830"></a><tt class="py-lineno"> 830</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">name_pieces</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L831"></a><tt class="py-lineno"> 831</tt>  <tt class="py-line">            <tt class="py-name">src_name</tt> <tt class="py-op">=</tt> <tt id="link-319" class="py-name"><a title="epydoc.docparser.parse_dotted_name" class="py-name" href="#" onclick="return doclink('link-319', 'parse_dotted_name', 'link-295');">parse_dotted_name</a></tt><tt class="py-op">(</tt><tt class="py-name">name_pieces</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class=" [...]
+<a name="L832"></a><tt class="py-lineno"> 832</tt>  <tt class="py-line">            <tt id="link-320" class="py-name" targets="Function epydoc.docparser._import_var()=epydoc.docparser-module.html#_import_var"><a title="epydoc.docparser._import_var" class="py-name" href="#" onclick="return doclink('link-320', '_import_var', 'link-320');">_import_var</a></tt><tt class="py-op">(</tt><tt class="py-name">src_name</tt><tt class="py-op">,</tt> <tt class="py-name">parent_docs</tt><tt class="py-o [...]
+<a name="L833"></a><tt class="py-lineno"> 833</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">name_pieces</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">2</tt><tt class="py-op">:</tt> </tt>
+<a name="L834"></a><tt class="py-lineno"> 834</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">name_pieces</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L835"></a><tt class="py-lineno"> 835</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt id="link-321" class="py-name"><a title="epydoc.docparser.ParseError
+epydoc.markup.ParseError" class="py-name" href="#" onclick="return doclink('link-321', 'ParseError', 'link-87');">ParseError</a></tt><tt class="py-op">(</tt><tt class="py-string">'Expected identifier after "as"'</tt><tt class="py-op">)</tt> </tt>
+<a name="L836"></a><tt class="py-lineno"> 836</tt>  <tt class="py-line">            <tt class="py-name">src_name</tt> <tt class="py-op">=</tt> <tt id="link-322" class="py-name"><a title="epydoc.docparser.parse_dotted_name" class="py-name" href="#" onclick="return doclink('link-322', 'parse_dotted_name', 'link-295');">parse_dotted_name</a></tt><tt class="py-op">(</tt><tt class="py-name">name_pieces</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class=" [...]
+<a name="L837"></a><tt class="py-lineno"> 837</tt>  <tt class="py-line">            <tt class="py-name">var_name</tt> <tt class="py-op">=</tt> <tt id="link-323" class="py-name" targets="Function epydoc.docparser.parse_name()=epydoc.docparser-module.html#parse_name"><a title="epydoc.docparser.parse_name" class="py-name" href="#" onclick="return doclink('link-323', 'parse_name', 'link-323');">parse_name</a></tt><tt class="py-op">(</tt><tt class="py-name">name_pieces</tt><tt class="py-op">[ [...]
+<a name="L838"></a><tt class="py-lineno"> 838</tt>  <tt class="py-line">            <tt id="link-324" class="py-name" targets="Function epydoc.docparser._import_var_as()=epydoc.docparser-module.html#_import_var_as"><a title="epydoc.docparser._import_var_as" class="py-name" href="#" onclick="return doclink('link-324', '_import_var_as', 'link-324');">_import_var_as</a></tt><tt class="py-op">(</tt><tt class="py-name">src_name</tt><tt class="py-op">,</tt> <tt class="py-name">var_name</tt><tt [...]
+<a name="L839"></a><tt class="py-lineno"> 839</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L840"></a><tt class="py-lineno"> 840</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt id="link-325" class="py-name"><a title="epydoc.docparser.ParseError
+epydoc.markup.ParseError" class="py-name" href="#" onclick="return doclink('link-325', 'ParseError', 'link-87');">ParseError</a></tt><tt class="py-op">(</tt><tt class="py-string">'Multiple "as" tokens in import'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L841"></a><tt class="py-lineno"> 841</tt>  <tt class="py-line"> </tt>
+<a name="process_from_import"></a><div id="process_from_import-def"><a name="L842"></a><tt class="py-lineno"> 842</tt> <a class="py-toggle" href="#" id="process_from_import-toggle" onclick="return toggle('process_from_import');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docparser-module.html#process_from_import">process_from_import</a><tt class="py-op">(</tt><tt class="py-param">line</tt><tt class="py-op">,</tt> <tt class="py-param">pare [...]
+<a name="L843"></a><tt class="py-lineno"> 843</tt>  <tt class="py-line">                        <tt class="py-param">comments</tt><tt class="py-op">,</tt> <tt class="py-param">decorators</tt><tt class="py-op">,</tt> <tt class="py-param">encoding</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="process_from_import-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="process_from_import-expanded"><a name="L844"></a><tt class="py-lineno"> 844</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">parent_docs</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">,< [...]
+<a name="L845"></a><tt class="py-lineno"> 845</tt>  <tt class="py-line">     </tt>
+<a name="L846"></a><tt class="py-lineno"> 846</tt>  <tt class="py-line">    <tt class="py-name">pieces</tt> <tt class="py-op">=</tt> <tt id="link-327" class="py-name"><a title="epydoc.docparser.split_on" class="py-name" href="#" onclick="return doclink('link-327', 'split_on', 'link-296');">split_on</a></tt><tt class="py-op">(</tt><tt class="py-name">line</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt cl [...]
+<a name="L847"></a><tt class="py-lineno"> 847</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">pieces</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-number">2</tt> <tt class="py-keyword">or</tt> <tt class="py-keyword">not</tt> <tt class="py-name">pieces</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-keyword">or</tt> <tt class="py-keywor [...]
+<a name="L848"></a><tt class="py-lineno"> 848</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt id="link-328" class="py-name"><a title="epydoc.docparser.ParseError
+epydoc.markup.ParseError" class="py-name" href="#" onclick="return doclink('link-328', 'ParseError', 'link-87');">ParseError</a></tt><tt class="py-op">(</tt><tt class="py-string">"Bad from-import"</tt><tt class="py-op">)</tt> </tt>
+<a name="L849"></a><tt class="py-lineno"> 849</tt>  <tt class="py-line">    <tt class="py-name">lhs</tt><tt class="py-op">,</tt> <tt class="py-name">rhs</tt> <tt class="py-op">=</tt> <tt class="py-name">pieces</tt> </tt>
+<a name="L850"></a><tt class="py-lineno"> 850</tt>  <tt class="py-line"> </tt>
+<a name="L851"></a><tt class="py-lineno"> 851</tt>  <tt class="py-line">    <tt class="py-comment"># The RHS might be parenthasized, as specified by PEP 328:</tt> </tt>
+<a name="L852"></a><tt class="py-lineno"> 852</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># http://www.python.org/peps/pep-0328.html</tt> </tt>
+<a name="L853"></a><tt class="py-lineno"> 853</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">rhs</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt> <tt class="py-keyword">and</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">rhs</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><t [...]
+<a name="L854"></a><tt class="py-lineno"> 854</tt>  <tt class="py-line">        <tt class="py-name">rhs</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-op">(</tt><tt class="py-name">token</tt><tt class="py-op">.</tt><tt class="py-name">OP</tt><tt class="py-op">,</tt> <tt class="py-string">'('</tt><tt class="py-op">)</tt> <tt class="py-keywor [...]
+<a name="L855"></a><tt class="py-lineno"> 855</tt>  <tt class="py-line">        <tt class="py-name">rhs</tt> <tt class="py-op">=</tt> <tt class="py-name">rhs</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L856"></a><tt class="py-lineno"> 856</tt>  <tt class="py-line"> </tt>
+<a name="L857"></a><tt class="py-lineno"> 857</tt>  <tt class="py-line">    <tt class="py-comment"># >>> from __future__ import nested_scopes</tt> </tt>
+<a name="L858"></a><tt class="py-lineno"> 858</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">lhs</tt> <tt class="py-op">==</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-name">token</tt><tt class="py-op">.</tt><tt class="py-name">NAME</tt><tt class="py-op">,</tt> <tt class="py-string">'__future__'</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L859"></a><tt class="py-lineno"> 859</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> </tt>
+<a name="L860"></a><tt class="py-lineno"> 860</tt>  <tt class="py-line"> </tt>
+<a name="L861"></a><tt class="py-lineno"> 861</tt>  <tt class="py-line">    <tt class="py-comment"># >>> from sys import *</tt> </tt>
+<a name="L862"></a><tt class="py-lineno"> 862</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">elif</tt> <tt class="py-name">rhs</tt> <tt class="py-op">==</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-name">token</tt><tt class="py-op">.</tt><tt class="py-name">OP</tt><tt class="py-op">,</tt> <tt class="py-string">'*'</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L863"></a><tt class="py-lineno"> 863</tt>  <tt class="py-line">        <tt class="py-name">src_name</tt> <tt class="py-op">=</tt> <tt id="link-329" class="py-name"><a title="epydoc.docparser.parse_dotted_name" class="py-name" href="#" onclick="return doclink('link-329', 'parse_dotted_name', 'link-295');">parse_dotted_name</a></tt><tt class="py-op">(</tt><tt class="py-name">lhs</tt><tt class="py-op">)</tt> </tt>
+<a name="L864"></a><tt class="py-lineno"> 864</tt>  <tt class="py-line">        <tt id="link-330" class="py-name" targets="Function epydoc.docparser._process_fromstar_import()=epydoc.docparser-module.html#_process_fromstar_import"><a title="epydoc.docparser._process_fromstar_import" class="py-name" href="#" onclick="return doclink('link-330', '_process_fromstar_import', 'link-330');">_process_fromstar_import</a></tt><tt class="py-op">(</tt><tt class="py-name">src_name</tt><tt class="py-o [...]
+<a name="L865"></a><tt class="py-lineno"> 865</tt>  <tt class="py-line"> </tt>
+<a name="L866"></a><tt class="py-lineno"> 866</tt>  <tt class="py-line">    <tt class="py-comment"># >>> from os.path import join, split</tt> </tt>
+<a name="L867"></a><tt class="py-lineno"> 867</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L868"></a><tt class="py-lineno"> 868</tt>  <tt class="py-line">        <tt class="py-comment"># Allow relative imports in this case, as per PEP 328</tt> </tt>
+<a name="L869"></a><tt class="py-lineno"> 869</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">src_name</tt> <tt class="py-op">=</tt> <tt id="link-331" class="py-name"><a title="epydoc.docparser.parse_dotted_name" class="py-name" href="#" onclick="return doclink('link-331', 'parse_dotted_name', 'link-295');">parse_dotted_name</a></tt><tt class="py-op">(</tt><tt class="py-name">lhs</tt><tt class="py-op">,</tt>  </tt>
+<a name="L870"></a><tt class="py-lineno"> 870</tt>  <tt class="py-line">            <tt class="py-name">parent_name</tt><tt class="py-op">=</tt><tt class="py-name">parent_docs</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-332" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-332', 'canonical_name', 'link-37');">canonical_name</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L871"></a><tt class="py-lineno"> 871</tt>  <tt class="py-line">        <tt class="py-name">parts</tt> <tt class="py-op">=</tt> <tt id="link-333" class="py-name"><a title="epydoc.docparser.split_on" class="py-name" href="#" onclick="return doclink('link-333', 'split_on', 'link-296');">split_on</a></tt><tt class="py-op">(</tt><tt class="py-name">rhs</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">token</tt><tt class="py-op">.</tt><tt class="py-name">OP</tt [...]
+<a name="L872"></a><tt class="py-lineno"> 872</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">part</tt> <tt class="py-keyword">in</tt> <tt class="py-name">parts</tt><tt class="py-op">:</tt> </tt>
+<a name="L873"></a><tt class="py-lineno"> 873</tt>  <tt class="py-line">            <tt class="py-comment"># from m import x</tt> </tt>
+<a name="L874"></a><tt class="py-lineno"> 874</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">part</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L875"></a><tt class="py-lineno"> 875</tt>  <tt class="py-line">                <tt class="py-name">var_name</tt> <tt class="py-op">=</tt> <tt id="link-334" class="py-name"><a title="epydoc.docparser.parse_name" class="py-name" href="#" onclick="return doclink('link-334', 'parse_name', 'link-323');">parse_name</a></tt><tt class="py-op">(</tt><tt class="py-name">part</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L876"></a><tt class="py-lineno"> 876</tt>  <tt class="py-line">                <tt id="link-335" class="py-name"><a title="epydoc.docparser._import_var_as" class="py-name" href="#" onclick="return doclink('link-335', '_import_var_as', 'link-324');">_import_var_as</a></tt><tt class="py-op">(</tt><tt id="link-336" class="py-name"><a title="epydoc.apidoc.DottedName" class="py-name" href="#" onclick="return doclink('link-336', 'DottedName', 'link-33');">DottedName</a></tt><tt class= [...]
+<a name="L877"></a><tt class="py-lineno"> 877</tt>  <tt class="py-line">                                    <tt class="py-name">var_name</tt><tt class="py-op">,</tt> <tt class="py-name">parent_docs</tt><tt class="py-op">)</tt> </tt>
+<a name="L878"></a><tt class="py-lineno"> 878</tt>  <tt class="py-line"> </tt>
+<a name="L879"></a><tt class="py-lineno"> 879</tt>  <tt class="py-line">            <tt class="py-comment"># from m import x as y</tt> </tt>
+<a name="L880"></a><tt class="py-lineno"> 880</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">elif</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">part</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">3</tt> <tt class="py-keyword">and</tt> <tt class="py-name">part</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-op">(</t [...]
+<a name="L881"></a><tt class="py-lineno"> 881</tt>  <tt class="py-line">                <tt class="py-name">orig_name</tt> <tt class="py-op">=</tt> <tt id="link-337" class="py-name"><a title="epydoc.docparser.parse_name" class="py-name" href="#" onclick="return doclink('link-337', 'parse_name', 'link-323');">parse_name</a></tt><tt class="py-op">(</tt><tt class="py-name">part</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L882"></a><tt class="py-lineno"> 882</tt>  <tt class="py-line">                <tt class="py-name">var_name</tt> <tt class="py-op">=</tt> <tt id="link-338" class="py-name"><a title="epydoc.docparser.parse_name" class="py-name" href="#" onclick="return doclink('link-338', 'parse_name', 'link-323');">parse_name</a></tt><tt class="py-op">(</tt><tt class="py-name">part</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L883"></a><tt class="py-lineno"> 883</tt>  <tt class="py-line">                <tt id="link-339" class="py-name"><a title="epydoc.docparser._import_var_as" class="py-name" href="#" onclick="return doclink('link-339', '_import_var_as', 'link-324');">_import_var_as</a></tt><tt class="py-op">(</tt><tt id="link-340" class="py-name"><a title="epydoc.apidoc.DottedName" class="py-name" href="#" onclick="return doclink('link-340', 'DottedName', 'link-33');">DottedName</a></tt><tt class= [...]
+<a name="L884"></a><tt class="py-lineno"> 884</tt>  <tt class="py-line">                                    <tt class="py-name">var_name</tt><tt class="py-op">,</tt> <tt class="py-name">parent_docs</tt><tt class="py-op">)</tt> </tt>
+<a name="L885"></a><tt class="py-lineno"> 885</tt>  <tt class="py-line"> </tt>
+<a name="L886"></a><tt class="py-lineno"> 886</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L887"></a><tt class="py-lineno"> 887</tt>  <tt class="py-line">                <tt id="link-341" class="py-name"><a title="epydoc.docparser.ParseError
+epydoc.markup.ParseError" class="py-name" href="#" onclick="return doclink('link-341', 'ParseError', 'link-87');">ParseError</a></tt><tt class="py-op">(</tt><tt class="py-string">"Bad from-import"</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L888"></a><tt class="py-lineno"> 888</tt>  <tt class="py-line"> </tt>
+<a name="_process_fromstar_import"></a><div id="_process_fromstar_import-def"><a name="L889"></a><tt class="py-lineno"> 889</tt> <a class="py-toggle" href="#" id="_process_fromstar_import-toggle" onclick="return toggle('_process_fromstar_import');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docparser-module.html#_process_fromstar_import">_process_fromstar_import</a><tt class="py-op">(</tt><tt class="py-param">src</tt><tt class="py-op">,</ [...]
+</div><div id="_process_fromstar_import-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_process_fromstar_import-expanded"><a name="L890"></a><tt class="py-lineno"> 890</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L891"></a><tt class="py-lineno"> 891</tt>  <tt class="py-line"><tt class="py-docstring">    Handle a statement of the form:</tt> </tt>
+<a name="L892"></a><tt class="py-lineno"> 892</tt>  <tt class="py-line"><tt class="py-docstring">        >>> from <src> import *</tt> </tt>
+<a name="L893"></a><tt class="py-lineno"> 893</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L894"></a><tt class="py-lineno"> 894</tt>  <tt class="py-line"><tt class="py-docstring">    If L{IMPORT_HANDLING} is C{'parse'}, then first try to parse</tt> </tt>
+<a name="L895"></a><tt class="py-lineno"> 895</tt>  <tt class="py-line"><tt class="py-docstring">    the module C{M{<src>}}, and copy all of its exported variables</tt> </tt>
+<a name="L896"></a><tt class="py-lineno"> 896</tt>  <tt class="py-line"><tt class="py-docstring">    to C{parent_docs[-1]}.</tt> </tt>
+<a name="L897"></a><tt class="py-lineno"> 897</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L898"></a><tt class="py-lineno"> 898</tt>  <tt class="py-line"><tt class="py-docstring">    Otherwise, try to determine the names of the variables exported by</tt> </tt>
+<a name="L899"></a><tt class="py-lineno"> 899</tt>  <tt class="py-line"><tt class="py-docstring">    C{M{<src>}}, and create a new variable for each export.  If</tt> </tt>
+<a name="L900"></a><tt class="py-lineno"> 900</tt>  <tt class="py-line"><tt class="py-docstring">    L{IMPORT_STAR_HANDLING} is C{'parse'}, then the list of exports if</tt> </tt>
+<a name="L901"></a><tt class="py-lineno"> 901</tt>  <tt class="py-line"><tt class="py-docstring">    found by parsing C{M{<src>}}; if it is C{'introspect'}, then the</tt> </tt>
+<a name="L902"></a><tt class="py-lineno"> 902</tt>  <tt class="py-line"><tt class="py-docstring">    list of exports is found by importing and introspecting</tt> </tt>
+<a name="L903"></a><tt class="py-lineno"> 903</tt>  <tt class="py-line"><tt class="py-docstring">    C{M{<src>}}.</tt> </tt>
+<a name="L904"></a><tt class="py-lineno"> 904</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L905"></a><tt class="py-lineno"> 905</tt>  <tt class="py-line">    <tt class="py-comment"># This is redundant: already checked by caller.</tt> </tt>
+<a name="L906"></a><tt class="py-lineno"> 906</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">parent_docs</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt id="link-342" class="py-name"><a title="epydoc.apidoc.NamespaceDoc" class="py-name" href="#" onclick= [...]
+<a name="L907"></a><tt class="py-lineno"> 907</tt>  <tt class="py-line">     </tt>
+<a name="L908"></a><tt class="py-lineno"> 908</tt>  <tt class="py-line">    <tt class="py-comment"># If src is package-local, then convert it to a global name.</tt> </tt>
+<a name="L909"></a><tt class="py-lineno"> 909</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">src</tt> <tt class="py-op">=</tt> <tt id="link-343" class="py-name" targets="Function epydoc.docparser._global_name()=epydoc.docparser-module.html#_global_name"><a title="epydoc.docparser._global_name" class="py-name" href="#" onclick="return doclink('link-343', '_global_name', 'link-343');">_global_name</a></tt><tt class="py-op">(</tt><tt class="py-name">src</tt><t [...]
+<a name="L910"></a><tt class="py-lineno"> 910</tt>  <tt class="py-line"> </tt>
+<a name="L911"></a><tt class="py-lineno"> 911</tt>  <tt class="py-line">    <tt class="py-comment"># Record the import</tt> </tt>
+<a name="L912"></a><tt class="py-lineno"> 912</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">parent_docs</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-344" class="py-name"><a title="epydoc.apidoc.ModuleDoc.imports" class="py-name" href="#" onclick="return doclink('link-344', 'imports', 'link-72');">imports</a></tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">( [...]
+<a name="L913"></a><tt class="py-lineno"> 913</tt>  <tt class="py-line">     </tt>
+<a name="L914"></a><tt class="py-lineno"> 914</tt>  <tt class="py-line">    <tt class="py-comment"># [xx] add check for if we already have the source docs in our</tt> </tt>
+<a name="L915"></a><tt class="py-lineno"> 915</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># cache??</tt> </tt>
+<a name="L916"></a><tt class="py-lineno"> 916</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L917"></a><tt class="py-lineno"> 917</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt id="link-345" class="py-name"><a title="epydoc.docparser.IMPORT_HANDLING" class="py-name" href="#" onclick="return doclink('link-345', 'IMPORT_HANDLING', 'link-17');">IMPORT_HANDLING</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'parse'</tt> <tt class="py-keyword">or</tt> </tt>
+<a name="L918"></a><tt class="py-lineno"> 918</tt>  <tt class="py-line">        <tt id="link-346" class="py-name"><a title="epydoc.docparser.IMPORT_STAR_HANDLING" class="py-name" href="#" onclick="return doclink('link-346', 'IMPORT_STAR_HANDLING', 'link-18');">IMPORT_STAR_HANDLING</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'parse'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-comment"># [xx] is this ok?</tt> </tt>
+<a name="L919"></a><tt class="py-lineno"> 919</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> <tt class="py-name">module_doc</tt> <tt class="py-op">=</tt> <tt id="link-347" class="py-name"><a title="epydoc.docparser._find" class="py-name" href="#" onclick="return doclink('link-347', '_find', 'link-35');">_find</a></tt><tt class="py-op">(</tt><tt class="py-name">src</tt><tt class="py-op">)</tt> </tt>
+<a name="L920"></a><tt class="py-lineno"> 920</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">ImportError</tt><tt class="py-op">:</tt> <tt class="py-name">module_doc</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L921"></a><tt class="py-lineno"> 921</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">module_doc</tt><tt class="py-op">,</tt> <tt id="link-348" class="py-name"><a title="epydoc.apidoc.ModuleDoc" class="py-name" href="#" onclick="return doclink('link-348', 'ModuleDoc', 'link-68');">ModuleDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L922"></a><tt class="py-lineno"> 922</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt id="link-349" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-349', 'name', 'link-31');">name</a></tt><tt class="py-op">,</tt> <tt class="py-name">imp_var</tt> <tt class="py-keyword">in</tt> <tt class="py-name">module_doc</tt><tt class="py-op">.</tt><tt id="link-350" class="py-name"><a title="epydoc.apidoc [...]
+<a name="L923"></a><tt class="py-lineno"> 923</tt>  <tt class="py-line">                <tt class="py-comment"># [xx] this is not exactly correct, but close.  It</tt> </tt>
+<a name="L924"></a><tt class="py-lineno"> 924</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-comment"># does the wrong thing if a __var__ is explicitly</tt> </tt>
+<a name="L925"></a><tt class="py-lineno"> 925</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-comment"># listed in __all__.</tt> </tt>
+<a name="L926"></a><tt class="py-lineno"> 926</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">imp_var</tt><tt class="py-op">.</tt><tt id="link-351" class="py-name"><a title="epydoc.apidoc.VariableDoc.is_public" class="py-name" href="#" onclick="return doclink('link-351', 'is_public', 'link-113');">is_public</a></tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L927"></a><tt class="py-lineno"> 927</tt>  <tt class="py-line">                    <tt class="py-keyword">not</tt> <tt class="py-op">(</tt><tt id="link-352" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-352', 'name', 'link-31');">name</a></tt><tt class="py-op">.</tt><tt class="py-name">startswith</tt><tt class="py-op">(</tt><tt class="py-string">'__'</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <t [...]
+<a name="L928"></a><tt class="py-lineno"> 928</tt>  <tt class="py-line">                    <tt class="py-name">var_doc</tt> <tt class="py-op">=</tt> <tt id="link-354" class="py-name" targets="Function epydoc.docparser._add_import_var()=epydoc.docparser-module.html#_add_import_var"><a title="epydoc.docparser._add_import_var" class="py-name" href="#" onclick="return doclink('link-354', '_add_import_var', 'link-354');">_add_import_var</a></tt><tt class="py-op">(</tt><tt id="link-355" class [...]
+<a name="L929"></a><tt class="py-lineno"> 929</tt>  <tt class="py-line">                                              <tt class="py-name">parent_docs</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L930"></a><tt class="py-lineno"> 930</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt id="link-358" class="py-name"><a title="epydoc.docparser.IMPORT_HANDLING" class="py-name" href="#" onclick="return doclink('link-358', 'IMPORT_HANDLING', 'link-17');">IMPORT_HANDLING</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'parse'</tt><tt class="py-op">:</tt> </tt>
+<a name="L931"></a><tt class="py-lineno"> 931</tt>  <tt class="py-line">                        <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-359" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-359', 'value', 'link-135');">value</a></tt> <tt class="py-op">=</tt> <tt class="py-name">imp_var</tt><tt class="py-op">.</tt><tt id="link-360" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class= [...]
+<a name="L932"></a><tt class="py-lineno"> 932</tt>  <tt class="py-line"> </tt>
+<a name="L933"></a><tt class="py-lineno"> 933</tt>  <tt class="py-line">    <tt class="py-comment"># If we got here, then either IMPORT_HANDLING='link' or we</tt> </tt>
+<a name="L934"></a><tt class="py-lineno"> 934</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># failed to parse the `src` module.</tt> </tt>
+<a name="L935"></a><tt class="py-lineno"> 935</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt id="link-361" class="py-name"><a title="epydoc.docparser.IMPORT_STAR_HANDLING" class="py-name" href="#" onclick="return doclink('link-361', 'IMPORT_STAR_HANDLING', 'link-18');">IMPORT_STAR_HANDLING</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'introspect'</tt><tt class="py-op">:</tt> </tt>
+<a name="L936"></a><tt class="py-lineno"> 936</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> <tt class="py-name">module</tt> <tt class="py-op">=</tt> <tt class="py-name">__import__</tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">src</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py- [...]
+<a name="L937"></a><tt class="py-lineno"> 937</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-comment"># We couldn't import it.</tt> </tt>
+<a name="L938"></a><tt class="py-lineno"> 938</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">module</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-comment"># We couldn't import it.</tt> </tt>
+<a name="L939"></a><tt class="py-lineno"> 939</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">module</tt><tt class="py-op">,</tt> <tt class="py-string">'__all__'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L940"></a><tt class="py-lineno"> 940</tt>  <tt class="py-line">            <tt class="py-name">names</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">module</tt><tt class="py-op">.</tt><tt class="py-name">__all__</tt><tt class="py-op">)</tt> </tt>
+<a name="L941"></a><tt class="py-lineno"> 941</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L942"></a><tt class="py-lineno"> 942</tt>  <tt class="py-line">            <tt class="py-name">names</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">n</tt> <tt class="py-keyword">for</tt> <tt class="py-name">n</tt> <tt class="py-keyword">in</tt> <tt class="py-name">dir</tt><tt class="py-op">(</tt><tt class="py-name">module</tt><tt class="py-op">)</tt> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">n</tt><tt class="py- [...]
+<a name="L943"></a><tt class="py-lineno"> 943</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt id="link-362" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-362', 'name', 'link-31');">name</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">names</tt><tt class="py-op">:</tt> </tt>
+<a name="L944"></a><tt class="py-lineno"> 944</tt>  <tt class="py-line">            <tt id="link-363" class="py-name"><a title="epydoc.docparser._add_import_var" class="py-name" href="#" onclick="return doclink('link-363', '_add_import_var', 'link-354');">_add_import_var</a></tt><tt class="py-op">(</tt><tt id="link-364" class="py-name"><a title="epydoc.apidoc.DottedName" class="py-name" href="#" onclick="return doclink('link-364', 'DottedName', 'link-33');">DottedName</a></tt><tt class=" [...]
+</div><a name="L945"></a><tt class="py-lineno"> 945</tt>  <tt class="py-line"> </tt>
+<a name="_import_var"></a><div id="_import_var-def"><a name="L946"></a><tt class="py-lineno"> 946</tt> <a class="py-toggle" href="#" id="_import_var-toggle" onclick="return toggle('_import_var');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docparser-module.html#_import_var">_import_var</a><tt class="py-op">(</tt><tt class="py-param">name</tt><tt class="py-op">,</tt> <tt class="py-param">parent_docs</tt><tt class="py-op">)</tt><tt class="p [...]
+</div><div id="_import_var-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_import_var-expanded"><a name="L947"></a><tt class="py-lineno"> 947</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L948"></a><tt class="py-lineno"> 948</tt>  <tt class="py-line"><tt class="py-docstring">    Handle a statement of the form:</tt> </tt>
+<a name="L949"></a><tt class="py-lineno"> 949</tt>  <tt class="py-line"><tt class="py-docstring">        >>> import <name></tt> </tt>
+<a name="L950"></a><tt class="py-lineno"> 950</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L951"></a><tt class="py-lineno"> 951</tt>  <tt class="py-line"><tt class="py-docstring">    If L{IMPORT_HANDLING} is C{'parse'}, then first try to find</tt> </tt>
+<a name="L952"></a><tt class="py-lineno"> 952</tt>  <tt class="py-line"><tt class="py-docstring">    the value by parsing; and create an appropriate variable in</tt> </tt>
+<a name="L953"></a><tt class="py-lineno"> 953</tt>  <tt class="py-line"><tt class="py-docstring">    parentdoc.</tt> </tt>
+<a name="L954"></a><tt class="py-lineno"> 954</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L955"></a><tt class="py-lineno"> 955</tt>  <tt class="py-line"><tt class="py-docstring">    Otherwise, add a variable for the imported variable.  (More than</tt> </tt>
+<a name="L956"></a><tt class="py-lineno"> 956</tt>  <tt class="py-line"><tt class="py-docstring">    one variable may be created for cases like C{'import a.b'}, where</tt> </tt>
+<a name="L957"></a><tt class="py-lineno"> 957</tt>  <tt class="py-line"><tt class="py-docstring">    we need to create a variable C{'a'} in parentdoc containing a</tt> </tt>
+<a name="L958"></a><tt class="py-lineno"> 958</tt>  <tt class="py-line"><tt class="py-docstring">    proxy module; and a variable C{'b'} in the proxy module.</tt> </tt>
+<a name="L959"></a><tt class="py-lineno"> 959</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L960"></a><tt class="py-lineno"> 960</tt>  <tt class="py-line">    <tt class="py-comment"># This is redundant: already checked by caller.</tt> </tt>
+<a name="L961"></a><tt class="py-lineno"> 961</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">parent_docs</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt id="link-367" class="py-name"><a title="epydoc.apidoc.NamespaceDoc" class="py-name" href="#" onclick= [...]
+<a name="L962"></a><tt class="py-lineno"> 962</tt>  <tt class="py-line">     </tt>
+<a name="L963"></a><tt class="py-lineno"> 963</tt>  <tt class="py-line">    <tt class="py-comment"># If name is package-local, then convert it to a global name.</tt> </tt>
+<a name="L964"></a><tt class="py-lineno"> 964</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">src</tt> <tt class="py-op">=</tt> <tt id="link-368" class="py-name"><a title="epydoc.docparser._global_name" class="py-name" href="#" onclick="return doclink('link-368', '_global_name', 'link-343');">_global_name</a></tt><tt class="py-op">(</tt><tt id="link-369" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclin [...]
+<a name="L965"></a><tt class="py-lineno"> 965</tt>  <tt class="py-line">    <tt class="py-name">src_prefix</tt> <tt class="py-op">=</tt> <tt class="py-name">src</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">src</tt><tt class="py-op">)</tt><tt class="py-op">-</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-370" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="# [...]
+<a name="L966"></a><tt class="py-lineno"> 966</tt>  <tt class="py-line"> </tt>
+<a name="L967"></a><tt class="py-lineno"> 967</tt>  <tt class="py-line">    <tt class="py-comment"># Record the import</tt> </tt>
+<a name="L968"></a><tt class="py-lineno"> 968</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">parent_docs</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-371" class="py-name"><a title="epydoc.apidoc.ModuleDoc.imports" class="py-name" href="#" onclick="return doclink('link-371', 'imports', 'link-72');">imports</a></tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">( [...]
+<a name="L969"></a><tt class="py-lineno"> 969</tt>  <tt class="py-line">     </tt>
+<a name="L970"></a><tt class="py-lineno"> 970</tt>  <tt class="py-line">    <tt class="py-comment"># [xx] add check for if we already have the source docs in our</tt> </tt>
+<a name="L971"></a><tt class="py-lineno"> 971</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># cache??</tt> </tt>
+<a name="L972"></a><tt class="py-lineno"> 972</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L973"></a><tt class="py-lineno"> 973</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-373" class="py-name"><a title="epydoc.docparser.IMPORT_HANDLING" class="py-name" href="#" onclick="return doclink('link-373', 'IMPORT_HANDLING', 'link-17');">IMPORT_HANDLING</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'parse'</tt><tt class="py-op">:</tt> </tt>
+<a name="L974"></a><tt class="py-lineno"> 974</tt>  <tt class="py-line">        <tt class="py-comment"># Check to make sure that we can actually find the value.</tt> </tt>
+<a name="L975"></a><tt class="py-lineno"> 975</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> <tt class="py-name">val_doc</tt> <tt class="py-op">=</tt> <tt id="link-374" class="py-name"><a title="epydoc.docparser._find" class="py-name" href="#" onclick="return doclink('link-374', '_find', 'link-35');">_find</a></tt><tt class="py-op">(</tt><tt class="py-name">src</tt><tt class="py-op">)</tt> </tt>
+<a name="L976"></a><tt class="py-lineno"> 976</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">ImportError</tt><tt class="py-op">:</tt> <tt class="py-name">val_doc</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L977"></a><tt class="py-lineno"> 977</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">val_doc</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L978"></a><tt class="py-lineno"> 978</tt>  <tt class="py-line">            <tt class="py-comment"># We found it; but it's not the value itself we want to</tt> </tt>
+<a name="L979"></a><tt class="py-lineno"> 979</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># import, but the module containing it; so import that</tt> </tt>
+<a name="L980"></a><tt class="py-lineno"> 980</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># module (=top_mod) and create a variable for it.</tt> </tt>
+<a name="L981"></a><tt class="py-lineno"> 981</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">top_mod</tt> <tt class="py-op">=</tt> <tt class="py-name">src_prefix</tt><tt class="py-op">+</tt><tt id="link-375" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-375', 'name', 'link-31');">name</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L982"></a><tt class="py-lineno"> 982</tt>  <tt class="py-line">            <tt class="py-name">var_doc</tt> <tt class="py-op">=</tt> <tt id="link-376" class="py-name"><a title="epydoc.docparser._add_import_var" class="py-name" href="#" onclick="return doclink('link-376', '_add_import_var', 'link-354');">_add_import_var</a></tt><tt class="py-op">(</tt><tt class="py-name">top_mod</tt><tt class="py-op">,</tt> <tt id="link-377" class="py-name"><a title="epydoc.apidoc.VariableDoc.nam [...]
+<a name="L983"></a><tt class="py-lineno"> 983</tt>  <tt class="py-line">            <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-378" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-378', 'value', 'link-135');">value</a></tt> <tt class="py-op">=</tt> <tt id="link-379" class="py-name"><a title="epydoc.docparser._find" class="py-name" href="#" onclick="return doclink('link-379', '_find', 'link-35');"> [...]
+<a name="L984"></a><tt class="py-lineno"> 984</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> </tt>
+<a name="L985"></a><tt class="py-lineno"> 985</tt>  <tt class="py-line"> </tt>
+<a name="L986"></a><tt class="py-lineno"> 986</tt>  <tt class="py-line">    <tt class="py-comment"># If we got here, then either IMPORT_HANDLING='link', or we</tt> </tt>
+<a name="L987"></a><tt class="py-lineno"> 987</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># did not successfully find the value's docs by parsing; use</tt> </tt>
+<a name="L988"></a><tt class="py-lineno"> 988</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># a variable with an UNKNOWN value.</tt> </tt>
+<a name="L989"></a><tt class="py-lineno"> 989</tt>  <tt class="py-line"><tt class="py-comment"></tt>     </tt>
+<a name="L990"></a><tt class="py-lineno"> 990</tt>  <tt class="py-line">    <tt class="py-comment"># Create any necessary intermediate proxy module values.</tt> </tt>
+<a name="L991"></a><tt class="py-lineno"> 991</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-382" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-382', 'container', 'link-250');">container</a></tt> <tt class="py-op">=</tt> <tt class="py-name">parent_docs</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L992"></a><tt class="py-lineno"> 992</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">i</tt><tt class="py-op">,</tt> <tt class="py-name">identifier</tt> <tt class="py-keyword">in</tt> <tt class="py-name">enumerate</tt><tt class="py-op">(</tt><tt id="link-383" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-383', 'name', 'link-31');">name</a></tt><tt class="py-op">[</tt><tt class="py [...]
+<a name="L993"></a><tt class="py-lineno"> 993</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">identifier</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt id="link-384" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-384', 'container', 'link-250');">container</a></tt><tt class="py-op">.</tt><tt id="link-385" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-385', 'variables', 'link-70');">variables</a></tt> <tt class="py-keyword">or</tt> </tt>
+<a name="L994"></a><tt class="py-lineno"> 994</tt>  <tt class="py-line">            <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-386" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-386', 'container', 'link-250');">container</a></tt><tt class="py-op">.</tt><tt id="link-387" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-387', 'variables', 'link-70');">variables</a></tt><tt class="py-op">[</tt><tt class="py-name">identifier</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt id="link-388" class="py-na [...]
+<a name="L995"></a><tt class="py-lineno"> 995</tt>  <tt class="py-line">            <tt class="py-name">var_doc</tt> <tt class="py-op">=</tt> <tt id="link-389" class="py-name"><a title="epydoc.docparser._add_import_var" class="py-name" href="#" onclick="return doclink('link-389', '_add_import_var', 'link-354');">_add_import_var</a></tt><tt class="py-op">(</tt><tt id="link-390" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link [...]
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-391', 'container', 'link-250');">container</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L996"></a><tt class="py-lineno"> 996</tt>  <tt class="py-line">            <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-392" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-392', 'value', 'link-135');">value</a></tt> <tt class="py-op">=</tt> <tt id="link-393" class="py-name"><a title="epydoc.apidoc.ModuleDoc" class="py-name" href="#" onclick="return doclink('link-393', 'ModuleDoc', 'link-68 [...]
+<a name="L997"></a><tt class="py-lineno"> 997</tt>  <tt class="py-line">                                      <tt id="link-396" class="py-name" targets="Variable epydoc.apidoc.ValueDoc.proxy_for=epydoc.apidoc.ValueDoc-class.html#proxy_for"><a title="epydoc.apidoc.ValueDoc.proxy_for" class="py-name" href="#" onclick="return doclink('link-396', 'proxy_for', 'link-396');">proxy_for</a></tt><tt class="py-op">=</tt><tt class="py-name">src_prefix</tt><tt class="py-op">+</tt><tt id="link-397" c [...]
+<a name="L998"></a><tt class="py-lineno"> 998</tt>  <tt class="py-line">                                      <tt id="link-398" class="py-name"><a title="epydoc.apidoc.ModuleDoc.submodules" class="py-name" href="#" onclick="return doclink('link-398', 'submodules', 'link-77');">submodules</a></tt><tt class="py-op">=</tt><tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">,</tt>  </tt>
+<a name="L999"></a><tt class="py-lineno"> 999</tt>  <tt class="py-line">                                      <tt id="link-399" class="py-name"><a title="epydoc.apidoc.APIDoc.docs_extracted_by" class="py-name" href="#" onclick="return doclink('link-399', 'docs_extracted_by', 'link-78');">docs_extracted_by</a></tt><tt class="py-op">=</tt><tt class="py-string">'parser'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1000"></a><tt class="py-lineno">1000</tt>  <tt class="py-line">        <tt id="link-400" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-400', 'container', 'link-250');">container</a></tt> <tt class="py-op">=</tt> <tt id="link-401" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-401', 'container', 'link-250');">container</a></tt><tt class="py-op">.</tt><tt id="link-402" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-402', 'variables', 'link-70');">variables</a></tt><tt class="py-op">[</tt><tt class="py-name">identifier</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-403" class="py-nam [...]
+<a name="L1001"></a><tt class="py-lineno">1001</tt>  <tt class="py-line"> </tt>
+<a name="L1002"></a><tt class="py-lineno">1002</tt>  <tt class="py-line">    <tt class="py-comment"># Add the variable to the container.</tt> </tt>
+<a name="L1003"></a><tt class="py-lineno">1003</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-404" class="py-name"><a title="epydoc.docparser._add_import_var" class="py-name" href="#" onclick="return doclink('link-404', '_add_import_var', 'link-354');">_add_import_var</a></tt><tt class="py-op">(</tt><tt class="py-name">src</tt><tt class="py-op">,</tt> <tt id="link-405" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="retu [...]
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-406', 'container', 'link-250');">container</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1004"></a><tt class="py-lineno">1004</tt>  <tt class="py-line"> </tt>
+<a name="_import_var_as"></a><div id="_import_var_as-def"><a name="L1005"></a><tt class="py-lineno">1005</tt> <a class="py-toggle" href="#" id="_import_var_as-toggle" onclick="return toggle('_import_var_as');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docparser-module.html#_import_var_as">_import_var_as</a><tt class="py-op">(</tt><tt class="py-param">src</tt><tt class="py-op">,</tt> <tt class="py-param">name</tt><tt class="py-op">,</tt>  [...]
+</div><div id="_import_var_as-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_import_var_as-expanded"><a name="L1006"></a><tt class="py-lineno">1006</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L1007"></a><tt class="py-lineno">1007</tt>  <tt class="py-line"><tt class="py-docstring">    Handle a statement of the form:</tt> </tt>
+<a name="L1008"></a><tt class="py-lineno">1008</tt>  <tt class="py-line"><tt class="py-docstring">        >>> import src as name</tt> </tt>
+<a name="L1009"></a><tt class="py-lineno">1009</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt>
+<a name="L1010"></a><tt class="py-lineno">1010</tt>  <tt class="py-line"><tt class="py-docstring">    If L{IMPORT_HANDLING} is C{'parse'}, then first try to find</tt> </tt>
+<a name="L1011"></a><tt class="py-lineno">1011</tt>  <tt class="py-line"><tt class="py-docstring">    the value by parsing; and create an appropriate variable in</tt> </tt>
+<a name="L1012"></a><tt class="py-lineno">1012</tt>  <tt class="py-line"><tt class="py-docstring">    parentdoc.</tt> </tt>
+<a name="L1013"></a><tt class="py-lineno">1013</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1014"></a><tt class="py-lineno">1014</tt>  <tt class="py-line"><tt class="py-docstring">    Otherwise, create a variables with its C{imported_from} attribute</tt> </tt>
+<a name="L1015"></a><tt class="py-lineno">1015</tt>  <tt class="py-line"><tt class="py-docstring">    pointing to the imported object.</tt> </tt>
+<a name="L1016"></a><tt class="py-lineno">1016</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1017"></a><tt class="py-lineno">1017</tt>  <tt class="py-line">    <tt class="py-comment"># This is redundant: already checked by caller.</tt> </tt>
+<a name="L1018"></a><tt class="py-lineno">1018</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">parent_docs</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt id="link-407" class="py-name"><a title="epydoc.apidoc.NamespaceDoc" class="py-name" href="#" onclick [...]
+<a name="L1019"></a><tt class="py-lineno">1019</tt>  <tt class="py-line">     </tt>
+<a name="L1020"></a><tt class="py-lineno">1020</tt>  <tt class="py-line">    <tt class="py-comment"># If src is package-local, then convert it to a global name.</tt> </tt>
+<a name="L1021"></a><tt class="py-lineno">1021</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">src</tt> <tt class="py-op">=</tt> <tt id="link-408" class="py-name"><a title="epydoc.docparser._global_name" class="py-name" href="#" onclick="return doclink('link-408', '_global_name', 'link-343');">_global_name</a></tt><tt class="py-op">(</tt><tt class="py-name">src</tt><tt class="py-op">,</tt> <tt class="py-name">parent_docs</tt><tt class="py-op">)</tt> </tt>
+<a name="L1022"></a><tt class="py-lineno">1022</tt>  <tt class="py-line">     </tt>
+<a name="L1023"></a><tt class="py-lineno">1023</tt>  <tt class="py-line">    <tt class="py-comment"># Record the import</tt> </tt>
+<a name="L1024"></a><tt class="py-lineno">1024</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">parent_docs</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-409" class="py-name"><a title="epydoc.apidoc.ModuleDoc.imports" class="py-name" href="#" onclick="return doclink('link-409', 'imports', 'link-72');">imports</a></tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op"> [...]
+<a name="L1025"></a><tt class="py-lineno">1025</tt>  <tt class="py-line">     </tt>
+<a name="L1026"></a><tt class="py-lineno">1026</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-410" class="py-name"><a title="epydoc.docparser.IMPORT_HANDLING" class="py-name" href="#" onclick="return doclink('link-410', 'IMPORT_HANDLING', 'link-17');">IMPORT_HANDLING</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'parse'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1027"></a><tt class="py-lineno">1027</tt>  <tt class="py-line">        <tt class="py-comment"># Parse the value and create a variable for it.</tt> </tt>
+<a name="L1028"></a><tt class="py-lineno">1028</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> <tt class="py-name">val_doc</tt> <tt class="py-op">=</tt> <tt id="link-411" class="py-name"><a title="epydoc.docparser._find" class="py-name" href="#" onclick="return doclink('link-411', '_find', 'link-35');">_find</a></tt><tt class="py-op">(</tt><tt class="py-name">src</tt><tt class="py-op">)</tt> </tt>
+<a name="L1029"></a><tt class="py-lineno">1029</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">ImportError</tt><tt class="py-op">:</tt> <tt class="py-name">val_doc</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L1030"></a><tt class="py-lineno">1030</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">val_doc</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1031"></a><tt class="py-lineno">1031</tt>  <tt class="py-line">            <tt class="py-name">var_doc</tt> <tt class="py-op">=</tt> <tt id="link-412" class="py-name"><a title="epydoc.apidoc.VariableDoc" class="py-name" href="#" onclick="return doclink('link-412', 'VariableDoc', 'link-249');">VariableDoc</a></tt><tt class="py-op">(</tt><tt id="link-413" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-413', 'name', [...]
+<a name="L1032"></a><tt class="py-lineno">1032</tt>  <tt class="py-line">                                  <tt id="link-416" class="py-name"><a title="epydoc.apidoc.VariableDoc.is_imported" class="py-name" href="#" onclick="return doclink('link-416', 'is_imported', 'link-115');">is_imported</a></tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> <tt id="link-417" class="py-name"><a title="epydoc.apidoc.VariableDoc.is_alias" class="py-name" href="#" onclick=" [...]
+<a name="L1033"></a><tt class="py-lineno">1033</tt>  <tt class="py-line">                                  <tt id="link-418" class="py-name"><a title="epydoc.apidoc.VariableDoc.imported_from" class="py-name" href="#" onclick="return doclink('link-418', 'imported_from', 'link-167');">imported_from</a></tt><tt class="py-op">=</tt><tt class="py-name">src</tt><tt class="py-op">,</tt> </tt>
+<a name="L1034"></a><tt class="py-lineno">1034</tt>  <tt class="py-line">                                  <tt id="link-419" class="py-name"><a title="epydoc.apidoc.APIDoc.docs_extracted_by" class="py-name" href="#" onclick="return doclink('link-419', 'docs_extracted_by', 'link-78');">docs_extracted_by</a></tt><tt class="py-op">=</tt><tt class="py-string">'parser'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1035"></a><tt class="py-lineno">1035</tt>  <tt class="py-line">            <tt id="link-420" class="py-name"><a title="epydoc.docparser.set_variable" class="py-name" href="#" onclick="return doclink('link-420', 'set_variable', 'link-304');">set_variable</a></tt><tt class="py-op">(</tt><tt class="py-name">parent_docs</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">var_doc</tt><tt [...]
+<a name="L1036"></a><tt class="py-lineno">1036</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> </tt>
+<a name="L1037"></a><tt class="py-lineno">1037</tt>  <tt class="py-line"> </tt>
+<a name="L1038"></a><tt class="py-lineno">1038</tt>  <tt class="py-line">    <tt class="py-comment"># If we got here, then either IMPORT_HANDLING='link', or we</tt> </tt>
+<a name="L1039"></a><tt class="py-lineno">1039</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># did not successfully find the value's docs by parsing; use a</tt> </tt>
+<a name="L1040"></a><tt class="py-lineno">1040</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># variable with a proxy value.</tt> </tt>
+<a name="L1041"></a><tt class="py-lineno">1041</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-421" class="py-name"><a title="epydoc.docparser._add_import_var" class="py-name" href="#" onclick="return doclink('link-421', '_add_import_var', 'link-354');">_add_import_var</a></tt><tt class="py-op">(</tt><tt class="py-name">src</tt><tt class="py-op">,</tt> <tt id="link-422" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="retu [...]
+</div><a name="L1042"></a><tt class="py-lineno">1042</tt>  <tt class="py-line"> </tt>
+<a name="_add_import_var"></a><div id="_add_import_var-def"><a name="L1043"></a><tt class="py-lineno">1043</tt> <a class="py-toggle" href="#" id="_add_import_var-toggle" onclick="return toggle('_add_import_var');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docparser-module.html#_add_import_var">_add_import_var</a><tt class="py-op">(</tt><tt class="py-param">src</tt><tt class="py-op">,</tt> <tt class="py-param">name</tt><tt class="py-op">, [...]
+</div><div id="_add_import_var-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_add_import_var-expanded"><a name="L1044"></a><tt class="py-lineno">1044</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L1045"></a><tt class="py-lineno">1045</tt>  <tt class="py-line"><tt class="py-docstring">    Add a new imported variable named C{name} to C{container}, with</tt> </tt>
+<a name="L1046"></a><tt class="py-lineno">1046</tt>  <tt class="py-line"><tt class="py-docstring">    C{imported_from=src}.</tt> </tt>
+<a name="L1047"></a><tt class="py-lineno">1047</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1048"></a><tt class="py-lineno">1048</tt>  <tt class="py-line">    <tt class="py-name">var_doc</tt> <tt class="py-op">=</tt> <tt id="link-423" class="py-name"><a title="epydoc.apidoc.VariableDoc" class="py-name" href="#" onclick="return doclink('link-423', 'VariableDoc', 'link-249');">VariableDoc</a></tt><tt class="py-op">(</tt><tt id="link-424" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-424', 'name', 'link-3 [...]
+<a name="L1049"></a><tt class="py-lineno">1049</tt>  <tt class="py-line">                          <tt id="link-428" class="py-name"><a title="epydoc.apidoc.VariableDoc.imported_from" class="py-name" href="#" onclick="return doclink('link-428', 'imported_from', 'link-167');">imported_from</a></tt><tt class="py-op">=</tt><tt class="py-name">src</tt><tt class="py-op">,</tt> <tt id="link-429" class="py-name"><a title="epydoc.apidoc.APIDoc.docs_extracted_by" class="py-name" href="#" onclick= [...]
+<a name="L1050"></a><tt class="py-lineno">1050</tt>  <tt class="py-line">    <tt id="link-430" class="py-name"><a title="epydoc.docparser.set_variable" class="py-name" href="#" onclick="return doclink('link-430', 'set_variable', 'link-304');">set_variable</a></tt><tt class="py-op">(</tt><tt id="link-431" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-431', 'container', 'link-250');">container</a></tt><tt class="py-op">,</tt> <tt class="py-name">var_doc</tt><tt class="py-op">)</tt> </tt>
+<a name="L1051"></a><tt class="py-lineno">1051</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">var_doc</tt> </tt>
+</div><a name="L1052"></a><tt class="py-lineno">1052</tt>  <tt class="py-line"> </tt>
+<a name="_global_name"></a><div id="_global_name-def"><a name="L1053"></a><tt class="py-lineno">1053</tt> <a class="py-toggle" href="#" id="_global_name-toggle" onclick="return toggle('_global_name');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docparser-module.html#_global_name">_global_name</a><tt class="py-op">(</tt><tt class="py-param">name</tt><tt class="py-op">,</tt> <tt class="py-param">parent_docs</tt><tt class="py-op">)</tt><tt c [...]
+</div><div id="_global_name-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_global_name-expanded"><a name="L1054"></a><tt class="py-lineno">1054</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L1055"></a><tt class="py-lineno">1055</tt>  <tt class="py-line"><tt class="py-docstring">    If the given name is package-local (relative to the current</tt> </tt>
+<a name="L1056"></a><tt class="py-lineno">1056</tt>  <tt class="py-line"><tt class="py-docstring">    context, as determined by C{parent_docs}), then convert it</tt> </tt>
+<a name="L1057"></a><tt class="py-lineno">1057</tt>  <tt class="py-line"><tt class="py-docstring">    to a global name.</tt> </tt>
+<a name="L1058"></a><tt class="py-lineno">1058</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1059"></a><tt class="py-lineno">1059</tt>  <tt class="py-line">    <tt class="py-comment"># Get the containing package from parent_docs.</tt> </tt>
+<a name="L1060"></a><tt class="py-lineno">1060</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">parent_docs</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-432" class="py-name"><a title="epydoc.apidoc.ModuleDoc.is_package" class="py-name" href="#" onclick="return doclink('link-432', 'is_package', 'link-76');">is_package</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1061"></a><tt class="py-lineno">1061</tt>  <tt class="py-line">        <tt id="link-433" class="py-name"><a title="epydoc.apidoc.ModuleDoc.package" class="py-name" href="#" onclick="return doclink('link-433', 'package', 'link-75');">package</a></tt> <tt class="py-op">=</tt> <tt class="py-name">parent_docs</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L1062"></a><tt class="py-lineno">1062</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1063"></a><tt class="py-lineno">1063</tt>  <tt class="py-line">        <tt id="link-434" class="py-name"><a title="epydoc.apidoc.ModuleDoc.package" class="py-name" href="#" onclick="return doclink('link-434', 'package', 'link-75');">package</a></tt> <tt class="py-op">=</tt> <tt class="py-name">parent_docs</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-435" class="py-name"><a title="epydoc.apidoc.ModuleDoc.pac [...]
+<a name="L1064"></a><tt class="py-lineno">1064</tt>  <tt class="py-line"> </tt>
+<a name="L1065"></a><tt class="py-lineno">1065</tt>  <tt class="py-line">    <tt class="py-comment"># Check each package (from closest to furthest) to see if it</tt> </tt>
+<a name="L1066"></a><tt class="py-lineno">1066</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># contains a module named name[0]; if so, then treat `name` as</tt> </tt>
+<a name="L1067"></a><tt class="py-lineno">1067</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># relative to that package.</tt> </tt>
+<a name="L1068"></a><tt class="py-lineno">1068</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">while</tt> <tt id="link-436" class="py-name"><a title="epydoc.apidoc.ModuleDoc.package" class="py-name" href="#" onclick="return doclink('link-436', 'package', 'link-75');">package</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-437" class="py-name" [...]
+<a name="L1069"></a><tt class="py-lineno">1069</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L1070"></a><tt class="py-lineno">1070</tt>  <tt class="py-line">            <tt class="py-name">fp</tt> <tt class="py-op">=</tt> <tt class="py-name">imp</tt><tt class="py-op">.</tt><tt class="py-name">find_module</tt><tt class="py-op">(</tt><tt id="link-438" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-438', 'name', 'link-31');">name</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">] [...]
+<a name="L1071"></a><tt class="py-lineno">1071</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">fp</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> <tt class="py-name">fp</tt><tt class="py-op">.</tt><tt id="link-441" class="py-name"><a title="epydoc.cli.HTMLLogger.close
+epydoc.docintrospecter._DevNull.close
+epydoc.log.Logger.close
+epydoc.log.close" class="py-name" href="#" onclick="return doclink('link-441', 'close', 'link-189');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1072"></a><tt class="py-lineno">1072</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">ImportError</tt><tt class="py-op">:</tt> </tt>
+<a name="L1073"></a><tt class="py-lineno">1073</tt>  <tt class="py-line">            <tt class="py-comment"># No submodule found here; try the next package up.</tt> </tt>
+<a name="L1074"></a><tt class="py-lineno">1074</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt id="link-442" class="py-name"><a title="epydoc.apidoc.ModuleDoc.package" class="py-name" href="#" onclick="return doclink('link-442', 'package', 'link-75');">package</a></tt> <tt class="py-op">=</tt> <tt id="link-443" class="py-name"><a title="epydoc.apidoc.ModuleDoc.package" class="py-name" href="#" onclick="return doclink('link-443', 'package', 'link-75');">package</a></ [...]
+<a name="L1075"></a><tt class="py-lineno">1075</tt>  <tt class="py-line">            <tt class="py-keyword">continue</tt> </tt>
+<a name="L1076"></a><tt class="py-lineno">1076</tt>  <tt class="py-line">        <tt class="py-comment"># A submodule was found; return its name.</tt> </tt>
+<a name="L1077"></a><tt class="py-lineno">1077</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">return</tt> <tt id="link-445" class="py-name"><a title="epydoc.apidoc.ModuleDoc.package" class="py-name" href="#" onclick="return doclink('link-445', 'package', 'link-75');">package</a></tt><tt class="py-op">.</tt><tt id="link-446" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-446', 'canonical_name', 'link-37');">canonical_name</a></tt> <tt class="py-op">+</tt> <tt id="link-447" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-447', 'name', 'link-31');">name</a></tt> </tt>
+<a name="L1078"></a><tt class="py-lineno">1078</tt>  <tt class="py-line"> </tt>
+<a name="L1079"></a><tt class="py-lineno">1079</tt>  <tt class="py-line">    <tt class="py-comment"># We didn't find any package containing `name`; so just return</tt> </tt>
+<a name="L1080"></a><tt class="py-lineno">1080</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># `name` as-is.</tt> </tt>
+<a name="L1081"></a><tt class="py-lineno">1081</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">return</tt> <tt id="link-448" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-448', 'name', 'link-31');">name</a></tt> </tt>
+</div><a name="L1082"></a><tt class="py-lineno">1082</tt>  <tt class="py-line"> </tt>
+<a name="L1083"></a><tt class="py-lineno">1083</tt>  <tt class="py-line"><tt class="py-comment">#/////////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L1084"></a><tt class="py-lineno">1084</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Line handler: assignment</tt> </tt>
+<a name="L1085"></a><tt class="py-lineno">1085</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#/////////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L1086"></a><tt class="py-lineno">1086</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="process_assignment"></a><div id="process_assignment-def"><a name="L1087"></a><tt class="py-lineno">1087</tt> <a class="py-toggle" href="#" id="process_assignment-toggle" onclick="return toggle('process_assignment');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docparser-module.html#process_assignment">process_assignment</a><tt class="py-op">(</tt><tt class="py-param">line</tt><tt class="py-op">,</tt> <tt class="py-param">parent_do [...]
+<a name="L1088"></a><tt class="py-lineno">1088</tt>  <tt class="py-line">                       <tt class="py-param">comments</tt><tt class="py-op">,</tt> <tt class="py-param">decorators</tt><tt class="py-op">,</tt> <tt class="py-param">encoding</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="process_assignment-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="process_assignment-expanded"><a name="L1089"></a><tt class="py-lineno">1089</tt>  <tt class="py-line">    <tt class="py-comment"># Divide the assignment statement into its pieces.</tt> </tt>
+<a name="L1090"></a><tt class="py-lineno">1090</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">pieces</tt> <tt class="py-op">=</tt> <tt id="link-449" class="py-name"><a title="epydoc.docparser.split_on" class="py-name" href="#" onclick="return doclink('link-449', 'split_on', 'link-296');">split_on</a></tt><tt class="py-op">(</tt><tt class="py-name">line</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">token</tt><tt class="py-op">.</tt [...]
+<a name="L1091"></a><tt class="py-lineno">1091</tt>  <tt class="py-line"> </tt>
+<a name="L1092"></a><tt class="py-lineno">1092</tt>  <tt class="py-line">    <tt class="py-name">lhs_pieces</tt> <tt class="py-op">=</tt> <tt class="py-name">pieces</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L1093"></a><tt class="py-lineno">1093</tt>  <tt class="py-line">    <tt class="py-name">rhs</tt> <tt class="py-op">=</tt> <tt class="py-name">pieces</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L1094"></a><tt class="py-lineno">1094</tt>  <tt class="py-line"> </tt>
+<a name="L1095"></a><tt class="py-lineno">1095</tt>  <tt class="py-line">    <tt class="py-comment"># Decide whether the variable is an instance variable or not.</tt> </tt>
+<a name="L1096"></a><tt class="py-lineno">1096</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># If it's an instance var, then discard the value.</tt> </tt>
+<a name="L1097"></a><tt class="py-lineno">1097</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-450" class="py-name"><a title="epydoc.apidoc.VariableDoc.is_instvar" class="py-name" href="#" onclick="return doclink('link-450', 'is_instvar', 'link-302');">is_instvar</a></tt> <tt class="py-op">=</tt> <tt id="link-451" class="py-name" targets="Function epydoc.docparser.lhs_is_instvar()=epydoc.docparser-module.html#lhs_is_instvar"><a title="epydoc.docparser.lhs_is_instva [...]
+<a name="L1098"></a><tt class="py-lineno">1098</tt>  <tt class="py-line">     </tt>
+<a name="L1099"></a><tt class="py-lineno">1099</tt>  <tt class="py-line">    <tt class="py-comment"># if it's not an instance var, and we're not in a namespace,</tt> </tt>
+<a name="L1100"></a><tt class="py-lineno">1100</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># then it's just a local var -- so ignore it.</tt> </tt>
+<a name="L1101"></a><tt class="py-lineno">1101</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-op">(</tt><tt id="link-452" class="py-name"><a title="epydoc.apidoc.VariableDoc.is_instvar" class="py-name" href="#" onclick="return doclink('link-452', 'is_instvar', 'link-302');">is_instvar</a></tt> <tt class="py-keyword">or</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name" [...]
+<a name="L1102"></a><tt class="py-lineno">1102</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
+<a name="L1103"></a><tt class="py-lineno">1103</tt>  <tt class="py-line">     </tt>
+<a name="L1104"></a><tt class="py-lineno">1104</tt>  <tt class="py-line">    <tt class="py-comment"># Evaluate the right hand side.</tt> </tt>
+<a name="L1105"></a><tt class="py-lineno">1105</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-454" class="py-name"><a title="epydoc.apidoc.VariableDoc.is_instvar" class="py-name" href="#" onclick="return doclink('link-454', 'is_instvar', 'link-302');">is_instvar</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1106"></a><tt class="py-lineno">1106</tt>  <tt class="py-line">        <tt class="py-name">rhs_val</tt><tt class="py-op">,</tt> <tt id="link-455" class="py-name"><a title="epydoc.apidoc.VariableDoc.is_alias" class="py-name" href="#" onclick="return doclink('link-455', 'is_alias', 'link-300');">is_alias</a></tt> <tt class="py-op">=</tt> <tt id="link-456" class="py-name" targets="Function epydoc.docparser.rhs_to_valuedoc()=epydoc.docparser-module.html#rhs_to_valuedoc"><a title="e [...]
+<a name="L1107"></a><tt class="py-lineno">1107</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1108"></a><tt class="py-lineno">1108</tt>  <tt class="py-line">        <tt class="py-name">rhs_val</tt><tt class="py-op">,</tt> <tt id="link-457" class="py-name"><a title="epydoc.apidoc.VariableDoc.is_alias" class="py-name" href="#" onclick="return doclink('link-457', 'is_alias', 'link-300');">is_alias</a></tt> <tt class="py-op">=</tt> <tt id="link-458" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-458', 'UNKNOWN', 'link [...]
+<a name="L1109"></a><tt class="py-lineno">1109</tt>  <tt class="py-line"> </tt>
+<a name="L1110"></a><tt class="py-lineno">1110</tt>  <tt class="py-line">    <tt class="py-comment"># Assign the right hand side value to each left hand side.</tt> </tt>
+<a name="L1111"></a><tt class="py-lineno">1111</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># (Do the rightmost assignment first)</tt> </tt>
+<a name="L1112"></a><tt class="py-lineno">1112</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">lhs_pieces</tt><tt class="py-op">.</tt><tt class="py-name">reverse</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1113"></a><tt class="py-lineno">1113</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">lhs</tt> <tt class="py-keyword">in</tt> <tt class="py-name">lhs_pieces</tt><tt class="py-op">:</tt> </tt>
+<a name="L1114"></a><tt class="py-lineno">1114</tt>  <tt class="py-line">        <tt class="py-comment"># Try treating the LHS as a simple dotted name.</tt> </tt>
+<a name="L1115"></a><tt class="py-lineno">1115</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> <tt class="py-name">lhs_name</tt> <tt class="py-op">=</tt> <tt id="link-459" class="py-name"><a title="epydoc.docparser.parse_dotted_name" class="py-name" href="#" onclick="return doclink('link-459', 'parse_dotted_name', 'link-295');">parse_dotted_name</a></tt><tt class="py-op">(</tt><tt class="py-name">lhs</tt><tt class="py- [...]
+<a name="L1116"></a><tt class="py-lineno">1116</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt><tt class="py-op">:</tt> <tt class="py-name">lhs_name</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L1117"></a><tt class="py-lineno">1117</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">lhs_name</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1118"></a><tt class="py-lineno">1118</tt>  <tt class="py-line">            <tt class="py-name">lhs_parent</tt> <tt class="py-op">=</tt> <tt id="link-460" class="py-name"><a title="epydoc.docparser.get_lhs_parent" class="py-name" href="#" onclick="return doclink('link-460', 'get_lhs_parent', 'link-297');">get_lhs_parent</a></tt><tt class="py-op">(</tt><tt class="py-name">lhs_name</tt><tt class="py-op">,</tt> <tt class="py-name">parent_docs</tt><tt class="py-op">)</tt> </tt>
+<a name="L1119"></a><tt class="py-lineno">1119</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">lhs_parent</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> <tt class="py-keyword">continue</tt> </tt>
+<a name="L1120"></a><tt class="py-lineno">1120</tt>  <tt class="py-line"> </tt>
+<a name="L1121"></a><tt class="py-lineno">1121</tt>  <tt class="py-line">            <tt class="py-comment"># Skip a special class variable.</tt> </tt>
+<a name="L1122"></a><tt class="py-lineno">1122</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt class="py-name">lhs_name</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">'__slots__'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1123"></a><tt class="py-lineno">1123</tt>  <tt class="py-line">                <tt class="py-keyword">continue</tt> </tt>
+<a name="L1124"></a><tt class="py-lineno">1124</tt>  <tt class="py-line"> </tt>
+<a name="L1125"></a><tt class="py-lineno">1125</tt>  <tt class="py-line">            <tt class="py-comment"># Create the VariableDoc.</tt> </tt>
+<a name="L1126"></a><tt class="py-lineno">1126</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">var_doc</tt> <tt class="py-op">=</tt> <tt id="link-461" class="py-name"><a title="epydoc.apidoc.VariableDoc" class="py-name" href="#" onclick="return doclink('link-461', 'VariableDoc', 'link-249');">VariableDoc</a></tt><tt class="py-op">(</tt><tt id="link-462" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return [...]
+<a name="L1127"></a><tt class="py-lineno">1127</tt>  <tt class="py-line">                                  <tt id="link-464" class="py-name"><a title="epydoc.apidoc.VariableDoc.is_imported" class="py-name" href="#" onclick="return doclink('link-464', 'is_imported', 'link-115');">is_imported</a></tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> <tt id="link-465" class="py-name"><a title="epydoc.apidoc.VariableDoc.is_alias" class="py-name" href="#" onclick= [...]
+<a name="L1128"></a><tt class="py-lineno">1128</tt>  <tt class="py-line">                                  <tt id="link-467" class="py-name"><a title="epydoc.apidoc.VariableDoc.is_instvar" class="py-name" href="#" onclick="return doclink('link-467', 'is_instvar', 'link-302');">is_instvar</a></tt><tt class="py-op">=</tt><tt id="link-468" class="py-name"><a title="epydoc.apidoc.VariableDoc.is_instvar" class="py-name" href="#" onclick="return doclink('link-468', 'is_instvar', 'link-302');"> [...]
+<a name="L1129"></a><tt class="py-lineno">1129</tt>  <tt class="py-line">                                  <tt id="link-469" class="py-name"><a title="epydoc.apidoc.APIDoc.docs_extracted_by" class="py-name" href="#" onclick="return doclink('link-469', 'docs_extracted_by', 'link-78');">docs_extracted_by</a></tt><tt class="py-op">=</tt><tt class="py-string">'parser'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1130"></a><tt class="py-lineno">1130</tt>  <tt class="py-line">            <tt class="py-comment"># Extract a docstring from the comments, when present,</tt> </tt>
+<a name="L1131"></a><tt class="py-lineno">1131</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># but only if there's a single LHS.</tt> </tt>
+<a name="L1132"></a><tt class="py-lineno">1132</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">lhs_pieces</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L1133"></a><tt class="py-lineno">1133</tt>  <tt class="py-line">                <tt id="link-470" class="py-name" targets="Function epydoc.docparser.add_docstring_from_comments()=epydoc.docparser-module.html#add_docstring_from_comments"><a title="epydoc.docparser.add_docstring_from_comments" class="py-name" href="#" onclick="return doclink('link-470', 'add_docstring_from_comments', 'link-470');">add_docstring_from_comments</a></tt><tt class="py-op">(</tt><tt class="py-name">var_ [...]
+<a name="L1134"></a><tt class="py-lineno">1134</tt>  <tt class="py-line"> </tt>
+<a name="L1135"></a><tt class="py-lineno">1135</tt>  <tt class="py-line">            <tt class="py-comment"># Assign the variable to the containing namespace,</tt> </tt>
+<a name="L1136"></a><tt class="py-lineno">1136</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># *unless* the variable is an instance variable</tt> </tt>
+<a name="L1137"></a><tt class="py-lineno">1137</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># without a comment docstring.  In that case, we'll</tt> </tt>
+<a name="L1138"></a><tt class="py-lineno">1138</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># only want to add it if we later discover that it's</tt> </tt>
+<a name="L1139"></a><tt class="py-lineno">1139</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># followed by a variable docstring.  If it is, then</tt> </tt>
+<a name="L1140"></a><tt class="py-lineno">1140</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># process_docstring will take care of adding it to the</tt> </tt>
+<a name="L1141"></a><tt class="py-lineno">1141</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># containing clas.  (This is a little hackish, but</tt> </tt>
+<a name="L1142"></a><tt class="py-lineno">1142</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># unfortunately is necessary because we won't know if</tt> </tt>
+<a name="L1143"></a><tt class="py-lineno">1143</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># this assignment line is followed by a docstring</tt> </tt>
+<a name="L1144"></a><tt class="py-lineno">1144</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># until later.)</tt> </tt>
+<a name="L1145"></a><tt class="py-lineno">1145</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-keyword">not</tt> <tt id="link-471" class="py-name"><a title="epydoc.apidoc.VariableDoc.is_instvar" class="py-name" href="#" onclick="return doclink('link-471', 'is_instvar', 'link-302');">is_instvar</a></tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-name">comments</tt><tt class="py [...]
+<a name="L1146"></a><tt class="py-lineno">1146</tt>  <tt class="py-line">                <tt id="link-472" class="py-name"><a title="epydoc.docparser.set_variable" class="py-name" href="#" onclick="return doclink('link-472', 'set_variable', 'link-304');">set_variable</a></tt><tt class="py-op">(</tt><tt class="py-name">lhs_parent</tt><tt class="py-op">,</tt> <tt class="py-name">var_doc</tt><tt class="py-op">,</tt> <tt class="py-name">True</tt><tt class="py-op">)</tt> </tt>
+<a name="L1147"></a><tt class="py-lineno">1147</tt>  <tt class="py-line"> </tt>
+<a name="L1148"></a><tt class="py-lineno">1148</tt>  <tt class="py-line">            <tt class="py-comment"># If it's the only var, then return the VarDoc for use</tt> </tt>
+<a name="L1149"></a><tt class="py-lineno">1149</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># as the new `prev_line_doc`.</tt> </tt>
+<a name="L1150"></a><tt class="py-lineno">1150</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">lhs_pieces</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L1151"></a><tt class="py-lineno">1151</tt>  <tt class="py-line">                <tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">lhs_name</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt> <tt class="py-keyword">or</tt> <tt id="link-473" class="py-name"><a title="epydoc.apidoc.VariableDoc.is_instvar" class="py-name" href="#" onclick="return doclink('link-473', 'is_instvar', 'link-302');">is_instvar</ [...]
+<a name="L1152"></a><tt class="py-lineno">1152</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">var_doc</tt> </tt>
+<a name="L1153"></a><tt class="py-lineno">1153</tt>  <tt class="py-line"> </tt>
+<a name="L1154"></a><tt class="py-lineno">1154</tt>  <tt class="py-line">        <tt class="py-comment"># Otherwise, the LHS must be a complex expression; use</tt> </tt>
+<a name="L1155"></a><tt class="py-lineno">1155</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># dotted_names_in() to decide what variables it contains,</tt> </tt>
+<a name="L1156"></a><tt class="py-lineno">1156</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># and create VariableDoc's for all of them (with UNKNOWN</tt> </tt>
+<a name="L1157"></a><tt class="py-lineno">1157</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># value).</tt> </tt>
+<a name="L1158"></a><tt class="py-lineno">1158</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1159"></a><tt class="py-lineno">1159</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">lhs_name</tt> <tt class="py-keyword">in</tt> <tt id="link-474" class="py-name" targets="Function epydoc.docparser.dotted_names_in()=epydoc.docparser-module.html#dotted_names_in"><a title="epydoc.docparser.dotted_names_in" class="py-name" href="#" onclick="return doclink('link-474', 'dotted_names_in', 'link-474');">dotted_names_in</a></tt><tt class="py-o [...]
+<a name="L1160"></a><tt class="py-lineno">1160</tt>  <tt class="py-line">                <tt class="py-name">lhs_parent</tt> <tt class="py-op">=</tt> <tt id="link-475" class="py-name"><a title="epydoc.docparser.get_lhs_parent" class="py-name" href="#" onclick="return doclink('link-475', 'get_lhs_parent', 'link-297');">get_lhs_parent</a></tt><tt class="py-op">(</tt><tt class="py-name">lhs_name</tt><tt class="py-op">,</tt> <tt class="py-name">parent_docs</tt><tt class="py-op">)</tt> </tt>
+<a name="L1161"></a><tt class="py-lineno">1161</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">lhs_parent</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> <tt class="py-keyword">continue</tt> </tt>
+<a name="L1162"></a><tt class="py-lineno">1162</tt>  <tt class="py-line">                <tt class="py-name">var_doc</tt> <tt class="py-op">=</tt> <tt id="link-476" class="py-name"><a title="epydoc.apidoc.VariableDoc" class="py-name" href="#" onclick="return doclink('link-476', 'VariableDoc', 'link-249');">VariableDoc</a></tt><tt class="py-op">(</tt><tt id="link-477" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-477', 'na [...]
+<a name="L1163"></a><tt class="py-lineno">1163</tt>  <tt class="py-line">                                      <tt id="link-478" class="py-name"><a title="epydoc.apidoc.VariableDoc.is_imported" class="py-name" href="#" onclick="return doclink('link-478', 'is_imported', 'link-115');">is_imported</a></tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> </tt>
+<a name="L1164"></a><tt class="py-lineno">1164</tt>  <tt class="py-line">                                      <tt id="link-479" class="py-name"><a title="epydoc.apidoc.VariableDoc.is_alias" class="py-name" href="#" onclick="return doclink('link-479', 'is_alias', 'link-300');">is_alias</a></tt><tt class="py-op">=</tt><tt id="link-480" class="py-name"><a title="epydoc.apidoc.VariableDoc.is_alias" class="py-name" href="#" onclick="return doclink('link-480', 'is_alias', 'link-300');">is_ali [...]
+<a name="L1165"></a><tt class="py-lineno">1165</tt>  <tt class="py-line">                                      <tt id="link-481" class="py-name"><a title="epydoc.apidoc.VariableDoc.is_instvar" class="py-name" href="#" onclick="return doclink('link-481', 'is_instvar', 'link-302');">is_instvar</a></tt><tt class="py-op">=</tt><tt id="link-482" class="py-name"><a title="epydoc.apidoc.VariableDoc.is_instvar" class="py-name" href="#" onclick="return doclink('link-482', 'is_instvar', 'link-302' [...]
+<a name="L1166"></a><tt class="py-lineno">1166</tt>  <tt class="py-line">                                      <tt id="link-483" class="py-name"><a title="epydoc.apidoc.APIDoc.docs_extracted_by" class="py-name" href="#" onclick="return doclink('link-483', 'docs_extracted_by', 'link-78');">docs_extracted_by</a></tt><tt class="py-op">=</tt><tt class="py-string">'parser'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1167"></a><tt class="py-lineno">1167</tt>  <tt class="py-line">                <tt id="link-484" class="py-name"><a title="epydoc.docparser.set_variable" class="py-name" href="#" onclick="return doclink('link-484', 'set_variable', 'link-304');">set_variable</a></tt><tt class="py-op">(</tt><tt class="py-name">lhs_parent</tt><tt class="py-op">,</tt> <tt class="py-name">var_doc</tt><tt class="py-op">,</tt> <tt class="py-name">True</tt><tt class="py-op">)</tt> </tt>
+<a name="L1168"></a><tt class="py-lineno">1168</tt>  <tt class="py-line"> </tt>
+<a name="L1169"></a><tt class="py-lineno">1169</tt>  <tt class="py-line">        <tt class="py-comment"># If we have multiple left-hand-sides, then all but the</tt> </tt>
+<a name="L1170"></a><tt class="py-lineno">1170</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># rightmost one are considered aliases.</tt> </tt>
+<a name="L1171"></a><tt class="py-lineno">1171</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt id="link-485" class="py-name"><a title="epydoc.apidoc.VariableDoc.is_alias" class="py-name" href="#" onclick="return doclink('link-485', 'is_alias', 'link-300');">is_alias</a></tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+</div><a name="L1172"></a><tt class="py-lineno">1172</tt>  <tt class="py-line">         </tt>
+<a name="L1173"></a><tt class="py-lineno">1173</tt>  <tt class="py-line"> </tt>
+<a name="lhs_is_instvar"></a><div id="lhs_is_instvar-def"><a name="L1174"></a><tt class="py-lineno">1174</tt> <a class="py-toggle" href="#" id="lhs_is_instvar-toggle" onclick="return toggle('lhs_is_instvar');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docparser-module.html#lhs_is_instvar">lhs_is_instvar</a><tt class="py-op">(</tt><tt class="py-param">lhs_pieces</tt><tt class="py-op">,</tt> <tt class="py-param">parent_docs</tt><tt class=" [...]
+</div><div id="lhs_is_instvar-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="lhs_is_instvar-expanded"><a name="L1175"></a><tt class="py-lineno">1175</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">parent_docs</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt  [...]
+<a name="L1176"></a><tt class="py-lineno">1176</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
+<a name="L1177"></a><tt class="py-lineno">1177</tt>  <tt class="py-line">    <tt class="py-comment"># make sure that lhs_pieces is <self>.<name>, where <self> is</tt> </tt>
+<a name="L1178"></a><tt class="py-lineno">1178</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># the name of the first arg to the containing routinedoc, and</tt> </tt>
+<a name="L1179"></a><tt class="py-lineno">1179</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># <name> is a simple name.</tt> </tt>
+<a name="L1180"></a><tt class="py-lineno">1180</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-487" class="py-name" targets="Variable epydoc.apidoc.RoutineDoc.posargs=epydoc.apidoc.RoutineDoc-class.html#posargs"><a title="epydoc.apidoc.RoutineDoc.posargs" class="py-name" href="#" onclick="return doclink('link-487', 'posargs', 'link-487');">posargs</a></tt> <tt class="py-op">=</tt> <tt class="py-name">parent_docs</tt><tt class="py-op">[</tt><tt class="py-op">-</tt>< [...]
+<a name="L1181"></a><tt class="py-lineno">1181</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-489" class="py-name"><a title="epydoc.apidoc.RoutineDoc.posargs" class="py-name" href="#" onclick="return doclink('link-489', 'posargs', 'link-487');">posargs</a></tt> <tt class="py-keyword">is</tt> <tt id="link-490" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-490', 'UNKNOWN', 'link-38');">UNKNOWN</a></tt><tt  [...]
+<a name="L1182"></a><tt class="py-lineno">1182</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">lhs_pieces</tt><tt class="py-op">)</tt><tt class="py-op">==</tt><tt class="py-number">1</tt> <tt class="py-keyword">and</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-491" class="py-name"><a title="epydoc.apidoc.RoutineDoc.posargs" c [...]
+<a name="L1183"></a><tt class="py-lineno">1183</tt>  <tt class="py-line">            <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">lhs_pieces</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">3</tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L1184"></a><tt class="py-lineno">1184</tt>  <tt class="py-line">            <tt class="py-name">lhs_pieces</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-op">(</tt><tt class="py-name">token</tt><tt class="py-op">.</tt><tt class="py-name">NAME</tt><tt class="py-op">,</tt> <tt id="link-492" class="py-name"><a title="epydoc.apidoc.Rou [...]
+<a name="L1185"></a><tt class="py-lineno">1185</tt>  <tt class="py-line">            <tt class="py-name">lhs_pieces</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-op">(</tt><tt class="py-name">token</tt><tt class="py-op">.</tt><tt class="py-name">OP</tt><tt class="py-op">,</tt> <tt class="py-string">'.'</tt><tt class="py-op">)</tt> <tt clas [...]
+<a name="L1186"></a><tt class="py-lineno">1186</tt>  <tt class="py-line">            <tt class="py-name">lhs_pieces</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-name">token</tt><tt class="py-op">.</tt><tt class="py-name">NAME</tt><tt class="py-op">)</tt><tt class= [...]
+<a name="L1187"></a><tt class="py-lineno">1187</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
+<a name="L1188"></a><tt class="py-lineno">1188</tt>  <tt class="py-line">    <tt class="py-comment"># Make sure we're in an instance method, and not a</tt> </tt>
+<a name="L1189"></a><tt class="py-lineno">1189</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># module-level function.</tt> </tt>
+<a name="L1190"></a><tt class="py-lineno">1190</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">parent_docs</tt><tt class="py-op">)</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-op">-</tt><tt class="py-number">1</tt><t [...]
+<a name="L1191"></a><tt class="py-lineno">1191</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">parent_docs</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt id="link-493" class="py-name" targets="Class epydoc.apidoc.ClassDoc=epydoc.apidoc.ClassDoc-class.html"><a title="epydoc.apidoc.ClassDoc" class="py-name" href="#" onclick="return docl [...]
+<a name="L1192"></a><tt class="py-lineno">1192</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
+<a name="L1193"></a><tt class="py-lineno">1193</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">parent_docs</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt> <tt class="py-op">!=</tt> <tt class="py-name">parent_docs</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L1194"></a><tt class="py-lineno">1194</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
+<a name="L1195"></a><tt class="py-lineno">1195</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
+</div><a name="L1196"></a><tt class="py-lineno">1196</tt>  <tt class="py-line">         </tt>
+<a name="rhs_to_valuedoc"></a><div id="rhs_to_valuedoc-def"><a name="L1197"></a><tt class="py-lineno">1197</tt> <a class="py-toggle" href="#" id="rhs_to_valuedoc-toggle" onclick="return toggle('rhs_to_valuedoc');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docparser-module.html#rhs_to_valuedoc">rhs_to_valuedoc</a><tt class="py-op">(</tt><tt class="py-param">rhs</tt><tt class="py-op">,</tt> <tt class="py-param">parent_docs</tt><tt class="p [...]
+</div><div id="rhs_to_valuedoc-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="rhs_to_valuedoc-expanded"><a name="L1198"></a><tt class="py-lineno">1198</tt>  <tt class="py-line">    <tt class="py-comment"># Dotted variable:</tt> </tt>
+<a name="L1199"></a><tt class="py-lineno">1199</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L1200"></a><tt class="py-lineno">1200</tt>  <tt class="py-line">        <tt class="py-name">rhs_name</tt> <tt class="py-op">=</tt> <tt id="link-494" class="py-name"><a title="epydoc.docparser.parse_dotted_name" class="py-name" href="#" onclick="return doclink('link-494', 'parse_dotted_name', 'link-295');">parse_dotted_name</a></tt><tt class="py-op">(</tt><tt class="py-name">rhs</tt><tt class="py-op">)</tt> </tt>
+<a name="L1201"></a><tt class="py-lineno">1201</tt>  <tt class="py-line">        <tt class="py-name">rhs_val</tt> <tt class="py-op">=</tt> <tt id="link-495" class="py-name" targets="Function epydoc.docparser.lookup_value()=epydoc.docparser-module.html#lookup_value"><a title="epydoc.docparser.lookup_value" class="py-name" href="#" onclick="return doclink('link-495', 'lookup_value', 'link-495');">lookup_value</a></tt><tt class="py-op">(</tt><tt class="py-name">rhs_name</tt><tt class="py-op [...]
+<a name="L1202"></a><tt class="py-lineno">1202</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">rhs_val</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-name">rhs_val</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt id="link-496" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-496' [...]
+<a name="L1203"></a><tt class="py-lineno">1203</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">rhs_val</tt><tt class="py-op">,</tt> <tt class="py-name">True</tt> </tt>
+<a name="L1204"></a><tt class="py-lineno">1204</tt>  <tt class="py-line">    <tt class="py-keyword">except</tt> <tt id="link-497" class="py-name"><a title="epydoc.docparser.ParseError
+epydoc.markup.ParseError" class="py-name" href="#" onclick="return doclink('link-497', 'ParseError', 'link-87');">ParseError</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1205"></a><tt class="py-lineno">1205</tt>  <tt class="py-line">        <tt class="py-keyword">pass</tt> </tt>
+<a name="L1206"></a><tt class="py-lineno">1206</tt>  <tt class="py-line"> </tt>
+<a name="L1207"></a><tt class="py-lineno">1207</tt>  <tt class="py-line">    <tt class="py-comment"># Decorators:</tt> </tt>
+<a name="L1208"></a><tt class="py-lineno">1208</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">rhs</tt><tt class="py-op">)</tt><tt class="py-op">==</tt><tt class="py-number">2</tt> <tt class="py-keyword">and</tt> <tt class="py-name">rhs</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py- [...]
+<a name="L1209"></a><tt class="py-lineno">1209</tt>  <tt class="py-line">        <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">rhs</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">list</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1210"></a><tt class="py-lineno">1210</tt>  <tt class="py-line">        <tt class="py-name">arg_val</tt><tt class="py-op">,</tt> <tt class="py-name">_</tt> <tt class="py-op">=</tt> <tt id="link-498" class="py-name"><a title="epydoc.docparser.rhs_to_valuedoc" class="py-name" href="#" onclick="return doclink('link-498', 'rhs_to_valuedoc', 'link-456');">rhs_to_valuedoc</a></tt><tt class="py-op">(</tt><tt class="py-name">rhs</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><t [...]
+<a name="L1211"></a><tt class="py-lineno">1211</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">arg_val</tt><tt class="py-op">,</tt> <tt id="link-499" class="py-name"><a title="epydoc.apidoc.RoutineDoc" class="py-name" href="#" onclick="return doclink('link-499', 'RoutineDoc', 'link-486');">RoutineDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1212"></a><tt class="py-lineno">1212</tt>  <tt class="py-line">            <tt class="py-name">doc</tt> <tt class="py-op">=</tt> <tt id="link-500" class="py-name" targets="Function epydoc.docparser.apply_decorator()=epydoc.docparser-module.html#apply_decorator"><a title="epydoc.docparser.apply_decorator" class="py-name" href="#" onclick="return doclink('link-500', 'apply_decorator', 'link-500');">apply_decorator</a></tt><tt class="py-op">(</tt><tt id="link-501" class="py-name"> [...]
+<a name="L1213"></a><tt class="py-lineno">1213</tt>  <tt class="py-line">            <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-502" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-502', 'canonical_name', 'link-37');">canonical_name</a></tt> <tt class="py-op">=</tt> <tt id="link-503" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-503', 'UNKNOWN', 'link-38');">UNKNOWN</a></tt> </tt>
+<a name="L1214"></a><tt class="py-lineno">1214</tt>  <tt class="py-line">            <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-504" class="py-name" targets="Variable epydoc.apidoc.ValueDoc.parse_repr=epydoc.apidoc.ValueDoc-class.html#parse_repr"><a title="epydoc.apidoc.ValueDoc.parse_repr" class="py-name" href="#" onclick="return doclink('link-504', 'parse_repr', 'link-504');">parse_repr</a></tt> <tt class="py-op">=</tt> <tt id="link-505" class="py-name" targets="F [...]
+<a name="L1215"></a><tt class="py-lineno">1215</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt class="py-name">False</tt> </tt>
+<a name="L1216"></a><tt class="py-lineno">1216</tt>  <tt class="py-line"> </tt>
+<a name="L1217"></a><tt class="py-lineno">1217</tt>  <tt class="py-line">    <tt class="py-comment"># Nothing else to do: make a val with the source as its repr.</tt> </tt>
+<a name="L1218"></a><tt class="py-lineno">1218</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">return</tt> <tt id="link-506" class="py-name" targets="Class epydoc.apidoc.GenericValueDoc=epydoc.apidoc.GenericValueDoc-class.html"><a title="epydoc.apidoc.GenericValueDoc" class="py-name" href="#" onclick="return doclink('link-506', 'GenericValueDoc', 'link-506');">GenericValueDoc</a></tt><tt class="py-op">(</tt><tt id="link-507" class="py-name"><a title="epyd [...]
+<a name="L1219"></a><tt class="py-lineno">1219</tt>  <tt class="py-line">                           <tt id="link-510" class="py-name"><a title="epydoc.apidoc.ValueDoc.defining_module
+epydoc.apidoc.VariableDoc.defining_module" class="py-name" href="#" onclick="return doclink('link-510', 'defining_module', 'link-79');">defining_module</a></tt><tt class="py-op">=</tt><tt class="py-name">parent_docs</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L1220"></a><tt class="py-lineno">1220</tt>  <tt class="py-line">                           <tt id="link-511" class="py-name"><a title="epydoc.apidoc.APIDoc.docs_extracted_by" class="py-name" href="#" onclick="return doclink('link-511', 'docs_extracted_by', 'link-78');">docs_extracted_by</a></tt><tt class="py-op">=</tt><tt class="py-string">'parser'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">False</tt> </tt>
+</div><a name="L1221"></a><tt class="py-lineno">1221</tt>  <tt class="py-line"> </tt>
+<a name="get_lhs_parent"></a><div id="get_lhs_parent-def"><a name="L1222"></a><tt class="py-lineno">1222</tt> <a class="py-toggle" href="#" id="get_lhs_parent-toggle" onclick="return toggle('get_lhs_parent');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docparser-module.html#get_lhs_parent">get_lhs_parent</a><tt class="py-op">(</tt><tt class="py-param">lhs_name</tt><tt class="py-op">,</tt> <tt class="py-param">parent_docs</tt><tt class="py [...]
+</div><div id="get_lhs_parent-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="get_lhs_parent-expanded"><a name="L1223"></a><tt class="py-lineno">1223</tt>  <tt class="py-line">    <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">lhs_name</tt><tt class="py-op">,</tt> <tt id="link-512" class="py-name"><a title="epydoc.apidoc.DottedName" class="py-name" href="#" onclick="return doclink('link-512', 'Dot [...]
+<a name="L1224"></a><tt class="py-lineno">1224</tt>  <tt class="py-line"> </tt>
+<a name="L1225"></a><tt class="py-lineno">1225</tt>  <tt class="py-line">    <tt class="py-comment"># For instance vars inside an __init__ method:</tt> </tt>
+<a name="L1226"></a><tt class="py-lineno">1226</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">parent_docs</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt id="link-513" class="py-name"><a title="epydoc.apidoc.RoutineDoc" class="py-name" href="#" onclick="return doclink('link-513', 'Rout [...]
+<a name="L1227"></a><tt class="py-lineno">1227</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">parent_docs</tt><tt class="py-op">)</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> < [...]
+<a name="L1228"></a><tt class="py-lineno">1228</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">parent_docs</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt id="link-514" class="py-name"><a title="epydoc.apidoc.ClassDoc" class="py-name" href="#" onclick="return doclink('link-514', 'ClassDoc', 'link-493');">ClassDoc</a></tt><tt class= [...]
+<a name="L1229"></a><tt class="py-lineno">1229</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">parent_docs</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt> </tt>
+<a name="L1230"></a><tt class="py-lineno">1230</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1231"></a><tt class="py-lineno">1231</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"%r is not a namespace or method"</tt> <tt class="py-op">%</tt> </tt>
+<a name="L1232"></a><tt class="py-lineno">1232</tt>  <tt class="py-line">                             <tt class="py-name">parent_docs</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1233"></a><tt class="py-lineno">1233</tt>  <tt class="py-line"> </tt>
+<a name="L1234"></a><tt class="py-lineno">1234</tt>  <tt class="py-line">    <tt class="py-comment"># For local variables:</tt> </tt>
+<a name="L1235"></a><tt class="py-lineno">1235</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">lhs_name</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L1236"></a><tt class="py-lineno">1236</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">parent_docs</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L1237"></a><tt class="py-lineno">1237</tt>  <tt class="py-line"> </tt>
+<a name="L1238"></a><tt class="py-lineno">1238</tt>  <tt class="py-line">    <tt class="py-comment"># For non-local variables:</tt> </tt>
+<a name="L1239"></a><tt class="py-lineno">1239</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">return</tt> <tt id="link-515" class="py-name"><a title="epydoc.docparser.lookup_value" class="py-name" href="#" onclick="return doclink('link-515', 'lookup_value', 'link-495');">lookup_value</a></tt><tt class="py-op">(</tt><tt class="py-name">lhs_name</tt><tt class="py-op">.</tt><tt id="link-516" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-516', 'container', 'link-250');">container</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">parent_docs</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1240"></a><tt class="py-lineno">1240</tt>  <tt class="py-line"> </tt>
+<a name="L1241"></a><tt class="py-lineno">1241</tt>  <tt class="py-line"><tt class="py-comment">#/////////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L1242"></a><tt class="py-lineno">1242</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Line handler: single-line blocks</tt> </tt>
+<a name="L1243"></a><tt class="py-lineno">1243</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#/////////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L1244"></a><tt class="py-lineno">1244</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="process_one_line_block"></a><div id="process_one_line_block-def"><a name="L1245"></a><tt class="py-lineno">1245</tt> <a class="py-toggle" href="#" id="process_one_line_block-toggle" onclick="return toggle('process_one_line_block');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docparser-module.html#process_one_line_block">process_one_line_block</a><tt class="py-op">(</tt><tt class="py-param">line</tt><tt class="py-op">,</tt> <tt cl [...]
+<a name="L1246"></a><tt class="py-lineno">1246</tt>  <tt class="py-line">                           <tt class="py-param">comments</tt><tt class="py-op">,</tt> <tt class="py-param">decorators</tt><tt class="py-op">,</tt> <tt class="py-param">encoding</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="process_one_line_block-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="process_one_line_block-expanded"><a name="L1247"></a><tt class="py-lineno">1247</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L1248"></a><tt class="py-lineno">1248</tt>  <tt class="py-line"><tt class="py-docstring">    The line handler for single-line blocks, such as:</tt> </tt>
+<a name="L1249"></a><tt class="py-lineno">1249</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1250"></a><tt class="py-lineno">1250</tt>  <tt class="py-line"><tt class="py-docstring">        >>> def f(x): return x*2</tt> </tt>
+<a name="L1251"></a><tt class="py-lineno">1251</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1252"></a><tt class="py-lineno">1252</tt>  <tt class="py-line"><tt class="py-docstring">    This handler calls L{process_line} twice: once for the tokens</tt> </tt>
+<a name="L1253"></a><tt class="py-lineno">1253</tt>  <tt class="py-line"><tt class="py-docstring">    up to and including the colon, and once for the remaining</tt> </tt>
+<a name="L1254"></a><tt class="py-lineno">1254</tt>  <tt class="py-line"><tt class="py-docstring">    tokens.  The comment docstring is applied to the first line</tt> </tt>
+<a name="L1255"></a><tt class="py-lineno">1255</tt>  <tt class="py-line"><tt class="py-docstring">    only.</tt> </tt>
+<a name="L1256"></a><tt class="py-lineno">1256</tt>  <tt class="py-line"><tt class="py-docstring">    @return: C{None}</tt> </tt>
+<a name="L1257"></a><tt class="py-lineno">1257</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1258"></a><tt class="py-lineno">1258</tt>  <tt class="py-line">    <tt class="py-name">i</tt> <tt class="py-op">=</tt> <tt class="py-name">line</tt><tt class="py-op">.</tt><tt class="py-name">index</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">token</tt><tt class="py-op">.</tt><tt class="py-name">OP</tt><tt class="py-op">,</tt> <tt class="py-string">':'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1259"></a><tt class="py-lineno">1259</tt>  <tt class="py-line">    <tt class="py-name">doc1</tt> <tt class="py-op">=</tt> <tt id="link-517" class="py-name"><a title="epydoc.docparser.process_line" class="py-name" href="#" onclick="return doclink('link-517', 'process_line', 'link-237');">process_line</a></tt><tt class="py-op">(</tt><tt class="py-name">line</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-name">i</tt><tt class="py-op">+</tt><tt class="py-number"> [...]
+<a name="L1260"></a><tt class="py-lineno">1260</tt>  <tt class="py-line">                             <tt id="link-518" class="py-name"><a title="epydoc.apidoc.RoutineDoc.lineno" class="py-name" href="#" onclick="return doclink('link-518', 'lineno', 'link-207');">lineno</a></tt><tt class="py-op">,</tt> <tt class="py-name">comments</tt><tt class="py-op">,</tt> <tt id="link-519" class="py-name"><a title="epydoc.apidoc.RoutineDoc.decorators" class="py-name" href="#" onclick="return doclink( [...]
+<a name="L1261"></a><tt class="py-lineno">1261</tt>  <tt class="py-line">    <tt class="py-name">doc2</tt> <tt class="py-op">=</tt> <tt id="link-520" class="py-name"><a title="epydoc.docparser.process_line" class="py-name" href="#" onclick="return doclink('link-520', 'process_line', 'link-237');">process_line</a></tt><tt class="py-op">(</tt><tt class="py-name">line</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op"> [...]
+<a name="L1262"></a><tt class="py-lineno">1262</tt>  <tt class="py-line">                             <tt class="py-name">doc1</tt><tt class="py-op">,</tt> <tt id="link-521" class="py-name"><a title="epydoc.apidoc.RoutineDoc.lineno" class="py-name" href="#" onclick="return doclink('link-521', 'lineno', 'link-207');">lineno</a></tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt cla [...]
+<a name="L1263"></a><tt class="py-lineno">1263</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">doc1</tt> </tt>
+</div><a name="L1264"></a><tt class="py-lineno">1264</tt>  <tt class="py-line"> </tt>
+<a name="L1265"></a><tt class="py-lineno">1265</tt>  <tt class="py-line"><tt class="py-comment">#/////////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L1266"></a><tt class="py-lineno">1266</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Line handler: semicolon-separated statements</tt> </tt>
+<a name="L1267"></a><tt class="py-lineno">1267</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#/////////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L1268"></a><tt class="py-lineno">1268</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="process_multi_stmt"></a><div id="process_multi_stmt-def"><a name="L1269"></a><tt class="py-lineno">1269</tt> <a class="py-toggle" href="#" id="process_multi_stmt-toggle" onclick="return toggle('process_multi_stmt');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docparser-module.html#process_multi_stmt">process_multi_stmt</a><tt class="py-op">(</tt><tt class="py-param">line</tt><tt class="py-op">,</tt> <tt class="py-param">parent_do [...]
+<a name="L1270"></a><tt class="py-lineno">1270</tt>  <tt class="py-line">                       <tt class="py-param">comments</tt><tt class="py-op">,</tt> <tt class="py-param">decorators</tt><tt class="py-op">,</tt> <tt class="py-param">encoding</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="process_multi_stmt-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="process_multi_stmt-expanded"><a name="L1271"></a><tt class="py-lineno">1271</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L1272"></a><tt class="py-lineno">1272</tt>  <tt class="py-line"><tt class="py-docstring">    The line handler for semicolon-separated statements, such as:</tt> </tt>
+<a name="L1273"></a><tt class="py-lineno">1273</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1274"></a><tt class="py-lineno">1274</tt>  <tt class="py-line"><tt class="py-docstring">        >>> x=1; y=2; z=3</tt> </tt>
+<a name="L1275"></a><tt class="py-lineno">1275</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1276"></a><tt class="py-lineno">1276</tt>  <tt class="py-line"><tt class="py-docstring">    This handler calls L{process_line} once for each statement.</tt> </tt>
+<a name="L1277"></a><tt class="py-lineno">1277</tt>  <tt class="py-line"><tt class="py-docstring">    The comment docstring is not passed on to any of the</tt> </tt>
+<a name="L1278"></a><tt class="py-lineno">1278</tt>  <tt class="py-line"><tt class="py-docstring">    sub-statements.</tt> </tt>
+<a name="L1279"></a><tt class="py-lineno">1279</tt>  <tt class="py-line"><tt class="py-docstring">    @return: C{None}</tt> </tt>
+<a name="L1280"></a><tt class="py-lineno">1280</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1281"></a><tt class="py-lineno">1281</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">statement</tt> <tt class="py-keyword">in</tt> <tt id="link-522" class="py-name"><a title="epydoc.docparser.split_on" class="py-name" href="#" onclick="return doclink('link-522', 'split_on', 'link-296');">split_on</a></tt><tt class="py-op">(</tt><tt class="py-name">line</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">token</tt><tt class= [...]
+<a name="L1282"></a><tt class="py-lineno">1282</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">statement</tt><tt class="py-op">:</tt> <tt class="py-keyword">continue</tt> </tt>
+<a name="L1283"></a><tt class="py-lineno">1283</tt>  <tt class="py-line">        <tt class="py-name">doc</tt> <tt class="py-op">=</tt> <tt id="link-523" class="py-name"><a title="epydoc.docparser.process_line" class="py-name" href="#" onclick="return doclink('link-523', 'process_line', 'link-237');">process_line</a></tt><tt class="py-op">(</tt><tt class="py-name">statement</tt><tt class="py-op">,</tt> <tt class="py-name">parent_docs</tt><tt class="py-op">,</tt> <tt class="py-name">prev_l [...]
+<a name="L1284"></a><tt class="py-lineno">1284</tt>  <tt class="py-line">                           <tt id="link-524" class="py-name"><a title="epydoc.apidoc.RoutineDoc.lineno" class="py-name" href="#" onclick="return doclink('link-524', 'lineno', 'link-207');">lineno</a></tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-525" class="py-name"><a title="epydoc.apidoc.RoutineDoc.decorators" class="py-name" href="#" onclick="return doclink('link- [...]
+<a name="L1285"></a><tt class="py-lineno">1285</tt>  <tt class="py-line">        <tt class="py-name">prev_line_doc</tt> <tt class="py-op">=</tt> <tt class="py-name">doc</tt> </tt>
+<a name="L1286"></a><tt class="py-lineno">1286</tt>  <tt class="py-line">        <tt id="link-526" class="py-name"><a title="epydoc.apidoc.RoutineDoc.decorators" class="py-name" href="#" onclick="return doclink('link-526', 'decorators', 'link-208');">decorators</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L1287"></a><tt class="py-lineno">1287</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
+</div><a name="L1288"></a><tt class="py-lineno">1288</tt>  <tt class="py-line"> </tt>
+<a name="L1289"></a><tt class="py-lineno">1289</tt>  <tt class="py-line"><tt class="py-comment">#/////////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L1290"></a><tt class="py-lineno">1290</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Line handler: delete statements</tt> </tt>
+<a name="L1291"></a><tt class="py-lineno">1291</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#/////////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L1292"></a><tt class="py-lineno">1292</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="process_del"></a><div id="process_del-def"><a name="L1293"></a><tt class="py-lineno">1293</tt> <a class="py-toggle" href="#" id="process_del-toggle" onclick="return toggle('process_del');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docparser-module.html#process_del">process_del</a><tt class="py-op">(</tt><tt class="py-param">line</tt><tt class="py-op">,</tt> <tt class="py-param">parent_docs</tt><tt class="py-op">,</tt> <tt class= [...]
+<a name="L1294"></a><tt class="py-lineno">1294</tt>  <tt class="py-line">                <tt class="py-param">comments</tt><tt class="py-op">,</tt> <tt class="py-param">decorators</tt><tt class="py-op">,</tt> <tt class="py-param">encoding</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="process_del-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="process_del-expanded"><a name="L1295"></a><tt class="py-lineno">1295</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L1296"></a><tt class="py-lineno">1296</tt>  <tt class="py-line"><tt class="py-docstring">    The line handler for delete statements, such as:</tt> </tt>
+<a name="L1297"></a><tt class="py-lineno">1297</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1298"></a><tt class="py-lineno">1298</tt>  <tt class="py-line"><tt class="py-docstring">        >>> del x, y.z</tt> </tt>
+<a name="L1299"></a><tt class="py-lineno">1299</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1300"></a><tt class="py-lineno">1300</tt>  <tt class="py-line"><tt class="py-docstring">    This handler calls L{del_variable} for each dotted variable in</tt> </tt>
+<a name="L1301"></a><tt class="py-lineno">1301</tt>  <tt class="py-line"><tt class="py-docstring">    the variable list.  The variable list may be nested.  Complex</tt> </tt>
+<a name="L1302"></a><tt class="py-lineno">1302</tt>  <tt class="py-line"><tt class="py-docstring">    expressions in the variable list (such as C{x[3]}) are ignored.</tt> </tt>
+<a name="L1303"></a><tt class="py-lineno">1303</tt>  <tt class="py-line"><tt class="py-docstring">    @return: C{None}</tt> </tt>
+<a name="L1304"></a><tt class="py-lineno">1304</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1305"></a><tt class="py-lineno">1305</tt>  <tt class="py-line">    <tt class="py-comment"># If we're not in a namespace, then ignore it.</tt> </tt>
+<a name="L1306"></a><tt class="py-lineno">1306</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">parent_doc</tt> <tt class="py-op">=</tt> <tt class="py-name">parent_docs</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L1307"></a><tt class="py-lineno">1307</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">parent_doc</tt><tt class="py-op">,</tt> <tt id="link-527" class="py-name"><a title="epydoc.apidoc.NamespaceDoc" class="py-name" href="#" onclick="return doclink('link-527', 'NamespaceDoc', 'link-181');">NamespaceDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt>  [...]
+<a name="L1308"></a><tt class="py-lineno">1308</tt>  <tt class="py-line"> </tt>
+<a name="L1309"></a><tt class="py-lineno">1309</tt>  <tt class="py-line">    <tt class="py-name">var_list</tt> <tt class="py-op">=</tt> <tt id="link-528" class="py-name"><a title="epydoc.docparser.split_on" class="py-name" href="#" onclick="return doclink('link-528', 'split_on', 'link-296');">split_on</a></tt><tt class="py-op">(</tt><tt class="py-name">line</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt [...]
+<a name="L1310"></a><tt class="py-lineno">1310</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">var_name</tt> <tt class="py-keyword">in</tt> <tt id="link-529" class="py-name"><a title="epydoc.docparser.dotted_names_in" class="py-name" href="#" onclick="return doclink('link-529', 'dotted_names_in', 'link-474');">dotted_names_in</a></tt><tt class="py-op">(</tt><tt class="py-name">var_list</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1311"></a><tt class="py-lineno">1311</tt>  <tt class="py-line">        <tt id="link-530" class="py-name" targets="Function epydoc.docparser.del_variable()=epydoc.docparser-module.html#del_variable"><a title="epydoc.docparser.del_variable" class="py-name" href="#" onclick="return doclink('link-530', 'del_variable', 'link-530');">del_variable</a></tt><tt class="py-op">(</tt><tt class="py-name">parent_docs</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1 [...]
+<a name="L1312"></a><tt class="py-lineno">1312</tt>  <tt class="py-line"> </tt>
+<a name="L1313"></a><tt class="py-lineno">1313</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
+</div><a name="L1314"></a><tt class="py-lineno">1314</tt>  <tt class="py-line"> </tt>
+<a name="L1315"></a><tt class="py-lineno">1315</tt>  <tt class="py-line"><tt class="py-comment">#/////////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L1316"></a><tt class="py-lineno">1316</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Line handler: docstrings</tt> </tt>
+<a name="L1317"></a><tt class="py-lineno">1317</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#/////////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L1318"></a><tt class="py-lineno">1318</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="process_docstring"></a><div id="process_docstring-def"><a name="L1319"></a><tt class="py-lineno">1319</tt> <a class="py-toggle" href="#" id="process_docstring-toggle" onclick="return toggle('process_docstring');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docparser-module.html#process_docstring">process_docstring</a><tt class="py-op">(</tt><tt class="py-param">line</tt><tt class="py-op">,</tt> <tt class="py-param">parent_docs</tt [...]
+<a name="L1320"></a><tt class="py-lineno">1320</tt>  <tt class="py-line">                      <tt class="py-param">comments</tt><tt class="py-op">,</tt> <tt class="py-param">decorators</tt><tt class="py-op">,</tt> <tt class="py-param">encoding</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="process_docstring-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="process_docstring-expanded"><a name="L1321"></a><tt class="py-lineno">1321</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L1322"></a><tt class="py-lineno">1322</tt>  <tt class="py-line"><tt class="py-docstring">    The line handler for bare string literals.  If</tt> </tt>
+<a name="L1323"></a><tt class="py-lineno">1323</tt>  <tt class="py-line"><tt class="py-docstring">    C{prev_line_doc} is not C{None}, then the string literal is</tt> </tt>
+<a name="L1324"></a><tt class="py-lineno">1324</tt>  <tt class="py-line"><tt class="py-docstring">    added to that C{APIDoc} as a docstring.  If it already has a</tt> </tt>
+<a name="L1325"></a><tt class="py-lineno">1325</tt>  <tt class="py-line"><tt class="py-docstring">    docstring (from comment docstrings), then the new docstring</tt> </tt>
+<a name="L1326"></a><tt class="py-lineno">1326</tt>  <tt class="py-line"><tt class="py-docstring">    will be appended to the old one.</tt> </tt>
+<a name="L1327"></a><tt class="py-lineno">1327</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1328"></a><tt class="py-lineno">1328</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">prev_line_doc</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> </tt>
+<a name="L1329"></a><tt class="py-lineno">1329</tt>  <tt class="py-line">    <tt id="link-531" class="py-name" targets="Variable epydoc.apidoc.APIDoc.docstring=epydoc.apidoc.APIDoc-class.html#docstring"><a title="epydoc.apidoc.APIDoc.docstring" class="py-name" href="#" onclick="return doclink('link-531', 'docstring', 'link-531');">docstring</a></tt> <tt class="py-op">=</tt> <tt id="link-532" class="py-name"><a title="epydoc.docparser.parse_string" class="py-name" href="#" onclick="return [...]
+<a name="L1330"></a><tt class="py-lineno">1330</tt>  <tt class="py-line"> </tt>
+<a name="L1331"></a><tt class="py-lineno">1331</tt>  <tt class="py-line">    <tt class="py-comment"># If the docstring is a str, then convert it to unicode.</tt> </tt>
+<a name="L1332"></a><tt class="py-lineno">1332</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># According to a strict reading of PEP 263, this might not be the</tt> </tt>
+<a name="L1333"></a><tt class="py-lineno">1333</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># right thing to do; but it will almost always be what the</tt> </tt>
+<a name="L1334"></a><tt class="py-lineno">1334</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># module's author intended.</tt> </tt>
+<a name="L1335"></a><tt class="py-lineno">1335</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-533" class="py-name"><a title="epydoc.apidoc.APIDoc.docstring" class="py-name" href="#" onclick="return doclink('link-533', 'docstring', 'link-531');">docstring</a></tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1336"></a><tt class="py-lineno">1336</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L1337"></a><tt class="py-lineno">1337</tt>  <tt class="py-line">            <tt id="link-534" class="py-name"><a title="epydoc.apidoc.APIDoc.docstring" class="py-name" href="#" onclick="return doclink('link-534', 'docstring', 'link-531');">docstring</a></tt> <tt class="py-op">=</tt> <tt id="link-535" class="py-name"><a title="epydoc.apidoc.APIDoc.docstring" class="py-name" href="#" onclick="return doclink('link-535', 'docstring', 'link-531');">docstring</a></tt><tt class="py-op" [...]
+<a name="L1338"></a><tt class="py-lineno">1338</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">UnicodeDecodeError</tt><tt class="py-op">:</tt> </tt>
+<a name="L1339"></a><tt class="py-lineno">1339</tt>  <tt class="py-line">            <tt class="py-comment"># If decoding failed, then fall back on using</tt> </tt>
+<a name="L1340"></a><tt class="py-lineno">1340</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># decode_with_backslashreplace, which will map e.g.</tt> </tt>
+<a name="L1341"></a><tt class="py-lineno">1341</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># "\xe9" -> u"\\xe9".</tt> </tt>
+<a name="L1342"></a><tt class="py-lineno">1342</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt id="link-536" class="py-name"><a title="epydoc.apidoc.APIDoc.docstring" class="py-name" href="#" onclick="return doclink('link-536', 'docstring', 'link-531');">docstring</a></tt> <tt class="py-op">=</tt> <tt id="link-537" class="py-name"><a title="epydoc.util.decode_with_backslashreplace" class="py-name" href="#" onclick="return doclink('link-537', 'decode_with_backslashre [...]
+<a name="L1343"></a><tt class="py-lineno">1343</tt>  <tt class="py-line">            <tt id="link-539" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-539', 'log', 'link-50');">log</a></tt><tt class="py-op">.</tt><tt id="link-540" class="py-name"><a title="epydoc.checker.DocChecker.warning
+epydoc.log.warning" class="py-name" href="#" onclick="return doclink('link-540', 'warning', 'link-214');">warning</a></tt><tt class="py-op">(</tt><tt class="py-string">"While parsing %s: docstring is not a unicode "</tt> </tt>
+<a name="L1344"></a><tt class="py-lineno">1344</tt>  <tt class="py-line">                        <tt class="py-string">"string, but it contains non-ascii data."</tt> <tt class="py-op">%</tt> </tt>
+<a name="L1345"></a><tt class="py-lineno">1345</tt>  <tt class="py-line">                        <tt class="py-name">prev_line_doc</tt><tt class="py-op">.</tt><tt id="link-541" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-541', 'canonical_name', 'link-37');">canonical_name</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1346"></a><tt class="py-lineno">1346</tt>  <tt class="py-line"> </tt>
+<a name="L1347"></a><tt class="py-lineno">1347</tt>  <tt class="py-line">    <tt class="py-comment"># If the modified APIDoc is an instance variable, and it has</tt> </tt>
+<a name="L1348"></a><tt class="py-lineno">1348</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># not yet been added to its class's C{variables} list,</tt> </tt>
+<a name="L1349"></a><tt class="py-lineno">1349</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># then add it now.  This is done here, rather than in the</tt> </tt>
+<a name="L1350"></a><tt class="py-lineno">1350</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># process_assignment() call that created the variable, because</tt> </tt>
+<a name="L1351"></a><tt class="py-lineno">1351</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># we only want to add instance variables if they have an</tt> </tt>
+<a name="L1352"></a><tt class="py-lineno">1352</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># associated docstring.  (For more info, see the comment above</tt> </tt>
+<a name="L1353"></a><tt class="py-lineno">1353</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># the set_variable() call in process_assignment().)</tt> </tt>
+<a name="L1354"></a><tt class="py-lineno">1354</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">added_instvar</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L1355"></a><tt class="py-lineno">1355</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">prev_line_doc</tt><tt class="py-op">,</tt> <tt id="link-542" class="py-name"><a title="epydoc.apidoc.VariableDoc" class="py-name" href="#" onclick="return doclink('link-542', 'VariableDoc', 'link-249');">VariableDoc</a></tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L1356"></a><tt class="py-lineno">1356</tt>  <tt class="py-line">         <tt class="py-name">prev_line_doc</tt><tt class="py-op">.</tt><tt id="link-543" class="py-name"><a title="epydoc.apidoc.VariableDoc.is_instvar" class="py-name" href="#" onclick="return doclink('link-543', 'is_instvar', 'link-302');">is_instvar</a></tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L1357"></a><tt class="py-lineno">1357</tt>  <tt class="py-line">         <tt class="py-name">prev_line_doc</tt><tt class="py-op">.</tt><tt id="link-544" class="py-name"><a title="epydoc.apidoc.APIDoc.docstring" class="py-name" href="#" onclick="return doclink('link-544', 'docstring', 'link-531');">docstring</a></tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-545" class="py-name"><a title="epydoc.apido [...]
+<a name="L1358"></a><tt class="py-lineno">1358</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">parent_docs</tt><tt class="py-op">)</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> < [...]
+<a name="L1359"></a><tt class="py-lineno">1359</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">parent_docs</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt id="link-546" class="py-name"><a title="epydoc.apidoc.ClassDoc" class="py-name" href="#" onclick="return doclink('link-546', 'ClassDoc', 'link-493');">ClassDoc</a></tt><tt class= [...]
+<a name="L1360"></a><tt class="py-lineno">1360</tt>  <tt class="py-line">                <tt id="link-547" class="py-name"><a title="epydoc.docparser.set_variable" class="py-name" href="#" onclick="return doclink('link-547', 'set_variable', 'link-304');">set_variable</a></tt><tt class="py-op">(</tt><tt class="py-name">parent_docs</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">prev_line_doc</tt><tt class="py-op">, [...]
+<a name="L1361"></a><tt class="py-lineno">1361</tt>  <tt class="py-line">                <tt class="py-name">added_instvar</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L1362"></a><tt class="py-lineno">1362</tt>  <tt class="py-line">                <tt class="py-keyword">break</tt> </tt>
+<a name="L1363"></a><tt class="py-lineno">1363</tt>  <tt class="py-line"> </tt>
+<a name="L1364"></a><tt class="py-lineno">1364</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">prev_line_doc</tt><tt class="py-op">.</tt><tt id="link-548" class="py-name"><a title="epydoc.apidoc.APIDoc.docstring" class="py-name" href="#" onclick="return doclink('link-548', 'docstring', 'link-531');">docstring</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt [...]
+<a name="L1365"></a><tt class="py-lineno">1365</tt>  <tt class="py-line">        <tt id="link-550" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-550', 'log', 'link-50');">log</a></tt><tt class="py-op">.</tt><tt id="link-551" class="py-name"><a title="epydoc.checker.DocChecker.warning
+epydoc.log.warning" class="py-name" href="#" onclick="return doclink('link-551', 'warning', 'link-214');">warning</a></tt><tt class="py-op">(</tt><tt class="py-string">"%s has both a comment-docstring and a normal "</tt> </tt>
+<a name="L1366"></a><tt class="py-lineno">1366</tt>  <tt class="py-line">                    <tt class="py-string">"(string) docstring; ignoring the comment-"</tt> </tt>
+<a name="L1367"></a><tt class="py-lineno">1367</tt>  <tt class="py-line">                    <tt class="py-string">"docstring."</tt> <tt class="py-op">%</tt> <tt class="py-name">prev_line_doc</tt><tt class="py-op">.</tt><tt id="link-552" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-552', 'canonical_name', 'link-37');">canonical_name</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1368"></a><tt class="py-lineno">1368</tt>  <tt class="py-line">         </tt>
+<a name="L1369"></a><tt class="py-lineno">1369</tt>  <tt class="py-line">    <tt class="py-name">prev_line_doc</tt><tt class="py-op">.</tt><tt id="link-553" class="py-name"><a title="epydoc.apidoc.APIDoc.docstring" class="py-name" href="#" onclick="return doclink('link-553', 'docstring', 'link-531');">docstring</a></tt> <tt class="py-op">=</tt> <tt id="link-554" class="py-name"><a title="epydoc.apidoc.APIDoc.docstring" class="py-name" href="#" onclick="return doclink('link-554', 'docstri [...]
+<a name="L1370"></a><tt class="py-lineno">1370</tt>  <tt class="py-line">    <tt class="py-name">prev_line_doc</tt><tt class="py-op">.</tt><tt id="link-555" class="py-name" targets="Variable epydoc.apidoc.APIDoc.docstring_lineno=epydoc.apidoc.APIDoc-class.html#docstring_lineno"><a title="epydoc.apidoc.APIDoc.docstring_lineno" class="py-name" href="#" onclick="return doclink('link-555', 'docstring_lineno', 'link-555');">docstring_lineno</a></tt> <tt class="py-op">=</tt> <tt id="link-556"  [...]
+<a name="L1371"></a><tt class="py-lineno">1371</tt>  <tt class="py-line"> </tt>
+<a name="L1372"></a><tt class="py-lineno">1372</tt>  <tt class="py-line">    <tt class="py-comment"># If the modified APIDoc is an instance variable, and we added it</tt> </tt>
+<a name="L1373"></a><tt class="py-lineno">1373</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># to the class's variables list here, then it still needs to be</tt> </tt>
+<a name="L1374"></a><tt class="py-lineno">1374</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># grouped too; so return it for use as the new "prev_line_doc."</tt> </tt>
+<a name="L1375"></a><tt class="py-lineno">1375</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">added_instvar</tt><tt class="py-op">:</tt> </tt>
+<a name="L1376"></a><tt class="py-lineno">1376</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">prev_line_doc</tt> </tt>
+</div><a name="L1377"></a><tt class="py-lineno">1377</tt>  <tt class="py-line"> </tt>
+<a name="L1378"></a><tt class="py-lineno">1378</tt>  <tt class="py-line">     </tt>
+<a name="L1379"></a><tt class="py-lineno">1379</tt>  <tt class="py-line"><tt class="py-comment">#/////////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L1380"></a><tt class="py-lineno">1380</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Line handler: function declarations</tt> </tt>
+<a name="L1381"></a><tt class="py-lineno">1381</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#/////////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L1382"></a><tt class="py-lineno">1382</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="process_funcdef"></a><div id="process_funcdef-def"><a name="L1383"></a><tt class="py-lineno">1383</tt> <a class="py-toggle" href="#" id="process_funcdef-toggle" onclick="return toggle('process_funcdef');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docparser-module.html#process_funcdef">process_funcdef</a><tt class="py-op">(</tt><tt class="py-param">line</tt><tt class="py-op">,</tt> <tt class="py-param">parent_docs</tt><tt class=" [...]
+<a name="L1384"></a><tt class="py-lineno">1384</tt>  <tt class="py-line">                    <tt class="py-param">comments</tt><tt class="py-op">,</tt> <tt class="py-param">decorators</tt><tt class="py-op">,</tt> <tt class="py-param">encoding</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="process_funcdef-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="process_funcdef-expanded"><a name="L1385"></a><tt class="py-lineno">1385</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L1386"></a><tt class="py-lineno">1386</tt>  <tt class="py-line"><tt class="py-docstring">    The line handler for function declaration lines, such as:</tt> </tt>
+<a name="L1387"></a><tt class="py-lineno">1387</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1388"></a><tt class="py-lineno">1388</tt>  <tt class="py-line"><tt class="py-docstring">        >>> def f(a, b=22, (c,d)):</tt> </tt>
+<a name="L1389"></a><tt class="py-lineno">1389</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1390"></a><tt class="py-lineno">1390</tt>  <tt class="py-line"><tt class="py-docstring">    This handler creates and initializes a new C{VariableDoc}</tt> </tt>
+<a name="L1391"></a><tt class="py-lineno">1391</tt>  <tt class="py-line"><tt class="py-docstring">    containing a C{RoutineDoc}, adds the C{VariableDoc} to the</tt> </tt>
+<a name="L1392"></a><tt class="py-lineno">1392</tt>  <tt class="py-line"><tt class="py-docstring">    containing namespace, and returns the C{RoutineDoc}.</tt> </tt>
+<a name="L1393"></a><tt class="py-lineno">1393</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1394"></a><tt class="py-lineno">1394</tt>  <tt class="py-line">    <tt class="py-comment"># Check syntax.</tt> </tt>
+<a name="L1395"></a><tt class="py-lineno">1395</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">line</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-number">4</tt> <tt class="py-keyword">or</tt> <tt class="py-name">line</tt><tt class="py-op">[</tt><tt class="py-number">3</tt><tt class="py-op">]</tt> <tt class="py-op">!=</tt> <tt class="py-op">(</tt><tt clas [...]
+<a name="L1396"></a><tt class="py-lineno">1396</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt id="link-557" class="py-name"><a title="epydoc.docparser.ParseError
+epydoc.markup.ParseError" class="py-name" href="#" onclick="return doclink('link-557', 'ParseError', 'link-87');">ParseError</a></tt><tt class="py-op">(</tt><tt class="py-string">"Bad function definition line"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1397"></a><tt class="py-lineno">1397</tt>  <tt class="py-line">     </tt>
+<a name="L1398"></a><tt class="py-lineno">1398</tt>  <tt class="py-line">    <tt class="py-comment"># If we're not in a namespace, then ignore it.</tt> </tt>
+<a name="L1399"></a><tt class="py-lineno">1399</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">parent_doc</tt> <tt class="py-op">=</tt> <tt class="py-name">parent_docs</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L1400"></a><tt class="py-lineno">1400</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">parent_doc</tt><tt class="py-op">,</tt> <tt id="link-558" class="py-name"><a title="epydoc.apidoc.NamespaceDoc" class="py-name" href="#" onclick="return doclink('link-558', 'NamespaceDoc', 'link-181');">NamespaceDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt>  [...]
+<a name="L1401"></a><tt class="py-lineno">1401</tt>  <tt class="py-line"> </tt>
+<a name="L1402"></a><tt class="py-lineno">1402</tt>  <tt class="py-line">    <tt class="py-comment"># Get the function's name</tt> </tt>
+<a name="L1403"></a><tt class="py-lineno">1403</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">func_name</tt> <tt class="py-op">=</tt> <tt id="link-559" class="py-name"><a title="epydoc.docparser.parse_name" class="py-name" href="#" onclick="return doclink('link-559', 'parse_name', 'link-323');">parse_name</a></tt><tt class="py-op">(</tt><tt class="py-name">line</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op" [...]
+<a name="L1404"></a><tt class="py-lineno">1404</tt>  <tt class="py-line">    <tt id="link-560" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-560', 'canonical_name', 'link-37');">canonical_name</a></tt> <tt class="py-op">=</tt> <tt id="link-561" class="py-name"><a title="epydoc.apidoc.DottedName" class="py-name" href="#" onclick="return doclink('link-561', 'DottedName', 'link-33');">DottedName</a></tt><tt class="py-op">(</tt><tt class="py-name">parent_doc</tt><tt class="py-op">.</tt><tt id="link-562" class="py-name"><a title="epydo [...]
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-562', 'canonical_name', 'link-37');">canonical_name</a></tt><tt class="py-op">,</tt> <tt class="py-name">func_name</tt><tt class="py-op">)</tt> </tt>
+<a name="L1405"></a><tt class="py-lineno">1405</tt>  <tt class="py-line"> </tt>
+<a name="L1406"></a><tt class="py-lineno">1406</tt>  <tt class="py-line">    <tt class="py-comment"># Create the function's RoutineDoc.</tt> </tt>
+<a name="L1407"></a><tt class="py-lineno">1407</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">func_doc</tt> <tt class="py-op">=</tt> <tt id="link-563" class="py-name"><a title="epydoc.apidoc.RoutineDoc" class="py-name" href="#" onclick="return doclink('link-563', 'RoutineDoc', 'link-486');">RoutineDoc</a></tt><tt class="py-op">(</tt><tt id="link-564" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-564', 'canonical_name', 'link-37');">canonical_name</a></tt><tt class="py-op">=</tt><tt id="link-565" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-565', 'canonical_name', 'link-37');">canonical_name</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L1408"></a><tt class="py-lineno">1408</tt>  <tt class="py-line">                          <tt id="link-566" class="py-name"><a title="epydoc.apidoc.ValueDoc.defining_module
+epydoc.apidoc.VariableDoc.defining_module" class="py-name" href="#" onclick="return doclink('link-566', 'defining_module', 'link-79');">defining_module</a></tt><tt class="py-op">=</tt><tt class="py-name">parent_docs</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L1409"></a><tt class="py-lineno">1409</tt>  <tt class="py-line">                          <tt id="link-567" class="py-name"><a title="epydoc.apidoc.RoutineDoc.lineno" class="py-name" href="#" onclick="return doclink('link-567', 'lineno', 'link-207');">lineno</a></tt><tt class="py-op">=</tt><tt id="link-568" class="py-name"><a title="epydoc.apidoc.RoutineDoc.lineno" class="py-name" href="#" onclick="return doclink('link-568', 'lineno', 'link-207');">lineno</a></tt><tt class="py-o [...]
+<a name="L1410"></a><tt class="py-lineno">1410</tt>  <tt class="py-line"> </tt>
+<a name="L1411"></a><tt class="py-lineno">1411</tt>  <tt class="py-line">    <tt class="py-comment"># Process the signature.</tt> </tt>
+<a name="L1412"></a><tt class="py-lineno">1412</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-570" class="py-name" targets="Function epydoc.docparser.init_arglist()=epydoc.docparser-module.html#init_arglist"><a title="epydoc.docparser.init_arglist" class="py-name" href="#" onclick="return doclink('link-570', 'init_arglist', 'link-570');">init_arglist</a></tt><tt class="py-op">(</tt><tt class="py-name">func_doc</tt><tt class="py-op">,</tt> <tt class="py-name">line< [...]
+<a name="L1413"></a><tt class="py-lineno">1413</tt>  <tt class="py-line"> </tt>
+<a name="L1414"></a><tt class="py-lineno">1414</tt>  <tt class="py-line">    <tt class="py-comment"># If the preceeding comment includes a docstring, then add it.</tt> </tt>
+<a name="L1415"></a><tt class="py-lineno">1415</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-571" class="py-name"><a title="epydoc.docparser.add_docstring_from_comments" class="py-name" href="#" onclick="return doclink('link-571', 'add_docstring_from_comments', 'link-470');">add_docstring_from_comments</a></tt><tt class="py-op">(</tt><tt class="py-name">func_doc</tt><tt class="py-op">,</tt> <tt class="py-name">comments</tt><tt class="py-op">)</tt> </tt>
+<a name="L1416"></a><tt class="py-lineno">1416</tt>  <tt class="py-line">     </tt>
+<a name="L1417"></a><tt class="py-lineno">1417</tt>  <tt class="py-line">    <tt class="py-comment"># Apply any decorators.</tt> </tt>
+<a name="L1418"></a><tt class="py-lineno">1418</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">func_doc</tt><tt class="py-op">.</tt><tt id="link-572" class="py-name"><a title="epydoc.apidoc.RoutineDoc.decorators" class="py-name" href="#" onclick="return doclink('link-572', 'decorators', 'link-208');">decorators</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt id="link-573" class="py-name"><a title="epydoc.docparser.pp_toktree" class="py-name" hr [...]
+<a name="L1419"></a><tt class="py-lineno">1419</tt>  <tt class="py-line">    <tt id="link-575" class="py-name"><a title="epydoc.apidoc.RoutineDoc.decorators" class="py-name" href="#" onclick="return doclink('link-575', 'decorators', 'link-208');">decorators</a></tt><tt class="py-op">.</tt><tt class="py-name">reverse</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1420"></a><tt class="py-lineno">1420</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">decorator</tt> <tt class="py-keyword">in</tt> <tt id="link-576" class="py-name"><a title="epydoc.apidoc.RoutineDoc.decorators" class="py-name" href="#" onclick="return doclink('link-576', 'decorators', 'link-208');">decorators</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1421"></a><tt class="py-lineno">1421</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L1422"></a><tt class="py-lineno">1422</tt>  <tt class="py-line">            <tt class="py-name">deco_name</tt> <tt class="py-op">=</tt> <tt id="link-577" class="py-name"><a title="epydoc.docparser.parse_dotted_name" class="py-name" href="#" onclick="return doclink('link-577', 'parse_dotted_name', 'link-295');">parse_dotted_name</a></tt><tt class="py-op">(</tt><tt class="py-name">decorator</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class=" [...]
+<a name="L1423"></a><tt class="py-lineno">1423</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt id="link-578" class="py-name"><a title="epydoc.docparser.ParseError
+epydoc.markup.ParseError" class="py-name" href="#" onclick="return doclink('link-578', 'ParseError', 'link-87');">ParseError</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1424"></a><tt class="py-lineno">1424</tt>  <tt class="py-line">            <tt class="py-name">deco_name</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L1425"></a><tt class="py-lineno">1425</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">func_doc</tt><tt class="py-op">.</tt><tt id="link-579" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-579', 'canonical_name', 'link-37');">canonical_name</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt id="link-580" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-580', 'UNKNOWN', 'link-38');">UNKNOWN</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1426"></a><tt class="py-lineno">1426</tt>  <tt class="py-line">            <tt class="py-name">deco_repr</tt> <tt class="py-op">=</tt> <tt class="py-string">'%s(%s)'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt id="link-581" class="py-name"><a title="epydoc.docparser.pp_toktree" class="py-name" href="#" onclick="return doclink('link-581', 'pp_toktree', 'link-505');">pp_toktree</a></tt><tt class="py-op">(</tt><tt class="py-name">decorator</tt><tt class="py-op">[</tt [...]
+<a name="L1427"></a><tt class="py-lineno">1427</tt>  <tt class="py-line">                                    <tt class="py-name">func_doc</tt><tt class="py-op">.</tt><tt id="link-582" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-582', 'canonical_name', 'link-37');">canonical_name</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1428"></a><tt class="py-lineno">1428</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">func_doc</tt><tt class="py-op">.</tt><tt id="link-583" class="py-name"><a title="epydoc.apidoc.ValueDoc.parse_repr" class="py-name" href="#" onclick="return doclink('link-583', 'parse_repr', 'link-504');">parse_repr</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op" [...]
+<a name="L1429"></a><tt class="py-lineno">1429</tt>  <tt class="py-line">            <tt class="py-comment"># [xx] this case should be improved.. when will func_doc</tt> </tt>
+<a name="L1430"></a><tt class="py-lineno">1430</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># have a known parse_repr??</tt> </tt>
+<a name="L1431"></a><tt class="py-lineno">1431</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">deco_repr</tt> <tt class="py-op">=</tt> <tt class="py-string">'%s(%s)'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt id="link-585" class="py-name"><a title="epydoc.docparser.pp_toktree" class="py-name" href="#" onclick="return doclink('link-585', 'pp_toktree', 'link-505');">pp_toktree</a></tt><tt class="py-op">(</tt><tt class="py-name">decorator [...]
+<a name="L1432"></a><tt class="py-lineno">1432</tt>  <tt class="py-line">                                    <tt class="py-name">func_doc</tt><tt class="py-op">.</tt><tt id="link-586" class="py-name"><a title="epydoc.apidoc.ValueDoc.parse_repr" class="py-name" href="#" onclick="return doclink('link-586', 'parse_repr', 'link-504');">parse_repr</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1433"></a><tt class="py-lineno">1433</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1434"></a><tt class="py-lineno">1434</tt>  <tt class="py-line">            <tt class="py-name">deco_repr</tt> <tt class="py-op">=</tt> <tt id="link-587" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-587', 'UNKNOWN', 'link-38');">UNKNOWN</a></tt> </tt>
+<a name="L1435"></a><tt class="py-lineno">1435</tt>  <tt class="py-line">        <tt class="py-name">func_doc</tt> <tt class="py-op">=</tt> <tt id="link-588" class="py-name"><a title="epydoc.docparser.apply_decorator" class="py-name" href="#" onclick="return doclink('link-588', 'apply_decorator', 'link-500');">apply_decorator</a></tt><tt class="py-op">(</tt><tt class="py-name">deco_name</tt><tt class="py-op">,</tt> <tt class="py-name">func_doc</tt><tt class="py-op">)</tt> </tt>
+<a name="L1436"></a><tt class="py-lineno">1436</tt>  <tt class="py-line">        <tt class="py-name">func_doc</tt><tt class="py-op">.</tt><tt id="link-589" class="py-name"><a title="epydoc.apidoc.ValueDoc.parse_repr" class="py-name" href="#" onclick="return doclink('link-589', 'parse_repr', 'link-504');">parse_repr</a></tt> <tt class="py-op">=</tt> <tt class="py-name">deco_repr</tt> </tt>
+<a name="L1437"></a><tt class="py-lineno">1437</tt>  <tt class="py-line">        <tt class="py-comment"># [XX] Is there a reson the following should be done?  It</tt> </tt>
+<a name="L1438"></a><tt class="py-lineno">1438</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># causes the grouping code to break.  Presumably the canonical</tt> </tt>
+<a name="L1439"></a><tt class="py-lineno">1439</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># name should remain valid if we're just applying a standard</tt> </tt>
+<a name="L1440"></a><tt class="py-lineno">1440</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># decorator.</tt> </tt>
+<a name="L1441"></a><tt class="py-lineno">1441</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#func_doc.canonical_name = UNKNOWN</tt> </tt>
+<a name="L1442"></a><tt class="py-lineno">1442</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L1443"></a><tt class="py-lineno">1443</tt>  <tt class="py-line">    <tt class="py-comment"># Add a variable to the containing namespace.</tt> </tt>
+<a name="L1444"></a><tt class="py-lineno">1444</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">var_doc</tt> <tt class="py-op">=</tt> <tt id="link-590" class="py-name"><a title="epydoc.apidoc.VariableDoc" class="py-name" href="#" onclick="return doclink('link-590', 'VariableDoc', 'link-249');">VariableDoc</a></tt><tt class="py-op">(</tt><tt id="link-591" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink [...]
+<a name="L1445"></a><tt class="py-lineno">1445</tt>  <tt class="py-line">                          <tt id="link-593" class="py-name"><a title="epydoc.apidoc.VariableDoc.is_imported" class="py-name" href="#" onclick="return doclink('link-593', 'is_imported', 'link-115');">is_imported</a></tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> <tt id="link-594" class="py-name"><a title="epydoc.apidoc.VariableDoc.is_alias" class="py-name" href="#" onclick="return  [...]
+<a name="L1446"></a><tt class="py-lineno">1446</tt>  <tt class="py-line">                          <tt id="link-595" class="py-name"><a title="epydoc.apidoc.APIDoc.docs_extracted_by" class="py-name" href="#" onclick="return doclink('link-595', 'docs_extracted_by', 'link-78');">docs_extracted_by</a></tt><tt class="py-op">=</tt><tt class="py-string">'parser'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1447"></a><tt class="py-lineno">1447</tt>  <tt class="py-line">    <tt id="link-596" class="py-name"><a title="epydoc.docparser.set_variable" class="py-name" href="#" onclick="return doclink('link-596', 'set_variable', 'link-304');">set_variable</a></tt><tt class="py-op">(</tt><tt class="py-name">parent_doc</tt><tt class="py-op">,</tt> <tt class="py-name">var_doc</tt><tt class="py-op">)</tt> </tt>
+<a name="L1448"></a><tt class="py-lineno">1448</tt>  <tt class="py-line">     </tt>
+<a name="L1449"></a><tt class="py-lineno">1449</tt>  <tt class="py-line">    <tt class="py-comment"># Return the new ValueDoc.</tt> </tt>
+<a name="L1450"></a><tt class="py-lineno">1450</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">return</tt> <tt class="py-name">func_doc</tt> </tt>
+</div><a name="L1451"></a><tt class="py-lineno">1451</tt>  <tt class="py-line"> </tt>
+<a name="apply_decorator"></a><div id="apply_decorator-def"><a name="L1452"></a><tt class="py-lineno">1452</tt> <a class="py-toggle" href="#" id="apply_decorator-toggle" onclick="return toggle('apply_decorator');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docparser-module.html#apply_decorator">apply_decorator</a><tt class="py-op">(</tt><tt class="py-param">decorator_name</tt><tt class="py-op">,</tt> <tt class="py-param">func_doc</tt><tt  [...]
+</div><div id="apply_decorator-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="apply_decorator-expanded"><a name="L1453"></a><tt class="py-lineno">1453</tt>  <tt class="py-line">    <tt class="py-comment"># [xx] what if func_doc is not a RoutineDoc?</tt> </tt>
+<a name="L1454"></a><tt class="py-lineno">1454</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">decorator_name</tt> <tt class="py-op">==</tt> <tt id="link-597" class="py-name"><a title="epydoc.apidoc.DottedName" class="py-name" href="#" onclick="return doclink('link-597', 'DottedName', 'link-33');">DottedName</a></tt><tt class="py-op">(</tt><tt class="py-string">'staticmethod'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1455"></a><tt class="py-lineno">1455</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-598" class="py-name" targets="Class epydoc.apidoc.StaticMethodDoc=epydoc.apidoc.StaticMethodDoc-class.html"><a title="epydoc.apidoc.StaticMethodDoc" class="py-name" href="#" onclick="return doclink('link-598', 'StaticMethodDoc', 'link-598');">StaticMethodDoc</a></tt><tt class="py-op">(</tt><tt class="py-op">**</tt><tt class="py-name">func_doc</tt><tt class="py- [...]
+<a name="L1456"></a><tt class="py-lineno">1456</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">decorator_name</tt> <tt class="py-op">==</tt> <tt id="link-599" class="py-name"><a title="epydoc.apidoc.DottedName" class="py-name" href="#" onclick="return doclink('link-599', 'DottedName', 'link-33');">DottedName</a></tt><tt class="py-op">(</tt><tt class="py-string">'classmethod'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1457"></a><tt class="py-lineno">1457</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-600" class="py-name" targets="Class epydoc.apidoc.ClassMethodDoc=epydoc.apidoc.ClassMethodDoc-class.html"><a title="epydoc.apidoc.ClassMethodDoc" class="py-name" href="#" onclick="return doclink('link-600', 'ClassMethodDoc', 'link-600');">ClassMethodDoc</a></tt><tt class="py-op">(</tt><tt class="py-op">**</tt><tt class="py-name">func_doc</tt><tt class="py-op">. [...]
+<a name="L1458"></a><tt class="py-lineno">1458</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt id="link-601" class="py-name"><a title="epydoc.docparser.DEFAULT_DECORATOR_BEHAVIOR" class="py-name" href="#" onclick="return doclink('link-601', 'DEFAULT_DECORATOR_BEHAVIOR', 'link-19');">DEFAULT_DECORATOR_BEHAVIOR</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'transparent'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1459"></a><tt class="py-lineno">1459</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">func_doc</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">(</tt><tt class="py-op">**</tt><tt class="py-name">func_doc</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">)</tt> <tt class="py-comment"># make a copy.</tt> </tt>
+<a name="L1460"></a><tt class="py-lineno">1460</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt id="link-602" class="py-name"><a title="epydoc.docparser.DEFAULT_DECORATOR_BEHAVIOR" class="py-name" href="#" onclick="return doclink('link-602', 'DEFAULT_DECORATOR_BEHAVIOR', 'link-19');">DEFAULT_DECORATOR_BEHAVIOR</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'opaque'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1461"></a><tt class="py-lineno">1461</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-603" class="py-name"><a title="epydoc.apidoc.GenericValueDoc" class="py-name" href="#" onclick="return doclink('link-603', 'GenericValueDoc', 'link-506');">GenericValueDoc</a></tt><tt class="py-op">(</tt><tt id="link-604" class="py-name"><a title="epydoc.apidoc.APIDoc.docs_extracted_by" class="py-name" href="#" onclick="return doclink('link-604', 'docs_extracte [...]
+<a name="L1462"></a><tt class="py-lineno">1462</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1463"></a><tt class="py-lineno">1463</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">,</tt> <tt class="py-string">'Bad value for DEFAULT_DECORATOR_BEHAVIOR'</tt> </tt>
+</div><a name="L1464"></a><tt class="py-lineno">1464</tt>  <tt class="py-line"> </tt>
+<a name="init_arglist"></a><div id="init_arglist-def"><a name="L1465"></a><tt class="py-lineno">1465</tt> <a class="py-toggle" href="#" id="init_arglist-toggle" onclick="return toggle('init_arglist');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docparser-module.html#init_arglist">init_arglist</a><tt class="py-op">(</tt><tt class="py-param">func_doc</tt><tt class="py-op">,</tt> <tt class="py-param">arglist</tt><tt class="py-op">)</tt><tt c [...]
+</div><div id="init_arglist-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="init_arglist-expanded"><a name="L1466"></a><tt class="py-lineno">1466</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">arglist</tt><tt class="py-op">,</tt> <tt class="py-name">list</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-name">arglist [...]
+<a name="L1467"></a><tt class="py-lineno">1467</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt id="link-605" class="py-name"><a title="epydoc.docparser.ParseError
+epydoc.markup.ParseError" class="py-name" href="#" onclick="return doclink('link-605', 'ParseError', 'link-87');">ParseError</a></tt><tt class="py-op">(</tt><tt class="py-string">"Bad argument list"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1468"></a><tt class="py-lineno">1468</tt>  <tt class="py-line"> </tt>
+<a name="L1469"></a><tt class="py-lineno">1469</tt>  <tt class="py-line">    <tt class="py-comment"># Initialize to defaults.</tt> </tt>
+<a name="L1470"></a><tt class="py-lineno">1470</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">func_doc</tt><tt class="py-op">.</tt><tt id="link-606" class="py-name"><a title="epydoc.apidoc.RoutineDoc.posargs" class="py-name" href="#" onclick="return doclink('link-606', 'posargs', 'link-487');">posargs</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L1471"></a><tt class="py-lineno">1471</tt>  <tt class="py-line">    <tt class="py-name">func_doc</tt><tt class="py-op">.</tt><tt id="link-607" class="py-name" targets="Variable epydoc.apidoc.RoutineDoc.posarg_defaults=epydoc.apidoc.RoutineDoc-class.html#posarg_defaults"><a title="epydoc.apidoc.RoutineDoc.posarg_defaults" class="py-name" href="#" onclick="return doclink('link-607', 'posarg_defaults', 'link-607');">posarg_defaults</a></tt> <tt class="py-op">=</tt> <tt class="py-op [...]
+<a name="L1472"></a><tt class="py-lineno">1472</tt>  <tt class="py-line">    <tt class="py-name">func_doc</tt><tt class="py-op">.</tt><tt id="link-608" class="py-name" targets="Variable epydoc.apidoc.RoutineDoc.vararg=epydoc.apidoc.RoutineDoc-class.html#vararg"><a title="epydoc.apidoc.RoutineDoc.vararg" class="py-name" href="#" onclick="return doclink('link-608', 'vararg', 'link-608');">vararg</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L1473"></a><tt class="py-lineno">1473</tt>  <tt class="py-line">    <tt class="py-name">func_doc</tt><tt class="py-op">.</tt><tt id="link-609" class="py-name" targets="Variable epydoc.apidoc.RoutineDoc.kwarg=epydoc.apidoc.RoutineDoc-class.html#kwarg"><a title="epydoc.apidoc.RoutineDoc.kwarg" class="py-name" href="#" onclick="return doclink('link-609', 'kwarg', 'link-609');">kwarg</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L1474"></a><tt class="py-lineno">1474</tt>  <tt class="py-line"> </tt>
+<a name="L1475"></a><tt class="py-lineno">1475</tt>  <tt class="py-line">    <tt class="py-comment"># Divide the arglist into individual args.</tt> </tt>
+<a name="L1476"></a><tt class="py-lineno">1476</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">args</tt> <tt class="py-op">=</tt> <tt id="link-610" class="py-name"><a title="epydoc.docparser.split_on" class="py-name" href="#" onclick="return doclink('link-610', 'split_on', 'link-296');">split_on</a></tt><tt class="py-op">(</tt><tt class="py-name">arglist</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">-</tt>< [...]
+<a name="L1477"></a><tt class="py-lineno">1477</tt>  <tt class="py-line"> </tt>
+<a name="L1478"></a><tt class="py-lineno">1478</tt>  <tt class="py-line">    <tt class="py-comment"># Keyword argument.</tt> </tt>
+<a name="L1479"></a><tt class="py-lineno">1479</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">args</tt> <tt class="py-keyword">and</tt> <tt class="py-name">args</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-op">(</tt><tt class="py-name">token</tt><tt clas [...]
+<a name="L1480"></a><tt class="py-lineno">1480</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">args</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-number">2</tt> <tt class="py-keyword">or</tt> <tt class="py-name">args</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class=" [...]
+<a name="L1481"></a><tt class="py-lineno">1481</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt id="link-611" class="py-name"><a title="epydoc.docparser.ParseError
+epydoc.markup.ParseError" class="py-name" href="#" onclick="return doclink('link-611', 'ParseError', 'link-87');">ParseError</a></tt><tt class="py-op">(</tt><tt class="py-string">"Expected name after ** in argument list"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1482"></a><tt class="py-lineno">1482</tt>  <tt class="py-line">        <tt class="py-name">func_doc</tt><tt class="py-op">.</tt><tt id="link-612" class="py-name"><a title="epydoc.apidoc.RoutineDoc.kwarg" class="py-name" href="#" onclick="return doclink('link-612', 'kwarg', 'link-609');">kwarg</a></tt> <tt class="py-op">=</tt> <tt class="py-name">args</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">[</tt>< [...]
+<a name="L1483"></a><tt class="py-lineno">1483</tt>  <tt class="py-line">        <tt class="py-name">args</tt><tt class="py-op">.</tt><tt class="py-name">pop</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1484"></a><tt class="py-lineno">1484</tt>  <tt class="py-line"> </tt>
+<a name="L1485"></a><tt class="py-lineno">1485</tt>  <tt class="py-line">    <tt class="py-comment"># Vararg argument.</tt> </tt>
+<a name="L1486"></a><tt class="py-lineno">1486</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">args</tt> <tt class="py-keyword">and</tt> <tt class="py-name">args</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-op">(</tt><tt class="py-name">token</tt><tt clas [...]
+<a name="L1487"></a><tt class="py-lineno">1487</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">args</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-number">2</tt> <tt class="py-keyword">or</tt> <tt class="py-name">args</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class=" [...]
+<a name="L1488"></a><tt class="py-lineno">1488</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt id="link-613" class="py-name"><a title="epydoc.docparser.ParseError
+epydoc.markup.ParseError" class="py-name" href="#" onclick="return doclink('link-613', 'ParseError', 'link-87');">ParseError</a></tt><tt class="py-op">(</tt><tt class="py-string">"Expected name after * in argument list"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1489"></a><tt class="py-lineno">1489</tt>  <tt class="py-line">        <tt class="py-name">func_doc</tt><tt class="py-op">.</tt><tt id="link-614" class="py-name"><a title="epydoc.apidoc.RoutineDoc.vararg" class="py-name" href="#" onclick="return doclink('link-614', 'vararg', 'link-608');">vararg</a></tt> <tt class="py-op">=</tt> <tt class="py-name">args</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">[</t [...]
+<a name="L1490"></a><tt class="py-lineno">1490</tt>  <tt class="py-line">        <tt class="py-name">args</tt><tt class="py-op">.</tt><tt class="py-name">pop</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1491"></a><tt class="py-lineno">1491</tt>  <tt class="py-line"> </tt>
+<a name="L1492"></a><tt class="py-lineno">1492</tt>  <tt class="py-line">    <tt class="py-comment"># Positional arguments.</tt> </tt>
+<a name="L1493"></a><tt class="py-lineno">1493</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">for</tt> <tt id="link-615" class="py-name" targets="Method epydoc.markup.Field.arg()=epydoc.markup.Field-class.html#arg"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-615', 'arg', 'link-615');">arg</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">args</tt><tt class="py-op">:</tt> </tt>
+<a name="L1494"></a><tt class="py-lineno">1494</tt>  <tt class="py-line">        <tt class="py-name">func_doc</tt><tt class="py-op">.</tt><tt id="link-616" class="py-name"><a title="epydoc.apidoc.RoutineDoc.posargs" class="py-name" href="#" onclick="return doclink('link-616', 'posargs', 'link-487');">posargs</a></tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-617" class="py-name" targets="Function epydoc.docparser.parse_funcdef_arg()=epydoc [...]
+<a name="L1495"></a><tt class="py-lineno">1495</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-619" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-619', 'arg', 'link-615');">arg</a></tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L1496"></a><tt class="py-lineno">1496</tt>  <tt class="py-line">            <tt class="py-name">func_doc</tt><tt class="py-op">.</tt><tt id="link-620" class="py-name"><a title="epydoc.apidoc.RoutineDoc.posarg_defaults" class="py-name" href="#" onclick="return doclink('link-620', 'posarg_defaults', 'link-607');">posarg_defaults</a></tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+<a name="L1497"></a><tt class="py-lineno">1497</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt id="link-621" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-621', 'arg', 'link-615');">arg</a></tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">!=</tt> <tt class="py-op">(</tt><tt class="py-name">token</tt><tt class="py-op">.</tt><tt class="py-name">OP</tt><tt cla [...]
+<a name="L1498"></a><tt class="py-lineno">1498</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt id="link-623" class="py-name"><a title="epydoc.docparser.ParseError
+epydoc.markup.ParseError" class="py-name" href="#" onclick="return doclink('link-623', 'ParseError', 'link-87');">ParseError</a></tt><tt class="py-op">(</tt><tt class="py-string">"Bad argument list"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1499"></a><tt class="py-lineno">1499</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1500"></a><tt class="py-lineno">1500</tt>  <tt class="py-line">            <tt class="py-name">default_repr</tt> <tt class="py-op">=</tt> <tt id="link-624" class="py-name"><a title="epydoc.docparser.pp_toktree" class="py-name" href="#" onclick="return doclink('link-624', 'pp_toktree', 'link-505');">pp_toktree</a></tt><tt class="py-op">(</tt><tt id="link-625" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-625', 'arg', 'l [...]
+<a name="L1501"></a><tt class="py-lineno">1501</tt>  <tt class="py-line">            <tt class="py-name">default_val</tt> <tt class="py-op">=</tt> <tt id="link-626" class="py-name"><a title="epydoc.apidoc.GenericValueDoc" class="py-name" href="#" onclick="return doclink('link-626', 'GenericValueDoc', 'link-506');">GenericValueDoc</a></tt><tt class="py-op">(</tt><tt id="link-627" class="py-name"><a title="epydoc.apidoc.ValueDoc.parse_repr" class="py-name" href="#" onclick="return doclink( [...]
+<a name="L1502"></a><tt class="py-lineno">1502</tt>  <tt class="py-line">                                          <tt id="link-628" class="py-name"><a title="epydoc.apidoc.APIDoc.docs_extracted_by" class="py-name" href="#" onclick="return doclink('link-628', 'docs_extracted_by', 'link-78');">docs_extracted_by</a></tt><tt class="py-op">=</tt><tt class="py-string">'parser'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1503"></a><tt class="py-lineno">1503</tt>  <tt class="py-line">            <tt class="py-name">func_doc</tt><tt class="py-op">.</tt><tt id="link-629" class="py-name"><a title="epydoc.apidoc.RoutineDoc.posarg_defaults" class="py-name" href="#" onclick="return doclink('link-629', 'posarg_defaults', 'link-607');">posarg_defaults</a></tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">default_val</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1504"></a><tt class="py-lineno">1504</tt>  <tt class="py-line"> </tt>
+<a name="L1505"></a><tt class="py-lineno">1505</tt>  <tt class="py-line"><tt class="py-comment">#/////////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L1506"></a><tt class="py-lineno">1506</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Line handler: class declarations</tt> </tt>
+<a name="L1507"></a><tt class="py-lineno">1507</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#/////////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L1508"></a><tt class="py-lineno">1508</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="process_classdef"></a><div id="process_classdef-def"><a name="L1509"></a><tt class="py-lineno">1509</tt> <a class="py-toggle" href="#" id="process_classdef-toggle" onclick="return toggle('process_classdef');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docparser-module.html#process_classdef">process_classdef</a><tt class="py-op">(</tt><tt class="py-param">line</tt><tt class="py-op">,</tt> <tt class="py-param">parent_docs</tt><tt c [...]
+<a name="L1510"></a><tt class="py-lineno">1510</tt>  <tt class="py-line">                     <tt class="py-param">comments</tt><tt class="py-op">,</tt> <tt class="py-param">decorators</tt><tt class="py-op">,</tt> <tt class="py-param">encoding</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="process_classdef-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="process_classdef-expanded"><a name="L1511"></a><tt class="py-lineno">1511</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L1512"></a><tt class="py-lineno">1512</tt>  <tt class="py-line"><tt class="py-docstring">    The line handler for class declaration lines, such as:</tt> </tt>
+<a name="L1513"></a><tt class="py-lineno">1513</tt>  <tt class="py-line"><tt class="py-docstring">    </tt> </tt>
+<a name="L1514"></a><tt class="py-lineno">1514</tt>  <tt class="py-line"><tt class="py-docstring">        >>> class Foo(Bar, Baz):</tt> </tt>
+<a name="L1515"></a><tt class="py-lineno">1515</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1516"></a><tt class="py-lineno">1516</tt>  <tt class="py-line"><tt class="py-docstring">    This handler creates and initializes a new C{VariableDoc}</tt> </tt>
+<a name="L1517"></a><tt class="py-lineno">1517</tt>  <tt class="py-line"><tt class="py-docstring">    containing a C{ClassDoc}, adds the C{VariableDoc} to the</tt> </tt>
+<a name="L1518"></a><tt class="py-lineno">1518</tt>  <tt class="py-line"><tt class="py-docstring">    containing namespace, and returns the C{ClassDoc}.</tt> </tt>
+<a name="L1519"></a><tt class="py-lineno">1519</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1520"></a><tt class="py-lineno">1520</tt>  <tt class="py-line">    <tt class="py-comment"># Check syntax</tt> </tt>
+<a name="L1521"></a><tt class="py-lineno">1521</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">line</tt><tt class="py-op">)</tt><tt class="py-op"><</tt><tt class="py-number">3</tt> <tt class="py-keyword">or</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">line</tt><tt class="py-op">)</tt><tt class="py-op">></tt><tt class="py-number">4</tt> <tt [...]
+<a name="L1522"></a><tt class="py-lineno">1522</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt id="link-630" class="py-name"><a title="epydoc.docparser.ParseError
+epydoc.markup.ParseError" class="py-name" href="#" onclick="return doclink('link-630', 'ParseError', 'link-87');">ParseError</a></tt><tt class="py-op">(</tt><tt class="py-string">"Bad class definition line"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1523"></a><tt class="py-lineno">1523</tt>  <tt class="py-line"> </tt>
+<a name="L1524"></a><tt class="py-lineno">1524</tt>  <tt class="py-line">    <tt class="py-comment"># If we're not in a namespace, then ignore it.</tt> </tt>
+<a name="L1525"></a><tt class="py-lineno">1525</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">parent_doc</tt> <tt class="py-op">=</tt> <tt class="py-name">parent_docs</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L1526"></a><tt class="py-lineno">1526</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">parent_doc</tt><tt class="py-op">,</tt> <tt id="link-631" class="py-name"><a title="epydoc.apidoc.NamespaceDoc" class="py-name" href="#" onclick="return doclink('link-631', 'NamespaceDoc', 'link-181');">NamespaceDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt>  [...]
+<a name="L1527"></a><tt class="py-lineno">1527</tt>  <tt class="py-line"> </tt>
+<a name="L1528"></a><tt class="py-lineno">1528</tt>  <tt class="py-line">    <tt class="py-comment"># Get the class's name</tt> </tt>
+<a name="L1529"></a><tt class="py-lineno">1529</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">class_name</tt> <tt class="py-op">=</tt> <tt id="link-632" class="py-name"><a title="epydoc.docparser.parse_name" class="py-name" href="#" onclick="return doclink('link-632', 'parse_name', 'link-323');">parse_name</a></tt><tt class="py-op">(</tt><tt class="py-name">line</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op [...]
+<a name="L1530"></a><tt class="py-lineno">1530</tt>  <tt class="py-line">    <tt id="link-633" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-633', 'canonical_name', 'link-37');">canonical_name</a></tt> <tt class="py-op">=</tt> <tt id="link-634" class="py-name"><a title="epydoc.apidoc.DottedName" class="py-name" href="#" onclick="return doclink('link-634', 'DottedName', 'link-33');">DottedName</a></tt><tt class="py-op">(</tt><tt class="py-name">parent_doc</tt><tt class="py-op">.</tt><tt id="link-635" class="py-name"><a title="epydo [...]
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-635', 'canonical_name', 'link-37');">canonical_name</a></tt><tt class="py-op">,</tt> <tt class="py-name">class_name</tt><tt class="py-op">)</tt> </tt>
+<a name="L1531"></a><tt class="py-lineno">1531</tt>  <tt class="py-line"> </tt>
+<a name="L1532"></a><tt class="py-lineno">1532</tt>  <tt class="py-line">    <tt class="py-comment"># Create the class's ClassDoc & VariableDoc.</tt> </tt>
+<a name="L1533"></a><tt class="py-lineno">1533</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">class_doc</tt> <tt class="py-op">=</tt> <tt id="link-636" class="py-name"><a title="epydoc.apidoc.ClassDoc" class="py-name" href="#" onclick="return doclink('link-636', 'ClassDoc', 'link-493');">ClassDoc</a></tt><tt class="py-op">(</tt><tt id="link-637" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink( [...]
+<a name="L1534"></a><tt class="py-lineno">1534</tt>  <tt class="py-line">                         <tt id="link-639" class="py-name" targets="Variable epydoc.apidoc.ClassDoc.bases=epydoc.apidoc.ClassDoc-class.html#bases"><a title="epydoc.apidoc.ClassDoc.bases" class="py-name" href="#" onclick="return doclink('link-639', 'bases', 'link-639');">bases</a></tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt id="link-640" class="py-name" tar [...]
+<a name="L1535"></a><tt class="py-lineno">1535</tt>  <tt class="py-line">                         <tt id="link-641" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-641', 'canonical_name', 'link-37');">canonical_name</a></tt><tt class="py-op">=</tt><tt id="link-642" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-642', 'canonical_name', 'link-37');">canonical_name</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L1536"></a><tt class="py-lineno">1536</tt>  <tt class="py-line">                         <tt id="link-643" class="py-name"><a title="epydoc.apidoc.ValueDoc.defining_module
+epydoc.apidoc.VariableDoc.defining_module" class="py-name" href="#" onclick="return doclink('link-643', 'defining_module', 'link-79');">defining_module</a></tt><tt class="py-op">=</tt><tt class="py-name">parent_docs</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L1537"></a><tt class="py-lineno">1537</tt>  <tt class="py-line">                         <tt id="link-644" class="py-name"><a title="epydoc.apidoc.APIDoc.docs_extracted_by" class="py-name" href="#" onclick="return doclink('link-644', 'docs_extracted_by', 'link-78');">docs_extracted_by</a></tt><tt class="py-op">=</tt><tt class="py-string">'parser'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1538"></a><tt class="py-lineno">1538</tt>  <tt class="py-line">    <tt class="py-name">var_doc</tt> <tt class="py-op">=</tt> <tt id="link-645" class="py-name"><a title="epydoc.apidoc.VariableDoc" class="py-name" href="#" onclick="return doclink('link-645', 'VariableDoc', 'link-249');">VariableDoc</a></tt><tt class="py-op">(</tt><tt id="link-646" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-646', 'name', 'link-3 [...]
+<a name="L1539"></a><tt class="py-lineno">1539</tt>  <tt class="py-line">                          <tt id="link-648" class="py-name"><a title="epydoc.apidoc.VariableDoc.is_imported" class="py-name" href="#" onclick="return doclink('link-648', 'is_imported', 'link-115');">is_imported</a></tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> <tt id="link-649" class="py-name"><a title="epydoc.apidoc.VariableDoc.is_alias" class="py-name" href="#" onclick="return  [...]
+<a name="L1540"></a><tt class="py-lineno">1540</tt>  <tt class="py-line">                          <tt id="link-650" class="py-name"><a title="epydoc.apidoc.APIDoc.docs_extracted_by" class="py-name" href="#" onclick="return doclink('link-650', 'docs_extracted_by', 'link-78');">docs_extracted_by</a></tt><tt class="py-op">=</tt><tt class="py-string">'parser'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1541"></a><tt class="py-lineno">1541</tt>  <tt class="py-line"> </tt>
+<a name="L1542"></a><tt class="py-lineno">1542</tt>  <tt class="py-line">    <tt class="py-comment"># Add the bases.</tt> </tt>
+<a name="L1543"></a><tt class="py-lineno">1543</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">line</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">4</tt><tt class="py-op">:</tt> </tt>
+<a name="L1544"></a><tt class="py-lineno">1544</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">line</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">list</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> </tt>
+<a name="L1545"></a><tt class="py-lineno">1545</tt>  <tt class="py-line">            <tt class="py-name">line</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">!=</tt> <tt class="py-op">(</tt><tt class="py-name">token</tt><tt class="py-op">.</tt><tt class="py-name">OP</tt><tt class="py-op">,</tt> <tt class="py-string">'('</tt><tt class="py-op">)</tt><tt class="py-o [...]
+<a name="L1546"></a><tt class="py-lineno">1546</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt id="link-651" class="py-name"><a title="epydoc.docparser.ParseError
+epydoc.markup.ParseError" class="py-name" href="#" onclick="return doclink('link-651', 'ParseError', 'link-87');">ParseError</a></tt><tt class="py-op">(</tt><tt class="py-string">"Expected base list"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1547"></a><tt class="py-lineno">1547</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L1548"></a><tt class="py-lineno">1548</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">base_name</tt> <tt class="py-keyword">in</tt> <tt id="link-652" class="py-name" targets="Function epydoc.docparser.parse_classdef_bases()=epydoc.docparser-module.html#parse_classdef_bases"><a title="epydoc.docparser.parse_classdef_bases" class="py-name" href="#" onclick="return doclink('link-652', 'parse_classdef_bases', 'link-652');">parse_classdef_bas [...]
+<a name="L1549"></a><tt class="py-lineno">1549</tt>  <tt class="py-line">                <tt class="py-name">class_doc</tt><tt class="py-op">.</tt><tt id="link-653" class="py-name"><a title="epydoc.apidoc.ClassDoc.bases" class="py-name" href="#" onclick="return doclink('link-653', 'bases', 'link-639');">bases</a></tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-654" class="py-name" targets="Function epydoc.docparser.find_base()=epydoc.docpar [...]
+<a name="L1550"></a><tt class="py-lineno">1550</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt id="link-655" class="py-name"><a title="epydoc.docparser.ParseError
+epydoc.markup.ParseError" class="py-name" href="#" onclick="return doclink('link-655', 'ParseError', 'link-87');">ParseError</a></tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
+<a name="L1551"></a><tt class="py-lineno">1551</tt>  <tt class="py-line">            <tt id="link-656" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-656', 'log', 'link-50');">log</a></tt><tt class="py-op">.</tt><tt id="link-657" class="py-name"><a title="epydoc.checker.DocChecker.warning
+epydoc.log.warning" class="py-name" href="#" onclick="return doclink('link-657', 'warning', 'link-214');">warning</a></tt><tt class="py-op">(</tt><tt class="py-string">"Unable to extract the base list for %s: %s"</tt> <tt class="py-op">%</tt> </tt>
+<a name="L1552"></a><tt class="py-lineno">1552</tt>  <tt class="py-line">                        <tt class="py-op">(</tt><tt id="link-658" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-658', 'canonical_name', 'link-37');">canonical_name</a></tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1553"></a><tt class="py-lineno">1553</tt>  <tt class="py-line">            <tt class="py-name">class_doc</tt><tt class="py-op">.</tt><tt id="link-659" class="py-name"><a title="epydoc.apidoc.ClassDoc.bases" class="py-name" href="#" onclick="return doclink('link-659', 'bases', 'link-639');">bases</a></tt> <tt class="py-op">=</tt> <tt id="link-660" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-660', 'UNKNOWN', 'link-38');" [...]
+<a name="L1554"></a><tt class="py-lineno">1554</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1555"></a><tt class="py-lineno">1555</tt>  <tt class="py-line">        <tt class="py-name">class_doc</tt><tt class="py-op">.</tt><tt id="link-661" class="py-name"><a title="epydoc.apidoc.ClassDoc.bases" class="py-name" href="#" onclick="return doclink('link-661', 'bases', 'link-639');">bases</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L1556"></a><tt class="py-lineno">1556</tt>  <tt class="py-line"> </tt>
+<a name="L1557"></a><tt class="py-lineno">1557</tt>  <tt class="py-line">    <tt class="py-comment"># Register ourselves as a subclass to our bases.</tt> </tt>
+<a name="L1558"></a><tt class="py-lineno">1558</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">class_doc</tt><tt class="py-op">.</tt><tt id="link-662" class="py-name"><a title="epydoc.apidoc.ClassDoc.bases" class="py-name" href="#" onclick="return doclink('link-662', 'bases', 'link-639');">bases</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt id="link-663" class="py-name"><a title="epydoc.apidoc.UNKN [...]
+<a name="L1559"></a><tt class="py-lineno">1559</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">basedoc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">class_doc</tt><tt class="py-op">.</tt><tt id="link-664" class="py-name"><a title="epydoc.apidoc.ClassDoc.bases" class="py-name" href="#" onclick="return doclink('link-664', 'bases', 'link-639');">bases</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1560"></a><tt class="py-lineno">1560</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">basedoc</tt><tt class="py-op">,</tt> <tt id="link-665" class="py-name"><a title="epydoc.apidoc.ClassDoc" class="py-name" href="#" onclick="return doclink('link-665', 'ClassDoc', 'link-493');">ClassDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1561"></a><tt class="py-lineno">1561</tt>  <tt class="py-line">                <tt class="py-comment"># This test avoids that a subclass gets listed twice when</tt> </tt>
+<a name="L1562"></a><tt class="py-lineno">1562</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-comment"># both introspection and parsing.</tt> </tt>
+<a name="L1563"></a><tt class="py-lineno">1563</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-comment"># [XXX] This check only works because currently parsing is</tt> </tt>
+<a name="L1564"></a><tt class="py-lineno">1564</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-comment"># always performed just after introspection of the same</tt> </tt>
+<a name="L1565"></a><tt class="py-lineno">1565</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-comment"># class. A more complete fix shuld be independent from</tt> </tt>
+<a name="L1566"></a><tt class="py-lineno">1566</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-comment"># calling order; probably the subclasses list should be</tt> </tt>
+<a name="L1567"></a><tt class="py-lineno">1567</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-comment"># replaced by a ClassDoc set or a {name: ClassDoc} mapping.</tt> </tt>
+<a name="L1568"></a><tt class="py-lineno">1568</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">basedoc</tt><tt class="py-op">.</tt><tt id="link-666" class="py-name"><a title="epydoc.apidoc.ClassDoc.subclasses" class="py-name" href="#" onclick="return doclink('link-666', 'subclasses', 'link-640');">subclasses</a></tt> </tt>
+<a name="L1569"></a><tt class="py-lineno">1569</tt>  <tt class="py-line">                    <tt class="py-keyword">and</tt> <tt class="py-name">basedoc</tt><tt class="py-op">.</tt><tt id="link-667" class="py-name"><a title="epydoc.apidoc.ClassDoc.subclasses" class="py-name" href="#" onclick="return doclink('link-667', 'subclasses', 'link-640');">subclasses</a></tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt> [...]
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-668', 'canonical_name', 'link-37');">canonical_name</a></tt> </tt>
+<a name="L1570"></a><tt class="py-lineno">1570</tt>  <tt class="py-line">                        <tt class="py-op">!=</tt> <tt class="py-name">class_doc</tt><tt class="py-op">.</tt><tt id="link-669" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-669', 'canonical_name', 'link-37');">canonical_name</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1571"></a><tt class="py-lineno">1571</tt>  <tt class="py-line">                    <tt class="py-name">basedoc</tt><tt class="py-op">.</tt><tt id="link-670" class="py-name"><a title="epydoc.apidoc.ClassDoc.subclasses" class="py-name" href="#" onclick="return doclink('link-670', 'subclasses', 'link-640');">subclasses</a></tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">class_doc</tt><tt class="py-op">)</tt> </tt>
+<a name="L1572"></a><tt class="py-lineno">1572</tt>  <tt class="py-line">     </tt>
+<a name="L1573"></a><tt class="py-lineno">1573</tt>  <tt class="py-line">    <tt class="py-comment"># If the preceeding comment includes a docstring, then add it.</tt> </tt>
+<a name="L1574"></a><tt class="py-lineno">1574</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-671" class="py-name"><a title="epydoc.docparser.add_docstring_from_comments" class="py-name" href="#" onclick="return doclink('link-671', 'add_docstring_from_comments', 'link-470');">add_docstring_from_comments</a></tt><tt class="py-op">(</tt><tt class="py-name">class_doc</tt><tt class="py-op">,</tt> <tt class="py-name">comments</tt><tt class="py-op">)</tt> </tt>
+<a name="L1575"></a><tt class="py-lineno">1575</tt>  <tt class="py-line">     </tt>
+<a name="L1576"></a><tt class="py-lineno">1576</tt>  <tt class="py-line">    <tt class="py-comment"># Add the VariableDoc to our container.</tt> </tt>
+<a name="L1577"></a><tt class="py-lineno">1577</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-672" class="py-name"><a title="epydoc.docparser.set_variable" class="py-name" href="#" onclick="return doclink('link-672', 'set_variable', 'link-304');">set_variable</a></tt><tt class="py-op">(</tt><tt class="py-name">parent_doc</tt><tt class="py-op">,</tt> <tt class="py-name">var_doc</tt><tt class="py-op">)</tt> </tt>
+<a name="L1578"></a><tt class="py-lineno">1578</tt>  <tt class="py-line"> </tt>
+<a name="L1579"></a><tt class="py-lineno">1579</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">class_doc</tt> </tt>
+</div><a name="L1580"></a><tt class="py-lineno">1580</tt>  <tt class="py-line"> </tt>
+<a name="_proxy_base"></a><div id="_proxy_base-def"><a name="L1581"></a><tt class="py-lineno">1581</tt> <a class="py-toggle" href="#" id="_proxy_base-toggle" onclick="return toggle('_proxy_base');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docparser-module.html#_proxy_base">_proxy_base</a><tt class="py-op">(</tt><tt class="py-op">**</tt><tt class="py-param">attribs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_proxy_base-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_proxy_base-expanded"><a name="L1582"></a><tt class="py-lineno">1582</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-673" class="py-name"><a title="epydoc.apidoc.ClassDoc" class="py-name" href="#" onclick="return doclink('link-673', 'ClassDoc', 'link-493');">ClassDoc</a></tt><tt class="py-op">(</tt><tt id="link-674" class="py-name"><a title="epydoc.apidoc.Name [...]
+<a name="L1583"></a><tt class="py-lineno">1583</tt>  <tt class="py-line">                    <tt id="link-678" class="py-name"><a title="epydoc.apidoc.APIDoc.docs_extracted_by" class="py-name" href="#" onclick="return doclink('link-678', 'docs_extracted_by', 'link-78');">docs_extracted_by</a></tt><tt class="py-op">=</tt><tt class="py-string">'parser'</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-name">attribs</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1584"></a><tt class="py-lineno">1584</tt>  <tt class="py-line"> </tt>
+<a name="find_base"></a><div id="find_base-def"><a name="L1585"></a><tt class="py-lineno">1585</tt> <a class="py-toggle" href="#" id="find_base-toggle" onclick="return toggle('find_base');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docparser-module.html#find_base">find_base</a><tt class="py-op">(</tt><tt class="py-param">name</tt><tt class="py-op">,</tt> <tt class="py-param">parent_docs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="find_base-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="find_base-expanded"><a name="L1586"></a><tt class="py-lineno">1586</tt>  <tt class="py-line">    <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-679" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-679', 'name', 'link-31');">name</a></tt><tt class="py-op">,</tt> <tt id= [...]
+<a name="L1587"></a><tt class="py-lineno">1587</tt>  <tt class="py-line"> </tt>
+<a name="L1588"></a><tt class="py-lineno">1588</tt>  <tt class="py-line">    <tt class="py-comment"># Find the variable containing the base.</tt> </tt>
+<a name="L1589"></a><tt class="py-lineno">1589</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">base_var</tt> <tt class="py-op">=</tt> <tt id="link-681" class="py-name" targets="Function epydoc.docparser.lookup_variable()=epydoc.docparser-module.html#lookup_variable"><a title="epydoc.docparser.lookup_variable" class="py-name" href="#" onclick="return doclink('link-681', 'lookup_variable', 'link-681');">lookup_variable</a></tt><tt class="py-op">(</tt><tt id="l [...]
+<a name="L1590"></a><tt class="py-lineno">1590</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">base_var</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1591"></a><tt class="py-lineno">1591</tt>  <tt class="py-line">        <tt class="py-comment"># If we didn't find it, then it must have been imported.</tt> </tt>
+<a name="L1592"></a><tt class="py-lineno">1592</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># First, check if it looks like it's contained in any</tt> </tt>
+<a name="L1593"></a><tt class="py-lineno">1593</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># known imported variable:</tt> </tt>
+<a name="L1594"></a><tt class="py-lineno">1594</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-683" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-683', 'name', 'link-31');">name</a></tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L1595"></a><tt class="py-lineno">1595</tt>  <tt class="py-line">            <tt class="py-name">src</tt> <tt class="py-op">=</tt> <tt id="link-684" class="py-name" targets="Function epydoc.docparser.lookup_name()=epydoc.docparser-module.html#lookup_name"><a title="epydoc.docparser.lookup_name" class="py-name" href="#" onclick="return doclink('link-684', 'lookup_name', 'link-684');">lookup_name</a></tt><tt class="py-op">(</tt><tt id="link-685" class="py-name"><a title="epydoc.api [...]
+<a name="L1596"></a><tt class="py-lineno">1596</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">src</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L1597"></a><tt class="py-lineno">1597</tt>  <tt class="py-line">                <tt class="py-name">src</tt><tt class="py-op">.</tt><tt id="link-686" class="py-name"><a title="epydoc.apidoc.VariableDoc.imported_from" class="py-name" href="#" onclick="return doclink('link-686', 'imported_from', 'link-167');">imported_from</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="li [...]
+<a name="L1598"></a><tt class="py-lineno">1598</tt>  <tt class="py-line">                <tt class="py-name">base_src</tt> <tt class="py-op">=</tt> <tt id="link-688" class="py-name"><a title="epydoc.apidoc.DottedName" class="py-name" href="#" onclick="return doclink('link-688', 'DottedName', 'link-33');">DottedName</a></tt><tt class="py-op">(</tt><tt class="py-name">src</tt><tt class="py-op">.</tt><tt id="link-689" class="py-name"><a title="epydoc.apidoc.VariableDoc.imported_from" class= [...]
+<a name="L1599"></a><tt class="py-lineno">1599</tt>  <tt class="py-line">                <tt class="py-name">base_var</tt> <tt class="py-op">=</tt> <tt id="link-691" class="py-name"><a title="epydoc.apidoc.VariableDoc" class="py-name" href="#" onclick="return doclink('link-691', 'VariableDoc', 'link-249');">VariableDoc</a></tt><tt class="py-op">(</tt><tt id="link-692" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-692', 'n [...]
+<a name="L1600"></a><tt class="py-lineno">1600</tt>  <tt class="py-line">                                       <tt id="link-695" class="py-name"><a title="epydoc.apidoc.VariableDoc.is_alias" class="py-name" href="#" onclick="return doclink('link-695', 'is_alias', 'link-300');">is_alias</a></tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> <tt id="link-696" class="py-name"><a title="epydoc.apidoc.VariableDoc.imported_from" class="py-name" href="#" onclick [...]
+<a name="L1601"></a><tt class="py-lineno">1601</tt>  <tt class="py-line">                                       <tt id="link-697" class="py-name"><a title="epydoc.apidoc.APIDoc.docs_extracted_by" class="py-name" href="#" onclick="return doclink('link-697', 'docs_extracted_by', 'link-78');">docs_extracted_by</a></tt><tt class="py-op">=</tt><tt class="py-string">'parser'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1602"></a><tt class="py-lineno">1602</tt>  <tt class="py-line">        <tt class="py-comment"># Otherwise, it must have come from an "import *" statement</tt> </tt>
+<a name="L1603"></a><tt class="py-lineno">1603</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># (or from magic, such as direct manipulation of the module's</tt> </tt>
+<a name="L1604"></a><tt class="py-lineno">1604</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># dictionary), so we don't know where it came from.  So</tt> </tt>
+<a name="L1605"></a><tt class="py-lineno">1605</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># there's nothing left but to use an empty proxy.</tt> </tt>
+<a name="L1606"></a><tt class="py-lineno">1606</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">base_var</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1607"></a><tt class="py-lineno">1607</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt id="link-698" class="py-name" targets="Function epydoc.docparser._proxy_base()=epydoc.docparser-module.html#_proxy_base"><a title="epydoc.docparser._proxy_base" class="py-name" href="#" onclick="return doclink('link-698', '_proxy_base', 'link-698');">_proxy_base</a></tt><tt class="py-op">(</tt><tt id="link-699" class="py-name"><a title="epydoc.apidoc.ValueDoc.parse_ [...]
+<a name="L1608"></a><tt class="py-lineno">1608</tt>  <tt class="py-line">            <tt class="py-comment">#raise ParseError("Could not find %s" % name)</tt> </tt>
+<a name="L1609"></a><tt class="py-lineno">1609</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L1610"></a><tt class="py-lineno">1610</tt>  <tt class="py-line">    <tt class="py-comment"># If the variable has a value, return that value.</tt> </tt>
+<a name="L1611"></a><tt class="py-lineno">1611</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">base_var</tt><tt class="py-op">.</tt><tt id="link-701" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-701', 'value', 'link-135');">value</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt id="link-702" class="py-name"><a title="epydoc.apidoc.UN [...]
+<a name="L1612"></a><tt class="py-lineno">1612</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">base_var</tt><tt class="py-op">.</tt><tt id="link-703" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-703', 'value', 'link-135');">value</a></tt> </tt>
+<a name="L1613"></a><tt class="py-lineno">1613</tt>  <tt class="py-line"> </tt>
+<a name="L1614"></a><tt class="py-lineno">1614</tt>  <tt class="py-line">    <tt class="py-comment"># Otherwise, if BASE_HANDLING is 'parse', try parsing the docs for</tt> </tt>
+<a name="L1615"></a><tt class="py-lineno">1615</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># the base class; if that fails, or if BASE_HANDLING is 'link',</tt> </tt>
+<a name="L1616"></a><tt class="py-lineno">1616</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># just make a proxy object.</tt> </tt>
+<a name="L1617"></a><tt class="py-lineno">1617</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">base_var</tt><tt class="py-op">.</tt><tt id="link-704" class="py-name"><a title="epydoc.apidoc.VariableDoc.imported_from" class="py-name" href="#" onclick="return doclink('link-704', 'imported_from', 'link-167');">imported_from</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="p [...]
+<a name="L1618"></a><tt class="py-lineno">1618</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-706" class="py-name"><a title="epydoc.docparser.BASE_HANDLING" class="py-name" href="#" onclick="return doclink('link-706', 'BASE_HANDLING', 'link-20');">BASE_HANDLING</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'parse'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1619"></a><tt class="py-lineno">1619</tt>  <tt class="py-line">            <tt class="py-name">old_sys_path</tt> <tt class="py-op">=</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt id="link-707" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-707', 'path', 'link-0');">path</a></tt> </tt>
+<a name="L1620"></a><tt class="py-lineno">1620</tt>  <tt class="py-line">            <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L1621"></a><tt class="py-lineno">1621</tt>  <tt class="py-line">                <tt class="py-name">dirname</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-708" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-708', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-name">parent_docs</tt><tt class="p [...]
+<a name="L1622"></a><tt class="py-lineno">1622</tt>  <tt class="py-line">                <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt id="link-710" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-710', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">dirname</tt><tt class="py-op">]</tt> <tt class="py-op">+</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt [...]
+<a name="L1623"></a><tt class="py-lineno">1623</tt>  <tt class="py-line">                <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L1624"></a><tt class="py-lineno">1624</tt>  <tt class="py-line">                    <tt class="py-keyword">return</tt> <tt id="link-712" class="py-name"><a title="epydoc.docparser.parse_docs" class="py-name" href="#" onclick="return doclink('link-712', 'parse_docs', 'link-96');">parse_docs</a></tt><tt class="py-op">(</tt><tt id="link-713" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-713', 'name', 'link-31');">na [...]
+<a name="L1625"></a><tt class="py-lineno">1625</tt>  <tt class="py-line">                <tt class="py-keyword">except</tt> <tt id="link-715" class="py-name"><a title="epydoc.docparser.ParseError
+epydoc.markup.ParseError" class="py-name" href="#" onclick="return doclink('link-715', 'ParseError', 'link-87');">ParseError</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1626"></a><tt class="py-lineno">1626</tt>  <tt class="py-line">                    <tt id="link-716" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-716', 'log', 'link-50');">log</a></tt><tt class="py-op">.</tt><tt id="link-717" class="py-name"><a title="epydoc.log.info" class="py-name" href="#" onclick="return doclink('link-717', 'info', 'link-51');">info</a></tt><tt class="py-op">(</tt><tt class="py-string">'Unable to parse base'</tt><tt class="py-op">,</tt> <tt class="py-name">base_var</tt><tt class="py-op">.</tt><tt id="link-718" class="py-name">< [...]
+<a name="L1627"></a><tt class="py-lineno">1627</tt>  <tt class="py-line">                <tt class="py-keyword">except</tt> <tt class="py-name">ImportError</tt><tt class="py-op">:</tt> </tt>
+<a name="L1628"></a><tt class="py-lineno">1628</tt>  <tt class="py-line">                    <tt id="link-719" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-719', 'log', 'link-50');">log</a></tt><tt class="py-op">.</tt><tt id="link-720" class="py-name"><a title="epydoc.log.info" class="py-name" href="#" onclick="return doclink('link-720', 'info', 'link-51');">info</a></tt><tt class="py-op">(</tt><tt class="py-string">'Unable to find base'</tt><tt class="py-op">,</tt> <tt class="py-name">base_var</tt><tt class="py-op">.</tt><tt id="link-721" class="py-name"><a [...]
+<a name="L1629"></a><tt class="py-lineno">1629</tt>  <tt class="py-line">            <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt>
+<a name="L1630"></a><tt class="py-lineno">1630</tt>  <tt class="py-line">                <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt id="link-722" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-722', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt class="py-name">old_sys_path</tt> </tt>
+<a name="L1631"></a><tt class="py-lineno">1631</tt>  <tt class="py-line">                 </tt>
+<a name="L1632"></a><tt class="py-lineno">1632</tt>  <tt class="py-line">        <tt class="py-comment"># Either BASE_HANDLING='link' or parsing the base class failed;</tt> </tt>
+<a name="L1633"></a><tt class="py-lineno">1633</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># return a proxy value for the base class.</tt> </tt>
+<a name="L1634"></a><tt class="py-lineno">1634</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">return</tt> <tt id="link-723" class="py-name"><a title="epydoc.docparser._proxy_base" class="py-name" href="#" onclick="return doclink('link-723', '_proxy_base', 'link-698');">_proxy_base</a></tt><tt class="py-op">(</tt><tt id="link-724" class="py-name"><a title="epydoc.apidoc.ValueDoc.proxy_for" class="py-name" href="#" onclick="return doclink('link-724', ' [...]
+<a name="L1635"></a><tt class="py-lineno">1635</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1636"></a><tt class="py-lineno">1636</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-726" class="py-name"><a title="epydoc.docparser._proxy_base" class="py-name" href="#" onclick="return doclink('link-726', '_proxy_base', 'link-698');">_proxy_base</a></tt><tt class="py-op">(</tt><tt id="link-727" class="py-name"><a title="epydoc.apidoc.ValueDoc.parse_repr" class="py-name" href="#" onclick="return doclink('link-727', 'parse_repr', 'link-504');"> [...]
+</div><a name="L1637"></a><tt class="py-lineno">1637</tt>  <tt class="py-line"> </tt>
+<a name="L1638"></a><tt class="py-lineno">1638</tt>  <tt class="py-line"><tt class="py-comment">#/////////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L1639"></a><tt class="py-lineno">1639</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#{ Parsing</tt> </tt>
+<a name="L1640"></a><tt class="py-lineno">1640</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#/////////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L1641"></a><tt class="py-lineno">1641</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="dotted_names_in"></a><div id="dotted_names_in-def"><a name="L1642"></a><tt class="py-lineno">1642</tt> <a class="py-toggle" href="#" id="dotted_names_in-toggle" onclick="return toggle('dotted_names_in');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docparser-module.html#dotted_names_in">dotted_names_in</a><tt class="py-op">(</tt><tt class="py-param">elt_list</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="dotted_names_in-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="dotted_names_in-expanded"><a name="L1643"></a><tt class="py-lineno">1643</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L1644"></a><tt class="py-lineno">1644</tt>  <tt class="py-line"><tt class="py-docstring">    Return a list of all simple dotted names in the given</tt> </tt>
+<a name="L1645"></a><tt class="py-lineno">1645</tt>  <tt class="py-line"><tt class="py-docstring">    expression.</tt> </tt>
+<a name="L1646"></a><tt class="py-lineno">1646</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1647"></a><tt class="py-lineno">1647</tt>  <tt class="py-line">    <tt class="py-name">names</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L1648"></a><tt class="py-lineno">1648</tt>  <tt class="py-line">    <tt class="py-keyword">while</tt> <tt class="py-name">elt_list</tt><tt class="py-op">:</tt> </tt>
+<a name="L1649"></a><tt class="py-lineno">1649</tt>  <tt class="py-line">        <tt class="py-name">elt</tt> <tt class="py-op">=</tt> <tt class="py-name">elt_list</tt><tt class="py-op">.</tt><tt class="py-name">pop</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1650"></a><tt class="py-lineno">1650</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">elt</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt> <tt class="py-keyword">and</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">elt</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt>  [...]
+<a name="L1651"></a><tt class="py-lineno">1651</tt>  <tt class="py-line">            <tt class="py-comment"># Nested list: process the contents</tt> </tt>
+<a name="L1652"></a><tt class="py-lineno">1652</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">elt_list</tt><tt class="py-op">.</tt><tt class="py-name">extend</tt><tt class="py-op">(</tt><tt id="link-729" class="py-name"><a title="epydoc.docparser.split_on" class="py-name" href="#" onclick="return doclink('link-729', 'split_on', 'link-296');">split_on</a></tt><tt class="py-op">(</tt><tt class="py-name">elt</tt><tt class="py-op">[</tt><tt class="py-nu [...]
+<a name="L1653"></a><tt class="py-lineno">1653</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1654"></a><tt class="py-lineno">1654</tt>  <tt class="py-line">            <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L1655"></a><tt class="py-lineno">1655</tt>  <tt class="py-line">                <tt class="py-name">names</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-730" class="py-name"><a title="epydoc.docparser.parse_dotted_name" class="py-name" href="#" onclick="return doclink('link-730', 'parse_dotted_name', 'link-295');">parse_dotted_name</a></tt><tt class="py-op">(</tt><tt class="py-name">elt</tt><tt class="py-op">)</tt><tt class="py-op [...]
+<a name="L1656"></a><tt class="py-lineno">1656</tt>  <tt class="py-line">            <tt class="py-keyword">except</tt> <tt id="link-731" class="py-name"><a title="epydoc.docparser.ParseError
+epydoc.markup.ParseError" class="py-name" href="#" onclick="return doclink('link-731', 'ParseError', 'link-87');">ParseError</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1657"></a><tt class="py-lineno">1657</tt>  <tt class="py-line">                <tt class="py-keyword">pass</tt> <tt class="py-comment"># complex expression -- ignore</tt> </tt>
+<a name="L1658"></a><tt class="py-lineno">1658</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">names</tt> </tt>
+</div><a name="L1659"></a><tt class="py-lineno">1659</tt>  <tt class="py-line"> </tt>
+<a name="parse_name"></a><div id="parse_name-def"><a name="L1660"></a><tt class="py-lineno">1660</tt> <a class="py-toggle" href="#" id="parse_name-toggle" onclick="return toggle('parse_name');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docparser-module.html#parse_name">parse_name</a><tt class="py-op">(</tt><tt class="py-param">elt</tt><tt class="py-op">,</tt> <tt class="py-param">strip_parens</tt><tt class="py-op">=</tt><tt class="py-nam [...]
+</div><div id="parse_name-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="parse_name-expanded"><a name="L1661"></a><tt class="py-lineno">1661</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L1662"></a><tt class="py-lineno">1662</tt>  <tt class="py-line"><tt class="py-docstring">    If the given token tree element is a name token, then return</tt> </tt>
+<a name="L1663"></a><tt class="py-lineno">1663</tt>  <tt class="py-line"><tt class="py-docstring">    that name as a string.  Otherwise, raise ParseError.</tt> </tt>
+<a name="L1664"></a><tt class="py-lineno">1664</tt>  <tt class="py-line"><tt class="py-docstring">    @param strip_parens: If true, then if elt is a single name</tt> </tt>
+<a name="L1665"></a><tt class="py-lineno">1665</tt>  <tt class="py-line"><tt class="py-docstring">        enclosed in parenthases, then return that name.</tt> </tt>
+<a name="L1666"></a><tt class="py-lineno">1666</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1667"></a><tt class="py-lineno">1667</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">strip_parens</tt> <tt class="py-keyword">and</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">elt</tt><tt class="py-op">,</tt> <tt class="py-name">list</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1668"></a><tt class="py-lineno">1668</tt>  <tt class="py-line">        <tt class="py-keyword">while</tt> <tt class="py-op">(</tt><tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">elt</tt><tt class="py-op">,</tt> <tt class="py-name">list</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">elt</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">3< [...]
+<a name="L1669"></a><tt class="py-lineno">1669</tt>  <tt class="py-line">               <tt class="py-name">elt</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-op">(</tt><tt class="py-name">token</tt><tt class="py-op">.</tt><tt class="py-name">OP</tt><tt class="py-op">,</tt> <tt class="py-string">'('</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L1670"></a><tt class="py-lineno">1670</tt>  <tt class="py-line">               <tt class="py-name">elt</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-op">(</tt><tt class="py-name">token</tt><tt class="py-op">.</tt><tt class="py-name">OP</tt><tt class="py-op">,</tt> <tt class="py-string">')'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1671"></a><tt class="py-lineno">1671</tt>  <tt class="py-line">            <tt class="py-name">elt</tt> <tt class="py-op">=</tt> <tt class="py-name">elt</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L1672"></a><tt class="py-lineno">1672</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">elt</tt><tt class="py-op">,</tt> <tt class="py-name">list</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-name">elt</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">!=</tt> <tt class="py-name">token</tt><tt class="py-op">.</tt><t [...]
+<a name="L1673"></a><tt class="py-lineno">1673</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt id="link-732" class="py-name"><a title="epydoc.docparser.ParseError
+epydoc.markup.ParseError" class="py-name" href="#" onclick="return doclink('link-732', 'ParseError', 'link-87');">ParseError</a></tt><tt class="py-op">(</tt><tt class="py-string">"Bad name"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1674"></a><tt class="py-lineno">1674</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">elt</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+</div><a name="L1675"></a><tt class="py-lineno">1675</tt>  <tt class="py-line"> </tt>
+<a name="parse_dotted_name"></a><div id="parse_dotted_name-def"><a name="L1676"></a><tt class="py-lineno">1676</tt> <a class="py-toggle" href="#" id="parse_dotted_name-toggle" onclick="return toggle('parse_dotted_name');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docparser-module.html#parse_dotted_name">parse_dotted_name</a><tt class="py-op">(</tt><tt class="py-param">elt_list</tt><tt class="py-op">,</tt> <tt class="py-param">strip_paren [...]
+</div><div id="parse_dotted_name-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="parse_dotted_name-expanded"><a name="L1677"></a><tt class="py-lineno">1677</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L1678"></a><tt class="py-lineno">1678</tt>  <tt class="py-line"><tt class="py-docstring">    @param parent_name: canonical name of referring module, to resolve</tt> </tt>
+<a name="L1679"></a><tt class="py-lineno">1679</tt>  <tt class="py-line"><tt class="py-docstring">        relative imports.</tt> </tt>
+<a name="L1680"></a><tt class="py-lineno">1680</tt>  <tt class="py-line"><tt class="py-docstring">    @type parent_name: L{DottedName}</tt> </tt>
+<a name="L1681"></a><tt class="py-lineno">1681</tt>  <tt class="py-line"><tt class="py-docstring">    @bug: does not handle 'x.(y).z'</tt> </tt>
+<a name="L1682"></a><tt class="py-lineno">1682</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1683"></a><tt class="py-lineno">1683</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">elt_list</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> <tt class="py-keyword">raise</tt> <tt id="link-733" class="py-name"><a title="epydoc.docparser.ParseError
+epydoc.markup.ParseError" class="py-name" href="#" onclick="return doclink('link-733', 'ParseError', 'link-87');">ParseError</a></tt><tt class="py-op">(</tt><tt class="py-string">"Bad dotted name"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1684"></a><tt class="py-lineno">1684</tt>  <tt class="py-line">     </tt>
+<a name="L1685"></a><tt class="py-lineno">1685</tt>  <tt class="py-line">    <tt class="py-comment"># Handle ((x.y).z).  (If the contents of the parens include</tt> </tt>
+<a name="L1686"></a><tt class="py-lineno">1686</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># anything other than dotted names, such as (x,y), then we'll</tt> </tt>
+<a name="L1687"></a><tt class="py-lineno">1687</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># catch it below and raise a ParseError.</tt> </tt>
+<a name="L1688"></a><tt class="py-lineno">1688</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">while</tt> <tt class="py-op">(</tt><tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">elt_list</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">list</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L1689"></a><tt class="py-lineno">1689</tt>  <tt class="py-line">           <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">elt_list</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> <tt class="py-op">>=</tt> <tt class="py-number">3</tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L1690"></a><tt class="py-lineno">1690</tt>  <tt class="py-line">           <tt class="py-name">elt_list</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-op">(</tt><tt class="py-name">token</tt><tt class="py-op">.</tt><tt class="py-name">OP</tt><tt class="py-op">,</tt> <tt class="py-string">'('</tt><tt class="py-op">)</tt> <tt class=" [...]
+<a name="L1691"></a><tt class="py-lineno">1691</tt>  <tt class="py-line">           <tt class="py-name">elt_list</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-op">(</tt><tt class="py-name">token</tt><tt class="py-op">.</tt><tt class="py-name">OP</tt><tt class="py-op">,</tt> <tt class="py-string">')'</tt><tt class="p [...]
+<a name="L1692"></a><tt class="py-lineno">1692</tt>  <tt class="py-line">        <tt class="py-name">elt_list</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">elt_list</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-o [...]
+<a name="L1693"></a><tt class="py-lineno">1693</tt>  <tt class="py-line"> </tt>
+<a name="L1694"></a><tt class="py-lineno">1694</tt>  <tt class="py-line">    <tt class="py-comment"># Convert a relative import into an absolute name.</tt> </tt>
+<a name="L1695"></a><tt class="py-lineno">1695</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">prefix_name</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L1696"></a><tt class="py-lineno">1696</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">parent_name</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-name">elt_list</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="p [...]
+<a name="L1697"></a><tt class="py-lineno">1697</tt>  <tt class="py-line">        <tt class="py-name">items</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L1698"></a><tt class="py-lineno">1698</tt>  <tt class="py-line">        <tt class="py-keyword">while</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">elt_list</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-name">items</tt> <tt class="py-keyword">and</tt> <tt class="py-name">elt_list</tt><tt class="py-op">[</tt><tt class="py-name">items</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-num [...]
+<a name="L1699"></a><tt class="py-lineno">1699</tt>  <tt class="py-line">            <tt class="py-name">items</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L1700"></a><tt class="py-lineno">1700</tt>  <tt class="py-line">             </tt>
+<a name="L1701"></a><tt class="py-lineno">1701</tt>  <tt class="py-line">        <tt class="py-name">elt_list</tt> <tt class="py-op">=</tt> <tt class="py-name">elt_list</tt><tt class="py-op">[</tt><tt class="py-name">items</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt>
+<a name="L1702"></a><tt class="py-lineno">1702</tt>  <tt class="py-line">        <tt class="py-name">prefix_name</tt> <tt class="py-op">=</tt> <tt class="py-name">parent_name</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-name">items</tt><tt class="py-op">]</tt> </tt>
+<a name="L1703"></a><tt class="py-lineno">1703</tt>  <tt class="py-line">             </tt>
+<a name="L1704"></a><tt class="py-lineno">1704</tt>  <tt class="py-line">        <tt class="py-comment"># >>> from . import foo</tt> </tt>
+<a name="L1705"></a><tt class="py-lineno">1705</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">elt_list</tt><tt class="py-op">:</tt> </tt>
+<a name="L1706"></a><tt class="py-lineno">1706</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">prefix_name</tt> <tt class="py-op">==</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L1707"></a><tt class="py-lineno">1707</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt id="link-734" class="py-name"><a title="epydoc.docparser.ParseError
+epydoc.markup.ParseError" class="py-name" href="#" onclick="return doclink('link-734', 'ParseError', 'link-87');">ParseError</a></tt><tt class="py-op">(</tt><tt class="py-string">"Attempted relative import in non-package, "</tt> </tt>
+<a name="L1708"></a><tt class="py-lineno">1708</tt>  <tt class="py-line">                                 <tt class="py-string">"or beyond toplevel package"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1709"></a><tt class="py-lineno">1709</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">prefix_name</tt> </tt>
+<a name="L1710"></a><tt class="py-lineno">1710</tt>  <tt class="py-line"> </tt>
+<a name="L1711"></a><tt class="py-lineno">1711</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">elt_list</tt><tt class="py-op">)</tt> <tt class="py-op">%</tt> <tt class="py-number">2</tt> <tt class="py-op">!=</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> <tt class="py-keyword">raise</tt> <tt id="link-735" class="py-name"><a title="epydoc.docparser.ParseError
+epydoc.markup.ParseError" class="py-name" href="#" onclick="return doclink('link-735', 'ParseError', 'link-87');">ParseError</a></tt><tt class="py-op">(</tt><tt class="py-string">"Bad dotted name"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1712"></a><tt class="py-lineno">1712</tt>  <tt class="py-line">    <tt id="link-736" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-736', 'name', 'link-31');">name</a></tt> <tt class="py-op">=</tt> <tt id="link-737" class="py-name"><a title="epydoc.apidoc.DottedName" class="py-name" href="#" onclick="return doclink('link-737', 'DottedName', 'link-33');">DottedName</a></tt><tt class="py-op">(</tt><tt id="link-738" [...]
+<a name="L1713"></a><tt class="py-lineno">1713</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">prefix_name</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1714"></a><tt class="py-lineno">1714</tt>  <tt class="py-line">        <tt id="link-739" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-739', 'name', 'link-31');">name</a></tt> <tt class="py-op">=</tt> <tt class="py-name">prefix_name</tt> <tt class="py-op">+</tt> <tt id="link-740" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-740', 'name', 'link-3 [...]
+<a name="L1715"></a><tt class="py-lineno">1715</tt>  <tt class="py-line">         </tt>
+<a name="L1716"></a><tt class="py-lineno">1716</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">elt_list</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-number">2</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1717"></a><tt class="py-lineno">1717</tt>  <tt class="py-line">        <tt class="py-name">dot</tt><tt class="py-op">,</tt> <tt class="py-name">identifier</tt> <tt class="py-op">=</tt> <tt class="py-name">elt_list</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">elt_list</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt> </tt>
+<a name="L1718"></a><tt class="py-lineno">1718</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt>  <tt class="py-name">dot</tt> <tt class="py-op">!=</tt> <tt class="py-op">(</tt><tt class="py-name">token</tt><tt class="py-op">.</tt><tt class="py-name">OP</tt><tt class="py-op">,</tt> <tt class="py-string">'.'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1719"></a><tt class="py-lineno">1719</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt id="link-741" class="py-name"><a title="epydoc.docparser.ParseError
+epydoc.markup.ParseError" class="py-name" href="#" onclick="return doclink('link-741', 'ParseError', 'link-87');">ParseError</a></tt><tt class="py-op">(</tt><tt class="py-string">"Bad dotted name"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1720"></a><tt class="py-lineno">1720</tt>  <tt class="py-line">        <tt id="link-742" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-742', 'name', 'link-31');">name</a></tt> <tt class="py-op">=</tt> <tt id="link-743" class="py-name"><a title="epydoc.apidoc.DottedName" class="py-name" href="#" onclick="return doclink('link-743', 'DottedName', 'link-33');">DottedName</a></tt><tt class="py-op">(</tt><tt id="link- [...]
+<a name="L1721"></a><tt class="py-lineno">1721</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-746" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-746', 'name', 'link-31');">name</a></tt> </tt>
+</div><a name="L1722"></a><tt class="py-lineno">1722</tt>  <tt class="py-line">         </tt>
+<a name="split_on"></a><div id="split_on-def"><a name="L1723"></a><tt class="py-lineno">1723</tt> <a class="py-toggle" href="#" id="split_on-toggle" onclick="return toggle('split_on');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docparser-module.html#split_on">split_on</a><tt class="py-op">(</tt><tt class="py-param">elt_list</tt><tt class="py-op">,</tt> <tt class="py-param">split_tok</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="split_on-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="split_on-expanded"><a name="L1724"></a><tt class="py-lineno">1724</tt>  <tt class="py-line">    <tt class="py-comment"># [xx] add code to guarantee each elt is non-empty.</tt> </tt>
+<a name="L1725"></a><tt class="py-lineno">1725</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">]</tt> </tt>
+<a name="L1726"></a><tt class="py-lineno">1726</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">elt</tt> <tt class="py-keyword">in</tt> <tt class="py-name">elt_list</tt><tt class="py-op">:</tt> </tt>
+<a name="L1727"></a><tt class="py-lineno">1727</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">elt</tt> <tt class="py-op">==</tt> <tt class="py-name">split_tok</tt><tt class="py-op">:</tt> </tt>
+<a name="L1728"></a><tt class="py-lineno">1728</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">result</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> <tt class="py-keyword">raise</tt> <tt id="link-747" class="py-name"><a title="epydoc.docparser.ParseError
+epydoc.markup.ParseError" class="py-name" href="#" onclick="return doclink('link-747', 'ParseError', 'link-87');">ParseError</a></tt><tt class="py-op">(</tt><tt class="py-string">"Empty element from split"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1729"></a><tt class="py-lineno">1729</tt>  <tt class="py-line">            <tt class="py-name">result</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1730"></a><tt class="py-lineno">1730</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1731"></a><tt class="py-lineno">1731</tt>  <tt class="py-line">            <tt class="py-name">result</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">elt</tt><tt class="py-op">)</tt> </tt>
+<a name="L1732"></a><tt class="py-lineno">1732</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">result</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> <tt class="py-name">result</tt><tt class="py-op">.</tt><tt class="py-name">pop</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1733"></a><tt class="py-lineno">1733</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">result</tt> </tt>
+</div><a name="L1734"></a><tt class="py-lineno">1734</tt>  <tt class="py-line"> </tt>
+<a name="parse_funcdef_arg"></a><div id="parse_funcdef_arg-def"><a name="L1735"></a><tt class="py-lineno">1735</tt> <a class="py-toggle" href="#" id="parse_funcdef_arg-toggle" onclick="return toggle('parse_funcdef_arg');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docparser-module.html#parse_funcdef_arg">parse_funcdef_arg</a><tt class="py-op">(</tt><tt class="py-param">elt</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="parse_funcdef_arg-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="parse_funcdef_arg-expanded"><a name="L1736"></a><tt class="py-lineno">1736</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L1737"></a><tt class="py-lineno">1737</tt>  <tt class="py-line"><tt class="py-docstring">    If the given tree token element contains a valid function</tt> </tt>
+<a name="L1738"></a><tt class="py-lineno">1738</tt>  <tt class="py-line"><tt class="py-docstring">    definition argument (i.e., an identifier token or nested list</tt> </tt>
+<a name="L1739"></a><tt class="py-lineno">1739</tt>  <tt class="py-line"><tt class="py-docstring">    of identifiers), then return a corresponding string identifier</tt> </tt>
+<a name="L1740"></a><tt class="py-lineno">1740</tt>  <tt class="py-line"><tt class="py-docstring">    or nested list of string identifiers.  Otherwise, raise a</tt> </tt>
+<a name="L1741"></a><tt class="py-lineno">1741</tt>  <tt class="py-line"><tt class="py-docstring">    ParseError.</tt> </tt>
+<a name="L1742"></a><tt class="py-lineno">1742</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1743"></a><tt class="py-lineno">1743</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">elt</tt><tt class="py-op">,</tt> <tt class="py-name">list</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1744"></a><tt class="py-lineno">1744</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">elt</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-op">(</tt><tt class="py-name">token</tt><tt class="py-op">.</tt><tt class="py-name">OP</tt><tt class="py-op">,</tt> <tt class="py-string">'('</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1745"></a><tt class="py-lineno">1745</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">elt</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">3</tt><tt class="py-op">:</tt> </tt>
+<a name="L1746"></a><tt class="py-lineno">1746</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt id="link-748" class="py-name"><a title="epydoc.docparser.parse_funcdef_arg" class="py-name" href="#" onclick="return doclink('link-748', 'parse_funcdef_arg', 'link-617');">parse_funcdef_arg</a></tt><tt class="py-op">(</tt><tt class="py-name">elt</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1747"></a><tt class="py-lineno">1747</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1748"></a><tt class="py-lineno">1748</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-op">[</tt><tt id="link-749" class="py-name"><a title="epydoc.docparser.parse_funcdef_arg" class="py-name" href="#" onclick="return doclink('link-749', 'parse_funcdef_arg', 'link-617');">parse_funcdef_arg</a></tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">)</tt> </tt>
+<a name="L1749"></a><tt class="py-lineno">1749</tt>  <tt class="py-line">                        <tt class="py-keyword">for</tt> <tt class="py-name">e</tt> <tt class="py-keyword">in</tt> <tt class="py-name">elt</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L1750"></a><tt class="py-lineno">1750</tt>  <tt class="py-line">                        <tt class="py-keyword">if</tt> <tt class="py-name">e</tt> <tt class="py-op">!=</tt> <tt class="py-op">(</tt><tt class="py-name">token</tt><tt class="py-op">.</tt><tt class="py-name">OP</tt><tt class="py-op">,</tt> <tt class="py-string">','</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt>
+<a name="L1751"></a><tt class="py-lineno">1751</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1752"></a><tt class="py-lineno">1752</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt id="link-750" class="py-name"><a title="epydoc.docparser.ParseError
+epydoc.markup.ParseError" class="py-name" href="#" onclick="return doclink('link-750', 'ParseError', 'link-87');">ParseError</a></tt><tt class="py-op">(</tt><tt class="py-string">"Bad argument -- expected name or tuple"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1753"></a><tt class="py-lineno">1753</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">elt</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-name">token</tt><tt class="py-op">.</tt><tt class="py-name">NAME</tt><tt class="py-op">:</tt> </tt>
+<a name="L1754"></a><tt class="py-lineno">1754</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">elt</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L1755"></a><tt class="py-lineno">1755</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1756"></a><tt class="py-lineno">1756</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt id="link-751" class="py-name"><a title="epydoc.docparser.ParseError
+epydoc.markup.ParseError" class="py-name" href="#" onclick="return doclink('link-751', 'ParseError', 'link-87');">ParseError</a></tt><tt class="py-op">(</tt><tt class="py-string">"Bad argument -- expected name or tuple"</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1757"></a><tt class="py-lineno">1757</tt>  <tt class="py-line">     </tt>
+<a name="parse_classdef_bases"></a><div id="parse_classdef_bases-def"><a name="L1758"></a><tt class="py-lineno">1758</tt> <a class="py-toggle" href="#" id="parse_classdef_bases-toggle" onclick="return toggle('parse_classdef_bases');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docparser-module.html#parse_classdef_bases">parse_classdef_bases</a><tt class="py-op">(</tt><tt class="py-param">elt</tt><tt class="py-op">)</tt><tt class="py-op">:< [...]
+</div><div id="parse_classdef_bases-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="parse_classdef_bases-expanded"><a name="L1759"></a><tt class="py-lineno">1759</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L1760"></a><tt class="py-lineno">1760</tt>  <tt class="py-line"><tt class="py-docstring">    If the given tree token element contains a valid base list</tt> </tt>
+<a name="L1761"></a><tt class="py-lineno">1761</tt>  <tt class="py-line"><tt class="py-docstring">    (that contains only dotted names), then return a corresponding</tt> </tt>
+<a name="L1762"></a><tt class="py-lineno">1762</tt>  <tt class="py-line"><tt class="py-docstring">    list of L{DottedName}s.  Otherwise, raise a ParseError.</tt> </tt>
+<a name="L1763"></a><tt class="py-lineno">1763</tt>  <tt class="py-line"><tt class="py-docstring">    </tt> </tt>
+<a name="L1764"></a><tt class="py-lineno">1764</tt>  <tt class="py-line"><tt class="py-docstring">    @bug: Does not handle either of::</tt> </tt>
+<a name="L1765"></a><tt class="py-lineno">1765</tt>  <tt class="py-line"><tt class="py-docstring">        - class A( (base.in.parens) ): pass</tt> </tt>
+<a name="L1766"></a><tt class="py-lineno">1766</tt>  <tt class="py-line"><tt class="py-docstring">        - class B( (lambda:calculated.base)() ): pass</tt> </tt>
+<a name="L1767"></a><tt class="py-lineno">1767</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1768"></a><tt class="py-lineno">1768</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">elt</tt><tt class="py-op">,</tt> <tt class="py-name">list</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> </tt>
+<a name="L1769"></a><tt class="py-lineno">1769</tt>  <tt class="py-line">        <tt class="py-name">elt</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">!=</tt> <tt class="py-op">(</tt><tt class="py-name">token</tt><tt class="py-op">.</tt><tt class="py-name">OP</tt><tt class="py-op">,</tt> <tt class="py-string">'('</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1770"></a><tt class="py-lineno">1770</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt id="link-752" class="py-name"><a title="epydoc.docparser.ParseError
+epydoc.markup.ParseError" class="py-name" href="#" onclick="return doclink('link-752', 'ParseError', 'link-87');">ParseError</a></tt><tt class="py-op">(</tt><tt class="py-string">"Bad base list"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1771"></a><tt class="py-lineno">1771</tt>  <tt class="py-line"> </tt>
+<a name="L1772"></a><tt class="py-lineno">1772</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-op">[</tt><tt id="link-753" class="py-name"><a title="epydoc.docparser.parse_dotted_name" class="py-name" href="#" onclick="return doclink('link-753', 'parse_dotted_name', 'link-295');">parse_dotted_name</a></tt><tt class="py-op">(</tt><tt class="py-name">n</tt><tt class="py-op">)</tt> </tt>
+<a name="L1773"></a><tt class="py-lineno">1773</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">n</tt> <tt class="py-keyword">in</tt> <tt id="link-754" class="py-name"><a title="epydoc.docparser.split_on" class="py-name" href="#" onclick="return doclink('link-754', 'split_on', 'link-296');">split_on</a></tt><tt class="py-op">(</tt><tt class="py-name">elt</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py- [...]
+</div><a name="L1774"></a><tt class="py-lineno">1774</tt>  <tt class="py-line"> </tt>
+<a name="L1775"></a><tt class="py-lineno">1775</tt>  <tt class="py-line"><tt class="py-comment"># Used by: base list; 'del'; ...</tt> </tt>
+<a name="parse_dotted_name_list"></a><div id="parse_dotted_name_list-def"><a name="L1776"></a><tt class="py-lineno">1776</tt> <a class="py-toggle" href="#" id="parse_dotted_name_list-toggle" onclick="return toggle('parse_dotted_name_list');">-</a><tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docparser-module.html#parse_dotted_name_list">parse_dotted_name_list</a><tt class="py-op">(</tt><tt class="py-param">elt_list</tt [...]
+</div><div id="parse_dotted_name_list-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="parse_dotted_name_list-expanded"><a name="L1777"></a><tt class="py-lineno">1777</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L1778"></a><tt class="py-lineno">1778</tt>  <tt class="py-line"><tt class="py-docstring">    If the given list of tree token elements contains a</tt> </tt>
+<a name="L1779"></a><tt class="py-lineno">1779</tt>  <tt class="py-line"><tt class="py-docstring">    comma-separated list of dotted names, then return a</tt> </tt>
+<a name="L1780"></a><tt class="py-lineno">1780</tt>  <tt class="py-line"><tt class="py-docstring">    corresponding list of L{DottedName} objects.  Otherwise, raise</tt> </tt>
+<a name="L1781"></a><tt class="py-lineno">1781</tt>  <tt class="py-line"><tt class="py-docstring">    ParseError.</tt> </tt>
+<a name="L1782"></a><tt class="py-lineno">1782</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1783"></a><tt class="py-lineno">1783</tt>  <tt class="py-line">    <tt class="py-name">names</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L1784"></a><tt class="py-lineno">1784</tt>  <tt class="py-line">     </tt>
+<a name="L1785"></a><tt class="py-lineno">1785</tt>  <tt class="py-line">    <tt class="py-name">state</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L1786"></a><tt class="py-lineno">1786</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">elt</tt> <tt class="py-keyword">in</tt> <tt class="py-name">elt_list</tt><tt class="py-op">:</tt> </tt>
+<a name="L1787"></a><tt class="py-lineno">1787</tt>  <tt class="py-line">        <tt class="py-comment"># State 0 -- Expecting a name, or end of arglist</tt> </tt>
+<a name="L1788"></a><tt class="py-lineno">1788</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">state</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L1789"></a><tt class="py-lineno">1789</tt>  <tt class="py-line">            <tt class="py-comment"># Make sure it's a name</tt> </tt>
+<a name="L1790"></a><tt class="py-lineno">1790</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">elt</tt><tt class="py-op">,</tt> <tt class="py-name">tuple</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-name">elt</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-name [...]
+<a name="L1791"></a><tt class="py-lineno">1791</tt>  <tt class="py-line">                <tt class="py-name">names</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-755" class="py-name"><a title="epydoc.apidoc.DottedName" class="py-name" href="#" onclick="return doclink('link-755', 'DottedName', 'link-33');">DottedName</a></tt><tt class="py-op">(</tt><tt class="py-name">elt</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py [...]
+<a name="L1792"></a><tt class="py-lineno">1792</tt>  <tt class="py-line">                <tt class="py-name">state</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L1793"></a><tt class="py-lineno">1793</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1794"></a><tt class="py-lineno">1794</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt id="link-756" class="py-name"><a title="epydoc.docparser.ParseError
+epydoc.markup.ParseError" class="py-name" href="#" onclick="return doclink('link-756', 'ParseError', 'link-87');">ParseError</a></tt><tt class="py-op">(</tt><tt class="py-string">"Expected a name"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1795"></a><tt class="py-lineno">1795</tt>  <tt class="py-line">        <tt class="py-comment"># State 1 -- Expecting comma, period, or end of arglist</tt> </tt>
+<a name="L1796"></a><tt class="py-lineno">1796</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">elif</tt> <tt class="py-name">state</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L1797"></a><tt class="py-lineno">1797</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">elt</tt> <tt class="py-op">==</tt> <tt class="py-op">(</tt><tt class="py-name">token</tt><tt class="py-op">.</tt><tt class="py-name">OP</tt><tt class="py-op">,</tt> <tt class="py-string">'.'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1798"></a><tt class="py-lineno">1798</tt>  <tt class="py-line">                <tt class="py-name">state</tt> <tt class="py-op">=</tt> <tt class="py-number">2</tt> </tt>
+<a name="L1799"></a><tt class="py-lineno">1799</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">elt</tt> <tt class="py-op">==</tt> <tt class="py-op">(</tt><tt class="py-name">token</tt><tt class="py-op">.</tt><tt class="py-name">OP</tt><tt class="py-op">,</tt> <tt class="py-string">','</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1800"></a><tt class="py-lineno">1800</tt>  <tt class="py-line">                <tt class="py-name">state</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L1801"></a><tt class="py-lineno">1801</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1802"></a><tt class="py-lineno">1802</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt id="link-757" class="py-name"><a title="epydoc.docparser.ParseError
+epydoc.markup.ParseError" class="py-name" href="#" onclick="return doclink('link-757', 'ParseError', 'link-87');">ParseError</a></tt><tt class="py-op">(</tt><tt class="py-string">"Expected '.' or ',' or end of list"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1803"></a><tt class="py-lineno">1803</tt>  <tt class="py-line">        <tt class="py-comment"># State 2 -- Continuation of dotted name.</tt> </tt>
+<a name="L1804"></a><tt class="py-lineno">1804</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">elif</tt> <tt class="py-name">state</tt> <tt class="py-op">==</tt> <tt class="py-number">2</tt><tt class="py-op">:</tt> </tt>
+<a name="L1805"></a><tt class="py-lineno">1805</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">elt</tt><tt class="py-op">,</tt> <tt class="py-name">tuple</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-name">elt</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-name">token</tt><tt class="py-op [...]
+<a name="L1806"></a><tt class="py-lineno">1806</tt>  <tt class="py-line">                <tt class="py-name">names</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-758" class="py-name"><a title="epydoc.apidoc.DottedName" class="py-name" href="#" onclick="return doclink('link-758', 'DottedName', 'link-33');">DottedName</a></tt><tt class="py-op">(</tt><tt class="py-name">names</tt><tt class="py-op [...]
+<a name="L1807"></a><tt class="py-lineno">1807</tt>  <tt class="py-line">                <tt class="py-name">state</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L1808"></a><tt class="py-lineno">1808</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1809"></a><tt class="py-lineno">1809</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt id="link-759" class="py-name"><a title="epydoc.docparser.ParseError
+epydoc.markup.ParseError" class="py-name" href="#" onclick="return doclink('link-759', 'ParseError', 'link-87');">ParseError</a></tt><tt class="py-op">(</tt><tt class="py-string">"Expected a name"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1810"></a><tt class="py-lineno">1810</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">state</tt> <tt class="py-op">==</tt> <tt class="py-number">2</tt><tt class="py-op">:</tt> </tt>
+<a name="L1811"></a><tt class="py-lineno">1811</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt id="link-760" class="py-name"><a title="epydoc.docparser.ParseError
+epydoc.markup.ParseError" class="py-name" href="#" onclick="return doclink('link-760', 'ParseError', 'link-87');">ParseError</a></tt><tt class="py-op">(</tt><tt class="py-string">"Expected a name"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1812"></a><tt class="py-lineno">1812</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">names</tt> </tt>
+</div><a name="L1813"></a><tt class="py-lineno">1813</tt>  <tt class="py-line"> </tt>
+<a name="parse_string"></a><div id="parse_string-def"><a name="L1814"></a><tt class="py-lineno">1814</tt> <a class="py-toggle" href="#" id="parse_string-toggle" onclick="return toggle('parse_string');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docparser-module.html#parse_string">parse_string</a><tt class="py-op">(</tt><tt class="py-param">elt_list</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="parse_string-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="parse_string-expanded"><a name="L1815"></a><tt class="py-lineno">1815</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">elt_list</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt> <tt class="py-keyword">and</tt> <tt class="py-name">elt_list</tt><tt class="py-op">[</tt><tt cl [...]
+<a name="L1816"></a><tt class="py-lineno">1816</tt>  <tt class="py-line">        <tt class="py-comment"># [xx] use something safer here?  But it needs to deal with</tt> </tt>
+<a name="L1817"></a><tt class="py-lineno">1817</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># any string type (eg r"foo\bar" etc).</tt> </tt>
+<a name="L1818"></a><tt class="py-lineno">1818</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">return</tt> <tt class="py-name">eval</tt><tt class="py-op">(</tt><tt class="py-name">elt_list</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1819"></a><tt class="py-lineno">1819</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1820"></a><tt class="py-lineno">1820</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt id="link-761" class="py-name"><a title="epydoc.docparser.ParseError
+epydoc.markup.ParseError" class="py-name" href="#" onclick="return doclink('link-761', 'ParseError', 'link-87');">ParseError</a></tt><tt class="py-op">(</tt><tt class="py-string">"Expected a string"</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1821"></a><tt class="py-lineno">1821</tt>  <tt class="py-line"> </tt>
+<a name="L1822"></a><tt class="py-lineno">1822</tt>  <tt class="py-line"><tt class="py-comment"># ['1', 'b', 'c']</tt> </tt>
+<a name="parse_string_list"></a><div id="parse_string_list-def"><a name="L1823"></a><tt class="py-lineno">1823</tt> <a class="py-toggle" href="#" id="parse_string_list-toggle" onclick="return toggle('parse_string_list');">-</a><tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docparser-module.html#parse_string_list">parse_string_list</a><tt class="py-op">(</tt><tt class="py-param">elt_list</tt><tt class="py-op">)</tt><tt c [...]
+</div><div id="parse_string_list-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="parse_string_list-expanded"><a name="L1824"></a><tt class="py-lineno">1824</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">elt_list</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt> <tt class="py-keyword">and</tt> <tt class="py-name">isinstanc [...]
+<a name="L1825"></a><tt class="py-lineno">1825</tt>  <tt class="py-line">        <tt class="py-name">elt_list</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-string">'('</tt><tt class="py-op">,</tt> <tt class="py-string">'['</tt><tt class [...]
+<a name="L1826"></a><tt class="py-lineno">1826</tt>  <tt class="py-line">        <tt class="py-name">elt_list</tt> <tt class="py-op">=</tt> <tt class="py-name">elt_list</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L1827"></a><tt class="py-lineno">1827</tt>  <tt class="py-line"> </tt>
+<a name="L1828"></a><tt class="py-lineno">1828</tt>  <tt class="py-line">    <tt class="py-name">string_list</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L1829"></a><tt class="py-lineno">1829</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">string_elt</tt> <tt class="py-keyword">in</tt> <tt id="link-762" class="py-name"><a title="epydoc.docparser.split_on" class="py-name" href="#" onclick="return doclink('link-762', 'split_on', 'link-296');">split_on</a></tt><tt class="py-op">(</tt><tt class="py-name">elt_list</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">token</tt><tt c [...]
+<a name="L1830"></a><tt class="py-lineno">1830</tt>  <tt class="py-line">        <tt class="py-name">string_list</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-763" class="py-name"><a title="epydoc.docparser.parse_string" class="py-name" href="#" onclick="return doclink('link-763', 'parse_string', 'link-102');">parse_string</a></tt><tt class="py-op">(</tt><tt class="py-name">string_elt</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1831"></a><tt class="py-lineno">1831</tt>  <tt class="py-line"> </tt>
+<a name="L1832"></a><tt class="py-lineno">1832</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">string_list</tt> </tt>
+</div><a name="L1833"></a><tt class="py-lineno">1833</tt>  <tt class="py-line"> </tt>
+<a name="L1834"></a><tt class="py-lineno">1834</tt>  <tt class="py-line"><tt class="py-comment">#/////////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L1835"></a><tt class="py-lineno">1835</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#{ Variable Manipulation</tt> </tt>
+<a name="L1836"></a><tt class="py-lineno">1836</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#/////////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L1837"></a><tt class="py-lineno">1837</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="set_variable"></a><div id="set_variable-def"><a name="L1838"></a><tt class="py-lineno">1838</tt> <a class="py-toggle" href="#" id="set_variable-toggle" onclick="return toggle('set_variable');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docparser-module.html#set_variable">set_variable</a><tt class="py-op">(</tt><tt class="py-param">namespace</tt><tt class="py-op">,</tt> <tt class="py-param">var_doc</tt><tt class="py-op">,</tt> <tt [...]
+</div><div id="set_variable-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="set_variable-expanded"><a name="L1839"></a><tt class="py-lineno">1839</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L1840"></a><tt class="py-lineno">1840</tt>  <tt class="py-line"><tt class="py-docstring">    Add var_doc to namespace.  If namespace already contains a</tt> </tt>
+<a name="L1841"></a><tt class="py-lineno">1841</tt>  <tt class="py-line"><tt class="py-docstring">    variable with the same name, then discard the old variable.  If</tt> </tt>
+<a name="L1842"></a><tt class="py-lineno">1842</tt>  <tt class="py-line"><tt class="py-docstring">    C{preserve_docstring} is true, then keep the old variable's</tt> </tt>
+<a name="L1843"></a><tt class="py-lineno">1843</tt>  <tt class="py-line"><tt class="py-docstring">    docstring when overwriting a variable.</tt> </tt>
+<a name="L1844"></a><tt class="py-lineno">1844</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1845"></a><tt class="py-lineno">1845</tt>  <tt class="py-line">    <tt class="py-comment"># Choose which dictionary we'll be storing the variable in.</tt> </tt>
+<a name="L1846"></a><tt class="py-lineno">1846</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">namespace</tt><tt class="py-op">,</tt> <tt id="link-764" class="py-name"><a title="epydoc.apidoc.NamespaceDoc" class="py-name" href="#" onclick="return doclink('link-764', 'NamespaceDoc', 'link-181');">NamespaceDoc</a></tt><tt class="py-op">)</t [...]
+<a name="L1847"></a><tt class="py-lineno">1847</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> </tt>
+<a name="L1848"></a><tt class="py-lineno">1848</tt>  <tt class="py-line"> </tt>
+<a name="L1849"></a><tt class="py-lineno">1849</tt>  <tt class="py-line">    <tt class="py-comment"># This happens when the class definition has not been parsed, e.g. in</tt> </tt>
+<a name="L1850"></a><tt class="py-lineno">1850</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># sf bug #1693253 on ``Exception.x = y``</tt> </tt>
+<a name="L1851"></a><tt class="py-lineno">1851</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">namespace</tt><tt class="py-op">.</tt><tt id="link-765" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.sort_spec" class="py-name" href="#" onclick="return doclink('link-765', 'sort_spec', 'link-71');">sort_spec</a></tt> <tt class="py-keyword">is</tt> <tt id="link-766" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-na [...]
+<a name="L1852"></a><tt class="py-lineno">1852</tt>  <tt class="py-line">        <tt class="py-name">namespace</tt><tt class="py-op">.</tt><tt id="link-767" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.sort_spec" class="py-name" href="#" onclick="return doclink('link-767', 'sort_spec', 'link-71');">sort_spec</a></tt> <tt class="py-op">=</tt> <tt class="py-name">namespace</tt><tt class="py-op">.</tt><tt id="link-768" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables"  [...]
+<a name="L1853"></a><tt class="py-lineno">1853</tt>  <tt class="py-line"> </tt>
+<a name="L1854"></a><tt class="py-lineno">1854</tt>  <tt class="py-line">    <tt class="py-comment"># If we already have a variable with this name, then remove the</tt> </tt>
+<a name="L1855"></a><tt class="py-lineno">1855</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># old VariableDoc from the sort_spec list; and if we gave its</tt> </tt>
+<a name="L1856"></a><tt class="py-lineno">1856</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># value a canonical name, then delete it.</tt> </tt>
+<a name="L1857"></a><tt class="py-lineno">1857</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-769" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-769', 'name', 'link-31');">name</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">namespace</tt><tt class="py-op">.</tt><tt id="link-770" class="py-name"><a ti [...]
+<a name="L1858"></a><tt class="py-lineno">1858</tt>  <tt class="py-line">        <tt class="py-name">namespace</tt><tt class="py-op">.</tt><tt id="link-771" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.sort_spec" class="py-name" href="#" onclick="return doclink('link-771', 'sort_spec', 'link-71');">sort_spec</a></tt><tt class="py-op">.</tt><tt class="py-name">remove</tt><tt class="py-op">(</tt><tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-772" class="py-nam [...]
+<a name="L1859"></a><tt class="py-lineno">1859</tt>  <tt class="py-line">        <tt class="py-name">old_var_doc</tt> <tt class="py-op">=</tt> <tt class="py-name">namespace</tt><tt class="py-op">.</tt><tt id="link-773" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-773', 'variables', 'link-70');">variables</a></tt><tt class="py-op">[</tt><tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-774" class= [...]
+<a name="L1860"></a><tt class="py-lineno">1860</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">old_var_doc</tt><tt class="py-op">.</tt><tt id="link-775" class="py-name"><a title="epydoc.apidoc.VariableDoc.is_alias" class="py-name" href="#" onclick="return doclink('link-775', 'is_alias', 'link-300');">is_alias</a></tt> <tt class="py-op">==</tt> <tt class="py-name">False</tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L1861"></a><tt class="py-lineno">1861</tt>  <tt class="py-line">            <tt class="py-name">old_var_doc</tt><tt class="py-op">.</tt><tt id="link-776" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-776', 'value', 'link-135');">value</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt id="link-777" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return  [...]
+<a name="L1862"></a><tt class="py-lineno">1862</tt>  <tt class="py-line">            <tt class="py-name">old_var_doc</tt><tt class="py-op">.</tt><tt id="link-778" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-778', 'value', 'link-135');">value</a></tt><tt class="py-op">.</tt><tt id="link-779" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-779', 'canonical_name', 'link-37');">canonical_name</a></tt> <tt class="py-op">=</tt> <tt id="link-780" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-780', 'UNKNOWN', 'link-38');">UNKNOWN</a></tt> </tt>
+<a name="L1863"></a><tt class="py-lineno">1863</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">preserve_docstring</tt> <tt class="py-keyword">and</tt> <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-781" class="py-name"><a title="epydoc.apidoc.APIDoc.docstring" class="py-name" href="#" onclick="return doclink('link-781', 'docstring', 'link-531');">docstring</a></tt> <tt class="py-keyword">in</tt> <tt class= [...]
+<a name="L1864"></a><tt class="py-lineno">1864</tt>  <tt class="py-line">            <tt class="py-name">old_var_doc</tt><tt class="py-op">.</tt><tt id="link-783" class="py-name"><a title="epydoc.apidoc.APIDoc.docstring" class="py-name" href="#" onclick="return doclink('link-783', 'docstring', 'link-531');">docstring</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-784" class [...]
+<a name="L1865"></a><tt class="py-lineno">1865</tt>  <tt class="py-line">            <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-785" class="py-name"><a title="epydoc.apidoc.APIDoc.docstring" class="py-name" href="#" onclick="return doclink('link-785', 'docstring', 'link-531');">docstring</a></tt> <tt class="py-op">=</tt> <tt class="py-name">old_var_doc</tt><tt class="py-op">.</tt><tt id="link-786" class="py-name"><a title="epydoc.apidoc.APIDoc.docstring" class=" [...]
+<a name="L1866"></a><tt class="py-lineno">1866</tt>  <tt class="py-line">            <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-787" class="py-name"><a title="epydoc.apidoc.APIDoc.docstring_lineno" class="py-name" href="#" onclick="return doclink('link-787', 'docstring_lineno', 'link-555');">docstring_lineno</a></tt> <tt class="py-op">=</tt> <tt class="py-name">old_var_doc</tt><tt class="py-op">.</tt><tt id="link-788" class="py-name"><a title="epydoc.apidoc.APID [...]
+<a name="L1867"></a><tt class="py-lineno">1867</tt>  <tt class="py-line">    <tt class="py-comment"># Add the variable to the namespace.</tt> </tt>
+<a name="L1868"></a><tt class="py-lineno">1868</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">namespace</tt><tt class="py-op">.</tt><tt id="link-789" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-789', 'variables', 'link-70');">variables</a></tt><tt class="py-op">[</tt><tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-790" class="py-name"><a title="epydoc.apidoc.Vari [...]
+<a name="L1869"></a><tt class="py-lineno">1869</tt>  <tt class="py-line">    <tt class="py-name">namespace</tt><tt class="py-op">.</tt><tt id="link-791" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.sort_spec" class="py-name" href="#" onclick="return doclink('link-791', 'sort_spec', 'link-71');">sort_spec</a></tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-792" class="py-name">< [...]
+<a name="L1870"></a><tt class="py-lineno">1870</tt>  <tt class="py-line">    <tt class="py-keyword">assert</tt> <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-793" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-793', 'container', 'link-250');">container</a></tt> <tt class="py-keyword">is</tt> <tt id="link-794" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-794', 'UNKNOWN', 'link-38');">UNKNOWN</a></tt> </tt>
+<a name="L1871"></a><tt class="py-lineno">1871</tt>  <tt class="py-line">    <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-795" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-795', 'container', 'link-250');">container</a></tt> <tt class="py-op">=</tt> <tt class="py-name">namespace</tt> </tt>
+</div><a name="L1872"></a><tt class="py-lineno">1872</tt>  <tt class="py-line"> </tt>
+<a name="del_variable"></a><div id="del_variable-def"><a name="L1873"></a><tt class="py-lineno">1873</tt> <a class="py-toggle" href="#" id="del_variable-toggle" onclick="return toggle('del_variable');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docparser-module.html#del_variable">del_variable</a><tt class="py-op">(</tt><tt class="py-param">namespace</tt><tt class="py-op">,</tt> <tt class="py-param">name</tt><tt class="py-op">)</tt><tt cla [...]
+</div><div id="del_variable-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="del_variable-expanded"><a name="L1874"></a><tt class="py-lineno">1874</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">namespace</tt><tt class="py-op">,</tt> <tt id="link-796" class="py-name"><a title="epydoc.apidoc.NamespaceDoc" class="py-name" href="#" onclick="retu [...]
+<a name="L1875"></a><tt class="py-lineno">1875</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> </tt>
+<a name="L1876"></a><tt class="py-lineno">1876</tt>  <tt class="py-line"> </tt>
+<a name="L1877"></a><tt class="py-lineno">1877</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-797" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-797', 'name', 'link-31');">name</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-keyword">in</tt> <tt class="py-name">namespace</tt><tt class="py-op">.</tt><tt id="link-798" class="py-name"><a title="epy [...]
+<a name="L1878"></a><tt class="py-lineno">1878</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-799" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-799', 'name', 'link-31');">name</a></tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L1879"></a><tt class="py-lineno">1879</tt>  <tt class="py-line">            <tt class="py-name">var_doc</tt> <tt class="py-op">=</tt> <tt class="py-name">namespace</tt><tt class="py-op">.</tt><tt id="link-800" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-800', 'variables', 'link-70');">variables</a></tt><tt class="py-op">[</tt><tt id="link-801" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" clas [...]
+<a name="L1880"></a><tt class="py-lineno">1880</tt>  <tt class="py-line">            <tt class="py-name">namespace</tt><tt class="py-op">.</tt><tt id="link-802" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.sort_spec" class="py-name" href="#" onclick="return doclink('link-802', 'sort_spec', 'link-71');">sort_spec</a></tt><tt class="py-op">.</tt><tt class="py-name">remove</tt><tt class="py-op">(</tt><tt id="link-803" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class=" [...]
+<a name="L1881"></a><tt class="py-lineno">1881</tt>  <tt class="py-line">            <tt class="py-keyword">del</tt> <tt class="py-name">namespace</tt><tt class="py-op">.</tt><tt id="link-804" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-804', 'variables', 'link-70');">variables</a></tt><tt class="py-op">[</tt><tt id="link-805" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" oncli [...]
+<a name="L1882"></a><tt class="py-lineno">1882</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-806" class="py-name"><a title="epydoc.apidoc.VariableDoc.is_alias" class="py-name" href="#" onclick="return doclink('link-806', 'is_alias', 'link-300');">is_alias</a></tt> <tt class="py-keyword">and</tt> <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-80 [...]
+<a name="L1883"></a><tt class="py-lineno">1883</tt>  <tt class="py-line">                <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-809" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-809', 'value', 'link-135');">value</a></tt><tt class="py-op">.</tt><tt id="link-810" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-810', 'canonical_name', 'link-37');">canonical_name</a></tt> <tt class="py-op">=</tt> <tt id="link-811" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-811', 'UNKNOWN', 'link-38');">UNKNOWN</a></tt> </tt>
+<a name="L1884"></a><tt class="py-lineno">1884</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1885"></a><tt class="py-lineno">1885</tt>  <tt class="py-line">            <tt id="link-812" class="py-name"><a title="epydoc.docparser.del_variable" class="py-name" href="#" onclick="return doclink('link-812', 'del_variable', 'link-530');">del_variable</a></tt><tt class="py-op">(</tt><tt class="py-name">namespace</tt><tt class="py-op">.</tt><tt id="link-813" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-8 [...]
+</div><a name="L1886"></a><tt class="py-lineno">1886</tt>  <tt class="py-line">             </tt>
+<a name="L1887"></a><tt class="py-lineno">1887</tt>  <tt class="py-line"><tt class="py-comment">#/////////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L1888"></a><tt class="py-lineno">1888</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#{ Name Lookup</tt> </tt>
+<a name="L1889"></a><tt class="py-lineno">1889</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#/////////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L1890"></a><tt class="py-lineno">1890</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="lookup_name"></a><div id="lookup_name-def"><a name="L1891"></a><tt class="py-lineno">1891</tt> <a class="py-toggle" href="#" id="lookup_name-toggle" onclick="return toggle('lookup_name');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docparser-module.html#lookup_name">lookup_name</a><tt class="py-op">(</tt><tt class="py-param">identifier</tt><tt class="py-op">,</tt> <tt class="py-param">parent_docs</tt><tt class="py-op">)</tt><tt c [...]
+</div><div id="lookup_name-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="lookup_name-expanded"><a name="L1892"></a><tt class="py-lineno">1892</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L1893"></a><tt class="py-lineno">1893</tt>  <tt class="py-line"><tt class="py-docstring">    Find and return the documentation for the variable named by</tt> </tt>
+<a name="L1894"></a><tt class="py-lineno">1894</tt>  <tt class="py-line"><tt class="py-docstring">    the given identifier.</tt> </tt>
+<a name="L1895"></a><tt class="py-lineno">1895</tt>  <tt class="py-line"><tt class="py-docstring">    </tt> </tt>
+<a name="L1896"></a><tt class="py-lineno">1896</tt>  <tt class="py-line"><tt class="py-docstring">    @rtype: L{VariableDoc} or C{None}</tt> </tt>
+<a name="L1897"></a><tt class="py-lineno">1897</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1898"></a><tt class="py-lineno">1898</tt>  <tt class="py-line">    <tt class="py-comment"># We need to check 3 namespaces: locals, globals, and builtins.</tt> </tt>
+<a name="L1899"></a><tt class="py-lineno">1899</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># Note that this is true even if we're in a version of python with</tt> </tt>
+<a name="L1900"></a><tt class="py-lineno">1900</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># nested scopes, because nested scope lookup does not apply to</tt> </tt>
+<a name="L1901"></a><tt class="py-lineno">1901</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># nested class definitions, and we're not worried about variables</tt> </tt>
+<a name="L1902"></a><tt class="py-lineno">1902</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># in nested functions.</tt> </tt>
+<a name="L1903"></a><tt class="py-lineno">1903</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">identifier</tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1904"></a><tt class="py-lineno">1904</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">TypeError</tt><tt class="py-op">(</tt><tt class="py-string">'identifier must be a string'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1905"></a><tt class="py-lineno">1905</tt>  <tt class="py-line"> </tt>
+<a name="L1906"></a><tt class="py-lineno">1906</tt>  <tt class="py-line">    <tt class="py-comment"># Locals</tt> </tt>
+<a name="L1907"></a><tt class="py-lineno">1907</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">parent_docs</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt id="link-817" class="py-name"><a title="epydoc.apidoc.NamespaceDoc" class="py-name" href="#" onclick="return doclink('link-817', 'Na [...]
+<a name="L1908"></a><tt class="py-lineno">1908</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">identifier</tt> <tt class="py-keyword">in</tt> <tt class="py-name">parent_docs</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-818" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-818', 'variables [...]
+<a name="L1909"></a><tt class="py-lineno">1909</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">parent_docs</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-819" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-819', 'variables', 'link-70');">variables</a></tt><tt class="py-op">[</tt>< [...]
+<a name="L1910"></a><tt class="py-lineno">1910</tt>  <tt class="py-line"> </tt>
+<a name="L1911"></a><tt class="py-lineno">1911</tt>  <tt class="py-line">    <tt class="py-comment"># Globals (aka the containing module)</tt> </tt>
+<a name="L1912"></a><tt class="py-lineno">1912</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">parent_docs</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt id="link-820" class="py-name"><a title="epydoc.apidoc.NamespaceDoc" class="py-name" href="#" onclick="return doclink('link-820', 'NamespaceDoc', 'link-181') [...]
+<a name="L1913"></a><tt class="py-lineno">1913</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">identifier</tt> <tt class="py-keyword">in</tt> <tt class="py-name">parent_docs</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-821" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-821', 'variables', 'link-70');">variable [...]
+<a name="L1914"></a><tt class="py-lineno">1914</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">parent_docs</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-822" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-822', 'variables', 'link-70');">variables</a></tt><tt class="py-op">[</tt><tt class="py-name">ident [...]
+<a name="L1915"></a><tt class="py-lineno">1915</tt>  <tt class="py-line"> </tt>
+<a name="L1916"></a><tt class="py-lineno">1916</tt>  <tt class="py-line">    <tt class="py-comment"># Builtins</tt> </tt>
+<a name="L1917"></a><tt class="py-lineno">1917</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">builtins</tt> <tt class="py-op">=</tt> <tt id="link-823" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-823', 'epydoc', 'link-1');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-824" class="py-name"><a title="epydoc.docintrospecter" class="py-name" href="#" onclick="return doclink('link-824', 'docintrospecter', 'link- [...]
+<a name="L1918"></a><tt class="py-lineno">1918</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">builtins</tt><tt class="py-op">,</tt> <tt id="link-826" class="py-name"><a title="epydoc.apidoc.NamespaceDoc" class="py-name" href="#" onclick="return doclink('link-826', 'NamespaceDoc', 'link-181');">NamespaceDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1919"></a><tt class="py-lineno">1919</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">identifier</tt> <tt class="py-keyword">in</tt> <tt class="py-name">builtins</tt><tt class="py-op">.</tt><tt id="link-827" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-827', 'variables', 'link-70');">variables</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1920"></a><tt class="py-lineno">1920</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">builtins</tt><tt class="py-op">.</tt><tt id="link-828" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-828', 'variables', 'link-70');">variables</a></tt><tt class="py-op">[</tt><tt class="py-name">identifier</tt><tt class="py-op">]</tt> </tt>
+<a name="L1921"></a><tt class="py-lineno">1921</tt>  <tt class="py-line"> </tt>
+<a name="L1922"></a><tt class="py-lineno">1922</tt>  <tt class="py-line">    <tt class="py-comment"># We didn't find it; return None.</tt> </tt>
+<a name="L1923"></a><tt class="py-lineno">1923</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
+</div><a name="L1924"></a><tt class="py-lineno">1924</tt>  <tt class="py-line"> </tt>
+<a name="lookup_variable"></a><div id="lookup_variable-def"><a name="L1925"></a><tt class="py-lineno">1925</tt> <a class="py-toggle" href="#" id="lookup_variable-toggle" onclick="return toggle('lookup_variable');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docparser-module.html#lookup_variable">lookup_variable</a><tt class="py-op">(</tt><tt class="py-param">dotted_name</tt><tt class="py-op">,</tt> <tt class="py-param">parent_docs</tt><tt  [...]
+</div><div id="lookup_variable-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="lookup_variable-expanded"><a name="L1926"></a><tt class="py-lineno">1926</tt>  <tt class="py-line">    <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">dotted_name</tt><tt class="py-op">,</tt> <tt id="link-829" class="py-name"><a title="epydoc.apidoc.DottedName" class="py-name" href="#" onclick="return doclink('link-829', [...]
+<a name="L1927"></a><tt class="py-lineno">1927</tt>  <tt class="py-line">    <tt class="py-comment"># If it's a simple identifier, use lookup_name.</tt> </tt>
+<a name="L1928"></a><tt class="py-lineno">1928</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">dotted_name</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L1929"></a><tt class="py-lineno">1929</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-830" class="py-name"><a title="epydoc.docparser.lookup_name" class="py-name" href="#" onclick="return doclink('link-830', 'lookup_name', 'link-684');">lookup_name</a></tt><tt class="py-op">(</tt><tt class="py-name">dotted_name</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">parent_docs [...]
+<a name="L1930"></a><tt class="py-lineno">1930</tt>  <tt class="py-line"> </tt>
+<a name="L1931"></a><tt class="py-lineno">1931</tt>  <tt class="py-line">    <tt class="py-comment"># If it's a dotted name with multiple pieces, look up the</tt> </tt>
+<a name="L1932"></a><tt class="py-lineno">1932</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># namespace containing the var (=parent) first; and then</tt> </tt>
+<a name="L1933"></a><tt class="py-lineno">1933</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># look for the var in that namespace.</tt> </tt>
+<a name="L1934"></a><tt class="py-lineno">1934</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1935"></a><tt class="py-lineno">1935</tt>  <tt class="py-line">        <tt class="py-name">parent</tt> <tt class="py-op">=</tt> <tt id="link-831" class="py-name"><a title="epydoc.docparser.lookup_value" class="py-name" href="#" onclick="return doclink('link-831', 'lookup_value', 'link-495');">lookup_value</a></tt><tt class="py-op">(</tt><tt class="py-name">dotted_name</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt cla [...]
+<a name="L1936"></a><tt class="py-lineno">1936</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">parent</tt><tt class="py-op">,</tt> <tt id="link-832" class="py-name"><a title="epydoc.apidoc.NamespaceDoc" class="py-name" href="#" onclick="return doclink('link-832', 'NamespaceDoc', 'link-181');">NamespaceDoc</a></tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L1937"></a><tt class="py-lineno">1937</tt>  <tt class="py-line">            <tt class="py-name">dotted_name</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-keyword">in</tt> <tt class="py-name">parent</tt><tt class="py-op">.</tt><tt id="link-833" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-833', 'variables', 'link-70');">variables</a></ [...]
+<a name="L1938"></a><tt class="py-lineno">1938</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">parent</tt><tt class="py-op">.</tt><tt id="link-834" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-834', 'variables', 'link-70');">variables</a></tt><tt class="py-op">[</tt><tt class="py-name">dotted_name</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number"> [...]
+<a name="L1939"></a><tt class="py-lineno">1939</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1940"></a><tt class="py-lineno">1940</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> <tt class="py-comment"># var not found.</tt> </tt>
+</div><a name="L1941"></a><tt class="py-lineno">1941</tt>  <tt class="py-line"> </tt>
+<a name="lookup_value"></a><div id="lookup_value-def"><a name="L1942"></a><tt class="py-lineno">1942</tt> <a class="py-toggle" href="#" id="lookup_value-toggle" onclick="return toggle('lookup_value');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docparser-module.html#lookup_value">lookup_value</a><tt class="py-op">(</tt><tt class="py-param">dotted_name</tt><tt class="py-op">,</tt> <tt class="py-param">parent_docs</tt><tt class="py-op">)</t [...]
+</div><div id="lookup_value-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="lookup_value-expanded"><a name="L1943"></a><tt class="py-lineno">1943</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L1944"></a><tt class="py-lineno">1944</tt>  <tt class="py-line"><tt class="py-docstring">    Find and return the documentation for the value contained in</tt> </tt>
+<a name="L1945"></a><tt class="py-lineno">1945</tt>  <tt class="py-line"><tt class="py-docstring">    the variable with the given name in the current namespace.</tt> </tt>
+<a name="L1946"></a><tt class="py-lineno">1946</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1947"></a><tt class="py-lineno">1947</tt>  <tt class="py-line">    <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">dotted_name</tt><tt class="py-op">,</tt> <tt id="link-835" class="py-name"><a title="epydoc.apidoc.DottedName" class="py-name" href="#" onclick="return doclink('link-835', 'DottedName', 'link-33');">DottedName</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1948"></a><tt class="py-lineno">1948</tt>  <tt class="py-line">    <tt class="py-name">var_doc</tt> <tt class="py-op">=</tt> <tt id="link-836" class="py-name"><a title="epydoc.docparser.lookup_name" class="py-name" href="#" onclick="return doclink('link-836', 'lookup_name', 'link-684');">lookup_name</a></tt><tt class="py-op">(</tt><tt class="py-name">dotted_name</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="p [...]
+<a name="L1949"></a><tt class="py-lineno">1949</tt>  <tt class="py-line"> </tt>
+<a name="L1950"></a><tt class="py-lineno">1950</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">dotted_name</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1951"></a><tt class="py-lineno">1951</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">var_doc</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
+<a name="L1952"></a><tt class="py-lineno">1952</tt>  <tt class="py-line"> </tt>
+<a name="L1953"></a><tt class="py-lineno">1953</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-837" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-837', 'value', 'link-135');">value</a></tt><tt class="py-op">,</tt> <tt id="link-838" class="py-name"><a title="epydoc.apidoc.Namespa [...]
+<a name="L1954"></a><tt class="py-lineno">1954</tt>  <tt class="py-line">            <tt class="py-name">var_dict</tt> <tt class="py-op">=</tt> <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-839" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-839', 'value', 'link-135');">value</a></tt><tt class="py-op">.</tt><tt id="link-840" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-n [...]
+<a name="L1955"></a><tt class="py-lineno">1955</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-op">(</tt><tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-841" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-841', 'value', 'link-135');">value</a></tt> <tt class="py-keyword">is</tt> <tt id="link-842" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" [...]
+<a name="L1956"></a><tt class="py-lineno">1956</tt>  <tt class="py-line">            <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-843" class="py-name"><a title="epydoc.apidoc.VariableDoc.imported_from" class="py-name" href="#" onclick="return doclink('link-843', 'imported_from', 'link-167');">imported_from</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="li [...]
+<a name="L1957"></a><tt class="py-lineno">1957</tt>  <tt class="py-line">            <tt class="py-name">src_name</tt> <tt class="py-op">=</tt> <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-845" class="py-name"><a title="epydoc.apidoc.VariableDoc.imported_from" class="py-name" href="#" onclick="return doclink('link-845', 'imported_from', 'link-167');">imported_from</a></tt> <tt class="py-op">+</tt> <tt class="py-name">dotted_name</tt><tt class="py-op">[</tt><tt cla [...]
+<a name="L1958"></a><tt class="py-lineno">1958</tt>  <tt class="py-line">            <tt class="py-comment"># [xx] do I want to create a proxy here??</tt> </tt>
+<a name="L1959"></a><tt class="py-lineno">1959</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">return</tt> <tt id="link-846" class="py-name"><a title="epydoc.apidoc.GenericValueDoc" class="py-name" href="#" onclick="return doclink('link-846', 'GenericValueDoc', 'link-506');">GenericValueDoc</a></tt><tt class="py-op">(</tt><tt id="link-847" class="py-name"><a title="epydoc.apidoc.ValueDoc.proxy_for" class="py-name" href="#" onclick="return doclink( [...]
+<a name="L1960"></a><tt class="py-lineno">1960</tt>  <tt class="py-line">                                   <tt id="link-848" class="py-name"><a title="epydoc.apidoc.ValueDoc.parse_repr" class="py-name" href="#" onclick="return doclink('link-848', 'parse_repr', 'link-504');">parse_repr</a></tt><tt class="py-op">=</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">dotted_name</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1961"></a><tt class="py-lineno">1961</tt>  <tt class="py-line">                                   <tt id="link-849" class="py-name"><a title="epydoc.apidoc.APIDoc.docs_extracted_by" class="py-name" href="#" onclick="return doclink('link-849', 'docs_extracted_by', 'link-78');">docs_extracted_by</a></tt><tt class="py-op">=</tt><tt class="py-string">'parser'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1962"></a><tt class="py-lineno">1962</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1963"></a><tt class="py-lineno">1963</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
+<a name="L1964"></a><tt class="py-lineno">1964</tt>  <tt class="py-line"> </tt>
+<a name="L1965"></a><tt class="py-lineno">1965</tt>  <tt class="py-line">        <tt class="py-name">var_doc</tt> <tt class="py-op">=</tt> <tt class="py-name">var_dict</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-name">dotted_name</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1966"></a><tt class="py-lineno">1966</tt>  <tt class="py-line"> </tt>
+<a name="L1967"></a><tt class="py-lineno">1967</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">var_doc</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
+<a name="L1968"></a><tt class="py-lineno">1968</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-850" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-850', 'value', 'link-135');">value</a></tt> </tt>
+</div><a name="L1969"></a><tt class="py-lineno">1969</tt>  <tt class="py-line"> </tt>
+<a name="L1970"></a><tt class="py-lineno">1970</tt>  <tt class="py-line"><tt class="py-comment">#/////////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L1971"></a><tt class="py-lineno">1971</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#{ Docstring Comments</tt> </tt>
+<a name="L1972"></a><tt class="py-lineno">1972</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#/////////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L1973"></a><tt class="py-lineno">1973</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="add_docstring_from_comments"></a><div id="add_docstring_from_comments-def"><a name="L1974"></a><tt class="py-lineno">1974</tt> <a class="py-toggle" href="#" id="add_docstring_from_comments-toggle" onclick="return toggle('add_docstring_from_comments');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docparser-module.html#add_docstring_from_comments">add_docstring_from_comments</a><tt class="py-op">(</tt><tt class="py-param">api_doc</t [...]
+</div><div id="add_docstring_from_comments-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="add_docstring_from_comments-expanded"><a name="L1975"></a><tt class="py-lineno">1975</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">api_doc</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt> <tt class="py-keyword">or</tt> <tt class="py-keyword">not</tt> <tt class="py-name">comments</tt><tt class="py-op">:</tt> <tt class="py-k [...]
+<a name="L1976"></a><tt class="py-lineno">1976</tt>  <tt class="py-line">    <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-851" class="py-name"><a title="epydoc.apidoc.APIDoc.docstring" class="py-name" href="#" onclick="return doclink('link-851', 'docstring', 'link-531');">docstring</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'\n'</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name" [...]
+<a name="L1977"></a><tt class="py-lineno">1977</tt>  <tt class="py-line">    <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-853" class="py-name"><a title="epydoc.apidoc.APIDoc.docstring_lineno" class="py-name" href="#" onclick="return doclink('link-853', 'docstring_lineno', 'link-555');">docstring_lineno</a></tt> <tt class="py-op">=</tt> <tt class="py-name">comments</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</ [...]
+</div><a name="L1978"></a><tt class="py-lineno">1978</tt>  <tt class="py-line"> </tt>
+<a name="L1979"></a><tt class="py-lineno">1979</tt>  <tt class="py-line"><tt class="py-comment">#/////////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L1980"></a><tt class="py-lineno">1980</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#{ Tree tokens</tt> </tt>
+<a name="L1981"></a><tt class="py-lineno">1981</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#/////////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L1982"></a><tt class="py-lineno">1982</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="_join_toktree"></a><div id="_join_toktree-def"><a name="L1983"></a><tt class="py-lineno">1983</tt> <a class="py-toggle" href="#" id="_join_toktree-toggle" onclick="return toggle('_join_toktree');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docparser-module.html#_join_toktree">_join_toktree</a><tt class="py-op">(</tt><tt class="py-param">s1</tt><tt class="py-op">,</tt> <tt class="py-param">s2</tt><tt class="py-op">)</tt><tt class= [...]
+</div><div id="_join_toktree-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_join_toktree-expanded"><a name="L1984"></a><tt class="py-lineno">1984</tt>  <tt class="py-line">    <tt class="py-comment"># Join them.  s1 = left side; s2 = right side.</tt> </tt>
+<a name="L1985"></a><tt class="py-lineno">1985</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">s2</tt><tt class="py-op">==</tt><tt class="py-string">''</tt> <tt class="py-keyword">or</tt> <tt class="py-name">s1</tt><tt class="py-op">==</tt><tt class="py-string">''</tt> <tt class="py-keyword">or</tt> </tt>
+<a name="L1986"></a><tt class="py-lineno">1986</tt>  <tt class="py-line">        <tt class="py-name">s1</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-string">'-'</tt><tt class="py-op">,</tt><tt class="py-string">'`'</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-name">s2</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-string">'}'</tt><tt class="py-op">,</tt><tt class="py-string">']'</tt><tt class="py-op">,</ [...]
+<a name="L1987"></a><tt class="py-lineno">1987</tt>  <tt class="py-line">        <tt class="py-name">s2</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-string">'.'</tt><tt class="py-op">,</tt><tt class="py-string">','</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-name">s1</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class [...]
+<a name="L1988"></a><tt class="py-lineno">1988</tt>  <tt class="py-line">        <tt class="py-op">(</tt><tt class="py-name">s2</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">'('</tt> <tt class="py-keyword">and</tt> <tt class="py-name">s1</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt [...]
+<a name="L1989"></a><tt class="py-lineno">1989</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">'%s%s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">s1</tt><tt class="py-op">,</tt><tt class="py-name">s2</tt><tt class="py-op">)</tt> </tt>
+<a name="L1990"></a><tt class="py-lineno">1990</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-op">(</tt><tt class="py-name">spacing</tt><tt class="py-op">==</tt><tt class="py-string">'tight'</tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L1991"></a><tt class="py-lineno">1991</tt>  <tt class="py-line">          <tt class="py-name">s1</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-keyword">in</tt> <tt class="py-string">'+-*/=,'</tt> <tt class="py-keyword">or</tt> <tt class="py-name">s2</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-keyword">in</tt> <tt class="py-string">'+-*/=,'</tt><tt class="py [...]
+<a name="L1992"></a><tt class="py-lineno">1992</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">'%s%s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">s1</tt><tt class="py-op">,</tt> <tt class="py-name">s2</tt><tt class="py-op">)</tt> </tt>
+<a name="L1993"></a><tt class="py-lineno">1993</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1994"></a><tt class="py-lineno">1994</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">'%s %s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">s1</tt><tt class="py-op">,</tt> <tt class="py-name">s2</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1995"></a><tt class="py-lineno">1995</tt>  <tt class="py-line"> </tt>
+<a name="_pp_toktree_add_piece"></a><div id="_pp_toktree_add_piece-def"><a name="L1996"></a><tt class="py-lineno">1996</tt> <a class="py-toggle" href="#" id="_pp_toktree_add_piece-toggle" onclick="return toggle('_pp_toktree_add_piece');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docparser-module.html#_pp_toktree_add_piece">_pp_toktree_add_piece</a><tt class="py-op">(</tt><tt class="py-param">spacing</tt><tt class="py-op">,</tt> <tt class [...]
+</div><div id="_pp_toktree_add_piece-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_pp_toktree_add_piece-expanded"><a name="L1997"></a><tt class="py-lineno">1997</tt>  <tt class="py-line">    <tt class="py-name">s1</tt> <tt class="py-op">=</tt> <tt class="py-name">pieces</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L1998"></a><tt class="py-lineno">1998</tt>  <tt class="py-line">    <tt class="py-name">s2</tt> <tt class="py-op">=</tt> <tt class="py-name">piece</tt> </tt>
+<a name="L1999"></a><tt class="py-lineno">1999</tt>  <tt class="py-line">     </tt>
+<a name="L2000"></a><tt class="py-lineno">2000</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">s2</tt><tt class="py-op">==</tt><tt class="py-string">''</tt> <tt class="py-keyword">or</tt> <tt class="py-name">s1</tt><tt class="py-op">==</tt><tt class="py-string">''</tt> <tt class="py-keyword">or</tt> </tt>
+<a name="L2001"></a><tt class="py-lineno">2001</tt>  <tt class="py-line">        <tt class="py-name">s1</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-string">'-'</tt><tt class="py-op">,</tt><tt class="py-string">'`'</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-name">s2</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-string">'}'</tt><tt class="py-op">,</tt><tt class="py-string">']'</tt><tt class="py-op">,</ [...]
+<a name="L2002"></a><tt class="py-lineno">2002</tt>  <tt class="py-line">        <tt class="py-name">s2</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-string">'.'</tt><tt class="py-op">,</tt><tt class="py-string">','</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-name">s1</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class [...]
+<a name="L2003"></a><tt class="py-lineno">2003</tt>  <tt class="py-line">        <tt class="py-op">(</tt><tt class="py-name">s2</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">'('</tt> <tt class="py-keyword">and</tt> <tt class="py-name">s1</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt [...]
+<a name="L2004"></a><tt class="py-lineno">2004</tt>  <tt class="py-line">        <tt class="py-keyword">pass</tt> </tt>
+<a name="L2005"></a><tt class="py-lineno">2005</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-op">(</tt><tt class="py-name">spacing</tt><tt class="py-op">==</tt><tt class="py-string">'tight'</tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L2006"></a><tt class="py-lineno">2006</tt>  <tt class="py-line">          <tt class="py-name">s1</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-keyword">in</tt> <tt class="py-string">'+-*/=,'</tt> <tt class="py-keyword">or</tt> <tt class="py-name">s2</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-keyword">in</tt> <tt class="py-string">'+-*/=,'</tt><tt class="py [...]
+<a name="L2007"></a><tt class="py-lineno">2007</tt>  <tt class="py-line">        <tt class="py-keyword">pass</tt> </tt>
+<a name="L2008"></a><tt class="py-lineno">2008</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L2009"></a><tt class="py-lineno">2009</tt>  <tt class="py-line">        <tt class="py-name">pieces</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">' '</tt><tt class="py-op">)</tt> </tt>
+<a name="L2010"></a><tt class="py-lineno">2010</tt>  <tt class="py-line">         </tt>
+<a name="L2011"></a><tt class="py-lineno">2011</tt>  <tt class="py-line">    <tt class="py-name">pieces</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">piece</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2012"></a><tt class="py-lineno">2012</tt>  <tt class="py-line"> </tt>
+<a name="pp_toktree"></a><div id="pp_toktree-def"><a name="L2013"></a><tt class="py-lineno">2013</tt> <a class="py-toggle" href="#" id="pp_toktree-toggle" onclick="return toggle('pp_toktree');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docparser-module.html#pp_toktree">pp_toktree</a><tt class="py-op">(</tt><tt class="py-param">elts</tt><tt class="py-op">,</tt> <tt class="py-param">spacing</tt><tt class="py-op">=</tt><tt class="py-string" [...]
+</div><div id="pp_toktree-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="pp_toktree-expanded"><a name="L2014"></a><tt class="py-lineno">2014</tt>  <tt class="py-line">    <tt class="py-name">pieces</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-string">''</tt><tt class="py-op">]</tt> </tt>
+<a name="L2015"></a><tt class="py-lineno">2015</tt>  <tt class="py-line">    <tt id="link-854" class="py-name" targets="Function epydoc.docparser._pp_toktree()=epydoc.docparser-module.html#_pp_toktree"><a title="epydoc.docparser._pp_toktree" class="py-name" href="#" onclick="return doclink('link-854', '_pp_toktree', 'link-854');">_pp_toktree</a></tt><tt class="py-op">(</tt><tt class="py-name">elts</tt><tt class="py-op">,</tt> <tt class="py-name">spacing</tt><tt class="py-op">,</tt> <tt c [...]
+<a name="L2016"></a><tt class="py-lineno">2016</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-string">''</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">pieces</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2017"></a><tt class="py-lineno">2017</tt>  <tt class="py-line">     </tt>
+<a name="_pp_toktree"></a><div id="_pp_toktree-def"><a name="L2018"></a><tt class="py-lineno">2018</tt> <a class="py-toggle" href="#" id="_pp_toktree-toggle" onclick="return toggle('_pp_toktree');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docparser-module.html#_pp_toktree">_pp_toktree</a><tt class="py-op">(</tt><tt class="py-param">elts</tt><tt class="py-op">,</tt> <tt class="py-param">spacing</tt><tt class="py-op">,</tt> <tt class="py- [...]
+</div><div id="_pp_toktree-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_pp_toktree-expanded"><a name="L2019"></a><tt class="py-lineno">2019</tt>  <tt class="py-line">    <tt class="py-name">add_piece</tt> <tt class="py-op">=</tt> <tt id="link-855" class="py-name" targets="Function epydoc.docparser._pp_toktree_add_piece()=epydoc.docparser-module.html#_pp_toktree_add_piece"><a title="epydoc.docparser._pp_toktree_add_piece" class="py-name" href="#" onclick="retu [...]
+<a name="L2020"></a><tt class="py-lineno">2020</tt>  <tt class="py-line">     </tt>
+<a name="L2021"></a><tt class="py-lineno">2021</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">elt</tt> <tt class="py-keyword">in</tt> <tt class="py-name">elts</tt><tt class="py-op">:</tt> </tt>
+<a name="L2022"></a><tt class="py-lineno">2022</tt>  <tt class="py-line">        <tt class="py-comment"># Put a blank line before class & def statements.</tt> </tt>
+<a name="L2023"></a><tt class="py-lineno">2023</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">elt</tt> <tt class="py-op">==</tt> <tt class="py-op">(</tt><tt class="py-name">token</tt><tt class="py-op">.</tt><tt class="py-name">NAME</tt><tt class="py-op">,</tt> <tt class="py-string">'class'</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-name">elt</tt> <tt class="py-op">==</tt> <tt class="py-op">(< [...]
+<a name="L2024"></a><tt class="py-lineno">2024</tt>  <tt class="py-line">            <tt class="py-name">add_piece</tt><tt class="py-op">(</tt><tt class="py-name">spacing</tt><tt class="py-op">,</tt> <tt class="py-name">pieces</tt><tt class="py-op">,</tt> <tt class="py-string">'\n%s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-string">'    '</tt><tt class="py-op">*</tt><tt class="py-name">indent</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2025"></a><tt class="py-lineno">2025</tt>  <tt class="py-line"> </tt>
+<a name="L2026"></a><tt class="py-lineno">2026</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">elt</tt><tt class="py-op">,</tt> <tt class="py-name">tuple</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L2027"></a><tt class="py-lineno">2027</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">elt</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-name">token</tt><tt class="py-op">.</tt><tt class="py-name">NEWLINE</tt><tt class="py-op">:</tt> </tt>
+<a name="L2028"></a><tt class="py-lineno">2028</tt>  <tt class="py-line">                <tt class="py-name">add_piece</tt><tt class="py-op">(</tt><tt class="py-name">spacing</tt><tt class="py-op">,</tt> <tt class="py-name">pieces</tt><tt class="py-op">,</tt> <tt class="py-string">'    '</tt><tt class="py-op">+</tt><tt class="py-name">elt</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L2029"></a><tt class="py-lineno">2029</tt>  <tt class="py-line">                <tt class="py-name">add_piece</tt><tt class="py-op">(</tt><tt class="py-name">spacing</tt><tt class="py-op">,</tt> <tt class="py-name">pieces</tt><tt class="py-op">,</tt> <tt class="py-string">'\n%s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-string">'    '</tt><tt class="py-op">*</tt><tt class="py-name">indent</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2030"></a><tt class="py-lineno">2030</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">elt</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-name">token</tt><tt class="py-op">.</tt><tt class="py-name">INDENT</tt><tt class="py-op">:</tt> </tt>
+<a name="L2031"></a><tt class="py-lineno">2031</tt>  <tt class="py-line">                <tt class="py-name">add_piece</tt><tt class="py-op">(</tt><tt class="py-name">spacing</tt><tt class="py-op">,</tt> <tt class="py-name">pieces</tt><tt class="py-op">,</tt> <tt class="py-string">'    '</tt><tt class="py-op">)</tt> </tt>
+<a name="L2032"></a><tt class="py-lineno">2032</tt>  <tt class="py-line">                <tt class="py-name">indent</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L2033"></a><tt class="py-lineno">2033</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">elt</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-name">token</tt><tt class="py-op">.</tt><tt class="py-name">DEDENT</tt><tt class="py-op">:</tt> </tt>
+<a name="L2034"></a><tt class="py-lineno">2034</tt>  <tt class="py-line">                <tt class="py-keyword">assert</tt> <tt class="py-name">pieces</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">'    '</tt> </tt>
+<a name="L2035"></a><tt class="py-lineno">2035</tt>  <tt class="py-line">                <tt class="py-name">pieces</tt><tt class="py-op">.</tt><tt class="py-name">pop</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L2036"></a><tt class="py-lineno">2036</tt>  <tt class="py-line">                <tt class="py-name">indent</tt> <tt class="py-op">-=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L2037"></a><tt class="py-lineno">2037</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">elt</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-name">tokenize</tt><tt class="py-op">.</tt><tt class="py-name">COMMENT</tt><tt class="py-op">:</tt> </tt>
+<a name="L2038"></a><tt class="py-lineno">2038</tt>  <tt class="py-line">                <tt class="py-name">add_piece</tt><tt class="py-op">(</tt><tt class="py-name">spacing</tt><tt class="py-op">,</tt> <tt class="py-name">pieces</tt><tt class="py-op">,</tt> <tt class="py-name">elt</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">rstrip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> [...]
+<a name="L2039"></a><tt class="py-lineno">2039</tt>  <tt class="py-line">                <tt class="py-name">add_piece</tt><tt class="py-op">(</tt><tt class="py-string">'    '</tt><tt class="py-op">*</tt><tt class="py-name">indent</tt><tt class="py-op">)</tt> </tt>
+<a name="L2040"></a><tt class="py-lineno">2040</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L2041"></a><tt class="py-lineno">2041</tt>  <tt class="py-line">                <tt class="py-name">add_piece</tt><tt class="py-op">(</tt><tt class="py-name">spacing</tt><tt class="py-op">,</tt> <tt class="py-name">pieces</tt><tt class="py-op">,</tt> <tt class="py-name">elt</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L2042"></a><tt class="py-lineno">2042</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L2043"></a><tt class="py-lineno">2043</tt>  <tt class="py-line">            <tt id="link-856" class="py-name"><a title="epydoc.docparser._pp_toktree" class="py-name" href="#" onclick="return doclink('link-856', '_pp_toktree', 'link-854');">_pp_toktree</a></tt><tt class="py-op">(</tt><tt class="py-name">elt</tt><tt class="py-op">,</tt> <tt class="py-name">spacing</tt><tt class="py-op">,</tt> <tt class="py-name">indent</tt><tt class="py-op">,</tt> <tt class="py-name">pieces</tt><t [...]
+</div><a name="L2044"></a><tt class="py-lineno">2044</tt>  <tt class="py-line">         </tt>
+<a name="L2045"></a><tt class="py-lineno">2045</tt>  <tt class="py-line"><tt class="py-comment">#/////////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L2046"></a><tt class="py-lineno">2046</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#{ Helper Functions</tt> </tt>
+<a name="L2047"></a><tt class="py-lineno">2047</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#/////////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L2048"></a><tt class="py-lineno">2048</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="get_module_encoding"></a><div id="get_module_encoding-def"><a name="L2049"></a><tt class="py-lineno">2049</tt> <a class="py-toggle" href="#" id="get_module_encoding-toggle" onclick="return toggle('get_module_encoding');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docparser-module.html#get_module_encoding">get_module_encoding</a><tt class="py-op">(</tt><tt class="py-param">filename</tt><tt class="py-op">)</tt><tt class="py-op">:</ [...]
+</div><div id="get_module_encoding-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="get_module_encoding-expanded"><a name="L2050"></a><tt class="py-lineno">2050</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L2051"></a><tt class="py-lineno">2051</tt>  <tt class="py-line"><tt class="py-docstring">    @see: U{PEP 263<http://www.python.org/peps/pep-0263.html>}</tt> </tt>
+<a name="L2052"></a><tt class="py-lineno">2052</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L2053"></a><tt class="py-lineno">2053</tt>  <tt class="py-line">    <tt class="py-name">module_file</tt> <tt class="py-op">=</tt> <tt id="link-857" class="py-name"><a title="epydoc.gui.EpydocGUI.open" class="py-name" href="#" onclick="return doclink('link-857', 'open', 'link-211');">open</a></tt><tt class="py-op">(</tt><tt id="link-858" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-858', 'filename', 'link-30'); [...]
+<a name="L2054"></a><tt class="py-lineno">2054</tt>  <tt class="py-line">    <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L2055"></a><tt class="py-lineno">2055</tt>  <tt class="py-line">        <tt class="py-name">lines</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">module_file</tt><tt class="py-op">.</tt><tt id="link-859" class="py-name"><a title="epydoc.docintrospecter._DevNull.readline" class="py-name" href="#" onclick="return doclink('link-859', 'readline', 'link-218');">readline</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt>  [...]
+<a name="L2056"></a><tt class="py-lineno">2056</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">lines</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">startswith</tt><tt class="py-op">(</tt><tt class="py-string">'\xef\xbb\xbf'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L2057"></a><tt class="py-lineno">2057</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">'utf-8'</tt> </tt>
+<a name="L2058"></a><tt class="py-lineno">2058</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L2059"></a><tt class="py-lineno">2059</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">line</tt> <tt class="py-keyword">in</tt> <tt class="py-name">lines</tt><tt class="py-op">:</tt> </tt>
+<a name="L2060"></a><tt class="py-lineno">2060</tt>  <tt class="py-line">                <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">search</tt><tt class="py-op">(</tt><tt class="py-string">"coding[:=]\s*([-\w.]+)"</tt><tt class="py-op">,</tt> <tt class="py-name">line</tt><tt class="py-op">)</tt> </tt>
+<a name="L2061"></a><tt class="py-lineno">2061</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">m</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt class="py-name">group</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L2062"></a><tt class="py-lineno">2062</tt>  <tt class="py-line">                 </tt>
+<a name="L2063"></a><tt class="py-lineno">2063</tt>  <tt class="py-line">        <tt class="py-comment"># Fall back on Python's default encoding.</tt> </tt>
+<a name="L2064"></a><tt class="py-lineno">2064</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">return</tt> <tt class="py-string">'iso-8859-1'</tt> <tt class="py-comment"># aka 'latin-1'</tt> </tt>
+<a name="L2065"></a><tt class="py-lineno">2065</tt>  <tt class="py-line">    <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt>
+<a name="L2066"></a><tt class="py-lineno">2066</tt>  <tt class="py-line">        <tt class="py-name">module_file</tt><tt class="py-op">.</tt><tt id="link-860" class="py-name"><a title="epydoc.cli.HTMLLogger.close
+epydoc.docintrospecter._DevNull.close
+epydoc.log.Logger.close
+epydoc.log.close" class="py-name" href="#" onclick="return doclink('link-860', 'close', 'link-189');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2067"></a><tt class="py-lineno">2067</tt>  <tt class="py-line">         </tt>
+<a name="_get_module_name"></a><div id="_get_module_name-def"><a name="L2068"></a><tt class="py-lineno">2068</tt> <a class="py-toggle" href="#" id="_get_module_name-toggle" onclick="return toggle('_get_module_name');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docparser-module.html#_get_module_name">_get_module_name</a><tt class="py-op">(</tt><tt class="py-param">filename</tt><tt class="py-op">,</tt> <tt class="py-param">package_doc</tt>< [...]
+</div><div id="_get_module_name-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_get_module_name-expanded"><a name="L2069"></a><tt class="py-lineno">2069</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L2070"></a><tt class="py-lineno">2070</tt>  <tt class="py-line"><tt class="py-docstring">    Return (dotted_name, is_package)</tt> </tt>
+<a name="L2071"></a><tt class="py-lineno">2071</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L2072"></a><tt class="py-lineno">2072</tt>  <tt class="py-line">    <tt id="link-861" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-861', 'name', 'link-31');">name</a></tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt class="py-string">r'.py\w?$'</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">,</tt> [...]
+<a name="L2073"></a><tt class="py-lineno">2073</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-864" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-864', 'name', 'link-31');">name</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'__init__'</tt><tt class="py-op">:</tt> </tt>
+<a name="L2074"></a><tt class="py-lineno">2074</tt>  <tt class="py-line">        <tt id="link-865" class="py-name"><a title="epydoc.apidoc.ModuleDoc.is_package" class="py-name" href="#" onclick="return doclink('link-865', 'is_package', 'link-76');">is_package</a></tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L2075"></a><tt class="py-lineno">2075</tt>  <tt class="py-line">        <tt id="link-866" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-866', 'name', 'link-31');">name</a></tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-867" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-867', 'path', 'link-0');">path</a> [...]
+<a name="L2076"></a><tt class="py-lineno">2076</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L2077"></a><tt class="py-lineno">2077</tt>  <tt class="py-line">        <tt id="link-870" class="py-name"><a title="epydoc.apidoc.ModuleDoc.is_package" class="py-name" href="#" onclick="return doclink('link-870', 'is_package', 'link-76');">is_package</a></tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L2078"></a><tt class="py-lineno">2078</tt>  <tt class="py-line"> </tt>
+<a name="L2079"></a><tt class="py-lineno">2079</tt>  <tt class="py-line">    <tt class="py-comment"># [XX] if the module contains a script, then `name` may not</tt> </tt>
+<a name="L2080"></a><tt class="py-lineno">2080</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># necessarily be a valid identifier -- which will cause</tt> </tt>
+<a name="L2081"></a><tt class="py-lineno">2081</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># DottedName to raise an exception.  Is that what I want?</tt> </tt>
+<a name="L2082"></a><tt class="py-lineno">2082</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">package_doc</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L2083"></a><tt class="py-lineno">2083</tt>  <tt class="py-line">        <tt class="py-name">dotted_name</tt> <tt class="py-op">=</tt> <tt id="link-871" class="py-name"><a title="epydoc.apidoc.DottedName" class="py-name" href="#" onclick="return doclink('link-871', 'DottedName', 'link-33');">DottedName</a></tt><tt class="py-op">(</tt><tt id="link-872" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-872', 'name', 'li [...]
+<a name="L2084"></a><tt class="py-lineno">2084</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L2085"></a><tt class="py-lineno">2085</tt>  <tt class="py-line">        <tt class="py-name">dotted_name</tt> <tt class="py-op">=</tt> <tt id="link-873" class="py-name"><a title="epydoc.apidoc.DottedName" class="py-name" href="#" onclick="return doclink('link-873', 'DottedName', 'link-33');">DottedName</a></tt><tt class="py-op">(</tt><tt class="py-name">package_doc</tt><tt class="py-op">.</tt><tt id="link-874" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-874', 'canonical_name', 'link-37');">canonical_name</a></tt><tt class="py-op">,</tt> <tt id="link-875" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-875', 'name', 'link-31');">name</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2086"></a><tt class="py-lineno">2086</tt>  <tt class="py-line"> </tt>
+<a name="L2087"></a><tt class="py-lineno">2087</tt>  <tt class="py-line">    <tt class="py-comment"># Check if the module looks like it's shadowed by a variable.</tt> </tt>
+<a name="L2088"></a><tt class="py-lineno">2088</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># If so, then add a "'" to the end of its canonical name, to</tt> </tt>
+<a name="L2089"></a><tt class="py-lineno">2089</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># distinguish it from the variable.</tt> </tt>
+<a name="L2090"></a><tt class="py-lineno">2090</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">package_doc</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt id="link-876" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-876', 'name', 'link-31');">name</a></tt> <tt class="py-keyword" [...]
+<a name="L2091"></a><tt class="py-lineno">2091</tt>  <tt class="py-line">        <tt class="py-name">vardoc</tt> <tt class="py-op">=</tt> <tt class="py-name">package_doc</tt><tt class="py-op">.</tt><tt id="link-878" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-878', 'variables', 'link-70');">variables</a></tt><tt class="py-op">[</tt><tt id="link-879" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class=" [...]
+<a name="L2092"></a><tt class="py-lineno">2092</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">vardoc</tt><tt class="py-op">.</tt><tt id="link-880" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-880', 'value', 'link-135');">value</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class [...]
+<a name="L2093"></a><tt class="py-lineno">2093</tt>  <tt class="py-line">            <tt class="py-name">vardoc</tt><tt class="py-op">.</tt><tt id="link-882" class="py-name"><a title="epydoc.apidoc.VariableDoc.imported_from" class="py-name" href="#" onclick="return doclink('link-882', 'imported_from', 'link-167');">imported_from</a></tt> <tt class="py-op">!=</tt> <tt class="py-name">dotted_name</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L2094"></a><tt class="py-lineno">2094</tt>  <tt class="py-line">            <tt id="link-883" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-883', 'log', 'link-50');">log</a></tt><tt class="py-op">.</tt><tt id="link-884" class="py-name"><a title="epydoc.checker.DocChecker.warning
+epydoc.log.warning" class="py-name" href="#" onclick="return doclink('link-884', 'warning', 'link-214');">warning</a></tt><tt class="py-op">(</tt><tt class="py-string">"Module %s might be shadowed by a variable with "</tt> </tt>
+<a name="L2095"></a><tt class="py-lineno">2095</tt>  <tt class="py-line">                        <tt class="py-string">"the same name."</tt> <tt class="py-op">%</tt> <tt class="py-name">dotted_name</tt><tt class="py-op">)</tt> </tt>
+<a name="L2096"></a><tt class="py-lineno">2096</tt>  <tt class="py-line">            <tt class="py-name">dotted_name</tt> <tt class="py-op">=</tt> <tt id="link-885" class="py-name"><a title="epydoc.apidoc.DottedName" class="py-name" href="#" onclick="return doclink('link-885', 'DottedName', 'link-33');">DottedName</a></tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">dotted_name</tt><tt class="py-op">)</tt><tt class="py-op">+</tt><tt clas [...]
+<a name="L2097"></a><tt class="py-lineno">2097</tt>  <tt class="py-line"> </tt>
+<a name="L2098"></a><tt class="py-lineno">2098</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">dotted_name</tt><tt class="py-op">,</tt> <tt id="link-886" class="py-name"><a title="epydoc.apidoc.ModuleDoc.is_package" class="py-name" href="#" onclick="return doclink('link-886', 'is_package', 'link-76');">is_package</a></tt> </tt>
+</div><a name="L2099"></a><tt class="py-lineno">2099</tt>  <tt class="py-line"> </tt>
+<a name="flatten"></a><div id="flatten-def"><a name="L2100"></a><tt class="py-lineno">2100</tt> <a class="py-toggle" href="#" id="flatten-toggle" onclick="return toggle('flatten');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docparser-module.html#flatten">flatten</a><tt class="py-op">(</tt><tt class="py-param">lst</tt><tt class="py-op">,</tt> <tt class="py-param">out</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-o [...]
+</div><div id="flatten-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="flatten-expanded"><a name="L2101"></a><tt class="py-lineno">2101</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L2102"></a><tt class="py-lineno">2102</tt>  <tt class="py-line"><tt class="py-docstring">    @return: a flat list containing the leaves of the given nested</tt> </tt>
+<a name="L2103"></a><tt class="py-lineno">2103</tt>  <tt class="py-line"><tt class="py-docstring">        list.</tt> </tt>
+<a name="L2104"></a><tt class="py-lineno">2104</tt>  <tt class="py-line"><tt class="py-docstring">    @param lst: The nested list that should be flattened.</tt> </tt>
+<a name="L2105"></a><tt class="py-lineno">2105</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L2106"></a><tt class="py-lineno">2106</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">out</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> <tt class="py-name">out</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L2107"></a><tt class="py-lineno">2107</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">elt</tt> <tt class="py-keyword">in</tt> <tt class="py-name">lst</tt><tt class="py-op">:</tt> </tt>
+<a name="L2108"></a><tt class="py-lineno">2108</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">elt</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">list</tt><tt class="py-op">,</tt> <tt class="py-name">tuple</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L2109"></a><tt class="py-lineno">2109</tt>  <tt class="py-line">            <tt id="link-887" class="py-name" targets="Function epydoc.docparser.flatten()=epydoc.docparser-module.html#flatten"><a title="epydoc.docparser.flatten" class="py-name" href="#" onclick="return doclink('link-887', 'flatten', 'link-887');">flatten</a></tt><tt class="py-op">(</tt><tt class="py-name">elt</tt><tt class="py-op">,</tt> <tt class="py-name">out</tt><tt class="py-op">)</tt> </tt>
+<a name="L2110"></a><tt class="py-lineno">2110</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L2111"></a><tt class="py-lineno">2111</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">elt</tt><tt class="py-op">)</tt> </tt>
+<a name="L2112"></a><tt class="py-lineno">2112</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">out</tt> </tt>
+</div><a name="L2113"></a><tt class="py-lineno">2113</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:09:39 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.docparser.ParseError-class.html b/doc/api/epydoc.docparser.ParseError-class.html
new file mode 100644
index 0000000..e80a939
--- /dev/null
+++ b/doc/api/epydoc.docparser.ParseError-class.html
@@ -0,0 +1,159 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.docparser.ParseError</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.docparser-module.html">Module docparser</a> ::
+        Class ParseError
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.docparser.ParseError-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class ParseError</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.docparser-pysrc.html#ParseError">source code</a></span></p>
+<center>
+<center>  <map id="uml_class_diagram_for_epydoc_d" name="uml_class_diagram_for_epydoc_d">
+<area shape="rect" href="javascript:void(0);" title="exceptions.Exception.__getitem__" alt="" coords="18,36,146,55" />
+<area shape="rect" href="javascript:void(0);" title="exceptions.Exception.__init__" alt="" coords="18,55,146,73" />
+<area shape="rect" href="javascript:void(0);" title="exceptions.Exception.__str__" alt="" coords="18,73,146,92" />
+<area shape="rect" href="javascript:void(0);" title="Common base class for all exceptions." alt="" coords="6,5,158,99" />
+<area shape="rect" href="epydoc.docparser.ParseError-class.html" title="An exception that is used to signify that docparser encountered syntactically invalid Python code while processing a Python source file." alt="" coords="36,117,127,160" />
+</map>
+  <img src="uml_class_diagram_for_epydoc_d.gif" alt='' usemap="#uml_class_diagram_for_epydoc_d" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<p>An exception that is used to signify that <code>docparser</code> 
+  encountered syntactically invalid Python code while processing a Python 
+  source file.</p>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.Exception</code></b>:
+      <code>__getitem__</code>,
+      <code>__init__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:07:38 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.docstringparser-module.html b/doc/api/epydoc.docstringparser-module.html
new file mode 100644
index 0000000..12387c5
--- /dev/null
+++ b/doc/api/epydoc.docstringparser-module.html
@@ -0,0 +1,1908 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.docstringparser</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        Module docstringparser
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.docstringparser-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module docstringparser</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.docstringparser-pysrc.html">source code</a></span></p>
+<p>Parse docstrings and handle any fields it defines, such as 
+  <code>@type</code> and <code>@author</code>.  Fields are used to describe
+  specific information about an object.  There are two classes of fields: 
+  <a name="index-simple_fields"></a><i class="indexterm">simple fields</i> 
+  and <a name="index-special_fields"></a><i class="indexterm">special 
+  fields</i>.</p>
+  <p>Simple fields are fields that get stored directly in an 
+  <code>APIDoc</code>'s metadata dictionary, without any special 
+  processing.  The set of simple fields is defined by the list <a 
+  href="epydoc.docstringparser-module.html#STANDARD_FIELDS" 
+  class="link">STANDARD_FIELDS</a>, whose elements are <a 
+  href="epydoc.docstringparser.DocstringField-class.html" 
+  class="link">DocstringField</a>s.</p>
+  <p>Special fields are fields that perform some sort of processing on the 
+  <code>APIDoc</code>, or add information to attributes other than the 
+  metadata dictionary.  Special fields are are handled by field handler 
+  functions, which are registered using <a 
+  href="epydoc.docstringparser-module.html#register_field_handler" 
+  class="link">register_field_handler</a>.</p>
+
+<!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Classes</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Classes"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docstringparser.DocstringField-class.html" class="summary-name">DocstringField</a><br />
+      A simple docstring field, which can be used to describe specific 
+        information about an object, such as its author or its version.
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTIONS ==================== -->
+<a name="section-Functions"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Functions</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Functions"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Docstring Parsing</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docstringparser-module.html#parse_docstring" class="summary-sig-name">parse_docstring</a>(<span class="summary-sig-arg">api_doc</span>,
+        <span class="summary-sig-arg">docindex</span>,
+        <span class="summary-sig-arg">suppress_warnings</span>=<span class="summary-sig-default"><code class="variable-group">[</code><code class="variable-group">]</code></span>)</span><br />
+      Process the given <code>APIDoc</code>'s docstring.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docstringparser-pysrc.html#parse_docstring">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_parse_docstring-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_parse_docstring-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_parse_docstring" name="call_graph_for_parse_docstring">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__hash__" title="apidoc.APIDoc.__hash__()" alt="" coords="613,6,837,38" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__getitem__" title="apidoc.DottedName.__getitem__()" alt="" coords="585,62,865,94" />
+<area shape="rect" href="epydoc.docbuilder-module.html#build_doc_index" title="docbuilder.build_doc_index()" alt="" coords="5,622,248,654" />
+<area shape="rect" href="epydoc.docstringparser-module.html#parse_docstring" title="parse_docstring()" alt="" coords="297,622,449,654" />
+<area shape="rect" href="epydoc.docstringparser-module.html#add_metadata_from_var" title="add_metadata_from_var()" alt="" coords="617,118,833,150" />
+<area shape="rect" href="epydoc.docstringparser-module.html#check_type_fields" title="check_type_fields()" alt="" coords="641,174,809,206" />
+<area shape="rect" href="epydoc.docstringparser-module.html#get_docformat" title="get_docformat()" alt="" coords="655,230,796,262" />
+<area shape="rect" href="epydoc.docstringparser-module.html#initialize_api_doc" title="initialize_api_doc()" alt="" coords="641,286,809,318" />
+<area shape="rect" href="epydoc.docstringparser-module.html#parse_function_signature" title="parse_function_signature()" alt="" coords="613,342,837,374" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_field" title="process_field()" alt="" coords="659,398,792,430" />
+<area shape="rect" href="epydoc.docstringparser-module.html#report_errors" title="report_errors()" alt="" coords="660,454,791,486" />
+<area shape="rect" href="epydoc.docstringparser-module.html#split_init_fields" title="split_init_fields()" alt="" coords="651,510,800,542" />
+<area shape="rect" href="epydoc.docstringparser-module.html#unindent_docstring" title="unindent_docstring()" alt="" coords="636,566,815,598" />
+<area shape="rect" href="epydoc.docstringparser-module.html#user_docfields" title="user_docfields()" alt="" coords="653,622,797,654" />
+<area shape="rect" href="epydoc.markup.Field-class.html#arg" title="markup.Field.arg()" alt="" coords="644,678,807,710" />
+<area shape="rect" href="epydoc.markup.Field-class.html#body" title="markup.Field.body()" alt="" coords="637,734,813,766" />
+<area shape="rect" href="epydoc.markup.Field-class.html#tag" title="markup.Field.tag()" alt="" coords="645,790,805,822" />
+<area shape="rect" href="epydoc.markup.ParsedDocstring-class.html#__add__" title="markup.ParsedDocstring.__add__()" alt="" coords="581,846,869,878" />
+<area shape="rect" href="epydoc.markup.ParsedDocstring-class.html#split_fields" title="markup.ParsedDocstring.split_fields()" alt="" coords="572,902,879,934" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#split_fields" title="markup.epytext.ParsedEpytextDocstring.split_fields()" alt="" coords="513,958,937,990" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#summary" title="markup.epytext.ParsedEpytextDocstring.summary()" alt="" coords="520,1014,931,1046" />
+<area shape="rect" href="epydoc.markup-module.html#parse" title="markup.parse()" alt="" coords="659,1070,792,1102" />
+<area shape="rect" href="epydoc.markup.plaintext.ParsedPlaintextDocstring-class.html#summary" title="markup.plaintext.ParsedPlaintextDocstring.summary()" alt="" coords="512,1126,939,1158" />
+<area shape="rect" href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html#split_fields" title="markup.restructuredtext.ParsedRstDocstring.split_fields()" alt="" coords="500,1182,951,1214" />
+<area shape="rect" href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html#summary" title="markup.restructuredtext.ParsedRstDocstring.summary()" alt="" coords="507,1238,944,1270" />
+</map>
+  <img src="call_graph_for_parse_docstring.gif" alt='' usemap="#call_graph_for_parse_docstring" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="add_metadata_from_var"></a><span class="summary-sig-name">add_metadata_from_var</span>(<span class="summary-sig-arg">api_doc</span>,
+        <span class="summary-sig-arg">field</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docstringparser-pysrc.html#add_metadata_from_var">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_add_metadata_fr-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_add_metadata_fr-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_add_metadata_fr" name="call_graph_for_add_metadata_fr">
+<area shape="rect" href="epydoc.docstringparser.DocstringField-class.html#__cmp__" title="DocstringField.__cmp__()" alt="" coords="563,6,784,38" />
+<area shape="rect" href="epydoc.docstringparser-module.html#add_metadata_from_var" title="add_metadata_from_var()" alt="" coords="208,90,424,122" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#__init__" title="markup.epytext.ParsedEpytextDocstring.__init__()" alt="" coords="472,62,875,94" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#parse_as_para" title="markup.epytext.parse_as_para()" alt="" coords="543,118,804,150" />
+<area shape="rect" href="epydoc.util-module.html#decode_with_backslashreplace" title="util.decode_with_backslashreplace()" alt="" coords="525,174,821,206" />
+<area shape="rect" href="epydoc.docstringparser-module.html#parse_docstring" title="parse_docstring()" alt="" coords="7,90,159,122" />
+</map>
+  <img src="call_graph_for_add_metadata_fr.gif" alt='' usemap="#call_graph_for_add_metadata_fr" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="initialize_api_doc"></a><span class="summary-sig-name">initialize_api_doc</span>(<span class="summary-sig-arg">api_doc</span>)</span><br />
+      A helper function for <a 
+      href="epydoc.docstringparser-module.html#parse_docstring" 
+      class="link">parse_docstring()</a> that initializes the attributes 
+      that <code>parse_docstring()</code> will write to.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docstringparser-pysrc.html#initialize_api_doc">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_initialize_api_-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_initialize_api_-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_initialize_api_" name="call_graph_for_initialize_api_">
+<area shape="rect" href="epydoc.docstringparser-module.html#initialize_api_doc" title="initialize_api_doc()" alt="" coords="209,6,377,38" />
+<area shape="rect" href="epydoc.docstringparser-module.html#parse_docstring" title="parse_docstring()" alt="" coords="7,6,159,38" />
+</map>
+  <img src="call_graph_for_initialize_api_.gif" alt='' usemap="#call_graph_for_initialize_api_" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>list</code> of <a href="epydoc.markup.Field-class.html" 
+      class="link">markup.Field</a></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docstringparser-module.html#split_init_fields" class="summary-sig-name">split_init_fields</a>(<span class="summary-sig-arg">fields</span>,
+        <span class="summary-sig-arg">warnings</span>)</span><br />
+      Remove the fields related to the constructor from a class docstring 
+      fields list.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docstringparser-pysrc.html#split_init_fields">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_split_init_fiel-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_split_init_fiel-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_split_init_fiel" name="call_graph_for_split_init_fiel">
+<area shape="rect" href="epydoc.docstringparser-module.html#parse_docstring" title="parse_docstring()" alt="" coords="7,34,159,66" />
+<area shape="rect" href="epydoc.docstringparser-module.html#split_init_fields" title="split_init_fields()" alt="" coords="209,34,359,66" />
+<area shape="rect" href="epydoc.markup.Field-class.html#arg" title="markup.Field.arg()" alt="" coords="408,6,571,38" />
+<area shape="rect" href="epydoc.markup.Field-class.html#tag" title="markup.Field.tag()" alt="" coords="409,62,569,94" />
+</map>
+  <img src="call_graph_for_split_init_fiel.gif" alt='' usemap="#call_graph_for_split_init_fiel" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="report_errors"></a><span class="summary-sig-name">report_errors</span>(<span class="summary-sig-arg">api_doc</span>,
+        <span class="summary-sig-arg">docindex</span>,
+        <span class="summary-sig-arg">parse_errors</span>,
+        <span class="summary-sig-arg">field_warnings</span>)</span><br />
+      A helper function for <a 
+      href="epydoc.docstringparser-module.html#parse_docstring" 
+      class="link">parse_docstring()</a> that reports any markup warnings 
+      and field warnings that we encountered while processing 
+      <code>api_doc</code>'s docstring.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docstringparser-pysrc.html#report_errors">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_report_errors-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_report_errors-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_report_errors" name="call_graph_for_report_errors">
+<area shape="rect" href="epydoc.docstringparser-module.html#parse_docstring" title="parse_docstring()" alt="" coords="7,6,159,38" />
+<area shape="rect" href="epydoc.docstringparser-module.html#report_errors" title="report_errors()" alt="" coords="210,6,340,38" />
+</map>
+  <img src="call_graph_for_report_errors.gif" alt='' usemap="#call_graph_for_report_errors" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Field Processing</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docstringparser-module.html#process_field" class="summary-sig-name">process_field</a>(<span class="summary-sig-arg">api_doc</span>,
+        <span class="summary-sig-arg">docindex</span>,
+        <span class="summary-sig-arg">tag</span>,
+        <span class="summary-sig-arg">arg</span>,
+        <span class="summary-sig-arg">descr</span>)</span><br />
+      Process a single field, and use it to update <code>api_doc</code>.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docstringparser-pysrc.html#process_field">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_process_field-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_process_field-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_process_field" name="call_graph_for_process_field">
+<area shape="rect" href="epydoc.docstringparser-module.html#_check" title="_check()" alt="" coords="449,6,537,38" />
+<area shape="rect" href="epydoc.docstringparser-module.html#parse_docstring" title="parse_docstring()" alt="" coords="7,370,159,402" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_field" title="process_field()" alt="" coords="209,370,343,402" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_arg_field" title="process_arg_field()" alt="" coords="409,62,577,94" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_cvar_field" title="process_cvar_field()" alt="" coords="405,118,581,150" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_deffield_field" title="process_deffield_field()" alt="" coords="393,174,593,206" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_group_field" title="process_group_field()" alt="" coords="400,230,587,262" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_ivar_field" title="process_ivar_field()" alt="" coords="407,286,580,318" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_kwarg_field" title="process_kwarg_field()" alt="" coords="399,342,588,374" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_raise_field" title="process_raise_field()" alt="" coords="404,398,583,430" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_return_field" title="process_return_field()" alt="" coords="400,454,587,486" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_rtype_field" title="process_rtype_field()" alt="" coords="403,510,584,542" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_sort_field" title="process_sort_field()" alt="" coords="408,566,579,598" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_type_field" title="process_type_field()" alt="" coords="405,622,581,654" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_var_field" title="process_var_field()" alt="" coords="409,678,577,710" />
+<area shape="rect" href="epydoc.docstringparser-module.html#user_docfields" title="user_docfields()" alt="" coords="421,734,565,766" />
+</map>
+  <img src="call_graph_for_process_field.gif" alt='' usemap="#call_graph_for_process_field" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docstringparser-module.html#user_docfields" class="summary-sig-name">user_docfields</a>(<span class="summary-sig-arg">api_doc</span>,
+        <span class="summary-sig-arg">docindex</span>)</span><br />
+      Return a list of user defined fields that can be used for the given 
+      object.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docstringparser-pysrc.html#user_docfields">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_user_docfields-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_user_docfields-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_user_docfields" name="call_graph_for_user_docfields">
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#get_valdoc" title="apidoc.DocIndex.get_valdoc()" alt="" coords="417,6,665,38" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__getitem__" title="apidoc.DottedName.__getitem__()" alt="" coords="401,62,681,94" />
+<area shape="rect" href="epydoc.docstringparser-module.html#parse_docstring" title="parse_docstring()" alt="" coords="7,6,159,38" />
+<area shape="rect" href="epydoc.docstringparser-module.html#user_docfields" title="user_docfields()" alt="" coords="208,34,352,66" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_field" title="process_field()" alt="" coords="16,62,149,94" />
+</map>
+  <img src="call_graph_for_user_docfields.gif" alt='' usemap="#call_graph_for_user_docfields" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docstringparser-module.html#register_field_handler" class="summary-sig-name">register_field_handler</a>(<span class="summary-sig-arg">handler</span>,
+        <span class="summary-sig-arg">*field_tags</span>)</span><br />
+      Register the given field handler function for processing any of the 
+      given field tags.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docstringparser-pysrc.html#register_field_handler">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Field Handler Functions</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="process_summary_field"></a><span class="summary-sig-name">process_summary_field</span>(<span class="summary-sig-arg">api_doc</span>,
+        <span class="summary-sig-arg">docindex</span>,
+        <span class="summary-sig-arg">tag</span>,
+        <span class="summary-sig-arg">arg</span>,
+        <span class="summary-sig-arg">descr</span>)</span><br />
+      Store <code>descr</code> in <code>api_doc.summary</code></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docstringparser-pysrc.html#process_summary_field">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="process_include_field"></a><span class="summary-sig-name">process_include_field</span>(<span class="summary-sig-arg">api_doc</span>,
+        <span class="summary-sig-arg">docindex</span>,
+        <span class="summary-sig-arg">tag</span>,
+        <span class="summary-sig-arg">arg</span>,
+        <span class="summary-sig-arg">descr</span>)</span><br />
+      Copy the docstring contents from the object named in 
+      <code>descr</code></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docstringparser-pysrc.html#process_include_field">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="process_undocumented_field"></a><span class="summary-sig-name">process_undocumented_field</span>(<span class="summary-sig-arg">api_doc</span>,
+        <span class="summary-sig-arg">docindex</span>,
+        <span class="summary-sig-arg">tag</span>,
+        <span class="summary-sig-arg">arg</span>,
+        <span class="summary-sig-arg">descr</span>)</span><br />
+      Remove any documentation for the variables named in 
+      <code>descr</code></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docstringparser-pysrc.html#process_undocumented_field">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="process_group_field"></a><span class="summary-sig-name">process_group_field</span>(<span class="summary-sig-arg">api_doc</span>,
+        <span class="summary-sig-arg">docindex</span>,
+        <span class="summary-sig-arg">tag</span>,
+        <span class="summary-sig-arg">arg</span>,
+        <span class="summary-sig-arg">descr</span>)</span><br />
+      Define a group named <code>arg</code> containing the variables whose 
+      names are listed in <code>descr</code>.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docstringparser-pysrc.html#process_group_field">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_process_group_f-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_process_group_f-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_process_group_f" name="call_graph_for_process_group_f">
+<area shape="rect" href="epydoc.docstringparser-module.html#_check" title="_check()" alt="" coords="479,6,567,38" />
+<area shape="rect" href="epydoc.docstringparser-module.html#_descr_to_identifiers" title="_descr_to_identifiers()" alt="" coords="427,62,619,94" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_field" title="process_field()" alt="" coords="7,34,140,66" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_group_field" title="process_group_field()" alt="" coords="191,34,377,66" />
+</map>
+  <img src="call_graph_for_process_group_f.gif" alt='' usemap="#call_graph_for_process_group_f" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="process_deffield_field"></a><span class="summary-sig-name">process_deffield_field</span>(<span class="summary-sig-arg">api_doc</span>,
+        <span class="summary-sig-arg">docindex</span>,
+        <span class="summary-sig-arg">tag</span>,
+        <span class="summary-sig-arg">arg</span>,
+        <span class="summary-sig-arg">descr</span>)</span><br />
+      Define a new custom field.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docstringparser-pysrc.html#process_deffield_field">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_process_deffiel-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_process_deffiel-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_process_deffiel" name="call_graph_for_process_deffiel">
+<area shape="rect" href="epydoc.docstringparser-module.html#_check" title="_check()" alt="" coords="511,6,599,38" />
+<area shape="rect" href="epydoc.docstringparser-module.html#_descr_to_docstring_field" title="_descr_to_docstring_field()" alt="" coords="440,62,670,94" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_deffield_field" title="process_deffield_field()" alt="" coords="191,34,391,66" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_field" title="process_field()" alt="" coords="7,34,140,66" />
+</map>
+  <img src="call_graph_for_process_deffiel.gif" alt='' usemap="#call_graph_for_process_deffiel" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="process_raise_field"></a><span class="summary-sig-name">process_raise_field</span>(<span class="summary-sig-arg">api_doc</span>,
+        <span class="summary-sig-arg">docindex</span>,
+        <span class="summary-sig-arg">tag</span>,
+        <span class="summary-sig-arg">arg</span>,
+        <span class="summary-sig-arg">descr</span>)</span><br />
+      Record the fact that <code>api_doc</code> can raise the exception 
+      named <code>tag</code> in <code>api_doc.exception_descrs</code>.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docstringparser-pysrc.html#process_raise_field">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_process_raise_f-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_process_raise_f-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_process_raise_f" name="call_graph_for_process_raise_f">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__init__" title="apidoc.DottedName.__init__()" alt="" coords="419,6,670,38" />
+<area shape="rect" href="epydoc.docstringparser-module.html#_check" title="_check()" alt="" coords="500,62,588,94" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_field" title="process_field()" alt="" coords="7,34,140,66" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_raise_field" title="process_raise_field()" alt="" coords="191,34,370,66" />
+</map>
+  <img src="call_graph_for_process_raise_f.gif" alt='' usemap="#call_graph_for_process_raise_f" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="process_sort_field"></a><span class="summary-sig-name">process_sort_field</span>(<span class="summary-sig-arg">api_doc</span>,
+        <span class="summary-sig-arg">docindex</span>,
+        <span class="summary-sig-arg">tag</span>,
+        <span class="summary-sig-arg">arg</span>,
+        <span class="summary-sig-arg">descr</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docstringparser-pysrc.html#process_sort_field">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_process_sort_fi-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_process_sort_fi-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_process_sort_fi" name="call_graph_for_process_sort_fi">
+<area shape="rect" href="epydoc.docstringparser-module.html#_check" title="_check()" alt="" coords="463,6,551,38" />
+<area shape="rect" href="epydoc.docstringparser-module.html#_descr_to_identifiers" title="_descr_to_identifiers()" alt="" coords="411,62,603,94" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_field" title="process_field()" alt="" coords="7,34,140,66" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_sort_field" title="process_sort_field()" alt="" coords="191,34,361,66" />
+</map>
+  <img src="call_graph_for_process_sort_fi.gif" alt='' usemap="#call_graph_for_process_sort_fi" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="process_type_field"></a><span class="summary-sig-name">process_type_field</span>(<span class="summary-sig-arg">api_doc</span>,
+        <span class="summary-sig-arg">docindex</span>,
+        <span class="summary-sig-arg">tag</span>,
+        <span class="summary-sig-arg">arg</span>,
+        <span class="summary-sig-arg">descr</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docstringparser-pysrc.html#process_type_field">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_process_type_fi-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_process_type_fi-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_process_type_fi" name="call_graph_for_process_type_fi">
+<area shape="rect" href="epydoc.docstringparser-module.html#_check" title="_check()" alt="" coords="435,6,523,38" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_field" title="process_field()" alt="" coords="7,34,140,66" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_type_field" title="process_type_field()" alt="" coords="189,34,365,66" />
+<area shape="rect" href="epydoc.docstringparser-module.html#set_var_type" title="set_var_type()" alt="" coords="415,62,543,94" />
+</map>
+  <img src="call_graph_for_process_type_fi.gif" alt='' usemap="#call_graph_for_process_type_fi" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="process_var_field"></a><span class="summary-sig-name">process_var_field</span>(<span class="summary-sig-arg">api_doc</span>,
+        <span class="summary-sig-arg">docindex</span>,
+        <span class="summary-sig-arg">tag</span>,
+        <span class="summary-sig-arg">arg</span>,
+        <span class="summary-sig-arg">descr</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docstringparser-pysrc.html#process_var_field">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_process_var_fie-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_process_var_fie-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_process_var_fie" name="call_graph_for_process_var_fie">
+<area shape="rect" href="epydoc.docstringparser-module.html#_check" title="_check()" alt="" coords="431,6,519,38" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_field" title="process_field()" alt="" coords="7,34,140,66" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_var_field" title="process_var_field()" alt="" coords="189,34,357,66" />
+<area shape="rect" href="epydoc.docstringparser-module.html#set_var_descr" title="set_var_descr()" alt="" coords="407,62,543,94" />
+</map>
+  <img src="call_graph_for_process_var_fie.gif" alt='' usemap="#call_graph_for_process_var_fie" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="process_cvar_field"></a><span class="summary-sig-name">process_cvar_field</span>(<span class="summary-sig-arg">api_doc</span>,
+        <span class="summary-sig-arg">docindex</span>,
+        <span class="summary-sig-arg">tag</span>,
+        <span class="summary-sig-arg">arg</span>,
+        <span class="summary-sig-arg">descr</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docstringparser-pysrc.html#process_cvar_field">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_process_cvar_fi-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_process_cvar_fi-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_process_cvar_fi" name="call_graph_for_process_cvar_fi">
+<area shape="rect" href="epydoc.docstringparser-module.html#_check" title="_check()" alt="" coords="575,6,663,38" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_cvar_field" title="process_cvar_field()" alt="" coords="189,90,365,122" />
+<area shape="rect" href="epydoc.docstringparser-module.html#set_var_descr" title="set_var_descr()" alt="" coords="551,62,687,94" />
+<area shape="rect" href="epydoc.markup.ConcatenatedDocstring-class.html#__init__" title="markup.ConcatenatedDocstring.__init__()" alt="" coords="451,118,787,150" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#summary" title="markup.epytext.ParsedEpytextDocstring.summary()" alt="" coords="413,174,824,206" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_field" title="process_field()" alt="" coords="7,90,140,122" />
+</map>
+  <img src="call_graph_for_process_cvar_fi.gif" alt='' usemap="#call_graph_for_process_cvar_fi" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="process_ivar_field"></a><span class="summary-sig-name">process_ivar_field</span>(<span class="summary-sig-arg">api_doc</span>,
+        <span class="summary-sig-arg">docindex</span>,
+        <span class="summary-sig-arg">tag</span>,
+        <span class="summary-sig-arg">arg</span>,
+        <span class="summary-sig-arg">descr</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docstringparser-pysrc.html#process_ivar_field">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_process_ivar_fi-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_process_ivar_fi-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_process_ivar_fi" name="call_graph_for_process_ivar_fi">
+<area shape="rect" href="epydoc.docstringparser-module.html#_check" title="_check()" alt="" coords="572,6,660,38" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_field" title="process_field()" alt="" coords="7,90,140,122" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_ivar_field" title="process_ivar_field()" alt="" coords="190,90,363,122" />
+<area shape="rect" href="epydoc.docstringparser-module.html#set_var_descr" title="set_var_descr()" alt="" coords="548,62,684,94" />
+<area shape="rect" href="epydoc.markup.ConcatenatedDocstring-class.html#__init__" title="markup.ConcatenatedDocstring.__init__()" alt="" coords="448,118,784,150" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#summary" title="markup.epytext.ParsedEpytextDocstring.summary()" alt="" coords="411,174,822,206" />
+</map>
+  <img src="call_graph_for_process_ivar_fi.gif" alt='' usemap="#call_graph_for_process_ivar_fi" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="process_return_field"></a><span class="summary-sig-name">process_return_field</span>(<span class="summary-sig-arg">api_doc</span>,
+        <span class="summary-sig-arg">docindex</span>,
+        <span class="summary-sig-arg">tag</span>,
+        <span class="summary-sig-arg">arg</span>,
+        <span class="summary-sig-arg">descr</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docstringparser-pysrc.html#process_return_field">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_process_return_-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_process_return_-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_process_return_" name="call_graph_for_process_return_">
+<area shape="rect" href="epydoc.docstringparser-module.html#_check" title="_check()" alt="" coords="427,6,515,38" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_field" title="process_field()" alt="" coords="7,6,140,38" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_return_field" title="process_return_field()" alt="" coords="191,6,377,38" />
+</map>
+  <img src="call_graph_for_process_return_.gif" alt='' usemap="#call_graph_for_process_return_" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="process_rtype_field"></a><span class="summary-sig-name">process_rtype_field</span>(<span class="summary-sig-arg">api_doc</span>,
+        <span class="summary-sig-arg">docindex</span>,
+        <span class="summary-sig-arg">tag</span>,
+        <span class="summary-sig-arg">arg</span>,
+        <span class="summary-sig-arg">descr</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docstringparser-pysrc.html#process_rtype_field">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_process_rtype_f-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_process_rtype_f-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_process_rtype_f" name="call_graph_for_process_rtype_f">
+<area shape="rect" href="epydoc.docstringparser-module.html#_check" title="_check()" alt="" coords="422,6,510,38" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_field" title="process_field()" alt="" coords="7,6,140,38" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_rtype_field" title="process_rtype_field()" alt="" coords="191,6,372,38" />
+</map>
+  <img src="call_graph_for_process_rtype_f.gif" alt='' usemap="#call_graph_for_process_rtype_f" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="process_arg_field"></a><span class="summary-sig-name">process_arg_field</span>(<span class="summary-sig-arg">api_doc</span>,
+        <span class="summary-sig-arg">docindex</span>,
+        <span class="summary-sig-arg">tag</span>,
+        <span class="summary-sig-arg">arg</span>,
+        <span class="summary-sig-arg">descr</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docstringparser-pysrc.html#process_arg_field">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_process_arg_fie-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_process_arg_fie-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_process_arg_fie" name="call_graph_for_process_arg_fie">
+<area shape="rect" href="epydoc.apidoc.RoutineDoc-class.html#all_args" title="apidoc.RoutineDoc.all_args()" alt="" coords="405,6,648,38" />
+<area shape="rect" href="epydoc.docstringparser-module.html#_check" title="_check()" alt="" coords="483,62,571,94" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_arg_field" title="process_arg_field()" alt="" coords="189,34,357,66" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_field" title="process_field()" alt="" coords="7,34,140,66" />
+</map>
+  <img src="call_graph_for_process_arg_fie.gif" alt='' usemap="#call_graph_for_process_arg_fie" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="process_kwarg_field"></a><span class="summary-sig-name">process_kwarg_field</span>(<span class="summary-sig-arg">api_doc</span>,
+        <span class="summary-sig-arg">docindex</span>,
+        <span class="summary-sig-arg">tag</span>,
+        <span class="summary-sig-arg">arg</span>,
+        <span class="summary-sig-arg">descr</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docstringparser-pysrc.html#process_kwarg_field">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_process_kwarg_f-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_process_kwarg_f-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_process_kwarg_f" name="call_graph_for_process_kwarg_f">
+<area shape="rect" href="epydoc.docstringparser-module.html#_check" title="_check()" alt="" coords="430,6,518,38" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_field" title="process_field()" alt="" coords="7,6,140,38" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_kwarg_field" title="process_kwarg_field()" alt="" coords="191,6,380,38" />
+</map>
+  <img src="call_graph_for_process_kwarg_f.gif" alt='' usemap="#call_graph_for_process_kwarg_f" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Helper Functions</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="check_type_fields"></a><span class="summary-sig-name">check_type_fields</span>(<span class="summary-sig-arg">api_doc</span>,
+        <span class="summary-sig-arg">field_warnings</span>)</span><br />
+      Check to make sure that all type fields correspond to some documented
+      parameter; if not, append a warning to field_warnings.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docstringparser-pysrc.html#check_type_fields">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_check_type_fiel-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_check_type_fiel-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_check_type_fiel" name="call_graph_for_check_type_fiel">
+<area shape="rect" href="epydoc.apidoc.RoutineDoc-class.html#all_args" title="apidoc.RoutineDoc.all_args()" alt="" coords="427,6,670,38" />
+<area shape="rect" href="epydoc.docstringparser-module.html#check_type_fields" title="check_type_fields()" alt="" coords="210,6,378,38" />
+<area shape="rect" href="epydoc.docstringparser-module.html#parse_docstring" title="parse_docstring()" alt="" coords="7,6,159,38" />
+</map>
+  <img src="call_graph_for_check_type_fiel.gif" alt='' usemap="#call_graph_for_check_type_fiel" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="set_var_descr"></a><span class="summary-sig-name">set_var_descr</span>(<span class="summary-sig-arg">api_doc</span>,
+        <span class="summary-sig-arg">ident</span>,
+        <span class="summary-sig-arg">descr</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docstringparser-pysrc.html#set_var_descr">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_set_var_descr-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_set_var_descr-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_set_var_descr" name="call_graph_for_set_var_descr">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__add__" title="apidoc.DottedName.__add__()" alt="" coords="496,6,747,38" />
+<area shape="rect" href="epydoc.apidoc.VariableDoc-class.html#__init__" title="apidoc.VariableDoc.__init__()" alt="" coords="496,62,747,94" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_cvar_field" title="process_cvar_field()" alt="" coords="5,6,181,38" />
+<area shape="rect" href="epydoc.docstringparser-module.html#set_var_descr" title="set_var_descr()" alt="" coords="231,62,367,94" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_ivar_field" title="process_ivar_field()" alt="" coords="7,62,180,94" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_var_field" title="process_var_field()" alt="" coords="9,118,177,150" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#summary" title="markup.epytext.ParsedEpytextDocstring.summary()" alt="" coords="416,118,827,150" />
+</map>
+  <img src="call_graph_for_set_var_descr.gif" alt='' usemap="#call_graph_for_set_var_descr" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="set_var_type"></a><span class="summary-sig-name">set_var_type</span>(<span class="summary-sig-arg">api_doc</span>,
+        <span class="summary-sig-arg">ident</span>,
+        <span class="summary-sig-arg">descr</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docstringparser-pysrc.html#set_var_type">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_set_var_type-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_set_var_type-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_set_var_type" name="call_graph_for_set_var_type">
+<area shape="rect" href="epydoc.docstringparser-module.html#process_type_field" title="process_type_field()" alt="" coords="5,6,181,38" />
+<area shape="rect" href="epydoc.docstringparser-module.html#set_var_type" title="set_var_type()" alt="" coords="231,6,359,38" />
+</map>
+  <img src="call_graph_for_set_var_type.gif" alt='' usemap="#call_graph_for_set_var_type" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_check"></a><span class="summary-sig-name">_check</span>(<span class="summary-sig-arg">api_doc</span>,
+        <span class="summary-sig-arg">tag</span>,
+        <span class="summary-sig-arg">arg</span>,
+        <span class="summary-sig-arg">context</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">expect_arg</span>=<span class="summary-sig-default">None</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docstringparser-pysrc.html#_check">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__check-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__check-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__check" name="call_graph_for__check">
+<area shape="rect" href="epydoc.docstringparser-module.html#_check" title="_check()" alt="" coords="256,342,344,374" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_arg_field" title="process_arg_field()" alt="" coords="23,6,191,38" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_cvar_field" title="process_cvar_field()" alt="" coords="19,62,195,94" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_deffield_field" title="process_deffield_field()" alt="" coords="7,118,207,150" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_field" title="process_field()" alt="" coords="40,174,173,206" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_group_field" title="process_group_field()" alt="" coords="13,230,200,262" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_ivar_field" title="process_ivar_field()" alt="" coords="20,286,193,318" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_kwarg_field" title="process_kwarg_field()" alt="" coords="12,342,201,374" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_raise_field" title="process_raise_field()" alt="" coords="17,398,196,430" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_return_field" title="process_return_field()" alt="" coords="13,454,200,486" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_rtype_field" title="process_rtype_field()" alt="" coords="16,510,197,542" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_sort_field" title="process_sort_field()" alt="" coords="21,566,192,598" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_type_field" title="process_type_field()" alt="" coords="19,622,195,654" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_var_field" title="process_var_field()" alt="" coords="23,678,191,710" />
+</map>
+  <img src="call_graph_for__check.gif" alt='' usemap="#call_graph_for__check" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_docformat"></a><span class="summary-sig-name">get_docformat</span>(<span class="summary-sig-arg">api_doc</span>,
+        <span class="summary-sig-arg">docindex</span>)</span><br />
+      Return the name of the markup language that should be used to parse 
+      the API documentation for the given object.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docstringparser-pysrc.html#get_docformat">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_get_docformat-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_get_docformat-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_get_docformat" name="call_graph_for_get_docformat">
+<area shape="rect" href="epydoc.apidoc.VariableDoc-class.html#_get_defining_module" title="apidoc.VariableDoc._get_defining_module()" alt="" coords="402,6,756,38" />
+<area shape="rect" href="epydoc.docstringparser-module.html#get_docformat" title="get_docformat()" alt="" coords="210,6,351,38" />
+<area shape="rect" href="epydoc.docstringparser-module.html#parse_docstring" title="parse_docstring()" alt="" coords="7,6,159,38" />
+</map>
+  <img src="call_graph_for_get_docformat.gif" alt='' usemap="#call_graph_for_get_docformat" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="unindent_docstring"></a><span class="summary-sig-name">unindent_docstring</span>(<span class="summary-sig-arg">docstring</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docstringparser-pysrc.html#unindent_docstring">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_unindent_docstr-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_unindent_docstr-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_unindent_docstr" name="call_graph_for_unindent_docstr">
+<area shape="rect" href="epydoc.docstringparser-module.html#parse_docstring" title="parse_docstring()" alt="" coords="7,6,159,38" />
+<area shape="rect" href="epydoc.docstringparser-module.html#unindent_docstring" title="unindent_docstring()" alt="" coords="208,6,387,38" />
+</map>
+  <img src="call_graph_for_unindent_docstr.gif" alt='' usemap="#call_graph_for_unindent_docstr" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>list</code> of <code>string</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docstringparser-module.html#_descr_to_identifiers" class="summary-sig-name" onclick="show_private();">_descr_to_identifiers</a>(<span class="summary-sig-arg">descr</span>)</span><br />
+      Given a <code>ParsedDocstring</code> that contains a list of 
+      identifiers, return a list of those identifiers.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docstringparser-pysrc.html#_descr_to_identifiers">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__descr_to_ident-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__descr_to_ident-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__descr_to_ident" name="call_graph_for__descr_to_ident">
+<area shape="rect" href="epydoc.docstringparser-module.html#_descr_to_identifiers" title="_descr_to_identifiers()" alt="" coords="243,34,435,66" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#to_plaintext" title="markup.epytext.ParsedEpytextDocstring.to_plaintext()" alt="" coords="498,6,927,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html#to_plaintext" title="markup.restructuredtext.ParsedRstDocstring.to_plaintext()" alt="" coords="483,62,942,94" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_group_field" title="process_group_field()" alt="" coords="7,6,194,38" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_sort_field" title="process_sort_field()" alt="" coords="15,62,186,94" />
+</map>
+  <img src="call_graph_for__descr_to_ident.gif" alt='' usemap="#call_graph_for__descr_to_ident" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_descr_to_docstring_field"></a><span class="summary-sig-name">_descr_to_docstring_field</span>(<span class="summary-sig-arg">arg</span>,
+        <span class="summary-sig-arg">descr</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docstringparser-pysrc.html#_descr_to_docstring_field">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__descr_to_docst-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__descr_to_docst-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__descr_to_docst" name="call_graph_for__descr_to_docst">
+<area shape="rect" href="epydoc.docstringparser.DocstringField-class.html#__init__" title="DocstringField.__init__()" alt="" coords="656,6,869,38" />
+<area shape="rect" href="epydoc.docstringparser-module.html#_descr_to_docstring_field" title="_descr_to_docstring_field()" alt="" coords="256,62,485,94" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#to_plaintext" title="markup.epytext.ParsedEpytextDocstring.to_plaintext()" alt="" coords="548,62,977,94" />
+<area shape="rect" href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html#to_plaintext" title="markup.restructuredtext.ParsedRstDocstring.to_plaintext()" alt="" coords="533,118,992,150" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_deffield_field" title="process_deffield_field()" alt="" coords="7,62,207,94" />
+</map>
+  <img src="call_graph_for__descr_to_docst.gif" alt='' usemap="#call_graph_for__descr_to_docst" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Function Signature Extraction</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>None</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docstringparser-module.html#parse_function_signature" class="summary-sig-name">parse_function_signature</a>(<span class="summary-sig-arg">func_doc</span>,
+        <span class="summary-sig-arg">doc_source</span>,
+        <span class="summary-sig-arg">docformat</span>,
+        <span class="summary-sig-arg">parse_errors</span>)</span><br />
+      Construct the signature for a builtin function or method from its 
+      docstring.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docstringparser-pysrc.html#parse_function_signature">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_parse_function_-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_parse_function_-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_parse_function_" name="call_graph_for_parse_function_">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__init__" title="apidoc.APIDoc.__init__()" alt="" coords="480,6,696,38" />
+<area shape="rect" href="epydoc.docstringparser-module.html#parse_docstring" title="parse_docstring()" alt="" coords="7,34,159,66" />
+<area shape="rect" href="epydoc.docstringparser-module.html#parse_function_signature" title="parse_function_signature()" alt="" coords="208,34,432,66" />
+<area shape="rect" href="epydoc.markup-module.html#parse" title="markup.parse()" alt="" coords="521,62,655,94" />
+</map>
+  <img src="call_graph_for_parse_function_.gif" alt='' usemap="#call_graph_for_parse_function_" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+</table>
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Variables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docstringparser-module.html#STANDARD_FIELDS" class="summary-name">STANDARD_FIELDS</a> = <code title="[<Field: deprecated>,
+ <Field: version>,
+ <Field: date>,
+ <Field: status>,
+ <Field: author>,
+ <Field: contact>,
+ <Field: organization>,
+ <Field: copyright>,
+..."><code class="variable-group">[</code><Field: deprecated><code class="variable-op">, </code><Field: version><code class="variable-op">, </code><Fie<code class="variable-ellipsis">...</code></code><br />
+      A list of the standard simple fields accepted by epydoc.
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Docstring Parsing</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="DEFAULT_DOCFORMAT"></a><span class="summary-name">DEFAULT_DOCFORMAT</span> = <code title="'plaintext'"><code class="variable-quote">'</code><code class="variable-string">plaintext</code><code class="variable-quote">'</code></code><br />
+      The name of the default markup languge used to process docstrings.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docstringparser-module.html#RETURN_PDS" class="summary-name">RETURN_PDS</a> = <code title="markup.parse('Returns:', markup= 'epytext')">markup.parse('Returns:', markup= 'epytext')</code><br />
+      A ParsedDocstring containing the text 'Returns'.
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Field Processing Error Messages</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="UNEXPECTED_ARG"></a><span class="summary-name">UNEXPECTED_ARG</span> = <code title="'%r did not expect an argument'"><code class="variable-quote">'</code><code class="variable-string">%r did not expect an argument</code><code class="variable-quote">'</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="EXPECTED_ARG"></a><span class="summary-name">EXPECTED_ARG</span> = <code title="'%r expected an argument'"><code class="variable-quote">'</code><code class="variable-string">%r expected an argument</code><code class="variable-quote">'</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="EXPECTED_SINGLE_ARG"></a><span class="summary-name">EXPECTED_SINGLE_ARG</span> = <code title="'%r expected a single argument'"><code class="variable-quote">'</code><code class="variable-string">%r expected a single argument</code><code class="variable-quote">'</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="BAD_CONTEXT"></a><span class="summary-name">BAD_CONTEXT</span> = <code title="'Invalid context for %r'"><code class="variable-quote">'</code><code class="variable-string">Invalid context for %r</code><code class="variable-quote">'</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="REDEFINED"></a><span class="summary-name">REDEFINED</span> = <code title="'Redefinition of %s'"><code class="variable-quote">'</code><code class="variable-string">Redefinition of %s</code><code class="variable-quote">'</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="UNKNOWN_TAG"></a><span class="summary-name">UNKNOWN_TAG</span> = <code title="'Unknown field tag %r'"><code class="variable-quote">'</code><code class="variable-string">Unknown field tag %r</code><code class="variable-quote">'</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="BAD_PARAM"></a><span class="summary-name">BAD_PARAM</span> = <code title="'@%s for unknown parameter %s'"><code class="variable-quote">'</code><code class="variable-string">@%s for unknown parameter %s</code><code class="variable-quote">'</code></code>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8"  class="private">
+  <th colspan="2" class="group-header"
+    >    Field Processing</th></tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="_field_dispatch_table"></a><span class="summary-name">_field_dispatch_table</span> = <code title="{}">{}</code>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Field Handler Functions</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docstringparser-module.html#PARAMETER_TAGS" class="summary-name">PARAMETER_TAGS</a> = <code title="('arg',
+ 'argument',
+ 'parameter',
+ 'param',
+ 'kwarg',
+ 'keyword',
+ 'kwparam')"><code class="variable-group">(</code><code class="variable-quote">'</code><code class="variable-string">arg</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">argument</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">parameter</code><code class="variable-quote">'</code><code class="variab [...]
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="VARIABLE_TAGS"></a><span class="summary-name">VARIABLE_TAGS</span> = <code title="('cvar', 'cvariable', 'ivar', 'ivariable')"><code class="variable-group">(</code><code class="variable-quote">'</code><code class="variable-string">cvar</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">cvariable</code><code class="variable-quote">'</code><code class="variable-op">, </code><code c [...]
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="EXCEPTION_TAGS"></a><span class="summary-name">EXCEPTION_TAGS</span> = <code title="('raise', 'raises', 'except', 'exception')"><code class="variable-group">(</code><code class="variable-quote">'</code><code class="variable-string">raise</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">raises</code><code class="variable-quote">'</code><code class="variable-op">, </code><code c [...]
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8"  class="private">
+  <th colspan="2" class="group-header"
+    >    Helper Functions</th></tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docstringparser-module.html#_IDENTIFIER_LIST_REGEXP" class="summary-name" onclick="show_private();">_IDENTIFIER_LIST_REGEXP</a> = <code title="re.compile(r'^[\w\.\*]+([\s,:;]\s*[\w\.\*]+)*$')">re.compile(r'^<code class="re-group">[</code>\w\.\*<code class="re-group">]</code><code class="re-op">+</code><code class="re-group">(</code><code class="re-group">[</code>\s,:;<code class="re-group">]</code>\s<code class="re-op">*</code><code class="re-group">[</code>\<code [...]
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8"  class="private">
+  <th colspan="2" class="group-header"
+    >    Function Signature Extraction</th></tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docstringparser-module.html#_SIGNATURE_RE" class="summary-name" onclick="show_private();">_SIGNATURE_RE</a> = <code title="re.compile(r'^\s*((?P<self>\w+)\.)?(?P<func>\w+)\((?P<params>(\s*\[?\s\
+*\*{,2}[\w-\.]+(\s*=.+?)?(\s*\[?\s*,\s*\]?\s*\*{,2}[\w-\.]+(\s*=.+?)?)\
+*\]*)?)\s*\)(\s*(->)\s*(?P<return>\S.*?))?\s*(\n|\s+(--|<=+>)\s+|$|\.\\
+s+|\.\n)')">re.compile(r'^\s<code class="re-op">*</code><code class="re-group">(</code><code class="re-group">(?P<</code><code class="re-ref">self</code><code class="re-group">></code>\w<code class="re-op">+</code><code class="re-group">)</code>\.<code class="re-group">)</code><code class="re-op">?</code><code class="re-group">(?P<</code><code class="re-ref">func</code><code class="re-group">></code>\w<code class="variable-ellipsis">...</code></code><br />
+      A regular expression that is used to extract signatures from 
+      docstrings.
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTION DETAILS ==================== -->
+<a name="section-FunctionDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Function Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-FunctionDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="parse_docstring"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">parse_docstring</span>(<span class="sig-arg">api_doc</span>,
+        <span class="sig-arg">docindex</span>,
+        <span class="sig-arg">suppress_warnings</span>=<span class="sig-default"><code class="variable-group">[</code><code class="variable-group">]</code></span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docstringparser-pysrc.html#parse_docstring">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_parse_docstring-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_parse_docstring-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_parse_docstring" name="call_graph_for_parse_docstring">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__hash__" title="apidoc.APIDoc.__hash__()" alt="" coords="613,6,837,38" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__getitem__" title="apidoc.DottedName.__getitem__()" alt="" coords="585,62,865,94" />
+<area shape="rect" href="epydoc.docbuilder-module.html#build_doc_index" title="docbuilder.build_doc_index()" alt="" coords="5,622,248,654" />
+<area shape="rect" href="epydoc.docstringparser-module.html#parse_docstring" title="parse_docstring()" alt="" coords="297,622,449,654" />
+<area shape="rect" href="epydoc.docstringparser-module.html#add_metadata_from_var" title="add_metadata_from_var()" alt="" coords="617,118,833,150" />
+<area shape="rect" href="epydoc.docstringparser-module.html#check_type_fields" title="check_type_fields()" alt="" coords="641,174,809,206" />
+<area shape="rect" href="epydoc.docstringparser-module.html#get_docformat" title="get_docformat()" alt="" coords="655,230,796,262" />
+<area shape="rect" href="epydoc.docstringparser-module.html#initialize_api_doc" title="initialize_api_doc()" alt="" coords="641,286,809,318" />
+<area shape="rect" href="epydoc.docstringparser-module.html#parse_function_signature" title="parse_function_signature()" alt="" coords="613,342,837,374" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_field" title="process_field()" alt="" coords="659,398,792,430" />
+<area shape="rect" href="epydoc.docstringparser-module.html#report_errors" title="report_errors()" alt="" coords="660,454,791,486" />
+<area shape="rect" href="epydoc.docstringparser-module.html#split_init_fields" title="split_init_fields()" alt="" coords="651,510,800,542" />
+<area shape="rect" href="epydoc.docstringparser-module.html#unindent_docstring" title="unindent_docstring()" alt="" coords="636,566,815,598" />
+<area shape="rect" href="epydoc.docstringparser-module.html#user_docfields" title="user_docfields()" alt="" coords="653,622,797,654" />
+<area shape="rect" href="epydoc.markup.Field-class.html#arg" title="markup.Field.arg()" alt="" coords="644,678,807,710" />
+<area shape="rect" href="epydoc.markup.Field-class.html#body" title="markup.Field.body()" alt="" coords="637,734,813,766" />
+<area shape="rect" href="epydoc.markup.Field-class.html#tag" title="markup.Field.tag()" alt="" coords="645,790,805,822" />
+<area shape="rect" href="epydoc.markup.ParsedDocstring-class.html#__add__" title="markup.ParsedDocstring.__add__()" alt="" coords="581,846,869,878" />
+<area shape="rect" href="epydoc.markup.ParsedDocstring-class.html#split_fields" title="markup.ParsedDocstring.split_fields()" alt="" coords="572,902,879,934" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#split_fields" title="markup.epytext.ParsedEpytextDocstring.split_fields()" alt="" coords="513,958,937,990" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#summary" title="markup.epytext.ParsedEpytextDocstring.summary()" alt="" coords="520,1014,931,1046" />
+<area shape="rect" href="epydoc.markup-module.html#parse" title="markup.parse()" alt="" coords="659,1070,792,1102" />
+<area shape="rect" href="epydoc.markup.plaintext.ParsedPlaintextDocstring-class.html#summary" title="markup.plaintext.ParsedPlaintextDocstring.summary()" alt="" coords="512,1126,939,1158" />
+<area shape="rect" href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html#split_fields" title="markup.restructuredtext.ParsedRstDocstring.split_fields()" alt="" coords="500,1182,951,1214" />
+<area shape="rect" href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html#summary" title="markup.restructuredtext.ParsedRstDocstring.summary()" alt="" coords="507,1238,944,1270" />
+</map>
+  <img src="call_graph_for_parse_docstring.gif" alt='' usemap="#call_graph_for_parse_docstring" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Process the given <code>APIDoc</code>'s docstring.  In particular, 
+  populate the <code>APIDoc</code>'s <code>descr</code> and 
+  <code>summary</code> attributes, and add any information provided by 
+  fields in the docstring.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>docindex</code></strong> - A DocIndex, used to find the containing module (to look up the 
+          docformat); and to find any user docfields defined by containing 
+          objects.</li>
+        <li><strong class="pname"><code>suppress_warnings</code></strong> - A set of objects for which docstring warnings should be 
+          suppressed.</li>
+    </ul></dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="split_init_fields"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">split_init_fields</span>(<span class="sig-arg">fields</span>,
+        <span class="sig-arg">warnings</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docstringparser-pysrc.html#split_init_fields">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_split_init_fiel-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_split_init_fiel-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_split_init_fiel" name="call_graph_for_split_init_fiel">
+<area shape="rect" href="epydoc.docstringparser-module.html#parse_docstring" title="parse_docstring()" alt="" coords="7,34,159,66" />
+<area shape="rect" href="epydoc.docstringparser-module.html#split_init_fields" title="split_init_fields()" alt="" coords="209,34,359,66" />
+<area shape="rect" href="epydoc.markup.Field-class.html#arg" title="markup.Field.arg()" alt="" coords="408,6,571,38" />
+<area shape="rect" href="epydoc.markup.Field-class.html#tag" title="markup.Field.tag()" alt="" coords="409,62,569,94" />
+</map>
+  <img src="call_graph_for_split_init_fiel.gif" alt='' usemap="#call_graph_for_split_init_fiel" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Remove the fields related to the constructor from a class docstring 
+  fields list.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>fields</code></strong> (<code>list</code> of <a href="epydoc.markup.Field-class.html" 
+          class="link">markup.Field</a>) - The fields to process. The list will be modified in place</li>
+        <li><strong class="pname"><code>warnings</code></strong> (<code>list</code>) - A list to emit processing warnings</li>
+    </ul></dd>
+    <dt>Returns: <code>list</code> of <a href="epydoc.markup.Field-class.html" 
+      class="link">markup.Field</a></dt>
+        <dd>The <code>fields</code> items to be applied to the 
+          <code>__init__</code> method</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="process_field"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">process_field</span>(<span class="sig-arg">api_doc</span>,
+        <span class="sig-arg">docindex</span>,
+        <span class="sig-arg">tag</span>,
+        <span class="sig-arg">arg</span>,
+        <span class="sig-arg">descr</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docstringparser-pysrc.html#process_field">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_process_field-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_process_field-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_process_field" name="call_graph_for_process_field">
+<area shape="rect" href="epydoc.docstringparser-module.html#_check" title="_check()" alt="" coords="449,6,537,38" />
+<area shape="rect" href="epydoc.docstringparser-module.html#parse_docstring" title="parse_docstring()" alt="" coords="7,370,159,402" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_field" title="process_field()" alt="" coords="209,370,343,402" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_arg_field" title="process_arg_field()" alt="" coords="409,62,577,94" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_cvar_field" title="process_cvar_field()" alt="" coords="405,118,581,150" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_deffield_field" title="process_deffield_field()" alt="" coords="393,174,593,206" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_group_field" title="process_group_field()" alt="" coords="400,230,587,262" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_ivar_field" title="process_ivar_field()" alt="" coords="407,286,580,318" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_kwarg_field" title="process_kwarg_field()" alt="" coords="399,342,588,374" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_raise_field" title="process_raise_field()" alt="" coords="404,398,583,430" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_return_field" title="process_return_field()" alt="" coords="400,454,587,486" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_rtype_field" title="process_rtype_field()" alt="" coords="403,510,584,542" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_sort_field" title="process_sort_field()" alt="" coords="408,566,579,598" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_type_field" title="process_type_field()" alt="" coords="405,622,581,654" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_var_field" title="process_var_field()" alt="" coords="409,678,577,710" />
+<area shape="rect" href="epydoc.docstringparser-module.html#user_docfields" title="user_docfields()" alt="" coords="421,734,565,766" />
+</map>
+  <img src="call_graph_for_process_field.gif" alt='' usemap="#call_graph_for_process_field" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Process a single field, and use it to update <code>api_doc</code>.  If
+  <code>tag</code> is the name of a special field, then call its handler 
+  function.  If <code>tag</code> is the name of a simple field, then use 
+  <code>process_simple_field</code> to process it.  Otherwise, check if 
+  it's a user-defined field, defined in this docstring or the docstring of 
+  a containing object; and if so, process it with 
+  <code>process_simple_field</code>.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>tag</code></strong> - The field's tag, such as <code>'author'</code></li>
+        <li><strong class="pname"><code>arg</code></strong> - The field's optional argument</li>
+        <li><strong class="pname"><code>descr</code></strong> - The description following the field tag and argument.</li>
+    </ul></dd>
+    <dt>Raises:</dt>
+    <dd><ul class="nomargin-top">
+        <li><code><strong class='fraise'>ValueError</strong></code> - If a problem was encountered while processing the field.  The 
+        <code>ValueError</code>'s string argument is an explanation of the 
+        problem, which should be displayed as a warning message.</li>
+    </ul></dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="user_docfields"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">user_docfields</span>(<span class="sig-arg">api_doc</span>,
+        <span class="sig-arg">docindex</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docstringparser-pysrc.html#user_docfields">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_user_docfields-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_user_docfields-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_user_docfields" name="call_graph_for_user_docfields">
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#get_valdoc" title="apidoc.DocIndex.get_valdoc()" alt="" coords="417,6,665,38" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__getitem__" title="apidoc.DottedName.__getitem__()" alt="" coords="401,62,681,94" />
+<area shape="rect" href="epydoc.docstringparser-module.html#parse_docstring" title="parse_docstring()" alt="" coords="7,6,159,38" />
+<area shape="rect" href="epydoc.docstringparser-module.html#user_docfields" title="user_docfields()" alt="" coords="208,34,352,66" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_field" title="process_field()" alt="" coords="16,62,149,94" />
+</map>
+  <img src="call_graph_for_user_docfields.gif" alt='' usemap="#call_graph_for_user_docfields" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Return a list of user defined fields that can be used for the given 
+  object.  This list is taken from the given <code>api_doc</code>, and any 
+  of its containing <code>NamepaceDoc</code>s.</p>
+  <dl class="fields">
+  </dl>
+<div class="fields">      <p><strong>Note:</strong>
+        We assume here that a parent's docstring will always be parsed 
+        before its childrens'.  This is indeed the case when we are called 
+        via <a href="epydoc.docbuilder-module.html#build_doc_index" 
+        class="link">docbuilder.build_doc_index()</a>.  If a child's 
+        docstring is parsed before its parents, then its parent won't yet 
+        have had its <code>extra_docstring_fields</code> attribute 
+        initialized.
+      </p>
+</div></td></tr></table>
+</div>
+<a name="register_field_handler"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">register_field_handler</span>(<span class="sig-arg">handler</span>,
+        <span class="sig-arg">*field_tags</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docstringparser-pysrc.html#register_field_handler">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Register the given field handler function for processing any of the 
+  given field tags.  Field handler functions should have the following 
+  signature:</p>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">def</span> <span class="py-defname">field_handler</span>(api_doc, docindex, tag, arg, descr):
+<span class="py-more">... </span>    <span class="py-string">'''update api_doc in response to the field.'''</span></pre>
+  <p>Where <code>api_doc</code> is the documentation object to update; 
+  <code>docindex</code> is a <a href="epydoc.apidoc.DocIndex-class.html" 
+  class="link">DocIndex</a> that can be used to look up the documentation 
+  for related objects; <code>tag</code> is the field tag that was used; 
+  <code>arg</code> is the optional argument; and <code>descr</code> is the 
+  description following the field tag and argument.</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="_descr_to_identifiers"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">_descr_to_identifiers</span>(<span class="sig-arg">descr</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docstringparser-pysrc.html#_descr_to_identifiers">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__descr_to_ident-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for__descr_to_ident-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__descr_to_ident" name="call_graph_for__descr_to_ident">
+<area shape="rect" href="epydoc.docstringparser-module.html#_descr_to_identifiers" title="_descr_to_identifiers()" alt="" coords="243,34,435,66" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#to_plaintext" title="markup.epytext.ParsedEpytextDocstring.to_plaintext()" alt="" coords="498,6,927,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html#to_plaintext" title="markup.restructuredtext.ParsedRstDocstring.to_plaintext()" alt="" coords="483,62,942,94" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_group_field" title="process_group_field()" alt="" coords="7,6,194,38" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_sort_field" title="process_sort_field()" alt="" coords="15,62,186,94" />
+</map>
+  <img src="call_graph_for__descr_to_ident.gif" alt='' usemap="#call_graph_for__descr_to_ident" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Given a <code>ParsedDocstring</code> that contains a list of 
+  identifiers, return a list of those identifiers.  This is used by fields 
+  such as <code>@group</code> and <code>@sort</code>, which expect lists of
+  identifiers as their values.  To extract the identifiers, the docstring 
+  is first converted to plaintext, and then split.  The plaintext content 
+  of the docstring must be a a list of identifiers, separated by spaces, 
+  commas, colons, or semicolons.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>descr</code></strong> (<a href="epydoc.markup.ParsedDocstring-class.html" 
+          class="link">markup.ParsedDocstring</a>) - A <code>ParsedDocstring</code> containing a list of identifiers.</li>
+    </ul></dd>
+    <dt>Returns: <code>list</code> of <code>string</code></dt>
+        <dd>A list of the identifier names contained in <code>descr</code>.</dd>
+    <dt>Raises:</dt>
+    <dd><ul class="nomargin-top">
+        <li><code><strong class='fraise'>ValueError</strong></code> - If <code>descr</code> does not contain a valid list of identifiers.</li>
+    </ul></dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="parse_function_signature"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">parse_function_signature</span>(<span class="sig-arg">func_doc</span>,
+        <span class="sig-arg">doc_source</span>,
+        <span class="sig-arg">docformat</span>,
+        <span class="sig-arg">parse_errors</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docstringparser-pysrc.html#parse_function_signature">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_parse_function_-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_parse_function_-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_parse_function_" name="call_graph_for_parse_function_">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__init__" title="apidoc.APIDoc.__init__()" alt="" coords="480,6,696,38" />
+<area shape="rect" href="epydoc.docstringparser-module.html#parse_docstring" title="parse_docstring()" alt="" coords="7,34,159,66" />
+<area shape="rect" href="epydoc.docstringparser-module.html#parse_function_signature" title="parse_function_signature()" alt="" coords="208,34,432,66" />
+<area shape="rect" href="epydoc.markup-module.html#parse" title="markup.parse()" alt="" coords="521,62,655,94" />
+</map>
+  <img src="call_graph_for_parse_function_.gif" alt='' usemap="#call_graph_for_parse_function_" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Construct the signature for a builtin function or method from its 
+  docstring.  If the docstring uses the standard convention of including a 
+  signature in the first line of the docstring (and formats that signature 
+  according to standard conventions), then it will be used to extract a 
+  signature. Otherwise, the signature will be set to a single varargs 
+  variable named <code>"..."</code>.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>func_doc</code></strong> (<a href="epydoc.apidoc.RoutineDoc-class.html" 
+          class="link">RoutineDoc</a>) - The target object where to store parsed signature. Also container
+          of the docstring to parse if doc_source is <code>None</code></li>
+        <li><strong class="pname"><code>doc_source</code></strong> (<a href="epydoc.apidoc.APIDoc-class.html" class="link">APIDoc</a>) - Contains the docstring to parse. If <code>None</code>, parse 
+          <code class="link">func_doc</code> docstring instead</li>
+    </ul></dd>
+    <dt>Returns: <code>None</code></dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== VARIABLES DETAILS ==================== -->
+<a name="section-VariablesDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Variables Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-VariablesDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="STANDARD_FIELDS"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">STANDARD_FIELDS</h3>
+  <p>A list of the standard simple fields accepted by epydoc.  This list 
+  can be augmented at run-time by a docstring with the special 
+  <code>@deffield</code> field.  The order in which fields are listed here 
+  determines the order in which they will be displayed in the output.</p>
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-group">[</code><Field: deprecated><code class="variable-op">,</code>
+ <Field: version><code class="variable-op">,</code>
+ <Field: date><code class="variable-op">,</code>
+ <Field: status><code class="variable-op">,</code>
+ <Field: author><code class="variable-op">,</code>
+ <Field: contact><code class="variable-op">,</code>
+ <Field: organization><code class="variable-op">,</code>
+ <Field: copyright><code class="variable-op">,</code>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="RETURN_PDS"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">RETURN_PDS</h3>
+  <p>A ParsedDocstring containing the text 'Returns'.  This is used to 
+  construct summary descriptions for routines that have empty 
+  <code>descr</code>, but non-empty <code>return_descr</code>.</p>
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+markup.parse('Returns:', markup= 'epytext')
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="PARAMETER_TAGS"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">PARAMETER_TAGS</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-group">(</code><code class="variable-quote">'</code><code class="variable-string">arg</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">argument</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">parameter</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">param</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">kwarg</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">keyword</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">kwparam</code><code class="variable-quote">'</code><code class="variable-group">)</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="_IDENTIFIER_LIST_REGEXP"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">_IDENTIFIER_LIST_REGEXP</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+re.compile(r'^<code class="re-group">[</code>\w\.\*<code class="re-group">]</code><code class="re-op">+</code><code class="re-group">(</code><code class="re-group">[</code>\s,:;<code class="re-group">]</code>\s<code class="re-op">*</code><code class="re-group">[</code>\w\.\*<code class="re-group">]</code><code class="re-op">+</code><code class="re-group">)</code><code class="re-op">*</code>$')
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="_SIGNATURE_RE"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">_SIGNATURE_RE</h3>
+  <p>A regular expression that is used to extract signatures from 
+  docstrings.</p>
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+re.compile(r'^\s<code class="re-op">*</code><code class="re-group">(</code><code class="re-group">(?P<</code><code class="re-ref">self</code><code class="re-group">></code>\w<code class="re-op">+</code><code class="re-group">)</code>\.<code class="re-group">)</code><code class="re-op">?</code><code class="re-group">(?P<</code><code class="re-ref">func</code><code class="re-group">></code>\w<code class="re-op">+</code><code class="re-group">)</code>\(<code class="re-group">(?P [...]
+<code class="re-op">*</code>\*<code class="re-op">{,2}</code><code class="re-group">[</code>\w-\.<code class="re-group">]</code><code class="re-op">+</code><code class="re-group">(</code>\s<code class="re-op">*</code>=.<code class="re-op">+?</code><code class="re-group">)</code><code class="re-op">?</code><code class="re-group">(</code>\s<code class="re-op">*</code>\[<code class="re-op">?</code>\s<code class="re-op">*</code>,\s<code class="re-op">*</code>\]<code class="re-op">?</code>\s< [...]
+<code class="re-op">*</code>\]<code class="re-op">*</code><code class="re-group">)</code><code class="re-op">?</code><code class="re-group">)</code>\s<code class="re-op">*</code>\)<code class="re-group">(</code>\s<code class="re-op">*</code><code class="re-group">(</code>-><code class="re-group">)</code>\s<code class="re-op">*</code><code class="re-group">(?P<</code><code class="re-ref">return</code><code class="re-group">></code>\S.<code class="re-op">*?</code><code class="re-g [...]
+s<code class="re-op">+</code><code class="re-op">|</code>\.\n<code class="re-group">)</code>')
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:06:30 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.docstringparser-pysrc.html b/doc/api/epydoc.docstringparser-pysrc.html
new file mode 100644
index 0000000..649003e
--- /dev/null
+++ b/doc/api/epydoc.docstringparser-pysrc.html
@@ -0,0 +1,1739 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.docstringparser</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        Module docstringparser
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.docstringparser-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="epydoc.docstringparser-module.html">Module epydoc.docstringparser</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno">   1</tt>  <tt class="py-line"><tt class="py-comment"># epydoc -- Docstring processing</tt> </tt>
+<a name="L2"></a><tt class="py-lineno">   2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L3"></a><tt class="py-lineno">   3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2005 Edward Loper</tt> </tt>
+<a name="L4"></a><tt class="py-lineno">   4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Author: Edward Loper <edloper at loper.org></tt> </tt>
+<a name="L5"></a><tt class="py-lineno">   5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># URL: <http://epydoc.sf.net></tt> </tt>
+<a name="L6"></a><tt class="py-lineno">   6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L7"></a><tt class="py-lineno">   7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># $Id: docstringparser.py 1689 2008-01-30 17:01:02Z edloper $</tt> </tt>
+<a name="L8"></a><tt class="py-lineno">   8</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L9"></a><tt class="py-lineno">   9</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L10"></a><tt class="py-lineno">  10</tt>  <tt class="py-line"><tt class="py-docstring">Parse docstrings and handle any fields it defines, such as C{@type}</tt> </tt>
+<a name="L11"></a><tt class="py-lineno">  11</tt>  <tt class="py-line"><tt class="py-docstring">and C{@author}.  Fields are used to describe specific information</tt> </tt>
+<a name="L12"></a><tt class="py-lineno">  12</tt>  <tt class="py-line"><tt class="py-docstring">about an object.  There are two classes of fields: X{simple fields}</tt> </tt>
+<a name="L13"></a><tt class="py-lineno">  13</tt>  <tt class="py-line"><tt class="py-docstring">and X{special fields}.</tt> </tt>
+<a name="L14"></a><tt class="py-lineno">  14</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L15"></a><tt class="py-lineno">  15</tt>  <tt class="py-line"><tt class="py-docstring">Simple fields are fields that get stored directly in an C{APIDoc}'s</tt> </tt>
+<a name="L16"></a><tt class="py-lineno">  16</tt>  <tt class="py-line"><tt class="py-docstring">metadata dictionary, without any special processing.  The set of</tt> </tt>
+<a name="L17"></a><tt class="py-lineno">  17</tt>  <tt class="py-line"><tt class="py-docstring">simple fields is defined by the list L{STANDARD_FIELDS}, whose</tt> </tt>
+<a name="L18"></a><tt class="py-lineno">  18</tt>  <tt class="py-line"><tt class="py-docstring">elements are L{DocstringField}s.</tt> </tt>
+<a name="L19"></a><tt class="py-lineno">  19</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L20"></a><tt class="py-lineno">  20</tt>  <tt class="py-line"><tt class="py-docstring">Special fields are fields that perform some sort of processing on the</tt> </tt>
+<a name="L21"></a><tt class="py-lineno">  21</tt>  <tt class="py-line"><tt class="py-docstring">C{APIDoc}, or add information to attributes other than the metadata</tt> </tt>
+<a name="L22"></a><tt class="py-lineno">  22</tt>  <tt class="py-line"><tt class="py-docstring">dictionary.  Special fields are are handled by field handler</tt> </tt>
+<a name="L23"></a><tt class="py-lineno">  23</tt>  <tt class="py-line"><tt class="py-docstring">functions, which are registered using L{register_field_handler}.</tt> </tt>
+<a name="L24"></a><tt class="py-lineno">  24</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L25"></a><tt class="py-lineno">  25</tt>  <tt class="py-line"><tt class="py-name">__docformat__</tt> <tt class="py-op">=</tt> <tt class="py-string">'epytext en'</tt> </tt>
+<a name="L26"></a><tt class="py-lineno">  26</tt>  <tt class="py-line"> </tt>
+<a name="L27"></a><tt class="py-lineno">  27</tt>  <tt class="py-line"> </tt>
+<a name="L28"></a><tt class="py-lineno">  28</tt>  <tt class="py-line"><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L29"></a><tt class="py-lineno">  29</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## Imports</tt> </tt>
+<a name="L30"></a><tt class="py-lineno">  30</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L31"></a><tt class="py-lineno">  31</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L32"></a><tt class="py-lineno">  32</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">re</tt><tt class="py-op">,</tt> <tt class="py-name">sys</tt> </tt>
+<a name="L33"></a><tt class="py-lineno">  33</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-0" class="py-name" targets="Package epydoc=epydoc-module.html"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-0', 'epydoc', 'link-0');">epydoc</a></tt> <tt class="py-keyword">import</tt> <tt id="link-1" class="py-name" targets="Package epydoc.markup=epydoc.markup-module.html,Method epydoc.markup.doctest.DoctestColorizer.markup()=epydoc.markup.doct [...]
+epydoc.markup.doctest.DoctestColorizer.markup
+epydoc.markup.doctest.HTMLDoctestColorizer.markup
+epydoc.markup.doctest.LaTeXDoctestColorizer.markup
+epydoc.markup.doctest.XMLDoctestColorizer.markup" class="py-name" href="#" onclick="return doclink('link-1', 'markup', 'link-1');">markup</a></tt> </tt>
+<a name="L34"></a><tt class="py-lineno">  34</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-2" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-2', 'epydoc', 'link-0');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-3" class="py-name"><a title="epydoc.markup
+epydoc.markup.doctest.DoctestColorizer.markup
+epydoc.markup.doctest.HTMLDoctestColorizer.markup
+epydoc.markup.doctest.LaTeXDoctestColorizer.markup
+epydoc.markup.doctest.XMLDoctestColorizer.markup" class="py-name" href="#" onclick="return doclink('link-3', 'markup', 'link-1');">markup</a></tt> <tt class="py-keyword">import</tt> <tt id="link-4" class="py-name" targets="Module epydoc.markup.epytext=epydoc.markup.epytext-module.html"><a title="epydoc.markup.epytext" class="py-name" href="#" onclick="return doclink('link-4', 'epytext', 'link-4');">epytext</a></tt> </tt>
+<a name="L35"></a><tt class="py-lineno">  35</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-5" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-5', 'epydoc', 'link-0');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-6" class="py-name" targets="Module epydoc.apidoc=epydoc.apidoc-module.html"><a title="epydoc.apidoc" class="py-name" href="#" onclick="return doclink('link-6', 'apidoc', 'link-6');">apidoc</a></tt> <tt cla [...]
+<a name="L36"></a><tt class="py-lineno">  36</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-7" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-7', 'epydoc', 'link-0');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-8" class="py-name" targets="Module epydoc.docintrospecter=epydoc.docintrospecter-module.html"><a title="epydoc.docintrospecter" class="py-name" href="#" onclick="return doclink('link-8', 'docintrospecter', [...]
+<a name="L37"></a><tt class="py-lineno">  37</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-10" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-10', 'epydoc', 'link-0');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-11" class="py-name" targets="Module epydoc.test.util=epydoc.test.util-module.html,Module epydoc.util=epydoc.util-module.html"><a title="epydoc.test.util
+epydoc.util" class="py-name" href="#" onclick="return doclink('link-11', 'util', 'link-11');">util</a></tt> <tt class="py-keyword">import</tt> <tt id="link-12" class="py-name" targets="Function epydoc.util.py_src_filename()=epydoc.util-module.html#py_src_filename"><a title="epydoc.util.py_src_filename" class="py-name" href="#" onclick="return doclink('link-12', 'py_src_filename', 'link-12');">py_src_filename</a></tt> </tt>
+<a name="L38"></a><tt class="py-lineno">  38</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-13" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-13', 'epydoc', 'link-0');">epydoc</a></tt> <tt class="py-keyword">import</tt> <tt id="link-14" class="py-name" targets="Method epydoc.cli.ConsoleLogger.log()=epydoc.cli.ConsoleLogger-class.html#log,Method epydoc.cli.HTMLLogger.log()=epydoc.cli.HTMLLogger-class.html#log,Method epydo [...]
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-14', 'log', 'link-14');">log</a></tt> </tt>
+<a name="L39"></a><tt class="py-lineno">  39</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-15" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-15', 'epydoc', 'link-0');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-16" class="py-name" targets="Module epydoc.docparser=epydoc.docparser-module.html"><a title="epydoc.docparser" class="py-name" href="#" onclick="return doclink('link-16', 'docparser', 'link-16');">docp [...]
+<a name="L40"></a><tt class="py-lineno">  40</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">__builtin__</tt><tt class="py-op">,</tt> <tt class="py-name">exceptions</tt> </tt>
+<a name="L41"></a><tt class="py-lineno">  41</tt>  <tt class="py-line"> </tt>
+<a name="L42"></a><tt class="py-lineno">  42</tt>  <tt class="py-line"><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L43"></a><tt class="py-lineno">  43</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Docstring Fields</tt> </tt>
+<a name="L44"></a><tt class="py-lineno">  44</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L45"></a><tt class="py-lineno">  45</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="DocstringField"></a><div id="DocstringField-def"><a name="L46"></a><tt class="py-lineno">  46</tt> <a class="py-toggle" href="#" id="DocstringField-toggle" onclick="return toggle('DocstringField');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="epydoc.docstringparser.DocstringField-class.html">DocstringField</a><tt class="py-op">:</tt> </tt>
+</div><div id="DocstringField-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="DocstringField-expanded"><a name="L47"></a><tt class="py-lineno">  47</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L48"></a><tt class="py-lineno">  48</tt>  <tt class="py-line"><tt class="py-docstring">    A simple docstring field, which can be used to describe specific</tt> </tt>
+<a name="L49"></a><tt class="py-lineno">  49</tt>  <tt class="py-line"><tt class="py-docstring">    information about an object, such as its author or its version.</tt> </tt>
+<a name="L50"></a><tt class="py-lineno">  50</tt>  <tt class="py-line"><tt class="py-docstring">    Simple docstring fields are fields that take no arguments, and</tt> </tt>
+<a name="L51"></a><tt class="py-lineno">  51</tt>  <tt class="py-line"><tt class="py-docstring">    are displayed as simple sections.</tt> </tt>
+<a name="L52"></a><tt class="py-lineno">  52</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L53"></a><tt class="py-lineno">  53</tt>  <tt class="py-line"><tt class="py-docstring">    @ivar tags: The set of tags that can be used to identify this</tt> </tt>
+<a name="L54"></a><tt class="py-lineno">  54</tt>  <tt class="py-line"><tt class="py-docstring">        field.</tt> </tt>
+<a name="L55"></a><tt class="py-lineno">  55</tt>  <tt class="py-line"><tt class="py-docstring">    @ivar singular: The label that should be used to identify this</tt> </tt>
+<a name="L56"></a><tt class="py-lineno">  56</tt>  <tt class="py-line"><tt class="py-docstring">        field in the output, if the field contains one value.</tt> </tt>
+<a name="L57"></a><tt class="py-lineno">  57</tt>  <tt class="py-line"><tt class="py-docstring">    @ivar plural: The label that should be used to identify this</tt> </tt>
+<a name="L58"></a><tt class="py-lineno">  58</tt>  <tt class="py-line"><tt class="py-docstring">        field in the output, if the field contains multiple values.</tt> </tt>
+<a name="L59"></a><tt class="py-lineno">  59</tt>  <tt class="py-line"><tt class="py-docstring">    @ivar short: If true, then multiple values should be combined</tt> </tt>
+<a name="L60"></a><tt class="py-lineno">  60</tt>  <tt class="py-line"><tt class="py-docstring">        into a single comma-delimited list.  If false, then</tt> </tt>
+<a name="L61"></a><tt class="py-lineno">  61</tt>  <tt class="py-line"><tt class="py-docstring">        multiple values should be listed separately in a bulleted</tt> </tt>
+<a name="L62"></a><tt class="py-lineno">  62</tt>  <tt class="py-line"><tt class="py-docstring">        list.</tt> </tt>
+<a name="L63"></a><tt class="py-lineno">  63</tt>  <tt class="py-line"><tt class="py-docstring">    @ivar multivalue: If true, then multiple values may be given</tt> </tt>
+<a name="L64"></a><tt class="py-lineno">  64</tt>  <tt class="py-line"><tt class="py-docstring">        for this field; if false, then this field can only take a</tt> </tt>
+<a name="L65"></a><tt class="py-lineno">  65</tt>  <tt class="py-line"><tt class="py-docstring">        single value, and a warning should be issued if it is</tt> </tt>
+<a name="L66"></a><tt class="py-lineno">  66</tt>  <tt class="py-line"><tt class="py-docstring">        redefined.</tt> </tt>
+<a name="L67"></a><tt class="py-lineno">  67</tt>  <tt class="py-line"><tt class="py-docstring">    @ivar takes_arg: If true, then this field expects an argument;</tt> </tt>
+<a name="L68"></a><tt class="py-lineno">  68</tt>  <tt class="py-line"><tt class="py-docstring">        and a separate field section will be constructed for each</tt> </tt>
+<a name="L69"></a><tt class="py-lineno">  69</tt>  <tt class="py-line"><tt class="py-docstring">        argument value.  The label (and plural label) should include</tt> </tt>
+<a name="L70"></a><tt class="py-lineno">  70</tt>  <tt class="py-line"><tt class="py-docstring">        a '%s' to mark where the argument's string rep should be</tt> </tt>
+<a name="L71"></a><tt class="py-lineno">  71</tt>  <tt class="py-line"><tt class="py-docstring">        added.</tt> </tt>
+<a name="L72"></a><tt class="py-lineno">  72</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="DocstringField.__init__"></a><div id="DocstringField.__init__-def"><a name="L73"></a><tt class="py-lineno">  73</tt> <a class="py-toggle" href="#" id="DocstringField.__init__-toggle" onclick="return toggle('DocstringField.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docstringparser.DocstringField-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt clas [...]
+<a name="L74"></a><tt class="py-lineno">  74</tt>  <tt class="py-line">                 <tt class="py-param">short</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-param">multivalue</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-param">takes_arg</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> </tt>
+<a name="L75"></a><tt class="py-lineno">  75</tt>  <tt class="py-line">                 <tt class="py-param">varnames</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="DocstringField.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DocstringField.__init__-expanded"><a name="L76"></a><tt class="py-lineno">  76</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">tags</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">list</tt><tt class="py-op">,</tt> <tt class="py-na [...]
+<a name="L77"></a><tt class="py-lineno">  77</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">tags</tt> <tt class="py-op">=</tt> <tt class="py-name">tuple</tt><tt class="py-op">(</tt><tt class="py-name">tags</tt><tt class="py-op">)</tt> </tt>
+<a name="L78"></a><tt class="py-lineno">  78</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">tags</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt class="py-name">str</tt><tt class="py-op">:</tt> </tt>
+<a name="L79"></a><tt class="py-lineno">  79</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">tags</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">tags</tt><tt class="py-op">,</tt><tt class="py-op">)</tt> </tt>
+<a name="L80"></a><tt class="py-lineno">  80</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> <tt class="py-keyword">raise</tt> <tt class="py-name">TypeError</tt><tt class="py-op">(</tt><tt class="py-string">'Bad tags: %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">tags</tt><tt class="py-op">)</tt> </tt>
+<a name="L81"></a><tt class="py-lineno">  81</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">singular</tt> <tt class="py-op">=</tt> <tt id="link-17" class="py-name" targets="Method epydoc.docwriter.latex.LatexWriter.label()=epydoc.docwriter.latex.LatexWriter-class.html#label"><a title="epydoc.docwriter.latex.LatexWriter.label" class="py-name" href="#" onclick="return doclink('link-17', 'label', 'link-17');">label</a></tt> </tt>
+<a name="L82"></a><tt class="py-lineno">  82</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">plural</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">plural</tt> <tt class="py-op">=</tt> <tt id="link-18" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.label" class="py-name" href="#" onclick="return doclink('link-18', 'label', ' [...]
+<a name="L83"></a><tt class="py-lineno">  83</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">plural</tt> <tt class="py-op">=</tt> <tt class="py-name">plural</tt> </tt>
+<a name="L84"></a><tt class="py-lineno">  84</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">multivalue</tt> <tt class="py-op">=</tt> <tt class="py-name">multivalue</tt> </tt>
+<a name="L85"></a><tt class="py-lineno">  85</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">short</tt> <tt class="py-op">=</tt> <tt class="py-name">short</tt> </tt>
+<a name="L86"></a><tt class="py-lineno">  86</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">takes_arg</tt> <tt class="py-op">=</tt> <tt class="py-name">takes_arg</tt> </tt>
+<a name="L87"></a><tt class="py-lineno">  87</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">varnames</tt> <tt class="py-op">=</tt> <tt class="py-name">varnames</tt> <tt class="py-keyword">or</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+</div><a name="L88"></a><tt class="py-lineno">  88</tt>  <tt class="py-line"> </tt>
+<a name="DocstringField.__cmp__"></a><div id="DocstringField.__cmp__-def"><a name="L89"></a><tt class="py-lineno">  89</tt> <a class="py-toggle" href="#" id="DocstringField.__cmp__-toggle" onclick="return toggle('DocstringField.__cmp__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docstringparser.DocstringField-class.html#__cmp__">__cmp__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py- [...]
+</div><div id="DocstringField.__cmp__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DocstringField.__cmp__-expanded"><a name="L90"></a><tt class="py-lineno">  90</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">other</tt><tt class="py-op">,</tt> <tt id="link-19" class="py-name" targets="Class epydoc.docstringparser.DocstringField=ep [...]
+<a name="L91"></a><tt class="py-lineno">  91</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">cmp</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">tags</tt><tt class="py-op">,</tt> <tt class="py-name">other</tt><tt class="py-op">.</tt><tt class="py-name">tags</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L92"></a><tt class="py-lineno">  92</tt>  <tt class="py-line">     </tt>
+<a name="DocstringField.__hash__"></a><div id="DocstringField.__hash__-def"><a name="L93"></a><tt class="py-lineno">  93</tt> <a class="py-toggle" href="#" id="DocstringField.__hash__-toggle" onclick="return toggle('DocstringField.__hash__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docstringparser.DocstringField-class.html#__hash__">__hash__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class [...]
+</div><div id="DocstringField.__hash__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DocstringField.__hash__-expanded"><a name="L94"></a><tt class="py-lineno">  94</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">hash</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">tags</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L95"></a><tt class="py-lineno">  95</tt>  <tt class="py-line"> </tt>
+<a name="DocstringField.__repr__"></a><div id="DocstringField.__repr__-def"><a name="L96"></a><tt class="py-lineno">  96</tt> <a class="py-toggle" href="#" id="DocstringField.__repr__-toggle" onclick="return toggle('DocstringField.__repr__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docstringparser.DocstringField-class.html#__repr__">__repr__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class [...]
+</div><div id="DocstringField.__repr__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DocstringField.__repr__-expanded"><a name="L97"></a><tt class="py-lineno">  97</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">'<Field: %s>'</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">tags</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</t [...]
+</div></div><a name="L98"></a><tt class="py-lineno">  98</tt>  <tt class="py-line"> </tt>
+<a name="L99"></a><tt class="py-lineno">  99</tt>  <tt class="py-line"><tt id="link-20" class="py-name" targets="Variable epydoc.docstringparser.STANDARD_FIELDS=epydoc.docstringparser-module.html#STANDARD_FIELDS"><a title="epydoc.docstringparser.STANDARD_FIELDS" class="py-name" href="#" onclick="return doclink('link-20', 'STANDARD_FIELDS', 'link-20');">STANDARD_FIELDS</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> </tt>
+<a name="L100"></a><tt class="py-lineno"> 100</tt>  <tt class="py-line">    <tt class="py-comment">#: A list of the standard simple fields accepted by epydoc.  This</tt> </tt>
+<a name="L101"></a><tt class="py-lineno"> 101</tt>  <tt class="py-line">    <tt class="py-comment">#: list can be augmented at run-time by a docstring with the special</tt> </tt>
+<a name="L102"></a><tt class="py-lineno"> 102</tt>  <tt class="py-line">    <tt class="py-comment">#: C{@deffield} field.  The order in which fields are listed here</tt> </tt>
+<a name="L103"></a><tt class="py-lineno"> 103</tt>  <tt class="py-line">    <tt class="py-comment">#: determines the order in which they will be displayed in the</tt> </tt>
+<a name="L104"></a><tt class="py-lineno"> 104</tt>  <tt class="py-line">    <tt class="py-comment">#: output.</tt> </tt>
+<a name="L105"></a><tt class="py-lineno"> 105</tt>  <tt class="py-line">     </tt>
+<a name="L106"></a><tt class="py-lineno"> 106</tt>  <tt class="py-line">    <tt class="py-comment"># If it's deprecated, put that first.</tt> </tt>
+<a name="L107"></a><tt class="py-lineno"> 107</tt>  <tt class="py-line">    <tt id="link-21" class="py-name"><a title="epydoc.docstringparser.DocstringField" class="py-name" href="#" onclick="return doclink('link-21', 'DocstringField', 'link-19');">DocstringField</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">'deprecated'</tt><tt class="py-op">,</tt> <tt class="py-string">'depreciated'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L108"></a><tt class="py-lineno"> 108</tt>  <tt class="py-line">             <tt class="py-string">'Deprecated'</tt><tt class="py-op">,</tt> <tt class="py-name">multivalue</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">varnames</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt class="py-string">'__deprecated__'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L109"></a><tt class="py-lineno"> 109</tt>  <tt class="py-line"> </tt>
+<a name="L110"></a><tt class="py-lineno"> 110</tt>  <tt class="py-line">    <tt class="py-comment"># Status info</tt> </tt>
+<a name="L111"></a><tt class="py-lineno"> 111</tt>  <tt class="py-line">    <tt id="link-22" class="py-name"><a title="epydoc.docstringparser.DocstringField" class="py-name" href="#" onclick="return doclink('link-22', 'DocstringField', 'link-19');">DocstringField</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">'version'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-string">'Version'</tt><tt class="py-op">,</tt> <tt class="py-name">multiv [...]
+<a name="L112"></a><tt class="py-lineno"> 112</tt>  <tt class="py-line">                   <tt class="py-name">varnames</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt class="py-string">'__version__'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L113"></a><tt class="py-lineno"> 113</tt>  <tt class="py-line">    <tt id="link-23" class="py-name"><a title="epydoc.docstringparser.DocstringField" class="py-name" href="#" onclick="return doclink('link-23', 'DocstringField', 'link-19');">DocstringField</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">'date'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-string">'Date'</tt><tt class="py-op">,</tt> <tt class="py-name">multivalue</ [...]
+<a name="L114"></a><tt class="py-lineno"> 114</tt>  <tt class="py-line">                   <tt class="py-name">varnames</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt class="py-string">'__date__'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L115"></a><tt class="py-lineno"> 115</tt>  <tt class="py-line">    <tt id="link-24" class="py-name"><a title="epydoc.docstringparser.DocstringField" class="py-name" href="#" onclick="return doclink('link-24', 'DocstringField', 'link-19');">DocstringField</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">'status'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-string">'Status'</tt><tt class="py-op">,</tt> <tt class="py-name">multival [...]
+<a name="L116"></a><tt class="py-lineno"> 116</tt>  <tt class="py-line">     </tt>
+<a name="L117"></a><tt class="py-lineno"> 117</tt>  <tt class="py-line">    <tt class="py-comment"># Bibliographic Info</tt> </tt>
+<a name="L118"></a><tt class="py-lineno"> 118</tt>  <tt class="py-line">    <tt id="link-25" class="py-name"><a title="epydoc.docstringparser.DocstringField" class="py-name" href="#" onclick="return doclink('link-25', 'DocstringField', 'link-19');">DocstringField</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">'author'</tt><tt class="py-op">,</tt> <tt class="py-string">'authors'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-string">'Auth [...]
+<a name="L119"></a><tt class="py-lineno"> 119</tt>  <tt class="py-line">                   <tt class="py-name">varnames</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt class="py-string">'__author__'</tt><tt class="py-op">,</tt> <tt class="py-string">'__authors__'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L120"></a><tt class="py-lineno"> 120</tt>  <tt class="py-line">    <tt id="link-26" class="py-name"><a title="epydoc.docstringparser.DocstringField" class="py-name" href="#" onclick="return doclink('link-26', 'DocstringField', 'link-19');">DocstringField</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">'contact'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-string">'Contact'</tt><tt class="py-op">,</tt> <tt class="py-string">'Con [...]
+<a name="L121"></a><tt class="py-lineno"> 121</tt>  <tt class="py-line">                   <tt class="py-name">varnames</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt class="py-string">'__contact__'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L122"></a><tt class="py-lineno"> 122</tt>  <tt class="py-line">    <tt id="link-27" class="py-name"><a title="epydoc.docstringparser.DocstringField" class="py-name" href="#" onclick="return doclink('link-27', 'DocstringField', 'link-19');">DocstringField</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">'organization'</tt><tt class="py-op">,</tt> <tt class="py-string">'org'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L123"></a><tt class="py-lineno"> 123</tt>  <tt class="py-line">                   <tt class="py-string">'Organization'</tt><tt class="py-op">,</tt> <tt class="py-string">'Organizations'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L124"></a><tt class="py-lineno"> 124</tt>  <tt class="py-line">    <tt id="link-28" class="py-name"><a title="epydoc.docstringparser.DocstringField" class="py-name" href="#" onclick="return doclink('link-28', 'DocstringField', 'link-19');">DocstringField</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">'copyright'</tt><tt class="py-op">,</tt> <tt class="py-string">'(c)'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-string">'Copyr [...]
+<a name="L125"></a><tt class="py-lineno"> 125</tt>  <tt class="py-line">                   <tt class="py-name">varnames</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt class="py-string">'__copyright__'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L126"></a><tt class="py-lineno"> 126</tt>  <tt class="py-line">    <tt id="link-29" class="py-name"><a title="epydoc.docstringparser.DocstringField" class="py-name" href="#" onclick="return doclink('link-29', 'DocstringField', 'link-19');">DocstringField</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">'license'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-string">'License'</tt><tt class="py-op">,</tt> <tt class="py-name">multiv [...]
+<a name="L127"></a><tt class="py-lineno"> 127</tt>  <tt class="py-line">                   <tt class="py-name">varnames</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt class="py-string">'__license__'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L128"></a><tt class="py-lineno"> 128</tt>  <tt class="py-line"> </tt>
+<a name="L129"></a><tt class="py-lineno"> 129</tt>  <tt class="py-line">    <tt class="py-comment"># Various warnings etc.</tt> </tt>
+<a name="L130"></a><tt class="py-lineno"> 130</tt>  <tt class="py-line">    <tt id="link-30" class="py-name"><a title="epydoc.docstringparser.DocstringField" class="py-name" href="#" onclick="return doclink('link-30', 'DocstringField', 'link-19');">DocstringField</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">'bug'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-string">'Bug'</tt><tt class="py-op">,</tt> <tt class="py-string">'Bugs'</tt>< [...]
+<a name="L131"></a><tt class="py-lineno"> 131</tt>  <tt class="py-line">    <tt id="link-31" class="py-name"><a title="epydoc.docstringparser.DocstringField" class="py-name" href="#" onclick="return doclink('link-31', 'DocstringField', 'link-19');">DocstringField</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">'warning'</tt><tt class="py-op">,</tt> <tt class="py-string">'warn'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-string">'Warnin [...]
+<a name="L132"></a><tt class="py-lineno"> 132</tt>  <tt class="py-line">    <tt id="link-32" class="py-name"><a title="epydoc.docstringparser.DocstringField" class="py-name" href="#" onclick="return doclink('link-32', 'DocstringField', 'link-19');">DocstringField</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">'attention'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-string">'Attention'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L133"></a><tt class="py-lineno"> 133</tt>  <tt class="py-line">    <tt id="link-33" class="py-name"><a title="epydoc.docstringparser.DocstringField" class="py-name" href="#" onclick="return doclink('link-33', 'DocstringField', 'link-19');">DocstringField</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">'note'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-string">'Note'</tt><tt class="py-op">,</tt> <tt class="py-string">'Notes'</t [...]
+<a name="L134"></a><tt class="py-lineno"> 134</tt>  <tt class="py-line"> </tt>
+<a name="L135"></a><tt class="py-lineno"> 135</tt>  <tt class="py-line">    <tt class="py-comment"># Formal conditions</tt> </tt>
+<a name="L136"></a><tt class="py-lineno"> 136</tt>  <tt class="py-line">    <tt id="link-34" class="py-name"><a title="epydoc.docstringparser.DocstringField" class="py-name" href="#" onclick="return doclink('link-34', 'DocstringField', 'link-19');">DocstringField</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">'requires'</tt><tt class="py-op">,</tt> <tt class="py-string">'require'</tt><tt class="py-op">,</tt> <tt class="py-string">'requirement'</tt><tt class [...]
+<a name="L137"></a><tt class="py-lineno"> 137</tt>  <tt class="py-line">    <tt id="link-35" class="py-name"><a title="epydoc.docstringparser.DocstringField" class="py-name" href="#" onclick="return doclink('link-35', 'DocstringField', 'link-19');">DocstringField</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">'precondition'</tt><tt class="py-op">,</tt> <tt class="py-string">'precond'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L138"></a><tt class="py-lineno"> 138</tt>  <tt class="py-line">             <tt class="py-string">'Precondition'</tt><tt class="py-op">,</tt> <tt class="py-string">'Preconditions'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L139"></a><tt class="py-lineno"> 139</tt>  <tt class="py-line">    <tt id="link-36" class="py-name"><a title="epydoc.docstringparser.DocstringField" class="py-name" href="#" onclick="return doclink('link-36', 'DocstringField', 'link-19');">DocstringField</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">'postcondition'</tt><tt class="py-op">,</tt> <tt class="py-string">'postcond'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L140"></a><tt class="py-lineno"> 140</tt>  <tt class="py-line">             <tt class="py-string">'Postcondition'</tt><tt class="py-op">,</tt> <tt class="py-string">'Postconditions'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L141"></a><tt class="py-lineno"> 141</tt>  <tt class="py-line">    <tt id="link-37" class="py-name"><a title="epydoc.docstringparser.DocstringField" class="py-name" href="#" onclick="return doclink('link-37', 'DocstringField', 'link-19');">DocstringField</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">'invariant'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-string">'Invariant'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L142"></a><tt class="py-lineno"> 142</tt>  <tt class="py-line"> </tt>
+<a name="L143"></a><tt class="py-lineno"> 143</tt>  <tt class="py-line">    <tt class="py-comment"># When was it introduced (version # or date)</tt> </tt>
+<a name="L144"></a><tt class="py-lineno"> 144</tt>  <tt class="py-line">    <tt id="link-38" class="py-name"><a title="epydoc.docstringparser.DocstringField" class="py-name" href="#" onclick="return doclink('link-38', 'DocstringField', 'link-19');">DocstringField</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">'since'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-string">'Since'</tt><tt class="py-op">,</tt> <tt class="py-name">multivalue [...]
+<a name="L145"></a><tt class="py-lineno"> 145</tt>  <tt class="py-line"> </tt>
+<a name="L146"></a><tt class="py-lineno"> 146</tt>  <tt class="py-line">    <tt class="py-comment"># Changes made</tt> </tt>
+<a name="L147"></a><tt class="py-lineno"> 147</tt>  <tt class="py-line">    <tt id="link-39" class="py-name"><a title="epydoc.docstringparser.DocstringField" class="py-name" href="#" onclick="return doclink('link-39', 'DocstringField', 'link-19');">DocstringField</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">'change'</tt><tt class="py-op">,</tt> <tt class="py-string">'changed'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-string">'Chan [...]
+<a name="L148"></a><tt class="py-lineno"> 148</tt>  <tt class="py-line">                    </tt>
+<a name="L149"></a><tt class="py-lineno"> 149</tt>  <tt class="py-line">    <tt class="py-comment"># Crossreferences</tt> </tt>
+<a name="L150"></a><tt class="py-lineno"> 150</tt>  <tt class="py-line">    <tt id="link-40" class="py-name"><a title="epydoc.docstringparser.DocstringField" class="py-name" href="#" onclick="return doclink('link-40', 'DocstringField', 'link-19');">DocstringField</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">'see'</tt><tt class="py-op">,</tt> <tt class="py-string">'seealso'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-string">'See Als [...]
+<a name="L151"></a><tt class="py-lineno"> 151</tt>  <tt class="py-line"> </tt>
+<a name="L152"></a><tt class="py-lineno"> 152</tt>  <tt class="py-line">    <tt class="py-comment"># Future Work</tt> </tt>
+<a name="L153"></a><tt class="py-lineno"> 153</tt>  <tt class="py-line">    <tt id="link-41" class="py-name"><a title="epydoc.docstringparser.DocstringField" class="py-name" href="#" onclick="return doclink('link-41', 'DocstringField', 'link-19');">DocstringField</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">'todo'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-string">'To Do'</tt><tt class="py-op">,</tt> <tt class="py-name">takes_arg</ [...]
+<a name="L154"></a><tt class="py-lineno"> 154</tt>  <tt class="py-line"> </tt>
+<a name="L155"></a><tt class="py-lineno"> 155</tt>  <tt class="py-line">    <tt class="py-comment"># Permissions (used by zope-based projects)</tt> </tt>
+<a name="L156"></a><tt class="py-lineno"> 156</tt>  <tt class="py-line">    <tt id="link-42" class="py-name"><a title="epydoc.docstringparser.DocstringField" class="py-name" href="#" onclick="return doclink('link-42', 'DocstringField', 'link-19');">DocstringField</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">'permission'</tt><tt class="py-op">,</tt> <tt class="py-string">'permissions'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-strin [...]
+<a name="L157"></a><tt class="py-lineno"> 157</tt>  <tt class="py-line">    <tt class="py-op">]</tt> </tt>
+<a name="L158"></a><tt class="py-lineno"> 158</tt>  <tt class="py-line"> </tt>
+<a name="L159"></a><tt class="py-lineno"> 159</tt>  <tt class="py-line"><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L160"></a><tt class="py-lineno"> 160</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#{ Docstring Parsing</tt> </tt>
+<a name="L161"></a><tt class="py-lineno"> 161</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L162"></a><tt class="py-lineno"> 162</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L163"></a><tt class="py-lineno"> 163</tt>  <tt class="py-line"><tt id="link-43" class="py-name" targets="Variable epydoc.cli.DEFAULT_DOCFORMAT=epydoc.cli-module.html#DEFAULT_DOCFORMAT,Variable epydoc.docstringparser.DEFAULT_DOCFORMAT=epydoc.docstringparser-module.html#DEFAULT_DOCFORMAT"><a title="epydoc.cli.DEFAULT_DOCFORMAT
+epydoc.docstringparser.DEFAULT_DOCFORMAT" class="py-name" href="#" onclick="return doclink('link-43', 'DEFAULT_DOCFORMAT', 'link-43');">DEFAULT_DOCFORMAT</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'epytext'</tt> </tt>
+<a name="L164"></a><tt class="py-lineno"> 164</tt>  <tt class="py-line"><tt class="py-string">"""The name of the default markup languge used to process docstrings."""</tt> </tt>
+<a name="L165"></a><tt class="py-lineno"> 165</tt>  <tt class="py-line"> </tt>
+<a name="L166"></a><tt class="py-lineno"> 166</tt>  <tt class="py-line"><tt class="py-comment"># [xx] keep track of which ones we've already done, in case we're</tt> </tt>
+<a name="L167"></a><tt class="py-lineno"> 167</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># asked to process one twice?  e.g., for @include we might have to</tt> </tt>
+<a name="L168"></a><tt class="py-lineno"> 168</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># parse the included docstring earlier than we might otherwise..??</tt> </tt>
+<a name="L169"></a><tt class="py-lineno"> 169</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="parse_docstring"></a><div id="parse_docstring-def"><a name="L170"></a><tt class="py-lineno"> 170</tt> <a class="py-toggle" href="#" id="parse_docstring-toggle" onclick="return toggle('parse_docstring');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docstringparser-module.html#parse_docstring">parse_docstring</a><tt class="py-op">(</tt><tt class="py-param">api_doc</tt><tt class="py-op">,</tt> <tt class="py-param">docindex</tt><tt cl [...]
+</div><div id="parse_docstring-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="parse_docstring-expanded"><a name="L171"></a><tt class="py-lineno"> 171</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L172"></a><tt class="py-lineno"> 172</tt>  <tt class="py-line"><tt class="py-docstring">    Process the given C{APIDoc}'s docstring.  In particular, populate</tt> </tt>
+<a name="L173"></a><tt class="py-lineno"> 173</tt>  <tt class="py-line"><tt class="py-docstring">    the C{APIDoc}'s C{descr} and C{summary} attributes, and add any</tt> </tt>
+<a name="L174"></a><tt class="py-lineno"> 174</tt>  <tt class="py-line"><tt class="py-docstring">    information provided by fields in the docstring.</tt> </tt>
+<a name="L175"></a><tt class="py-lineno"> 175</tt>  <tt class="py-line"><tt class="py-docstring">    </tt> </tt>
+<a name="L176"></a><tt class="py-lineno"> 176</tt>  <tt class="py-line"><tt class="py-docstring">    @param docindex: A DocIndex, used to find the containing</tt> </tt>
+<a name="L177"></a><tt class="py-lineno"> 177</tt>  <tt class="py-line"><tt class="py-docstring">        module (to look up the docformat); and to find any</tt> </tt>
+<a name="L178"></a><tt class="py-lineno"> 178</tt>  <tt class="py-line"><tt class="py-docstring">        user docfields defined by containing objects.</tt> </tt>
+<a name="L179"></a><tt class="py-lineno"> 179</tt>  <tt class="py-line"><tt class="py-docstring">    @param suppress_warnings: A set of objects for which docstring</tt> </tt>
+<a name="L180"></a><tt class="py-lineno"> 180</tt>  <tt class="py-line"><tt class="py-docstring">        warnings should be suppressed.</tt> </tt>
+<a name="L181"></a><tt class="py-lineno"> 181</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L182"></a><tt class="py-lineno"> 182</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-44" class="py-name" targets="Variable epydoc.apidoc.APIDoc.metadata=epydoc.apidoc.APIDoc-class.html#metadata"><a title="epydoc.apidoc.APIDoc.metadata" class="py-name" href="#" onclick="return doclink('link-44', 'metadata', 'link-44');">metadata</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> [...]
+<a name="L183"></a><tt class="py-lineno"> 183</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-op">(</tt><tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt id="link-46" class="py-name" targets="Class epydoc.apidoc.RoutineDoc=epydoc.apidoc.RoutineDoc-class.html"><a title="epydoc.apidoc.RoutineDoc" class="py-name" href="#" onclick="return doclink('link-46', 'Ro [...]
+<a name="L184"></a><tt class="py-lineno"> 184</tt>  <tt class="py-line">                <tt class="py-keyword">and</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-47" class="py-name" targets="Variable epydoc.apidoc.GenericValueDoc.canonical_name=epydoc.apidoc.GenericValueDoc-class.html#canonical_name,Variable epydoc.apidoc.ValueDoc.canonical_name=epydoc.apidoc.ValueDoc-class.html#canonical_name,Variable epydoc.apidoc.VariableDoc.canonical_name=epydoc.apidoc.Vari [...]
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-47', 'canonical_name', 'link-47');">canonical_name</a></tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">'__init__'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L185"></a><tt class="py-lineno"> 185</tt>  <tt class="py-line">            <tt id="link-48" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-48', 'log', 'link-14');">log</a></tt><tt class="py-op">.</tt><tt id="link-49" class="py-name" targets="Function epydoc.log.debug()=epydoc.log-module.html#debug,Method epydoc.markup.restructuredtext.OptimizedReporter.debug()=epydoc.markup.restructuredtext.OptimizedReporter-class.html#debug"><a title="epydoc.log.debug
+epydoc.markup.restructuredtext.OptimizedReporter.debug" class="py-name" href="#" onclick="return doclink('link-49', 'debug', 'link-49');">debug</a></tt><tt class="py-op">(</tt><tt class="py-string">"%s's docstring processed twice"</tt> <tt class="py-op">%</tt> </tt>
+<a name="L186"></a><tt class="py-lineno"> 186</tt>  <tt class="py-line">                      <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-50" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-50', 'canonical_name', 'link-47');">canonical_name</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L187"></a><tt class="py-lineno"> 187</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> </tt>
+<a name="L188"></a><tt class="py-lineno"> 188</tt>  <tt class="py-line">         </tt>
+<a name="L189"></a><tt class="py-lineno"> 189</tt>  <tt class="py-line">    <tt id="link-51" class="py-name" targets="Function epydoc.docstringparser.initialize_api_doc()=epydoc.docstringparser-module.html#initialize_api_doc"><a title="epydoc.docstringparser.initialize_api_doc" class="py-name" href="#" onclick="return doclink('link-51', 'initialize_api_doc', 'link-51');">initialize_api_doc</a></tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">)</tt> </tt>
+<a name="L190"></a><tt class="py-lineno"> 190</tt>  <tt class="py-line"> </tt>
+<a name="L191"></a><tt class="py-lineno"> 191</tt>  <tt class="py-line">    <tt class="py-comment"># If there's no docstring, then check for special variables (e.g.,</tt> </tt>
+<a name="L192"></a><tt class="py-lineno"> 192</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># __version__), and then return -- there's nothing else to do.</tt> </tt>
+<a name="L193"></a><tt class="py-lineno"> 193</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-52" class="py-name" targets="Variable epydoc.apidoc.APIDoc.docstring=epydoc.apidoc.APIDoc-class.html#docstring"><a title="epydoc.apidoc.APIDoc.docstring" class="py-name" href="#" onclick="return doclink('link-52', 'docstring', 'link-52');">docstring</a></tt> <tt c [...]
+<a name="L194"></a><tt class="py-lineno"> 194</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt id="link-54" class="py-name" targets="Class epydoc.apidoc.NamespaceDoc=epydoc.apidoc.NamespaceDoc-class.html"><a title="epydoc.apidoc.NamespaceDoc" class="py-name" href="#" onclick="return doclink('link-54', 'NamespaceDoc', 'link-54');">NamespaceDoc</a></tt><tt [...]
+<a name="L195"></a><tt class="py-lineno"> 195</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">field</tt> <tt class="py-keyword">in</tt> <tt id="link-55" class="py-name"><a title="epydoc.docstringparser.STANDARD_FIELDS" class="py-name" href="#" onclick="return doclink('link-55', 'STANDARD_FIELDS', 'link-20');">STANDARD_FIELDS</a></tt> <tt class="py-op">+</tt> <tt id="link-56" class="py-name" targets="Function epydoc.docstringparser.user_docfields( [...]
+<a name="L196"></a><tt class="py-lineno"> 196</tt>  <tt class="py-line">                <tt id="link-57" class="py-name" targets="Function epydoc.docstringparser.add_metadata_from_var()=epydoc.docstringparser-module.html#add_metadata_from_var"><a title="epydoc.docstringparser.add_metadata_from_var" class="py-name" href="#" onclick="return doclink('link-57', 'add_metadata_from_var', 'link-57');">add_metadata_from_var</a></tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt clas [...]
+<a name="L197"></a><tt class="py-lineno"> 197</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> </tt>
+<a name="L198"></a><tt class="py-lineno"> 198</tt>  <tt class="py-line"> </tt>
+<a name="L199"></a><tt class="py-lineno"> 199</tt>  <tt class="py-line">    <tt class="py-comment"># Remove leading indentation from the docstring.</tt> </tt>
+<a name="L200"></a><tt class="py-lineno"> 200</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-58" class="py-name"><a title="epydoc.apidoc.APIDoc.docstring" class="py-name" href="#" onclick="return doclink('link-58', 'docstring', 'link-52');">docstring</a></tt> <tt class="py-op">=</tt> <tt id="link-59" class="py-name" targets="Function epydoc.docstringparser.unindent_docstring()=epydoc.docstringparser-module.ht [...]
+<a name="L201"></a><tt class="py-lineno"> 201</tt>  <tt class="py-line"> </tt>
+<a name="L202"></a><tt class="py-lineno"> 202</tt>  <tt class="py-line">    <tt class="py-comment"># Decide which docformat is used by this module.</tt> </tt>
+<a name="L203"></a><tt class="py-lineno"> 203</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-61" class="py-name" targets="Variable epydoc.apidoc.ModuleDoc.docformat=epydoc.apidoc.ModuleDoc-class.html#docformat"><a title="epydoc.apidoc.ModuleDoc.docformat" class="py-name" href="#" onclick="return doclink('link-61', 'docformat', 'link-61');">docformat</a></tt> <tt class="py-op">=</tt> <tt id="link-62" class="py-name" targets="Function epydoc.docstringparser.get_docf [...]
+<a name="L204"></a><tt class="py-lineno"> 204</tt>  <tt class="py-line"> </tt>
+<a name="L205"></a><tt class="py-lineno"> 205</tt>  <tt class="py-line">    <tt class="py-comment"># A list of markup errors from parsing.</tt> </tt>
+<a name="L206"></a><tt class="py-lineno"> 206</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">parse_errors</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L207"></a><tt class="py-lineno"> 207</tt>  <tt class="py-line">     </tt>
+<a name="L208"></a><tt class="py-lineno"> 208</tt>  <tt class="py-line">    <tt class="py-comment"># Extract a signature from the docstring, if it has one.  This</tt> </tt>
+<a name="L209"></a><tt class="py-lineno"> 209</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># overrides any signature we got via introspection/parsing.</tt> </tt>
+<a name="L210"></a><tt class="py-lineno"> 210</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt id="link-63" class="py-name"><a title="epydoc.apidoc.RoutineDoc" class="py-name" href="#" onclick="return doclink('link-63', 'RoutineDoc', 'link-46');">RoutineDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L211"></a><tt class="py-lineno"> 211</tt>  <tt class="py-line">        <tt id="link-64" class="py-name" targets="Function epydoc.docstringparser.parse_function_signature()=epydoc.docstringparser-module.html#parse_function_signature"><a title="epydoc.docstringparser.parse_function_signature" class="py-name" href="#" onclick="return doclink('link-64', 'parse_function_signature', 'link-64');">parse_function_signature</a></tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt>< [...]
+<a name="L212"></a><tt class="py-lineno"> 212</tt>  <tt class="py-line"> </tt>
+<a name="L213"></a><tt class="py-lineno"> 213</tt>  <tt class="py-line">    <tt class="py-comment"># Parse the docstring.  Any errors encountered are stored as</tt> </tt>
+<a name="L214"></a><tt class="py-lineno"> 214</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># `ParseError` objects in the errors list.</tt> </tt>
+<a name="L215"></a><tt class="py-lineno"> 215</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">parsed_docstring</tt> <tt class="py-op">=</tt> <tt id="link-66" class="py-name"><a title="epydoc.markup
+epydoc.markup.doctest.DoctestColorizer.markup
+epydoc.markup.doctest.HTMLDoctestColorizer.markup
+epydoc.markup.doctest.LaTeXDoctestColorizer.markup
+epydoc.markup.doctest.XMLDoctestColorizer.markup" class="py-name" href="#" onclick="return doclink('link-66', 'markup', 'link-1');">markup</a></tt><tt class="py-op">.</tt><tt id="link-67" class="py-name" targets="Function epydoc.markup.epytext.parse()=epydoc.markup.epytext-module.html#parse,Function epydoc.markup.parse()=epydoc.markup-module.html#parse"><a title="epydoc.markup.epytext.parse
+epydoc.markup.parse" class="py-name" href="#" onclick="return doclink('link-67', 'parse', 'link-67');">parse</a></tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-68" class="py-name"><a title="epydoc.apidoc.APIDoc.docstring" class="py-name" href="#" onclick="return doclink('link-68', 'docstring', 'link-52');">docstring</a></tt><tt class="py-op">,</tt> <tt id="link-69" class="py-name"><a title="epydoc.apidoc.ModuleDoc.docformat" class="py-nam [...]
+<a name="L216"></a><tt class="py-lineno"> 216</tt>  <tt class="py-line">                                    <tt class="py-name">parse_errors</tt><tt class="py-op">)</tt> </tt>
+<a name="L217"></a><tt class="py-lineno"> 217</tt>  <tt class="py-line">         </tt>
+<a name="L218"></a><tt class="py-lineno"> 218</tt>  <tt class="py-line">    <tt class="py-comment"># Divide the docstring into a description and a list of</tt> </tt>
+<a name="L219"></a><tt class="py-lineno"> 219</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># fields.</tt> </tt>
+<a name="L220"></a><tt class="py-lineno"> 220</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-70" class="py-name" targets="Variable epydoc.apidoc.APIDoc.descr=epydoc.apidoc.APIDoc-class.html#descr,Variable epydoc.cli.descr=epydoc.cli-module.html#descr,Method epydoc.docwriter.html.HTMLWriter.descr()=epydoc.docwriter.html.HTMLWriter-class.html#descr,Method epydoc.markup.ParseError.descr()=epydoc.markup.ParseError-class.html#descr,Method epydoc.markup.epytext.Colorizi [...]
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-70', 'descr', 'link-70');">descr</a></tt><tt class="py-op">,</tt> <tt class="py-name">fields</tt> <tt class="py-op">=</tt> <tt class="py-name">parsed_docstring</tt><tt class="py-op">.</tt><tt id="link-71" class="py-name" targets="Method epydoc.markup.ConcatenatedDocstring.split_fields()=epydoc.markup.ConcatenatedDocstring-class.html#split_fields,Method epydoc.markup.ParsedDocstring.split_f [...]
+epydoc.markup.ParsedDocstring.split_fields
+epydoc.markup.epytext.ParsedEpytextDocstring.split_fields
+epydoc.markup.javadoc.ParsedJavadocDocstring.split_fields
+epydoc.markup.restructuredtext.ParsedRstDocstring.split_fields" class="py-name" href="#" onclick="return doclink('link-71', 'split_fields', 'link-71');">split_fields</a></tt><tt class="py-op">(</tt><tt class="py-name">parse_errors</tt><tt class="py-op">)</tt> </tt>
+<a name="L221"></a><tt class="py-lineno"> 221</tt>  <tt class="py-line">    <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-72" class="py-name"><a title="epydoc.apidoc.APIDoc.descr
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-72', 'descr', 'link-70');">descr</a></tt> <tt class="py-op">=</tt> <tt id="link-73" class="py-name"><a title="epydoc.apidoc.APIDoc.descr
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-73', 'descr', 'link-70');">descr</a></tt> </tt>
+<a name="L222"></a><tt class="py-lineno"> 222</tt>  <tt class="py-line"> </tt>
+<a name="L223"></a><tt class="py-lineno"> 223</tt>  <tt class="py-line">    <tt class="py-name">field_warnings</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L224"></a><tt class="py-lineno"> 224</tt>  <tt class="py-line"> </tt>
+<a name="L225"></a><tt class="py-lineno"> 225</tt>  <tt class="py-line">    <tt class="py-comment"># Handle the constructor fields that have been defined in the class</tt> </tt>
+<a name="L226"></a><tt class="py-lineno"> 226</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># docstring. This code assumes that a class docstring is parsed before</tt> </tt>
+<a name="L227"></a><tt class="py-lineno"> 227</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># the same class __init__ docstring.</tt> </tt>
+<a name="L228"></a><tt class="py-lineno"> 228</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt id="link-74" class="py-name" targets="Class epydoc.apidoc.ClassDoc=epydoc.apidoc.ClassDoc-class.html"><a title="epydoc.apidoc.ClassDoc" class="py-name" href="#" onclick="return doclink('link-74', 'ClassDoc', 'link-74');">ClassDoc</a></tt [...]
+<a name="L229"></a><tt class="py-lineno"> 229</tt>  <tt class="py-line"> </tt>
+<a name="L230"></a><tt class="py-lineno"> 230</tt>  <tt class="py-line">        <tt class="py-comment"># Parse ahead the __init__ docstring for this class</tt> </tt>
+<a name="L231"></a><tt class="py-lineno"> 231</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">initvar</tt> <tt class="py-op">=</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-75" class="py-name" targets="Variable epydoc.apidoc.NamespaceDoc.variables=epydoc.apidoc.NamespaceDoc-class.html#variables"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-75', 'variables', 'link-75');" [...]
+<a name="L232"></a><tt class="py-lineno"> 232</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">initvar</tt> <tt class="py-keyword">and</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">initvar</tt><tt class="py-op">.</tt><tt id="link-76" class="py-name" targets="Variable epydoc.apidoc.VariableDoc.value=epydoc.apidoc.VariableDoc-class.html#value"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclic [...]
+<a name="L233"></a><tt class="py-lineno"> 233</tt>  <tt class="py-line">            <tt class="py-name">init_api_doc</tt> <tt class="py-op">=</tt> <tt class="py-name">initvar</tt><tt class="py-op">.</tt><tt id="link-78" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-78', 'value', 'link-76');">value</a></tt> </tt>
+<a name="L234"></a><tt class="py-lineno"> 234</tt>  <tt class="py-line">            <tt id="link-79" class="py-name" targets="Function epydoc.docstringparser.parse_docstring()=epydoc.docstringparser-module.html#parse_docstring,Function epydoc.markup.epytext.parse_docstring()=epydoc.markup.epytext-module.html#parse_docstring,Function epydoc.markup.javadoc.parse_docstring()=epydoc.markup.javadoc-module.html#parse_docstring,Function epydoc.markup.plaintext.parse_docstring()=epydoc.markup.pl [...]
+epydoc.markup.epytext.parse_docstring
+epydoc.markup.javadoc.parse_docstring
+epydoc.markup.plaintext.parse_docstring
+epydoc.markup.restructuredtext.parse_docstring" class="py-name" href="#" onclick="return doclink('link-79', 'parse_docstring', 'link-79');">parse_docstring</a></tt><tt class="py-op">(</tt><tt class="py-name">init_api_doc</tt><tt class="py-op">,</tt> <tt class="py-name">docindex</tt><tt class="py-op">,</tt> <tt class="py-name">suppress_warnings</tt><tt class="py-op">)</tt> </tt>
+<a name="L235"></a><tt class="py-lineno"> 235</tt>  <tt class="py-line"> </tt>
+<a name="L236"></a><tt class="py-lineno"> 236</tt>  <tt class="py-line">            <tt id="link-80" class="py-name"><a title="epydoc.docstringparser.parse_function_signature" class="py-name" href="#" onclick="return doclink('link-80', 'parse_function_signature', 'link-64');">parse_function_signature</a></tt><tt class="py-op">(</tt><tt class="py-name">init_api_doc</tt><tt class="py-op">,</tt> <tt class="py-name">api_doc</tt><tt class="py-op">,</tt> </tt>
+<a name="L237"></a><tt class="py-lineno"> 237</tt>  <tt class="py-line">                                     <tt id="link-81" class="py-name"><a title="epydoc.apidoc.ModuleDoc.docformat" class="py-name" href="#" onclick="return doclink('link-81', 'docformat', 'link-61');">docformat</a></tt><tt class="py-op">,</tt> <tt class="py-name">parse_errors</tt><tt class="py-op">)</tt> </tt>
+<a name="L238"></a><tt class="py-lineno"> 238</tt>  <tt class="py-line">            <tt class="py-name">init_fields</tt> <tt class="py-op">=</tt> <tt id="link-82" class="py-name" targets="Function epydoc.docstringparser.split_init_fields()=epydoc.docstringparser-module.html#split_init_fields"><a title="epydoc.docstringparser.split_init_fields" class="py-name" href="#" onclick="return doclink('link-82', 'split_init_fields', 'link-82');">split_init_fields</a></tt><tt class="py-op">(</tt><t [...]
+<a name="L239"></a><tt class="py-lineno"> 239</tt>  <tt class="py-line"> </tt>
+<a name="L240"></a><tt class="py-lineno"> 240</tt>  <tt class="py-line">            <tt class="py-comment"># Process fields</tt> </tt>
+<a name="L241"></a><tt class="py-lineno"> 241</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">for</tt> <tt class="py-name">field</tt> <tt class="py-keyword">in</tt> <tt class="py-name">init_fields</tt><tt class="py-op">:</tt> </tt>
+<a name="L242"></a><tt class="py-lineno"> 242</tt>  <tt class="py-line">                <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L243"></a><tt class="py-lineno"> 243</tt>  <tt class="py-line">                    <tt id="link-83" class="py-name" targets="Function epydoc.docstringparser.process_field()=epydoc.docstringparser-module.html#process_field"><a title="epydoc.docstringparser.process_field" class="py-name" href="#" onclick="return doclink('link-83', 'process_field', 'link-83');">process_field</a></tt><tt class="py-op">(</tt><tt class="py-name">init_api_doc</tt><tt class="py-op">,</tt> <tt class="py- [...]
+<a name="L244"></a><tt class="py-lineno"> 244</tt>  <tt class="py-line">                                    <tt class="py-name">field</tt><tt class="py-op">.</tt><tt id="link-85" class="py-name" targets="Method epydoc.markup.Field.arg()=epydoc.markup.Field-class.html#arg"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-85', 'arg', 'link-85');">arg</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name" [...]
+<a name="L245"></a><tt class="py-lineno"> 245</tt>  <tt class="py-line">                <tt class="py-keyword">except</tt> <tt class="py-name">ValueError</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> <tt class="py-name">field_warnings</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L246"></a><tt class="py-lineno"> 246</tt>  <tt class="py-line"> </tt>
+<a name="L247"></a><tt class="py-lineno"> 247</tt>  <tt class="py-line">    <tt class="py-comment"># Process fields</tt> </tt>
+<a name="L248"></a><tt class="py-lineno"> 248</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">for</tt> <tt class="py-name">field</tt> <tt class="py-keyword">in</tt> <tt class="py-name">fields</tt><tt class="py-op">:</tt> </tt>
+<a name="L249"></a><tt class="py-lineno"> 249</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L250"></a><tt class="py-lineno"> 250</tt>  <tt class="py-line">            <tt id="link-87" class="py-name"><a title="epydoc.docstringparser.process_field" class="py-name" href="#" onclick="return doclink('link-87', 'process_field', 'link-83');">process_field</a></tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt class="py-name">docindex</tt><tt class="py-op">,</tt> <tt class="py-name">field</tt><tt class="py-op">.</tt><tt id="link-88" class [...]
+<a name="L251"></a><tt class="py-lineno"> 251</tt>  <tt class="py-line">                               <tt class="py-name">field</tt><tt class="py-op">.</tt><tt id="link-89" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-89', 'arg', 'link-85');">arg</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">field</tt><tt class="py-op">.</tt><tt id="link-90" class="py-name"><a title="epydo [...]
+<a name="L252"></a><tt class="py-lineno"> 252</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">ValueError</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> <tt class="py-name">field_warnings</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L253"></a><tt class="py-lineno"> 253</tt>  <tt class="py-line"> </tt>
+<a name="L254"></a><tt class="py-lineno"> 254</tt>  <tt class="py-line">    <tt class="py-comment"># Check to make sure that all type parameters correspond to</tt> </tt>
+<a name="L255"></a><tt class="py-lineno"> 255</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># some documented parameter.</tt> </tt>
+<a name="L256"></a><tt class="py-lineno"> 256</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-91" class="py-name" targets="Function epydoc.docstringparser.check_type_fields()=epydoc.docstringparser-module.html#check_type_fields"><a title="epydoc.docstringparser.check_type_fields" class="py-name" href="#" onclick="return doclink('link-91', 'check_type_fields', 'link-91');">check_type_fields</a></tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="p [...]
+<a name="L257"></a><tt class="py-lineno"> 257</tt>  <tt class="py-line"> </tt>
+<a name="L258"></a><tt class="py-lineno"> 258</tt>  <tt class="py-line">    <tt class="py-comment"># Check for special variables (e.g., __version__)</tt> </tt>
+<a name="L259"></a><tt class="py-lineno"> 259</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt id="link-92" class="py-name"><a title="epydoc.apidoc.NamespaceDoc" class="py-name" href="#" onclick="return doclink('link-92', 'NamespaceDoc', 'link-54');">NamespaceDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L260"></a><tt class="py-lineno"> 260</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">field</tt> <tt class="py-keyword">in</tt> <tt id="link-93" class="py-name"><a title="epydoc.docstringparser.STANDARD_FIELDS" class="py-name" href="#" onclick="return doclink('link-93', 'STANDARD_FIELDS', 'link-20');">STANDARD_FIELDS</a></tt> <tt class="py-op">+</tt> <tt id="link-94" class="py-name"><a title="epydoc.docstringparser.user_docfields" class="py-n [...]
+<a name="L261"></a><tt class="py-lineno"> 261</tt>  <tt class="py-line">            <tt id="link-95" class="py-name"><a title="epydoc.docstringparser.add_metadata_from_var" class="py-name" href="#" onclick="return doclink('link-95', 'add_metadata_from_var', 'link-57');">add_metadata_from_var</a></tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt class="py-name">field</tt><tt class="py-op">)</tt> </tt>
+<a name="L262"></a><tt class="py-lineno"> 262</tt>  <tt class="py-line"> </tt>
+<a name="L263"></a><tt class="py-lineno"> 263</tt>  <tt class="py-line">    <tt class="py-comment"># Extract a summary</tt> </tt>
+<a name="L264"></a><tt class="py-lineno"> 264</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-96" class="py-name" targets="Variable epydoc.apidoc.APIDoc.summary=epydoc.apidoc.APIDoc-class.html#summary,Method epydoc.docwriter.html.HTMLWriter.summary()=epydoc.docwriter.html.HTMLWriter-class.html#summary,Method epydoc.markup.ConcatenatedDocstring.summary()=epydoc.markup.Concatenated [...]
+epydoc.docwriter.html.HTMLWriter.summary
+epydoc.markup.ConcatenatedDocstring.summary
+epydoc.markup.ParsedDocstring.summary
+epydoc.markup.epytext.ParsedEpytextDocstring.summary
+epydoc.markup.javadoc.ParsedJavadocDocstring.summary
+epydoc.markup.plaintext.ParsedPlaintextDocstring.summary
+epydoc.markup.restructuredtext.ParsedRstDocstring.summary" class="py-name" href="#" onclick="return doclink('link-96', 'summary', 'link-96');">summary</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-97" class="py-name"><a title="epydoc.apidoc.APIDoc.descr
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-97', 'descr', 'link-70');">descr</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L265"></a><tt class="py-lineno"> 265</tt>  <tt class="py-line">        <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-98" class="py-name"><a title="epydoc.apidoc.APIDoc.summary
+epydoc.docwriter.html.HTMLWriter.summary
+epydoc.markup.ConcatenatedDocstring.summary
+epydoc.markup.ParsedDocstring.summary
+epydoc.markup.epytext.ParsedEpytextDocstring.summary
+epydoc.markup.javadoc.ParsedJavadocDocstring.summary
+epydoc.markup.plaintext.ParsedPlaintextDocstring.summary
+epydoc.markup.restructuredtext.ParsedRstDocstring.summary" class="py-name" href="#" onclick="return doclink('link-98', 'summary', 'link-96');">summary</a></tt><tt class="py-op">,</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-99" class="py-name" targets="Variable epydoc.apidoc.APIDoc.other_docs=epydoc.apidoc.APIDoc-class.html#other_docs"><a title="epydoc.apidoc.APIDoc.other_docs" class="py-name" href="#" onclick="return doclink('link-99', 'other_docs', 'link-99 [...]
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-100', 'descr', 'link-70');">descr</a></tt><tt class="py-op">.</tt><tt id="link-101" class="py-name"><a title="epydoc.apidoc.APIDoc.summary
+epydoc.docwriter.html.HTMLWriter.summary
+epydoc.markup.ConcatenatedDocstring.summary
+epydoc.markup.ParsedDocstring.summary
+epydoc.markup.epytext.ParsedEpytextDocstring.summary
+epydoc.markup.javadoc.ParsedJavadocDocstring.summary
+epydoc.markup.plaintext.ParsedPlaintextDocstring.summary
+epydoc.markup.restructuredtext.ParsedRstDocstring.summary" class="py-name" href="#" onclick="return doclink('link-101', 'summary', 'link-96');">summary</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L266"></a><tt class="py-lineno"> 266</tt>  <tt class="py-line"> </tt>
+<a name="L267"></a><tt class="py-lineno"> 267</tt>  <tt class="py-line">    <tt class="py-comment"># If the summary is empty, but the return field is not, then use</tt> </tt>
+<a name="L268"></a><tt class="py-lineno"> 268</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># the return field to generate a summary description.</tt> </tt>
+<a name="L269"></a><tt class="py-lineno"> 269</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt id="link-102" class="py-name"><a title="epydoc.apidoc.RoutineDoc" class="py-name" href="#" onclick="return doclink('link-102', 'RoutineDoc', 'link-46');">RoutineDoc</a></tt><tt class="py-op">)</tt> <tt class="py-k [...]
+epydoc.docwriter.html.HTMLWriter.summary
+epydoc.markup.ConcatenatedDocstring.summary
+epydoc.markup.ParsedDocstring.summary
+epydoc.markup.epytext.ParsedEpytextDocstring.summary
+epydoc.markup.javadoc.ParsedJavadocDocstring.summary
+epydoc.markup.plaintext.ParsedPlaintextDocstring.summary
+epydoc.markup.restructuredtext.ParsedRstDocstring.summary" class="py-name" href="#" onclick="return doclink('link-103', 'summary', 'link-96');">summary</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L270"></a><tt class="py-lineno"> 270</tt>  <tt class="py-line">        <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-104" class="py-name" targets="Variable epydoc.apidoc.RoutineDoc.return_descr=epydoc.apidoc.RoutineDoc-class.html#return_descr,Method epydoc.docwriter.html.HTMLWriter.return_descr()=epydoc.docwriter.html.HTMLWriter-class.html#return_descr"><a title="epydoc.apidoc.RoutineDoc.return_descr
+epydoc.docwriter.html.HTMLWriter.return_descr" class="py-name" href="#" onclick="return doclink('link-104', 'return_descr', 'link-104');">return_descr</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L271"></a><tt class="py-lineno"> 271</tt>  <tt class="py-line">        <tt class="py-name">s</tt><tt class="py-op">,</tt> <tt class="py-name">o</tt> <tt class="py-op">=</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-105" class="py-name"><a title="epydoc.apidoc.RoutineDoc.return_descr
+epydoc.docwriter.html.HTMLWriter.return_descr" class="py-name" href="#" onclick="return doclink('link-105', 'return_descr', 'link-104');">return_descr</a></tt><tt class="py-op">.</tt><tt id="link-106" class="py-name"><a title="epydoc.apidoc.APIDoc.summary
+epydoc.docwriter.html.HTMLWriter.summary
+epydoc.markup.ConcatenatedDocstring.summary
+epydoc.markup.ParsedDocstring.summary
+epydoc.markup.epytext.ParsedEpytextDocstring.summary
+epydoc.markup.javadoc.ParsedJavadocDocstring.summary
+epydoc.markup.plaintext.ParsedPlaintextDocstring.summary
+epydoc.markup.restructuredtext.ParsedRstDocstring.summary" class="py-name" href="#" onclick="return doclink('link-106', 'summary', 'link-96');">summary</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L272"></a><tt class="py-lineno"> 272</tt>  <tt class="py-line">        <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-107" class="py-name"><a title="epydoc.apidoc.APIDoc.summary
+epydoc.docwriter.html.HTMLWriter.summary
+epydoc.markup.ConcatenatedDocstring.summary
+epydoc.markup.ParsedDocstring.summary
+epydoc.markup.epytext.ParsedEpytextDocstring.summary
+epydoc.markup.javadoc.ParsedJavadocDocstring.summary
+epydoc.markup.plaintext.ParsedPlaintextDocstring.summary
+epydoc.markup.restructuredtext.ParsedRstDocstring.summary" class="py-name" href="#" onclick="return doclink('link-107', 'summary', 'link-96');">summary</a></tt> <tt class="py-op">=</tt> <tt id="link-108" class="py-name" targets="Variable epydoc.docstringparser.RETURN_PDS=epydoc.docstringparser-module.html#RETURN_PDS"><a title="epydoc.docstringparser.RETURN_PDS" class="py-name" href="#" onclick="return doclink('link-108', 'RETURN_PDS', 'link-108');">RETURN_PDS</a></tt> <tt class="py-op">+ [...]
+<a name="L273"></a><tt class="py-lineno"> 273</tt>  <tt class="py-line">        <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-109" class="py-name"><a title="epydoc.apidoc.APIDoc.other_docs" class="py-name" href="#" onclick="return doclink('link-109', 'other_docs', 'link-99');">other_docs</a></tt> <tt class="py-op">=</tt> <tt class="py-name">o</tt> </tt>
+<a name="L274"></a><tt class="py-lineno"> 274</tt>  <tt class="py-line"> </tt>
+<a name="L275"></a><tt class="py-lineno"> 275</tt>  <tt class="py-line">    <tt class="py-comment"># [XX] Make sure we don't have types/param descrs for unknown</tt> </tt>
+<a name="L276"></a><tt class="py-lineno"> 276</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># vars/params?</tt> </tt>
+<a name="L277"></a><tt class="py-lineno"> 277</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L278"></a><tt class="py-lineno"> 278</tt>  <tt class="py-line">    <tt class="py-comment"># Report any errors that occured</tt> </tt>
+<a name="L279"></a><tt class="py-lineno"> 279</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">api_doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">suppress_warnings</tt><tt class="py-op">:</tt> </tt>
+<a name="L280"></a><tt class="py-lineno"> 280</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">parse_errors</tt> <tt class="py-keyword">or</tt> <tt class="py-name">field_warnings</tt><tt class="py-op">:</tt> </tt>
+<a name="L281"></a><tt class="py-lineno"> 281</tt>  <tt class="py-line">            <tt id="link-110" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-110', 'log', 'link-14');">log</a></tt><tt class="py-op">.</tt><tt id="link-111" class="py-name" targets="Function epydoc.log.info()=epydoc.log-module.html#info"><a title="epydoc.log.info" class="py-name" href="#" onclick="return doclink('link-111', 'info', 'link-111');">info</a></tt><tt class="py-op">(</tt><tt class="py-string">"Suppressing docstring warnings for %s, since it "</tt> </tt>
+<a name="L282"></a><tt class="py-lineno"> 282</tt>  <tt class="py-line">                     <tt class="py-string">"is not included in the documented set."</tt> <tt class="py-op">%</tt> </tt>
+<a name="L283"></a><tt class="py-lineno"> 283</tt>  <tt class="py-line">                     <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-112" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-112', 'canonical_name', 'link-47');">canonical_name</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L284"></a><tt class="py-lineno"> 284</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L285"></a><tt class="py-lineno"> 285</tt>  <tt class="py-line">        <tt id="link-113" class="py-name" targets="Function epydoc.docstringparser.report_errors()=epydoc.docstringparser-module.html#report_errors"><a title="epydoc.docstringparser.report_errors" class="py-name" href="#" onclick="return doclink('link-113', 'report_errors', 'link-113');">report_errors</a></tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt class="py-name">docindex [...]
+</div><a name="L286"></a><tt class="py-lineno"> 286</tt>  <tt class="py-line"> </tt>
+<a name="add_metadata_from_var"></a><div id="add_metadata_from_var-def"><a name="L287"></a><tt class="py-lineno"> 287</tt> <a class="py-toggle" href="#" id="add_metadata_from_var-toggle" onclick="return toggle('add_metadata_from_var');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docstringparser-module.html#add_metadata_from_var">add_metadata_from_var</a><tt class="py-op">(</tt><tt class="py-param">api_doc</tt><tt class="py-op">,</tt> <tt  [...]
+</div><div id="add_metadata_from_var-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="add_metadata_from_var-expanded"><a name="L288"></a><tt class="py-lineno"> 288</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">varname</tt> <tt class="py-keyword">in</tt> <tt class="py-name">field</tt><tt class="py-op">.</tt><tt class="py-name">varnames</tt><tt class="py-op">:</tt> </tt>
+<a name="L289"></a><tt class="py-lineno"> 289</tt>  <tt class="py-line">        <tt class="py-comment"># Check if api_doc has a variable w/ the given name.</tt> </tt>
+<a name="L290"></a><tt class="py-lineno"> 290</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">varname</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-114" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-114', 'variables', 'link-75');">variables</a></tt><tt class="py- [...]
+<a name="L291"></a><tt class="py-lineno"> 291</tt>  <tt class="py-line"> </tt>
+<a name="L292"></a><tt class="py-lineno"> 292</tt>  <tt class="py-line">        <tt class="py-comment"># Check moved here from before the for loop because we expect to</tt> </tt>
+<a name="L293"></a><tt class="py-lineno"> 293</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># reach rarely this point. The loop below is to be performed more than</tt> </tt>
+<a name="L294"></a><tt class="py-lineno"> 294</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># once only for fields with more than one varname, which currently is</tt> </tt>
+<a name="L295"></a><tt class="py-lineno"> 295</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># only 'author'.</tt> </tt>
+<a name="L296"></a><tt class="py-lineno"> 296</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">for</tt> <tt class="py-name">md</tt> <tt class="py-keyword">in</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-115" class="py-name"><a title="epydoc.apidoc.APIDoc.metadata" class="py-name" href="#" onclick="return doclink('link-115', 'metadata', 'link-44');">metadata</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L297"></a><tt class="py-lineno"> 297</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">field</tt> <tt class="py-op">==</tt> <tt class="py-name">md</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L298"></a><tt class="py-lineno"> 298</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-comment"># We already have a value for this metadata.</tt> </tt>
+<a name="L299"></a><tt class="py-lineno"> 299</tt>  <tt class="py-line"> </tt>
+<a name="L300"></a><tt class="py-lineno"> 300</tt>  <tt class="py-line">        <tt class="py-name">var_doc</tt> <tt class="py-op">=</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-116" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-116', 'variables', 'link-75');">variables</a></tt><tt class="py-op">[</tt><tt class="py-name">varname</tt><tt class="py-op">]</tt> </tt>
+<a name="L301"></a><tt class="py-lineno"> 301</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-117" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-117', 'value', 'link-76');">value</a></tt> <tt class="py-keyword">is</tt> <tt id="link-118" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('li [...]
+<a name="L302"></a><tt class="py-lineno"> 302</tt>  <tt class="py-line">        <tt class="py-name">val_doc</tt> <tt class="py-op">=</tt> <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-119" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-119', 'value', 'link-76');">value</a></tt> </tt>
+<a name="L303"></a><tt class="py-lineno"> 303</tt>  <tt class="py-line">        <tt id="link-120" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-120', 'value', 'link-76');">value</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L304"></a><tt class="py-lineno"> 304</tt>  <tt class="py-line"> </tt>
+<a name="L305"></a><tt class="py-lineno"> 305</tt>  <tt class="py-line">        <tt class="py-comment"># Try extracting the value from the pyval.</tt> </tt>
+<a name="L306"></a><tt class="py-lineno"> 306</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">ok_types</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">basestring</tt><tt class="py-op">,</tt> <tt class="py-name">int</tt><tt class="py-op">,</tt> <tt class="py-name">float</tt><tt class="py-op">,</tt> <tt class="py-name">bool</tt><tt class="py-op">,</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">None</ [...]
+<a name="L307"></a><tt class="py-lineno"> 307</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">val_doc</tt><tt class="py-op">.</tt><tt id="link-121" class="py-name" targets="Variable epydoc.apidoc.ValueDoc.pyval=epydoc.apidoc.ValueDoc-class.html#pyval"><a title="epydoc.apidoc.ValueDoc.pyval" class="py-name" href="#" onclick="return doclink('link-121', 'pyval', 'link-121');">pyval</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> < [...]
+<a name="L308"></a><tt class="py-lineno"> 308</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">val_doc</tt><tt class="py-op">.</tt><tt id="link-123" class="py-name"><a title="epydoc.apidoc.ValueDoc.pyval" class="py-name" href="#" onclick="return doclink('link-123', 'pyval', 'link-121');">pyval</a></tt><tt class="py-op">,</tt> <tt class="py-name">ok_types</tt><tt class="py-op">)</tt><tt clas [...]
+<a name="L309"></a><tt class="py-lineno"> 309</tt>  <tt class="py-line">                <tt id="link-124" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-124', 'value', 'link-76');">value</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">val_doc</tt><tt class="py-op">.</tt><tt id="link-125" class="py-name"><a title="epydoc.apidoc.ValueDoc.pyval" class="py-name" href="#" onclick="return doclink(' [...]
+<a name="L310"></a><tt class="py-lineno"> 310</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">field</tt><tt class="py-op">.</tt><tt class="py-name">multivalue</tt><tt class="py-op">:</tt> </tt>
+<a name="L311"></a><tt class="py-lineno"> 311</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">val_doc</tt><tt class="py-op">.</tt><tt id="link-126" class="py-name"><a title="epydoc.apidoc.ValueDoc.pyval" class="py-name" href="#" onclick="return doclink('link-126', 'pyval', 'link-121');">pyval</a></tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">tuple</tt><tt cla [...]
+<a name="L312"></a><tt class="py-lineno"> 312</tt>  <tt class="py-line">                    <tt class="py-keyword">for</tt> <tt class="py-name">elt</tt> <tt class="py-keyword">in</tt> <tt class="py-name">val_doc</tt><tt class="py-op">.</tt><tt id="link-127" class="py-name"><a title="epydoc.apidoc.ValueDoc.pyval" class="py-name" href="#" onclick="return doclink('link-127', 'pyval', 'link-121');">pyval</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L313"></a><tt class="py-lineno"> 313</tt>  <tt class="py-line">                        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">elt</tt><tt class="py-op">,</tt> <tt class="py-name">ok_types</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-keyword">break</tt> </tt>
+<a name="L314"></a><tt class="py-lineno"> 314</tt>  <tt class="py-line">                    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L315"></a><tt class="py-lineno"> 315</tt>  <tt class="py-line">                        <tt id="link-128" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-128', 'value', 'link-76');">value</a></tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">val_doc</tt><tt class="py-op">.</tt><tt id="link-129" class="py-name"><a title="epydoc.apidoc.ValueDoc.pyval" class="py-nam [...]
+<a name="L316"></a><tt class="py-lineno"> 316</tt>  <tt class="py-line"> </tt>
+<a name="L317"></a><tt class="py-lineno"> 317</tt>  <tt class="py-line">        <tt class="py-comment"># Try extracting the value from the parse tree.</tt> </tt>
+<a name="L318"></a><tt class="py-lineno"> 318</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">elif</tt> <tt class="py-name">val_doc</tt><tt class="py-op">.</tt><tt id="link-130" class="py-name" targets="Variable epydoc.apidoc.ValueDoc.toktree=epydoc.apidoc.ValueDoc-class.html#toktree"><a title="epydoc.apidoc.ValueDoc.toktree" class="py-name" href="#" onclick="return doclink('link-130', 'toktree', 'link-130');">toktree</a></tt> <tt class="py-keyword">i [...]
+<a name="L319"></a><tt class="py-lineno"> 319</tt>  <tt class="py-line">            <tt class="py-keyword">try</tt><tt class="py-op">:</tt> <tt id="link-132" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-132', 'value', 'link-76');">value</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt id="link-133" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-133', 'epydoc', 'link [...]
+<a name="L320"></a><tt class="py-lineno"> 320</tt>  <tt class="py-line">            <tt class="py-keyword">except</tt> <tt class="py-name">KeyboardInterrupt</tt><tt class="py-op">:</tt> <tt class="py-keyword">raise</tt> </tt>
+<a name="L321"></a><tt class="py-lineno"> 321</tt>  <tt class="py-line">            <tt class="py-keyword">except</tt><tt class="py-op">:</tt> <tt class="py-keyword">pass</tt> </tt>
+<a name="L322"></a><tt class="py-lineno"> 322</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">field</tt><tt class="py-op">.</tt><tt class="py-name">multivalue</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt id="link-137" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-137', 'value', 'link-76');">value</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L323"></a><tt class="py-lineno"> 323</tt>  <tt class="py-line">                <tt class="py-keyword">try</tt><tt class="py-op">:</tt> <tt id="link-138" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-138', 'value', 'link-76');">value</a></tt> <tt class="py-op">=</tt> <tt id="link-139" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-139', 'epydoc', 'link-0');">epydoc</a></t [...]
+<a name="L324"></a><tt class="py-lineno"> 324</tt>  <tt class="py-line">                <tt class="py-keyword">except</tt> <tt class="py-name">KeyboardInterrupt</tt><tt class="py-op">:</tt> <tt class="py-keyword">raise</tt> </tt>
+<a name="L325"></a><tt class="py-lineno"> 325</tt>  <tt class="py-line">                <tt class="py-keyword">except</tt><tt class="py-op">:</tt> <tt class="py-keyword">raise</tt> </tt>
+<a name="L326"></a><tt class="py-lineno"> 326</tt>  <tt class="py-line">                 </tt>
+<a name="L327"></a><tt class="py-lineno"> 327</tt>  <tt class="py-line">        <tt class="py-comment"># Add any values that we found.</tt> </tt>
+<a name="L328"></a><tt class="py-lineno"> 328</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">for</tt> <tt class="py-name">elt</tt> <tt class="py-keyword">in</tt> <tt id="link-143" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-143', 'value', 'link-76');">value</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L329"></a><tt class="py-lineno"> 329</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">elt</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L330"></a><tt class="py-lineno"> 330</tt>  <tt class="py-line">                <tt class="py-name">elt</tt> <tt class="py-op">=</tt> <tt id="link-144" class="py-name" targets="Function epydoc.util.decode_with_backslashreplace()=epydoc.util-module.html#decode_with_backslashreplace"><a title="epydoc.util.decode_with_backslashreplace" class="py-name" href="#" onclick="return doclink('link-144', 'decode_with_backslashreplace', 'link-144');">decode_with_backslashreplace</a></tt><tt c [...]
+<a name="L331"></a><tt class="py-lineno"> 331</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L332"></a><tt class="py-lineno"> 332</tt>  <tt class="py-line">                <tt class="py-name">elt</tt> <tt class="py-op">=</tt> <tt class="py-name">unicode</tt><tt class="py-op">(</tt><tt class="py-name">elt</tt><tt class="py-op">)</tt> </tt>
+<a name="L333"></a><tt class="py-lineno"> 333</tt>  <tt class="py-line">            <tt class="py-name">elt</tt> <tt class="py-op">=</tt> <tt id="link-145" class="py-name"><a title="epydoc.markup.epytext" class="py-name" href="#" onclick="return doclink('link-145', 'epytext', 'link-4');">epytext</a></tt><tt class="py-op">.</tt><tt id="link-146" class="py-name" targets="Class epydoc.markup.epytext.ParsedEpytextDocstring=epydoc.markup.epytext.ParsedEpytextDocstring-class.html"><a title="ep [...]
+<a name="L334"></a><tt class="py-lineno"> 334</tt>  <tt class="py-line">                <tt id="link-147" class="py-name"><a title="epydoc.markup.epytext" class="py-name" href="#" onclick="return doclink('link-147', 'epytext', 'link-4');">epytext</a></tt><tt class="py-op">.</tt><tt id="link-148" class="py-name" targets="Function epydoc.markup.epytext.parse_as_para()=epydoc.markup.epytext-module.html#parse_as_para"><a title="epydoc.markup.epytext.parse_as_para" class="py-name" href="#" on [...]
+<a name="L335"></a><tt class="py-lineno"> 335</tt>  <tt class="py-line"> </tt>
+<a name="L336"></a><tt class="py-lineno"> 336</tt>  <tt class="py-line">            <tt class="py-comment"># Add in the metadata and remove from the variables</tt> </tt>
+<a name="L337"></a><tt class="py-lineno"> 337</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-149" class="py-name"><a title="epydoc.apidoc.APIDoc.metadata" class="py-name" href="#" onclick="return doclink('link-149', 'metadata', 'link-44');">metadata</a></tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt> <tt class="py-op">(</tt><tt class="py-name">field</tt><tt class="p [...]
+<a name="L338"></a><tt class="py-lineno"> 338</tt>  <tt class="py-line"> </tt>
+<a name="L339"></a><tt class="py-lineno"> 339</tt>  <tt class="py-line">        <tt class="py-comment"># Remove the variable itself (unless it's documented)</tt> </tt>
+<a name="L340"></a><tt class="py-lineno"> 340</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-150" class="py-name"><a title="epydoc.apidoc.APIDoc.docstring" class="py-name" href="#" onclick="return doclink('link-150', 'docstring', 'link-52');">docstring</a></tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id [...]
+<a name="L341"></a><tt class="py-lineno"> 341</tt>  <tt class="py-line">            <tt class="py-keyword">del</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-152" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-152', 'variables', 'link-75');">variables</a></tt><tt class="py-op">[</tt><tt class="py-name">varname</tt><tt class="py-op">]</tt> </tt>
+<a name="L342"></a><tt class="py-lineno"> 342</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-153" class="py-name" targets="Variable epydoc.apidoc.NamespaceDoc.sort_spec=epydoc.apidoc.NamespaceDoc-class.html#sort_spec"><a title="epydoc.apidoc.NamespaceDoc.sort_spec" class="py-name" href="#" onclick="return doclink('link-153', 'sort_spec', 'link-153');">sort_spec</a></tt> <tt class="py-keyword">is</t [...]
+<a name="L343"></a><tt class="py-lineno"> 343</tt>  <tt class="py-line">                <tt class="py-keyword">try</tt><tt class="py-op">:</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-155" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.sort_spec" class="py-name" href="#" onclick="return doclink('link-155', 'sort_spec', 'link-153');">sort_spec</a></tt><tt class="py-op">.</tt><tt class="py-name">remove</tt><tt class="py-op">(</tt><tt class="py-name">varna [...]
+<a name="L344"></a><tt class="py-lineno"> 344</tt>  <tt class="py-line">                <tt class="py-keyword">except</tt> <tt class="py-name">ValueError</tt><tt class="py-op">:</tt> <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L345"></a><tt class="py-lineno"> 345</tt>  <tt class="py-line"> </tt>
+<a name="initialize_api_doc"></a><div id="initialize_api_doc-def"><a name="L346"></a><tt class="py-lineno"> 346</tt> <a class="py-toggle" href="#" id="initialize_api_doc-toggle" onclick="return toggle('initialize_api_doc');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docstringparser-module.html#initialize_api_doc">initialize_api_doc</a><tt class="py-op">(</tt><tt class="py-param">api_doc</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="initialize_api_doc-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="initialize_api_doc-expanded"><a name="L347"></a><tt class="py-lineno"> 347</tt>  <tt class="py-line">    <tt class="py-docstring">"""A helper function for L{parse_docstring()} that initializes</tt> </tt>
+<a name="L348"></a><tt class="py-lineno"> 348</tt>  <tt class="py-line"><tt class="py-docstring">    the attributes that C{parse_docstring()} will write to."""</tt> </tt>
+<a name="L349"></a><tt class="py-lineno"> 349</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-156" class="py-name"><a title="epydoc.apidoc.APIDoc.descr
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-156', 'descr', 'link-70');">descr</a></tt> <tt class="py-keyword">is</tt> <tt id="link-157" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-157', 'UNKNOWN', 'link-45');">UNKNOWN</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L350"></a><tt class="py-lineno"> 350</tt>  <tt class="py-line">        <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-158" class="py-name"><a title="epydoc.apidoc.APIDoc.descr
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-158', 'descr', 'link-70');">descr</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L351"></a><tt class="py-lineno"> 351</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-159" class="py-name"><a title="epydoc.apidoc.APIDoc.summary
+epydoc.docwriter.html.HTMLWriter.summary
+epydoc.markup.ConcatenatedDocstring.summary
+epydoc.markup.ParsedDocstring.summary
+epydoc.markup.epytext.ParsedEpytextDocstring.summary
+epydoc.markup.javadoc.ParsedJavadocDocstring.summary
+epydoc.markup.plaintext.ParsedPlaintextDocstring.summary
+epydoc.markup.restructuredtext.ParsedRstDocstring.summary" class="py-name" href="#" onclick="return doclink('link-159', 'summary', 'link-96');">summary</a></tt> <tt class="py-keyword">is</tt> <tt id="link-160" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-160', 'UNKNOWN', 'link-45');">UNKNOWN</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L352"></a><tt class="py-lineno"> 352</tt>  <tt class="py-line">        <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-161" class="py-name"><a title="epydoc.apidoc.APIDoc.summary
+epydoc.docwriter.html.HTMLWriter.summary
+epydoc.markup.ConcatenatedDocstring.summary
+epydoc.markup.ParsedDocstring.summary
+epydoc.markup.epytext.ParsedEpytextDocstring.summary
+epydoc.markup.javadoc.ParsedJavadocDocstring.summary
+epydoc.markup.plaintext.ParsedPlaintextDocstring.summary
+epydoc.markup.restructuredtext.ParsedRstDocstring.summary" class="py-name" href="#" onclick="return doclink('link-161', 'summary', 'link-96');">summary</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L353"></a><tt class="py-lineno"> 353</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-162" class="py-name"><a title="epydoc.apidoc.APIDoc.metadata" class="py-name" href="#" onclick="return doclink('link-162', 'metadata', 'link-44');">metadata</a></tt> <tt class="py-keyword">is</tt> <tt id="link-163" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('li [...]
+<a name="L354"></a><tt class="py-lineno"> 354</tt>  <tt class="py-line">        <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-164" class="py-name"><a title="epydoc.apidoc.APIDoc.metadata" class="py-name" href="#" onclick="return doclink('link-164', 'metadata', 'link-44');">metadata</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L355"></a><tt class="py-lineno"> 355</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt id="link-165" class="py-name"><a title="epydoc.apidoc.RoutineDoc" class="py-name" href="#" onclick="return doclink('link-165', 'RoutineDoc', 'link-46');">RoutineDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L356"></a><tt class="py-lineno"> 356</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-166" class="py-name" targets="Variable epydoc.apidoc.RoutineDoc.arg_descrs=epydoc.apidoc.RoutineDoc-class.html#arg_descrs"><a title="epydoc.apidoc.RoutineDoc.arg_descrs" class="py-name" href="#" onclick="return doclink('link-166', 'arg_descrs', 'link-166');">arg_descrs</a></tt> <tt class="py-keyword">is</tt> <t [...]
+<a name="L357"></a><tt class="py-lineno"> 357</tt>  <tt class="py-line">            <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-168" class="py-name"><a title="epydoc.apidoc.RoutineDoc.arg_descrs" class="py-name" href="#" onclick="return doclink('link-168', 'arg_descrs', 'link-166');">arg_descrs</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L358"></a><tt class="py-lineno"> 358</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-169" class="py-name" targets="Variable epydoc.apidoc.RoutineDoc.arg_types=epydoc.apidoc.RoutineDoc-class.html#arg_types"><a title="epydoc.apidoc.RoutineDoc.arg_types" class="py-name" href="#" onclick="return doclink('link-169', 'arg_types', 'link-169');">arg_types</a></tt> <tt class="py-keyword">is</tt> <tt id= [...]
+<a name="L359"></a><tt class="py-lineno"> 359</tt>  <tt class="py-line">            <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-171" class="py-name"><a title="epydoc.apidoc.RoutineDoc.arg_types" class="py-name" href="#" onclick="return doclink('link-171', 'arg_types', 'link-169');">arg_types</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L360"></a><tt class="py-lineno"> 360</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-172" class="py-name"><a title="epydoc.apidoc.RoutineDoc.return_descr
+epydoc.docwriter.html.HTMLWriter.return_descr" class="py-name" href="#" onclick="return doclink('link-172', 'return_descr', 'link-104');">return_descr</a></tt> <tt class="py-keyword">is</tt> <tt id="link-173" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-173', 'UNKNOWN', 'link-45');">UNKNOWN</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L361"></a><tt class="py-lineno"> 361</tt>  <tt class="py-line">            <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-174" class="py-name"><a title="epydoc.apidoc.RoutineDoc.return_descr
+epydoc.docwriter.html.HTMLWriter.return_descr" class="py-name" href="#" onclick="return doclink('link-174', 'return_descr', 'link-104');">return_descr</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L362"></a><tt class="py-lineno"> 362</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-175" class="py-name" targets="Variable epydoc.apidoc.RoutineDoc.return_type=epydoc.apidoc.RoutineDoc-class.html#return_type,Method epydoc.docwriter.html.HTMLWriter.return_type()=epydoc.docwriter.html.HTMLWriter-class.html#return_type"><a title="epydoc.apidoc.RoutineDoc.return_type
+epydoc.docwriter.html.HTMLWriter.return_type" class="py-name" href="#" onclick="return doclink('link-175', 'return_type', 'link-175');">return_type</a></tt> <tt class="py-keyword">is</tt> <tt id="link-176" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-176', 'UNKNOWN', 'link-45');">UNKNOWN</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L363"></a><tt class="py-lineno"> 363</tt>  <tt class="py-line">            <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-177" class="py-name"><a title="epydoc.apidoc.RoutineDoc.return_type
+epydoc.docwriter.html.HTMLWriter.return_type" class="py-name" href="#" onclick="return doclink('link-177', 'return_type', 'link-175');">return_type</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L364"></a><tt class="py-lineno"> 364</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-178" class="py-name" targets="Variable epydoc.apidoc.RoutineDoc.exception_descrs=epydoc.apidoc.RoutineDoc-class.html#exception_descrs"><a title="epydoc.apidoc.RoutineDoc.exception_descrs" class="py-name" href="#" onclick="return doclink('link-178', 'exception_descrs', 'link-178');">exception_descrs</a></tt> <tt [...]
+<a name="L365"></a><tt class="py-lineno"> 365</tt>  <tt class="py-line">            <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-180" class="py-name"><a title="epydoc.apidoc.RoutineDoc.exception_descrs" class="py-name" href="#" onclick="return doclink('link-180', 'exception_descrs', 'link-178');">exception_descrs</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L366"></a><tt class="py-lineno"> 366</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt id="link-181" class="py-name" targets="Class epydoc.apidoc.VariableDoc=epydoc.apidoc.VariableDoc-class.html"><a title="epydoc.apidoc.VariableDoc" class="py-name" href="#" onclick="return doclink('link-181', 'VariableDoc', 'link-181');">Varia [...]
+<a name="L367"></a><tt class="py-lineno"> 367</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-183" class="py-name" targets="Variable epydoc.apidoc.PropertyDoc.type_descr=epydoc.apidoc.PropertyDoc-class.html#type_descr,Variable epydoc.apidoc.VariableDoc.type_descr=epydoc.apidoc.VariableDoc-class.html#type_descr,Method epydoc.docwriter.html.HTMLWriter.type_descr()=epydoc.docwriter.html.HTMLWriter-class.ht [...]
+epydoc.apidoc.VariableDoc.type_descr
+epydoc.docwriter.html.HTMLWriter.type_descr" class="py-name" href="#" onclick="return doclink('link-183', 'type_descr', 'link-183');">type_descr</a></tt> <tt class="py-keyword">is</tt> <tt id="link-184" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-184', 'UNKNOWN', 'link-45');">UNKNOWN</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L368"></a><tt class="py-lineno"> 368</tt>  <tt class="py-line">            <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-185" class="py-name"><a title="epydoc.apidoc.PropertyDoc.type_descr
+epydoc.apidoc.VariableDoc.type_descr
+epydoc.docwriter.html.HTMLWriter.type_descr" class="py-name" href="#" onclick="return doclink('link-185', 'type_descr', 'link-183');">type_descr</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L369"></a><tt class="py-lineno"> 369</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt id="link-186" class="py-name"><a title="epydoc.apidoc.NamespaceDoc" class="py-name" href="#" onclick="return doclink('link-186', 'NamespaceDoc', 'link-54');">NamespaceDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L370"></a><tt class="py-lineno"> 370</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-187" class="py-name" targets="Variable epydoc.apidoc.NamespaceDoc.group_specs=epydoc.apidoc.NamespaceDoc-class.html#group_specs"><a title="epydoc.apidoc.NamespaceDoc.group_specs" class="py-name" href="#" onclick="return doclink('link-187', 'group_specs', 'link-187');">group_specs</a></tt> <tt class="py-keyword" [...]
+<a name="L371"></a><tt class="py-lineno"> 371</tt>  <tt class="py-line">            <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-189" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.group_specs" class="py-name" href="#" onclick="return doclink('link-189', 'group_specs', 'link-187');">group_specs</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L372"></a><tt class="py-lineno"> 372</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-190" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.sort_spec" class="py-name" href="#" onclick="return doclink('link-190', 'sort_spec', 'link-153');">sort_spec</a></tt> <tt class="py-keyword">is</tt> <tt id="link-191" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="retu [...]
+<a name="L373"></a><tt class="py-lineno"> 373</tt>  <tt class="py-line">            <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-192" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.sort_spec" class="py-name" href="#" onclick="return doclink('link-192', 'sort_spec', 'link-153');">sort_spec</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+</div><a name="L374"></a><tt class="py-lineno"> 374</tt>  <tt class="py-line"> </tt>
+<a name="split_init_fields"></a><div id="split_init_fields-def"><a name="L375"></a><tt class="py-lineno"> 375</tt> <a class="py-toggle" href="#" id="split_init_fields-toggle" onclick="return toggle('split_init_fields');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docstringparser-module.html#split_init_fields">split_init_fields</a><tt class="py-op">(</tt><tt class="py-param">fields</tt><tt class="py-op">,</tt> <tt class="py-param">warnings [...]
+</div><div id="split_init_fields-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="split_init_fields-expanded"><a name="L376"></a><tt class="py-lineno"> 376</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L377"></a><tt class="py-lineno"> 377</tt>  <tt class="py-line"><tt class="py-docstring">    Remove the fields related to the constructor from a class docstring</tt> </tt>
+<a name="L378"></a><tt class="py-lineno"> 378</tt>  <tt class="py-line"><tt class="py-docstring">    fields list.</tt> </tt>
+<a name="L379"></a><tt class="py-lineno"> 379</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L380"></a><tt class="py-lineno"> 380</tt>  <tt class="py-line"><tt class="py-docstring">    @param fields: The fields to process. The list will be modified in place</tt> </tt>
+<a name="L381"></a><tt class="py-lineno"> 381</tt>  <tt class="py-line"><tt class="py-docstring">    @type fields: C{list} of L{markup.Field}</tt> </tt>
+<a name="L382"></a><tt class="py-lineno"> 382</tt>  <tt class="py-line"><tt class="py-docstring">    @param warnings: A list to emit processing warnings</tt> </tt>
+<a name="L383"></a><tt class="py-lineno"> 383</tt>  <tt class="py-line"><tt class="py-docstring">    @type warnings: C{list}</tt> </tt>
+<a name="L384"></a><tt class="py-lineno"> 384</tt>  <tt class="py-line"><tt class="py-docstring">    @return: The C{fields} items to be applied to the C{__init__} method</tt> </tt>
+<a name="L385"></a><tt class="py-lineno"> 385</tt>  <tt class="py-line"><tt class="py-docstring">    @rtype: C{list} of L{markup.Field}</tt> </tt>
+<a name="L386"></a><tt class="py-lineno"> 386</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L387"></a><tt class="py-lineno"> 387</tt>  <tt class="py-line">    <tt class="py-name">init_fields</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L388"></a><tt class="py-lineno"> 388</tt>  <tt class="py-line"> </tt>
+<a name="L389"></a><tt class="py-lineno"> 389</tt>  <tt class="py-line">    <tt class="py-comment"># Split fields in lists according to their argument, keeping order.</tt> </tt>
+<a name="L390"></a><tt class="py-lineno"> 390</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">arg_fields</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L391"></a><tt class="py-lineno"> 391</tt>  <tt class="py-line">    <tt class="py-name">args_order</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L392"></a><tt class="py-lineno"> 392</tt>  <tt class="py-line">    <tt class="py-name">i</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L393"></a><tt class="py-lineno"> 393</tt>  <tt class="py-line">    <tt class="py-keyword">while</tt> <tt class="py-name">i</tt> <tt class="py-op"><</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">fields</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L394"></a><tt class="py-lineno"> 394</tt>  <tt class="py-line">        <tt class="py-name">field</tt> <tt class="py-op">=</tt> <tt class="py-name">fields</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt> </tt>
+<a name="L395"></a><tt class="py-lineno"> 395</tt>  <tt class="py-line"> </tt>
+<a name="L396"></a><tt class="py-lineno"> 396</tt>  <tt class="py-line">        <tt class="py-comment"># gather together all the fields with the same arg</tt> </tt>
+<a name="L397"></a><tt class="py-lineno"> 397</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">field</tt><tt class="py-op">.</tt><tt id="link-193" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-193', 'arg', 'link-85');">arg</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None< [...]
+<a name="L398"></a><tt class="py-lineno"> 398</tt>  <tt class="py-line">            <tt class="py-name">arg_fields</tt><tt class="py-op">.</tt><tt class="py-name">setdefault</tt><tt class="py-op">(</tt><tt class="py-name">field</tt><tt class="py-op">.</tt><tt id="link-194" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-194', 'arg', 'link-85');">arg</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> < [...]
+<a name="L399"></a><tt class="py-lineno"> 399</tt>  <tt class="py-line">            <tt class="py-name">args_order</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">field</tt><tt class="py-op">.</tt><tt id="link-195" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-195', 'arg', 'link-85');">arg</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L400"></a><tt class="py-lineno"> 400</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L401"></a><tt class="py-lineno"> 401</tt>  <tt class="py-line">            <tt class="py-name">i</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L402"></a><tt class="py-lineno"> 402</tt>  <tt class="py-line"> </tt>
+<a name="L403"></a><tt class="py-lineno"> 403</tt>  <tt class="py-line">    <tt class="py-comment"># Now check that for each argument there is at most a single variable</tt> </tt>
+<a name="L404"></a><tt class="py-lineno"> 404</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># and a single parameter, and at most a single type for each of them.</tt> </tt>
+<a name="L405"></a><tt class="py-lineno"> 405</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">for</tt> <tt id="link-196" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-196', 'arg', 'link-85');">arg</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">args_order</tt><tt class="py-op">:</tt> </tt>
+<a name="L406"></a><tt class="py-lineno"> 406</tt>  <tt class="py-line">        <tt class="py-name">ff</tt> <tt class="py-op">=</tt> <tt class="py-name">arg_fields</tt><tt class="py-op">.</tt><tt class="py-name">pop</tt><tt class="py-op">(</tt><tt id="link-197" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-197', 'arg', 'link-85');">arg</a></tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+<a name="L407"></a><tt class="py-lineno"> 407</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">ff</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L408"></a><tt class="py-lineno"> 408</tt>  <tt class="py-line">            <tt class="py-keyword">continue</tt> </tt>
+<a name="L409"></a><tt class="py-lineno"> 409</tt>  <tt class="py-line"> </tt>
+<a name="L410"></a><tt class="py-lineno"> 410</tt>  <tt class="py-line">        <tt class="py-name">var</tt> <tt class="py-op">=</tt> <tt class="py-name">tvar</tt> <tt class="py-op">=</tt> <tt class="py-name">par</tt> <tt class="py-op">=</tt> <tt class="py-name">tpar</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L411"></a><tt class="py-lineno"> 411</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">field</tt> <tt class="py-keyword">in</tt> <tt class="py-name">ff</tt><tt class="py-op">:</tt> </tt>
+<a name="L412"></a><tt class="py-lineno"> 412</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">field</tt><tt class="py-op">.</tt><tt id="link-198" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-198', 'tag', 'link-84');">tag</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt id="link-199" class="py-name" targets="Variable epydoc.docstringparser.VARIAB [...]
+<a name="L413"></a><tt class="py-lineno"> 413</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">var</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L414"></a><tt class="py-lineno"> 414</tt>  <tt class="py-line">                    <tt class="py-name">var</tt> <tt class="py-op">=</tt> <tt class="py-name">field</tt> </tt>
+<a name="L415"></a><tt class="py-lineno"> 415</tt>  <tt class="py-line">                    <tt class="py-name">fields</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">field</tt><tt class="py-op">)</tt> </tt>
+<a name="L416"></a><tt class="py-lineno"> 416</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L417"></a><tt class="py-lineno"> 417</tt>  <tt class="py-line">                    <tt class="py-name">warnings</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt> </tt>
+<a name="L418"></a><tt class="py-lineno"> 418</tt>  <tt class="py-line">                        <tt class="py-string">"There is more than one variable named '%s'"</tt> </tt>
+<a name="L419"></a><tt class="py-lineno"> 419</tt>  <tt class="py-line">                        <tt class="py-op">%</tt> <tt id="link-200" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-200', 'arg', 'link-85');">arg</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L420"></a><tt class="py-lineno"> 420</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">field</tt><tt class="py-op">.</tt><tt id="link-201" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-201', 'tag', 'link-84');">tag</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt id="link-202" class="py-name" targets="Variable epydoc.docstringparser.PARA [...]
+<a name="L421"></a><tt class="py-lineno"> 421</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">par</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L422"></a><tt class="py-lineno"> 422</tt>  <tt class="py-line">                    <tt class="py-name">par</tt> <tt class="py-op">=</tt> <tt class="py-name">field</tt> </tt>
+<a name="L423"></a><tt class="py-lineno"> 423</tt>  <tt class="py-line">                    <tt class="py-name">init_fields</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">field</tt><tt class="py-op">)</tt> </tt>
+<a name="L424"></a><tt class="py-lineno"> 424</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L425"></a><tt class="py-lineno"> 425</tt>  <tt class="py-line">                    <tt class="py-name">warnings</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt> </tt>
+<a name="L426"></a><tt class="py-lineno"> 426</tt>  <tt class="py-line">                        <tt class="py-string">"There is more than one parameter named '%s'"</tt> </tt>
+<a name="L427"></a><tt class="py-lineno"> 427</tt>  <tt class="py-line">                        <tt class="py-op">%</tt> <tt id="link-203" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-203', 'arg', 'link-85');">arg</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L428"></a><tt class="py-lineno"> 428</tt>  <tt class="py-line"> </tt>
+<a name="L429"></a><tt class="py-lineno"> 429</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">field</tt><tt class="py-op">.</tt><tt id="link-204" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-204', 'tag', 'link-84');">tag</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-string">'type'</tt><tt class="py-op">:</tt> </tt>
+<a name="L430"></a><tt class="py-lineno"> 430</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">var</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-name">par</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L431"></a><tt class="py-lineno"> 431</tt>  <tt class="py-line">                    <tt class="py-comment"># type before obj</tt> </tt>
+<a name="L432"></a><tt class="py-lineno"> 432</tt>  <tt class="py-line"><tt class="py-comment"></tt>                    <tt class="py-name">tvar</tt> <tt class="py-op">=</tt> <tt class="py-name">tpar</tt> <tt class="py-op">=</tt> <tt class="py-name">field</tt> </tt>
+<a name="L433"></a><tt class="py-lineno"> 433</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L434"></a><tt class="py-lineno"> 434</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">var</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-name">tvar</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L435"></a><tt class="py-lineno"> 435</tt>  <tt class="py-line">                        <tt class="py-name">tvar</tt> <tt class="py-op">=</tt> <tt class="py-name">field</tt> </tt>
+<a name="L436"></a><tt class="py-lineno"> 436</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">par</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-name">tpar</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L437"></a><tt class="py-lineno"> 437</tt>  <tt class="py-line">                        <tt class="py-name">tpar</tt> <tt class="py-op">=</tt> <tt class="py-name">field</tt> </tt>
+<a name="L438"></a><tt class="py-lineno"> 438</tt>  <tt class="py-line"> </tt>
+<a name="L439"></a><tt class="py-lineno"> 439</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">field</tt><tt class="py-op">.</tt><tt id="link-205" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-205', 'tag', 'link-84');">tag</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt id="link-206" class="py-name" targets="Variable epydoc.docstringparser.EXCE [...]
+<a name="L440"></a><tt class="py-lineno"> 440</tt>  <tt class="py-line">                <tt class="py-name">init_fields</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">field</tt><tt class="py-op">)</tt> </tt>
+<a name="L441"></a><tt class="py-lineno"> 441</tt>  <tt class="py-line"> </tt>
+<a name="L442"></a><tt class="py-lineno"> 442</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> <tt class="py-comment"># Unespected field</tt> </tt>
+<a name="L443"></a><tt class="py-lineno"> 443</tt>  <tt class="py-line">                <tt class="py-name">fields</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">field</tt><tt class="py-op">)</tt> </tt>
+<a name="L444"></a><tt class="py-lineno"> 444</tt>  <tt class="py-line"> </tt>
+<a name="L445"></a><tt class="py-lineno"> 445</tt>  <tt class="py-line">        <tt class="py-comment"># Put selected types into the proper output lists</tt> </tt>
+<a name="L446"></a><tt class="py-lineno"> 446</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">tvar</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L447"></a><tt class="py-lineno"> 447</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">var</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L448"></a><tt class="py-lineno"> 448</tt>  <tt class="py-line">                <tt class="py-name">fields</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">tvar</tt><tt class="py-op">)</tt> </tt>
+<a name="L449"></a><tt class="py-lineno"> 449</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L450"></a><tt class="py-lineno"> 450</tt>  <tt class="py-line">                <tt class="py-keyword">pass</tt> <tt class="py-comment"># [xx] warn about type w/o object?</tt> </tt>
+<a name="L451"></a><tt class="py-lineno"> 451</tt>  <tt class="py-line"> </tt>
+<a name="L452"></a><tt class="py-lineno"> 452</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">tpar</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L453"></a><tt class="py-lineno"> 453</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">par</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L454"></a><tt class="py-lineno"> 454</tt>  <tt class="py-line">                <tt class="py-name">init_fields</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">tpar</tt><tt class="py-op">)</tt> </tt>
+<a name="L455"></a><tt class="py-lineno"> 455</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L456"></a><tt class="py-lineno"> 456</tt>  <tt class="py-line">                <tt class="py-keyword">pass</tt> <tt class="py-comment"># [xx] warn about type w/o object?</tt> </tt>
+<a name="L457"></a><tt class="py-lineno"> 457</tt>  <tt class="py-line"> </tt>
+<a name="L458"></a><tt class="py-lineno"> 458</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">init_fields</tt> </tt>
+</div><a name="L459"></a><tt class="py-lineno"> 459</tt>  <tt class="py-line"> </tt>
+<a name="report_errors"></a><div id="report_errors-def"><a name="L460"></a><tt class="py-lineno"> 460</tt> <a class="py-toggle" href="#" id="report_errors-toggle" onclick="return toggle('report_errors');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docstringparser-module.html#report_errors">report_errors</a><tt class="py-op">(</tt><tt class="py-param">api_doc</tt><tt class="py-op">,</tt> <tt class="py-param">docindex</tt><tt class="py-op"> [...]
+</div><div id="report_errors-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="report_errors-expanded"><a name="L461"></a><tt class="py-lineno"> 461</tt>  <tt class="py-line">    <tt class="py-docstring">"""A helper function for L{parse_docstring()} that reports any</tt> </tt>
+<a name="L462"></a><tt class="py-lineno"> 462</tt>  <tt class="py-line"><tt class="py-docstring">    markup warnings and field warnings that we encountered while</tt> </tt>
+<a name="L463"></a><tt class="py-lineno"> 463</tt>  <tt class="py-line"><tt class="py-docstring">    processing C{api_doc}'s docstring."""</tt> </tt>
+<a name="L464"></a><tt class="py-lineno"> 464</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">parse_errors</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">field_warnings</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> </tt>
+<a name="L465"></a><tt class="py-lineno"> 465</tt>  <tt class="py-line"> </tt>
+<a name="L466"></a><tt class="py-lineno"> 466</tt>  <tt class="py-line">    <tt class="py-comment"># Get the name of the item containing the error, and the</tt> </tt>
+<a name="L467"></a><tt class="py-lineno"> 467</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># filename of its containing module.</tt> </tt>
+<a name="L468"></a><tt class="py-lineno"> 468</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-207" class="py-name" targets="Variable epydoc.apidoc.VariableDoc.name=epydoc.apidoc.VariableDoc-class.html#name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-207', 'name', 'link-207');">name</a></tt> <tt class="py-op">=</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-208" class="py-name"><a title [...]
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-208', 'canonical_name', 'link-47');">canonical_name</a></tt> </tt>
+<a name="L469"></a><tt class="py-lineno"> 469</tt>  <tt class="py-line">    <tt class="py-name">module</tt> <tt class="py-op">=</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-209" class="py-name" targets="Variable epydoc.apidoc.ValueDoc.defining_module=epydoc.apidoc.ValueDoc-class.html#defining_module,Variable epydoc.apidoc.VariableDoc.defining_module=epydoc.apidoc.VariableDoc-class.html#defining_module"><a title="epydoc.apidoc.ValueDoc.defining_module
+epydoc.apidoc.VariableDoc.defining_module" class="py-name" href="#" onclick="return doclink('link-209', 'defining_module', 'link-209');">defining_module</a></tt> </tt>
+<a name="L470"></a><tt class="py-lineno"> 470</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">module</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt id="link-210" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-210', 'UNKNOWN', 'link-45');">UNKNOWN</a></tt> <tt class="py-keyword">and</tt> <tt class="py-name">module</tt><tt class="py-op">.</tt><tt id="link-211" class="py-name"  [...]
+<a name="L471"></a><tt class="py-lineno"> 471</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> <tt id="link-213" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-213', 'filename', 'link-211');">filename</a></tt> <tt class="py-op">=</tt> <tt id="link-214" class="py-name"><a title="epydoc.util.py_src_filename" class="py-name" href="#" onclick="return doclink('link-214', 'py_src_filena [...]
+<a name="L472"></a><tt class="py-lineno"> 472</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt><tt class="py-op">:</tt> <tt id="link-216" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-216', 'filename', 'link-211');">filename</a></tt> <tt class="py-op">=</tt> <tt class="py-name">module</tt><tt class="py-op">.</tt><tt id="link-217" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-na [...]
+<a name="L473"></a><tt class="py-lineno"> 473</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L474"></a><tt class="py-lineno"> 474</tt>  <tt class="py-line">        <tt id="link-218" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-218', 'filename', 'link-211');">filename</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'??'</tt> </tt>
+<a name="L475"></a><tt class="py-lineno"> 475</tt>  <tt class="py-line"> </tt>
+<a name="L476"></a><tt class="py-lineno"> 476</tt>  <tt class="py-line">    <tt class="py-comment"># [xx] Don't report markup errors for standard builtins.</tt> </tt>
+<a name="L477"></a><tt class="py-lineno"> 477</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># n.b. that we must use 'is' to compare pyvals here -- if we use</tt> </tt>
+<a name="L478"></a><tt class="py-lineno"> 478</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># 'in' or '==', then a user __cmp__ method might raise an</tt> </tt>
+<a name="L479"></a><tt class="py-lineno"> 479</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># exception, or lie.</tt> </tt>
+<a name="L480"></a><tt class="py-lineno"> 480</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt id="link-219" class="py-name" targets="Class epydoc.apidoc.ValueDoc=epydoc.apidoc.ValueDoc-class.html"><a title="epydoc.apidoc.ValueDoc" class="py-name" href="#" onclick="return doclink('link-219', 'ValueDoc', 'link-219');">ValueDoc</a>< [...]
+<a name="L481"></a><tt class="py-lineno"> 481</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">module</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-220" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-220', 'UNKNOWN', 'link-45');">UNKNOWN</a></tt><tt class="py-op">)</tt> <tt class="py-k [...]
+<a name="L482"></a><tt class="py-lineno"> 482</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> </tt>
+<a name="L483"></a><tt class="py-lineno"> 483</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">builtin_val</tt> <tt class="py-keyword">in</tt> <tt class="py-name">__builtin__</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">.</tt><tt class="py-name">values</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L484"></a><tt class="py-lineno"> 484</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">builtin_val</tt> <tt class="py-keyword">is</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-222" class="py-name"><a title="epydoc.apidoc.ValueDoc.pyval" class="py-name" href="#" onclick="return doclink('link-222', 'pyval', 'link-121');">pyval</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L485"></a><tt class="py-lineno"> 485</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> </tt>
+<a name="L486"></a><tt class="py-lineno"> 486</tt>  <tt class="py-line">         </tt>
+<a name="L487"></a><tt class="py-lineno"> 487</tt>  <tt class="py-line">    <tt class="py-comment"># Get the start line of the docstring containing the error.</tt> </tt>
+<a name="L488"></a><tt class="py-lineno"> 488</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">startline</tt> <tt class="py-op">=</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-223" class="py-name" targets="Variable epydoc.apidoc.APIDoc.docstring_lineno=epydoc.apidoc.APIDoc-class.html#docstring_lineno"><a title="epydoc.apidoc.APIDoc.docstring_lineno" class="py-name" href="#" onclick="return doclink('link-223', 'docstring_lineno', 'l [...]
+<a name="L489"></a><tt class="py-lineno"> 489</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">startline</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-224" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-224', 'UNKNOWN', 'link-45');">UNKNOWN</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L490"></a><tt class="py-lineno"> 490</tt>  <tt class="py-line">        <tt class="py-name">startline</tt> <tt class="py-op">=</tt> <tt id="link-225" class="py-name"><a title="epydoc.docintrospecter.introspect_docstring_lineno" class="py-name" href="#" onclick="return doclink('link-225', 'introspect_docstring_lineno', 'link-9');">introspect_docstring_lineno</a></tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">)</tt> </tt>
+<a name="L491"></a><tt class="py-lineno"> 491</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">startline</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-226" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-226', 'UNKNOWN', 'link-45');">UNKNOWN</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L492"></a><tt class="py-lineno"> 492</tt>  <tt class="py-line">            <tt class="py-name">startline</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L493"></a><tt class="py-lineno"> 493</tt>  <tt class="py-line"> </tt>
+<a name="L494"></a><tt class="py-lineno"> 494</tt>  <tt class="py-line">    <tt class="py-comment"># Display a block header.</tt> </tt>
+<a name="L495"></a><tt class="py-lineno"> 495</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">header</tt> <tt class="py-op">=</tt> <tt class="py-string">'File %s, '</tt> <tt class="py-op">%</tt> <tt id="link-227" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-227', 'filename', 'link-211');">filename</a></tt> </tt>
+<a name="L496"></a><tt class="py-lineno"> 496</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">startline</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L497"></a><tt class="py-lineno"> 497</tt>  <tt class="py-line">        <tt class="py-name">header</tt> <tt class="py-op">+=</tt> <tt class="py-string">'line %d, '</tt> <tt class="py-op">%</tt> <tt class="py-name">startline</tt> </tt>
+<a name="L498"></a><tt class="py-lineno"> 498</tt>  <tt class="py-line">    <tt class="py-name">header</tt> <tt class="py-op">+=</tt> <tt class="py-string">'in %s'</tt> <tt class="py-op">%</tt> <tt id="link-228" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-228', 'name', 'link-207');">name</a></tt> </tt>
+<a name="L499"></a><tt class="py-lineno"> 499</tt>  <tt class="py-line">    <tt id="link-229" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-229', 'log', 'link-14');">log</a></tt><tt class="py-op">.</tt><tt id="link-230" class="py-name" targets="Method epydoc.cli.ConsoleLogger.start_block()=epydoc.cli.ConsoleLogger-class.html#start_block,Method epydoc.cli.HTMLLogger.start_block()=epydoc.cli.HTMLLogger-class.html#start_block,Method epydoc.gui.GUILogger.start_block()=epydoc.gui.GUILogger-class.html#start_block,Method epydoc.log.Logger.start_bloc [...]
+epydoc.cli.HTMLLogger.start_block
+epydoc.gui.GUILogger.start_block
+epydoc.log.Logger.start_block
+epydoc.log.start_block" class="py-name" href="#" onclick="return doclink('link-230', 'start_block', 'link-230');">start_block</a></tt><tt class="py-op">(</tt><tt class="py-name">header</tt><tt class="py-op">)</tt> </tt>
+<a name="L500"></a><tt class="py-lineno"> 500</tt>  <tt class="py-line">     </tt>
+<a name="L501"></a><tt class="py-lineno"> 501</tt>  <tt class="py-line"> </tt>
+<a name="L502"></a><tt class="py-lineno"> 502</tt>  <tt class="py-line">    <tt class="py-comment"># Display all parse errors.  But first, combine any errors</tt> </tt>
+<a name="L503"></a><tt class="py-lineno"> 503</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># with duplicate description messages.</tt> </tt>
+<a name="L504"></a><tt class="py-lineno"> 504</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">startline</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L505"></a><tt class="py-lineno"> 505</tt>  <tt class="py-line">        <tt class="py-comment"># remove dups, but keep original order:</tt> </tt>
+<a name="L506"></a><tt class="py-lineno"> 506</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">dups</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L507"></a><tt class="py-lineno"> 507</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt id="link-231" class="py-name" targets="Function epydoc.log.error()=epydoc.log-module.html#error"><a title="epydoc.log.error" class="py-name" href="#" onclick="return doclink('link-231', 'error', 'link-231');">error</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">parse_errors</tt><tt class="py-op">:</tt> </tt>
+<a name="L508"></a><tt class="py-lineno"> 508</tt>  <tt class="py-line">            <tt class="py-name">message</tt> <tt class="py-op">=</tt> <tt id="link-232" class="py-name"><a title="epydoc.log.error" class="py-name" href="#" onclick="return doclink('link-232', 'error', 'link-231');">error</a></tt><tt class="py-op">.</tt><tt id="link-233" class="py-name"><a title="epydoc.apidoc.APIDoc.descr
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-233', 'descr', 'link-70');">descr</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L509"></a><tt class="py-lineno"> 509</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">message</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">dups</tt><tt class="py-op">:</tt> </tt>
+<a name="L510"></a><tt class="py-lineno"> 510</tt>  <tt class="py-line">                <tt id="link-234" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-234', 'log', 'link-14');">log</a></tt><tt class="py-op">.</tt><tt id="link-235" class="py-name" targets="Function epydoc.log.docstring_warning()=epydoc.log-module.html#docstring_warning"><a title="epydoc.log.docstring_warning" class="py-name" href="#" onclick="return doclink('link-235', 'docstring_warning', 'link-235');">docstring_warning</a></tt><tt class="py-op">(</tt><tt class="py-name">message</tt><tt [...]
+<a name="L511"></a><tt class="py-lineno"> 511</tt>  <tt class="py-line">                <tt class="py-name">dups</tt><tt class="py-op">[</tt><tt class="py-name">message</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L512"></a><tt class="py-lineno"> 512</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L513"></a><tt class="py-lineno"> 513</tt>  <tt class="py-line">        <tt class="py-comment"># Combine line number fields for dup messages:</tt> </tt>
+<a name="L514"></a><tt class="py-lineno"> 514</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">messages</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> <tt class="py-comment"># maps message -> list of linenum</tt> </tt>
+<a name="L515"></a><tt class="py-lineno"> 515</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt id="link-236" class="py-name"><a title="epydoc.log.error" class="py-name" href="#" onclick="return doclink('link-236', 'error', 'link-231');">error</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">parse_errors</tt><tt class="py-op">:</tt> </tt>
+<a name="L516"></a><tt class="py-lineno"> 516</tt>  <tt class="py-line">            <tt id="link-237" class="py-name"><a title="epydoc.log.error" class="py-name" href="#" onclick="return doclink('link-237', 'error', 'link-231');">error</a></tt><tt class="py-op">.</tt><tt id="link-238" class="py-name" targets="Method epydoc.markup.ParseError.set_linenum_offset()=epydoc.markup.ParseError-class.html#set_linenum_offset"><a title="epydoc.markup.ParseError.set_linenum_offset" class="py-name" h [...]
+<a name="L517"></a><tt class="py-lineno"> 517</tt>  <tt class="py-line">            <tt class="py-name">message</tt> <tt class="py-op">=</tt> <tt id="link-239" class="py-name"><a title="epydoc.log.error" class="py-name" href="#" onclick="return doclink('link-239', 'error', 'link-231');">error</a></tt><tt class="py-op">.</tt><tt id="link-240" class="py-name"><a title="epydoc.apidoc.APIDoc.descr
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-240', 'descr', 'link-70');">descr</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L518"></a><tt class="py-lineno"> 518</tt>  <tt class="py-line">            <tt class="py-name">messages</tt><tt class="py-op">.</tt><tt class="py-name">setdefault</tt><tt class="py-op">(</tt><tt class="py-name">message</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-241" class="py-name"><a title="epydoc.log.error" class="py-name" href=" [...]
+<a name="L519"></a><tt class="py-lineno"> 519</tt>  <tt class="py-line">        <tt class="py-name">message_items</tt> <tt class="py-op">=</tt> <tt class="py-name">messages</tt><tt class="py-op">.</tt><tt class="py-name">items</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L520"></a><tt class="py-lineno"> 520</tt>  <tt class="py-line">        <tt class="py-name">message_items</tt><tt class="py-op">.</tt><tt class="py-name">sort</tt><tt class="py-op">(</tt><tt class="py-keyword">lambda</tt> <tt class="py-name">a</tt><tt class="py-op">,</tt><tt class="py-name">b</tt><tt class="py-op">:</tt><tt class="py-name">cmp</tt><tt class="py-op">(</tt><tt class="py-name">min</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">[</tt><tt clas [...]
+<a name="L521"></a><tt class="py-lineno"> 521</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">message</tt><tt class="py-op">,</tt> <tt class="py-name">linenums</tt> <tt class="py-keyword">in</tt> <tt class="py-name">message_items</tt><tt class="py-op">:</tt> </tt>
+<a name="L522"></a><tt class="py-lineno"> 522</tt>  <tt class="py-line">            <tt class="py-name">linenums</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">n</tt> <tt class="py-keyword">for</tt> <tt class="py-name">n</tt> <tt class="py-keyword">in</tt> <tt class="py-name">linenums</tt> <tt class="py-keyword">if</tt> <tt class="py-name">n</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">]</tt> </tt>
+<a name="L523"></a><tt class="py-lineno"> 523</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">linenums</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L524"></a><tt class="py-lineno"> 524</tt>  <tt class="py-line">                <tt id="link-243" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-243', 'log', 'link-14');">log</a></tt><tt class="py-op">.</tt><tt id="link-244" class="py-name"><a title="epydoc.log.docstring_warning" class="py-name" href="#" onclick="return doclink('link-244', 'docstring_warning', 'link-235');">docstring_warning</a></tt><tt class="py-op">(</tt><tt class="py-name">message</tt><tt class="py-op">)</tt> </tt>
+<a name="L525"></a><tt class="py-lineno"> 525</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">linenums</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L526"></a><tt class="py-lineno"> 526</tt>  <tt class="py-line">                <tt id="link-245" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-245', 'log', 'link-14');">log</a></tt><tt class="py-op">.</tt><tt id="link-246" class="py-name"><a title="epydoc.log.docstring_warning" class="py-name" href="#" onclick="return doclink('link-246', 'docstring_warning', 'link-235');">docstring_warning</a></tt><tt class="py-op">(</tt><tt class="py-string">"Line %s: %s"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">linenums</tt><tt [...]
+<a name="L527"></a><tt class="py-lineno"> 527</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L528"></a><tt class="py-lineno"> 528</tt>  <tt class="py-line">                <tt class="py-name">linenums</tt> <tt class="py-op">=</tt> <tt class="py-string">', '</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">'%s'</tt> <tt class="py-op">%</tt> <tt class="py-name">l</tt> <tt class="py-keyword">for</tt> <tt class="py-name">l</tt> <tt class="py-keyword">in</tt> <tt class="py-name">linenums</tt><tt cl [...]
+<a name="L529"></a><tt class="py-lineno"> 529</tt>  <tt class="py-line">                <tt id="link-247" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-247', 'log', 'link-14');">log</a></tt><tt class="py-op">.</tt><tt id="link-248" class="py-name"><a title="epydoc.log.docstring_warning" class="py-name" href="#" onclick="return doclink('link-248', 'docstring_warning', 'link-235');">docstring_warning</a></tt><tt class="py-op">(</tt><tt class="py-string">"Lines %s: %s"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">linenums</tt><t [...]
+<a name="L530"></a><tt class="py-lineno"> 530</tt>  <tt class="py-line"> </tt>
+<a name="L531"></a><tt class="py-lineno"> 531</tt>  <tt class="py-line">    <tt class="py-comment"># Display all field warnings.</tt> </tt>
+<a name="L532"></a><tt class="py-lineno"> 532</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">for</tt> <tt id="link-249" class="py-name" targets="Method epydoc.checker.DocChecker.warning()=epydoc.checker.DocChecker-class.html#warning,Function epydoc.log.warning()=epydoc.log-module.html#warning"><a title="epydoc.checker.DocChecker.warning
+epydoc.log.warning" class="py-name" href="#" onclick="return doclink('link-249', 'warning', 'link-249');">warning</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">field_warnings</tt><tt class="py-op">:</tt> </tt>
+<a name="L533"></a><tt class="py-lineno"> 533</tt>  <tt class="py-line">        <tt id="link-250" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-250', 'log', 'link-14');">log</a></tt><tt class="py-op">.</tt><tt id="link-251" class="py-name"><a title="epydoc.log.docstring_warning" class="py-name" href="#" onclick="return doclink('link-251', 'docstring_warning', 'link-235');">docstring_warning</a></tt><tt class="py-op">(</tt><tt id="link-252" class="py-name"><a title="epydoc.checker.DocChecker.warning
+epydoc.log.warning" class="py-name" href="#" onclick="return doclink('link-252', 'warning', 'link-249');">warning</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L534"></a><tt class="py-lineno"> 534</tt>  <tt class="py-line"> </tt>
+<a name="L535"></a><tt class="py-lineno"> 535</tt>  <tt class="py-line">    <tt class="py-comment"># End the message block.</tt> </tt>
+<a name="L536"></a><tt class="py-lineno"> 536</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-253" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-253', 'log', 'link-14');">log</a></tt><tt class="py-op">.</tt><tt id="link-254" class="py-name" targets="Method epydoc.cli.ConsoleLogger.end_block()=epydoc.cli.ConsoleLogger-class.html#end_block,Method epydoc.cli.HTMLLogger.end_block()=epydoc.cli.HTMLLogger-class.html#end_block,Method epydoc.gui.GUILogger.end_block()=epydoc.gui.GUILogger-class.html#end_block,Method epydoc.log.Logger.end_block()=epydoc.log [...]
+epydoc.cli.HTMLLogger.end_block
+epydoc.gui.GUILogger.end_block
+epydoc.log.Logger.end_block
+epydoc.log.end_block" class="py-name" href="#" onclick="return doclink('link-254', 'end_block', 'link-254');">end_block</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L537"></a><tt class="py-lineno"> 537</tt>  <tt class="py-line"> </tt>
+<a name="L538"></a><tt class="py-lineno"> 538</tt>  <tt class="py-line"><tt id="link-255" class="py-name"><a title="epydoc.docstringparser.RETURN_PDS" class="py-name" href="#" onclick="return doclink('link-255', 'RETURN_PDS', 'link-108');">RETURN_PDS</a></tt> <tt class="py-op">=</tt> <tt id="link-256" class="py-name"><a title="epydoc.markup
+epydoc.markup.doctest.DoctestColorizer.markup
+epydoc.markup.doctest.HTMLDoctestColorizer.markup
+epydoc.markup.doctest.LaTeXDoctestColorizer.markup
+epydoc.markup.doctest.XMLDoctestColorizer.markup" class="py-name" href="#" onclick="return doclink('link-256', 'markup', 'link-1');">markup</a></tt><tt class="py-op">.</tt><tt id="link-257" class="py-name"><a title="epydoc.markup.epytext.parse
+epydoc.markup.parse" class="py-name" href="#" onclick="return doclink('link-257', 'parse', 'link-67');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'Returns:'</tt><tt class="py-op">,</tt> <tt id="link-258" class="py-name"><a title="epydoc.markup
+epydoc.markup.doctest.DoctestColorizer.markup
+epydoc.markup.doctest.HTMLDoctestColorizer.markup
+epydoc.markup.doctest.LaTeXDoctestColorizer.markup
+epydoc.markup.doctest.XMLDoctestColorizer.markup" class="py-name" href="#" onclick="return doclink('link-258', 'markup', 'link-1');">markup</a></tt><tt class="py-op">=</tt><tt class="py-string">'epytext'</tt><tt class="py-op">)</tt> </tt>
+<a name="L539"></a><tt class="py-lineno"> 539</tt>  <tt class="py-line"><tt class="py-string">"""A ParsedDocstring containing the text 'Returns'.  This is used to</tt> </tt>
+<a name="L540"></a><tt class="py-lineno"> 540</tt>  <tt class="py-line"><tt class="py-string">construct summary descriptions for routines that have empty C{descr},</tt> </tt>
+<a name="L541"></a><tt class="py-lineno"> 541</tt>  <tt class="py-line"><tt class="py-string">but non-empty C{return_descr}."""</tt> </tt>
+<a name="L542"></a><tt class="py-lineno"> 542</tt>  <tt class="py-line"><tt id="link-259" class="py-name"><a title="epydoc.docstringparser.RETURN_PDS" class="py-name" href="#" onclick="return doclink('link-259', 'RETURN_PDS', 'link-108');">RETURN_PDS</a></tt><tt class="py-op">.</tt><tt class="py-name">_tree</tt><tt class="py-op">.</tt><tt class="py-name">children</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">at [...]
+<a name="L543"></a><tt class="py-lineno"> 543</tt>  <tt class="py-line"> </tt>
+<a name="L544"></a><tt class="py-lineno"> 544</tt>  <tt class="py-line"><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L545"></a><tt class="py-lineno"> 545</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#{ Field Processing Error Messages</tt> </tt>
+<a name="L546"></a><tt class="py-lineno"> 546</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L547"></a><tt class="py-lineno"> 547</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L548"></a><tt class="py-lineno"> 548</tt>  <tt class="py-line"><tt id="link-260" class="py-name" targets="Variable epydoc.docstringparser.UNEXPECTED_ARG=epydoc.docstringparser-module.html#UNEXPECTED_ARG"><a title="epydoc.docstringparser.UNEXPECTED_ARG" class="py-name" href="#" onclick="return doclink('link-260', 'UNEXPECTED_ARG', 'link-260');">UNEXPECTED_ARG</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'%r did not expect an argument'</tt> </tt>
+<a name="L549"></a><tt class="py-lineno"> 549</tt>  <tt class="py-line"><tt id="link-261" class="py-name" targets="Variable epydoc.docstringparser.EXPECTED_ARG=epydoc.docstringparser-module.html#EXPECTED_ARG"><a title="epydoc.docstringparser.EXPECTED_ARG" class="py-name" href="#" onclick="return doclink('link-261', 'EXPECTED_ARG', 'link-261');">EXPECTED_ARG</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'%r expected an argument'</tt> </tt>
+<a name="L550"></a><tt class="py-lineno"> 550</tt>  <tt class="py-line"><tt id="link-262" class="py-name" targets="Variable epydoc.docstringparser.EXPECTED_SINGLE_ARG=epydoc.docstringparser-module.html#EXPECTED_SINGLE_ARG"><a title="epydoc.docstringparser.EXPECTED_SINGLE_ARG" class="py-name" href="#" onclick="return doclink('link-262', 'EXPECTED_SINGLE_ARG', 'link-262');">EXPECTED_SINGLE_ARG</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'%r expected a single argument'</tt> </tt>
+<a name="L551"></a><tt class="py-lineno"> 551</tt>  <tt class="py-line"><tt id="link-263" class="py-name" targets="Variable epydoc.docstringparser.BAD_CONTEXT=epydoc.docstringparser-module.html#BAD_CONTEXT"><a title="epydoc.docstringparser.BAD_CONTEXT" class="py-name" href="#" onclick="return doclink('link-263', 'BAD_CONTEXT', 'link-263');">BAD_CONTEXT</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'Invalid context for %r'</tt> </tt>
+<a name="L552"></a><tt class="py-lineno"> 552</tt>  <tt class="py-line"><tt id="link-264" class="py-name" targets="Variable epydoc.docstringparser.REDEFINED=epydoc.docstringparser-module.html#REDEFINED"><a title="epydoc.docstringparser.REDEFINED" class="py-name" href="#" onclick="return doclink('link-264', 'REDEFINED', 'link-264');">REDEFINED</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'Redefinition of %s'</tt> </tt>
+<a name="L553"></a><tt class="py-lineno"> 553</tt>  <tt class="py-line"><tt id="link-265" class="py-name" targets="Variable epydoc.docstringparser.UNKNOWN_TAG=epydoc.docstringparser-module.html#UNKNOWN_TAG"><a title="epydoc.docstringparser.UNKNOWN_TAG" class="py-name" href="#" onclick="return doclink('link-265', 'UNKNOWN_TAG', 'link-265');">UNKNOWN_TAG</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'Unknown field tag %r'</tt> </tt>
+<a name="L554"></a><tt class="py-lineno"> 554</tt>  <tt class="py-line"><tt id="link-266" class="py-name" targets="Variable epydoc.docstringparser.BAD_PARAM=epydoc.docstringparser-module.html#BAD_PARAM"><a title="epydoc.docstringparser.BAD_PARAM" class="py-name" href="#" onclick="return doclink('link-266', 'BAD_PARAM', 'link-266');">BAD_PARAM</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'@%s for unknown parameter %s'</tt> </tt>
+<a name="L555"></a><tt class="py-lineno"> 555</tt>  <tt class="py-line"> </tt>
+<a name="L556"></a><tt class="py-lineno"> 556</tt>  <tt class="py-line"><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L557"></a><tt class="py-lineno"> 557</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#{ Field Processing</tt> </tt>
+<a name="L558"></a><tt class="py-lineno"> 558</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L559"></a><tt class="py-lineno"> 559</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="process_field"></a><div id="process_field-def"><a name="L560"></a><tt class="py-lineno"> 560</tt> <a class="py-toggle" href="#" id="process_field-toggle" onclick="return toggle('process_field');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docstringparser-module.html#process_field">process_field</a><tt class="py-op">(</tt><tt class="py-param">api_doc</tt><tt class="py-op">,</tt> <tt class="py-param">docindex</tt><tt class="py-op"> [...]
+</div><div id="process_field-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="process_field-expanded"><a name="L561"></a><tt class="py-lineno"> 561</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L562"></a><tt class="py-lineno"> 562</tt>  <tt class="py-line"><tt class="py-docstring">    Process a single field, and use it to update C{api_doc}.  If</tt> </tt>
+<a name="L563"></a><tt class="py-lineno"> 563</tt>  <tt class="py-line"><tt class="py-docstring">    C{tag} is the name of a special field, then call its handler</tt> </tt>
+<a name="L564"></a><tt class="py-lineno"> 564</tt>  <tt class="py-line"><tt class="py-docstring">    function.  If C{tag} is the name of a simple field, then use</tt> </tt>
+<a name="L565"></a><tt class="py-lineno"> 565</tt>  <tt class="py-line"><tt class="py-docstring">    C{process_simple_field} to process it.  Otherwise, check if it's a</tt> </tt>
+<a name="L566"></a><tt class="py-lineno"> 566</tt>  <tt class="py-line"><tt class="py-docstring">    user-defined field, defined in this docstring or the docstring of</tt> </tt>
+<a name="L567"></a><tt class="py-lineno"> 567</tt>  <tt class="py-line"><tt class="py-docstring">    a containing object; and if so, process it with</tt> </tt>
+<a name="L568"></a><tt class="py-lineno"> 568</tt>  <tt class="py-line"><tt class="py-docstring">    C{process_simple_field}.</tt> </tt>
+<a name="L569"></a><tt class="py-lineno"> 569</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L570"></a><tt class="py-lineno"> 570</tt>  <tt class="py-line"><tt class="py-docstring">    @param tag: The field's tag, such as C{'author'}</tt> </tt>
+<a name="L571"></a><tt class="py-lineno"> 571</tt>  <tt class="py-line"><tt class="py-docstring">    @param arg: The field's optional argument</tt> </tt>
+<a name="L572"></a><tt class="py-lineno"> 572</tt>  <tt class="py-line"><tt class="py-docstring">    @param descr: The description following the field tag and</tt> </tt>
+<a name="L573"></a><tt class="py-lineno"> 573</tt>  <tt class="py-line"><tt class="py-docstring">        argument.</tt> </tt>
+<a name="L574"></a><tt class="py-lineno"> 574</tt>  <tt class="py-line"><tt class="py-docstring">    @raise ValueError: If a problem was encountered while processing</tt> </tt>
+<a name="L575"></a><tt class="py-lineno"> 575</tt>  <tt class="py-line"><tt class="py-docstring">        the field.  The C{ValueError}'s string argument is an</tt> </tt>
+<a name="L576"></a><tt class="py-lineno"> 576</tt>  <tt class="py-line"><tt class="py-docstring">        explanation of the problem, which should be displayed as a</tt> </tt>
+<a name="L577"></a><tt class="py-lineno"> 577</tt>  <tt class="py-line"><tt class="py-docstring">        warning message.</tt> </tt>
+<a name="L578"></a><tt class="py-lineno"> 578</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L579"></a><tt class="py-lineno"> 579</tt>  <tt class="py-line">    <tt class="py-comment"># standard special fields</tt> </tt>
+<a name="L580"></a><tt class="py-lineno"> 580</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt id="link-267" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-267', 'tag', 'link-84');">tag</a></tt> <tt class="py-keyword">in</tt> <tt id="link-268" class="py-name" targets="Variable epydoc.docstringparser._field_dispatch_table=epydoc.docstringparser-module.html#_field_dispatch_table"><a title [...]
+<a name="L581"></a><tt class="py-lineno"> 581</tt>  <tt class="py-line">        <tt class="py-name">handler</tt> <tt class="py-op">=</tt> <tt id="link-269" class="py-name"><a title="epydoc.docstringparser._field_dispatch_table" class="py-name" href="#" onclick="return doclink('link-269', '_field_dispatch_table', 'link-268');">_field_dispatch_table</a></tt><tt class="py-op">[</tt><tt id="link-270" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return  [...]
+<a name="L582"></a><tt class="py-lineno"> 582</tt>  <tt class="py-line">        <tt class="py-name">handler</tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt class="py-name">docindex</tt><tt class="py-op">,</tt> <tt id="link-271" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-271', 'tag', 'link-84');">tag</a></tt><tt class="py-op">,</tt> <tt id="link-272" class="py-name"><a title="epydoc.mar [...]
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-273', 'descr', 'link-70');">descr</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L583"></a><tt class="py-lineno"> 583</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> </tt>
+<a name="L584"></a><tt class="py-lineno"> 584</tt>  <tt class="py-line"> </tt>
+<a name="L585"></a><tt class="py-lineno"> 585</tt>  <tt class="py-line">    <tt class="py-comment"># standard simple fields & user-defined fields</tt> </tt>
+<a name="L586"></a><tt class="py-lineno"> 586</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">for</tt> <tt class="py-name">field</tt> <tt class="py-keyword">in</tt> <tt id="link-274" class="py-name"><a title="epydoc.docstringparser.STANDARD_FIELDS" class="py-name" href="#" onclick="return doclink('link-274', 'STANDARD_FIELDS', 'link-20');">STANDARD_FIELDS</a></tt> <tt class="py-op">+</tt> <tt id="link-275" class="py-name"><a title="epydoc.docstringparser. [...]
+<a name="L587"></a><tt class="py-lineno"> 587</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-276" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-276', 'tag', 'link-84');">tag</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">field</tt><tt class="py-op">.</tt><tt class="py-name">tags</tt><tt class="py-op">:</tt> </tt>
+<a name="L588"></a><tt class="py-lineno"> 588</tt>  <tt class="py-line">            <tt class="py-comment"># [xx] check if it's redefined if it's not multivalue??</tt> </tt>
+<a name="L589"></a><tt class="py-lineno"> 589</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">field</tt><tt class="py-op">.</tt><tt class="py-name">takes_arg</tt><tt class="py-op">:</tt> </tt>
+<a name="L590"></a><tt class="py-lineno"> 590</tt>  <tt class="py-line">                <tt id="link-277" class="py-name" targets="Method epydoc.checker.DocChecker._check()=epydoc.checker.DocChecker-class.html#_check,Function epydoc.docstringparser._check()=epydoc.docstringparser-module.html#_check"><a title="epydoc.checker.DocChecker._check
+epydoc.docstringparser._check" class="py-name" href="#" onclick="return doclink('link-277', '_check', 'link-277');">_check</a></tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt id="link-278" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-278', 'tag', 'link-84');">tag</a></tt><tt class="py-op">,</tt> <tt id="link-279" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" [...]
+<a name="L591"></a><tt class="py-lineno"> 591</tt>  <tt class="py-line">            <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-280" class="py-name"><a title="epydoc.apidoc.APIDoc.metadata" class="py-name" href="#" onclick="return doclink('link-280', 'metadata', 'link-44');">metadata</a></tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">field</tt><tt class="py-op">,</tt> <tt id="link-281 [...]
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-282', 'descr', 'link-70');">descr</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L592"></a><tt class="py-lineno"> 592</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> </tt>
+<a name="L593"></a><tt class="py-lineno"> 593</tt>  <tt class="py-line"> </tt>
+<a name="L594"></a><tt class="py-lineno"> 594</tt>  <tt class="py-line">    <tt class="py-comment"># If we didn't handle the field, then report a warning.</tt> </tt>
+<a name="L595"></a><tt class="py-lineno"> 595</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt id="link-283" class="py-name"><a title="epydoc.docstringparser.UNKNOWN_TAG" class="py-name" href="#" onclick="return doclink('link-283', 'UNKNOWN_TAG', 'link-265');">UNKNOWN_TAG</a></tt> <tt class="py-op">%</tt> <tt id="link-284" class="py-name"><a title="epydoc.markup.Field.tag" class="py- [...]
+</div><a name="L596"></a><tt class="py-lineno"> 596</tt>  <tt class="py-line"> </tt>
+<a name="user_docfields"></a><div id="user_docfields-def"><a name="L597"></a><tt class="py-lineno"> 597</tt> <a class="py-toggle" href="#" id="user_docfields-toggle" onclick="return toggle('user_docfields');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docstringparser-module.html#user_docfields">user_docfields</a><tt class="py-op">(</tt><tt class="py-param">api_doc</tt><tt class="py-op">,</tt> <tt class="py-param">docindex</tt><tt class="p [...]
+</div><div id="user_docfields-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="user_docfields-expanded"><a name="L598"></a><tt class="py-lineno"> 598</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L599"></a><tt class="py-lineno"> 599</tt>  <tt class="py-line"><tt class="py-docstring">    Return a list of user defined fields that can be used for the</tt> </tt>
+<a name="L600"></a><tt class="py-lineno"> 600</tt>  <tt class="py-line"><tt class="py-docstring">    given object.  This list is taken from the given C{api_doc}, and</tt> </tt>
+<a name="L601"></a><tt class="py-lineno"> 601</tt>  <tt class="py-line"><tt class="py-docstring">    any of its containing C{NamepaceDoc}s.</tt> </tt>
+<a name="L602"></a><tt class="py-lineno"> 602</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L603"></a><tt class="py-lineno"> 603</tt>  <tt class="py-line"><tt class="py-docstring">    @note: We assume here that a parent's docstring will always be</tt> </tt>
+<a name="L604"></a><tt class="py-lineno"> 604</tt>  <tt class="py-line"><tt class="py-docstring">        parsed before its childrens'.  This is indeed the case when we</tt> </tt>
+<a name="L605"></a><tt class="py-lineno"> 605</tt>  <tt class="py-line"><tt class="py-docstring">        are called via L{docbuilder.build_doc_index()}.  If a child's</tt> </tt>
+<a name="L606"></a><tt class="py-lineno"> 606</tt>  <tt class="py-line"><tt class="py-docstring">        docstring is parsed before its parents, then its parent won't</tt> </tt>
+<a name="L607"></a><tt class="py-lineno"> 607</tt>  <tt class="py-line"><tt class="py-docstring">        yet have had its C{extra_docstring_fields} attribute</tt> </tt>
+<a name="L608"></a><tt class="py-lineno"> 608</tt>  <tt class="py-line"><tt class="py-docstring">        initialized.</tt> </tt>
+<a name="L609"></a><tt class="py-lineno"> 609</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L610"></a><tt class="py-lineno"> 610</tt>  <tt class="py-line">    <tt class="py-name">docfields</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L611"></a><tt class="py-lineno"> 611</tt>  <tt class="py-line">    <tt class="py-comment"># Get any docfields from `api_doc` itself</tt> </tt>
+<a name="L612"></a><tt class="py-lineno"> 612</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-285" class="py-name" targets="Variable epydoc.apidoc.APIDoc.extra_docstring_fields=epydoc.apidoc.APIDoc-class.html#extra_docstring_fields"><a title="epydoc.apidoc.APIDoc.extra_docstring_fields" class="py-name" href="#" onclick="return doclink('link-285', 'extra_docstring_fields', 'link-2 [...]
+<a name="L613"></a><tt class="py-lineno"> 613</tt>  <tt class="py-line">        <tt class="py-name">docfields</tt> <tt class="py-op">+=</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-287" class="py-name"><a title="epydoc.apidoc.APIDoc.extra_docstring_fields" class="py-name" href="#" onclick="return doclink('link-287', 'extra_docstring_fields', 'link-285');">extra_docstring_fields</a></tt> </tt>
+<a name="L614"></a><tt class="py-lineno"> 614</tt>  <tt class="py-line">    <tt class="py-comment"># Get any docfields from `api_doc`'s ancestors</tt> </tt>
+<a name="L615"></a><tt class="py-lineno"> 615</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-288" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-288', 'canonical_name', 'link-47');">canonical_name</a></tt><tt class="py-op">)</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L616"></a><tt class="py-lineno"> 616</tt>  <tt class="py-line">        <tt class="py-name">ancestor</tt> <tt class="py-op">=</tt> <tt class="py-name">docindex</tt><tt class="py-op">.</tt><tt id="link-289" class="py-name" targets="Method epydoc.apidoc.DocIndex.get_valdoc()=epydoc.apidoc.DocIndex-class.html#get_valdoc"><a title="epydoc.apidoc.DocIndex.get_valdoc" class="py-name" href="#" onclick="return doclink('link-289', 'get_valdoc', 'link-289');">get_valdoc</a></tt><tt class=" [...]
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-290', 'canonical_name', 'link-47');">canonical_name</a></tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-name">i</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L617"></a><tt class="py-lineno"> 617</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">ancestor</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> \ </tt>
+<a name="L618"></a><tt class="py-lineno"> 618</tt>  <tt class="py-line">        <tt class="py-keyword">and</tt> <tt class="py-name">ancestor</tt><tt class="py-op">.</tt><tt id="link-291" class="py-name"><a title="epydoc.apidoc.APIDoc.extra_docstring_fields" class="py-name" href="#" onclick="return doclink('link-291', 'extra_docstring_fields', 'link-285');">extra_docstring_fields</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py- [...]
+<a name="L619"></a><tt class="py-lineno"> 619</tt>  <tt class="py-line">            <tt class="py-name">docfields</tt> <tt class="py-op">+=</tt> <tt class="py-name">ancestor</tt><tt class="py-op">.</tt><tt id="link-293" class="py-name"><a title="epydoc.apidoc.APIDoc.extra_docstring_fields" class="py-name" href="#" onclick="return doclink('link-293', 'extra_docstring_fields', 'link-285');">extra_docstring_fields</a></tt> </tt>
+<a name="L620"></a><tt class="py-lineno"> 620</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">docfields</tt> </tt>
+</div><a name="L621"></a><tt class="py-lineno"> 621</tt>  <tt class="py-line"> </tt>
+<a name="L622"></a><tt class="py-lineno"> 622</tt>  <tt class="py-line"><tt id="link-294" class="py-name"><a title="epydoc.docstringparser._field_dispatch_table" class="py-name" href="#" onclick="return doclink('link-294', '_field_dispatch_table', 'link-268');">_field_dispatch_table</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="register_field_handler"></a><div id="register_field_handler-def"><a name="L623"></a><tt class="py-lineno"> 623</tt> <a class="py-toggle" href="#" id="register_field_handler-toggle" onclick="return toggle('register_field_handler');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docstringparser-module.html#register_field_handler">register_field_handler</a><tt class="py-op">(</tt><tt class="py-param">handler</tt><tt class="py-op">,</tt [...]
+</div><div id="register_field_handler-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="register_field_handler-expanded"><a name="L624"></a><tt class="py-lineno"> 624</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L625"></a><tt class="py-lineno"> 625</tt>  <tt class="py-line"><tt class="py-docstring">    Register the given field handler function for processing any</tt> </tt>
+<a name="L626"></a><tt class="py-lineno"> 626</tt>  <tt class="py-line"><tt class="py-docstring">    of the given field tags.  Field handler functions should</tt> </tt>
+<a name="L627"></a><tt class="py-lineno"> 627</tt>  <tt class="py-line"><tt class="py-docstring">    have the following signature:</tt> </tt>
+<a name="L628"></a><tt class="py-lineno"> 628</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L629"></a><tt class="py-lineno"> 629</tt>  <tt class="py-line"><tt class="py-docstring">        >>> def field_handler(api_doc, docindex, tag, arg, descr):</tt> </tt>
+<a name="L630"></a><tt class="py-lineno"> 630</tt>  <tt class="py-line"><tt class="py-docstring">        ...     '''update api_doc in response to the field.'''</tt> </tt>
+<a name="L631"></a><tt class="py-lineno"> 631</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L632"></a><tt class="py-lineno"> 632</tt>  <tt class="py-line"><tt class="py-docstring">    Where C{api_doc} is the documentation object to update;</tt> </tt>
+<a name="L633"></a><tt class="py-lineno"> 633</tt>  <tt class="py-line"><tt class="py-docstring">    C{docindex} is a L{DocIndex} that can be used to look up the</tt> </tt>
+<a name="L634"></a><tt class="py-lineno"> 634</tt>  <tt class="py-line"><tt class="py-docstring">    documentation for related objects; C{tag} is the field tag that</tt> </tt>
+<a name="L635"></a><tt class="py-lineno"> 635</tt>  <tt class="py-line"><tt class="py-docstring">    was used; C{arg} is the optional argument; and C{descr} is the</tt> </tt>
+<a name="L636"></a><tt class="py-lineno"> 636</tt>  <tt class="py-line"><tt class="py-docstring">    description following the field tag and argument.</tt> </tt>
+<a name="L637"></a><tt class="py-lineno"> 637</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L638"></a><tt class="py-lineno"> 638</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">field_tag</tt> <tt class="py-keyword">in</tt> <tt class="py-name">field_tags</tt><tt class="py-op">:</tt> </tt>
+<a name="L639"></a><tt class="py-lineno"> 639</tt>  <tt class="py-line">        <tt id="link-295" class="py-name"><a title="epydoc.docstringparser._field_dispatch_table" class="py-name" href="#" onclick="return doclink('link-295', '_field_dispatch_table', 'link-268');">_field_dispatch_table</a></tt><tt class="py-op">[</tt><tt class="py-name">field_tag</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">handler</tt> </tt>
+</div><a name="L640"></a><tt class="py-lineno"> 640</tt>  <tt class="py-line"> </tt>
+<a name="L641"></a><tt class="py-lineno"> 641</tt>  <tt class="py-line"><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L642"></a><tt class="py-lineno"> 642</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#{ Field Handler Functions</tt> </tt>
+<a name="L643"></a><tt class="py-lineno"> 643</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L644"></a><tt class="py-lineno"> 644</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="process_summary_field"></a><div id="process_summary_field-def"><a name="L645"></a><tt class="py-lineno"> 645</tt> <a class="py-toggle" href="#" id="process_summary_field-toggle" onclick="return toggle('process_summary_field');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docstringparser-module.html#process_summary_field">process_summary_field</a><tt class="py-op">(</tt><tt class="py-param">api_doc</tt><tt class="py-op">,</tt> <tt  [...]
+</div><div id="process_summary_field-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="process_summary_field-expanded"><a name="L646"></a><tt class="py-lineno"> 646</tt>  <tt class="py-line">    <tt class="py-docstring">"""Store C{descr} in C{api_doc.summary}"""</tt> </tt>
+<a name="L647"></a><tt class="py-lineno"> 647</tt>  <tt class="py-line">    <tt id="link-296" class="py-name"><a title="epydoc.checker.DocChecker._check
+epydoc.docstringparser._check" class="py-name" href="#" onclick="return doclink('link-296', '_check', 'link-277');">_check</a></tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt id="link-297" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-297', 'tag', 'link-84');">tag</a></tt><tt class="py-op">,</tt> <tt id="link-298" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" [...]
+<a name="L648"></a><tt class="py-lineno"> 648</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-299" class="py-name"><a title="epydoc.apidoc.APIDoc.summary
+epydoc.docwriter.html.HTMLWriter.summary
+epydoc.markup.ConcatenatedDocstring.summary
+epydoc.markup.ParsedDocstring.summary
+epydoc.markup.epytext.ParsedEpytextDocstring.summary
+epydoc.markup.javadoc.ParsedJavadocDocstring.summary
+epydoc.markup.plaintext.ParsedPlaintextDocstring.summary
+epydoc.markup.restructuredtext.ParsedRstDocstring.summary" class="py-name" href="#" onclick="return doclink('link-299', 'summary', 'link-96');">summary</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L649"></a><tt class="py-lineno"> 649</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt id="link-300" class="py-name"><a title="epydoc.docstringparser.REDEFINED" class="py-name" href="#" onclick="return doclink('link-300', 'REDEFINED', 'link-264');">REDEFINED</a></tt> <tt class="py-op">%</tt> <tt id="link-301" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return [...]
+<a name="L650"></a><tt class="py-lineno"> 650</tt>  <tt class="py-line">    <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-302" class="py-name"><a title="epydoc.apidoc.APIDoc.summary
+epydoc.docwriter.html.HTMLWriter.summary
+epydoc.markup.ConcatenatedDocstring.summary
+epydoc.markup.ParsedDocstring.summary
+epydoc.markup.epytext.ParsedEpytextDocstring.summary
+epydoc.markup.javadoc.ParsedJavadocDocstring.summary
+epydoc.markup.plaintext.ParsedPlaintextDocstring.summary
+epydoc.markup.restructuredtext.ParsedRstDocstring.summary" class="py-name" href="#" onclick="return doclink('link-302', 'summary', 'link-96');">summary</a></tt> <tt class="py-op">=</tt> <tt id="link-303" class="py-name"><a title="epydoc.apidoc.APIDoc.descr
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-303', 'descr', 'link-70');">descr</a></tt> </tt>
+</div><a name="L651"></a><tt class="py-lineno"> 651</tt>  <tt class="py-line"> </tt>
+<a name="process_include_field"></a><div id="process_include_field-def"><a name="L652"></a><tt class="py-lineno"> 652</tt> <a class="py-toggle" href="#" id="process_include_field-toggle" onclick="return toggle('process_include_field');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docstringparser-module.html#process_include_field">process_include_field</a><tt class="py-op">(</tt><tt class="py-param">api_doc</tt><tt class="py-op">,</tt> <tt  [...]
+</div><div id="process_include_field-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="process_include_field-expanded"><a name="L653"></a><tt class="py-lineno"> 653</tt>  <tt class="py-line">    <tt class="py-docstring">"""Copy the docstring contents from the object named in C{descr}"""</tt> </tt>
+<a name="L654"></a><tt class="py-lineno"> 654</tt>  <tt class="py-line">    <tt id="link-304" class="py-name"><a title="epydoc.checker.DocChecker._check
+epydoc.docstringparser._check" class="py-name" href="#" onclick="return doclink('link-304', '_check', 'link-277');">_check</a></tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt id="link-305" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-305', 'tag', 'link-84');">tag</a></tt><tt class="py-op">,</tt> <tt id="link-306" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" [...]
+<a name="L655"></a><tt class="py-lineno"> 655</tt>  <tt class="py-line">    <tt class="py-comment"># options:</tt> </tt>
+<a name="L656"></a><tt class="py-lineno"> 656</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#   a. just append the descr to our own</tt> </tt>
+<a name="L657"></a><tt class="py-lineno"> 657</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#   b. append descr and update metadata</tt> </tt>
+<a name="L658"></a><tt class="py-lineno"> 658</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#   c. append descr and process all fields.</tt> </tt>
+<a name="L659"></a><tt class="py-lineno"> 659</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># in any case, mark any errors we may find as coming from an</tt> </tt>
+<a name="L660"></a><tt class="py-lineno"> 660</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># imported docstring.</tt> </tt>
+<a name="L661"></a><tt class="py-lineno"> 661</tt>  <tt class="py-line"><tt class="py-comment"></tt>     </tt>
+<a name="L662"></a><tt class="py-lineno"> 662</tt>  <tt class="py-line">    <tt class="py-comment"># how does this interact with documentation inheritance??</tt> </tt>
+<a name="L663"></a><tt class="py-lineno"> 663</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">'%s not implemented yet'</tt> <tt class="py-op">%</tt> <tt id="link-307" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-307', 'tag', 'link-84');">tag</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L664"></a><tt class="py-lineno"> 664</tt>  <tt class="py-line"> </tt>
+<a name="process_undocumented_field"></a><div id="process_undocumented_field-def"><a name="L665"></a><tt class="py-lineno"> 665</tt> <a class="py-toggle" href="#" id="process_undocumented_field-toggle" onclick="return toggle('process_undocumented_field');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docstringparser-module.html#process_undocumented_field">process_undocumented_field</a><tt class="py-op">(</tt><tt class="py-param">api_doc</tt [...]
+</div><div id="process_undocumented_field-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="process_undocumented_field-expanded"><a name="L666"></a><tt class="py-lineno"> 666</tt>  <tt class="py-line">    <tt class="py-docstring">"""Remove any documentation for the variables named in C{descr}"""</tt> </tt>
+<a name="L667"></a><tt class="py-lineno"> 667</tt>  <tt class="py-line">    <tt id="link-308" class="py-name"><a title="epydoc.checker.DocChecker._check
+epydoc.docstringparser._check" class="py-name" href="#" onclick="return doclink('link-308', '_check', 'link-277');">_check</a></tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt id="link-309" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-309', 'tag', 'link-84');">tag</a></tt><tt class="py-op">,</tt> <tt id="link-310" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" [...]
+<a name="L668"></a><tt class="py-lineno"> 668</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">ident</tt> <tt class="py-keyword">in</tt> <tt id="link-312" class="py-name" targets="Function epydoc.docstringparser._descr_to_identifiers()=epydoc.docstringparser-module.html#_descr_to_identifiers"><a title="epydoc.docstringparser._descr_to_identifiers" class="py-name" href="#" onclick="return doclink('link-312', '_descr_to_identifiers', 'link-312');">_descr_to [...]
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-313', 'descr', 'link-70');">descr</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L669"></a><tt class="py-lineno"> 669</tt>  <tt class="py-line">        <tt class="py-name">var_name_re</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">compile</tt><tt class="py-op">(</tt><tt class="py-string">'^%s$'</tt> <tt class="py-op">%</tt> <tt class="py-name">ident</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">'*'</tt><tt class="py-op">,</tt> <tt class="py-strin [...]
+<a name="L670"></a><tt class="py-lineno"> 670</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">var_name</tt><tt class="py-op">,</tt> <tt class="py-name">var_doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-314" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-314', 'variables', 'link-75');">variables</a></tt><tt class="py-o [...]
+<a name="L671"></a><tt class="py-lineno"> 671</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">var_name_re</tt><tt class="py-op">.</tt><tt class="py-name">match</tt><tt class="py-op">(</tt><tt class="py-name">var_name</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L672"></a><tt class="py-lineno"> 672</tt>  <tt class="py-line">                <tt class="py-comment"># Remove the variable from `variables`.</tt> </tt>
+<a name="L673"></a><tt class="py-lineno"> 673</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-315" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-315', 'variables', 'link-75');">variables</a></tt><tt class="py-op">.</tt><tt class="py-name">pop</tt><tt class="py-op">(</tt><tt class="py-name">var_name</tt><tt class="py-op">,</tt> [...]
+<a name="L674"></a><tt class="py-lineno"> 674</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-316" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.sort_spec" class="py-name" href="#" onclick="return doclink('link-316', 'sort_spec', 'link-153');">sort_spec</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt id="link-317" class="py-name"><a title="epydoc.apidoc.UNKNOWN [...]
+<a name="L675"></a><tt class="py-lineno"> 675</tt>  <tt class="py-line">                    <tt class="py-keyword">try</tt><tt class="py-op">:</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-318" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.sort_spec" class="py-name" href="#" onclick="return doclink('link-318', 'sort_spec', 'link-153');">sort_spec</a></tt><tt class="py-op">.</tt><tt class="py-name">remove</tt><tt class="py-op">(</tt><tt class="py-name">v [...]
+<a name="L676"></a><tt class="py-lineno"> 676</tt>  <tt class="py-line">                    <tt class="py-keyword">except</tt> <tt class="py-name">ValueError</tt><tt class="py-op">:</tt> <tt class="py-keyword">pass</tt> </tt>
+<a name="L677"></a><tt class="py-lineno"> 677</tt>  <tt class="py-line">        <tt class="py-comment"># For modules, remove any submodules that match var_name_re.</tt> </tt>
+<a name="L678"></a><tt class="py-lineno"> 678</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt id="link-319" class="py-name" targets="Class epydoc.apidoc.ModuleDoc=epydoc.apidoc.ModuleDoc-class.html"><a title="epydoc.apidoc.ModuleDoc" class="py-name" href="#" onclick="return doclink('link-319', 'ModuleDoc', 'link-319');">Modul [...]
+<a name="L679"></a><tt class="py-lineno"> 679</tt>  <tt class="py-line">            <tt class="py-name">removed</tt> <tt class="py-op">=</tt> <tt class="py-name">set</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">m</tt> <tt class="py-keyword">for</tt> <tt class="py-name">m</tt> <tt class="py-keyword">in</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-320" class="py-name" targets="Variable epydoc.apidoc.ModuleDoc.submodules=epydoc.apidoc. [...]
+<a name="L680"></a><tt class="py-lineno"> 680</tt>  <tt class="py-line">                           <tt class="py-keyword">if</tt> <tt class="py-name">var_name_re</tt><tt class="py-op">.</tt><tt class="py-name">match</tt><tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-321" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-321', 'canonical_name', 'link-47');">canonical_name</a></tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L681"></a><tt class="py-lineno"> 681</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">removed</tt><tt class="py-op">:</tt> </tt>
+<a name="L682"></a><tt class="py-lineno"> 682</tt>  <tt class="py-line">                <tt class="py-comment"># Remove the indicated submodules from this module.</tt> </tt>
+<a name="L683"></a><tt class="py-lineno"> 683</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-322" class="py-name"><a title="epydoc.apidoc.ModuleDoc.submodules" class="py-name" href="#" onclick="return doclink('link-322', 'submodules', 'link-320');">submodules</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">m</tt> <tt class="py-keyword">for</tt> <tt class="py-name">m</ [...]
+<a name="L684"></a><tt class="py-lineno"> 684</tt>  <tt class="py-line">                                      <tt class="py-keyword">if</tt> <tt class="py-name">m</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">removed</tt><tt class="py-op">]</tt> </tt>
+<a name="L685"></a><tt class="py-lineno"> 685</tt>  <tt class="py-line">                <tt class="py-comment"># Remove all ancestors of the indicated submodules</tt> </tt>
+<a name="L686"></a><tt class="py-lineno"> 686</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-comment"># from the docindex root.  E.g., if module x</tt> </tt>
+<a name="L687"></a><tt class="py-lineno"> 687</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-comment"># declares y to be undocumented, then x.y.z should</tt> </tt>
+<a name="L688"></a><tt class="py-lineno"> 688</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-comment"># also be undocumented.</tt> </tt>
+<a name="L689"></a><tt class="py-lineno"> 689</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-keyword">for</tt> <tt class="py-name">elt</tt> <tt class="py-keyword">in</tt> <tt class="py-name">docindex</tt><tt class="py-op">.</tt><tt class="py-name">root</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L690"></a><tt class="py-lineno"> 690</tt>  <tt class="py-line">                    <tt class="py-keyword">for</tt> <tt class="py-name">m</tt> <tt class="py-keyword">in</tt> <tt class="py-name">removed</tt><tt class="py-op">:</tt> </tt>
+<a name="L691"></a><tt class="py-lineno"> 691</tt>  <tt class="py-line">                        <tt class="py-keyword">if</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-324" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-324', 'canonical_name', 'link-47');">canonical_name</a></tt><tt class="py-op">.</tt><tt id="link-325" class="py-name" targets="Method epydoc.apidoc.DottedName.dominates()=epydoc.apidoc.DottedName-class.html#dominates"><a title="epydoc.apidoc.DottedName.dominates" class="py-name" href="#" onclick="return doclink('link-325', 'dominates', 'link-325');">dominates</a></tt><tt class="py-op">(</tt>< [...]
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-326', 'canonical_name', 'link-47');">canonical_name</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L692"></a><tt class="py-lineno"> 692</tt>  <tt class="py-line">                            <tt class="py-name">docindex</tt><tt class="py-op">.</tt><tt class="py-name">root</tt><tt class="py-op">.</tt><tt class="py-name">remove</tt><tt class="py-op">(</tt><tt class="py-name">elt</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L693"></a><tt class="py-lineno"> 693</tt>  <tt class="py-line"> </tt>
+<a name="process_group_field"></a><div id="process_group_field-def"><a name="L694"></a><tt class="py-lineno"> 694</tt> <a class="py-toggle" href="#" id="process_group_field-toggle" onclick="return toggle('process_group_field');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docstringparser-module.html#process_group_field">process_group_field</a><tt class="py-op">(</tt><tt class="py-param">api_doc</tt><tt class="py-op">,</tt> <tt class="py-pa [...]
+</div><div id="process_group_field-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="process_group_field-expanded"><a name="L695"></a><tt class="py-lineno"> 695</tt>  <tt class="py-line">    <tt class="py-docstring">"""Define a group named C{arg} containing the variables whose</tt> </tt>
+<a name="L696"></a><tt class="py-lineno"> 696</tt>  <tt class="py-line"><tt class="py-docstring">    names are listed in C{descr}."""</tt> </tt>
+<a name="L697"></a><tt class="py-lineno"> 697</tt>  <tt class="py-line">    <tt id="link-327" class="py-name"><a title="epydoc.checker.DocChecker._check
+epydoc.docstringparser._check" class="py-name" href="#" onclick="return doclink('link-327', '_check', 'link-277');">_check</a></tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt id="link-328" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-328', 'tag', 'link-84');">tag</a></tt><tt class="py-op">,</tt> <tt id="link-329" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" [...]
+<a name="L698"></a><tt class="py-lineno"> 698</tt>  <tt class="py-line">    <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-331" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.group_specs" class="py-name" href="#" onclick="return doclink('link-331', 'group_specs', 'link-187');">group_specs</a></tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt> <tt class="py-op">(</tt><tt id="link-332" class="py-name"><a title="epydoc.markup.Fiel [...]
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-334', 'descr', 'link-70');">descr</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt> </tt>
+</div><a name="L699"></a><tt class="py-lineno"> 699</tt>  <tt class="py-line">    <tt class="py-comment"># [xx] should this also set sort order?</tt> </tt>
+<a name="L700"></a><tt class="py-lineno"> 700</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="process_deffield_field"></a><div id="process_deffield_field-def"><a name="L701"></a><tt class="py-lineno"> 701</tt> <a class="py-toggle" href="#" id="process_deffield_field-toggle" onclick="return toggle('process_deffield_field');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docstringparser-module.html#process_deffield_field">process_deffield_field</a><tt class="py-op">(</tt><tt class="py-param">api_doc</tt><tt class="py-op">,</tt [...]
+</div><div id="process_deffield_field-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="process_deffield_field-expanded"><a name="L702"></a><tt class="py-lineno"> 702</tt>  <tt class="py-line">    <tt class="py-docstring">"""Define a new custom field."""</tt> </tt>
+<a name="L703"></a><tt class="py-lineno"> 703</tt>  <tt class="py-line">    <tt id="link-335" class="py-name"><a title="epydoc.checker.DocChecker._check
+epydoc.docstringparser._check" class="py-name" href="#" onclick="return doclink('link-335', '_check', 'link-277');">_check</a></tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt id="link-336" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-336', 'tag', 'link-84');">tag</a></tt><tt class="py-op">,</tt> <tt id="link-337" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" [...]
+<a name="L704"></a><tt class="py-lineno"> 704</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-338" class="py-name"><a title="epydoc.apidoc.APIDoc.extra_docstring_fields" class="py-name" href="#" onclick="return doclink('link-338', 'extra_docstring_fields', 'link-285');">extra_docstring_fields</a></tt> <tt class="py-keyword">is</tt> <tt id="link-339" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py [...]
+<a name="L705"></a><tt class="py-lineno"> 705</tt>  <tt class="py-line">        <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-340" class="py-name"><a title="epydoc.apidoc.APIDoc.extra_docstring_fields" class="py-name" href="#" onclick="return doclink('link-340', 'extra_docstring_fields', 'link-285');">extra_docstring_fields</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L706"></a><tt class="py-lineno"> 706</tt>  <tt class="py-line">    <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L707"></a><tt class="py-lineno"> 707</tt>  <tt class="py-line">        <tt class="py-name">docstring_field</tt> <tt class="py-op">=</tt> <tt id="link-341" class="py-name" targets="Function epydoc.docstringparser._descr_to_docstring_field()=epydoc.docstringparser-module.html#_descr_to_docstring_field"><a title="epydoc.docstringparser._descr_to_docstring_field" class="py-name" href="#" onclick="return doclink('link-341', '_descr_to_docstring_field', 'link-341');">_descr_to_docstri [...]
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-343', 'descr', 'link-70');">descr</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L708"></a><tt class="py-lineno"> 708</tt>  <tt class="py-line">        <tt class="py-name">docstring_field</tt><tt class="py-op">.</tt><tt class="py-name">varnames</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">"__%s__"</tt> <tt class="py-op">%</tt> <tt id="link-344" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-344', 'arg', 'link-85');">arg</a></tt><tt class="py [...]
+<a name="L709"></a><tt class="py-lineno"> 709</tt>  <tt class="py-line">        <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-345" class="py-name"><a title="epydoc.apidoc.APIDoc.extra_docstring_fields" class="py-name" href="#" onclick="return doclink('link-345', 'extra_docstring_fields', 'link-285');">extra_docstring_fields</a></tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">docstring_field</tt><tt class="py-op [...]
+<a name="L710"></a><tt class="py-lineno"> 710</tt>  <tt class="py-line">    <tt class="py-keyword">except</tt> <tt class="py-name">ValueError</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
+<a name="L711"></a><tt class="py-lineno"> 711</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">'Bad %s: %s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt id="link-346" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-346', 'tag', 'link-84');">tag</a></tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op" [...]
+</div><a name="L712"></a><tt class="py-lineno"> 712</tt>  <tt class="py-line"> </tt>
+<a name="process_raise_field"></a><div id="process_raise_field-def"><a name="L713"></a><tt class="py-lineno"> 713</tt> <a class="py-toggle" href="#" id="process_raise_field-toggle" onclick="return toggle('process_raise_field');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docstringparser-module.html#process_raise_field">process_raise_field</a><tt class="py-op">(</tt><tt class="py-param">api_doc</tt><tt class="py-op">,</tt> <tt class="py-pa [...]
+</div><div id="process_raise_field-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="process_raise_field-expanded"><a name="L714"></a><tt class="py-lineno"> 714</tt>  <tt class="py-line">    <tt class="py-docstring">"""Record the fact that C{api_doc} can raise the exception named</tt> </tt>
+<a name="L715"></a><tt class="py-lineno"> 715</tt>  <tt class="py-line"><tt class="py-docstring">    C{tag} in C{api_doc.exception_descrs}."""</tt> </tt>
+<a name="L716"></a><tt class="py-lineno"> 716</tt>  <tt class="py-line">    <tt id="link-347" class="py-name"><a title="epydoc.checker.DocChecker._check
+epydoc.docstringparser._check" class="py-name" href="#" onclick="return doclink('link-347', '_check', 'link-277');">_check</a></tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt id="link-348" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-348', 'tag', 'link-84');">tag</a></tt><tt class="py-op">,</tt> <tt id="link-349" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" [...]
+<a name="L717"></a><tt class="py-lineno"> 717</tt>  <tt class="py-line">    <tt class="py-keyword">try</tt><tt class="py-op">:</tt> <tt id="link-351" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-351', 'name', 'link-207');">name</a></tt> <tt class="py-op">=</tt> <tt id="link-352" class="py-name" targets="Class epydoc.apidoc.DottedName=epydoc.apidoc.DottedName-class.html"><a title="epydoc.apidoc.DottedName" class="py-name" [...]
+<a name="L718"></a><tt class="py-lineno"> 718</tt>  <tt class="py-line">    <tt class="py-keyword">except</tt> <tt id="link-354" class="py-name"><a title="epydoc.apidoc.DottedName" class="py-name" href="#" onclick="return doclink('link-354', 'DottedName', 'link-352');">DottedName</a></tt><tt class="py-op">.</tt><tt id="link-355" class="py-name" targets="Class epydoc.apidoc.DottedName.InvalidDottedName=epydoc.apidoc.DottedName.InvalidDottedName-class.html"><a title="epydoc.apidoc.DottedNa [...]
+<a name="L719"></a><tt class="py-lineno"> 719</tt>  <tt class="py-line">    <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-358" class="py-name"><a title="epydoc.apidoc.RoutineDoc.exception_descrs" class="py-name" href="#" onclick="return doclink('link-358', 'exception_descrs', 'link-178');">exception_descrs</a></tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt> <tt class="py-op">(</tt><tt id="link-359" class="py-name"><a title="epydo [...]
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-360', 'descr', 'link-70');">descr</a></tt><tt class="py-op">)</tt> <tt class="py-op">)</tt> </tt>
+</div><a name="L720"></a><tt class="py-lineno"> 720</tt>  <tt class="py-line"> </tt>
+<a name="process_sort_field"></a><div id="process_sort_field-def"><a name="L721"></a><tt class="py-lineno"> 721</tt> <a class="py-toggle" href="#" id="process_sort_field-toggle" onclick="return toggle('process_sort_field');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docstringparser-module.html#process_sort_field">process_sort_field</a><tt class="py-op">(</tt><tt class="py-param">api_doc</tt><tt class="py-op">,</tt> <tt class="py-param">d [...]
+</div><div id="process_sort_field-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="process_sort_field-expanded"><a name="L722"></a><tt class="py-lineno"> 722</tt>  <tt class="py-line">    <tt id="link-361" class="py-name"><a title="epydoc.checker.DocChecker._check
+epydoc.docstringparser._check" class="py-name" href="#" onclick="return doclink('link-361', '_check', 'link-277');">_check</a></tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt id="link-362" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-362', 'tag', 'link-84');">tag</a></tt><tt class="py-op">,</tt> <tt id="link-363" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" [...]
+<a name="L723"></a><tt class="py-lineno"> 723</tt>  <tt class="py-line">    <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-365" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.sort_spec" class="py-name" href="#" onclick="return doclink('link-365', 'sort_spec', 'link-153');">sort_spec</a></tt> <tt class="py-op">=</tt> <tt id="link-366" class="py-name"><a title="epydoc.docstringparser._descr_to_identifiers" class="py-name" href="#" onclick="return doclink('link-3 [...]
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-367', 'descr', 'link-70');">descr</a></tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-368" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.sort_spec" class="py-name" href="#" onclick="return doclink('link-368', 'sort_spec', 'link-153');">sort_spec</a></tt> </tt>
+</div><a name="L724"></a><tt class="py-lineno"> 724</tt>  <tt class="py-line"> </tt>
+<a name="L725"></a><tt class="py-lineno"> 725</tt>  <tt class="py-line"><tt class="py-comment"># [xx] should I notice when they give a type for an unknown var?</tt> </tt>
+<a name="process_type_field"></a><div id="process_type_field-def"><a name="L726"></a><tt class="py-lineno"> 726</tt> <a class="py-toggle" href="#" id="process_type_field-toggle" onclick="return toggle('process_type_field');">-</a><tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docstringparser-module.html#process_type_field">process_type_field</a><tt class="py-op">(</tt><tt class="py-param">api_doc</tt><tt class="py-op">, [...]
+</div><div id="process_type_field-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="process_type_field-expanded"><a name="L727"></a><tt class="py-lineno"> 727</tt>  <tt class="py-line">    <tt class="py-comment"># In namespace, "@type var: ..." describes the type of a var.</tt> </tt>
+<a name="L728"></a><tt class="py-lineno"> 728</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt id="link-369" class="py-name"><a title="epydoc.apidoc.NamespaceDoc" class="py-name" href="#" onclick="return doclink('link-369', 'NamespaceDoc', 'link-54');">NamespaceDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L729"></a><tt class="py-lineno"> 729</tt>  <tt class="py-line">        <tt id="link-370" class="py-name"><a title="epydoc.checker.DocChecker._check
+epydoc.docstringparser._check" class="py-name" href="#" onclick="return doclink('link-370', '_check', 'link-277');">_check</a></tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt id="link-371" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-371', 'tag', 'link-84');">tag</a></tt><tt class="py-op">,</tt> <tt id="link-372" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" [...]
+<a name="L730"></a><tt class="py-lineno"> 730</tt>  <tt class="py-line">        <tt id="link-373" class="py-name" targets="Function epydoc.docstringparser.set_var_type()=epydoc.docstringparser-module.html#set_var_type"><a title="epydoc.docstringparser.set_var_type" class="py-name" href="#" onclick="return doclink('link-373', 'set_var_type', 'link-373');">set_var_type</a></tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt id="link-374" class="py-name" [...]
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-375', 'descr', 'link-70');">descr</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L731"></a><tt class="py-lineno"> 731</tt>  <tt class="py-line"> </tt>
+<a name="L732"></a><tt class="py-lineno"> 732</tt>  <tt class="py-line">    <tt class="py-comment"># For variables & properties, "@type: ..." describes the variable.</tt> </tt>
+<a name="L733"></a><tt class="py-lineno"> 733</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt id="link-376" class="py-name"><a title="epydoc.apidoc.VariableDoc" class="py-name" href="#" onclick="return doclink('link-376', 'VariableDoc', 'link-181');">VariableDoc</a></tt><tt class="py-op">,</tt> <tt id="l [...]
+<a name="L734"></a><tt class="py-lineno"> 734</tt>  <tt class="py-line">        <tt id="link-378" class="py-name"><a title="epydoc.checker.DocChecker._check
+epydoc.docstringparser._check" class="py-name" href="#" onclick="return doclink('link-378', '_check', 'link-277');">_check</a></tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt id="link-379" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-379', 'tag', 'link-84');">tag</a></tt><tt class="py-op">,</tt> <tt id="link-380" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" [...]
+<a name="L735"></a><tt class="py-lineno"> 735</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-381" class="py-name"><a title="epydoc.apidoc.PropertyDoc.type_descr
+epydoc.apidoc.VariableDoc.type_descr
+epydoc.docwriter.html.HTMLWriter.type_descr" class="py-name" href="#" onclick="return doclink('link-381', 'type_descr', 'link-183');">type_descr</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L736"></a><tt class="py-lineno"> 736</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt id="link-382" class="py-name"><a title="epydoc.docstringparser.REDEFINED" class="py-name" href="#" onclick="return doclink('link-382', 'REDEFINED', 'link-264');">REDEFINED</a></tt> <tt class="py-op">%</tt> <tt id="link-383" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="re [...]
+<a name="L737"></a><tt class="py-lineno"> 737</tt>  <tt class="py-line">        <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-384" class="py-name"><a title="epydoc.apidoc.PropertyDoc.type_descr
+epydoc.apidoc.VariableDoc.type_descr
+epydoc.docwriter.html.HTMLWriter.type_descr" class="py-name" href="#" onclick="return doclink('link-384', 'type_descr', 'link-183');">type_descr</a></tt> <tt class="py-op">=</tt> <tt id="link-385" class="py-name"><a title="epydoc.apidoc.APIDoc.descr
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-385', 'descr', 'link-70');">descr</a></tt> </tt>
+<a name="L738"></a><tt class="py-lineno"> 738</tt>  <tt class="py-line"> </tt>
+<a name="L739"></a><tt class="py-lineno"> 739</tt>  <tt class="py-line">    <tt class="py-comment"># For routines, "@type param: ..." describes a parameter.</tt> </tt>
+<a name="L740"></a><tt class="py-lineno"> 740</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt id="link-386" class="py-name"><a title="epydoc.apidoc.RoutineDoc" class="py-name" href="#" onclick="return doclink('link-386', 'RoutineDoc', 'link-46');">RoutineDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L741"></a><tt class="py-lineno"> 741</tt>  <tt class="py-line">        <tt id="link-387" class="py-name"><a title="epydoc.checker.DocChecker._check
+epydoc.docstringparser._check" class="py-name" href="#" onclick="return doclink('link-387', '_check', 'link-277');">_check</a></tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt id="link-388" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-388', 'tag', 'link-84');">tag</a></tt><tt class="py-op">,</tt> <tt id="link-389" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" [...]
+<a name="L742"></a><tt class="py-lineno"> 742</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-390" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-390', 'arg', 'link-85');">arg</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-391" class="py-name"><a title="epydoc.apidoc.RoutineDoc.arg_types" class="py-name" href="#" onclick="return doclink('l [...]
+<a name="L743"></a><tt class="py-lineno"> 743</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt id="link-392" class="py-name"><a title="epydoc.docstringparser.REDEFINED" class="py-name" href="#" onclick="return doclink('link-392', 'REDEFINED', 'link-264');">REDEFINED</a></tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-string">'type for '</tt><tt class="py-op">+</tt><tt id="link-393" c [...]
+<a name="L744"></a><tt class="py-lineno"> 744</tt>  <tt class="py-line">        <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-394" class="py-name"><a title="epydoc.apidoc.RoutineDoc.arg_types" class="py-name" href="#" onclick="return doclink('link-394', 'arg_types', 'link-169');">arg_types</a></tt><tt class="py-op">[</tt><tt id="link-395" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-395', 'arg', 'link-85' [...]
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-396', 'descr', 'link-70');">descr</a></tt> </tt>
+<a name="L745"></a><tt class="py-lineno"> 745</tt>  <tt class="py-line"> </tt>
+<a name="L746"></a><tt class="py-lineno"> 746</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L747"></a><tt class="py-lineno"> 747</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt id="link-397" class="py-name"><a title="epydoc.docstringparser.BAD_CONTEXT" class="py-name" href="#" onclick="return doclink('link-397', 'BAD_CONTEXT', 'link-263');">BAD_CONTEXT</a></tt> <tt class="py-op">%</tt> <tt id="link-398" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick=" [...]
+</div><a name="L748"></a><tt class="py-lineno"> 748</tt>  <tt class="py-line">         </tt>
+<a name="process_var_field"></a><div id="process_var_field-def"><a name="L749"></a><tt class="py-lineno"> 749</tt> <a class="py-toggle" href="#" id="process_var_field-toggle" onclick="return toggle('process_var_field');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docstringparser-module.html#process_var_field">process_var_field</a><tt class="py-op">(</tt><tt class="py-param">api_doc</tt><tt class="py-op">,</tt> <tt class="py-param">docinde [...]
+</div><div id="process_var_field-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="process_var_field-expanded"><a name="L750"></a><tt class="py-lineno"> 750</tt>  <tt class="py-line">    <tt id="link-399" class="py-name"><a title="epydoc.checker.DocChecker._check
+epydoc.docstringparser._check" class="py-name" href="#" onclick="return doclink('link-399', '_check', 'link-277');">_check</a></tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt id="link-400" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-400', 'tag', 'link-84');">tag</a></tt><tt class="py-op">,</tt> <tt id="link-401" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" [...]
+<a name="L751"></a><tt class="py-lineno"> 751</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">ident</tt> <tt class="py-keyword">in</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'[:;, ] *'</tt><tt class="py-op">,</tt> <tt id="link-403" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-403', 'arg', 'link-85');">arg</ [...]
+<a name="L752"></a><tt class="py-lineno"> 752</tt>  <tt class="py-line">        <tt id="link-404" class="py-name" targets="Function epydoc.docstringparser.set_var_descr()=epydoc.docstringparser-module.html#set_var_descr"><a title="epydoc.docstringparser.set_var_descr" class="py-name" href="#" onclick="return doclink('link-404', 'set_var_descr', 'link-404');">set_var_descr</a></tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt class="py-name">ident</t [...]
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-405', 'descr', 'link-70');">descr</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L753"></a><tt class="py-lineno"> 753</tt>  <tt class="py-line">         </tt>
+<a name="process_cvar_field"></a><div id="process_cvar_field-def"><a name="L754"></a><tt class="py-lineno"> 754</tt> <a class="py-toggle" href="#" id="process_cvar_field-toggle" onclick="return toggle('process_cvar_field');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docstringparser-module.html#process_cvar_field">process_cvar_field</a><tt class="py-op">(</tt><tt class="py-param">api_doc</tt><tt class="py-op">,</tt> <tt class="py-param">d [...]
+</div><div id="process_cvar_field-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="process_cvar_field-expanded"><a name="L755"></a><tt class="py-lineno"> 755</tt>  <tt class="py-line">    <tt class="py-comment"># If @cvar is used *within* a variable, then use it as the</tt> </tt>
+<a name="L756"></a><tt class="py-lineno"> 756</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># variable's description, and treat the variable as a class var.</tt> </tt>
+<a name="L757"></a><tt class="py-lineno"> 757</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt id="link-406" class="py-name"><a title="epydoc.apidoc.VariableDoc" class="py-name" href="#" onclick="return doclink('link-406', 'VariableDoc', 'link-181');">VariableDoc</a></tt><tt class="py-op">)</tt> <tt class=" [...]
+<a name="L758"></a><tt class="py-lineno"> 758</tt>  <tt class="py-line">        <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-407" class="py-name" targets="Method epydoc.apidoc.DocIndex.container()=epydoc.apidoc.DocIndex-class.html#container,Method epydoc.apidoc.DottedName.container()=epydoc.apidoc.DottedName-class.html#container,Variable epydoc.apidoc.VariableDoc.container=epydoc.apidoc.VariableDoc-class.h [...]
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-407', 'container', 'link-407');">container</a></tt><tt class="py-op">,</tt> <tt id="link-408" class="py-name"><a title="epydoc.apidoc.ClassDoc" class="py-name" href="#" onclick="return doclink('link-408', 'ClassDoc', 'link-74');">ClassDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L759"></a><tt class="py-lineno"> 759</tt>  <tt class="py-line">        <tt id="link-409" class="py-name"><a title="epydoc.checker.DocChecker._check
+epydoc.docstringparser._check" class="py-name" href="#" onclick="return doclink('link-409', '_check', 'link-277');">_check</a></tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt id="link-410" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-410', 'tag', 'link-84');">tag</a></tt><tt class="py-op">,</tt> <tt id="link-411" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" [...]
+<a name="L760"></a><tt class="py-lineno"> 760</tt>  <tt class="py-line">        <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-412" class="py-name" targets="Variable epydoc.apidoc.VariableDoc.is_instvar=epydoc.apidoc.VariableDoc-class.html#is_instvar"><a title="epydoc.apidoc.VariableDoc.is_instvar" class="py-name" href="#" onclick="return doclink('link-412', 'is_instvar', 'link-412');">is_instvar</a></tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L761"></a><tt class="py-lineno"> 761</tt>  <tt class="py-line">        <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-413" class="py-name"><a title="epydoc.apidoc.APIDoc.descr
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-413', 'descr', 'link-70');">descr</a></tt> <tt class="py-op">=</tt> <tt id="link-414" class="py-name"><a title="epydoc.markup
+epydoc.markup.doctest.DoctestColorizer.markup
+epydoc.markup.doctest.HTMLDoctestColorizer.markup
+epydoc.markup.doctest.LaTeXDoctestColorizer.markup
+epydoc.markup.doctest.XMLDoctestColorizer.markup" class="py-name" href="#" onclick="return doclink('link-414', 'markup', 'link-1');">markup</a></tt><tt class="py-op">.</tt><tt id="link-415" class="py-name" targets="Class epydoc.markup.ConcatenatedDocstring=epydoc.markup.ConcatenatedDocstring-class.html"><a title="epydoc.markup.ConcatenatedDocstring" class="py-name" href="#" onclick="return doclink('link-415', 'ConcatenatedDocstring', 'link-415');">ConcatenatedDocstring</a></tt><tt class= [...]
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-416', 'descr', 'link-70');">descr</a></tt><tt class="py-op">,</tt> <tt id="link-417" class="py-name"><a title="epydoc.apidoc.APIDoc.descr
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-417', 'descr', 'link-70');">descr</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L762"></a><tt class="py-lineno"> 762</tt>  <tt class="py-line">        <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-418" class="py-name"><a title="epydoc.apidoc.APIDoc.summary
+epydoc.docwriter.html.HTMLWriter.summary
+epydoc.markup.ConcatenatedDocstring.summary
+epydoc.markup.ParsedDocstring.summary
+epydoc.markup.epytext.ParsedEpytextDocstring.summary
+epydoc.markup.javadoc.ParsedJavadocDocstring.summary
+epydoc.markup.plaintext.ParsedPlaintextDocstring.summary
+epydoc.markup.restructuredtext.ParsedRstDocstring.summary" class="py-name" href="#" onclick="return doclink('link-418', 'summary', 'link-96');">summary</a></tt><tt class="py-op">,</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-419" class="py-name"><a title="epydoc.apidoc.APIDoc.other_docs" class="py-name" href="#" onclick="return doclink('link-419', 'other_docs', 'link-99');">other_docs</a></tt> <tt class="py-op">=</tt> <tt id="link-420" class="py-name"><a titl [...]
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-420', 'descr', 'link-70');">descr</a></tt><tt class="py-op">.</tt><tt id="link-421" class="py-name"><a title="epydoc.apidoc.APIDoc.summary
+epydoc.docwriter.html.HTMLWriter.summary
+epydoc.markup.ConcatenatedDocstring.summary
+epydoc.markup.ParsedDocstring.summary
+epydoc.markup.epytext.ParsedEpytextDocstring.summary
+epydoc.markup.javadoc.ParsedJavadocDocstring.summary
+epydoc.markup.plaintext.ParsedPlaintextDocstring.summary
+epydoc.markup.restructuredtext.ParsedRstDocstring.summary" class="py-name" href="#" onclick="return doclink('link-421', 'summary', 'link-96');">summary</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L763"></a><tt class="py-lineno"> 763</tt>  <tt class="py-line"> </tt>
+<a name="L764"></a><tt class="py-lineno"> 764</tt>  <tt class="py-line">    <tt class="py-comment"># Otherwise, @cvar should be used in a class.</tt> </tt>
+<a name="L765"></a><tt class="py-lineno"> 765</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L766"></a><tt class="py-lineno"> 766</tt>  <tt class="py-line">        <tt id="link-422" class="py-name"><a title="epydoc.checker.DocChecker._check
+epydoc.docstringparser._check" class="py-name" href="#" onclick="return doclink('link-422', '_check', 'link-277');">_check</a></tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt id="link-423" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-423', 'tag', 'link-84');">tag</a></tt><tt class="py-op">,</tt> <tt id="link-424" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" [...]
+<a name="L767"></a><tt class="py-lineno"> 767</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">ident</tt> <tt class="py-keyword">in</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'[:;, ] *'</tt><tt class="py-op">,</tt> <tt id="link-426" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-426', 'arg', 'link-85');">a [...]
+<a name="L768"></a><tt class="py-lineno"> 768</tt>  <tt class="py-line">            <tt id="link-427" class="py-name"><a title="epydoc.docstringparser.set_var_descr" class="py-name" href="#" onclick="return doclink('link-427', 'set_var_descr', 'link-404');">set_var_descr</a></tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt class="py-name">ident</tt><tt class="py-op">,</tt> <tt id="link-428" class="py-name"><a title="epydoc.apidoc.APIDoc.descr
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-428', 'descr', 'link-70');">descr</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L769"></a><tt class="py-lineno"> 769</tt>  <tt class="py-line">            <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-429" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-429', 'variables', 'link-75');">variables</a></tt><tt class="py-op">[</tt><tt class="py-name">ident</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-430" class="py-name"><a title="epydoc.apidoc.Varia [...]
+</div><a name="L770"></a><tt class="py-lineno"> 770</tt>  <tt class="py-line">         </tt>
+<a name="process_ivar_field"></a><div id="process_ivar_field-def"><a name="L771"></a><tt class="py-lineno"> 771</tt> <a class="py-toggle" href="#" id="process_ivar_field-toggle" onclick="return toggle('process_ivar_field');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docstringparser-module.html#process_ivar_field">process_ivar_field</a><tt class="py-op">(</tt><tt class="py-param">api_doc</tt><tt class="py-op">,</tt> <tt class="py-param">d [...]
+</div><div id="process_ivar_field-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="process_ivar_field-expanded"><a name="L772"></a><tt class="py-lineno"> 772</tt>  <tt class="py-line">    <tt class="py-comment"># If @ivar is used *within* a variable, then use it as the</tt> </tt>
+<a name="L773"></a><tt class="py-lineno"> 773</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># variable's description, and treat the variable as an instvar.</tt> </tt>
+<a name="L774"></a><tt class="py-lineno"> 774</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt id="link-431" class="py-name"><a title="epydoc.apidoc.VariableDoc" class="py-name" href="#" onclick="return doclink('link-431', 'VariableDoc', 'link-181');">VariableDoc</a></tt><tt class="py-op">)</tt> <tt class=" [...]
+<a name="L775"></a><tt class="py-lineno"> 775</tt>  <tt class="py-line">        <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-432" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-432', 'container', 'link-407');">container</a></tt><tt class="py-op">,</tt> <tt id="link-433" class="py-name"><a title="epydoc.apidoc.ClassDoc" class="py-name" href="#" onclick="return doclink('link-433', 'ClassDoc', 'link-74');">ClassDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L776"></a><tt class="py-lineno"> 776</tt>  <tt class="py-line">        <tt id="link-434" class="py-name"><a title="epydoc.checker.DocChecker._check
+epydoc.docstringparser._check" class="py-name" href="#" onclick="return doclink('link-434', '_check', 'link-277');">_check</a></tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt id="link-435" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-435', 'tag', 'link-84');">tag</a></tt><tt class="py-op">,</tt> <tt id="link-436" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" [...]
+<a name="L777"></a><tt class="py-lineno"> 777</tt>  <tt class="py-line">        <tt class="py-comment"># require that there be no other descr?</tt> </tt>
+<a name="L778"></a><tt class="py-lineno"> 778</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-437" class="py-name"><a title="epydoc.apidoc.VariableDoc.is_instvar" class="py-name" href="#" onclick="return doclink('link-437', 'is_instvar', 'link-412');">is_instvar</a></tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L779"></a><tt class="py-lineno"> 779</tt>  <tt class="py-line">        <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-438" class="py-name"><a title="epydoc.apidoc.APIDoc.descr
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-438', 'descr', 'link-70');">descr</a></tt> <tt class="py-op">=</tt> <tt id="link-439" class="py-name"><a title="epydoc.markup
+epydoc.markup.doctest.DoctestColorizer.markup
+epydoc.markup.doctest.HTMLDoctestColorizer.markup
+epydoc.markup.doctest.LaTeXDoctestColorizer.markup
+epydoc.markup.doctest.XMLDoctestColorizer.markup" class="py-name" href="#" onclick="return doclink('link-439', 'markup', 'link-1');">markup</a></tt><tt class="py-op">.</tt><tt id="link-440" class="py-name"><a title="epydoc.markup.ConcatenatedDocstring" class="py-name" href="#" onclick="return doclink('link-440', 'ConcatenatedDocstring', 'link-415');">ConcatenatedDocstring</a></tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-441" class="py-n [...]
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-441', 'descr', 'link-70');">descr</a></tt><tt class="py-op">,</tt> <tt id="link-442" class="py-name"><a title="epydoc.apidoc.APIDoc.descr
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-442', 'descr', 'link-70');">descr</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L780"></a><tt class="py-lineno"> 780</tt>  <tt class="py-line">        <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-443" class="py-name"><a title="epydoc.apidoc.APIDoc.summary
+epydoc.docwriter.html.HTMLWriter.summary
+epydoc.markup.ConcatenatedDocstring.summary
+epydoc.markup.ParsedDocstring.summary
+epydoc.markup.epytext.ParsedEpytextDocstring.summary
+epydoc.markup.javadoc.ParsedJavadocDocstring.summary
+epydoc.markup.plaintext.ParsedPlaintextDocstring.summary
+epydoc.markup.restructuredtext.ParsedRstDocstring.summary" class="py-name" href="#" onclick="return doclink('link-443', 'summary', 'link-96');">summary</a></tt><tt class="py-op">,</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-444" class="py-name"><a title="epydoc.apidoc.APIDoc.other_docs" class="py-name" href="#" onclick="return doclink('link-444', 'other_docs', 'link-99');">other_docs</a></tt> <tt class="py-op">=</tt> <tt id="link-445" class="py-name"><a titl [...]
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-445', 'descr', 'link-70');">descr</a></tt><tt class="py-op">.</tt><tt id="link-446" class="py-name"><a title="epydoc.apidoc.APIDoc.summary
+epydoc.docwriter.html.HTMLWriter.summary
+epydoc.markup.ConcatenatedDocstring.summary
+epydoc.markup.ParsedDocstring.summary
+epydoc.markup.epytext.ParsedEpytextDocstring.summary
+epydoc.markup.javadoc.ParsedJavadocDocstring.summary
+epydoc.markup.plaintext.ParsedPlaintextDocstring.summary
+epydoc.markup.restructuredtext.ParsedRstDocstring.summary" class="py-name" href="#" onclick="return doclink('link-446', 'summary', 'link-96');">summary</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L781"></a><tt class="py-lineno"> 781</tt>  <tt class="py-line"> </tt>
+<a name="L782"></a><tt class="py-lineno"> 782</tt>  <tt class="py-line">    <tt class="py-comment"># Otherwise, @ivar should be used in a class.</tt> </tt>
+<a name="L783"></a><tt class="py-lineno"> 783</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L784"></a><tt class="py-lineno"> 784</tt>  <tt class="py-line">        <tt id="link-447" class="py-name"><a title="epydoc.checker.DocChecker._check
+epydoc.docstringparser._check" class="py-name" href="#" onclick="return doclink('link-447', '_check', 'link-277');">_check</a></tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt id="link-448" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-448', 'tag', 'link-84');">tag</a></tt><tt class="py-op">,</tt> <tt id="link-449" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" [...]
+<a name="L785"></a><tt class="py-lineno"> 785</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">ident</tt> <tt class="py-keyword">in</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'[:;, ] *'</tt><tt class="py-op">,</tt> <tt id="link-451" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-451', 'arg', 'link-85');">a [...]
+<a name="L786"></a><tt class="py-lineno"> 786</tt>  <tt class="py-line">            <tt id="link-452" class="py-name"><a title="epydoc.docstringparser.set_var_descr" class="py-name" href="#" onclick="return doclink('link-452', 'set_var_descr', 'link-404');">set_var_descr</a></tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt class="py-name">ident</tt><tt class="py-op">,</tt> <tt id="link-453" class="py-name"><a title="epydoc.apidoc.APIDoc.descr
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-453', 'descr', 'link-70');">descr</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L787"></a><tt class="py-lineno"> 787</tt>  <tt class="py-line">            <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-454" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-454', 'variables', 'link-75');">variables</a></tt><tt class="py-op">[</tt><tt class="py-name">ident</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-455" class="py-name"><a title="epydoc.apidoc.Varia [...]
+</div><a name="L788"></a><tt class="py-lineno"> 788</tt>  <tt class="py-line"> </tt>
+<a name="L789"></a><tt class="py-lineno"> 789</tt>  <tt class="py-line"><tt class="py-comment"># [xx] '@return: foo' used to get used as a descr if no other</tt> </tt>
+<a name="L790"></a><tt class="py-lineno"> 790</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># descr was present.  is that still true?</tt> </tt>
+<a name="process_return_field"></a><div id="process_return_field-def"><a name="L791"></a><tt class="py-lineno"> 791</tt> <a class="py-toggle" href="#" id="process_return_field-toggle" onclick="return toggle('process_return_field');">-</a><tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docstringparser-module.html#process_return_field">process_return_field</a><tt class="py-op">(</tt><tt class="py-param">api_doc</tt><tt cla [...]
+</div><div id="process_return_field-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="process_return_field-expanded"><a name="L792"></a><tt class="py-lineno"> 792</tt>  <tt class="py-line">    <tt id="link-456" class="py-name"><a title="epydoc.checker.DocChecker._check
+epydoc.docstringparser._check" class="py-name" href="#" onclick="return doclink('link-456', '_check', 'link-277');">_check</a></tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt id="link-457" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-457', 'tag', 'link-84');">tag</a></tt><tt class="py-op">,</tt> <tt id="link-458" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" [...]
+<a name="L793"></a><tt class="py-lineno"> 793</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-460" class="py-name"><a title="epydoc.apidoc.RoutineDoc.return_descr
+epydoc.docwriter.html.HTMLWriter.return_descr" class="py-name" href="#" onclick="return doclink('link-460', 'return_descr', 'link-104');">return_descr</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L794"></a><tt class="py-lineno"> 794</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt id="link-461" class="py-name"><a title="epydoc.docstringparser.REDEFINED" class="py-name" href="#" onclick="return doclink('link-461', 'REDEFINED', 'link-264');">REDEFINED</a></tt> <tt class="py-op">%</tt> <tt class="py-string">'return value description'</tt><tt class="py-op">)</tt> </tt>
+<a name="L795"></a><tt class="py-lineno"> 795</tt>  <tt class="py-line">    <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-462" class="py-name"><a title="epydoc.apidoc.RoutineDoc.return_descr
+epydoc.docwriter.html.HTMLWriter.return_descr" class="py-name" href="#" onclick="return doclink('link-462', 'return_descr', 'link-104');">return_descr</a></tt> <tt class="py-op">=</tt> <tt id="link-463" class="py-name"><a title="epydoc.apidoc.APIDoc.descr
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-463', 'descr', 'link-70');">descr</a></tt> </tt>
+</div><a name="L796"></a><tt class="py-lineno"> 796</tt>  <tt class="py-line"> </tt>
+<a name="process_rtype_field"></a><div id="process_rtype_field-def"><a name="L797"></a><tt class="py-lineno"> 797</tt> <a class="py-toggle" href="#" id="process_rtype_field-toggle" onclick="return toggle('process_rtype_field');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docstringparser-module.html#process_rtype_field">process_rtype_field</a><tt class="py-op">(</tt><tt class="py-param">api_doc</tt><tt class="py-op">,</tt> <tt class="py-pa [...]
+</div><div id="process_rtype_field-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="process_rtype_field-expanded"><a name="L798"></a><tt class="py-lineno"> 798</tt>  <tt class="py-line">    <tt id="link-464" class="py-name"><a title="epydoc.checker.DocChecker._check
+epydoc.docstringparser._check" class="py-name" href="#" onclick="return doclink('link-464', '_check', 'link-277');">_check</a></tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt id="link-465" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-465', 'tag', 'link-84');">tag</a></tt><tt class="py-op">,</tt> <tt id="link-466" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" [...]
+<a name="L799"></a><tt class="py-lineno"> 799</tt>  <tt class="py-line">           <tt class="py-name">context</tt><tt class="py-op">=</tt><tt class="py-op">(</tt><tt id="link-467" class="py-name"><a title="epydoc.apidoc.RoutineDoc" class="py-name" href="#" onclick="return doclink('link-467', 'RoutineDoc', 'link-46');">RoutineDoc</a></tt><tt class="py-op">,</tt> <tt id="link-468" class="py-name"><a title="epydoc.apidoc.PropertyDoc" class="py-name" href="#" onclick="return doclink('link-4 [...]
+<a name="L800"></a><tt class="py-lineno"> 800</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt id="link-469" class="py-name"><a title="epydoc.apidoc.RoutineDoc" class="py-name" href="#" onclick="return doclink('link-469', 'RoutineDoc', 'link-46');">RoutineDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L801"></a><tt class="py-lineno"> 801</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-470" class="py-name"><a title="epydoc.apidoc.RoutineDoc.return_type
+epydoc.docwriter.html.HTMLWriter.return_type" class="py-name" href="#" onclick="return doclink('link-470', 'return_type', 'link-175');">return_type</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L802"></a><tt class="py-lineno"> 802</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt id="link-471" class="py-name"><a title="epydoc.docstringparser.REDEFINED" class="py-name" href="#" onclick="return doclink('link-471', 'REDEFINED', 'link-264');">REDEFINED</a></tt> <tt class="py-op">%</tt> <tt class="py-string">'return value type'</tt><tt class="py-op">)</tt> </tt>
+<a name="L803"></a><tt class="py-lineno"> 803</tt>  <tt class="py-line">        <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-472" class="py-name"><a title="epydoc.apidoc.RoutineDoc.return_type
+epydoc.docwriter.html.HTMLWriter.return_type" class="py-name" href="#" onclick="return doclink('link-472', 'return_type', 'link-175');">return_type</a></tt> <tt class="py-op">=</tt> <tt id="link-473" class="py-name"><a title="epydoc.apidoc.APIDoc.descr
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-473', 'descr', 'link-70');">descr</a></tt> </tt>
+<a name="L804"></a><tt class="py-lineno"> 804</tt>  <tt class="py-line"> </tt>
+<a name="L805"></a><tt class="py-lineno"> 805</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt id="link-474" class="py-name"><a title="epydoc.apidoc.PropertyDoc" class="py-name" href="#" onclick="return doclink('link-474', 'PropertyDoc', 'link-182');">PropertyDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L806"></a><tt class="py-lineno"> 806</tt>  <tt class="py-line">        <tt id="link-475" class="py-name"><a title="epydoc.checker.DocChecker._check
+epydoc.docstringparser._check" class="py-name" href="#" onclick="return doclink('link-475', '_check', 'link-277');">_check</a></tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt id="link-476" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-476', 'tag', 'link-84');">tag</a></tt><tt class="py-op">,</tt> <tt id="link-477" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" [...]
+<a name="L807"></a><tt class="py-lineno"> 807</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-478" class="py-name"><a title="epydoc.apidoc.PropertyDoc.type_descr
+epydoc.apidoc.VariableDoc.type_descr
+epydoc.docwriter.html.HTMLWriter.type_descr" class="py-name" href="#" onclick="return doclink('link-478', 'type_descr', 'link-183');">type_descr</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L808"></a><tt class="py-lineno"> 808</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt id="link-479" class="py-name"><a title="epydoc.docstringparser.REDEFINED" class="py-name" href="#" onclick="return doclink('link-479', 'REDEFINED', 'link-264');">REDEFINED</a></tt> <tt class="py-op">%</tt> <tt id="link-480" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="re [...]
+<a name="L809"></a><tt class="py-lineno"> 809</tt>  <tt class="py-line">        <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-481" class="py-name"><a title="epydoc.apidoc.PropertyDoc.type_descr
+epydoc.apidoc.VariableDoc.type_descr
+epydoc.docwriter.html.HTMLWriter.type_descr" class="py-name" href="#" onclick="return doclink('link-481', 'type_descr', 'link-183');">type_descr</a></tt> <tt class="py-op">=</tt> <tt id="link-482" class="py-name"><a title="epydoc.apidoc.APIDoc.descr
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-482', 'descr', 'link-70');">descr</a></tt> </tt>
+</div><a name="L810"></a><tt class="py-lineno"> 810</tt>  <tt class="py-line"> </tt>
+<a name="process_arg_field"></a><div id="process_arg_field-def"><a name="L811"></a><tt class="py-lineno"> 811</tt> <a class="py-toggle" href="#" id="process_arg_field-toggle" onclick="return toggle('process_arg_field');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docstringparser-module.html#process_arg_field">process_arg_field</a><tt class="py-op">(</tt><tt class="py-param">api_doc</tt><tt class="py-op">,</tt> <tt class="py-param">docinde [...]
+</div><div id="process_arg_field-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="process_arg_field-expanded"><a name="L812"></a><tt class="py-lineno"> 812</tt>  <tt class="py-line">    <tt id="link-483" class="py-name"><a title="epydoc.checker.DocChecker._check
+epydoc.docstringparser._check" class="py-name" href="#" onclick="return doclink('link-483', '_check', 'link-277');">_check</a></tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt id="link-484" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-484', 'tag', 'link-84');">tag</a></tt><tt class="py-op">,</tt> <tt id="link-485" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" [...]
+<a name="L813"></a><tt class="py-lineno"> 813</tt>  <tt class="py-line">    <tt class="py-name">idents</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'[:;, ] *'</tt><tt class="py-op">,</tt> <tt id="link-487" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-487', 'arg', 'link-85');">arg</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L814"></a><tt class="py-lineno"> 814</tt>  <tt class="py-line">    <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-488" class="py-name"><a title="epydoc.apidoc.RoutineDoc.arg_descrs" class="py-name" href="#" onclick="return doclink('link-488', 'arg_descrs', 'link-166');">arg_descrs</a></tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt> <tt class="py-op">(</tt><tt class="py-name">idents</tt><tt class="py-op">,</tt> <tt id="lin [...]
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-489', 'descr', 'link-70');">descr</a></tt><tt class="py-op">)</tt> <tt class="py-op">)</tt> </tt>
+<a name="L815"></a><tt class="py-lineno"> 815</tt>  <tt class="py-line">    <tt class="py-comment"># Check to make sure that the documented parameter(s) are</tt> </tt>
+<a name="L816"></a><tt class="py-lineno"> 816</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># actually part of the function signature.</tt> </tt>
+<a name="L817"></a><tt class="py-lineno"> 817</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-490" class="py-name" targets="Method epydoc.apidoc.RoutineDoc.all_args()=epydoc.apidoc.RoutineDoc-class.html#all_args"><a title="epydoc.apidoc.RoutineDoc.all_args" class="py-name" href="#" onclick="return doclink('link-490', 'all_args', 'link-490');">all_args</a></tt> <tt class="py-op">=</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-491" class=" [...]
+<a name="L818"></a><tt class="py-lineno"> 818</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-492" class="py-name"><a title="epydoc.apidoc.RoutineDoc.all_args" class="py-name" href="#" onclick="return doclink('link-492', 'all_args', 'link-490');">all_args</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">'...'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt id="l [...]
+<a name="L819"></a><tt class="py-lineno"> 819</tt>  <tt class="py-line">        <tt class="py-name">bad_params</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-string">'"%s"'</tt> <tt class="py-op">%</tt> <tt class="py-name">i</tt> <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">idents</tt> <tt class="py-keyword">if</tt> <tt class="py-name">i</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt [...]
+<a name="L820"></a><tt class="py-lineno"> 820</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">bad_params</tt><tt class="py-op">:</tt> </tt>
+<a name="L821"></a><tt class="py-lineno"> 821</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt id="link-495" class="py-name"><a title="epydoc.docstringparser.BAD_PARAM" class="py-name" href="#" onclick="return doclink('link-495', 'BAD_PARAM', 'link-266');">BAD_PARAM</a></tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt id="link-496" class="py-name"><a title="epydoc.markup.Field.tag" class="py-na [...]
+</div><a name="L822"></a><tt class="py-lineno"> 822</tt>  <tt class="py-line"> </tt>
+<a name="process_kwarg_field"></a><div id="process_kwarg_field-def"><a name="L823"></a><tt class="py-lineno"> 823</tt> <a class="py-toggle" href="#" id="process_kwarg_field-toggle" onclick="return toggle('process_kwarg_field');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docstringparser-module.html#process_kwarg_field">process_kwarg_field</a><tt class="py-op">(</tt><tt class="py-param">api_doc</tt><tt class="py-op">,</tt> <tt class="py-pa [...]
+</div><div id="process_kwarg_field-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="process_kwarg_field-expanded"><a name="L824"></a><tt class="py-lineno"> 824</tt>  <tt class="py-line">    <tt class="py-comment"># [xx] these should -not- be checked if they exist..</tt> </tt>
+<a name="L825"></a><tt class="py-lineno"> 825</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># and listed separately or not??</tt> </tt>
+<a name="L826"></a><tt class="py-lineno"> 826</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-497" class="py-name"><a title="epydoc.checker.DocChecker._check
+epydoc.docstringparser._check" class="py-name" href="#" onclick="return doclink('link-497', '_check', 'link-277');">_check</a></tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt id="link-498" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-498', 'tag', 'link-84');">tag</a></tt><tt class="py-op">,</tt> <tt id="link-499" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" [...]
+<a name="L827"></a><tt class="py-lineno"> 827</tt>  <tt class="py-line">    <tt class="py-name">idents</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'[:;, ] *'</tt><tt class="py-op">,</tt> <tt id="link-501" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-501', 'arg', 'link-85');">arg</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L828"></a><tt class="py-lineno"> 828</tt>  <tt class="py-line">    <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-502" class="py-name"><a title="epydoc.apidoc.RoutineDoc.arg_descrs" class="py-name" href="#" onclick="return doclink('link-502', 'arg_descrs', 'link-166');">arg_descrs</a></tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt> <tt class="py-op">(</tt><tt class="py-name">idents</tt><tt class="py-op">,</tt> <tt id="lin [...]
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-503', 'descr', 'link-70');">descr</a></tt><tt class="py-op">)</tt> <tt class="py-op">)</tt> </tt>
+</div><a name="L829"></a><tt class="py-lineno"> 829</tt>  <tt class="py-line"> </tt>
+<a name="L830"></a><tt class="py-lineno"> 830</tt>  <tt class="py-line"><tt id="link-504" class="py-name" targets="Function epydoc.docstringparser.register_field_handler()=epydoc.docstringparser-module.html#register_field_handler"><a title="epydoc.docstringparser.register_field_handler" class="py-name" href="#" onclick="return doclink('link-504', 'register_field_handler', 'link-504');">register_field_handler</a></tt><tt class="py-op">(</tt><tt id="link-505" class="py-name" targets="Funct [...]
+<a name="L831"></a><tt class="py-lineno"> 831</tt>  <tt class="py-line"><tt id="link-506" class="py-name"><a title="epydoc.docstringparser.register_field_handler" class="py-name" href="#" onclick="return doclink('link-506', 'register_field_handler', 'link-504');">register_field_handler</a></tt><tt class="py-op">(</tt><tt id="link-507" class="py-name" targets="Function epydoc.docstringparser.process_deffield_field()=epydoc.docstringparser-module.html#process_deffield_field"><a title="epyd [...]
+<a name="L832"></a><tt class="py-lineno"> 832</tt>  <tt class="py-line"><tt id="link-508" class="py-name"><a title="epydoc.docstringparser.register_field_handler" class="py-name" href="#" onclick="return doclink('link-508', 'register_field_handler', 'link-504');">register_field_handler</a></tt><tt class="py-op">(</tt><tt id="link-509" class="py-name" targets="Function epydoc.docstringparser.process_sort_field()=epydoc.docstringparser-module.html#process_sort_field"><a title="epydoc.docst [...]
+<a name="L833"></a><tt class="py-lineno"> 833</tt>  <tt class="py-line"><tt id="link-510" class="py-name"><a title="epydoc.docstringparser.register_field_handler" class="py-name" href="#" onclick="return doclink('link-510', 'register_field_handler', 'link-504');">register_field_handler</a></tt><tt class="py-op">(</tt><tt id="link-511" class="py-name" targets="Function epydoc.docstringparser.process_summary_field()=epydoc.docstringparser-module.html#process_summary_field"><a title="epydoc [...]
+<a name="L834"></a><tt class="py-lineno"> 834</tt>  <tt class="py-line"><tt id="link-512" class="py-name"><a title="epydoc.docstringparser.register_field_handler" class="py-name" href="#" onclick="return doclink('link-512', 'register_field_handler', 'link-504');">register_field_handler</a></tt><tt class="py-op">(</tt><tt id="link-513" class="py-name" targets="Function epydoc.docstringparser.process_undocumented_field()=epydoc.docstringparser-module.html#process_undocumented_field"><a tit [...]
+<a name="L835"></a><tt class="py-lineno"> 835</tt>  <tt class="py-line"><tt id="link-514" class="py-name"><a title="epydoc.docstringparser.register_field_handler" class="py-name" href="#" onclick="return doclink('link-514', 'register_field_handler', 'link-504');">register_field_handler</a></tt><tt class="py-op">(</tt><tt id="link-515" class="py-name" targets="Function epydoc.docstringparser.process_include_field()=epydoc.docstringparser-module.html#process_include_field"><a title="epydoc [...]
+<a name="L836"></a><tt class="py-lineno"> 836</tt>  <tt class="py-line"><tt id="link-516" class="py-name"><a title="epydoc.docstringparser.register_field_handler" class="py-name" href="#" onclick="return doclink('link-516', 'register_field_handler', 'link-504');">register_field_handler</a></tt><tt class="py-op">(</tt><tt id="link-517" class="py-name" targets="Function epydoc.docstringparser.process_var_field()=epydoc.docstringparser-module.html#process_var_field"><a title="epydoc.docstri [...]
+<a name="L837"></a><tt class="py-lineno"> 837</tt>  <tt class="py-line"><tt id="link-518" class="py-name"><a title="epydoc.docstringparser.register_field_handler" class="py-name" href="#" onclick="return doclink('link-518', 'register_field_handler', 'link-504');">register_field_handler</a></tt><tt class="py-op">(</tt><tt id="link-519" class="py-name" targets="Function epydoc.docstringparser.process_type_field()=epydoc.docstringparser-module.html#process_type_field"><a title="epydoc.docst [...]
+<a name="L838"></a><tt class="py-lineno"> 838</tt>  <tt class="py-line"><tt id="link-520" class="py-name"><a title="epydoc.docstringparser.register_field_handler" class="py-name" href="#" onclick="return doclink('link-520', 'register_field_handler', 'link-504');">register_field_handler</a></tt><tt class="py-op">(</tt><tt id="link-521" class="py-name" targets="Function epydoc.docstringparser.process_cvar_field()=epydoc.docstringparser-module.html#process_cvar_field"><a title="epydoc.docst [...]
+<a name="L839"></a><tt class="py-lineno"> 839</tt>  <tt class="py-line"><tt id="link-522" class="py-name"><a title="epydoc.docstringparser.register_field_handler" class="py-name" href="#" onclick="return doclink('link-522', 'register_field_handler', 'link-504');">register_field_handler</a></tt><tt class="py-op">(</tt><tt id="link-523" class="py-name" targets="Function epydoc.docstringparser.process_ivar_field()=epydoc.docstringparser-module.html#process_ivar_field"><a title="epydoc.docst [...]
+<a name="L840"></a><tt class="py-lineno"> 840</tt>  <tt class="py-line"><tt id="link-524" class="py-name"><a title="epydoc.docstringparser.register_field_handler" class="py-name" href="#" onclick="return doclink('link-524', 'register_field_handler', 'link-504');">register_field_handler</a></tt><tt class="py-op">(</tt><tt id="link-525" class="py-name" targets="Function epydoc.docstringparser.process_return_field()=epydoc.docstringparser-module.html#process_return_field"><a title="epydoc.d [...]
+<a name="L841"></a><tt class="py-lineno"> 841</tt>  <tt class="py-line"><tt id="link-526" class="py-name"><a title="epydoc.docstringparser.register_field_handler" class="py-name" href="#" onclick="return doclink('link-526', 'register_field_handler', 'link-504');">register_field_handler</a></tt><tt class="py-op">(</tt><tt id="link-527" class="py-name" targets="Function epydoc.docstringparser.process_rtype_field()=epydoc.docstringparser-module.html#process_rtype_field"><a title="epydoc.doc [...]
+<a name="L842"></a><tt class="py-lineno"> 842</tt>  <tt class="py-line"><tt id="link-528" class="py-name"><a title="epydoc.docstringparser.register_field_handler" class="py-name" href="#" onclick="return doclink('link-528', 'register_field_handler', 'link-504');">register_field_handler</a></tt><tt class="py-op">(</tt><tt id="link-529" class="py-name" targets="Function epydoc.docstringparser.process_arg_field()=epydoc.docstringparser-module.html#process_arg_field"><a title="epydoc.docstri [...]
+<a name="L843"></a><tt class="py-lineno"> 843</tt>  <tt class="py-line">                                          <tt class="py-string">'parameter'</tt><tt class="py-op">,</tt> <tt class="py-string">'param'</tt><tt class="py-op">)</tt> </tt>
+<a name="L844"></a><tt class="py-lineno"> 844</tt>  <tt class="py-line"><tt id="link-530" class="py-name"><a title="epydoc.docstringparser.register_field_handler" class="py-name" href="#" onclick="return doclink('link-530', 'register_field_handler', 'link-504');">register_field_handler</a></tt><tt class="py-op">(</tt><tt id="link-531" class="py-name" targets="Function epydoc.docstringparser.process_kwarg_field()=epydoc.docstringparser-module.html#process_kwarg_field"><a title="epydoc.doc [...]
+<a name="L845"></a><tt class="py-lineno"> 845</tt>  <tt class="py-line"><tt id="link-532" class="py-name"><a title="epydoc.docstringparser.register_field_handler" class="py-name" href="#" onclick="return doclink('link-532', 'register_field_handler', 'link-504');">register_field_handler</a></tt><tt class="py-op">(</tt><tt id="link-533" class="py-name" targets="Function epydoc.docstringparser.process_raise_field()=epydoc.docstringparser-module.html#process_raise_field"><a title="epydoc.doc [...]
+<a name="L846"></a><tt class="py-lineno"> 846</tt>  <tt class="py-line">                                            <tt class="py-string">'except'</tt><tt class="py-op">,</tt> <tt class="py-string">'exception'</tt><tt class="py-op">)</tt> </tt>
+<a name="L847"></a><tt class="py-lineno"> 847</tt>  <tt class="py-line"> </tt>
+<a name="L848"></a><tt class="py-lineno"> 848</tt>  <tt class="py-line"><tt class="py-comment"># Tags related to function parameters</tt> </tt>
+<a name="L849"></a><tt class="py-lineno"> 849</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt id="link-534" class="py-name"><a title="epydoc.docstringparser.PARAMETER_TAGS" class="py-name" href="#" onclick="return doclink('link-534', 'PARAMETER_TAGS', 'link-202');">PARAMETER_TAGS</a></tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">'arg'</tt><tt class="py-op">,</tt> <tt class="py-string">'argument'</tt><tt class="py-op">,</tt> <tt class="py-string">'p [...]
+<a name="L850"></a><tt class="py-lineno"> 850</tt>  <tt class="py-line">                  <tt class="py-string">'kwarg'</tt><tt class="py-op">,</tt> <tt class="py-string">'keyword'</tt><tt class="py-op">,</tt> <tt class="py-string">'kwparam'</tt><tt class="py-op">)</tt> </tt>
+<a name="L851"></a><tt class="py-lineno"> 851</tt>  <tt class="py-line"> </tt>
+<a name="L852"></a><tt class="py-lineno"> 852</tt>  <tt class="py-line"><tt class="py-comment"># Tags related to variables in a class</tt> </tt>
+<a name="L853"></a><tt class="py-lineno"> 853</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt id="link-535" class="py-name"><a title="epydoc.docstringparser.VARIABLE_TAGS" class="py-name" href="#" onclick="return doclink('link-535', 'VARIABLE_TAGS', 'link-199');">VARIABLE_TAGS</a></tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">'cvar'</tt><tt class="py-op">,</tt> <tt class="py-string">'cvariable'</tt><tt class="py-op">,</tt> <tt class="py-string">'iv [...]
+<a name="L854"></a><tt class="py-lineno"> 854</tt>  <tt class="py-line"> </tt>
+<a name="L855"></a><tt class="py-lineno"> 855</tt>  <tt class="py-line"><tt class="py-comment"># Tags related to exceptions</tt> </tt>
+<a name="L856"></a><tt class="py-lineno"> 856</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt id="link-536" class="py-name"><a title="epydoc.docstringparser.EXCEPTION_TAGS" class="py-name" href="#" onclick="return doclink('link-536', 'EXCEPTION_TAGS', 'link-206');">EXCEPTION_TAGS</a></tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">'raise'</tt><tt class="py-op">,</tt> <tt class="py-string">'raises'</tt><tt class="py-op">,</tt> <tt class="py-string">'e [...]
+<a name="L857"></a><tt class="py-lineno"> 857</tt>  <tt class="py-line"> </tt>
+<a name="L858"></a><tt class="py-lineno"> 858</tt>  <tt class="py-line"><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L859"></a><tt class="py-lineno"> 859</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#{ Helper Functions</tt> </tt>
+<a name="L860"></a><tt class="py-lineno"> 860</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L861"></a><tt class="py-lineno"> 861</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="check_type_fields"></a><div id="check_type_fields-def"><a name="L862"></a><tt class="py-lineno"> 862</tt> <a class="py-toggle" href="#" id="check_type_fields-toggle" onclick="return toggle('check_type_fields');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docstringparser-module.html#check_type_fields">check_type_fields</a><tt class="py-op">(</tt><tt class="py-param">api_doc</tt><tt class="py-op">,</tt> <tt class="py-param">field_w [...]
+</div><div id="check_type_fields-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="check_type_fields-expanded"><a name="L863"></a><tt class="py-lineno"> 863</tt>  <tt class="py-line">    <tt class="py-docstring">"""Check to make sure that all type fields correspond to some</tt> </tt>
+<a name="L864"></a><tt class="py-lineno"> 864</tt>  <tt class="py-line"><tt class="py-docstring">    documented parameter; if not, append a warning to field_warnings."""</tt> </tt>
+<a name="L865"></a><tt class="py-lineno"> 865</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt id="link-537" class="py-name"><a title="epydoc.apidoc.RoutineDoc" class="py-name" href="#" onclick="return doclink('link-537', 'RoutineDoc', 'link-46');">RoutineDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L866"></a><tt class="py-lineno"> 866</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt id="link-538" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-538', 'arg', 'link-85');">arg</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-539" class="py-name"><a title="epydoc.apidoc.RoutineDoc.arg_types" class="py-name" href="#" onclick="return doclink(' [...]
+<a name="L867"></a><tt class="py-lineno"> 867</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt id="link-540" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-540', 'arg', 'link-85');">arg</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-541" class="py-name"><a title="epydoc.apidoc.RoutineDoc.all_args" class="py-name"  [...]
+<a name="L868"></a><tt class="py-lineno"> 868</tt>  <tt class="py-line">                <tt class="py-keyword">for</tt> <tt class="py-name">args</tt><tt class="py-op">,</tt> <tt id="link-542" class="py-name"><a title="epydoc.apidoc.APIDoc.descr
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-542', 'descr', 'link-70');">descr</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-543" class="py-name"><a title="epydoc.apidoc.RoutineDoc.arg_descrs" class="py-name" href="#" onclick="return doclink('link-543', 'arg_descrs', 'link-166');">arg_descrs</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L869"></a><tt class="py-lineno"> 869</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt id="link-544" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-544', 'arg', 'link-85');">arg</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">args</tt><tt class="py-op">:</tt> </tt>
+<a name="L870"></a><tt class="py-lineno"> 870</tt>  <tt class="py-line">                        <tt class="py-keyword">break</tt> </tt>
+<a name="L871"></a><tt class="py-lineno"> 871</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L872"></a><tt class="py-lineno"> 872</tt>  <tt class="py-line">                    <tt class="py-name">field_warnings</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-545" class="py-name"><a title="epydoc.docstringparser.BAD_PARAM" class="py-name" href="#" onclick="return doclink('link-545', 'BAD_PARAM', 'link-266');">BAD_PARAM</a></tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-string">'type'</tt><tt class="py-o [...]
+</div><a name="L873"></a><tt class="py-lineno"> 873</tt>  <tt class="py-line"> </tt>
+<a name="set_var_descr"></a><div id="set_var_descr-def"><a name="L874"></a><tt class="py-lineno"> 874</tt> <a class="py-toggle" href="#" id="set_var_descr-toggle" onclick="return toggle('set_var_descr');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docstringparser-module.html#set_var_descr">set_var_descr</a><tt class="py-op">(</tt><tt class="py-param">api_doc</tt><tt class="py-op">,</tt> <tt class="py-param">ident</tt><tt class="py-op">,</ [...]
+</div><div id="set_var_descr-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="set_var_descr-expanded"><a name="L875"></a><tt class="py-lineno"> 875</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">ident</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-547" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" on [...]
+<a name="L876"></a><tt class="py-lineno"> 876</tt>  <tt class="py-line">        <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-548" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-548', 'variables', 'link-75');">variables</a></tt><tt class="py-op">[</tt><tt class="py-name">ident</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-549" class="py-name"><a title="epydoc.apidoc.Variabl [...]
+<a name="L877"></a><tt class="py-lineno"> 877</tt>  <tt class="py-line">            <tt id="link-550" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-550', 'container', 'link-407');">container</a></tt><tt class="py-op">=</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt id="link-551" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-551', 'name', 'link-207');">name</a></tt><tt class="py-op">=</tt><tt class="py-name">ident</tt><tt class="py-op">,</tt> </tt>
+<a name="L878"></a><tt class="py-lineno"> 878</tt>  <tt class="py-line">            <tt id="link-552" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-552', 'canonical_name', 'link-47');">canonical_name</a></tt><tt class="py-op">=</tt><tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-553" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-553', 'canonical_name', 'link-47');">canonical_name</a></tt><tt class="py-op">+</tt><tt class="py-name">ident</tt><tt class="py-op">)</tt> </tt>
+<a name="L879"></a><tt class="py-lineno"> 879</tt>  <tt class="py-line">                                       </tt>
+<a name="L880"></a><tt class="py-lineno"> 880</tt>  <tt class="py-line">    <tt class="py-name">var_doc</tt> <tt class="py-op">=</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-554" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-554', 'variables', 'link-75');">variables</a></tt><tt class="py-op">[</tt><tt class="py-name">ident</tt><tt class="py-op">]</tt> </tt>
+<a name="L881"></a><tt class="py-lineno"> 881</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-555" class="py-name"><a title="epydoc.apidoc.APIDoc.descr
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-555', 'descr', 'link-70');">descr</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-556" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-556', 'UNKNOWN', 'link-45');">UNKNOWN</a></tt><tt class="py-op">)</tt><tt class="py-op [...]
+<a name="L882"></a><tt class="py-lineno"> 882</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt id="link-557" class="py-name"><a title="epydoc.docstringparser.REDEFINED" class="py-name" href="#" onclick="return doclink('link-557', 'REDEFINED', 'link-264');">REDEFINED</a></tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-string">'description for '</tt><tt class="py-op">+</tt><tt class="py-na [...]
+<a name="L883"></a><tt class="py-lineno"> 883</tt>  <tt class="py-line">    <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-558" class="py-name"><a title="epydoc.apidoc.APIDoc.descr
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-558', 'descr', 'link-70');">descr</a></tt> <tt class="py-op">=</tt> <tt id="link-559" class="py-name"><a title="epydoc.apidoc.APIDoc.descr
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-559', 'descr', 'link-70');">descr</a></tt> </tt>
+<a name="L884"></a><tt class="py-lineno"> 884</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-560" class="py-name"><a title="epydoc.apidoc.APIDoc.summary
+epydoc.docwriter.html.HTMLWriter.summary
+epydoc.markup.ConcatenatedDocstring.summary
+epydoc.markup.ParsedDocstring.summary
+epydoc.markup.epytext.ParsedEpytextDocstring.summary
+epydoc.markup.javadoc.ParsedJavadocDocstring.summary
+epydoc.markup.plaintext.ParsedPlaintextDocstring.summary
+epydoc.markup.restructuredtext.ParsedRstDocstring.summary" class="py-name" href="#" onclick="return doclink('link-560', 'summary', 'link-96');">summary</a></tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-561" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-561', 'UNKNOWN', 'link-45');">UNKNOWN</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L885"></a><tt class="py-lineno"> 885</tt>  <tt class="py-line">        <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-562" class="py-name"><a title="epydoc.apidoc.APIDoc.summary
+epydoc.docwriter.html.HTMLWriter.summary
+epydoc.markup.ConcatenatedDocstring.summary
+epydoc.markup.ParsedDocstring.summary
+epydoc.markup.epytext.ParsedEpytextDocstring.summary
+epydoc.markup.javadoc.ParsedJavadocDocstring.summary
+epydoc.markup.plaintext.ParsedPlaintextDocstring.summary
+epydoc.markup.restructuredtext.ParsedRstDocstring.summary" class="py-name" href="#" onclick="return doclink('link-562', 'summary', 'link-96');">summary</a></tt><tt class="py-op">,</tt> <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-563" class="py-name"><a title="epydoc.apidoc.APIDoc.other_docs" class="py-name" href="#" onclick="return doclink('link-563', 'other_docs', 'link-99');">other_docs</a></tt> <tt class="py-op">=</tt> <tt class="py-name">var_doc</tt><tt class [...]
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-564', 'descr', 'link-70');">descr</a></tt><tt class="py-op">.</tt><tt id="link-565" class="py-name"><a title="epydoc.apidoc.APIDoc.summary
+epydoc.docwriter.html.HTMLWriter.summary
+epydoc.markup.ConcatenatedDocstring.summary
+epydoc.markup.ParsedDocstring.summary
+epydoc.markup.epytext.ParsedEpytextDocstring.summary
+epydoc.markup.javadoc.ParsedJavadocDocstring.summary
+epydoc.markup.plaintext.ParsedPlaintextDocstring.summary
+epydoc.markup.restructuredtext.ParsedRstDocstring.summary" class="py-name" href="#" onclick="return doclink('link-565', 'summary', 'link-96');">summary</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L886"></a><tt class="py-lineno"> 886</tt>  <tt class="py-line"> </tt>
+<a name="set_var_type"></a><div id="set_var_type-def"><a name="L887"></a><tt class="py-lineno"> 887</tt> <a class="py-toggle" href="#" id="set_var_type-toggle" onclick="return toggle('set_var_type');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docstringparser-module.html#set_var_type">set_var_type</a><tt class="py-op">(</tt><tt class="py-param">api_doc</tt><tt class="py-op">,</tt> <tt class="py-param">ident</tt><tt class="py-op">,</tt> <t [...]
+</div><div id="set_var_type-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="set_var_type-expanded"><a name="L888"></a><tt class="py-lineno"> 888</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">ident</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-566" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" oncl [...]
+<a name="L889"></a><tt class="py-lineno"> 889</tt>  <tt class="py-line">        <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-567" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-567', 'variables', 'link-75');">variables</a></tt><tt class="py-op">[</tt><tt class="py-name">ident</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-568" class="py-name"><a title="epydoc.apidoc.Variabl [...]
+<a name="L890"></a><tt class="py-lineno"> 890</tt>  <tt class="py-line">            <tt id="link-569" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-569', 'container', 'link-407');">container</a></tt><tt class="py-op">=</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt id="link-570" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-570', 'name', 'link-207');">name</a></tt><tt class="py-op">=</tt><tt class="py-name">ident</tt><tt class="py-op">,</tt> </tt>
+<a name="L891"></a><tt class="py-lineno"> 891</tt>  <tt class="py-line">            <tt id="link-571" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-571', 'canonical_name', 'link-47');">canonical_name</a></tt><tt class="py-op">=</tt><tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-572" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-572', 'canonical_name', 'link-47');">canonical_name</a></tt><tt class="py-op">+</tt><tt class="py-name">ident</tt><tt class="py-op">)</tt> </tt>
+<a name="L892"></a><tt class="py-lineno"> 892</tt>  <tt class="py-line">         </tt>
+<a name="L893"></a><tt class="py-lineno"> 893</tt>  <tt class="py-line">    <tt class="py-name">var_doc</tt> <tt class="py-op">=</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-573" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-573', 'variables', 'link-75');">variables</a></tt><tt class="py-op">[</tt><tt class="py-name">ident</tt><tt class="py-op">]</tt> </tt>
+<a name="L894"></a><tt class="py-lineno"> 894</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-574" class="py-name"><a title="epydoc.apidoc.PropertyDoc.type_descr
+epydoc.apidoc.VariableDoc.type_descr
+epydoc.docwriter.html.HTMLWriter.type_descr" class="py-name" href="#" onclick="return doclink('link-574', 'type_descr', 'link-183');">type_descr</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-575" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-575', 'UNKNOWN', 'link-45');">UNKNOWN</a></tt><tt class="py-op">)</tt><tt c [...]
+<a name="L895"></a><tt class="py-lineno"> 895</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt id="link-576" class="py-name"><a title="epydoc.docstringparser.REDEFINED" class="py-name" href="#" onclick="return doclink('link-576', 'REDEFINED', 'link-264');">REDEFINED</a></tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-string">'type for '</tt><tt class="py-op">+</tt><tt class="py-name">ide [...]
+<a name="L896"></a><tt class="py-lineno"> 896</tt>  <tt class="py-line">    <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-577" class="py-name"><a title="epydoc.apidoc.PropertyDoc.type_descr
+epydoc.apidoc.VariableDoc.type_descr
+epydoc.docwriter.html.HTMLWriter.type_descr" class="py-name" href="#" onclick="return doclink('link-577', 'type_descr', 'link-183');">type_descr</a></tt> <tt class="py-op">=</tt> <tt id="link-578" class="py-name"><a title="epydoc.apidoc.APIDoc.descr
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-578', 'descr', 'link-70');">descr</a></tt> </tt>
+</div><a name="L897"></a><tt class="py-lineno"> 897</tt>  <tt class="py-line">         </tt>
+<a name="_check"></a><div id="_check-def"><a name="L898"></a><tt class="py-lineno"> 898</tt> <a class="py-toggle" href="#" id="_check-toggle" onclick="return toggle('_check');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docstringparser-module.html#_check">_check</a><tt class="py-op">(</tt><tt class="py-param">api_doc</tt><tt class="py-op">,</tt> <tt class="py-param">tag</tt><tt class="py-op">,</tt> <tt class="py-param">arg</tt><tt class=" [...]
+</div><div id="_check-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_check-expanded"><a name="L899"></a><tt class="py-lineno"> 899</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">context</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L900"></a><tt class="py-lineno"> 900</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt class="py-name">context</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L901"></a><tt class="py-lineno"> 901</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt id="link-579" class="py-name"><a title="epydoc.docstringparser.BAD_CONTEXT" class="py-name" href="#" onclick="return doclink('link-579', 'BAD_CONTEXT', 'link-263');">BAD_CONTEXT</a></tt> <tt class="py-op">%</tt> <tt id="link-580" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" oncli [...]
+<a name="L902"></a><tt class="py-lineno"> 902</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">expect_arg</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L903"></a><tt class="py-lineno"> 903</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">expect_arg</tt> <tt class="py-op">==</tt> <tt class="py-name">True</tt><tt class="py-op">:</tt> </tt>
+<a name="L904"></a><tt class="py-lineno"> 904</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt id="link-581" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-581', 'arg', 'link-85');">arg</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L905"></a><tt class="py-lineno"> 905</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt id="link-582" class="py-name"><a title="epydoc.docstringparser.EXPECTED_ARG" class="py-name" href="#" onclick="return doclink('link-582', 'EXPECTED_ARG', 'link-261');">EXPECTED_ARG</a></tt> <tt class="py-op">%</tt> <tt id="link-583" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="# [...]
+<a name="L906"></a><tt class="py-lineno"> 906</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">expect_arg</tt> <tt class="py-op">==</tt> <tt class="py-name">False</tt><tt class="py-op">:</tt> </tt>
+<a name="L907"></a><tt class="py-lineno"> 907</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt id="link-584" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-584', 'arg', 'link-85');">arg</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L908"></a><tt class="py-lineno"> 908</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt id="link-585" class="py-name"><a title="epydoc.docstringparser.UNEXPECTED_ARG" class="py-name" href="#" onclick="return doclink('link-585', 'UNEXPECTED_ARG', 'link-260');">UNEXPECTED_ARG</a></tt> <tt class="py-op">%</tt> <tt id="link-586" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" h [...]
+<a name="L909"></a><tt class="py-lineno"> 909</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">expect_arg</tt> <tt class="py-op">==</tt> <tt class="py-string">'single'</tt><tt class="py-op">:</tt> </tt>
+<a name="L910"></a><tt class="py-lineno"> 910</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt id="link-587" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-587', 'arg', 'link-85');">arg</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt> <tt class="py-keyword">or</tt> <tt class="py-string">' '</tt> <tt class="py-keyword">in</tt> <tt id="link-588" class="py-name"><a [...]
+<a name="L911"></a><tt class="py-lineno"> 911</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt id="link-589" class="py-name"><a title="epydoc.docstringparser.EXPECTED_SINGLE_ARG" class="py-name" href="#" onclick="return doclink('link-589', 'EXPECTED_SINGLE_ARG', 'link-262');">EXPECTED_SINGLE_ARG</a></tt> <tt class="py-op">%</tt> <tt id="link-590" class="py-name"><a title="epydoc.markup.Field.tag" cl [...]
+<a name="L912"></a><tt class="py-lineno"> 912</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L913"></a><tt class="py-lineno"> 913</tt>  <tt class="py-line">            <tt class="py-keyword">assert</tt> <tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-string">'bad value for expect_arg'</tt> </tt>
+</div><a name="L914"></a><tt class="py-lineno"> 914</tt>  <tt class="py-line"> </tt>
+<a name="get_docformat"></a><div id="get_docformat-def"><a name="L915"></a><tt class="py-lineno"> 915</tt> <a class="py-toggle" href="#" id="get_docformat-toggle" onclick="return toggle('get_docformat');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docstringparser-module.html#get_docformat">get_docformat</a><tt class="py-op">(</tt><tt class="py-param">api_doc</tt><tt class="py-op">,</tt> <tt class="py-param">docindex</tt><tt class="py-op"> [...]
+</div><div id="get_docformat-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="get_docformat-expanded"><a name="L916"></a><tt class="py-lineno"> 916</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L917"></a><tt class="py-lineno"> 917</tt>  <tt class="py-line"><tt class="py-docstring">    Return the name of the markup language that should be used to</tt> </tt>
+<a name="L918"></a><tt class="py-lineno"> 918</tt>  <tt class="py-line"><tt class="py-docstring">    parse the API documentation for the given object.</tt> </tt>
+<a name="L919"></a><tt class="py-lineno"> 919</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L920"></a><tt class="py-lineno"> 920</tt>  <tt class="py-line">    <tt class="py-comment"># Find the module that defines api_doc.</tt> </tt>
+<a name="L921"></a><tt class="py-lineno"> 921</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">module</tt> <tt class="py-op">=</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-591" class="py-name"><a title="epydoc.apidoc.ValueDoc.defining_module
+epydoc.apidoc.VariableDoc.defining_module" class="py-name" href="#" onclick="return doclink('link-591', 'defining_module', 'link-209');">defining_module</a></tt> </tt>
+<a name="L922"></a><tt class="py-lineno"> 922</tt>  <tt class="py-line">    <tt class="py-comment"># Look up its docformat.</tt> </tt>
+<a name="L923"></a><tt class="py-lineno"> 923</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">module</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt id="link-592" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-592', 'UNKNOWN', 'link-45');">UNKNOWN</a></tt> <tt class="py-keyword">and</tt> <tt class="py-name">module</tt><tt class="py-op">.</tt><tt id [...]
+<a name="L924"></a><tt class="py-lineno"> 924</tt>  <tt class="py-line">        <tt id="link-595" class="py-name"><a title="epydoc.apidoc.ModuleDoc.docformat" class="py-name" href="#" onclick="return doclink('link-595', 'docformat', 'link-61');">docformat</a></tt> <tt class="py-op">=</tt> <tt class="py-name">module</tt><tt class="py-op">.</tt><tt id="link-596" class="py-name"><a title="epydoc.apidoc.ModuleDoc.docformat" class="py-name" href="#" onclick="return doclink('link-596', 'docfor [...]
+<a name="L925"></a><tt class="py-lineno"> 925</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L926"></a><tt class="py-lineno"> 926</tt>  <tt class="py-line">        <tt id="link-597" class="py-name"><a title="epydoc.apidoc.ModuleDoc.docformat" class="py-name" href="#" onclick="return doclink('link-597', 'docformat', 'link-61');">docformat</a></tt> <tt class="py-op">=</tt> <tt id="link-598" class="py-name"><a title="epydoc.cli.DEFAULT_DOCFORMAT
+epydoc.docstringparser.DEFAULT_DOCFORMAT" class="py-name" href="#" onclick="return doclink('link-598', 'DEFAULT_DOCFORMAT', 'link-43');">DEFAULT_DOCFORMAT</a></tt> </tt>
+<a name="L927"></a><tt class="py-lineno"> 927</tt>  <tt class="py-line">    <tt class="py-comment"># Convert to lower case & strip region codes.</tt> </tt>
+<a name="L928"></a><tt class="py-lineno"> 928</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">try</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt id="link-599" class="py-name"><a title="epydoc.apidoc.ModuleDoc.docformat" class="py-name" href="#" onclick="return doclink('link-599', 'docformat', 'link-61');">docformat</a></tt><tt class="py-op">.</tt><tt class="py-name">lower</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class=" [...]
+<a name="L929"></a><tt class="py-lineno"> 929</tt>  <tt class="py-line">    <tt class="py-keyword">except</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt id="link-600" class="py-name"><a title="epydoc.cli.DEFAULT_DOCFORMAT
+epydoc.docstringparser.DEFAULT_DOCFORMAT" class="py-name" href="#" onclick="return doclink('link-600', 'DEFAULT_DOCFORMAT', 'link-43');">DEFAULT_DOCFORMAT</a></tt> </tt>
+</div><a name="L930"></a><tt class="py-lineno"> 930</tt>  <tt class="py-line"> </tt>
+<a name="unindent_docstring"></a><div id="unindent_docstring-def"><a name="L931"></a><tt class="py-lineno"> 931</tt> <a class="py-toggle" href="#" id="unindent_docstring-toggle" onclick="return toggle('unindent_docstring');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docstringparser-module.html#unindent_docstring">unindent_docstring</a><tt class="py-op">(</tt><tt class="py-param">docstring</tt><tt class="py-op">)</tt><tt class="py-op">:</ [...]
+</div><div id="unindent_docstring-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="unindent_docstring-expanded"><a name="L932"></a><tt class="py-lineno"> 932</tt>  <tt class="py-line">    <tt class="py-comment"># [xx] copied from inspect.getdoc(); we can't use inspect.getdoc()</tt> </tt>
+<a name="L933"></a><tt class="py-lineno"> 933</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># itself, since it expects an object, not a string.</tt> </tt>
+<a name="L934"></a><tt class="py-lineno"> 934</tt>  <tt class="py-line"><tt class="py-comment"></tt>     </tt>
+<a name="L935"></a><tt class="py-lineno"> 935</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-601" class="py-name"><a title="epydoc.apidoc.APIDoc.docstring" class="py-name" href="#" onclick="return doclink('link-601', 'docstring', 'link-52');">docstring</a></tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-string">''</tt> </tt>
+<a name="L936"></a><tt class="py-lineno"> 936</tt>  <tt class="py-line">    <tt class="py-name">lines</tt> <tt class="py-op">=</tt> <tt id="link-602" class="py-name"><a title="epydoc.apidoc.APIDoc.docstring" class="py-name" href="#" onclick="return doclink('link-602', 'docstring', 'link-52');">docstring</a></tt><tt class="py-op">.</tt><tt class="py-name">expandtabs</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op"> [...]
+<a name="L937"></a><tt class="py-lineno"> 937</tt>  <tt class="py-line"> </tt>
+<a name="L938"></a><tt class="py-lineno"> 938</tt>  <tt class="py-line">    <tt class="py-comment"># Find minimum indentation of any non-blank lines after first line.</tt> </tt>
+<a name="L939"></a><tt class="py-lineno"> 939</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">margin</tt> <tt class="py-op">=</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">maxint</tt> </tt>
+<a name="L940"></a><tt class="py-lineno"> 940</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">line</tt> <tt class="py-keyword">in</tt> <tt class="py-name">lines</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L941"></a><tt class="py-lineno"> 941</tt>  <tt class="py-line">        <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">line</tt><tt class="py-op">.</tt><tt class="py-name">lstrip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L942"></a><tt class="py-lineno"> 942</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">content</tt><tt class="py-op">:</tt> </tt>
+<a name="L943"></a><tt class="py-lineno"> 943</tt>  <tt class="py-line">            <tt class="py-name">indent</tt> <tt class="py-op">=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">line</tt><tt class="py-op">)</tt> <tt class="py-op">-</tt> <tt class="py-name">content</tt> </tt>
+<a name="L944"></a><tt class="py-lineno"> 944</tt>  <tt class="py-line">            <tt class="py-name">margin</tt> <tt class="py-op">=</tt> <tt class="py-name">min</tt><tt class="py-op">(</tt><tt class="py-name">margin</tt><tt class="py-op">,</tt> <tt class="py-name">indent</tt><tt class="py-op">)</tt> </tt>
+<a name="L945"></a><tt class="py-lineno"> 945</tt>  <tt class="py-line">    <tt class="py-comment"># Remove indentation.</tt> </tt>
+<a name="L946"></a><tt class="py-lineno"> 946</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">lines</tt><tt class="py-op">:</tt> </tt>
+<a name="L947"></a><tt class="py-lineno"> 947</tt>  <tt class="py-line">        <tt class="py-name">lines</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">lines</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">lstrip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L948"></a><tt class="py-lineno"> 948</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">margin</tt> <tt class="py-op"><</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">maxint</tt><tt class="py-op">:</tt> </tt>
+<a name="L949"></a><tt class="py-lineno"> 949</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">lines</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-name">lines</tt><tt class="py-op">[</tt><tt cl [...]
+<a name="L950"></a><tt class="py-lineno"> 950</tt>  <tt class="py-line">    <tt class="py-comment"># Remove any trailing (but not leading!) blank lines.</tt> </tt>
+<a name="L951"></a><tt class="py-lineno"> 951</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">while</tt> <tt class="py-name">lines</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">lines</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L952"></a><tt class="py-lineno"> 952</tt>  <tt class="py-line">        <tt class="py-name">lines</tt><tt class="py-op">.</tt><tt class="py-name">pop</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L953"></a><tt class="py-lineno"> 953</tt>  <tt class="py-line">    <tt class="py-comment">#while lines and not lines[0]:</tt> </tt>
+<a name="L954"></a><tt class="py-lineno"> 954</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#    lines.pop(0)</tt> </tt>
+<a name="L955"></a><tt class="py-lineno"> 955</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">return</tt> <tt class="py-string">'\n'</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">lines</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L956"></a><tt class="py-lineno"> 956</tt>  <tt class="py-line">                            </tt>
+<a name="L957"></a><tt class="py-lineno"> 957</tt>  <tt class="py-line"><tt id="link-603" class="py-name" targets="Variable epydoc.docstringparser._IDENTIFIER_LIST_REGEXP=epydoc.docstringparser-module.html#_IDENTIFIER_LIST_REGEXP"><a title="epydoc.docstringparser._IDENTIFIER_LIST_REGEXP" class="py-name" href="#" onclick="return doclink('link-603', '_IDENTIFIER_LIST_REGEXP', 'link-603');">_IDENTIFIER_LIST_REGEXP</a></tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op [...]
+<a name="_descr_to_identifiers"></a><div id="_descr_to_identifiers-def"><a name="L958"></a><tt class="py-lineno"> 958</tt> <a class="py-toggle" href="#" id="_descr_to_identifiers-toggle" onclick="return toggle('_descr_to_identifiers');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docstringparser-module.html#_descr_to_identifiers">_descr_to_identifiers</a><tt class="py-op">(</tt><tt class="py-param">descr</tt><tt class="py-op">)</tt><tt cla [...]
+</div><div id="_descr_to_identifiers-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_descr_to_identifiers-expanded"><a name="L959"></a><tt class="py-lineno"> 959</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L960"></a><tt class="py-lineno"> 960</tt>  <tt class="py-line"><tt class="py-docstring">    Given a C{ParsedDocstring} that contains a list of identifiers,</tt> </tt>
+<a name="L961"></a><tt class="py-lineno"> 961</tt>  <tt class="py-line"><tt class="py-docstring">    return a list of those identifiers.  This is used by fields such</tt> </tt>
+<a name="L962"></a><tt class="py-lineno"> 962</tt>  <tt class="py-line"><tt class="py-docstring">    as C{@group} and C{@sort}, which expect lists of identifiers as</tt> </tt>
+<a name="L963"></a><tt class="py-lineno"> 963</tt>  <tt class="py-line"><tt class="py-docstring">    their values.  To extract the identifiers, the docstring is first</tt> </tt>
+<a name="L964"></a><tt class="py-lineno"> 964</tt>  <tt class="py-line"><tt class="py-docstring">    converted to plaintext, and then split.  The plaintext content of</tt> </tt>
+<a name="L965"></a><tt class="py-lineno"> 965</tt>  <tt class="py-line"><tt class="py-docstring">    the docstring must be a a list of identifiers, separated by</tt> </tt>
+<a name="L966"></a><tt class="py-lineno"> 966</tt>  <tt class="py-line"><tt class="py-docstring">    spaces, commas, colons, or semicolons.</tt> </tt>
+<a name="L967"></a><tt class="py-lineno"> 967</tt>  <tt class="py-line"><tt class="py-docstring">    </tt> </tt>
+<a name="L968"></a><tt class="py-lineno"> 968</tt>  <tt class="py-line"><tt class="py-docstring">    @rtype: C{list} of C{string}</tt> </tt>
+<a name="L969"></a><tt class="py-lineno"> 969</tt>  <tt class="py-line"><tt class="py-docstring">    @return: A list of the identifier names contained in C{descr}.</tt> </tt>
+<a name="L970"></a><tt class="py-lineno"> 970</tt>  <tt class="py-line"><tt class="py-docstring">    @type descr: L{markup.ParsedDocstring}</tt> </tt>
+<a name="L971"></a><tt class="py-lineno"> 971</tt>  <tt class="py-line"><tt class="py-docstring">    @param descr: A C{ParsedDocstring} containing a list of</tt> </tt>
+<a name="L972"></a><tt class="py-lineno"> 972</tt>  <tt class="py-line"><tt class="py-docstring">        identifiers.</tt> </tt>
+<a name="L973"></a><tt class="py-lineno"> 973</tt>  <tt class="py-line"><tt class="py-docstring">    @raise ValueError: If C{descr} does not contain a valid list of</tt> </tt>
+<a name="L974"></a><tt class="py-lineno"> 974</tt>  <tt class="py-line"><tt class="py-docstring">        identifiers.</tt> </tt>
+<a name="L975"></a><tt class="py-lineno"> 975</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L976"></a><tt class="py-lineno"> 976</tt>  <tt class="py-line">    <tt class="py-name">idents</tt> <tt class="py-op">=</tt> <tt id="link-604" class="py-name"><a title="epydoc.apidoc.APIDoc.descr
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-604', 'descr', 'link-70');">descr</a></tt><tt class="py-op">.</tt><tt id="link-605" class="py-name" targets="Method epydoc.markup.ConcatenatedDocstring.to_plaintext()=epydoc.markup.ConcatenatedDocstring-class.html#to_plaintext,Method epydoc.markup.ParsedDocstring.to_plaintext()=epydoc.markup.ParsedDocstring-class.html#to_plaintext,Method epydoc.markup.epytext.ParsedEpytextDocstring.to_plai [...]
+epydoc.markup.ParsedDocstring.to_plaintext
+epydoc.markup.epytext.ParsedEpytextDocstring.to_plaintext
+epydoc.markup.epytext.to_plaintext
+epydoc.markup.javadoc.ParsedJavadocDocstring.to_plaintext
+epydoc.markup.plaintext.ParsedPlaintextDocstring.to_plaintext
+epydoc.markup.restructuredtext.ParsedRstDocstring.to_plaintext" class="py-name" href="#" onclick="return doclink('link-605', 'to_plaintext', 'link-605');">to_plaintext</a></tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">strip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L977"></a><tt class="py-lineno"> 977</tt>  <tt class="py-line">    <tt class="py-name">idents</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt class="py-string">r'\s+'</tt><tt class="py-op">,</tt> <tt class="py-string">' '</tt><tt class="py-op">,</tt> <tt class="py-name">idents</tt><tt class="py-op">)</tt> </tt>
+<a name="L978"></a><tt class="py-lineno"> 978</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-606" class="py-name"><a title="epydoc.docstringparser._IDENTIFIER_LIST_REGEXP" class="py-name" href="#" onclick="return doclink('link-606', '_IDENTIFIER_LIST_REGEXP', 'link-603');">_IDENTIFIER_LIST_REGEXP</a></tt><tt class="py-op">.</tt><tt class="py-name">match</tt><tt class="py-op">(</tt><tt class="py-name">idents</tt><tt class="py-op"> [...]
+<a name="L979"></a><tt class="py-lineno"> 979</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">,</tt> <tt class="py-string">'Bad Identifier list: %r'</tt> <tt class="py-op">%</tt> <tt class="py-name">idents</tt> </tt>
+<a name="L980"></a><tt class="py-lineno"> 980</tt>  <tt class="py-line">    <tt class="py-name">rval</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'[:;, ] *'</tt><tt class="py-op">,</tt> <tt class="py-name">idents</tt><tt class="py-op">)</tt> </tt>
+<a name="L981"></a><tt class="py-lineno"> 981</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">rval</tt> </tt>
+</div><a name="L982"></a><tt class="py-lineno"> 982</tt>  <tt class="py-line">     </tt>
+<a name="_descr_to_docstring_field"></a><div id="_descr_to_docstring_field-def"><a name="L983"></a><tt class="py-lineno"> 983</tt> <a class="py-toggle" href="#" id="_descr_to_docstring_field-toggle" onclick="return toggle('_descr_to_docstring_field');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docstringparser-module.html#_descr_to_docstring_field">_descr_to_docstring_field</a><tt class="py-op">(</tt><tt class="py-param">arg</tt><tt class [...]
+</div><div id="_descr_to_docstring_field-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_descr_to_docstring_field-expanded"><a name="L984"></a><tt class="py-lineno"> 984</tt>  <tt class="py-line">    <tt class="py-name">tags</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">s</tt><tt class="py-op">.</tt><tt class="py-name">lower</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">s</tt> [...]
+<a name="L985"></a><tt class="py-lineno"> 985</tt>  <tt class="py-line">    <tt id="link-608" class="py-name"><a title="epydoc.apidoc.APIDoc.descr
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-608', 'descr', 'link-70');">descr</a></tt> <tt class="py-op">=</tt> <tt id="link-609" class="py-name"><a title="epydoc.apidoc.APIDoc.descr
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-609', 'descr', 'link-70');">descr</a></tt><tt class="py-op">.</tt><tt id="link-610" class="py-name"><a title="epydoc.markup.ConcatenatedDocstring.to_plaintext
+epydoc.markup.ParsedDocstring.to_plaintext
+epydoc.markup.epytext.ParsedEpytextDocstring.to_plaintext
+epydoc.markup.epytext.to_plaintext
+epydoc.markup.javadoc.ParsedJavadocDocstring.to_plaintext
+epydoc.markup.plaintext.ParsedPlaintextDocstring.to_plaintext
+epydoc.markup.restructuredtext.ParsedRstDocstring.to_plaintext" class="py-name" href="#" onclick="return doclink('link-610', 'to_plaintext', 'link-605');">to_plaintext</a></tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">strip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L986"></a><tt class="py-lineno"> 986</tt>  <tt class="py-line">    <tt class="py-name">args</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'[:;,] *'</tt><tt class="py-op">,</tt> <tt id="link-611" class="py-name"><a title="epydoc.apidoc.APIDoc.descr
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-611', 'descr', 'link-70');">descr</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L987"></a><tt class="py-lineno"> 987</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">args</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt> <tt class="py-keyword">or</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">args</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-number">3</tt><tt class="py-op">:</tt> </tt>
+<a name="L988"></a><tt class="py-lineno"> 988</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">,</tt> <tt class="py-string">'Wrong number of arguments'</tt> </tt>
+<a name="L989"></a><tt class="py-lineno"> 989</tt>  <tt class="py-line">    <tt class="py-name">singular</tt> <tt class="py-op">=</tt> <tt class="py-name">args</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L990"></a><tt class="py-lineno"> 990</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">args</tt><tt class="py-op">)</tt> <tt class="py-op">>=</tt> <tt class="py-number">2</tt><tt class="py-op">:</tt> <tt class="py-name">plural</tt> <tt class="py-op">=</tt> <tt class="py-name">args</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L991"></a><tt class="py-lineno"> 991</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> <tt class="py-name">plural</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L992"></a><tt class="py-lineno"> 992</tt>  <tt class="py-line">    <tt class="py-name">short</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L993"></a><tt class="py-lineno"> 993</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">args</tt><tt class="py-op">)</tt> <tt class="py-op">>=</tt> <tt class="py-number">3</tt><tt class="py-op">:</tt> </tt>
+<a name="L994"></a><tt class="py-lineno"> 994</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">args</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">'short'</tt><tt class="py-op">:</tt> <tt class="py-name">short</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L995"></a><tt class="py-lineno"> 995</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">'Bad arg 2 (expected "short")'</tt><tt class="py-op">)</tt> </tt>
+<a name="L996"></a><tt class="py-lineno"> 996</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-612" class="py-name"><a title="epydoc.docstringparser.DocstringField" class="py-name" href="#" onclick="return doclink('link-612', 'DocstringField', 'link-19');">DocstringField</a></tt><tt class="py-op">(</tt><tt class="py-name">tags</tt><tt class="py-op">,</tt> <tt class="py-name">singular</tt><tt class="py-op">,</tt> <tt class="py-name">plural</tt><tt class="py-op [...]
+</div><a name="L997"></a><tt class="py-lineno"> 997</tt>  <tt class="py-line"> </tt>
+<a name="L998"></a><tt class="py-lineno"> 998</tt>  <tt class="py-line"><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L999"></a><tt class="py-lineno"> 999</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#{ Function Signature Extraction</tt> </tt>
+<a name="L1000"></a><tt class="py-lineno">1000</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L1001"></a><tt class="py-lineno">1001</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L1002"></a><tt class="py-lineno">1002</tt>  <tt class="py-line"><tt class="py-comment"># [XX] todo: add optional type modifiers?</tt> </tt>
+<a name="L1003"></a><tt class="py-lineno">1003</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt id="link-613" class="py-name" targets="Variable epydoc.docstringparser._SIGNATURE_RE=epydoc.docstringparser-module.html#_SIGNATURE_RE"><a title="epydoc.docstringparser._SIGNATURE_RE" class="py-name" href="#" onclick="return doclink('link-613', '_SIGNATURE_RE', 'link-613');">_SIGNATURE_RE</a></tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py [...]
+<a name="L1004"></a><tt class="py-lineno">1004</tt>  <tt class="py-line">    <tt class="py-comment"># Class name (for builtin methods)</tt> </tt>
+<a name="L1005"></a><tt class="py-lineno">1005</tt>  <tt class="py-line">    <tt class="py-string">r'^\s*((?P<self>\w+)\.)?'</tt> <tt class="py-op">+</tt> </tt>
+<a name="L1006"></a><tt class="py-lineno">1006</tt>  <tt class="py-line">    <tt class="py-comment"># The function name (must match exactly) [XX] not anymore!</tt> </tt>
+<a name="L1007"></a><tt class="py-lineno">1007</tt>  <tt class="py-line">    <tt class="py-string">r'(?P<func>\w+)'</tt> <tt class="py-op">+</tt> </tt>
+<a name="L1008"></a><tt class="py-lineno">1008</tt>  <tt class="py-line">    <tt class="py-comment"># The parameters</tt> </tt>
+<a name="L1009"></a><tt class="py-lineno">1009</tt>  <tt class="py-line">    <tt class="py-string">r'\((?P<params>(\s*\[?\s*\*{0,2}[\w\-\.]+(\s*=.+?)?'</tt><tt class="py-op">+</tt> </tt>
+<a name="L1010"></a><tt class="py-lineno">1010</tt>  <tt class="py-line">    <tt class="py-string">r'(\s*\[?\s*,\s*\]?\s*\*{0,2}[\w\-\.]+(\s*=.+?)?)*\]*)?)\s*\)'</tt> <tt class="py-op">+</tt> </tt>
+<a name="L1011"></a><tt class="py-lineno">1011</tt>  <tt class="py-line">    <tt class="py-comment"># The return value (optional)</tt> </tt>
+<a name="L1012"></a><tt class="py-lineno">1012</tt>  <tt class="py-line">    <tt class="py-string">r'(\s*(->)\s*(?P<return>\S.*?))?'</tt><tt class="py-op">+</tt> </tt>
+<a name="L1013"></a><tt class="py-lineno">1013</tt>  <tt class="py-line">    <tt class="py-comment"># The end marker</tt> </tt>
+<a name="L1014"></a><tt class="py-lineno">1014</tt>  <tt class="py-line">    <tt class="py-string">r'\s*(\n|\s+(--|<=+>)\s+|$|\.\s+|\.\n)'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1015"></a><tt class="py-lineno">1015</tt>  <tt class="py-line"><tt class="py-string">"""A regular expression that is used to extract signatures from</tt> </tt>
+<a name="L1016"></a><tt class="py-lineno">1016</tt>  <tt class="py-line"><tt class="py-string">docstrings."""</tt> </tt>
+<a name="L1017"></a><tt class="py-lineno">1017</tt>  <tt class="py-line">     </tt>
+<a name="parse_function_signature"></a><div id="parse_function_signature-def"><a name="L1018"></a><tt class="py-lineno">1018</tt> <a class="py-toggle" href="#" id="parse_function_signature-toggle" onclick="return toggle('parse_function_signature');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docstringparser-module.html#parse_function_signature">parse_function_signature</a><tt class="py-op">(</tt><tt class="py-param">func_doc</tt><tt class [...]
+</div><div id="parse_function_signature-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="parse_function_signature-expanded"><a name="L1019"></a><tt class="py-lineno">1019</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L1020"></a><tt class="py-lineno">1020</tt>  <tt class="py-line"><tt class="py-docstring">    Construct the signature for a builtin function or method from</tt> </tt>
+<a name="L1021"></a><tt class="py-lineno">1021</tt>  <tt class="py-line"><tt class="py-docstring">    its docstring.  If the docstring uses the standard convention</tt> </tt>
+<a name="L1022"></a><tt class="py-lineno">1022</tt>  <tt class="py-line"><tt class="py-docstring">    of including a signature in the first line of the docstring</tt> </tt>
+<a name="L1023"></a><tt class="py-lineno">1023</tt>  <tt class="py-line"><tt class="py-docstring">    (and formats that signature according to standard</tt> </tt>
+<a name="L1024"></a><tt class="py-lineno">1024</tt>  <tt class="py-line"><tt class="py-docstring">    conventions), then it will be used to extract a signature.</tt> </tt>
+<a name="L1025"></a><tt class="py-lineno">1025</tt>  <tt class="py-line"><tt class="py-docstring">    Otherwise, the signature will be set to a single varargs</tt> </tt>
+<a name="L1026"></a><tt class="py-lineno">1026</tt>  <tt class="py-line"><tt class="py-docstring">    variable named C{"..."}.</tt> </tt>
+<a name="L1027"></a><tt class="py-lineno">1027</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1028"></a><tt class="py-lineno">1028</tt>  <tt class="py-line"><tt class="py-docstring">    @param func_doc: The target object where to store parsed signature. Also</tt> </tt>
+<a name="L1029"></a><tt class="py-lineno">1029</tt>  <tt class="py-line"><tt class="py-docstring">        container of the docstring to parse if doc_source is C{None}</tt> </tt>
+<a name="L1030"></a><tt class="py-lineno">1030</tt>  <tt class="py-line"><tt class="py-docstring">    @type func_doc: L{RoutineDoc}</tt> </tt>
+<a name="L1031"></a><tt class="py-lineno">1031</tt>  <tt class="py-line"><tt class="py-docstring">    @param doc_source: Contains the docstring to parse. If C{None}, parse</tt> </tt>
+<a name="L1032"></a><tt class="py-lineno">1032</tt>  <tt class="py-line"><tt class="py-docstring">        L{func_doc} docstring instead</tt> </tt>
+<a name="L1033"></a><tt class="py-lineno">1033</tt>  <tt class="py-line"><tt class="py-docstring">    @type doc_source: L{APIDoc}</tt> </tt>
+<a name="L1034"></a><tt class="py-lineno">1034</tt>  <tt class="py-line"><tt class="py-docstring">    @rtype: C{None}</tt> </tt>
+<a name="L1035"></a><tt class="py-lineno">1035</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1036"></a><tt class="py-lineno">1036</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">doc_source</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1037"></a><tt class="py-lineno">1037</tt>  <tt class="py-line">        <tt class="py-name">doc_source</tt> <tt class="py-op">=</tt> <tt class="py-name">func_doc</tt> </tt>
+<a name="L1038"></a><tt class="py-lineno">1038</tt>  <tt class="py-line"> </tt>
+<a name="L1039"></a><tt class="py-lineno">1039</tt>  <tt class="py-line">    <tt class="py-comment"># If there's no docstring, then don't do anything.</tt> </tt>
+<a name="L1040"></a><tt class="py-lineno">1040</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">doc_source</tt><tt class="py-op">.</tt><tt id="link-614" class="py-name"><a title="epydoc.apidoc.APIDoc.docstring" class="py-name" href="#" onclick="return doclink('link-614', 'docstring', 'link-52');">docstring</a></tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-name">Fals [...]
+<a name="L1041"></a><tt class="py-lineno">1041</tt>  <tt class="py-line"> </tt>
+<a name="L1042"></a><tt class="py-lineno">1042</tt>  <tt class="py-line">    <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt id="link-615" class="py-name"><a title="epydoc.docstringparser._SIGNATURE_RE" class="py-name" href="#" onclick="return doclink('link-615', '_SIGNATURE_RE', 'link-613');">_SIGNATURE_RE</a></tt><tt class="py-op">.</tt><tt class="py-name">match</tt><tt class="py-op">(</tt><tt class="py-name">doc_source</tt><tt class="py-op">.</tt><tt id="link-616" class="py-na [...]
+<a name="L1043"></a><tt class="py-lineno">1043</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">m</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
+<a name="L1044"></a><tt class="py-lineno">1044</tt>  <tt class="py-line"> </tt>
+<a name="L1045"></a><tt class="py-lineno">1045</tt>  <tt class="py-line">    <tt class="py-comment"># Do I want to be this strict?</tt> </tt>
+<a name="L1046"></a><tt class="py-lineno">1046</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># Notice that __init__ must match the class name instead, if the signature</tt> </tt>
+<a name="L1047"></a><tt class="py-lineno">1047</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># comes from the class docstring</tt> </tt>
+<a name="L1048"></a><tt class="py-lineno">1048</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#     if not (m.group('func') == func_doc.canonical_name[-1] or</tt> </tt>
+<a name="L1049"></a><tt class="py-lineno">1049</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#             '_'+m.group('func') == func_doc.canonical_name[-1]):</tt> </tt>
+<a name="L1050"></a><tt class="py-lineno">1050</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#         log.warning("Not extracting function signature from %s's "</tt> </tt>
+<a name="L1051"></a><tt class="py-lineno">1051</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#                     "docstring, since the name doesn't match." %</tt> </tt>
+<a name="L1052"></a><tt class="py-lineno">1052</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#                     func_doc.canonical_name)</tt> </tt>
+<a name="L1053"></a><tt class="py-lineno">1053</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#         return False</tt> </tt>
+<a name="L1054"></a><tt class="py-lineno">1054</tt>  <tt class="py-line"><tt class="py-comment"></tt>     </tt>
+<a name="L1055"></a><tt class="py-lineno">1055</tt>  <tt class="py-line">    <tt class="py-name">params</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt class="py-name">group</tt><tt class="py-op">(</tt><tt class="py-string">'params'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1056"></a><tt class="py-lineno">1056</tt>  <tt class="py-line">    <tt class="py-name">rtype</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt class="py-name">group</tt><tt class="py-op">(</tt><tt class="py-string">'return'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1057"></a><tt class="py-lineno">1057</tt>  <tt class="py-line">    <tt class="py-name">selfparam</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt class="py-name">group</tt><tt class="py-op">(</tt><tt class="py-string">'self'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1058"></a><tt class="py-lineno">1058</tt>  <tt class="py-line">     </tt>
+<a name="L1059"></a><tt class="py-lineno">1059</tt>  <tt class="py-line">    <tt class="py-comment"># Extract the parameters from the signature.</tt> </tt>
+<a name="L1060"></a><tt class="py-lineno">1060</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">func_doc</tt><tt class="py-op">.</tt><tt id="link-617" class="py-name" targets="Variable epydoc.apidoc.RoutineDoc.posargs=epydoc.apidoc.RoutineDoc-class.html#posargs"><a title="epydoc.apidoc.RoutineDoc.posargs" class="py-name" href="#" onclick="return doclink('link-617', 'posargs', 'link-617');">posargs</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt  [...]
+<a name="L1061"></a><tt class="py-lineno">1061</tt>  <tt class="py-line">    <tt class="py-name">func_doc</tt><tt class="py-op">.</tt><tt id="link-618" class="py-name" targets="Variable epydoc.apidoc.RoutineDoc.vararg=epydoc.apidoc.RoutineDoc-class.html#vararg"><a title="epydoc.apidoc.RoutineDoc.vararg" class="py-name" href="#" onclick="return doclink('link-618', 'vararg', 'link-618');">vararg</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L1062"></a><tt class="py-lineno">1062</tt>  <tt class="py-line">    <tt class="py-name">func_doc</tt><tt class="py-op">.</tt><tt id="link-619" class="py-name" targets="Variable epydoc.apidoc.RoutineDoc.kwarg=epydoc.apidoc.RoutineDoc-class.html#kwarg"><a title="epydoc.apidoc.RoutineDoc.kwarg" class="py-name" href="#" onclick="return doclink('link-619', 'kwarg', 'link-619');">kwarg</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L1063"></a><tt class="py-lineno">1063</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">func_doc</tt><tt class="py-op">.</tt><tt id="link-620" class="py-name" targets="Variable epydoc.apidoc.RoutineDoc.posarg_defaults=epydoc.apidoc.RoutineDoc-class.html#posarg_defaults"><a title="epydoc.apidoc.RoutineDoc.posarg_defaults" class="py-name" href="#" onclick="return doclink('link-620', 'posarg_defaults', 'link-620');">posarg_defaults</a></tt> <tt class= [...]
+<a name="L1064"></a><tt class="py-lineno">1064</tt>  <tt class="py-line">        <tt class="py-name">func_doc</tt><tt class="py-op">.</tt><tt id="link-622" class="py-name"><a title="epydoc.apidoc.RoutineDoc.posarg_defaults" class="py-name" href="#" onclick="return doclink('link-622', 'posarg_defaults', 'link-620');">posarg_defaults</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L1065"></a><tt class="py-lineno">1065</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">params</tt><tt class="py-op">:</tt> </tt>
+<a name="L1066"></a><tt class="py-lineno">1066</tt>  <tt class="py-line">        <tt class="py-comment"># Figure out which parameters are optional.</tt> </tt>
+<a name="L1067"></a><tt class="py-lineno">1067</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">while</tt> <tt class="py-string">'['</tt> <tt class="py-keyword">in</tt> <tt class="py-name">params</tt> <tt class="py-keyword">or</tt> <tt class="py-string">']'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">params</tt><tt class="py-op">:</tt> </tt>
+<a name="L1068"></a><tt class="py-lineno">1068</tt>  <tt class="py-line">            <tt class="py-name">m2</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">match</tt><tt class="py-op">(</tt><tt class="py-string">r'(.*)\[([^\[\]]+)\](.*)'</tt><tt class="py-op">,</tt> <tt class="py-name">params</tt><tt class="py-op">)</tt> </tt>
+<a name="L1069"></a><tt class="py-lineno">1069</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">m2</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
+<a name="L1070"></a><tt class="py-lineno">1070</tt>  <tt class="py-line">            <tt class="py-op">(</tt><tt class="py-name">start</tt><tt class="py-op">,</tt> <tt class="py-name">mid</tt><tt class="py-op">,</tt> <tt class="py-name">end</tt><tt class="py-op">)</tt> <tt class="py-op">=</tt> <tt class="py-name">m2</tt><tt class="py-op">.</tt><tt class="py-name">groups</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1071"></a><tt class="py-lineno">1071</tt>  <tt class="py-line">            <tt class="py-name">mid</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt class="py-string">r'((,|^)\s*[\w\-\.]+)'</tt><tt class="py-op">,</tt> <tt class="py-string">r'\1=...'</tt><tt class="py-op">,</tt> <tt class="py-name">mid</tt><tt class="py-op">)</tt> </tt>
+<a name="L1072"></a><tt class="py-lineno">1072</tt>  <tt class="py-line">            <tt class="py-name">params</tt> <tt class="py-op">=</tt> <tt class="py-name">start</tt><tt class="py-op">+</tt><tt class="py-name">mid</tt><tt class="py-op">+</tt><tt class="py-name">end</tt> </tt>
+<a name="L1073"></a><tt class="py-lineno">1073</tt>  <tt class="py-line"> </tt>
+<a name="L1074"></a><tt class="py-lineno">1074</tt>  <tt class="py-line">        <tt class="py-name">params</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt class="py-string">r'=...='</tt> <tt class="py-op">,</tt> <tt class="py-string">r'='</tt><tt class="py-op">,</tt> <tt class="py-name">params</tt><tt class="py-op">)</tt> </tt>
+<a name="L1075"></a><tt class="py-lineno">1075</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt id="link-623" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-623', 'name', 'link-207');">name</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">params</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">','</tt><tt class="py-op">)</tt><tt class="p [...]
+<a name="L1076"></a><tt class="py-lineno">1076</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-string">'='</tt> <tt class="py-keyword">in</tt> <tt id="link-624" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-624', 'name', 'link-207');">name</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1077"></a><tt class="py-lineno">1077</tt>  <tt class="py-line">                <tt class="py-op">(</tt><tt id="link-625" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-625', 'name', 'link-207');">name</a></tt><tt class="py-op">,</tt> <tt class="py-name">default_repr</tt><tt class="py-op">)</tt> <tt class="py-op">=</tt> <tt id="link-626" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" hre [...]
+<a name="L1078"></a><tt class="py-lineno">1078</tt>  <tt class="py-line">                <tt class="py-name">default</tt> <tt class="py-op">=</tt> <tt id="link-627" class="py-name" targets="Class epydoc.apidoc.GenericValueDoc=epydoc.apidoc.GenericValueDoc-class.html"><a title="epydoc.apidoc.GenericValueDoc" class="py-name" href="#" onclick="return doclink('link-627', 'GenericValueDoc', 'link-627');">GenericValueDoc</a></tt><tt class="py-op">(</tt><tt id="link-628" class="py-name" targets [...]
+<a name="L1079"></a><tt class="py-lineno">1079</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1080"></a><tt class="py-lineno">1080</tt>  <tt class="py-line">                <tt class="py-name">default</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L1081"></a><tt class="py-lineno">1081</tt>  <tt class="py-line">            <tt id="link-629" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-629', 'name', 'link-207');">name</a></tt> <tt class="py-op">=</tt> <tt id="link-630" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-630', 'name', 'link-207');">name</a></tt><tt class="py-op">.</tt><tt class="py [...]
+<a name="L1082"></a><tt class="py-lineno">1082</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt id="link-631" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-631', 'name', 'link-207');">name</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'...'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1083"></a><tt class="py-lineno">1083</tt>  <tt class="py-line">                <tt class="py-name">func_doc</tt><tt class="py-op">.</tt><tt id="link-632" class="py-name"><a title="epydoc.apidoc.RoutineDoc.vararg" class="py-name" href="#" onclick="return doclink('link-632', 'vararg', 'link-618');">vararg</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'...'</tt> </tt>
+<a name="L1084"></a><tt class="py-lineno">1084</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt id="link-633" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-633', 'name', 'link-207');">name</a></tt><tt class="py-op">.</tt><tt class="py-name">startswith</tt><tt class="py-op">(</tt><tt class="py-string">'**'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1085"></a><tt class="py-lineno">1085</tt>  <tt class="py-line">                <tt class="py-name">func_doc</tt><tt class="py-op">.</tt><tt id="link-634" class="py-name"><a title="epydoc.apidoc.RoutineDoc.kwarg" class="py-name" href="#" onclick="return doclink('link-634', 'kwarg', 'link-619');">kwarg</a></tt> <tt class="py-op">=</tt> <tt id="link-635" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-635', 'name', ' [...]
+<a name="L1086"></a><tt class="py-lineno">1086</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt id="link-636" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-636', 'name', 'link-207');">name</a></tt><tt class="py-op">.</tt><tt class="py-name">startswith</tt><tt class="py-op">(</tt><tt class="py-string">'*'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1087"></a><tt class="py-lineno">1087</tt>  <tt class="py-line">                <tt class="py-name">func_doc</tt><tt class="py-op">.</tt><tt id="link-637" class="py-name"><a title="epydoc.apidoc.RoutineDoc.vararg" class="py-name" href="#" onclick="return doclink('link-637', 'vararg', 'link-618');">vararg</a></tt> <tt class="py-op">=</tt> <tt id="link-638" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-638', 'name' [...]
+<a name="L1088"></a><tt class="py-lineno">1088</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1089"></a><tt class="py-lineno">1089</tt>  <tt class="py-line">                <tt class="py-name">func_doc</tt><tt class="py-op">.</tt><tt id="link-639" class="py-name"><a title="epydoc.apidoc.RoutineDoc.posargs" class="py-name" href="#" onclick="return doclink('link-639', 'posargs', 'link-617');">posargs</a></tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-640" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-n [...]
+<a name="L1090"></a><tt class="py-lineno">1090</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">func_doc</tt><tt class="py-op">.</tt><tt id="link-641" class="py-name"><a title="epydoc.apidoc.RoutineDoc.posarg_defaults" class="py-name" href="#" onclick="return doclink('link-641', 'posarg_defaults', 'link-620');">posarg_defaults</a></tt><tt class="py-op">)</tt> <tt class="py-op"><</tt> <tt cl [...]
+<a name="L1091"></a><tt class="py-lineno">1091</tt>  <tt class="py-line">                    <tt class="py-name">func_doc</tt><tt class="py-op">.</tt><tt id="link-643" class="py-name"><a title="epydoc.apidoc.RoutineDoc.posarg_defaults" class="py-name" href="#" onclick="return doclink('link-643', 'posarg_defaults', 'link-620');">posarg_defaults</a></tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">default</tt><tt class="py-op">)</tt> </tt>
+<a name="L1092"></a><tt class="py-lineno">1092</tt>  <tt class="py-line">                <tt class="py-keyword">elif</tt> <tt class="py-name">default</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1093"></a><tt class="py-lineno">1093</tt>  <tt class="py-line">                    <tt class="py-name">argnum</tt> <tt class="py-op">=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">func_doc</tt><tt class="py-op">.</tt><tt id="link-644" class="py-name"><a title="epydoc.apidoc.RoutineDoc.posargs" class="py-name" href="#" onclick="return doclink('link-644', 'posargs', 'link-617');">posargs</a></tt><tt class="py-op">)</tt><tt class="py-op">-</tt><tt c [...]
+<a name="L1094"></a><tt class="py-lineno">1094</tt>  <tt class="py-line">                    <tt class="py-name">func_doc</tt><tt class="py-op">.</tt><tt id="link-645" class="py-name"><a title="epydoc.apidoc.RoutineDoc.posarg_defaults" class="py-name" href="#" onclick="return doclink('link-645', 'posarg_defaults', 'link-620');">posarg_defaults</a></tt><tt class="py-op">[</tt><tt class="py-name">argnum</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">default</tt> </tt>
+<a name="L1095"></a><tt class="py-lineno">1095</tt>  <tt class="py-line"> </tt>
+<a name="L1096"></a><tt class="py-lineno">1096</tt>  <tt class="py-line">    <tt class="py-comment"># Extract the return type/value from the signature</tt> </tt>
+<a name="L1097"></a><tt class="py-lineno">1097</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">rtype</tt><tt class="py-op">:</tt> </tt>
+<a name="L1098"></a><tt class="py-lineno">1098</tt>  <tt class="py-line">        <tt class="py-name">func_doc</tt><tt class="py-op">.</tt><tt id="link-646" class="py-name"><a title="epydoc.apidoc.RoutineDoc.return_type
+epydoc.docwriter.html.HTMLWriter.return_type" class="py-name" href="#" onclick="return doclink('link-646', 'return_type', 'link-175');">return_type</a></tt> <tt class="py-op">=</tt> <tt id="link-647" class="py-name"><a title="epydoc.markup
+epydoc.markup.doctest.DoctestColorizer.markup
+epydoc.markup.doctest.HTMLDoctestColorizer.markup
+epydoc.markup.doctest.LaTeXDoctestColorizer.markup
+epydoc.markup.doctest.XMLDoctestColorizer.markup" class="py-name" href="#" onclick="return doclink('link-647', 'markup', 'link-1');">markup</a></tt><tt class="py-op">.</tt><tt id="link-648" class="py-name"><a title="epydoc.markup.epytext.parse
+epydoc.markup.parse" class="py-name" href="#" onclick="return doclink('link-648', 'parse', 'link-67');">parse</a></tt><tt class="py-op">(</tt><tt class="py-name">rtype</tt><tt class="py-op">,</tt> <tt id="link-649" class="py-name"><a title="epydoc.apidoc.ModuleDoc.docformat" class="py-name" href="#" onclick="return doclink('link-649', 'docformat', 'link-61');">docformat</a></tt><tt class="py-op">,</tt> <tt class="py-name">parse_errors</tt><tt class="py-op">,</tt> </tt>
+<a name="L1099"></a><tt class="py-lineno">1099</tt>  <tt class="py-line">                                            <tt class="py-name">inline</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt>
+<a name="L1100"></a><tt class="py-lineno">1100</tt>  <tt class="py-line"> </tt>
+<a name="L1101"></a><tt class="py-lineno">1101</tt>  <tt class="py-line">    <tt class="py-comment"># Add the self parameter, if it was specified.</tt> </tt>
+<a name="L1102"></a><tt class="py-lineno">1102</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">selfparam</tt><tt class="py-op">:</tt> </tt>
+<a name="L1103"></a><tt class="py-lineno">1103</tt>  <tt class="py-line">        <tt class="py-name">func_doc</tt><tt class="py-op">.</tt><tt id="link-650" class="py-name"><a title="epydoc.apidoc.RoutineDoc.posargs" class="py-name" href="#" onclick="return doclink('link-650', 'posargs', 'link-617');">posargs</a></tt><tt class="py-op">.</tt><tt class="py-name">insert</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">selfparam</tt><tt clas [...]
+<a name="L1104"></a><tt class="py-lineno">1104</tt>  <tt class="py-line">        <tt class="py-name">func_doc</tt><tt class="py-op">.</tt><tt id="link-651" class="py-name"><a title="epydoc.apidoc.RoutineDoc.posarg_defaults" class="py-name" href="#" onclick="return doclink('link-651', 'posarg_defaults', 'link-620');">posarg_defaults</a></tt><tt class="py-op">.</tt><tt class="py-name">insert</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name [...]
+<a name="L1105"></a><tt class="py-lineno">1105</tt>  <tt class="py-line"> </tt>
+<a name="L1106"></a><tt class="py-lineno">1106</tt>  <tt class="py-line">    <tt class="py-comment"># Remove the signature from the docstring.</tt> </tt>
+<a name="L1107"></a><tt class="py-lineno">1107</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">doc_source</tt><tt class="py-op">.</tt><tt id="link-652" class="py-name"><a title="epydoc.apidoc.APIDoc.docstring" class="py-name" href="#" onclick="return doclink('link-652', 'docstring', 'link-52');">docstring</a></tt> <tt class="py-op">=</tt> <tt class="py-name">doc_source</tt><tt class="py-op">.</tt><tt id="link-653" class="py-name"><a title="epydoc.apidoc.APID [...]
+<a name="L1108"></a><tt class="py-lineno">1108</tt>  <tt class="py-line">         </tt>
+<a name="L1109"></a><tt class="py-lineno">1109</tt>  <tt class="py-line">    <tt class="py-comment"># We found a signature.</tt> </tt>
+<a name="L1110"></a><tt class="py-lineno">1110</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
+</div><a name="L1111"></a><tt class="py-lineno">1111</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:09:55 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.docstringparser.DocstringField-class.html b/doc/api/epydoc.docstringparser.DocstringField-class.html
new file mode 100644
index 0000000..47537f0
--- /dev/null
+++ b/doc/api/epydoc.docstringparser.DocstringField-class.html
@@ -0,0 +1,362 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.docstringparser.DocstringField</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.docstringparser-module.html">Module docstringparser</a> ::
+        Class DocstringField
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.docstringparser.DocstringField-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class DocstringField</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.docstringparser-pysrc.html#DocstringField">source code</a></span></p>
+<p>A simple docstring field, which can be used to describe specific 
+  information about an object, such as its author or its version. Simple 
+  docstring fields are fields that take no arguments, and are displayed as 
+  simple sections.</p>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__init__"></a><span class="summary-sig-name">__init__</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">tags</span>,
+        <span class="summary-sig-arg">label</span>,
+        <span class="summary-sig-arg">plural</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">short</span>=<span class="summary-sig-default">0</span>,
+        <span class="summary-sig-arg">multivalue</span>=<span class="summary-sig-default">1</span>,
+        <span class="summary-sig-arg">takes_arg</span>=<span class="summary-sig-default">0</span>,
+        <span class="summary-sig-arg">varnames</span>=<span class="summary-sig-default">None</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docstringparser-pysrc.html#DocstringField.__init__">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for___init___15-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for___init___15-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for___init___15" name="call_graph_for___init___15">
+<area shape="rect" href="epydoc.docstringparser.DocstringField-class.html#__init__" title="__init__()" alt="" coords="284,6,380,38" />
+<area shape="rect" href="epydoc.docstringparser-module.html#_descr_to_docstring_field" title="_descr_to_docstring_field()" alt="" coords="6,6,235,38" />
+</map>
+  <img src="call_graph_for___init___15.gif" alt='' usemap="#call_graph_for___init___15" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__cmp__"></a><span class="summary-sig-name">__cmp__</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">other</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docstringparser-pysrc.html#DocstringField.__cmp__">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for___cmp___3-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for___cmp___3-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for___cmp___3" name="call_graph_for___cmp___3">
+<area shape="rect" href="epydoc.docstringparser.DocstringField-class.html#__cmp__" title="__cmp__()" alt="" coords="271,6,375,38" />
+<area shape="rect" href="epydoc.docstringparser-module.html#add_metadata_from_var" title="add_metadata_from_var()" alt="" coords="5,6,221,38" />
+</map>
+  <img src="call_graph_for___cmp___3.gif" alt='' usemap="#call_graph_for___cmp___3" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__hash__"></a><span class="summary-sig-name">__hash__</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docstringparser-pysrc.html#DocstringField.__hash__">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for___hash___3-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for___hash___3-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for___hash___3" name="call_graph_for___hash___3">
+<area shape="rect" href="epydoc.docstringparser.DocstringField-class.html#__hash__" title="__hash__()" alt="" coords="469,6,576,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_standard_fields" title="docwriter.html.HTMLWriter.write_standard_fields()" alt="" coords="5,6,421,38" />
+</map>
+  <img src="call_graph_for___hash___3.gif" alt='' usemap="#call_graph_for___hash___3" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__repr__"></a><span class="summary-sig-name">__repr__</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docstringparser-pysrc.html#DocstringField.__repr__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== INSTANCE VARIABLES ==================== -->
+<a name="section-InstanceVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="multivalue"></a><span class="summary-name">multivalue</span><br />
+      If true, then multiple values may be given for this field; if false, 
+      then this field can only take a single value, and a warning should be
+      issued if it is redefined.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="plural"></a><span class="summary-name">plural</span><br />
+      The label that should be used to identify this field in the output, 
+      if the field contains multiple values.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docstringparser.DocstringField-class.html#short" class="summary-name">short</a><br />
+      If true, then multiple values should be combined into a single 
+      comma-delimited list.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="singular"></a><span class="summary-name">singular</span><br />
+      The label that should be used to identify this field in the output, 
+      if the field contains one value.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="tags"></a><span class="summary-name">tags</span><br />
+      The set of tags that can be used to identify this field.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docstringparser.DocstringField-class.html#takes_arg" class="summary-name">takes_arg</a><br />
+      If true, then this field expects an argument; and a separate field 
+      section will be constructed for each argument value.
+    </td>
+  </tr>
+</table>
+<!-- ==================== INSTANCE VARIABLE DETAILS ==================== -->
+<a name="section-InstanceVariableDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Variable Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceVariableDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="short"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">short</h3>
+  If true, then multiple values should be combined into a single 
+  comma-delimited list.  If false, then multiple values should be listed 
+  separately in a bulleted list.
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="takes_arg"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">takes_arg</h3>
+  If true, then this field expects an argument; and a separate field 
+  section will be constructed for each argument value.  The label (and 
+  plural label) should include a '%s' to mark where the argument's string 
+  rep should be added.
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:07:39 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.docwriter-module.html b/doc/api/epydoc.docwriter-module.html
new file mode 100644
index 0000000..442ffaa
--- /dev/null
+++ b/doc/api/epydoc.docwriter-module.html
@@ -0,0 +1,152 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.docwriter</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        Package docwriter
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.docwriter-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PACKAGE DESCRIPTION ==================== -->
+<h1 class="epydoc">Package docwriter</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.docwriter-pysrc.html">source code</a></span></p>
+<p>Output generation.</p>
+
+<!-- ==================== SUBMODULES ==================== -->
+<a name="section-Submodules"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Submodules</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Submodules"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+  <tr><td class="summary">
+  <ul class="nomargin">
+    <li> <strong class="uidlink"><a href="epydoc.docwriter.dotgraph-module.html">epydoc.docwriter.dotgraph</a></strong>: <em class="summary">Render Graphviz directed graphs as images.</em>    </li>
+    <li> <strong class="uidlink"><a href="epydoc.docwriter.html-module.html">epydoc.docwriter.html</a></strong>: <em class="summary">The HTML output generator for epydoc.</em>    </li>
+    <li> <strong class="uidlink"><a href="epydoc.docwriter.html_colorize-module.html">epydoc.docwriter.html_colorize</a></strong>: <em class="summary">Functions to produce colorized HTML code for various objects.</em>    </li>
+    <li> <strong class="uidlink"><a href="epydoc.docwriter.html_css-module.html">epydoc.docwriter.html_css</a></strong>: <em class="summary">Predefined CSS stylesheets for the HTML outputter (<a 
+        href="epydoc.docwriter.html-module.html" 
+        class="link">epydoc.docwriter.html</a>).</em>    </li>
+    <li> <strong class="uidlink"><a href="epydoc.docwriter.html_help-module.html">epydoc.docwriter.html_help</a></strong>: <em class="summary">Default help file for the HTML outputter (<a 
+        href="epydoc.docwriter.html-module.html" 
+        class="link">epydoc.docwriter.html</a>).</em>    </li>
+    <li> <strong class="uidlink"><a href="epydoc.docwriter.latex-module.html">epydoc.docwriter.latex</a></strong>: <em class="summary">The LaTeX output generator for epydoc.</em>    </li>
+    <li> <strong class="uidlink"><a href="epydoc.docwriter.plaintext-module.html">epydoc.docwriter.plaintext</a></strong>: <em class="summary">Plaintext output generation.</em>    </li>
+    <li> <strong class="uidlink"><a href="epydoc.docwriter.xlink-module.html">epydoc.docwriter.xlink</a></strong>: <em class="summary">A <a class="rst-rst-rst-reference external rst-rst-reference external rst-reference external" href="http://docutils.sourceforge.net/" target="_top">Docutils</a> interpreted text role for cross-API reference support.</em>    </li>
+  </ul></td></tr>
+</table>
+
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:06:30 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.docwriter-pysrc.html b/doc/api/epydoc.docwriter-pysrc.html
new file mode 100644
index 0000000..b03b250
--- /dev/null
+++ b/doc/api/epydoc.docwriter-pysrc.html
@@ -0,0 +1,134 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.docwriter</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        Package docwriter
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.docwriter-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="epydoc.docwriter-module.html">Package epydoc.docwriter</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno"> 1</tt>  <tt class="py-line"><tt class="py-comment"># epydoc -- Output generation</tt> </tt>
+<a name="L2"></a><tt class="py-lineno"> 2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L3"></a><tt class="py-lineno"> 3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2005 Edward Loper</tt> </tt>
+<a name="L4"></a><tt class="py-lineno"> 4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Author: Edward Loper <edloper at loper.org></tt> </tt>
+<a name="L5"></a><tt class="py-lineno"> 5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># URL: <http://epydoc.sf.net></tt> </tt>
+<a name="L6"></a><tt class="py-lineno"> 6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L7"></a><tt class="py-lineno"> 7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># $Id: __init__.py 956 2006-03-10 01:30:51Z edloper $</tt> </tt>
+<a name="L8"></a><tt class="py-lineno"> 8</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L9"></a><tt class="py-lineno"> 9</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L10"></a><tt class="py-lineno">10</tt>  <tt class="py-line"><tt class="py-docstring">Output generation.</tt> </tt>
+<a name="L11"></a><tt class="py-lineno">11</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L12"></a><tt class="py-lineno">12</tt>  <tt class="py-line"><tt class="py-name">__docformat__</tt> <tt class="py-op">=</tt> <tt class="py-string">'epytext en'</tt> </tt>
+<a name="L13"></a><tt class="py-lineno">13</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:09:59 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.docwriter.dotgraph-module.html b/doc/api/epydoc.docwriter.dotgraph-module.html
new file mode 100644
index 0000000..155d307
--- /dev/null
+++ b/doc/api/epydoc.docwriter.dotgraph-module.html
@@ -0,0 +1,1048 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.docwriter.dotgraph</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.docwriter-module.html">Package docwriter</a> ::
+        Module dotgraph
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.docwriter.dotgraph-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module dotgraph</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.docwriter.dotgraph-pysrc.html">source code</a></span></p>
+<p>Render Graphviz directed graphs as images.  Below are some examples.</p>
+<center><table border="0" cellpadding="0" cellspacing="0" class="graph">
+  <tr><td align="center">
+  <map id="import_graph" name="import_graph">
+<area shape="rect" href="epydoc-module.html" title="epydoc" alt="" coords="878,2243,926,2259" />
+<area shape="rect" href="epydoc-module.html" title="epydoc" alt="" coords="867,2227,936,2264" />
+<area shape="rect" href="epydoc.apidoc-module.html" title="epydoc.apidoc" alt="" coords="752,1410,795,1426" />
+<area shape="rect" href="epydoc.apidoc-module.html" title="apidoc" alt="" coords="742,1394,806,1431" />
+<area shape="rect" href="epydoc.cli-module.html" title="epydoc.cli" alt="" coords="614,2210,635,2226" />
+<area shape="rect" href="epydoc.cli-module.html" title="cli" alt="" coords="603,2194,646,2231" />
+<area shape="rect" href="epydoc.docwriter.html-module.html" title="epydoc.docwriter.html" alt="" coords="132,1951,162,1967" />
+<area shape="rect" href="epydoc.docwriter.html-module.html" title="html" alt="" coords="122,1935,172,1972" />
+<area shape="rect" href="epydoc.docwriter.latex-module.html" title="epydoc.docwriter.latex" alt="" coords="608,1356,640,1372" />
+<area shape="rect" href="epydoc.docwriter.latex-module.html" title="latex" alt="" coords="598,1340,651,1378" />
+<area shape="rect" href="epydoc.markup-module.html" title="epydoc.markup" alt="" coords="750,1042,798,1058" />
+<area shape="rect" href="epydoc.markup-module.html" title="markup" alt="" coords="739,1026,808,1063" />
+<area shape="rect" href="epydoc.test-module.html" title="epydoc.test" alt="" coords="760,2596,787,2612" />
+<area shape="rect" href="epydoc.test-module.html" title="test" alt="" coords="750,2580,798,2618" />
+<area shape="rect" href="epydoc.checker-module.html" title="epydoc.checker" alt="" coords="599,1703,650,1719" />
+<area shape="rect" href="epydoc.checker-module.html" title="checker" alt="" coords="588,1687,660,1724" />
+<area shape="rect" href="epydoc.docbuilder-module.html" title="epydoc.docbuilder" alt="" coords="115,414,179,430" />
+<area shape="rect" href="epydoc.docbuilder-module.html" title="docbuilder" alt="" coords="104,398,190,435" />
+<area shape="rect" href="epydoc.docintrospecter-module.html" title="epydoc.docintrospecter" alt="" coords="576,354,672,370" />
+<area shape="rect" href="epydoc.docintrospecter-module.html" title="docintrospecter" alt="" coords="566,338,683,375" />
+<area shape="rect" href="epydoc.docparser-module.html" title="epydoc.docparser" alt="" coords="418,324,482,340" />
+<area shape="rect" href="epydoc.docparser-module.html" title="docparser" alt="" coords="407,308,492,346" />
+<area shape="rect" href="epydoc.docstringparser-module.html" title="epydoc.docstringparser" alt="" coords="230,743,326,759" />
+<area shape="rect" href="epydoc.docstringparser-module.html" title="docstringparser" alt="" coords="219,727,336,764" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html" title="epydoc.docwriter.dotgraph" alt="" coords="596,1892,652,1908" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html" title="dotgraph" alt="" coords="586,1876,663,1914" />
+<area shape="rect" href="epydoc.docwriter.html_colorize-module.html" title="epydoc.docwriter.html_colorize" alt="" coords="583,2082,666,2098" />
+<area shape="rect" href="epydoc.docwriter.html_colorize-module.html" title="html_colorize" alt="" coords="572,2066,676,2103" />
+<area shape="rect" href="epydoc.docwriter.plaintext-module.html" title="epydoc.docwriter.plaintext" alt="" coords="598,1636,651,1652" />
+<area shape="rect" href="epydoc.docwriter.plaintext-module.html" title="plaintext" alt="" coords="587,1620,662,1658" />
+<area shape="rect" href="epydoc.markup.pyval_repr-module.html" title="epydoc.markup.pyval_repr" alt="" coords="392,684,507,700" />
+<area shape="rect" href="epydoc.markup.pyval_repr-module.html" title="markup.pyval_repr" alt="" coords="382,668,518,706" />
+<area shape="rect" href="epydoc.markup.restructuredtext-module.html" title="epydoc.markup.restructuredtext" alt="" coords="376,1396,523,1412" />
+<area shape="rect" href="epydoc.markup.restructuredtext-module.html" title="markup.restructuredtext" alt="" coords="366,1380,534,1418" />
+<area shape="rect" href="epydoc.test.util-module.html" title="epydoc.test.util" alt="" coords="16,728,64,744" />
+<area shape="rect" href="epydoc.test.util-module.html" title="test.util" alt="" coords="6,712,75,750" />
+<area shape="rect" href="epydoc.compat-module.html" title="epydoc.compat" alt="" coords="878,975,926,991" />
+<area shape="rect" href="epydoc.compat-module.html" title="compat" alt="" coords="867,959,936,996" />
+<area shape="rect" href="epydoc.docwriter-module.html" title="epydoc.docwriter" alt="" coords="872,908,931,924" />
+<area shape="rect" href="epydoc.docwriter-module.html" title="docwriter" alt="" coords="862,892,942,930" />
+<area shape="rect" href="epydoc.docwriter.html_css-module.html" title="epydoc.docwriter.html_css" alt="" coords="746,2407,802,2423" />
+<area shape="rect" href="epydoc.docwriter.html_css-module.html" title="html_css" alt="" coords="735,2391,812,2428" />
+<area shape="rect" href="epydoc.docwriter.html_help-module.html" title="epydoc.docwriter.html_help" alt="" coords="247,2306,308,2322" />
+<area shape="rect" href="epydoc.docwriter.html_help-module.html" title="html_help" alt="" coords="236,2290,319,2327" />
+<area shape="rect" href="epydoc.docwriter.xlink-module.html" title="epydoc.docwriter.xlink" alt="" coords="758,2279,790,2295" />
+<area shape="rect" href="epydoc.docwriter.xlink-module.html" title="xlink" alt="" coords="747,2263,800,2300" />
+<area shape="rect" href="epydoc.gui-module.html" title="epydoc.gui" alt="" coords="763,1906,784,1922" />
+<area shape="rect" href="epydoc.gui-module.html" title="gui" alt="" coords="752,1890,795,1927" />
+<area shape="rect" href="epydoc.log-module.html" title="epydoc.log" alt="" coords="891,1935,912,1951" />
+<area shape="rect" href="epydoc.log-module.html" title="log" alt="" coords="880,1919,923,1956" />
+<area shape="rect" href="epydoc.markup.epytext-module.html" title="epydoc.markup.epytext" alt="" coords="576,727,672,743" />
+<area shape="rect" href="epydoc.markup.epytext-module.html" title="markup.epytext" alt="" coords="566,711,683,748" />
+<area shape="rect" href="epydoc.markup.javadoc-module.html" title="epydoc.markup.javadoc" alt="" coords="575,983,674,999" />
+<area shape="rect" href="epydoc.markup.javadoc-module.html" title="markup.javadoc" alt="" coords="564,967,684,1004" />
+<area shape="rect" href="epydoc.markup.plaintext-module.html" title="epydoc.markup.plaintext" alt="" coords="574,855,675,871" />
+<area shape="rect" href="epydoc.markup.plaintext-module.html" title="markup.plaintext" alt="" coords="563,839,686,876" />
+<area shape="rect" href="epydoc.markup.doctest-module.html" title="epydoc.markup.doctest" alt="" coords="726,911,822,927" />
+<area shape="rect" href="epydoc.markup.doctest-module.html" title="markup.doctest" alt="" coords="715,895,832,932" />
+<area shape="rect" href="epydoc.util-module.html" title="epydoc.util" alt="" coords="891,1042,912,1058" />
+<area shape="rect" href="epydoc.util-module.html" title="util" alt="" coords="880,1026,923,1063" />
+</map>
+  <img src="import_graph.gif" alt='Import Graph' usemap="#import_graph" ismap="ismap" class="graph-with-title" />
+  </td></tr>
+  <tr><td align='center'>
+<span class="graph-title">Import Graph</span>
+  </td></tr>
+</table><br /></center><center><table border="0" cellpadding="0" cellspacing="0" class="graph">
+  <tr><td align="center">
+  <map id="class_hierarchy_for_apidoc_api" name="class_hierarchy_for_apidoc_api">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html" title="apidoc.APIDoc" alt="" coords="386,7,495,31" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html" title="apidoc.ValueDoc" alt="" coords="303,63,426,87" />
+<area shape="rect" href="epydoc.apidoc.VariableDoc-class.html" title="apidoc.VariableDoc" alt="" coords="450,63,586,87" />
+<area shape="rect" href="epydoc.apidoc.ClassDoc-class.html" title="apidoc.ClassDoc" alt="" coords="106,175,228,199" />
+<area shape="rect" href="epydoc.apidoc.ClassMethodDoc-class.html" title="apidoc.ClassMethodDoc" alt="" coords="487,175,652,199" />
+<area shape="rect" href="epydoc.apidoc.GenericValueDoc-class.html" title="apidoc.GenericValueDoc" alt="" coords="6,119,174,143" />
+<area shape="rect" href="epydoc.apidoc.ModuleDoc-class.html" title="apidoc.ModuleDoc" alt="" coords="252,175,383,199" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html" title="apidoc.NamespaceDoc" alt="" coords="198,119,358,143" />
+<area shape="rect" href="epydoc.apidoc.PropertyDoc-class.html" title="apidoc.PropertyDoc" alt="" coords="382,119,520,143" />
+<area shape="rect" href="epydoc.apidoc.RoutineDoc-class.html" title="apidoc.RoutineDoc" alt="" coords="544,119,678,143" />
+<area shape="rect" href="epydoc.apidoc.StaticMethodDoc-class.html" title="apidoc.StaticMethodDoc" alt="" coords="676,175,842,199" />
+</map>
+  <img src="class_hierarchy_for_apidoc_api.gif" alt='Class Hierarchy for apidoc.APIDoc' usemap="#class_hierarchy_for_apidoc_api" ismap="ismap" class="graph-with-title" />
+  </td></tr>
+  <tr><td align='center'>
+<span class="graph-title">Class Hierarchy for apidoc.APIDoc</span>
+  </td></tr>
+</table><br /></center><center><table border="0" cellpadding="0" cellspacing="0" class="graph">
+  <tr><td align="center">
+  <map id="package_tree_for_epydoc_2" name="package_tree_for_epydoc_2">
+<area shape="rect" href="epydoc.apidoc-module.html" title="epydoc.apidoc" alt="" coords="25,55,75,76" />
+<area shape="rect" href="epydoc.checker-module.html" title="epydoc.checker" alt="" coords="83,55,140,76" />
+<area shape="rect" href="epydoc.cli-module.html" title="epydoc.cli" alt="" coords="148,55,176,76" />
+<area shape="rect" href="epydoc.compat-module.html" title="epydoc.compat" alt="" coords="184,55,239,76" />
+<area shape="rect" href="epydoc.docbuilder-module.html" title="epydoc.docbuilder" alt="" coords="247,55,316,76" />
+<area shape="rect" href="epydoc.docintrospecter-module.html" title="epydoc.docintrospecter" alt="" coords="324,55,424,76" />
+<area shape="rect" href="epydoc.docparser-module.html" title="epydoc.docparser" alt="" coords="432,55,500,76" />
+<area shape="rect" href="epydoc.docstringparser-module.html" title="epydoc.docstringparser" alt="" coords="25,97,500,119" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html" title="epydoc.docwriter.dotgraph" alt="" coords="35,173,97,195" />
+<area shape="rect" href="epydoc.docwriter.html-module.html" title="epydoc.docwriter.html" alt="" coords="105,173,140,195" />
+<area shape="rect" href="epydoc.docwriter.html_colorize-module.html" title="epydoc.docwriter.html_colorize" alt="" coords="148,173,235,195" />
+<area shape="rect" href="epydoc.docwriter.html_css-module.html" title="epydoc.docwriter.html_css" alt="" coords="243,173,304,195" />
+<area shape="rect" href="epydoc.docwriter.html_help-module.html" title="epydoc.docwriter.html_help" alt="" coords="312,173,379,195" />
+<area shape="rect" href="epydoc.docwriter.latex-module.html" title="epydoc.docwriter.latex" alt="" coords="387,173,424,195" />
+<area shape="rect" href="epydoc.docwriter.plaintext-module.html" title="epydoc.docwriter.plaintext" alt="" coords="432,173,491,195" />
+<area shape="rect" href="epydoc.docwriter.xlink-module.html" title="epydoc.docwriter.xlink" alt="" coords="35,216,491,237" />
+<area shape="rect" href="epydoc.docwriter-module.html" title="epydoc.docwriter" alt="" coords="25,140,500,247" />
+<area shape="rect" href="epydoc.gui-module.html" title="epydoc.gui" alt="" coords="25,268,259,289" />
+<area shape="rect" href="epydoc.log-module.html" title="epydoc.log" alt="" coords="267,268,500,289" />
+<area shape="rect" href="epydoc.markup.doctest-module.html" title="epydoc.markup.doctest" alt="" coords="35,344,92,365" />
+<area shape="rect" href="epydoc.markup.epytext-module.html" title="epydoc.markup.epytext" alt="" coords="100,344,156,365" />
+<area shape="rect" href="epydoc.markup.javadoc-module.html" title="epydoc.markup.javadoc" alt="" coords="164,344,224,365" />
+<area shape="rect" href="epydoc.markup.plaintext-module.html" title="epydoc.markup.plaintext" alt="" coords="232,344,295,365" />
+<area shape="rect" href="epydoc.markup.pyval_repr-module.html" title="epydoc.markup.pyval_repr" alt="" coords="303,344,377,365" />
+<area shape="rect" href="epydoc.markup.restructuredtext-module.html" title="epydoc.markup.restructuredtext" alt="" coords="385,344,491,365" />
+<area shape="rect" href="epydoc.markup-module.html" title="epydoc.markup" alt="" coords="25,311,500,375" />
+<area shape="rect" href="epydoc.test.util-module.html" title="epydoc.test.util" alt="" coords="35,429,275,451" />
+<area shape="rect" href="epydoc.test-module.html" title="epydoc.test" alt="" coords="25,396,284,460" />
+<area shape="rect" href="epydoc.util-module.html" title="epydoc.util" alt="" coords="292,417,500,460" />
+<area shape="rect" href="epydoc-module.html" title="epydoc" alt="" coords="16,21,509,469" />
+<area shape="rect" href="epydoc-module.html" title="epydoc" alt="" coords="5,5,520,475" />
+</map>
+  <img src="package_tree_for_epydoc_2.gif" alt='Package Tree for epydoc' usemap="#package_tree_for_epydoc_2" ismap="ismap" class="graph-with-title" />
+  </td></tr>
+  <tr><td align='center'>
+<span class="graph-title">Package Tree for epydoc</span>
+  </td></tr>
+</table><br /></center>
+
+<hr />
+<div class="fields">      <p><strong>See Also:</strong>
+        <a class="rst-reference external" href="http://www.research.att.com/sw/tools/graphviz/" target="_top">The Graphviz Homepage</a>
+      </p>
+</div><!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Classes</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Classes"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Dot Graphs</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docwriter.dotgraph.DotGraph-class.html" class="summary-name">DotGraph</a><br />
+      A <tt class="rst-rst-docutils literal rst-docutils literal"><span class="pre">dot</span></tt> directed graph.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docwriter.dotgraph.DotGraphNode-class.html" class="summary-name">DotGraphNode</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docwriter.dotgraph.DotGraphEdge-class.html" class="summary-name">DotGraphEdge</a>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Specialized Nodes for UML Graphs</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html" class="summary-name">DotGraphUmlClassNode</a><br />
+      A specialized dot graph node used to display <a href="epydoc.apidoc.ClassDoc-class.html" class="link">ClassDoc</a>s using
+UML notation.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docwriter.dotgraph.DotGraphUmlModuleNode-class.html" class="summary-name">DotGraphUmlModuleNode</a><br />
+      A specialized dot grah node used to display <a href="epydoc.apidoc.ModuleDoc-class.html" class="link">ModuleDoc</a>s using
+UML notation.
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTIONS ==================== -->
+<a name="section-Functions"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Functions</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Functions"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Graph Generation Functions</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="package_tree_graph"></a><span class="summary-sig-name">package_tree_graph</span>(<span class="summary-sig-arg">packages</span>,
+        <span class="summary-sig-arg">linker</span>,
+        <span class="summary-sig-arg">context</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">**options</span>)</span><br />
+      Return a <a href="epydoc.docwriter.dotgraph.DotGraph-class.html" class="link">DotGraph</a> that graphically displays the package
+hierarchies for the given packages.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.dotgraph-pysrc.html#package_tree_graph">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_package_tree_gr-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_package_tree_gr-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_package_tree_gr" name="call_graph_for_package_tree_gr">
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#get_dot_version" title="get_dot_version()" alt="" coords="717,6,872,38" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#package_tree_graph" title="package_tree_graph()" alt="" coords="449,34,633,66" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#uml_package_tree_graph" title="uml_package_tree_graph()" alt="" coords="683,62,907,94" />
+<area shape="rect" href="epydoc.markup.restructuredtext-module.html#_construct_packagetree" title="markup.restructuredtext._construct_packagetree()" alt="" coords="7,34,399,66" />
+</map>
+  <img src="call_graph_for_package_tree_gr.gif" alt='' usemap="#call_graph_for_package_tree_gr" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="uml_package_tree_graph"></a><span class="summary-sig-name">uml_package_tree_graph</span>(<span class="summary-sig-arg">packages</span>,
+        <span class="summary-sig-arg">linker</span>,
+        <span class="summary-sig-arg">context</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">**options</span>)</span><br />
+      Return a <a href="epydoc.docwriter.dotgraph.DotGraph-class.html" class="link">DotGraph</a> that graphically displays the package
+hierarchies for the given packages as a nested set of UML
+symbols.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.dotgraph-pysrc.html#uml_package_tree_graph">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_uml_package_tre-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_uml_package_tre-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_uml_package_tre" name="call_graph_for_uml_package_tre">
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraph-class.html#__init__" title="DotGraph.__init__()" alt="" coords="579,6,755,38" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlModuleNode-class.html#__init__" title="DotGraphUmlModuleNode.__init__()" alt="" coords="514,62,820,94" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#name_list" title="name_list()" alt="" coords="614,118,720,150" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#package_tree_graph" title="package_tree_graph()" alt="" coords="7,62,191,94" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#uml_package_tree_graph" title="uml_package_tree_graph()" alt="" coords="240,62,464,94" />
+</map>
+  <img src="call_graph_for_uml_package_tre.gif" alt='' usemap="#call_graph_for_uml_package_tre" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docwriter.dotgraph-module.html#class_tree_graph" class="summary-sig-name">class_tree_graph</a>(<span class="summary-sig-arg">bases</span>,
+        <span class="summary-sig-arg">linker</span>,
+        <span class="summary-sig-arg">context</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">**options</span>)</span><br />
+      Return a <a href="epydoc.docwriter.dotgraph.DotGraph-class.html" class="link">DotGraph</a> that graphically displays the class
+hierarchy for the given classes.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.dotgraph-pysrc.html#class_tree_graph">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_class_tree_grap-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_class_tree_grap-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_class_tree_grap" name="call_graph_for_class_tree_grap">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__hash__" title="apidoc.APIDoc.__hash__()" alt="" coords="703,6,927,38" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraph-class.html#__init__" title="DotGraph.__init__()" alt="" coords="727,62,903,94" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphEdge-class.html#__init__" title="DotGraphEdge.__init__()" alt="" coords="708,118,921,150" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#add_valdoc_nodes" title="add_valdoc_nodes()" alt="" coords="728,174,901,206" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#class_tree_graph" title="class_tree_graph()" alt="" coords="493,118,653,150" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#name_list" title="name_list()" alt="" coords="761,230,868,262" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#_build_graph" title="markup.epytext.ParsedEpytextDocstring._build_graph()" alt="" coords="5,90,445,122" />
+<area shape="rect" href="epydoc.markup.restructuredtext-module.html#_construct_classtree" title="markup.restructuredtext._construct_classtree()" alt="" coords="41,146,409,178" />
+</map>
+  <img src="call_graph_for_class_tree_grap.gif" alt='' usemap="#call_graph_for_class_tree_grap" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docwriter.dotgraph-module.html#uml_class_tree_graph" class="summary-sig-name">uml_class_tree_graph</a>(<span class="summary-sig-arg">class_doc</span>,
+        <span class="summary-sig-arg">linker</span>,
+        <span class="summary-sig-arg">context</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">**options</span>)</span><br />
+      Return a <a href="epydoc.docwriter.dotgraph.DotGraph-class.html" class="link">DotGraph</a> that graphically displays the class hierarchy
+for the given class, using UML notation.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.dotgraph-pysrc.html#uml_class_tree_graph">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_uml_class_tree_-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_uml_class_tree_-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_uml_class_tree_" name="call_graph_for_uml_class_tree_">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__cmp__" title="apidoc.APIDoc.__cmp__()" alt="" coords="712,6,936,38" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__hash__" title="apidoc.APIDoc.__hash__()" alt="" coords="712,62,936,94" />
+<area shape="rect" href="epydoc.apidoc.ClassDoc-class.html#mro" title="apidoc.ClassDoc.mro()" alt="" coords="727,118,921,150" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__getitem__" title="apidoc.DottedName.__getitem__()" alt="" coords="684,174,964,206" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__str__" title="apidoc.DottedName.__str__()" alt="" coords="703,230,945,262" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraph-class.html#__init__" title="DotGraph.__init__()" alt="" coords="736,286,912,318" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphEdge-class.html#__init__" title="DotGraphEdge.__init__()" alt="" coords="717,342,931,374" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphEdge-class.html#__setitem__" title="DotGraphEdge.__setitem__()" alt="" coords="703,398,945,430" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#__init__" title="DotGraphUmlClassNode.__init__()" alt="" coords="679,454,969,486" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#link_attributes" title="DotGraphUmlClassNode.link_attributes()" alt="" coords="656,510,992,542" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#uml_class_tree_graph" title="uml_class_tree_graph()" alt="" coords="409,258,607,290" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_class_tree_graph" title="html.HTMLWriter.write_class_tree_graph()" alt="" coords="7,258,359,290" />
+</map>
+  <img src="call_graph_for_uml_class_tree_.gif" alt='' usemap="#call_graph_for_uml_class_tree_" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="import_graph"></a><span class="summary-sig-name">import_graph</span>(<span class="summary-sig-arg">modules</span>,
+        <span class="summary-sig-arg">docindex</span>,
+        <span class="summary-sig-arg">linker</span>,
+        <span class="summary-sig-arg">context</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">**options</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.dotgraph-pysrc.html#import_graph">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_import_graph-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_import_graph-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_import_graph" name="call_graph_for_import_graph">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__hash__" title="apidoc.APIDoc.__hash__()" alt="" coords="661,6,885,38" />
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#find" title="apidoc.DocIndex.find()" alt="" coords="676,62,871,94" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__getitem__" title="apidoc.DottedName.__getitem__()" alt="" coords="633,118,913,150" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraph-class.html#__init__" title="DotGraph.__init__()" alt="" coords="685,174,861,206" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphEdge-class.html#__init__" title="DotGraphEdge.__init__()" alt="" coords="667,230,880,262" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#add_valdoc_nodes" title="add_valdoc_nodes()" alt="" coords="687,286,860,318" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#import_graph" title="import_graph()" alt="" coords="448,146,584,178" />
+<area shape="rect" href="epydoc.markup.restructuredtext-module.html#_construct_importgraph" title="markup.restructuredtext._construct_importgraph()" alt="" coords="5,146,400,178" />
+</map>
+  <img src="call_graph_for_import_graph.gif" alt='' usemap="#call_graph_for_import_graph" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docwriter.dotgraph-module.html#call_graph" class="summary-sig-name">call_graph</a>(<span class="summary-sig-arg">api_docs</span>,
+        <span class="summary-sig-arg">docindex</span>,
+        <span class="summary-sig-arg">linker</span>,
+        <span class="summary-sig-arg">context</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">**options</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.dotgraph-pysrc.html#call_graph">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Dot Version</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_dot_version"></a><span class="summary-sig-name">get_dot_version</span>()</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.dotgraph-pysrc.html#get_dot_version">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_get_dot_version-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_get_dot_version-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_get_dot_version" name="call_graph_for_get_dot_version">
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraph-class.html#to_html" title="DotGraph.to_html()" alt="" coords="27,6,197,38" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#get_dot_version" title="get_dot_version()" alt="" coords="267,62,421,94" />
+<area shape="rect" href="epydoc.log-module.html#info" title="log.info()" alt="" coords="515,34,605,66" />
+<area shape="rect" href="epydoc.util-module.html#run_subprocess" title="util.run_subprocess()" alt="" coords="469,90,651,122" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#package_tree_graph" title="package_tree_graph()" alt="" coords="20,62,204,94" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#specialize_valdoc_node" title="specialize_valdoc_node()" alt="" coords="7,118,217,150" />
+</map>
+  <img src="call_graph_for_get_dot_version.gif" alt='' usemap="#call_graph_for_get_dot_version" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Helper Functions</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docwriter.dotgraph-module.html#add_valdoc_nodes" class="summary-sig-name">add_valdoc_nodes</a>(<span class="summary-sig-arg">graph</span>,
+        <span class="summary-sig-arg">val_docs</span>,
+        <span class="summary-sig-arg">linker</span>,
+        <span class="summary-sig-arg">context</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.dotgraph-pysrc.html#add_valdoc_nodes">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_add_valdoc_node-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_add_valdoc_node-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_add_valdoc_node" name="call_graph_for_add_valdoc_node">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__hash__" title="apidoc.APIDoc.__hash__()" alt="" coords="481,6,705,38" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__cmp__" title="apidoc.DottedName.__cmp__()" alt="" coords="465,62,721,94" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#contextualize" title="apidoc.DottedName.contextualize()" alt="" coords="449,118,737,150" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphNode-class.html#__init__" title="DotGraphNode.__init__()" alt="" coords="485,174,701,206" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#add_valdoc_nodes" title="add_valdoc_nodes()" alt="" coords="213,146,387,178" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#specialize_valdoc_node" title="specialize_valdoc_node()" alt="" coords="488,230,699,262" />
+<area shape="rect" href="epydoc.docwriter.html._HTMLDocstringLinker-class.html#url_for" title="html._HTMLDocstringLinker.url_for()" alt="" coords="436,286,751,318" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#class_tree_graph" title="class_tree_graph()" alt="" coords="5,118,165,150" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#import_graph" title="import_graph()" alt="" coords="17,174,153,206" />
+</map>
+  <img src="call_graph_for_add_valdoc_node.gif" alt='' usemap="#call_graph_for_add_valdoc_node" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="specialize_valdoc_node"></a><span class="summary-sig-name">specialize_valdoc_node</span>(<span class="summary-sig-arg">node</span>,
+        <span class="summary-sig-arg">val_doc</span>,
+        <span class="summary-sig-arg">context</span>,
+        <span class="summary-sig-arg">url</span>)</span><br />
+      Update the style attributes of <code class="link">node</code> to reflext its type
+and context.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.dotgraph-pysrc.html#specialize_valdoc_node">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_specialize_vald-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_specialize_vald-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_specialize_vald" name="call_graph_for_specialize_vald">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__cmp__" title="apidoc.APIDoc.__cmp__()" alt="" coords="500,6,724,38" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__str__" title="apidoc.DottedName.__str__()" alt="" coords="491,62,733,94" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphNode-class.html#__getitem__" title="DotGraphNode.__getitem__()" alt="" coords="488,118,736,150" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphNode-class.html#__setitem__" title="DotGraphNode.__setitem__()" alt="" coords="489,174,735,206" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#add_valdoc_nodes" title="add_valdoc_nodes()" alt="" coords="5,118,179,150" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#specialize_valdoc_node" title="specialize_valdoc_node()" alt="" coords="228,118,439,150" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#get_dot_version" title="get_dot_version()" alt="" coords="535,230,689,262" />
+</map>
+  <img src="call_graph_for_specialize_vald.gif" alt='' usemap="#call_graph_for_specialize_vald" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="name_list"></a><span class="summary-sig-name">name_list</span>(<span class="summary-sig-arg">api_docs</span>,
+        <span class="summary-sig-arg">context</span>=<span class="summary-sig-default">None</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.dotgraph-pysrc.html#name_list">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_name_list-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_name_list-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_name_list" name="call_graph_for_name_list">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__str__" title="apidoc.DottedName.__str__()" alt="" coords="455,6,697,38" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#contextualize" title="apidoc.DottedName.contextualize()" alt="" coords="432,62,720,94" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#class_tree_graph" title="class_tree_graph()" alt="" coords="37,6,197,38" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#name_list" title="name_list()" alt="" coords="277,34,384,66" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#uml_package_tree_graph" title="uml_package_tree_graph()" alt="" coords="5,62,229,94" />
+</map>
+  <img src="call_graph_for_name_list.gif" alt='' usemap="#call_graph_for_name_list" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+</table>
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Variables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="MODULE_BG"></a><span class="summary-name">MODULE_BG</span> = <code title="'#d8e8ff'"><code class="variable-quote">'</code><code class="variable-string">#d8e8ff</code><code class="variable-quote">'</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="CLASS_BG"></a><span class="summary-name">CLASS_BG</span> = <code title="'#d8ffe8'"><code class="variable-quote">'</code><code class="variable-string">#d8ffe8</code><code class="variable-quote">'</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="SELECTED_BG"></a><span class="summary-name">SELECTED_BG</span> = <code title="'#ffd0d0'"><code class="variable-quote">'</code><code class="variable-string">#ffd0d0</code><code class="variable-quote">'</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="BASECLASS_BG"></a><span class="summary-name">BASECLASS_BG</span> = <code title="'#e0b0a0'"><code class="variable-quote">'</code><code class="variable-string">#e0b0a0</code><code class="variable-quote">'</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="SUBCLASS_BG"></a><span class="summary-name">SUBCLASS_BG</span> = <code title="'#e0b0a0'"><code class="variable-quote">'</code><code class="variable-string">#e0b0a0</code><code class="variable-quote">'</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="ROUTINE_BG"></a><span class="summary-name">ROUTINE_BG</span> = <code title="'#e8d0b0'"><code class="variable-quote">'</code><code class="variable-string">#e8d0b0</code><code class="variable-quote">'</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="INH_LINK_COLOR"></a><span class="summary-name">INH_LINK_COLOR</span> = <code title="'#800000'"><code class="variable-quote">'</code><code class="variable-string">#800000</code><code class="variable-quote">'</code></code>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Dot Graphs</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="DOT_COMMAND"></a><span class="summary-name">DOT_COMMAND</span> = <code title="'dot'"><code class="variable-quote">'</code><code class="variable-string">dot</code><code class="variable-quote">'</code></code><br />
+      The command that should be used to spawn dot
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8"  class="private">
+  <th colspan="2" class="group-header"
+    >    Dot Version</th></tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="_dot_version"></a><span class="summary-name">_dot_version</span> = <code title="None">None</code>
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="_DOT_VERSION_RE"></a><span class="summary-name">_DOT_VERSION_RE</span> = <code title="re.compile(r'dot version ([\d\.]+)')">re.compile(r'dot version <code class="re-group">(</code><code class="re-group">[</code>\d\.<code class="re-group">]</code><code class="re-op">+</code><code class="re-group">)</code>')</code>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Helper Functions</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="NOOP_URL"></a><span class="summary-name">NOOP_URL</span> = <code title="'javascript:void(0);'"><code class="variable-quote">'</code><code class="variable-string">javascript:void(0);</code><code class="variable-quote">'</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docwriter.dotgraph-module.html#MODULE_NODE_HTML" class="summary-name">MODULE_NODE_HTML</a> = <code title="'''<TABLE BORDER="0" CELLBORDER="0" CELLSPACING="0"
+         CELLPADDING="0" PORT="table" ALIGN="LEFT">
+  <TR><TD ALIGN="LEFT" VALIGN="BOTTOM" HEIGHT="8" WIDTH="16" FIXEDSIZE\
+="true"
+          BGCOLOR="%s" BORDER="1" PORT="tab"></TD></TR>
+  <TR><TD ALIGN="LEFT" VALIGN="TOP" BGCOLOR="%s" BORDER="1"
+          PORT="body" HREF="%s" TOOLTIP="%s">%s</TD></TR>
+  </TABLE>'''"><code class="variable-quote">'</code><code class="variable-string"><TABLE BORDER="0" CELLBORDER="0" CELLSPACI</code><code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTION DETAILS ==================== -->
+<a name="section-FunctionDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Function Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-FunctionDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="class_tree_graph"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">class_tree_graph</span>(<span class="sig-arg">bases</span>,
+        <span class="sig-arg">linker</span>,
+        <span class="sig-arg">context</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">**options</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docwriter.dotgraph-pysrc.html#class_tree_graph">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_class_tree_grap-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_class_tree_grap-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_class_tree_grap" name="call_graph_for_class_tree_grap">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__hash__" title="apidoc.APIDoc.__hash__()" alt="" coords="703,6,927,38" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraph-class.html#__init__" title="DotGraph.__init__()" alt="" coords="727,62,903,94" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphEdge-class.html#__init__" title="DotGraphEdge.__init__()" alt="" coords="708,118,921,150" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#add_valdoc_nodes" title="add_valdoc_nodes()" alt="" coords="728,174,901,206" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#class_tree_graph" title="class_tree_graph()" alt="" coords="493,118,653,150" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#name_list" title="name_list()" alt="" coords="761,230,868,262" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#_build_graph" title="markup.epytext.ParsedEpytextDocstring._build_graph()" alt="" coords="5,90,445,122" />
+<area shape="rect" href="epydoc.markup.restructuredtext-module.html#_construct_classtree" title="markup.restructuredtext._construct_classtree()" alt="" coords="41,146,409,178" />
+</map>
+  <img src="call_graph_for_class_tree_grap.gif" alt='' usemap="#call_graph_for_class_tree_grap" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Return a <a href="epydoc.docwriter.dotgraph.DotGraph-class.html" class="link">DotGraph</a> that graphically displays the class
+hierarchy for the given classes.  Options:</p>
+<blockquote>
+<ul class="rst-simple">
+<li>exclude</li>
+<li>dir: LR|RL|BT requests a left-to-right, right-to-left, or
+bottom-to- top, drawing.  (corresponds to the dot option
+'rankdir'</li>
+</ul>
+</blockquote>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="uml_class_tree_graph"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">uml_class_tree_graph</span>(<span class="sig-arg">class_doc</span>,
+        <span class="sig-arg">linker</span>,
+        <span class="sig-arg">context</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">**options</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docwriter.dotgraph-pysrc.html#uml_class_tree_graph">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_uml_class_tree_-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_uml_class_tree_-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_uml_class_tree_" name="call_graph_for_uml_class_tree_">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__cmp__" title="apidoc.APIDoc.__cmp__()" alt="" coords="712,6,936,38" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__hash__" title="apidoc.APIDoc.__hash__()" alt="" coords="712,62,936,94" />
+<area shape="rect" href="epydoc.apidoc.ClassDoc-class.html#mro" title="apidoc.ClassDoc.mro()" alt="" coords="727,118,921,150" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__getitem__" title="apidoc.DottedName.__getitem__()" alt="" coords="684,174,964,206" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__str__" title="apidoc.DottedName.__str__()" alt="" coords="703,230,945,262" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraph-class.html#__init__" title="DotGraph.__init__()" alt="" coords="736,286,912,318" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphEdge-class.html#__init__" title="DotGraphEdge.__init__()" alt="" coords="717,342,931,374" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphEdge-class.html#__setitem__" title="DotGraphEdge.__setitem__()" alt="" coords="703,398,945,430" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#__init__" title="DotGraphUmlClassNode.__init__()" alt="" coords="679,454,969,486" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#link_attributes" title="DotGraphUmlClassNode.link_attributes()" alt="" coords="656,510,992,542" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#uml_class_tree_graph" title="uml_class_tree_graph()" alt="" coords="409,258,607,290" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_class_tree_graph" title="html.HTMLWriter.write_class_tree_graph()" alt="" coords="7,258,359,290" />
+</map>
+  <img src="call_graph_for_uml_class_tree_.gif" alt='' usemap="#call_graph_for_uml_class_tree_" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Return a <a href="epydoc.docwriter.dotgraph.DotGraph-class.html" class="link">DotGraph</a> that graphically displays the class hierarchy
+for the given class, using UML notation.  Options:</p>
+<blockquote>
+<ul class="rst-simple">
+<li>max_attributes</li>
+<li>max_operations</li>
+<li>show_private_vars</li>
+<li>show_magic_vars</li>
+<li>link_attributes</li>
+</ul>
+</blockquote>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="call_graph"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">call_graph</span>(<span class="sig-arg">api_docs</span>,
+        <span class="sig-arg">docindex</span>,
+        <span class="sig-arg">linker</span>,
+        <span class="sig-arg">context</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">**options</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docwriter.dotgraph-pysrc.html#call_graph">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>options</code></strong> - <ul class="rst-simple">
+<li><tt class="rst-docutils literal"><span class="pre">dir</span></tt>: rankdir for the graph.  (default=LR)</li>
+<li><tt class="rst-docutils literal"><span class="pre">add_callers</span></tt>: also include callers for any of the
+routines in <tt class="rst-docutils literal"><span class="pre">api_docs</span></tt>.  (default=False)</li>
+<li><tt class="rst-docutils literal"><span class="pre">add_callees</span></tt>: also include callees for any of the
+routines in <tt class="rst-docutils literal"><span class="pre">api_docs</span></tt>.  (default=False)</li>
+</ul></li>
+    </ul></dd>
+  </dl>
+<div class="fields">      <p><strong>To Do:</strong>
+        Add an <tt class="rst-rst-docutils literal rst-docutils literal"><span class="pre">exclude</span></tt> option?
+      </p>
+</div></td></tr></table>
+</div>
+<a name="add_valdoc_nodes"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">add_valdoc_nodes</span>(<span class="sig-arg">graph</span>,
+        <span class="sig-arg">val_docs</span>,
+        <span class="sig-arg">linker</span>,
+        <span class="sig-arg">context</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docwriter.dotgraph-pysrc.html#add_valdoc_nodes">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_add_valdoc_node-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_add_valdoc_node-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_add_valdoc_node" name="call_graph_for_add_valdoc_node">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__hash__" title="apidoc.APIDoc.__hash__()" alt="" coords="481,6,705,38" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__cmp__" title="apidoc.DottedName.__cmp__()" alt="" coords="465,62,721,94" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#contextualize" title="apidoc.DottedName.contextualize()" alt="" coords="449,118,737,150" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphNode-class.html#__init__" title="DotGraphNode.__init__()" alt="" coords="485,174,701,206" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#add_valdoc_nodes" title="add_valdoc_nodes()" alt="" coords="213,146,387,178" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#specialize_valdoc_node" title="specialize_valdoc_node()" alt="" coords="488,230,699,262" />
+<area shape="rect" href="epydoc.docwriter.html._HTMLDocstringLinker-class.html#url_for" title="html._HTMLDocstringLinker.url_for()" alt="" coords="436,286,751,318" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#class_tree_graph" title="class_tree_graph()" alt="" coords="5,118,165,150" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#import_graph" title="import_graph()" alt="" coords="17,174,153,206" />
+</map>
+  <img src="call_graph_for_add_valdoc_node.gif" alt='' usemap="#call_graph_for_add_valdoc_node" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  
+  <dl class="fields">
+  </dl>
+<div class="fields">      <p><strong>To Do:</strong>
+        Use different node styles for different subclasses of APIDoc
+      </p>
+</div></td></tr></table>
+</div>
+<br />
+<!-- ==================== VARIABLES DETAILS ==================== -->
+<a name="section-VariablesDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Variables Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-VariablesDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="MODULE_NODE_HTML"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">MODULE_NODE_HTML</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'''</code><code class="variable-string"><TABLE BORDER="0" CELLBORDER="0" CELLSPACING="0"</code>
+<code class="variable-string">         CELLPADDING="0" PORT="table" ALIGN="LEFT"></code>
+<code class="variable-string">  <TR><TD ALIGN="LEFT" VALIGN="BOTTOM" HEIGHT="8" WIDTH="16" FIXEDSIZE</code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-string">="true"</code>
+<code class="variable-string">          BGCOLOR="%s" BORDER="1" PORT="tab"></TD></TR></code>
+<code class="variable-string">  <TR><TD ALIGN="LEFT" VALIGN="TOP" BGCOLOR="%s" BORDER="1"</code>
+<code class="variable-string">          PORT="body" HREF="%s" TOOLTIP="%s">%s</TD></TR></code>
+<code class="variable-string">  </TABLE></code><code class="variable-quote">'''</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:06:36 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.docwriter.dotgraph-pysrc.html b/doc/api/epydoc.docwriter.dotgraph-pysrc.html
new file mode 100644
index 0000000..111e8d7
--- /dev/null
+++ b/doc/api/epydoc.docwriter.dotgraph-pysrc.html
@@ -0,0 +1,1753 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.docwriter.dotgraph</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.docwriter-module.html">Package docwriter</a> ::
+        Module dotgraph
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.docwriter.dotgraph-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="epydoc.docwriter.dotgraph-module.html">Module epydoc.docwriter.dotgraph</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno">   1</tt>  <tt class="py-line"><tt class="py-comment"># epydoc -- Graph generation</tt> </tt>
+<a name="L2"></a><tt class="py-lineno">   2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L3"></a><tt class="py-lineno">   3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2005 Edward Loper</tt> </tt>
+<a name="L4"></a><tt class="py-lineno">   4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Author: Edward Loper <edloper at loper.org></tt> </tt>
+<a name="L5"></a><tt class="py-lineno">   5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># URL: <http://epydoc.sf.net></tt> </tt>
+<a name="L6"></a><tt class="py-lineno">   6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L7"></a><tt class="py-lineno">   7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># $Id: dotgraph.py 1663 2007-11-07 15:29:47Z dvarrazzo $</tt> </tt>
+<a name="L8"></a><tt class="py-lineno">   8</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L9"></a><tt class="py-lineno">   9</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L10"></a><tt class="py-lineno">  10</tt>  <tt class="py-line"><tt class="py-docstring">Render Graphviz directed graphs as images.  Below are some examples.</tt> </tt>
+<a name="L11"></a><tt class="py-lineno">  11</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L12"></a><tt class="py-lineno">  12</tt>  <tt class="py-line"><tt class="py-docstring">.. importgraph::</tt> </tt>
+<a name="L13"></a><tt class="py-lineno">  13</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L14"></a><tt class="py-lineno">  14</tt>  <tt class="py-line"><tt class="py-docstring">.. classtree:: epydoc.apidoc.APIDoc</tt> </tt>
+<a name="L15"></a><tt class="py-lineno">  15</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L16"></a><tt class="py-lineno">  16</tt>  <tt class="py-line"><tt class="py-docstring">.. packagetree:: epydoc</tt> </tt>
+<a name="L17"></a><tt class="py-lineno">  17</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L18"></a><tt class="py-lineno">  18</tt>  <tt class="py-line"><tt class="py-docstring">:see: `The Graphviz Homepage</tt> </tt>
+<a name="L19"></a><tt class="py-lineno">  19</tt>  <tt class="py-line"><tt class="py-docstring">       <http://www.research.att.com/sw/tools/graphviz/>`__</tt> </tt>
+<a name="L20"></a><tt class="py-lineno">  20</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L21"></a><tt class="py-lineno">  21</tt>  <tt class="py-line"><tt class="py-name">__docformat__</tt> <tt class="py-op">=</tt> <tt class="py-string">'restructuredtext'</tt> </tt>
+<a name="L22"></a><tt class="py-lineno">  22</tt>  <tt class="py-line"> </tt>
+<a name="L23"></a><tt class="py-lineno">  23</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">re</tt> </tt>
+<a name="L24"></a><tt class="py-lineno">  24</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">sys</tt> </tt>
+<a name="L25"></a><tt class="py-lineno">  25</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-0" class="py-name" targets="Package epydoc=epydoc-module.html"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-0', 'epydoc', 'link-0');">epydoc</a></tt> <tt class="py-keyword">import</tt> <tt id="link-1" class="py-name" targets="Method epydoc.cli.ConsoleLogger.log()=epydoc.cli.ConsoleLogger-class.html#log,Method epydoc.cli.HTMLLogger.log()=epydoc.c [...]
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-1', 'log', 'link-1');">log</a></tt> </tt>
+<a name="L26"></a><tt class="py-lineno">  26</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-2" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-2', 'epydoc', 'link-0');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-3" class="py-name" targets="Module epydoc.apidoc=epydoc.apidoc-module.html"><a title="epydoc.apidoc" class="py-name" href="#" onclick="return doclink('link-3', 'apidoc', 'link-3');">apidoc</a></tt> <tt cla [...]
+<a name="L27"></a><tt class="py-lineno">  27</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-4" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-4', 'epydoc', 'link-0');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-5" class="py-name" targets="Module epydoc.test.util=epydoc.test.util-module.html,Module epydoc.util=epydoc.util-module.html"><a title="epydoc.test.util
+epydoc.util" class="py-name" href="#" onclick="return doclink('link-5', 'util', 'link-5');">util</a></tt> <tt class="py-keyword">import</tt> <tt class="py-op">*</tt> </tt>
+<a name="L28"></a><tt class="py-lineno">  28</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-6" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-6', 'epydoc', 'link-0');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-7" class="py-name" targets="Module epydoc.compat=epydoc.compat-module.html"><a title="epydoc.compat" class="py-name" href="#" onclick="return doclink('link-7', 'compat', 'link-7');">compat</a></tt> <tt cla [...]
+<a name="L29"></a><tt class="py-lineno">  29</tt>  <tt class="py-line"> </tt>
+<a name="L30"></a><tt class="py-lineno">  30</tt>  <tt class="py-line"><tt class="py-comment"># colors for graphs of APIDocs</tt> </tt>
+<a name="L31"></a><tt class="py-lineno">  31</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt id="link-8" class="py-name" targets="Variable epydoc.docwriter.dotgraph.MODULE_BG=epydoc.docwriter.dotgraph-module.html#MODULE_BG"><a title="epydoc.docwriter.dotgraph.MODULE_BG" class="py-name" href="#" onclick="return doclink('link-8', 'MODULE_BG', 'link-8');">MODULE_BG</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'#d8e8ff'</tt> </tt>
+<a name="L32"></a><tt class="py-lineno">  32</tt>  <tt class="py-line"><tt id="link-9" class="py-name" targets="Variable epydoc.docwriter.dotgraph.CLASS_BG=epydoc.docwriter.dotgraph-module.html#CLASS_BG"><a title="epydoc.docwriter.dotgraph.CLASS_BG" class="py-name" href="#" onclick="return doclink('link-9', 'CLASS_BG', 'link-9');">CLASS_BG</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'#d8ffe8'</tt> </tt>
+<a name="L33"></a><tt class="py-lineno">  33</tt>  <tt class="py-line"><tt id="link-10" class="py-name" targets="Variable epydoc.docwriter.dotgraph.SELECTED_BG=epydoc.docwriter.dotgraph-module.html#SELECTED_BG"><a title="epydoc.docwriter.dotgraph.SELECTED_BG" class="py-name" href="#" onclick="return doclink('link-10', 'SELECTED_BG', 'link-10');">SELECTED_BG</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'#ffd0d0'</tt> </tt>
+<a name="L34"></a><tt class="py-lineno">  34</tt>  <tt class="py-line"><tt id="link-11" class="py-name" targets="Variable epydoc.docwriter.dotgraph.BASECLASS_BG=epydoc.docwriter.dotgraph-module.html#BASECLASS_BG"><a title="epydoc.docwriter.dotgraph.BASECLASS_BG" class="py-name" href="#" onclick="return doclink('link-11', 'BASECLASS_BG', 'link-11');">BASECLASS_BG</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'#e0b0a0'</tt> </tt>
+<a name="L35"></a><tt class="py-lineno">  35</tt>  <tt class="py-line"><tt id="link-12" class="py-name" targets="Variable epydoc.docwriter.dotgraph.SUBCLASS_BG=epydoc.docwriter.dotgraph-module.html#SUBCLASS_BG"><a title="epydoc.docwriter.dotgraph.SUBCLASS_BG" class="py-name" href="#" onclick="return doclink('link-12', 'SUBCLASS_BG', 'link-12');">SUBCLASS_BG</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'#e0b0a0'</tt> </tt>
+<a name="L36"></a><tt class="py-lineno">  36</tt>  <tt class="py-line"><tt id="link-13" class="py-name" targets="Variable epydoc.docwriter.dotgraph.ROUTINE_BG=epydoc.docwriter.dotgraph-module.html#ROUTINE_BG"><a title="epydoc.docwriter.dotgraph.ROUTINE_BG" class="py-name" href="#" onclick="return doclink('link-13', 'ROUTINE_BG', 'link-13');">ROUTINE_BG</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'#e8d0b0'</tt> <tt class="py-comment"># maybe?</tt> </tt>
+<a name="L37"></a><tt class="py-lineno">  37</tt>  <tt class="py-line"><tt id="link-14" class="py-name" targets="Variable epydoc.docwriter.dotgraph.INH_LINK_COLOR=epydoc.docwriter.dotgraph-module.html#INH_LINK_COLOR"><a title="epydoc.docwriter.dotgraph.INH_LINK_COLOR" class="py-name" href="#" onclick="return doclink('link-14', 'INH_LINK_COLOR', 'link-14');">INH_LINK_COLOR</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'#800000'</tt> </tt>
+<a name="L38"></a><tt class="py-lineno">  38</tt>  <tt class="py-line"> </tt>
+<a name="L39"></a><tt class="py-lineno">  39</tt>  <tt class="py-line"><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L40"></a><tt class="py-lineno">  40</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#{ Dot Graphs</tt> </tt>
+<a name="L41"></a><tt class="py-lineno">  41</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L42"></a><tt class="py-lineno">  42</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L43"></a><tt class="py-lineno">  43</tt>  <tt class="py-line"><tt id="link-15" class="py-name" targets="Variable epydoc.docwriter.dotgraph.DOT_COMMAND=epydoc.docwriter.dotgraph-module.html#DOT_COMMAND"><a title="epydoc.docwriter.dotgraph.DOT_COMMAND" class="py-name" href="#" onclick="return doclink('link-15', 'DOT_COMMAND', 'link-15');">DOT_COMMAND</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'dot'</tt> </tt>
+<a name="L44"></a><tt class="py-lineno">  44</tt>  <tt class="py-line"><tt class="py-string">"""The command that should be used to spawn dot"""</tt> </tt>
+<a name="L45"></a><tt class="py-lineno">  45</tt>  <tt class="py-line"> </tt>
+<a name="DotGraph"></a><div id="DotGraph-def"><a name="L46"></a><tt class="py-lineno">  46</tt> <a class="py-toggle" href="#" id="DotGraph-toggle" onclick="return toggle('DotGraph');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="epydoc.docwriter.dotgraph.DotGraph-class.html">DotGraph</a><tt class="py-op">:</tt> </tt>
+</div><div id="DotGraph-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="DotGraph-expanded"><a name="L47"></a><tt class="py-lineno">  47</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L48"></a><tt class="py-lineno">  48</tt>  <tt class="py-line"><tt class="py-docstring">    A ``dot`` directed graph.  The contents of the graph are</tt> </tt>
+<a name="L49"></a><tt class="py-lineno">  49</tt>  <tt class="py-line"><tt class="py-docstring">    constructed from the following instance variables:</tt> </tt>
+<a name="L50"></a><tt class="py-lineno">  50</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L51"></a><tt class="py-lineno">  51</tt>  <tt class="py-line"><tt class="py-docstring">      - `nodes`: A list of `DotGraphNode`\\s, encoding the nodes</tt> </tt>
+<a name="L52"></a><tt class="py-lineno">  52</tt>  <tt class="py-line"><tt class="py-docstring">        that are present in the graph.  Each node is characterized</tt> </tt>
+<a name="L53"></a><tt class="py-lineno">  53</tt>  <tt class="py-line"><tt class="py-docstring">        a set of attributes, including an optional label.</tt> </tt>
+<a name="L54"></a><tt class="py-lineno">  54</tt>  <tt class="py-line"><tt class="py-docstring">      - `edges`: A list of `DotGraphEdge`\\s, encoding the edges</tt> </tt>
+<a name="L55"></a><tt class="py-lineno">  55</tt>  <tt class="py-line"><tt class="py-docstring">        that are present in the graph.  Each edge is characterized</tt> </tt>
+<a name="L56"></a><tt class="py-lineno">  56</tt>  <tt class="py-line"><tt class="py-docstring">        by a set of attributes, including an optional label.</tt> </tt>
+<a name="L57"></a><tt class="py-lineno">  57</tt>  <tt class="py-line"><tt class="py-docstring">      - `node_defaults`: Default attributes for nodes.</tt> </tt>
+<a name="L58"></a><tt class="py-lineno">  58</tt>  <tt class="py-line"><tt class="py-docstring">      - `edge_defaults`: Default attributes for edges.</tt> </tt>
+<a name="L59"></a><tt class="py-lineno">  59</tt>  <tt class="py-line"><tt class="py-docstring">      - `body`: A string that is appended as-is in the body of</tt> </tt>
+<a name="L60"></a><tt class="py-lineno">  60</tt>  <tt class="py-line"><tt class="py-docstring">        the graph.  This can be used to build more complex dot</tt> </tt>
+<a name="L61"></a><tt class="py-lineno">  61</tt>  <tt class="py-line"><tt class="py-docstring">        graphs.</tt> </tt>
+<a name="L62"></a><tt class="py-lineno">  62</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L63"></a><tt class="py-lineno">  63</tt>  <tt class="py-line"><tt class="py-docstring">    The `link()` method can be used to resolve crossreference links</tt> </tt>
+<a name="L64"></a><tt class="py-lineno">  64</tt>  <tt class="py-line"><tt class="py-docstring">    within the graph.  In particular, if the 'href' attribute of any</tt> </tt>
+<a name="L65"></a><tt class="py-lineno">  65</tt>  <tt class="py-line"><tt class="py-docstring">    node or edge is assigned a value of the form ``<name>``, then it</tt> </tt>
+<a name="L66"></a><tt class="py-lineno">  66</tt>  <tt class="py-line"><tt class="py-docstring">    will be replaced by the URL of the object with that name.  This</tt> </tt>
+<a name="L67"></a><tt class="py-lineno">  67</tt>  <tt class="py-line"><tt class="py-docstring">    applies to the `body` as well as the `nodes` and `edges`.</tt> </tt>
+<a name="L68"></a><tt class="py-lineno">  68</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L69"></a><tt class="py-lineno">  69</tt>  <tt class="py-line"><tt class="py-docstring">    To render the graph, use the methods `write()` and `render()`.</tt> </tt>
+<a name="L70"></a><tt class="py-lineno">  70</tt>  <tt class="py-line"><tt class="py-docstring">    Usually, you should call `link()` before you render the graph.</tt> </tt>
+<a name="L71"></a><tt class="py-lineno">  71</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L72"></a><tt class="py-lineno">  72</tt>  <tt class="py-line">    <tt id="link-16" class="py-name" targets="Variable epydoc.docwriter.dotgraph.DotGraph._uids=epydoc.docwriter.dotgraph.DotGraph-class.html#_uids"><a title="epydoc.docwriter.dotgraph.DotGraph._uids" class="py-name" href="#" onclick="return doclink('link-16', '_uids', 'link-16');">_uids</a></tt> <tt class="py-op">=</tt> <tt class="py-name">set</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L73"></a><tt class="py-lineno">  73</tt>  <tt class="py-line">    <tt class="py-string">"""A set of all uids that that have been generated, used to ensure</tt> </tt>
+<a name="L74"></a><tt class="py-lineno">  74</tt>  <tt class="py-line"><tt class="py-string">    that each new graph has a unique uid."""</tt> </tt>
+<a name="L75"></a><tt class="py-lineno">  75</tt>  <tt class="py-line"> </tt>
+<a name="L76"></a><tt class="py-lineno">  76</tt>  <tt class="py-line">    <tt id="link-17" class="py-name" targets="Variable epydoc.docwriter.dotgraph.DotGraph.DEFAULT_NODE_DEFAULTS=epydoc.docwriter.dotgraph.DotGraph-class.html#DEFAULT_NODE_DEFAULTS"><a title="epydoc.docwriter.dotgraph.DotGraph.DEFAULT_NODE_DEFAULTS" class="py-name" href="#" onclick="return doclink('link-17', 'DEFAULT_NODE_DEFAULTS', 'link-17');">DEFAULT_NODE_DEFAULTS</a></tt><tt class="py-op">=</tt><tt class="py-op">{< [...]
+<a name="L77"></a><tt class="py-lineno">  77</tt>  <tt class="py-line">    <tt id="link-18" class="py-name" targets="Variable epydoc.docwriter.dotgraph.DotGraph.DEFAULT_EDGE_DEFAULTS=epydoc.docwriter.dotgraph.DotGraph-class.html#DEFAULT_EDGE_DEFAULTS"><a title="epydoc.docwriter.dotgraph.DotGraph.DEFAULT_EDGE_DEFAULTS" class="py-name" href="#" onclick="return doclink('link-18', 'DEFAULT_EDGE_DEFAULTS', 'link-18');">DEFAULT_EDGE_DEFAULTS</a></tt><tt class="py-op">=</tt><tt class="py-op">{< [...]
+<a name="L78"></a><tt class="py-lineno">  78</tt>  <tt class="py-line">     </tt>
+<a name="DotGraph.__init__"></a><div id="DotGraph.__init__-def"><a name="L79"></a><tt class="py-lineno">  79</tt> <a class="py-toggle" href="#" id="DotGraph.__init__-toggle" onclick="return toggle('DotGraph.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.dotgraph.DotGraph-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">title</tt><tt  [...]
+<a name="L80"></a><tt class="py-lineno">  80</tt>  <tt class="py-line">                 <tt class="py-param">edge_defaults</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">caption</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="DotGraph.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DotGraph.__init__-expanded"><a name="L81"></a><tt class="py-lineno">  81</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L82"></a><tt class="py-lineno">  82</tt>  <tt class="py-line"><tt class="py-docstring">        Create a new `DotGraph`.</tt> </tt>
+<a name="L83"></a><tt class="py-lineno">  83</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L84"></a><tt class="py-lineno">  84</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-19" class="py-name" targets="Method epydoc.docwriter.plaintext.PlaintextWriter.title()=epydoc.docwriter.plaintext.PlaintextWriter-class.html#title"><a title="epydoc.docwriter.plaintext.PlaintextWriter.title" class="py-name" href="#" onclick="return doclink('link-19', 'title', 'link-19');">title</a></tt> <tt class="py-op">=</tt> <tt id="link-20"  [...]
+<a name="L85"></a><tt class="py-lineno">  85</tt>  <tt class="py-line">        <tt class="py-string">"""The title of the graph."""</tt> </tt>
+<a name="L86"></a><tt class="py-lineno">  86</tt>  <tt class="py-line"> </tt>
+<a name="L87"></a><tt class="py-lineno">  87</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">caption</tt> <tt class="py-op">=</tt> <tt class="py-name">caption</tt> </tt>
+<a name="L88"></a><tt class="py-lineno">  88</tt>  <tt class="py-line">        <tt class="py-string">"""A caption for the graph."""</tt> </tt>
+<a name="L89"></a><tt class="py-lineno">  89</tt>  <tt class="py-line">         </tt>
+<a name="L90"></a><tt class="py-lineno">  90</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">nodes</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L91"></a><tt class="py-lineno">  91</tt>  <tt class="py-line">        <tt class="py-string">"""A list of the nodes that are present in the graph.</tt> </tt>
+<a name="L92"></a><tt class="py-lineno">  92</tt>  <tt class="py-line"><tt class="py-string">        </tt> </tt>
+<a name="L93"></a><tt class="py-lineno">  93</tt>  <tt class="py-line"><tt class="py-string">        :type: ``list`` of `DotGraphNode`"""</tt> </tt>
+<a name="L94"></a><tt class="py-lineno">  94</tt>  <tt class="py-line">         </tt>
+<a name="L95"></a><tt class="py-lineno">  95</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">edges</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L96"></a><tt class="py-lineno">  96</tt>  <tt class="py-line">        <tt class="py-string">"""A list of the edges that are present in the graph.</tt> </tt>
+<a name="L97"></a><tt class="py-lineno">  97</tt>  <tt class="py-line"><tt class="py-string">        </tt> </tt>
+<a name="L98"></a><tt class="py-lineno">  98</tt>  <tt class="py-line"><tt class="py-string">        :type: ``list`` of `DotGraphEdge`"""</tt> </tt>
+<a name="L99"></a><tt class="py-lineno">  99</tt>  <tt class="py-line"> </tt>
+<a name="L100"></a><tt class="py-lineno"> 100</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-21" class="py-name" targets="Method epydoc.markup.Field.body()=epydoc.markup.Field-class.html#body"><a title="epydoc.markup.Field.body" class="py-name" href="#" onclick="return doclink('link-21', 'body', 'link-21');">body</a></tt> <tt class="py-op">=</tt> <tt id="link-22" class="py-name"><a title="epydoc.markup.Field.body" class="py-name" href= [...]
+<a name="L101"></a><tt class="py-lineno"> 101</tt>  <tt class="py-line">        <tt class="py-string">"""A string that should be included as-is in the body of the</tt> </tt>
+<a name="L102"></a><tt class="py-lineno"> 102</tt>  <tt class="py-line"><tt class="py-string">        graph.</tt> </tt>
+<a name="L103"></a><tt class="py-lineno"> 103</tt>  <tt class="py-line"><tt class="py-string">        </tt> </tt>
+<a name="L104"></a><tt class="py-lineno"> 104</tt>  <tt class="py-line"><tt class="py-string">        :type: ``str``"""</tt> </tt>
+<a name="L105"></a><tt class="py-lineno"> 105</tt>  <tt class="py-line">         </tt>
+<a name="L106"></a><tt class="py-lineno"> 106</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">node_defaults</tt> <tt class="py-op">=</tt> <tt class="py-name">node_defaults</tt> <tt class="py-keyword">or</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-23" class="py-name"><a title="epydoc.docwriter.dotgraph.DotGraph.DEFAULT_NODE_DEFAULTS" class="py-name" href="#" onclick="return doclink('link-23', 'DEFAULT_NO [...]
+<a name="L107"></a><tt class="py-lineno"> 107</tt>  <tt class="py-line">        <tt class="py-string">"""Default attribute values for nodes."""</tt> </tt>
+<a name="L108"></a><tt class="py-lineno"> 108</tt>  <tt class="py-line">         </tt>
+<a name="L109"></a><tt class="py-lineno"> 109</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">edge_defaults</tt> <tt class="py-op">=</tt> <tt class="py-name">edge_defaults</tt> <tt class="py-keyword">or</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-24" class="py-name"><a title="epydoc.docwriter.dotgraph.DotGraph.DEFAULT_EDGE_DEFAULTS" class="py-name" href="#" onclick="return doclink('link-24', 'DEFAULT_ED [...]
+<a name="L110"></a><tt class="py-lineno"> 110</tt>  <tt class="py-line">        <tt class="py-string">"""Default attribute values for edges."""</tt> </tt>
+<a name="L111"></a><tt class="py-lineno"> 111</tt>  <tt class="py-line"> </tt>
+<a name="L112"></a><tt class="py-lineno"> 112</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">uid</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt class="py-string">r'\W'</tt><tt class="py-op">,</tt> <tt class="py-string">'_'</tt><tt class="py-op">,</tt> <tt id="link-25" class="py-name"><a title="epydoc.docwriter.plaintext.PlaintextWriter.titl [...]
+<a name="L113"></a><tt class="py-lineno"> 113</tt>  <tt class="py-line">        <tt class="py-string">"""A unique identifier for this graph.  This can be used as a</tt> </tt>
+<a name="L114"></a><tt class="py-lineno"> 114</tt>  <tt class="py-line"><tt class="py-string">        filename when rendering the graph.  No two `DotGraph`\s will</tt> </tt>
+<a name="L115"></a><tt class="py-lineno"> 115</tt>  <tt class="py-line"><tt class="py-string">        have the same uid."""</tt> </tt>
+<a name="L116"></a><tt class="py-lineno"> 116</tt>  <tt class="py-line"> </tt>
+<a name="L117"></a><tt class="py-lineno"> 117</tt>  <tt class="py-line">        <tt class="py-comment"># Encode the title, if necessary.</tt> </tt>
+<a name="L118"></a><tt class="py-lineno"> 118</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-26" class="py-name"><a title="epydoc.docwriter.plaintext.PlaintextWriter.title" class="py-name" href="#" onclick="return doclink('link-26', 'title', 'link-19');">title</a></tt><tt class="py-op">,</tt> <tt class="py-name">unicode [...]
+<a name="L119"></a><tt class="py-lineno"> 119</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-27" class="py-name"><a title="epydoc.docwriter.plaintext.PlaintextWriter.title" class="py-name" href="#" onclick="return doclink('link-27', 'title', 'link-19');">title</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-28" class="py-name"><a title="epydoc.docwriter.plaintext.PlaintextWriter.t [...]
+<a name="L120"></a><tt class="py-lineno"> 120</tt>  <tt class="py-line"> </tt>
+<a name="L121"></a><tt class="py-lineno"> 121</tt>  <tt class="py-line">        <tt class="py-comment"># Make sure the UID isn't too long.</tt> </tt>
+<a name="L122"></a><tt class="py-lineno"> 122</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">uid</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">uid</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-number">30</tt><tt class="py-op">]</tt> </tt>
+<a name="L123"></a><tt class="py-lineno"> 123</tt>  <tt class="py-line">         </tt>
+<a name="L124"></a><tt class="py-lineno"> 124</tt>  <tt class="py-line">        <tt class="py-comment"># Make sure the UID is unique</tt> </tt>
+<a name="L125"></a><tt class="py-lineno"> 125</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">uid</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-29" class="py-name"><a title="epydoc.docwriter.dotgraph.DotGraph._uids" class="py-name" href="#" onclick="return doclink('link-29', '_uids', 'link-16');">_uids</a></tt><tt cl [...]
+<a name="L126"></a><tt class="py-lineno"> 126</tt>  <tt class="py-line">            <tt class="py-name">n</tt> <tt class="py-op">=</tt> <tt class="py-number">2</tt> </tt>
+<a name="L127"></a><tt class="py-lineno"> 127</tt>  <tt class="py-line">            <tt class="py-keyword">while</tt> <tt class="py-op">(</tt><tt class="py-string">'%s_%s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">uid</tt><tt class="py-op">,</tt> <tt class="py-name">n</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt>< [...]
+<a name="L128"></a><tt class="py-lineno"> 128</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">uid</tt> <tt class="py-op">=</tt> <tt class="py-string">'%s_%s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">uid</tt><tt class="py-op">,</tt> <tt class="py-name">n</tt><tt class="py-op">)</tt> </tt>
+<a name="L129"></a><tt class="py-lineno"> 129</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-31" class="py-name"><a title="epydoc.docwriter.dotgraph.DotGraph._uids" class="py-name" href="#" onclick="return doclink('link-31', '_uids', 'link-16');">_uids</a></tt><tt class="py-op">.</tt><tt class="py-name">add</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">uid</tt><tt class="py-op">)</ [...]
+</div><a name="L130"></a><tt class="py-lineno"> 130</tt>  <tt class="py-line"> </tt>
+<a name="DotGraph.to_html"></a><div id="DotGraph.to_html-def"><a name="L131"></a><tt class="py-lineno"> 131</tt> <a class="py-toggle" href="#" id="DotGraph.to_html-toggle" onclick="return toggle('DotGraph.to_html');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.dotgraph.DotGraph-class.html#to_html">to_html</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">image_file</tt><tt  [...]
+</div><div id="DotGraph.to_html-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DotGraph.to_html-expanded"><a name="L132"></a><tt class="py-lineno"> 132</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L133"></a><tt class="py-lineno"> 133</tt>  <tt class="py-line"><tt class="py-docstring">        Return the HTML code that should be uesd to display this graph</tt> </tt>
+<a name="L134"></a><tt class="py-lineno"> 134</tt>  <tt class="py-line"><tt class="py-docstring">        (including a client-side image map).</tt> </tt>
+<a name="L135"></a><tt class="py-lineno"> 135</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt>
+<a name="L136"></a><tt class="py-lineno"> 136</tt>  <tt class="py-line"><tt class="py-docstring">        :param image_url: The URL of the image file for this graph;</tt> </tt>
+<a name="L137"></a><tt class="py-lineno"> 137</tt>  <tt class="py-line"><tt class="py-docstring">            this should be generated separately with the `write()` method.</tt> </tt>
+<a name="L138"></a><tt class="py-lineno"> 138</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L139"></a><tt class="py-lineno"> 139</tt>  <tt class="py-line">        <tt class="py-comment"># If dotversion >1.8.10, then we can generate the image and</tt> </tt>
+<a name="L140"></a><tt class="py-lineno"> 140</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># the cmapx with a single call to dot.  Otherwise, we need to</tt> </tt>
+<a name="L141"></a><tt class="py-lineno"> 141</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># run dot twice.</tt> </tt>
+<a name="L142"></a><tt class="py-lineno"> 142</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt id="link-32" class="py-name" targets="Function epydoc.docwriter.dotgraph.get_dot_version()=epydoc.docwriter.dotgraph-module.html#get_dot_version"><a title="epydoc.docwriter.dotgraph.get_dot_version" class="py-name" href="#" onclick="return doclink('link-32', 'get_dot_version', 'link-32');">get_dot_version</a></tt><tt class="py-op">(</tt><tt class= [...]
+<a name="L143"></a><tt class="py-lineno"> 143</tt>  <tt class="py-line">            <tt class="py-name">cmapx</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-33" class="py-name" targets="Method epydoc.docwriter.dotgraph.DotGraph._run_dot()=epydoc.docwriter.dotgraph.DotGraph-class.html#_run_dot"><a title="epydoc.docwriter.dotgraph.DotGraph._run_dot" class="py-name" href="#" onclick="return doclink('link-33', '_run_dot', 'link-33');">_run_dot [...]
+<a name="L144"></a><tt class="py-lineno"> 144</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">cmapx</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-string">''</tt> <tt class="py-comment"># failed to render</tt> </tt>
+<a name="L145"></a><tt class="py-lineno"> 145</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L146"></a><tt class="py-lineno"> 146</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-34" class="py-name" targets="Method epydoc.docintrospecter._DevNull.write()=epydoc.docintrospecter._DevNull-class.html#write,Method epydoc.docwriter.dotgraph.DotGraph.write()=epydoc.docwriter.dotgraph.DotGraph-class.html#write,Method epydoc.docwriter.html.HTMLWriter.write()=epyd [...]
+epydoc.docwriter.dotgraph.DotGraph.write
+epydoc.docwriter.html.HTMLWriter.write
+epydoc.docwriter.latex.LatexWriter.write
+epydoc.docwriter.plaintext.PlaintextWriter.write" class="py-name" href="#" onclick="return doclink('link-34', 'write', 'link-34');">write</a></tt><tt class="py-op">(</tt><tt class="py-name">image_file</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L147"></a><tt class="py-lineno"> 147</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-string">''</tt> <tt class="py-comment"># failed to render</tt> </tt>
+<a name="L148"></a><tt class="py-lineno"> 148</tt>  <tt class="py-line">            <tt class="py-name">cmapx</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-35" class="py-name" targets="Method epydoc.docwriter.dotgraph.DotGraph.render()=epydoc.docwriter.dotgraph.DotGraph-class.html#render"><a title="epydoc.docwriter.dotgraph.DotGraph.render" class="py-name" href="#" onclick="return doclink('link-35', 'render', 'link-35');">render</a></tt>< [...]
+<a name="L149"></a><tt class="py-lineno"> 149</tt>  <tt class="py-line"> </tt>
+<a name="L150"></a><tt class="py-lineno"> 150</tt>  <tt class="py-line">        <tt class="py-comment"># Decode the cmapx (dot uses utf-8)</tt> </tt>
+<a name="L151"></a><tt class="py-lineno"> 151</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L152"></a><tt class="py-lineno"> 152</tt>  <tt class="py-line">            <tt class="py-name">cmapx</tt> <tt class="py-op">=</tt> <tt class="py-name">cmapx</tt><tt class="py-op">.</tt><tt class="py-name">decode</tt><tt class="py-op">(</tt><tt class="py-string">'utf-8'</tt><tt class="py-op">)</tt> </tt>
+<a name="L153"></a><tt class="py-lineno"> 153</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">UnicodeDecodeError</tt><tt class="py-op">:</tt> </tt>
+<a name="L154"></a><tt class="py-lineno"> 154</tt>  <tt class="py-line">            <tt id="link-36" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-36', 'log', 'link-1');">log</a></tt><tt class="py-op">.</tt><tt id="link-37" class="py-name" targets="Function epydoc.log.debug()=epydoc.log-module.html#debug,Method epydoc.markup.restructuredtext.OptimizedReporter.debug()=epydoc.markup.restructuredtext.OptimizedReporter-class.html#debug"><a title="epydoc.log.debug
+epydoc.markup.restructuredtext.OptimizedReporter.debug" class="py-name" href="#" onclick="return doclink('link-37', 'debug', 'link-37');">debug</a></tt><tt class="py-op">(</tt><tt class="py-string">'%s: unable to decode cmapx from dot; graph will '</tt> </tt>
+<a name="L155"></a><tt class="py-lineno"> 155</tt>  <tt class="py-line">                      <tt class="py-string">'not have clickable regions'</tt> <tt class="py-op">%</tt> <tt class="py-name">image_file</tt><tt class="py-op">)</tt> </tt>
+<a name="L156"></a><tt class="py-lineno"> 156</tt>  <tt class="py-line">            <tt class="py-name">cmapx</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
+<a name="L157"></a><tt class="py-lineno"> 157</tt>  <tt class="py-line"> </tt>
+<a name="L158"></a><tt class="py-lineno"> 158</tt>  <tt class="py-line">        <tt id="link-38" class="py-name"><a title="epydoc.docwriter.plaintext.PlaintextWriter.title" class="py-name" href="#" onclick="return doclink('link-38', 'title', 'link-19');">title</a></tt> <tt class="py-op">=</tt> <tt id="link-39" class="py-name" targets="Function epydoc.util.plaintext_to_html()=epydoc.util-module.html#plaintext_to_html"><a title="epydoc.util.plaintext_to_html" class="py-name" href="#" oncli [...]
+<a name="L159"></a><tt class="py-lineno"> 159</tt>  <tt class="py-line">        <tt class="py-name">caption</tt> <tt class="py-op">=</tt> <tt id="link-41" class="py-name"><a title="epydoc.util.plaintext_to_html" class="py-name" href="#" onclick="return doclink('link-41', 'plaintext_to_html', 'link-39');">plaintext_to_html</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">caption</tt> <tt class="py-keyword">or</tt> <tt class="py-strin [...]
+<a name="L160"></a><tt class="py-lineno"> 160</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-42" class="py-name"><a title="epydoc.docwriter.plaintext.PlaintextWriter.title" class="py-name" href="#" onclick="return doclink('link-42', 'title', 'link-19');">title</a></tt> <tt class="py-keyword">or</tt> <tt class="py-name">caption</tt><tt class="py-op">:</tt> </tt>
+<a name="L161"></a><tt class="py-lineno"> 161</tt>  <tt class="py-line">            <tt class="py-name">css_class</tt> <tt class="py-op">=</tt> <tt class="py-string">'graph-with-title'</tt> </tt>
+<a name="L162"></a><tt class="py-lineno"> 162</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L163"></a><tt class="py-lineno"> 163</tt>  <tt class="py-line">            <tt class="py-name">css_class</tt> <tt class="py-op">=</tt> <tt class="py-string">'graph-without-title'</tt> </tt>
+<a name="L164"></a><tt class="py-lineno"> 164</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-43" class="py-name"><a title="epydoc.docwriter.plaintext.PlaintextWriter.title" class="py-name" href="#" onclick="return doclink('link-43', 'title', 'link-19');">title</a></tt><tt class="py-op">)</tt><tt class="py-op">+</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">caption</tt><tt clas [...]
+<a name="L165"></a><tt class="py-lineno"> 165</tt>  <tt class="py-line">            <tt class="py-name">title_align</tt> <tt class="py-op">=</tt> <tt class="py-string">'left'</tt> </tt>
+<a name="L166"></a><tt class="py-lineno"> 166</tt>  <tt class="py-line">            <tt class="py-name">table_width</tt> <tt class="py-op">=</tt> <tt class="py-string">' width="600"'</tt> </tt>
+<a name="L167"></a><tt class="py-lineno"> 167</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L168"></a><tt class="py-lineno"> 168</tt>  <tt class="py-line">            <tt class="py-name">title_align</tt> <tt class="py-op">=</tt> <tt class="py-string">'center'</tt> </tt>
+<a name="L169"></a><tt class="py-lineno"> 169</tt>  <tt class="py-line">            <tt class="py-name">table_width</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
+<a name="L170"></a><tt class="py-lineno"> 170</tt>  <tt class="py-line">             </tt>
+<a name="L171"></a><tt class="py-lineno"> 171</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">center</tt><tt class="py-op">:</tt> <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-string">'<center>'</tt> </tt>
+<a name="L172"></a><tt class="py-lineno"> 172</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-44" class="py-name"><a title="epydoc.docwriter.plaintext.PlaintextWriter.title" class="py-name" href="#" onclick="return doclink('link-44', 'title', 'link-19');">title</a></tt> <tt class="py-keyword">or</tt> <tt class="py-name">caption</tt><tt class="py-op">:</tt> </tt>
+<a name="L173"></a><tt class="py-lineno"> 173</tt>  <tt class="py-line">            <tt class="py-name">s</tt> <tt class="py-op">+=</tt> <tt class="py-op">(</tt><tt class="py-string">'<table border="0" cellpadding="0" cellspacing="0" '</tt> </tt>
+<a name="L174"></a><tt class="py-lineno"> 174</tt>  <tt class="py-line">                  <tt class="py-string">'class="graph"%s>\n  <tr><td align="center">\n'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L175"></a><tt class="py-lineno"> 175</tt>  <tt class="py-line">                  <tt class="py-name">table_width</tt><tt class="py-op">)</tt> </tt>
+<a name="L176"></a><tt class="py-lineno"> 176</tt>  <tt class="py-line">        <tt class="py-name">s</tt> <tt class="py-op">+=</tt> <tt class="py-op">(</tt><tt class="py-string">'  %s\n  <img src="%s" alt=%r usemap="#%s" '</tt> </tt>
+<a name="L177"></a><tt class="py-lineno"> 177</tt>  <tt class="py-line">              <tt class="py-string">'ismap="ismap" class="%s" />\n'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L178"></a><tt class="py-lineno"> 178</tt>  <tt class="py-line">              <tt class="py-op">(</tt><tt class="py-name">cmapx</tt><tt class="py-op">.</tt><tt class="py-name">strip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">image_url</tt><tt class="py-op">,</tt> <tt id="link-45" class="py-name"><a title="epydoc.docwriter.plaintext.PlaintextWriter.title" class="py-name" href="#" onclick="return doclink('link-45', 'title', 'lin [...]
+<a name="L179"></a><tt class="py-lineno"> 179</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-46" class="py-name"><a title="epydoc.docwriter.plaintext.PlaintextWriter.title" class="py-name" href="#" onclick="return doclink('link-46', 'title', 'link-19');">title</a></tt> <tt class="py-keyword">or</tt> <tt class="py-name">caption</tt><tt class="py-op">:</tt> </tt>
+<a name="L180"></a><tt class="py-lineno"> 180</tt>  <tt class="py-line">            <tt class="py-name">s</tt> <tt class="py-op">+=</tt> <tt class="py-string">'  </td></tr>\n  <tr><td align=%r>\n'</tt> <tt class="py-op">%</tt> <tt class="py-name">title_align</tt> </tt>
+<a name="L181"></a><tt class="py-lineno"> 181</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt id="link-47" class="py-name"><a title="epydoc.docwriter.plaintext.PlaintextWriter.title" class="py-name" href="#" onclick="return doclink('link-47', 'title', 'link-19');">title</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L182"></a><tt class="py-lineno"> 182</tt>  <tt class="py-line">                <tt class="py-name">s</tt> <tt class="py-op">+=</tt> <tt class="py-string">'<span class="graph-title">%s</span>'</tt> <tt class="py-op">%</tt> <tt id="link-48" class="py-name"><a title="epydoc.docwriter.plaintext.PlaintextWriter.title" class="py-name" href="#" onclick="return doclink('link-48', 'title', 'link-19');">title</a></tt> </tt>
+<a name="L183"></a><tt class="py-lineno"> 183</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt id="link-49" class="py-name"><a title="epydoc.docwriter.plaintext.PlaintextWriter.title" class="py-name" href="#" onclick="return doclink('link-49', 'title', 'link-19');">title</a></tt> <tt class="py-keyword">and</tt> <tt class="py-name">caption</tt><tt class="py-op">:</tt> </tt>
+<a name="L184"></a><tt class="py-lineno"> 184</tt>  <tt class="py-line">                <tt class="py-name">s</tt> <tt class="py-op">+=</tt> <tt class="py-string">' -- '</tt> </tt>
+<a name="L185"></a><tt class="py-lineno"> 185</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">caption</tt><tt class="py-op">:</tt> </tt>
+<a name="L186"></a><tt class="py-lineno"> 186</tt>  <tt class="py-line">                <tt class="py-name">s</tt> <tt class="py-op">+=</tt> <tt class="py-string">'<span class="graph-caption">%s</span>'</tt> <tt class="py-op">%</tt> <tt class="py-name">caption</tt> </tt>
+<a name="L187"></a><tt class="py-lineno"> 187</tt>  <tt class="py-line">            <tt class="py-name">s</tt> <tt class="py-op">+=</tt> <tt class="py-string">'\n  </td></tr>\n</table><br />'</tt> </tt>
+<a name="L188"></a><tt class="py-lineno"> 188</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">center</tt><tt class="py-op">:</tt> <tt class="py-name">s</tt> <tt class="py-op">+=</tt> <tt class="py-string">'</center>'</tt> </tt>
+<a name="L189"></a><tt class="py-lineno"> 189</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">s</tt> </tt>
+</div><a name="L190"></a><tt class="py-lineno"> 190</tt>  <tt class="py-line"> </tt>
+<a name="DotGraph.link"></a><div id="DotGraph.link-def"><a name="L191"></a><tt class="py-lineno"> 191</tt> <a class="py-toggle" href="#" id="DotGraph.link-toggle" onclick="return toggle('DotGraph.link');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.dotgraph.DotGraph-class.html#link">link</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">docstring_linker</tt><tt class="py-op [...]
+</div><div id="DotGraph.link-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DotGraph.link-expanded"><a name="L192"></a><tt class="py-lineno"> 192</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L193"></a><tt class="py-lineno"> 193</tt>  <tt class="py-line"><tt class="py-docstring">        Replace any href attributes whose value is ``<name>`` with </tt> </tt>
+<a name="L194"></a><tt class="py-lineno"> 194</tt>  <tt class="py-line"><tt class="py-docstring">        the url of the object whose name is ``<name>``.</tt> </tt>
+<a name="L195"></a><tt class="py-lineno"> 195</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L196"></a><tt class="py-lineno"> 196</tt>  <tt class="py-line">        <tt class="py-comment"># Link xrefs in nodes</tt> </tt>
+<a name="L197"></a><tt class="py-lineno"> 197</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-50" class="py-name" targets="Method epydoc.docwriter.dotgraph.DotGraph._link_href()=epydoc.docwriter.dotgraph.DotGraph-class.html#_link_href"><a title="epydoc.docwriter.dotgraph.DotGraph._link_href" class="py-name" href="#" onclick="return doclink('link-50', '_link_href', 'link-50');">_link_href</a></tt><tt class="py [...]
+<a name="L198"></a><tt class="py-lineno"> 198</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">node</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">nodes</tt><tt class="py-op">:</tt> </tt>
+<a name="L199"></a><tt class="py-lineno"> 199</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-51" class="py-name"><a title="epydoc.docwriter.dotgraph.DotGraph._link_href" class="py-name" href="#" onclick="return doclink('link-51', '_link_href', 'link-50');">_link_href</a></tt><tt class="py-op">(</tt><tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">attribs</tt><tt class="py-op">,</tt> <tt class="py-name">docst [...]
+<a name="L200"></a><tt class="py-lineno"> 200</tt>  <tt class="py-line"> </tt>
+<a name="L201"></a><tt class="py-lineno"> 201</tt>  <tt class="py-line">        <tt class="py-comment"># Link xrefs in edges</tt> </tt>
+<a name="L202"></a><tt class="py-lineno"> 202</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-52" class="py-name"><a title="epydoc.docwriter.dotgraph.DotGraph._link_href" class="py-name" href="#" onclick="return doclink('link-52', '_link_href', 'link-50');">_link_href</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">edge_defaults</tt><tt class="py-op">,< [...]
+<a name="L203"></a><tt class="py-lineno"> 203</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">edge</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">nodes</tt><tt class="py-op">:</tt> </tt>
+<a name="L204"></a><tt class="py-lineno"> 204</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-53" class="py-name"><a title="epydoc.docwriter.dotgraph.DotGraph._link_href" class="py-name" href="#" onclick="return doclink('link-53', '_link_href', 'link-50');">_link_href</a></tt><tt class="py-op">(</tt><tt class="py-name">edge</tt><tt class="py-op">.</tt><tt class="py-name">attribs</tt><tt class="py-op">,</tt> <tt class="py-name">docst [...]
+<a name="L205"></a><tt class="py-lineno"> 205</tt>  <tt class="py-line"> </tt>
+<a name="L206"></a><tt class="py-lineno"> 206</tt>  <tt class="py-line">        <tt class="py-comment"># Link xrefs in body</tt> </tt>
+<a name="L207"></a><tt class="py-lineno"> 207</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">def</tt> <tt class="py-def-name">subfunc</tt><tt class="py-op">(</tt><tt class="py-param">m</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L208"></a><tt class="py-lineno"> 208</tt>  <tt class="py-line">            <tt id="link-54" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.url()=epydoc.docwriter.html.HTMLWriter-class.html#url"><a title="epydoc.docwriter.html.HTMLWriter.url" class="py-name" href="#" onclick="return doclink('link-54', 'url', 'link-54');">url</a></tt> <tt class="py-op">=</tt> <tt class="py-name">docstring_linker</tt><tt class="py-op">.</tt><tt id="link-55" class="py-name" targets [...]
+<a name="L209"></a><tt class="py-lineno"> 209</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt id="link-56" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.url" class="py-name" href="#" onclick="return doclink('link-56', 'url', 'link-54');">url</a></tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-string">'href="%s"%s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt id="link-57" class="py-name"><a title="epydoc.docw [...]
+<a name="L210"></a><tt class="py-lineno"> 210</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-string">''</tt> </tt>
+</div><a name="L211"></a><tt class="py-lineno"> 211</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-58" class="py-name"><a title="epydoc.markup.Field.body" class="py-name" href="#" onclick="return doclink('link-58', 'body', 'link-21');">body</a></tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt class="py-string">"href\s*=\s*['\"]?<([\w\.]+)>['\" [...]
+<a name="L212"></a><tt class="py-lineno"> 212</tt>  <tt class="py-line">                           <tt id="link-59" class="py-name" targets="Method epydoc.markup.doctest.DoctestColorizer.subfunc()=epydoc.markup.doctest.DoctestColorizer-class.html#subfunc"><a title="epydoc.markup.doctest.DoctestColorizer.subfunc" class="py-name" href="#" onclick="return doclink('link-59', 'subfunc', 'link-59');">subfunc</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt> [...]
+</div><a name="L213"></a><tt class="py-lineno"> 213</tt>  <tt class="py-line"> </tt>
+<a name="DotGraph._link_href"></a><div id="DotGraph._link_href-def"><a name="L214"></a><tt class="py-lineno"> 214</tt> <a class="py-toggle" href="#" id="DotGraph._link_href-toggle" onclick="return toggle('DotGraph._link_href');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.dotgraph.DotGraph-class.html#_link_href">_link_href</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">a [...]
+</div><div id="DotGraph._link_href-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DotGraph._link_href-expanded"><a name="L215"></a><tt class="py-lineno"> 215</tt>  <tt class="py-line">        <tt class="py-docstring">"""Helper for `link()`"""</tt> </tt>
+<a name="L216"></a><tt class="py-lineno"> 216</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-string">'href'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">attribs</tt><tt class="py-op">:</tt> </tt>
+<a name="L217"></a><tt class="py-lineno"> 217</tt>  <tt class="py-line">            <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">match</tt><tt class="py-op">(</tt><tt class="py-string">r'^<([\w\.]+)>$'</tt><tt class="py-op">,</tt> <tt class="py-name">attribs</tt><tt class="py-op">[</tt><tt class="py-string">'href'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L218"></a><tt class="py-lineno"> 218</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">m</tt><tt class="py-op">:</tt> </tt>
+<a name="L219"></a><tt class="py-lineno"> 219</tt>  <tt class="py-line">                <tt id="link-61" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.url" class="py-name" href="#" onclick="return doclink('link-61', 'url', 'link-54');">url</a></tt> <tt class="py-op">=</tt> <tt class="py-name">docstring_linker</tt><tt class="py-op">.</tt><tt id="link-62" class="py-name"><a title="epydoc.docwriter.html._HTMLDocstringLinker.url_for" class="py-name" href="#" onclick="return docl [...]
+<a name="L220"></a><tt class="py-lineno"> 220</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt id="link-63" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.url" class="py-name" href="#" onclick="return doclink('link-63', 'url', 'link-54');">url</a></tt><tt class="py-op">:</tt> <tt class="py-name">attribs</tt><tt class="py-op">[</tt><tt class="py-string">'href'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-64" class="py-name"><a  [...]
+<a name="L221"></a><tt class="py-lineno"> 221</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> <tt class="py-keyword">del</tt> <tt class="py-name">attribs</tt><tt class="py-op">[</tt><tt class="py-string">'href'</tt><tt class="py-op">]</tt> </tt>
+</div><a name="L222"></a><tt class="py-lineno"> 222</tt>  <tt class="py-line">                 </tt>
+<a name="DotGraph.write"></a><div id="DotGraph.write-def"><a name="L223"></a><tt class="py-lineno"> 223</tt> <a class="py-toggle" href="#" id="DotGraph.write-toggle" onclick="return toggle('DotGraph.write');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.dotgraph.DotGraph-class.html#write">write</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">filename</tt><tt class="py-op"> [...]
+</div><div id="DotGraph.write-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DotGraph.write-expanded"><a name="L224"></a><tt class="py-lineno"> 224</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L225"></a><tt class="py-lineno"> 225</tt>  <tt class="py-line"><tt class="py-docstring">        Render the graph using the output format `language`, and write</tt> </tt>
+<a name="L226"></a><tt class="py-lineno"> 226</tt>  <tt class="py-line"><tt class="py-docstring">        the result to `filename`.</tt> </tt>
+<a name="L227"></a><tt class="py-lineno"> 227</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt>
+<a name="L228"></a><tt class="py-lineno"> 228</tt>  <tt class="py-line"><tt class="py-docstring">        :return: True if rendering was successful.</tt> </tt>
+<a name="L229"></a><tt class="py-lineno"> 229</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L230"></a><tt class="py-lineno"> 230</tt>  <tt class="py-line">        <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-65" class="py-name"><a title="epydoc.docwriter.dotgraph.DotGraph._run_dot" class="py-name" href="#" onclick="return doclink('link-65', '_run_dot', 'link-33');">_run_dot</a></tt><tt class="py-op">(</tt><tt class="py-string">'-T%s'</tt> <tt class="py-op">%</tt> <tt class="py-name">language< [...]
+<a name="L231"></a><tt class="py-lineno"> 231</tt>  <tt class="py-line">                               <tt class="py-string">'-o%s'</tt> <tt class="py-op">%</tt> <tt id="link-66" class="py-name" targets="Variable epydoc.apidoc.ModuleDoc.filename=epydoc.apidoc.ModuleDoc-class.html#filename"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-66', 'filename', 'link-66');">filename</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L232"></a><tt class="py-lineno"> 232</tt>  <tt class="py-line">        <tt class="py-comment"># Decode into unicode, if necessary.</tt> </tt>
+<a name="L233"></a><tt class="py-lineno"> 233</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">language</tt> <tt class="py-op">==</tt> <tt class="py-string">'cmapx'</tt> <tt class="py-keyword">and</tt> <tt class="py-name">result</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L234"></a><tt class="py-lineno"> 234</tt>  <tt class="py-line">            <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">result</tt><tt class="py-op">.</tt><tt class="py-name">decode</tt><tt class="py-op">(</tt><tt class="py-string">'utf-8'</tt><tt class="py-op">)</tt> </tt>
+<a name="L235"></a><tt class="py-lineno"> 235</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-name">result</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L236"></a><tt class="py-lineno"> 236</tt>  <tt class="py-line"> </tt>
+<a name="DotGraph.render"></a><div id="DotGraph.render-def"><a name="L237"></a><tt class="py-lineno"> 237</tt> <a class="py-toggle" href="#" id="DotGraph.render-toggle" onclick="return toggle('DotGraph.render');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.dotgraph.DotGraph-class.html#render">render</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">language</tt><tt class="p [...]
+</div><div id="DotGraph.render-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DotGraph.render-expanded"><a name="L238"></a><tt class="py-lineno"> 238</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L239"></a><tt class="py-lineno"> 239</tt>  <tt class="py-line"><tt class="py-docstring">        Use the ``dot`` command to render this graph, using the output</tt> </tt>
+<a name="L240"></a><tt class="py-lineno"> 240</tt>  <tt class="py-line"><tt class="py-docstring">        format `language`.  Return the result as a string, or ``None``</tt> </tt>
+<a name="L241"></a><tt class="py-lineno"> 241</tt>  <tt class="py-line"><tt class="py-docstring">        if the rendering failed.</tt> </tt>
+<a name="L242"></a><tt class="py-lineno"> 242</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L243"></a><tt class="py-lineno"> 243</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-67" class="py-name"><a title="epydoc.docwriter.dotgraph.DotGraph._run_dot" class="py-name" href="#" onclick="return doclink('link-67', '_run_dot', 'link-33');">_run_dot</a></tt><tt class="py-op">(</tt><tt class="py-string">'-T%s'</tt> <tt class="py-op">%</tt> <tt class="py-name">language</tt><tt class="py-op"> [...]
+</div><a name="L244"></a><tt class="py-lineno"> 244</tt>  <tt class="py-line"> </tt>
+<a name="DotGraph._run_dot"></a><div id="DotGraph._run_dot-def"><a name="L245"></a><tt class="py-lineno"> 245</tt> <a class="py-toggle" href="#" id="DotGraph._run_dot-toggle" onclick="return toggle('DotGraph._run_dot');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.dotgraph.DotGraph-class.html#_run_dot">_run_dot</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class= [...]
+</div><div id="DotGraph._run_dot-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DotGraph._run_dot-expanded"><a name="L246"></a><tt class="py-lineno"> 246</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L247"></a><tt class="py-lineno"> 247</tt>  <tt class="py-line">            <tt class="py-name">result</tt><tt class="py-op">,</tt> <tt class="py-name">err</tt> <tt class="py-op">=</tt> <tt id="link-68" class="py-name" targets="Function epydoc.util.run_subprocess()=epydoc.util-module.html#run_subprocess"><a title="epydoc.util.run_subprocess" class="py-name" href="#" onclick="return doclink('link-68', 'run_subprocess', 'link-68');">run_subprocess</a></tt><tt class="py-op">(</tt><t [...]
+<a name="L248"></a><tt class="py-lineno"> 248</tt>  <tt class="py-line">                                         <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-70" class="py-name" targets="Method epydoc.docwriter.dotgraph.DotGraph.to_dotfile()=epydoc.docwriter.dotgraph.DotGraph-class.html#to_dotfile,Method epydoc.docwriter.dotgraph.DotGraphEdge.to_dotfile()=epydoc.docwriter.dotgraph.DotGraphEdge-class.html#to_dotfile,Method epydoc.docwriter.dotgraph.DotGraphNode.to_dot [...]
+epydoc.docwriter.dotgraph.DotGraphEdge.to_dotfile
+epydoc.docwriter.dotgraph.DotGraphNode.to_dotfile
+epydoc.docwriter.dotgraph.DotGraphUmlClassNode.to_dotfile
+epydoc.docwriter.dotgraph.DotGraphUmlModuleNode.to_dotfile" class="py-name" href="#" onclick="return doclink('link-70', 'to_dotfile', 'link-70');">to_dotfile</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L249"></a><tt class="py-lineno"> 249</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">err</tt><tt class="py-op">:</tt> <tt id="link-71" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-71', 'log', 'link-1');">log</a></tt><tt class="py-op">.</tt><tt id="link-72" class="py-name" targets="Method epydoc.checker.DocChecker.warning()=epydoc.checker.DocChecker-class.html#warning,Function epydoc.log.warning()=epydoc.log-module.html#warning"><a title="epydoc.checker.DocChecker.warning
+epydoc.log.warning" class="py-name" href="#" onclick="return doclink('link-72', 'warning', 'link-72');">warning</a></tt><tt class="py-op">(</tt><tt class="py-string">"Graphviz dot warning(s):\n%s"</tt> <tt class="py-op">%</tt> <tt class="py-name">err</tt><tt class="py-op">)</tt> </tt>
+<a name="L250"></a><tt class="py-lineno"> 250</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">OSError</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
+<a name="L251"></a><tt class="py-lineno"> 251</tt>  <tt class="py-line">            <tt id="link-73" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-73', 'log', 'link-1');">log</a></tt><tt class="py-op">.</tt><tt id="link-74" class="py-name"><a title="epydoc.checker.DocChecker.warning
+epydoc.log.warning" class="py-name" href="#" onclick="return doclink('link-74', 'warning', 'link-72');">warning</a></tt><tt class="py-op">(</tt><tt class="py-string">"Unable to render Graphviz dot graph:\n%s"</tt> <tt class="py-op">%</tt> <tt class="py-name">e</tt><tt class="py-op">)</tt> </tt>
+<a name="L252"></a><tt class="py-lineno"> 252</tt>  <tt class="py-line">            <tt class="py-comment">#log.debug(self.to_dotfile())</tt> </tt>
+<a name="L253"></a><tt class="py-lineno"> 253</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
+<a name="L254"></a><tt class="py-lineno"> 254</tt>  <tt class="py-line"> </tt>
+<a name="L255"></a><tt class="py-lineno"> 255</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">result</tt> </tt>
+</div><a name="L256"></a><tt class="py-lineno"> 256</tt>  <tt class="py-line"> </tt>
+<a name="DotGraph.to_dotfile"></a><div id="DotGraph.to_dotfile-def"><a name="L257"></a><tt class="py-lineno"> 257</tt> <a class="py-toggle" href="#" id="DotGraph.to_dotfile-toggle" onclick="return toggle('DotGraph.to_dotfile');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.dotgraph.DotGraph-class.html#to_dotfile">to_dotfile</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="DotGraph.to_dotfile-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DotGraph.to_dotfile-expanded"><a name="L258"></a><tt class="py-lineno"> 258</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L259"></a><tt class="py-lineno"> 259</tt>  <tt class="py-line"><tt class="py-docstring">        Return the string contents of the dot file that should be used</tt> </tt>
+<a name="L260"></a><tt class="py-lineno"> 260</tt>  <tt class="py-line"><tt class="py-docstring">        to render this graph.</tt> </tt>
+<a name="L261"></a><tt class="py-lineno"> 261</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L262"></a><tt class="py-lineno"> 262</tt>  <tt class="py-line">        <tt class="py-name">lines</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-string">'digraph %s {'</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">uid</tt><tt class="py-op">,</tt> </tt>
+<a name="L263"></a><tt class="py-lineno"> 263</tt>  <tt class="py-line">                 <tt class="py-string">'node [%s]'</tt> <tt class="py-op">%</tt> <tt class="py-string">','</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">'%s="%s"'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">k</tt><tt class="py-op">,</tt><tt id="link-75" class="py-name" targets="Variable epydoc.markup.restruc [...]
+<a name="L264"></a><tt class="py-lineno"> 264</tt>  <tt class="py-line">                                         <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">node_defaults</tt><tt class="py-op">.</tt><tt class="py-name">items</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L265"></a><tt class="py-lineno"> 265</tt>  <tt class="py-line">                 <tt class="py-string">'edge [%s]'</tt> <tt class="py-op">%</tt> <tt class="py-string">','</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">'%s="%s"'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">k</tt><tt class="py-op">,</tt><tt id="link-77" class="py-name"><a title="epydoc.markup.restructuredtex [...]
+<a name="L266"></a><tt class="py-lineno"> 266</tt>  <tt class="py-line">                                         <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">edge_defaults</tt><tt class="py-op">.</tt><tt class="py-name">items</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt>
+<a name="L267"></a><tt class="py-lineno"> 267</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-79" class="py-name"><a title="epydoc.markup.Field.body" class="py-name" href="#" onclick="return doclink('link-79', 'body', 'link-21');">body</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L268"></a><tt class="py-lineno"> 268</tt>  <tt class="py-line">            <tt class="py-name">lines</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-80" class="py-name"><a title="epydoc.markup.Field.body" class="py-name" href="#" onclick="return doclink('link-80', 'body', 'link-21');">body</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L269"></a><tt class="py-lineno"> 269</tt>  <tt class="py-line">        <tt class="py-name">lines</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">'/* Nodes */'</tt><tt class="py-op">)</tt> </tt>
+<a name="L270"></a><tt class="py-lineno"> 270</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">node</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">nodes</tt><tt class="py-op">:</tt> </tt>
+<a name="L271"></a><tt class="py-lineno"> 271</tt>  <tt class="py-line">            <tt class="py-name">lines</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">node</tt><tt class="py-op">.</tt><tt id="link-81" class="py-name"><a title="epydoc.docwriter.dotgraph.DotGraph.to_dotfile
+epydoc.docwriter.dotgraph.DotGraphEdge.to_dotfile
+epydoc.docwriter.dotgraph.DotGraphNode.to_dotfile
+epydoc.docwriter.dotgraph.DotGraphUmlClassNode.to_dotfile
+epydoc.docwriter.dotgraph.DotGraphUmlModuleNode.to_dotfile" class="py-name" href="#" onclick="return doclink('link-81', 'to_dotfile', 'link-70');">to_dotfile</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L272"></a><tt class="py-lineno"> 272</tt>  <tt class="py-line">        <tt class="py-name">lines</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">'/* Edges */'</tt><tt class="py-op">)</tt> </tt>
+<a name="L273"></a><tt class="py-lineno"> 273</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">edge</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">edges</tt><tt class="py-op">:</tt> </tt>
+<a name="L274"></a><tt class="py-lineno"> 274</tt>  <tt class="py-line">            <tt class="py-name">lines</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">edge</tt><tt class="py-op">.</tt><tt id="link-82" class="py-name"><a title="epydoc.docwriter.dotgraph.DotGraph.to_dotfile
+epydoc.docwriter.dotgraph.DotGraphEdge.to_dotfile
+epydoc.docwriter.dotgraph.DotGraphNode.to_dotfile
+epydoc.docwriter.dotgraph.DotGraphUmlClassNode.to_dotfile
+epydoc.docwriter.dotgraph.DotGraphUmlModuleNode.to_dotfile" class="py-name" href="#" onclick="return doclink('link-82', 'to_dotfile', 'link-70');">to_dotfile</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L275"></a><tt class="py-lineno"> 275</tt>  <tt class="py-line">        <tt class="py-name">lines</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">'}'</tt><tt class="py-op">)</tt> </tt>
+<a name="L276"></a><tt class="py-lineno"> 276</tt>  <tt class="py-line"> </tt>
+<a name="L277"></a><tt class="py-lineno"> 277</tt>  <tt class="py-line">        <tt class="py-comment"># Default dot input encoding is UTF-8</tt> </tt>
+<a name="L278"></a><tt class="py-lineno"> 278</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">return</tt> <tt class="py-string">u'\n'</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">lines</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">'utf-8'</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L279"></a><tt class="py-lineno"> 279</tt>  <tt class="py-line"> </tt>
+<a name="DotGraphNode"></a><div id="DotGraphNode-def"><a name="L280"></a><tt class="py-lineno"> 280</tt> <a class="py-toggle" href="#" id="DotGraphNode-toggle" onclick="return toggle('DotGraphNode');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="epydoc.docwriter.dotgraph.DotGraphNode-class.html">DotGraphNode</a><tt class="py-op">:</tt> </tt>
+</div><div id="DotGraphNode-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="DotGraphNode-expanded"><a name="L281"></a><tt class="py-lineno"> 281</tt>  <tt class="py-line">    <tt id="link-83" class="py-name" targets="Variable epydoc.docwriter.dotgraph.DotGraphNode._next_id=epydoc.docwriter.dotgraph.DotGraphNode-class.html#_next_id"><a title="epydoc.docwriter.dotgraph.DotGraphNode._next_id" class="py-name" href="#" onclick="return doclink('link-83', '_next_id', 'l [...]
+<a name="DotGraphNode.__init__"></a><div id="DotGraphNode.__init__-def"><a name="L282"></a><tt class="py-lineno"> 282</tt> <a class="py-toggle" href="#" id="DotGraphNode.__init__-toggle" onclick="return toggle('DotGraphNode.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.dotgraph.DotGraphNode-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py- [...]
+</div><div id="DotGraphNode.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DotGraphNode.__init__-expanded"><a name="L283"></a><tt class="py-lineno"> 283</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-84" class="py-name" targets="Method epydoc.docwriter.latex.LatexWriter.label()=epydoc.docwriter.latex.LatexWriter-class.html#label"><a title="epydoc.docwriter.latex.LatexWriter.label" class="py-name" href="#" onclick="retu [...]
+<a name="L284"></a><tt class="py-lineno"> 284</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">'Use label or html_label, not both.'</tt><tt class="py-op">)</tt> </tt>
+<a name="L285"></a><tt class="py-lineno"> 285</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-85" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.label" class="py-name" href="#" onclick="return doclink('link-85', 'label', 'link-84');">label</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> <tt class="py-name">attribs</tt><tt class="py-op">[</tt><tt class="py-string">'lab [...]
+<a name="L286"></a><tt class="py-lineno"> 286</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_html_label</tt> <tt class="py-op">=</tt> <tt class="py-name">html_label</tt> </tt>
+<a name="L287"></a><tt class="py-lineno"> 287</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_attribs</tt> <tt class="py-op">=</tt> <tt class="py-name">attribs</tt> </tt>
+<a name="L288"></a><tt class="py-lineno"> 288</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">id</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">.</tt><tt id="link-87" class="py-name"><a title="epydoc.docwriter.dotgraph.DotGraphNode._next_id" class="py-name" href="#" onclick="return doclink('link-87', '_next_id', 'link-83');">_next_id</a></tt> </tt>
+<a name="L289"></a><tt class="py-lineno"> 289</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">.</tt><tt id="link-88" class="py-name"><a title="epydoc.docwriter.dotgraph.DotGraphNode._next_id" class="py-name" href="#" onclick="return doclink('link-88', '_next_id', 'link-83');">_next_id</a></tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L290"></a><tt class="py-lineno"> 290</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">port</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+</div><a name="L291"></a><tt class="py-lineno"> 291</tt>  <tt class="py-line"> </tt>
+<a name="DotGraphNode.__getitem__"></a><div id="DotGraphNode.__getitem__-def"><a name="L292"></a><tt class="py-lineno"> 292</tt> <a class="py-toggle" href="#" id="DotGraphNode.__getitem__-toggle" onclick="return toggle('DotGraphNode.__getitem__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.dotgraph.DotGraphNode-class.html#__getitem__">__getitem__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</ [...]
+</div><div id="DotGraphNode.__getitem__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DotGraphNode.__getitem__-expanded"><a name="L293"></a><tt class="py-lineno"> 293</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_attribs</tt><tt class="py-op">[</tt><tt class="py-name">attr</tt><tt class="py-op">]</tt> </tt>
+</div><a name="L294"></a><tt class="py-lineno"> 294</tt>  <tt class="py-line"> </tt>
+<a name="DotGraphNode.__setitem__"></a><div id="DotGraphNode.__setitem__-def"><a name="L295"></a><tt class="py-lineno"> 295</tt> <a class="py-toggle" href="#" id="DotGraphNode.__setitem__-toggle" onclick="return toggle('DotGraphNode.__setitem__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.dotgraph.DotGraphNode-class.html#__setitem__">__setitem__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</ [...]
+</div><div id="DotGraphNode.__setitem__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DotGraphNode.__setitem__-expanded"><a name="L296"></a><tt class="py-lineno"> 296</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">attr</tt> <tt class="py-op">==</tt> <tt class="py-string">'html_label'</tt><tt class="py-op">:</tt> </tt>
+<a name="L297"></a><tt class="py-lineno"> 297</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_attribs</tt><tt class="py-op">.</tt><tt class="py-name">pop</tt><tt class="py-op">(</tt><tt class="py-string">'label'</tt><tt class="py-op">)</tt> </tt>
+<a name="L298"></a><tt class="py-lineno"> 298</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_html_label</tt> <tt class="py-op">=</tt> <tt class="py-name">val</tt> </tt>
+<a name="L299"></a><tt class="py-lineno"> 299</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L300"></a><tt class="py-lineno"> 300</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">attr</tt> <tt class="py-op">==</tt> <tt class="py-string">'label'</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_html_label</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L301"></a><tt class="py-lineno"> 301</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_attribs</tt><tt class="py-op">[</tt><tt class="py-name">attr</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">val</tt> </tt>
+</div><a name="L302"></a><tt class="py-lineno"> 302</tt>  <tt class="py-line"> </tt>
+<a name="DotGraphNode.to_dotfile"></a><div id="DotGraphNode.to_dotfile-def"><a name="L303"></a><tt class="py-lineno"> 303</tt> <a class="py-toggle" href="#" id="DotGraphNode.to_dotfile-toggle" onclick="return toggle('DotGraphNode.to_dotfile');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.dotgraph.DotGraphNode-class.html#to_dotfile">to_dotfile</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt [...]
+</div><div id="DotGraphNode.to_dotfile-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DotGraphNode.to_dotfile-expanded"><a name="L304"></a><tt class="py-lineno"> 304</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L305"></a><tt class="py-lineno"> 305</tt>  <tt class="py-line"><tt class="py-docstring">        Return the dot commands that should be used to render this node.</tt> </tt>
+<a name="L306"></a><tt class="py-lineno"> 306</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L307"></a><tt class="py-lineno"> 307</tt>  <tt class="py-line">        <tt class="py-name">attribs</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-string">'%s="%s"'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">k</tt><tt class="py-op">,</tt><tt id="link-89" class="py-name"><a title="epydoc.markup.restructuredtext._EpydocReader.v" class="py-name" href="#" onclick="return doclink('link-89', 'v', 'link-75');">v</a></tt><tt class="py-o [...]
+<a name="L308"></a><tt class="py-lineno"> 308</tt>  <tt class="py-line">                   <tt class="py-keyword">if</tt> <tt id="link-91" class="py-name"><a title="epydoc.markup.restructuredtext._EpydocReader.v" class="py-name" href="#" onclick="return doclink('link-91', 'v', 'link-75');">v</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">]</tt> </tt>
+<a name="L309"></a><tt class="py-lineno"> 309</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_html_label</tt><tt class="py-op">:</tt> </tt>
+<a name="L310"></a><tt class="py-lineno"> 310</tt>  <tt class="py-line">            <tt class="py-name">attribs</tt><tt class="py-op">.</tt><tt class="py-name">insert</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-string">'label=<%s>'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_html_label</tt><tt class="py-op">,</tt><tt class="py-op">)</tt><tt class="p [...]
+<a name="L311"></a><tt class="py-lineno"> 311</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">attribs</tt><tt class="py-op">:</tt> <tt class="py-name">attribs</tt> <tt class="py-op">=</tt> <tt class="py-string">' [%s]'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-string">','</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">attribs</tt><tt class="py-op">)</tt><tt class="py-op">) [...]
+<a name="L312"></a><tt class="py-lineno"> 312</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">'node%d%s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">id</tt><tt class="py-op">,</tt> <tt class="py-name">attribs</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L313"></a><tt class="py-lineno"> 313</tt>  <tt class="py-line"> </tt>
+<a name="DotGraphEdge"></a><div id="DotGraphEdge-def"><a name="L314"></a><tt class="py-lineno"> 314</tt> <a class="py-toggle" href="#" id="DotGraphEdge-toggle" onclick="return toggle('DotGraphEdge');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="epydoc.docwriter.dotgraph.DotGraphEdge-class.html">DotGraphEdge</a><tt class="py-op">:</tt> </tt>
+</div><div id="DotGraphEdge-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="DotGraphEdge-expanded"><a name="DotGraphEdge.__init__"></a><div id="DotGraphEdge.__init__-def"><a name="L315"></a><tt class="py-lineno"> 315</tt> <a class="py-toggle" href="#" id="DotGraphEdge.__init__-toggle" onclick="return toggle('DotGraphEdge.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.dotgraph.DotGraphEdge-cl [...]
+</div><div id="DotGraphEdge.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DotGraphEdge.__init__-expanded"><a name="L316"></a><tt class="py-lineno"> 316</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L317"></a><tt class="py-lineno"> 317</tt>  <tt class="py-line"><tt class="py-docstring">        :type start: `DotGraphNode`</tt> </tt>
+<a name="L318"></a><tt class="py-lineno"> 318</tt>  <tt class="py-line"><tt class="py-docstring">        :type end: `DotGraphNode`</tt> </tt>
+<a name="L319"></a><tt class="py-lineno"> 319</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L320"></a><tt class="py-lineno"> 320</tt>  <tt class="py-line">        <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">start</tt><tt class="py-op">,</tt> <tt id="link-92" class="py-name" targets="Class epydoc.docwriter.dotgraph.DotGraphNode=epydoc.docwriter.dotgraph.DotGraphNode-class.html"><a title="epydoc.docwriter.dotgraph.DotGraphNode" class="py-name" href="#" onclick="return doclink('link-92', 'DotGraphNode', [...]
+<a name="L321"></a><tt class="py-lineno"> 321</tt>  <tt class="py-line">        <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">end</tt><tt class="py-op">,</tt> <tt id="link-93" class="py-name"><a title="epydoc.docwriter.dotgraph.DotGraphNode" class="py-name" href="#" onclick="return doclink('link-93', 'DotGraphNode', 'link-92');">DotGraphNode</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L322"></a><tt class="py-lineno"> 322</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-94" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.label" class="py-name" href="#" onclick="return doclink('link-94', 'label', 'link-84');">label</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> <tt class="py-name">attribs</tt><tt class="py-op">[</tt><tt class="py-string">'lab [...]
+<a name="L323"></a><tt class="py-lineno"> 323</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">start</tt> <tt class="py-op">=</tt> <tt class="py-name">start</tt>       <tt class="py-comment">#: :type: `DotGraphNode`</tt> </tt>
+<a name="L324"></a><tt class="py-lineno"> 324</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">end</tt> <tt class="py-op">=</tt> <tt class="py-name">end</tt>           <tt class="py-comment">#: :type: `DotGraphNode`</tt> </tt>
+<a name="L325"></a><tt class="py-lineno"> 325</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_attribs</tt> <tt class="py-op">=</tt> <tt class="py-name">attribs</tt> </tt>
+</div><a name="L326"></a><tt class="py-lineno"> 326</tt>  <tt class="py-line"> </tt>
+<a name="DotGraphEdge.__getitem__"></a><div id="DotGraphEdge.__getitem__-def"><a name="L327"></a><tt class="py-lineno"> 327</tt> <a class="py-toggle" href="#" id="DotGraphEdge.__getitem__-toggle" onclick="return toggle('DotGraphEdge.__getitem__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.dotgraph.DotGraphEdge-class.html#__getitem__">__getitem__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</ [...]
+</div><div id="DotGraphEdge.__getitem__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DotGraphEdge.__getitem__-expanded"><a name="L328"></a><tt class="py-lineno"> 328</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_attribs</tt><tt class="py-op">[</tt><tt class="py-name">attr</tt><tt class="py-op">]</tt> </tt>
+</div><a name="L329"></a><tt class="py-lineno"> 329</tt>  <tt class="py-line"> </tt>
+<a name="DotGraphEdge.__setitem__"></a><div id="DotGraphEdge.__setitem__-def"><a name="L330"></a><tt class="py-lineno"> 330</tt> <a class="py-toggle" href="#" id="DotGraphEdge.__setitem__-toggle" onclick="return toggle('DotGraphEdge.__setitem__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.dotgraph.DotGraphEdge-class.html#__setitem__">__setitem__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</ [...]
+</div><div id="DotGraphEdge.__setitem__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DotGraphEdge.__setitem__-expanded"><a name="L331"></a><tt class="py-lineno"> 331</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_attribs</tt><tt class="py-op">[</tt><tt class="py-name">attr</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">val</tt> </tt>
+</div><a name="L332"></a><tt class="py-lineno"> 332</tt>  <tt class="py-line"> </tt>
+<a name="DotGraphEdge.to_dotfile"></a><div id="DotGraphEdge.to_dotfile-def"><a name="L333"></a><tt class="py-lineno"> 333</tt> <a class="py-toggle" href="#" id="DotGraphEdge.to_dotfile-toggle" onclick="return toggle('DotGraphEdge.to_dotfile');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.dotgraph.DotGraphEdge-class.html#to_dotfile">to_dotfile</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt [...]
+</div><div id="DotGraphEdge.to_dotfile-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DotGraphEdge.to_dotfile-expanded"><a name="L334"></a><tt class="py-lineno"> 334</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L335"></a><tt class="py-lineno"> 335</tt>  <tt class="py-line"><tt class="py-docstring">        Return the dot commands that should be used to render this edge.</tt> </tt>
+<a name="L336"></a><tt class="py-lineno"> 336</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L337"></a><tt class="py-lineno"> 337</tt>  <tt class="py-line">        <tt class="py-comment"># Set head & tail ports, if the nodes have preferred ports.</tt> </tt>
+<a name="L338"></a><tt class="py-lineno"> 338</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">attribs</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_attribs</tt><tt class="py-op">.</tt><tt class="py-name">copy</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L339"></a><tt class="py-lineno"> 339</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">start</tt><tt class="py-op">.</tt><tt class="py-name">port</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-string">'headport'</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in [...]
+<a name="L340"></a><tt class="py-lineno"> 340</tt>  <tt class="py-line">            <tt class="py-name">attribs</tt><tt class="py-op">[</tt><tt class="py-string">'headport'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">start</tt><tt class="py-op">.</tt><tt class="py-name">port</tt> </tt>
+<a name="L341"></a><tt class="py-lineno"> 341</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">end</tt><tt class="py-op">.</tt><tt class="py-name">port</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-string">'tailport'</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</ [...]
+<a name="L342"></a><tt class="py-lineno"> 342</tt>  <tt class="py-line">            <tt class="py-name">attribs</tt><tt class="py-op">[</tt><tt class="py-string">'tailport'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">end</tt><tt class="py-op">.</tt><tt class="py-name">port</tt> </tt>
+<a name="L343"></a><tt class="py-lineno"> 343</tt>  <tt class="py-line">        <tt class="py-comment"># Convert attribs to a string</tt> </tt>
+<a name="L344"></a><tt class="py-lineno"> 344</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">attribs</tt> <tt class="py-op">=</tt> <tt class="py-string">','</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">'%s="%s"'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">k</tt><tt class="py-op">,</tt><tt id="link-96" class="py-name"><a title="epydoc.markup.re [...]
+<a name="L345"></a><tt class="py-lineno"> 345</tt>  <tt class="py-line">                            <tt class="py-keyword">if</tt> <tt id="link-98" class="py-name"><a title="epydoc.markup.restructuredtext._EpydocReader.v" class="py-name" href="#" onclick="return doclink('link-98', 'v', 'link-75');">v</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L346"></a><tt class="py-lineno"> 346</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">attribs</tt><tt class="py-op">:</tt> <tt class="py-name">attribs</tt> <tt class="py-op">=</tt> <tt class="py-string">' [%s]'</tt> <tt class="py-op">%</tt> <tt class="py-name">attribs</tt> </tt>
+<a name="L347"></a><tt class="py-lineno"> 347</tt>  <tt class="py-line">        <tt class="py-comment"># Return the dotfile edge.</tt> </tt>
+<a name="L348"></a><tt class="py-lineno"> 348</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">return</tt> <tt class="py-string">'node%d -> node%d%s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">start</tt><tt class="py-op">.</tt><tt class="py-name">id</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">end</tt><tt class [...]
+</div></div><a name="L349"></a><tt class="py-lineno"> 349</tt>  <tt class="py-line"> </tt>
+<a name="L350"></a><tt class="py-lineno"> 350</tt>  <tt class="py-line"><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L351"></a><tt class="py-lineno"> 351</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#{ Specialized Nodes for UML Graphs</tt> </tt>
+<a name="L352"></a><tt class="py-lineno"> 352</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L353"></a><tt class="py-lineno"> 353</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="DotGraphUmlClassNode"></a><div id="DotGraphUmlClassNode-def"><a name="L354"></a><tt class="py-lineno"> 354</tt> <a class="py-toggle" href="#" id="DotGraphUmlClassNode-toggle" onclick="return toggle('DotGraphUmlClassNode');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html">DotGraphUmlClassNode</a><tt class="py-op">(</tt><tt class="py-base-class">DotGraphNode</tt><tt class="py-op">)</ [...]
+</div><div id="DotGraphUmlClassNode-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="DotGraphUmlClassNode-expanded"><a name="L355"></a><tt class="py-lineno"> 355</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L356"></a><tt class="py-lineno"> 356</tt>  <tt class="py-line"><tt class="py-docstring">    A specialized dot graph node used to display `ClassDoc`\s using</tt> </tt>
+<a name="L357"></a><tt class="py-lineno"> 357</tt>  <tt class="py-line"><tt class="py-docstring">    UML notation.  The node is rendered as a table with three cells:</tt> </tt>
+<a name="L358"></a><tt class="py-lineno"> 358</tt>  <tt class="py-line"><tt class="py-docstring">    the top cell contains the class name; the middle cell contains a</tt> </tt>
+<a name="L359"></a><tt class="py-lineno"> 359</tt>  <tt class="py-line"><tt class="py-docstring">    list of attributes; and the bottom cell contains a list of</tt> </tt>
+<a name="L360"></a><tt class="py-lineno"> 360</tt>  <tt class="py-line"><tt class="py-docstring">    operations::</tt> </tt>
+<a name="L361"></a><tt class="py-lineno"> 361</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L362"></a><tt class="py-lineno"> 362</tt>  <tt class="py-line"><tt class="py-docstring">         +-------------+</tt> </tt>
+<a name="L363"></a><tt class="py-lineno"> 363</tt>  <tt class="py-line"><tt class="py-docstring">         |  ClassName  |</tt> </tt>
+<a name="L364"></a><tt class="py-lineno"> 364</tt>  <tt class="py-line"><tt class="py-docstring">         +-------------+</tt> </tt>
+<a name="L365"></a><tt class="py-lineno"> 365</tt>  <tt class="py-line"><tt class="py-docstring">         | x: int      |</tt> </tt>
+<a name="L366"></a><tt class="py-lineno"> 366</tt>  <tt class="py-line"><tt class="py-docstring">         |     ...     |</tt> </tt>
+<a name="L367"></a><tt class="py-lineno"> 367</tt>  <tt class="py-line"><tt class="py-docstring">         +-------------+</tt> </tt>
+<a name="L368"></a><tt class="py-lineno"> 368</tt>  <tt class="py-line"><tt class="py-docstring">         | f(self, x)  |</tt> </tt>
+<a name="L369"></a><tt class="py-lineno"> 369</tt>  <tt class="py-line"><tt class="py-docstring">         |     ...     |</tt> </tt>
+<a name="L370"></a><tt class="py-lineno"> 370</tt>  <tt class="py-line"><tt class="py-docstring">         +-------------+</tt> </tt>
+<a name="L371"></a><tt class="py-lineno"> 371</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L372"></a><tt class="py-lineno"> 372</tt>  <tt class="py-line"><tt class="py-docstring">    `DotGraphUmlClassNode`\s may be *collapsed*, in which case they are</tt> </tt>
+<a name="L373"></a><tt class="py-lineno"> 373</tt>  <tt class="py-line"><tt class="py-docstring">    drawn as a simple box containing the class name::</tt> </tt>
+<a name="L374"></a><tt class="py-lineno"> 374</tt>  <tt class="py-line"><tt class="py-docstring">    </tt> </tt>
+<a name="L375"></a><tt class="py-lineno"> 375</tt>  <tt class="py-line"><tt class="py-docstring">         +-------------+</tt> </tt>
+<a name="L376"></a><tt class="py-lineno"> 376</tt>  <tt class="py-line"><tt class="py-docstring">         |  ClassName  |</tt> </tt>
+<a name="L377"></a><tt class="py-lineno"> 377</tt>  <tt class="py-line"><tt class="py-docstring">         +-------------+</tt> </tt>
+<a name="L378"></a><tt class="py-lineno"> 378</tt>  <tt class="py-line"><tt class="py-docstring">         </tt> </tt>
+<a name="L379"></a><tt class="py-lineno"> 379</tt>  <tt class="py-line"><tt class="py-docstring">    Attributes with types corresponding to documented classes can</tt> </tt>
+<a name="L380"></a><tt class="py-lineno"> 380</tt>  <tt class="py-line"><tt class="py-docstring">    optionally be converted into edges, using `link_attributes()`.</tt> </tt>
+<a name="L381"></a><tt class="py-lineno"> 381</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L382"></a><tt class="py-lineno"> 382</tt>  <tt class="py-line"><tt class="py-docstring">    :todo: Add more options?</tt> </tt>
+<a name="L383"></a><tt class="py-lineno"> 383</tt>  <tt class="py-line"><tt class="py-docstring">      - show/hide operation signature</tt> </tt>
+<a name="L384"></a><tt class="py-lineno"> 384</tt>  <tt class="py-line"><tt class="py-docstring">      - show/hide operation signature types</tt> </tt>
+<a name="L385"></a><tt class="py-lineno"> 385</tt>  <tt class="py-line"><tt class="py-docstring">      - show/hide operation signature return type</tt> </tt>
+<a name="L386"></a><tt class="py-lineno"> 386</tt>  <tt class="py-line"><tt class="py-docstring">      - show/hide attribute types</tt> </tt>
+<a name="L387"></a><tt class="py-lineno"> 387</tt>  <tt class="py-line"><tt class="py-docstring">      - use qualifiers</tt> </tt>
+<a name="L388"></a><tt class="py-lineno"> 388</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L389"></a><tt class="py-lineno"> 389</tt>  <tt class="py-line"> </tt>
+<a name="DotGraphUmlClassNode.__init__"></a><div id="DotGraphUmlClassNode.__init__-def"><a name="L390"></a><tt class="py-lineno"> 390</tt> <a class="py-toggle" href="#" id="DotGraphUmlClassNode.__init__-toggle" onclick="return toggle('DotGraphUmlClassNode.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt [...]
+<a name="L391"></a><tt class="py-lineno"> 391</tt>  <tt class="py-line">                 <tt class="py-param">bgcolor</tt><tt class="py-op">=</tt><tt id="link-99" class="py-name"><a title="epydoc.docwriter.dotgraph.CLASS_BG" class="py-name" href="#" onclick="return doclink('link-99', 'CLASS_BG', 'link-9');">CLASS_BG</a></tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-param">options</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="DotGraphUmlClassNode.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DotGraphUmlClassNode.__init__-expanded"><a name="L392"></a><tt class="py-lineno"> 392</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L393"></a><tt class="py-lineno"> 393</tt>  <tt class="py-line"><tt class="py-docstring">        Create a new `DotGraphUmlClassNode` based on the class</tt> </tt>
+<a name="L394"></a><tt class="py-lineno"> 394</tt>  <tt class="py-line"><tt class="py-docstring">        `class_doc`.</tt> </tt>
+<a name="L395"></a><tt class="py-lineno"> 395</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L396"></a><tt class="py-lineno"> 396</tt>  <tt class="py-line"><tt class="py-docstring">        :Parameters:</tt> </tt>
+<a name="L397"></a><tt class="py-lineno"> 397</tt>  <tt class="py-line"><tt class="py-docstring">            `linker` : `markup.DocstringLinker`</tt> </tt>
+<a name="L398"></a><tt class="py-lineno"> 398</tt>  <tt class="py-line"><tt class="py-docstring">                Used to look up URLs for classes.</tt> </tt>
+<a name="L399"></a><tt class="py-lineno"> 399</tt>  <tt class="py-line"><tt class="py-docstring">            `context` : `APIDoc`</tt> </tt>
+<a name="L400"></a><tt class="py-lineno"> 400</tt>  <tt class="py-line"><tt class="py-docstring">                The context in which this node will be drawn; dotted</tt> </tt>
+<a name="L401"></a><tt class="py-lineno"> 401</tt>  <tt class="py-line"><tt class="py-docstring">                names will be contextualized to this context.</tt> </tt>
+<a name="L402"></a><tt class="py-lineno"> 402</tt>  <tt class="py-line"><tt class="py-docstring">            `collapsed` : ``bool``</tt> </tt>
+<a name="L403"></a><tt class="py-lineno"> 403</tt>  <tt class="py-line"><tt class="py-docstring">                If true, then display this node as a simple box.</tt> </tt>
+<a name="L404"></a><tt class="py-lineno"> 404</tt>  <tt class="py-line"><tt class="py-docstring">            `bgcolor` : ```str```</tt> </tt>
+<a name="L405"></a><tt class="py-lineno"> 405</tt>  <tt class="py-line"><tt class="py-docstring">                The background color for this node.</tt> </tt>
+<a name="L406"></a><tt class="py-lineno"> 406</tt>  <tt class="py-line"><tt class="py-docstring">            `options` : ``dict``</tt> </tt>
+<a name="L407"></a><tt class="py-lineno"> 407</tt>  <tt class="py-line"><tt class="py-docstring">                A set of options used to control how the node should</tt> </tt>
+<a name="L408"></a><tt class="py-lineno"> 408</tt>  <tt class="py-line"><tt class="py-docstring">                be displayed.</tt> </tt>
+<a name="L409"></a><tt class="py-lineno"> 409</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L410"></a><tt class="py-lineno"> 410</tt>  <tt class="py-line"><tt class="py-docstring">        :Keywords:</tt> </tt>
+<a name="L411"></a><tt class="py-lineno"> 411</tt>  <tt class="py-line"><tt class="py-docstring">          - `show_private_vars`: If false, then private variables</tt> </tt>
+<a name="L412"></a><tt class="py-lineno"> 412</tt>  <tt class="py-line"><tt class="py-docstring">            are filtered out of the attributes & operations lists.</tt> </tt>
+<a name="L413"></a><tt class="py-lineno"> 413</tt>  <tt class="py-line"><tt class="py-docstring">            (Default: *False*)</tt> </tt>
+<a name="L414"></a><tt class="py-lineno"> 414</tt>  <tt class="py-line"><tt class="py-docstring">          - `show_magic_vars`: If false, then magic variables</tt> </tt>
+<a name="L415"></a><tt class="py-lineno"> 415</tt>  <tt class="py-line"><tt class="py-docstring">            (such as ``__init__`` and ``__add__``) are filtered out of</tt> </tt>
+<a name="L416"></a><tt class="py-lineno"> 416</tt>  <tt class="py-line"><tt class="py-docstring">            the attributes & operations lists. (Default: *True*)</tt> </tt>
+<a name="L417"></a><tt class="py-lineno"> 417</tt>  <tt class="py-line"><tt class="py-docstring">          - `show_inherited_vars`: If false, then inherited variables</tt> </tt>
+<a name="L418"></a><tt class="py-lineno"> 418</tt>  <tt class="py-line"><tt class="py-docstring">            are filtered out of the attributes & operations lists.</tt> </tt>
+<a name="L419"></a><tt class="py-lineno"> 419</tt>  <tt class="py-line"><tt class="py-docstring">            (Default: *False*)</tt> </tt>
+<a name="L420"></a><tt class="py-lineno"> 420</tt>  <tt class="py-line"><tt class="py-docstring">          - `max_attributes`: The maximum number of attributes that</tt> </tt>
+<a name="L421"></a><tt class="py-lineno"> 421</tt>  <tt class="py-line"><tt class="py-docstring">            should be listed in the attribute box.  If the class has</tt> </tt>
+<a name="L422"></a><tt class="py-lineno"> 422</tt>  <tt class="py-line"><tt class="py-docstring">            more than this number of attributes, some will be</tt> </tt>
+<a name="L423"></a><tt class="py-lineno"> 423</tt>  <tt class="py-line"><tt class="py-docstring">            ellided.  Ellipsis is marked with ``'...'``.</tt> </tt>
+<a name="L424"></a><tt class="py-lineno"> 424</tt>  <tt class="py-line"><tt class="py-docstring">          - `max_operations`: The maximum number of operations that</tt> </tt>
+<a name="L425"></a><tt class="py-lineno"> 425</tt>  <tt class="py-line"><tt class="py-docstring">            should be listed in the operation box.</tt> </tt>
+<a name="L426"></a><tt class="py-lineno"> 426</tt>  <tt class="py-line"><tt class="py-docstring">          - `add_nodes_for_linked_attributes`: If true, then</tt> </tt>
+<a name="L427"></a><tt class="py-lineno"> 427</tt>  <tt class="py-line"><tt class="py-docstring">            `link_attributes()` will create new a collapsed node for</tt> </tt>
+<a name="L428"></a><tt class="py-lineno"> 428</tt>  <tt class="py-line"><tt class="py-docstring">            the types of a linked attributes if no node yet exists for</tt> </tt>
+<a name="L429"></a><tt class="py-lineno"> 429</tt>  <tt class="py-line"><tt class="py-docstring">            that type.</tt> </tt>
+<a name="L430"></a><tt class="py-lineno"> 430</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L431"></a><tt class="py-lineno"> 431</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">class_doc</tt><tt class="py-op">,</tt> <tt id="link-100" class="py-name" targets="Class epydoc.apidoc.ClassDoc=epydoc.apidoc.ClassDoc-class.html"><a title="epydoc.apidoc.ClassDoc" class="py-name" href="#" onclick="return doclink('link-100', 'ClassDoc', 'link-100');">Cla [...]
+<a name="L432"></a><tt class="py-lineno"> 432</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">TypeError</tt><tt class="py-op">(</tt><tt class="py-string">'Expected a ClassDoc as 1st argument'</tt><tt class="py-op">)</tt> </tt>
+<a name="L433"></a><tt class="py-lineno"> 433</tt>  <tt class="py-line">         </tt>
+<a name="L434"></a><tt class="py-lineno"> 434</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">class_doc</tt> <tt class="py-op">=</tt> <tt class="py-name">class_doc</tt> </tt>
+<a name="L435"></a><tt class="py-lineno"> 435</tt>  <tt class="py-line">        <tt class="py-string">"""The class represented by this node."""</tt> </tt>
+<a name="L436"></a><tt class="py-lineno"> 436</tt>  <tt class="py-line">         </tt>
+<a name="L437"></a><tt class="py-lineno"> 437</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">linker</tt> <tt class="py-op">=</tt> <tt class="py-name">linker</tt> </tt>
+<a name="L438"></a><tt class="py-lineno"> 438</tt>  <tt class="py-line">        <tt class="py-string">"""Used to look up URLs for classes."""</tt> </tt>
+<a name="L439"></a><tt class="py-lineno"> 439</tt>  <tt class="py-line">         </tt>
+<a name="L440"></a><tt class="py-lineno"> 440</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">context</tt> <tt class="py-op">=</tt> <tt class="py-name">context</tt> </tt>
+<a name="L441"></a><tt class="py-lineno"> 441</tt>  <tt class="py-line">        <tt class="py-string">"""The context in which the node will be drawn."""</tt> </tt>
+<a name="L442"></a><tt class="py-lineno"> 442</tt>  <tt class="py-line">         </tt>
+<a name="L443"></a><tt class="py-lineno"> 443</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bgcolor</tt> <tt class="py-op">=</tt> <tt class="py-name">bgcolor</tt> </tt>
+<a name="L444"></a><tt class="py-lineno"> 444</tt>  <tt class="py-line">        <tt class="py-string">"""The background color of the node."""</tt> </tt>
+<a name="L445"></a><tt class="py-lineno"> 445</tt>  <tt class="py-line">         </tt>
+<a name="L446"></a><tt class="py-lineno"> 446</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">options</tt> <tt class="py-op">=</tt> <tt class="py-name">options</tt> </tt>
+<a name="L447"></a><tt class="py-lineno"> 447</tt>  <tt class="py-line">        <tt class="py-string">"""Options used to control how the node is displayed."""</tt> </tt>
+<a name="L448"></a><tt class="py-lineno"> 448</tt>  <tt class="py-line"> </tt>
+<a name="L449"></a><tt class="py-lineno"> 449</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">collapsed</tt> <tt class="py-op">=</tt> <tt class="py-name">collapsed</tt> </tt>
+<a name="L450"></a><tt class="py-lineno"> 450</tt>  <tt class="py-line">        <tt class="py-string">"""If true, then draw this node as a simple box."""</tt> </tt>
+<a name="L451"></a><tt class="py-lineno"> 451</tt>  <tt class="py-line">         </tt>
+<a name="L452"></a><tt class="py-lineno"> 452</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">attributes</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L453"></a><tt class="py-lineno"> 453</tt>  <tt class="py-line">        <tt class="py-string">"""The list of VariableDocs for attributes"""</tt> </tt>
+<a name="L454"></a><tt class="py-lineno"> 454</tt>  <tt class="py-line">         </tt>
+<a name="L455"></a><tt class="py-lineno"> 455</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">operations</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L456"></a><tt class="py-lineno"> 456</tt>  <tt class="py-line">        <tt class="py-string">"""The list of VariableDocs for operations"""</tt> </tt>
+<a name="L457"></a><tt class="py-lineno"> 457</tt>  <tt class="py-line">         </tt>
+<a name="L458"></a><tt class="py-lineno"> 458</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">qualifiers</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L459"></a><tt class="py-lineno"> 459</tt>  <tt class="py-line">        <tt class="py-string">"""List of (key_label, port) tuples."""</tt> </tt>
+<a name="L460"></a><tt class="py-lineno"> 460</tt>  <tt class="py-line"> </tt>
+<a name="L461"></a><tt class="py-lineno"> 461</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">edges</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L462"></a><tt class="py-lineno"> 462</tt>  <tt class="py-line">        <tt class="py-string">"""List of edges used to represent this node's attributes.</tt> </tt>
+<a name="L463"></a><tt class="py-lineno"> 463</tt>  <tt class="py-line"><tt class="py-string">        These should not be added to the `DotGraph`; this node will</tt> </tt>
+<a name="L464"></a><tt class="py-lineno"> 464</tt>  <tt class="py-line"><tt class="py-string">        generate their dotfile code directly."""</tt> </tt>
+<a name="L465"></a><tt class="py-lineno"> 465</tt>  <tt class="py-line"> </tt>
+<a name="L466"></a><tt class="py-lineno"> 466</tt>  <tt class="py-line">        <tt class="py-comment"># Initialize operations & attributes lists.</tt> </tt>
+<a name="L467"></a><tt class="py-lineno"> 467</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">show_private</tt> <tt class="py-op">=</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'show_private_vars'</tt><tt class="py-op">,</tt> <tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
+<a name="L468"></a><tt class="py-lineno"> 468</tt>  <tt class="py-line">        <tt class="py-name">show_magic</tt> <tt class="py-op">=</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'show_magic_vars'</tt><tt class="py-op">,</tt> <tt class="py-name">True</tt><tt class="py-op">)</tt> </tt>
+<a name="L469"></a><tt class="py-lineno"> 469</tt>  <tt class="py-line">        <tt class="py-name">show_inherited</tt> <tt class="py-op">=</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'show_inherited_vars'</tt><tt class="py-op">,</tt> <tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
+<a name="L470"></a><tt class="py-lineno"> 470</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">var</tt> <tt class="py-keyword">in</tt> <tt class="py-name">class_doc</tt><tt class="py-op">.</tt><tt id="link-101" class="py-name" targets="Variable epydoc.apidoc.NamespaceDoc.sorted_variables=epydoc.apidoc.NamespaceDoc-class.html#sorted_variables"><a title="epydoc.apidoc.NamespaceDoc.sorted_variables" class="py-name" href="#" onclick="return doclink('link- [...]
+<a name="L471"></a><tt class="py-lineno"> 471</tt>  <tt class="py-line">            <tt id="link-102" class="py-name" targets="Variable epydoc.apidoc.VariableDoc.name=epydoc.apidoc.VariableDoc-class.html#name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-102', 'name', 'link-102');">name</a></tt> <tt class="py-op">=</tt> <tt class="py-name">var</tt><tt class="py-op">.</tt><tt id="link-103" class="py-name" targets="Variable epydoc.apidoc. [...]
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-103', 'canonical_name', 'link-103');">canonical_name</a></tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L472"></a><tt class="py-lineno"> 472</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-keyword">not</tt> <tt class="py-name">show_private</tt> <tt class="py-keyword">and</tt> <tt class="py-name">var</tt><tt class="py-op">.</tt><tt id="link-104" class="py-name" targets="Variable epydoc.apidoc.VariableDoc.is_public=epydoc.apidoc.VariableDoc-class.html#is_public"><a title="epydoc.apidoc.VariableDoc.is_ [...]
+<a name="L473"></a><tt class="py-lineno"> 473</tt>  <tt class="py-line">                <tt class="py-op">(</tt><tt class="py-keyword">not</tt> <tt class="py-name">show_magic</tt> <tt class="py-keyword">and</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">match</tt><tt class="py-op">(</tt><tt class="py-string">'__\w+__$'</tt><tt class="py-op">,</tt> <tt id="link-105" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="ret [...]
+<a name="L474"></a><tt class="py-lineno"> 474</tt>  <tt class="py-line">                <tt class="py-op">(</tt><tt class="py-keyword">not</tt> <tt class="py-name">show_inherited</tt> <tt class="py-keyword">and</tt> <tt class="py-name">var</tt><tt class="py-op">.</tt><tt id="link-106" class="py-name" targets="Method epydoc.apidoc.DocIndex.container()=epydoc.apidoc.DocIndex-class.html#container,Method epydoc.apidoc.DottedName.container()=epydoc.apidoc.DottedName-class.html#container,Varia [...]
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-106', 'container', 'link-106');">container</a></tt> <tt class="py-op">!=</tt> <tt class="py-name">class_doc</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L475"></a><tt class="py-lineno"> 475</tt>  <tt class="py-line">                <tt class="py-keyword">pass</tt> </tt>
+<a name="L476"></a><tt class="py-lineno"> 476</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">var</tt><tt class="py-op">.</tt><tt id="link-107" class="py-name" targets="Variable epydoc.apidoc.VariableDoc.value=epydoc.apidoc.VariableDoc-class.html#value"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-107', 'value', 'link-107');">value</a> [...]
+<a name="L477"></a><tt class="py-lineno"> 477</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">operations</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">var</tt><tt class="py-op">)</tt> </tt>
+<a name="L478"></a><tt class="py-lineno"> 478</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L479"></a><tt class="py-lineno"> 479</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">attributes</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">var</tt><tt class="py-op">)</tt> </tt>
+<a name="L480"></a><tt class="py-lineno"> 480</tt>  <tt class="py-line"> </tt>
+<a name="L481"></a><tt class="py-lineno"> 481</tt>  <tt class="py-line">        <tt class="py-comment"># Initialize our dot node settings.</tt> </tt>
+<a name="L482"></a><tt class="py-lineno"> 482</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">tooltip</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-109" class="py-name" targets="Class Method epydoc.docwriter.dotgraph.DotGraphUmlClassNode._summary()=epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_summary"><a title="epydoc.docwriter.dotgraph.DotGraphUmlClassNode._summary" class="py-name" href="#" [...]
+<a name="L483"></a><tt class="py-lineno"> 483</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">tooltip</tt><tt class="py-op">:</tt> </tt>
+<a name="L484"></a><tt class="py-lineno"> 484</tt>  <tt class="py-line">            <tt class="py-comment"># dot chokes on a \n in the attribute...</tt> </tt>
+<a name="L485"></a><tt class="py-lineno"> 485</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">tooltip</tt> <tt class="py-op">=</tt> <tt class="py-string">" "</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">tooltip</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L486"></a><tt class="py-lineno"> 486</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L487"></a><tt class="py-lineno"> 487</tt>  <tt class="py-line">            <tt class="py-name">tooltip</tt> <tt class="py-op">=</tt> <tt class="py-name">class_doc</tt><tt class="py-op">.</tt><tt id="link-110" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-110', 'canonical_name', 'link-103');">canonical_name</a></tt> </tt>
+<a name="L488"></a><tt class="py-lineno"> 488</tt>  <tt class="py-line">        <tt id="link-111" class="py-name"><a title="epydoc.docwriter.dotgraph.DotGraphNode" class="py-name" href="#" onclick="return doclink('link-111', 'DotGraphNode', 'link-92');">DotGraphNode</a></tt><tt class="py-op">.</tt><tt id="link-112" class="py-name" targets="Method epydoc.apidoc.APIDoc.__init__()=epydoc.apidoc.APIDoc-class.html#__init__,Method epydoc.apidoc.DocIndex.__init__()=epydoc.apidoc.DocIndex-class. [...]
+epydoc.apidoc.DocIndex.__init__
+epydoc.apidoc.DottedName.__init__
+epydoc.apidoc.NamespaceDoc.__init__
+epydoc.apidoc.VariableDoc.__init__
+epydoc.apidoc._Sentinel.__init__
+epydoc.checker.DocChecker.__init__
+epydoc.cli.ConsoleLogger.__init__
+epydoc.cli.HTMLLogger.__init__
+epydoc.cli.TerminalController.__init__
+epydoc.cli.UnifiedProgressConsoleLogger.__init__
+epydoc.docbuilder.BuildOptions.__init__
+epydoc.docbuilder._ProgressEstimator.__init__
+epydoc.docintrospecter._DevNull.__init__
+epydoc.docstringparser.DocstringField.__init__
+epydoc.docwriter.dotgraph.DotGraph.__init__
+epydoc.docwriter.dotgraph.DotGraphEdge.__init__
+epydoc.docwriter.dotgraph.DotGraphNode.__init__
+epydoc.docwriter.dotgraph.DotGraphUmlClassNode.__init__
+epydoc.docwriter.dotgraph.DotGraphUmlModuleNode.__init__
+epydoc.docwriter.html.HTMLWriter.__init__
+epydoc.docwriter.html._HTMLDocstringLinker.__init__
+epydoc.docwriter.html_colorize.PythonSourceColorizer.__init__
+epydoc.docwriter.latex.LatexWriter.__init__
+epydoc.docwriter.xlink.ApiLinkReader.__init__
+epydoc.docwriter.xlink.DocUrlGenerator.__init__
+epydoc.gui.EpydocGUI.__init__
+epydoc.gui.GUILogger.__init__
+epydoc.log.SimpleLogger.__init__
+epydoc.markup.ConcatenatedDocstring.__init__
+epydoc.markup.Field.__init__
+epydoc.markup.ParseError.__init__
+epydoc.markup.epytext.ColorizingError.__init__
+epydoc.markup.epytext.Element.__init__
+epydoc.markup.epytext.ParsedEpytextDocstring.__init__
+epydoc.markup.epytext.Token.__init__
+epydoc.markup.javadoc.ParsedJavadocDocstring.__init__
+epydoc.markup.plaintext.ParsedPlaintextDocstring.__init__
+epydoc.markup.pyval_repr.ColorizedPyvalRepr.__init__
+epydoc.markup.pyval_repr.PyvalColorizer.__init__
+epydoc.markup.pyval_repr._ColorizerState.__init__
+epydoc.markup.restructuredtext.ParsedRstDocstring.__init__
+epydoc.markup.restructuredtext._DocumentPseudoWriter.__init__
+epydoc.markup.restructuredtext._EpydocHTMLTranslator.__init__
+epydoc.markup.restructuredtext._EpydocLaTeXTranslator.__init__
+epydoc.markup.restructuredtext._EpydocReader.__init__
+epydoc.markup.restructuredtext._SplitFieldsTranslator.__init__
+epydoc.markup.restructuredtext._SummaryExtractor.__init__
+epydoc.markup.restructuredtext._TermsExtractor.__init__
+epydoc.markup.restructuredtext.dotgraph.__init__
+epydoc.util.RunSubprocessError.__init__" class="py-name" href="#" onclick="return doclink('link-112', '__init__', 'link-112');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">tooltip</tt><tt class="py-op">=</tt><tt class="py-name">tooltip</tt><tt class="py-op">,</tt> </tt>
+<a name="L489"></a><tt class="py-lineno"> 489</tt>  <tt class="py-line">                              <tt class="py-name">width</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">height</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">shape</tt><tt class="py-op">=</tt><tt class="py-string">'plaintext'</tt><tt class="py-op">,</tt> </tt>
+<a name="L490"></a><tt class="py-lineno"> 490</tt>  <tt class="py-line">                              <tt id="link-113" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.href()=epydoc.docwriter.html.HTMLWriter-class.html#href"><a title="epydoc.docwriter.html.HTMLWriter.href" class="py-name" href="#" onclick="return doclink('link-113', 'href', 'link-113');">href</a></tt><tt class="py-op">=</tt><tt class="py-name">linker</tt><tt class="py-op">.</tt><tt id="link-114" class="p [...]
+</div><a name="L491"></a><tt class="py-lineno"> 491</tt>  <tt class="py-line"> </tt>
+<a name="L492"></a><tt class="py-lineno"> 492</tt>  <tt class="py-line">    <tt class="py-comment">#/////////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L493"></a><tt class="py-lineno"> 493</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#{ Attribute Linking</tt> </tt>
+<a name="L494"></a><tt class="py-lineno"> 494</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#/////////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L495"></a><tt class="py-lineno"> 495</tt>  <tt class="py-line"><tt class="py-comment"></tt>     </tt>
+<a name="L496"></a><tt class="py-lineno"> 496</tt>  <tt class="py-line">    <tt id="link-116" class="py-name" targets="Variable epydoc.docwriter.dotgraph.DotGraphUmlClassNode.SIMPLE_TYPE_RE=epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#SIMPLE_TYPE_RE"><a title="epydoc.docwriter.dotgraph.DotGraphUmlClassNode.SIMPLE_TYPE_RE" class="py-name" href="#" onclick="return doclink('link-116', 'SIMPLE_TYPE_RE', 'link-116');">SIMPLE_TYPE_RE</a></tt> <tt class="py-op">=</tt> <tt class="py [...]
+<a name="L497"></a><tt class="py-lineno"> 497</tt>  <tt class="py-line">        <tt class="py-string">r'^([\w\.]+)$'</tt><tt class="py-op">)</tt> </tt>
+<a name="L498"></a><tt class="py-lineno"> 498</tt>  <tt class="py-line">    <tt class="py-string">"""A regular expression that matches descriptions of simple types."""</tt> </tt>
+<a name="L499"></a><tt class="py-lineno"> 499</tt>  <tt class="py-line">     </tt>
+<a name="L500"></a><tt class="py-lineno"> 500</tt>  <tt class="py-line">    <tt id="link-117" class="py-name" targets="Variable epydoc.docwriter.dotgraph.DotGraphUmlClassNode.COLLECTION_TYPE_RE=epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#COLLECTION_TYPE_RE"><a title="epydoc.docwriter.dotgraph.DotGraphUmlClassNode.COLLECTION_TYPE_RE" class="py-name" href="#" onclick="return doclink('link-117', 'COLLECTION_TYPE_RE', 'link-117');">COLLECTION_TYPE_RE</a></tt> <tt class="py-op"> [...]
+<a name="L501"></a><tt class="py-lineno"> 501</tt>  <tt class="py-line">        <tt class="py-string">r'^(list|set|sequence|tuple|collection) of ([\w\.]+)$'</tt><tt class="py-op">)</tt> </tt>
+<a name="L502"></a><tt class="py-lineno"> 502</tt>  <tt class="py-line">    <tt class="py-string">"""A regular expression that matches descriptions of collection types."""</tt> </tt>
+<a name="L503"></a><tt class="py-lineno"> 503</tt>  <tt class="py-line"> </tt>
+<a name="L504"></a><tt class="py-lineno"> 504</tt>  <tt class="py-line">    <tt id="link-118" class="py-name" targets="Variable epydoc.docwriter.dotgraph.DotGraphUmlClassNode.MAPPING_TYPE_RE=epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#MAPPING_TYPE_RE"><a title="epydoc.docwriter.dotgraph.DotGraphUmlClassNode.MAPPING_TYPE_RE" class="py-name" href="#" onclick="return doclink('link-118', 'MAPPING_TYPE_RE', 'link-118');">MAPPING_TYPE_RE</a></tt> <tt class="py-op">=</tt> <tt clas [...]
+<a name="L505"></a><tt class="py-lineno"> 505</tt>  <tt class="py-line">        <tt class="py-string">r'^(dict|dictionary|map|mapping) from ([\w\.]+) to ([\w\.]+)$'</tt><tt class="py-op">)</tt> </tt>
+<a name="L506"></a><tt class="py-lineno"> 506</tt>  <tt class="py-line">    <tt class="py-string">"""A regular expression that matches descriptions of mapping types."""</tt> </tt>
+<a name="L507"></a><tt class="py-lineno"> 507</tt>  <tt class="py-line"> </tt>
+<a name="L508"></a><tt class="py-lineno"> 508</tt>  <tt class="py-line">    <tt id="link-119" class="py-name" targets="Variable epydoc.docwriter.dotgraph.DotGraphUmlClassNode.MAPPING_TO_COLLECTION_TYPE_RE=epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#MAPPING_TO_COLLECTION_TYPE_RE"><a title="epydoc.docwriter.dotgraph.DotGraphUmlClassNode.MAPPING_TO_COLLECTION_TYPE_RE" class="py-name" href="#" onclick="return doclink('link-119', 'MAPPING_TO_COLLECTION_TYPE_RE', 'link-119');">MA [...]
+<a name="L509"></a><tt class="py-lineno"> 509</tt>  <tt class="py-line">        <tt class="py-string">r'^(dict|dictionary|map|mapping) from ([\w\.]+) to '</tt> </tt>
+<a name="L510"></a><tt class="py-lineno"> 510</tt>  <tt class="py-line">        <tt class="py-string">r'(list|set|sequence|tuple|collection) of ([\w\.]+)$'</tt><tt class="py-op">)</tt> </tt>
+<a name="L511"></a><tt class="py-lineno"> 511</tt>  <tt class="py-line">    <tt class="py-string">"""A regular expression that matches descriptions of mapping types</tt> </tt>
+<a name="L512"></a><tt class="py-lineno"> 512</tt>  <tt class="py-line"><tt class="py-string">    whose value type is a collection."""</tt> </tt>
+<a name="L513"></a><tt class="py-lineno"> 513</tt>  <tt class="py-line"> </tt>
+<a name="L514"></a><tt class="py-lineno"> 514</tt>  <tt class="py-line">    <tt id="link-120" class="py-name" targets="Variable epydoc.docwriter.dotgraph.DotGraphUmlClassNode.OPTIONAL_TYPE_RE=epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#OPTIONAL_TYPE_RE"><a title="epydoc.docwriter.dotgraph.DotGraphUmlClassNode.OPTIONAL_TYPE_RE" class="py-name" href="#" onclick="return doclink('link-120', 'OPTIONAL_TYPE_RE', 'link-120');">OPTIONAL_TYPE_RE</a></tt> <tt class="py-op">=</tt> <tt [...]
+<a name="L515"></a><tt class="py-lineno"> 515</tt>  <tt class="py-line">        <tt class="py-string">r'^(None or|optional) ([\w\.]+)$|^([\w\.]+) or None$'</tt><tt class="py-op">)</tt> </tt>
+<a name="L516"></a><tt class="py-lineno"> 516</tt>  <tt class="py-line">    <tt class="py-string">"""A regular expression that matches descriptions of optional types."""</tt> </tt>
+<a name="L517"></a><tt class="py-lineno"> 517</tt>  <tt class="py-line">     </tt>
+<a name="DotGraphUmlClassNode.link_attributes"></a><div id="DotGraphUmlClassNode.link_attributes-def"><a name="L518"></a><tt class="py-lineno"> 518</tt> <a class="py-toggle" href="#" id="DotGraphUmlClassNode.link_attributes-toggle" onclick="return toggle('DotGraphUmlClassNode.link_attributes');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#link_attributes">link_attributes</a><tt class=" [...]
+</div><div id="DotGraphUmlClassNode.link_attributes-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DotGraphUmlClassNode.link_attributes-expanded"><a name="L519"></a><tt class="py-lineno"> 519</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L520"></a><tt class="py-lineno"> 520</tt>  <tt class="py-line"><tt class="py-docstring">        Convert any attributes with type descriptions corresponding to</tt> </tt>
+<a name="L521"></a><tt class="py-lineno"> 521</tt>  <tt class="py-line"><tt class="py-docstring">        documented classes to edges.  The following type descriptions</tt> </tt>
+<a name="L522"></a><tt class="py-lineno"> 522</tt>  <tt class="py-line"><tt class="py-docstring">        are currently handled:</tt> </tt>
+<a name="L523"></a><tt class="py-lineno"> 523</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L524"></a><tt class="py-lineno"> 524</tt>  <tt class="py-line"><tt class="py-docstring">          - Dotted names: Create an attribute edge to the named type,</tt> </tt>
+<a name="L525"></a><tt class="py-lineno"> 525</tt>  <tt class="py-line"><tt class="py-docstring">            labelled with the variable name.</tt> </tt>
+<a name="L526"></a><tt class="py-lineno"> 526</tt>  <tt class="py-line"><tt class="py-docstring">          - Collections: Create an attribute edge to the named type,</tt> </tt>
+<a name="L527"></a><tt class="py-lineno"> 527</tt>  <tt class="py-line"><tt class="py-docstring">            labelled with the variable name, and marked with '*' at the</tt> </tt>
+<a name="L528"></a><tt class="py-lineno"> 528</tt>  <tt class="py-line"><tt class="py-docstring">            type end of the edge.</tt> </tt>
+<a name="L529"></a><tt class="py-lineno"> 529</tt>  <tt class="py-line"><tt class="py-docstring">          - Mappings: Create an attribute edge to the named type,</tt> </tt>
+<a name="L530"></a><tt class="py-lineno"> 530</tt>  <tt class="py-line"><tt class="py-docstring">            labelled with the variable name, connected to the class by</tt> </tt>
+<a name="L531"></a><tt class="py-lineno"> 531</tt>  <tt class="py-line"><tt class="py-docstring">            a qualifier box that contains the key type description.</tt> </tt>
+<a name="L532"></a><tt class="py-lineno"> 532</tt>  <tt class="py-line"><tt class="py-docstring">          - Optional: Create an attribute edge to the named type,</tt> </tt>
+<a name="L533"></a><tt class="py-lineno"> 533</tt>  <tt class="py-line"><tt class="py-docstring">            labelled with the variable name, and marked with '0..1' at</tt> </tt>
+<a name="L534"></a><tt class="py-lineno"> 534</tt>  <tt class="py-line"><tt class="py-docstring">            the type end of the edge.</tt> </tt>
+<a name="L535"></a><tt class="py-lineno"> 535</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L536"></a><tt class="py-lineno"> 536</tt>  <tt class="py-line"><tt class="py-docstring">        The edges created by `link_attributes()` are handled internally</tt> </tt>
+<a name="L537"></a><tt class="py-lineno"> 537</tt>  <tt class="py-line"><tt class="py-docstring">        by `DotGraphUmlClassNode`; they should *not* be added directly</tt> </tt>
+<a name="L538"></a><tt class="py-lineno"> 538</tt>  <tt class="py-line"><tt class="py-docstring">        to the `DotGraph`.</tt> </tt>
+<a name="L539"></a><tt class="py-lineno"> 539</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L540"></a><tt class="py-lineno"> 540</tt>  <tt class="py-line"><tt class="py-docstring">        :param nodes: A dictionary mapping from `ClassDoc`\s to</tt> </tt>
+<a name="L541"></a><tt class="py-lineno"> 541</tt>  <tt class="py-line"><tt class="py-docstring">            `DotGraphUmlClassNode`\s, used to look up the nodes for</tt> </tt>
+<a name="L542"></a><tt class="py-lineno"> 542</tt>  <tt class="py-line"><tt class="py-docstring">            attribute types.  If the ``add_nodes_for_linked_attributes``</tt> </tt>
+<a name="L543"></a><tt class="py-lineno"> 543</tt>  <tt class="py-line"><tt class="py-docstring">            option is used, then new nodes will be added to this</tt> </tt>
+<a name="L544"></a><tt class="py-lineno"> 544</tt>  <tt class="py-line"><tt class="py-docstring">            dictionary for any types that are not already listed.</tt> </tt>
+<a name="L545"></a><tt class="py-lineno"> 545</tt>  <tt class="py-line"><tt class="py-docstring">            These added nodes must be added to the `DotGraph`.</tt> </tt>
+<a name="L546"></a><tt class="py-lineno"> 546</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L547"></a><tt class="py-lineno"> 547</tt>  <tt class="py-line">        <tt class="py-comment"># Try to convert each attribute var into a graph edge.  If</tt> </tt>
+<a name="L548"></a><tt class="py-lineno"> 548</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># _link_attribute returns true, then it succeeded, so remove</tt> </tt>
+<a name="L549"></a><tt class="py-lineno"> 549</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># that var from our attribute list; otherwise, leave that var</tt> </tt>
+<a name="L550"></a><tt class="py-lineno"> 550</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># in our attribute list.</tt> </tt>
+<a name="L551"></a><tt class="py-lineno"> 551</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">attributes</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">var</tt> <tt class="py-keyword">for</tt> <tt class="py-name">var</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">attributes</tt> </tt>
+<a name="L552"></a><tt class="py-lineno"> 552</tt>  <tt class="py-line">                           <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-121" class="py-name" targets="Method epydoc.docwriter.dotgraph.DotGraphUmlClassNode._link_attribute()=epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_link_attribute"><a title="epydoc.docwriter.dotgraph.DotGraphUmlClassNode._link_attribute" class="py-nam [...]
+</div><a name="L553"></a><tt class="py-lineno"> 553</tt>  <tt class="py-line"> </tt>
+<a name="DotGraphUmlClassNode._link_attribute"></a><div id="DotGraphUmlClassNode._link_attribute-def"><a name="L554"></a><tt class="py-lineno"> 554</tt> <a class="py-toggle" href="#" id="DotGraphUmlClassNode._link_attribute-toggle" onclick="return toggle('DotGraphUmlClassNode._link_attribute');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_link_attribute">_link_attribute</a><tt class=" [...]
+</div><div id="DotGraphUmlClassNode._link_attribute-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DotGraphUmlClassNode._link_attribute-expanded"><a name="L555"></a><tt class="py-lineno"> 555</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L556"></a><tt class="py-lineno"> 556</tt>  <tt class="py-line"><tt class="py-docstring">        Helper for `link_attributes()`: try to convert the attribute</tt> </tt>
+<a name="L557"></a><tt class="py-lineno"> 557</tt>  <tt class="py-line"><tt class="py-docstring">        variable `var` into an edge, and add that edge to</tt> </tt>
+<a name="L558"></a><tt class="py-lineno"> 558</tt>  <tt class="py-line"><tt class="py-docstring">        `self.edges`.  Return ``True`` iff the variable was</tt> </tt>
+<a name="L559"></a><tt class="py-lineno"> 559</tt>  <tt class="py-line"><tt class="py-docstring">        successfully converted to an edge (in which case, it should be</tt> </tt>
+<a name="L560"></a><tt class="py-lineno"> 560</tt>  <tt class="py-line"><tt class="py-docstring">        removed from the attributes list).</tt> </tt>
+<a name="L561"></a><tt class="py-lineno"> 561</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L562"></a><tt class="py-lineno"> 562</tt>  <tt class="py-line">        <tt id="link-122" class="py-name" targets="Variable epydoc.apidoc.PropertyDoc.type_descr=epydoc.apidoc.PropertyDoc-class.html#type_descr,Variable epydoc.apidoc.VariableDoc.type_descr=epydoc.apidoc.VariableDoc-class.html#type_descr,Method epydoc.docwriter.html.HTMLWriter.type_descr()=epydoc.docwriter.html.HTMLWriter-class.html#type_descr"><a title="epydoc.apidoc.PropertyDoc.type_descr
+epydoc.apidoc.VariableDoc.type_descr
+epydoc.docwriter.html.HTMLWriter.type_descr" class="py-name" href="#" onclick="return doclink('link-122', 'type_descr', 'link-122');">type_descr</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-123" class="py-name" targets="Method epydoc.docwriter.dotgraph.DotGraphUmlClassNode._type_descr()=epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_type_descr"><a title="epydoc.docwriter.dotgraph.DotGraphUmlClassNode._type_descr" class="p [...]
+<a name="L563"></a><tt class="py-lineno"> 563</tt>  <tt class="py-line">         </tt>
+<a name="L564"></a><tt class="py-lineno"> 564</tt>  <tt class="py-line">        <tt class="py-comment"># Simple type.</tt> </tt>
+<a name="L565"></a><tt class="py-lineno"> 565</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-126" class="py-name"><a title="epydoc.docwriter.dotgraph.DotGraphUmlClassNode.SIMPLE_TYPE_RE" class="py-name" href="#" onclick="return doclink('link-126', 'SIMPLE_TYPE_RE', 'link-116');">SIMPLE_TYPE_RE</a></tt><tt class="py-op">.</tt><tt class="py-name">match</tt><t [...]
+epydoc.apidoc.VariableDoc.type_descr
+epydoc.docwriter.html.HTMLWriter.type_descr" class="py-name" href="#" onclick="return doclink('link-127', 'type_descr', 'link-122');">type_descr</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L566"></a><tt class="py-lineno"> 566</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">m</tt> <tt class="py-keyword">and</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-128" class="py-name" targets="Method epydoc.docwriter.dotgraph.DotGraphUmlClassNode._add_attribute_edge()=epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_add_attribute_edge"><a title="epydoc.docwriter.dotgraph.DotGraphUmlClassNode._add_attribute [...]
+<a name="L567"></a><tt class="py-lineno"> 567</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
+<a name="L568"></a><tt class="py-lineno"> 568</tt>  <tt class="py-line"> </tt>
+<a name="L569"></a><tt class="py-lineno"> 569</tt>  <tt class="py-line">        <tt class="py-comment"># Collection type.</tt> </tt>
+<a name="L570"></a><tt class="py-lineno"> 570</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-129" class="py-name"><a title="epydoc.docwriter.dotgraph.DotGraphUmlClassNode.COLLECTION_TYPE_RE" class="py-name" href="#" onclick="return doclink('link-129', 'COLLECTION_TYPE_RE', 'link-117');">COLLECTION_TYPE_RE</a></tt><tt class="py-op">.</tt><tt class="py-name"> [...]
+epydoc.apidoc.VariableDoc.type_descr
+epydoc.docwriter.html.HTMLWriter.type_descr" class="py-name" href="#" onclick="return doclink('link-130', 'type_descr', 'link-122');">type_descr</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L571"></a><tt class="py-lineno"> 571</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">m</tt> <tt class="py-keyword">and</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-131" class="py-name"><a title="epydoc.docwriter.dotgraph.DotGraphUmlClassNode._add_attribute_edge" class="py-name" href="#" onclick="return doclink('link-131', '_add_attribute_edge', 'link-128');">_add_attribute_edge</a></tt><tt class="py-op">(</tt><tt cla [...]
+<a name="L572"></a><tt class="py-lineno"> 572</tt>  <tt class="py-line">                                          <tt class="py-name">headlabel</tt><tt class="py-op">=</tt><tt class="py-string">'*'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L573"></a><tt class="py-lineno"> 573</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
+<a name="L574"></a><tt class="py-lineno"> 574</tt>  <tt class="py-line"> </tt>
+<a name="L575"></a><tt class="py-lineno"> 575</tt>  <tt class="py-line">        <tt class="py-comment"># Optional type.</tt> </tt>
+<a name="L576"></a><tt class="py-lineno"> 576</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-132" class="py-name"><a title="epydoc.docwriter.dotgraph.DotGraphUmlClassNode.OPTIONAL_TYPE_RE" class="py-name" href="#" onclick="return doclink('link-132', 'OPTIONAL_TYPE_RE', 'link-120');">OPTIONAL_TYPE_RE</a></tt><tt class="py-op">.</tt><tt class="py-name">match< [...]
+epydoc.apidoc.VariableDoc.type_descr
+epydoc.docwriter.html.HTMLWriter.type_descr" class="py-name" href="#" onclick="return doclink('link-133', 'type_descr', 'link-122');">type_descr</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L577"></a><tt class="py-lineno"> 577</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">m</tt> <tt class="py-keyword">and</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-134" class="py-name"><a title="epydoc.docwriter.dotgraph.DotGraphUmlClassNode._add_attribute_edge" class="py-name" href="#" onclick="return doclink('link-134', '_add_attribute_edge', 'link-128');">_add_attribute_edge</a></tt><tt class="py-op">(</tt><tt cla [...]
+<a name="L578"></a><tt class="py-lineno"> 578</tt>  <tt class="py-line">                                          <tt class="py-name">headlabel</tt><tt class="py-op">=</tt><tt class="py-string">'0..1'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L579"></a><tt class="py-lineno"> 579</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
+<a name="L580"></a><tt class="py-lineno"> 580</tt>  <tt class="py-line">                 </tt>
+<a name="L581"></a><tt class="py-lineno"> 581</tt>  <tt class="py-line">        <tt class="py-comment"># Mapping type.</tt> </tt>
+<a name="L582"></a><tt class="py-lineno"> 582</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-135" class="py-name"><a title="epydoc.docwriter.dotgraph.DotGraphUmlClassNode.MAPPING_TYPE_RE" class="py-name" href="#" onclick="return doclink('link-135', 'MAPPING_TYPE_RE', 'link-118');">MAPPING_TYPE_RE</a></tt><tt class="py-op">.</tt><tt class="py-name">match</tt [...]
+epydoc.apidoc.VariableDoc.type_descr
+epydoc.docwriter.html.HTMLWriter.type_descr" class="py-name" href="#" onclick="return doclink('link-136', 'type_descr', 'link-122');">type_descr</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L583"></a><tt class="py-lineno"> 583</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">m</tt><tt class="py-op">:</tt> </tt>
+<a name="L584"></a><tt class="py-lineno"> 584</tt>  <tt class="py-line">            <tt class="py-name">port</tt> <tt class="py-op">=</tt> <tt class="py-string">'qualifier_%s'</tt> <tt class="py-op">%</tt> <tt class="py-name">var</tt><tt class="py-op">.</tt><tt id="link-137" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-137', 'name', 'link-102');">name</a></tt> </tt>
+<a name="L585"></a><tt class="py-lineno"> 585</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-138" class="py-name"><a title="epydoc.docwriter.dotgraph.DotGraphUmlClassNode._add_attribute_edge" class="py-name" href="#" onclick="return doclink('link-138', '_add_attribute_edge', 'link-128');">_add_attribute_edge</a></tt><tt class="py-op">(</tt><tt class="py-name">var</tt><tt class="py-op">,</tt> <tt class [...]
+<a name="L586"></a><tt class="py-lineno"> 586</tt>  <tt class="py-line">                                        <tt class="py-name">tailport</tt><tt class="py-op">=</tt><tt class="py-string">'%s:e'</tt> <tt class="py-op">%</tt> <tt class="py-name">port</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L587"></a><tt class="py-lineno"> 587</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">qualifiers</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt> <tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">.</tt><tt class="py-name">group</tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">port</tt><t [...]
+<a name="L588"></a><tt class="py-lineno"> 588</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
+<a name="L589"></a><tt class="py-lineno"> 589</tt>  <tt class="py-line"> </tt>
+<a name="L590"></a><tt class="py-lineno"> 590</tt>  <tt class="py-line">        <tt class="py-comment"># Mapping to collection type.</tt> </tt>
+<a name="L591"></a><tt class="py-lineno"> 591</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-139" class="py-name"><a title="epydoc.docwriter.dotgraph.DotGraphUmlClassNode.MAPPING_TO_COLLECTION_TYPE_RE" class="py-name" href="#" onclick="return doclink('link-139', 'MAPPING_TO_COLLECTION_TYPE_RE', 'link-119');">MAPPING_TO_COLLECTION_TYPE_RE</a></tt><tt class=" [...]
+epydoc.apidoc.VariableDoc.type_descr
+epydoc.docwriter.html.HTMLWriter.type_descr" class="py-name" href="#" onclick="return doclink('link-140', 'type_descr', 'link-122');">type_descr</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L592"></a><tt class="py-lineno"> 592</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">m</tt><tt class="py-op">:</tt> </tt>
+<a name="L593"></a><tt class="py-lineno"> 593</tt>  <tt class="py-line">            <tt class="py-name">port</tt> <tt class="py-op">=</tt> <tt class="py-string">'qualifier_%s'</tt> <tt class="py-op">%</tt> <tt class="py-name">var</tt><tt class="py-op">.</tt><tt id="link-141" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-141', 'name', 'link-102');">name</a></tt> </tt>
+<a name="L594"></a><tt class="py-lineno"> 594</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-142" class="py-name"><a title="epydoc.docwriter.dotgraph.DotGraphUmlClassNode._add_attribute_edge" class="py-name" href="#" onclick="return doclink('link-142', '_add_attribute_edge', 'link-128');">_add_attribute_edge</a></tt><tt class="py-op">(</tt><tt class="py-name">var</tt><tt class="py-op">,</tt> <tt class [...]
+<a name="L595"></a><tt class="py-lineno"> 595</tt>  <tt class="py-line">                                        <tt class="py-name">tailport</tt><tt class="py-op">=</tt><tt class="py-string">'%s:e'</tt> <tt class="py-op">%</tt> <tt class="py-name">port</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L596"></a><tt class="py-lineno"> 596</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">qualifiers</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt> <tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">.</tt><tt class="py-name">group</tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">port</tt><t [...]
+<a name="L597"></a><tt class="py-lineno"> 597</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
+<a name="L598"></a><tt class="py-lineno"> 598</tt>  <tt class="py-line"> </tt>
+<a name="L599"></a><tt class="py-lineno"> 599</tt>  <tt class="py-line">        <tt class="py-comment"># We were unable to link this attribute.</tt> </tt>
+<a name="L600"></a><tt class="py-lineno"> 600</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
+</div><a name="L601"></a><tt class="py-lineno"> 601</tt>  <tt class="py-line"> </tt>
+<a name="DotGraphUmlClassNode._add_attribute_edge"></a><div id="DotGraphUmlClassNode._add_attribute_edge-def"><a name="L602"></a><tt class="py-lineno"> 602</tt> <a class="py-toggle" href="#" id="DotGraphUmlClassNode._add_attribute_edge-toggle" onclick="return toggle('DotGraphUmlClassNode._add_attribute_edge');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_add_attribute_edge">_add_attri [...]
+</div><div id="DotGraphUmlClassNode._add_attribute_edge-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DotGraphUmlClassNode._add_attribute_edge-expanded"><a name="L603"></a><tt class="py-lineno"> 603</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L604"></a><tt class="py-lineno"> 604</tt>  <tt class="py-line"><tt class="py-docstring">        Helper for `link_attributes()`: try to add an edge for the</tt> </tt>
+<a name="L605"></a><tt class="py-lineno"> 605</tt>  <tt class="py-line"><tt class="py-docstring">        given attribute variable `var`.  Return ``True`` if</tt> </tt>
+<a name="L606"></a><tt class="py-lineno"> 606</tt>  <tt class="py-line"><tt class="py-docstring">        successful.</tt> </tt>
+<a name="L607"></a><tt class="py-lineno"> 607</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L608"></a><tt class="py-lineno"> 608</tt>  <tt class="py-line">        <tt class="py-comment"># Use the type string to look up a corresponding ValueDoc.</tt> </tt>
+<a name="L609"></a><tt class="py-lineno"> 609</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">type_doc</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">linker</tt><tt class="py-op">.</tt><tt class="py-name">docindex</tt><tt class="py-op">.</tt><tt id="link-143" class="py-name" targets="Method epydoc.apidoc.DocIndex.find()=epydoc.apidoc.DocIndex-class.html#find"><a title="epydoc.apidoc.DocIndex.find" c [...]
+<a name="L610"></a><tt class="py-lineno"> 610</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">type_doc</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
+<a name="L611"></a><tt class="py-lineno"> 611</tt>  <tt class="py-line"> </tt>
+<a name="L612"></a><tt class="py-lineno"> 612</tt>  <tt class="py-line">        <tt class="py-comment"># Make sure the type is a class.</tt> </tt>
+<a name="L613"></a><tt class="py-lineno"> 613</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">type_doc</tt><tt class="py-op">,</tt> <tt id="link-144" class="py-name"><a title="epydoc.apidoc.ClassDoc" class="py-name" href="#" onclick="return doclink('link-144', 'ClassDoc', 'link-100');">ClassDoc</a></tt><tt class="py-op">)</tt><tt clas [...]
+<a name="L614"></a><tt class="py-lineno"> 614</tt>  <tt class="py-line"> </tt>
+<a name="L615"></a><tt class="py-lineno"> 615</tt>  <tt class="py-line">        <tt class="py-comment"># Get the type ValueDoc's node.  If it doesn't have one (and</tt> </tt>
+<a name="L616"></a><tt class="py-lineno"> 616</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># add_nodes_for_linked_attributes=True), then create it.</tt> </tt>
+<a name="L617"></a><tt class="py-lineno"> 617</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">type_node</tt> <tt class="py-op">=</tt> <tt class="py-name">nodes</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-name">type_doc</tt><tt class="py-op">)</tt> </tt>
+<a name="L618"></a><tt class="py-lineno"> 618</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">type_node</tt><tt class="py-op">:</tt> </tt>
+<a name="L619"></a><tt class="py-lineno"> 619</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'add_nodes_for_linked_attributes'</tt><tt class="py-op">,</tt> <tt class="py-name">True</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L620"></a><tt class="py-lineno"> 620</tt>  <tt class="py-line">                <tt class="py-name">type_node</tt> <tt class="py-op">=</tt> <tt id="link-145" class="py-name" targets="Class epydoc.docwriter.dotgraph.DotGraphUmlClassNode=epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html"><a title="epydoc.docwriter.dotgraph.DotGraphUmlClassNode" class="py-name" href="#" onclick="return doclink('link-145', 'DotGraphUmlClassNode', 'link-145');">DotGraphUmlClassNode</a></tt><tt [...]
+<a name="L621"></a><tt class="py-lineno"> 621</tt>  <tt class="py-line">                                                 <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">context</tt><tt class="py-op">,</tt> <tt class="py-name">collapsed</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt>
+<a name="L622"></a><tt class="py-lineno"> 622</tt>  <tt class="py-line">                <tt class="py-name">nodes</tt><tt class="py-op">[</tt><tt class="py-name">type_doc</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">type_node</tt> </tt>
+<a name="L623"></a><tt class="py-lineno"> 623</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L624"></a><tt class="py-lineno"> 624</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
+<a name="L625"></a><tt class="py-lineno"> 625</tt>  <tt class="py-line"> </tt>
+<a name="L626"></a><tt class="py-lineno"> 626</tt>  <tt class="py-line">        <tt class="py-comment"># Add an edge from self to the target type node.</tt> </tt>
+<a name="L627"></a><tt class="py-lineno"> 627</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># [xx] should I set constraint=false here?</tt> </tt>
+<a name="L628"></a><tt class="py-lineno"> 628</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">attribs</tt><tt class="py-op">.</tt><tt class="py-name">setdefault</tt><tt class="py-op">(</tt><tt class="py-string">'headport'</tt><tt class="py-op">,</tt> <tt class="py-string">'body'</tt><tt class="py-op">)</tt> </tt>
+<a name="L629"></a><tt class="py-lineno"> 629</tt>  <tt class="py-line">        <tt class="py-name">attribs</tt><tt class="py-op">.</tt><tt class="py-name">setdefault</tt><tt class="py-op">(</tt><tt class="py-string">'tailport'</tt><tt class="py-op">,</tt> <tt class="py-string">'body'</tt><tt class="py-op">)</tt> </tt>
+<a name="L630"></a><tt class="py-lineno"> 630</tt>  <tt class="py-line">        <tt id="link-146" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.url" class="py-name" href="#" onclick="return doclink('link-146', 'url', 'link-54');">url</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">linker</tt><tt class="py-op">.</tt><tt id="link-147" class="py-name"><a title="epydoc.docwriter.html._HTMLDocstringLinker.url_for" class=" [...]
+<a name="L631"></a><tt class="py-lineno"> 631</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">edges</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-149" class="py-name" targets="Class epydoc.docwriter.dotgraph.DotGraphEdge=epydoc.docwriter.dotgraph.DotGraphEdge-class.html"><a title="epydoc.docwriter.dotgraph.DotGraphEdge" class="py-name" href="#" onclick="return doclink('link-149',  [...]
+<a name="L632"></a><tt class="py-lineno"> 632</tt>  <tt class="py-line">                        <tt class="py-name">arrowhead</tt><tt class="py-op">=</tt><tt class="py-string">'open'</tt><tt class="py-op">,</tt> <tt id="link-152" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.href" class="py-name" href="#" onclick="return doclink('link-152', 'href', 'link-113');">href</a></tt><tt class="py-op">=</tt><tt id="link-153" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter. [...]
+<a name="L633"></a><tt class="py-lineno"> 633</tt>  <tt class="py-line">                        <tt class="py-name">tooltip</tt><tt class="py-op">=</tt><tt class="py-name">var</tt><tt class="py-op">.</tt><tt id="link-154" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-154', 'canonical_name', 'link-103');">canonical_name</a></tt><tt class="py-op">,</tt> <tt class="py-name">labeldistance</tt><tt class="py-op">=</tt><tt class="py-number">1.5</tt><tt class="py-op">,</tt> </tt>
+<a name="L634"></a><tt class="py-lineno"> 634</tt>  <tt class="py-line">                        <tt class="py-op">**</tt><tt class="py-name">attribs</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L635"></a><tt class="py-lineno"> 635</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
+</div><a name="L636"></a><tt class="py-lineno"> 636</tt>  <tt class="py-line">                            </tt>
+<a name="L637"></a><tt class="py-lineno"> 637</tt>  <tt class="py-line">    <tt class="py-comment">#/////////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L638"></a><tt class="py-lineno"> 638</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#{ Helper Methods</tt> </tt>
+<a name="L639"></a><tt class="py-lineno"> 639</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#/////////////////////////////////////////////////////////////////</tt> </tt>
+<a name="DotGraphUmlClassNode._summary"></a><div id="DotGraphUmlClassNode._summary-def"><a name="L640"></a><tt class="py-lineno"> 640</tt> <a class="py-toggle" href="#" id="DotGraphUmlClassNode._summary-toggle" onclick="return toggle('DotGraphUmlClassNode._summary');">-</a><tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_summary">_summary</a><tt class="py-op">(</tt>< [...]
+</div><div id="DotGraphUmlClassNode._summary-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DotGraphUmlClassNode._summary-expanded"><a name="L641"></a><tt class="py-lineno"> 641</tt>  <tt class="py-line">        <tt class="py-docstring">"""Return a plaintext summary for `api_doc`"""</tt> </tt>
+<a name="L642"></a><tt class="py-lineno"> 642</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt id="link-155" class="py-name" targets="Class epydoc.apidoc.APIDoc=epydoc.apidoc.APIDoc-class.html"><a title="epydoc.apidoc.APIDoc" class="py-name" href="#" onclick="return doclink('link-155', 'APIDoc', 'link-155');">APIDoc</a></t [...]
+<a name="L643"></a><tt class="py-lineno"> 643</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-156" class="py-name" targets="Variable epydoc.apidoc.APIDoc.summary=epydoc.apidoc.APIDoc-class.html#summary,Method epydoc.docwriter.html.HTMLWriter.summary()=epydoc.docwriter.html.HTMLWriter-class.html#summary,Method epydoc.markup.ConcatenatedDocstring.summary()=epydoc.markup.ConcatenatedDocstring-class.html#su [...]
+epydoc.docwriter.html.HTMLWriter.summary
+epydoc.markup.ConcatenatedDocstring.summary
+epydoc.markup.ParsedDocstring.summary
+epydoc.markup.epytext.ParsedEpytextDocstring.summary
+epydoc.markup.javadoc.ParsedJavadocDocstring.summary
+epydoc.markup.plaintext.ParsedPlaintextDocstring.summary
+epydoc.markup.restructuredtext.ParsedRstDocstring.summary" class="py-name" href="#" onclick="return doclink('link-156', 'summary', 'link-156');">summary</a></tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-157" class="py-name" targets="Variable epydoc.apidoc.UNKNOWN=epydoc.apidoc-module.html#UNKNOWN"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-157', 'UNKNOWN', 'link-1 [...]
+<a name="L644"></a><tt class="py-lineno"> 644</tt>  <tt class="py-line">        <tt id="link-158" class="py-name"><a title="epydoc.apidoc.APIDoc.summary
+epydoc.docwriter.html.HTMLWriter.summary
+epydoc.markup.ConcatenatedDocstring.summary
+epydoc.markup.ParsedDocstring.summary
+epydoc.markup.epytext.ParsedEpytextDocstring.summary
+epydoc.markup.javadoc.ParsedJavadocDocstring.summary
+epydoc.markup.plaintext.ParsedPlaintextDocstring.summary
+epydoc.markup.restructuredtext.ParsedRstDocstring.summary" class="py-name" href="#" onclick="return doclink('link-158', 'summary', 'link-156');">summary</a></tt> <tt class="py-op">=</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-159" class="py-name"><a title="epydoc.apidoc.APIDoc.summary
+epydoc.docwriter.html.HTMLWriter.summary
+epydoc.markup.ConcatenatedDocstring.summary
+epydoc.markup.ParsedDocstring.summary
+epydoc.markup.epytext.ParsedEpytextDocstring.summary
+epydoc.markup.javadoc.ParsedJavadocDocstring.summary
+epydoc.markup.plaintext.ParsedPlaintextDocstring.summary
+epydoc.markup.restructuredtext.ParsedRstDocstring.summary" class="py-name" href="#" onclick="return doclink('link-159', 'summary', 'link-156');">summary</a></tt><tt class="py-op">.</tt><tt id="link-160" class="py-name" targets="Method epydoc.markup.ConcatenatedDocstring.to_plaintext()=epydoc.markup.ConcatenatedDocstring-class.html#to_plaintext,Method epydoc.markup.ParsedDocstring.to_plaintext()=epydoc.markup.ParsedDocstring-class.html#to_plaintext,Method epydoc.markup.epytext.ParsedEpyte [...]
+epydoc.markup.ParsedDocstring.to_plaintext
+epydoc.markup.epytext.ParsedEpytextDocstring.to_plaintext
+epydoc.markup.epytext.to_plaintext
+epydoc.markup.javadoc.ParsedJavadocDocstring.to_plaintext
+epydoc.markup.plaintext.ParsedPlaintextDocstring.to_plaintext
+epydoc.markup.restructuredtext.ParsedRstDocstring.to_plaintext" class="py-name" href="#" onclick="return doclink('link-160', 'to_plaintext', 'link-160');">to_plaintext</a></tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">strip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L645"></a><tt class="py-lineno"> 645</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-161" class="py-name"><a title="epydoc.util.plaintext_to_html" class="py-name" href="#" onclick="return doclink('link-161', 'plaintext_to_html', 'link-39');">plaintext_to_html</a></tt><tt class="py-op">(</tt><tt id="link-162" class="py-name"><a title="epydoc.apidoc.APIDoc.summary
+epydoc.docwriter.html.HTMLWriter.summary
+epydoc.markup.ConcatenatedDocstring.summary
+epydoc.markup.ParsedDocstring.summary
+epydoc.markup.epytext.ParsedEpytextDocstring.summary
+epydoc.markup.javadoc.ParsedJavadocDocstring.summary
+epydoc.markup.plaintext.ParsedPlaintextDocstring.summary
+epydoc.markup.restructuredtext.ParsedRstDocstring.summary" class="py-name" href="#" onclick="return doclink('link-162', 'summary', 'link-156');">summary</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L646"></a><tt class="py-lineno"> 646</tt>  <tt class="py-line"> </tt>
+<a name="L647"></a><tt class="py-lineno"> 647</tt>  <tt class="py-line">    <tt id="link-163" class="py-name"><a title="epydoc.docwriter.dotgraph.DotGraphUmlClassNode._summary" class="py-name" href="#" onclick="return doclink('link-163', '_summary', 'link-109');">_summary</a></tt> <tt class="py-op">=</tt> <tt class="py-name">classmethod</tt><tt class="py-op">(</tt><tt id="link-164" class="py-name"><a title="epydoc.docwriter.dotgraph.DotGraphUmlClassNode._summary" class="py-name" href="#" [...]
+<a name="L648"></a><tt class="py-lineno"> 648</tt>  <tt class="py-line"> </tt>
+<a name="DotGraphUmlClassNode._type_descr"></a><div id="DotGraphUmlClassNode._type_descr-def"><a name="L649"></a><tt class="py-lineno"> 649</tt> <a class="py-toggle" href="#" id="DotGraphUmlClassNode._type_descr-toggle" onclick="return toggle('DotGraphUmlClassNode._type_descr');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_type_descr">_type_descr</a><tt class="py-op">(</tt><tt class=" [...]
+</div><div id="DotGraphUmlClassNode._type_descr-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DotGraphUmlClassNode._type_descr-expanded"><a name="L650"></a><tt class="py-lineno"> 650</tt>  <tt class="py-line">        <tt class="py-docstring">"""Return a plaintext type description for `api_doc`"""</tt> </tt>
+<a name="L651"></a><tt class="py-lineno"> 651</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt class="py-string">'type_descr'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-string">''</tt> </tt>
+<a name="L652"></a><tt class="py-lineno"> 652</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-165" class="py-name"><a title="epydoc.apidoc.PropertyDoc.type_descr
+epydoc.apidoc.VariableDoc.type_descr
+epydoc.docwriter.html.HTMLWriter.type_descr" class="py-name" href="#" onclick="return doclink('link-165', 'type_descr', 'link-122');">type_descr</a></tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-166" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-166', 'UNKNOWN', 'link-157');">UNKNOWN</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class=" [...]
+<a name="L653"></a><tt class="py-lineno"> 653</tt>  <tt class="py-line">        <tt id="link-167" class="py-name"><a title="epydoc.apidoc.PropertyDoc.type_descr
+epydoc.apidoc.VariableDoc.type_descr
+epydoc.docwriter.html.HTMLWriter.type_descr" class="py-name" href="#" onclick="return doclink('link-167', 'type_descr', 'link-122');">type_descr</a></tt> <tt class="py-op">=</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-168" class="py-name"><a title="epydoc.apidoc.PropertyDoc.type_descr
+epydoc.apidoc.VariableDoc.type_descr
+epydoc.docwriter.html.HTMLWriter.type_descr" class="py-name" href="#" onclick="return doclink('link-168', 'type_descr', 'link-122');">type_descr</a></tt><tt class="py-op">.</tt><tt id="link-169" class="py-name"><a title="epydoc.markup.ConcatenatedDocstring.to_plaintext
+epydoc.markup.ParsedDocstring.to_plaintext
+epydoc.markup.epytext.ParsedEpytextDocstring.to_plaintext
+epydoc.markup.epytext.to_plaintext
+epydoc.markup.javadoc.ParsedJavadocDocstring.to_plaintext
+epydoc.markup.plaintext.ParsedPlaintextDocstring.to_plaintext
+epydoc.markup.restructuredtext.ParsedRstDocstring.to_plaintext" class="py-name" href="#" onclick="return doclink('link-169', 'to_plaintext', 'link-160');">to_plaintext</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">linker</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">strip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L654"></a><tt class="py-lineno"> 654</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-170" class="py-name"><a title="epydoc.util.plaintext_to_html" class="py-name" href="#" onclick="return doclink('link-170', 'plaintext_to_html', 'link-39');">plaintext_to_html</a></tt><tt class="py-op">(</tt><tt id="link-171" class="py-name"><a title="epydoc.apidoc.PropertyDoc.type_descr
+epydoc.apidoc.VariableDoc.type_descr
+epydoc.docwriter.html.HTMLWriter.type_descr" class="py-name" href="#" onclick="return doclink('link-171', 'type_descr', 'link-122');">type_descr</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L655"></a><tt class="py-lineno"> 655</tt>  <tt class="py-line"> </tt>
+<a name="DotGraphUmlClassNode._tooltip"></a><div id="DotGraphUmlClassNode._tooltip-def"><a name="L656"></a><tt class="py-lineno"> 656</tt> <a class="py-toggle" href="#" id="DotGraphUmlClassNode._tooltip-toggle" onclick="return toggle('DotGraphUmlClassNode._tooltip');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_tooltip">_tooltip</a><tt class="py-op">(</tt><tt class="py-param">self</tt [...]
+</div><div id="DotGraphUmlClassNode._tooltip-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DotGraphUmlClassNode._tooltip-expanded"><a name="L657"></a><tt class="py-lineno"> 657</tt>  <tt class="py-line">        <tt class="py-docstring">"""Return a tooltip for `var_doc`."""</tt> </tt>
+<a name="L658"></a><tt class="py-lineno"> 658</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-172" class="py-name"><a title="epydoc.docwriter.dotgraph.DotGraphUmlClassNode._summary" class="py-name" href="#" onclick="return doclink('link-172', '_summary', 'link-109');">_summary</a></tt><tt class="py-op">(</tt><tt class="py-name">var_doc</tt><tt class="py-op">)</tt> <tt class="py- [...]
+<a name="L659"></a><tt class="py-lineno"> 659</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-173" class="py-name"><a title="epydoc.docwriter.dotgraph.DotGraphUmlClassNode._summary" class="py-name" href="#" onclick="return doclink('link-173', '_summary', 'link-109');">_summary</a></tt><tt class="py-op">(</tt><tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-174" class="py-name"><a title="epydoc.apidoc.Variable [...]
+<a name="L660"></a><tt class="py-lineno"> 660</tt>  <tt class="py-line">                <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-175" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-175', 'canonical_name', 'link-103');">canonical_name</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L661"></a><tt class="py-lineno"> 661</tt>  <tt class="py-line">     </tt>
+<a name="L662"></a><tt class="py-lineno"> 662</tt>  <tt class="py-line">    <tt class="py-comment">#/////////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L663"></a><tt class="py-lineno"> 663</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#{ Rendering</tt> </tt>
+<a name="L664"></a><tt class="py-lineno"> 664</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#/////////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L665"></a><tt class="py-lineno"> 665</tt>  <tt class="py-line"><tt class="py-comment"></tt>     </tt>
+<a name="DotGraphUmlClassNode._attribute_cell"></a><div id="DotGraphUmlClassNode._attribute_cell-def"><a name="L666"></a><tt class="py-lineno"> 666</tt> <a class="py-toggle" href="#" id="DotGraphUmlClassNode._attribute_cell-toggle" onclick="return toggle('DotGraphUmlClassNode._attribute_cell');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_attribute_cell">_attribute_cell</a><tt class=" [...]
+</div><div id="DotGraphUmlClassNode._attribute_cell-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DotGraphUmlClassNode._attribute_cell-expanded"><a name="L667"></a><tt class="py-lineno"> 667</tt>  <tt class="py-line">        <tt class="py-comment"># Construct the label</tt> </tt>
+<a name="L668"></a><tt class="py-lineno"> 668</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt id="link-176" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.label" class="py-name" href="#" onclick="return doclink('link-176', 'label', 'link-84');">label</a></tt> <tt class="py-op">=</tt> <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-177" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return do [...]
+<a name="L669"></a><tt class="py-lineno"> 669</tt>  <tt class="py-line">        <tt id="link-178" class="py-name"><a title="epydoc.apidoc.PropertyDoc.type_descr
+epydoc.apidoc.VariableDoc.type_descr
+epydoc.docwriter.html.HTMLWriter.type_descr" class="py-name" href="#" onclick="return doclink('link-178', 'type_descr', 'link-122');">type_descr</a></tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-179" class="py-name"><a title="epydoc.docwriter.dotgraph.DotGraphUmlClassNode._type_descr" class="py-name" href="#" onclick="return doclink('link-179', '_type_descr', 'link-123');">_type_descr</a></tt><tt class="py-op">(</t [...]
+<a name="L670"></a><tt class="py-lineno"> 670</tt>  <tt class="py-line">                      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-180" class="py-name"><a title="epydoc.docwriter.dotgraph.DotGraphUmlClassNode._type_descr" class="py-name" href="#" onclick="return doclink('link-180', '_type_descr', 'link-123');">_type_descr</a></tt><tt class="py-op">(</tt><tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-181" class="py-name"><a title="epydoc. [...]
+<a name="L671"></a><tt class="py-lineno"> 671</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-182" class="py-name"><a title="epydoc.apidoc.PropertyDoc.type_descr
+epydoc.apidoc.VariableDoc.type_descr
+epydoc.docwriter.html.HTMLWriter.type_descr" class="py-name" href="#" onclick="return doclink('link-182', 'type_descr', 'link-122');">type_descr</a></tt><tt class="py-op">:</tt> <tt id="link-183" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.label" class="py-name" href="#" onclick="return doclink('link-183', 'label', 'link-84');">label</a></tt> <tt class="py-op">+=</tt> <tt class="py-string">': %s'</tt> <tt class="py-op">%</tt> <tt id="link-184" class="py-name"><a title="e [...]
+epydoc.apidoc.VariableDoc.type_descr
+epydoc.docwriter.html.HTMLWriter.type_descr" class="py-name" href="#" onclick="return doclink('link-184', 'type_descr', 'link-122');">type_descr</a></tt> </tt>
+<a name="L672"></a><tt class="py-lineno"> 672</tt>  <tt class="py-line">        <tt class="py-comment"># Get the URL</tt> </tt>
+<a name="L673"></a><tt class="py-lineno"> 673</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt id="link-185" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.url" class="py-name" href="#" onclick="return doclink('link-185', 'url', 'link-54');">url</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">linker</tt><tt class="py-op">.</tt><tt id="link-186" class="py-name"><a title="epydoc.docwriter.html._HTMLDocs [...]
+<a name="L674"></a><tt class="py-lineno"> 674</tt>  <tt class="py-line">        <tt class="py-comment"># Construct & return the pseudo-html code</tt> </tt>
+<a name="L675"></a><tt class="py-lineno"> 675</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-188" class="py-name" targets="Variable epydoc.docwriter.dotgraph.DotGraphUmlClassNode._ATTRIBUTE_CELL=epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_ATTRIBUTE_CELL"><a title="epydoc.docwriter.dotgraph.DotGraphUmlClassNode._ATTRIBUTE_CELL" class="py-name" href="#" onclick [...]
+</div><a name="L676"></a><tt class="py-lineno"> 676</tt>  <tt class="py-line"> </tt>
+<a name="DotGraphUmlClassNode._operation_cell"></a><div id="DotGraphUmlClassNode._operation_cell-def"><a name="L677"></a><tt class="py-lineno"> 677</tt> <a class="py-toggle" href="#" id="DotGraphUmlClassNode._operation_cell-toggle" onclick="return toggle('DotGraphUmlClassNode._operation_cell');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_operation_cell">_operation_cell</a><tt class=" [...]
+</div><div id="DotGraphUmlClassNode._operation_cell-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DotGraphUmlClassNode._operation_cell-expanded"><a name="L678"></a><tt class="py-lineno"> 678</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L679"></a><tt class="py-lineno"> 679</tt>  <tt class="py-line"><tt class="py-docstring">        :todo: do 'word wrapping' on the signature, by starting a new</tt> </tt>
+<a name="L680"></a><tt class="py-lineno"> 680</tt>  <tt class="py-line"><tt class="py-docstring">               row in the table, if necessary.  How to indent the new</tt> </tt>
+<a name="L681"></a><tt class="py-lineno"> 681</tt>  <tt class="py-line"><tt class="py-docstring">               line?  Maybe use align=right?  I don't think dot has a</tt> </tt>
+<a name="L682"></a><tt class="py-lineno"> 682</tt>  <tt class="py-line"><tt class="py-docstring">               &nbsp;.</tt> </tt>
+<a name="L683"></a><tt class="py-lineno"> 683</tt>  <tt class="py-line"><tt class="py-docstring">        :todo: Optionally add return type info?</tt> </tt>
+<a name="L684"></a><tt class="py-lineno"> 684</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L685"></a><tt class="py-lineno"> 685</tt>  <tt class="py-line">        <tt class="py-comment"># Construct the label (aka function signature)</tt> </tt>
+<a name="L686"></a><tt class="py-lineno"> 686</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">func_doc</tt> <tt class="py-op">=</tt> <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-192" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-192', 'value', 'link-107');">value</a></tt> </tt>
+<a name="L687"></a><tt class="py-lineno"> 687</tt>  <tt class="py-line">        <tt class="py-name">args</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-193" class="py-name" targets="Method epydoc.docwriter.dotgraph.DotGraphUmlClassNode._operation_arg()=epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_operation_arg"><a title="epydoc.docwriter.dotgraph.DotGraphUmlClassNode._operation_arg" class="py-name" hre [...]
+<a name="L688"></a><tt class="py-lineno"> 688</tt>  <tt class="py-line">                <tt class="py-keyword">in</tt> <tt class="py-name">zip</tt><tt class="py-op">(</tt><tt class="py-name">func_doc</tt><tt class="py-op">.</tt><tt id="link-194" class="py-name" targets="Variable epydoc.apidoc.RoutineDoc.posargs=epydoc.apidoc.RoutineDoc-class.html#posargs"><a title="epydoc.apidoc.RoutineDoc.posargs" class="py-name" href="#" onclick="return doclink('link-194', 'posargs', 'link-194');">posa [...]
+<a name="L689"></a><tt class="py-lineno"> 689</tt>  <tt class="py-line">        <tt class="py-name">args</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt id="link-196" class="py-name"><a title="epydoc.util.plaintext_to_html" class="py-name" href="#" onclick="return doclink('link-196', 'plaintext_to_html', 'link-39');">plaintext_to_html</a></tt><tt class="py-op">(</tt><tt id="link-197" class="py-name" targets="Method epydoc.markup.Field.arg()=epydoc.markup.Field-class.html#arg">< [...]
+<a name="L690"></a><tt class="py-lineno"> 690</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">func_doc</tt><tt class="py-op">.</tt><tt id="link-199" class="py-name" targets="Variable epydoc.apidoc.RoutineDoc.vararg=epydoc.apidoc.RoutineDoc-class.html#vararg"><a title="epydoc.apidoc.RoutineDoc.vararg" class="py-name" href="#" onclick="return doclink('link-199', 'vararg', 'link-199');">vararg</a></tt><tt class="py-op">:</tt> <tt class="py-name">args</tt [...]
+<a name="L691"></a><tt class="py-lineno"> 691</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">func_doc</tt><tt class="py-op">.</tt><tt id="link-201" class="py-name" targets="Variable epydoc.apidoc.RoutineDoc.kwarg=epydoc.apidoc.RoutineDoc-class.html#kwarg"><a title="epydoc.apidoc.RoutineDoc.kwarg" class="py-name" href="#" onclick="return doclink('link-201', 'kwarg', 'link-201');">kwarg</a></tt><tt class="py-op">:</tt> <tt class="py-name">args</tt><tt  [...]
+<a name="L692"></a><tt class="py-lineno"> 692</tt>  <tt class="py-line">        <tt id="link-203" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.label" class="py-name" href="#" onclick="return doclink('link-203', 'label', 'link-84');">label</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'%s(%s)'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-204" class="py-name"><a title="epydoc.apidoc.Vari [...]
+<a name="L693"></a><tt class="py-lineno"> 693</tt>  <tt class="py-line">        <tt class="py-comment"># Get the URL</tt> </tt>
+<a name="L694"></a><tt class="py-lineno"> 694</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt id="link-205" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.url" class="py-name" href="#" onclick="return doclink('link-205', 'url', 'link-54');">url</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">linker</tt><tt class="py-op">.</tt><tt id="link-206" class="py-name"><a title="epydoc.docwriter.html._HTMLDocs [...]
+<a name="L695"></a><tt class="py-lineno"> 695</tt>  <tt class="py-line">        <tt class="py-comment"># Construct & return the pseudo-html code</tt> </tt>
+<a name="L696"></a><tt class="py-lineno"> 696</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-208" class="py-name" targets="Variable epydoc.docwriter.dotgraph.DotGraphUmlClassNode._OPERATION_CELL=epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_OPERATION_CELL"><a title="epydoc.docwriter.dotgraph.DotGraphUmlClassNode._OPERATION_CELL" class="py-name" href="#" onclick [...]
+</div><a name="L697"></a><tt class="py-lineno"> 697</tt>  <tt class="py-line"> </tt>
+<a name="DotGraphUmlClassNode._operation_arg"></a><div id="DotGraphUmlClassNode._operation_arg-def"><a name="L698"></a><tt class="py-lineno"> 698</tt> <a class="py-toggle" href="#" id="DotGraphUmlClassNode._operation_arg-toggle" onclick="return toggle('DotGraphUmlClassNode._operation_arg');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_operation_arg">_operation_arg</a><tt class="py-op" [...]
+</div><div id="DotGraphUmlClassNode._operation_arg-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DotGraphUmlClassNode._operation_arg-expanded"><a name="L699"></a><tt class="py-lineno"> 699</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L700"></a><tt class="py-lineno"> 700</tt>  <tt class="py-line"><tt class="py-docstring">        :todo: Handle tuple args better</tt> </tt>
+<a name="L701"></a><tt class="py-lineno"> 701</tt>  <tt class="py-line"><tt class="py-docstring">        :todo: Optionally add type info?</tt> </tt>
+<a name="L702"></a><tt class="py-lineno"> 702</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L703"></a><tt class="py-lineno"> 703</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">default</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L704"></a><tt class="py-lineno"> 704</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">'%s'</tt> <tt class="py-op">%</tt> <tt id="link-212" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-212', 'name', 'link-102');">name</a></tt> </tt>
+<a name="L705"></a><tt class="py-lineno"> 705</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L706"></a><tt class="py-lineno"> 706</tt>  <tt class="py-line">            <tt id="link-213" class="py-name" targets="Method epydoc.apidoc.ValueDoc.pyval_repr()=epydoc.apidoc.ValueDoc-class.html#pyval_repr,Module epydoc.markup.pyval_repr=epydoc.markup.pyval_repr-module.html"><a title="epydoc.apidoc.ValueDoc.pyval_repr
+epydoc.markup.pyval_repr" class="py-name" href="#" onclick="return doclink('link-213', 'pyval_repr', 'link-213');">pyval_repr</a></tt> <tt class="py-op">=</tt> <tt class="py-name">default</tt><tt class="py-op">.</tt><tt id="link-214" class="py-name" targets="Method epydoc.apidoc.ValueDoc.summary_pyval_repr()=epydoc.apidoc.ValueDoc-class.html#summary_pyval_repr"><a title="epydoc.apidoc.ValueDoc.summary_pyval_repr" class="py-name" href="#" onclick="return doclink('link-214', 'summary_pyval [...]
+epydoc.markup.ParsedDocstring.to_plaintext
+epydoc.markup.epytext.ParsedEpytextDocstring.to_plaintext
+epydoc.markup.epytext.to_plaintext
+epydoc.markup.javadoc.ParsedJavadocDocstring.to_plaintext
+epydoc.markup.plaintext.ParsedPlaintextDocstring.to_plaintext
+epydoc.markup.restructuredtext.ParsedRstDocstring.to_plaintext" class="py-name" href="#" onclick="return doclink('link-215', 'to_plaintext', 'link-160');">to_plaintext</a></tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+<a name="L707"></a><tt class="py-lineno"> 707</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">'%s=%s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt id="link-216" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-216', 'name', 'link-102');">name</a></tt><tt class="py-op">,</tt> <tt id="link-217" class="py-name"><a title="epydoc.apidoc.ValueDoc.pyval_repr
+epydoc.markup.pyval_repr" class="py-name" href="#" onclick="return doclink('link-217', 'pyval_repr', 'link-213');">pyval_repr</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L708"></a><tt class="py-lineno"> 708</tt>  <tt class="py-line"> </tt>
+<a name="DotGraphUmlClassNode._qualifier_cell"></a><div id="DotGraphUmlClassNode._qualifier_cell-def"><a name="L709"></a><tt class="py-lineno"> 709</tt> <a class="py-toggle" href="#" id="DotGraphUmlClassNode._qualifier_cell-toggle" onclick="return toggle('DotGraphUmlClassNode._qualifier_cell');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_qualifier_cell">_qualifier_cell</a><tt class=" [...]
+</div><div id="DotGraphUmlClassNode._qualifier_cell-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DotGraphUmlClassNode._qualifier_cell-expanded"><a name="L710"></a><tt class="py-lineno"> 710</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-218" class="py-name" targets="Variable epydoc.docwriter.dotgraph.DotGraphUmlClassNode._QUALIFIER_CELL=epydoc.docwriter.dotgraph.DotGrap [...]
+</div><a name="L711"></a><tt class="py-lineno"> 711</tt>  <tt class="py-line"> </tt>
+<a name="L712"></a><tt class="py-lineno"> 712</tt>  <tt class="py-line">    <tt class="py-comment">#: args: (url, tooltip, label)</tt> </tt>
+<a name="L713"></a><tt class="py-lineno"> 713</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-219" class="py-name"><a title="epydoc.docwriter.dotgraph.DotGraphUmlClassNode._ATTRIBUTE_CELL" class="py-name" href="#" onclick="return doclink('link-219', '_ATTRIBUTE_CELL', 'link-188');">_ATTRIBUTE_CELL</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'''</tt> </tt>
+<a name="L714"></a><tt class="py-lineno"> 714</tt>  <tt class="py-line"><tt class="py-string">    <TR><TD ALIGN="LEFT" HREF="%s" TOOLTIP="%s">%s</TD></TR></tt> </tt>
+<a name="L715"></a><tt class="py-lineno"> 715</tt>  <tt class="py-line"><tt class="py-string">    '''</tt> </tt>
+<a name="L716"></a><tt class="py-lineno"> 716</tt>  <tt class="py-line"> </tt>
+<a name="L717"></a><tt class="py-lineno"> 717</tt>  <tt class="py-line">    <tt class="py-comment">#: args: (url, tooltip, label)</tt> </tt>
+<a name="L718"></a><tt class="py-lineno"> 718</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-220" class="py-name"><a title="epydoc.docwriter.dotgraph.DotGraphUmlClassNode._OPERATION_CELL" class="py-name" href="#" onclick="return doclink('link-220', '_OPERATION_CELL', 'link-208');">_OPERATION_CELL</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'''</tt> </tt>
+<a name="L719"></a><tt class="py-lineno"> 719</tt>  <tt class="py-line"><tt class="py-string">    <TR><TD ALIGN="LEFT" HREF="%s" TOOLTIP="%s">%s</TD></TR></tt> </tt>
+<a name="L720"></a><tt class="py-lineno"> 720</tt>  <tt class="py-line"><tt class="py-string">    '''</tt> </tt>
+<a name="L721"></a><tt class="py-lineno"> 721</tt>  <tt class="py-line"> </tt>
+<a name="L722"></a><tt class="py-lineno"> 722</tt>  <tt class="py-line">    <tt class="py-comment">#: args: (port, bgcolor, label)</tt> </tt>
+<a name="L723"></a><tt class="py-lineno"> 723</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-221" class="py-name"><a title="epydoc.docwriter.dotgraph.DotGraphUmlClassNode._QUALIFIER_CELL" class="py-name" href="#" onclick="return doclink('link-221', '_QUALIFIER_CELL', 'link-218');">_QUALIFIER_CELL</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'''</tt> </tt>
+<a name="L724"></a><tt class="py-lineno"> 724</tt>  <tt class="py-line"><tt class="py-string">    <TR><TD VALIGN="BOTTOM" PORT="%s" BGCOLOR="%s" BORDER="1">%s</TD></TR></tt> </tt>
+<a name="L725"></a><tt class="py-lineno"> 725</tt>  <tt class="py-line"><tt class="py-string">    '''</tt> </tt>
+<a name="L726"></a><tt class="py-lineno"> 726</tt>  <tt class="py-line"> </tt>
+<a name="L727"></a><tt class="py-lineno"> 727</tt>  <tt class="py-line">    <tt id="link-222" class="py-name" targets="Variable epydoc.docwriter.dotgraph.DotGraphUmlClassNode._QUALIFIER_DIV=epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_QUALIFIER_DIV"><a title="epydoc.docwriter.dotgraph.DotGraphUmlClassNode._QUALIFIER_DIV" class="py-name" href="#" onclick="return doclink('link-222', '_QUALIFIER_DIV', 'link-222');">_QUALIFIER_DIV</a></tt> <tt class="py-op">=</tt> <tt class="py [...]
+<a name="L728"></a><tt class="py-lineno"> 728</tt>  <tt class="py-line"><tt class="py-string">    <TR><TD VALIGN="BOTTOM" HEIGHT="10" WIDTH="10" FIXEDSIZE="TRUE"></TD></TR></tt> </tt>
+<a name="L729"></a><tt class="py-lineno"> 729</tt>  <tt class="py-line"><tt class="py-string">    '''</tt> </tt>
+<a name="L730"></a><tt class="py-lineno"> 730</tt>  <tt class="py-line">     </tt>
+<a name="L731"></a><tt class="py-lineno"> 731</tt>  <tt class="py-line">    <tt class="py-comment">#: Args: (rowspan, bgcolor, classname, attributes, operations, qualifiers)</tt> </tt>
+<a name="L732"></a><tt class="py-lineno"> 732</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-223" class="py-name" targets="Variable epydoc.docwriter.dotgraph.DotGraphUmlClassNode._LABEL=epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_LABEL"><a title="epydoc.docwriter.dotgraph.DotGraphUmlClassNode._LABEL" class="py-name" href="#" onclick="return doclink('link-223', '_LABEL', 'link-223');">_LABEL</a></tt> <tt class="py-op">=</tt> <tt class="py-string">''' [...]
+<a name="L733"></a><tt class="py-lineno"> 733</tt>  <tt class="py-line"><tt class="py-string">    <TABLE BORDER="0" CELLBORDER="0" CELLSPACING="0" CELLPADDING="0"></tt> </tt>
+<a name="L734"></a><tt class="py-lineno"> 734</tt>  <tt class="py-line"><tt class="py-string">      <TR><TD ROWSPAN="%s"></tt> </tt>
+<a name="L735"></a><tt class="py-lineno"> 735</tt>  <tt class="py-line"><tt class="py-string">        <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0"</tt> </tt>
+<a name="L736"></a><tt class="py-lineno"> 736</tt>  <tt class="py-line"><tt class="py-string">               CELLPADDING="0" PORT="body" BGCOLOR="%s"></tt> </tt>
+<a name="L737"></a><tt class="py-lineno"> 737</tt>  <tt class="py-line"><tt class="py-string">          <TR><TD>%s</TD></TR></tt> </tt>
+<a name="L738"></a><tt class="py-lineno"> 738</tt>  <tt class="py-line"><tt class="py-string">          <TR><TD><TABLE BORDER="0" CELLBORDER="0" CELLSPACING="0"></tt> </tt>
+<a name="L739"></a><tt class="py-lineno"> 739</tt>  <tt class="py-line"><tt class="py-string">            %s</TABLE></TD></TR></tt> </tt>
+<a name="L740"></a><tt class="py-lineno"> 740</tt>  <tt class="py-line"><tt class="py-string">          <TR><TD><TABLE BORDER="0" CELLBORDER="0" CELLSPACING="0"></tt> </tt>
+<a name="L741"></a><tt class="py-lineno"> 741</tt>  <tt class="py-line"><tt class="py-string">            %s</TABLE></TD></TR></tt> </tt>
+<a name="L742"></a><tt class="py-lineno"> 742</tt>  <tt class="py-line"><tt class="py-string">        </TABLE></tt> </tt>
+<a name="L743"></a><tt class="py-lineno"> 743</tt>  <tt class="py-line"><tt class="py-string">      </TD></TR></tt> </tt>
+<a name="L744"></a><tt class="py-lineno"> 744</tt>  <tt class="py-line"><tt class="py-string">      %s</tt> </tt>
+<a name="L745"></a><tt class="py-lineno"> 745</tt>  <tt class="py-line"><tt class="py-string">    </TABLE>'''</tt> </tt>
+<a name="L746"></a><tt class="py-lineno"> 746</tt>  <tt class="py-line"> </tt>
+<a name="L747"></a><tt class="py-lineno"> 747</tt>  <tt class="py-line">    <tt id="link-224" class="py-name" targets="Variable epydoc.docwriter.dotgraph.DotGraphUmlClassNode._COLLAPSED_LABEL=epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_COLLAPSED_LABEL"><a title="epydoc.docwriter.dotgraph.DotGraphUmlClassNode._COLLAPSED_LABEL" class="py-name" href="#" onclick="return doclink('link-224', '_COLLAPSED_LABEL', 'link-224');">_COLLAPSED_LABEL</a></tt> <tt class="py-op">=</tt> <tt [...]
+<a name="L748"></a><tt class="py-lineno"> 748</tt>  <tt class="py-line"><tt class="py-string">    <TABLE CELLBORDER="0" BGCOLOR="%s" PORT="body"></tt> </tt>
+<a name="L749"></a><tt class="py-lineno"> 749</tt>  <tt class="py-line"><tt class="py-string">      <TR><TD>%s</TD></TR></tt> </tt>
+<a name="L750"></a><tt class="py-lineno"> 750</tt>  <tt class="py-line"><tt class="py-string">    </TABLE>'''</tt> </tt>
+<a name="L751"></a><tt class="py-lineno"> 751</tt>  <tt class="py-line"> </tt>
+<a name="DotGraphUmlClassNode._get_html_label"></a><div id="DotGraphUmlClassNode._get_html_label-def"><a name="L752"></a><tt class="py-lineno"> 752</tt> <a class="py-toggle" href="#" id="DotGraphUmlClassNode._get_html_label-toggle" onclick="return toggle('DotGraphUmlClassNode._get_html_label');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_get_html_label">_get_html_label</a><tt class=" [...]
+</div><div id="DotGraphUmlClassNode._get_html_label-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DotGraphUmlClassNode._get_html_label-expanded"><a name="L753"></a><tt class="py-lineno"> 753</tt>  <tt class="py-line">        <tt class="py-comment"># Get the class name & contextualize it.</tt> </tt>
+<a name="L754"></a><tt class="py-lineno"> 754</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">classname</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">class_doc</tt><tt class="py-op">.</tt><tt id="link-225" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-225', 'canonical_name', 'link-103');">canonical_name</a></tt> </tt>
+<a name="L755"></a><tt class="py-lineno"> 755</tt>  <tt class="py-line">        <tt class="py-name">classname</tt> <tt class="py-op">=</tt> <tt class="py-name">classname</tt><tt class="py-op">.</tt><tt id="link-226" class="py-name" targets="Method epydoc.apidoc.DottedName.contextualize()=epydoc.apidoc.DottedName-class.html#contextualize"><a title="epydoc.apidoc.DottedName.contextualize" class="py-name" href="#" onclick="return doclink('link-226', 'contextualize', 'link-226');">contextual [...]
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-227', 'canonical_name', 'link-103');">canonical_name</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L756"></a><tt class="py-lineno"> 756</tt>  <tt class="py-line">         </tt>
+<a name="L757"></a><tt class="py-lineno"> 757</tt>  <tt class="py-line">        <tt class="py-comment"># If we're collapsed, display the node as a single box.</tt> </tt>
+<a name="L758"></a><tt class="py-lineno"> 758</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">collapsed</tt><tt class="py-op">:</tt> </tt>
+<a name="L759"></a><tt class="py-lineno"> 759</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-228" class="py-name"><a title="epydoc.docwriter.dotgraph.DotGraphUmlClassNode._COLLAPSED_LABEL" class="py-name" href="#" onclick="return doclink('link-228', '_COLLAPSED_LABEL', 'link-224');">_COLLAPSED_LABEL</a></tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="p [...]
+<a name="L760"></a><tt class="py-lineno"> 760</tt>  <tt class="py-line">         </tt>
+<a name="L761"></a><tt class="py-lineno"> 761</tt>  <tt class="py-line">        <tt class="py-comment"># Construct the attribute list.  (If it's too long, truncate)</tt> </tt>
+<a name="L762"></a><tt class="py-lineno"> 762</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">attrib_cells</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-229" class="py-name" targets="Method epydoc.docwriter.dotgraph.DotGraphUmlClassNode._attribute_cell()=epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_attribute_cell"><a title="epydoc.docwriter.dotgraph.DotGraphUmlClassNo [...]
+<a name="L763"></a><tt class="py-lineno"> 763</tt>  <tt class="py-line">        <tt class="py-name">max_attributes</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'max_attributes'</tt><tt class="py-op">,</tt> <tt class="py-number">15</tt><tt class="py-op">)</tt> </tt>
+<a name="L764"></a><tt class="py-lineno"> 764</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">attrib_cells</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L765"></a><tt class="py-lineno"> 765</tt>  <tt class="py-line">            <tt class="py-name">attrib_cells</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-string">'<TR><TD></TD></TR>'</tt><tt class="py-op">]</tt> </tt>
+<a name="L766"></a><tt class="py-lineno"> 766</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">attrib_cells</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-name">max_attributes</tt><tt class="py-op">:</tt> </tt>
+<a name="L767"></a><tt class="py-lineno"> 767</tt>  <tt class="py-line">            <tt class="py-name">attrib_cells</tt><tt class="py-op">[</tt><tt class="py-name">max_attributes</tt><tt class="py-op">-</tt><tt class="py-number">2</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-string">'<TR><TD>...</TD></TR>'</tt><tt class="py-op">]</tt> </tt>
+<a name="L768"></a><tt class="py-lineno"> 768</tt>  <tt class="py-line">        <tt class="py-name">attributes</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">attrib_cells</tt><tt class="py-op">)</tt> </tt>
+<a name="L769"></a><tt class="py-lineno"> 769</tt>  <tt class="py-line">                       </tt>
+<a name="L770"></a><tt class="py-lineno"> 770</tt>  <tt class="py-line">        <tt class="py-comment"># Construct the operation list.  (If it's too long, truncate)</tt> </tt>
+<a name="L771"></a><tt class="py-lineno"> 771</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">oper_cells</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-230" class="py-name" targets="Method epydoc.docwriter.dotgraph.DotGraphUmlClassNode._operation_cell()=epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_operation_cell"><a title="epydoc.docwriter.dotgraph.DotGraphUmlClassNode [...]
+<a name="L772"></a><tt class="py-lineno"> 772</tt>  <tt class="py-line">        <tt class="py-name">max_operations</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'max_operations'</tt><tt class="py-op">,</tt> <tt class="py-number">15</tt><tt class="py-op">)</tt> </tt>
+<a name="L773"></a><tt class="py-lineno"> 773</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">oper_cells</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L774"></a><tt class="py-lineno"> 774</tt>  <tt class="py-line">            <tt class="py-name">oper_cells</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-string">'<TR><TD></TD></TR>'</tt><tt class="py-op">]</tt> </tt>
+<a name="L775"></a><tt class="py-lineno"> 775</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">oper_cells</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-name">max_operations</tt><tt class="py-op">:</tt> </tt>
+<a name="L776"></a><tt class="py-lineno"> 776</tt>  <tt class="py-line">            <tt class="py-name">oper_cells</tt><tt class="py-op">[</tt><tt class="py-name">max_operations</tt><tt class="py-op">-</tt><tt class="py-number">2</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-string">'<TR><TD>...</TD></TR>'</tt><tt class="py-op">]</tt> </tt>
+<a name="L777"></a><tt class="py-lineno"> 777</tt>  <tt class="py-line">        <tt class="py-name">operations</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">oper_cells</tt><tt class="py-op">)</tt> </tt>
+<a name="L778"></a><tt class="py-lineno"> 778</tt>  <tt class="py-line"> </tt>
+<a name="L779"></a><tt class="py-lineno"> 779</tt>  <tt class="py-line">        <tt class="py-comment"># Construct the qualifier list & determine the rowspan.</tt> </tt>
+<a name="L780"></a><tt class="py-lineno"> 780</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">qualifiers</tt><tt class="py-op">:</tt> </tt>
+<a name="L781"></a><tt class="py-lineno"> 781</tt>  <tt class="py-line">            <tt class="py-name">rowspan</tt> <tt class="py-op">=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">qualifiers</tt><tt class="py-op">)</tt><tt class="py-op">*</tt><tt class="py-number">2</tt><tt class="py-op">+</tt><tt class="py-number">2</tt> </tt>
+<a name="L782"></a><tt class="py-lineno"> 782</tt>  <tt class="py-line">            <tt class="py-name">div</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-231" class="py-name"><a title="epydoc.docwriter.dotgraph.DotGraphUmlClassNode._QUALIFIER_DIV" class="py-name" href="#" onclick="return doclink('link-231', '_QUALIFIER_DIV', 'link-222');">_QUALIFIER_DIV</a></tt> </tt>
+<a name="L783"></a><tt class="py-lineno"> 783</tt>  <tt class="py-line">            <tt class="py-name">qualifiers</tt> <tt class="py-op">=</tt> <tt class="py-name">div</tt><tt class="py-op">+</tt><tt class="py-name">div</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-232" class="py-name" targets="Method epydoc.docwriter.dotgraph.DotGraphUmlClassNode._qualifier_cell( [...]
+<a name="L784"></a><tt class="py-lineno"> 784</tt>  <tt class="py-line">                                     <tt class="py-op">(</tt><tt class="py-name">l</tt><tt class="py-op">,</tt><tt class="py-name">p</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">qualifiers</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">+</tt><tt class="py-name">div</tt> </tt>
+<a name="L785"></a><tt class="py-lineno"> 785</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L786"></a><tt class="py-lineno"> 786</tt>  <tt class="py-line">            <tt class="py-name">rowspan</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L787"></a><tt class="py-lineno"> 787</tt>  <tt class="py-line">            <tt class="py-name">qualifiers</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
+<a name="L788"></a><tt class="py-lineno"> 788</tt>  <tt class="py-line"> </tt>
+<a name="L789"></a><tt class="py-lineno"> 789</tt>  <tt class="py-line">        <tt class="py-comment"># Put it all together.</tt> </tt>
+<a name="L790"></a><tt class="py-lineno"> 790</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-233" class="py-name"><a title="epydoc.docwriter.dotgraph.DotGraphUmlClassNode._LABEL" class="py-name" href="#" onclick="return doclink('link-233', '_LABEL', 'link-223');">_LABEL</a></tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">rowspan</tt><tt class="py-o [...]
+<a name="L791"></a><tt class="py-lineno"> 791</tt>  <tt class="py-line">                              <tt class="py-name">attributes</tt><tt class="py-op">,</tt> <tt class="py-name">operations</tt><tt class="py-op">,</tt> <tt class="py-name">qualifiers</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L792"></a><tt class="py-lineno"> 792</tt>  <tt class="py-line"> </tt>
+<a name="DotGraphUmlClassNode.to_dotfile"></a><div id="DotGraphUmlClassNode.to_dotfile-def"><a name="L793"></a><tt class="py-lineno"> 793</tt> <a class="py-toggle" href="#" id="DotGraphUmlClassNode.to_dotfile-toggle" onclick="return toggle('DotGraphUmlClassNode.to_dotfile');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#to_dotfile">to_dotfile</a><tt class="py-op">(</tt><tt class="py-par [...]
+</div><div id="DotGraphUmlClassNode.to_dotfile-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DotGraphUmlClassNode.to_dotfile-expanded"><a name="L794"></a><tt class="py-lineno"> 794</tt>  <tt class="py-line">        <tt class="py-name">attribs</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-string">'%s="%s"'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">k</tt><tt class="py-op">,</tt><tt id="link-234" class="py- [...]
+<a name="L795"></a><tt class="py-lineno"> 795</tt>  <tt class="py-line">        <tt class="py-name">attribs</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">'label=<%s>'</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-236" class="py-name" targets="Method epydoc.docwriter.dotgraph.DotGraphUmlClassNode._get_html_label()=epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_get [...]
+epydoc.docwriter.dotgraph.DotGraphUmlModuleNode._get_html_label" class="py-name" href="#" onclick="return doclink('link-236', '_get_html_label', 'link-236');">_get_html_label</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L796"></a><tt class="py-lineno"> 796</tt>  <tt class="py-line">        <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-string">'node%d%s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">id</tt><tt class="py-op">,</tt> <tt class="py-string">' [%s]'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-string">','</tt><tt class="py-op">.</tt><tt class="py-name">join</tt>< [...]
+<a name="L797"></a><tt class="py-lineno"> 797</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">collapsed</tt><tt class="py-op">:</tt> </tt>
+<a name="L798"></a><tt class="py-lineno"> 798</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">edge</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">edges</tt><tt class="py-op">:</tt> </tt>
+<a name="L799"></a><tt class="py-lineno"> 799</tt>  <tt class="py-line">                <tt class="py-name">s</tt> <tt class="py-op">+=</tt> <tt class="py-string">'\n'</tt> <tt class="py-op">+</tt> <tt class="py-name">edge</tt><tt class="py-op">.</tt><tt id="link-237" class="py-name"><a title="epydoc.docwriter.dotgraph.DotGraph.to_dotfile
+epydoc.docwriter.dotgraph.DotGraphEdge.to_dotfile
+epydoc.docwriter.dotgraph.DotGraphNode.to_dotfile
+epydoc.docwriter.dotgraph.DotGraphUmlClassNode.to_dotfile
+epydoc.docwriter.dotgraph.DotGraphUmlModuleNode.to_dotfile" class="py-name" href="#" onclick="return doclink('link-237', 'to_dotfile', 'link-70');">to_dotfile</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L800"></a><tt class="py-lineno"> 800</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">s</tt> </tt>
+</div></div><a name="L801"></a><tt class="py-lineno"> 801</tt>  <tt class="py-line"> </tt>
+<a name="DotGraphUmlModuleNode"></a><div id="DotGraphUmlModuleNode-def"><a name="L802"></a><tt class="py-lineno"> 802</tt> <a class="py-toggle" href="#" id="DotGraphUmlModuleNode-toggle" onclick="return toggle('DotGraphUmlModuleNode');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="epydoc.docwriter.dotgraph.DotGraphUmlModuleNode-class.html">DotGraphUmlModuleNode</a><tt class="py-op">(</tt><tt class="py-base-class">DotGraphNode</tt><tt class="py-o [...]
+</div><div id="DotGraphUmlModuleNode-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="DotGraphUmlModuleNode-expanded"><a name="L803"></a><tt class="py-lineno"> 803</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L804"></a><tt class="py-lineno"> 804</tt>  <tt class="py-line"><tt class="py-docstring">    A specialized dot grah node used to display `ModuleDoc`\s using</tt> </tt>
+<a name="L805"></a><tt class="py-lineno"> 805</tt>  <tt class="py-line"><tt class="py-docstring">    UML notation.  Simple module nodes look like::</tt> </tt>
+<a name="L806"></a><tt class="py-lineno"> 806</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L807"></a><tt class="py-lineno"> 807</tt>  <tt class="py-line"><tt class="py-docstring">        .----.</tt> </tt>
+<a name="L808"></a><tt class="py-lineno"> 808</tt>  <tt class="py-line"><tt class="py-docstring">        +------------+</tt> </tt>
+<a name="L809"></a><tt class="py-lineno"> 809</tt>  <tt class="py-line"><tt class="py-docstring">        | modulename |</tt> </tt>
+<a name="L810"></a><tt class="py-lineno"> 810</tt>  <tt class="py-line"><tt class="py-docstring">        +------------+</tt> </tt>
+<a name="L811"></a><tt class="py-lineno"> 811</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L812"></a><tt class="py-lineno"> 812</tt>  <tt class="py-line"><tt class="py-docstring">    Packages nodes are drawn with their modules & subpackages nested</tt> </tt>
+<a name="L813"></a><tt class="py-lineno"> 813</tt>  <tt class="py-line"><tt class="py-docstring">    inside::</tt> </tt>
+<a name="L814"></a><tt class="py-lineno"> 814</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt>
+<a name="L815"></a><tt class="py-lineno"> 815</tt>  <tt class="py-line"><tt class="py-docstring">        .----.</tt> </tt>
+<a name="L816"></a><tt class="py-lineno"> 816</tt>  <tt class="py-line"><tt class="py-docstring">        +----------------------------------------+</tt> </tt>
+<a name="L817"></a><tt class="py-lineno"> 817</tt>  <tt class="py-line"><tt class="py-docstring">        | packagename                            |</tt> </tt>
+<a name="L818"></a><tt class="py-lineno"> 818</tt>  <tt class="py-line"><tt class="py-docstring">        |                                        |</tt> </tt>
+<a name="L819"></a><tt class="py-lineno"> 819</tt>  <tt class="py-line"><tt class="py-docstring">        |  .----.       .----.       .----.      |</tt> </tt>
+<a name="L820"></a><tt class="py-lineno"> 820</tt>  <tt class="py-line"><tt class="py-docstring">        |  +---------+  +---------+  +---------+ |</tt> </tt>
+<a name="L821"></a><tt class="py-lineno"> 821</tt>  <tt class="py-line"><tt class="py-docstring">        |  | module1 |  | module2 |  | module3 | |</tt> </tt>
+<a name="L822"></a><tt class="py-lineno"> 822</tt>  <tt class="py-line"><tt class="py-docstring">        |  +---------+  +---------+  +---------+ |</tt> </tt>
+<a name="L823"></a><tt class="py-lineno"> 823</tt>  <tt class="py-line"><tt class="py-docstring">        |                                        |</tt> </tt>
+<a name="L824"></a><tt class="py-lineno"> 824</tt>  <tt class="py-line"><tt class="py-docstring">        +----------------------------------------+</tt> </tt>
+<a name="L825"></a><tt class="py-lineno"> 825</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L826"></a><tt class="py-lineno"> 826</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="DotGraphUmlModuleNode.__init__"></a><div id="DotGraphUmlModuleNode.__init__-def"><a name="L827"></a><tt class="py-lineno"> 827</tt> <a class="py-toggle" href="#" id="DotGraphUmlModuleNode.__init__-toggle" onclick="return toggle('DotGraphUmlModuleNode.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.dotgraph.DotGraphUmlModuleNode-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">sel [...]
+<a name="L828"></a><tt class="py-lineno"> 828</tt>  <tt class="py-line">                 <tt class="py-param">excluded_submodules</tt><tt class="py-op">=</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-param">options</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="DotGraphUmlModuleNode.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DotGraphUmlModuleNode.__init__-expanded"><a name="L829"></a><tt class="py-lineno"> 829</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">module_doc</tt> <tt class="py-op">=</tt> <tt class="py-name">module_doc</tt> </tt>
+<a name="L830"></a><tt class="py-lineno"> 830</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">linker</tt> <tt class="py-op">=</tt> <tt class="py-name">linker</tt> </tt>
+<a name="L831"></a><tt class="py-lineno"> 831</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">context</tt> <tt class="py-op">=</tt> <tt class="py-name">context</tt> </tt>
+<a name="L832"></a><tt class="py-lineno"> 832</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">collapsed</tt> <tt class="py-op">=</tt> <tt class="py-name">collapsed</tt> </tt>
+<a name="L833"></a><tt class="py-lineno"> 833</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">options</tt> <tt class="py-op">=</tt> <tt class="py-name">options</tt> </tt>
+<a name="L834"></a><tt class="py-lineno"> 834</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">excluded_submodules</tt> <tt class="py-op">=</tt> <tt class="py-name">excluded_submodules</tt> </tt>
+<a name="L835"></a><tt class="py-lineno"> 835</tt>  <tt class="py-line">        <tt id="link-238" class="py-name"><a title="epydoc.docwriter.dotgraph.DotGraphNode" class="py-name" href="#" onclick="return doclink('link-238', 'DotGraphNode', 'link-92');">DotGraphNode</a></tt><tt class="py-op">.</tt><tt id="link-239" class="py-name"><a title="epydoc.apidoc.APIDoc.__init__
+epydoc.apidoc.DocIndex.__init__
+epydoc.apidoc.DottedName.__init__
+epydoc.apidoc.NamespaceDoc.__init__
+epydoc.apidoc.VariableDoc.__init__
+epydoc.apidoc._Sentinel.__init__
+epydoc.checker.DocChecker.__init__
+epydoc.cli.ConsoleLogger.__init__
+epydoc.cli.HTMLLogger.__init__
+epydoc.cli.TerminalController.__init__
+epydoc.cli.UnifiedProgressConsoleLogger.__init__
+epydoc.docbuilder.BuildOptions.__init__
+epydoc.docbuilder._ProgressEstimator.__init__
+epydoc.docintrospecter._DevNull.__init__
+epydoc.docstringparser.DocstringField.__init__
+epydoc.docwriter.dotgraph.DotGraph.__init__
+epydoc.docwriter.dotgraph.DotGraphEdge.__init__
+epydoc.docwriter.dotgraph.DotGraphNode.__init__
+epydoc.docwriter.dotgraph.DotGraphUmlClassNode.__init__
+epydoc.docwriter.dotgraph.DotGraphUmlModuleNode.__init__
+epydoc.docwriter.html.HTMLWriter.__init__
+epydoc.docwriter.html._HTMLDocstringLinker.__init__
+epydoc.docwriter.html_colorize.PythonSourceColorizer.__init__
+epydoc.docwriter.latex.LatexWriter.__init__
+epydoc.docwriter.xlink.ApiLinkReader.__init__
+epydoc.docwriter.xlink.DocUrlGenerator.__init__
+epydoc.gui.EpydocGUI.__init__
+epydoc.gui.GUILogger.__init__
+epydoc.log.SimpleLogger.__init__
+epydoc.markup.ConcatenatedDocstring.__init__
+epydoc.markup.Field.__init__
+epydoc.markup.ParseError.__init__
+epydoc.markup.epytext.ColorizingError.__init__
+epydoc.markup.epytext.Element.__init__
+epydoc.markup.epytext.ParsedEpytextDocstring.__init__
+epydoc.markup.epytext.Token.__init__
+epydoc.markup.javadoc.ParsedJavadocDocstring.__init__
+epydoc.markup.plaintext.ParsedPlaintextDocstring.__init__
+epydoc.markup.pyval_repr.ColorizedPyvalRepr.__init__
+epydoc.markup.pyval_repr.PyvalColorizer.__init__
+epydoc.markup.pyval_repr._ColorizerState.__init__
+epydoc.markup.restructuredtext.ParsedRstDocstring.__init__
+epydoc.markup.restructuredtext._DocumentPseudoWriter.__init__
+epydoc.markup.restructuredtext._EpydocHTMLTranslator.__init__
+epydoc.markup.restructuredtext._EpydocLaTeXTranslator.__init__
+epydoc.markup.restructuredtext._EpydocReader.__init__
+epydoc.markup.restructuredtext._SplitFieldsTranslator.__init__
+epydoc.markup.restructuredtext._SummaryExtractor.__init__
+epydoc.markup.restructuredtext._TermsExtractor.__init__
+epydoc.markup.restructuredtext.dotgraph.__init__
+epydoc.util.RunSubprocessError.__init__" class="py-name" href="#" onclick="return doclink('link-239', '__init__', 'link-112');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">shape</tt><tt class="py-op">=</tt><tt class="py-string">'plaintext'</tt><tt class="py-op">,</tt> </tt>
+<a name="L836"></a><tt class="py-lineno"> 836</tt>  <tt class="py-line">                              <tt id="link-240" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.href" class="py-name" href="#" onclick="return doclink('link-240', 'href', 'link-113');">href</a></tt><tt class="py-op">=</tt><tt class="py-name">linker</tt><tt class="py-op">.</tt><tt id="link-241" class="py-name"><a title="epydoc.docwriter.html._HTMLDocstringLinker.url_for" class="py-name" href="#" onclick="re [...]
+<a name="L837"></a><tt class="py-lineno"> 837</tt>  <tt class="py-line">                              <tt class="py-name">tooltip</tt><tt class="py-op">=</tt><tt class="py-name">module_doc</tt><tt class="py-op">.</tt><tt id="link-243" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-243', 'canonical_name', 'link-103');">canonical_name</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L838"></a><tt class="py-lineno"> 838</tt>  <tt class="py-line"> </tt>
+<a name="L839"></a><tt class="py-lineno"> 839</tt>  <tt class="py-line">    <tt class="py-comment">#: Expects: (color, color, url, tooltip, body)</tt> </tt>
+<a name="L840"></a><tt class="py-lineno"> 840</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-244" class="py-name" targets="Variable epydoc.docwriter.dotgraph.DotGraphUmlModuleNode._MODULE_LABEL=epydoc.docwriter.dotgraph.DotGraphUmlModuleNode-class.html#_MODULE_LABEL"><a title="epydoc.docwriter.dotgraph.DotGraphUmlModuleNode._MODULE_LABEL" class="py-name" href="#" onclick="return doclink('link-244', '_MODULE_LABEL', 'link-244');">_MODULE_LABEL</a></tt> <tt class="p [...]
+<a name="L841"></a><tt class="py-lineno"> 841</tt>  <tt class="py-line"><tt class="py-string">    <TABLE BORDER="0" CELLBORDER="0" CELLSPACING="0" ALIGN="LEFT"></tt> </tt>
+<a name="L842"></a><tt class="py-lineno"> 842</tt>  <tt class="py-line"><tt class="py-string">    <TR><TD ALIGN="LEFT" VALIGN="BOTTOM" HEIGHT="8" WIDTH="16"</tt> </tt>
+<a name="L843"></a><tt class="py-lineno"> 843</tt>  <tt class="py-line"><tt class="py-string">            FIXEDSIZE="true" BGCOLOR="%s" BORDER="1" PORT="tab"></TD></TR></tt> </tt>
+<a name="L844"></a><tt class="py-lineno"> 844</tt>  <tt class="py-line"><tt class="py-string">    <TR><TD ALIGN="LEFT" VALIGN="TOP" BGCOLOR="%s" BORDER="1" WIDTH="20"</tt> </tt>
+<a name="L845"></a><tt class="py-lineno"> 845</tt>  <tt class="py-line"><tt class="py-string">            PORT="body" HREF="%s" TOOLTIP="%s">%s</TD></TR></tt> </tt>
+<a name="L846"></a><tt class="py-lineno"> 846</tt>  <tt class="py-line"><tt class="py-string">    </TABLE>'''</tt> </tt>
+<a name="L847"></a><tt class="py-lineno"> 847</tt>  <tt class="py-line"> </tt>
+<a name="L848"></a><tt class="py-lineno"> 848</tt>  <tt class="py-line">    <tt class="py-comment">#: Expects: (name, body_rows)</tt> </tt>
+<a name="L849"></a><tt class="py-lineno"> 849</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-245" class="py-name" targets="Variable epydoc.docwriter.dotgraph.DotGraphUmlModuleNode._NESTED_BODY=epydoc.docwriter.dotgraph.DotGraphUmlModuleNode-class.html#_NESTED_BODY"><a title="epydoc.docwriter.dotgraph.DotGraphUmlModuleNode._NESTED_BODY" class="py-name" href="#" onclick="return doclink('link-245', '_NESTED_BODY', 'link-245');">_NESTED_BODY</a></tt> <tt class="py-op" [...]
+<a name="L850"></a><tt class="py-lineno"> 850</tt>  <tt class="py-line"><tt class="py-string">    <TABLE BORDER="0" CELLBORDER="0" CELLPADDING="0" CELLSPACING="0"></tt> </tt>
+<a name="L851"></a><tt class="py-lineno"> 851</tt>  <tt class="py-line"><tt class="py-string">    <TR><TD ALIGN="LEFT">%s</TD></TR></tt> </tt>
+<a name="L852"></a><tt class="py-lineno"> 852</tt>  <tt class="py-line"><tt class="py-string">    %s</tt> </tt>
+<a name="L853"></a><tt class="py-lineno"> 853</tt>  <tt class="py-line"><tt class="py-string">    </TABLE>'''</tt> </tt>
+<a name="L854"></a><tt class="py-lineno"> 854</tt>  <tt class="py-line"> </tt>
+<a name="L855"></a><tt class="py-lineno"> 855</tt>  <tt class="py-line">    <tt class="py-comment">#: Expects: (cells,)</tt> </tt>
+<a name="L856"></a><tt class="py-lineno"> 856</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-246" class="py-name" targets="Variable epydoc.docwriter.dotgraph.DotGraphUmlModuleNode._NESTED_BODY_ROW=epydoc.docwriter.dotgraph.DotGraphUmlModuleNode-class.html#_NESTED_BODY_ROW"><a title="epydoc.docwriter.dotgraph.DotGraphUmlModuleNode._NESTED_BODY_ROW" class="py-name" href="#" onclick="return doclink('link-246', '_NESTED_BODY_ROW', 'link-246');">_NESTED_BODY_ROW</a></t [...]
+<a name="L857"></a><tt class="py-lineno"> 857</tt>  <tt class="py-line"><tt class="py-string">    <TR><TD></tt> </tt>
+<a name="L858"></a><tt class="py-lineno"> 858</tt>  <tt class="py-line"><tt class="py-string">      <TABLE BORDER="0" CELLBORDER="0"><TR>%s</TR></TABLE></tt> </tt>
+<a name="L859"></a><tt class="py-lineno"> 859</tt>  <tt class="py-line"><tt class="py-string">    </TD></TR>'''</tt> </tt>
+<a name="L860"></a><tt class="py-lineno"> 860</tt>  <tt class="py-line">     </tt>
+<a name="DotGraphUmlModuleNode._get_html_label"></a><div id="DotGraphUmlModuleNode._get_html_label-def"><a name="L861"></a><tt class="py-lineno"> 861</tt> <a class="py-toggle" href="#" id="DotGraphUmlModuleNode._get_html_label-toggle" onclick="return toggle('DotGraphUmlModuleNode._get_html_label');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.dotgraph.DotGraphUmlModuleNode-class.html#_get_html_label">_get_html_label</a><tt cl [...]
+</div><div id="DotGraphUmlModuleNode._get_html_label-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DotGraphUmlModuleNode._get_html_label-expanded"><a name="L862"></a><tt class="py-lineno"> 862</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L863"></a><tt class="py-lineno"> 863</tt>  <tt class="py-line"><tt class="py-docstring">        :Return: (label, depth, width) where:</tt> </tt>
+<a name="L864"></a><tt class="py-lineno"> 864</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt>
+<a name="L865"></a><tt class="py-lineno"> 865</tt>  <tt class="py-line"><tt class="py-docstring">          - ``label`` is the HTML label</tt> </tt>
+<a name="L866"></a><tt class="py-lineno"> 866</tt>  <tt class="py-line"><tt class="py-docstring">          - ``depth`` is the depth of the package tree (for coloring)</tt> </tt>
+<a name="L867"></a><tt class="py-lineno"> 867</tt>  <tt class="py-line"><tt class="py-docstring">          - ``width`` is the max width of the HTML label, roughly in</tt> </tt>
+<a name="L868"></a><tt class="py-lineno"> 868</tt>  <tt class="py-line"><tt class="py-docstring">            units of characters.</tt> </tt>
+<a name="L869"></a><tt class="py-lineno"> 869</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L870"></a><tt class="py-lineno"> 870</tt>  <tt class="py-line">        <tt class="py-name">MAX_ROW_WIDTH</tt> <tt class="py-op">=</tt> <tt class="py-number">80</tt> <tt class="py-comment"># unit is roughly characters.</tt> </tt>
+<a name="L871"></a><tt class="py-lineno"> 871</tt>  <tt class="py-line">        <tt class="py-name">pkg_name</tt> <tt class="py-op">=</tt> <tt id="link-247" class="py-name" targets="Variable epydoc.apidoc.ModuleDoc.package=epydoc.apidoc.ModuleDoc-class.html#package"><a title="epydoc.apidoc.ModuleDoc.package" class="py-name" href="#" onclick="return doclink('link-247', 'package', 'link-247');">package</a></tt><tt class="py-op">.</tt><tt id="link-248" class="py-name"><a title="epydoc.apido [...]
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-248', 'canonical_name', 'link-103');">canonical_name</a></tt> </tt>
+<a name="L872"></a><tt class="py-lineno"> 872</tt>  <tt class="py-line">        <tt class="py-name">pkg_url</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">linker</tt><tt class="py-op">.</tt><tt id="link-249" class="py-name"><a title="epydoc.docwriter.html._HTMLDocstringLinker.url_for" class="py-name" href="#" onclick="return doclink('link-249', 'url_for', 'link-55');">url_for</a></tt><tt class="py-op">(</tt><tt id="link-250" class=" [...]
+<a name="L873"></a><tt class="py-lineno"> 873</tt>  <tt class="py-line">         </tt>
+<a name="L874"></a><tt class="py-lineno"> 874</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-keyword">not</tt> <tt id="link-252" class="py-name"><a title="epydoc.apidoc.ModuleDoc.package" class="py-name" href="#" onclick="return doclink('link-252', 'package', 'link-247');">package</a></tt><tt class="py-op">.</tt><tt id="link-253" class="py-name" targets="Variable epydoc.apidoc.ModuleDoc.is_package=epydoc.apidoc.ModuleDoc-class.html# [...]
+<a name="L875"></a><tt class="py-lineno"> 875</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">collapsed</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L876"></a><tt class="py-lineno"> 876</tt>  <tt class="py-line">            <tt class="py-name">pkg_color</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-256" class="py-name" targets="Method epydoc.docwriter.dotgraph.DotGraphUmlModuleNode._color()=epydoc.docwriter.dotgraph.DotGraphUmlModuleNode-class.html#_color"><a title="epydoc.docwriter.dotgraph.DotGraphUmlModuleNode._color" class="py-name" href="#" onclick="return doclink('link- [...]
+<a name="L877"></a><tt class="py-lineno"> 877</tt>  <tt class="py-line">            <tt id="link-258" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.label" class="py-name" href="#" onclick="return doclink('link-258', 'label', 'link-84');">label</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-259" class="py-name"><a title="epydoc.docwriter.dotgraph.DotGraphUmlModuleNode._MODULE_LABEL" class="py-name" href="#" onclick="retur [...]
+<a name="L878"></a><tt class="py-lineno"> 878</tt>  <tt class="py-line">                                          <tt class="py-name">pkg_url</tt><tt class="py-op">,</tt> <tt class="py-name">pkg_name</tt><tt class="py-op">,</tt> <tt class="py-name">pkg_name</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L879"></a><tt class="py-lineno"> 879</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt id="link-260" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.label" class="py-name" href="#" onclick="return doclink('link-260', 'label', 'link-84');">label</a></tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">pkg_name</tt><tt [...]
+<a name="L880"></a><tt class="py-lineno"> 880</tt>  <tt class="py-line">                 </tt>
+<a name="L881"></a><tt class="py-lineno"> 881</tt>  <tt class="py-line">        <tt class="py-comment"># Get the label for each submodule, and divide them into rows.</tt> </tt>
+<a name="L882"></a><tt class="py-lineno"> 882</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">row_list</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-string">''</tt><tt class="py-op">]</tt> </tt>
+<a name="L883"></a><tt class="py-lineno"> 883</tt>  <tt class="py-line">        <tt class="py-name">row_width</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L884"></a><tt class="py-lineno"> 884</tt>  <tt class="py-line">        <tt class="py-name">max_depth</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L885"></a><tt class="py-lineno"> 885</tt>  <tt class="py-line">        <tt class="py-name">max_row_width</tt> <tt class="py-op">=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">pkg_name</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">+</tt><tt class="py-number">3</tt> </tt>
+<a name="L886"></a><tt class="py-lineno"> 886</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">submodule</tt> <tt class="py-keyword">in</tt> <tt id="link-261" class="py-name"><a title="epydoc.apidoc.ModuleDoc.package" class="py-name" href="#" onclick="return doclink('link-261', 'package', 'link-247');">package</a></tt><tt class="py-op">.</tt><tt id="link-262" class="py-name"><a title="epydoc.apidoc.ModuleDoc.submodules" class="py-name" href="#" onclic [...]
+<a name="L887"></a><tt class="py-lineno"> 887</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">submodule</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">excluded_submodules</tt><tt class="py-op">:</tt> <tt class="py-keyword">continue</tt> </tt>
+<a name="L888"></a><tt class="py-lineno"> 888</tt>  <tt class="py-line">            <tt class="py-comment"># Get the submodule's label.</tt> </tt>
+<a name="L889"></a><tt class="py-lineno"> 889</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt id="link-263" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.label" class="py-name" href="#" onclick="return doclink('link-263', 'label', 'link-84');">label</a></tt><tt class="py-op">,</tt> <tt class="py-name">depth</tt><tt class="py-op">,</tt> <tt class="py-name">width</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id=" [...]
+epydoc.docwriter.dotgraph.DotGraphUmlModuleNode._get_html_label" class="py-name" href="#" onclick="return doclink('link-264', '_get_html_label', 'link-236');">_get_html_label</a></tt><tt class="py-op">(</tt><tt class="py-name">submodule</tt><tt class="py-op">)</tt> </tt>
+<a name="L890"></a><tt class="py-lineno"> 890</tt>  <tt class="py-line">            <tt class="py-comment"># Check if we should start a new row.</tt> </tt>
+<a name="L891"></a><tt class="py-lineno"> 891</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt class="py-name">row_width</tt> <tt class="py-op">></tt> <tt class="py-number">0</tt> <tt class="py-keyword">and</tt> <tt class="py-name">width</tt><tt class="py-op">+</tt><tt class="py-name">row_width</tt> <tt class="py-op">></tt> <tt class="py-name">MAX_ROW_WIDTH</tt><tt class="py-op">:</tt> </tt>
+<a name="L892"></a><tt class="py-lineno"> 892</tt>  <tt class="py-line">                <tt class="py-name">row_list</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">''</tt><tt class="py-op">)</tt> </tt>
+<a name="L893"></a><tt class="py-lineno"> 893</tt>  <tt class="py-line">                <tt class="py-name">row_width</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L894"></a><tt class="py-lineno"> 894</tt>  <tt class="py-line">            <tt class="py-comment"># Add the submodule's label to the row.</tt> </tt>
+<a name="L895"></a><tt class="py-lineno"> 895</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">row_width</tt> <tt class="py-op">+=</tt> <tt class="py-name">width</tt> </tt>
+<a name="L896"></a><tt class="py-lineno"> 896</tt>  <tt class="py-line">            <tt class="py-name">row_list</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">+=</tt> <tt class="py-string">'<TD ALIGN="LEFT">%s</TD>'</tt> <tt class="py-op">%</tt> <tt id="link-265" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.label" class="py-name" href="#" onclick="return doclink('link-265', 'label', ' [...]
+<a name="L897"></a><tt class="py-lineno"> 897</tt>  <tt class="py-line">            <tt class="py-comment"># Update our max's.</tt> </tt>
+<a name="L898"></a><tt class="py-lineno"> 898</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">max_depth</tt> <tt class="py-op">=</tt> <tt class="py-name">max</tt><tt class="py-op">(</tt><tt class="py-name">depth</tt><tt class="py-op">,</tt> <tt class="py-name">max_depth</tt><tt class="py-op">)</tt> </tt>
+<a name="L899"></a><tt class="py-lineno"> 899</tt>  <tt class="py-line">            <tt class="py-name">max_row_width</tt> <tt class="py-op">=</tt> <tt class="py-name">max</tt><tt class="py-op">(</tt><tt class="py-name">row_width</tt><tt class="py-op">,</tt> <tt class="py-name">max_row_width</tt><tt class="py-op">)</tt> </tt>
+<a name="L900"></a><tt class="py-lineno"> 900</tt>  <tt class="py-line"> </tt>
+<a name="L901"></a><tt class="py-lineno"> 901</tt>  <tt class="py-line">        <tt class="py-comment"># Figure out which color to use.</tt> </tt>
+<a name="L902"></a><tt class="py-lineno"> 902</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">pkg_color</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-266" class="py-name"><a title="epydoc.docwriter.dotgraph.DotGraphUmlModuleNode._color" class="py-name" href="#" onclick="return doclink('link-266', '_color', 'link-256');">_color</a></tt><tt class="py-op">(</tt><tt id="link-267" class="py-name"><a title="epy [...]
+<a name="L903"></a><tt class="py-lineno"> 903</tt>  <tt class="py-line">         </tt>
+<a name="L904"></a><tt class="py-lineno"> 904</tt>  <tt class="py-line">        <tt class="py-comment"># Assemble & return the label.</tt> </tt>
+<a name="L905"></a><tt class="py-lineno"> 905</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">rows</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-268" class="py-name"><a title="epydoc.docwriter.dotgraph.DotGraphUmlModuleNode._NESTED_BODY_ROW" class="py-name" href="#" onclick="re [...]
+<a name="L906"></a><tt class="py-lineno"> 906</tt>  <tt class="py-line">        <tt id="link-269" class="py-name"><a title="epydoc.markup.Field.body" class="py-name" href="#" onclick="return doclink('link-269', 'body', 'link-21');">body</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-270" class="py-name"><a title="epydoc.docwriter.dotgraph.DotGraphUmlModuleNode._NESTED_BODY" class="py-name" href="#" onclick="return doclink('link-270', ' [...]
+<a name="L907"></a><tt class="py-lineno"> 907</tt>  <tt class="py-line">        <tt id="link-271" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.label" class="py-name" href="#" onclick="return doclink('link-271', 'label', 'link-84');">label</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-272" class="py-name"><a title="epydoc.docwriter.dotgraph.DotGraphUmlModuleNode._MODULE_LABEL" class="py-name" href="#" onclick="return do [...]
+<a name="L908"></a><tt class="py-lineno"> 908</tt>  <tt class="py-line">                                      <tt class="py-name">pkg_url</tt><tt class="py-op">,</tt> <tt class="py-name">pkg_name</tt><tt class="py-op">,</tt> <tt id="link-273" class="py-name"><a title="epydoc.markup.Field.body" class="py-name" href="#" onclick="return doclink('link-273', 'body', 'link-21');">body</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L909"></a><tt class="py-lineno"> 909</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-274" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.label" class="py-name" href="#" onclick="return doclink('link-274', 'label', 'link-84');">label</a></tt><tt class="py-op">,</tt> <tt class="py-name">max_depth</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-name">max_row_width</tt> </tt>
+</div><a name="L910"></a><tt class="py-lineno"> 910</tt>  <tt class="py-line"> </tt>
+<a name="L911"></a><tt class="py-lineno"> 911</tt>  <tt class="py-line">    <tt id="link-275" class="py-name" targets="Variable epydoc.docwriter.dotgraph.DotGraphUmlModuleNode._COLOR_DIFF=epydoc.docwriter.dotgraph.DotGraphUmlModuleNode-class.html#_COLOR_DIFF"><a title="epydoc.docwriter.dotgraph.DotGraphUmlModuleNode._COLOR_DIFF" class="py-name" href="#" onclick="return doclink('link-275', '_COLOR_DIFF', 'link-275');">_COLOR_DIFF</a></tt> <tt class="py-op">=</tt> <tt class="py-number">24< [...]
+<a name="DotGraphUmlModuleNode._color"></a><div id="DotGraphUmlModuleNode._color-def"><a name="L912"></a><tt class="py-lineno"> 912</tt> <a class="py-toggle" href="#" id="DotGraphUmlModuleNode._color-toggle" onclick="return toggle('DotGraphUmlModuleNode._color');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.dotgraph.DotGraphUmlModuleNode-class.html#_color">_color</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt cl [...]
+</div><div id="DotGraphUmlModuleNode._color-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DotGraphUmlModuleNode._color-expanded"><a name="L913"></a><tt class="py-lineno"> 913</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-276" class="py-name"><a title="epydoc.apidoc.ModuleDoc.package" class="py-name" href="#" onclick="return doclink('link-276', 'package', 'link-247');">package</a></tt> <tt class="py-op">==</tt> <tt class="py-n [...]
+<a name="L914"></a><tt class="py-lineno"> 914</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt>  </tt>
+<a name="L915"></a><tt class="py-lineno"> 915</tt>  <tt class="py-line">            <tt class="py-comment"># Parse the base color.</tt> </tt>
+<a name="L916"></a><tt class="py-lineno"> 916</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">match</tt><tt class="py-op">(</tt><tt id="link-278" class="py-name"><a title="epydoc.docwriter.dotgraph.MODULE_BG" class="py-name" href="#" onclick="return doclink('link-278', 'MODULE_BG', 'link-8');">MODULE_BG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'r#[0-9a-fA- [...]
+<a name="L917"></a><tt class="py-lineno"> 917</tt>  <tt class="py-line">                <tt class="py-name">base</tt> <tt class="py-op">=</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt id="link-279" class="py-name"><a title="epydoc.docwriter.dotgraph.MODULE_BG" class="py-name" href="#" onclick="return doclink('link-279', 'MODULE_BG', 'link-8');">MODULE_BG</a></tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="p [...]
+<a name="L918"></a><tt class="py-lineno"> 918</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L919"></a><tt class="py-lineno"> 919</tt>  <tt class="py-line">                <tt class="py-name">base</tt> <tt class="py-op">=</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-string">'d8e8ff'</tt><tt class="py-op">,</tt> <tt class="py-number">16</tt><tt class="py-op">)</tt> </tt>
+<a name="L920"></a><tt class="py-lineno"> 920</tt>  <tt class="py-line">            <tt class="py-name">red</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">base</tt> <tt class="py-op">&</tt> <tt class="py-number">0xff0000</tt><tt class="py-op">)</tt> <tt class="py-op">>></tt> <tt class="py-number">16</tt> </tt>
+<a name="L921"></a><tt class="py-lineno"> 921</tt>  <tt class="py-line">            <tt class="py-name">green</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">base</tt> <tt class="py-op">&</tt> <tt class="py-number">0x00ff00</tt><tt class="py-op">)</tt> <tt class="py-op">>></tt> <tt class="py-number">8</tt> </tt>
+<a name="L922"></a><tt class="py-lineno"> 922</tt>  <tt class="py-line">            <tt class="py-name">blue</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">base</tt> <tt class="py-op">&</tt> <tt class="py-number">0x0000ff</tt><tt class="py-op">)</tt> </tt>
+<a name="L923"></a><tt class="py-lineno"> 923</tt>  <tt class="py-line">            <tt class="py-comment"># Make it darker with each level of depth. (but not *too*</tt> </tt>
+<a name="L924"></a><tt class="py-lineno"> 924</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># dark -- package name needs to be readable)</tt> </tt>
+<a name="L925"></a><tt class="py-lineno"> 925</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">red</tt> <tt class="py-op">=</tt> <tt class="py-name">max</tt><tt class="py-op">(</tt><tt class="py-number">64</tt><tt class="py-op">,</tt> <tt class="py-name">red</tt><tt class="py-op">-</tt><tt class="py-op">(</tt><tt class="py-name">depth</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">*</tt><tt class="py- [...]
+<a name="L926"></a><tt class="py-lineno"> 926</tt>  <tt class="py-line">            <tt class="py-name">green</tt> <tt class="py-op">=</tt> <tt class="py-name">max</tt><tt class="py-op">(</tt><tt class="py-number">64</tt><tt class="py-op">,</tt> <tt class="py-name">green</tt><tt class="py-op">-</tt><tt class="py-op">(</tt><tt class="py-name">depth</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">*</tt><tt class="py-name">self</tt><tt class [...]
+<a name="L927"></a><tt class="py-lineno"> 927</tt>  <tt class="py-line">            <tt class="py-name">blue</tt> <tt class="py-op">=</tt> <tt class="py-name">max</tt><tt class="py-op">(</tt><tt class="py-number">64</tt><tt class="py-op">,</tt> <tt class="py-name">blue</tt><tt class="py-op">-</tt><tt class="py-op">(</tt><tt class="py-name">depth</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">*</tt><tt class="py-name">self</tt><tt class=" [...]
+<a name="L928"></a><tt class="py-lineno"> 928</tt>  <tt class="py-line">            <tt class="py-comment"># Convert it back to a color string</tt> </tt>
+<a name="L929"></a><tt class="py-lineno"> 929</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">return</tt> <tt class="py-string">'#%06x'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">red</tt><tt class="py-op"><<</tt><tt class="py-number">16</tt><tt class="py-op">)</tt><tt class="py-op">+</tt><tt class="py-op">(</tt><tt class="py-name">green</tt><tt class="py-op"><<</tt><tt class="py-nu [...]
+</div><a name="L930"></a><tt class="py-lineno"> 930</tt>  <tt class="py-line">         </tt>
+<a name="DotGraphUmlModuleNode.to_dotfile"></a><div id="DotGraphUmlModuleNode.to_dotfile-def"><a name="L931"></a><tt class="py-lineno"> 931</tt> <a class="py-toggle" href="#" id="DotGraphUmlModuleNode.to_dotfile-toggle" onclick="return toggle('DotGraphUmlModuleNode.to_dotfile');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.dotgraph.DotGraphUmlModuleNode-class.html#to_dotfile">to_dotfile</a><tt class="py-op">(</tt><tt class="p [...]
+</div><div id="DotGraphUmlModuleNode.to_dotfile-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DotGraphUmlModuleNode.to_dotfile-expanded"><a name="L932"></a><tt class="py-lineno"> 932</tt>  <tt class="py-line">        <tt class="py-name">attribs</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-string">'%s="%s"'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">k</tt><tt class="py-op">,</tt><tt id="link-283" class="p [...]
+<a name="L933"></a><tt class="py-lineno"> 933</tt>  <tt class="py-line">        <tt id="link-285" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.label" class="py-name" href="#" onclick="return doclink('link-285', 'label', 'link-84');">label</a></tt><tt class="py-op">,</tt> <tt class="py-name">depth</tt><tt class="py-op">,</tt> <tt class="py-name">width</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-286" class="py-name"><a tit [...]
+epydoc.docwriter.dotgraph.DotGraphUmlModuleNode._get_html_label" class="py-name" href="#" onclick="return doclink('link-286', '_get_html_label', 'link-236');">_get_html_label</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">module_doc</tt><tt class="py-op">)</tt> </tt>
+<a name="L934"></a><tt class="py-lineno"> 934</tt>  <tt class="py-line">        <tt class="py-name">attribs</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">'label=<%s>'</tt> <tt class="py-op">%</tt> <tt id="link-287" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.label" class="py-name" href="#" onclick="return doclink('link-287', 'label', 'link-84');">label</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L935"></a><tt class="py-lineno"> 935</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">'node%d%s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">id</tt><tt class="py-op">,</tt> <tt class="py-string">' [%s]'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-string">','</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op"> [...]
+</div></div><a name="L936"></a><tt class="py-lineno"> 936</tt>  <tt class="py-line"> </tt>
+<a name="L937"></a><tt class="py-lineno"> 937</tt>  <tt class="py-line"> </tt>
+<a name="L938"></a><tt class="py-lineno"> 938</tt>  <tt class="py-line">     </tt>
+<a name="L939"></a><tt class="py-lineno"> 939</tt>  <tt class="py-line"><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L940"></a><tt class="py-lineno"> 940</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#{ Graph Generation Functions</tt> </tt>
+<a name="L941"></a><tt class="py-lineno"> 941</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L942"></a><tt class="py-lineno"> 942</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="package_tree_graph"></a><div id="package_tree_graph-def"><a name="L943"></a><tt class="py-lineno"> 943</tt> <a class="py-toggle" href="#" id="package_tree_graph-toggle" onclick="return toggle('package_tree_graph');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.dotgraph-module.html#package_tree_graph">package_tree_graph</a><tt class="py-op">(</tt><tt class="py-param">packages</tt><tt class="py-op">,</tt> <tt class="py-para [...]
+</div><div id="package_tree_graph-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="package_tree_graph-expanded"><a name="L944"></a><tt class="py-lineno"> 944</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L945"></a><tt class="py-lineno"> 945</tt>  <tt class="py-line"><tt class="py-docstring">    Return a `DotGraph` that graphically displays the package</tt> </tt>
+<a name="L946"></a><tt class="py-lineno"> 946</tt>  <tt class="py-line"><tt class="py-docstring">    hierarchies for the given packages.</tt> </tt>
+<a name="L947"></a><tt class="py-lineno"> 947</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L948"></a><tt class="py-lineno"> 948</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'style'</tt><tt class="py-op">,</tt> <tt class="py-string">'uml'</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-string">'uml'</tt><tt class="py-op">:</tt> <tt class="py-comment"># default to uml style?</tt> </tt>
+<a name="L949"></a><tt class="py-lineno"> 949</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-288" class="py-name"><a title="epydoc.docwriter.dotgraph.get_dot_version" class="py-name" href="#" onclick="return doclink('link-288', 'get_dot_version', 'link-32');">get_dot_version</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">>=</tt> <tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L950"></a><tt class="py-lineno"> 950</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt id="link-289" class="py-name" targets="Function epydoc.docwriter.dotgraph.uml_package_tree_graph()=epydoc.docwriter.dotgraph-module.html#uml_package_tree_graph"><a title="epydoc.docwriter.dotgraph.uml_package_tree_graph" class="py-name" href="#" onclick="return doclink('link-289', 'uml_package_tree_graph', 'link-289');">uml_package_tree_graph</a></tt><tt class="py-op [...]
+<a name="L951"></a><tt class="py-lineno"> 951</tt>  <tt class="py-line">                                             <tt class="py-op">**</tt><tt class="py-name">options</tt><tt class="py-op">)</tt> </tt>
+<a name="L952"></a><tt class="py-lineno"> 952</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-string">'style'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">options</tt><tt class="py-op">:</tt> </tt>
+<a name="L953"></a><tt class="py-lineno"> 953</tt>  <tt class="py-line">            <tt id="link-290" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-290', 'log', 'link-1');">log</a></tt><tt class="py-op">.</tt><tt id="link-291" class="py-name"><a title="epydoc.checker.DocChecker.warning
+epydoc.log.warning" class="py-name" href="#" onclick="return doclink('link-291', 'warning', 'link-72');">warning</a></tt><tt class="py-op">(</tt><tt class="py-string">'UML style package trees require dot version 2.0+'</tt><tt class="py-op">)</tt> </tt>
+<a name="L954"></a><tt class="py-lineno"> 954</tt>  <tt class="py-line"> </tt>
+<a name="L955"></a><tt class="py-lineno"> 955</tt>  <tt class="py-line">    <tt id="link-292" class="py-name" targets="Method epydoc.markup.restructuredtext.dotgraph.graph()=epydoc.markup.restructuredtext.dotgraph-class.html#graph"><a title="epydoc.markup.restructuredtext.dotgraph.graph" class="py-name" href="#" onclick="return doclink('link-292', 'graph', 'link-292');">graph</a></tt> <tt class="py-op">=</tt> <tt id="link-293" class="py-name" targets="Class epydoc.docwriter.dotgraph.DotG [...]
+<a name="L956"></a><tt class="py-lineno"> 956</tt>  <tt class="py-line">                     <tt id="link-295" class="py-name"><a title="epydoc.markup.Field.body" class="py-name" href="#" onclick="return doclink('link-295', 'body', 'link-21');">body</a></tt><tt class="py-op">=</tt><tt class="py-string">'ranksep=.3\n;nodesep=.1\n'</tt><tt class="py-op">,</tt> </tt>
+<a name="L957"></a><tt class="py-lineno"> 957</tt>  <tt class="py-line">                     <tt class="py-name">edge_defaults</tt><tt class="py-op">=</tt><tt class="py-op">{</tt><tt class="py-string">'dir'</tt><tt class="py-op">:</tt><tt class="py-string">'none'</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
+<a name="L958"></a><tt class="py-lineno"> 958</tt>  <tt class="py-line">     </tt>
+<a name="L959"></a><tt class="py-lineno"> 959</tt>  <tt class="py-line">    <tt class="py-comment"># Options</tt> </tt>
+<a name="L960"></a><tt class="py-lineno"> 960</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'dir'</tt><tt class="py-op">,</tt> <tt class="py-string">'TB'</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-string">'TB'</tt><tt class="py-op">:</tt> <tt class="py-comment"># default: top-to-bottom</tt> </tt>
+<a name="L961"></a><tt class="py-lineno"> 961</tt>  <tt class="py-line">        <tt id="link-296" class="py-name"><a title="epydoc.markup.restructuredtext.dotgraph.graph" class="py-name" href="#" onclick="return doclink('link-296', 'graph', 'link-292');">graph</a></tt><tt class="py-op">.</tt><tt id="link-297" class="py-name"><a title="epydoc.markup.Field.body" class="py-name" href="#" onclick="return doclink('link-297', 'body', 'link-21');">body</a></tt> <tt class="py-op">+=</tt> <tt cla [...]
+<a name="L962"></a><tt class="py-lineno"> 962</tt>  <tt class="py-line"> </tt>
+<a name="L963"></a><tt class="py-lineno"> 963</tt>  <tt class="py-line">    <tt class="py-comment"># Get a list of all modules in the package.</tt> </tt>
+<a name="L964"></a><tt class="py-lineno"> 964</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">queue</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">packages</tt><tt class="py-op">)</tt> </tt>
+<a name="L965"></a><tt class="py-lineno"> 965</tt>  <tt class="py-line">    <tt class="py-name">modules</tt> <tt class="py-op">=</tt> <tt class="py-name">set</tt><tt class="py-op">(</tt><tt class="py-name">packages</tt><tt class="py-op">)</tt> </tt>
+<a name="L966"></a><tt class="py-lineno"> 966</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">module</tt> <tt class="py-keyword">in</tt> <tt class="py-name">queue</tt><tt class="py-op">:</tt> </tt>
+<a name="L967"></a><tt class="py-lineno"> 967</tt>  <tt class="py-line">        <tt class="py-name">queue</tt><tt class="py-op">.</tt><tt class="py-name">extend</tt><tt class="py-op">(</tt><tt class="py-name">module</tt><tt class="py-op">.</tt><tt id="link-298" class="py-name"><a title="epydoc.apidoc.ModuleDoc.submodules" class="py-name" href="#" onclick="return doclink('link-298', 'submodules', 'link-255');">submodules</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L968"></a><tt class="py-lineno"> 968</tt>  <tt class="py-line">        <tt class="py-name">modules</tt><tt class="py-op">.</tt><tt class="py-name">update</tt><tt class="py-op">(</tt><tt class="py-name">module</tt><tt class="py-op">.</tt><tt id="link-299" class="py-name"><a title="epydoc.apidoc.ModuleDoc.submodules" class="py-name" href="#" onclick="return doclink('link-299', 'submodules', 'link-255');">submodules</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L969"></a><tt class="py-lineno"> 969</tt>  <tt class="py-line"> </tt>
+<a name="L970"></a><tt class="py-lineno"> 970</tt>  <tt class="py-line">    <tt class="py-comment"># Add a node for each module.</tt> </tt>
+<a name="L971"></a><tt class="py-lineno"> 971</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">nodes</tt> <tt class="py-op">=</tt> <tt id="link-300" class="py-name" targets="Function epydoc.docwriter.dotgraph.add_valdoc_nodes()=epydoc.docwriter.dotgraph-module.html#add_valdoc_nodes"><a title="epydoc.docwriter.dotgraph.add_valdoc_nodes" class="py-name" href="#" onclick="return doclink('link-300', 'add_valdoc_nodes', 'link-300');">add_valdoc_nodes</a></tt><tt c [...]
+<a name="L972"></a><tt class="py-lineno"> 972</tt>  <tt class="py-line"> </tt>
+<a name="L973"></a><tt class="py-lineno"> 973</tt>  <tt class="py-line">    <tt class="py-comment"># Add an edge for each package/submodule relationship.</tt> </tt>
+<a name="L974"></a><tt class="py-lineno"> 974</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">for</tt> <tt class="py-name">module</tt> <tt class="py-keyword">in</tt> <tt class="py-name">modules</tt><tt class="py-op">:</tt> </tt>
+<a name="L975"></a><tt class="py-lineno"> 975</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">submodule</tt> <tt class="py-keyword">in</tt> <tt class="py-name">module</tt><tt class="py-op">.</tt><tt id="link-302" class="py-name"><a title="epydoc.apidoc.ModuleDoc.submodules" class="py-name" href="#" onclick="return doclink('link-302', 'submodules', 'link-255');">submodules</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L976"></a><tt class="py-lineno"> 976</tt>  <tt class="py-line">            <tt id="link-303" class="py-name"><a title="epydoc.markup.restructuredtext.dotgraph.graph" class="py-name" href="#" onclick="return doclink('link-303', 'graph', 'link-292');">graph</a></tt><tt class="py-op">.</tt><tt class="py-name">edges</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-304" class="py-name"><a title="epydoc.docwriter.dotgraph.DotGraphEdge" cl [...]
+<a name="L977"></a><tt class="py-lineno"> 977</tt>  <tt class="py-line">                                            <tt class="py-name">headport</tt><tt class="py-op">=</tt><tt class="py-string">'tab'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L978"></a><tt class="py-lineno"> 978</tt>  <tt class="py-line"> </tt>
+<a name="L979"></a><tt class="py-lineno"> 979</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-305" class="py-name"><a title="epydoc.markup.restructuredtext.dotgraph.graph" class="py-name" href="#" onclick="return doclink('link-305', 'graph', 'link-292');">graph</a></tt> </tt>
+</div><a name="L980"></a><tt class="py-lineno"> 980</tt>  <tt class="py-line"> </tt>
+<a name="uml_package_tree_graph"></a><div id="uml_package_tree_graph-def"><a name="L981"></a><tt class="py-lineno"> 981</tt> <a class="py-toggle" href="#" id="uml_package_tree_graph-toggle" onclick="return toggle('uml_package_tree_graph');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.dotgraph-module.html#uml_package_tree_graph">uml_package_tree_graph</a><tt class="py-op">(</tt><tt class="py-param">packages</tt><tt class="py-op">, [...]
+</div><div id="uml_package_tree_graph-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="uml_package_tree_graph-expanded"><a name="L982"></a><tt class="py-lineno"> 982</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L983"></a><tt class="py-lineno"> 983</tt>  <tt class="py-line"><tt class="py-docstring">    Return a `DotGraph` that graphically displays the package</tt> </tt>
+<a name="L984"></a><tt class="py-lineno"> 984</tt>  <tt class="py-line"><tt class="py-docstring">    hierarchies for the given packages as a nested set of UML</tt> </tt>
+<a name="L985"></a><tt class="py-lineno"> 985</tt>  <tt class="py-line"><tt class="py-docstring">    symbols.</tt> </tt>
+<a name="L986"></a><tt class="py-lineno"> 986</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L987"></a><tt class="py-lineno"> 987</tt>  <tt class="py-line">    <tt id="link-306" class="py-name"><a title="epydoc.markup.restructuredtext.dotgraph.graph" class="py-name" href="#" onclick="return doclink('link-306', 'graph', 'link-292');">graph</a></tt> <tt class="py-op">=</tt> <tt id="link-307" class="py-name"><a title="epydoc.docwriter.dotgraph.DotGraph" class="py-name" href="#" onclick="return doclink('link-307', 'DotGraph', 'link-293');">DotGraph</a></tt><tt class="py-op" [...]
+<a name="L988"></a><tt class="py-lineno"> 988</tt>  <tt class="py-line">    <tt class="py-comment"># Remove any packages whose containers are also in the list.</tt> </tt>
+<a name="L989"></a><tt class="py-lineno"> 989</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">root_packages</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L990"></a><tt class="py-lineno"> 990</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">package1</tt> <tt class="py-keyword">in</tt> <tt class="py-name">packages</tt><tt class="py-op">:</tt> </tt>
+<a name="L991"></a><tt class="py-lineno"> 991</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">package2</tt> <tt class="py-keyword">in</tt> <tt class="py-name">packages</tt><tt class="py-op">:</tt> </tt>
+<a name="L992"></a><tt class="py-lineno"> 992</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">package1</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">package2</tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L993"></a><tt class="py-lineno"> 993</tt>  <tt class="py-line">                <tt class="py-name">package2</tt><tt class="py-op">.</tt><tt id="link-309" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-309', 'canonical_name', 'link-103');">canonical_name</a></tt><tt class="py-op">.</tt><tt id="link-310" class="py-name" targets="Method epydoc.apidoc.DottedName.dominates()=epydoc.apidoc.DottedName-class.html#dominates"><a title="epydoc.apidoc.DottedName.dominates" class="py-name" href="#" onclick="return doclink('link-310', 'dominates', 'link-310');">dominates</a></tt><tt class="py-op">(</tt> [...]
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-311', 'canonical_name', 'link-103');">canonical_name</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L994"></a><tt class="py-lineno"> 994</tt>  <tt class="py-line">                <tt class="py-keyword">break</tt> </tt>
+<a name="L995"></a><tt class="py-lineno"> 995</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L996"></a><tt class="py-lineno"> 996</tt>  <tt class="py-line">            <tt class="py-name">root_packages</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">package1</tt><tt class="py-op">)</tt> </tt>
+<a name="L997"></a><tt class="py-lineno"> 997</tt>  <tt class="py-line">    <tt class="py-comment"># If the context is a variable, then get its value.</tt> </tt>
+<a name="L998"></a><tt class="py-lineno"> 998</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">context</tt><tt class="py-op">,</tt> <tt id="link-312" class="py-name" targets="Class epydoc.apidoc.VariableDoc=epydoc.apidoc.VariableDoc-class.html"><a title="epydoc.apidoc.VariableDoc" class="py-name" href="#" onclick="return doclink('link-312', 'VariableDoc', 'link-312');">V [...]
+<a name="L999"></a><tt class="py-lineno"> 999</tt>  <tt class="py-line">        <tt class="py-name">context</tt> <tt class="py-op">=</tt> <tt class="py-name">context</tt><tt class="py-op">.</tt><tt id="link-315" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-315', 'value', 'link-107');">value</a></tt> </tt>
+<a name="L1000"></a><tt class="py-lineno">1000</tt>  <tt class="py-line">    <tt class="py-comment"># Return a graph with one node for each root package.</tt> </tt>
+<a name="L1001"></a><tt class="py-lineno">1001</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">for</tt> <tt id="link-316" class="py-name"><a title="epydoc.apidoc.ModuleDoc.package" class="py-name" href="#" onclick="return doclink('link-316', 'package', 'link-247');">package</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">root_packages</tt><tt class="py-op">:</tt> </tt>
+<a name="L1002"></a><tt class="py-lineno">1002</tt>  <tt class="py-line">        <tt id="link-317" class="py-name"><a title="epydoc.markup.restructuredtext.dotgraph.graph" class="py-name" href="#" onclick="return doclink('link-317', 'graph', 'link-292');">graph</a></tt><tt class="py-op">.</tt><tt class="py-name">nodes</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-318" class="py-name" targets="Class epydoc.docwriter.dotgraph.DotGraphUmlMod [...]
+<a name="L1003"></a><tt class="py-lineno">1003</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-320" class="py-name"><a title="epydoc.markup.restructuredtext.dotgraph.graph" class="py-name" href="#" onclick="return doclink('link-320', 'graph', 'link-292');">graph</a></tt> </tt>
+</div><a name="L1004"></a><tt class="py-lineno">1004</tt>  <tt class="py-line"> </tt>
+<a name="L1005"></a><tt class="py-lineno">1005</tt>  <tt class="py-line"><tt class="py-comment">######################################################################</tt> </tt>
+<a name="class_tree_graph"></a><div id="class_tree_graph-def"><a name="L1006"></a><tt class="py-lineno">1006</tt> <a class="py-toggle" href="#" id="class_tree_graph-toggle" onclick="return toggle('class_tree_graph');">-</a><tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.dotgraph-module.html#class_tree_graph">class_tree_graph</a><tt class="py-op">(</tt><tt class="py-param">bases</tt><tt class="py-op">,</tt> <tt  [...]
+</div><div id="class_tree_graph-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="class_tree_graph-expanded"><a name="L1007"></a><tt class="py-lineno">1007</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L1008"></a><tt class="py-lineno">1008</tt>  <tt class="py-line"><tt class="py-docstring">    Return a `DotGraph` that graphically displays the class</tt> </tt>
+<a name="L1009"></a><tt class="py-lineno">1009</tt>  <tt class="py-line"><tt class="py-docstring">    hierarchy for the given classes.  Options:</tt> </tt>
+<a name="L1010"></a><tt class="py-lineno">1010</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1011"></a><tt class="py-lineno">1011</tt>  <tt class="py-line"><tt class="py-docstring">      - exclude</tt> </tt>
+<a name="L1012"></a><tt class="py-lineno">1012</tt>  <tt class="py-line"><tt class="py-docstring">      - dir: LR|RL|BT requests a left-to-right, right-to-left, or</tt> </tt>
+<a name="L1013"></a><tt class="py-lineno">1013</tt>  <tt class="py-line"><tt class="py-docstring">        bottom-to- top, drawing.  (corresponds to the dot option</tt> </tt>
+<a name="L1014"></a><tt class="py-lineno">1014</tt>  <tt class="py-line"><tt class="py-docstring">        'rankdir'</tt> </tt>
+<a name="L1015"></a><tt class="py-lineno">1015</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1016"></a><tt class="py-lineno">1016</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-321" class="py-name" targets="Variable epydoc.apidoc.ClassDoc.bases=epydoc.apidoc.ClassDoc-class.html#bases"><a title="epydoc.apidoc.ClassDoc.bases" class="py-name" href="#" onclick="return doclink('link-321', 'bases', 'link-321');">bases</a></tt><tt class="py-op">,</tt> <tt id="link-322" class="py-name"><a tit [...]
+<a name="L1017"></a><tt class="py-lineno">1017</tt>  <tt class="py-line">    <tt id="link-325" class="py-name"><a title="epydoc.markup.restructuredtext.dotgraph.graph" class="py-name" href="#" onclick="return doclink('link-325', 'graph', 'link-292');">graph</a></tt> <tt class="py-op">=</tt> <tt id="link-326" class="py-name"><a title="epydoc.docwriter.dotgraph.DotGraph" class="py-name" href="#" onclick="return doclink('link-326', 'DotGraph', 'link-293');">DotGraph</a></tt><tt class="py-op [...]
+<a name="L1018"></a><tt class="py-lineno">1018</tt>  <tt class="py-line">                     <tt id="link-329" class="py-name"><a title="epydoc.markup.Field.body" class="py-name" href="#" onclick="return doclink('link-329', 'body', 'link-21');">body</a></tt><tt class="py-op">=</tt><tt class="py-string">'ranksep=0.3\n'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1019"></a><tt class="py-lineno">1019</tt>  <tt class="py-line">                     <tt class="py-name">edge_defaults</tt><tt class="py-op">=</tt><tt class="py-op">{</tt><tt class="py-string">'sametail'</tt><tt class="py-op">:</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> <tt class="py-string">'dir'</tt><tt class="py-op">:</tt><tt class="py-string">'none'</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
+<a name="L1020"></a><tt class="py-lineno">1020</tt>  <tt class="py-line"> </tt>
+<a name="L1021"></a><tt class="py-lineno">1021</tt>  <tt class="py-line">    <tt class="py-comment"># Options</tt> </tt>
+<a name="L1022"></a><tt class="py-lineno">1022</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'dir'</tt><tt class="py-op">,</tt> <tt class="py-string">'TB'</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-string">'TB'</tt><tt class="py-op">:</tt> <tt class="py-comment"># default: top-down</tt> </tt>
+<a name="L1023"></a><tt class="py-lineno">1023</tt>  <tt class="py-line">        <tt id="link-330" class="py-name"><a title="epydoc.markup.restructuredtext.dotgraph.graph" class="py-name" href="#" onclick="return doclink('link-330', 'graph', 'link-292');">graph</a></tt><tt class="py-op">.</tt><tt id="link-331" class="py-name"><a title="epydoc.markup.Field.body" class="py-name" href="#" onclick="return doclink('link-331', 'body', 'link-21');">body</a></tt> <tt class="py-op">+=</tt> <tt cl [...]
+<a name="L1024"></a><tt class="py-lineno">1024</tt>  <tt class="py-line">    <tt class="py-name">exclude</tt> <tt class="py-op">=</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'exclude'</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1025"></a><tt class="py-lineno">1025</tt>  <tt class="py-line"> </tt>
+<a name="L1026"></a><tt class="py-lineno">1026</tt>  <tt class="py-line">    <tt class="py-comment"># Find all superclasses & subclasses of the given classes.</tt> </tt>
+<a name="L1027"></a><tt class="py-lineno">1027</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">classes</tt> <tt class="py-op">=</tt> <tt class="py-name">set</tt><tt class="py-op">(</tt><tt id="link-332" class="py-name"><a title="epydoc.apidoc.ClassDoc.bases" class="py-name" href="#" onclick="return doclink('link-332', 'bases', 'link-321');">bases</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1028"></a><tt class="py-lineno">1028</tt>  <tt class="py-line">    <tt class="py-name">queue</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt id="link-333" class="py-name"><a title="epydoc.apidoc.ClassDoc.bases" class="py-name" href="#" onclick="return doclink('link-333', 'bases', 'link-321');">bases</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1029"></a><tt class="py-lineno">1029</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">cls</tt> <tt class="py-keyword">in</tt> <tt class="py-name">queue</tt><tt class="py-op">:</tt> </tt>
+<a name="L1030"></a><tt class="py-lineno">1030</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">cls</tt><tt class="py-op">,</tt> <tt id="link-334" class="py-name"><a title="epydoc.apidoc.ClassDoc" class="py-name" href="#" onclick="return doclink('link-334', 'ClassDoc', 'link-100');">ClassDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1031"></a><tt class="py-lineno">1031</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">cls</tt><tt class="py-op">.</tt><tt id="link-335" class="py-name" targets="Variable epydoc.apidoc.ClassDoc.subclasses=epydoc.apidoc.ClassDoc-class.html#subclasses"><a title="epydoc.apidoc.ClassDoc.subclasses" class="py-name" href="#" onclick="return doclink('link-335', 'subclasses', 'link-335');">subclasses</a></tt> <tt class="py-keyword">not</tt> <tt cl [...]
+<a name="L1032"></a><tt class="py-lineno">1032</tt>  <tt class="py-line">                <tt id="link-337" class="py-name"><a title="epydoc.apidoc.ClassDoc.subclasses" class="py-name" href="#" onclick="return doclink('link-337', 'subclasses', 'link-335');">subclasses</a></tt> <tt class="py-op">=</tt> <tt class="py-name">cls</tt><tt class="py-op">.</tt><tt id="link-338" class="py-name"><a title="epydoc.apidoc.ClassDoc.subclasses" class="py-name" href="#" onclick="return doclink('link-338' [...]
+<a name="L1033"></a><tt class="py-lineno">1033</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">exclude</tt><tt class="py-op">:</tt> </tt>
+<a name="L1034"></a><tt class="py-lineno">1034</tt>  <tt class="py-line">                    <tt id="link-339" class="py-name"><a title="epydoc.apidoc.ClassDoc.subclasses" class="py-name" href="#" onclick="return doclink('link-339', 'subclasses', 'link-335');">subclasses</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">d</tt> <tt class="py-keyword">for</tt> <tt class="py-name">d</tt> <tt class="py-keyword">in</tt> <tt id="link-340" class="py-name"><a title="e [...]
+<a name="L1035"></a><tt class="py-lineno">1035</tt>  <tt class="py-line">                <tt class="py-name">queue</tt><tt class="py-op">.</tt><tt class="py-name">extend</tt><tt class="py-op">(</tt><tt id="link-341" class="py-name"><a title="epydoc.apidoc.ClassDoc.subclasses" class="py-name" href="#" onclick="return doclink('link-341', 'subclasses', 'link-335');">subclasses</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1036"></a><tt class="py-lineno">1036</tt>  <tt class="py-line">                <tt class="py-name">classes</tt><tt class="py-op">.</tt><tt class="py-name">update</tt><tt class="py-op">(</tt><tt id="link-342" class="py-name"><a title="epydoc.apidoc.ClassDoc.subclasses" class="py-name" href="#" onclick="return doclink('link-342', 'subclasses', 'link-335');">subclasses</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1037"></a><tt class="py-lineno">1037</tt>  <tt class="py-line">    <tt class="py-name">queue</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt id="link-343" class="py-name"><a title="epydoc.apidoc.ClassDoc.bases" class="py-name" href="#" onclick="return doclink('link-343', 'bases', 'link-321');">bases</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1038"></a><tt class="py-lineno">1038</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">cls</tt> <tt class="py-keyword">in</tt> <tt class="py-name">queue</tt><tt class="py-op">:</tt> </tt>
+<a name="L1039"></a><tt class="py-lineno">1039</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">cls</tt><tt class="py-op">,</tt> <tt id="link-344" class="py-name"><a title="epydoc.apidoc.ClassDoc" class="py-name" href="#" onclick="return doclink('link-344', 'ClassDoc', 'link-100');">ClassDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1040"></a><tt class="py-lineno">1040</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">cls</tt><tt class="py-op">.</tt><tt id="link-345" class="py-name"><a title="epydoc.apidoc.ClassDoc.bases" class="py-name" href="#" onclick="return doclink('link-345', 'bases', 'link-321');">bases</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="li [...]
+<a name="L1041"></a><tt class="py-lineno">1041</tt>  <tt class="py-line">                <tt id="link-347" class="py-name"><a title="epydoc.apidoc.ClassDoc.bases" class="py-name" href="#" onclick="return doclink('link-347', 'bases', 'link-321');">bases</a></tt> <tt class="py-op">=</tt> <tt class="py-name">cls</tt><tt class="py-op">.</tt><tt id="link-348" class="py-name"><a title="epydoc.apidoc.ClassDoc.bases" class="py-name" href="#" onclick="return doclink('link-348', 'bases', 'link-321 [...]
+<a name="L1042"></a><tt class="py-lineno">1042</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">exclude</tt><tt class="py-op">:</tt> </tt>
+<a name="L1043"></a><tt class="py-lineno">1043</tt>  <tt class="py-line">                    <tt id="link-349" class="py-name"><a title="epydoc.apidoc.ClassDoc.bases" class="py-name" href="#" onclick="return doclink('link-349', 'bases', 'link-321');">bases</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">d</tt> <tt class="py-keyword">for</tt> <tt class="py-name">d</tt> <tt class="py-keyword">in</tt> <tt id="link-350" class="py-name"><a title="epydoc.apidoc.Cl [...]
+<a name="L1044"></a><tt class="py-lineno">1044</tt>  <tt class="py-line">                <tt class="py-name">queue</tt><tt class="py-op">.</tt><tt class="py-name">extend</tt><tt class="py-op">(</tt><tt id="link-351" class="py-name"><a title="epydoc.apidoc.ClassDoc.bases" class="py-name" href="#" onclick="return doclink('link-351', 'bases', 'link-321');">bases</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1045"></a><tt class="py-lineno">1045</tt>  <tt class="py-line">                <tt class="py-name">classes</tt><tt class="py-op">.</tt><tt class="py-name">update</tt><tt class="py-op">(</tt><tt id="link-352" class="py-name"><a title="epydoc.apidoc.ClassDoc.bases" class="py-name" href="#" onclick="return doclink('link-352', 'bases', 'link-321');">bases</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1046"></a><tt class="py-lineno">1046</tt>  <tt class="py-line"> </tt>
+<a name="L1047"></a><tt class="py-lineno">1047</tt>  <tt class="py-line">    <tt class="py-comment"># Add a node for each cls.</tt> </tt>
+<a name="L1048"></a><tt class="py-lineno">1048</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">classes</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">d</tt> <tt class="py-keyword">for</tt> <tt class="py-name">d</tt> <tt class="py-keyword">in</tt> <tt class="py-name">classes</tt> <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">d</tt><tt class="py-op">,</tt> <tt id="link-3 [...]
+<a name="L1049"></a><tt class="py-lineno">1049</tt>  <tt class="py-line">               <tt class="py-keyword">if</tt> <tt class="py-name">d</tt><tt class="py-op">.</tt><tt id="link-354" class="py-name" targets="Variable epydoc.apidoc.ValueDoc.pyval=epydoc.apidoc.ValueDoc-class.html#pyval"><a title="epydoc.apidoc.ValueDoc.pyval" class="py-name" href="#" onclick="return doclink('link-354', 'pyval', 'link-354');">pyval</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> [...]
+<a name="L1050"></a><tt class="py-lineno">1050</tt>  <tt class="py-line">    <tt class="py-name">nodes</tt> <tt class="py-op">=</tt> <tt id="link-355" class="py-name"><a title="epydoc.docwriter.dotgraph.add_valdoc_nodes" class="py-name" href="#" onclick="return doclink('link-355', 'add_valdoc_nodes', 'link-300');">add_valdoc_nodes</a></tt><tt class="py-op">(</tt><tt id="link-356" class="py-name"><a title="epydoc.markup.restructuredtext.dotgraph.graph" class="py-name" href="#" onclick="re [...]
+<a name="L1051"></a><tt class="py-lineno">1051</tt>  <tt class="py-line"> </tt>
+<a name="L1052"></a><tt class="py-lineno">1052</tt>  <tt class="py-line">    <tt class="py-comment"># Add an edge for each package/subclass relationship.</tt> </tt>
+<a name="L1053"></a><tt class="py-lineno">1053</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">edges</tt> <tt class="py-op">=</tt> <tt class="py-name">set</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1054"></a><tt class="py-lineno">1054</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">cls</tt> <tt class="py-keyword">in</tt> <tt class="py-name">classes</tt><tt class="py-op">:</tt> </tt>
+<a name="L1055"></a><tt class="py-lineno">1055</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">subcls</tt> <tt class="py-keyword">in</tt> <tt class="py-name">cls</tt><tt class="py-op">.</tt><tt id="link-357" class="py-name"><a title="epydoc.apidoc.ClassDoc.subclasses" class="py-name" href="#" onclick="return doclink('link-357', 'subclasses', 'link-335');">subclasses</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1056"></a><tt class="py-lineno">1056</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">cls</tt> <tt class="py-keyword">in</tt> <tt class="py-name">nodes</tt> <tt class="py-keyword">and</tt> <tt class="py-name">subcls</tt> <tt class="py-keyword">in</tt> <tt class="py-name">nodes</tt><tt class="py-op">:</tt> </tt>
+<a name="L1057"></a><tt class="py-lineno">1057</tt>  <tt class="py-line">                <tt class="py-name">edges</tt><tt class="py-op">.</tt><tt class="py-name">add</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">nodes</tt><tt class="py-op">[</tt><tt class="py-name">cls</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">nodes</tt><tt class="py-op">[</tt><tt class="py-name">subcls</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class [...]
+<a name="L1058"></a><tt class="py-lineno">1058</tt>  <tt class="py-line">    <tt id="link-358" class="py-name"><a title="epydoc.markup.restructuredtext.dotgraph.graph" class="py-name" href="#" onclick="return doclink('link-358', 'graph', 'link-292');">graph</a></tt><tt class="py-op">.</tt><tt class="py-name">edges</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt id="link-359" class="py-name"><a title="epydoc.docwriter.dotgraph.DotGraphEdge" class="py-name" href="#" onclick="retu [...]
+<a name="L1059"></a><tt class="py-lineno">1059</tt>  <tt class="py-line"> </tt>
+<a name="L1060"></a><tt class="py-lineno">1060</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-360" class="py-name"><a title="epydoc.markup.restructuredtext.dotgraph.graph" class="py-name" href="#" onclick="return doclink('link-360', 'graph', 'link-292');">graph</a></tt> </tt>
+</div><a name="L1061"></a><tt class="py-lineno">1061</tt>  <tt class="py-line"> </tt>
+<a name="L1062"></a><tt class="py-lineno">1062</tt>  <tt class="py-line"><tt class="py-comment">######################################################################</tt> </tt>
+<a name="uml_class_tree_graph"></a><div id="uml_class_tree_graph-def"><a name="L1063"></a><tt class="py-lineno">1063</tt> <a class="py-toggle" href="#" id="uml_class_tree_graph-toggle" onclick="return toggle('uml_class_tree_graph');">-</a><tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.dotgraph-module.html#uml_class_tree_graph">uml_class_tree_graph</a><tt class="py-op">(</tt><tt class="py-param">class_doc</tt>< [...]
+</div><div id="uml_class_tree_graph-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="uml_class_tree_graph-expanded"><a name="L1064"></a><tt class="py-lineno">1064</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L1065"></a><tt class="py-lineno">1065</tt>  <tt class="py-line"><tt class="py-docstring">    Return a `DotGraph` that graphically displays the class hierarchy</tt> </tt>
+<a name="L1066"></a><tt class="py-lineno">1066</tt>  <tt class="py-line"><tt class="py-docstring">    for the given class, using UML notation.  Options:</tt> </tt>
+<a name="L1067"></a><tt class="py-lineno">1067</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1068"></a><tt class="py-lineno">1068</tt>  <tt class="py-line"><tt class="py-docstring">      - max_attributes</tt> </tt>
+<a name="L1069"></a><tt class="py-lineno">1069</tt>  <tt class="py-line"><tt class="py-docstring">      - max_operations</tt> </tt>
+<a name="L1070"></a><tt class="py-lineno">1070</tt>  <tt class="py-line"><tt class="py-docstring">      - show_private_vars</tt> </tt>
+<a name="L1071"></a><tt class="py-lineno">1071</tt>  <tt class="py-line"><tt class="py-docstring">      - show_magic_vars</tt> </tt>
+<a name="L1072"></a><tt class="py-lineno">1072</tt>  <tt class="py-line"><tt class="py-docstring">      - link_attributes</tt> </tt>
+<a name="L1073"></a><tt class="py-lineno">1073</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1074"></a><tt class="py-lineno">1074</tt>  <tt class="py-line">    <tt class="py-name">nodes</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> <tt class="py-comment"># ClassDoc -> DotGraphUmlClassNode</tt> </tt>
+<a name="L1075"></a><tt class="py-lineno">1075</tt>  <tt class="py-line">    <tt class="py-name">exclude</tt> <tt class="py-op">=</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'exclude'</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1076"></a><tt class="py-lineno">1076</tt>  <tt class="py-line">         </tt>
+<a name="L1077"></a><tt class="py-lineno">1077</tt>  <tt class="py-line">    <tt class="py-comment"># Create nodes for class_doc and all its bases.</tt> </tt>
+<a name="L1078"></a><tt class="py-lineno">1078</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">for</tt> <tt class="py-name">cls</tt> <tt class="py-keyword">in</tt> <tt class="py-name">class_doc</tt><tt class="py-op">.</tt><tt id="link-361" class="py-name" targets="Method epydoc.apidoc.ClassDoc.mro()=epydoc.apidoc.ClassDoc-class.html#mro"><a title="epydoc.apidoc.ClassDoc.mro" class="py-name" href="#" onclick="return doclink('link-361', 'mro', 'link-361');" [...]
+<a name="L1079"></a><tt class="py-lineno">1079</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">cls</tt><tt class="py-op">.</tt><tt id="link-362" class="py-name"><a title="epydoc.apidoc.ValueDoc.pyval" class="py-name" href="#" onclick="return doclink('link-362', 'pyval', 'link-354');">pyval</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">object</tt><tt class="py-op">:</tt> <tt class="py-keyword">continue</tt> <tt class="py-comment"># don't  [...]
+<a name="L1080"></a><tt class="py-lineno">1080</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">cls</tt> <tt class="py-keyword">in</tt> <tt class="py-name">exclude</tt><tt class="py-op">:</tt> <tt class="py-keyword">break</tt> <tt class="py-comment"># stop if we get to an excluded class.</tt> </tt>
+<a name="L1081"></a><tt class="py-lineno">1081</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">cls</tt> <tt class="py-op">==</tt> <tt class="py-name">class_doc</tt><tt class="py-op">:</tt> <tt class="py-name">color</tt> <tt class="py-op">=</tt> <tt id="link-363" class="py-name"><a title="epydoc.docwriter.dotgraph.SELECTED_BG" class="py-name" href="#" onclick="return doclink('link-363', 'SELECTED_BG', 'link-10');">SELECTED_BG</a></tt> </tt>
+<a name="L1082"></a><tt class="py-lineno">1082</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> <tt class="py-name">color</tt> <tt class="py-op">=</tt> <tt id="link-364" class="py-name"><a title="epydoc.docwriter.dotgraph.BASECLASS_BG" class="py-name" href="#" onclick="return doclink('link-364', 'BASECLASS_BG', 'link-11');">BASECLASS_BG</a></tt> </tt>
+<a name="L1083"></a><tt class="py-lineno">1083</tt>  <tt class="py-line">        <tt class="py-name">nodes</tt><tt class="py-op">[</tt><tt class="py-name">cls</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-365" class="py-name"><a title="epydoc.docwriter.dotgraph.DotGraphUmlClassNode" class="py-name" href="#" onclick="return doclink('link-365', 'DotGraphUmlClassNode', 'link-145');">DotGraphUmlClassNode</a></tt><tt class="py-op">(</tt><tt class="py-name">cls</tt><tt cla [...]
+<a name="L1084"></a><tt class="py-lineno">1084</tt>  <tt class="py-line">                                          <tt class="py-name">show_inherited_vars</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> </tt>
+<a name="L1085"></a><tt class="py-lineno">1085</tt>  <tt class="py-line">                                          <tt class="py-name">collapsed</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> <tt class="py-name">bgcolor</tt><tt class="py-op">=</tt><tt class="py-name">color</tt><tt class="py-op">)</tt> </tt>
+<a name="L1086"></a><tt class="py-lineno">1086</tt>  <tt class="py-line"> </tt>
+<a name="L1087"></a><tt class="py-lineno">1087</tt>  <tt class="py-line">    <tt class="py-comment"># Create nodes for all class_doc's subclasses.</tt> </tt>
+<a name="L1088"></a><tt class="py-lineno">1088</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">queue</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">class_doc</tt><tt class="py-op">]</tt> </tt>
+<a name="L1089"></a><tt class="py-lineno">1089</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">cls</tt> <tt class="py-keyword">in</tt> <tt class="py-name">queue</tt><tt class="py-op">:</tt> </tt>
+<a name="L1090"></a><tt class="py-lineno">1090</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">cls</tt><tt class="py-op">,</tt> <tt id="link-366" class="py-name"><a title="epydoc.apidoc.ClassDoc" class="py-name" href="#" onclick="return doclink('link-366', 'ClassDoc', 'link-100');">ClassDoc</a></tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L1091"></a><tt class="py-lineno">1091</tt>  <tt class="py-line">            <tt class="py-name">cls</tt><tt class="py-op">.</tt><tt id="link-367" class="py-name"><a title="epydoc.apidoc.ClassDoc.subclasses" class="py-name" href="#" onclick="return doclink('link-367', 'subclasses', 'link-335');">subclasses</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-368" class="p [...]
+<a name="L1092"></a><tt class="py-lineno">1092</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">subcls</tt> <tt class="py-keyword">in</tt> <tt class="py-name">cls</tt><tt class="py-op">.</tt><tt id="link-369" class="py-name"><a title="epydoc.apidoc.ClassDoc.subclasses" class="py-name" href="#" onclick="return doclink('link-369', 'subclasses', 'link-335');">subclasses</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1093"></a><tt class="py-lineno">1093</tt>  <tt class="py-line">                <tt class="py-name">subcls_name</tt> <tt class="py-op">=</tt> <tt class="py-name">subcls</tt><tt class="py-op">.</tt><tt id="link-370" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-370', 'canonical_name', 'link-103');">canonical_name</a></tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L1094"></a><tt class="py-lineno">1094</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">subcls</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">nodes</tt> <tt class="py-keyword">and</tt> <tt class="py-name">subcls</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">exclude</tt><tt class="py-op">:</tt> </tt>
+<a name="L1095"></a><tt class="py-lineno">1095</tt>  <tt class="py-line">                    <tt class="py-name">queue</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">subcls</tt><tt class="py-op">)</tt> </tt>
+<a name="L1096"></a><tt class="py-lineno">1096</tt>  <tt class="py-line">                    <tt class="py-name">nodes</tt><tt class="py-op">[</tt><tt class="py-name">subcls</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-371" class="py-name"><a title="epydoc.docwriter.dotgraph.DotGraphUmlClassNode" class="py-name" href="#" onclick="return doclink('link-371', 'DotGraphUmlClassNode', 'link-145');">DotGraphUmlClassNode</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L1097"></a><tt class="py-lineno">1097</tt>  <tt class="py-line">                        <tt class="py-name">subcls</tt><tt class="py-op">,</tt> <tt class="py-name">linker</tt><tt class="py-op">,</tt> <tt class="py-name">context</tt><tt class="py-op">,</tt> <tt class="py-name">collapsed</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> </tt>
+<a name="L1098"></a><tt class="py-lineno">1098</tt>  <tt class="py-line">                        <tt class="py-name">bgcolor</tt><tt class="py-op">=</tt><tt id="link-372" class="py-name"><a title="epydoc.docwriter.dotgraph.SUBCLASS_BG" class="py-name" href="#" onclick="return doclink('link-372', 'SUBCLASS_BG', 'link-12');">SUBCLASS_BG</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1099"></a><tt class="py-lineno">1099</tt>  <tt class="py-line">                     </tt>
+<a name="L1100"></a><tt class="py-lineno">1100</tt>  <tt class="py-line">    <tt class="py-comment"># Only show variables in the class where they're defined for</tt> </tt>
+<a name="L1101"></a><tt class="py-lineno">1101</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># *class_doc*.</tt> </tt>
+<a name="L1102"></a><tt class="py-lineno">1102</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-373" class="py-name"><a title="epydoc.apidoc.ClassDoc.mro" class="py-name" href="#" onclick="return doclink('link-373', 'mro', 'link-361');">mro</a></tt> <tt class="py-op">=</tt> <tt class="py-name">class_doc</tt><tt class="py-op">.</tt><tt id="link-374" class="py-name"><a title="epydoc.apidoc.ClassDoc.mro" class="py-name" href="#" onclick="return doclink('link-374', 'mro [...]
+<a name="L1103"></a><tt class="py-lineno">1103</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt id="link-375" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-375', 'name', 'link-102');">name</a></tt><tt class="py-op">,</tt> <tt class="py-name">var</tt> <tt class="py-keyword">in</tt> <tt class="py-name">class_doc</tt><tt class="py-op">.</tt><tt id="link-376" class="py-name" targets="Variable epydoc.apidoc.Na [...]
+<a name="L1104"></a><tt class="py-lineno">1104</tt>  <tt class="py-line">        <tt class="py-name">i</tt> <tt class="py-op">=</tt> <tt id="link-377" class="py-name"><a title="epydoc.apidoc.ClassDoc.mro" class="py-name" href="#" onclick="return doclink('link-377', 'mro', 'link-361');">mro</a></tt><tt class="py-op">.</tt><tt class="py-name">index</tt><tt class="py-op">(</tt><tt class="py-name">var</tt><tt class="py-op">.</tt><tt id="link-378" class="py-name"><a title="epydoc.apidoc.DocIn [...]
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-378', 'container', 'link-106');">container</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1105"></a><tt class="py-lineno">1105</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">base</tt> <tt class="py-keyword">in</tt> <tt id="link-379" class="py-name"><a title="epydoc.apidoc.ClassDoc.mro" class="py-name" href="#" onclick="return doclink('link-379', 'mro', 'link-361');">mro</a></tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><t [...]
+<a name="L1106"></a><tt class="py-lineno">1106</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">base</tt><tt class="py-op">.</tt><tt id="link-380" class="py-name"><a title="epydoc.apidoc.ValueDoc.pyval" class="py-name" href="#" onclick="return doclink('link-380', 'pyval', 'link-354');">pyval</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">object</tt><tt class="py-op">:</tt> <tt class="py-keyword">continue</tt> <tt class="py-comment"># d [...]
+<a name="L1107"></a><tt class="py-lineno">1107</tt>  <tt class="py-line">            <tt class="py-name">overridden_var</tt> <tt class="py-op">=</tt> <tt class="py-name">base</tt><tt class="py-op">.</tt><tt id="link-381" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-381', 'variables', 'link-376');">variables</a></tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt id="link-382" class=" [...]
+<a name="L1108"></a><tt class="py-lineno">1108</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">overridden_var</tt> <tt class="py-keyword">and</tt> <tt class="py-name">overridden_var</tt><tt class="py-op">.</tt><tt id="link-383" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-383', 'container', 'link-106');">container</a></tt> <tt class="py-op">==</tt> <tt class="py-name">base</tt><tt class="py-op">:</tt> </tt>
+<a name="L1109"></a><tt class="py-lineno">1109</tt>  <tt class="py-line">                <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L1110"></a><tt class="py-lineno">1110</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">overridden_var</tt><tt class="py-op">.</tt><tt id="link-384" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-384', 'value', 'link-107');">value</a></tt><tt class="py-op">,</tt> <tt id="link-385" class="py-name"><a title="ep [...]
+<a name="L1111"></a><tt class="py-lineno">1111</tt>  <tt class="py-line">                        <tt class="py-name">nodes</tt><tt class="py-op">[</tt><tt class="py-name">base</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">operations</tt><tt class="py-op">.</tt><tt class="py-name">remove</tt><tt class="py-op">(</tt><tt class="py-name">overridden_var</tt><tt class="py-op">)</tt> </tt>
+<a name="L1112"></a><tt class="py-lineno">1112</tt>  <tt class="py-line">                    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1113"></a><tt class="py-lineno">1113</tt>  <tt class="py-line">                        <tt class="py-name">nodes</tt><tt class="py-op">[</tt><tt class="py-name">base</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">attributes</tt><tt class="py-op">.</tt><tt class="py-name">remove</tt><tt class="py-op">(</tt><tt class="py-name">overridden_var</tt><tt class="py-op">)</tt> </tt>
+<a name="L1114"></a><tt class="py-lineno">1114</tt>  <tt class="py-line">                <tt class="py-keyword">except</tt> <tt class="py-name">ValueError</tt><tt class="py-op">:</tt> </tt>
+<a name="L1115"></a><tt class="py-lineno">1115</tt>  <tt class="py-line">                    <tt class="py-keyword">pass</tt> <tt class="py-comment"># var is filtered (eg private or magic)</tt> </tt>
+<a name="L1116"></a><tt class="py-lineno">1116</tt>  <tt class="py-line"> </tt>
+<a name="L1117"></a><tt class="py-lineno">1117</tt>  <tt class="py-line">    <tt class="py-comment"># Keep track of which nodes are part of the inheritance graph</tt> </tt>
+<a name="L1118"></a><tt class="py-lineno">1118</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># (since link_attributes might add new nodes)</tt> </tt>
+<a name="L1119"></a><tt class="py-lineno">1119</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">inheritance_nodes</tt> <tt class="py-op">=</tt> <tt class="py-name">set</tt><tt class="py-op">(</tt><tt class="py-name">nodes</tt><tt class="py-op">.</tt><tt class="py-name">values</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1120"></a><tt class="py-lineno">1120</tt>  <tt class="py-line">         </tt>
+<a name="L1121"></a><tt class="py-lineno">1121</tt>  <tt class="py-line">    <tt class="py-comment"># Turn attributes into links.</tt> </tt>
+<a name="L1122"></a><tt class="py-lineno">1122</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'link_attributes'</tt><tt class="py-op">,</tt> <tt class="py-name">True</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1123"></a><tt class="py-lineno">1123</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">node</tt> <tt class="py-keyword">in</tt> <tt class="py-name">nodes</tt><tt class="py-op">.</tt><tt class="py-name">values</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1124"></a><tt class="py-lineno">1124</tt>  <tt class="py-line">            <tt class="py-name">node</tt><tt class="py-op">.</tt><tt id="link-386" class="py-name" targets="Method epydoc.docwriter.dotgraph.DotGraphUmlClassNode.link_attributes()=epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#link_attributes"><a title="epydoc.docwriter.dotgraph.DotGraphUmlClassNode.link_attributes" class="py-name" href="#" onclick="return doclink('link-386', 'link_attributes', 'link-386' [...]
+<a name="L1125"></a><tt class="py-lineno">1125</tt>  <tt class="py-line">            <tt class="py-comment"># Make sure that none of the new attribute edges break the</tt> </tt>
+<a name="L1126"></a><tt class="py-lineno">1126</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># rank ordering assigned by inheritance.</tt> </tt>
+<a name="L1127"></a><tt class="py-lineno">1127</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">for</tt> <tt class="py-name">edge</tt> <tt class="py-keyword">in</tt> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">edges</tt><tt class="py-op">:</tt> </tt>
+<a name="L1128"></a><tt class="py-lineno">1128</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">edge</tt><tt class="py-op">.</tt><tt class="py-name">end</tt> <tt class="py-keyword">in</tt> <tt class="py-name">inheritance_nodes</tt><tt class="py-op">:</tt> </tt>
+<a name="L1129"></a><tt class="py-lineno">1129</tt>  <tt class="py-line">                    <tt class="py-name">edge</tt><tt class="py-op">[</tt><tt class="py-string">'constraint'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">'False'</tt> </tt>
+<a name="L1130"></a><tt class="py-lineno">1130</tt>  <tt class="py-line">                 </tt>
+<a name="L1131"></a><tt class="py-lineno">1131</tt>  <tt class="py-line">    <tt class="py-comment"># Construct the graph.</tt> </tt>
+<a name="L1132"></a><tt class="py-lineno">1132</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-387" class="py-name"><a title="epydoc.markup.restructuredtext.dotgraph.graph" class="py-name" href="#" onclick="return doclink('link-387', 'graph', 'link-292');">graph</a></tt> <tt class="py-op">=</tt> <tt id="link-388" class="py-name"><a title="epydoc.docwriter.dotgraph.DotGraph" class="py-name" href="#" onclick="return doclink('link-388', 'DotGraph', 'link-293');">DotGr [...]
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-389', 'canonical_name', 'link-103');">canonical_name</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L1133"></a><tt class="py-lineno">1133</tt>  <tt class="py-line">                     <tt id="link-390" class="py-name"><a title="epydoc.markup.Field.body" class="py-name" href="#" onclick="return doclink('link-390', 'body', 'link-21');">body</a></tt><tt class="py-op">=</tt><tt class="py-string">'ranksep=.2\n;nodesep=.3\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1134"></a><tt class="py-lineno">1134</tt>  <tt class="py-line">    <tt id="link-391" class="py-name"><a title="epydoc.markup.restructuredtext.dotgraph.graph" class="py-name" href="#" onclick="return doclink('link-391', 'graph', 'link-292');">graph</a></tt><tt class="py-op">.</tt><tt class="py-name">nodes</tt> <tt class="py-op">=</tt> <tt class="py-name">nodes</tt><tt class="py-op">.</tt><tt class="py-name">values</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1135"></a><tt class="py-lineno">1135</tt>  <tt class="py-line">     </tt>
+<a name="L1136"></a><tt class="py-lineno">1136</tt>  <tt class="py-line">    <tt class="py-comment"># Add inheritance edges.</tt> </tt>
+<a name="L1137"></a><tt class="py-lineno">1137</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">for</tt> <tt class="py-name">node</tt> <tt class="py-keyword">in</tt> <tt class="py-name">inheritance_nodes</tt><tt class="py-op">:</tt> </tt>
+<a name="L1138"></a><tt class="py-lineno">1138</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">base</tt> <tt class="py-keyword">in</tt> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">class_doc</tt><tt class="py-op">.</tt><tt id="link-392" class="py-name"><a title="epydoc.apidoc.ClassDoc.bases" class="py-name" href="#" onclick="return doclink('link-392', 'bases', 'link-321');">bases</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1139"></a><tt class="py-lineno">1139</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">base</tt> <tt class="py-keyword">in</tt> <tt class="py-name">nodes</tt><tt class="py-op">:</tt> </tt>
+<a name="L1140"></a><tt class="py-lineno">1140</tt>  <tt class="py-line">                <tt id="link-393" class="py-name"><a title="epydoc.markup.restructuredtext.dotgraph.graph" class="py-name" href="#" onclick="return doclink('link-393', 'graph', 'link-292');">graph</a></tt><tt class="py-op">.</tt><tt class="py-name">edges</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-394" class="py-name"><a title="epydoc.docwriter.dotgraph.DotGraphEdg [...]
+<a name="L1141"></a><tt class="py-lineno">1141</tt>  <tt class="py-line">                              <tt class="py-name">dir</tt><tt class="py-op">=</tt><tt class="py-string">'back'</tt><tt class="py-op">,</tt> <tt class="py-name">arrowtail</tt><tt class="py-op">=</tt><tt class="py-string">'empty'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1142"></a><tt class="py-lineno">1142</tt>  <tt class="py-line">                              <tt class="py-name">headport</tt><tt class="py-op">=</tt><tt class="py-string">'body'</tt><tt class="py-op">,</tt> <tt class="py-name">tailport</tt><tt class="py-op">=</tt><tt class="py-string">'body'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1143"></a><tt class="py-lineno">1143</tt>  <tt class="py-line">                              <tt class="py-name">color</tt><tt class="py-op">=</tt><tt id="link-395" class="py-name"><a title="epydoc.docwriter.dotgraph.INH_LINK_COLOR" class="py-name" href="#" onclick="return doclink('link-395', 'INH_LINK_COLOR', 'link-14');">INH_LINK_COLOR</a></tt><tt class="py-op">,</tt> <tt class="py-name">weight</tt><tt class="py-op">=</tt><tt class="py-number">100</tt><tt class="py-op">,</tt> </tt>
+<a name="L1144"></a><tt class="py-lineno">1144</tt>  <tt class="py-line">                              <tt class="py-name">style</tt><tt class="py-op">=</tt><tt class="py-string">'bold'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1145"></a><tt class="py-lineno">1145</tt>  <tt class="py-line"> </tt>
+<a name="L1146"></a><tt class="py-lineno">1146</tt>  <tt class="py-line">    <tt class="py-comment"># And we're done!</tt> </tt>
+<a name="L1147"></a><tt class="py-lineno">1147</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">return</tt> <tt id="link-396" class="py-name"><a title="epydoc.markup.restructuredtext.dotgraph.graph" class="py-name" href="#" onclick="return doclink('link-396', 'graph', 'link-292');">graph</a></tt> </tt>
+</div><a name="L1148"></a><tt class="py-lineno">1148</tt>  <tt class="py-line"> </tt>
+<a name="L1149"></a><tt class="py-lineno">1149</tt>  <tt class="py-line"><tt class="py-comment">######################################################################</tt> </tt>
+<a name="import_graph"></a><div id="import_graph-def"><a name="L1150"></a><tt class="py-lineno">1150</tt> <a class="py-toggle" href="#" id="import_graph-toggle" onclick="return toggle('import_graph');">-</a><tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.dotgraph-module.html#import_graph">import_graph</a><tt class="py-op">(</tt><tt class="py-param">modules</tt><tt class="py-op">,</tt> <tt class="py-param">docin [...]
+</div><div id="import_graph-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="import_graph-expanded"><a name="L1151"></a><tt class="py-lineno">1151</tt>  <tt class="py-line">    <tt id="link-397" class="py-name"><a title="epydoc.markup.restructuredtext.dotgraph.graph" class="py-name" href="#" onclick="return doclink('link-397', 'graph', 'link-292');">graph</a></tt> <tt class="py-op">=</tt> <tt id="link-398" class="py-name"><a title="epydoc.docwriter.dotgraph.DotGra [...]
+<a name="L1152"></a><tt class="py-lineno">1152</tt>  <tt class="py-line"> </tt>
+<a name="L1153"></a><tt class="py-lineno">1153</tt>  <tt class="py-line">    <tt class="py-comment"># Options</tt> </tt>
+<a name="L1154"></a><tt class="py-lineno">1154</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'dir'</tt><tt class="py-op">,</tt> <tt class="py-string">'RL'</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-string">'TB'</tt><tt class="py-op">:</tt> <tt class="py-comment"># default: right-to-left.</tt> </tt>
+<a name="L1155"></a><tt class="py-lineno">1155</tt>  <tt class="py-line">        <tt id="link-400" class="py-name"><a title="epydoc.markup.restructuredtext.dotgraph.graph" class="py-name" href="#" onclick="return doclink('link-400', 'graph', 'link-292');">graph</a></tt><tt class="py-op">.</tt><tt id="link-401" class="py-name"><a title="epydoc.markup.Field.body" class="py-name" href="#" onclick="return doclink('link-401', 'body', 'link-21');">body</a></tt> <tt class="py-op">+=</tt> <tt cl [...]
+<a name="L1156"></a><tt class="py-lineno">1156</tt>  <tt class="py-line"> </tt>
+<a name="L1157"></a><tt class="py-lineno">1157</tt>  <tt class="py-line">    <tt class="py-comment"># Add a node for each module.</tt> </tt>
+<a name="L1158"></a><tt class="py-lineno">1158</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">nodes</tt> <tt class="py-op">=</tt> <tt id="link-402" class="py-name"><a title="epydoc.docwriter.dotgraph.add_valdoc_nodes" class="py-name" href="#" onclick="return doclink('link-402', 'add_valdoc_nodes', 'link-300');">add_valdoc_nodes</a></tt><tt class="py-op">(</tt><tt id="link-403" class="py-name"><a title="epydoc.markup.restructuredtext.dotgraph.graph" class="p [...]
+<a name="L1159"></a><tt class="py-lineno">1159</tt>  <tt class="py-line"> </tt>
+<a name="L1160"></a><tt class="py-lineno">1160</tt>  <tt class="py-line">    <tt class="py-comment"># Edges.</tt> </tt>
+<a name="L1161"></a><tt class="py-lineno">1161</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">edges</tt> <tt class="py-op">=</tt> <tt class="py-name">set</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1162"></a><tt class="py-lineno">1162</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">dst</tt> <tt class="py-keyword">in</tt> <tt class="py-name">modules</tt><tt class="py-op">:</tt> </tt>
+<a name="L1163"></a><tt class="py-lineno">1163</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">dst</tt><tt class="py-op">.</tt><tt id="link-404" class="py-name" targets="Variable epydoc.apidoc.ModuleDoc.imports=epydoc.apidoc.ModuleDoc-class.html#imports"><a title="epydoc.apidoc.ModuleDoc.imports" class="py-name" href="#" onclick="return doclink('link-404', 'imports', 'link-404');">imports</a></tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt [...]
+<a name="L1164"></a><tt class="py-lineno">1164</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">var_name</tt> <tt class="py-keyword">in</tt> <tt class="py-name">dst</tt><tt class="py-op">.</tt><tt id="link-406" class="py-name"><a title="epydoc.apidoc.ModuleDoc.imports" class="py-name" href="#" onclick="return doclink('link-406', 'imports', 'link-404');">imports</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1165"></a><tt class="py-lineno">1165</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">var_name</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> [...]
+<a name="L1166"></a><tt class="py-lineno">1166</tt>  <tt class="py-line">                <tt class="py-name">val_doc</tt> <tt class="py-op">=</tt> <tt class="py-name">docindex</tt><tt class="py-op">.</tt><tt id="link-407" class="py-name"><a title="epydoc.apidoc.DocIndex.find" class="py-name" href="#" onclick="return doclink('link-407', 'find', 'link-143');">find</a></tt><tt class="py-op">(</tt><tt class="py-name">var_name</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py- [...]
+<a name="L1167"></a><tt class="py-lineno">1167</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">val_doc</tt><tt class="py-op">,</tt> <tt id="link-408" class="py-name" targets="Class epydoc.apidoc.ModuleDoc=epydoc.apidoc.ModuleDoc-class.html"><a title="epydoc.apidoc.ModuleDoc" class="py-name" href="#" onclick="return doclink('link-408', 'ModuleDoc', 'link-408');">ModuleDoc</a></tt><tt cl [...]
+<a name="L1168"></a><tt class="py-lineno">1168</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">val_doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">nodes</tt> <tt class="py-keyword">and</tt> <tt class="py-name">dst</tt> <tt class="py-keyword">in</tt> <tt class="py-name">nodes</tt><tt class="py-op">:</tt> </tt>
+<a name="L1169"></a><tt class="py-lineno">1169</tt>  <tt class="py-line">                        <tt class="py-name">edges</tt><tt class="py-op">.</tt><tt class="py-name">add</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">nodes</tt><tt class="py-op">[</tt><tt class="py-name">val_doc</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">nodes</tt><tt class="py-op">[</tt><tt class="py-name">dst</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> [...]
+<a name="L1170"></a><tt class="py-lineno">1170</tt>  <tt class="py-line">                    <tt class="py-keyword">break</tt> </tt>
+<a name="L1171"></a><tt class="py-lineno">1171</tt>  <tt class="py-line">    <tt id="link-409" class="py-name"><a title="epydoc.markup.restructuredtext.dotgraph.graph" class="py-name" href="#" onclick="return doclink('link-409', 'graph', 'link-292');">graph</a></tt><tt class="py-op">.</tt><tt class="py-name">edges</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt id="link-410" class="py-name"><a title="epydoc.docwriter.dotgraph.DotGraphEdge" class="py-name" href="#" onclick="retu [...]
+<a name="L1172"></a><tt class="py-lineno">1172</tt>  <tt class="py-line"> </tt>
+<a name="L1173"></a><tt class="py-lineno">1173</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-411" class="py-name"><a title="epydoc.markup.restructuredtext.dotgraph.graph" class="py-name" href="#" onclick="return doclink('link-411', 'graph', 'link-292');">graph</a></tt> </tt>
+</div><a name="L1174"></a><tt class="py-lineno">1174</tt>  <tt class="py-line"> </tt>
+<a name="L1175"></a><tt class="py-lineno">1175</tt>  <tt class="py-line"><tt class="py-comment">######################################################################</tt> </tt>
+<a name="call_graph"></a><div id="call_graph-def"><a name="L1176"></a><tt class="py-lineno">1176</tt> <a class="py-toggle" href="#" id="call_graph-toggle" onclick="return toggle('call_graph');">-</a><tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.dotgraph-module.html#call_graph">call_graph</a><tt class="py-op">(</tt><tt class="py-param">api_docs</tt><tt class="py-op">,</tt> <tt class="py-param">docindex</tt><tt [...]
+</div><div id="call_graph-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="call_graph-expanded"><a name="L1177"></a><tt class="py-lineno">1177</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L1178"></a><tt class="py-lineno">1178</tt>  <tt class="py-line"><tt class="py-docstring">    :param options:</tt> </tt>
+<a name="L1179"></a><tt class="py-lineno">1179</tt>  <tt class="py-line"><tt class="py-docstring">        - ``dir``: rankdir for the graph.  (default=LR)</tt> </tt>
+<a name="L1180"></a><tt class="py-lineno">1180</tt>  <tt class="py-line"><tt class="py-docstring">        - ``add_callers``: also include callers for any of the</tt> </tt>
+<a name="L1181"></a><tt class="py-lineno">1181</tt>  <tt class="py-line"><tt class="py-docstring">          routines in ``api_docs``.  (default=False)</tt> </tt>
+<a name="L1182"></a><tt class="py-lineno">1182</tt>  <tt class="py-line"><tt class="py-docstring">        - ``add_callees``: also include callees for any of the</tt> </tt>
+<a name="L1183"></a><tt class="py-lineno">1183</tt>  <tt class="py-line"><tt class="py-docstring">          routines in ``api_docs``.  (default=False)</tt> </tt>
+<a name="L1184"></a><tt class="py-lineno">1184</tt>  <tt class="py-line"><tt class="py-docstring">    :todo: Add an ``exclude`` option?</tt> </tt>
+<a name="L1185"></a><tt class="py-lineno">1185</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1186"></a><tt class="py-lineno">1186</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">docindex</tt><tt class="py-op">.</tt><tt class="py-name">callers</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1187"></a><tt class="py-lineno">1187</tt>  <tt class="py-line">        <tt id="link-412" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-412', 'log', 'link-1');">log</a></tt><tt class="py-op">.</tt><tt id="link-413" class="py-name"><a title="epydoc.checker.DocChecker.warning
+epydoc.log.warning" class="py-name" href="#" onclick="return doclink('link-413', 'warning', 'link-72');">warning</a></tt><tt class="py-op">(</tt><tt class="py-string">"No profiling information for call graph!"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1188"></a><tt class="py-lineno">1188</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-414" class="py-name"><a title="epydoc.docwriter.dotgraph.DotGraph" class="py-name" href="#" onclick="return doclink('link-414', 'DotGraph', 'link-293');">DotGraph</a></tt><tt class="py-op">(</tt><tt class="py-string">'Call Graph'</tt><tt class="py-op">)</tt> <tt class="py-comment"># return None instead?</tt> </tt>
+<a name="L1189"></a><tt class="py-lineno">1189</tt>  <tt class="py-line"> </tt>
+<a name="L1190"></a><tt class="py-lineno">1190</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">context</tt><tt class="py-op">,</tt> <tt id="link-415" class="py-name"><a title="epydoc.apidoc.VariableDoc" class="py-name" href="#" onclick="return doclink('link-415', 'VariableDoc', 'link-312');">VariableDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1191"></a><tt class="py-lineno">1191</tt>  <tt class="py-line">        <tt class="py-name">context</tt> <tt class="py-op">=</tt> <tt class="py-name">context</tt><tt class="py-op">.</tt><tt id="link-416" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-416', 'value', 'link-107');">value</a></tt> </tt>
+<a name="L1192"></a><tt class="py-lineno">1192</tt>  <tt class="py-line"> </tt>
+<a name="L1193"></a><tt class="py-lineno">1193</tt>  <tt class="py-line">    <tt class="py-comment"># Get the set of requested functions.</tt> </tt>
+<a name="L1194"></a><tt class="py-lineno">1194</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">functions</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L1195"></a><tt class="py-lineno">1195</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">api_doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">api_docs</tt><tt class="py-op">:</tt> </tt>
+<a name="L1196"></a><tt class="py-lineno">1196</tt>  <tt class="py-line">        <tt class="py-comment"># If it's a variable, get its value.</tt> </tt>
+<a name="L1197"></a><tt class="py-lineno">1197</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt id="link-417" class="py-name"><a title="epydoc.apidoc.VariableDoc" class="py-name" href="#" onclick="return doclink('link-417', 'VariableDoc', 'link-312');">VariableDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1198"></a><tt class="py-lineno">1198</tt>  <tt class="py-line">            <tt class="py-name">api_doc</tt> <tt class="py-op">=</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-418" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-418', 'value', 'link-107');">value</a></tt> </tt>
+<a name="L1199"></a><tt class="py-lineno">1199</tt>  <tt class="py-line">        <tt class="py-comment"># Add the value to the functions list.</tt> </tt>
+<a name="L1200"></a><tt class="py-lineno">1200</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt id="link-419" class="py-name"><a title="epydoc.apidoc.RoutineDoc" class="py-name" href="#" onclick="return doclink('link-419', 'RoutineDoc', 'link-108');">RoutineDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1201"></a><tt class="py-lineno">1201</tt>  <tt class="py-line">            <tt class="py-name">functions</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">)</tt> </tt>
+<a name="L1202"></a><tt class="py-lineno">1202</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt id="link-420" class="py-name" targets="Class epydoc.apidoc.NamespaceDoc=epydoc.apidoc.NamespaceDoc-class.html"><a title="epydoc.apidoc.NamespaceDoc" class="py-name" href="#" onclick="return doclink('link-420', 'NamespaceDoc', 'link-420');">NamespaceDoc</a></ [...]
+<a name="L1203"></a><tt class="py-lineno">1203</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">vardoc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-421" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-421', 'variables', 'link-376');">variables</a></tt><tt class="py-op">.</tt><tt class="py-name">values</tt><tt class="py [...]
+<a name="L1204"></a><tt class="py-lineno">1204</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">vardoc</tt><tt class="py-op">.</tt><tt id="link-422" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-422', 'value', 'link-107');">value</a></tt><tt class="py-op">,</tt> <tt id="link-423" class="py-name"><a title="epydoc.apidoc. [...]
+<a name="L1205"></a><tt class="py-lineno">1205</tt>  <tt class="py-line">                    <tt class="py-name">functions</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">vardoc</tt><tt class="py-op">.</tt><tt id="link-424" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-424', 'value', 'link-107');">value</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1206"></a><tt class="py-lineno">1206</tt>  <tt class="py-line"> </tt>
+<a name="L1207"></a><tt class="py-lineno">1207</tt>  <tt class="py-line">    <tt class="py-comment"># Filter out functions with no callers/callees?</tt> </tt>
+<a name="L1208"></a><tt class="py-lineno">1208</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># [xx] this isnt' quite right, esp if add_callers or add_callees</tt> </tt>
+<a name="L1209"></a><tt class="py-lineno">1209</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># options are fales.</tt> </tt>
+<a name="L1210"></a><tt class="py-lineno">1210</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">functions</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">f</tt> <tt class="py-keyword">for</tt> <tt class="py-name">f</tt> <tt class="py-keyword">in</tt> <tt class="py-name">functions</tt> <tt class="py-keyword">if</tt> </tt>
+<a name="L1211"></a><tt class="py-lineno">1211</tt>  <tt class="py-line">                 <tt class="py-op">(</tt><tt class="py-name">f</tt> <tt class="py-keyword">in</tt> <tt class="py-name">docindex</tt><tt class="py-op">.</tt><tt class="py-name">callers</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-name">f</tt> <tt class="py-keyword">in</tt> <tt class="py-name">docindex</tt><tt class="py-op">.</tt><tt class="py-name">callees</tt><tt  [...]
+<a name="L1212"></a><tt class="py-lineno">1212</tt>  <tt class="py-line">         </tt>
+<a name="L1213"></a><tt class="py-lineno">1213</tt>  <tt class="py-line">    <tt class="py-comment"># Add any callers/callees of the selected functions</tt> </tt>
+<a name="L1214"></a><tt class="py-lineno">1214</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">func_set</tt> <tt class="py-op">=</tt> <tt class="py-name">set</tt><tt class="py-op">(</tt><tt class="py-name">functions</tt><tt class="py-op">)</tt> </tt>
+<a name="L1215"></a><tt class="py-lineno">1215</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'add_callers'</tt><tt class="py-op">,</tt> <tt class="py-name">False</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-str [...]
+<a name="L1216"></a><tt class="py-lineno">1216</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">func_doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">functions</tt><tt class="py-op">:</tt> </tt>
+<a name="L1217"></a><tt class="py-lineno">1217</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'add_callers'</tt><tt class="py-op">,</tt> <tt class="py-name">False</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1218"></a><tt class="py-lineno">1218</tt>  <tt class="py-line">                <tt class="py-name">func_set</tt><tt class="py-op">.</tt><tt class="py-name">update</tt><tt class="py-op">(</tt><tt class="py-name">docindex</tt><tt class="py-op">.</tt><tt class="py-name">callers</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-name">func_doc</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)< [...]
+<a name="L1219"></a><tt class="py-lineno">1219</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'add_callees'</tt><tt class="py-op">,</tt> <tt class="py-name">False</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1220"></a><tt class="py-lineno">1220</tt>  <tt class="py-line">                <tt class="py-name">func_set</tt><tt class="py-op">.</tt><tt class="py-name">update</tt><tt class="py-op">(</tt><tt class="py-name">docindex</tt><tt class="py-op">.</tt><tt class="py-name">callees</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-name">func_doc</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)< [...]
+<a name="L1221"></a><tt class="py-lineno">1221</tt>  <tt class="py-line"> </tt>
+<a name="L1222"></a><tt class="py-lineno">1222</tt>  <tt class="py-line">    <tt id="link-425" class="py-name"><a title="epydoc.markup.restructuredtext.dotgraph.graph" class="py-name" href="#" onclick="return doclink('link-425', 'graph', 'link-292');">graph</a></tt> <tt class="py-op">=</tt> <tt id="link-426" class="py-name"><a title="epydoc.docwriter.dotgraph.DotGraph" class="py-name" href="#" onclick="return doclink('link-426', 'DotGraph', 'link-293');">DotGraph</a></tt><tt class="py-op [...]
+<a name="L1223"></a><tt class="py-lineno">1223</tt>  <tt class="py-line">                     <tt class="py-name">node_defaults</tt><tt class="py-op">=</tt><tt class="py-op">{</tt><tt class="py-string">'shape'</tt><tt class="py-op">:</tt><tt class="py-string">'box'</tt><tt class="py-op">,</tt> <tt class="py-string">'width'</tt><tt class="py-op">:</tt> <tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-string">'height'</tt><tt class="py-op">:</tt> <tt class="py-number">0</ [...]
+<a name="L1224"></a><tt class="py-lineno">1224</tt>  <tt class="py-line">     </tt>
+<a name="L1225"></a><tt class="py-lineno">1225</tt>  <tt class="py-line">    <tt class="py-comment"># Options</tt> </tt>
+<a name="L1226"></a><tt class="py-lineno">1226</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'dir'</tt><tt class="py-op">,</tt> <tt class="py-string">'LR'</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-string">'TB'</tt><tt class="py-op">:</tt> <tt class="py-comment"># default: left-to-right</tt> </tt>
+<a name="L1227"></a><tt class="py-lineno">1227</tt>  <tt class="py-line">        <tt id="link-428" class="py-name"><a title="epydoc.markup.restructuredtext.dotgraph.graph" class="py-name" href="#" onclick="return doclink('link-428', 'graph', 'link-292');">graph</a></tt><tt class="py-op">.</tt><tt id="link-429" class="py-name"><a title="epydoc.markup.Field.body" class="py-name" href="#" onclick="return doclink('link-429', 'body', 'link-21');">body</a></tt> <tt class="py-op">+=</tt> <tt cl [...]
+<a name="L1228"></a><tt class="py-lineno">1228</tt>  <tt class="py-line"> </tt>
+<a name="L1229"></a><tt class="py-lineno">1229</tt>  <tt class="py-line">    <tt class="py-name">nodes</tt> <tt class="py-op">=</tt> <tt id="link-430" class="py-name"><a title="epydoc.docwriter.dotgraph.add_valdoc_nodes" class="py-name" href="#" onclick="return doclink('link-430', 'add_valdoc_nodes', 'link-300');">add_valdoc_nodes</a></tt><tt class="py-op">(</tt><tt id="link-431" class="py-name"><a title="epydoc.markup.restructuredtext.dotgraph.graph" class="py-name" href="#" onclick="re [...]
+<a name="L1230"></a><tt class="py-lineno">1230</tt>  <tt class="py-line">     </tt>
+<a name="L1231"></a><tt class="py-lineno">1231</tt>  <tt class="py-line">    <tt class="py-comment"># Find the edges.</tt> </tt>
+<a name="L1232"></a><tt class="py-lineno">1232</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">edges</tt> <tt class="py-op">=</tt> <tt class="py-name">set</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1233"></a><tt class="py-lineno">1233</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">func_doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">functions</tt><tt class="py-op">:</tt> </tt>
+<a name="L1234"></a><tt class="py-lineno">1234</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">caller</tt> <tt class="py-keyword">in</tt> <tt class="py-name">docindex</tt><tt class="py-op">.</tt><tt class="py-name">callers</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-name">func_doc</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</ [...]
+<a name="L1235"></a><tt class="py-lineno">1235</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">caller</tt> <tt class="py-keyword">in</tt> <tt class="py-name">nodes</tt><tt class="py-op">:</tt> </tt>
+<a name="L1236"></a><tt class="py-lineno">1236</tt>  <tt class="py-line">                <tt class="py-name">edges</tt><tt class="py-op">.</tt><tt class="py-name">add</tt><tt class="py-op">(</tt> <tt class="py-op">(</tt><tt class="py-name">nodes</tt><tt class="py-op">[</tt><tt class="py-name">caller</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">nodes</tt><tt class="py-op">[</tt><tt class="py-name">func_doc</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> <t [...]
+<a name="L1237"></a><tt class="py-lineno">1237</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">callee</tt> <tt class="py-keyword">in</tt> <tt class="py-name">docindex</tt><tt class="py-op">.</tt><tt class="py-name">callees</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-name">func_doc</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</ [...]
+<a name="L1238"></a><tt class="py-lineno">1238</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">callee</tt> <tt class="py-keyword">in</tt> <tt class="py-name">nodes</tt><tt class="py-op">:</tt> </tt>
+<a name="L1239"></a><tt class="py-lineno">1239</tt>  <tt class="py-line">                <tt class="py-name">edges</tt><tt class="py-op">.</tt><tt class="py-name">add</tt><tt class="py-op">(</tt> <tt class="py-op">(</tt><tt class="py-name">nodes</tt><tt class="py-op">[</tt><tt class="py-name">func_doc</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">nodes</tt><tt class="py-op">[</tt><tt class="py-name">callee</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> <t [...]
+<a name="L1240"></a><tt class="py-lineno">1240</tt>  <tt class="py-line">    <tt id="link-432" class="py-name"><a title="epydoc.markup.restructuredtext.dotgraph.graph" class="py-name" href="#" onclick="return doclink('link-432', 'graph', 'link-292');">graph</a></tt><tt class="py-op">.</tt><tt class="py-name">edges</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt id="link-433" class="py-name"><a title="epydoc.docwriter.dotgraph.DotGraphEdge" class="py-name" href="#" onclick="retu [...]
+<a name="L1241"></a><tt class="py-lineno">1241</tt>  <tt class="py-line">     </tt>
+<a name="L1242"></a><tt class="py-lineno">1242</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-434" class="py-name"><a title="epydoc.markup.restructuredtext.dotgraph.graph" class="py-name" href="#" onclick="return doclink('link-434', 'graph', 'link-292');">graph</a></tt> </tt>
+</div><a name="L1243"></a><tt class="py-lineno">1243</tt>  <tt class="py-line"> </tt>
+<a name="L1244"></a><tt class="py-lineno">1244</tt>  <tt class="py-line"><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L1245"></a><tt class="py-lineno">1245</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#{ Dot Version</tt> </tt>
+<a name="L1246"></a><tt class="py-lineno">1246</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L1247"></a><tt class="py-lineno">1247</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L1248"></a><tt class="py-lineno">1248</tt>  <tt class="py-line"><tt id="link-435" class="py-name" targets="Variable epydoc.docwriter.dotgraph._dot_version=epydoc.docwriter.dotgraph-module.html#_dot_version"><a title="epydoc.docwriter.dotgraph._dot_version" class="py-name" href="#" onclick="return doclink('link-435', '_dot_version', 'link-435');">_dot_version</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L1249"></a><tt class="py-lineno">1249</tt>  <tt class="py-line"><tt id="link-436" class="py-name" targets="Variable epydoc.docwriter.dotgraph._DOT_VERSION_RE=epydoc.docwriter.dotgraph-module.html#_DOT_VERSION_RE"><a title="epydoc.docwriter.dotgraph._DOT_VERSION_RE" class="py-name" href="#" onclick="return doclink('link-436', '_DOT_VERSION_RE', 'link-436');">_DOT_VERSION_RE</a></tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">co [...]
+<a name="get_dot_version"></a><div id="get_dot_version-def"><a name="L1250"></a><tt class="py-lineno">1250</tt> <a class="py-toggle" href="#" id="get_dot_version-toggle" onclick="return toggle('get_dot_version');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.dotgraph-module.html#get_dot_version">get_dot_version</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="get_dot_version-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="get_dot_version-expanded"><a name="L1251"></a><tt class="py-lineno">1251</tt>  <tt class="py-line">    <tt class="py-keyword">global</tt> <tt id="link-437" class="py-name"><a title="epydoc.docwriter.dotgraph._dot_version" class="py-name" href="#" onclick="return doclink('link-437', '_dot_version', 'link-435');">_dot_version</a></tt> </tt>
+<a name="L1252"></a><tt class="py-lineno">1252</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-438" class="py-name"><a title="epydoc.docwriter.dotgraph._dot_version" class="py-name" href="#" onclick="return doclink('link-438', '_dot_version', 'link-435');">_dot_version</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1253"></a><tt class="py-lineno">1253</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L1254"></a><tt class="py-lineno">1254</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-name">err</tt> <tt class="py-op">=</tt> <tt id="link-439" class="py-name"><a title="epydoc.util.run_subprocess" class="py-name" href="#" onclick="return doclink('link-439', 'run_subprocess', 'link-68');">run_subprocess</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt id="link-440" class="py-name"><a title="epydoc.docwriter.dotg [...]
+<a name="L1255"></a><tt class="py-lineno">1255</tt>  <tt class="py-line">            <tt class="py-name">version_info</tt> <tt class="py-op">=</tt> <tt class="py-name">err</tt> <tt class="py-keyword">or</tt> <tt class="py-name">out</tt> </tt>
+<a name="L1256"></a><tt class="py-lineno">1256</tt>  <tt class="py-line">            <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt id="link-441" class="py-name"><a title="epydoc.docwriter.dotgraph._DOT_VERSION_RE" class="py-name" href="#" onclick="return doclink('link-441', '_DOT_VERSION_RE', 'link-436');">_DOT_VERSION_RE</a></tt><tt class="py-op">.</tt><tt class="py-name">match</tt><tt class="py-op">(</tt><tt class="py-name">version_info</tt><tt class="py-op">)</tt> </tt>
+<a name="L1257"></a><tt class="py-lineno">1257</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">m</tt><tt class="py-op">:</tt> </tt>
+<a name="L1258"></a><tt class="py-lineno">1258</tt>  <tt class="py-line">                <tt id="link-442" class="py-name"><a title="epydoc.docwriter.dotgraph._dot_version" class="py-name" href="#" onclick="return doclink('link-442', '_dot_version', 'link-435');">_dot_version</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">x</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">x< [...]
+<a name="L1259"></a><tt class="py-lineno">1259</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1260"></a><tt class="py-lineno">1260</tt>  <tt class="py-line">                <tt id="link-443" class="py-name"><a title="epydoc.docwriter.dotgraph._dot_version" class="py-name" href="#" onclick="return doclink('link-443', '_dot_version', 'link-435');">_dot_version</a></tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-op">)</tt> </tt>
+<a name="L1261"></a><tt class="py-lineno">1261</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">OSError</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
+<a name="L1262"></a><tt class="py-lineno">1262</tt>  <tt class="py-line">            <tt id="link-444" class="py-name"><a title="epydoc.docwriter.dotgraph._dot_version" class="py-name" href="#" onclick="return doclink('link-444', '_dot_version', 'link-435');">_dot_version</a></tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-op">)</tt> </tt>
+<a name="L1263"></a><tt class="py-lineno">1263</tt>  <tt class="py-line">        <tt id="link-445" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-445', 'log', 'link-1');">log</a></tt><tt class="py-op">.</tt><tt id="link-446" class="py-name" targets="Function epydoc.log.info()=epydoc.log-module.html#info"><a title="epydoc.log.info" class="py-name" href="#" onclick="return doclink('link-446', 'info', 'link-446');">info</a></tt><tt class="py-op">(</tt><tt class="py-string">'Detected dot version %s'</tt> <tt class="py-op">%</tt> <tt id="link-447" class [...]
+<a name="L1264"></a><tt class="py-lineno">1264</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-448" class="py-name"><a title="epydoc.docwriter.dotgraph._dot_version" class="py-name" href="#" onclick="return doclink('link-448', '_dot_version', 'link-435');">_dot_version</a></tt> </tt>
+</div><a name="L1265"></a><tt class="py-lineno">1265</tt>  <tt class="py-line"> </tt>
+<a name="L1266"></a><tt class="py-lineno">1266</tt>  <tt class="py-line"><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L1267"></a><tt class="py-lineno">1267</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#{ Helper Functions</tt> </tt>
+<a name="L1268"></a><tt class="py-lineno">1268</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L1269"></a><tt class="py-lineno">1269</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="add_valdoc_nodes"></a><div id="add_valdoc_nodes-def"><a name="L1270"></a><tt class="py-lineno">1270</tt> <a class="py-toggle" href="#" id="add_valdoc_nodes-toggle" onclick="return toggle('add_valdoc_nodes');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.dotgraph-module.html#add_valdoc_nodes">add_valdoc_nodes</a><tt class="py-op">(</tt><tt class="py-param">graph</tt><tt class="py-op">,</tt> <tt class="py-param">val_docs</t [...]
+</div><div id="add_valdoc_nodes-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="add_valdoc_nodes-expanded"><a name="L1271"></a><tt class="py-lineno">1271</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L1272"></a><tt class="py-lineno">1272</tt>  <tt class="py-line"><tt class="py-docstring">    :todo: Use different node styles for different subclasses of APIDoc</tt> </tt>
+<a name="L1273"></a><tt class="py-lineno">1273</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1274"></a><tt class="py-lineno">1274</tt>  <tt class="py-line">    <tt class="py-name">nodes</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L1275"></a><tt class="py-lineno">1275</tt>  <tt class="py-line">    <tt class="py-name">val_docs</tt> <tt class="py-op">=</tt> <tt id="link-449" class="py-name" targets="Function epydoc.compat.sorted()=epydoc.compat-module.html#sorted"><a title="epydoc.compat.sorted" class="py-name" href="#" onclick="return doclink('link-449', 'sorted', 'link-449');">sorted</a></tt><tt class="py-op">(</tt><tt class="py-name">val_docs</tt><tt class="py-op">,</tt> <tt id="link-450" class="py-name" [...]
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-451', 'canonical_name', 'link-103');">canonical_name</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1276"></a><tt class="py-lineno">1276</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">i</tt><tt class="py-op">,</tt> <tt class="py-name">val_doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">enumerate</tt><tt class="py-op">(</tt><tt class="py-name">val_docs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1277"></a><tt class="py-lineno">1277</tt>  <tt class="py-line">        <tt id="link-452" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.label" class="py-name" href="#" onclick="return doclink('link-452', 'label', 'link-84');">label</a></tt> <tt class="py-op">=</tt> <tt class="py-name">val_doc</tt><tt class="py-op">.</tt><tt id="link-453" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-453', 'canonical_name', 'link-103');">canonical_name</a></tt><tt class="py-op">.</tt><tt id="link-454" class="py-name"><a title="epydoc.apidoc.DottedName.contextualize" class="py-name" href="#" onclick="return doclink('link-454', 'contextualize', 'link-226');">contextualize</a></tt><tt class="py-op">(</tt><tt class="py-name">context</tt><tt class="py-op">.</tt><tt id="link-455" class="py-name [...]
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-455', 'canonical_name', 'link-103');">canonical_name</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1278"></a><tt class="py-lineno">1278</tt>  <tt class="py-line">        <tt class="py-name">node</tt> <tt class="py-op">=</tt> <tt class="py-name">nodes</tt><tt class="py-op">[</tt><tt class="py-name">val_doc</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-456" class="py-name"><a title="epydoc.docwriter.dotgraph.DotGraphNode" class="py-name" href="#" onclick="return doclink('link-456', 'DotGraphNode', 'link-92');">DotGraphNode</a></tt><tt class="py-op">(</tt>< [...]
+<a name="L1279"></a><tt class="py-lineno">1279</tt>  <tt class="py-line">        <tt id="link-458" class="py-name"><a title="epydoc.markup.restructuredtext.dotgraph.graph" class="py-name" href="#" onclick="return doclink('link-458', 'graph', 'link-292');">graph</a></tt><tt class="py-op">.</tt><tt class="py-name">nodes</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">node</tt><tt class="py-op">)</tt> </tt>
+<a name="L1280"></a><tt class="py-lineno">1280</tt>  <tt class="py-line">        <tt id="link-459" class="py-name" targets="Function epydoc.docwriter.dotgraph.specialize_valdoc_node()=epydoc.docwriter.dotgraph-module.html#specialize_valdoc_node"><a title="epydoc.docwriter.dotgraph.specialize_valdoc_node" class="py-name" href="#" onclick="return doclink('link-459', 'specialize_valdoc_node', 'link-459');">specialize_valdoc_node</a></tt><tt class="py-op">(</tt><tt class="py-name">node</tt>< [...]
+<a name="L1281"></a><tt class="py-lineno">1281</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">nodes</tt> </tt>
+</div><a name="L1282"></a><tt class="py-lineno">1282</tt>  <tt class="py-line"> </tt>
+<a name="L1283"></a><tt class="py-lineno">1283</tt>  <tt class="py-line"><tt id="link-461" class="py-name"><a title="epydoc.docwriter.dotgraph.NOOP_URL" class="py-name" href="#" onclick="return doclink('link-461', 'NOOP_URL', 'link-115');">NOOP_URL</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'javascript:void(0);'</tt> </tt>
+<a name="L1284"></a><tt class="py-lineno">1284</tt>  <tt class="py-line"><tt id="link-462" class="py-name" targets="Variable epydoc.docwriter.dotgraph.MODULE_NODE_HTML=epydoc.docwriter.dotgraph-module.html#MODULE_NODE_HTML"><a title="epydoc.docwriter.dotgraph.MODULE_NODE_HTML" class="py-name" href="#" onclick="return doclink('link-462', 'MODULE_NODE_HTML', 'link-462');">MODULE_NODE_HTML</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'''</tt> </tt>
+<a name="L1285"></a><tt class="py-lineno">1285</tt>  <tt class="py-line"><tt class="py-string">  <TABLE BORDER="0" CELLBORDER="0" CELLSPACING="0"</tt> </tt>
+<a name="L1286"></a><tt class="py-lineno">1286</tt>  <tt class="py-line"><tt class="py-string">         CELLPADDING="0" PORT="table" ALIGN="LEFT"></tt> </tt>
+<a name="L1287"></a><tt class="py-lineno">1287</tt>  <tt class="py-line"><tt class="py-string">  <TR><TD ALIGN="LEFT" VALIGN="BOTTOM" HEIGHT="8" WIDTH="16" FIXEDSIZE="true"</tt> </tt>
+<a name="L1288"></a><tt class="py-lineno">1288</tt>  <tt class="py-line"><tt class="py-string">          BGCOLOR="%s" BORDER="1" PORT="tab"></TD></TR></tt> </tt>
+<a name="L1289"></a><tt class="py-lineno">1289</tt>  <tt class="py-line"><tt class="py-string">  <TR><TD ALIGN="LEFT" VALIGN="TOP" BGCOLOR="%s" BORDER="1"</tt> </tt>
+<a name="L1290"></a><tt class="py-lineno">1290</tt>  <tt class="py-line"><tt class="py-string">          PORT="body" HREF="%s" TOOLTIP="%s">%s</TD></TR></tt> </tt>
+<a name="L1291"></a><tt class="py-lineno">1291</tt>  <tt class="py-line"><tt class="py-string">  </TABLE>'''</tt><tt class="py-op">.</tt><tt class="py-name">strip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1292"></a><tt class="py-lineno">1292</tt>  <tt class="py-line"> </tt>
+<a name="specialize_valdoc_node"></a><div id="specialize_valdoc_node-def"><a name="L1293"></a><tt class="py-lineno">1293</tt> <a class="py-toggle" href="#" id="specialize_valdoc_node-toggle" onclick="return toggle('specialize_valdoc_node');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.dotgraph-module.html#specialize_valdoc_node">specialize_valdoc_node</a><tt class="py-op">(</tt><tt class="py-param">node</tt><tt class="py-op">,</t [...]
+</div><div id="specialize_valdoc_node-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="specialize_valdoc_node-expanded"><a name="L1294"></a><tt class="py-lineno">1294</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L1295"></a><tt class="py-lineno">1295</tt>  <tt class="py-line"><tt class="py-docstring">    Update the style attributes of `node` to reflext its type</tt> </tt>
+<a name="L1296"></a><tt class="py-lineno">1296</tt>  <tt class="py-line"><tt class="py-docstring">    and context.</tt> </tt>
+<a name="L1297"></a><tt class="py-lineno">1297</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1298"></a><tt class="py-lineno">1298</tt>  <tt class="py-line">    <tt class="py-comment"># We can only use html-style nodes if dot_version>2.</tt> </tt>
+<a name="L1299"></a><tt class="py-lineno">1299</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">dot_version</tt> <tt class="py-op">=</tt> <tt id="link-463" class="py-name"><a title="epydoc.docwriter.dotgraph.get_dot_version" class="py-name" href="#" onclick="return doclink('link-463', 'get_dot_version', 'link-32');">get_dot_version</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1300"></a><tt class="py-lineno">1300</tt>  <tt class="py-line">     </tt>
+<a name="L1301"></a><tt class="py-lineno">1301</tt>  <tt class="py-line">    <tt class="py-comment"># If val_doc or context is a variable, get its value.</tt> </tt>
+<a name="L1302"></a><tt class="py-lineno">1302</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">val_doc</tt><tt class="py-op">,</tt> <tt id="link-464" class="py-name"><a title="epydoc.apidoc.VariableDoc" class="py-name" href="#" onclick="return doclink('link-464', 'VariableDoc', 'link-312');">VariableDoc</a></tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <t [...]
+<a name="L1303"></a><tt class="py-lineno">1303</tt>  <tt class="py-line">        <tt class="py-name">val_doc</tt> <tt class="py-op">=</tt> <tt class="py-name">val_doc</tt><tt class="py-op">.</tt><tt id="link-467" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-467', 'value', 'link-107');">value</a></tt> </tt>
+<a name="L1304"></a><tt class="py-lineno">1304</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">context</tt><tt class="py-op">,</tt> <tt id="link-468" class="py-name"><a title="epydoc.apidoc.VariableDoc" class="py-name" href="#" onclick="return doclink('link-468', 'VariableDoc', 'link-312');">VariableDoc</a></tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-name">context</t [...]
+<a name="L1305"></a><tt class="py-lineno">1305</tt>  <tt class="py-line">        <tt class="py-name">context</tt> <tt class="py-op">=</tt> <tt class="py-name">context</tt><tt class="py-op">.</tt><tt id="link-471" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-471', 'value', 'link-107');">value</a></tt> </tt>
+<a name="L1306"></a><tt class="py-lineno">1306</tt>  <tt class="py-line"> </tt>
+<a name="L1307"></a><tt class="py-lineno">1307</tt>  <tt class="py-line">    <tt class="py-comment"># Set the URL.  (Do this even if it points to the page we're</tt> </tt>
+<a name="L1308"></a><tt class="py-lineno">1308</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># currently on; otherwise, the tooltip is ignored.)</tt> </tt>
+<a name="L1309"></a><tt class="py-lineno">1309</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">node</tt><tt class="py-op">[</tt><tt class="py-string">'href'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-472" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.url" class="py-name" href="#" onclick="return doclink('link-472', 'url', 'link-54');">url</a></tt> <tt class="py-keyword">or</tt> <tt id="link-473" class="py-name"><a title=" [...]
+<a name="L1310"></a><tt class="py-lineno">1310</tt>  <tt class="py-line"> </tt>
+<a name="L1311"></a><tt class="py-lineno">1311</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">val_doc</tt><tt class="py-op">,</tt> <tt id="link-474" class="py-name"><a title="epydoc.apidoc.ModuleDoc" class="py-name" href="#" onclick="return doclink('link-474', 'ModuleDoc', 'link-408');">ModuleDoc</a></tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-name">dot_version</tt> [...]
+<a name="L1312"></a><tt class="py-lineno">1312</tt>  <tt class="py-line">        <tt class="py-name">node</tt><tt class="py-op">[</tt><tt class="py-string">'shape'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">'plaintext'</tt> </tt>
+<a name="L1313"></a><tt class="py-lineno">1313</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">val_doc</tt> <tt class="py-op">==</tt> <tt class="py-name">context</tt><tt class="py-op">:</tt> <tt class="py-name">color</tt> <tt class="py-op">=</tt> <tt id="link-475" class="py-name"><a title="epydoc.docwriter.dotgraph.SELECTED_BG" class="py-name" href="#" onclick="return doclink('link-475', 'SELECTED_BG', 'link-10');">SELECTED_BG</a></tt> </tt>
+<a name="L1314"></a><tt class="py-lineno">1314</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> <tt class="py-name">color</tt> <tt class="py-op">=</tt> <tt id="link-476" class="py-name"><a title="epydoc.docwriter.dotgraph.MODULE_BG" class="py-name" href="#" onclick="return doclink('link-476', 'MODULE_BG', 'link-8');">MODULE_BG</a></tt> </tt>
+<a name="L1315"></a><tt class="py-lineno">1315</tt>  <tt class="py-line">        <tt class="py-name">node</tt><tt class="py-op">[</tt><tt class="py-string">'tooltip'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">node</tt><tt class="py-op">[</tt><tt class="py-string">'label'</tt><tt class="py-op">]</tt> </tt>
+<a name="L1316"></a><tt class="py-lineno">1316</tt>  <tt class="py-line">        <tt class="py-name">node</tt><tt class="py-op">[</tt><tt class="py-string">'html_label'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-477" class="py-name"><a title="epydoc.docwriter.dotgraph.MODULE_NODE_HTML" class="py-name" href="#" onclick="return doclink('link-477', 'MODULE_NODE_HTML', 'link-462');">MODULE_NODE_HTML</a></tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class=" [...]
+<a name="L1317"></a><tt class="py-lineno">1317</tt>  <tt class="py-line">                                                 <tt class="py-name">val_doc</tt><tt class="py-op">.</tt><tt id="link-479" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-479', 'canonical_name', 'link-103');">canonical_name</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L1318"></a><tt class="py-lineno">1318</tt>  <tt class="py-line">                                                 <tt class="py-name">node</tt><tt class="py-op">[</tt><tt class="py-string">'label'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1319"></a><tt class="py-lineno">1319</tt>  <tt class="py-line">        <tt class="py-name">node</tt><tt class="py-op">[</tt><tt class="py-string">'width'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">node</tt><tt class="py-op">[</tt><tt class="py-string">'height'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L1320"></a><tt class="py-lineno">1320</tt>  <tt class="py-line">        <tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">port</tt> <tt class="py-op">=</tt> <tt class="py-string">'body'</tt> </tt>
+<a name="L1321"></a><tt class="py-lineno">1321</tt>  <tt class="py-line"> </tt>
+<a name="L1322"></a><tt class="py-lineno">1322</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">val_doc</tt><tt class="py-op">,</tt> <tt id="link-480" class="py-name"><a title="epydoc.apidoc.RoutineDoc" class="py-name" href="#" onclick="return doclink('link-480', 'RoutineDoc', 'link-108');">RoutineDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1323"></a><tt class="py-lineno">1323</tt>  <tt class="py-line">        <tt class="py-name">node</tt><tt class="py-op">[</tt><tt class="py-string">'shape'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">'box'</tt> </tt>
+<a name="L1324"></a><tt class="py-lineno">1324</tt>  <tt class="py-line">        <tt class="py-name">node</tt><tt class="py-op">[</tt><tt class="py-string">'style'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">'rounded'</tt> </tt>
+<a name="L1325"></a><tt class="py-lineno">1325</tt>  <tt class="py-line">        <tt class="py-name">node</tt><tt class="py-op">[</tt><tt class="py-string">'width'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L1326"></a><tt class="py-lineno">1326</tt>  <tt class="py-line">        <tt class="py-name">node</tt><tt class="py-op">[</tt><tt class="py-string">'height'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L1327"></a><tt class="py-lineno">1327</tt>  <tt class="py-line">        <tt class="py-name">node</tt><tt class="py-op">[</tt><tt class="py-string">'label'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">'%s()'</tt> <tt class="py-op">%</tt> <tt class="py-name">node</tt><tt class="py-op">[</tt><tt class="py-string">'label'</tt><tt class="py-op">]</tt> </tt>
+<a name="L1328"></a><tt class="py-lineno">1328</tt>  <tt class="py-line">        <tt class="py-name">node</tt><tt class="py-op">[</tt><tt class="py-string">'tooltip'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">node</tt><tt class="py-op">[</tt><tt class="py-string">'label'</tt><tt class="py-op">]</tt> </tt>
+<a name="L1329"></a><tt class="py-lineno">1329</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">val_doc</tt> <tt class="py-op">==</tt> <tt class="py-name">context</tt><tt class="py-op">:</tt> </tt>
+<a name="L1330"></a><tt class="py-lineno">1330</tt>  <tt class="py-line">            <tt class="py-name">node</tt><tt class="py-op">[</tt><tt class="py-string">'fillcolor'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-481" class="py-name"><a title="epydoc.docwriter.dotgraph.SELECTED_BG" class="py-name" href="#" onclick="return doclink('link-481', 'SELECTED_BG', 'link-10');">SELECTED_BG</a></tt> </tt>
+<a name="L1331"></a><tt class="py-lineno">1331</tt>  <tt class="py-line">            <tt class="py-name">node</tt><tt class="py-op">[</tt><tt class="py-string">'style'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">'filled,rounded,bold'</tt> </tt>
+<a name="L1332"></a><tt class="py-lineno">1332</tt>  <tt class="py-line">             </tt>
+<a name="L1333"></a><tt class="py-lineno">1333</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1334"></a><tt class="py-lineno">1334</tt>  <tt class="py-line">        <tt class="py-name">node</tt><tt class="py-op">[</tt><tt class="py-string">'shape'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">'box'</tt>  </tt>
+<a name="L1335"></a><tt class="py-lineno">1335</tt>  <tt class="py-line">        <tt class="py-name">node</tt><tt class="py-op">[</tt><tt class="py-string">'width'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L1336"></a><tt class="py-lineno">1336</tt>  <tt class="py-line">        <tt class="py-name">node</tt><tt class="py-op">[</tt><tt class="py-string">'height'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L1337"></a><tt class="py-lineno">1337</tt>  <tt class="py-line">        <tt class="py-name">node</tt><tt class="py-op">[</tt><tt class="py-string">'tooltip'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">node</tt><tt class="py-op">[</tt><tt class="py-string">'label'</tt><tt class="py-op">]</tt> </tt>
+<a name="L1338"></a><tt class="py-lineno">1338</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">val_doc</tt> <tt class="py-op">==</tt> <tt class="py-name">context</tt><tt class="py-op">:</tt> </tt>
+<a name="L1339"></a><tt class="py-lineno">1339</tt>  <tt class="py-line">            <tt class="py-name">node</tt><tt class="py-op">[</tt><tt class="py-string">'fillcolor'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-482" class="py-name"><a title="epydoc.docwriter.dotgraph.SELECTED_BG" class="py-name" href="#" onclick="return doclink('link-482', 'SELECTED_BG', 'link-10');">SELECTED_BG</a></tt> </tt>
+<a name="L1340"></a><tt class="py-lineno">1340</tt>  <tt class="py-line">            <tt class="py-name">node</tt><tt class="py-op">[</tt><tt class="py-string">'style'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">'filled,bold'</tt> </tt>
+</div><a name="L1341"></a><tt class="py-lineno">1341</tt>  <tt class="py-line"> </tt>
+<a name="name_list"></a><div id="name_list-def"><a name="L1342"></a><tt class="py-lineno">1342</tt> <a class="py-toggle" href="#" id="name_list-toggle" onclick="return toggle('name_list');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.dotgraph-module.html#name_list">name_list</a><tt class="py-op">(</tt><tt class="py-param">api_docs</tt><tt class="py-op">,</tt> <tt class="py-param">context</tt><tt class="py-op">=</tt><tt class="py- [...]
+</div><div id="name_list-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="name_list-expanded"><a name="L1343"></a><tt class="py-lineno">1343</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">context</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1344"></a><tt class="py-lineno">1344</tt>  <tt class="py-line">        <tt class="py-name">context</tt> <tt class="py-op">=</tt> <tt class="py-name">context</tt><tt class="py-op">.</tt><tt id="link-483" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-483', 'canonical_name', 'link-103');">canonical_name</a></tt> </tt>
+<a name="L1345"></a><tt class="py-lineno">1345</tt>  <tt class="py-line">    <tt class="py-name">names</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">d</tt><tt class="py-op">.</tt><tt id="link-484" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-484', 'canonical_name', 'link-103');">canonical_name</a></tt><tt class="py-op">.</tt><tt id="link-485" class="py-name"><a title="epydoc.apidoc.DottedName.contextualize" class="py-name" href="#" onclick="return doclink('link-485', 'contextualize', 'link-226');">contextualize</a></tt><tt class="py-op">(</tt><tt class="py-name">context</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt cla [...]
+<a name="L1346"></a><tt class="py-lineno">1346</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">names</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-string">''</tt> </tt>
+<a name="L1347"></a><tt class="py-lineno">1347</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">names</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-string">'%s'</tt> <tt class="py-op">%</tt> <tt class="py-name">names</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L1348"></a><tt class="py-lineno">1348</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">names</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">2</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-string">'%s and %s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">names</tt><tt class="py-op">[</tt><tt class="py-numbe [...]
+<a name="L1349"></a><tt class="py-lineno">1349</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1350"></a><tt class="py-lineno">1350</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">'%s, and %s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-string">', '</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">names</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt>< [...]
+</div><a name="L1351"></a><tt class="py-lineno">1351</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:09:34 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.docwriter.dotgraph.DotGraph-class.html b/doc/api/epydoc.docwriter.dotgraph.DotGraph-class.html
new file mode 100644
index 0000000..2bd47af
--- /dev/null
+++ b/doc/api/epydoc.docwriter.dotgraph.DotGraph-class.html
@@ -0,0 +1,716 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.docwriter.dotgraph.DotGraph</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.docwriter-module.html">Package docwriter</a> ::
+        <a href="epydoc.docwriter.dotgraph-module.html">Module dotgraph</a> ::
+        Class DotGraph
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.docwriter.dotgraph.DotGraph-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class DotGraph</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.docwriter.dotgraph-pysrc.html#DotGraph">source code</a></span></p>
+<p>A <tt class="rst-rst-rst-docutils literal rst-rst-docutils literal rst-docutils literal"><span class="pre">dot</span></tt> directed graph.  The contents of the graph are
+constructed from the following instance variables:</p>
+<blockquote>
+<ul class="rst-simple">
+<li><a href="epydoc.docwriter.dotgraph.DotGraph-class.html#nodes" class="link">nodes</a>: A list of <a href="epydoc.docwriter.dotgraph.DotGraphNode-class.html" class="link">DotGraphNode</a>s, encoding the nodes
+that are present in the graph.  Each node is characterized
+a set of attributes, including an optional label.</li>
+<li><a href="epydoc.docwriter.dotgraph.DotGraph-class.html#edges" class="link">edges</a>: A list of <a href="epydoc.docwriter.dotgraph.DotGraphEdge-class.html" class="link">DotGraphEdge</a>s, encoding the edges
+that are present in the graph.  Each edge is characterized
+by a set of attributes, including an optional label.</li>
+<li><a href="epydoc.docwriter.dotgraph.DotGraph-class.html#node_defaults" class="link">node_defaults</a>: Default attributes for nodes.</li>
+<li><a href="epydoc.docwriter.dotgraph.DotGraph-class.html#edge_defaults" class="link">edge_defaults</a>: Default attributes for edges.</li>
+<li><a href="epydoc.docwriter.dotgraph.DotGraph-class.html#body" class="link">body</a>: A string that is appended as-is in the body of
+the graph.  This can be used to build more complex dot
+graphs.</li>
+</ul>
+</blockquote>
+<p>The <a href="epydoc.docwriter.dotgraph.DotGraph-class.html#link" class="link">link()</a> method can be used to resolve crossreference links
+within the graph.  In particular, if the 'href' attribute of any
+node or edge is assigned a value of the form <tt class="rst-docutils literal"><span class="pre"><name></span></tt>, then it
+will be replaced by the URL of the object with that name.  This
+applies to the <a href="epydoc.docwriter.dotgraph.DotGraph-class.html#body" class="link">body</a> as well as the <a href="epydoc.docwriter.dotgraph.DotGraph-class.html#nodes" class="link">nodes</a> and <a href="epydoc.docwriter.dotgraph.DotGraph-class.html#edges" class="link">edges</a>.</p>
+<p>To render the graph, use the methods <a href="epydoc.docwriter.dotgraph.DotGraph-class.html#write" class="link">write()</a> and <a href="epydoc.docwriter.dotgraph.DotGraph-class.html#render" class="link">render()</a>.
+Usually, you should call <a href="epydoc.docwriter.dotgraph.DotGraph-class.html#link" class="link">link()</a> before you render the graph.</p>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__init__"></a><span class="summary-sig-name">__init__</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">title</span>,
+        <span class="summary-sig-arg">body</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>,
+        <span class="summary-sig-arg">node_defaults</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">edge_defaults</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">caption</span>=<span class="summary-sig-default">None</span>)</span><br />
+      Create a new <a href="epydoc.docwriter.dotgraph.DotGraph-class.html" class="link">DotGraph</a>.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.dotgraph-pysrc.html#DotGraph.__init__">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for___init___16-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for___init___16-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for___init___16" name="call_graph_for___init___16">
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraph-class.html#__init__" title="__init__()" alt="" coords="415,118,511,150" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#class_tree_graph" title="class_tree_graph()" alt="" coords="105,6,265,38" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#import_graph" title="import_graph()" alt="" coords="117,62,253,94" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#uml_class_tree_graph" title="uml_class_tree_graph()" alt="" coords="87,118,284,150" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#uml_package_tree_graph" title="uml_package_tree_graph()" alt="" coords="73,174,297,206" />
+<area shape="rect" href="epydoc.markup.restructuredtext-module.html#_construct_digraph" title="markup.restructuredtext._construct_digraph()" alt="" coords="5,230,365,262" />
+</map>
+  <img src="call_graph_for___init___16.gif" alt='' usemap="#call_graph_for___init___16" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docwriter.dotgraph.DotGraph-class.html#to_html" class="summary-sig-name">to_html</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">image_file</span>,
+        <span class="summary-sig-arg">image_url</span>,
+        <span class="summary-sig-arg">center</span>=<span class="summary-sig-default">True</span>)</span><br />
+      Return the HTML code that should be uesd to display this graph
+(including a client-side image map).</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.dotgraph-pysrc.html#DotGraph.to_html">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_to_html-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_to_html-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_to_html" name="call_graph_for_to_html">
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraph-class.html#_run_dot" title="_run_dot()" alt="" coords="768,6,870,38" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraph-class.html#to_html" title="to_html()" alt="" coords="580,62,671,94" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#get_dot_version" title="get_dot_version()" alt="" coords="742,62,896,94" />
+<area shape="rect" href="epydoc.util-module.html#plaintext_to_html" title="util.plaintext_to_html()" alt="" coords="720,118,918,150" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#render_graph" title="html.HTMLWriter.render_graph()" alt="" coords="128,6,408,38" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#_to_html" title="markup.epytext.ParsedEpytextDocstring._to_html()" alt="" coords="64,62,472,94" />
+<area shape="rect" href="epydoc.markup.restructuredtext._EpydocHTMLTranslator-class.html#visit_dotgraph" title="markup.restructuredtext._EpydocHTMLTranslator.visit_dotgraph()" alt="" coords="6,118,531,150" />
+</map>
+  <img src="call_graph_for_to_html.gif" alt='' usemap="#call_graph_for_to_html" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="link"></a><span class="summary-sig-name">link</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">docstring_linker</span>)</span><br />
+      Replace any href attributes whose value is <tt class="rst-docutils literal"><span class="pre"><name></span></tt> with
+the url of the object whose name is <tt class="rst-docutils literal"><span class="pre"><name></span></tt>.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.dotgraph-pysrc.html#DotGraph.link">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_link-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_link-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_link" name="call_graph_for_link">
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraph-class.html#_link_href" title="_link_href()" alt="" coords="527,6,639,38" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraph-class.html#link" title="link()" alt="" coords="415,6,476,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext-module.html#_construct_digraph" title="markup.restructuredtext._construct_digraph()" alt="" coords="5,6,365,38" />
+</map>
+  <img src="call_graph_for_link.gif" alt='' usemap="#call_graph_for_link" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_link_href"></a><span class="summary-sig-name">_link_href</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">attribs</span>,
+        <span class="summary-sig-arg">docstring_linker</span>)</span><br />
+      Helper for <a href="epydoc.docwriter.dotgraph.DotGraph-class.html#link" class="link">link()</a></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.dotgraph-pysrc.html#DotGraph._link_href">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__link_href-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__link_href-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__link_href" name="call_graph_for__link_href">
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraph-class.html#_link_href" title="_link_href()" alt="" coords="119,6,231,38" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraph-class.html#link" title="link()" alt="" coords="7,6,68,38" />
+</map>
+  <img src="call_graph_for__link_href.gif" alt='' usemap="#call_graph_for__link_href" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docwriter.dotgraph.DotGraph-class.html#write" class="summary-sig-name">write</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">filename</span>,
+        <span class="summary-sig-arg">language</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string">gif</code><code class="variable-quote">'</code></span>)</span><br />
+      Render the graph using the output format <code class="link">language</code>, and write
+the result to <code class="link">filename</code>.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.dotgraph-pysrc.html#DotGraph.write">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docwriter.dotgraph.DotGraph-class.html#render" class="summary-sig-name">render</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">language</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string">gif</code><code class="variable-quote">'</code></span>)</span><br />
+      Use the <tt class="rst-docutils literal"><span class="pre">dot</span></tt> command to render this graph, using the output
+format <code class="link">language</code>.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.dotgraph-pysrc.html#DotGraph.render">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_run_dot"></a><span class="summary-sig-name">_run_dot</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">*options</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.dotgraph-pysrc.html#DotGraph._run_dot">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__run_dot-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__run_dot-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__run_dot" name="call_graph_for__run_dot">
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraph-class.html#_run_dot" title="_run_dot()" alt="" coords="148,34,249,66" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraph-class.html#to_dotfile" title="to_dotfile()" alt="" coords="336,6,443,38" />
+<area shape="rect" href="epydoc.util-module.html#run_subprocess" title="util.run_subprocess()" alt="" coords="299,62,480,94" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraph-class.html#to_html" title="to_html()" alt="" coords="7,34,97,66" />
+</map>
+  <img src="call_graph_for__run_dot.gif" alt='' usemap="#call_graph_for__run_dot" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="to_dotfile"></a><span class="summary-sig-name">to_dotfile</span>(<span class="summary-sig-arg">self</span>)</span><br />
+      Return the string contents of the dot file that should be used
+to render this graph.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.dotgraph-pysrc.html#DotGraph.to_dotfile">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_to_dotfile-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_to_dotfile-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_to_dotfile" name="call_graph_for_to_dotfile">
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraph-class.html#_run_dot" title="_run_dot()" alt="" coords="7,90,108,122" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraph-class.html#to_dotfile" title="to_dotfile()" alt="" coords="158,90,264,122" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphEdge-class.html#to_dotfile" title="DotGraphEdge.to_dotfile()" alt="" coords="359,6,583,38" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphNode-class.html#to_dotfile" title="DotGraphNode.to_dotfile()" alt="" coords="358,62,584,94" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#to_dotfile" title="DotGraphUmlClassNode.to_dotfile()" alt="" coords="322,118,620,150" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlModuleNode-class.html#to_dotfile" title="DotGraphUmlModuleNode.to_dotfile()" alt="" coords="312,174,630,206" />
+</map>
+  <img src="call_graph_for_to_dotfile.gif" alt='' usemap="#call_graph_for_to_dotfile" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Class Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-ClassVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docwriter.dotgraph.DotGraph-class.html#_uids" class="summary-name" onclick="show_private();">_uids</a> = <code title="set(['call_graph_for___add__',
+     'call_graph_for___cmp__',
+     'call_graph_for___cmp___2',
+     'call_graph_for___cmp___3',
+     'call_graph_for___getitem__',
+     'call_graph_for___getstate__',
+     'call_graph_for___hash__',
+     'call_graph_for___hash___2',
+..."><code class="variable-group">set([</code><code class="variable-quote">'</code><code class="variable-string">call_graph_for___add__</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">call_graph_for___cmp__</code><code class="variable-ellipsis">...</code></code><br />
+      A set of all uids that that have been generated, used to ensure
+that each new graph has a unique uid.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="DEFAULT_NODE_DEFAULTS"></a><span class="summary-name">DEFAULT_NODE_DEFAULTS</span> = <code title="{'fontname': 'Helvetica', 'fontsize': 10}"><code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">fontname</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">Helvetica</code><code class="variable-quote">'</code><code class="variable-o [...]
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="DEFAULT_EDGE_DEFAULTS"></a><span class="summary-name">DEFAULT_EDGE_DEFAULTS</span> = <code title="{'fontname': 'Helvetica', 'fontsize': 10}"><code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">fontname</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">Helvetica</code><code class="variable-quote">'</code><code class="variable-o [...]
+    </td>
+  </tr>
+</table>
+<!-- ==================== INSTANCE VARIABLES ==================== -->
+<a name="section-InstanceVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="title"></a><span class="summary-name">title</span><br />
+      The title of the graph.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="caption"></a><span class="summary-name">caption</span><br />
+      A caption for the graph.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><tt class="rst-docutils literal"><span class="pre">list</span></tt> of <a href="epydoc.docwriter.dotgraph.DotGraphNode-class.html" class="link">DotGraphNode</a></span>
+    </td><td class="summary">
+        <a name="nodes"></a><span class="summary-name">nodes</span><br />
+      A list of the nodes that are present in the graph.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><tt class="rst-docutils literal"><span class="pre">list</span></tt> of <a href="epydoc.docwriter.dotgraph.DotGraphEdge-class.html" class="link">DotGraphEdge</a></span>
+    </td><td class="summary">
+        <a name="edges"></a><span class="summary-name">edges</span><br />
+      A list of the edges that are present in the graph.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><tt class="rst-docutils literal"><span class="pre">str</span></tt></span>
+    </td><td class="summary">
+        <a name="body"></a><span class="summary-name">body</span><br />
+      A string that should be included as-is in the body of the
+graph.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="node_defaults"></a><span class="summary-name">node_defaults</span><br />
+      Default attribute values for nodes.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="edge_defaults"></a><span class="summary-name">edge_defaults</span><br />
+      Default attribute values for edges.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docwriter.dotgraph.DotGraph-class.html#uid" class="summary-name">uid</a><br />
+      A unique identifier for this graph.
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Method Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-MethodDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="to_html"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">to_html</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">image_file</span>,
+        <span class="sig-arg">image_url</span>,
+        <span class="sig-arg">center</span>=<span class="sig-default">True</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docwriter.dotgraph-pysrc.html#DotGraph.to_html">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_to_html-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_to_html-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_to_html" name="call_graph_for_to_html">
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraph-class.html#_run_dot" title="_run_dot()" alt="" coords="768,6,870,38" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraph-class.html#to_html" title="to_html()" alt="" coords="580,62,671,94" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#get_dot_version" title="get_dot_version()" alt="" coords="742,62,896,94" />
+<area shape="rect" href="epydoc.util-module.html#plaintext_to_html" title="util.plaintext_to_html()" alt="" coords="720,118,918,150" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#render_graph" title="html.HTMLWriter.render_graph()" alt="" coords="128,6,408,38" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#_to_html" title="markup.epytext.ParsedEpytextDocstring._to_html()" alt="" coords="64,62,472,94" />
+<area shape="rect" href="epydoc.markup.restructuredtext._EpydocHTMLTranslator-class.html#visit_dotgraph" title="markup.restructuredtext._EpydocHTMLTranslator.visit_dotgraph()" alt="" coords="6,118,531,150" />
+</map>
+  <img src="call_graph_for_to_html.gif" alt='' usemap="#call_graph_for_to_html" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  Return the HTML code that should be uesd to display this graph
+(including a client-side image map).
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>image_url</code></strong> - The URL of the image file for this graph;
+this should be generated separately with the <a href="epydoc.docwriter.dotgraph.DotGraph-class.html#write" class="link">write()</a> method.</li>
+    </ul></dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="write"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">write</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">filename</span>,
+        <span class="sig-arg">language</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string">gif</code><code class="variable-quote">'</code></span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docwriter.dotgraph-pysrc.html#DotGraph.write">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  Render the graph using the output format <code class="link">language</code>, and write
+the result to <code class="link">filename</code>.
+  <dl class="fields">
+    <dt>Returns:</dt>
+        <dd>True if rendering was successful.</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="render"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">render</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">language</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string">gif</code><code class="variable-quote">'</code></span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docwriter.dotgraph-pysrc.html#DotGraph.render">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  Use the <tt class="rst-rst-docutils literal rst-docutils literal"><span class="pre">dot</span></tt> command to render this graph, using the output
+format <code class="link">language</code>.  Return the result as a string, or <tt class="rst-docutils literal"><span class="pre">None</span></tt>
+if the rendering failed.
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== CLASS VARIABLE DETAILS ==================== -->
+<a name="section-ClassVariableDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Class Variable Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-ClassVariableDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="_uids"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">_uids</h3>
+  A set of all uids that that have been generated, used to ensure
+that each new graph has a unique uid.
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-group">set([</code><code class="variable-quote">'</code><code class="variable-string">call_graph_for___add__</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+     <code class="variable-quote">'</code><code class="variable-string">call_graph_for___cmp__</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+     <code class="variable-quote">'</code><code class="variable-string">call_graph_for___cmp___2</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+     <code class="variable-quote">'</code><code class="variable-string">call_graph_for___cmp___3</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+     <code class="variable-quote">'</code><code class="variable-string">call_graph_for___getitem__</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+     <code class="variable-quote">'</code><code class="variable-string">call_graph_for___getstate__</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+     <code class="variable-quote">'</code><code class="variable-string">call_graph_for___hash__</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+     <code class="variable-quote">'</code><code class="variable-string">call_graph_for___hash___2</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== INSTANCE VARIABLE DETAILS ==================== -->
+<a name="section-InstanceVariableDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Variable Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceVariableDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="uid"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">uid</h3>
+  A unique identifier for this graph.  This can be used as a
+filename when rendering the graph.  No two <a href="epydoc.docwriter.dotgraph.DotGraph-class.html" class="link">DotGraph</a>s will
+have the same uid.
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:07:41 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.docwriter.dotgraph.DotGraphEdge-class.html b/doc/api/epydoc.docwriter.dotgraph.DotGraphEdge-class.html
new file mode 100644
index 0000000..8c0ec9d
--- /dev/null
+++ b/doc/api/epydoc.docwriter.dotgraph.DotGraphEdge-class.html
@@ -0,0 +1,339 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.docwriter.dotgraph.DotGraphEdge</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.docwriter-module.html">Package docwriter</a> ::
+        <a href="epydoc.docwriter.dotgraph-module.html">Module dotgraph</a> ::
+        Class DotGraphEdge
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.docwriter.dotgraph.DotGraphEdge-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class DotGraphEdge</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.docwriter.dotgraph-pysrc.html#DotGraphEdge">source code</a></span></p>
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docwriter.dotgraph.DotGraphEdge-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">start</span>,
+        <span class="summary-sig-arg">end</span>,
+        <span class="summary-sig-arg">label</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">**attribs</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.dotgraph-pysrc.html#DotGraphEdge.__init__">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for___init___17-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for___init___17-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for___init___17" name="call_graph_for___init___17">
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphEdge-class.html#__init__" title="__init__()" alt="" coords="436,90,532,122" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_add_attribute_edge" title="DotGraphUmlClassNode._add_attribute_edge()" alt="" coords="7,6,386,38" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#class_tree_graph" title="class_tree_graph()" alt="" coords="116,62,276,94" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#import_graph" title="import_graph()" alt="" coords="128,118,264,150" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#uml_class_tree_graph" title="uml_class_tree_graph()" alt="" coords="98,174,295,206" />
+</map>
+  <img src="call_graph_for___init___17.gif" alt='' usemap="#call_graph_for___init___17" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__getitem__"></a><span class="summary-sig-name">__getitem__</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">attr</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.dotgraph-pysrc.html#DotGraphEdge.__getitem__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__setitem__"></a><span class="summary-sig-name">__setitem__</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">attr</span>,
+        <span class="summary-sig-arg">val</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.dotgraph-pysrc.html#DotGraphEdge.__setitem__">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for___setitem__-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for___setitem__-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for___setitem__" name="call_graph_for___setitem__">
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphEdge-class.html#__setitem__" title="__setitem__()" alt="" coords="255,6,380,38" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#uml_class_tree_graph" title="uml_class_tree_graph()" alt="" coords="7,6,204,38" />
+</map>
+  <img src="call_graph_for___setitem__.gif" alt='' usemap="#call_graph_for___setitem__" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="to_dotfile"></a><span class="summary-sig-name">to_dotfile</span>(<span class="summary-sig-arg">self</span>)</span><br />
+      Return the dot commands that should be used to render this edge.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.dotgraph-pysrc.html#DotGraphEdge.to_dotfile">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_to_dotfile_2-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_to_dotfile_2-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_to_dotfile_2" name="call_graph_for_to_dotfile_2">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__str__" title="apidoc.DottedName.__str__()" alt="" coords="511,34,753,66" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraph-class.html#to_dotfile" title="DotGraph.to_dotfile()" alt="" coords="63,6,249,38" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphEdge-class.html#to_dotfile" title="to_dotfile()" alt="" coords="355,34,461,66" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#to_dotfile" title="DotGraphUmlClassNode.to_dotfile()" alt="" coords="7,62,305,94" />
+</map>
+  <img src="call_graph_for_to_dotfile_2.gif" alt='' usemap="#call_graph_for_to_dotfile_2" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+</table>
+<!-- ==================== INSTANCE VARIABLES ==================== -->
+<a name="section-InstanceVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><a href="epydoc.docwriter.dotgraph.DotGraphNode-class.html" class="link">DotGraphNode</a></span>
+    </td><td class="summary">
+        <a name="start"></a><span class="summary-name">start</span>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><a href="epydoc.docwriter.dotgraph.DotGraphNode-class.html" class="link">DotGraphNode</a></span>
+    </td><td class="summary">
+        <a name="end"></a><span class="summary-name">end</span>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Method Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-MethodDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">start</span>,
+        <span class="sig-arg">end</span>,
+        <span class="sig-arg">label</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">**attribs</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docwriter.dotgraph-pysrc.html#DotGraphEdge.__init__">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for___init___17-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for___init___17-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for___init___17" name="call_graph_for___init___17">
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphEdge-class.html#__init__" title="__init__()" alt="" coords="436,90,532,122" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_add_attribute_edge" title="DotGraphUmlClassNode._add_attribute_edge()" alt="" coords="7,6,386,38" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#class_tree_graph" title="class_tree_graph()" alt="" coords="116,62,276,94" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#import_graph" title="import_graph()" alt="" coords="128,118,264,150" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#uml_class_tree_graph" title="uml_class_tree_graph()" alt="" coords="98,174,295,206" />
+</map>
+  <img src="call_graph_for___init___17.gif" alt='' usemap="#call_graph_for___init___17" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>start</code></strong> (<a href="epydoc.docwriter.dotgraph.DotGraphNode-class.html" class="link">DotGraphNode</a>)</li>
+        <li><strong class="pname"><code>end</code></strong> (<a href="epydoc.docwriter.dotgraph.DotGraphNode-class.html" class="link">DotGraphNode</a>)</li>
+    </ul></dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:07:42 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.docwriter.dotgraph.DotGraphNode-class.html b/doc/api/epydoc.docwriter.dotgraph.DotGraphNode-class.html
new file mode 100644
index 0000000..a023940
--- /dev/null
+++ b/doc/api/epydoc.docwriter.dotgraph.DotGraphNode-class.html
@@ -0,0 +1,292 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.docwriter.dotgraph.DotGraphNode</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.docwriter-module.html">Package docwriter</a> ::
+        <a href="epydoc.docwriter.dotgraph-module.html">Module dotgraph</a> ::
+        Class DotGraphNode
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.docwriter.dotgraph.DotGraphNode-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class DotGraphNode</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.docwriter.dotgraph-pysrc.html#DotGraphNode">source code</a></span></p>
+<center>
+<center>  <map id="uml_class_diagram_for_epydoc_d_2" name="uml_class_diagram_for_epydoc_d_2">
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html" title="A specialized dot graph node used to display ClassDocs using UML notation." alt="" coords="5,136,187,174" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphNode-class.html#__init__" title="epydoc.docwriter.dotgraph.DotGraphNode.__init__" alt="" coords="44,36,364,55" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphNode-class.html#__getitem__" title="epydoc.docwriter.dotgraph.DotGraphNode.__getitem__" alt="" coords="44,55,364,74" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphNode-class.html#__setitem__" title="epydoc.docwriter.dotgraph.DotGraphNode.__setitem__" alt="" coords="44,74,364,92" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphNode-class.html#to_dotfile" title="Return the dot commands that should be used to render this node." alt="" coords="44,92,364,111" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphNode-class.html" title="epydoc.docwriter.dotgraph.DotGraphNode" alt="" coords="32,6,376,118" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlModuleNode-class.html" title="A specialized dot grah node used to display ModuleDocs using UML notation." alt="" coords="216,136,408,174" />
+</map>
+  <img src="uml_class_diagram_for_epydoc_d_2.gif" alt='' usemap="#uml_class_diagram_for_epydoc_d_2" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__init__"></a><span class="summary-sig-name">__init__</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">label</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">html_label</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">**attribs</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.dotgraph-pysrc.html#DotGraphNode.__init__">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for___init___18-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for___init___18-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for___init___18" name="call_graph_for___init___18">
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphNode-class.html#__init__" title="__init__()" alt="" coords="364,62,460,94" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#__init__" title="DotGraphUmlClassNode.__init__()" alt="" coords="15,6,306,38" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlModuleNode-class.html#__init__" title="DotGraphUmlModuleNode.__init__()" alt="" coords="7,62,314,94" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#add_valdoc_nodes" title="add_valdoc_nodes()" alt="" coords="74,118,247,150" />
+</map>
+  <img src="call_graph_for___init___18.gif" alt='' usemap="#call_graph_for___init___18" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__getitem__"></a><span class="summary-sig-name">__getitem__</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">attr</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.dotgraph-pysrc.html#DotGraphNode.__getitem__">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for___getitem___3-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for___getitem___3-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for___getitem___3" name="call_graph_for___getitem___3">
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphNode-class.html#__getitem__" title="__getitem__()" alt="" coords="267,6,395,38" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#specialize_valdoc_node" title="specialize_valdoc_node()" alt="" coords="7,6,217,38" />
+</map>
+  <img src="call_graph_for___getitem___3.gif" alt='' usemap="#call_graph_for___getitem___3" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__setitem__"></a><span class="summary-sig-name">__setitem__</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">attr</span>,
+        <span class="summary-sig-arg">val</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.dotgraph-pysrc.html#DotGraphNode.__setitem__">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for___setitem___2-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for___setitem___2-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for___setitem___2" name="call_graph_for___setitem___2">
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphNode-class.html#__setitem__" title="__setitem__()" alt="" coords="268,6,393,38" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#specialize_valdoc_node" title="specialize_valdoc_node()" alt="" coords="7,6,217,38" />
+</map>
+  <img src="call_graph_for___setitem___2.gif" alt='' usemap="#call_graph_for___setitem___2" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="to_dotfile"></a><span class="summary-sig-name">to_dotfile</span>(<span class="summary-sig-arg">self</span>)</span><br />
+      Return the dot commands that should be used to render this node.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.dotgraph-pysrc.html#DotGraphNode.to_dotfile">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_to_dotfile_3-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_to_dotfile_3-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_to_dotfile_3" name="call_graph_for_to_dotfile_3">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__str__" title="apidoc.DottedName.__str__()" alt="" coords="396,6,639,38" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraph-class.html#to_dotfile" title="DotGraph.to_dotfile()" alt="" coords="5,6,192,38" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphNode-class.html#to_dotfile" title="to_dotfile()" alt="" coords="240,6,347,38" />
+</map>
+  <img src="call_graph_for_to_dotfile_3.gif" alt='' usemap="#call_graph_for_to_dotfile_3" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Class Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-ClassVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="_next_id"></a><span class="summary-name">_next_id</span> = <code title="0">0</code>
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:07:43 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html b/doc/api/epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html
new file mode 100644
index 0000000..89dde4d
--- /dev/null
+++ b/doc/api/epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html
@@ -0,0 +1,1526 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.docwriter.dotgraph.DotGraphUmlClassNode</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.docwriter-module.html">Package docwriter</a> ::
+        <a href="epydoc.docwriter.dotgraph-module.html">Module dotgraph</a> ::
+        Class DotGraphUmlClassNode
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class DotGraphUmlClassNode</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.docwriter.dotgraph-pysrc.html#DotGraphUmlClassNode">source code</a></span></p>
+<center>
+<center>  <map id="uml_class_diagram_for_epydoc_d_3" name="uml_class_diagram_for_epydoc_d_3">
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphNode-class.html#__getitem__" title="epydoc.docwriter.dotgraph.DotGraphNode.__getitem__" alt="" coords="193,36,356,55" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphNode-class.html#__setitem__" title="epydoc.docwriter.dotgraph.DotGraphNode.__setitem__" alt="" coords="193,55,356,73" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphNode-class.html" title="epydoc.docwriter.dotgraph.DotGraphNode" alt="" coords="181,5,368,80" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#class_doc" title="The class represented by this node." alt="" coords="17,121,532,140" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#linker" title="Used to look up URLs for classes." alt="" coords="17,140,532,159" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#context" title="The context in which the node will be drawn." alt="" coords="17,159,532,177" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#bgcolor" title="The background color of the node." alt="" coords="17,177,532,196" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#options" title="Options used to control how the node is displayed." alt="" coords="17,196,532,215" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#collapsed" title="If true, then draw this node as a simple box." alt="" coords="17,215,532,233" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#attributes" title="The list of VariableDocs for attributes" alt="" coords="17,233,532,252" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#operations" title="The list of VariableDocs for operations" alt="" coords="17,252,532,271" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#qualifiers" title="List of (key_label, port) tuples." alt="" coords="17,271,532,289" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#edges" title="List of edges used to represent this node's attributes." alt="" coords="17,289,532,308" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#SIMPLE_TYPE_RE" title="A regular expression that matches descriptions of simple types." alt="" coords="17,308,532,327" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#COLLECTION_TYPE_RE" title="A regular expression that matches descriptions of collection types." alt="" coords="17,327,532,345" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#MAPPING_TYPE_RE" title="A regular expression that matches descriptions of mapping types." alt="" coords="17,345,532,364" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#MAPPING_TO_COLLECTION_TYPE_RE" title="A regular expression that matches descriptions of mapping types whose value type is a collection." alt="" coords="17,364,532,383" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#OPTIONAL_TYPE_RE" title="A regular expression that matches descriptions of optional types." alt="" coords="17,383,532,401" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#__init__" title="Create a new DotGraphUmlClassNode based on the class class_doc." alt="" coords="17,404,532,423" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#link_attributes" title="Convert any attributes with type descriptions corresponding to documented classes to edges." alt="" coords="17,423,532,441" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#to_dotfile" title="Return the dot commands that should be used to render this node." alt="" coords="17,441,532,460" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html" title="A specialized dot graph node used to display ClassDocs using UML notation." alt="" coords="5,99,544,467" />
+</map>
+  <img src="uml_class_diagram_for_epydoc_d_3.gif" alt='' usemap="#uml_class_diagram_for_epydoc_d_3" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<p>A specialized dot graph node used to display <a href="epydoc.apidoc.ClassDoc-class.html" class="link">ClassDoc</a>s using
+UML notation.  The node is rendered as a table with three cells:
+the top cell contains the class name; the middle cell contains a
+list of attributes; and the bottom cell contains a list of
+operations:</p>
+<pre class="rst-literal-block">
++-------------+
+|  ClassName  |
++-------------+
+| x: int      |
+|     ...     |
++-------------+
+| f(self, x)  |
+|     ...     |
++-------------+
+</pre>
+<p><a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html" class="link">DotGraphUmlClassNode</a>s may be <em>collapsed</em>, in which case they are
+drawn as a simple box containing the class name:</p>
+<pre class="rst-literal-block">
++-------------+
+|  ClassName  |
++-------------+
+</pre>
+<p>Attributes with types corresponding to documented classes can
+optionally be converted into edges, using <a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#link_attributes" class="link">link_attributes()</a>.</p>
+
+<hr />
+<div class="fields">      <p><strong>To Do:</strong>
+        Add more options?
+- show/hide operation signature
+- show/hide operation signature types
+- show/hide operation signature return type
+- show/hide attribute types
+- use qualifiers
+      </p>
+</div><!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">class_doc</span>,
+        <span class="summary-sig-arg">linker</span>,
+        <span class="summary-sig-arg">context</span>,
+        <span class="summary-sig-arg">collapsed</span>=<span class="summary-sig-default">False</span>,
+        <span class="summary-sig-arg">bgcolor</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string">#d8ffe8</code><code class="variable-quote">'</code></span>,
+        <span class="summary-sig-arg">**options</span>)</span><br />
+      Create a new <a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html" class="link">DotGraphUmlClassNode</a> based on the class
+<a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#class_doc" class="link">class_doc</a>.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.dotgraph-pysrc.html#DotGraphUmlClassNode.__init__">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for___init___19-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for___init___19-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for___init___19" name="call_graph_for___init___19">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__cmp__" title="apidoc.APIDoc.__cmp__()" alt="" coords="447,6,671,38" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__getitem__" title="apidoc.DottedName.__getitem__()" alt="" coords="419,62,699,94" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphNode-class.html#__init__" title="DotGraphNode.__init__()" alt="" coords="451,118,667,150" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#__init__" title="__init__()" alt="" coords="255,118,351,150" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_summary" title="_summary()" alt="" coords="502,174,616,206" />
+<area shape="rect" href="epydoc.docwriter.html._HTMLDocstringLinker-class.html#url_for" title="html._HTMLDocstringLinker.url_for()" alt="" coords="402,230,716,262" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_add_attribute_edge" title="_add_attribute_edge()" alt="" coords="12,90,199,122" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#uml_class_tree_graph" title="uml_class_tree_graph()" alt="" coords="7,146,204,178" />
+</map>
+  <img src="call_graph_for___init___19.gif" alt='' usemap="#call_graph_for___init___19" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.docwriter.dotgraph.DotGraphNode-class.html">DotGraphNode</a></code></b>:
+      <code><a href="epydoc.docwriter.dotgraph.DotGraphNode-class.html#__getitem__">__getitem__</a></code>,
+      <code><a href="epydoc.docwriter.dotgraph.DotGraphNode-class.html#__setitem__">__setitem__</a></code>
+      </p>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Attribute Linking</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#link_attributes" class="summary-sig-name">link_attributes</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">nodes</span>)</span><br />
+      Convert any attributes with type descriptions corresponding to
+documented classes to edges.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.dotgraph-pysrc.html#DotGraphUmlClassNode.link_attributes">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_link_attributes-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_link_attributes-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_link_attributes" name="call_graph_for_link_attributes">
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_link_attribute" title="_link_attribute()" alt="" coords="444,6,588,38" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#link_attributes" title="link_attributes()" alt="" coords="254,6,395,38" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#uml_class_tree_graph" title="uml_class_tree_graph()" alt="" coords="7,6,204,38" />
+</map>
+  <img src="call_graph_for_link_attributes.gif" alt='' usemap="#call_graph_for_link_attributes" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_link_attribute" class="summary-sig-name" onclick="show_private();">_link_attribute</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">var</span>,
+        <span class="summary-sig-arg">nodes</span>)</span><br />
+      Helper for <a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#link_attributes" class="link">link_attributes()</a>: try to convert the attribute
+variable <code class="link">var</code> into an edge, and add that edge to
+<a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#edges" class="link">self.edges</a>.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.dotgraph-pysrc.html#DotGraphUmlClassNode._link_attribute">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__link_attribute-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__link_attribute-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__link_attribute" name="call_graph_for__link_attribute">
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_add_attribute_edge" title="_add_attribute_edge()" alt="" coords="391,6,577,38" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_link_attribute" title="_link_attribute()" alt="" coords="196,34,340,66" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_type_descr" title="_type_descr()" alt="" coords="421,62,547,94" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#link_attributes" title="link_attributes()" alt="" coords="5,34,147,66" />
+</map>
+  <img src="call_graph_for__link_attribute.gif" alt='' usemap="#call_graph_for__link_attribute" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_add_attribute_edge" class="summary-sig-name" onclick="show_private();">_add_attribute_edge</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">var</span>,
+        <span class="summary-sig-arg">nodes</span>,
+        <span class="summary-sig-arg">type_str</span>,
+        <span class="summary-sig-arg">**attribs</span>)</span><br />
+      Helper for <a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#link_attributes" class="link">link_attributes()</a>: try to add an edge for the
+given attribute variable <code class="link">var</code>.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.dotgraph-pysrc.html#DotGraphUmlClassNode._add_attribute_edge">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__add_attribute_-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__add_attribute_-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__add_attribute_" name="call_graph_for__add_attribute_">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__hash__" title="apidoc.APIDoc.__hash__()" alt="" coords="484,6,708,38" />
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#find" title="apidoc.DocIndex.find()" alt="" coords="499,62,693,94" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphEdge-class.html#__init__" title="DotGraphEdge.__init__()" alt="" coords="489,118,703,150" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#__init__" title="__init__()" alt="" coords="548,174,644,206" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_add_attribute_edge" title="_add_attribute_edge()" alt="" coords="201,118,388,150" />
+<area shape="rect" href="epydoc.docwriter.html._HTMLDocstringLinker-class.html#url_for" title="html._HTMLDocstringLinker.url_for()" alt="" coords="439,230,753,262" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_link_attribute" title="_link_attribute()" alt="" coords="7,118,151,150" />
+</map>
+  <img src="call_graph_for__add_attribute_.gif" alt='' usemap="#call_graph_for__add_attribute_" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8"  class="private">
+  <th colspan="2" class="group-header"
+    >    Helper Methods</th></tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_type_descr"></a><span class="summary-sig-name">_type_descr</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">api_doc</span>)</span><br />
+      Return a plaintext type description for <code class="link">api_doc</code></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.dotgraph-pysrc.html#DotGraphUmlClassNode._type_descr">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__type_descr-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__type_descr-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__type_descr" name="call_graph_for__type_descr">
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_attribute_cell" title="_attribute_cell()" alt="" coords="8,6,149,38" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_type_descr" title="_type_descr()" alt="" coords="200,34,325,66" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_link_attribute" title="_link_attribute()" alt="" coords="7,62,151,94" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#to_plaintext" title="markup.epytext.ParsedEpytextDocstring.to_plaintext()" alt="" coords="373,6,803,38" />
+<area shape="rect" href="epydoc.util-module.html#plaintext_to_html" title="util.plaintext_to_html()" alt="" coords="489,62,687,94" />
+</map>
+  <img src="call_graph_for__type_descr.gif" alt='' usemap="#call_graph_for__type_descr" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_tooltip"></a><span class="summary-sig-name">_tooltip</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">var_doc</span>)</span><br />
+      Return a tooltip for <code class="link">var_doc</code>.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.dotgraph-pysrc.html#DotGraphUmlClassNode._tooltip">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__tooltip-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__tooltip-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__tooltip" name="call_graph_for__tooltip">
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_attribute_cell" title="_attribute_cell()" alt="" coords="11,6,152,38" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_tooltip" title="_tooltip()" alt="" coords="206,34,299,66" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_operation_cell" title="_operation_cell()" alt="" coords="7,62,156,94" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_summary" title="_summary()" alt="" coords="347,34,462,66" />
+</map>
+  <img src="call_graph_for__tooltip.gif" alt='' usemap="#call_graph_for__tooltip" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Rendering</th></tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_attribute_cell"></a><span class="summary-sig-name">_attribute_cell</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">var_doc</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.dotgraph-pysrc.html#DotGraphUmlClassNode._attribute_cell">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__attribute_cell-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__attribute_cell-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__attribute_cell" name="call_graph_for__attribute_cell">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__str__" title="apidoc.DottedName.__str__()" alt="" coords="440,6,683,38" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_attribute_cell" title="_attribute_cell()" alt="" coords="212,90,353,122" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_tooltip" title="_tooltip()" alt="" coords="515,62,608,94" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_type_descr" title="_type_descr()" alt="" coords="499,118,624,150" />
+<area shape="rect" href="epydoc.docwriter.html._HTMLDocstringLinker-class.html#url_for" title="html._HTMLDocstringLinker.url_for()" alt="" coords="404,174,719,206" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_get_html_label" title="_get_html_label()" alt="" coords="7,90,161,122" />
+</map>
+  <img src="call_graph_for__attribute_cell.gif" alt='' usemap="#call_graph_for__attribute_cell" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_operation_cell" class="summary-sig-name" onclick="show_private();">_operation_cell</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">var_doc</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.dotgraph-pysrc.html#DotGraphUmlClassNode._operation_cell">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__operation_cell-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__operation_cell-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__operation_cell" name="call_graph_for__operation_cell">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__str__" title="apidoc.DottedName.__str__()" alt="" coords="448,6,691,38" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_get_html_label" title="_get_html_label()" alt="" coords="7,118,161,150" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_operation_cell" title="_operation_cell()" alt="" coords="212,118,361,150" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_operation_arg" title="_operation_arg()" alt="" coords="496,62,643,94" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_tooltip" title="_tooltip()" alt="" coords="523,118,616,150" />
+<area shape="rect" href="epydoc.docwriter.html._HTMLDocstringLinker-class.html#url_for" title="html._HTMLDocstringLinker.url_for()" alt="" coords="412,174,727,206" />
+<area shape="rect" href="epydoc.util-module.html#plaintext_to_html" title="util.plaintext_to_html()" alt="" coords="471,230,668,262" />
+</map>
+  <img src="call_graph_for__operation_cell.gif" alt='' usemap="#call_graph_for__operation_cell" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_operation_arg" class="summary-sig-name" onclick="show_private();">_operation_arg</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">name</span>,
+        <span class="summary-sig-arg">default</span>,
+        <span class="summary-sig-arg">func_doc</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.dotgraph-pysrc.html#DotGraphUmlClassNode._operation_arg">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__operation_arg-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__operation_arg-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__operation_arg" name="call_graph_for__operation_arg">
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#summary_pyval_repr" title="apidoc.ValueDoc.summary_pyval_repr()" alt="" coords="453,6,781,38" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_operation_arg" title="_operation_arg()" alt="" coords="207,34,353,66" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#to_plaintext" title="markup.epytext.ParsedEpytextDocstring.to_plaintext()" alt="" coords="403,62,832,94" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_operation_cell" title="_operation_cell()" alt="" coords="7,34,156,66" />
+</map>
+  <img src="call_graph_for__operation_arg.gif" alt='' usemap="#call_graph_for__operation_arg" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_qualifier_cell"></a><span class="summary-sig-name">_qualifier_cell</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">key_label</span>,
+        <span class="summary-sig-arg">port</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.dotgraph-pysrc.html#DotGraphUmlClassNode._qualifier_cell">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__qualifier_cell-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__qualifier_cell-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__qualifier_cell" name="call_graph_for__qualifier_cell">
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_get_html_label" title="_get_html_label()" alt="" coords="7,6,161,38" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_qualifier_cell" title="_qualifier_cell()" alt="" coords="211,6,355,38" />
+</map>
+  <img src="call_graph_for__qualifier_cell.gif" alt='' usemap="#call_graph_for__qualifier_cell" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_get_html_label"></a><span class="summary-sig-name">_get_html_label</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.dotgraph-pysrc.html#DotGraphUmlClassNode._get_html_label">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__get_html_label-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__get_html_label-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__get_html_label" name="call_graph_for__get_html_label">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__str__" title="apidoc.DottedName.__str__()" alt="" coords="388,6,631,38" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#contextualize" title="apidoc.DottedName.contextualize()" alt="" coords="366,62,654,94" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_attribute_cell" title="_attribute_cell()" alt="" coords="439,118,580,150" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_get_html_label" title="_get_html_label()" alt="" coords="162,118,316,150" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_operation_cell" title="_operation_cell()" alt="" coords="435,174,584,206" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_qualifier_cell" title="_qualifier_cell()" alt="" coords="438,230,582,262" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#to_dotfile" title="to_dotfile()" alt="" coords="6,118,112,150" />
+</map>
+  <img src="call_graph_for__get_html_label.gif" alt='' usemap="#call_graph_for__get_html_label" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#to_dotfile" class="summary-sig-name">to_dotfile</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Return the dot commands that should be used to render this node.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.dotgraph-pysrc.html#DotGraphUmlClassNode.to_dotfile">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_to_dotfile_4-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_to_dotfile_4-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_to_dotfile_4" name="call_graph_for_to_dotfile_4">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__str__" title="apidoc.DottedName.__str__()" alt="" coords="396,6,639,38" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraph-class.html#to_dotfile" title="DotGraph.to_dotfile()" alt="" coords="5,62,192,94" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#to_dotfile" title="to_dotfile()" alt="" coords="240,62,347,94" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphEdge-class.html#to_dotfile" title="DotGraphEdge.to_dotfile()" alt="" coords="405,62,629,94" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_get_html_label" title="_get_html_label()" alt="" coords="440,118,595,150" />
+</map>
+  <img src="call_graph_for_to_dotfile_4.gif" alt='' usemap="#call_graph_for_to_dotfile_4" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS METHODS ==================== -->
+<a name="section-ClassMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Class Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-ClassMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr bgcolor="#e8f0f8"  class="private">
+  <th colspan="2" class="group-header"
+    >    Helper Methods</th></tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_summary"></a><span class="summary-sig-name">_summary</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">api_doc</span>)</span><br />
+      Return a plaintext summary for <code class="link">api_doc</code></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.dotgraph-pysrc.html#DotGraphUmlClassNode._summary">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__summary-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__summary-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__summary" name="call_graph_for__summary">
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#__init__" title="__init__()" alt="" coords="7,90,103,122" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_summary" title="_summary()" alt="" coords="152,118,267,150" />
+<area shape="rect" href="epydoc.markup.ConcatenatedDocstring-class.html#to_plaintext" title="markup.ConcatenatedDocstring.to_plaintext()" alt="" coords="363,6,726,38" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#to_plaintext" title="markup.epytext.ParsedEpytextDocstring.to_plaintext()" alt="" coords="330,62,759,94" />
+<area shape="rect" href="epydoc.markup.plaintext.ParsedPlaintextDocstring-class.html#to_plaintext" title="markup.plaintext.ParsedPlaintextDocstring.to_plaintext()" alt="" coords="320,118,768,150" />
+<area shape="rect" href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html#to_plaintext" title="markup.restructuredtext.ParsedRstDocstring.to_plaintext()" alt="" coords="315,174,774,206" />
+<area shape="rect" href="epydoc.util-module.html#plaintext_to_html" title="util.plaintext_to_html()" alt="" coords="446,230,643,262" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_tooltip" title="_tooltip()" alt="" coords="8,146,102,178" />
+</map>
+  <img src="call_graph_for__summary.gif" alt='' usemap="#call_graph_for__summary" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Class Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-ClassVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <div class="private">    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.docwriter.dotgraph.DotGraphNode-class.html">DotGraphNode</a></code></b> (private):
+      <code><a href="epydoc.docwriter.dotgraph.DotGraphNode-class.html#_next_id" onclick="show_private();">_next_id</a></code>
+      </p></div>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Attribute Linking</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="SIMPLE_TYPE_RE"></a><span class="summary-name">SIMPLE_TYPE_RE</span> = <code title="re.compile(r'^([\w\.]+)$')">re.compile(r'^<code class="re-group">(</code><code class="re-group">[</code>\w\.<code class="re-group">]</code><code class="re-op">+</code><code class="re-group">)</code>$')</code><br />
+      A regular expression that matches descriptions of simple types.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#COLLECTION_TYPE_RE" class="summary-name">COLLECTION_TYPE_RE</a> = <code title="re.compile(r'^(list|set|sequence|tuple|collection) of ([\w\.]+)$')">re.compile(r'^<code class="re-group">(</code>list<code class="re-op">|</code>set<code class="re-op">|</code>sequence<code class="re-op">|</code>tuple<code class="re-op">|</code>co<code class="variable-ellipsis">...</code></code><br />
+      A regular expression that matches descriptions of collection types.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#MAPPING_TYPE_RE" class="summary-name">MAPPING_TYPE_RE</a> = <code title="re.compile(r'^(dict|dictionary|map|mapping) from ([\w\.]+) to ([\w\.]+\
+)$')">re.compile(r'^<code class="re-group">(</code>dict<code class="re-op">|</code>dictionary<code class="re-op">|</code>map<code class="re-op">|</code>mapping<code class="re-group">)</code> <code class="variable-ellipsis">...</code></code><br />
+      A regular expression that matches descriptions of mapping types.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#MAPPING_TO_COLLECTION_TYPE_RE" class="summary-name">MAPPING_TO_COLLECTION_TYPE_RE</a> = <code title="re.compile(r'^(dict|dictionary|map|mapping) from ([\w\.]+) to (list|se\
+t|sequence|tuple|collection) of ([\w\.]+)$')">re.compile(r'^<code class="re-group">(</code>dict<code class="re-op">|</code>dictionary<code class="variable-ellipsis">...</code></code><br />
+      A regular expression that matches descriptions of mapping types
+whose value type is a collection.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#OPTIONAL_TYPE_RE" class="summary-name">OPTIONAL_TYPE_RE</a> = <code title="re.compile(r'^(None or|optional) ([\w\.]+)$|([\w\.]+) or None$')">re.compile(r'^<code class="re-group">(</code>None or<code class="re-op">|</code>optional<code class="re-group">)</code> <code class="re-group">(</code><code class="re-group">[</code>\w\.<code class="re-group">]</code><code class="re-op">+</code><code class="re-group">)</code> [...]
+      A regular expression that matches descriptions of optional types.
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8"  class="private">
+  <th colspan="2" class="group-header"
+    >    Rendering</th></tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_ATTRIBUTE_CELL" class="summary-name" onclick="show_private();">_ATTRIBUTE_CELL</a> = <code title="'''
+    <TR><TD ALIGN="LEFT" HREF="%s" TOOLTIP="%s">%s</TD></TR>
+    '''"><code class="variable-quote">'</code><code class="variable-string">\n    <TR><TD ALIGN="LEFT" HREF="%s" TOOLTI</code><code class="variable-ellipsis">...</code></code><br />
+      args: (url, tooltip, label)
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_OPERATION_CELL" class="summary-name" onclick="show_private();">_OPERATION_CELL</a> = <code title="'''
+    <TR><TD ALIGN="LEFT" HREF="%s" TOOLTIP="%s">%s</TD></TR>
+    '''"><code class="variable-quote">'</code><code class="variable-string">\n    <TR><TD ALIGN="LEFT" HREF="%s" TOOLTI</code><code class="variable-ellipsis">...</code></code><br />
+      args: (url, tooltip, label)
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_QUALIFIER_CELL" class="summary-name" onclick="show_private();">_QUALIFIER_CELL</a> = <code title="'''
+    <TR><TD VALIGN="BOTTOM" PORT="%s" BGCOLOR="%s" BORDER="1">%s</TD><\
+/TR>
+    '''"><code class="variable-quote">'</code><code class="variable-string">\n    <TR><TD VALIGN="BOTTOM" PORT="%s" BGC</code><code class="variable-ellipsis">...</code></code><br />
+      args: (port, bgcolor, label)
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_QUALIFIER_DIV" class="summary-name" onclick="show_private();">_QUALIFIER_DIV</a> = <code title="'''
+    <TR><TD VALIGN="BOTTOM" HEIGHT="10" WIDTH="10" FIXEDSIZE="TRUE"></\
+TD></TR>
+    '''"><code class="variable-quote">'</code><code class="variable-string">\n    <TR><TD VALIGN="BOTTOM" HEIGHT="10" WI</code><code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_LABEL" class="summary-name" onclick="show_private();">_LABEL</a> = <code title="'''
+    <TABLE BORDER="0" CELLBORDER="0" CELLSPACING="0" CELLPADDING="0">
+      <TR><TD ROWSPAN="%s">
+        <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0"
+               CELLPADDING="0" PORT="body" BGCOLOR="%s">
+          <TR><TD>%s</TD></TR>
+          <TR><TD><TABLE BORDER="0" CELLBORDER="0" CELLSPACING="0">
+            %s</TABLE></TD></TR>
+..."><code class="variable-quote">'</code><code class="variable-string">\n    <TABLE BORDER="0" CELLBORDER="0" CELLSPACING="</code><code class="variable-ellipsis">...</code></code><br />
+      Args: (rowspan, bgcolor, classname, attributes, operations, qualifiers)
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_COLLAPSED_LABEL" class="summary-name" onclick="show_private();">_COLLAPSED_LABEL</a> = <code title="'''
+    <TABLE CELLBORDER="0" BGCOLOR="%s" PORT="body">
+      <TR><TD>%s</TD></TR>
+    </TABLE>'''"><code class="variable-quote">'</code><code class="variable-string">\n    <TABLE CELLBORDER="0" BGCOLOR="%s" P</code><code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+</table>
+<!-- ==================== INSTANCE VARIABLES ==================== -->
+<a name="section-InstanceVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="class_doc"></a><span class="summary-name">class_doc</span><br />
+      The class represented by this node.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="linker"></a><span class="summary-name">linker</span><br />
+      Used to look up URLs for classes.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="context"></a><span class="summary-name">context</span><br />
+      The context in which the node will be drawn.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="bgcolor"></a><span class="summary-name">bgcolor</span><br />
+      The background color of the node.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="options"></a><span class="summary-name">options</span><br />
+      Options used to control how the node is displayed.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="collapsed"></a><span class="summary-name">collapsed</span><br />
+      If true, then draw this node as a simple box.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="attributes"></a><span class="summary-name">attributes</span><br />
+      The list of VariableDocs for attributes
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="operations"></a><span class="summary-name">operations</span><br />
+      The list of VariableDocs for operations
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="qualifiers"></a><span class="summary-name">qualifiers</span><br />
+      List of (key_label, port) tuples.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#edges" class="summary-name">edges</a><br />
+      List of edges used to represent this node's attributes.
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Method Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-MethodDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">class_doc</span>,
+        <span class="sig-arg">linker</span>,
+        <span class="sig-arg">context</span>,
+        <span class="sig-arg">collapsed</span>=<span class="sig-default">False</span>,
+        <span class="sig-arg">bgcolor</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string">#d8ffe8</code><code class="variable-quote">'</code></span>,
+        <span class="sig-arg">**options</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docwriter.dotgraph-pysrc.html#DotGraphUmlClassNode.__init__">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for___init___19-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for___init___19-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for___init___19" name="call_graph_for___init___19">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__cmp__" title="apidoc.APIDoc.__cmp__()" alt="" coords="447,6,671,38" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__getitem__" title="apidoc.DottedName.__getitem__()" alt="" coords="419,62,699,94" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphNode-class.html#__init__" title="DotGraphNode.__init__()" alt="" coords="451,118,667,150" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#__init__" title="__init__()" alt="" coords="255,118,351,150" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_summary" title="_summary()" alt="" coords="502,174,616,206" />
+<area shape="rect" href="epydoc.docwriter.html._HTMLDocstringLinker-class.html#url_for" title="html._HTMLDocstringLinker.url_for()" alt="" coords="402,230,716,262" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_add_attribute_edge" title="_add_attribute_edge()" alt="" coords="12,90,199,122" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#uml_class_tree_graph" title="uml_class_tree_graph()" alt="" coords="7,146,204,178" />
+</map>
+  <img src="call_graph_for___init___19.gif" alt='' usemap="#call_graph_for___init___19" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  Create a new <a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html" class="link">DotGraphUmlClassNode</a> based on the class
+<a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#class_doc" class="link">class_doc</a>.
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>linker</code></strong> (<a href="epydoc.markup.DocstringLinker-class.html" class="link">markup.DocstringLinker</a>) - Used to look up URLs for classes.</li>
+        <li><strong class="pname"><code>context</code></strong> (<a href="epydoc.apidoc.APIDoc-class.html" class="link">APIDoc</a>) - The context in which this node will be drawn; dotted
+names will be contextualized to this context.</li>
+        <li><strong class="pname"><code>collapsed</code></strong> (<tt class="rst-docutils literal"><span class="pre">bool</span></tt>) - If true, then display this node as a simple box.</li>
+        <li><strong class="pname"><code>bgcolor</code></strong> (<tt class="rst-docutils literal"><span class="pre">`str`</span></tt>) - The background color for this node.</li>
+        <li><strong class="pname"><code>options</code></strong> (<tt class="rst-docutils literal"><span class="pre">dict</span></tt>) - A set of options used to control how the node should
+be displayed.</li>
+        <li><strong class="pname"><code>show_private_vars</code></strong> - If false, then private variables
+are filtered out of the attributes & operations lists.
+(Default: <em>False</em>)</li>
+        <li><strong class="pname"><code>show_magic_vars</code></strong> - If false, then magic variables
+(such as <tt class="rst-docutils literal"><span class="pre">__init__</span></tt> and <tt class="rst-docutils literal"><span class="pre">__add__</span></tt>) are filtered out of
+the attributes & operations lists. (Default: <em>True</em>)</li>
+        <li><strong class="pname"><code>show_inherited_vars</code></strong> - If false, then inherited variables
+are filtered out of the attributes & operations lists.
+(Default: <em>False</em>)</li>
+        <li><strong class="pname"><code>max_attributes</code></strong> - The maximum number of attributes that
+should be listed in the attribute box.  If the class has
+more than this number of attributes, some will be
+ellided.  Ellipsis is marked with <tt class="rst-docutils literal"><span class="pre">'...'</span></tt>.</li>
+        <li><strong class="pname"><code>max_operations</code></strong> - The maximum number of operations that
+should be listed in the operation box.</li>
+        <li><strong class="pname"><code>add_nodes_for_linked_attributes</code></strong> - If true, then
+<a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#link_attributes" class="link">link_attributes()</a> will create new a collapsed node for
+the types of a linked attributes if no node yet exists for
+that type.</li>
+    </ul></dd>
+    <dt>Overrides:
+        <a href="epydoc.docwriter.dotgraph.DotGraphNode-class.html#__init__">DotGraphNode.__init__</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="link_attributes"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">link_attributes</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">nodes</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docwriter.dotgraph-pysrc.html#DotGraphUmlClassNode.link_attributes">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_link_attributes-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_link_attributes-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_link_attributes" name="call_graph_for_link_attributes">
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_link_attribute" title="_link_attribute()" alt="" coords="444,6,588,38" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#link_attributes" title="link_attributes()" alt="" coords="254,6,395,38" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#uml_class_tree_graph" title="uml_class_tree_graph()" alt="" coords="7,6,204,38" />
+</map>
+  <img src="call_graph_for_link_attributes.gif" alt='' usemap="#call_graph_for_link_attributes" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Convert any attributes with type descriptions corresponding to
+documented classes to edges.  The following type descriptions
+are currently handled:</p>
+<blockquote>
+<ul class="rst-simple">
+<li>Dotted names: Create an attribute edge to the named type,
+labelled with the variable name.</li>
+<li>Collections: Create an attribute edge to the named type,
+labelled with the variable name, and marked with '*' at the
+type end of the edge.</li>
+<li>Mappings: Create an attribute edge to the named type,
+labelled with the variable name, connected to the class by
+a qualifier box that contains the key type description.</li>
+<li>Optional: Create an attribute edge to the named type,
+labelled with the variable name, and marked with '0..1' at
+the type end of the edge.</li>
+</ul>
+</blockquote>
+<p>The edges created by <a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#link_attributes" class="link">link_attributes()</a> are handled internally
+by <a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html" class="link">DotGraphUmlClassNode</a>; they should <em>not</em> be added directly
+to the <a href="epydoc.docwriter.dotgraph.DotGraph-class.html" class="link">DotGraph</a>.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>nodes</code></strong> - A dictionary mapping from <a href="epydoc.apidoc.ClassDoc-class.html" class="link">ClassDoc</a>s to
+<a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html" class="link">DotGraphUmlClassNode</a>s, used to look up the nodes for
+attribute types.  If the <tt class="rst-docutils literal"><span class="pre">add_nodes_for_linked_attributes</span></tt>
+option is used, then new nodes will be added to this
+dictionary for any types that are not already listed.
+These added nodes must be added to the <a href="epydoc.docwriter.dotgraph.DotGraph-class.html" class="link">DotGraph</a>.</li>
+    </ul></dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="_link_attribute"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">_link_attribute</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">var</span>,
+        <span class="sig-arg">nodes</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docwriter.dotgraph-pysrc.html#DotGraphUmlClassNode._link_attribute">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__link_attribute-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for__link_attribute-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__link_attribute" name="call_graph_for__link_attribute">
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_add_attribute_edge" title="_add_attribute_edge()" alt="" coords="391,6,577,38" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_link_attribute" title="_link_attribute()" alt="" coords="196,34,340,66" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_type_descr" title="_type_descr()" alt="" coords="421,62,547,94" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#link_attributes" title="link_attributes()" alt="" coords="5,34,147,66" />
+</map>
+  <img src="call_graph_for__link_attribute.gif" alt='' usemap="#call_graph_for__link_attribute" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  Helper for <a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#link_attributes" class="link">link_attributes()</a>: try to convert the attribute
+variable <code class="link">var</code> into an edge, and add that edge to
+<a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#edges" class="link">self.edges</a>.  Return <tt class="rst-docutils literal"><span class="pre">True</span></tt> iff the variable was
+successfully converted to an edge (in which case, it should be
+removed from the attributes list).
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="_add_attribute_edge"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">_add_attribute_edge</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">var</span>,
+        <span class="sig-arg">nodes</span>,
+        <span class="sig-arg">type_str</span>,
+        <span class="sig-arg">**attribs</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docwriter.dotgraph-pysrc.html#DotGraphUmlClassNode._add_attribute_edge">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__add_attribute_-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for__add_attribute_-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__add_attribute_" name="call_graph_for__add_attribute_">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__hash__" title="apidoc.APIDoc.__hash__()" alt="" coords="484,6,708,38" />
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#find" title="apidoc.DocIndex.find()" alt="" coords="499,62,693,94" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphEdge-class.html#__init__" title="DotGraphEdge.__init__()" alt="" coords="489,118,703,150" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#__init__" title="__init__()" alt="" coords="548,174,644,206" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_add_attribute_edge" title="_add_attribute_edge()" alt="" coords="201,118,388,150" />
+<area shape="rect" href="epydoc.docwriter.html._HTMLDocstringLinker-class.html#url_for" title="html._HTMLDocstringLinker.url_for()" alt="" coords="439,230,753,262" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_link_attribute" title="_link_attribute()" alt="" coords="7,118,151,150" />
+</map>
+  <img src="call_graph_for__add_attribute_.gif" alt='' usemap="#call_graph_for__add_attribute_" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  Helper for <a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#link_attributes" class="link">link_attributes()</a>: try to add an edge for the
+given attribute variable <code class="link">var</code>.  Return <tt class="rst-docutils literal"><span class="pre">True</span></tt> if
+successful.
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="_operation_cell"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">_operation_cell</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">var_doc</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docwriter.dotgraph-pysrc.html#DotGraphUmlClassNode._operation_cell">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__operation_cell-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for__operation_cell-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__operation_cell" name="call_graph_for__operation_cell">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__str__" title="apidoc.DottedName.__str__()" alt="" coords="448,6,691,38" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_get_html_label" title="_get_html_label()" alt="" coords="7,118,161,150" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_operation_cell" title="_operation_cell()" alt="" coords="212,118,361,150" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_operation_arg" title="_operation_arg()" alt="" coords="496,62,643,94" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_tooltip" title="_tooltip()" alt="" coords="523,118,616,150" />
+<area shape="rect" href="epydoc.docwriter.html._HTMLDocstringLinker-class.html#url_for" title="html._HTMLDocstringLinker.url_for()" alt="" coords="412,174,727,206" />
+<area shape="rect" href="epydoc.util-module.html#plaintext_to_html" title="util.plaintext_to_html()" alt="" coords="471,230,668,262" />
+</map>
+  <img src="call_graph_for__operation_cell.gif" alt='' usemap="#call_graph_for__operation_cell" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  
+  <dl class="fields">
+  </dl>
+<div class="fields">      <strong>To Do:</strong>
+      <ul class="nomargin-top">
+        <li>
+        do 'word wrapping' on the signature, by starting a new
+row in the table, if necessary.  How to indent the new
+line?  Maybe use align=right?  I don't think dot has a
+&nbsp;.
+        </li>
+        <li>
+        Optionally add return type info?
+        </li>
+      </ul>
+</div></td></tr></table>
+</div>
+<a name="_operation_arg"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">_operation_arg</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">name</span>,
+        <span class="sig-arg">default</span>,
+        <span class="sig-arg">func_doc</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docwriter.dotgraph-pysrc.html#DotGraphUmlClassNode._operation_arg">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__operation_arg-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for__operation_arg-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__operation_arg" name="call_graph_for__operation_arg">
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#summary_pyval_repr" title="apidoc.ValueDoc.summary_pyval_repr()" alt="" coords="453,6,781,38" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_operation_arg" title="_operation_arg()" alt="" coords="207,34,353,66" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#to_plaintext" title="markup.epytext.ParsedEpytextDocstring.to_plaintext()" alt="" coords="403,62,832,94" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_operation_cell" title="_operation_cell()" alt="" coords="7,34,156,66" />
+</map>
+  <img src="call_graph_for__operation_arg.gif" alt='' usemap="#call_graph_for__operation_arg" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  
+  <dl class="fields">
+  </dl>
+<div class="fields">      <strong>To Do:</strong>
+      <ul class="nomargin-top">
+        <li>
+        Handle tuple args better
+        </li>
+        <li>
+        Optionally add type info?
+        </li>
+      </ul>
+</div></td></tr></table>
+</div>
+<a name="to_dotfile"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">to_dotfile</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docwriter.dotgraph-pysrc.html#DotGraphUmlClassNode.to_dotfile">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_to_dotfile_4-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_to_dotfile_4-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_to_dotfile_4" name="call_graph_for_to_dotfile_4">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__str__" title="apidoc.DottedName.__str__()" alt="" coords="396,6,639,38" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraph-class.html#to_dotfile" title="DotGraph.to_dotfile()" alt="" coords="5,62,192,94" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#to_dotfile" title="to_dotfile()" alt="" coords="240,62,347,94" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphEdge-class.html#to_dotfile" title="DotGraphEdge.to_dotfile()" alt="" coords="405,62,629,94" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_get_html_label" title="_get_html_label()" alt="" coords="440,118,595,150" />
+</map>
+  <img src="call_graph_for_to_dotfile_4.gif" alt='' usemap="#call_graph_for_to_dotfile_4" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  Return the dot commands that should be used to render this node.
+  <dl class="fields">
+    <dt>Overrides:
+        <a href="epydoc.docwriter.dotgraph.DotGraphNode-class.html#to_dotfile">DotGraphNode.to_dotfile</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== CLASS VARIABLE DETAILS ==================== -->
+<a name="section-ClassVariableDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Class Variable Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-ClassVariableDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="COLLECTION_TYPE_RE"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">COLLECTION_TYPE_RE</h3>
+  A regular expression that matches descriptions of collection types.
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+re.compile(r'^<code class="re-group">(</code>list<code class="re-op">|</code>set<code class="re-op">|</code>sequence<code class="re-op">|</code>tuple<code class="re-op">|</code>collection<code class="re-group">)</code> of <code class="re-group">(</code><code class="re-group">[</code>\w\.<code class="re-group">]</code><code class="re-op">+</code><code class="re-group">)</code>$')
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="MAPPING_TYPE_RE"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">MAPPING_TYPE_RE</h3>
+  A regular expression that matches descriptions of mapping types.
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+re.compile(r'^<code class="re-group">(</code>dict<code class="re-op">|</code>dictionary<code class="re-op">|</code>map<code class="re-op">|</code>mapping<code class="re-group">)</code> from <code class="re-group">(</code><code class="re-group">[</code>\w\.<code class="re-group">]</code><code class="re-op">+</code><code class="re-group">)</code> to <code class="re-group">(</code><code class="re-group">[</code>\w\.<code class="re-group">]</code><code class="re-op">+</code><code class="re-g [...]
+<code class="re-group">)</code>$')
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="MAPPING_TO_COLLECTION_TYPE_RE"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">MAPPING_TO_COLLECTION_TYPE_RE</h3>
+  A regular expression that matches descriptions of mapping types
+whose value type is a collection.
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+re.compile(r'^<code class="re-group">(</code>dict<code class="re-op">|</code>dictionary<code class="re-op">|</code>map<code class="re-op">|</code>mapping<code class="re-group">)</code> from <code class="re-group">(</code><code class="re-group">[</code>\w\.<code class="re-group">]</code><code class="re-op">+</code><code class="re-group">)</code> to <code class="re-group">(</code>list<code class="re-op">|</code>se<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+t<code class="re-op">|</code>sequence<code class="re-op">|</code>tuple<code class="re-op">|</code>collection<code class="re-group">)</code> of <code class="re-group">(</code><code class="re-group">[</code>\w\.<code class="re-group">]</code><code class="re-op">+</code><code class="re-group">)</code>$')
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="OPTIONAL_TYPE_RE"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">OPTIONAL_TYPE_RE</h3>
+  A regular expression that matches descriptions of optional types.
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+re.compile(r'^<code class="re-group">(</code>None or<code class="re-op">|</code>optional<code class="re-group">)</code> <code class="re-group">(</code><code class="re-group">[</code>\w\.<code class="re-group">]</code><code class="re-op">+</code><code class="re-group">)</code>$<code class="re-op">|</code><code class="re-group">(</code><code class="re-group">[</code>\w\.<code class="re-group">]</code><code class="re-op">+</code><code class="re-group">)</code> or None$')
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="_ATTRIBUTE_CELL"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">_ATTRIBUTE_CELL</h3>
+  args: (url, tooltip, label)
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'''</code><code class="variable-string"></code>
+<code class="variable-string">    <TR><TD ALIGN="LEFT" HREF="%s" TOOLTIP="%s">%s</TD></TR></code>
+<code class="variable-string">    </code><code class="variable-quote">'''</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="_OPERATION_CELL"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">_OPERATION_CELL</h3>
+  args: (url, tooltip, label)
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'''</code><code class="variable-string"></code>
+<code class="variable-string">    <TR><TD ALIGN="LEFT" HREF="%s" TOOLTIP="%s">%s</TD></TR></code>
+<code class="variable-string">    </code><code class="variable-quote">'''</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="_QUALIFIER_CELL"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">_QUALIFIER_CELL</h3>
+  args: (port, bgcolor, label)
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'''</code><code class="variable-string"></code>
+<code class="variable-string">    <TR><TD VALIGN="BOTTOM" PORT="%s" BGCOLOR="%s" BORDER="1">%s</TD><</code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-string">/TR></code>
+<code class="variable-string">    </code><code class="variable-quote">'''</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="_QUALIFIER_DIV"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">_QUALIFIER_DIV</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'''</code><code class="variable-string"></code>
+<code class="variable-string">    <TR><TD VALIGN="BOTTOM" HEIGHT="10" WIDTH="10" FIXEDSIZE="TRUE"></</code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-string">TD></TR></code>
+<code class="variable-string">    </code><code class="variable-quote">'''</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="_LABEL"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">_LABEL</h3>
+  Args: (rowspan, bgcolor, classname, attributes, operations, qualifiers)
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'''</code><code class="variable-string"></code>
+<code class="variable-string">    <TABLE BORDER="0" CELLBORDER="0" CELLSPACING="0" CELLPADDING="0"></code>
+<code class="variable-string">      <TR><TD ROWSPAN="%s"></code>
+<code class="variable-string">        <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0"</code>
+<code class="variable-string">               CELLPADDING="0" PORT="body" BGCOLOR="%s"></code>
+<code class="variable-string">          <TR><TD>%s</TD></TR></code>
+<code class="variable-string">          <TR><TD><TABLE BORDER="0" CELLBORDER="0" CELLSPACING="0"></code>
+<code class="variable-string">            %s</TABLE></TD></TR></code>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="_COLLAPSED_LABEL"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">_COLLAPSED_LABEL</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'''</code><code class="variable-string"></code>
+<code class="variable-string">    <TABLE CELLBORDER="0" BGCOLOR="%s" PORT="body"></code>
+<code class="variable-string">      <TR><TD>%s</TD></TR></code>
+<code class="variable-string">    </TABLE></code><code class="variable-quote">'''</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== INSTANCE VARIABLE DETAILS ==================== -->
+<a name="section-InstanceVariableDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Variable Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceVariableDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="edges"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">edges</h3>
+  List of edges used to represent this node's attributes.
+These should not be added to the <a href="epydoc.docwriter.dotgraph.DotGraph-class.html" class="link">DotGraph</a>; this node will
+generate their dotfile code directly.
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:07:48 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.docwriter.dotgraph.DotGraphUmlModuleNode-class.html b/doc/api/epydoc.docwriter.dotgraph.DotGraphUmlModuleNode-class.html
new file mode 100644
index 0000000..8f1db3c
--- /dev/null
+++ b/doc/api/epydoc.docwriter.dotgraph.DotGraphUmlModuleNode-class.html
@@ -0,0 +1,607 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.docwriter.dotgraph.DotGraphUmlModuleNode</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.docwriter-module.html">Package docwriter</a> ::
+        <a href="epydoc.docwriter.dotgraph-module.html">Module dotgraph</a> ::
+        Class DotGraphUmlModuleNode
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.docwriter.dotgraph.DotGraphUmlModuleNode-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class DotGraphUmlModuleNode</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.docwriter.dotgraph-pysrc.html#DotGraphUmlModuleNode">source code</a></span></p>
+<center>
+<center>  <map id="uml_class_diagram_for_epydoc_d_4" name="uml_class_diagram_for_epydoc_d_4">
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphNode-class.html#__getitem__" title="epydoc.docwriter.dotgraph.DotGraphNode.__getitem__" alt="" coords="224,36,387,55" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphNode-class.html#__setitem__" title="epydoc.docwriter.dotgraph.DotGraphNode.__setitem__" alt="" coords="224,55,387,74" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphNode-class.html" title="epydoc.docwriter.dotgraph.DotGraphNode" alt="" coords="212,6,399,80" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlModuleNode-class.html#__init__" title="epydoc.docwriter.dotgraph.DotGraphUmlModuleNode.__init__" alt="" coords="18,130,594,148" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlModuleNode-class.html#to_dotfile" title="Return the dot commands that should be used to render this node." alt="" coords="18,148,594,167" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlModuleNode-class.html" title="A specialized dot grah node used to display ModuleDocs using UML notation." alt="" coords="6,99,606,174" />
+</map>
+  <img src="uml_class_diagram_for_epydoc_d_4.gif" alt='' usemap="#uml_class_diagram_for_epydoc_d_4" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<p>A specialized dot grah node used to display <a href="epydoc.apidoc.ModuleDoc-class.html" class="link">ModuleDoc</a>s using
+UML notation.  Simple module nodes look like:</p>
+<pre class="rst-literal-block">
+.----.
++------------+
+| modulename |
++------------+
+</pre>
+<p>Packages nodes are drawn with their modules & subpackages nested
+inside:</p>
+<pre class="rst-literal-block">
+.----.
++----------------------------------------+
+| packagename                            |
+|                                        |
+|  .----.       .----.       .----.      |
+|  +---------+  +---------+  +---------+ |
+|  | module1 |  | module2 |  | module3 | |
+|  +---------+  +---------+  +---------+ |
+|                                        |
++----------------------------------------+
+</pre>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docwriter.dotgraph.DotGraphUmlModuleNode-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">module_doc</span>,
+        <span class="summary-sig-arg">linker</span>,
+        <span class="summary-sig-arg">context</span>,
+        <span class="summary-sig-arg">collapsed</span>=<span class="summary-sig-default">False</span>,
+        <span class="summary-sig-arg">excluded_submodules</span>=<span class="summary-sig-default"><code class="variable-group">(</code><code class="variable-group">)</code></span>,
+        <span class="summary-sig-arg">**options</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.dotgraph-pysrc.html#DotGraphUmlModuleNode.__init__">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for___init___20-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for___init___20-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for___init___20" name="call_graph_for___init___20">
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphNode-class.html#__init__" title="DotGraphNode.__init__()" alt="" coords="475,6,691,38" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlModuleNode-class.html#__init__" title="__init__()" alt="" coords="279,34,375,66" />
+<area shape="rect" href="epydoc.docwriter.html._HTMLDocstringLinker-class.html#url_for" title="html._HTMLDocstringLinker.url_for()" alt="" coords="426,62,740,94" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#uml_package_tree_graph" title="uml_package_tree_graph()" alt="" coords="6,34,230,66" />
+</map>
+  <img src="call_graph_for___init___20.gif" alt='' usemap="#call_graph_for___init___20" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docwriter.dotgraph.DotGraphUmlModuleNode-class.html#_get_html_label" class="summary-sig-name" onclick="show_private();">_get_html_label</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">package</span>)</span><br />
+      Returns:
+(label, depth, width) where:</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.dotgraph-pysrc.html#DotGraphUmlModuleNode._get_html_label">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__get_html_label_2-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__get_html_label_2-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__get_html_label_2" name="call_graph_for__get_html_label_2">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__getitem__" title="apidoc.DottedName.__getitem__()" alt="" coords="384,6,664,38" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__str__" title="apidoc.DottedName.__str__()" alt="" coords="403,62,645,94" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlModuleNode-class.html#_color" title="_color()" alt="" coords="483,118,565,150" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlModuleNode-class.html#_get_html_label" title="_get_html_label()" alt="" coords="161,90,316,122" />
+<area shape="rect" href="epydoc.docwriter.html._HTMLDocstringLinker-class.html#url_for" title="html._HTMLDocstringLinker.url_for()" alt="" coords="367,174,681,206" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlModuleNode-class.html#to_dotfile" title="to_dotfile()" alt="" coords="5,90,112,122" />
+</map>
+  <img src="call_graph_for__get_html_label_2.gif" alt='' usemap="#call_graph_for__get_html_label_2" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_color"></a><span class="summary-sig-name">_color</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">package</span>,
+        <span class="summary-sig-arg">depth</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.dotgraph-pysrc.html#DotGraphUmlModuleNode._color">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__color-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__color-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__color" name="call_graph_for__color">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__cmp__" title="apidoc.APIDoc.__cmp__()" alt="" coords="342,6,566,38" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlModuleNode-class.html#_color" title="_color()" alt="" coords="211,6,294,38" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlModuleNode-class.html#_get_html_label" title="_get_html_label()" alt="" coords="7,6,162,38" />
+</map>
+  <img src="call_graph_for__color.gif" alt='' usemap="#call_graph_for__color" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docwriter.dotgraph.DotGraphUmlModuleNode-class.html#to_dotfile" class="summary-sig-name">to_dotfile</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Return the dot commands that should be used to render this node.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.dotgraph-pysrc.html#DotGraphUmlModuleNode.to_dotfile">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_to_dotfile_5-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_to_dotfile_5-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_to_dotfile_5" name="call_graph_for_to_dotfile_5">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__str__" title="apidoc.DottedName.__str__()" alt="" coords="396,6,639,38" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraph-class.html#to_dotfile" title="DotGraph.to_dotfile()" alt="" coords="5,34,192,66" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlModuleNode-class.html#to_dotfile" title="to_dotfile()" alt="" coords="240,34,347,66" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlModuleNode-class.html#_get_html_label" title="_get_html_label()" alt="" coords="440,62,595,94" />
+</map>
+  <img src="call_graph_for_to_dotfile_5.gif" alt='' usemap="#call_graph_for_to_dotfile_5" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.docwriter.dotgraph.DotGraphNode-class.html">DotGraphNode</a></code></b>:
+      <code><a href="epydoc.docwriter.dotgraph.DotGraphNode-class.html#__getitem__">__getitem__</a></code>,
+      <code><a href="epydoc.docwriter.dotgraph.DotGraphNode-class.html#__setitem__">__setitem__</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Class Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-ClassVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docwriter.dotgraph.DotGraphUmlModuleNode-class.html#_MODULE_LABEL" class="summary-name" onclick="show_private();">_MODULE_LABEL</a> = <code title="''' 
+    <TABLE BORDER="0" CELLBORDER="0" CELLSPACING="0" ALIGN="LEFT">
+    <TR><TD ALIGN="LEFT" VALIGN="BOTTOM" HEIGHT="8" WIDTH="16"
+            FIXEDSIZE="true" BGCOLOR="%s" BORDER="1" PORT="tab"></TD><\
+/TR>
+    <TR><TD ALIGN="LEFT" VALIGN="TOP" BGCOLOR="%s" BORDER="1" WIDTH="2\
+0"
+            PORT="body" HREF="%s" TOOLTIP="%s">%s</TD></TR>
+..."><code class="variable-quote">'</code><code class="variable-string"> \n    <TABLE BORDER="0" CELLBORDER="0" CELLS</code><code class="variable-ellipsis">...</code></code><br />
+      Expects: (color, color, url, tooltip, body)
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docwriter.dotgraph.DotGraphUmlModuleNode-class.html#_NESTED_BODY" class="summary-name" onclick="show_private();">_NESTED_BODY</a> = <code title="'''
+    <TABLE BORDER="0" CELLBORDER="0" CELLPADDING="0" CELLSPACING="0">
+    <TR><TD ALIGN="LEFT">%s</TD></TR>
+    %s
+    </TABLE>'''"><code class="variable-quote">'</code><code class="variable-string">\n    <TABLE BORDER="0" CELLBORDER="0" CELLPAD</code><code class="variable-ellipsis">...</code></code><br />
+      Expects: (name, body_rows)
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docwriter.dotgraph.DotGraphUmlModuleNode-class.html#_NESTED_BODY_ROW" class="summary-name" onclick="show_private();">_NESTED_BODY_ROW</a> = <code title="'''
+    <TR><TD>
+      <TABLE BORDER="0" CELLBORDER="0"><TR>%s</TR></TABLE>
+    </TD></TR>'''"><code class="variable-quote">'</code><code class="variable-string">\n    <TR><TD>\n      <TABLE BORDER="0" CE</code><code class="variable-ellipsis">...</code></code><br />
+      Expects: (cells,)
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="_COLOR_DIFF"></a><span class="summary-name">_COLOR_DIFF</span> = <code title="24">24</code>
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <div class="private">    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.docwriter.dotgraph.DotGraphNode-class.html">DotGraphNode</a></code></b> (private):
+      <code><a href="epydoc.docwriter.dotgraph.DotGraphNode-class.html#_next_id" onclick="show_private();">_next_id</a></code>
+      </p></div>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Method Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-MethodDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">module_doc</span>,
+        <span class="sig-arg">linker</span>,
+        <span class="sig-arg">context</span>,
+        <span class="sig-arg">collapsed</span>=<span class="sig-default">False</span>,
+        <span class="sig-arg">excluded_submodules</span>=<span class="sig-default"><code class="variable-group">(</code><code class="variable-group">)</code></span>,
+        <span class="sig-arg">**options</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docwriter.dotgraph-pysrc.html#DotGraphUmlModuleNode.__init__">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for___init___20-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for___init___20-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for___init___20" name="call_graph_for___init___20">
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphNode-class.html#__init__" title="DotGraphNode.__init__()" alt="" coords="475,6,691,38" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlModuleNode-class.html#__init__" title="__init__()" alt="" coords="279,34,375,66" />
+<area shape="rect" href="epydoc.docwriter.html._HTMLDocstringLinker-class.html#url_for" title="html._HTMLDocstringLinker.url_for()" alt="" coords="426,62,740,94" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#uml_package_tree_graph" title="uml_package_tree_graph()" alt="" coords="6,34,230,66" />
+</map>
+  <img src="call_graph_for___init___20.gif" alt='' usemap="#call_graph_for___init___20" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  
+  <dl class="fields">
+    <dt>Overrides:
+        <a href="epydoc.docwriter.dotgraph.DotGraphNode-class.html#__init__">DotGraphNode.__init__</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="_get_html_label"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">_get_html_label</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">package</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docwriter.dotgraph-pysrc.html#DotGraphUmlModuleNode._get_html_label">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__get_html_label_2-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for__get_html_label_2-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__get_html_label_2" name="call_graph_for__get_html_label_2">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__getitem__" title="apidoc.DottedName.__getitem__()" alt="" coords="384,6,664,38" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__str__" title="apidoc.DottedName.__str__()" alt="" coords="403,62,645,94" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlModuleNode-class.html#_color" title="_color()" alt="" coords="483,118,565,150" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlModuleNode-class.html#_get_html_label" title="_get_html_label()" alt="" coords="161,90,316,122" />
+<area shape="rect" href="epydoc.docwriter.html._HTMLDocstringLinker-class.html#url_for" title="html._HTMLDocstringLinker.url_for()" alt="" coords="367,174,681,206" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlModuleNode-class.html#to_dotfile" title="to_dotfile()" alt="" coords="5,90,112,122" />
+</map>
+  <img src="call_graph_for__get_html_label_2.gif" alt='' usemap="#call_graph_for__get_html_label_2" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  
+  <dl class="fields">
+    <dt>Returns:</dt>
+        <dd><p>(label, depth, width) where:</p>
+<ul class="rst-simple">
+<li><tt class="rst-docutils literal"><span class="pre">label</span></tt> is the HTML label</li>
+<li><tt class="rst-docutils literal"><span class="pre">depth</span></tt> is the depth of the package tree (for coloring)</li>
+<li><tt class="rst-docutils literal"><span class="pre">width</span></tt> is the max width of the HTML label, roughly in
+units of characters.</li>
+</ul></dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="to_dotfile"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">to_dotfile</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docwriter.dotgraph-pysrc.html#DotGraphUmlModuleNode.to_dotfile">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_to_dotfile_5-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_to_dotfile_5-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_to_dotfile_5" name="call_graph_for_to_dotfile_5">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__str__" title="apidoc.DottedName.__str__()" alt="" coords="396,6,639,38" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraph-class.html#to_dotfile" title="DotGraph.to_dotfile()" alt="" coords="5,34,192,66" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlModuleNode-class.html#to_dotfile" title="to_dotfile()" alt="" coords="240,34,347,66" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlModuleNode-class.html#_get_html_label" title="_get_html_label()" alt="" coords="440,62,595,94" />
+</map>
+  <img src="call_graph_for_to_dotfile_5.gif" alt='' usemap="#call_graph_for_to_dotfile_5" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  Return the dot commands that should be used to render this node.
+  <dl class="fields">
+    <dt>Overrides:
+        <a href="epydoc.docwriter.dotgraph.DotGraphNode-class.html#to_dotfile">DotGraphNode.to_dotfile</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== CLASS VARIABLE DETAILS ==================== -->
+<a name="section-ClassVariableDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Class Variable Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-ClassVariableDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="_MODULE_LABEL"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">_MODULE_LABEL</h3>
+  Expects: (color, color, url, tooltip, body)
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'''</code><code class="variable-string"> </code>
+<code class="variable-string">    <TABLE BORDER="0" CELLBORDER="0" CELLSPACING="0" ALIGN="LEFT"></code>
+<code class="variable-string">    <TR><TD ALIGN="LEFT" VALIGN="BOTTOM" HEIGHT="8" WIDTH="16"</code>
+<code class="variable-string">            FIXEDSIZE="true" BGCOLOR="%s" BORDER="1" PORT="tab"></TD><</code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-string">/TR></code>
+<code class="variable-string">    <TR><TD ALIGN="LEFT" VALIGN="TOP" BGCOLOR="%s" BORDER="1" WIDTH="2</code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-string">0"</code>
+<code class="variable-string">            PORT="body" HREF="%s" TOOLTIP="%s">%s</TD></TR></code>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="_NESTED_BODY"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">_NESTED_BODY</h3>
+  Expects: (name, body_rows)
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'''</code><code class="variable-string"></code>
+<code class="variable-string">    <TABLE BORDER="0" CELLBORDER="0" CELLPADDING="0" CELLSPACING="0"></code>
+<code class="variable-string">    <TR><TD ALIGN="LEFT">%s</TD></TR></code>
+<code class="variable-string">    %s</code>
+<code class="variable-string">    </TABLE></code><code class="variable-quote">'''</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="_NESTED_BODY_ROW"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">_NESTED_BODY_ROW</h3>
+  Expects: (cells,)
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'''</code><code class="variable-string"></code>
+<code class="variable-string">    <TR><TD></code>
+<code class="variable-string">      <TABLE BORDER="0" CELLBORDER="0"><TR>%s</TR></TABLE></code>
+<code class="variable-string">    </TD></TR></code><code class="variable-quote">'''</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:07:49 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.docwriter.html-module.html b/doc/api/epydoc.docwriter.html-module.html
new file mode 100644
index 0000000..83c19ba
--- /dev/null
+++ b/doc/api/epydoc.docwriter.html-module.html
@@ -0,0 +1,334 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.docwriter.html</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.docwriter-module.html">Package docwriter</a> ::
+        Module html
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.docwriter.html-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module html</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.docwriter.html-pysrc.html">source code</a></span></p>
+<p>The HTML output generator for epydoc.  The main interface provided by 
+  this module is the <a href="epydoc.docwriter.html.HTMLWriter-class.html" 
+  class="link">HTMLWriter</a> class.</p>
+
+<hr />
+<div class="fields">      <p><strong>To Do:</strong>
+        Add a cache to <a 
+    href="epydoc.docwriter.html.HTMLWriter-class.html#url" 
+    class="link">HTMLWriter.url()</a>?
+      </p>
+</div><!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Classes</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Classes"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docwriter.html.HTMLWriter-class.html" class="summary-name">HTMLWriter</a>
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docwriter.html._HTMLDocstringLinker-class.html" class="summary-name" onclick="show_private();">_HTMLDocstringLinker</a>
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTIONS ==================== -->
+<a name="section-Functions"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Functions</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Functions"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docwriter.html-module.html#compile_template" class="summary-sig-name">compile_template</a>(<span class="summary-sig-arg">docstring</span>,
+        <span class="summary-sig-arg">template_string</span>,
+        <span class="summary-sig-arg">output_function</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string">out</code><code class="variable-quote">'</code></span>,
+        <span class="summary-sig-arg">debug</span>=<span class="summary-sig-default">True</span>)</span><br />
+      Given a template string containing inline python source code, return 
+      a python function that will fill in the template, and output the 
+      result.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#compile_template">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_compile_templat-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_compile_templat-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_compile_templat" name="call_graph_for_compile_templat">
+<area shape="rect" href="epydoc.docwriter.html-module.html#compile_template" title="compile_template()" alt="" coords="5,6,173,38" />
+<area shape="rect" href="epydoc.docwriter.html-module.html#strip_indent" title="strip_indent()" alt="" coords="221,6,344,38" />
+</map>
+  <img src="call_graph_for_compile_templat.gif" alt='' usemap="#call_graph_for_compile_templat" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="strip_indent"></a><span class="summary-sig-name">strip_indent</span>(<span class="summary-sig-arg">s</span>)</span><br />
+      Given a multiline string <code>s</code>, find the minimum indentation
+      for all non-blank lines, and return a new string formed by stripping 
+      that amount of indentation from all lines in <code>s</code>.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#strip_indent">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_strip_indent-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_strip_indent-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_strip_indent" name="call_graph_for_strip_indent">
+<area shape="rect" href="epydoc.docwriter.html-module.html#compile_template" title="compile_template()" alt="" coords="5,6,173,38" />
+<area shape="rect" href="epydoc.docwriter.html-module.html#strip_indent" title="strip_indent()" alt="" coords="221,6,344,38" />
+</map>
+  <img src="call_graph_for_strip_indent.gif" alt='' usemap="#call_graph_for_strip_indent" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTION DETAILS ==================== -->
+<a name="section-FunctionDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Function Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-FunctionDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="compile_template"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">compile_template</span>(<span class="sig-arg">docstring</span>,
+        <span class="sig-arg">template_string</span>,
+        <span class="sig-arg">output_function</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string">out</code><code class="variable-quote">'</code></span>,
+        <span class="sig-arg">debug</span>=<span class="sig-default">True</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#compile_template">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_compile_templat-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_compile_templat-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_compile_templat" name="call_graph_for_compile_templat">
+<area shape="rect" href="epydoc.docwriter.html-module.html#compile_template" title="compile_template()" alt="" coords="5,6,173,38" />
+<area shape="rect" href="epydoc.docwriter.html-module.html#strip_indent" title="strip_indent()" alt="" coords="221,6,344,38" />
+</map>
+  <img src="call_graph_for_compile_templat.gif" alt='' usemap="#call_graph_for_compile_templat" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Given a template string containing inline python source code, return a
+  python function that will fill in the template, and output the result.  
+  The signature for this function is taken from the first line of 
+  <code>docstring</code>.  Output is generated by making repeated calls to 
+  the output function with the given name (which is typically one of the 
+  function's parameters).</p>
+  <p>The templating language used by this function passes through all text 
+  as-is, with three exceptions:</p>
+  <ul>
+    <li>
+      If every line in the template string is indented by at least <i 
+      class="math">x</i> spaces, then the first <i class="math">x</i> 
+      spaces are stripped from each line.
+    </li>
+    <li>
+      Any line that begins with '>>>' (with no indentation) should
+      contain python code, and will be inserted as-is into the 
+      template-filling function.  If the line begins a control block (such 
+      as 'if' or 'for'), then the control block will be closed by the first
+      '>>>'-marked line whose indentation is less than or equal to
+      the line's own indentation (including lines that only contain 
+      comments.)
+    </li>
+    <li>
+      In any other line, any expression between two '$' signs will be 
+      evaluated and inserted into the line (using <code>str()</code> to 
+      convert the result to a string).
+    </li>
+  </ul>
+  <p>Here is a simple example:</p>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>TEMPLATE = <span class="py-string">''</span>'
+<span class="py-more">... </span><book>
+<span class="py-more">... </span>  <title>$book.title$</title>
+<span class="py-more">... </span>  <pages>$book.count_pages()$</pages>
+<span class="py-more">... </span>>>> <span class="py-keyword">for</span> chapter <span class="py-keyword">in</span> book.chapters:
+<span class="py-more">... </span>    <chaptername>$chapter.name$</chaptername>
+<span class="py-more">... </span>>>> <span class="py-comment">#endfor</span>
+<span class="py-more">... </span></book>
+<span class="py-prompt">>>> </span>write_book = compile_template(<span class="py-string">'write_book(out, book)'</span>, TEMPLATE)</pre>
+  <dl class="fields">
+  </dl>
+<div class="fields">      <p><strong>Acknowledgements:</strong>
+        The syntax used by <code>compile_template</code> is loosely based 
+        on Cheetah.
+      </p>
+</div></td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:06:37 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.docwriter.html-pysrc.html b/doc/api/epydoc.docwriter.html-pysrc.html
new file mode 100644
index 0000000..265eff9
--- /dev/null
+++ b/doc/api/epydoc.docwriter.html-pysrc.html
@@ -0,0 +1,4256 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.docwriter.html</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.docwriter-module.html">Package docwriter</a> ::
+        Module html
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.docwriter.html-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="epydoc.docwriter.html-module.html">Module epydoc.docwriter.html</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno">   1</tt>  <tt class="py-line"><tt class="py-comment">#</tt> </tt>
+<a name="L2"></a><tt class="py-lineno">   2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># epydoc -- HTML output generator</tt> </tt>
+<a name="L3"></a><tt class="py-lineno">   3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Edward Loper</tt> </tt>
+<a name="L4"></a><tt class="py-lineno">   4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L5"></a><tt class="py-lineno">   5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Created [01/30/01 05:18 PM]</tt> </tt>
+<a name="L6"></a><tt class="py-lineno">   6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># $Id: html.py 1674 2008-01-29 06:03:36Z edloper $</tt> </tt>
+<a name="L7"></a><tt class="py-lineno">   7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L8"></a><tt class="py-lineno">   8</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L9"></a><tt class="py-lineno">   9</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L10"></a><tt class="py-lineno">  10</tt>  <tt class="py-line"><tt class="py-docstring">The HTML output generator for epydoc.  The main interface provided by</tt> </tt>
+<a name="L11"></a><tt class="py-lineno">  11</tt>  <tt class="py-line"><tt class="py-docstring">this module is the L{HTMLWriter} class.</tt> </tt>
+<a name="L12"></a><tt class="py-lineno">  12</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L13"></a><tt class="py-lineno">  13</tt>  <tt class="py-line"><tt class="py-docstring">@todo: Add a cache to L{HTMLWriter.url()}?</tt> </tt>
+<a name="L14"></a><tt class="py-lineno">  14</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L15"></a><tt class="py-lineno">  15</tt>  <tt class="py-line"><tt class="py-name">__docformat__</tt> <tt class="py-op">=</tt> <tt class="py-string">'epytext en'</tt> </tt>
+<a name="L16"></a><tt class="py-lineno">  16</tt>  <tt class="py-line"> </tt>
+<a name="L17"></a><tt class="py-lineno">  17</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">re</tt><tt class="py-op">,</tt> <tt class="py-name">os</tt><tt class="py-op">,</tt> <tt class="py-name">sys</tt><tt class="py-op">,</tt> <tt class="py-name">codecs</tt><tt class="py-op">,</tt> <tt class="py-name">sre_constants</tt><tt class="py-op">,</tt> <tt class="py-name">pprint</tt><tt class="py-op">,</tt> <tt class="py-name">base64</tt> </tt>
+<a name="L18"></a><tt class="py-lineno">  18</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">urllib</tt> </tt>
+<a name="L19"></a><tt class="py-lineno">  19</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">__builtin__</tt> </tt>
+<a name="L20"></a><tt class="py-lineno">  20</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-0" class="py-name" targets="Package epydoc=epydoc-module.html"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-0', 'epydoc', 'link-0');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-1" class="py-name" targets="Module epydoc.apidoc=epydoc.apidoc-module.html"><a title="epydoc.apidoc" class="py-name" href="#" onclick="return doclink('link-1', ' [...]
+<a name="L21"></a><tt class="py-lineno">  21</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-2" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-2', 'epydoc', 'link-0');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-3" class="py-name" targets="Module epydoc.docstringparser=epydoc.docstringparser-module.html"><a title="epydoc.docstringparser" class="py-name" href="#" onclick="return doclink('link-3', 'docstringparser [...]
+<a name="L22"></a><tt class="py-lineno">  22</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">time</tt><tt class="py-op">,</tt> <tt id="link-4" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-4', 'epydoc', 'link-0');">epydoc</a></tt><tt class="py-op">,</tt> <tt id="link-5" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-5', 'epydoc', 'link-0');">epydoc</a></tt><tt class="py-o [...]
+epydoc.markup.doctest.DoctestColorizer.markup
+epydoc.markup.doctest.HTMLDoctestColorizer.markup
+epydoc.markup.doctest.LaTeXDoctestColorizer.markup
+epydoc.markup.doctest.XMLDoctestColorizer.markup" class="py-name" href="#" onclick="return doclink('link-6', 'markup', 'link-6');">markup</a></tt><tt class="py-op">,</tt> <tt id="link-7" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-7', 'epydoc', 'link-0');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-8" class="py-name"><a title="epydoc.markup
+epydoc.markup.doctest.DoctestColorizer.markup
+epydoc.markup.doctest.HTMLDoctestColorizer.markup
+epydoc.markup.doctest.LaTeXDoctestColorizer.markup
+epydoc.markup.doctest.XMLDoctestColorizer.markup" class="py-name" href="#" onclick="return doclink('link-8', 'markup', 'link-6');">markup</a></tt><tt class="py-op">.</tt><tt id="link-9" class="py-name" targets="Module epydoc.markup.epytext=epydoc.markup.epytext-module.html"><a title="epydoc.markup.epytext" class="py-name" href="#" onclick="return doclink('link-9', 'epytext', 'link-9');">epytext</a></tt> </tt>
+<a name="L23"></a><tt class="py-lineno">  23</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-10" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-10', 'epydoc', 'link-0');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-11" class="py-name" targets="Package epydoc.docwriter=epydoc.docwriter-module.html"><a title="epydoc.docwriter" class="py-name" href="#" onclick="return doclink('link-11', 'docwriter', 'link-11');">docwr [...]
+<a name="L24"></a><tt class="py-lineno">  24</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-14" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-14', 'epydoc', 'link-0');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-15" class="py-name"><a title="epydoc.docwriter" class="py-name" href="#" onclick="return doclink('link-15', 'docwriter', 'link-11');">docwriter</a></tt> <tt class="py-keyword">import</tt> <tt id="link-16 [...]
+<a name="L25"></a><tt class="py-lineno">  25</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-17" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-17', 'epydoc', 'link-0');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-18" class="py-name"><a title="epydoc.docwriter" class="py-name" href="#" onclick="return doclink('link-18', 'docwriter', 'link-11');">docwriter</a></tt><tt class="py-op">.</tt><tt id="link-19" class="py- [...]
+<a name="L26"></a><tt class="py-lineno">  26</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-21" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-21', 'epydoc', 'link-0');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-22" class="py-name"><a title="epydoc.docwriter" class="py-name" href="#" onclick="return doclink('link-22', 'docwriter', 'link-11');">docwriter</a></tt><tt class="py-op">.</tt><tt id="link-23" class="py- [...]
+<a name="L27"></a><tt class="py-lineno">  27</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-25" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-25', 'epydoc', 'link-0');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-26" class="py-name"><a title="epydoc.docwriter" class="py-name" href="#" onclick="return doclink('link-26', 'docwriter', 'link-11');">docwriter</a></tt><tt class="py-op">.</tt><tt id="link-27" class="py- [...]
+epydoc.markup.restructuredtext.dotgraph" class="py-name" href="#" onclick="return doclink('link-27', 'dotgraph', 'link-27');">dotgraph</a></tt> <tt class="py-keyword">import</tt> <tt class="py-op">*</tt> </tt>
+<a name="L28"></a><tt class="py-lineno">  28</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-28" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-28', 'epydoc', 'link-0');">epydoc</a></tt> <tt class="py-keyword">import</tt> <tt id="link-29" class="py-name" targets="Method epydoc.cli.ConsoleLogger.log()=epydoc.cli.ConsoleLogger-class.html#log,Method epydoc.cli.HTMLLogger.log()=epydoc.cli.HTMLLogger-class.html#log,Method epydo [...]
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-29', 'log', 'link-29');">log</a></tt> </tt>
+<a name="L29"></a><tt class="py-lineno">  29</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-30" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-30', 'epydoc', 'link-0');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-31" class="py-name" targets="Module epydoc.test.util=epydoc.test.util-module.html,Module epydoc.util=epydoc.util-module.html"><a title="epydoc.test.util
+epydoc.util" class="py-name" href="#" onclick="return doclink('link-31', 'util', 'link-31');">util</a></tt> <tt class="py-keyword">import</tt> <tt id="link-32" class="py-name" targets="Function epydoc.util.plaintext_to_html()=epydoc.util-module.html#plaintext_to_html"><a title="epydoc.util.plaintext_to_html" class="py-name" href="#" onclick="return doclink('link-32', 'plaintext_to_html', 'link-32');">plaintext_to_html</a></tt><tt class="py-op">,</tt> <tt id="link-33" class="py-name" targ [...]
+<a name="L30"></a><tt class="py-lineno">  30</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-34" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-34', 'epydoc', 'link-0');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-35" class="py-name" targets="Module epydoc.compat=epydoc.compat-module.html"><a title="epydoc.compat" class="py-name" href="#" onclick="return doclink('link-35', 'compat', 'link-35');">compat</a></tt> <t [...]
+<a name="L31"></a><tt class="py-lineno">  31</tt>  <tt class="py-line"> </tt>
+<a name="L32"></a><tt class="py-lineno">  32</tt>  <tt class="py-line"><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L33"></a><tt class="py-lineno">  33</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## Template Compiler</tt> </tt>
+<a name="L34"></a><tt class="py-lineno">  34</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L35"></a><tt class="py-lineno">  35</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># The compile_template() method defined in this section is used to</tt> </tt>
+<a name="L36"></a><tt class="py-lineno">  36</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># define several of HTMLWriter's methods.</tt> </tt>
+<a name="L37"></a><tt class="py-lineno">  37</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="compile_template"></a><div id="compile_template-def"><a name="L38"></a><tt class="py-lineno">  38</tt> <a class="py-toggle" href="#" id="compile_template-toggle" onclick="return toggle('compile_template');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html-module.html#compile_template">compile_template</a><tt class="py-op">(</tt><tt class="py-param">docstring</tt><tt class="py-op">,</tt> <tt class="py-param">template_stri [...]
+<a name="L39"></a><tt class="py-lineno">  39</tt>  <tt class="py-line">                     <tt class="py-param">output_function</tt><tt class="py-op">=</tt><tt class="py-string">'out'</tt><tt class="py-op">,</tt> <tt class="py-param">debug</tt><tt class="py-op">=</tt><tt id="link-36" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-36', 'epydoc', 'link-0');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-37" class="py-name" targets="Variable  [...]
+epydoc.gui.DEBUG
+epydoc.log.DEBUG" class="py-name" href="#" onclick="return doclink('link-37', 'DEBUG', 'link-37');">DEBUG</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="compile_template-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="compile_template-expanded"><a name="L40"></a><tt class="py-lineno">  40</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L41"></a><tt class="py-lineno">  41</tt>  <tt class="py-line"><tt class="py-docstring">    Given a template string containing inline python source code,</tt> </tt>
+<a name="L42"></a><tt class="py-lineno">  42</tt>  <tt class="py-line"><tt class="py-docstring">    return a python function that will fill in the template, and</tt> </tt>
+<a name="L43"></a><tt class="py-lineno">  43</tt>  <tt class="py-line"><tt class="py-docstring">    output the result.  The signature for this function is taken from</tt> </tt>
+<a name="L44"></a><tt class="py-lineno">  44</tt>  <tt class="py-line"><tt class="py-docstring">    the first line of C{docstring}.  Output is generated by making</tt> </tt>
+<a name="L45"></a><tt class="py-lineno">  45</tt>  <tt class="py-line"><tt class="py-docstring">    repeated calls to the output function with the given name (which</tt> </tt>
+<a name="L46"></a><tt class="py-lineno">  46</tt>  <tt class="py-line"><tt class="py-docstring">    is typically one of the function's parameters).</tt> </tt>
+<a name="L47"></a><tt class="py-lineno">  47</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L48"></a><tt class="py-lineno">  48</tt>  <tt class="py-line"><tt class="py-docstring">    The templating language used by this function passes through all</tt> </tt>
+<a name="L49"></a><tt class="py-lineno">  49</tt>  <tt class="py-line"><tt class="py-docstring">    text as-is, with three exceptions:</tt> </tt>
+<a name="L50"></a><tt class="py-lineno">  50</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L51"></a><tt class="py-lineno">  51</tt>  <tt class="py-line"><tt class="py-docstring">      - If every line in the template string is indented by at least</tt> </tt>
+<a name="L52"></a><tt class="py-lineno">  52</tt>  <tt class="py-line"><tt class="py-docstring">        M{x} spaces, then the first M{x} spaces are stripped from each</tt> </tt>
+<a name="L53"></a><tt class="py-lineno">  53</tt>  <tt class="py-line"><tt class="py-docstring">        line.</tt> </tt>
+<a name="L54"></a><tt class="py-lineno">  54</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L55"></a><tt class="py-lineno">  55</tt>  <tt class="py-line"><tt class="py-docstring">      - Any line that begins with '>>>' (with no indentation)</tt> </tt>
+<a name="L56"></a><tt class="py-lineno">  56</tt>  <tt class="py-line"><tt class="py-docstring">        should contain python code, and will be inserted as-is into</tt> </tt>
+<a name="L57"></a><tt class="py-lineno">  57</tt>  <tt class="py-line"><tt class="py-docstring">        the template-filling function.  If the line begins a control</tt> </tt>
+<a name="L58"></a><tt class="py-lineno">  58</tt>  <tt class="py-line"><tt class="py-docstring">        block (such as 'if' or 'for'), then the control block will</tt> </tt>
+<a name="L59"></a><tt class="py-lineno">  59</tt>  <tt class="py-line"><tt class="py-docstring">        be closed by the first '>>>'-marked line whose indentation is</tt> </tt>
+<a name="L60"></a><tt class="py-lineno">  60</tt>  <tt class="py-line"><tt class="py-docstring">        less than or equal to the line's own indentation (including</tt> </tt>
+<a name="L61"></a><tt class="py-lineno">  61</tt>  <tt class="py-line"><tt class="py-docstring">        lines that only contain comments.)</tt> </tt>
+<a name="L62"></a><tt class="py-lineno">  62</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L63"></a><tt class="py-lineno">  63</tt>  <tt class="py-line"><tt class="py-docstring">      - In any other line, any expression between two '$' signs will</tt> </tt>
+<a name="L64"></a><tt class="py-lineno">  64</tt>  <tt class="py-line"><tt class="py-docstring">        be evaluated and inserted into the line (using C{str()} to</tt> </tt>
+<a name="L65"></a><tt class="py-lineno">  65</tt>  <tt class="py-line"><tt class="py-docstring">        convert the result to a string).</tt> </tt>
+<a name="L66"></a><tt class="py-lineno">  66</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L67"></a><tt class="py-lineno">  67</tt>  <tt class="py-line"><tt class="py-docstring">    Here is a simple example:</tt> </tt>
+<a name="L68"></a><tt class="py-lineno">  68</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L69"></a><tt class="py-lineno">  69</tt>  <tt class="py-line"><tt class="py-docstring">        >>> TEMPLATE = '''</tt> </tt>
+<a name="L70"></a><tt class="py-lineno">  70</tt>  <tt class="py-line"><tt class="py-docstring">        ... <book></tt> </tt>
+<a name="L71"></a><tt class="py-lineno">  71</tt>  <tt class="py-line"><tt class="py-docstring">        ...   <title>$book.title$</title></tt> </tt>
+<a name="L72"></a><tt class="py-lineno">  72</tt>  <tt class="py-line"><tt class="py-docstring">        ...   <pages>$book.count_pages()$</pages></tt> </tt>
+<a name="L73"></a><tt class="py-lineno">  73</tt>  <tt class="py-line"><tt class="py-docstring">        ... >>> for chapter in book.chapters:</tt> </tt>
+<a name="L74"></a><tt class="py-lineno">  74</tt>  <tt class="py-line"><tt class="py-docstring">        ...     <chaptername>$chapter.name$</chaptername></tt> </tt>
+<a name="L75"></a><tt class="py-lineno">  75</tt>  <tt class="py-line"><tt class="py-docstring">        ... >>> #endfor</tt> </tt>
+<a name="L76"></a><tt class="py-lineno">  76</tt>  <tt class="py-line"><tt class="py-docstring">        ... </book></tt> </tt>
+<a name="L77"></a><tt class="py-lineno">  77</tt>  <tt class="py-line"><tt class="py-docstring">        >>> write_book = compile_template('write_book(out, book)', TEMPLATE)</tt> </tt>
+<a name="L78"></a><tt class="py-lineno">  78</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L79"></a><tt class="py-lineno">  79</tt>  <tt class="py-line"><tt class="py-docstring">    @newfield acknowledgements: Acknowledgements</tt> </tt>
+<a name="L80"></a><tt class="py-lineno">  80</tt>  <tt class="py-line"><tt class="py-docstring">    @acknowledgements: The syntax used by C{compile_template} is</tt> </tt>
+<a name="L81"></a><tt class="py-lineno">  81</tt>  <tt class="py-line"><tt class="py-docstring">    loosely based on Cheetah.</tt> </tt>
+<a name="L82"></a><tt class="py-lineno">  82</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L83"></a><tt class="py-lineno">  83</tt>  <tt class="py-line">    <tt class="py-comment"># Extract signature from the docstring:</tt> </tt>
+<a name="L84"></a><tt class="py-lineno">  84</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">signature</tt> <tt class="py-op">=</tt> <tt id="link-38" class="py-name" targets="Variable epydoc.apidoc.APIDoc.docstring=epydoc.apidoc.APIDoc-class.html#docstring"><a title="epydoc.apidoc.APIDoc.docstring" class="py-name" href="#" onclick="return doclink('link-38', 'docstring', 'link-38');">docstring</a></tt><tt class="py-op">.</tt><tt class="py-name">lstrip</tt><tt [...]
+<a name="L85"></a><tt class="py-lineno">  85</tt>  <tt class="py-line">    <tt class="py-name">func_name</tt> <tt class="py-op">=</tt> <tt class="py-name">signature</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'('</tt><tt class="py-op">,</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">strip</tt><tt class [...]
+<a name="L86"></a><tt class="py-lineno">  86</tt>  <tt class="py-line"> </tt>
+<a name="L87"></a><tt class="py-lineno">  87</tt>  <tt class="py-line">    <tt class="py-comment"># Regexp to search for inline substitutions:</tt> </tt>
+<a name="L88"></a><tt class="py-lineno">  88</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">INLINE</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">compile</tt><tt class="py-op">(</tt><tt class="py-string">r'\$([^\$]+)\$'</tt><tt class="py-op">)</tt> </tt>
+<a name="L89"></a><tt class="py-lineno">  89</tt>  <tt class="py-line">    <tt class="py-comment"># Regexp to search for python statements in the template:</tt> </tt>
+<a name="L90"></a><tt class="py-lineno">  90</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">COMMAND</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">compile</tt><tt class="py-op">(</tt><tt class="py-string">r'(^>>>.*)\n?'</tt><tt class="py-op">,</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">MULTILINE</tt><tt class="py-op">)</tt> </tt>
+<a name="L91"></a><tt class="py-lineno">  91</tt>  <tt class="py-line"> </tt>
+<a name="L92"></a><tt class="py-lineno">  92</tt>  <tt class="py-line">    <tt class="py-comment"># Strip indentation from the template.</tt> </tt>
+<a name="L93"></a><tt class="py-lineno">  93</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">template_string</tt> <tt class="py-op">=</tt> <tt id="link-39" class="py-name" targets="Function epydoc.docwriter.html.strip_indent()=epydoc.docwriter.html-module.html#strip_indent"><a title="epydoc.docwriter.html.strip_indent" class="py-name" href="#" onclick="return doclink('link-39', 'strip_indent', 'link-39');">strip_indent</a></tt><tt class="py-op">(</tt><tt cla [...]
+<a name="L94"></a><tt class="py-lineno">  94</tt>  <tt class="py-line"> </tt>
+<a name="L95"></a><tt class="py-lineno">  95</tt>  <tt class="py-line">    <tt class="py-comment"># If we're debugging, then we'll store the generated function,</tt> </tt>
+<a name="L96"></a><tt class="py-lineno">  96</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># so we can print it along with any tracebacks that depend on it.</tt> </tt>
+<a name="L97"></a><tt class="py-lineno">  97</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt id="link-40" class="py-name" targets="Function epydoc.log.debug()=epydoc.log-module.html#debug,Method epydoc.markup.restructuredtext.OptimizedReporter.debug()=epydoc.markup.restructuredtext.OptimizedReporter-class.html#debug"><a title="epydoc.log.debug
+epydoc.markup.restructuredtext.OptimizedReporter.debug" class="py-name" href="#" onclick="return doclink('link-40', 'debug', 'link-40');">debug</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L98"></a><tt class="py-lineno">  98</tt>  <tt class="py-line">        <tt class="py-name">signature</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt class="py-string">r'\)\s*$'</tt><tt class="py-op">,</tt> <tt class="py-string">', __debug=__debug)'</tt><tt class="py-op">,</tt> <tt class="py-name">signature</tt><tt class="py-op">)</tt> </tt>
+<a name="L99"></a><tt class="py-lineno">  99</tt>  <tt class="py-line"> </tt>
+<a name="L100"></a><tt class="py-lineno"> 100</tt>  <tt class="py-line">    <tt class="py-comment"># Funciton declaration line</tt> </tt>
+<a name="L101"></a><tt class="py-lineno"> 101</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">pysrc_lines</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-string">'def %s:'</tt> <tt class="py-op">%</tt> <tt class="py-name">signature</tt><tt class="py-op">]</tt> </tt>
+<a name="L102"></a><tt class="py-lineno"> 102</tt>  <tt class="py-line">    <tt class="py-name">indents</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L103"></a><tt class="py-lineno"> 103</tt>  <tt class="py-line"> </tt>
+<a name="L104"></a><tt class="py-lineno"> 104</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-41" class="py-name"><a title="epydoc.log.debug
+epydoc.markup.restructuredtext.OptimizedReporter.debug" class="py-name" href="#" onclick="return doclink('link-41', 'debug', 'link-40');">debug</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L105"></a><tt class="py-lineno"> 105</tt>  <tt class="py-line">        <tt class="py-name">pysrc_lines</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">'    try:'</tt><tt class="py-op">)</tt> </tt>
+<a name="L106"></a><tt class="py-lineno"> 106</tt>  <tt class="py-line">        <tt class="py-name">indents</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L107"></a><tt class="py-lineno"> 107</tt>  <tt class="py-line"> </tt>
+<a name="L108"></a><tt class="py-lineno"> 108</tt>  <tt class="py-line">    <tt class="py-name">commands</tt> <tt class="py-op">=</tt> <tt class="py-name">COMMAND</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-name">template_string</tt><tt class="py-op">.</tt><tt class="py-name">strip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">+</tt><tt class="py-string">'\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L109"></a><tt class="py-lineno"> 109</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">i</tt><tt class="py-op">,</tt> <tt class="py-name">command</tt> <tt class="py-keyword">in</tt> <tt class="py-name">enumerate</tt><tt class="py-op">(</tt><tt class="py-name">commands</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L110"></a><tt class="py-lineno"> 110</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">command</tt> <tt class="py-op">==</tt> <tt class="py-string">''</tt><tt class="py-op">:</tt> <tt class="py-keyword">continue</tt> </tt>
+<a name="L111"></a><tt class="py-lineno"> 111</tt>  <tt class="py-line"> </tt>
+<a name="L112"></a><tt class="py-lineno"> 112</tt>  <tt class="py-line">        <tt class="py-comment"># String literal segment:</tt> </tt>
+<a name="L113"></a><tt class="py-lineno"> 113</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">i</tt><tt class="py-op">%</tt><tt class="py-number">2</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L114"></a><tt class="py-lineno"> 114</tt>  <tt class="py-line">            <tt class="py-name">pieces</tt> <tt class="py-op">=</tt> <tt class="py-name">INLINE</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-name">command</tt><tt class="py-op">)</tt> </tt>
+<a name="L115"></a><tt class="py-lineno"> 115</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">j</tt><tt class="py-op">,</tt> <tt class="py-name">piece</tt> <tt class="py-keyword">in</tt> <tt class="py-name">enumerate</tt><tt class="py-op">(</tt><tt class="py-name">pieces</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L116"></a><tt class="py-lineno"> 116</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">j</tt><tt class="py-op">%</tt><tt class="py-number">2</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L117"></a><tt class="py-lineno"> 117</tt>  <tt class="py-line">                    <tt class="py-comment"># String piece</tt> </tt>
+<a name="L118"></a><tt class="py-lineno"> 118</tt>  <tt class="py-line"><tt class="py-comment"></tt>                    <tt class="py-name">pysrc_lines</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">'    '</tt><tt class="py-op">*</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">indents</tt><tt class="py-op">)</tt><tt class="py-op">+</tt> </tt>
+<a name="L119"></a><tt class="py-lineno"> 119</tt>  <tt class="py-line">                                 <tt class="py-string">'%s(%r)'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">output_function</tt><tt class="py-op">,</tt> <tt class="py-name">piece</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L120"></a><tt class="py-lineno"> 120</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L121"></a><tt class="py-lineno"> 121</tt>  <tt class="py-line">                    <tt class="py-comment"># Variable piece</tt> </tt>
+<a name="L122"></a><tt class="py-lineno"> 122</tt>  <tt class="py-line"><tt class="py-comment"></tt>                    <tt class="py-name">pysrc_lines</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">'    '</tt><tt class="py-op">*</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">indents</tt><tt class="py-op">)</tt><tt class="py-op">+</tt> </tt>
+<a name="L123"></a><tt class="py-lineno"> 123</tt>  <tt class="py-line">                                 <tt class="py-string">'%s(unicode(%s))'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">output_function</tt><tt class="py-op">,</tt> <tt class="py-name">piece</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L124"></a><tt class="py-lineno"> 124</tt>  <tt class="py-line"> </tt>
+<a name="L125"></a><tt class="py-lineno"> 125</tt>  <tt class="py-line">        <tt class="py-comment"># Python command:</tt> </tt>
+<a name="L126"></a><tt class="py-lineno"> 126</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L127"></a><tt class="py-lineno"> 127</tt>  <tt class="py-line">            <tt class="py-name">srcline</tt> <tt class="py-op">=</tt> <tt class="py-name">command</tt><tt class="py-op">[</tt><tt class="py-number">3</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">lstrip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L128"></a><tt class="py-lineno"> 128</tt>  <tt class="py-line">            <tt class="py-comment"># Update indentation</tt> </tt>
+<a name="L129"></a><tt class="py-lineno"> 129</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">indent</tt> <tt class="py-op">=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">command</tt><tt class="py-op">)</tt><tt class="py-op">-</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">srcline</tt><tt class="py-op">)</tt> </tt>
+<a name="L130"></a><tt class="py-lineno"> 130</tt>  <tt class="py-line">            <tt class="py-keyword">while</tt> <tt class="py-name">indent</tt> <tt class="py-op"><=</tt> <tt class="py-name">indents</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> <tt class="py-name">indents</tt><tt class="py-op">.</tt><tt class="py-name">pop</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L131"></a><tt class="py-lineno"> 131</tt>  <tt class="py-line">            <tt class="py-comment"># Add on the line.</tt> </tt>
+<a name="L132"></a><tt class="py-lineno"> 132</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">srcline</tt> <tt class="py-op">=</tt> <tt class="py-name">srcline</tt><tt class="py-op">.</tt><tt class="py-name">rstrip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L133"></a><tt class="py-lineno"> 133</tt>  <tt class="py-line">            <tt class="py-name">pysrc_lines</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">'    '</tt><tt class="py-op">*</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">indents</tt><tt class="py-op">)</tt><tt class="py-op">+</tt><tt class="py-name">srcline</tt><tt class="py-op">)</tt> </tt>
+<a name="L134"></a><tt class="py-lineno"> 134</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">srcline</tt><tt class="py-op">.</tt><tt class="py-name">endswith</tt><tt class="py-op">(</tt><tt class="py-string">':'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L135"></a><tt class="py-lineno"> 135</tt>  <tt class="py-line">                <tt class="py-name">indents</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">indent</tt><tt class="py-op">)</tt> </tt>
+<a name="L136"></a><tt class="py-lineno"> 136</tt>  <tt class="py-line">         </tt>
+<a name="L137"></a><tt class="py-lineno"> 137</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-42" class="py-name"><a title="epydoc.log.debug
+epydoc.markup.restructuredtext.OptimizedReporter.debug" class="py-name" href="#" onclick="return doclink('link-42', 'debug', 'link-40');">debug</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L138"></a><tt class="py-lineno"> 138</tt>  <tt class="py-line">        <tt class="py-name">pysrc_lines</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">'    except Exception,e:'</tt><tt class="py-op">)</tt> </tt>
+<a name="L139"></a><tt class="py-lineno"> 139</tt>  <tt class="py-line">        <tt class="py-name">pysrc_lines</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">'        pysrc, func_name = __debug '</tt><tt class="py-op">)</tt> </tt>
+<a name="L140"></a><tt class="py-lineno"> 140</tt>  <tt class="py-line">        <tt class="py-name">pysrc_lines</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">'        lineno = sys.exc_info()[2].tb_lineno'</tt><tt class="py-op">)</tt> </tt>
+<a name="L141"></a><tt class="py-lineno"> 141</tt>  <tt class="py-line">        <tt class="py-name">pysrc_lines</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">'        print ("Exception in template %s() on "'</tt><tt class="py-op">)</tt> </tt>
+<a name="L142"></a><tt class="py-lineno"> 142</tt>  <tt class="py-line">        <tt class="py-name">pysrc_lines</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">'               "line %d:" % (func_name, lineno))'</tt><tt class="py-op">)</tt> </tt>
+<a name="L143"></a><tt class="py-lineno"> 143</tt>  <tt class="py-line">        <tt class="py-name">pysrc_lines</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">'        print pysrc[lineno-1]'</tt><tt class="py-op">)</tt> </tt>
+<a name="L144"></a><tt class="py-lineno"> 144</tt>  <tt class="py-line">        <tt class="py-name">pysrc_lines</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">'        raise'</tt><tt class="py-op">)</tt> </tt>
+<a name="L145"></a><tt class="py-lineno"> 145</tt>  <tt class="py-line">         </tt>
+<a name="L146"></a><tt class="py-lineno"> 146</tt>  <tt class="py-line">    <tt class="py-name">pysrc</tt> <tt class="py-op">=</tt> <tt class="py-string">'\n'</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">pysrc_lines</tt><tt class="py-op">)</tt><tt class="py-op">+</tt><tt class="py-string">'\n'</tt> </tt>
+<a name="L147"></a><tt class="py-lineno"> 147</tt>  <tt class="py-line">    <tt class="py-comment">#log.debug(pysrc)</tt> </tt>
+<a name="L148"></a><tt class="py-lineno"> 148</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt id="link-43" class="py-name"><a title="epydoc.log.debug
+epydoc.markup.restructuredtext.OptimizedReporter.debug" class="py-name" href="#" onclick="return doclink('link-43', 'debug', 'link-40');">debug</a></tt><tt class="py-op">:</tt> <tt class="py-name">localdict</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-string">'__debug'</tt><tt class="py-op">:</tt> <tt class="py-op">(</tt><tt class="py-name">pysrc_lines</tt><tt class="py-op">,</tt> <tt class="py-name">func_name</tt><tt class="py-op">)</tt><tt class="py-op">}</tt> </tt>
+<a name="L149"></a><tt class="py-lineno"> 149</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> <tt class="py-name">localdict</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L150"></a><tt class="py-lineno"> 150</tt>  <tt class="py-line">    <tt class="py-keyword">try</tt><tt class="py-op">:</tt> <tt class="py-keyword">exec</tt> <tt class="py-name">pysrc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">globals</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">localdict</tt> </tt>
+<a name="L151"></a><tt class="py-lineno"> 151</tt>  <tt class="py-line">    <tt class="py-keyword">except</tt> <tt class="py-name">SyntaxError</tt><tt class="py-op">:</tt> </tt>
+<a name="L152"></a><tt class="py-lineno"> 152</tt>  <tt class="py-line">        <tt id="link-44" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-44', 'log', 'link-29');">log</a></tt><tt class="py-op">.</tt><tt id="link-45" class="py-name" targets="Function epydoc.log.error()=epydoc.log-module.html#error"><a title="epydoc.log.error" class="py-name" href="#" onclick="return doclink('link-45', 'error', 'link-45');">error</a></tt><tt class="py-op">(</tt><tt class="py-string">'Error in script:\n'</tt> <tt class="py-op">+</tt> <tt class="py-name">pysrc< [...]
+<a name="L153"></a><tt class="py-lineno"> 153</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> </tt>
+<a name="L154"></a><tt class="py-lineno"> 154</tt>  <tt class="py-line">    <tt class="py-name">template_func</tt> <tt class="py-op">=</tt> <tt class="py-name">localdict</tt><tt class="py-op">[</tt><tt class="py-name">func_name</tt><tt class="py-op">]</tt> </tt>
+<a name="L155"></a><tt class="py-lineno"> 155</tt>  <tt class="py-line">    <tt class="py-name">template_func</tt><tt class="py-op">.</tt><tt id="link-46" class="py-name" targets="Variable epydoc.markup.epytext.__doc__=epydoc.markup.epytext-module.html#__doc__"><a title="epydoc.markup.epytext.__doc__" class="py-name" href="#" onclick="return doclink('link-46', '__doc__', 'link-46');">__doc__</a></tt> <tt class="py-op">=</tt> <tt id="link-47" class="py-name"><a title="epydoc.apidoc.APIDoc [...]
+<a name="L156"></a><tt class="py-lineno"> 156</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">template_func</tt> </tt>
+</div><a name="L157"></a><tt class="py-lineno"> 157</tt>  <tt class="py-line">     </tt>
+<a name="strip_indent"></a><div id="strip_indent-def"><a name="L158"></a><tt class="py-lineno"> 158</tt> <a class="py-toggle" href="#" id="strip_indent-toggle" onclick="return toggle('strip_indent');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html-module.html#strip_indent">strip_indent</a><tt class="py-op">(</tt><tt class="py-param">s</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="strip_indent-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="strip_indent-expanded"><a name="L159"></a><tt class="py-lineno"> 159</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L160"></a><tt class="py-lineno"> 160</tt>  <tt class="py-line"><tt class="py-docstring">    Given a multiline string C{s}, find the minimum indentation for</tt> </tt>
+<a name="L161"></a><tt class="py-lineno"> 161</tt>  <tt class="py-line"><tt class="py-docstring">    all non-blank lines, and return a new string formed by stripping</tt> </tt>
+<a name="L162"></a><tt class="py-lineno"> 162</tt>  <tt class="py-line"><tt class="py-docstring">    that amount of indentation from all lines in C{s}.</tt> </tt>
+<a name="L163"></a><tt class="py-lineno"> 163</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L164"></a><tt class="py-lineno"> 164</tt>  <tt class="py-line">    <tt class="py-comment"># Strip indentation from the template.</tt> </tt>
+<a name="L165"></a><tt class="py-lineno"> 165</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">minindent</tt> <tt class="py-op">=</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">maxint</tt> </tt>
+<a name="L166"></a><tt class="py-lineno"> 166</tt>  <tt class="py-line">    <tt class="py-name">lines</tt> <tt class="py-op">=</tt> <tt class="py-name">s</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L167"></a><tt class="py-lineno"> 167</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">line</tt> <tt class="py-keyword">in</tt> <tt class="py-name">lines</tt><tt class="py-op">:</tt> </tt>
+<a name="L168"></a><tt class="py-lineno"> 168</tt>  <tt class="py-line">        <tt class="py-name">stripline</tt> <tt class="py-op">=</tt> <tt class="py-name">line</tt><tt class="py-op">.</tt><tt class="py-name">lstrip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L169"></a><tt class="py-lineno"> 169</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">stripline</tt><tt class="py-op">:</tt> </tt>
+<a name="L170"></a><tt class="py-lineno"> 170</tt>  <tt class="py-line">            <tt class="py-name">minindent</tt> <tt class="py-op">=</tt> <tt class="py-name">min</tt><tt class="py-op">(</tt><tt class="py-name">minindent</tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">line</tt><tt class="py-op">)</tt><tt class="py-op">-</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">stripline</tt><tt class="py-op">)</t [...]
+<a name="L171"></a><tt class="py-lineno"> 171</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-string">'\n'</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">l</tt><tt class="py-op">[</tt><tt class="py-name">minindent</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> <tt class="py-keyword">for</tt> <tt class="py-name">l</tt> <tt class="py-keyword">in</tt> <tt class="py-name">lines< [...]
+</div><a name="L172"></a><tt class="py-lineno"> 172</tt>  <tt class="py-line"> </tt>
+<a name="L173"></a><tt class="py-lineno"> 173</tt>  <tt class="py-line"><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L174"></a><tt class="py-lineno"> 174</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## HTML Writer</tt> </tt>
+<a name="L175"></a><tt class="py-lineno"> 175</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L176"></a><tt class="py-lineno"> 176</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="HTMLWriter"></a><div id="HTMLWriter-def"><a name="L177"></a><tt class="py-lineno"> 177</tt> <a class="py-toggle" href="#" id="HTMLWriter-toggle" onclick="return toggle('HTMLWriter');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a><tt class="py-op">:</tt> </tt>
+</div><div id="HTMLWriter-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="HTMLWriter-expanded"><a name="L178"></a><tt class="py-lineno"> 178</tt>  <tt class="py-line">    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L179"></a><tt class="py-lineno"> 179</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># Table of Contents</tt> </tt>
+<a name="L180"></a><tt class="py-lineno"> 180</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L181"></a><tt class="py-lineno"> 181</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#</tt> </tt>
+<a name="L182"></a><tt class="py-lineno"> 182</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># 1. Interface Methods</tt> </tt>
+<a name="L183"></a><tt class="py-lineno"> 183</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#</tt> </tt>
+<a name="L184"></a><tt class="py-lineno"> 184</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># 2. Page Generation -- write complete web page files</tt> </tt>
+<a name="L185"></a><tt class="py-lineno"> 185</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#   2.1. Module Pages</tt> </tt>
+<a name="L186"></a><tt class="py-lineno"> 186</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#   2.2. Class Pages</tt> </tt>
+<a name="L187"></a><tt class="py-lineno"> 187</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#   2.3. Trees Page</tt> </tt>
+<a name="L188"></a><tt class="py-lineno"> 188</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#   2.4. Indices Page</tt> </tt>
+<a name="L189"></a><tt class="py-lineno"> 189</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#   2.5. Help Page</tt> </tt>
+<a name="L190"></a><tt class="py-lineno"> 190</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#   2.6. Frames-based table of contents pages</tt> </tt>
+<a name="L191"></a><tt class="py-lineno"> 191</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#   2.7. Homepage (index.html)</tt> </tt>
+<a name="L192"></a><tt class="py-lineno"> 192</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#   2.8. CSS Stylesheet</tt> </tt>
+<a name="L193"></a><tt class="py-lineno"> 193</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#   2.9. Javascript file</tt> </tt>
+<a name="L194"></a><tt class="py-lineno"> 194</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#   2.10. Graphs</tt> </tt>
+<a name="L195"></a><tt class="py-lineno"> 195</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#   2.11. Images</tt> </tt>
+<a name="L196"></a><tt class="py-lineno"> 196</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#</tt> </tt>
+<a name="L197"></a><tt class="py-lineno"> 197</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># 3. Page Element Generation -- write pieces of a web page file</tt> </tt>
+<a name="L198"></a><tt class="py-lineno"> 198</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#   3.1. Page Header</tt> </tt>
+<a name="L199"></a><tt class="py-lineno"> 199</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#   3.2. Page Footer</tt> </tt>
+<a name="L200"></a><tt class="py-lineno"> 200</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#   3.3. Navigation Bar</tt> </tt>
+<a name="L201"></a><tt class="py-lineno"> 201</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#   3.4. Breadcrumbs</tt> </tt>
+<a name="L202"></a><tt class="py-lineno"> 202</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#   3.5. Summary Tables</tt> </tt>
+<a name="L203"></a><tt class="py-lineno"> 203</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#</tt> </tt>
+<a name="L204"></a><tt class="py-lineno"> 204</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># 4. Helper functions</tt> </tt>
+<a name="L205"></a><tt class="py-lineno"> 205</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="HTMLWriter.__init__"></a><div id="HTMLWriter.__init__-def"><a name="L206"></a><tt class="py-lineno"> 206</tt> <a class="py-toggle" href="#" id="HTMLWriter.__init__-toggle" onclick="return toggle('HTMLWriter.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html.HTMLWriter-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">docinde [...]
+</div><div id="HTMLWriter.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLWriter.__init__-expanded"><a name="L207"></a><tt class="py-lineno"> 207</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L208"></a><tt class="py-lineno"> 208</tt>  <tt class="py-line"><tt class="py-docstring">        Construct a new HTML writer, using the given documentation</tt> </tt>
+<a name="L209"></a><tt class="py-lineno"> 209</tt>  <tt class="py-line"><tt class="py-docstring">        index.</tt> </tt>
+<a name="L210"></a><tt class="py-lineno"> 210</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt>
+<a name="L211"></a><tt class="py-lineno"> 211</tt>  <tt class="py-line"><tt class="py-docstring">        @param docindex: The documentation index.</tt> </tt>
+<a name="L212"></a><tt class="py-lineno"> 212</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt>
+<a name="L213"></a><tt class="py-lineno"> 213</tt>  <tt class="py-line"><tt class="py-docstring">        @type prj_name: C{string}</tt> </tt>
+<a name="L214"></a><tt class="py-lineno"> 214</tt>  <tt class="py-line"><tt class="py-docstring">        @keyword prj_name: The name of the project.  Defaults to</tt> </tt>
+<a name="L215"></a><tt class="py-lineno"> 215</tt>  <tt class="py-line"><tt class="py-docstring">              none.</tt> </tt>
+<a name="L216"></a><tt class="py-lineno"> 216</tt>  <tt class="py-line"><tt class="py-docstring">        @type prj_url: C{string}</tt> </tt>
+<a name="L217"></a><tt class="py-lineno"> 217</tt>  <tt class="py-line"><tt class="py-docstring">        @keyword prj_url: The target for the project hopeage link on</tt> </tt>
+<a name="L218"></a><tt class="py-lineno"> 218</tt>  <tt class="py-line"><tt class="py-docstring">              the navigation bar.  If C{prj_url} is not specified,</tt> </tt>
+<a name="L219"></a><tt class="py-lineno"> 219</tt>  <tt class="py-line"><tt class="py-docstring">              then no hyperlink is created.</tt> </tt>
+<a name="L220"></a><tt class="py-lineno"> 220</tt>  <tt class="py-line"><tt class="py-docstring">        @type prj_link: C{string}</tt> </tt>
+<a name="L221"></a><tt class="py-lineno"> 221</tt>  <tt class="py-line"><tt class="py-docstring">        @keyword prj_link: The label for the project link on the</tt> </tt>
+<a name="L222"></a><tt class="py-lineno"> 222</tt>  <tt class="py-line"><tt class="py-docstring">              navigation bar.  This link can contain arbitrary HTML</tt> </tt>
+<a name="L223"></a><tt class="py-lineno"> 223</tt>  <tt class="py-line"><tt class="py-docstring">              code (e.g. images).  By default, a label is constructed</tt> </tt>
+<a name="L224"></a><tt class="py-lineno"> 224</tt>  <tt class="py-line"><tt class="py-docstring">              from C{prj_name}.</tt> </tt>
+<a name="L225"></a><tt class="py-lineno"> 225</tt>  <tt class="py-line"><tt class="py-docstring">        @type top_page: C{string}</tt> </tt>
+<a name="L226"></a><tt class="py-lineno"> 226</tt>  <tt class="py-line"><tt class="py-docstring">        @keyword top_page: The top page for the documentation.  This</tt> </tt>
+<a name="L227"></a><tt class="py-lineno"> 227</tt>  <tt class="py-line"><tt class="py-docstring">              is the default page shown main frame, when frames are</tt> </tt>
+<a name="L228"></a><tt class="py-lineno"> 228</tt>  <tt class="py-line"><tt class="py-docstring">              enabled.  C{top} can be a URL, the name of a</tt> </tt>
+<a name="L229"></a><tt class="py-lineno"> 229</tt>  <tt class="py-line"><tt class="py-docstring">              module, the name of a class, or one of the special</tt> </tt>
+<a name="L230"></a><tt class="py-lineno"> 230</tt>  <tt class="py-line"><tt class="py-docstring">              strings C{"trees.html"}, C{"indices.html"}, or</tt> </tt>
+<a name="L231"></a><tt class="py-lineno"> 231</tt>  <tt class="py-line"><tt class="py-docstring">              C{"help.html"}.  By default, the top-level package or</tt> </tt>
+<a name="L232"></a><tt class="py-lineno"> 232</tt>  <tt class="py-line"><tt class="py-docstring">              module is used, if there is one; otherwise, C{"trees"}</tt> </tt>
+<a name="L233"></a><tt class="py-lineno"> 233</tt>  <tt class="py-line"><tt class="py-docstring">              is used.</tt> </tt>
+<a name="L234"></a><tt class="py-lineno"> 234</tt>  <tt class="py-line"><tt class="py-docstring">        @type css: C{string}</tt> </tt>
+<a name="L235"></a><tt class="py-lineno"> 235</tt>  <tt class="py-line"><tt class="py-docstring">        @keyword css: The CSS stylesheet file.  If C{css} is a file</tt> </tt>
+<a name="L236"></a><tt class="py-lineno"> 236</tt>  <tt class="py-line"><tt class="py-docstring">              name, then the specified file's conents will be used.</tt> </tt>
+<a name="L237"></a><tt class="py-lineno"> 237</tt>  <tt class="py-line"><tt class="py-docstring">              Otherwise, if C{css} is the name of a CSS stylesheet in</tt> </tt>
+<a name="L238"></a><tt class="py-lineno"> 238</tt>  <tt class="py-line"><tt class="py-docstring">              L{epydoc.docwriter.html_css}, then that stylesheet will</tt> </tt>
+<a name="L239"></a><tt class="py-lineno"> 239</tt>  <tt class="py-line"><tt class="py-docstring">              be used.  Otherwise, an error is reported.  If no stylesheet </tt> </tt>
+<a name="L240"></a><tt class="py-lineno"> 240</tt>  <tt class="py-line"><tt class="py-docstring">              is specified, then the default stylesheet is used.</tt> </tt>
+<a name="L241"></a><tt class="py-lineno"> 241</tt>  <tt class="py-line"><tt class="py-docstring">        @type help_file: C{string}</tt> </tt>
+<a name="L242"></a><tt class="py-lineno"> 242</tt>  <tt class="py-line"><tt class="py-docstring">        @keyword help_file: The name of the help file.  If no help file is</tt> </tt>
+<a name="L243"></a><tt class="py-lineno"> 243</tt>  <tt class="py-line"><tt class="py-docstring">              specified, then the default help file will be used.</tt> </tt>
+<a name="L244"></a><tt class="py-lineno"> 244</tt>  <tt class="py-line"><tt class="py-docstring">        @type show_private: C{boolean}</tt> </tt>
+<a name="L245"></a><tt class="py-lineno"> 245</tt>  <tt class="py-line"><tt class="py-docstring">        @keyword show_private: Whether to create documentation for</tt> </tt>
+<a name="L246"></a><tt class="py-lineno"> 246</tt>  <tt class="py-line"><tt class="py-docstring">            private objects.  By default, private objects are documented.</tt> </tt>
+<a name="L247"></a><tt class="py-lineno"> 247</tt>  <tt class="py-line"><tt class="py-docstring">        @type show_frames: C{boolean})</tt> </tt>
+<a name="L248"></a><tt class="py-lineno"> 248</tt>  <tt class="py-line"><tt class="py-docstring">        @keyword show_frames: Whether to create a frames-based table of</tt> </tt>
+<a name="L249"></a><tt class="py-lineno"> 249</tt>  <tt class="py-line"><tt class="py-docstring">              contents.  By default, it is produced.</tt> </tt>
+<a name="L250"></a><tt class="py-lineno"> 250</tt>  <tt class="py-line"><tt class="py-docstring">        @type show_imports: C{boolean}</tt> </tt>
+<a name="L251"></a><tt class="py-lineno"> 251</tt>  <tt class="py-line"><tt class="py-docstring">        @keyword show_imports: Whether or not to display lists of</tt> </tt>
+<a name="L252"></a><tt class="py-lineno"> 252</tt>  <tt class="py-line"><tt class="py-docstring">              imported functions and classes.  By default, they are</tt> </tt>
+<a name="L253"></a><tt class="py-lineno"> 253</tt>  <tt class="py-line"><tt class="py-docstring">              not shown.</tt> </tt>
+<a name="L254"></a><tt class="py-lineno"> 254</tt>  <tt class="py-line"><tt class="py-docstring">        @type variable_maxlines: C{int}</tt> </tt>
+<a name="L255"></a><tt class="py-lineno"> 255</tt>  <tt class="py-line"><tt class="py-docstring">        @keyword variable_maxlines: The maximum number of lines that</tt> </tt>
+<a name="L256"></a><tt class="py-lineno"> 256</tt>  <tt class="py-line"><tt class="py-docstring">              should be displayed for the value of a variable in the</tt> </tt>
+<a name="L257"></a><tt class="py-lineno"> 257</tt>  <tt class="py-line"><tt class="py-docstring">              variable details section.  By default, 8 lines are</tt> </tt>
+<a name="L258"></a><tt class="py-lineno"> 258</tt>  <tt class="py-line"><tt class="py-docstring">              displayed.</tt> </tt>
+<a name="L259"></a><tt class="py-lineno"> 259</tt>  <tt class="py-line"><tt class="py-docstring">        @type variable_linelength: C{int}</tt> </tt>
+<a name="L260"></a><tt class="py-lineno"> 260</tt>  <tt class="py-line"><tt class="py-docstring">        @keyword variable_linelength: The maximum line length used for</tt> </tt>
+<a name="L261"></a><tt class="py-lineno"> 261</tt>  <tt class="py-line"><tt class="py-docstring">              displaying the values of variables in the variable</tt> </tt>
+<a name="L262"></a><tt class="py-lineno"> 262</tt>  <tt class="py-line"><tt class="py-docstring">              details sections.  If a line is longer than this length,</tt> </tt>
+<a name="L263"></a><tt class="py-lineno"> 263</tt>  <tt class="py-line"><tt class="py-docstring">              then it will be wrapped to the next line.  The default</tt> </tt>
+<a name="L264"></a><tt class="py-lineno"> 264</tt>  <tt class="py-line"><tt class="py-docstring">              line length is 70 characters.</tt> </tt>
+<a name="L265"></a><tt class="py-lineno"> 265</tt>  <tt class="py-line"><tt class="py-docstring">        @type variable_summary_linelength: C{int}</tt> </tt>
+<a name="L266"></a><tt class="py-lineno"> 266</tt>  <tt class="py-line"><tt class="py-docstring">        @keyword variable_summary_linelength: The maximum line length</tt> </tt>
+<a name="L267"></a><tt class="py-lineno"> 267</tt>  <tt class="py-line"><tt class="py-docstring">              used for displaying the values of variables in the summary</tt> </tt>
+<a name="L268"></a><tt class="py-lineno"> 268</tt>  <tt class="py-line"><tt class="py-docstring">              section.  If a line is longer than this length, then it</tt> </tt>
+<a name="L269"></a><tt class="py-lineno"> 269</tt>  <tt class="py-line"><tt class="py-docstring">              will be truncated.  The default is 40 characters.</tt> </tt>
+<a name="L270"></a><tt class="py-lineno"> 270</tt>  <tt class="py-line"><tt class="py-docstring">        @type variable_tooltip_linelength: C{int}</tt> </tt>
+<a name="L271"></a><tt class="py-lineno"> 271</tt>  <tt class="py-line"><tt class="py-docstring">        @keyword variable_tooltip_linelength: The maximum line length</tt> </tt>
+<a name="L272"></a><tt class="py-lineno"> 272</tt>  <tt class="py-line"><tt class="py-docstring">              used for tooltips for the values of variables.  If a</tt> </tt>
+<a name="L273"></a><tt class="py-lineno"> 273</tt>  <tt class="py-line"><tt class="py-docstring">              line is longer than this length, then it will be</tt> </tt>
+<a name="L274"></a><tt class="py-lineno"> 274</tt>  <tt class="py-line"><tt class="py-docstring">              truncated.  The default is 600 characters.</tt> </tt>
+<a name="L275"></a><tt class="py-lineno"> 275</tt>  <tt class="py-line"><tt class="py-docstring">        @type property_function_linelength: C{int}</tt> </tt>
+<a name="L276"></a><tt class="py-lineno"> 276</tt>  <tt class="py-line"><tt class="py-docstring">        @keyword property_function_linelength: The maximum line length</tt> </tt>
+<a name="L277"></a><tt class="py-lineno"> 277</tt>  <tt class="py-line"><tt class="py-docstring">              used to dispaly property functions (C{fget}, C{fset}, and</tt> </tt>
+<a name="L278"></a><tt class="py-lineno"> 278</tt>  <tt class="py-line"><tt class="py-docstring">              C{fdel}) that contain something other than a function</tt> </tt>
+<a name="L279"></a><tt class="py-lineno"> 279</tt>  <tt class="py-line"><tt class="py-docstring">              object.  The default length is 40 characters.</tt> </tt>
+<a name="L280"></a><tt class="py-lineno"> 280</tt>  <tt class="py-line"><tt class="py-docstring">        @type inheritance: C{string}</tt> </tt>
+<a name="L281"></a><tt class="py-lineno"> 281</tt>  <tt class="py-line"><tt class="py-docstring">        @keyword inheritance: How inherited objects should be displayed.</tt> </tt>
+<a name="L282"></a><tt class="py-lineno"> 282</tt>  <tt class="py-line"><tt class="py-docstring">              If C{inheritance='grouped'}, then inherited objects are</tt> </tt>
+<a name="L283"></a><tt class="py-lineno"> 283</tt>  <tt class="py-line"><tt class="py-docstring">              gathered into groups; if C{inheritance='listed'}, then</tt> </tt>
+<a name="L284"></a><tt class="py-lineno"> 284</tt>  <tt class="py-line"><tt class="py-docstring">              inherited objects are listed in a short list at the</tt> </tt>
+<a name="L285"></a><tt class="py-lineno"> 285</tt>  <tt class="py-line"><tt class="py-docstring">              end of their group; if C{inheritance='included'}, then</tt> </tt>
+<a name="L286"></a><tt class="py-lineno"> 286</tt>  <tt class="py-line"><tt class="py-docstring">              inherited objects are mixed in with non-inherited</tt> </tt>
+<a name="L287"></a><tt class="py-lineno"> 287</tt>  <tt class="py-line"><tt class="py-docstring">              objects.  The default is 'grouped'.</tt> </tt>
+<a name="L288"></a><tt class="py-lineno"> 288</tt>  <tt class="py-line"><tt class="py-docstring">        @type include_source_code: C{boolean}</tt> </tt>
+<a name="L289"></a><tt class="py-lineno"> 289</tt>  <tt class="py-line"><tt class="py-docstring">        @keyword include_source_code: If true, then generate colorized</tt> </tt>
+<a name="L290"></a><tt class="py-lineno"> 290</tt>  <tt class="py-line"><tt class="py-docstring">              source code files for each python module.</tt> </tt>
+<a name="L291"></a><tt class="py-lineno"> 291</tt>  <tt class="py-line"><tt class="py-docstring">        @type include_log: C{boolean}</tt> </tt>
+<a name="L292"></a><tt class="py-lineno"> 292</tt>  <tt class="py-line"><tt class="py-docstring">        @keyword include_log: If true, the the footer will include an</tt> </tt>
+<a name="L293"></a><tt class="py-lineno"> 293</tt>  <tt class="py-line"><tt class="py-docstring">              href to the page 'epydoc-log.html'.</tt> </tt>
+<a name="L294"></a><tt class="py-lineno"> 294</tt>  <tt class="py-line"><tt class="py-docstring">        @type src_code_tab_width: C{int}</tt> </tt>
+<a name="L295"></a><tt class="py-lineno"> 295</tt>  <tt class="py-line"><tt class="py-docstring">        @keyword src_code_tab_width: Number of spaces to replace each tab</tt> </tt>
+<a name="L296"></a><tt class="py-lineno"> 296</tt>  <tt class="py-line"><tt class="py-docstring">            with in source code listings.</tt> </tt>
+<a name="L297"></a><tt class="py-lineno"> 297</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L298"></a><tt class="py-lineno"> 298</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">docindex</tt> <tt class="py-op">=</tt> <tt class="py-name">docindex</tt> </tt>
+<a name="L299"></a><tt class="py-lineno"> 299</tt>  <tt class="py-line"> </tt>
+<a name="L300"></a><tt class="py-lineno"> 300</tt>  <tt class="py-line">        <tt class="py-comment"># Process keyword arguments.</tt> </tt>
+<a name="L301"></a><tt class="py-lineno"> 301</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_show_private</tt> <tt class="py-op">=</tt> <tt class="py-name">kwargs</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'show_private'</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L302"></a><tt class="py-lineno"> 302</tt>  <tt class="py-line">        <tt class="py-string">"""Should private docs be included?"""</tt> </tt>
+<a name="L303"></a><tt class="py-lineno"> 303</tt>  <tt class="py-line">         </tt>
+<a name="L304"></a><tt class="py-lineno"> 304</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_prj_name</tt> <tt class="py-op">=</tt> <tt class="py-name">kwargs</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'prj_name'</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+<a name="L305"></a><tt class="py-lineno"> 305</tt>  <tt class="py-line">        <tt class="py-string">"""The project's name (for the project link in the navbar)"""</tt> </tt>
+<a name="L306"></a><tt class="py-lineno"> 306</tt>  <tt class="py-line">         </tt>
+<a name="L307"></a><tt class="py-lineno"> 307</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_prj_url</tt> <tt class="py-op">=</tt> <tt class="py-name">kwargs</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'prj_url'</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+<a name="L308"></a><tt class="py-lineno"> 308</tt>  <tt class="py-line">        <tt class="py-string">"""URL for the project link in the navbar"""</tt> </tt>
+<a name="L309"></a><tt class="py-lineno"> 309</tt>  <tt class="py-line">         </tt>
+<a name="L310"></a><tt class="py-lineno"> 310</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_prj_link</tt> <tt class="py-op">=</tt> <tt class="py-name">kwargs</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'prj_link'</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+<a name="L311"></a><tt class="py-lineno"> 311</tt>  <tt class="py-line">        <tt class="py-string">"""HTML code for the project link in the navbar"""</tt> </tt>
+<a name="L312"></a><tt class="py-lineno"> 312</tt>  <tt class="py-line">         </tt>
+<a name="L313"></a><tt class="py-lineno"> 313</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_top_page</tt> <tt class="py-op">=</tt> <tt class="py-name">kwargs</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'top_page'</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+<a name="L314"></a><tt class="py-lineno"> 314</tt>  <tt class="py-line">        <tt class="py-string">"""The 'main' page"""</tt> </tt>
+<a name="L315"></a><tt class="py-lineno"> 315</tt>  <tt class="py-line"> </tt>
+<a name="L316"></a><tt class="py-lineno"> 316</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_css</tt> <tt class="py-op">=</tt> <tt class="py-name">kwargs</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'css'</tt><tt class="py-op">)</tt> </tt>
+<a name="L317"></a><tt class="py-lineno"> 317</tt>  <tt class="py-line">        <tt class="py-string">"""CSS stylesheet to use"""</tt> </tt>
+<a name="L318"></a><tt class="py-lineno"> 318</tt>  <tt class="py-line">         </tt>
+<a name="L319"></a><tt class="py-lineno"> 319</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_helpfile</tt> <tt class="py-op">=</tt> <tt class="py-name">kwargs</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'help_file'</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+<a name="L320"></a><tt class="py-lineno"> 320</tt>  <tt class="py-line">        <tt class="py-string">"""Filename of file to extract help contents from"""</tt> </tt>
+<a name="L321"></a><tt class="py-lineno"> 321</tt>  <tt class="py-line">         </tt>
+<a name="L322"></a><tt class="py-lineno"> 322</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_frames_index</tt> <tt class="py-op">=</tt> <tt class="py-name">kwargs</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'show_frames'</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L323"></a><tt class="py-lineno"> 323</tt>  <tt class="py-line">        <tt class="py-string">"""Should a frames index be created?"""</tt> </tt>
+<a name="L324"></a><tt class="py-lineno"> 324</tt>  <tt class="py-line">         </tt>
+<a name="L325"></a><tt class="py-lineno"> 325</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_show_imports</tt> <tt class="py-op">=</tt> <tt class="py-name">kwargs</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'show_imports'</tt><tt class="py-op">,</tt> <tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
+<a name="L326"></a><tt class="py-lineno"> 326</tt>  <tt class="py-line">        <tt class="py-string">"""Should imports be listed?"""</tt> </tt>
+<a name="L327"></a><tt class="py-lineno"> 327</tt>  <tt class="py-line">         </tt>
+<a name="L328"></a><tt class="py-lineno"> 328</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_propfunc_linelen</tt> <tt class="py-op">=</tt> <tt class="py-name">kwargs</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'property_function_linelength'</tt><tt class="py-op">,</tt> <tt class="py-number">40</tt><tt class="py-op">)</tt> </tt>
+<a name="L329"></a><tt class="py-lineno"> 329</tt>  <tt class="py-line">        <tt class="py-string">"""[XXX] Not used!"""</tt> </tt>
+<a name="L330"></a><tt class="py-lineno"> 330</tt>  <tt class="py-line">         </tt>
+<a name="L331"></a><tt class="py-lineno"> 331</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_variable_maxlines</tt> <tt class="py-op">=</tt> <tt class="py-name">kwargs</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'variable_maxlines'</tt><tt class="py-op">,</tt> <tt class="py-number">8</tt><tt class="py-op">)</tt> </tt>
+<a name="L332"></a><tt class="py-lineno"> 332</tt>  <tt class="py-line">        <tt class="py-string">"""Max lines for variable values"""</tt> </tt>
+<a name="L333"></a><tt class="py-lineno"> 333</tt>  <tt class="py-line">         </tt>
+<a name="L334"></a><tt class="py-lineno"> 334</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_variable_linelen</tt> <tt class="py-op">=</tt> <tt class="py-name">kwargs</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'variable_linelength'</tt><tt class="py-op">,</tt> <tt class="py-number">70</tt><tt class="py-op">)</tt> </tt>
+<a name="L335"></a><tt class="py-lineno"> 335</tt>  <tt class="py-line">        <tt class="py-string">"""Max line length for variable values"""</tt> </tt>
+<a name="L336"></a><tt class="py-lineno"> 336</tt>  <tt class="py-line">         </tt>
+<a name="L337"></a><tt class="py-lineno"> 337</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_variable_summary_linelen</tt> <tt class="py-op">=</tt> \ </tt>
+<a name="L338"></a><tt class="py-lineno"> 338</tt>  <tt class="py-line">                         <tt class="py-name">kwargs</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'variable_summary_linelength'</tt><tt class="py-op">,</tt> <tt class="py-number">65</tt><tt class="py-op">)</tt> </tt>
+<a name="L339"></a><tt class="py-lineno"> 339</tt>  <tt class="py-line">        <tt class="py-string">"""Max length for variable value summaries"""</tt> </tt>
+<a name="L340"></a><tt class="py-lineno"> 340</tt>  <tt class="py-line">         </tt>
+<a name="L341"></a><tt class="py-lineno"> 341</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_variable_tooltip_linelen</tt> <tt class="py-op">=</tt> \ </tt>
+<a name="L342"></a><tt class="py-lineno"> 342</tt>  <tt class="py-line">                         <tt class="py-name">kwargs</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'variable_tooltip_linelength'</tt><tt class="py-op">,</tt> <tt class="py-number">600</tt><tt class="py-op">)</tt> </tt>
+<a name="L343"></a><tt class="py-lineno"> 343</tt>  <tt class="py-line">        <tt class="py-string">"""Max length for variable tooltips"""</tt> </tt>
+<a name="L344"></a><tt class="py-lineno"> 344</tt>  <tt class="py-line">         </tt>
+<a name="L345"></a><tt class="py-lineno"> 345</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_inheritance</tt> <tt class="py-op">=</tt> <tt class="py-name">kwargs</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'inheritance'</tt><tt class="py-op">,</tt> <tt class="py-string">'listed'</tt><tt class="py-op">)</tt> </tt>
+<a name="L346"></a><tt class="py-lineno"> 346</tt>  <tt class="py-line">        <tt class="py-string">"""How should inheritance be displayed?  'listed', 'included',</tt> </tt>
+<a name="L347"></a><tt class="py-lineno"> 347</tt>  <tt class="py-line"><tt class="py-string">        or 'grouped'"""</tt> </tt>
+<a name="L348"></a><tt class="py-lineno"> 348</tt>  <tt class="py-line"> </tt>
+<a name="L349"></a><tt class="py-lineno"> 349</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_incl_sourcecode</tt> <tt class="py-op">=</tt> <tt class="py-name">kwargs</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'include_source_code'</tt><tt class="py-op">,</tt> <tt class="py-name">True</tt><tt class="py-op">)</tt> </tt>
+<a name="L350"></a><tt class="py-lineno"> 350</tt>  <tt class="py-line">        <tt class="py-string">"""Should pages be generated for source code of modules?"""</tt> </tt>
+<a name="L351"></a><tt class="py-lineno"> 351</tt>  <tt class="py-line"> </tt>
+<a name="L352"></a><tt class="py-lineno"> 352</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_mark_docstrings</tt> <tt class="py-op">=</tt> <tt class="py-name">kwargs</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'mark_docstrings'</tt><tt class="py-op">,</tt> <tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
+<a name="L353"></a><tt class="py-lineno"> 353</tt>  <tt class="py-line">        <tt class="py-string">"""Wrap <span class='docstring'>...</span> around docstrings?"""</tt> </tt>
+<a name="L354"></a><tt class="py-lineno"> 354</tt>  <tt class="py-line"> </tt>
+<a name="L355"></a><tt class="py-lineno"> 355</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_graph_types</tt> <tt class="py-op">=</tt> <tt class="py-name">kwargs</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'graphs'</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt>< [...]
+<a name="L356"></a><tt class="py-lineno"> 356</tt>  <tt class="py-line">        <tt class="py-string">"""Graphs that we should include in our output."""</tt> </tt>
+<a name="L357"></a><tt class="py-lineno"> 357</tt>  <tt class="py-line"> </tt>
+<a name="L358"></a><tt class="py-lineno"> 358</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_include_log</tt> <tt class="py-op">=</tt> <tt class="py-name">kwargs</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'include_log'</tt><tt class="py-op">,</tt> <tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
+<a name="L359"></a><tt class="py-lineno"> 359</tt>  <tt class="py-line">        <tt class="py-string">"""Are we generating an HTML log page?"""</tt> </tt>
+<a name="L360"></a><tt class="py-lineno"> 360</tt>  <tt class="py-line"> </tt>
+<a name="L361"></a><tt class="py-lineno"> 361</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_src_code_tab_width</tt> <tt class="py-op">=</tt> <tt class="py-name">kwargs</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'src_code_tab_width'</tt><tt class="py-op">,</tt> <tt class="py-number">8</tt><tt class="py-op">)</tt> </tt>
+<a name="L362"></a><tt class="py-lineno"> 362</tt>  <tt class="py-line">        <tt class="py-string">"""Number of spaces to replace each tab with in source code</tt> </tt>
+<a name="L363"></a><tt class="py-lineno"> 363</tt>  <tt class="py-line"><tt class="py-string">        listings."""</tt> </tt>
+<a name="L364"></a><tt class="py-lineno"> 364</tt>  <tt class="py-line">         </tt>
+<a name="L365"></a><tt class="py-lineno"> 365</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_callgraph_cache</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L366"></a><tt class="py-lineno"> 366</tt>  <tt class="py-line">        <tt class="py-string">"""Map the callgraph L{uid<DotGraph.uid>} to their HTML</tt> </tt>
+<a name="L367"></a><tt class="py-lineno"> 367</tt>  <tt class="py-line"><tt class="py-string">        representation."""</tt> </tt>
+<a name="L368"></a><tt class="py-lineno"> 368</tt>  <tt class="py-line"> </tt>
+<a name="L369"></a><tt class="py-lineno"> 369</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_redundant_details</tt> <tt class="py-op">=</tt> <tt class="py-name">kwargs</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'redundant_details'</tt><tt class="py-op">,</tt> <tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
+<a name="L370"></a><tt class="py-lineno"> 370</tt>  <tt class="py-line">        <tt class="py-string">"""If true, then include objects in the details list even if all</tt> </tt>
+<a name="L371"></a><tt class="py-lineno"> 371</tt>  <tt class="py-line"><tt class="py-string">        info about them is already provided by the summary table."""</tt> </tt>
+<a name="L372"></a><tt class="py-lineno"> 372</tt>  <tt class="py-line"> </tt>
+<a name="L373"></a><tt class="py-lineno"> 373</tt>  <tt class="py-line">        <tt class="py-comment"># For use with select_variables():</tt> </tt>
+<a name="L374"></a><tt class="py-lineno"> 374</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_show_private</tt><tt class="py-op">:</tt> </tt>
+<a name="L375"></a><tt class="py-lineno"> 375</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_public_filter</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L376"></a><tt class="py-lineno"> 376</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L377"></a><tt class="py-lineno"> 377</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_public_filter</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L378"></a><tt class="py-lineno"> 378</tt>  <tt class="py-line">         </tt>
+<a name="L379"></a><tt class="py-lineno"> 379</tt>  <tt class="py-line">        <tt class="py-comment"># Make sure inheritance has a sane value.</tt> </tt>
+<a name="L380"></a><tt class="py-lineno"> 380</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_inheritance</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-string">'listed'</tt><tt class="py-op">,</tt> <tt class="py-string">'included'</tt><tt class="py-op">,</tt> <tt class="py-string">'grouped'</tt><tt class="py-op" [...]
+<a name="L381"></a><tt class="py-lineno"> 381</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">,</tt> <tt class="py-string">'Bad value for inheritance'</tt> </tt>
+<a name="L382"></a><tt class="py-lineno"> 382</tt>  <tt class="py-line"> </tt>
+<a name="L383"></a><tt class="py-lineno"> 383</tt>  <tt class="py-line">        <tt class="py-comment"># Create the project homepage link, if it was not specified.</tt> </tt>
+<a name="L384"></a><tt class="py-lineno"> 384</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_prj_name</tt> <tt class="py-keyword">or</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_prj_url</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt cl [...]
+<a name="L385"></a><tt class="py-lineno"> 385</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_prj_link</tt> <tt class="py-op">=</tt> <tt id="link-48" class="py-name"><a title="epydoc.util.plaintext_to_html" class="py-name" href="#" onclick="return doclink('link-48', 'plaintext_to_html', 'link-32');">plaintext_to_html</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_prj [...]
+<a name="L386"></a><tt class="py-lineno"> 386</tt>  <tt class="py-line">                                               <tt class="py-string">'Project Homepage'</tt><tt class="py-op">)</tt> </tt>
+<a name="L387"></a><tt class="py-lineno"> 387</tt>  <tt class="py-line"> </tt>
+<a name="L388"></a><tt class="py-lineno"> 388</tt>  <tt class="py-line">        <tt class="py-comment"># Add a hyperlink to _prj_url, if _prj_link doesn't already</tt> </tt>
+<a name="L389"></a><tt class="py-lineno"> 389</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># contain any hyperlinks.</tt> </tt>
+<a name="L390"></a><tt class="py-lineno"> 390</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_prj_link</tt> <tt class="py-keyword">and</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_prj_url</tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L391"></a><tt class="py-lineno"> 391</tt>  <tt class="py-line">            <tt class="py-keyword">not</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">search</tt><tt class="py-op">(</tt><tt class="py-string">r'<a[^>]*\shref'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_prj_link</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L392"></a><tt class="py-lineno"> 392</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_prj_link</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">'<a class="navbar" target="_top" href="'</tt><tt class="py-op">+</tt> </tt>
+<a name="L393"></a><tt class="py-lineno"> 393</tt>  <tt class="py-line">                              <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_prj_url</tt><tt class="py-op">+</tt><tt class="py-string">'">'</tt><tt class="py-op">+</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_prj_link</tt><tt class="py-op">+</tt><tt class="py-string">'</a>'</tt><tt class="py-op">)</tt> </tt>
+<a name="L394"></a><tt class="py-lineno"> 394</tt>  <tt class="py-line"> </tt>
+<a name="L395"></a><tt class="py-lineno"> 395</tt>  <tt class="py-line">        <tt class="py-comment"># Precompute lists & sets of APIDoc objects that we're</tt> </tt>
+<a name="L396"></a><tt class="py-lineno"> 396</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># interested in.</tt> </tt>
+<a name="L397"></a><tt class="py-lineno"> 397</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">valdocs</tt> <tt class="py-op">=</tt> <tt class="py-name">valdocs</tt> <tt class="py-op">=</tt> <tt id="link-49" class="py-name" targets="Function epydoc.compat.sorted()=epydoc.compat-module.html#sorted"><a title="epydoc.compat.sorted" class="py-name" href="#" onclick="return doclink('link-49', 'sorted', 'link [...]
+epydoc.apidoc.reachable_valdocs" class="py-name" href="#" onclick="return doclink('link-50', 'reachable_valdocs', 'link-50');">reachable_valdocs</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L398"></a><tt class="py-lineno"> 398</tt>  <tt class="py-line">            <tt id="link-51" class="py-name" targets="Variable epydoc.apidoc.ModuleDoc.imports=epydoc.apidoc.ModuleDoc-class.html#imports"><a title="epydoc.apidoc.ModuleDoc.imports" class="py-name" href="#" onclick="return doclink('link-51', 'imports', 'link-51');">imports</a></tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> <tt class="py-name">packages</tt><tt class="py-op">=</tt><t [...]
+<a name="L399"></a><tt class="py-lineno"> 399</tt>  <tt class="py-line">            <tt id="link-54" class="py-name" targets="Variable epydoc.apidoc.ClassDoc.subclasses=epydoc.apidoc.ClassDoc-class.html#subclasses"><a title="epydoc.apidoc.ClassDoc.subclasses" class="py-name" href="#" onclick="return doclink('link-54', 'subclasses', 'link-54');">subclasses</a></tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> <tt class="py-name">private</tt><tt class="py-o [...]
+<a name="L400"></a><tt class="py-lineno"> 400</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">module_list</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">d</tt> <tt class="py-keyword">for</tt> <tt class="py-name">d</tt> <tt class="py-keyword">in</tt> <tt class="py-name">valdocs</tt> <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">d</tt><tt cla [...]
+<a name="L401"></a><tt class="py-lineno"> 401</tt>  <tt class="py-line">        <tt class="py-string">"""The list of L{ModuleDoc}s for the documented modules."""</tt> </tt>
+<a name="L402"></a><tt class="py-lineno"> 402</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">module_set</tt> <tt class="py-op">=</tt> <tt class="py-name">set</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">module_list</tt><tt class="py-op">)</tt> </tt>
+<a name="L403"></a><tt class="py-lineno"> 403</tt>  <tt class="py-line">        <tt class="py-string">"""The set of L{ModuleDoc}s for the documented modules."""</tt> </tt>
+<a name="L404"></a><tt class="py-lineno"> 404</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">class_list</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">d</tt> <tt class="py-keyword">for</tt> <tt class="py-name">d</tt> <tt class="py-keyword">in</tt> <tt class="py-name">valdocs</tt> <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">d</tt><tt clas [...]
+<a name="L405"></a><tt class="py-lineno"> 405</tt>  <tt class="py-line">        <tt class="py-string">"""The list of L{ClassDoc}s for the documented classes."""</tt> </tt>
+<a name="L406"></a><tt class="py-lineno"> 406</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">class_set</tt> <tt class="py-op">=</tt> <tt class="py-name">set</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">class_list</tt><tt class="py-op">)</tt> </tt>
+<a name="L407"></a><tt class="py-lineno"> 407</tt>  <tt class="py-line">        <tt class="py-string">"""The set of L{ClassDoc}s for the documented classes."""</tt> </tt>
+<a name="L408"></a><tt class="py-lineno"> 408</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">routine_list</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">d</tt> <tt class="py-keyword">for</tt> <tt class="py-name">d</tt> <tt class="py-keyword">in</tt> <tt class="py-name">valdocs</tt> <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">d</tt><tt cl [...]
+<a name="L409"></a><tt class="py-lineno"> 409</tt>  <tt class="py-line">        <tt class="py-string">"""The list of L{RoutineDoc}s for the documented routines."""</tt> </tt>
+<a name="L410"></a><tt class="py-lineno"> 410</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">indexed_docs</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L411"></a><tt class="py-lineno"> 411</tt>  <tt class="py-line">        <tt class="py-string">"""The list of L{APIDoc}s for variables and values that should</tt> </tt>
+<a name="L412"></a><tt class="py-lineno"> 412</tt>  <tt class="py-line"><tt class="py-string">        be included in the index."""</tt> </tt>
+<a name="L413"></a><tt class="py-lineno"> 413</tt>  <tt class="py-line"> </tt>
+<a name="L414"></a><tt class="py-lineno"> 414</tt>  <tt class="py-line">        <tt class="py-comment"># URL for 'trees' page</tt> </tt>
+<a name="L415"></a><tt class="py-lineno"> 415</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">module_list</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_trees_url</tt> <tt class="py-op">=</tt> <tt class="py-string">'module-tree.html'</tt> </tt>
+<a name="L416"></a><tt class="py-lineno"> 416</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_trees_url</tt> <tt class="py-op">=</tt> <tt class="py-string">'class-tree.html'</tt> </tt>
+<a name="L417"></a><tt class="py-lineno"> 417</tt>  <tt class="py-line"> </tt>
+<a name="L418"></a><tt class="py-lineno"> 418</tt>  <tt class="py-line">        <tt class="py-comment"># Construct the value for self.indexed_docs.</tt> </tt>
+<a name="L419"></a><tt class="py-lineno"> 419</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">indexed_docs</tt> <tt class="py-op">+=</tt> <tt class="py-op">[</tt><tt class="py-name">d</tt> <tt class="py-keyword">for</tt> <tt class="py-name">d</tt> <tt class="py-keyword">in</tt> <tt class="py-name">valdocs</tt> </tt>
+<a name="L420"></a><tt class="py-lineno"> 420</tt>  <tt class="py-line">                              <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">d</tt><tt class="py-op">,</tt> <tt id="link-58" class="py-name" targets="Class epydoc.apidoc.GenericValueDoc=epydoc.apidoc.GenericValueDoc-class.html"><a title="epydoc.apidoc.GenericValueDoc" class="py-name" href="#" onclick="return doclink('link-5 [...]
+<a name="L421"></a><tt class="py-lineno"> 421</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">valdocs</tt><tt class="py-op">:</tt> </tt>
+<a name="L422"></a><tt class="py-lineno"> 422</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt id="link-59" class="py-name" targets="Class epydoc.apidoc.NamespaceDoc=epydoc.apidoc.NamespaceDoc-class.html"><a title="epydoc.apidoc.NamespaceDoc" class="py-name" href="#" onclick="return doclink('link-59', 'NamespaceDoc', 'link-59');">NamespaceDoc</a></tt><tt [...]
+<a name="L423"></a><tt class="py-lineno"> 423</tt>  <tt class="py-line">                <tt class="py-comment"># add any vars with generic values; but don't include</tt> </tt>
+<a name="L424"></a><tt class="py-lineno"> 424</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-comment"># inherited vars.</tt> </tt>
+<a name="L425"></a><tt class="py-lineno"> 425</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">indexed_docs</tt> <tt class="py-op">+=</tt> <tt class="py-op">[</tt><tt class="py-name">d</tt> <tt class="py-keyword">for</tt> <tt class="py-name">d</tt> <tt class="py-keyword">in</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-60" class="py-name" targets="Variable epydoc.apidoc.N [...]
+<a name="L426"></a><tt class="py-lineno"> 426</tt>  <tt class="py-line">                                      <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">d</tt><tt class="py-op">.</tt><tt id="link-61" class="py-name" targets="Variable epydoc.apidoc.VariableDoc.value=epydoc.apidoc.VariableDoc-class.html#value"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-61', 'value', 'link-61');">value</a></tt><tt cla [...]
+<a name="L427"></a><tt class="py-lineno"> 427</tt>  <tt class="py-line">                                      <tt class="py-keyword">and</tt> <tt class="py-name">d</tt><tt class="py-op">.</tt><tt id="link-63" class="py-name" targets="Method epydoc.apidoc.DocIndex.container()=epydoc.apidoc.DocIndex-class.html#container,Method epydoc.apidoc.DottedName.container()=epydoc.apidoc.DottedName-class.html#container,Variable epydoc.apidoc.VariableDoc.container=epydoc.apidoc.VariableDoc-class.html# [...]
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-63', 'container', 'link-63');">container</a></tt> <tt class="py-op">==</tt> <tt class="py-name">doc</tt><tt class="py-op">]</tt> </tt>
+<a name="L428"></a><tt class="py-lineno"> 428</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">indexed_docs</tt><tt class="py-op">.</tt><tt class="py-name">sort</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L429"></a><tt class="py-lineno"> 429</tt>  <tt class="py-line"> </tt>
+<a name="L430"></a><tt class="py-lineno"> 430</tt>  <tt class="py-line">        <tt class="py-comment"># Figure out the url for the top page.</tt> </tt>
+<a name="L431"></a><tt class="py-lineno"> 431</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_top_page_url</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-64" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter._find_top_page()=epydoc.docwriter.html.HTMLWriter-class.html#_find_top_page"><a title="epydoc.docwriter.html.HTMLWriter._find_top_pa [...]
+<a name="L432"></a><tt class="py-lineno"> 432</tt>  <tt class="py-line"> </tt>
+<a name="L433"></a><tt class="py-lineno"> 433</tt>  <tt class="py-line">        <tt class="py-comment"># Decide whether or not to split the identifier index.</tt> </tt>
+<a name="L434"></a><tt class="py-lineno"> 434</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_split_ident_index</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">indexed_docs</tt><tt class="py-op">)</tt> <tt class="py-op">>=</tt> </tt>
+<a name="L435"></a><tt class="py-lineno"> 435</tt>  <tt class="py-line">                                   <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-65" class="py-name" targets="Variable epydoc.docwriter.html.HTMLWriter.SPLIT_IDENT_INDEX_SIZE=epydoc.docwriter.html.HTMLWriter-class.html#SPLIT_IDENT_INDEX_SIZE"><a title="epydoc.docwriter.html.HTMLWriter.SPLIT_IDENT_INDEX_SIZE" class="py-name" href="#" onclick="return doclink('link-65', 'SPLIT_IDENT_INDEX_SIZE', 'lin [...]
+<a name="L436"></a><tt class="py-lineno"> 436</tt>  <tt class="py-line">         </tt>
+<a name="L437"></a><tt class="py-lineno"> 437</tt>  <tt class="py-line">        <tt class="py-comment"># Figure out how many output files there will be (for progress</tt> </tt>
+<a name="L438"></a><tt class="py-lineno"> 438</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># reporting).</tt> </tt>
+<a name="L439"></a><tt class="py-lineno"> 439</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">modules_with_sourcecode</tt> <tt class="py-op">=</tt> <tt class="py-name">set</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L440"></a><tt class="py-lineno"> 440</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">module_list</tt><tt class="py-op">:</tt> </tt>
+<a name="L441"></a><tt class="py-lineno"> 441</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt id="link-66" class="py-name"><a title="epydoc.apidoc.ModuleDoc" class="py-name" href="#" onclick="return doclink('link-66', 'ModuleDoc', 'link-55');">ModuleDoc</a></tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt id="link-67" class="py-name"><a  [...]
+<a name="L442"></a><tt class="py-lineno"> 442</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">modules_with_sourcecode</tt><tt class="py-op">.</tt><tt class="py-name">add</tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">)</tt> </tt>
+<a name="L443"></a><tt class="py-lineno"> 443</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_num_files</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">class_list</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt [...]
+<a name="L444"></a><tt class="py-lineno"> 444</tt>  <tt class="py-line">                           <tt class="py-number">10</tt> <tt class="py-op">+</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-69" class="py-name" targets="Variable epydoc.docwriter.html.HTMLWriter.METADATA_INDICES=epydoc.docwriter.html.HTMLWriter-class.html#METADATA_INDICES"><a title="epydoc.docwriter.html.HTMLWriter.METADATA_INDICES" class="py [...]
+<a name="L445"></a><tt class="py-lineno"> 445</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_frames_index</tt><tt class="py-op">:</tt> </tt>
+<a name="L446"></a><tt class="py-lineno"> 446</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_num_files</tt> <tt class="py-op">+=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">module_list</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-number">3</tt> </tt>
+<a name="L447"></a><tt class="py-lineno"> 447</tt>  <tt class="py-line"> </tt>
+<a name="L448"></a><tt class="py-lineno"> 448</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_incl_sourcecode</tt><tt class="py-op">:</tt> </tt>
+<a name="L449"></a><tt class="py-lineno"> 449</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_num_files</tt> <tt class="py-op">+=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">modules_with_sourcecode</tt><tt class="py-op">)</tt> </tt>
+<a name="L450"></a><tt class="py-lineno"> 450</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_split_ident_index</tt><tt class="py-op">:</tt> </tt>
+<a name="L451"></a><tt class="py-lineno"> 451</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_num_files</tt> <tt class="py-op">+=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-70" class="py-name" targets="Variable epydoc.docwriter.html.HTMLWriter.LETTERS=epydoc.docwriter.html.HTMLWriter-class.html#LETTERS"><a title="epydoc.docwriter.html.HTMLWriter. [...]
+</div><a name="L452"></a><tt class="py-lineno"> 452</tt>  <tt class="py-line">             </tt>
+<a name="HTMLWriter._find_top_page"></a><div id="HTMLWriter._find_top_page-def"><a name="L453"></a><tt class="py-lineno"> 453</tt> <a class="py-toggle" href="#" id="HTMLWriter._find_top_page-toggle" onclick="return toggle('HTMLWriter._find_top_page');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html.HTMLWriter-class.html#_find_top_page">_find_top_page</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op" [...]
+</div><div id="HTMLWriter._find_top_page-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLWriter._find_top_page-expanded"><a name="L454"></a><tt class="py-lineno"> 454</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L455"></a><tt class="py-lineno"> 455</tt>  <tt class="py-line"><tt class="py-docstring">        Find the top page for the API documentation.  This page is</tt> </tt>
+<a name="L456"></a><tt class="py-lineno"> 456</tt>  <tt class="py-line"><tt class="py-docstring">        used as the default page shown in the main frame, when frames</tt> </tt>
+<a name="L457"></a><tt class="py-lineno"> 457</tt>  <tt class="py-line"><tt class="py-docstring">        are used.  When frames are not used, this page is copied to </tt> </tt>
+<a name="L458"></a><tt class="py-lineno"> 458</tt>  <tt class="py-line"><tt class="py-docstring">        C{index.html}.</tt> </tt>
+<a name="L459"></a><tt class="py-lineno"> 459</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L460"></a><tt class="py-lineno"> 460</tt>  <tt class="py-line"><tt class="py-docstring">        @param pagename: The name of the page, as specified by the</tt> </tt>
+<a name="L461"></a><tt class="py-lineno"> 461</tt>  <tt class="py-line"><tt class="py-docstring">            keyword argument C{top} to the constructor.</tt> </tt>
+<a name="L462"></a><tt class="py-lineno"> 462</tt>  <tt class="py-line"><tt class="py-docstring">        @type pagename: C{string}</tt> </tt>
+<a name="L463"></a><tt class="py-lineno"> 463</tt>  <tt class="py-line"><tt class="py-docstring">        @return: The URL of the top page.</tt> </tt>
+<a name="L464"></a><tt class="py-lineno"> 464</tt>  <tt class="py-line"><tt class="py-docstring">        @rtype: C{string}</tt> </tt>
+<a name="L465"></a><tt class="py-lineno"> 465</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L466"></a><tt class="py-lineno"> 466</tt>  <tt class="py-line">        <tt class="py-comment"># If a page name was specified, then we need to figure out</tt> </tt>
+<a name="L467"></a><tt class="py-lineno"> 467</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># what it points to.</tt> </tt>
+<a name="L468"></a><tt class="py-lineno"> 468</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">pagename</tt><tt class="py-op">:</tt> </tt>
+<a name="L469"></a><tt class="py-lineno"> 469</tt>  <tt class="py-line">            <tt class="py-comment"># If it's a URL, then use it directly.</tt> </tt>
+<a name="L470"></a><tt class="py-lineno"> 470</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt class="py-name">pagename</tt><tt class="py-op">.</tt><tt class="py-name">lower</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">startswith</tt><tt class="py-op">(</tt><tt class="py-string">'http:'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L471"></a><tt class="py-lineno"> 471</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">pagename</tt> </tt>
+<a name="L472"></a><tt class="py-lineno"> 472</tt>  <tt class="py-line"> </tt>
+<a name="L473"></a><tt class="py-lineno"> 473</tt>  <tt class="py-line">            <tt class="py-comment"># If it's an object, then use that object's page.</tt> </tt>
+<a name="L474"></a><tt class="py-lineno"> 474</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L475"></a><tt class="py-lineno"> 475</tt>  <tt class="py-line">                <tt class="py-name">doc</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">docindex</tt><tt class="py-op">.</tt><tt id="link-71" class="py-name" targets="Method epydoc.apidoc.DocIndex.get_valdoc()=epydoc.apidoc.DocIndex-class.html#get_valdoc"><a title="epydoc.apidoc.DocIndex.get_valdoc" class="py-name" href="#" onclick="return doclink('link-71', 'get [...]
+<a name="L476"></a><tt class="py-lineno"> 476</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-72" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.url()=epydoc.docwriter.html.HTMLWriter-class.html#url"><a title="epydoc.docwriter.html.HTMLWriter.url" class="py-name" href="#" onclick="return doclink('link-72', 'url', 'link-72');">url</a></tt><tt class="py-op">(</tt><tt class="py-n [...]
+<a name="L477"></a><tt class="py-lineno"> 477</tt>  <tt class="py-line">            <tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt>
+<a name="L478"></a><tt class="py-lineno"> 478</tt>  <tt class="py-line">                <tt class="py-keyword">pass</tt> </tt>
+<a name="L479"></a><tt class="py-lineno"> 479</tt>  <tt class="py-line"> </tt>
+<a name="L480"></a><tt class="py-lineno"> 480</tt>  <tt class="py-line">            <tt class="py-comment"># Otherwise, give up.</tt> </tt>
+<a name="L481"></a><tt class="py-lineno"> 481</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt id="link-73" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-73', 'log', 'link-29');">log</a></tt><tt class="py-op">.</tt><tt id="link-74" class="py-name" targets="Method epydoc.checker.DocChecker.warning()=epydoc.checker.DocChecker-class.html#warning,Function epydoc.log.warning()=epydoc.log-module.html#warning"><a title="epydoc.checker.DocChecker.warning
+epydoc.log.warning" class="py-name" href="#" onclick="return doclink('link-74', 'warning', 'link-74');">warning</a></tt><tt class="py-op">(</tt><tt class="py-string">'Could not find top page %r; using %s '</tt> </tt>
+<a name="L482"></a><tt class="py-lineno"> 482</tt>  <tt class="py-line">                        <tt class="py-string">'instead'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">pagename</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_trees_url</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L483"></a><tt class="py-lineno"> 483</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_trees_url</tt> </tt>
+<a name="L484"></a><tt class="py-lineno"> 484</tt>  <tt class="py-line"> </tt>
+<a name="L485"></a><tt class="py-lineno"> 485</tt>  <tt class="py-line">        <tt class="py-comment"># If no page name was specified, then try to choose one</tt> </tt>
+<a name="L486"></a><tt class="py-lineno"> 486</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># automatically.</tt> </tt>
+<a name="L487"></a><tt class="py-lineno"> 487</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L488"></a><tt class="py-lineno"> 488</tt>  <tt class="py-line">            <tt class="py-name">root</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">val_doc</tt> <tt class="py-keyword">for</tt> <tt class="py-name">val_doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">docindex</tt><tt class="py-op">.</tt><tt class="py-name">root</tt> </tt>
+<a name="L489"></a><tt class="py-lineno"> 489</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">val_doc</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt id="link-75" class="py-name"><a title="epydoc.apidoc.ClassDoc" class="py-name" href="#" onclick="return doclink('link-75', 'ClassDoc', 'link-56');">ClassDoc</a></tt><tt class="py-op">,</tt> <tt id="link-76" class="py-name"><a [...]
+<a name="L490"></a><tt class="py-lineno"> 490</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">root</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L491"></a><tt class="py-lineno"> 491</tt>  <tt class="py-line">                <tt class="py-comment"># No docs??  Try the trees page.</tt> </tt>
+<a name="L492"></a><tt class="py-lineno"> 492</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_trees_url</tt> </tt>
+<a name="L493"></a><tt class="py-lineno"> 493</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">root</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L494"></a><tt class="py-lineno"> 494</tt>  <tt class="py-line">                <tt class="py-comment"># One item in the root; use that.</tt> </tt>
+<a name="L495"></a><tt class="py-lineno"> 495</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-77" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.url" class="py-name" href="#" onclick="return doclink('link-77', 'url', 'link-72');">url</a></tt><tt class="py-op">(</tt><tt class="py-name">root</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class= [...]
+<a name="L496"></a><tt class="py-lineno"> 496</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L497"></a><tt class="py-lineno"> 497</tt>  <tt class="py-line">                <tt class="py-comment"># Multiple root items; if they're all in one package,</tt> </tt>
+<a name="L498"></a><tt class="py-lineno"> 498</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-comment"># then use that.  Otherwise, use self._trees_url</tt> </tt>
+<a name="L499"></a><tt class="py-lineno"> 499</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-name">root</tt> <tt class="py-op">=</tt> <tt id="link-78" class="py-name"><a title="epydoc.compat.sorted" class="py-name" href="#" onclick="return doclink('link-78', 'sorted', 'link-49');">sorted</a></tt><tt class="py-op">(</tt><tt class="py-name">root</tt><tt class="py-op">,</tt> <tt id="link-79" class="py-name" targets="Variable epydoc.cli.key=epydoc.cli-mod [...]
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-82', 'canonical_name', 'link-82');">canonical_name</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L500"></a><tt class="py-lineno"> 500</tt>  <tt class="py-line">                <tt class="py-name">top</tt> <tt class="py-op">=</tt> <tt class="py-name">root</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L501"></a><tt class="py-lineno"> 501</tt>  <tt class="py-line">                <tt class="py-keyword">for</tt> <tt class="py-name">doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">root</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L502"></a><tt class="py-lineno"> 502</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">top</tt><tt class="py-op">.</tt><tt id="link-83" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-83', 'canonical_name', 'link-82');">canonical_name</a></tt><tt class="py-op">.</tt><tt id="link-84" class="py-name" targets="Method epydoc.apidoc.DottedName.dominates()=epydoc.apidoc.DottedName-class.html#dominates"><a title="epydoc.apidoc.DottedName.dominates" class="py-name" href="#" onclick="return doclink('link-84', 'dominates', 'link-84');">dominates</a></tt><tt class="py-op">(</tt><tt c [...]
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-85', 'canonical_name', 'link-82');">canonical_name</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L503"></a><tt class="py-lineno"> 503</tt>  <tt class="py-line">                        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_trees_url</tt> </tt>
+<a name="L504"></a><tt class="py-lineno"> 504</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L505"></a><tt class="py-lineno"> 505</tt>  <tt class="py-line">                    <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-86" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.url" class="py-name" href="#" onclick="return doclink('link-86', 'url', 'link-72');">url</a></tt><tt class="py-op">(</tt><tt class="py-name">top</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L506"></a><tt class="py-lineno"> 506</tt>  <tt class="py-line">     </tt>
+<a name="L507"></a><tt class="py-lineno"> 507</tt>  <tt class="py-line">    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L508"></a><tt class="py-lineno"> 508</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#{ 1. Interface Methods</tt> </tt>
+<a name="L509"></a><tt class="py-lineno"> 509</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L510"></a><tt class="py-lineno"> 510</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="HTMLWriter.write"></a><div id="HTMLWriter.write-def"><a name="L511"></a><tt class="py-lineno"> 511</tt> <a class="py-toggle" href="#" id="HTMLWriter.write-toggle" onclick="return toggle('HTMLWriter.write');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html.HTMLWriter-class.html#write">write</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">directory</tt><tt class=" [...]
+</div><div id="HTMLWriter.write-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLWriter.write-expanded"><a name="L512"></a><tt class="py-lineno"> 512</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L513"></a><tt class="py-lineno"> 513</tt>  <tt class="py-line"><tt class="py-docstring">        Write the documentation to the given directory.</tt> </tt>
+<a name="L514"></a><tt class="py-lineno"> 514</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L515"></a><tt class="py-lineno"> 515</tt>  <tt class="py-line"><tt class="py-docstring">        @type directory: C{string}</tt> </tt>
+<a name="L516"></a><tt class="py-lineno"> 516</tt>  <tt class="py-line"><tt class="py-docstring">        @param directory: The directory to which output should be</tt> </tt>
+<a name="L517"></a><tt class="py-lineno"> 517</tt>  <tt class="py-line"><tt class="py-docstring">            written.  If no directory is specified, output will be</tt> </tt>
+<a name="L518"></a><tt class="py-lineno"> 518</tt>  <tt class="py-line"><tt class="py-docstring">            written to the current directory.  If the directory does</tt> </tt>
+<a name="L519"></a><tt class="py-lineno"> 519</tt>  <tt class="py-line"><tt class="py-docstring">            not exist, it will be created.</tt> </tt>
+<a name="L520"></a><tt class="py-lineno"> 520</tt>  <tt class="py-line"><tt class="py-docstring">        @rtype: C{None}</tt> </tt>
+<a name="L521"></a><tt class="py-lineno"> 521</tt>  <tt class="py-line"><tt class="py-docstring">        @raise OSError: If C{directory} cannot be created.</tt> </tt>
+<a name="L522"></a><tt class="py-lineno"> 522</tt>  <tt class="py-line"><tt class="py-docstring">        @raise OSError: If any file cannot be created or written to.</tt> </tt>
+<a name="L523"></a><tt class="py-lineno"> 523</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L524"></a><tt class="py-lineno"> 524</tt>  <tt class="py-line">        <tt class="py-comment"># For progress reporting:</tt> </tt>
+<a name="L525"></a><tt class="py-lineno"> 525</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_files_written</tt> <tt class="py-op">=</tt> <tt class="py-number">0.</tt> </tt>
+<a name="L526"></a><tt class="py-lineno"> 526</tt>  <tt class="py-line">         </tt>
+<a name="L527"></a><tt class="py-lineno"> 527</tt>  <tt class="py-line">        <tt class="py-comment"># Set the default values for ValueDoc formatted representations.</tt> </tt>
+<a name="L528"></a><tt class="py-lineno"> 528</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">orig_valdoc_defaults</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt id="link-87" class="py-name" targets="Class epydoc.apidoc.ValueDoc=epydoc.apidoc.ValueDoc-class.html"><a title="epydoc.apidoc.ValueDoc" class="py-name" href="#" onclick="return doclink('link-87', 'ValueDoc', 'link-87');">ValueDoc</a></tt><tt class="py-op">.</tt><tt id="link-88" class= [...]
+<a name="L529"></a><tt class="py-lineno"> 529</tt>  <tt class="py-line">                                <tt id="link-89" class="py-name"><a title="epydoc.apidoc.ValueDoc" class="py-name" href="#" onclick="return doclink('link-89', 'ValueDoc', 'link-87');">ValueDoc</a></tt><tt class="py-op">.</tt><tt id="link-90" class="py-name" targets="Variable epydoc.apidoc.ValueDoc.REPR_LINELEN=epydoc.apidoc.ValueDoc-class.html#REPR_LINELEN"><a title="epydoc.apidoc.ValueDoc.REPR_LINELEN" class="py-nam [...]
+<a name="L530"></a><tt class="py-lineno"> 530</tt>  <tt class="py-line">                                <tt id="link-91" class="py-name"><a title="epydoc.apidoc.ValueDoc" class="py-name" href="#" onclick="return doclink('link-91', 'ValueDoc', 'link-87');">ValueDoc</a></tt><tt class="py-op">.</tt><tt id="link-92" class="py-name" targets="Variable epydoc.apidoc.ValueDoc.REPR_MAXLINES=epydoc.apidoc.ValueDoc-class.html#REPR_MAXLINES"><a title="epydoc.apidoc.ValueDoc.REPR_MAXLINES" class="py- [...]
+<a name="L531"></a><tt class="py-lineno"> 531</tt>  <tt class="py-line">        <tt id="link-93" class="py-name"><a title="epydoc.apidoc.ValueDoc" class="py-name" href="#" onclick="return doclink('link-93', 'ValueDoc', 'link-87');">ValueDoc</a></tt><tt class="py-op">.</tt><tt id="link-94" class="py-name"><a title="epydoc.apidoc.ValueDoc.SUMMARY_REPR_LINELEN" class="py-name" href="#" onclick="return doclink('link-94', 'SUMMARY_REPR_LINELEN', 'link-88');">SUMMARY_REPR_LINELEN</a></tt> <tt  [...]
+<a name="L532"></a><tt class="py-lineno"> 532</tt>  <tt class="py-line">        <tt id="link-95" class="py-name"><a title="epydoc.apidoc.ValueDoc" class="py-name" href="#" onclick="return doclink('link-95', 'ValueDoc', 'link-87');">ValueDoc</a></tt><tt class="py-op">.</tt><tt id="link-96" class="py-name"><a title="epydoc.apidoc.ValueDoc.REPR_LINELEN" class="py-name" href="#" onclick="return doclink('link-96', 'REPR_LINELEN', 'link-90');">REPR_LINELEN</a></tt> <tt class="py-op">=</tt> <tt [...]
+<a name="L533"></a><tt class="py-lineno"> 533</tt>  <tt class="py-line">        <tt id="link-97" class="py-name"><a title="epydoc.apidoc.ValueDoc" class="py-name" href="#" onclick="return doclink('link-97', 'ValueDoc', 'link-87');">ValueDoc</a></tt><tt class="py-op">.</tt><tt id="link-98" class="py-name"><a title="epydoc.apidoc.ValueDoc.REPR_MAXLINES" class="py-name" href="#" onclick="return doclink('link-98', 'REPR_MAXLINES', 'link-92');">REPR_MAXLINES</a></tt> <tt class="py-op">=</tt>  [...]
+<a name="L534"></a><tt class="py-lineno"> 534</tt>  <tt class="py-line"> </tt>
+<a name="L535"></a><tt class="py-lineno"> 535</tt>  <tt class="py-line">        <tt class="py-comment"># Use an image for the crarr symbol.</tt> </tt>
+<a name="L536"></a><tt class="py-lineno"> 536</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">from</tt> <tt id="link-99" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-99', 'epydoc', 'link-0');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-100" class="py-name"><a title="epydoc.markup
+epydoc.markup.doctest.DoctestColorizer.markup
+epydoc.markup.doctest.HTMLDoctestColorizer.markup
+epydoc.markup.doctest.LaTeXDoctestColorizer.markup
+epydoc.markup.doctest.XMLDoctestColorizer.markup" class="py-name" href="#" onclick="return doclink('link-100', 'markup', 'link-6');">markup</a></tt><tt class="py-op">.</tt><tt id="link-101" class="py-name"><a title="epydoc.markup.epytext" class="py-name" href="#" onclick="return doclink('link-101', 'epytext', 'link-9');">epytext</a></tt> <tt class="py-keyword">import</tt> <tt id="link-102" class="py-name" targets="Class epydoc.markup.epytext.ParsedEpytextDocstring=epydoc.markup.epytext.P [...]
+<a name="L537"></a><tt class="py-lineno"> 537</tt>  <tt class="py-line">        <tt class="py-name">orig_crarr_html</tt> <tt class="py-op">=</tt> <tt id="link-103" class="py-name"><a title="epydoc.markup.epytext.ParsedEpytextDocstring" class="py-name" href="#" onclick="return doclink('link-103', 'ParsedEpytextDocstring', 'link-102');">ParsedEpytextDocstring</a></tt><tt class="py-op">.</tt><tt id="link-104" class="py-name" targets="Variable epydoc.markup.epytext.ParsedEpytextDocstring.SYM [...]
+<a name="L538"></a><tt class="py-lineno"> 538</tt>  <tt class="py-line">        <tt id="link-105" class="py-name"><a title="epydoc.markup.epytext.ParsedEpytextDocstring" class="py-name" href="#" onclick="return doclink('link-105', 'ParsedEpytextDocstring', 'link-102');">ParsedEpytextDocstring</a></tt><tt class="py-op">.</tt><tt id="link-106" class="py-name"><a title="epydoc.markup.epytext.ParsedEpytextDocstring.SYMBOL_TO_HTML" class="py-name" href="#" onclick="return doclink('link-106',  [...]
+<a name="L539"></a><tt class="py-lineno"> 539</tt>  <tt class="py-line">            <tt class="py-string">r'<span class="variable-linewrap">'</tt> </tt>
+<a name="L540"></a><tt class="py-lineno"> 540</tt>  <tt class="py-line">            <tt class="py-string">r'<img src="crarr.png" alt="\" /></span>'</tt><tt class="py-op">)</tt> </tt>
+<a name="L541"></a><tt class="py-lineno"> 541</tt>  <tt class="py-line"> </tt>
+<a name="L542"></a><tt class="py-lineno"> 542</tt>  <tt class="py-line">        <tt class="py-comment"># Keep track of failed xrefs, and report them at the end.</tt> </tt>
+<a name="L543"></a><tt class="py-lineno"> 543</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_failed_xrefs</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L544"></a><tt class="py-lineno"> 544</tt>  <tt class="py-line"> </tt>
+<a name="L545"></a><tt class="py-lineno"> 545</tt>  <tt class="py-line">        <tt class="py-comment"># Create destination directories, if necessary</tt> </tt>
+<a name="L546"></a><tt class="py-lineno"> 546</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">directory</tt><tt class="py-op">:</tt> <tt class="py-name">directory</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">curdir</tt> </tt>
+<a name="L547"></a><tt class="py-lineno"> 547</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-107" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter._mkdir()=epydoc.docwriter.html.HTMLWriter-class.html#_mkdir,Method epydoc.docwriter.latex.LatexWriter._mkdir()=epydoc.docwriter.latex.LatexWriter-class.html#_mkdir"><a title="epydoc.docwriter.html.HTMLWriter._mkdir
+epydoc.docwriter.latex.LatexWriter._mkdir" class="py-name" href="#" onclick="return doclink('link-107', '_mkdir', 'link-107');">_mkdir</a></tt><tt class="py-op">(</tt><tt class="py-name">directory</tt><tt class="py-op">)</tt> </tt>
+<a name="L548"></a><tt class="py-lineno"> 548</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_directory</tt> <tt class="py-op">=</tt> <tt class="py-name">directory</tt> </tt>
+<a name="L549"></a><tt class="py-lineno"> 549</tt>  <tt class="py-line"> </tt>
+<a name="L550"></a><tt class="py-lineno"> 550</tt>  <tt class="py-line">        <tt class="py-comment"># Write the CSS file.</tt> </tt>
+<a name="L551"></a><tt class="py-lineno"> 551</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_files_written</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L552"></a><tt class="py-lineno"> 552</tt>  <tt class="py-line">        <tt id="link-108" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-108', 'log', 'link-29');">log</a></tt><tt class="py-op">.</tt><tt id="link-109" class="py-name" targets="Method epydoc.cli.ConsoleLogger.progress()=epydoc.cli.ConsoleLogger-class.html#progress,Method epydoc.cli.UnifiedProgressConsoleLogger.progress()=epydoc.cli.UnifiedProgressConsoleLogger-class.html#progress,Method epydoc.docbuilder._ProgressEstimator.progress()=epydoc.docbuilder._ProgressEstimator-class [...]
+epydoc.cli.UnifiedProgressConsoleLogger.progress
+epydoc.docbuilder._ProgressEstimator.progress
+epydoc.gui.GUILogger.progress
+epydoc.log.Logger.progress
+epydoc.log.progress" class="py-name" href="#" onclick="return doclink('link-109', 'progress', 'link-109');">progress</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_files_written</tt><tt class="py-op">/</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_num_files</tt><tt class="py-op">,</tt> <tt class="py-string">'epydoc.css'</tt><tt class="py-op">)</tt> </tt>
+<a name="L553"></a><tt class="py-lineno"> 553</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-110" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.write_css()=epydoc.docwriter.html.HTMLWriter-class.html#write_css"><a title="epydoc.docwriter.html.HTMLWriter.write_css" class="py-name" href="#" onclick="return doclink('link-110', 'write_css', 'link-110');">write_css</a></tt><tt class="py-op">(</tt><tt class="py-name">direc [...]
+<a name="L554"></a><tt class="py-lineno"> 554</tt>  <tt class="py-line"> </tt>
+<a name="L555"></a><tt class="py-lineno"> 555</tt>  <tt class="py-line">        <tt class="py-comment"># Write the Javascript file.</tt> </tt>
+<a name="L556"></a><tt class="py-lineno"> 556</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_files_written</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L557"></a><tt class="py-lineno"> 557</tt>  <tt class="py-line">        <tt id="link-111" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-111', 'log', 'link-29');">log</a></tt><tt class="py-op">.</tt><tt id="link-112" class="py-name"><a title="epydoc.cli.ConsoleLogger.progress
+epydoc.cli.UnifiedProgressConsoleLogger.progress
+epydoc.docbuilder._ProgressEstimator.progress
+epydoc.gui.GUILogger.progress
+epydoc.log.Logger.progress
+epydoc.log.progress" class="py-name" href="#" onclick="return doclink('link-112', 'progress', 'link-109');">progress</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_files_written</tt><tt class="py-op">/</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_num_files</tt><tt class="py-op">,</tt> <tt class="py-string">'epydoc.js'</tt><tt class="py-op">)</tt> </tt>
+<a name="L558"></a><tt class="py-lineno"> 558</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-113" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.write_javascript()=epydoc.docwriter.html.HTMLWriter-class.html#write_javascript"><a title="epydoc.docwriter.html.HTMLWriter.write_javascript" class="py-name" href="#" onclick="return doclink('link-113', 'write_javascript', 'link-113');">write_javascript</a></tt><tt class="py- [...]
+<a name="L559"></a><tt class="py-lineno"> 559</tt>  <tt class="py-line"> </tt>
+<a name="L560"></a><tt class="py-lineno"> 560</tt>  <tt class="py-line">        <tt class="py-comment"># Write images</tt> </tt>
+<a name="L561"></a><tt class="py-lineno"> 561</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-114" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.write_images()=epydoc.docwriter.html.HTMLWriter-class.html#write_images"><a title="epydoc.docwriter.html.HTMLWriter.write_images" class="py-name" href="#" onclick="return doclink('link-114', 'write_images', 'link-114');">write_images</a></tt><tt cl [...]
+<a name="L562"></a><tt class="py-lineno"> 562</tt>  <tt class="py-line"> </tt>
+<a name="L563"></a><tt class="py-lineno"> 563</tt>  <tt class="py-line">        <tt class="py-comment"># Build the indices.</tt> </tt>
+<a name="L564"></a><tt class="py-lineno"> 564</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">indices</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-string">'ident'</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-115" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.build_identifier_index()=epydoc.docwriter.html.HTMLWriter-class.html#build_identifier_index"><a title="epyd [...]
+<a name="L565"></a><tt class="py-lineno"> 565</tt>  <tt class="py-line">                   <tt class="py-string">'term'</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-116" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.build_term_index()=epydoc.docwriter.html.HTMLWriter-class.html#build_term_index"><a title="epydoc.docwriter.html.HTMLWriter.build_term_index" class="py-name" href="#" onclick="return doclink('link-116', 'bui [...]
+<a name="L566"></a><tt class="py-lineno"> 566</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-op">(</tt><tt id="link-117" class="py-name" targets="Variable epydoc.apidoc.VariableDoc.name=epydoc.apidoc.VariableDoc-class.html#name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-117', 'name', 'link-117');">name</a></tt><tt class="py-op">,</tt> <tt id="link-118" class="py-name" targets="Method epydoc.docwriter. [...]
+<a name="L567"></a><tt class="py-lineno"> 567</tt>  <tt class="py-line">            <tt class="py-name">indices</tt><tt class="py-op">[</tt><tt id="link-120" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-120', 'name', 'link-117');">name</a></tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-121" class="py-name" targets="Method epydoc.docwriter.html.HTMLW [...]
+<a name="L568"></a><tt class="py-lineno"> 568</tt>  <tt class="py-line"> </tt>
+<a name="L569"></a><tt class="py-lineno"> 569</tt>  <tt class="py-line">        <tt class="py-comment"># Write the identifier index.  If requested, split it into</tt> </tt>
+<a name="L570"></a><tt class="py-lineno"> 570</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># separate pages for each letter.</tt> </tt>
+<a name="L571"></a><tt class="py-lineno"> 571</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">ident_by_letter</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-123" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter._group_by_letter()=epydoc.docwriter.html.HTMLWriter-class.html#_group_by_letter"><a title="epydoc.docwriter.html.HTMLWriter._group_by_letter" class="py-name" href="#" onclick="return [...]
+<a name="L572"></a><tt class="py-lineno"> 572</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_split_ident_index</tt><tt class="py-op">:</tt> </tt>
+<a name="L573"></a><tt class="py-lineno"> 573</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-124" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter._write()=epydoc.docwriter.html.HTMLWriter-class.html#_write,Method epydoc.docwriter.latex.LatexWriter._write()=epydoc.docwriter.latex.LatexWriter-class.html#_write"><a title="epydoc.docwriter.html.HTMLWriter._write
+epydoc.docwriter.latex.LatexWriter._write" class="py-name" href="#" onclick="return doclink('link-124', '_write', 'link-124');">_write</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-125" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.write_link_index()=epydoc.docwriter.html.HTMLWriter-class.html#write_link_index"><a title="epydoc.docwriter.html.HTMLWriter.write_link_index" class="py-name" href="#" onclick="return doclin [...]
+<a name="L574"></a><tt class="py-lineno"> 574</tt>  <tt class="py-line">                        <tt class="py-string">'identifier-index.html'</tt><tt class="py-op">,</tt> <tt class="py-name">indices</tt><tt class="py-op">,</tt> </tt>
+<a name="L575"></a><tt class="py-lineno"> 575</tt>  <tt class="py-line">                        <tt class="py-string">'Identifier Index'</tt><tt class="py-op">,</tt> <tt class="py-string">'identifier-index.html'</tt><tt class="py-op">,</tt> </tt>
+<a name="L576"></a><tt class="py-lineno"> 576</tt>  <tt class="py-line">                        <tt class="py-name">ident_by_letter</tt><tt class="py-op">)</tt> </tt>
+<a name="L577"></a><tt class="py-lineno"> 577</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L578"></a><tt class="py-lineno"> 578</tt>  <tt class="py-line">            <tt class="py-comment"># Write a page for each section.</tt> </tt>
+<a name="L579"></a><tt class="py-lineno"> 579</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">for</tt> <tt class="py-name">letter</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-126" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.LETTERS" class="py-name" href="#" onclick="return doclink('link-126', 'LETTERS', 'link-70');">LETTERS</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L580"></a><tt class="py-lineno"> 580</tt>  <tt class="py-line">                <tt id="link-127" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-127', 'filename', 'link-68');">filename</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'identifier-index-%s.html'</tt> <tt class="py-op">%</tt> <tt class="py-name">letter</tt> </tt>
+<a name="L581"></a><tt class="py-lineno"> 581</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-128" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter._write
+epydoc.docwriter.latex.LatexWriter._write" class="py-name" href="#" onclick="return doclink('link-128', '_write', 'link-124');">_write</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-129" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_link_index" class="py-name" href="#" onclick="return doclink('link-129', 'write_link_index', 'link-125');">write_link_index</a></tt><tt class="py-op">,</tt> <tt class="py-name">directory</t [...]
+<a name="L582"></a><tt class="py-lineno"> 582</tt>  <tt class="py-line">                            <tt class="py-name">indices</tt><tt class="py-op">,</tt> <tt class="py-string">'Identifier Index'</tt><tt class="py-op">,</tt> <tt id="link-131" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-131', 'filename', 'link-68');">filename</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L583"></a><tt class="py-lineno"> 583</tt>  <tt class="py-line">                            <tt class="py-name">ident_by_letter</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-name">letter</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L584"></a><tt class="py-lineno"> 584</tt>  <tt class="py-line">                            <tt class="py-string">'identifier-index-%s.html'</tt><tt class="py-op">)</tt> </tt>
+<a name="L585"></a><tt class="py-lineno"> 585</tt>  <tt class="py-line">            <tt class="py-comment"># Use the first non-empty section as the main index page.</tt> </tt>
+<a name="L586"></a><tt class="py-lineno"> 586</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">for</tt> <tt class="py-name">letter</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-132" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.LETTERS" class="py-name" href="#" onclick="return doclink('link-132', 'LETTERS', 'link-70');">LETTERS</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L587"></a><tt class="py-lineno"> 587</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">letter</tt> <tt class="py-keyword">in</tt> <tt class="py-name">ident_by_letter</tt><tt class="py-op">:</tt> </tt>
+<a name="L588"></a><tt class="py-lineno"> 588</tt>  <tt class="py-line">                    <tt id="link-133" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-133', 'filename', 'link-68');">filename</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'identifier-index.html'</tt> </tt>
+<a name="L589"></a><tt class="py-lineno"> 589</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-134" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter._write
+epydoc.docwriter.latex.LatexWriter._write" class="py-name" href="#" onclick="return doclink('link-134', '_write', 'link-124');">_write</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-135" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_link_index" class="py-name" href="#" onclick="return doclink('link-135', 'write_link_index', 'link-125');">write_link_index</a></tt><tt class="py-op">,</tt> <tt class="py-name">directory</t [...]
+<a name="L590"></a><tt class="py-lineno"> 590</tt>  <tt class="py-line">                                <tt class="py-name">indices</tt><tt class="py-op">,</tt> <tt class="py-string">'Identifier Index'</tt><tt class="py-op">,</tt> <tt id="link-137" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-137', 'filename', 'link-68');">filename</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L591"></a><tt class="py-lineno"> 591</tt>  <tt class="py-line">                                <tt class="py-name">ident_by_letter</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-name">letter</tt><tt class="py-op">]</tt><tt class="py-op">,</tt>  </tt>
+<a name="L592"></a><tt class="py-lineno"> 592</tt>  <tt class="py-line">                                <tt class="py-string">'identifier-index-%s.html'</tt><tt class="py-op">)</tt> </tt>
+<a name="L593"></a><tt class="py-lineno"> 593</tt>  <tt class="py-line">                    <tt class="py-keyword">break</tt> </tt>
+<a name="L594"></a><tt class="py-lineno"> 594</tt>  <tt class="py-line"> </tt>
+<a name="L595"></a><tt class="py-lineno"> 595</tt>  <tt class="py-line">        <tt class="py-comment"># Write the term index.</tt> </tt>
+<a name="L596"></a><tt class="py-lineno"> 596</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">indices</tt><tt class="py-op">[</tt><tt class="py-string">'term'</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L597"></a><tt class="py-lineno"> 597</tt>  <tt class="py-line">            <tt class="py-name">term_by_letter</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-138" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter._group_by_letter" class="py-name" href="#" onclick="return doclink('link-138', '_group_by_letter', 'link-123');">_group_by_letter</a></tt><tt class="py-op">(</tt><tt class="py-name">indices</tt><tt class="py-op">[ [...]
+<a name="L598"></a><tt class="py-lineno"> 598</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-139" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter._write
+epydoc.docwriter.latex.LatexWriter._write" class="py-name" href="#" onclick="return doclink('link-139', '_write', 'link-124');">_write</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-140" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_link_index" class="py-name" href="#" onclick="return doclink('link-140', 'write_link_index', 'link-125');">write_link_index</a></tt><tt class="py-op">,</tt> <tt class="py-name">directory</t [...]
+<a name="L599"></a><tt class="py-lineno"> 599</tt>  <tt class="py-line">                        <tt class="py-name">indices</tt><tt class="py-op">,</tt> <tt class="py-string">'Term Definition Index'</tt><tt class="py-op">,</tt> </tt>
+<a name="L600"></a><tt class="py-lineno"> 600</tt>  <tt class="py-line">                        <tt class="py-string">'term-index.html'</tt><tt class="py-op">,</tt> <tt class="py-name">term_by_letter</tt><tt class="py-op">)</tt> </tt>
+<a name="L601"></a><tt class="py-lineno"> 601</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L602"></a><tt class="py-lineno"> 602</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_files_written</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> <tt class="py-comment"># (skipped)</tt> </tt>
+<a name="L603"></a><tt class="py-lineno"> 603</tt>  <tt class="py-line"> </tt>
+<a name="L604"></a><tt class="py-lineno"> 604</tt>  <tt class="py-line">        <tt class="py-comment"># Write the metadata indices.</tt> </tt>
+<a name="L605"></a><tt class="py-lineno"> 605</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">for</tt> <tt class="py-op">(</tt><tt id="link-141" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-141', 'name', 'link-117');">name</a></tt><tt class="py-op">,</tt> <tt id="link-142" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.label" class="py-name" href="#" onclick="return docl [...]
+<a name="L606"></a><tt class="py-lineno"> 606</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">indices</tt><tt class="py-op">[</tt><tt id="link-144" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-144', 'name', 'link-117');">name</a></tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L607"></a><tt class="py-lineno"> 607</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-145" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter._write
+epydoc.docwriter.latex.LatexWriter._write" class="py-name" href="#" onclick="return doclink('link-145', '_write', 'link-124');">_write</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-146" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.write_metadata_index()=epydoc.docwriter.html.HTMLWriter-class.html#write_metadata_index"><a title="epydoc.docwriter.html.HTMLWriter.write_metadata_index" class="py-name" href="#" onclick="r [...]
+<a name="L608"></a><tt class="py-lineno"> 608</tt>  <tt class="py-line">                            <tt class="py-string">'%s-index.html'</tt> <tt class="py-op">%</tt> <tt id="link-147" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-147', 'name', 'link-117');">name</a></tt><tt class="py-op">,</tt> <tt class="py-name">indices</tt><tt class="py-op">,</tt> <tt id="link-148" class="py-name"><a title="epydoc.apidoc.VariableDoc. [...]
+<a name="L609"></a><tt class="py-lineno"> 609</tt>  <tt class="py-line">                            <tt id="link-149" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.label" class="py-name" href="#" onclick="return doclink('link-149', 'label', 'link-118');">label</a></tt><tt class="py-op">,</tt> <tt class="py-name">label2</tt><tt class="py-op">)</tt> </tt>
+<a name="L610"></a><tt class="py-lineno"> 610</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L611"></a><tt class="py-lineno"> 611</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_files_written</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> <tt class="py-comment"># (skipped)</tt> </tt>
+<a name="L612"></a><tt class="py-lineno"> 612</tt>  <tt class="py-line"> </tt>
+<a name="L613"></a><tt class="py-lineno"> 613</tt>  <tt class="py-line">        <tt class="py-comment"># Write the trees file (package & class hierarchies)</tt> </tt>
+<a name="L614"></a><tt class="py-lineno"> 614</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">module_list</tt><tt class="py-op">:</tt> </tt>
+<a name="L615"></a><tt class="py-lineno"> 615</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-150" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter._write
+epydoc.docwriter.latex.LatexWriter._write" class="py-name" href="#" onclick="return doclink('link-150', '_write', 'link-124');">_write</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-151" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.write_module_tree()=epydoc.docwriter.html.HTMLWriter-class.html#write_module_tree,Method epydoc.docwriter.latex.LatexWriter.write_module_tree()=epydoc.docwriter.latex.LatexWriter-class.html [...]
+epydoc.docwriter.latex.LatexWriter.write_module_tree" class="py-name" href="#" onclick="return doclink('link-151', 'write_module_tree', 'link-151');">write_module_tree</a></tt><tt class="py-op">,</tt> <tt class="py-name">directory</tt><tt class="py-op">,</tt> <tt class="py-string">'module-tree.html'</tt><tt class="py-op">)</tt> </tt>
+<a name="L616"></a><tt class="py-lineno"> 616</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L617"></a><tt class="py-lineno"> 617</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_files_written</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> <tt class="py-comment"># (skipped)</tt> </tt>
+<a name="L618"></a><tt class="py-lineno"> 618</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">class_list</tt><tt class="py-op">:</tt> </tt>
+<a name="L619"></a><tt class="py-lineno"> 619</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-152" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter._write
+epydoc.docwriter.latex.LatexWriter._write" class="py-name" href="#" onclick="return doclink('link-152', '_write', 'link-124');">_write</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-153" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.write_class_tree()=epydoc.docwriter.html.HTMLWriter-class.html#write_class_tree"><a title="epydoc.docwriter.html.HTMLWriter.write_class_tree" class="py-name" href="#" onclick="return doclin [...]
+<a name="L620"></a><tt class="py-lineno"> 620</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L621"></a><tt class="py-lineno"> 621</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_files_written</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> <tt class="py-comment"># (skipped)</tt> </tt>
+<a name="L622"></a><tt class="py-lineno"> 622</tt>  <tt class="py-line">         </tt>
+<a name="L623"></a><tt class="py-lineno"> 623</tt>  <tt class="py-line">        <tt class="py-comment"># Write the help file.</tt> </tt>
+<a name="L624"></a><tt class="py-lineno"> 624</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-154" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter._write
+epydoc.docwriter.latex.LatexWriter._write" class="py-name" href="#" onclick="return doclink('link-154', '_write', 'link-124');">_write</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-155" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.write_help()=epydoc.docwriter.html.HTMLWriter-class.html#write_help"><a title="epydoc.docwriter.html.HTMLWriter.write_help" class="py-name" href="#" onclick="return doclink('link-155', 'wri [...]
+<a name="L625"></a><tt class="py-lineno"> 625</tt>  <tt class="py-line">         </tt>
+<a name="L626"></a><tt class="py-lineno"> 626</tt>  <tt class="py-line">        <tt class="py-comment"># Write the frames-based table of contents.</tt> </tt>
+<a name="L627"></a><tt class="py-lineno"> 627</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_frames_index</tt><tt class="py-op">:</tt> </tt>
+<a name="L628"></a><tt class="py-lineno"> 628</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-156" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter._write
+epydoc.docwriter.latex.LatexWriter._write" class="py-name" href="#" onclick="return doclink('link-156', '_write', 'link-124');">_write</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-157" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.write_frames_index()=epydoc.docwriter.html.HTMLWriter-class.html#write_frames_index"><a title="epydoc.docwriter.html.HTMLWriter.write_frames_index" class="py-name" href="#" onclick="return  [...]
+<a name="L629"></a><tt class="py-lineno"> 629</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-158" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter._write
+epydoc.docwriter.latex.LatexWriter._write" class="py-name" href="#" onclick="return doclink('link-158', '_write', 'link-124');">_write</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-159" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.write_toc()=epydoc.docwriter.html.HTMLWriter-class.html#write_toc"><a title="epydoc.docwriter.html.HTMLWriter.write_toc" class="py-name" href="#" onclick="return doclink('link-159', 'write_ [...]
+<a name="L630"></a><tt class="py-lineno"> 630</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-160" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter._write
+epydoc.docwriter.latex.LatexWriter._write" class="py-name" href="#" onclick="return doclink('link-160', '_write', 'link-124');">_write</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-161" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.write_project_toc()=epydoc.docwriter.html.HTMLWriter-class.html#write_project_toc"><a title="epydoc.docwriter.html.HTMLWriter.write_project_toc" class="py-name" href="#" onclick="return doc [...]
+<a name="L631"></a><tt class="py-lineno"> 631</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">module_list</tt><tt class="py-op">:</tt> </tt>
+<a name="L632"></a><tt class="py-lineno"> 632</tt>  <tt class="py-line">                <tt id="link-162" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-162', 'filename', 'link-68');">filename</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'toc-%s'</tt> <tt class="py-op">%</tt> <tt class="py-name">urllib</tt><tt class="py-op">.</tt><tt class="py-name">unquote</tt><tt class="py-op">(</tt><tt class="py-name">self< [...]
+<a name="L633"></a><tt class="py-lineno"> 633</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-164" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter._write
+epydoc.docwriter.latex.LatexWriter._write" class="py-name" href="#" onclick="return doclink('link-164', '_write', 'link-124');">_write</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-165" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.write_module_toc()=epydoc.docwriter.html.HTMLWriter-class.html#write_module_toc"><a title="epydoc.docwriter.html.HTMLWriter.write_module_toc" class="py-name" href="#" onclick="return doclin [...]
+<a name="L634"></a><tt class="py-lineno"> 634</tt>  <tt class="py-line"> </tt>
+<a name="L635"></a><tt class="py-lineno"> 635</tt>  <tt class="py-line">        <tt class="py-comment"># Write the object documentation.</tt> </tt>
+<a name="L636"></a><tt class="py-lineno"> 636</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">for</tt> <tt class="py-name">doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">module_list</tt><tt class="py-op">:</tt> </tt>
+<a name="L637"></a><tt class="py-lineno"> 637</tt>  <tt class="py-line">            <tt id="link-167" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-167', 'filename', 'link-68');">filename</a></tt> <tt class="py-op">=</tt> <tt class="py-name">urllib</tt><tt class="py-op">.</tt><tt class="py-name">unquote</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-168" class="py-name"><a  [...]
+<a name="L638"></a><tt class="py-lineno"> 638</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-169" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter._write
+epydoc.docwriter.latex.LatexWriter._write" class="py-name" href="#" onclick="return doclink('link-169', '_write', 'link-124');">_write</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-170" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.write_module()=epydoc.docwriter.html.HTMLWriter-class.html#write_module,Method epydoc.docwriter.latex.LatexWriter.write_module()=epydoc.docwriter.latex.LatexWriter-class.html#write_module,M [...]
+epydoc.docwriter.latex.LatexWriter.write_module
+epydoc.docwriter.plaintext.PlaintextWriter.write_module" class="py-name" href="#" onclick="return doclink('link-170', 'write_module', 'link-170');">write_module</a></tt><tt class="py-op">,</tt> <tt class="py-name">directory</tt><tt class="py-op">,</tt> <tt id="link-171" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-171', 'filename', 'link-68');">filename</a></tt><tt class="py-op">,</tt> <tt class="py-name">doc</tt><tt c [...]
+<a name="L639"></a><tt class="py-lineno"> 639</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">class_list</tt><tt class="py-op">:</tt> </tt>
+<a name="L640"></a><tt class="py-lineno"> 640</tt>  <tt class="py-line">            <tt id="link-172" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-172', 'filename', 'link-68');">filename</a></tt> <tt class="py-op">=</tt> <tt class="py-name">urllib</tt><tt class="py-op">.</tt><tt class="py-name">unquote</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-173" class="py-name"><a  [...]
+<a name="L641"></a><tt class="py-lineno"> 641</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-174" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter._write
+epydoc.docwriter.latex.LatexWriter._write" class="py-name" href="#" onclick="return doclink('link-174', '_write', 'link-124');">_write</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-175" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.write_class()=epydoc.docwriter.html.HTMLWriter-class.html#write_class,Method epydoc.docwriter.latex.LatexWriter.write_class()=epydoc.docwriter.latex.LatexWriter-class.html#write_class,Metho [...]
+epydoc.docwriter.latex.LatexWriter.write_class
+epydoc.docwriter.plaintext.PlaintextWriter.write_class" class="py-name" href="#" onclick="return doclink('link-175', 'write_class', 'link-175');">write_class</a></tt><tt class="py-op">,</tt> <tt class="py-name">directory</tt><tt class="py-op">,</tt> <tt id="link-176" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-176', 'filename', 'link-68');">filename</a></tt><tt class="py-op">,</tt> <tt class="py-name">doc</tt><tt clas [...]
+<a name="L642"></a><tt class="py-lineno"> 642</tt>  <tt class="py-line"> </tt>
+<a name="L643"></a><tt class="py-lineno"> 643</tt>  <tt class="py-line">        <tt class="py-comment"># Write source code files.</tt> </tt>
+<a name="L644"></a><tt class="py-lineno"> 644</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_incl_sourcecode</tt><tt class="py-op">:</tt> </tt>
+<a name="L645"></a><tt class="py-lineno"> 645</tt>  <tt class="py-line">            <tt class="py-comment"># Build a map from short names to APIDocs, used when</tt> </tt>
+<a name="L646"></a><tt class="py-lineno"> 646</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># linking names in the source code.</tt> </tt>
+<a name="L647"></a><tt class="py-lineno"> 647</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">name_to_docs</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L648"></a><tt class="py-lineno"> 648</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">api_doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">indexed_docs</tt><tt class="py-op">:</tt> </tt>
+<a name="L649"></a><tt class="py-lineno"> 649</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-177" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-177', 'canonical_name', 'link-82');">canonical_name</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L650"></a><tt class="py-lineno"> 650</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-178" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.url" class="py-name" href="#" onclick="return doclink('link-178', 'url', 'link-72');">url</a></tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt [...]
+<a name="L651"></a><tt class="py-lineno"> 651</tt>  <tt class="py-line">                    <tt id="link-179" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-179', 'name', 'link-117');">name</a></tt> <tt class="py-op">=</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-180" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-180', 'canonical_name', 'link-82');">canonical_name</a></tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L652"></a><tt class="py-lineno"> 652</tt>  <tt class="py-line">                    <tt class="py-name">name_to_docs</tt><tt class="py-op">.</tt><tt class="py-name">setdefault</tt><tt class="py-op">(</tt><tt id="link-181" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-181', 'name', 'link-117');">name</a></tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class=" [...]
+<a name="L653"></a><tt class="py-lineno"> 653</tt>  <tt class="py-line">            <tt class="py-comment"># Sort each entry of the name_to_docs list.</tt> </tt>
+<a name="L654"></a><tt class="py-lineno"> 654</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">for</tt> <tt class="py-name">doc_list</tt> <tt class="py-keyword">in</tt> <tt class="py-name">name_to_docs</tt><tt class="py-op">.</tt><tt class="py-name">values</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L655"></a><tt class="py-lineno"> 655</tt>  <tt class="py-line">                <tt class="py-name">doc_list</tt><tt class="py-op">.</tt><tt class="py-name">sort</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L656"></a><tt class="py-lineno"> 656</tt>  <tt class="py-line">            <tt class="py-comment"># Write the source code for each module.</tt> </tt>
+<a name="L657"></a><tt class="py-lineno"> 657</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">for</tt> <tt class="py-name">doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">modules_with_sourcecode</tt><tt class="py-op">:</tt> </tt>
+<a name="L658"></a><tt class="py-lineno"> 658</tt>  <tt class="py-line">                <tt id="link-182" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-182', 'filename', 'link-68');">filename</a></tt> <tt class="py-op">=</tt> <tt class="py-name">urllib</tt><tt class="py-op">.</tt><tt class="py-name">unquote</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-183" class="py-name" [...]
+<a name="L659"></a><tt class="py-lineno"> 659</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-184" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter._write
+epydoc.docwriter.latex.LatexWriter._write" class="py-name" href="#" onclick="return doclink('link-184', '_write', 'link-124');">_write</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-185" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.write_sourcecode()=epydoc.docwriter.html.HTMLWriter-class.html#write_sourcecode"><a title="epydoc.docwriter.html.HTMLWriter.write_sourcecode" class="py-name" href="#" onclick="return doclin [...]
+<a name="L660"></a><tt class="py-lineno"> 660</tt>  <tt class="py-line">                            <tt class="py-name">name_to_docs</tt><tt class="py-op">)</tt> </tt>
+<a name="L661"></a><tt class="py-lineno"> 661</tt>  <tt class="py-line"> </tt>
+<a name="L662"></a><tt class="py-lineno"> 662</tt>  <tt class="py-line">        <tt class="py-comment"># Write the auto-redirect page.</tt> </tt>
+<a name="L663"></a><tt class="py-lineno"> 663</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-187" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter._write
+epydoc.docwriter.latex.LatexWriter._write" class="py-name" href="#" onclick="return doclink('link-187', '_write', 'link-124');">_write</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-188" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.write_redirect_page()=epydoc.docwriter.html.HTMLWriter-class.html#write_redirect_page"><a title="epydoc.docwriter.html.HTMLWriter.write_redirect_page" class="py-name" href="#" onclick="retu [...]
+<a name="L664"></a><tt class="py-lineno"> 664</tt>  <tt class="py-line"> </tt>
+<a name="L665"></a><tt class="py-lineno"> 665</tt>  <tt class="py-line">        <tt class="py-comment"># Write the mapping object name -> URL</tt> </tt>
+<a name="L666"></a><tt class="py-lineno"> 666</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-189" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter._write
+epydoc.docwriter.latex.LatexWriter._write" class="py-name" href="#" onclick="return doclink('link-189', '_write', 'link-124');">_write</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-190" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.write_api_list()=epydoc.docwriter.html.HTMLWriter-class.html#write_api_list"><a title="epydoc.docwriter.html.HTMLWriter.write_api_list" class="py-name" href="#" onclick="return doclink('lin [...]
+<a name="L667"></a><tt class="py-lineno"> 667</tt>  <tt class="py-line">         </tt>
+<a name="L668"></a><tt class="py-lineno"> 668</tt>  <tt class="py-line">        <tt class="py-comment"># Write the index.html files.</tt> </tt>
+<a name="L669"></a><tt class="py-lineno"> 669</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># (this must be done last, since it might copy another file)</tt> </tt>
+<a name="L670"></a><tt class="py-lineno"> 670</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_files_written</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L671"></a><tt class="py-lineno"> 671</tt>  <tt class="py-line">        <tt id="link-191" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-191', 'log', 'link-29');">log</a></tt><tt class="py-op">.</tt><tt id="link-192" class="py-name"><a title="epydoc.cli.ConsoleLogger.progress
+epydoc.cli.UnifiedProgressConsoleLogger.progress
+epydoc.docbuilder._ProgressEstimator.progress
+epydoc.gui.GUILogger.progress
+epydoc.log.Logger.progress
+epydoc.log.progress" class="py-name" href="#" onclick="return doclink('link-192', 'progress', 'link-109');">progress</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_files_written</tt><tt class="py-op">/</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_num_files</tt><tt class="py-op">,</tt> <tt class="py-string">'index.html'</tt><tt class="py-op">)</tt> </tt>
+<a name="L672"></a><tt class="py-lineno"> 672</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-193" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.write_homepage()=epydoc.docwriter.html.HTMLWriter-class.html#write_homepage"><a title="epydoc.docwriter.html.HTMLWriter.write_homepage" class="py-name" href="#" onclick="return doclink('link-193', 'write_homepage', 'link-193');">write_homepage</a></tt><tt class="py-op">(</tt> [...]
+<a name="L673"></a><tt class="py-lineno"> 673</tt>  <tt class="py-line"> </tt>
+<a name="L674"></a><tt class="py-lineno"> 674</tt>  <tt class="py-line">        <tt class="py-comment"># Don't report references to builtins as missing</tt> </tt>
+<a name="L675"></a><tt class="py-lineno"> 675</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">for</tt> <tt class="py-name">k</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_failed_xrefs</tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-comment"># have a copy of keys</tt> </tt>
+<a name="L676"></a><tt class="py-lineno"> 676</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">__builtin__</tt><tt class="py-op">,</tt> <tt class="py-name">k</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L677"></a><tt class="py-lineno"> 677</tt>  <tt class="py-line">                <tt class="py-keyword">del</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_failed_xrefs</tt><tt class="py-op">[</tt><tt class="py-name">k</tt><tt class="py-op">]</tt> </tt>
+<a name="L678"></a><tt class="py-lineno"> 678</tt>  <tt class="py-line"> </tt>
+<a name="L679"></a><tt class="py-lineno"> 679</tt>  <tt class="py-line">        <tt class="py-comment"># Report any failed crossreferences</tt> </tt>
+<a name="L680"></a><tt class="py-lineno"> 680</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_failed_xrefs</tt><tt class="py-op">:</tt> </tt>
+<a name="L681"></a><tt class="py-lineno"> 681</tt>  <tt class="py-line">            <tt class="py-name">estr</tt> <tt class="py-op">=</tt> <tt class="py-string">'Failed identifier crossreference targets:\n'</tt> </tt>
+<a name="L682"></a><tt class="py-lineno"> 682</tt>  <tt class="py-line">            <tt class="py-name">failed_identifiers</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_failed_xrefs</tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L683"></a><tt class="py-lineno"> 683</tt>  <tt class="py-line">            <tt class="py-name">failed_identifiers</tt><tt class="py-op">.</tt><tt class="py-name">sort</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L684"></a><tt class="py-lineno"> 684</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">identifier</tt> <tt class="py-keyword">in</tt> <tt class="py-name">failed_identifiers</tt><tt class="py-op">:</tt> </tt>
+<a name="L685"></a><tt class="py-lineno"> 685</tt>  <tt class="py-line">                <tt class="py-name">names</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_failed_xrefs</tt><tt class="py-op">[</tt><tt class="py-name">identifier</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L686"></a><tt class="py-lineno"> 686</tt>  <tt class="py-line">                <tt class="py-name">names</tt><tt class="py-op">.</tt><tt class="py-name">sort</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L687"></a><tt class="py-lineno"> 687</tt>  <tt class="py-line">                <tt class="py-name">estr</tt> <tt class="py-op">+=</tt> <tt class="py-string">'- %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">identifier</tt> </tt>
+<a name="L688"></a><tt class="py-lineno"> 688</tt>  <tt class="py-line">                <tt class="py-name">estr</tt> <tt class="py-op">+=</tt> <tt class="py-string">'\n'</tt> </tt>
+<a name="L689"></a><tt class="py-lineno"> 689</tt>  <tt class="py-line">                <tt class="py-keyword">for</tt> <tt id="link-194" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-194', 'name', 'link-117');">name</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">names</tt><tt class="py-op">:</tt> </tt>
+<a name="L690"></a><tt class="py-lineno"> 690</tt>  <tt class="py-line">                    <tt class="py-name">estr</tt> <tt class="py-op">+=</tt> <tt class="py-string">'      (from %s)\n'</tt> <tt class="py-op">%</tt> <tt id="link-195" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-195', 'name', 'link-117');">name</a></tt> </tt>
+<a name="L691"></a><tt class="py-lineno"> 691</tt>  <tt class="py-line">            <tt id="link-196" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-196', 'log', 'link-29');">log</a></tt><tt class="py-op">.</tt><tt id="link-197" class="py-name" targets="Function epydoc.log.docstring_warning()=epydoc.log-module.html#docstring_warning"><a title="epydoc.log.docstring_warning" class="py-name" href="#" onclick="return doclink('link-197', 'docstring_warning', 'link-197');">docstring_warning</a></tt><tt class="py-op">(</tt><tt class="py-name">estr</tt><tt cl [...]
+<a name="L692"></a><tt class="py-lineno"> 692</tt>  <tt class="py-line"> </tt>
+<a name="L693"></a><tt class="py-lineno"> 693</tt>  <tt class="py-line">        <tt class="py-comment"># [xx] testing:</tt> </tt>
+<a name="L694"></a><tt class="py-lineno"> 694</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_num_files</tt> <tt class="py-op">!=</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_files_written</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L695"></a><tt class="py-lineno"> 695</tt>  <tt class="py-line">            <tt id="link-198" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-198', 'log', 'link-29');">log</a></tt><tt class="py-op">.</tt><tt id="link-199" class="py-name"><a title="epydoc.log.debug
+epydoc.markup.restructuredtext.OptimizedReporter.debug" class="py-name" href="#" onclick="return doclink('link-199', 'debug', 'link-40');">debug</a></tt><tt class="py-op">(</tt><tt class="py-string">"Expected to write %d files, but actually "</tt> </tt>
+<a name="L696"></a><tt class="py-lineno"> 696</tt>  <tt class="py-line">                      <tt class="py-string">"wrote %d files"</tt> <tt class="py-op">%</tt> </tt>
+<a name="L697"></a><tt class="py-lineno"> 697</tt>  <tt class="py-line">                      <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_num_files</tt><tt class="py-op">,</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_files_written</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L698"></a><tt class="py-lineno"> 698</tt>  <tt class="py-line"> </tt>
+<a name="L699"></a><tt class="py-lineno"> 699</tt>  <tt class="py-line">        <tt class="py-comment"># Restore defaults that we changed.</tt> </tt>
+<a name="L700"></a><tt class="py-lineno"> 700</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-op">(</tt><tt id="link-200" class="py-name"><a title="epydoc.apidoc.ValueDoc" class="py-name" href="#" onclick="return doclink('link-200', 'ValueDoc', 'link-87');">ValueDoc</a></tt><tt class="py-op">.</tt><tt id="link-201" class="py-name"><a title="epydoc.apidoc.ValueDoc.SUMMARY_REPR_LINELEN" class="py-name" href="#" onclick="return doclink('link-201', 'SUMMARY_REPR_L [...]
+<a name="L701"></a><tt class="py-lineno"> 701</tt>  <tt class="py-line">         <tt id="link-204" class="py-name"><a title="epydoc.apidoc.ValueDoc" class="py-name" href="#" onclick="return doclink('link-204', 'ValueDoc', 'link-87');">ValueDoc</a></tt><tt class="py-op">.</tt><tt id="link-205" class="py-name"><a title="epydoc.apidoc.ValueDoc.REPR_MAXLINES" class="py-name" href="#" onclick="return doclink('link-205', 'REPR_MAXLINES', 'link-92');">REPR_MAXLINES</a></tt><tt class="py-op">)</ [...]
+<a name="L702"></a><tt class="py-lineno"> 702</tt>  <tt class="py-line">        <tt id="link-206" class="py-name"><a title="epydoc.markup.epytext.ParsedEpytextDocstring" class="py-name" href="#" onclick="return doclink('link-206', 'ParsedEpytextDocstring', 'link-102');">ParsedEpytextDocstring</a></tt><tt class="py-op">.</tt><tt id="link-207" class="py-name"><a title="epydoc.markup.epytext.ParsedEpytextDocstring.SYMBOL_TO_HTML" class="py-name" href="#" onclick="return doclink('link-207',  [...]
+</div><a name="L703"></a><tt class="py-lineno"> 703</tt>  <tt class="py-line"> </tt>
+<a name="HTMLWriter._write"></a><div id="HTMLWriter._write-def"><a name="L704"></a><tt class="py-lineno"> 704</tt> <a class="py-toggle" href="#" id="HTMLWriter._write-toggle" onclick="return toggle('HTMLWriter._write');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html.HTMLWriter-class.html#_write">_write</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">write_func</tt><tt  [...]
+</div><div id="HTMLWriter._write-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLWriter._write-expanded"><a name="L705"></a><tt class="py-lineno"> 705</tt>  <tt class="py-line">        <tt class="py-comment"># Display our progress.</tt> </tt>
+<a name="L706"></a><tt class="py-lineno"> 706</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_files_written</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L707"></a><tt class="py-lineno"> 707</tt>  <tt class="py-line">        <tt id="link-208" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-208', 'log', 'link-29');">log</a></tt><tt class="py-op">.</tt><tt id="link-209" class="py-name"><a title="epydoc.cli.ConsoleLogger.progress
+epydoc.cli.UnifiedProgressConsoleLogger.progress
+epydoc.docbuilder._ProgressEstimator.progress
+epydoc.gui.GUILogger.progress
+epydoc.log.Logger.progress
+epydoc.log.progress" class="py-name" href="#" onclick="return doclink('link-209', 'progress', 'link-109');">progress</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_files_written</tt><tt class="py-op">/</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_num_files</tt><tt class="py-op">,</tt> <tt id="link-210" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="re [...]
+<a name="L708"></a><tt class="py-lineno"> 708</tt>  <tt class="py-line">         </tt>
+<a name="L709"></a><tt class="py-lineno"> 709</tt>  <tt class="py-line">        <tt id="link-211" class="py-name" targets="Variable epydoc.apidoc.ModuleDoc.path=epydoc.apidoc.ModuleDoc-class.html#path"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-211', 'path', 'link-211');">path</a></tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-212" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" cla [...]
+<a name="L710"></a><tt class="py-lineno"> 710</tt>  <tt class="py-line">        <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">codecs</tt><tt class="py-op">.</tt><tt id="link-214" class="py-name" targets="Method epydoc.gui.EpydocGUI.open()=epydoc.gui.EpydocGUI-class.html#open"><a title="epydoc.gui.EpydocGUI.open" class="py-name" href="#" onclick="return doclink('link-214', 'open', 'link-214');">open</a></tt><tt class="py-op">(</tt><tt id="link-215" class="py-name [...]
+<a name="L711"></a><tt class="py-lineno"> 711</tt>  <tt class="py-line">        <tt class="py-name">write_func</tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-216" class="py-name" targets="Method epydoc.docintrospecter._DevNull.write()=epydoc.docintrospecter._DevNull-class.html#write,Method epydoc.docwriter.dotgraph.DotGraph.write()=epydoc.docwriter.dotgraph.DotGraph-class.html#write,Method epydoc.docwriter.html.HTMLWriter.write()=epydoc.docwrit [...]
+epydoc.docwriter.dotgraph.DotGraph.write
+epydoc.docwriter.html.HTMLWriter.write
+epydoc.docwriter.latex.LatexWriter.write
+epydoc.docwriter.plaintext.PlaintextWriter.write" class="py-name" href="#" onclick="return doclink('link-216', 'write', 'link-216');">write</a></tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-name">args</tt><tt class="py-op">)</tt> </tt>
+<a name="L712"></a><tt class="py-lineno"> 712</tt>  <tt class="py-line">        <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-217" class="py-name" targets="Method epydoc.cli.HTMLLogger.close()=epydoc.cli.HTMLLogger-class.html#close,Method epydoc.docintrospecter._DevNull.close()=epydoc.docintrospecter._DevNull-class.html#close,Method epydoc.log.Logger.close()=epydoc.log.Logger-class.html#close,Function epydoc.log.close()=epydoc.log-module.html#close"><a title="epydoc.cli. [...]
+epydoc.docintrospecter._DevNull.close
+epydoc.log.Logger.close
+epydoc.log.close" class="py-name" href="#" onclick="return doclink('link-217', 'close', 'link-217');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L713"></a><tt class="py-lineno"> 713</tt>  <tt class="py-line"> </tt>
+<a name="HTMLWriter._mkdir"></a><div id="HTMLWriter._mkdir-def"><a name="L714"></a><tt class="py-lineno"> 714</tt> <a class="py-toggle" href="#" id="HTMLWriter._mkdir-toggle" onclick="return toggle('HTMLWriter._mkdir');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html.HTMLWriter-class.html#_mkdir">_mkdir</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">directory</tt><tt c [...]
+</div><div id="HTMLWriter._mkdir-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLWriter._mkdir-expanded"><a name="L715"></a><tt class="py-lineno"> 715</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L716"></a><tt class="py-lineno"> 716</tt>  <tt class="py-line"><tt class="py-docstring">        If the given directory does not exist, then attempt to create it.</tt> </tt>
+<a name="L717"></a><tt class="py-lineno"> 717</tt>  <tt class="py-line"><tt class="py-docstring">        @rtype: C{None}</tt> </tt>
+<a name="L718"></a><tt class="py-lineno"> 718</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L719"></a><tt class="py-lineno"> 719</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-218" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-218', 'path', 'link-211');">path</a></tt><tt class="py-op">.</tt><tt class="py-name">isdir</tt><tt class="py-op">(</tt><tt class="py-name">directory</tt><tt class="py-op [...]
+<a name="L720"></a><tt class="py-lineno"> 720</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-219" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-219', 'path', 'link-211');">path</a></tt><tt class="py-op">.</tt><tt class="py-name">exists</tt><tt class="py-op">(</tt><tt class="py-name">directory</tt><tt class="py-op">)</tt><tt class="py-op">: [...]
+<a name="L721"></a><tt class="py-lineno"> 721</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">OSError</tt><tt class="py-op">(</tt><tt class="py-string">'%r is not a directory'</tt> <tt class="py-op">%</tt> <tt class="py-name">directory</tt><tt class="py-op">)</tt> </tt>
+<a name="L722"></a><tt class="py-lineno"> 722</tt>  <tt class="py-line">            <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">mkdir</tt><tt class="py-op">(</tt><tt class="py-name">directory</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L723"></a><tt class="py-lineno"> 723</tt>  <tt class="py-line">         </tt>
+<a name="L724"></a><tt class="py-lineno"> 724</tt>  <tt class="py-line">    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L725"></a><tt class="py-lineno"> 725</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#{ 2.1. Module Pages</tt> </tt>
+<a name="L726"></a><tt class="py-lineno"> 726</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L727"></a><tt class="py-lineno"> 727</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="HTMLWriter.write_module"></a><div id="HTMLWriter.write_module-def"><a name="L728"></a><tt class="py-lineno"> 728</tt> <a class="py-toggle" href="#" id="HTMLWriter.write_module-toggle" onclick="return toggle('HTMLWriter.write_module');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html.HTMLWriter-class.html#write_module">write_module</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt  [...]
+</div><div id="HTMLWriter.write_module-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLWriter.write_module-expanded"><a name="L729"></a><tt class="py-lineno"> 729</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L730"></a><tt class="py-lineno"> 730</tt>  <tt class="py-line"><tt class="py-docstring">        Write an HTML page containing the API documentation for the</tt> </tt>
+<a name="L731"></a><tt class="py-lineno"> 731</tt>  <tt class="py-line"><tt class="py-docstring">        given module to C{out}.</tt> </tt>
+<a name="L732"></a><tt class="py-lineno"> 732</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt>
+<a name="L733"></a><tt class="py-lineno"> 733</tt>  <tt class="py-line"><tt class="py-docstring">        @param doc: A L{ModuleDoc} containing the API documentation</tt> </tt>
+<a name="L734"></a><tt class="py-lineno"> 734</tt>  <tt class="py-line"><tt class="py-docstring">        for the module that should be described.</tt> </tt>
+<a name="L735"></a><tt class="py-lineno"> 735</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L736"></a><tt class="py-lineno"> 736</tt>  <tt class="py-line">        <tt class="py-name">longname</tt> <tt class="py-op">=</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-220" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-220', 'canonical_name', 'link-82');">canonical_name</a></tt> </tt>
+<a name="L737"></a><tt class="py-lineno"> 737</tt>  <tt class="py-line">        <tt class="py-name">shortname</tt> <tt class="py-op">=</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-221" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-221', 'canonical_name', 'link-82');">canonical_name</a></tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L738"></a><tt class="py-lineno"> 738</tt>  <tt class="py-line"> </tt>
+<a name="L739"></a><tt class="py-lineno"> 739</tt>  <tt class="py-line">        <tt class="py-comment"># Write the page header (incl. navigation bar & breadcrumbs)</tt> </tt>
+<a name="L740"></a><tt class="py-lineno"> 740</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-222" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.write_header()=epydoc.docwriter.html.HTMLWriter-class.html#write_header,Method epydoc.docwriter.latex.LatexWriter.write_header()=epydoc.docwriter.latex.LatexWriter-class.html#write_header"><a title="epydoc.docwriter.html.HTMLWriter.write_header
+epydoc.docwriter.latex.LatexWriter.write_header" class="py-name" href="#" onclick="return doclink('link-222', 'write_header', 'link-222');">write_header</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">longname</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L741"></a><tt class="py-lineno"> 741</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-223" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.write_navbar()=epydoc.docwriter.html.HTMLWriter-class.html#write_navbar"><a title="epydoc.docwriter.html.HTMLWriter.write_navbar" class="py-name" href="#" onclick="return doclink('link-223', 'write_navbar', 'link-223');">write_navbar</a></tt><tt class="py-op">(</tt><tt class= [...]
+<a name="L742"></a><tt class="py-lineno"> 742</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-224" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.write_breadcrumbs()=epydoc.docwriter.html.HTMLWriter-class.html#write_breadcrumbs"><a title="epydoc.docwriter.html.HTMLWriter.write_breadcrumbs" class="py-name" href="#" onclick="return doclink('link-224', 'write_breadcrumbs', 'link-224');">write_breadcrumbs</a></tt><tt class [...]
+<a name="L743"></a><tt class="py-lineno"> 743</tt>  <tt class="py-line"> </tt>
+<a name="L744"></a><tt class="py-lineno"> 744</tt>  <tt class="py-line">        <tt class="py-comment"># Write the name of the module we're describing.</tt> </tt>
+<a name="L745"></a><tt class="py-lineno"> 745</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-226" class="py-name" targets="Variable epydoc.apidoc.ModuleDoc.is_package=epydoc.apidoc.ModuleDoc-class.html#is_package"><a title="epydoc.apidoc.ModuleDoc.is_package" class="py-name" href="#" onclick="return doclink('link-226', 'is_package', 'link-226');">is_package</a></tt> <tt class="p [...]
+<a name="L746"></a><tt class="py-lineno"> 746</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> <tt class="py-name">typ</tt> <tt class="py-op">=</tt> <tt class="py-string">'Module'</tt> </tt>
+<a name="L747"></a><tt class="py-lineno"> 747</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">longname</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">startswith</tt><tt class="py-op">(</tt><tt class="py-string">'script-'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L748"></a><tt class="py-lineno"> 748</tt>  <tt class="py-line">            <tt class="py-name">shortname</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">longname</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">7</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt>
+<a name="L749"></a><tt class="py-lineno"> 749</tt>  <tt class="py-line">            <tt class="py-name">typ</tt> <tt class="py-op">=</tt> <tt class="py-string">'Script'</tt> </tt>
+<a name="L750"></a><tt class="py-lineno"> 750</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'<!-- ==================== %s '</tt> <tt class="py-op">%</tt> <tt class="py-name">typ</tt><tt class="py-op">.</tt><tt class="py-name">upper</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> </tt>
+<a name="L751"></a><tt class="py-lineno"> 751</tt>  <tt class="py-line">            <tt class="py-string">'DESCRIPTION ==================== -->\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L752"></a><tt class="py-lineno"> 752</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'<h1 class="epydoc">%s %s</h1>'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">typ</tt><tt class="py-op">,</tt> <tt class="py-name">shortname</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L753"></a><tt class="py-lineno"> 753</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'<p class="nomargin-top">%s</p>\n'</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-227" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.pysrc_link()=epydoc.docwriter.html.HTMLWriter-class.html#pysrc_link"><a title="epydoc.docwriter.html.HTMLWriter.pysrc_link" c [...]
+<a name="L754"></a><tt class="py-lineno"> 754</tt>  <tt class="py-line">         </tt>
+<a name="L755"></a><tt class="py-lineno"> 755</tt>  <tt class="py-line">        <tt class="py-comment"># If the module has a description, then list it.</tt> </tt>
+<a name="L756"></a><tt class="py-lineno"> 756</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-228" class="py-name" targets="Variable epydoc.apidoc.APIDoc.descr=epydoc.apidoc.APIDoc-class.html#descr,Variable epydoc.cli.descr=epydoc.cli-module.html#descr,Method epydoc.docwriter.html.HTMLWriter.descr()=epydoc.docwriter.html.HTMLWriter-class.html#descr,Method epydoc.markup.ParseError [...]
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-228', 'descr', 'link-228');">descr</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-229" class="py-name" targets="Variable epydoc.apidoc.UNKNOWN=epydoc.apidoc-module.html#UNKNOWN"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-229', 'UNK [...]
+<a name="L757"></a><tt class="py-lineno"> 757</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-230" class="py-name"><a title="epydoc.apidoc.APIDoc.descr
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-230', 'descr', 'link-228');">descr</a></tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt class="py-number">2</tt><tt class="py-op">)</tt><tt class="py-op">+</tt><tt class="py-string">'\n\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L758"></a><tt class="py-lineno"> 758</tt>  <tt class="py-line"> </tt>
+<a name="L759"></a><tt class="py-lineno"> 759</tt>  <tt class="py-line">        <tt class="py-comment"># Write any standarad metadata (todo, author, etc.)</tt> </tt>
+<a name="L760"></a><tt class="py-lineno"> 760</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-231" class="py-name" targets="Variable epydoc.apidoc.APIDoc.metadata=epydoc.apidoc.APIDoc-class.html#metadata"><a title="epydoc.apidoc.APIDoc.metadata" class="py-name" href="#" onclick="return doclink('link-231', 'metadata', 'link-231');">metadata</a></tt> <tt class="py-keyword">is</tt>  [...]
+<a name="L761"></a><tt class="py-lineno"> 761</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'<hr />\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L762"></a><tt class="py-lineno"> 762</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-234" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.write_standard_fields()=epydoc.docwriter.html.HTMLWriter-class.html#write_standard_fields,Method epydoc.docwriter.latex.LatexWriter.write_standard_fields()=epydoc.docwriter.latex.LatexWriter-class.html#write_standard_fields"><a title="epydoc.docwriter.html.HTMLWriter.write_st [...]
+epydoc.docwriter.latex.LatexWriter.write_standard_fields" class="py-name" href="#" onclick="return doclink('link-234', 'write_standard_fields', 'link-234');">write_standard_fields</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-name">doc</tt><tt class="py-op">)</tt> </tt>
+<a name="L763"></a><tt class="py-lineno"> 763</tt>  <tt class="py-line"> </tt>
+<a name="L764"></a><tt class="py-lineno"> 764</tt>  <tt class="py-line">        <tt class="py-comment"># If it's a package, then list the modules it contains.</tt> </tt>
+<a name="L765"></a><tt class="py-lineno"> 765</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-235" class="py-name"><a title="epydoc.apidoc.ModuleDoc.is_package" class="py-name" href="#" onclick="return doclink('link-235', 'is_package', 'link-226');">is_package</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">True</tt><tt class="py-op">:</tt> </tt>
+<a name="L766"></a><tt class="py-lineno"> 766</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-236" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.write_module_list()=epydoc.docwriter.html.HTMLWriter-class.html#write_module_list,Method epydoc.docwriter.latex.LatexWriter.write_module_list()=epydoc.docwriter.latex.LatexWriter-class.html#write_module_list"><a title="epydoc.docwriter.html.HTMLWriter.write_module_list
+epydoc.docwriter.latex.LatexWriter.write_module_list" class="py-name" href="#" onclick="return doclink('link-236', 'write_module_list', 'link-236');">write_module_list</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-name">doc</tt><tt class="py-op">)</tt> </tt>
+<a name="L767"></a><tt class="py-lineno"> 767</tt>  <tt class="py-line"> </tt>
+<a name="L768"></a><tt class="py-lineno"> 768</tt>  <tt class="py-line">        <tt class="py-comment"># Write summary tables describing the variables that the</tt> </tt>
+<a name="L769"></a><tt class="py-lineno"> 769</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># module defines.</tt> </tt>
+<a name="L770"></a><tt class="py-lineno"> 770</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-237" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.write_summary_table()=epydoc.docwriter.html.HTMLWriter-class.html#write_summary_table"><a title="epydoc.docwriter.html.HTMLWriter.write_summary_table" class="py-name" href="#" onclick="return doclink('link-237', 'write_summary_table', 'link-237');" [...]
+<a name="L771"></a><tt class="py-lineno"> 771</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-238" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_summary_table" class="py-name" href="#" onclick="return doclink('link-238', 'write_summary_table', 'link-237');">write_summary_table</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-string">"Functions"</tt><tt class="py-op">,< [...]
+<a name="L772"></a><tt class="py-lineno"> 772</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-239" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_summary_table" class="py-name" href="#" onclick="return doclink('link-239', 'write_summary_table', 'link-237');">write_summary_table</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-string">"Variables"</tt><tt class="py-op">,< [...]
+<a name="L773"></a><tt class="py-lineno"> 773</tt>  <tt class="py-line"> </tt>
+<a name="L774"></a><tt class="py-lineno"> 774</tt>  <tt class="py-line">        <tt class="py-comment"># Write a list of all imported objects.</tt> </tt>
+<a name="L775"></a><tt class="py-lineno"> 775</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_show_imports</tt><tt class="py-op">:</tt> </tt>
+<a name="L776"></a><tt class="py-lineno"> 776</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-240" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.write_imports()=epydoc.docwriter.html.HTMLWriter-class.html#write_imports"><a title="epydoc.docwriter.html.HTMLWriter.write_imports" class="py-name" href="#" onclick="return doclink('link-240', 'write_imports', 'link-240');">write_imports</a></tt><tt class="py-op">(</tt>< [...]
+<a name="L777"></a><tt class="py-lineno"> 777</tt>  <tt class="py-line"> </tt>
+<a name="L778"></a><tt class="py-lineno"> 778</tt>  <tt class="py-line">        <tt class="py-comment"># Write detailed descriptions of functions & variables defined</tt> </tt>
+<a name="L779"></a><tt class="py-lineno"> 779</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># in this module.</tt> </tt>
+<a name="L780"></a><tt class="py-lineno"> 780</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-241" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.write_details_list()=epydoc.docwriter.html.HTMLWriter-class.html#write_details_list"><a title="epydoc.docwriter.html.HTMLWriter.write_details_list" class="py-name" href="#" onclick="return doclink('link-241', 'write_details_list', 'link-241');">wri [...]
+<a name="L781"></a><tt class="py-lineno"> 781</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-242" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_details_list" class="py-name" href="#" onclick="return doclink('link-242', 'write_details_list', 'link-241');">write_details_list</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-string">"Variables Details"</tt><tt class="py-o [...]
+<a name="L782"></a><tt class="py-lineno"> 782</tt>  <tt class="py-line"> </tt>
+<a name="L783"></a><tt class="py-lineno"> 783</tt>  <tt class="py-line">        <tt class="py-comment"># Write the page footer (including navigation bar)</tt> </tt>
+<a name="L784"></a><tt class="py-lineno"> 784</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-243" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_navbar" class="py-name" href="#" onclick="return doclink('link-243', 'write_navbar', 'link-223');">write_navbar</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-name">doc</tt><tt class="py-op">)</tt> </tt>
+<a name="L785"></a><tt class="py-lineno"> 785</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-244" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.write_footer()=epydoc.docwriter.html.HTMLWriter-class.html#write_footer"><a title="epydoc.docwriter.html.HTMLWriter.write_footer" class="py-name" href="#" onclick="return doclink('link-244', 'write_footer', 'link-244');">write_footer</a></tt><tt class="py-op">(</tt><tt class= [...]
+</div><a name="L786"></a><tt class="py-lineno"> 786</tt>  <tt class="py-line"> </tt>
+<a name="L787"></a><tt class="py-lineno"> 787</tt>  <tt class="py-line">    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L788"></a><tt class="py-lineno"> 788</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#{ 2.??. Source Code Pages</tt> </tt>
+<a name="L789"></a><tt class="py-lineno"> 789</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L790"></a><tt class="py-lineno"> 790</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="HTMLWriter.write_sourcecode"></a><div id="HTMLWriter.write_sourcecode-def"><a name="L791"></a><tt class="py-lineno"> 791</tt> <a class="py-toggle" href="#" id="HTMLWriter.write_sourcecode-toggle" onclick="return toggle('HTMLWriter.write_sourcecode');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html.HTMLWriter-class.html#write_sourcecode">write_sourcecode</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt c [...]
+</div><div id="HTMLWriter.write_sourcecode-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLWriter.write_sourcecode-expanded"><a name="L792"></a><tt class="py-lineno"> 792</tt>  <tt class="py-line">        <tt class="py-comment">#t0 = time.time()</tt> </tt>
+<a name="L793"></a><tt class="py-lineno"> 793</tt>  <tt class="py-line"><tt class="py-comment"></tt>         </tt>
+<a name="L794"></a><tt class="py-lineno"> 794</tt>  <tt class="py-line">        <tt id="link-245" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-245', 'filename', 'link-68');">filename</a></tt> <tt class="py-op">=</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-246" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-246', 'filename', 'l [...]
+<a name="L795"></a><tt class="py-lineno"> 795</tt>  <tt class="py-line">        <tt id="link-247" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-247', 'name', 'link-117');">name</a></tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-248" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-248', 'canonical_name', 'link-82');">canonical_name</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L796"></a><tt class="py-lineno"> 796</tt>  <tt class="py-line">         </tt>
+<a name="L797"></a><tt class="py-lineno"> 797</tt>  <tt class="py-line">        <tt class="py-comment"># Header</tt> </tt>
+<a name="L798"></a><tt class="py-lineno"> 798</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-249" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_header
+epydoc.docwriter.latex.LatexWriter.write_header" class="py-name" href="#" onclick="return doclink('link-249', 'write_header', 'link-222');">write_header</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt id="link-250" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-250', 'name', 'link-117');">name</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L799"></a><tt class="py-lineno"> 799</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-251" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_navbar" class="py-name" href="#" onclick="return doclink('link-251', 'write_navbar', 'link-223');">write_navbar</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-name">doc</tt><tt class="py-op">)</tt> </tt>
+<a name="L800"></a><tt class="py-lineno"> 800</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-252" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_breadcrumbs" class="py-name" href="#" onclick="return doclink('link-252', 'write_breadcrumbs', 'link-224');">write_breadcrumbs</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt class=" [...]
+<a name="L801"></a><tt class="py-lineno"> 801</tt>  <tt class="py-line"> </tt>
+<a name="L802"></a><tt class="py-lineno"> 802</tt>  <tt class="py-line">        <tt class="py-comment"># Source code listing</tt> </tt>
+<a name="L803"></a><tt class="py-lineno"> 803</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'<h1 class="epydoc">Source Code for %s</h1>\n'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L804"></a><tt class="py-lineno"> 804</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-254" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.href()=epydoc.docwriter.html.HTMLWriter-class.html#href"><a title="epydoc.docwriter.html.HTMLWriter.href" class="py-name" href="#" onclick="return doclink('link-254', 'href', 'link-254');">href</a></tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op"> [...]
+epydoc.docwriter.html_colorize.PythonSourceColorizer.doc_kind
+epydoc.docwriter.latex.LatexWriter.doc_kind" class="py-name" href="#" onclick="return doclink('link-256', 'doc_kind', 'link-256');">doc_kind</a></tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt id="link-257" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-257', 'name', 'link-117');">name</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</t [...]
+<a name="L805"></a><tt class="py-lineno"> 805</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'<pre class="py-src">\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L806"></a><tt class="py-lineno"> 806</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt id="link-258" class="py-name"><a title="epydoc.docwriter.html_colorize.PythonSourceColorizer" class="py-name" href="#" onclick="return doclink('link-258', 'PythonSourceColorizer', 'link-13');">PythonSourceColorizer</a></tt><tt class="py-op">(</tt><tt id="link-259" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclic [...]
+<a name="L807"></a><tt class="py-lineno"> 807</tt>  <tt class="py-line">                                  <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-261" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.url" class="py-name" href="#" onclick="return doclink('link-261', 'url', 'link-72');">url</a></tt><tt class="py-op">,</tt> <tt class="py-name">name_to_docs</tt><tt class="py-op">,</tt> </tt>
+<a name="L808"></a><tt class="py-lineno"> 808</tt>  <tt class="py-line">                                  <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_src_code_tab_width</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-262" class="py-name" targets="Method epydoc.docwriter.html_colorize.PythonSourceColorizer.colorize()=epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#colorize,Method epydoc.markup.pyval_repr.PyvalColorizer.coloriz [...]
+epydoc.markup.pyval_repr.PyvalColorizer.colorize" class="py-name" href="#" onclick="return doclink('link-262', 'colorize', 'link-262');">colorize</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L809"></a><tt class="py-lineno"> 809</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'</pre>\n<br />\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L810"></a><tt class="py-lineno"> 810</tt>  <tt class="py-line"> </tt>
+<a name="L811"></a><tt class="py-lineno"> 811</tt>  <tt class="py-line">        <tt class="py-comment"># Footer</tt> </tt>
+<a name="L812"></a><tt class="py-lineno"> 812</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-263" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_navbar" class="py-name" href="#" onclick="return doclink('link-263', 'write_navbar', 'link-223');">write_navbar</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-name">doc</tt><tt class="py-op">)</tt> </tt>
+<a name="L813"></a><tt class="py-lineno"> 813</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-264" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_footer" class="py-name" href="#" onclick="return doclink('link-264', 'write_footer', 'link-244');">write_footer</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L814"></a><tt class="py-lineno"> 814</tt>  <tt class="py-line">         </tt>
+<a name="L815"></a><tt class="py-lineno"> 815</tt>  <tt class="py-line">        <tt class="py-comment">#log.debug('[%6.2f sec] Wrote pysrc for %s' %</tt> </tt>
+<a name="L816"></a><tt class="py-lineno"> 816</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#          (time.time()-t0, name))</tt> </tt>
+<a name="L817"></a><tt class="py-lineno"> 817</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L818"></a><tt class="py-lineno"> 818</tt>  <tt class="py-line">    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L819"></a><tt class="py-lineno"> 819</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#{ 2.2. Class Pages</tt> </tt>
+<a name="L820"></a><tt class="py-lineno"> 820</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L821"></a><tt class="py-lineno"> 821</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="HTMLWriter.write_class"></a><div id="HTMLWriter.write_class-def"><a name="L822"></a><tt class="py-lineno"> 822</tt> <a class="py-toggle" href="#" id="HTMLWriter.write_class-toggle" onclick="return toggle('HTMLWriter.write_class');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html.HTMLWriter-class.html#write_class">write_class</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class= [...]
+</div><div id="HTMLWriter.write_class-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLWriter.write_class-expanded"><a name="L823"></a><tt class="py-lineno"> 823</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L824"></a><tt class="py-lineno"> 824</tt>  <tt class="py-line"><tt class="py-docstring">        Write an HTML page containing the API documentation for the</tt> </tt>
+<a name="L825"></a><tt class="py-lineno"> 825</tt>  <tt class="py-line"><tt class="py-docstring">        given class to C{out}.</tt> </tt>
+<a name="L826"></a><tt class="py-lineno"> 826</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt>
+<a name="L827"></a><tt class="py-lineno"> 827</tt>  <tt class="py-line"><tt class="py-docstring">        @param doc: A L{ClassDoc} containing the API documentation</tt> </tt>
+<a name="L828"></a><tt class="py-lineno"> 828</tt>  <tt class="py-line"><tt class="py-docstring">        for the class that should be described.</tt> </tt>
+<a name="L829"></a><tt class="py-lineno"> 829</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L830"></a><tt class="py-lineno"> 830</tt>  <tt class="py-line">        <tt class="py-name">longname</tt> <tt class="py-op">=</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-265" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-265', 'canonical_name', 'link-82');">canonical_name</a></tt> </tt>
+<a name="L831"></a><tt class="py-lineno"> 831</tt>  <tt class="py-line">        <tt class="py-name">shortname</tt> <tt class="py-op">=</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-266" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-266', 'canonical_name', 'link-82');">canonical_name</a></tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L832"></a><tt class="py-lineno"> 832</tt>  <tt class="py-line"> </tt>
+<a name="L833"></a><tt class="py-lineno"> 833</tt>  <tt class="py-line">        <tt class="py-comment"># Write the page header (incl. navigation bar & breadcrumbs)</tt> </tt>
+<a name="L834"></a><tt class="py-lineno"> 834</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-267" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_header
+epydoc.docwriter.latex.LatexWriter.write_header" class="py-name" href="#" onclick="return doclink('link-267', 'write_header', 'link-222');">write_header</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">longname</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L835"></a><tt class="py-lineno"> 835</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-268" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_navbar" class="py-name" href="#" onclick="return doclink('link-268', 'write_navbar', 'link-223');">write_navbar</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-name">doc</tt><tt class="py-op">)</tt> </tt>
+<a name="L836"></a><tt class="py-lineno"> 836</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-269" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_breadcrumbs" class="py-name" href="#" onclick="return doclink('link-269', 'write_breadcrumbs', 'link-224');">write_breadcrumbs</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt class=" [...]
+<a name="L837"></a><tt class="py-lineno"> 837</tt>  <tt class="py-line"> </tt>
+<a name="L838"></a><tt class="py-lineno"> 838</tt>  <tt class="py-line">        <tt class="py-comment"># Write the name of the class we're describing.</tt> </tt>
+<a name="L839"></a><tt class="py-lineno"> 839</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-271" class="py-name" targets="Method epydoc.apidoc.ClassDoc.is_type()=epydoc.apidoc.ClassDoc-class.html#is_type"><a title="epydoc.apidoc.ClassDoc.is_type" class="py-name" href="#" onclick="return doclink('link-271', 'is_type', 'link-271');">is_type</a></tt><tt class="py-op">(</tt><tt cla [...]
+<a name="L840"></a><tt class="py-lineno"> 840</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-272" class="py-name" targets="Method epydoc.apidoc.ClassDoc.is_exception()=epydoc.apidoc.ClassDoc-class.html#is_exception"><a title="epydoc.apidoc.ClassDoc.is_exception" class="py-name" href="#" onclick="return doclink('link-272', 'is_exception', 'link-272');">is_exception</a></tt><tt class="py-op">(</tt><tt clas [...]
+<a name="L841"></a><tt class="py-lineno"> 841</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> <tt class="py-name">typ</tt> <tt class="py-op">=</tt> <tt class="py-string">'Class'</tt> </tt>
+<a name="L842"></a><tt class="py-lineno"> 842</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'<!-- ==================== %s '</tt> <tt class="py-op">%</tt> <tt class="py-name">typ</tt><tt class="py-op">.</tt><tt class="py-name">upper</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> </tt>
+<a name="L843"></a><tt class="py-lineno"> 843</tt>  <tt class="py-line">            <tt class="py-string">'DESCRIPTION ==================== -->\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L844"></a><tt class="py-lineno"> 844</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'<h1 class="epydoc">%s %s</h1>'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">typ</tt><tt class="py-op">,</tt> <tt class="py-name">shortname</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L845"></a><tt class="py-lineno"> 845</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'<p class="nomargin-top">%s</p>\n'</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-273" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.pysrc_link" class="py-name" href="#" onclick="return doclink('link-273', 'pysrc_link', 'link-227');">pysrc_link</a></tt><tt class=" [...]
+<a name="L846"></a><tt class="py-lineno"> 846</tt>  <tt class="py-line"> </tt>
+<a name="L847"></a><tt class="py-lineno"> 847</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-274" class="py-name"><a title="epydoc.apidoc.ClassDoc.bases" class="py-name" href="#" onclick="return doclink('link-274', 'bases', 'link-52');">bases</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt id="link-275" clas [...]
+<a name="L848"></a><tt class="py-lineno"> 848</tt>  <tt class="py-line">            <tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-277" class="py-name"><a title="epydoc.apidoc.ClassDoc.subclasses" class="py-name" href="#" onclick="return doclink('link-277', 'subclasses', 'link-54');">subclasses</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt id="link-278" class="py-name"><a title="epydoc.apidoc. [...]
+<a name="L849"></a><tt class="py-lineno"> 849</tt>  <tt class="py-line">            <tt class="py-comment"># Display bases graphically, if requested.</tt> </tt>
+<a name="L850"></a><tt class="py-lineno"> 850</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt class="py-string">'umlclasstree'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_graph_types</tt><tt class="py-op">:</tt> </tt>
+<a name="L851"></a><tt class="py-lineno"> 851</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-280" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.write_class_tree_graph()=epydoc.docwriter.html.HTMLWriter-class.html#write_class_tree_graph"><a title="epydoc.docwriter.html.HTMLWriter.write_class_tree_graph" class="py-name" href="#" onclick="return doclink('link-280', 'write_class_tree_graph', 'link-280');">write_c [...]
+<a name="L852"></a><tt class="py-lineno"> 852</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-string">'classtree'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_graph_types</tt><tt class="py-op">:</tt> </tt>
+<a name="L853"></a><tt class="py-lineno"> 853</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-282" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_class_tree_graph" class="py-name" href="#" onclick="return doclink('link-282', 'write_class_tree_graph', 'link-280');">write_class_tree_graph</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-name">doc</tt><tt class="py [...]
+<a name="L854"></a><tt class="py-lineno"> 854</tt>  <tt class="py-line">                 </tt>
+<a name="L855"></a><tt class="py-lineno"> 855</tt>  <tt class="py-line">            <tt class="py-comment"># Otherwise, use ascii-art.</tt> </tt>
+<a name="L856"></a><tt class="py-lineno"> 856</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L857"></a><tt class="py-lineno"> 857</tt>  <tt class="py-line">                <tt class="py-comment"># Write the base class tree.</tt> </tt>
+<a name="L858"></a><tt class="py-lineno"> 858</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-keyword">if</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-284" class="py-name"><a title="epydoc.apidoc.ClassDoc.bases" class="py-name" href="#" onclick="return doclink('link-284', 'bases', 'link-52');">bases</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt id="link-285" class="py-name"> [...]
+<a name="L859"></a><tt class="py-lineno"> 859</tt>  <tt class="py-line">                    <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'<pre class="base-tree">\n%s</pre>\n\n'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L860"></a><tt class="py-lineno"> 860</tt>  <tt class="py-line">                        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-287" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.base_tree()=epydoc.docwriter.html.HTMLWriter-class.html#base_tree,Method epydoc.docwriter.latex.LatexWriter.base_tree()=epydoc.docwriter.latex.LatexWriter-class.html#base_tree"><a title="epydoc.docwriter.html.HTMLWriter.base_tree
+epydoc.docwriter.latex.LatexWriter.base_tree" class="py-name" href="#" onclick="return doclink('link-287', 'base_tree', 'link-287');">base_tree</a></tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L861"></a><tt class="py-lineno"> 861</tt>  <tt class="py-line"> </tt>
+<a name="L862"></a><tt class="py-lineno"> 862</tt>  <tt class="py-line">                <tt class="py-comment"># Write the known subclasses</tt> </tt>
+<a name="L863"></a><tt class="py-lineno"> 863</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-288" class="py-name"><a title="epydoc.apidoc.ClassDoc.subclasses" class="py-name" href="#" onclick="return doclink('link-288', 'subclasses', 'link-54');">subclasses</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">( [...]
+<a name="L864"></a><tt class="py-lineno"> 864</tt>  <tt class="py-line">                    <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-290" class="py-name"><a title="epydoc.apidoc.ClassDoc.subclasses" class="py-name" href="#" onclick="return doclink('link-290', 'subclasses', 'link-54');">subclasses</a></tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-number">0</tt><tt class="py-op">)</tt><tt c [...]
+<a name="L865"></a><tt class="py-lineno"> 865</tt>  <tt class="py-line">                    <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'<dl><dt>Known Subclasses:</dt>\n<dd>\n    '</tt><tt class="py-op">)</tt> </tt>
+<a name="L866"></a><tt class="py-lineno"> 866</tt>  <tt class="py-line">                    <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'  <ul class="subclass-list">\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L867"></a><tt class="py-lineno"> 867</tt>  <tt class="py-line">                    <tt class="py-keyword">for</tt> <tt class="py-name">i</tt><tt class="py-op">,</tt> <tt class="py-name">subclass</tt> <tt class="py-keyword">in</tt> <tt class="py-name">enumerate</tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-291" class="py-name"><a title="epydoc.apidoc.ClassDoc.subclasses" class="py-name" href="#" onclick="return doclink('link-291', 's [...]
+<a name="L868"></a><tt class="py-lineno"> 868</tt>  <tt class="py-line">                        <tt id="link-292" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.href" class="py-name" href="#" onclick="return doclink('link-292', 'href', 'link-254');">href</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-293" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.href" class="py-name" href="#" onclick="return doclink('link- [...]
+<a name="L869"></a><tt class="py-lineno"> 869</tt>  <tt class="py-line">                        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-294" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter._val_is_public()=epydoc.docwriter.html.HTMLWriter-class.html#_val_is_public"><a title="epydoc.docwriter.html.HTMLWriter._val_is_public" class="py-name" href="#" onclick="return doclink('link-294', '_val_is_public', 'link-294');"> [...]
+<a name="L870"></a><tt class="py-lineno"> 870</tt>  <tt class="py-line">                        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> <tt class="py-name">css</tt> <tt class="py-op">=</tt> <tt class="py-string">' class="private"'</tt> </tt>
+<a name="L871"></a><tt class="py-lineno"> 871</tt>  <tt class="py-line">                        <tt class="py-keyword">if</tt> <tt class="py-name">i</tt> <tt class="py-op">></tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> <tt id="link-295" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.href" class="py-name" href="#" onclick="return doclink('link-295', 'href', 'link-254');">href</a></tt> <tt class="py-op">=</tt> <tt class="py-string">', '</tt><tt class="py-op">+</ [...]
+<a name="L872"></a><tt class="py-lineno"> 872</tt>  <tt class="py-line">                        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'<li%s>%s</li>'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">css</tt><tt class="py-op">,</tt> <tt id="link-297" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.href" class="py-name" href="#" onclick="return doclink('link-297', 'href', 'link-254');">href</a></tt><tt clas [...]
+<a name="L873"></a><tt class="py-lineno"> 873</tt>  <tt class="py-line">                    <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'  </ul>\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L874"></a><tt class="py-lineno"> 874</tt>  <tt class="py-line">                    <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'</dd></dl>\n\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L875"></a><tt class="py-lineno"> 875</tt>  <tt class="py-line"> </tt>
+<a name="L876"></a><tt class="py-lineno"> 876</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'<hr />\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L877"></a><tt class="py-lineno"> 877</tt>  <tt class="py-line">         </tt>
+<a name="L878"></a><tt class="py-lineno"> 878</tt>  <tt class="py-line">        <tt class="py-comment"># If the class has a description, then list it.</tt> </tt>
+<a name="L879"></a><tt class="py-lineno"> 879</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-298" class="py-name"><a title="epydoc.apidoc.APIDoc.descr
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-298', 'descr', 'link-228');">descr</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-299" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-299', 'UNKNOWN', 'link-229');">UNKNOWN</a></tt><tt class="py-op">)</tt><tt class="py- [...]
+<a name="L880"></a><tt class="py-lineno"> 880</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-300" class="py-name"><a title="epydoc.apidoc.APIDoc.descr
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-300', 'descr', 'link-228');">descr</a></tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt class="py-number">2</tt><tt class="py-op">)</tt><tt class="py-op">+</tt><tt class="py-string">'\n\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L881"></a><tt class="py-lineno"> 881</tt>  <tt class="py-line"> </tt>
+<a name="L882"></a><tt class="py-lineno"> 882</tt>  <tt class="py-line">        <tt class="py-comment"># Write any standarad metadata (todo, author, etc.)</tt> </tt>
+<a name="L883"></a><tt class="py-lineno"> 883</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-301" class="py-name"><a title="epydoc.apidoc.APIDoc.metadata" class="py-name" href="#" onclick="return doclink('link-301', 'metadata', 'link-231');">metadata</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt id="link-302" class="py-name"><a title="epydoc.apidoc. [...]
+<a name="L884"></a><tt class="py-lineno"> 884</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'<hr />\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L885"></a><tt class="py-lineno"> 885</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-304" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_standard_fields
+epydoc.docwriter.latex.LatexWriter.write_standard_fields" class="py-name" href="#" onclick="return doclink('link-304', 'write_standard_fields', 'link-234');">write_standard_fields</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-name">doc</tt><tt class="py-op">)</tt> </tt>
+<a name="L886"></a><tt class="py-lineno"> 886</tt>  <tt class="py-line"> </tt>
+<a name="L887"></a><tt class="py-lineno"> 887</tt>  <tt class="py-line">        <tt class="py-comment"># Write summary tables describing the variables that the</tt> </tt>
+<a name="L888"></a><tt class="py-lineno"> 888</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># class defines.</tt> </tt>
+<a name="L889"></a><tt class="py-lineno"> 889</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-305" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_summary_table" class="py-name" href="#" onclick="return doclink('link-305', 'write_summary_table', 'link-237');">write_summary_table</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-string">"Nested  [...]
+<a name="L890"></a><tt class="py-lineno"> 890</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-306" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_summary_table" class="py-name" href="#" onclick="return doclink('link-306', 'write_summary_table', 'link-237');">write_summary_table</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-string">"Instance Methods"</tt><tt class="py [...]
+<a name="L891"></a><tt class="py-lineno"> 891</tt>  <tt class="py-line">                                 <tt class="py-string">"instancemethod"</tt><tt class="py-op">)</tt> </tt>
+<a name="L892"></a><tt class="py-lineno"> 892</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-307" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_summary_table" class="py-name" href="#" onclick="return doclink('link-307', 'write_summary_table', 'link-237');">write_summary_table</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-string">"Class Methods"</tt><tt class="py-op [...]
+<a name="L893"></a><tt class="py-lineno"> 893</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-308" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_summary_table" class="py-name" href="#" onclick="return doclink('link-308', 'write_summary_table', 'link-237');">write_summary_table</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-string">"Static Methods"</tt><tt class="py-o [...]
+<a name="L894"></a><tt class="py-lineno"> 894</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-309" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_summary_table" class="py-name" href="#" onclick="return doclink('link-309', 'write_summary_table', 'link-237');">write_summary_table</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-string">"Class Variables"</tt><tt class="py- [...]
+<a name="L895"></a><tt class="py-lineno"> 895</tt>  <tt class="py-line">                                 <tt class="py-string">"classvariable"</tt><tt class="py-op">)</tt> </tt>
+<a name="L896"></a><tt class="py-lineno"> 896</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-310" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_summary_table" class="py-name" href="#" onclick="return doclink('link-310', 'write_summary_table', 'link-237');">write_summary_table</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-string">"Instance Variables"</tt><tt class=" [...]
+<a name="L897"></a><tt class="py-lineno"> 897</tt>  <tt class="py-line">                                 <tt class="py-string">"instancevariable"</tt><tt class="py-op">)</tt> </tt>
+<a name="L898"></a><tt class="py-lineno"> 898</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-311" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_summary_table" class="py-name" href="#" onclick="return doclink('link-311', 'write_summary_table', 'link-237');">write_summary_table</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-string">"Properties"</tt><tt class="py-op">, [...]
+<a name="L899"></a><tt class="py-lineno"> 899</tt>  <tt class="py-line"> </tt>
+<a name="L900"></a><tt class="py-lineno"> 900</tt>  <tt class="py-line">        <tt class="py-comment"># Write a list of all imported objects.</tt> </tt>
+<a name="L901"></a><tt class="py-lineno"> 901</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_show_imports</tt><tt class="py-op">:</tt> </tt>
+<a name="L902"></a><tt class="py-lineno"> 902</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-312" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_imports" class="py-name" href="#" onclick="return doclink('link-312', 'write_imports', 'link-240');">write_imports</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-name">doc</tt><tt class="py-op">)</tt> </tt>
+<a name="L903"></a><tt class="py-lineno"> 903</tt>  <tt class="py-line"> </tt>
+<a name="L904"></a><tt class="py-lineno"> 904</tt>  <tt class="py-line">        <tt class="py-comment"># Write detailed descriptions of functions & variables defined</tt> </tt>
+<a name="L905"></a><tt class="py-lineno"> 905</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># in this class.</tt> </tt>
+<a name="L906"></a><tt class="py-lineno"> 906</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># [xx] why group methods into one section but split vars into two?</tt> </tt>
+<a name="L907"></a><tt class="py-lineno"> 907</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># seems like we should either group in both cases or split in both</tt> </tt>
+<a name="L908"></a><tt class="py-lineno"> 908</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># cases.</tt> </tt>
+<a name="L909"></a><tt class="py-lineno"> 909</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-313" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_details_list" class="py-name" href="#" onclick="return doclink('link-313', 'write_details_list', 'link-241');">write_details_list</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-string">"Method Det [...]
+<a name="L910"></a><tt class="py-lineno"> 910</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-314" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_details_list" class="py-name" href="#" onclick="return doclink('link-314', 'write_details_list', 'link-241');">write_details_list</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-string">"Class Variable Details"</tt><tt class= [...]
+<a name="L911"></a><tt class="py-lineno"> 911</tt>  <tt class="py-line">                                <tt class="py-string">"classvariable"</tt><tt class="py-op">)</tt> </tt>
+<a name="L912"></a><tt class="py-lineno"> 912</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-315" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_details_list" class="py-name" href="#" onclick="return doclink('link-315', 'write_details_list', 'link-241');">write_details_list</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-string">"Instance Variable Details"</tt><tt cla [...]
+<a name="L913"></a><tt class="py-lineno"> 913</tt>  <tt class="py-line">                                <tt class="py-string">"instancevariable"</tt><tt class="py-op">)</tt> </tt>
+<a name="L914"></a><tt class="py-lineno"> 914</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-316" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_details_list" class="py-name" href="#" onclick="return doclink('link-316', 'write_details_list', 'link-241');">write_details_list</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-string">"Property Details"</tt><tt class="py-op [...]
+<a name="L915"></a><tt class="py-lineno"> 915</tt>  <tt class="py-line"> </tt>
+<a name="L916"></a><tt class="py-lineno"> 916</tt>  <tt class="py-line">        <tt class="py-comment"># Write the page footer (including navigation bar)</tt> </tt>
+<a name="L917"></a><tt class="py-lineno"> 917</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-317" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_navbar" class="py-name" href="#" onclick="return doclink('link-317', 'write_navbar', 'link-223');">write_navbar</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-name">doc</tt><tt class="py-op">)</tt> </tt>
+<a name="L918"></a><tt class="py-lineno"> 918</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-318" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_footer" class="py-name" href="#" onclick="return doclink('link-318', 'write_footer', 'link-244');">write_footer</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L919"></a><tt class="py-lineno"> 919</tt>  <tt class="py-line"> </tt>
+<a name="HTMLWriter.write_class_tree_graph"></a><div id="HTMLWriter.write_class_tree_graph-def"><a name="L920"></a><tt class="py-lineno"> 920</tt> <a class="py-toggle" href="#" id="HTMLWriter.write_class_tree_graph-toggle" onclick="return toggle('HTMLWriter.write_class_tree_graph');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html.HTMLWriter-class.html#write_class_tree_graph">write_class_tree_graph</a><tt class="py-op">(</tt [...]
+</div><div id="HTMLWriter.write_class_tree_graph-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLWriter.write_class_tree_graph-expanded"><a name="L921"></a><tt class="py-lineno"> 921</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L922"></a><tt class="py-lineno"> 922</tt>  <tt class="py-line"><tt class="py-docstring">        Write HTML code for a class tree graph of C{doc} (a classdoc),</tt> </tt>
+<a name="L923"></a><tt class="py-lineno"> 923</tt>  <tt class="py-line"><tt class="py-docstring">        using C{graphmaker} to draw the actual graph.  C{graphmaker}</tt> </tt>
+<a name="L924"></a><tt class="py-lineno"> 924</tt>  <tt class="py-line"><tt class="py-docstring">        should be L{class_tree_graph()}, or L{uml_class_tree_graph()},</tt> </tt>
+<a name="L925"></a><tt class="py-lineno"> 925</tt>  <tt class="py-line"><tt class="py-docstring">        or any other function with a compatible signature.</tt> </tt>
+<a name="L926"></a><tt class="py-lineno"> 926</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L927"></a><tt class="py-lineno"> 927</tt>  <tt class="py-line"><tt class="py-docstring">        If the given class has any private sublcasses (including</tt> </tt>
+<a name="L928"></a><tt class="py-lineno"> 928</tt>  <tt class="py-line"><tt class="py-docstring">        recursive subclasses), then two graph images will be generated</tt> </tt>
+<a name="L929"></a><tt class="py-lineno"> 929</tt>  <tt class="py-line"><tt class="py-docstring">        -- one to display when private values are shown, and the other</tt> </tt>
+<a name="L930"></a><tt class="py-lineno"> 930</tt>  <tt class="py-line"><tt class="py-docstring">        to display when private values are hidden.</tt> </tt>
+<a name="L931"></a><tt class="py-lineno"> 931</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L932"></a><tt class="py-lineno"> 932</tt>  <tt class="py-line">        <tt class="py-name">linker</tt> <tt class="py-op">=</tt> <tt id="link-319" class="py-name" targets="Class epydoc.docwriter.html._HTMLDocstringLinker=epydoc.docwriter.html._HTMLDocstringLinker-class.html"><a title="epydoc.docwriter.html._HTMLDocstringLinker" class="py-name" href="#" onclick="return doclink('link-319', '_HTMLDocstringLinker', 'link-319');">_HTMLDocstringLinker</a></tt><tt class="py-op">(</tt><t [...]
+<a name="L933"></a><tt class="py-lineno"> 933</tt>  <tt class="py-line">        <tt class="py-name">private_subcls</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-320" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter._private_subclasses()=epydoc.docwriter.html.HTMLWriter-class.html#_private_subclasses"><a title="epydoc.docwriter.html.HTMLWriter._private_subclasses" class="py-name" href="#" onclick="return doclink('link-320', [...]
+<a name="L934"></a><tt class="py-lineno"> 934</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">private_subcls</tt><tt class="py-op">:</tt> </tt>
+<a name="L935"></a><tt class="py-lineno"> 935</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'<center>\n'</tt> </tt>
+<a name="L936"></a><tt class="py-lineno"> 936</tt>  <tt class="py-line">                <tt class="py-string">'  <div class="private">%s</div>\n'</tt> </tt>
+<a name="L937"></a><tt class="py-lineno"> 937</tt>  <tt class="py-line">                <tt class="py-string">'  <div class="public" style="display:none">%s</div>\n'</tt> </tt>
+<a name="L938"></a><tt class="py-lineno"> 938</tt>  <tt class="py-line">                <tt class="py-string">'</center>\n'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L939"></a><tt class="py-lineno"> 939</tt>  <tt class="py-line">                <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-321" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.render_graph()=epydoc.docwriter.html.HTMLWriter-class.html#render_graph"><a title="epydoc.docwriter.html.HTMLWriter.render_graph" class="py-name" href="#" onclick="return doclink('link-321', 'render_graph', 'link-321');">render_graph</a></tt><t [...]
+<a name="L940"></a><tt class="py-lineno"> 940</tt>  <tt class="py-line">                 <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-322" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.render_graph" class="py-name" href="#" onclick="return doclink('link-322', 'render_graph', 'link-321');">render_graph</a></tt><tt class="py-op">(</tt><tt class="py-name">graphmaker</tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt class=" [...]
+<a name="L941"></a><tt class="py-lineno"> 941</tt>  <tt class="py-line">                                              <tt class="py-name">exclude</tt><tt class="py-op">=</tt><tt class="py-name">private_subcls</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L942"></a><tt class="py-lineno"> 942</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L943"></a><tt class="py-lineno"> 943</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'<center>\n%s\n</center>\n'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L944"></a><tt class="py-lineno"> 944</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-323" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.render_graph" class="py-name" href="#" onclick="return doclink('link-323', 'render_graph', 'link-321');">render_graph</a></tt><tt class="py-op">(</tt><tt class="py-name">graphmaker</tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt class="p [...]
+</div><a name="L945"></a><tt class="py-lineno"> 945</tt>  <tt class="py-line"> </tt>
+<a name="L946"></a><tt class="py-lineno"> 946</tt>  <tt class="py-line">    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L947"></a><tt class="py-lineno"> 947</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#{ 2.3. Trees pages</tt> </tt>
+<a name="L948"></a><tt class="py-lineno"> 948</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L949"></a><tt class="py-lineno"> 949</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="HTMLWriter.write_module_tree"></a><div id="HTMLWriter.write_module_tree-def"><a name="L950"></a><tt class="py-lineno"> 950</tt> <a class="py-toggle" href="#" id="HTMLWriter.write_module_tree-toggle" onclick="return toggle('HTMLWriter.write_module_tree');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html.HTMLWriter-class.html#write_module_tree">write_module_tree</a><tt class="py-op">(</tt><tt class="py-param">self</tt [...]
+</div><div id="HTMLWriter.write_module_tree-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLWriter.write_module_tree-expanded"><a name="L951"></a><tt class="py-lineno"> 951</tt>  <tt class="py-line">        <tt class="py-comment"># Header material</tt> </tt>
+<a name="L952"></a><tt class="py-lineno"> 952</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-324" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.write_treepage_header()=epydoc.docwriter.html.HTMLWriter-class.html#write_treepage_header"><a title="epydoc.docwriter.html.HTMLWriter.write_treepage_header" class="py-name" href="#" onclick="return doclink('link-324', 'write_treepage_header', 'link [...]
+<a name="L953"></a><tt class="py-lineno"> 953</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'<h1 class="epydoc">Module Hierarchy</h1>\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L954"></a><tt class="py-lineno"> 954</tt>  <tt class="py-line"> </tt>
+<a name="L955"></a><tt class="py-lineno"> 955</tt>  <tt class="py-line">        <tt class="py-comment"># Write entries for all top-level modules/packages.</tt> </tt>
+<a name="L956"></a><tt class="py-lineno"> 956</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'<ul class="nomargin-top">\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L957"></a><tt class="py-lineno"> 957</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">module_list</tt><tt class="py-op">:</tt> </tt>
+<a name="L958"></a><tt class="py-lineno"> 958</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-325" class="py-name" targets="Variable epydoc.apidoc.ModuleDoc.package=epydoc.apidoc.ModuleDoc-class.html#package"><a title="epydoc.apidoc.ModuleDoc.package" class="py-name" href="#" onclick="return doclink('link-325', 'package', 'link-325');">package</a></tt> <tt class="py-keyword">in</ [...]
+<a name="L959"></a><tt class="py-lineno"> 959</tt>  <tt class="py-line">                <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-327" class="py-name"><a title="epydoc.apidoc.ModuleDoc.package" class="py-name" href="#" onclick="return doclink('link-327', 'package', 'link-325');">package</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">module_set</tt><tt class="py-op">)</ [...]
+<a name="L960"></a><tt class="py-lineno"> 960</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-328" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.write_module_tree_item()=epydoc.docwriter.html.HTMLWriter-class.html#write_module_tree_item,Method epydoc.docwriter.latex.LatexWriter.write_module_tree_item()=epydoc.docwriter.latex.LatexWriter-class.html#write_module_tree_item"><a title="epydoc.docwriter.html.HTMLWri [...]
+epydoc.docwriter.latex.LatexWriter.write_module_tree_item" class="py-name" href="#" onclick="return doclink('link-328', 'write_module_tree_item', 'link-328');">write_module_tree_item</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-name">doc</tt><tt class="py-op">)</tt> </tt>
+<a name="L961"></a><tt class="py-lineno"> 961</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'</ul>\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L962"></a><tt class="py-lineno"> 962</tt>  <tt class="py-line"> </tt>
+<a name="L963"></a><tt class="py-lineno"> 963</tt>  <tt class="py-line">        <tt class="py-comment"># Footer material</tt> </tt>
+<a name="L964"></a><tt class="py-lineno"> 964</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-329" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_navbar" class="py-name" href="#" onclick="return doclink('link-329', 'write_navbar', 'link-223');">write_navbar</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-string">'trees'</tt><tt class="py-op" [...]
+<a name="L965"></a><tt class="py-lineno"> 965</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-330" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_footer" class="py-name" href="#" onclick="return doclink('link-330', 'write_footer', 'link-244');">write_footer</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L966"></a><tt class="py-lineno"> 966</tt>  <tt class="py-line"> </tt>
+<a name="HTMLWriter.write_class_tree"></a><div id="HTMLWriter.write_class_tree-def"><a name="L967"></a><tt class="py-lineno"> 967</tt> <a class="py-toggle" href="#" id="HTMLWriter.write_class_tree-toggle" onclick="return toggle('HTMLWriter.write_class_tree');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html.HTMLWriter-class.html#write_class_tree">write_class_tree</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt c [...]
+</div><div id="HTMLWriter.write_class_tree-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLWriter.write_class_tree-expanded"><a name="L968"></a><tt class="py-lineno"> 968</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L969"></a><tt class="py-lineno"> 969</tt>  <tt class="py-line"><tt class="py-docstring">        Write HTML code for a nested list showing the base/subclass</tt> </tt>
+<a name="L970"></a><tt class="py-lineno"> 970</tt>  <tt class="py-line"><tt class="py-docstring">        relationships between all documented classes.  Each element of</tt> </tt>
+<a name="L971"></a><tt class="py-lineno"> 971</tt>  <tt class="py-line"><tt class="py-docstring">        the top-level list is a class with no (documented) bases; and</tt> </tt>
+<a name="L972"></a><tt class="py-lineno"> 972</tt>  <tt class="py-line"><tt class="py-docstring">        under each class is listed all of its subclasses.  Note that</tt> </tt>
+<a name="L973"></a><tt class="py-lineno"> 973</tt>  <tt class="py-line"><tt class="py-docstring">        in the case of multiple inheritance, a class may appear</tt> </tt>
+<a name="L974"></a><tt class="py-lineno"> 974</tt>  <tt class="py-line"><tt class="py-docstring">        multiple times.  </tt> </tt>
+<a name="L975"></a><tt class="py-lineno"> 975</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt>
+<a name="L976"></a><tt class="py-lineno"> 976</tt>  <tt class="py-line"><tt class="py-docstring">        @todo: For multiple inheritance, don't repeat subclasses the</tt> </tt>
+<a name="L977"></a><tt class="py-lineno"> 977</tt>  <tt class="py-line"><tt class="py-docstring">            second time a class is mentioned; instead, link to the</tt> </tt>
+<a name="L978"></a><tt class="py-lineno"> 978</tt>  <tt class="py-line"><tt class="py-docstring">            first mention.</tt> </tt>
+<a name="L979"></a><tt class="py-lineno"> 979</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L980"></a><tt class="py-lineno"> 980</tt>  <tt class="py-line">        <tt class="py-comment"># [XX] backref for multiple inheritance?</tt> </tt>
+<a name="L981"></a><tt class="py-lineno"> 981</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># Header material</tt> </tt>
+<a name="L982"></a><tt class="py-lineno"> 982</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-331" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_treepage_header" class="py-name" href="#" onclick="return doclink('link-331', 'write_treepage_header', 'link-324');">write_treepage_header</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-string">'C [...]
+<a name="L983"></a><tt class="py-lineno"> 983</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'<h1 class="epydoc">Class Hierarchy</h1>\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L984"></a><tt class="py-lineno"> 984</tt>  <tt class="py-line"> </tt>
+<a name="L985"></a><tt class="py-lineno"> 985</tt>  <tt class="py-line">        <tt class="py-comment"># Build a set containing all classes that we should list.</tt> </tt>
+<a name="L986"></a><tt class="py-lineno"> 986</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># This includes everything in class_list, plus any of those</tt> </tt>
+<a name="L987"></a><tt class="py-lineno"> 987</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># class' bases, but not undocumented subclasses.</tt> </tt>
+<a name="L988"></a><tt class="py-lineno"> 988</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">class_set</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">class_set</tt><tt class="py-op">.</tt><tt class="py-name">copy</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L989"></a><tt class="py-lineno"> 989</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">class_list</tt><tt class="py-op">:</tt> </tt>
+<a name="L990"></a><tt class="py-lineno"> 990</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-332" class="py-name"><a title="epydoc.apidoc.ClassDoc.bases" class="py-name" href="#" onclick="return doclink('link-332', 'bases', 'link-52');">bases</a></tt> <tt class="py-op">!=</tt> <tt id="link-333" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-333', [...]
+<a name="L991"></a><tt class="py-lineno"> 991</tt>  <tt class="py-line">                <tt class="py-keyword">for</tt> <tt class="py-name">base</tt> <tt class="py-keyword">in</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-334" class="py-name"><a title="epydoc.apidoc.ClassDoc.bases" class="py-name" href="#" onclick="return doclink('link-334', 'bases', 'link-52');">bases</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L992"></a><tt class="py-lineno"> 992</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">base</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">class_set</tt><tt class="py-op">:</tt> </tt>
+<a name="L993"></a><tt class="py-lineno"> 993</tt>  <tt class="py-line">                        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">base</tt><tt class="py-op">,</tt> <tt id="link-335" class="py-name"><a title="epydoc.apidoc.ClassDoc" class="py-name" href="#" onclick="return doclink('link-335', 'ClassDoc', 'link-56');">ClassDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L994"></a><tt class="py-lineno"> 994</tt>  <tt class="py-line">                            <tt class="py-name">class_set</tt><tt class="py-op">.</tt><tt class="py-name">update</tt><tt class="py-op">(</tt><tt class="py-name">base</tt><tt class="py-op">.</tt><tt id="link-336" class="py-name" targets="Method epydoc.apidoc.ClassDoc.mro()=epydoc.apidoc.ClassDoc-class.html#mro"><a title="epydoc.apidoc.ClassDoc.mro" class="py-name" href="#" onclick="return doclink('link-336', 'mro', 'l [...]
+<a name="L995"></a><tt class="py-lineno"> 995</tt>  <tt class="py-line">                        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L996"></a><tt class="py-lineno"> 996</tt>  <tt class="py-line">                            <tt class="py-comment"># [XX] need to deal with this -- how?</tt> </tt>
+<a name="L997"></a><tt class="py-lineno"> 997</tt>  <tt class="py-line"><tt class="py-comment"></tt>                            <tt class="py-keyword">pass</tt> </tt>
+<a name="L998"></a><tt class="py-lineno"> 998</tt>  <tt class="py-line">                            <tt class="py-comment">#class_set.add(base)</tt> </tt>
+<a name="L999"></a><tt class="py-lineno"> 999</tt>  <tt class="py-line"><tt class="py-comment"></tt>  </tt>
+<a name="L1000"></a><tt class="py-lineno">1000</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'<ul class="nomargin-top">\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1001"></a><tt class="py-lineno">1001</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">doc</tt> <tt class="py-keyword">in</tt> <tt id="link-337" class="py-name"><a title="epydoc.compat.sorted" class="py-name" href="#" onclick="return doclink('link-337', 'sorted', 'link-49');">sorted</a></tt><tt class="py-op">(</tt><tt class="py-name">class_set</tt><tt class="py-op">,</tt> <tt id="link-338" class="py-name"><a title="epydoc.cli.key" class="py-n [...]
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-339', 'canonical_name', 'link-82');">canonical_name</a></tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1002"></a><tt class="py-lineno">1002</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-340" class="py-name"><a title="epydoc.apidoc.ClassDoc.bases" class="py-name" href="#" onclick="return doclink('link-340', 'bases', 'link-52');">bases</a></tt> <tt class="py-op">!=</tt> <tt id="link-341" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-341' [...]
+<a name="L1003"></a><tt class="py-lineno">1003</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-343" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.write_class_tree_item()=epydoc.docwriter.html.HTMLWriter-class.html#write_class_tree_item"><a title="epydoc.docwriter.html.HTMLWriter.write_class_tree_item" class="py-name" href="#" onclick="return doclink('link-343', 'write_class_tree_item', 'link-343');">write_clas [...]
+<a name="L1004"></a><tt class="py-lineno">1004</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'</ul>\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1005"></a><tt class="py-lineno">1005</tt>  <tt class="py-line">         </tt>
+<a name="L1006"></a><tt class="py-lineno">1006</tt>  <tt class="py-line">        <tt class="py-comment"># Footer material</tt> </tt>
+<a name="L1007"></a><tt class="py-lineno">1007</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-344" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_navbar" class="py-name" href="#" onclick="return doclink('link-344', 'write_navbar', 'link-223');">write_navbar</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-string">'trees'</tt><tt class="py-op [...]
+<a name="L1008"></a><tt class="py-lineno">1008</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-345" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_footer" class="py-name" href="#" onclick="return doclink('link-345', 'write_footer', 'link-244');">write_footer</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1009"></a><tt class="py-lineno">1009</tt>  <tt class="py-line"> </tt>
+<a name="HTMLWriter.write_treepage_header"></a><div id="HTMLWriter.write_treepage_header-def"><a name="L1010"></a><tt class="py-lineno">1010</tt> <a class="py-toggle" href="#" id="HTMLWriter.write_treepage_header-toggle" onclick="return toggle('HTMLWriter.write_treepage_header');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html.HTMLWriter-class.html#write_treepage_header">write_treepage_header</a><tt class="py-op">(</tt><tt  [...]
+</div><div id="HTMLWriter.write_treepage_header-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLWriter.write_treepage_header-expanded"><a name="L1011"></a><tt class="py-lineno">1011</tt>  <tt class="py-line">        <tt class="py-comment"># Header material.</tt> </tt>
+<a name="L1012"></a><tt class="py-lineno">1012</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-346" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_header
+epydoc.docwriter.latex.LatexWriter.write_header" class="py-name" href="#" onclick="return doclink('link-346', 'write_header', 'link-222');">write_header</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt id="link-347" class="py-name" targets="Method epydoc.docwriter.plaintext.PlaintextWriter.title()=epydoc.docwriter.plaintext.PlaintextWriter-class.html#title"><a title="epydoc.docwriter.plaintext.PlaintextWriter.title" class="py-name" href="#" onclick [...]
+<a name="L1013"></a><tt class="py-lineno">1013</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-348" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_navbar" class="py-name" href="#" onclick="return doclink('link-348', 'write_navbar', 'link-223');">write_navbar</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-string">'trees'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1014"></a><tt class="py-lineno">1014</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-349" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_breadcrumbs" class="py-name" href="#" onclick="return doclink('link-349', 'write_breadcrumbs', 'link-224');">write_breadcrumbs</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-string">'trees'</tt><tt class="py-op">,</tt> <tt  [...]
+<a name="L1015"></a><tt class="py-lineno">1015</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">class_list</tt> <tt class="py-keyword">and</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">module_list</tt><tt class="py-op">:</tt> </tt>
+<a name="L1016"></a><tt class="py-lineno">1016</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'<center><b>\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1017"></a><tt class="py-lineno">1017</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">' [ <a href="module-tree.html">Module Hierarchy</a>\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1018"></a><tt class="py-lineno">1018</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">' | <a href="class-tree.html">Class Hierarchy</a> ]\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1019"></a><tt class="py-lineno">1019</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'</b></center><br />\n'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1020"></a><tt class="py-lineno">1020</tt>  <tt class="py-line"> </tt>
+<a name="L1021"></a><tt class="py-lineno">1021</tt>  <tt class="py-line"> </tt>
+<a name="L1022"></a><tt class="py-lineno">1022</tt>  <tt class="py-line">    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L1023"></a><tt class="py-lineno">1023</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#{ 2.4. Index pages</tt> </tt>
+<a name="L1024"></a><tt class="py-lineno">1024</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L1025"></a><tt class="py-lineno">1025</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L1026"></a><tt class="py-lineno">1026</tt>  <tt class="py-line">    <tt id="link-351" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.SPLIT_IDENT_INDEX_SIZE" class="py-name" href="#" onclick="return doclink('link-351', 'SPLIT_IDENT_INDEX_SIZE', 'link-65');">SPLIT_IDENT_INDEX_SIZE</a></tt> <tt class="py-op">=</tt> <tt class="py-number">3000</tt> </tt>
+<a name="L1027"></a><tt class="py-lineno">1027</tt>  <tt class="py-line">    <tt class="py-string">"""If the identifier index has more than this number of entries,</tt> </tt>
+<a name="L1028"></a><tt class="py-lineno">1028</tt>  <tt class="py-line"><tt class="py-string">    then it will be split into separate pages, one for each</tt> </tt>
+<a name="L1029"></a><tt class="py-lineno">1029</tt>  <tt class="py-line"><tt class="py-string">    alphabetical section."""</tt> </tt>
+<a name="L1030"></a><tt class="py-lineno">1030</tt>  <tt class="py-line"> </tt>
+<a name="L1031"></a><tt class="py-lineno">1031</tt>  <tt class="py-line">    <tt id="link-352" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.LETTERS" class="py-name" href="#" onclick="return doclink('link-352', 'LETTERS', 'link-70');">LETTERS</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'</tt> </tt>
+<a name="L1032"></a><tt class="py-lineno">1032</tt>  <tt class="py-line">    <tt class="py-string">"""The alphabetical sections that are used for link index pages."""</tt> </tt>
+<a name="L1033"></a><tt class="py-lineno">1033</tt>  <tt class="py-line">     </tt>
+<a name="HTMLWriter.write_link_index"></a><div id="HTMLWriter.write_link_index-def"><a name="L1034"></a><tt class="py-lineno">1034</tt> <a class="py-toggle" href="#" id="HTMLWriter.write_link_index-toggle" onclick="return toggle('HTMLWriter.write_link_index');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html.HTMLWriter-class.html#write_link_index">write_link_index</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt  [...]
+<a name="L1035"></a><tt class="py-lineno">1035</tt>  <tt class="py-line">                         <tt class="py-param">sections</tt><tt class="py-op">=</tt><tt id="link-353" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.LETTERS" class="py-name" href="#" onclick="return doclink('link-353', 'LETTERS', 'link-70');">LETTERS</a></tt><tt class="py-op">,</tt> <tt class="py-param">section_url</tt><tt class="py-op">=</tt><tt class="py-string">'#%s'</tt><tt class="py-op">)</tt><tt cla [...]
+</div><div id="HTMLWriter.write_link_index-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLWriter.write_link_index-expanded"><a name="L1036"></a><tt class="py-lineno">1036</tt>  <tt class="py-line">         </tt>
+<a name="L1037"></a><tt class="py-lineno">1037</tt>  <tt class="py-line">        <tt class="py-comment"># Header</tt> </tt>
+<a name="L1038"></a><tt class="py-lineno">1038</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-354" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.write_indexpage_header()=epydoc.docwriter.html.HTMLWriter-class.html#write_indexpage_header"><a title="epydoc.docwriter.html.HTMLWriter.write_indexpage_header" class="py-name" href="#" onclick="return doclink('link-354', 'write_indexpage_header',  [...]
+<a name="L1039"></a><tt class="py-lineno">1039</tt>  <tt class="py-line"> </tt>
+<a name="L1040"></a><tt class="py-lineno">1040</tt>  <tt class="py-line">        <tt class="py-comment"># Index title & links to alphabetical sections.</tt> </tt>
+<a name="L1041"></a><tt class="py-lineno">1041</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'<table border="0" width="100%">\n'</tt> </tt>
+<a name="L1042"></a><tt class="py-lineno">1042</tt>  <tt class="py-line">            <tt class="py-string">'<tr valign="bottom"><td>\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1043"></a><tt class="py-lineno">1043</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'<h1 class="epydoc">%s</h1>\n</td><td>\n[\n'</tt> <tt class="py-op">%</tt> <tt id="link-357" class="py-name"><a title="epydoc.docwriter.plaintext.PlaintextWriter.title" class="py-name" href="#" onclick="return doclink('link-357', 'title', 'link-347');">title</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1044"></a><tt class="py-lineno">1044</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">sec</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-358" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.LETTERS" class="py-name" href="#" onclick="return doclink('link-358', 'LETTERS', 'link-70');">LETTERS</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1045"></a><tt class="py-lineno">1045</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">sec</tt> <tt class="py-keyword">in</tt> <tt class="py-name">index_by_section</tt><tt class="py-op">:</tt> </tt>
+<a name="L1046"></a><tt class="py-lineno">1046</tt>  <tt class="py-line">                <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">' <a href="%s">%s</a>\n'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">section_url</tt> <tt class="py-op">%</tt> <tt class="py-name">sec</tt><tt class="py-op">,</tt> <tt class="py-name">sec</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1047"></a><tt class="py-lineno">1047</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1048"></a><tt class="py-lineno">1048</tt>  <tt class="py-line">                <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'  %s\n'</tt> <tt class="py-op">%</tt> <tt class="py-name">sec</tt><tt class="py-op">)</tt> </tt>
+<a name="L1049"></a><tt class="py-lineno">1049</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">']\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1050"></a><tt class="py-lineno">1050</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'</td></table>\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1051"></a><tt class="py-lineno">1051</tt>  <tt class="py-line"> </tt>
+<a name="L1052"></a><tt class="py-lineno">1052</tt>  <tt class="py-line">        <tt class="py-comment"># Alphabetical sections.</tt> </tt>
+<a name="L1053"></a><tt class="py-lineno">1053</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">sections</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">s</tt> <tt class="py-keyword">for</tt> <tt class="py-name">s</tt> <tt class="py-keyword">in</tt> <tt class="py-name">sections</tt> <tt class="py-keyword">if</tt> <tt class="py-name">s</tt> <tt class="py-keyword">in</tt> <tt class="py-name">index_by_section</tt><tt class="py-op">] [...]
+<a name="L1054"></a><tt class="py-lineno">1054</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">sections</tt><tt class="py-op">:</tt> </tt>
+<a name="L1055"></a><tt class="py-lineno">1055</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'<table border="0" width="100%">\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1056"></a><tt class="py-lineno">1056</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt id="link-359" class="py-name" targets="Method epydoc.docwriter.latex.LatexWriter.section()=epydoc.docwriter.latex.LatexWriter-class.html#section,Method epydoc.docwriter.plaintext.PlaintextWriter.section()=epydoc.docwriter.plaintext.PlaintextWriter-class.html#section"><a title="epydoc.docwriter.latex.LatexWriter.section
+epydoc.docwriter.plaintext.PlaintextWriter.section" class="py-name" href="#" onclick="return doclink('link-359', 'section', 'link-359');">section</a></tt> <tt class="py-keyword">in</tt> <tt id="link-360" class="py-name"><a title="epydoc.compat.sorted" class="py-name" href="#" onclick="return doclink('link-360', 'sorted', 'link-49');">sorted</a></tt><tt class="py-op">(</tt><tt class="py-name">sections</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1057"></a><tt class="py-lineno">1057</tt>  <tt class="py-line">                <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'<tr valign="top"><td valign="top" width="1%">'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1058"></a><tt class="py-lineno">1058</tt>  <tt class="py-line">                <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'<h2 class="epydoc"><a name="%s">%s</a></h2></td>\n'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L1059"></a><tt class="py-lineno">1059</tt>  <tt class="py-line">                    <tt class="py-op">(</tt><tt id="link-361" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.section
+epydoc.docwriter.plaintext.PlaintextWriter.section" class="py-name" href="#" onclick="return doclink('link-361', 'section', 'link-359');">section</a></tt><tt class="py-op">,</tt> <tt id="link-362" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.section
+epydoc.docwriter.plaintext.PlaintextWriter.section" class="py-name" href="#" onclick="return doclink('link-362', 'section', 'link-359');">section</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1060"></a><tt class="py-lineno">1060</tt>  <tt class="py-line">                <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'<td valign="top">\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1061"></a><tt class="py-lineno">1061</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-363" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.write_index_section()=epydoc.docwriter.html.HTMLWriter-class.html#write_index_section"><a title="epydoc.docwriter.html.HTMLWriter.write_index_section" class="py-name" href="#" onclick="return doclink('link-363', 'write_index_section', 'link-363');">write_index_sectio [...]
+epydoc.docwriter.plaintext.PlaintextWriter.section" class="py-name" href="#" onclick="return doclink('link-364', 'section', 'link-359');">section</a></tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">True</tt><tt class="py-op">)</tt> </tt>
+<a name="L1062"></a><tt class="py-lineno">1062</tt>  <tt class="py-line">                <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'</td></tr>\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1063"></a><tt class="py-lineno">1063</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'</table>\n<br />'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1064"></a><tt class="py-lineno">1064</tt>  <tt class="py-line"> </tt>
+<a name="L1065"></a><tt class="py-lineno">1065</tt>  <tt class="py-line">        <tt class="py-comment"># Footer material.</tt> </tt>
+<a name="L1066"></a><tt class="py-lineno">1066</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'<br />'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1067"></a><tt class="py-lineno">1067</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-365" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_navbar" class="py-name" href="#" onclick="return doclink('link-365', 'write_navbar', 'link-223');">write_navbar</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-string">'indices'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1068"></a><tt class="py-lineno">1068</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-366" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_footer" class="py-name" href="#" onclick="return doclink('link-366', 'write_footer', 'link-244');">write_footer</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1069"></a><tt class="py-lineno">1069</tt>  <tt class="py-line">                 </tt>
+<a name="L1070"></a><tt class="py-lineno">1070</tt>  <tt class="py-line">         </tt>
+<a name="HTMLWriter.write_metadata_index"></a><div id="HTMLWriter.write_metadata_index-def"><a name="L1071"></a><tt class="py-lineno">1071</tt> <a class="py-toggle" href="#" id="HTMLWriter.write_metadata_index-toggle" onclick="return toggle('HTMLWriter.write_metadata_index');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html.HTMLWriter-class.html#write_metadata_index">write_metadata_index</a><tt class="py-op">(</tt><tt class= [...]
+</div><div id="HTMLWriter.write_metadata_index-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLWriter.write_metadata_index-expanded"><a name="L1072"></a><tt class="py-lineno">1072</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L1073"></a><tt class="py-lineno">1073</tt>  <tt class="py-line"><tt class="py-docstring">        Write an HTML page containing a metadata index.</tt> </tt>
+<a name="L1074"></a><tt class="py-lineno">1074</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L1075"></a><tt class="py-lineno">1075</tt>  <tt class="py-line">        <tt class="py-name">index</tt> <tt class="py-op">=</tt> <tt class="py-name">indices</tt><tt class="py-op">[</tt><tt class="py-name">field</tt><tt class="py-op">]</tt> </tt>
+<a name="L1076"></a><tt class="py-lineno">1076</tt>  <tt class="py-line">         </tt>
+<a name="L1077"></a><tt class="py-lineno">1077</tt>  <tt class="py-line">        <tt class="py-comment"># Header material.</tt> </tt>
+<a name="L1078"></a><tt class="py-lineno">1078</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-367" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_indexpage_header" class="py-name" href="#" onclick="return doclink('link-367', 'write_indexpage_header', 'link-354');">write_indexpage_header</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-name"> [...]
+<a name="L1079"></a><tt class="py-lineno">1079</tt>  <tt class="py-line">                                    <tt class="py-string">'%s-index.html'</tt> <tt class="py-op">%</tt> <tt class="py-name">field</tt><tt class="py-op">)</tt> </tt>
+<a name="L1080"></a><tt class="py-lineno">1080</tt>  <tt class="py-line"> </tt>
+<a name="L1081"></a><tt class="py-lineno">1081</tt>  <tt class="py-line">        <tt class="py-comment"># Page title.</tt> </tt>
+<a name="L1082"></a><tt class="py-lineno">1082</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'<h1 class="epydoc"><a name="%s">%s</a></h1>\n<br />\n'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L1083"></a><tt class="py-lineno">1083</tt>  <tt class="py-line">            <tt class="py-op">(</tt><tt class="py-name">field</tt><tt class="py-op">,</tt> <tt id="link-369" class="py-name"><a title="epydoc.docwriter.plaintext.PlaintextWriter.title" class="py-name" href="#" onclick="return doclink('link-369', 'title', 'link-347');">title</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1084"></a><tt class="py-lineno">1084</tt>  <tt class="py-line"> </tt>
+<a name="L1085"></a><tt class="py-lineno">1085</tt>  <tt class="py-line">        <tt class="py-comment"># Index (one section per arg)</tt> </tt>
+<a name="L1086"></a><tt class="py-lineno">1086</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">for</tt> <tt id="link-370" class="py-name" targets="Method epydoc.markup.Field.arg()=epydoc.markup.Field-class.html#arg"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-370', 'arg', 'link-370');">arg</a></tt> <tt class="py-keyword">in</tt> <tt id="link-371" class="py-name"><a title="epydoc.compat.sorted" class="py-na [...]
+<a name="L1087"></a><tt class="py-lineno">1087</tt>  <tt class="py-line">            <tt class="py-comment"># Write a section title.</tt> </tt>
+<a name="L1088"></a><tt class="py-lineno">1088</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt id="link-372" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-372', 'arg', 'link-370');">arg</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1089"></a><tt class="py-lineno">1089</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-number">1</tt> <tt class="py-keyword">for</tt> <tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt class="py-name">descrs</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-name">index</tt><tt class="py-op">[</tt><tt id="link-373" [...]
+<a name="L1090"></a><tt class="py-lineno">1090</tt>  <tt class="py-line">                        <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-374" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter._doc_or_ancestor_is_private()=epydoc.docwriter.html.HTMLWriter-class.html#_doc_or_ancestor_is_private"><a title="epydoc.docwriter.html.HTMLWriter._doc_or_ancestor_is_private" class="py-name" href="#" onclick="return doclink('li [...]
+<a name="L1091"></a><tt class="py-lineno">1091</tt>  <tt class="py-line">                    <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'<div class="private">'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1092"></a><tt class="py-lineno">1092</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1093"></a><tt class="py-lineno">1093</tt>  <tt class="py-line">                    <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'<div>'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1094"></a><tt class="py-lineno">1094</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-375" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.write_table_header()=epydoc.docwriter.html.HTMLWriter-class.html#write_table_header"><a title="epydoc.docwriter.html.HTMLWriter.write_table_header" class="py-name" href="#" onclick="return doclink('link-375', 'write_table_header', 'link-375');">write_table_header</a> [...]
+<a name="L1095"></a><tt class="py-lineno">1095</tt>  <tt class="py-line">                <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'</table>'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1096"></a><tt class="py-lineno">1096</tt>  <tt class="py-line">            <tt class="py-comment"># List every descr for this arg.</tt> </tt>
+<a name="L1097"></a><tt class="py-lineno">1097</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">for</tt> <tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt class="py-name">descrs</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-name">index</tt><tt class="py-op">[</tt><tt id="link-377" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-377', [...]
+<a name="L1098"></a><tt class="py-lineno">1098</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-378" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter._doc_or_ancestor_is_private" class="py-name" href="#" onclick="return doclink('link-378', '_doc_or_ancestor_is_private', 'link-374');">_doc_or_ancestor_is_private</a></tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">) [...]
+<a name="L1099"></a><tt class="py-lineno">1099</tt>  <tt class="py-line">                    <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'<div class="private">\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1100"></a><tt class="py-lineno">1100</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1101"></a><tt class="py-lineno">1101</tt>  <tt class="py-line">                    <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'<div>\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1102"></a><tt class="py-lineno">1102</tt>  <tt class="py-line">                <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'<table width="100%" class="metadata-index" '</tt> </tt>
+<a name="L1103"></a><tt class="py-lineno">1103</tt>  <tt class="py-line">                    <tt class="py-string">'bgcolor="#e0e0e0"><tr><td class="metadata-index">'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1104"></a><tt class="py-lineno">1104</tt>  <tt class="py-line">                <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'<b>%s in %s</b>'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L1105"></a><tt class="py-lineno">1105</tt>  <tt class="py-line">                    <tt class="py-op">(</tt><tt class="py-name">typ</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-379" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.href" class="py-name" href="#" onclick="return doclink('link-379', 'href', 'link-254');">href</a></tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt id="link- [...]
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-381', 'canonical_name', 'link-82');">canonical_name</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1106"></a><tt class="py-lineno">1106</tt>  <tt class="py-line">                <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'    <ul class="nomargin">\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1107"></a><tt class="py-lineno">1107</tt>  <tt class="py-line">                <tt class="py-keyword">for</tt> <tt id="link-382" class="py-name"><a title="epydoc.apidoc.APIDoc.descr
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-382', 'descr', 'link-228');">descr</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">descrs</tt><tt class="py-op">:</tt> </tt>
+<a name="L1108"></a><tt class="py-lineno">1108</tt>  <tt class="py-line">                    <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'      <li>%s</li>\n'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L1109"></a><tt class="py-lineno">1109</tt>  <tt class="py-line">                        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-383" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.docstring_to_html()=epydoc.docwriter.html.HTMLWriter-class.html#docstring_to_html"><a title="epydoc.docwriter.html.HTMLWriter.docstring_to_html" class="py-name" href="#" onclick="return doclink('link-383', 'docstring_to_html', 'link-383');">docstring_to_html< [...]
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-384', 'descr', 'link-228');">descr</a></tt><tt class="py-op">,</tt><tt class="py-name">doc</tt><tt class="py-op">,</tt><tt class="py-number">4</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1110"></a><tt class="py-lineno">1110</tt>  <tt class="py-line">                <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'    </ul>\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1111"></a><tt class="py-lineno">1111</tt>  <tt class="py-line">                <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'</table></div>\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1112"></a><tt class="py-lineno">1112</tt>  <tt class="py-line"> </tt>
+<a name="L1113"></a><tt class="py-lineno">1113</tt>  <tt class="py-line">        <tt class="py-comment"># Footer material.</tt> </tt>
+<a name="L1114"></a><tt class="py-lineno">1114</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'<br />'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1115"></a><tt class="py-lineno">1115</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-385" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_navbar" class="py-name" href="#" onclick="return doclink('link-385', 'write_navbar', 'link-223');">write_navbar</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-string">'indices'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1116"></a><tt class="py-lineno">1116</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-386" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_footer" class="py-name" href="#" onclick="return doclink('link-386', 'write_footer', 'link-244');">write_footer</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1117"></a><tt class="py-lineno">1117</tt>  <tt class="py-line"> </tt>
+<a name="HTMLWriter.write_indexpage_header"></a><div id="HTMLWriter.write_indexpage_header-def"><a name="L1118"></a><tt class="py-lineno">1118</tt> <a class="py-toggle" href="#" id="HTMLWriter.write_indexpage_header-toggle" onclick="return toggle('HTMLWriter.write_indexpage_header');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html.HTMLWriter-class.html#write_indexpage_header">write_indexpage_header</a><tt class="py-op">(</t [...]
+</div><div id="HTMLWriter.write_indexpage_header-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLWriter.write_indexpage_header-expanded"><a name="L1119"></a><tt class="py-lineno">1119</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L1120"></a><tt class="py-lineno">1120</tt>  <tt class="py-line"><tt class="py-docstring">        A helper for the index page generation functions, which</tt> </tt>
+<a name="L1121"></a><tt class="py-lineno">1121</tt>  <tt class="py-line"><tt class="py-docstring">        generates a header that can be used to navigate between the</tt> </tt>
+<a name="L1122"></a><tt class="py-lineno">1122</tt>  <tt class="py-line"><tt class="py-docstring">        different indices.</tt> </tt>
+<a name="L1123"></a><tt class="py-lineno">1123</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L1124"></a><tt class="py-lineno">1124</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-387" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_header
+epydoc.docwriter.latex.LatexWriter.write_header" class="py-name" href="#" onclick="return doclink('link-387', 'write_header', 'link-222');">write_header</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt id="link-388" class="py-name"><a title="epydoc.docwriter.plaintext.PlaintextWriter.title" class="py-name" href="#" onclick="return doclink('link-388', 'title', 'link-347');">title</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1125"></a><tt class="py-lineno">1125</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-389" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_navbar" class="py-name" href="#" onclick="return doclink('link-389', 'write_navbar', 'link-223');">write_navbar</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-string">'indices'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1126"></a><tt class="py-lineno">1126</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-390" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_breadcrumbs" class="py-name" href="#" onclick="return doclink('link-390', 'write_breadcrumbs', 'link-224');">write_breadcrumbs</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-string">'indices'</tt><tt class="py-op">,</tt> <t [...]
+<a name="L1127"></a><tt class="py-lineno">1127</tt>  <tt class="py-line"> </tt>
+<a name="L1128"></a><tt class="py-lineno">1128</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">indices</tt><tt class="py-op">[</tt><tt class="py-string">'term'</tt><tt class="py-op">]</tt> <tt class="py-keyword">or</tt> </tt>
+<a name="L1129"></a><tt class="py-lineno">1129</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-number">1</tt> <tt class="py-keyword">for</tt> <tt class="py-op">(</tt><tt id="link-392" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-392', 'name', 'link-117');">name</a></tt><tt class="py-op">,</tt><tt class="py-name">l</tt><tt class="py-op">,</tt><tt class="py-name">l2</tt><tt class="py-op">)</tt>  [...]
+<a name="L1130"></a><tt class="py-lineno">1130</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'<center><b>[\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1131"></a><tt class="py-lineno">1131</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">' <a href="identifier-index.html">Identifiers</a>\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1132"></a><tt class="py-lineno">1132</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">indices</tt><tt class="py-op">[</tt><tt class="py-string">'term'</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L1133"></a><tt class="py-lineno">1133</tt>  <tt class="py-line">                <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'| <a href="term-index.html">Term Definitions</a>\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1134"></a><tt class="py-lineno">1134</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-op">(</tt><tt id="link-395" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-395', 'name', 'link-117');">name</a></tt><tt class="py-op">,</tt> <tt id="link-396" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.label" class="py-name" href="#" onclick="return doclink('link-396', 'label' [...]
+<a name="L1135"></a><tt class="py-lineno">1135</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">indices</tt><tt class="py-op">[</tt><tt id="link-398" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-398', 'name', 'link-117');">name</a></tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L1136"></a><tt class="py-lineno">1136</tt>  <tt class="py-line">                    <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'| <a href="%s-index.html">%s</a>\n'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L1137"></a><tt class="py-lineno">1137</tt>  <tt class="py-line">                        <tt class="py-op">(</tt><tt id="link-399" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-399', 'name', 'link-117');">name</a></tt><tt class="py-op">,</tt> <tt class="py-name">label2</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1138"></a><tt class="py-lineno">1138</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">']</b></center><br />\n'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1139"></a><tt class="py-lineno">1139</tt>  <tt class="py-line"> </tt>
+<a name="HTMLWriter.write_index_section"></a><div id="HTMLWriter.write_index_section-def"><a name="L1140"></a><tt class="py-lineno">1140</tt> <a class="py-toggle" href="#" id="HTMLWriter.write_index_section-toggle" onclick="return toggle('HTMLWriter.write_index_section');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html.HTMLWriter-class.html#write_index_section">write_index_section</a><tt class="py-op">(</tt><tt class="py-pa [...]
+</div><div id="HTMLWriter.write_index_section-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLWriter.write_index_section-expanded"><a name="L1141"></a><tt class="py-lineno">1141</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'<table class="link-index" width="100%" border="1">\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1142"></a><tt class="py-lineno">1142</tt>  <tt class="py-line">        <tt class="py-name">num_rows</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">items</tt><tt class="py-op">)</tt><tt class="py-op">+</tt><tt class="py-number">2</tt><tt class="py-op">)</tt><tt class="py-op">/</tt><tt class="py-number">3</tt> </tt>
+<a name="L1143"></a><tt class="py-lineno">1143</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">row</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-name">num_rows</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1144"></a><tt class="py-lineno">1144</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'<tr>\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1145"></a><tt class="py-lineno">1145</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">col</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-number">3</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1146"></a><tt class="py-lineno">1146</tt>  <tt class="py-line">                <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'<td width="33%" class="link-index">'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1147"></a><tt class="py-lineno">1147</tt>  <tt class="py-line">                <tt class="py-name">i</tt> <tt class="py-op">=</tt> <tt class="py-name">col</tt><tt class="py-op">*</tt><tt class="py-name">num_rows</tt><tt class="py-op">+</tt><tt class="py-name">row</tt> </tt>
+<a name="L1148"></a><tt class="py-lineno">1148</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">i</tt> <tt class="py-op"><</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">items</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1149"></a><tt class="py-lineno">1149</tt>  <tt class="py-line">                    <tt id="link-400" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-400', 'name', 'link-117');">name</a></tt><tt class="py-op">,</tt> <tt id="link-401" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.url" class="py-name" href="#" onclick="return doclink('link-401', 'url', 'link-72');">url</a></tt><tt class="py-op">,</tt> <t [...]
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-402', 'container', 'link-63');">container</a></tt> <tt class="py-op">=</tt> <tt class="py-name">items</tt><tt class="py-op">[</tt><tt class="py-name">col</tt><tt class="py-op">*</tt><tt class="py-name">num_rows</tt><tt class="py-op">+</tt><tt class="py-name">row</tt><tt class="py-op">]</tt> </tt>
+<a name="L1150"></a><tt class="py-lineno">1150</tt>  <tt class="py-line">                    <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'<a href="%s">%s</a>'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt id="link-403" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.url" class="py-name" href="#" onclick="return doclink('link-403', 'url', 'link-72');">url</a></tt><tt class="py-op">,</tt> <tt id="link-404" class="py-name"><a  [...]
+<a name="L1151"></a><tt class="py-lineno">1151</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt id="link-405" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-405', 'container', 'link-63');">container</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1152"></a><tt class="py-lineno">1152</tt>  <tt class="py-line">                        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'<br />\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1153"></a><tt class="py-lineno">1153</tt>  <tt class="py-line">                        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-406" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-406', 'container', 'link-63');">container</a></tt><tt class="py-op">,</tt> <tt id="link-407" class="py-name"><a title="epydoc.apidoc.ModuleDoc" class="py-name" href="#" onclick="return doclink('link-407', 'ModuleDoc', 'link-55');">ModuleDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1154"></a><tt class="py-lineno">1154</tt>  <tt class="py-line">                            <tt id="link-408" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.label" class="py-name" href="#" onclick="return doclink('link-408', 'label', 'link-118');">label</a></tt> <tt class="py-op">=</tt> <tt id="link-409" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-409', 'container', 'link-63');">container</a></tt><tt class="py-op">.</tt><tt id="link-410" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-410', 'canonical_name', 'link-82');">canonical_name</a></tt> </tt>
+<a name="L1155"></a><tt class="py-lineno">1155</tt>  <tt class="py-line">                        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1156"></a><tt class="py-lineno">1156</tt>  <tt class="py-line">                            <tt id="link-411" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.label" class="py-name" href="#" onclick="return doclink('link-411', 'label', 'link-118');">label</a></tt> <tt class="py-op">=</tt> <tt id="link-412" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-412', 'container', 'link-63');">container</a></tt><tt class="py-op">.</tt><tt id="link-413" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-413', 'canonical_name', 'link-82');">canonical_name</a></tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L1157"></a><tt class="py-lineno">1157</tt>  <tt class="py-line">                        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'<span class="index-where">(in&nbsp;%s)'</tt> </tt>
+<a name="L1158"></a><tt class="py-lineno">1158</tt>  <tt class="py-line">                            <tt class="py-string">'</span>'</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-414" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.href" class="py-name" href="#" onclick="return doclink('link-414', 'href', 'link-254');">href</a></tt><tt class="py-op">(</tt><tt id="link-415" class="py-name"><a title="epydoc.apidoc.DocIndex. [...]
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-415', 'container', 'link-63');">container</a></tt><tt class="py-op">,</tt> <tt id="link-416" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.label" class="py-name" href="#" onclick="return doclink('link-416', 'label', 'link-118');">label</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1159"></a><tt class="py-lineno">1159</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1160"></a><tt class="py-lineno">1160</tt>  <tt class="py-line">                    <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'&nbsp;'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1161"></a><tt class="py-lineno">1161</tt>  <tt class="py-line">                <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'</td>\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1162"></a><tt class="py-lineno">1162</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'</tr>\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1163"></a><tt class="py-lineno">1163</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">add_blankline</tt> <tt class="py-keyword">and</tt> <tt class="py-name">num_rows</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L1164"></a><tt class="py-lineno">1164</tt>  <tt class="py-line">                <tt class="py-name">blank_cell</tt> <tt class="py-op">=</tt> <tt class="py-string">'<td class="link-index">&nbsp;</td>'</tt> </tt>
+<a name="L1165"></a><tt class="py-lineno">1165</tt>  <tt class="py-line">                <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'<tr>'</tt><tt class="py-op">+</tt><tt class="py-number">3</tt><tt class="py-op">*</tt><tt class="py-name">blank_cell</tt><tt class="py-op">+</tt><tt class="py-string">'</tr>\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1166"></a><tt class="py-lineno">1166</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'</table>\n'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1167"></a><tt class="py-lineno">1167</tt>  <tt class="py-line"> </tt>
+<a name="L1168"></a><tt class="py-lineno">1168</tt>  <tt class="py-line">    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L1169"></a><tt class="py-lineno">1169</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#{ 2.5. Help Page</tt> </tt>
+<a name="L1170"></a><tt class="py-lineno">1170</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L1171"></a><tt class="py-lineno">1171</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="HTMLWriter.write_help"></a><div id="HTMLWriter.write_help-def"><a name="L1172"></a><tt class="py-lineno">1172</tt> <a class="py-toggle" href="#" id="HTMLWriter.write_help-toggle" onclick="return toggle('HTMLWriter.write_help');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html.HTMLWriter-class.html#write_help">write_help</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-p [...]
+</div><div id="HTMLWriter.write_help-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLWriter.write_help-expanded"><a name="L1173"></a><tt class="py-lineno">1173</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L1174"></a><tt class="py-lineno">1174</tt>  <tt class="py-line"><tt class="py-docstring">        Write an HTML help file to the given stream.  If</tt> </tt>
+<a name="L1175"></a><tt class="py-lineno">1175</tt>  <tt class="py-line"><tt class="py-docstring">        C{self._helpfile} contains a help file, then use it;</tt> </tt>
+<a name="L1176"></a><tt class="py-lineno">1176</tt>  <tt class="py-line"><tt class="py-docstring">        otherwise, use the default helpfile from</tt> </tt>
+<a name="L1177"></a><tt class="py-lineno">1177</tt>  <tt class="py-line"><tt class="py-docstring">        L{epydoc.docwriter.html_help}.</tt> </tt>
+<a name="L1178"></a><tt class="py-lineno">1178</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L1179"></a><tt class="py-lineno">1179</tt>  <tt class="py-line">        <tt class="py-comment"># todo: optionally parse .rst etc help files?</tt> </tt>
+<a name="L1180"></a><tt class="py-lineno">1180</tt>  <tt class="py-line"><tt class="py-comment"></tt>         </tt>
+<a name="L1181"></a><tt class="py-lineno">1181</tt>  <tt class="py-line">        <tt class="py-comment"># Get the contents of the help file.</tt> </tt>
+<a name="L1182"></a><tt class="py-lineno">1182</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_helpfile</tt><tt class="py-op">:</tt> </tt>
+<a name="L1183"></a><tt class="py-lineno">1183</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-417" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-417', 'path', 'link-211');">path</a></tt><tt class="py-op">.</tt><tt class="py-name">exists</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_he [...]
+<a name="L1184"></a><tt class="py-lineno">1184</tt>  <tt class="py-line">                <tt class="py-keyword">try</tt><tt class="py-op">:</tt> <tt class="py-name">help</tt> <tt class="py-op">=</tt> <tt id="link-418" class="py-name"><a title="epydoc.gui.EpydocGUI.open" class="py-name" href="#" onclick="return doclink('link-418', 'open', 'link-214');">open</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_helpfile</tt><tt class="py- [...]
+epydoc.docwriter.xlink.ApiLinkReader.read
+epydoc.gui.GUILogger.read" class="py-name" href="#" onclick="return doclink('link-419', 'read', 'link-419');">read</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1185"></a><tt class="py-lineno">1185</tt>  <tt class="py-line">                <tt class="py-keyword">except</tt><tt class="py-op">:</tt> <tt class="py-keyword">raise</tt> <tt class="py-name">IOError</tt><tt class="py-op">(</tt><tt class="py-string">"Can't open help file: %r"</tt> <tt class="py-op">%</tt> </tt>
+<a name="L1186"></a><tt class="py-lineno">1186</tt>  <tt class="py-line">                                      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_helpfile</tt><tt class="py-op">)</tt> </tt>
+<a name="L1187"></a><tt class="py-lineno">1187</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1188"></a><tt class="py-lineno">1188</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">IOError</tt><tt class="py-op">(</tt><tt class="py-string">"Can't find help file: %r"</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_helpfile</tt><tt class="py-op">)</tt> </tt>
+<a name="L1189"></a><tt class="py-lineno">1189</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1190"></a><tt class="py-lineno">1190</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_prj_name</tt><tt class="py-op">:</tt> <tt class="py-name">thisprj</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_prj_name</tt> </tt>
+<a name="L1191"></a><tt class="py-lineno">1191</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> <tt class="py-name">thisprj</tt> <tt class="py-op">=</tt> <tt class="py-string">'this project'</tt> </tt>
+<a name="L1192"></a><tt class="py-lineno">1192</tt>  <tt class="py-line">            <tt class="py-name">help</tt> <tt class="py-op">=</tt> <tt id="link-420" class="py-name"><a title="epydoc.docwriter.html_help.HTML_HELP" class="py-name" href="#" onclick="return doclink('link-420', 'HTML_HELP', 'link-24');">HTML_HELP</a></tt> <tt class="py-op">%</tt> <tt class="py-op">{</tt><tt class="py-string">'this_project'</tt><tt class="py-op">:</tt><tt class="py-name">thisprj</tt><tt class="py-op"> [...]
+<a name="L1193"></a><tt class="py-lineno">1193</tt>  <tt class="py-line"> </tt>
+<a name="L1194"></a><tt class="py-lineno">1194</tt>  <tt class="py-line">        <tt class="py-comment"># Insert the help contents into a webpage.</tt> </tt>
+<a name="L1195"></a><tt class="py-lineno">1195</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-421" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_header
+epydoc.docwriter.latex.LatexWriter.write_header" class="py-name" href="#" onclick="return doclink('link-421', 'write_header', 'link-222');">write_header</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-string">'Help'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1196"></a><tt class="py-lineno">1196</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-422" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_navbar" class="py-name" href="#" onclick="return doclink('link-422', 'write_navbar', 'link-223');">write_navbar</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-string">'help'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1197"></a><tt class="py-lineno">1197</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-423" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_breadcrumbs" class="py-name" href="#" onclick="return doclink('link-423', 'write_breadcrumbs', 'link-224');">write_breadcrumbs</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-string">'help'</tt><tt class="py-op">,</tt> <tt c [...]
+<a name="L1198"></a><tt class="py-lineno">1198</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-name">help</tt><tt class="py-op">)</tt> </tt>
+<a name="L1199"></a><tt class="py-lineno">1199</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-424" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_navbar" class="py-name" href="#" onclick="return doclink('link-424', 'write_navbar', 'link-223');">write_navbar</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-string">'help'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1200"></a><tt class="py-lineno">1200</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-425" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_footer" class="py-name" href="#" onclick="return doclink('link-425', 'write_footer', 'link-244');">write_footer</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1201"></a><tt class="py-lineno">1201</tt>  <tt class="py-line"> </tt>
+<a name="L1202"></a><tt class="py-lineno">1202</tt>  <tt class="py-line">    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L1203"></a><tt class="py-lineno">1203</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#{ 2.6. Frames-based Table of Contents</tt> </tt>
+<a name="L1204"></a><tt class="py-lineno">1204</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L1205"></a><tt class="py-lineno">1205</tt>  <tt class="py-line"><tt class="py-comment"></tt>     </tt>
+<a name="L1206"></a><tt class="py-lineno">1206</tt>  <tt class="py-line">    <tt id="link-426" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_frames_index" class="py-name" href="#" onclick="return doclink('link-426', 'write_frames_index', 'link-157');">write_frames_index</a></tt> <tt class="py-op">=</tt> <tt id="link-427" class="py-name" targets="Function epydoc.docwriter.html.compile_template()=epydoc.docwriter.html-module.html#compile_template"><a title="epydoc.docwri [...]
+<a name="L1207"></a><tt class="py-lineno">1207</tt>  <tt class="py-line">        <tt class="py-string">"""</tt> </tt>
+<a name="L1208"></a><tt class="py-lineno">1208</tt>  <tt class="py-line"><tt class="py-string">        write_frames_index(self, out)</tt> </tt>
+<a name="L1209"></a><tt class="py-lineno">1209</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L1210"></a><tt class="py-lineno">1210</tt>  <tt class="py-line"><tt class="py-string">        Write the frames index file for the frames-based table of</tt> </tt>
+<a name="L1211"></a><tt class="py-lineno">1211</tt>  <tt class="py-line"><tt class="py-string">        contents to the given streams.</tt> </tt>
+<a name="L1212"></a><tt class="py-lineno">1212</tt>  <tt class="py-line"><tt class="py-string">        """</tt><tt class="py-op">,</tt> </tt>
+<a name="L1213"></a><tt class="py-lineno">1213</tt>  <tt class="py-line">        <tt class="py-comment"># /------------------------- Template -------------------------\</tt> </tt>
+<a name="L1214"></a><tt class="py-lineno">1214</tt>  <tt class="py-line">        <tt class="py-string">'''</tt> </tt>
+<a name="L1215"></a><tt class="py-lineno">1215</tt>  <tt class="py-line"><tt class="py-string">        <?xml version="1.0" encoding="iso-8859-1"?></tt> </tt>
+<a name="L1216"></a><tt class="py-lineno">1216</tt>  <tt class="py-line"><tt class="py-string">        <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"</tt> </tt>
+<a name="L1217"></a><tt class="py-lineno">1217</tt>  <tt class="py-line"><tt class="py-string">                  "DTD/xhtml1-frameset.dtd"></tt> </tt>
+<a name="L1218"></a><tt class="py-lineno">1218</tt>  <tt class="py-line"><tt class="py-string">        <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"></tt> </tt>
+<a name="L1219"></a><tt class="py-lineno">1219</tt>  <tt class="py-line"><tt class="py-string">        <head></tt> </tt>
+<a name="L1220"></a><tt class="py-lineno">1220</tt>  <tt class="py-line"><tt class="py-string">          <title> $self._prj_name or "API Documentation"$ </title></tt> </tt>
+<a name="L1221"></a><tt class="py-lineno">1221</tt>  <tt class="py-line"><tt class="py-string">        </head></tt> </tt>
+<a name="L1222"></a><tt class="py-lineno">1222</tt>  <tt class="py-line"><tt class="py-string">        <frameset cols="20%,80%"></tt> </tt>
+<a name="L1223"></a><tt class="py-lineno">1223</tt>  <tt class="py-line"><tt class="py-string">          <frameset rows="30%,70%"></tt> </tt>
+<a name="L1224"></a><tt class="py-lineno">1224</tt>  <tt class="py-line"><tt class="py-string">            <frame src="toc.html" name="moduleListFrame"</tt> </tt>
+<a name="L1225"></a><tt class="py-lineno">1225</tt>  <tt class="py-line"><tt class="py-string">                   id="moduleListFrame" /></tt> </tt>
+<a name="L1226"></a><tt class="py-lineno">1226</tt>  <tt class="py-line"><tt class="py-string">            <frame src="toc-everything.html" name="moduleFrame"</tt> </tt>
+<a name="L1227"></a><tt class="py-lineno">1227</tt>  <tt class="py-line"><tt class="py-string">                   id="moduleFrame" /></tt> </tt>
+<a name="L1228"></a><tt class="py-lineno">1228</tt>  <tt class="py-line"><tt class="py-string">          </frameset></tt> </tt>
+<a name="L1229"></a><tt class="py-lineno">1229</tt>  <tt class="py-line"><tt class="py-string">          <frame src="$self._top_page_url$" name="mainFrame" id="mainFrame" /></tt> </tt>
+<a name="L1230"></a><tt class="py-lineno">1230</tt>  <tt class="py-line"><tt class="py-string">        </frameset></tt> </tt>
+<a name="L1231"></a><tt class="py-lineno">1231</tt>  <tt class="py-line"><tt class="py-string">        </html></tt> </tt>
+<a name="L1232"></a><tt class="py-lineno">1232</tt>  <tt class="py-line"><tt class="py-string">        '''</tt><tt class="py-op">)</tt> </tt>
+<a name="L1233"></a><tt class="py-lineno">1233</tt>  <tt class="py-line">        <tt class="py-comment"># \------------------------------------------------------------/</tt> </tt>
+<a name="L1234"></a><tt class="py-lineno">1234</tt>  <tt class="py-line"><tt class="py-comment"></tt>     </tt>
+<a name="L1235"></a><tt class="py-lineno">1235</tt>  <tt class="py-line">    <tt id="link-428" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_toc" class="py-name" href="#" onclick="return doclink('link-428', 'write_toc', 'link-159');">write_toc</a></tt> <tt class="py-op">=</tt> <tt id="link-429" class="py-name"><a title="epydoc.docwriter.html.compile_template" class="py-name" href="#" onclick="return doclink('link-429', 'compile_template', 'link-427');">compile_template [...]
+<a name="L1236"></a><tt class="py-lineno">1236</tt>  <tt class="py-line">        <tt class="py-string">"""</tt> </tt>
+<a name="L1237"></a><tt class="py-lineno">1237</tt>  <tt class="py-line"><tt class="py-string">        write_toc(self, out)</tt> </tt>
+<a name="L1238"></a><tt class="py-lineno">1238</tt>  <tt class="py-line"><tt class="py-string">        """</tt><tt class="py-op">,</tt> </tt>
+<a name="L1239"></a><tt class="py-lineno">1239</tt>  <tt class="py-line">        <tt class="py-comment"># /------------------------- Template -------------------------\</tt> </tt>
+<a name="L1240"></a><tt class="py-lineno">1240</tt>  <tt class="py-line">        <tt class="py-string">'''</tt> </tt>
+<a name="L1241"></a><tt class="py-lineno">1241</tt>  <tt class="py-line"><tt class="py-string">        >>> self.write_header(out, "Table of Contents")</tt> </tt>
+<a name="L1242"></a><tt class="py-lineno">1242</tt>  <tt class="py-line"><tt class="py-string">        <h1 class="toc">Table&nbsp;of&nbsp;Contents</h1></tt> </tt>
+<a name="L1243"></a><tt class="py-lineno">1243</tt>  <tt class="py-line"><tt class="py-string">        <hr /></tt> </tt>
+<a name="L1244"></a><tt class="py-lineno">1244</tt>  <tt class="py-line"><tt class="py-string">          <a target="moduleFrame" href="toc-everything.html">Everything</a></tt> </tt>
+<a name="L1245"></a><tt class="py-lineno">1245</tt>  <tt class="py-line"><tt class="py-string">          <br /></tt> </tt>
+<a name="L1246"></a><tt class="py-lineno">1246</tt>  <tt class="py-line"><tt class="py-string">        >>> self.write_toc_section(out, "Modules", self.module_list)</tt> </tt>
+<a name="L1247"></a><tt class="py-lineno">1247</tt>  <tt class="py-line"><tt class="py-string">        <hr /></tt> </tt>
+<a name="L1248"></a><tt class="py-lineno">1248</tt>  <tt class="py-line"><tt class="py-string">        >>> if self._show_private:</tt> </tt>
+<a name="L1249"></a><tt class="py-lineno">1249</tt>  <tt class="py-line"><tt class="py-string">          $self.PRIVATE_LINK$</tt> </tt>
+<a name="L1250"></a><tt class="py-lineno">1250</tt>  <tt class="py-line"><tt class="py-string">        >>> #endif</tt> </tt>
+<a name="L1251"></a><tt class="py-lineno">1251</tt>  <tt class="py-line"><tt class="py-string">        >>> self.write_footer(out, short=True)</tt> </tt>
+<a name="L1252"></a><tt class="py-lineno">1252</tt>  <tt class="py-line"><tt class="py-string">        '''</tt><tt class="py-op">)</tt> </tt>
+<a name="L1253"></a><tt class="py-lineno">1253</tt>  <tt class="py-line">        <tt class="py-comment"># \------------------------------------------------------------/</tt> </tt>
+<a name="L1254"></a><tt class="py-lineno">1254</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="HTMLWriter.write_toc_section"></a><div id="HTMLWriter.write_toc_section-def"><a name="L1255"></a><tt class="py-lineno">1255</tt> <a class="py-toggle" href="#" id="HTMLWriter.write_toc_section-toggle" onclick="return toggle('HTMLWriter.write_toc_section');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html.HTMLWriter-class.html#write_toc_section">write_toc_section</a><tt class="py-op">(</tt><tt class="py-param">self</t [...]
+</div><div id="HTMLWriter.write_toc_section-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLWriter.write_toc_section-expanded"><a name="L1256"></a><tt class="py-lineno">1256</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">docs</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> </tt>
+<a name="L1257"></a><tt class="py-lineno">1257</tt>  <tt class="py-line"> </tt>
+<a name="L1258"></a><tt class="py-lineno">1258</tt>  <tt class="py-line">        <tt class="py-comment"># Assign names to each item, and sort by name.</tt> </tt>
+<a name="L1259"></a><tt class="py-lineno">1259</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">fullname</tt><tt class="py-op">:</tt> </tt>
+<a name="L1260"></a><tt class="py-lineno">1260</tt>  <tt class="py-line">            <tt class="py-name">docs</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">d</tt><tt class="py-op">.</tt><tt id="link-430" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-430', 'canonical_name', 'link-82');">canonical_name</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">d</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">d</tt> <tt class="py-keyword">in</tt> <tt class="py-name">docs</tt><tt class="py-op">]</tt> </tt>
+<a name="L1261"></a><tt class="py-lineno">1261</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1262"></a><tt class="py-lineno">1262</tt>  <tt class="py-line">            <tt class="py-name">docs</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">d</tt><tt class="py-op">.</tt><tt id="link-431" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-431', 'canonical_name', 'link-82');">canonical_name</a></tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">d</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">d</tt> <tt class="py-keyword">in</tt> <tt class="py-name">docs</tt><tt class="py-op [...]
+<a name="L1263"></a><tt class="py-lineno">1263</tt>  <tt class="py-line">        <tt class="py-name">docs</tt><tt class="py-op">.</tt><tt class="py-name">sort</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1264"></a><tt class="py-lineno">1264</tt>  <tt class="py-line"> </tt>
+<a name="L1265"></a><tt class="py-lineno">1265</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'  <h2 class="toc">%s</h2>\n'</tt> <tt class="py-op">%</tt> <tt id="link-432" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-432', 'name', 'link-117');">name</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1266"></a><tt class="py-lineno">1266</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt id="link-433" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.label" class="py-name" href="#" onclick="return doclink('link-433', 'label', 'link-118');">label</a></tt><tt class="py-op">,</tt> <tt class="py-name">doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">docs</tt><tt class="py-op">:</tt> </tt>
+<a name="L1267"></a><tt class="py-lineno">1267</tt>  <tt class="py-line">            <tt class="py-name">doc_url</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-434" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.url" class="py-name" href="#" onclick="return doclink('link-434', 'url', 'link-72');">url</a></tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">)</tt> </tt>
+<a name="L1268"></a><tt class="py-lineno">1268</tt>  <tt class="py-line">            <tt class="py-name">toc_url</tt> <tt class="py-op">=</tt> <tt class="py-string">'toc-%s'</tt> <tt class="py-op">%</tt> <tt class="py-name">doc_url</tt> </tt>
+<a name="L1269"></a><tt class="py-lineno">1269</tt>  <tt class="py-line">            <tt class="py-name">is_private</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-435" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter._doc_or_ancestor_is_private" class="py-name" href="#" onclick="return doclink('link-435', '_doc_or_ancestor_is_private', 'link-374');">_doc_or_ancestor_is_private</a></tt><tt class="py-op">(</tt><tt class="py-name">d [...]
+<a name="L1270"></a><tt class="py-lineno">1270</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">is_private</tt><tt class="py-op">:</tt> </tt>
+<a name="L1271"></a><tt class="py-lineno">1271</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_show_private</tt><tt class="py-op">:</tt> <tt class="py-keyword">continue</tt> </tt>
+<a name="L1272"></a><tt class="py-lineno">1272</tt>  <tt class="py-line">                <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'  <div class="private">\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1273"></a><tt class="py-lineno">1273</tt>  <tt class="py-line">                 </tt>
+<a name="L1274"></a><tt class="py-lineno">1274</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt id="link-436" class="py-name"><a title="epydoc.apidoc.ModuleDoc" class="py-name" href="#" onclick="return doclink('link-436', 'ModuleDoc', 'link-55');">ModuleDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1275"></a><tt class="py-lineno">1275</tt>  <tt class="py-line">                <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'    <a target="moduleFrame" href="%s"\n'</tt> </tt>
+<a name="L1276"></a><tt class="py-lineno">1276</tt>  <tt class="py-line">                    <tt class="py-string">'     onclick="setFrame(\'%s\',\'%s\');"'</tt> </tt>
+<a name="L1277"></a><tt class="py-lineno">1277</tt>  <tt class="py-line">                    <tt class="py-string">'     >%s</a><br />'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">toc_url</tt><tt class="py-op">,</tt> <tt class="py-name">toc_url</tt><tt class="py-op">,</tt> <tt class="py-name">doc_url</tt><tt class="py-op">,</tt> <tt id="link-437" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.label" class="py-name" href="#" oncli [...]
+<a name="L1278"></a><tt class="py-lineno">1278</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1279"></a><tt class="py-lineno">1279</tt>  <tt class="py-line">                <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'    <a target="mainFrame" href="%s"\n'</tt> </tt>
+<a name="L1280"></a><tt class="py-lineno">1280</tt>  <tt class="py-line">                    <tt class="py-string">'     >%s</a><br />'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">doc_url</tt><tt class="py-op">,</tt> <tt id="link-438" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.label" class="py-name" href="#" onclick="return doclink('link-438', 'label', 'link-118');">label</a></tt><tt class="py-op">)</tt><tt class="py-op">)</t [...]
+<a name="L1281"></a><tt class="py-lineno">1281</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">is_private</tt><tt class="py-op">:</tt> </tt>
+<a name="L1282"></a><tt class="py-lineno">1282</tt>  <tt class="py-line">                <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'  </div>\n'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1283"></a><tt class="py-lineno">1283</tt>  <tt class="py-line"> </tt>
+<a name="HTMLWriter.write_project_toc"></a><div id="HTMLWriter.write_project_toc-def"><a name="L1284"></a><tt class="py-lineno">1284</tt> <a class="py-toggle" href="#" id="HTMLWriter.write_project_toc-toggle" onclick="return toggle('HTMLWriter.write_project_toc');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html.HTMLWriter-class.html#write_project_toc">write_project_toc</a><tt class="py-op">(</tt><tt class="py-param">self</t [...]
+</div><div id="HTMLWriter.write_project_toc-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLWriter.write_project_toc-expanded"><a name="L1285"></a><tt class="py-lineno">1285</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-439" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_header
+epydoc.docwriter.latex.LatexWriter.write_header" class="py-name" href="#" onclick="return doclink('link-439', 'write_header', 'link-222');">write_header</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-string">"Everything"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1286"></a><tt class="py-lineno">1286</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'<h1 class="toc">Everything</h1>\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1287"></a><tt class="py-lineno">1287</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'<hr />\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1288"></a><tt class="py-lineno">1288</tt>  <tt class="py-line"> </tt>
+<a name="L1289"></a><tt class="py-lineno">1289</tt>  <tt class="py-line">        <tt class="py-comment"># List the classes.</tt> </tt>
+<a name="L1290"></a><tt class="py-lineno">1290</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-440" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.write_toc_section()=epydoc.docwriter.html.HTMLWriter-class.html#write_toc_section"><a title="epydoc.docwriter.html.HTMLWriter.write_toc_section" class="py-name" href="#" onclick="return doclink('link-440', 'write_toc_section', 'link-440');">write_ [...]
+<a name="L1291"></a><tt class="py-lineno">1291</tt>  <tt class="py-line"> </tt>
+<a name="L1292"></a><tt class="py-lineno">1292</tt>  <tt class="py-line">        <tt class="py-comment"># List the functions.</tt> </tt>
+<a name="L1293"></a><tt class="py-lineno">1293</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">funcs</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">d</tt> <tt class="py-keyword">for</tt> <tt class="py-name">d</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">routine_list</tt>  </tt>
+<a name="L1294"></a><tt class="py-lineno">1294</tt>  <tt class="py-line">                 <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">docindex</tt><tt class="py-op">.</tt><tt id="link-441" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-441', 'container', 'link-63');">container</a></tt><tt class="py-op">(</tt><tt class="py-name">d</tt><tt class="py-op">)</tt><tt class="py-op">,</tt>  </tt>
+<a name="L1295"></a><tt class="py-lineno">1295</tt>  <tt class="py-line">                                   <tt class="py-op">(</tt><tt id="link-442" class="py-name"><a title="epydoc.apidoc.ClassDoc" class="py-name" href="#" onclick="return doclink('link-442', 'ClassDoc', 'link-56');">ClassDoc</a></tt><tt class="py-op">,</tt> <tt class="py-name">types</tt><tt class="py-op">.</tt><tt class="py-name">NoneType</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt>
+<a name="L1296"></a><tt class="py-lineno">1296</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-443" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_toc_section" class="py-name" href="#" onclick="return doclink('link-443', 'write_toc_section', 'link-440');">write_toc_section</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-string">"All Functions"</tt><tt class="py-op">,</ [...]
+<a name="L1297"></a><tt class="py-lineno">1297</tt>  <tt class="py-line"> </tt>
+<a name="L1298"></a><tt class="py-lineno">1298</tt>  <tt class="py-line">        <tt class="py-comment"># List the variables.</tt> </tt>
+<a name="L1299"></a><tt class="py-lineno">1299</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">vars</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L1300"></a><tt class="py-lineno">1300</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">module_list</tt><tt class="py-op">:</tt> </tt>
+<a name="L1301"></a><tt class="py-lineno">1301</tt>  <tt class="py-line">            <tt class="py-name">vars</tt> <tt class="py-op">+=</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-444" class="py-name" targets="Method epydoc.apidoc.ClassDoc.select_variables()=epydoc.apidoc.ClassDoc-class.html#select_variables,Method epydoc.apidoc.ModuleDoc.select_variables()=epydoc.apidoc.ModuleDoc-class.html#select_variables"><a title="epydoc.apidoc.ClassDoc.select_variables
+epydoc.apidoc.ModuleDoc.select_variables" class="py-name" href="#" onclick="return doclink('link-444', 'select_variables', 'link-444');">select_variables</a></tt><tt class="py-op">(</tt><tt class="py-name">value_type</tt><tt class="py-op">=</tt><tt class="py-string">'other'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1302"></a><tt class="py-lineno">1302</tt>  <tt class="py-line">                                         <tt class="py-name">imported</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> </tt>
+<a name="L1303"></a><tt class="py-lineno">1303</tt>  <tt class="py-line">                                         <tt class="py-name">public</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_public_filter</tt><tt class="py-op">)</tt> </tt>
+<a name="L1304"></a><tt class="py-lineno">1304</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-445" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_toc_section" class="py-name" href="#" onclick="return doclink('link-445', 'write_toc_section', 'link-440');">write_toc_section</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-string">"All Variables"</tt><tt class="py-op">,</ [...]
+<a name="L1305"></a><tt class="py-lineno">1305</tt>  <tt class="py-line"> </tt>
+<a name="L1306"></a><tt class="py-lineno">1306</tt>  <tt class="py-line">        <tt class="py-comment"># Footer material.</tt> </tt>
+<a name="L1307"></a><tt class="py-lineno">1307</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'<hr />\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1308"></a><tt class="py-lineno">1308</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_show_private</tt><tt class="py-op">:</tt> </tt>
+<a name="L1309"></a><tt class="py-lineno">1309</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-446" class="py-name" targets="Variable epydoc.docwriter.html.HTMLWriter.PRIVATE_LINK=epydoc.docwriter.html.HTMLWriter-class.html#PRIVATE_LINK"><a title="epydoc.docwriter.html.HTMLWriter.PRIVATE_LINK" class="py-name" href="#" onclick="return doclink('link-446', 'PRIVATE_LINK', 'link-446'); [...]
+<a name="L1310"></a><tt class="py-lineno">1310</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-447" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_footer" class="py-name" href="#" onclick="return doclink('link-447', 'write_footer', 'link-244');">write_footer</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-name">short</tt><tt class="py-op">=</tt><tt class="py-name">True [...]
+</div><a name="L1311"></a><tt class="py-lineno">1311</tt>  <tt class="py-line"> </tt>
+<a name="HTMLWriter.write_module_toc"></a><div id="HTMLWriter.write_module_toc-def"><a name="L1312"></a><tt class="py-lineno">1312</tt> <a class="py-toggle" href="#" id="HTMLWriter.write_module_toc-toggle" onclick="return toggle('HTMLWriter.write_module_toc');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html.HTMLWriter-class.html#write_module_toc">write_module_toc</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt  [...]
+</div><div id="HTMLWriter.write_module_toc-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLWriter.write_module_toc-expanded"><a name="L1313"></a><tt class="py-lineno">1313</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L1314"></a><tt class="py-lineno">1314</tt>  <tt class="py-line"><tt class="py-docstring">        Write an HTML page containing the table of contents page for</tt> </tt>
+<a name="L1315"></a><tt class="py-lineno">1315</tt>  <tt class="py-line"><tt class="py-docstring">        the given module to the given streams.  This page lists the</tt> </tt>
+<a name="L1316"></a><tt class="py-lineno">1316</tt>  <tt class="py-line"><tt class="py-docstring">        modules, classes, exceptions, functions, and variables defined</tt> </tt>
+<a name="L1317"></a><tt class="py-lineno">1317</tt>  <tt class="py-line"><tt class="py-docstring">        by the module.</tt> </tt>
+<a name="L1318"></a><tt class="py-lineno">1318</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L1319"></a><tt class="py-lineno">1319</tt>  <tt class="py-line">        <tt id="link-448" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-448', 'name', 'link-117');">name</a></tt> <tt class="py-op">=</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-449" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-449', 'canonical_name', 'link-82');">canonical_name</a></tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L1320"></a><tt class="py-lineno">1320</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-450" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_header
+epydoc.docwriter.latex.LatexWriter.write_header" class="py-name" href="#" onclick="return doclink('link-450', 'write_header', 'link-222');">write_header</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt id="link-451" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-451', 'name', 'link-117');">name</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1321"></a><tt class="py-lineno">1321</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'<h1 class="toc">Module %s</h1>\n'</tt> <tt class="py-op">%</tt> <tt id="link-452" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-452', 'name', 'link-117');">name</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1322"></a><tt class="py-lineno">1322</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'<hr />\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1323"></a><tt class="py-lineno">1323</tt>  <tt class="py-line"> </tt>
+<a name="L1324"></a><tt class="py-lineno">1324</tt>  <tt class="py-line"> </tt>
+<a name="L1325"></a><tt class="py-lineno">1325</tt>  <tt class="py-line">        <tt class="py-comment"># List the classes.</tt> </tt>
+<a name="L1326"></a><tt class="py-lineno">1326</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">classes</tt> <tt class="py-op">=</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-453" class="py-name"><a title="epydoc.apidoc.ClassDoc.select_variables
+epydoc.apidoc.ModuleDoc.select_variables" class="py-name" href="#" onclick="return doclink('link-453', 'select_variables', 'link-444');">select_variables</a></tt><tt class="py-op">(</tt><tt class="py-name">value_type</tt><tt class="py-op">=</tt><tt class="py-string">'class'</tt><tt class="py-op">,</tt> <tt class="py-name">imported</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> </tt>
+<a name="L1327"></a><tt class="py-lineno">1327</tt>  <tt class="py-line">                                       <tt class="py-name">public</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_public_filter</tt><tt class="py-op">)</tt> </tt>
+<a name="L1328"></a><tt class="py-lineno">1328</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-454" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_toc_section" class="py-name" href="#" onclick="return doclink('link-454', 'write_toc_section', 'link-440');">write_toc_section</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-string">"Classes"</tt><tt class="py-op">,</tt> <t [...]
+<a name="L1329"></a><tt class="py-lineno">1329</tt>  <tt class="py-line"> </tt>
+<a name="L1330"></a><tt class="py-lineno">1330</tt>  <tt class="py-line">        <tt class="py-comment"># List the functions.</tt> </tt>
+<a name="L1331"></a><tt class="py-lineno">1331</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">funcs</tt> <tt class="py-op">=</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-455" class="py-name"><a title="epydoc.apidoc.ClassDoc.select_variables
+epydoc.apidoc.ModuleDoc.select_variables" class="py-name" href="#" onclick="return doclink('link-455', 'select_variables', 'link-444');">select_variables</a></tt><tt class="py-op">(</tt><tt class="py-name">value_type</tt><tt class="py-op">=</tt><tt class="py-string">'function'</tt><tt class="py-op">,</tt> <tt class="py-name">imported</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> </tt>
+<a name="L1332"></a><tt class="py-lineno">1332</tt>  <tt class="py-line">                                     <tt class="py-name">public</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_public_filter</tt><tt class="py-op">)</tt> </tt>
+<a name="L1333"></a><tt class="py-lineno">1333</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-456" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_toc_section" class="py-name" href="#" onclick="return doclink('link-456', 'write_toc_section', 'link-440');">write_toc_section</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-string">"Functions"</tt><tt class="py-op">,</tt>  [...]
+<a name="L1334"></a><tt class="py-lineno">1334</tt>  <tt class="py-line"> </tt>
+<a name="L1335"></a><tt class="py-lineno">1335</tt>  <tt class="py-line">        <tt class="py-comment"># List the variables.</tt> </tt>
+<a name="L1336"></a><tt class="py-lineno">1336</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt id="link-457" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-457', 'variables', 'link-60');">variables</a></tt> <tt class="py-op">=</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-458" class="py-name"><a title="epydoc.apidoc.ClassDoc.select_variables
+epydoc.apidoc.ModuleDoc.select_variables" class="py-name" href="#" onclick="return doclink('link-458', 'select_variables', 'link-444');">select_variables</a></tt><tt class="py-op">(</tt><tt class="py-name">value_type</tt><tt class="py-op">=</tt><tt class="py-string">'other'</tt><tt class="py-op">,</tt> <tt class="py-name">imported</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> </tt>
+<a name="L1337"></a><tt class="py-lineno">1337</tt>  <tt class="py-line">                                         <tt class="py-name">public</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_public_filter</tt><tt class="py-op">)</tt> </tt>
+<a name="L1338"></a><tt class="py-lineno">1338</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-459" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_toc_section" class="py-name" href="#" onclick="return doclink('link-459', 'write_toc_section', 'link-440');">write_toc_section</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-string">"Variables"</tt><tt class="py-op">,</tt>  [...]
+<a name="L1339"></a><tt class="py-lineno">1339</tt>  <tt class="py-line">         </tt>
+<a name="L1340"></a><tt class="py-lineno">1340</tt>  <tt class="py-line">        <tt class="py-comment"># Footer material.</tt> </tt>
+<a name="L1341"></a><tt class="py-lineno">1341</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'<hr />\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1342"></a><tt class="py-lineno">1342</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_show_private</tt><tt class="py-op">:</tt> </tt>
+<a name="L1343"></a><tt class="py-lineno">1343</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-461" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.PRIVATE_LINK" class="py-name" href="#" onclick="return doclink('link-461', 'PRIVATE_LINK', 'link-446');">PRIVATE_LINK</a></tt><tt class="py-op">+</tt><tt class="py-string">'\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1344"></a><tt class="py-lineno">1344</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-462" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_footer" class="py-name" href="#" onclick="return doclink('link-462', 'write_footer', 'link-244');">write_footer</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-name">short</tt><tt class="py-op">=</tt><tt class="py-name">True [...]
+</div><a name="L1345"></a><tt class="py-lineno">1345</tt>  <tt class="py-line"> </tt>
+<a name="L1346"></a><tt class="py-lineno">1346</tt>  <tt class="py-line">    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L1347"></a><tt class="py-lineno">1347</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#{ 2.7. Project homepage (index.html)</tt> </tt>
+<a name="L1348"></a><tt class="py-lineno">1348</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L1349"></a><tt class="py-lineno">1349</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="HTMLWriter.write_homepage"></a><div id="HTMLWriter.write_homepage-def"><a name="L1350"></a><tt class="py-lineno">1350</tt> <a class="py-toggle" href="#" id="HTMLWriter.write_homepage-toggle" onclick="return toggle('HTMLWriter.write_homepage');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html.HTMLWriter-class.html#write_homepage">write_homepage</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op [...]
+</div><div id="HTMLWriter.write_homepage-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLWriter.write_homepage-expanded"><a name="L1351"></a><tt class="py-lineno">1351</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L1352"></a><tt class="py-lineno">1352</tt>  <tt class="py-line"><tt class="py-docstring">        Write an C{index.html} file in the given directory.  The</tt> </tt>
+<a name="L1353"></a><tt class="py-lineno">1353</tt>  <tt class="py-line"><tt class="py-docstring">        contents of this file are copied or linked from an existing</tt> </tt>
+<a name="L1354"></a><tt class="py-lineno">1354</tt>  <tt class="py-line"><tt class="py-docstring">        page, so this method must be called after all pages have been</tt> </tt>
+<a name="L1355"></a><tt class="py-lineno">1355</tt>  <tt class="py-line"><tt class="py-docstring">        written.  The page used is determined by L{_frames_index} and</tt> </tt>
+<a name="L1356"></a><tt class="py-lineno">1356</tt>  <tt class="py-line"><tt class="py-docstring">        L{_top_page}:</tt> </tt>
+<a name="L1357"></a><tt class="py-lineno">1357</tt>  <tt class="py-line"><tt class="py-docstring">            - If L{_frames_index} is true, then C{frames.html} is</tt> </tt>
+<a name="L1358"></a><tt class="py-lineno">1358</tt>  <tt class="py-line"><tt class="py-docstring">              copied.</tt> </tt>
+<a name="L1359"></a><tt class="py-lineno">1359</tt>  <tt class="py-line"><tt class="py-docstring">            - Otherwise, the page specified by L{_top_page} is</tt> </tt>
+<a name="L1360"></a><tt class="py-lineno">1360</tt>  <tt class="py-line"><tt class="py-docstring">              copied.</tt> </tt>
+<a name="L1361"></a><tt class="py-lineno">1361</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L1362"></a><tt class="py-lineno">1362</tt>  <tt class="py-line">        <tt id="link-463" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-463', 'filename', 'link-68');">filename</a></tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-464" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-464', 'path', 'link-211' [...]
+<a name="L1363"></a><tt class="py-lineno">1363</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_frames_index</tt><tt class="py-op">:</tt> <tt class="py-name">top</tt> <tt class="py-op">=</tt> <tt class="py-string">'frames.html'</tt> </tt>
+<a name="L1364"></a><tt class="py-lineno">1364</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> <tt class="py-name">top</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_top_page_url</tt> </tt>
+<a name="L1365"></a><tt class="py-lineno">1365</tt>  <tt class="py-line"> </tt>
+<a name="L1366"></a><tt class="py-lineno">1366</tt>  <tt class="py-line">        <tt class="py-comment"># Copy the non-frames index file from top, if it's internal.</tt> </tt>
+<a name="L1367"></a><tt class="py-lineno">1367</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">top</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-number">5</tt><tt class="py-op">]</tt> <tt class="py-op">!=</tt> <tt class="py-string">'http:'</tt> <tt class="py-keyword">and</tt> <tt class="py-string">'/'</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">top</tt><tt clas [...]
+<a name="L1368"></a><tt class="py-lineno">1368</tt>  <tt class="py-line">            <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L1369"></a><tt class="py-lineno">1369</tt>  <tt class="py-line">                <tt class="py-comment"># Read top into `s`.</tt> </tt>
+<a name="L1370"></a><tt class="py-lineno">1370</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-name">topfile</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-465" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-465', 'path', 'link-211');">path</a></tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name" [...]
+<a name="L1371"></a><tt class="py-lineno">1371</tt>  <tt class="py-line">                <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt id="link-466" class="py-name"><a title="epydoc.gui.EpydocGUI.open" class="py-name" href="#" onclick="return doclink('link-466', 'open', 'link-214');">open</a></tt><tt class="py-op">(</tt><tt class="py-name">topfile</tt><tt class="py-op">,</tt> <tt class="py-string">'r'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-467" class=" [...]
+epydoc.docwriter.xlink.ApiLinkReader.read
+epydoc.gui.GUILogger.read" class="py-name" href="#" onclick="return doclink('link-467', 'read', 'link-419');">read</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1372"></a><tt class="py-lineno">1372</tt>  <tt class="py-line"> </tt>
+<a name="L1373"></a><tt class="py-lineno">1373</tt>  <tt class="py-line">                <tt class="py-comment"># Write the output file.</tt> </tt>
+<a name="L1374"></a><tt class="py-lineno">1374</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt id="link-468" class="py-name"><a title="epydoc.gui.EpydocGUI.open" class="py-name" href="#" onclick="return doclink('link-468', 'open', 'link-214');">open</a></tt><tt class="py-op">(</tt><tt id="link-469" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-469', 'filename', 'link-68');">filename</a></tt><tt [...]
+epydoc.docwriter.dotgraph.DotGraph.write
+epydoc.docwriter.html.HTMLWriter.write
+epydoc.docwriter.latex.LatexWriter.write
+epydoc.docwriter.plaintext.PlaintextWriter.write" class="py-name" href="#" onclick="return doclink('link-470', 'write', 'link-216');">write</a></tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> </tt>
+<a name="L1375"></a><tt class="py-lineno">1375</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> </tt>
+<a name="L1376"></a><tt class="py-lineno">1376</tt>  <tt class="py-line">            <tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt>
+<a name="L1377"></a><tt class="py-lineno">1377</tt>  <tt class="py-line">                <tt id="link-471" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-471', 'log', 'link-29');">log</a></tt><tt class="py-op">.</tt><tt id="link-472" class="py-name"><a title="epydoc.log.error" class="py-name" href="#" onclick="return doclink('link-472', 'error', 'link-45');">error</a></tt><tt class="py-op">(</tt><tt class="py-string">'Warning: error copying index; '</tt> </tt>
+<a name="L1378"></a><tt class="py-lineno">1378</tt>  <tt class="py-line">                          <tt class="py-string">'using a redirect page'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1379"></a><tt class="py-lineno">1379</tt>  <tt class="py-line"> </tt>
+<a name="L1380"></a><tt class="py-lineno">1380</tt>  <tt class="py-line">        <tt class="py-comment"># Use a redirect if top is external, or if we faild to copy.</tt> </tt>
+<a name="L1381"></a><tt class="py-lineno">1381</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt id="link-473" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-473', 'name', 'link-117');">name</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_prj_name</tt> <tt class="py-keyword">or</tt> <tt class="py-string">'this project'</tt> </tt>
+<a name="L1382"></a><tt class="py-lineno">1382</tt>  <tt class="py-line">        <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt id="link-474" class="py-name"><a title="epydoc.gui.EpydocGUI.open" class="py-name" href="#" onclick="return doclink('link-474', 'open', 'link-214');">open</a></tt><tt class="py-op">(</tt><tt id="link-475" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-475', 'filename', 'link-68');">file [...]
+<a name="L1383"></a><tt class="py-lineno">1383</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-476" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.write_redirect_index()=epydoc.docwriter.html.HTMLWriter-class.html#write_redirect_index"><a title="epydoc.docwriter.html.HTMLWriter.write_redirect_index" class="py-name" href="#" onclick="return doclink('link-476', 'write_redirect_index', 'link-476');">write_redirect_index</ [...]
+epydoc.docwriter.dotgraph.DotGraph.write
+epydoc.docwriter.html.HTMLWriter.write
+epydoc.docwriter.latex.LatexWriter.write
+epydoc.docwriter.plaintext.PlaintextWriter.write" class="py-name" href="#" onclick="return doclink('link-477', 'write', 'link-216');">write</a></tt><tt class="py-op">,</tt> <tt class="py-name">top</tt><tt class="py-op">,</tt> <tt id="link-478" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-478', 'name', 'link-117');">name</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1384"></a><tt class="py-lineno">1384</tt>  <tt class="py-line">        <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-479" class="py-name"><a title="epydoc.cli.HTMLLogger.close
+epydoc.docintrospecter._DevNull.close
+epydoc.log.Logger.close
+epydoc.log.close" class="py-name" href="#" onclick="return doclink('link-479', 'close', 'link-217');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1385"></a><tt class="py-lineno">1385</tt>  <tt class="py-line"> </tt>
+<a name="L1386"></a><tt class="py-lineno">1386</tt>  <tt class="py-line">    <tt id="link-480" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_redirect_index" class="py-name" href="#" onclick="return doclink('link-480', 'write_redirect_index', 'link-476');">write_redirect_index</a></tt> <tt class="py-op">=</tt> <tt id="link-481" class="py-name"><a title="epydoc.docwriter.html.compile_template" class="py-name" href="#" onclick="return doclink('link-481', 'compile_template [...]
+<a name="L1387"></a><tt class="py-lineno">1387</tt>  <tt class="py-line">        <tt class="py-string">"""</tt> </tt>
+<a name="L1388"></a><tt class="py-lineno">1388</tt>  <tt class="py-line"><tt class="py-string">        write_redirect_index(self, out, top, name)</tt> </tt>
+<a name="L1389"></a><tt class="py-lineno">1389</tt>  <tt class="py-line"><tt class="py-string">        """</tt><tt class="py-op">,</tt> </tt>
+<a name="L1390"></a><tt class="py-lineno">1390</tt>  <tt class="py-line">        <tt class="py-comment"># /------------------------- Template -------------------------\</tt> </tt>
+<a name="L1391"></a><tt class="py-lineno">1391</tt>  <tt class="py-line">        <tt class="py-string">'''</tt> </tt>
+<a name="L1392"></a><tt class="py-lineno">1392</tt>  <tt class="py-line"><tt class="py-string">        <?xml version="1.0" encoding="iso-8859-1"?></tt> </tt>
+<a name="L1393"></a><tt class="py-lineno">1393</tt>  <tt class="py-line"><tt class="py-string">        <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"</tt> </tt>
+<a name="L1394"></a><tt class="py-lineno">1394</tt>  <tt class="py-line"><tt class="py-string">                  "DTD/xhtml1-strict.dtd"></tt> </tt>
+<a name="L1395"></a><tt class="py-lineno">1395</tt>  <tt class="py-line"><tt class="py-string">        <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"></tt> </tt>
+<a name="L1396"></a><tt class="py-lineno">1396</tt>  <tt class="py-line"><tt class="py-string">        <head></tt> </tt>
+<a name="L1397"></a><tt class="py-lineno">1397</tt>  <tt class="py-line"><tt class="py-string">          <title> Redirect </title></tt> </tt>
+<a name="L1398"></a><tt class="py-lineno">1398</tt>  <tt class="py-line"><tt class="py-string">          <meta http-equiv="refresh" content="1;url=$top$" /></tt> </tt>
+<a name="L1399"></a><tt class="py-lineno">1399</tt>  <tt class="py-line"><tt class="py-string">          <link rel="stylesheet" href="epydoc.css" type="text/css"></link></tt> </tt>
+<a name="L1400"></a><tt class="py-lineno">1400</tt>  <tt class="py-line"><tt class="py-string">        </head></tt> </tt>
+<a name="L1401"></a><tt class="py-lineno">1401</tt>  <tt class="py-line"><tt class="py-string">        <body></tt> </tt>
+<a name="L1402"></a><tt class="py-lineno">1402</tt>  <tt class="py-line"><tt class="py-string">          <p>Redirecting to the API documentation for</tt> </tt>
+<a name="L1403"></a><tt class="py-lineno">1403</tt>  <tt class="py-line"><tt class="py-string">            <a href="$top$">$self._prj_name or "this project"$</a>...</p></tt> </tt>
+<a name="L1404"></a><tt class="py-lineno">1404</tt>  <tt class="py-line"><tt class="py-string">        </body></tt> </tt>
+<a name="L1405"></a><tt class="py-lineno">1405</tt>  <tt class="py-line"><tt class="py-string">        </html></tt> </tt>
+<a name="L1406"></a><tt class="py-lineno">1406</tt>  <tt class="py-line"><tt class="py-string">        '''</tt><tt class="py-op">)</tt> </tt>
+<a name="L1407"></a><tt class="py-lineno">1407</tt>  <tt class="py-line">        <tt class="py-comment"># \------------------------------------------------------------/</tt> </tt>
+<a name="L1408"></a><tt class="py-lineno">1408</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L1409"></a><tt class="py-lineno">1409</tt>  <tt class="py-line">    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L1410"></a><tt class="py-lineno">1410</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#{ 2.8. Stylesheet (epydoc.css)</tt> </tt>
+<a name="L1411"></a><tt class="py-lineno">1411</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L1412"></a><tt class="py-lineno">1412</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="HTMLWriter.write_css"></a><div id="HTMLWriter.write_css-def"><a name="L1413"></a><tt class="py-lineno">1413</tt> <a class="py-toggle" href="#" id="HTMLWriter.write_css-toggle" onclick="return toggle('HTMLWriter.write_css');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html.HTMLWriter-class.html#write_css">write_css</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param"> [...]
+</div><div id="HTMLWriter.write_css-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLWriter.write_css-expanded"><a name="L1414"></a><tt class="py-lineno">1414</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L1415"></a><tt class="py-lineno">1415</tt>  <tt class="py-line"><tt class="py-docstring">        Write the CSS stylesheet in the given directory.  If</tt> </tt>
+<a name="L1416"></a><tt class="py-lineno">1416</tt>  <tt class="py-line"><tt class="py-docstring">        C{cssname} contains a stylesheet file or name (from</tt> </tt>
+<a name="L1417"></a><tt class="py-lineno">1417</tt>  <tt class="py-line"><tt class="py-docstring">        L{epydoc.docwriter.html_css}), then use that stylesheet;</tt> </tt>
+<a name="L1418"></a><tt class="py-lineno">1418</tt>  <tt class="py-line"><tt class="py-docstring">        otherwise, use the default stylesheet.</tt> </tt>
+<a name="L1419"></a><tt class="py-lineno">1419</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1420"></a><tt class="py-lineno">1420</tt>  <tt class="py-line"><tt class="py-docstring">        @rtype: C{None}</tt> </tt>
+<a name="L1421"></a><tt class="py-lineno">1421</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L1422"></a><tt class="py-lineno">1422</tt>  <tt class="py-line">        <tt id="link-482" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-482', 'filename', 'link-68');">filename</a></tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-483" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-483', 'path', 'link-211' [...]
+<a name="L1423"></a><tt class="py-lineno">1423</tt>  <tt class="py-line">         </tt>
+<a name="L1424"></a><tt class="py-lineno">1424</tt>  <tt class="py-line">        <tt class="py-comment"># Get the contents for the stylesheet file.</tt> </tt>
+<a name="L1425"></a><tt class="py-lineno">1425</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">cssname</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1426"></a><tt class="py-lineno">1426</tt>  <tt class="py-line">            <tt class="py-name">css</tt> <tt class="py-op">=</tt> <tt id="link-484" class="py-name"><a title="epydoc.docwriter.html_css.STYLESHEETS" class="py-name" href="#" onclick="return doclink('link-484', 'STYLESHEETS', 'link-20');">STYLESHEETS</a></tt><tt class="py-op">[</tt><tt class="py-string">'default'</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L1427"></a><tt class="py-lineno">1427</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1428"></a><tt class="py-lineno">1428</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-485" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-485', 'path', 'link-211');">path</a></tt><tt class="py-op">.</tt><tt class="py-name">exists</tt><tt class="py-op">(</tt><tt class="py-name">cssname</tt><tt class="py-op">)</tt><tt class="py-op">:< [...]
+<a name="L1429"></a><tt class="py-lineno">1429</tt>  <tt class="py-line">                <tt class="py-keyword">try</tt><tt class="py-op">:</tt> <tt class="py-name">css</tt> <tt class="py-op">=</tt> <tt id="link-486" class="py-name"><a title="epydoc.gui.EpydocGUI.open" class="py-name" href="#" onclick="return doclink('link-486', 'open', 'link-214');">open</a></tt><tt class="py-op">(</tt><tt class="py-name">cssname</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-487" clas [...]
+epydoc.docwriter.xlink.ApiLinkReader.read
+epydoc.gui.GUILogger.read" class="py-name" href="#" onclick="return doclink('link-487', 'read', 'link-419');">read</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1430"></a><tt class="py-lineno">1430</tt>  <tt class="py-line">                <tt class="py-keyword">except</tt><tt class="py-op">:</tt> <tt class="py-keyword">raise</tt> <tt class="py-name">IOError</tt><tt class="py-op">(</tt><tt class="py-string">"Can't open CSS file: %r"</tt> <tt class="py-op">%</tt> <tt class="py-name">cssname</tt><tt class="py-op">)</tt> </tt>
+<a name="L1431"></a><tt class="py-lineno">1431</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">cssname</tt> <tt class="py-keyword">in</tt> <tt id="link-488" class="py-name"><a title="epydoc.docwriter.html_css.STYLESHEETS" class="py-name" href="#" onclick="return doclink('link-488', 'STYLESHEETS', 'link-20');">STYLESHEETS</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1432"></a><tt class="py-lineno">1432</tt>  <tt class="py-line">                <tt class="py-name">css</tt> <tt class="py-op">=</tt> <tt id="link-489" class="py-name"><a title="epydoc.docwriter.html_css.STYLESHEETS" class="py-name" href="#" onclick="return doclink('link-489', 'STYLESHEETS', 'link-20');">STYLESHEETS</a></tt><tt class="py-op">[</tt><tt class="py-name">cssname</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L1433"></a><tt class="py-lineno">1433</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1434"></a><tt class="py-lineno">1434</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">IOError</tt><tt class="py-op">(</tt><tt class="py-string">"Can't find CSS file: %r"</tt> <tt class="py-op">%</tt> <tt class="py-name">cssname</tt><tt class="py-op">)</tt> </tt>
+<a name="L1435"></a><tt class="py-lineno">1435</tt>  <tt class="py-line"> </tt>
+<a name="L1436"></a><tt class="py-lineno">1436</tt>  <tt class="py-line">        <tt class="py-comment"># Write the stylesheet.</tt> </tt>
+<a name="L1437"></a><tt class="py-lineno">1437</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">cssfile</tt> <tt class="py-op">=</tt> <tt id="link-490" class="py-name"><a title="epydoc.gui.EpydocGUI.open" class="py-name" href="#" onclick="return doclink('link-490', 'open', 'link-214');">open</a></tt><tt class="py-op">(</tt><tt id="link-491" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-4 [...]
+<a name="L1438"></a><tt class="py-lineno">1438</tt>  <tt class="py-line">        <tt class="py-name">cssfile</tt><tt class="py-op">.</tt><tt id="link-492" class="py-name"><a title="epydoc.docintrospecter._DevNull.write
+epydoc.docwriter.dotgraph.DotGraph.write
+epydoc.docwriter.html.HTMLWriter.write
+epydoc.docwriter.latex.LatexWriter.write
+epydoc.docwriter.plaintext.PlaintextWriter.write" class="py-name" href="#" onclick="return doclink('link-492', 'write', 'link-216');">write</a></tt><tt class="py-op">(</tt><tt class="py-name">css</tt><tt class="py-op">)</tt> </tt>
+<a name="L1439"></a><tt class="py-lineno">1439</tt>  <tt class="py-line">        <tt class="py-name">cssfile</tt><tt class="py-op">.</tt><tt id="link-493" class="py-name"><a title="epydoc.cli.HTMLLogger.close
+epydoc.docintrospecter._DevNull.close
+epydoc.log.Logger.close
+epydoc.log.close" class="py-name" href="#" onclick="return doclink('link-493', 'close', 'link-217');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1440"></a><tt class="py-lineno">1440</tt>  <tt class="py-line"> </tt>
+<a name="L1441"></a><tt class="py-lineno">1441</tt>  <tt class="py-line">    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L1442"></a><tt class="py-lineno">1442</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#{ 2.9. Javascript (epydoc.js)</tt> </tt>
+<a name="L1443"></a><tt class="py-lineno">1443</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L1444"></a><tt class="py-lineno">1444</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="HTMLWriter.write_javascript"></a><div id="HTMLWriter.write_javascript-def"><a name="L1445"></a><tt class="py-lineno">1445</tt> <a class="py-toggle" href="#" id="HTMLWriter.write_javascript-toggle" onclick="return toggle('HTMLWriter.write_javascript');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html.HTMLWriter-class.html#write_javascript">write_javascript</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt  [...]
+</div><div id="HTMLWriter.write_javascript-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLWriter.write_javascript-expanded"><a name="L1446"></a><tt class="py-lineno">1446</tt>  <tt class="py-line">        <tt class="py-name">jsfile</tt> <tt class="py-op">=</tt> <tt id="link-494" class="py-name"><a title="epydoc.gui.EpydocGUI.open" class="py-name" href="#" onclick="return doclink('link-494', 'open', 'link-214');">open</a></tt><tt class="py-op">(</tt><tt c [...]
+<a name="L1447"></a><tt class="py-lineno">1447</tt>  <tt class="py-line">        <tt class="py-keyword">print</tt> <tt class="py-op">>></tt> <tt class="py-name">jsfile</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-496" class="py-name" targets="Variable epydoc.docwriter.html.HTMLWriter.TOGGLE_PRIVATE_JS=epydoc.docwriter.html.HTMLWriter-class.html#TOGGLE_PRIVATE_JS"><a title="epydoc.docwriter.html.HTMLWriter.TOGGLE_PRIVATE_JS" class="p [...]
+<a name="L1448"></a><tt class="py-lineno">1448</tt>  <tt class="py-line">        <tt class="py-keyword">print</tt> <tt class="py-op">>></tt> <tt class="py-name">jsfile</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-497" class="py-name" targets="Variable epydoc.docwriter.html.HTMLWriter.SHOW_PRIVATE_JS=epydoc.docwriter.html.HTMLWriter-class.html#SHOW_PRIVATE_JS"><a title="epydoc.docwriter.html.HTMLWriter.SHOW_PRIVATE_JS" class="py-name [...]
+<a name="L1449"></a><tt class="py-lineno">1449</tt>  <tt class="py-line">        <tt class="py-keyword">print</tt> <tt class="py-op">>></tt> <tt class="py-name">jsfile</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-498" class="py-name" targets="Variable epydoc.docwriter.html.HTMLWriter.GET_COOKIE_JS=epydoc.docwriter.html.HTMLWriter-class.html#GET_COOKIE_JS"><a title="epydoc.docwriter.html.HTMLWriter.GET_COOKIE_JS" class="py-name" href [...]
+<a name="L1450"></a><tt class="py-lineno">1450</tt>  <tt class="py-line">        <tt class="py-keyword">print</tt> <tt class="py-op">>></tt> <tt class="py-name">jsfile</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-499" class="py-name" targets="Variable epydoc.docwriter.html.HTMLWriter.SET_FRAME_JS=epydoc.docwriter.html.HTMLWriter-class.html#SET_FRAME_JS"><a title="epydoc.docwriter.html.HTMLWriter.SET_FRAME_JS" class="py-name" href="# [...]
+<a name="L1451"></a><tt class="py-lineno">1451</tt>  <tt class="py-line">        <tt class="py-keyword">print</tt> <tt class="py-op">>></tt> <tt class="py-name">jsfile</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-500" class="py-name" targets="Variable epydoc.docwriter.html.HTMLWriter.HIDE_PRIVATE_JS=epydoc.docwriter.html.HTMLWriter-class.html#HIDE_PRIVATE_JS"><a title="epydoc.docwriter.html.HTMLWriter.HIDE_PRIVATE_JS" class="py-name [...]
+<a name="L1452"></a><tt class="py-lineno">1452</tt>  <tt class="py-line">        <tt class="py-keyword">print</tt> <tt class="py-op">>></tt> <tt class="py-name">jsfile</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-501" class="py-name" targets="Variable epydoc.docwriter.html.HTMLWriter.TOGGLE_CALLGRAPH_JS=epydoc.docwriter.html.HTMLWriter-class.html#TOGGLE_CALLGRAPH_JS"><a title="epydoc.docwriter.html.HTMLWriter.TOGGLE_CALLGRAPH_JS" cl [...]
+<a name="L1453"></a><tt class="py-lineno">1453</tt>  <tt class="py-line">        <tt class="py-keyword">print</tt> <tt class="py-op">>></tt> <tt class="py-name">jsfile</tt><tt class="py-op">,</tt> <tt id="link-502" class="py-name"><a title="epydoc.docwriter.html_colorize" class="py-name" href="#" onclick="return doclink('link-502', 'html_colorize', 'link-12');">html_colorize</a></tt><tt class="py-op">.</tt><tt id="link-503" class="py-name" targets="Variable epydoc.docwriter.html_co [...]
+<a name="L1454"></a><tt class="py-lineno">1454</tt>  <tt class="py-line">        <tt class="py-keyword">print</tt> <tt class="py-op">>></tt> <tt class="py-name">jsfile</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-504" class="py-name" targets="Variable epydoc.docwriter.html.HTMLWriter.GET_ANCHOR_JS=epydoc.docwriter.html.HTMLWriter-class.html#GET_ANCHOR_JS"><a title="epydoc.docwriter.html.HTMLWriter.GET_ANCHOR_JS" class="py-name" href [...]
+<a name="L1455"></a><tt class="py-lineno">1455</tt>  <tt class="py-line">        <tt class="py-keyword">print</tt> <tt class="py-op">>></tt> <tt class="py-name">jsfile</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-505" class="py-name" targets="Variable epydoc.docwriter.html.HTMLWriter.REDIRECT_URL_JS=epydoc.docwriter.html.HTMLWriter-class.html#REDIRECT_URL_JS"><a title="epydoc.docwriter.html.HTMLWriter.REDIRECT_URL_JS" class="py-name [...]
+<a name="L1456"></a><tt class="py-lineno">1456</tt>  <tt class="py-line">        <tt class="py-name">jsfile</tt><tt class="py-op">.</tt><tt id="link-506" class="py-name"><a title="epydoc.cli.HTMLLogger.close
+epydoc.docintrospecter._DevNull.close
+epydoc.log.Logger.close
+epydoc.log.close" class="py-name" href="#" onclick="return doclink('link-506', 'close', 'link-217');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1457"></a><tt class="py-lineno">1457</tt>  <tt class="py-line"> </tt>
+<a name="L1458"></a><tt class="py-lineno">1458</tt>  <tt class="py-line">    <tt class="py-comment">#: A javascript that is used to show or hide the API documentation</tt> </tt>
+<a name="L1459"></a><tt class="py-lineno">1459</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#: for private objects.  In order for this to work correctly, all</tt> </tt>
+<a name="L1460"></a><tt class="py-lineno">1460</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#: documentation for private objects should be enclosed in </tt> </tt>
+<a name="L1461"></a><tt class="py-lineno">1461</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#: C{<div class="private">...</div>} elements.</tt> </tt>
+<a name="L1462"></a><tt class="py-lineno">1462</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-507" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.TOGGLE_PRIVATE_JS" class="py-name" href="#" onclick="return doclink('link-507', 'TOGGLE_PRIVATE_JS', 'link-496');">TOGGLE_PRIVATE_JS</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'''</tt> </tt>
+<a name="L1463"></a><tt class="py-lineno">1463</tt>  <tt class="py-line"><tt class="py-string">      function toggle_private() {</tt> </tt>
+<a name="L1464"></a><tt class="py-lineno">1464</tt>  <tt class="py-line"><tt class="py-string">        // Search for any private/public links on this page.  Store</tt> </tt>
+<a name="L1465"></a><tt class="py-lineno">1465</tt>  <tt class="py-line"><tt class="py-string">        // their old text in "cmd," so we will know what action to</tt> </tt>
+<a name="L1466"></a><tt class="py-lineno">1466</tt>  <tt class="py-line"><tt class="py-string">        // take; and change their text to the opposite action.</tt> </tt>
+<a name="L1467"></a><tt class="py-lineno">1467</tt>  <tt class="py-line"><tt class="py-string">        var cmd = "?";</tt> </tt>
+<a name="L1468"></a><tt class="py-lineno">1468</tt>  <tt class="py-line"><tt class="py-string">        var elts = document.getElementsByTagName("a");</tt> </tt>
+<a name="L1469"></a><tt class="py-lineno">1469</tt>  <tt class="py-line"><tt class="py-string">        for(var i=0; i<elts.length; i++) {</tt> </tt>
+<a name="L1470"></a><tt class="py-lineno">1470</tt>  <tt class="py-line"><tt class="py-string">          if (elts[i].className == "privatelink") {</tt> </tt>
+<a name="L1471"></a><tt class="py-lineno">1471</tt>  <tt class="py-line"><tt class="py-string">            cmd = elts[i].innerHTML;</tt> </tt>
+<a name="L1472"></a><tt class="py-lineno">1472</tt>  <tt class="py-line"><tt class="py-string">            elts[i].innerHTML = ((cmd && cmd.substr(0,4)=="show")?</tt> </tt>
+<a name="L1473"></a><tt class="py-lineno">1473</tt>  <tt class="py-line"><tt class="py-string">                                    "hide&nbsp;private":"show&nbsp;private");</tt> </tt>
+<a name="L1474"></a><tt class="py-lineno">1474</tt>  <tt class="py-line"><tt class="py-string">          }</tt> </tt>
+<a name="L1475"></a><tt class="py-lineno">1475</tt>  <tt class="py-line"><tt class="py-string">        }</tt> </tt>
+<a name="L1476"></a><tt class="py-lineno">1476</tt>  <tt class="py-line"><tt class="py-string">        // Update all DIVs containing private objects.</tt> </tt>
+<a name="L1477"></a><tt class="py-lineno">1477</tt>  <tt class="py-line"><tt class="py-string">        var elts = document.getElementsByTagName("div");</tt> </tt>
+<a name="L1478"></a><tt class="py-lineno">1478</tt>  <tt class="py-line"><tt class="py-string">        for(var i=0; i<elts.length; i++) {</tt> </tt>
+<a name="L1479"></a><tt class="py-lineno">1479</tt>  <tt class="py-line"><tt class="py-string">          if (elts[i].className == "private") {</tt> </tt>
+<a name="L1480"></a><tt class="py-lineno">1480</tt>  <tt class="py-line"><tt class="py-string">            elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"none":"block");</tt> </tt>
+<a name="L1481"></a><tt class="py-lineno">1481</tt>  <tt class="py-line"><tt class="py-string">          }</tt> </tt>
+<a name="L1482"></a><tt class="py-lineno">1482</tt>  <tt class="py-line"><tt class="py-string">          else if (elts[i].className == "public") {</tt> </tt>
+<a name="L1483"></a><tt class="py-lineno">1483</tt>  <tt class="py-line"><tt class="py-string">            elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"block":"none");</tt> </tt>
+<a name="L1484"></a><tt class="py-lineno">1484</tt>  <tt class="py-line"><tt class="py-string">          }</tt> </tt>
+<a name="L1485"></a><tt class="py-lineno">1485</tt>  <tt class="py-line"><tt class="py-string">        }</tt> </tt>
+<a name="L1486"></a><tt class="py-lineno">1486</tt>  <tt class="py-line"><tt class="py-string">        // Update all table rows containing private objects.  Note, we</tt> </tt>
+<a name="L1487"></a><tt class="py-lineno">1487</tt>  <tt class="py-line"><tt class="py-string">        // use "" instead of "block" becaue IE & firefox disagree on what</tt> </tt>
+<a name="L1488"></a><tt class="py-lineno">1488</tt>  <tt class="py-line"><tt class="py-string">        // this should be (block vs table-row), and "" just gives the</tt> </tt>
+<a name="L1489"></a><tt class="py-lineno">1489</tt>  <tt class="py-line"><tt class="py-string">        // default for both browsers.</tt> </tt>
+<a name="L1490"></a><tt class="py-lineno">1490</tt>  <tt class="py-line"><tt class="py-string">        var elts = document.getElementsByTagName("tr");</tt> </tt>
+<a name="L1491"></a><tt class="py-lineno">1491</tt>  <tt class="py-line"><tt class="py-string">        for(var i=0; i<elts.length; i++) {</tt> </tt>
+<a name="L1492"></a><tt class="py-lineno">1492</tt>  <tt class="py-line"><tt class="py-string">          if (elts[i].className == "private") {</tt> </tt>
+<a name="L1493"></a><tt class="py-lineno">1493</tt>  <tt class="py-line"><tt class="py-string">            elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"none":"");</tt> </tt>
+<a name="L1494"></a><tt class="py-lineno">1494</tt>  <tt class="py-line"><tt class="py-string">          }</tt> </tt>
+<a name="L1495"></a><tt class="py-lineno">1495</tt>  <tt class="py-line"><tt class="py-string">        }</tt> </tt>
+<a name="L1496"></a><tt class="py-lineno">1496</tt>  <tt class="py-line"><tt class="py-string">        // Update all list items containing private objects.</tt> </tt>
+<a name="L1497"></a><tt class="py-lineno">1497</tt>  <tt class="py-line"><tt class="py-string">        var elts = document.getElementsByTagName("li");</tt> </tt>
+<a name="L1498"></a><tt class="py-lineno">1498</tt>  <tt class="py-line"><tt class="py-string">        for(var i=0; i<elts.length; i++) {</tt> </tt>
+<a name="L1499"></a><tt class="py-lineno">1499</tt>  <tt class="py-line"><tt class="py-string">          if (elts[i].className == "private") {</tt> </tt>
+<a name="L1500"></a><tt class="py-lineno">1500</tt>  <tt class="py-line"><tt class="py-string">            elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?</tt> </tt>
+<a name="L1501"></a><tt class="py-lineno">1501</tt>  <tt class="py-line"><tt class="py-string">                                        "none":"");</tt> </tt>
+<a name="L1502"></a><tt class="py-lineno">1502</tt>  <tt class="py-line"><tt class="py-string">          }</tt> </tt>
+<a name="L1503"></a><tt class="py-lineno">1503</tt>  <tt class="py-line"><tt class="py-string">        }</tt> </tt>
+<a name="L1504"></a><tt class="py-lineno">1504</tt>  <tt class="py-line"><tt class="py-string">        // Update all list items containing private objects.</tt> </tt>
+<a name="L1505"></a><tt class="py-lineno">1505</tt>  <tt class="py-line"><tt class="py-string">        var elts = document.getElementsByTagName("ul");</tt> </tt>
+<a name="L1506"></a><tt class="py-lineno">1506</tt>  <tt class="py-line"><tt class="py-string">        for(var i=0; i<elts.length; i++) {</tt> </tt>
+<a name="L1507"></a><tt class="py-lineno">1507</tt>  <tt class="py-line"><tt class="py-string">          if (elts[i].className == "private") {</tt> </tt>
+<a name="L1508"></a><tt class="py-lineno">1508</tt>  <tt class="py-line"><tt class="py-string">            elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"none":"block");</tt> </tt>
+<a name="L1509"></a><tt class="py-lineno">1509</tt>  <tt class="py-line"><tt class="py-string">          }</tt> </tt>
+<a name="L1510"></a><tt class="py-lineno">1510</tt>  <tt class="py-line"><tt class="py-string">        }</tt> </tt>
+<a name="L1511"></a><tt class="py-lineno">1511</tt>  <tt class="py-line"><tt class="py-string">        // Set a cookie to remember the current option.</tt> </tt>
+<a name="L1512"></a><tt class="py-lineno">1512</tt>  <tt class="py-line"><tt class="py-string">        document.cookie = "EpydocPrivate="+cmd;</tt> </tt>
+<a name="L1513"></a><tt class="py-lineno">1513</tt>  <tt class="py-line"><tt class="py-string">      }</tt> </tt>
+<a name="L1514"></a><tt class="py-lineno">1514</tt>  <tt class="py-line"><tt class="py-string">      '''</tt><tt class="py-op">.</tt><tt class="py-name">strip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1515"></a><tt class="py-lineno">1515</tt>  <tt class="py-line"> </tt>
+<a name="L1516"></a><tt class="py-lineno">1516</tt>  <tt class="py-line">    <tt class="py-comment">#: A javascript that is used to read the value of a cookie.  This</tt> </tt>
+<a name="L1517"></a><tt class="py-lineno">1517</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#: is used to remember whether private variables should be shown or</tt> </tt>
+<a name="L1518"></a><tt class="py-lineno">1518</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#: hidden.</tt> </tt>
+<a name="L1519"></a><tt class="py-lineno">1519</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-508" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.GET_COOKIE_JS" class="py-name" href="#" onclick="return doclink('link-508', 'GET_COOKIE_JS', 'link-498');">GET_COOKIE_JS</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'''</tt> </tt>
+<a name="L1520"></a><tt class="py-lineno">1520</tt>  <tt class="py-line"><tt class="py-string">      function getCookie(name) {</tt> </tt>
+<a name="L1521"></a><tt class="py-lineno">1521</tt>  <tt class="py-line"><tt class="py-string">        var dc = document.cookie;</tt> </tt>
+<a name="L1522"></a><tt class="py-lineno">1522</tt>  <tt class="py-line"><tt class="py-string">        var prefix = name + "=";</tt> </tt>
+<a name="L1523"></a><tt class="py-lineno">1523</tt>  <tt class="py-line"><tt class="py-string">        var begin = dc.indexOf("; " + prefix);</tt> </tt>
+<a name="L1524"></a><tt class="py-lineno">1524</tt>  <tt class="py-line"><tt class="py-string">        if (begin == -1) {</tt> </tt>
+<a name="L1525"></a><tt class="py-lineno">1525</tt>  <tt class="py-line"><tt class="py-string">          begin = dc.indexOf(prefix);</tt> </tt>
+<a name="L1526"></a><tt class="py-lineno">1526</tt>  <tt class="py-line"><tt class="py-string">          if (begin != 0) return null;</tt> </tt>
+<a name="L1527"></a><tt class="py-lineno">1527</tt>  <tt class="py-line"><tt class="py-string">        } else</tt> </tt>
+<a name="L1528"></a><tt class="py-lineno">1528</tt>  <tt class="py-line"><tt class="py-string">        { begin += 2; }</tt> </tt>
+<a name="L1529"></a><tt class="py-lineno">1529</tt>  <tt class="py-line"><tt class="py-string">        var end = document.cookie.indexOf(";", begin);</tt> </tt>
+<a name="L1530"></a><tt class="py-lineno">1530</tt>  <tt class="py-line"><tt class="py-string">        if (end == -1)</tt> </tt>
+<a name="L1531"></a><tt class="py-lineno">1531</tt>  <tt class="py-line"><tt class="py-string">        { end = dc.length; }</tt> </tt>
+<a name="L1532"></a><tt class="py-lineno">1532</tt>  <tt class="py-line"><tt class="py-string">        return unescape(dc.substring(begin + prefix.length, end));</tt> </tt>
+<a name="L1533"></a><tt class="py-lineno">1533</tt>  <tt class="py-line"><tt class="py-string">      }</tt> </tt>
+<a name="L1534"></a><tt class="py-lineno">1534</tt>  <tt class="py-line"><tt class="py-string">      '''</tt><tt class="py-op">.</tt><tt class="py-name">strip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1535"></a><tt class="py-lineno">1535</tt>  <tt class="py-line"> </tt>
+<a name="L1536"></a><tt class="py-lineno">1536</tt>  <tt class="py-line">    <tt class="py-comment">#: A javascript that is used to set the contents of two frames at</tt> </tt>
+<a name="L1537"></a><tt class="py-lineno">1537</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#: once.  This is used by the project table-of-contents frame to</tt> </tt>
+<a name="L1538"></a><tt class="py-lineno">1538</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#: set both the module table-of-contents frame and the main frame</tt> </tt>
+<a name="L1539"></a><tt class="py-lineno">1539</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#: when the user clicks on a module.</tt> </tt>
+<a name="L1540"></a><tt class="py-lineno">1540</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-509" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.SET_FRAME_JS" class="py-name" href="#" onclick="return doclink('link-509', 'SET_FRAME_JS', 'link-499');">SET_FRAME_JS</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'''</tt> </tt>
+<a name="L1541"></a><tt class="py-lineno">1541</tt>  <tt class="py-line"><tt class="py-string">      function setFrame(url1, url2) {</tt> </tt>
+<a name="L1542"></a><tt class="py-lineno">1542</tt>  <tt class="py-line"><tt class="py-string">          parent.frames[1].location.href = url1;</tt> </tt>
+<a name="L1543"></a><tt class="py-lineno">1543</tt>  <tt class="py-line"><tt class="py-string">          parent.frames[2].location.href = url2;</tt> </tt>
+<a name="L1544"></a><tt class="py-lineno">1544</tt>  <tt class="py-line"><tt class="py-string">      }</tt> </tt>
+<a name="L1545"></a><tt class="py-lineno">1545</tt>  <tt class="py-line"><tt class="py-string">    '''</tt><tt class="py-op">.</tt><tt class="py-name">strip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1546"></a><tt class="py-lineno">1546</tt>  <tt class="py-line"> </tt>
+<a name="L1547"></a><tt class="py-lineno">1547</tt>  <tt class="py-line">    <tt class="py-comment">#: A javascript that is used to hide private variables, unless</tt> </tt>
+<a name="L1548"></a><tt class="py-lineno">1548</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#: either: (a) the cookie says not to; or (b) we appear to be</tt> </tt>
+<a name="L1549"></a><tt class="py-lineno">1549</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#: linking to a private variable.</tt> </tt>
+<a name="L1550"></a><tt class="py-lineno">1550</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-510" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.HIDE_PRIVATE_JS" class="py-name" href="#" onclick="return doclink('link-510', 'HIDE_PRIVATE_JS', 'link-500');">HIDE_PRIVATE_JS</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'''</tt> </tt>
+<a name="L1551"></a><tt class="py-lineno">1551</tt>  <tt class="py-line"><tt class="py-string">      function checkCookie() {</tt> </tt>
+<a name="L1552"></a><tt class="py-lineno">1552</tt>  <tt class="py-line"><tt class="py-string">        var cmd=getCookie("EpydocPrivate");</tt> </tt>
+<a name="L1553"></a><tt class="py-lineno">1553</tt>  <tt class="py-line"><tt class="py-string">        if (cmd && cmd.substr(0,4)!="show" && location.href.indexOf("#_") < 0)</tt> </tt>
+<a name="L1554"></a><tt class="py-lineno">1554</tt>  <tt class="py-line"><tt class="py-string">            toggle_private();</tt> </tt>
+<a name="L1555"></a><tt class="py-lineno">1555</tt>  <tt class="py-line"><tt class="py-string">      }</tt> </tt>
+<a name="L1556"></a><tt class="py-lineno">1556</tt>  <tt class="py-line"><tt class="py-string">    '''</tt><tt class="py-op">.</tt><tt class="py-name">strip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1557"></a><tt class="py-lineno">1557</tt>  <tt class="py-line"> </tt>
+<a name="L1558"></a><tt class="py-lineno">1558</tt>  <tt class="py-line">    <tt id="link-511" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.TOGGLE_CALLGRAPH_JS" class="py-name" href="#" onclick="return doclink('link-511', 'TOGGLE_CALLGRAPH_JS', 'link-501');">TOGGLE_CALLGRAPH_JS</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'''</tt> </tt>
+<a name="L1559"></a><tt class="py-lineno">1559</tt>  <tt class="py-line"><tt class="py-string">      function toggleCallGraph(id) {</tt> </tt>
+<a name="L1560"></a><tt class="py-lineno">1560</tt>  <tt class="py-line"><tt class="py-string">        var elt = document.getElementById(id);</tt> </tt>
+<a name="L1561"></a><tt class="py-lineno">1561</tt>  <tt class="py-line"><tt class="py-string">        if (elt.style.display == "none")</tt> </tt>
+<a name="L1562"></a><tt class="py-lineno">1562</tt>  <tt class="py-line"><tt class="py-string">            elt.style.display = "block";</tt> </tt>
+<a name="L1563"></a><tt class="py-lineno">1563</tt>  <tt class="py-line"><tt class="py-string">        else</tt> </tt>
+<a name="L1564"></a><tt class="py-lineno">1564</tt>  <tt class="py-line"><tt class="py-string">            elt.style.display = "none";</tt> </tt>
+<a name="L1565"></a><tt class="py-lineno">1565</tt>  <tt class="py-line"><tt class="py-string">      }</tt> </tt>
+<a name="L1566"></a><tt class="py-lineno">1566</tt>  <tt class="py-line"><tt class="py-string">    '''</tt><tt class="py-op">.</tt><tt class="py-name">strip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1567"></a><tt class="py-lineno">1567</tt>  <tt class="py-line"> </tt>
+<a name="L1568"></a><tt class="py-lineno">1568</tt>  <tt class="py-line">    <tt id="link-512" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.SHOW_PRIVATE_JS" class="py-name" href="#" onclick="return doclink('link-512', 'SHOW_PRIVATE_JS', 'link-497');">SHOW_PRIVATE_JS</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'''</tt> </tt>
+<a name="L1569"></a><tt class="py-lineno">1569</tt>  <tt class="py-line"><tt class="py-string">      function show_private() {</tt> </tt>
+<a name="L1570"></a><tt class="py-lineno">1570</tt>  <tt class="py-line"><tt class="py-string">        var elts = document.getElementsByTagName("a");</tt> </tt>
+<a name="L1571"></a><tt class="py-lineno">1571</tt>  <tt class="py-line"><tt class="py-string">        for(var i=0; i<elts.length; i++) {</tt> </tt>
+<a name="L1572"></a><tt class="py-lineno">1572</tt>  <tt class="py-line"><tt class="py-string">          if (elts[i].className == "privatelink") {</tt> </tt>
+<a name="L1573"></a><tt class="py-lineno">1573</tt>  <tt class="py-line"><tt class="py-string">            cmd = elts[i].innerHTML;</tt> </tt>
+<a name="L1574"></a><tt class="py-lineno">1574</tt>  <tt class="py-line"><tt class="py-string">            if (cmd && cmd.substr(0,4)=="show")</tt> </tt>
+<a name="L1575"></a><tt class="py-lineno">1575</tt>  <tt class="py-line"><tt class="py-string">                toggle_private();</tt> </tt>
+<a name="L1576"></a><tt class="py-lineno">1576</tt>  <tt class="py-line"><tt class="py-string">          }</tt> </tt>
+<a name="L1577"></a><tt class="py-lineno">1577</tt>  <tt class="py-line"><tt class="py-string">        }</tt> </tt>
+<a name="L1578"></a><tt class="py-lineno">1578</tt>  <tt class="py-line"><tt class="py-string">      }</tt> </tt>
+<a name="L1579"></a><tt class="py-lineno">1579</tt>  <tt class="py-line"><tt class="py-string">    '''</tt><tt class="py-op">.</tt><tt class="py-name">strip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1580"></a><tt class="py-lineno">1580</tt>  <tt class="py-line"> </tt>
+<a name="L1581"></a><tt class="py-lineno">1581</tt>  <tt class="py-line">    <tt id="link-513" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.GET_ANCHOR_JS" class="py-name" href="#" onclick="return doclink('link-513', 'GET_ANCHOR_JS', 'link-504');">GET_ANCHOR_JS</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'''</tt> </tt>
+<a name="L1582"></a><tt class="py-lineno">1582</tt>  <tt class="py-line"><tt class="py-string">      function get_anchor() {</tt> </tt>
+<a name="L1583"></a><tt class="py-lineno">1583</tt>  <tt class="py-line"><tt class="py-string">          var href = location.href;</tt> </tt>
+<a name="L1584"></a><tt class="py-lineno">1584</tt>  <tt class="py-line"><tt class="py-string">          var start = href.indexOf("#")+1;</tt> </tt>
+<a name="L1585"></a><tt class="py-lineno">1585</tt>  <tt class="py-line"><tt class="py-string">          if ((start != 0) && (start != href.length))</tt> </tt>
+<a name="L1586"></a><tt class="py-lineno">1586</tt>  <tt class="py-line"><tt class="py-string">              return href.substring(start, href.length);</tt> </tt>
+<a name="L1587"></a><tt class="py-lineno">1587</tt>  <tt class="py-line"><tt class="py-string">      }</tt> </tt>
+<a name="L1588"></a><tt class="py-lineno">1588</tt>  <tt class="py-line"><tt class="py-string">    '''</tt><tt class="py-op">.</tt><tt class="py-name">strip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1589"></a><tt class="py-lineno">1589</tt>  <tt class="py-line"> </tt>
+<a name="L1590"></a><tt class="py-lineno">1590</tt>  <tt class="py-line">    <tt class="py-comment">#: A javascript that is used to implement the auto-redirect page.</tt> </tt>
+<a name="L1591"></a><tt class="py-lineno">1591</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#: When the user visits <redirect.html#dotted.name>, they will</tt> </tt>
+<a name="L1592"></a><tt class="py-lineno">1592</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#: automatically get redirected to the page for the object with</tt> </tt>
+<a name="L1593"></a><tt class="py-lineno">1593</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#: the given fully-qualified dotted name.  E.g., for epydoc,</tt> </tt>
+<a name="L1594"></a><tt class="py-lineno">1594</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#: <redirect.html#epydoc.apidoc.UNKNOWN> redirects the user to</tt> </tt>
+<a name="L1595"></a><tt class="py-lineno">1595</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#: <epydoc.apidoc-module.html#UNKNOWN>.</tt> </tt>
+<a name="L1596"></a><tt class="py-lineno">1596</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-514" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.REDIRECT_URL_JS" class="py-name" href="#" onclick="return doclink('link-514', 'REDIRECT_URL_JS', 'link-505');">REDIRECT_URL_JS</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'''</tt> </tt>
+<a name="L1597"></a><tt class="py-lineno">1597</tt>  <tt class="py-line"><tt class="py-string">      function redirect_url(dottedName) {</tt> </tt>
+<a name="L1598"></a><tt class="py-lineno">1598</tt>  <tt class="py-line"><tt class="py-string">          // Scan through each element of the "pages" list, and check</tt> </tt>
+<a name="L1599"></a><tt class="py-lineno">1599</tt>  <tt class="py-line"><tt class="py-string">          // if "name" matches with any of them.</tt> </tt>
+<a name="L1600"></a><tt class="py-lineno">1600</tt>  <tt class="py-line"><tt class="py-string">          for (var i=0; i<pages.length; i++) {</tt> </tt>
+<a name="L1601"></a><tt class="py-lineno">1601</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L1602"></a><tt class="py-lineno">1602</tt>  <tt class="py-line"><tt class="py-string">              // Each page has the form "<pagename>-m" or "<pagename>-c";</tt> </tt>
+<a name="L1603"></a><tt class="py-lineno">1603</tt>  <tt class="py-line"><tt class="py-string">              // extract the <pagename> portion & compare it to dottedName.</tt> </tt>
+<a name="L1604"></a><tt class="py-lineno">1604</tt>  <tt class="py-line"><tt class="py-string">              var pagename = pages[i].substring(0, pages[i].length-2);</tt> </tt>
+<a name="L1605"></a><tt class="py-lineno">1605</tt>  <tt class="py-line"><tt class="py-string">              if (pagename == dottedName.substring(0,pagename.length)) {</tt> </tt>
+<a name="L1606"></a><tt class="py-lineno">1606</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L1607"></a><tt class="py-lineno">1607</tt>  <tt class="py-line"><tt class="py-string">                  // We\'ve found a page that matches `dottedName`;</tt> </tt>
+<a name="L1608"></a><tt class="py-lineno">1608</tt>  <tt class="py-line"><tt class="py-string">                  // construct its URL, using leftover `dottedName`</tt> </tt>
+<a name="L1609"></a><tt class="py-lineno">1609</tt>  <tt class="py-line"><tt class="py-string">                  // content to form an anchor.</tt> </tt>
+<a name="L1610"></a><tt class="py-lineno">1610</tt>  <tt class="py-line"><tt class="py-string">                  var pagetype = pages[i].charAt(pages[i].length-1);</tt> </tt>
+<a name="L1611"></a><tt class="py-lineno">1611</tt>  <tt class="py-line"><tt class="py-string">                  var url = pagename + ((pagetype=="m")?"-module.html":</tt> </tt>
+<a name="L1612"></a><tt class="py-lineno">1612</tt>  <tt class="py-line"><tt class="py-string">                                                        "-class.html");</tt> </tt>
+<a name="L1613"></a><tt class="py-lineno">1613</tt>  <tt class="py-line"><tt class="py-string">                  if (dottedName.length > pagename.length)</tt> </tt>
+<a name="L1614"></a><tt class="py-lineno">1614</tt>  <tt class="py-line"><tt class="py-string">                      url += "#" + dottedName.substring(pagename.length+1,</tt> </tt>
+<a name="L1615"></a><tt class="py-lineno">1615</tt>  <tt class="py-line"><tt class="py-string">                                                        dottedName.length);</tt> </tt>
+<a name="L1616"></a><tt class="py-lineno">1616</tt>  <tt class="py-line"><tt class="py-string">                  return url;</tt> </tt>
+<a name="L1617"></a><tt class="py-lineno">1617</tt>  <tt class="py-line"><tt class="py-string">              }</tt> </tt>
+<a name="L1618"></a><tt class="py-lineno">1618</tt>  <tt class="py-line"><tt class="py-string">          }</tt> </tt>
+<a name="L1619"></a><tt class="py-lineno">1619</tt>  <tt class="py-line"><tt class="py-string">      }</tt> </tt>
+<a name="L1620"></a><tt class="py-lineno">1620</tt>  <tt class="py-line"><tt class="py-string">    '''</tt><tt class="py-op">.</tt><tt class="py-name">strip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1621"></a><tt class="py-lineno">1621</tt>  <tt class="py-line">           </tt>
+<a name="L1622"></a><tt class="py-lineno">1622</tt>  <tt class="py-line"> </tt>
+<a name="L1623"></a><tt class="py-lineno">1623</tt>  <tt class="py-line">    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L1624"></a><tt class="py-lineno">1624</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#{ 2.10. Graphs</tt> </tt>
+<a name="L1625"></a><tt class="py-lineno">1625</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L1626"></a><tt class="py-lineno">1626</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="HTMLWriter.render_graph"></a><div id="HTMLWriter.render_graph-def"><a name="L1627"></a><tt class="py-lineno">1627</tt> <a class="py-toggle" href="#" id="HTMLWriter.render_graph-toggle" onclick="return toggle('HTMLWriter.render_graph');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html.HTMLWriter-class.html#render_graph">render_graph</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt [...]
+</div><div id="HTMLWriter.render_graph-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLWriter.render_graph-expanded"><a name="L1628"></a><tt class="py-lineno">1628</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-515" class="py-name" targets="Method epydoc.markup.restructuredtext.dotgraph.graph()=epydoc.markup.restructuredtext.dotgraph-class.html#graph"><a title="epydoc.markup.restructuredtext.dotgraph.graph" class="py-name" h [...]
+<a name="L1629"></a><tt class="py-lineno">1629</tt>  <tt class="py-line">        <tt id="link-516" class="py-name"><a title="epydoc.markup.restructuredtext.dotgraph.graph" class="py-name" href="#" onclick="return doclink('link-516', 'graph', 'link-515');">graph</a></tt><tt class="py-op">.</tt><tt class="py-name">caption</tt> <tt class="py-op">=</tt> <tt id="link-517" class="py-name"><a title="epydoc.markup.restructuredtext.dotgraph.graph" class="py-name" href="#" onclick="return doclink( [...]
+<a name="L1630"></a><tt class="py-lineno">1630</tt>  <tt class="py-line">        <tt class="py-name">image_url</tt> <tt class="py-op">=</tt> <tt class="py-string">'%s.gif'</tt> <tt class="py-op">%</tt> <tt id="link-519" class="py-name"><a title="epydoc.markup.restructuredtext.dotgraph.graph" class="py-name" href="#" onclick="return doclink('link-519', 'graph', 'link-515');">graph</a></tt><tt class="py-op">.</tt><tt class="py-name">uid</tt> </tt>
+<a name="L1631"></a><tt class="py-lineno">1631</tt>  <tt class="py-line">        <tt class="py-name">image_file</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-520" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-520', 'path', 'link-211');">path</a></tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt [...]
+<a name="L1632"></a><tt class="py-lineno">1632</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-521" class="py-name"><a title="epydoc.markup.restructuredtext.dotgraph.graph" class="py-name" href="#" onclick="return doclink('link-521', 'graph', 'link-515');">graph</a></tt><tt class="py-op">.</tt><tt id="link-522" class="py-name" targets="Method epydoc.docwriter.dotgraph.DotGraph.to_html()=epydoc.docwriter.dotgraph.DotGraph-class.html#to_html,Method epydoc. [...]
+epydoc.markup.ConcatenatedDocstring.to_html
+epydoc.markup.ParsedDocstring.to_html
+epydoc.markup.epytext.ParsedEpytextDocstring.to_html
+epydoc.markup.javadoc.ParsedJavadocDocstring.to_html
+epydoc.markup.plaintext.ParsedPlaintextDocstring.to_html
+epydoc.markup.restructuredtext.ParsedRstDocstring.to_html" class="py-name" href="#" onclick="return doclink('link-522', 'to_html', 'link-522');">to_html</a></tt><tt class="py-op">(</tt><tt class="py-name">image_file</tt><tt class="py-op">,</tt> <tt class="py-name">image_url</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1633"></a><tt class="py-lineno">1633</tt>  <tt class="py-line">     </tt>
+<a name="L1634"></a><tt class="py-lineno">1634</tt>  <tt class="py-line">    <tt id="link-523" class="py-name" targets="Variable epydoc.docwriter.html.HTMLWriter.RE_CALLGRAPH_ID=epydoc.docwriter.html.HTMLWriter-class.html#RE_CALLGRAPH_ID"><a title="epydoc.docwriter.html.HTMLWriter.RE_CALLGRAPH_ID" class="py-name" href="#" onclick="return doclink('link-523', 'RE_CALLGRAPH_ID', 'link-523');">RE_CALLGRAPH_ID</a></tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</t [...]
+<a name="L1635"></a><tt class="py-lineno">1635</tt>  <tt class="py-line">     </tt>
+<a name="HTMLWriter.render_callgraph"></a><div id="HTMLWriter.render_callgraph-def"><a name="L1636"></a><tt class="py-lineno">1636</tt> <a class="py-toggle" href="#" id="HTMLWriter.render_callgraph-toggle" onclick="return toggle('HTMLWriter.render_callgraph');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html.HTMLWriter-class.html#render_callgraph">render_callgraph</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt  [...]
+</div><div id="HTMLWriter.render_callgraph-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLWriter.render_callgraph-expanded"><a name="L1637"></a><tt class="py-lineno">1637</tt>  <tt class="py-line">        <tt class="py-docstring">"""Render the HTML chunk of a callgraph.</tt> </tt>
+<a name="L1638"></a><tt class="py-lineno">1638</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1639"></a><tt class="py-lineno">1639</tt>  <tt class="py-line"><tt class="py-docstring">        If C{callgraph} is a string, use the L{_callgraph_cache} to return</tt> </tt>
+<a name="L1640"></a><tt class="py-lineno">1640</tt>  <tt class="py-line"><tt class="py-docstring">        a pre-rendered HTML chunk. This mostly avoids to run C{dot} twice for</tt> </tt>
+<a name="L1641"></a><tt class="py-lineno">1641</tt>  <tt class="py-line"><tt class="py-docstring">        the same callgraph. Else, run the graph and store its HTML output in</tt> </tt>
+<a name="L1642"></a><tt class="py-lineno">1642</tt>  <tt class="py-line"><tt class="py-docstring">        the cache.</tt> </tt>
+<a name="L1643"></a><tt class="py-lineno">1643</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1644"></a><tt class="py-lineno">1644</tt>  <tt class="py-line"><tt class="py-docstring">        @param callgraph: The graph to render or its L{uid<DotGraph.uid>}.</tt> </tt>
+<a name="L1645"></a><tt class="py-lineno">1645</tt>  <tt class="py-line"><tt class="py-docstring">        @type callgraph: L{DotGraph} or C{str}</tt> </tt>
+<a name="L1646"></a><tt class="py-lineno">1646</tt>  <tt class="py-line"><tt class="py-docstring">        @param token: A string that can be used to make the C{<div>} id</tt> </tt>
+<a name="L1647"></a><tt class="py-lineno">1647</tt>  <tt class="py-line"><tt class="py-docstring">            unambiguous, if the callgraph is used more than once in a page.</tt> </tt>
+<a name="L1648"></a><tt class="py-lineno">1648</tt>  <tt class="py-line"><tt class="py-docstring">        @type token: C{str}</tt> </tt>
+<a name="L1649"></a><tt class="py-lineno">1649</tt>  <tt class="py-line"><tt class="py-docstring">        @return: The HTML representation of the graph.</tt> </tt>
+<a name="L1650"></a><tt class="py-lineno">1650</tt>  <tt class="py-line"><tt class="py-docstring">        @rtype: C{str}</tt> </tt>
+<a name="L1651"></a><tt class="py-lineno">1651</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L1652"></a><tt class="py-lineno">1652</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">callgraph</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-string">""</tt> </tt>
+<a name="L1653"></a><tt class="py-lineno">1653</tt>  <tt class="py-line">         </tt>
+<a name="L1654"></a><tt class="py-lineno">1654</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">callgraph</tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1655"></a><tt class="py-lineno">1655</tt>  <tt class="py-line">            <tt class="py-name">uid</tt> <tt class="py-op">=</tt> <tt class="py-name">callgraph</tt> </tt>
+<a name="L1656"></a><tt class="py-lineno">1656</tt>  <tt class="py-line">            <tt class="py-name">rv</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_callgraph_cache</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-name">callgraph</tt><tt class="py-op">,</tt> <tt class="py-string">""</tt><tt class="py-op">)</tt> </tt>
+<a name="L1657"></a><tt class="py-lineno">1657</tt>  <tt class="py-line"> </tt>
+<a name="L1658"></a><tt class="py-lineno">1658</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1659"></a><tt class="py-lineno">1659</tt>  <tt class="py-line">            <tt class="py-name">uid</tt> <tt class="py-op">=</tt> <tt class="py-name">callgraph</tt><tt class="py-op">.</tt><tt class="py-name">uid</tt> </tt>
+<a name="L1660"></a><tt class="py-lineno">1660</tt>  <tt class="py-line">            <tt class="py-name">graph_html</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-524" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.render_graph" class="py-name" href="#" onclick="return doclink('link-524', 'render_graph', 'link-321');">render_graph</a></tt><tt class="py-op">(</tt><tt class="py-name">callgraph</tt><tt class="py-op">)</tt> </tt>
+<a name="L1661"></a><tt class="py-lineno">1661</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">graph_html</tt> <tt class="py-op">==</tt> <tt class="py-string">''</tt><tt class="py-op">:</tt> </tt>
+<a name="L1662"></a><tt class="py-lineno">1662</tt>  <tt class="py-line">                <tt class="py-name">rv</tt> <tt class="py-op">=</tt> <tt class="py-string">""</tt> </tt>
+<a name="L1663"></a><tt class="py-lineno">1663</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1664"></a><tt class="py-lineno">1664</tt>  <tt class="py-line">                <tt class="py-name">rv</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">'<div style="display:none" id="%%s-div"><center>\n'</tt> </tt>
+<a name="L1665"></a><tt class="py-lineno">1665</tt>  <tt class="py-line">                      <tt class="py-string">'<table border="0" cellpadding="0" cellspacing="0">\n'</tt> </tt>
+<a name="L1666"></a><tt class="py-lineno">1666</tt>  <tt class="py-line">                      <tt class="py-string">'  <tr><td>%s</td></tr>\n'</tt> </tt>
+<a name="L1667"></a><tt class="py-lineno">1667</tt>  <tt class="py-line">                      <tt class="py-string">'  <tr><th>Call Graph</th></tr>\n'</tt> </tt>
+<a name="L1668"></a><tt class="py-lineno">1668</tt>  <tt class="py-line">                      <tt class="py-string">'</table><br />\n</center></div>\n'</tt> <tt class="py-op">%</tt> <tt class="py-name">graph_html</tt><tt class="py-op">)</tt> </tt>
+<a name="L1669"></a><tt class="py-lineno">1669</tt>  <tt class="py-line"> </tt>
+<a name="L1670"></a><tt class="py-lineno">1670</tt>  <tt class="py-line">            <tt class="py-comment"># Store in the cache the complete HTML chunk without the</tt> </tt>
+<a name="L1671"></a><tt class="py-lineno">1671</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># div id, which may be made unambiguous by the token</tt> </tt>
+<a name="L1672"></a><tt class="py-lineno">1672</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_callgraph_cache</tt><tt class="py-op">[</tt><tt class="py-name">uid</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">rv</tt> </tt>
+<a name="L1673"></a><tt class="py-lineno">1673</tt>  <tt class="py-line"> </tt>
+<a name="L1674"></a><tt class="py-lineno">1674</tt>  <tt class="py-line">        <tt class="py-comment"># Mangle with the graph</tt> </tt>
+<a name="L1675"></a><tt class="py-lineno">1675</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">rv</tt><tt class="py-op">:</tt> <tt class="py-name">rv</tt> <tt class="py-op">=</tt> <tt class="py-name">rv</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">uid</tt> <tt class="py-op">+</tt> <tt class="py-name">token</tt><tt class="py-op">)</tt> </tt>
+<a name="L1676"></a><tt class="py-lineno">1676</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">rv</tt> </tt>
+</div><a name="L1677"></a><tt class="py-lineno">1677</tt>  <tt class="py-line"> </tt>
+<a name="HTMLWriter.callgraph_link"></a><div id="HTMLWriter.callgraph_link-def"><a name="L1678"></a><tt class="py-lineno">1678</tt> <a class="py-toggle" href="#" id="HTMLWriter.callgraph_link-toggle" onclick="return toggle('HTMLWriter.callgraph_link');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html.HTMLWriter-class.html#callgraph_link">callgraph_link</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op [...]
+</div><div id="HTMLWriter.callgraph_link-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLWriter.callgraph_link-expanded"><a name="L1679"></a><tt class="py-lineno">1679</tt>  <tt class="py-line">        <tt class="py-docstring">"""Render the HTML chunk of a callgraph link.</tt> </tt>
+<a name="L1680"></a><tt class="py-lineno">1680</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1681"></a><tt class="py-lineno">1681</tt>  <tt class="py-line"><tt class="py-docstring">        The link can toggles the visibility of the callgraph rendered using</tt> </tt>
+<a name="L1682"></a><tt class="py-lineno">1682</tt>  <tt class="py-line"><tt class="py-docstring">        L{render_callgraph} with matching parameters.</tt> </tt>
+<a name="L1683"></a><tt class="py-lineno">1683</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1684"></a><tt class="py-lineno">1684</tt>  <tt class="py-line"><tt class="py-docstring">        @param callgraph: The graph to render or its L{uid<DotGraph.uid>}.</tt> </tt>
+<a name="L1685"></a><tt class="py-lineno">1685</tt>  <tt class="py-line"><tt class="py-docstring">        @type callgraph: L{DotGraph} or C{str}</tt> </tt>
+<a name="L1686"></a><tt class="py-lineno">1686</tt>  <tt class="py-line"><tt class="py-docstring">        @param token: A string that can be used to make the C{<div>} id</tt> </tt>
+<a name="L1687"></a><tt class="py-lineno">1687</tt>  <tt class="py-line"><tt class="py-docstring">            unambiguous, if the callgraph is used more than once in a page.</tt> </tt>
+<a name="L1688"></a><tt class="py-lineno">1688</tt>  <tt class="py-line"><tt class="py-docstring">        @type token: C{str}</tt> </tt>
+<a name="L1689"></a><tt class="py-lineno">1689</tt>  <tt class="py-line"><tt class="py-docstring">        @return: The HTML representation of the graph link.</tt> </tt>
+<a name="L1690"></a><tt class="py-lineno">1690</tt>  <tt class="py-line"><tt class="py-docstring">        @rtype: C{str}</tt> </tt>
+<a name="L1691"></a><tt class="py-lineno">1691</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L1692"></a><tt class="py-lineno">1692</tt>  <tt class="py-line">        <tt class="py-comment"># Use class=codelink, to match style w/ the source code link.</tt> </tt>
+<a name="L1693"></a><tt class="py-lineno">1693</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">callgraph</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-string">''</tt> </tt>
+<a name="L1694"></a><tt class="py-lineno">1694</tt>  <tt class="py-line"> </tt>
+<a name="L1695"></a><tt class="py-lineno">1695</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">callgraph</tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1696"></a><tt class="py-lineno">1696</tt>  <tt class="py-line">            <tt class="py-name">uid</tt> <tt class="py-op">=</tt> <tt class="py-name">callgraph</tt> </tt>
+<a name="L1697"></a><tt class="py-lineno">1697</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1698"></a><tt class="py-lineno">1698</tt>  <tt class="py-line">            <tt class="py-name">uid</tt> <tt class="py-op">=</tt> <tt class="py-name">callgraph</tt><tt class="py-op">.</tt><tt class="py-name">uid</tt> </tt>
+<a name="L1699"></a><tt class="py-lineno">1699</tt>  <tt class="py-line"> </tt>
+<a name="L1700"></a><tt class="py-lineno">1700</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-string">'<br /><span class="codelink"><a href="javascript:void(0);" '</tt> </tt>
+<a name="L1701"></a><tt class="py-lineno">1701</tt>  <tt class="py-line">                <tt class="py-string">'onclick="toggleCallGraph(\'%s-div\');return false;">'</tt> </tt>
+<a name="L1702"></a><tt class="py-lineno">1702</tt>  <tt class="py-line">                <tt class="py-string">'call&nbsp;graph</a></span>&nbsp;'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">uid</tt> <tt class="py-op">+</tt> <tt class="py-name">token</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1703"></a><tt class="py-lineno">1703</tt>  <tt class="py-line"> </tt>
+<a name="L1704"></a><tt class="py-lineno">1704</tt>  <tt class="py-line">    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L1705"></a><tt class="py-lineno">1705</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#{ 2.11. Images</tt> </tt>
+<a name="L1706"></a><tt class="py-lineno">1706</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L1707"></a><tt class="py-lineno">1707</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L1708"></a><tt class="py-lineno">1708</tt>  <tt class="py-line">    <tt id="link-525" class="py-name" targets="Variable epydoc.docwriter.html.HTMLWriter.IMAGES=epydoc.docwriter.html.HTMLWriter-class.html#IMAGES"><a title="epydoc.docwriter.html.HTMLWriter.IMAGES" class="py-name" href="#" onclick="return doclink('link-525', 'IMAGES', 'link-525');">IMAGES</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-string">'crarr.png'</tt><tt class="py-op">:</tt> <tt cla [...]
+<a name="L1709"></a><tt class="py-lineno">1709</tt>  <tt class="py-line">              <tt class="py-string">'iVBORw0KGgoAAAANSUhEUgAAABEAAAAKCAMAAABlokWQAAAALHRFWHRD'</tt> </tt>
+<a name="L1710"></a><tt class="py-lineno">1710</tt>  <tt class="py-line">              <tt class="py-string">'cmVhdGlvbiBUaW1lAFR1\nZSAyMiBBdWcgMjAwNiAwMDo0MzoxMCAtMD'</tt> </tt>
+<a name="L1711"></a><tt class="py-lineno">1711</tt>  <tt class="py-line">              <tt class="py-string">'UwMGAMEFgAAAAHdElNRQfWCBYFASkQ033WAAAACXBI\nWXMAAB7CAAAe'</tt> </tt>
+<a name="L1712"></a><tt class="py-lineno">1712</tt>  <tt class="py-line">              <tt class="py-string">'wgFu0HU+AAAABGdBTUEAALGPC/xhBQAAAEVQTFRF////zcOw18/AgGY0'</tt> </tt>
+<a name="L1713"></a><tt class="py-lineno">1713</tt>  <tt class="py-line">              <tt class="py-string">'c1cg4dvQ\ninJEYEAAYkME3NXI6eTcloFYe2Asr5+AbE4Uh29A9fPwqp'</tt> </tt>
+<a name="L1714"></a><tt class="py-lineno">1714</tt>  <tt class="py-line">              <tt class="py-string">'l4ZEUI8O3onopk0Ma0lH5U1nfFdgAA\nAAF0Uk5TAEDm2GYAAABNSURB'</tt> </tt>
+<a name="L1715"></a><tt class="py-lineno">1715</tt>  <tt class="py-line">              <tt class="py-string">'VHjaY2BAAbzsvDAmK5oIlxgfioiwCAe7KJKIgKAQOzsLLwTwA0VY\n+d'</tt> </tt>
+<a name="L1716"></a><tt class="py-lineno">1716</tt>  <tt class="py-line">              <tt class="py-string">'iRAT8T0AxuIIMHqoaXCWIPGzsHJ6orGJiYWRjQASOcBQAocgMSPKMTIg'</tt> </tt>
+<a name="L1717"></a><tt class="py-lineno">1717</tt>  <tt class="py-line">              <tt class="py-string">'AAAABJRU5ErkJggg==\n'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1718"></a><tt class="py-lineno">1718</tt>  <tt class="py-line">              <tt class="py-op">}</tt> </tt>
+<a name="L1719"></a><tt class="py-lineno">1719</tt>  <tt class="py-line"> </tt>
+<a name="HTMLWriter.write_images"></a><div id="HTMLWriter.write_images-def"><a name="L1720"></a><tt class="py-lineno">1720</tt> <a class="py-toggle" href="#" id="HTMLWriter.write_images-toggle" onclick="return toggle('HTMLWriter.write_images');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html.HTMLWriter-class.html#write_images">write_images</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt [...]
+</div><div id="HTMLWriter.write_images-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLWriter.write_images-expanded"><a name="L1721"></a><tt class="py-lineno">1721</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-op">(</tt><tt id="link-526" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-526', 'name', 'link-117');">name</a></tt><tt class="py-op">,</tt> <tt clas [...]
+<a name="L1722"></a><tt class="py-lineno">1722</tt>  <tt class="py-line">            <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt id="link-528" class="py-name"><a title="epydoc.gui.EpydocGUI.open" class="py-name" href="#" onclick="return doclink('link-528', 'open', 'link-214');">open</a></tt><tt class="py-op">(</tt><tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-529" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="retur [...]
+<a name="L1723"></a><tt class="py-lineno">1723</tt>  <tt class="py-line">            <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-531" class="py-name"><a title="epydoc.docintrospecter._DevNull.write
+epydoc.docwriter.dotgraph.DotGraph.write
+epydoc.docwriter.html.HTMLWriter.write
+epydoc.docwriter.latex.LatexWriter.write
+epydoc.docwriter.plaintext.PlaintextWriter.write" class="py-name" href="#" onclick="return doclink('link-531', 'write', 'link-216');">write</a></tt><tt class="py-op">(</tt><tt class="py-name">base64</tt><tt class="py-op">.</tt><tt class="py-name">decodestring</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1724"></a><tt class="py-lineno">1724</tt>  <tt class="py-line">            <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-532" class="py-name"><a title="epydoc.cli.HTMLLogger.close
+epydoc.docintrospecter._DevNull.close
+epydoc.log.Logger.close
+epydoc.log.close" class="py-name" href="#" onclick="return doclink('link-532', 'close', 'link-217');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1725"></a><tt class="py-lineno">1725</tt>  <tt class="py-line"> </tt>
+<a name="L1726"></a><tt class="py-lineno">1726</tt>  <tt class="py-line">    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L1727"></a><tt class="py-lineno">1727</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#{ 3.1. Page Header</tt> </tt>
+<a name="L1728"></a><tt class="py-lineno">1728</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L1729"></a><tt class="py-lineno">1729</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L1730"></a><tt class="py-lineno">1730</tt>  <tt class="py-line">    <tt id="link-533" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_header
+epydoc.docwriter.latex.LatexWriter.write_header" class="py-name" href="#" onclick="return doclink('link-533', 'write_header', 'link-222');">write_header</a></tt> <tt class="py-op">=</tt> <tt id="link-534" class="py-name"><a title="epydoc.docwriter.html.compile_template" class="py-name" href="#" onclick="return doclink('link-534', 'compile_template', 'link-427');">compile_template</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L1731"></a><tt class="py-lineno">1731</tt>  <tt class="py-line">        <tt class="py-string">"""</tt> </tt>
+<a name="L1732"></a><tt class="py-lineno">1732</tt>  <tt class="py-line"><tt class="py-string">        write_header(self, out, title)</tt> </tt>
+<a name="L1733"></a><tt class="py-lineno">1733</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L1734"></a><tt class="py-lineno">1734</tt>  <tt class="py-line"><tt class="py-string">        Generate HTML code for the standard page header, and write it</tt> </tt>
+<a name="L1735"></a><tt class="py-lineno">1735</tt>  <tt class="py-line"><tt class="py-string">        to C{out}.  C{title} is a string containing the page title.</tt> </tt>
+<a name="L1736"></a><tt class="py-lineno">1736</tt>  <tt class="py-line"><tt class="py-string">        It should be appropriately escaped/encoded.</tt> </tt>
+<a name="L1737"></a><tt class="py-lineno">1737</tt>  <tt class="py-line"><tt class="py-string">        """</tt><tt class="py-op">,</tt> </tt>
+<a name="L1738"></a><tt class="py-lineno">1738</tt>  <tt class="py-line">        <tt class="py-comment"># /------------------------- Template -------------------------\</tt> </tt>
+<a name="L1739"></a><tt class="py-lineno">1739</tt>  <tt class="py-line">        <tt class="py-string">'''</tt> </tt>
+<a name="L1740"></a><tt class="py-lineno">1740</tt>  <tt class="py-line"><tt class="py-string">        <?xml version="1.0" encoding="ascii"?></tt> </tt>
+<a name="L1741"></a><tt class="py-lineno">1741</tt>  <tt class="py-line"><tt class="py-string">        <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"</tt> </tt>
+<a name="L1742"></a><tt class="py-lineno">1742</tt>  <tt class="py-line"><tt class="py-string">                  "DTD/xhtml1-transitional.dtd"></tt> </tt>
+<a name="L1743"></a><tt class="py-lineno">1743</tt>  <tt class="py-line"><tt class="py-string">        <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"></tt> </tt>
+<a name="L1744"></a><tt class="py-lineno">1744</tt>  <tt class="py-line"><tt class="py-string">        <head></tt> </tt>
+<a name="L1745"></a><tt class="py-lineno">1745</tt>  <tt class="py-line"><tt class="py-string">          <title>$title$</title></tt> </tt>
+<a name="L1746"></a><tt class="py-lineno">1746</tt>  <tt class="py-line"><tt class="py-string">          <link rel="stylesheet" href="epydoc.css" type="text/css" /></tt> </tt>
+<a name="L1747"></a><tt class="py-lineno">1747</tt>  <tt class="py-line"><tt class="py-string">          <script type="text/javascript" src="epydoc.js"></script></tt> </tt>
+<a name="L1748"></a><tt class="py-lineno">1748</tt>  <tt class="py-line"><tt class="py-string">        </head></tt> </tt>
+<a name="L1749"></a><tt class="py-lineno">1749</tt>  <tt class="py-line"><tt class="py-string">        </tt> </tt>
+<a name="L1750"></a><tt class="py-lineno">1750</tt>  <tt class="py-line"><tt class="py-string">        <body bgcolor="white" text="black" link="blue" vlink="#204080"</tt> </tt>
+<a name="L1751"></a><tt class="py-lineno">1751</tt>  <tt class="py-line"><tt class="py-string">              alink="#204080"></tt> </tt>
+<a name="L1752"></a><tt class="py-lineno">1752</tt>  <tt class="py-line"><tt class="py-string">        '''</tt><tt class="py-op">)</tt> </tt>
+<a name="L1753"></a><tt class="py-lineno">1753</tt>  <tt class="py-line">        <tt class="py-comment"># \------------------------------------------------------------/</tt> </tt>
+<a name="L1754"></a><tt class="py-lineno">1754</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L1755"></a><tt class="py-lineno">1755</tt>  <tt class="py-line">    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L1756"></a><tt class="py-lineno">1756</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#{ 3.2. Page Footer</tt> </tt>
+<a name="L1757"></a><tt class="py-lineno">1757</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L1758"></a><tt class="py-lineno">1758</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L1759"></a><tt class="py-lineno">1759</tt>  <tt class="py-line">    <tt id="link-535" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_footer" class="py-name" href="#" onclick="return doclink('link-535', 'write_footer', 'link-244');">write_footer</a></tt> <tt class="py-op">=</tt> <tt id="link-536" class="py-name"><a title="epydoc.docwriter.html.compile_template" class="py-name" href="#" onclick="return doclink('link-536', 'compile_template', 'link-427');">compile [...]
+<a name="L1760"></a><tt class="py-lineno">1760</tt>  <tt class="py-line">        <tt class="py-string">"""</tt> </tt>
+<a name="L1761"></a><tt class="py-lineno">1761</tt>  <tt class="py-line"><tt class="py-string">        write_footer(self, out, short=False)</tt> </tt>
+<a name="L1762"></a><tt class="py-lineno">1762</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L1763"></a><tt class="py-lineno">1763</tt>  <tt class="py-line"><tt class="py-string">        Generate HTML code for the standard page footer, and write it</tt> </tt>
+<a name="L1764"></a><tt class="py-lineno">1764</tt>  <tt class="py-line"><tt class="py-string">        to C{out}.</tt> </tt>
+<a name="L1765"></a><tt class="py-lineno">1765</tt>  <tt class="py-line"><tt class="py-string">        """</tt><tt class="py-op">,</tt> </tt>
+<a name="L1766"></a><tt class="py-lineno">1766</tt>  <tt class="py-line">        <tt class="py-comment"># /------------------------- Template -------------------------\</tt> </tt>
+<a name="L1767"></a><tt class="py-lineno">1767</tt>  <tt class="py-line">        <tt class="py-string">'''</tt> </tt>
+<a name="L1768"></a><tt class="py-lineno">1768</tt>  <tt class="py-line"><tt class="py-string">        >>> if not short:</tt> </tt>
+<a name="L1769"></a><tt class="py-lineno">1769</tt>  <tt class="py-line"><tt class="py-string">        <table border="0" cellpadding="0" cellspacing="0" width="100%%"></tt> </tt>
+<a name="L1770"></a><tt class="py-lineno">1770</tt>  <tt class="py-line"><tt class="py-string">          <tr></tt> </tt>
+<a name="L1771"></a><tt class="py-lineno">1771</tt>  <tt class="py-line"><tt class="py-string">            <td align="left" class="footer"></tt> </tt>
+<a name="L1772"></a><tt class="py-lineno">1772</tt>  <tt class="py-line"><tt class="py-string">        >>>   if self._include_log:</tt> </tt>
+<a name="L1773"></a><tt class="py-lineno">1773</tt>  <tt class="py-line"><tt class="py-string">            <a href="epydoc-log.html">Generated by Epydoc</tt> </tt>
+<a name="L1774"></a><tt class="py-lineno">1774</tt>  <tt class="py-line"><tt class="py-string">            $epydoc.__version__$ on $time.asctime()$</a></tt> </tt>
+<a name="L1775"></a><tt class="py-lineno">1775</tt>  <tt class="py-line"><tt class="py-string">        >>>   else:</tt> </tt>
+<a name="L1776"></a><tt class="py-lineno">1776</tt>  <tt class="py-line"><tt class="py-string">            Generated by Epydoc $epydoc.__version__$ on $time.asctime()$</tt> </tt>
+<a name="L1777"></a><tt class="py-lineno">1777</tt>  <tt class="py-line"><tt class="py-string">        >>>   #endif</tt> </tt>
+<a name="L1778"></a><tt class="py-lineno">1778</tt>  <tt class="py-line"><tt class="py-string">            </td></tt> </tt>
+<a name="L1779"></a><tt class="py-lineno">1779</tt>  <tt class="py-line"><tt class="py-string">            <td align="right" class="footer"></tt> </tt>
+<a name="L1780"></a><tt class="py-lineno">1780</tt>  <tt class="py-line"><tt class="py-string">              <a target="mainFrame" href="http://epydoc.sourceforge.net"</tt> </tt>
+<a name="L1781"></a><tt class="py-lineno">1781</tt>  <tt class="py-line"><tt class="py-string">                >http://epydoc.sourceforge.net</a></tt> </tt>
+<a name="L1782"></a><tt class="py-lineno">1782</tt>  <tt class="py-line"><tt class="py-string">            </td></tt> </tt>
+<a name="L1783"></a><tt class="py-lineno">1783</tt>  <tt class="py-line"><tt class="py-string">          </tr></tt> </tt>
+<a name="L1784"></a><tt class="py-lineno">1784</tt>  <tt class="py-line"><tt class="py-string">        </table></tt> </tt>
+<a name="L1785"></a><tt class="py-lineno">1785</tt>  <tt class="py-line"><tt class="py-string">        >>> #endif</tt> </tt>
+<a name="L1786"></a><tt class="py-lineno">1786</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L1787"></a><tt class="py-lineno">1787</tt>  <tt class="py-line"><tt class="py-string">        <script type="text/javascript"></tt> </tt>
+<a name="L1788"></a><tt class="py-lineno">1788</tt>  <tt class="py-line"><tt class="py-string">          <!--</tt> </tt>
+<a name="L1789"></a><tt class="py-lineno">1789</tt>  <tt class="py-line"><tt class="py-string">          // Private objects are initially displayed (because if</tt> </tt>
+<a name="L1790"></a><tt class="py-lineno">1790</tt>  <tt class="py-line"><tt class="py-string">          // javascript is turned off then we want them to be</tt> </tt>
+<a name="L1791"></a><tt class="py-lineno">1791</tt>  <tt class="py-line"><tt class="py-string">          // visible); but by default, we want to hide them.  So hide</tt> </tt>
+<a name="L1792"></a><tt class="py-lineno">1792</tt>  <tt class="py-line"><tt class="py-string">          // them unless we have a cookie that says to show them.</tt> </tt>
+<a name="L1793"></a><tt class="py-lineno">1793</tt>  <tt class="py-line"><tt class="py-string">          checkCookie();</tt> </tt>
+<a name="L1794"></a><tt class="py-lineno">1794</tt>  <tt class="py-line"><tt class="py-string">          // --></tt> </tt>
+<a name="L1795"></a><tt class="py-lineno">1795</tt>  <tt class="py-line"><tt class="py-string">        </script></tt> </tt>
+<a name="L1796"></a><tt class="py-lineno">1796</tt>  <tt class="py-line"><tt class="py-string">        </body></tt> </tt>
+<a name="L1797"></a><tt class="py-lineno">1797</tt>  <tt class="py-line"><tt class="py-string">        </html></tt> </tt>
+<a name="L1798"></a><tt class="py-lineno">1798</tt>  <tt class="py-line"><tt class="py-string">        '''</tt><tt class="py-op">)</tt> </tt>
+<a name="L1799"></a><tt class="py-lineno">1799</tt>  <tt class="py-line">        <tt class="py-comment"># \------------------------------------------------------------/</tt> </tt>
+<a name="L1800"></a><tt class="py-lineno">1800</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L1801"></a><tt class="py-lineno">1801</tt>  <tt class="py-line">    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L1802"></a><tt class="py-lineno">1802</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#{ 3.3. Navigation Bar</tt> </tt>
+<a name="L1803"></a><tt class="py-lineno">1803</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L1804"></a><tt class="py-lineno">1804</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L1805"></a><tt class="py-lineno">1805</tt>  <tt class="py-line">    <tt id="link-537" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_navbar" class="py-name" href="#" onclick="return doclink('link-537', 'write_navbar', 'link-223');">write_navbar</a></tt> <tt class="py-op">=</tt> <tt id="link-538" class="py-name"><a title="epydoc.docwriter.html.compile_template" class="py-name" href="#" onclick="return doclink('link-538', 'compile_template', 'link-427');">compile [...]
+<a name="L1806"></a><tt class="py-lineno">1806</tt>  <tt class="py-line">        <tt class="py-string">"""</tt> </tt>
+<a name="L1807"></a><tt class="py-lineno">1807</tt>  <tt class="py-line"><tt class="py-string">        write_navbar(self, out, context)</tt> </tt>
+<a name="L1808"></a><tt class="py-lineno">1808</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L1809"></a><tt class="py-lineno">1809</tt>  <tt class="py-line"><tt class="py-string">        Generate HTML code for the navigation bar, and write it to</tt> </tt>
+<a name="L1810"></a><tt class="py-lineno">1810</tt>  <tt class="py-line"><tt class="py-string">        C{out}.  The navigation bar typically looks like::</tt> </tt>
+<a name="L1811"></a><tt class="py-lineno">1811</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L1812"></a><tt class="py-lineno">1812</tt>  <tt class="py-line"><tt class="py-string">             [ Home Trees Index Help             Project ]</tt> </tt>
+<a name="L1813"></a><tt class="py-lineno">1813</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L1814"></a><tt class="py-lineno">1814</tt>  <tt class="py-line"><tt class="py-string">        @param context: A value indicating what page we're generating</tt> </tt>
+<a name="L1815"></a><tt class="py-lineno">1815</tt>  <tt class="py-line"><tt class="py-string">        a navigation bar for.  If we're generating an API</tt> </tt>
+<a name="L1816"></a><tt class="py-lineno">1816</tt>  <tt class="py-line"><tt class="py-string">        documentation page for an object, then C{context} is a</tt> </tt>
+<a name="L1817"></a><tt class="py-lineno">1817</tt>  <tt class="py-line"><tt class="py-string">        L{ValueDoc} containing the documentation for that object;</tt> </tt>
+<a name="L1818"></a><tt class="py-lineno">1818</tt>  <tt class="py-line"><tt class="py-string">        otherwise, C{context} is a string name for the page.  The</tt> </tt>
+<a name="L1819"></a><tt class="py-lineno">1819</tt>  <tt class="py-line"><tt class="py-string">        following string names are recognized: C{'tree'}, C{'index'},</tt> </tt>
+<a name="L1820"></a><tt class="py-lineno">1820</tt>  <tt class="py-line"><tt class="py-string">        and C{'help'}.</tt> </tt>
+<a name="L1821"></a><tt class="py-lineno">1821</tt>  <tt class="py-line"><tt class="py-string">        """</tt><tt class="py-op">,</tt> </tt>
+<a name="L1822"></a><tt class="py-lineno">1822</tt>  <tt class="py-line">        <tt class="py-comment"># /------------------------- Template -------------------------\</tt> </tt>
+<a name="L1823"></a><tt class="py-lineno">1823</tt>  <tt class="py-line">        <tt class="py-string">'''</tt> </tt>
+<a name="L1824"></a><tt class="py-lineno">1824</tt>  <tt class="py-line"><tt class="py-string">        <!-- ==================== NAVIGATION BAR ==================== --></tt> </tt>
+<a name="L1825"></a><tt class="py-lineno">1825</tt>  <tt class="py-line"><tt class="py-string">        <table class="navbar" border="0" width="100%" cellpadding="0"</tt> </tt>
+<a name="L1826"></a><tt class="py-lineno">1826</tt>  <tt class="py-line"><tt class="py-string">               bgcolor="#a0c0ff" cellspacing="0"></tt> </tt>
+<a name="L1827"></a><tt class="py-lineno">1827</tt>  <tt class="py-line"><tt class="py-string">          <tr valign="middle"></tt> </tt>
+<a name="L1828"></a><tt class="py-lineno">1828</tt>  <tt class="py-line"><tt class="py-string">        >>> if self._top_page_url not in (self._trees_url, "identifier-index.html", "help.html"):</tt> </tt>
+<a name="L1829"></a><tt class="py-lineno">1829</tt>  <tt class="py-line"><tt class="py-string">          <!-- Home link --></tt> </tt>
+<a name="L1830"></a><tt class="py-lineno">1830</tt>  <tt class="py-line"><tt class="py-string">        >>>   if (isinstance(context, ValueDoc) and</tt> </tt>
+<a name="L1831"></a><tt class="py-lineno">1831</tt>  <tt class="py-line"><tt class="py-string">        >>>       self._top_page_url == self.url(context.canonical_name)):</tt> </tt>
+<a name="L1832"></a><tt class="py-lineno">1832</tt>  <tt class="py-line"><tt class="py-string">              <th bgcolor="#70b0f0" class="navbar-select"</tt> </tt>
+<a name="L1833"></a><tt class="py-lineno">1833</tt>  <tt class="py-line"><tt class="py-string">                  >&nbsp;&nbsp;&nbsp;Home&nbsp;&nbsp;&nbsp;</th></tt> </tt>
+<a name="L1834"></a><tt class="py-lineno">1834</tt>  <tt class="py-line"><tt class="py-string">        >>>   else:</tt> </tt>
+<a name="L1835"></a><tt class="py-lineno">1835</tt>  <tt class="py-line"><tt class="py-string">              <th>&nbsp;&nbsp;&nbsp;<a</tt> </tt>
+<a name="L1836"></a><tt class="py-lineno">1836</tt>  <tt class="py-line"><tt class="py-string">                href="$self._top_page_url$">Home</a>&nbsp;&nbsp;&nbsp;</th></tt> </tt>
+<a name="L1837"></a><tt class="py-lineno">1837</tt>  <tt class="py-line"><tt class="py-string">        >>> #endif</tt> </tt>
+<a name="L1838"></a><tt class="py-lineno">1838</tt>  <tt class="py-line"><tt class="py-string">        </tt> </tt>
+<a name="L1839"></a><tt class="py-lineno">1839</tt>  <tt class="py-line"><tt class="py-string">          <!-- Tree link --></tt> </tt>
+<a name="L1840"></a><tt class="py-lineno">1840</tt>  <tt class="py-line"><tt class="py-string">        >>> if context == "trees":</tt> </tt>
+<a name="L1841"></a><tt class="py-lineno">1841</tt>  <tt class="py-line"><tt class="py-string">              <th bgcolor="#70b0f0" class="navbar-select"</tt> </tt>
+<a name="L1842"></a><tt class="py-lineno">1842</tt>  <tt class="py-line"><tt class="py-string">                  >&nbsp;&nbsp;&nbsp;Trees&nbsp;&nbsp;&nbsp;</th></tt> </tt>
+<a name="L1843"></a><tt class="py-lineno">1843</tt>  <tt class="py-line"><tt class="py-string">        >>> else:</tt> </tt>
+<a name="L1844"></a><tt class="py-lineno">1844</tt>  <tt class="py-line"><tt class="py-string">              <th>&nbsp;&nbsp;&nbsp;<a</tt> </tt>
+<a name="L1845"></a><tt class="py-lineno">1845</tt>  <tt class="py-line"><tt class="py-string">                href="$self._trees_url$">Trees</a>&nbsp;&nbsp;&nbsp;</th></tt> </tt>
+<a name="L1846"></a><tt class="py-lineno">1846</tt>  <tt class="py-line"><tt class="py-string">        >>> #endif</tt> </tt>
+<a name="L1847"></a><tt class="py-lineno">1847</tt>  <tt class="py-line"><tt class="py-string">        </tt> </tt>
+<a name="L1848"></a><tt class="py-lineno">1848</tt>  <tt class="py-line"><tt class="py-string">          <!-- Index link --></tt> </tt>
+<a name="L1849"></a><tt class="py-lineno">1849</tt>  <tt class="py-line"><tt class="py-string">        >>> if context == "indices":</tt> </tt>
+<a name="L1850"></a><tt class="py-lineno">1850</tt>  <tt class="py-line"><tt class="py-string">              <th bgcolor="#70b0f0" class="navbar-select"</tt> </tt>
+<a name="L1851"></a><tt class="py-lineno">1851</tt>  <tt class="py-line"><tt class="py-string">                  >&nbsp;&nbsp;&nbsp;Indices&nbsp;&nbsp;&nbsp;</th></tt> </tt>
+<a name="L1852"></a><tt class="py-lineno">1852</tt>  <tt class="py-line"><tt class="py-string">        >>> else:</tt> </tt>
+<a name="L1853"></a><tt class="py-lineno">1853</tt>  <tt class="py-line"><tt class="py-string">              <th>&nbsp;&nbsp;&nbsp;<a</tt> </tt>
+<a name="L1854"></a><tt class="py-lineno">1854</tt>  <tt class="py-line"><tt class="py-string">                href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th></tt> </tt>
+<a name="L1855"></a><tt class="py-lineno">1855</tt>  <tt class="py-line"><tt class="py-string">        >>> #endif</tt> </tt>
+<a name="L1856"></a><tt class="py-lineno">1856</tt>  <tt class="py-line"><tt class="py-string">        </tt> </tt>
+<a name="L1857"></a><tt class="py-lineno">1857</tt>  <tt class="py-line"><tt class="py-string">          <!-- Help link --></tt> </tt>
+<a name="L1858"></a><tt class="py-lineno">1858</tt>  <tt class="py-line"><tt class="py-string">        >>> if context == "help":</tt> </tt>
+<a name="L1859"></a><tt class="py-lineno">1859</tt>  <tt class="py-line"><tt class="py-string">              <th bgcolor="#70b0f0" class="navbar-select"</tt> </tt>
+<a name="L1860"></a><tt class="py-lineno">1860</tt>  <tt class="py-line"><tt class="py-string">                  >&nbsp;&nbsp;&nbsp;Help&nbsp;&nbsp;&nbsp;</th></tt> </tt>
+<a name="L1861"></a><tt class="py-lineno">1861</tt>  <tt class="py-line"><tt class="py-string">        >>> else:</tt> </tt>
+<a name="L1862"></a><tt class="py-lineno">1862</tt>  <tt class="py-line"><tt class="py-string">              <th>&nbsp;&nbsp;&nbsp;<a</tt> </tt>
+<a name="L1863"></a><tt class="py-lineno">1863</tt>  <tt class="py-line"><tt class="py-string">                href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th></tt> </tt>
+<a name="L1864"></a><tt class="py-lineno">1864</tt>  <tt class="py-line"><tt class="py-string">        >>> #endif</tt> </tt>
+<a name="L1865"></a><tt class="py-lineno">1865</tt>  <tt class="py-line"><tt class="py-string">        </tt> </tt>
+<a name="L1866"></a><tt class="py-lineno">1866</tt>  <tt class="py-line"><tt class="py-string">        >>> if self._prj_link:</tt> </tt>
+<a name="L1867"></a><tt class="py-lineno">1867</tt>  <tt class="py-line"><tt class="py-string">          <!-- Project homepage --></tt> </tt>
+<a name="L1868"></a><tt class="py-lineno">1868</tt>  <tt class="py-line"><tt class="py-string">              <th class="navbar" align="right" width="100%"></tt> </tt>
+<a name="L1869"></a><tt class="py-lineno">1869</tt>  <tt class="py-line"><tt class="py-string">                <table border="0" cellpadding="0" cellspacing="0"></tt> </tt>
+<a name="L1870"></a><tt class="py-lineno">1870</tt>  <tt class="py-line"><tt class="py-string">                  <tr><th class="navbar" align="center"</tt> </tt>
+<a name="L1871"></a><tt class="py-lineno">1871</tt>  <tt class="py-line"><tt class="py-string">                    >$self._prj_link.strip()$</th></tt> </tt>
+<a name="L1872"></a><tt class="py-lineno">1872</tt>  <tt class="py-line"><tt class="py-string">                  </tr></table></th></tt> </tt>
+<a name="L1873"></a><tt class="py-lineno">1873</tt>  <tt class="py-line"><tt class="py-string">        >>> else:</tt> </tt>
+<a name="L1874"></a><tt class="py-lineno">1874</tt>  <tt class="py-line"><tt class="py-string">              <th class="navbar" width="100%"></th></tt> </tt>
+<a name="L1875"></a><tt class="py-lineno">1875</tt>  <tt class="py-line"><tt class="py-string">        >>> #endif</tt> </tt>
+<a name="L1876"></a><tt class="py-lineno">1876</tt>  <tt class="py-line"><tt class="py-string">          </tr></tt> </tt>
+<a name="L1877"></a><tt class="py-lineno">1877</tt>  <tt class="py-line"><tt class="py-string">        </table></tt> </tt>
+<a name="L1878"></a><tt class="py-lineno">1878</tt>  <tt class="py-line"><tt class="py-string">        '''</tt><tt class="py-op">)</tt> </tt>
+<a name="L1879"></a><tt class="py-lineno">1879</tt>  <tt class="py-line">        <tt class="py-comment"># \------------------------------------------------------------/</tt> </tt>
+<a name="L1880"></a><tt class="py-lineno">1880</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L1881"></a><tt class="py-lineno">1881</tt>  <tt class="py-line">    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L1882"></a><tt class="py-lineno">1882</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#{ 3.4. Breadcrumbs</tt> </tt>
+<a name="L1883"></a><tt class="py-lineno">1883</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L1884"></a><tt class="py-lineno">1884</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L1885"></a><tt class="py-lineno">1885</tt>  <tt class="py-line">    <tt id="link-539" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_breadcrumbs" class="py-name" href="#" onclick="return doclink('link-539', 'write_breadcrumbs', 'link-224');">write_breadcrumbs</a></tt> <tt class="py-op">=</tt> <tt id="link-540" class="py-name"><a title="epydoc.docwriter.html.compile_template" class="py-name" href="#" onclick="return doclink('link-540', 'compile_template', 'link- [...]
+<a name="L1886"></a><tt class="py-lineno">1886</tt>  <tt class="py-line">        <tt class="py-string">"""</tt> </tt>
+<a name="L1887"></a><tt class="py-lineno">1887</tt>  <tt class="py-line"><tt class="py-string">        write_breadcrumbs(self, out, context, context_url)</tt> </tt>
+<a name="L1888"></a><tt class="py-lineno">1888</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L1889"></a><tt class="py-lineno">1889</tt>  <tt class="py-line"><tt class="py-string">        Generate HTML for the breadcrumbs line, and write it to</tt> </tt>
+<a name="L1890"></a><tt class="py-lineno">1890</tt>  <tt class="py-line"><tt class="py-string">        C{out}.  The breadcrumbs line is an invisible table with a</tt> </tt>
+<a name="L1891"></a><tt class="py-lineno">1891</tt>  <tt class="py-line"><tt class="py-string">        list of pointers to the current object's ancestors on the</tt> </tt>
+<a name="L1892"></a><tt class="py-lineno">1892</tt>  <tt class="py-line"><tt class="py-string">        left; and the show/hide private selector and the</tt> </tt>
+<a name="L1893"></a><tt class="py-lineno">1893</tt>  <tt class="py-line"><tt class="py-string">        frames/noframes selector on the right.</tt> </tt>
+<a name="L1894"></a><tt class="py-lineno">1894</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L1895"></a><tt class="py-lineno">1895</tt>  <tt class="py-line"><tt class="py-string">        @param context: The API documentation for the object whose</tt> </tt>
+<a name="L1896"></a><tt class="py-lineno">1896</tt>  <tt class="py-line"><tt class="py-string">        breadcrumbs we should generate.</tt> </tt>
+<a name="L1897"></a><tt class="py-lineno">1897</tt>  <tt class="py-line"><tt class="py-string">        @type context: L{ValueDoc}</tt> </tt>
+<a name="L1898"></a><tt class="py-lineno">1898</tt>  <tt class="py-line"><tt class="py-string">        """</tt><tt class="py-op">,</tt> </tt>
+<a name="L1899"></a><tt class="py-lineno">1899</tt>  <tt class="py-line">        <tt class="py-comment"># /------------------------- Template -------------------------\</tt> </tt>
+<a name="L1900"></a><tt class="py-lineno">1900</tt>  <tt class="py-line">        <tt class="py-string">'''</tt> </tt>
+<a name="L1901"></a><tt class="py-lineno">1901</tt>  <tt class="py-line"><tt class="py-string">        <table width="100%" cellpadding="0" cellspacing="0"></tt> </tt>
+<a name="L1902"></a><tt class="py-lineno">1902</tt>  <tt class="py-line"><tt class="py-string">          <tr valign="top"></tt> </tt>
+<a name="L1903"></a><tt class="py-lineno">1903</tt>  <tt class="py-line"><tt class="py-string">        >>> if isinstance(context, APIDoc):</tt> </tt>
+<a name="L1904"></a><tt class="py-lineno">1904</tt>  <tt class="py-line"><tt class="py-string">            <td width="100%"></tt> </tt>
+<a name="L1905"></a><tt class="py-lineno">1905</tt>  <tt class="py-line"><tt class="py-string">              <span class="breadcrumbs"></tt> </tt>
+<a name="L1906"></a><tt class="py-lineno">1906</tt>  <tt class="py-line"><tt class="py-string">        >>>   crumbs = self.breadcrumbs(context)</tt> </tt>
+<a name="L1907"></a><tt class="py-lineno">1907</tt>  <tt class="py-line"><tt class="py-string">        >>>   for crumb in crumbs[:-1]:</tt> </tt>
+<a name="L1908"></a><tt class="py-lineno">1908</tt>  <tt class="py-line"><tt class="py-string">                $crumb$ ::</tt> </tt>
+<a name="L1909"></a><tt class="py-lineno">1909</tt>  <tt class="py-line"><tt class="py-string">        >>>   #endfor</tt> </tt>
+<a name="L1910"></a><tt class="py-lineno">1910</tt>  <tt class="py-line"><tt class="py-string">                $crumbs[-1]$</tt> </tt>
+<a name="L1911"></a><tt class="py-lineno">1911</tt>  <tt class="py-line"><tt class="py-string">              </span></tt> </tt>
+<a name="L1912"></a><tt class="py-lineno">1912</tt>  <tt class="py-line"><tt class="py-string">            </td></tt> </tt>
+<a name="L1913"></a><tt class="py-lineno">1913</tt>  <tt class="py-line"><tt class="py-string">        >>> else:</tt> </tt>
+<a name="L1914"></a><tt class="py-lineno">1914</tt>  <tt class="py-line"><tt class="py-string">            <td width="100%">&nbsp;</td></tt> </tt>
+<a name="L1915"></a><tt class="py-lineno">1915</tt>  <tt class="py-line"><tt class="py-string">        >>> #endif</tt> </tt>
+<a name="L1916"></a><tt class="py-lineno">1916</tt>  <tt class="py-line"><tt class="py-string">            <td></tt> </tt>
+<a name="L1917"></a><tt class="py-lineno">1917</tt>  <tt class="py-line"><tt class="py-string">              <table cellpadding="0" cellspacing="0"></tt> </tt>
+<a name="L1918"></a><tt class="py-lineno">1918</tt>  <tt class="py-line"><tt class="py-string">                <!-- hide/show private --></tt> </tt>
+<a name="L1919"></a><tt class="py-lineno">1919</tt>  <tt class="py-line"><tt class="py-string">        >>> if self._show_private:</tt> </tt>
+<a name="L1920"></a><tt class="py-lineno">1920</tt>  <tt class="py-line"><tt class="py-string">                <tr><td align="right">$self.PRIVATE_LINK$</td></tr></tt> </tt>
+<a name="L1921"></a><tt class="py-lineno">1921</tt>  <tt class="py-line"><tt class="py-string">        >>> #endif</tt> </tt>
+<a name="L1922"></a><tt class="py-lineno">1922</tt>  <tt class="py-line"><tt class="py-string">        >>> if self._frames_index:</tt> </tt>
+<a name="L1923"></a><tt class="py-lineno">1923</tt>  <tt class="py-line"><tt class="py-string">                <tr><td align="right"><span class="options"</tt> </tt>
+<a name="L1924"></a><tt class="py-lineno">1924</tt>  <tt class="py-line"><tt class="py-string">                    >[<a href="frames.html" target="_top">frames</a</tt> </tt>
+<a name="L1925"></a><tt class="py-lineno">1925</tt>  <tt class="py-line"><tt class="py-string">                    >]&nbsp;|&nbsp;<a href="$context_url$"</tt> </tt>
+<a name="L1926"></a><tt class="py-lineno">1926</tt>  <tt class="py-line"><tt class="py-string">                    target="_top">no&nbsp;frames</a>]</span></td></tr></tt> </tt>
+<a name="L1927"></a><tt class="py-lineno">1927</tt>  <tt class="py-line"><tt class="py-string">        >>> #endif</tt> </tt>
+<a name="L1928"></a><tt class="py-lineno">1928</tt>  <tt class="py-line"><tt class="py-string">              </table></tt> </tt>
+<a name="L1929"></a><tt class="py-lineno">1929</tt>  <tt class="py-line"><tt class="py-string">            </td></tt> </tt>
+<a name="L1930"></a><tt class="py-lineno">1930</tt>  <tt class="py-line"><tt class="py-string">          </tr></tt> </tt>
+<a name="L1931"></a><tt class="py-lineno">1931</tt>  <tt class="py-line"><tt class="py-string">        </table></tt> </tt>
+<a name="L1932"></a><tt class="py-lineno">1932</tt>  <tt class="py-line"><tt class="py-string">        '''</tt><tt class="py-op">)</tt> </tt>
+<a name="L1933"></a><tt class="py-lineno">1933</tt>  <tt class="py-line">        <tt class="py-comment"># \------------------------------------------------------------/</tt> </tt>
+<a name="L1934"></a><tt class="py-lineno">1934</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="HTMLWriter.breadcrumbs"></a><div id="HTMLWriter.breadcrumbs-def"><a name="L1935"></a><tt class="py-lineno">1935</tt> <a class="py-toggle" href="#" id="HTMLWriter.breadcrumbs-toggle" onclick="return toggle('HTMLWriter.breadcrumbs');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html.HTMLWriter-class.html#breadcrumbs">breadcrumbs</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class [...]
+</div><div id="HTMLWriter.breadcrumbs-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLWriter.breadcrumbs-expanded"><a name="L1936"></a><tt class="py-lineno">1936</tt>  <tt class="py-line">        <tt class="py-name">crumbs</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-541" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter._crumb()=epydoc.docwriter.html.HTMLWriter-clas [...]
+<a name="L1937"></a><tt class="py-lineno">1937</tt>  <tt class="py-line"> </tt>
+<a name="L1938"></a><tt class="py-lineno">1938</tt>  <tt class="py-line">        <tt class="py-comment"># Generate the crumbs for uid's ancestors.</tt> </tt>
+<a name="L1939"></a><tt class="py-lineno">1939</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">while</tt> <tt class="py-name">True</tt><tt class="py-op">:</tt> </tt>
+<a name="L1940"></a><tt class="py-lineno">1940</tt>  <tt class="py-line">            <tt id="link-542" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-542', 'container', 'link-63');">container</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">docindex</tt><tt class="py-op">.</tt><tt id="link-543" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-543', 'container', 'link-63');">container</a></tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">)</tt> </tt>
+<a name="L1941"></a><tt class="py-lineno">1941</tt>  <tt class="py-line">            <tt class="py-keyword">assert</tt> <tt class="py-name">doc</tt> <tt class="py-op">!=</tt> <tt id="link-544" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-544', 'container', 'link-63');">container</a></tt><tt class="py-op">,</tt> <tt class="py-string">'object is its own container?'</tt> </tt>
+<a name="L1942"></a><tt class="py-lineno">1942</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt id="link-545" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-545', 'container', 'link-63');">container</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1943"></a><tt class="py-lineno">1943</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-546" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-546', 'canonical_name', 'link-82');">canonical_name</a></tt> <tt class="py-keyword">is</tt> <tt id="link-547" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-547', 'UNKNOWN', 'link-229');">UNKNOWN</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1944"></a><tt class="py-lineno">1944</tt>  <tt class="py-line">                    <tt class="py-keyword">return</tt> <tt class="py-op">[</tt><tt class="py-string">'??'</tt><tt class="py-op">]</tt><tt class="py-op">+</tt><tt class="py-name">crumbs</tt> </tt>
+<a name="L1945"></a><tt class="py-lineno">1945</tt>  <tt class="py-line">                <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt id="link-548" class="py-name"><a title="epydoc.apidoc.ModuleDoc" class="py-name" href="#" onclick="return doclink('link-548', 'ModuleDoc', 'link-55');">ModuleDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1946"></a><tt class="py-lineno">1946</tt>  <tt class="py-line">                    <tt class="py-keyword">return</tt> <tt class="py-op">[</tt><tt class="py-string">'Package&nbsp;%s'</tt> <tt class="py-op">%</tt> <tt class="py-name">ident</tt> </tt>
+<a name="L1947"></a><tt class="py-lineno">1947</tt>  <tt class="py-line">                            <tt class="py-keyword">for</tt> <tt class="py-name">ident</tt> <tt class="py-keyword">in</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-549" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-549', 'canonical_name', 'link-82');">canonical_name</a></tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">]</tt><tt class="py-op">+</tt><tt class="py-name">crumbs</tt> </tt>
+<a name="L1948"></a><tt class="py-lineno">1948</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1949"></a><tt class="py-lineno">1949</tt>  <tt class="py-line">                    <tt class="py-keyword">return</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-550" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-550', 'canonical_name', 'link-82');">canonical_name</a></tt><tt class="py-op">)</tt><tt class="py-op">+</tt><tt class="py-name">crumbs</tt> </tt>
+<a name="L1950"></a><tt class="py-lineno">1950</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1951"></a><tt class="py-lineno">1951</tt>  <tt class="py-line">                <tt id="link-551" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.label" class="py-name" href="#" onclick="return doclink('link-551', 'label', 'link-118');">label</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-552" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter._crumb" class="py-name" href="#" onclick="return doclink('link- [...]
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-553', 'container', 'link-63');">container</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1952"></a><tt class="py-lineno">1952</tt>  <tt class="py-line">                <tt id="link-554" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-554', 'name', 'link-117');">name</a></tt> <tt class="py-op">=</tt> <tt id="link-555" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-555', 'container', 'link-63');">container</a></tt><tt class="py-op">.</tt><tt id="link-556" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-556', 'canonical_name', 'link-82');">canonical_name</a></tt> </tt>
+<a name="L1953"></a><tt class="py-lineno">1953</tt>  <tt class="py-line">                <tt class="py-name">crumbs</tt><tt class="py-op">.</tt><tt class="py-name">insert</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-557" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.href" class="py-name" href="#" onclick="return doclink('link-557', 'href', 'link-254');">href</a></tt><tt clas [...]
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-558', 'container', 'link-63');">container</a></tt><tt class="py-op">,</tt> <tt id="link-559" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.label" class="py-name" href="#" onclick="return doclink('link-559', 'label', 'link-118');">label</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-comment"># [xx] code=0??</tt> </tt>
+<a name="L1954"></a><tt class="py-lineno">1954</tt>  <tt class="py-line">                <tt class="py-name">doc</tt> <tt class="py-op">=</tt> <tt id="link-560" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-560', 'container', 'link-63');">container</a></tt> </tt>
+</div><a name="L1955"></a><tt class="py-lineno">1955</tt>  <tt class="py-line">         </tt>
+<a name="HTMLWriter._crumb"></a><div id="HTMLWriter._crumb-def"><a name="L1956"></a><tt class="py-lineno">1956</tt> <a class="py-toggle" href="#" id="HTMLWriter._crumb-toggle" onclick="return toggle('HTMLWriter._crumb');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html.HTMLWriter-class.html#_crumb">_crumb</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">doc</tt><tt class= [...]
+</div><div id="HTMLWriter._crumb-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLWriter._crumb-expanded"><a name="L1957"></a><tt class="py-lineno">1957</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-561" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-561', 'canonical_name', 'link-82');">canonical_name</a></tt><tt class="py-op">)</tt><tt class="py-op">==</tt><tt class="py-number">1</tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L1958"></a><tt class="py-lineno">1958</tt>  <tt class="py-line">            <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-562" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-562', 'canonical_name', 'link-82');">canonical_name</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">startswith</tt><tt class="py-op">(</tt><tt class="py-string">'script-'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1959"></a><tt class="py-lineno">1959</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">'Script&nbsp;%s'</tt> <tt class="py-op">%</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-563" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-563', 'canonical_name', 'link-82');">canonical_name</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">7</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt>
+<a name="L1960"></a><tt class="py-lineno">1960</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">'%s&nbsp;%s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-564" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.doc_kind
+epydoc.docwriter.html_colorize.PythonSourceColorizer.doc_kind
+epydoc.docwriter.latex.LatexWriter.doc_kind" class="py-name" href="#" onclick="return doclink('link-564', 'doc_kind', 'link-256');">doc_kind</a></tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-565" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-565', 'canonical_name', 'link-82');">canonical_name</a></tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1961"></a><tt class="py-lineno">1961</tt>  <tt class="py-line"> </tt>
+<a name="L1962"></a><tt class="py-lineno">1962</tt>  <tt class="py-line">    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L1963"></a><tt class="py-lineno">1963</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#{ 3.5. Summary Tables</tt> </tt>
+<a name="L1964"></a><tt class="py-lineno">1964</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L1965"></a><tt class="py-lineno">1965</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="HTMLWriter.write_summary_table"></a><div id="HTMLWriter.write_summary_table-def"><a name="L1966"></a><tt class="py-lineno">1966</tt> <a class="py-toggle" href="#" id="HTMLWriter.write_summary_table-toggle" onclick="return toggle('HTMLWriter.write_summary_table');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html.HTMLWriter-class.html#write_summary_table">write_summary_table</a><tt class="py-op">(</tt><tt class="py-pa [...]
+</div><div id="HTMLWriter.write_summary_table-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLWriter.write_summary_table-expanded"><a name="L1967"></a><tt class="py-lineno">1967</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L1968"></a><tt class="py-lineno">1968</tt>  <tt class="py-line"><tt class="py-docstring">        Generate HTML code for a summary table, and write it to</tt> </tt>
+<a name="L1969"></a><tt class="py-lineno">1969</tt>  <tt class="py-line"><tt class="py-docstring">        C{out}.  A summary table is a table that includes a one-row</tt> </tt>
+<a name="L1970"></a><tt class="py-lineno">1970</tt>  <tt class="py-line"><tt class="py-docstring">        description for each variable (of a given type) in a module</tt> </tt>
+<a name="L1971"></a><tt class="py-lineno">1971</tt>  <tt class="py-line"><tt class="py-docstring">        or class.</tt> </tt>
+<a name="L1972"></a><tt class="py-lineno">1972</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1973"></a><tt class="py-lineno">1973</tt>  <tt class="py-line"><tt class="py-docstring">        @param heading: The heading for the summary table; typically,</tt> </tt>
+<a name="L1974"></a><tt class="py-lineno">1974</tt>  <tt class="py-line"><tt class="py-docstring">            this indicates what kind of value the table describes</tt> </tt>
+<a name="L1975"></a><tt class="py-lineno">1975</tt>  <tt class="py-line"><tt class="py-docstring">            (e.g., functions or classes).</tt> </tt>
+<a name="L1976"></a><tt class="py-lineno">1976</tt>  <tt class="py-line"><tt class="py-docstring">        @param doc: A L{ValueDoc} object containing the API</tt> </tt>
+<a name="L1977"></a><tt class="py-lineno">1977</tt>  <tt class="py-line"><tt class="py-docstring">            documentation for the module or class whose variables</tt> </tt>
+<a name="L1978"></a><tt class="py-lineno">1978</tt>  <tt class="py-line"><tt class="py-docstring">            we should summarize.</tt> </tt>
+<a name="L1979"></a><tt class="py-lineno">1979</tt>  <tt class="py-line"><tt class="py-docstring">        @param value_type: A string indicating what type of value</tt> </tt>
+<a name="L1980"></a><tt class="py-lineno">1980</tt>  <tt class="py-line"><tt class="py-docstring">            should be listed in this summary table.  This value</tt> </tt>
+<a name="L1981"></a><tt class="py-lineno">1981</tt>  <tt class="py-line"><tt class="py-docstring">            is passed on to C{doc}'s C{select_variables()} method.</tt> </tt>
+<a name="L1982"></a><tt class="py-lineno">1982</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L1983"></a><tt class="py-lineno">1983</tt>  <tt class="py-line">        <tt class="py-comment"># inh_var_groups is a dictionary used to hold "inheritance</tt> </tt>
+<a name="L1984"></a><tt class="py-lineno">1984</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># pseudo-groups", which are created when inheritance is</tt> </tt>
+<a name="L1985"></a><tt class="py-lineno">1985</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># 'grouped'.  It maps each base to a list of vars inherited</tt> </tt>
+<a name="L1986"></a><tt class="py-lineno">1986</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># from that base.</tt> </tt>
+<a name="L1987"></a><tt class="py-lineno">1987</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">grouped_inh_vars</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L1988"></a><tt class="py-lineno">1988</tt>  <tt class="py-line"> </tt>
+<a name="L1989"></a><tt class="py-lineno">1989</tt>  <tt class="py-line">        <tt class="py-comment"># Divide all public variables of the given type into groups.</tt> </tt>
+<a name="L1990"></a><tt class="py-lineno">1990</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">groups</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt id="link-566" class="py-name"><a title="epydoc.util.plaintext_to_html" class="py-name" href="#" onclick="return doclink('link-566', 'plaintext_to_html', 'link-32');">plaintext_to_html</a></tt><tt class="py-op">(</tt><tt class="py-name">group_name</tt><tt class="py-op">)</tt [...]
+<a name="L1991"></a><tt class="py-lineno">1991</tt>  <tt class="py-line">                   <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-567" class="py-name"><a title="epydoc.apidoc.ClassDoc.select_variables
+epydoc.apidoc.ModuleDoc.select_variables" class="py-name" href="#" onclick="return doclink('link-567', 'select_variables', 'link-444');">select_variables</a></tt><tt class="py-op">(</tt><tt class="py-name">group</tt><tt class="py-op">=</tt><tt class="py-name">group_name</tt><tt class="py-op">,</tt> <tt class="py-name">imported</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> </tt>
+<a name="L1992"></a><tt class="py-lineno">1992</tt>  <tt class="py-line">                                        <tt class="py-name">value_type</tt><tt class="py-op">=</tt><tt class="py-name">value_type</tt><tt class="py-op">,</tt> </tt>
+<a name="L1993"></a><tt class="py-lineno">1993</tt>  <tt class="py-line">                                        <tt class="py-name">public</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_public_filter</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1994"></a><tt class="py-lineno">1994</tt>  <tt class="py-line">                  <tt class="py-keyword">for</tt> <tt class="py-name">group_name</tt> <tt class="py-keyword">in</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-568" class="py-name" targets="Method epydoc.apidoc.NamespaceDoc.group_names()=epydoc.apidoc.NamespaceDoc-class.html#group_names"><a title="epydoc.apidoc.NamespaceDoc.group_names" class="py-name" href="#" onclick="return doclink('link-568 [...]
+<a name="L1995"></a><tt class="py-lineno">1995</tt>  <tt class="py-line">                 </tt>
+<a name="L1996"></a><tt class="py-lineno">1996</tt>  <tt class="py-line">        <tt class="py-comment"># Discard any empty groups; and return if they're all empty.</tt> </tt>
+<a name="L1997"></a><tt class="py-lineno">1997</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">groups</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-name">g</tt><tt class="py-op">,</tt><tt class="py-name">vars</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-op">(</tt><tt class="py-name">g</tt><tt class="py-op">,</tt><tt class="py-name">vars</tt><tt class="py-op">)</tt> <tt class="py- [...]
+<a name="L1998"></a><tt class="py-lineno">1998</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">groups</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> </tt>
+<a name="L1999"></a><tt class="py-lineno">1999</tt>  <tt class="py-line"> </tt>
+<a name="L2000"></a><tt class="py-lineno">2000</tt>  <tt class="py-line">        <tt class="py-comment"># Write a header</tt> </tt>
+<a name="L2001"></a><tt class="py-lineno">2001</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-569" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_table_header" class="py-name" href="#" onclick="return doclink('link-569', 'write_table_header', 'link-375');">write_table_header</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-string">"summary"< [...]
+<a name="L2002"></a><tt class="py-lineno">2002</tt>  <tt class="py-line"> </tt>
+<a name="L2003"></a><tt class="py-lineno">2003</tt>  <tt class="py-line">        <tt class="py-comment"># Write a section for each group.</tt> </tt>
+<a name="L2004"></a><tt class="py-lineno">2004</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">for</tt> <tt id="link-570" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-570', 'name', 'link-117');">name</a></tt><tt class="py-op">,</tt> <tt class="py-name">var_docs</tt> <tt class="py-keyword">in</tt> <tt class="py-name">groups</tt><tt class="py-op">:</tt> </tt>
+<a name="L2005"></a><tt class="py-lineno">2005</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-571" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.write_summary_group()=epydoc.docwriter.html.HTMLWriter-class.html#write_summary_group"><a title="epydoc.docwriter.html.HTMLWriter.write_summary_group" class="py-name" href="#" onclick="return doclink('link-571', 'write_summary_group', 'link-571');">write_summary_group</a [...]
+<a name="L2006"></a><tt class="py-lineno">2006</tt>  <tt class="py-line">                                     <tt class="py-name">var_docs</tt><tt class="py-op">,</tt> <tt class="py-name">grouped_inh_vars</tt><tt class="py-op">)</tt> </tt>
+<a name="L2007"></a><tt class="py-lineno">2007</tt>  <tt class="py-line"> </tt>
+<a name="L2008"></a><tt class="py-lineno">2008</tt>  <tt class="py-line">        <tt class="py-comment"># Write a section for each inheritance pseudo-group (used if</tt> </tt>
+<a name="L2009"></a><tt class="py-lineno">2009</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># inheritance=='grouped')</tt> </tt>
+<a name="L2010"></a><tt class="py-lineno">2010</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">grouped_inh_vars</tt><tt class="py-op">:</tt> </tt>
+<a name="L2011"></a><tt class="py-lineno">2011</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">base</tt> <tt class="py-keyword">in</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-573" class="py-name"><a title="epydoc.apidoc.ClassDoc.mro" class="py-name" href="#" onclick="return doclink('link-573', 'mro', 'link-336');">mro</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L2012"></a><tt class="py-lineno">2012</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">base</tt> <tt class="py-keyword">in</tt> <tt class="py-name">grouped_inh_vars</tt><tt class="py-op">:</tt> </tt>
+<a name="L2013"></a><tt class="py-lineno">2013</tt>  <tt class="py-line">                    <tt class="py-name">hdr</tt> <tt class="py-op">=</tt> <tt class="py-string">'Inherited from %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-574" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.href" class="py-name" href="#" onclick="return doclink('link-574', 'href', 'link-254');">href</a></tt><tt class="py-op">(</tt><tt class="py-nam [...]
+<a name="L2014"></a><tt class="py-lineno">2014</tt>  <tt class="py-line">                    <tt class="py-name">tr_class</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
+<a name="L2015"></a><tt class="py-lineno">2015</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt id="link-575" class="py-name"><a title="epydoc.markup.restructuredtext._EpydocReader.v" class="py-name" href="#" onclick="return doclink('link-575', 'v', 'link-80');">v</a></tt> <tt class="py-keyword">for</tt> <tt id="link-576" class="py-name"><a title="epydoc.markup.restructuredtext._Ep [...]
+<a name="L2016"></a><tt class="py-lineno">2016</tt>  <tt class="py-line">                            <tt class="py-keyword">if</tt> <tt id="link-577" class="py-name"><a title="epydoc.markup.restructuredtext._EpydocReader.v" class="py-name" href="#" onclick="return doclink('link-577', 'v', 'link-80');">v</a></tt><tt class="py-op">.</tt><tt id="link-578" class="py-name" targets="Variable epydoc.apidoc.VariableDoc.is_public=epydoc.apidoc.VariableDoc-class.html#is_public"><a title="epydoc.ap [...]
+<a name="L2017"></a><tt class="py-lineno">2017</tt>  <tt class="py-line">                        <tt class="py-name">tr_class</tt> <tt class="py-op">=</tt> <tt class="py-string">' class="private"'</tt> </tt>
+<a name="L2018"></a><tt class="py-lineno">2018</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-579" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.write_group_header()=epydoc.docwriter.html.HTMLWriter-class.html#write_group_header"><a title="epydoc.docwriter.html.HTMLWriter.write_group_header" class="py-name" href="#" onclick="return doclink('link-579', 'write_group_header', 'link-579');">write_group_header [...]
+<a name="L2019"></a><tt class="py-lineno">2019</tt>  <tt class="py-line">                    <tt class="py-keyword">for</tt> <tt class="py-name">var_doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">grouped_inh_vars</tt><tt class="py-op">[</tt><tt class="py-name">base</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L2020"></a><tt class="py-lineno">2020</tt>  <tt class="py-line">                        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-580" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.write_summary_line()=epydoc.docwriter.html.HTMLWriter-class.html#write_summary_line"><a title="epydoc.docwriter.html.HTMLWriter.write_summary_line" class="py-name" href="#" onclick="return doclink('link-580', 'write_summary_line', 'link-580');">write_summary_ [...]
+<a name="L2021"></a><tt class="py-lineno">2021</tt>  <tt class="py-line"> </tt>
+<a name="L2022"></a><tt class="py-lineno">2022</tt>  <tt class="py-line">        <tt class="py-comment"># Write a footer for the table.</tt> </tt>
+<a name="L2023"></a><tt class="py-lineno">2023</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-581" class="py-name" targets="Variable epydoc.docwriter.html.HTMLWriter.TABLE_FOOTER=epydoc.docwriter.html.HTMLWriter-class.html#TABLE_FOOTER"><a title="epydoc.docwriter.html.HTMLWriter.TABLE_FOOTER" class="py-name" href="#" onclick="return doclink('link-581', 'TAB [...]
+</div><a name="L2024"></a><tt class="py-lineno">2024</tt>  <tt class="py-line"> </tt>
+<a name="HTMLWriter.write_summary_group"></a><div id="HTMLWriter.write_summary_group-def"><a name="L2025"></a><tt class="py-lineno">2025</tt> <a class="py-toggle" href="#" id="HTMLWriter.write_summary_group-toggle" onclick="return toggle('HTMLWriter.write_summary_group');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html.HTMLWriter-class.html#write_summary_group">write_summary_group</a><tt class="py-op">(</tt><tt class="py-pa [...]
+</div><div id="HTMLWriter.write_summary_group-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLWriter.write_summary_group-expanded"><a name="L2026"></a><tt class="py-lineno">2026</tt>  <tt class="py-line">        <tt class="py-comment"># Split up the var_docs list, according to the way each var</tt> </tt>
+<a name="L2027"></a><tt class="py-lineno">2027</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># should be displayed:</tt> </tt>
+<a name="L2028"></a><tt class="py-lineno">2028</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#   - listed_inh_vars -- for listed inherited variables.</tt> </tt>
+<a name="L2029"></a><tt class="py-lineno">2029</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#   - grouped_inh_vars -- for grouped inherited variables.</tt> </tt>
+<a name="L2030"></a><tt class="py-lineno">2030</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#   - normal_vars -- for all other variables.</tt> </tt>
+<a name="L2031"></a><tt class="py-lineno">2031</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">listed_inh_vars</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L2032"></a><tt class="py-lineno">2032</tt>  <tt class="py-line">        <tt class="py-name">normal_vars</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L2033"></a><tt class="py-lineno">2033</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">var_doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">var_docs</tt><tt class="py-op">:</tt> </tt>
+<a name="L2034"></a><tt class="py-lineno">2034</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-582" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-582', 'container', 'link-63');">container</a></tt> <tt class="py-op">!=</tt> <tt class="py-name">doc</tt><tt class="py-op">:</tt> </tt>
+<a name="L2035"></a><tt class="py-lineno">2035</tt>  <tt class="py-line">                <tt class="py-name">base</tt> <tt class="py-op">=</tt> <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-583" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-583', 'container', 'link-63');">container</a></tt> </tt>
+<a name="L2036"></a><tt class="py-lineno">2036</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">base</tt><tt class="py-op">,</tt> <tt id="link-584" class="py-name"><a title="epydoc.apidoc.ClassDoc" class="py-name" href="#" onclick="return doclink('link-584', 'ClassDoc', 'link-56');">ClassDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L2037"></a><tt class="py-lineno">2037</tt>  <tt class="py-line">                    <tt class="py-comment"># This *should* never happen:</tt> </tt>
+<a name="L2038"></a><tt class="py-lineno">2038</tt>  <tt class="py-line"><tt class="py-comment"></tt>                    <tt id="link-585" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-585', 'log', 'link-29');">log</a></tt><tt class="py-op">.</tt><tt id="link-586" class="py-name"><a title="epydoc.checker.DocChecker.warning
+epydoc.log.warning" class="py-name" href="#" onclick="return doclink('link-586', 'warning', 'link-74');">warning</a></tt><tt class="py-op">(</tt><tt class="py-string">"%s's container is not a class!"</tt> <tt class="py-op">%</tt> <tt class="py-name">var_doc</tt><tt class="py-op">)</tt> </tt>
+<a name="L2039"></a><tt class="py-lineno">2039</tt>  <tt class="py-line">                    <tt class="py-name">normal_vars</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">var_doc</tt><tt class="py-op">)</tt> </tt>
+<a name="L2040"></a><tt class="py-lineno">2040</tt>  <tt class="py-line">                <tt class="py-keyword">elif</tt> <tt class="py-op">(</tt><tt class="py-name">base</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">class_set</tt> <tt class="py-keyword">or</tt> </tt>
+<a name="L2041"></a><tt class="py-lineno">2041</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_inheritance</tt> <tt class="py-op">==</tt> <tt class="py-string">'listed'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L2042"></a><tt class="py-lineno">2042</tt>  <tt class="py-line">                    <tt class="py-name">listed_inh_vars</tt><tt class="py-op">.</tt><tt class="py-name">setdefault</tt><tt class="py-op">(</tt><tt class="py-name">base</tt><tt class="py-op">,</tt><tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">var_doc</tt><tt class="py-op">)</tt> </tt>
+<a name="L2043"></a><tt class="py-lineno">2043</tt>  <tt class="py-line">                <tt class="py-keyword">elif</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_inheritance</tt> <tt class="py-op">==</tt> <tt class="py-string">'grouped'</tt><tt class="py-op">:</tt> </tt>
+<a name="L2044"></a><tt class="py-lineno">2044</tt>  <tt class="py-line">                    <tt class="py-name">grouped_inh_vars</tt><tt class="py-op">.</tt><tt class="py-name">setdefault</tt><tt class="py-op">(</tt><tt class="py-name">base</tt><tt class="py-op">,</tt><tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">var_doc</tt><tt class="py-op">)</tt> </tt>
+<a name="L2045"></a><tt class="py-lineno">2045</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L2046"></a><tt class="py-lineno">2046</tt>  <tt class="py-line">                    <tt class="py-name">normal_vars</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">var_doc</tt><tt class="py-op">)</tt> </tt>
+<a name="L2047"></a><tt class="py-lineno">2047</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L2048"></a><tt class="py-lineno">2048</tt>  <tt class="py-line">                <tt class="py-name">normal_vars</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">var_doc</tt><tt class="py-op">)</tt> </tt>
+<a name="L2049"></a><tt class="py-lineno">2049</tt>  <tt class="py-line">             </tt>
+<a name="L2050"></a><tt class="py-lineno">2050</tt>  <tt class="py-line">        <tt class="py-comment"># Write a header for the group.</tt> </tt>
+<a name="L2051"></a><tt class="py-lineno">2051</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt id="link-587" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-587', 'name', 'link-117');">name</a></tt> <tt class="py-op">!=</tt> <tt class="py-string">''</tt><tt class="py-op">:</tt> </tt>
+<a name="L2052"></a><tt class="py-lineno">2052</tt>  <tt class="py-line">            <tt class="py-name">tr_class</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
+<a name="L2053"></a><tt class="py-lineno">2053</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt id="link-588" class="py-name"><a title="epydoc.markup.restructuredtext._EpydocReader.v" class="py-name" href="#" onclick="return doclink('link-588', 'v', 'link-80');">v</a></tt> <tt class="py-keyword">for</tt> <tt id="link-589" class="py-name"><a title="epydoc.markup.restructuredtext._EpydocRead [...]
+<a name="L2054"></a><tt class="py-lineno">2054</tt>  <tt class="py-line">                <tt class="py-name">tr_class</tt> <tt class="py-op">=</tt> <tt class="py-string">' class="private"'</tt> </tt>
+<a name="L2055"></a><tt class="py-lineno">2055</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-592" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_group_header" class="py-name" href="#" onclick="return doclink('link-592', 'write_group_header', 'link-579');">write_group_header</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt id="link-593" class="py-name"><a title="epydoc.apido [...]
+<a name="L2056"></a><tt class="py-lineno">2056</tt>  <tt class="py-line"> </tt>
+<a name="L2057"></a><tt class="py-lineno">2057</tt>  <tt class="py-line">        <tt class="py-comment"># Write a line for each normal var:</tt> </tt>
+<a name="L2058"></a><tt class="py-lineno">2058</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">for</tt> <tt class="py-name">var_doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">normal_vars</tt><tt class="py-op">:</tt> </tt>
+<a name="L2059"></a><tt class="py-lineno">2059</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-594" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_summary_line" class="py-name" href="#" onclick="return doclink('link-594', 'write_summary_line', 'link-580');">write_summary_line</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-name">var_doc</tt><tt class="py-op">,</tt> [...]
+<a name="L2060"></a><tt class="py-lineno">2060</tt>  <tt class="py-line">        <tt class="py-comment"># Write a subsection for inherited vars:</tt> </tt>
+<a name="L2061"></a><tt class="py-lineno">2061</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">listed_inh_vars</tt><tt class="py-op">:</tt> </tt>
+<a name="L2062"></a><tt class="py-lineno">2062</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-595" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.write_inheritance_list()=epydoc.docwriter.html.HTMLWriter-class.html#write_inheritance_list"><a title="epydoc.docwriter.html.HTMLWriter.write_inheritance_list" class="py-name" href="#" onclick="return doclink('link-595', 'write_inheritance_list', 'link-595');">write_inhe [...]
+</div><a name="L2063"></a><tt class="py-lineno">2063</tt>  <tt class="py-line"> </tt>
+<a name="HTMLWriter.write_inheritance_list"></a><div id="HTMLWriter.write_inheritance_list-def"><a name="L2064"></a><tt class="py-lineno">2064</tt> <a class="py-toggle" href="#" id="HTMLWriter.write_inheritance_list-toggle" onclick="return toggle('HTMLWriter.write_inheritance_list');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html.HTMLWriter-class.html#write_inheritance_list">write_inheritance_list</a><tt class="py-op">(</t [...]
+</div><div id="HTMLWriter.write_inheritance_list-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLWriter.write_inheritance_list-expanded"><a name="L2065"></a><tt class="py-lineno">2065</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'  <tr>\n    <td colspan="2" class="summary">\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2066"></a><tt class="py-lineno">2066</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">base</tt> <tt class="py-keyword">in</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-596" class="py-name"><a title="epydoc.apidoc.ClassDoc.mro" class="py-name" href="#" onclick="return doclink('link-596', 'mro', 'link-336');">mro</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L2067"></a><tt class="py-lineno">2067</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">base</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">listed_inh_vars</tt><tt class="py-op">:</tt> <tt class="py-keyword">continue</tt> </tt>
+<a name="L2068"></a><tt class="py-lineno">2068</tt>  <tt class="py-line">            <tt class="py-name">public_vars</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt id="link-597" class="py-name"><a title="epydoc.markup.restructuredtext._EpydocReader.v" class="py-name" href="#" onclick="return doclink('link-597', 'v', 'link-80');">v</a></tt> <tt class="py-keyword">for</tt> <tt id="link-598" class="py-name"><a title="epydoc.markup.restructuredtext._EpydocReader.v" class="py-name" [...]
+<a name="L2069"></a><tt class="py-lineno">2069</tt>  <tt class="py-line">                           <tt class="py-keyword">if</tt> <tt id="link-599" class="py-name"><a title="epydoc.markup.restructuredtext._EpydocReader.v" class="py-name" href="#" onclick="return doclink('link-599', 'v', 'link-80');">v</a></tt><tt class="py-op">.</tt><tt id="link-600" class="py-name"><a title="epydoc.apidoc.VariableDoc.is_public" class="py-name" href="#" onclick="return doclink('link-600', 'is_public', ' [...]
+<a name="L2070"></a><tt class="py-lineno">2070</tt>  <tt class="py-line">            <tt class="py-name">private_vars</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt id="link-601" class="py-name"><a title="epydoc.markup.restructuredtext._EpydocReader.v" class="py-name" href="#" onclick="return doclink('link-601', 'v', 'link-80');">v</a></tt> <tt class="py-keyword">for</tt> <tt id="link-602" class="py-name"><a title="epydoc.markup.restructuredtext._EpydocReader.v" class="py-name [...]
+<a name="L2071"></a><tt class="py-lineno">2071</tt>  <tt class="py-line">                            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-603" class="py-name"><a title="epydoc.markup.restructuredtext._EpydocReader.v" class="py-name" href="#" onclick="return doclink('link-603', 'v', 'link-80');">v</a></tt><tt class="py-op">.</tt><tt id="link-604" class="py-name"><a title="epydoc.apidoc.VariableDoc.is_public" class="py-name" href="#" onclick="return d [...]
+<a name="L2072"></a><tt class="py-lineno">2072</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">public_vars</tt><tt class="py-op">:</tt> </tt>
+<a name="L2073"></a><tt class="py-lineno">2073</tt>  <tt class="py-line">                <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'    <p class="indent-wrapped-lines">'</tt> </tt>
+<a name="L2074"></a><tt class="py-lineno">2074</tt>  <tt class="py-line">                    <tt class="py-string">'<b>Inherited from <code>%s</code></b>:\n'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L2075"></a><tt class="py-lineno">2075</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-605" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.href" class="py-name" href="#" onclick="return doclink('link-605', 'href', 'link-254');">href</a></tt><tt class="py-op">(</tt><tt class="py-name">base</tt><tt class="py-op">,</tt> <tt class="py-name">context</tt><tt class="py-op">=</tt><tt class="py-name">doc</tt><tt c [...]
+<a name="L2076"></a><tt class="py-lineno">2076</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-606" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.write_var_list()=epydoc.docwriter.html.HTMLWriter-class.html#write_var_list,Method epydoc.docwriter.latex.LatexWriter.write_var_list()=epydoc.docwriter.latex.LatexWriter-class.html#write_var_list"><a title="epydoc.docwriter.html.HTMLWriter.write_var_list
+epydoc.docwriter.latex.LatexWriter.write_var_list" class="py-name" href="#" onclick="return doclink('link-606', 'write_var_list', 'link-606');">write_var_list</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-name">public_vars</tt><tt class="py-op">)</tt> </tt>
+<a name="L2077"></a><tt class="py-lineno">2077</tt>  <tt class="py-line">                <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'      </p>\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2078"></a><tt class="py-lineno">2078</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">private_vars</tt> <tt class="py-keyword">and</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_show_private</tt><tt class="py-op">:</tt> </tt>
+<a name="L2079"></a><tt class="py-lineno">2079</tt>  <tt class="py-line">                <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'    <div class="private">'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2080"></a><tt class="py-lineno">2080</tt>  <tt class="py-line">                <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'    <p class="indent-wrapped-lines">'</tt> </tt>
+<a name="L2081"></a><tt class="py-lineno">2081</tt>  <tt class="py-line">                    <tt class="py-string">'<b>Inherited from <code>%s</code></b> (private):\n'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L2082"></a><tt class="py-lineno">2082</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-607" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.href" class="py-name" href="#" onclick="return doclink('link-607', 'href', 'link-254');">href</a></tt><tt class="py-op">(</tt><tt class="py-name">base</tt><tt class="py-op">,</tt> <tt class="py-name">context</tt><tt class="py-op">=</tt><tt class="py-name">doc</tt><tt c [...]
+<a name="L2083"></a><tt class="py-lineno">2083</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-608" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_var_list
+epydoc.docwriter.latex.LatexWriter.write_var_list" class="py-name" href="#" onclick="return doclink('link-608', 'write_var_list', 'link-606');">write_var_list</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-name">private_vars</tt><tt class="py-op">)</tt> </tt>
+<a name="L2084"></a><tt class="py-lineno">2084</tt>  <tt class="py-line">                <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'      </p></div>\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2085"></a><tt class="py-lineno">2085</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'    </td>\n  </tr>\n'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2086"></a><tt class="py-lineno">2086</tt>  <tt class="py-line">     </tt>
+<a name="HTMLWriter.write_var_list"></a><div id="HTMLWriter.write_var_list-def"><a name="L2087"></a><tt class="py-lineno">2087</tt> <a class="py-toggle" href="#" id="HTMLWriter.write_var_list-toggle" onclick="return toggle('HTMLWriter.write_var_list');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html.HTMLWriter-class.html#write_var_list">write_var_list</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op [...]
+</div><div id="HTMLWriter.write_var_list-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLWriter.write_var_list-expanded"><a name="L2088"></a><tt class="py-lineno">2088</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'      '</tt><tt class="py-op">)</tt> </tt>
+<a name="L2089"></a><tt class="py-lineno">2089</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">',\n      '</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">'<code>%s</code>'</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-609" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.href" cl [...]
+<a name="L2090"></a><tt class="py-lineno">2090</tt>  <tt class="py-line">                              <tt class="py-keyword">for</tt> <tt id="link-613" class="py-name"><a title="epydoc.markup.restructuredtext._EpydocReader.v" class="py-name" href="#" onclick="return doclink('link-613', 'v', 'link-80');">v</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">vardocs</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">+</tt><tt class="py-string">'\n'</tt><tt class [...]
+</div><a name="L2091"></a><tt class="py-lineno">2091</tt>  <tt class="py-line"> </tt>
+<a name="HTMLWriter.write_summary_line"></a><div id="HTMLWriter.write_summary_line-def"><a name="L2092"></a><tt class="py-lineno">2092</tt> <a class="py-toggle" href="#" id="HTMLWriter.write_summary_line-toggle" onclick="return toggle('HTMLWriter.write_summary_line');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html.HTMLWriter-class.html#write_summary_line">write_summary_line</a><tt class="py-op">(</tt><tt class="py-param">s [...]
+</div><div id="HTMLWriter.write_summary_line-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLWriter.write_summary_line-expanded"><a name="L2093"></a><tt class="py-lineno">2093</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L2094"></a><tt class="py-lineno">2094</tt>  <tt class="py-line"><tt class="py-docstring">        Generate HTML code for a single line of a summary table, and</tt> </tt>
+<a name="L2095"></a><tt class="py-lineno">2095</tt>  <tt class="py-line"><tt class="py-docstring">        write it to C{out}.  See L{write_summary_table} for more</tt> </tt>
+<a name="L2096"></a><tt class="py-lineno">2096</tt>  <tt class="py-line"><tt class="py-docstring">        information.</tt> </tt>
+<a name="L2097"></a><tt class="py-lineno">2097</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt>
+<a name="L2098"></a><tt class="py-lineno">2098</tt>  <tt class="py-line"><tt class="py-docstring">        @param var_doc: The API documentation for the variable that</tt> </tt>
+<a name="L2099"></a><tt class="py-lineno">2099</tt>  <tt class="py-line"><tt class="py-docstring">            should be described by this line of the summary table.</tt> </tt>
+<a name="L2100"></a><tt class="py-lineno">2100</tt>  <tt class="py-line"><tt class="py-docstring">        @param container: The API documentation for the class or</tt> </tt>
+<a name="L2101"></a><tt class="py-lineno">2101</tt>  <tt class="py-line"><tt class="py-docstring">            module whose summary table we're writing.</tt> </tt>
+<a name="L2102"></a><tt class="py-lineno">2102</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L2103"></a><tt class="py-lineno">2103</tt>  <tt class="py-line">        <tt id="link-614" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.pysrc_link" class="py-name" href="#" onclick="return doclink('link-614', 'pysrc_link', 'link-227');">pysrc_link</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L2104"></a><tt class="py-lineno">2104</tt>  <tt class="py-line">        <tt class="py-name">callgraph</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L2105"></a><tt class="py-lineno">2105</tt>  <tt class="py-line"> </tt>
+<a name="L2106"></a><tt class="py-lineno">2106</tt>  <tt class="py-line">        <tt class="py-comment"># If it's a private variable, then mark its <tr>.</tt> </tt>
+<a name="L2107"></a><tt class="py-lineno">2107</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-615" class="py-name"><a title="epydoc.apidoc.VariableDoc.is_public" class="py-name" href="#" onclick="return doclink('link-615', 'is_public', 'link-578');">is_public</a></tt><tt class="py-op">:</tt> <tt class="py-name">tr_class</tt> <tt class="py-op">=</tt> <tt class="py-string">''< [...]
+<a name="L2108"></a><tt class="py-lineno">2108</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> <tt class="py-name">tr_class</tt> <tt class="py-op">=</tt> <tt class="py-string">' class="private"'</tt> </tt>
+<a name="L2109"></a><tt class="py-lineno">2109</tt>  <tt class="py-line"> </tt>
+<a name="L2110"></a><tt class="py-lineno">2110</tt>  <tt class="py-line">        <tt class="py-comment"># Decide an anchor or a link is to be generated.</tt> </tt>
+<a name="L2111"></a><tt class="py-lineno">2111</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">link_name</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_redundant_details</tt> <tt class="py-keyword">or</tt> <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-616" class="py-name" targets="Method epydoc.apidoc.APIDoc.is_detailed()=epydoc.apidoc.APIDoc-class.html#is_detailed,Method epy [...]
+epydoc.apidoc.GenericValueDoc.is_detailed
+epydoc.apidoc.NamespaceDoc.is_detailed
+epydoc.apidoc.PropertyDoc.is_detailed
+epydoc.apidoc.RoutineDoc.is_detailed
+epydoc.apidoc.VariableDoc.is_detailed" class="py-name" href="#" onclick="return doclink('link-616', 'is_detailed', 'link-616');">is_detailed</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L2112"></a><tt class="py-lineno">2112</tt>  <tt class="py-line">        <tt class="py-name">anchor</tt> <tt class="py-op">=</tt> <tt class="py-keyword">not</tt> <tt class="py-name">link_name</tt> </tt>
+<a name="L2113"></a><tt class="py-lineno">2113</tt>  <tt class="py-line"> </tt>
+<a name="L2114"></a><tt class="py-lineno">2114</tt>  <tt class="py-line">        <tt class="py-comment"># Construct the HTML code for the type (cell 1) & description</tt> </tt>
+<a name="L2115"></a><tt class="py-lineno">2115</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># (cell 2).</tt> </tt>
+<a name="L2116"></a><tt class="py-lineno">2116</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-617" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-617', 'value', 'link-61');">value</a></tt><tt class="py-op">,</tt> <tt id="link-618" class="py-name"><a t [...]
+<a name="L2117"></a><tt class="py-lineno">2117</tt>  <tt class="py-line">            <tt class="py-name">typ</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-619" class="py-name" targets="Variable epydoc.apidoc.RoutineDoc.return_type=epydoc.apidoc.RoutineDoc-class.html#return_type,Method epydoc.docwriter.html.HTMLWriter.return_type()=epydoc.docwriter.html.HTMLWriter-class.html#return_type"><a title="epydoc.apidoc.RoutineDoc.return_type
+epydoc.docwriter.html.HTMLWriter.return_type" class="py-name" href="#" onclick="return doclink('link-619', 'return_type', 'link-619');">return_type</a></tt><tt class="py-op">(</tt><tt class="py-name">var_doc</tt><tt class="py-op">,</tt> <tt class="py-name">indent</tt><tt class="py-op">=</tt><tt class="py-number">6</tt><tt class="py-op">)</tt> </tt>
+<a name="L2118"></a><tt class="py-lineno">2118</tt>  <tt class="py-line">            <tt id="link-620" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.description()=epydoc.docwriter.html.HTMLWriter-class.html#description"><a title="epydoc.docwriter.html.HTMLWriter.description" class="py-name" href="#" onclick="return doclink('link-620', 'description', 'link-620');">description</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id=" [...]
+epydoc.docwriter.latex.LatexWriter.function_signature" class="py-name" href="#" onclick="return doclink('link-621', 'function_signature', 'link-621');">function_signature</a></tt><tt class="py-op">(</tt><tt class="py-name">var_doc</tt><tt class="py-op">,</tt> <tt class="py-name">is_summary</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> </tt>
+<a name="L2119"></a><tt class="py-lineno">2119</tt>  <tt class="py-line">                <tt class="py-name">link_name</tt><tt class="py-op">=</tt><tt class="py-name">link_name</tt><tt class="py-op">,</tt> <tt class="py-name">anchor</tt><tt class="py-op">=</tt><tt class="py-name">anchor</tt><tt class="py-op">)</tt> </tt>
+<a name="L2120"></a><tt class="py-lineno">2120</tt>  <tt class="py-line">            <tt id="link-622" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.pysrc_link" class="py-name" href="#" onclick="return doclink('link-622', 'pysrc_link', 'link-227');">pysrc_link</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-623" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.pysrc_link" class="py-name" href="#" onclick="return d [...]
+<a name="L2121"></a><tt class="py-lineno">2121</tt>  <tt class="py-line"> </tt>
+<a name="L2122"></a><tt class="py-lineno">2122</tt>  <tt class="py-line">            <tt class="py-comment"># Perpare the call-graph, if requested</tt> </tt>
+<a name="L2123"></a><tt class="py-lineno">2123</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt class="py-string">'callgraph'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_graph_types</tt><tt class="py-op">:</tt> </tt>
+<a name="L2124"></a><tt class="py-lineno">2124</tt>  <tt class="py-line">                <tt class="py-name">linker</tt> <tt class="py-op">=</tt> <tt id="link-625" class="py-name"><a title="epydoc.docwriter.html._HTMLDocstringLinker" class="py-name" href="#" onclick="return doclink('link-625', '_HTMLDocstringLinker', 'link-319');">_HTMLDocstringLinker</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">var_doc</tt><tt class="py-op">.< [...]
+<a name="L2125"></a><tt class="py-lineno">2125</tt>  <tt class="py-line">                <tt class="py-name">callgraph</tt> <tt class="py-op">=</tt> <tt id="link-627" class="py-name" targets="Function epydoc.docwriter.dotgraph.call_graph()=epydoc.docwriter.dotgraph-module.html#call_graph"><a title="epydoc.docwriter.dotgraph.call_graph" class="py-name" href="#" onclick="return doclink('link-627', 'call_graph', 'link-627');">call_graph</a></tt><tt class="py-op">(</tt><tt class="py-op">[</t [...]
+<a name="L2126"></a><tt class="py-lineno">2126</tt>  <tt class="py-line">                                       <tt class="py-name">linker</tt><tt class="py-op">,</tt> <tt class="py-name">var_doc</tt><tt class="py-op">,</tt> <tt class="py-name">add_callers</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">,</tt>  </tt>
+<a name="L2127"></a><tt class="py-lineno">2127</tt>  <tt class="py-line">                                       <tt class="py-name">add_callees</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt>
+<a name="L2128"></a><tt class="py-lineno">2128</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">callgraph</tt> <tt class="py-keyword">and</tt> <tt class="py-name">callgraph</tt><tt class="py-op">.</tt><tt class="py-name">nodes</tt><tt class="py-op">:</tt> </tt>
+<a name="L2129"></a><tt class="py-lineno">2129</tt>  <tt class="py-line">                    <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-629" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-629', 'value', 'link-61');">value</a></tt><tt class="py-op">.</tt><tt id="link-630" class="py-name" targets="Variable epydoc.apidoc.RoutineDoc.callgraph_uid=epydoc.apidoc.RoutineDoc-class.html#callgraph_uid"><a  [...]
+<a name="L2130"></a><tt class="py-lineno">2130</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L2131"></a><tt class="py-lineno">2131</tt>  <tt class="py-line">                    <tt class="py-name">callgraph</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L2132"></a><tt class="py-lineno">2132</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L2133"></a><tt class="py-lineno">2133</tt>  <tt class="py-line">            <tt class="py-name">typ</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-631" class="py-name" targets="Variable epydoc.apidoc.PropertyDoc.type_descr=epydoc.apidoc.PropertyDoc-class.html#type_descr,Variable epydoc.apidoc.VariableDoc.type_descr=epydoc.apidoc.VariableDoc-class.html#type_descr,Method epydoc.docwriter.html.HTMLWriter.type_descr()=epydoc.docwriter [...]
+epydoc.apidoc.VariableDoc.type_descr
+epydoc.docwriter.html.HTMLWriter.type_descr" class="py-name" href="#" onclick="return doclink('link-631', 'type_descr', 'link-631');">type_descr</a></tt><tt class="py-op">(</tt><tt class="py-name">var_doc</tt><tt class="py-op">,</tt> <tt class="py-name">indent</tt><tt class="py-op">=</tt><tt class="py-number">6</tt><tt class="py-op">)</tt> </tt>
+<a name="L2134"></a><tt class="py-lineno">2134</tt>  <tt class="py-line">            <tt id="link-632" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.description" class="py-name" href="#" onclick="return doclink('link-632', 'description', 'link-620');">description</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-633" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.summary_name()=epydoc.docwriter.html.HTMLWrit [...]
+<a name="L2135"></a><tt class="py-lineno">2135</tt>  <tt class="py-line">                <tt class="py-name">link_name</tt><tt class="py-op">=</tt><tt class="py-name">link_name</tt><tt class="py-op">,</tt> <tt class="py-name">anchor</tt><tt class="py-op">=</tt><tt class="py-name">anchor</tt><tt class="py-op">)</tt> </tt>
+<a name="L2136"></a><tt class="py-lineno">2136</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-634" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-634', 'value', 'link-61');">value</a></tt><tt class="py-op">,</tt> <tt id="link-635" class="py-name"><a title="epydoc.apidoc.Gene [...]
+<a name="L2137"></a><tt class="py-lineno">2137</tt>  <tt class="py-line">                <tt class="py-comment"># The summary max length has been chosen setting</tt> </tt>
+<a name="L2138"></a><tt class="py-lineno">2138</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-comment"># L{ValueDoc.SUMMARY_REPR_LINELEN} in the constructor</tt> </tt>
+<a name="L2139"></a><tt class="py-lineno">2139</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-name">max_len</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_variable_summary_linelen</tt><tt class="py-op">-</tt><tt class="py-number">3</tt><tt class="py-op">-</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-636" class="py-name [...]
+<a name="L2140"></a><tt class="py-lineno">2140</tt>  <tt class="py-line">                <tt class="py-name">val_repr</tt> <tt class="py-op">=</tt> <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-637" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-637', 'value', 'link-61');">value</a></tt><tt class="py-op">.</tt><tt id="link-638" class="py-name" targets="Method epydoc.apidoc.ValueDoc.summary_pyval_rep [...]
+<a name="L2141"></a><tt class="py-lineno">2141</tt>  <tt class="py-line">                <tt class="py-name">tooltip</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-639" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.variable_tooltip()=epydoc.docwriter.html.HTMLWriter-class.html#variable_tooltip"><a title="epydoc.docwriter.html.HTMLWriter.variable_tooltip" class="py-name" href="#" onclick="return doclink('link-639', 'varia [...]
+<a name="L2142"></a><tt class="py-lineno">2142</tt>  <tt class="py-line">                <tt id="link-640" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.description" class="py-name" href="#" onclick="return doclink('link-640', 'description', 'link-620');">description</a></tt> <tt class="py-op">+=</tt> <tt class="py-op">(</tt><tt class="py-string">' = <code%s>%s</code>'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L2143"></a><tt class="py-lineno">2143</tt>  <tt class="py-line">                                <tt class="py-op">(</tt><tt class="py-name">tooltip</tt><tt class="py-op">,</tt> <tt class="py-name">val_repr</tt><tt class="py-op">.</tt><tt id="link-641" class="py-name"><a title="epydoc.docwriter.dotgraph.DotGraph.to_html
+epydoc.markup.ConcatenatedDocstring.to_html
+epydoc.markup.ParsedDocstring.to_html
+epydoc.markup.epytext.ParsedEpytextDocstring.to_html
+epydoc.markup.javadoc.ParsedJavadocDocstring.to_html
+epydoc.markup.plaintext.ParsedPlaintextDocstring.to_html
+epydoc.markup.restructuredtext.ParsedRstDocstring.to_html" class="py-name" href="#" onclick="return doclink('link-641', 'to_html', 'link-522');">to_html</a></tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2144"></a><tt class="py-lineno">2144</tt>  <tt class="py-line"> </tt>
+<a name="L2145"></a><tt class="py-lineno">2145</tt>  <tt class="py-line">        <tt class="py-comment"># Add the summary to the description (if there is one).</tt> </tt>
+<a name="L2146"></a><tt class="py-lineno">2146</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt id="link-642" class="py-name" targets="Variable epydoc.apidoc.APIDoc.summary=epydoc.apidoc.APIDoc-class.html#summary,Method epydoc.docwriter.html.HTMLWriter.summary()=epydoc.docwriter.html.HTMLWriter-class.html#summary,Method epydoc.markup.ConcatenatedDocstring.summary()=epydoc.markup.ConcatenatedDocstring-class.html#summary,Method epydoc.markup.ParsedDocstring.summary()=epydo [...]
+epydoc.docwriter.html.HTMLWriter.summary
+epydoc.markup.ConcatenatedDocstring.summary
+epydoc.markup.ParsedDocstring.summary
+epydoc.markup.epytext.ParsedEpytextDocstring.summary
+epydoc.markup.javadoc.ParsedJavadocDocstring.summary
+epydoc.markup.plaintext.ParsedPlaintextDocstring.summary
+epydoc.markup.restructuredtext.ParsedRstDocstring.summary" class="py-name" href="#" onclick="return doclink('link-642', 'summary', 'link-642');">summary</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-643" class="py-name"><a title="epydoc.apidoc.APIDoc.summary
+epydoc.docwriter.html.HTMLWriter.summary
+epydoc.markup.ConcatenatedDocstring.summary
+epydoc.markup.ParsedDocstring.summary
+epydoc.markup.epytext.ParsedEpytextDocstring.summary
+epydoc.markup.javadoc.ParsedJavadocDocstring.summary
+epydoc.markup.plaintext.ParsedPlaintextDocstring.summary
+epydoc.markup.restructuredtext.ParsedRstDocstring.summary" class="py-name" href="#" onclick="return doclink('link-643', 'summary', 'link-642');">summary</a></tt><tt class="py-op">(</tt><tt class="py-name">var_doc</tt><tt class="py-op">,</tt> <tt class="py-name">indent</tt><tt class="py-op">=</tt><tt class="py-number">6</tt><tt class="py-op">)</tt> </tt>
+<a name="L2147"></a><tt class="py-lineno">2147</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-644" class="py-name"><a title="epydoc.apidoc.APIDoc.summary
+epydoc.docwriter.html.HTMLWriter.summary
+epydoc.markup.ConcatenatedDocstring.summary
+epydoc.markup.ParsedDocstring.summary
+epydoc.markup.epytext.ParsedEpytextDocstring.summary
+epydoc.markup.javadoc.ParsedJavadocDocstring.summary
+epydoc.markup.plaintext.ParsedPlaintextDocstring.summary
+epydoc.markup.restructuredtext.ParsedRstDocstring.summary" class="py-name" href="#" onclick="return doclink('link-644', 'summary', 'link-642');">summary</a></tt><tt class="py-op">:</tt> <tt id="link-645" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.description" class="py-name" href="#" onclick="return doclink('link-645', 'description', 'link-620');">description</a></tt> <tt class="py-op">+=</tt> <tt class="py-string">'<br />\n      %s'</tt> <tt class="py-op">%</tt> <t [...]
+epydoc.docwriter.html.HTMLWriter.summary
+epydoc.markup.ConcatenatedDocstring.summary
+epydoc.markup.ParsedDocstring.summary
+epydoc.markup.epytext.ParsedEpytextDocstring.summary
+epydoc.markup.javadoc.ParsedJavadocDocstring.summary
+epydoc.markup.plaintext.ParsedPlaintextDocstring.summary
+epydoc.markup.restructuredtext.ParsedRstDocstring.summary" class="py-name" href="#" onclick="return doclink('link-646', 'summary', 'link-642');">summary</a></tt> </tt>
+<a name="L2148"></a><tt class="py-lineno">2148</tt>  <tt class="py-line">         </tt>
+<a name="L2149"></a><tt class="py-lineno">2149</tt>  <tt class="py-line">        <tt class="py-comment"># If it's inherited, then add a note to the description.</tt> </tt>
+<a name="L2150"></a><tt class="py-lineno">2150</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-647" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-647', 'container', 'link-63');">container</a></tt> <tt class="py-op">!=</tt> <tt id="link-648" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-648', 'container', 'link-63');">container</a></tt> <tt class="py-keyword">and</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_inheritance</tt><tt class="py-op">==</tt><tt class="py-string">"included"</tt><tt class="py-op">:</tt> </tt>
+<a name="L2151"></a><tt class="py-lineno">2151</tt>  <tt class="py-line">            <tt id="link-649" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.description" class="py-name" href="#" onclick="return doclink('link-649', 'description', 'link-620');">description</a></tt> <tt class="py-op">+=</tt> <tt class="py-op">(</tt><tt class="py-string">"\n      <em>(Inherited from "</tt> <tt class="py-op">+</tt> </tt>
+<a name="L2152"></a><tt class="py-lineno">2152</tt>  <tt class="py-line">                        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-650" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.href" class="py-name" href="#" onclick="return doclink('link-650', 'href', 'link-254');">href</a></tt><tt class="py-op">(</tt><tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-651" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-651', 'container', 'link-63');">container</a></tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-string">")</em>"</tt><tt class="py-op">)</tt> </tt>
+<a name="L2153"></a><tt class="py-lineno">2153</tt>  <tt class="py-line"> </tt>
+<a name="L2154"></a><tt class="py-lineno">2154</tt>  <tt class="py-line">        <tt class="py-comment"># Write the summary line.</tt> </tt>
+<a name="L2155"></a><tt class="py-lineno">2155</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-652" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter._write_summary_line()=epydoc.docwriter.html.HTMLWriter-class.html#_write_summary_line"><a title="epydoc.docwriter.html.HTMLWriter._write_summary_line" class="py-name" href="#" onclick="return doclink('link-652', '_write_summary_line', 'link-652'); [...]
+<a name="L2156"></a><tt class="py-lineno">2156</tt>  <tt class="py-line">                                 <tt class="py-name">callgraph</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2157"></a><tt class="py-lineno">2157</tt>  <tt class="py-line"> </tt>
+<a name="L2158"></a><tt class="py-lineno">2158</tt>  <tt class="py-line">    <tt id="link-655" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter._write_summary_line" class="py-name" href="#" onclick="return doclink('link-655', '_write_summary_line', 'link-652');">_write_summary_line</a></tt> <tt class="py-op">=</tt> <tt id="link-656" class="py-name"><a title="epydoc.docwriter.html.compile_template" class="py-name" href="#" onclick="return doclink('link-656', 'compile_template',  [...]
+<a name="L2159"></a><tt class="py-lineno">2159</tt>  <tt class="py-line">        <tt class="py-string">"_write_summary_line(self, out, typ, description, tr_class, "</tt> </tt>
+<a name="L2160"></a><tt class="py-lineno">2160</tt>  <tt class="py-line">                            <tt class="py-string">"pysrc_link, callgraph)"</tt><tt class="py-op">,</tt> </tt>
+<a name="L2161"></a><tt class="py-lineno">2161</tt>  <tt class="py-line">        <tt class="py-comment"># /------------------------- Template -------------------------\</tt> </tt>
+<a name="L2162"></a><tt class="py-lineno">2162</tt>  <tt class="py-line">        <tt class="py-string">'''</tt> </tt>
+<a name="L2163"></a><tt class="py-lineno">2163</tt>  <tt class="py-line"><tt class="py-string">          <tr$tr_class$></tt> </tt>
+<a name="L2164"></a><tt class="py-lineno">2164</tt>  <tt class="py-line"><tt class="py-string">            <td width="15%" align="right" valign="top" class="summary"></tt> </tt>
+<a name="L2165"></a><tt class="py-lineno">2165</tt>  <tt class="py-line"><tt class="py-string">              <span class="summary-type">$typ or "&nbsp;"$</span></tt> </tt>
+<a name="L2166"></a><tt class="py-lineno">2166</tt>  <tt class="py-line"><tt class="py-string">            </td><td class="summary"></tt> </tt>
+<a name="L2167"></a><tt class="py-lineno">2167</tt>  <tt class="py-line"><tt class="py-string">        >>> if pysrc_link is not None or callgraph is not None:</tt> </tt>
+<a name="L2168"></a><tt class="py-lineno">2168</tt>  <tt class="py-line"><tt class="py-string">              <table width="100%" cellpadding="0" cellspacing="0" border="0"></tt> </tt>
+<a name="L2169"></a><tt class="py-lineno">2169</tt>  <tt class="py-line"><tt class="py-string">                <tr></tt> </tt>
+<a name="L2170"></a><tt class="py-lineno">2170</tt>  <tt class="py-line"><tt class="py-string">                  <td>$description$</td></tt> </tt>
+<a name="L2171"></a><tt class="py-lineno">2171</tt>  <tt class="py-line"><tt class="py-string">                  <td align="right" valign="top"></tt> </tt>
+<a name="L2172"></a><tt class="py-lineno">2172</tt>  <tt class="py-line"><tt class="py-string">                    $pysrc_link$</tt> </tt>
+<a name="L2173"></a><tt class="py-lineno">2173</tt>  <tt class="py-line"><tt class="py-string">                    $self.callgraph_link(callgraph, token='-summary')$</tt> </tt>
+<a name="L2174"></a><tt class="py-lineno">2174</tt>  <tt class="py-line"><tt class="py-string">                  </td></tt> </tt>
+<a name="L2175"></a><tt class="py-lineno">2175</tt>  <tt class="py-line"><tt class="py-string">                </tr></tt> </tt>
+<a name="L2176"></a><tt class="py-lineno">2176</tt>  <tt class="py-line"><tt class="py-string">              </table></tt> </tt>
+<a name="L2177"></a><tt class="py-lineno">2177</tt>  <tt class="py-line"><tt class="py-string">              $self.render_callgraph(callgraph, token='-summary')$</tt> </tt>
+<a name="L2178"></a><tt class="py-lineno">2178</tt>  <tt class="py-line"><tt class="py-string">        >>> #endif</tt> </tt>
+<a name="L2179"></a><tt class="py-lineno">2179</tt>  <tt class="py-line"><tt class="py-string">        >>> if pysrc_link is None and callgraph is None:</tt> </tt>
+<a name="L2180"></a><tt class="py-lineno">2180</tt>  <tt class="py-line"><tt class="py-string">                $description$</tt> </tt>
+<a name="L2181"></a><tt class="py-lineno">2181</tt>  <tt class="py-line"><tt class="py-string">        >>> #endif</tt> </tt>
+<a name="L2182"></a><tt class="py-lineno">2182</tt>  <tt class="py-line"><tt class="py-string">            </td></tt> </tt>
+<a name="L2183"></a><tt class="py-lineno">2183</tt>  <tt class="py-line"><tt class="py-string">          </tr></tt> </tt>
+<a name="L2184"></a><tt class="py-lineno">2184</tt>  <tt class="py-line"><tt class="py-string">        '''</tt><tt class="py-op">)</tt> </tt>
+<a name="L2185"></a><tt class="py-lineno">2185</tt>  <tt class="py-line">        <tt class="py-comment"># \------------------------------------------------------------/</tt> </tt>
+<a name="L2186"></a><tt class="py-lineno">2186</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L2187"></a><tt class="py-lineno">2187</tt>  <tt class="py-line">    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L2188"></a><tt class="py-lineno">2188</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#{ 3.6. Details Lists</tt> </tt>
+<a name="L2189"></a><tt class="py-lineno">2189</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L2190"></a><tt class="py-lineno">2190</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="HTMLWriter.write_details_list"></a><div id="HTMLWriter.write_details_list-def"><a name="L2191"></a><tt class="py-lineno">2191</tt> <a class="py-toggle" href="#" id="HTMLWriter.write_details_list-toggle" onclick="return toggle('HTMLWriter.write_details_list');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html.HTMLWriter-class.html#write_details_list">write_details_list</a><tt class="py-op">(</tt><tt class="py-param">s [...]
+</div><div id="HTMLWriter.write_details_list-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLWriter.write_details_list-expanded"><a name="L2192"></a><tt class="py-lineno">2192</tt>  <tt class="py-line">        <tt class="py-comment"># Get a list of the VarDocs we should describe.</tt> </tt>
+<a name="L2193"></a><tt class="py-lineno">2193</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_redundant_details</tt><tt class="py-op">:</tt> </tt>
+<a name="L2194"></a><tt class="py-lineno">2194</tt>  <tt class="py-line">            <tt class="py-name">detailed</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L2195"></a><tt class="py-lineno">2195</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L2196"></a><tt class="py-lineno">2196</tt>  <tt class="py-line">            <tt class="py-name">detailed</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L2197"></a><tt class="py-lineno">2197</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt id="link-657" class="py-name"><a title="epydoc.apidoc.ClassDoc" class="py-name" href="#" onclick="return doclink('link-657', 'ClassDoc', 'link-56');">ClassDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L2198"></a><tt class="py-lineno">2198</tt>  <tt class="py-line">            <tt class="py-name">var_docs</tt> <tt class="py-op">=</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-658" class="py-name"><a title="epydoc.apidoc.ClassDoc.select_variables
+epydoc.apidoc.ModuleDoc.select_variables" class="py-name" href="#" onclick="return doclink('link-658', 'select_variables', 'link-444');">select_variables</a></tt><tt class="py-op">(</tt><tt class="py-name">value_type</tt><tt class="py-op">=</tt><tt class="py-name">value_type</tt><tt class="py-op">,</tt> </tt>
+<a name="L2199"></a><tt class="py-lineno">2199</tt>  <tt class="py-line">                                            <tt class="py-name">imported</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> <tt class="py-name">inherited</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> </tt>
+<a name="L2200"></a><tt class="py-lineno">2200</tt>  <tt class="py-line">                                            <tt class="py-name">public</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_public_filter</tt><tt class="py-op">,</tt> </tt>
+<a name="L2201"></a><tt class="py-lineno">2201</tt>  <tt class="py-line">                                            <tt class="py-name">detailed</tt><tt class="py-op">=</tt><tt class="py-name">detailed</tt><tt class="py-op">)</tt> </tt>
+<a name="L2202"></a><tt class="py-lineno">2202</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L2203"></a><tt class="py-lineno">2203</tt>  <tt class="py-line">            <tt class="py-name">var_docs</tt> <tt class="py-op">=</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-659" class="py-name"><a title="epydoc.apidoc.ClassDoc.select_variables
+epydoc.apidoc.ModuleDoc.select_variables" class="py-name" href="#" onclick="return doclink('link-659', 'select_variables', 'link-444');">select_variables</a></tt><tt class="py-op">(</tt><tt class="py-name">value_type</tt><tt class="py-op">=</tt><tt class="py-name">value_type</tt><tt class="py-op">,</tt> </tt>
+<a name="L2204"></a><tt class="py-lineno">2204</tt>  <tt class="py-line">                                            <tt class="py-name">imported</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> </tt>
+<a name="L2205"></a><tt class="py-lineno">2205</tt>  <tt class="py-line">                                            <tt class="py-name">public</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_public_filter</tt><tt class="py-op">,</tt> </tt>
+<a name="L2206"></a><tt class="py-lineno">2206</tt>  <tt class="py-line">                                            <tt class="py-name">detailed</tt><tt class="py-op">=</tt><tt class="py-name">detailed</tt><tt class="py-op">)</tt> </tt>
+<a name="L2207"></a><tt class="py-lineno">2207</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">var_docs</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> </tt>
+<a name="L2208"></a><tt class="py-lineno">2208</tt>  <tt class="py-line"> </tt>
+<a name="L2209"></a><tt class="py-lineno">2209</tt>  <tt class="py-line">        <tt class="py-comment"># Write a header</tt> </tt>
+<a name="L2210"></a><tt class="py-lineno">2210</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-660" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_table_header" class="py-name" href="#" onclick="return doclink('link-660', 'write_table_header', 'link-375');">write_table_header</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-string">"details"< [...]
+<a name="L2211"></a><tt class="py-lineno">2211</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-661" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.TABLE_FOOTER" class="py-name" href="#" onclick="return doclink('link-661', 'TABLE_FOOTER', 'link-581');">TABLE_FOOTER</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2212"></a><tt class="py-lineno">2212</tt>  <tt class="py-line"> </tt>
+<a name="L2213"></a><tt class="py-lineno">2213</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">var_doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">var_docs</tt><tt class="py-op">:</tt> </tt>
+<a name="L2214"></a><tt class="py-lineno">2214</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-662" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.write_details_entry()=epydoc.docwriter.html.HTMLWriter-class.html#write_details_entry"><a title="epydoc.docwriter.html.HTMLWriter.write_details_entry" class="py-name" href="#" onclick="return doclink('link-662', 'write_details_entry', 'link-662');">write_details_entry</a [...]
+<a name="L2215"></a><tt class="py-lineno">2215</tt>  <tt class="py-line"> </tt>
+<a name="L2216"></a><tt class="py-lineno">2216</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'<br />\n'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2217"></a><tt class="py-lineno">2217</tt>  <tt class="py-line"> </tt>
+<a name="HTMLWriter.write_details_entry"></a><div id="HTMLWriter.write_details_entry-def"><a name="L2218"></a><tt class="py-lineno">2218</tt> <a class="py-toggle" href="#" id="HTMLWriter.write_details_entry-toggle" onclick="return toggle('HTMLWriter.write_details_entry');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html.HTMLWriter-class.html#write_details_entry">write_details_entry</a><tt class="py-op">(</tt><tt class="py-pa [...]
+</div><div id="HTMLWriter.write_details_entry-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLWriter.write_details_entry-expanded"><a name="L2219"></a><tt class="py-lineno">2219</tt>  <tt class="py-line">        <tt id="link-663" class="py-name"><a title="epydoc.apidoc.APIDoc.descr
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-663', 'descr', 'link-228');">descr</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-664" class="py-name"><a title="epydoc.apidoc.APIDoc.descr
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-664', 'descr', 'link-228');">descr</a></tt><tt class="py-op">(</tt><tt class="py-name">var_doc</tt><tt class="py-op">,</tt> <tt class="py-name">indent</tt><tt class="py-op">=</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-string">''</tt> </tt>
+<a name="L2220"></a><tt class="py-lineno">2220</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-665" class="py-name"><a title="epydoc.apidoc.VariableDoc.is_public" class="py-name" href="#" onclick="return doclink('link-665', 'is_public', 'link-578');">is_public</a></tt><tt class="py-op">:</tt> <tt class="py-name">div_class</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
+<a name="L2221"></a><tt class="py-lineno">2221</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> <tt class="py-name">div_class</tt> <tt class="py-op">=</tt> <tt class="py-string">' class="private"'</tt> </tt>
+<a name="L2222"></a><tt class="py-lineno">2222</tt>  <tt class="py-line"> </tt>
+<a name="L2223"></a><tt class="py-lineno">2223</tt>  <tt class="py-line">        <tt class="py-comment"># Functions</tt> </tt>
+<a name="L2224"></a><tt class="py-lineno">2224</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-666" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-666', 'value', 'link-61');">value</a></tt><tt class="py-op">,</tt> <tt id="link-667" class="py-name"><a t [...]
+<a name="L2225"></a><tt class="py-lineno">2225</tt>  <tt class="py-line">            <tt class="py-name">rtype</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-668" class="py-name"><a title="epydoc.apidoc.RoutineDoc.return_type
+epydoc.docwriter.html.HTMLWriter.return_type" class="py-name" href="#" onclick="return doclink('link-668', 'return_type', 'link-619');">return_type</a></tt><tt class="py-op">(</tt><tt class="py-name">var_doc</tt><tt class="py-op">,</tt> <tt class="py-name">indent</tt><tt class="py-op">=</tt><tt class="py-number">10</tt><tt class="py-op">)</tt> </tt>
+<a name="L2226"></a><tt class="py-lineno">2226</tt>  <tt class="py-line">            <tt class="py-name">rdescr</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-669" class="py-name" targets="Variable epydoc.apidoc.RoutineDoc.return_descr=epydoc.apidoc.RoutineDoc-class.html#return_descr,Method epydoc.docwriter.html.HTMLWriter.return_descr()=epydoc.docwriter.html.HTMLWriter-class.html#return_descr"><a title="epydoc.apidoc.RoutineDoc.return_descr
+epydoc.docwriter.html.HTMLWriter.return_descr" class="py-name" href="#" onclick="return doclink('link-669', 'return_descr', 'link-669');">return_descr</a></tt><tt class="py-op">(</tt><tt class="py-name">var_doc</tt><tt class="py-op">,</tt> <tt class="py-name">indent</tt><tt class="py-op">=</tt><tt class="py-number">10</tt><tt class="py-op">)</tt> </tt>
+<a name="L2227"></a><tt class="py-lineno">2227</tt>  <tt class="py-line">            <tt id="link-670" class="py-name" targets="Variable epydoc.apidoc.RoutineDoc.arg_descrs=epydoc.apidoc.RoutineDoc-class.html#arg_descrs"><a title="epydoc.apidoc.RoutineDoc.arg_descrs" class="py-name" href="#" onclick="return doclink('link-670', 'arg_descrs', 'link-670');">arg_descrs</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L2228"></a><tt class="py-lineno">2228</tt>  <tt class="py-line">            <tt class="py-name">args</tt> <tt class="py-op">=</tt> <tt class="py-name">set</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L2229"></a><tt class="py-lineno">2229</tt>  <tt class="py-line">            <tt class="py-comment"># Find the description for each arg.  (Leave them in the</tt> </tt>
+<a name="L2230"></a><tt class="py-lineno">2230</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># same order that they're listed in the docstring.)</tt> </tt>
+<a name="L2231"></a><tt class="py-lineno">2231</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">for</tt> <tt class="py-op">(</tt><tt class="py-name">arg_names</tt><tt class="py-op">,</tt> <tt class="py-name">arg_descr</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-671" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return  [...]
+<a name="L2232"></a><tt class="py-lineno">2232</tt>  <tt class="py-line">                <tt class="py-name">args</tt><tt class="py-op">.</tt><tt class="py-name">update</tt><tt class="py-op">(</tt><tt class="py-name">arg_names</tt><tt class="py-op">)</tt> </tt>
+<a name="L2233"></a><tt class="py-lineno">2233</tt>  <tt class="py-line">                <tt class="py-name">lhs</tt> <tt class="py-op">=</tt> <tt class="py-string">', '</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-673" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.arg_name_to_html()=epydoc.docwriter.html.HTMLWriter-class.html#arg_name_to_html"> [...]
+<a name="L2234"></a><tt class="py-lineno">2234</tt>  <tt class="py-line">                                 <tt class="py-keyword">for</tt> <tt class="py-name">n</tt> <tt class="py-keyword">in</tt> <tt class="py-name">arg_names</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L2235"></a><tt class="py-lineno">2235</tt>  <tt class="py-line">                <tt class="py-name">rhs</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-675" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.docstring_to_html" class="py-name" href="#" onclick="return doclink('link-675', 'docstring_to_html', 'link-383');">docstring_to_html</a></tt><tt class="py-op">(</tt><tt class="py-name">arg_descr</tt><tt class="py-op">,< [...]
+<a name="L2236"></a><tt class="py-lineno">2236</tt>  <tt class="py-line">                <tt id="link-677" class="py-name"><a title="epydoc.apidoc.RoutineDoc.arg_descrs" class="py-name" href="#" onclick="return doclink('link-677', 'arg_descrs', 'link-670');">arg_descrs</a></tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt> <tt class="py-op">(</tt><tt class="py-name">lhs</tt><tt class="py-op">,</tt> <tt class="py-name">rhs</tt><tt class="py-op">)</tt> <tt  [...]
+<a name="L2237"></a><tt class="py-lineno">2237</tt>  <tt class="py-line">            <tt class="py-comment"># Check for arguments for which we have @type but not @param;</tt> </tt>
+<a name="L2238"></a><tt class="py-lineno">2238</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># and add them to the arg_descrs list.</tt> </tt>
+<a name="L2239"></a><tt class="py-lineno">2239</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">for</tt> <tt id="link-678" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-678', 'arg', 'link-370');">arg</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-679" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" hre [...]
+<a name="L2240"></a><tt class="py-lineno">2240</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt id="link-681" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-681', 'arg', 'link-370');">arg</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">args</tt><tt class="py-op">:</tt> </tt>
+<a name="L2241"></a><tt class="py-lineno">2241</tt>  <tt class="py-line">                    <tt class="py-name">argname</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-682" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.arg_name_to_html" class="py-name" href="#" onclick="return doclink('link-682', 'arg_name_to_html', 'link-673');">arg_name_to_html</a></tt><tt class="py-op">(</tt><tt class="py-name">var_doc</tt><tt class="py-op" [...]
+<a name="L2242"></a><tt class="py-lineno">2242</tt>  <tt class="py-line">                    <tt id="link-685" class="py-name"><a title="epydoc.apidoc.RoutineDoc.arg_descrs" class="py-name" href="#" onclick="return doclink('link-685', 'arg_descrs', 'link-670');">arg_descrs</a></tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt> <tt class="py-op">(</tt><tt class="py-name">argname</tt><tt class="py-op">,</tt><tt class="py-string">''</tt><tt class="py-op">)</ [...]
+<a name="L2243"></a><tt class="py-lineno">2243</tt>  <tt class="py-line"> </tt>
+<a name="L2244"></a><tt class="py-lineno">2244</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-686" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.write_function_details_entry()=epydoc.docwriter.html.HTMLWriter-class.html#write_function_details_entry"><a title="epydoc.docwriter.html.HTMLWriter.write_function_details_entry" class="py-name" href="#" onclick="return doclink('link-686', 'write_function_details_entry',  [...]
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-687', 'descr', 'link-228');">descr</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L2245"></a><tt class="py-lineno">2245</tt>  <tt class="py-line">                                              <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-688" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-688', 'value', 'link-61');">value</a></tt><tt class="py-op">.</tt><tt id="link-689" class="py-name"><a title="epydoc.apidoc.RoutineDoc.callgraph_uid" class="py-name" href="#" onclick="r [...]
+<a name="L2246"></a><tt class="py-lineno">2246</tt>  <tt class="py-line">                                              <tt class="py-name">rtype</tt><tt class="py-op">,</tt> <tt class="py-name">rdescr</tt><tt class="py-op">,</tt> <tt id="link-690" class="py-name"><a title="epydoc.apidoc.RoutineDoc.arg_descrs" class="py-name" href="#" onclick="return doclink('link-690', 'arg_descrs', 'link-670');">arg_descrs</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L2247"></a><tt class="py-lineno">2247</tt>  <tt class="py-line">                                              <tt class="py-name">div_class</tt><tt class="py-op">)</tt> </tt>
+<a name="L2248"></a><tt class="py-lineno">2248</tt>  <tt class="py-line"> </tt>
+<a name="L2249"></a><tt class="py-lineno">2249</tt>  <tt class="py-line">        <tt class="py-comment"># Properties</tt> </tt>
+<a name="L2250"></a><tt class="py-lineno">2250</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-691" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-691', 'value', 'link-61');">value</a></tt><tt class="py-op">,</tt> <tt id="link-692" class="py-name" ta [...]
+<a name="L2251"></a><tt class="py-lineno">2251</tt>  <tt class="py-line">            <tt class="py-name">prop_doc</tt> <tt class="py-op">=</tt> <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-693" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-693', 'value', 'link-61');">value</a></tt> </tt>
+<a name="L2252"></a><tt class="py-lineno">2252</tt>  <tt class="py-line">            <tt class="py-name">accessors</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> <tt class="py-op">(</tt><tt id="link-694" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-694', 'name', 'link-117');">name</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L2253"></a><tt class="py-lineno">2253</tt>  <tt class="py-line">                           <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-695" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.property_accessor_to_html()=epydoc.docwriter.html.HTMLWriter-class.html#property_accessor_to_html"><a title="epydoc.docwriter.html.HTMLWriter.property_accessor_to_html" class="py-name" href="#" onclick="return doclink('link-695', 'property_accessor_to_html [...]
+<a name="L2254"></a><tt class="py-lineno">2254</tt>  <tt class="py-line">                           <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-696" class="py-name"><a title="epydoc.apidoc.APIDoc.summary
+epydoc.docwriter.html.HTMLWriter.summary
+epydoc.markup.ConcatenatedDocstring.summary
+epydoc.markup.ParsedDocstring.summary
+epydoc.markup.epytext.ParsedEpytextDocstring.summary
+epydoc.markup.javadoc.ParsedJavadocDocstring.summary
+epydoc.markup.plaintext.ParsedPlaintextDocstring.summary
+epydoc.markup.restructuredtext.ParsedRstDocstring.summary" class="py-name" href="#" onclick="return doclink('link-696', 'summary', 'link-642');">summary</a></tt><tt class="py-op">(</tt><tt class="py-name">val_doc</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2255"></a><tt class="py-lineno">2255</tt>  <tt class="py-line">                         <tt class="py-keyword">for</tt> <tt class="py-op">(</tt><tt id="link-697" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-697', 'name', 'link-117');">name</a></tt><tt class="py-op">,</tt> <tt class="py-name">val_doc</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> </tt>
+<a name="L2256"></a><tt class="py-lineno">2256</tt>  <tt class="py-line">                            <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-string">'Get'</tt><tt class="py-op">,</tt> <tt class="py-name">prop_doc</tt><tt class="py-op">.</tt><tt id="link-698" class="py-name" targets="Variable epydoc.apidoc.PropertyDoc.fget=epydoc.apidoc.PropertyDoc-class.html#fget"><a title="epydoc.apidoc.PropertyDoc.fget" class="py-name" href="#" onclick="return doclink('link-698',  [...]
+<a name="L2257"></a><tt class="py-lineno">2257</tt>  <tt class="py-line">                             <tt class="py-op">(</tt><tt class="py-string">'Delete'</tt><tt class="py-op">,</tt> <tt class="py-name">prop_doc</tt><tt class="py-op">.</tt><tt id="link-700" class="py-name" targets="Variable epydoc.apidoc.PropertyDoc.fdel=epydoc.apidoc.PropertyDoc-class.html#fdel"><a title="epydoc.apidoc.PropertyDoc.fdel" class="py-name" href="#" onclick="return doclink('link-700', 'fdel', 'link-700'); [...]
+<a name="L2258"></a><tt class="py-lineno">2258</tt>  <tt class="py-line">                            <tt class="py-keyword">if</tt> <tt class="py-name">val_doc</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-701" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-701', 'UNKNOWN', 'link-229');">UNKNOWN</a></tt><tt class="py-op" [...]
+<a name="L2259"></a><tt class="py-lineno">2259</tt>  <tt class="py-line">                            <tt class="py-keyword">and</tt> <tt class="py-name">val_doc</tt><tt class="py-op">.</tt><tt id="link-702" class="py-name" targets="Variable epydoc.apidoc.ValueDoc.pyval=epydoc.apidoc.ValueDoc-class.html#pyval"><a title="epydoc.apidoc.ValueDoc.pyval" class="py-name" href="#" onclick="return doclink('link-702', 'pyval', 'link-702');">pyval</a></tt> <tt class="py-keyword">is</tt> <tt class=" [...]
+<a name="L2260"></a><tt class="py-lineno">2260</tt>  <tt class="py-line"> </tt>
+<a name="L2261"></a><tt class="py-lineno">2261</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-703" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.write_property_details_entry()=epydoc.docwriter.html.HTMLWriter-class.html#write_property_details_entry"><a title="epydoc.docwriter.html.HTMLWriter.write_property_details_entry" class="py-name" href="#" onclick="return doclink('link-703', 'write_property_details_entry',  [...]
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-704', 'descr', 'link-228');">descr</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L2262"></a><tt class="py-lineno">2262</tt>  <tt class="py-line">                                              <tt class="py-name">accessors</tt><tt class="py-op">,</tt> <tt class="py-name">div_class</tt><tt class="py-op">)</tt> </tt>
+<a name="L2263"></a><tt class="py-lineno">2263</tt>  <tt class="py-line">         </tt>
+<a name="L2264"></a><tt class="py-lineno">2264</tt>  <tt class="py-line">        <tt class="py-comment"># Variables</tt> </tt>
+<a name="L2265"></a><tt class="py-lineno">2265</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L2266"></a><tt class="py-lineno">2266</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-705" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.write_variable_details_entry()=epydoc.docwriter.html.HTMLWriter-class.html#write_variable_details_entry"><a title="epydoc.docwriter.html.HTMLWriter.write_variable_details_entry" class="py-name" href="#" onclick="return doclink('link-705', 'write_variable_details_entry',  [...]
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-706', 'descr', 'link-228');">descr</a></tt><tt class="py-op">,</tt> <tt class="py-name">div_class</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2267"></a><tt class="py-lineno">2267</tt>  <tt class="py-line"> </tt>
+<a name="HTMLWriter.labelled_list_item"></a><div id="HTMLWriter.labelled_list_item-def"><a name="L2268"></a><tt class="py-lineno">2268</tt> <a class="py-toggle" href="#" id="HTMLWriter.labelled_list_item-toggle" onclick="return toggle('HTMLWriter.labelled_list_item');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html.HTMLWriter-class.html#labelled_list_item">labelled_list_item</a><tt class="py-op">(</tt><tt class="py-param">s [...]
+</div><div id="HTMLWriter.labelled_list_item-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLWriter.labelled_list_item-expanded"><a name="L2269"></a><tt class="py-lineno">2269</tt>  <tt class="py-line">        <tt class="py-comment"># If the RHS starts with a paragraph, then move the</tt> </tt>
+<a name="L2270"></a><tt class="py-lineno">2270</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># paragraph-start tag to the beginning of the lhs instead (so</tt> </tt>
+<a name="L2271"></a><tt class="py-lineno">2271</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># there won't be a line break after the '-').</tt> </tt>
+<a name="L2272"></a><tt class="py-lineno">2272</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">match</tt><tt class="py-op">(</tt><tt class="py-string">r'^<p( [^>]+)?>'</tt><tt class="py-op">,</tt> <tt class="py-name">rhs</tt><tt class="py-op">)</tt> </tt>
+<a name="L2273"></a><tt class="py-lineno">2273</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">m</tt><tt class="py-op">:</tt> </tt>
+<a name="L2274"></a><tt class="py-lineno">2274</tt>  <tt class="py-line">            <tt class="py-name">lhs</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt class="py-name">group</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-name">lhs</tt> </tt>
+<a name="L2275"></a><tt class="py-lineno">2275</tt>  <tt class="py-line">            <tt class="py-name">rhs</tt> <tt class="py-op">=</tt> <tt class="py-name">rhs</tt><tt class="py-op">[</tt><tt class="py-name">m</tt><tt class="py-op">.</tt><tt class="py-name">end</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt>
+<a name="L2276"></a><tt class="py-lineno">2276</tt>  <tt class="py-line"> </tt>
+<a name="L2277"></a><tt class="py-lineno">2277</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">rhs</tt><tt class="py-op">:</tt> </tt>
+<a name="L2278"></a><tt class="py-lineno">2278</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">'<li>%s - %s</li>'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">lhs</tt><tt class="py-op">,</tt> <tt class="py-name">rhs</tt><tt class="py-op">)</tt> </tt>
+<a name="L2279"></a><tt class="py-lineno">2279</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L2280"></a><tt class="py-lineno">2280</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">'<li>%s</li>'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">lhs</tt><tt class="py-op">,</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2281"></a><tt class="py-lineno">2281</tt>  <tt class="py-line"> </tt>
+<a name="HTMLWriter.property_accessor_to_html"></a><div id="HTMLWriter.property_accessor_to_html-def"><a name="L2282"></a><tt class="py-lineno">2282</tt> <a class="py-toggle" href="#" id="HTMLWriter.property_accessor_to_html-toggle" onclick="return toggle('HTMLWriter.property_accessor_to_html');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html.HTMLWriter-class.html#property_accessor_to_html">property_accessor_to_html</a><tt  [...]
+</div><div id="HTMLWriter.property_accessor_to_html-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLWriter.property_accessor_to_html-expanded"><a name="L2283"></a><tt class="py-lineno">2283</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">val_doc</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-707" class="py-na [...]
+<a name="L2284"></a><tt class="py-lineno">2284</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">val_doc</tt><tt class="py-op">,</tt> <tt id="link-708" class="py-name"><a title="epydoc.apidoc.RoutineDoc" class="py-name" href="#" onclick="return doclink('link-708', 'RoutineDoc', 'link-57');">RoutineDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L2285"></a><tt class="py-lineno">2285</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-709" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.function_signature
+epydoc.docwriter.latex.LatexWriter.function_signature" class="py-name" href="#" onclick="return doclink('link-709', 'function_signature', 'link-621');">function_signature</a></tt><tt class="py-op">(</tt><tt class="py-name">val_doc</tt><tt class="py-op">,</tt> <tt class="py-name">is_summary</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> </tt>
+<a name="L2286"></a><tt class="py-lineno">2286</tt>  <tt class="py-line">                                               <tt class="py-name">link_name</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> <tt class="py-name">context</tt><tt class="py-op">=</tt><tt class="py-name">context</tt><tt class="py-op">)</tt> </tt>
+<a name="L2287"></a><tt class="py-lineno">2287</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">val_doc</tt><tt class="py-op">,</tt> <tt id="link-710" class="py-name"><a title="epydoc.apidoc.GenericValueDoc" class="py-name" href="#" onclick="return doclink('link-710', 'GenericValueDoc', 'link-58');">GenericValueDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L2288"></a><tt class="py-lineno">2288</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-711" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.pprint_value()=epydoc.docwriter.html.HTMLWriter-class.html#pprint_value"><a title="epydoc.docwriter.html.HTMLWriter.pprint_value" class="py-name" href="#" onclick="return doclink('link-711', 'pprint_value', 'link-711');">pprint_valu [...]
+<a name="L2289"></a><tt class="py-lineno">2289</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L2290"></a><tt class="py-lineno">2290</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-712" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.href" class="py-name" href="#" onclick="return doclink('link-712', 'href', 'link-254');">href</a></tt><tt class="py-op">(</tt><tt class="py-name">val_doc</tt><tt class="py-op">,</tt> <tt class="py-name">context</tt><tt class="py-op">=</tt [...]
+<a name="L2291"></a><tt class="py-lineno">2291</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L2292"></a><tt class="py-lineno">2292</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">'??'</tt> </tt>
+</div><a name="L2293"></a><tt class="py-lineno">2293</tt>  <tt class="py-line">         </tt>
+<a name="HTMLWriter.arg_name_to_html"></a><div id="HTMLWriter.arg_name_to_html-def"><a name="L2294"></a><tt class="py-lineno">2294</tt> <a class="py-toggle" href="#" id="HTMLWriter.arg_name_to_html-toggle" onclick="return toggle('HTMLWriter.arg_name_to_html');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html.HTMLWriter-class.html#arg_name_to_html">arg_name_to_html</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt  [...]
+</div><div id="HTMLWriter.arg_name_to_html-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLWriter.arg_name_to_html-expanded"><a name="L2295"></a><tt class="py-lineno">2295</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L2296"></a><tt class="py-lineno">2296</tt>  <tt class="py-line"><tt class="py-docstring">        A helper function used to format an argument name, for use in</tt> </tt>
+<a name="L2297"></a><tt class="py-lineno">2297</tt>  <tt class="py-line"><tt class="py-docstring">        the argument description list under a routine's details entry.</tt> </tt>
+<a name="L2298"></a><tt class="py-lineno">2298</tt>  <tt class="py-line"><tt class="py-docstring">        This just wraps strong & code tags around the arg name; and if</tt> </tt>
+<a name="L2299"></a><tt class="py-lineno">2299</tt>  <tt class="py-line"><tt class="py-docstring">        the arg name is associated with a type, then adds it</tt> </tt>
+<a name="L2300"></a><tt class="py-lineno">2300</tt>  <tt class="py-line"><tt class="py-docstring">        parenthetically after the name.</tt> </tt>
+<a name="L2301"></a><tt class="py-lineno">2301</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L2302"></a><tt class="py-lineno">2302</tt>  <tt class="py-line">        <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-string">'<strong class="pname"><code>%s</code></strong>'</tt> <tt class="py-op">%</tt> <tt class="py-name">arg_name</tt> </tt>
+<a name="L2303"></a><tt class="py-lineno">2303</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">arg_name</tt> <tt class="py-keyword">in</tt> <tt class="py-name">func_doc</tt><tt class="py-op">.</tt><tt id="link-713" class="py-name"><a title="epydoc.apidoc.RoutineDoc.arg_types" class="py-name" href="#" onclick="return doclink('link-713', 'arg_types', 'link-680');">arg_types</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L2304"></a><tt class="py-lineno">2304</tt>  <tt class="py-line">            <tt class="py-name">typ</tt> <tt class="py-op">=</tt> <tt class="py-name">func_doc</tt><tt class="py-op">.</tt><tt id="link-714" class="py-name"><a title="epydoc.apidoc.RoutineDoc.arg_types" class="py-name" href="#" onclick="return doclink('link-714', 'arg_types', 'link-680');">arg_types</a></tt><tt class="py-op">[</tt><tt class="py-name">arg_name</tt><tt class="py-op">]</tt> </tt>
+<a name="L2305"></a><tt class="py-lineno">2305</tt>  <tt class="py-line">            <tt class="py-name">typ_html</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-715" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.docstring_to_html" class="py-name" href="#" onclick="return doclink('link-715', 'docstring_to_html', 'link-383');">docstring_to_html</a></tt><tt class="py-op">(</tt><tt class="py-name">typ</tt><tt class="py-op">,</tt>  [...]
+<a name="L2306"></a><tt class="py-lineno">2306</tt>  <tt class="py-line">            <tt class="py-name">s</tt> <tt class="py-op">+=</tt> <tt class="py-string">" (%s)"</tt> <tt class="py-op">%</tt> <tt class="py-name">typ_html</tt> </tt>
+<a name="L2307"></a><tt class="py-lineno">2307</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">s</tt> </tt>
+</div><a name="L2308"></a><tt class="py-lineno">2308</tt>  <tt class="py-line"> </tt>
+<a name="L2309"></a><tt class="py-lineno">2309</tt>  <tt class="py-line">    <tt id="link-716" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_function_details_entry" class="py-name" href="#" onclick="return doclink('link-716', 'write_function_details_entry', 'link-686');">write_function_details_entry</a></tt> <tt class="py-op">=</tt> <tt id="link-717" class="py-name"><a title="epydoc.docwriter.html.compile_template" class="py-name" href="#" onclick="return doclink('link [...]
+<a name="L2310"></a><tt class="py-lineno">2310</tt>  <tt class="py-line">        <tt class="py-string">'''</tt> </tt>
+<a name="L2311"></a><tt class="py-lineno">2311</tt>  <tt class="py-line"><tt class="py-string">        write_function_details_entry(self, out, var_doc, descr, callgraph, \</tt> </tt>
+<a name="L2312"></a><tt class="py-lineno">2312</tt>  <tt class="py-line"><tt class="py-string">                                     rtype, rdescr, arg_descrs, div_class)</tt> </tt>
+<a name="L2313"></a><tt class="py-lineno">2313</tt>  <tt class="py-line"><tt class="py-string">        '''</tt><tt class="py-op">,</tt> </tt>
+<a name="L2314"></a><tt class="py-lineno">2314</tt>  <tt class="py-line">        <tt class="py-comment"># /------------------------- Template -------------------------\</tt> </tt>
+<a name="L2315"></a><tt class="py-lineno">2315</tt>  <tt class="py-line">        <tt class="py-string">'''</tt> </tt>
+<a name="L2316"></a><tt class="py-lineno">2316</tt>  <tt class="py-line"><tt class="py-string">        >>> func_doc = var_doc.value</tt> </tt>
+<a name="L2317"></a><tt class="py-lineno">2317</tt>  <tt class="py-line"><tt class="py-string">        <a name="$var_doc.name$"></a></tt> </tt>
+<a name="L2318"></a><tt class="py-lineno">2318</tt>  <tt class="py-line"><tt class="py-string">        <div$div_class$></tt> </tt>
+<a name="L2319"></a><tt class="py-lineno">2319</tt>  <tt class="py-line"><tt class="py-string">        >>> self.write_table_header(out, "details")</tt> </tt>
+<a name="L2320"></a><tt class="py-lineno">2320</tt>  <tt class="py-line"><tt class="py-string">        <tr><td></tt> </tt>
+<a name="L2321"></a><tt class="py-lineno">2321</tt>  <tt class="py-line"><tt class="py-string">          <table width="100%" cellpadding="0" cellspacing="0" border="0"></tt> </tt>
+<a name="L2322"></a><tt class="py-lineno">2322</tt>  <tt class="py-line"><tt class="py-string">          <tr valign="top"><td></tt> </tt>
+<a name="L2323"></a><tt class="py-lineno">2323</tt>  <tt class="py-line"><tt class="py-string">          <h3 class="epydoc">$self.function_signature(var_doc)$</tt> </tt>
+<a name="L2324"></a><tt class="py-lineno">2324</tt>  <tt class="py-line"><tt class="py-string">        >>> if var_doc.name in self.SPECIAL_METHODS:</tt> </tt>
+<a name="L2325"></a><tt class="py-lineno">2325</tt>  <tt class="py-line"><tt class="py-string">            <br /><em class="fname">($self.SPECIAL_METHODS[var_doc.name]$)</em></tt> </tt>
+<a name="L2326"></a><tt class="py-lineno">2326</tt>  <tt class="py-line"><tt class="py-string">        >>> #endif</tt> </tt>
+<a name="L2327"></a><tt class="py-lineno">2327</tt>  <tt class="py-line"><tt class="py-string">        >>> if isinstance(func_doc, ClassMethodDoc):</tt> </tt>
+<a name="L2328"></a><tt class="py-lineno">2328</tt>  <tt class="py-line"><tt class="py-string">            <br /><em class="fname">Class Method</em></tt> </tt>
+<a name="L2329"></a><tt class="py-lineno">2329</tt>  <tt class="py-line"><tt class="py-string">        >>> #endif</tt> </tt>
+<a name="L2330"></a><tt class="py-lineno">2330</tt>  <tt class="py-line"><tt class="py-string">        >>> if isinstance(func_doc, StaticMethodDoc):</tt> </tt>
+<a name="L2331"></a><tt class="py-lineno">2331</tt>  <tt class="py-line"><tt class="py-string">            <br /><em class="fname">Static Method</em></tt> </tt>
+<a name="L2332"></a><tt class="py-lineno">2332</tt>  <tt class="py-line"><tt class="py-string">        >>> #endif</tt> </tt>
+<a name="L2333"></a><tt class="py-lineno">2333</tt>  <tt class="py-line"><tt class="py-string">          </h3></tt> </tt>
+<a name="L2334"></a><tt class="py-lineno">2334</tt>  <tt class="py-line"><tt class="py-string">          </td><td align="right" valign="top"</tt> </tt>
+<a name="L2335"></a><tt class="py-lineno">2335</tt>  <tt class="py-line"><tt class="py-string">            >$self.pysrc_link(func_doc)$&nbsp;</tt> </tt>
+<a name="L2336"></a><tt class="py-lineno">2336</tt>  <tt class="py-line"><tt class="py-string">            $self.callgraph_link(callgraph)$</td></tt> </tt>
+<a name="L2337"></a><tt class="py-lineno">2337</tt>  <tt class="py-line"><tt class="py-string">          </tr></table></tt> </tt>
+<a name="L2338"></a><tt class="py-lineno">2338</tt>  <tt class="py-line"><tt class="py-string">          $self.render_callgraph(callgraph)$</tt> </tt>
+<a name="L2339"></a><tt class="py-lineno">2339</tt>  <tt class="py-line"><tt class="py-string">          $descr$</tt> </tt>
+<a name="L2340"></a><tt class="py-lineno">2340</tt>  <tt class="py-line"><tt class="py-string">          <dl class="fields"></tt> </tt>
+<a name="L2341"></a><tt class="py-lineno">2341</tt>  <tt class="py-line"><tt class="py-string">        >>> # === parameters ===</tt> </tt>
+<a name="L2342"></a><tt class="py-lineno">2342</tt>  <tt class="py-line"><tt class="py-string">        >>> if arg_descrs:</tt> </tt>
+<a name="L2343"></a><tt class="py-lineno">2343</tt>  <tt class="py-line"><tt class="py-string">            <dt>Parameters:</dt></tt> </tt>
+<a name="L2344"></a><tt class="py-lineno">2344</tt>  <tt class="py-line"><tt class="py-string">            <dd><ul class="nomargin-top"></tt> </tt>
+<a name="L2345"></a><tt class="py-lineno">2345</tt>  <tt class="py-line"><tt class="py-string">        >>>   for lhs, rhs in arg_descrs:</tt> </tt>
+<a name="L2346"></a><tt class="py-lineno">2346</tt>  <tt class="py-line"><tt class="py-string">                $self.labelled_list_item(lhs, rhs)$</tt> </tt>
+<a name="L2347"></a><tt class="py-lineno">2347</tt>  <tt class="py-line"><tt class="py-string">        >>>   #endfor</tt> </tt>
+<a name="L2348"></a><tt class="py-lineno">2348</tt>  <tt class="py-line"><tt class="py-string">            </ul></dd></tt> </tt>
+<a name="L2349"></a><tt class="py-lineno">2349</tt>  <tt class="py-line"><tt class="py-string">        >>> #endif</tt> </tt>
+<a name="L2350"></a><tt class="py-lineno">2350</tt>  <tt class="py-line"><tt class="py-string">        >>> # === return type ===</tt> </tt>
+<a name="L2351"></a><tt class="py-lineno">2351</tt>  <tt class="py-line"><tt class="py-string">        >>> if rdescr and rtype:</tt> </tt>
+<a name="L2352"></a><tt class="py-lineno">2352</tt>  <tt class="py-line"><tt class="py-string">            <dt>Returns: $rtype$</dt></tt> </tt>
+<a name="L2353"></a><tt class="py-lineno">2353</tt>  <tt class="py-line"><tt class="py-string">                <dd>$rdescr$</dd></tt> </tt>
+<a name="L2354"></a><tt class="py-lineno">2354</tt>  <tt class="py-line"><tt class="py-string">        >>> elif rdescr:</tt> </tt>
+<a name="L2355"></a><tt class="py-lineno">2355</tt>  <tt class="py-line"><tt class="py-string">            <dt>Returns:</dt></tt> </tt>
+<a name="L2356"></a><tt class="py-lineno">2356</tt>  <tt class="py-line"><tt class="py-string">                <dd>$rdescr$</dd></tt> </tt>
+<a name="L2357"></a><tt class="py-lineno">2357</tt>  <tt class="py-line"><tt class="py-string">        >>> elif rtype:</tt> </tt>
+<a name="L2358"></a><tt class="py-lineno">2358</tt>  <tt class="py-line"><tt class="py-string">            <dt>Returns: $rtype$</dt></tt> </tt>
+<a name="L2359"></a><tt class="py-lineno">2359</tt>  <tt class="py-line"><tt class="py-string">        >>> #endif</tt> </tt>
+<a name="L2360"></a><tt class="py-lineno">2360</tt>  <tt class="py-line"><tt class="py-string">        >>> # === decorators ===</tt> </tt>
+<a name="L2361"></a><tt class="py-lineno">2361</tt>  <tt class="py-line"><tt class="py-string">        >>> if func_doc.decorators not in (None, UNKNOWN):</tt> </tt>
+<a name="L2362"></a><tt class="py-lineno">2362</tt>  <tt class="py-line"><tt class="py-string">        >>>   # (staticmethod & classmethod are already shown, above)</tt> </tt>
+<a name="L2363"></a><tt class="py-lineno">2363</tt>  <tt class="py-line"><tt class="py-string">        >>>   decos = filter(lambda deco:</tt> </tt>
+<a name="L2364"></a><tt class="py-lineno">2364</tt>  <tt class="py-line"><tt class="py-string">        >>>     not ((deco=="staticmethod" and</tt> </tt>
+<a name="L2365"></a><tt class="py-lineno">2365</tt>  <tt class="py-line"><tt class="py-string">        >>>            isinstance(func_doc, StaticMethodDoc)) or</tt> </tt>
+<a name="L2366"></a><tt class="py-lineno">2366</tt>  <tt class="py-line"><tt class="py-string">        >>>          (deco=="classmethod" and</tt> </tt>
+<a name="L2367"></a><tt class="py-lineno">2367</tt>  <tt class="py-line"><tt class="py-string">        >>>           isinstance(func_doc, ClassMethodDoc))),</tt> </tt>
+<a name="L2368"></a><tt class="py-lineno">2368</tt>  <tt class="py-line"><tt class="py-string">        >>>     func_doc.decorators)</tt> </tt>
+<a name="L2369"></a><tt class="py-lineno">2369</tt>  <tt class="py-line"><tt class="py-string">        >>> else:</tt> </tt>
+<a name="L2370"></a><tt class="py-lineno">2370</tt>  <tt class="py-line"><tt class="py-string">        >>>   decos = None</tt> </tt>
+<a name="L2371"></a><tt class="py-lineno">2371</tt>  <tt class="py-line"><tt class="py-string">        >>> #endif</tt> </tt>
+<a name="L2372"></a><tt class="py-lineno">2372</tt>  <tt class="py-line"><tt class="py-string">        >>> if decos:</tt> </tt>
+<a name="L2373"></a><tt class="py-lineno">2373</tt>  <tt class="py-line"><tt class="py-string">            <dt>Decorators:</dt></tt> </tt>
+<a name="L2374"></a><tt class="py-lineno">2374</tt>  <tt class="py-line"><tt class="py-string">            <dd><ul class="nomargin-top"></tt> </tt>
+<a name="L2375"></a><tt class="py-lineno">2375</tt>  <tt class="py-line"><tt class="py-string">        >>>   for deco in decos:</tt> </tt>
+<a name="L2376"></a><tt class="py-lineno">2376</tt>  <tt class="py-line"><tt class="py-string">                <li><code>@$deco$</code></li></tt> </tt>
+<a name="L2377"></a><tt class="py-lineno">2377</tt>  <tt class="py-line"><tt class="py-string">        >>>   #endfor</tt> </tt>
+<a name="L2378"></a><tt class="py-lineno">2378</tt>  <tt class="py-line"><tt class="py-string">            </ul></dd></tt> </tt>
+<a name="L2379"></a><tt class="py-lineno">2379</tt>  <tt class="py-line"><tt class="py-string">        >>> #endif</tt> </tt>
+<a name="L2380"></a><tt class="py-lineno">2380</tt>  <tt class="py-line"><tt class="py-string">        >>> # === exceptions ===</tt> </tt>
+<a name="L2381"></a><tt class="py-lineno">2381</tt>  <tt class="py-line"><tt class="py-string">        >>> if func_doc.exception_descrs not in (None, UNKNOWN, (), []):</tt> </tt>
+<a name="L2382"></a><tt class="py-lineno">2382</tt>  <tt class="py-line"><tt class="py-string">            <dt>Raises:</dt></tt> </tt>
+<a name="L2383"></a><tt class="py-lineno">2383</tt>  <tt class="py-line"><tt class="py-string">            <dd><ul class="nomargin-top"></tt> </tt>
+<a name="L2384"></a><tt class="py-lineno">2384</tt>  <tt class="py-line"><tt class="py-string">        >>>   for name, descr in func_doc.exception_descrs:</tt> </tt>
+<a name="L2385"></a><tt class="py-lineno">2385</tt>  <tt class="py-line"><tt class="py-string">        >>>     exc_name = self.docindex.find(name, func_doc)</tt> </tt>
+<a name="L2386"></a><tt class="py-lineno">2386</tt>  <tt class="py-line"><tt class="py-string">        >>>     if exc_name is not None:</tt> </tt>
+<a name="L2387"></a><tt class="py-lineno">2387</tt>  <tt class="py-line"><tt class="py-string">        >>>       name = self.href(exc_name, label=str(name))</tt> </tt>
+<a name="L2388"></a><tt class="py-lineno">2388</tt>  <tt class="py-line"><tt class="py-string">        >>>     #endif</tt> </tt>
+<a name="L2389"></a><tt class="py-lineno">2389</tt>  <tt class="py-line"><tt class="py-string">                $self.labelled_list_item(</tt> </tt>
+<a name="L2390"></a><tt class="py-lineno">2390</tt>  <tt class="py-line"><tt class="py-string">                    "<code><strong class=\'fraise\'>" +</tt> </tt>
+<a name="L2391"></a><tt class="py-lineno">2391</tt>  <tt class="py-line"><tt class="py-string">                    str(name) + "</strong></code>",</tt> </tt>
+<a name="L2392"></a><tt class="py-lineno">2392</tt>  <tt class="py-line"><tt class="py-string">                    self.docstring_to_html(descr, func_doc, 8))$</tt> </tt>
+<a name="L2393"></a><tt class="py-lineno">2393</tt>  <tt class="py-line"><tt class="py-string">        >>>   #endfor</tt> </tt>
+<a name="L2394"></a><tt class="py-lineno">2394</tt>  <tt class="py-line"><tt class="py-string">            </ul></dd></tt> </tt>
+<a name="L2395"></a><tt class="py-lineno">2395</tt>  <tt class="py-line"><tt class="py-string">        >>> #endif</tt> </tt>
+<a name="L2396"></a><tt class="py-lineno">2396</tt>  <tt class="py-line"><tt class="py-string">        >>> # === overrides ===</tt> </tt>
+<a name="L2397"></a><tt class="py-lineno">2397</tt>  <tt class="py-line"><tt class="py-string">        >>> if var_doc.overrides not in (None, UNKNOWN):</tt> </tt>
+<a name="L2398"></a><tt class="py-lineno">2398</tt>  <tt class="py-line"><tt class="py-string">            <dt>Overrides:</tt> </tt>
+<a name="L2399"></a><tt class="py-lineno">2399</tt>  <tt class="py-line"><tt class="py-string">        >>>   # Avoid passing GenericValueDoc to href()</tt> </tt>
+<a name="L2400"></a><tt class="py-lineno">2400</tt>  <tt class="py-line"><tt class="py-string">        >>>   if isinstance(var_doc.overrides.value, RoutineDoc):</tt> </tt>
+<a name="L2401"></a><tt class="py-lineno">2401</tt>  <tt class="py-line"><tt class="py-string">                $self.href(var_doc.overrides.value, context=var_doc)$</tt> </tt>
+<a name="L2402"></a><tt class="py-lineno">2402</tt>  <tt class="py-line"><tt class="py-string">        >>>   else:</tt> </tt>
+<a name="L2403"></a><tt class="py-lineno">2403</tt>  <tt class="py-line"><tt class="py-string">        >>>     # In this case, a less interesting label is generated.</tt> </tt>
+<a name="L2404"></a><tt class="py-lineno">2404</tt>  <tt class="py-line"><tt class="py-string">                $self.href(var_doc.overrides, context=var_doc)$</tt> </tt>
+<a name="L2405"></a><tt class="py-lineno">2405</tt>  <tt class="py-line"><tt class="py-string">        >>>   #endif</tt> </tt>
+<a name="L2406"></a><tt class="py-lineno">2406</tt>  <tt class="py-line"><tt class="py-string">        >>>   if (func_doc.docstring in (None, UNKNOWN) and</tt> </tt>
+<a name="L2407"></a><tt class="py-lineno">2407</tt>  <tt class="py-line"><tt class="py-string">        >>>       var_doc.overrides.value.docstring not in (None, UNKNOWN)):</tt> </tt>
+<a name="L2408"></a><tt class="py-lineno">2408</tt>  <tt class="py-line"><tt class="py-string">                <dd><em class="note">(inherited documentation)</em></dd></tt> </tt>
+<a name="L2409"></a><tt class="py-lineno">2409</tt>  <tt class="py-line"><tt class="py-string">        >>>   #endif</tt> </tt>
+<a name="L2410"></a><tt class="py-lineno">2410</tt>  <tt class="py-line"><tt class="py-string">            </dt></tt> </tt>
+<a name="L2411"></a><tt class="py-lineno">2411</tt>  <tt class="py-line"><tt class="py-string">        >>> #endif</tt> </tt>
+<a name="L2412"></a><tt class="py-lineno">2412</tt>  <tt class="py-line"><tt class="py-string">          </dl></tt> </tt>
+<a name="L2413"></a><tt class="py-lineno">2413</tt>  <tt class="py-line"><tt class="py-string">        >>> # === metadata ===</tt> </tt>
+<a name="L2414"></a><tt class="py-lineno">2414</tt>  <tt class="py-line"><tt class="py-string">        >>> self.write_standard_fields(out, func_doc)</tt> </tt>
+<a name="L2415"></a><tt class="py-lineno">2415</tt>  <tt class="py-line"><tt class="py-string">        </td></tr></table></tt> </tt>
+<a name="L2416"></a><tt class="py-lineno">2416</tt>  <tt class="py-line"><tt class="py-string">        </div></tt> </tt>
+<a name="L2417"></a><tt class="py-lineno">2417</tt>  <tt class="py-line"><tt class="py-string">        '''</tt><tt class="py-op">)</tt> </tt>
+<a name="L2418"></a><tt class="py-lineno">2418</tt>  <tt class="py-line">        <tt class="py-comment"># \------------------------------------------------------------/</tt> </tt>
+<a name="L2419"></a><tt class="py-lineno">2419</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L2420"></a><tt class="py-lineno">2420</tt>  <tt class="py-line">    <tt class="py-comment"># Names for the __special__ methods.</tt> </tt>
+<a name="L2421"></a><tt class="py-lineno">2421</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-718" class="py-name" targets="Variable epydoc.docwriter.html.HTMLWriter.SPECIAL_METHODS=epydoc.docwriter.html.HTMLWriter-class.html#SPECIAL_METHODS"><a title="epydoc.docwriter.html.HTMLWriter.SPECIAL_METHODS" class="py-name" href="#" onclick="return doclink('link-718', 'SPECIAL_METHODS', 'link-718');">SPECIAL_METHODS</a></tt> <tt class="py-op">=</tt><tt class="py-op">{</t [...]
+<a name="L2422"></a><tt class="py-lineno">2422</tt>  <tt class="py-line">    <tt class="py-string">'__init__'</tt><tt class="py-op">:</tt> <tt class="py-string">'Constructor'</tt><tt class="py-op">,</tt> </tt>
+<a name="L2423"></a><tt class="py-lineno">2423</tt>  <tt class="py-line">    <tt class="py-string">'__del__'</tt><tt class="py-op">:</tt> <tt class="py-string">'Destructor'</tt><tt class="py-op">,</tt> </tt>
+<a name="L2424"></a><tt class="py-lineno">2424</tt>  <tt class="py-line">    <tt class="py-string">'__add__'</tt><tt class="py-op">:</tt> <tt class="py-string">'Addition operator'</tt><tt class="py-op">,</tt> </tt>
+<a name="L2425"></a><tt class="py-lineno">2425</tt>  <tt class="py-line">    <tt class="py-string">'__sub__'</tt><tt class="py-op">:</tt> <tt class="py-string">'Subtraction operator'</tt><tt class="py-op">,</tt> </tt>
+<a name="L2426"></a><tt class="py-lineno">2426</tt>  <tt class="py-line">    <tt class="py-string">'__and__'</tt><tt class="py-op">:</tt> <tt class="py-string">'And operator'</tt><tt class="py-op">,</tt> </tt>
+<a name="L2427"></a><tt class="py-lineno">2427</tt>  <tt class="py-line">    <tt class="py-string">'__or__'</tt><tt class="py-op">:</tt> <tt class="py-string">'Or operator'</tt><tt class="py-op">,</tt> </tt>
+<a name="L2428"></a><tt class="py-lineno">2428</tt>  <tt class="py-line">    <tt class="py-string">'__xor__'</tt><tt class="py-op">:</tt> <tt class="py-string">'Exclusive-Or operator'</tt><tt class="py-op">,</tt> </tt>
+<a name="L2429"></a><tt class="py-lineno">2429</tt>  <tt class="py-line">    <tt class="py-string">'__repr__'</tt><tt class="py-op">:</tt> <tt class="py-string">'Representation operator'</tt><tt class="py-op">,</tt> </tt>
+<a name="L2430"></a><tt class="py-lineno">2430</tt>  <tt class="py-line">    <tt class="py-string">'__call__'</tt><tt class="py-op">:</tt> <tt class="py-string">'Call operator'</tt><tt class="py-op">,</tt> </tt>
+<a name="L2431"></a><tt class="py-lineno">2431</tt>  <tt class="py-line">    <tt class="py-string">'__getattr__'</tt><tt class="py-op">:</tt> <tt class="py-string">'Qualification operator'</tt><tt class="py-op">,</tt> </tt>
+<a name="L2432"></a><tt class="py-lineno">2432</tt>  <tt class="py-line">    <tt class="py-string">'__getitem__'</tt><tt class="py-op">:</tt> <tt class="py-string">'Indexing operator'</tt><tt class="py-op">,</tt> </tt>
+<a name="L2433"></a><tt class="py-lineno">2433</tt>  <tt class="py-line">    <tt class="py-string">'__setitem__'</tt><tt class="py-op">:</tt> <tt class="py-string">'Index assignment operator'</tt><tt class="py-op">,</tt> </tt>
+<a name="L2434"></a><tt class="py-lineno">2434</tt>  <tt class="py-line">    <tt class="py-string">'__delitem__'</tt><tt class="py-op">:</tt> <tt class="py-string">'Index deletion operator'</tt><tt class="py-op">,</tt> </tt>
+<a name="L2435"></a><tt class="py-lineno">2435</tt>  <tt class="py-line">    <tt class="py-string">'__delslice__'</tt><tt class="py-op">:</tt> <tt class="py-string">'Slice deletion operator'</tt><tt class="py-op">,</tt> </tt>
+<a name="L2436"></a><tt class="py-lineno">2436</tt>  <tt class="py-line">    <tt class="py-string">'__setslice__'</tt><tt class="py-op">:</tt> <tt class="py-string">'Slice assignment operator'</tt><tt class="py-op">,</tt> </tt>
+<a name="L2437"></a><tt class="py-lineno">2437</tt>  <tt class="py-line">    <tt class="py-string">'__getslice__'</tt><tt class="py-op">:</tt> <tt class="py-string">'Slicling operator'</tt><tt class="py-op">,</tt> </tt>
+<a name="L2438"></a><tt class="py-lineno">2438</tt>  <tt class="py-line">    <tt class="py-string">'__len__'</tt><tt class="py-op">:</tt> <tt class="py-string">'Length operator'</tt><tt class="py-op">,</tt> </tt>
+<a name="L2439"></a><tt class="py-lineno">2439</tt>  <tt class="py-line">    <tt class="py-string">'__cmp__'</tt><tt class="py-op">:</tt> <tt class="py-string">'Comparison operator'</tt><tt class="py-op">,</tt> </tt>
+<a name="L2440"></a><tt class="py-lineno">2440</tt>  <tt class="py-line">    <tt class="py-string">'__eq__'</tt><tt class="py-op">:</tt> <tt class="py-string">'Equality operator'</tt><tt class="py-op">,</tt> </tt>
+<a name="L2441"></a><tt class="py-lineno">2441</tt>  <tt class="py-line">    <tt class="py-string">'__in__'</tt><tt class="py-op">:</tt> <tt class="py-string">'Containership operator'</tt><tt class="py-op">,</tt> </tt>
+<a name="L2442"></a><tt class="py-lineno">2442</tt>  <tt class="py-line">    <tt class="py-string">'__gt__'</tt><tt class="py-op">:</tt> <tt class="py-string">'Greater-than operator'</tt><tt class="py-op">,</tt> </tt>
+<a name="L2443"></a><tt class="py-lineno">2443</tt>  <tt class="py-line">    <tt class="py-string">'__lt__'</tt><tt class="py-op">:</tt> <tt class="py-string">'Less-than operator'</tt><tt class="py-op">,</tt> </tt>
+<a name="L2444"></a><tt class="py-lineno">2444</tt>  <tt class="py-line">    <tt class="py-string">'__ge__'</tt><tt class="py-op">:</tt> <tt class="py-string">'Greater-than-or-equals operator'</tt><tt class="py-op">,</tt> </tt>
+<a name="L2445"></a><tt class="py-lineno">2445</tt>  <tt class="py-line">    <tt class="py-string">'__le__'</tt><tt class="py-op">:</tt> <tt class="py-string">'Less-than-or-equals operator'</tt><tt class="py-op">,</tt> </tt>
+<a name="L2446"></a><tt class="py-lineno">2446</tt>  <tt class="py-line">    <tt class="py-string">'__radd__'</tt><tt class="py-op">:</tt> <tt class="py-string">'Right-side addition operator'</tt><tt class="py-op">,</tt> </tt>
+<a name="L2447"></a><tt class="py-lineno">2447</tt>  <tt class="py-line">    <tt class="py-string">'__hash__'</tt><tt class="py-op">:</tt> <tt class="py-string">'Hashing function'</tt><tt class="py-op">,</tt> </tt>
+<a name="L2448"></a><tt class="py-lineno">2448</tt>  <tt class="py-line">    <tt class="py-string">'__contains__'</tt><tt class="py-op">:</tt> <tt class="py-string">'In operator'</tt><tt class="py-op">,</tt> </tt>
+<a name="L2449"></a><tt class="py-lineno">2449</tt>  <tt class="py-line">    <tt class="py-string">'__nonzero__'</tt><tt class="py-op">:</tt> <tt class="py-string">'Boolean test operator'</tt><tt class="py-op">,</tt> </tt>
+<a name="L2450"></a><tt class="py-lineno">2450</tt>  <tt class="py-line">    <tt class="py-string">'__str__'</tt><tt class="py-op">:</tt> <tt class="py-string">'Informal representation operator'</tt><tt class="py-op">,</tt> </tt>
+<a name="L2451"></a><tt class="py-lineno">2451</tt>  <tt class="py-line">    <tt class="py-op">}</tt> </tt>
+<a name="L2452"></a><tt class="py-lineno">2452</tt>  <tt class="py-line"> </tt>
+<a name="L2453"></a><tt class="py-lineno">2453</tt>  <tt class="py-line">    <tt id="link-719" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_property_details_entry" class="py-name" href="#" onclick="return doclink('link-719', 'write_property_details_entry', 'link-703');">write_property_details_entry</a></tt> <tt class="py-op">=</tt> <tt id="link-720" class="py-name"><a title="epydoc.docwriter.html.compile_template" class="py-name" href="#" onclick="return doclink('link [...]
+<a name="L2454"></a><tt class="py-lineno">2454</tt>  <tt class="py-line">        <tt class="py-string">'''</tt> </tt>
+<a name="L2455"></a><tt class="py-lineno">2455</tt>  <tt class="py-line"><tt class="py-string">        write_property_details_entry(self, out, var_doc, descr, \</tt> </tt>
+<a name="L2456"></a><tt class="py-lineno">2456</tt>  <tt class="py-line"><tt class="py-string">                                     accessors, div_class)</tt> </tt>
+<a name="L2457"></a><tt class="py-lineno">2457</tt>  <tt class="py-line"><tt class="py-string">        '''</tt><tt class="py-op">,</tt> </tt>
+<a name="L2458"></a><tt class="py-lineno">2458</tt>  <tt class="py-line">        <tt class="py-comment"># /------------------------- Template -------------------------\</tt> </tt>
+<a name="L2459"></a><tt class="py-lineno">2459</tt>  <tt class="py-line">        <tt class="py-string">'''</tt> </tt>
+<a name="L2460"></a><tt class="py-lineno">2460</tt>  <tt class="py-line"><tt class="py-string">        >>> prop_doc = var_doc.value</tt> </tt>
+<a name="L2461"></a><tt class="py-lineno">2461</tt>  <tt class="py-line"><tt class="py-string">        <a name="$var_doc.name$"></a></tt> </tt>
+<a name="L2462"></a><tt class="py-lineno">2462</tt>  <tt class="py-line"><tt class="py-string">        <div$div_class$></tt> </tt>
+<a name="L2463"></a><tt class="py-lineno">2463</tt>  <tt class="py-line"><tt class="py-string">        >>> self.write_table_header(out, "details")</tt> </tt>
+<a name="L2464"></a><tt class="py-lineno">2464</tt>  <tt class="py-line"><tt class="py-string">        <tr><td></tt> </tt>
+<a name="L2465"></a><tt class="py-lineno">2465</tt>  <tt class="py-line"><tt class="py-string">          <h3 class="epydoc">$var_doc.name$</h3></tt> </tt>
+<a name="L2466"></a><tt class="py-lineno">2466</tt>  <tt class="py-line"><tt class="py-string">          $descr$</tt> </tt>
+<a name="L2467"></a><tt class="py-lineno">2467</tt>  <tt class="py-line"><tt class="py-string">          <dl class="fields"></tt> </tt>
+<a name="L2468"></a><tt class="py-lineno">2468</tt>  <tt class="py-line"><tt class="py-string">        >>> for (name, val, summary) in accessors:</tt> </tt>
+<a name="L2469"></a><tt class="py-lineno">2469</tt>  <tt class="py-line"><tt class="py-string">            <dt>$name$ Method:</dt></tt> </tt>
+<a name="L2470"></a><tt class="py-lineno">2470</tt>  <tt class="py-line"><tt class="py-string">            <dd class="value">$val$</tt> </tt>
+<a name="L2471"></a><tt class="py-lineno">2471</tt>  <tt class="py-line"><tt class="py-string">        >>>     if summary:</tt> </tt>
+<a name="L2472"></a><tt class="py-lineno">2472</tt>  <tt class="py-line"><tt class="py-string">                - $summary$</tt> </tt>
+<a name="L2473"></a><tt class="py-lineno">2473</tt>  <tt class="py-line"><tt class="py-string">        >>>     #endif</tt> </tt>
+<a name="L2474"></a><tt class="py-lineno">2474</tt>  <tt class="py-line"><tt class="py-string">            </dd></tt> </tt>
+<a name="L2475"></a><tt class="py-lineno">2475</tt>  <tt class="py-line"><tt class="py-string">        >>> #endfor</tt> </tt>
+<a name="L2476"></a><tt class="py-lineno">2476</tt>  <tt class="py-line"><tt class="py-string">        >>> if prop_doc.type_descr not in (None, UNKNOWN):</tt> </tt>
+<a name="L2477"></a><tt class="py-lineno">2477</tt>  <tt class="py-line"><tt class="py-string">            <dt>Type:</dt></tt> </tt>
+<a name="L2478"></a><tt class="py-lineno">2478</tt>  <tt class="py-line"><tt class="py-string">              <dd>$self.type_descr(var_doc, indent=6)$</dd></tt> </tt>
+<a name="L2479"></a><tt class="py-lineno">2479</tt>  <tt class="py-line"><tt class="py-string">        >>> #endif</tt> </tt>
+<a name="L2480"></a><tt class="py-lineno">2480</tt>  <tt class="py-line"><tt class="py-string">          </dl></tt> </tt>
+<a name="L2481"></a><tt class="py-lineno">2481</tt>  <tt class="py-line"><tt class="py-string">        >>> self.write_standard_fields(out, prop_doc)</tt> </tt>
+<a name="L2482"></a><tt class="py-lineno">2482</tt>  <tt class="py-line"><tt class="py-string">        </td></tr></table></tt> </tt>
+<a name="L2483"></a><tt class="py-lineno">2483</tt>  <tt class="py-line"><tt class="py-string">        </div></tt> </tt>
+<a name="L2484"></a><tt class="py-lineno">2484</tt>  <tt class="py-line"><tt class="py-string">        '''</tt><tt class="py-op">)</tt> </tt>
+<a name="L2485"></a><tt class="py-lineno">2485</tt>  <tt class="py-line">        <tt class="py-comment"># \------------------------------------------------------------/</tt> </tt>
+<a name="L2486"></a><tt class="py-lineno">2486</tt>  <tt class="py-line"><tt class="py-comment"></tt>         </tt>
+<a name="L2487"></a><tt class="py-lineno">2487</tt>  <tt class="py-line">    <tt id="link-721" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_variable_details_entry" class="py-name" href="#" onclick="return doclink('link-721', 'write_variable_details_entry', 'link-705');">write_variable_details_entry</a></tt> <tt class="py-op">=</tt> <tt id="link-722" class="py-name"><a title="epydoc.docwriter.html.compile_template" class="py-name" href="#" onclick="return doclink('link [...]
+<a name="L2488"></a><tt class="py-lineno">2488</tt>  <tt class="py-line">        <tt class="py-string">'''</tt> </tt>
+<a name="L2489"></a><tt class="py-lineno">2489</tt>  <tt class="py-line"><tt class="py-string">        write_variable_details_entry(self, out, var_doc, descr, div_class)</tt> </tt>
+<a name="L2490"></a><tt class="py-lineno">2490</tt>  <tt class="py-line"><tt class="py-string">        '''</tt><tt class="py-op">,</tt> </tt>
+<a name="L2491"></a><tt class="py-lineno">2491</tt>  <tt class="py-line">        <tt class="py-comment"># /------------------------- Template -------------------------\</tt> </tt>
+<a name="L2492"></a><tt class="py-lineno">2492</tt>  <tt class="py-line">        <tt class="py-string">'''</tt> </tt>
+<a name="L2493"></a><tt class="py-lineno">2493</tt>  <tt class="py-line"><tt class="py-string">        <a name="$var_doc.name$"></a></tt> </tt>
+<a name="L2494"></a><tt class="py-lineno">2494</tt>  <tt class="py-line"><tt class="py-string">        <div$div_class$></tt> </tt>
+<a name="L2495"></a><tt class="py-lineno">2495</tt>  <tt class="py-line"><tt class="py-string">        >>> self.write_table_header(out, "details")</tt> </tt>
+<a name="L2496"></a><tt class="py-lineno">2496</tt>  <tt class="py-line"><tt class="py-string">        <tr><td></tt> </tt>
+<a name="L2497"></a><tt class="py-lineno">2497</tt>  <tt class="py-line"><tt class="py-string">          <h3 class="epydoc">$var_doc.name$</h3></tt> </tt>
+<a name="L2498"></a><tt class="py-lineno">2498</tt>  <tt class="py-line"><tt class="py-string">          $descr$</tt> </tt>
+<a name="L2499"></a><tt class="py-lineno">2499</tt>  <tt class="py-line"><tt class="py-string">          <dl class="fields"></tt> </tt>
+<a name="L2500"></a><tt class="py-lineno">2500</tt>  <tt class="py-line"><tt class="py-string">        >>> if var_doc.type_descr not in (None, UNKNOWN):</tt> </tt>
+<a name="L2501"></a><tt class="py-lineno">2501</tt>  <tt class="py-line"><tt class="py-string">            <dt>Type:</dt></tt> </tt>
+<a name="L2502"></a><tt class="py-lineno">2502</tt>  <tt class="py-line"><tt class="py-string">              <dd>$self.type_descr(var_doc, indent=6)$</dd></tt> </tt>
+<a name="L2503"></a><tt class="py-lineno">2503</tt>  <tt class="py-line"><tt class="py-string">        >>> #endif</tt> </tt>
+<a name="L2504"></a><tt class="py-lineno">2504</tt>  <tt class="py-line"><tt class="py-string">          </dl></tt> </tt>
+<a name="L2505"></a><tt class="py-lineno">2505</tt>  <tt class="py-line"><tt class="py-string">        >>> self.write_standard_fields(out, var_doc)</tt> </tt>
+<a name="L2506"></a><tt class="py-lineno">2506</tt>  <tt class="py-line"><tt class="py-string">        >>> if var_doc.value is not UNKNOWN:</tt> </tt>
+<a name="L2507"></a><tt class="py-lineno">2507</tt>  <tt class="py-line"><tt class="py-string">          <dl class="fields"></tt> </tt>
+<a name="L2508"></a><tt class="py-lineno">2508</tt>  <tt class="py-line"><tt class="py-string">            <dt>Value:</dt></tt> </tt>
+<a name="L2509"></a><tt class="py-lineno">2509</tt>  <tt class="py-line"><tt class="py-string">              <dd>$self.pprint_value(var_doc.value)$</dd></tt> </tt>
+<a name="L2510"></a><tt class="py-lineno">2510</tt>  <tt class="py-line"><tt class="py-string">          </dl></tt> </tt>
+<a name="L2511"></a><tt class="py-lineno">2511</tt>  <tt class="py-line"><tt class="py-string">        >>> #endif</tt> </tt>
+<a name="L2512"></a><tt class="py-lineno">2512</tt>  <tt class="py-line"><tt class="py-string">        </td></tr></table></tt> </tt>
+<a name="L2513"></a><tt class="py-lineno">2513</tt>  <tt class="py-line"><tt class="py-string">        </div></tt> </tt>
+<a name="L2514"></a><tt class="py-lineno">2514</tt>  <tt class="py-line"><tt class="py-string">        '''</tt><tt class="py-op">)</tt> </tt>
+<a name="L2515"></a><tt class="py-lineno">2515</tt>  <tt class="py-line">        <tt class="py-comment"># \------------------------------------------------------------/</tt> </tt>
+<a name="L2516"></a><tt class="py-lineno">2516</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="HTMLWriter.variable_tooltip"></a><div id="HTMLWriter.variable_tooltip-def"><a name="L2517"></a><tt class="py-lineno">2517</tt> <a class="py-toggle" href="#" id="HTMLWriter.variable_tooltip-toggle" onclick="return toggle('HTMLWriter.variable_tooltip');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html.HTMLWriter-class.html#variable_tooltip">variable_tooltip</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt  [...]
+</div><div id="HTMLWriter.variable_tooltip-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLWriter.variable_tooltip-expanded"><a name="L2518"></a><tt class="py-lineno">2518</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-723" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-723', 'value', 'link-61');">value< [...]
+<a name="L2519"></a><tt class="py-lineno">2519</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">''</tt> </tt>
+<a name="L2520"></a><tt class="py-lineno">2520</tt>  <tt class="py-line">        <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-725" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-725', 'value', 'link-61');">value</a></tt><tt class="py-op">.</tt><tt id="link-726" class="py-name" targets="Method epydoc.apidoc.ValueDoc.pyval_repr()=epydoc.apidoc.Value [...]
+epydoc.markup.pyval_repr" class="py-name" href="#" onclick="return doclink('link-726', 'pyval_repr', 'link-726');">pyval_repr</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-727" class="py-name" targets="Method epydoc.markup.ConcatenatedDocstring.to_plaintext()=epydoc.markup.ConcatenatedDocstring-class.html#to_plaintext,Method epydoc.markup.ParsedDocstring.to_plaintext()=epydoc.markup.ParsedDocstring-class.html#to_plaintext,Method epydoc.marku [...]
+epydoc.markup.ParsedDocstring.to_plaintext
+epydoc.markup.epytext.ParsedEpytextDocstring.to_plaintext
+epydoc.markup.epytext.to_plaintext
+epydoc.markup.javadoc.ParsedJavadocDocstring.to_plaintext
+epydoc.markup.plaintext.ParsedPlaintextDocstring.to_plaintext
+epydoc.markup.restructuredtext.ParsedRstDocstring.to_plaintext" class="py-name" href="#" onclick="return doclink('link-727', 'to_plaintext', 'link-727');">to_plaintext</a></tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+<a name="L2521"></a><tt class="py-lineno">2521</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_variable_tooltip_linelen</tt><tt class="py-op">:</tt> </tt>
+<a name="L2522"></a><tt class="py-lineno">2522</tt>  <tt class="py-line">            <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">s</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_variable_tooltip_linelen</tt><tt class="py-op">-</tt><tt class="py-number">3</tt><tt class="py-op">]</tt><tt class="py-op">+</tt><tt class="py-string">'...'</tt> </tt>
+<a name="L2523"></a><tt class="py-lineno">2523</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">' title="%s"'</tt> <tt class="py-op">%</tt> <tt id="link-728" class="py-name"><a title="epydoc.util.plaintext_to_html" class="py-name" href="#" onclick="return doclink('link-728', 'plaintext_to_html', 'link-32');">plaintext_to_html</a></tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2524"></a><tt class="py-lineno">2524</tt>  <tt class="py-line"> </tt>
+<a name="HTMLWriter.pprint_value"></a><div id="HTMLWriter.pprint_value-def"><a name="L2525"></a><tt class="py-lineno">2525</tt> <a class="py-toggle" href="#" id="HTMLWriter.pprint_value-toggle" onclick="return toggle('HTMLWriter.pprint_value');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html.HTMLWriter-class.html#pprint_value">pprint_value</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt [...]
+</div><div id="HTMLWriter.pprint_value-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLWriter.pprint_value-expanded"><a name="L2526"></a><tt class="py-lineno">2526</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">val_doc</tt> <tt class="py-keyword">is</tt> <tt id="link-729" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-729', 'UNKNOWN', 'link-229');">UNKNOWN</a></ [...]
+<a name="L2527"></a><tt class="py-lineno">2527</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">'??'</tt> </tt>
+<a name="L2528"></a><tt class="py-lineno">2528</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">val_doc</tt><tt class="py-op">,</tt> <tt id="link-730" class="py-name"><a title="epydoc.apidoc.GenericValueDoc" class="py-name" href="#" onclick="return doclink('link-730', 'GenericValueDoc', 'link-58');">GenericValueDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L2529"></a><tt class="py-lineno">2529</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-string">'<table><tr><td><pre class="variable">\n'</tt> <tt class="py-op">+</tt> </tt>
+<a name="L2530"></a><tt class="py-lineno">2530</tt>  <tt class="py-line">                    <tt class="py-name">val_doc</tt><tt class="py-op">.</tt><tt id="link-731" class="py-name"><a title="epydoc.apidoc.ValueDoc.pyval_repr
+epydoc.markup.pyval_repr" class="py-name" href="#" onclick="return doclink('link-731', 'pyval_repr', 'link-726');">pyval_repr</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-732" class="py-name"><a title="epydoc.docwriter.dotgraph.DotGraph.to_html
+epydoc.markup.ConcatenatedDocstring.to_html
+epydoc.markup.ParsedDocstring.to_html
+epydoc.markup.epytext.ParsedEpytextDocstring.to_html
+epydoc.markup.javadoc.ParsedJavadocDocstring.to_html
+epydoc.markup.plaintext.ParsedPlaintextDocstring.to_html
+epydoc.markup.restructuredtext.ParsedRstDocstring.to_html" class="py-name" href="#" onclick="return doclink('link-732', 'to_html', 'link-522');">to_html</a></tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> </tt>
+<a name="L2531"></a><tt class="py-lineno">2531</tt>  <tt class="py-line">                    <tt class="py-string">'\n</pre></td></tr></table>\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2532"></a><tt class="py-lineno">2532</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L2533"></a><tt class="py-lineno">2533</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-733" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.href" class="py-name" href="#" onclick="return doclink('link-733', 'href', 'link-254');">href</a></tt><tt class="py-op">(</tt><tt class="py-name">val_doc</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2534"></a><tt class="py-lineno">2534</tt>  <tt class="py-line"> </tt>
+<a name="L2535"></a><tt class="py-lineno">2535</tt>  <tt class="py-line">    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L2536"></a><tt class="py-lineno">2536</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#{ Base Tree</tt> </tt>
+<a name="L2537"></a><tt class="py-lineno">2537</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L2538"></a><tt class="py-lineno">2538</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="HTMLWriter.base_tree"></a><div id="HTMLWriter.base_tree-def"><a name="L2539"></a><tt class="py-lineno">2539</tt> <a class="py-toggle" href="#" id="HTMLWriter.base_tree-toggle" onclick="return toggle('HTMLWriter.base_tree');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html.HTMLWriter-class.html#base_tree">base_tree</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param"> [...]
+</div><div id="HTMLWriter.base_tree-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLWriter.base_tree-expanded"><a name="L2540"></a><tt class="py-lineno">2540</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L2541"></a><tt class="py-lineno">2541</tt>  <tt class="py-line"><tt class="py-docstring">        @return: The HTML code for a class's base tree.  The tree is</tt> </tt>
+<a name="L2542"></a><tt class="py-lineno">2542</tt>  <tt class="py-line"><tt class="py-docstring">            drawn 'upside-down' and right justified, to allow for</tt> </tt>
+<a name="L2543"></a><tt class="py-lineno">2543</tt>  <tt class="py-line"><tt class="py-docstring">            multiple inheritance.</tt> </tt>
+<a name="L2544"></a><tt class="py-lineno">2544</tt>  <tt class="py-line"><tt class="py-docstring">        @rtype: C{string}</tt> </tt>
+<a name="L2545"></a><tt class="py-lineno">2545</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L2546"></a><tt class="py-lineno">2546</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">context</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L2547"></a><tt class="py-lineno">2547</tt>  <tt class="py-line">            <tt class="py-name">context</tt> <tt class="py-op">=</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-734" class="py-name" targets="Variable epydoc.apidoc.ValueDoc.defining_module=epydoc.apidoc.ValueDoc-class.html#defining_module,Variable epydoc.apidoc.VariableDoc.defining_module=epydoc.apidoc.VariableDoc-class.html#defining_module"><a title="epydoc.apidoc.ValueDoc.defining_module
+epydoc.apidoc.VariableDoc.defining_module" class="py-name" href="#" onclick="return doclink('link-734', 'defining_module', 'link-734');">defining_module</a></tt> </tt>
+<a name="L2548"></a><tt class="py-lineno">2548</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">width</tt> <tt class="py-op">==</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> <tt class="py-name">width</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-735" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.find_tree_width()=epydoc.docwriter.html.HTMLWriter-class.html#find_tree_width [...]
+<a name="L2549"></a><tt class="py-lineno">2549</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt id="link-736" class="py-name"><a title="epydoc.apidoc.ClassDoc" class="py-name" href="#" onclick="return doclink('link-736', 'ClassDoc', 'link-56');">ClassDoc</a></tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-name">doc</tt><tt class="p [...]
+<a name="L2550"></a><tt class="py-lineno">2550</tt>  <tt class="py-line">            <tt id="link-739" class="py-name"><a title="epydoc.apidoc.ClassDoc.bases" class="py-name" href="#" onclick="return doclink('link-739', 'bases', 'link-52');">bases</a></tt> <tt class="py-op">=</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-740" class="py-name"><a title="epydoc.apidoc.ClassDoc.bases" class="py-name" href="#" onclick="return doclink('link-740', 'bases', 'link-52');">b [...]
+<a name="L2551"></a><tt class="py-lineno">2551</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L2552"></a><tt class="py-lineno">2552</tt>  <tt class="py-line">            <tt id="link-741" class="py-name"><a title="epydoc.apidoc.ClassDoc.bases" class="py-name" href="#" onclick="return doclink('link-741', 'bases', 'link-52');">bases</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L2553"></a><tt class="py-lineno">2553</tt>  <tt class="py-line">         </tt>
+<a name="L2554"></a><tt class="py-lineno">2554</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">postfix</tt> <tt class="py-op">==</tt> <tt class="py-string">''</tt><tt class="py-op">:</tt> </tt>
+<a name="L2555"></a><tt class="py-lineno">2555</tt>  <tt class="py-line">            <tt class="py-comment"># [XX] use var name instead of canonical name?</tt> </tt>
+<a name="L2556"></a><tt class="py-lineno">2556</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">' '</tt><tt class="py-op">*</tt><tt class="py-op">(</tt><tt class="py-name">width</tt><tt class="py-op">-</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-string">'<strong class="uidshort">'</tt><tt class="py-op">+</tt> </tt>
+<a name="L2557"></a><tt class="py-lineno">2557</tt>  <tt class="py-line">                   <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-742" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.contextual_label()=epydoc.docwriter.html.HTMLWriter-class.html#contextual_label"><a title="epydoc.docwriter.html.HTMLWriter.contextual_label" class="py-name" href="#" onclick="return doclink('link-742', 'contextual_label', 'link-742');">contextual_label</a></tt><t [...]
+<a name="L2558"></a><tt class="py-lineno">2558</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
+<a name="L2559"></a><tt class="py-lineno">2559</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-743" class="py-name"><a title="epydoc.apidoc.ClassDoc.bases" class="py-name" href="#" onclick="return doclink('link-743', 'bases', 'link-52');">bases</a></tt><tt class="py-op">)</tt><tt class="py-op">-< [...]
+<a name="L2560"></a><tt class="py-lineno">2560</tt>  <tt class="py-line">            <tt class="py-name">base</tt> <tt class="py-op">=</tt> <tt id="link-744" class="py-name"><a title="epydoc.apidoc.ClassDoc.bases" class="py-name" href="#" onclick="return doclink('link-744', 'bases', 'link-52');">bases</a></tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt> </tt>
+<a name="L2561"></a><tt class="py-lineno">2561</tt>  <tt class="py-line">            <tt id="link-745" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.label" class="py-name" href="#" onclick="return doclink('link-745', 'label', 'link-118');">label</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-746" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.contextual_label" class="py-name" href="#" onclick="return doclink( [...]
+<a name="L2562"></a><tt class="py-lineno">2562</tt>  <tt class="py-line">            <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">' '</tt><tt class="py-op">*</tt><tt class="py-op">(</tt><tt class="py-name">width</tt><tt class="py-op">-</tt><tt class="py-number">4</tt><tt class="py-op">-</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-747" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.label" class="py [...]
+<a name="L2563"></a><tt class="py-lineno">2563</tt>  <tt class="py-line">                   <tt class="py-op">+</tt><tt class="py-string">' --+'</tt><tt class="py-op">+</tt><tt class="py-name">postfix</tt><tt class="py-op">+</tt><tt class="py-string">'\n'</tt> <tt class="py-op">+</tt>  </tt>
+<a name="L2564"></a><tt class="py-lineno">2564</tt>  <tt class="py-line">                   <tt class="py-string">' '</tt><tt class="py-op">*</tt><tt class="py-op">(</tt><tt class="py-name">width</tt><tt class="py-op">-</tt><tt class="py-number">4</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> </tt>
+<a name="L2565"></a><tt class="py-lineno">2565</tt>  <tt class="py-line">                   <tt class="py-string">'   |'</tt><tt class="py-op">+</tt><tt class="py-name">postfix</tt><tt class="py-op">+</tt><tt class="py-string">'\n'</tt> <tt class="py-op">+</tt> </tt>
+<a name="L2566"></a><tt class="py-lineno">2566</tt>  <tt class="py-line">                   <tt class="py-name">s</tt><tt class="py-op">)</tt> </tt>
+<a name="L2567"></a><tt class="py-lineno">2567</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">i</tt> <tt class="py-op">!=</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L2568"></a><tt class="py-lineno">2568</tt>  <tt class="py-line">                <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-750" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.base_tree
+epydoc.docwriter.latex.LatexWriter.base_tree" class="py-name" href="#" onclick="return doclink('link-750', 'base_tree', 'link-287');">base_tree</a></tt><tt class="py-op">(</tt><tt class="py-name">base</tt><tt class="py-op">,</tt> <tt class="py-name">width</tt><tt class="py-op">-</tt><tt class="py-number">4</tt><tt class="py-op">,</tt> <tt class="py-string">'   |'</tt><tt class="py-op">+</tt><tt class="py-name">postfix</tt><tt class="py-op">,</tt> <tt class="py-name">context</tt><tt class [...]
+<a name="L2569"></a><tt class="py-lineno">2569</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L2570"></a><tt class="py-lineno">2570</tt>  <tt class="py-line">                <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-751" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.base_tree
+epydoc.docwriter.latex.LatexWriter.base_tree" class="py-name" href="#" onclick="return doclink('link-751', 'base_tree', 'link-287');">base_tree</a></tt><tt class="py-op">(</tt><tt class="py-name">base</tt><tt class="py-op">,</tt> <tt class="py-name">width</tt><tt class="py-op">-</tt><tt class="py-number">4</tt><tt class="py-op">,</tt> <tt class="py-string">'    '</tt><tt class="py-op">+</tt><tt class="py-name">postfix</tt><tt class="py-op">,</tt> <tt class="py-name">context</tt><tt class [...]
+<a name="L2571"></a><tt class="py-lineno">2571</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">s</tt> </tt>
+</div><a name="L2572"></a><tt class="py-lineno">2572</tt>  <tt class="py-line"> </tt>
+<a name="HTMLWriter.find_tree_width"></a><div id="HTMLWriter.find_tree_width-def"><a name="L2573"></a><tt class="py-lineno">2573</tt> <a class="py-toggle" href="#" id="HTMLWriter.find_tree_width-toggle" onclick="return toggle('HTMLWriter.find_tree_width');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html.HTMLWriter-class.html#find_tree_width">find_tree_width</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class= [...]
+</div><div id="HTMLWriter.find_tree_width-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLWriter.find_tree_width-expanded"><a name="L2574"></a><tt class="py-lineno">2574</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L2575"></a><tt class="py-lineno">2575</tt>  <tt class="py-line"><tt class="py-docstring">        Helper function for L{base_tree}.</tt> </tt>
+<a name="L2576"></a><tt class="py-lineno">2576</tt>  <tt class="py-line"><tt class="py-docstring">        @return: The width of a base tree, when drawn</tt> </tt>
+<a name="L2577"></a><tt class="py-lineno">2577</tt>  <tt class="py-line"><tt class="py-docstring">            right-justified.  This is used by L{base_tree} to</tt> </tt>
+<a name="L2578"></a><tt class="py-lineno">2578</tt>  <tt class="py-line"><tt class="py-docstring">            determine how far to indent lines of the base tree.</tt> </tt>
+<a name="L2579"></a><tt class="py-lineno">2579</tt>  <tt class="py-line"><tt class="py-docstring">        @rtype: C{int}</tt> </tt>
+<a name="L2580"></a><tt class="py-lineno">2580</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L2581"></a><tt class="py-lineno">2581</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt id="link-752" class="py-name"><a title="epydoc.apidoc.ClassDoc" class="py-name" href="#" onclick="return doclink('link-752', 'ClassDoc', 'link-56');">ClassDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-ke [...]
+<a name="L2582"></a><tt class="py-lineno">2582</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-753" class="py-name"><a title="epydoc.apidoc.ClassDoc.bases" class="py-name" href="#" onclick="return doclink('link-753', 'bases', 'link-52');">bases</a></tt> <tt class="py-op">==</tt> <tt id="link-754" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-754', 'U [...]
+<a name="L2583"></a><tt class="py-lineno">2583</tt>  <tt class="py-line">        <tt class="py-name">width</tt> <tt class="py-op">=</tt> <tt class="py-number">2</tt> </tt>
+<a name="L2584"></a><tt class="py-lineno">2584</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">base</tt> <tt class="py-keyword">in</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-755" class="py-name"><a title="epydoc.apidoc.ClassDoc.bases" class="py-name" href="#" onclick="return doclink('link-755', 'bases', 'link-52');">bases</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L2585"></a><tt class="py-lineno">2585</tt>  <tt class="py-line">            <tt class="py-name">width</tt> <tt class="py-op">=</tt> <tt class="py-name">max</tt><tt class="py-op">(</tt><tt class="py-name">width</tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-756" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.contextual_label" class="py-name" href="#" onclick="return doc [...]
+<a name="L2586"></a><tt class="py-lineno">2586</tt>  <tt class="py-line">                        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-757" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.find_tree_width" class="py-name" href="#" onclick="return doclink('link-757', 'find_tree_width', 'link-735');">find_tree_width</a></tt><tt class="py-op">(</tt><tt class="py-name">base</tt><tt class="py-op">,</tt> <tt class="py-name">context</tt><tt class="py-op">)< [...]
+<a name="L2587"></a><tt class="py-lineno">2587</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">width</tt> </tt>
+</div><a name="L2588"></a><tt class="py-lineno">2588</tt>  <tt class="py-line"> </tt>
+<a name="HTMLWriter.contextual_label"></a><div id="HTMLWriter.contextual_label-def"><a name="L2589"></a><tt class="py-lineno">2589</tt> <a class="py-toggle" href="#" id="HTMLWriter.contextual_label-toggle" onclick="return toggle('HTMLWriter.contextual_label');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html.HTMLWriter-class.html#contextual_label">contextual_label</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt  [...]
+</div><div id="HTMLWriter.contextual_label-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLWriter.contextual_label-expanded"><a name="L2590"></a><tt class="py-lineno">2590</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L2591"></a><tt class="py-lineno">2591</tt>  <tt class="py-line"><tt class="py-docstring">        Return the label for C{doc} to be shown in C{context}.</tt> </tt>
+<a name="L2592"></a><tt class="py-lineno">2592</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L2593"></a><tt class="py-lineno">2593</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-758" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-758', 'canonical_name', 'link-82');">canonical_name</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L2594"></a><tt class="py-lineno">2594</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-759" class="py-name" targets="Variable epydoc.apidoc.ValueDoc.parse_repr=epydoc.apidoc.ValueDoc-class.html#parse_repr"><a title="epydoc.apidoc.ValueDoc.parse_repr" class="py-name" href="#" onclick="return doclink('link-759', 'parse_repr', 'link-759');">parse_repr</a></tt> <tt class="py-keyword">is</tt> <tt cla [...]
+<a name="L2595"></a><tt class="py-lineno">2595</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-760" class="py-name"><a title="epydoc.apidoc.ValueDoc.parse_repr" class="py-name" href="#" onclick="return doclink('link-760', 'parse_repr', 'link-759');">parse_repr</a></tt> </tt>
+<a name="L2596"></a><tt class="py-lineno">2596</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L2597"></a><tt class="py-lineno">2597</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-string">'??'</tt> </tt>
+<a name="L2598"></a><tt class="py-lineno">2598</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L2599"></a><tt class="py-lineno">2599</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">context</tt> <tt class="py-keyword">is</tt> <tt id="link-761" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-761', 'UNKNOWN', 'link-229');">UNKNOWN</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L2600"></a><tt class="py-lineno">2600</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-762" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-762', 'canonical_name', 'link-82');">canonical_name</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2601"></a><tt class="py-lineno">2601</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L2602"></a><tt class="py-lineno">2602</tt>  <tt class="py-line">                <tt id="link-763" class="py-name" targets="Method epydoc.docwriter.html_colorize.PythonSourceColorizer.context_name()=epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#context_name"><a title="epydoc.docwriter.html_colorize.PythonSourceColorizer.context_name" class="py-name" href="#" onclick="return doclink('link-763', 'context_name', 'link-763');">context_name</a></tt> <tt class="py-op" [...]
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-764', 'canonical_name', 'link-82');">canonical_name</a></tt> </tt>
+<a name="L2603"></a><tt class="py-lineno">2603</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-765" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-765', 'canonical_name', 'link-82');">canonical_name</a></tt><tt class="py-op">.</tt><tt id="link-766" class="py-name" targets="Method epydoc.apidoc.DottedName.contextualize()=epydoc.apidoc.DottedName-class.html#contextualize"><a title="epydoc.apidoc.DottedName.contextualize" class="py-name" href="#" onclick="return doclink('link-766', 'contextualize', 'link-766');">contextualize</a></tt><tt c [...]
+</div><a name="L2604"></a><tt class="py-lineno">2604</tt>  <tt class="py-line">         </tt>
+<a name="L2605"></a><tt class="py-lineno">2605</tt>  <tt class="py-line">    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L2606"></a><tt class="py-lineno">2606</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#{ Function Signatures</tt> </tt>
+<a name="L2607"></a><tt class="py-lineno">2607</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L2608"></a><tt class="py-lineno">2608</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="HTMLWriter.function_signature"></a><div id="HTMLWriter.function_signature-def"><a name="L2609"></a><tt class="py-lineno">2609</tt> <a class="py-toggle" href="#" id="HTMLWriter.function_signature-toggle" onclick="return toggle('HTMLWriter.function_signature');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html.HTMLWriter-class.html#function_signature">function_signature</a><tt class="py-op">(</tt><tt class="py-param">s [...]
+<a name="L2610"></a><tt class="py-lineno">2610</tt>  <tt class="py-line">                           <tt class="py-param">link_name</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> <tt class="py-param">anchor</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> <tt class="py-param">context</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="HTMLWriter.function_signature-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLWriter.function_signature-expanded"><a name="L2611"></a><tt class="py-lineno">2611</tt>  <tt class="py-line">        <tt class="py-docstring">"""Render a function signature in HTML.</tt> </tt>
+<a name="L2612"></a><tt class="py-lineno">2612</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L2613"></a><tt class="py-lineno">2613</tt>  <tt class="py-line"><tt class="py-docstring">        @param api_doc: The object whose name is to be rendered. If a</tt> </tt>
+<a name="L2614"></a><tt class="py-lineno">2614</tt>  <tt class="py-line"><tt class="py-docstring">            C{VariableDoc}, its C{value} should be a C{RoutineDoc}</tt> </tt>
+<a name="L2615"></a><tt class="py-lineno">2615</tt>  <tt class="py-line"><tt class="py-docstring">        @type api_doc: L{VariableDoc} or L{RoutineDoc}</tt> </tt>
+<a name="L2616"></a><tt class="py-lineno">2616</tt>  <tt class="py-line"><tt class="py-docstring">        @param is_summary: True if the fuction is to be rendered in the summary.</tt> </tt>
+<a name="L2617"></a><tt class="py-lineno">2617</tt>  <tt class="py-line"><tt class="py-docstring">        type css_class: C{bool}</tt> </tt>
+<a name="L2618"></a><tt class="py-lineno">2618</tt>  <tt class="py-line"><tt class="py-docstring">        @param link_name: If True, the name is a link to the object anchor.</tt> </tt>
+<a name="L2619"></a><tt class="py-lineno">2619</tt>  <tt class="py-line"><tt class="py-docstring">        @type link_name: C{bool}</tt> </tt>
+<a name="L2620"></a><tt class="py-lineno">2620</tt>  <tt class="py-line"><tt class="py-docstring">        @param anchor: If True, the name is the object anchor.</tt> </tt>
+<a name="L2621"></a><tt class="py-lineno">2621</tt>  <tt class="py-line"><tt class="py-docstring">        @type anchor: C{bool}</tt> </tt>
+<a name="L2622"></a><tt class="py-lineno">2622</tt>  <tt class="py-line"><tt class="py-docstring">        @param context: If set, represent the function name from this context.</tt> </tt>
+<a name="L2623"></a><tt class="py-lineno">2623</tt>  <tt class="py-line"><tt class="py-docstring">            Only useful when C{api_doc} is a L{RoutineDoc}.</tt> </tt>
+<a name="L2624"></a><tt class="py-lineno">2624</tt>  <tt class="py-line"><tt class="py-docstring">        @type context: L{DottedName}</tt> </tt>
+<a name="L2625"></a><tt class="py-lineno">2625</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L2626"></a><tt class="py-lineno">2626</tt>  <tt class="py-line"><tt class="py-docstring">        @return: The HTML code for the object.</tt> </tt>
+<a name="L2627"></a><tt class="py-lineno">2627</tt>  <tt class="py-line"><tt class="py-docstring">        @rtype: C{str}</tt> </tt>
+<a name="L2628"></a><tt class="py-lineno">2628</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L2629"></a><tt class="py-lineno">2629</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">is_summary</tt><tt class="py-op">:</tt> <tt class="py-name">css_class</tt> <tt class="py-op">=</tt> <tt class="py-string">'summary-sig'</tt> </tt>
+<a name="L2630"></a><tt class="py-lineno">2630</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> <tt class="py-name">css_class</tt> <tt class="py-op">=</tt> <tt class="py-string">'sig'</tt> </tt>
+<a name="L2631"></a><tt class="py-lineno">2631</tt>  <tt class="py-line">         </tt>
+<a name="L2632"></a><tt class="py-lineno">2632</tt>  <tt class="py-line">        <tt class="py-comment"># [XX] clean this up!</tt> </tt>
+<a name="L2633"></a><tt class="py-lineno">2633</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt id="link-768" class="py-name" targets="Class epydoc.apidoc.VariableDoc=epydoc.apidoc.VariableDoc-class.html"><a title="epydoc.apidoc.VariableDoc" class="py-name" href="#" onclick="return doclink('link-768', 'VariableDoc', 'link-768' [...]
+<a name="L2634"></a><tt class="py-lineno">2634</tt>  <tt class="py-line">            <tt class="py-name">func_doc</tt> <tt class="py-op">=</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-769" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-769', 'value', 'link-61');">value</a></tt> </tt>
+<a name="L2635"></a><tt class="py-lineno">2635</tt>  <tt class="py-line">            <tt class="py-comment"># This should never happen, but just in case:</tt> </tt>
+<a name="L2636"></a><tt class="py-lineno">2636</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-770" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-770', 'value', 'link-61');">value</a></tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id=" [...]
+<a name="L2637"></a><tt class="py-lineno">2637</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-string">'<span class="%s"><span class="%s-name">%s'</tt><tt class="py-op">+</tt> </tt>
+<a name="L2638"></a><tt class="py-lineno">2638</tt>  <tt class="py-line">                         <tt class="py-string">'</span>(...)</span>'</tt><tt class="py-op">)</tt> <tt class="py-op">%</tt> </tt>
+<a name="L2639"></a><tt class="py-lineno">2639</tt>  <tt class="py-line">                        <tt class="py-op">(</tt><tt class="py-name">css_class</tt><tt class="py-op">,</tt> <tt class="py-name">css_class</tt><tt class="py-op">,</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-772" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-772', 'name', 'link-117');">name</a></tt><tt class="py-op">)</tt>< [...]
+<a name="L2640"></a><tt class="py-lineno">2640</tt>  <tt class="py-line">            <tt class="py-comment"># Get the function's name.</tt> </tt>
+<a name="L2641"></a><tt class="py-lineno">2641</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt id="link-773" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-773', 'name', 'link-117');">name</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-774" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.summary_name" class="py-name" href="#" onclick="ret [...]
+<a name="L2642"></a><tt class="py-lineno">2642</tt>  <tt class="py-line">                                     <tt class="py-name">link_name</tt><tt class="py-op">=</tt><tt class="py-name">link_name</tt><tt class="py-op">,</tt> <tt class="py-name">anchor</tt><tt class="py-op">=</tt><tt class="py-name">anchor</tt><tt class="py-op">)</tt> </tt>
+<a name="L2643"></a><tt class="py-lineno">2643</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L2644"></a><tt class="py-lineno">2644</tt>  <tt class="py-line">            <tt class="py-name">func_doc</tt> <tt class="py-op">=</tt> <tt class="py-name">api_doc</tt> </tt>
+<a name="L2645"></a><tt class="py-lineno">2645</tt>  <tt class="py-line">            <tt id="link-775" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-775', 'name', 'link-117');">name</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-776" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.href" class="py-name" href="#" onclick="return doclink('link-776', 'href', 'lin [...]
+<a name="L2646"></a><tt class="py-lineno">2646</tt>  <tt class="py-line">                             <tt class="py-name">context</tt><tt class="py-op">=</tt><tt class="py-name">context</tt><tt class="py-op">)</tt> </tt>
+<a name="L2647"></a><tt class="py-lineno">2647</tt>  <tt class="py-line"> </tt>
+<a name="L2648"></a><tt class="py-lineno">2648</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">func_doc</tt><tt class="py-op">.</tt><tt id="link-777" class="py-name" targets="Variable epydoc.apidoc.RoutineDoc.posargs=epydoc.apidoc.RoutineDoc-class.html#posargs"><a title="epydoc.apidoc.RoutineDoc.posargs" class="py-name" href="#" onclick="return doclink('link-777', 'posargs', 'link-777');">posargs</a></tt> <tt class="py-op">==</tt> <tt id="link-778" cl [...]
+<a name="L2649"></a><tt class="py-lineno">2649</tt>  <tt class="py-line">            <tt class="py-name">args</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-string">'...'</tt><tt class="py-op">]</tt> </tt>
+<a name="L2650"></a><tt class="py-lineno">2650</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L2651"></a><tt class="py-lineno">2651</tt>  <tt class="py-line">            <tt class="py-name">args</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-779" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.func_arg()=epydoc.docwriter.html.HTMLWriter-class.html#func_arg,Method epydoc.docwriter.latex.LatexWriter.func_arg()=epydoc.docwriter.latex.LatexWriter-class.html#func_arg"><a title="epydoc.do [...]
+epydoc.docwriter.latex.LatexWriter.func_arg" class="py-name" href="#" onclick="return doclink('link-779', 'func_arg', 'link-779');">func_arg</a></tt><tt class="py-op">(</tt><tt class="py-name">n</tt><tt class="py-op">,</tt> <tt class="py-name">d</tt><tt class="py-op">,</tt> <tt class="py-name">css_class</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-op">(</tt><tt class="py-name">n</tt><tt class="py-op">,</tt> <tt class="py-name">d</tt><tt class="py-op">)</tt> </tt>
+<a name="L2652"></a><tt class="py-lineno">2652</tt>  <tt class="py-line">                    <tt class="py-keyword">in</tt> <tt class="py-name">zip</tt><tt class="py-op">(</tt><tt class="py-name">func_doc</tt><tt class="py-op">.</tt><tt id="link-780" class="py-name"><a title="epydoc.apidoc.RoutineDoc.posargs" class="py-name" href="#" onclick="return doclink('link-780', 'posargs', 'link-777');">posargs</a></tt><tt class="py-op">,</tt> <tt class="py-name">func_doc</tt><tt class="py-op">.</ [...]
+<a name="L2653"></a><tt class="py-lineno">2653</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">func_doc</tt><tt class="py-op">.</tt><tt id="link-782" class="py-name" targets="Variable epydoc.apidoc.RoutineDoc.vararg=epydoc.apidoc.RoutineDoc-class.html#vararg"><a title="epydoc.apidoc.RoutineDoc.vararg" class="py-name" href="#" onclick="return doclink('link-782', 'vararg', 'link-782');">vararg</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keywo [...]
+<a name="L2654"></a><tt class="py-lineno">2654</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">func_doc</tt><tt class="py-op">.</tt><tt id="link-784" class="py-name"><a title="epydoc.apidoc.RoutineDoc.vararg" class="py-name" href="#" onclick="return doclink('link-784', 'vararg', 'link-782');">vararg</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'...'</tt><tt class="py-op">:</tt> </tt>
+<a name="L2655"></a><tt class="py-lineno">2655</tt>  <tt class="py-line">                <tt class="py-name">args</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">'<span class="%s-arg">...</span>'</tt> <tt class="py-op">%</tt> <tt class="py-name">css_class</tt><tt class="py-op">)</tt> </tt>
+<a name="L2656"></a><tt class="py-lineno">2656</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L2657"></a><tt class="py-lineno">2657</tt>  <tt class="py-line">                <tt class="py-name">args</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">'<span class="%s-arg">*%s</span>'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L2658"></a><tt class="py-lineno">2658</tt>  <tt class="py-line">                            <tt class="py-op">(</tt><tt class="py-name">css_class</tt><tt class="py-op">,</tt> <tt class="py-name">func_doc</tt><tt class="py-op">.</tt><tt id="link-785" class="py-name"><a title="epydoc.apidoc.RoutineDoc.vararg" class="py-name" href="#" onclick="return doclink('link-785', 'vararg', 'link-782');">vararg</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2659"></a><tt class="py-lineno">2659</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">func_doc</tt><tt class="py-op">.</tt><tt id="link-786" class="py-name" targets="Variable epydoc.apidoc.RoutineDoc.kwarg=epydoc.apidoc.RoutineDoc-class.html#kwarg"><a title="epydoc.apidoc.RoutineDoc.kwarg" class="py-name" href="#" onclick="return doclink('link-786', 'kwarg', 'link-786');">kwarg</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">i [...]
+<a name="L2660"></a><tt class="py-lineno">2660</tt>  <tt class="py-line">            <tt class="py-name">args</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">'<span class="%s-arg">**%s</span>'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L2661"></a><tt class="py-lineno">2661</tt>  <tt class="py-line">                        <tt class="py-op">(</tt><tt class="py-name">css_class</tt><tt class="py-op">,</tt> <tt class="py-name">func_doc</tt><tt class="py-op">.</tt><tt id="link-788" class="py-name"><a title="epydoc.apidoc.RoutineDoc.kwarg" class="py-name" href="#" onclick="return doclink('link-788', 'kwarg', 'link-786');">kwarg</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2662"></a><tt class="py-lineno">2662</tt>  <tt class="py-line"> </tt>
+<a name="L2663"></a><tt class="py-lineno">2663</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-string">'<span class="%s">%s(%s)</span>'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L2664"></a><tt class="py-lineno">2664</tt>  <tt class="py-line">                <tt class="py-op">(</tt><tt class="py-name">css_class</tt><tt class="py-op">,</tt> <tt id="link-789" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-789', 'name', 'link-117');">name</a></tt><tt class="py-op">,</tt> <tt class="py-string">',\n        '</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt cl [...]
+</div><a name="L2665"></a><tt class="py-lineno">2665</tt>  <tt class="py-line"> </tt>
+<a name="HTMLWriter.summary_name"></a><div id="HTMLWriter.summary_name-def"><a name="L2666"></a><tt class="py-lineno">2666</tt> <a class="py-toggle" href="#" id="HTMLWriter.summary_name-toggle" onclick="return toggle('HTMLWriter.summary_name');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html.HTMLWriter-class.html#summary_name">summary_name</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt [...]
+<a name="L2667"></a><tt class="py-lineno">2667</tt>  <tt class="py-line">                     <tt class="py-param">link_name</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> <tt class="py-param">anchor</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="HTMLWriter.summary_name-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLWriter.summary_name-expanded"><a name="L2668"></a><tt class="py-lineno">2668</tt>  <tt class="py-line">        <tt class="py-docstring">"""Render an object name in HTML.</tt> </tt>
+<a name="L2669"></a><tt class="py-lineno">2669</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L2670"></a><tt class="py-lineno">2670</tt>  <tt class="py-line"><tt class="py-docstring">        @param api_doc: The object whose name is to be rendered</tt> </tt>
+<a name="L2671"></a><tt class="py-lineno">2671</tt>  <tt class="py-line"><tt class="py-docstring">        @type api_doc: L{APIDoc}</tt> </tt>
+<a name="L2672"></a><tt class="py-lineno">2672</tt>  <tt class="py-line"><tt class="py-docstring">        @param css_class: The CSS class to assign to the rendered name</tt> </tt>
+<a name="L2673"></a><tt class="py-lineno">2673</tt>  <tt class="py-line"><tt class="py-docstring">        type css_class: C{str}</tt> </tt>
+<a name="L2674"></a><tt class="py-lineno">2674</tt>  <tt class="py-line"><tt class="py-docstring">        @param link_name: If True, the name is a link to the object anchor.</tt> </tt>
+<a name="L2675"></a><tt class="py-lineno">2675</tt>  <tt class="py-line"><tt class="py-docstring">        @type link_name: C{bool}</tt> </tt>
+<a name="L2676"></a><tt class="py-lineno">2676</tt>  <tt class="py-line"><tt class="py-docstring">        @param anchor: If True, the name is the object anchor.</tt> </tt>
+<a name="L2677"></a><tt class="py-lineno">2677</tt>  <tt class="py-line"><tt class="py-docstring">        @type anchor: C{bool}</tt> </tt>
+<a name="L2678"></a><tt class="py-lineno">2678</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L2679"></a><tt class="py-lineno">2679</tt>  <tt class="py-line"><tt class="py-docstring">        @return: The HTML code for the object.</tt> </tt>
+<a name="L2680"></a><tt class="py-lineno">2680</tt>  <tt class="py-line"><tt class="py-docstring">        @rtype: C{str}</tt> </tt>
+<a name="L2681"></a><tt class="py-lineno">2681</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L2682"></a><tt class="py-lineno">2682</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">anchor</tt><tt class="py-op">:</tt> </tt>
+<a name="L2683"></a><tt class="py-lineno">2683</tt>  <tt class="py-line">            <tt class="py-name">rv</tt> <tt class="py-op">=</tt> <tt class="py-string">'<a name="%s"></a>'</tt> <tt class="py-op">%</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-790" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-790', 'name', 'link-117');">name</a></tt> </tt>
+<a name="L2684"></a><tt class="py-lineno">2684</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L2685"></a><tt class="py-lineno">2685</tt>  <tt class="py-line">            <tt class="py-name">rv</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
+<a name="L2686"></a><tt class="py-lineno">2686</tt>  <tt class="py-line"> </tt>
+<a name="L2687"></a><tt class="py-lineno">2687</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">link_name</tt><tt class="py-op">:</tt> </tt>
+<a name="L2688"></a><tt class="py-lineno">2688</tt>  <tt class="py-line">            <tt class="py-name">rv</tt> <tt class="py-op">+=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-791" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.href" class="py-name" href="#" onclick="return doclink('link-791', 'href', 'link-254');">href</a></tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt class="py-name">css_class</tt><tt cl [...]
+<a name="L2689"></a><tt class="py-lineno">2689</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L2690"></a><tt class="py-lineno">2690</tt>  <tt class="py-line">            <tt class="py-name">rv</tt> <tt class="py-op">+=</tt> <tt class="py-string">'<span class="%s">%s</span>'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">css_class</tt><tt class="py-op">,</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-792" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return docl [...]
+<a name="L2691"></a><tt class="py-lineno">2691</tt>  <tt class="py-line"> </tt>
+<a name="L2692"></a><tt class="py-lineno">2692</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">rv</tt> </tt>
+</div><a name="L2693"></a><tt class="py-lineno">2693</tt>  <tt class="py-line"> </tt>
+<a name="L2694"></a><tt class="py-lineno">2694</tt>  <tt class="py-line">    <tt class="py-comment"># [xx] tuple args???</tt> </tt>
+<a name="HTMLWriter.func_arg"></a><div id="HTMLWriter.func_arg-def"><a name="L2695"></a><tt class="py-lineno">2695</tt> <a class="py-toggle" href="#" id="HTMLWriter.func_arg-toggle" onclick="return toggle('HTMLWriter.func_arg');">-</a><tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html.HTMLWriter-class.html#func_arg">func_arg</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> [...]
+</div><div id="HTMLWriter.func_arg-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLWriter.func_arg-expanded"><a name="L2696"></a><tt class="py-lineno">2696</tt>  <tt class="py-line">        <tt id="link-793" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-793', 'name', 'link-117');">name</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-794"  [...]
+epydoc.docwriter.latex.LatexWriter._arg_name" class="py-name" href="#" onclick="return doclink('link-794', '_arg_name', 'link-794');">_arg_name</a></tt><tt class="py-op">(</tt><tt id="link-795" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-795', 'name', 'link-117');">name</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2697"></a><tt class="py-lineno">2697</tt>  <tt class="py-line">        <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-string">'<span class="%s-arg">%s</span>'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">css_class</tt><tt class="py-op">,</tt> <tt id="link-796" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-796', 'name', 'link-117');">name</a></tt><tt cla [...]
+<a name="L2698"></a><tt class="py-lineno">2698</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">default</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L2699"></a><tt class="py-lineno">2699</tt>  <tt class="py-line">            <tt class="py-name">s</tt> <tt class="py-op">+=</tt> <tt class="py-op">(</tt><tt class="py-string">'=<span class="%s-default">%s</span>'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L2700"></a><tt class="py-lineno">2700</tt>  <tt class="py-line">                    <tt class="py-op">(</tt><tt class="py-name">css_class</tt><tt class="py-op">,</tt> <tt class="py-name">default</tt><tt class="py-op">.</tt><tt id="link-797" class="py-name"><a title="epydoc.apidoc.ValueDoc.summary_pyval_repr" class="py-name" href="#" onclick="return doclink('link-797', 'summary_pyval_repr', 'link-638');">summary_pyval_repr</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt>< [...]
+epydoc.markup.ConcatenatedDocstring.to_html
+epydoc.markup.ParsedDocstring.to_html
+epydoc.markup.epytext.ParsedEpytextDocstring.to_html
+epydoc.markup.javadoc.ParsedJavadocDocstring.to_html
+epydoc.markup.plaintext.ParsedPlaintextDocstring.to_html
+epydoc.markup.restructuredtext.ParsedRstDocstring.to_html" class="py-name" href="#" onclick="return doclink('link-798', 'to_html', 'link-522');">to_html</a></tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2701"></a><tt class="py-lineno">2701</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">s</tt> </tt>
+</div><a name="L2702"></a><tt class="py-lineno">2702</tt>  <tt class="py-line"> </tt>
+<a name="HTMLWriter._arg_name"></a><div id="HTMLWriter._arg_name-def"><a name="L2703"></a><tt class="py-lineno">2703</tt> <a class="py-toggle" href="#" id="HTMLWriter._arg_name-toggle" onclick="return toggle('HTMLWriter._arg_name');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html.HTMLWriter-class.html#_arg_name">_arg_name</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param"> [...]
+</div><div id="HTMLWriter._arg_name-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLWriter._arg_name-expanded"><a name="L2704"></a><tt class="py-lineno">2704</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-799" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-799', 'arg', 'link-370');">arg</a></tt><tt class="py- [...]
+<a name="L2705"></a><tt class="py-lineno">2705</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt id="link-800" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-800', 'arg', 'link-370');">arg</a></tt> </tt>
+<a name="L2706"></a><tt class="py-lineno">2706</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-801" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-801', 'arg', 'link-370');">arg</a></tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L2707"></a><tt class="py-lineno">2707</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">'(%s,)'</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-802" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter._arg_name
+epydoc.docwriter.latex.LatexWriter._arg_name" class="py-name" href="#" onclick="return doclink('link-802', '_arg_name', 'link-794');">_arg_name</a></tt><tt class="py-op">(</tt><tt id="link-803" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-803', 'arg', 'link-370');">arg</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L2708"></a><tt class="py-lineno">2708</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L2709"></a><tt class="py-lineno">2709</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">'(%s)'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-string">', '</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-804" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter._arg_name
+epydoc.docwriter.latex.LatexWriter._arg_name" class="py-name" href="#" onclick="return doclink('link-804', '_arg_name', 'link-794');">_arg_name</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">a</tt> <tt class="py-keyword">in</tt> <tt id="link-805" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-805', 'arg', 'link-370');">arg</a></tt><tt class="p [...]
+</div><a name="L2710"></a><tt class="py-lineno">2710</tt>  <tt class="py-line"> </tt>
+<a name="L2711"></a><tt class="py-lineno">2711</tt>  <tt class="py-line"> </tt>
+<a name="L2712"></a><tt class="py-lineno">2712</tt>  <tt class="py-line">     </tt>
+<a name="L2713"></a><tt class="py-lineno">2713</tt>  <tt class="py-line"> </tt>
+<a name="L2714"></a><tt class="py-lineno">2714</tt>  <tt class="py-line">    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L2715"></a><tt class="py-lineno">2715</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#{ Import Lists</tt> </tt>
+<a name="L2716"></a><tt class="py-lineno">2716</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L2717"></a><tt class="py-lineno">2717</tt>  <tt class="py-line"><tt class="py-comment"></tt>         </tt>
+<a name="HTMLWriter.write_imports"></a><div id="HTMLWriter.write_imports-def"><a name="L2718"></a><tt class="py-lineno">2718</tt> <a class="py-toggle" href="#" id="HTMLWriter.write_imports-toggle" onclick="return toggle('HTMLWriter.write_imports');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html.HTMLWriter-class.html#write_imports">write_imports</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</t [...]
+</div><div id="HTMLWriter.write_imports-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLWriter.write_imports-expanded"><a name="L2719"></a><tt class="py-lineno">2719</tt>  <tt class="py-line">        <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt id="link-806" class="py-name"><a title="epydoc.apidoc.NamespaceDoc" class="py-name" href="#" onclick="return [...]
+<a name="L2720"></a><tt class="py-lineno">2720</tt>  <tt class="py-line">        <tt id="link-807" class="py-name"><a title="epydoc.apidoc.ModuleDoc.imports" class="py-name" href="#" onclick="return doclink('link-807', 'imports', 'link-51');">imports</a></tt> <tt class="py-op">=</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-808" class="py-name"><a title="epydoc.apidoc.ClassDoc.select_variables
+epydoc.apidoc.ModuleDoc.select_variables" class="py-name" href="#" onclick="return doclink('link-808', 'select_variables', 'link-444');">select_variables</a></tt><tt class="py-op">(</tt><tt class="py-name">imported</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> </tt>
+<a name="L2721"></a><tt class="py-lineno">2721</tt>  <tt class="py-line">                                       <tt class="py-name">public</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_public_filter</tt><tt class="py-op">)</tt> </tt>
+<a name="L2722"></a><tt class="py-lineno">2722</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-809" class="py-name"><a title="epydoc.apidoc.ModuleDoc.imports" class="py-name" href="#" onclick="return doclink('link-809', 'imports', 'link-51');">imports</a></tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> </tt>
+<a name="L2723"></a><tt class="py-lineno">2723</tt>  <tt class="py-line"> </tt>
+<a name="L2724"></a><tt class="py-lineno">2724</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'<p class="indent-wrapped-lines">'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2725"></a><tt class="py-lineno">2725</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'<b>Imports:</b>\n  '</tt><tt class="py-op">)</tt> </tt>
+<a name="L2726"></a><tt class="py-lineno">2726</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">',\n  '</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-810" class="py-name" targets="Function epydoc.docintrospecter._import()=epydoc.docintrospecter-module.html#_import,Method epydoc.docwriter.html.HTMLWriter._im [...]
+epydoc.docwriter.html.HTMLWriter._import" class="py-name" href="#" onclick="return doclink('link-810', '_import', 'link-810');">_import</a></tt><tt class="py-op">(</tt><tt id="link-811" class="py-name"><a title="epydoc.markup.restructuredtext._EpydocReader.v" class="py-name" href="#" onclick="return doclink('link-811', 'v', 'link-80');">v</a></tt><tt class="py-op">,</tt> <tt class="py-name">doc</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt id="link-812" class="py-name" [...]
+<a name="L2727"></a><tt class="py-lineno">2727</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'\n</p><br />\n'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2728"></a><tt class="py-lineno">2728</tt>  <tt class="py-line"> </tt>
+<a name="HTMLWriter._import"></a><div id="HTMLWriter._import-def"><a name="L2729"></a><tt class="py-lineno">2729</tt> <a class="py-toggle" href="#" id="HTMLWriter._import-toggle" onclick="return toggle('HTMLWriter._import');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html.HTMLWriter-class.html#_import">_import</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">var_doc</tt> [...]
+</div><div id="HTMLWriter._import-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLWriter._import-expanded"><a name="L2730"></a><tt class="py-lineno">2730</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-814" class="py-name" targets="Variable epydoc.apidoc.VariableDoc.imported_from=epydoc.apidoc.VariableDoc-class.html#imported_from"><a title="epydoc.apidoc.VariableDoc.impo [...]
+<a name="L2731"></a><tt class="py-lineno">2731</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-816" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.href" class="py-name" href="#" onclick="return doclink('link-816', 'href', 'link-254');">href</a></tt><tt class="py-op">(</tt><tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-817" class="py-name"><a title="epydoc.apidoc.Va [...]
+<a name="L2732"></a><tt class="py-lineno">2732</tt>  <tt class="py-line">                             <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-818" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-818', 'name', 'link-117');">name</a></tt><tt class="py-op">,</tt> <tt class="py-name">context</tt><tt class="py-op">=</tt><tt class="py-name">context</tt><tt class="py-op">,</tt> </tt>
+<a name="L2733"></a><tt class="py-lineno">2733</tt>  <tt class="py-line">                             <tt class="py-name">tooltip</tt><tt class="py-op">=</tt><tt class="py-string">'%s'</tt> <tt class="py-op">%</tt> <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-819" class="py-name"><a title="epydoc.apidoc.VariableDoc.imported_from" class="py-name" href="#" onclick="return doclink('link-819', 'imported_from', 'link-814');">imported_from</a></tt><tt class="py-op">)</t [...]
+<a name="L2734"></a><tt class="py-lineno">2734</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-op">(</tt><tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-820" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-820', 'value', 'link-61');">value</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt cla [...]
+<a name="L2735"></a><tt class="py-lineno">2735</tt>  <tt class="py-line">              <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-822" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-822', 'value', 'link-61');">value</a></tt><tt class="py-op">,</tt> <tt id="link-823" class="py-name"><a title="epydoc.apidoc.GenericValueDoc" class="py-name"  [...]
+<a name="L2736"></a><tt class="py-lineno">2736</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-824" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.href" class="py-name" href="#" onclick="return doclink('link-824', 'href', 'link-254');">href</a></tt><tt class="py-op">(</tt><tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-825" class="py-name"><a title="epydoc.apidoc.Va [...]
+<a name="L2737"></a><tt class="py-lineno">2737</tt>  <tt class="py-line">                             <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-826" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-826', 'name', 'link-117');">name</a></tt><tt class="py-op">,</tt> <tt class="py-name">context</tt><tt class="py-op">=</tt><tt class="py-name">context</tt><tt class="py-op">,</tt> </tt>
+<a name="L2738"></a><tt class="py-lineno">2738</tt>  <tt class="py-line">                             <tt class="py-name">tooltip</tt><tt class="py-op">=</tt><tt class="py-string">'%s'</tt> <tt class="py-op">%</tt> <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-827" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-827', 'value', 'link-61');">value</a></tt><tt class="py-op">.</tt><tt id="link-828" class [...]
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-828', 'canonical_name', 'link-82');">canonical_name</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2739"></a><tt class="py-lineno">2739</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L2740"></a><tt class="py-lineno">2740</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt id="link-829" class="py-name"><a title="epydoc.util.plaintext_to_html" class="py-name" href="#" onclick="return doclink('link-829', 'plaintext_to_html', 'link-32');">plaintext_to_html</a></tt><tt class="py-op">(</tt><tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-830" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href [...]
+</div><a name="L2741"></a><tt class="py-lineno">2741</tt>  <tt class="py-line">             </tt>
+<a name="L2742"></a><tt class="py-lineno">2742</tt>  <tt class="py-line">    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L2743"></a><tt class="py-lineno">2743</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#{ Function Attributes</tt> </tt>
+<a name="L2744"></a><tt class="py-lineno">2744</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L2745"></a><tt class="py-lineno">2745</tt>  <tt class="py-line"><tt class="py-comment"></tt>         </tt>
+<a name="L2746"></a><tt class="py-lineno">2746</tt>  <tt class="py-line">    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L2747"></a><tt class="py-lineno">2747</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#{ Module Trees</tt> </tt>
+<a name="L2748"></a><tt class="py-lineno">2748</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L2749"></a><tt class="py-lineno">2749</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="HTMLWriter.write_module_list"></a><div id="HTMLWriter.write_module_list-def"><a name="L2750"></a><tt class="py-lineno">2750</tt> <a class="py-toggle" href="#" id="HTMLWriter.write_module_list-toggle" onclick="return toggle('HTMLWriter.write_module_list');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html.HTMLWriter-class.html#write_module_list">write_module_list</a><tt class="py-op">(</tt><tt class="py-param">self</t [...]
+</div><div id="HTMLWriter.write_module_list-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLWriter.write_module_list-expanded"><a name="L2751"></a><tt class="py-lineno">2751</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-831" class="py-name"><a title="epydoc.apidoc.ModuleDoc.submodules" class="py-name" href="#" onclick="re [...]
+<a name="L2752"></a><tt class="py-lineno">2752</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-832" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_table_header" class="py-name" href="#" onclick="return doclink('link-832', 'write_table_header', 'link-375');">write_table_header</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-string">"summary"</tt><tt class="py-op">,</tt> [...]
+<a name="L2753"></a><tt class="py-lineno">2753</tt>  <tt class="py-line"> </tt>
+<a name="L2754"></a><tt class="py-lineno">2754</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">group_name</tt> <tt class="py-keyword">in</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-833" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.group_names" class="py-name" href="#" onclick="return doclink('link-833', 'group_names', 'link-568');">group_names</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op"> [...]
+<a name="L2755"></a><tt class="py-lineno">2755</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-834" class="py-name" targets="Variable epydoc.apidoc.ModuleDoc.submodule_groups=epydoc.apidoc.ModuleDoc-class.html#submodule_groups"><a title="epydoc.apidoc.ModuleDoc.submodule_groups" class="py-name" href="#" onclick="return doclink('link-834', 'submodule_groups', 'link-834');" [...]
+<a name="L2756"></a><tt class="py-lineno">2756</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">group_name</tt><tt class="py-op">:</tt> </tt>
+<a name="L2757"></a><tt class="py-lineno">2757</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-835" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_group_header" class="py-name" href="#" onclick="return doclink('link-835', 'write_group_header', 'link-579');">write_group_header</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-name">group_name</tt><tt class="py-op" [...]
+<a name="L2758"></a><tt class="py-lineno">2758</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'  <tr><td class="summary">\n'</tt> </tt>
+<a name="L2759"></a><tt class="py-lineno">2759</tt>  <tt class="py-line">                <tt class="py-string">'  <ul class="nomargin">\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2760"></a><tt class="py-lineno">2760</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">submodule</tt> <tt class="py-keyword">in</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-836" class="py-name"><a title="epydoc.apidoc.ModuleDoc.submodule_groups" class="py-name" href="#" onclick="return doclink('link-836', 'submodule_groups', 'link-834');">submodule_groups</a></tt><tt class="py-op">[</tt><tt class="py-name">group_n [...]
+<a name="L2761"></a><tt class="py-lineno">2761</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-837" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_module_tree_item
+epydoc.docwriter.latex.LatexWriter.write_module_tree_item" class="py-name" href="#" onclick="return doclink('link-837', 'write_module_tree_item', 'link-328');">write_module_tree_item</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-name">submodule</tt><tt class="py-op">,</tt> <tt id="link-838" class="py-name"><a title="epydoc.apidoc.ModuleDoc.package" class="py-name" href="#" onclick="return doclink('link-838', 'package', 'link-325');">pa [...]
+<a name="L2762"></a><tt class="py-lineno">2762</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'  </ul></td></tr>\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2763"></a><tt class="py-lineno">2763</tt>  <tt class="py-line">                 </tt>
+<a name="L2764"></a><tt class="py-lineno">2764</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-839" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.TABLE_FOOTER" class="py-name" href="#" onclick="return doclink('link-839', 'TABLE_FOOTER', 'link-581');">TABLE_FOOTER</a></tt><tt class="py-op">+</tt><tt class="py-string">'\n<br />\n'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2765"></a><tt class="py-lineno">2765</tt>  <tt class="py-line"> </tt>
+<a name="HTMLWriter.write_module_tree_item"></a><div id="HTMLWriter.write_module_tree_item-def"><a name="L2766"></a><tt class="py-lineno">2766</tt> <a class="py-toggle" href="#" id="HTMLWriter.write_module_tree_item-toggle" onclick="return toggle('HTMLWriter.write_module_tree_item');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html.HTMLWriter-class.html#write_module_tree_item">write_module_tree_item</a><tt class="py-op">(</t [...]
+</div><div id="HTMLWriter.write_module_tree_item-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLWriter.write_module_tree_item-expanded"><a name="L2767"></a><tt class="py-lineno">2767</tt>  <tt class="py-line">        <tt class="py-comment"># If it's a private variable, then mark its <li>.</tt> </tt>
+<a name="L2768"></a><tt class="py-lineno">2768</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">var</tt> <tt class="py-op">=</tt> <tt id="link-840" class="py-name"><a title="epydoc.apidoc.ModuleDoc.package" class="py-name" href="#" onclick="return doclink('link-840', 'package', 'link-325');">package</a></tt> <tt class="py-keyword">and</tt> <tt id="link-841" class="py-name"><a title="epydoc.apidoc.ModuleDoc.package" class="py-name" href="#" onclick="return [...]
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-843', 'canonical_name', 'link-82');">canonical_name</a></tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L2769"></a><tt class="py-lineno">2769</tt>  <tt class="py-line">        <tt class="py-name">priv</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">var</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-name">var</tt><tt class="py-op">.</tt><tt id="link-844" class="py-name"><a title="epydoc.apidoc.VariableDoc.is_public" class="py-name" href= [...]
+<a name="L2770"></a><tt class="py-lineno">2770</tt>  <tt class="py-line">                <tt class="py-op">(</tt><tt class="py-name">var</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-845" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-845', 'canonical_name', 'link-82');">canonical_name</a></tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">startswith</tt><tt class="py-op">(</tt><tt class="py-string">'_'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2771"></a><tt class="py-lineno">2771</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'    <li%s> <strong class="uidlink">%s</strong>'</tt> </tt>
+<a name="L2772"></a><tt class="py-lineno">2772</tt>  <tt class="py-line">            <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">priv</tt> <tt class="py-keyword">and</tt> <tt class="py-string">' class="private"'</tt> <tt class="py-keyword">or</tt> <tt class="py-string">''</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-846" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.href" class="py-name" href="#" oncl [...]
+<a name="L2773"></a><tt class="py-lineno">2773</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-847" class="py-name"><a title="epydoc.apidoc.APIDoc.summary
+epydoc.docwriter.html.HTMLWriter.summary
+epydoc.markup.ConcatenatedDocstring.summary
+epydoc.markup.ParsedDocstring.summary
+epydoc.markup.epytext.ParsedEpytextDocstring.summary
+epydoc.markup.javadoc.ParsedJavadocDocstring.summary
+epydoc.markup.plaintext.ParsedPlaintextDocstring.summary
+epydoc.markup.restructuredtext.ParsedRstDocstring.summary" class="py-name" href="#" onclick="return doclink('link-847', 'summary', 'link-642');">summary</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-848" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-848', 'UNKNOWN', 'link-229');">UNKNOWN</a></tt><tt class="py-op">)< [...]
+<a name="L2774"></a><tt class="py-lineno">2774</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">': <em class="summary">'</tt><tt class="py-op">+</tt> </tt>
+<a name="L2775"></a><tt class="py-lineno">2775</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-849" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.description" class="py-name" href="#" onclick="return doclink('link-849', 'description', 'link-620');">description</a></tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-850" class="py-name"><a title="epydoc.apidoc.APIDoc.summary
+epydoc.docwriter.html.HTMLWriter.summary
+epydoc.markup.ConcatenatedDocstring.summary
+epydoc.markup.ParsedDocstring.summary
+epydoc.markup.epytext.ParsedEpytextDocstring.summary
+epydoc.markup.javadoc.ParsedJavadocDocstring.summary
+epydoc.markup.plaintext.ParsedPlaintextDocstring.summary
+epydoc.markup.restructuredtext.ParsedRstDocstring.summary" class="py-name" href="#" onclick="return doclink('link-850', 'summary', 'link-642');">summary</a></tt><tt class="py-op">,</tt> <tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt class="py-number">8</tt><tt class="py-op">)</tt><tt class="py-op">+</tt><tt class="py-string">'</em>'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2776"></a><tt class="py-lineno">2776</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-851" class="py-name"><a title="epydoc.apidoc.ModuleDoc.submodules" class="py-name" href="#" onclick="return doclink('link-851', 'submodules', 'link-53');">submodules</a></tt> <tt class="py-op">!=</tt> <tt id="link-852" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclin [...]
+<a name="L2777"></a><tt class="py-lineno">2777</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">priv</tt><tt class="py-op">:</tt> <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'\n    <ul class="private">\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2778"></a><tt class="py-lineno">2778</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'\n    <ul>\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2779"></a><tt class="py-lineno">2779</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">submodule</tt> <tt class="py-keyword">in</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-854" class="py-name"><a title="epydoc.apidoc.ModuleDoc.submodules" class="py-name" href="#" onclick="return doclink('link-854', 'submodules', 'link-53');">submodules</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L2780"></a><tt class="py-lineno">2780</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-855" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_module_tree_item
+epydoc.docwriter.latex.LatexWriter.write_module_tree_item" class="py-name" href="#" onclick="return doclink('link-855', 'write_module_tree_item', 'link-328');">write_module_tree_item</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-name">submodule</tt><tt class="py-op">,</tt> <tt id="link-856" class="py-name"><a title="epydoc.apidoc.ModuleDoc.package" class="py-name" href="#" onclick="return doclink('link-856', 'package', 'link-325');">pa [...]
+<a name="L2781"></a><tt class="py-lineno">2781</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'    </ul>\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2782"></a><tt class="py-lineno">2782</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'    </li>\n'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2783"></a><tt class="py-lineno">2783</tt>  <tt class="py-line"> </tt>
+<a name="L2784"></a><tt class="py-lineno">2784</tt>  <tt class="py-line">    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L2785"></a><tt class="py-lineno">2785</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#{ Class trees</tt> </tt>
+<a name="L2786"></a><tt class="py-lineno">2786</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L2787"></a><tt class="py-lineno">2787</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L2788"></a><tt class="py-lineno">2788</tt>  <tt class="py-line">    <tt id="link-857" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_class_tree_item" class="py-name" href="#" onclick="return doclink('link-857', 'write_class_tree_item', 'link-343');">write_class_tree_item</a></tt> <tt class="py-op">=</tt> <tt id="link-858" class="py-name"><a title="epydoc.docwriter.html.compile_template" class="py-name" href="#" onclick="return doclink('link-858', 'compile_templ [...]
+<a name="L2789"></a><tt class="py-lineno">2789</tt>  <tt class="py-line">        <tt class="py-string">'''</tt> </tt>
+<a name="L2790"></a><tt class="py-lineno">2790</tt>  <tt class="py-line"><tt class="py-string">        write_class_tree_item(self, out, doc, class_set)</tt> </tt>
+<a name="L2791"></a><tt class="py-lineno">2791</tt>  <tt class="py-line"><tt class="py-string">        '''</tt><tt class="py-op">,</tt> </tt>
+<a name="L2792"></a><tt class="py-lineno">2792</tt>  <tt class="py-line">        <tt class="py-comment"># /------------------------- Template -------------------------\</tt> </tt>
+<a name="L2793"></a><tt class="py-lineno">2793</tt>  <tt class="py-line">        <tt class="py-string">'''</tt> </tt>
+<a name="L2794"></a><tt class="py-lineno">2794</tt>  <tt class="py-line"><tt class="py-string">        >>> if doc.summary in (None, UNKNOWN):</tt> </tt>
+<a name="L2795"></a><tt class="py-lineno">2795</tt>  <tt class="py-line"><tt class="py-string">            <li> <strong class="uidlink">$self.href(doc)$</strong></tt> </tt>
+<a name="L2796"></a><tt class="py-lineno">2796</tt>  <tt class="py-line"><tt class="py-string">        >>> else:</tt> </tt>
+<a name="L2797"></a><tt class="py-lineno">2797</tt>  <tt class="py-line"><tt class="py-string">            <li> <strong class="uidlink">$self.href(doc)$</strong>:</tt> </tt>
+<a name="L2798"></a><tt class="py-lineno">2798</tt>  <tt class="py-line"><tt class="py-string">              <em class="summary">$self.description(doc.summary, doc, 8)$</em></tt> </tt>
+<a name="L2799"></a><tt class="py-lineno">2799</tt>  <tt class="py-line"><tt class="py-string">        >>> # endif</tt> </tt>
+<a name="L2800"></a><tt class="py-lineno">2800</tt>  <tt class="py-line"><tt class="py-string">        >>> if doc.subclasses:</tt> </tt>
+<a name="L2801"></a><tt class="py-lineno">2801</tt>  <tt class="py-line"><tt class="py-string">            <ul></tt> </tt>
+<a name="L2802"></a><tt class="py-lineno">2802</tt>  <tt class="py-line"><tt class="py-string">        >>>   for subclass in sorted(set(doc.subclasses), key=lambda c:c.canonical_name[-1]):</tt> </tt>
+<a name="L2803"></a><tt class="py-lineno">2803</tt>  <tt class="py-line"><tt class="py-string">        >>>     if subclass in class_set:</tt> </tt>
+<a name="L2804"></a><tt class="py-lineno">2804</tt>  <tt class="py-line"><tt class="py-string">        >>>       self.write_class_tree_item(out, subclass, class_set)</tt> </tt>
+<a name="L2805"></a><tt class="py-lineno">2805</tt>  <tt class="py-line"><tt class="py-string">        >>>     #endif</tt> </tt>
+<a name="L2806"></a><tt class="py-lineno">2806</tt>  <tt class="py-line"><tt class="py-string">        >>>   #endfor</tt> </tt>
+<a name="L2807"></a><tt class="py-lineno">2807</tt>  <tt class="py-line"><tt class="py-string">            </ul></tt> </tt>
+<a name="L2808"></a><tt class="py-lineno">2808</tt>  <tt class="py-line"><tt class="py-string">        >>> #endif</tt> </tt>
+<a name="L2809"></a><tt class="py-lineno">2809</tt>  <tt class="py-line"><tt class="py-string">            </li></tt> </tt>
+<a name="L2810"></a><tt class="py-lineno">2810</tt>  <tt class="py-line"><tt class="py-string">        '''</tt><tt class="py-op">)</tt> </tt>
+<a name="L2811"></a><tt class="py-lineno">2811</tt>  <tt class="py-line">        <tt class="py-comment"># \------------------------------------------------------------/</tt> </tt>
+<a name="L2812"></a><tt class="py-lineno">2812</tt>  <tt class="py-line"><tt class="py-comment"></tt>     </tt>
+<a name="L2813"></a><tt class="py-lineno">2813</tt>  <tt class="py-line">    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L2814"></a><tt class="py-lineno">2814</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#{ Standard Fields</tt> </tt>
+<a name="L2815"></a><tt class="py-lineno">2815</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L2816"></a><tt class="py-lineno">2816</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="HTMLWriter.write_standard_fields"></a><div id="HTMLWriter.write_standard_fields-def"><a name="L2817"></a><tt class="py-lineno">2817</tt> <a class="py-toggle" href="#" id="HTMLWriter.write_standard_fields-toggle" onclick="return toggle('HTMLWriter.write_standard_fields');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html.HTMLWriter-class.html#write_standard_fields">write_standard_fields</a><tt class="py-op">(</tt><tt  [...]
+</div><div id="HTMLWriter.write_standard_fields-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLWriter.write_standard_fields-expanded"><a name="L2818"></a><tt class="py-lineno">2818</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L2819"></a><tt class="py-lineno">2819</tt>  <tt class="py-line"><tt class="py-docstring">        Write HTML code containing descriptions of any standard markup</tt> </tt>
+<a name="L2820"></a><tt class="py-lineno">2820</tt>  <tt class="py-line"><tt class="py-docstring">        fields that are defined by the given L{APIDoc} object (such as</tt> </tt>
+<a name="L2821"></a><tt class="py-lineno">2821</tt>  <tt class="py-line"><tt class="py-docstring">        C{@author} and C{@todo} fields).</tt> </tt>
+<a name="L2822"></a><tt class="py-lineno">2822</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L2823"></a><tt class="py-lineno">2823</tt>  <tt class="py-line"><tt class="py-docstring">        @param doc: The L{APIDoc} object containing the API documentation</tt> </tt>
+<a name="L2824"></a><tt class="py-lineno">2824</tt>  <tt class="py-line"><tt class="py-docstring">            for the object whose standard markup fields should be</tt> </tt>
+<a name="L2825"></a><tt class="py-lineno">2825</tt>  <tt class="py-line"><tt class="py-docstring">            described.</tt> </tt>
+<a name="L2826"></a><tt class="py-lineno">2826</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L2827"></a><tt class="py-lineno">2827</tt>  <tt class="py-line">        <tt class="py-name">fields</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L2828"></a><tt class="py-lineno">2828</tt>  <tt class="py-line">        <tt class="py-name">field_values</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L2829"></a><tt class="py-lineno">2829</tt>  <tt class="py-line">         </tt>
+<a name="L2830"></a><tt class="py-lineno">2830</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-op">(</tt><tt class="py-name">field</tt><tt class="py-op">,</tt> <tt id="link-859" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-859', 'arg', 'link-370');">arg</a></tt><tt class="py-op">,</tt> <tt id="link-860" class="py-name"><a title="epydoc.apidoc.APIDoc.descr
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-860', 'descr', 'link-228');">descr</a></tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-861" class="py-name"><a title="epydoc.apidoc.APIDoc.metadata" class="py-name" href="#" onclick="return doclink('link-861', 'metadata', 'link-231');">metadata</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L2831"></a><tt class="py-lineno">2831</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">field</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">field_values</tt><tt class="py-op">:</tt> </tt>
+<a name="L2832"></a><tt class="py-lineno">2832</tt>  <tt class="py-line">                <tt class="py-name">fields</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">field</tt><tt class="py-op">)</tt> </tt>
+<a name="L2833"></a><tt class="py-lineno">2833</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">field</tt><tt class="py-op">.</tt><tt class="py-name">takes_arg</tt><tt class="py-op">:</tt> </tt>
+<a name="L2834"></a><tt class="py-lineno">2834</tt>  <tt class="py-line">                <tt class="py-name">subfields</tt> <tt class="py-op">=</tt> <tt class="py-name">field_values</tt><tt class="py-op">.</tt><tt class="py-name">setdefault</tt><tt class="py-op">(</tt><tt class="py-name">field</tt><tt class="py-op">,</tt><tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
+<a name="L2835"></a><tt class="py-lineno">2835</tt>  <tt class="py-line">                <tt class="py-name">subfields</tt><tt class="py-op">.</tt><tt class="py-name">setdefault</tt><tt class="py-op">(</tt><tt id="link-862" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-862', 'arg', 'link-370');">arg</a></tt><tt class="py-op">,</tt><tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt [...]
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-863', 'descr', 'link-228');">descr</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2836"></a><tt class="py-lineno">2836</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L2837"></a><tt class="py-lineno">2837</tt>  <tt class="py-line">                <tt class="py-name">field_values</tt><tt class="py-op">.</tt><tt class="py-name">setdefault</tt><tt class="py-op">(</tt><tt class="py-name">field</tt><tt class="py-op">,</tt><tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-864" class="py-name"><a title="epydoc.apidoc.APIDoc.descr
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-864', 'descr', 'link-228');">descr</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2838"></a><tt class="py-lineno">2838</tt>  <tt class="py-line"> </tt>
+<a name="L2839"></a><tt class="py-lineno">2839</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">fields</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> </tt>
+<a name="L2840"></a><tt class="py-lineno">2840</tt>  <tt class="py-line"> </tt>
+<a name="L2841"></a><tt class="py-lineno">2841</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'<div class="fields">'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2842"></a><tt class="py-lineno">2842</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">field</tt> <tt class="py-keyword">in</tt> <tt class="py-name">fields</tt><tt class="py-op">:</tt> </tt>
+<a name="L2843"></a><tt class="py-lineno">2843</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">field</tt><tt class="py-op">.</tt><tt class="py-name">takes_arg</tt><tt class="py-op">:</tt> </tt>
+<a name="L2844"></a><tt class="py-lineno">2844</tt>  <tt class="py-line">                <tt class="py-keyword">for</tt> <tt id="link-865" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-865', 'arg', 'link-370');">arg</a></tt><tt class="py-op">,</tt> <tt class="py-name">descrs</tt> <tt class="py-keyword">in</tt> <tt class="py-name">field_values</tt><tt class="py-op">[</tt><tt class="py-name">field</tt><tt class="py-op">]</tt><tt c [...]
+<a name="L2845"></a><tt class="py-lineno">2845</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-866" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.write_standard_field()=epydoc.docwriter.html.HTMLWriter-class.html#write_standard_field,Method epydoc.docwriter.latex.LatexWriter.write_standard_field()=epydoc.docwriter.latex.LatexWriter-class.html#write_standard_field"><a title="epydoc.docwriter.html.HTMLWriter [...]
+epydoc.docwriter.latex.LatexWriter.write_standard_field" class="py-name" href="#" onclick="return doclink('link-866', 'write_standard_field', 'link-866');">write_standard_field</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt class="py-name">field</tt><tt class="py-op">,</tt> <tt class="py-name">descrs</tt><tt class="py-op">,</tt> <tt id="link-867" class="py-name"><a title="epydoc.markup.Field.ar [...]
+<a name="L2846"></a><tt class="py-lineno">2846</tt>  <tt class="py-line">                                               </tt>
+<a name="L2847"></a><tt class="py-lineno">2847</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L2848"></a><tt class="py-lineno">2848</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-868" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_standard_field
+epydoc.docwriter.latex.LatexWriter.write_standard_field" class="py-name" href="#" onclick="return doclink('link-868', 'write_standard_field', 'link-866');">write_standard_field</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt class="py-name">field</tt><tt class="py-op">,</tt> <tt class="py-name">field_values</tt><tt class="py-op">[</tt><tt class="py-name">field</tt><tt class="py-op">]</tt><tt cla [...]
+<a name="L2849"></a><tt class="py-lineno">2849</tt>  <tt class="py-line"> </tt>
+<a name="L2850"></a><tt class="py-lineno">2850</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'</div>'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2851"></a><tt class="py-lineno">2851</tt>  <tt class="py-line"> </tt>
+<a name="L2852"></a><tt class="py-lineno">2852</tt>  <tt class="py-line">    <tt id="link-869" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_standard_field
+epydoc.docwriter.latex.LatexWriter.write_standard_field" class="py-name" href="#" onclick="return doclink('link-869', 'write_standard_field', 'link-866');">write_standard_field</a></tt> <tt class="py-op">=</tt> <tt id="link-870" class="py-name"><a title="epydoc.docwriter.html.compile_template" class="py-name" href="#" onclick="return doclink('link-870', 'compile_template', 'link-427');">compile_template</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L2853"></a><tt class="py-lineno">2853</tt>  <tt class="py-line">        <tt class="py-string">"""</tt> </tt>
+<a name="L2854"></a><tt class="py-lineno">2854</tt>  <tt class="py-line"><tt class="py-string">        write_standard_field(self, out, doc, field, descrs, arg='')</tt> </tt>
+<a name="L2855"></a><tt class="py-lineno">2855</tt>  <tt class="py-line"><tt class="py-string">        </tt> </tt>
+<a name="L2856"></a><tt class="py-lineno">2856</tt>  <tt class="py-line"><tt class="py-string">        """</tt><tt class="py-op">,</tt> </tt>
+<a name="L2857"></a><tt class="py-lineno">2857</tt>  <tt class="py-line">        <tt class="py-comment"># /------------------------- Template -------------------------\</tt> </tt>
+<a name="L2858"></a><tt class="py-lineno">2858</tt>  <tt class="py-line">        <tt class="py-string">'''</tt> </tt>
+<a name="L2859"></a><tt class="py-lineno">2859</tt>  <tt class="py-line"><tt class="py-string">        >>> if arg: arglabel = " (%s)" % arg</tt> </tt>
+<a name="L2860"></a><tt class="py-lineno">2860</tt>  <tt class="py-line"><tt class="py-string">        >>> else: arglabel = ""</tt> </tt>
+<a name="L2861"></a><tt class="py-lineno">2861</tt>  <tt class="py-line"><tt class="py-string">        >>>   if len(descrs) == 1:</tt> </tt>
+<a name="L2862"></a><tt class="py-lineno">2862</tt>  <tt class="py-line"><tt class="py-string">              <p><strong>$field.singular+arglabel$:</strong></tt> </tt>
+<a name="L2863"></a><tt class="py-lineno">2863</tt>  <tt class="py-line"><tt class="py-string">                $self.description(descrs[0], doc, 8)$</tt> </tt>
+<a name="L2864"></a><tt class="py-lineno">2864</tt>  <tt class="py-line"><tt class="py-string">              </p></tt> </tt>
+<a name="L2865"></a><tt class="py-lineno">2865</tt>  <tt class="py-line"><tt class="py-string">        >>>   elif field.short:</tt> </tt>
+<a name="L2866"></a><tt class="py-lineno">2866</tt>  <tt class="py-line"><tt class="py-string">              <dl><dt>$field.plural+arglabel$:</dt></tt> </tt>
+<a name="L2867"></a><tt class="py-lineno">2867</tt>  <tt class="py-line"><tt class="py-string">                <dd></tt> </tt>
+<a name="L2868"></a><tt class="py-lineno">2868</tt>  <tt class="py-line"><tt class="py-string">        >>>     for descr in descrs[:-1]:</tt> </tt>
+<a name="L2869"></a><tt class="py-lineno">2869</tt>  <tt class="py-line"><tt class="py-string">                  $self.description(descr, doc, 10)$,</tt> </tt>
+<a name="L2870"></a><tt class="py-lineno">2870</tt>  <tt class="py-line"><tt class="py-string">        >>>     # end for</tt> </tt>
+<a name="L2871"></a><tt class="py-lineno">2871</tt>  <tt class="py-line"><tt class="py-string">                  $self.description(descrs[-1], doc, 10)$</tt> </tt>
+<a name="L2872"></a><tt class="py-lineno">2872</tt>  <tt class="py-line"><tt class="py-string">                </dd></tt> </tt>
+<a name="L2873"></a><tt class="py-lineno">2873</tt>  <tt class="py-line"><tt class="py-string">              </dl></tt> </tt>
+<a name="L2874"></a><tt class="py-lineno">2874</tt>  <tt class="py-line"><tt class="py-string">        >>>   else:</tt> </tt>
+<a name="L2875"></a><tt class="py-lineno">2875</tt>  <tt class="py-line"><tt class="py-string">              <strong>$field.plural+arglabel$:</strong></tt> </tt>
+<a name="L2876"></a><tt class="py-lineno">2876</tt>  <tt class="py-line"><tt class="py-string">              <ul class="nomargin-top"></tt> </tt>
+<a name="L2877"></a><tt class="py-lineno">2877</tt>  <tt class="py-line"><tt class="py-string">        >>>     for descr in descrs:</tt> </tt>
+<a name="L2878"></a><tt class="py-lineno">2878</tt>  <tt class="py-line"><tt class="py-string">                <li></tt> </tt>
+<a name="L2879"></a><tt class="py-lineno">2879</tt>  <tt class="py-line"><tt class="py-string">                $self.description(descr, doc, 8)$</tt> </tt>
+<a name="L2880"></a><tt class="py-lineno">2880</tt>  <tt class="py-line"><tt class="py-string">                </li></tt> </tt>
+<a name="L2881"></a><tt class="py-lineno">2881</tt>  <tt class="py-line"><tt class="py-string">        >>>     # end for</tt> </tt>
+<a name="L2882"></a><tt class="py-lineno">2882</tt>  <tt class="py-line"><tt class="py-string">              </ul></tt> </tt>
+<a name="L2883"></a><tt class="py-lineno">2883</tt>  <tt class="py-line"><tt class="py-string">        >>>   # end else</tt> </tt>
+<a name="L2884"></a><tt class="py-lineno">2884</tt>  <tt class="py-line"><tt class="py-string">        >>> # end for</tt> </tt>
+<a name="L2885"></a><tt class="py-lineno">2885</tt>  <tt class="py-line"><tt class="py-string">        '''</tt><tt class="py-op">)</tt> </tt>
+<a name="L2886"></a><tt class="py-lineno">2886</tt>  <tt class="py-line">        <tt class="py-comment"># \------------------------------------------------------------/</tt> </tt>
+<a name="L2887"></a><tt class="py-lineno">2887</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L2888"></a><tt class="py-lineno">2888</tt>  <tt class="py-line">    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L2889"></a><tt class="py-lineno">2889</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#{ Index generation</tt> </tt>
+<a name="L2890"></a><tt class="py-lineno">2890</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L2891"></a><tt class="py-lineno">2891</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L2892"></a><tt class="py-lineno">2892</tt>  <tt class="py-line">    <tt class="py-comment">#: A list of metadata indices that should be generated.  Each</tt> </tt>
+<a name="L2893"></a><tt class="py-lineno">2893</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#: entry in this list is a tuple C{(tag, label, short_label)},</tt> </tt>
+<a name="L2894"></a><tt class="py-lineno">2894</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#: where C{tag} is the cannonical tag of a metadata field;</tt> </tt>
+<a name="L2895"></a><tt class="py-lineno">2895</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#: C{label} is a label for the index page; and C{short_label}</tt> </tt>
+<a name="L2896"></a><tt class="py-lineno">2896</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#: is a shorter label, used in the index selector.</tt> </tt>
+<a name="L2897"></a><tt class="py-lineno">2897</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-871" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.METADATA_INDICES" class="py-name" href="#" onclick="return doclink('link-871', 'METADATA_INDICES', 'link-69');">METADATA_INDICES</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-string">'bug'</tt><tt class="py-op">,</tt> <tt class="py-string">'Bug List'</tt><tt c [...]
+<a name="L2898"></a><tt class="py-lineno">2898</tt>  <tt class="py-line">                        <tt class="py-op">(</tt><tt class="py-string">'todo'</tt><tt class="py-op">,</tt> <tt class="py-string">'To Do List'</tt><tt class="py-op">,</tt> <tt class="py-string">'To Do'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L2899"></a><tt class="py-lineno">2899</tt>  <tt class="py-line">                        <tt class="py-op">(</tt><tt class="py-string">'change'</tt><tt class="py-op">,</tt> <tt class="py-string">'Change Log'</tt><tt class="py-op">,</tt> <tt class="py-string">'Changes'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L2900"></a><tt class="py-lineno">2900</tt>  <tt class="py-line">                        <tt class="py-op">(</tt><tt class="py-string">'deprecated'</tt><tt class="py-op">,</tt> <tt class="py-string">'Deprecation List'</tt><tt class="py-op">,</tt> <tt class="py-string">'Deprecations'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L2901"></a><tt class="py-lineno">2901</tt>  <tt class="py-line">                        <tt class="py-op">(</tt><tt class="py-string">'since'</tt><tt class="py-op">,</tt> <tt class="py-string">'Introductions List'</tt><tt class="py-op">,</tt> <tt class="py-string">'Introductions'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L2902"></a><tt class="py-lineno">2902</tt>  <tt class="py-line">                        <tt class="py-op">]</tt> </tt>
+<a name="L2903"></a><tt class="py-lineno">2903</tt>  <tt class="py-line">     </tt>
+<a name="HTMLWriter.build_identifier_index"></a><div id="HTMLWriter.build_identifier_index-def"><a name="L2904"></a><tt class="py-lineno">2904</tt> <a class="py-toggle" href="#" id="HTMLWriter.build_identifier_index-toggle" onclick="return toggle('HTMLWriter.build_identifier_index');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html.HTMLWriter-class.html#build_identifier_index">build_identifier_index</a><tt class="py-op">(</t [...]
+</div><div id="HTMLWriter.build_identifier_index-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLWriter.build_identifier_index-expanded"><a name="L2905"></a><tt class="py-lineno">2905</tt>  <tt class="py-line">        <tt class="py-name">items</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L2906"></a><tt class="py-lineno">2906</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">indexed_docs</tt><tt class="py-op">:</tt> </tt>
+<a name="L2907"></a><tt class="py-lineno">2907</tt>  <tt class="py-line">            <tt id="link-872" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-872', 'name', 'link-117');">name</a></tt> <tt class="py-op">=</tt> <tt id="link-873" class="py-name"><a title="epydoc.util.plaintext_to_html" class="py-name" href="#" onclick="return doclink('link-873', 'plaintext_to_html', 'link-32');">plaintext_to_html</a></tt><tt class="py [...]
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-874', 'canonical_name', 'link-82');">canonical_name</a></tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L2908"></a><tt class="py-lineno">2908</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt id="link-875" class="py-name"><a title="epydoc.apidoc.RoutineDoc" class="py-name" href="#" onclick="return doclink('link-875', 'RoutineDoc', 'link-57');">RoutineDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt id="link-876" class="py-name"><a t [...]
+<a name="L2909"></a><tt class="py-lineno">2909</tt>  <tt class="py-line">            <tt id="link-877" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.url" class="py-name" href="#" onclick="return doclink('link-877', 'url', 'link-72');">url</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-878" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.url" class="py-name" href="#" onclick="return doclink('link-878', 'url', 'li [...]
+<a name="L2910"></a><tt class="py-lineno">2910</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-879" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.url" class="py-name" href="#" onclick="return doclink('link-879', 'url', 'link-72');">url</a></tt><tt class="py-op">:</tt> <tt class="py-keyword">continue</tt> </tt>
+<a name="L2911"></a><tt class="py-lineno">2911</tt>  <tt class="py-line">            <tt id="link-880" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-880', 'container', 'link-63');">container</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">docindex</tt><tt class="py-op">.</tt><tt id="link-881" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-881', 'container', 'link-63');">container</a></tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">)</tt> </tt>
+<a name="L2912"></a><tt class="py-lineno">2912</tt>  <tt class="py-line">            <tt class="py-name">items</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt> <tt class="py-op">(</tt><tt id="link-882" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-882', 'name', 'link-117');">name</a></tt><tt class="py-op">,</tt> <tt id="link-883" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter [...]
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-884', 'container', 'link-63');">container</a></tt><tt class="py-op">)</tt> <tt class="py-op">)</tt> </tt>
+<a name="L2913"></a><tt class="py-lineno">2913</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-885" class="py-name"><a title="epydoc.compat.sorted" class="py-name" href="#" onclick="return doclink('link-885', 'sorted', 'link-49');">sorted</a></tt><tt class="py-op">(</tt><tt class="py-name">items</tt><tt class="py-op">,</tt> <tt id="link-886" class="py-name"><a title="epydoc.cli.key" class="py-name" href="#" onclick="return doclink('link-886', 'key', 'lin [...]
+</div><a name="L2914"></a><tt class="py-lineno">2914</tt>  <tt class="py-line"> </tt>
+<a name="HTMLWriter._group_by_letter"></a><div id="HTMLWriter._group_by_letter-def"><a name="L2915"></a><tt class="py-lineno">2915</tt> <a class="py-toggle" href="#" id="HTMLWriter._group_by_letter-toggle" onclick="return toggle('HTMLWriter._group_by_letter');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html.HTMLWriter-class.html#_group_by_letter">_group_by_letter</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt  [...]
+</div><div id="HTMLWriter._group_by_letter-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLWriter._group_by_letter-expanded"><a name="L2916"></a><tt class="py-lineno">2916</tt>  <tt class="py-line">        <tt class="py-docstring">"""Preserves sort order of the input."""</tt> </tt>
+<a name="L2917"></a><tt class="py-lineno">2917</tt>  <tt class="py-line">        <tt class="py-name">index</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L2918"></a><tt class="py-lineno">2918</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">item</tt> <tt class="py-keyword">in</tt> <tt class="py-name">items</tt><tt class="py-op">:</tt> </tt>
+<a name="L2919"></a><tt class="py-lineno">2919</tt>  <tt class="py-line">            <tt class="py-name">first_letter</tt> <tt class="py-op">=</tt> <tt class="py-name">item</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">upper</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L2920"></a><tt class="py-lineno">2920</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-op">(</tt><tt class="py-string">"A"</tt> <tt class="py-op"><=</tt> <tt class="py-name">first_letter</tt> <tt class="py-op"><=</tt> <tt class="py-string">"Z"</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L2921"></a><tt class="py-lineno">2921</tt>  <tt class="py-line">                <tt class="py-name">first_letter</tt> <tt class="py-op">=</tt> <tt class="py-string">'_'</tt> </tt>
+<a name="L2922"></a><tt class="py-lineno">2922</tt>  <tt class="py-line">            <tt class="py-name">index</tt><tt class="py-op">.</tt><tt class="py-name">setdefault</tt><tt class="py-op">(</tt><tt class="py-name">first_letter</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">item</tt><tt class="py-op">)</tt> </tt>
+<a name="L2923"></a><tt class="py-lineno">2923</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">index</tt> </tt>
+</div><a name="L2924"></a><tt class="py-lineno">2924</tt>  <tt class="py-line">     </tt>
+<a name="HTMLWriter.build_term_index"></a><div id="HTMLWriter.build_term_index-def"><a name="L2925"></a><tt class="py-lineno">2925</tt> <a class="py-toggle" href="#" id="HTMLWriter.build_term_index-toggle" onclick="return toggle('HTMLWriter.build_term_index');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html.HTMLWriter-class.html#build_term_index">build_term_index</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt  [...]
+</div><div id="HTMLWriter.build_term_index-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLWriter.build_term_index-expanded"><a name="L2926"></a><tt class="py-lineno">2926</tt>  <tt class="py-line">        <tt class="py-name">items</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L2927"></a><tt class="py-lineno">2927</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">indexed_docs</tt><tt class="py-op">:</tt> </tt>
+<a name="L2928"></a><tt class="py-lineno">2928</tt>  <tt class="py-line">            <tt id="link-889" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.url" class="py-name" href="#" onclick="return doclink('link-889', 'url', 'link-72');">url</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-890" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.url" class="py-name" href="#" onclick="return doclink('link-890', 'url', 'li [...]
+<a name="L2929"></a><tt class="py-lineno">2929</tt>  <tt class="py-line">            <tt class="py-name">items</tt> <tt class="py-op">+=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-891" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter._terms_from_docstring()=epydoc.docwriter.html.HTMLWriter-class.html#_terms_from_docstring"><a title="epydoc.docwriter.html.HTMLWriter._terms_from_docstring" class="py-name" href="#" onclick="return doclink('link-89 [...]
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-893', 'descr', 'link-228');">descr</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2930"></a><tt class="py-lineno">2930</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-op">(</tt><tt class="py-name">field</tt><tt class="py-op">,</tt> <tt id="link-894" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-894', 'arg', 'link-370');">arg</a></tt><tt class="py-op">,</tt> <tt id="link-895" class="py-name"><a title="epydoc.apidoc.APIDoc.descr
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-895', 'descr', 'link-228');">descr</a></tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-896" class="py-name"><a title="epydoc.apidoc.APIDoc.metadata" class="py-name" href="#" onclick="return doclink('link-896', 'metadata', 'link-231');">metadata</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L2931"></a><tt class="py-lineno">2931</tt>  <tt class="py-line">                <tt class="py-name">items</tt> <tt class="py-op">+=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-897" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter._terms_from_docstring" class="py-name" href="#" onclick="return doclink('link-897', '_terms_from_docstring', 'link-891');">_terms_from_docstring</a></tt><tt class="py-op">(</tt><tt id="link-898" class="py-name"><a ti [...]
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-899', 'descr', 'link-228');">descr</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2932"></a><tt class="py-lineno">2932</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt class="py-string">'type_descr'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L2933"></a><tt class="py-lineno">2933</tt>  <tt class="py-line">                    <tt class="py-name">items</tt> <tt class="py-op">+=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-900" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter._terms_from_docstring" class="py-name" href="#" onclick="return doclink('link-900', '_terms_from_docstring', 'link-891');">_terms_from_docstring</a></tt><tt class="py-op">(</tt><tt id="link-901" class="py-name">< [...]
+<a name="L2934"></a><tt class="py-lineno">2934</tt>  <tt class="py-line">                                                        <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-902" class="py-name"><a title="epydoc.apidoc.PropertyDoc.type_descr
+epydoc.apidoc.VariableDoc.type_descr
+epydoc.docwriter.html.HTMLWriter.type_descr" class="py-name" href="#" onclick="return doclink('link-902', 'type_descr', 'link-631');">type_descr</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2935"></a><tt class="py-lineno">2935</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt class="py-string">'return_descr'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L2936"></a><tt class="py-lineno">2936</tt>  <tt class="py-line">                    <tt class="py-name">items</tt> <tt class="py-op">+=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-903" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter._terms_from_docstring" class="py-name" href="#" onclick="return doclink('link-903', '_terms_from_docstring', 'link-891');">_terms_from_docstring</a></tt><tt class="py-op">(</tt><tt id="link-904" class="py-name">< [...]
+<a name="L2937"></a><tt class="py-lineno">2937</tt>  <tt class="py-line">                                                        <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-905" class="py-name"><a title="epydoc.apidoc.RoutineDoc.return_descr
+epydoc.docwriter.html.HTMLWriter.return_descr" class="py-name" href="#" onclick="return doclink('link-905', 'return_descr', 'link-669');">return_descr</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2938"></a><tt class="py-lineno">2938</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt class="py-string">'return_type'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L2939"></a><tt class="py-lineno">2939</tt>  <tt class="py-line">                    <tt class="py-name">items</tt> <tt class="py-op">+=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-906" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter._terms_from_docstring" class="py-name" href="#" onclick="return doclink('link-906', '_terms_from_docstring', 'link-891');">_terms_from_docstring</a></tt><tt class="py-op">(</tt><tt id="link-907" class="py-name">< [...]
+<a name="L2940"></a><tt class="py-lineno">2940</tt>  <tt class="py-line">                                                        <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-908" class="py-name"><a title="epydoc.apidoc.RoutineDoc.return_type
+epydoc.docwriter.html.HTMLWriter.return_type" class="py-name" href="#" onclick="return doclink('link-908', 'return_type', 'link-619');">return_type</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2941"></a><tt class="py-lineno">2941</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-909" class="py-name"><a title="epydoc.compat.sorted" class="py-name" href="#" onclick="return doclink('link-909', 'sorted', 'link-49');">sorted</a></tt><tt class="py-op">(</tt><tt class="py-name">items</tt><tt class="py-op">,</tt> <tt id="link-910" class="py-name"><a title="epydoc.cli.key" class="py-name" href="#" onclick="return doclink('link-910', 'key', 'lin [...]
+</div><a name="L2942"></a><tt class="py-lineno">2942</tt>  <tt class="py-line"> </tt>
+<a name="HTMLWriter._terms_from_docstring"></a><div id="HTMLWriter._terms_from_docstring-def"><a name="L2943"></a><tt class="py-lineno">2943</tt> <a class="py-toggle" href="#" id="HTMLWriter._terms_from_docstring-toggle" onclick="return toggle('HTMLWriter._terms_from_docstring');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html.HTMLWriter-class.html#_terms_from_docstring">_terms_from_docstring</a><tt class="py-op">(</tt><tt  [...]
+</div><div id="HTMLWriter._terms_from_docstring-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLWriter._terms_from_docstring-expanded"><a name="L2944"></a><tt class="py-lineno">2944</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">parsed_docstring</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-913" class="py-name"><a title="epydoc.apidoc.UNK [...]
+<a name="L2945"></a><tt class="py-lineno">2945</tt>  <tt class="py-line">        <tt class="py-name">terms</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L2946"></a><tt class="py-lineno">2946</tt>  <tt class="py-line">        <tt class="py-comment"># Strip any existing anchor off:</tt> </tt>
+<a name="L2947"></a><tt class="py-lineno">2947</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">base_url</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt class="py-string">'#.*'</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">,</tt> <tt class="py-string">'%s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">base_url< [...]
+<a name="L2948"></a><tt class="py-lineno">2948</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">term</tt> <tt class="py-keyword">in</tt> <tt class="py-name">parsed_docstring</tt><tt class="py-op">.</tt><tt id="link-914" class="py-name" targets="Method epydoc.markup.ConcatenatedDocstring.index_terms()=epydoc.markup.ConcatenatedDocstring-class.html#index_terms,Method epydoc.markup.ParsedDocstring.index_terms()=epydoc.markup.ParsedDocstring-class.html#in [...]
+epydoc.markup.ParsedDocstring.index_terms
+epydoc.markup.epytext.ParsedEpytextDocstring.index_terms
+epydoc.markup.restructuredtext.ParsedRstDocstring.index_terms" class="py-name" href="#" onclick="return doclink('link-914', 'index_terms', 'link-914');">index_terms</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L2949"></a><tt class="py-lineno">2949</tt>  <tt class="py-line">            <tt class="py-name">anchor</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-915" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter._term_index_to_anchor()=epydoc.docwriter.html.HTMLWriter-class.html#_term_index_to_anchor"><a title="epydoc.docwriter.html.HTMLWriter._term_index_to_anchor" class="py-name" href="#" onclick="return doclink('link-91 [...]
+<a name="L2950"></a><tt class="py-lineno">2950</tt>  <tt class="py-line">            <tt id="link-916" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.url" class="py-name" href="#" onclick="return doclink('link-916', 'url', 'link-72');">url</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'%s#%s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">base_url</tt><tt class="py-op">,</tt> <tt class="py-name">anchor</tt><tt class="py-op">)</tt> </tt>
+<a name="L2951"></a><tt class="py-lineno">2951</tt>  <tt class="py-line">            <tt class="py-name">terms</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt> <tt class="py-op">(</tt><tt class="py-name">term</tt><tt class="py-op">.</tt><tt id="link-917" class="py-name"><a title="epydoc.markup.ConcatenatedDocstring.to_plaintext
+epydoc.markup.ParsedDocstring.to_plaintext
+epydoc.markup.epytext.ParsedEpytextDocstring.to_plaintext
+epydoc.markup.epytext.to_plaintext
+epydoc.markup.javadoc.ParsedJavadocDocstring.to_plaintext
+epydoc.markup.plaintext.ParsedPlaintextDocstring.to_plaintext
+epydoc.markup.restructuredtext.ParsedRstDocstring.to_plaintext" class="py-name" href="#" onclick="return doclink('link-917', 'to_plaintext', 'link-727');">to_plaintext</a></tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt id="link-918" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.url" class="py-name" href="#" onclick="return doclink('link-918', 'url', 'link-72');">url</a></tt><tt class="py-op">,</tt> <tt id="link-9 [...]
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-919', 'container', 'link-63');">container</a></tt><tt class="py-op">)</tt> <tt class="py-op">)</tt> </tt>
+<a name="L2952"></a><tt class="py-lineno">2952</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">terms</tt> </tt>
+</div><a name="L2953"></a><tt class="py-lineno">2953</tt>  <tt class="py-line"> </tt>
+<a name="HTMLWriter.build_metadata_index"></a><div id="HTMLWriter.build_metadata_index-def"><a name="L2954"></a><tt class="py-lineno">2954</tt> <a class="py-toggle" href="#" id="HTMLWriter.build_metadata_index-toggle" onclick="return toggle('HTMLWriter.build_metadata_index');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html.HTMLWriter-class.html#build_metadata_index">build_metadata_index</a><tt class="py-op">(</tt><tt class= [...]
+</div><div id="HTMLWriter.build_metadata_index-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLWriter.build_metadata_index-expanded"><a name="L2955"></a><tt class="py-lineno">2955</tt>  <tt class="py-line">        <tt class="py-comment"># Build the index.</tt> </tt>
+<a name="L2956"></a><tt class="py-lineno">2956</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">index</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L2957"></a><tt class="py-lineno">2957</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">indexed_docs</tt><tt class="py-op">:</tt> </tt>
+<a name="L2958"></a><tt class="py-lineno">2958</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_show_private</tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L2959"></a><tt class="py-lineno">2959</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-920" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter._doc_or_ancestor_is_private" class="py-name" href="#" onclick="return doclink('link-920', '_doc_or_ancestor_is_private', 'link-374');">_doc_or_ancestor_is_private</a></tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><t [...]
+<a name="L2960"></a><tt class="py-lineno">2960</tt>  <tt class="py-line">                <tt class="py-keyword">continue</tt> </tt>
+<a name="L2961"></a><tt class="py-lineno">2961</tt>  <tt class="py-line">            <tt class="py-name">descrs</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L2962"></a><tt class="py-lineno">2962</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-921" class="py-name"><a title="epydoc.apidoc.APIDoc.metadata" class="py-name" href="#" onclick="return doclink('link-921', 'metadata', 'link-231');">metadata</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt id="link-922" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name [...]
+<a name="L2963"></a><tt class="py-lineno">2963</tt>  <tt class="py-line">                <tt class="py-keyword">for</tt> <tt class="py-op">(</tt><tt class="py-name">field</tt><tt class="py-op">,</tt> <tt id="link-923" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-923', 'arg', 'link-370');">arg</a></tt><tt class="py-op">,</tt> <tt id="link-924" class="py-name"><a title="epydoc.apidoc.APIDoc.descr
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-924', 'descr', 'link-228');">descr</a></tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-925" class="py-name"><a title="epydoc.apidoc.APIDoc.metadata" class="py-name" href="#" onclick="return doclink('link-925', 'metadata', 'link-231');">metadata</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L2964"></a><tt class="py-lineno">2964</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">field</tt><tt class="py-op">.</tt><tt class="py-name">tags</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-name">field_name</tt><tt class="py-op">:</tt> </tt>
+<a name="L2965"></a><tt class="py-lineno">2965</tt>  <tt class="py-line">                        <tt class="py-name">descrs</tt><tt class="py-op">.</tt><tt class="py-name">setdefault</tt><tt class="py-op">(</tt><tt id="link-926" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-926', 'arg', 'link-370');">arg</a></tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">.</ [...]
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-927', 'descr', 'link-228');">descr</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2966"></a><tt class="py-lineno">2966</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-op">(</tt><tt id="link-928" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-928', 'arg', 'link-370');">arg</a></tt><tt class="py-op">,</tt> <tt class="py-name">descr_list</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-name">descrs</tt><tt class="py-op">.</tt><tt class="py-nam [...]
+<a name="L2967"></a><tt class="py-lineno">2967</tt>  <tt class="py-line">                <tt class="py-name">index</tt><tt class="py-op">.</tt><tt class="py-name">setdefault</tt><tt class="py-op">(</tt><tt id="link-929" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-929', 'arg', 'link-370');">arg</a></tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt cl [...]
+<a name="L2968"></a><tt class="py-lineno">2968</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">index</tt> </tt>
+</div><a name="L2969"></a><tt class="py-lineno">2969</tt>  <tt class="py-line"> </tt>
+<a name="HTMLWriter._term_index_to_anchor"></a><div id="HTMLWriter._term_index_to_anchor-def"><a name="L2970"></a><tt class="py-lineno">2970</tt> <a class="py-toggle" href="#" id="HTMLWriter._term_index_to_anchor-toggle" onclick="return toggle('HTMLWriter._term_index_to_anchor');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html.HTMLWriter-class.html#_term_index_to_anchor">_term_index_to_anchor</a><tt class="py-op">(</tt><tt  [...]
+</div><div id="HTMLWriter._term_index_to_anchor-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLWriter._term_index_to_anchor-expanded"><a name="L2971"></a><tt class="py-lineno">2971</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L2972"></a><tt class="py-lineno">2972</tt>  <tt class="py-line"><tt class="py-docstring">        Given the name of an inline index item, construct a URI anchor.</tt> </tt>
+<a name="L2973"></a><tt class="py-lineno">2973</tt>  <tt class="py-line"><tt class="py-docstring">        These anchors are used to create links from the index page to each</tt> </tt>
+<a name="L2974"></a><tt class="py-lineno">2974</tt>  <tt class="py-line"><tt class="py-docstring">        index item.</tt> </tt>
+<a name="L2975"></a><tt class="py-lineno">2975</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L2976"></a><tt class="py-lineno">2976</tt>  <tt class="py-line">        <tt class="py-comment"># Include "-" so we don't accidentally collide with the name</tt> </tt>
+<a name="L2977"></a><tt class="py-lineno">2977</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># of a python identifier.</tt> </tt>
+<a name="L2978"></a><tt class="py-lineno">2978</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt class="py-string">r'\s\s+'</tt><tt class="py-op">,</tt> <tt class="py-string">'-'</tt><tt class="py-op">,</tt> <tt class="py-name">term</tt><tt class="py-op">.</tt><tt id="link-930" class="py-name"><a title="epydoc.markup.Co [...]
+epydoc.markup.ParsedDocstring.to_plaintext
+epydoc.markup.epytext.ParsedEpytextDocstring.to_plaintext
+epydoc.markup.epytext.to_plaintext
+epydoc.markup.javadoc.ParsedJavadocDocstring.to_plaintext
+epydoc.markup.plaintext.ParsedPlaintextDocstring.to_plaintext
+epydoc.markup.restructuredtext.ParsedRstDocstring.to_plaintext" class="py-name" href="#" onclick="return doclink('link-930', 'to_plaintext', 'link-727');">to_plaintext</a></tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2979"></a><tt class="py-lineno">2979</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">"index-"</tt><tt class="py-op">+</tt><tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt class="py-string">"[^a-zA-Z0-9]"</tt><tt class="py-op">,</tt> <tt class="py-string">"_"</tt><tt class="py-op">,</tt> <tt class="py-name">s</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2980"></a><tt class="py-lineno">2980</tt>  <tt class="py-line"> </tt>
+<a name="L2981"></a><tt class="py-lineno">2981</tt>  <tt class="py-line">    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L2982"></a><tt class="py-lineno">2982</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#{ Redirect page</tt> </tt>
+<a name="L2983"></a><tt class="py-lineno">2983</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L2984"></a><tt class="py-lineno">2984</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="HTMLWriter.write_redirect_page"></a><div id="HTMLWriter.write_redirect_page-def"><a name="L2985"></a><tt class="py-lineno">2985</tt> <a class="py-toggle" href="#" id="HTMLWriter.write_redirect_page-toggle" onclick="return toggle('HTMLWriter.write_redirect_page');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html.HTMLWriter-class.html#write_redirect_page">write_redirect_page</a><tt class="py-op">(</tt><tt class="py-pa [...]
+</div><div id="HTMLWriter.write_redirect_page-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLWriter.write_redirect_page-expanded"><a name="L2986"></a><tt class="py-lineno">2986</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L2987"></a><tt class="py-lineno">2987</tt>  <tt class="py-line"><tt class="py-docstring">        Build the auto-redirect page, which translates dotted names to</tt> </tt>
+<a name="L2988"></a><tt class="py-lineno">2988</tt>  <tt class="py-line"><tt class="py-docstring">        URLs using javascript.  When the user visits</tt> </tt>
+<a name="L2989"></a><tt class="py-lineno">2989</tt>  <tt class="py-line"><tt class="py-docstring">        <redirect.html#dotted.name>, they will automatically get</tt> </tt>
+<a name="L2990"></a><tt class="py-lineno">2990</tt>  <tt class="py-line"><tt class="py-docstring">        redirected to the page for the object with the given</tt> </tt>
+<a name="L2991"></a><tt class="py-lineno">2991</tt>  <tt class="py-line"><tt class="py-docstring">        fully-qualified dotted name.  E.g., for epydoc,</tt> </tt>
+<a name="L2992"></a><tt class="py-lineno">2992</tt>  <tt class="py-line"><tt class="py-docstring">        <redirect.html#epydoc.apidoc.UNKNOWN> redirects the user to</tt> </tt>
+<a name="L2993"></a><tt class="py-lineno">2993</tt>  <tt class="py-line"><tt class="py-docstring">        <epydoc.apidoc-module.html#UNKNOWN>.</tt> </tt>
+<a name="L2994"></a><tt class="py-lineno">2994</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L2995"></a><tt class="py-lineno">2995</tt>  <tt class="py-line">        <tt class="py-comment"># Construct a list of all the module & class pages that we're</tt> </tt>
+<a name="L2996"></a><tt class="py-lineno">2996</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># documenting.  The redirect_url javascript will scan through</tt> </tt>
+<a name="L2997"></a><tt class="py-lineno">2997</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># this list, looking for a page name that matches the</tt> </tt>
+<a name="L2998"></a><tt class="py-lineno">2998</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># requested dotted name.</tt> </tt>
+<a name="L2999"></a><tt class="py-lineno">2999</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">pages</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">'%s-m'</tt> <tt class="py-op">%</tt> <tt class="py-name">val_doc</tt><tt class="py-op">.</tt><tt id="link-931" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-931', 'canonical_name', 'link-82');">canonical_name</a></tt> </tt>
+<a name="L3000"></a><tt class="py-lineno">3000</tt>  <tt class="py-line">                  <tt class="py-keyword">for</tt> <tt class="py-name">val_doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">module_list</tt><tt class="py-op">]</tt> <tt class="py-op">+</tt> </tt>
+<a name="L3001"></a><tt class="py-lineno">3001</tt>  <tt class="py-line">                 <tt class="py-op">[</tt><tt class="py-string">'%s-c'</tt> <tt class="py-op">%</tt> <tt class="py-name">val_doc</tt><tt class="py-op">.</tt><tt id="link-932" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-932', 'canonical_name', 'link-82');">canonical_name</a></tt> </tt>
+<a name="L3002"></a><tt class="py-lineno">3002</tt>  <tt class="py-line">                  <tt class="py-keyword">for</tt> <tt class="py-name">val_doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">class_list</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L3003"></a><tt class="py-lineno">3003</tt>  <tt class="py-line">        <tt class="py-comment"># Sort the pages from longest to shortest.  This ensures that</tt> </tt>
+<a name="L3004"></a><tt class="py-lineno">3004</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># we find e.g. "x.y.z" in the list before "x.y".</tt> </tt>
+<a name="L3005"></a><tt class="py-lineno">3005</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">pages</tt> <tt class="py-op">=</tt> <tt id="link-933" class="py-name"><a title="epydoc.compat.sorted" class="py-name" href="#" onclick="return doclink('link-933', 'sorted', 'link-49');">sorted</a></tt><tt class="py-op">(</tt><tt class="py-name">pages</tt><tt class="py-op">,</tt> <tt id="link-934" class="py-name"><a title="epydoc.cli.key" class="py-name" href="# [...]
+<a name="L3006"></a><tt class="py-lineno">3006</tt>  <tt class="py-line"> </tt>
+<a name="L3007"></a><tt class="py-lineno">3007</tt>  <tt class="py-line">        <tt class="py-comment"># Write the redirect page.</tt> </tt>
+<a name="L3008"></a><tt class="py-lineno">3008</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-935" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter._write_redirect_page()=epydoc.docwriter.html.HTMLWriter-class.html#_write_redirect_page"><a title="epydoc.docwriter.html.HTMLWriter._write_redirect_page" class="py-name" href="#" onclick="return doclink('link-935', '_write_redirect_page', 'link-93 [...]
+</div><a name="L3009"></a><tt class="py-lineno">3009</tt>  <tt class="py-line"> </tt>
+<a name="L3010"></a><tt class="py-lineno">3010</tt>  <tt class="py-line">    <tt id="link-936" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter._write_redirect_page" class="py-name" href="#" onclick="return doclink('link-936', '_write_redirect_page', 'link-935');">_write_redirect_page</a></tt> <tt class="py-op">=</tt> <tt id="link-937" class="py-name"><a title="epydoc.docwriter.html.compile_template" class="py-name" href="#" onclick="return doclink('link-937', 'compile_template [...]
+<a name="L3011"></a><tt class="py-lineno">3011</tt>  <tt class="py-line">        <tt class="py-string">'''</tt> </tt>
+<a name="L3012"></a><tt class="py-lineno">3012</tt>  <tt class="py-line"><tt class="py-string">        _write_redirect_page(self, out, pages)</tt> </tt>
+<a name="L3013"></a><tt class="py-lineno">3013</tt>  <tt class="py-line"><tt class="py-string">        '''</tt><tt class="py-op">,</tt> </tt>
+<a name="L3014"></a><tt class="py-lineno">3014</tt>  <tt class="py-line">        <tt class="py-comment"># /------------------------- Template -------------------------\</tt> </tt>
+<a name="L3015"></a><tt class="py-lineno">3015</tt>  <tt class="py-line">        <tt class="py-string">'''</tt> </tt>
+<a name="L3016"></a><tt class="py-lineno">3016</tt>  <tt class="py-line"><tt class="py-string">        <html><head><title>Epydoc Redirect Page</title></tt> </tt>
+<a name="L3017"></a><tt class="py-lineno">3017</tt>  <tt class="py-line"><tt class="py-string">        <meta http-equiv="cache-control" content="no-cache" /></tt> </tt>
+<a name="L3018"></a><tt class="py-lineno">3018</tt>  <tt class="py-line"><tt class="py-string">        <meta http-equiv="expires" content="0" /></tt> </tt>
+<a name="L3019"></a><tt class="py-lineno">3019</tt>  <tt class="py-line"><tt class="py-string">        <meta http-equiv="pragma" content="no-cache" /></tt> </tt>
+<a name="L3020"></a><tt class="py-lineno">3020</tt>  <tt class="py-line"><tt class="py-string">          <script type="text/javascript" src="epydoc.js"></script></tt> </tt>
+<a name="L3021"></a><tt class="py-lineno">3021</tt>  <tt class="py-line"><tt class="py-string">        </head></tt> </tt>
+<a name="L3022"></a><tt class="py-lineno">3022</tt>  <tt class="py-line"><tt class="py-string">        <body></tt> </tt>
+<a name="L3023"></a><tt class="py-lineno">3023</tt>  <tt class="py-line"><tt class="py-string">        <script type="text/javascript"></tt> </tt>
+<a name="L3024"></a><tt class="py-lineno">3024</tt>  <tt class="py-line"><tt class="py-string">        <!--</tt> </tt>
+<a name="L3025"></a><tt class="py-lineno">3025</tt>  <tt class="py-line"><tt class="py-string">        var pages = $"[%s]" % ", ".join(['"%s"' % v for v in pages])$;</tt> </tt>
+<a name="L3026"></a><tt class="py-lineno">3026</tt>  <tt class="py-line"><tt class="py-string">        var dottedName = get_anchor();</tt> </tt>
+<a name="L3027"></a><tt class="py-lineno">3027</tt>  <tt class="py-line"><tt class="py-string">        if (dottedName) {</tt> </tt>
+<a name="L3028"></a><tt class="py-lineno">3028</tt>  <tt class="py-line"><tt class="py-string">            var target = redirect_url(dottedName);</tt> </tt>
+<a name="L3029"></a><tt class="py-lineno">3029</tt>  <tt class="py-line"><tt class="py-string">            if (target) window.location.replace(target);</tt> </tt>
+<a name="L3030"></a><tt class="py-lineno">3030</tt>  <tt class="py-line"><tt class="py-string">        }</tt> </tt>
+<a name="L3031"></a><tt class="py-lineno">3031</tt>  <tt class="py-line"><tt class="py-string">        // --></tt> </tt>
+<a name="L3032"></a><tt class="py-lineno">3032</tt>  <tt class="py-line"><tt class="py-string">        </script></tt> </tt>
+<a name="L3033"></a><tt class="py-lineno">3033</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L3034"></a><tt class="py-lineno">3034</tt>  <tt class="py-line"><tt class="py-string">        <h3>Epydoc Auto-redirect page</h3></tt> </tt>
+<a name="L3035"></a><tt class="py-lineno">3035</tt>  <tt class="py-line"><tt class="py-string">        </tt> </tt>
+<a name="L3036"></a><tt class="py-lineno">3036</tt>  <tt class="py-line"><tt class="py-string">        <p>When javascript is enabled, this page will redirect URLs of</tt> </tt>
+<a name="L3037"></a><tt class="py-lineno">3037</tt>  <tt class="py-line"><tt class="py-string">        the form <tt>redirect.html#<i>dotted.name</i></tt> to the</tt> </tt>
+<a name="L3038"></a><tt class="py-lineno">3038</tt>  <tt class="py-line"><tt class="py-string">        documentation for the object with the given fully-qualified</tt> </tt>
+<a name="L3039"></a><tt class="py-lineno">3039</tt>  <tt class="py-line"><tt class="py-string">        dotted name.</p></tt> </tt>
+<a name="L3040"></a><tt class="py-lineno">3040</tt>  <tt class="py-line"><tt class="py-string">        <p><a id="message"> &nbsp; </a></p></tt> </tt>
+<a name="L3041"></a><tt class="py-lineno">3041</tt>  <tt class="py-line"><tt class="py-string">        </tt> </tt>
+<a name="L3042"></a><tt class="py-lineno">3042</tt>  <tt class="py-line"><tt class="py-string">        <script type="text/javascript"></tt> </tt>
+<a name="L3043"></a><tt class="py-lineno">3043</tt>  <tt class="py-line"><tt class="py-string">        <!--</tt> </tt>
+<a name="L3044"></a><tt class="py-lineno">3044</tt>  <tt class="py-line"><tt class="py-string">        if (dottedName) {</tt> </tt>
+<a name="L3045"></a><tt class="py-lineno">3045</tt>  <tt class="py-line"><tt class="py-string">            var msg = document.getElementById("message");</tt> </tt>
+<a name="L3046"></a><tt class="py-lineno">3046</tt>  <tt class="py-line"><tt class="py-string">            msg.innerHTML = "No documentation found for <tt>"+</tt> </tt>
+<a name="L3047"></a><tt class="py-lineno">3047</tt>  <tt class="py-line"><tt class="py-string">                            dottedName+"</tt>";</tt> </tt>
+<a name="L3048"></a><tt class="py-lineno">3048</tt>  <tt class="py-line"><tt class="py-string">        }</tt> </tt>
+<a name="L3049"></a><tt class="py-lineno">3049</tt>  <tt class="py-line"><tt class="py-string">        // --></tt> </tt>
+<a name="L3050"></a><tt class="py-lineno">3050</tt>  <tt class="py-line"><tt class="py-string">        </script></tt> </tt>
+<a name="L3051"></a><tt class="py-lineno">3051</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L3052"></a><tt class="py-lineno">3052</tt>  <tt class="py-line"><tt class="py-string">        </body></tt> </tt>
+<a name="L3053"></a><tt class="py-lineno">3053</tt>  <tt class="py-line"><tt class="py-string">        </html></tt> </tt>
+<a name="L3054"></a><tt class="py-lineno">3054</tt>  <tt class="py-line"><tt class="py-string">        '''</tt><tt class="py-op">)</tt> </tt>
+<a name="L3055"></a><tt class="py-lineno">3055</tt>  <tt class="py-line">        <tt class="py-comment"># \------------------------------------------------------------/</tt> </tt>
+<a name="L3056"></a><tt class="py-lineno">3056</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L3057"></a><tt class="py-lineno">3057</tt>  <tt class="py-line">    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L3058"></a><tt class="py-lineno">3058</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#{ URLs list</tt> </tt>
+<a name="L3059"></a><tt class="py-lineno">3059</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L3060"></a><tt class="py-lineno">3060</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="HTMLWriter.write_api_list"></a><div id="HTMLWriter.write_api_list-def"><a name="L3061"></a><tt class="py-lineno">3061</tt> <a class="py-toggle" href="#" id="HTMLWriter.write_api_list-toggle" onclick="return toggle('HTMLWriter.write_api_list');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html.HTMLWriter-class.html#write_api_list">write_api_list</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op [...]
+</div><div id="HTMLWriter.write_api_list-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLWriter.write_api_list-expanded"><a name="L3062"></a><tt class="py-lineno">3062</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L3063"></a><tt class="py-lineno">3063</tt>  <tt class="py-line"><tt class="py-docstring">        Write a list of mapping name->url for all the documented objects.</tt> </tt>
+<a name="L3064"></a><tt class="py-lineno">3064</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L3065"></a><tt class="py-lineno">3065</tt>  <tt class="py-line">        <tt class="py-comment"># Construct a list of all the module & class pages that we're</tt> </tt>
+<a name="L3066"></a><tt class="py-lineno">3066</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># documenting.  The redirect_url javascript will scan through</tt> </tt>
+<a name="L3067"></a><tt class="py-lineno">3067</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># this list, looking for a page name that matches the</tt> </tt>
+<a name="L3068"></a><tt class="py-lineno">3068</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># requested dotted name.</tt> </tt>
+<a name="L3069"></a><tt class="py-lineno">3069</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">skip</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt id="link-938" class="py-name"><a title="epydoc.apidoc.ModuleDoc" class="py-name" href="#" onclick="return doclink('link-938', 'ModuleDoc', 'link-55');">ModuleDoc</a></tt><tt class="py-op">,</tt> <tt id="link-939" class="py-name"><a title="epydoc.apidoc.ClassDoc" class="py-name" href="#" onclick="ret [...]
+<a name="L3070"></a><tt class="py-lineno">3070</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">val_doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">module_list</tt><tt class="py-op">:</tt> </tt>
+<a name="L3071"></a><tt class="py-lineno">3071</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-941" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.write_url_record()=epydoc.docwriter.html.HTMLWriter-class.html#write_url_record"><a title="epydoc.docwriter.html.HTMLWriter.write_url_record" class="py-name" href="#" onclick="return doclink('link-941', 'write_url_record', 'link-941');">write_url_record</a></tt><tt class [...]
+<a name="L3072"></a><tt class="py-lineno">3072</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">var</tt> <tt class="py-keyword">in</tt> <tt class="py-name">val_doc</tt><tt class="py-op">.</tt><tt id="link-942" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-942', 'variables', 'link-60');">variables</a></tt><tt class="py-op">.</tt><tt class="py-name">itervalues</tt><tt class="py [...]
+<a name="L3073"></a><tt class="py-lineno">3073</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">var</tt><tt class="py-op">.</tt><tt id="link-943" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-943', 'value', 'link-61');">value</a></tt><tt class="py-op">,</tt> <tt class="py-name">skip</tt>< [...]
+<a name="L3074"></a><tt class="py-lineno">3074</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-944" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_url_record" class="py-name" href="#" onclick="return doclink('link-944', 'write_url_record', 'link-941');">write_url_record</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-name">var</tt><tt class="py-op">)</tt> </tt>
+<a name="L3075"></a><tt class="py-lineno">3075</tt>  <tt class="py-line"> </tt>
+<a name="L3076"></a><tt class="py-lineno">3076</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">val_doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">class_list</tt><tt class="py-op">:</tt> </tt>
+<a name="L3077"></a><tt class="py-lineno">3077</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-945" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_url_record" class="py-name" href="#" onclick="return doclink('link-945', 'write_url_record', 'link-941');">write_url_record</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-name">val_doc</tt><tt class="py-op">)</tt> </tt>
+<a name="L3078"></a><tt class="py-lineno">3078</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">var</tt> <tt class="py-keyword">in</tt> <tt class="py-name">val_doc</tt><tt class="py-op">.</tt><tt id="link-946" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-946', 'variables', 'link-60');">variables</a></tt><tt class="py-op">.</tt><tt class="py-name">itervalues</tt><tt class="py [...]
+<a name="L3079"></a><tt class="py-lineno">3079</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-947" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_url_record" class="py-name" href="#" onclick="return doclink('link-947', 'write_url_record', 'link-941');">write_url_record</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-name">var</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3080"></a><tt class="py-lineno">3080</tt>  <tt class="py-line"> </tt>
+<a name="HTMLWriter.write_url_record"></a><div id="HTMLWriter.write_url_record-def"><a name="L3081"></a><tt class="py-lineno">3081</tt> <a class="py-toggle" href="#" id="HTMLWriter.write_url_record-toggle" onclick="return toggle('HTMLWriter.write_url_record');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html.HTMLWriter-class.html#write_url_record">write_url_record</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt  [...]
+</div><div id="HTMLWriter.write_url_record-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLWriter.write_url_record-expanded"><a name="L3082"></a><tt class="py-lineno">3082</tt>  <tt class="py-line">        <tt id="link-948" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.url" class="py-name" href="#" onclick="return doclink('link-948', 'url', 'link-72');">url</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt [...]
+<a name="L3083"></a><tt class="py-lineno">3083</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-950" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.url" class="py-name" href="#" onclick="return doclink('link-950', 'url', 'link-72');">url</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L3084"></a><tt class="py-lineno">3084</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">"%s\t%s\n"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">obj</tt><tt class="py-op">.</tt><tt id="link-951" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-951', 'canonical_name', 'link-82');">canonical_name</a></tt><tt class="py-op">,</tt> <tt id="link-952" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.url" class="py-name" href="#" onclick="return doclink('link-952', 'url', 'link-72');">url</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3085"></a><tt class="py-lineno">3085</tt>  <tt class="py-line"> </tt>
+<a name="L3086"></a><tt class="py-lineno">3086</tt>  <tt class="py-line">    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L3087"></a><tt class="py-lineno">3087</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#{ Helper functions</tt> </tt>
+<a name="L3088"></a><tt class="py-lineno">3088</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L3089"></a><tt class="py-lineno">3089</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="HTMLWriter._val_is_public"></a><div id="HTMLWriter._val_is_public-def"><a name="L3090"></a><tt class="py-lineno">3090</tt> <a class="py-toggle" href="#" id="HTMLWriter._val_is_public-toggle" onclick="return toggle('HTMLWriter._val_is_public');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html.HTMLWriter-class.html#_val_is_public">_val_is_public</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op [...]
+</div><div id="HTMLWriter._val_is_public-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLWriter._val_is_public-expanded"><a name="L3091"></a><tt class="py-lineno">3091</tt>  <tt class="py-line">        <tt class="py-docstring">"""Make a best-guess as to whether the given class is public."""</tt> </tt>
+<a name="L3092"></a><tt class="py-lineno">3092</tt>  <tt class="py-line">        <tt id="link-953" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-953', 'container', 'link-63');">container</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">docindex</tt><tt class="py-op">.</tt><tt id="link-954" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-954', 'container', 'link-63');">container</a></tt><tt class="py-op">(</tt><tt class="py-name">valdoc</tt><tt class="py-op">)</tt> </tt>
+<a name="L3093"></a><tt class="py-lineno">3093</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-955" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-955', 'container', 'link-63');">container</a></tt><tt class="py-op">,</tt> <tt id="link-956" class="py-name"><a title="epydoc.apidoc.NamespaceDoc" class="py-name" href="#" onclick="return doclink('link-956', 'NamespaceDoc', 'link-59');">NamespaceDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L3094"></a><tt class="py-lineno">3094</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">vardoc</tt> <tt class="py-keyword">in</tt> <tt id="link-957" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-957', 'container', 'link-63');">container</a></tt><tt class="py-op">.</tt><tt id="link-958" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-958', 'variables', 'link-60');">variables</a></tt><tt class="py-op">.</tt><tt class="py-name">values</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L3095"></a><tt class="py-lineno">3095</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">vardoc</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt id="link-959" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-959', 'UNKNOWN', 'link-229');">UNKNOWN</a></tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py [...]
+<a name="L3096"></a><tt class="py-lineno">3096</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">vardoc</tt><tt class="py-op">.</tt><tt id="link-960" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-960', 'value', 'link-61');">value</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">valdoc</tt><tt class="py-op">:</tt> </tt>
+<a name="L3097"></a><tt class="py-lineno">3097</tt>  <tt class="py-line">                    <tt class="py-keyword">return</tt> <tt class="py-name">vardoc</tt><tt class="py-op">.</tt><tt id="link-961" class="py-name"><a title="epydoc.apidoc.VariableDoc.is_public" class="py-name" href="#" onclick="return doclink('link-961', 'is_public', 'link-578');">is_public</a></tt> </tt>
+<a name="L3098"></a><tt class="py-lineno">3098</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
+</div><a name="L3099"></a><tt class="py-lineno">3099</tt>  <tt class="py-line"> </tt>
+<a name="L3100"></a><tt class="py-lineno">3100</tt>  <tt class="py-line">    <tt class="py-comment"># [XX] Is it worth-while to pull the anchor tricks that I do here?</tt> </tt>
+<a name="L3101"></a><tt class="py-lineno">3101</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># Or should I just live with the fact that show/hide private moves</tt> </tt>
+<a name="L3102"></a><tt class="py-lineno">3102</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># stuff around?</tt> </tt>
+<a name="L3103"></a><tt class="py-lineno">3103</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-962" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_table_header" class="py-name" href="#" onclick="return doclink('link-962', 'write_table_header', 'link-375');">write_table_header</a></tt> <tt class="py-op">=</tt> <tt id="link-963" class="py-name"><a title="epydoc.docwriter.html.compile_template" class="py-name" href="#" onclick="return doclink('link-9 [...]
+<a name="L3104"></a><tt class="py-lineno">3104</tt>  <tt class="py-line">        <tt class="py-string">'''</tt> </tt>
+<a name="L3105"></a><tt class="py-lineno">3105</tt>  <tt class="py-line"><tt class="py-string">        write_table_header(self, out, css_class, heading=None, \</tt> </tt>
+<a name="L3106"></a><tt class="py-lineno">3106</tt>  <tt class="py-line"><tt class="py-string">                           private_link=True, colspan=2)</tt> </tt>
+<a name="L3107"></a><tt class="py-lineno">3107</tt>  <tt class="py-line"><tt class="py-string">        '''</tt><tt class="py-op">,</tt> </tt>
+<a name="L3108"></a><tt class="py-lineno">3108</tt>  <tt class="py-line">        <tt class="py-comment"># /------------------------- Template -------------------------\</tt> </tt>
+<a name="L3109"></a><tt class="py-lineno">3109</tt>  <tt class="py-line">        <tt class="py-string">'''</tt> </tt>
+<a name="L3110"></a><tt class="py-lineno">3110</tt>  <tt class="py-line"><tt class="py-string">        >>> if heading is not None:</tt> </tt>
+<a name="L3111"></a><tt class="py-lineno">3111</tt>  <tt class="py-line"><tt class="py-string">        >>>     anchor = "section-%s" % re.sub("\W", "", heading)</tt> </tt>
+<a name="L3112"></a><tt class="py-lineno">3112</tt>  <tt class="py-line"><tt class="py-string">        <!-- ==================== $heading.upper()$ ==================== --></tt> </tt>
+<a name="L3113"></a><tt class="py-lineno">3113</tt>  <tt class="py-line"><tt class="py-string">        <a name="$anchor$"></a></tt> </tt>
+<a name="L3114"></a><tt class="py-lineno">3114</tt>  <tt class="py-line"><tt class="py-string">        >>> #endif</tt> </tt>
+<a name="L3115"></a><tt class="py-lineno">3115</tt>  <tt class="py-line"><tt class="py-string">        <table class="$css_class$" border="1" cellpadding="3"</tt> </tt>
+<a name="L3116"></a><tt class="py-lineno">3116</tt>  <tt class="py-line"><tt class="py-string">               cellspacing="0" width="100%" bgcolor="white"></tt> </tt>
+<a name="L3117"></a><tt class="py-lineno">3117</tt>  <tt class="py-line"><tt class="py-string">        >>> if heading is not None:</tt> </tt>
+<a name="L3118"></a><tt class="py-lineno">3118</tt>  <tt class="py-line"><tt class="py-string">        <tr bgcolor="#70b0f0" class="table-header"></tt> </tt>
+<a name="L3119"></a><tt class="py-lineno">3119</tt>  <tt class="py-line"><tt class="py-string">        >>>     if private_link and self._show_private:</tt> </tt>
+<a name="L3120"></a><tt class="py-lineno">3120</tt>  <tt class="py-line"><tt class="py-string">          <td colspan="$colspan$" class="table-header"></tt> </tt>
+<a name="L3121"></a><tt class="py-lineno">3121</tt>  <tt class="py-line"><tt class="py-string">            <table border="0" cellpadding="0" cellspacing="0" width="100%"></tt> </tt>
+<a name="L3122"></a><tt class="py-lineno">3122</tt>  <tt class="py-line"><tt class="py-string">              <tr valign="top"></tt> </tt>
+<a name="L3123"></a><tt class="py-lineno">3123</tt>  <tt class="py-line"><tt class="py-string">                <td align="left"><span class="table-header">$heading$</span></td></tt> </tt>
+<a name="L3124"></a><tt class="py-lineno">3124</tt>  <tt class="py-line"><tt class="py-string">                <td align="right" valign="top"</tt> </tt>
+<a name="L3125"></a><tt class="py-lineno">3125</tt>  <tt class="py-line"><tt class="py-string">                 ><span class="options">[<a href="#$anchor$"</tt> </tt>
+<a name="L3126"></a><tt class="py-lineno">3126</tt>  <tt class="py-line"><tt class="py-string">                 class="privatelink" onclick="toggle_private();"</tt> </tt>
+<a name="L3127"></a><tt class="py-lineno">3127</tt>  <tt class="py-line"><tt class="py-string">                 >hide private</a>]</span></td></tt> </tt>
+<a name="L3128"></a><tt class="py-lineno">3128</tt>  <tt class="py-line"><tt class="py-string">              </tr></tt> </tt>
+<a name="L3129"></a><tt class="py-lineno">3129</tt>  <tt class="py-line"><tt class="py-string">            </table></tt> </tt>
+<a name="L3130"></a><tt class="py-lineno">3130</tt>  <tt class="py-line"><tt class="py-string">          </td></tt> </tt>
+<a name="L3131"></a><tt class="py-lineno">3131</tt>  <tt class="py-line"><tt class="py-string">        >>>     else:</tt> </tt>
+<a name="L3132"></a><tt class="py-lineno">3132</tt>  <tt class="py-line"><tt class="py-string">          <td align="left" colspan="2" class="table-header"></tt> </tt>
+<a name="L3133"></a><tt class="py-lineno">3133</tt>  <tt class="py-line"><tt class="py-string">            <span class="table-header">$heading$</span></td></tt> </tt>
+<a name="L3134"></a><tt class="py-lineno">3134</tt>  <tt class="py-line"><tt class="py-string">        >>>     #endif</tt> </tt>
+<a name="L3135"></a><tt class="py-lineno">3135</tt>  <tt class="py-line"><tt class="py-string">        </tr></tt> </tt>
+<a name="L3136"></a><tt class="py-lineno">3136</tt>  <tt class="py-line"><tt class="py-string">        >>> #endif</tt> </tt>
+<a name="L3137"></a><tt class="py-lineno">3137</tt>  <tt class="py-line"><tt class="py-string">        '''</tt><tt class="py-op">)</tt> </tt>
+<a name="L3138"></a><tt class="py-lineno">3138</tt>  <tt class="py-line">        <tt class="py-comment"># \------------------------------------------------------------/</tt> </tt>
+<a name="L3139"></a><tt class="py-lineno">3139</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L3140"></a><tt class="py-lineno">3140</tt>  <tt class="py-line">    <tt id="link-964" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.TABLE_FOOTER" class="py-name" href="#" onclick="return doclink('link-964', 'TABLE_FOOTER', 'link-581');">TABLE_FOOTER</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'</table>\n'</tt> </tt>
+<a name="L3141"></a><tt class="py-lineno">3141</tt>  <tt class="py-line"> </tt>
+<a name="L3142"></a><tt class="py-lineno">3142</tt>  <tt class="py-line">    <tt id="link-965" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.PRIVATE_LINK" class="py-name" href="#" onclick="return doclink('link-965', 'PRIVATE_LINK', 'link-446');">PRIVATE_LINK</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'''</tt> </tt>
+<a name="L3143"></a><tt class="py-lineno">3143</tt>  <tt class="py-line"><tt class="py-string">    <span class="options">[<a href="javascript:void(0);" class="privatelink"</tt> </tt>
+<a name="L3144"></a><tt class="py-lineno">3144</tt>  <tt class="py-line"><tt class="py-string">    onclick="toggle_private();">hide&nbsp;private</a>]</span></tt> </tt>
+<a name="L3145"></a><tt class="py-lineno">3145</tt>  <tt class="py-line"><tt class="py-string">    '''</tt><tt class="py-op">.</tt><tt class="py-name">strip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L3146"></a><tt class="py-lineno">3146</tt>  <tt class="py-line"> </tt>
+<a name="L3147"></a><tt class="py-lineno">3147</tt>  <tt class="py-line">    <tt id="link-966" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_group_header" class="py-name" href="#" onclick="return doclink('link-966', 'write_group_header', 'link-579');">write_group_header</a></tt> <tt class="py-op">=</tt> <tt id="link-967" class="py-name"><a title="epydoc.docwriter.html.compile_template" class="py-name" href="#" onclick="return doclink('link-967', 'compile_template', 'li [...]
+<a name="L3148"></a><tt class="py-lineno">3148</tt>  <tt class="py-line">        <tt class="py-string">'''</tt> </tt>
+<a name="L3149"></a><tt class="py-lineno">3149</tt>  <tt class="py-line"><tt class="py-string">        write_group_header(self, out, group, tr_class='')</tt> </tt>
+<a name="L3150"></a><tt class="py-lineno">3150</tt>  <tt class="py-line"><tt class="py-string">        '''</tt><tt class="py-op">,</tt> </tt>
+<a name="L3151"></a><tt class="py-lineno">3151</tt>  <tt class="py-line">        <tt class="py-comment"># /------------------------- Template -------------------------\</tt> </tt>
+<a name="L3152"></a><tt class="py-lineno">3152</tt>  <tt class="py-line">        <tt class="py-string">'''</tt> </tt>
+<a name="L3153"></a><tt class="py-lineno">3153</tt>  <tt class="py-line"><tt class="py-string">        <tr bgcolor="#e8f0f8" $tr_class$></tt> </tt>
+<a name="L3154"></a><tt class="py-lineno">3154</tt>  <tt class="py-line"><tt class="py-string">          <th colspan="2" class="group-header"</tt> </tt>
+<a name="L3155"></a><tt class="py-lineno">3155</tt>  <tt class="py-line"><tt class="py-string">            >&nbsp;&nbsp;&nbsp;&nbsp;$group$</th></tr></tt> </tt>
+<a name="L3156"></a><tt class="py-lineno">3156</tt>  <tt class="py-line"><tt class="py-string">        '''</tt><tt class="py-op">)</tt> </tt>
+<a name="L3157"></a><tt class="py-lineno">3157</tt>  <tt class="py-line">        <tt class="py-comment"># \------------------------------------------------------------/</tt> </tt>
+<a name="L3158"></a><tt class="py-lineno">3158</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L3159"></a><tt class="py-lineno">3159</tt>  <tt class="py-line">    <tt id="link-968" class="py-name" targets="Variable epydoc.docwriter.html.HTMLWriter._url_cache=epydoc.docwriter.html.HTMLWriter-class.html#_url_cache"><a title="epydoc.docwriter.html.HTMLWriter._url_cache" class="py-name" href="#" onclick="return doclink('link-968', '_url_cache', 'link-968');">_url_cache</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="HTMLWriter.url"></a><div id="HTMLWriter.url-def"><a name="L3160"></a><tt class="py-lineno">3160</tt> <a class="py-toggle" href="#" id="HTMLWriter.url-toggle" onclick="return toggle('HTMLWriter.url');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html.HTMLWriter-class.html#url">url</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">obj</tt><tt class="py-op">)</tt><tt  [...]
+</div><div id="HTMLWriter.url-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLWriter.url-expanded"><a name="L3161"></a><tt class="py-lineno">3161</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L3162"></a><tt class="py-lineno">3162</tt>  <tt class="py-line"><tt class="py-docstring">        Return the URL for the given object, which can be a</tt> </tt>
+<a name="L3163"></a><tt class="py-lineno">3163</tt>  <tt class="py-line"><tt class="py-docstring">        C{VariableDoc}, a C{ValueDoc}, or a C{DottedName}.</tt> </tt>
+<a name="L3164"></a><tt class="py-lineno">3164</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L3165"></a><tt class="py-lineno">3165</tt>  <tt class="py-line">        <tt class="py-name">cached_url</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-969" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter._url_cache" class="py-name" href="#" onclick="return doclink('link-969', '_url_cache', 'link-968');">_url_cache</a></tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-name">id</ [...]
+<a name="L3166"></a><tt class="py-lineno">3166</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">cached_url</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L3167"></a><tt class="py-lineno">3167</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">cached_url</tt> </tt>
+<a name="L3168"></a><tt class="py-lineno">3168</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L3169"></a><tt class="py-lineno">3169</tt>  <tt class="py-line">            <tt id="link-970" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.url" class="py-name" href="#" onclick="return doclink('link-970', 'url', 'link-72');">url</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-971" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter._url_cache" class="py-name" href="#" onclick="return doclink('link-971', '_u [...]
+<a name="L3170"></a><tt class="py-lineno">3170</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt id="link-973" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.url" class="py-name" href="#" onclick="return doclink('link-973', 'url', 'link-72');">url</a></tt> </tt>
+</div><a name="L3171"></a><tt class="py-lineno">3171</tt>  <tt class="py-line"> </tt>
+<a name="HTMLWriter._url"></a><div id="HTMLWriter._url-def"><a name="L3172"></a><tt class="py-lineno">3172</tt> <a class="py-toggle" href="#" id="HTMLWriter._url-toggle" onclick="return toggle('HTMLWriter._url');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html.HTMLWriter-class.html#_url">_url</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">obj</tt><tt class="py-op">)</t [...]
+</div><div id="HTMLWriter._url-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLWriter._url-expanded"><a name="L3173"></a><tt class="py-lineno">3173</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L3174"></a><tt class="py-lineno">3174</tt>  <tt class="py-line"><tt class="py-docstring">        Internal helper for L{url}.</tt> </tt>
+<a name="L3175"></a><tt class="py-lineno">3175</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L3176"></a><tt class="py-lineno">3176</tt>  <tt class="py-line">        <tt class="py-comment"># Module: <canonical_name>-module.html</tt> </tt>
+<a name="L3177"></a><tt class="py-lineno">3177</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">obj</tt><tt class="py-op">,</tt> <tt id="link-974" class="py-name"><a title="epydoc.apidoc.ModuleDoc" class="py-name" href="#" onclick="return doclink('link-974', 'ModuleDoc', 'link-55');">ModuleDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L3178"></a><tt class="py-lineno">3178</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">obj</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">module_set</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
+<a name="L3179"></a><tt class="py-lineno">3179</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">urllib</tt><tt class="py-op">.</tt><tt class="py-name">quote</tt><tt class="py-op">(</tt><tt class="py-string">'%s'</tt><tt class="py-op">%</tt><tt class="py-name">obj</tt><tt class="py-op">.</tt><tt id="link-975" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-975', 'canonical_name', 'link-82');">canonical_name</a></tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-string">'-module.html'</tt> </tt>
+<a name="L3180"></a><tt class="py-lineno">3180</tt>  <tt class="py-line">        <tt class="py-comment"># Class: <canonical_name>-class.html</tt> </tt>
+<a name="L3181"></a><tt class="py-lineno">3181</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">obj</tt><tt class="py-op">,</tt> <tt id="link-976" class="py-name"><a title="epydoc.apidoc.ClassDoc" class="py-name" href="#" onclick="return doclink('link-976', 'ClassDoc', 'link-56');">ClassDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L3182"></a><tt class="py-lineno">3182</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">obj</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">class_set</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
+<a name="L3183"></a><tt class="py-lineno">3183</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">urllib</tt><tt class="py-op">.</tt><tt class="py-name">quote</tt><tt class="py-op">(</tt><tt class="py-string">'%s'</tt><tt class="py-op">%</tt><tt class="py-name">obj</tt><tt class="py-op">.</tt><tt id="link-977" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-977', 'canonical_name', 'link-82');">canonical_name</a></tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-string">'-class.html'</tt> </tt>
+<a name="L3184"></a><tt class="py-lineno">3184</tt>  <tt class="py-line">        <tt class="py-comment"># Variable</tt> </tt>
+<a name="L3185"></a><tt class="py-lineno">3185</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">obj</tt><tt class="py-op">,</tt> <tt id="link-978" class="py-name"><a title="epydoc.apidoc.VariableDoc" class="py-name" href="#" onclick="return doclink('link-978', 'VariableDoc', 'link-768');">VariableDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L3186"></a><tt class="py-lineno">3186</tt>  <tt class="py-line">            <tt class="py-name">val_doc</tt> <tt class="py-op">=</tt> <tt class="py-name">obj</tt><tt class="py-op">.</tt><tt id="link-979" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-979', 'value', 'link-61');">value</a></tt> </tt>
+<a name="L3187"></a><tt class="py-lineno">3187</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">val_doc</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt id="link-980" class="py-name"><a title="epydoc.apidoc.ModuleDoc" class="py-name" href="#" onclick="return doclink('link-980', 'ModuleDoc', 'link-55');">ModuleDoc</a></tt><tt class="py-op">,</tt> <tt id="link-981" class="py-name"><a  [...]
+<a name="L3188"></a><tt class="py-lineno">3188</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-982" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.url" class="py-name" href="#" onclick="return doclink('link-982', 'url', 'link-72');">url</a></tt><tt class="py-op">(</tt><tt class="py-name">val_doc</tt><tt class="py-op">)</tt> </tt>
+<a name="L3189"></a><tt class="py-lineno">3189</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">obj</tt><tt class="py-op">.</tt><tt id="link-983" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-983', 'container', 'link-63');">container</a></tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-984" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-984', 'UNKNOWN', 'link-229');">UNKNOWN</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L3190"></a><tt class="py-lineno">3190</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">val_doc</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-985" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-985', 'UNKNOWN', 'link-229');">UNKNOWN</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="p [...]
+<a name="L3191"></a><tt class="py-lineno">3191</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-986" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.url" class="py-name" href="#" onclick="return doclink('link-986', 'url', 'link-72');">url</a></tt><tt class="py-op">(</tt><tt class="py-name">val_doc</tt><tt class="py-op">)</tt> </tt>
+<a name="L3192"></a><tt class="py-lineno">3192</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">obj</tt><tt class="py-op">.</tt><tt id="link-987" class="py-name" targets="Variable epydoc.apidoc.VariableDoc.is_imported=epydoc.apidoc.VariableDoc-class.html#is_imported"><a title="epydoc.apidoc.VariableDoc.is_imported" class="py-name" href="#" onclick="return doclink('link-987', 'is_imported', 'link-987');">is_imported</a></tt> <tt class="py-op">==</ [...]
+<a name="L3193"></a><tt class="py-lineno">3193</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">obj</tt><tt class="py-op">.</tt><tt id="link-988" class="py-name"><a title="epydoc.apidoc.VariableDoc.imported_from" class="py-name" href="#" onclick="return doclink('link-988', 'imported_from', 'link-814');">imported_from</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt id="link-989" class="py-name"><a title="epydoc.apidoc [...]
+<a name="L3194"></a><tt class="py-lineno">3194</tt>  <tt class="py-line">                    <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-990" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.url" class="py-name" href="#" onclick="return doclink('link-990', 'url', 'link-72');">url</a></tt><tt class="py-op">(</tt><tt class="py-name">obj</tt><tt class="py-op">.</tt><tt id="link-991" class="py-name"><a title="epydoc.apidoc.Va [...]
+<a name="L3195"></a><tt class="py-lineno">3195</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L3196"></a><tt class="py-lineno">3196</tt>  <tt class="py-line">                    <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
+<a name="L3197"></a><tt class="py-lineno">3197</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L3198"></a><tt class="py-lineno">3198</tt>  <tt class="py-line">                <tt class="py-name">container_url</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-992" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.url" class="py-name" href="#" onclick="return doclink('link-992', 'url', 'link-72');">url</a></tt><tt class="py-op">(</tt><tt class="py-name">obj</tt><tt class="py-op">.</tt><tt id="link-993" class="py-name">< [...]
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-993', 'container', 'link-63');">container</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L3199"></a><tt class="py-lineno">3199</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">container_url</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
+<a name="L3200"></a><tt class="py-lineno">3200</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-string">'%s#%s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">container_url</tt><tt class="py-op">,</tt> <tt class="py-name">urllib</tt><tt class="py-op">.</tt><tt class="py-name">quote</tt><tt class="py-op">(</tt><tt class="py-string">'%s'</tt><tt class="py-op">%</tt><tt class="py-name">obj</tt><tt class="py-op">.</tt><tt i [...]
+<a name="L3201"></a><tt class="py-lineno">3201</tt>  <tt class="py-line">        <tt class="py-comment"># Value (other than module or class)</tt> </tt>
+<a name="L3202"></a><tt class="py-lineno">3202</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">obj</tt><tt class="py-op">,</tt> <tt id="link-995" class="py-name"><a title="epydoc.apidoc.ValueDoc" class="py-name" href="#" onclick="return doclink('link-995', 'ValueDoc', 'link-87');">ValueDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L3203"></a><tt class="py-lineno">3203</tt>  <tt class="py-line">            <tt id="link-996" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-996', 'container', 'link-63');">container</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">docindex</tt><tt class="py-op">.</tt><tt id="link-997" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-997', 'container', 'link-63');">container</a></tt><tt class="py-op">(</tt><tt class="py-name">obj</tt><tt class="py-op">)</tt> </tt>
+<a name="L3204"></a><tt class="py-lineno">3204</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt id="link-998" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-998', 'container', 'link-63');">container</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L3205"></a><tt class="py-lineno">3205</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> <tt class="py-comment"># We couldn't find it!</tt> </tt>
+<a name="L3206"></a><tt class="py-lineno">3206</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L3207"></a><tt class="py-lineno">3207</tt>  <tt class="py-line">                <tt class="py-name">container_url</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-999" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.url" class="py-name" href="#" onclick="return doclink('link-999', 'url', 'link-72');">url</a></tt><tt class="py-op">(</tt><tt id="link-1000" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-1000', 'container', 'link-63');">container</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L3208"></a><tt class="py-lineno">3208</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">container_url</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
+<a name="L3209"></a><tt class="py-lineno">3209</tt>  <tt class="py-line">                <tt class="py-name">anchor</tt> <tt class="py-op">=</tt> <tt class="py-name">urllib</tt><tt class="py-op">.</tt><tt class="py-name">quote</tt><tt class="py-op">(</tt><tt class="py-string">'%s'</tt><tt class="py-op">%</tt><tt class="py-name">obj</tt><tt class="py-op">.</tt><tt id="link-1001" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-1001', 'canonical_name', 'link-82');">canonical_name</a></tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L3210"></a><tt class="py-lineno">3210</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-string">'%s#%s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">container_url</tt><tt class="py-op">,</tt> <tt class="py-name">anchor</tt><tt class="py-op">)</tt> </tt>
+<a name="L3211"></a><tt class="py-lineno">3211</tt>  <tt class="py-line">        <tt class="py-comment"># Dotted name: look up the corresponding APIDoc</tt> </tt>
+<a name="L3212"></a><tt class="py-lineno">3212</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">obj</tt><tt class="py-op">,</tt> <tt id="link-1002" class="py-name" targets="Class epydoc.apidoc.DottedName=epydoc.apidoc.DottedName-class.html"><a title="epydoc.apidoc.DottedName" class="py-name" href="#" onclick="return doclink('link-1002', 'DottedName', 'link-1002');" [...]
+<a name="L3213"></a><tt class="py-lineno">3213</tt>  <tt class="py-line">            <tt class="py-name">val_doc</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">docindex</tt><tt class="py-op">.</tt><tt id="link-1003" class="py-name"><a title="epydoc.apidoc.DocIndex.get_valdoc" class="py-name" href="#" onclick="return doclink('link-1003', 'get_valdoc', 'link-71');">get_valdoc</a></tt><tt class="py-op">(</tt><tt class="py-name">obj</tt [...]
+<a name="L3214"></a><tt class="py-lineno">3214</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">val_doc</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
+<a name="L3215"></a><tt class="py-lineno">3215</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1004" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.url" class="py-name" href="#" onclick="return doclink('link-1004', 'url', 'link-72');">url</a></tt><tt class="py-op">(</tt><tt class="py-name">val_doc</tt><tt class="py-op">)</tt> </tt>
+<a name="L3216"></a><tt class="py-lineno">3216</tt>  <tt class="py-line">        <tt class="py-comment"># Special pages:</tt> </tt>
+<a name="L3217"></a><tt class="py-lineno">3217</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">elif</tt> <tt class="py-name">obj</tt> <tt class="py-op">==</tt> <tt class="py-string">'indices'</tt><tt class="py-op">:</tt> </tt>
+<a name="L3218"></a><tt class="py-lineno">3218</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">'identifier-index.html'</tt> </tt>
+<a name="L3219"></a><tt class="py-lineno">3219</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">obj</tt> <tt class="py-op">==</tt> <tt class="py-string">'help'</tt><tt class="py-op">:</tt> </tt>
+<a name="L3220"></a><tt class="py-lineno">3220</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">'help.html'</tt> </tt>
+<a name="L3221"></a><tt class="py-lineno">3221</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">obj</tt> <tt class="py-op">==</tt> <tt class="py-string">'trees'</tt><tt class="py-op">:</tt> </tt>
+<a name="L3222"></a><tt class="py-lineno">3222</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_trees_url</tt> </tt>
+<a name="L3223"></a><tt class="py-lineno">3223</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L3224"></a><tt class="py-lineno">3224</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">,</tt> <tt class="py-string">"Don't know what to do with %r"</tt> <tt class="py-op">%</tt> <tt class="py-name">obj</tt> </tt>
+</div><a name="L3225"></a><tt class="py-lineno">3225</tt>  <tt class="py-line"> </tt>
+<a name="HTMLWriter.pysrc_link"></a><div id="HTMLWriter.pysrc_link-def"><a name="L3226"></a><tt class="py-lineno">3226</tt> <a class="py-toggle" href="#" id="HTMLWriter.pysrc_link-toggle" onclick="return toggle('HTMLWriter.pysrc_link');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html.HTMLWriter-class.html#pysrc_link">pysrc_link</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-p [...]
+</div><div id="HTMLWriter.pysrc_link-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLWriter.pysrc_link-expanded"><a name="L3227"></a><tt class="py-lineno">3227</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_incl_sourcecode</tt><tt class="py-op">:</tt> </tt>
+<a name="L3228"></a><tt class="py-lineno">3228</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">''</tt> </tt>
+<a name="L3229"></a><tt class="py-lineno">3229</tt>  <tt class="py-line">        <tt id="link-1005" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.url" class="py-name" href="#" onclick="return doclink('link-1005', 'url', 'link-72');">url</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1006" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.pysrc_url" class="py-name" href="#" onclick="return doclink('link-1006', 'pys [...]
+<a name="L3230"></a><tt class="py-lineno">3230</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-1007" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.url" class="py-name" href="#" onclick="return doclink('link-1007', 'url', 'link-72');">url</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt>  </tt>
+<a name="L3231"></a><tt class="py-lineno">3231</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-string">'<span class="codelink"><a href="%s">source&nbsp;'</tt> </tt>
+<a name="L3232"></a><tt class="py-lineno">3232</tt>  <tt class="py-line">                    <tt class="py-string">'code</a></span>'</tt> <tt class="py-op">%</tt> <tt id="link-1008" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.url" class="py-name" href="#" onclick="return doclink('link-1008', 'url', 'link-72');">url</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L3233"></a><tt class="py-lineno">3233</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L3234"></a><tt class="py-lineno">3234</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">''</tt> </tt>
+</div><a name="L3235"></a><tt class="py-lineno">3235</tt>  <tt class="py-line">     </tt>
+<a name="HTMLWriter.pysrc_url"></a><div id="HTMLWriter.pysrc_url-def"><a name="L3236"></a><tt class="py-lineno">3236</tt> <a class="py-toggle" href="#" id="HTMLWriter.pysrc_url-toggle" onclick="return toggle('HTMLWriter.pysrc_url');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html.HTMLWriter-class.html#pysrc_url">pysrc_url</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param"> [...]
+</div><div id="HTMLWriter.pysrc_url-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLWriter.pysrc_url-expanded"><a name="L3237"></a><tt class="py-lineno">3237</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt id="link-1009" class="py-name"><a title="epydoc.apidoc.VariableDoc" class="py-name" href="#" onclick="return doclink [...]
+<a name="L3238"></a><tt class="py-lineno">3238</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-1010" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-1010', 'value', 'link-61');">value</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <t [...]
+<a name="L3239"></a><tt class="py-lineno">3239</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt id="link-1012" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.pysrc_url" class="py-name" href="#" onclick="return doclink('link-1012', 'pysrc_url', 'link-183');">pysrc_url</a></tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-1013" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name [...]
+<a name="L3240"></a><tt class="py-lineno">3240</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L3241"></a><tt class="py-lineno">3241</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
+<a name="L3242"></a><tt class="py-lineno">3242</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt id="link-1014" class="py-name"><a title="epydoc.apidoc.ModuleDoc" class="py-name" href="#" onclick="return doclink('link-1014', 'ModuleDoc', 'link-55');">ModuleDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L3243"></a><tt class="py-lineno">3243</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">api_doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">modules_with_sourcecode</tt><tt class="py-op">:</tt> </tt>
+<a name="L3244"></a><tt class="py-lineno">3244</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-string">'%s-pysrc.html'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L3245"></a><tt class="py-lineno">3245</tt>  <tt class="py-line">                       <tt class="py-name">urllib</tt><tt class="py-op">.</tt><tt class="py-name">quote</tt><tt class="py-op">(</tt><tt class="py-string">'%s'</tt> <tt class="py-op">%</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-1015" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-1015', 'canonical_name', 'link-82');">canonical_name</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L3246"></a><tt class="py-lineno">3246</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L3247"></a><tt class="py-lineno">3247</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
+<a name="L3248"></a><tt class="py-lineno">3248</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L3249"></a><tt class="py-lineno">3249</tt>  <tt class="py-line">            <tt class="py-name">module</tt> <tt class="py-op">=</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-1016" class="py-name"><a title="epydoc.apidoc.ValueDoc.defining_module
+epydoc.apidoc.VariableDoc.defining_module" class="py-name" href="#" onclick="return doclink('link-1016', 'defining_module', 'link-734');">defining_module</a></tt> </tt>
+<a name="L3250"></a><tt class="py-lineno">3250</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">module</tt> <tt class="py-op">==</tt> <tt id="link-1017" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-1017', 'UNKNOWN', 'link-229');">UNKNOWN</a></tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
+<a name="L3251"></a><tt class="py-lineno">3251</tt>  <tt class="py-line">            <tt class="py-name">module_pysrc_url</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1018" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.pysrc_url" class="py-name" href="#" onclick="return doclink('link-1018', 'pysrc_url', 'link-183');">pysrc_url</a></tt><tt class="py-op">(</tt><tt class="py-name">module</tt><tt class="py-op">)</tt> </tt>
+<a name="L3252"></a><tt class="py-lineno">3252</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">module_pysrc_url</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
+<a name="L3253"></a><tt class="py-lineno">3253</tt>  <tt class="py-line">            <tt class="py-name">module_name</tt> <tt class="py-op">=</tt> <tt class="py-name">module</tt><tt class="py-op">.</tt><tt id="link-1019" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-1019', 'canonical_name', 'link-82');">canonical_name</a></tt> </tt>
+<a name="L3254"></a><tt class="py-lineno">3254</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">module_name</tt><tt class="py-op">.</tt><tt id="link-1020" class="py-name"><a title="epydoc.apidoc.DottedName.dominates" class="py-name" href="#" onclick="return doclink('link-1020', 'dominates', 'link-84');">dominates</a></tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-1021 [...]
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-1021', 'canonical_name', 'link-82');">canonical_name</a></tt><tt class="py-op">,</tt> <tt class="py-name">True</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L3255"></a><tt class="py-lineno">3255</tt>  <tt class="py-line">                <tt id="link-1022" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-1022', 'log', 'link-29');">log</a></tt><tt class="py-op">.</tt><tt id="link-1023" class="py-name"><a title="epydoc.log.debug
+epydoc.markup.restructuredtext.OptimizedReporter.debug" class="py-name" href="#" onclick="return doclink('link-1023', 'debug', 'link-40');">debug</a></tt><tt class="py-op">(</tt><tt class="py-string">'%r is in %r but name does not dominate'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L3256"></a><tt class="py-lineno">3256</tt>  <tt class="py-line">                          <tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt class="py-name">module</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L3257"></a><tt class="py-lineno">3257</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">module_pysrc_url</tt> </tt>
+<a name="L3258"></a><tt class="py-lineno">3258</tt>  <tt class="py-line">            <tt class="py-name">mname_len</tt> <tt class="py-op">=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">module</tt><tt class="py-op">.</tt><tt id="link-1024" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-1024', 'canonical_name', 'link-82');">canonical_name</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L3259"></a><tt class="py-lineno">3259</tt>  <tt class="py-line">            <tt class="py-name">anchor</tt> <tt class="py-op">=</tt> <tt class="py-string">'%s'</tt> <tt class="py-op">%</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt id="link-1025" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-1025', 'canonical_name', 'link-82');">canonical_name</a></tt><tt class="py-op">[</tt><tt class="py-name">mname_len</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt>
+<a name="L3260"></a><tt class="py-lineno">3260</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">'%s#%s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">module_pysrc_url</tt><tt class="py-op">,</tt> <tt class="py-name">urllib</tt><tt class="py-op">.</tt><tt class="py-name">quote</tt><tt class="py-op">(</tt><tt class="py-name">anchor</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L3261"></a><tt class="py-lineno">3261</tt>  <tt class="py-line">         </tt>
+<a name="L3262"></a><tt class="py-lineno">3262</tt>  <tt class="py-line">        <tt class="py-comment"># We didn't find it:</tt> </tt>
+<a name="L3263"></a><tt class="py-lineno">3263</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
+</div><a name="L3264"></a><tt class="py-lineno">3264</tt>  <tt class="py-line"> </tt>
+<a name="L3265"></a><tt class="py-lineno">3265</tt>  <tt class="py-line">    <tt class="py-comment"># [xx] add code to automatically do <code> wrapping or the like?</tt> </tt>
+<a name="HTMLWriter.href"></a><div id="HTMLWriter.href-def"><a name="L3266"></a><tt class="py-lineno">3266</tt> <a class="py-toggle" href="#" id="HTMLWriter.href-toggle" onclick="return toggle('HTMLWriter.href');">-</a><tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html.HTMLWriter-class.html#href">href</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">ta [...]
+<a name="L3267"></a><tt class="py-lineno">3267</tt>  <tt class="py-line">             <tt class="py-param">tooltip</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="HTMLWriter.href-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLWriter.href-expanded"><a name="L3268"></a><tt class="py-lineno">3268</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L3269"></a><tt class="py-lineno">3269</tt>  <tt class="py-line"><tt class="py-docstring">        Return the HTML code for an HREF link to the given target</tt> </tt>
+<a name="L3270"></a><tt class="py-lineno">3270</tt>  <tt class="py-line"><tt class="py-docstring">        (which can be a C{VariableDoc}, a C{ValueDoc}, or a</tt> </tt>
+<a name="L3271"></a><tt class="py-lineno">3271</tt>  <tt class="py-line"><tt class="py-docstring">        C{DottedName}.</tt> </tt>
+<a name="L3272"></a><tt class="py-lineno">3272</tt>  <tt class="py-line"><tt class="py-docstring">        If a C{NamespaceDoc} C{context} is specified, the target label is</tt> </tt>
+<a name="L3273"></a><tt class="py-lineno">3273</tt>  <tt class="py-line"><tt class="py-docstring">        contextualized to it.</tt> </tt>
+<a name="L3274"></a><tt class="py-lineno">3274</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L3275"></a><tt class="py-lineno">3275</tt>  <tt class="py-line">        <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">target</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt id="link-1026" class="py-name" targets="Class epydoc.apidoc.APIDoc=epydoc.apidoc.APIDoc-class.html"><a title="epydoc.apidoc.APIDoc" class="py-name" href="#" onclick="return doclink('link-1026', 'APIDoc', 'link-1026');">APIDoc</a></tt [...]
+<a name="L3276"></a><tt class="py-lineno">3276</tt>  <tt class="py-line"> </tt>
+<a name="L3277"></a><tt class="py-lineno">3277</tt>  <tt class="py-line">        <tt class="py-comment"># Pick a label, if none was given.</tt> </tt>
+<a name="L3278"></a><tt class="py-lineno">3278</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt id="link-1028" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.label" class="py-name" href="#" onclick="return doclink('link-1028', 'label', 'link-118');">label</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L3279"></a><tt class="py-lineno">3279</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">target</tt><tt class="py-op">,</tt> <tt id="link-1029" class="py-name"><a title="epydoc.apidoc.VariableDoc" class="py-name" href="#" onclick="return doclink('link-1029', 'VariableDoc', 'link-768');">VariableDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L3280"></a><tt class="py-lineno">3280</tt>  <tt class="py-line">                <tt id="link-1030" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.label" class="py-name" href="#" onclick="return doclink('link-1030', 'label', 'link-118');">label</a></tt> <tt class="py-op">=</tt> <tt class="py-name">target</tt><tt class="py-op">.</tt><tt id="link-1031" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-1031 [...]
+<a name="L3281"></a><tt class="py-lineno">3281</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-op">(</tt><tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">target</tt><tt class="py-op">,</tt> <tt id="link-1032" class="py-name"><a title="epydoc.apidoc.ValueDoc" class="py-name" href="#" onclick="return doclink('link-1032', 'ValueDoc', 'link-87');">ValueDoc</a></tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L3282"></a><tt class="py-lineno">3282</tt>  <tt class="py-line">                  <tt class="py-name">target</tt><tt class="py-op">.</tt><tt id="link-1033" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-1033', 'canonical_name', 'link-82');">canonical_name</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt id="link-1034" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-1034', 'UNKNOWN', 'link-229');">UNKNOWN</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L3283"></a><tt class="py-lineno">3283</tt>  <tt class="py-line">                <tt id="link-1035" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.label" class="py-name" href="#" onclick="return doclink('link-1035', 'label', 'link-118');">label</a></tt> <tt class="py-op">=</tt> <tt class="py-name">target</tt><tt class="py-op">.</tt><tt id="link-1036" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-1036', 'canonical_name', 'link-82');">canonical_name</a></tt> </tt>
+<a name="L3284"></a><tt class="py-lineno">3284</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">target</tt><tt class="py-op">,</tt> <tt id="link-1037" class="py-name"><a title="epydoc.apidoc.DottedName" class="py-name" href="#" onclick="return doclink('link-1037', 'DottedName', 'link-1002');">DottedName</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L3285"></a><tt class="py-lineno">3285</tt>  <tt class="py-line">                <tt id="link-1038" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.label" class="py-name" href="#" onclick="return doclink('link-1038', 'label', 'link-118');">label</a></tt> <tt class="py-op">=</tt> <tt class="py-name">target</tt> </tt>
+<a name="L3286"></a><tt class="py-lineno">3286</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">target</tt><tt class="py-op">,</tt> <tt id="link-1039" class="py-name"><a title="epydoc.apidoc.GenericValueDoc" class="py-name" href="#" onclick="return doclink('link-1039', 'GenericValueDoc', 'link-58');">GenericValueDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L3287"></a><tt class="py-lineno">3287</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"href() should not be called with "</tt> </tt>
+<a name="L3288"></a><tt class="py-lineno">3288</tt>  <tt class="py-line">                                 <tt class="py-string">"GenericValueDoc objects (perhaps you "</tt> </tt>
+<a name="L3289"></a><tt class="py-lineno">3289</tt>  <tt class="py-line">                                 <tt class="py-string">"meant to use the containing variable?)"</tt><tt class="py-op">)</tt> </tt>
+<a name="L3290"></a><tt class="py-lineno">3290</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L3291"></a><tt class="py-lineno">3291</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"Unable to find a label for %r"</tt> <tt class="py-op">%</tt> <tt class="py-name">target</tt><tt class="py-op">)</tt> </tt>
+<a name="L3292"></a><tt class="py-lineno">3292</tt>  <tt class="py-line">                 </tt>
+<a name="L3293"></a><tt class="py-lineno">3293</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">context</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-1040" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.label" class="py-name" href="#" onclick="return doclink('link-1040', 'label', ' [...]
+<a name="L3294"></a><tt class="py-lineno">3294</tt>  <tt class="py-line">                <tt id="link-1042" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.label" class="py-name" href="#" onclick="return doclink('link-1042', 'label', 'link-118');">label</a></tt> <tt class="py-op">=</tt> <tt id="link-1043" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.label" class="py-name" href="#" onclick="return doclink('link-1043', 'label', 'link-118');">label</a></tt><tt c [...]
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-1045', 'canonical_name', 'link-82');">canonical_name</a></tt><tt class="py-op">.</tt><tt id="link-1046" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-1046', 'container', 'link-63');">container</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L3295"></a><tt class="py-lineno">3295</tt>  <tt class="py-line">                 </tt>
+<a name="L3296"></a><tt class="py-lineno">3296</tt>  <tt class="py-line">            <tt id="link-1047" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.label" class="py-name" href="#" onclick="return doclink('link-1047', 'label', 'link-118');">label</a></tt> <tt class="py-op">=</tt> <tt id="link-1048" class="py-name"><a title="epydoc.util.plaintext_to_html" class="py-name" href="#" onclick="return doclink('link-1048', 'plaintext_to_html', 'link-32');">plaintext_to_html</a></ [...]
+<a name="L3297"></a><tt class="py-lineno">3297</tt>  <tt class="py-line">             </tt>
+<a name="L3298"></a><tt class="py-lineno">3298</tt>  <tt class="py-line">            <tt class="py-comment"># Munge names for scripts & unreachable values</tt> </tt>
+<a name="L3299"></a><tt class="py-lineno">3299</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt id="link-1050" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.label" class="py-name" href="#" onclick="return doclink('link-1050', 'label', 'link-118');">label</a></tt><tt class="py-op">.</tt><tt class="py-name">startswith</tt><tt class="py-op">(</tt><tt class="py-string">'script-'</tt><tt class="py-op">)</tt><tt class="py-op">: [...]
+<a name="L3300"></a><tt class="py-lineno">3300</tt>  <tt class="py-line">                <tt id="link-1051" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.label" class="py-name" href="#" onclick="return doclink('link-1051', 'label', 'link-118');">label</a></tt> <tt class="py-op">=</tt> <tt id="link-1052" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.label" class="py-name" href="#" onclick="return doclink('link-1052', 'label', 'link-118');">label</a></tt><tt c [...]
+<a name="L3301"></a><tt class="py-lineno">3301</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt id="link-1053" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.label" class="py-name" href="#" onclick="return doclink('link-1053', 'label', 'link-118');">label</a></tt><tt class="py-op">.</tt><tt class="py-name">startswith</tt><tt class="py-op">(</tt><tt class="py-string">'??'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L3302"></a><tt class="py-lineno">3302</tt>  <tt class="py-line">                <tt id="link-1054" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.label" class="py-name" href="#" onclick="return doclink('link-1054', 'label', 'link-118');">label</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'<i>unreachable</i>'</tt> <tt class="py-op">+</tt> <tt id="link-1055" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.label" class="py-name" hre [...]
+<a name="L3303"></a><tt class="py-lineno">3303</tt>  <tt class="py-line">                <tt id="link-1056" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.label" class="py-name" href="#" onclick="return doclink('link-1056', 'label', 'link-118');">label</a></tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt class="py-string">r'-\d+$'</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt [...]
+<a name="L3304"></a><tt class="py-lineno">3304</tt>  <tt class="py-line"> </tt>
+<a name="L3305"></a><tt class="py-lineno">3305</tt>  <tt class="py-line">        <tt class="py-comment"># Get the url for the target.</tt> </tt>
+<a name="L3306"></a><tt class="py-lineno">3306</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt id="link-1058" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.url" class="py-name" href="#" onclick="return doclink('link-1058', 'url', 'link-72');">url</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1059" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.url" class="py-name" href="#" onclick="return doc [...]
+<a name="L3307"></a><tt class="py-lineno">3307</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-1060" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.url" class="py-name" href="#" onclick="return doclink('link-1060', 'url', 'link-72');">url</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L3308"></a><tt class="py-lineno">3308</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">tooltip</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-string">'<span title="%s">%s</span>'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">tooltip</tt><tt class="py-op">,</tt> <tt id="link-1061" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.label" class="py-name" href="# [...]
+<a name="L3309"></a><tt class="py-lineno">3309</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt id="link-1062" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.label" class="py-name" href="#" onclick="return doclink('link-1062', 'label', 'link-118');">label</a></tt> </tt>
+<a name="L3310"></a><tt class="py-lineno">3310</tt>  <tt class="py-line"> </tt>
+<a name="L3311"></a><tt class="py-lineno">3311</tt>  <tt class="py-line">        <tt class="py-comment"># Construct a string for the class attribute.</tt> </tt>
+<a name="L3312"></a><tt class="py-lineno">3312</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">css_class</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L3313"></a><tt class="py-lineno">3313</tt>  <tt class="py-line">            <tt class="py-name">css</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
+<a name="L3314"></a><tt class="py-lineno">3314</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L3315"></a><tt class="py-lineno">3315</tt>  <tt class="py-line">            <tt class="py-name">css</tt> <tt class="py-op">=</tt> <tt class="py-string">' class="%s"'</tt> <tt class="py-op">%</tt> <tt class="py-name">css_class</tt> </tt>
+<a name="L3316"></a><tt class="py-lineno">3316</tt>  <tt class="py-line"> </tt>
+<a name="L3317"></a><tt class="py-lineno">3317</tt>  <tt class="py-line">        <tt class="py-name">onclick</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
+<a name="L3318"></a><tt class="py-lineno">3318</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">target</tt><tt class="py-op">,</tt> <tt id="link-1063" class="py-name"><a title="epydoc.apidoc.VariableDoc" class="py-name" href="#" onclick="return doclink('link-1063', 'VariableDoc', 'link-768');">VariableDoc</a></tt><tt class="py-op">)</tt> <tt class [...]
+<a name="L3319"></a><tt class="py-lineno">3319</tt>  <tt class="py-line">            <tt class="py-op">(</tt><tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">target</tt><tt class="py-op">,</tt> <tt id="link-1065" class="py-name"><a title="epydoc.apidoc.ValueDoc" class="py-name" href="#" onclick="return doclink('link-1065', 'ValueDoc', 'link-87');">ValueDoc</a></tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L3320"></a><tt class="py-lineno">3320</tt>  <tt class="py-line">             <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">target</tt><tt class="py-op">,</tt> <tt id="link-1066" class="py-name"><a title="epydoc.apidoc.GenericValueDoc" class="py-name" href="#" onclick="return doclink('link-1066', 'GenericValueDoc', 'link-58');">GenericValueDoc</a></tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L3321"></a><tt class="py-lineno">3321</tt>  <tt class="py-line">             <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1067" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter._val_is_public" class="py-name" href="#" onclick="return doclink('link-1067', '_val_is_public', 'link-294');">_val_is_public</a></tt><tt class="py-op">(</tt><tt class="py-name">target</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt cla [...]
+<a name="L3322"></a><tt class="py-lineno">3322</tt>  <tt class="py-line">            <tt class="py-name">onclick</tt> <tt class="py-op">=</tt> <tt class="py-string">' onclick="show_private();"'</tt> </tt>
+<a name="L3323"></a><tt class="py-lineno">3323</tt>  <tt class="py-line"> </tt>
+<a name="L3324"></a><tt class="py-lineno">3324</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">tooltip</tt><tt class="py-op">:</tt> </tt>
+<a name="L3325"></a><tt class="py-lineno">3325</tt>  <tt class="py-line">            <tt class="py-name">tooltip</tt> <tt class="py-op">=</tt> <tt class="py-string">' title="%s"'</tt> <tt class="py-op">%</tt> <tt class="py-name">tooltip</tt> </tt>
+<a name="L3326"></a><tt class="py-lineno">3326</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L3327"></a><tt class="py-lineno">3327</tt>  <tt class="py-line">            <tt class="py-name">tooltip</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
+<a name="L3328"></a><tt class="py-lineno">3328</tt>  <tt class="py-line"> </tt>
+<a name="L3329"></a><tt class="py-lineno">3329</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">'<a href="%s"%s%s%s>%s</a>'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt id="link-1068" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.url" class="py-name" href="#" onclick="return doclink('link-1068', 'url', 'link-72');">url</a></tt><tt class="py-op">,</tt> <tt class="py-name">css</tt><tt class="py-op">,</tt> <tt c [...]
+</div><a name="L3330"></a><tt class="py-lineno">3330</tt>  <tt class="py-line"> </tt>
+<a name="HTMLWriter._attr_to_html"></a><div id="HTMLWriter._attr_to_html-def"><a name="L3331"></a><tt class="py-lineno">3331</tt> <a class="py-toggle" href="#" id="HTMLWriter._attr_to_html-toggle" onclick="return toggle('HTMLWriter._attr_to_html');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html.HTMLWriter-class.html#_attr_to_html">_attr_to_html</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</t [...]
+</div><div id="HTMLWriter._attr_to_html-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLWriter._attr_to_html-expanded"><a name="L3332"></a><tt class="py-lineno">3332</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">api_doc</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-1070" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" hr [...]
+<a name="L3333"></a><tt class="py-lineno">3333</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">''</tt> </tt>
+<a name="L3334"></a><tt class="py-lineno">3334</tt>  <tt class="py-line">        <tt class="py-name">pds</tt> <tt class="py-op">=</tt> <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt class="py-name">attr</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> <tt class="py-comment"># pds = ParsedDocstring.</tt> </tt>
+<a name="L3335"></a><tt class="py-lineno">3335</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">pds</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-1071" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-1071', 'UNKNOWN', 'link-229');">UNKNOWN</a></tt><tt class="py-op">)</tt><tt class="py-o [...]
+<a name="L3336"></a><tt class="py-lineno">3336</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1072" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.docstring_to_html" class="py-name" href="#" onclick="return doclink('link-1072', 'docstring_to_html', 'link-383');">docstring_to_html</a></tt><tt class="py-op">(</tt><tt class="py-name">pds</tt><tt class="py-op">,</tt> <tt class="py-name">ap [...]
+<a name="L3337"></a><tt class="py-lineno">3337</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt id="link-1073" class="py-name"><a title="epydoc.apidoc.VariableDoc" class="py-name" href="#" onclick="return doclink('link-1073', 'VariableDoc', 'link-768');">VariableDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L3338"></a><tt class="py-lineno">3338</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1074" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter._attr_to_html()=epydoc.docwriter.html.HTMLWriter-class.html#_attr_to_html"><a title="epydoc.docwriter.html.HTMLWriter._attr_to_html" class="py-name" href="#" onclick="return doclink('link-1074', '_attr_to_html', 'link-1074');">_attr_to [...]
+</div><a name="L3339"></a><tt class="py-lineno">3339</tt>  <tt class="py-line">         </tt>
+<a name="HTMLWriter.summary"></a><div id="HTMLWriter.summary-def"><a name="L3340"></a><tt class="py-lineno">3340</tt> <a class="py-toggle" href="#" id="HTMLWriter.summary-toggle" onclick="return toggle('HTMLWriter.summary');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html.HTMLWriter-class.html#summary">summary</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">api_doc</tt> [...]
+</div><div id="HTMLWriter.summary-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLWriter.summary-expanded"><a name="L3341"></a><tt class="py-lineno">3341</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1076" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter._attr_to_html" class="py-name" href="#" onclick="return doclink('link-1076', '_attr_to_html', 'link-1074' [...]
+</div><a name="L3342"></a><tt class="py-lineno">3342</tt>  <tt class="py-line">         </tt>
+<a name="HTMLWriter.descr"></a><div id="HTMLWriter.descr-def"><a name="L3343"></a><tt class="py-lineno">3343</tt> <a class="py-toggle" href="#" id="HTMLWriter.descr-toggle" onclick="return toggle('HTMLWriter.descr');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html.HTMLWriter-class.html#descr">descr</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">api_doc</tt><tt class="p [...]
+</div><div id="HTMLWriter.descr-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLWriter.descr-expanded"><a name="L3344"></a><tt class="py-lineno">3344</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1077" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter._attr_to_html" class="py-name" href="#" onclick="return doclink('link-1077', '_attr_to_html', 'link-1074');"> [...]
+</div><a name="L3345"></a><tt class="py-lineno">3345</tt>  <tt class="py-line"> </tt>
+<a name="HTMLWriter.type_descr"></a><div id="HTMLWriter.type_descr-def"><a name="L3346"></a><tt class="py-lineno">3346</tt> <a class="py-toggle" href="#" id="HTMLWriter.type_descr-toggle" onclick="return toggle('HTMLWriter.type_descr');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html.HTMLWriter-class.html#type_descr">type_descr</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-p [...]
+</div><div id="HTMLWriter.type_descr-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLWriter.type_descr-expanded"><a name="L3347"></a><tt class="py-lineno">3347</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1078" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter._attr_to_html" class="py-name" href="#" onclick="return doclink('link-1078', '_attr_to_html', 'link [...]
+</div><a name="L3348"></a><tt class="py-lineno">3348</tt>  <tt class="py-line"> </tt>
+<a name="HTMLWriter.return_type"></a><div id="HTMLWriter.return_type-def"><a name="L3349"></a><tt class="py-lineno">3349</tt> <a class="py-toggle" href="#" id="HTMLWriter.return_type-toggle" onclick="return toggle('HTMLWriter.return_type');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html.HTMLWriter-class.html#return_type">return_type</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class [...]
+</div><div id="HTMLWriter.return_type-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLWriter.return_type-expanded"><a name="L3350"></a><tt class="py-lineno">3350</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1079" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter._attr_to_html" class="py-name" href="#" onclick="return doclink('link-1079', '_attr_to_html', 'li [...]
+</div><a name="L3351"></a><tt class="py-lineno">3351</tt>  <tt class="py-line"> </tt>
+<a name="HTMLWriter.return_descr"></a><div id="HTMLWriter.return_descr-def"><a name="L3352"></a><tt class="py-lineno">3352</tt> <a class="py-toggle" href="#" id="HTMLWriter.return_descr-toggle" onclick="return toggle('HTMLWriter.return_descr');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html.HTMLWriter-class.html#return_descr">return_descr</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt [...]
+</div><div id="HTMLWriter.return_descr-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLWriter.return_descr-expanded"><a name="L3353"></a><tt class="py-lineno">3353</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1080" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter._attr_to_html" class="py-name" href="#" onclick="return doclink('link-1080', '_attr_to_html', ' [...]
+</div><a name="L3354"></a><tt class="py-lineno">3354</tt>  <tt class="py-line"> </tt>
+<a name="HTMLWriter.docstring_to_html"></a><div id="HTMLWriter.docstring_to_html-def"><a name="L3355"></a><tt class="py-lineno">3355</tt> <a class="py-toggle" href="#" id="HTMLWriter.docstring_to_html-toggle" onclick="return toggle('HTMLWriter.docstring_to_html');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html.HTMLWriter-class.html#docstring_to_html">docstring_to_html</a><tt class="py-op">(</tt><tt class="py-param">self</t [...]
+</div><div id="HTMLWriter.docstring_to_html-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLWriter.docstring_to_html-expanded"><a name="L3356"></a><tt class="py-lineno">3356</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">parsed_docstring</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-1081" class="py-name"><a title="epydoc.apidoc.UNKNOWN" c [...]
+<a name="L3357"></a><tt class="py-lineno">3357</tt>  <tt class="py-line">        <tt class="py-name">linker</tt> <tt class="py-op">=</tt> <tt id="link-1082" class="py-name"><a title="epydoc.docwriter.html._HTMLDocstringLinker" class="py-name" href="#" onclick="return doclink('link-1082', '_HTMLDocstringLinker', 'link-319');">_HTMLDocstringLinker</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">where</tt><tt class="py-op">)</tt> </tt>
+<a name="L3358"></a><tt class="py-lineno">3358</tt>  <tt class="py-line">        <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">parsed_docstring</tt><tt class="py-op">.</tt><tt id="link-1083" class="py-name"><a title="epydoc.docwriter.dotgraph.DotGraph.to_html
+epydoc.markup.ConcatenatedDocstring.to_html
+epydoc.markup.ParsedDocstring.to_html
+epydoc.markup.epytext.ParsedEpytextDocstring.to_html
+epydoc.markup.javadoc.ParsedJavadocDocstring.to_html
+epydoc.markup.plaintext.ParsedPlaintextDocstring.to_html
+epydoc.markup.restructuredtext.ParsedRstDocstring.to_html" class="py-name" href="#" onclick="return doclink('link-1083', 'to_html', 'link-522');">to_html</a></tt><tt class="py-op">(</tt><tt class="py-name">linker</tt><tt class="py-op">,</tt> <tt class="py-name">indent</tt><tt class="py-op">=</tt><tt class="py-name">indent</tt><tt class="py-op">,</tt> </tt>
+<a name="L3359"></a><tt class="py-lineno">3359</tt>  <tt class="py-line">                                     <tt class="py-name">directory</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_directory</tt><tt class="py-op">,</tt> </tt>
+<a name="L3360"></a><tt class="py-lineno">3360</tt>  <tt class="py-line">                                     <tt class="py-name">docindex</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">docindex</tt><tt class="py-op">,</tt> </tt>
+<a name="L3361"></a><tt class="py-lineno">3361</tt>  <tt class="py-line">                                     <tt class="py-name">context</tt><tt class="py-op">=</tt><tt class="py-name">where</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">strip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L3362"></a><tt class="py-lineno">3362</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_mark_docstrings</tt><tt class="py-op">:</tt> </tt>
+<a name="L3363"></a><tt class="py-lineno">3363</tt>  <tt class="py-line">            <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-string">'<span class="docstring">%s</span><!--end docstring-->'</tt> <tt class="py-op">%</tt> <tt class="py-name">s</tt> </tt>
+<a name="L3364"></a><tt class="py-lineno">3364</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">s</tt> </tt>
+</div><a name="L3365"></a><tt class="py-lineno">3365</tt>  <tt class="py-line"> </tt>
+<a name="HTMLWriter.description"></a><div id="HTMLWriter.description-def"><a name="L3366"></a><tt class="py-lineno">3366</tt> <a class="py-toggle" href="#" id="HTMLWriter.description-toggle" onclick="return toggle('HTMLWriter.description');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html.HTMLWriter-class.html#description">description</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class [...]
+</div><div id="HTMLWriter.description-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLWriter.description-expanded"><a name="L3367"></a><tt class="py-lineno">3367</tt>  <tt class="py-line">        <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">where</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt id="link-1084" class="py-name"><a title="epydoc.apidoc.APIDoc" class="py-name" href="# [...]
+<a name="L3368"></a><tt class="py-lineno">3368</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">parsed_docstring</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-1085" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-1085', 'UNKNOWN', 'link-229');">UNKNOWN</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class [...]
+<a name="L3369"></a><tt class="py-lineno">3369</tt>  <tt class="py-line">        <tt class="py-name">linker</tt> <tt class="py-op">=</tt> <tt id="link-1086" class="py-name"><a title="epydoc.docwriter.html._HTMLDocstringLinker" class="py-name" href="#" onclick="return doclink('link-1086', '_HTMLDocstringLinker', 'link-319');">_HTMLDocstringLinker</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">where</tt><tt class="py-op">)</tt> </tt>
+<a name="L3370"></a><tt class="py-lineno">3370</tt>  <tt class="py-line">        <tt id="link-1087" class="py-name"><a title="epydoc.apidoc.APIDoc.descr
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-1087', 'descr', 'link-228');">descr</a></tt> <tt class="py-op">=</tt> <tt class="py-name">parsed_docstring</tt><tt class="py-op">.</tt><tt id="link-1088" class="py-name"><a title="epydoc.docwriter.dotgraph.DotGraph.to_html
+epydoc.markup.ConcatenatedDocstring.to_html
+epydoc.markup.ParsedDocstring.to_html
+epydoc.markup.epytext.ParsedEpytextDocstring.to_html
+epydoc.markup.javadoc.ParsedJavadocDocstring.to_html
+epydoc.markup.plaintext.ParsedPlaintextDocstring.to_html
+epydoc.markup.restructuredtext.ParsedRstDocstring.to_html" class="py-name" href="#" onclick="return doclink('link-1088', 'to_html', 'link-522');">to_html</a></tt><tt class="py-op">(</tt><tt class="py-name">linker</tt><tt class="py-op">,</tt> <tt class="py-name">indent</tt><tt class="py-op">=</tt><tt class="py-name">indent</tt><tt class="py-op">,</tt> </tt>
+<a name="L3371"></a><tt class="py-lineno">3371</tt>  <tt class="py-line">                                         <tt class="py-name">directory</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_directory</tt><tt class="py-op">,</tt> </tt>
+<a name="L3372"></a><tt class="py-lineno">3372</tt>  <tt class="py-line">                                         <tt class="py-name">docindex</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">docindex</tt><tt class="py-op">,</tt> </tt>
+<a name="L3373"></a><tt class="py-lineno">3373</tt>  <tt class="py-line">                                         <tt class="py-name">context</tt><tt class="py-op">=</tt><tt class="py-name">where</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">strip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L3374"></a><tt class="py-lineno">3374</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-1089" class="py-name"><a title="epydoc.apidoc.APIDoc.descr
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-1089', 'descr', 'link-228');">descr</a></tt> <tt class="py-op">==</tt> <tt class="py-string">''</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-string">'&nbsp;'</tt> </tt>
+<a name="L3375"></a><tt class="py-lineno">3375</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-1090" class="py-name"><a title="epydoc.apidoc.APIDoc.descr
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-1090', 'descr', 'link-228');">descr</a></tt> </tt>
+</div><a name="L3376"></a><tt class="py-lineno">3376</tt>  <tt class="py-line"> </tt>
+<a name="L3377"></a><tt class="py-lineno">3377</tt>  <tt class="py-line">    <tt class="py-comment"># [xx] Should this be defined by the APIDoc classes themselves??</tt> </tt>
+<a name="HTMLWriter.doc_kind"></a><div id="HTMLWriter.doc_kind-def"><a name="L3378"></a><tt class="py-lineno">3378</tt> <a class="py-toggle" href="#" id="HTMLWriter.doc_kind-toggle" onclick="return toggle('HTMLWriter.doc_kind');">-</a><tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html.HTMLWriter-class.html#doc_kind">doc_kind</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> [...]
+</div><div id="HTMLWriter.doc_kind-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLWriter.doc_kind-expanded"><a name="L3379"></a><tt class="py-lineno">3379</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt id="link-1091" class="py-name"><a title="epydoc.apidoc.ModuleDoc" class="py-name" href="#" onclick="return doclink('link-1 [...]
+<a name="L3380"></a><tt class="py-lineno">3380</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">'Package'</tt> </tt>
+<a name="L3381"></a><tt class="py-lineno">3381</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-op">(</tt><tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt id="link-1093" class="py-name"><a title="epydoc.apidoc.ModuleDoc" class="py-name" href="#" onclick="return doclink('link-1093', 'ModuleDoc', 'link-55');">ModuleDoc</a></tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L3382"></a><tt class="py-lineno">3382</tt>  <tt class="py-line">              <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-1094" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-1094', 'canonical_name', 'link-82');">canonical_name</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">startswith</tt><tt class="py-op">(</tt><tt class="py-string">'script'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L3383"></a><tt class="py-lineno">3383</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">'Script'</tt> </tt>
+<a name="L3384"></a><tt class="py-lineno">3384</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt id="link-1095" class="py-name"><a title="epydoc.apidoc.ModuleDoc" class="py-name" href="#" onclick="return doclink('link-1095', 'ModuleDoc', 'link-55');">ModuleDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L3385"></a><tt class="py-lineno">3385</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">'Module'</tt> </tt>
+<a name="L3386"></a><tt class="py-lineno">3386</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt id="link-1096" class="py-name"><a title="epydoc.apidoc.ClassDoc" class="py-name" href="#" onclick="return doclink('link-1096', 'ClassDoc', 'link-56');">ClassDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L3387"></a><tt class="py-lineno">3387</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">'Class'</tt> </tt>
+<a name="L3388"></a><tt class="py-lineno">3388</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt id="link-1097" class="py-name" targets="Class epydoc.apidoc.ClassMethodDoc=epydoc.apidoc.ClassMethodDoc-class.html"><a title="epydoc.apidoc.ClassMethodDoc" class="py-name" href="#" onclick="return doclink('link-1097', 'ClassMethodDoc', 'link-1097');">ClassMethod [...]
+<a name="L3389"></a><tt class="py-lineno">3389</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">'Class Method'</tt> </tt>
+<a name="L3390"></a><tt class="py-lineno">3390</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt id="link-1098" class="py-name" targets="Class epydoc.apidoc.StaticMethodDoc=epydoc.apidoc.StaticMethodDoc-class.html"><a title="epydoc.apidoc.StaticMethodDoc" class="py-name" href="#" onclick="return doclink('link-1098', 'StaticMethodDoc', 'link-1098');">StaticM [...]
+<a name="L3391"></a><tt class="py-lineno">3391</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">'Static Method'</tt> </tt>
+<a name="L3392"></a><tt class="py-lineno">3392</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt id="link-1099" class="py-name"><a title="epydoc.apidoc.RoutineDoc" class="py-name" href="#" onclick="return doclink('link-1099', 'RoutineDoc', 'link-57');">RoutineDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L3393"></a><tt class="py-lineno">3393</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">docindex</tt><tt class="py-op">.</tt><tt id="link-1100" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-1100', 'container', 'link-63');">container</a></tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt id="link-1101" class="py-name"><a title="epydoc.apidoc.ClassDoc" class="py-name" href="#" onclick="return doclink('link-1101', 'ClassDoc', 'link-56');">ClassDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L3394"></a><tt class="py-lineno">3394</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-string">'Method'</tt> </tt>
+<a name="L3395"></a><tt class="py-lineno">3395</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L3396"></a><tt class="py-lineno">3396</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-string">'Function'</tt> </tt>
+<a name="L3397"></a><tt class="py-lineno">3397</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L3398"></a><tt class="py-lineno">3398</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">'Variable'</tt> </tt>
+</div><a name="L3399"></a><tt class="py-lineno">3399</tt>  <tt class="py-line">         </tt>
+<a name="HTMLWriter._doc_or_ancestor_is_private"></a><div id="HTMLWriter._doc_or_ancestor_is_private-def"><a name="L3400"></a><tt class="py-lineno">3400</tt> <a class="py-toggle" href="#" id="HTMLWriter._doc_or_ancestor_is_private-toggle" onclick="return toggle('HTMLWriter._doc_or_ancestor_is_private');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html.HTMLWriter-class.html#_doc_or_ancestor_is_private">_doc_or_ancestor_is_pri [...]
+</div><div id="HTMLWriter._doc_or_ancestor_is_private-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLWriter._doc_or_ancestor_is_private-expanded"><a name="L3401"></a><tt class="py-lineno">3401</tt>  <tt class="py-line">        <tt id="link-1102" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-1102', 'name', 'link-117');">name</a></tt> <tt class="py-op">=</tt> <tt class="py-name">api_doc</tt [...]
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-1103', 'canonical_name', 'link-82');">canonical_name</a></tt> </tt>
+<a name="L3402"></a><tt class="py-lineno">3402</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-1104" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-1104', 'name', 'link-117');">name</a></tt><tt class="py-op">)</tt><tt class="py-op" [...]
+<a name="L3403"></a><tt class="py-lineno">3403</tt>  <tt class="py-line">            <tt class="py-comment"># Is it (or an ancestor) a private var?</tt> </tt>
+<a name="L3404"></a><tt class="py-lineno">3404</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">var_doc</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">docindex</tt><tt class="py-op">.</tt><tt id="link-1105" class="py-name" targets="Method epydoc.apidoc.DocIndex.get_vardoc()=epydoc.apidoc.DocIndex-class.html#get_vardoc"><a title="epydoc.apidoc.DocIndex.get_vardoc" class="py-name" href="#" onclick= [...]
+<a name="L3405"></a><tt class="py-lineno">3405</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">var_doc</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-1107" class="py-name"><a title="epydoc.apidoc.VariableDoc.is_public" class="py-name" href="#" onclick="return doclink('link-1107', 'is_public', 'link [...]
+<a name="L3406"></a><tt class="py-lineno">3406</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
+<a name="L3407"></a><tt class="py-lineno">3407</tt>  <tt class="py-line">            <tt class="py-comment"># Is it (or an ancestor) a private module?</tt> </tt>
+<a name="L3408"></a><tt class="py-lineno">3408</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">val_doc</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">docindex</tt><tt class="py-op">.</tt><tt id="link-1108" class="py-name"><a title="epydoc.apidoc.DocIndex.get_valdoc" class="py-name" href="#" onclick="return doclink('link-1108', 'get_valdoc', 'link-71');">get_valdoc</a></tt><tt class="py-op">(</tt [...]
+<a name="L3409"></a><tt class="py-lineno">3409</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">val_doc</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">val_doc</tt><tt class="py-op">,</tt> <tt id="link-1110" class="py-name"><a title="epydoc.apidoc.ModuleDoc" class="p [...]
+<a name="L3410"></a><tt class="py-lineno">3410</tt>  <tt class="py-line">                <tt class="py-name">val_doc</tt><tt class="py-op">.</tt><tt id="link-1111" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-1111', 'canonical_name', 'link-82');">canonical_name</a></tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">startswith</tt><tt class="py-op">(</tt><tt class="py-string">'_'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L3411"></a><tt class="py-lineno">3411</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
+<a name="L3412"></a><tt class="py-lineno">3412</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
+</div><a name="L3413"></a><tt class="py-lineno">3413</tt>  <tt class="py-line"> </tt>
+<a name="HTMLWriter._private_subclasses"></a><div id="HTMLWriter._private_subclasses-def"><a name="L3414"></a><tt class="py-lineno">3414</tt> <a class="py-toggle" href="#" id="HTMLWriter._private_subclasses-toggle" onclick="return toggle('HTMLWriter._private_subclasses');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html.HTMLWriter-class.html#_private_subclasses">_private_subclasses</a><tt class="py-op">(</tt><tt class="py-pa [...]
+</div><div id="HTMLWriter._private_subclasses-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="HTMLWriter._private_subclasses-expanded"><a name="L3415"></a><tt class="py-lineno">3415</tt>  <tt class="py-line">        <tt class="py-docstring">"""Return a list of all subclasses of the given class that are</tt> </tt>
+<a name="L3416"></a><tt class="py-lineno">3416</tt>  <tt class="py-line"><tt class="py-docstring">        private, as determined by L{_val_is_private}.  Recursive</tt> </tt>
+<a name="L3417"></a><tt class="py-lineno">3417</tt>  <tt class="py-line"><tt class="py-docstring">        subclasses are included in this list."""</tt> </tt>
+<a name="L3418"></a><tt class="py-lineno">3418</tt>  <tt class="py-line">        <tt class="py-name">queue</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">class_doc</tt><tt class="py-op">]</tt> </tt>
+<a name="L3419"></a><tt class="py-lineno">3419</tt>  <tt class="py-line">        <tt class="py-name">private</tt> <tt class="py-op">=</tt> <tt class="py-name">set</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L3420"></a><tt class="py-lineno">3420</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">cls</tt> <tt class="py-keyword">in</tt> <tt class="py-name">queue</tt><tt class="py-op">:</tt> </tt>
+<a name="L3421"></a><tt class="py-lineno">3421</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">cls</tt><tt class="py-op">,</tt> <tt id="link-1112" class="py-name"><a title="epydoc.apidoc.ClassDoc" class="py-name" href="#" onclick="return doclink('link-1112', 'ClassDoc', 'link-56');">ClassDoc</a></tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L3422"></a><tt class="py-lineno">3422</tt>  <tt class="py-line">                <tt class="py-name">cls</tt><tt class="py-op">.</tt><tt id="link-1113" class="py-name"><a title="epydoc.apidoc.ClassDoc.subclasses" class="py-name" href="#" onclick="return doclink('link-1113', 'subclasses', 'link-54');">subclasses</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-1114" cl [...]
+<a name="L3423"></a><tt class="py-lineno">3423</tt>  <tt class="py-line">                <tt class="py-name">queue</tt><tt class="py-op">.</tt><tt class="py-name">extend</tt><tt class="py-op">(</tt><tt class="py-name">cls</tt><tt class="py-op">.</tt><tt id="link-1115" class="py-name"><a title="epydoc.apidoc.ClassDoc.subclasses" class="py-name" href="#" onclick="return doclink('link-1115', 'subclasses', 'link-54');">subclasses</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L3424"></a><tt class="py-lineno">3424</tt>  <tt class="py-line">                <tt class="py-name">private</tt><tt class="py-op">.</tt><tt class="py-name">update</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">c</tt> <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt class="py-name">cls</tt><tt class="py-op">.</tt><tt id="link-1116" class="py-name"><a title="epydoc.apidoc.ClassDoc.subclasses" class="py-name" hre [...]
+<a name="L3425"></a><tt class="py-lineno">3425</tt>  <tt class="py-line">                                <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1117" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter._val_is_public" class="py-name" href="#" onclick="return doclink('link-1117', '_val_is_public', 'link-294');">_val_is_public</a></tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">)</tt><tt class="py-op" [...]
+<a name="L3426"></a><tt class="py-lineno">3426</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">private</tt> </tt>
+</div></div><a name="L3427"></a><tt class="py-lineno">3427</tt>  <tt class="py-line">                 </tt>
+<a name="_HTMLDocstringLinker"></a><div id="_HTMLDocstringLinker-def"><a name="L3428"></a><tt class="py-lineno">3428</tt> <a class="py-toggle" href="#" id="_HTMLDocstringLinker-toggle" onclick="return toggle('_HTMLDocstringLinker');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="epydoc.docwriter.html._HTMLDocstringLinker-class.html">_HTMLDocstringLinker</a><tt class="py-op">(</tt><tt class="py-base-class">epydoc</tt><tt class="py-op">.</tt><tt cl [...]
+</div><div id="_HTMLDocstringLinker-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_HTMLDocstringLinker-expanded"><a name="_HTMLDocstringLinker.__init__"></a><div id="_HTMLDocstringLinker.__init__-def"><a name="L3429"></a><tt class="py-lineno">3429</tt> <a class="py-toggle" href="#" id="_HTMLDocstringLinker.__init__-toggle" onclick="return toggle('_HTMLDocstringLinker.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name [...]
+</div><div id="_HTMLDocstringLinker.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_HTMLDocstringLinker.__init__-expanded"><a name="L3430"></a><tt class="py-lineno">3430</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">htmlwriter</tt> <tt class="py-op">=</tt> <tt class="py-name">htmlwriter</tt> </tt>
+<a name="L3431"></a><tt class="py-lineno">3431</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">docindex</tt> <tt class="py-op">=</tt> <tt class="py-name">htmlwriter</tt><tt class="py-op">.</tt><tt class="py-name">docindex</tt> </tt>
+<a name="L3432"></a><tt class="py-lineno">3432</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1118" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-1118', 'container', 'link-63');">container</a></tt> <tt class="py-op">=</tt> <tt id="link-1119" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-1119', 'container', 'link-63');">container</a></tt> </tt>
+</div><a name="L3433"></a><tt class="py-lineno">3433</tt>  <tt class="py-line">         </tt>
+<a name="_HTMLDocstringLinker.translate_indexterm"></a><div id="_HTMLDocstringLinker.translate_indexterm-def"><a name="L3434"></a><tt class="py-lineno">3434</tt> <a class="py-toggle" href="#" id="_HTMLDocstringLinker.translate_indexterm-toggle" onclick="return toggle('_HTMLDocstringLinker.translate_indexterm');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html._HTMLDocstringLinker-class.html#translate_indexterm">translate_ind [...]
+</div><div id="_HTMLDocstringLinker.translate_indexterm-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_HTMLDocstringLinker.translate_indexterm-expanded"><a name="L3435"></a><tt class="py-lineno">3435</tt>  <tt class="py-line">        <tt id="link-1120" class="py-name"><a title="epydoc.cli.key" class="py-name" href="#" onclick="return doclink('link-1120', 'key', 'link-79');">key</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op" [...]
+<a name="L3436"></a><tt class="py-lineno">3436</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-string">'<a name="%s"></a><i class="indexterm">%s</i>'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L3437"></a><tt class="py-lineno">3437</tt>  <tt class="py-line">                <tt class="py-op">(</tt><tt id="link-1123" class="py-name"><a title="epydoc.cli.key" class="py-name" href="#" onclick="return doclink('link-1123', 'key', 'link-79');">key</a></tt><tt class="py-op">,</tt> <tt id="link-1124" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.indexterm" class="py-name" href="#" onclick="return doclink('link-1124', 'indexterm', 'link-1122');">indexterm</a></tt> [...]
+epydoc.markup.ConcatenatedDocstring.to_html
+epydoc.markup.ParsedDocstring.to_html
+epydoc.markup.epytext.ParsedEpytextDocstring.to_html
+epydoc.markup.javadoc.ParsedJavadocDocstring.to_html
+epydoc.markup.plaintext.ParsedPlaintextDocstring.to_html
+epydoc.markup.restructuredtext.ParsedRstDocstring.to_html" class="py-name" href="#" onclick="return doclink('link-1125', 'to_html', 'link-522');">to_html</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3438"></a><tt class="py-lineno">3438</tt>  <tt class="py-line">     </tt>
+<a name="_HTMLDocstringLinker.translate_identifier_xref"></a><div id="_HTMLDocstringLinker.translate_identifier_xref-def"><a name="L3439"></a><tt class="py-lineno">3439</tt> <a class="py-toggle" href="#" id="_HTMLDocstringLinker.translate_identifier_xref-toggle" onclick="return toggle('_HTMLDocstringLinker.translate_identifier_xref');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html._HTMLDocstringLinker-class.html#translate_ [...]
+</div><div id="_HTMLDocstringLinker.translate_identifier_xref-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_HTMLDocstringLinker.translate_identifier_xref-expanded"><a name="L3440"></a><tt class="py-lineno">3440</tt>  <tt class="py-line">        <tt class="py-comment"># Pick a label for this xref.</tt> </tt>
+<a name="L3441"></a><tt class="py-lineno">3441</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt id="link-1126" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.label" class="py-name" href="#" onclick="return doclink('link-1126', 'label', 'link-118');">label</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> <tt id="link-1127" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter. [...]
+<a name="L3442"></a><tt class="py-lineno">3442</tt>  <tt class="py-line"> </tt>
+<a name="L3443"></a><tt class="py-lineno">3443</tt>  <tt class="py-line">        <tt class="py-comment"># Find the APIDoc for it (if it's available).</tt> </tt>
+<a name="L3444"></a><tt class="py-lineno">3444</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">doc</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">docindex</tt><tt class="py-op">.</tt><tt id="link-1129" class="py-name" targets="Method epydoc.apidoc.DocIndex.find()=epydoc.apidoc.DocIndex-class.html#find"><a title="epydoc.apidoc.DocIndex.find" class="py-name" href="#" onclick="return doclink('link-1129 [...]
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-1130', 'container', 'link-63');">container</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L3445"></a><tt class="py-lineno">3445</tt>  <tt class="py-line"> </tt>
+<a name="L3446"></a><tt class="py-lineno">3446</tt>  <tt class="py-line">        <tt class="py-comment"># If we didn't find a target, then try checking in the contexts</tt> </tt>
+<a name="L3447"></a><tt class="py-lineno">3447</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># of the ancestor classes. </tt> </tt>
+<a name="L3448"></a><tt class="py-lineno">3448</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">doc</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1131" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-1131', 'container', 'link-63');">container</a></tt><tt class="py-op">,</tt> <tt id="link-1132" class="py-name"><a title="epydoc.apidoc.RoutineDoc" class="py-name" href="#" onclick="return doclink('link-1132', 'RoutineDoc', 'link-57');">RoutineDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L3449"></a><tt class="py-lineno">3449</tt>  <tt class="py-line">            <tt id="link-1133" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-1133', 'container', 'link-63');">container</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">docindex</tt><tt class="py-op">.</tt><tt id="link-1134" class="py-name"><a title="epydoc.apidoc.DocIndex.get_vardoc" class="py-name" href="#" onclick="return doclink('link-1134', 'get_vardoc', 'link-1105');">get_vardoc</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L3450"></a><tt class="py-lineno">3450</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1135" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-1135', 'container', 'link-63');">container</a></tt><tt class="py-op">.</tt><tt id="link-1136" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-1136', 'canonical_name', 'link-82');">canonical_name</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L3451"></a><tt class="py-lineno">3451</tt>  <tt class="py-line">            <tt class="py-keyword">while</tt> <tt class="py-op">(</tt><tt class="py-name">doc</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt id="link-1137" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-1137', 'container', 'link-63');">container</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-1138" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-1138', 'UNKNOWN', 'link-229');">UNKNOWN</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L3452"></a><tt class="py-lineno">3452</tt>  <tt class="py-line">                   <tt class="py-keyword">and</tt> <tt id="link-1139" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-1139', 'container', 'link-63');">container</a></tt><tt class="py-op">.</tt><tt id="link-1140" class="py-name" targets="Variable epydoc.apidoc.VariableDoc.overrides=epydoc.apidoc.VariableDoc-class.html#overrides"><a title="epydoc.apidoc.VariableDoc.overrides" class="py-name" href="#" onclick="return doclink('link-1140', 'overrides', 'link-1140');">overrides</a></tt> <tt class="py-keyword">not</tt>  [...]
+<a name="L3453"></a><tt class="py-lineno">3453</tt>  <tt class="py-line">                <tt id="link-1142" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-1142', 'container', 'link-63');">container</a></tt> <tt class="py-op">=</tt> <tt id="link-1143" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-1143', 'container', 'link-63');">container</a></tt><tt class="py-op">.</tt><tt id="link-1144" class="py-name"><a title="epydoc.apidoc.VariableDoc.overrides" class="py-name" href="#" onclick="return doclink('link-1144', 'overrides', 'link-1140');">overrides</a></tt> </tt>
+<a name="L3454"></a><tt class="py-lineno">3454</tt>  <tt class="py-line">                <tt class="py-name">doc</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">docindex</tt><tt class="py-op">.</tt><tt id="link-1145" class="py-name"><a title="epydoc.apidoc.DocIndex.find" class="py-name" href="#" onclick="return doclink('link-1145', 'find', 'link-1129');">find</a></tt><tt class="py-op">(</tt><tt class="py-name">identifier</tt><tt clas [...]
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-1146', 'container', 'link-63');">container</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L3455"></a><tt class="py-lineno">3455</tt>  <tt class="py-line">                 </tt>
+<a name="L3456"></a><tt class="py-lineno">3456</tt>  <tt class="py-line">        <tt class="py-comment"># Translate it into HTML.</tt> </tt>
+<a name="L3457"></a><tt class="py-lineno">3457</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">doc</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L3458"></a><tt class="py-lineno">3458</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1147" class="py-name" targets="Method epydoc.docwriter.html._HTMLDocstringLinker._failed_xref()=epydoc.docwriter.html._HTMLDocstringLinker-class.html#_failed_xref"><a title="epydoc.docwriter.html._HTMLDocstringLinker._failed_xref" class="py-name" href="#" onclick="return doclink('link-1147', '_failed_xref', 'link-1147');">_failed_xref</a>< [...]
+<a name="L3459"></a><tt class="py-lineno">3459</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">'<code class="link">%s</code>'</tt> <tt class="py-op">%</tt> <tt id="link-1148" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.label" class="py-name" href="#" onclick="return doclink('link-1148', 'label', 'link-118');">label</a></tt> </tt>
+<a name="L3460"></a><tt class="py-lineno">3460</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L3461"></a><tt class="py-lineno">3461</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">htmlwriter</tt><tt class="py-op">.</tt><tt id="link-1149" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.href" class="py-name" href="#" onclick="return doclink('link-1149', 'href', 'link-254');">href</a></tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">,</tt> <t [...]
+</div><a name="L3462"></a><tt class="py-lineno">3462</tt>  <tt class="py-line"> </tt>
+<a name="L3463"></a><tt class="py-lineno">3463</tt>  <tt class="py-line">    <tt class="py-comment"># [xx] Should this be added to the DocstringLinker interface???</tt> </tt>
+<a name="L3464"></a><tt class="py-lineno">3464</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># Currently, this is *only* used by dotgraph.</tt> </tt>
+<a name="_HTMLDocstringLinker.url_for"></a><div id="_HTMLDocstringLinker.url_for-def"><a name="L3465"></a><tt class="py-lineno">3465</tt> <a class="py-toggle" href="#" id="_HTMLDocstringLinker.url_for-toggle" onclick="return toggle('_HTMLDocstringLinker.url_for');">-</a><tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html._HTMLDocstringLinker-class.html#url_for">url_for</a><tt class="py-op">(</tt><tt class= [...]
+</div><div id="_HTMLDocstringLinker.url_for-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_HTMLDocstringLinker.url_for-expanded"><a name="L3466"></a><tt class="py-lineno">3466</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">identifier</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">basestring</tt><tt class="py-op">,</tt> <tt id="link-1151 [...]
+<a name="L3467"></a><tt class="py-lineno">3467</tt>  <tt class="py-line">            <tt class="py-name">doc</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">docindex</tt><tt class="py-op">.</tt><tt id="link-1152" class="py-name"><a title="epydoc.apidoc.DocIndex.find" class="py-name" href="#" onclick="return doclink('link-1152', 'find', 'link-1129');">find</a></tt><tt class="py-op">(</tt><tt class="py-name">identifier</tt><tt class="p [...]
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-1153', 'container', 'link-63');">container</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L3468"></a><tt class="py-lineno">3468</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">doc</tt><tt class="py-op">:</tt> </tt>
+<a name="L3469"></a><tt class="py-lineno">3469</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">htmlwriter</tt><tt class="py-op">.</tt><tt id="link-1154" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.url" class="py-name" href="#" onclick="return doclink('link-1154', 'url', 'link-72');">url</a></tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">)</tt> </tt>
+<a name="L3470"></a><tt class="py-lineno">3470</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L3471"></a><tt class="py-lineno">3471</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
+<a name="L3472"></a><tt class="py-lineno">3472</tt>  <tt class="py-line">             </tt>
+<a name="L3473"></a><tt class="py-lineno">3473</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">identifier</tt><tt class="py-op">,</tt> <tt id="link-1155" class="py-name"><a title="epydoc.apidoc.APIDoc" class="py-name" href="#" onclick="return doclink('link-1155', 'APIDoc', 'link-1026');">APIDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L3474"></a><tt class="py-lineno">3474</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">htmlwriter</tt><tt class="py-op">.</tt><tt id="link-1156" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.url" class="py-name" href="#" onclick="return doclink('link-1156', 'url', 'link-72');">url</a></tt><tt class="py-op">(</tt><tt class="py-name">identifier</tt><tt class="py-op">)</tt> </tt>
+<a name="L3475"></a><tt class="py-lineno">3475</tt>  <tt class="py-line">            <tt class="py-name">doc</tt> <tt class="py-op">=</tt> <tt class="py-name">identifier</tt> </tt>
+<a name="L3476"></a><tt class="py-lineno">3476</tt>  <tt class="py-line">             </tt>
+<a name="L3477"></a><tt class="py-lineno">3477</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L3478"></a><tt class="py-lineno">3478</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">TypeError</tt><tt class="py-op">(</tt><tt class="py-string">'Expected string or APIDoc'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3479"></a><tt class="py-lineno">3479</tt>  <tt class="py-line"> </tt>
+<a name="_HTMLDocstringLinker._failed_xref"></a><div id="_HTMLDocstringLinker._failed_xref-def"><a name="L3480"></a><tt class="py-lineno">3480</tt> <a class="py-toggle" href="#" id="_HTMLDocstringLinker._failed_xref-toggle" onclick="return toggle('_HTMLDocstringLinker._failed_xref');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html._HTMLDocstringLinker-class.html#_failed_xref">_failed_xref</a><tt class="py-op">(</tt><tt clas [...]
+</div><div id="_HTMLDocstringLinker._failed_xref-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_HTMLDocstringLinker._failed_xref-expanded"><a name="L3481"></a><tt class="py-lineno">3481</tt>  <tt class="py-line">        <tt class="py-docstring">"""Add an identifier to the htmlwriter's failed crossreference</tt> </tt>
+<a name="L3482"></a><tt class="py-lineno">3482</tt>  <tt class="py-line"><tt class="py-docstring">        list."""</tt> </tt>
+<a name="L3483"></a><tt class="py-lineno">3483</tt>  <tt class="py-line">        <tt class="py-comment"># Don't count it as a failed xref if it's a parameter of the</tt> </tt>
+<a name="L3484"></a><tt class="py-lineno">3484</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># current function.</tt> </tt>
+<a name="L3485"></a><tt class="py-lineno">3485</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1157" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-1157', 'container', 'link-63');">container</a></tt><tt class="py-op">,</tt> <tt id="link-1158" class="py-name"><a title="epydoc.apidoc.RoutineDoc" class="py-name" href="#" onclick="return doclink('link-1158', 'RoutineDoc', 'link-57');">RoutineDoc</a></tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L3486"></a><tt class="py-lineno">3486</tt>  <tt class="py-line">            <tt class="py-name">identifier</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1159" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-1159', 'container', 'link-63');">container</a></tt><tt class="py-op">.</tt><tt id="link-1160" class="py-name" targets="Method epydoc.apidoc.RoutineDoc.all_args()=epydoc.apidoc.RoutineDoc-class.html#all_args"><a title="epydoc.apidoc.RoutineDoc.all_args" class="py-name" href="#" onclick="return doclink('link-1160', 'all_args', 'link-1160');">all_args</a></tt><tt class="py-op">(</tt><tt class="py-op" [...]
+<a name="L3487"></a><tt class="py-lineno">3487</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> </tt>
+<a name="L3488"></a><tt class="py-lineno">3488</tt>  <tt class="py-line">         </tt>
+<a name="L3489"></a><tt class="py-lineno">3489</tt>  <tt class="py-line">        <tt class="py-name">failed_xrefs</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">htmlwriter</tt><tt class="py-op">.</tt><tt class="py-name">_failed_xrefs</tt> </tt>
+<a name="L3490"></a><tt class="py-lineno">3490</tt>  <tt class="py-line">        <tt class="py-name">context</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1161" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-1161', 'container', 'link-63');">container</a></tt><tt class="py-op">.</tt><tt id="link-1162" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-1162', 'canonical_name', 'link-82');">canonical_name</a></tt> </tt>
+<a name="L3491"></a><tt class="py-lineno">3491</tt>  <tt class="py-line">        <tt class="py-name">failed_xrefs</tt><tt class="py-op">.</tt><tt class="py-name">setdefault</tt><tt class="py-op">(</tt><tt class="py-name">identifier</tt><tt class="py-op">,</tt><tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-name">context</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+</div></div><a name="L3492"></a><tt class="py-lineno">3492</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:09:51 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.docwriter.html.HTMLWriter-class.html b/doc/api/epydoc.docwriter.html.HTMLWriter-class.html
new file mode 100644
index 0000000..f5c0d6a
--- /dev/null
+++ b/doc/api/epydoc.docwriter.html.HTMLWriter-class.html
@@ -0,0 +1,5176 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.docwriter.html.HTMLWriter</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.docwriter-module.html">Package docwriter</a> ::
+        <a href="epydoc.docwriter.html-module.html">Module html</a> ::
+        Class HTMLWriter
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.docwriter.html.HTMLWriter-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class HTMLWriter</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter">source code</a></span></p>
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docwriter.html.HTMLWriter-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">docindex</span>,
+        <span class="summary-sig-arg">**kwargs</span>)</span><br />
+      Construct a new HTML writer, using the given documentation index.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.__init__">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for___init___21-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for___init___21-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for___init___21" name="call_graph_for___init___21">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__cmp__" title="apidoc.APIDoc.__cmp__()" alt="" coords="192,6,416,38" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__hash__" title="apidoc.APIDoc.__hash__()" alt="" coords="192,62,416,94" />
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#reachable_valdocs" title="apidoc.DocIndex.reachable_valdocs()" alt="" coords="152,118,456,150" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#__init__" title="__init__()" alt="" coords="7,118,103,150" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_find_top_page" title="_find_top_page()" alt="" coords="228,174,380,206" />
+<area shape="rect" href="epydoc.util-module.html#is_src_filename" title="util.is_src_filename()" alt="" coords="213,230,395,262" />
+</map>
+  <img src="call_graph_for___init___21.gif" alt='' usemap="#call_graph_for___init___21" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>string</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docwriter.html.HTMLWriter-class.html#_find_top_page" class="summary-sig-name" onclick="show_private();">_find_top_page</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">pagename</span>)</span><br />
+      Find the top page for the API documentation.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter._find_top_page">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__find_top_page-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__find_top_page-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__find_top_page" name="call_graph_for__find_top_page">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#dominates" title="apidoc.DottedName.dominates()" alt="" coords="353,6,617,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#__init__" title="__init__()" alt="" coords="7,34,103,66" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_find_top_page" title="_find_top_page()" alt="" coords="152,34,304,66" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#url" title="url()" alt="" coords="457,62,513,94" />
+</map>
+  <img src="call_graph_for__find_top_page.gif" alt='' usemap="#call_graph_for__find_top_page" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    1. Interface Methods</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>None</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docwriter.html.HTMLWriter-class.html#write" class="summary-sig-name">write</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">directory</span>=<span class="summary-sig-default">None</span>)</span><br />
+      Write the documentation to the given directory.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.write">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_write_3-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_write_3-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_write_3" name="call_graph_for_write_3">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__getitem__" title="apidoc.DottedName.__getitem__()" alt="" coords="127,6,407,38" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__str__" title="apidoc.DottedName.__str__()" alt="" coords="145,62,388,94" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_group_by_letter" title="_group_by_letter()" alt="" coords="185,118,348,150" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_mkdir" title="_mkdir()" alt="" coords="223,174,311,206" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_write" title="_write()" alt="" coords="225,230,308,262" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#build_identifier_index" title="build_identifier_index()" alt="" coords="167,286,367,318" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#build_metadata_index" title="build_metadata_index()" alt="" coords="167,342,367,374" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#build_term_index" title="build_term_index()" alt="" coords="183,398,351,430" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#pysrc_url" title="pysrc_url()" alt="" coords="215,454,319,486" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#url" title="url()" alt="" coords="239,510,295,542" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write" title="write()" alt="" coords="5,426,77,458" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_css" title="write_css()" alt="" coords="215,566,319,598" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_homepage" title="write_homepage()" alt="" coords="188,622,345,654" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_images" title="write_images()" alt="" coords="200,678,333,710" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_javascript" title="write_javascript()" alt="" coords="189,734,344,766" />
+<area shape="rect" href="epydoc.log-module.html#docstring_warning" title="log.docstring_warning()" alt="" coords="165,790,368,822" />
+<area shape="rect" href="epydoc.log-module.html#progress" title="log.progress()" alt="" coords="204,846,329,878" />
+</map>
+  <img src="call_graph_for_write_3.gif" alt='' usemap="#call_graph_for_write_3" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_write"></a><span class="summary-sig-name">_write</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">write_func</span>,
+        <span class="summary-sig-arg">directory</span>,
+        <span class="summary-sig-arg">filename</span>,
+        <span class="summary-sig-arg">*args</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter._write">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__write-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__write-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__write" name="call_graph_for__write">
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_write" title="_write()" alt="" coords="125,342,208,374" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_api_list" title="write_api_list()" alt="" coords="288,6,424,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_class" title="write_class()" alt="" coords="297,62,415,94" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_class_tree" title="write_class_tree()" alt="" coords="279,118,433,150" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_help" title="write_help()" alt="" coords="300,174,412,206" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_link_index" title="write_link_index()" alt="" coords="276,230,436,262" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_metadata_index" title="write_metadata_index()" alt="" coords="256,286,456,318" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_module" title="write_module()" alt="" coords="288,342,424,374" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_module_toc" title="write_module_toc()" alt="" coords="272,398,440,430" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_module_tree" title="write_module_tree()" alt="" coords="269,454,443,486" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_project_toc" title="write_project_toc()" alt="" coords="273,510,439,542" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_redirect_page" title="write_redirect_page()" alt="" coords="265,566,447,598" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_sourcecode" title="write_sourcecode()" alt="" coords="273,622,439,654" />
+<area shape="rect" href="epydoc.log-module.html#progress" title="log.progress()" alt="" coords="293,678,419,710" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write" title="write()" alt="" coords="5,342,77,374" />
+</map>
+  <img src="call_graph_for__write.gif" alt='' usemap="#call_graph_for__write" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>None</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_mkdir"></a><span class="summary-sig-name">_mkdir</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">directory</span>)</span><br />
+      If the given directory does not exist, then attempt to create it.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter._mkdir">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__mkdir-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__mkdir-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__mkdir" name="call_graph_for__mkdir">
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_mkdir" title="_mkdir()" alt="" coords="127,6,215,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write" title="write()" alt="" coords="5,6,77,38" />
+</map>
+  <img src="call_graph_for__mkdir.gif" alt='' usemap="#call_graph_for__mkdir" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    2.1. Module Pages</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docwriter.html.HTMLWriter-class.html#write_module" class="summary-sig-name">write_module</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">out</span>,
+        <span class="summary-sig-arg">doc</span>)</span><br />
+      Write an HTML page containing the API documentation for the given 
+      module to <code>out</code>.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.write_module">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_write_module-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_write_module-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_write_module" name="call_graph_for_write_module">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__getitem__" title="apidoc.DottedName.__getitem__()" alt="" coords="324,6,604,38" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__str__" title="apidoc.DottedName.__str__()" alt="" coords="343,62,586,94" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_write" title="_write()" alt="" coords="6,230,88,262" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_module" title="write_module()" alt="" coords="138,230,274,262" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#descr" title="descr()" alt="" coords="428,118,500,150" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#pysrc_link" title="pysrc_link()" alt="" coords="407,174,522,206" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#url" title="url()" alt="" coords="436,230,492,262" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_details_list" title="write_details_list()" alt="" coords="383,286,546,318" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_module_list" title="write_module_list()" alt="" coords="380,342,548,374" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_standard_fields" title="write_standard_fields()" alt="" coords="367,398,562,430" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_summary_table" title="write_summary_table()" alt="" coords="367,454,562,486" />
+</map>
+  <img src="call_graph_for_write_module.gif" alt='' usemap="#call_graph_for_write_module" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    2.??. Source Code Pages</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="write_sourcecode"></a><span class="summary-sig-name">write_sourcecode</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">out</span>,
+        <span class="summary-sig-arg">doc</span>,
+        <span class="summary-sig-arg">name_to_docs</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.write_sourcecode">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_write_sourcecod-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_write_sourcecod-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_write_sourcecod" name="call_graph_for_write_sourcecod">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__str__" title="apidoc.DottedName.__str__()" alt="" coords="420,6,663,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_write" title="_write()" alt="" coords="6,146,88,178" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_sourcecode" title="write_sourcecode()" alt="" coords="136,146,302,178" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#doc_kind" title="doc_kind()" alt="" coords="490,62,594,94" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#href" title="href()" alt="" coords="510,118,574,150" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#pysrc_url" title="pysrc_url()" alt="" coords="490,174,594,206" />
+<area shape="rect" href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#__init__" title="html_colorize.PythonSourceColorizer.__init__()" alt="" coords="350,230,734,262" />
+<area shape="rect" href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#colorize" title="html_colorize.PythonSourceColorizer.colorize()" alt="" coords="351,286,732,318" />
+</map>
+  <img src="call_graph_for_write_sourcecod.gif" alt='' usemap="#call_graph_for_write_sourcecod" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    2.2. Class Pages</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docwriter.html.HTMLWriter-class.html#write_class" class="summary-sig-name">write_class</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">out</span>,
+        <span class="summary-sig-arg">doc</span>)</span><br />
+      Write an HTML page containing the API documentation for the given 
+      class to <code>out</code>.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.write_class">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_write_class-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_write_class-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_write_class" name="call_graph_for_write_class">
+<area shape="rect" href="epydoc.apidoc.ClassDoc-class.html#is_exception" title="apidoc.ClassDoc.is_exception()" alt="" coords="316,6,575,38" />
+<area shape="rect" href="epydoc.apidoc.ClassDoc-class.html#is_type" title="apidoc.ClassDoc.is_type()" alt="" coords="336,62,555,94" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__getitem__" title="apidoc.DottedName.__getitem__()" alt="" coords="305,118,585,150" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__str__" title="apidoc.DottedName.__str__()" alt="" coords="324,174,567,206" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_write" title="_write()" alt="" coords="5,286,88,318" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_class" title="write_class()" alt="" coords="137,286,255,318" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#descr" title="descr()" alt="" coords="409,230,481,262" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#pysrc_link" title="pysrc_link()" alt="" coords="388,286,503,318" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#url" title="url()" alt="" coords="417,342,473,374" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_class_tree_graph" title="write_class_tree_graph()" alt="" coords="343,398,548,430" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_details_list" title="write_details_list()" alt="" coords="364,454,527,486" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_standard_fields" title="write_standard_fields()" alt="" coords="348,510,543,542" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_summary_table" title="write_summary_table()" alt="" coords="348,566,543,598" />
+</map>
+  <img src="call_graph_for_write_class.gif" alt='' usemap="#call_graph_for_write_class" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docwriter.html.HTMLWriter-class.html#write_class_tree_graph" class="summary-sig-name">write_class_tree_graph</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">out</span>,
+        <span class="summary-sig-arg">doc</span>,
+        <span class="summary-sig-arg">graphmaker</span>)</span><br />
+      Write HTML code for a class tree graph of <code>doc</code> (a 
+      classdoc), using <code>graphmaker</code> to draw the actual graph.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.write_class_tree_graph">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_write_class_tre-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_write_class_tre-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_write_class_tre" name="call_graph_for_write_class_tre">
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#uml_class_tree_graph" title="dotgraph.uml_class_tree_graph()" alt="" coords="440,6,707,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_private_subclasses" title="_private_subclasses()" alt="" coords="482,62,666,94" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#render_graph" title="render_graph()" alt="" coords="507,118,640,150" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_class" title="write_class()" alt="" coords="7,90,124,122" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_class_tree_graph" title="write_class_tree_graph()" alt="" coords="175,90,380,122" />
+<area shape="rect" href="epydoc.docwriter.html._HTMLDocstringLinker-class.html#__init__" title="_HTMLDocstringLinker.__init__()" alt="" coords="430,174,718,206" />
+</map>
+  <img src="call_graph_for_write_class_tre.gif" alt='' usemap="#call_graph_for_write_class_tre" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    2.3. Trees pages</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="write_module_tree"></a><span class="summary-sig-name">write_module_tree</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">out</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.write_module_tree">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_write_module_tr-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_write_module_tr-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_write_module_tr" name="call_graph_for_write_module_tr">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__cmp__" title="apidoc.APIDoc.__cmp__()" alt="" coords="361,6,585,38" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__hash__" title="apidoc.APIDoc.__hash__()" alt="" coords="361,62,585,94" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_write" title="_write()" alt="" coords="5,90,88,122" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_module_tree" title="write_module_tree()" alt="" coords="137,90,311,122" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_module_tree_item" title="write_module_tree_item()" alt="" coords="365,118,581,150" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_treepage_header" title="write_treepage_header()" alt="" coords="372,174,575,206" />
+</map>
+  <img src="call_graph_for_write_module_tr.gif" alt='' usemap="#call_graph_for_write_module_tr" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docwriter.html.HTMLWriter-class.html#write_class_tree" class="summary-sig-name">write_class_tree</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">out</span>)</span><br />
+      Write HTML code for a nested list showing the base/subclass 
+      relationships between all documented classes.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.write_class_tree">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_write_class_tre_2-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_write_class_tre_2-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_write_class_tre_2" name="call_graph_for_write_class_tre_2">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__hash__" title="apidoc.APIDoc.__hash__()" alt="" coords="340,6,564,38" />
+<area shape="rect" href="epydoc.apidoc.ClassDoc-class.html#mro" title="apidoc.ClassDoc.mro()" alt="" coords="355,62,550,94" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_write" title="_write()" alt="" coords="6,62,88,94" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_class_tree" title="write_class_tree()" alt="" coords="136,62,291,94" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_treepage_header" title="write_treepage_header()" alt="" coords="351,118,554,150" />
+</map>
+  <img src="call_graph_for_write_class_tre_2.gif" alt='' usemap="#call_graph_for_write_class_tre_2" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="write_treepage_header"></a><span class="summary-sig-name">write_treepage_header</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">out</span>,
+        <span class="summary-sig-arg">title</span>,
+        <span class="summary-sig-arg">url</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.write_treepage_header">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_write_treepage_-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_write_treepage_-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_write_treepage_" name="call_graph_for_write_treepage_">
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_class_tree" title="write_class_tree()" alt="" coords="16,6,171,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_treepage_header" title="write_treepage_header()" alt="" coords="231,34,433,66" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_module_tree" title="write_module_tree()" alt="" coords="7,62,180,94" />
+</map>
+  <img src="call_graph_for_write_treepage_.gif" alt='' usemap="#call_graph_for_write_treepage_" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    2.4. Index pages</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="write_link_index"></a><span class="summary-sig-name">write_link_index</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">out</span>,
+        <span class="summary-sig-arg">indices</span>,
+        <span class="summary-sig-arg">title</span>,
+        <span class="summary-sig-arg">url</span>,
+        <span class="summary-sig-arg">index_by_section</span>,
+        <span class="summary-sig-arg">sections</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string">ABCDEFGHIJKLMNOPQRSTUVWXYZ_</code><code class="variable-quote">'</code></span>,
+        <span class="summary-sig-arg">section_url</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string">#%s</code><code class="variable-quote">'</code></span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.write_link_index">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_write_link_inde-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_write_link_inde-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_write_link_inde" name="call_graph_for_write_link_inde">
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_write" title="_write()" alt="" coords="6,34,88,66" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_link_index" title="write_link_index()" alt="" coords="138,34,298,66" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_index_section" title="write_index_section()" alt="" coords="364,6,548,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_indexpage_header" title="write_indexpage_header()" alt="" coords="348,62,564,94" />
+</map>
+  <img src="call_graph_for_write_link_inde.gif" alt='' usemap="#call_graph_for_write_link_inde" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="write_metadata_index"></a><span class="summary-sig-name">write_metadata_index</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">out</span>,
+        <span class="summary-sig-arg">indices</span>,
+        <span class="summary-sig-arg">field</span>,
+        <span class="summary-sig-arg">title</span>,
+        <span class="summary-sig-arg">typ</span>)</span><br />
+      Write an HTML page containing a metadata index.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.write_metadata_index">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_write_metadata_-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_write_metadata_-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_write_metadata_" name="call_graph_for_write_metadata_">
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_doc_or_ancestor_is_private" title="_doc_or_ancestor_is_private()" alt="" coords="384,6,635,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_write" title="_write()" alt="" coords="5,90,88,122" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_metadata_index" title="write_metadata_index()" alt="" coords="136,90,336,122" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#docstring_to_html" title="docstring_to_html()" alt="" coords="424,62,595,94" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#href" title="href()" alt="" coords="477,118,541,150" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_indexpage_header" title="write_indexpage_header()" alt="" coords="401,174,617,206" />
+</map>
+  <img src="call_graph_for_write_metadata_.gif" alt='' usemap="#call_graph_for_write_metadata_" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="write_indexpage_header"></a><span class="summary-sig-name">write_indexpage_header</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">out</span>,
+        <span class="summary-sig-arg">indices</span>,
+        <span class="summary-sig-arg">title</span>,
+        <span class="summary-sig-arg">url</span>)</span><br />
+      A helper for the index page generation functions, which generates a 
+      header that can be used to navigate between the different indices.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.write_indexpage_header">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_write_indexpage-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_write_indexpage-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_write_indexpage" name="call_graph_for_write_indexpage">
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_indexpage_header" title="write_indexpage_header()" alt="" coords="255,34,471,66" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_link_index" title="write_link_index()" alt="" coords="25,6,185,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_metadata_index" title="write_metadata_index()" alt="" coords="5,62,205,94" />
+</map>
+  <img src="call_graph_for_write_indexpage.gif" alt='' usemap="#call_graph_for_write_indexpage" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="write_index_section"></a><span class="summary-sig-name">write_index_section</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">out</span>,
+        <span class="summary-sig-arg">items</span>,
+        <span class="summary-sig-arg">add_blankline</span>=<span class="summary-sig-default">False</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.write_index_section">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_write_index_sec-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_write_index_sec-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_write_index_sec" name="call_graph_for_write_index_sec">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__getitem__" title="apidoc.DottedName.__getitem__()" alt="" coords="452,6,732,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#href" title="href()" alt="" coords="560,62,624,94" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_index_section" title="write_index_section()" alt="" coords="218,34,402,66" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_link_index" title="write_link_index()" alt="" coords="7,34,167,66" />
+</map>
+  <img src="call_graph_for_write_index_sec.gif" alt='' usemap="#call_graph_for_write_index_sec" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    2.5. Help Page</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docwriter.html.HTMLWriter-class.html#write_help" class="summary-sig-name">write_help</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">out</span>)</span><br />
+      Write an HTML help file to the given stream.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.write_help">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_write_help-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_write_help-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_write_help" name="call_graph_for_write_help">
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_write" title="_write()" alt="" coords="5,6,88,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_help" title="write_help()" alt="" coords="137,6,249,38" />
+</map>
+  <img src="call_graph_for_write_help.gif" alt='' usemap="#call_graph_for_write_help" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    2.6. Frames-based Table of Contents</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="write_frames_index"></a><span class="summary-sig-name">write_frames_index</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">out</span>)</span><br />
+      Write the frames index file for the frames-based table of contents to
+      the given streams.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.write_frames_index">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="write_toc"></a><span class="summary-sig-name">write_toc</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">out</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.write_toc">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="write_toc_section"></a><span class="summary-sig-name">write_toc_section</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">out</span>,
+        <span class="summary-sig-arg">name</span>,
+        <span class="summary-sig-arg">docs</span>,
+        <span class="summary-sig-arg">fullname</span>=<span class="summary-sig-default">True</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.write_toc_section">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_write_toc_secti-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_write_toc_secti-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_write_toc_secti" name="call_graph_for_write_toc_secti">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__getitem__" title="apidoc.DottedName.__getitem__()" alt="" coords="441,6,721,38" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__str__" title="apidoc.DottedName.__str__()" alt="" coords="460,62,703,94" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_doc_or_ancestor_is_private" title="_doc_or_ancestor_is_private()" alt="" coords="456,118,707,150" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#url" title="url()" alt="" coords="553,174,609,206" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_module_toc" title="write_module_toc()" alt="" coords="7,62,175,94" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_toc_section" title="write_toc_section()" alt="" coords="225,90,391,122" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_project_toc" title="write_project_toc()" alt="" coords="8,118,173,150" />
+</map>
+  <img src="call_graph_for_write_toc_secti.gif" alt='' usemap="#call_graph_for_write_toc_secti" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="write_project_toc"></a><span class="summary-sig-name">write_project_toc</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">out</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.write_project_toc">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_write_project_t-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_write_project_t-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_write_project_t" name="call_graph_for_write_project_t">
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#container" title="apidoc.DocIndex.container()" alt="" coords="383,6,617,38" />
+<area shape="rect" href="epydoc.apidoc.ModuleDoc-class.html#select_variables" title="apidoc.ModuleDoc.select_variables()" alt="" coords="349,62,651,94" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_write" title="_write()" alt="" coords="5,62,88,94" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_project_toc" title="write_project_toc()" alt="" coords="136,62,301,94" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_toc_section" title="write_toc_section()" alt="" coords="417,118,583,150" />
+</map>
+  <img src="call_graph_for_write_project_t.gif" alt='' usemap="#call_graph_for_write_project_t" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docwriter.html.HTMLWriter-class.html#write_module_toc" class="summary-sig-name">write_module_toc</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">out</span>,
+        <span class="summary-sig-arg">doc</span>)</span><br />
+      Write an HTML page containing the table of contents page for the 
+      given module to the given streams.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.write_module_toc">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_write_module_to-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_write_module_to-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_write_module_to" name="call_graph_for_write_module_to">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__getitem__" title="apidoc.DottedName.__getitem__()" alt="" coords="365,6,645,38" />
+<area shape="rect" href="epydoc.apidoc.ModuleDoc-class.html#select_variables" title="apidoc.ModuleDoc.select_variables()" alt="" coords="355,62,656,94" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_write" title="_write()" alt="" coords="5,62,88,94" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_module_toc" title="write_module_toc()" alt="" coords="137,62,305,94" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_toc_section" title="write_toc_section()" alt="" coords="423,118,588,150" />
+</map>
+  <img src="call_graph_for_write_module_to.gif" alt='' usemap="#call_graph_for_write_module_to" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    2.7. Project homepage (index.html)</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docwriter.html.HTMLWriter-class.html#write_homepage" class="summary-sig-name">write_homepage</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">directory</span>)</span><br />
+      Write an <code>index.html</code> file in the given directory.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.write_homepage">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_write_homepage-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_write_homepage-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_write_homepage" name="call_graph_for_write_homepage">
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write" title="write()" alt="" coords="6,6,78,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_homepage" title="write_homepage()" alt="" coords="127,6,284,38" />
+</map>
+  <img src="call_graph_for_write_homepage.gif" alt='' usemap="#call_graph_for_write_homepage" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="write_redirect_index"></a><span class="summary-sig-name">write_redirect_index</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">out</span>,
+        <span class="summary-sig-arg">top</span>,
+        <span class="summary-sig-arg">name</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.write_redirect_index">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    2.8. Stylesheet (epydoc.css)</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>None</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docwriter.html.HTMLWriter-class.html#write_css" class="summary-sig-name">write_css</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">directory</span>,
+        <span class="summary-sig-arg">cssname</span>)</span><br />
+      Write the CSS stylesheet in the given directory.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.write_css">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_write_css-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_write_css-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_write_css" name="call_graph_for_write_css">
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write" title="write()" alt="" coords="5,6,77,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_css" title="write_css()" alt="" coords="127,6,231,38" />
+</map>
+  <img src="call_graph_for_write_css.gif" alt='' usemap="#call_graph_for_write_css" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    2.9. Javascript (epydoc.js)</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="write_javascript"></a><span class="summary-sig-name">write_javascript</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">directory</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.write_javascript">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_write_javascrip-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_write_javascrip-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_write_javascrip" name="call_graph_for_write_javascrip">
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write" title="write()" alt="" coords="5,6,77,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_javascript" title="write_javascript()" alt="" coords="125,6,280,38" />
+</map>
+  <img src="call_graph_for_write_javascrip.gif" alt='' usemap="#call_graph_for_write_javascrip" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    2.10. Graphs</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="render_graph"></a><span class="summary-sig-name">render_graph</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">graph</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.render_graph">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_render_graph-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_render_graph-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_render_graph" name="call_graph_for_render_graph">
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraph-class.html#to_html" title="dotgraph.DotGraph.to_html()" alt="" coords="447,6,687,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#render_graph" title="render_graph()" alt="" coords="263,6,396,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_class_tree_graph" title="write_class_tree_graph()" alt="" coords="7,6,212,38" />
+</map>
+  <img src="call_graph_for_render_graph.gif" alt='' usemap="#call_graph_for_render_graph" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>str</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docwriter.html.HTMLWriter-class.html#render_callgraph" class="summary-sig-name">render_callgraph</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">callgraph</span>,
+        <span class="summary-sig-arg">token</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>)</span><br />
+      Render the HTML chunk of a callgraph.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.render_callgraph">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>str</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docwriter.html.HTMLWriter-class.html#callgraph_link" class="summary-sig-name">callgraph_link</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">callgraph</span>,
+        <span class="summary-sig-arg">token</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>)</span><br />
+      Render the HTML chunk of a callgraph link.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.callgraph_link">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    2.11. Images</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="write_images"></a><span class="summary-sig-name">write_images</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">directory</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.write_images">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_write_images-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_write_images-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_write_images" name="call_graph_for_write_images">
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write" title="write()" alt="" coords="6,6,78,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_images" title="write_images()" alt="" coords="127,6,260,38" />
+</map>
+  <img src="call_graph_for_write_images.gif" alt='' usemap="#call_graph_for_write_images" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    3.1. Page Header</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docwriter.html.HTMLWriter-class.html#write_header" class="summary-sig-name">write_header</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">out</span>,
+        <span class="summary-sig-arg">title</span>)</span><br />
+      Generate HTML code for the standard page header, and write it to 
+      <code>out</code>.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.write_header">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    3.2. Page Footer</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="write_footer"></a><span class="summary-sig-name">write_footer</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">out</span>,
+        <span class="summary-sig-arg">short</span>=<span class="summary-sig-default">False</span>)</span><br />
+      Generate HTML code for the standard page footer, and write it to 
+      <code>out</code>.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.write_footer">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    3.3. Navigation Bar</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docwriter.html.HTMLWriter-class.html#write_navbar" class="summary-sig-name">write_navbar</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">out</span>,
+        <span class="summary-sig-arg">context</span>)</span><br />
+      Generate HTML code for the navigation bar, and write it to 
+      <code>out</code>.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.write_navbar">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    3.4. Breadcrumbs</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docwriter.html.HTMLWriter-class.html#write_breadcrumbs" class="summary-sig-name">write_breadcrumbs</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">out</span>,
+        <span class="summary-sig-arg">context</span>,
+        <span class="summary-sig-arg">context_url</span>)</span><br />
+      Generate HTML for the breadcrumbs line, and write it to 
+      <code>out</code>.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.write_breadcrumbs">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="breadcrumbs"></a><span class="summary-sig-name">breadcrumbs</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">doc</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.breadcrumbs">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_breadcrumbs-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_breadcrumbs-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_breadcrumbs" name="call_graph_for_breadcrumbs">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__cmp__" title="apidoc.APIDoc.__cmp__()" alt="" coords="216,6,440,38" />
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#container" title="apidoc.DocIndex.container()" alt="" coords="211,62,446,94" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__getitem__" title="apidoc.DottedName.__getitem__()" alt="" coords="188,118,468,150" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__len__" title="apidoc.DottedName.__len__()" alt="" coords="204,174,452,206" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_crumb" title="_crumb()" alt="" coords="283,230,374,262" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#breadcrumbs" title="breadcrumbs()" alt="" coords="7,146,138,178" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#href" title="href()" alt="" coords="296,286,360,318" />
+</map>
+  <img src="call_graph_for_breadcrumbs.gif" alt='' usemap="#call_graph_for_breadcrumbs" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_crumb"></a><span class="summary-sig-name">_crumb</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">doc</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter._crumb">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__crumb-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__crumb-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__crumb" name="call_graph_for__crumb">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__getitem__" title="apidoc.DottedName.__getitem__()" alt="" coords="329,6,609,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_crumb" title="_crumb()" alt="" coords="188,34,279,66" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#doc_kind" title="doc_kind()" alt="" coords="417,62,521,94" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#breadcrumbs" title="breadcrumbs()" alt="" coords="7,34,137,66" />
+</map>
+  <img src="call_graph_for__crumb.gif" alt='' usemap="#call_graph_for__crumb" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    3.5. Summary Tables</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docwriter.html.HTMLWriter-class.html#write_summary_table" class="summary-sig-name">write_summary_table</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">out</span>,
+        <span class="summary-sig-arg">heading</span>,
+        <span class="summary-sig-arg">doc</span>,
+        <span class="summary-sig-arg">value_type</span>)</span><br />
+      Generate HTML code for a summary table, and write it to 
+      <code>out</code>.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.write_summary_table">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_write_summary_t-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_write_summary_t-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_write_summary_t" name="call_graph_for_write_summary_t">
+<area shape="rect" href="epydoc.apidoc.ClassDoc-class.html#select_variables" title="apidoc.ClassDoc.select_variables()" alt="" coords="452,6,735,38" />
+<area shape="rect" href="epydoc.apidoc.ModuleDoc-class.html#select_variables" title="apidoc.ModuleDoc.select_variables()" alt="" coords="443,62,744,94" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#group_names" title="apidoc.NamespaceDoc.group_names()" alt="" coords="439,118,748,150" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_class" title="write_class()" alt="" coords="16,90,134,122" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_summary_table" title="write_summary_table()" alt="" coords="194,118,388,150" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_module" title="write_module()" alt="" coords="7,146,143,178" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_summary_group" title="write_summary_group()" alt="" coords="492,174,695,206" />
+<area shape="rect" href="epydoc.util-module.html#plaintext_to_html" title="util.plaintext_to_html()" alt="" coords="495,230,692,262" />
+</map>
+  <img src="call_graph_for_write_summary_t.gif" alt='' usemap="#call_graph_for_write_summary_t" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="write_summary_group"></a><span class="summary-sig-name">write_summary_group</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">out</span>,
+        <span class="summary-sig-arg">doc</span>,
+        <span class="summary-sig-arg">name</span>,
+        <span class="summary-sig-arg">var_docs</span>,
+        <span class="summary-sig-arg">grouped_inh_vars</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.write_summary_group">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_write_summary_g-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_write_summary_g-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_write_summary_g" name="call_graph_for_write_summary_g">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__cmp__" title="apidoc.APIDoc.__cmp__()" alt="" coords="503,6,727,38" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__hash__" title="apidoc.APIDoc.__hash__()" alt="" coords="503,62,727,94" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_inheritance_list" title="write_inheritance_list()" alt="" coords="517,118,712,150" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_summary_group" title="write_summary_group()" alt="" coords="251,90,453,122" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_summary_line" title="write_summary_line()" alt="" coords="521,174,708,206" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_summary_table" title="write_summary_table()" alt="" coords="7,90,201,122" />
+</map>
+  <img src="call_graph_for_write_summary_g.gif" alt='' usemap="#call_graph_for_write_summary_g" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="write_inheritance_list"></a><span class="summary-sig-name">write_inheritance_list</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">out</span>,
+        <span class="summary-sig-arg">doc</span>,
+        <span class="summary-sig-arg">listed_inh_vars</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.write_inheritance_list">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_write_inheritan-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_write_inheritan-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_write_inheritan" name="call_graph_for_write_inheritan">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__cmp__" title="apidoc.APIDoc.__cmp__()" alt="" coords="503,6,727,38" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__hash__" title="apidoc.APIDoc.__hash__()" alt="" coords="503,62,727,94" />
+<area shape="rect" href="epydoc.apidoc.ClassDoc-class.html#mro" title="apidoc.ClassDoc.mro()" alt="" coords="517,118,712,150" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#href" title="href()" alt="" coords="583,174,647,206" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_inheritance_list" title="write_inheritance_list()" alt="" coords="257,118,452,150" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_var_list" title="write_var_list()" alt="" coords="547,230,683,262" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_summary_group" title="write_summary_group()" alt="" coords="5,118,208,150" />
+</map>
+  <img src="call_graph_for_write_inheritan.gif" alt='' usemap="#call_graph_for_write_inheritan" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="write_var_list"></a><span class="summary-sig-name">write_var_list</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">out</span>,
+        <span class="summary-sig-arg">vardocs</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.write_var_list">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_write_var_list-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_write_var_list-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_write_var_list" name="call_graph_for_write_var_list">
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#href" title="href()" alt="" coords="439,6,503,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_inheritance_list" title="write_inheritance_list()" alt="" coords="7,6,201,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_var_list" title="write_var_list()" alt="" coords="252,6,388,38" />
+</map>
+  <img src="call_graph_for_write_var_list.gif" alt='' usemap="#call_graph_for_write_var_list" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docwriter.html.HTMLWriter-class.html#write_summary_line" class="summary-sig-name">write_summary_line</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">out</span>,
+        <span class="summary-sig-arg">var_doc</span>,
+        <span class="summary-sig-arg">container</span>)</span><br />
+      Generate HTML code for a single line of a summary table, and write it
+      to <code>out</code>.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.write_summary_line">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_write_summary_l-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_write_summary_l-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_write_summary_l" name="call_graph_for_write_summary_l">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__cmp__" title="apidoc.APIDoc.__cmp__()" alt="" coords="582,6,806,38" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#summary_pyval_repr" title="apidoc.ValueDoc.summary_pyval_repr()" alt="" coords="530,62,858,94" />
+<area shape="rect" href="epydoc.apidoc.VariableDoc-class.html#is_detailed" title="apidoc.VariableDoc.is_detailed()" alt="" coords="559,118,828,150" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#function_signature" title="function_signature()" alt="" coords="607,174,780,206" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#pysrc_link" title="pysrc_link()" alt="" coords="636,230,751,262" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#return_type" title="return_type()" alt="" coords="634,286,754,318" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#summary" title="summary()" alt="" coords="642,342,746,374" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#summary_name" title="summary_name()" alt="" coords="618,398,770,430" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#type_descr" title="type_descr()" alt="" coords="636,454,751,486" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#variable_tooltip" title="variable_tooltip()" alt="" coords="618,510,770,542" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_summary_group" title="write_summary_group()" alt="" coords="6,286,208,318" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_summary_line" title="write_summary_line()" alt="" coords="258,286,444,318" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#to_html" title="markup.epytext.ParsedEpytextDocstring.to_html()" alt="" coords="495,566,892,598" />
+</map>
+  <img src="call_graph_for_write_summary_l.gif" alt='' usemap="#call_graph_for_write_summary_l" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_write_summary_line"></a><span class="summary-sig-name">_write_summary_line</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">out</span>,
+        <span class="summary-sig-arg">typ</span>,
+        <span class="summary-sig-arg">description</span>,
+        <span class="summary-sig-arg">tr_class</span>,
+        <span class="summary-sig-arg">pysrc_link</span>,
+        <span class="summary-sig-arg">callgraph</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter._write_summary_line">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    3.6. Details Lists</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="write_details_list"></a><span class="summary-sig-name">write_details_list</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">out</span>,
+        <span class="summary-sig-arg">heading</span>,
+        <span class="summary-sig-arg">doc</span>,
+        <span class="summary-sig-arg">value_type</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.write_details_list">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_write_details_l-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_write_details_l-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_write_details_l" name="call_graph_for_write_details_l">
+<area shape="rect" href="epydoc.apidoc.ClassDoc-class.html#select_variables" title="apidoc.ClassDoc.select_variables()" alt="" coords="412,6,695,38" />
+<area shape="rect" href="epydoc.apidoc.ModuleDoc-class.html#select_variables" title="apidoc.ModuleDoc.select_variables()" alt="" coords="403,62,704,94" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_class" title="write_class()" alt="" coords="16,34,133,66" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_details_list" title="write_details_list()" alt="" coords="192,62,355,94" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_details_entry" title="write_details_entry()" alt="" coords="465,118,641,150" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_module" title="write_module()" alt="" coords="7,90,143,122" />
+</map>
+  <img src="call_graph_for_write_details_l.gif" alt='' usemap="#call_graph_for_write_details_l" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="write_details_entry"></a><span class="summary-sig-name">write_details_entry</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">out</span>,
+        <span class="summary-sig-arg">var_doc</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.write_details_entry">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_write_details_e-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_write_details_e-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_write_details_e" name="call_graph_for_write_details_e">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__cmp__" title="apidoc.APIDoc.__cmp__()" alt="" coords="449,6,673,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#arg_name_to_html" title="arg_name_to_html()" alt="" coords="475,62,648,94" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#descr" title="descr()" alt="" coords="525,118,597,150" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#docstring_to_html" title="docstring_to_html()" alt="" coords="476,174,647,206" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#property_accessor_to_html" title="property_accessor_to_html()" alt="" coords="443,230,680,262" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#return_descr" title="return_descr()" alt="" coords="497,286,625,318" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#return_type" title="return_type()" alt="" coords="501,342,621,374" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#summary" title="summary()" alt="" coords="509,398,613,430" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_details_entry" title="write_details_entry()" alt="" coords="217,202,393,234" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_details_list" title="write_details_list()" alt="" coords="5,202,168,234" />
+</map>
+  <img src="call_graph_for_write_details_e.gif" alt='' usemap="#call_graph_for_write_details_e" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="labelled_list_item"></a><span class="summary-sig-name">labelled_list_item</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">lhs</span>,
+        <span class="summary-sig-arg">rhs</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.labelled_list_item">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="property_accessor_to_html"></a><span class="summary-sig-name">property_accessor_to_html</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">val_doc</span>,
+        <span class="summary-sig-arg">context</span>=<span class="summary-sig-default">None</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.property_accessor_to_html">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_property_access-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_property_access-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_property_access" name="call_graph_for_property_access">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__cmp__" title="apidoc.APIDoc.__cmp__()" alt="" coords="518,6,742,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#function_signature" title="function_signature()" alt="" coords="543,62,716,94" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#property_accessor_to_html" title="property_accessor_to_html()" alt="" coords="232,34,470,66" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_details_entry" title="write_details_entry()" alt="" coords="7,34,183,66" />
+</map>
+  <img src="call_graph_for_property_access.gif" alt='' usemap="#call_graph_for_property_access" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docwriter.html.HTMLWriter-class.html#arg_name_to_html" class="summary-sig-name">arg_name_to_html</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">func_doc</span>,
+        <span class="summary-sig-arg">arg_name</span>)</span><br />
+      A helper function used to format an argument name, for use in the 
+      argument description list under a routine's details entry.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.arg_name_to_html">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_arg_name_to_htm-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_arg_name_to_htm-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_arg_name_to_htm" name="call_graph_for_arg_name_to_htm">
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#arg_name_to_html" title="arg_name_to_html()" alt="" coords="233,6,407,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#docstring_to_html" title="docstring_to_html()" alt="" coords="456,6,627,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_details_entry" title="write_details_entry()" alt="" coords="7,6,183,38" />
+</map>
+  <img src="call_graph_for_arg_name_to_htm.gif" alt='' usemap="#call_graph_for_arg_name_to_htm" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="write_function_details_entry"></a><span class="summary-sig-name">write_function_details_entry</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">out</span>,
+        <span class="summary-sig-arg">var_doc</span>,
+        <span class="summary-sig-arg">descr</span>,
+        <span class="summary-sig-arg">callgraph</span>,
+        <span class="summary-sig-arg">rtype</span>,
+        <span class="summary-sig-arg">rdescr</span>,
+        <span class="summary-sig-arg">arg_descrs</span>,
+        <span class="summary-sig-arg">div_class</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.write_function_details_entry">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="write_property_details_entry"></a><span class="summary-sig-name">write_property_details_entry</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">out</span>,
+        <span class="summary-sig-arg">var_doc</span>,
+        <span class="summary-sig-arg">descr</span>,
+        <span class="summary-sig-arg">accessors</span>,
+        <span class="summary-sig-arg">div_class</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.write_property_details_entry">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="write_variable_details_entry"></a><span class="summary-sig-name">write_variable_details_entry</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">out</span>,
+        <span class="summary-sig-arg">var_doc</span>,
+        <span class="summary-sig-arg">descr</span>,
+        <span class="summary-sig-arg">div_class</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.write_variable_details_entry">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="variable_tooltip"></a><span class="summary-sig-name">variable_tooltip</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">var_doc</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.variable_tooltip">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_variable_toolti-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_variable_toolti-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_variable_toolti" name="call_graph_for_variable_toolti">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__cmp__" title="apidoc.APIDoc.__cmp__()" alt="" coords="545,6,769,38" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#pyval_repr" title="apidoc.ValueDoc.pyval_repr()" alt="" coords="533,62,781,94" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#variable_tooltip" title="variable_tooltip()" alt="" coords="243,90,395,122" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#to_plaintext" title="markup.epytext.ParsedEpytextDocstring.to_plaintext()" alt="" coords="443,118,872,150" />
+<area shape="rect" href="epydoc.util-module.html#plaintext_to_html" title="util.plaintext_to_html()" alt="" coords="559,174,756,206" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_summary_line" title="write_summary_line()" alt="" coords="7,90,193,122" />
+</map>
+  <img src="call_graph_for_variable_toolti.gif" alt='' usemap="#call_graph_for_variable_toolti" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="pprint_value"></a><span class="summary-sig-name">pprint_value</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">val_doc</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.pprint_value">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_pprint_value-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_pprint_value-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_pprint_value" name="call_graph_for_pprint_value">
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#pyval_repr" title="apidoc.ValueDoc.pyval_repr()" alt="" coords="260,6,508,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#pprint_value" title="pprint_value()" alt="" coords="7,34,135,66" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#to_html" title="markup.epytext.ParsedEpytextDocstring.to_html()" alt="" coords="185,62,583,94" />
+</map>
+  <img src="call_graph_for_pprint_value.gif" alt='' usemap="#call_graph_for_pprint_value" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Base Tree</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>string</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docwriter.html.HTMLWriter-class.html#base_tree" class="summary-sig-name">base_tree</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">doc</span>,
+        <span class="summary-sig-arg">width</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">postfix</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>,
+        <span class="summary-sig-arg">context</span>=<span class="summary-sig-default">None</span>)</span><br />
+      Returns:
+      The HTML code for a class's base tree.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.base_tree">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>int</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docwriter.html.HTMLWriter-class.html#find_tree_width" class="summary-sig-name">find_tree_width</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">doc</span>,
+        <span class="summary-sig-arg">context</span>)</span><br />
+      Helper function for <a 
+      href="epydoc.docwriter.html.HTMLWriter-class.html#base_tree" 
+      class="link">base_tree</a>.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.find_tree_width">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="contextual_label"></a><span class="summary-sig-name">contextual_label</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">doc</span>,
+        <span class="summary-sig-arg">context</span>)</span><br />
+      Return the label for <code>doc</code> to be shown in 
+      <code>context</code>.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.contextual_label">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Function Signatures</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>str</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docwriter.html.HTMLWriter-class.html#function_signature" class="summary-sig-name">function_signature</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">api_doc</span>,
+        <span class="summary-sig-arg">is_summary</span>=<span class="summary-sig-default">False</span>,
+        <span class="summary-sig-arg">link_name</span>=<span class="summary-sig-default">False</span>,
+        <span class="summary-sig-arg">anchor</span>=<span class="summary-sig-default">False</span>,
+        <span class="summary-sig-arg">context</span>=<span class="summary-sig-default">None</span>)</span><br />
+      Render a function signature in HTML.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.function_signature">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_function_signat-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_function_signat-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_function_signat" name="call_graph_for_function_signat">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__cmp__" title="apidoc.APIDoc.__cmp__()" alt="" coords="512,6,736,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#func_arg" title="func_arg()" alt="" coords="575,62,673,94" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#function_signature" title="function_signature()" alt="" coords="291,90,464,122" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#href" title="href()" alt="" coords="592,118,656,150" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#summary_name" title="summary_name()" alt="" coords="548,174,700,206" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#property_accessor_to_html" title="property_accessor_to_html()" alt="" coords="5,62,243,94" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_summary_line" title="write_summary_line()" alt="" coords="31,118,217,150" />
+</map>
+  <img src="call_graph_for_function_signat.gif" alt='' usemap="#call_graph_for_function_signat" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>str</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docwriter.html.HTMLWriter-class.html#summary_name" class="summary-sig-name">summary_name</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">api_doc</span>,
+        <span class="summary-sig-arg">css_class</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string">summary-name</code><code class="variable-quote">'</code></span>,
+        <span class="summary-sig-arg">link_name</span>=<span class="summary-sig-default">False</span>,
+        <span class="summary-sig-arg">anchor</span>=<span class="summary-sig-default">False</span>)</span><br />
+      Render an object name in HTML.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.summary_name">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_summary_name-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_summary_name-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_summary_name" name="call_graph_for_summary_name">
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#function_signature" title="function_signature()" alt="" coords="13,6,187,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#summary_name" title="summary_name()" alt="" coords="244,34,396,66" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#href" title="href()" alt="" coords="447,34,511,66" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_summary_line" title="write_summary_line()" alt="" coords="7,62,193,94" />
+</map>
+  <img src="call_graph_for_summary_name.gif" alt='' usemap="#call_graph_for_summary_name" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="func_arg"></a><span class="summary-sig-name">func_arg</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">name</span>,
+        <span class="summary-sig-arg">default</span>,
+        <span class="summary-sig-arg">css_class</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.func_arg">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_func_arg-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_func_arg-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_func_arg" name="call_graph_for_func_arg">
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#summary_pyval_repr" title="apidoc.ValueDoc.summary_pyval_repr()" alt="" coords="412,6,740,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_arg_name" title="_arg_name()" alt="" coords="517,62,635,94" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#func_arg" title="func_arg()" alt="" coords="228,62,327,94" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#to_html" title="markup.epytext.ParsedEpytextDocstring.to_html()" alt="" coords="377,118,775,150" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#function_signature" title="function_signature()" alt="" coords="5,62,179,94" />
+</map>
+  <img src="call_graph_for_func_arg.gif" alt='' usemap="#call_graph_for_func_arg" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_arg_name"></a><span class="summary-sig-name">_arg_name</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">arg</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter._arg_name">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__arg_name-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__arg_name-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__arg_name" name="call_graph_for__arg_name">
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_arg_name" title="_arg_name()" alt="" coords="156,30,273,62" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#func_arg" title="func_arg()" alt="" coords="7,30,105,62" />
+</map>
+  <img src="call_graph_for__arg_name.gif" alt='' usemap="#call_graph_for__arg_name" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Import Lists</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="write_imports"></a><span class="summary-sig-name">write_imports</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">out</span>,
+        <span class="summary-sig-arg">doc</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.write_imports">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_import"></a><span class="summary-sig-name">_import</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">var_doc</span>,
+        <span class="summary-sig-arg">context</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter._import">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Module Trees</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="write_module_list"></a><span class="summary-sig-name">write_module_list</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">out</span>,
+        <span class="summary-sig-arg">doc</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.write_module_list">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_write_module_li-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_write_module_li-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_write_module_li" name="call_graph_for_write_module_li">
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#group_names" title="apidoc.NamespaceDoc.group_names()" alt="" coords="412,6,721,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_module" title="write_module()" alt="" coords="7,34,143,66" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_module_list" title="write_module_list()" alt="" coords="193,34,361,66" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_module_tree_item" title="write_module_tree_item()" alt="" coords="459,62,675,94" />
+</map>
+  <img src="call_graph_for_write_module_li.gif" alt='' usemap="#call_graph_for_write_module_li" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="write_module_tree_item"></a><span class="summary-sig-name">write_module_tree_item</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">out</span>,
+        <span class="summary-sig-arg">doc</span>,
+        <span class="summary-sig-arg">package</span>=<span class="summary-sig-default">None</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.write_module_tree_item">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_write_module_tr_2-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_write_module_tr_2-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_write_module_tr_2" name="call_graph_for_write_module_tr_2">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__getitem__" title="apidoc.DottedName.__getitem__()" alt="" coords="497,6,777,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#description" title="description()" alt="" coords="579,62,696,94" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#href" title="href()" alt="" coords="605,118,669,150" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_module_list" title="write_module_list()" alt="" coords="9,34,177,66" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_module_tree_item" title="write_module_tree_item()" alt="" coords="231,62,447,94" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_module_tree" title="write_module_tree()" alt="" coords="7,90,180,122" />
+</map>
+  <img src="call_graph_for_write_module_tr_2.gif" alt='' usemap="#call_graph_for_write_module_tr_2" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Class trees</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="write_class_tree_item"></a><span class="summary-sig-name">write_class_tree_item</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">out</span>,
+        <span class="summary-sig-arg">doc</span>,
+        <span class="summary-sig-arg">class_set</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.write_class_tree_item">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Standard Fields</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docwriter.html.HTMLWriter-class.html#write_standard_fields" class="summary-sig-name">write_standard_fields</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">out</span>,
+        <span class="summary-sig-arg">doc</span>)</span><br />
+      Write HTML code containing descriptions of any standard markup fields
+      that are defined by the given <a 
+      href="epydoc.apidoc.APIDoc-class.html" class="link">APIDoc</a> object
+      (such as <code>@author</code> and <code>@todo</code> fields).</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.write_standard_fields">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_write_standard_-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_write_standard_-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_write_standard_" name="call_graph_for_write_standard_">
+<area shape="rect" href="epydoc.docstringparser.DocstringField-class.html#__hash__" title="docstringparser.DocstringField.__hash__()" alt="" coords="435,34,776,66" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_class" title="write_class()" alt="" coords="16,6,133,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_standard_fields" title="write_standard_fields()" alt="" coords="192,34,387,66" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_module" title="write_module()" alt="" coords="7,62,143,94" />
+</map>
+  <img src="call_graph_for_write_standard_.gif" alt='' usemap="#call_graph_for_write_standard_" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="write_standard_field"></a><span class="summary-sig-name">write_standard_field</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">out</span>,
+        <span class="summary-sig-arg">doc</span>,
+        <span class="summary-sig-arg">field</span>,
+        <span class="summary-sig-arg">descrs</span>,
+        <span class="summary-sig-arg">arg</span>=<span class="summary-sig-default">''</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.write_standard_field">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Index generation</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="build_identifier_index"></a><span class="summary-sig-name">build_identifier_index</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.build_identifier_index">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_build_identifie-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_build_identifie-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_build_identifie" name="call_graph_for_build_identifie">
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#container" title="apidoc.DocIndex.container()" alt="" coords="400,6,635,38" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__getitem__" title="apidoc.DottedName.__getitem__()" alt="" coords="377,62,657,94" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#build_identifier_index" title="build_identifier_index()" alt="" coords="127,90,327,122" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#url" title="url()" alt="" coords="489,118,545,150" />
+<area shape="rect" href="epydoc.util-module.html#plaintext_to_html" title="util.plaintext_to_html()" alt="" coords="419,174,616,206" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write" title="write()" alt="" coords="5,90,77,122" />
+</map>
+  <img src="call_graph_for_build_identifie.gif" alt='' usemap="#call_graph_for_build_identifie" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_group_by_letter"></a><span class="summary-sig-name">_group_by_letter</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">items</span>)</span><br />
+      Preserves sort order of the input.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter._group_by_letter">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__group_by_lette-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__group_by_lette-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__group_by_lette" name="call_graph_for__group_by_lette">
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_group_by_letter" title="_group_by_letter()" alt="" coords="127,6,289,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write" title="write()" alt="" coords="5,6,77,38" />
+</map>
+  <img src="call_graph_for__group_by_lette.gif" alt='' usemap="#call_graph_for__group_by_lette" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="build_term_index"></a><span class="summary-sig-name">build_term_index</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.build_term_index">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_build_term_inde-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_build_term_inde-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_build_term_inde" name="call_graph_for_build_term_inde">
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_terms_from_docstring" title="_terms_from_docstring()" alt="" coords="343,6,551,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#build_term_index" title="build_term_index()" alt="" coords="125,34,293,66" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#url" title="url()" alt="" coords="419,62,475,94" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write" title="write()" alt="" coords="5,34,77,66" />
+</map>
+  <img src="call_graph_for_build_term_inde.gif" alt='' usemap="#call_graph_for_build_term_inde" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_terms_from_docstring"></a><span class="summary-sig-name">_terms_from_docstring</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">base_url</span>,
+        <span class="summary-sig-arg">container</span>,
+        <span class="summary-sig-arg">parsed_docstring</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter._terms_from_docstring">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__terms_from_doc-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__terms_from_doc-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__terms_from_doc" name="call_graph_for__terms_from_doc">
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_term_index_to_anchor" title="_term_index_to_anchor()" alt="" coords="604,6,818,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_terms_from_docstring" title="_terms_from_docstring()" alt="" coords="223,146,431,178" />
+<area shape="rect" href="epydoc.markup.ConcatenatedDocstring-class.html#index_terms" title="markup.ConcatenatedDocstring.index_terms()" alt="" coords="528,62,894,94" />
+<area shape="rect" href="epydoc.markup.ParsedDocstring-class.html#index_terms" title="markup.ParsedDocstring.index_terms()" alt="" coords="554,118,868,150" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#index_terms" title="markup.epytext.ParsedEpytextDocstring.index_terms()" alt="" coords="495,174,927,206" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#to_plaintext" title="markup.epytext.ParsedEpytextDocstring.to_plaintext()" alt="" coords="496,230,926,262" />
+<area shape="rect" href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html#index_terms" title="markup.restructuredtext.ParsedRstDocstring.index_terms()" alt="" coords="480,286,942,318" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#build_term_index" title="build_term_index()" alt="" coords="6,146,174,178" />
+</map>
+  <img src="call_graph_for__terms_from_doc.gif" alt='' usemap="#call_graph_for__terms_from_doc" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="build_metadata_index"></a><span class="summary-sig-name">build_metadata_index</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">field_name</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.build_metadata_index">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_build_metadata_-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_build_metadata_-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_build_metadata_" name="call_graph_for_build_metadata_">
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#build_metadata_index" title="build_metadata_index()" alt="" coords="127,6,327,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write" title="write()" alt="" coords="5,6,77,38" />
+</map>
+  <img src="call_graph_for_build_metadata_.gif" alt='' usemap="#call_graph_for_build_metadata_" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docwriter.html.HTMLWriter-class.html#_term_index_to_anchor" class="summary-sig-name" onclick="show_private();">_term_index_to_anchor</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">term</span>)</span><br />
+      Given the name of an inline index item, construct a URI anchor.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter._term_index_to_anchor">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__term_index_to_-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__term_index_to_-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__term_index_to_" name="call_graph_for__term_index_to_">
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_term_index_to_anchor" title="_term_index_to_anchor()" alt="" coords="427,34,640,66" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#to_plaintext" title="markup.epytext.ParsedEpytextDocstring.to_plaintext()" alt="" coords="688,34,1118,66" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_terms_from_docstring" title="_terms_from_docstring()" alt="" coords="88,6,296,38" />
+<area shape="rect" href="epydoc.docwriter.html._HTMLDocstringLinker-class.html#translate_indexterm" title="_HTMLDocstringLinker.translate_indexterm()" alt="" coords="6,62,379,94" />
+</map>
+  <img src="call_graph_for__term_index_to_.gif" alt='' usemap="#call_graph_for__term_index_to_" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Redirect page</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docwriter.html.HTMLWriter-class.html#write_redirect_page" class="summary-sig-name">write_redirect_page</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">out</span>)</span><br />
+      Build the auto-redirect page, which translates dotted names to URLs 
+      using javascript.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.write_redirect_page">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_write_redirect__2-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_write_redirect__2-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_write_redirect__2" name="call_graph_for_write_redirect__2">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__str__" title="apidoc.DottedName.__str__()" alt="" coords="370,6,612,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_write" title="_write()" alt="" coords="6,6,88,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_redirect_page" title="write_redirect_page()" alt="" coords="138,6,319,38" />
+</map>
+  <img src="call_graph_for_write_redirect__2.gif" alt='' usemap="#call_graph_for_write_redirect__2" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_write_redirect_page"></a><span class="summary-sig-name">_write_redirect_page</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">out</span>,
+        <span class="summary-sig-arg">pages</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter._write_redirect_page">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    URLs list</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="write_api_list"></a><span class="summary-sig-name">write_api_list</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">out</span>)</span><br />
+      Write a list of mapping name->url for all the documented objects.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.write_api_list">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_write_api_list-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_write_api_list-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_write_api_list" name="call_graph_for_write_api_list">
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_write" title="_write()" alt="" coords="5,6,88,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_api_list" title="write_api_list()" alt="" coords="136,6,272,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_url_record" title="write_url_record()" alt="" coords="321,6,479,38" />
+</map>
+  <img src="call_graph_for_write_api_list.gif" alt='' usemap="#call_graph_for_write_api_list" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="write_url_record"></a><span class="summary-sig-name">write_url_record</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">out</span>,
+        <span class="summary-sig-arg">obj</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.write_url_record">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_write_url_recor-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_write_url_recor-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_write_url_recor" name="call_graph_for_write_url_recor">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__str__" title="apidoc.DottedName.__str__()" alt="" coords="399,6,641,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#url" title="url()" alt="" coords="492,62,548,94" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_api_list" title="write_api_list()" alt="" coords="5,34,141,66" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_url_record" title="write_url_record()" alt="" coords="191,34,348,66" />
+</map>
+  <img src="call_graph_for_write_url_recor.gif" alt='' usemap="#call_graph_for_write_url_recor" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Helper functions</th></tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_val_is_public"></a><span class="summary-sig-name">_val_is_public</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">valdoc</span>)</span><br />
+      Make a best-guess as to whether the given class is public.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter._val_is_public">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__val_is_public-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__val_is_public-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__val_is_public" name="call_graph_for__val_is_public">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__cmp__" title="apidoc.APIDoc.__cmp__()" alt="" coords="439,6,663,38" />
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#container" title="apidoc.DocIndex.container()" alt="" coords="434,62,668,94" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_private_subclasses" title="_private_subclasses()" alt="" coords="6,6,190,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_val_is_public" title="_val_is_public()" alt="" coords="239,34,383,66" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#href" title="href()" alt="" coords="66,62,130,94" />
+</map>
+  <img src="call_graph_for__val_is_public.gif" alt='' usemap="#call_graph_for__val_is_public" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="write_table_header"></a><span class="summary-sig-name">write_table_header</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">out</span>,
+        <span class="summary-sig-arg">css_class</span>,
+        <span class="summary-sig-arg">heading</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">private_link</span>=<span class="summary-sig-default">True</span>,
+        <span class="summary-sig-arg">colspan</span>=<span class="summary-sig-default">2</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.write_table_header">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="write_group_header"></a><span class="summary-sig-name">write_group_header</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">out</span>,
+        <span class="summary-sig-arg">group</span>,
+        <span class="summary-sig-arg">tr_class</span>=<span class="summary-sig-default">''</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.write_group_header">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="url"></a><span class="summary-sig-name">url</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">obj</span>)</span><br />
+      Return the URL for the given object, which can be a 
+      <code>VariableDoc</code>, a <code>ValueDoc</code>, or a 
+      <code>DottedName</code>.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.url">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_url-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_url-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_url" name="call_graph_for_url">
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_find_top_page" title="_find_top_page()" alt="" coords="119,6,271,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#url" title="url()" alt="" coords="432,286,488,318" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_url" title="_url()" alt="" coords="537,286,601,318" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#build_identifier_index" title="build_identifier_index()" alt="" coords="95,62,295,94" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#build_term_index" title="build_term_index()" alt="" coords="111,118,279,150" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#href" title="href()" alt="" coords="163,174,227,206" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write" title="write()" alt="" coords="159,230,231,262" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_class" title="write_class()" alt="" coords="136,286,253,318" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_module" title="write_module()" alt="" coords="127,342,263,374" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_toc_section" title="write_toc_section()" alt="" coords="112,398,277,430" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_url_record" title="write_url_record()" alt="" coords="116,454,273,486" />
+<area shape="rect" href="epydoc.docwriter.html._HTMLDocstringLinker-class.html#url_for" title="_HTMLDocstringLinker.url_for()" alt="" coords="56,510,333,542" />
+<area shape="rect" href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#doclink" title="html_colorize.PythonSourceColorizer.doclink()" alt="" coords="5,566,384,598" />
+</map>
+  <img src="call_graph_for_url.gif" alt='' usemap="#call_graph_for_url" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_url"></a><span class="summary-sig-name">_url</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">obj</span>)</span><br />
+      Internal helper for <a 
+      href="epydoc.docwriter.html.HTMLWriter-class.html#url" 
+      class="link">url</a>.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter._url">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__url-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__url-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__url" name="call_graph_for__url">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__cmp__" title="apidoc.APIDoc.__cmp__()" alt="" coords="149,6,373,38" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__hash__" title="apidoc.APIDoc.__hash__()" alt="" coords="149,62,373,94" />
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#container" title="apidoc.DocIndex.container()" alt="" coords="144,118,379,150" />
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#get_valdoc" title="apidoc.DocIndex.get_valdoc()" alt="" coords="137,174,385,206" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__getitem__" title="apidoc.DottedName.__getitem__()" alt="" coords="121,230,401,262" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__str__" title="apidoc.DottedName.__str__()" alt="" coords="140,286,383,318" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_url" title="_url()" alt="" coords="7,202,71,234" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#url" title="url()" alt="" coords="233,342,289,374" />
+</map>
+  <img src="call_graph_for__url.gif" alt='' usemap="#call_graph_for__url" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="pysrc_link"></a><span class="summary-sig-name">pysrc_link</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">api_doc</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.pysrc_link">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_pysrc_link-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_pysrc_link-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_pysrc_link" name="call_graph_for_pysrc_link">
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#pysrc_link" title="pysrc_link()" alt="" coords="243,62,357,94" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#pysrc_url" title="pysrc_url()" alt="" coords="407,62,511,94" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_class" title="write_class()" alt="" coords="41,6,159,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_module" title="write_module()" alt="" coords="32,62,168,94" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_summary_line" title="write_summary_line()" alt="" coords="7,118,193,150" />
+</map>
+  <img src="call_graph_for_pysrc_link.gif" alt='' usemap="#call_graph_for_pysrc_link" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="pysrc_url"></a><span class="summary-sig-name">pysrc_url</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">api_doc</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.pysrc_url">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_pysrc_url-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_pysrc_url-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_pysrc_url" name="call_graph_for_pysrc_url">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__cmp__" title="apidoc.APIDoc.__cmp__()" alt="" coords="403,6,627,38" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__hash__" title="apidoc.APIDoc.__hash__()" alt="" coords="403,62,627,94" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__getitem__" title="apidoc.DottedName.__getitem__()" alt="" coords="375,118,655,150" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__str__" title="apidoc.DottedName.__str__()" alt="" coords="393,174,636,206" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#dominates" title="apidoc.DottedName.dominates()" alt="" coords="383,230,647,262" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#pysrc_link" title="pysrc_link()" alt="" coords="31,62,145,94" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#pysrc_url" title="pysrc_url()" alt="" coords="220,118,324,150" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write" title="write()" alt="" coords="52,118,124,150" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_sourcecode" title="write_sourcecode()" alt="" coords="5,174,171,206" />
+</map>
+  <img src="call_graph_for_pysrc_url.gif" alt='' usemap="#call_graph_for_pysrc_url" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docwriter.html.HTMLWriter-class.html#href" class="summary-sig-name">href</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">target</span>,
+        <span class="summary-sig-arg">label</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">css_class</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">context</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">tooltip</span>=<span class="summary-sig-default">None</span>)</span><br />
+      Return the HTML code for an HREF link to the given target (which can 
+      be a <code>VariableDoc</code>, a <code>ValueDoc</code>, or a 
+      <code>DottedName</code>.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.href">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_href-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_href-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_href" name="call_graph_for_href">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__str__" title="apidoc.DottedName.__str__()" alt="" coords="596,118,839,150" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#container" title="apidoc.DottedName.container()" alt="" coords="590,174,846,206" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#contextualize" title="apidoc.DottedName.contextualize()" alt="" coords="574,230,862,262" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_val_is_public" title="_val_is_public()" alt="" coords="646,286,790,318" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#breadcrumbs" title="breadcrumbs()" alt="" coords="143,6,274,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#href" title="href()" alt="" coords="460,258,524,290" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#function_signature" title="function_signature()" alt="" coords="122,62,295,94" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#url" title="url()" alt="" coords="690,342,746,374" />
+<area shape="rect" href="epydoc.util-module.html#plaintext_to_html" title="util.plaintext_to_html()" alt="" coords="619,398,816,430" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#summary_name" title="summary_name()" alt="" coords="132,118,284,150" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_index_section" title="write_index_section()" alt="" coords="116,174,300,206" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_inheritance_list" title="write_inheritance_list()" alt="" coords="111,230,306,262" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_metadata_index" title="write_metadata_index()" alt="" coords="108,286,308,318" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_module_tree_item" title="write_module_tree_item()" alt="" coords="100,342,316,374" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_sourcecode" title="write_sourcecode()" alt="" coords="126,398,291,430" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_var_list" title="write_var_list()" alt="" coords="140,454,276,486" />
+<area shape="rect" href="epydoc.docwriter.html._HTMLDocstringLinker-class.html#translate_identifier_xref" title="_HTMLDocstringLinker.translate_identifier_xref()" alt="" coords="6,510,411,542" />
+</map>
+  <img src="call_graph_for_href.gif" alt='' usemap="#call_graph_for_href" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_attr_to_html"></a><span class="summary-sig-name">_attr_to_html</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">attr</span>,
+        <span class="summary-sig-arg">api_doc</span>,
+        <span class="summary-sig-arg">indent</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter._attr_to_html">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__attr_to_html-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__attr_to_html-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__attr_to_html" name="call_graph_for__attr_to_html">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__cmp__" title="apidoc.APIDoc.__cmp__()" alt="" coords="366,90,590,122" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_attr_to_html" title="_attr_to_html()" alt="" coords="182,118,318,150" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#docstring_to_html" title="docstring_to_html()" alt="" coords="392,146,563,178" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#descr" title="descr()" alt="" coords="34,6,106,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#return_descr" title="return_descr()" alt="" coords="6,62,134,94" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#return_type" title="return_type()" alt="" coords="10,118,130,150" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#summary" title="summary()" alt="" coords="18,174,122,206" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#type_descr" title="type_descr()" alt="" coords="12,230,127,262" />
+</map>
+  <img src="call_graph_for__attr_to_html.gif" alt='' usemap="#call_graph_for__attr_to_html" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="summary"></a><span class="summary-sig-name">summary</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">api_doc</span>,
+        <span class="summary-sig-arg">indent</span>=<span class="summary-sig-default">0</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.summary">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_summary-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_summary-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_summary" name="call_graph_for_summary">
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_attr_to_html" title="_attr_to_html()" alt="" coords="395,34,531,66" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#summary" title="summary()" alt="" coords="243,34,347,66" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_details_entry" title="write_details_entry()" alt="" coords="12,6,188,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_summary_line" title="write_summary_line()" alt="" coords="7,62,193,94" />
+</map>
+  <img src="call_graph_for_summary.gif" alt='' usemap="#call_graph_for_summary" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="descr"></a><span class="summary-sig-name">descr</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">api_doc</span>,
+        <span class="summary-sig-arg">indent</span>=<span class="summary-sig-default">0</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.descr">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_descr-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_descr-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_descr" name="call_graph_for_descr">
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_attr_to_html" title="_attr_to_html()" alt="" coords="355,62,491,94" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#descr" title="descr()" alt="" coords="233,62,305,94" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_class" title="write_class()" alt="" coords="36,6,153,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_details_entry" title="write_details_entry()" alt="" coords="7,62,183,94" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_module" title="write_module()" alt="" coords="27,118,163,150" />
+</map>
+  <img src="call_graph_for_descr.gif" alt='' usemap="#call_graph_for_descr" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="type_descr"></a><span class="summary-sig-name">type_descr</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">api_doc</span>,
+        <span class="summary-sig-arg">indent</span>=<span class="summary-sig-default">0</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.type_descr">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_type_descr-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_type_descr-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_type_descr" name="call_graph_for_type_descr">
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_attr_to_html" title="_attr_to_html()" alt="" coords="406,6,542,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#type_descr" title="type_descr()" alt="" coords="243,6,358,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_summary_line" title="write_summary_line()" alt="" coords="7,6,194,38" />
+</map>
+  <img src="call_graph_for_type_descr.gif" alt='' usemap="#call_graph_for_type_descr" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="return_type"></a><span class="summary-sig-name">return_type</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">api_doc</span>,
+        <span class="summary-sig-arg">indent</span>=<span class="summary-sig-default">0</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.return_type">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_return_type-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_return_type-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_return_type" name="call_graph_for_return_type">
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_attr_to_html" title="_attr_to_html()" alt="" coords="414,34,550,66" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#return_type" title="return_type()" alt="" coords="244,34,364,66" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_details_entry" title="write_details_entry()" alt="" coords="12,6,188,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_summary_line" title="write_summary_line()" alt="" coords="7,62,194,94" />
+</map>
+  <img src="call_graph_for_return_type.gif" alt='' usemap="#call_graph_for_return_type" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="return_descr"></a><span class="summary-sig-name">return_descr</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">api_doc</span>,
+        <span class="summary-sig-arg">indent</span>=<span class="summary-sig-default">0</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.return_descr">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_return_descr-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_return_descr-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_return_descr" name="call_graph_for_return_descr">
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_attr_to_html" title="_attr_to_html()" alt="" coords="408,6,544,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#return_descr" title="return_descr()" alt="" coords="232,6,360,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_details_entry" title="write_details_entry()" alt="" coords="7,6,183,38" />
+</map>
+  <img src="call_graph_for_return_descr.gif" alt='' usemap="#call_graph_for_return_descr" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="docstring_to_html"></a><span class="summary-sig-name">docstring_to_html</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">parsed_docstring</span>,
+        <span class="summary-sig-arg">where</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">indent</span>=<span class="summary-sig-default">0</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.docstring_to_html">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_docstring_to_ht-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_docstring_to_ht-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_docstring_to_ht" name="call_graph_for_docstring_to_ht">
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_attr_to_html" title="_attr_to_html()" alt="" coords="37,34,173,66" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#docstring_to_html" title="docstring_to_html()" alt="" coords="253,118,424,150" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#arg_name_to_html" title="arg_name_to_html()" alt="" coords="19,90,192,122" />
+<area shape="rect" href="epydoc.docwriter.html._HTMLDocstringLinker-class.html#__init__" title="_HTMLDocstringLinker.__init__()" alt="" coords="541,6,829,38" />
+<area shape="rect" href="epydoc.markup.ConcatenatedDocstring-class.html#to_html" title="markup.ConcatenatedDocstring.to_html()" alt="" coords="519,62,852,94" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#to_html" title="markup.epytext.ParsedEpytextDocstring.to_html()" alt="" coords="487,118,884,150" />
+<area shape="rect" href="epydoc.markup.plaintext.ParsedPlaintextDocstring-class.html#to_html" title="markup.plaintext.ParsedPlaintextDocstring.to_html()" alt="" coords="477,174,893,206" />
+<area shape="rect" href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html#to_html" title="markup.restructuredtext.ParsedRstDocstring.to_html()" alt="" coords="472,230,899,262" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_details_entry" title="write_details_entry()" alt="" coords="17,146,193,178" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_metadata_index" title="write_metadata_index()" alt="" coords="5,202,205,234" />
+</map>
+  <img src="call_graph_for_docstring_to_ht.gif" alt='' usemap="#call_graph_for_docstring_to_ht" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="description"></a><span class="summary-sig-name">description</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">parsed_docstring</span>,
+        <span class="summary-sig-arg">where</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">indent</span>=<span class="summary-sig-default">0</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.description">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_description-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_description-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_description" name="call_graph_for_description">
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#description" title="description()" alt="" coords="272,90,389,122" />
+<area shape="rect" href="epydoc.docwriter.html._HTMLDocstringLinker-class.html#__init__" title="_HTMLDocstringLinker.__init__()" alt="" coords="507,6,795,38" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#to_html" title="markup.epytext.ParsedEpytextDocstring.to_html()" alt="" coords="452,62,849,94" />
+<area shape="rect" href="epydoc.markup.plaintext.ParsedPlaintextDocstring-class.html#to_html" title="markup.plaintext.ParsedPlaintextDocstring.to_html()" alt="" coords="443,118,859,150" />
+<area shape="rect" href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html#to_html" title="markup.restructuredtext.ParsedRstDocstring.to_html()" alt="" coords="437,174,864,206" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_module_tree_item" title="write_module_tree_item()" alt="" coords="7,90,223,122" />
+</map>
+  <img src="call_graph_for_description.gif" alt='' usemap="#call_graph_for_description" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="doc_kind"></a><span class="summary-sig-name">doc_kind</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">doc</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.doc_kind">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_doc_kind-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_doc_kind-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_doc_kind" name="call_graph_for_doc_kind">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__getitem__" title="apidoc.DottedName.__getitem__()" alt="" coords="372,34,652,66" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_crumb" title="_crumb()" alt="" coords="43,6,134,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#doc_kind" title="doc_kind()" alt="" coords="219,34,323,66" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_sourcecode" title="write_sourcecode()" alt="" coords="6,62,171,94" />
+</map>
+  <img src="call_graph_for_doc_kind.gif" alt='' usemap="#call_graph_for_doc_kind" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_doc_or_ancestor_is_private"></a><span class="summary-sig-name">_doc_or_ancestor_is_private</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">api_doc</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter._doc_or_ancestor_is_private">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__doc_or_ancesto-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__doc_or_ancesto-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__doc_or_ancesto" name="call_graph_for__doc_or_ancesto">
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#get_valdoc" title="apidoc.DocIndex.get_valdoc()" alt="" coords="569,6,817,38" />
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#get_vardoc" title="apidoc.DocIndex.get_vardoc()" alt="" coords="569,62,817,94" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__getitem__" title="apidoc.DottedName.__getitem__()" alt="" coords="553,118,833,150" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_doc_or_ancestor_is_private" title="_doc_or_ancestor_is_private()" alt="" coords="253,62,504,94" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_metadata_index" title="write_metadata_index()" alt="" coords="5,34,205,66" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_toc_section" title="write_toc_section()" alt="" coords="23,90,188,122" />
+</map>
+  <img src="call_graph_for__doc_or_ancesto.gif" alt='' usemap="#call_graph_for__doc_or_ancesto" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docwriter.html.HTMLWriter-class.html#_private_subclasses" class="summary-sig-name" onclick="show_private();">_private_subclasses</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">class_doc</span>)</span><br />
+      Return a list of all subclasses of the given class that are private, 
+      as determined by <code class="link">_val_is_private</code>.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter._private_subclasses">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__private_subcla-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__private_subcla-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__private_subcla" name="call_graph_for__private_subcla">
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_private_subclasses" title="_private_subclasses()" alt="" coords="261,6,445,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_val_is_public" title="_val_is_public()" alt="" coords="495,6,639,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_class_tree_graph" title="write_class_tree_graph()" alt="" coords="7,6,212,38" />
+</map>
+  <img src="call_graph_for__private_subcla.gif" alt='' usemap="#call_graph_for__private_subcla" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Class Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-ClassVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    2.4. Index pages</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="SPLIT_IDENT_INDEX_SIZE"></a><span class="summary-name">SPLIT_IDENT_INDEX_SIZE</span> = <code title="3000">3000</code><br />
+      If the identifier index has more than this number of entries, then it
+      will be split into separate pages, one for each alphabetical section.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="LETTERS"></a><span class="summary-name">LETTERS</span> = <code title="'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'"><code class="variable-quote">'</code><code class="variable-string">ABCDEFGHIJKLMNOPQRSTUVWXYZ_</code><code class="variable-quote">'</code></code><br />
+      The alphabetical sections that are used for link index pages.
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    2.9. Javascript (epydoc.js)</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docwriter.html.HTMLWriter-class.html#TOGGLE_PRIVATE_JS" class="summary-name">TOGGLE_PRIVATE_JS</a> = <code title="'''function toggle_private() {
+        // Search for any private/public links on this page.  Store
+        // their old text in "cmd," so we will know what action to
+        // take; and change their text to the opposite action.
+        var cmd = "?";
+        var elts = document.getElementsByTagName("a");
+        for(var i=0; i<elts.length; i++) {
+          if (elts[i].className == "privatelink") {
+..."><code class="variable-quote">'</code><code class="variable-string">function toggle_private() {\n        // S</code><code class="variable-ellipsis">...</code></code><br />
+      A javascript that is used to show or hide the API documentation for 
+      private objects.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docwriter.html.HTMLWriter-class.html#GET_COOKIE_JS" class="summary-name">GET_COOKIE_JS</a> = <code title="'''function getCookie(name) {
+        var dc = document.cookie;
+        var prefix = name + "=";
+        var begin = dc.indexOf("; " + prefix);
+        if (begin == -1) {
+          begin = dc.indexOf(prefix);
+          if (begin != 0) return null;
+        } else
+..."><code class="variable-quote">'</code><code class="variable-string">function getCookie(name) {\n        var dc = </code><code class="variable-ellipsis">...</code></code><br />
+      A javascript that is used to read the value of a cookie.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docwriter.html.HTMLWriter-class.html#SET_FRAME_JS" class="summary-name">SET_FRAME_JS</a> = <code title="'''function setFrame(url1, url2) {
+          parent.frames[1].location.href = url1;
+          parent.frames[2].location.href = url2;
+      }'''"><code class="variable-quote">'</code><code class="variable-string">function setFrame(url1, url2) {\n          par</code><code class="variable-ellipsis">...</code></code><br />
+      A javascript that is used to set the contents of two frames at once.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docwriter.html.HTMLWriter-class.html#HIDE_PRIVATE_JS" class="summary-name">HIDE_PRIVATE_JS</a> = <code title="'''function checkCookie() {
+        var cmd=getCookie("EpydocPrivate");
+        if (cmd && cmd.substr(0,4)!="show" && location.href.indexOf("#\
+_") < 0)
+            toggle_private();
+      }'''"><code class="variable-quote">'</code><code class="variable-string">function checkCookie() {\n        var cmd=g</code><code class="variable-ellipsis">...</code></code><br />
+      A javascript that is used to hide private variables, unless either: 
+      (a) the cookie says not to; or (b) we appear to be linking to a 
+      private variable.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docwriter.html.HTMLWriter-class.html#TOGGLE_CALLGRAPH_JS" class="summary-name">TOGGLE_CALLGRAPH_JS</a> = <code title="'''function toggleCallGraph(id) {
+        var elt = document.getElementById(id);
+        if (elt.style.display == "none")
+            elt.style.display = "block";
+        else
+            elt.style.display = "none";
+      }'''"><code class="variable-quote">'</code><code class="variable-string">function toggleCallGraph(id) {\n       </code><code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docwriter.html.HTMLWriter-class.html#SHOW_PRIVATE_JS" class="summary-name">SHOW_PRIVATE_JS</a> = <code title="'''function show_private() {
+        var elts = document.getElementsByTagName("a");
+        for(var i=0; i<elts.length; i++) {
+          if (elts[i].className == "privatelink") {
+            cmd = elts[i].innerHTML;
+            if (cmd && cmd.substr(0,4)=="show")
+                toggle_private();
+          }
+..."><code class="variable-quote">'</code><code class="variable-string">function show_private() {\n        var elts</code><code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docwriter.html.HTMLWriter-class.html#GET_ANCHOR_JS" class="summary-name">GET_ANCHOR_JS</a> = <code title="'''function get_anchor() {
+          var href = location.href;
+          var start = href.indexOf("#")+1;
+          if ((start != 0) && (start != href.length))
+              return href.substring(start, href.length);
+      }'''"><code class="variable-quote">'</code><code class="variable-string">function get_anchor() {\n          var href =</code><code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docwriter.html.HTMLWriter-class.html#REDIRECT_URL_JS" class="summary-name">REDIRECT_URL_JS</a> = <code title="'''function redirect_url(dottedName) {
+          // Scan through each element of the "pages" list, and check
+          // if "name" matches with any of them.
+          for (var i=0; i<pages.length; i++) {
+
+              // Each page has the form "<pagename>-m" or "<pagename>-\
+c";
+              // extract the <pagename> portion & compare it to dotted\
+..."><code class="variable-quote">'</code><code class="variable-string">function redirect_url(dottedName) {\n      </code><code class="variable-ellipsis">...</code></code><br />
+      A javascript that is used to implement the auto-redirect page.
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    2.10. Graphs</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="RE_CALLGRAPH_ID"></a><span class="summary-name">RE_CALLGRAPH_ID</span> = <code title="re.compile(r'["\'](.+-div)[\'"]')">re.compile(r'<code class="re-group">[</code>"\'<code class="re-group">]</code><code class="re-group">(</code>.<code class="re-op">+</code>-div<code class="re-group">)</code><code class="re-group">[</code>\'"<code class="re-group">]</code>')</code>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    2.11. Images</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docwriter.html.HTMLWriter-class.html#IMAGES" class="summary-name">IMAGES</a> = <code title="{'crarr.png': '''iVBORw0KGgoAAAANSUhEUgAAABEAAAAKCAMAAABlokWQAAAALHRFW\
+HRDcmVhdGlvbiBUaW1lAFR1
+ZSAyMiBBdWcgMjAwNiAwMDo0MzoxMCAtMDUwMGAMEFgAAAAHdElNRQfWCBYFASkQ033WAA\
+AACXBI
+WXMAAB7CAAAewgFu0HU+AAAABGdBTUEAALGPC/xhBQAAAEVQTFRF////zcOw18/AgGY0c1\
+cg4dvQ
+inJEYEAAYkME3NXI6eTcloFYe2Asr5+AbE4Uh29A9fPwqpl4ZEUI8O3onopk0Ma0lH5U1n\
+fFdgAA
+..."><code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">crarr.png</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">iVBORw0KGgoAAAANSUhEUgAAABEAAAAKCAMAAA</code><code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    3.6. Details Lists</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docwriter.html.HTMLWriter-class.html#SPECIAL_METHODS" class="summary-name">SPECIAL_METHODS</a> = <code title="{'__add__': 'Addition operator',
+ '__and__': 'And operator',
+ '__call__': 'Call operator',
+ '__cmp__': 'Comparison operator',
+ '__contains__': 'In operator',
+ '__del__': 'Destructor',
+ '__delitem__': 'Index deletion operator',
+ '__delslice__': 'Slice deletion operator',
+..."><code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">__add__</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">Addition operator</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">__and__</code><code class="variable-quote">'</code><code class="var [...]
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Index generation</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docwriter.html.HTMLWriter-class.html#METADATA_INDICES" class="summary-name">METADATA_INDICES</a> = <code title="[('bug', 'Bug List', 'Bugs'),
+ ('todo', 'To Do List', 'To Do'),
+ ('change', 'Change Log', 'Changes'),
+ ('deprecated', 'Deprecation List', 'Deprecations'),
+ ('since', 'Introductions List', 'Introductions')]"><code class="variable-group">[</code><code class="variable-group">(</code><code class="variable-quote">'</code><code class="variable-string">bug</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">Bug List</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-stri [...]
+      A list of metadata indices that should be generated.
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Helper functions</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="TABLE_FOOTER"></a><span class="summary-name">TABLE_FOOTER</span> = <code title="'''</table>
+'''"><code class="variable-quote">'</code><code class="variable-string"></table>\n</code><code class="variable-quote">'</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docwriter.html.HTMLWriter-class.html#PRIVATE_LINK" class="summary-name">PRIVATE_LINK</a> = <code title="'''<span class="options">[<a href="javascript:void(0);" class="private\
+link"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span>'''"><code class="variable-quote">'</code><code class="variable-string"><span class="options">[<a href="javascript:voi</code><code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docwriter.html.HTMLWriter-class.html#_url_cache" class="summary-name" onclick="show_private();">_url_cache</a> = <code title="{1078260780: 'epydoc-module.html',
+ 1078260940: 'epydoc-module.html',
+ 1078261708: 'epydoc-module.html#DEBUG',
+ 1078261804: 'epydoc-module.html#__author__',
+ 1078261868: 'epydoc-module.html#__license__',
+ 1078261932: 'epydoc-module.html#__url__',
+ 1078261996: 'epydoc-module.html#__version__',
+ 1078262028: 'epydoc.compat-module.html',
+..."><code class="variable-group">{</code>1078260780<code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">epydoc-module.html</code><code class="variable-quote">'</code><code class="variable-op">, </code>1078260940<code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">e</code><code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+</table>
+<!-- ==================== INSTANCE VARIABLES ==================== -->
+<a name="section-InstanceVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="_show_private"></a><span class="summary-name">_show_private</span><br />
+      Should private docs be included?
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="_prj_name"></a><span class="summary-name">_prj_name</span><br />
+      The project's name (for the project link in the navbar)
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="_prj_url"></a><span class="summary-name">_prj_url</span><br />
+      URL for the project link in the navbar
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="_prj_link"></a><span class="summary-name">_prj_link</span><br />
+      HTML code for the project link in the navbar
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="_top_page"></a><span class="summary-name">_top_page</span><br />
+      The 'main' page
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="_css"></a><span class="summary-name">_css</span><br />
+      CSS stylesheet to use
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="_helpfile"></a><span class="summary-name">_helpfile</span><br />
+      Filename of file to extract help contents from
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="_frames_index"></a><span class="summary-name">_frames_index</span><br />
+      Should a frames index be created?
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="_show_imports"></a><span class="summary-name">_show_imports</span><br />
+      Should imports be listed?
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="_propfunc_linelen"></a><span class="summary-name">_propfunc_linelen</span><br />
+      [XXX] Not used!
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="_variable_maxlines"></a><span class="summary-name">_variable_maxlines</span><br />
+      Max lines for variable values
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="_variable_linelen"></a><span class="summary-name">_variable_linelen</span><br />
+      Max line length for variable values
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="_variable_summary_linelen"></a><span class="summary-name">_variable_summary_linelen</span><br />
+      Max length for variable value summaries
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="_variable_tooltip_linelen"></a><span class="summary-name">_variable_tooltip_linelen</span><br />
+      Max length for variable tooltips
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="_inheritance"></a><span class="summary-name">_inheritance</span><br />
+      How should inheritance be displayed?  'listed', 'included', or 
+      'grouped'
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="_incl_sourcecode"></a><span class="summary-name">_incl_sourcecode</span><br />
+      Should pages be generated for source code of modules?
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="_mark_docstrings"></a><span class="summary-name">_mark_docstrings</span><br />
+      Wrap <span class='docstring'>...</span> around 
+      docstrings?
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="_graph_types"></a><span class="summary-name">_graph_types</span><br />
+      Graphs that we should include in our output.
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="_include_log"></a><span class="summary-name">_include_log</span><br />
+      Are we generating an HTML log page?
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="_src_code_tab_width"></a><span class="summary-name">_src_code_tab_width</span><br />
+      Number of spaces to replace each tab with in source code listings.
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="_callgraph_cache"></a><span class="summary-name">_callgraph_cache</span><br />
+      Map the callgraph <a 
+      href="epydoc.docwriter.dotgraph.DotGraph-class.html#uid" 
+      class="link">uid</a> to their HTML representation.
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="_redundant_details"></a><span class="summary-name">_redundant_details</span><br />
+      If true, then include objects in the details list even if all info 
+      about them is already provided by the summary table.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="module_list"></a><span class="summary-name">module_list</span><br />
+      The list of <a href="epydoc.apidoc.ModuleDoc-class.html" 
+      class="link">ModuleDoc</a>s for the documented modules.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="module_set"></a><span class="summary-name">module_set</span><br />
+      The set of <a href="epydoc.apidoc.ModuleDoc-class.html" 
+      class="link">ModuleDoc</a>s for the documented modules.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="class_list"></a><span class="summary-name">class_list</span><br />
+      The list of <a href="epydoc.apidoc.ClassDoc-class.html" 
+      class="link">ClassDoc</a>s for the documented classes.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="class_set"></a><span class="summary-name">class_set</span><br />
+      The set of <a href="epydoc.apidoc.ClassDoc-class.html" 
+      class="link">ClassDoc</a>s for the documented classes.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="routine_list"></a><span class="summary-name">routine_list</span><br />
+      The list of <a href="epydoc.apidoc.RoutineDoc-class.html" 
+      class="link">RoutineDoc</a>s for the documented routines.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="indexed_docs"></a><span class="summary-name">indexed_docs</span><br />
+      The list of <a href="epydoc.apidoc.APIDoc-class.html" 
+      class="link">APIDoc</a>s for variables and values that should be 
+      included in the index.
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Method Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-MethodDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">docindex</span>,
+        <span class="sig-arg">**kwargs</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.__init__">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for___init___21-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for___init___21-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for___init___21" name="call_graph_for___init___21">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__cmp__" title="apidoc.APIDoc.__cmp__()" alt="" coords="192,6,416,38" />
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__hash__" title="apidoc.APIDoc.__hash__()" alt="" coords="192,62,416,94" />
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#reachable_valdocs" title="apidoc.DocIndex.reachable_valdocs()" alt="" coords="152,118,456,150" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#__init__" title="__init__()" alt="" coords="7,118,103,150" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_find_top_page" title="_find_top_page()" alt="" coords="228,174,380,206" />
+<area shape="rect" href="epydoc.util-module.html#is_src_filename" title="util.is_src_filename()" alt="" coords="213,230,395,262" />
+</map>
+  <img src="call_graph_for___init___21.gif" alt='' usemap="#call_graph_for___init___21" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Construct a new HTML writer, using the given documentation index.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>docindex</code></strong> - The documentation index.</li>
+        <li><strong class="pname"><code>prj_name</code></strong> (<code>string</code>) - The name of the project.  Defaults to none.</li>
+        <li><strong class="pname"><code>prj_url</code></strong> (<code>string</code>) - The target for the project hopeage link on the navigation bar.  
+          If <code>prj_url</code> is not specified, then no hyperlink is 
+          created.</li>
+        <li><strong class="pname"><code>prj_link</code></strong> (<code>string</code>) - The label for the project link on the navigation bar.  This link 
+          can contain arbitrary HTML code (e.g. images).  By default, a 
+          label is constructed from <code>prj_name</code>.</li>
+        <li><strong class="pname"><code>top_page</code></strong> (<code>string</code>) - The top page for the documentation.  This is the default page 
+          shown main frame, when frames are enabled.  <code>top</code> can 
+          be a URL, the name of a module, the name of a class, or one of 
+          the special strings <code>"trees.html"</code>, 
+          <code>"indices.html"</code>, or 
+          <code>"help.html"</code>.  By default, the top-level 
+          package or module is used, if there is one; otherwise, 
+          <code>"trees"</code> is used.</li>
+        <li><strong class="pname"><code>css</code></strong> (<code>string</code>) - The CSS stylesheet file.  If <code>css</code> is a file name, 
+          then the specified file's conents will be used. Otherwise, if 
+          <code>css</code> is the name of a CSS stylesheet in <a 
+          href="epydoc.docwriter.html_css-module.html" 
+          class="link">epydoc.docwriter.html_css</a>, then that stylesheet 
+          will be used.  Otherwise, an error is reported.  If no stylesheet
+          is specified, then the default stylesheet is used.</li>
+        <li><strong class="pname"><code>help_file</code></strong> (<code>string</code>) - The name of the help file.  If no help file is specified, then 
+          the default help file will be used.</li>
+        <li><strong class="pname"><code>show_private</code></strong> (<code>boolean</code>) - Whether to create documentation for private objects.  By default,
+          private objects are documented.</li>
+        <li><strong class="pname"><code>show_frames</code></strong> (<code>boolean</code>)) - Whether to create a frames-based table of contents.  By default, 
+          it is produced.</li>
+        <li><strong class="pname"><code>show_imports</code></strong> (<code>boolean</code>) - Whether or not to display lists of imported functions and 
+          classes.  By default, they are not shown.</li>
+        <li><strong class="pname"><code>variable_maxlines</code></strong> (<code>int</code>) - The maximum number of lines that should be displayed for the 
+          value of a variable in the variable details section.  By default,
+          8 lines are displayed.</li>
+        <li><strong class="pname"><code>variable_linelength</code></strong> (<code>int</code>) - The maximum line length used for displaying the values of 
+          variables in the variable details sections.  If a line is longer 
+          than this length, then it will be wrapped to the next line.  The 
+          default line length is 70 characters.</li>
+        <li><strong class="pname"><code>variable_summary_linelength</code></strong> (<code>int</code>) - The maximum line length used for displaying the values of 
+          variables in the summary section.  If a line is longer than this 
+          length, then it will be truncated.  The default is 40 characters.</li>
+        <li><strong class="pname"><code>variable_tooltip_linelength</code></strong> (<code>int</code>) - The maximum line length used for tooltips for the values of 
+          variables.  If a line is longer than this length, then it will be
+          truncated.  The default is 600 characters.</li>
+        <li><strong class="pname"><code>property_function_linelength</code></strong> (<code>int</code>) - The maximum line length used to dispaly property functions 
+          (<code>fget</code>, <code>fset</code>, and <code>fdel</code>) 
+          that contain something other than a function object.  The default
+          length is 40 characters.</li>
+        <li><strong class="pname"><code>inheritance</code></strong> (<code>string</code>) - How inherited objects should be displayed. If 
+          <code>inheritance='grouped'</code>, then inherited objects are 
+          gathered into groups; if <code>inheritance='listed'</code>, then 
+          inherited objects are listed in a short list at the end of their 
+          group; if <code>inheritance='included'</code>, then inherited 
+          objects are mixed in with non-inherited objects.  The default is 
+          'grouped'.</li>
+        <li><strong class="pname"><code>include_source_code</code></strong> (<code>boolean</code>) - If true, then generate colorized source code files for each 
+          python module.</li>
+        <li><strong class="pname"><code>include_log</code></strong> (<code>boolean</code>) - If true, the the footer will include an href to the page 
+          'epydoc-log.html'.</li>
+        <li><strong class="pname"><code>src_code_tab_width</code></strong> (<code>int</code>) - Number of spaces to replace each tab with in source code 
+          listings.</li>
+    </ul></dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="_find_top_page"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">_find_top_page</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">pagename</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter._find_top_page">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__find_top_page-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for__find_top_page-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__find_top_page" name="call_graph_for__find_top_page">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#dominates" title="apidoc.DottedName.dominates()" alt="" coords="353,6,617,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#__init__" title="__init__()" alt="" coords="7,34,103,66" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_find_top_page" title="_find_top_page()" alt="" coords="152,34,304,66" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#url" title="url()" alt="" coords="457,62,513,94" />
+</map>
+  <img src="call_graph_for__find_top_page.gif" alt='' usemap="#call_graph_for__find_top_page" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Find the top page for the API documentation.  This page is used as the
+  default page shown in the main frame, when frames are used.  When frames 
+  are not used, this page is copied to <code>index.html</code>.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>pagename</code></strong> (<code>string</code>) - The name of the page, as specified by the keyword argument 
+          <code>top</code> to the constructor.</li>
+    </ul></dd>
+    <dt>Returns: <code>string</code></dt>
+        <dd>The URL of the top page.</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="write"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">write</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">directory</span>=<span class="sig-default">None</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.write">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_write_3-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_write_3-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_write_3" name="call_graph_for_write_3">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__getitem__" title="apidoc.DottedName.__getitem__()" alt="" coords="127,6,407,38" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__str__" title="apidoc.DottedName.__str__()" alt="" coords="145,62,388,94" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_group_by_letter" title="_group_by_letter()" alt="" coords="185,118,348,150" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_mkdir" title="_mkdir()" alt="" coords="223,174,311,206" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_write" title="_write()" alt="" coords="225,230,308,262" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#build_identifier_index" title="build_identifier_index()" alt="" coords="167,286,367,318" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#build_metadata_index" title="build_metadata_index()" alt="" coords="167,342,367,374" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#build_term_index" title="build_term_index()" alt="" coords="183,398,351,430" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#pysrc_url" title="pysrc_url()" alt="" coords="215,454,319,486" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#url" title="url()" alt="" coords="239,510,295,542" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write" title="write()" alt="" coords="5,426,77,458" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_css" title="write_css()" alt="" coords="215,566,319,598" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_homepage" title="write_homepage()" alt="" coords="188,622,345,654" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_images" title="write_images()" alt="" coords="200,678,333,710" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_javascript" title="write_javascript()" alt="" coords="189,734,344,766" />
+<area shape="rect" href="epydoc.log-module.html#docstring_warning" title="log.docstring_warning()" alt="" coords="165,790,368,822" />
+<area shape="rect" href="epydoc.log-module.html#progress" title="log.progress()" alt="" coords="204,846,329,878" />
+</map>
+  <img src="call_graph_for_write_3.gif" alt='' usemap="#call_graph_for_write_3" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Write the documentation to the given directory.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>directory</code></strong> (<code>string</code>) - The directory to which output should be written.  If no directory
+          is specified, output will be written to the current directory.  
+          If the directory does not exist, it will be created.</li>
+    </ul></dd>
+    <dt>Returns: <code>None</code></dt>
+    <dt>Raises:</dt>
+    <dd><ul class="nomargin-top">
+        <li><code><strong class='fraise'>OSError</strong></code> - If <code>directory</code> cannot be created.</li>
+        <li><code><strong class='fraise'>OSError</strong></code> - If any file cannot be created or written to.</li>
+    </ul></dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="write_module"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">write_module</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">out</span>,
+        <span class="sig-arg">doc</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.write_module">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_write_module-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_write_module-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_write_module" name="call_graph_for_write_module">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__getitem__" title="apidoc.DottedName.__getitem__()" alt="" coords="324,6,604,38" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__str__" title="apidoc.DottedName.__str__()" alt="" coords="343,62,586,94" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_write" title="_write()" alt="" coords="6,230,88,262" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_module" title="write_module()" alt="" coords="138,230,274,262" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#descr" title="descr()" alt="" coords="428,118,500,150" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#pysrc_link" title="pysrc_link()" alt="" coords="407,174,522,206" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#url" title="url()" alt="" coords="436,230,492,262" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_details_list" title="write_details_list()" alt="" coords="383,286,546,318" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_module_list" title="write_module_list()" alt="" coords="380,342,548,374" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_standard_fields" title="write_standard_fields()" alt="" coords="367,398,562,430" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_summary_table" title="write_summary_table()" alt="" coords="367,454,562,486" />
+</map>
+  <img src="call_graph_for_write_module.gif" alt='' usemap="#call_graph_for_write_module" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Write an HTML page containing the API documentation for the given 
+  module to <code>out</code>.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>doc</code></strong> - A <a href="epydoc.apidoc.ModuleDoc-class.html" 
+          class="link">ModuleDoc</a> containing the API documentation for 
+          the module that should be described.</li>
+    </ul></dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="write_class"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">write_class</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">out</span>,
+        <span class="sig-arg">doc</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.write_class">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_write_class-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_write_class-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_write_class" name="call_graph_for_write_class">
+<area shape="rect" href="epydoc.apidoc.ClassDoc-class.html#is_exception" title="apidoc.ClassDoc.is_exception()" alt="" coords="316,6,575,38" />
+<area shape="rect" href="epydoc.apidoc.ClassDoc-class.html#is_type" title="apidoc.ClassDoc.is_type()" alt="" coords="336,62,555,94" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__getitem__" title="apidoc.DottedName.__getitem__()" alt="" coords="305,118,585,150" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__str__" title="apidoc.DottedName.__str__()" alt="" coords="324,174,567,206" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_write" title="_write()" alt="" coords="5,286,88,318" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_class" title="write_class()" alt="" coords="137,286,255,318" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#descr" title="descr()" alt="" coords="409,230,481,262" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#pysrc_link" title="pysrc_link()" alt="" coords="388,286,503,318" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#url" title="url()" alt="" coords="417,342,473,374" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_class_tree_graph" title="write_class_tree_graph()" alt="" coords="343,398,548,430" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_details_list" title="write_details_list()" alt="" coords="364,454,527,486" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_standard_fields" title="write_standard_fields()" alt="" coords="348,510,543,542" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_summary_table" title="write_summary_table()" alt="" coords="348,566,543,598" />
+</map>
+  <img src="call_graph_for_write_class.gif" alt='' usemap="#call_graph_for_write_class" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Write an HTML page containing the API documentation for the given 
+  class to <code>out</code>.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>doc</code></strong> - A <a href="epydoc.apidoc.ClassDoc-class.html" 
+          class="link">ClassDoc</a> containing the API documentation for 
+          the class that should be described.</li>
+    </ul></dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="write_class_tree_graph"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">write_class_tree_graph</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">out</span>,
+        <span class="sig-arg">doc</span>,
+        <span class="sig-arg">graphmaker</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.write_class_tree_graph">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_write_class_tre-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_write_class_tre-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_write_class_tre" name="call_graph_for_write_class_tre">
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#uml_class_tree_graph" title="dotgraph.uml_class_tree_graph()" alt="" coords="440,6,707,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_private_subclasses" title="_private_subclasses()" alt="" coords="482,62,666,94" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#render_graph" title="render_graph()" alt="" coords="507,118,640,150" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_class" title="write_class()" alt="" coords="7,90,124,122" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_class_tree_graph" title="write_class_tree_graph()" alt="" coords="175,90,380,122" />
+<area shape="rect" href="epydoc.docwriter.html._HTMLDocstringLinker-class.html#__init__" title="_HTMLDocstringLinker.__init__()" alt="" coords="430,174,718,206" />
+</map>
+  <img src="call_graph_for_write_class_tre.gif" alt='' usemap="#call_graph_for_write_class_tre" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Write HTML code for a class tree graph of <code>doc</code> (a 
+  classdoc), using <code>graphmaker</code> to draw the actual graph.  
+  <code>graphmaker</code> should be <a 
+  href="epydoc.docwriter.dotgraph-module.html#class_tree_graph" 
+  class="link">class_tree_graph()</a>, or <a 
+  href="epydoc.docwriter.dotgraph-module.html#uml_class_tree_graph" 
+  class="link">uml_class_tree_graph()</a>, or any other function with a 
+  compatible signature.</p>
+  <p>If the given class has any private sublcasses (including recursive 
+  subclasses), then two graph images will be generated -- one to display 
+  when private values are shown, and the other to display when private 
+  values are hidden.</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="write_class_tree"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">write_class_tree</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">out</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.write_class_tree">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_write_class_tre_2-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_write_class_tre_2-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_write_class_tre_2" name="call_graph_for_write_class_tre_2">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__hash__" title="apidoc.APIDoc.__hash__()" alt="" coords="340,6,564,38" />
+<area shape="rect" href="epydoc.apidoc.ClassDoc-class.html#mro" title="apidoc.ClassDoc.mro()" alt="" coords="355,62,550,94" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_write" title="_write()" alt="" coords="6,62,88,94" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_class_tree" title="write_class_tree()" alt="" coords="136,62,291,94" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_treepage_header" title="write_treepage_header()" alt="" coords="351,118,554,150" />
+</map>
+  <img src="call_graph_for_write_class_tre_2.gif" alt='' usemap="#call_graph_for_write_class_tre_2" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Write HTML code for a nested list showing the base/subclass 
+  relationships between all documented classes.  Each element of the 
+  top-level list is a class with no (documented) bases; and under each 
+  class is listed all of its subclasses.  Note that in the case of multiple
+  inheritance, a class may appear multiple times.</p>
+  <dl class="fields">
+  </dl>
+<div class="fields">      <p><strong>To Do:</strong>
+        For multiple inheritance, don't repeat subclasses the second time a 
+    class is mentioned; instead, link to the first mention.
+      </p>
+</div></td></tr></table>
+</div>
+<a name="write_help"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">write_help</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">out</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.write_help">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_write_help-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_write_help-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_write_help" name="call_graph_for_write_help">
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_write" title="_write()" alt="" coords="5,6,88,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_help" title="write_help()" alt="" coords="137,6,249,38" />
+</map>
+  <img src="call_graph_for_write_help.gif" alt='' usemap="#call_graph_for_write_help" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Write an HTML help file to the given stream.  If 
+  <code>self._helpfile</code> contains a help file, then use it; otherwise,
+  use the default helpfile from <a 
+  href="epydoc.docwriter.html_help-module.html" 
+  class="link">epydoc.docwriter.html_help</a>.</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="write_module_toc"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">write_module_toc</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">out</span>,
+        <span class="sig-arg">doc</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.write_module_toc">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_write_module_to-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_write_module_to-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_write_module_to" name="call_graph_for_write_module_to">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__getitem__" title="apidoc.DottedName.__getitem__()" alt="" coords="365,6,645,38" />
+<area shape="rect" href="epydoc.apidoc.ModuleDoc-class.html#select_variables" title="apidoc.ModuleDoc.select_variables()" alt="" coords="355,62,656,94" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_write" title="_write()" alt="" coords="5,62,88,94" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_module_toc" title="write_module_toc()" alt="" coords="137,62,305,94" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_toc_section" title="write_toc_section()" alt="" coords="423,118,588,150" />
+</map>
+  <img src="call_graph_for_write_module_to.gif" alt='' usemap="#call_graph_for_write_module_to" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Write an HTML page containing the table of contents page for the given
+  module to the given streams.  This page lists the modules, classes, 
+  exceptions, functions, and variables defined by the module.</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="write_homepage"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">write_homepage</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">directory</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.write_homepage">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_write_homepage-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_write_homepage-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_write_homepage" name="call_graph_for_write_homepage">
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write" title="write()" alt="" coords="6,6,78,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_homepage" title="write_homepage()" alt="" coords="127,6,284,38" />
+</map>
+  <img src="call_graph_for_write_homepage.gif" alt='' usemap="#call_graph_for_write_homepage" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Write an <code>index.html</code> file in the given directory.  The 
+  contents of this file are copied or linked from an existing page, so this
+  method must be called after all pages have been written.  The page used 
+  is determined by <a 
+  href="epydoc.docwriter.html.HTMLWriter-class.html#_frames_index" 
+  class="link" onclick="show_private();">_frames_index</a> and <a 
+  href="epydoc.docwriter.html.HTMLWriter-class.html#_top_page" class="link"
+  onclick="show_private();">_top_page</a>:</p>
+  <ul>
+    <li>
+      If <a 
+      href="epydoc.docwriter.html.HTMLWriter-class.html#_frames_index" 
+      class="link" onclick="show_private();">_frames_index</a> is true, 
+      then <code>frames.html</code> is copied.
+    </li>
+    <li>
+      Otherwise, the page specified by <a 
+      href="epydoc.docwriter.html.HTMLWriter-class.html#_top_page" 
+      class="link" onclick="show_private();">_top_page</a> is copied.
+    </li>
+  </ul>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="write_css"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">write_css</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">directory</span>,
+        <span class="sig-arg">cssname</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.write_css">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_write_css-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_write_css-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_write_css" name="call_graph_for_write_css">
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write" title="write()" alt="" coords="5,6,77,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_css" title="write_css()" alt="" coords="127,6,231,38" />
+</map>
+  <img src="call_graph_for_write_css.gif" alt='' usemap="#call_graph_for_write_css" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Write the CSS stylesheet in the given directory.  If 
+  <code>cssname</code> contains a stylesheet file or name (from <a 
+  href="epydoc.docwriter.html_css-module.html" 
+  class="link">epydoc.docwriter.html_css</a>), then use that stylesheet; 
+  otherwise, use the default stylesheet.</p>
+  <dl class="fields">
+    <dt>Returns: <code>None</code></dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="render_callgraph"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">render_callgraph</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">callgraph</span>,
+        <span class="sig-arg">token</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.render_callgraph">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Render the HTML chunk of a callgraph.</p>
+  <p>If <code>callgraph</code> is a string, use the <a 
+  href="epydoc.docwriter.html.HTMLWriter-class.html#_callgraph_cache" 
+  class="link" onclick="show_private();">_callgraph_cache</a> to return a 
+  pre-rendered HTML chunk. This mostly avoids to run <code>dot</code> twice
+  for the same callgraph. Else, run the graph and store its HTML output in 
+  the cache.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>callgraph</code></strong> (<a href="epydoc.docwriter.dotgraph.DotGraph-class.html" 
+          class="link">DotGraph</a> or <code>str</code>) - The graph to render or its <a 
+          href="epydoc.docwriter.dotgraph.DotGraph-class.html#uid" 
+          class="link">uid</a>.</li>
+        <li><strong class="pname"><code>token</code></strong> (<code>str</code>) - A string that can be used to make the <code><div></code> id
+          unambiguous, if the callgraph is used more than once in a page.</li>
+    </ul></dd>
+    <dt>Returns: <code>str</code></dt>
+        <dd>The HTML representation of the graph.</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="callgraph_link"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">callgraph_link</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">callgraph</span>,
+        <span class="sig-arg">token</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.callgraph_link">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Render the HTML chunk of a callgraph link.</p>
+  <p>The link can toggles the visibility of the callgraph rendered using <a
+  href="epydoc.docwriter.html.HTMLWriter-class.html#render_callgraph" 
+  class="link">render_callgraph</a> with matching parameters.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>callgraph</code></strong> (<a href="epydoc.docwriter.dotgraph.DotGraph-class.html" 
+          class="link">DotGraph</a> or <code>str</code>) - The graph to render or its <a 
+          href="epydoc.docwriter.dotgraph.DotGraph-class.html#uid" 
+          class="link">uid</a>.</li>
+        <li><strong class="pname"><code>token</code></strong> (<code>str</code>) - A string that can be used to make the <code><div></code> id
+          unambiguous, if the callgraph is used more than once in a page.</li>
+    </ul></dd>
+    <dt>Returns: <code>str</code></dt>
+        <dd>The HTML representation of the graph link.</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="write_header"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">write_header</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">out</span>,
+        <span class="sig-arg">title</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.write_header">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Generate HTML code for the standard page header, and write it to 
+  <code>out</code>.  <code>title</code> is a string containing the page 
+  title. It should be appropriately escaped/encoded.</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="write_navbar"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">write_navbar</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">out</span>,
+        <span class="sig-arg">context</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.write_navbar">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Generate HTML code for the navigation bar, and write it to 
+  <code>out</code>.  The navigation bar typically looks like:</p>
+<pre class="literalblock">
+    [ Home Trees Index Help             Project ]
+</pre>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>context</code></strong> - A value indicating what page we're generating a navigation bar 
+          for.  If we're generating an API documentation page for an 
+          object, then <code>context</code> is a <a 
+          href="epydoc.apidoc.ValueDoc-class.html" 
+          class="link">ValueDoc</a> containing the documentation for that 
+          object; otherwise, <code>context</code> is a string name for the 
+          page.  The following string names are recognized: 
+          <code>'tree'</code>, <code>'index'</code>, and 
+          <code>'help'</code>.</li>
+    </ul></dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="write_breadcrumbs"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">write_breadcrumbs</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">out</span>,
+        <span class="sig-arg">context</span>,
+        <span class="sig-arg">context_url</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.write_breadcrumbs">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Generate HTML for the breadcrumbs line, and write it to 
+  <code>out</code>.  The breadcrumbs line is an invisible table with a list
+  of pointers to the current object's ancestors on the left; and the 
+  show/hide private selector and the frames/noframes selector on the 
+  right.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>context</code></strong> (<a href="epydoc.apidoc.ValueDoc-class.html" 
+          class="link">ValueDoc</a>) - The API documentation for the object whose breadcrumbs we should 
+          generate.</li>
+    </ul></dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="write_summary_table"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">write_summary_table</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">out</span>,
+        <span class="sig-arg">heading</span>,
+        <span class="sig-arg">doc</span>,
+        <span class="sig-arg">value_type</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.write_summary_table">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_write_summary_t-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_write_summary_t-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_write_summary_t" name="call_graph_for_write_summary_t">
+<area shape="rect" href="epydoc.apidoc.ClassDoc-class.html#select_variables" title="apidoc.ClassDoc.select_variables()" alt="" coords="452,6,735,38" />
+<area shape="rect" href="epydoc.apidoc.ModuleDoc-class.html#select_variables" title="apidoc.ModuleDoc.select_variables()" alt="" coords="443,62,744,94" />
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#group_names" title="apidoc.NamespaceDoc.group_names()" alt="" coords="439,118,748,150" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_class" title="write_class()" alt="" coords="16,90,134,122" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_summary_table" title="write_summary_table()" alt="" coords="194,118,388,150" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_module" title="write_module()" alt="" coords="7,146,143,178" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_summary_group" title="write_summary_group()" alt="" coords="492,174,695,206" />
+<area shape="rect" href="epydoc.util-module.html#plaintext_to_html" title="util.plaintext_to_html()" alt="" coords="495,230,692,262" />
+</map>
+  <img src="call_graph_for_write_summary_t.gif" alt='' usemap="#call_graph_for_write_summary_t" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Generate HTML code for a summary table, and write it to 
+  <code>out</code>.  A summary table is a table that includes a one-row 
+  description for each variable (of a given type) in a module or class.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>heading</code></strong> - The heading for the summary table; typically, this indicates what
+          kind of value the table describes (e.g., functions or classes).</li>
+        <li><strong class="pname"><code>doc</code></strong> - A <a href="epydoc.apidoc.ValueDoc-class.html" 
+          class="link">ValueDoc</a> object containing the API documentation
+          for the module or class whose variables we should summarize.</li>
+        <li><strong class="pname"><code>value_type</code></strong> - A string indicating what type of value should be listed in this 
+          summary table.  This value is passed on to <code>doc</code>'s 
+          <code>select_variables()</code> method.</li>
+    </ul></dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="write_summary_line"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">write_summary_line</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">out</span>,
+        <span class="sig-arg">var_doc</span>,
+        <span class="sig-arg">container</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.write_summary_line">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_write_summary_l-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_write_summary_l-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_write_summary_l" name="call_graph_for_write_summary_l">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__cmp__" title="apidoc.APIDoc.__cmp__()" alt="" coords="582,6,806,38" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#summary_pyval_repr" title="apidoc.ValueDoc.summary_pyval_repr()" alt="" coords="530,62,858,94" />
+<area shape="rect" href="epydoc.apidoc.VariableDoc-class.html#is_detailed" title="apidoc.VariableDoc.is_detailed()" alt="" coords="559,118,828,150" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#function_signature" title="function_signature()" alt="" coords="607,174,780,206" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#pysrc_link" title="pysrc_link()" alt="" coords="636,230,751,262" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#return_type" title="return_type()" alt="" coords="634,286,754,318" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#summary" title="summary()" alt="" coords="642,342,746,374" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#summary_name" title="summary_name()" alt="" coords="618,398,770,430" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#type_descr" title="type_descr()" alt="" coords="636,454,751,486" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#variable_tooltip" title="variable_tooltip()" alt="" coords="618,510,770,542" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_summary_group" title="write_summary_group()" alt="" coords="6,286,208,318" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_summary_line" title="write_summary_line()" alt="" coords="258,286,444,318" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#to_html" title="markup.epytext.ParsedEpytextDocstring.to_html()" alt="" coords="495,566,892,598" />
+</map>
+  <img src="call_graph_for_write_summary_l.gif" alt='' usemap="#call_graph_for_write_summary_l" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Generate HTML code for a single line of a summary table, and write it 
+  to <code>out</code>.  See <a 
+  href="epydoc.docwriter.html.HTMLWriter-class.html#write_summary_table" 
+  class="link">write_summary_table</a> for more information.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>var_doc</code></strong> - The API documentation for the variable that should be described 
+          by this line of the summary table.</li>
+        <li><strong class="pname"><code>container</code></strong> - The API documentation for the class or module whose summary table
+          we're writing.</li>
+    </ul></dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="arg_name_to_html"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">arg_name_to_html</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">func_doc</span>,
+        <span class="sig-arg">arg_name</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.arg_name_to_html">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_arg_name_to_htm-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_arg_name_to_htm-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_arg_name_to_htm" name="call_graph_for_arg_name_to_htm">
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#arg_name_to_html" title="arg_name_to_html()" alt="" coords="233,6,407,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#docstring_to_html" title="docstring_to_html()" alt="" coords="456,6,627,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_details_entry" title="write_details_entry()" alt="" coords="7,6,183,38" />
+</map>
+  <img src="call_graph_for_arg_name_to_htm.gif" alt='' usemap="#call_graph_for_arg_name_to_htm" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>A helper function used to format an argument name, for use in the 
+  argument description list under a routine's details entry. This just 
+  wraps strong & code tags around the arg name; and if the arg name is 
+  associated with a type, then adds it parenthetically after the name.</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="base_tree"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">base_tree</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">doc</span>,
+        <span class="sig-arg">width</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">postfix</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>,
+        <span class="sig-arg">context</span>=<span class="sig-default">None</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.base_tree">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  
+  <dl class="fields">
+    <dt>Returns: <code>string</code></dt>
+        <dd>The HTML code for a class's base tree.  The tree is drawn 
+          'upside-down' and right justified, to allow for multiple 
+          inheritance.</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="find_tree_width"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">find_tree_width</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">doc</span>,
+        <span class="sig-arg">context</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.find_tree_width">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Helper function for <a 
+  href="epydoc.docwriter.html.HTMLWriter-class.html#base_tree" 
+  class="link">base_tree</a>.</p>
+  <dl class="fields">
+    <dt>Returns: <code>int</code></dt>
+        <dd>The width of a base tree, when drawn right-justified.  This is 
+          used by <a 
+          href="epydoc.docwriter.html.HTMLWriter-class.html#base_tree" 
+          class="link">base_tree</a> to determine how far to indent lines 
+          of the base tree.</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="function_signature"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">function_signature</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">api_doc</span>,
+        <span class="sig-arg">is_summary</span>=<span class="sig-default">False</span>,
+        <span class="sig-arg">link_name</span>=<span class="sig-default">False</span>,
+        <span class="sig-arg">anchor</span>=<span class="sig-default">False</span>,
+        <span class="sig-arg">context</span>=<span class="sig-default">None</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.function_signature">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_function_signat-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_function_signat-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_function_signat" name="call_graph_for_function_signat">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__cmp__" title="apidoc.APIDoc.__cmp__()" alt="" coords="512,6,736,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#func_arg" title="func_arg()" alt="" coords="575,62,673,94" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#function_signature" title="function_signature()" alt="" coords="291,90,464,122" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#href" title="href()" alt="" coords="592,118,656,150" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#summary_name" title="summary_name()" alt="" coords="548,174,700,206" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#property_accessor_to_html" title="property_accessor_to_html()" alt="" coords="5,62,243,94" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_summary_line" title="write_summary_line()" alt="" coords="31,118,217,150" />
+</map>
+  <img src="call_graph_for_function_signat.gif" alt='' usemap="#call_graph_for_function_signat" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Render a function signature in HTML.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>api_doc</code></strong> (<a href="epydoc.apidoc.VariableDoc-class.html" 
+          class="link">VariableDoc</a> or <a 
+          href="epydoc.apidoc.RoutineDoc-class.html" 
+          class="link">RoutineDoc</a>) - The object whose name is to be rendered. If a 
+          <code>VariableDoc</code>, its <code>value</code> should be a 
+          <code>RoutineDoc</code></li>
+        <li><strong class="pname"><code>is_summary</code></strong> - True if the fuction is to be rendered in the summary. type 
+          css_class: <code>bool</code></li>
+        <li><strong class="pname"><code>link_name</code></strong> (<code>bool</code>) - If True, the name is a link to the object anchor.</li>
+        <li><strong class="pname"><code>anchor</code></strong> (<code>bool</code>) - If True, the name is the object anchor.</li>
+        <li><strong class="pname"><code>context</code></strong> (<a href="epydoc.apidoc.DottedName-class.html" 
+          class="link">DottedName</a>) - If set, represent the function name from this context. Only 
+          useful when <code>api_doc</code> is a <a 
+          href="epydoc.apidoc.RoutineDoc-class.html" 
+          class="link">RoutineDoc</a>.</li>
+    </ul></dd>
+    <dt>Returns: <code>str</code></dt>
+        <dd>The HTML code for the object.</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="summary_name"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">summary_name</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">api_doc</span>,
+        <span class="sig-arg">css_class</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string">summary-name</code><code class="variable-quote">'</code></span>,
+        <span class="sig-arg">link_name</span>=<span class="sig-default">False</span>,
+        <span class="sig-arg">anchor</span>=<span class="sig-default">False</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.summary_name">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_summary_name-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_summary_name-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_summary_name" name="call_graph_for_summary_name">
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#function_signature" title="function_signature()" alt="" coords="13,6,187,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#summary_name" title="summary_name()" alt="" coords="244,34,396,66" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#href" title="href()" alt="" coords="447,34,511,66" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_summary_line" title="write_summary_line()" alt="" coords="7,62,193,94" />
+</map>
+  <img src="call_graph_for_summary_name.gif" alt='' usemap="#call_graph_for_summary_name" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Render an object name in HTML.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>api_doc</code></strong> (<a href="epydoc.apidoc.APIDoc-class.html" class="link">APIDoc</a>) - The object whose name is to be rendered</li>
+        <li><strong class="pname"><code>css_class</code></strong> - The CSS class to assign to the rendered name type css_class: 
+          <code>str</code></li>
+        <li><strong class="pname"><code>link_name</code></strong> (<code>bool</code>) - If True, the name is a link to the object anchor.</li>
+        <li><strong class="pname"><code>anchor</code></strong> (<code>bool</code>) - If True, the name is the object anchor.</li>
+    </ul></dd>
+    <dt>Returns: <code>str</code></dt>
+        <dd>The HTML code for the object.</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="write_standard_fields"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">write_standard_fields</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">out</span>,
+        <span class="sig-arg">doc</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.write_standard_fields">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_write_standard_-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_write_standard_-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_write_standard_" name="call_graph_for_write_standard_">
+<area shape="rect" href="epydoc.docstringparser.DocstringField-class.html#__hash__" title="docstringparser.DocstringField.__hash__()" alt="" coords="435,34,776,66" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_class" title="write_class()" alt="" coords="16,6,133,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_standard_fields" title="write_standard_fields()" alt="" coords="192,34,387,66" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_module" title="write_module()" alt="" coords="7,62,143,94" />
+</map>
+  <img src="call_graph_for_write_standard_.gif" alt='' usemap="#call_graph_for_write_standard_" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Write HTML code containing descriptions of any standard markup fields 
+  that are defined by the given <a href="epydoc.apidoc.APIDoc-class.html" 
+  class="link">APIDoc</a> object (such as <code>@author</code> and 
+  <code>@todo</code> fields).</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>doc</code></strong> - The <a href="epydoc.apidoc.APIDoc-class.html" 
+          class="link">APIDoc</a> object containing the API documentation 
+          for the object whose standard markup fields should be described.</li>
+    </ul></dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="_term_index_to_anchor"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">_term_index_to_anchor</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">term</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter._term_index_to_anchor">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__term_index_to_-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for__term_index_to_-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__term_index_to_" name="call_graph_for__term_index_to_">
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_term_index_to_anchor" title="_term_index_to_anchor()" alt="" coords="427,34,640,66" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#to_plaintext" title="markup.epytext.ParsedEpytextDocstring.to_plaintext()" alt="" coords="688,34,1118,66" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_terms_from_docstring" title="_terms_from_docstring()" alt="" coords="88,6,296,38" />
+<area shape="rect" href="epydoc.docwriter.html._HTMLDocstringLinker-class.html#translate_indexterm" title="_HTMLDocstringLinker.translate_indexterm()" alt="" coords="6,62,379,94" />
+</map>
+  <img src="call_graph_for__term_index_to_.gif" alt='' usemap="#call_graph_for__term_index_to_" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Given the name of an inline index item, construct a URI anchor. These 
+  anchors are used to create links from the index page to each index 
+  item.</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="write_redirect_page"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">write_redirect_page</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">out</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.write_redirect_page">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_write_redirect__2-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_write_redirect__2-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_write_redirect__2" name="call_graph_for_write_redirect__2">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__str__" title="apidoc.DottedName.__str__()" alt="" coords="370,6,612,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_write" title="_write()" alt="" coords="6,6,88,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_redirect_page" title="write_redirect_page()" alt="" coords="138,6,319,38" />
+</map>
+  <img src="call_graph_for_write_redirect__2.gif" alt='' usemap="#call_graph_for_write_redirect__2" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Build the auto-redirect page, which translates dotted names to URLs 
+  using javascript.  When the user visits 
+  <redirect.html#dotted.name>, they will automatically get redirected
+  to the page for the object with the given fully-qualified dotted name.  
+  E.g., for epydoc, <redirect.html#epydoc.apidoc.UNKNOWN> redirects 
+  the user to <epydoc.apidoc-module.html#UNKNOWN>.</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="href"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">href</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">target</span>,
+        <span class="sig-arg">label</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">css_class</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">context</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">tooltip</span>=<span class="sig-default">None</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter.href">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_href-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_href-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_href" name="call_graph_for_href">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__str__" title="apidoc.DottedName.__str__()" alt="" coords="596,118,839,150" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#container" title="apidoc.DottedName.container()" alt="" coords="590,174,846,206" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#contextualize" title="apidoc.DottedName.contextualize()" alt="" coords="574,230,862,262" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_val_is_public" title="_val_is_public()" alt="" coords="646,286,790,318" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#breadcrumbs" title="breadcrumbs()" alt="" coords="143,6,274,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#href" title="href()" alt="" coords="460,258,524,290" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#function_signature" title="function_signature()" alt="" coords="122,62,295,94" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#url" title="url()" alt="" coords="690,342,746,374" />
+<area shape="rect" href="epydoc.util-module.html#plaintext_to_html" title="util.plaintext_to_html()" alt="" coords="619,398,816,430" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#summary_name" title="summary_name()" alt="" coords="132,118,284,150" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_index_section" title="write_index_section()" alt="" coords="116,174,300,206" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_inheritance_list" title="write_inheritance_list()" alt="" coords="111,230,306,262" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_metadata_index" title="write_metadata_index()" alt="" coords="108,286,308,318" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_module_tree_item" title="write_module_tree_item()" alt="" coords="100,342,316,374" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_sourcecode" title="write_sourcecode()" alt="" coords="126,398,291,430" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_var_list" title="write_var_list()" alt="" coords="140,454,276,486" />
+<area shape="rect" href="epydoc.docwriter.html._HTMLDocstringLinker-class.html#translate_identifier_xref" title="_HTMLDocstringLinker.translate_identifier_xref()" alt="" coords="6,510,411,542" />
+</map>
+  <img src="call_graph_for_href.gif" alt='' usemap="#call_graph_for_href" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Return the HTML code for an HREF link to the given target (which can 
+  be a <code>VariableDoc</code>, a <code>ValueDoc</code>, or a 
+  <code>DottedName</code>. If a <code>NamespaceDoc</code> 
+  <code>context</code> is specified, the target label is contextualized to 
+  it.</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="_private_subclasses"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">_private_subclasses</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">class_doc</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#HTMLWriter._private_subclasses">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__private_subcla-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for__private_subcla-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__private_subcla" name="call_graph_for__private_subcla">
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_private_subclasses" title="_private_subclasses()" alt="" coords="261,6,445,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_val_is_public" title="_val_is_public()" alt="" coords="495,6,639,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_class_tree_graph" title="write_class_tree_graph()" alt="" coords="7,6,212,38" />
+</map>
+  <img src="call_graph_for__private_subcla.gif" alt='' usemap="#call_graph_for__private_subcla" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Return a list of all subclasses of the given class that are private, 
+  as determined by <code class="link">_val_is_private</code>.  Recursive 
+  subclasses are included in this list.</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== CLASS VARIABLE DETAILS ==================== -->
+<a name="section-ClassVariableDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Class Variable Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-ClassVariableDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="TOGGLE_PRIVATE_JS"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">TOGGLE_PRIVATE_JS</h3>
+  <p>A javascript that is used to show or hide the API documentation for 
+  private objects.  In order for this to work correctly, all documentation 
+  for private objects should be enclosed in <code><div 
+  class="private">...</div></code> elements.</p>
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'''</code><code class="variable-string">function toggle_private() {</code>
+<code class="variable-string">        // Search for any private/public links on this page.  Store</code>
+<code class="variable-string">        // their old text in "cmd," so we will know what action to</code>
+<code class="variable-string">        // take; and change their text to the opposite action.</code>
+<code class="variable-string">        var cmd = "?";</code>
+<code class="variable-string">        var elts = document.getElementsByTagName("a");</code>
+<code class="variable-string">        for(var i=0; i<elts.length; i++) {</code>
+<code class="variable-string">          if (elts[i].className == "privatelink") {</code>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="GET_COOKIE_JS"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">GET_COOKIE_JS</h3>
+  <p>A javascript that is used to read the value of a cookie.  This is used
+  to remember whether private variables should be shown or hidden.</p>
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'''</code><code class="variable-string">function getCookie(name) {</code>
+<code class="variable-string">        var dc = document.cookie;</code>
+<code class="variable-string">        var prefix = name + "=";</code>
+<code class="variable-string">        var begin = dc.indexOf("; " + prefix);</code>
+<code class="variable-string">        if (begin == -1) {</code>
+<code class="variable-string">          begin = dc.indexOf(prefix);</code>
+<code class="variable-string">          if (begin != 0) return null;</code>
+<code class="variable-string">        } else</code>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="SET_FRAME_JS"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">SET_FRAME_JS</h3>
+  <p>A javascript that is used to set the contents of two frames at once.  
+  This is used by the project table-of-contents frame to set both the 
+  module table-of-contents frame and the main frame when the user clicks on
+  a module.</p>
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'''</code><code class="variable-string">function setFrame(url1, url2) {</code>
+<code class="variable-string">          parent.frames[1].location.href = url1;</code>
+<code class="variable-string">          parent.frames[2].location.href = url2;</code>
+<code class="variable-string">      }</code><code class="variable-quote">'''</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="HIDE_PRIVATE_JS"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">HIDE_PRIVATE_JS</h3>
+  <p>A javascript that is used to hide private variables, unless either: 
+  (a) the cookie says not to; or (b) we appear to be linking to a private 
+  variable.</p>
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'''</code><code class="variable-string">function checkCookie() {</code>
+<code class="variable-string">        var cmd=getCookie("EpydocPrivate");</code>
+<code class="variable-string">        if (cmd && cmd.substr(0,4)!="show" && location.href.indexOf("#</code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-string">_") < 0)</code>
+<code class="variable-string">            toggle_private();</code>
+<code class="variable-string">      }</code><code class="variable-quote">'''</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="TOGGLE_CALLGRAPH_JS"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">TOGGLE_CALLGRAPH_JS</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'''</code><code class="variable-string">function toggleCallGraph(id) {</code>
+<code class="variable-string">        var elt = document.getElementById(id);</code>
+<code class="variable-string">        if (elt.style.display == "none")</code>
+<code class="variable-string">            elt.style.display = "block";</code>
+<code class="variable-string">        else</code>
+<code class="variable-string">            elt.style.display = "none";</code>
+<code class="variable-string">      }</code><code class="variable-quote">'''</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="SHOW_PRIVATE_JS"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">SHOW_PRIVATE_JS</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'''</code><code class="variable-string">function show_private() {</code>
+<code class="variable-string">        var elts = document.getElementsByTagName("a");</code>
+<code class="variable-string">        for(var i=0; i<elts.length; i++) {</code>
+<code class="variable-string">          if (elts[i].className == "privatelink") {</code>
+<code class="variable-string">            cmd = elts[i].innerHTML;</code>
+<code class="variable-string">            if (cmd && cmd.substr(0,4)=="show")</code>
+<code class="variable-string">                toggle_private();</code>
+<code class="variable-string">          }</code>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="GET_ANCHOR_JS"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">GET_ANCHOR_JS</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'''</code><code class="variable-string">function get_anchor() {</code>
+<code class="variable-string">          var href = location.href;</code>
+<code class="variable-string">          var start = href.indexOf("#")+1;</code>
+<code class="variable-string">          if ((start != 0) && (start != href.length))</code>
+<code class="variable-string">              return href.substring(start, href.length);</code>
+<code class="variable-string">      }</code><code class="variable-quote">'''</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="REDIRECT_URL_JS"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">REDIRECT_URL_JS</h3>
+  <p>A javascript that is used to implement the auto-redirect page. When 
+  the user visits <redirect.html#dotted.name>, they will 
+  automatically get redirected to the page for the object with the given 
+  fully-qualified dotted name.  E.g., for epydoc, 
+  <redirect.html#epydoc.apidoc.UNKNOWN> redirects the user to 
+  <epydoc.apidoc-module.html#UNKNOWN>.</p>
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'''</code><code class="variable-string">function redirect_url(dottedName) {</code>
+<code class="variable-string">          // Scan through each element of the "pages" list, and check</code>
+<code class="variable-string">          // if "name" matches with any of them.</code>
+<code class="variable-string">          for (var i=0; i<pages.length; i++) {</code>
+<code class="variable-string"></code>
+<code class="variable-string">              // Each page has the form "<pagename>-m" or "<pagename>-</code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-string">c";</code>
+<code class="variable-string">              // extract the <pagename> portion & compare it to dotted</code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="IMAGES"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">IMAGES</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">crarr.png</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'''</code><code class="variable-string">iVBORw0KGgoAAAANSUhEUgAAABEAAAAKCAMAAABlokWQAAAALHRFW</code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-string">HRDcmVhdGlvbiBUaW1lAFR1</code>
+<code class="variable-string">ZSAyMiBBdWcgMjAwNiAwMDo0MzoxMCAtMDUwMGAMEFgAAAAHdElNRQfWCBYFASkQ033WAA</code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-string">AACXBI</code>
+<code class="variable-string">WXMAAB7CAAAewgFu0HU+AAAABGdBTUEAALGPC/xhBQAAAEVQTFRF////zcOw18/AgGY0c1</code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-string">cg4dvQ</code>
+<code class="variable-string">inJEYEAAYkME3NXI6eTcloFYe2Asr5+AbE4Uh29A9fPwqpl4ZEUI8O3onopk0Ma0lH5U1n</code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-string">fFdgAA</code>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="SPECIAL_METHODS"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">SPECIAL_METHODS</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">__add__</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">Addition operator</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">__and__</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">And operator</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">__call__</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">Call operator</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">__cmp__</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">Comparison operator</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">__contains__</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">In operator</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">__del__</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">Destructor</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">__delitem__</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">Index deletion operator</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">__delslice__</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">Slice deletion operator</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="METADATA_INDICES"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">METADATA_INDICES</h3>
+  <p>A list of metadata indices that should be generated.  Each entry in 
+  this list is a tuple <code>(tag, label, short_label)</code>, where 
+  <code>tag</code> is the cannonical tag of a metadata field; 
+  <code>label</code> is a label for the index page; and 
+  <code>short_label</code> is a shorter label, used in the index 
+  selector.</p>
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-group">[</code><code class="variable-group">(</code><code class="variable-quote">'</code><code class="variable-string">bug</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">Bug List</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">Bugs</code><code class="variable-quote">'</code> [...]
+ <code class="variable-group">(</code><code class="variable-quote">'</code><code class="variable-string">todo</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">To Do List</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">To Do</code><code class="variable-quote">'</code><code class="variable-group">)</ [...]
+ <code class="variable-group">(</code><code class="variable-quote">'</code><code class="variable-string">change</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">Change Log</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">Changes</code><code class="variable-quote">'</code><code class="variable-group" [...]
+ <code class="variable-group">(</code><code class="variable-quote">'</code><code class="variable-string">deprecated</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">Deprecation List</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">Deprecations</code><code class="variable-quote">'</code><code class=" [...]
+ <code class="variable-group">(</code><code class="variable-quote">'</code><code class="variable-string">since</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">Introductions List</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">Introductions</code><code class="variable-quote">'</code><code class="va [...]
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="PRIVATE_LINK"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">PRIVATE_LINK</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'''</code><code class="variable-string"><span class="options">[<a href="javascript:void(0);" class="private</code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-string">link"</code>
+<code class="variable-string">    onclick="toggle_private();">hide&nbsp;private</a>]</span></code><code class="variable-quote">'''</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="_url_cache"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">_url_cache</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-group">{</code>1078260780<code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">epydoc-module.html</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ 1078260940<code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">epydoc-module.html</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ 1078261708<code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">epydoc-module.html#DEBUG</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ 1078261804<code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">epydoc-module.html#__author__</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ 1078261868<code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">epydoc-module.html#__license__</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ 1078261932<code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">epydoc-module.html#__url__</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ 1078261996<code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">epydoc-module.html#__version__</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ 1078262028<code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">epydoc.compat-module.html</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:08:10 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.docwriter.html._HTMLDocstringLinker-class.html b/doc/api/epydoc.docwriter.html._HTMLDocstringLinker-class.html
new file mode 100644
index 0000000..736da85
--- /dev/null
+++ b/doc/api/epydoc.docwriter.html._HTMLDocstringLinker-class.html
@@ -0,0 +1,429 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.docwriter.html._HTMLDocstringLinker</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.docwriter-module.html">Package docwriter</a> ::
+        <a href="epydoc.docwriter.html-module.html">Module html</a> ::
+        Class _HTMLDocstringLinker
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.docwriter.html._HTMLDocstringLinker-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class _HTMLDocstringLinker</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#_HTMLDocstringLinker">source code</a></span></p>
+<center>
+<center>  <map id="uml_class_diagram_for_epydoc_d_5" name="uml_class_diagram_for_epydoc_d_5">
+<area shape="rect" href="epydoc.markup.DocstringLinker-class.html" title="A translator for crossreference links into and out of a ParsedDocstring." alt="" coords="88,5,253,48" />
+<area shape="rect" href="epydoc.docwriter.html._HTMLDocstringLinker-class.html#__init__" title="epydoc.docwriter.html._HTMLDocstringLinker.__init__" alt="" coords="17,97,324,116" />
+<area shape="rect" href="epydoc.docwriter.html._HTMLDocstringLinker-class.html#translate_indexterm" title="Translate an index term to the appropriate output format." alt="" coords="17,116,324,135" />
+<area shape="rect" href="epydoc.docwriter.html._HTMLDocstringLinker-class.html#translate_identifier_xref" title="Translate a crossreference link to a Python identifier to the appropriate  output format." alt="" coords="17,135,324,153" />
+<area shape="rect" href="epydoc.docwriter.html._HTMLDocstringLinker-class.html#url_for" title="epydoc.docwriter.html._HTMLDocstringLinker.url_for" alt="" coords="17,153,324,172" />
+<area shape="rect" href="epydoc.docwriter.html._HTMLDocstringLinker-class.html" title="epydoc.docwriter.html._HTMLDocstringLinker" alt="" coords="5,67,336,179" />
+</map>
+  <img src="uml_class_diagram_for_epydoc_d_5.gif" alt='' usemap="#uml_class_diagram_for_epydoc_d_5" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__init__"></a><span class="summary-sig-name">__init__</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">htmlwriter</span>,
+        <span class="summary-sig-arg">container</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#_HTMLDocstringLinker.__init__">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for___init___22-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for___init___22-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for___init___22" name="call_graph_for___init___22">
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#description" title="HTMLWriter.description()" alt="" coords="51,6,275,38" />
+<area shape="rect" href="epydoc.docwriter.html._HTMLDocstringLinker-class.html#__init__" title="__init__()" alt="" coords="369,62,465,94" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#docstring_to_html" title="HTMLWriter.docstring_to_html()" alt="" coords="24,62,301,94" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_class_tree_graph" title="HTMLWriter.write_class_tree_graph()" alt="" coords="5,118,320,150" />
+</map>
+  <img src="call_graph_for___init___22.gif" alt='' usemap="#call_graph_for___init___22" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>string</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docwriter.html._HTMLDocstringLinker-class.html#translate_indexterm" class="summary-sig-name">translate_indexterm</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">indexterm</span>)</span><br />
+      Translate an index term to the appropriate output format.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#_HTMLDocstringLinker.translate_indexterm">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_translate_index-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_translate_index-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_translate_index" name="call_graph_for_translate_index">
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_term_index_to_anchor" title="HTMLWriter._term_index_to_anchor()" alt="" coords="732,6,1049,38" />
+<area shape="rect" href="epydoc.docwriter.html._HTMLDocstringLinker-class.html#translate_indexterm" title="translate_indexterm()" alt="" coords="461,34,643,66" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#to_html" title="markup.epytext.ParsedEpytextDocstring.to_html()" alt="" coords="692,62,1089,94" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#_to_html" title="markup.epytext.ParsedEpytextDocstring._to_html()" alt="" coords="5,34,413,66" />
+</map>
+  <img src="call_graph_for_translate_index.gif" alt='' usemap="#call_graph_for_translate_index" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>string</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docwriter.html._HTMLDocstringLinker-class.html#translate_identifier_xref" class="summary-sig-name">translate_identifier_xref</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">identifier</span>,
+        <span class="summary-sig-arg">label</span>=<span class="summary-sig-default">None</span>)</span><br />
+      Translate a crossreference link to a Python identifier to the 
+      appropriate output format.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#_HTMLDocstringLinker.translate_identifier_xref">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_translate_ident-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_translate_ident-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_translate_ident" name="call_graph_for_translate_ident">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__cmp__" title="apidoc.APIDoc.__cmp__()" alt="" coords="896,6,1120,38" />
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#find" title="apidoc.DocIndex.find()" alt="" coords="911,62,1106,94" />
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#get_vardoc" title="apidoc.DocIndex.get_vardoc()" alt="" coords="884,118,1132,150" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#href" title="HTMLWriter.href()" alt="" coords="923,174,1094,206" />
+<area shape="rect" href="epydoc.docwriter.html._HTMLDocstringLinker-class.html#_failed_xref" title="_failed_xref()" alt="" coords="946,230,1071,262" />
+<area shape="rect" href="epydoc.docwriter.html._HTMLDocstringLinker-class.html#translate_identifier_xref" title="translate_identifier_xref()" alt="" coords="622,118,835,150" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#_to_html" title="markup.epytext.ParsedEpytextDocstring._to_html()" alt="" coords="86,90,494,122" />
+<area shape="rect" href="epydoc.markup.restructuredtext._EpydocHTMLTranslator-class.html#visit_title_reference" title="markup.restructuredtext._EpydocHTMLTranslator.visit_title_reference()" alt="" coords="7,146,572,178" />
+</map>
+  <img src="call_graph_for_translate_ident.gif" alt='' usemap="#call_graph_for_translate_ident" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="url_for"></a><span class="summary-sig-name">url_for</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">identifier</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#_HTMLDocstringLinker.url_for">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_url_for-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_url_for-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_url_for" name="call_graph_for_url_for">
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#find" title="apidoc.DocIndex.find()" alt="" coords="642,146,836,178" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#__init__" title="dotgraph.DotGraphUmlClassNode.__init__()" alt="" coords="51,6,411,38" />
+<area shape="rect" href="epydoc.docwriter.html._HTMLDocstringLinker-class.html#url_for" title="url_for()" alt="" coords="506,174,591,206" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_add_attribute_edge" title="dotgraph.DotGraphUmlClassNode._add_attribute_edge()" alt="" coords="7,62,455,94" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_attribute_cell" title="dotgraph.DotGraphUmlClassNode._attribute_cell()" alt="" coords="28,118,434,150" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_operation_cell" title="dotgraph.DotGraphUmlClassNode._operation_cell()" alt="" coords="24,174,438,206" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlModuleNode-class.html#__init__" title="dotgraph.DotGraphUmlModuleNode.__init__()" alt="" coords="43,230,419,262" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlModuleNode-class.html#_get_html_label" title="dotgraph.DotGraphUmlModuleNode._get_html_label()" alt="" coords="14,286,448,318" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#add_valdoc_nodes" title="dotgraph.add_valdoc_nodes()" alt="" coords="110,342,352,374" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#url" title="HTMLWriter.url()" alt="" coords="658,202,820,234" />
+</map>
+  <img src="call_graph_for_url_for.gif" alt='' usemap="#call_graph_for_url_for" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_failed_xref"></a><span class="summary-sig-name">_failed_xref</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">identifier</span>)</span><br />
+      Add an identifier to the htmlwriter's failed crossreference list.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#_HTMLDocstringLinker._failed_xref">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__failed_xref-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__failed_xref-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__failed_xref" name="call_graph_for__failed_xref">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__hash__" title="apidoc.DottedName.__hash__()" alt="" coords="444,6,703,38" />
+<area shape="rect" href="epydoc.apidoc.RoutineDoc-class.html#all_args" title="apidoc.RoutineDoc.all_args()" alt="" coords="452,62,695,94" />
+<area shape="rect" href="epydoc.docwriter.html._HTMLDocstringLinker-class.html#_failed_xref" title="_failed_xref()" alt="" coords="268,34,393,66" />
+<area shape="rect" href="epydoc.docwriter.html._HTMLDocstringLinker-class.html#translate_identifier_xref" title="translate_identifier_xref()" alt="" coords="5,34,219,66" />
+</map>
+  <img src="call_graph_for__failed_xref.gif" alt='' usemap="#call_graph_for__failed_xref" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Method Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-MethodDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="translate_indexterm"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">translate_indexterm</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">indexterm</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#_HTMLDocstringLinker.translate_indexterm">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_translate_index-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_translate_index-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_translate_index" name="call_graph_for_translate_index">
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_term_index_to_anchor" title="HTMLWriter._term_index_to_anchor()" alt="" coords="732,6,1049,38" />
+<area shape="rect" href="epydoc.docwriter.html._HTMLDocstringLinker-class.html#translate_indexterm" title="translate_indexterm()" alt="" coords="461,34,643,66" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#to_html" title="markup.epytext.ParsedEpytextDocstring.to_html()" alt="" coords="692,62,1089,94" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#_to_html" title="markup.epytext.ParsedEpytextDocstring._to_html()" alt="" coords="5,34,413,66" />
+</map>
+  <img src="call_graph_for_translate_index.gif" alt='' usemap="#call_graph_for_translate_index" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Translate an index term to the appropriate output format.  The output 
+  will typically include a crossreference anchor.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>indexterm</code></strong> - The index term to translate.</li>
+    </ul></dd>
+    <dt>Returns: <code>string</code></dt>
+        <dd>The translated index term.</dd>
+    <dt>Overrides:
+        <a href="epydoc.markup.DocstringLinker-class.html#translate_indexterm">markup.DocstringLinker.translate_indexterm</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="translate_identifier_xref"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">translate_identifier_xref</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">identifier</span>,
+        <span class="sig-arg">label</span>=<span class="sig-default">None</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docwriter.html-pysrc.html#_HTMLDocstringLinker.translate_identifier_xref">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_translate_ident-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_translate_ident-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_translate_ident" name="call_graph_for_translate_ident">
+<area shape="rect" href="epydoc.apidoc.APIDoc-class.html#__cmp__" title="apidoc.APIDoc.__cmp__()" alt="" coords="896,6,1120,38" />
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#find" title="apidoc.DocIndex.find()" alt="" coords="911,62,1106,94" />
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#get_vardoc" title="apidoc.DocIndex.get_vardoc()" alt="" coords="884,118,1132,150" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#href" title="HTMLWriter.href()" alt="" coords="923,174,1094,206" />
+<area shape="rect" href="epydoc.docwriter.html._HTMLDocstringLinker-class.html#_failed_xref" title="_failed_xref()" alt="" coords="946,230,1071,262" />
+<area shape="rect" href="epydoc.docwriter.html._HTMLDocstringLinker-class.html#translate_identifier_xref" title="translate_identifier_xref()" alt="" coords="622,118,835,150" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#_to_html" title="markup.epytext.ParsedEpytextDocstring._to_html()" alt="" coords="86,90,494,122" />
+<area shape="rect" href="epydoc.markup.restructuredtext._EpydocHTMLTranslator-class.html#visit_title_reference" title="markup.restructuredtext._EpydocHTMLTranslator.visit_title_reference()" alt="" coords="7,146,572,178" />
+</map>
+  <img src="call_graph_for_translate_ident.gif" alt='' usemap="#call_graph_for_translate_ident" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Translate a crossreference link to a Python identifier to the 
+  appropriate output format.  The output will typically include a reference
+  or pointer to the crossreference target.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>identifier</code></strong> - The name of the Python identifier that should be linked to.</li>
+        <li><strong class="pname"><code>label</code></strong> - The label that should be used for the identifier, if it's 
+          different from the name of the identifier.</li>
+    </ul></dd>
+    <dt>Returns: <code>string</code></dt>
+        <dd>The translated crossreference link.</dd>
+    <dt>Overrides:
+        <a href="epydoc.markup.DocstringLinker-class.html#translate_identifier_xref">markup.DocstringLinker.translate_identifier_xref</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:08:12 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.docwriter.html_colorize-module.html b/doc/api/epydoc.docwriter.html_colorize-module.html
new file mode 100644
index 0000000..adf006f
--- /dev/null
+++ b/doc/api/epydoc.docwriter.html_colorize-module.html
@@ -0,0 +1,308 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.docwriter.html_colorize</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.docwriter-module.html">Package docwriter</a> ::
+        Module html_colorize
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.docwriter.html_colorize-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module html_colorize</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.docwriter.html_colorize-pysrc.html">source code</a></span></p>
+<p>Functions to produce colorized HTML code for various objects. 
+  Currently, <code>html_colorize</code> defines functions to colorize 
+  Python source code.</p>
+
+<!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Classes</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Classes"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html" class="summary-name">PythonSourceColorizer</a><br />
+      A class that renders a python module's source code into HTML pages.
+    </td>
+  </tr>
+</table>
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Variables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docwriter.html_colorize-module.html#PYSRC_JAVASCRIPTS" class="summary-name">PYSRC_JAVASCRIPTS</a> = <code title="'''function expand(id) {
+  var elt = document.getElementById(id+"-expanded");
+  if (elt) elt.style.display = "block";
+  var elt = document.getElementById(id+"-expanded-linenums");
+  if (elt) elt.style.display = "block";
+  var elt = document.getElementById(id+"-collapsed");
+  if (elt) { elt.innerHTML = ""; elt.style.display = "none"; }
+  var elt = document.getElementById(id+"-collapsed-linenums");
+..."><code class="variable-quote">'</code><code class="variable-string">function expand(id) {\n  var elt = docume</code><code class="variable-ellipsis">...</code></code><br />
+      Javascript code for the PythonSourceColorizer
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docwriter.html_colorize-module.html#PYSRC_EXPANDTO_JAVASCRIPT" class="summary-name">PYSRC_EXPANDTO_JAVASCRIPT</a> = <code title="'''<script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+'''"><code class="variable-quote">'</code><code class="variable-string"><script type="text/javascript">\n</code><code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docwriter.html_colorize-module.html#_HDR" class="summary-name" onclick="show_private();">_HDR</a> = <code title="'''<?xml version="1.0" encoding="ascii"?>
+        <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+                  "DTD/xhtml1-transitional.dtd">
+        <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang=\
+"en">
+        <head>
+          <title>$title$</title>
+          <link rel="stylesheet" href="epydoc.css" type="text/css" />
+..."><code class="variable-quote">'</code><code class="variable-string"><?xml version="1.0" encoding="ascii"?>\n        <!DOCT</code><code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="_FOOT"></a><span class="summary-name">_FOOT</span> = <code title="'</body></html>'"><code class="variable-quote">'</code><code class="variable-string"></body></html></code><code class="variable-quote">'</code></code>
+    </td>
+  </tr>
+</table>
+<!-- ==================== VARIABLES DETAILS ==================== -->
+<a name="section-VariablesDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Variables Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-VariablesDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="PYSRC_JAVASCRIPTS"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">PYSRC_JAVASCRIPTS</h3>
+  <p>Javascript code for the PythonSourceColorizer</p>
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'''</code><code class="variable-string">function expand(id) {</code>
+<code class="variable-string">  var elt = document.getElementById(id+"-expanded");</code>
+<code class="variable-string">  if (elt) elt.style.display = "block";</code>
+<code class="variable-string">  var elt = document.getElementById(id+"-expanded-linenums");</code>
+<code class="variable-string">  if (elt) elt.style.display = "block";</code>
+<code class="variable-string">  var elt = document.getElementById(id+"-collapsed");</code>
+<code class="variable-string">  if (elt) { elt.innerHTML = ""; elt.style.display = "none"; }</code>
+<code class="variable-string">  var elt = document.getElementById(id+"-collapsed-linenums");</code>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="PYSRC_EXPANDTO_JAVASCRIPT"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">PYSRC_EXPANDTO_JAVASCRIPT</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'''</code><code class="variable-string"><script type="text/javascript"></code>
+<code class="variable-string"><!--</code>
+<code class="variable-string">expandto(location.href);</code>
+<code class="variable-string">// --></code>
+<code class="variable-string"></script></code>
+<code class="variable-string"></code><code class="variable-quote">'''</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="_HDR"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">_HDR</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'''</code><code class="variable-string"><?xml version="1.0" encoding="ascii"?></code>
+<code class="variable-string">        <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"</code>
+<code class="variable-string">                  "DTD/xhtml1-transitional.dtd"></code>
+<code class="variable-string">        <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang=</code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-string">"en"></code>
+<code class="variable-string">        <head></code>
+<code class="variable-string">          <title>$title$</title></code>
+<code class="variable-string">          <link rel="stylesheet" href="epydoc.css" type="text/css" /></code>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:06:37 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.docwriter.html_colorize-pysrc.html b/doc/api/epydoc.docwriter.html_colorize-pysrc.html
new file mode 100644
index 0000000..194278d
--- /dev/null
+++ b/doc/api/epydoc.docwriter.html_colorize-pysrc.html
@@ -0,0 +1,1091 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.docwriter.html_colorize</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.docwriter-module.html">Package docwriter</a> ::
+        Module html_colorize
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.docwriter.html_colorize-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="epydoc.docwriter.html_colorize-module.html">Module epydoc.docwriter.html_colorize</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno">  1</tt>  <tt class="py-line"><tt class="py-comment">#</tt> </tt>
+<a name="L2"></a><tt class="py-lineno">  2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># epydoc.html: HTML colorizers</tt> </tt>
+<a name="L3"></a><tt class="py-lineno">  3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Edward Loper</tt> </tt>
+<a name="L4"></a><tt class="py-lineno">  4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L5"></a><tt class="py-lineno">  5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Created [10/16/02 09:49 PM]</tt> </tt>
+<a name="L6"></a><tt class="py-lineno">  6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># $Id: html_colorize.py 1674 2008-01-29 06:03:36Z edloper $</tt> </tt>
+<a name="L7"></a><tt class="py-lineno">  7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L8"></a><tt class="py-lineno">  8</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L9"></a><tt class="py-lineno">  9</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L10"></a><tt class="py-lineno"> 10</tt>  <tt class="py-line"><tt class="py-docstring">Functions to produce colorized HTML code for various objects.</tt> </tt>
+<a name="L11"></a><tt class="py-lineno"> 11</tt>  <tt class="py-line"><tt class="py-docstring">Currently, C{html_colorize} defines functions to colorize</tt> </tt>
+<a name="L12"></a><tt class="py-lineno"> 12</tt>  <tt class="py-line"><tt class="py-docstring">Python source code.</tt> </tt>
+<a name="L13"></a><tt class="py-lineno"> 13</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L14"></a><tt class="py-lineno"> 14</tt>  <tt class="py-line"><tt class="py-name">__docformat__</tt> <tt class="py-op">=</tt> <tt class="py-string">'epytext en'</tt> </tt>
+<a name="L15"></a><tt class="py-lineno"> 15</tt>  <tt class="py-line"> </tt>
+<a name="L16"></a><tt class="py-lineno"> 16</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">re</tt><tt class="py-op">,</tt> <tt class="py-name">codecs</tt> </tt>
+<a name="L17"></a><tt class="py-lineno"> 17</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-0" class="py-name" targets="Package epydoc=epydoc-module.html"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-0', 'epydoc', 'link-0');">epydoc</a></tt> <tt class="py-keyword">import</tt> <tt id="link-1" class="py-name" targets="Method epydoc.cli.ConsoleLogger.log()=epydoc.cli.ConsoleLogger-class.html#log,Method epydoc.cli.HTMLLogger.log()=epydoc.cl [...]
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-1', 'log', 'link-1');">log</a></tt> </tt>
+<a name="L18"></a><tt class="py-lineno"> 18</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-2" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-2', 'epydoc', 'link-0');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-3" class="py-name" targets="Module epydoc.test.util=epydoc.test.util-module.html,Module epydoc.util=epydoc.util-module.html"><a title="epydoc.test.util
+epydoc.util" class="py-name" href="#" onclick="return doclink('link-3', 'util', 'link-3');">util</a></tt> <tt class="py-keyword">import</tt> <tt id="link-4" class="py-name" targets="Function epydoc.util.py_src_filename()=epydoc.util-module.html#py_src_filename"><a title="epydoc.util.py_src_filename" class="py-name" href="#" onclick="return doclink('link-4', 'py_src_filename', 'link-4');">py_src_filename</a></tt> </tt>
+<a name="L19"></a><tt class="py-lineno"> 19</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-5" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-5', 'epydoc', 'link-0');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-6" class="py-name" targets="Module epydoc.apidoc=epydoc.apidoc-module.html"><a title="epydoc.apidoc" class="py-name" href="#" onclick="return doclink('link-6', 'apidoc', 'link-6');">apidoc</a></tt> <tt clas [...]
+<a name="L20"></a><tt class="py-lineno"> 20</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">tokenize</tt><tt class="py-op">,</tt> <tt class="py-name">token</tt><tt class="py-op">,</tt> <tt class="py-name">cgi</tt><tt class="py-op">,</tt> <tt class="py-name">keyword</tt> </tt>
+<a name="L21"></a><tt class="py-lineno"> 21</tt>  <tt class="py-line"><tt class="py-keyword">try</tt><tt class="py-op">:</tt> <tt class="py-keyword">from</tt> <tt class="py-name">cStringIO</tt> <tt class="py-keyword">import</tt> <tt class="py-name">StringIO</tt> </tt>
+<a name="L22"></a><tt class="py-lineno"> 22</tt>  <tt class="py-line"><tt class="py-keyword">except</tt><tt class="py-op">:</tt> <tt class="py-keyword">from</tt> <tt class="py-name">StringIO</tt> <tt class="py-keyword">import</tt> <tt class="py-name">StringIO</tt> </tt>
+<a name="L23"></a><tt class="py-lineno"> 23</tt>  <tt class="py-line"> </tt>
+<a name="L24"></a><tt class="py-lineno"> 24</tt>  <tt class="py-line"><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L25"></a><tt class="py-lineno"> 25</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## Python source colorizer</tt> </tt>
+<a name="L26"></a><tt class="py-lineno"> 26</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L27"></a><tt class="py-lineno"> 27</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-string">"""</tt> </tt>
+<a name="L28"></a><tt class="py-lineno"> 28</tt>  <tt class="py-line"><tt class="py-string">Goals:</tt> </tt>
+<a name="L29"></a><tt class="py-lineno"> 29</tt>  <tt class="py-line"><tt class="py-string">  - colorize tokens appropriately (using css)</tt> </tt>
+<a name="L30"></a><tt class="py-lineno"> 30</tt>  <tt class="py-line"><tt class="py-string">  - optionally add line numbers</tt> </tt>
+<a name="L31"></a><tt class="py-lineno"> 31</tt>  <tt class="py-line"><tt class="py-string">  - </tt> </tt>
+<a name="L32"></a><tt class="py-lineno"> 32</tt>  <tt class="py-line"><tt class="py-string">"""</tt> </tt>
+<a name="L33"></a><tt class="py-lineno"> 33</tt>  <tt class="py-line"> </tt>
+<a name="L34"></a><tt class="py-lineno"> 34</tt>  <tt class="py-line"><tt class="py-comment">#: Javascript code for the PythonSourceColorizer</tt> </tt>
+<a name="L35"></a><tt class="py-lineno"> 35</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt id="link-7" class="py-name" targets="Variable epydoc.docwriter.html_colorize.PYSRC_JAVASCRIPTS=epydoc.docwriter.html_colorize-module.html#PYSRC_JAVASCRIPTS"><a title="epydoc.docwriter.html_colorize.PYSRC_JAVASCRIPTS" class="py-name" href="#" onclick="return doclink('link-7', 'PYSRC_JAVASCRIPTS', 'link-7');">PYSRC_JAVASCRIPTS</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'''\</t [...]
+<a name="L36"></a><tt class="py-lineno"> 36</tt>  <tt class="py-line"><tt class="py-string">function expand(id) {</tt> </tt>
+<a name="L37"></a><tt class="py-lineno"> 37</tt>  <tt class="py-line"><tt class="py-string">  var elt = document.getElementById(id+"-expanded");</tt> </tt>
+<a name="L38"></a><tt class="py-lineno"> 38</tt>  <tt class="py-line"><tt class="py-string">  if (elt) elt.style.display = "block";</tt> </tt>
+<a name="L39"></a><tt class="py-lineno"> 39</tt>  <tt class="py-line"><tt class="py-string">  var elt = document.getElementById(id+"-expanded-linenums");</tt> </tt>
+<a name="L40"></a><tt class="py-lineno"> 40</tt>  <tt class="py-line"><tt class="py-string">  if (elt) elt.style.display = "block";</tt> </tt>
+<a name="L41"></a><tt class="py-lineno"> 41</tt>  <tt class="py-line"><tt class="py-string">  var elt = document.getElementById(id+"-collapsed");</tt> </tt>
+<a name="L42"></a><tt class="py-lineno"> 42</tt>  <tt class="py-line"><tt class="py-string">  if (elt) { elt.innerHTML = ""; elt.style.display = "none"; }</tt> </tt>
+<a name="L43"></a><tt class="py-lineno"> 43</tt>  <tt class="py-line"><tt class="py-string">  var elt = document.getElementById(id+"-collapsed-linenums");</tt> </tt>
+<a name="L44"></a><tt class="py-lineno"> 44</tt>  <tt class="py-line"><tt class="py-string">  if (elt) { elt.innerHTML = ""; elt.style.display = "none"; }</tt> </tt>
+<a name="L45"></a><tt class="py-lineno"> 45</tt>  <tt class="py-line"><tt class="py-string">  var elt = document.getElementById(id+"-toggle");</tt> </tt>
+<a name="L46"></a><tt class="py-lineno"> 46</tt>  <tt class="py-line"><tt class="py-string">  if (elt) { elt.innerHTML = "-"; }</tt> </tt>
+<a name="L47"></a><tt class="py-lineno"> 47</tt>  <tt class="py-line"><tt class="py-string">}</tt> </tt>
+<a name="L48"></a><tt class="py-lineno"> 48</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L49"></a><tt class="py-lineno"> 49</tt>  <tt class="py-line"><tt class="py-string">function collapse(id) {</tt> </tt>
+<a name="L50"></a><tt class="py-lineno"> 50</tt>  <tt class="py-line"><tt class="py-string">  var elt = document.getElementById(id+"-expanded");</tt> </tt>
+<a name="L51"></a><tt class="py-lineno"> 51</tt>  <tt class="py-line"><tt class="py-string">  if (elt) elt.style.display = "none";</tt> </tt>
+<a name="L52"></a><tt class="py-lineno"> 52</tt>  <tt class="py-line"><tt class="py-string">  var elt = document.getElementById(id+"-expanded-linenums");</tt> </tt>
+<a name="L53"></a><tt class="py-lineno"> 53</tt>  <tt class="py-line"><tt class="py-string">  if (elt) elt.style.display = "none";</tt> </tt>
+<a name="L54"></a><tt class="py-lineno"> 54</tt>  <tt class="py-line"><tt class="py-string">  var elt = document.getElementById(id+"-collapsed-linenums");</tt> </tt>
+<a name="L55"></a><tt class="py-lineno"> 55</tt>  <tt class="py-line"><tt class="py-string">  if (elt) { elt.innerHTML = "<br />"; elt.style.display="block"; }</tt> </tt>
+<a name="L56"></a><tt class="py-lineno"> 56</tt>  <tt class="py-line"><tt class="py-string">  var elt = document.getElementById(id+"-toggle");</tt> </tt>
+<a name="L57"></a><tt class="py-lineno"> 57</tt>  <tt class="py-line"><tt class="py-string">  if (elt) { elt.innerHTML = "+"; }</tt> </tt>
+<a name="L58"></a><tt class="py-lineno"> 58</tt>  <tt class="py-line"><tt class="py-string">  var elt = document.getElementById(id+"-collapsed");</tt> </tt>
+<a name="L59"></a><tt class="py-lineno"> 59</tt>  <tt class="py-line"><tt class="py-string">  if (elt) {</tt> </tt>
+<a name="L60"></a><tt class="py-lineno"> 60</tt>  <tt class="py-line"><tt class="py-string">    elt.style.display = "block";</tt> </tt>
+<a name="L61"></a><tt class="py-lineno"> 61</tt>  <tt class="py-line"><tt class="py-string">    </tt> </tt>
+<a name="L62"></a><tt class="py-lineno"> 62</tt>  <tt class="py-line"><tt class="py-string">    var indent = elt.getAttribute("indent");</tt> </tt>
+<a name="L63"></a><tt class="py-lineno"> 63</tt>  <tt class="py-line"><tt class="py-string">    var pad = elt.getAttribute("pad");</tt> </tt>
+<a name="L64"></a><tt class="py-lineno"> 64</tt>  <tt class="py-line"><tt class="py-string">    var s = "<tt class=\'py-lineno\'>";</tt> </tt>
+<a name="L65"></a><tt class="py-lineno"> 65</tt>  <tt class="py-line"><tt class="py-string">    for (var i=0; i<pad.length; i++) { s += "&nbsp;" }</tt> </tt>
+<a name="L66"></a><tt class="py-lineno"> 66</tt>  <tt class="py-line"><tt class="py-string">    s += "</tt>";</tt> </tt>
+<a name="L67"></a><tt class="py-lineno"> 67</tt>  <tt class="py-line"><tt class="py-string">    s += "&nbsp;&nbsp;<tt class=\'py-line\'>";</tt> </tt>
+<a name="L68"></a><tt class="py-lineno"> 68</tt>  <tt class="py-line"><tt class="py-string">    for (var i=0; i<indent.length; i++) { s += "&nbsp;" }</tt> </tt>
+<a name="L69"></a><tt class="py-lineno"> 69</tt>  <tt class="py-line"><tt class="py-string">    s += "<a href=\'#\' onclick=\'expand(\\"" + id;</tt> </tt>
+<a name="L70"></a><tt class="py-lineno"> 70</tt>  <tt class="py-line"><tt class="py-string">    s += "\\");return false\'>...</a></tt><br />";</tt> </tt>
+<a name="L71"></a><tt class="py-lineno"> 71</tt>  <tt class="py-line"><tt class="py-string">    elt.innerHTML = s;</tt> </tt>
+<a name="L72"></a><tt class="py-lineno"> 72</tt>  <tt class="py-line"><tt class="py-string">  }</tt> </tt>
+<a name="L73"></a><tt class="py-lineno"> 73</tt>  <tt class="py-line"><tt class="py-string">}</tt> </tt>
+<a name="L74"></a><tt class="py-lineno"> 74</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L75"></a><tt class="py-lineno"> 75</tt>  <tt class="py-line"><tt class="py-string">function toggle(id) {</tt> </tt>
+<a name="L76"></a><tt class="py-lineno"> 76</tt>  <tt class="py-line"><tt class="py-string">  elt = document.getElementById(id+"-toggle");</tt> </tt>
+<a name="L77"></a><tt class="py-lineno"> 77</tt>  <tt class="py-line"><tt class="py-string">  if (elt.innerHTML == "-")</tt> </tt>
+<a name="L78"></a><tt class="py-lineno"> 78</tt>  <tt class="py-line"><tt class="py-string">      collapse(id); </tt> </tt>
+<a name="L79"></a><tt class="py-lineno"> 79</tt>  <tt class="py-line"><tt class="py-string">  else</tt> </tt>
+<a name="L80"></a><tt class="py-lineno"> 80</tt>  <tt class="py-line"><tt class="py-string">      expand(id);</tt> </tt>
+<a name="L81"></a><tt class="py-lineno"> 81</tt>  <tt class="py-line"><tt class="py-string">  return false;</tt> </tt>
+<a name="L82"></a><tt class="py-lineno"> 82</tt>  <tt class="py-line"><tt class="py-string">}</tt> </tt>
+<a name="L83"></a><tt class="py-lineno"> 83</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L84"></a><tt class="py-lineno"> 84</tt>  <tt class="py-line"><tt class="py-string">function highlight(id) {</tt> </tt>
+<a name="L85"></a><tt class="py-lineno"> 85</tt>  <tt class="py-line"><tt class="py-string">  var elt = document.getElementById(id+"-def");</tt> </tt>
+<a name="L86"></a><tt class="py-lineno"> 86</tt>  <tt class="py-line"><tt class="py-string">  if (elt) elt.className = "py-highlight-hdr";</tt> </tt>
+<a name="L87"></a><tt class="py-lineno"> 87</tt>  <tt class="py-line"><tt class="py-string">  var elt = document.getElementById(id+"-expanded");</tt> </tt>
+<a name="L88"></a><tt class="py-lineno"> 88</tt>  <tt class="py-line"><tt class="py-string">  if (elt) elt.className = "py-highlight";</tt> </tt>
+<a name="L89"></a><tt class="py-lineno"> 89</tt>  <tt class="py-line"><tt class="py-string">  var elt = document.getElementById(id+"-collapsed");</tt> </tt>
+<a name="L90"></a><tt class="py-lineno"> 90</tt>  <tt class="py-line"><tt class="py-string">  if (elt) elt.className = "py-highlight";</tt> </tt>
+<a name="L91"></a><tt class="py-lineno"> 91</tt>  <tt class="py-line"><tt class="py-string">}</tt> </tt>
+<a name="L92"></a><tt class="py-lineno"> 92</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L93"></a><tt class="py-lineno"> 93</tt>  <tt class="py-line"><tt class="py-string">function num_lines(s) {</tt> </tt>
+<a name="L94"></a><tt class="py-lineno"> 94</tt>  <tt class="py-line"><tt class="py-string">  var n = 1;</tt> </tt>
+<a name="L95"></a><tt class="py-lineno"> 95</tt>  <tt class="py-line"><tt class="py-string">  var pos = s.indexOf("\\n");</tt> </tt>
+<a name="L96"></a><tt class="py-lineno"> 96</tt>  <tt class="py-line"><tt class="py-string">  while ( pos > 0) {</tt> </tt>
+<a name="L97"></a><tt class="py-lineno"> 97</tt>  <tt class="py-line"><tt class="py-string">    n += 1;</tt> </tt>
+<a name="L98"></a><tt class="py-lineno"> 98</tt>  <tt class="py-line"><tt class="py-string">    pos = s.indexOf("\\n", pos+1);</tt> </tt>
+<a name="L99"></a><tt class="py-lineno"> 99</tt>  <tt class="py-line"><tt class="py-string">  }</tt> </tt>
+<a name="L100"></a><tt class="py-lineno">100</tt>  <tt class="py-line"><tt class="py-string">  return n;</tt> </tt>
+<a name="L101"></a><tt class="py-lineno">101</tt>  <tt class="py-line"><tt class="py-string">}</tt> </tt>
+<a name="L102"></a><tt class="py-lineno">102</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L103"></a><tt class="py-lineno">103</tt>  <tt class="py-line"><tt class="py-string">// Collapse all blocks that mave more than `min_lines` lines.</tt> </tt>
+<a name="L104"></a><tt class="py-lineno">104</tt>  <tt class="py-line"><tt class="py-string">function collapse_all(min_lines) {</tt> </tt>
+<a name="L105"></a><tt class="py-lineno">105</tt>  <tt class="py-line"><tt class="py-string">  var elts = document.getElementsByTagName("div");</tt> </tt>
+<a name="L106"></a><tt class="py-lineno">106</tt>  <tt class="py-line"><tt class="py-string">  for (var i=0; i<elts.length; i++) {</tt> </tt>
+<a name="L107"></a><tt class="py-lineno">107</tt>  <tt class="py-line"><tt class="py-string">    var elt = elts[i];</tt> </tt>
+<a name="L108"></a><tt class="py-lineno">108</tt>  <tt class="py-line"><tt class="py-string">    var split = elt.id.indexOf("-");</tt> </tt>
+<a name="L109"></a><tt class="py-lineno">109</tt>  <tt class="py-line"><tt class="py-string">    if (split > 0)</tt> </tt>
+<a name="L110"></a><tt class="py-lineno">110</tt>  <tt class="py-line"><tt class="py-string">      if (elt.id.substring(split, elt.id.length) == "-expanded")</tt> </tt>
+<a name="L111"></a><tt class="py-lineno">111</tt>  <tt class="py-line"><tt class="py-string">        if (num_lines(elt.innerHTML) > min_lines)</tt> </tt>
+<a name="L112"></a><tt class="py-lineno">112</tt>  <tt class="py-line"><tt class="py-string">          collapse(elt.id.substring(0, split));</tt> </tt>
+<a name="L113"></a><tt class="py-lineno">113</tt>  <tt class="py-line"><tt class="py-string">  }</tt> </tt>
+<a name="L114"></a><tt class="py-lineno">114</tt>  <tt class="py-line"><tt class="py-string">}</tt> </tt>
+<a name="L115"></a><tt class="py-lineno">115</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L116"></a><tt class="py-lineno">116</tt>  <tt class="py-line"><tt class="py-string">function expandto(href) {</tt> </tt>
+<a name="L117"></a><tt class="py-lineno">117</tt>  <tt class="py-line"><tt class="py-string">  var start = href.indexOf("#")+1;</tt> </tt>
+<a name="L118"></a><tt class="py-lineno">118</tt>  <tt class="py-line"><tt class="py-string">  if (start != 0 && start != href.length) {</tt> </tt>
+<a name="L119"></a><tt class="py-lineno">119</tt>  <tt class="py-line"><tt class="py-string">    if (href.substring(start, href.length) != "-") {</tt> </tt>
+<a name="L120"></a><tt class="py-lineno">120</tt>  <tt class="py-line"><tt class="py-string">      collapse_all(4);</tt> </tt>
+<a name="L121"></a><tt class="py-lineno">121</tt>  <tt class="py-line"><tt class="py-string">      pos = href.indexOf(".", start);</tt> </tt>
+<a name="L122"></a><tt class="py-lineno">122</tt>  <tt class="py-line"><tt class="py-string">      while (pos != -1) {</tt> </tt>
+<a name="L123"></a><tt class="py-lineno">123</tt>  <tt class="py-line"><tt class="py-string">        var id = href.substring(start, pos);</tt> </tt>
+<a name="L124"></a><tt class="py-lineno">124</tt>  <tt class="py-line"><tt class="py-string">        expand(id);</tt> </tt>
+<a name="L125"></a><tt class="py-lineno">125</tt>  <tt class="py-line"><tt class="py-string">        pos = href.indexOf(".", pos+1);</tt> </tt>
+<a name="L126"></a><tt class="py-lineno">126</tt>  <tt class="py-line"><tt class="py-string">      }</tt> </tt>
+<a name="L127"></a><tt class="py-lineno">127</tt>  <tt class="py-line"><tt class="py-string">      var id = href.substring(start, href.length);</tt> </tt>
+<a name="L128"></a><tt class="py-lineno">128</tt>  <tt class="py-line"><tt class="py-string">      expand(id);</tt> </tt>
+<a name="L129"></a><tt class="py-lineno">129</tt>  <tt class="py-line"><tt class="py-string">      highlight(id);</tt> </tt>
+<a name="L130"></a><tt class="py-lineno">130</tt>  <tt class="py-line"><tt class="py-string">    }</tt> </tt>
+<a name="L131"></a><tt class="py-lineno">131</tt>  <tt class="py-line"><tt class="py-string">  }</tt> </tt>
+<a name="L132"></a><tt class="py-lineno">132</tt>  <tt class="py-line"><tt class="py-string">}</tt> </tt>
+<a name="L133"></a><tt class="py-lineno">133</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L134"></a><tt class="py-lineno">134</tt>  <tt class="py-line"><tt class="py-string">function kill_doclink(id) {</tt> </tt>
+<a name="L135"></a><tt class="py-lineno">135</tt>  <tt class="py-line"><tt class="py-string">  var parent = document.getElementById(id);</tt> </tt>
+<a name="L136"></a><tt class="py-lineno">136</tt>  <tt class="py-line"><tt class="py-string">  parent.removeChild(parent.childNodes.item(0));</tt> </tt>
+<a name="L137"></a><tt class="py-lineno">137</tt>  <tt class="py-line"><tt class="py-string">}</tt> </tt>
+<a name="L138"></a><tt class="py-lineno">138</tt>  <tt class="py-line"><tt class="py-string">function auto_kill_doclink(ev) {</tt> </tt>
+<a name="L139"></a><tt class="py-lineno">139</tt>  <tt class="py-line"><tt class="py-string">  if (!ev) var ev = window.event;</tt> </tt>
+<a name="L140"></a><tt class="py-lineno">140</tt>  <tt class="py-line"><tt class="py-string">  if (!this.contains(ev.toElement)) {</tt> </tt>
+<a name="L141"></a><tt class="py-lineno">141</tt>  <tt class="py-line"><tt class="py-string">    var parent = document.getElementById(this.parentID);</tt> </tt>
+<a name="L142"></a><tt class="py-lineno">142</tt>  <tt class="py-line"><tt class="py-string">    parent.removeChild(parent.childNodes.item(0));</tt> </tt>
+<a name="L143"></a><tt class="py-lineno">143</tt>  <tt class="py-line"><tt class="py-string">  }</tt> </tt>
+<a name="L144"></a><tt class="py-lineno">144</tt>  <tt class="py-line"><tt class="py-string">}</tt> </tt>
+<a name="L145"></a><tt class="py-lineno">145</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L146"></a><tt class="py-lineno">146</tt>  <tt class="py-line"><tt class="py-string">function doclink(id, name, targets_id) {</tt> </tt>
+<a name="L147"></a><tt class="py-lineno">147</tt>  <tt class="py-line"><tt class="py-string">  var elt = document.getElementById(id);</tt> </tt>
+<a name="L148"></a><tt class="py-lineno">148</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L149"></a><tt class="py-lineno">149</tt>  <tt class="py-line"><tt class="py-string">  // If we already opened the box, then destroy it.</tt> </tt>
+<a name="L150"></a><tt class="py-lineno">150</tt>  <tt class="py-line"><tt class="py-string">  // (This case should never occur, but leave it in just in case.)</tt> </tt>
+<a name="L151"></a><tt class="py-lineno">151</tt>  <tt class="py-line"><tt class="py-string">  if (elt.childNodes.length > 1) {</tt> </tt>
+<a name="L152"></a><tt class="py-lineno">152</tt>  <tt class="py-line"><tt class="py-string">    elt.removeChild(elt.childNodes.item(0));</tt> </tt>
+<a name="L153"></a><tt class="py-lineno">153</tt>  <tt class="py-line"><tt class="py-string">  }</tt> </tt>
+<a name="L154"></a><tt class="py-lineno">154</tt>  <tt class="py-line"><tt class="py-string">  else {</tt> </tt>
+<a name="L155"></a><tt class="py-lineno">155</tt>  <tt class="py-line"><tt class="py-string">    // The outer box: relative + inline positioning.</tt> </tt>
+<a name="L156"></a><tt class="py-lineno">156</tt>  <tt class="py-line"><tt class="py-string">    var box1 = document.createElement("div");</tt> </tt>
+<a name="L157"></a><tt class="py-lineno">157</tt>  <tt class="py-line"><tt class="py-string">    box1.style.position = "relative";</tt> </tt>
+<a name="L158"></a><tt class="py-lineno">158</tt>  <tt class="py-line"><tt class="py-string">    box1.style.display = "inline";</tt> </tt>
+<a name="L159"></a><tt class="py-lineno">159</tt>  <tt class="py-line"><tt class="py-string">    box1.style.top = 0;</tt> </tt>
+<a name="L160"></a><tt class="py-lineno">160</tt>  <tt class="py-line"><tt class="py-string">    box1.style.left = 0;</tt> </tt>
+<a name="L161"></a><tt class="py-lineno">161</tt>  <tt class="py-line"><tt class="py-string">  </tt> </tt>
+<a name="L162"></a><tt class="py-lineno">162</tt>  <tt class="py-line"><tt class="py-string">    // A shadow for fun</tt> </tt>
+<a name="L163"></a><tt class="py-lineno">163</tt>  <tt class="py-line"><tt class="py-string">    var shadow = document.createElement("div");</tt> </tt>
+<a name="L164"></a><tt class="py-lineno">164</tt>  <tt class="py-line"><tt class="py-string">    shadow.style.position = "absolute";</tt> </tt>
+<a name="L165"></a><tt class="py-lineno">165</tt>  <tt class="py-line"><tt class="py-string">    shadow.style.left = "-1.3em";</tt> </tt>
+<a name="L166"></a><tt class="py-lineno">166</tt>  <tt class="py-line"><tt class="py-string">    shadow.style.top = "-1.3em";</tt> </tt>
+<a name="L167"></a><tt class="py-lineno">167</tt>  <tt class="py-line"><tt class="py-string">    shadow.style.background = "#404040";</tt> </tt>
+<a name="L168"></a><tt class="py-lineno">168</tt>  <tt class="py-line"><tt class="py-string">    </tt> </tt>
+<a name="L169"></a><tt class="py-lineno">169</tt>  <tt class="py-line"><tt class="py-string">    // The inner box: absolute positioning.</tt> </tt>
+<a name="L170"></a><tt class="py-lineno">170</tt>  <tt class="py-line"><tt class="py-string">    var box2 = document.createElement("div");</tt> </tt>
+<a name="L171"></a><tt class="py-lineno">171</tt>  <tt class="py-line"><tt class="py-string">    box2.style.position = "relative";</tt> </tt>
+<a name="L172"></a><tt class="py-lineno">172</tt>  <tt class="py-line"><tt class="py-string">    box2.style.border = "1px solid #a0a0a0";</tt> </tt>
+<a name="L173"></a><tt class="py-lineno">173</tt>  <tt class="py-line"><tt class="py-string">    box2.style.left = "-.2em";</tt> </tt>
+<a name="L174"></a><tt class="py-lineno">174</tt>  <tt class="py-line"><tt class="py-string">    box2.style.top = "-.2em";</tt> </tt>
+<a name="L175"></a><tt class="py-lineno">175</tt>  <tt class="py-line"><tt class="py-string">    box2.style.background = "white";</tt> </tt>
+<a name="L176"></a><tt class="py-lineno">176</tt>  <tt class="py-line"><tt class="py-string">    box2.style.padding = ".3em .4em .3em .4em";</tt> </tt>
+<a name="L177"></a><tt class="py-lineno">177</tt>  <tt class="py-line"><tt class="py-string">    box2.style.fontStyle = "normal";</tt> </tt>
+<a name="L178"></a><tt class="py-lineno">178</tt>  <tt class="py-line"><tt class="py-string">    box2.onmouseout=auto_kill_doclink;</tt> </tt>
+<a name="L179"></a><tt class="py-lineno">179</tt>  <tt class="py-line"><tt class="py-string">    box2.parentID = id;</tt> </tt>
+<a name="L180"></a><tt class="py-lineno">180</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L181"></a><tt class="py-lineno">181</tt>  <tt class="py-line"><tt class="py-string">    // Get the targets</tt> </tt>
+<a name="L182"></a><tt class="py-lineno">182</tt>  <tt class="py-line"><tt class="py-string">    var targets_elt = document.getElementById(targets_id);</tt> </tt>
+<a name="L183"></a><tt class="py-lineno">183</tt>  <tt class="py-line"><tt class="py-string">    var targets = targets_elt.getAttribute("targets");</tt> </tt>
+<a name="L184"></a><tt class="py-lineno">184</tt>  <tt class="py-line"><tt class="py-string">    var links = "";</tt> </tt>
+<a name="L185"></a><tt class="py-lineno">185</tt>  <tt class="py-line"><tt class="py-string">    target_list = targets.split(",");</tt> </tt>
+<a name="L186"></a><tt class="py-lineno">186</tt>  <tt class="py-line"><tt class="py-string">    for (var i=0; i<target_list.length; i++) {</tt> </tt>
+<a name="L187"></a><tt class="py-lineno">187</tt>  <tt class="py-line"><tt class="py-string">        var target = target_list[i].split("=");</tt> </tt>
+<a name="L188"></a><tt class="py-lineno">188</tt>  <tt class="py-line"><tt class="py-string">        links += "<li><a href=\'" + target[1] + </tt> </tt>
+<a name="L189"></a><tt class="py-lineno">189</tt>  <tt class="py-line"><tt class="py-string">               "\' style=\'text-decoration:none\'>" +</tt> </tt>
+<a name="L190"></a><tt class="py-lineno">190</tt>  <tt class="py-line"><tt class="py-string">               target[0] + "</a></li>";</tt> </tt>
+<a name="L191"></a><tt class="py-lineno">191</tt>  <tt class="py-line"><tt class="py-string">    }</tt> </tt>
+<a name="L192"></a><tt class="py-lineno">192</tt>  <tt class="py-line"><tt class="py-string">  </tt> </tt>
+<a name="L193"></a><tt class="py-lineno">193</tt>  <tt class="py-line"><tt class="py-string">    // Put it all together.</tt> </tt>
+<a name="L194"></a><tt class="py-lineno">194</tt>  <tt class="py-line"><tt class="py-string">    elt.insertBefore(box1, elt.childNodes.item(0));</tt> </tt>
+<a name="L195"></a><tt class="py-lineno">195</tt>  <tt class="py-line"><tt class="py-string">    //box1.appendChild(box2);</tt> </tt>
+<a name="L196"></a><tt class="py-lineno">196</tt>  <tt class="py-line"><tt class="py-string">    box1.appendChild(shadow);</tt> </tt>
+<a name="L197"></a><tt class="py-lineno">197</tt>  <tt class="py-line"><tt class="py-string">    shadow.appendChild(box2);</tt> </tt>
+<a name="L198"></a><tt class="py-lineno">198</tt>  <tt class="py-line"><tt class="py-string">    box2.innerHTML =</tt> </tt>
+<a name="L199"></a><tt class="py-lineno">199</tt>  <tt class="py-line"><tt class="py-string">        "Which <b>"+name+"</b> do you want to see documentation for?" +</tt> </tt>
+<a name="L200"></a><tt class="py-lineno">200</tt>  <tt class="py-line"><tt class="py-string">        "<ul style=\'margin-bottom: 0;\'>" +</tt> </tt>
+<a name="L201"></a><tt class="py-lineno">201</tt>  <tt class="py-line"><tt class="py-string">        links + </tt> </tt>
+<a name="L202"></a><tt class="py-lineno">202</tt>  <tt class="py-line"><tt class="py-string">        "<li><a href=\'#\' style=\'text-decoration:none\' " +</tt> </tt>
+<a name="L203"></a><tt class="py-lineno">203</tt>  <tt class="py-line"><tt class="py-string">        "onclick=\'kill_doclink(\\""+id+"\\");return false;\'>"+</tt> </tt>
+<a name="L204"></a><tt class="py-lineno">204</tt>  <tt class="py-line"><tt class="py-string">        "<i>None of the above</i></a></li></ul>";</tt> </tt>
+<a name="L205"></a><tt class="py-lineno">205</tt>  <tt class="py-line"><tt class="py-string">  }</tt> </tt>
+<a name="L206"></a><tt class="py-lineno">206</tt>  <tt class="py-line"><tt class="py-string">  return false;</tt> </tt>
+<a name="L207"></a><tt class="py-lineno">207</tt>  <tt class="py-line"><tt class="py-string">}</tt> </tt>
+<a name="L208"></a><tt class="py-lineno">208</tt>  <tt class="py-line"><tt class="py-string">'''</tt> </tt>
+<a name="L209"></a><tt class="py-lineno">209</tt>  <tt class="py-line"> </tt>
+<a name="L210"></a><tt class="py-lineno">210</tt>  <tt class="py-line"><tt id="link-8" class="py-name" targets="Variable epydoc.docwriter.html_colorize.PYSRC_EXPANDTO_JAVASCRIPT=epydoc.docwriter.html_colorize-module.html#PYSRC_EXPANDTO_JAVASCRIPT"><a title="epydoc.docwriter.html_colorize.PYSRC_EXPANDTO_JAVASCRIPT" class="py-name" href="#" onclick="return doclink('link-8', 'PYSRC_EXPANDTO_JAVASCRIPT', 'link-8');">PYSRC_EXPANDTO_JAVASCRIPT</a></tt> <tt class="py-op">=</tt> <tt class="py-st [...]
+<a name="L211"></a><tt class="py-lineno">211</tt>  <tt class="py-line"><tt class="py-string"><script type="text/javascript"></tt> </tt>
+<a name="L212"></a><tt class="py-lineno">212</tt>  <tt class="py-line"><tt class="py-string"><!--</tt> </tt>
+<a name="L213"></a><tt class="py-lineno">213</tt>  <tt class="py-line"><tt class="py-string">expandto(location.href);</tt> </tt>
+<a name="L214"></a><tt class="py-lineno">214</tt>  <tt class="py-line"><tt class="py-string">// --></tt> </tt>
+<a name="L215"></a><tt class="py-lineno">215</tt>  <tt class="py-line"><tt class="py-string"></script></tt> </tt>
+<a name="L216"></a><tt class="py-lineno">216</tt>  <tt class="py-line"><tt class="py-string">'''</tt> </tt>
+<a name="L217"></a><tt class="py-lineno">217</tt>  <tt class="py-line"> </tt>
+<a name="PythonSourceColorizer"></a><div id="PythonSourceColorizer-def"><a name="L218"></a><tt class="py-lineno">218</tt> <a class="py-toggle" href="#" id="PythonSourceColorizer-toggle" onclick="return toggle('PythonSourceColorizer');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html">PythonSourceColorizer</a><tt class="py-op">:</tt> </tt>
+</div><div id="PythonSourceColorizer-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="PythonSourceColorizer-expanded"><a name="L219"></a><tt class="py-lineno">219</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L220"></a><tt class="py-lineno">220</tt>  <tt class="py-line"><tt class="py-docstring">    A class that renders a python module's source code into HTML</tt> </tt>
+<a name="L221"></a><tt class="py-lineno">221</tt>  <tt class="py-line"><tt class="py-docstring">    pages.  These HTML pages are intended to be provided along with</tt> </tt>
+<a name="L222"></a><tt class="py-lineno">222</tt>  <tt class="py-line"><tt class="py-docstring">    the API documentation for a module, in case a user wants to learn</tt> </tt>
+<a name="L223"></a><tt class="py-lineno">223</tt>  <tt class="py-line"><tt class="py-docstring">    more about a particular object by examining its source code.</tt> </tt>
+<a name="L224"></a><tt class="py-lineno">224</tt>  <tt class="py-line"><tt class="py-docstring">    Links are therefore generated from the API documentation to the</tt> </tt>
+<a name="L225"></a><tt class="py-lineno">225</tt>  <tt class="py-line"><tt class="py-docstring">    source code pages, and from the source code pages back into the</tt> </tt>
+<a name="L226"></a><tt class="py-lineno">226</tt>  <tt class="py-line"><tt class="py-docstring">    API documentation.</tt> </tt>
+<a name="L227"></a><tt class="py-lineno">227</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L228"></a><tt class="py-lineno">228</tt>  <tt class="py-line"><tt class="py-docstring">    The HTML generated by C{PythonSourceColorizer} has several notable</tt> </tt>
+<a name="L229"></a><tt class="py-lineno">229</tt>  <tt class="py-line"><tt class="py-docstring">    features:</tt> </tt>
+<a name="L230"></a><tt class="py-lineno">230</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L231"></a><tt class="py-lineno">231</tt>  <tt class="py-line"><tt class="py-docstring">      - CSS styles are used to color tokens according to their type.</tt> </tt>
+<a name="L232"></a><tt class="py-lineno">232</tt>  <tt class="py-line"><tt class="py-docstring">        (See L{CSS_CLASSES} for a list of the different token types</tt> </tt>
+<a name="L233"></a><tt class="py-lineno">233</tt>  <tt class="py-line"><tt class="py-docstring">        that are identified).</tt> </tt>
+<a name="L234"></a><tt class="py-lineno">234</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt>
+<a name="L235"></a><tt class="py-lineno">235</tt>  <tt class="py-line"><tt class="py-docstring">      - Line numbers are included to the left of each line.</tt> </tt>
+<a name="L236"></a><tt class="py-lineno">236</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L237"></a><tt class="py-lineno">237</tt>  <tt class="py-line"><tt class="py-docstring">      - The first line of each class and function definition includes</tt> </tt>
+<a name="L238"></a><tt class="py-lineno">238</tt>  <tt class="py-line"><tt class="py-docstring">        a link to the API source documentation for that object.</tt> </tt>
+<a name="L239"></a><tt class="py-lineno">239</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L240"></a><tt class="py-lineno">240</tt>  <tt class="py-line"><tt class="py-docstring">      - The first line of each class and function definition includes</tt> </tt>
+<a name="L241"></a><tt class="py-lineno">241</tt>  <tt class="py-line"><tt class="py-docstring">        an anchor that can be used to link directly to that class or</tt> </tt>
+<a name="L242"></a><tt class="py-lineno">242</tt>  <tt class="py-line"><tt class="py-docstring">        function.</tt> </tt>
+<a name="L243"></a><tt class="py-lineno">243</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L244"></a><tt class="py-lineno">244</tt>  <tt class="py-line"><tt class="py-docstring">      - If javascript is enabled, and the page is loaded using the</tt> </tt>
+<a name="L245"></a><tt class="py-lineno">245</tt>  <tt class="py-line"><tt class="py-docstring">        anchor for a class or function (i.e., if the url ends in</tt> </tt>
+<a name="L246"></a><tt class="py-lineno">246</tt>  <tt class="py-line"><tt class="py-docstring">        C{'#I{<name>}'}), then that class or function will automatically</tt> </tt>
+<a name="L247"></a><tt class="py-lineno">247</tt>  <tt class="py-line"><tt class="py-docstring">        be highlighted; and all other classes and function definition</tt> </tt>
+<a name="L248"></a><tt class="py-lineno">248</tt>  <tt class="py-line"><tt class="py-docstring">        blocks will be 'collapsed'.  These collapsed blocks can be</tt> </tt>
+<a name="L249"></a><tt class="py-lineno">249</tt>  <tt class="py-line"><tt class="py-docstring">        expanded by clicking on them.</tt> </tt>
+<a name="L250"></a><tt class="py-lineno">250</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L251"></a><tt class="py-lineno">251</tt>  <tt class="py-line"><tt class="py-docstring">      - Unicode input is supported (including automatic detection</tt> </tt>
+<a name="L252"></a><tt class="py-lineno">252</tt>  <tt class="py-line"><tt class="py-docstring">        of C{'coding:'} declarations).</tt> </tt>
+<a name="L253"></a><tt class="py-lineno">253</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L254"></a><tt class="py-lineno">254</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L255"></a><tt class="py-lineno">255</tt>  <tt class="py-line">    <tt class="py-comment">#: A look-up table that is used to determine which CSS class</tt> </tt>
+<a name="L256"></a><tt class="py-lineno">256</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#: should be used to colorize a given token.  The following keys</tt> </tt>
+<a name="L257"></a><tt class="py-lineno">257</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#: may be used:</tt> </tt>
+<a name="L258"></a><tt class="py-lineno">258</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#:   - Any token name (e.g., C{'STRING'})</tt> </tt>
+<a name="L259"></a><tt class="py-lineno">259</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#:   - Any operator token (e.g., C{'='} or C{'@'}).</tt> </tt>
+<a name="L260"></a><tt class="py-lineno">260</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#:   - C{'KEYWORD'} -- Python keywords such as C{'for'} and C{'if'}</tt> </tt>
+<a name="L261"></a><tt class="py-lineno">261</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#:   - C{'DEFNAME'} -- the name of a class or function at the top</tt> </tt>
+<a name="L262"></a><tt class="py-lineno">262</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#:     of its definition statement.</tt> </tt>
+<a name="L263"></a><tt class="py-lineno">263</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#:   - C{'BASECLASS'} -- names of base classes at the top of a class</tt> </tt>
+<a name="L264"></a><tt class="py-lineno">264</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#:     definition statement.</tt> </tt>
+<a name="L265"></a><tt class="py-lineno">265</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#:   - C{'PARAM'} -- function parameters</tt> </tt>
+<a name="L266"></a><tt class="py-lineno">266</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#:   - C{'DOCSTRING'} -- docstrings</tt> </tt>
+<a name="L267"></a><tt class="py-lineno">267</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#:   - C{'DECORATOR'} -- decorator names</tt> </tt>
+<a name="L268"></a><tt class="py-lineno">268</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#: If no CSS class can be found for a given token, then it won't</tt> </tt>
+<a name="L269"></a><tt class="py-lineno">269</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#: be marked with any CSS class.</tt> </tt>
+<a name="L270"></a><tt class="py-lineno">270</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-9" class="py-name" targets="Variable epydoc.docwriter.html_colorize.PythonSourceColorizer.CSS_CLASSES=epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#CSS_CLASSES"><a title="epydoc.docwriter.html_colorize.PythonSourceColorizer.CSS_CLASSES" class="py-name" href="#" onclick="return doclink('link-9', 'CSS_CLASSES', 'link-9');">CSS_CLASSES</a></tt> <tt class="py- [...]
+<a name="L271"></a><tt class="py-lineno">271</tt>  <tt class="py-line">        <tt class="py-string">'NUMBER'</tt><tt class="py-op">:</tt>       <tt class="py-string">'py-number'</tt><tt class="py-op">,</tt> </tt>
+<a name="L272"></a><tt class="py-lineno">272</tt>  <tt class="py-line">        <tt class="py-string">'STRING'</tt><tt class="py-op">:</tt>       <tt class="py-string">'py-string'</tt><tt class="py-op">,</tt> </tt>
+<a name="L273"></a><tt class="py-lineno">273</tt>  <tt class="py-line">        <tt class="py-string">'COMMENT'</tt><tt class="py-op">:</tt>      <tt class="py-string">'py-comment'</tt><tt class="py-op">,</tt> </tt>
+<a name="L274"></a><tt class="py-lineno">274</tt>  <tt class="py-line">        <tt class="py-string">'NAME'</tt><tt class="py-op">:</tt>         <tt class="py-string">'py-name'</tt><tt class="py-op">,</tt> </tt>
+<a name="L275"></a><tt class="py-lineno">275</tt>  <tt class="py-line">        <tt class="py-string">'KEYWORD'</tt><tt class="py-op">:</tt>      <tt class="py-string">'py-keyword'</tt><tt class="py-op">,</tt> </tt>
+<a name="L276"></a><tt class="py-lineno">276</tt>  <tt class="py-line">        <tt class="py-string">'DEFNAME'</tt><tt class="py-op">:</tt>      <tt class="py-string">'py-def-name'</tt><tt class="py-op">,</tt> </tt>
+<a name="L277"></a><tt class="py-lineno">277</tt>  <tt class="py-line">        <tt class="py-string">'BASECLASS'</tt><tt class="py-op">:</tt>    <tt class="py-string">'py-base-class'</tt><tt class="py-op">,</tt> </tt>
+<a name="L278"></a><tt class="py-lineno">278</tt>  <tt class="py-line">        <tt class="py-string">'PARAM'</tt><tt class="py-op">:</tt>        <tt class="py-string">'py-param'</tt><tt class="py-op">,</tt> </tt>
+<a name="L279"></a><tt class="py-lineno">279</tt>  <tt class="py-line">        <tt class="py-string">'DOCSTRING'</tt><tt class="py-op">:</tt>    <tt class="py-string">'py-docstring'</tt><tt class="py-op">,</tt> </tt>
+<a name="L280"></a><tt class="py-lineno">280</tt>  <tt class="py-line">        <tt class="py-string">'DECORATOR'</tt><tt class="py-op">:</tt>    <tt class="py-string">'py-decorator'</tt><tt class="py-op">,</tt> </tt>
+<a name="L281"></a><tt class="py-lineno">281</tt>  <tt class="py-line">        <tt class="py-string">'OP'</tt><tt class="py-op">:</tt>           <tt class="py-string">'py-op'</tt><tt class="py-op">,</tt> </tt>
+<a name="L282"></a><tt class="py-lineno">282</tt>  <tt class="py-line">        <tt class="py-string">'@'</tt><tt class="py-op">:</tt>            <tt class="py-string">'py-decorator'</tt><tt class="py-op">,</tt> </tt>
+<a name="L283"></a><tt class="py-lineno">283</tt>  <tt class="py-line">        <tt class="py-op">}</tt> </tt>
+<a name="L284"></a><tt class="py-lineno">284</tt>  <tt class="py-line"> </tt>
+<a name="L285"></a><tt class="py-lineno">285</tt>  <tt class="py-line">    <tt class="py-comment">#: HTML code for the beginning of a collapsable function or class</tt> </tt>
+<a name="L286"></a><tt class="py-lineno">286</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#: definition block.  The block contains two <div>...</div></tt> </tt>
+<a name="L287"></a><tt class="py-lineno">287</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#: elements -- a collapsed version and an expanded version -- and</tt> </tt>
+<a name="L288"></a><tt class="py-lineno">288</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#: only one of these elements is visible at any given time.  By</tt> </tt>
+<a name="L289"></a><tt class="py-lineno">289</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#: default, all definition blocks are expanded.</tt> </tt>
+<a name="L290"></a><tt class="py-lineno">290</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#:</tt> </tt>
+<a name="L291"></a><tt class="py-lineno">291</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#: This string should be interpolated with the following values::</tt> </tt>
+<a name="L292"></a><tt class="py-lineno">292</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#:   (name, indentation, name)</tt> </tt>
+<a name="L293"></a><tt class="py-lineno">293</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#: Where C{name} is the anchor name for the function or class; and</tt> </tt>
+<a name="L294"></a><tt class="py-lineno">294</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#: indentation is a string of whitespace used to indent the</tt> </tt>
+<a name="L295"></a><tt class="py-lineno">295</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#: ellipsis marker in the collapsed version.</tt> </tt>
+<a name="L296"></a><tt class="py-lineno">296</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-10" class="py-name" targets="Variable epydoc.docwriter.html_colorize.PythonSourceColorizer.START_DEF_BLOCK=epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#START_DEF_BLOCK"><a title="epydoc.docwriter.html_colorize.PythonSourceColorizer.START_DEF_BLOCK" class="py-name" href="#" onclick="return doclink('link-10', 'START_DEF_BLOCK', 'link-10');">START_DEF_BLOCK< [...]
+<a name="L297"></a><tt class="py-lineno">297</tt>  <tt class="py-line">        <tt class="py-string">'<div id="%s-collapsed" style="display:none;" '</tt> </tt>
+<a name="L298"></a><tt class="py-lineno">298</tt>  <tt class="py-line">        <tt class="py-string">'pad="%s" indent="%s"></div>'</tt> </tt>
+<a name="L299"></a><tt class="py-lineno">299</tt>  <tt class="py-line">        <tt class="py-string">'<div id="%s-expanded">'</tt><tt class="py-op">)</tt> </tt>
+<a name="L300"></a><tt class="py-lineno">300</tt>  <tt class="py-line"> </tt>
+<a name="L301"></a><tt class="py-lineno">301</tt>  <tt class="py-line">    <tt class="py-comment">#: HTML code for the end of a collapsable function or class</tt> </tt>
+<a name="L302"></a><tt class="py-lineno">302</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#: definition block.</tt> </tt>
+<a name="L303"></a><tt class="py-lineno">303</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-11" class="py-name" targets="Variable epydoc.docwriter.html_colorize.PythonSourceColorizer.END_DEF_BLOCK=epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#END_DEF_BLOCK"><a title="epydoc.docwriter.html_colorize.PythonSourceColorizer.END_DEF_BLOCK" class="py-name" href="#" onclick="return doclink('link-11', 'END_DEF_BLOCK', 'link-11');">END_DEF_BLOCK</a></tt> < [...]
+<a name="L304"></a><tt class="py-lineno">304</tt>  <tt class="py-line"> </tt>
+<a name="L305"></a><tt class="py-lineno">305</tt>  <tt class="py-line">    <tt class="py-comment">#: A regular expression used to pick out the unicode encoding for</tt> </tt>
+<a name="L306"></a><tt class="py-lineno">306</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#: the source file.</tt> </tt>
+<a name="L307"></a><tt class="py-lineno">307</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-12" class="py-name" targets="Variable epydoc.docwriter.html_colorize.PythonSourceColorizer.UNICODE_CODING_RE=epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#UNICODE_CODING_RE"><a title="epydoc.docwriter.html_colorize.PythonSourceColorizer.UNICODE_CODING_RE" class="py-name" href="#" onclick="return doclink('link-12', 'UNICODE_CODING_RE', 'link-12');">UNICODE_ [...]
+<a name="L308"></a><tt class="py-lineno">308</tt>  <tt class="py-line"> </tt>
+<a name="L309"></a><tt class="py-lineno">309</tt>  <tt class="py-line">    <tt class="py-comment">#: A configuration constant, used to determine whether or not to add</tt> </tt>
+<a name="L310"></a><tt class="py-lineno">310</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#: collapsable <div> elements for definition blocks.</tt> </tt>
+<a name="L311"></a><tt class="py-lineno">311</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-13" class="py-name" targets="Variable epydoc.docwriter.html_colorize.PythonSourceColorizer.ADD_DEF_BLOCKS=epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#ADD_DEF_BLOCKS"><a title="epydoc.docwriter.html_colorize.PythonSourceColorizer.ADD_DEF_BLOCKS" class="py-name" href="#" onclick="return doclink('link-13', 'ADD_DEF_BLOCKS', 'link-13');">ADD_DEF_BLOCKS</a></ [...]
+<a name="L312"></a><tt class="py-lineno">312</tt>  <tt class="py-line"> </tt>
+<a name="L313"></a><tt class="py-lineno">313</tt>  <tt class="py-line">    <tt class="py-comment">#: A configuration constant, used to determine whether or not to</tt> </tt>
+<a name="L314"></a><tt class="py-lineno">314</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#: add line numbers.</tt> </tt>
+<a name="L315"></a><tt class="py-lineno">315</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-14" class="py-name" targets="Variable epydoc.docwriter.html_colorize.PythonSourceColorizer.ADD_LINE_NUMBERS=epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#ADD_LINE_NUMBERS"><a title="epydoc.docwriter.html_colorize.PythonSourceColorizer.ADD_LINE_NUMBERS" class="py-name" href="#" onclick="return doclink('link-14', 'ADD_LINE_NUMBERS', 'link-14');">ADD_LINE_NUM [...]
+<a name="L316"></a><tt class="py-lineno">316</tt>  <tt class="py-line"> </tt>
+<a name="L317"></a><tt class="py-lineno">317</tt>  <tt class="py-line">    <tt class="py-comment">#: A configuration constant, used to determine whether or not to</tt> </tt>
+<a name="L318"></a><tt class="py-lineno">318</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#: add tooltips for linked names.</tt> </tt>
+<a name="L319"></a><tt class="py-lineno">319</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-15" class="py-name" targets="Variable epydoc.docwriter.html_colorize.PythonSourceColorizer.ADD_TOOLTIPS=epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#ADD_TOOLTIPS"><a title="epydoc.docwriter.html_colorize.PythonSourceColorizer.ADD_TOOLTIPS" class="py-name" href="#" onclick="return doclink('link-15', 'ADD_TOOLTIPS', 'link-15');">ADD_TOOLTIPS</a></tt> <tt cl [...]
+<a name="L320"></a><tt class="py-lineno">320</tt>  <tt class="py-line"> </tt>
+<a name="L321"></a><tt class="py-lineno">321</tt>  <tt class="py-line">    <tt class="py-comment">#: If true, then try to guess which target is appropriate for</tt> </tt>
+<a name="L322"></a><tt class="py-lineno">322</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#: linked names; if false, then always open a div asking the</tt> </tt>
+<a name="L323"></a><tt class="py-lineno">323</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#: user which one they want.</tt> </tt>
+<a name="L324"></a><tt class="py-lineno">324</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-16" class="py-name" targets="Variable epydoc.docwriter.html_colorize.PythonSourceColorizer.GUESS_LINK_TARGETS=epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#GUESS_LINK_TARGETS"><a title="epydoc.docwriter.html_colorize.PythonSourceColorizer.GUESS_LINK_TARGETS" class="py-name" href="#" onclick="return doclink('link-16', 'GUESS_LINK_TARGETS', 'link-16');">GUES [...]
+<a name="L325"></a><tt class="py-lineno">325</tt>  <tt class="py-line"> </tt>
+<a name="PythonSourceColorizer.__init__"></a><div id="PythonSourceColorizer.__init__-def"><a name="L326"></a><tt class="py-lineno">326</tt> <a class="py-toggle" href="#" id="PythonSourceColorizer.__init__-toggle" onclick="return toggle('PythonSourceColorizer.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param" [...]
+<a name="L327"></a><tt class="py-lineno">327</tt>  <tt class="py-line">                 <tt class="py-param">docindex</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">url_func</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">name_to_docs</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L328"></a><tt class="py-lineno">328</tt>  <tt class="py-line">                 <tt class="py-param">tab_width</tt><tt class="py-op">=</tt><tt class="py-number">8</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="PythonSourceColorizer.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="PythonSourceColorizer.__init__-expanded"><a name="L329"></a><tt class="py-lineno">329</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L330"></a><tt class="py-lineno">330</tt>  <tt class="py-line"><tt class="py-docstring">        Create a new HTML colorizer for the specified module.</tt> </tt>
+<a name="L331"></a><tt class="py-lineno">331</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L332"></a><tt class="py-lineno">332</tt>  <tt class="py-line"><tt class="py-docstring">        @param module_filename: The name of the file containing the</tt> </tt>
+<a name="L333"></a><tt class="py-lineno">333</tt>  <tt class="py-line"><tt class="py-docstring">            module; its text will be loaded from this file.</tt> </tt>
+<a name="L334"></a><tt class="py-lineno">334</tt>  <tt class="py-line"><tt class="py-docstring">        @param module_name: The dotted name of the module; this will</tt> </tt>
+<a name="L335"></a><tt class="py-lineno">335</tt>  <tt class="py-line"><tt class="py-docstring">            be used to create links back into the API source</tt> </tt>
+<a name="L336"></a><tt class="py-lineno">336</tt>  <tt class="py-line"><tt class="py-docstring">            documentation.</tt> </tt>
+<a name="L337"></a><tt class="py-lineno">337</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L338"></a><tt class="py-lineno">338</tt>  <tt class="py-line">        <tt class="py-comment"># Get the source version, if possible.</tt> </tt>
+<a name="L339"></a><tt class="py-lineno">339</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> <tt class="py-name">module_filename</tt> <tt class="py-op">=</tt> <tt id="link-17" class="py-name"><a title="epydoc.util.py_src_filename" class="py-name" href="#" onclick="return doclink('link-17', 'py_src_filename', 'link-4');">py_src_filename</a></tt><tt class="py-op">(</tt><tt class="py-name">module_filename</tt><tt class="p [...]
+<a name="L340"></a><tt class="py-lineno">340</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt><tt class="py-op">:</tt> <tt class="py-keyword">pass</tt> </tt>
+<a name="L341"></a><tt class="py-lineno">341</tt>  <tt class="py-line">         </tt>
+<a name="L342"></a><tt class="py-lineno">342</tt>  <tt class="py-line">        <tt class="py-comment">#: The filename of the module we're colorizing.</tt> </tt>
+<a name="L343"></a><tt class="py-lineno">343</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">module_filename</tt> <tt class="py-op">=</tt> <tt class="py-name">module_filename</tt> </tt>
+<a name="L344"></a><tt class="py-lineno">344</tt>  <tt class="py-line">         </tt>
+<a name="L345"></a><tt class="py-lineno">345</tt>  <tt class="py-line">        <tt class="py-comment">#: The dotted name of the module we're colorizing.</tt> </tt>
+<a name="L346"></a><tt class="py-lineno">346</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">module_name</tt> <tt class="py-op">=</tt> <tt class="py-name">module_name</tt> </tt>
+<a name="L347"></a><tt class="py-lineno">347</tt>  <tt class="py-line"> </tt>
+<a name="L348"></a><tt class="py-lineno">348</tt>  <tt class="py-line">        <tt class="py-comment">#: A docindex, used to create href links from identifiers to</tt> </tt>
+<a name="L349"></a><tt class="py-lineno">349</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#: the API documentation for their values.</tt> </tt>
+<a name="L350"></a><tt class="py-lineno">350</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">docindex</tt> <tt class="py-op">=</tt> <tt class="py-name">docindex</tt> </tt>
+<a name="L351"></a><tt class="py-lineno">351</tt>  <tt class="py-line"> </tt>
+<a name="L352"></a><tt class="py-lineno">352</tt>  <tt class="py-line">        <tt class="py-comment">#: A mapping from short names to lists of ValueDoc, used to</tt> </tt>
+<a name="L353"></a><tt class="py-lineno">353</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#: decide which values an identifier might map to when creating</tt> </tt>
+<a name="L354"></a><tt class="py-lineno">354</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#: href links from identifiers to the API docs for their values.</tt> </tt>
+<a name="L355"></a><tt class="py-lineno">355</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">name_to_docs</tt> <tt class="py-op">=</tt> <tt class="py-name">name_to_docs</tt> </tt>
+<a name="L356"></a><tt class="py-lineno">356</tt>  <tt class="py-line">             </tt>
+<a name="L357"></a><tt class="py-lineno">357</tt>  <tt class="py-line">        <tt class="py-comment">#: A function that maps APIDoc -> URL, used to create href</tt> </tt>
+<a name="L358"></a><tt class="py-lineno">358</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#: links from identifiers to the API documentation for their</tt> </tt>
+<a name="L359"></a><tt class="py-lineno">359</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#: values.</tt> </tt>
+<a name="L360"></a><tt class="py-lineno">360</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">url_func</tt> <tt class="py-op">=</tt> <tt class="py-name">url_func</tt> </tt>
+<a name="L361"></a><tt class="py-lineno">361</tt>  <tt class="py-line"> </tt>
+<a name="L362"></a><tt class="py-lineno">362</tt>  <tt class="py-line">        <tt class="py-comment">#: The index in C{text} of the last character of the last</tt> </tt>
+<a name="L363"></a><tt class="py-lineno">363</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#: token we've processed.</tt> </tt>
+<a name="L364"></a><tt class="py-lineno">364</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">pos</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L365"></a><tt class="py-lineno">365</tt>  <tt class="py-line"> </tt>
+<a name="L366"></a><tt class="py-lineno">366</tt>  <tt class="py-line">        <tt class="py-comment">#: A list that maps line numbers to character offsets in</tt> </tt>
+<a name="L367"></a><tt class="py-lineno">367</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#: C{text}.  In particular, line C{M{i}} begins at character</tt> </tt>
+<a name="L368"></a><tt class="py-lineno">368</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#: C{line_offset[i]} in C{text}.  Since line numbers begin at</tt> </tt>
+<a name="L369"></a><tt class="py-lineno">369</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#: 1, the first element of C{line_offsets} is C{None}.</tt> </tt>
+<a name="L370"></a><tt class="py-lineno">370</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">line_offsets</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L371"></a><tt class="py-lineno">371</tt>  <tt class="py-line"> </tt>
+<a name="L372"></a><tt class="py-lineno">372</tt>  <tt class="py-line">        <tt class="py-comment">#: A list of C{(toktype, toktext)} for all tokens on the</tt> </tt>
+<a name="L373"></a><tt class="py-lineno">373</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#: logical line that we are currently processing.  Once a</tt> </tt>
+<a name="L374"></a><tt class="py-lineno">374</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#: complete line of tokens has been collected in C{cur_line},</tt> </tt>
+<a name="L375"></a><tt class="py-lineno">375</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#: it is sent to L{handle_line} for processing.</tt> </tt>
+<a name="L376"></a><tt class="py-lineno">376</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">cur_line</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L377"></a><tt class="py-lineno">377</tt>  <tt class="py-line"> </tt>
+<a name="L378"></a><tt class="py-lineno">378</tt>  <tt class="py-line">        <tt class="py-comment">#: A list of the names of the class or functions that include</tt> </tt>
+<a name="L379"></a><tt class="py-lineno">379</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#: the current block.  C{context} has one element for each</tt> </tt>
+<a name="L380"></a><tt class="py-lineno">380</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#: level of indentation; C{context[i]} is the name of the class</tt> </tt>
+<a name="L381"></a><tt class="py-lineno">381</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#: or function defined by the C{i}th level of indentation, or</tt> </tt>
+<a name="L382"></a><tt class="py-lineno">382</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#: C{None} if that level of indentation doesn't correspond to a</tt> </tt>
+<a name="L383"></a><tt class="py-lineno">383</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#: class or function definition.</tt> </tt>
+<a name="L384"></a><tt class="py-lineno">384</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">context</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L385"></a><tt class="py-lineno">385</tt>  <tt class="py-line"> </tt>
+<a name="L386"></a><tt class="py-lineno">386</tt>  <tt class="py-line">        <tt class="py-comment">#: A list, corresponding one-to-one with L{self.context},</tt> </tt>
+<a name="L387"></a><tt class="py-lineno">387</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#: indicating the type of each entry.  Each element of</tt> </tt>
+<a name="L388"></a><tt class="py-lineno">388</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#: C{context_types} is one of: C{'func'}, C{'class'}, C{None}.</tt> </tt>
+<a name="L389"></a><tt class="py-lineno">389</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">context_types</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L390"></a><tt class="py-lineno">390</tt>  <tt class="py-line"> </tt>
+<a name="L391"></a><tt class="py-lineno">391</tt>  <tt class="py-line">        <tt class="py-comment">#: A list of indentation strings for each of the current</tt> </tt>
+<a name="L392"></a><tt class="py-lineno">392</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#: block's indents.  I.e., the current total indentation can</tt> </tt>
+<a name="L393"></a><tt class="py-lineno">393</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#: be found by taking C{''.join(self.indents)}.</tt> </tt>
+<a name="L394"></a><tt class="py-lineno">394</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">indents</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L395"></a><tt class="py-lineno">395</tt>  <tt class="py-line"> </tt>
+<a name="L396"></a><tt class="py-lineno">396</tt>  <tt class="py-line">        <tt class="py-comment">#: The line number of the line we're currently processing.</tt> </tt>
+<a name="L397"></a><tt class="py-lineno">397</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-18" class="py-name" targets="Variable epydoc.apidoc.RoutineDoc.lineno=epydoc.apidoc.RoutineDoc-class.html#lineno"><a title="epydoc.apidoc.RoutineDoc.lineno" class="py-name" href="#" onclick="return doclink('link-18', 'lineno', 'link-18');">lineno</a></tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L398"></a><tt class="py-lineno">398</tt>  <tt class="py-line"> </tt>
+<a name="L399"></a><tt class="py-lineno">399</tt>  <tt class="py-line">        <tt class="py-comment">#: The name of the class or function whose definition started</tt> </tt>
+<a name="L400"></a><tt class="py-lineno">400</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#: on the previous logical line, or C{None} if the previous</tt> </tt>
+<a name="L401"></a><tt class="py-lineno">401</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#: logical line was not a class or function definition.</tt> </tt>
+<a name="L402"></a><tt class="py-lineno">402</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">def_name</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L403"></a><tt class="py-lineno">403</tt>  <tt class="py-line"> </tt>
+<a name="L404"></a><tt class="py-lineno">404</tt>  <tt class="py-line">        <tt class="py-comment">#: The type of the class or function whose definition started</tt> </tt>
+<a name="L405"></a><tt class="py-lineno">405</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#: on the previous logical line, or C{None} if the previous</tt> </tt>
+<a name="L406"></a><tt class="py-lineno">406</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#: logical line was not a class or function definition.</tt> </tt>
+<a name="L407"></a><tt class="py-lineno">407</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#: Can be C{'func'}, C{'class'}, C{None}.</tt> </tt>
+<a name="L408"></a><tt class="py-lineno">408</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">def_type</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L409"></a><tt class="py-lineno">409</tt>  <tt class="py-line"> </tt>
+<a name="L410"></a><tt class="py-lineno">410</tt>  <tt class="py-line">        <tt class="py-comment">#: The number of spaces to replace each tab in source code with</tt> </tt>
+<a name="L411"></a><tt class="py-lineno">411</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">tab_width</tt> <tt class="py-op">=</tt> <tt class="py-name">tab_width</tt> </tt>
+</div><a name="L412"></a><tt class="py-lineno">412</tt>  <tt class="py-line"> </tt>
+<a name="L413"></a><tt class="py-lineno">413</tt>  <tt class="py-line">         </tt>
+<a name="PythonSourceColorizer.find_line_offsets"></a><div id="PythonSourceColorizer.find_line_offsets-def"><a name="L414"></a><tt class="py-lineno">414</tt> <a class="py-toggle" href="#" id="PythonSourceColorizer.find_line_offsets-toggle" onclick="return toggle('PythonSourceColorizer.find_line_offsets');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#find_line_offsets">find_line_o [...]
+</div><div id="PythonSourceColorizer.find_line_offsets-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="PythonSourceColorizer.find_line_offsets-expanded"><a name="L415"></a><tt class="py-lineno">415</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L416"></a><tt class="py-lineno">416</tt>  <tt class="py-line"><tt class="py-docstring">        Construct the L{line_offsets} table from C{self.text}.</tt> </tt>
+<a name="L417"></a><tt class="py-lineno">417</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L418"></a><tt class="py-lineno">418</tt>  <tt class="py-line">        <tt class="py-comment"># line 0 doesn't exist; line 1 starts at char offset 0.</tt> </tt>
+<a name="L419"></a><tt class="py-lineno">419</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">line_offsets</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L420"></a><tt class="py-lineno">420</tt>  <tt class="py-line">        <tt class="py-comment"># Find all newlines in `text`, and add an entry to</tt> </tt>
+<a name="L421"></a><tt class="py-lineno">421</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># line_offsets for each one.</tt> </tt>
+<a name="L422"></a><tt class="py-lineno">422</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">pos</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">text</tt><tt class="py-op">.</tt><tt id="link-19" class="py-name" targets="Method epydoc.apidoc.DocIndex.find()=epydoc.apidoc.DocIndex-class.html#find"><a title="epydoc.apidoc.DocIndex.find" class="py-name" href="#" onclick="return doclink('link-19', 'find', [...]
+<a name="L423"></a><tt class="py-lineno">423</tt>  <tt class="py-line">        <tt class="py-keyword">while</tt> <tt class="py-name">pos</tt> <tt class="py-op">!=</tt> <tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L424"></a><tt class="py-lineno">424</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">line_offsets</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">pos</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L425"></a><tt class="py-lineno">425</tt>  <tt class="py-line">            <tt class="py-name">pos</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">text</tt><tt class="py-op">.</tt><tt id="link-20" class="py-name"><a title="epydoc.apidoc.DocIndex.find" class="py-name" href="#" onclick="return doclink('link-20', 'find', 'link-19');">find</a></tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">,</tt> <tt [...]
+<a name="L426"></a><tt class="py-lineno">426</tt>  <tt class="py-line">        <tt class="py-comment"># Add a final entry, marking the end of the string.</tt> </tt>
+<a name="L427"></a><tt class="py-lineno">427</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">line_offsets</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">text</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L428"></a><tt class="py-lineno">428</tt>  <tt class="py-line"> </tt>
+<a name="PythonSourceColorizer.lineno_to_html"></a><div id="PythonSourceColorizer.lineno_to_html-def"><a name="L429"></a><tt class="py-lineno">429</tt> <a class="py-toggle" href="#" id="PythonSourceColorizer.lineno_to_html-toggle" onclick="return toggle('PythonSourceColorizer.lineno_to_html');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#lineno_to_html">lineno_to_html</a><tt clas [...]
+</div><div id="PythonSourceColorizer.lineno_to_html-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="PythonSourceColorizer.lineno_to_html-expanded"><a name="L430"></a><tt class="py-lineno">430</tt>  <tt class="py-line">        <tt class="py-name">template</tt> <tt class="py-op">=</tt> <tt class="py-string">'%%%ds'</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">linenum_size</tt> </tt>
+<a name="L431"></a><tt class="py-lineno">431</tt>  <tt class="py-line">        <tt class="py-name">n</tt> <tt class="py-op">=</tt> <tt class="py-name">template</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-21" class="py-name"><a title="epydoc.apidoc.RoutineDoc.lineno" class="py-name" href="#" onclick="return doclink('link-21', 'lineno', 'link-18');">lineno</a></tt> </tt>
+<a name="L432"></a><tt class="py-lineno">432</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">'<a name="L%s"></a><tt class="py-lineno">%s</tt>'</tt> \ </tt>
+<a name="L433"></a><tt class="py-lineno">433</tt>  <tt class="py-line">            <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-22" class="py-name"><a title="epydoc.apidoc.RoutineDoc.lineno" class="py-name" href="#" onclick="return doclink('link-22', 'lineno', 'link-18');">lineno</a></tt><tt class="py-op">,</tt> <tt class="py-name">n</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L434"></a><tt class="py-lineno">434</tt>  <tt class="py-line"> </tt>
+<a name="PythonSourceColorizer.colorize"></a><div id="PythonSourceColorizer.colorize-def"><a name="L435"></a><tt class="py-lineno">435</tt> <a class="py-toggle" href="#" id="PythonSourceColorizer.colorize-toggle" onclick="return toggle('PythonSourceColorizer.colorize');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#colorize">colorize</a><tt class="py-op">(</tt><tt class="py-param" [...]
+</div><div id="PythonSourceColorizer.colorize-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="PythonSourceColorizer.colorize-expanded"><a name="L436"></a><tt class="py-lineno">436</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L437"></a><tt class="py-lineno">437</tt>  <tt class="py-line"><tt class="py-docstring">        Return an HTML string that renders the source code for the</tt> </tt>
+<a name="L438"></a><tt class="py-lineno">438</tt>  <tt class="py-line"><tt class="py-docstring">        module that was specified in the constructor.</tt> </tt>
+<a name="L439"></a><tt class="py-lineno">439</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L440"></a><tt class="py-lineno">440</tt>  <tt class="py-line">        <tt class="py-comment"># Initialize all our state variables</tt> </tt>
+<a name="L441"></a><tt class="py-lineno">441</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">pos</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L442"></a><tt class="py-lineno">442</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">cur_line</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L443"></a><tt class="py-lineno">443</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">context</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L444"></a><tt class="py-lineno">444</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">context_types</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L445"></a><tt class="py-lineno">445</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">indents</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L446"></a><tt class="py-lineno">446</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-23" class="py-name"><a title="epydoc.apidoc.RoutineDoc.lineno" class="py-name" href="#" onclick="return doclink('link-23', 'lineno', 'link-18');">lineno</a></tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L447"></a><tt class="py-lineno">447</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">def_name</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L448"></a><tt class="py-lineno">448</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">def_type</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L449"></a><tt class="py-lineno">449</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">has_decorators</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L450"></a><tt class="py-lineno">450</tt>  <tt class="py-line"> </tt>
+<a name="L451"></a><tt class="py-lineno">451</tt>  <tt class="py-line">        <tt class="py-comment"># Cache, used so we only need to list the target elements once</tt> </tt>
+<a name="L452"></a><tt class="py-lineno">452</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># for each variable.</tt> </tt>
+<a name="L453"></a><tt class="py-lineno">453</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">doclink_targets_cache</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L454"></a><tt class="py-lineno">454</tt>  <tt class="py-line"> </tt>
+<a name="L455"></a><tt class="py-lineno">455</tt>  <tt class="py-line">        <tt class="py-comment"># Load the module's text.</tt> </tt>
+<a name="L456"></a><tt class="py-lineno">456</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">text</tt> <tt class="py-op">=</tt> <tt id="link-24" class="py-name" targets="Method epydoc.gui.EpydocGUI.open()=epydoc.gui.EpydocGUI-class.html#open"><a title="epydoc.gui.EpydocGUI.open" class="py-name" href="#" onclick="return doclink('link-24', 'open', 'link-24');">open</a></tt><tt class="py-op">(</tt><tt cla [...]
+epydoc.docwriter.xlink.ApiLinkReader.read
+epydoc.gui.GUILogger.read" class="py-name" href="#" onclick="return doclink('link-25', 'read', 'link-25');">read</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L457"></a><tt class="py-lineno">457</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">text</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">text</tt><tt class="py-op">.</tt><tt class="py-name">expandtabs</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">tab_width</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt c [...]
+<a name="L458"></a><tt class="py-lineno">458</tt>  <tt class="py-line"> </tt>
+<a name="L459"></a><tt class="py-lineno">459</tt>  <tt class="py-line">        <tt class="py-comment"># Construct the line_offsets table.</tt> </tt>
+<a name="L460"></a><tt class="py-lineno">460</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-26" class="py-name" targets="Method epydoc.docwriter.html_colorize.PythonSourceColorizer.find_line_offsets()=epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#find_line_offsets"><a title="epydoc.docwriter.html_colorize.PythonSourceColorizer.find_line_offsets" class="py-name" href="#" onclick="return docl [...]
+<a name="L461"></a><tt class="py-lineno">461</tt>  <tt class="py-line"> </tt>
+<a name="L462"></a><tt class="py-lineno">462</tt>  <tt class="py-line">        <tt class="py-name">num_lines</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">text</tt><tt class="py-op">.</tt><tt class="py-name">count</tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">)</tt><tt class="py-op">+</tt><tt class="py-number">1</tt> </tt>
+<a name="L463"></a><tt class="py-lineno">463</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">linenum_size</tt> <tt class="py-op">=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-op">`</tt><tt class="py-name">num_lines</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op">`</tt><tt class="py-op">)</tt> </tt>
+<a name="L464"></a><tt class="py-lineno">464</tt>  <tt class="py-line">         </tt>
+<a name="L465"></a><tt class="py-lineno">465</tt>  <tt class="py-line">        <tt class="py-comment"># Call the tokenizer, and send tokens to our `tokeneater()`</tt> </tt>
+<a name="L466"></a><tt class="py-lineno">466</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># method.  If anything goes wrong, then fall-back to using</tt> </tt>
+<a name="L467"></a><tt class="py-lineno">467</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># the input text as-is (with no colorization).</tt> </tt>
+<a name="L468"></a><tt class="py-lineno">468</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L469"></a><tt class="py-lineno">469</tt>  <tt class="py-line">            <tt class="py-name">output</tt> <tt class="py-op">=</tt> <tt class="py-name">StringIO</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L470"></a><tt class="py-lineno">470</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">out</tt> <tt class="py-op">=</tt> <tt class="py-name">output</tt><tt class="py-op">.</tt><tt id="link-27" class="py-name" targets="Method epydoc.docintrospecter._DevNull.write()=epydoc.docintrospecter._DevNull-class.html#write,Method epydoc.docwriter.dotgraph.DotGraph.write()=epydoc.docwriter.dotgraph.DotGraph-class.html#write,Method  [...]
+epydoc.docwriter.dotgraph.DotGraph.write
+epydoc.docwriter.html.HTMLWriter.write
+epydoc.docwriter.latex.LatexWriter.write
+epydoc.docwriter.plaintext.PlaintextWriter.write" class="py-name" href="#" onclick="return doclink('link-27', 'write', 'link-27');">write</a></tt> </tt>
+<a name="L471"></a><tt class="py-lineno">471</tt>  <tt class="py-line">            <tt class="py-name">tokenize</tt><tt class="py-op">.</tt><tt class="py-name">tokenize</tt><tt class="py-op">(</tt><tt class="py-name">StringIO</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">text</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-28" class="py-name" targets="Method epydoc.docintrospecter._DevNull.readline()=epydoc.docintros [...]
+<a name="L472"></a><tt class="py-lineno">472</tt>  <tt class="py-line">            <tt id="link-30" class="py-name" targets="Module epydoc.docwriter.html=epydoc.docwriter.html-module.html"><a title="epydoc.docwriter.html" class="py-name" href="#" onclick="return doclink('link-30', 'html', 'link-30');">html</a></tt> <tt class="py-op">=</tt> <tt class="py-name">output</tt><tt class="py-op">.</tt><tt class="py-name">getvalue</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L473"></a><tt class="py-lineno">473</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">has_decorators</tt><tt class="py-op">:</tt> </tt>
+<a name="L474"></a><tt class="py-lineno">474</tt>  <tt class="py-line">                <tt id="link-31" class="py-name"><a title="epydoc.docwriter.html" class="py-name" href="#" onclick="return doclink('link-31', 'html', 'link-30');">html</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-32" class="py-name" targets="Variable epydoc.docwriter.html_colorize.PythonSourceColorizer._FIX_DECORATOR_RE=epydoc.docwriter.html_colorize.PythonSourceC [...]
+<a name="L475"></a><tt class="py-lineno">475</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">tokenize</tt><tt class="py-op">.</tt><tt class="py-name">TokenError</tt><tt class="py-op">,</tt> <tt class="py-name">ex</tt><tt class="py-op">:</tt> </tt>
+<a name="L476"></a><tt class="py-lineno">476</tt>  <tt class="py-line">            <tt id="link-34" class="py-name"><a title="epydoc.docwriter.html" class="py-name" href="#" onclick="return doclink('link-34', 'html', 'link-30');">html</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">text</tt> </tt>
+<a name="L477"></a><tt class="py-lineno">477</tt>  <tt class="py-line"> </tt>
+<a name="L478"></a><tt class="py-lineno">478</tt>  <tt class="py-line">        <tt class="py-comment"># Check for a unicode encoding declaration.</tt> </tt>
+<a name="L479"></a><tt class="py-lineno">479</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-35" class="py-name"><a title="epydoc.docwriter.html_colorize.PythonSourceColorizer.UNICODE_CODING_RE" class="py-name" href="#" onclick="return doclink('link-35', 'UNICODE_CODING_RE', 'link-12');">UNICODE_CODING_RE</a></tt><tt class="py-op">.</tt><tt class="py-name">m [...]
+<a name="L480"></a><tt class="py-lineno">480</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">m</tt><tt class="py-op">:</tt> <tt class="py-name">coding</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt class="py-name">group</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L481"></a><tt class="py-lineno">481</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> <tt class="py-name">coding</tt> <tt class="py-op">=</tt> <tt class="py-string">'iso-8859-1'</tt> </tt>
+<a name="L482"></a><tt class="py-lineno">482</tt>  <tt class="py-line"> </tt>
+<a name="L483"></a><tt class="py-lineno">483</tt>  <tt class="py-line">        <tt class="py-comment"># Decode the html string into unicode, and then encode it back</tt> </tt>
+<a name="L484"></a><tt class="py-lineno">484</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># into ascii, replacing any non-ascii characters with xml</tt> </tt>
+<a name="L485"></a><tt class="py-lineno">485</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># character references.</tt> </tt>
+<a name="L486"></a><tt class="py-lineno">486</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L487"></a><tt class="py-lineno">487</tt>  <tt class="py-line">            <tt id="link-36" class="py-name"><a title="epydoc.docwriter.html" class="py-name" href="#" onclick="return doclink('link-36', 'html', 'link-30');">html</a></tt> <tt class="py-op">=</tt> <tt id="link-37" class="py-name"><a title="epydoc.docwriter.html" class="py-name" href="#" onclick="return doclink('link-37', 'html', 'link-30');">html</a></tt><tt class="py-op">.</tt><tt class="py-name">decode</tt><tt clas [...]
+<a name="L488"></a><tt class="py-lineno">488</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">LookupError</tt><tt class="py-op">:</tt> </tt>
+<a name="L489"></a><tt class="py-lineno">489</tt>  <tt class="py-line">            <tt class="py-name">coding</tt> <tt class="py-op">=</tt> <tt class="py-string">'iso-8859-1'</tt> </tt>
+<a name="L490"></a><tt class="py-lineno">490</tt>  <tt class="py-line">            <tt id="link-38" class="py-name"><a title="epydoc.docwriter.html" class="py-name" href="#" onclick="return doclink('link-38', 'html', 'link-30');">html</a></tt> <tt class="py-op">=</tt> <tt id="link-39" class="py-name"><a title="epydoc.docwriter.html" class="py-name" href="#" onclick="return doclink('link-39', 'html', 'link-30');">html</a></tt><tt class="py-op">.</tt><tt class="py-name">decode</tt><tt clas [...]
+<a name="L491"></a><tt class="py-lineno">491</tt>  <tt class="py-line"> </tt>
+<a name="L492"></a><tt class="py-lineno">492</tt>  <tt class="py-line">        <tt class="py-comment"># Call expandto.</tt> </tt>
+<a name="L493"></a><tt class="py-lineno">493</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt id="link-40" class="py-name"><a title="epydoc.docwriter.html" class="py-name" href="#" onclick="return doclink('link-40', 'html', 'link-30');">html</a></tt> <tt class="py-op">+=</tt> <tt id="link-41" class="py-name"><a title="epydoc.docwriter.html_colorize.PYSRC_EXPANDTO_JAVASCRIPT" class="py-name" href="#" onclick="return doclink('link-41', 'PYSRC_EXPANDTO_JAVASCRIPT', 'link-8' [...]
+<a name="L494"></a><tt class="py-lineno">494</tt>  <tt class="py-line"> </tt>
+<a name="L495"></a><tt class="py-lineno">495</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-42" class="py-name"><a title="epydoc.docwriter.html" class="py-name" href="#" onclick="return doclink('link-42', 'html', 'link-30');">html</a></tt> </tt>
+</div><a name="L496"></a><tt class="py-lineno">496</tt>  <tt class="py-line"> </tt>
+<a name="PythonSourceColorizer.tokeneater"></a><div id="PythonSourceColorizer.tokeneater-def"><a name="L497"></a><tt class="py-lineno">497</tt> <a class="py-toggle" href="#" id="PythonSourceColorizer.tokeneater-toggle" onclick="return toggle('PythonSourceColorizer.tokeneater');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#tokeneater">tokeneater</a><tt class="py-op">(</tt><tt clas [...]
+</div><div id="PythonSourceColorizer.tokeneater-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="PythonSourceColorizer.tokeneater-expanded"><a name="L498"></a><tt class="py-lineno">498</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L499"></a><tt class="py-lineno">499</tt>  <tt class="py-line"><tt class="py-docstring">        A callback function used by C{tokenize.tokenize} to handle</tt> </tt>
+<a name="L500"></a><tt class="py-lineno">500</tt>  <tt class="py-line"><tt class="py-docstring">        each token in the module.  C{tokeneater} collects tokens into</tt> </tt>
+<a name="L501"></a><tt class="py-lineno">501</tt>  <tt class="py-line"><tt class="py-docstring">        the C{self.cur_line} list until a complete logical line has</tt> </tt>
+<a name="L502"></a><tt class="py-lineno">502</tt>  <tt class="py-line"><tt class="py-docstring">        been formed; and then calls L{handle_line} to process that line.</tt> </tt>
+<a name="L503"></a><tt class="py-lineno">503</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L504"></a><tt class="py-lineno">504</tt>  <tt class="py-line">        <tt class="py-comment"># If we encounter any errors, then just give up.</tt> </tt>
+<a name="L505"></a><tt class="py-lineno">505</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">toktype</tt> <tt class="py-op">==</tt> <tt class="py-name">token</tt><tt class="py-op">.</tt><tt class="py-name">ERRORTOKEN</tt><tt class="py-op">:</tt> </tt>
+<a name="L506"></a><tt class="py-lineno">506</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">tokenize</tt><tt class="py-op">.</tt><tt class="py-name">TokenError</tt><tt class="py-op">,</tt> <tt class="py-name">toktype</tt> </tt>
+<a name="L507"></a><tt class="py-lineno">507</tt>  <tt class="py-line"> </tt>
+<a name="L508"></a><tt class="py-lineno">508</tt>  <tt class="py-line">        <tt class="py-comment"># Did we skip anything whitespace?  If so, add a pseudotoken</tt> </tt>
+<a name="L509"></a><tt class="py-lineno">509</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># for it, with toktype=None.  (Note -- this skipped string</tt> </tt>
+<a name="L510"></a><tt class="py-lineno">510</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># might also contain continuation slashes; but I won't bother</tt> </tt>
+<a name="L511"></a><tt class="py-lineno">511</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># to colorize them.)</tt> </tt>
+<a name="L512"></a><tt class="py-lineno">512</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">startpos</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">line_offsets</tt><tt class="py-op">[</tt><tt class="py-name">srow</tt><tt class="py-op">]</tt> <tt class="py-op">+</tt> <tt class="py-name">scol</tt> </tt>
+<a name="L513"></a><tt class="py-lineno">513</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">startpos</tt> <tt class="py-op">></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">pos</tt><tt class="py-op">:</tt> </tt>
+<a name="L514"></a><tt class="py-lineno">514</tt>  <tt class="py-line">            <tt class="py-name">skipped</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">text</tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">pos</tt><tt class="py-op">:</tt><tt class="py-name">startpos</tt><tt class="py-op">]</tt> </tt>
+<a name="L515"></a><tt class="py-lineno">515</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">cur_line</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">skipped</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt> </tt>
+<a name="L516"></a><tt class="py-lineno">516</tt>  <tt class="py-line"> </tt>
+<a name="L517"></a><tt class="py-lineno">517</tt>  <tt class="py-line">        <tt class="py-comment"># Update our position.</tt> </tt>
+<a name="L518"></a><tt class="py-lineno">518</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">pos</tt> <tt class="py-op">=</tt> <tt class="py-name">startpos</tt> <tt class="py-op">+</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">toktext</tt><tt class="py-op">)</tt> </tt>
+<a name="L519"></a><tt class="py-lineno">519</tt>  <tt class="py-line"> </tt>
+<a name="L520"></a><tt class="py-lineno">520</tt>  <tt class="py-line">        <tt class="py-comment"># Update our current line.</tt> </tt>
+<a name="L521"></a><tt class="py-lineno">521</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">cur_line</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt> <tt class="py-op">(</tt><tt class="py-name">toktype</tt><tt class="py-op">,</tt> <tt class="py-name">toktext</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt> </tt>
+<a name="L522"></a><tt class="py-lineno">522</tt>  <tt class="py-line"> </tt>
+<a name="L523"></a><tt class="py-lineno">523</tt>  <tt class="py-line">        <tt class="py-comment"># When we reach the end of a line, process it.</tt> </tt>
+<a name="L524"></a><tt class="py-lineno">524</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">toktype</tt> <tt class="py-op">==</tt> <tt class="py-name">token</tt><tt class="py-op">.</tt><tt class="py-name">NEWLINE</tt> <tt class="py-keyword">or</tt> <tt class="py-name">toktype</tt> <tt class="py-op">==</tt> <tt class="py-name">token</tt><tt class="py-op">.</tt><tt class="py-name">ENDMARKER</tt><tt class="py-op">:</tt> </tt>
+<a name="L525"></a><tt class="py-lineno">525</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-43" class="py-name" targets="Method epydoc.docwriter.html_colorize.PythonSourceColorizer.handle_line()=epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#handle_line"><a title="epydoc.docwriter.html_colorize.PythonSourceColorizer.handle_line" class="py-name" href="#" onclick="return doclink('link-43', 'handle_line', 'link-43');" [...]
+<a name="L526"></a><tt class="py-lineno">526</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">cur_line</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+</div><a name="L527"></a><tt class="py-lineno">527</tt>  <tt class="py-line"> </tt>
+<a name="L528"></a><tt class="py-lineno">528</tt>  <tt class="py-line">    <tt id="link-44" class="py-name" targets="Variable epydoc.docwriter.html_colorize.PythonSourceColorizer._next_uid=epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#_next_uid"><a title="epydoc.docwriter.html_colorize.PythonSourceColorizer._next_uid" class="py-name" href="#" onclick="return doclink('link-44', '_next_uid', 'link-44');">_next_uid</a></tt> <tt class="py-op">=</tt> <tt class="py-number">0< [...]
+<a name="L529"></a><tt class="py-lineno">529</tt>  <tt class="py-line"> </tt>
+<a name="L530"></a><tt class="py-lineno">530</tt>  <tt class="py-line">    <tt class="py-comment"># [xx] note -- this works with byte strings, not unicode strings!</tt> </tt>
+<a name="L531"></a><tt class="py-lineno">531</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># I may change it to use unicode eventually, but when I do it</tt> </tt>
+<a name="L532"></a><tt class="py-lineno">532</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># needs to be changed all at once.</tt> </tt>
+<a name="PythonSourceColorizer.handle_line"></a><div id="PythonSourceColorizer.handle_line-def"><a name="L533"></a><tt class="py-lineno">533</tt> <a class="py-toggle" href="#" id="PythonSourceColorizer.handle_line-toggle" onclick="return toggle('PythonSourceColorizer.handle_line');">-</a><tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#handle_line">handle_line</ [...]
+</div><div id="PythonSourceColorizer.handle_line-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="PythonSourceColorizer.handle_line-expanded"><a name="L534"></a><tt class="py-lineno">534</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L535"></a><tt class="py-lineno">535</tt>  <tt class="py-line"><tt class="py-docstring">        Render a single logical line from the module, and write the</tt> </tt>
+<a name="L536"></a><tt class="py-lineno">536</tt>  <tt class="py-line"><tt class="py-docstring">        generated HTML to C{self.out}.</tt> </tt>
+<a name="L537"></a><tt class="py-lineno">537</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L538"></a><tt class="py-lineno">538</tt>  <tt class="py-line"><tt class="py-docstring">        @param line: A single logical line, encoded as a list of</tt> </tt>
+<a name="L539"></a><tt class="py-lineno">539</tt>  <tt class="py-line"><tt class="py-docstring">            C{(toktype,tokttext)} pairs corresponding to the tokens in</tt> </tt>
+<a name="L540"></a><tt class="py-lineno">540</tt>  <tt class="py-line"><tt class="py-docstring">            the line.</tt> </tt>
+<a name="L541"></a><tt class="py-lineno">541</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L542"></a><tt class="py-lineno">542</tt>  <tt class="py-line">        <tt class="py-comment"># def_name is the name of the function or class defined by</tt> </tt>
+<a name="L543"></a><tt class="py-lineno">543</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># this line; or None if no funciton or class is defined.</tt> </tt>
+<a name="L544"></a><tt class="py-lineno">544</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">def_name</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L545"></a><tt class="py-lineno">545</tt>  <tt class="py-line"> </tt>
+<a name="L546"></a><tt class="py-lineno">546</tt>  <tt class="py-line">        <tt class="py-comment"># def_type is the type of the function or class defined by</tt> </tt>
+<a name="L547"></a><tt class="py-lineno">547</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># this line; or None if no funciton or class is defined.</tt> </tt>
+<a name="L548"></a><tt class="py-lineno">548</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">def_type</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L549"></a><tt class="py-lineno">549</tt>  <tt class="py-line"> </tt>
+<a name="L550"></a><tt class="py-lineno">550</tt>  <tt class="py-line">        <tt class="py-comment"># does this line start a class/func def?</tt> </tt>
+<a name="L551"></a><tt class="py-lineno">551</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">starting_def_block</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt>  </tt>
+<a name="L552"></a><tt class="py-lineno">552</tt>  <tt class="py-line"> </tt>
+<a name="L553"></a><tt class="py-lineno">553</tt>  <tt class="py-line">        <tt class="py-name">in_base_list</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L554"></a><tt class="py-lineno">554</tt>  <tt class="py-line">        <tt class="py-name">in_param_list</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L555"></a><tt class="py-lineno">555</tt>  <tt class="py-line">        <tt class="py-name">in_param_default</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L556"></a><tt class="py-lineno">556</tt>  <tt class="py-line">        <tt class="py-name">at_module_top</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-45" class="py-name"><a title="epydoc.apidoc.RoutineDoc.lineno" class="py-name" href="#" onclick="return doclink('link-45', 'lineno', 'link-18');">lineno</a></tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L557"></a><tt class="py-lineno">557</tt>  <tt class="py-line"> </tt>
+<a name="L558"></a><tt class="py-lineno">558</tt>  <tt class="py-line">        <tt class="py-name">ended_def_blocks</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L559"></a><tt class="py-lineno">559</tt>  <tt class="py-line"> </tt>
+<a name="L560"></a><tt class="py-lineno">560</tt>  <tt class="py-line">        <tt class="py-comment"># The html output.</tt> </tt>
+<a name="L561"></a><tt class="py-lineno">561</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-46" class="py-name"><a title="epydoc.docwriter.html_colorize.PythonSourceColorizer.ADD_LINE_NUMBERS" class="py-name" href="#" onclick="return doclink('link-46', 'ADD_LINE_NUMBERS', 'link-14');">ADD_LINE_NUMBERS</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L562"></a><tt class="py-lineno">562</tt>  <tt class="py-line">            <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-47" class="py-name" targets="Method epydoc.docwriter.html_colorize.PythonSourceColorizer.lineno_to_html()=epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#lineno_to_html"><a title="epydoc.docwriter.html_colorize.PythonSourceColorizer.lineno_to_html" class="py-name" href="#" o [...]
+<a name="L563"></a><tt class="py-lineno">563</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-48" class="py-name"><a title="epydoc.apidoc.RoutineDoc.lineno" class="py-name" href="#" onclick="return doclink('link-48', 'lineno', 'link-18');">lineno</a></tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L564"></a><tt class="py-lineno">564</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L565"></a><tt class="py-lineno">565</tt>  <tt class="py-line">            <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
+<a name="L566"></a><tt class="py-lineno">566</tt>  <tt class="py-line">        <tt class="py-name">s</tt> <tt class="py-op">+=</tt> <tt class="py-string">'  <tt class="py-line">'</tt> </tt>
+<a name="L567"></a><tt class="py-lineno">567</tt>  <tt class="py-line"> </tt>
+<a name="L568"></a><tt class="py-lineno">568</tt>  <tt class="py-line">        <tt class="py-comment"># Loop through each token, and colorize it appropriately.</tt> </tt>
+<a name="L569"></a><tt class="py-lineno">569</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">for</tt> <tt class="py-name">i</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">toktype</tt><tt class="py-op">,</tt> <tt class="py-name">toktext</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-name">enumerate</tt><tt class="py-op">(</tt><tt class="py-name">line</tt><tt class="py-op">)</tt><tt class="py-op">:</t [...]
+<a name="L570"></a><tt class="py-lineno">570</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">str</tt><tt class="py-op">:</tt> </tt>
+<a name="L571"></a><tt class="py-lineno">571</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt class="py-name">unicode</tt><tt class="py-op">:</tt> </tt>
+<a name="L572"></a><tt class="py-lineno">572</tt>  <tt class="py-line">                    <tt id="link-49" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-49', 'log', 'link-1');">log</a></tt><tt class="py-op">.</tt><tt id="link-50" class="py-name" targets="Function epydoc.log.error()=epydoc.log-module.html#error"><a title="epydoc.log.error" class="py-name" href="#" onclick="return doclink('link-50', 'error', 'link-50');">error</a></tt><tt class="py-op">(</tt><tt class="py-string">'While colorizing %s -- got unexpected '</tt> </tt>
+<a name="L573"></a><tt class="py-lineno">573</tt>  <tt class="py-line">                              <tt class="py-string">'unicode string'</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">module_name</tt><tt class="py-op">)</tt> </tt>
+<a name="L574"></a><tt class="py-lineno">574</tt>  <tt class="py-line">                    <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">s</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">'ascii'</tt><tt class="py-op">,</tt> <tt class="py-string">'xmlcharrefreplace'</tt><tt class="py-op">)</tt> </tt>
+<a name="L575"></a><tt class="py-lineno">575</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L576"></a><tt class="py-lineno">576</tt>  <tt class="py-line">                    <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">'Unexpected value for s -- %s'</tt> <tt class="py-op">%</tt>  </tt>
+<a name="L577"></a><tt class="py-lineno">577</tt>  <tt class="py-line">                                     <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt><tt class="py-op">)</tt> </tt>
+<a name="L578"></a><tt class="py-lineno">578</tt>  <tt class="py-line"> </tt>
+<a name="L579"></a><tt class="py-lineno">579</tt>  <tt class="py-line">            <tt class="py-comment"># For each token, determine its css class and whether it</tt> </tt>
+<a name="L580"></a><tt class="py-lineno">580</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># should link to a url.</tt> </tt>
+<a name="L581"></a><tt class="py-lineno">581</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">css_class</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L582"></a><tt class="py-lineno">582</tt>  <tt class="py-line">            <tt id="link-51" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.url()=epydoc.docwriter.html.HTMLWriter-class.html#url"><a title="epydoc.docwriter.html.HTMLWriter.url" class="py-name" href="#" onclick="return doclink('link-51', 'url', 'link-51');">url</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L583"></a><tt class="py-lineno">583</tt>  <tt class="py-line">            <tt class="py-name">tooltip</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L584"></a><tt class="py-lineno">584</tt>  <tt class="py-line">            <tt class="py-name">onclick</tt> <tt class="py-op">=</tt> <tt class="py-name">uid</tt> <tt class="py-op">=</tt> <tt class="py-name">targets</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> <tt class="py-comment"># these 3 are used together.</tt> </tt>
+<a name="L585"></a><tt class="py-lineno">585</tt>  <tt class="py-line"> </tt>
+<a name="L586"></a><tt class="py-lineno">586</tt>  <tt class="py-line">            <tt class="py-comment"># Is this token the class name in a class definition?  If</tt> </tt>
+<a name="L587"></a><tt class="py-lineno">587</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># so, then make it a link back into the API docs.</tt> </tt>
+<a name="L588"></a><tt class="py-lineno">588</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt class="py-name">i</tt><tt class="py-op">>=</tt><tt class="py-number">2</tt> <tt class="py-keyword">and</tt> <tt class="py-name">line</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">-</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt [...]
+<a name="L589"></a><tt class="py-lineno">589</tt>  <tt class="py-line">                <tt class="py-name">in_base_list</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L590"></a><tt class="py-lineno">590</tt>  <tt class="py-line">                <tt class="py-name">css_class</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-52" class="py-name"><a title="epydoc.docwriter.html_colorize.PythonSourceColorizer.CSS_CLASSES" class="py-name" href="#" onclick="return doclink('link-52', 'CSS_CLASSES', 'link-9');">CSS_CLASSES</a></tt><tt class="py-op">[</tt><tt class="py-string">'DEFNAME'</tt><tt class="py-op [...]
+<a name="L591"></a><tt class="py-lineno">591</tt>  <tt class="py-line">                <tt class="py-name">def_name</tt> <tt class="py-op">=</tt> <tt class="py-name">toktext</tt> </tt>
+<a name="L592"></a><tt class="py-lineno">592</tt>  <tt class="py-line">                <tt class="py-name">def_type</tt> <tt class="py-op">=</tt> <tt class="py-string">'class'</tt> </tt>
+<a name="L593"></a><tt class="py-lineno">593</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-string">'func'</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">context_types</tt><tt class="py-op">:</tt> </tt>
+<a name="L594"></a><tt class="py-lineno">594</tt>  <tt class="py-line">                    <tt class="py-name">cls_name</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-53" class="py-name" targets="Method epydoc.docwriter.html_colorize.PythonSourceColorizer.context_name()=epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#context_name"><a title="epydoc.docwriter.html_colorize.PythonSourceColorizer.context_name" class="py-name" h [...]
+<a name="L595"></a><tt class="py-lineno">595</tt>  <tt class="py-line">                    <tt id="link-54" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.url" class="py-name" href="#" onclick="return doclink('link-54', 'url', 'link-51');">url</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-55" class="py-name" targets="Method epydoc.docwriter.html_colorize.PythonSourceColorizer.name2url()=epydoc.docwriter.html_colorize.Pytho [...]
+<a name="L596"></a><tt class="py-lineno">596</tt>  <tt class="py-line">                    <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-56" class="py-name" targets="Method epydoc.docwriter.html_colorize.PythonSourceColorizer.mark_def()=epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#mark_def"><a title="epydoc.docwriter.html_colorize.PythonSourceColorizer.mark_def" class="py-name" href="#" onclick="re [...]
+<a name="L597"></a><tt class="py-lineno">597</tt>  <tt class="py-line">                    <tt class="py-name">starting_def_block</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L598"></a><tt class="py-lineno">598</tt>  <tt class="py-line"> </tt>
+<a name="L599"></a><tt class="py-lineno">599</tt>  <tt class="py-line">            <tt class="py-comment"># Is this token the function name in a function def?  If</tt> </tt>
+<a name="L600"></a><tt class="py-lineno">600</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># so, then make it a link back into the API docs.</tt> </tt>
+<a name="L601"></a><tt class="py-lineno">601</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">elif</tt> <tt class="py-name">i</tt><tt class="py-op">>=</tt><tt class="py-number">2</tt> <tt class="py-keyword">and</tt> <tt class="py-name">line</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">-</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> < [...]
+<a name="L602"></a><tt class="py-lineno">602</tt>  <tt class="py-line">                <tt class="py-name">in_param_list</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L603"></a><tt class="py-lineno">603</tt>  <tt class="py-line">                <tt class="py-name">css_class</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-57" class="py-name"><a title="epydoc.docwriter.html_colorize.PythonSourceColorizer.CSS_CLASSES" class="py-name" href="#" onclick="return doclink('link-57', 'CSS_CLASSES', 'link-9');">CSS_CLASSES</a></tt><tt class="py-op">[</tt><tt class="py-string">'DEFNAME'</tt><tt class="py-op [...]
+<a name="L604"></a><tt class="py-lineno">604</tt>  <tt class="py-line">                <tt class="py-name">def_name</tt> <tt class="py-op">=</tt> <tt class="py-name">toktext</tt> </tt>
+<a name="L605"></a><tt class="py-lineno">605</tt>  <tt class="py-line">                <tt class="py-name">def_type</tt> <tt class="py-op">=</tt> <tt class="py-string">'func'</tt> </tt>
+<a name="L606"></a><tt class="py-lineno">606</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-string">'func'</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">context_types</tt><tt class="py-op">:</tt> </tt>
+<a name="L607"></a><tt class="py-lineno">607</tt>  <tt class="py-line">                    <tt class="py-name">cls_name</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-58" class="py-name"><a title="epydoc.docwriter.html_colorize.PythonSourceColorizer.context_name" class="py-name" href="#" onclick="return doclink('link-58', 'context_name', 'link-53');">context_name</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L608"></a><tt class="py-lineno">608</tt>  <tt class="py-line">                    <tt class="py-name">func_name</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-59" class="py-name"><a title="epydoc.docwriter.html_colorize.PythonSourceColorizer.context_name" class="py-name" href="#" onclick="return doclink('link-59', 'context_name', 'link-53');">context_name</a></tt><tt class="py-op">(</tt><tt class="py-name">def_name</tt><tt class=" [...]
+<a name="L609"></a><tt class="py-lineno">609</tt>  <tt class="py-line">                    <tt id="link-60" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.url" class="py-name" href="#" onclick="return doclink('link-60', 'url', 'link-51');">url</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-61" class="py-name"><a title="epydoc.docwriter.html_colorize.PythonSourceColorizer.name2url" class="py-name" href="#" onclick="return do [...]
+<a name="L610"></a><tt class="py-lineno">610</tt>  <tt class="py-line">                    <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-62" class="py-name"><a title="epydoc.docwriter.html_colorize.PythonSourceColorizer.mark_def" class="py-name" href="#" onclick="return doclink('link-62', 'mark_def', 'link-56');">mark_def</a></tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">,</tt> <tt class="py [...]
+<a name="L611"></a><tt class="py-lineno">611</tt>  <tt class="py-line">                    <tt class="py-name">starting_def_block</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L612"></a><tt class="py-lineno">612</tt>  <tt class="py-line"> </tt>
+<a name="L613"></a><tt class="py-lineno">613</tt>  <tt class="py-line">            <tt class="py-comment"># For each indent, update the indents list (which we use</tt> </tt>
+<a name="L614"></a><tt class="py-lineno">614</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># to keep track of indentation strings) and the context</tt> </tt>
+<a name="L615"></a><tt class="py-lineno">615</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># list.  If this indent is the start of a class or</tt> </tt>
+<a name="L616"></a><tt class="py-lineno">616</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># function def block, then self.def_name will be its name;</tt> </tt>
+<a name="L617"></a><tt class="py-lineno">617</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># otherwise, it will be None.</tt> </tt>
+<a name="L618"></a><tt class="py-lineno">618</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">elif</tt> <tt class="py-name">toktype</tt> <tt class="py-op">==</tt> <tt class="py-name">token</tt><tt class="py-op">.</tt><tt class="py-name">INDENT</tt><tt class="py-op">:</tt> </tt>
+<a name="L619"></a><tt class="py-lineno">619</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">indents</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">toktext</tt><tt class="py-op">)</tt> </tt>
+<a name="L620"></a><tt class="py-lineno">620</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">context</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">def_name</tt><tt class="py-op">)</tt> </tt>
+<a name="L621"></a><tt class="py-lineno">621</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">context_types</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">def_type</tt><tt class="py-op">)</tt> </tt>
+<a name="L622"></a><tt class="py-lineno">622</tt>  <tt class="py-line"> </tt>
+<a name="L623"></a><tt class="py-lineno">623</tt>  <tt class="py-line">            <tt class="py-comment"># When we dedent, pop the last elements off the indents</tt> </tt>
+<a name="L624"></a><tt class="py-lineno">624</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># list and the context list.  If the last context element</tt> </tt>
+<a name="L625"></a><tt class="py-lineno">625</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># is a name, then we're ending a class or function def</tt> </tt>
+<a name="L626"></a><tt class="py-lineno">626</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># block; so write an end-div tag.</tt> </tt>
+<a name="L627"></a><tt class="py-lineno">627</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">elif</tt> <tt class="py-name">toktype</tt> <tt class="py-op">==</tt> <tt class="py-name">token</tt><tt class="py-op">.</tt><tt class="py-name">DEDENT</tt><tt class="py-op">:</tt> </tt>
+<a name="L628"></a><tt class="py-lineno">628</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">indents</tt><tt class="py-op">.</tt><tt class="py-name">pop</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L629"></a><tt class="py-lineno">629</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">context_types</tt><tt class="py-op">.</tt><tt class="py-name">pop</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L630"></a><tt class="py-lineno">630</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">context</tt><tt class="py-op">.</tt><tt class="py-name">pop</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L631"></a><tt class="py-lineno">631</tt>  <tt class="py-line">                    <tt class="py-name">ended_def_blocks</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L632"></a><tt class="py-lineno">632</tt>  <tt class="py-line"> </tt>
+<a name="L633"></a><tt class="py-lineno">633</tt>  <tt class="py-line">            <tt class="py-comment"># If this token contains whitespace, then don't bother to</tt> </tt>
+<a name="L634"></a><tt class="py-lineno">634</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># give it a css tag.</tt> </tt>
+<a name="L635"></a><tt class="py-lineno">635</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">elif</tt> <tt class="py-name">toktype</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">tokenize</tt><tt class="py-op">.</tt><tt class="py-name">NL</tt><tt class="py-op">,</tt> <tt class="py-name">token</tt><tt class="py-op">.</tt><tt class="py-name">NEWLINE</tt><tt class=" [...]
+<a name="L636"></a><tt class="py-lineno">636</tt>  <tt class="py-line">                             <tt class="py-name">token</tt><tt class="py-op">.</tt><tt class="py-name">ENDMARKER</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L637"></a><tt class="py-lineno">637</tt>  <tt class="py-line">                <tt class="py-name">css_class</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L638"></a><tt class="py-lineno">638</tt>  <tt class="py-line"> </tt>
+<a name="L639"></a><tt class="py-lineno">639</tt>  <tt class="py-line">            <tt class="py-comment"># Check if the token is a keyword.</tt> </tt>
+<a name="L640"></a><tt class="py-lineno">640</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">elif</tt> <tt class="py-name">toktype</tt> <tt class="py-op">==</tt> <tt class="py-name">token</tt><tt class="py-op">.</tt><tt class="py-name">NAME</tt> <tt class="py-keyword">and</tt> <tt class="py-name">keyword</tt><tt class="py-op">.</tt><tt class="py-name">iskeyword</tt><tt class="py-op">(</tt><tt class="py-name">toktext</tt><tt class="py-op">)</tt><tt [...]
+<a name="L641"></a><tt class="py-lineno">641</tt>  <tt class="py-line">                <tt class="py-name">css_class</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-63" class="py-name"><a title="epydoc.docwriter.html_colorize.PythonSourceColorizer.CSS_CLASSES" class="py-name" href="#" onclick="return doclink('link-63', 'CSS_CLASSES', 'link-9');">CSS_CLASSES</a></tt><tt class="py-op">[</tt><tt class="py-string">'KEYWORD'</tt><tt class="py-op [...]
+<a name="L642"></a><tt class="py-lineno">642</tt>  <tt class="py-line"> </tt>
+<a name="L643"></a><tt class="py-lineno">643</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">in_base_list</tt> <tt class="py-keyword">and</tt> <tt class="py-name">toktype</tt> <tt class="py-op">==</tt> <tt class="py-name">token</tt><tt class="py-op">.</tt><tt class="py-name">NAME</tt><tt class="py-op">:</tt> </tt>
+<a name="L644"></a><tt class="py-lineno">644</tt>  <tt class="py-line">                <tt class="py-name">css_class</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-64" class="py-name"><a title="epydoc.docwriter.html_colorize.PythonSourceColorizer.CSS_CLASSES" class="py-name" href="#" onclick="return doclink('link-64', 'CSS_CLASSES', 'link-9');">CSS_CLASSES</a></tt><tt class="py-op">[</tt><tt class="py-string">'BASECLASS'</tt><tt class="py- [...]
+<a name="L645"></a><tt class="py-lineno">645</tt>  <tt class="py-line"> </tt>
+<a name="L646"></a><tt class="py-lineno">646</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-op">(</tt><tt class="py-name">in_param_list</tt> <tt class="py-keyword">and</tt> <tt class="py-name">toktype</tt> <tt class="py-op">==</tt> <tt class="py-name">token</tt><tt class="py-op">.</tt><tt class="py-name">NAME</tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L647"></a><tt class="py-lineno">647</tt>  <tt class="py-line">                  <tt class="py-keyword">not</tt> <tt class="py-name">in_param_default</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L648"></a><tt class="py-lineno">648</tt>  <tt class="py-line">                <tt class="py-name">css_class</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-65" class="py-name"><a title="epydoc.docwriter.html_colorize.PythonSourceColorizer.CSS_CLASSES" class="py-name" href="#" onclick="return doclink('link-65', 'CSS_CLASSES', 'link-9');">CSS_CLASSES</a></tt><tt class="py-op">[</tt><tt class="py-string">'PARAM'</tt><tt class="py-op"> [...]
+<a name="L649"></a><tt class="py-lineno">649</tt>  <tt class="py-line"> </tt>
+<a name="L650"></a><tt class="py-lineno">650</tt>  <tt class="py-line">            <tt class="py-comment"># Class/function docstring.</tt> </tt>
+<a name="L651"></a><tt class="py-lineno">651</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">elif</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">def_name</tt> <tt class="py-keyword">and</tt> <tt class="py-name">line</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</t [...]
+<a name="L652"></a><tt class="py-lineno">652</tt>  <tt class="py-line">                  <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-66" class="py-name" targets="Method epydoc.docwriter.html_colorize.PythonSourceColorizer.is_docstring()=epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#is_docstring"><a title="epydoc.docwriter.html_colorize.PythonSourceColorizer.is_docstring" class="py-name" href="#" onclick="return doclink('link-66', 'is_docstring', 'l [...]
+<a name="L653"></a><tt class="py-lineno">653</tt>  <tt class="py-line">                <tt class="py-name">css_class</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-67" class="py-name"><a title="epydoc.docwriter.html_colorize.PythonSourceColorizer.CSS_CLASSES" class="py-name" href="#" onclick="return doclink('link-67', 'CSS_CLASSES', 'link-9');">CSS_CLASSES</a></tt><tt class="py-op">[</tt><tt class="py-string">'DOCSTRING'</tt><tt class="py- [...]
+<a name="L654"></a><tt class="py-lineno">654</tt>  <tt class="py-line"> </tt>
+<a name="L655"></a><tt class="py-lineno">655</tt>  <tt class="py-line">            <tt class="py-comment"># Module docstring.</tt> </tt>
+<a name="L656"></a><tt class="py-lineno">656</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">elif</tt> <tt class="py-name">at_module_top</tt> <tt class="py-keyword">and</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-68" class="py-name"><a title="epydoc.docwriter.html_colorize.PythonSourceColorizer.is_docstring" class="py-name" href="#" onclick="return doclink('link-68', 'is_docstring', 'link-66');">is_docstring</a></tt><tt  [...]
+<a name="L657"></a><tt class="py-lineno">657</tt>  <tt class="py-line">                <tt class="py-name">css_class</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-69" class="py-name"><a title="epydoc.docwriter.html_colorize.PythonSourceColorizer.CSS_CLASSES" class="py-name" href="#" onclick="return doclink('link-69', 'CSS_CLASSES', 'link-9');">CSS_CLASSES</a></tt><tt class="py-op">[</tt><tt class="py-string">'DOCSTRING'</tt><tt class="py- [...]
+<a name="L658"></a><tt class="py-lineno">658</tt>  <tt class="py-line"> </tt>
+<a name="L659"></a><tt class="py-lineno">659</tt>  <tt class="py-line">            <tt class="py-comment"># check for decorators??</tt> </tt>
+<a name="L660"></a><tt class="py-lineno">660</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">elif</tt> <tt class="py-op">(</tt><tt class="py-name">toktype</tt> <tt class="py-op">==</tt> <tt class="py-name">token</tt><tt class="py-op">.</tt><tt class="py-name">NAME</tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L661"></a><tt class="py-lineno">661</tt>  <tt class="py-line">                  <tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">i</tt><tt class="py-op">></tt><tt class="py-number">0</tt> <tt class="py-keyword">and</tt> <tt class="py-name">line</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class= [...]
+<a name="L662"></a><tt class="py-lineno">662</tt>  <tt class="py-line">                   <tt class="py-op">(</tt><tt class="py-name">i</tt><tt class="py-op">></tt><tt class="py-number">1</tt> <tt class="py-keyword">and</tt> <tt class="py-name">line</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">==</tt><tt clas [...]
+<a name="L663"></a><tt class="py-lineno">663</tt>  <tt class="py-line">                <tt class="py-name">css_class</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-70" class="py-name"><a title="epydoc.docwriter.html_colorize.PythonSourceColorizer.CSS_CLASSES" class="py-name" href="#" onclick="return doclink('link-70', 'CSS_CLASSES', 'link-9');">CSS_CLASSES</a></tt><tt class="py-op">[</tt><tt class="py-string">'DECORATOR'</tt><tt class="py- [...]
+<a name="L664"></a><tt class="py-lineno">664</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">has_decorators</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L665"></a><tt class="py-lineno">665</tt>  <tt class="py-line"> </tt>
+<a name="L666"></a><tt class="py-lineno">666</tt>  <tt class="py-line">            <tt class="py-comment"># If it's a name, try to link it.</tt> </tt>
+<a name="L667"></a><tt class="py-lineno">667</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">elif</tt> <tt class="py-name">toktype</tt> <tt class="py-op">==</tt> <tt class="py-name">token</tt><tt class="py-op">.</tt><tt class="py-name">NAME</tt><tt class="py-op">:</tt> </tt>
+<a name="L668"></a><tt class="py-lineno">668</tt>  <tt class="py-line">                <tt class="py-name">css_class</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-71" class="py-name"><a title="epydoc.docwriter.html_colorize.PythonSourceColorizer.CSS_CLASSES" class="py-name" href="#" onclick="return doclink('link-71', 'CSS_CLASSES', 'link-9');">CSS_CLASSES</a></tt><tt class="py-op">[</tt><tt class="py-string">'NAME'</tt><tt class="py-op">] [...]
+<a name="L669"></a><tt class="py-lineno">669</tt>  <tt class="py-line">                <tt class="py-comment"># If we have a variable named `toktext` in the current</tt> </tt>
+<a name="L670"></a><tt class="py-lineno">670</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-comment"># context, then link to that.  Note that if we're inside</tt> </tt>
+<a name="L671"></a><tt class="py-lineno">671</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-comment"># a function, then that function is our context, not</tt> </tt>
+<a name="L672"></a><tt class="py-lineno">672</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-comment"># the namespace that contains it. [xx] this isn't always</tt> </tt>
+<a name="L673"></a><tt class="py-lineno">673</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-comment"># the right thing to do.</tt> </tt>
+<a name="L674"></a><tt class="py-lineno">674</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-72" class="py-name"><a title="epydoc.docwriter.html_colorize.PythonSourceColorizer.GUESS_LINK_TARGETS" class="py-name" href="#" onclick="return doclink('link-72', 'GUESS_LINK_TARGETS', 'link-16');">GUESS_LINK_TARGETS</a></tt> <tt class="py-keyword">and</tt [...]
+<a name="L675"></a><tt class="py-lineno">675</tt>  <tt class="py-line">                    <tt class="py-keyword">and</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">url_func</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L676"></a><tt class="py-lineno">676</tt>  <tt class="py-line">                    <tt class="py-name">context</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">n</tt> <tt class="py-keyword">for</tt> <tt class="py-name">n</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">context</tt> <tt class="py-keyword">if</tt> <tt class="py-name">n</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not< [...]
+<a name="L677"></a><tt class="py-lineno">677</tt>  <tt class="py-line">                    <tt id="link-73" class="py-name" targets="Method epydoc.apidoc.DocIndex.container()=epydoc.apidoc.DocIndex-class.html#container,Method epydoc.apidoc.DottedName.container()=epydoc.apidoc.DottedName-class.html#container,Variable epydoc.apidoc.VariableDoc.container=epydoc.apidoc.VariableDoc-class.html#container"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-73', 'container', 'link-73');">container</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">docindex</tt><tt class="py-op">.</tt><tt id="link-74" class="py-name" targets="Method epydoc.apidoc.DocIndex.get_vardoc()=epydoc.apidoc.DocIndex-class.html#get_vardoc"><a title="epydoc.apidoc.DocIndex.get_vardoc" class="py-name" href="#" onclick="retur [...]
+<a name="L678"></a><tt class="py-lineno">678</tt>  <tt class="py-line">                        <tt id="link-75" class="py-name" targets="Class epydoc.apidoc.DottedName=epydoc.apidoc.DottedName-class.html"><a title="epydoc.apidoc.DottedName" class="py-name" href="#" onclick="return doclink('link-75', 'DottedName', 'link-75');">DottedName</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">module_name</tt><tt class="py-op">,</tt> <tt cla [...]
+<a name="L679"></a><tt class="py-lineno">679</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-76" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-76', 'container', 'link-73');">container</a></tt><tt class="py-op">,</tt> <tt id="link-77" class="py-name" targets="Class epydoc.apidoc.NamespaceDoc=epydoc.apidoc.NamespaceDoc-class.html"><a title="epydoc.apidoc.NamespaceDoc" class="py-name" href="#" onclick="return doclink('link-77', 'NamespaceDoc', 'link-77');">NamespaceDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L680"></a><tt class="py-lineno">680</tt>  <tt class="py-line">                        <tt class="py-name">doc</tt> <tt class="py-op">=</tt> <tt id="link-78" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-78', 'container', 'link-73');">container</a></tt><tt class="py-op">.</tt><tt id="link-79" class="py-name" targets="Variable epydoc.apidoc.NamespaceDoc.variables=epydoc.apidoc.NamespaceDoc-class.html#variables"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-79', 'variables', 'link-79');">variables</a></tt><tt class="py-op">.</tt><tt class="py- [...]
+<a name="L681"></a><tt class="py-lineno">681</tt>  <tt class="py-line">                        <tt class="py-keyword">if</tt> <tt class="py-name">doc</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L682"></a><tt class="py-lineno">682</tt>  <tt class="py-line">                            <tt id="link-80" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.url" class="py-name" href="#" onclick="return doclink('link-80', 'url', 'link-51');">url</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">url_func</tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">)</tt> </tt>
+<a name="L683"></a><tt class="py-lineno">683</tt>  <tt class="py-line">                            <tt class="py-name">tooltip</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-81" class="py-name" targets="Variable epydoc.apidoc.GenericValueDoc.canonical_name=epydoc.apidoc.GenericValueDoc-class.html#canonical_name,Variable epydoc.apidoc.ValueDoc.canonical_name=epydoc.apidoc.ValueDoc-class.htm [...]
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-81', 'canonical_name', 'link-81');">canonical_name</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L684"></a><tt class="py-lineno">684</tt>  <tt class="py-line">                <tt class="py-comment"># Otherwise, check the name_to_docs index to see what</tt> </tt>
+<a name="L685"></a><tt class="py-lineno">685</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-comment"># else this name might refer to.</tt> </tt>
+<a name="L686"></a><tt class="py-lineno">686</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt id="link-82" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.url" class="py-name" href="#" onclick="return doclink('link-82', 'url', 'link-51');">url</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><t [...]
+<a name="L687"></a><tt class="py-lineno">687</tt>  <tt class="py-line">                    <tt class="py-keyword">and</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">url_func</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L688"></a><tt class="py-lineno">688</tt>  <tt class="py-line">                    <tt class="py-name">docs</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">name_to_docs</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-name">toktext</tt><tt class="py-op">)</tt> </tt>
+<a name="L689"></a><tt class="py-lineno">689</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">docs</tt><tt class="py-op">:</tt> </tt>
+<a name="L690"></a><tt class="py-lineno">690</tt>  <tt class="py-line">                        <tt class="py-name">tooltip</tt><tt class="py-op">=</tt><tt class="py-string">'\n'</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">d</tt><tt class="py-op">.</tt><tt id="link-83" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-83', 'canonical_name', 'link-81');">canonical_name</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L691"></a><tt class="py-lineno">691</tt>  <tt class="py-line">                                           <tt class="py-keyword">for</tt> <tt class="py-name">d</tt> <tt class="py-keyword">in</tt> <tt class="py-name">docs</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L692"></a><tt class="py-lineno">692</tt>  <tt class="py-line">                        <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">docs</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt> <tt class="py-keyword">and</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-84" class="py-name"><a title="epydoc.docwriter.html_colorize.PythonSourceColorizer.GUESS_LINK_TARGETS" clas [...]
+<a name="L693"></a><tt class="py-lineno">693</tt>  <tt class="py-line">                            <tt id="link-85" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.url" class="py-name" href="#" onclick="return doclink('link-85', 'url', 'link-51');">url</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">url_func</tt><tt class="py-op">(</tt><tt class="py-name">docs</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt [...]
+<a name="L694"></a><tt class="py-lineno">694</tt>  <tt class="py-line">                        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L695"></a><tt class="py-lineno">695</tt>  <tt class="py-line">                            <tt class="py-name">uid</tt><tt class="py-op">,</tt> <tt class="py-name">onclick</tt><tt class="py-op">,</tt> <tt class="py-name">targets</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-86" class="py-name" targets="Method epydoc.docwriter.html_colorize.PythonSourceColorizer.doclink()=epydoc.docwriter.html_colorize.PythonSourceColorizer-class.h [...]
+<a name="L696"></a><tt class="py-lineno">696</tt>  <tt class="py-line"> </tt>
+<a name="L697"></a><tt class="py-lineno">697</tt>  <tt class="py-line">            <tt class="py-comment"># For all other tokens, look up the CSS class to use</tt> </tt>
+<a name="L698"></a><tt class="py-lineno">698</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># based on the token's type.</tt> </tt>
+<a name="L699"></a><tt class="py-lineno">699</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L700"></a><tt class="py-lineno">700</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">toktype</tt> <tt class="py-op">==</tt> <tt class="py-name">token</tt><tt class="py-op">.</tt><tt class="py-name">OP</tt> <tt class="py-keyword">and</tt> <tt class="py-name">toktext</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-87" class="py-name"><a title="epydoc.docwriter.html_colorize.PythonSour [...]
+<a name="L701"></a><tt class="py-lineno">701</tt>  <tt class="py-line">                    <tt class="py-name">css_class</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-88" class="py-name"><a title="epydoc.docwriter.html_colorize.PythonSourceColorizer.CSS_CLASSES" class="py-name" href="#" onclick="return doclink('link-88', 'CSS_CLASSES', 'link-9');">CSS_CLASSES</a></tt><tt class="py-op">[</tt><tt class="py-name">toktext</tt><tt class="py-op [...]
+<a name="L702"></a><tt class="py-lineno">702</tt>  <tt class="py-line">                <tt class="py-keyword">elif</tt> <tt class="py-name">token</tt><tt class="py-op">.</tt><tt class="py-name">tok_name</tt><tt class="py-op">[</tt><tt class="py-name">toktype</tt><tt class="py-op">]</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-89" class="py-name"><a title="epydoc.docwriter.html_colorize.PythonSourceColorizer.CSS_CLASSES" class="py-n [...]
+<a name="L703"></a><tt class="py-lineno">703</tt>  <tt class="py-line">                    <tt class="py-name">css_class</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-90" class="py-name"><a title="epydoc.docwriter.html_colorize.PythonSourceColorizer.CSS_CLASSES" class="py-name" href="#" onclick="return doclink('link-90', 'CSS_CLASSES', 'link-9');">CSS_CLASSES</a></tt><tt class="py-op">[</tt><tt class="py-name">token</tt><tt class="py-op"> [...]
+<a name="L704"></a><tt class="py-lineno">704</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L705"></a><tt class="py-lineno">705</tt>  <tt class="py-line">                    <tt class="py-name">css_class</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L706"></a><tt class="py-lineno">706</tt>  <tt class="py-line"> </tt>
+<a name="L707"></a><tt class="py-lineno">707</tt>  <tt class="py-line">            <tt class="py-comment"># update our status..</tt> </tt>
+<a name="L708"></a><tt class="py-lineno">708</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt class="py-name">toktext</tt> <tt class="py-op">==</tt> <tt class="py-string">':'</tt><tt class="py-op">:</tt> </tt>
+<a name="L709"></a><tt class="py-lineno">709</tt>  <tt class="py-line">                <tt class="py-name">in_base_list</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L710"></a><tt class="py-lineno">710</tt>  <tt class="py-line">                <tt class="py-name">in_param_list</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L711"></a><tt class="py-lineno">711</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">toktext</tt> <tt class="py-op">==</tt> <tt class="py-string">'='</tt> <tt class="py-keyword">and</tt> <tt class="py-name">in_param_list</tt><tt class="py-op">:</tt> </tt>
+<a name="L712"></a><tt class="py-lineno">712</tt>  <tt class="py-line">                <tt class="py-name">in_param_default</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L713"></a><tt class="py-lineno">713</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">in_param_default</tt><tt class="py-op">:</tt> </tt>
+<a name="L714"></a><tt class="py-lineno">714</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">toktext</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-string">'('</tt><tt class="py-op">,</tt><tt class="py-string">'['</tt><tt class="py-op">,</tt><tt class="py-string">'{'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-name">in_param_default</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L715"></a><tt class="py-lineno">715</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">toktext</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-string">')'</tt><tt class="py-op">,</tt><tt class="py-string">']'</tt><tt class="py-op">,</tt><tt class="py-string">'}'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-name">in_param_default</tt> <tt class="py-op">-=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L716"></a><tt class="py-lineno">716</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">toktext</tt> <tt class="py-op">==</tt> <tt class="py-string">','</tt> <tt class="py-keyword">and</tt> <tt class="py-name">in_param_default</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L717"></a><tt class="py-lineno">717</tt>  <tt class="py-line">                    <tt class="py-name">in_param_default</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L718"></a><tt class="py-lineno">718</tt>  <tt class="py-line">                 </tt>
+<a name="L719"></a><tt class="py-lineno">719</tt>  <tt class="py-line">            <tt class="py-comment"># Write this token, with appropriate colorization.</tt> </tt>
+<a name="L720"></a><tt class="py-lineno">720</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt class="py-name">tooltip</tt> <tt class="py-keyword">and</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-91" class="py-name"><a title="epydoc.docwriter.html_colorize.PythonSourceColorizer.ADD_TOOLTIPS" class="py-name" href="#" onclick="return doclink('link-91', 'ADD_TOOLTIPS', 'link-15');">ADD_TOOLTIPS</a></tt><tt class="p [...]
+<a name="L721"></a><tt class="py-lineno">721</tt>  <tt class="py-line">                <tt class="py-name">tooltip_html</tt> <tt class="py-op">=</tt> <tt class="py-string">' title="%s"'</tt> <tt class="py-op">%</tt> <tt class="py-name">tooltip</tt> </tt>
+<a name="L722"></a><tt class="py-lineno">722</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> <tt class="py-name">tooltip_html</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
+<a name="L723"></a><tt class="py-lineno">723</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">css_class</tt><tt class="py-op">:</tt> <tt class="py-name">css_class_html</tt> <tt class="py-op">=</tt> <tt class="py-string">' class="%s"'</tt> <tt class="py-op">%</tt> <tt class="py-name">css_class</tt> </tt>
+<a name="L724"></a><tt class="py-lineno">724</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> <tt class="py-name">css_class_html</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
+<a name="L725"></a><tt class="py-lineno">725</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">onclick</tt><tt class="py-op">:</tt> </tt>
+<a name="L726"></a><tt class="py-lineno">726</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">targets</tt><tt class="py-op">:</tt> <tt class="py-name">targets_html</tt> <tt class="py-op">=</tt> <tt class="py-string">' targets="%s"'</tt> <tt class="py-op">%</tt> <tt class="py-name">targets</tt> </tt>
+<a name="L727"></a><tt class="py-lineno">727</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> <tt class="py-name">targets_html</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
+<a name="L728"></a><tt class="py-lineno">728</tt>  <tt class="py-line">                <tt class="py-name">s</tt> <tt class="py-op">+=</tt> <tt class="py-op">(</tt><tt class="py-string">'<tt id="%s"%s%s><a%s%s href="#" onclick="%s">'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L729"></a><tt class="py-lineno">729</tt>  <tt class="py-line">                      <tt class="py-op">(</tt><tt class="py-name">uid</tt><tt class="py-op">,</tt> <tt class="py-name">css_class_html</tt><tt class="py-op">,</tt> <tt class="py-name">targets_html</tt><tt class="py-op">,</tt> <tt class="py-name">tooltip_html</tt><tt class="py-op">,</tt> </tt>
+<a name="L730"></a><tt class="py-lineno">730</tt>  <tt class="py-line">                       <tt class="py-name">css_class_html</tt><tt class="py-op">,</tt> <tt class="py-name">onclick</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L731"></a><tt class="py-lineno">731</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt id="link-92" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.url" class="py-name" href="#" onclick="return doclink('link-92', 'url', 'link-51');">url</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L732"></a><tt class="py-lineno">732</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-93" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.url" class="py-name" href="#" onclick="return doclink('link-93', 'url', 'link-51');">url</a></tt><tt class="py-op">,</tt> <tt class="py-name">unicode</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L733"></a><tt class="py-lineno">733</tt>  <tt class="py-line">                    <tt id="link-94" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.url" class="py-name" href="#" onclick="return doclink('link-94', 'url', 'link-51');">url</a></tt> <tt class="py-op">=</tt> <tt id="link-95" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.url" class="py-name" href="#" onclick="return doclink('link-95', 'url', 'link-51');">url</a></tt><tt class="py-op">.</tt><tt c [...]
+<a name="L734"></a><tt class="py-lineno">734</tt>  <tt class="py-line">                <tt class="py-name">s</tt> <tt class="py-op">+=</tt> <tt class="py-op">(</tt><tt class="py-string">'<a%s%s href="%s">'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L735"></a><tt class="py-lineno">735</tt>  <tt class="py-line">                      <tt class="py-op">(</tt><tt class="py-name">tooltip_html</tt><tt class="py-op">,</tt> <tt class="py-name">css_class_html</tt><tt class="py-op">,</tt> <tt id="link-96" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.url" class="py-name" href="#" onclick="return doclink('link-96', 'url', 'link-51');">url</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L736"></a><tt class="py-lineno">736</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">css_class_html</tt> <tt class="py-keyword">or</tt> <tt class="py-name">tooltip_html</tt><tt class="py-op">:</tt> </tt>
+<a name="L737"></a><tt class="py-lineno">737</tt>  <tt class="py-line">                <tt class="py-name">s</tt> <tt class="py-op">+=</tt> <tt class="py-string">'<tt%s%s>'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">tooltip_html</tt><tt class="py-op">,</tt> <tt class="py-name">css_class_html</tt><tt class="py-op">)</tt> </tt>
+<a name="L738"></a><tt class="py-lineno">738</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">i</tt> <tt class="py-op">==</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">line</tt><tt class="py-op">)</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L739"></a><tt class="py-lineno">739</tt>  <tt class="py-line">                <tt class="py-name">s</tt> <tt class="py-op">+=</tt> <tt class="py-string">' </tt>'</tt> <tt class="py-comment"># Closes <tt class="py-line"></tt> </tt>
+<a name="L740"></a><tt class="py-lineno">740</tt>  <tt class="py-line">                <tt class="py-name">s</tt> <tt class="py-op">+=</tt> <tt class="py-name">cgi</tt><tt class="py-op">.</tt><tt class="py-name">escape</tt><tt class="py-op">(</tt><tt class="py-name">toktext</tt><tt class="py-op">)</tt> </tt>
+<a name="L741"></a><tt class="py-lineno">741</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L742"></a><tt class="py-lineno">742</tt>  <tt class="py-line">                <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L743"></a><tt class="py-lineno">743</tt>  <tt class="py-line">                    <tt class="py-name">s</tt> <tt class="py-op">+=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-97" class="py-name" targets="Method epydoc.docwriter.html_colorize.PythonSourceColorizer.add_line_numbers()=epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#add_line_numbers"><a title="epydoc.docwriter.html_colorize.PythonSourceColorizer.add_line_numbers" class="py-n [...]
+<a name="L744"></a><tt class="py-lineno">744</tt>  <tt class="py-line">                <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
+<a name="L745"></a><tt class="py-lineno">745</tt>  <tt class="py-line">                    <tt class="py-keyword">print</tt> <tt class="py-op">(</tt><tt class="py-name">toktext</tt><tt class="py-op">,</tt> <tt class="py-name">css_class</tt><tt class="py-op">,</tt> <tt class="py-name">toktext</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">'ascii'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L746"></a><tt class="py-lineno">746</tt>  <tt class="py-line">                    <tt class="py-keyword">raise</tt> </tt>
+<a name="L747"></a><tt class="py-lineno">747</tt>  <tt class="py-line"> </tt>
+<a name="L748"></a><tt class="py-lineno">748</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">onclick</tt><tt class="py-op">:</tt> <tt class="py-name">s</tt> <tt class="py-op">+=</tt> <tt class="py-string">"</a></tt>"</tt> </tt>
+<a name="L749"></a><tt class="py-lineno">749</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt id="link-98" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.url" class="py-name" href="#" onclick="return doclink('link-98', 'url', 'link-51');">url</a></tt><tt class="py-op">:</tt> <tt class="py-name">s</tt> <tt class="py-op">+=</tt> <tt class="py-string">'</a>'</tt> </tt>
+<a name="L750"></a><tt class="py-lineno">750</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">css_class_html</tt> <tt class="py-keyword">or</tt> <tt class="py-name">tooltip_html</tt><tt class="py-op">:</tt> <tt class="py-name">s</tt> <tt class="py-op">+=</tt> <tt class="py-string">'</tt>'</tt> </tt>
+<a name="L751"></a><tt class="py-lineno">751</tt>  <tt class="py-line"> </tt>
+<a name="L752"></a><tt class="py-lineno">752</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-99" class="py-name"><a title="epydoc.docwriter.html_colorize.PythonSourceColorizer.ADD_DEF_BLOCKS" class="py-name" href="#" onclick="return doclink('link-99', 'ADD_DEF_BLOCKS', 'link-13');">ADD_DEF_BLOCKS</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L753"></a><tt class="py-lineno">753</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-name">ended_def_blocks</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L754"></a><tt class="py-lineno">754</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-100" class="py-name"><a title="epydoc.docwriter.html_colorize.PythonSourceColorizer.END_DEF_BLOCK" class="py-name" href="#" onclick="return doclink('link-100', 'END_DEF_BLOCK', 'link-11');">END_DEF_BLOCK</a></tt><tt class="py-op">)</t [...]
+<a name="L755"></a><tt class="py-lineno">755</tt>  <tt class="py-line"> </tt>
+<a name="L756"></a><tt class="py-lineno">756</tt>  <tt class="py-line">        <tt class="py-comment"># Strip any empty <tt>s.</tt> </tt>
+<a name="L757"></a><tt class="py-lineno">757</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt class="py-string">r'<tt class="[\w+]"></tt>'</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">,</tt> <tt class="py-name">s</tt><tt class="py-op">)</tt> </tt>
+<a name="L758"></a><tt class="py-lineno">758</tt>  <tt class="py-line"> </tt>
+<a name="L759"></a><tt class="py-lineno">759</tt>  <tt class="py-line">        <tt class="py-comment"># Write the line.</tt> </tt>
+<a name="L760"></a><tt class="py-lineno">760</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> </tt>
+<a name="L761"></a><tt class="py-lineno">761</tt>  <tt class="py-line"> </tt>
+<a name="L762"></a><tt class="py-lineno">762</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">def_name</tt> <tt class="py-keyword">and</tt> <tt class="py-name">starting_def_block</tt><tt class="py-op">:</tt> </tt>
+<a name="L763"></a><tt class="py-lineno">763</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'</div>'</tt><tt class="py-op">)</tt> </tt>
+<a name="L764"></a><tt class="py-lineno">764</tt>  <tt class="py-line"> </tt>
+<a name="L765"></a><tt class="py-lineno">765</tt>  <tt class="py-line">        <tt class="py-comment"># Add div's if we're starting a def block.</tt> </tt>
+<a name="L766"></a><tt class="py-lineno">766</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-101" class="py-name"><a title="epydoc.docwriter.html_colorize.PythonSourceColorizer.ADD_DEF_BLOCKS" class="py-name" href="#" onclick="return doclink('link-101', 'ADD_DEF_BLOCKS', 'link-13');">ADD_DEF_BLOCKS</a></tt> <tt class="py-keyword">and</tt> <tt class="py-na [...]
+<a name="L767"></a><tt class="py-lineno">767</tt>  <tt class="py-line">            <tt class="py-op">(</tt><tt class="py-name">line</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">':'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L768"></a><tt class="py-lineno">768</tt>  <tt class="py-line">            <tt class="py-name">indentation</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">''</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">indents</tt><tt class="py-op">)</tt><tt class="py-op">+</tt><tt class="py-string">'    '</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt [...]
+<a name="L769"></a><tt class="py-lineno">769</tt>  <tt class="py-line">            <tt class="py-name">linenum_padding</tt> <tt class="py-op">=</tt> <tt class="py-string">'+'</tt><tt class="py-op">*</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">linenum_size</tt> </tt>
+<a name="L770"></a><tt class="py-lineno">770</tt>  <tt class="py-line">            <tt id="link-102" class="py-name" targets="Variable epydoc.apidoc.VariableDoc.name=epydoc.apidoc.VariableDoc-class.html#name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-102', 'name', 'link-102');">name</a></tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-103" class="py-name"><a title="epydoc.docwriter.html_co [...]
+<a name="L771"></a><tt class="py-lineno">771</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-104" class="py-name"><a title="epydoc.docwriter.html_colorize.PythonSourceColorizer.START_DEF_BLOCK" class="py-name" href="#" onclick="return doclink('link-104', 'START_DEF_BLOCK', 'link-10');">START_DEF_BLOCK</a></tt> <tt class="py-op">% [...]
+<a name="L772"></a><tt class="py-lineno">772</tt>  <tt class="py-line">                                             <tt class="py-name">indentation</tt><tt class="py-op">,</tt> <tt id="link-106" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-106', 'name', 'link-102');">name</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L773"></a><tt class="py-lineno">773</tt>  <tt class="py-line">             </tt>
+<a name="L774"></a><tt class="py-lineno">774</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">def_name</tt> <tt class="py-op">=</tt> <tt class="py-name">def_name</tt> </tt>
+<a name="L775"></a><tt class="py-lineno">775</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">def_type</tt> <tt class="py-op">=</tt> <tt class="py-name">def_type</tt> </tt>
+</div><a name="L776"></a><tt class="py-lineno">776</tt>  <tt class="py-line"> </tt>
+<a name="PythonSourceColorizer.context_name"></a><div id="PythonSourceColorizer.context_name-def"><a name="L777"></a><tt class="py-lineno">777</tt> <a class="py-toggle" href="#" id="PythonSourceColorizer.context_name-toggle" onclick="return toggle('PythonSourceColorizer.context_name');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#context_name">context_name</a><tt class="py-op">(< [...]
+</div><div id="PythonSourceColorizer.context_name-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="PythonSourceColorizer.context_name-expanded"><a name="L778"></a><tt class="py-lineno">778</tt>  <tt class="py-line">        <tt class="py-name">pieces</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">n</tt> <tt class="py-keyword">for</tt> <tt class="py-name">n</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-o [...]
+<a name="L779"></a><tt class="py-lineno">779</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">extra</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> <tt class="py-name">pieces</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">extra</tt><tt class="py-op">)</tt> </tt>
+<a name="L780"></a><tt class="py-lineno">780</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">'.'</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">pieces</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L781"></a><tt class="py-lineno">781</tt>  <tt class="py-line"> </tt>
+<a name="PythonSourceColorizer.doclink"></a><div id="PythonSourceColorizer.doclink-def"><a name="L782"></a><tt class="py-lineno">782</tt> <a class="py-toggle" href="#" id="PythonSourceColorizer.doclink-toggle" onclick="return toggle('PythonSourceColorizer.doclink');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#doclink">doclink</a><tt class="py-op">(</tt><tt class="py-param">self< [...]
+</div><div id="PythonSourceColorizer.doclink-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="PythonSourceColorizer.doclink-expanded"><a name="L783"></a><tt class="py-lineno">783</tt>  <tt class="py-line">        <tt class="py-name">uid</tt> <tt class="py-op">=</tt> <tt class="py-string">'link-%s'</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-107" class="py-name"><a title="epydoc.docwriter.html_colorize.PythonSo [...]
+<a name="L784"></a><tt class="py-lineno">784</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-108" class="py-name"><a title="epydoc.docwriter.html_colorize.PythonSourceColorizer._next_uid" class="py-name" href="#" onclick="return doclink('link-108', '_next_uid', 'link-44');">_next_uid</a></tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L785"></a><tt class="py-lineno">785</tt>  <tt class="py-line">        <tt class="py-name">context</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">n</tt> <tt class="py-keyword">for</tt> <tt class="py-name">n</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">context</tt> <tt class="py-keyword">if</tt> <tt class="py-name">n</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt cla [...]
+<a name="L786"></a><tt class="py-lineno">786</tt>  <tt class="py-line">        <tt id="link-109" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-109', 'container', 'link-73');">container</a></tt> <tt class="py-op">=</tt> <tt id="link-110" class="py-name"><a title="epydoc.apidoc.DottedName" class="py-name" href="#" onclick="return doclink('link-110', 'DottedName', 'link-75');">DottedName</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">module_name</tt><tt class="py-op">,</tt> <tt class [...]
+<a name="L787"></a><tt class="py-lineno">787</tt>  <tt class="py-line">        <tt class="py-comment">#else:</tt> </tt>
+<a name="L788"></a><tt class="py-lineno">788</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#    container = None</tt> </tt>
+<a name="L789"></a><tt class="py-lineno">789</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">targets</tt> <tt class="py-op">=</tt> <tt class="py-string">','</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">'%s=%s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id= [...]
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-112', 'container', 'link-73');">container</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L790"></a><tt class="py-lineno">790</tt>  <tt class="py-line">                              <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">url_func</tt><tt class="py-op">(</tt><tt class="py-name">d</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L791"></a><tt class="py-lineno">791</tt>  <tt class="py-line">                            <tt class="py-keyword">for</tt> <tt class="py-name">d</tt> <tt class="py-keyword">in</tt> <tt class="py-name">docs</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L792"></a><tt class="py-lineno">792</tt>  <tt class="py-line"> </tt>
+<a name="L793"></a><tt class="py-lineno">793</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">targets</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">doclink_targets_cache</tt><tt class="py-op">:</tt> </tt>
+<a name="L794"></a><tt class="py-lineno">794</tt>  <tt class="py-line">            <tt class="py-name">onclick</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">"return doclink('%s', '%s', '%s');"</tt> <tt class="py-op">%</tt> </tt>
+<a name="L795"></a><tt class="py-lineno">795</tt>  <tt class="py-line">                       <tt class="py-op">(</tt><tt class="py-name">uid</tt><tt class="py-op">,</tt> <tt id="link-113" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-113', 'name', 'link-102');">name</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">doclink_targets_cache</tt><tt class="py-op">[</tt>< [...]
+<a name="L796"></a><tt class="py-lineno">796</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">uid</tt><tt class="py-op">,</tt> <tt class="py-name">onclick</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt> </tt>
+<a name="L797"></a><tt class="py-lineno">797</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L798"></a><tt class="py-lineno">798</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">doclink_targets_cache</tt><tt class="py-op">[</tt><tt class="py-name">targets</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">uid</tt> </tt>
+<a name="L799"></a><tt class="py-lineno">799</tt>  <tt class="py-line">            <tt class="py-name">onclick</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">"return doclink('%s', '%s', '%s');"</tt> <tt class="py-op">%</tt> </tt>
+<a name="L800"></a><tt class="py-lineno">800</tt>  <tt class="py-line">                       <tt class="py-op">(</tt><tt class="py-name">uid</tt><tt class="py-op">,</tt> <tt id="link-114" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-114', 'name', 'link-102');">name</a></tt><tt class="py-op">,</tt> <tt class="py-name">uid</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L801"></a><tt class="py-lineno">801</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">uid</tt><tt class="py-op">,</tt> <tt class="py-name">onclick</tt><tt class="py-op">,</tt> <tt class="py-name">targets</tt> </tt>
+</div><a name="L802"></a><tt class="py-lineno">802</tt>  <tt class="py-line">             </tt>
+<a name="PythonSourceColorizer.doc_descr"></a><div id="PythonSourceColorizer.doc_descr-def"><a name="L803"></a><tt class="py-lineno">803</tt> <a class="py-toggle" href="#" id="PythonSourceColorizer.doc_descr-toggle" onclick="return toggle('PythonSourceColorizer.doc_descr');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#doc_descr">doc_descr</a><tt class="py-op">(</tt><tt class="py- [...]
+</div><div id="PythonSourceColorizer.doc_descr-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="PythonSourceColorizer.doc_descr-expanded"><a name="L804"></a><tt class="py-lineno">804</tt>  <tt class="py-line">        <tt id="link-115" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-115', 'name', 'link-102');">name</a></tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</t [...]
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-116', 'canonical_name', 'link-81');">canonical_name</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L805"></a><tt class="py-lineno">805</tt>  <tt class="py-line">        <tt id="link-117" class="py-name" targets="Variable epydoc.apidoc.APIDoc.descr=epydoc.apidoc.APIDoc-class.html#descr,Variable epydoc.cli.descr=epydoc.cli-module.html#descr,Method epydoc.docwriter.html.HTMLWriter.descr()=epydoc.docwriter.html.HTMLWriter-class.html#descr,Method epydoc.markup.ParseError.descr()=epydoc.markup.ParseError-class.html#descr,Method epydoc.markup.epytext.ColorizingError.descr()=epydoc.m [...]
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-117', 'descr', 'link-117');">descr</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'%s %s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-118" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.doc_kind()=epydoc.docwriter.html.HTMLWriter-class.html#doc_kind,Method epydoc.docwriter.html_colorize.P [...]
+epydoc.docwriter.html_colorize.PythonSourceColorizer.doc_kind
+epydoc.docwriter.latex.LatexWriter.doc_kind" class="py-name" href="#" onclick="return doclink('link-118', 'doc_kind', 'link-118');">doc_kind</a></tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt id="link-119" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-119', 'name', 'link-102');">name</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L806"></a><tt class="py-lineno">806</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt id="link-120" class="py-name" targets="Class epydoc.apidoc.RoutineDoc=epydoc.apidoc.RoutineDoc-class.html"><a title="epydoc.apidoc.RoutineDoc" class="py-name" href="#" onclick="return doclink('link-120', 'RoutineDoc', 'link-120');">RoutineDoc</a></tt><tt class="py-o [...]
+<a name="L807"></a><tt class="py-lineno">807</tt>  <tt class="py-line">            <tt id="link-121" class="py-name"><a title="epydoc.apidoc.APIDoc.descr
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-121', 'descr', 'link-117');">descr</a></tt> <tt class="py-op">+=</tt> <tt class="py-string">'()'</tt> </tt>
+<a name="L808"></a><tt class="py-lineno">808</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-122" class="py-name"><a title="epydoc.apidoc.APIDoc.descr
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-122', 'descr', 'link-117');">descr</a></tt> </tt>
+</div><a name="L809"></a><tt class="py-lineno">809</tt>  <tt class="py-line"> </tt>
+<a name="L810"></a><tt class="py-lineno">810</tt>  <tt class="py-line">    <tt class="py-comment"># [XX] copied streight from html.py; this should be consolidated,</tt> </tt>
+<a name="L811"></a><tt class="py-lineno">811</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># probably into apidoc.</tt> </tt>
+<a name="PythonSourceColorizer.doc_kind"></a><div id="PythonSourceColorizer.doc_kind-def"><a name="L812"></a><tt class="py-lineno">812</tt> <a class="py-toggle" href="#" id="PythonSourceColorizer.doc_kind-toggle" onclick="return toggle('PythonSourceColorizer.doc_kind');">-</a><tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#doc_kind">doc_kind</a><tt class="py-op [...]
+</div><div id="PythonSourceColorizer.doc_kind-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="PythonSourceColorizer.doc_kind-expanded"><a name="L813"></a><tt class="py-lineno">813</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt id="link-123" class="py-name" targets="Class epydoc.apidoc.ModuleDoc=epydoc.apidoc.ModuleDoc-class.html [...]
+<a name="L814"></a><tt class="py-lineno">814</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">'Package'</tt> </tt>
+<a name="L815"></a><tt class="py-lineno">815</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-op">(</tt><tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt id="link-125" class="py-name"><a title="epydoc.apidoc.ModuleDoc" class="py-name" href="#" onclick="return doclink('link-125', 'ModuleDoc', 'link-123');">ModuleDoc</a></tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L816"></a><tt class="py-lineno">816</tt>  <tt class="py-line">              <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-126" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-126', 'canonical_name', 'link-81');">canonical_name</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">startswith</tt><tt class="py-op">(</tt><tt class="py-string">'script'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L817"></a><tt class="py-lineno">817</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">'Script'</tt> </tt>
+<a name="L818"></a><tt class="py-lineno">818</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt id="link-127" class="py-name"><a title="epydoc.apidoc.ModuleDoc" class="py-name" href="#" onclick="return doclink('link-127', 'ModuleDoc', 'link-123');">ModuleDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L819"></a><tt class="py-lineno">819</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">'Module'</tt> </tt>
+<a name="L820"></a><tt class="py-lineno">820</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt id="link-128" class="py-name" targets="Class epydoc.apidoc.ClassDoc=epydoc.apidoc.ClassDoc-class.html"><a title="epydoc.apidoc.ClassDoc" class="py-name" href="#" onclick="return doclink('link-128', 'ClassDoc', 'link-128');">ClassDoc</a></tt><tt class="py-op">)</tt [...]
+<a name="L821"></a><tt class="py-lineno">821</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">'Class'</tt> </tt>
+<a name="L822"></a><tt class="py-lineno">822</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt id="link-129" class="py-name" targets="Class epydoc.apidoc.ClassMethodDoc=epydoc.apidoc.ClassMethodDoc-class.html"><a title="epydoc.apidoc.ClassMethodDoc" class="py-name" href="#" onclick="return doclink('link-129', 'ClassMethodDoc', 'link-129');">ClassMethodDoc</ [...]
+<a name="L823"></a><tt class="py-lineno">823</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">'Class Method'</tt> </tt>
+<a name="L824"></a><tt class="py-lineno">824</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt id="link-130" class="py-name" targets="Class epydoc.apidoc.StaticMethodDoc=epydoc.apidoc.StaticMethodDoc-class.html"><a title="epydoc.apidoc.StaticMethodDoc" class="py-name" href="#" onclick="return doclink('link-130', 'StaticMethodDoc', 'link-130');">StaticMethod [...]
+<a name="L825"></a><tt class="py-lineno">825</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">'Static Method'</tt> </tt>
+<a name="L826"></a><tt class="py-lineno">826</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt id="link-131" class="py-name"><a title="epydoc.apidoc.RoutineDoc" class="py-name" href="#" onclick="return doclink('link-131', 'RoutineDoc', 'link-120');">RoutineDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L827"></a><tt class="py-lineno">827</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">docindex</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L828"></a><tt class="py-lineno">828</tt>  <tt class="py-line">                <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">docindex</tt><tt class="py-op">.</tt><tt id="link-132" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-132', 'container', 'link-73');">container</a></tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt id="link-133" class="py-name"><a title="epydoc.apidoc.ClassDoc" class="py-name" href="#" onclick="return doclink('link-133', 'ClassDoc', 'link-128');">ClassDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L829"></a><tt class="py-lineno">829</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-string">'Method'</tt> </tt>
+<a name="L830"></a><tt class="py-lineno">830</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L831"></a><tt class="py-lineno">831</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-string">'Function'</tt> </tt>
+<a name="L832"></a><tt class="py-lineno">832</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L833"></a><tt class="py-lineno">833</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">'Variable'</tt> </tt>
+</div><a name="L834"></a><tt class="py-lineno">834</tt>  <tt class="py-line"> </tt>
+<a name="PythonSourceColorizer.mark_def"></a><div id="PythonSourceColorizer.mark_def-def"><a name="L835"></a><tt class="py-lineno">835</tt> <a class="py-toggle" href="#" id="PythonSourceColorizer.mark_def-toggle" onclick="return toggle('PythonSourceColorizer.mark_def');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#mark_def">mark_def</a><tt class="py-op">(</tt><tt class="py-param" [...]
+</div><div id="PythonSourceColorizer.mark_def-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="PythonSourceColorizer.mark_def-expanded"><a name="L836"></a><tt class="py-lineno">836</tt>  <tt class="py-line">        <tt class="py-name">replacement</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">'<a name="%s"></a><div id="%s-def">\\1'</tt> </tt>
+<a name="L837"></a><tt class="py-lineno">837</tt>  <tt class="py-line">                       <tt class="py-string">'<a class="py-toggle" href="#" id="%s-toggle" '</tt> </tt>
+<a name="L838"></a><tt class="py-lineno">838</tt>  <tt class="py-line">                       <tt class="py-string">'onclick="return toggle(\'%s\');">-</a>\\2'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L839"></a><tt class="py-lineno">839</tt>  <tt class="py-line">                       <tt class="py-op">(</tt><tt id="link-134" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-134', 'name', 'link-102');">name</a></tt><tt class="py-op">,</tt> <tt id="link-135" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-135', 'name', 'link-102');">name</a></tt><tt c [...]
+<a name="L840"></a><tt class="py-lineno">840</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt class="py-string">'(.*) (<tt class="py-line">.*)\Z'</tt><tt class="py-op">,</tt> <tt class="py-name">replacement</tt><tt class="py-op">,</tt> <tt class="py-name">s</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L841"></a><tt class="py-lineno">841</tt>  <tt class="py-line">                     </tt>
+<a name="PythonSourceColorizer.is_docstring"></a><div id="PythonSourceColorizer.is_docstring-def"><a name="L842"></a><tt class="py-lineno">842</tt> <a class="py-toggle" href="#" id="PythonSourceColorizer.is_docstring-toggle" onclick="return toggle('PythonSourceColorizer.is_docstring');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#is_docstring">is_docstring</a><tt class="py-op">(< [...]
+</div><div id="PythonSourceColorizer.is_docstring-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="PythonSourceColorizer.is_docstring-expanded"><a name="L843"></a><tt class="py-lineno">843</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">line</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">!=</tt> <tt c [...]
+<a name="L844"></a><tt class="py-lineno">844</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">toktype</tt><tt class="py-op">,</tt> <tt class="py-name">toktext</tt> <tt class="py-keyword">in</tt> <tt class="py-name">line</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L845"></a><tt class="py-lineno">845</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">toktype</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">token</tt><tt class="py-op">.</tt><tt class="py-name">NEWLINE</tt><tt class="py-op">,</tt> <tt class="py-name">tokenize</tt><tt class="py-op">.</tt><tt class="py-name">COMMENT</tt><tt class="py-op">,</tt> </tt>
+<a name="L846"></a><tt class="py-lineno">846</tt>  <tt class="py-line">                               <tt class="py-name">tokenize</tt><tt class="py-op">.</tt><tt class="py-name">NL</tt><tt class="py-op">,</tt> <tt class="py-name">token</tt><tt class="py-op">.</tt><tt class="py-name">STRING</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L847"></a><tt class="py-lineno">847</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
+<a name="L848"></a><tt class="py-lineno">848</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
+</div><a name="L849"></a><tt class="py-lineno">849</tt>  <tt class="py-line">                                </tt>
+<a name="PythonSourceColorizer.add_line_numbers"></a><div id="PythonSourceColorizer.add_line_numbers-def"><a name="L850"></a><tt class="py-lineno">850</tt> <a class="py-toggle" href="#" id="PythonSourceColorizer.add_line_numbers-toggle" onclick="return toggle('PythonSourceColorizer.add_line_numbers');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#add_line_numbers">add_line_numbers [...]
+</div><div id="PythonSourceColorizer.add_line_numbers-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="PythonSourceColorizer.add_line_numbers-expanded"><a name="L851"></a><tt class="py-lineno">851</tt>  <tt class="py-line">        <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
+<a name="L852"></a><tt class="py-lineno">852</tt>  <tt class="py-line">        <tt class="py-name">start</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L853"></a><tt class="py-lineno">853</tt>  <tt class="py-line">        <tt class="py-name">end</tt> <tt class="py-op">=</tt> <tt class="py-name">s</tt><tt class="py-op">.</tt><tt id="link-138" class="py-name"><a title="epydoc.apidoc.DocIndex.find" class="py-name" href="#" onclick="return doclink('link-138', 'find', 'link-19');">find</a></tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">)</tt><tt class="py-op">+</tt><tt class="py-number">1</tt> </tt>
+<a name="L854"></a><tt class="py-lineno">854</tt>  <tt class="py-line">        <tt class="py-keyword">while</tt> <tt class="py-name">end</tt><tt class="py-op">:</tt> </tt>
+<a name="L855"></a><tt class="py-lineno">855</tt>  <tt class="py-line">            <tt class="py-name">result</tt> <tt class="py-op">+=</tt> <tt class="py-name">s</tt><tt class="py-op">[</tt><tt class="py-name">start</tt><tt class="py-op">:</tt><tt class="py-name">end</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L856"></a><tt class="py-lineno">856</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">css_class</tt><tt class="py-op">:</tt> <tt class="py-name">result</tt> <tt class="py-op">+=</tt> <tt class="py-string">'</tt>'</tt> </tt>
+<a name="L857"></a><tt class="py-lineno">857</tt>  <tt class="py-line">            <tt class="py-name">result</tt> <tt class="py-op">+=</tt> <tt class="py-string">' </tt>'</tt> <tt class="py-comment"># py-line</tt> </tt>
+<a name="L858"></a><tt class="py-lineno">858</tt>  <tt class="py-line">            <tt class="py-name">result</tt> <tt class="py-op">+=</tt> <tt class="py-string">'\n'</tt> </tt>
+<a name="L859"></a><tt class="py-lineno">859</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-139" class="py-name"><a title="epydoc.docwriter.html_colorize.PythonSourceColorizer.ADD_LINE_NUMBERS" class="py-name" href="#" onclick="return doclink('link-139', 'ADD_LINE_NUMBERS', 'link-14');">ADD_LINE_NUMBERS</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L860"></a><tt class="py-lineno">860</tt>  <tt class="py-line">                <tt class="py-name">result</tt> <tt class="py-op">+=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-140" class="py-name"><a title="epydoc.docwriter.html_colorize.PythonSourceColorizer.lineno_to_html" class="py-name" href="#" onclick="return doclink('link-140', 'lineno_to_html', 'link-47');">lineno_to_html</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L861"></a><tt class="py-lineno">861</tt>  <tt class="py-line">            <tt class="py-name">result</tt> <tt class="py-op">+=</tt> <tt class="py-string">'  <tt class="py-line">'</tt> </tt>
+<a name="L862"></a><tt class="py-lineno">862</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">css_class</tt><tt class="py-op">:</tt> <tt class="py-name">result</tt> <tt class="py-op">+=</tt> <tt class="py-string">'<tt class="%s">'</tt> <tt class="py-op">%</tt> <tt class="py-name">css_class</tt> </tt>
+<a name="L863"></a><tt class="py-lineno">863</tt>  <tt class="py-line">            <tt class="py-name">start</tt> <tt class="py-op">=</tt> <tt class="py-name">end</tt> </tt>
+<a name="L864"></a><tt class="py-lineno">864</tt>  <tt class="py-line">            <tt class="py-name">end</tt> <tt class="py-op">=</tt> <tt class="py-name">s</tt><tt class="py-op">.</tt><tt id="link-141" class="py-name"><a title="epydoc.apidoc.DocIndex.find" class="py-name" href="#" onclick="return doclink('link-141', 'find', 'link-19');">find</a></tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">,</tt> <tt class="py-name">end</tt><tt class="py-op">)</tt><tt c [...]
+<a name="L865"></a><tt class="py-lineno">865</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-142" class="py-name"><a title="epydoc.apidoc.RoutineDoc.lineno" class="py-name" href="#" onclick="return doclink('link-142', 'lineno', 'link-18');">lineno</a></tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L866"></a><tt class="py-lineno">866</tt>  <tt class="py-line">        <tt class="py-name">result</tt> <tt class="py-op">+=</tt> <tt class="py-name">s</tt><tt class="py-op">[</tt><tt class="py-name">start</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt>
+<a name="L867"></a><tt class="py-lineno">867</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">result</tt> </tt>
+</div><a name="L868"></a><tt class="py-lineno">868</tt>  <tt class="py-line"> </tt>
+<a name="PythonSourceColorizer.name2url"></a><div id="PythonSourceColorizer.name2url-def"><a name="L869"></a><tt class="py-lineno">869</tt> <a class="py-toggle" href="#" id="PythonSourceColorizer.name2url-toggle" onclick="return toggle('PythonSourceColorizer.name2url');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#name2url">name2url</a><tt class="py-op">(</tt><tt class="py-param" [...]
+</div><div id="PythonSourceColorizer.name2url-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="PythonSourceColorizer.name2url-expanded"><a name="L870"></a><tt class="py-lineno">870</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">class_name</tt><tt class="py-op">:</tt> </tt>
+<a name="L871"></a><tt class="py-lineno">871</tt>  <tt class="py-line">            <tt class="py-name">class_name</tt> <tt class="py-op">=</tt> <tt class="py-string">'%s.%s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">module_name</tt><tt class="py-op">,</tt> <tt class="py-name">class_name</tt><tt class="py-op">)</tt> </tt>
+<a name="L872"></a><tt class="py-lineno">872</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">func_name</tt><tt class="py-op">:</tt> </tt>
+<a name="L873"></a><tt class="py-lineno">873</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-string">'%s-class.html#%s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">class_name</tt><tt class="py-op">,</tt> <tt class="py-name">func_name</tt><tt class="py-op">)</tt> </tt>
+<a name="L874"></a><tt class="py-lineno">874</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L875"></a><tt class="py-lineno">875</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-string">'%s-class.html'</tt> <tt class="py-op">%</tt> <tt class="py-name">class_name</tt> </tt>
+<a name="L876"></a><tt class="py-lineno">876</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L877"></a><tt class="py-lineno">877</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">'%s-module.html#%s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">module_name</tt><tt class="py-op">,</tt> <tt class="py-name">func_name</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L878"></a><tt class="py-lineno">878</tt>  <tt class="py-line"> </tt>
+<a name="L879"></a><tt class="py-lineno">879</tt>  <tt class="py-line">    <tt class="py-comment">#: A regexp used to move the <div> that marks the beginning of a</tt> </tt>
+<a name="L880"></a><tt class="py-lineno">880</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#: function or method to just before the decorators.</tt> </tt>
+<a name="L881"></a><tt class="py-lineno">881</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-143" class="py-name"><a title="epydoc.docwriter.html_colorize.PythonSourceColorizer._FIX_DECORATOR_RE" class="py-name" href="#" onclick="return doclink('link-143', '_FIX_DECORATOR_RE', 'link-32');">_FIX_DECORATOR_RE</a></tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">compile</tt><tt class="py-op">(</tt> </tt>
+<a name="L882"></a><tt class="py-lineno">882</tt>  <tt class="py-line">        <tt class="py-string">r'((?:^<a name="L\d+"></a><tt class="py-lineno">\s*\d+</tt>'</tt> </tt>
+<a name="L883"></a><tt class="py-lineno">883</tt>  <tt class="py-line">        <tt class="py-string">r'\s*<tt class="py-line">(?:<tt class="py-decorator">.*|\s*</tt>|'</tt> </tt>
+<a name="L884"></a><tt class="py-lineno">884</tt>  <tt class="py-line">        <tt class="py-string">r'\s*<tt class="py-comment">.*)\n)+)'</tt> </tt>
+<a name="L885"></a><tt class="py-lineno">885</tt>  <tt class="py-line">        <tt class="py-string">r'(<a name="\w+"></a><div id="\w+-def">)'</tt><tt class="py-op">,</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">MULTILINE</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L886"></a><tt class="py-lineno">886</tt>  <tt class="py-line">     </tt>
+<a name="L887"></a><tt class="py-lineno">887</tt>  <tt class="py-line"><tt id="link-144" class="py-name" targets="Variable epydoc.docwriter.html_colorize._HDR=epydoc.docwriter.html_colorize-module.html#_HDR"><a title="epydoc.docwriter.html_colorize._HDR" class="py-name" href="#" onclick="return doclink('link-144', '_HDR', 'link-144');">_HDR</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'''\</tt> </tt>
+<a name="L888"></a><tt class="py-lineno">888</tt>  <tt class="py-line"><tt class="py-string"><?xml version="1.0" encoding="ascii"?></tt> </tt>
+<a name="L889"></a><tt class="py-lineno">889</tt>  <tt class="py-line"><tt class="py-string">        <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"</tt> </tt>
+<a name="L890"></a><tt class="py-lineno">890</tt>  <tt class="py-line"><tt class="py-string">                  "DTD/xhtml1-transitional.dtd"></tt> </tt>
+<a name="L891"></a><tt class="py-lineno">891</tt>  <tt class="py-line"><tt class="py-string">        <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"></tt> </tt>
+<a name="L892"></a><tt class="py-lineno">892</tt>  <tt class="py-line"><tt class="py-string">        <head></tt> </tt>
+<a name="L893"></a><tt class="py-lineno">893</tt>  <tt class="py-line"><tt class="py-string">          <title>$title$</title></tt> </tt>
+<a name="L894"></a><tt class="py-lineno">894</tt>  <tt class="py-line"><tt class="py-string">          <link rel="stylesheet" href="epydoc.css" type="text/css" /></tt> </tt>
+<a name="L895"></a><tt class="py-lineno">895</tt>  <tt class="py-line"><tt class="py-string">          <script type="text/javascript" src="epydoc.js"></script></tt> </tt>
+<a name="L896"></a><tt class="py-lineno">896</tt>  <tt class="py-line"><tt class="py-string">        </head></tt> </tt>
+<a name="L897"></a><tt class="py-lineno">897</tt>  <tt class="py-line"><tt class="py-string">        </tt> </tt>
+<a name="L898"></a><tt class="py-lineno">898</tt>  <tt class="py-line"><tt class="py-string">        <body bgcolor="white" text="black" link="blue" vlink="#204080"</tt> </tt>
+<a name="L899"></a><tt class="py-lineno">899</tt>  <tt class="py-line"><tt class="py-string">              alink="#204080"></tt> </tt>
+<a name="L900"></a><tt class="py-lineno">900</tt>  <tt class="py-line"><tt class="py-string">'''</tt> </tt>
+<a name="L901"></a><tt class="py-lineno">901</tt>  <tt class="py-line"><tt id="link-145" class="py-name" targets="Variable epydoc.docwriter.html_colorize._FOOT=epydoc.docwriter.html_colorize-module.html#_FOOT"><a title="epydoc.docwriter.html_colorize._FOOT" class="py-name" href="#" onclick="return doclink('link-145', '_FOOT', 'link-145');">_FOOT</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'</body></html>'</tt> </tt>
+<a name="L902"></a><tt class="py-lineno">902</tt>  <tt class="py-line"><tt class="py-keyword">if</tt> <tt class="py-name">__name__</tt><tt class="py-op">==</tt><tt class="py-string">'__main__'</tt><tt class="py-op">:</tt> </tt>
+<a name="L903"></a><tt class="py-lineno">903</tt>  <tt class="py-line">    <tt class="py-comment">#s = PythonSourceColorizer('../apidoc.py', 'epydoc.apidoc').colorize()</tt> </tt>
+<a name="L904"></a><tt class="py-lineno">904</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt id="link-146" class="py-name" targets="Class epydoc.docwriter.html_colorize.PythonSourceColorizer=epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html"><a title="epydoc.docwriter.html_colorize.PythonSourceColorizer" class="py-name" href="#" onclick="return doclink('link-146', 'PythonSourceColorizer', 'link-146');">Python [...]
+epydoc.markup.pyval_repr.PyvalColorizer.colorize" class="py-name" href="#" onclick="return doclink('link-147', 'colorize', 'link-147');">colorize</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L905"></a><tt class="py-lineno">905</tt>  <tt class="py-line">    <tt class="py-comment">#print s</tt> </tt>
+<a name="L906"></a><tt class="py-lineno">906</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">import</tt> <tt class="py-name">codecs</tt> </tt>
+<a name="L907"></a><tt class="py-lineno">907</tt>  <tt class="py-line">    <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">codecs</tt><tt class="py-op">.</tt><tt id="link-148" class="py-name"><a title="epydoc.gui.EpydocGUI.open" class="py-name" href="#" onclick="return doclink('link-148', 'open', 'link-24');">open</a></tt><tt class="py-op">(</tt><tt class="py-string">'/home/edloper/public_html/color3.html'</tt><tt class="py-op">,</tt> <tt class="py-string">'w'</tt [...]
+<a name="L908"></a><tt class="py-lineno">908</tt>  <tt class="py-line">    <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-149" class="py-name"><a title="epydoc.docintrospecter._DevNull.write
+epydoc.docwriter.dotgraph.DotGraph.write
+epydoc.docwriter.html.HTMLWriter.write
+epydoc.docwriter.latex.LatexWriter.write
+epydoc.docwriter.plaintext.PlaintextWriter.write" class="py-name" href="#" onclick="return doclink('link-149', 'write', 'link-27');">write</a></tt><tt class="py-op">(</tt><tt id="link-150" class="py-name"><a title="epydoc.docwriter.html_colorize._HDR" class="py-name" href="#" onclick="return doclink('link-150', '_HDR', 'link-144');">_HDR</a></tt><tt class="py-op">+</tt><tt class="py-string">'<pre id="py-src-top" class="py-src">'</tt><tt class="py-op">+</tt><tt class="py-name">s</tt [...]
+<a name="L909"></a><tt class="py-lineno">909</tt>  <tt class="py-line">    <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-152" class="py-name" targets="Method epydoc.cli.HTMLLogger.close()=epydoc.cli.HTMLLogger-class.html#close,Method epydoc.docintrospecter._DevNull.close()=epydoc.docintrospecter._DevNull-class.html#close,Method epydoc.log.Logger.close()=epydoc.log.Logger-class.html#close,Function epydoc.log.close()=epydoc.log-module.html#close"><a title="epydoc.cli.HTMLL [...]
+epydoc.docintrospecter._DevNull.close
+epydoc.log.Logger.close
+epydoc.log.close" class="py-name" href="#" onclick="return doclink('link-152', 'close', 'link-152');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L910"></a><tt class="py-lineno">910</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:09:44 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html b/doc/api/epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html
new file mode 100644
index 0000000..d5a9fb3
--- /dev/null
+++ b/doc/api/epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html
@@ -0,0 +1,1285 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.docwriter.html_colorize.PythonSourceColorizer</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.docwriter-module.html">Package docwriter</a> ::
+        <a href="epydoc.docwriter.html_colorize-module.html">Module html_colorize</a> ::
+        Class PythonSourceColorizer
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class PythonSourceColorizer</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.docwriter.html_colorize-pysrc.html#PythonSourceColorizer">source code</a></span></p>
+<p>A class that renders a python module's source code into HTML pages.  
+  These HTML pages are intended to be provided along with the API 
+  documentation for a module, in case a user wants to learn more about a 
+  particular object by examining its source code. Links are therefore 
+  generated from the API documentation to the source code pages, and from 
+  the source code pages back into the API documentation.</p>
+  <p>The HTML generated by <code>PythonSourceColorizer</code> has several 
+  notable features:</p>
+  <ul>
+    <li>
+      CSS styles are used to color tokens according to their type. (See <a 
+      href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#CSS_CLASSES"
+      class="link">CSS_CLASSES</a> for a list of the different token types 
+      that are identified).
+    </li>
+    <li>
+      Line numbers are included to the left of each line.
+    </li>
+    <li>
+      The first line of each class and function definition includes a link 
+      to the API source documentation for that object.
+    </li>
+    <li>
+      The first line of each class and function definition includes an 
+      anchor that can be used to link directly to that class or function.
+    </li>
+    <li>
+      If javascript is enabled, and the page is loaded using the anchor for
+      a class or function (i.e., if the url ends in 
+      <code>'#<i><name></i>'</code>), then that class or function 
+      will automatically be highlighted; and all other classes and function
+      definition blocks will be 'collapsed'.  These collapsed blocks can be
+      expanded by clicking on them.
+    </li>
+    <li>
+      Unicode input is supported (including automatic detection of 
+      <code>'coding:'</code> declarations).
+    </li>
+  </ul>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">module_filename</span>,
+        <span class="summary-sig-arg">module_name</span>,
+        <span class="summary-sig-arg">docindex</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">url_func</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">name_to_docs</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">tab_width</span>=<span class="summary-sig-default">8</span>)</span><br />
+      Create a new HTML colorizer for the specified module.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html_colorize-pysrc.html#PythonSourceColorizer.__init__">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for___init___23-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for___init___23-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for___init___23" name="call_graph_for___init___23">
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_sourcecode" title="html.HTMLWriter.write_sourcecode()" alt="" coords="6,6,318,38" />
+<area shape="rect" href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#__init__" title="__init__()" alt="" coords="367,6,463,38" />
+<area shape="rect" href="epydoc.util-module.html#py_src_filename" title="util.py_src_filename()" alt="" coords="512,6,702,38" />
+</map>
+  <img src="call_graph_for___init___23.gif" alt='' usemap="#call_graph_for___init___23" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="find_line_offsets"></a><span class="summary-sig-name">find_line_offsets</span>(<span class="summary-sig-arg">self</span>)</span><br />
+      Construct the <a 
+      href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#line_offsets"
+      class="link">line_offsets</a> table from <code>self.text</code>.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html_colorize-pysrc.html#PythonSourceColorizer.find_line_offsets">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_find_line_offse-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_find_line_offse-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_find_line_offse" name="call_graph_for_find_line_offse">
+<area shape="rect" href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#colorize" title="colorize()" alt="" coords="7,6,100,38" />
+<area shape="rect" href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#find_line_offsets" title="find_line_offsets()" alt="" coords="150,6,310,38" />
+</map>
+  <img src="call_graph_for_find_line_offse.gif" alt='' usemap="#call_graph_for_find_line_offse" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="lineno_to_html"></a><span class="summary-sig-name">lineno_to_html</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html_colorize-pysrc.html#PythonSourceColorizer.lineno_to_html">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_lineno_to_html-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_lineno_to_html-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_lineno_to_html" name="call_graph_for_lineno_to_html">
+<area shape="rect" href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#add_line_numbers" title="add_line_numbers()" alt="" coords="7,6,177,38" />
+<area shape="rect" href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#lineno_to_html" title="lineno_to_html()" alt="" coords="228,34,375,66" />
+<area shape="rect" href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#handle_line" title="handle_line()" alt="" coords="31,62,153,94" />
+</map>
+  <img src="call_graph_for_lineno_to_html.gif" alt='' usemap="#call_graph_for_lineno_to_html" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="colorize"></a><span class="summary-sig-name">colorize</span>(<span class="summary-sig-arg">self</span>)</span><br />
+      Return an HTML string that renders the source code for the module 
+      that was specified in the constructor.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html_colorize-pysrc.html#PythonSourceColorizer.colorize">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_colorize-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_colorize-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_colorize" name="call_graph_for_colorize">
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_sourcecode" title="html.HTMLWriter.write_sourcecode()" alt="" coords="6,6,318,38" />
+<area shape="rect" href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#colorize" title="colorize()" alt="" coords="367,6,460,38" />
+<area shape="rect" href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#find_line_offsets" title="find_line_offsets()" alt="" coords="510,6,670,38" />
+</map>
+  <img src="call_graph_for_colorize.gif" alt='' usemap="#call_graph_for_colorize" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#tokeneater" class="summary-sig-name">tokeneater</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">toktype</span>,
+        <span class="summary-sig-arg">toktext</span>,
+        <span class="summary-sig-arg">(srow, scol)</span>,
+        <span class="summary-sig-arg">(erow, ecol)</span>,
+        <span class="summary-sig-arg">line</span>)</span><br />
+      A callback function used by <code>tokenize.tokenize</code> to handle 
+      each token in the module.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html_colorize-pysrc.html#PythonSourceColorizer.tokeneater">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_tokeneater-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_tokeneater-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_tokeneater" name="call_graph_for_tokeneater">
+<area shape="rect" href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#handle_line" title="handle_line()" alt="" coords="165,6,288,38" />
+<area shape="rect" href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#tokeneater" title="tokeneater()" alt="" coords="5,6,117,38" />
+</map>
+  <img src="call_graph_for_tokeneater.gif" alt='' usemap="#call_graph_for_tokeneater" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#handle_line" class="summary-sig-name">handle_line</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">line</span>)</span><br />
+      Render a single logical line from the module, and write the generated
+      HTML to <code>self.out</code>.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html_colorize-pysrc.html#PythonSourceColorizer.handle_line">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_handle_line-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_handle_line-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_handle_line" name="call_graph_for_handle_line">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__str__" title="apidoc.DottedName.__str__()" alt="" coords="338,6,580,38" />
+<area shape="rect" href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#add_line_numbers" title="add_line_numbers()" alt="" coords="374,62,544,94" />
+<area shape="rect" href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#context_name" title="context_name()" alt="" coords="390,118,528,150" />
+<area shape="rect" href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#doclink" title="doclink()" alt="" coords="414,174,504,206" />
+<area shape="rect" href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#handle_line" title="handle_line()" alt="" coords="166,202,288,234" />
+<area shape="rect" href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#is_docstring" title="is_docstring()" alt="" coords="396,230,522,262" />
+<area shape="rect" href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#lineno_to_html" title="lineno_to_html()" alt="" coords="386,286,532,318" />
+<area shape="rect" href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#mark_def" title="mark_def()" alt="" coords="407,342,511,374" />
+<area shape="rect" href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#name2url" title="name2url()" alt="" coords="407,398,511,430" />
+<area shape="rect" href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#tokeneater" title="tokeneater()" alt="" coords="6,202,118,234" />
+</map>
+  <img src="call_graph_for_handle_line.gif" alt='' usemap="#call_graph_for_handle_line" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="context_name"></a><span class="summary-sig-name">context_name</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">extra</span>=<span class="summary-sig-default">None</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html_colorize-pysrc.html#PythonSourceColorizer.context_name">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_context_name-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_context_name-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_context_name" name="call_graph_for_context_name">
+<area shape="rect" href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#context_name" title="context_name()" alt="" coords="176,6,315,38" />
+<area shape="rect" href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#handle_line" title="handle_line()" alt="" coords="5,6,128,38" />
+</map>
+  <img src="call_graph_for_context_name.gif" alt='' usemap="#call_graph_for_context_name" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="doclink"></a><span class="summary-sig-name">doclink</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">name</span>,
+        <span class="summary-sig-arg">docs</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html_colorize-pysrc.html#PythonSourceColorizer.doclink">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_doclink-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_doclink-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_doclink" name="call_graph_for_doclink">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__init__" title="apidoc.DottedName.__init__()" alt="" coords="315,6,566,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#url" title="html.HTMLWriter.url()" alt="" coords="340,62,540,94" />
+<area shape="rect" href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#doc_descr" title="doc_descr()" alt="" coords="386,118,495,150" />
+<area shape="rect" href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#doclink" title="doclink()" alt="" coords="176,62,267,94" />
+<area shape="rect" href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#handle_line" title="handle_line()" alt="" coords="6,62,128,94" />
+</map>
+  <img src="call_graph_for_doclink.gif" alt='' usemap="#call_graph_for_doclink" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="doc_descr"></a><span class="summary-sig-name">doc_descr</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">doc</span>,
+        <span class="summary-sig-arg">context</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html_colorize-pysrc.html#PythonSourceColorizer.doc_descr">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_doc_descr-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_doc_descr-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_doc_descr" name="call_graph_for_doc_descr">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__str__" title="apidoc.DottedName.__str__()" alt="" coords="303,6,545,38" />
+<area shape="rect" href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#doc_descr" title="doc_descr()" alt="" coords="144,34,253,66" />
+<area shape="rect" href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#doc_kind" title="doc_kind()" alt="" coords="372,62,476,94" />
+<area shape="rect" href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#doclink" title="doclink()" alt="" coords="5,34,96,66" />
+</map>
+  <img src="call_graph_for_doc_descr.gif" alt='' usemap="#call_graph_for_doc_descr" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="doc_kind"></a><span class="summary-sig-name">doc_kind</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">doc</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html_colorize-pysrc.html#PythonSourceColorizer.doc_kind">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_doc_kind_2-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_doc_kind_2-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_doc_kind_2" name="call_graph_for_doc_kind_2">
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#container" title="apidoc.DocIndex.container()" alt="" coords="339,6,574,38" />
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__getitem__" title="apidoc.DottedName.__getitem__()" alt="" coords="316,62,596,94" />
+<area shape="rect" href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#doc_descr" title="doc_descr()" alt="" coords="6,34,115,66" />
+<area shape="rect" href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#doc_kind" title="doc_kind()" alt="" coords="163,34,267,66" />
+</map>
+  <img src="call_graph_for_doc_kind_2.gif" alt='' usemap="#call_graph_for_doc_kind_2" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="mark_def"></a><span class="summary-sig-name">mark_def</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">s</span>,
+        <span class="summary-sig-arg">name</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html_colorize-pysrc.html#PythonSourceColorizer.mark_def">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_mark_def-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_mark_def-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_mark_def" name="call_graph_for_mark_def">
+<area shape="rect" href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#handle_line" title="handle_line()" alt="" coords="5,6,128,38" />
+<area shape="rect" href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#mark_def" title="mark_def()" alt="" coords="177,6,281,38" />
+</map>
+  <img src="call_graph_for_mark_def.gif" alt='' usemap="#call_graph_for_mark_def" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="is_docstring"></a><span class="summary-sig-name">is_docstring</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">line</span>,
+        <span class="summary-sig-arg">i</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html_colorize-pysrc.html#PythonSourceColorizer.is_docstring">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_is_docstring-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_is_docstring-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_is_docstring" name="call_graph_for_is_docstring">
+<area shape="rect" href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#handle_line" title="handle_line()" alt="" coords="5,6,128,38" />
+<area shape="rect" href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#is_docstring" title="is_docstring()" alt="" coords="177,6,303,38" />
+</map>
+  <img src="call_graph_for_is_docstring.gif" alt='' usemap="#call_graph_for_is_docstring" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="add_line_numbers"></a><span class="summary-sig-name">add_line_numbers</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">s</span>,
+        <span class="summary-sig-arg">css_class</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html_colorize-pysrc.html#PythonSourceColorizer.add_line_numbers">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_add_line_number-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_add_line_number-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_add_line_number" name="call_graph_for_add_line_number">
+<area shape="rect" href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#add_line_numbers" title="add_line_numbers()" alt="" coords="177,6,348,38" />
+<area shape="rect" href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#lineno_to_html" title="lineno_to_html()" alt="" coords="399,6,545,38" />
+<area shape="rect" href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#handle_line" title="handle_line()" alt="" coords="5,6,128,38" />
+</map>
+  <img src="call_graph_for_add_line_number.gif" alt='' usemap="#call_graph_for_add_line_number" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="name2url"></a><span class="summary-sig-name">name2url</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">class_name</span>,
+        <span class="summary-sig-arg">func_name</span>=<span class="summary-sig-default">None</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html_colorize-pysrc.html#PythonSourceColorizer.name2url">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_name2url-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_name2url-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_name2url" name="call_graph_for_name2url">
+<area shape="rect" href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#handle_line" title="handle_line()" alt="" coords="5,6,128,38" />
+<area shape="rect" href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#name2url" title="name2url()" alt="" coords="176,6,280,38" />
+</map>
+  <img src="call_graph_for_name2url.gif" alt='' usemap="#call_graph_for_name2url" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Class Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-ClassVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#CSS_CLASSES" class="summary-name">CSS_CLASSES</a> = <code title="{'@': 'py-decorator',
+ 'BASECLASS': 'py-base-class',
+ 'COMMENT': 'py-comment',
+ 'DECORATOR': 'py-decorator',
+ 'DEFNAME': 'py-def-name',
+ 'DOCSTRING': 'py-docstring',
+ 'KEYWORD': 'py-keyword',
+ 'NAME': 'py-name',
+..."><code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">@</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">py-decorator</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">BASECLASS</code><code class="variable-quote">'</code><code class="variable-op" [...]
+      A look-up table that is used to determine which CSS class should be 
+      used to colorize a given token.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#START_DEF_BLOCK" class="summary-name">START_DEF_BLOCK</a> = <code title="'<div id="%s-collapsed" style="display:none;" pad="%s" indent="%s"></d\
+iv><div id="%s-expanded">'"><code class="variable-quote">'</code><code class="variable-string"><div id="%s-collapsed" style="display:none;</code><code class="variable-ellipsis">...</code></code><br />
+      HTML code for the beginning of a collapsable function or class 
+      definition block.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="END_DEF_BLOCK"></a><span class="summary-name">END_DEF_BLOCK</span> = <code title="'</div>'"><code class="variable-quote">'</code><code class="variable-string"></div></code><code class="variable-quote">'</code></code><br />
+      HTML code for the end of a collapsable function or class definition 
+      block.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#UNICODE_CODING_RE" class="summary-name">UNICODE_CODING_RE</a> = <code title="re.compile(r'.*?\n?.*?coding[:=]\s*([-\w\.]+)')">re.compile(r'.<code class="re-op">*?</code>\n<code class="re-op">?</code>.<code class="re-op">*?</code>coding<code class="re-group">[</code>:=<code class="re-group">]</code>\s<code class="re-op">*</code><code class="re-group">(</code><code class="re-group">[</code>-\w\.<code class="va [...]
+      A regular expression used to pick out the unicode encoding for the 
+      source file.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="ADD_DEF_BLOCKS"></a><span class="summary-name">ADD_DEF_BLOCKS</span> = <code title="True">True</code><br />
+      A configuration constant, used to determine whether or not to add 
+      collapsable <div> elements for definition blocks.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="ADD_LINE_NUMBERS"></a><span class="summary-name">ADD_LINE_NUMBERS</span> = <code title="True">True</code><br />
+      A configuration constant, used to determine whether or not to add 
+      line numbers.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="ADD_TOOLTIPS"></a><span class="summary-name">ADD_TOOLTIPS</span> = <code title="True">True</code><br />
+      A configuration constant, used to determine whether or not to add 
+      tooltips for linked names.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="GUESS_LINK_TARGETS"></a><span class="summary-name">GUESS_LINK_TARGETS</span> = <code title="False">False</code><br />
+      If true, then try to guess which target is appropriate for linked 
+      names; if false, then always open a div asking the user which one 
+      they want.
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="_next_uid"></a><span class="summary-name">_next_uid</span> = <code title="0">0</code>
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#_FIX_DECORATOR_RE" class="summary-name" onclick="show_private();">_FIX_DECORATOR_RE</a> = <code title="re.compile(r'(?m)((?:^<a name="L\d+"></a><tt class="py-lineno">\s*\d+<\
+/tt>\s*<tt class="py-line">(?:<tt class="py-decorator">.*|\s*</tt>|\s*\
+<tt class="py-comment">.*)\n)+)(<a name="\w+"></a><div id="\w+-def">)'\
+)">re.compile(r'<code class="re-flags">(?m)</code><code class="re-group">(</code><code class="re-group">(?:</code>^<a name="L\d<code class="re-op">+</code>"></a><<code class="variable-ellipsis">...</code></code><br />
+      A regexp used to move the <div> that marks the beginning of a 
+      function or method to just before the decorators.
+    </td>
+  </tr>
+</table>
+<!-- ==================== INSTANCE VARIABLES ==================== -->
+<a name="section-InstanceVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="module_filename"></a><span class="summary-name">module_filename</span><br />
+      The filename of the module we're colorizing.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="module_name"></a><span class="summary-name">module_name</span><br />
+      The dotted name of the module we're colorizing.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="docindex"></a><span class="summary-name">docindex</span><br />
+      A docindex, used to create href links from identifiers to the API 
+      documentation for their values.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="name_to_docs"></a><span class="summary-name">name_to_docs</span><br />
+      A mapping from short names to lists of ValueDoc, used to decide which
+      values an identifier might map to when creating href links from 
+      identifiers to the API docs for their values.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="url_func"></a><span class="summary-name">url_func</span><br />
+      A function that maps APIDoc -> URL, used to create href links from
+      identifiers to the API documentation for their values.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="pos"></a><span class="summary-name">pos</span><br />
+      The index in <code>text</code> of the last character of the last 
+      token we've processed.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#line_offsets" class="summary-name">line_offsets</a><br />
+      A list that maps line numbers to character offsets in 
+      <code>text</code>.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#cur_line" class="summary-name">cur_line</a><br />
+      A list of <code>(toktype, toktext)</code> for all tokens on the 
+      logical line that we are currently processing.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#context" class="summary-name">context</a><br />
+      A list of the names of the class or functions that include the 
+      current block.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#context_types" class="summary-name">context_types</a><br />
+      A list, corresponding one-to-one with <a 
+      href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#context"
+      class="link">self.context</a>, indicating the type of each entry.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#indents" class="summary-name">indents</a><br />
+      A list of indentation strings for each of the current block's 
+      indents.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="lineno"></a><span class="summary-name">lineno</span><br />
+      The line number of the line we're currently processing.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="def_name"></a><span class="summary-name">def_name</span><br />
+      The name of the class or function whose definition started on the 
+      previous logical line, or <code>None</code> if the previous logical 
+      line was not a class or function definition.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#def_type" class="summary-name">def_type</a><br />
+      The type of the class or function whose definition started on the 
+      previous logical line, or <code>None</code> if the previous logical 
+      line was not a class or function definition.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="tab_width"></a><span class="summary-name">tab_width</span><br />
+      The number of spaces to replace each tab in source code with
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Method Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-MethodDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">module_filename</span>,
+        <span class="sig-arg">module_name</span>,
+        <span class="sig-arg">docindex</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">url_func</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">name_to_docs</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">tab_width</span>=<span class="sig-default">8</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docwriter.html_colorize-pysrc.html#PythonSourceColorizer.__init__">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for___init___23-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for___init___23-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for___init___23" name="call_graph_for___init___23">
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_sourcecode" title="html.HTMLWriter.write_sourcecode()" alt="" coords="6,6,318,38" />
+<area shape="rect" href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#__init__" title="__init__()" alt="" coords="367,6,463,38" />
+<area shape="rect" href="epydoc.util-module.html#py_src_filename" title="util.py_src_filename()" alt="" coords="512,6,702,38" />
+</map>
+  <img src="call_graph_for___init___23.gif" alt='' usemap="#call_graph_for___init___23" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Create a new HTML colorizer for the specified module.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>module_filename</code></strong> - The name of the file containing the module; its text will be 
+          loaded from this file.</li>
+        <li><strong class="pname"><code>module_name</code></strong> - The dotted name of the module; this will be used to create links 
+          back into the API source documentation.</li>
+    </ul></dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="tokeneater"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">tokeneater</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">toktype</span>,
+        <span class="sig-arg">toktext</span>,
+        <span class="sig-arg">(srow, scol)</span>,
+        <span class="sig-arg">(erow, ecol)</span>,
+        <span class="sig-arg">line</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docwriter.html_colorize-pysrc.html#PythonSourceColorizer.tokeneater">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_tokeneater-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_tokeneater-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_tokeneater" name="call_graph_for_tokeneater">
+<area shape="rect" href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#handle_line" title="handle_line()" alt="" coords="165,6,288,38" />
+<area shape="rect" href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#tokeneater" title="tokeneater()" alt="" coords="5,6,117,38" />
+</map>
+  <img src="call_graph_for_tokeneater.gif" alt='' usemap="#call_graph_for_tokeneater" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>A callback function used by <code>tokenize.tokenize</code> to handle 
+  each token in the module.  <code>tokeneater</code> collects tokens into 
+  the <code>self.cur_line</code> list until a complete logical line has 
+  been formed; and then calls <a 
+  href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#handle_line"
+  class="link">handle_line</a> to process that line.</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="handle_line"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">handle_line</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">line</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docwriter.html_colorize-pysrc.html#PythonSourceColorizer.handle_line">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_handle_line-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_handle_line-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_handle_line" name="call_graph_for_handle_line">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__str__" title="apidoc.DottedName.__str__()" alt="" coords="338,6,580,38" />
+<area shape="rect" href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#add_line_numbers" title="add_line_numbers()" alt="" coords="374,62,544,94" />
+<area shape="rect" href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#context_name" title="context_name()" alt="" coords="390,118,528,150" />
+<area shape="rect" href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#doclink" title="doclink()" alt="" coords="414,174,504,206" />
+<area shape="rect" href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#handle_line" title="handle_line()" alt="" coords="166,202,288,234" />
+<area shape="rect" href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#is_docstring" title="is_docstring()" alt="" coords="396,230,522,262" />
+<area shape="rect" href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#lineno_to_html" title="lineno_to_html()" alt="" coords="386,286,532,318" />
+<area shape="rect" href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#mark_def" title="mark_def()" alt="" coords="407,342,511,374" />
+<area shape="rect" href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#name2url" title="name2url()" alt="" coords="407,398,511,430" />
+<area shape="rect" href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#tokeneater" title="tokeneater()" alt="" coords="6,202,118,234" />
+</map>
+  <img src="call_graph_for_handle_line.gif" alt='' usemap="#call_graph_for_handle_line" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Render a single logical line from the module, and write the generated 
+  HTML to <code>self.out</code>.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>line</code></strong> - A single logical line, encoded as a list of 
+          <code>(toktype,tokttext)</code> pairs corresponding to the tokens
+          in the line.</li>
+    </ul></dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== CLASS VARIABLE DETAILS ==================== -->
+<a name="section-ClassVariableDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Class Variable Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-ClassVariableDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="CSS_CLASSES"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">CSS_CLASSES</h3>
+  <p>A look-up table that is used to determine which CSS class should be 
+  used to colorize a given token.  The following keys may be used:</p>
+  <ul>
+    <li>
+      Any token name (e.g., <code>'STRING'</code>)
+    </li>
+    <li>
+      Any operator token (e.g., <code>'='</code> or <code>'@'</code>).
+    </li>
+    <li>
+      <code>'KEYWORD'</code> -- Python keywords such as <code>'for'</code> 
+      and <code>'if'</code>
+    </li>
+    <li>
+      <code>'DEFNAME'</code> -- the name of a class or function at the top 
+      of its definition statement.
+    </li>
+    <li>
+      <code>'BASECLASS'</code> -- names of base classes at the top of a 
+      class definition statement.
+    </li>
+    <li>
+      <code>'PARAM'</code> -- function parameters
+    </li>
+    <li>
+      <code>'DOCSTRING'</code> -- docstrings
+    </li>
+    <li>
+      <code>'DECORATOR'</code> -- decorator names
+    </li>
+  </ul>
+  <p>If no CSS class can be found for a given token, then it won't be 
+  marked with any CSS class.</p>
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">@</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">py-decorator</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">BASECLASS</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">py-base-class</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">COMMENT</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">py-comment</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">DECORATOR</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">py-decorator</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">DEFNAME</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">py-def-name</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">DOCSTRING</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">py-docstring</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">KEYWORD</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">py-keyword</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">NAME</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">py-name</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="START_DEF_BLOCK"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">START_DEF_BLOCK</h3>
+  <p>HTML code for the beginning of a collapsable function or class 
+  definition block.  The block contains two <div>...</div> 
+  elements -- a collapsed version and an expanded version -- and only one 
+  of these elements is visible at any given time.  By default, all 
+  definition blocks are expanded.</p>
+  <p>This string should be interpolated with the following values:</p>
+<pre class="literalblock">
+ (name, indentation, name)
+</pre>
+  <p>Where <code>name</code> is the anchor name for the function or class; 
+  and indentation is a string of whitespace used to indent the ellipsis 
+  marker in the collapsed version.</p>
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string"><div id="%s-collapsed" style="display:none;" pad="%s" indent="%s"></d</code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-string">iv><div id="%s-expanded"></code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="UNICODE_CODING_RE"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">UNICODE_CODING_RE</h3>
+  <p>A regular expression used to pick out the unicode encoding for the 
+  source file.</p>
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+re.compile(r'.<code class="re-op">*?</code>\n<code class="re-op">?</code>.<code class="re-op">*?</code>coding<code class="re-group">[</code>:=<code class="re-group">]</code>\s<code class="re-op">*</code><code class="re-group">(</code><code class="re-group">[</code>-\w\.<code class="re-group">]</code><code class="re-op">+</code><code class="re-group">)</code>')
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="_FIX_DECORATOR_RE"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">_FIX_DECORATOR_RE</h3>
+  <p>A regexp used to move the <div> that marks the beginning of a 
+  function or method to just before the decorators.</p>
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+re.compile(r'<code class="re-flags">(?m)</code><code class="re-group">(</code><code class="re-group">(?:</code>^<a name="L\d<code class="re-op">+</code>"></a><tt class="py-lineno">\s<code class="re-op">*</code>\d<code class="re-op">+</code><<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+/tt>\s<code class="re-op">*</code><tt class="py-line"><code class="re-group">(?:</code><tt class="py-decorator">.<code class="re-op">*</code><code class="re-op">|</code>\s<code class="re-op">*</code></tt><code class="re-op">|</code>\s<code class="re-op">*</code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<tt class="py-comment">.<code class="re-op">*</code><code class="re-group">)</code>\n<code class="re-group">)</code><code class="re-op">+</code><code class="re-group">)</code><code class="re-group">(</code><a name="\w<code class="re-op">+</code>"></a><div id="\w<code class="re-op">+</code>-def"><code class="re-group">)</code>'<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+)
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== INSTANCE VARIABLE DETAILS ==================== -->
+<a name="section-InstanceVariableDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Variable Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceVariableDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="line_offsets"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">line_offsets</h3>
+  <p>A list that maps line numbers to character offsets in 
+  <code>text</code>.  In particular, line <code><i 
+  class="math">i</i></code> begins at character <code>line_offset[i]</code>
+  in <code>text</code>.  Since line numbers begin at 1, the first element 
+  of <code>line_offsets</code> is <code>None</code>.</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="cur_line"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">cur_line</h3>
+  <p>A list of <code>(toktype, toktext)</code> for all tokens on the 
+  logical line that we are currently processing.  Once a complete line of 
+  tokens has been collected in <code>cur_line</code>, it is sent to <a 
+  href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#handle_line"
+  class="link">handle_line</a> for processing.</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="context"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">context</h3>
+  <p>A list of the names of the class or functions that include the current
+  block.  <code>context</code> has one element for each level of 
+  indentation; <code>context[i]</code> is the name of the class or function
+  defined by the <code>i</code>th level of indentation, or 
+  <code>None</code> if that level of indentation doesn't correspond to a 
+  class or function definition.</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="context_types"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">context_types</h3>
+  <p>A list, corresponding one-to-one with <a 
+  href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#context"
+  class="link">self.context</a>, indicating the type of each entry.  Each 
+  element of <code>context_types</code> is one of: <code>'func'</code>, 
+  <code>'class'</code>, <code>None</code>.</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="indents"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">indents</h3>
+  <p>A list of indentation strings for each of the current block's indents.
+  I.e., the current total indentation can be found by taking 
+  <code>''.join(self.indents)</code>.</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="def_type"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">def_type</h3>
+  <p>The type of the class or function whose definition started on the 
+  previous logical line, or <code>None</code> if the previous logical line 
+  was not a class or function definition. Can be <code>'func'</code>, 
+  <code>'class'</code>, <code>None</code>.</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:08:16 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.docwriter.html_css-module.html b/doc/api/epydoc.docwriter.html_css-module.html
new file mode 100644
index 0000000..2501a4e
--- /dev/null
+++ b/doc/api/epydoc.docwriter.html_css-module.html
@@ -0,0 +1,680 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.docwriter.html_css</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.docwriter-module.html">Package docwriter</a> ::
+        Module html_css
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.docwriter.html_css-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module html_css</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.docwriter.html_css-pysrc.html">source code</a></span></p>
+<p>Predefined CSS stylesheets for the HTML outputter (<a 
+  href="epydoc.docwriter.html-module.html" 
+  class="link">epydoc.docwriter.html</a>).</p>
+
+<!-- ==================== FUNCTIONS ==================== -->
+<a name="section-Functions"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Functions</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Functions"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_set_colors"></a><span class="summary-sig-name">_set_colors</span>(<span class="summary-sig-arg">template</span>,
+        <span class="summary-sig-arg">*dicts</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html_css-pysrc.html#_set_colors">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>string</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docwriter.html_css-module.html#_rv" class="summary-sig-name" onclick="show_private();">_rv</a>(<span class="summary-sig-arg">match</span>)</span><br />
+      Given a regexp match for a color, return the reverse-video version of
+      that color.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html_css-pysrc.html#_rv">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_darken_darks"></a><span class="summary-sig-name">_darken_darks</span>(<span class="summary-sig-arg">match</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.html_css-pysrc.html#_darken_darks">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Variables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docwriter.html_css-module.html#TEMPLATE" class="summary-name">TEMPLATE</a> = <code title="'''
+
+/* Epydoc CSS Stylesheet
+ *
+ * This stylesheet can be used to customize the appearance of epydoc\'\
+s
+ * HTML output.
+ *
+..."><code class="variable-quote">'</code><code class="variable-string">\n\n/* Epydoc CSS Stylesheet\n *\n * This styleshe</code><code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="_COLOR_RE"></a><span class="summary-name">_COLOR_RE</span> = <code title="re.compile(r'#(..)(..)(..)')">re.compile(r'#<code class="re-group">(</code>..<code class="re-group">)</code><code class="re-group">(</code>..<code class="re-group">)</code><code class="re-group">(</code>..<code class="re-group">)</code>')</code>
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docwriter.html_css-module.html#_WHITE_COLORS" class="summary-name" onclick="show_private();">_WHITE_COLORS</a> = <code title="{'body_bg': '#ffffff',
+ 'body_fg': '#000000',
+ 'body_link': '#0000ff',
+ 'body_visited_link': '#204080',
+ 'doctest_bg': '#e8f0f8',
+ 'doctest_border': '1px solid #708890',
+ 'doctest_fg': '#000000',
+ 'doctest_in_table_bg': '#dce4ec',
+..."><code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">body_bg</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">#ffffff</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">body_fg</code><code class="variable-quote">'</code><code class="variable-op"> [...]
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docwriter.html_css-module.html#_BLUE_COLORS" class="summary-name" onclick="show_private();">_BLUE_COLORS</a> = <code title="{'body_bg': '#000070',
+ 'body_fg': '#ffffff',
+ 'body_link': '#ffffff',
+ 'body_visited_link': '#d0d0ff',
+ 'doctest_bg': '#c0e0f8',
+ 'doctest_border': '1px solid #708890',
+ 'doctest_fg': '#000000',
+ 'doctest_in_table_bg': '#c0e0f8',
+..."><code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">body_bg</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">#000070</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">body_fg</code><code class="variable-quote">'</code><code class="variable-op"> [...]
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docwriter.html_css-module.html#_WHITE" class="summary-name" onclick="show_private();">_WHITE</a> = <code title="'''
+
+/* Epydoc CSS Stylesheet
+ *
+ * This stylesheet can be used to customize the appearance of epydoc\'\
+s
+ * HTML output.
+ *
+..."><code class="variable-quote">'</code><code class="variable-string">\n\n/* Epydoc CSS Stylesheet\n *\n * This stylesheet</code><code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docwriter.html_css-module.html#_BLUE" class="summary-name" onclick="show_private();">_BLUE</a> = <code title="'''
+
+/* Epydoc CSS Stylesheet
+ *
+ * This stylesheet can be used to customize the appearance of epydoc\'\
+s
+ * HTML output.
+ *
+..."><code class="variable-quote">'</code><code class="variable-string">\n\n/* Epydoc CSS Stylesheet\n *\n * This stylesheet </code><code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docwriter.html_css-module.html#_GREEN" class="summary-name" onclick="show_private();">_GREEN</a> = <code title="'''
+
+/* Epydoc CSS Stylesheet
+ *
+ * This stylesheet can be used to customize the appearance of epydoc\'\
+s
+ * HTML output.
+ *
+..."><code class="variable-quote">'</code><code class="variable-string">\n\n/* Epydoc CSS Stylesheet\n *\n * This stylesheet</code><code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docwriter.html_css-module.html#_BLACK" class="summary-name" onclick="show_private();">_BLACK</a> = <code title="'''
+
+/* Epydoc CSS Stylesheet
+ *
+ * This stylesheet can be used to customize the appearance of epydoc\'\
+s
+ * HTML output.
+ *
+..."><code class="variable-quote">'</code><code class="variable-string">\n\n/* Epydoc CSS Stylesheet\n *\n * This stylesheet</code><code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docwriter.html_css-module.html#_GRAYSCALE" class="summary-name" onclick="show_private();">_GRAYSCALE</a> = <code title="'''
+
+/* Epydoc CSS Stylesheet
+ *
+ * This stylesheet can be used to customize the appearance of epydoc\'\
+s
+ * HTML output.
+ *
+..."><code class="variable-quote">'</code><code class="variable-string">\n\n/* Epydoc CSS Stylesheet\n *\n * This styles</code><code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>dictionary</code> from <code>string</code> to <code>(string, 
+      string)</code></span>
+    </td><td class="summary">
+        <a href="epydoc.docwriter.html_css-module.html#STYLESHEETS" class="summary-name">STYLESHEETS</a> = <code title="{'black': ('''
+
+/* Epydoc CSS Stylesheet
+ *
+ * This stylesheet can be used to customize the appearance of epydoc\'\
+s
+ * HTML output.
+ *
+..."><code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">black</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-group">(</code><code class="variable-quote">'</code><code class="variable-string">\n\n/* Epydoc CSS Stylesheet\n *\n *</code><code class="variable-ellipsis">...</code></code><br />
+      A dictionary mapping from stylesheet names to CSS stylesheets and 
+      descriptions.
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTION DETAILS ==================== -->
+<a name="section-FunctionDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Function Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-FunctionDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="_rv"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">_rv</span>(<span class="sig-arg">match</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docwriter.html_css-pysrc.html#_rv">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Given a regexp match for a color, return the reverse-video version of 
+  that color.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>match</code></strong> (<code>Match</code>) - A regular expression match.</li>
+    </ul></dd>
+    <dt>Returns: <code>string</code></dt>
+        <dd>The reverse-video color.</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== VARIABLES DETAILS ==================== -->
+<a name="section-VariablesDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Variables Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-VariablesDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="TEMPLATE"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">TEMPLATE</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'''</code><code class="variable-string"></code>
+<code class="variable-string"></code>
+<code class="variable-string">/* Epydoc CSS Stylesheet</code>
+<code class="variable-string"> *</code>
+<code class="variable-string"> * This stylesheet can be used to customize the appearance of epydoc\'</code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-string">s</code>
+<code class="variable-string"> * HTML output.</code>
+<code class="variable-string"> *</code>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="_WHITE_COLORS"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">_WHITE_COLORS</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">body_bg</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">#ffffff</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">body_fg</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">#000000</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">body_link</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">#0000ff</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">body_visited_link</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">#204080</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">doctest_bg</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">#e8f0f8</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">doctest_border</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">1px solid #708890</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">doctest_fg</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">#000000</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">doctest_in_table_bg</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">#dce4ec</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="_BLUE_COLORS"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">_BLUE_COLORS</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">body_bg</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">#000070</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">body_fg</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">#ffffff</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">body_link</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">#ffffff</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">body_visited_link</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">#d0d0ff</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">doctest_bg</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">#c0e0f8</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">doctest_border</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">1px solid #708890</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">doctest_fg</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">#000000</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">doctest_in_table_bg</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">#c0e0f8</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="_WHITE"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">_WHITE</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'''</code><code class="variable-string"></code>
+<code class="variable-string"></code>
+<code class="variable-string">/* Epydoc CSS Stylesheet</code>
+<code class="variable-string"> *</code>
+<code class="variable-string"> * This stylesheet can be used to customize the appearance of epydoc\'</code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-string">s</code>
+<code class="variable-string"> * HTML output.</code>
+<code class="variable-string"> *</code>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="_BLUE"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">_BLUE</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'''</code><code class="variable-string"></code>
+<code class="variable-string"></code>
+<code class="variable-string">/* Epydoc CSS Stylesheet</code>
+<code class="variable-string"> *</code>
+<code class="variable-string"> * This stylesheet can be used to customize the appearance of epydoc\'</code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-string">s</code>
+<code class="variable-string"> * HTML output.</code>
+<code class="variable-string"> *</code>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="_GREEN"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">_GREEN</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'''</code><code class="variable-string"></code>
+<code class="variable-string"></code>
+<code class="variable-string">/* Epydoc CSS Stylesheet</code>
+<code class="variable-string"> *</code>
+<code class="variable-string"> * This stylesheet can be used to customize the appearance of epydoc\'</code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-string">s</code>
+<code class="variable-string"> * HTML output.</code>
+<code class="variable-string"> *</code>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="_BLACK"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">_BLACK</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'''</code><code class="variable-string"></code>
+<code class="variable-string"></code>
+<code class="variable-string">/* Epydoc CSS Stylesheet</code>
+<code class="variable-string"> *</code>
+<code class="variable-string"> * This stylesheet can be used to customize the appearance of epydoc\'</code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-string">s</code>
+<code class="variable-string"> * HTML output.</code>
+<code class="variable-string"> *</code>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="_GRAYSCALE"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">_GRAYSCALE</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'''</code><code class="variable-string"></code>
+<code class="variable-string"></code>
+<code class="variable-string">/* Epydoc CSS Stylesheet</code>
+<code class="variable-string"> *</code>
+<code class="variable-string"> * This stylesheet can be used to customize the appearance of epydoc\'</code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-string">s</code>
+<code class="variable-string"> * HTML output.</code>
+<code class="variable-string"> *</code>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="STYLESHEETS"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">STYLESHEETS</h3>
+  A dictionary mapping from stylesheet names to CSS stylesheets and 
+  descriptions.  A single stylesheet may have multiple names.  Currently, 
+  the following stylesheets are defined:
+  <ul>
+    <li>
+      <code>default</code>: The default stylesheet (synonym for 
+      <code>white</code>).
+    </li>
+    <li>
+      <code>white</code>: Black on white, with blue highlights (similar to 
+      javadoc).
+    </li>
+    <li>
+      <code>blue</code>: Black on steel blue.
+    </li>
+    <li>
+      <code>green</code>: Black on green.
+    </li>
+    <li>
+      <code>black</code>: White on black, with blue highlights
+    </li>
+    <li>
+      <code>grayscale</code>: Grayscale black on white.
+    </li>
+    <li>
+      <code>none</code>: An empty stylesheet.
+    </li>
+  </ul>
+  <dl class="fields">
+    <dt>Type:</dt>
+      <dd><code>dictionary</code> from <code>string</code> to <code>(string, 
+      string)</code></dd>
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">black</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-group">(</code><code class="variable-quote">'''</code><code class="variable-string"></code>
+<code class="variable-string"></code>
+<code class="variable-string">/* Epydoc CSS Stylesheet</code>
+<code class="variable-string"> *</code>
+<code class="variable-string"> * This stylesheet can be used to customize the appearance of epydoc\'</code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-string">s</code>
+<code class="variable-string"> * HTML output.</code>
+<code class="variable-string"> *</code>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:06:37 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.docwriter.html_css-pysrc.html b/doc/api/epydoc.docwriter.html_css-pysrc.html
new file mode 100644
index 0000000..9d6946e
--- /dev/null
+++ b/doc/api/epydoc.docwriter.html_css-pysrc.html
@@ -0,0 +1,673 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.docwriter.html_css</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.docwriter-module.html">Package docwriter</a> ::
+        Module html_css
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.docwriter.html_css-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="epydoc.docwriter.html_css-module.html">Module epydoc.docwriter.html_css</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno">  1</tt>  <tt class="py-line"><tt class="py-comment">#</tt> </tt>
+<a name="L2"></a><tt class="py-lineno">  2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># epydoc.css: default epydoc CSS stylesheets</tt> </tt>
+<a name="L3"></a><tt class="py-lineno">  3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Edward Loper</tt> </tt>
+<a name="L4"></a><tt class="py-lineno">  4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L5"></a><tt class="py-lineno">  5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Created [01/30/01 05:18 PM]</tt> </tt>
+<a name="L6"></a><tt class="py-lineno">  6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># $Id: html_css.py 1634 2007-09-24 15:58:38Z dvarrazzo $</tt> </tt>
+<a name="L7"></a><tt class="py-lineno">  7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L8"></a><tt class="py-lineno">  8</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L9"></a><tt class="py-lineno">  9</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L10"></a><tt class="py-lineno"> 10</tt>  <tt class="py-line"><tt class="py-docstring">Predefined CSS stylesheets for the HTML outputter (L{epydoc.docwriter.html}).</tt> </tt>
+<a name="L11"></a><tt class="py-lineno"> 11</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L12"></a><tt class="py-lineno"> 12</tt>  <tt class="py-line"><tt class="py-docstring">@type STYLESHEETS: C{dictionary} from C{string} to C{(string, string)}</tt> </tt>
+<a name="L13"></a><tt class="py-lineno"> 13</tt>  <tt class="py-line"><tt class="py-docstring">@var STYLESHEETS: A dictionary mapping from stylesheet names to CSS</tt> </tt>
+<a name="L14"></a><tt class="py-lineno"> 14</tt>  <tt class="py-line"><tt class="py-docstring">    stylesheets and descriptions.  A single stylesheet may have</tt> </tt>
+<a name="L15"></a><tt class="py-lineno"> 15</tt>  <tt class="py-line"><tt class="py-docstring">    multiple names.  Currently, the following stylesheets are defined:</tt> </tt>
+<a name="L16"></a><tt class="py-lineno"> 16</tt>  <tt class="py-line"><tt class="py-docstring">      - C{default}: The default stylesheet (synonym for C{white}).</tt> </tt>
+<a name="L17"></a><tt class="py-lineno"> 17</tt>  <tt class="py-line"><tt class="py-docstring">      - C{white}: Black on white, with blue highlights (similar to</tt> </tt>
+<a name="L18"></a><tt class="py-lineno"> 18</tt>  <tt class="py-line"><tt class="py-docstring">        javadoc).</tt> </tt>
+<a name="L19"></a><tt class="py-lineno"> 19</tt>  <tt class="py-line"><tt class="py-docstring">      - C{blue}: Black on steel blue.</tt> </tt>
+<a name="L20"></a><tt class="py-lineno"> 20</tt>  <tt class="py-line"><tt class="py-docstring">      - C{green}: Black on green.</tt> </tt>
+<a name="L21"></a><tt class="py-lineno"> 21</tt>  <tt class="py-line"><tt class="py-docstring">      - C{black}: White on black, with blue highlights</tt> </tt>
+<a name="L22"></a><tt class="py-lineno"> 22</tt>  <tt class="py-line"><tt class="py-docstring">      - C{grayscale}: Grayscale black on white.</tt> </tt>
+<a name="L23"></a><tt class="py-lineno"> 23</tt>  <tt class="py-line"><tt class="py-docstring">      - C{none}: An empty stylesheet.</tt> </tt>
+<a name="L24"></a><tt class="py-lineno"> 24</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L25"></a><tt class="py-lineno"> 25</tt>  <tt class="py-line"><tt class="py-name">__docformat__</tt> <tt class="py-op">=</tt> <tt class="py-string">'epytext en'</tt> </tt>
+<a name="L26"></a><tt class="py-lineno"> 26</tt>  <tt class="py-line"> </tt>
+<a name="L27"></a><tt class="py-lineno"> 27</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">re</tt> </tt>
+<a name="L28"></a><tt class="py-lineno"> 28</tt>  <tt class="py-line"> </tt>
+<a name="L29"></a><tt class="py-lineno"> 29</tt>  <tt class="py-line"><tt class="py-comment">############################################################</tt> </tt>
+<a name="L30"></a><tt class="py-lineno"> 30</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## Basic stylesheets</tt> </tt>
+<a name="L31"></a><tt class="py-lineno"> 31</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">############################################################</tt> </tt>
+<a name="L32"></a><tt class="py-lineno"> 32</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L33"></a><tt class="py-lineno"> 33</tt>  <tt class="py-line"><tt class="py-comment"># [xx] Should I do something like:</tt> </tt>
+<a name="L34"></a><tt class="py-lineno"> 34</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L35"></a><tt class="py-lineno"> 35</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#    @import url(html4css1.css);</tt> </tt>
+<a name="L36"></a><tt class="py-lineno"> 36</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L37"></a><tt class="py-lineno"> 37</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># But then where do I get that css file from?  Hm.</tt> </tt>
+<a name="L38"></a><tt class="py-lineno"> 38</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Also, in principle I'm mangling classes, but it looks like I'm</tt> </tt>
+<a name="L39"></a><tt class="py-lineno"> 39</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># failing.</tt> </tt>
+<a name="L40"></a><tt class="py-lineno"> 40</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L41"></a><tt class="py-lineno"> 41</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L42"></a><tt class="py-lineno"> 42</tt>  <tt class="py-line"><tt class="py-comment"># Black on white, with blue highlights.  This is similar to how</tt> </tt>
+<a name="L43"></a><tt class="py-lineno"> 43</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># javadoc looks.</tt> </tt>
+<a name="L44"></a><tt class="py-lineno"> 44</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt id="link-0" class="py-name" targets="Variable epydoc.docwriter.html_css.TEMPLATE=epydoc.docwriter.html_css-module.html#TEMPLATE"><a title="epydoc.docwriter.html_css.TEMPLATE" class="py-name" href="#" onclick="return doclink('link-0', 'TEMPLATE', 'link-0');">TEMPLATE</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"""</tt> </tt>
+<a name="L45"></a><tt class="py-lineno"> 45</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L46"></a><tt class="py-lineno"> 46</tt>  <tt class="py-line"><tt class="py-string">/* Epydoc CSS Stylesheet</tt> </tt>
+<a name="L47"></a><tt class="py-lineno"> 47</tt>  <tt class="py-line"><tt class="py-string"> *</tt> </tt>
+<a name="L48"></a><tt class="py-lineno"> 48</tt>  <tt class="py-line"><tt class="py-string"> * This stylesheet can be used to customize the appearance of epydoc's</tt> </tt>
+<a name="L49"></a><tt class="py-lineno"> 49</tt>  <tt class="py-line"><tt class="py-string"> * HTML output.</tt> </tt>
+<a name="L50"></a><tt class="py-lineno"> 50</tt>  <tt class="py-line"><tt class="py-string"> *</tt> </tt>
+<a name="L51"></a><tt class="py-lineno"> 51</tt>  <tt class="py-line"><tt class="py-string"> */</tt> </tt>
+<a name="L52"></a><tt class="py-lineno"> 52</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L53"></a><tt class="py-lineno"> 53</tt>  <tt class="py-line"><tt class="py-string">/* Default Colors & Styles</tt> </tt>
+<a name="L54"></a><tt class="py-lineno"> 54</tt>  <tt class="py-line"><tt class="py-string"> *   - Set the default foreground & background color with 'body'; and </tt> </tt>
+<a name="L55"></a><tt class="py-lineno"> 55</tt>  <tt class="py-line"><tt class="py-string"> *     link colors with 'a:link' and 'a:visited'.</tt> </tt>
+<a name="L56"></a><tt class="py-lineno"> 56</tt>  <tt class="py-line"><tt class="py-string"> *   - Use bold for decision list terms.</tt> </tt>
+<a name="L57"></a><tt class="py-lineno"> 57</tt>  <tt class="py-line"><tt class="py-string"> *   - The heading styles defined here are used for headings *within*</tt> </tt>
+<a name="L58"></a><tt class="py-lineno"> 58</tt>  <tt class="py-line"><tt class="py-string"> *     docstring descriptions.  All headings used by epydoc itself use</tt> </tt>
+<a name="L59"></a><tt class="py-lineno"> 59</tt>  <tt class="py-line"><tt class="py-string"> *     either class='epydoc' or class='toc' (CSS styles for both</tt> </tt>
+<a name="L60"></a><tt class="py-lineno"> 60</tt>  <tt class="py-line"><tt class="py-string"> *     defined below).</tt> </tt>
+<a name="L61"></a><tt class="py-lineno"> 61</tt>  <tt class="py-line"><tt class="py-string"> */</tt> </tt>
+<a name="L62"></a><tt class="py-lineno"> 62</tt>  <tt class="py-line"><tt class="py-string">body                        { background: $body_bg; color: $body_fg; }</tt> </tt>
+<a name="L63"></a><tt class="py-lineno"> 63</tt>  <tt class="py-line"><tt class="py-string">p                           { margin-top: 0.5em; margin-bottom: 0.5em; }</tt> </tt>
+<a name="L64"></a><tt class="py-lineno"> 64</tt>  <tt class="py-line"><tt class="py-string">a:link                      { color: $body_link; }</tt> </tt>
+<a name="L65"></a><tt class="py-lineno"> 65</tt>  <tt class="py-line"><tt class="py-string">a:visited                   { color: $body_visited_link; }</tt> </tt>
+<a name="L66"></a><tt class="py-lineno"> 66</tt>  <tt class="py-line"><tt class="py-string">dt                          { font-weight: bold; }</tt> </tt>
+<a name="L67"></a><tt class="py-lineno"> 67</tt>  <tt class="py-line"><tt class="py-string">h1                          { font-size: +140%; font-style: italic;</tt> </tt>
+<a name="L68"></a><tt class="py-lineno"> 68</tt>  <tt class="py-line"><tt class="py-string">                              font-weight: bold; }</tt> </tt>
+<a name="L69"></a><tt class="py-lineno"> 69</tt>  <tt class="py-line"><tt class="py-string">h2                          { font-size: +125%; font-style: italic;</tt> </tt>
+<a name="L70"></a><tt class="py-lineno"> 70</tt>  <tt class="py-line"><tt class="py-string">                              font-weight: bold; }</tt> </tt>
+<a name="L71"></a><tt class="py-lineno"> 71</tt>  <tt class="py-line"><tt class="py-string">h3                          { font-size: +110%; font-style: italic;</tt> </tt>
+<a name="L72"></a><tt class="py-lineno"> 72</tt>  <tt class="py-line"><tt class="py-string">                              font-weight: normal; }</tt> </tt>
+<a name="L73"></a><tt class="py-lineno"> 73</tt>  <tt class="py-line"><tt class="py-string">code                        { font-size: 100%; }</tt> </tt>
+<a name="L74"></a><tt class="py-lineno"> 74</tt>  <tt class="py-line"><tt class="py-string">/* N.B.: class, not pseudoclass */</tt> </tt>
+<a name="L75"></a><tt class="py-lineno"> 75</tt>  <tt class="py-line"><tt class="py-string">a.link                      { font-family: monospace; }</tt> </tt>
+<a name="L76"></a><tt class="py-lineno"> 76</tt>  <tt class="py-line"><tt class="py-string"> </tt> </tt>
+<a name="L77"></a><tt class="py-lineno"> 77</tt>  <tt class="py-line"><tt class="py-string">/* Page Header & Footer</tt> </tt>
+<a name="L78"></a><tt class="py-lineno"> 78</tt>  <tt class="py-line"><tt class="py-string"> *   - The standard page header consists of a navigation bar (with</tt> </tt>
+<a name="L79"></a><tt class="py-lineno"> 79</tt>  <tt class="py-line"><tt class="py-string"> *     pointers to standard pages such as 'home' and 'trees'); a</tt> </tt>
+<a name="L80"></a><tt class="py-lineno"> 80</tt>  <tt class="py-line"><tt class="py-string"> *     breadcrumbs list, which can be used to navigate to containing</tt> </tt>
+<a name="L81"></a><tt class="py-lineno"> 81</tt>  <tt class="py-line"><tt class="py-string"> *     classes or modules; options links, to show/hide private</tt> </tt>
+<a name="L82"></a><tt class="py-lineno"> 82</tt>  <tt class="py-line"><tt class="py-string"> *     variables and to show/hide frames; and a page title (using</tt> </tt>
+<a name="L83"></a><tt class="py-lineno"> 83</tt>  <tt class="py-line"><tt class="py-string"> *     <h1>).  The page title may be followed by a link to the</tt> </tt>
+<a name="L84"></a><tt class="py-lineno"> 84</tt>  <tt class="py-line"><tt class="py-string"> *     corresponding source code (using 'span.codelink').</tt> </tt>
+<a name="L85"></a><tt class="py-lineno"> 85</tt>  <tt class="py-line"><tt class="py-string"> *   - The footer consists of a navigation bar, a timestamp, and a</tt> </tt>
+<a name="L86"></a><tt class="py-lineno"> 86</tt>  <tt class="py-line"><tt class="py-string"> *     pointer to epydoc's homepage.</tt> </tt>
+<a name="L87"></a><tt class="py-lineno"> 87</tt>  <tt class="py-line"><tt class="py-string"> */ </tt> </tt>
+<a name="L88"></a><tt class="py-lineno"> 88</tt>  <tt class="py-line"><tt class="py-string">h1.epydoc                   { margin: 0; font-size: +140%; font-weight: bold; }</tt> </tt>
+<a name="L89"></a><tt class="py-lineno"> 89</tt>  <tt class="py-line"><tt class="py-string">h2.epydoc                   { font-size: +130%; font-weight: bold; }</tt> </tt>
+<a name="L90"></a><tt class="py-lineno"> 90</tt>  <tt class="py-line"><tt class="py-string">h3.epydoc                   { font-size: +115%; font-weight: bold;</tt> </tt>
+<a name="L91"></a><tt class="py-lineno"> 91</tt>  <tt class="py-line"><tt class="py-string">                              margin-top: 0.2em; }</tt> </tt>
+<a name="L92"></a><tt class="py-lineno"> 92</tt>  <tt class="py-line"><tt class="py-string">td h3.epydoc                { font-size: +115%; font-weight: bold;</tt> </tt>
+<a name="L93"></a><tt class="py-lineno"> 93</tt>  <tt class="py-line"><tt class="py-string">                              margin-bottom: 0; }</tt> </tt>
+<a name="L94"></a><tt class="py-lineno"> 94</tt>  <tt class="py-line"><tt class="py-string">table.navbar                { background: $navbar_bg; color: $navbar_fg;</tt> </tt>
+<a name="L95"></a><tt class="py-lineno"> 95</tt>  <tt class="py-line"><tt class="py-string">                              border: $navbar_border; }</tt> </tt>
+<a name="L96"></a><tt class="py-lineno"> 96</tt>  <tt class="py-line"><tt class="py-string">table.navbar table          { color: $navbar_fg; }</tt> </tt>
+<a name="L97"></a><tt class="py-lineno"> 97</tt>  <tt class="py-line"><tt class="py-string">th.navbar-select            { background: $navbar_select_bg;</tt> </tt>
+<a name="L98"></a><tt class="py-lineno"> 98</tt>  <tt class="py-line"><tt class="py-string">                              color: $navbar_select_fg; } </tt> </tt>
+<a name="L99"></a><tt class="py-lineno"> 99</tt>  <tt class="py-line"><tt class="py-string">table.navbar a              { text-decoration: none; }  </tt> </tt>
+<a name="L100"></a><tt class="py-lineno">100</tt>  <tt class="py-line"><tt class="py-string">table.navbar a:link         { color: $navbar_link; }</tt> </tt>
+<a name="L101"></a><tt class="py-lineno">101</tt>  <tt class="py-line"><tt class="py-string">table.navbar a:visited      { color: $navbar_visited_link; }</tt> </tt>
+<a name="L102"></a><tt class="py-lineno">102</tt>  <tt class="py-line"><tt class="py-string">span.breadcrumbs            { font-size: 85%; font-weight: bold; }</tt> </tt>
+<a name="L103"></a><tt class="py-lineno">103</tt>  <tt class="py-line"><tt class="py-string">span.options                { font-size: 70%; }</tt> </tt>
+<a name="L104"></a><tt class="py-lineno">104</tt>  <tt class="py-line"><tt class="py-string">span.codelink               { font-size: 85%; }</tt> </tt>
+<a name="L105"></a><tt class="py-lineno">105</tt>  <tt class="py-line"><tt class="py-string">td.footer                   { font-size: 85%; }</tt> </tt>
+<a name="L106"></a><tt class="py-lineno">106</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L107"></a><tt class="py-lineno">107</tt>  <tt class="py-line"><tt class="py-string">/* Table Headers</tt> </tt>
+<a name="L108"></a><tt class="py-lineno">108</tt>  <tt class="py-line"><tt class="py-string"> *   - Each summary table and details section begins with a 'header'</tt> </tt>
+<a name="L109"></a><tt class="py-lineno">109</tt>  <tt class="py-line"><tt class="py-string"> *     row.  This row contains a section title (marked by</tt> </tt>
+<a name="L110"></a><tt class="py-lineno">110</tt>  <tt class="py-line"><tt class="py-string"> *     'span.table-header') as well as a show/hide private link</tt> </tt>
+<a name="L111"></a><tt class="py-lineno">111</tt>  <tt class="py-line"><tt class="py-string"> *     (marked by 'span.options', defined above).</tt> </tt>
+<a name="L112"></a><tt class="py-lineno">112</tt>  <tt class="py-line"><tt class="py-string"> *   - Summary tables that contain user-defined groups mark those</tt> </tt>
+<a name="L113"></a><tt class="py-lineno">113</tt>  <tt class="py-line"><tt class="py-string"> *     groups using 'group header' rows.</tt> </tt>
+<a name="L114"></a><tt class="py-lineno">114</tt>  <tt class="py-line"><tt class="py-string"> */</tt> </tt>
+<a name="L115"></a><tt class="py-lineno">115</tt>  <tt class="py-line"><tt class="py-string">td.table-header             { background: $table_hdr_bg; color: $table_hdr_fg;</tt> </tt>
+<a name="L116"></a><tt class="py-lineno">116</tt>  <tt class="py-line"><tt class="py-string">                              border: $table_border; }</tt> </tt>
+<a name="L117"></a><tt class="py-lineno">117</tt>  <tt class="py-line"><tt class="py-string">td.table-header table       { color: $table_hdr_fg; }</tt> </tt>
+<a name="L118"></a><tt class="py-lineno">118</tt>  <tt class="py-line"><tt class="py-string">td.table-header table a:link      { color: $table_hdr_link; }</tt> </tt>
+<a name="L119"></a><tt class="py-lineno">119</tt>  <tt class="py-line"><tt class="py-string">td.table-header table a:visited   { color: $table_hdr_visited_link; }</tt> </tt>
+<a name="L120"></a><tt class="py-lineno">120</tt>  <tt class="py-line"><tt class="py-string">span.table-header           { font-size: 120%; font-weight: bold; }</tt> </tt>
+<a name="L121"></a><tt class="py-lineno">121</tt>  <tt class="py-line"><tt class="py-string">th.group-header             { background: $group_hdr_bg; color: $group_hdr_fg;</tt> </tt>
+<a name="L122"></a><tt class="py-lineno">122</tt>  <tt class="py-line"><tt class="py-string">                              text-align: left; font-style: italic; </tt> </tt>
+<a name="L123"></a><tt class="py-lineno">123</tt>  <tt class="py-line"><tt class="py-string">                              font-size: 115%; </tt> </tt>
+<a name="L124"></a><tt class="py-lineno">124</tt>  <tt class="py-line"><tt class="py-string">                              border: $table_border; }</tt> </tt>
+<a name="L125"></a><tt class="py-lineno">125</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L126"></a><tt class="py-lineno">126</tt>  <tt class="py-line"><tt class="py-string">/* Summary Tables (functions, variables, etc)</tt> </tt>
+<a name="L127"></a><tt class="py-lineno">127</tt>  <tt class="py-line"><tt class="py-string"> *   - Each object is described by a single row of the table with</tt> </tt>
+<a name="L128"></a><tt class="py-lineno">128</tt>  <tt class="py-line"><tt class="py-string"> *     two cells.  The left cell gives the object's type, and is</tt> </tt>
+<a name="L129"></a><tt class="py-lineno">129</tt>  <tt class="py-line"><tt class="py-string"> *     marked with 'code.summary-type'.  The right cell gives the</tt> </tt>
+<a name="L130"></a><tt class="py-lineno">130</tt>  <tt class="py-line"><tt class="py-string"> *     object's name and a summary description.</tt> </tt>
+<a name="L131"></a><tt class="py-lineno">131</tt>  <tt class="py-line"><tt class="py-string"> *   - CSS styles for the table's header and group headers are</tt> </tt>
+<a name="L132"></a><tt class="py-lineno">132</tt>  <tt class="py-line"><tt class="py-string"> *     defined above, under 'Table Headers'</tt> </tt>
+<a name="L133"></a><tt class="py-lineno">133</tt>  <tt class="py-line"><tt class="py-string"> */</tt> </tt>
+<a name="L134"></a><tt class="py-lineno">134</tt>  <tt class="py-line"><tt class="py-string">table.summary               { border-collapse: collapse;</tt> </tt>
+<a name="L135"></a><tt class="py-lineno">135</tt>  <tt class="py-line"><tt class="py-string">                              background: $table_bg; color: $table_fg;</tt> </tt>
+<a name="L136"></a><tt class="py-lineno">136</tt>  <tt class="py-line"><tt class="py-string">                              border: $table_border;</tt> </tt>
+<a name="L137"></a><tt class="py-lineno">137</tt>  <tt class="py-line"><tt class="py-string">                              margin-bottom: 0.5em; }</tt> </tt>
+<a name="L138"></a><tt class="py-lineno">138</tt>  <tt class="py-line"><tt class="py-string">td.summary                  { border: $table_border; }</tt> </tt>
+<a name="L139"></a><tt class="py-lineno">139</tt>  <tt class="py-line"><tt class="py-string">code.summary-type           { font-size: 85%; }</tt> </tt>
+<a name="L140"></a><tt class="py-lineno">140</tt>  <tt class="py-line"><tt class="py-string">table.summary a:link        { color: $table_link; }</tt> </tt>
+<a name="L141"></a><tt class="py-lineno">141</tt>  <tt class="py-line"><tt class="py-string">table.summary a:visited     { color: $table_visited_link; }</tt> </tt>
+<a name="L142"></a><tt class="py-lineno">142</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L143"></a><tt class="py-lineno">143</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L144"></a><tt class="py-lineno">144</tt>  <tt class="py-line"><tt class="py-string">/* Details Tables (functions, variables, etc)</tt> </tt>
+<a name="L145"></a><tt class="py-lineno">145</tt>  <tt class="py-line"><tt class="py-string"> *   - Each object is described in its own div.</tt> </tt>
+<a name="L146"></a><tt class="py-lineno">146</tt>  <tt class="py-line"><tt class="py-string"> *   - A single-row summary table w/ table-header is used as</tt> </tt>
+<a name="L147"></a><tt class="py-lineno">147</tt>  <tt class="py-line"><tt class="py-string"> *     a header for each details section (CSS style for table-header</tt> </tt>
+<a name="L148"></a><tt class="py-lineno">148</tt>  <tt class="py-line"><tt class="py-string"> *     is defined above, under 'Table Headers').</tt> </tt>
+<a name="L149"></a><tt class="py-lineno">149</tt>  <tt class="py-line"><tt class="py-string"> */</tt> </tt>
+<a name="L150"></a><tt class="py-lineno">150</tt>  <tt class="py-line"><tt class="py-string">table.details               { border-collapse: collapse;</tt> </tt>
+<a name="L151"></a><tt class="py-lineno">151</tt>  <tt class="py-line"><tt class="py-string">                              background: $table_bg; color: $table_fg;</tt> </tt>
+<a name="L152"></a><tt class="py-lineno">152</tt>  <tt class="py-line"><tt class="py-string">                              border: $table_border;</tt> </tt>
+<a name="L153"></a><tt class="py-lineno">153</tt>  <tt class="py-line"><tt class="py-string">                              margin: .2em 0 0 0; }</tt> </tt>
+<a name="L154"></a><tt class="py-lineno">154</tt>  <tt class="py-line"><tt class="py-string">table.details table         { color: $table_fg; }</tt> </tt>
+<a name="L155"></a><tt class="py-lineno">155</tt>  <tt class="py-line"><tt class="py-string">table.details a:link        { color: $table_link; }</tt> </tt>
+<a name="L156"></a><tt class="py-lineno">156</tt>  <tt class="py-line"><tt class="py-string">table.details a:visited     { color: $table_visited_link; }</tt> </tt>
+<a name="L157"></a><tt class="py-lineno">157</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L158"></a><tt class="py-lineno">158</tt>  <tt class="py-line"><tt class="py-string">/* Fields */</tt> </tt>
+<a name="L159"></a><tt class="py-lineno">159</tt>  <tt class="py-line"><tt class="py-string">dl.fields                   { margin-left: 2em; margin-top: 1em;</tt> </tt>
+<a name="L160"></a><tt class="py-lineno">160</tt>  <tt class="py-line"><tt class="py-string">                              margin-bottom: 1em; }</tt> </tt>
+<a name="L161"></a><tt class="py-lineno">161</tt>  <tt class="py-line"><tt class="py-string">dl.fields dd ul             { margin-left: 0em; padding-left: 0em; }</tt> </tt>
+<a name="L162"></a><tt class="py-lineno">162</tt>  <tt class="py-line"><tt class="py-string">dl.fields dd ul li ul       { margin-left: 2em; padding-left: 0em; }</tt> </tt>
+<a name="L163"></a><tt class="py-lineno">163</tt>  <tt class="py-line"><tt class="py-string">div.fields                  { margin-left: 2em; }</tt> </tt>
+<a name="L164"></a><tt class="py-lineno">164</tt>  <tt class="py-line"><tt class="py-string">div.fields p                { margin-bottom: 0.5em; }</tt> </tt>
+<a name="L165"></a><tt class="py-lineno">165</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L166"></a><tt class="py-lineno">166</tt>  <tt class="py-line"><tt class="py-string">/* Index tables (identifier index, term index, etc)</tt> </tt>
+<a name="L167"></a><tt class="py-lineno">167</tt>  <tt class="py-line"><tt class="py-string"> *   - link-index is used for indices containing lists of links</tt> </tt>
+<a name="L168"></a><tt class="py-lineno">168</tt>  <tt class="py-line"><tt class="py-string"> *     (namely, the identifier index & term index).</tt> </tt>
+<a name="L169"></a><tt class="py-lineno">169</tt>  <tt class="py-line"><tt class="py-string"> *   - index-where is used in link indices for the text indicating</tt> </tt>
+<a name="L170"></a><tt class="py-lineno">170</tt>  <tt class="py-line"><tt class="py-string"> *     the container/source for each link.</tt> </tt>
+<a name="L171"></a><tt class="py-lineno">171</tt>  <tt class="py-line"><tt class="py-string"> *   - metadata-index is used for indices containing metadata</tt> </tt>
+<a name="L172"></a><tt class="py-lineno">172</tt>  <tt class="py-line"><tt class="py-string"> *     extracted from fields (namely, the bug index & todo index).</tt> </tt>
+<a name="L173"></a><tt class="py-lineno">173</tt>  <tt class="py-line"><tt class="py-string"> */</tt> </tt>
+<a name="L174"></a><tt class="py-lineno">174</tt>  <tt class="py-line"><tt class="py-string">table.link-index            { border-collapse: collapse;</tt> </tt>
+<a name="L175"></a><tt class="py-lineno">175</tt>  <tt class="py-line"><tt class="py-string">                              background: $table_bg; color: $table_fg;</tt> </tt>
+<a name="L176"></a><tt class="py-lineno">176</tt>  <tt class="py-line"><tt class="py-string">                              border: $table_border; }</tt> </tt>
+<a name="L177"></a><tt class="py-lineno">177</tt>  <tt class="py-line"><tt class="py-string">td.link-index               { border-width: 0px; }</tt> </tt>
+<a name="L178"></a><tt class="py-lineno">178</tt>  <tt class="py-line"><tt class="py-string">table.link-index a:link     { color: $table_link; }</tt> </tt>
+<a name="L179"></a><tt class="py-lineno">179</tt>  <tt class="py-line"><tt class="py-string">table.link-index a:visited  { color: $table_visited_link; }</tt> </tt>
+<a name="L180"></a><tt class="py-lineno">180</tt>  <tt class="py-line"><tt class="py-string">span.index-where            { font-size: 70%; }</tt> </tt>
+<a name="L181"></a><tt class="py-lineno">181</tt>  <tt class="py-line"><tt class="py-string">table.metadata-index        { border-collapse: collapse;</tt> </tt>
+<a name="L182"></a><tt class="py-lineno">182</tt>  <tt class="py-line"><tt class="py-string">                              background: $table_bg; color: $table_fg;</tt> </tt>
+<a name="L183"></a><tt class="py-lineno">183</tt>  <tt class="py-line"><tt class="py-string">                              border: $table_border; </tt> </tt>
+<a name="L184"></a><tt class="py-lineno">184</tt>  <tt class="py-line"><tt class="py-string">                              margin: .2em 0 0 0; }</tt> </tt>
+<a name="L185"></a><tt class="py-lineno">185</tt>  <tt class="py-line"><tt class="py-string">td.metadata-index           { border-width: 1px; border-style: solid; }</tt> </tt>
+<a name="L186"></a><tt class="py-lineno">186</tt>  <tt class="py-line"><tt class="py-string">table.metadata-index a:link { color: $table_link; }</tt> </tt>
+<a name="L187"></a><tt class="py-lineno">187</tt>  <tt class="py-line"><tt class="py-string">table.metadata-index a:visited  { color: $table_visited_link; }</tt> </tt>
+<a name="L188"></a><tt class="py-lineno">188</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L189"></a><tt class="py-lineno">189</tt>  <tt class="py-line"><tt class="py-string">/* Function signatures</tt> </tt>
+<a name="L190"></a><tt class="py-lineno">190</tt>  <tt class="py-line"><tt class="py-string"> *   - sig* is used for the signature in the details section.</tt> </tt>
+<a name="L191"></a><tt class="py-lineno">191</tt>  <tt class="py-line"><tt class="py-string"> *   - .summary-sig* is used for the signature in the summary </tt> </tt>
+<a name="L192"></a><tt class="py-lineno">192</tt>  <tt class="py-line"><tt class="py-string"> *     table, and when listing property accessor functions.</tt> </tt>
+<a name="L193"></a><tt class="py-lineno">193</tt>  <tt class="py-line"><tt class="py-string"> * */</tt> </tt>
+<a name="L194"></a><tt class="py-lineno">194</tt>  <tt class="py-line"><tt class="py-string">.sig-name                   { color: $sig_name; }</tt> </tt>
+<a name="L195"></a><tt class="py-lineno">195</tt>  <tt class="py-line"><tt class="py-string">.sig-arg                    { color: $sig_arg; }</tt> </tt>
+<a name="L196"></a><tt class="py-lineno">196</tt>  <tt class="py-line"><tt class="py-string">.sig-default                { color: $sig_default; }</tt> </tt>
+<a name="L197"></a><tt class="py-lineno">197</tt>  <tt class="py-line"><tt class="py-string">.summary-sig                { font-family: monospace; }</tt> </tt>
+<a name="L198"></a><tt class="py-lineno">198</tt>  <tt class="py-line"><tt class="py-string">.summary-sig-name           { color: $summary_sig_name; font-weight: bold; }</tt> </tt>
+<a name="L199"></a><tt class="py-lineno">199</tt>  <tt class="py-line"><tt class="py-string">table.summary a.summary-sig-name:link</tt> </tt>
+<a name="L200"></a><tt class="py-lineno">200</tt>  <tt class="py-line"><tt class="py-string">                            { color: $summary_sig_name; font-weight: bold; }</tt> </tt>
+<a name="L201"></a><tt class="py-lineno">201</tt>  <tt class="py-line"><tt class="py-string">table.summary a.summary-sig-name:visited</tt> </tt>
+<a name="L202"></a><tt class="py-lineno">202</tt>  <tt class="py-line"><tt class="py-string">                            { color: $summary_sig_name; font-weight: bold; }</tt> </tt>
+<a name="L203"></a><tt class="py-lineno">203</tt>  <tt class="py-line"><tt class="py-string">.summary-sig-arg            { color: $summary_sig_arg; }</tt> </tt>
+<a name="L204"></a><tt class="py-lineno">204</tt>  <tt class="py-line"><tt class="py-string">.summary-sig-default        { color: $summary_sig_default; }</tt> </tt>
+<a name="L205"></a><tt class="py-lineno">205</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L206"></a><tt class="py-lineno">206</tt>  <tt class="py-line"><tt class="py-string">/* Subclass list</tt> </tt>
+<a name="L207"></a><tt class="py-lineno">207</tt>  <tt class="py-line"><tt class="py-string"> */</tt> </tt>
+<a name="L208"></a><tt class="py-lineno">208</tt>  <tt class="py-line"><tt class="py-string">ul.subclass-list { display: inline; }</tt> </tt>
+<a name="L209"></a><tt class="py-lineno">209</tt>  <tt class="py-line"><tt class="py-string">ul.subclass-list li { display: inline; }</tt> </tt>
+<a name="L210"></a><tt class="py-lineno">210</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L211"></a><tt class="py-lineno">211</tt>  <tt class="py-line"><tt class="py-string">/* To render variables, classes etc. like functions */</tt> </tt>
+<a name="L212"></a><tt class="py-lineno">212</tt>  <tt class="py-line"><tt class="py-string">table.summary .summary-name { color: $summary_sig_name; font-weight: bold;</tt> </tt>
+<a name="L213"></a><tt class="py-lineno">213</tt>  <tt class="py-line"><tt class="py-string">                              font-family: monospace; }</tt> </tt>
+<a name="L214"></a><tt class="py-lineno">214</tt>  <tt class="py-line"><tt class="py-string">table.summary</tt> </tt>
+<a name="L215"></a><tt class="py-lineno">215</tt>  <tt class="py-line"><tt class="py-string">     a.summary-name:link    { color: $summary_sig_name; font-weight: bold;</tt> </tt>
+<a name="L216"></a><tt class="py-lineno">216</tt>  <tt class="py-line"><tt class="py-string">                              font-family: monospace; }</tt> </tt>
+<a name="L217"></a><tt class="py-lineno">217</tt>  <tt class="py-line"><tt class="py-string">table.summary</tt> </tt>
+<a name="L218"></a><tt class="py-lineno">218</tt>  <tt class="py-line"><tt class="py-string">    a.summary-name:visited  { color: $summary_sig_name; font-weight: bold;</tt> </tt>
+<a name="L219"></a><tt class="py-lineno">219</tt>  <tt class="py-line"><tt class="py-string">                              font-family: monospace; }</tt> </tt>
+<a name="L220"></a><tt class="py-lineno">220</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L221"></a><tt class="py-lineno">221</tt>  <tt class="py-line"><tt class="py-string">/* Variable values</tt> </tt>
+<a name="L222"></a><tt class="py-lineno">222</tt>  <tt class="py-line"><tt class="py-string"> *   - In the 'variable details' sections, each varaible's value is</tt> </tt>
+<a name="L223"></a><tt class="py-lineno">223</tt>  <tt class="py-line"><tt class="py-string"> *     listed in a 'pre.variable' box.  The width of this box is</tt> </tt>
+<a name="L224"></a><tt class="py-lineno">224</tt>  <tt class="py-line"><tt class="py-string"> *     restricted to 80 chars; if the value's repr is longer than</tt> </tt>
+<a name="L225"></a><tt class="py-lineno">225</tt>  <tt class="py-line"><tt class="py-string"> *     this it will be wrapped, using a backslash marked with</tt> </tt>
+<a name="L226"></a><tt class="py-lineno">226</tt>  <tt class="py-line"><tt class="py-string"> *     class 'variable-linewrap'.  If the value's repr is longer</tt> </tt>
+<a name="L227"></a><tt class="py-lineno">227</tt>  <tt class="py-line"><tt class="py-string"> *     than 3 lines, the rest will be ellided; and an ellipsis</tt> </tt>
+<a name="L228"></a><tt class="py-lineno">228</tt>  <tt class="py-line"><tt class="py-string"> *     marker ('...' marked with 'variable-ellipsis') will be used.</tt> </tt>
+<a name="L229"></a><tt class="py-lineno">229</tt>  <tt class="py-line"><tt class="py-string"> *   - If the value is a string, its quote marks will be marked</tt> </tt>
+<a name="L230"></a><tt class="py-lineno">230</tt>  <tt class="py-line"><tt class="py-string"> *     with 'variable-quote'.</tt> </tt>
+<a name="L231"></a><tt class="py-lineno">231</tt>  <tt class="py-line"><tt class="py-string"> *   - If the variable is a regexp, it is syntax-highlighted using</tt> </tt>
+<a name="L232"></a><tt class="py-lineno">232</tt>  <tt class="py-line"><tt class="py-string"> *     the re* CSS classes.</tt> </tt>
+<a name="L233"></a><tt class="py-lineno">233</tt>  <tt class="py-line"><tt class="py-string"> */</tt> </tt>
+<a name="L234"></a><tt class="py-lineno">234</tt>  <tt class="py-line"><tt class="py-string">pre.variable                { padding: .5em; margin: 0;</tt> </tt>
+<a name="L235"></a><tt class="py-lineno">235</tt>  <tt class="py-line"><tt class="py-string">                              background: $variable_bg; color: $variable_fg;</tt> </tt>
+<a name="L236"></a><tt class="py-lineno">236</tt>  <tt class="py-line"><tt class="py-string">                              border: $variable_border; }</tt> </tt>
+<a name="L237"></a><tt class="py-lineno">237</tt>  <tt class="py-line"><tt class="py-string">.variable-linewrap          { color: $variable_linewrap; font-weight: bold; }</tt> </tt>
+<a name="L238"></a><tt class="py-lineno">238</tt>  <tt class="py-line"><tt class="py-string">.variable-ellipsis          { color: $variable_ellipsis; font-weight: bold; }</tt> </tt>
+<a name="L239"></a><tt class="py-lineno">239</tt>  <tt class="py-line"><tt class="py-string">.variable-quote             { color: $variable_quote; font-weight: bold; }</tt> </tt>
+<a name="L240"></a><tt class="py-lineno">240</tt>  <tt class="py-line"><tt class="py-string">.variable-group             { color: $variable_group; font-weight: bold; }</tt> </tt>
+<a name="L241"></a><tt class="py-lineno">241</tt>  <tt class="py-line"><tt class="py-string">.variable-op                { color: $variable_op; font-weight: bold; }</tt> </tt>
+<a name="L242"></a><tt class="py-lineno">242</tt>  <tt class="py-line"><tt class="py-string">.variable-string            { color: $variable_string; }</tt> </tt>
+<a name="L243"></a><tt class="py-lineno">243</tt>  <tt class="py-line"><tt class="py-string">.variable-unknown           { color: $variable_unknown; font-weight: bold; }</tt> </tt>
+<a name="L244"></a><tt class="py-lineno">244</tt>  <tt class="py-line"><tt class="py-string">.re                         { color: $re; }</tt> </tt>
+<a name="L245"></a><tt class="py-lineno">245</tt>  <tt class="py-line"><tt class="py-string">.re-char                    { color: $re_char; }</tt> </tt>
+<a name="L246"></a><tt class="py-lineno">246</tt>  <tt class="py-line"><tt class="py-string">.re-op                      { color: $re_op; }</tt> </tt>
+<a name="L247"></a><tt class="py-lineno">247</tt>  <tt class="py-line"><tt class="py-string">.re-group                   { color: $re_group; }</tt> </tt>
+<a name="L248"></a><tt class="py-lineno">248</tt>  <tt class="py-line"><tt class="py-string">.re-ref                     { color: $re_ref; }</tt> </tt>
+<a name="L249"></a><tt class="py-lineno">249</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L250"></a><tt class="py-lineno">250</tt>  <tt class="py-line"><tt class="py-string">/* Base tree</tt> </tt>
+<a name="L251"></a><tt class="py-lineno">251</tt>  <tt class="py-line"><tt class="py-string"> *   - Used by class pages to display the base class hierarchy.</tt> </tt>
+<a name="L252"></a><tt class="py-lineno">252</tt>  <tt class="py-line"><tt class="py-string"> */</tt> </tt>
+<a name="L253"></a><tt class="py-lineno">253</tt>  <tt class="py-line"><tt class="py-string">pre.base-tree               { font-size: 80%; margin: 0; }</tt> </tt>
+<a name="L254"></a><tt class="py-lineno">254</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L255"></a><tt class="py-lineno">255</tt>  <tt class="py-line"><tt class="py-string">/* Frames-based table of contents headers</tt> </tt>
+<a name="L256"></a><tt class="py-lineno">256</tt>  <tt class="py-line"><tt class="py-string"> *   - Consists of two frames: one for selecting modules; and</tt> </tt>
+<a name="L257"></a><tt class="py-lineno">257</tt>  <tt class="py-line"><tt class="py-string"> *     the other listing the contents of the selected module.</tt> </tt>
+<a name="L258"></a><tt class="py-lineno">258</tt>  <tt class="py-line"><tt class="py-string"> *   - h1.toc is used for each frame's heading</tt> </tt>
+<a name="L259"></a><tt class="py-lineno">259</tt>  <tt class="py-line"><tt class="py-string"> *   - h2.toc is used for subheadings within each frame.</tt> </tt>
+<a name="L260"></a><tt class="py-lineno">260</tt>  <tt class="py-line"><tt class="py-string"> */</tt> </tt>
+<a name="L261"></a><tt class="py-lineno">261</tt>  <tt class="py-line"><tt class="py-string">h1.toc                      { text-align: center; font-size: 105%;</tt> </tt>
+<a name="L262"></a><tt class="py-lineno">262</tt>  <tt class="py-line"><tt class="py-string">                              margin: 0; font-weight: bold;</tt> </tt>
+<a name="L263"></a><tt class="py-lineno">263</tt>  <tt class="py-line"><tt class="py-string">                              padding: 0; }</tt> </tt>
+<a name="L264"></a><tt class="py-lineno">264</tt>  <tt class="py-line"><tt class="py-string">h2.toc                      { font-size: 100%; font-weight: bold; </tt> </tt>
+<a name="L265"></a><tt class="py-lineno">265</tt>  <tt class="py-line"><tt class="py-string">                              margin: 0.5em 0 0 -0.3em; }</tt> </tt>
+<a name="L266"></a><tt class="py-lineno">266</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L267"></a><tt class="py-lineno">267</tt>  <tt class="py-line"><tt class="py-string">/* Syntax Highlighting for Source Code</tt> </tt>
+<a name="L268"></a><tt class="py-lineno">268</tt>  <tt class="py-line"><tt class="py-string"> *   - doctest examples are displayed in a 'pre.py-doctest' block.</tt> </tt>
+<a name="L269"></a><tt class="py-lineno">269</tt>  <tt class="py-line"><tt class="py-string"> *     If the example is in a details table entry, then it will use</tt> </tt>
+<a name="L270"></a><tt class="py-lineno">270</tt>  <tt class="py-line"><tt class="py-string"> *     the colors specified by the 'table pre.py-doctest' line.</tt> </tt>
+<a name="L271"></a><tt class="py-lineno">271</tt>  <tt class="py-line"><tt class="py-string"> *   - Source code listings are displayed in a 'pre.py-src' block.</tt> </tt>
+<a name="L272"></a><tt class="py-lineno">272</tt>  <tt class="py-line"><tt class="py-string"> *     Each line is marked with 'span.py-line' (used to draw a line</tt> </tt>
+<a name="L273"></a><tt class="py-lineno">273</tt>  <tt class="py-line"><tt class="py-string"> *     down the left margin, separating the code from the line</tt> </tt>
+<a name="L274"></a><tt class="py-lineno">274</tt>  <tt class="py-line"><tt class="py-string"> *     numbers).  Line numbers are displayed with 'span.py-lineno'.</tt> </tt>
+<a name="L275"></a><tt class="py-lineno">275</tt>  <tt class="py-line"><tt class="py-string"> *     The expand/collapse block toggle button is displayed with</tt> </tt>
+<a name="L276"></a><tt class="py-lineno">276</tt>  <tt class="py-line"><tt class="py-string"> *     'a.py-toggle' (Note: the CSS style for 'a.py-toggle' should not</tt> </tt>
+<a name="L277"></a><tt class="py-lineno">277</tt>  <tt class="py-line"><tt class="py-string"> *     modify the font size of the text.)</tt> </tt>
+<a name="L278"></a><tt class="py-lineno">278</tt>  <tt class="py-line"><tt class="py-string"> *   - If a source code page is opened with an anchor, then the</tt> </tt>
+<a name="L279"></a><tt class="py-lineno">279</tt>  <tt class="py-line"><tt class="py-string"> *     corresponding code block will be highlighted.  The code</tt> </tt>
+<a name="L280"></a><tt class="py-lineno">280</tt>  <tt class="py-line"><tt class="py-string"> *     block's header is highlighted with 'py-highlight-hdr'; and</tt> </tt>
+<a name="L281"></a><tt class="py-lineno">281</tt>  <tt class="py-line"><tt class="py-string"> *     the code block's body is highlighted with 'py-highlight'.</tt> </tt>
+<a name="L282"></a><tt class="py-lineno">282</tt>  <tt class="py-line"><tt class="py-string"> *   - The remaining py-* classes are used to perform syntax</tt> </tt>
+<a name="L283"></a><tt class="py-lineno">283</tt>  <tt class="py-line"><tt class="py-string"> *     highlighting (py-string for string literals, py-name for names,</tt> </tt>
+<a name="L284"></a><tt class="py-lineno">284</tt>  <tt class="py-line"><tt class="py-string"> *     etc.)</tt> </tt>
+<a name="L285"></a><tt class="py-lineno">285</tt>  <tt class="py-line"><tt class="py-string"> */</tt> </tt>
+<a name="L286"></a><tt class="py-lineno">286</tt>  <tt class="py-line"><tt class="py-string">pre.py-doctest              { padding: .5em; margin: 1em;</tt> </tt>
+<a name="L287"></a><tt class="py-lineno">287</tt>  <tt class="py-line"><tt class="py-string">                              background: $doctest_bg; color: $doctest_fg;</tt> </tt>
+<a name="L288"></a><tt class="py-lineno">288</tt>  <tt class="py-line"><tt class="py-string">                              border: $doctest_border; }</tt> </tt>
+<a name="L289"></a><tt class="py-lineno">289</tt>  <tt class="py-line"><tt class="py-string">table pre.py-doctest        { background: $doctest_in_table_bg;</tt> </tt>
+<a name="L290"></a><tt class="py-lineno">290</tt>  <tt class="py-line"><tt class="py-string">                              color: $doctest_in_table_fg; }</tt> </tt>
+<a name="L291"></a><tt class="py-lineno">291</tt>  <tt class="py-line"><tt class="py-string">pre.py-src                  { border: $pysrc_border; </tt> </tt>
+<a name="L292"></a><tt class="py-lineno">292</tt>  <tt class="py-line"><tt class="py-string">                              background: $pysrc_bg; color: $pysrc_fg; }</tt> </tt>
+<a name="L293"></a><tt class="py-lineno">293</tt>  <tt class="py-line"><tt class="py-string">.py-line                    { border-left: $pysrc_sep_border; </tt> </tt>
+<a name="L294"></a><tt class="py-lineno">294</tt>  <tt class="py-line"><tt class="py-string">                              margin-left: .2em; padding-left: .4em; }</tt> </tt>
+<a name="L295"></a><tt class="py-lineno">295</tt>  <tt class="py-line"><tt class="py-string">.py-lineno                  { font-style: italic; font-size: 90%;</tt> </tt>
+<a name="L296"></a><tt class="py-lineno">296</tt>  <tt class="py-line"><tt class="py-string">                              padding-left: .5em; }</tt> </tt>
+<a name="L297"></a><tt class="py-lineno">297</tt>  <tt class="py-line"><tt class="py-string">a.py-toggle                 { text-decoration: none; }</tt> </tt>
+<a name="L298"></a><tt class="py-lineno">298</tt>  <tt class="py-line"><tt class="py-string">div.py-highlight-hdr        { border-top: $pysrc_border;</tt> </tt>
+<a name="L299"></a><tt class="py-lineno">299</tt>  <tt class="py-line"><tt class="py-string">                              border-bottom: $pysrc_border;</tt> </tt>
+<a name="L300"></a><tt class="py-lineno">300</tt>  <tt class="py-line"><tt class="py-string">                              background: $pysrc_highlight_hdr_bg; }</tt> </tt>
+<a name="L301"></a><tt class="py-lineno">301</tt>  <tt class="py-line"><tt class="py-string">div.py-highlight            { border-bottom: $pysrc_border;</tt> </tt>
+<a name="L302"></a><tt class="py-lineno">302</tt>  <tt class="py-line"><tt class="py-string">                              background: $pysrc_highlight_bg; }</tt> </tt>
+<a name="L303"></a><tt class="py-lineno">303</tt>  <tt class="py-line"><tt class="py-string">.py-prompt                  { color: $py_prompt; font-weight: bold;}</tt> </tt>
+<a name="L304"></a><tt class="py-lineno">304</tt>  <tt class="py-line"><tt class="py-string">.py-more                    { color: $py_more; font-weight: bold;}</tt> </tt>
+<a name="L305"></a><tt class="py-lineno">305</tt>  <tt class="py-line"><tt class="py-string">.py-string                  { color: $py_string; }</tt> </tt>
+<a name="L306"></a><tt class="py-lineno">306</tt>  <tt class="py-line"><tt class="py-string">.py-comment                 { color: $py_comment; }</tt> </tt>
+<a name="L307"></a><tt class="py-lineno">307</tt>  <tt class="py-line"><tt class="py-string">.py-keyword                 { color: $py_keyword; }</tt> </tt>
+<a name="L308"></a><tt class="py-lineno">308</tt>  <tt class="py-line"><tt class="py-string">.py-output                  { color: $py_output; }</tt> </tt>
+<a name="L309"></a><tt class="py-lineno">309</tt>  <tt class="py-line"><tt class="py-string">.py-name                    { color: $py_name; }</tt> </tt>
+<a name="L310"></a><tt class="py-lineno">310</tt>  <tt class="py-line"><tt class="py-string">.py-name:link               { color: $py_name !important; }</tt> </tt>
+<a name="L311"></a><tt class="py-lineno">311</tt>  <tt class="py-line"><tt class="py-string">.py-name:visited            { color: $py_name !important; }</tt> </tt>
+<a name="L312"></a><tt class="py-lineno">312</tt>  <tt class="py-line"><tt class="py-string">.py-number                  { color: $py_number; }</tt> </tt>
+<a name="L313"></a><tt class="py-lineno">313</tt>  <tt class="py-line"><tt class="py-string">.py-defname                 { color: $py_def_name; font-weight: bold; }</tt> </tt>
+<a name="L314"></a><tt class="py-lineno">314</tt>  <tt class="py-line"><tt class="py-string">.py-def-name                { color: $py_def_name; font-weight: bold; }</tt> </tt>
+<a name="L315"></a><tt class="py-lineno">315</tt>  <tt class="py-line"><tt class="py-string">.py-base-class              { color: $py_base_class; }</tt> </tt>
+<a name="L316"></a><tt class="py-lineno">316</tt>  <tt class="py-line"><tt class="py-string">.py-param                   { color: $py_param; }</tt> </tt>
+<a name="L317"></a><tt class="py-lineno">317</tt>  <tt class="py-line"><tt class="py-string">.py-docstring               { color: $py_docstring; }</tt> </tt>
+<a name="L318"></a><tt class="py-lineno">318</tt>  <tt class="py-line"><tt class="py-string">.py-decorator               { color: $py_decorator; }</tt> </tt>
+<a name="L319"></a><tt class="py-lineno">319</tt>  <tt class="py-line"><tt class="py-string">/* Use this if you don't want links to names underlined: */</tt> </tt>
+<a name="L320"></a><tt class="py-lineno">320</tt>  <tt class="py-line"><tt class="py-string">/*a.py-name                   { text-decoration: none; }*/</tt> </tt>
+<a name="L321"></a><tt class="py-lineno">321</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L322"></a><tt class="py-lineno">322</tt>  <tt class="py-line"><tt class="py-string">/* Graphs & Diagrams</tt> </tt>
+<a name="L323"></a><tt class="py-lineno">323</tt>  <tt class="py-line"><tt class="py-string"> *   - These CSS styles are used for graphs & diagrams generated using</tt> </tt>
+<a name="L324"></a><tt class="py-lineno">324</tt>  <tt class="py-line"><tt class="py-string"> *     Graphviz dot.  'img.graph-without-title' is used for bare</tt> </tt>
+<a name="L325"></a><tt class="py-lineno">325</tt>  <tt class="py-line"><tt class="py-string"> *     diagrams (to remove the border created by making the image</tt> </tt>
+<a name="L326"></a><tt class="py-lineno">326</tt>  <tt class="py-line"><tt class="py-string"> *     clickable).</tt> </tt>
+<a name="L327"></a><tt class="py-lineno">327</tt>  <tt class="py-line"><tt class="py-string"> */</tt> </tt>
+<a name="L328"></a><tt class="py-lineno">328</tt>  <tt class="py-line"><tt class="py-string">img.graph-without-title     { border: none; }</tt> </tt>
+<a name="L329"></a><tt class="py-lineno">329</tt>  <tt class="py-line"><tt class="py-string">img.graph-with-title        { border: $graph_border; }</tt> </tt>
+<a name="L330"></a><tt class="py-lineno">330</tt>  <tt class="py-line"><tt class="py-string">span.graph-title            { font-weight: bold; }</tt> </tt>
+<a name="L331"></a><tt class="py-lineno">331</tt>  <tt class="py-line"><tt class="py-string">span.graph-caption          { }</tt> </tt>
+<a name="L332"></a><tt class="py-lineno">332</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L333"></a><tt class="py-lineno">333</tt>  <tt class="py-line"><tt class="py-string">/* General-purpose classes</tt> </tt>
+<a name="L334"></a><tt class="py-lineno">334</tt>  <tt class="py-line"><tt class="py-string"> *   - 'p.indent-wrapped-lines' defines a paragraph whose first line</tt> </tt>
+<a name="L335"></a><tt class="py-lineno">335</tt>  <tt class="py-line"><tt class="py-string"> *     is not indented, but whose subsequent lines are.</tt> </tt>
+<a name="L336"></a><tt class="py-lineno">336</tt>  <tt class="py-line"><tt class="py-string"> *   - The 'nomargin-top' class is used to remove the top margin (e.g.</tt> </tt>
+<a name="L337"></a><tt class="py-lineno">337</tt>  <tt class="py-line"><tt class="py-string"> *     from lists).  The 'nomargin' class is used to remove both the</tt> </tt>
+<a name="L338"></a><tt class="py-lineno">338</tt>  <tt class="py-line"><tt class="py-string"> *     top and bottom margin (but not the left or right margin --</tt> </tt>
+<a name="L339"></a><tt class="py-lineno">339</tt>  <tt class="py-line"><tt class="py-string"> *     for lists, that would cause the bullets to disappear.)</tt> </tt>
+<a name="L340"></a><tt class="py-lineno">340</tt>  <tt class="py-line"><tt class="py-string"> */</tt> </tt>
+<a name="L341"></a><tt class="py-lineno">341</tt>  <tt class="py-line"><tt class="py-string">p.indent-wrapped-lines      { padding: 0 0 0 7em; text-indent: -7em; </tt> </tt>
+<a name="L342"></a><tt class="py-lineno">342</tt>  <tt class="py-line"><tt class="py-string">                              margin: 0; }</tt> </tt>
+<a name="L343"></a><tt class="py-lineno">343</tt>  <tt class="py-line"><tt class="py-string">.nomargin-top               { margin-top: 0; }</tt> </tt>
+<a name="L344"></a><tt class="py-lineno">344</tt>  <tt class="py-line"><tt class="py-string">.nomargin                   { margin-top: 0; margin-bottom: 0; }</tt> </tt>
+<a name="L345"></a><tt class="py-lineno">345</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L346"></a><tt class="py-lineno">346</tt>  <tt class="py-line"><tt class="py-string">/* HTML Log */</tt> </tt>
+<a name="L347"></a><tt class="py-lineno">347</tt>  <tt class="py-line"><tt class="py-string">div.log-block               { padding: 0; margin: .5em 0 .5em 0;</tt> </tt>
+<a name="L348"></a><tt class="py-lineno">348</tt>  <tt class="py-line"><tt class="py-string">                              background: $log_bg; color: $log_fg;</tt> </tt>
+<a name="L349"></a><tt class="py-lineno">349</tt>  <tt class="py-line"><tt class="py-string">                              border: $log_border; }</tt> </tt>
+<a name="L350"></a><tt class="py-lineno">350</tt>  <tt class="py-line"><tt class="py-string">div.log-error               { padding: .1em .3em .1em .3em; margin: 4px;</tt> </tt>
+<a name="L351"></a><tt class="py-lineno">351</tt>  <tt class="py-line"><tt class="py-string">                              background: $log_error_bg; color: $log_error_fg;</tt> </tt>
+<a name="L352"></a><tt class="py-lineno">352</tt>  <tt class="py-line"><tt class="py-string">                              border: $log_error_border; }</tt> </tt>
+<a name="L353"></a><tt class="py-lineno">353</tt>  <tt class="py-line"><tt class="py-string">div.log-warning             { padding: .1em .3em .1em .3em; margin: 4px;</tt> </tt>
+<a name="L354"></a><tt class="py-lineno">354</tt>  <tt class="py-line"><tt class="py-string">                              background: $log_warn_bg; color: $log_warn_fg;</tt> </tt>
+<a name="L355"></a><tt class="py-lineno">355</tt>  <tt class="py-line"><tt class="py-string">                              border: $log_warn_border; }</tt> </tt>
+<a name="L356"></a><tt class="py-lineno">356</tt>  <tt class="py-line"><tt class="py-string">div.log-info               { padding: .1em .3em .1em .3em; margin: 4px;</tt> </tt>
+<a name="L357"></a><tt class="py-lineno">357</tt>  <tt class="py-line"><tt class="py-string">                              background: $log_info_bg; color: $log_info_fg;</tt> </tt>
+<a name="L358"></a><tt class="py-lineno">358</tt>  <tt class="py-line"><tt class="py-string">                              border: $log_info_border; }</tt> </tt>
+<a name="L359"></a><tt class="py-lineno">359</tt>  <tt class="py-line"><tt class="py-string">h2.log-hdr                  { background: $log_hdr_bg; color: $log_hdr_fg;</tt> </tt>
+<a name="L360"></a><tt class="py-lineno">360</tt>  <tt class="py-line"><tt class="py-string">                              margin: 0; padding: 0em 0.5em 0em 0.5em;</tt> </tt>
+<a name="L361"></a><tt class="py-lineno">361</tt>  <tt class="py-line"><tt class="py-string">                              border-bottom: $log_border; font-size: 110%; }</tt> </tt>
+<a name="L362"></a><tt class="py-lineno">362</tt>  <tt class="py-line"><tt class="py-string">p.log                       { font-weight: bold; margin: .5em 0 .5em 0; }</tt> </tt>
+<a name="L363"></a><tt class="py-lineno">363</tt>  <tt class="py-line"><tt class="py-string">tr.opt-changed              { color: $opt_changed_fg; font-weight: bold; }</tt> </tt>
+<a name="L364"></a><tt class="py-lineno">364</tt>  <tt class="py-line"><tt class="py-string">tr.opt-default              { color: $opt_default_fg; }</tt> </tt>
+<a name="L365"></a><tt class="py-lineno">365</tt>  <tt class="py-line"><tt class="py-string">pre.log                     { margin: 0; padding: 0; padding-left: 1em; }</tt> </tt>
+<a name="L366"></a><tt class="py-lineno">366</tt>  <tt class="py-line"><tt class="py-string">"""</tt>  </tt>
+<a name="L367"></a><tt class="py-lineno">367</tt>  <tt class="py-line"> </tt>
+<a name="L368"></a><tt class="py-lineno">368</tt>  <tt class="py-line"><tt class="py-comment">############################################################</tt> </tt>
+<a name="L369"></a><tt class="py-lineno">369</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## Derived stylesheets</tt> </tt>
+<a name="L370"></a><tt class="py-lineno">370</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">############################################################</tt> </tt>
+<a name="L371"></a><tt class="py-lineno">371</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Use some simple manipulations to produce a wide variety of color</tt> </tt>
+<a name="L372"></a><tt class="py-lineno">372</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># schemes.  In particular, use th _COLOR_RE regular expression to</tt> </tt>
+<a name="L373"></a><tt class="py-lineno">373</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># search for colors, and to transform them in various ways.</tt> </tt>
+<a name="L374"></a><tt class="py-lineno">374</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L375"></a><tt class="py-lineno">375</tt>  <tt class="py-line"><tt id="link-1" class="py-name" targets="Variable epydoc.docwriter.html_css._COLOR_RE=epydoc.docwriter.html_css-module.html#_COLOR_RE"><a title="epydoc.docwriter.html_css._COLOR_RE" class="py-name" href="#" onclick="return doclink('link-1', '_COLOR_RE', 'link-1');">_COLOR_RE</a></tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">compile</tt><tt class="py-op">(</tt><tt  [...]
+<a name="L376"></a><tt class="py-lineno">376</tt>  <tt class="py-line"> </tt>
+<a name="_set_colors"></a><div id="_set_colors-def"><a name="L377"></a><tt class="py-lineno">377</tt> <a class="py-toggle" href="#" id="_set_colors-toggle" onclick="return toggle('_set_colors');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html_css-module.html#_set_colors">_set_colors</a><tt class="py-op">(</tt><tt class="py-param">template</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-param">dicts</tt><tt cl [...]
+</div><div id="_set_colors-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_set_colors-expanded"><a name="L378"></a><tt class="py-lineno">378</tt>  <tt class="py-line">    <tt class="py-name">colors</tt> <tt class="py-op">=</tt> <tt class="py-name">dicts</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">copy</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L379"></a><tt class="py-lineno">379</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">d</tt> <tt class="py-keyword">in</tt> <tt class="py-name">dicts</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> <tt class="py-name">colors</tt><tt class="py-op">.</tt><tt class="py-name">update</tt><tt class="py-op">(</tt><tt class="py-name">d</tt><tt class="py-op">)</tt> </tt>
+<a name="L380"></a><tt class="py-lineno">380</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt class="py-string">r'\$(\w+)'</tt><tt class="py-op">,</tt> <tt class="py-keyword">lambda</tt> <tt class="py-name">m</tt><tt class="py-op">:</tt><tt class="py-name">colors</tt><tt class="py-op">[</tt><tt class="py-name">m</tt><tt class="py-op">.</tt><tt class="py-name">group</ [...]
+</div><a name="L381"></a><tt class="py-lineno">381</tt>  <tt class="py-line">     </tt>
+<a name="_rv"></a><div id="_rv-def"><a name="L382"></a><tt class="py-lineno">382</tt> <a class="py-toggle" href="#" id="_rv-toggle" onclick="return toggle('_rv');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html_css-module.html#_rv">_rv</a><tt class="py-op">(</tt><tt class="py-param">match</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_rv-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_rv-expanded"><a name="L383"></a><tt class="py-lineno">383</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L384"></a><tt class="py-lineno">384</tt>  <tt class="py-line"><tt class="py-docstring">    Given a regexp match for a color, return the reverse-video version</tt> </tt>
+<a name="L385"></a><tt class="py-lineno">385</tt>  <tt class="py-line"><tt class="py-docstring">    of that color.</tt> </tt>
+<a name="L386"></a><tt class="py-lineno">386</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L387"></a><tt class="py-lineno">387</tt>  <tt class="py-line"><tt class="py-docstring">    @param match: A regular expression match.</tt> </tt>
+<a name="L388"></a><tt class="py-lineno">388</tt>  <tt class="py-line"><tt class="py-docstring">    @type match: C{Match}</tt> </tt>
+<a name="L389"></a><tt class="py-lineno">389</tt>  <tt class="py-line"><tt class="py-docstring">    @return: The reverse-video color.</tt> </tt>
+<a name="L390"></a><tt class="py-lineno">390</tt>  <tt class="py-line"><tt class="py-docstring">    @rtype: C{string}</tt> </tt>
+<a name="L391"></a><tt class="py-lineno">391</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L392"></a><tt class="py-lineno">392</tt>  <tt class="py-line">    <tt class="py-name">rgb</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">grp</tt><tt class="py-op">,</tt> <tt class="py-number">16</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">grp</tt> <tt class="py-keyword">in</tt> <tt class="py-name">match</tt><tt class="py-op">.</tt><tt class="py-name">groups</tt><tt [...]
+<a name="L393"></a><tt class="py-lineno">393</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-string">'#'</tt> <tt class="py-op">+</tt> <tt class="py-string">''</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">'%02x'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-number">255</tt><tt class="py-op">-</tt><tt class="py-name">c</tt><tt class="py-op">)</tt> <tt clas [...]
+</div><a name="L394"></a><tt class="py-lineno">394</tt>  <tt class="py-line"> </tt>
+<a name="_darken_darks"></a><div id="_darken_darks-def"><a name="L395"></a><tt class="py-lineno">395</tt> <a class="py-toggle" href="#" id="_darken_darks-toggle" onclick="return toggle('_darken_darks');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.html_css-module.html#_darken_darks">_darken_darks</a><tt class="py-op">(</tt><tt class="py-param">match</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_darken_darks-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_darken_darks-expanded"><a name="L396"></a><tt class="py-lineno">396</tt>  <tt class="py-line">    <tt class="py-name">rgb</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">grp</tt><tt class="py-op">,</tt> <tt class="py-number">16</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">grp [...]
+<a name="L397"></a><tt class="py-lineno">397</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-string">'#'</tt> <tt class="py-op">+</tt> <tt class="py-string">''</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">'%02x'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">/</tt><tt class="py-n [...]
+</div><a name="L398"></a><tt class="py-lineno">398</tt>  <tt class="py-line"> </tt>
+<a name="L399"></a><tt class="py-lineno">399</tt>  <tt class="py-line"><tt id="link-2" class="py-name" targets="Variable epydoc.docwriter.html_css._WHITE_COLORS=epydoc.docwriter.html_css-module.html#_WHITE_COLORS"><a title="epydoc.docwriter.html_css._WHITE_COLORS" class="py-name" href="#" onclick="return doclink('link-2', '_WHITE_COLORS', 'link-2');">_WHITE_COLORS</a></tt> <tt class="py-op">=</tt> <tt class="py-name">dict</tt><tt class="py-op">(</tt> </tt>
+<a name="L400"></a><tt class="py-lineno">400</tt>  <tt class="py-line">    <tt class="py-comment"># Defaults:</tt> </tt>
+<a name="L401"></a><tt class="py-lineno">401</tt>  <tt class="py-line">    <tt class="py-name">body_bg</tt>                 <tt class="py-op">=</tt>  <tt class="py-string">'#ffffff'</tt><tt class="py-op">,</tt> </tt>
+<a name="L402"></a><tt class="py-lineno">402</tt>  <tt class="py-line">    <tt class="py-name">body_fg</tt>                 <tt class="py-op">=</tt>  <tt class="py-string">'#000000'</tt><tt class="py-op">,</tt> </tt>
+<a name="L403"></a><tt class="py-lineno">403</tt>  <tt class="py-line">    <tt class="py-name">body_link</tt>               <tt class="py-op">=</tt>  <tt class="py-string">'#0000ff'</tt><tt class="py-op">,</tt> </tt>
+<a name="L404"></a><tt class="py-lineno">404</tt>  <tt class="py-line">    <tt class="py-name">body_visited_link</tt>       <tt class="py-op">=</tt>  <tt class="py-string">'#204080'</tt><tt class="py-op">,</tt> </tt>
+<a name="L405"></a><tt class="py-lineno">405</tt>  <tt class="py-line">    <tt class="py-comment"># Navigation bar:</tt> </tt>
+<a name="L406"></a><tt class="py-lineno">406</tt>  <tt class="py-line">    <tt class="py-name">navbar_bg</tt>               <tt class="py-op">=</tt>  <tt class="py-string">'#a0c0ff'</tt><tt class="py-op">,</tt> </tt>
+<a name="L407"></a><tt class="py-lineno">407</tt>  <tt class="py-line">    <tt class="py-name">navbar_fg</tt>               <tt class="py-op">=</tt>  <tt class="py-string">'#000000'</tt><tt class="py-op">,</tt> </tt>
+<a name="L408"></a><tt class="py-lineno">408</tt>  <tt class="py-line">    <tt class="py-name">navbar_border</tt>           <tt class="py-op">=</tt>  <tt class="py-string">'2px groove #c0d0d0'</tt><tt class="py-op">,</tt> </tt>
+<a name="L409"></a><tt class="py-lineno">409</tt>  <tt class="py-line">    <tt class="py-name">navbar_select_bg</tt>        <tt class="py-op">=</tt>  <tt class="py-string">'#70b0ff'</tt><tt class="py-op">,</tt> </tt>
+<a name="L410"></a><tt class="py-lineno">410</tt>  <tt class="py-line">    <tt class="py-name">navbar_select_fg</tt>        <tt class="py-op">=</tt>  <tt class="py-string">'#000000'</tt><tt class="py-op">,</tt> </tt>
+<a name="L411"></a><tt class="py-lineno">411</tt>  <tt class="py-line">    <tt class="py-name">navbar_link</tt>             <tt class="py-op">=</tt>  <tt class="py-string">'#0000ff'</tt><tt class="py-op">,</tt> </tt>
+<a name="L412"></a><tt class="py-lineno">412</tt>  <tt class="py-line">    <tt class="py-name">navbar_visited_link</tt>     <tt class="py-op">=</tt>  <tt class="py-string">'#204080'</tt><tt class="py-op">,</tt> </tt>
+<a name="L413"></a><tt class="py-lineno">413</tt>  <tt class="py-line">    <tt class="py-comment"># Tables (summary tables, details tables, indices):</tt> </tt>
+<a name="L414"></a><tt class="py-lineno">414</tt>  <tt class="py-line">    <tt class="py-name">table_bg</tt>                <tt class="py-op">=</tt>  <tt class="py-string">'#e8f0f8'</tt><tt class="py-op">,</tt> </tt>
+<a name="L415"></a><tt class="py-lineno">415</tt>  <tt class="py-line">    <tt class="py-name">table_fg</tt>                <tt class="py-op">=</tt>  <tt class="py-string">'#000000'</tt><tt class="py-op">,</tt> </tt>
+<a name="L416"></a><tt class="py-lineno">416</tt>  <tt class="py-line">    <tt class="py-name">table_link</tt>              <tt class="py-op">=</tt>  <tt class="py-string">'#0000ff'</tt><tt class="py-op">,</tt> </tt>
+<a name="L417"></a><tt class="py-lineno">417</tt>  <tt class="py-line">    <tt class="py-name">table_visited_link</tt>      <tt class="py-op">=</tt>  <tt class="py-string">'#204080'</tt><tt class="py-op">,</tt> </tt>
+<a name="L418"></a><tt class="py-lineno">418</tt>  <tt class="py-line">    <tt class="py-name">table_border</tt>            <tt class="py-op">=</tt>  <tt class="py-string">'1px solid #608090'</tt><tt class="py-op">,</tt> </tt>
+<a name="L419"></a><tt class="py-lineno">419</tt>  <tt class="py-line">    <tt class="py-name">table_hdr_bg</tt>            <tt class="py-op">=</tt>  <tt class="py-string">'#70b0ff'</tt><tt class="py-op">,</tt> </tt>
+<a name="L420"></a><tt class="py-lineno">420</tt>  <tt class="py-line">    <tt class="py-name">table_hdr_fg</tt>            <tt class="py-op">=</tt>  <tt class="py-string">'#000000'</tt><tt class="py-op">,</tt>  </tt>
+<a name="L421"></a><tt class="py-lineno">421</tt>  <tt class="py-line">    <tt class="py-name">table_hdr_link</tt>          <tt class="py-op">=</tt>  <tt class="py-string">'#0000ff'</tt><tt class="py-op">,</tt> </tt>
+<a name="L422"></a><tt class="py-lineno">422</tt>  <tt class="py-line">    <tt class="py-name">table_hdr_visited_link</tt>  <tt class="py-op">=</tt>  <tt class="py-string">'#204080'</tt><tt class="py-op">,</tt> </tt>
+<a name="L423"></a><tt class="py-lineno">423</tt>  <tt class="py-line">    <tt class="py-name">group_hdr_bg</tt>            <tt class="py-op">=</tt>  <tt class="py-string">'#c0e0f8'</tt><tt class="py-op">,</tt> </tt>
+<a name="L424"></a><tt class="py-lineno">424</tt>  <tt class="py-line">    <tt class="py-name">group_hdr_fg</tt>            <tt class="py-op">=</tt>  <tt class="py-string">'#000000'</tt><tt class="py-op">,</tt> </tt>
+<a name="L425"></a><tt class="py-lineno">425</tt>  <tt class="py-line">    <tt class="py-comment"># Function signatures:</tt> </tt>
+<a name="L426"></a><tt class="py-lineno">426</tt>  <tt class="py-line">    <tt class="py-name">sig_name</tt>                <tt class="py-op">=</tt>  <tt class="py-string">'#006080'</tt><tt class="py-op">,</tt> </tt>
+<a name="L427"></a><tt class="py-lineno">427</tt>  <tt class="py-line">    <tt class="py-name">sig_arg</tt>                 <tt class="py-op">=</tt>  <tt class="py-string">'#008060'</tt><tt class="py-op">,</tt> </tt>
+<a name="L428"></a><tt class="py-lineno">428</tt>  <tt class="py-line">    <tt class="py-name">sig_default</tt>             <tt class="py-op">=</tt>  <tt class="py-string">'#602000'</tt><tt class="py-op">,</tt> </tt>
+<a name="L429"></a><tt class="py-lineno">429</tt>  <tt class="py-line">    <tt class="py-name">summary_sig_name</tt>        <tt class="py-op">=</tt>  <tt class="py-string">'#006080'</tt><tt class="py-op">,</tt> </tt>
+<a name="L430"></a><tt class="py-lineno">430</tt>  <tt class="py-line">    <tt class="py-name">summary_sig_arg</tt>         <tt class="py-op">=</tt>  <tt class="py-string">'#006040'</tt><tt class="py-op">,</tt> </tt>
+<a name="L431"></a><tt class="py-lineno">431</tt>  <tt class="py-line">    <tt class="py-name">summary_sig_default</tt>     <tt class="py-op">=</tt>  <tt class="py-string">'#501800'</tt><tt class="py-op">,</tt> </tt>
+<a name="L432"></a><tt class="py-lineno">432</tt>  <tt class="py-line">    <tt class="py-comment"># Variable values:</tt> </tt>
+<a name="L433"></a><tt class="py-lineno">433</tt>  <tt class="py-line">    <tt class="py-name">variable_bg</tt>             <tt class="py-op">=</tt>  <tt class="py-string">'#dce4ec'</tt><tt class="py-op">,</tt> </tt>
+<a name="L434"></a><tt class="py-lineno">434</tt>  <tt class="py-line">    <tt class="py-name">variable_fg</tt>             <tt class="py-op">=</tt>  <tt class="py-string">'#000000'</tt><tt class="py-op">,</tt> </tt>
+<a name="L435"></a><tt class="py-lineno">435</tt>  <tt class="py-line">    <tt class="py-name">variable_border</tt>         <tt class="py-op">=</tt>  <tt class="py-string">'1px solid #708890'</tt><tt class="py-op">,</tt> </tt>
+<a name="L436"></a><tt class="py-lineno">436</tt>  <tt class="py-line">    <tt class="py-name">variable_linewrap</tt>       <tt class="py-op">=</tt>  <tt class="py-string">'#604000'</tt><tt class="py-op">,</tt> </tt>
+<a name="L437"></a><tt class="py-lineno">437</tt>  <tt class="py-line">    <tt class="py-name">variable_ellipsis</tt>       <tt class="py-op">=</tt>  <tt class="py-string">'#604000'</tt><tt class="py-op">,</tt> </tt>
+<a name="L438"></a><tt class="py-lineno">438</tt>  <tt class="py-line">    <tt class="py-name">variable_quote</tt>          <tt class="py-op">=</tt>  <tt class="py-string">'#604000'</tt><tt class="py-op">,</tt> </tt>
+<a name="L439"></a><tt class="py-lineno">439</tt>  <tt class="py-line">    <tt class="py-name">variable_group</tt>          <tt class="py-op">=</tt>  <tt class="py-string">'#008000'</tt><tt class="py-op">,</tt> </tt>
+<a name="L440"></a><tt class="py-lineno">440</tt>  <tt class="py-line">    <tt class="py-name">variable_string</tt>         <tt class="py-op">=</tt>  <tt class="py-string">'#006030'</tt><tt class="py-op">,</tt> </tt>
+<a name="L441"></a><tt class="py-lineno">441</tt>  <tt class="py-line">    <tt class="py-name">variable_op</tt>             <tt class="py-op">=</tt>  <tt class="py-string">'#604000'</tt><tt class="py-op">,</tt> </tt>
+<a name="L442"></a><tt class="py-lineno">442</tt>  <tt class="py-line">    <tt class="py-name">variable_unknown</tt>        <tt class="py-op">=</tt>  <tt class="py-string">'#a00000'</tt><tt class="py-op">,</tt> </tt>
+<a name="L443"></a><tt class="py-lineno">443</tt>  <tt class="py-line">    <tt class="py-name">re</tt>                      <tt class="py-op">=</tt>  <tt class="py-string">'#000000'</tt><tt class="py-op">,</tt> </tt>
+<a name="L444"></a><tt class="py-lineno">444</tt>  <tt class="py-line">    <tt class="py-name">re_char</tt>                 <tt class="py-op">=</tt>  <tt class="py-string">'#006030'</tt><tt class="py-op">,</tt> </tt>
+<a name="L445"></a><tt class="py-lineno">445</tt>  <tt class="py-line">    <tt class="py-name">re_op</tt>                   <tt class="py-op">=</tt>  <tt class="py-string">'#600000'</tt><tt class="py-op">,</tt> </tt>
+<a name="L446"></a><tt class="py-lineno">446</tt>  <tt class="py-line">    <tt class="py-name">re_group</tt>                <tt class="py-op">=</tt>  <tt class="py-string">'#003060'</tt><tt class="py-op">,</tt> </tt>
+<a name="L447"></a><tt class="py-lineno">447</tt>  <tt class="py-line">    <tt class="py-name">re_ref</tt>                  <tt class="py-op">=</tt>  <tt class="py-string">'#404040'</tt><tt class="py-op">,</tt> </tt>
+<a name="L448"></a><tt class="py-lineno">448</tt>  <tt class="py-line">    <tt class="py-comment"># Python source code:</tt> </tt>
+<a name="L449"></a><tt class="py-lineno">449</tt>  <tt class="py-line">    <tt class="py-name">doctest_bg</tt>              <tt class="py-op">=</tt>  <tt class="py-string">'#e8f0f8'</tt><tt class="py-op">,</tt> </tt>
+<a name="L450"></a><tt class="py-lineno">450</tt>  <tt class="py-line">    <tt class="py-name">doctest_fg</tt>              <tt class="py-op">=</tt>  <tt class="py-string">'#000000'</tt><tt class="py-op">,</tt> </tt>
+<a name="L451"></a><tt class="py-lineno">451</tt>  <tt class="py-line">    <tt class="py-name">doctest_border</tt>          <tt class="py-op">=</tt>  <tt class="py-string">'1px solid #708890'</tt><tt class="py-op">,</tt> </tt>
+<a name="L452"></a><tt class="py-lineno">452</tt>  <tt class="py-line">    <tt class="py-name">doctest_in_table_bg</tt>     <tt class="py-op">=</tt>  <tt class="py-string">'#dce4ec'</tt><tt class="py-op">,</tt> </tt>
+<a name="L453"></a><tt class="py-lineno">453</tt>  <tt class="py-line">    <tt class="py-name">doctest_in_table_fg</tt>     <tt class="py-op">=</tt>  <tt class="py-string">'#000000'</tt><tt class="py-op">,</tt> </tt>
+<a name="L454"></a><tt class="py-lineno">454</tt>  <tt class="py-line">    <tt class="py-name">pysrc_border</tt>            <tt class="py-op">=</tt>  <tt class="py-string">'2px solid #000000'</tt><tt class="py-op">,</tt> </tt>
+<a name="L455"></a><tt class="py-lineno">455</tt>  <tt class="py-line">    <tt class="py-name">pysrc_sep_border</tt>        <tt class="py-op">=</tt>  <tt class="py-string">'2px solid #000000'</tt><tt class="py-op">,</tt> </tt>
+<a name="L456"></a><tt class="py-lineno">456</tt>  <tt class="py-line">    <tt class="py-name">pysrc_bg</tt>                <tt class="py-op">=</tt>  <tt class="py-string">'#f0f0f0'</tt><tt class="py-op">,</tt> </tt>
+<a name="L457"></a><tt class="py-lineno">457</tt>  <tt class="py-line">    <tt class="py-name">pysrc_fg</tt>                <tt class="py-op">=</tt>  <tt class="py-string">'#000000'</tt><tt class="py-op">,</tt> </tt>
+<a name="L458"></a><tt class="py-lineno">458</tt>  <tt class="py-line">    <tt class="py-name">pysrc_highlight_hdr_bg</tt>  <tt class="py-op">=</tt>  <tt class="py-string">'#d8e8e8'</tt><tt class="py-op">,</tt> </tt>
+<a name="L459"></a><tt class="py-lineno">459</tt>  <tt class="py-line">    <tt class="py-name">pysrc_highlight_bg</tt>      <tt class="py-op">=</tt>  <tt class="py-string">'#d0e0e0'</tt><tt class="py-op">,</tt> </tt>
+<a name="L460"></a><tt class="py-lineno">460</tt>  <tt class="py-line">    <tt class="py-name">py_prompt</tt>               <tt class="py-op">=</tt>  <tt class="py-string">'#005050'</tt><tt class="py-op">,</tt> </tt>
+<a name="L461"></a><tt class="py-lineno">461</tt>  <tt class="py-line">    <tt class="py-name">py_more</tt>                 <tt class="py-op">=</tt>  <tt class="py-string">'#005050'</tt><tt class="py-op">,</tt> </tt>
+<a name="L462"></a><tt class="py-lineno">462</tt>  <tt class="py-line">    <tt class="py-name">py_string</tt>               <tt class="py-op">=</tt>  <tt class="py-string">'#006030'</tt><tt class="py-op">,</tt> </tt>
+<a name="L463"></a><tt class="py-lineno">463</tt>  <tt class="py-line">    <tt class="py-name">py_comment</tt>              <tt class="py-op">=</tt>  <tt class="py-string">'#003060'</tt><tt class="py-op">,</tt> </tt>
+<a name="L464"></a><tt class="py-lineno">464</tt>  <tt class="py-line">    <tt class="py-name">py_keyword</tt>              <tt class="py-op">=</tt>  <tt class="py-string">'#600000'</tt><tt class="py-op">,</tt> </tt>
+<a name="L465"></a><tt class="py-lineno">465</tt>  <tt class="py-line">    <tt class="py-name">py_output</tt>               <tt class="py-op">=</tt>  <tt class="py-string">'#404040'</tt><tt class="py-op">,</tt> </tt>
+<a name="L466"></a><tt class="py-lineno">466</tt>  <tt class="py-line">    <tt class="py-name">py_name</tt>                 <tt class="py-op">=</tt>  <tt class="py-string">'#000050'</tt><tt class="py-op">,</tt> </tt>
+<a name="L467"></a><tt class="py-lineno">467</tt>  <tt class="py-line">    <tt class="py-name">py_number</tt>               <tt class="py-op">=</tt>  <tt class="py-string">'#005000'</tt><tt class="py-op">,</tt> </tt>
+<a name="L468"></a><tt class="py-lineno">468</tt>  <tt class="py-line">    <tt class="py-name">py_def_name</tt>             <tt class="py-op">=</tt>  <tt class="py-string">'#000060'</tt><tt class="py-op">,</tt> </tt>
+<a name="L469"></a><tt class="py-lineno">469</tt>  <tt class="py-line">    <tt class="py-name">py_base_class</tt>           <tt class="py-op">=</tt>  <tt class="py-string">'#000060'</tt><tt class="py-op">,</tt> </tt>
+<a name="L470"></a><tt class="py-lineno">470</tt>  <tt class="py-line">    <tt class="py-name">py_param</tt>                <tt class="py-op">=</tt>  <tt class="py-string">'#000060'</tt><tt class="py-op">,</tt> </tt>
+<a name="L471"></a><tt class="py-lineno">471</tt>  <tt class="py-line">    <tt class="py-name">py_docstring</tt>            <tt class="py-op">=</tt>  <tt class="py-string">'#006030'</tt><tt class="py-op">,</tt> </tt>
+<a name="L472"></a><tt class="py-lineno">472</tt>  <tt class="py-line">    <tt class="py-name">py_decorator</tt>            <tt class="py-op">=</tt>  <tt class="py-string">'#804020'</tt><tt class="py-op">,</tt> </tt>
+<a name="L473"></a><tt class="py-lineno">473</tt>  <tt class="py-line">    <tt class="py-comment"># Graphs</tt> </tt>
+<a name="L474"></a><tt class="py-lineno">474</tt>  <tt class="py-line">    <tt class="py-name">graph_border</tt>            <tt class="py-op">=</tt>  <tt class="py-string">'1px solid #000000'</tt><tt class="py-op">,</tt> </tt>
+<a name="L475"></a><tt class="py-lineno">475</tt>  <tt class="py-line">    <tt class="py-comment"># Log block</tt> </tt>
+<a name="L476"></a><tt class="py-lineno">476</tt>  <tt class="py-line">    <tt class="py-name">log_bg</tt>                  <tt class="py-op">=</tt>  <tt class="py-string">'#e8f0f8'</tt><tt class="py-op">,</tt> </tt>
+<a name="L477"></a><tt class="py-lineno">477</tt>  <tt class="py-line">    <tt class="py-name">log_fg</tt>                  <tt class="py-op">=</tt>  <tt class="py-string">'#000000'</tt><tt class="py-op">,</tt> </tt>
+<a name="L478"></a><tt class="py-lineno">478</tt>  <tt class="py-line">    <tt class="py-name">log_border</tt>              <tt class="py-op">=</tt>  <tt class="py-string">'1px solid #000000'</tt><tt class="py-op">,</tt> </tt>
+<a name="L479"></a><tt class="py-lineno">479</tt>  <tt class="py-line">    <tt class="py-name">log_hdr_bg</tt>              <tt class="py-op">=</tt>  <tt class="py-string">'#70b0ff'</tt><tt class="py-op">,</tt> </tt>
+<a name="L480"></a><tt class="py-lineno">480</tt>  <tt class="py-line">    <tt class="py-name">log_hdr_fg</tt>              <tt class="py-op">=</tt>  <tt class="py-string">'#000000'</tt><tt class="py-op">,</tt> </tt>
+<a name="L481"></a><tt class="py-lineno">481</tt>  <tt class="py-line">    <tt class="py-name">log_error_bg</tt>            <tt class="py-op">=</tt>  <tt class="py-string">'#ffb0b0'</tt><tt class="py-op">,</tt> </tt>
+<a name="L482"></a><tt class="py-lineno">482</tt>  <tt class="py-line">    <tt class="py-name">log_error_fg</tt>            <tt class="py-op">=</tt>  <tt class="py-string">'#000000'</tt><tt class="py-op">,</tt> </tt>
+<a name="L483"></a><tt class="py-lineno">483</tt>  <tt class="py-line">    <tt class="py-name">log_error_border</tt>        <tt class="py-op">=</tt>  <tt class="py-string">'1px solid #000000'</tt><tt class="py-op">,</tt> </tt>
+<a name="L484"></a><tt class="py-lineno">484</tt>  <tt class="py-line">    <tt class="py-name">log_warn_bg</tt>             <tt class="py-op">=</tt>  <tt class="py-string">'#ffffb0'</tt><tt class="py-op">,</tt> </tt>
+<a name="L485"></a><tt class="py-lineno">485</tt>  <tt class="py-line">    <tt class="py-name">log_warn_fg</tt>             <tt class="py-op">=</tt>  <tt class="py-string">'#000000'</tt><tt class="py-op">,</tt> </tt>
+<a name="L486"></a><tt class="py-lineno">486</tt>  <tt class="py-line">    <tt class="py-name">log_warn_border</tt>         <tt class="py-op">=</tt>  <tt class="py-string">'1px solid #000000'</tt><tt class="py-op">,</tt> </tt>
+<a name="L487"></a><tt class="py-lineno">487</tt>  <tt class="py-line">    <tt class="py-name">log_info_bg</tt>             <tt class="py-op">=</tt>  <tt class="py-string">'#b0ffb0'</tt><tt class="py-op">,</tt> </tt>
+<a name="L488"></a><tt class="py-lineno">488</tt>  <tt class="py-line">    <tt class="py-name">log_info_fg</tt>             <tt class="py-op">=</tt>  <tt class="py-string">'#000000'</tt><tt class="py-op">,</tt> </tt>
+<a name="L489"></a><tt class="py-lineno">489</tt>  <tt class="py-line">    <tt class="py-name">log_info_border</tt>         <tt class="py-op">=</tt>  <tt class="py-string">'1px solid #000000'</tt><tt class="py-op">,</tt> </tt>
+<a name="L490"></a><tt class="py-lineno">490</tt>  <tt class="py-line">    <tt class="py-name">opt_changed_fg</tt>          <tt class="py-op">=</tt>  <tt class="py-string">'#000000'</tt><tt class="py-op">,</tt> </tt>
+<a name="L491"></a><tt class="py-lineno">491</tt>  <tt class="py-line">    <tt class="py-name">opt_default_fg</tt>          <tt class="py-op">=</tt>  <tt class="py-string">'#606060'</tt><tt class="py-op">,</tt> </tt>
+<a name="L492"></a><tt class="py-lineno">492</tt>  <tt class="py-line">    <tt class="py-op">)</tt> </tt>
+<a name="L493"></a><tt class="py-lineno">493</tt>  <tt class="py-line"> </tt>
+<a name="L494"></a><tt class="py-lineno">494</tt>  <tt class="py-line"><tt id="link-3" class="py-name" targets="Variable epydoc.docwriter.html_css._BLUE_COLORS=epydoc.docwriter.html_css-module.html#_BLUE_COLORS"><a title="epydoc.docwriter.html_css._BLUE_COLORS" class="py-name" href="#" onclick="return doclink('link-3', '_BLUE_COLORS', 'link-3');">_BLUE_COLORS</a></tt> <tt class="py-op">=</tt> <tt id="link-4" class="py-name"><a title="epydoc.docwriter.html_css._WHITE_COLORS" class="py-nam [...]
+<a name="L495"></a><tt class="py-lineno">495</tt>  <tt class="py-line"><tt id="link-5" class="py-name"><a title="epydoc.docwriter.html_css._BLUE_COLORS" class="py-name" href="#" onclick="return doclink('link-5', '_BLUE_COLORS', 'link-3');">_BLUE_COLORS</a></tt><tt class="py-op">.</tt><tt class="py-name">update</tt><tt class="py-op">(</tt><tt class="py-name">dict</tt><tt class="py-op">(</tt> </tt>
+<a name="L496"></a><tt class="py-lineno">496</tt>  <tt class="py-line">    <tt class="py-comment"># Body: white text on a dark blue background</tt> </tt>
+<a name="L497"></a><tt class="py-lineno">497</tt>  <tt class="py-line">    <tt class="py-name">body_bg</tt>                 <tt class="py-op">=</tt>  <tt class="py-string">'#000070'</tt><tt class="py-op">,</tt> </tt>
+<a name="L498"></a><tt class="py-lineno">498</tt>  <tt class="py-line">    <tt class="py-name">body_fg</tt>                 <tt class="py-op">=</tt>  <tt class="py-string">'#ffffff'</tt><tt class="py-op">,</tt> </tt>
+<a name="L499"></a><tt class="py-lineno">499</tt>  <tt class="py-line">    <tt class="py-name">body_link</tt>               <tt class="py-op">=</tt>  <tt class="py-string">'#ffffff'</tt><tt class="py-op">,</tt> </tt>
+<a name="L500"></a><tt class="py-lineno">500</tt>  <tt class="py-line">    <tt class="py-name">body_visited_link</tt>       <tt class="py-op">=</tt>  <tt class="py-string">'#d0d0ff'</tt><tt class="py-op">,</tt> </tt>
+<a name="L501"></a><tt class="py-lineno">501</tt>  <tt class="py-line">    <tt class="py-comment"># Tables: cyan headers, black on white bodies</tt> </tt>
+<a name="L502"></a><tt class="py-lineno">502</tt>  <tt class="py-line">    <tt class="py-name">table_bg</tt>                <tt class="py-op">=</tt>   <tt class="py-string">'#ffffff'</tt><tt class="py-op">,</tt> </tt>
+<a name="L503"></a><tt class="py-lineno">503</tt>  <tt class="py-line">    <tt class="py-name">table_fg</tt>                <tt class="py-op">=</tt>  <tt class="py-string">'#000000'</tt><tt class="py-op">,</tt> </tt>
+<a name="L504"></a><tt class="py-lineno">504</tt>  <tt class="py-line">    <tt class="py-name">table_hdr_bg</tt>            <tt class="py-op">=</tt>  <tt class="py-string">'#70b0ff'</tt><tt class="py-op">,</tt> </tt>
+<a name="L505"></a><tt class="py-lineno">505</tt>  <tt class="py-line">    <tt class="py-name">table_hdr_fg</tt>            <tt class="py-op">=</tt>  <tt class="py-string">'#000000'</tt><tt class="py-op">,</tt> </tt>
+<a name="L506"></a><tt class="py-lineno">506</tt>  <tt class="py-line">    <tt class="py-name">table_hdr_link</tt>          <tt class="py-op">=</tt>  <tt class="py-string">'#000000'</tt><tt class="py-op">,</tt> </tt>
+<a name="L507"></a><tt class="py-lineno">507</tt>  <tt class="py-line">    <tt class="py-name">table_hdr_visited_link</tt>  <tt class="py-op">=</tt>  <tt class="py-string">'#000000'</tt><tt class="py-op">,</tt> </tt>
+<a name="L508"></a><tt class="py-lineno">508</tt>  <tt class="py-line">    <tt class="py-name">table_border</tt>            <tt class="py-op">=</tt>  <tt class="py-string">'1px solid #000000'</tt><tt class="py-op">,</tt> </tt>
+<a name="L509"></a><tt class="py-lineno">509</tt>  <tt class="py-line">    <tt class="py-comment"># Navigation bar: blue w/ cyan selection</tt> </tt>
+<a name="L510"></a><tt class="py-lineno">510</tt>  <tt class="py-line">    <tt class="py-name">navbar_bg</tt>               <tt class="py-op">=</tt>  <tt class="py-string">'#0000ff'</tt><tt class="py-op">,</tt> </tt>
+<a name="L511"></a><tt class="py-lineno">511</tt>  <tt class="py-line">    <tt class="py-name">navbar_fg</tt>               <tt class="py-op">=</tt>  <tt class="py-string">'#ffffff'</tt><tt class="py-op">,</tt> </tt>
+<a name="L512"></a><tt class="py-lineno">512</tt>  <tt class="py-line">    <tt class="py-name">navbar_link</tt>             <tt class="py-op">=</tt>  <tt class="py-string">'#ffffff'</tt><tt class="py-op">,</tt> </tt>
+<a name="L513"></a><tt class="py-lineno">513</tt>  <tt class="py-line">    <tt class="py-name">navbar_visited_link</tt>     <tt class="py-op">=</tt>  <tt class="py-string">'#ffffff'</tt><tt class="py-op">,</tt> </tt>
+<a name="L514"></a><tt class="py-lineno">514</tt>  <tt class="py-line">    <tt class="py-name">navbar_select_bg</tt>        <tt class="py-op">=</tt>   <tt class="py-string">'#70b0ff'</tt><tt class="py-op">,</tt> </tt>
+<a name="L515"></a><tt class="py-lineno">515</tt>  <tt class="py-line">    <tt class="py-name">navbar_select_fg</tt>        <tt class="py-op">=</tt>   <tt class="py-string">'#000000'</tt><tt class="py-op">,</tt> </tt>
+<a name="L516"></a><tt class="py-lineno">516</tt>  <tt class="py-line">    <tt class="py-name">navbar_border</tt>           <tt class="py-op">=</tt>  <tt class="py-string">'1px solid #70b0ff'</tt><tt class="py-op">,</tt> </tt>
+<a name="L517"></a><tt class="py-lineno">517</tt>  <tt class="py-line">    <tt class="py-comment"># Variable values & doctest blocks: cyan</tt> </tt>
+<a name="L518"></a><tt class="py-lineno">518</tt>  <tt class="py-line">    <tt class="py-name">variable_bg</tt>             <tt class="py-op">=</tt>   <tt class="py-string">'#c0e0f8'</tt><tt class="py-op">,</tt> </tt>
+<a name="L519"></a><tt class="py-lineno">519</tt>  <tt class="py-line">    <tt class="py-name">variable_fg</tt>             <tt class="py-op">=</tt>  <tt class="py-string">'#000000'</tt><tt class="py-op">,</tt> </tt>
+<a name="L520"></a><tt class="py-lineno">520</tt>  <tt class="py-line">    <tt class="py-name">doctest_bg</tt>              <tt class="py-op">=</tt>   <tt class="py-string">'#c0e0f8'</tt><tt class="py-op">,</tt> </tt>
+<a name="L521"></a><tt class="py-lineno">521</tt>  <tt class="py-line">    <tt class="py-name">doctest_fg</tt>              <tt class="py-op">=</tt>  <tt class="py-string">'#000000'</tt><tt class="py-op">,</tt> </tt>
+<a name="L522"></a><tt class="py-lineno">522</tt>  <tt class="py-line">    <tt class="py-name">doctest_in_table_bg</tt>     <tt class="py-op">=</tt>   <tt class="py-string">'#c0e0f8'</tt><tt class="py-op">,</tt> </tt>
+<a name="L523"></a><tt class="py-lineno">523</tt>  <tt class="py-line">    <tt class="py-name">doctest_in_table_fg</tt>     <tt class="py-op">=</tt>  <tt class="py-string">'#000000'</tt><tt class="py-op">,</tt> </tt>
+<a name="L524"></a><tt class="py-lineno">524</tt>  <tt class="py-line">    <tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L525"></a><tt class="py-lineno">525</tt>  <tt class="py-line"> </tt>
+<a name="L526"></a><tt class="py-lineno">526</tt>  <tt class="py-line"><tt id="link-6" class="py-name" targets="Variable epydoc.docwriter.html_css._WHITE=epydoc.docwriter.html_css-module.html#_WHITE"><a title="epydoc.docwriter.html_css._WHITE" class="py-name" href="#" onclick="return doclink('link-6', '_WHITE', 'link-6');">_WHITE</a></tt> <tt class="py-op">=</tt> <tt id="link-7" class="py-name" targets="Function epydoc.docwriter.html_css._set_colors()=epydoc.docwriter.html_css-module.htm [...]
+<a name="L527"></a><tt class="py-lineno">527</tt>  <tt class="py-line"><tt id="link-10" class="py-name" targets="Variable epydoc.docwriter.html_css._BLUE=epydoc.docwriter.html_css-module.html#_BLUE"><a title="epydoc.docwriter.html_css._BLUE" class="py-name" href="#" onclick="return doclink('link-10', '_BLUE', 'link-10');">_BLUE</a></tt> <tt class="py-op">=</tt> <tt id="link-11" class="py-name"><a title="epydoc.docwriter.html_css._set_colors" class="py-name" href="#" onclick="return docli [...]
+<a name="L528"></a><tt class="py-lineno">528</tt>  <tt class="py-line"> </tt>
+<a name="L529"></a><tt class="py-lineno">529</tt>  <tt class="py-line">    <tt class="py-comment"># Black-on-green</tt> </tt>
+<a name="L530"></a><tt class="py-lineno">530</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt id="link-14" class="py-name" targets="Variable epydoc.docwriter.html_css._GREEN=epydoc.docwriter.html_css-module.html#_GREEN"><a title="epydoc.docwriter.html_css._GREEN" class="py-name" href="#" onclick="return doclink('link-14', '_GREEN', 'link-14');">_GREEN</a></tt> <tt class="py-op">=</tt> <tt id="link-15" class="py-name"><a title="epydoc.docwriter.html_css._COLOR_RE" class="py-name" [...]
+<a name="L531"></a><tt class="py-lineno">531</tt>  <tt class="py-line"> </tt>
+<a name="L532"></a><tt class="py-lineno">532</tt>  <tt class="py-line"><tt class="py-comment"># White-on-black, with blue highlights.</tt> </tt>
+<a name="L533"></a><tt class="py-lineno">533</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt id="link-19" class="py-name" targets="Variable epydoc.docwriter.html_css._BLACK=epydoc.docwriter.html_css-module.html#_BLACK"><a title="epydoc.docwriter.html_css._BLACK" class="py-name" href="#" onclick="return doclink('link-19', '_BLACK', 'link-19');">_BLACK</a></tt> <tt class="py-op">=</tt> <tt id="link-20" class="py-name"><a title="epydoc.docwriter.html_css._COLOR_RE" class="py-name" [...]
+<a name="L534"></a><tt class="py-lineno">534</tt>  <tt class="py-line"> </tt>
+<a name="L535"></a><tt class="py-lineno">535</tt>  <tt class="py-line"><tt class="py-comment"># Grayscale</tt> </tt>
+<a name="L536"></a><tt class="py-lineno">536</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt id="link-24" class="py-name" targets="Variable epydoc.docwriter.html_css._GRAYSCALE=epydoc.docwriter.html_css-module.html#_GRAYSCALE"><a title="epydoc.docwriter.html_css._GRAYSCALE" class="py-name" href="#" onclick="return doclink('link-24', '_GRAYSCALE', 'link-24');">_GRAYSCALE</a></tt> <tt class="py-op">=</tt> <tt id="link-25" class="py-name"><a title="epydoc.docwriter.html_css._COLOR [...]
+<a name="L537"></a><tt class="py-lineno">537</tt>  <tt class="py-line"> </tt>
+<a name="L538"></a><tt class="py-lineno">538</tt>  <tt class="py-line"><tt class="py-comment">############################################################</tt> </tt>
+<a name="L539"></a><tt class="py-lineno">539</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## Stylesheet table</tt> </tt>
+<a name="L540"></a><tt class="py-lineno">540</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">############################################################</tt> </tt>
+<a name="L541"></a><tt class="py-lineno">541</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L542"></a><tt class="py-lineno">542</tt>  <tt class="py-line"><tt id="link-27" class="py-name" targets="Variable epydoc.docwriter.html_css.STYLESHEETS=epydoc.docwriter.html_css-module.html#STYLESHEETS"><a title="epydoc.docwriter.html_css.STYLESHEETS" class="py-name" href="#" onclick="return doclink('link-27', 'STYLESHEETS', 'link-27');">STYLESHEETS</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
+<a name="L543"></a><tt class="py-lineno">543</tt>  <tt class="py-line">    <tt class="py-string">'white'</tt><tt class="py-op">:</tt> <tt class="py-op">(</tt><tt id="link-28" class="py-name"><a title="epydoc.docwriter.html_css._WHITE" class="py-name" href="#" onclick="return doclink('link-28', '_WHITE', 'link-6');">_WHITE</a></tt><tt class="py-op">,</tt> <tt class="py-string">"Black on white, with blue highlights"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L544"></a><tt class="py-lineno">544</tt>  <tt class="py-line">    <tt class="py-string">'blue'</tt><tt class="py-op">:</tt> <tt class="py-op">(</tt><tt id="link-29" class="py-name"><a title="epydoc.docwriter.html_css._BLUE" class="py-name" href="#" onclick="return doclink('link-29', '_BLUE', 'link-10');">_BLUE</a></tt><tt class="py-op">,</tt> <tt class="py-string">"Black on steel blue"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L545"></a><tt class="py-lineno">545</tt>  <tt class="py-line">    <tt class="py-string">'green'</tt><tt class="py-op">:</tt> <tt class="py-op">(</tt><tt id="link-30" class="py-name"><a title="epydoc.docwriter.html_css._GREEN" class="py-name" href="#" onclick="return doclink('link-30', '_GREEN', 'link-14');">_GREEN</a></tt><tt class="py-op">,</tt> <tt class="py-string">"Black on green"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L546"></a><tt class="py-lineno">546</tt>  <tt class="py-line">    <tt class="py-string">'black'</tt><tt class="py-op">:</tt> <tt class="py-op">(</tt><tt id="link-31" class="py-name"><a title="epydoc.docwriter.html_css._BLACK" class="py-name" href="#" onclick="return doclink('link-31', '_BLACK', 'link-19');">_BLACK</a></tt><tt class="py-op">,</tt> <tt class="py-string">"White on black, with blue highlights"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L547"></a><tt class="py-lineno">547</tt>  <tt class="py-line">    <tt class="py-string">'grayscale'</tt><tt class="py-op">:</tt> <tt class="py-op">(</tt><tt id="link-32" class="py-name"><a title="epydoc.docwriter.html_css._GRAYSCALE" class="py-name" href="#" onclick="return doclink('link-32', '_GRAYSCALE', 'link-24');">_GRAYSCALE</a></tt><tt class="py-op">,</tt> <tt class="py-string">"Grayscale black on white"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L548"></a><tt class="py-lineno">548</tt>  <tt class="py-line">    <tt class="py-string">'default'</tt><tt class="py-op">:</tt> <tt class="py-op">(</tt><tt id="link-33" class="py-name"><a title="epydoc.docwriter.html_css._WHITE" class="py-name" href="#" onclick="return doclink('link-33', '_WHITE', 'link-6');">_WHITE</a></tt><tt class="py-op">,</tt> <tt class="py-string">"Default stylesheet (=white)"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L549"></a><tt class="py-lineno">549</tt>  <tt class="py-line"><tt class="py-comment">#    'none': (_LAYOUT, "A base stylesheet (no color modifications)"),</tt> </tt>
+<a name="L550"></a><tt class="py-lineno">550</tt>  <tt class="py-line">    <tt class="py-op">}</tt> </tt>
+<a name="L551"></a><tt class="py-lineno">551</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:09:56 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.docwriter.html_help-module.html b/doc/api/epydoc.docwriter.html_help-module.html
new file mode 100644
index 0000000..f28cecd
--- /dev/null
+++ b/doc/api/epydoc.docwriter.html_help-module.html
@@ -0,0 +1,201 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.docwriter.html_help</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.docwriter-module.html">Package docwriter</a> ::
+        Module html_help
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.docwriter.html_help-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module html_help</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.docwriter.html_help-pysrc.html">source code</a></span></p>
+<p>Default help file for the HTML outputter (<a 
+  href="epydoc.docwriter.html-module.html" 
+  class="link">epydoc.docwriter.html</a>).</p>
+
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Variables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>string</code></span>
+    </td><td class="summary">
+        <a href="epydoc.docwriter.html_help-module.html#HTML_HELP" class="summary-name">HTML_HELP</a> = <code title="'''
+<h1 class="epydoc"> API Documentation </h1>
+
+<p> This document contains the API (Application Programming Interface)
+documentation for %(this_project)s.  Documentation for the Python
+objects defined by the project is divided into separate pages for each
+package, module, and class.  The API documentation also includes two
+pages containing information about the project as a whole: a trees
+..."><code class="variable-quote">'</code><code class="variable-string">\n<h1 class="epydoc"> API Documentation </h1>\n\n</code><code class="variable-ellipsis">...</code></code><br />
+      The contents of the HTML body for the default help page.
+    </td>
+  </tr>
+</table>
+<!-- ==================== VARIABLES DETAILS ==================== -->
+<a name="section-VariablesDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Variables Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-VariablesDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="HTML_HELP"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">HTML_HELP</h3>
+  The contents of the HTML body for the default help page.
+  <dl class="fields">
+    <dt>Type:</dt>
+      <dd><code>string</code></dd>
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'''</code><code class="variable-string"></code>
+<code class="variable-string"><h1 class="epydoc"> API Documentation </h1></code>
+<code class="variable-string"></code>
+<code class="variable-string"><p> This document contains the API (Application Programming Interface)</code>
+<code class="variable-string">documentation for %(this_project)s.  Documentation for the Python</code>
+<code class="variable-string">objects defined by the project is divided into separate pages for each</code>
+<code class="variable-string">package, module, and class.  The API documentation also includes two</code>
+<code class="variable-string">pages containing information about the project as a whole: a trees</code>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:06:37 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.docwriter.html_help-pysrc.html b/doc/api/epydoc.docwriter.html_help-pysrc.html
new file mode 100644
index 0000000..728a263
--- /dev/null
+++ b/doc/api/epydoc.docwriter.html_help-pysrc.html
@@ -0,0 +1,313 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.docwriter.html_help</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.docwriter-module.html">Package docwriter</a> ::
+        Module html_help
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.docwriter.html_help-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="epydoc.docwriter.html_help-module.html">Module epydoc.docwriter.html_help</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno">  1</tt>  <tt class="py-line"><tt class="py-comment">#</tt> </tt>
+<a name="L2"></a><tt class="py-lineno">  2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># epydoc.css: default help page</tt> </tt>
+<a name="L3"></a><tt class="py-lineno">  3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Edward Loper</tt> </tt>
+<a name="L4"></a><tt class="py-lineno">  4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L5"></a><tt class="py-lineno">  5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Created [01/30/01 05:18 PM]</tt> </tt>
+<a name="L6"></a><tt class="py-lineno">  6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># $Id: html_help.py 1239 2006-07-05 11:29:50Z edloper $</tt> </tt>
+<a name="L7"></a><tt class="py-lineno">  7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L8"></a><tt class="py-lineno">  8</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L9"></a><tt class="py-lineno">  9</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L10"></a><tt class="py-lineno"> 10</tt>  <tt class="py-line"><tt class="py-docstring">Default help file for the HTML outputter (L{epydoc.docwriter.html}).</tt> </tt>
+<a name="L11"></a><tt class="py-lineno"> 11</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L12"></a><tt class="py-lineno"> 12</tt>  <tt class="py-line"><tt class="py-docstring">@type HTML_HELP: C{string}</tt> </tt>
+<a name="L13"></a><tt class="py-lineno"> 13</tt>  <tt class="py-line"><tt class="py-docstring">@var HTML_HELP: The contents of the HTML body for the default</tt> </tt>
+<a name="L14"></a><tt class="py-lineno"> 14</tt>  <tt class="py-line"><tt class="py-docstring">help page.</tt> </tt>
+<a name="L15"></a><tt class="py-lineno"> 15</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L16"></a><tt class="py-lineno"> 16</tt>  <tt class="py-line"><tt class="py-name">__docformat__</tt> <tt class="py-op">=</tt> <tt class="py-string">'epytext en'</tt> </tt>
+<a name="L17"></a><tt class="py-lineno"> 17</tt>  <tt class="py-line"> </tt>
+<a name="L18"></a><tt class="py-lineno"> 18</tt>  <tt class="py-line"><tt class="py-comment"># Expects: {'this_project': name}</tt> </tt>
+<a name="L19"></a><tt class="py-lineno"> 19</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt id="link-0" class="py-name" targets="Variable epydoc.docwriter.html_help.HTML_HELP=epydoc.docwriter.html_help-module.html#HTML_HELP"><a title="epydoc.docwriter.html_help.HTML_HELP" class="py-name" href="#" onclick="return doclink('link-0', 'HTML_HELP', 'link-0');">HTML_HELP</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'''</tt> </tt>
+<a name="L20"></a><tt class="py-lineno"> 20</tt>  <tt class="py-line"><tt class="py-string"><h1 class="epydoc"> API Documentation </h1></tt> </tt>
+<a name="L21"></a><tt class="py-lineno"> 21</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L22"></a><tt class="py-lineno"> 22</tt>  <tt class="py-line"><tt class="py-string"><p> This document contains the API (Application Programming Interface)</tt> </tt>
+<a name="L23"></a><tt class="py-lineno"> 23</tt>  <tt class="py-line"><tt class="py-string">documentation for %(this_project)s.  Documentation for the Python</tt> </tt>
+<a name="L24"></a><tt class="py-lineno"> 24</tt>  <tt class="py-line"><tt class="py-string">objects defined by the project is divided into separate pages for each</tt> </tt>
+<a name="L25"></a><tt class="py-lineno"> 25</tt>  <tt class="py-line"><tt class="py-string">package, module, and class.  The API documentation also includes two</tt> </tt>
+<a name="L26"></a><tt class="py-lineno"> 26</tt>  <tt class="py-line"><tt class="py-string">pages containing information about the project as a whole: a trees</tt> </tt>
+<a name="L27"></a><tt class="py-lineno"> 27</tt>  <tt class="py-line"><tt class="py-string">page, and an index page.  </p></tt> </tt>
+<a name="L28"></a><tt class="py-lineno"> 28</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L29"></a><tt class="py-lineno"> 29</tt>  <tt class="py-line"><tt class="py-string"><h2> Object Documentation </h2></tt> </tt>
+<a name="L30"></a><tt class="py-lineno"> 30</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L31"></a><tt class="py-lineno"> 31</tt>  <tt class="py-line"><tt class="py-string">  <p>Each <strong>Package Documentation</strong> page contains: </p></tt> </tt>
+<a name="L32"></a><tt class="py-lineno"> 32</tt>  <tt class="py-line"><tt class="py-string">  <ul></tt> </tt>
+<a name="L33"></a><tt class="py-lineno"> 33</tt>  <tt class="py-line"><tt class="py-string">    <li> A description of the package. </li></tt> </tt>
+<a name="L34"></a><tt class="py-lineno"> 34</tt>  <tt class="py-line"><tt class="py-string">    <li> A list of the modules and sub-packages contained by the</tt> </tt>
+<a name="L35"></a><tt class="py-lineno"> 35</tt>  <tt class="py-line"><tt class="py-string">    package.  </li></tt> </tt>
+<a name="L36"></a><tt class="py-lineno"> 36</tt>  <tt class="py-line"><tt class="py-string">    <li> A summary of the classes defined by the package. </li></tt> </tt>
+<a name="L37"></a><tt class="py-lineno"> 37</tt>  <tt class="py-line"><tt class="py-string">    <li> A summary of the functions defined by the package. </li></tt> </tt>
+<a name="L38"></a><tt class="py-lineno"> 38</tt>  <tt class="py-line"><tt class="py-string">    <li> A summary of the variables defined by the package. </li></tt> </tt>
+<a name="L39"></a><tt class="py-lineno"> 39</tt>  <tt class="py-line"><tt class="py-string">    <li> A detailed description of each function defined by the</tt> </tt>
+<a name="L40"></a><tt class="py-lineno"> 40</tt>  <tt class="py-line"><tt class="py-string">    package. </li></tt> </tt>
+<a name="L41"></a><tt class="py-lineno"> 41</tt>  <tt class="py-line"><tt class="py-string">    <li> A detailed description of each variable defined by the</tt> </tt>
+<a name="L42"></a><tt class="py-lineno"> 42</tt>  <tt class="py-line"><tt class="py-string">    package. </li></tt> </tt>
+<a name="L43"></a><tt class="py-lineno"> 43</tt>  <tt class="py-line"><tt class="py-string">  </ul></tt> </tt>
+<a name="L44"></a><tt class="py-lineno"> 44</tt>  <tt class="py-line"><tt class="py-string">  </tt> </tt>
+<a name="L45"></a><tt class="py-lineno"> 45</tt>  <tt class="py-line"><tt class="py-string">  <p>Each <strong>Module Documentation</strong> page contains:</p></tt> </tt>
+<a name="L46"></a><tt class="py-lineno"> 46</tt>  <tt class="py-line"><tt class="py-string">  <ul></tt> </tt>
+<a name="L47"></a><tt class="py-lineno"> 47</tt>  <tt class="py-line"><tt class="py-string">    <li> A description of the module. </li></tt> </tt>
+<a name="L48"></a><tt class="py-lineno"> 48</tt>  <tt class="py-line"><tt class="py-string">    <li> A summary of the classes defined by the module. </li></tt> </tt>
+<a name="L49"></a><tt class="py-lineno"> 49</tt>  <tt class="py-line"><tt class="py-string">    <li> A summary of the functions defined by the module. </li></tt> </tt>
+<a name="L50"></a><tt class="py-lineno"> 50</tt>  <tt class="py-line"><tt class="py-string">    <li> A summary of the variables defined by the module. </li></tt> </tt>
+<a name="L51"></a><tt class="py-lineno"> 51</tt>  <tt class="py-line"><tt class="py-string">    <li> A detailed description of each function defined by the</tt> </tt>
+<a name="L52"></a><tt class="py-lineno"> 52</tt>  <tt class="py-line"><tt class="py-string">    module. </li></tt> </tt>
+<a name="L53"></a><tt class="py-lineno"> 53</tt>  <tt class="py-line"><tt class="py-string">    <li> A detailed description of each variable defined by the</tt> </tt>
+<a name="L54"></a><tt class="py-lineno"> 54</tt>  <tt class="py-line"><tt class="py-string">    module. </li></tt> </tt>
+<a name="L55"></a><tt class="py-lineno"> 55</tt>  <tt class="py-line"><tt class="py-string">  </ul></tt> </tt>
+<a name="L56"></a><tt class="py-lineno"> 56</tt>  <tt class="py-line"><tt class="py-string">  </tt> </tt>
+<a name="L57"></a><tt class="py-lineno"> 57</tt>  <tt class="py-line"><tt class="py-string">  <p>Each <strong>Class Documentation</strong> page contains: </p></tt> </tt>
+<a name="L58"></a><tt class="py-lineno"> 58</tt>  <tt class="py-line"><tt class="py-string">  <ul></tt> </tt>
+<a name="L59"></a><tt class="py-lineno"> 59</tt>  <tt class="py-line"><tt class="py-string">    <li> A class inheritance diagram. </li></tt> </tt>
+<a name="L60"></a><tt class="py-lineno"> 60</tt>  <tt class="py-line"><tt class="py-string">    <li> A list of known subclasses. </li></tt> </tt>
+<a name="L61"></a><tt class="py-lineno"> 61</tt>  <tt class="py-line"><tt class="py-string">    <li> A description of the class. </li></tt> </tt>
+<a name="L62"></a><tt class="py-lineno"> 62</tt>  <tt class="py-line"><tt class="py-string">    <li> A summary of the methods defined by the class. </li></tt> </tt>
+<a name="L63"></a><tt class="py-lineno"> 63</tt>  <tt class="py-line"><tt class="py-string">    <li> A summary of the instance variables defined by the class. </li></tt> </tt>
+<a name="L64"></a><tt class="py-lineno"> 64</tt>  <tt class="py-line"><tt class="py-string">    <li> A summary of the class (static) variables defined by the</tt> </tt>
+<a name="L65"></a><tt class="py-lineno"> 65</tt>  <tt class="py-line"><tt class="py-string">    class. </li> </tt> </tt>
+<a name="L66"></a><tt class="py-lineno"> 66</tt>  <tt class="py-line"><tt class="py-string">    <li> A detailed description of each method defined by the</tt> </tt>
+<a name="L67"></a><tt class="py-lineno"> 67</tt>  <tt class="py-line"><tt class="py-string">    class. </li></tt> </tt>
+<a name="L68"></a><tt class="py-lineno"> 68</tt>  <tt class="py-line"><tt class="py-string">    <li> A detailed description of each instance variable defined by the</tt> </tt>
+<a name="L69"></a><tt class="py-lineno"> 69</tt>  <tt class="py-line"><tt class="py-string">    class. </li> </tt> </tt>
+<a name="L70"></a><tt class="py-lineno"> 70</tt>  <tt class="py-line"><tt class="py-string">    <li> A detailed description of each class (static) variable defined</tt> </tt>
+<a name="L71"></a><tt class="py-lineno"> 71</tt>  <tt class="py-line"><tt class="py-string">    by the class. </li> </tt> </tt>
+<a name="L72"></a><tt class="py-lineno"> 72</tt>  <tt class="py-line"><tt class="py-string">  </ul></tt> </tt>
+<a name="L73"></a><tt class="py-lineno"> 73</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L74"></a><tt class="py-lineno"> 74</tt>  <tt class="py-line"><tt class="py-string"><h2> Project Documentation </h2></tt> </tt>
+<a name="L75"></a><tt class="py-lineno"> 75</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L76"></a><tt class="py-lineno"> 76</tt>  <tt class="py-line"><tt class="py-string">  <p> The <strong>Trees</strong> page contains the module and class hierarchies: </p></tt> </tt>
+<a name="L77"></a><tt class="py-lineno"> 77</tt>  <tt class="py-line"><tt class="py-string">  <ul></tt> </tt>
+<a name="L78"></a><tt class="py-lineno"> 78</tt>  <tt class="py-line"><tt class="py-string">    <li> The <em>module hierarchy</em> lists every package and module, with</tt> </tt>
+<a name="L79"></a><tt class="py-lineno"> 79</tt>  <tt class="py-line"><tt class="py-string">    modules grouped into packages.  At the top level, and within each</tt> </tt>
+<a name="L80"></a><tt class="py-lineno"> 80</tt>  <tt class="py-line"><tt class="py-string">    package, modules and sub-packages are listed alphabetically. </li></tt> </tt>
+<a name="L81"></a><tt class="py-lineno"> 81</tt>  <tt class="py-line"><tt class="py-string">    <li> The <em>class hierarchy</em> lists every class, grouped by base</tt> </tt>
+<a name="L82"></a><tt class="py-lineno"> 82</tt>  <tt class="py-line"><tt class="py-string">    class.  If a class has more than one base class, then it will be</tt> </tt>
+<a name="L83"></a><tt class="py-lineno"> 83</tt>  <tt class="py-line"><tt class="py-string">    listed under each base class.  At the top level, and under each base</tt> </tt>
+<a name="L84"></a><tt class="py-lineno"> 84</tt>  <tt class="py-line"><tt class="py-string">    class, classes are listed alphabetically. </li></tt> </tt>
+<a name="L85"></a><tt class="py-lineno"> 85</tt>  <tt class="py-line"><tt class="py-string">  </ul></tt> </tt>
+<a name="L86"></a><tt class="py-lineno"> 86</tt>  <tt class="py-line"><tt class="py-string">  </tt> </tt>
+<a name="L87"></a><tt class="py-lineno"> 87</tt>  <tt class="py-line"><tt class="py-string">  <p> The <strong>Index</strong> page contains indices of terms and</tt> </tt>
+<a name="L88"></a><tt class="py-lineno"> 88</tt>  <tt class="py-line"><tt class="py-string">  identifiers: </p></tt> </tt>
+<a name="L89"></a><tt class="py-lineno"> 89</tt>  <tt class="py-line"><tt class="py-string">  <ul></tt> </tt>
+<a name="L90"></a><tt class="py-lineno"> 90</tt>  <tt class="py-line"><tt class="py-string">    <li> The <em>term index</em> lists every term indexed by any object\'s</tt> </tt>
+<a name="L91"></a><tt class="py-lineno"> 91</tt>  <tt class="py-line"><tt class="py-string">    documentation.  For each term, the index provides links to each</tt> </tt>
+<a name="L92"></a><tt class="py-lineno"> 92</tt>  <tt class="py-line"><tt class="py-string">    place where the term is indexed. </li></tt> </tt>
+<a name="L93"></a><tt class="py-lineno"> 93</tt>  <tt class="py-line"><tt class="py-string">    <li> The <em>identifier index</em> lists the (short) name of every package,</tt> </tt>
+<a name="L94"></a><tt class="py-lineno"> 94</tt>  <tt class="py-line"><tt class="py-string">    module, class, method, function, variable, and parameter.  For each</tt> </tt>
+<a name="L95"></a><tt class="py-lineno"> 95</tt>  <tt class="py-line"><tt class="py-string">    identifier, the index provides a short description, and a link to</tt> </tt>
+<a name="L96"></a><tt class="py-lineno"> 96</tt>  <tt class="py-line"><tt class="py-string">    its documentation. </li></tt> </tt>
+<a name="L97"></a><tt class="py-lineno"> 97</tt>  <tt class="py-line"><tt class="py-string">  </ul></tt> </tt>
+<a name="L98"></a><tt class="py-lineno"> 98</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L99"></a><tt class="py-lineno"> 99</tt>  <tt class="py-line"><tt class="py-string"><h2> The Table of Contents </h2></tt> </tt>
+<a name="L100"></a><tt class="py-lineno">100</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L101"></a><tt class="py-lineno">101</tt>  <tt class="py-line"><tt class="py-string"><p> The table of contents occupies the two frames on the left side of</tt> </tt>
+<a name="L102"></a><tt class="py-lineno">102</tt>  <tt class="py-line"><tt class="py-string">the window.  The upper-left frame displays the <em>project</tt> </tt>
+<a name="L103"></a><tt class="py-lineno">103</tt>  <tt class="py-line"><tt class="py-string">contents</em>, and the lower-left frame displays the <em>module</tt> </tt>
+<a name="L104"></a><tt class="py-lineno">104</tt>  <tt class="py-line"><tt class="py-string">contents</em>: </p></tt> </tt>
+<a name="L105"></a><tt class="py-lineno">105</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L106"></a><tt class="py-lineno">106</tt>  <tt class="py-line"><tt class="py-string"><table class="help summary" border="1" cellspacing="0" cellpadding="3"></tt> </tt>
+<a name="L107"></a><tt class="py-lineno">107</tt>  <tt class="py-line"><tt class="py-string">  <tr style="height: 30%%"></tt> </tt>
+<a name="L108"></a><tt class="py-lineno">108</tt>  <tt class="py-line"><tt class="py-string">    <td align="center" style="font-size: small"></tt> </tt>
+<a name="L109"></a><tt class="py-lineno">109</tt>  <tt class="py-line"><tt class="py-string">       Project<br />Contents<hr />...</td></tt> </tt>
+<a name="L110"></a><tt class="py-lineno">110</tt>  <tt class="py-line"><tt class="py-string">    <td align="center" style="font-size: small" rowspan="2" width="70%%"></tt> </tt>
+<a name="L111"></a><tt class="py-lineno">111</tt>  <tt class="py-line"><tt class="py-string">      API<br />Documentation<br />Frame<br /><br /><br /></tt> </tt>
+<a name="L112"></a><tt class="py-lineno">112</tt>  <tt class="py-line"><tt class="py-string">    </td></tt> </tt>
+<a name="L113"></a><tt class="py-lineno">113</tt>  <tt class="py-line"><tt class="py-string">  </tr></tt> </tt>
+<a name="L114"></a><tt class="py-lineno">114</tt>  <tt class="py-line"><tt class="py-string">  <tr></tt> </tt>
+<a name="L115"></a><tt class="py-lineno">115</tt>  <tt class="py-line"><tt class="py-string">    <td align="center" style="font-size: small"></tt> </tt>
+<a name="L116"></a><tt class="py-lineno">116</tt>  <tt class="py-line"><tt class="py-string">      Module<br />Contents<hr />&nbsp;<br />...<br />&nbsp;</tt> </tt>
+<a name="L117"></a><tt class="py-lineno">117</tt>  <tt class="py-line"><tt class="py-string">    </td></tt> </tt>
+<a name="L118"></a><tt class="py-lineno">118</tt>  <tt class="py-line"><tt class="py-string">  </tr></tt> </tt>
+<a name="L119"></a><tt class="py-lineno">119</tt>  <tt class="py-line"><tt class="py-string"></table><br /></tt> </tt>
+<a name="L120"></a><tt class="py-lineno">120</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L121"></a><tt class="py-lineno">121</tt>  <tt class="py-line"><tt class="py-string"><p> The <strong>project contents frame</strong> contains a list of all packages</tt> </tt>
+<a name="L122"></a><tt class="py-lineno">122</tt>  <tt class="py-line"><tt class="py-string">and modules that are defined by the project.  Clicking on an entry</tt> </tt>
+<a name="L123"></a><tt class="py-lineno">123</tt>  <tt class="py-line"><tt class="py-string">will display its contents in the module contents frame.  Clicking on a</tt> </tt>
+<a name="L124"></a><tt class="py-lineno">124</tt>  <tt class="py-line"><tt class="py-string">special entry, labeled "Everything," will display the contents of</tt> </tt>
+<a name="L125"></a><tt class="py-lineno">125</tt>  <tt class="py-line"><tt class="py-string">the entire project. </p></tt> </tt>
+<a name="L126"></a><tt class="py-lineno">126</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L127"></a><tt class="py-lineno">127</tt>  <tt class="py-line"><tt class="py-string"><p> The <strong>module contents frame</strong> contains a list of every</tt> </tt>
+<a name="L128"></a><tt class="py-lineno">128</tt>  <tt class="py-line"><tt class="py-string">submodule, class, type, exception, function, and variable defined by a</tt> </tt>
+<a name="L129"></a><tt class="py-lineno">129</tt>  <tt class="py-line"><tt class="py-string">module or package.  Clicking on an entry will display its</tt> </tt>
+<a name="L130"></a><tt class="py-lineno">130</tt>  <tt class="py-line"><tt class="py-string">documentation in the API documentation frame.  Clicking on the name of</tt> </tt>
+<a name="L131"></a><tt class="py-lineno">131</tt>  <tt class="py-line"><tt class="py-string">the module, at the top of the frame, will display the documentation</tt> </tt>
+<a name="L132"></a><tt class="py-lineno">132</tt>  <tt class="py-line"><tt class="py-string">for the module itself. </p></tt> </tt>
+<a name="L133"></a><tt class="py-lineno">133</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L134"></a><tt class="py-lineno">134</tt>  <tt class="py-line"><tt class="py-string"><p> The "<strong>frames</strong>" and "<strong>no frames</strong>" buttons below the top</tt> </tt>
+<a name="L135"></a><tt class="py-lineno">135</tt>  <tt class="py-line"><tt class="py-string">navigation bar can be used to control whether the table of contents is</tt> </tt>
+<a name="L136"></a><tt class="py-lineno">136</tt>  <tt class="py-line"><tt class="py-string">displayed or not. </p></tt> </tt>
+<a name="L137"></a><tt class="py-lineno">137</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L138"></a><tt class="py-lineno">138</tt>  <tt class="py-line"><tt class="py-string"><h2> The Navigation Bar </h2></tt> </tt>
+<a name="L139"></a><tt class="py-lineno">139</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L140"></a><tt class="py-lineno">140</tt>  <tt class="py-line"><tt class="py-string"><p> A navigation bar is located at the top and bottom of every page.</tt> </tt>
+<a name="L141"></a><tt class="py-lineno">141</tt>  <tt class="py-line"><tt class="py-string">It indicates what type of page you are currently viewing, and allows</tt> </tt>
+<a name="L142"></a><tt class="py-lineno">142</tt>  <tt class="py-line"><tt class="py-string">you to go to related pages.  The following table describes the labels</tt> </tt>
+<a name="L143"></a><tt class="py-lineno">143</tt>  <tt class="py-line"><tt class="py-string">on the navigation bar.  Note that not some labels (such as</tt> </tt>
+<a name="L144"></a><tt class="py-lineno">144</tt>  <tt class="py-line"><tt class="py-string">[Parent]) are not displayed on all pages. </p></tt> </tt>
+<a name="L145"></a><tt class="py-lineno">145</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L146"></a><tt class="py-lineno">146</tt>  <tt class="py-line"><tt class="py-string"><table class="summary" border="1" cellspacing="0" cellpadding="3" width="100%%"></tt> </tt>
+<a name="L147"></a><tt class="py-lineno">147</tt>  <tt class="py-line"><tt class="py-string"><tr class="summary"></tt> </tt>
+<a name="L148"></a><tt class="py-lineno">148</tt>  <tt class="py-line"><tt class="py-string">  <th>Label</th></tt> </tt>
+<a name="L149"></a><tt class="py-lineno">149</tt>  <tt class="py-line"><tt class="py-string">  <th>Highlighted when...</th></tt> </tt>
+<a name="L150"></a><tt class="py-lineno">150</tt>  <tt class="py-line"><tt class="py-string">  <th>Links to...</th></tt> </tt>
+<a name="L151"></a><tt class="py-lineno">151</tt>  <tt class="py-line"><tt class="py-string"></tr></tt> </tt>
+<a name="L152"></a><tt class="py-lineno">152</tt>  <tt class="py-line"><tt class="py-string">  <tr><td valign="top"><strong>[Parent]</strong></td></tt> </tt>
+<a name="L153"></a><tt class="py-lineno">153</tt>  <tt class="py-line"><tt class="py-string">      <td valign="top"><em>(never highlighted)</em></td></tt> </tt>
+<a name="L154"></a><tt class="py-lineno">154</tt>  <tt class="py-line"><tt class="py-string">      <td valign="top"> the parent of the current package </td></tr></tt> </tt>
+<a name="L155"></a><tt class="py-lineno">155</tt>  <tt class="py-line"><tt class="py-string">  <tr><td valign="top"><strong>[Package]</strong></td></tt> </tt>
+<a name="L156"></a><tt class="py-lineno">156</tt>  <tt class="py-line"><tt class="py-string">      <td valign="top">viewing a package</td></tt> </tt>
+<a name="L157"></a><tt class="py-lineno">157</tt>  <tt class="py-line"><tt class="py-string">      <td valign="top">the package containing the current object</tt> </tt>
+<a name="L158"></a><tt class="py-lineno">158</tt>  <tt class="py-line"><tt class="py-string">      </td></tr></tt> </tt>
+<a name="L159"></a><tt class="py-lineno">159</tt>  <tt class="py-line"><tt class="py-string">  <tr><td valign="top"><strong>[Module]</strong></td></tt> </tt>
+<a name="L160"></a><tt class="py-lineno">160</tt>  <tt class="py-line"><tt class="py-string">      <td valign="top">viewing a module</td></tt> </tt>
+<a name="L161"></a><tt class="py-lineno">161</tt>  <tt class="py-line"><tt class="py-string">      <td valign="top">the module containing the current object</tt> </tt>
+<a name="L162"></a><tt class="py-lineno">162</tt>  <tt class="py-line"><tt class="py-string">      </td></tr> </tt> </tt>
+<a name="L163"></a><tt class="py-lineno">163</tt>  <tt class="py-line"><tt class="py-string">  <tr><td valign="top"><strong>[Class]</strong></td></tt> </tt>
+<a name="L164"></a><tt class="py-lineno">164</tt>  <tt class="py-line"><tt class="py-string">      <td valign="top">viewing a class </td></tt> </tt>
+<a name="L165"></a><tt class="py-lineno">165</tt>  <tt class="py-line"><tt class="py-string">      <td valign="top">the class containing the current object</td></tr></tt> </tt>
+<a name="L166"></a><tt class="py-lineno">166</tt>  <tt class="py-line"><tt class="py-string">  <tr><td valign="top"><strong>[Trees]</strong></td></tt> </tt>
+<a name="L167"></a><tt class="py-lineno">167</tt>  <tt class="py-line"><tt class="py-string">      <td valign="top">viewing the trees page</td></tt> </tt>
+<a name="L168"></a><tt class="py-lineno">168</tt>  <tt class="py-line"><tt class="py-string">      <td valign="top"> the trees page </td></tr></tt> </tt>
+<a name="L169"></a><tt class="py-lineno">169</tt>  <tt class="py-line"><tt class="py-string">  <tr><td valign="top"><strong>[Index]</strong></td></tt> </tt>
+<a name="L170"></a><tt class="py-lineno">170</tt>  <tt class="py-line"><tt class="py-string">      <td valign="top">viewing the index page</td></tt> </tt>
+<a name="L171"></a><tt class="py-lineno">171</tt>  <tt class="py-line"><tt class="py-string">      <td valign="top"> the index page </td></tr></tt> </tt>
+<a name="L172"></a><tt class="py-lineno">172</tt>  <tt class="py-line"><tt class="py-string">  <tr><td valign="top"><strong>[Help]</strong></td></tt> </tt>
+<a name="L173"></a><tt class="py-lineno">173</tt>  <tt class="py-line"><tt class="py-string">      <td valign="top">viewing the help page</td></tt> </tt>
+<a name="L174"></a><tt class="py-lineno">174</tt>  <tt class="py-line"><tt class="py-string">      <td valign="top"> the help page </td></tr></tt> </tt>
+<a name="L175"></a><tt class="py-lineno">175</tt>  <tt class="py-line"><tt class="py-string"></table></tt> </tt>
+<a name="L176"></a><tt class="py-lineno">176</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L177"></a><tt class="py-lineno">177</tt>  <tt class="py-line"><tt class="py-string"><p> The "<strong>show private</strong>" and "<strong>hide private</strong>" buttons below</tt> </tt>
+<a name="L178"></a><tt class="py-lineno">178</tt>  <tt class="py-line"><tt class="py-string">the top navigation bar can be used to control whether documentation</tt> </tt>
+<a name="L179"></a><tt class="py-lineno">179</tt>  <tt class="py-line"><tt class="py-string">for private objects is displayed.  Private objects are usually defined</tt> </tt>
+<a name="L180"></a><tt class="py-lineno">180</tt>  <tt class="py-line"><tt class="py-string">as objects whose (short) names begin with a single underscore, but do</tt> </tt>
+<a name="L181"></a><tt class="py-lineno">181</tt>  <tt class="py-line"><tt class="py-string">not end with an underscore.  For example, "<code>_x</code>",</tt> </tt>
+<a name="L182"></a><tt class="py-lineno">182</tt>  <tt class="py-line"><tt class="py-string">"<code>__pprint</code>", and "<code>epydoc.epytext._tokenize</code>"</tt> </tt>
+<a name="L183"></a><tt class="py-lineno">183</tt>  <tt class="py-line"><tt class="py-string">are private objects; but "<code>re.sub</code>",</tt> </tt>
+<a name="L184"></a><tt class="py-lineno">184</tt>  <tt class="py-line"><tt class="py-string">"<code>__init__</code>", and "<code>type_</code>" are not.  However,</tt> </tt>
+<a name="L185"></a><tt class="py-lineno">185</tt>  <tt class="py-line"><tt class="py-string">if a module defines the "<code>__all__</code>" variable, then its</tt> </tt>
+<a name="L186"></a><tt class="py-lineno">186</tt>  <tt class="py-line"><tt class="py-string">contents are used to decide which objects are private. </p></tt> </tt>
+<a name="L187"></a><tt class="py-lineno">187</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L188"></a><tt class="py-lineno">188</tt>  <tt class="py-line"><tt class="py-string"><p> A timestamp below the bottom navigation bar indicates when each</tt> </tt>
+<a name="L189"></a><tt class="py-lineno">189</tt>  <tt class="py-line"><tt class="py-string">page was last updated. </p></tt> </tt>
+<a name="L190"></a><tt class="py-lineno">190</tt>  <tt class="py-line"><tt class="py-string">'''</tt> </tt>
+<a name="L191"></a><tt class="py-lineno">191</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:09:56 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.docwriter.latex-module.html b/doc/api/epydoc.docwriter.latex-module.html
new file mode 100644
index 0000000..1802bec
--- /dev/null
+++ b/doc/api/epydoc.docwriter.latex-module.html
@@ -0,0 +1,150 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.docwriter.latex</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.docwriter-module.html">Package docwriter</a> ::
+        Module latex
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.docwriter.latex-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module latex</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.docwriter.latex-pysrc.html">source code</a></span></p>
+<p>The LaTeX output generator for epydoc.  The main interface provided by
+  this module is the <a 
+  href="epydoc.docwriter.latex.LatexWriter-class.html" 
+  class="link">LatexWriter</a> class.</p>
+
+<hr />
+<div class="fields">      <p><strong>To Do:</strong>
+        Inheritance=listed
+      </p>
+</div><!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Classes</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Classes"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docwriter.latex.LatexWriter-class.html" class="summary-name">LatexWriter</a>
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:06:37 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.docwriter.latex-pysrc.html b/doc/api/epydoc.docwriter.latex-pysrc.html
new file mode 100644
index 0000000..8673bad
--- /dev/null
+++ b/doc/api/epydoc.docwriter.latex-pysrc.html
@@ -0,0 +1,1588 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.docwriter.latex</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.docwriter-module.html">Package docwriter</a> ::
+        Module latex
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.docwriter.latex-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="epydoc.docwriter.latex-module.html">Module epydoc.docwriter.latex</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno">   1</tt>  <tt class="py-line"><tt class="py-comment">#</tt> </tt>
+<a name="L2"></a><tt class="py-lineno">   2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># epydoc.py: epydoc LaTeX output generator</tt> </tt>
+<a name="L3"></a><tt class="py-lineno">   3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Edward Loper</tt> </tt>
+<a name="L4"></a><tt class="py-lineno">   4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L5"></a><tt class="py-lineno">   5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Created [01/30/01 05:18 PM]</tt> </tt>
+<a name="L6"></a><tt class="py-lineno">   6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># $Id: latex.py 1621 2007-09-23 18:54:23Z edloper $</tt> </tt>
+<a name="L7"></a><tt class="py-lineno">   7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L8"></a><tt class="py-lineno">   8</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L9"></a><tt class="py-lineno">   9</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L10"></a><tt class="py-lineno">  10</tt>  <tt class="py-line"><tt class="py-docstring">The LaTeX output generator for epydoc.  The main interface provided by</tt> </tt>
+<a name="L11"></a><tt class="py-lineno">  11</tt>  <tt class="py-line"><tt class="py-docstring">this module is the L{LatexWriter} class.</tt> </tt>
+<a name="L12"></a><tt class="py-lineno">  12</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L13"></a><tt class="py-lineno">  13</tt>  <tt class="py-line"><tt class="py-docstring">@todo: Inheritance=listed</tt> </tt>
+<a name="L14"></a><tt class="py-lineno">  14</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L15"></a><tt class="py-lineno">  15</tt>  <tt class="py-line"><tt class="py-name">__docformat__</tt> <tt class="py-op">=</tt> <tt class="py-string">'epytext en'</tt> </tt>
+<a name="L16"></a><tt class="py-lineno">  16</tt>  <tt class="py-line"> </tt>
+<a name="L17"></a><tt class="py-lineno">  17</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-0" class="py-name" targets="Variable epydoc.apidoc.ModuleDoc.path=epydoc.apidoc.ModuleDoc-class.html#path"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-0', 'path', 'link-0');">path</a></tt><tt class="py-op">,</tt> <tt class="py-name">sys</tt><tt class="py-op">,</tt> <tt c [...]
+<a name="L18"></a><tt class="py-lineno">  18</tt>  <tt class="py-line"> </tt>
+<a name="L19"></a><tt class="py-lineno">  19</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-1" class="py-name" targets="Package epydoc=epydoc-module.html"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-1', 'epydoc', 'link-1');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-2" class="py-name" targets="Module epydoc.apidoc=epydoc.apidoc-module.html"><a title="epydoc.apidoc" class="py-name" href="#" onclick="return doclink('link-2', ' [...]
+<a name="L20"></a><tt class="py-lineno">  20</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-3" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-3', 'epydoc', 'link-1');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-4" class="py-name" targets="Module epydoc.compat=epydoc.compat-module.html"><a title="epydoc.compat" class="py-name" href="#" onclick="return doclink('link-4', 'compat', 'link-4');">compat</a></tt> <tt cla [...]
+<a name="L21"></a><tt class="py-lineno">  21</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-5" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-5', 'epydoc', 'link-1');">epydoc</a></tt> </tt>
+<a name="L22"></a><tt class="py-lineno">  22</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-6" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-6', 'epydoc', 'link-1');">epydoc</a></tt> <tt class="py-keyword">import</tt> <tt id="link-7" class="py-name" targets="Method epydoc.cli.ConsoleLogger.log()=epydoc.cli.ConsoleLogger-class.html#log,Method epydoc.cli.HTMLLogger.log()=epydoc.cli.HTMLLogger-class.html#log,Method epydoc.g [...]
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-7', 'log', 'link-7');">log</a></tt> </tt>
+<a name="L23"></a><tt class="py-lineno">  23</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-8" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-8', 'epydoc', 'link-1');">epydoc</a></tt> <tt class="py-keyword">import</tt> <tt id="link-9" class="py-name" targets="Package epydoc.markup=epydoc.markup-module.html,Method epydoc.markup.doctest.DoctestColorizer.markup()=epydoc.markup.doctest.DoctestColorizer-class.html#markup,Metho [...]
+epydoc.markup.doctest.DoctestColorizer.markup
+epydoc.markup.doctest.HTMLDoctestColorizer.markup
+epydoc.markup.doctest.LaTeXDoctestColorizer.markup
+epydoc.markup.doctest.XMLDoctestColorizer.markup" class="py-name" href="#" onclick="return doclink('link-9', 'markup', 'link-9');">markup</a></tt> </tt>
+<a name="L24"></a><tt class="py-lineno">  24</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-10" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-10', 'epydoc', 'link-1');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-11" class="py-name" targets="Module epydoc.test.util=epydoc.test.util-module.html,Module epydoc.util=epydoc.util-module.html"><a title="epydoc.test.util
+epydoc.util" class="py-name" href="#" onclick="return doclink('link-11', 'util', 'link-11');">util</a></tt> <tt class="py-keyword">import</tt> <tt id="link-12" class="py-name" targets="Function epydoc.util.plaintext_to_latex()=epydoc.util-module.html#plaintext_to_latex"><a title="epydoc.util.plaintext_to_latex" class="py-name" href="#" onclick="return doclink('link-12', 'plaintext_to_latex', 'link-12');">plaintext_to_latex</a></tt> </tt>
+<a name="L25"></a><tt class="py-lineno">  25</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-13" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-13', 'epydoc', 'link-1');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-14" class="py-name"><a title="epydoc.markup
+epydoc.markup.doctest.DoctestColorizer.markup
+epydoc.markup.doctest.HTMLDoctestColorizer.markup
+epydoc.markup.doctest.LaTeXDoctestColorizer.markup
+epydoc.markup.doctest.XMLDoctestColorizer.markup" class="py-name" href="#" onclick="return doclink('link-14', 'markup', 'link-9');">markup</a></tt> </tt>
+<a name="L26"></a><tt class="py-lineno">  26</tt>  <tt class="py-line"> </tt>
+<a name="LatexWriter"></a><div id="LatexWriter-def"><a name="L27"></a><tt class="py-lineno">  27</tt> <a class="py-toggle" href="#" id="LatexWriter-toggle" onclick="return toggle('LatexWriter');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="epydoc.docwriter.latex.LatexWriter-class.html">LatexWriter</a><tt class="py-op">:</tt> </tt>
+</div><div id="LatexWriter-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="LatexWriter-expanded"><a name="L28"></a><tt class="py-lineno">  28</tt>  <tt class="py-line">    <tt id="link-15" class="py-name" targets="Variable epydoc.docwriter.latex.LatexWriter.PREAMBLE=epydoc.docwriter.latex.LatexWriter-class.html#PREAMBLE"><a title="epydoc.docwriter.latex.LatexWriter.PREAMBLE" class="py-name" href="#" onclick="return doclink('link-15', 'PREAMBLE', 'link-15');">PREA [...]
+<a name="L29"></a><tt class="py-lineno">  29</tt>  <tt class="py-line">        <tt class="py-string">"\\documentclass{article}"</tt><tt class="py-op">,</tt> </tt>
+<a name="L30"></a><tt class="py-lineno">  30</tt>  <tt class="py-line">        <tt class="py-string">"\\usepackage{alltt, parskip, fancyhdr, boxedminipage}"</tt><tt class="py-op">,</tt> </tt>
+<a name="L31"></a><tt class="py-lineno">  31</tt>  <tt class="py-line">        <tt class="py-string">"\\usepackage{makeidx, multirow, longtable, tocbibind, amssymb}"</tt><tt class="py-op">,</tt> </tt>
+<a name="L32"></a><tt class="py-lineno">  32</tt>  <tt class="py-line">        <tt class="py-string">"\\usepackage{fullpage}"</tt><tt class="py-op">,</tt> </tt>
+<a name="L33"></a><tt class="py-lineno">  33</tt>  <tt class="py-line">        <tt class="py-string">"\\usepackage[usenames]{color}"</tt><tt class="py-op">,</tt> </tt>
+<a name="L34"></a><tt class="py-lineno">  34</tt>  <tt class="py-line">        <tt class="py-comment"># Fix the heading position -- without this, the headings generated</tt> </tt>
+<a name="L35"></a><tt class="py-lineno">  35</tt>  <tt class="py-line">        <tt class="py-comment"># by the fancyheadings package sometimes overlap the text.</tt> </tt>
+<a name="L36"></a><tt class="py-lineno">  36</tt>  <tt class="py-line">        <tt class="py-string">"\\setlength{\\headheight}{16pt}"</tt><tt class="py-op">,</tt> </tt>
+<a name="L37"></a><tt class="py-lineno">  37</tt>  <tt class="py-line">        <tt class="py-string">"\\setlength{\\headsep}{24pt}"</tt><tt class="py-op">,</tt> </tt>
+<a name="L38"></a><tt class="py-lineno">  38</tt>  <tt class="py-line">        <tt class="py-string">"\\setlength{\\topmargin}{-\\headsep}"</tt><tt class="py-op">,</tt> </tt>
+<a name="L39"></a><tt class="py-lineno">  39</tt>  <tt class="py-line">        <tt class="py-comment"># By default, do not indent paragraphs.</tt> </tt>
+<a name="L40"></a><tt class="py-lineno">  40</tt>  <tt class="py-line">        <tt class="py-string">"\\setlength{\\parindent}{0ex}"</tt><tt class="py-op">,</tt> </tt>
+<a name="L41"></a><tt class="py-lineno">  41</tt>  <tt class="py-line">        <tt class="py-string">"\\setlength{\\parskip}{2ex}"</tt><tt class="py-op">,</tt> </tt>
+<a name="L42"></a><tt class="py-lineno">  42</tt>  <tt class="py-line">        <tt class="py-comment"># Double the standard size boxedminipage outlines.</tt> </tt>
+<a name="L43"></a><tt class="py-lineno">  43</tt>  <tt class="py-line">        <tt class="py-string">"\\setlength{\\fboxrule}{2\\fboxrule}"</tt><tt class="py-op">,</tt> </tt>
+<a name="L44"></a><tt class="py-lineno">  44</tt>  <tt class="py-line">        <tt class="py-comment"># Create a 'base class' length named BCL for use in base trees.</tt> </tt>
+<a name="L45"></a><tt class="py-lineno">  45</tt>  <tt class="py-line">        <tt class="py-string">"\\newlength{\\BCL} % base class length, for base trees."</tt><tt class="py-op">,</tt> </tt>
+<a name="L46"></a><tt class="py-lineno">  46</tt>  <tt class="py-line">        <tt class="py-comment"># Display the section & subsection names in a header.</tt> </tt>
+<a name="L47"></a><tt class="py-lineno">  47</tt>  <tt class="py-line">        <tt class="py-string">"\\pagestyle{fancy}"</tt><tt class="py-op">,</tt> </tt>
+<a name="L48"></a><tt class="py-lineno">  48</tt>  <tt class="py-line">        <tt class="py-string">"\\renewcommand{\\sectionmark}[1]{\\markboth{#1}{}}"</tt><tt class="py-op">,</tt> </tt>
+<a name="L49"></a><tt class="py-lineno">  49</tt>  <tt class="py-line">        <tt class="py-string">"\\renewcommand{\\subsectionmark}[1]{\\markright{#1}}"</tt><tt class="py-op">,</tt> </tt>
+<a name="L50"></a><tt class="py-lineno">  50</tt>  <tt class="py-line">        <tt class="py-comment"># Colorization for python source code</tt> </tt>
+<a name="L51"></a><tt class="py-lineno">  51</tt>  <tt class="py-line">        <tt class="py-string">"\\definecolor{py at keywordcolour}{rgb}{1,0.45882,0}"</tt><tt class="py-op">,</tt> </tt>
+<a name="L52"></a><tt class="py-lineno">  52</tt>  <tt class="py-line">        <tt class="py-string">"\\definecolor{py at stringcolour}{rgb}{0,0.666666,0}"</tt><tt class="py-op">,</tt> </tt>
+<a name="L53"></a><tt class="py-lineno">  53</tt>  <tt class="py-line">        <tt class="py-string">"\\definecolor{py at commentcolour}{rgb}{1,0,0}"</tt><tt class="py-op">,</tt> </tt>
+<a name="L54"></a><tt class="py-lineno">  54</tt>  <tt class="py-line">        <tt class="py-string">"\\definecolor{py at ps1colour}{rgb}{0.60784,0,0}"</tt><tt class="py-op">,</tt> </tt>
+<a name="L55"></a><tt class="py-lineno">  55</tt>  <tt class="py-line">        <tt class="py-string">"\\definecolor{py at ps2colour}{rgb}{0.60784,0,1}"</tt><tt class="py-op">,</tt> </tt>
+<a name="L56"></a><tt class="py-lineno">  56</tt>  <tt class="py-line">        <tt class="py-string">"\\definecolor{py at inputcolour}{rgb}{0,0,0}"</tt><tt class="py-op">,</tt> </tt>
+<a name="L57"></a><tt class="py-lineno">  57</tt>  <tt class="py-line">        <tt class="py-string">"\\definecolor{py at outputcolour}{rgb}{0,0,1}"</tt><tt class="py-op">,</tt> </tt>
+<a name="L58"></a><tt class="py-lineno">  58</tt>  <tt class="py-line">        <tt class="py-string">"\\definecolor{py at exceptcolour}{rgb}{1,0,0}"</tt><tt class="py-op">,</tt> </tt>
+<a name="L59"></a><tt class="py-lineno">  59</tt>  <tt class="py-line">        <tt class="py-string">"\\definecolor{py at defnamecolour}{rgb}{1,0.5,0.5}"</tt><tt class="py-op">,</tt> </tt>
+<a name="L60"></a><tt class="py-lineno">  60</tt>  <tt class="py-line">        <tt class="py-string">"\\definecolor{py at builtincolour}{rgb}{0.58039,0,0.58039}"</tt><tt class="py-op">,</tt> </tt>
+<a name="L61"></a><tt class="py-lineno">  61</tt>  <tt class="py-line">        <tt class="py-string">"\\definecolor{py at identifiercolour}{rgb}{0,0,0}"</tt><tt class="py-op">,</tt> </tt>
+<a name="L62"></a><tt class="py-lineno">  62</tt>  <tt class="py-line">        <tt class="py-string">"\\definecolor{py at linenumcolour}{rgb}{0.4,0.4,0.4}"</tt><tt class="py-op">,</tt> </tt>
+<a name="L63"></a><tt class="py-lineno">  63</tt>  <tt class="py-line">        <tt class="py-string">"\\definecolor{py at inputcolour}{rgb}{0,0,0}"</tt><tt class="py-op">,</tt> </tt>
+<a name="L64"></a><tt class="py-lineno">  64</tt>  <tt class="py-line">        <tt class="py-string">"% Prompt"</tt><tt class="py-op">,</tt> </tt>
+<a name="L65"></a><tt class="py-lineno">  65</tt>  <tt class="py-line">        <tt class="py-string">"\\newcommand{\\pysrcprompt}[1]{\\textcolor{py at ps1colour}"</tt> </tt>
+<a name="L66"></a><tt class="py-lineno">  66</tt>  <tt class="py-line">            <tt class="py-string">"{\\small\\textbf{#1}}}"</tt><tt class="py-op">,</tt> </tt>
+<a name="L67"></a><tt class="py-lineno">  67</tt>  <tt class="py-line">        <tt class="py-string">"\\newcommand{\\pysrcmore}[1]{\\textcolor{py at ps2colour}"</tt> </tt>
+<a name="L68"></a><tt class="py-lineno">  68</tt>  <tt class="py-line">            <tt class="py-string">"{\\small\\textbf{#1}}}"</tt><tt class="py-op">,</tt> </tt>
+<a name="L69"></a><tt class="py-lineno">  69</tt>  <tt class="py-line">        <tt class="py-string">"% Source code"</tt><tt class="py-op">,</tt> </tt>
+<a name="L70"></a><tt class="py-lineno">  70</tt>  <tt class="py-line">        <tt class="py-string">"\\newcommand{\\pysrckeyword}[1]{\\textcolor{py at keywordcolour}"</tt> </tt>
+<a name="L71"></a><tt class="py-lineno">  71</tt>  <tt class="py-line">            <tt class="py-string">"{\\small\\textbf{#1}}}"</tt><tt class="py-op">,</tt> </tt>
+<a name="L72"></a><tt class="py-lineno">  72</tt>  <tt class="py-line">        <tt class="py-string">"\\newcommand{\\pysrcbuiltin}[1]{\\textcolor{py at builtincolour}"</tt> </tt>
+<a name="L73"></a><tt class="py-lineno">  73</tt>  <tt class="py-line">            <tt class="py-string">"{\\small\\textbf{#1}}}"</tt><tt class="py-op">,</tt> </tt>
+<a name="L74"></a><tt class="py-lineno">  74</tt>  <tt class="py-line">        <tt class="py-string">"\\newcommand{\\pysrcstring}[1]{\\textcolor{py at stringcolour}"</tt> </tt>
+<a name="L75"></a><tt class="py-lineno">  75</tt>  <tt class="py-line">            <tt class="py-string">"{\\small\\textbf{#1}}}"</tt><tt class="py-op">,</tt> </tt>
+<a name="L76"></a><tt class="py-lineno">  76</tt>  <tt class="py-line">        <tt class="py-string">"\\newcommand{\\pysrcdefname}[1]{\\textcolor{py at defnamecolour}"</tt> </tt>
+<a name="L77"></a><tt class="py-lineno">  77</tt>  <tt class="py-line">            <tt class="py-string">"{\\small\\textbf{#1}}}"</tt><tt class="py-op">,</tt> </tt>
+<a name="L78"></a><tt class="py-lineno">  78</tt>  <tt class="py-line">        <tt class="py-string">"\\newcommand{\\pysrcother}[1]{\\small\\textbf{#1}}"</tt><tt class="py-op">,</tt> </tt>
+<a name="L79"></a><tt class="py-lineno">  79</tt>  <tt class="py-line">        <tt class="py-string">"% Comments"</tt><tt class="py-op">,</tt> </tt>
+<a name="L80"></a><tt class="py-lineno">  80</tt>  <tt class="py-line">        <tt class="py-string">"\\newcommand{\\pysrccomment}[1]{\\textcolor{py at commentcolour}"</tt> </tt>
+<a name="L81"></a><tt class="py-lineno">  81</tt>  <tt class="py-line">            <tt class="py-string">"{\\small\\textbf{#1}}}"</tt><tt class="py-op">,</tt> </tt>
+<a name="L82"></a><tt class="py-lineno">  82</tt>  <tt class="py-line">        <tt class="py-string">"% Output"</tt><tt class="py-op">,</tt> </tt>
+<a name="L83"></a><tt class="py-lineno">  83</tt>  <tt class="py-line">        <tt class="py-string">"\\newcommand{\\pysrcoutput}[1]{\\textcolor{py at outputcolour}"</tt> </tt>
+<a name="L84"></a><tt class="py-lineno">  84</tt>  <tt class="py-line">            <tt class="py-string">"{\\small\\textbf{#1}}}"</tt><tt class="py-op">,</tt> </tt>
+<a name="L85"></a><tt class="py-lineno">  85</tt>  <tt class="py-line">        <tt class="py-string">"% Exceptions"</tt><tt class="py-op">,</tt> </tt>
+<a name="L86"></a><tt class="py-lineno">  86</tt>  <tt class="py-line">        <tt class="py-string">"\\newcommand{\\pysrcexcept}[1]{\\textcolor{py at exceptcolour}"</tt> </tt>
+<a name="L87"></a><tt class="py-lineno">  87</tt>  <tt class="py-line">            <tt class="py-string">"{\\small\\textbf{#1}}}"</tt><tt class="py-op">,</tt> </tt>
+<a name="L88"></a><tt class="py-lineno">  88</tt>  <tt class="py-line">        <tt class="py-comment"># Size of the function description boxes.</tt> </tt>
+<a name="L89"></a><tt class="py-lineno">  89</tt>  <tt class="py-line">        <tt class="py-string">"\\newlength{\\funcindent}"</tt><tt class="py-op">,</tt> </tt>
+<a name="L90"></a><tt class="py-lineno">  90</tt>  <tt class="py-line">        <tt class="py-string">"\\newlength{\\funcwidth}"</tt><tt class="py-op">,</tt> </tt>
+<a name="L91"></a><tt class="py-lineno">  91</tt>  <tt class="py-line">        <tt class="py-string">"\\setlength{\\funcindent}{1cm}"</tt><tt class="py-op">,</tt> </tt>
+<a name="L92"></a><tt class="py-lineno">  92</tt>  <tt class="py-line">        <tt class="py-string">"\\setlength{\\funcwidth}{\\textwidth}"</tt><tt class="py-op">,</tt> </tt>
+<a name="L93"></a><tt class="py-lineno">  93</tt>  <tt class="py-line">        <tt class="py-string">"\\addtolength{\\funcwidth}{-2\\funcindent}"</tt><tt class="py-op">,</tt> </tt>
+<a name="L94"></a><tt class="py-lineno">  94</tt>  <tt class="py-line">        <tt class="py-comment"># Size of the var description tables.</tt> </tt>
+<a name="L95"></a><tt class="py-lineno">  95</tt>  <tt class="py-line">        <tt class="py-string">"\\newlength{\\varindent}"</tt><tt class="py-op">,</tt> </tt>
+<a name="L96"></a><tt class="py-lineno">  96</tt>  <tt class="py-line">        <tt class="py-string">"\\newlength{\\varnamewidth}"</tt><tt class="py-op">,</tt> </tt>
+<a name="L97"></a><tt class="py-lineno">  97</tt>  <tt class="py-line">        <tt class="py-string">"\\newlength{\\vardescrwidth}"</tt><tt class="py-op">,</tt> </tt>
+<a name="L98"></a><tt class="py-lineno">  98</tt>  <tt class="py-line">        <tt class="py-string">"\\newlength{\\varwidth}"</tt><tt class="py-op">,</tt> </tt>
+<a name="L99"></a><tt class="py-lineno">  99</tt>  <tt class="py-line">        <tt class="py-string">"\\setlength{\\varindent}{1cm}"</tt><tt class="py-op">,</tt> </tt>
+<a name="L100"></a><tt class="py-lineno"> 100</tt>  <tt class="py-line">        <tt class="py-string">"\\setlength{\\varnamewidth}{.3\\textwidth}"</tt><tt class="py-op">,</tt> </tt>
+<a name="L101"></a><tt class="py-lineno"> 101</tt>  <tt class="py-line">        <tt class="py-string">"\\setlength{\\varwidth}{\\textwidth}"</tt><tt class="py-op">,</tt> </tt>
+<a name="L102"></a><tt class="py-lineno"> 102</tt>  <tt class="py-line">        <tt class="py-string">"\\addtolength{\\varwidth}{-4\\tabcolsep}"</tt><tt class="py-op">,</tt> </tt>
+<a name="L103"></a><tt class="py-lineno"> 103</tt>  <tt class="py-line">        <tt class="py-string">"\\addtolength{\\varwidth}{-3\\arrayrulewidth}"</tt><tt class="py-op">,</tt> </tt>
+<a name="L104"></a><tt class="py-lineno"> 104</tt>  <tt class="py-line">        <tt class="py-string">"\\addtolength{\\varwidth}{-2\\varindent}"</tt><tt class="py-op">,</tt> </tt>
+<a name="L105"></a><tt class="py-lineno"> 105</tt>  <tt class="py-line">        <tt class="py-string">"\\setlength{\\vardescrwidth}{\\varwidth}"</tt><tt class="py-op">,</tt> </tt>
+<a name="L106"></a><tt class="py-lineno"> 106</tt>  <tt class="py-line">        <tt class="py-string">"\\addtolength{\\vardescrwidth}{-\\varnamewidth}"</tt><tt class="py-op">,</tt> </tt>
+<a name="L107"></a><tt class="py-lineno"> 107</tt>  <tt class="py-line">        <tt class="py-comment"># Define new environment for displaying parameter lists.</tt> </tt>
+<a name="L108"></a><tt class="py-lineno"> 108</tt>  <tt class="py-line">        <tt class="py-name">textwrap</tt><tt class="py-op">.</tt><tt class="py-name">dedent</tt><tt class="py-op">(</tt><tt class="py-string">"""\</tt> </tt>
+<a name="L109"></a><tt class="py-lineno"> 109</tt>  <tt class="py-line"><tt class="py-string">        \\newenvironment{Ventry}[1]%</tt> </tt>
+<a name="L110"></a><tt class="py-lineno"> 110</tt>  <tt class="py-line"><tt class="py-string">         {\\begin{list}{}{%</tt> </tt>
+<a name="L111"></a><tt class="py-lineno"> 111</tt>  <tt class="py-line"><tt class="py-string">           \\renewcommand{\\makelabel}[1]{\\texttt{##1:}\\hfil}%</tt> </tt>
+<a name="L112"></a><tt class="py-lineno"> 112</tt>  <tt class="py-line"><tt class="py-string">           \\settowidth{\\labelwidth}{\\texttt{#1:}}%</tt> </tt>
+<a name="L113"></a><tt class="py-lineno"> 113</tt>  <tt class="py-line"><tt class="py-string">           \\setlength{\\leftmargin}{\\labelsep}%</tt> </tt>
+<a name="L114"></a><tt class="py-lineno"> 114</tt>  <tt class="py-line"><tt class="py-string">           \\addtolength{\\leftmargin}{\\labelwidth}}}%</tt> </tt>
+<a name="L115"></a><tt class="py-lineno"> 115</tt>  <tt class="py-line"><tt class="py-string">         {\\end{list}}"""</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L116"></a><tt class="py-lineno"> 116</tt>  <tt class="py-line">        <tt class="py-op">]</tt> </tt>
+<a name="L117"></a><tt class="py-lineno"> 117</tt>  <tt class="py-line"> </tt>
+<a name="L118"></a><tt class="py-lineno"> 118</tt>  <tt class="py-line">    <tt id="link-16" class="py-name" targets="Variable epydoc.docwriter.latex.LatexWriter.HRULE=epydoc.docwriter.latex.LatexWriter-class.html#HRULE"><a title="epydoc.docwriter.latex.LatexWriter.HRULE" class="py-name" href="#" onclick="return doclink('link-16', 'HRULE', 'link-16');">HRULE</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'\\rule{\\textwidth}{0.5\\fboxrule}\n\n'</tt> </tt>
+<a name="L119"></a><tt class="py-lineno"> 119</tt>  <tt class="py-line"> </tt>
+<a name="L120"></a><tt class="py-lineno"> 120</tt>  <tt class="py-line">    <tt id="link-17" class="py-name" targets="Variable epydoc.docwriter.latex.LatexWriter.SECTIONS=epydoc.docwriter.latex.LatexWriter-class.html#SECTIONS"><a title="epydoc.docwriter.latex.LatexWriter.SECTIONS" class="py-name" href="#" onclick="return doclink('link-17', 'SECTIONS', 'link-17');">SECTIONS</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-string">'\\part{%s}'</tt><tt class="py-op">, [...]
+<a name="L121"></a><tt class="py-lineno"> 121</tt>  <tt class="py-line">                <tt class="py-string">'\\subsection{%s}'</tt><tt class="py-op">,</tt> <tt class="py-string">'\\subsubsection{%s}'</tt><tt class="py-op">,</tt> </tt>
+<a name="L122"></a><tt class="py-lineno"> 122</tt>  <tt class="py-line">                <tt class="py-string">'\\textbf{%s}'</tt><tt class="py-op">]</tt> </tt>
+<a name="L123"></a><tt class="py-lineno"> 123</tt>  <tt class="py-line"> </tt>
+<a name="L124"></a><tt class="py-lineno"> 124</tt>  <tt class="py-line">    <tt id="link-18" class="py-name" targets="Variable epydoc.docwriter.latex.LatexWriter.STAR_SECTIONS=epydoc.docwriter.latex.LatexWriter-class.html#STAR_SECTIONS"><a title="epydoc.docwriter.latex.LatexWriter.STAR_SECTIONS" class="py-name" href="#" onclick="return doclink('link-18', 'STAR_SECTIONS', 'link-18');">STAR_SECTIONS</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-string">'\\part*{%s [...]
+<a name="L125"></a><tt class="py-lineno"> 125</tt>  <tt class="py-line">                     <tt class="py-string">'\\subsection*{%s}'</tt><tt class="py-op">,</tt> <tt class="py-string">'\\subsubsection*{%s}'</tt><tt class="py-op">,</tt> </tt>
+<a name="L126"></a><tt class="py-lineno"> 126</tt>  <tt class="py-line">                     <tt class="py-string">'\\textbf{%s}'</tt><tt class="py-op">]</tt> </tt>
+<a name="L127"></a><tt class="py-lineno"> 127</tt>  <tt class="py-line"> </tt>
+<a name="LatexWriter.__init__"></a><div id="LatexWriter.__init__-def"><a name="L128"></a><tt class="py-lineno"> 128</tt> <a class="py-toggle" href="#" id="LatexWriter.__init__-toggle" onclick="return toggle('LatexWriter.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.latex.LatexWriter-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">d [...]
+</div><div id="LatexWriter.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="LatexWriter.__init__-expanded"><a name="L129"></a><tt class="py-lineno"> 129</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">docindex</tt> <tt class="py-op">=</tt> <tt class="py-name">docindex</tt> </tt>
+<a name="L130"></a><tt class="py-lineno"> 130</tt>  <tt class="py-line">        <tt class="py-comment"># Process keyword arguments</tt> </tt>
+<a name="L131"></a><tt class="py-lineno"> 131</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_show_private</tt> <tt class="py-op">=</tt> <tt class="py-name">kwargs</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'private'</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+<a name="L132"></a><tt class="py-lineno"> 132</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_prj_name</tt> <tt class="py-op">=</tt> <tt class="py-name">kwargs</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'prj_name'</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-string">'API Documentation'</tt> </tt>
+<a name="L133"></a><tt class="py-lineno"> 133</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_crossref</tt> <tt class="py-op">=</tt> <tt class="py-name">kwargs</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'crossref'</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L134"></a><tt class="py-lineno"> 134</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_index</tt> <tt class="py-op">=</tt> <tt class="py-name">kwargs</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'index'</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L135"></a><tt class="py-lineno"> 135</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_list_classes_separately</tt><tt class="py-op">=</tt><tt class="py-name">kwargs</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'list_classes_separately'</tt><tt class="py-op">,</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+<a name="L136"></a><tt class="py-lineno"> 136</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_inheritance</tt> <tt class="py-op">=</tt> <tt class="py-name">kwargs</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'inheritance'</tt><tt class="py-op">,</tt> <tt class="py-string">'listed'</tt><tt class="py-op">)</tt> </tt>
+<a name="L137"></a><tt class="py-lineno"> 137</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_exclude</tt> <tt class="py-op">=</tt> <tt class="py-name">kwargs</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'exclude'</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L138"></a><tt class="py-lineno"> 138</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_top_section</tt> <tt class="py-op">=</tt> <tt class="py-number">2</tt> </tt>
+<a name="L139"></a><tt class="py-lineno"> 139</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_index_functions</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L140"></a><tt class="py-lineno"> 140</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_hyperref</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L141"></a><tt class="py-lineno"> 141</tt>  <tt class="py-line"> </tt>
+<a name="L142"></a><tt class="py-lineno"> 142</tt>  <tt class="py-line">        <tt class="py-comment">#: The Python representation of the encoding.</tt> </tt>
+<a name="L143"></a><tt class="py-lineno"> 143</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#: Update L{latex_encodings} in case of mismatch between it and</tt> </tt>
+<a name="L144"></a><tt class="py-lineno"> 144</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#: the C{inputenc} LaTeX package.</tt> </tt>
+<a name="L145"></a><tt class="py-lineno"> 145</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_encoding</tt> <tt class="py-op">=</tt> <tt class="py-name">kwargs</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'encoding'</tt><tt class="py-op">,</tt> <tt class="py-string">'utf-8'</tt><tt class="py-op">)</tt> </tt>
+<a name="L146"></a><tt class="py-lineno"> 146</tt>  <tt class="py-line"> </tt>
+<a name="L147"></a><tt class="py-lineno"> 147</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">valdocs</tt> <tt class="py-op">=</tt> <tt class="py-name">valdocs</tt> <tt class="py-op">=</tt> <tt id="link-19" class="py-name" targets="Function epydoc.compat.sorted()=epydoc.compat-module.html#sorted"><a title="epydoc.compat.sorted" class="py-name" href="#" onclick="return doclink('link-19', 'sorted', 'link-19');">sorted</a></tt><tt c [...]
+epydoc.apidoc.reachable_valdocs" class="py-name" href="#" onclick="return doclink('link-20', 'reachable_valdocs', 'link-20');">reachable_valdocs</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L148"></a><tt class="py-lineno"> 148</tt>  <tt class="py-line">            <tt id="link-21" class="py-name" targets="Variable epydoc.apidoc.ModuleDoc.imports=epydoc.apidoc.ModuleDoc-class.html#imports"><a title="epydoc.apidoc.ModuleDoc.imports" class="py-name" href="#" onclick="return doclink('link-21', 'imports', 'link-21');">imports</a></tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> <tt class="py-name">packages</tt><tt class="py-op">=</tt><t [...]
+<a name="L149"></a><tt class="py-lineno"> 149</tt>  <tt class="py-line">            <tt id="link-24" class="py-name" targets="Variable epydoc.apidoc.ClassDoc.subclasses=epydoc.apidoc.ClassDoc-class.html#subclasses"><a title="epydoc.apidoc.ClassDoc.subclasses" class="py-name" href="#" onclick="return doclink('link-24', 'subclasses', 'link-24');">subclasses</a></tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> <tt class="py-name">private</tt><tt class="py-o [...]
+<a name="L150"></a><tt class="py-lineno"> 150</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_num_files</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-25" class="py-name" targets="Method epydoc.docwriter.latex.LatexWriter.num_files()=epydoc.docwriter.latex.LatexWriter-class.html#num_files"><a title="epydoc.docwriter.latex.LatexWriter.num_files" class="py-name" href="#" onclick="re [...]
+<a name="L151"></a><tt class="py-lineno"> 151</tt>  <tt class="py-line">        <tt class="py-comment"># For use with select_variables():</tt> </tt>
+<a name="L152"></a><tt class="py-lineno"> 152</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_show_private</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_public_filter</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L153"></a><tt class="py-lineno"> 153</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_public_filter</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L154"></a><tt class="py-lineno"> 154</tt>  <tt class="py-line"> </tt>
+<a name="L155"></a><tt class="py-lineno"> 155</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">class_list</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">d</tt> <tt class="py-keyword">for</tt> <tt class="py-name">d</tt> <tt class="py-keyword">in</tt> <tt class="py-name">valdocs</tt> <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">d</tt><tt clas [...]
+<a name="L156"></a><tt class="py-lineno"> 156</tt>  <tt class="py-line">        <tt class="py-string">"""The list of L{ClassDoc}s for the documented classes."""</tt> </tt>
+<a name="L157"></a><tt class="py-lineno"> 157</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">class_set</tt> <tt class="py-op">=</tt> <tt class="py-name">set</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">class_list</tt><tt class="py-op">)</tt> </tt>
+<a name="L158"></a><tt class="py-lineno"> 158</tt>  <tt class="py-line">        <tt class="py-string">"""The set of L{ClassDoc}s for the documented classes."""</tt> </tt>
+</div><a name="L159"></a><tt class="py-lineno"> 159</tt>  <tt class="py-line">         </tt>
+<a name="LatexWriter.write"></a><div id="LatexWriter.write-def"><a name="L160"></a><tt class="py-lineno"> 160</tt> <a class="py-toggle" href="#" id="LatexWriter.write-toggle" onclick="return toggle('LatexWriter.write');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.latex.LatexWriter-class.html#write">write</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">directory</tt><tt c [...]
+</div><div id="LatexWriter.write-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="LatexWriter.write-expanded"><a name="L161"></a><tt class="py-lineno"> 161</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L162"></a><tt class="py-lineno"> 162</tt>  <tt class="py-line"><tt class="py-docstring">        Write the API documentation for the entire project to the</tt> </tt>
+<a name="L163"></a><tt class="py-lineno"> 163</tt>  <tt class="py-line"><tt class="py-docstring">        given directory.</tt> </tt>
+<a name="L164"></a><tt class="py-lineno"> 164</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L165"></a><tt class="py-lineno"> 165</tt>  <tt class="py-line"><tt class="py-docstring">        @type directory: C{string}</tt> </tt>
+<a name="L166"></a><tt class="py-lineno"> 166</tt>  <tt class="py-line"><tt class="py-docstring">        @param directory: The directory to which output should be</tt> </tt>
+<a name="L167"></a><tt class="py-lineno"> 167</tt>  <tt class="py-line"><tt class="py-docstring">            written.  If no directory is specified, output will be</tt> </tt>
+<a name="L168"></a><tt class="py-lineno"> 168</tt>  <tt class="py-line"><tt class="py-docstring">            written to the current directory.  If the directory does</tt> </tt>
+<a name="L169"></a><tt class="py-lineno"> 169</tt>  <tt class="py-line"><tt class="py-docstring">            not exist, it will be created.</tt> </tt>
+<a name="L170"></a><tt class="py-lineno"> 170</tt>  <tt class="py-line"><tt class="py-docstring">        @rtype: C{None}</tt> </tt>
+<a name="L171"></a><tt class="py-lineno"> 171</tt>  <tt class="py-line"><tt class="py-docstring">        @raise OSError: If C{directory} cannot be created,</tt> </tt>
+<a name="L172"></a><tt class="py-lineno"> 172</tt>  <tt class="py-line"><tt class="py-docstring">        @raise OSError: If any file cannot be created or written to.</tt> </tt>
+<a name="L173"></a><tt class="py-lineno"> 173</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L174"></a><tt class="py-lineno"> 174</tt>  <tt class="py-line">        <tt class="py-comment"># For progress reporting:</tt> </tt>
+<a name="L175"></a><tt class="py-lineno"> 175</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_files_written</tt> <tt class="py-op">=</tt> <tt class="py-number">0.</tt> </tt>
+<a name="L176"></a><tt class="py-lineno"> 176</tt>  <tt class="py-line">         </tt>
+<a name="L177"></a><tt class="py-lineno"> 177</tt>  <tt class="py-line">        <tt class="py-comment"># Set the default values for ValueDoc formatted representations.</tt> </tt>
+<a name="L178"></a><tt class="py-lineno"> 178</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">orig_valdoc_defaults</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt id="link-27" class="py-name" targets="Class epydoc.apidoc.ValueDoc=epydoc.apidoc.ValueDoc-class.html"><a title="epydoc.apidoc.ValueDoc" class="py-name" href="#" onclick="return doclink('link-27', 'ValueDoc', 'link-27');">ValueDoc</a></tt><tt class="py-op">.</tt><tt id="link-28" class= [...]
+<a name="L179"></a><tt class="py-lineno"> 179</tt>  <tt class="py-line">                                <tt id="link-29" class="py-name"><a title="epydoc.apidoc.ValueDoc" class="py-name" href="#" onclick="return doclink('link-29', 'ValueDoc', 'link-27');">ValueDoc</a></tt><tt class="py-op">.</tt><tt id="link-30" class="py-name" targets="Variable epydoc.apidoc.ValueDoc.REPR_LINELEN=epydoc.apidoc.ValueDoc-class.html#REPR_LINELEN"><a title="epydoc.apidoc.ValueDoc.REPR_LINELEN" class="py-nam [...]
+<a name="L180"></a><tt class="py-lineno"> 180</tt>  <tt class="py-line">                                <tt id="link-31" class="py-name"><a title="epydoc.apidoc.ValueDoc" class="py-name" href="#" onclick="return doclink('link-31', 'ValueDoc', 'link-27');">ValueDoc</a></tt><tt class="py-op">.</tt><tt id="link-32" class="py-name" targets="Variable epydoc.apidoc.ValueDoc.REPR_MAXLINES=epydoc.apidoc.ValueDoc-class.html#REPR_MAXLINES"><a title="epydoc.apidoc.ValueDoc.REPR_MAXLINES" class="py- [...]
+<a name="L181"></a><tt class="py-lineno"> 181</tt>  <tt class="py-line">        <tt id="link-33" class="py-name"><a title="epydoc.apidoc.ValueDoc" class="py-name" href="#" onclick="return doclink('link-33', 'ValueDoc', 'link-27');">ValueDoc</a></tt><tt class="py-op">.</tt><tt id="link-34" class="py-name"><a title="epydoc.apidoc.ValueDoc.SUMMARY_REPR_LINELEN" class="py-name" href="#" onclick="return doclink('link-34', 'SUMMARY_REPR_LINELEN', 'link-28');">SUMMARY_REPR_LINELEN</a></tt> <tt  [...]
+<a name="L182"></a><tt class="py-lineno"> 182</tt>  <tt class="py-line">        <tt id="link-35" class="py-name"><a title="epydoc.apidoc.ValueDoc" class="py-name" href="#" onclick="return doclink('link-35', 'ValueDoc', 'link-27');">ValueDoc</a></tt><tt class="py-op">.</tt><tt id="link-36" class="py-name"><a title="epydoc.apidoc.ValueDoc.REPR_LINELEN" class="py-name" href="#" onclick="return doclink('link-36', 'REPR_LINELEN', 'link-30');">REPR_LINELEN</a></tt> <tt class="py-op">=</tt> <tt [...]
+<a name="L183"></a><tt class="py-lineno"> 183</tt>  <tt class="py-line">        <tt id="link-37" class="py-name"><a title="epydoc.apidoc.ValueDoc" class="py-name" href="#" onclick="return doclink('link-37', 'ValueDoc', 'link-27');">ValueDoc</a></tt><tt class="py-op">.</tt><tt id="link-38" class="py-name"><a title="epydoc.apidoc.ValueDoc.REPR_MAXLINES" class="py-name" href="#" onclick="return doclink('link-38', 'REPR_MAXLINES', 'link-32');">REPR_MAXLINES</a></tt> <tt class="py-op">=</tt>  [...]
+<a name="L184"></a><tt class="py-lineno"> 184</tt>  <tt class="py-line"> </tt>
+<a name="L185"></a><tt class="py-lineno"> 185</tt>  <tt class="py-line">        <tt class="py-comment"># Create destination directories, if necessary</tt> </tt>
+<a name="L186"></a><tt class="py-lineno"> 186</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">directory</tt><tt class="py-op">:</tt> <tt class="py-name">directory</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">curdir</tt> </tt>
+<a name="L187"></a><tt class="py-lineno"> 187</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-39" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter._mkdir()=epydoc.docwriter.html.HTMLWriter-class.html#_mkdir,Method epydoc.docwriter.latex.LatexWriter._mkdir()=epydoc.docwriter.latex.LatexWriter-class.html#_mkdir"><a title="epydoc.docwriter.html.HTMLWriter._mkdir
+epydoc.docwriter.latex.LatexWriter._mkdir" class="py-name" href="#" onclick="return doclink('link-39', '_mkdir', 'link-39');">_mkdir</a></tt><tt class="py-op">(</tt><tt class="py-name">directory</tt><tt class="py-op">)</tt> </tt>
+<a name="L188"></a><tt class="py-lineno"> 188</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_directory</tt> <tt class="py-op">=</tt> <tt class="py-name">directory</tt> </tt>
+<a name="L189"></a><tt class="py-lineno"> 189</tt>  <tt class="py-line">         </tt>
+<a name="L190"></a><tt class="py-lineno"> 190</tt>  <tt class="py-line">        <tt class="py-comment"># Write the top-level file.</tt> </tt>
+<a name="L191"></a><tt class="py-lineno"> 191</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-40" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter._write()=epydoc.docwriter.html.HTMLWriter-class.html#_write,Method epydoc.docwriter.latex.LatexWriter._write()=epydoc.docwriter.latex.LatexWriter-class.html#_write"><a title="epydoc.docwriter.html.HTMLWriter._write
+epydoc.docwriter.latex.LatexWriter._write" class="py-name" href="#" onclick="return doclink('link-40', '_write', 'link-40');">_write</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-41" class="py-name" targets="Method epydoc.docwriter.latex.LatexWriter.write_topfile()=epydoc.docwriter.latex.LatexWriter-class.html#write_topfile"><a title="epydoc.docwriter.latex.LatexWriter.write_topfile" class="py-name" href="#" onclick="return doclink('lin [...]
+<a name="L192"></a><tt class="py-lineno"> 192</tt>  <tt class="py-line"> </tt>
+<a name="L193"></a><tt class="py-lineno"> 193</tt>  <tt class="py-line">        <tt class="py-comment"># Write the module & class files.</tt> </tt>
+<a name="L194"></a><tt class="py-lineno"> 194</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">for</tt> <tt class="py-name">val_doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">valdocs</tt><tt class="py-op">:</tt> </tt>
+<a name="L195"></a><tt class="py-lineno"> 195</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">val_doc</tt><tt class="py-op">,</tt> <tt id="link-42" class="py-name" targets="Class epydoc.apidoc.ModuleDoc=epydoc.apidoc.ModuleDoc-class.html"><a title="epydoc.apidoc.ModuleDoc" class="py-name" href="#" onclick="return doclink('link-42', 'ModuleDoc', 'link-42');">ModuleDoc</a></tt><tt class="py- [...]
+<a name="L196"></a><tt class="py-lineno"> 196</tt>  <tt class="py-line">                <tt id="link-43" class="py-name" targets="Variable epydoc.apidoc.ModuleDoc.filename=epydoc.apidoc.ModuleDoc-class.html#filename"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-43', 'filename', 'link-43');">filename</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'%s-module.tex'</tt> <tt class="py-op">%</tt> <tt class="py-name">val_doc</tt><tt [...]
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-44', 'canonical_name', 'link-44');">canonical_name</a></tt> </tt>
+<a name="L197"></a><tt class="py-lineno"> 197</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-45" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter._write
+epydoc.docwriter.latex.LatexWriter._write" class="py-name" href="#" onclick="return doclink('link-45', '_write', 'link-40');">_write</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-46" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.write_module()=epydoc.docwriter.html.HTMLWriter-class.html#write_module,Method epydoc.docwriter.latex.LatexWriter.write_module()=epydoc.docwriter.latex.LatexWriter-class.html#write_module,Meth [...]
+epydoc.docwriter.latex.LatexWriter.write_module
+epydoc.docwriter.plaintext.PlaintextWriter.write_module" class="py-name" href="#" onclick="return doclink('link-46', 'write_module', 'link-46');">write_module</a></tt><tt class="py-op">,</tt> <tt class="py-name">directory</tt><tt class="py-op">,</tt> <tt id="link-47" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-47', 'filename', 'link-43');">filename</a></tt><tt class="py-op">,</tt> <tt class="py-name">val_doc</tt><tt c [...]
+<a name="L198"></a><tt class="py-lineno"> 198</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-op">(</tt><tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">val_doc</tt><tt class="py-op">,</tt> <tt id="link-48" class="py-name"><a title="epydoc.apidoc.ClassDoc" class="py-name" href="#" onclick="return doclink('link-48', 'ClassDoc', 'link-26');">ClassDoc</a></tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt>  </tt>
+<a name="L199"></a><tt class="py-lineno"> 199</tt>  <tt class="py-line">                  <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_list_classes_separately</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L200"></a><tt class="py-lineno"> 200</tt>  <tt class="py-line">                <tt id="link-49" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-49', 'filename', 'link-43');">filename</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'%s-class.tex'</tt> <tt class="py-op">%</tt> <tt class="py-name">val_doc</tt><tt class="py-op">.</tt><tt id="link-50" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.can [...]
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-50', 'canonical_name', 'link-44');">canonical_name</a></tt> </tt>
+<a name="L201"></a><tt class="py-lineno"> 201</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-51" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter._write
+epydoc.docwriter.latex.LatexWriter._write" class="py-name" href="#" onclick="return doclink('link-51', '_write', 'link-40');">_write</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-52" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.write_class()=epydoc.docwriter.html.HTMLWriter-class.html#write_class,Method epydoc.docwriter.latex.LatexWriter.write_class()=epydoc.docwriter.latex.LatexWriter-class.html#write_class,Method e [...]
+epydoc.docwriter.latex.LatexWriter.write_class
+epydoc.docwriter.plaintext.PlaintextWriter.write_class" class="py-name" href="#" onclick="return doclink('link-52', 'write_class', 'link-52');">write_class</a></tt><tt class="py-op">,</tt> <tt class="py-name">directory</tt><tt class="py-op">,</tt> <tt id="link-53" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-53', 'filename', 'link-43');">filename</a></tt><tt class="py-op">,</tt> <tt class="py-name">val_doc</tt><tt clas [...]
+<a name="L202"></a><tt class="py-lineno"> 202</tt>  <tt class="py-line"> </tt>
+<a name="L203"></a><tt class="py-lineno"> 203</tt>  <tt class="py-line">        <tt class="py-comment"># Restore defaults that we changed.</tt> </tt>
+<a name="L204"></a><tt class="py-lineno"> 204</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-op">(</tt><tt id="link-54" class="py-name"><a title="epydoc.apidoc.ValueDoc" class="py-name" href="#" onclick="return doclink('link-54', 'ValueDoc', 'link-27');">ValueDoc</a></tt><tt class="py-op">.</tt><tt id="link-55" class="py-name"><a title="epydoc.apidoc.ValueDoc.SUMMARY_REPR_LINELEN" class="py-name" href="#" onclick="return doclink('link-55', 'SUMMARY_REPR_LINEL [...]
+<a name="L205"></a><tt class="py-lineno"> 205</tt>  <tt class="py-line">         <tt id="link-58" class="py-name"><a title="epydoc.apidoc.ValueDoc" class="py-name" href="#" onclick="return doclink('link-58', 'ValueDoc', 'link-27');">ValueDoc</a></tt><tt class="py-op">.</tt><tt id="link-59" class="py-name"><a title="epydoc.apidoc.ValueDoc.REPR_MAXLINES" class="py-name" href="#" onclick="return doclink('link-59', 'REPR_MAXLINES', 'link-32');">REPR_MAXLINES</a></tt><tt class="py-op">)</tt>  [...]
+</div><a name="L206"></a><tt class="py-lineno"> 206</tt>  <tt class="py-line">         </tt>
+<a name="LatexWriter._write"></a><div id="LatexWriter._write-def"><a name="L207"></a><tt class="py-lineno"> 207</tt> <a class="py-toggle" href="#" id="LatexWriter._write-toggle" onclick="return toggle('LatexWriter._write');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.latex.LatexWriter-class.html#_write">_write</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">write_func</t [...]
+</div><div id="LatexWriter._write-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="LatexWriter._write-expanded"><a name="L208"></a><tt class="py-lineno"> 208</tt>  <tt class="py-line">        <tt class="py-comment"># Display our progress.</tt> </tt>
+<a name="L209"></a><tt class="py-lineno"> 209</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_files_written</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L210"></a><tt class="py-lineno"> 210</tt>  <tt class="py-line">        <tt id="link-60" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-60', 'log', 'link-7');">log</a></tt><tt class="py-op">.</tt><tt id="link-61" class="py-name" targets="Method epydoc.cli.ConsoleLogger.progress()=epydoc.cli.ConsoleLogger-class.html#progress,Method epydoc.cli.UnifiedProgressConsoleLogger.progress()=epydoc.cli.UnifiedProgressConsoleLogger-class.html#progress,Method epydoc.docbuilder._ProgressEstimator.progress()=epydoc.docbuilder._ProgressEstimator-class.ht [...]
+epydoc.cli.UnifiedProgressConsoleLogger.progress
+epydoc.docbuilder._ProgressEstimator.progress
+epydoc.gui.GUILogger.progress
+epydoc.log.Logger.progress
+epydoc.log.progress" class="py-name" href="#" onclick="return doclink('link-61', 'progress', 'link-61');">progress</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_files_written</tt><tt class="py-op">/</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_num_files</tt><tt class="py-op">,</tt> <tt id="link-62" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="retur [...]
+<a name="L211"></a><tt class="py-lineno"> 211</tt>  <tt class="py-line">         </tt>
+<a name="L212"></a><tt class="py-lineno"> 212</tt>  <tt class="py-line">        <tt id="link-63" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-63', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-64" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-64', 'path', 'link-0');">path</a></tt><tt [...]
+<a name="L213"></a><tt class="py-lineno"> 213</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_encoding</tt> <tt class="py-op">==</tt> <tt class="py-string">'utf-8'</tt><tt class="py-op">:</tt> </tt>
+<a name="L214"></a><tt class="py-lineno"> 214</tt>  <tt class="py-line">            <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">codecs</tt><tt class="py-op">.</tt><tt id="link-66" class="py-name" targets="Method epydoc.gui.EpydocGUI.open()=epydoc.gui.EpydocGUI-class.html#open"><a title="epydoc.gui.EpydocGUI.open" class="py-name" href="#" onclick="return doclink('link-66', 'open', 'link-66');">open</a></tt><tt class="py-op">(</tt><tt id="link-67" class="py-name [...]
+<a name="L215"></a><tt class="py-lineno"> 215</tt>  <tt class="py-line">            <tt class="py-name">write_func</tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-68" class="py-name" targets="Method epydoc.docintrospecter._DevNull.write()=epydoc.docintrospecter._DevNull-class.html#write,Method epydoc.docwriter.dotgraph.DotGraph.write()=epydoc.docwriter.dotgraph.DotGraph-class.html#write,Method epydoc.docwriter.html.HTMLWriter.write()=epydoc.docw [...]
+epydoc.docwriter.dotgraph.DotGraph.write
+epydoc.docwriter.html.HTMLWriter.write
+epydoc.docwriter.latex.LatexWriter.write
+epydoc.docwriter.plaintext.PlaintextWriter.write" class="py-name" href="#" onclick="return doclink('link-68', 'write', 'link-68');">write</a></tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-name">args</tt><tt class="py-op">)</tt> </tt>
+<a name="L216"></a><tt class="py-lineno"> 216</tt>  <tt class="py-line">            <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-69" class="py-name" targets="Method epydoc.cli.HTMLLogger.close()=epydoc.cli.HTMLLogger-class.html#close,Method epydoc.docintrospecter._DevNull.close()=epydoc.docintrospecter._DevNull-class.html#close,Method epydoc.log.Logger.close()=epydoc.log.Logger-class.html#close,Function epydoc.log.close()=epydoc.log-module.html#close"><a title="epydoc.c [...]
+epydoc.docintrospecter._DevNull.close
+epydoc.log.Logger.close
+epydoc.log.close" class="py-name" href="#" onclick="return doclink('link-69', 'close', 'link-69');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L217"></a><tt class="py-lineno"> 217</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L218"></a><tt class="py-lineno"> 218</tt>  <tt class="py-line">            <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L219"></a><tt class="py-lineno"> 219</tt>  <tt class="py-line">            <tt class="py-name">write_func</tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-name">args</tt><tt class="py-op">)</tt> </tt>
+<a name="L220"></a><tt class="py-lineno"> 220</tt>  <tt class="py-line">            <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-string">u''</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">)</tt> </tt>
+<a name="L221"></a><tt class="py-lineno"> 221</tt>  <tt class="py-line">            <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L222"></a><tt class="py-lineno"> 222</tt>  <tt class="py-line">                <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">s</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_encoding</tt><tt class="py-op">)</tt> </tt>
+<a name="L223"></a><tt class="py-lineno"> 223</tt>  <tt class="py-line">            <tt class="py-keyword">except</tt> <tt class="py-name">UnicodeError</tt><tt class="py-op">:</tt> </tt>
+<a name="L224"></a><tt class="py-lineno"> 224</tt>  <tt class="py-line">                <tt id="link-70" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-70', 'log', 'link-7');">log</a></tt><tt class="py-op">.</tt><tt id="link-71" class="py-name" targets="Function epydoc.log.error()=epydoc.log-module.html#error"><a title="epydoc.log.error" class="py-name" href="#" onclick="return doclink('link-71', 'error', 'link-71');">error</a></tt><tt class="py-op">(</tt><tt class="py-string">"Output could not be represented with the "</tt> </tt>
+<a name="L225"></a><tt class="py-lineno"> 225</tt>  <tt class="py-line">                          <tt class="py-string">"given encoding (%r).  Unencodable characters "</tt> </tt>
+<a name="L226"></a><tt class="py-lineno"> 226</tt>  <tt class="py-line">                          <tt class="py-string">"will be displayed as '?'.  It is recommended "</tt> </tt>
+<a name="L227"></a><tt class="py-lineno"> 227</tt>  <tt class="py-line">                          <tt class="py-string">"that you use a different output encoding (utf-8, "</tt> </tt>
+<a name="L228"></a><tt class="py-lineno"> 228</tt>  <tt class="py-line">                          <tt class="py-string">"if it's supported by latex on your system)."</tt> </tt>
+<a name="L229"></a><tt class="py-lineno"> 229</tt>  <tt class="py-line">                          <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_encoding</tt><tt class="py-op">)</tt> </tt>
+<a name="L230"></a><tt class="py-lineno"> 230</tt>  <tt class="py-line">                <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">s</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_encoding</tt><tt class="py-op">,</tt> <tt class="py-string">'replace'</tt><tt class="py-op">)</tt> </tt>
+<a name="L231"></a><tt class="py-lineno"> 231</tt>  <tt class="py-line">            <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt id="link-72" class="py-name"><a title="epydoc.gui.EpydocGUI.open" class="py-name" href="#" onclick="return doclink('link-72', 'open', 'link-66');">open</a></tt><tt class="py-op">(</tt><tt id="link-73" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-73', 'path', 'link-0');">path</a></tt><t [...]
+<a name="L232"></a><tt class="py-lineno"> 232</tt>  <tt class="py-line">            <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-74" class="py-name"><a title="epydoc.docintrospecter._DevNull.write
+epydoc.docwriter.dotgraph.DotGraph.write
+epydoc.docwriter.html.HTMLWriter.write
+epydoc.docwriter.latex.LatexWriter.write
+epydoc.docwriter.plaintext.PlaintextWriter.write" class="py-name" href="#" onclick="return doclink('link-74', 'write', 'link-68');">write</a></tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> </tt>
+<a name="L233"></a><tt class="py-lineno"> 233</tt>  <tt class="py-line">            <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-75" class="py-name"><a title="epydoc.cli.HTMLLogger.close
+epydoc.docintrospecter._DevNull.close
+epydoc.log.Logger.close
+epydoc.log.close" class="py-name" href="#" onclick="return doclink('link-75', 'close', 'link-69');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L234"></a><tt class="py-lineno"> 234</tt>  <tt class="py-line"> </tt>
+<a name="LatexWriter.num_files"></a><div id="LatexWriter.num_files-def"><a name="L235"></a><tt class="py-lineno"> 235</tt> <a class="py-toggle" href="#" id="LatexWriter.num_files-toggle" onclick="return toggle('LatexWriter.num_files');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.latex.LatexWriter-class.html#num_files">num_files</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op" [...]
+</div><div id="LatexWriter.num_files-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="LatexWriter.num_files-expanded"><a name="L236"></a><tt class="py-lineno"> 236</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L237"></a><tt class="py-lineno"> 237</tt>  <tt class="py-line"><tt class="py-docstring">        @return: The number of files that this C{LatexFormatter} will</tt> </tt>
+<a name="L238"></a><tt class="py-lineno"> 238</tt>  <tt class="py-line"><tt class="py-docstring">            generate.</tt> </tt>
+<a name="L239"></a><tt class="py-lineno"> 239</tt>  <tt class="py-line"><tt class="py-docstring">        @rtype: C{int}</tt> </tt>
+<a name="L240"></a><tt class="py-lineno"> 240</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L241"></a><tt class="py-lineno"> 241</tt>  <tt class="py-line">        <tt class="py-name">n</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L242"></a><tt class="py-lineno"> 242</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">valdocs</tt><tt class="py-op">:</tt> </tt>
+<a name="L243"></a><tt class="py-lineno"> 243</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt id="link-76" class="py-name"><a title="epydoc.apidoc.ModuleDoc" class="py-name" href="#" onclick="return doclink('link-76', 'ModuleDoc', 'link-42');">ModuleDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-name">n</tt> <tt class="py-op" [...]
+<a name="L244"></a><tt class="py-lineno"> 244</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt id="link-77" class="py-name"><a title="epydoc.apidoc.ClassDoc" class="py-name" href="#" onclick="return doclink('link-77', 'ClassDoc', 'link-26');">ClassDoc</a></tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-name">self</tt><tt class= [...]
+<a name="L245"></a><tt class="py-lineno"> 245</tt>  <tt class="py-line">                <tt class="py-name">n</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L246"></a><tt class="py-lineno"> 246</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">n</tt> </tt>
+</div><a name="L247"></a><tt class="py-lineno"> 247</tt>  <tt class="py-line">         </tt>
+<a name="LatexWriter._mkdir"></a><div id="LatexWriter._mkdir-def"><a name="L248"></a><tt class="py-lineno"> 248</tt> <a class="py-toggle" href="#" id="LatexWriter._mkdir-toggle" onclick="return toggle('LatexWriter._mkdir');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.latex.LatexWriter-class.html#_mkdir">_mkdir</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">directory</tt [...]
+</div><div id="LatexWriter._mkdir-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="LatexWriter._mkdir-expanded"><a name="L249"></a><tt class="py-lineno"> 249</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L250"></a><tt class="py-lineno"> 250</tt>  <tt class="py-line"><tt class="py-docstring">        If the given directory does not exist, then attempt to create it.</tt> </tt>
+<a name="L251"></a><tt class="py-lineno"> 251</tt>  <tt class="py-line"><tt class="py-docstring">        @rtype: C{None}</tt> </tt>
+<a name="L252"></a><tt class="py-lineno"> 252</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L253"></a><tt class="py-lineno"> 253</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-78" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-78', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt class="py-name">isdir</tt><tt class="py-op">(</tt><tt class="py-name">directory</tt><tt class="py-op">)< [...]
+<a name="L254"></a><tt class="py-lineno"> 254</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-79" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-79', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt class="py-name">exists</tt><tt class="py-op">(</tt><tt class="py-name">directory</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L255"></a><tt class="py-lineno"> 255</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">OSError</tt><tt class="py-op">(</tt><tt class="py-string">'%r is not a directory'</tt> <tt class="py-op">%</tt> <tt class="py-name">directory</tt><tt class="py-op">)</tt> </tt>
+<a name="L256"></a><tt class="py-lineno"> 256</tt>  <tt class="py-line">            <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">mkdir</tt><tt class="py-op">(</tt><tt class="py-name">directory</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L257"></a><tt class="py-lineno"> 257</tt>  <tt class="py-line">             </tt>
+<a name="L258"></a><tt class="py-lineno"> 258</tt>  <tt class="py-line">    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L259"></a><tt class="py-lineno"> 259</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#{ Main Doc File</tt> </tt>
+<a name="L260"></a><tt class="py-lineno"> 260</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L261"></a><tt class="py-lineno"> 261</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="LatexWriter.write_topfile"></a><div id="LatexWriter.write_topfile-def"><a name="L262"></a><tt class="py-lineno"> 262</tt> <a class="py-toggle" href="#" id="LatexWriter.write_topfile-toggle" onclick="return toggle('LatexWriter.write_topfile');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.latex.LatexWriter-class.html#write_topfile">write_topfile</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op" [...]
+</div><div id="LatexWriter.write_topfile-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="LatexWriter.write_topfile-expanded"><a name="L263"></a><tt class="py-lineno"> 263</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-80" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.write_header()=epydoc.docwriter.html.HTMLWriter-class.html#write_header,Method epydoc.docwriter.latex.LatexWriter.write_hea [...]
+epydoc.docwriter.latex.LatexWriter.write_header" class="py-name" href="#" onclick="return doclink('link-80', 'write_header', 'link-80');">write_header</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-string">'Include File'</tt><tt class="py-op">)</tt> </tt>
+<a name="L264"></a><tt class="py-lineno"> 264</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-81" class="py-name" targets="Method epydoc.docwriter.latex.LatexWriter.write_preamble()=epydoc.docwriter.latex.LatexWriter-class.html#write_preamble"><a title="epydoc.docwriter.latex.LatexWriter.write_preamble" class="py-name" href="#" onclick="return doclink('link-81', 'write_preamble', 'link-81');">write_preamble</a></tt><tt class="py-op">(</ [...]
+<a name="L265"></a><tt class="py-lineno"> 265</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'\n\\begin{document}\n\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L266"></a><tt class="py-lineno"> 266</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-82" class="py-name" targets="Method epydoc.docwriter.latex.LatexWriter.write_start_of()=epydoc.docwriter.latex.LatexWriter-class.html#write_start_of"><a title="epydoc.docwriter.latex.LatexWriter.write_start_of" class="py-name" href="#" onclick="return doclink('link-82', 'write_start_of', 'link-82');">write_start_of</a></tt><tt class="py-op">(</ [...]
+<a name="L267"></a><tt class="py-lineno"> 267</tt>  <tt class="py-line"> </tt>
+<a name="L268"></a><tt class="py-lineno"> 268</tt>  <tt class="py-line">        <tt class="py-comment"># Write the title.</tt> </tt>
+<a name="L269"></a><tt class="py-lineno"> 269</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-83" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.write_start_of" class="py-name" href="#" onclick="return doclink('link-83', 'write_start_of', 'link-82');">write_start_of</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-string">'Title'</tt><tt class="p [...]
+<a name="L270"></a><tt class="py-lineno"> 270</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'\\title{%s}\n'</tt> <tt class="py-op">%</tt> <tt id="link-84" class="py-name"><a title="epydoc.util.plaintext_to_latex" class="py-name" href="#" onclick="return doclink('link-84', 'plaintext_to_latex', 'link-12');">plaintext_to_latex</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name [...]
+<a name="L271"></a><tt class="py-lineno"> 271</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'\\author{API Documentation}\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L272"></a><tt class="py-lineno"> 272</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'\\maketitle\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L273"></a><tt class="py-lineno"> 273</tt>  <tt class="py-line"> </tt>
+<a name="L274"></a><tt class="py-lineno"> 274</tt>  <tt class="py-line">        <tt class="py-comment"># Add a table of contents.</tt> </tt>
+<a name="L275"></a><tt class="py-lineno"> 275</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-85" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.write_start_of" class="py-name" href="#" onclick="return doclink('link-85', 'write_start_of', 'link-82');">write_start_of</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-string">'Table of Contents'</tt> [...]
+<a name="L276"></a><tt class="py-lineno"> 276</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'\\addtolength{\\parskip}{-2ex}\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L277"></a><tt class="py-lineno"> 277</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'\\tableofcontents\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L278"></a><tt class="py-lineno"> 278</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'\\addtolength{\\parskip}{2ex}\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L279"></a><tt class="py-lineno"> 279</tt>  <tt class="py-line"> </tt>
+<a name="L280"></a><tt class="py-lineno"> 280</tt>  <tt class="py-line">        <tt class="py-comment"># Include documentation files.</tt> </tt>
+<a name="L281"></a><tt class="py-lineno"> 281</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-86" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.write_start_of" class="py-name" href="#" onclick="return doclink('link-86', 'write_start_of', 'link-82');">write_start_of</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-string">'Includes'</tt><tt class [...]
+<a name="L282"></a><tt class="py-lineno"> 282</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">val_doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">valdocs</tt><tt class="py-op">:</tt> </tt>
+<a name="L283"></a><tt class="py-lineno"> 283</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">val_doc</tt><tt class="py-op">,</tt> <tt id="link-87" class="py-name"><a title="epydoc.apidoc.ModuleDoc" class="py-name" href="#" onclick="return doclink('link-87', 'ModuleDoc', 'link-42');">ModuleDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L284"></a><tt class="py-lineno"> 284</tt>  <tt class="py-line">                <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'\\include{%s-module}\n'</tt> <tt class="py-op">%</tt> <tt class="py-name">val_doc</tt><tt class="py-op">.</tt><tt id="link-88" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-88', 'canonical_name', 'link-44');">canonical_name</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L285"></a><tt class="py-lineno"> 285</tt>  <tt class="py-line"> </tt>
+<a name="L286"></a><tt class="py-lineno"> 286</tt>  <tt class="py-line">        <tt class="py-comment"># If we're listing classes separately, put them after all the</tt> </tt>
+<a name="L287"></a><tt class="py-lineno"> 287</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># modules.</tt> </tt>
+<a name="L288"></a><tt class="py-lineno"> 288</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_list_classes_separately</tt><tt class="py-op">:</tt> </tt>
+<a name="L289"></a><tt class="py-lineno"> 289</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">val_doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">valdocs</tt><tt class="py-op">:</tt> </tt>
+<a name="L290"></a><tt class="py-lineno"> 290</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">val_doc</tt><tt class="py-op">,</tt> <tt id="link-89" class="py-name"><a title="epydoc.apidoc.ClassDoc" class="py-name" href="#" onclick="return doclink('link-89', 'ClassDoc', 'link-26');">ClassDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L291"></a><tt class="py-lineno"> 291</tt>  <tt class="py-line">                    <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'\\include{%s-class}\n'</tt> <tt class="py-op">%</tt> <tt class="py-name">val_doc</tt><tt class="py-op">.</tt><tt id="link-90" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-90', 'canonical_name', 'link-44');">canonical_name</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L292"></a><tt class="py-lineno"> 292</tt>  <tt class="py-line"> </tt>
+<a name="L293"></a><tt class="py-lineno"> 293</tt>  <tt class="py-line">        <tt class="py-comment"># Add the index, if requested.</tt> </tt>
+<a name="L294"></a><tt class="py-lineno"> 294</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_index</tt><tt class="py-op">:</tt> </tt>
+<a name="L295"></a><tt class="py-lineno"> 295</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-91" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.write_start_of" class="py-name" href="#" onclick="return doclink('link-91', 'write_start_of', 'link-82');">write_start_of</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-string">'Index'</tt><tt class="py-op">)</tt> </tt>
+<a name="L296"></a><tt class="py-lineno"> 296</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'\\printindex\n\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L297"></a><tt class="py-lineno"> 297</tt>  <tt class="py-line"> </tt>
+<a name="L298"></a><tt class="py-lineno"> 298</tt>  <tt class="py-line">        <tt class="py-comment"># Add the footer.</tt> </tt>
+<a name="L299"></a><tt class="py-lineno"> 299</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-92" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.write_start_of" class="py-name" href="#" onclick="return doclink('link-92', 'write_start_of', 'link-82');">write_start_of</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-string">'Footer'</tt><tt class=" [...]
+<a name="L300"></a><tt class="py-lineno"> 300</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'\\end{document}\n\n'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L301"></a><tt class="py-lineno"> 301</tt>  <tt class="py-line"> </tt>
+<a name="LatexWriter.write_preamble"></a><div id="LatexWriter.write_preamble-def"><a name="L302"></a><tt class="py-lineno"> 302</tt> <a class="py-toggle" href="#" id="LatexWriter.write_preamble-toggle" onclick="return toggle('LatexWriter.write_preamble');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.latex.LatexWriter-class.html#write_preamble">write_preamble</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class=" [...]
+</div><div id="LatexWriter.write_preamble-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="LatexWriter.write_preamble-expanded"><a name="L303"></a><tt class="py-lineno"> 303</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-93" class="py-name"><a title=" [...]
+<a name="L304"></a><tt class="py-lineno"> 304</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L305"></a><tt class="py-lineno"> 305</tt>  <tt class="py-line">         </tt>
+<a name="L306"></a><tt class="py-lineno"> 306</tt>  <tt class="py-line">        <tt class="py-comment"># Set the encoding.</tt> </tt>
+<a name="L307"></a><tt class="py-lineno"> 307</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'\\usepackage[%s]{inputenc}\n'</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-94" class="py-name" targets="Method epydoc.docwriter.latex.LatexWriter.get_latex_encoding()=epydoc.docwriter.latex.LatexWriter-class.html#get_latex_encoding"><a title="epydoc.docwrite [...]
+<a name="L308"></a><tt class="py-lineno"> 308</tt>  <tt class="py-line"> </tt>
+<a name="L309"></a><tt class="py-lineno"> 309</tt>  <tt class="py-line">        <tt class="py-comment"># If we're generating hyperrefs, add the appropriate packages.</tt> </tt>
+<a name="L310"></a><tt class="py-lineno"> 310</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_hyperref</tt><tt class="py-op">:</tt> </tt>
+<a name="L311"></a><tt class="py-lineno"> 311</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'\\definecolor{UrlColor}{rgb}{0,0.08,0.45}\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L312"></a><tt class="py-lineno"> 312</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'\\usepackage[dvips, pagebackref, pdftitle={%s}, '</tt> </tt>
+<a name="L313"></a><tt class="py-lineno"> 313</tt>  <tt class="py-line">                <tt class="py-string">'pdfcreator={epydoc %s}, bookmarks=true, '</tt> </tt>
+<a name="L314"></a><tt class="py-lineno"> 314</tt>  <tt class="py-line">                <tt class="py-string">'bookmarksopen=false, pdfpagemode=UseOutlines, '</tt> </tt>
+<a name="L315"></a><tt class="py-lineno"> 315</tt>  <tt class="py-line">                <tt class="py-string">'colorlinks=true, linkcolor=black, anchorcolor=black, '</tt> </tt>
+<a name="L316"></a><tt class="py-lineno"> 316</tt>  <tt class="py-line">                <tt class="py-string">'citecolor=black, filecolor=black, menucolor=black, '</tt> </tt>
+<a name="L317"></a><tt class="py-lineno"> 317</tt>  <tt class="py-line">                <tt class="py-string">'pagecolor=black, urlcolor=UrlColor]{hyperref}\n'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L318"></a><tt class="py-lineno"> 318</tt>  <tt class="py-line">                <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_prj_name</tt> <tt class="py-keyword">or</tt> <tt class="py-string">''</tt><tt class="py-op">,</tt> <tt id="link-95" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-95', 'epydoc', 'link-1');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-96" class="py-name" ta [...]
+<a name="L319"></a><tt class="py-lineno"> 319</tt>  <tt class="py-line">             </tt>
+<a name="L320"></a><tt class="py-lineno"> 320</tt>  <tt class="py-line">        <tt class="py-comment"># If we're generating an index, add it to the preamble.</tt> </tt>
+<a name="L321"></a><tt class="py-lineno"> 321</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_index</tt><tt class="py-op">:</tt> </tt>
+<a name="L322"></a><tt class="py-lineno"> 322</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">"\\makeindex\n"</tt><tt class="py-op">)</tt> </tt>
+<a name="L323"></a><tt class="py-lineno"> 323</tt>  <tt class="py-line"> </tt>
+<a name="L324"></a><tt class="py-lineno"> 324</tt>  <tt class="py-line">        <tt class="py-comment"># If restructuredtext was used, then we need to extend</tt> </tt>
+<a name="L325"></a><tt class="py-lineno"> 325</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># the prefix to include LatexTranslator.head_prefix.</tt> </tt>
+<a name="L326"></a><tt class="py-lineno"> 326</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-string">'restructuredtext'</tt> <tt class="py-keyword">in</tt> <tt id="link-97" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-97', 'epydoc', 'link-1');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-98" class="py-name"><a title="epydoc.markup
+epydoc.markup.doctest.DoctestColorizer.markup
+epydoc.markup.doctest.HTMLDoctestColorizer.markup
+epydoc.markup.doctest.LaTeXDoctestColorizer.markup
+epydoc.markup.doctest.XMLDoctestColorizer.markup" class="py-name" href="#" onclick="return doclink('link-98', 'markup', 'link-9');">markup</a></tt><tt class="py-op">.</tt><tt id="link-99" class="py-name" targets="Variable epydoc.markup.MARKUP_LANGUAGES_USED=epydoc.markup-module.html#MARKUP_LANGUAGES_USED"><a title="epydoc.markup.MARKUP_LANGUAGES_USED" class="py-name" href="#" onclick="return doclink('link-99', 'MARKUP_LANGUAGES_USED', 'link-99');">MARKUP_LANGUAGES_USED</a></tt><tt class= [...]
+<a name="L327"></a><tt class="py-lineno"> 327</tt>  <tt class="py-line">            <tt class="py-keyword">from</tt> <tt id="link-100" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-100', 'epydoc', 'link-1');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-101" class="py-name"><a title="epydoc.markup
+epydoc.markup.doctest.DoctestColorizer.markup
+epydoc.markup.doctest.HTMLDoctestColorizer.markup
+epydoc.markup.doctest.LaTeXDoctestColorizer.markup
+epydoc.markup.doctest.XMLDoctestColorizer.markup" class="py-name" href="#" onclick="return doclink('link-101', 'markup', 'link-9');">markup</a></tt> <tt class="py-keyword">import</tt> <tt id="link-102" class="py-name" targets="Module epydoc.markup.restructuredtext=epydoc.markup.restructuredtext-module.html"><a title="epydoc.markup.restructuredtext" class="py-name" href="#" onclick="return doclink('link-102', 'restructuredtext', 'link-102');">restructuredtext</a></tt> </tt>
+<a name="L328"></a><tt class="py-lineno"> 328</tt>  <tt class="py-line">            <tt class="py-name">rst_head</tt> <tt class="py-op">=</tt> <tt id="link-103" class="py-name"><a title="epydoc.markup.restructuredtext" class="py-name" href="#" onclick="return doclink('link-103', 'restructuredtext', 'link-102');">restructuredtext</a></tt><tt class="py-op">.</tt><tt id="link-104" class="py-name" targets="Function epydoc.markup.restructuredtext.latex_head_prefix()=epydoc.markup.restructured [...]
+<a name="L329"></a><tt class="py-lineno"> 329</tt>  <tt class="py-line">            <tt class="py-name">rst_head</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">rst_head</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L330"></a><tt class="py-lineno"> 330</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">line</tt> <tt class="py-keyword">in</tt> <tt class="py-name">rst_head</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L331"></a><tt class="py-lineno"> 331</tt>  <tt class="py-line">                <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">match</tt><tt class="py-op">(</tt><tt class="py-string">r'\\usepackage(\[.*?\])?{(.*?)}'</tt><tt class="py-op">,</tt> <tt class="py-name">line</tt><tt class="py-op">)</tt> </tt>
+<a name="L332"></a><tt class="py-lineno"> 332</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">m</tt> <tt class="py-keyword">and</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt class="py-name">group</tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt> </tt>
+<a name="L333"></a><tt class="py-lineno"> 333</tt>  <tt class="py-line">                    <tt class="py-string">'babel'</tt><tt class="py-op">,</tt> <tt class="py-string">'hyperref'</tt><tt class="py-op">,</tt> <tt class="py-string">'color'</tt><tt class="py-op">,</tt> <tt class="py-string">'alltt'</tt><tt class="py-op">,</tt> <tt class="py-string">'parskip'</tt><tt class="py-op">,</tt> </tt>
+<a name="L334"></a><tt class="py-lineno"> 334</tt>  <tt class="py-line">                    <tt class="py-string">'fancyhdr'</tt><tt class="py-op">,</tt> <tt class="py-string">'boxedminipage'</tt><tt class="py-op">,</tt> <tt class="py-string">'makeidx'</tt><tt class="py-op">,</tt> </tt>
+<a name="L335"></a><tt class="py-lineno"> 335</tt>  <tt class="py-line">                    <tt class="py-string">'multirow'</tt><tt class="py-op">,</tt> <tt class="py-string">'longtable'</tt><tt class="py-op">,</tt> <tt class="py-string">'tocbind'</tt><tt class="py-op">,</tt> <tt class="py-string">'assymb'</tt><tt class="py-op">,</tt> </tt>
+<a name="L336"></a><tt class="py-lineno"> 336</tt>  <tt class="py-line">                    <tt class="py-string">'fullpage'</tt><tt class="py-op">,</tt> <tt class="py-string">'inputenc'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L337"></a><tt class="py-lineno"> 337</tt>  <tt class="py-line">                    <tt class="py-keyword">pass</tt> </tt>
+<a name="L338"></a><tt class="py-lineno"> 338</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L339"></a><tt class="py-lineno"> 339</tt>  <tt class="py-line">                    <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-name">line</tt><tt class="py-op">+</tt><tt class="py-string">'\n'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L340"></a><tt class="py-lineno"> 340</tt>  <tt class="py-line"> </tt>
+<a name="L341"></a><tt class="py-lineno"> 341</tt>  <tt class="py-line">         </tt>
+<a name="L342"></a><tt class="py-lineno"> 342</tt>  <tt class="py-line">    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L343"></a><tt class="py-lineno"> 343</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#{ Chapters</tt> </tt>
+<a name="L344"></a><tt class="py-lineno"> 344</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L345"></a><tt class="py-lineno"> 345</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="LatexWriter.write_module"></a><div id="LatexWriter.write_module-def"><a name="L346"></a><tt class="py-lineno"> 346</tt> <a class="py-toggle" href="#" id="LatexWriter.write_module-toggle" onclick="return toggle('LatexWriter.write_module');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.latex.LatexWriter-class.html#write_module">write_module</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt [...]
+</div><div id="LatexWriter.write_module-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="LatexWriter.write_module-expanded"><a name="L347"></a><tt class="py-lineno"> 347</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-105" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_header
+epydoc.docwriter.latex.LatexWriter.write_header" class="py-name" href="#" onclick="return doclink('link-105', 'write_header', 'link-80');">write_header</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-name">doc</tt><tt class="py-op">)</tt> </tt>
+<a name="L348"></a><tt class="py-lineno"> 348</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-106" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.write_start_of" class="py-name" href="#" onclick="return doclink('link-106', 'write_start_of', 'link-82');">write_start_of</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-string">'Module Description'</tt><tt class="py-op">)</tt> </tt>
+<a name="L349"></a><tt class="py-lineno"> 349</tt>  <tt class="py-line"> </tt>
+<a name="L350"></a><tt class="py-lineno"> 350</tt>  <tt class="py-line">        <tt class="py-comment"># Add this module to the index.</tt> </tt>
+<a name="L351"></a><tt class="py-lineno"> 351</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'    '</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-107" class="py-name" targets="Method epydoc.docwriter.latex.LatexWriter.indexterm()=epydoc.docwriter.latex.LatexWriter-class.html#indexterm"><a title="epydoc.docwriter.latex.LatexWriter.indexterm" class="py- [...]
+<a name="L352"></a><tt class="py-lineno"> 352</tt>  <tt class="py-line"> </tt>
+<a name="L353"></a><tt class="py-lineno"> 353</tt>  <tt class="py-line">        <tt class="py-comment"># Add a section marker.</tt> </tt>
+<a name="L354"></a><tt class="py-lineno"> 354</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-108" class="py-name" targets="Method epydoc.docwriter.latex.LatexWriter.section()=epydoc.docwriter.latex.LatexWriter-class.html#section,Method epydoc.docwriter.plaintext.PlaintextWriter.section()=epydoc.docwriter.plaintext.PlaintextWriter-class.html#section"><a titl [...]
+epydoc.docwriter.plaintext.PlaintextWriter.section" class="py-name" href="#" onclick="return doclink('link-108', 'section', 'link-108');">section</a></tt><tt class="py-op">(</tt><tt class="py-string">'%s %s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-109" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.doc_kind()=epydoc.docwriter.html.HTMLWriter-class.html#doc_kind,Method epydoc.docwriter.html_c [...]
+epydoc.docwriter.html_colorize.PythonSourceColorizer.doc_kind
+epydoc.docwriter.latex.LatexWriter.doc_kind" class="py-name" href="#" onclick="return doclink('link-109', 'doc_kind', 'link-109');">doc_kind</a></tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L355"></a><tt class="py-lineno"> 355</tt>  <tt class="py-line">                                    <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-110" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-110', 'canonical_name', 'link-44');">canonical_name</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L356"></a><tt class="py-lineno"> 356</tt>  <tt class="py-line"> </tt>
+<a name="L357"></a><tt class="py-lineno"> 357</tt>  <tt class="py-line">        <tt class="py-comment"># Label our current location.</tt> </tt>
+<a name="L358"></a><tt class="py-lineno"> 358</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'    \\label{%s}\n'</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-111" class="py-name" targets="Method epydoc.docwriter.latex.LatexWriter.label()=epydoc.docwriter.latex.LatexWriter-class.html#label"><a title="epydoc.docwriter.latex.LatexWriter.label" class="py [...]
+<a name="L359"></a><tt class="py-lineno"> 359</tt>  <tt class="py-line"> </tt>
+<a name="L360"></a><tt class="py-lineno"> 360</tt>  <tt class="py-line">        <tt class="py-comment"># Add the module's description.</tt> </tt>
+<a name="L361"></a><tt class="py-lineno"> 361</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-112" class="py-name" targets="Variable epydoc.apidoc.APIDoc.descr=epydoc.apidoc.APIDoc-class.html#descr,Variable epydoc.cli.descr=epydoc.cli-module.html#descr,Method epydoc.docwriter.html.HTMLWriter.descr()=epydoc.docwriter.html.HTMLWriter-class.html#descr,Method epydoc.markup.ParseError [...]
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-112', 'descr', 'link-112');">descr</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-113" class="py-name" targets="Variable epydoc.apidoc.UNKNOWN=epydoc.apidoc-module.html#UNKNOWN"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-113', 'UNK [...]
+<a name="L362"></a><tt class="py-lineno"> 362</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-114" class="py-name" targets="Method epydoc.docwriter.latex.LatexWriter.docstring_to_latex()=epydoc.docwriter.latex.LatexWriter-class.html#docstring_to_latex"><a title="epydoc.docwriter.latex.LatexWriter.docstring_to_latex" class="py-name" href="#" onclick="return doclink('link-114', 'docs [...]
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-115', 'descr', 'link-112');">descr</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L363"></a><tt class="py-lineno"> 363</tt>  <tt class="py-line"> </tt>
+<a name="L364"></a><tt class="py-lineno"> 364</tt>  <tt class="py-line">        <tt class="py-comment"># Add version, author, warnings, requirements, notes, etc.</tt> </tt>
+<a name="L365"></a><tt class="py-lineno"> 365</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-116" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.write_standard_fields()=epydoc.docwriter.html.HTMLWriter-class.html#write_standard_fields,Method epydoc.docwriter.latex.LatexWriter.write_standard_fields()=epydoc.docwriter.latex.LatexWriter-class.html#write_standard_fields"><a title="epydoc.docwri [...]
+epydoc.docwriter.latex.LatexWriter.write_standard_fields" class="py-name" href="#" onclick="return doclink('link-116', 'write_standard_fields', 'link-116');">write_standard_fields</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-name">doc</tt><tt class="py-op">)</tt> </tt>
+<a name="L366"></a><tt class="py-lineno"> 366</tt>  <tt class="py-line"> </tt>
+<a name="L367"></a><tt class="py-lineno"> 367</tt>  <tt class="py-line">        <tt class="py-comment"># If it's a package, list the sub-modules.</tt> </tt>
+<a name="L368"></a><tt class="py-lineno"> 368</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-117" class="py-name"><a title="epydoc.apidoc.ModuleDoc.submodules" class="py-name" href="#" onclick="return doclink('link-117', 'submodules', 'link-23');">submodules</a></tt> <tt class="py-op">!=</tt> <tt id="link-118" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href [...]
+<a name="L369"></a><tt class="py-lineno"> 369</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-120" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.write_module_list()=epydoc.docwriter.html.HTMLWriter-class.html#write_module_list,Method epydoc.docwriter.latex.LatexWriter.write_module_list()=epydoc.docwriter.latex.LatexWriter-class.html#write_module_list"><a title="epydoc.docwriter.html.HTMLWriter.write_module_list
+epydoc.docwriter.latex.LatexWriter.write_module_list" class="py-name" href="#" onclick="return doclink('link-120', 'write_module_list', 'link-120');">write_module_list</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-name">doc</tt><tt class="py-op">)</tt> </tt>
+<a name="L370"></a><tt class="py-lineno"> 370</tt>  <tt class="py-line"> </tt>
+<a name="L371"></a><tt class="py-lineno"> 371</tt>  <tt class="py-line">        <tt class="py-comment"># Contents.</tt> </tt>
+<a name="L372"></a><tt class="py-lineno"> 372</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_list_classes_separately</tt><tt class="py-op">:</tt> </tt>
+<a name="L373"></a><tt class="py-lineno"> 373</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-121" class="py-name" targets="Method epydoc.docwriter.latex.LatexWriter.write_class_list()=epydoc.docwriter.latex.LatexWriter-class.html#write_class_list"><a title="epydoc.docwriter.latex.LatexWriter.write_class_list" class="py-name" href="#" onclick="return doclink('link-121', 'write_class_list', 'link-121');">write_class_list</a></tt><tt  [...]
+<a name="L374"></a><tt class="py-lineno"> 374</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-122" class="py-name" targets="Method epydoc.docwriter.latex.LatexWriter.write_func_list()=epydoc.docwriter.latex.LatexWriter-class.html#write_func_list"><a title="epydoc.docwriter.latex.LatexWriter.write_func_list" class="py-name" href="#" onclick="return doclink('link-122', 'write_func_list', 'link-122');">write_func_list</a></tt><tt class="py [...]
+<a name="L375"></a><tt class="py-lineno"> 375</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-123" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.write_var_list()=epydoc.docwriter.html.HTMLWriter-class.html#write_var_list,Method epydoc.docwriter.latex.LatexWriter.write_var_list()=epydoc.docwriter.latex.LatexWriter-class.html#write_var_list"><a title="epydoc.docwriter.html.HTMLWriter.write_var_list
+epydoc.docwriter.latex.LatexWriter.write_var_list" class="py-name" href="#" onclick="return doclink('link-123', 'write_var_list', 'link-123');">write_var_list</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-string">'Variables'</tt><tt class="py-op">,</tt> <tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt class="py-string">'other'</tt><tt class="py-op">)</tt> </tt>
+<a name="L376"></a><tt class="py-lineno"> 376</tt>  <tt class="py-line"> </tt>
+<a name="L377"></a><tt class="py-lineno"> 377</tt>  <tt class="py-line">        <tt class="py-comment"># Class list.</tt> </tt>
+<a name="L378"></a><tt class="py-lineno"> 378</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_list_classes_separately</tt><tt class="py-op">:</tt> </tt>
+<a name="L379"></a><tt class="py-lineno"> 379</tt>  <tt class="py-line">            <tt class="py-name">classes</tt> <tt class="py-op">=</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-124" class="py-name" targets="Method epydoc.apidoc.ClassDoc.select_variables()=epydoc.apidoc.ClassDoc-class.html#select_variables,Method epydoc.apidoc.ModuleDoc.select_variables()=epydoc.apidoc.ModuleDoc-class.html#select_variables"><a title="epydoc.apidoc.ClassDoc.select_variables
+epydoc.apidoc.ModuleDoc.select_variables" class="py-name" href="#" onclick="return doclink('link-124', 'select_variables', 'link-124');">select_variables</a></tt><tt class="py-op">(</tt><tt class="py-name">imported</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> <tt class="py-name">value_type</tt><tt class="py-op">=</tt><tt class="py-string">'class'</tt><tt class="py-op">,</tt> </tt>
+<a name="L380"></a><tt class="py-lineno"> 380</tt>  <tt class="py-line">                                           <tt class="py-name">public</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_public_filter</tt><tt class="py-op">)</tt> </tt>
+<a name="L381"></a><tt class="py-lineno"> 381</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">var_doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">classes</tt><tt class="py-op">:</tt> </tt>
+<a name="L382"></a><tt class="py-lineno"> 382</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-125" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_class
+epydoc.docwriter.latex.LatexWriter.write_class
+epydoc.docwriter.plaintext.PlaintextWriter.write_class" class="py-name" href="#" onclick="return doclink('link-125', 'write_class', 'link-52');">write_class</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-126" class="py-name" targets="Variable epydoc.apidoc.VariableDoc.value=epydoc.apidoc.VariableDoc-class.html#value"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="# [...]
+<a name="L383"></a><tt class="py-lineno"> 383</tt>  <tt class="py-line"> </tt>
+<a name="L384"></a><tt class="py-lineno"> 384</tt>  <tt class="py-line">        <tt class="py-comment"># Mark the end of the module (for the index)</tt> </tt>
+<a name="L385"></a><tt class="py-lineno"> 385</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'    '</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-127" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.indexterm" class="py-name" href="#" onclick="return doclink('link-127', 'indexterm', 'link-107');">indexterm</a></tt><tt class="py-op">(</tt> [...]
+</div><a name="L386"></a><tt class="py-lineno"> 386</tt>  <tt class="py-line"> </tt>
+<a name="LatexWriter.write_class"></a><div id="LatexWriter.write_class-def"><a name="L387"></a><tt class="py-lineno"> 387</tt> <a class="py-toggle" href="#" id="LatexWriter.write_class-toggle" onclick="return toggle('LatexWriter.write_class');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.latex.LatexWriter-class.html#write_class">write_class</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt  [...]
+</div><div id="LatexWriter.write_class-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="LatexWriter.write_class-expanded"><a name="L388"></a><tt class="py-lineno"> 388</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_list_classes_separately</tt><tt class="py-op">:</tt> </tt>
+<a name="L389"></a><tt class="py-lineno"> 389</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-128" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_header
+epydoc.docwriter.latex.LatexWriter.write_header" class="py-name" href="#" onclick="return doclink('link-128', 'write_header', 'link-80');">write_header</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-name">doc</tt><tt class="py-op">)</tt> </tt>
+<a name="L390"></a><tt class="py-lineno"> 390</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-129" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.write_start_of" class="py-name" href="#" onclick="return doclink('link-129', 'write_start_of', 'link-82');">write_start_of</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-string">'Class Description'</tt><tt class="py-op">)</tt> </tt>
+<a name="L391"></a><tt class="py-lineno"> 391</tt>  <tt class="py-line"> </tt>
+<a name="L392"></a><tt class="py-lineno"> 392</tt>  <tt class="py-line">        <tt class="py-comment"># Add this class to the index.</tt> </tt>
+<a name="L393"></a><tt class="py-lineno"> 393</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'    '</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-130" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.indexterm" class="py-name" href="#" onclick="return doclink('link-130', 'indexterm', 'link-107');">indexterm</a></tt><tt class="py-op">(</tt> [...]
+<a name="L394"></a><tt class="py-lineno"> 394</tt>  <tt class="py-line"> </tt>
+<a name="L395"></a><tt class="py-lineno"> 395</tt>  <tt class="py-line">        <tt class="py-comment"># Add a section marker.</tt> </tt>
+<a name="L396"></a><tt class="py-lineno"> 396</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_list_classes_separately</tt><tt class="py-op">:</tt> </tt>
+<a name="L397"></a><tt class="py-lineno"> 397</tt>  <tt class="py-line">            <tt class="py-name">seclevel</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L398"></a><tt class="py-lineno"> 398</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-131" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.section
+epydoc.docwriter.plaintext.PlaintextWriter.section" class="py-name" href="#" onclick="return doclink('link-131', 'section', 'link-108');">section</a></tt><tt class="py-op">(</tt><tt class="py-string">'%s %s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-132" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.doc_kind
+epydoc.docwriter.html_colorize.PythonSourceColorizer.doc_kind
+epydoc.docwriter.latex.LatexWriter.doc_kind" class="py-name" href="#" onclick="return doclink('link-132', 'doc_kind', 'link-109');">doc_kind</a></tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L399"></a><tt class="py-lineno"> 399</tt>  <tt class="py-line">                                        <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-133" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-133', 'canonical_name', 'link-44');">canonical_name</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">seclevel</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L400"></a><tt class="py-lineno"> 400</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L401"></a><tt class="py-lineno"> 401</tt>  <tt class="py-line">            <tt class="py-name">seclevel</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L402"></a><tt class="py-lineno"> 402</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-134" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.section
+epydoc.docwriter.plaintext.PlaintextWriter.section" class="py-name" href="#" onclick="return doclink('link-134', 'section', 'link-108');">section</a></tt><tt class="py-op">(</tt><tt class="py-string">'%s %s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-135" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.doc_kind
+epydoc.docwriter.html_colorize.PythonSourceColorizer.doc_kind
+epydoc.docwriter.latex.LatexWriter.doc_kind" class="py-name" href="#" onclick="return doclink('link-135', 'doc_kind', 'link-109');">doc_kind</a></tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L403"></a><tt class="py-lineno"> 403</tt>  <tt class="py-line">                                        <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-136" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-136', 'canonical_name', 'link-44');">canonical_name</a></tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">seclevel</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L404"></a><tt class="py-lineno"> 404</tt>  <tt class="py-line"> </tt>
+<a name="L405"></a><tt class="py-lineno"> 405</tt>  <tt class="py-line">        <tt class="py-comment"># Label our current location.</tt> </tt>
+<a name="L406"></a><tt class="py-lineno"> 406</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'    \\label{%s}\n'</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-137" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.label" class="py-name" href="#" onclick="return doclink('link-137', 'label', 'link-111');">label</a></tt><tt class="py-op">(</tt [...]
+<a name="L407"></a><tt class="py-lineno"> 407</tt>  <tt class="py-line"> </tt>
+<a name="L408"></a><tt class="py-lineno"> 408</tt>  <tt class="py-line">        <tt class="py-comment"># Add our base list.</tt> </tt>
+<a name="L409"></a><tt class="py-lineno"> 409</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-138" class="py-name"><a title="epydoc.apidoc.ClassDoc.bases" class="py-name" href="#" onclick="return doclink('link-138', 'bases', 'link-22');">bases</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt id="link-139" class="py-name"><a title [...]
+<a name="L410"></a><tt class="py-lineno"> 410</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-141" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.base_tree()=epydoc.docwriter.html.HTMLWriter-class.html#base_tree,Method epydoc.docwriter.latex.LatexWriter.base_tree()=epydoc.docwriter.latex.LatexWriter-class.html#base_tree"><a title="epydoc.docwriter.html.HTMLWriter. [...]
+epydoc.docwriter.latex.LatexWriter.base_tree" class="py-name" href="#" onclick="return doclink('link-141', 'base_tree', 'link-141');">base_tree</a></tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L411"></a><tt class="py-lineno"> 411</tt>  <tt class="py-line"> </tt>
+<a name="L412"></a><tt class="py-lineno"> 412</tt>  <tt class="py-line">        <tt class="py-comment"># The class's known subclasses</tt> </tt>
+<a name="L413"></a><tt class="py-lineno"> 413</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-142" class="py-name"><a title="epydoc.apidoc.ClassDoc.subclasses" class="py-name" href="#" onclick="return doclink('link-142', 'subclasses', 'link-24');">subclasses</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt id="link-143" class="py [...]
+<a name="L414"></a><tt class="py-lineno"> 414</tt>  <tt class="py-line">            <tt class="py-name">sc_items</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt id="link-145" class="py-name"><a title="epydoc.util.plaintext_to_latex" class="py-name" href="#" onclick="return doclink('link-145', 'plaintext_to_latex', 'link-12');">plaintext_to_latex</a></tt><tt class="py-op">(</tt><tt class="py-string">'%s'</tt> <tt class="py-op">%</tt> <tt class="py-name">sc</tt><tt class="py-op"> [...]
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-146', 'canonical_name', 'link-44');">canonical_name</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L415"></a><tt class="py-lineno"> 415</tt>  <tt class="py-line">                        <tt class="py-keyword">for</tt> <tt class="py-name">sc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-147" class="py-name"><a title="epydoc.apidoc.ClassDoc.subclasses" class="py-name" href="#" onclick="return doclink('link-147', 'subclasses', 'link-24');">subclasses</a></tt><tt class="py-op">]</tt> </tt>
+<a name="L416"></a><tt class="py-lineno"> 416</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-148" class="py-name" targets="Method epydoc.docwriter.latex.LatexWriter._descrlist()=epydoc.docwriter.latex.LatexWriter-class.html#_descrlist"><a title="epydoc.docwriter.latex.LatexWriter._descrlist" class="py-name" href="#" onclick="return doclink('link-148', '_descrlist', 'link-148');">_ [...]
+<a name="L417"></a><tt class="py-lineno"> 417</tt>  <tt class="py-line"> </tt>
+<a name="L418"></a><tt class="py-lineno"> 418</tt>  <tt class="py-line">        <tt class="py-comment"># The class's description.</tt> </tt>
+<a name="L419"></a><tt class="py-lineno"> 419</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-149" class="py-name"><a title="epydoc.apidoc.APIDoc.descr
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-149', 'descr', 'link-112');">descr</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-150" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-150', 'UNKNOWN', 'link-113');">UNKNOWN</a></tt><tt class="py-op">)</tt><tt class="py- [...]
+<a name="L420"></a><tt class="py-lineno"> 420</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-151" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.docstring_to_latex" class="py-name" href="#" onclick="return doclink('link-151', 'docstring_to_latex', 'link-114');">docstring_to_latex</a></tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">.</tt><tt  [...]
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-152', 'descr', 'link-112');">descr</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L421"></a><tt class="py-lineno"> 421</tt>  <tt class="py-line"> </tt>
+<a name="L422"></a><tt class="py-lineno"> 422</tt>  <tt class="py-line">        <tt class="py-comment"># Version, author, warnings, requirements, notes, etc.</tt> </tt>
+<a name="L423"></a><tt class="py-lineno"> 423</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-153" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_standard_fields
+epydoc.docwriter.latex.LatexWriter.write_standard_fields" class="py-name" href="#" onclick="return doclink('link-153', 'write_standard_fields', 'link-116');">write_standard_fields</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-name">doc</tt><tt class="py-op">)</tt> </tt>
+<a name="L424"></a><tt class="py-lineno"> 424</tt>  <tt class="py-line"> </tt>
+<a name="L425"></a><tt class="py-lineno"> 425</tt>  <tt class="py-line">        <tt class="py-comment"># Contents.</tt> </tt>
+<a name="L426"></a><tt class="py-lineno"> 426</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-154" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.write_func_list" class="py-name" href="#" onclick="return doclink('link-154', 'write_func_list', 'link-122');">write_func_list</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-string">'Methods'</tt><tt  [...]
+<a name="L427"></a><tt class="py-lineno"> 427</tt>  <tt class="py-line">                             <tt class="py-name">seclevel</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L428"></a><tt class="py-lineno"> 428</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-155" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_var_list
+epydoc.docwriter.latex.LatexWriter.write_var_list" class="py-name" href="#" onclick="return doclink('link-155', 'write_var_list', 'link-123');">write_var_list</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-string">'Properties'</tt><tt class="py-op">,</tt> <tt class="py-name">doc</tt><tt class="py-op">,</tt> </tt>
+<a name="L429"></a><tt class="py-lineno"> 429</tt>  <tt class="py-line">                            <tt class="py-string">'property'</tt><tt class="py-op">,</tt> <tt class="py-name">seclevel</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L430"></a><tt class="py-lineno"> 430</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-156" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_var_list
+epydoc.docwriter.latex.LatexWriter.write_var_list" class="py-name" href="#" onclick="return doclink('link-156', 'write_var_list', 'link-123');">write_var_list</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-string">'Class Variables'</tt><tt class="py-op">,</tt> <tt class="py-name">doc</tt><tt class="py-op">,</tt>  </tt>
+<a name="L431"></a><tt class="py-lineno"> 431</tt>  <tt class="py-line">                            <tt class="py-string">'classvariable'</tt><tt class="py-op">,</tt> <tt class="py-name">seclevel</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L432"></a><tt class="py-lineno"> 432</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-157" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_var_list
+epydoc.docwriter.latex.LatexWriter.write_var_list" class="py-name" href="#" onclick="return doclink('link-157', 'write_var_list', 'link-123');">write_var_list</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-string">'Instance Variables'</tt><tt class="py-op">,</tt> <tt class="py-name">doc</tt><tt class="py-op">,</tt>  </tt>
+<a name="L433"></a><tt class="py-lineno"> 433</tt>  <tt class="py-line">                            <tt class="py-string">'instancevariable'</tt><tt class="py-op">,</tt> <tt class="py-name">seclevel</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L434"></a><tt class="py-lineno"> 434</tt>  <tt class="py-line"> </tt>
+<a name="L435"></a><tt class="py-lineno"> 435</tt>  <tt class="py-line">        <tt class="py-comment"># Mark the end of the class (for the index)</tt> </tt>
+<a name="L436"></a><tt class="py-lineno"> 436</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'    '</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-158" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.indexterm" class="py-name" href="#" onclick="return doclink('link-158', 'indexterm', 'link-107');">indexterm</a></tt><tt class="py-op">(</tt> [...]
+</div><a name="L437"></a><tt class="py-lineno"> 437</tt>  <tt class="py-line"> </tt>
+<a name="L438"></a><tt class="py-lineno"> 438</tt>  <tt class="py-line">    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L439"></a><tt class="py-lineno"> 439</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#{ Module hierarchy trees</tt> </tt>
+<a name="L440"></a><tt class="py-lineno"> 440</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L441"></a><tt class="py-lineno"> 441</tt>  <tt class="py-line"><tt class="py-comment"></tt>     </tt>
+<a name="LatexWriter.write_module_tree"></a><div id="LatexWriter.write_module_tree-def"><a name="L442"></a><tt class="py-lineno"> 442</tt> <a class="py-toggle" href="#" id="LatexWriter.write_module_tree-toggle" onclick="return toggle('LatexWriter.write_module_tree');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.latex.LatexWriter-class.html#write_module_tree">write_module_tree</a><tt class="py-op">(</tt><tt class="py-param">se [...]
+</div><div id="LatexWriter.write_module_tree-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="LatexWriter.write_module_tree-expanded"><a name="L443"></a><tt class="py-lineno"> 443</tt>  <tt class="py-line">        <tt class="py-name">modules</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">doc</tt> <tt class="py-keyword">for</tt> <tt class="py-name">doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op"> [...]
+<a name="L444"></a><tt class="py-lineno"> 444</tt>  <tt class="py-line">                   <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt id="link-159" class="py-name"><a title="epydoc.apidoc.ModuleDoc" class="py-name" href="#" onclick="return doclink('link-159', 'ModuleDoc', 'link-42');">ModuleDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt>
+<a name="L445"></a><tt class="py-lineno"> 445</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">modules</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> </tt>
+<a name="L446"></a><tt class="py-lineno"> 446</tt>  <tt class="py-line">         </tt>
+<a name="L447"></a><tt class="py-lineno"> 447</tt>  <tt class="py-line">        <tt class="py-comment"># Write entries for all top-level modules/packages.</tt> </tt>
+<a name="L448"></a><tt class="py-lineno"> 448</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'\\begin{itemize}\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L449"></a><tt class="py-lineno"> 449</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'\\setlength{\\parskip}{0ex}\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L450"></a><tt class="py-lineno"> 450</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">modules</tt><tt class="py-op">:</tt> </tt>
+<a name="L451"></a><tt class="py-lineno"> 451</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-160" class="py-name" targets="Variable epydoc.apidoc.ModuleDoc.package=epydoc.apidoc.ModuleDoc-class.html#package"><a title="epydoc.apidoc.ModuleDoc.package" class="py-name" href="#" onclick="return doclink('link-160', 'package', 'link-160');">package</a></tt> <tt class="py-keyword">in</ [...]
+<a name="L452"></a><tt class="py-lineno"> 452</tt>  <tt class="py-line">                <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-162" class="py-name"><a title="epydoc.apidoc.ModuleDoc.package" class="py-name" href="#" onclick="return doclink('link-162', 'package', 'link-160');">package</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">valdocs</tt><tt class="py-op">)</tt> [...]
+<a name="L453"></a><tt class="py-lineno"> 453</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-163" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.write_module_tree_item()=epydoc.docwriter.html.HTMLWriter-class.html#write_module_tree_item,Method epydoc.docwriter.latex.LatexWriter.write_module_tree_item()=epydoc.docwriter.latex.LatexWriter-class.html#write_module_tree_item"><a title="epydoc.docwriter.html.HTMLWri [...]
+epydoc.docwriter.latex.LatexWriter.write_module_tree_item" class="py-name" href="#" onclick="return doclink('link-163', 'write_module_tree_item', 'link-163');">write_module_tree_item</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-name">doc</tt><tt class="py-op">)</tt> </tt>
+<a name="L454"></a><tt class="py-lineno"> 454</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">s</tt> <tt class="py-op">+</tt><tt class="py-string">'\\end{itemize}\n'</tt> </tt>
+</div><a name="L455"></a><tt class="py-lineno"> 455</tt>  <tt class="py-line"> </tt>
+<a name="LatexWriter.write_module_list"></a><div id="LatexWriter.write_module_list-def"><a name="L456"></a><tt class="py-lineno"> 456</tt> <a class="py-toggle" href="#" id="LatexWriter.write_module_list-toggle" onclick="return toggle('LatexWriter.write_module_list');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.latex.LatexWriter-class.html#write_module_list">write_module_list</a><tt class="py-op">(</tt><tt class="py-param">se [...]
+</div><div id="LatexWriter.write_module_list-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="LatexWriter.write_module_list-expanded"><a name="L457"></a><tt class="py-lineno"> 457</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-164" class="py-name"><a title="epydoc.apidoc.ModuleDoc.submodules" class="py-name" href="#" onclick="r [...]
+<a name="L458"></a><tt class="py-lineno"> 458</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-165" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.write_start_of" class="py-name" href="#" onclick="return doclink('link-165', 'write_start_of', 'link-82');">write_start_of</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-string">'Modules'</tt><tt class="py-op">)</tt> </tt>
+<a name="L459"></a><tt class="py-lineno"> 459</tt>  <tt class="py-line">         </tt>
+<a name="L460"></a><tt class="py-lineno"> 460</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-166" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.section
+epydoc.docwriter.plaintext.PlaintextWriter.section" class="py-name" href="#" onclick="return doclink('link-166', 'section', 'link-108');">section</a></tt><tt class="py-op">(</tt><tt class="py-string">'Modules'</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L461"></a><tt class="py-lineno"> 461</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'\\begin{itemize}\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L462"></a><tt class="py-lineno"> 462</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'\\setlength{\\parskip}{0ex}\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L463"></a><tt class="py-lineno"> 463</tt>  <tt class="py-line"> </tt>
+<a name="L464"></a><tt class="py-lineno"> 464</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">group_name</tt> <tt class="py-keyword">in</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-167" class="py-name" targets="Method epydoc.apidoc.NamespaceDoc.group_names()=epydoc.apidoc.NamespaceDoc-class.html#group_names"><a title="epydoc.apidoc.NamespaceDoc.group_names" class="py-name" href="#" onclick="return doclink('link-167', 'group_n [...]
+<a name="L465"></a><tt class="py-lineno"> 465</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-168" class="py-name" targets="Variable epydoc.apidoc.ModuleDoc.submodule_groups=epydoc.apidoc.ModuleDoc-class.html#submodule_groups"><a title="epydoc.apidoc.ModuleDoc.submodule_groups" class="py-name" href="#" onclick="return doclink('link-168', 'submodule_groups', 'link-168');"> [...]
+<a name="L466"></a><tt class="py-lineno"> 466</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">group_name</tt><tt class="py-op">:</tt> </tt>
+<a name="L467"></a><tt class="py-lineno"> 467</tt>  <tt class="py-line">                <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'  \\item \\textbf{%s}\n'</tt> <tt class="py-op">%</tt> <tt class="py-name">group_name</tt><tt class="py-op">)</tt> </tt>
+<a name="L468"></a><tt class="py-lineno"> 468</tt>  <tt class="py-line">                <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'  \\begin{itemize}\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L469"></a><tt class="py-lineno"> 469</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">submodule</tt> <tt class="py-keyword">in</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-169" class="py-name"><a title="epydoc.apidoc.ModuleDoc.submodule_groups" class="py-name" href="#" onclick="return doclink('link-169', 'submodule_groups', 'link-168');">submodule_groups</a></tt><tt class="py-op">[</tt><tt class="py-name">group_na [...]
+<a name="L470"></a><tt class="py-lineno"> 470</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-170" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_module_tree_item
+epydoc.docwriter.latex.LatexWriter.write_module_tree_item" class="py-name" href="#" onclick="return doclink('link-170', 'write_module_tree_item', 'link-163');">write_module_tree_item</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-name">submodule</tt><tt class="py-op">)</tt> </tt>
+<a name="L471"></a><tt class="py-lineno"> 471</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">group_name</tt><tt class="py-op">:</tt> </tt>
+<a name="L472"></a><tt class="py-lineno"> 472</tt>  <tt class="py-line">                <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'  \end{itemize}\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L473"></a><tt class="py-lineno"> 473</tt>  <tt class="py-line"> </tt>
+<a name="L474"></a><tt class="py-lineno"> 474</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'\\end{itemize}\n\n'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L475"></a><tt class="py-lineno"> 475</tt>  <tt class="py-line"> </tt>
+<a name="LatexWriter.write_module_tree_item"></a><div id="LatexWriter.write_module_tree_item-def"><a name="L476"></a><tt class="py-lineno"> 476</tt> <a class="py-toggle" href="#" id="LatexWriter.write_module_tree_item-toggle" onclick="return toggle('LatexWriter.write_module_tree_item');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.latex.LatexWriter-class.html#write_module_tree_item">write_module_tree_item</a><tt class="py-op" [...]
+</div><div id="LatexWriter.write_module_tree_item-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="LatexWriter.write_module_tree_item-expanded"><a name="L477"></a><tt class="py-lineno"> 477</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L478"></a><tt class="py-lineno"> 478</tt>  <tt class="py-line"><tt class="py-docstring">        Helper function for L{write_module_tree} and L{write_module_list}.</tt> </tt>
+<a name="L479"></a><tt class="py-lineno"> 479</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt>
+<a name="L480"></a><tt class="py-lineno"> 480</tt>  <tt class="py-line"><tt class="py-docstring">        @rtype: C{string}</tt> </tt>
+<a name="L481"></a><tt class="py-lineno"> 481</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L482"></a><tt class="py-lineno"> 482</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">' '</tt><tt class="py-op">*</tt><tt class="py-name">depth</tt> <tt class="py-op">+</tt> <tt class="py-string">'\\item \\textbf{'</tt><tt class="py-op">)</tt> </tt>
+<a name="L483"></a><tt class="py-lineno"> 483</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt id="link-171" class="py-name"><a title="epydoc.util.plaintext_to_latex" class="py-name" href="#" onclick="return doclink('link-171', 'plaintext_to_latex', 'link-12');">plaintext_to_latex</a></tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-172" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-172', 'canonical_name', 'link-44');">canonical_name</a></tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt><tt class="py-string">'}'</tt><tt class="py-op">)</tt> </tt>
+<a name="L484"></a><tt class="py-lineno"> 484</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-173" class="py-name" targets="Variable epydoc.apidoc.APIDoc.summary=epydoc.apidoc.APIDoc-class.html#summary,Method epydoc.docwriter.html.HTMLWriter.summary()=epydoc.docwriter.html.HTMLWriter-class.html#summary,Method epydoc.markup.ConcatenatedDocstring.summary()=epydoc.markup.ConcatenatedDocstring-class.html#summar [...]
+epydoc.docwriter.html.HTMLWriter.summary
+epydoc.markup.ConcatenatedDocstring.summary
+epydoc.markup.ParsedDocstring.summary
+epydoc.markup.epytext.ParsedEpytextDocstring.summary
+epydoc.markup.javadoc.ParsedJavadocDocstring.summary
+epydoc.markup.plaintext.ParsedPlaintextDocstring.summary
+epydoc.markup.restructuredtext.ParsedRstDocstring.summary" class="py-name" href="#" onclick="return doclink('link-173', 'summary', 'link-173');">summary</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-174" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-174', 'UNKNOWN', 'link-113');">UNKNOWN</a></tt><tt class="py-op">)< [...]
+<a name="L485"></a><tt class="py-lineno"> 485</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">': %s\n'</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-175" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.docstring_to_latex" class="py-name" href="#" onclick="return doclink('link-175', 'docstring_to_latex', 'link-114');">docstring_to_latex</a></tt><tt class="py-op">( [...]
+epydoc.docwriter.html.HTMLWriter.summary
+epydoc.markup.ConcatenatedDocstring.summary
+epydoc.markup.ParsedDocstring.summary
+epydoc.markup.epytext.ParsedEpytextDocstring.summary
+epydoc.markup.javadoc.ParsedJavadocDocstring.summary
+epydoc.markup.plaintext.ParsedPlaintextDocstring.summary
+epydoc.markup.restructuredtext.ParsedRstDocstring.summary" class="py-name" href="#" onclick="return doclink('link-176', 'summary', 'link-173');">summary</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L486"></a><tt class="py-lineno"> 486</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_crossref</tt><tt class="py-op">:</tt> </tt>
+<a name="L487"></a><tt class="py-lineno"> 487</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'\n  \\textit{(Section \\ref{%s}'</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-177" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.label" class="py-name" href="#" onclick="return doclink('link-177', 'label', 'link-111');">label</a></tt><tt class="py-op">(</tt><tt class [...]
+<a name="L488"></a><tt class="py-lineno"> 488</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">', p.~\\pageref{%s})}\n\n'</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-178" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.label" class="py-name" href="#" onclick="return doclink('link-178', 'label', 'link-111');">label</a></tt><tt class="py-op">(</tt><tt class="py-na [...]
+<a name="L489"></a><tt class="py-lineno"> 489</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-179" class="py-name"><a title="epydoc.apidoc.ModuleDoc.submodules" class="py-name" href="#" onclick="return doclink('link-179', 'submodules', 'link-23');">submodules</a></tt> <tt class="py-op">!=</tt> <tt id="link-180" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink [...]
+<a name="L490"></a><tt class="py-lineno"> 490</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">' '</tt><tt class="py-op">*</tt><tt class="py-name">depth</tt> <tt class="py-op">+</tt> <tt class="py-string">'  \\begin{itemize}\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L491"></a><tt class="py-lineno"> 491</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">' '</tt><tt class="py-op">*</tt><tt class="py-name">depth</tt> <tt class="py-op">+</tt> <tt class="py-string">'\\setlength{\\parskip}{0ex}\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L492"></a><tt class="py-lineno"> 492</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">submodule</tt> <tt class="py-keyword">in</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-182" class="py-name"><a title="epydoc.apidoc.ModuleDoc.submodules" class="py-name" href="#" onclick="return doclink('link-182', 'submodules', 'link-23');">submodules</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L493"></a><tt class="py-lineno"> 493</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-183" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_module_tree_item
+epydoc.docwriter.latex.LatexWriter.write_module_tree_item" class="py-name" href="#" onclick="return doclink('link-183', 'write_module_tree_item', 'link-163');">write_module_tree_item</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-name">submodule</tt><tt class="py-op">,</tt> <tt class="py-name">depth</tt><tt class="py-op">+</tt><tt class="py-number">4</tt><tt class="py-op">)</tt> </tt>
+<a name="L494"></a><tt class="py-lineno"> 494</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">' '</tt><tt class="py-op">*</tt><tt class="py-name">depth</tt> <tt class="py-op">+</tt> <tt class="py-string">'  \\end{itemize}\n'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L495"></a><tt class="py-lineno"> 495</tt>  <tt class="py-line"> </tt>
+<a name="L496"></a><tt class="py-lineno"> 496</tt>  <tt class="py-line">    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L497"></a><tt class="py-lineno"> 497</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#{ Base class trees</tt> </tt>
+<a name="L498"></a><tt class="py-lineno"> 498</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L499"></a><tt class="py-lineno"> 499</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="LatexWriter.base_tree"></a><div id="LatexWriter.base_tree-def"><a name="L500"></a><tt class="py-lineno"> 500</tt> <a class="py-toggle" href="#" id="LatexWriter.base_tree-toggle" onclick="return toggle('LatexWriter.base_tree');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.latex.LatexWriter-class.html#base_tree">base_tree</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-pa [...]
+</div><div id="LatexWriter.base_tree-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="LatexWriter.base_tree-expanded"><a name="L501"></a><tt class="py-lineno"> 501</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">width</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L502"></a><tt class="py-lineno"> 502</tt>  <tt class="py-line">            <tt class="py-name">width</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-184" class="py-name" targets="Method epydoc.docwriter.latex.LatexWriter._find_tree_width()=epydoc.docwriter.latex.LatexWriter-class.html#_find_tree_width"><a title="epydoc.docwriter.latex.LatexWriter._find_tree_width" class="py-name" href="#" onclick="return doclink('link-184', '_find_ [...]
+<a name="L503"></a><tt class="py-lineno"> 503</tt>  <tt class="py-line">            <tt class="py-name">linespec</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L504"></a><tt class="py-lineno"> 504</tt>  <tt class="py-line">            <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">'&'</tt><tt class="py-op">*</tt><tt class="py-op">(</tt><tt class="py-name">width</tt><tt class="py-op">-</tt><tt class="py-number">4</tt><tt class="py-op">)</tt><tt class="py-op">+</tt><tt class="py-string">'\\multicolumn{2}{l}{\\textbf{%s}}\n'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L505"></a><tt class="py-lineno"> 505</tt>  <tt class="py-line">                   <tt id="link-185" class="py-name"><a title="epydoc.util.plaintext_to_latex" class="py-name" href="#" onclick="return doclink('link-185', 'plaintext_to_latex', 'link-12');">plaintext_to_latex</a></tt><tt class="py-op">(</tt><tt class="py-string">'%s'</tt><tt class="py-op">%</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-186" class="py-name" targets="Method epydoc.docwriter.lat [...]
+<a name="L506"></a><tt class="py-lineno"> 506</tt>  <tt class="py-line">            <tt class="py-name">s</tt> <tt class="py-op">+=</tt> <tt class="py-string">'\\end{tabular}\n\n'</tt> </tt>
+<a name="L507"></a><tt class="py-lineno"> 507</tt>  <tt class="py-line">            <tt class="py-name">top</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L508"></a><tt class="py-lineno"> 508</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L509"></a><tt class="py-lineno"> 509</tt>  <tt class="py-line">            <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-187" class="py-name" targets="Method epydoc.docwriter.latex.LatexWriter._base_tree_line()=epydoc.docwriter.latex.LatexWriter-class.html#_base_tree_line"><a title="epydoc.docwriter.latex.LatexWriter._base_tree_line" class="py-name" href="#" onclick="return doclink('link-187', '_base_tree_li [...]
+<a name="L510"></a><tt class="py-lineno"> 510</tt>  <tt class="py-line">            <tt class="py-name">top</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L511"></a><tt class="py-lineno"> 511</tt>  <tt class="py-line">         </tt>
+<a name="L512"></a><tt class="py-lineno"> 512</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt id="link-188" class="py-name"><a title="epydoc.apidoc.ClassDoc" class="py-name" href="#" onclick="return doclink('link-188', 'ClassDoc', 'link-26');">ClassDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L513"></a><tt class="py-lineno"> 513</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-189" class="py-name"><a title="epydoc.apidoc.ClassDoc.bases" class="py-name" href="#" onclick="return doclink('link-189', 'bases', 'link-22');">bas [...]
+<a name="L514"></a><tt class="py-lineno"> 514</tt>  <tt class="py-line">                <tt class="py-name">base</tt> <tt class="py-op">=</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-190" class="py-name"><a title="epydoc.apidoc.ClassDoc.bases" class="py-name" href="#" onclick="return doclink('link-190', 'bases', 'link-22');">bases</a></tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt> </tt>
+<a name="L515"></a><tt class="py-lineno"> 515</tt>  <tt class="py-line">                <tt class="py-name">spec</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">i</tt> <tt class="py-op">></tt> <tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+<a name="L516"></a><tt class="py-lineno"> 516</tt>  <tt class="py-line">                <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-191" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.base_tree
+epydoc.docwriter.latex.LatexWriter.base_tree" class="py-name" href="#" onclick="return doclink('link-191', 'base_tree', 'link-141');">base_tree</a></tt><tt class="py-op">(</tt><tt class="py-name">base</tt><tt class="py-op">,</tt> <tt class="py-name">width</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-name">spec</tt><tt class="py-op">]</tt><tt class="py-op">+</tt><tt class="py-name">linespec</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-name">s</ [...]
+<a name="L517"></a><tt class="py-lineno"> 517</tt>  <tt class="py-line"> </tt>
+<a name="L518"></a><tt class="py-lineno"> 518</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">top</tt><tt class="py-op">:</tt> </tt>
+<a name="L519"></a><tt class="py-lineno"> 519</tt>  <tt class="py-line">            <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-string">'\\begin{tabular}{%s}\n'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">width</tt><tt class="py-op">*</tt><tt class="py-string">'c'</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-name">s</tt> </tt>
+<a name="L520"></a><tt class="py-lineno"> 520</tt>  <tt class="py-line"> </tt>
+<a name="L521"></a><tt class="py-lineno"> 521</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">s</tt> </tt>
+</div><a name="L522"></a><tt class="py-lineno"> 522</tt>  <tt class="py-line"> </tt>
+<a name="LatexWriter._base_name"></a><div id="LatexWriter._base_name-def"><a name="L523"></a><tt class="py-lineno"> 523</tt> <a class="py-toggle" href="#" id="LatexWriter._base_name-toggle" onclick="return toggle('LatexWriter._base_name');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.latex.LatexWriter-class.html#_base_name">_base_name</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class= [...]
+</div><div id="LatexWriter._base_name-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="LatexWriter._base_name-expanded"><a name="L524"></a><tt class="py-lineno"> 524</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-192" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-192', 'canonical_name', 'link-44');">canonical_name</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L525"></a><tt class="py-lineno"> 525</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-193" class="py-name" targets="Variable epydoc.apidoc.ValueDoc.parse_repr=epydoc.apidoc.ValueDoc-class.html#parse_repr"><a title="epydoc.apidoc.ValueDoc.parse_repr" class="py-name" href="#" onclick="return doclink('link-193', 'parse_repr', 'link-193');">parse_repr</a></tt> <tt class="py-keyword">is</tt> <tt clas [...]
+<a name="L526"></a><tt class="py-lineno"> 526</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-194" class="py-name"><a title="epydoc.apidoc.ValueDoc.parse_repr" class="py-name" href="#" onclick="return doclink('link-194', 'parse_repr', 'link-193');">parse_repr</a></tt> </tt>
+<a name="L527"></a><tt class="py-lineno"> 527</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L528"></a><tt class="py-lineno"> 528</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-string">'??'</tt> </tt>
+<a name="L529"></a><tt class="py-lineno"> 529</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L530"></a><tt class="py-lineno"> 530</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">'%s'</tt> <tt class="py-op">%</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-195" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-195', 'canonical_name', 'link-44');">canonical_name</a></tt> </tt>
+</div><a name="L531"></a><tt class="py-lineno"> 531</tt>  <tt class="py-line"> </tt>
+<a name="LatexWriter._find_tree_width"></a><div id="LatexWriter._find_tree_width-def"><a name="L532"></a><tt class="py-lineno"> 532</tt> <a class="py-toggle" href="#" id="LatexWriter._find_tree_width-toggle" onclick="return toggle('LatexWriter._find_tree_width');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.latex.LatexWriter-class.html#_find_tree_width">_find_tree_width</a><tt class="py-op">(</tt><tt class="py-param">self</tt [...]
+</div><div id="LatexWriter._find_tree_width-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="LatexWriter._find_tree_width-expanded"><a name="L533"></a><tt class="py-lineno"> 533</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt id="link-196" class="py-name"><a title="epydoc.apidoc.ClassDoc" class="py [...]
+<a name="L534"></a><tt class="py-lineno"> 534</tt>  <tt class="py-line">        <tt class="py-name">width</tt> <tt class="py-op">=</tt> <tt class="py-number">2</tt> </tt>
+<a name="L535"></a><tt class="py-lineno"> 535</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">base</tt> <tt class="py-keyword">in</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-197" class="py-name"><a title="epydoc.apidoc.ClassDoc.bases" class="py-name" href="#" onclick="return doclink('link-197', 'bases', 'link-22');">bases</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L536"></a><tt class="py-lineno"> 536</tt>  <tt class="py-line">            <tt class="py-name">width</tt> <tt class="py-op">=</tt> <tt class="py-name">max</tt><tt class="py-op">(</tt><tt class="py-name">width</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-198" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter._find_tree_width" class="py-name" href="#" onclick="return doclink('link-198', '_find_tree_width', 'link-184');"> [...]
+<a name="L537"></a><tt class="py-lineno"> 537</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">width</tt> </tt>
+</div><a name="L538"></a><tt class="py-lineno"> 538</tt>  <tt class="py-line"> </tt>
+<a name="LatexWriter._base_tree_line"></a><div id="LatexWriter._base_tree_line-def"><a name="L539"></a><tt class="py-lineno"> 539</tt> <a class="py-toggle" href="#" id="LatexWriter._base_tree_line-toggle" onclick="return toggle('LatexWriter._base_tree_line');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.latex.LatexWriter-class.html#_base_tree_line">_base_tree_line</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt c [...]
+</div><div id="LatexWriter._base_tree_line-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="LatexWriter._base_tree_line-expanded"><a name="L540"></a><tt class="py-lineno"> 540</tt>  <tt class="py-line">        <tt class="py-name">base_name</tt> <tt class="py-op">=</tt> <tt id="link-199" class="py-name"><a title="epydoc.util.plaintext_to_latex" class="py-name" href="#" onclick="return doclink('link-199', 'plaintext_to_latex', 'link-12');">plaintext_to_latex</a> [...]
+<a name="L541"></a><tt class="py-lineno"> 541</tt>  <tt class="py-line">         </tt>
+<a name="L542"></a><tt class="py-lineno"> 542</tt>  <tt class="py-line">        <tt class="py-comment"># linespec is a list of booleans.</tt> </tt>
+<a name="L543"></a><tt class="py-lineno"> 543</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-string">'%% Line for %s, linespec=%s\n'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">base_name</tt><tt class="py-op">,</tt> <tt class="py-name">linespec</tt><tt class="py-op">)</tt> </tt>
+<a name="L544"></a><tt class="py-lineno"> 544</tt>  <tt class="py-line"> </tt>
+<a name="L545"></a><tt class="py-lineno"> 545</tt>  <tt class="py-line">        <tt class="py-name">labelwidth</tt> <tt class="py-op">=</tt> <tt class="py-name">width</tt><tt class="py-op">-</tt><tt class="py-number">2</tt><tt class="py-op">*</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">linespec</tt><tt class="py-op">)</tt><tt class="py-op">-</tt><tt class="py-number">2</tt> </tt>
+<a name="L546"></a><tt class="py-lineno"> 546</tt>  <tt class="py-line"> </tt>
+<a name="L547"></a><tt class="py-lineno"> 547</tt>  <tt class="py-line">        <tt class="py-comment"># The base class name.</tt> </tt>
+<a name="L548"></a><tt class="py-lineno"> 548</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">s</tt> <tt class="py-op">+=</tt> <tt class="py-op">(</tt><tt class="py-string">'\\multicolumn{%s}{r}{'</tt> <tt class="py-op">%</tt> <tt class="py-name">labelwidth</tt><tt class="py-op">)</tt> </tt>
+<a name="L549"></a><tt class="py-lineno"> 549</tt>  <tt class="py-line">        <tt class="py-name">s</tt> <tt class="py-op">+=</tt> <tt class="py-string">'\\settowidth{\\BCL}{%s}'</tt> <tt class="py-op">%</tt> <tt class="py-name">base_name</tt> </tt>
+<a name="L550"></a><tt class="py-lineno"> 550</tt>  <tt class="py-line">        <tt class="py-name">s</tt> <tt class="py-op">+=</tt> <tt class="py-string">'\\multirow{2}{\\BCL}{%s}}\n'</tt> <tt class="py-op">%</tt> <tt class="py-name">base_name</tt> </tt>
+<a name="L551"></a><tt class="py-lineno"> 551</tt>  <tt class="py-line"> </tt>
+<a name="L552"></a><tt class="py-lineno"> 552</tt>  <tt class="py-line">        <tt class="py-comment"># The vertical bars for other base classes (top half)</tt> </tt>
+<a name="L553"></a><tt class="py-lineno"> 553</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">for</tt> <tt class="py-name">vbar</tt> <tt class="py-keyword">in</tt> <tt class="py-name">linespec</tt><tt class="py-op">:</tt> </tt>
+<a name="L554"></a><tt class="py-lineno"> 554</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">vbar</tt><tt class="py-op">:</tt> <tt class="py-name">s</tt> <tt class="py-op">+=</tt> <tt class="py-string">'&&\\multicolumn{1}{|c}{}\n'</tt> </tt>
+<a name="L555"></a><tt class="py-lineno"> 555</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> <tt class="py-name">s</tt> <tt class="py-op">+=</tt> <tt class="py-string">'&&\n'</tt> </tt>
+<a name="L556"></a><tt class="py-lineno"> 556</tt>  <tt class="py-line"> </tt>
+<a name="L557"></a><tt class="py-lineno"> 557</tt>  <tt class="py-line">        <tt class="py-comment"># The horizontal line.</tt> </tt>
+<a name="L558"></a><tt class="py-lineno"> 558</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">s</tt> <tt class="py-op">+=</tt> <tt class="py-string">'  \\\\\\cline{%s-%s}\n'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">labelwidth</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-name">labelwidth</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L559"></a><tt class="py-lineno"> 559</tt>  <tt class="py-line"> </tt>
+<a name="L560"></a><tt class="py-lineno"> 560</tt>  <tt class="py-line">        <tt class="py-comment"># The vertical bar for this base class.</tt> </tt>
+<a name="L561"></a><tt class="py-lineno"> 561</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">s</tt> <tt class="py-op">+=</tt> <tt class="py-string">'  '</tt> <tt class="py-op">+</tt> <tt class="py-string">'&'</tt><tt class="py-op">*</tt><tt class="py-name">labelwidth</tt> </tt>
+<a name="L562"></a><tt class="py-lineno"> 562</tt>  <tt class="py-line">        <tt class="py-name">s</tt> <tt class="py-op">+=</tt> <tt class="py-string">'\\multicolumn{1}{c|}{}\n'</tt> </tt>
+<a name="L563"></a><tt class="py-lineno"> 563</tt>  <tt class="py-line"> </tt>
+<a name="L564"></a><tt class="py-lineno"> 564</tt>  <tt class="py-line">        <tt class="py-comment"># The vertical bars for other base classes (bottom half)</tt> </tt>
+<a name="L565"></a><tt class="py-lineno"> 565</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">for</tt> <tt class="py-name">vbar</tt> <tt class="py-keyword">in</tt> <tt class="py-name">linespec</tt><tt class="py-op">:</tt> </tt>
+<a name="L566"></a><tt class="py-lineno"> 566</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">vbar</tt><tt class="py-op">:</tt> <tt class="py-name">s</tt> <tt class="py-op">+=</tt> <tt class="py-string">'&\\multicolumn{1}{|c}{}&\n'</tt> </tt>
+<a name="L567"></a><tt class="py-lineno"> 567</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> <tt class="py-name">s</tt> <tt class="py-op">+=</tt> <tt class="py-string">'&&\n'</tt> </tt>
+<a name="L568"></a><tt class="py-lineno"> 568</tt>  <tt class="py-line">        <tt class="py-name">s</tt> <tt class="py-op">+=</tt> <tt class="py-string">'  \\\\\n'</tt> </tt>
+<a name="L569"></a><tt class="py-lineno"> 569</tt>  <tt class="py-line"> </tt>
+<a name="L570"></a><tt class="py-lineno"> 570</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">s</tt> </tt>
+</div><a name="L571"></a><tt class="py-lineno"> 571</tt>  <tt class="py-line">         </tt>
+<a name="L572"></a><tt class="py-lineno"> 572</tt>  <tt class="py-line">    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L573"></a><tt class="py-lineno"> 573</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#{ Class List</tt> </tt>
+<a name="L574"></a><tt class="py-lineno"> 574</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L575"></a><tt class="py-lineno"> 575</tt>  <tt class="py-line"><tt class="py-comment"></tt>     </tt>
+<a name="LatexWriter.write_class_list"></a><div id="LatexWriter.write_class_list-def"><a name="L576"></a><tt class="py-lineno"> 576</tt> <a class="py-toggle" href="#" id="LatexWriter.write_class_list-toggle" onclick="return toggle('LatexWriter.write_class_list');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.latex.LatexWriter-class.html#write_class_list">write_class_list</a><tt class="py-op">(</tt><tt class="py-param">self</tt [...]
+</div><div id="LatexWriter.write_class_list-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="LatexWriter.write_class_list-expanded"><a name="L577"></a><tt class="py-lineno"> 577</tt>  <tt class="py-line">        <tt class="py-name">groups</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt id="link-201" class="py-name"><a title="epydoc.util.plaintext_to_latex" class="py-name" href="#" onclick="return doclink('link-201', 'plaintext [...]
+<a name="L578"></a><tt class="py-lineno"> 578</tt>  <tt class="py-line">                   <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-202" class="py-name"><a title="epydoc.apidoc.ClassDoc.select_variables
+epydoc.apidoc.ModuleDoc.select_variables" class="py-name" href="#" onclick="return doclink('link-202', 'select_variables', 'link-124');">select_variables</a></tt><tt class="py-op">(</tt><tt class="py-name">group</tt><tt class="py-op">=</tt><tt class="py-name">group_name</tt><tt class="py-op">,</tt> <tt class="py-name">imported</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> </tt>
+<a name="L579"></a><tt class="py-lineno"> 579</tt>  <tt class="py-line">                                        <tt class="py-name">value_type</tt><tt class="py-op">=</tt><tt class="py-string">'class'</tt><tt class="py-op">,</tt> </tt>
+<a name="L580"></a><tt class="py-lineno"> 580</tt>  <tt class="py-line">                                        <tt class="py-name">public</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_public_filter</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L581"></a><tt class="py-lineno"> 581</tt>  <tt class="py-line">                  <tt class="py-keyword">for</tt> <tt class="py-name">group_name</tt> <tt class="py-keyword">in</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-203" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.group_names" class="py-name" href="#" onclick="return doclink('link-203', 'group_names', 'link-167');">group_names</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class [...]
+<a name="L582"></a><tt class="py-lineno"> 582</tt>  <tt class="py-line"> </tt>
+<a name="L583"></a><tt class="py-lineno"> 583</tt>  <tt class="py-line">        <tt class="py-comment"># Discard any empty groups; and return if they're all empty.</tt> </tt>
+<a name="L584"></a><tt class="py-lineno"> 584</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">groups</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-name">g</tt><tt class="py-op">,</tt><tt class="py-name">vars</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-op">(</tt><tt class="py-name">g</tt><tt class="py-op">,</tt><tt class="py-name">vars</tt><tt class="py-op">)</tt> <tt class="py-k [...]
+<a name="L585"></a><tt class="py-lineno"> 585</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">groups</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> </tt>
+<a name="L586"></a><tt class="py-lineno"> 586</tt>  <tt class="py-line"> </tt>
+<a name="L587"></a><tt class="py-lineno"> 587</tt>  <tt class="py-line">        <tt class="py-comment"># Write a header.</tt> </tt>
+<a name="L588"></a><tt class="py-lineno"> 588</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-204" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.write_start_of" class="py-name" href="#" onclick="return doclink('link-204', 'write_start_of', 'link-82');">write_start_of</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-string">'Classes'</tt><tt clas [...]
+<a name="L589"></a><tt class="py-lineno"> 589</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-205" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.section
+epydoc.docwriter.plaintext.PlaintextWriter.section" class="py-name" href="#" onclick="return doclink('link-205', 'section', 'link-108');">section</a></tt><tt class="py-op">(</tt><tt class="py-string">'Classes'</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L590"></a><tt class="py-lineno"> 590</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'\\begin{itemize}'</tt><tt class="py-op">)</tt> </tt>
+<a name="L591"></a><tt class="py-lineno"> 591</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'  \\setlength{\\parskip}{0ex}\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L592"></a><tt class="py-lineno"> 592</tt>  <tt class="py-line"> </tt>
+<a name="L593"></a><tt class="py-lineno"> 593</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt id="link-206" class="py-name" targets="Variable epydoc.apidoc.VariableDoc.name=epydoc.apidoc.VariableDoc-class.html#name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-206', 'name', 'link-206');">name</a></tt><tt class="py-op">,</tt> <tt class="py-name">var_docs</tt> <tt class="py-keyword">in</tt> <tt class="py-name">groups [...]
+<a name="L594"></a><tt class="py-lineno"> 594</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt id="link-207" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-207', 'name', 'link-206');">name</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L595"></a><tt class="py-lineno"> 595</tt>  <tt class="py-line">                <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'  \\item \\textbf{%s}\n'</tt> <tt class="py-op">%</tt> <tt id="link-208" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-208', 'name', 'link-206');">name</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L596"></a><tt class="py-lineno"> 596</tt>  <tt class="py-line">                <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'  \\begin{itemize}\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L597"></a><tt class="py-lineno"> 597</tt>  <tt class="py-line">            <tt class="py-comment"># Add the lines for each class</tt> </tt>
+<a name="L598"></a><tt class="py-lineno"> 598</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">for</tt> <tt class="py-name">var_doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">var_docs</tt><tt class="py-op">:</tt> </tt>
+<a name="L599"></a><tt class="py-lineno"> 599</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-209" class="py-name" targets="Method epydoc.docwriter.latex.LatexWriter.write_class_list_line()=epydoc.docwriter.latex.LatexWriter-class.html#write_class_list_line"><a title="epydoc.docwriter.latex.LatexWriter.write_class_list_line" class="py-name" href="#" onclick="return doclink('link-209', 'write_class_list_line', 'link-209');">write [...]
+<a name="L600"></a><tt class="py-lineno"> 600</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt id="link-210" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-210', 'name', 'link-206');">name</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L601"></a><tt class="py-lineno"> 601</tt>  <tt class="py-line">                <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'  \\end{itemize}\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L602"></a><tt class="py-lineno"> 602</tt>  <tt class="py-line"> </tt>
+<a name="L603"></a><tt class="py-lineno"> 603</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'\\end{itemize}\n'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L604"></a><tt class="py-lineno"> 604</tt>  <tt class="py-line"> </tt>
+<a name="LatexWriter.write_class_list_line"></a><div id="LatexWriter.write_class_list_line-def"><a name="L605"></a><tt class="py-lineno"> 605</tt> <a class="py-toggle" href="#" id="LatexWriter.write_class_list_line-toggle" onclick="return toggle('LatexWriter.write_class_list_line');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.latex.LatexWriter-class.html#write_class_list_line">write_class_list_line</a><tt class="py-op">(</tt [...]
+</div><div id="LatexWriter.write_class_list_line-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="LatexWriter.write_class_list_line-expanded"><a name="L606"></a><tt class="py-lineno"> 606</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-211" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-211', 'value', 'link-12 [...]
+<a name="L607"></a><tt class="py-lineno"> 607</tt>  <tt class="py-line">        <tt class="py-name">doc</tt> <tt class="py-op">=</tt> <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-213" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-213', 'value', 'link-126');">value</a></tt> </tt>
+<a name="L608"></a><tt class="py-lineno"> 608</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'  '</tt> <tt class="py-op">+</tt> <tt class="py-string">'\\item \\textbf{'</tt><tt class="py-op">)</tt> </tt>
+<a name="L609"></a><tt class="py-lineno"> 609</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt id="link-214" class="py-name"><a title="epydoc.util.plaintext_to_latex" class="py-name" href="#" onclick="return doclink('link-214', 'plaintext_to_latex', 'link-12');">plaintext_to_latex</a></tt><tt class="py-op">(</tt><tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-215" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class [...]
+<a name="L610"></a><tt class="py-lineno"> 610</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-216" class="py-name"><a title="epydoc.apidoc.APIDoc.summary
+epydoc.docwriter.html.HTMLWriter.summary
+epydoc.markup.ConcatenatedDocstring.summary
+epydoc.markup.ParsedDocstring.summary
+epydoc.markup.epytext.ParsedEpytextDocstring.summary
+epydoc.markup.javadoc.ParsedJavadocDocstring.summary
+epydoc.markup.plaintext.ParsedPlaintextDocstring.summary
+epydoc.markup.restructuredtext.ParsedRstDocstring.summary" class="py-name" href="#" onclick="return doclink('link-216', 'summary', 'link-173');">summary</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-217" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-217', 'UNKNOWN', 'link-113');">UNKNOWN</a></tt><tt class="py-op">)< [...]
+<a name="L611"></a><tt class="py-lineno"> 611</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">': %s\n'</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-218" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.docstring_to_latex" class="py-name" href="#" onclick="return doclink('link-218', 'docstring_to_latex', 'link-114');">docstring_to_latex</a></tt><tt class="py-op">( [...]
+epydoc.docwriter.html.HTMLWriter.summary
+epydoc.markup.ConcatenatedDocstring.summary
+epydoc.markup.ParsedDocstring.summary
+epydoc.markup.epytext.ParsedEpytextDocstring.summary
+epydoc.markup.javadoc.ParsedJavadocDocstring.summary
+epydoc.markup.plaintext.ParsedPlaintextDocstring.summary
+epydoc.markup.restructuredtext.ParsedRstDocstring.summary" class="py-name" href="#" onclick="return doclink('link-219', 'summary', 'link-173');">summary</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L612"></a><tt class="py-lineno"> 612</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_crossref</tt><tt class="py-op">:</tt> </tt>
+<a name="L613"></a><tt class="py-lineno"> 613</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-string">'\n  \\textit{(Section \\ref{%s}'</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-220" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.label" class="py-name" href="#" onclick="return doclink('link-220', 'label', 'link-111');">label</a></tt><tt class [...]
+<a name="L614"></a><tt class="py-lineno"> 614</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-string">', p.~\\pageref{%s})}\n\n'</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-221" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.label" class="py-name" href="#" onclick="return doclink('link-221', 'label', 'link-111');">label</a></tt><tt class="py-op [...]
+</div><a name="L615"></a><tt class="py-lineno"> 615</tt>  <tt class="py-line">         </tt>
+<a name="L616"></a><tt class="py-lineno"> 616</tt>  <tt class="py-line">    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L617"></a><tt class="py-lineno"> 617</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#{ Function List</tt> </tt>
+<a name="L618"></a><tt class="py-lineno"> 618</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L619"></a><tt class="py-lineno"> 619</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-222" class="py-name" targets="Variable epydoc.docwriter.latex.LatexWriter._FUNC_GROUP_HEADER=epydoc.docwriter.latex.LatexWriter-class.html#_FUNC_GROUP_HEADER"><a title="epydoc.docwriter.latex.LatexWriter._FUNC_GROUP_HEADER" class="py-name" href="#" onclick="return doclink('link-222', '_FUNC_GROUP_HEADER', 'link-222');">_FUNC_GROUP_HEADER</a></tt> <tt class="py-op">=</tt> < [...]
+<a name="L620"></a><tt class="py-lineno"> 620</tt>  <tt class="py-line">     </tt>
+<a name="LatexWriter.write_func_list"></a><div id="LatexWriter.write_func_list-def"><a name="L621"></a><tt class="py-lineno"> 621</tt> <a class="py-toggle" href="#" id="LatexWriter.write_func_list-toggle" onclick="return toggle('LatexWriter.write_func_list');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.latex.LatexWriter-class.html#write_func_list">write_func_list</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt c [...]
+</div><div id="LatexWriter.write_func_list-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="LatexWriter.write_func_list-expanded"><a name="L622"></a><tt class="py-lineno"> 622</tt>  <tt class="py-line">        <tt class="py-comment"># Divide all public variables of the given type into groups.</tt> </tt>
+<a name="L623"></a><tt class="py-lineno"> 623</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">groups</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt id="link-223" class="py-name"><a title="epydoc.util.plaintext_to_latex" class="py-name" href="#" onclick="return doclink('link-223', 'plaintext_to_latex', 'link-12');">plaintext_to_latex</a></tt><tt class="py-op">(</tt><tt class="py-name">group_name</tt><tt class="py-op">)</ [...]
+<a name="L624"></a><tt class="py-lineno"> 624</tt>  <tt class="py-line">                   <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-224" class="py-name"><a title="epydoc.apidoc.ClassDoc.select_variables
+epydoc.apidoc.ModuleDoc.select_variables" class="py-name" href="#" onclick="return doclink('link-224', 'select_variables', 'link-124');">select_variables</a></tt><tt class="py-op">(</tt><tt class="py-name">group</tt><tt class="py-op">=</tt><tt class="py-name">group_name</tt><tt class="py-op">,</tt> <tt class="py-name">imported</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> </tt>
+<a name="L625"></a><tt class="py-lineno"> 625</tt>  <tt class="py-line">                                        <tt class="py-name">value_type</tt><tt class="py-op">=</tt><tt class="py-name">value_type</tt><tt class="py-op">,</tt> </tt>
+<a name="L626"></a><tt class="py-lineno"> 626</tt>  <tt class="py-line">                                        <tt class="py-name">public</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_public_filter</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L627"></a><tt class="py-lineno"> 627</tt>  <tt class="py-line">                  <tt class="py-keyword">for</tt> <tt class="py-name">group_name</tt> <tt class="py-keyword">in</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-225" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.group_names" class="py-name" href="#" onclick="return doclink('link-225', 'group_names', 'link-167');">group_names</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class [...]
+<a name="L628"></a><tt class="py-lineno"> 628</tt>  <tt class="py-line"> </tt>
+<a name="L629"></a><tt class="py-lineno"> 629</tt>  <tt class="py-line">        <tt class="py-comment"># Discard any empty groups; and return if they're all empty.</tt> </tt>
+<a name="L630"></a><tt class="py-lineno"> 630</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">groups</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-name">g</tt><tt class="py-op">,</tt><tt class="py-name">vars</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-op">(</tt><tt class="py-name">g</tt><tt class="py-op">,</tt><tt class="py-name">vars</tt><tt class="py-op">)</tt> <tt class="py-k [...]
+<a name="L631"></a><tt class="py-lineno"> 631</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">groups</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> </tt>
+<a name="L632"></a><tt class="py-lineno"> 632</tt>  <tt class="py-line"> </tt>
+<a name="L633"></a><tt class="py-lineno"> 633</tt>  <tt class="py-line">        <tt class="py-comment"># Write a header.</tt> </tt>
+<a name="L634"></a><tt class="py-lineno"> 634</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-226" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.write_start_of" class="py-name" href="#" onclick="return doclink('link-226', 'write_start_of', 'link-82');">write_start_of</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-name">heading</tt><tt class="p [...]
+<a name="L635"></a><tt class="py-lineno"> 635</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'  '</tt><tt class="py-op">+</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-227" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.section
+epydoc.docwriter.plaintext.PlaintextWriter.section" class="py-name" href="#" onclick="return doclink('link-227', 'section', 'link-108');">section</a></tt><tt class="py-op">(</tt><tt class="py-name">heading</tt><tt class="py-op">,</tt> <tt class="py-name">seclevel</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L636"></a><tt class="py-lineno"> 636</tt>  <tt class="py-line"> </tt>
+<a name="L637"></a><tt class="py-lineno"> 637</tt>  <tt class="py-line">        <tt class="py-comment"># Write a section for each group.</tt> </tt>
+<a name="L638"></a><tt class="py-lineno"> 638</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">grouped_inh_vars</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L639"></a><tt class="py-lineno"> 639</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt id="link-228" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-228', 'name', 'link-206');">name</a></tt><tt class="py-op">,</tt> <tt class="py-name">var_docs</tt> <tt class="py-keyword">in</tt> <tt class="py-name">groups</tt><tt class="py-op">:</tt> </tt>
+<a name="L640"></a><tt class="py-lineno"> 640</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-229" class="py-name" targets="Method epydoc.docwriter.latex.LatexWriter.write_func_group()=epydoc.docwriter.latex.LatexWriter-class.html#write_func_group"><a title="epydoc.docwriter.latex.LatexWriter.write_func_group" class="py-name" href="#" onclick="return doclink('link-229', 'write_func_group', 'link-229');">write_func_group</a></tt><tt  [...]
+<a name="L641"></a><tt class="py-lineno"> 641</tt>  <tt class="py-line"> </tt>
+<a name="L642"></a><tt class="py-lineno"> 642</tt>  <tt class="py-line">        <tt class="py-comment"># Write a section for each inheritance pseudo-group (used if</tt> </tt>
+<a name="L643"></a><tt class="py-lineno"> 643</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># inheritance=='grouped')</tt> </tt>
+<a name="L644"></a><tt class="py-lineno"> 644</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">grouped_inh_vars</tt><tt class="py-op">:</tt> </tt>
+<a name="L645"></a><tt class="py-lineno"> 645</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">base</tt> <tt class="py-keyword">in</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-231" class="py-name" targets="Method epydoc.apidoc.ClassDoc.mro()=epydoc.apidoc.ClassDoc-class.html#mro"><a title="epydoc.apidoc.ClassDoc.mro" class="py-name" href="#" onclick="return doclink('link-231', 'mro', 'link-231');">mro</a></tt><tt class="py [...]
+<a name="L646"></a><tt class="py-lineno"> 646</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">base</tt> <tt class="py-keyword">in</tt> <tt class="py-name">grouped_inh_vars</tt><tt class="py-op">:</tt> </tt>
+<a name="L647"></a><tt class="py-lineno"> 647</tt>  <tt class="py-line">                    <tt class="py-name">hdr</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">'Inherited from %s'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L648"></a><tt class="py-lineno"> 648</tt>  <tt class="py-line">                           <tt id="link-232" class="py-name"><a title="epydoc.util.plaintext_to_latex" class="py-name" href="#" onclick="return doclink('link-232', 'plaintext_to_latex', 'link-12');">plaintext_to_latex</a></tt><tt class="py-op">(</tt><tt class="py-string">'%s'</tt> <tt class="py-op">%</tt> <tt class="py-name">base</tt><tt class="py-op">.</tt><tt id="link-233" class="py-name"><a title="epydoc.apidoc.Ge [...]
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-233', 'canonical_name', 'link-44');">canonical_name</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L649"></a><tt class="py-lineno"> 649</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_crossref</tt> <tt class="py-keyword">and</tt> <tt class="py-name">base</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">class_set</tt><tt class="py-op">:</tt> </tt>
+<a name="L650"></a><tt class="py-lineno"> 650</tt>  <tt class="py-line">                        <tt class="py-name">hdr</tt> <tt class="py-op">+=</tt> <tt class="py-op">(</tt><tt class="py-string">'\\textit{(Section \\ref{%s})}'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L651"></a><tt class="py-lineno"> 651</tt>  <tt class="py-line">                                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-234" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.label" class="py-name" href="#" onclick="return doclink('link-234', 'label', 'link-111');">label</a></tt><tt class="py-op">(</tt><tt class="py-name">base</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L652"></a><tt class="py-lineno"> 652</tt>  <tt class="py-line">                    <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-235" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter._FUNC_GROUP_HEADER" class="py-name" href="#" onclick="return doclink('link-235', '_FUNC_GROUP_HEADER', 'link-222');">_FUNC_GROUP_HEADER</a></tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">hd [...]
+<a name="L653"></a><tt class="py-lineno"> 653</tt>  <tt class="py-line">                    <tt class="py-keyword">for</tt> <tt class="py-name">var_doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">grouped_inh_vars</tt><tt class="py-op">[</tt><tt class="py-name">base</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L654"></a><tt class="py-lineno"> 654</tt>  <tt class="py-line">                        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-236" class="py-name" targets="Method epydoc.docwriter.latex.LatexWriter.write_func_list_box()=epydoc.docwriter.latex.LatexWriter-class.html#write_func_list_box"><a title="epydoc.docwriter.latex.LatexWriter.write_func_list_box" class="py-name" href="#" onclick="return doclink('link-236', 'write_func_list_box', 'link-236');">write [...]
+</div><a name="L655"></a><tt class="py-lineno"> 655</tt>  <tt class="py-line"> </tt>
+<a name="LatexWriter.write_func_group"></a><div id="LatexWriter.write_func_group-def"><a name="L656"></a><tt class="py-lineno"> 656</tt> <a class="py-toggle" href="#" id="LatexWriter.write_func_group-toggle" onclick="return toggle('LatexWriter.write_func_group');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.latex.LatexWriter-class.html#write_func_group">write_func_group</a><tt class="py-op">(</tt><tt class="py-param">self</tt [...]
+</div><div id="LatexWriter.write_func_group-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="LatexWriter.write_func_group-expanded"><a name="L657"></a><tt class="py-lineno"> 657</tt>  <tt class="py-line">        <tt class="py-comment"># Split up the var_docs list, according to the way each var</tt> </tt>
+<a name="L658"></a><tt class="py-lineno"> 658</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># should be displayed:</tt> </tt>
+<a name="L659"></a><tt class="py-lineno"> 659</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#   - listed_inh_vars -- for listed inherited variables.</tt> </tt>
+<a name="L660"></a><tt class="py-lineno"> 660</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#   - grouped_inh_vars -- for grouped inherited variables.</tt> </tt>
+<a name="L661"></a><tt class="py-lineno"> 661</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#   - normal_vars -- for all other variables.</tt> </tt>
+<a name="L662"></a><tt class="py-lineno"> 662</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">listed_inh_vars</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L663"></a><tt class="py-lineno"> 663</tt>  <tt class="py-line">        <tt class="py-name">normal_vars</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L664"></a><tt class="py-lineno"> 664</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">var_doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">var_docs</tt><tt class="py-op">:</tt> </tt>
+<a name="L665"></a><tt class="py-lineno"> 665</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-237" class="py-name" targets="Method epydoc.apidoc.DocIndex.container()=epydoc.apidoc.DocIndex-class.html#container,Method epydoc.apidoc.DottedName.container()=epydoc.apidoc.DottedName-class.html#container,Variable epydoc.apidoc.VariableDoc.container=epydoc.apidoc.VariableDoc-class.html#container"><a title= [...]
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-237', 'container', 'link-237');">container</a></tt> <tt class="py-op">!=</tt> <tt class="py-name">doc</tt><tt class="py-op">:</tt> </tt>
+<a name="L666"></a><tt class="py-lineno"> 666</tt>  <tt class="py-line">                <tt class="py-name">base</tt> <tt class="py-op">=</tt> <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-238" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-238', 'container', 'link-237');">container</a></tt> </tt>
+<a name="L667"></a><tt class="py-lineno"> 667</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">base</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">class_set</tt> <tt class="py-keyword">or</tt> </tt>
+<a name="L668"></a><tt class="py-lineno"> 668</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_inheritance</tt> <tt class="py-op">==</tt> <tt class="py-string">'listed'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L669"></a><tt class="py-lineno"> 669</tt>  <tt class="py-line">                    <tt class="py-name">listed_inh_vars</tt><tt class="py-op">.</tt><tt class="py-name">setdefault</tt><tt class="py-op">(</tt><tt class="py-name">base</tt><tt class="py-op">,</tt><tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">var_doc</tt><tt class="py-op">)</tt> </tt>
+<a name="L670"></a><tt class="py-lineno"> 670</tt>  <tt class="py-line">                <tt class="py-keyword">elif</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_inheritance</tt> <tt class="py-op">==</tt> <tt class="py-string">'grouped'</tt><tt class="py-op">:</tt> </tt>
+<a name="L671"></a><tt class="py-lineno"> 671</tt>  <tt class="py-line">                    <tt class="py-name">grouped_inh_vars</tt><tt class="py-op">.</tt><tt class="py-name">setdefault</tt><tt class="py-op">(</tt><tt class="py-name">base</tt><tt class="py-op">,</tt><tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">var_doc</tt><tt class="py-op">)</tt> </tt>
+<a name="L672"></a><tt class="py-lineno"> 672</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L673"></a><tt class="py-lineno"> 673</tt>  <tt class="py-line">                    <tt class="py-name">normal_vars</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">var_doc</tt><tt class="py-op">)</tt> </tt>
+<a name="L674"></a><tt class="py-lineno"> 674</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L675"></a><tt class="py-lineno"> 675</tt>  <tt class="py-line">                <tt class="py-name">normal_vars</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">var_doc</tt><tt class="py-op">)</tt> </tt>
+<a name="L676"></a><tt class="py-lineno"> 676</tt>  <tt class="py-line">             </tt>
+<a name="L677"></a><tt class="py-lineno"> 677</tt>  <tt class="py-line">        <tt class="py-comment"># Write a header for the group.</tt> </tt>
+<a name="L678"></a><tt class="py-lineno"> 678</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt id="link-239" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-239', 'name', 'link-206');">name</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L679"></a><tt class="py-lineno"> 679</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-240" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter._FUNC_GROUP_HEADER" class="py-name" href="#" onclick="return doclink('link-240', '_FUNC_GROUP_HEADER', 'link-222');">_FUNC_GROUP_HEADER</a></tt> <tt class="py-op">%</tt> <tt id="link-241" class="py-name"><a title="epydoc.api [...]
+<a name="L680"></a><tt class="py-lineno"> 680</tt>  <tt class="py-line">        <tt class="py-comment"># Write an entry for each normal var:</tt> </tt>
+<a name="L681"></a><tt class="py-lineno"> 681</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">for</tt> <tt class="py-name">var_doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">normal_vars</tt><tt class="py-op">:</tt> </tt>
+<a name="L682"></a><tt class="py-lineno"> 682</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-242" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.write_func_list_box" class="py-name" href="#" onclick="return doclink('link-242', 'write_func_list_box', 'link-236');">write_func_list_box</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-name">var_doc</tt><tt class="py-op">)< [...]
+<a name="L683"></a><tt class="py-lineno"> 683</tt>  <tt class="py-line">        <tt class="py-comment"># Write a subsection for inherited vars:</tt> </tt>
+<a name="L684"></a><tt class="py-lineno"> 684</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">listed_inh_vars</tt><tt class="py-op">:</tt> </tt>
+<a name="L685"></a><tt class="py-lineno"> 685</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-243" class="py-name" targets="Method epydoc.docwriter.latex.LatexWriter.write_func_inheritance_list()=epydoc.docwriter.latex.LatexWriter-class.html#write_func_inheritance_list"><a title="epydoc.docwriter.latex.LatexWriter.write_func_inheritance_list" class="py-name" href="#" onclick="return doclink('link-243', 'write_func_inheritance_list', [...]
+</div><a name="L686"></a><tt class="py-lineno"> 686</tt>  <tt class="py-line"> </tt>
+<a name="LatexWriter.write_func_inheritance_list"></a><div id="LatexWriter.write_func_inheritance_list-def"><a name="L687"></a><tt class="py-lineno"> 687</tt> <a class="py-toggle" href="#" id="LatexWriter.write_func_inheritance_list-toggle" onclick="return toggle('LatexWriter.write_func_inheritance_list');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.latex.LatexWriter-class.html#write_func_inheritance_list">write_func_inherit [...]
+</div><div id="LatexWriter.write_func_inheritance_list-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="LatexWriter.write_func_inheritance_list-expanded"><a name="L688"></a><tt class="py-lineno"> 688</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">base</tt> <tt class="py-keyword">in</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-244" class="py-name"><a title="epydoc.apidoc.ClassDoc.mro" class="py-nam [...]
+<a name="L689"></a><tt class="py-lineno"> 689</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">base</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">listed_inh_vars</tt><tt class="py-op">:</tt> <tt class="py-keyword">continue</tt> </tt>
+<a name="L690"></a><tt class="py-lineno"> 690</tt>  <tt class="py-line">            <tt class="py-comment">#if str(base.canonical_name) == 'object': continue</tt> </tt>
+<a name="L691"></a><tt class="py-lineno"> 691</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">var_docs</tt> <tt class="py-op">=</tt> <tt class="py-name">listed_inh_vars</tt><tt class="py-op">[</tt><tt class="py-name">base</tt><tt class="py-op">]</tt> </tt>
+<a name="L692"></a><tt class="py-lineno"> 692</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_public_filter</tt><tt class="py-op">:</tt> </tt>
+<a name="L693"></a><tt class="py-lineno"> 693</tt>  <tt class="py-line">                <tt class="py-name">var_docs</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt id="link-245" class="py-name" targets="Variable epydoc.markup.restructuredtext._EpydocReader.v=epydoc.markup.restructuredtext._EpydocReader-class.html#v"><a title="epydoc.markup.restructuredtext._EpydocReader.v" class="py-name" href="#" onclick="return doclink('link-245', 'v', 'link-245');">v</a></tt> <tt class="py- [...]
+<a name="L694"></a><tt class="py-lineno"> 694</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">var_docs</tt><tt class="py-op">:</tt> </tt>
+<a name="L695"></a><tt class="py-lineno"> 695</tt>  <tt class="py-line">                <tt class="py-name">hdr</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">'Inherited from %s'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L696"></a><tt class="py-lineno"> 696</tt>  <tt class="py-line">                       <tt id="link-249" class="py-name"><a title="epydoc.util.plaintext_to_latex" class="py-name" href="#" onclick="return doclink('link-249', 'plaintext_to_latex', 'link-12');">plaintext_to_latex</a></tt><tt class="py-op">(</tt><tt class="py-string">'%s'</tt> <tt class="py-op">%</tt> <tt class="py-name">base</tt><tt class="py-op">.</tt><tt id="link-250" class="py-name"><a title="epydoc.apidoc.Generi [...]
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-250', 'canonical_name', 'link-44');">canonical_name</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L697"></a><tt class="py-lineno"> 697</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_crossref</tt> <tt class="py-keyword">and</tt> <tt class="py-name">base</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">class_set</tt><tt class="py-op">:</tt> </tt>
+<a name="L698"></a><tt class="py-lineno"> 698</tt>  <tt class="py-line">                    <tt class="py-name">hdr</tt> <tt class="py-op">+=</tt> <tt class="py-op">(</tt><tt class="py-string">'\\textit{(Section \\ref{%s})}'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L699"></a><tt class="py-lineno"> 699</tt>  <tt class="py-line">                            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-251" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.label" class="py-name" href="#" onclick="return doclink('link-251', 'label', 'link-111');">label</a></tt><tt class="py-op">(</tt><tt class="py-name">base</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L700"></a><tt class="py-lineno"> 700</tt>  <tt class="py-line">                <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-252" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter._FUNC_GROUP_HEADER" class="py-name" href="#" onclick="return doclink('link-252', '_FUNC_GROUP_HEADER', 'link-222');">_FUNC_GROUP_HEADER</a></tt> <tt class="py-op">%</tt> <tt class="py-name">hdr</tt><tt class="py-op">)</t [...]
+<a name="L701"></a><tt class="py-lineno"> 701</tt>  <tt class="py-line">                <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'\\begin{quote}\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L702"></a><tt class="py-lineno"> 702</tt>  <tt class="py-line">                <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'%s\n'</tt> <tt class="py-op">%</tt> <tt class="py-string">', '</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt> </tt>
+<a name="L703"></a><tt class="py-lineno"> 703</tt>  <tt class="py-line">                    <tt class="py-op">[</tt><tt class="py-string">'%s()'</tt> <tt class="py-op">%</tt> <tt id="link-253" class="py-name"><a title="epydoc.util.plaintext_to_latex" class="py-name" href="#" onclick="return doclink('link-253', 'plaintext_to_latex', 'link-12');">plaintext_to_latex</a></tt><tt class="py-op">(</tt><tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-254" class="py-name"><a t [...]
+<a name="L704"></a><tt class="py-lineno"> 704</tt>  <tt class="py-line">                     <tt class="py-keyword">for</tt> <tt class="py-name">var_doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">var_docs</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L705"></a><tt class="py-lineno"> 705</tt>  <tt class="py-line">                <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'\\end{quote}\n'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L706"></a><tt class="py-lineno"> 706</tt>  <tt class="py-line">             </tt>
+<a name="LatexWriter.write_func_list_box"></a><div id="LatexWriter.write_func_list_box-def"><a name="L707"></a><tt class="py-lineno"> 707</tt> <a class="py-toggle" href="#" id="LatexWriter.write_func_list_box-toggle" onclick="return toggle('LatexWriter.write_func_list_box');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.latex.LatexWriter-class.html#write_func_list_box">write_func_list_box</a><tt class="py-op">(</tt><tt class=" [...]
+</div><div id="LatexWriter.write_func_list_box-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="LatexWriter.write_func_list_box-expanded"><a name="L708"></a><tt class="py-lineno"> 708</tt>  <tt class="py-line">        <tt class="py-name">func_doc</tt> <tt class="py-op">=</tt> <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-255" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link [...]
+<a name="L709"></a><tt class="py-lineno"> 709</tt>  <tt class="py-line">        <tt class="py-name">is_inherited</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-256" class="py-name" targets="Variable epydoc.apidoc.VariableDoc.overrides=epydoc.apidoc.VariableDoc-class.html#overrides"><a title="epydoc.apidoc.VariableDoc.overrides" class="py-name" href="#" onclick="return doclink('link-256', 'overrides', 'link-256'); [...]
+<a name="L710"></a><tt class="py-lineno"> 710</tt>  <tt class="py-line"> </tt>
+<a name="L711"></a><tt class="py-lineno"> 711</tt>  <tt class="py-line">        <tt class="py-comment"># nb: this gives the containing section, not a reference</tt> </tt>
+<a name="L712"></a><tt class="py-lineno"> 712</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># directly to the function.</tt> </tt>
+<a name="L713"></a><tt class="py-lineno"> 713</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">is_inherited</tt><tt class="py-op">:</tt> </tt>
+<a name="L714"></a><tt class="py-lineno"> 714</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'    \\label{%s}\n'</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-258" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.label" class="py-name" href="#" onclick="return doclink('link-258', 'label', 'link-111');">label</a></tt><tt class="py-op">(</tt><tt class="py-name">fun [...]
+<a name="L715"></a><tt class="py-lineno"> 715</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'    %s\n'</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-259" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.indexterm" class="py-name" href="#" onclick="return doclink('link-259', 'indexterm', 'link-107');">indexterm</a></tt><tt class="py-op">(</tt><tt class="py-name"> [...]
+<a name="L716"></a><tt class="py-lineno"> 716</tt>  <tt class="py-line"> </tt>
+<a name="L717"></a><tt class="py-lineno"> 717</tt>  <tt class="py-line">        <tt class="py-comment"># Start box for this function.</tt> </tt>
+<a name="L718"></a><tt class="py-lineno"> 718</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'    \\vspace{0.5ex}\n\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L719"></a><tt class="py-lineno"> 719</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'\\hspace{.8\\funcindent}'</tt><tt class="py-op">)</tt> </tt>
+<a name="L720"></a><tt class="py-lineno"> 720</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'\\begin{boxedminipage}{\\funcwidth}\n\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L721"></a><tt class="py-lineno"> 721</tt>  <tt class="py-line"> </tt>
+<a name="L722"></a><tt class="py-lineno"> 722</tt>  <tt class="py-line">        <tt class="py-comment"># Function signature.</tt> </tt>
+<a name="L723"></a><tt class="py-lineno"> 723</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'    %s\n\n'</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-260" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.function_signature()=epydoc.docwriter.html.HTMLWriter-class.html#function_signature,Method epydoc.docwriter.latex.LatexWriter.funct [...]
+epydoc.docwriter.latex.LatexWriter.function_signature" class="py-name" href="#" onclick="return doclink('link-260', 'function_signature', 'link-260');">function_signature</a></tt><tt class="py-op">(</tt><tt class="py-name">var_doc</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L724"></a><tt class="py-lineno"> 724</tt>  <tt class="py-line"> </tt>
+<a name="L725"></a><tt class="py-lineno"> 725</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">func_doc</tt><tt class="py-op">.</tt><tt id="link-261" class="py-name" targets="Variable epydoc.apidoc.APIDoc.docstring=epydoc.apidoc.APIDoc-class.html#docstring"><a title="epydoc.apidoc.APIDoc.docstring" class="py-name" href="#" onclick="return doclink('link-261', 'docstring', 'link-261');">docstring</a></tt> <tt class="py-keyword">no [...]
+<a name="L726"></a><tt class="py-lineno"> 726</tt>  <tt class="py-line">            <tt class="py-name">func_doc</tt><tt class="py-op">.</tt><tt id="link-263" class="py-name"><a title="epydoc.apidoc.APIDoc.docstring" class="py-name" href="#" onclick="return doclink('link-263', 'docstring', 'link-261');">docstring</a></tt><tt class="py-op">.</tt><tt class="py-name">strip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-string">''</tt><tt class=" [...]
+<a name="L727"></a><tt class="py-lineno"> 727</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'    \\vspace{-1.5ex}\n\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L728"></a><tt class="py-lineno"> 728</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'    \\rule{\\textwidth}{0.5\\fboxrule}\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L729"></a><tt class="py-lineno"> 729</tt>  <tt class="py-line">         </tt>
+<a name="L730"></a><tt class="py-lineno"> 730</tt>  <tt class="py-line">        <tt class="py-comment"># Description</tt> </tt>
+<a name="L731"></a><tt class="py-lineno"> 731</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">"\\setlength{\\parskip}{2ex}\n"</tt><tt class="py-op">)</tt> </tt>
+<a name="L732"></a><tt class="py-lineno"> 732</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">func_doc</tt><tt class="py-op">.</tt><tt id="link-264" class="py-name"><a title="epydoc.apidoc.APIDoc.descr
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-264', 'descr', 'link-112');">descr</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-265" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-265', 'UNKNOWN', 'link-113');">UNKNOWN</a></tt><tt class="py-op">)</tt><tt class="py- [...]
+<a name="L733"></a><tt class="py-lineno"> 733</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-266" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.docstring_to_latex" class="py-name" href="#" onclick="return doclink('link-266', 'docstring_to_latex', 'link-114');">docstring_to_latex</a></tt><tt class="py-op">(</tt><tt class="py-name">func_doc</tt><tt class="py-op">.</tt [...]
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-267', 'descr', 'link-112');">descr</a></tt><tt class="py-op">,</tt> <tt class="py-number">4</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L734"></a><tt class="py-lineno"> 734</tt>  <tt class="py-line"> </tt>
+<a name="L735"></a><tt class="py-lineno"> 735</tt>  <tt class="py-line">        <tt class="py-comment"># Parameters</tt> </tt>
+<a name="L736"></a><tt class="py-lineno"> 736</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">"\\setlength{\\parskip}{1ex}\n"</tt><tt class="py-op">)</tt> </tt>
+<a name="L737"></a><tt class="py-lineno"> 737</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">func_doc</tt><tt class="py-op">.</tt><tt id="link-268" class="py-name" targets="Variable epydoc.apidoc.RoutineDoc.arg_descrs=epydoc.apidoc.RoutineDoc-class.html#arg_descrs"><a title="epydoc.apidoc.RoutineDoc.arg_descrs" class="py-name" href="#" onclick="return doclink('link-268', 'arg_descrs', 'link-268');">arg_descrs</a></tt> <tt class="py-keyword">or</tt> < [...]
+<a name="L738"></a><tt class="py-lineno"> 738</tt>  <tt class="py-line">            <tt class="py-comment"># Find the longest name.</tt> </tt>
+<a name="L739"></a><tt class="py-lineno"> 739</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">longest</tt> <tt class="py-op">=</tt> <tt class="py-name">max</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">+</tt><tt class="py-op">[</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">n</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class=" [...]
+<a name="L740"></a><tt class="py-lineno"> 740</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">names</tt><tt class="py-op">,</tt> <tt class="py-name">descrs</tt> <tt class="py-keyword">in</tt> <tt class="py-name">func_doc</tt><tt class="py-op">.</tt><tt id="link-271" class="py-name"><a title="epydoc.apidoc.RoutineDoc.arg_descrs" class="py-name" href="#" onclick="return doclink('link-271', 'arg_descrs', 'link-268');">arg_descrs</a></tt><tt class="p [...]
+<a name="L741"></a><tt class="py-lineno"> 741</tt>  <tt class="py-line">                <tt class="py-name">longest</tt> <tt class="py-op">=</tt> <tt class="py-name">max</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">longest</tt><tt class="py-op">]</tt><tt class="py-op">+</tt><tt class="py-op">[</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">n</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">n</tt> <tt  [...]
+<a name="L742"></a><tt class="py-lineno"> 742</tt>  <tt class="py-line">            <tt class="py-comment"># Table header.</tt> </tt>
+<a name="L743"></a><tt class="py-lineno"> 743</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">' '</tt><tt class="py-op">*</tt><tt class="py-number">6</tt><tt class="py-op">+</tt><tt class="py-string">'\\textbf{Parameters}\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L744"></a><tt class="py-lineno"> 744</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'      \\vspace{-1ex}\n\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L745"></a><tt class="py-lineno"> 745</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">' '</tt><tt class="py-op">*</tt><tt class="py-number">6</tt><tt class="py-op">+</tt><tt class="py-string">'\\begin{quote}\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L746"></a><tt class="py-lineno"> 746</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'        \\begin{Ventry}{%s}\n\n'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">longest</tt><tt class="py-op">*</tt><tt class="py-string">'x'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L747"></a><tt class="py-lineno"> 747</tt>  <tt class="py-line">            <tt class="py-comment"># Add params that have @type but not @param info:</tt> </tt>
+<a name="L748"></a><tt class="py-lineno"> 748</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt id="link-272" class="py-name"><a title="epydoc.apidoc.RoutineDoc.arg_descrs" class="py-name" href="#" onclick="return doclink('link-272', 'arg_descrs', 'link-268');">arg_descrs</a></tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">func_doc</tt><tt class="py-op">.</tt><tt id="link-273" class="py-name"><a title="epydoc.apid [...]
+<a name="L749"></a><tt class="py-lineno"> 749</tt>  <tt class="py-line">            <tt class="py-name">args</tt> <tt class="py-op">=</tt> <tt class="py-name">set</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L750"></a><tt class="py-lineno"> 750</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">arg_names</tt><tt class="py-op">,</tt> <tt class="py-name">arg_descr</tt> <tt class="py-keyword">in</tt> <tt id="link-274" class="py-name"><a title="epydoc.apidoc.RoutineDoc.arg_descrs" class="py-name" href="#" onclick="return doclink('link-274', 'arg_descrs', 'link-268');">arg_descrs</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L751"></a><tt class="py-lineno"> 751</tt>  <tt class="py-line">                <tt class="py-name">args</tt><tt class="py-op">.</tt><tt class="py-name">update</tt><tt class="py-op">(</tt><tt class="py-name">arg_names</tt><tt class="py-op">)</tt> </tt>
+<a name="L752"></a><tt class="py-lineno"> 752</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt id="link-275" class="py-name" targets="Method epydoc.markup.Field.arg()=epydoc.markup.Field-class.html#arg"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-275', 'arg', 'link-275');">arg</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-276" class="py-name"><a title="epy [...]
+<a name="L753"></a><tt class="py-lineno"> 753</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt id="link-278" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-278', 'arg', 'link-275');">arg</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">args</tt><tt class="py-op">:</tt> </tt>
+<a name="L754"></a><tt class="py-lineno"> 754</tt>  <tt class="py-line">                    <tt id="link-279" class="py-name"><a title="epydoc.apidoc.RoutineDoc.arg_descrs" class="py-name" href="#" onclick="return doclink('link-279', 'arg_descrs', 'link-268');">arg_descrs</a></tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt> <tt class="py-op">(</tt><tt class="py-op">[</tt><tt id="link-280" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name [...]
+<a name="L755"></a><tt class="py-lineno"> 755</tt>  <tt class="py-line">            <tt class="py-comment"># Display params</tt> </tt>
+<a name="L756"></a><tt class="py-lineno"> 756</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">for</tt> <tt class="py-op">(</tt><tt class="py-name">arg_names</tt><tt class="py-op">,</tt> <tt class="py-name">arg_descr</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt id="link-281" class="py-name"><a title="epydoc.apidoc.RoutineDoc.arg_descrs" class="py-name" href="#" onclick="return doclink('link-281', 'arg_descrs', 'link-268');">arg_d [...]
+<a name="L757"></a><tt class="py-lineno"> 757</tt>  <tt class="py-line">                <tt class="py-name">arg_name</tt> <tt class="py-op">=</tt> <tt id="link-282" class="py-name"><a title="epydoc.util.plaintext_to_latex" class="py-name" href="#" onclick="return doclink('link-282', 'plaintext_to_latex', 'link-12');">plaintext_to_latex</a></tt><tt class="py-op">(</tt><tt class="py-string">', '</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py- [...]
+<a name="L758"></a><tt class="py-lineno"> 758</tt>  <tt class="py-line">                <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'%s\\item[%s]\n\n'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-string">' '</tt><tt class="py-op">*</tt><tt class="py-number">10</tt><tt class="py-op">,</tt> <tt class="py-name">arg_name</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L759"></a><tt class="py-lineno"> 759</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">arg_descr</tt><tt class="py-op">:</tt> </tt>
+<a name="L760"></a><tt class="py-lineno"> 760</tt>  <tt class="py-line">                    <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-283" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.docstring_to_latex" class="py-name" href="#" onclick="return doclink('link-283', 'docstring_to_latex', 'link-114');">docstring_to_latex</a></tt><tt class="py-op">(</tt><tt class="py-name">arg_descr</tt><tt class="py- [...]
+<a name="L761"></a><tt class="py-lineno"> 761</tt>  <tt class="py-line">                <tt class="py-keyword">for</tt> <tt class="py-name">arg_name</tt> <tt class="py-keyword">in</tt> <tt class="py-name">arg_names</tt><tt class="py-op">:</tt> </tt>
+<a name="L762"></a><tt class="py-lineno"> 762</tt>  <tt class="py-line">                    <tt class="py-name">arg_typ</tt> <tt class="py-op">=</tt> <tt class="py-name">func_doc</tt><tt class="py-op">.</tt><tt id="link-284" class="py-name"><a title="epydoc.apidoc.RoutineDoc.arg_types" class="py-name" href="#" onclick="return doclink('link-284', 'arg_types', 'link-269');">arg_types</a></tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-name">arg [...]
+<a name="L763"></a><tt class="py-lineno"> 763</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">arg_typ</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L764"></a><tt class="py-lineno"> 764</tt>  <tt class="py-line">                        <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">arg_names</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L765"></a><tt class="py-lineno"> 765</tt>  <tt class="py-line">                            <tt class="py-name">lhs</tt> <tt class="py-op">=</tt> <tt class="py-string">'type'</tt> </tt>
+<a name="L766"></a><tt class="py-lineno"> 766</tt>  <tt class="py-line">                        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L767"></a><tt class="py-lineno"> 767</tt>  <tt class="py-line">                            <tt class="py-name">lhs</tt> <tt class="py-op">=</tt> <tt class="py-string">'type of %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">arg_name</tt> </tt>
+<a name="L768"></a><tt class="py-lineno"> 768</tt>  <tt class="py-line">                        <tt class="py-name">rhs</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-285" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.docstring_to_latex" class="py-name" href="#" onclick="return doclink('link-285', 'docstring_to_latex', 'link-114');">docstring_to_latex</a></tt><tt class="py-op">(</tt><tt class="py-name">arg_typ</tt><tt class= [...]
+<a name="L769"></a><tt class="py-lineno"> 769</tt>  <tt class="py-line">                        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'%s{\\it (%s=%s)}\n\n'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-string">' '</tt><tt class="py-op">*</tt><tt class="py-number">12</tt><tt class="py-op">,</tt> <tt class="py-name">lhs</tt><tt class="py-op">,</tt> <tt class="py-name">rhs</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L770"></a><tt class="py-lineno"> 770</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'        \\end{Ventry}\n\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L771"></a><tt class="py-lineno"> 771</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">' '</tt><tt class="py-op">*</tt><tt class="py-number">6</tt><tt class="py-op">+</tt><tt class="py-string">'\\end{quote}\n\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L772"></a><tt class="py-lineno"> 772</tt>  <tt class="py-line">                 </tt>
+<a name="L773"></a><tt class="py-lineno"> 773</tt>  <tt class="py-line">        <tt class="py-comment"># Returns</tt> </tt>
+<a name="L774"></a><tt class="py-lineno"> 774</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">rdescr</tt> <tt class="py-op">=</tt> <tt class="py-name">func_doc</tt><tt class="py-op">.</tt><tt id="link-286" class="py-name" targets="Variable epydoc.apidoc.RoutineDoc.return_descr=epydoc.apidoc.RoutineDoc-class.html#return_descr,Method epydoc.docwriter.html.HTMLWriter.return_descr()=epydoc.docwriter.html.HTMLWriter-class.html#return_descr"><a title="epydoc.a [...]
+epydoc.docwriter.html.HTMLWriter.return_descr" class="py-name" href="#" onclick="return doclink('link-286', 'return_descr', 'link-286');">return_descr</a></tt> </tt>
+<a name="L775"></a><tt class="py-lineno"> 775</tt>  <tt class="py-line">        <tt class="py-name">rtype</tt> <tt class="py-op">=</tt> <tt class="py-name">func_doc</tt><tt class="py-op">.</tt><tt id="link-287" class="py-name" targets="Variable epydoc.apidoc.RoutineDoc.return_type=epydoc.apidoc.RoutineDoc-class.html#return_type,Method epydoc.docwriter.html.HTMLWriter.return_type()=epydoc.docwriter.html.HTMLWriter-class.html#return_type"><a title="epydoc.apidoc.RoutineDoc.return_type
+epydoc.docwriter.html.HTMLWriter.return_type" class="py-name" href="#" onclick="return doclink('link-287', 'return_type', 'link-287');">return_type</a></tt> </tt>
+<a name="L776"></a><tt class="py-lineno"> 776</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">rdescr</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-288" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-288', 'UNKNOWN', 'link-113');">UNKNOWN</a></tt><tt class="py-op">)</tt> <tt class="py- [...]
+<a name="L777"></a><tt class="py-lineno"> 777</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">' '</tt><tt class="py-op">*</tt><tt class="py-number">6</tt><tt class="py-op">+</tt><tt class="py-string">'\\textbf{Return Value}\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L778"></a><tt class="py-lineno"> 778</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'    \\vspace{-1ex}\n\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L779"></a><tt class="py-lineno"> 779</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">' '</tt><tt class="py-op">*</tt><tt class="py-number">6</tt><tt class="py-op">+</tt><tt class="py-string">'\\begin{quote}\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L780"></a><tt class="py-lineno"> 780</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">rdescr</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-290" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-290', 'UNKNOWN', 'link-113');">UNKNOWN</a></tt><tt class="py-op">)</tt><tt class=" [...]
+<a name="L781"></a><tt class="py-lineno"> 781</tt>  <tt class="py-line">                <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-291" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.docstring_to_latex" class="py-name" href="#" onclick="return doclink('link-291', 'docstring_to_latex', 'link-114');">docstring_to_latex</a></tt><tt class="py-op">(</tt><tt class="py-name">rdescr</tt><tt class="py-op">,</ [...]
+<a name="L782"></a><tt class="py-lineno"> 782</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">rtype</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-292" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-292', 'UNKNOWN', 'link-113');">UNKNOWN</a></tt><tt class="py-op">)</tt><tt clas [...]
+<a name="L783"></a><tt class="py-lineno"> 783</tt>  <tt class="py-line">                    <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">' '</tt><tt class="py-op">*</tt><tt class="py-number">6</tt><tt class="py-op">+</tt><tt class="py-string">'{\\it (type=%s)}\n\n'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L784"></a><tt class="py-lineno"> 784</tt>  <tt class="py-line">                        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-293" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.docstring_to_latex" class="py-name" href="#" onclick="return doclink('link-293', 'docstring_to_latex', 'link-114');">docstring_to_latex</a></tt><tt class="py-op">(</tt><tt class="py-name">rtype</tt><tt class="py-op">,</tt> <tt class="py-number">6</tt><tt class="py [...]
+<a name="L785"></a><tt class="py-lineno"> 785</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">rtype</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-294" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-294', 'UNKNOWN', 'link-113');">UNKNOWN</a></tt><tt class="py-op">)</tt><tt class= [...]
+<a name="L786"></a><tt class="py-lineno"> 786</tt>  <tt class="py-line">                <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-295" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.docstring_to_latex" class="py-name" href="#" onclick="return doclink('link-295', 'docstring_to_latex', 'link-114');">docstring_to_latex</a></tt><tt class="py-op">(</tt><tt class="py-name">rtype</tt><tt class="py-op">,</t [...]
+<a name="L787"></a><tt class="py-lineno"> 787</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">' '</tt><tt class="py-op">*</tt><tt class="py-number">6</tt><tt class="py-op">+</tt><tt class="py-string">'\\end{quote}\n\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L788"></a><tt class="py-lineno"> 788</tt>  <tt class="py-line"> </tt>
+<a name="L789"></a><tt class="py-lineno"> 789</tt>  <tt class="py-line">        <tt class="py-comment"># Raises</tt> </tt>
+<a name="L790"></a><tt class="py-lineno"> 790</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">func_doc</tt><tt class="py-op">.</tt><tt id="link-296" class="py-name" targets="Variable epydoc.apidoc.RoutineDoc.exception_descrs=epydoc.apidoc.RoutineDoc-class.html#exception_descrs"><a title="epydoc.apidoc.RoutineDoc.exception_descrs" class="py-name" href="#" onclick="return doclink('link-296', 'exception_descrs', 'link-296');"> [...]
+<a name="L791"></a><tt class="py-lineno"> 791</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">' '</tt><tt class="py-op">*</tt><tt class="py-number">6</tt><tt class="py-op">+</tt><tt class="py-string">'\\textbf{Raises}\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L792"></a><tt class="py-lineno"> 792</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'    \\vspace{-1ex}\n\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L793"></a><tt class="py-lineno"> 793</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">' '</tt><tt class="py-op">*</tt><tt class="py-number">6</tt><tt class="py-op">+</tt><tt class="py-string">'\\begin{quote}\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L794"></a><tt class="py-lineno"> 794</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'        \\begin{description}\n\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L795"></a><tt class="py-lineno"> 795</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt id="link-298" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-298', 'name', 'link-206');">name</a></tt><tt class="py-op">,</tt> <tt id="link-299" class="py-name"><a title="epydoc.apidoc.APIDoc.descr
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-299', 'descr', 'link-112');">descr</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">func_doc</tt><tt class="py-op">.</tt><tt id="link-300" class="py-name"><a title="epydoc.apidoc.RoutineDoc.exception_descrs" class="py-name" href="#" onclick="return doclink('link-300', 'exception_descrs', 'link-296');">exception_descrs</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L796"></a><tt class="py-lineno"> 796</tt>  <tt class="py-line">                <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">' '</tt><tt class="py-op">*</tt><tt class="py-number">10</tt><tt class="py-op">+</tt><tt class="py-string">'\\item[\\texttt{%s}]\n\n'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L797"></a><tt class="py-lineno"> 797</tt>  <tt class="py-line">                    <tt id="link-301" class="py-name"><a title="epydoc.util.plaintext_to_latex" class="py-name" href="#" onclick="return doclink('link-301', 'plaintext_to_latex', 'link-12');">plaintext_to_latex</a></tt><tt class="py-op">(</tt><tt class="py-string">'%s'</tt> <tt class="py-op">%</tt> <tt id="link-302" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doc [...]
+<a name="L798"></a><tt class="py-lineno"> 798</tt>  <tt class="py-line">                <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-303" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.docstring_to_latex" class="py-name" href="#" onclick="return doclink('link-303', 'docstring_to_latex', 'link-114');">docstring_to_latex</a></tt><tt class="py-op">(</tt><tt id="link-304" class="py-name"><a title="epydoc.a [...]
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-304', 'descr', 'link-112');">descr</a></tt><tt class="py-op">,</tt> <tt class="py-number">10</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L799"></a><tt class="py-lineno"> 799</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'        \\end{description}\n\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L800"></a><tt class="py-lineno"> 800</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">' '</tt><tt class="py-op">*</tt><tt class="py-number">6</tt><tt class="py-op">+</tt><tt class="py-string">'\\end{quote}\n\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L801"></a><tt class="py-lineno"> 801</tt>  <tt class="py-line"> </tt>
+<a name="L802"></a><tt class="py-lineno"> 802</tt>  <tt class="py-line">        <tt class="py-comment">## Overrides</tt> </tt>
+<a name="L803"></a><tt class="py-lineno"> 803</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-305" class="py-name"><a title="epydoc.apidoc.VariableDoc.overrides" class="py-name" href="#" onclick="return doclink('link-305', 'overrides', 'link-256');">overrides</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">No [...]
+<a name="L804"></a><tt class="py-lineno"> 804</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'      Overrides: '</tt> <tt class="py-op">+</tt> </tt>
+<a name="L805"></a><tt class="py-lineno"> 805</tt>  <tt class="py-line">                <tt id="link-307" class="py-name"><a title="epydoc.util.plaintext_to_latex" class="py-name" href="#" onclick="return doclink('link-307', 'plaintext_to_latex', 'link-12');">plaintext_to_latex</a></tt><tt class="py-op">(</tt><tt class="py-string">'%s'</tt><tt class="py-op">%</tt><tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-308" class="py-name"><a title="epydoc.apidoc.VariableDoc. [...]
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-309', 'canonical_name', 'link-44');">canonical_name</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L806"></a><tt class="py-lineno"> 806</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">func_doc</tt><tt class="py-op">.</tt><tt id="link-310" class="py-name"><a title="epydoc.apidoc.APIDoc.docstring" class="py-name" href="#" onclick="return doclink('link-310', 'docstring', 'link-261');">docstring</a></tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt  [...]
+<a name="L807"></a><tt class="py-lineno"> 807</tt>  <tt class="py-line">                <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-312" class="py-name"><a title="epydoc.apidoc.VariableDoc.overrides" class="py-name" href="#" onclick="return doclink('link-312', 'overrides', 'link-256');">overrides</a></tt><tt class="py-op">.</tt><tt id="link-313" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-313', [...]
+<a name="L808"></a><tt class="py-lineno"> 808</tt>  <tt class="py-line">                <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">' \textit{(inherited documentation)}'</tt><tt class="py-op">)</tt> </tt>
+<a name="L809"></a><tt class="py-lineno"> 809</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'\n\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L810"></a><tt class="py-lineno"> 810</tt>  <tt class="py-line"> </tt>
+<a name="L811"></a><tt class="py-lineno"> 811</tt>  <tt class="py-line">        <tt class="py-comment"># Add version, author, warnings, requirements, notes, etc.</tt> </tt>
+<a name="L812"></a><tt class="py-lineno"> 812</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-316" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_standard_fields
+epydoc.docwriter.latex.LatexWriter.write_standard_fields" class="py-name" href="#" onclick="return doclink('link-316', 'write_standard_fields', 'link-116');">write_standard_fields</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-name">func_doc</tt><tt class="py-op">)</tt> </tt>
+<a name="L813"></a><tt class="py-lineno"> 813</tt>  <tt class="py-line"> </tt>
+<a name="L814"></a><tt class="py-lineno"> 814</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'    \\end{boxedminipage}\n\n'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L815"></a><tt class="py-lineno"> 815</tt>  <tt class="py-line"> </tt>
+<a name="LatexWriter.function_signature"></a><div id="LatexWriter.function_signature-def"><a name="L816"></a><tt class="py-lineno"> 816</tt> <a class="py-toggle" href="#" id="LatexWriter.function_signature-toggle" onclick="return toggle('LatexWriter.function_signature');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.latex.LatexWriter-class.html#function_signature">function_signature</a><tt class="py-op">(</tt><tt class="py-par [...]
+</div><div id="LatexWriter.function_signature-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="LatexWriter.function_signature-expanded"><a name="L817"></a><tt class="py-lineno"> 817</tt>  <tt class="py-line">        <tt class="py-name">func_doc</tt> <tt class="py-op">=</tt> <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-317" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-3 [...]
+<a name="L818"></a><tt class="py-lineno"> 818</tt>  <tt class="py-line">        <tt class="py-name">func_name</tt> <tt class="py-op">=</tt> <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-318" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-318', 'name', 'link-206');">name</a></tt> </tt>
+<a name="L819"></a><tt class="py-lineno"> 819</tt>  <tt class="py-line">         </tt>
+<a name="L820"></a><tt class="py-lineno"> 820</tt>  <tt class="py-line">        <tt class="py-comment"># This should never happen, but just in case:</tt> </tt>
+<a name="L821"></a><tt class="py-lineno"> 821</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">func_doc</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-319" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-319', 'UNKNOWN', 'link-113');">UNKNOWN</a></tt><tt class="py-op">)</tt><tt class="py-op" [...]
+<a name="L822"></a><tt class="py-lineno"> 822</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-string">'\\raggedright \\textbf{%s}(...)'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L823"></a><tt class="py-lineno"> 823</tt>  <tt class="py-line">                    <tt id="link-320" class="py-name"><a title="epydoc.util.plaintext_to_latex" class="py-name" href="#" onclick="return doclink('link-320', 'plaintext_to_latex', 'link-12');">plaintext_to_latex</a></tt><tt class="py-op">(</tt><tt class="py-name">func_name</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L824"></a><tt class="py-lineno"> 824</tt>  <tt class="py-line">             </tt>
+<a name="L825"></a><tt class="py-lineno"> 825</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">func_doc</tt><tt class="py-op">.</tt><tt id="link-321" class="py-name" targets="Variable epydoc.apidoc.RoutineDoc.posargs=epydoc.apidoc.RoutineDoc-class.html#posargs"><a title="epydoc.apidoc.RoutineDoc.posargs" class="py-name" href="#" onclick="return doclink('link-321', 'posargs', 'link-321');">posargs</a></tt> <tt class="py-op">==</tt> <tt id="link-322" cla [...]
+<a name="L826"></a><tt class="py-lineno"> 826</tt>  <tt class="py-line">            <tt class="py-name">args</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-string">'...'</tt><tt class="py-op">]</tt> </tt>
+<a name="L827"></a><tt class="py-lineno"> 827</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L828"></a><tt class="py-lineno"> 828</tt>  <tt class="py-line">            <tt class="py-name">args</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-323" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.func_arg()=epydoc.docwriter.html.HTMLWriter-class.html#func_arg,Method epydoc.docwriter.latex.LatexWriter.func_arg()=epydoc.docwriter.latex.LatexWriter-class.html#func_arg"><a title="epydoc.doc [...]
+epydoc.docwriter.latex.LatexWriter.func_arg" class="py-name" href="#" onclick="return doclink('link-323', 'func_arg', 'link-323');">func_arg</a></tt><tt class="py-op">(</tt><tt id="link-324" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-324', 'name', 'link-206');">name</a></tt><tt class="py-op">,</tt> <tt class="py-name">default</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-op">(</tt><tt id="l [...]
+<a name="L829"></a><tt class="py-lineno"> 829</tt>  <tt class="py-line">                    <tt class="py-keyword">in</tt> <tt class="py-name">zip</tt><tt class="py-op">(</tt><tt class="py-name">func_doc</tt><tt class="py-op">.</tt><tt id="link-326" class="py-name"><a title="epydoc.apidoc.RoutineDoc.posargs" class="py-name" href="#" onclick="return doclink('link-326', 'posargs', 'link-321');">posargs</a></tt><tt class="py-op">,</tt> <tt class="py-name">func_doc</tt><tt class="py-op">.</t [...]
+<a name="L830"></a><tt class="py-lineno"> 830</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">func_doc</tt><tt class="py-op">.</tt><tt id="link-328" class="py-name" targets="Variable epydoc.apidoc.RoutineDoc.vararg=epydoc.apidoc.RoutineDoc-class.html#vararg"><a title="epydoc.apidoc.RoutineDoc.vararg" class="py-name" href="#" onclick="return doclink('link-328', 'vararg', 'link-328');">vararg</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L831"></a><tt class="py-lineno"> 831</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">func_doc</tt><tt class="py-op">.</tt><tt id="link-329" class="py-name"><a title="epydoc.apidoc.RoutineDoc.vararg" class="py-name" href="#" onclick="return doclink('link-329', 'vararg', 'link-328');">vararg</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'...'</tt><tt class="py-op">:</tt> </tt>
+<a name="L832"></a><tt class="py-lineno"> 832</tt>  <tt class="py-line">                <tt class="py-name">args</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">'\\textit{...}'</tt><tt class="py-op">)</tt> </tt>
+<a name="L833"></a><tt class="py-lineno"> 833</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L834"></a><tt class="py-lineno"> 834</tt>  <tt class="py-line">                <tt class="py-name">args</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">'*\\textit{%s}'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L835"></a><tt class="py-lineno"> 835</tt>  <tt class="py-line">                            <tt id="link-330" class="py-name"><a title="epydoc.util.plaintext_to_latex" class="py-name" href="#" onclick="return doclink('link-330', 'plaintext_to_latex', 'link-12');">plaintext_to_latex</a></tt><tt class="py-op">(</tt><tt class="py-name">func_doc</tt><tt class="py-op">.</tt><tt id="link-331" class="py-name"><a title="epydoc.apidoc.RoutineDoc.vararg" class="py-name" href="#" onclick="r [...]
+<a name="L836"></a><tt class="py-lineno"> 836</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">func_doc</tt><tt class="py-op">.</tt><tt id="link-332" class="py-name" targets="Variable epydoc.apidoc.RoutineDoc.kwarg=epydoc.apidoc.RoutineDoc-class.html#kwarg"><a title="epydoc.apidoc.RoutineDoc.kwarg" class="py-name" href="#" onclick="return doclink('link-332', 'kwarg', 'link-332');">kwarg</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L837"></a><tt class="py-lineno"> 837</tt>  <tt class="py-line">            <tt class="py-name">args</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">'**\\textit{%s}'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L838"></a><tt class="py-lineno"> 838</tt>  <tt class="py-line">                        <tt id="link-333" class="py-name"><a title="epydoc.util.plaintext_to_latex" class="py-name" href="#" onclick="return doclink('link-333', 'plaintext_to_latex', 'link-12');">plaintext_to_latex</a></tt><tt class="py-op">(</tt><tt class="py-name">func_doc</tt><tt class="py-op">.</tt><tt id="link-334" class="py-name"><a title="epydoc.apidoc.RoutineDoc.kwarg" class="py-name" href="#" onclick="return [...]
+<a name="L839"></a><tt class="py-lineno"> 839</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-string">'\\raggedright \\textbf{%s}(%s)'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L840"></a><tt class="py-lineno"> 840</tt>  <tt class="py-line">                <tt class="py-op">(</tt><tt id="link-335" class="py-name"><a title="epydoc.util.plaintext_to_latex" class="py-name" href="#" onclick="return doclink('link-335', 'plaintext_to_latex', 'link-12');">plaintext_to_latex</a></tt><tt class="py-op">(</tt><tt class="py-name">func_name</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-string">', '</tt><tt class="py-op">.</tt><tt class="py-name" [...]
+</div><a name="L841"></a><tt class="py-lineno"> 841</tt>  <tt class="py-line"> </tt>
+<a name="LatexWriter.func_arg"></a><div id="LatexWriter.func_arg-def"><a name="L842"></a><tt class="py-lineno"> 842</tt> <a class="py-toggle" href="#" id="LatexWriter.func_arg-toggle" onclick="return toggle('LatexWriter.func_arg');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.latex.LatexWriter-class.html#func_arg">func_arg</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">n [...]
+</div><div id="LatexWriter.func_arg-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="LatexWriter.func_arg-expanded"><a name="L843"></a><tt class="py-lineno"> 843</tt>  <tt class="py-line">        <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-string">'\\textit{%s}'</tt> <tt class="py-op">%</tt> <tt id="link-336" class="py-name"><a title="epydoc.util.plaintext_to_latex" class="py-name" href="#" onclick="return doclink('link-336', 'plaintext_t [...]
+epydoc.docwriter.latex.LatexWriter._arg_name" class="py-name" href="#" onclick="return doclink('link-337', '_arg_name', 'link-337');">_arg_name</a></tt><tt class="py-op">(</tt><tt id="link-338" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-338', 'name', 'link-206');">name</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L844"></a><tt class="py-lineno"> 844</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">default</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L845"></a><tt class="py-lineno"> 845</tt>  <tt class="py-line">            <tt class="py-name">s</tt> <tt class="py-op">+=</tt> <tt class="py-string">'={\\tt %s}'</tt> <tt class="py-op">%</tt> <tt class="py-name">default</tt><tt class="py-op">.</tt><tt id="link-339" class="py-name" targets="Method epydoc.apidoc.ValueDoc.summary_pyval_repr()=epydoc.apidoc.ValueDoc-class.html#summary_pyval_repr"><a title="epydoc.apidoc.ValueDoc.summary_pyval_repr" class="py-name" href="#" onclick= [...]
+epydoc.markup.ParsedDocstring.to_latex
+epydoc.markup.epytext.ParsedEpytextDocstring.to_latex
+epydoc.markup.plaintext.ParsedPlaintextDocstring.to_latex
+epydoc.markup.restructuredtext.ParsedRstDocstring.to_latex" class="py-name" href="#" onclick="return doclink('link-340', 'to_latex', 'link-340');">to_latex</a></tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+<a name="L846"></a><tt class="py-lineno"> 846</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">s</tt> </tt>
+</div><a name="L847"></a><tt class="py-lineno"> 847</tt>  <tt class="py-line">     </tt>
+<a name="LatexWriter._arg_name"></a><div id="LatexWriter._arg_name-def"><a name="L848"></a><tt class="py-lineno"> 848</tt> <a class="py-toggle" href="#" id="LatexWriter._arg_name-toggle" onclick="return toggle('LatexWriter._arg_name');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.latex.LatexWriter-class.html#_arg_name">_arg_name</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-pa [...]
+</div><div id="LatexWriter._arg_name-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="LatexWriter._arg_name-expanded"><a name="L849"></a><tt class="py-lineno"> 849</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-341" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-341', 'arg', 'link-275');">arg</a></tt><tt class="py [...]
+<a name="L850"></a><tt class="py-lineno"> 850</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt id="link-342" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-342', 'arg', 'link-275');">arg</a></tt> </tt>
+<a name="L851"></a><tt class="py-lineno"> 851</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-343" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-343', 'arg', 'link-275');">arg</a></tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L852"></a><tt class="py-lineno"> 852</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">'(%s,)'</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-344" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter._arg_name
+epydoc.docwriter.latex.LatexWriter._arg_name" class="py-name" href="#" onclick="return doclink('link-344', '_arg_name', 'link-337');">_arg_name</a></tt><tt class="py-op">(</tt><tt id="link-345" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-345', 'arg', 'link-275');">arg</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L853"></a><tt class="py-lineno"> 853</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L854"></a><tt class="py-lineno"> 854</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">'(%s)'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-string">', '</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-346" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter._arg_name
+epydoc.docwriter.latex.LatexWriter._arg_name" class="py-name" href="#" onclick="return doclink('link-346', '_arg_name', 'link-337');">_arg_name</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">a</tt> <tt class="py-keyword">in</tt> <tt id="link-347" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-347', 'arg', 'link-275');">arg</a></tt><tt class="p [...]
+</div><a name="L855"></a><tt class="py-lineno"> 855</tt>  <tt class="py-line"> </tt>
+<a name="L856"></a><tt class="py-lineno"> 856</tt>  <tt class="py-line">    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L857"></a><tt class="py-lineno"> 857</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#{ Variable List</tt> </tt>
+<a name="L858"></a><tt class="py-lineno"> 858</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L859"></a><tt class="py-lineno"> 859</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-348" class="py-name" targets="Variable epydoc.docwriter.latex.LatexWriter._VAR_GROUP_HEADER=epydoc.docwriter.latex.LatexWriter-class.html#_VAR_GROUP_HEADER"><a title="epydoc.docwriter.latex.LatexWriter._VAR_GROUP_HEADER" class="py-name" href="#" onclick="return doclink('link-348', '_VAR_GROUP_HEADER', 'link-348');">_VAR_GROUP_HEADER</a></tt> <tt class="py-op">=</tt> <tt cl [...]
+<a name="L860"></a><tt class="py-lineno"> 860</tt>  <tt class="py-line"> </tt>
+<a name="L861"></a><tt class="py-lineno"> 861</tt>  <tt class="py-line">    <tt class="py-comment"># Also used for the property list.</tt> </tt>
+<a name="LatexWriter.write_var_list"></a><div id="LatexWriter.write_var_list-def"><a name="L862"></a><tt class="py-lineno"> 862</tt> <a class="py-toggle" href="#" id="LatexWriter.write_var_list-toggle" onclick="return toggle('LatexWriter.write_var_list');">-</a><tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.latex.LatexWriter-class.html#write_var_list">write_var_list</a><tt class="py-op">(</tt><tt class="py [...]
+</div><div id="LatexWriter.write_var_list-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="LatexWriter.write_var_list-expanded"><a name="L863"></a><tt class="py-lineno"> 863</tt>  <tt class="py-line">        <tt class="py-name">groups</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt id="link-349" class="py-name"><a title="epydoc.util.plaintext_to_latex" class="py-name" href="#" onclick="return doclink('link-349', 'plaintext_to_ [...]
+<a name="L864"></a><tt class="py-lineno"> 864</tt>  <tt class="py-line">                   <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-350" class="py-name"><a title="epydoc.apidoc.ClassDoc.select_variables
+epydoc.apidoc.ModuleDoc.select_variables" class="py-name" href="#" onclick="return doclink('link-350', 'select_variables', 'link-124');">select_variables</a></tt><tt class="py-op">(</tt><tt class="py-name">group</tt><tt class="py-op">=</tt><tt class="py-name">group_name</tt><tt class="py-op">,</tt> <tt class="py-name">imported</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> </tt>
+<a name="L865"></a><tt class="py-lineno"> 865</tt>  <tt class="py-line">                                        <tt class="py-name">value_type</tt><tt class="py-op">=</tt><tt class="py-name">value_type</tt><tt class="py-op">,</tt> </tt>
+<a name="L866"></a><tt class="py-lineno"> 866</tt>  <tt class="py-line">                                        <tt class="py-name">public</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_public_filter</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L867"></a><tt class="py-lineno"> 867</tt>  <tt class="py-line">                  <tt class="py-keyword">for</tt> <tt class="py-name">group_name</tt> <tt class="py-keyword">in</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-351" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.group_names" class="py-name" href="#" onclick="return doclink('link-351', 'group_names', 'link-167');">group_names</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class [...]
+<a name="L868"></a><tt class="py-lineno"> 868</tt>  <tt class="py-line"> </tt>
+<a name="L869"></a><tt class="py-lineno"> 869</tt>  <tt class="py-line">        <tt class="py-comment"># Discard any empty groups; and return if they're all empty.</tt> </tt>
+<a name="L870"></a><tt class="py-lineno"> 870</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">groups</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-name">g</tt><tt class="py-op">,</tt><tt class="py-name">vars</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-op">(</tt><tt class="py-name">g</tt><tt class="py-op">,</tt><tt class="py-name">vars</tt><tt class="py-op">)</tt> <tt class="py-k [...]
+<a name="L871"></a><tt class="py-lineno"> 871</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">groups</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> </tt>
+<a name="L872"></a><tt class="py-lineno"> 872</tt>  <tt class="py-line"> </tt>
+<a name="L873"></a><tt class="py-lineno"> 873</tt>  <tt class="py-line">        <tt class="py-comment"># Write a header.</tt> </tt>
+<a name="L874"></a><tt class="py-lineno"> 874</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-352" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.write_start_of" class="py-name" href="#" onclick="return doclink('link-352', 'write_start_of', 'link-82');">write_start_of</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-name">heading</tt><tt class="p [...]
+<a name="L875"></a><tt class="py-lineno"> 875</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'  '</tt><tt class="py-op">+</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-353" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.section
+epydoc.docwriter.plaintext.PlaintextWriter.section" class="py-name" href="#" onclick="return doclink('link-353', 'section', 'link-108');">section</a></tt><tt class="py-op">(</tt><tt class="py-name">heading</tt><tt class="py-op">,</tt> <tt class="py-name">seclevel</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L876"></a><tt class="py-lineno"> 876</tt>  <tt class="py-line"> </tt>
+<a name="L877"></a><tt class="py-lineno"> 877</tt>  <tt class="py-line">        <tt class="py-comment"># [xx] without this, there's a huge gap before the table -- why??</tt> </tt>
+<a name="L878"></a><tt class="py-lineno"> 878</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'    \\vspace{-1cm}\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L879"></a><tt class="py-lineno"> 879</tt>  <tt class="py-line">         </tt>
+<a name="L880"></a><tt class="py-lineno"> 880</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'\\hspace{\\varindent}'</tt><tt class="py-op">)</tt> </tt>
+<a name="L881"></a><tt class="py-lineno"> 881</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'\\begin{longtable}'</tt><tt class="py-op">)</tt> </tt>
+<a name="L882"></a><tt class="py-lineno"> 882</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'{|p{\\varnamewidth}|'</tt><tt class="py-op">)</tt> </tt>
+<a name="L883"></a><tt class="py-lineno"> 883</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'p{\\vardescrwidth}|l}\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L884"></a><tt class="py-lineno"> 884</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'\\cline{1-2}\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L885"></a><tt class="py-lineno"> 885</tt>  <tt class="py-line"> </tt>
+<a name="L886"></a><tt class="py-lineno"> 886</tt>  <tt class="py-line">        <tt class="py-comment"># Set up the headers & footer (this makes the table span</tt> </tt>
+<a name="L887"></a><tt class="py-lineno"> 887</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># multiple pages in a happy way).</tt> </tt>
+<a name="L888"></a><tt class="py-lineno"> 888</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'\\cline{1-2} '</tt><tt class="py-op">)</tt> </tt>
+<a name="L889"></a><tt class="py-lineno"> 889</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'\\centering \\textbf{Name} & '</tt><tt class="py-op">)</tt> </tt>
+<a name="L890"></a><tt class="py-lineno"> 890</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'\\centering \\textbf{Description}& \\\\\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L891"></a><tt class="py-lineno"> 891</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'\\cline{1-2}\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L892"></a><tt class="py-lineno"> 892</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'\\endhead'</tt><tt class="py-op">)</tt> </tt>
+<a name="L893"></a><tt class="py-lineno"> 893</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'\\cline{1-2}'</tt><tt class="py-op">)</tt> </tt>
+<a name="L894"></a><tt class="py-lineno"> 894</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'\\multicolumn{3}{r}{\\small\\textit{'</tt><tt class="py-op">)</tt> </tt>
+<a name="L895"></a><tt class="py-lineno"> 895</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'continued on next page}}\\\\'</tt><tt class="py-op">)</tt> </tt>
+<a name="L896"></a><tt class="py-lineno"> 896</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'\\endfoot'</tt><tt class="py-op">)</tt> </tt>
+<a name="L897"></a><tt class="py-lineno"> 897</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'\\cline{1-2}\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L898"></a><tt class="py-lineno"> 898</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'\\endlastfoot'</tt><tt class="py-op">)</tt> </tt>
+<a name="L899"></a><tt class="py-lineno"> 899</tt>  <tt class="py-line"> </tt>
+<a name="L900"></a><tt class="py-lineno"> 900</tt>  <tt class="py-line">        <tt class="py-comment"># Write a section for each group.</tt> </tt>
+<a name="L901"></a><tt class="py-lineno"> 901</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">grouped_inh_vars</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L902"></a><tt class="py-lineno"> 902</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt id="link-354" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-354', 'name', 'link-206');">name</a></tt><tt class="py-op">,</tt> <tt class="py-name">var_docs</tt> <tt class="py-keyword">in</tt> <tt class="py-name">groups</tt><tt class="py-op">:</tt> </tt>
+<a name="L903"></a><tt class="py-lineno"> 903</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-355" class="py-name" targets="Method epydoc.docwriter.latex.LatexWriter.write_var_group()=epydoc.docwriter.latex.LatexWriter-class.html#write_var_group"><a title="epydoc.docwriter.latex.LatexWriter.write_var_group" class="py-name" href="#" onclick="return doclink('link-355', 'write_var_group', 'link-355');">write_var_group</a></tt><tt class [...]
+<a name="L904"></a><tt class="py-lineno"> 904</tt>  <tt class="py-line"> </tt>
+<a name="L905"></a><tt class="py-lineno"> 905</tt>  <tt class="py-line">        <tt class="py-comment"># Write a section for each inheritance pseudo-group (used if</tt> </tt>
+<a name="L906"></a><tt class="py-lineno"> 906</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># inheritance=='grouped')</tt> </tt>
+<a name="L907"></a><tt class="py-lineno"> 907</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">grouped_inh_vars</tt><tt class="py-op">:</tt> </tt>
+<a name="L908"></a><tt class="py-lineno"> 908</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">base</tt> <tt class="py-keyword">in</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-357" class="py-name"><a title="epydoc.apidoc.ClassDoc.mro" class="py-name" href="#" onclick="return doclink('link-357', 'mro', 'link-231');">mro</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L909"></a><tt class="py-lineno"> 909</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">base</tt> <tt class="py-keyword">in</tt> <tt class="py-name">grouped_inh_vars</tt><tt class="py-op">:</tt> </tt>
+<a name="L910"></a><tt class="py-lineno"> 910</tt>  <tt class="py-line">                    <tt class="py-name">hdr</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">'Inherited from %s'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L911"></a><tt class="py-lineno"> 911</tt>  <tt class="py-line">                           <tt id="link-358" class="py-name"><a title="epydoc.util.plaintext_to_latex" class="py-name" href="#" onclick="return doclink('link-358', 'plaintext_to_latex', 'link-12');">plaintext_to_latex</a></tt><tt class="py-op">(</tt><tt class="py-string">'%s'</tt> <tt class="py-op">%</tt> <tt class="py-name">base</tt><tt class="py-op">.</tt><tt id="link-359" class="py-name"><a title="epydoc.apidoc.Ge [...]
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-359', 'canonical_name', 'link-44');">canonical_name</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L912"></a><tt class="py-lineno"> 912</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_crossref</tt> <tt class="py-keyword">and</tt> <tt class="py-name">base</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">class_set</tt><tt class="py-op">:</tt> </tt>
+<a name="L913"></a><tt class="py-lineno"> 913</tt>  <tt class="py-line">                        <tt class="py-name">hdr</tt> <tt class="py-op">+=</tt> <tt class="py-op">(</tt><tt class="py-string">' \\textit{(Section \\ref{%s})}'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L914"></a><tt class="py-lineno"> 914</tt>  <tt class="py-line">                                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-360" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.label" class="py-name" href="#" onclick="return doclink('link-360', 'label', 'link-111');">label</a></tt><tt class="py-op">(</tt><tt class="py-name">base</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L915"></a><tt class="py-lineno"> 915</tt>  <tt class="py-line">                    <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-361" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter._VAR_GROUP_HEADER" class="py-name" href="#" onclick="return doclink('link-361', '_VAR_GROUP_HEADER', 'link-348');">_VAR_GROUP_HEADER</a></tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">hdr</ [...]
+<a name="L916"></a><tt class="py-lineno"> 916</tt>  <tt class="py-line">                    <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'\\cline{1-2}\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L917"></a><tt class="py-lineno"> 917</tt>  <tt class="py-line">                    <tt class="py-keyword">for</tt> <tt class="py-name">var_doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">grouped_inh_vars</tt><tt class="py-op">[</tt><tt class="py-name">base</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L918"></a><tt class="py-lineno"> 918</tt>  <tt class="py-line">                        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt class="py-name">value3</tt><tt class="py-op">,</tt> <tt id="link-362" class="py-name" targets="Class epydoc.apidoc.PropertyDoc=epydoc.apidoc.PropertyDoc-class.html"><a title="epydoc.apidoc.PropertyDoc" class="py-name" href="#" onclick="return doc [...]
+<a name="L919"></a><tt class="py-lineno"> 919</tt>  <tt class="py-line">                            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-363" class="py-name" targets="Method epydoc.docwriter.latex.LatexWriter.write_property_list_line()=epydoc.docwriter.latex.LatexWriter-class.html#write_property_list_line"><a title="epydoc.docwriter.latex.LatexWriter.write_property_list_line" class="py-name" href="#" onclick="return doclink('link-363', 'write_property_list_li [...]
+<a name="L920"></a><tt class="py-lineno"> 920</tt>  <tt class="py-line">                        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L921"></a><tt class="py-lineno"> 921</tt>  <tt class="py-line">                            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-364" class="py-name" targets="Method epydoc.docwriter.latex.LatexWriter.write_var_list_line()=epydoc.docwriter.latex.LatexWriter-class.html#write_var_list_line"><a title="epydoc.docwriter.latex.LatexWriter.write_var_list_line" class="py-name" href="#" onclick="return doclink('link-364', 'write_var_list_line', 'link-364');">w [...]
+<a name="L922"></a><tt class="py-lineno"> 922</tt>  <tt class="py-line">     </tt>
+<a name="L923"></a><tt class="py-lineno"> 923</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'\\end{longtable}\n\n'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L924"></a><tt class="py-lineno"> 924</tt>  <tt class="py-line">         </tt>
+<a name="LatexWriter.write_var_group"></a><div id="LatexWriter.write_var_group-def"><a name="L925"></a><tt class="py-lineno"> 925</tt> <a class="py-toggle" href="#" id="LatexWriter.write_var_group-toggle" onclick="return toggle('LatexWriter.write_var_group');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.latex.LatexWriter-class.html#write_var_group">write_var_group</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt c [...]
+</div><div id="LatexWriter.write_var_group-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="LatexWriter.write_var_group-expanded"><a name="L926"></a><tt class="py-lineno"> 926</tt>  <tt class="py-line">        <tt class="py-comment"># Split up the var_docs list, according to the way each var</tt> </tt>
+<a name="L927"></a><tt class="py-lineno"> 927</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># should be displayed:</tt> </tt>
+<a name="L928"></a><tt class="py-lineno"> 928</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#   - listed_inh_vars -- for listed inherited variables.</tt> </tt>
+<a name="L929"></a><tt class="py-lineno"> 929</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#   - grouped_inh_vars -- for grouped inherited variables.</tt> </tt>
+<a name="L930"></a><tt class="py-lineno"> 930</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#   - normal_vars -- for all other variables.</tt> </tt>
+<a name="L931"></a><tt class="py-lineno"> 931</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">listed_inh_vars</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L932"></a><tt class="py-lineno"> 932</tt>  <tt class="py-line">        <tt class="py-name">normal_vars</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L933"></a><tt class="py-lineno"> 933</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">var_doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">var_docs</tt><tt class="py-op">:</tt> </tt>
+<a name="L934"></a><tt class="py-lineno"> 934</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-365" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-365', 'container', 'link-237');">container</a></tt> <tt class="py-op">!=</tt> <tt class="py-name">doc</tt><tt class="py-op">:</tt> </tt>
+<a name="L935"></a><tt class="py-lineno"> 935</tt>  <tt class="py-line">                <tt class="py-name">base</tt> <tt class="py-op">=</tt> <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-366" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-366', 'container', 'link-237');">container</a></tt> </tt>
+<a name="L936"></a><tt class="py-lineno"> 936</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">base</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">class_set</tt> <tt class="py-keyword">or</tt> </tt>
+<a name="L937"></a><tt class="py-lineno"> 937</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_inheritance</tt> <tt class="py-op">==</tt> <tt class="py-string">'listed'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L938"></a><tt class="py-lineno"> 938</tt>  <tt class="py-line">                    <tt class="py-name">listed_inh_vars</tt><tt class="py-op">.</tt><tt class="py-name">setdefault</tt><tt class="py-op">(</tt><tt class="py-name">base</tt><tt class="py-op">,</tt><tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">var_doc</tt><tt class="py-op">)</tt> </tt>
+<a name="L939"></a><tt class="py-lineno"> 939</tt>  <tt class="py-line">                <tt class="py-keyword">elif</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_inheritance</tt> <tt class="py-op">==</tt> <tt class="py-string">'grouped'</tt><tt class="py-op">:</tt> </tt>
+<a name="L940"></a><tt class="py-lineno"> 940</tt>  <tt class="py-line">                    <tt class="py-name">grouped_inh_vars</tt><tt class="py-op">.</tt><tt class="py-name">setdefault</tt><tt class="py-op">(</tt><tt class="py-name">base</tt><tt class="py-op">,</tt><tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">var_doc</tt><tt class="py-op">)</tt> </tt>
+<a name="L941"></a><tt class="py-lineno"> 941</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L942"></a><tt class="py-lineno"> 942</tt>  <tt class="py-line">                    <tt class="py-name">normal_vars</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">var_doc</tt><tt class="py-op">)</tt> </tt>
+<a name="L943"></a><tt class="py-lineno"> 943</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L944"></a><tt class="py-lineno"> 944</tt>  <tt class="py-line">                <tt class="py-name">normal_vars</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">var_doc</tt><tt class="py-op">)</tt> </tt>
+<a name="L945"></a><tt class="py-lineno"> 945</tt>  <tt class="py-line">             </tt>
+<a name="L946"></a><tt class="py-lineno"> 946</tt>  <tt class="py-line">        <tt class="py-comment"># Write a header for the group.</tt> </tt>
+<a name="L947"></a><tt class="py-lineno"> 947</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt id="link-367" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-367', 'name', 'link-206');">name</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L948"></a><tt class="py-lineno"> 948</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-368" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter._VAR_GROUP_HEADER" class="py-name" href="#" onclick="return doclink('link-368', '_VAR_GROUP_HEADER', 'link-348');">_VAR_GROUP_HEADER</a></tt> <tt class="py-op">%</tt> <tt id="link-369" class="py-name"><a title="epydoc.apidoc [...]
+<a name="L949"></a><tt class="py-lineno"> 949</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'\\cline{1-2}\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L950"></a><tt class="py-lineno"> 950</tt>  <tt class="py-line">        <tt class="py-comment"># Write an entry for each normal var:</tt> </tt>
+<a name="L951"></a><tt class="py-lineno"> 951</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">for</tt> <tt class="py-name">var_doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">normal_vars</tt><tt class="py-op">:</tt> </tt>
+<a name="L952"></a><tt class="py-lineno"> 952</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-370" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-370', 'value', 'link-126');">value</a></tt><tt class="py-op">,</tt> <tt id="link-371" class="py-name"><a title="epydoc.apidoc.Prop [...]
+<a name="L953"></a><tt class="py-lineno"> 953</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-372" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.write_property_list_line" class="py-name" href="#" onclick="return doclink('link-372', 'write_property_list_line', 'link-363');">write_property_list_line</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-name">var_doc</tt>< [...]
+<a name="L954"></a><tt class="py-lineno"> 954</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L955"></a><tt class="py-lineno"> 955</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-373" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.write_var_list_line" class="py-name" href="#" onclick="return doclink('link-373', 'write_var_list_line', 'link-364');">write_var_list_line</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-name">var_doc</tt><tt class="py-op [...]
+<a name="L956"></a><tt class="py-lineno"> 956</tt>  <tt class="py-line">        <tt class="py-comment"># Write a subsection for inherited vars:</tt> </tt>
+<a name="L957"></a><tt class="py-lineno"> 957</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">listed_inh_vars</tt><tt class="py-op">:</tt> </tt>
+<a name="L958"></a><tt class="py-lineno"> 958</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-374" class="py-name" targets="Method epydoc.docwriter.latex.LatexWriter.write_var_inheritance_list()=epydoc.docwriter.latex.LatexWriter-class.html#write_var_inheritance_list"><a title="epydoc.docwriter.latex.LatexWriter.write_var_inheritance_list" class="py-name" href="#" onclick="return doclink('link-374', 'write_var_inheritance_list', 'li [...]
+</div><a name="L959"></a><tt class="py-lineno"> 959</tt>  <tt class="py-line"> </tt>
+<a name="LatexWriter.write_var_inheritance_list"></a><div id="LatexWriter.write_var_inheritance_list-def"><a name="L960"></a><tt class="py-lineno"> 960</tt> <a class="py-toggle" href="#" id="LatexWriter.write_var_inheritance_list-toggle" onclick="return toggle('LatexWriter.write_var_inheritance_list');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.latex.LatexWriter-class.html#write_var_inheritance_list">write_var_inheritance_l [...]
+</div><div id="LatexWriter.write_var_inheritance_list-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="LatexWriter.write_var_inheritance_list-expanded"><a name="L961"></a><tt class="py-lineno"> 961</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">base</tt> <tt class="py-keyword">in</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-375" class="py-name"><a title="epydoc.apidoc.ClassDoc.mro" class="py-name" [...]
+<a name="L962"></a><tt class="py-lineno"> 962</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">base</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">listed_inh_vars</tt><tt class="py-op">:</tt> <tt class="py-keyword">continue</tt> </tt>
+<a name="L963"></a><tt class="py-lineno"> 963</tt>  <tt class="py-line">            <tt class="py-comment">#if str(base.canonical_name) == 'object': continue</tt> </tt>
+<a name="L964"></a><tt class="py-lineno"> 964</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">var_docs</tt> <tt class="py-op">=</tt> <tt class="py-name">listed_inh_vars</tt><tt class="py-op">[</tt><tt class="py-name">base</tt><tt class="py-op">]</tt> </tt>
+<a name="L965"></a><tt class="py-lineno"> 965</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_public_filter</tt><tt class="py-op">:</tt> </tt>
+<a name="L966"></a><tt class="py-lineno"> 966</tt>  <tt class="py-line">                <tt class="py-name">var_docs</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt id="link-376" class="py-name"><a title="epydoc.markup.restructuredtext._EpydocReader.v" class="py-name" href="#" onclick="return doclink('link-376', 'v', 'link-245');">v</a></tt> <tt class="py-keyword">for</tt> <tt id="link-377" class="py-name"><a title="epydoc.markup.restructuredtext._EpydocReader.v" class="py-name [...]
+<a name="L967"></a><tt class="py-lineno"> 967</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">var_docs</tt><tt class="py-op">:</tt> </tt>
+<a name="L968"></a><tt class="py-lineno"> 968</tt>  <tt class="py-line">                <tt class="py-name">hdr</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">'Inherited from %s'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L969"></a><tt class="py-lineno"> 969</tt>  <tt class="py-line">                       <tt id="link-380" class="py-name"><a title="epydoc.util.plaintext_to_latex" class="py-name" href="#" onclick="return doclink('link-380', 'plaintext_to_latex', 'link-12');">plaintext_to_latex</a></tt><tt class="py-op">(</tt><tt class="py-string">'%s'</tt> <tt class="py-op">%</tt> <tt class="py-name">base</tt><tt class="py-op">.</tt><tt id="link-381" class="py-name"><a title="epydoc.apidoc.Generi [...]
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-381', 'canonical_name', 'link-44');">canonical_name</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L970"></a><tt class="py-lineno"> 970</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_crossref</tt> <tt class="py-keyword">and</tt> <tt class="py-name">base</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">class_set</tt><tt class="py-op">:</tt> </tt>
+<a name="L971"></a><tt class="py-lineno"> 971</tt>  <tt class="py-line">                    <tt class="py-name">hdr</tt> <tt class="py-op">+=</tt> <tt class="py-op">(</tt><tt class="py-string">' \\textit{(Section \\ref{%s})}'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L972"></a><tt class="py-lineno"> 972</tt>  <tt class="py-line">                            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-382" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.label" class="py-name" href="#" onclick="return doclink('link-382', 'label', 'link-111');">label</a></tt><tt class="py-op">(</tt><tt class="py-name">base</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L973"></a><tt class="py-lineno"> 973</tt>  <tt class="py-line">                <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-383" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter._VAR_GROUP_HEADER" class="py-name" href="#" onclick="return doclink('link-383', '_VAR_GROUP_HEADER', 'link-348');">_VAR_GROUP_HEADER</a></tt> <tt class="py-op">%</tt> <tt class="py-name">hdr</tt><tt class="py-op">)</tt> </tt>
+<a name="L974"></a><tt class="py-lineno"> 974</tt>  <tt class="py-line">                <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'\\multicolumn{2}{|p{\\varwidth}|}{'</tt> </tt>
+<a name="L975"></a><tt class="py-lineno"> 975</tt>  <tt class="py-line">                    <tt class="py-string">'\\raggedright %s}\\\\\n'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L976"></a><tt class="py-lineno"> 976</tt>  <tt class="py-line">                    <tt class="py-string">', '</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">'%s'</tt> <tt class="py-op">%</tt> <tt id="link-384" class="py-name"><a title="epydoc.util.plaintext_to_latex" class="py-name" href="#" onclick="return doclink('link-384', 'plaintext_to_latex', 'link-12');">plaintext_to_latex</a></tt><tt class="p [...]
+<a name="L977"></a><tt class="py-lineno"> 977</tt>  <tt class="py-line">                               <tt class="py-keyword">for</tt> <tt class="py-name">var_doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">var_docs</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L978"></a><tt class="py-lineno"> 978</tt>  <tt class="py-line">                <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'\\cline{1-2}\n'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L979"></a><tt class="py-lineno"> 979</tt>  <tt class="py-line"> </tt>
+<a name="L980"></a><tt class="py-lineno"> 980</tt>  <tt class="py-line">         </tt>
+<a name="LatexWriter.write_var_list_line"></a><div id="LatexWriter.write_var_list_line-def"><a name="L981"></a><tt class="py-lineno"> 981</tt> <a class="py-toggle" href="#" id="LatexWriter.write_var_list_line-toggle" onclick="return toggle('LatexWriter.write_var_list_line');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.latex.LatexWriter-class.html#write_var_list_line">write_var_list_line</a><tt class="py-op">(</tt><tt class=" [...]
+</div><div id="LatexWriter.write_var_list_line-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="LatexWriter.write_var_list_line-expanded"><a name="L982"></a><tt class="py-lineno"> 982</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'\\raggedright '</tt><tt class="py-op">)</tt> </tt>
+<a name="L983"></a><tt class="py-lineno"> 983</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt id="link-386" class="py-name"><a title="epydoc.util.plaintext_to_latex" class="py-name" href="#" onclick="return doclink('link-386', 'plaintext_to_latex', 'link-12');">plaintext_to_latex</a></tt><tt class="py-op">(</tt><tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-387" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class [...]
+<a name="L984"></a><tt class="py-lineno"> 984</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">' & '</tt><tt class="py-op">)</tt> </tt>
+<a name="L985"></a><tt class="py-lineno"> 985</tt>  <tt class="py-line">        <tt class="py-name">has_descr</tt> <tt class="py-op">=</tt> <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-388" class="py-name"><a title="epydoc.apidoc.APIDoc.descr
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-388', 'descr', 'link-112');">descr</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-389" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-389', 'UNKNOWN', 'link-113');">UNKNOWN</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L986"></a><tt class="py-lineno"> 986</tt>  <tt class="py-line">        <tt class="py-name">has_type</tt> <tt class="py-op">=</tt> <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-390" class="py-name" targets="Variable epydoc.apidoc.PropertyDoc.type_descr=epydoc.apidoc.PropertyDoc-class.html#type_descr,Variable epydoc.apidoc.VariableDoc.type_descr=epydoc.apidoc.VariableDoc-class.html#type_descr,Method epydoc.docwriter.html.HTMLWriter.type_descr()=epydoc.docwri [...]
+epydoc.apidoc.VariableDoc.type_descr
+epydoc.docwriter.html.HTMLWriter.type_descr" class="py-name" href="#" onclick="return doclink('link-390', 'type_descr', 'link-390');">type_descr</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-391" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-391', 'UNKNOWN', 'link-113');">UNKNOWN</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L987"></a><tt class="py-lineno"> 987</tt>  <tt class="py-line">        <tt class="py-name">has_value</tt> <tt class="py-op">=</tt> <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-392" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-392', 'value', 'link-126');">value</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt id="link-393" class="py-name"><a title="epydoc.apidoc [...]
+<a name="L988"></a><tt class="py-lineno"> 988</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">has_type</tt> <tt class="py-keyword">or</tt> <tt class="py-name">has_value</tt><tt class="py-op">:</tt> </tt>
+<a name="L989"></a><tt class="py-lineno"> 989</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'\\raggedright '</tt><tt class="py-op">)</tt> </tt>
+<a name="L990"></a><tt class="py-lineno"> 990</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">has_descr</tt><tt class="py-op">:</tt> </tt>
+<a name="L991"></a><tt class="py-lineno"> 991</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-394" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.docstring_to_latex" class="py-name" href="#" onclick="return doclink('link-394', 'docstring_to_latex', 'link-114');">docstring_to_latex</a></tt><tt class="py-op">(</tt><tt class="py-name">var_doc</tt><tt class="py-op">.</tt> [...]
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-395', 'descr', 'link-112');">descr</a></tt><tt class="py-op">,</tt> <tt class="py-number">10</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">strip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L992"></a><tt class="py-lineno"> 992</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">has_type</tt> <tt class="py-keyword">or</tt> <tt class="py-name">has_value</tt><tt class="py-op">:</tt> <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'\n\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L993"></a><tt class="py-lineno"> 993</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">has_value</tt><tt class="py-op">:</tt> </tt>
+<a name="L994"></a><tt class="py-lineno"> 994</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'\\textbf{Value:} \n{\\tt %s}'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L995"></a><tt class="py-lineno"> 995</tt>  <tt class="py-line">                <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-396" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-396', 'value', 'link-126');">value</a></tt><tt class="py-op">.</tt><tt id="link-397" class="py-name"><a title="epydoc.apidoc.ValueDoc.summary_pyval_repr" class="py-name" href="#" onclick="return doclink('link-397', ' [...]
+epydoc.markup.ParsedDocstring.to_latex
+epydoc.markup.epytext.ParsedEpytextDocstring.to_latex
+epydoc.markup.plaintext.ParsedPlaintextDocstring.to_latex
+epydoc.markup.restructuredtext.ParsedRstDocstring.to_latex" class="py-name" href="#" onclick="return doclink('link-398', 'to_latex', 'link-340');">to_latex</a></tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L996"></a><tt class="py-lineno"> 996</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">has_type</tt><tt class="py-op">:</tt> </tt>
+<a name="L997"></a><tt class="py-lineno"> 997</tt>  <tt class="py-line">            <tt class="py-name">ptype</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-399" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.docstring_to_latex" class="py-name" href="#" onclick="return doclink('link-399', 'docstring_to_latex', 'link-114');">docstring_to_latex</a></tt><tt class="py-op">(</tt><tt class="py-name">var_doc</tt><tt class="py-op">.< [...]
+epydoc.apidoc.VariableDoc.type_descr
+epydoc.docwriter.html.HTMLWriter.type_descr" class="py-name" href="#" onclick="return doclink('link-400', 'type_descr', 'link-390');">type_descr</a></tt><tt class="py-op">,</tt> <tt class="py-number">12</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">strip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L998"></a><tt class="py-lineno"> 998</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'%s{\\it (type=%s)}'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-string">' '</tt><tt class="py-op">*</tt><tt class="py-number">12</tt><tt class="py-op">,</tt> <tt class="py-name">ptype</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L999"></a><tt class="py-lineno"> 999</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'&\\\\\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1000"></a><tt class="py-lineno">1000</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'\\cline{1-2}\n'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1001"></a><tt class="py-lineno">1001</tt>  <tt class="py-line"> </tt>
+<a name="LatexWriter.write_property_list_line"></a><div id="LatexWriter.write_property_list_line-def"><a name="L1002"></a><tt class="py-lineno">1002</tt> <a class="py-toggle" href="#" id="LatexWriter.write_property_list_line-toggle" onclick="return toggle('LatexWriter.write_property_list_line');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.latex.LatexWriter-class.html#write_property_list_line">write_property_list_line</a><tt  [...]
+</div><div id="LatexWriter.write_property_list_line-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="LatexWriter.write_property_list_line-expanded"><a name="L1003"></a><tt class="py-lineno">1003</tt>  <tt class="py-line">        <tt class="py-name">prop_doc</tt> <tt class="py-op">=</tt> <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-401" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return do [...]
+<a name="L1004"></a><tt class="py-lineno">1004</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'\\raggedright '</tt><tt class="py-op">)</tt> </tt>
+<a name="L1005"></a><tt class="py-lineno">1005</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt id="link-402" class="py-name"><a title="epydoc.util.plaintext_to_latex" class="py-name" href="#" onclick="return doclink('link-402', 'plaintext_to_latex', 'link-12');">plaintext_to_latex</a></tt><tt class="py-op">(</tt><tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-403" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" clas [...]
+<a name="L1006"></a><tt class="py-lineno">1006</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">' & '</tt><tt class="py-op">)</tt> </tt>
+<a name="L1007"></a><tt class="py-lineno">1007</tt>  <tt class="py-line">        <tt class="py-name">has_descr</tt> <tt class="py-op">=</tt> <tt class="py-name">prop_doc</tt><tt class="py-op">.</tt><tt id="link-404" class="py-name"><a title="epydoc.apidoc.APIDoc.descr
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-404', 'descr', 'link-112');">descr</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-405" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-405', 'UNKNOWN', 'link-113');">UNKNOWN</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1008"></a><tt class="py-lineno">1008</tt>  <tt class="py-line">        <tt class="py-name">has_type</tt> <tt class="py-op">=</tt> <tt class="py-name">prop_doc</tt><tt class="py-op">.</tt><tt id="link-406" class="py-name"><a title="epydoc.apidoc.PropertyDoc.type_descr
+epydoc.apidoc.VariableDoc.type_descr
+epydoc.docwriter.html.HTMLWriter.type_descr" class="py-name" href="#" onclick="return doclink('link-406', 'type_descr', 'link-390');">type_descr</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-407" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-407', 'UNKNOWN', 'link-113');">UNKNOWN</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1009"></a><tt class="py-lineno">1009</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">has_descr</tt> <tt class="py-keyword">or</tt> <tt class="py-name">has_type</tt><tt class="py-op">:</tt> </tt>
+<a name="L1010"></a><tt class="py-lineno">1010</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'\\raggedright '</tt><tt class="py-op">)</tt> </tt>
+<a name="L1011"></a><tt class="py-lineno">1011</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">has_descr</tt><tt class="py-op">:</tt> </tt>
+<a name="L1012"></a><tt class="py-lineno">1012</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-408" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.docstring_to_latex" class="py-name" href="#" onclick="return doclink('link-408', 'docstring_to_latex', 'link-114');">docstring_to_latex</a></tt><tt class="py-op">(</tt><tt class="py-name">prop_doc</tt><tt class="py-op">.</t [...]
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-409', 'descr', 'link-112');">descr</a></tt><tt class="py-op">,</tt> <tt class="py-number">10</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">strip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1013"></a><tt class="py-lineno">1013</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">has_type</tt><tt class="py-op">:</tt> <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'\n\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1014"></a><tt class="py-lineno">1014</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">has_type</tt><tt class="py-op">:</tt> </tt>
+<a name="L1015"></a><tt class="py-lineno">1015</tt>  <tt class="py-line">            <tt class="py-name">ptype</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-410" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.docstring_to_latex" class="py-name" href="#" onclick="return doclink('link-410', 'docstring_to_latex', 'link-114');">docstring_to_latex</a></tt><tt class="py-op">(</tt><tt class="py-name">prop_doc</tt><tt class="py-op"> [...]
+epydoc.apidoc.VariableDoc.type_descr
+epydoc.docwriter.html.HTMLWriter.type_descr" class="py-name" href="#" onclick="return doclink('link-411', 'type_descr', 'link-390');">type_descr</a></tt><tt class="py-op">,</tt> <tt class="py-number">12</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">strip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1016"></a><tt class="py-lineno">1016</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'%s{\\it (type=%s)}'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-string">' '</tt><tt class="py-op">*</tt><tt class="py-number">12</tt><tt class="py-op">,</tt> <tt class="py-name">ptype</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1017"></a><tt class="py-lineno">1017</tt>  <tt class="py-line">        <tt class="py-comment"># [xx] List the fget/fset/fdel functions?</tt> </tt>
+<a name="L1018"></a><tt class="py-lineno">1018</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'&\\\\\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1019"></a><tt class="py-lineno">1019</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'\\cline{1-2}\n'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1020"></a><tt class="py-lineno">1020</tt>  <tt class="py-line"> </tt>
+<a name="L1021"></a><tt class="py-lineno">1021</tt>  <tt class="py-line">    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L1022"></a><tt class="py-lineno">1022</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#{ Standard Fields</tt> </tt>
+<a name="L1023"></a><tt class="py-lineno">1023</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L1024"></a><tt class="py-lineno">1024</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L1025"></a><tt class="py-lineno">1025</tt>  <tt class="py-line">    <tt class="py-comment"># Copied from HTMLWriter:</tt> </tt>
+<a name="LatexWriter.write_standard_fields"></a><div id="LatexWriter.write_standard_fields-def"><a name="L1026"></a><tt class="py-lineno">1026</tt> <a class="py-toggle" href="#" id="LatexWriter.write_standard_fields-toggle" onclick="return toggle('LatexWriter.write_standard_fields');">-</a><tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.latex.LatexWriter-class.html#write_standard_fields">write_standard_fiel [...]
+</div><div id="LatexWriter.write_standard_fields-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="LatexWriter.write_standard_fields-expanded"><a name="L1027"></a><tt class="py-lineno">1027</tt>  <tt class="py-line">        <tt class="py-name">fields</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L1028"></a><tt class="py-lineno">1028</tt>  <tt class="py-line">        <tt class="py-name">field_values</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L1029"></a><tt class="py-lineno">1029</tt>  <tt class="py-line">         </tt>
+<a name="L1030"></a><tt class="py-lineno">1030</tt>  <tt class="py-line">        <tt class="py-comment">#if _sort_fields: fields = STANDARD_FIELD_NAMES [XX]</tt> </tt>
+<a name="L1031"></a><tt class="py-lineno">1031</tt>  <tt class="py-line"><tt class="py-comment"></tt>         </tt>
+<a name="L1032"></a><tt class="py-lineno">1032</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-op">(</tt><tt class="py-name">field</tt><tt class="py-op">,</tt> <tt id="link-412" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-412', 'arg', 'link-275');">arg</a></tt><tt class="py-op">,</tt> <tt id="link-413" class="py-name"><a title="epydoc.apidoc.APIDoc.descr
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-413', 'descr', 'link-112');">descr</a></tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-414" class="py-name" targets="Variable epydoc.apidoc.APIDoc.metadata=epydoc.apidoc.APIDoc-class.html#metadata"><a title="epydoc.apidoc.APIDoc.metadata" class="py-name" href="#" onclick="return doclink('link-414', 'metadata', 'li [...]
+<a name="L1033"></a><tt class="py-lineno">1033</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">field</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">field_values</tt><tt class="py-op">:</tt> </tt>
+<a name="L1034"></a><tt class="py-lineno">1034</tt>  <tt class="py-line">                <tt class="py-name">fields</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">field</tt><tt class="py-op">)</tt> </tt>
+<a name="L1035"></a><tt class="py-lineno">1035</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">field</tt><tt class="py-op">.</tt><tt class="py-name">takes_arg</tt><tt class="py-op">:</tt> </tt>
+<a name="L1036"></a><tt class="py-lineno">1036</tt>  <tt class="py-line">                <tt class="py-name">subfields</tt> <tt class="py-op">=</tt> <tt class="py-name">field_values</tt><tt class="py-op">.</tt><tt class="py-name">setdefault</tt><tt class="py-op">(</tt><tt class="py-name">field</tt><tt class="py-op">,</tt><tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
+<a name="L1037"></a><tt class="py-lineno">1037</tt>  <tt class="py-line">                <tt class="py-name">subfields</tt><tt class="py-op">.</tt><tt class="py-name">setdefault</tt><tt class="py-op">(</tt><tt id="link-415" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-415', 'arg', 'link-275');">arg</a></tt><tt class="py-op">,</tt><tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt [...]
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-416', 'descr', 'link-112');">descr</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1038"></a><tt class="py-lineno">1038</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1039"></a><tt class="py-lineno">1039</tt>  <tt class="py-line">                <tt class="py-name">field_values</tt><tt class="py-op">.</tt><tt class="py-name">setdefault</tt><tt class="py-op">(</tt><tt class="py-name">field</tt><tt class="py-op">,</tt><tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-417" class="py-name"><a title="epydoc.apidoc.APIDoc.descr
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-417', 'descr', 'link-112');">descr</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1040"></a><tt class="py-lineno">1040</tt>  <tt class="py-line"> </tt>
+<a name="L1041"></a><tt class="py-lineno">1041</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">field</tt> <tt class="py-keyword">in</tt> <tt class="py-name">fields</tt><tt class="py-op">:</tt> </tt>
+<a name="L1042"></a><tt class="py-lineno">1042</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">field</tt><tt class="py-op">.</tt><tt class="py-name">takes_arg</tt><tt class="py-op">:</tt> </tt>
+<a name="L1043"></a><tt class="py-lineno">1043</tt>  <tt class="py-line">                <tt class="py-keyword">for</tt> <tt id="link-418" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-418', 'arg', 'link-275');">arg</a></tt><tt class="py-op">,</tt> <tt class="py-name">descrs</tt> <tt class="py-keyword">in</tt> <tt class="py-name">field_values</tt><tt class="py-op">[</tt><tt class="py-name">field</tt><tt class="py-op">]</tt><tt c [...]
+<a name="L1044"></a><tt class="py-lineno">1044</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-419" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.write_standard_field()=epydoc.docwriter.html.HTMLWriter-class.html#write_standard_field,Method epydoc.docwriter.latex.LatexWriter.write_standard_field()=epydoc.docwriter.latex.LatexWriter-class.html#write_standard_field"><a title="epydoc.docwriter.html.HTMLWriter [...]
+epydoc.docwriter.latex.LatexWriter.write_standard_field" class="py-name" href="#" onclick="return doclink('link-419', 'write_standard_field', 'link-419');">write_standard_field</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt class="py-name">field</tt><tt class="py-op">,</tt> <tt class="py-name">descrs</tt><tt class="py-op">,</tt> <tt id="link-420" class="py-name"><a title="epydoc.markup.Field.ar [...]
+<a name="L1045"></a><tt class="py-lineno">1045</tt>  <tt class="py-line">                                               </tt>
+<a name="L1046"></a><tt class="py-lineno">1046</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1047"></a><tt class="py-lineno">1047</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-421" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_standard_field
+epydoc.docwriter.latex.LatexWriter.write_standard_field" class="py-name" href="#" onclick="return doclink('link-421', 'write_standard_field', 'link-419');">write_standard_field</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt class="py-name">field</tt><tt class="py-op">,</tt> <tt class="py-name">field_values</tt><tt class="py-op">[</tt><tt class="py-name">field</tt><tt class="py-op">]</tt><tt cla [...]
+</div><a name="L1048"></a><tt class="py-lineno">1048</tt>  <tt class="py-line"> </tt>
+<a name="LatexWriter.write_standard_field"></a><div id="LatexWriter.write_standard_field-def"><a name="L1049"></a><tt class="py-lineno">1049</tt> <a class="py-toggle" href="#" id="LatexWriter.write_standard_field-toggle" onclick="return toggle('LatexWriter.write_standard_field');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.latex.LatexWriter-class.html#write_standard_field">write_standard_field</a><tt class="py-op">(</tt><tt  [...]
+</div><div id="LatexWriter.write_standard_field-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="LatexWriter.write_standard_field-expanded"><a name="L1050"></a><tt class="py-lineno">1050</tt>  <tt class="py-line">        <tt class="py-name">singular</tt> <tt class="py-op">=</tt> <tt class="py-name">field</tt><tt class="py-op">.</tt><tt class="py-name">singular</tt> </tt>
+<a name="L1051"></a><tt class="py-lineno">1051</tt>  <tt class="py-line">        <tt class="py-name">plural</tt> <tt class="py-op">=</tt> <tt class="py-name">field</tt><tt class="py-op">.</tt><tt class="py-name">plural</tt> </tt>
+<a name="L1052"></a><tt class="py-lineno">1052</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-422" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-422', 'arg', 'link-275');">arg</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1053"></a><tt class="py-lineno">1053</tt>  <tt class="py-line">            <tt class="py-name">singular</tt> <tt class="py-op">+=</tt> <tt class="py-string">' (%s)'</tt> <tt class="py-op">%</tt> <tt id="link-423" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-423', 'arg', 'link-275');">arg</a></tt> </tt>
+<a name="L1054"></a><tt class="py-lineno">1054</tt>  <tt class="py-line">            <tt class="py-name">plural</tt> <tt class="py-op">+=</tt> <tt class="py-string">' (%s)'</tt> <tt class="py-op">%</tt> <tt id="link-424" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-424', 'arg', 'link-275');">arg</a></tt> </tt>
+<a name="L1055"></a><tt class="py-lineno">1055</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-425" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter._descrlist" class="py-name" href="#" onclick="return doclink('link-425', '_descrlist', 'link-148');">_descrlist</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id [...]
+<a name="L1056"></a><tt class="py-lineno">1056</tt>  <tt class="py-line">                            <tt class="py-name">field</tt><tt class="py-op">.</tt><tt class="py-name">singular</tt><tt class="py-op">,</tt> <tt class="py-name">field</tt><tt class="py-op">.</tt><tt class="py-name">plural</tt><tt class="py-op">,</tt> <tt class="py-name">field</tt><tt class="py-op">.</tt><tt class="py-name">short</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1057"></a><tt class="py-lineno">1057</tt>  <tt class="py-line">             </tt>
+<a name="LatexWriter._descrlist"></a><div id="LatexWriter._descrlist-def"><a name="L1058"></a><tt class="py-lineno">1058</tt> <a class="py-toggle" href="#" id="LatexWriter._descrlist-toggle" onclick="return toggle('LatexWriter._descrlist');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.latex.LatexWriter-class.html#_descrlist">_descrlist</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class [...]
+</div><div id="LatexWriter._descrlist-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="LatexWriter._descrlist-expanded"><a name="L1059"></a><tt class="py-lineno">1059</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">plural</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> <tt class="py-name">plural</tt> <tt class="py-op">=</tt> <tt class="py-name">singular</tt> </tt>
+<a name="L1060"></a><tt class="py-lineno">1060</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">items</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-string">''</tt> </tt>
+<a name="L1061"></a><tt class="py-lineno">1061</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">items</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt> <tt class="py-keyword">and</tt> <tt class="py-name">singular</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1062"></a><tt class="py-lineno">1062</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">'\\textbf{%s:} %s\n\n'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">singular</tt><tt class="py-op">,</tt> <tt class="py-name">items</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1063"></a><tt class="py-lineno">1063</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">short</tt><tt class="py-op">:</tt> </tt>
+<a name="L1064"></a><tt class="py-lineno">1064</tt>  <tt class="py-line">            <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-string">'\\textbf{%s:}\n'</tt> <tt class="py-op">%</tt> <tt class="py-name">plural</tt> </tt>
+<a name="L1065"></a><tt class="py-lineno">1065</tt>  <tt class="py-line">            <tt class="py-name">items</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">item</tt><tt class="py-op">.</tt><tt class="py-name">strip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">item</tt> <tt class="py-keyword">in</tt> <tt class="py-name">items</tt><tt class="py-op">]</tt> </tt>
+<a name="L1066"></a><tt class="py-lineno">1066</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">s</tt> <tt class="py-op">+</tt> <tt class="py-string">',\n    '</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">items</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-string">'\n\n'</tt> </tt>
+<a name="L1067"></a><tt class="py-lineno">1067</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1068"></a><tt class="py-lineno">1068</tt>  <tt class="py-line">            <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-string">'\\textbf{%s:}\n'</tt> <tt class="py-op">%</tt> <tt class="py-name">plural</tt> </tt>
+<a name="L1069"></a><tt class="py-lineno">1069</tt>  <tt class="py-line">            <tt class="py-name">s</tt> <tt class="py-op">+=</tt> <tt class="py-string">'\\begin{quote}\n'</tt> </tt>
+<a name="L1070"></a><tt class="py-lineno">1070</tt>  <tt class="py-line">            <tt class="py-name">s</tt> <tt class="py-op">+=</tt> <tt class="py-string">'  \\begin{itemize}\n\n  \item\n'</tt> </tt>
+<a name="L1071"></a><tt class="py-lineno">1071</tt>  <tt class="py-line">            <tt class="py-name">s</tt> <tt class="py-op">+=</tt> <tt class="py-string">'    \\setlength{\\parskip}{0.6ex}\n'</tt> </tt>
+<a name="L1072"></a><tt class="py-lineno">1072</tt>  <tt class="py-line">            <tt class="py-name">s</tt> <tt class="py-op">+=</tt> <tt class="py-string">'\n\n  \item '</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">items</tt><tt class="py-op">)</tt> </tt>
+<a name="L1073"></a><tt class="py-lineno">1073</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">s</tt> <tt class="py-op">+</tt> <tt class="py-string">'\n\n\\end{itemize}\n\n\\end{quote}\n\n'</tt> </tt>
+</div><a name="L1074"></a><tt class="py-lineno">1074</tt>  <tt class="py-line"> </tt>
+<a name="L1075"></a><tt class="py-lineno">1075</tt>  <tt class="py-line"> </tt>
+<a name="L1076"></a><tt class="py-lineno">1076</tt>  <tt class="py-line">    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L1077"></a><tt class="py-lineno">1077</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#{ Docstring -> LaTeX Conversion</tt> </tt>
+<a name="L1078"></a><tt class="py-lineno">1078</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L1079"></a><tt class="py-lineno">1079</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L1080"></a><tt class="py-lineno">1080</tt>  <tt class="py-line">    <tt class="py-comment"># We only need one linker, since we don't use context:</tt> </tt>
+<a name="LatexWriter._LatexDocstringLinker"></a><div id="LatexWriter._LatexDocstringLinker-def"><a name="L1081"></a><tt class="py-lineno">1081</tt> <a class="py-toggle" href="#" id="LatexWriter._LatexDocstringLinker-toggle" onclick="return toggle('LatexWriter._LatexDocstringLinker');">-</a><tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">class</tt> <a class="py-def-name" href="epydoc.docwriter.latex.LatexWriter._LatexDocstringLinker-class.html">_LatexDocstringLi [...]
+</div><div id="LatexWriter._LatexDocstringLinker-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="LatexWriter._LatexDocstringLinker-expanded"><a name="LatexWriter._LatexDocstringLinker.translate_indexterm"></a><div id="LatexWriter._LatexDocstringLinker.translate_indexterm-def"><a name="L1082"></a><tt class="py-lineno">1082</tt> <a class="py-toggle" href="#" id="LatexWriter._LatexDocstringLinker.translate_indexterm-toggle" onclick="return toggle('LatexWriter._L [...]
+</div><div id="LatexWriter._LatexDocstringLinker.translate_indexterm-collapsed" style="display:none;" pad="++++" indent="++++++++++++++++"></div><div id="LatexWriter._LatexDocstringLinker.translate_indexterm-expanded"><a name="L1083"></a><tt class="py-lineno">1083</tt>  <tt class="py-line">            <tt class="py-name">indexstr</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt class="py-string">r'["! [...]
+epydoc.markup.ParsedDocstring.to_latex
+epydoc.markup.epytext.ParsedEpytextDocstring.to_latex
+epydoc.markup.plaintext.ParsedPlaintextDocstring.to_latex
+epydoc.markup.restructuredtext.ParsedRstDocstring.to_latex" class="py-name" href="#" onclick="return doclink('link-428', 'to_latex', 'link-340');">to_latex</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1084"></a><tt class="py-lineno">1084</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-string">'\\index{%s}\\textit{%s}'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">indexstr</tt><tt class="py-op">,</tt> <tt class="py-name">indexstr</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="LatexWriter._LatexDocstringLinker.translate_identifier_xref"></a><div id="LatexWriter._LatexDocstringLinker.translate_identifier_xref-def"><a name="L1085"></a><tt class="py-lineno">1085</tt> <a class="py-toggle" href="#" id="LatexWriter._LatexDocstringLinker.translate_identifier_xref-toggle" onclick="return toggle('LatexWriter._LatexDocstringLinker.translate_identifier_xref');">-</a><tt class="py-line">        <tt class="py-keyword">def</tt> <a class="py-def-name" href="ep [...]
+</div><div id="LatexWriter._LatexDocstringLinker.translate_identifier_xref-collapsed" style="display:none;" pad="++++" indent="++++++++++++++++"></div><div id="LatexWriter._LatexDocstringLinker.translate_identifier_xref-expanded"><a name="L1086"></a><tt class="py-lineno">1086</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt id="link-429" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.label" class="py-name" href="#" onclick="return doclink('link-429', [...]
+epydoc.markup.doctest.DoctestColorizer.markup
+epydoc.markup.doctest.HTMLDoctestColorizer.markup
+epydoc.markup.doctest.LaTeXDoctestColorizer.markup
+epydoc.markup.doctest.XMLDoctestColorizer.markup" class="py-name" href="#" onclick="return doclink('link-431', 'markup', 'link-9');">markup</a></tt><tt class="py-op">.</tt><tt id="link-432" class="py-name"><a title="epydoc.util.plaintext_to_latex" class="py-name" href="#" onclick="return doclink('link-432', 'plaintext_to_latex', 'link-12');">plaintext_to_latex</a></tt><tt class="py-op">(</tt><tt class="py-name">identifier</tt><tt class="py-op">)</tt> </tt>
+<a name="L1087"></a><tt class="py-lineno">1087</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">'\\texttt{%s}'</tt> <tt class="py-op">%</tt> <tt id="link-433" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.label" class="py-name" href="#" onclick="return doclink('link-433', 'label', 'link-111');">label</a></tt> </tt>
+</div></div><a name="L1088"></a><tt class="py-lineno">1088</tt>  <tt class="py-line">    <tt id="link-434" class="py-name" targets="Variable epydoc.docwriter.latex.LatexWriter._docstring_linker=epydoc.docwriter.latex.LatexWriter-class.html#_docstring_linker"><a title="epydoc.docwriter.latex.LatexWriter._docstring_linker" class="py-name" href="#" onclick="return doclink('link-434', '_docstring_linker', 'link-434');">_docstring_linker</a></tt> <tt class="py-op">=</tt> <tt id="link-435" cla [...]
+<a name="L1089"></a><tt class="py-lineno">1089</tt>  <tt class="py-line">     </tt>
+<a name="LatexWriter.docstring_to_latex"></a><div id="LatexWriter.docstring_to_latex-def"><a name="L1090"></a><tt class="py-lineno">1090</tt> <a class="py-toggle" href="#" id="LatexWriter.docstring_to_latex-toggle" onclick="return toggle('LatexWriter.docstring_to_latex');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.latex.LatexWriter-class.html#docstring_to_latex">docstring_to_latex</a><tt class="py-op">(</tt><tt class="py-pa [...]
+</div><div id="LatexWriter.docstring_to_latex-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="LatexWriter.docstring_to_latex-expanded"><a name="L1091"></a><tt class="py-lineno">1091</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-436" class="py-name"><a title="epydoc.apidoc.APIDoc.docstring" class="py-name" href="#" onclick="return doclink('link-436', 'docstring', 'link-261');">docstring</a></tt> <tt class="py-keyword">is</tt> <t [...]
+<a name="L1092"></a><tt class="py-lineno">1092</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-437" class="py-name"><a title="epydoc.apidoc.APIDoc.docstring" class="py-name" href="#" onclick="return doclink('link-437', 'docstring', 'link-261');">docstring</a></tt><tt class="py-op">.</tt><tt id="link-438" class="py-name"><a title="epydoc.markup.ConcatenatedDocstring.to_latex
+epydoc.markup.ParsedDocstring.to_latex
+epydoc.markup.epytext.ParsedEpytextDocstring.to_latex
+epydoc.markup.plaintext.ParsedPlaintextDocstring.to_latex
+epydoc.markup.restructuredtext.ParsedRstDocstring.to_latex" class="py-name" href="#" onclick="return doclink('link-438', 'to_latex', 'link-340');">to_latex</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-439" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter._docstring_linker" class="py-name" href="#" onclick="return doclink('link-439', '_docstring_linker', 'link-434');">_docstring_linker</a></tt><tt class="py-op">,</tt> <tt cl [...]
+<a name="L1093"></a><tt class="py-lineno">1093</tt>  <tt class="py-line">                                  <tt class="py-name">hyperref</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_hyperref</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1094"></a><tt class="py-lineno">1094</tt>  <tt class="py-line">     </tt>
+<a name="L1095"></a><tt class="py-lineno">1095</tt>  <tt class="py-line">    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L1096"></a><tt class="py-lineno">1096</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#{ Helpers</tt> </tt>
+<a name="L1097"></a><tt class="py-lineno">1097</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L1098"></a><tt class="py-lineno">1098</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="LatexWriter.write_header"></a><div id="LatexWriter.write_header-def"><a name="L1099"></a><tt class="py-lineno">1099</tt> <a class="py-toggle" href="#" id="LatexWriter.write_header-toggle" onclick="return toggle('LatexWriter.write_header');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.latex.LatexWriter-class.html#write_header">write_header</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</t [...]
+</div><div id="LatexWriter.write_header-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="LatexWriter.write_header-expanded"><a name="L1100"></a><tt class="py-lineno">1100</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'%\n% API Documentation'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1101"></a><tt class="py-lineno">1101</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_prj_name</tt><tt class="py-op">:</tt> <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">' for %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_prj_name</tt><tt class="py-op">)</tt> </tt>
+<a name="L1102"></a><tt class="py-lineno">1102</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">where</tt><tt class="py-op">,</tt> <tt id="link-440" class="py-name" targets="Class epydoc.apidoc.APIDoc=epydoc.apidoc.APIDoc-class.html"><a title="epydoc.apidoc.APIDoc" class="py-name" href="#" onclick="return doclink('link-440', 'APIDoc', 'link-440');">APIDoc</a></tt><tt class="py-op">)</tt><tt cla [...]
+<a name="L1103"></a><tt class="py-lineno">1103</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'\n%% %s %s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-441" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.doc_kind
+epydoc.docwriter.html_colorize.PythonSourceColorizer.doc_kind
+epydoc.docwriter.latex.LatexWriter.doc_kind" class="py-name" href="#" onclick="return doclink('link-441', 'doc_kind', 'link-109');">doc_kind</a></tt><tt class="py-op">(</tt><tt class="py-name">where</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">where</tt><tt class="py-op">.</tt><tt id="link-442" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-442', 'canonical_name', 'link-44');">canonical_name</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1104"></a><tt class="py-lineno">1104</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1105"></a><tt class="py-lineno">1105</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'\n%% %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">where</tt><tt class="py-op">)</tt> </tt>
+<a name="L1106"></a><tt class="py-lineno">1106</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'\n%%\n%% Generated by epydoc %s\n'</tt> <tt class="py-op">%</tt> <tt id="link-443" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-443', 'epydoc', 'link-1');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-444" class="py-name"><a title="epydoc.__version__" class="py-name" href="#" onclick= [...]
+<a name="L1107"></a><tt class="py-lineno">1107</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'%% [%s]\n%%\n'</tt> <tt class="py-op">%</tt> <tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py-name">asctime</tt><tt class="py-op">(</tt><tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py-name">localtime</tt><tt class="py-op">(</tt><tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py-name [...]
+</div><a name="L1108"></a><tt class="py-lineno">1108</tt>  <tt class="py-line"> </tt>
+<a name="LatexWriter.write_start_of"></a><div id="LatexWriter.write_start_of-def"><a name="L1109"></a><tt class="py-lineno">1109</tt> <a class="py-toggle" href="#" id="LatexWriter.write_start_of-toggle" onclick="return toggle('LatexWriter.write_start_of');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.latex.LatexWriter-class.html#write_start_of">write_start_of</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class= [...]
+</div><div id="LatexWriter.write_start_of-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="LatexWriter.write_start_of-expanded"><a name="L1110"></a><tt class="py-lineno">1110</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt> <tt class="py-op">+</tt> <tt class="py-number">75</tt><tt class="py-op">*</tt><tt class="py-string">'%'</tt> <tt class="py-op">+</tt> <tt class="py-string">'\n'</tt><tt cl [...]
+<a name="L1111"></a><tt class="py-lineno">1111</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'%%'</tt> <tt class="py-op">+</tt> <tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-number">71</tt><tt class="py-op">-</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">section_name</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">/</tt><tt class="py-number">2</tt><tt class="p [...]
+<a name="L1112"></a><tt class="py-lineno">1112</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-name">section_name</tt><tt class="py-op">)</tt> </tt>
+<a name="L1113"></a><tt class="py-lineno">1113</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-number">72</tt><tt class="py-op">-</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">section_name</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">/</tt><tt class="py-number">2</tt><tt class="py-op">)</tt><tt class="py-op">*</tt><tt class="py-string" [...]
+<a name="L1114"></a><tt class="py-lineno">1114</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-number">75</tt><tt class="py-op">*</tt><tt class="py-string">'%'</tt> <tt class="py-op">+</tt> <tt class="py-string">'\n\n'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1115"></a><tt class="py-lineno">1115</tt>  <tt class="py-line"> </tt>
+<a name="LatexWriter.section"></a><div id="LatexWriter.section-def"><a name="L1116"></a><tt class="py-lineno">1116</tt> <a class="py-toggle" href="#" id="LatexWriter.section-toggle" onclick="return toggle('LatexWriter.section');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.latex.LatexWriter-class.html#section">section</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">title< [...]
+</div><div id="LatexWriter.section-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="LatexWriter.section-expanded"><a name="L1117"></a><tt class="py-lineno">1117</tt>  <tt class="py-line">        <tt class="py-name">sec</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-445" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.SECTIONS" class="py-name" href="#" onclick="return doclink('link-445', 'SECTIONS',  [...]
+<a name="L1118"></a><tt class="py-lineno">1118</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-string">'%s\n\n'</tt> <tt class="py-op">%</tt> <tt class="py-name">sec</tt><tt class="py-op">)</tt> <tt class="py-op">%</tt> <tt id="link-446" class="py-name"><a title="epydoc.util.plaintext_to_latex" class="py-name" href="#" onclick="return doclink('link-446', 'plaintext_to_latex', 'link-12');">plaintext_to_late [...]
+</div><a name="L1119"></a><tt class="py-lineno">1119</tt>  <tt class="py-line">     </tt>
+<a name="LatexWriter.sectionstar"></a><div id="LatexWriter.sectionstar-def"><a name="L1120"></a><tt class="py-lineno">1120</tt> <a class="py-toggle" href="#" id="LatexWriter.sectionstar-toggle" onclick="return toggle('LatexWriter.sectionstar');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.latex.LatexWriter-class.html#sectionstar">sectionstar</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt [...]
+</div><div id="LatexWriter.sectionstar-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="LatexWriter.sectionstar-expanded"><a name="L1121"></a><tt class="py-lineno">1121</tt>  <tt class="py-line">        <tt class="py-name">sec</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">STARSECTIONS</tt><tt class="py-op">[</tt><tt class="py-name">depth</tt><tt class="py-op">+</tt><tt class="py-name">self</tt><tt class= [...]
+<a name="L1122"></a><tt class="py-lineno">1122</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-string">'%s\n\n'</tt> <tt class="py-op">%</tt> <tt class="py-name">sec</tt><tt class="py-op">)</tt> <tt class="py-op">%</tt> <tt id="link-448" class="py-name"><a title="epydoc.util.plaintext_to_latex" class="py-name" href="#" onclick="return doclink('link-448', 'plaintext_to_latex', 'link-12');">plaintext_to_late [...]
+</div><a name="L1123"></a><tt class="py-lineno">1123</tt>  <tt class="py-line"> </tt>
+<a name="LatexWriter.doc_kind"></a><div id="LatexWriter.doc_kind-def"><a name="L1124"></a><tt class="py-lineno">1124</tt> <a class="py-toggle" href="#" id="LatexWriter.doc_kind-toggle" onclick="return toggle('LatexWriter.doc_kind');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.latex.LatexWriter-class.html#doc_kind">doc_kind</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param"> [...]
+</div><div id="LatexWriter.doc_kind-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="LatexWriter.doc_kind-expanded"><a name="L1125"></a><tt class="py-lineno">1125</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt id="link-450" class="py-name"><a title="epydoc.apidoc.ModuleDoc" class="py-name" href="#" onclick="return doclink('link- [...]
+<a name="L1126"></a><tt class="py-lineno">1126</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">'Package'</tt> </tt>
+<a name="L1127"></a><tt class="py-lineno">1127</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-op">(</tt><tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt id="link-452" class="py-name"><a title="epydoc.apidoc.ModuleDoc" class="py-name" href="#" onclick="return doclink('link-452', 'ModuleDoc', 'link-42');">ModuleDoc</a></tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L1128"></a><tt class="py-lineno">1128</tt>  <tt class="py-line">              <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-453" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-453', 'canonical_name', 'link-44');">canonical_name</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">startswith</tt><tt class="py-op">(</tt><tt class="py-string">'script'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1129"></a><tt class="py-lineno">1129</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">'Script'</tt> </tt>
+<a name="L1130"></a><tt class="py-lineno">1130</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt id="link-454" class="py-name"><a title="epydoc.apidoc.ModuleDoc" class="py-name" href="#" onclick="return doclink('link-454', 'ModuleDoc', 'link-42');">ModuleDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1131"></a><tt class="py-lineno">1131</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">'Module'</tt> </tt>
+<a name="L1132"></a><tt class="py-lineno">1132</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt id="link-455" class="py-name"><a title="epydoc.apidoc.ClassDoc" class="py-name" href="#" onclick="return doclink('link-455', 'ClassDoc', 'link-26');">ClassDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1133"></a><tt class="py-lineno">1133</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">'Class'</tt> </tt>
+<a name="L1134"></a><tt class="py-lineno">1134</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt id="link-456" class="py-name" targets="Class epydoc.apidoc.ClassMethodDoc=epydoc.apidoc.ClassMethodDoc-class.html"><a title="epydoc.apidoc.ClassMethodDoc" class="py-name" href="#" onclick="return doclink('link-456', 'ClassMethodDoc', 'link-456');">ClassMethodDoc [...]
+<a name="L1135"></a><tt class="py-lineno">1135</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">'Class Method'</tt> </tt>
+<a name="L1136"></a><tt class="py-lineno">1136</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt id="link-457" class="py-name" targets="Class epydoc.apidoc.StaticMethodDoc=epydoc.apidoc.StaticMethodDoc-class.html"><a title="epydoc.apidoc.StaticMethodDoc" class="py-name" href="#" onclick="return doclink('link-457', 'StaticMethodDoc', 'link-457');">StaticMeth [...]
+<a name="L1137"></a><tt class="py-lineno">1137</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">'Static Method'</tt> </tt>
+<a name="L1138"></a><tt class="py-lineno">1138</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt id="link-458" class="py-name" targets="Class epydoc.apidoc.RoutineDoc=epydoc.apidoc.RoutineDoc-class.html"><a title="epydoc.apidoc.RoutineDoc" class="py-name" href="#" onclick="return doclink('link-458', 'RoutineDoc', 'link-458');">RoutineDoc</a></tt><tt class=" [...]
+<a name="L1139"></a><tt class="py-lineno">1139</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">docindex</tt><tt class="py-op">.</tt><tt id="link-459" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-459', 'container', 'link-237');">container</a></tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt id="link-460" class="py-name"><a title="epydoc.apidoc.ClassDoc" class="py-name" href="#" onclick="return doclink('link-460', 'ClassDoc', 'link-26');">ClassDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1140"></a><tt class="py-lineno">1140</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-string">'Method'</tt> </tt>
+<a name="L1141"></a><tt class="py-lineno">1141</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1142"></a><tt class="py-lineno">1142</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-string">'Function'</tt> </tt>
+<a name="L1143"></a><tt class="py-lineno">1143</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1144"></a><tt class="py-lineno">1144</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">'Variable'</tt> </tt>
+</div><a name="L1145"></a><tt class="py-lineno">1145</tt>  <tt class="py-line"> </tt>
+<a name="LatexWriter.indexterm"></a><div id="LatexWriter.indexterm-def"><a name="L1146"></a><tt class="py-lineno">1146</tt> <a class="py-toggle" href="#" id="LatexWriter.indexterm-toggle" onclick="return toggle('LatexWriter.indexterm');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.latex.LatexWriter-class.html#indexterm">indexterm</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-p [...]
+</div><div id="LatexWriter.indexterm-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="LatexWriter.indexterm-expanded"><a name="L1147"></a><tt class="py-lineno">1147</tt>  <tt class="py-line">        <tt class="py-docstring">"""Mark a term or section for inclusion in the index."""</tt> </tt>
+<a name="L1148"></a><tt class="py-lineno">1148</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_index</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-string">''</tt> </tt>
+<a name="L1149"></a><tt class="py-lineno">1149</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt id="link-461" class="py-name"><a title="epydoc.apidoc.RoutineDoc" class="py-name" href="#" onclick="return doclink('link-461', 'RoutineDoc', 'link-458');">RoutineDoc</a></tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> < [...]
+<a name="L1150"></a><tt class="py-lineno">1150</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">''</tt> </tt>
+<a name="L1151"></a><tt class="py-lineno">1151</tt>  <tt class="py-line"> </tt>
+<a name="L1152"></a><tt class="py-lineno">1152</tt>  <tt class="py-line">        <tt class="py-name">pieces</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L1153"></a><tt class="py-lineno">1153</tt>  <tt class="py-line">        <tt class="py-keyword">while</tt> <tt class="py-name">doc</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1154"></a><tt class="py-lineno">1154</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-462" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-462', 'canonical_name', 'link-44');">canonical_name</a></tt> <tt class="py-op">==</tt> <tt id="link-463" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-463', 'UNKNOWN', 'link-113');">UNKNOWN</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1155"></a><tt class="py-lineno">1155</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-string">''</tt> <tt class="py-comment"># Give up.</tt> </tt>
+<a name="L1156"></a><tt class="py-lineno">1156</tt>  <tt class="py-line">            <tt class="py-name">pieces</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">'%s \\textit{(%s)}'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L1157"></a><tt class="py-lineno">1157</tt>  <tt class="py-line">                          <tt class="py-op">(</tt><tt id="link-464" class="py-name"><a title="epydoc.util.plaintext_to_latex" class="py-name" href="#" onclick="return doclink('link-464', 'plaintext_to_latex', 'link-12');">plaintext_to_latex</a></tt><tt class="py-op">(</tt><tt class="py-string">'%s'</tt><tt class="py-op">%</tt><tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-465" class="py-name"><a ti [...]
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-465', 'canonical_name', 'link-44');">canonical_name</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1158"></a><tt class="py-lineno">1158</tt>  <tt class="py-line">                           <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-466" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.doc_kind
+epydoc.docwriter.html_colorize.PythonSourceColorizer.doc_kind
+epydoc.docwriter.latex.LatexWriter.doc_kind" class="py-name" href="#" onclick="return doclink('link-466', 'doc_kind', 'link-109');">doc_kind</a></tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">lower</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1159"></a><tt class="py-lineno">1159</tt>  <tt class="py-line">            <tt class="py-name">doc</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">docindex</tt><tt class="py-op">.</tt><tt id="link-467" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-467', 'container', 'link-237');">container</a></tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">)</tt> </tt>
+<a name="L1160"></a><tt class="py-lineno">1160</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">doc</tt> <tt class="py-op">==</tt> <tt id="link-468" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-468', 'UNKNOWN', 'link-113');">UNKNOWN</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1161"></a><tt class="py-lineno">1161</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-string">''</tt> <tt class="py-comment"># Give up.</tt> </tt>
+<a name="L1162"></a><tt class="py-lineno">1162</tt>  <tt class="py-line"> </tt>
+<a name="L1163"></a><tt class="py-lineno">1163</tt>  <tt class="py-line">        <tt class="py-name">pieces</tt><tt class="py-op">.</tt><tt class="py-name">reverse</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1164"></a><tt class="py-lineno">1164</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">pos</tt> <tt class="py-op">==</tt> <tt class="py-string">'only'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1165"></a><tt class="py-lineno">1165</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">'\\index{%s}\n'</tt> <tt class="py-op">%</tt> <tt class="py-string">'!'</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">pieces</tt><tt class="py-op">)</tt> </tt>
+<a name="L1166"></a><tt class="py-lineno">1166</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">pos</tt> <tt class="py-op">==</tt> <tt class="py-string">'start'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1167"></a><tt class="py-lineno">1167</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">'\\index{%s|(}\n'</tt> <tt class="py-op">%</tt> <tt class="py-string">'!'</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">pieces</tt><tt class="py-op">)</tt> </tt>
+<a name="L1168"></a><tt class="py-lineno">1168</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">pos</tt> <tt class="py-op">==</tt> <tt class="py-string">'end'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1169"></a><tt class="py-lineno">1169</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">'\\index{%s|)}\n'</tt> <tt class="py-op">%</tt> <tt class="py-string">'!'</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">pieces</tt><tt class="py-op">)</tt> </tt>
+<a name="L1170"></a><tt class="py-lineno">1170</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1171"></a><tt class="py-lineno">1171</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">AssertionError</tt><tt class="py-op">(</tt><tt class="py-string">'Bad index position %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">pos</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1172"></a><tt class="py-lineno">1172</tt>  <tt class="py-line">         </tt>
+<a name="LatexWriter.label"></a><div id="LatexWriter.label-def"><a name="L1173"></a><tt class="py-lineno">1173</tt> <a class="py-toggle" href="#" id="LatexWriter.label-toggle" onclick="return toggle('LatexWriter.label');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.latex.LatexWriter-class.html#label">label</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">doc</tt><tt class= [...]
+</div><div id="LatexWriter.label-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="LatexWriter.label-expanded"><a name="L1174"></a><tt class="py-lineno">1174</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">':'</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-469" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canon [...]
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-469', 'canonical_name', 'link-44');">canonical_name</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1175"></a><tt class="py-lineno">1175</tt>  <tt class="py-line"> </tt>
+<a name="L1176"></a><tt class="py-lineno">1176</tt>  <tt class="py-line">    <tt class="py-comment">#: Map the Python encoding representation into mismatching LaTeX ones.</tt> </tt>
+<a name="L1177"></a><tt class="py-lineno">1177</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-470" class="py-name" targets="Variable epydoc.docwriter.latex.LatexWriter.latex_encodings=epydoc.docwriter.latex.LatexWriter-class.html#latex_encodings"><a title="epydoc.docwriter.latex.LatexWriter.latex_encodings" class="py-name" href="#" onclick="return doclink('link-470', 'latex_encodings', 'link-470');">latex_encodings</a></tt> <tt class="py-op">=</tt> <tt class="py-o [...]
+<a name="L1178"></a><tt class="py-lineno">1178</tt>  <tt class="py-line">        <tt class="py-string">'utf-8'</tt><tt class="py-op">:</tt> <tt class="py-string">'utf8'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1179"></a><tt class="py-lineno">1179</tt>  <tt class="py-line">    <tt class="py-op">}</tt> </tt>
+<a name="L1180"></a><tt class="py-lineno">1180</tt>  <tt class="py-line"> </tt>
+<a name="LatexWriter.get_latex_encoding"></a><div id="LatexWriter.get_latex_encoding-def"><a name="L1181"></a><tt class="py-lineno">1181</tt> <a class="py-toggle" href="#" id="LatexWriter.get_latex_encoding-toggle" onclick="return toggle('LatexWriter.get_latex_encoding');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.latex.LatexWriter-class.html#get_latex_encoding">get_latex_encoding</a><tt class="py-op">(</tt><tt class="py-pa [...]
+</div><div id="LatexWriter.get_latex_encoding-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="LatexWriter.get_latex_encoding-expanded"><a name="L1182"></a><tt class="py-lineno">1182</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L1183"></a><tt class="py-lineno">1183</tt>  <tt class="py-line"><tt class="py-docstring">        @return: The LaTeX representation of the selected encoding.</tt> </tt>
+<a name="L1184"></a><tt class="py-lineno">1184</tt>  <tt class="py-line"><tt class="py-docstring">        @rtype: C{str}</tt> </tt>
+<a name="L1185"></a><tt class="py-lineno">1185</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L1186"></a><tt class="py-lineno">1186</tt>  <tt class="py-line">        <tt class="py-name">enc</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_encoding</tt><tt class="py-op">.</tt><tt class="py-name">lower</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1187"></a><tt class="py-lineno">1187</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-471" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.latex_encodings" class="py-name" href="#" onclick="return doclink('link-471', 'latex_encodings', 'link-470');">latex_encodings</a></tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-name">enc</tt><tt c [...]
+</div></div><a name="L1188"></a><tt class="py-lineno">1188</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:09:08 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.docwriter.latex.LatexWriter-class.html b/doc/api/epydoc.docwriter.latex.LatexWriter-class.html
new file mode 100644
index 0000000..aec6bbf
--- /dev/null
+++ b/doc/api/epydoc.docwriter.latex.LatexWriter-class.html
@@ -0,0 +1,1347 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.docwriter.latex.LatexWriter</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.docwriter-module.html">Package docwriter</a> ::
+        <a href="epydoc.docwriter.latex-module.html">Module latex</a> ::
+        Class LatexWriter
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.docwriter.latex.LatexWriter-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class LatexWriter</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.docwriter.latex-pysrc.html#LatexWriter">source code</a></span></p>
+<!-- ==================== NESTED CLASSES ==================== -->
+<a name="section-NestedClasses"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Nested Classes</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-NestedClasses"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr bgcolor="#e8f0f8"  class="private">
+  <th colspan="2" class="group-header"
+    >    Docstring -> LaTeX Conversion</th></tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docwriter.latex.LatexWriter._LatexDocstringLinker-class.html" class="summary-name" onclick="show_private();">_LatexDocstringLinker</a>
+    </td>
+  </tr>
+</table>
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__init__"></a><span class="summary-sig-name">__init__</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">docindex</span>,
+        <span class="summary-sig-arg">**kwargs</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.latex-pysrc.html#LatexWriter.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>None</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docwriter.latex.LatexWriter-class.html#write" class="summary-sig-name">write</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">directory</span>=<span class="summary-sig-default">None</span>)</span><br />
+      Write the API documentation for the entire project to the given 
+      directory.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.latex-pysrc.html#LatexWriter.write">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_write"></a><span class="summary-sig-name">_write</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">write_func</span>,
+        <span class="summary-sig-arg">directory</span>,
+        <span class="summary-sig-arg">filename</span>,
+        <span class="summary-sig-arg">*args</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.latex-pysrc.html#LatexWriter._write">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>int</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docwriter.latex.LatexWriter-class.html#num_files" class="summary-sig-name">num_files</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Returns:
+      The number of files that this <code>LatexFormatter</code> will 
+      generate.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.latex-pysrc.html#LatexWriter.num_files">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>None</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_mkdir"></a><span class="summary-sig-name">_mkdir</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">directory</span>)</span><br />
+      If the given directory does not exist, then attempt to create it.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.latex-pysrc.html#LatexWriter._mkdir">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Main Doc File</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="write_topfile"></a><span class="summary-sig-name">write_topfile</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">out</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.latex-pysrc.html#LatexWriter.write_topfile">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="write_preamble"></a><span class="summary-sig-name">write_preamble</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">out</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.latex-pysrc.html#LatexWriter.write_preamble">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Chapters</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="write_module"></a><span class="summary-sig-name">write_module</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">out</span>,
+        <span class="summary-sig-arg">doc</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.latex-pysrc.html#LatexWriter.write_module">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="write_class"></a><span class="summary-sig-name">write_class</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">out</span>,
+        <span class="summary-sig-arg">doc</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.latex-pysrc.html#LatexWriter.write_class">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Module hierarchy trees</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="write_module_tree"></a><span class="summary-sig-name">write_module_tree</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">out</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.latex-pysrc.html#LatexWriter.write_module_tree">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="write_module_list"></a><span class="summary-sig-name">write_module_list</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">out</span>,
+        <span class="summary-sig-arg">doc</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.latex-pysrc.html#LatexWriter.write_module_list">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>string</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="write_module_tree_item"></a><span class="summary-sig-name">write_module_tree_item</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">out</span>,
+        <span class="summary-sig-arg">doc</span>,
+        <span class="summary-sig-arg">depth</span>=<span class="summary-sig-default">0</span>)</span><br />
+      Helper function for <a 
+      href="epydoc.docwriter.latex.LatexWriter-class.html#write_module_tree"
+      class="link">write_module_tree</a> and <a 
+      href="epydoc.docwriter.latex.LatexWriter-class.html#write_module_list"
+      class="link">write_module_list</a>.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.latex-pysrc.html#LatexWriter.write_module_tree_item">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Base class trees</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="base_tree"></a><span class="summary-sig-name">base_tree</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">doc</span>,
+        <span class="summary-sig-arg">width</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">linespec</span>=<span class="summary-sig-default">None</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.latex-pysrc.html#LatexWriter.base_tree">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_base_name"></a><span class="summary-sig-name">_base_name</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">doc</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.latex-pysrc.html#LatexWriter._base_name">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_find_tree_width"></a><span class="summary-sig-name">_find_tree_width</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">doc</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.latex-pysrc.html#LatexWriter._find_tree_width">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_base_tree_line"></a><span class="summary-sig-name">_base_tree_line</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">doc</span>,
+        <span class="summary-sig-arg">width</span>,
+        <span class="summary-sig-arg">linespec</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.latex-pysrc.html#LatexWriter._base_tree_line">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Class List</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="write_class_list"></a><span class="summary-sig-name">write_class_list</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">out</span>,
+        <span class="summary-sig-arg">doc</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.latex-pysrc.html#LatexWriter.write_class_list">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="write_class_list_line"></a><span class="summary-sig-name">write_class_list_line</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">out</span>,
+        <span class="summary-sig-arg">var_doc</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.latex-pysrc.html#LatexWriter.write_class_list_line">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Function List</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="write_func_list"></a><span class="summary-sig-name">write_func_list</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">out</span>,
+        <span class="summary-sig-arg">heading</span>,
+        <span class="summary-sig-arg">doc</span>,
+        <span class="summary-sig-arg">value_type</span>,
+        <span class="summary-sig-arg">seclevel</span>=<span class="summary-sig-default">1</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.latex-pysrc.html#LatexWriter.write_func_list">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="write_func_group"></a><span class="summary-sig-name">write_func_group</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">out</span>,
+        <span class="summary-sig-arg">doc</span>,
+        <span class="summary-sig-arg">name</span>,
+        <span class="summary-sig-arg">var_docs</span>,
+        <span class="summary-sig-arg">grouped_inh_vars</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.latex-pysrc.html#LatexWriter.write_func_group">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="write_func_inheritance_list"></a><span class="summary-sig-name">write_func_inheritance_list</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">out</span>,
+        <span class="summary-sig-arg">doc</span>,
+        <span class="summary-sig-arg">listed_inh_vars</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.latex-pysrc.html#LatexWriter.write_func_inheritance_list">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="write_func_list_box"></a><span class="summary-sig-name">write_func_list_box</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">out</span>,
+        <span class="summary-sig-arg">var_doc</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.latex-pysrc.html#LatexWriter.write_func_list_box">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="function_signature"></a><span class="summary-sig-name">function_signature</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">var_doc</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.latex-pysrc.html#LatexWriter.function_signature">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="func_arg"></a><span class="summary-sig-name">func_arg</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">name</span>,
+        <span class="summary-sig-arg">default</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.latex-pysrc.html#LatexWriter.func_arg">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_arg_name"></a><span class="summary-sig-name">_arg_name</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">arg</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.latex-pysrc.html#LatexWriter._arg_name">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Variable List</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="write_var_list"></a><span class="summary-sig-name">write_var_list</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">out</span>,
+        <span class="summary-sig-arg">heading</span>,
+        <span class="summary-sig-arg">doc</span>,
+        <span class="summary-sig-arg">value_type</span>,
+        <span class="summary-sig-arg">seclevel</span>=<span class="summary-sig-default">1</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.latex-pysrc.html#LatexWriter.write_var_list">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="write_var_group"></a><span class="summary-sig-name">write_var_group</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">out</span>,
+        <span class="summary-sig-arg">doc</span>,
+        <span class="summary-sig-arg">name</span>,
+        <span class="summary-sig-arg">var_docs</span>,
+        <span class="summary-sig-arg">grouped_inh_vars</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.latex-pysrc.html#LatexWriter.write_var_group">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="write_var_inheritance_list"></a><span class="summary-sig-name">write_var_inheritance_list</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">out</span>,
+        <span class="summary-sig-arg">doc</span>,
+        <span class="summary-sig-arg">listed_inh_vars</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.latex-pysrc.html#LatexWriter.write_var_inheritance_list">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="write_var_list_line"></a><span class="summary-sig-name">write_var_list_line</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">out</span>,
+        <span class="summary-sig-arg">var_doc</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.latex-pysrc.html#LatexWriter.write_var_list_line">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="write_property_list_line"></a><span class="summary-sig-name">write_property_list_line</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">out</span>,
+        <span class="summary-sig-arg">var_doc</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.latex-pysrc.html#LatexWriter.write_property_list_line">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Standard Fields</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="write_standard_fields"></a><span class="summary-sig-name">write_standard_fields</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">out</span>,
+        <span class="summary-sig-arg">doc</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.latex-pysrc.html#LatexWriter.write_standard_fields">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="write_standard_field"></a><span class="summary-sig-name">write_standard_field</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">out</span>,
+        <span class="summary-sig-arg">doc</span>,
+        <span class="summary-sig-arg">field</span>,
+        <span class="summary-sig-arg">descrs</span>,
+        <span class="summary-sig-arg">arg</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.latex-pysrc.html#LatexWriter.write_standard_field">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_descrlist"></a><span class="summary-sig-name">_descrlist</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">items</span>,
+        <span class="summary-sig-arg">singular</span>,
+        <span class="summary-sig-arg">plural</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">short</span>=<span class="summary-sig-default">0</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.latex-pysrc.html#LatexWriter._descrlist">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Docstring -> LaTeX Conversion</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="docstring_to_latex"></a><span class="summary-sig-name">docstring_to_latex</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">docstring</span>,
+        <span class="summary-sig-arg">indent</span>=<span class="summary-sig-default">0</span>,
+        <span class="summary-sig-arg">breakany</span>=<span class="summary-sig-default">0</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.latex-pysrc.html#LatexWriter.docstring_to_latex">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Helpers</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="write_header"></a><span class="summary-sig-name">write_header</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">out</span>,
+        <span class="summary-sig-arg">where</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.latex-pysrc.html#LatexWriter.write_header">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="write_start_of"></a><span class="summary-sig-name">write_start_of</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">out</span>,
+        <span class="summary-sig-arg">section_name</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.latex-pysrc.html#LatexWriter.write_start_of">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="section"></a><span class="summary-sig-name">section</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">title</span>,
+        <span class="summary-sig-arg">depth</span>=<span class="summary-sig-default">0</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.latex-pysrc.html#LatexWriter.section">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="sectionstar"></a><span class="summary-sig-name">sectionstar</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">title</span>,
+        <span class="summary-sig-arg">depth</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.latex-pysrc.html#LatexWriter.sectionstar">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="doc_kind"></a><span class="summary-sig-name">doc_kind</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">doc</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.latex-pysrc.html#LatexWriter.doc_kind">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="indexterm"></a><span class="summary-sig-name">indexterm</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">doc</span>,
+        <span class="summary-sig-arg">pos</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string">only</code><code class="variable-quote">'</code></span>)</span><br />
+      Mark a term or section for inclusion in the index.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.latex-pysrc.html#LatexWriter.indexterm">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="label"></a><span class="summary-sig-name">label</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">doc</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.latex-pysrc.html#LatexWriter.label">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>str</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docwriter.latex.LatexWriter-class.html#get_latex_encoding" class="summary-sig-name">get_latex_encoding</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Returns:
+      The LaTeX representation of the selected encoding.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.latex-pysrc.html#LatexWriter.get_latex_encoding">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Class Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-ClassVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docwriter.latex.LatexWriter-class.html#PREAMBLE" class="summary-name">PREAMBLE</a> = <code title="['\\documentclass{article}',
+ '\\usepackage{alltt, parskip, fancyhdr, boxedminipage}',
+ '\\usepackage{makeidx, multirow, longtable, tocbibind, amssymb}',
+ '\\usepackage{fullpage}',
+ '\\usepackage[usenames]{color}',
+ '\\setlength{\\headheight}{16pt}',
+ '\\setlength{\\headsep}{24pt}',
+ '\\setlength{\\topmargin}{-\\headsep}',
+..."><code class="variable-group">[</code><code class="variable-quote">'</code><code class="variable-string">\\documentclass{article}</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">\\usepackage{alltt, p</code><code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="HRULE"></a><span class="summary-name">HRULE</span> = <code title="'''\\rule{\\textwidth}{0.5\\fboxrule}
+
+'''"><code class="variable-quote">'</code><code class="variable-string">\\rule{\\textwidth}{0.5\\fboxrule}\n\n</code><code class="variable-quote">'</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docwriter.latex.LatexWriter-class.html#SECTIONS" class="summary-name">SECTIONS</a> = <code title="['\\part{%s}',
+ '\\chapter{%s}',
+ '\\section{%s}',
+ '\\subsection{%s}',
+ '\\subsubsection{%s}',
+ '\\textbf{%s}']"><code class="variable-group">[</code><code class="variable-quote">'</code><code class="variable-string">\\part{%s}</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">\\chapter{%s}</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">\\section{%s}</code><code class="variable-quote">'</cod [...]
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docwriter.latex.LatexWriter-class.html#STAR_SECTIONS" class="summary-name">STAR_SECTIONS</a> = <code title="['\\part*{%s}',
+ '\\chapter*{%s}',
+ '\\section*{%s}',
+ '\\subsection*{%s}',
+ '\\subsubsection*{%s}',
+ '\\textbf{%s}']"><code class="variable-group">[</code><code class="variable-quote">'</code><code class="variable-string">\\part*{%s}</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">\\chapter*{%s}</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">\\section*{</code><code class="variable-ellipsis">... [...]
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8"  class="private">
+  <th colspan="2" class="group-header"
+    >    Function List</th></tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="_FUNC_GROUP_HEADER"></a><span class="summary-name">_FUNC_GROUP_HEADER</span> = <code title="'''
+\\large{\\textbf{\\textit{%s}}}
+
+'''"><code class="variable-quote">'</code><code class="variable-string">\n\\large{\\textbf{\\textit{%s}}}\n\n</code><code class="variable-quote">'</code></code>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8"  class="private">
+  <th colspan="2" class="group-header"
+    >    Variable List</th></tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="_VAR_GROUP_HEADER"></a><span class="summary-name">_VAR_GROUP_HEADER</span> = <code title="'''\\multicolumn{2}{|l|}{\\textit{%s}}\\\\
+'''"><code class="variable-quote">'</code><code class="variable-string">\\multicolumn{2}{|l|}{\\textit{%s}}\\\\\n</code><code class="variable-quote">'</code></code>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8"  class="private">
+  <th colspan="2" class="group-header"
+    >    Docstring -> LaTeX Conversion</th></tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="_docstring_linker"></a><span class="summary-name">_docstring_linker</span> = <code title="_LatexDocstringLinker()">_LatexDocstringLinker()</code>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Helpers</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="latex_encodings"></a><span class="summary-name">latex_encodings</span> = <code title="{'utf-8': 'utf8'}"><code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">utf-8</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">utf8</code><code class="variable-quote">'</code><code class="variable-group">}</code></code><br />
+      Map the Python encoding representation into mismatching LaTeX ones.
+    </td>
+  </tr>
+</table>
+<!-- ==================== INSTANCE VARIABLES ==================== -->
+<a name="section-InstanceVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docwriter.latex.LatexWriter-class.html#_encoding" class="summary-name" onclick="show_private();">_encoding</a><br />
+      The Python representation of the encoding.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="class_list"></a><span class="summary-name">class_list</span><br />
+      The list of <a href="epydoc.apidoc.ClassDoc-class.html" 
+      class="link">ClassDoc</a>s for the documented classes.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="class_set"></a><span class="summary-name">class_set</span><br />
+      The set of <a href="epydoc.apidoc.ClassDoc-class.html" 
+      class="link">ClassDoc</a>s for the documented classes.
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Method Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-MethodDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="write"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">write</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">directory</span>=<span class="sig-default">None</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docwriter.latex-pysrc.html#LatexWriter.write">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Write the API documentation for the entire project to the given 
+  directory.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>directory</code></strong> (<code>string</code>) - The directory to which output should be written.  If no directory
+          is specified, output will be written to the current directory.  
+          If the directory does not exist, it will be created.</li>
+    </ul></dd>
+    <dt>Returns: <code>None</code></dt>
+    <dt>Raises:</dt>
+    <dd><ul class="nomargin-top">
+        <li><code><strong class='fraise'>OSError</strong></code> - If <code>directory</code> cannot be created,</li>
+        <li><code><strong class='fraise'>OSError</strong></code> - If any file cannot be created or written to.</li>
+    </ul></dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="num_files"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">num_files</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docwriter.latex-pysrc.html#LatexWriter.num_files">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  
+  <dl class="fields">
+    <dt>Returns: <code>int</code></dt>
+        <dd>The number of files that this <code>LatexFormatter</code> will 
+          generate.</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="get_latex_encoding"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">get_latex_encoding</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docwriter.latex-pysrc.html#LatexWriter.get_latex_encoding">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  
+  <dl class="fields">
+    <dt>Returns: <code>str</code></dt>
+        <dd>The LaTeX representation of the selected encoding.</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== CLASS VARIABLE DETAILS ==================== -->
+<a name="section-ClassVariableDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Class Variable Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-ClassVariableDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="PREAMBLE"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">PREAMBLE</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-group">[</code><code class="variable-quote">'</code><code class="variable-string">\\documentclass{article}</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">\\usepackage{alltt, parskip, fancyhdr, boxedminipage}</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">\\usepackage{makeidx, multirow, longtable, tocbibind, amssymb}</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">\\usepackage{fullpage}</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">\\usepackage[usenames]{color}</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">\\setlength{\\headheight}{16pt}</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">\\setlength{\\headsep}{24pt}</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">\\setlength{\\topmargin}{-\\headsep}</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="SECTIONS"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">SECTIONS</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-group">[</code><code class="variable-quote">'</code><code class="variable-string">\\part{%s}</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">\\chapter{%s}</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">\\section{%s}</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">\\subsection{%s}</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">\\subsubsection{%s}</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">\\textbf{%s}</code><code class="variable-quote">'</code><code class="variable-group">]</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="STAR_SECTIONS"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">STAR_SECTIONS</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-group">[</code><code class="variable-quote">'</code><code class="variable-string">\\part*{%s}</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">\\chapter*{%s}</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">\\section*{%s}</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">\\subsection*{%s}</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">\\subsubsection*{%s}</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">\\textbf{%s}</code><code class="variable-quote">'</code><code class="variable-group">]</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== INSTANCE VARIABLE DETAILS ==================== -->
+<a name="section-InstanceVariableDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Variable Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceVariableDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="_encoding"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">_encoding</h3>
+  <p>The Python representation of the encoding. Update <a 
+  href="epydoc.docwriter.latex.LatexWriter-class.html#latex_encodings" 
+  class="link">latex_encodings</a> in case of mismatch between it and the 
+  <code>inputenc</code> LaTeX package.</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:08:16 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.docwriter.latex.LatexWriter._LatexDocstringLinker-class.html b/doc/api/epydoc.docwriter.latex.LatexWriter._LatexDocstringLinker-class.html
new file mode 100644
index 0000000..385977d
--- /dev/null
+++ b/doc/api/epydoc.docwriter.latex.LatexWriter._LatexDocstringLinker-class.html
@@ -0,0 +1,270 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.docwriter.latex.LatexWriter._LatexDocstringLinker</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.docwriter-module.html">Package docwriter</a> ::
+        <a href="epydoc.docwriter.latex-module.html">Module latex</a> ::
+        <a href="epydoc.docwriter.latex.LatexWriter-class.html">Class LatexWriter</a> ::
+        Class _LatexDocstringLinker
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.docwriter.latex.LatexWriter._LatexDocstringLinker-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class _LatexDocstringLinker</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.docwriter.latex-pysrc.html#LatexWriter._LatexDocstringLinker">source code</a></span></p>
+<center>
+<center>  <map id="uml_class_diagram_for_epydoc_d_6" name="uml_class_diagram_for_epydoc_d_6">
+<area shape="rect" href="epydoc.markup.DocstringLinker-class.html" title="A translator for crossreference links into and out of a ParsedDocstring." alt="" coords="88,6,253,48" />
+<area shape="rect" href="epydoc.docwriter.latex.LatexWriter._LatexDocstringLinker-class.html#translate_indexterm" title="Translate an index term to the appropriate output format." alt="" coords="17,98,324,116" />
+<area shape="rect" href="epydoc.docwriter.latex.LatexWriter._LatexDocstringLinker-class.html#translate_identifier_xref" title="Translate a crossreference link to a Python identifier to the appropriate  output format." alt="" coords="17,116,324,135" />
+<area shape="rect" href="epydoc.docwriter.latex.LatexWriter._LatexDocstringLinker-class.html" title="epydoc.docwriter.latex.LatexWriter._LatexDocstringLinker" alt="" coords="5,67,336,142" />
+</map>
+  <img src="uml_class_diagram_for_epydoc_d_6.gif" alt='' usemap="#uml_class_diagram_for_epydoc_d_6" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>string</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docwriter.latex.LatexWriter._LatexDocstringLinker-class.html#translate_indexterm" class="summary-sig-name">translate_indexterm</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">indexterm</span>)</span><br />
+      Translate an index term to the appropriate output format.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.latex-pysrc.html#LatexWriter._LatexDocstringLinker.translate_indexterm">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>string</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docwriter.latex.LatexWriter._LatexDocstringLinker-class.html#translate_identifier_xref" class="summary-sig-name">translate_identifier_xref</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">identifier</span>,
+        <span class="summary-sig-arg">label</span>=<span class="summary-sig-default">None</span>)</span><br />
+      Translate a crossreference link to a Python identifier to the 
+      appropriate output format.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.latex-pysrc.html#LatexWriter._LatexDocstringLinker.translate_identifier_xref">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Method Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-MethodDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="translate_indexterm"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">translate_indexterm</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">indexterm</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docwriter.latex-pysrc.html#LatexWriter._LatexDocstringLinker.translate_indexterm">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Translate an index term to the appropriate output format.  The output 
+  will typically include a crossreference anchor.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>indexterm</code></strong> - The index term to translate.</li>
+    </ul></dd>
+    <dt>Returns: <code>string</code></dt>
+        <dd>The translated index term.</dd>
+    <dt>Overrides:
+        <a href="epydoc.markup.DocstringLinker-class.html#translate_indexterm">markup.DocstringLinker.translate_indexterm</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="translate_identifier_xref"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">translate_identifier_xref</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">identifier</span>,
+        <span class="sig-arg">label</span>=<span class="sig-default">None</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docwriter.latex-pysrc.html#LatexWriter._LatexDocstringLinker.translate_identifier_xref">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Translate a crossreference link to a Python identifier to the 
+  appropriate output format.  The output will typically include a reference
+  or pointer to the crossreference target.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>identifier</code></strong> - The name of the Python identifier that should be linked to.</li>
+        <li><strong class="pname"><code>label</code></strong> - The label that should be used for the identifier, if it's 
+          different from the name of the identifier.</li>
+    </ul></dd>
+    <dt>Returns: <code>string</code></dt>
+        <dd>The translated crossreference link.</dd>
+    <dt>Overrides:
+        <a href="epydoc.markup.DocstringLinker-class.html#translate_identifier_xref">markup.DocstringLinker.translate_identifier_xref</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:08:16 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.docwriter.plaintext-module.html b/doc/api/epydoc.docwriter.plaintext-module.html
new file mode 100644
index 0000000..5528713
--- /dev/null
+++ b/doc/api/epydoc.docwriter.plaintext-module.html
@@ -0,0 +1,143 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.docwriter.plaintext</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.docwriter-module.html">Package docwriter</a> ::
+        Module plaintext
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.docwriter.plaintext-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module plaintext</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.docwriter.plaintext-pysrc.html">source code</a></span></p>
+<p>Plaintext output generation.</p>
+
+<!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Classes</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Classes"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docwriter.plaintext.PlaintextWriter-class.html" class="summary-name">PlaintextWriter</a>
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:06:37 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.docwriter.plaintext-pysrc.html b/doc/api/epydoc.docwriter.plaintext-pysrc.html
new file mode 100644
index 0000000..1cbf019
--- /dev/null
+++ b/doc/api/epydoc.docwriter.plaintext-pysrc.html
@@ -0,0 +1,518 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.docwriter.plaintext</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.docwriter-module.html">Package docwriter</a> ::
+        Module plaintext
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.docwriter.plaintext-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="epydoc.docwriter.plaintext-module.html">Module epydoc.docwriter.plaintext</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno">  1</tt>  <tt class="py-line"><tt class="py-comment"># epydoc -- Plaintext output generation</tt> </tt>
+<a name="L2"></a><tt class="py-lineno">  2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L3"></a><tt class="py-lineno">  3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2005 Edward Loper</tt> </tt>
+<a name="L4"></a><tt class="py-lineno">  4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Author: Edward Loper <edloper at loper.org></tt> </tt>
+<a name="L5"></a><tt class="py-lineno">  5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># URL: <http://epydoc.sf.net></tt> </tt>
+<a name="L6"></a><tt class="py-lineno">  6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L7"></a><tt class="py-lineno">  7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># $Id: plaintext.py 1473 2007-02-13 19:46:05Z edloper $</tt> </tt>
+<a name="L8"></a><tt class="py-lineno">  8</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L9"></a><tt class="py-lineno">  9</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L10"></a><tt class="py-lineno"> 10</tt>  <tt class="py-line"><tt class="py-docstring">Plaintext output generation.</tt> </tt>
+<a name="L11"></a><tt class="py-lineno"> 11</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L12"></a><tt class="py-lineno"> 12</tt>  <tt class="py-line"><tt class="py-name">__docformat__</tt> <tt class="py-op">=</tt> <tt class="py-string">'epytext en'</tt> </tt>
+<a name="L13"></a><tt class="py-lineno"> 13</tt>  <tt class="py-line"> </tt>
+<a name="L14"></a><tt class="py-lineno"> 14</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-0" class="py-name" targets="Package epydoc=epydoc-module.html"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-0', 'epydoc', 'link-0');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-1" class="py-name" targets="Module epydoc.apidoc=epydoc.apidoc-module.html"><a title="epydoc.apidoc" class="py-name" href="#" onclick="return doclink('link-1', 'a [...]
+<a name="L15"></a><tt class="py-lineno"> 15</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">re</tt> </tt>
+<a name="L16"></a><tt class="py-lineno"> 16</tt>  <tt class="py-line"> </tt>
+<a name="PlaintextWriter"></a><div id="PlaintextWriter-def"><a name="L17"></a><tt class="py-lineno"> 17</tt> <a class="py-toggle" href="#" id="PlaintextWriter-toggle" onclick="return toggle('PlaintextWriter');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="epydoc.docwriter.plaintext.PlaintextWriter-class.html">PlaintextWriter</a><tt class="py-op">:</tt> </tt>
+</div><div id="PlaintextWriter-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="PlaintextWriter-expanded"><a name="PlaintextWriter.write"></a><div id="PlaintextWriter.write-def"><a name="L18"></a><tt class="py-lineno"> 18</tt> <a class="py-toggle" href="#" id="PlaintextWriter.write-toggle" onclick="return toggle('PlaintextWriter.write');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.plaintext.PlaintextWr [...]
+</div><div id="PlaintextWriter.write-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="PlaintextWriter.write-expanded"><a name="L19"></a><tt class="py-lineno"> 19</tt>  <tt class="py-line">        <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L20"></a><tt class="py-lineno"> 20</tt>  <tt class="py-line">        <tt class="py-name">out</tt> <tt class="py-op">=</tt> <tt class="py-name">result</tt><tt class="py-op">.</tt><tt class="py-name">append</tt> </tt>
+<a name="L21"></a><tt class="py-lineno"> 21</tt>  <tt class="py-line"> </tt>
+<a name="L22"></a><tt class="py-lineno"> 22</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cols</tt> <tt class="py-op">=</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'cols'</tt><tt class="py-op">,</tt> <tt class="py-number">75</tt><tt class="py-op">)</tt> </tt>
+<a name="L23"></a><tt class="py-lineno"> 23</tt>  <tt class="py-line"> </tt>
+<a name="L24"></a><tt class="py-lineno"> 24</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L25"></a><tt class="py-lineno"> 25</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt id="link-2" class="py-name" targets="Class epydoc.apidoc.ModuleDoc=epydoc.apidoc.ModuleDoc-class.html"><a title="epydoc.apidoc.ModuleDoc" class="py-name" href="#" onclick="return doclink('link-2', 'ModuleDoc', 'link-2');">ModuleDoc</a></tt><tt class="py-op">) [...]
+<a name="L26"></a><tt class="py-lineno"> 26</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.write_module()=epydoc.docwriter.html.HTMLWriter-class.html#write_module,Method epydoc.docwriter.latex.LatexWriter.write_module()=epydoc.docwriter.latex.LatexWriter-class.html#write_module,Method epydoc.docwriter.plaintext.PlaintextWriter.write_module()=epydoc.docwriter.pl [...]
+epydoc.docwriter.latex.LatexWriter.write_module
+epydoc.docwriter.plaintext.PlaintextWriter.write_module" class="py-name" href="#" onclick="return doclink('link-3', 'write_module', 'link-3');">write_module</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-name">api_doc</tt><tt class="py-op">)</tt> </tt>
+<a name="L27"></a><tt class="py-lineno"> 27</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt id="link-4" class="py-name" targets="Class epydoc.apidoc.ClassDoc=epydoc.apidoc.ClassDoc-class.html"><a title="epydoc.apidoc.ClassDoc" class="py-name" href="#" onclick="return doclink('link-4', 'ClassDoc', 'link-4');">ClassDoc</a></tt><tt class="py-op">)</t [...]
+<a name="L28"></a><tt class="py-lineno"> 28</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-5" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.write_class()=epydoc.docwriter.html.HTMLWriter-class.html#write_class,Method epydoc.docwriter.latex.LatexWriter.write_class()=epydoc.docwriter.latex.LatexWriter-class.html#write_class,Method epydoc.docwriter.plaintext.PlaintextWriter.write_class()=epydoc.docwriter.plainte [...]
+epydoc.docwriter.latex.LatexWriter.write_class
+epydoc.docwriter.plaintext.PlaintextWriter.write_class" class="py-name" href="#" onclick="return doclink('link-5', 'write_class', 'link-5');">write_class</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-name">api_doc</tt><tt class="py-op">)</tt> </tt>
+<a name="L29"></a><tt class="py-lineno"> 29</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">api_doc</tt><tt class="py-op">,</tt> <tt id="link-6" class="py-name" targets="Class epydoc.apidoc.RoutineDoc=epydoc.apidoc.RoutineDoc-class.html"><a title="epydoc.apidoc.RoutineDoc" class="py-name" href="#" onclick="return doclink('link-6', 'RoutineDoc', 'link-6');">RoutineDoc</a></tt><tt class="p [...]
+<a name="L30"></a><tt class="py-lineno"> 30</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-7" class="py-name" targets="Method epydoc.docwriter.plaintext.PlaintextWriter.write_function()=epydoc.docwriter.plaintext.PlaintextWriter-class.html#write_function"><a title="epydoc.docwriter.plaintext.PlaintextWriter.write_function" class="py-name" href="#" onclick="return doclink('link-7', 'write_function', 'link-7');">write_function</a [...]
+<a name="L31"></a><tt class="py-lineno"> 31</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L32"></a><tt class="py-lineno"> 32</tt>  <tt class="py-line">                <tt class="py-keyword">assert</tt> <tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-string">'%s not handled yet'</tt> <tt class="py-op">%</tt> <tt class="py-name">api_doc</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">)</tt> </tt>
+<a name="L33"></a><tt class="py-lineno"> 33</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
+<a name="L34"></a><tt class="py-lineno"> 34</tt>  <tt class="py-line">            <tt class="py-keyword">print</tt> <tt class="py-string">'\n\n'</tt> </tt>
+<a name="L35"></a><tt class="py-lineno"> 35</tt>  <tt class="py-line">            <tt class="py-keyword">print</tt> <tt class="py-string">''</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">)</tt> </tt>
+<a name="L36"></a><tt class="py-lineno"> 36</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> </tt>
+<a name="L37"></a><tt class="py-lineno"> 37</tt>  <tt class="py-line"> </tt>
+<a name="L38"></a><tt class="py-lineno"> 38</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">''</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L39"></a><tt class="py-lineno"> 39</tt>  <tt class="py-line"> </tt>
+<a name="PlaintextWriter.write_module"></a><div id="PlaintextWriter.write_module-def"><a name="L40"></a><tt class="py-lineno"> 40</tt> <a class="py-toggle" href="#" id="PlaintextWriter.write_module-toggle" onclick="return toggle('PlaintextWriter.write_module');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.plaintext.PlaintextWriter-class.html#write_module">write_module</a><tt class="py-op">(</tt><tt class="py-param">self</tt>< [...]
+</div><div id="PlaintextWriter.write_module-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="PlaintextWriter.write_module-expanded"><a name="L41"></a><tt class="py-lineno"> 41</tt>  <tt class="py-line">        <tt class="py-comment">#for n,v in mod_doc.variables.items():</tt> </tt>
+<a name="L42"></a><tt class="py-lineno"> 42</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#    print n, `v.value`, `v.value.value`</tt> </tt>
+<a name="L43"></a><tt class="py-lineno"> 43</tt>  <tt class="py-line"><tt class="py-comment"></tt>         </tt>
+<a name="L44"></a><tt class="py-lineno"> 44</tt>  <tt class="py-line">        <tt class="py-comment"># The cannonical name of the module.</tt> </tt>
+<a name="L45"></a><tt class="py-lineno"> 45</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-8" class="py-name" targets="Method epydoc.docwriter.latex.LatexWriter.section()=epydoc.docwriter.latex.LatexWriter-class.html#section,Method epydoc.docwriter.plaintext.PlaintextWriter.section()=epydoc.docwriter.plaintext.PlaintextWriter-class.html#section"><a title="e [...]
+epydoc.docwriter.plaintext.PlaintextWriter.section" class="py-name" href="#" onclick="return doclink('link-8', 'section', 'link-8');">section</a></tt><tt class="py-op">(</tt><tt class="py-string">'Module Name'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L46"></a><tt class="py-lineno"> 46</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'    %s\n\n'</tt> <tt class="py-op">%</tt> <tt class="py-name">mod_doc</tt><tt class="py-op">.</tt><tt id="link-9" class="py-name" targets="Variable epydoc.apidoc.GenericValueDoc.canonical_name=epydoc.apidoc.GenericValueDoc-class.html#canonical_name,Variable epydoc.apidoc.ValueDoc.canonical_name=epydoc.apidoc.ValueDoc-class.html#canonical [...]
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-9', 'canonical_name', 'link-9');">canonical_name</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L47"></a><tt class="py-lineno"> 47</tt>  <tt class="py-line"> </tt>
+<a name="L48"></a><tt class="py-lineno"> 48</tt>  <tt class="py-line">        <tt class="py-comment"># The module's description.</tt> </tt>
+<a name="L49"></a><tt class="py-lineno"> 49</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">mod_doc</tt><tt class="py-op">.</tt><tt id="link-10" class="py-name" targets="Variable epydoc.apidoc.APIDoc.descr=epydoc.apidoc.APIDoc-class.html#descr,Variable epydoc.cli.descr=epydoc.cli-module.html#descr,Method epydoc.docwriter.html.HTMLWriter.descr()=epydoc.docwriter.html.HTMLWriter-class.html#descr,Method epydoc.markup.ParseErro [...]
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-10', 'descr', 'link-10');">descr</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">,</tt> <tt id="link-11" class="py-name" targets="Variable epydoc.apidoc.UNKNOWN=epydoc.apidoc-module.html#UNKNOWN"><a title="epydoc.apidoc.UNKNOWN" class="py-name [...]
+<a name="L50"></a><tt class="py-lineno"> 50</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-12" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.section
+epydoc.docwriter.plaintext.PlaintextWriter.section" class="py-name" href="#" onclick="return doclink('link-12', 'section', 'link-8');">section</a></tt><tt class="py-op">(</tt><tt class="py-string">'Description'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L51"></a><tt class="py-lineno"> 51</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-name">mod_doc</tt><tt class="py-op">.</tt><tt id="link-13" class="py-name"><a title="epydoc.apidoc.APIDoc.descr
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-13', 'descr', 'link-10');">descr</a></tt><tt class="py-op">.</tt><tt id="link-14" class="py-name" targets="Method epydoc.markup.ConcatenatedDocstring.to_plaintext()=epydoc.markup.ConcatenatedDocstring-class.html#to_plaintext,Method epydoc.markup.ParsedDocstring.to_plaintext()=epydoc.markup.ParsedDocstring-class.html#to_plaintext,Method epydoc.markup.epytext.ParsedEpytextDocstring.to_plaint [...]
+epydoc.markup.ParsedDocstring.to_plaintext
+epydoc.markup.epytext.ParsedEpytextDocstring.to_plaintext
+epydoc.markup.epytext.to_plaintext
+epydoc.markup.javadoc.ParsedJavadocDocstring.to_plaintext
+epydoc.markup.plaintext.ParsedPlaintextDocstring.to_plaintext
+epydoc.markup.restructuredtext.ParsedRstDocstring.to_plaintext" class="py-name" href="#" onclick="return doclink('link-14', 'to_plaintext', 'link-14');">to_plaintext</a></tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">indent</tt><tt class="py-op">=</tt><tt class="py-number">4</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L52"></a><tt class="py-lineno"> 52</tt>  <tt class="py-line"> </tt>
+<a name="L53"></a><tt class="py-lineno"> 53</tt>  <tt class="py-line">        <tt class="py-comment">#out('metadata: %s\n\n' % mod_doc.metadata) # [xx] testing</tt> </tt>
+<a name="L54"></a><tt class="py-lineno"> 54</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L55"></a><tt class="py-lineno"> 55</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-15" class="py-name" targets="Method epydoc.docwriter.plaintext.PlaintextWriter.write_list()=epydoc.docwriter.plaintext.PlaintextWriter-class.html#write_list"><a title="epydoc.docwriter.plaintext.PlaintextWriter.write_list" class="py-name" href="#" onclick="return doclink('link-15', 'write_list', 'link-15');">write_list</a></tt><tt class="py-op">( [...]
+<a name="L56"></a><tt class="py-lineno"> 56</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-16" class="py-name"><a title="epydoc.docwriter.plaintext.PlaintextWriter.write_list" class="py-name" href="#" onclick="return doclink('link-16', 'write_list', 'link-15');">write_list</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-string">'Functions'</tt><tt class="py-op">,</tt> <tt class="py-nam [...]
+<a name="L57"></a><tt class="py-lineno"> 57</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-17" class="py-name"><a title="epydoc.docwriter.plaintext.PlaintextWriter.write_list" class="py-name" href="#" onclick="return doclink('link-17', 'write_list', 'link-15');">write_list</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-string">'Variables'</tt><tt class="py-op">,</tt> <tt class="py-nam [...]
+</div><a name="L58"></a><tt class="py-lineno"> 58</tt>  <tt class="py-line">        <tt class="py-comment"># hmm.. do this as just a flat list??</tt> </tt>
+<a name="L59"></a><tt class="py-lineno"> 59</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#self.write_list(out, 'Imports', mod_doc, imported=True, verbose=False)</tt> </tt>
+<a name="L60"></a><tt class="py-lineno"> 60</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="PlaintextWriter.baselist"></a><div id="PlaintextWriter.baselist-def"><a name="L61"></a><tt class="py-lineno"> 61</tt> <a class="py-toggle" href="#" id="PlaintextWriter.baselist-toggle" onclick="return toggle('PlaintextWriter.baselist');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.plaintext.PlaintextWriter-class.html#baselist">baselist</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt>  [...]
+</div><div id="PlaintextWriter.baselist-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="PlaintextWriter.baselist-expanded"><a name="L62"></a><tt class="py-lineno"> 62</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">class_doc</tt><tt class="py-op">.</tt><tt id="link-18" class="py-name" targets="Variable epydoc.apidoc.ClassDoc.bases=epydoc.apidoc.ClassDoc-class.html#bases"><a title="epydoc.apidoc.ClassDoc.bases" class="py-nam [...]
+<a name="L63"></a><tt class="py-lineno"> 63</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">'(unknown bases)'</tt> </tt>
+<a name="L64"></a><tt class="py-lineno"> 64</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">class_doc</tt><tt class="py-op">.</tt><tt id="link-20" class="py-name"><a title="epydoc.apidoc.ClassDoc.bases" class="py-name" href="#" onclick="return doclink('link-20', 'bases', 'link-18');">bases</a></tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt>  [...]
+<a name="L65"></a><tt class="py-lineno"> 65</tt>  <tt class="py-line">        <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-string">'('</tt> </tt>
+<a name="L66"></a><tt class="py-lineno"> 66</tt>  <tt class="py-line">        <tt class="py-name">class_parent</tt> <tt class="py-op">=</tt> <tt class="py-name">class_doc</tt><tt class="py-op">.</tt><tt id="link-21" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-21', 'canonical_name', 'link-9');">canonical_name</a></tt><tt class="py-op">.</tt><tt id="link-22" class="py-name" targets="Method epydoc.apidoc.DocIndex.container()=epydoc.apidoc.DocIndex-class.html#container,Method epydoc.apidoc.DottedName.container()=epydoc.apidoc.DottedName-class.html#container,Variable epydoc.apidoc.VariableDoc.container=epydoc.apidoc.VariableDoc-class.html#container"><a [...]
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-22', 'container', 'link-22');">container</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L67"></a><tt class="py-lineno"> 67</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">i</tt><tt class="py-op">,</tt> <tt class="py-name">base</tt> <tt class="py-keyword">in</tt> <tt class="py-name">enumerate</tt><tt class="py-op">(</tt><tt class="py-name">class_doc</tt><tt class="py-op">.</tt><tt id="link-23" class="py-name"><a title="epydoc.apidoc.ClassDoc.bases" class="py-name" href="#" onclick="return doclink('link-23', 'bases', 'link-18');" [...]
+<a name="L68"></a><tt class="py-lineno"> 68</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">base</tt><tt class="py-op">.</tt><tt id="link-24" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-24', 'canonical_name', 'link-9');">canonical_name</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L69"></a><tt class="py-lineno"> 69</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">base</tt><tt class="py-op">.</tt><tt id="link-25" class="py-name" targets="Variable epydoc.apidoc.ValueDoc.parse_repr=epydoc.apidoc.ValueDoc-class.html#parse_repr"><a title="epydoc.apidoc.ValueDoc.parse_repr" class="py-name" href="#" onclick="return doclink('link-25', 'parse_repr', 'link-25');">parse_repr</a></tt> <tt class="py-keyword">is</tt> <tt clas [...]
+<a name="L70"></a><tt class="py-lineno"> 70</tt>  <tt class="py-line">                    <tt class="py-name">s</tt> <tt class="py-op">+=</tt> <tt class="py-name">base</tt><tt class="py-op">.</tt><tt id="link-27" class="py-name"><a title="epydoc.apidoc.ValueDoc.parse_repr" class="py-name" href="#" onclick="return doclink('link-27', 'parse_repr', 'link-25');">parse_repr</a></tt> </tt>
+<a name="L71"></a><tt class="py-lineno"> 71</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L72"></a><tt class="py-lineno"> 72</tt>  <tt class="py-line">                    <tt class="py-name">s</tt> <tt class="py-op">+=</tt> <tt class="py-string">'??'</tt> </tt>
+<a name="L73"></a><tt class="py-lineno"> 73</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">base</tt><tt class="py-op">.</tt><tt id="link-28" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-28', 'canonical_name', 'link-9');">canonical_name</a></tt><tt class="py-op">.</tt><tt id="link-29" class="py-name"><a title="epydoc.apidoc.DocIndex.container
+epydoc.apidoc.DottedName.container
+epydoc.apidoc.VariableDoc.container" class="py-name" href="#" onclick="return doclink('link-29', 'container', 'link-22');">container</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-name">class_parent</tt><tt class="py-op">:</tt> </tt>
+<a name="L74"></a><tt class="py-lineno"> 74</tt>  <tt class="py-line">                <tt class="py-name">s</tt> <tt class="py-op">+=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">base</tt><tt class="py-op">.</tt><tt id="link-30" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-30', 'canonical_name', 'link-9');">canonical_name</a></tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L75"></a><tt class="py-lineno"> 75</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L76"></a><tt class="py-lineno"> 76</tt>  <tt class="py-line">                <tt class="py-name">s</tt> <tt class="py-op">+=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">base</tt><tt class="py-op">.</tt><tt id="link-31" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-31', 'canonical_name', 'link-9');">canonical_name</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L77"></a><tt class="py-lineno"> 77</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">i</tt> <tt class="py-op"><</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">class_doc</tt><tt class="py-op">.</tt><tt id="link-32" class="py-name"><a title="epydoc.apidoc.ClassDoc.bases" class="py-name" href="#" onclick="return doclink('link-32', 'bases', 'link-18');">bases</a></tt><tt class="py-op">)</tt><tt class="py-op">-</ [...]
+<a name="L78"></a><tt class="py-lineno"> 78</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">s</tt><tt class="py-op">+</tt><tt class="py-string">')'</tt> </tt>
+</div><a name="L79"></a><tt class="py-lineno"> 79</tt>  <tt class="py-line"> </tt>
+<a name="PlaintextWriter.write_class"></a><div id="PlaintextWriter.write_class-def"><a name="L80"></a><tt class="py-lineno"> 80</tt> <a class="py-toggle" href="#" id="PlaintextWriter.write_class-toggle" onclick="return toggle('PlaintextWriter.write_class');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.plaintext.PlaintextWriter-class.html#write_class">write_class</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt cla [...]
+</div><div id="PlaintextWriter.write_class-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="PlaintextWriter.write_class-expanded"><a name="L81"></a><tt class="py-lineno"> 81</tt>  <tt class="py-line">        <tt id="link-33" class="py-name" targets="Method epydoc.docwriter.plaintext.PlaintextWriter.baselist()=epydoc.docwriter.plaintext.PlaintextWriter-class.html#baselist"><a title="epydoc.docwriter.plaintext.PlaintextWriter.baselist" class="py-name" href="#" on [...]
+<a name="L82"></a><tt class="py-lineno"> 82</tt>  <tt class="py-line">         </tt>
+<a name="L83"></a><tt class="py-lineno"> 83</tt>  <tt class="py-line">        <tt class="py-comment"># If we're at the top level, then list the cannonical name of</tt> </tt>
+<a name="L84"></a><tt class="py-lineno"> 84</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># the class; otherwise, our parent will have already printed</tt> </tt>
+<a name="L85"></a><tt class="py-lineno"> 85</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># the name of the variable containing the class.</tt> </tt>
+<a name="L86"></a><tt class="py-lineno"> 86</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">prefix</tt> <tt class="py-op">==</tt> <tt class="py-string">''</tt><tt class="py-op">:</tt> </tt>
+<a name="L87"></a><tt class="py-lineno"> 87</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-35" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.section
+epydoc.docwriter.plaintext.PlaintextWriter.section" class="py-name" href="#" onclick="return doclink('link-35', 'section', 'link-8');">section</a></tt><tt class="py-op">(</tt><tt class="py-string">'Class Name'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L88"></a><tt class="py-lineno"> 88</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'    %s%s\n\n'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">class_doc</tt><tt class="py-op">.</tt><tt id="link-36" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-36', 'canonical_name', 'link-9');">canonical_name</a></tt><tt class="py-op">,</tt> <tt id="link-37" class="py-name"><a title="epydoc.docwriter.plaintext.PlaintextWriter.baselist" class="py-name" href="#" onclick="return doclink('link-37', 'baselist', 'link-33');">baselist</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L89"></a><tt class="py-lineno"> 89</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L90"></a><tt class="py-lineno"> 90</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-name">prefix</tt> <tt class="py-op">+</tt> <tt class="py-string">'class %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-38" class="py-name" targets="Method epydoc.docwriter.plaintext.PlaintextWriter.bold()=epydoc.docwriter.plaintext.PlaintextWriter-class.html#bold"><a title="epydoc.docwriter [...]
+<a name="L91"></a><tt class="py-lineno"> 91</tt>  <tt class="py-line"> </tt>
+<a name="L92"></a><tt class="py-lineno"> 92</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">verbose</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> </tt>
+<a name="L93"></a><tt class="py-lineno"> 93</tt>  <tt class="py-line"> </tt>
+<a name="L94"></a><tt class="py-lineno"> 94</tt>  <tt class="py-line">        <tt class="py-comment"># Indent the body</tt> </tt>
+<a name="L95"></a><tt class="py-lineno"> 95</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">prefix</tt> <tt class="py-op">!=</tt> <tt class="py-string">''</tt><tt class="py-op">:</tt> </tt>
+<a name="L96"></a><tt class="py-lineno"> 96</tt>  <tt class="py-line">            <tt class="py-name">prefix</tt> <tt class="py-op">+=</tt> <tt class="py-string">' |  '</tt> </tt>
+<a name="L97"></a><tt class="py-lineno"> 97</tt>  <tt class="py-line"> </tt>
+<a name="L98"></a><tt class="py-lineno"> 98</tt>  <tt class="py-line">        <tt class="py-comment"># The class's description.</tt> </tt>
+<a name="L99"></a><tt class="py-lineno"> 99</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">class_doc</tt><tt class="py-op">.</tt><tt id="link-41" class="py-name"><a title="epydoc.apidoc.APIDoc.descr
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-41', 'descr', 'link-10');">descr</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">,</tt> <tt id="link-42" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-42', 'UNKNOWN', 'link-11');">UNKNO [...]
+<a name="L100"></a><tt class="py-lineno">100</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">prefix</tt> <tt class="py-op">==</tt> <tt class="py-string">''</tt><tt class="py-op">:</tt> </tt>
+<a name="L101"></a><tt class="py-lineno">101</tt>  <tt class="py-line">                <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-43" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.section
+epydoc.docwriter.plaintext.PlaintextWriter.section" class="py-name" href="#" onclick="return doclink('link-43', 'section', 'link-8');">section</a></tt><tt class="py-op">(</tt><tt class="py-string">'Description'</tt><tt class="py-op">,</tt> <tt class="py-name">prefix</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L102"></a><tt class="py-lineno">102</tt>  <tt class="py-line">                <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-44" class="py-name" targets="Method epydoc.docwriter.plaintext.PlaintextWriter._descr()=epydoc.docwriter.plaintext.PlaintextWriter-class.html#_descr"><a title="epydoc.docwriter.plaintext.PlaintextWriter._descr" class="py-name" href="#" onclick="return doclink('link-44', '_descr', 'link- [...]
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-45', 'descr', 'link-10');">descr</a></tt><tt class="py-op">,</tt> <tt class="py-string">'    '</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L103"></a><tt class="py-lineno">103</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L104"></a><tt class="py-lineno">104</tt>  <tt class="py-line">                <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-46" class="py-name"><a title="epydoc.docwriter.plaintext.PlaintextWriter._descr" class="py-name" href="#" onclick="return doclink('link-46', '_descr', 'link-44');">_descr</a></tt><tt class="py-op">(</tt><tt class="py-name">class_doc</tt><tt class="py-op">.</tt><tt id="link-47" class="py [...]
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-47', 'descr', 'link-10');">descr</a></tt><tt class="py-op">,</tt> <tt class="py-name">prefix</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L105"></a><tt class="py-lineno">105</tt>  <tt class="py-line"> </tt>
+<a name="L106"></a><tt class="py-lineno">106</tt>  <tt class="py-line">        <tt class="py-comment"># List of nested classes in this class.</tt> </tt>
+<a name="L107"></a><tt class="py-lineno">107</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-48" class="py-name"><a title="epydoc.docwriter.plaintext.PlaintextWriter.write_list" class="py-name" href="#" onclick="return doclink('link-48', 'write_list', 'link-15');">write_list</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-string">'Methods'</tt><tt class="py-o [...]
+<a name="L108"></a><tt class="py-lineno">108</tt>  <tt class="py-line">                        <tt class="py-name">value_type</tt><tt class="py-op">=</tt><tt class="py-string">'instancemethod'</tt><tt class="py-op">,</tt> <tt class="py-name">prefix</tt><tt class="py-op">=</tt><tt class="py-name">prefix</tt><tt class="py-op">,</tt> </tt>
+<a name="L109"></a><tt class="py-lineno">109</tt>  <tt class="py-line">                        <tt class="py-name">noindent</tt><tt class="py-op">=</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">prefix</tt><tt class="py-op">)</tt><tt class="py-op">></tt><tt class="py-number">4</tt><tt class="py-op">)</tt> </tt>
+<a name="L110"></a><tt class="py-lineno">110</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-49" class="py-name"><a title="epydoc.docwriter.plaintext.PlaintextWriter.write_list" class="py-name" href="#" onclick="return doclink('link-49', 'write_list', 'link-15');">write_list</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-string">'Class Methods'</tt><tt class="py-op">,</tt> <tt class="p [...]
+<a name="L111"></a><tt class="py-lineno">111</tt>  <tt class="py-line">                        <tt class="py-name">value_type</tt><tt class="py-op">=</tt><tt class="py-string">'classmethod'</tt><tt class="py-op">,</tt> <tt class="py-name">prefix</tt><tt class="py-op">=</tt><tt class="py-name">prefix</tt><tt class="py-op">)</tt> </tt>
+<a name="L112"></a><tt class="py-lineno">112</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-50" class="py-name"><a title="epydoc.docwriter.plaintext.PlaintextWriter.write_list" class="py-name" href="#" onclick="return doclink('link-50', 'write_list', 'link-15');">write_list</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-string">'Static Methods'</tt><tt class="py-op">,</tt> <tt class=" [...]
+<a name="L113"></a><tt class="py-lineno">113</tt>  <tt class="py-line">                        <tt class="py-name">value_type</tt><tt class="py-op">=</tt><tt class="py-string">'staticmethod'</tt><tt class="py-op">,</tt> <tt class="py-name">prefix</tt><tt class="py-op">=</tt><tt class="py-name">prefix</tt><tt class="py-op">)</tt> </tt>
+<a name="L114"></a><tt class="py-lineno">114</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-51" class="py-name"><a title="epydoc.docwriter.plaintext.PlaintextWriter.write_list" class="py-name" href="#" onclick="return doclink('link-51', 'write_list', 'link-15');">write_list</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-string">'Nested Classes'</tt><tt class="py-op">,</tt> <tt class=" [...]
+<a name="L115"></a><tt class="py-lineno">115</tt>  <tt class="py-line">                        <tt class="py-name">value_type</tt><tt class="py-op">=</tt><tt class="py-string">'class'</tt><tt class="py-op">,</tt> <tt class="py-name">prefix</tt><tt class="py-op">=</tt><tt class="py-name">prefix</tt><tt class="py-op">)</tt> </tt>
+<a name="L116"></a><tt class="py-lineno">116</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-52" class="py-name"><a title="epydoc.docwriter.plaintext.PlaintextWriter.write_list" class="py-name" href="#" onclick="return doclink('link-52', 'write_list', 'link-15');">write_list</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-string">'Instance Variables'</tt><tt class="py-op">,</tt> <tt cla [...]
+<a name="L117"></a><tt class="py-lineno">117</tt>  <tt class="py-line">                        <tt class="py-name">value_type</tt><tt class="py-op">=</tt><tt class="py-string">'instancevariable'</tt><tt class="py-op">,</tt> <tt class="py-name">prefix</tt><tt class="py-op">=</tt><tt class="py-name">prefix</tt><tt class="py-op">)</tt> </tt>
+<a name="L118"></a><tt class="py-lineno">118</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-53" class="py-name"><a title="epydoc.docwriter.plaintext.PlaintextWriter.write_list" class="py-name" href="#" onclick="return doclink('link-53', 'write_list', 'link-15');">write_list</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-string">'Class Variables'</tt><tt class="py-op">,</tt> <tt class= [...]
+<a name="L119"></a><tt class="py-lineno">119</tt>  <tt class="py-line">                        <tt class="py-name">value_type</tt><tt class="py-op">=</tt><tt class="py-string">'classvariable'</tt><tt class="py-op">,</tt> <tt class="py-name">prefix</tt><tt class="py-op">=</tt><tt class="py-name">prefix</tt><tt class="py-op">)</tt> </tt>
+<a name="L120"></a><tt class="py-lineno">120</tt>  <tt class="py-line">         </tt>
+<a name="L121"></a><tt class="py-lineno">121</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-54" class="py-name"><a title="epydoc.docwriter.plaintext.PlaintextWriter.write_list" class="py-name" href="#" onclick="return doclink('link-54', 'write_list', 'link-15');">write_list</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-string">'Inherited Methods'</tt><tt class="py-op">,</tt> <tt clas [...]
+<a name="L122"></a><tt class="py-lineno">122</tt>  <tt class="py-line">                        <tt class="py-name">value_type</tt><tt class="py-op">=</tt><tt class="py-string">'method'</tt><tt class="py-op">,</tt> <tt class="py-name">prefix</tt><tt class="py-op">=</tt><tt class="py-name">prefix</tt><tt class="py-op">,</tt> </tt>
+<a name="L123"></a><tt class="py-lineno">123</tt>  <tt class="py-line">                        <tt class="py-name">inherited</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> <tt class="py-name">verbose</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
+<a name="L124"></a><tt class="py-lineno">124</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-55" class="py-name"><a title="epydoc.docwriter.plaintext.PlaintextWriter.write_list" class="py-name" href="#" onclick="return doclink('link-55', 'write_list', 'link-15');">write_list</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-string">'Inherited Instance Variables'</tt><tt class="py-op">,</t [...]
+<a name="L125"></a><tt class="py-lineno">125</tt>  <tt class="py-line">                        <tt class="py-name">value_type</tt><tt class="py-op">=</tt><tt class="py-string">'instancevariable'</tt><tt class="py-op">,</tt> <tt class="py-name">prefix</tt><tt class="py-op">=</tt><tt class="py-name">prefix</tt><tt class="py-op">,</tt> </tt>
+<a name="L126"></a><tt class="py-lineno">126</tt>  <tt class="py-line">                        <tt class="py-name">inherited</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> <tt class="py-name">verbose</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
+<a name="L127"></a><tt class="py-lineno">127</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-56" class="py-name"><a title="epydoc.docwriter.plaintext.PlaintextWriter.write_list" class="py-name" href="#" onclick="return doclink('link-56', 'write_list', 'link-15');">write_list</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-string">'Inherited Class Variables'</tt><tt class="py-op">,</tt>  [...]
+<a name="L128"></a><tt class="py-lineno">128</tt>  <tt class="py-line">                        <tt class="py-name">value_type</tt><tt class="py-op">=</tt><tt class="py-string">'classvariable'</tt><tt class="py-op">,</tt> <tt class="py-name">prefix</tt><tt class="py-op">=</tt><tt class="py-name">prefix</tt><tt class="py-op">,</tt> </tt>
+<a name="L129"></a><tt class="py-lineno">129</tt>  <tt class="py-line">                        <tt class="py-name">inherited</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> <tt class="py-name">verbose</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
+<a name="L130"></a><tt class="py-lineno">130</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-57" class="py-name"><a title="epydoc.docwriter.plaintext.PlaintextWriter.write_list" class="py-name" href="#" onclick="return doclink('link-57', 'write_list', 'link-15');">write_list</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-string">'Inherited Nested Classes'</tt><tt class="py-op">,</tt> < [...]
+<a name="L131"></a><tt class="py-lineno">131</tt>  <tt class="py-line">                        <tt class="py-name">value_type</tt><tt class="py-op">=</tt><tt class="py-string">'class'</tt><tt class="py-op">,</tt> <tt class="py-name">prefix</tt><tt class="py-op">=</tt><tt class="py-name">prefix</tt><tt class="py-op">,</tt> </tt>
+<a name="L132"></a><tt class="py-lineno">132</tt>  <tt class="py-line">                        <tt class="py-name">inherited</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> <tt class="py-name">verbose</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L133"></a><tt class="py-lineno">133</tt>  <tt class="py-line"> </tt>
+<a name="PlaintextWriter.write_variable"></a><div id="PlaintextWriter.write_variable-def"><a name="L134"></a><tt class="py-lineno">134</tt> <a class="py-toggle" href="#" id="PlaintextWriter.write_variable-toggle" onclick="return toggle('PlaintextWriter.write_variable');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.plaintext.PlaintextWriter-class.html#write_variable">write_variable</a><tt class="py-op">(</tt><tt class="py-para [...]
+</div><div id="PlaintextWriter.write_variable-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="PlaintextWriter.write_variable-expanded"><a name="L135"></a><tt class="py-lineno">135</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-58" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-58', 'name', 'link-39');">name</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name [...]
+<a name="L136"></a><tt class="py-lineno">136</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-name">prefix</tt><tt class="py-op">+</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-61" class="py-name"><a title="epydoc.docwriter.plaintext.PlaintextWriter.bold" class="py-name" href="#" onclick="return doclink('link-61', 'bold', 'link-38');">bold</a></tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-o [...]
+<a name="L137"></a><tt class="py-lineno">137</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-63" class="py-name" targets="Variable epydoc.apidoc.VariableDoc.value=epydoc.apidoc.VariableDoc-class.html#value"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-63', 'value', 'link-63');">value</a></tt> <tt class="py-keyword">not</tt> <tt [...]
+<a name="L138"></a><tt class="py-lineno">138</tt>  <tt class="py-line">            <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-65" class="py-name" targets="Variable epydoc.apidoc.VariableDoc.is_alias=epydoc.apidoc.VariableDoc-class.html#is_alias"><a title="epydoc.apidoc.VariableDoc.is_alias" class="py-name" href="#" onclick="return doclink('link-65', 'is_alias', 'link-65');">is_alias</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">True</tt> <tt class= [...]
+<a name="L139"></a><tt class="py-lineno">139</tt>  <tt class="py-line">            <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-66" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-66', 'value', 'link-63');">value</a></tt><tt class="py-op">.</tt><tt id="link-67" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-67', 'canonical_name', 'link-9');">canonical_name</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-68" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-68', 'UNKNOWN', 'link-11');">UNKNOWN</a></tt><tt class="py-op">)</tt><tt c [...]
+<a name="L140"></a><tt class="py-lineno">140</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">' = %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-69" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-69', 'value', 'link-63');">value</a></tt><tt class="py-op">.</tt><tt id="link-70" class="py-name"><a title="ep [...]
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-70', 'canonical_name', 'link-9');">canonical_name</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L141"></a><tt class="py-lineno">141</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-71" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-71', 'value', 'link-63');">value</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt id="link-72" class="py-name"><a title="epydoc.apidoc.UNKNOWN [...]
+<a name="L142"></a><tt class="py-lineno">142</tt>  <tt class="py-line">            <tt class="py-name">val_repr</tt> <tt class="py-op">=</tt> <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-73" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-73', 'value', 'link-63');">value</a></tt><tt class="py-op">.</tt><tt id="link-74" class="py-name" targets="Method epydoc.apidoc.ValueDoc.summary_pyval_repr()=epydo [...]
+<a name="L143"></a><tt class="py-lineno">143</tt>  <tt class="py-line">                <tt class="py-name">max_len</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cols</tt><tt class="py-op">-</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-75" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-75', 'name', 'link-39');">name</a></tt><tt class="py-op">)</ [...]
+<a name="L144"></a><tt class="py-lineno">144</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">' = %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">val_repr</tt><tt class="py-op">.</tt><tt id="link-76" class="py-name"><a title="epydoc.markup.ConcatenatedDocstring.to_plaintext
+epydoc.markup.ParsedDocstring.to_plaintext
+epydoc.markup.epytext.ParsedEpytextDocstring.to_plaintext
+epydoc.markup.epytext.to_plaintext
+epydoc.markup.javadoc.ParsedJavadocDocstring.to_plaintext
+epydoc.markup.plaintext.ParsedPlaintextDocstring.to_plaintext
+epydoc.markup.restructuredtext.ParsedRstDocstring.to_plaintext" class="py-name" href="#" onclick="return doclink('link-76', 'to_plaintext', 'link-14');">to_plaintext</a></tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L145"></a><tt class="py-lineno">145</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L146"></a><tt class="py-lineno">146</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">verbose</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> </tt>
+<a name="L147"></a><tt class="py-lineno">147</tt>  <tt class="py-line">        <tt class="py-name">prefix</tt> <tt class="py-op">+=</tt> <tt class="py-string">'    '</tt> <tt class="py-comment"># indent the body.</tt> </tt>
+<a name="L148"></a><tt class="py-lineno">148</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-77" class="py-name"><a title="epydoc.apidoc.APIDoc.descr
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-77', 'descr', 'link-10');">descr</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">,</tt> <tt id="link-78" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-78', 'UNKNOWN', 'link-11');">UNKNO [...]
+<a name="L149"></a><tt class="py-lineno">149</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-79" class="py-name"><a title="epydoc.docwriter.plaintext.PlaintextWriter._descr" class="py-name" href="#" onclick="return doclink('link-79', '_descr', 'link-44');">_descr</a></tt><tt class="py-op">(</tt><tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-80" class="py-name" [...]
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-80', 'descr', 'link-10');">descr</a></tt><tt class="py-op">,</tt> <tt class="py-name">prefix</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L150"></a><tt class="py-lineno">150</tt>  <tt class="py-line"> </tt>
+<a name="PlaintextWriter.write_property"></a><div id="PlaintextWriter.write_property-def"><a name="L151"></a><tt class="py-lineno">151</tt> <a class="py-toggle" href="#" id="PlaintextWriter.write_property-toggle" onclick="return toggle('PlaintextWriter.write_property');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.plaintext.PlaintextWriter-class.html#write_property">write_property</a><tt class="py-op">(</tt><tt class="py-para [...]
+<a name="L152"></a><tt class="py-lineno">152</tt>  <tt class="py-line">                       <tt class="py-param">verbose</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="PlaintextWriter.write_property-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="PlaintextWriter.write_property-expanded"><a name="L153"></a><tt class="py-lineno">153</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-81" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-81', 'name', 'link-39');">name</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name [...]
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-83', 'canonical_name', 'link-9');">canonical_name</a></tt> </tt>
+<a name="L154"></a><tt class="py-lineno">154</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-name">prefix</tt><tt class="py-op">+</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-84" class="py-name"><a title="epydoc.docwriter.plaintext.PlaintextWriter.bold" class="py-name" href="#" onclick="return doclink('link-84', 'bold', 'link-38');">bold</a></tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-o [...]
+<a name="L155"></a><tt class="py-lineno">155</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">verbose</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> </tt>
+<a name="L156"></a><tt class="py-lineno">156</tt>  <tt class="py-line">        <tt class="py-name">prefix</tt> <tt class="py-op">+=</tt> <tt class="py-string">'    '</tt> <tt class="py-comment"># indent the body.</tt> </tt>
+<a name="L157"></a><tt class="py-lineno">157</tt>  <tt class="py-line">             </tt>
+<a name="L158"></a><tt class="py-lineno">158</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">prop_doc</tt><tt class="py-op">.</tt><tt id="link-86" class="py-name"><a title="epydoc.apidoc.APIDoc.descr
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-86', 'descr', 'link-10');">descr</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">,</tt> <tt id="link-87" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-87', 'UNKNOWN', 'link-11');">UNKNO [...]
+<a name="L159"></a><tt class="py-lineno">159</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-88" class="py-name"><a title="epydoc.docwriter.plaintext.PlaintextWriter._descr" class="py-name" href="#" onclick="return doclink('link-88', '_descr', 'link-44');">_descr</a></tt><tt class="py-op">(</tt><tt class="py-name">prop_doc</tt><tt class="py-op">.</tt><tt id="link-89" class="py-name [...]
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-89', 'descr', 'link-10');">descr</a></tt><tt class="py-op">,</tt> <tt class="py-name">prefix</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L160"></a><tt class="py-lineno">160</tt>  <tt class="py-line"> </tt>
+<a name="L161"></a><tt class="py-lineno">161</tt>  <tt class="py-line"> </tt>
+<a name="PlaintextWriter.write_function"></a><div id="PlaintextWriter.write_function-def"><a name="L162"></a><tt class="py-lineno">162</tt> <a class="py-toggle" href="#" id="PlaintextWriter.write_function-toggle" onclick="return toggle('PlaintextWriter.write_function');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.plaintext.PlaintextWriter-class.html#write_function">write_function</a><tt class="py-op">(</tt><tt class="py-para [...]
+<a name="L163"></a><tt class="py-lineno">163</tt>  <tt class="py-line">                       <tt class="py-param">verbose</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="PlaintextWriter.write_function-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="PlaintextWriter.write_function-expanded"><a name="L164"></a><tt class="py-lineno">164</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-90" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-90', 'name', 'link-39');">name</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name [...]
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-92', 'canonical_name', 'link-9');">canonical_name</a></tt> </tt>
+<a name="L165"></a><tt class="py-lineno">165</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-93" class="py-name" targets="Method epydoc.docwriter.plaintext.PlaintextWriter.write_signature()=epydoc.docwriter.plaintext.PlaintextWriter-class.html#write_signature"><a title="epydoc.docwriter.plaintext.PlaintextWriter.write_signature" class="py-name" href="#" onclick="return doclink('link-93', 'write_signature', 'link-93');">write_signature</ [...]
+<a name="L166"></a><tt class="py-lineno">166</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">verbose</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> </tt>
+<a name="L167"></a><tt class="py-lineno">167</tt>  <tt class="py-line">         </tt>
+<a name="L168"></a><tt class="py-lineno">168</tt>  <tt class="py-line">        <tt class="py-name">prefix</tt> <tt class="py-op">+=</tt> <tt class="py-string">'    '</tt> <tt class="py-comment"># indent the body.</tt> </tt>
+<a name="L169"></a><tt class="py-lineno">169</tt>  <tt class="py-line">             </tt>
+<a name="L170"></a><tt class="py-lineno">170</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">func_doc</tt><tt class="py-op">.</tt><tt id="link-95" class="py-name"><a title="epydoc.apidoc.APIDoc.descr
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-95', 'descr', 'link-10');">descr</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">,</tt> <tt id="link-96" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-96', 'UNKNOWN', 'link-11');">UNKNO [...]
+<a name="L171"></a><tt class="py-lineno">171</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-97" class="py-name"><a title="epydoc.docwriter.plaintext.PlaintextWriter._descr" class="py-name" href="#" onclick="return doclink('link-97', '_descr', 'link-44');">_descr</a></tt><tt class="py-op">(</tt><tt class="py-name">func_doc</tt><tt class="py-op">.</tt><tt id="link-98" class="py-name [...]
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-98', 'descr', 'link-10');">descr</a></tt><tt class="py-op">,</tt> <tt class="py-name">prefix</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L172"></a><tt class="py-lineno">172</tt>  <tt class="py-line"> </tt>
+<a name="L173"></a><tt class="py-lineno">173</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">func_doc</tt><tt class="py-op">.</tt><tt id="link-99" class="py-name" targets="Variable epydoc.apidoc.RoutineDoc.return_descr=epydoc.apidoc.RoutineDoc-class.html#return_descr,Method epydoc.docwriter.html.HTMLWriter.return_descr()=epydoc.docwriter.html.HTMLWriter-class.html#return_descr"><a title="epydoc.apidoc.RoutineDoc.return_descr
+epydoc.docwriter.html.HTMLWriter.return_descr" class="py-name" href="#" onclick="return doclink('link-99', 'return_descr', 'link-99');">return_descr</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">,</tt> <tt id="link-100" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-100', 'UNKNOWN',  [...]
+<a name="L174"></a><tt class="py-lineno">174</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-101" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.section
+epydoc.docwriter.plaintext.PlaintextWriter.section" class="py-name" href="#" onclick="return doclink('link-101', 'section', 'link-8');">section</a></tt><tt class="py-op">(</tt><tt class="py-string">'Returns:'</tt><tt class="py-op">,</tt> <tt class="py-name">prefix</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L175"></a><tt class="py-lineno">175</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-102" class="py-name"><a title="epydoc.docwriter.plaintext.PlaintextWriter._descr" class="py-name" href="#" onclick="return doclink('link-102', '_descr', 'link-44');">_descr</a></tt><tt class="py-op">(</tt><tt class="py-name">func_doc</tt><tt class="py-op">.</tt><tt id="link-103" class="py-n [...]
+epydoc.docwriter.html.HTMLWriter.return_descr" class="py-name" href="#" onclick="return doclink('link-103', 'return_descr', 'link-99');">return_descr</a></tt><tt class="py-op">,</tt> <tt class="py-name">prefix</tt><tt class="py-op">+</tt><tt class="py-string">'    '</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L176"></a><tt class="py-lineno">176</tt>  <tt class="py-line"> </tt>
+<a name="L177"></a><tt class="py-lineno">177</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">func_doc</tt><tt class="py-op">.</tt><tt id="link-104" class="py-name" targets="Variable epydoc.apidoc.RoutineDoc.return_type=epydoc.apidoc.RoutineDoc-class.html#return_type,Method epydoc.docwriter.html.HTMLWriter.return_type()=epydoc.docwriter.html.HTMLWriter-class.html#return_type"><a title="epydoc.apidoc.RoutineDoc.return_type
+epydoc.docwriter.html.HTMLWriter.return_type" class="py-name" href="#" onclick="return doclink('link-104', 'return_type', 'link-104');">return_type</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">,</tt> <tt id="link-105" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-105', 'UNKNOWN', ' [...]
+<a name="L178"></a><tt class="py-lineno">178</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-106" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.section
+epydoc.docwriter.plaintext.PlaintextWriter.section" class="py-name" href="#" onclick="return doclink('link-106', 'section', 'link-8');">section</a></tt><tt class="py-op">(</tt><tt class="py-string">'Return Type:'</tt><tt class="py-op">,</tt> <tt class="py-name">prefix</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L179"></a><tt class="py-lineno">179</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-107" class="py-name"><a title="epydoc.docwriter.plaintext.PlaintextWriter._descr" class="py-name" href="#" onclick="return doclink('link-107', '_descr', 'link-44');">_descr</a></tt><tt class="py-op">(</tt><tt class="py-name">func_doc</tt><tt class="py-op">.</tt><tt id="link-108" class="py-n [...]
+epydoc.docwriter.html.HTMLWriter.return_type" class="py-name" href="#" onclick="return doclink('link-108', 'return_type', 'link-104');">return_type</a></tt><tt class="py-op">,</tt> <tt class="py-name">prefix</tt><tt class="py-op">+</tt><tt class="py-string">'    '</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L180"></a><tt class="py-lineno">180</tt>  <tt class="py-line"> </tt>
+<a name="PlaintextWriter.write_signature"></a><div id="PlaintextWriter.write_signature-def"><a name="L181"></a><tt class="py-lineno">181</tt> <a class="py-toggle" href="#" id="PlaintextWriter.write_signature-toggle" onclick="return toggle('PlaintextWriter.write_signature');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.plaintext.PlaintextWriter-class.html#write_signature">write_signature</a><tt class="py-op">(</tt><tt class="p [...]
+</div><div id="PlaintextWriter.write_signature-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="PlaintextWriter.write_signature-expanded"><a name="L182"></a><tt class="py-lineno">182</tt>  <tt class="py-line">        <tt class="py-name">args</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-109" class="py-name" targets="Method epydoc.docwriter.plaintext.PlaintextWriter.fmt_arg()=epydoc.docwri [...]
+<a name="L183"></a><tt class="py-lineno">183</tt>  <tt class="py-line">                <tt class="py-keyword">in</tt> <tt class="py-name">zip</tt><tt class="py-op">(</tt><tt class="py-name">func_doc</tt><tt class="py-op">.</tt><tt id="link-110" class="py-name" targets="Variable epydoc.apidoc.RoutineDoc.posargs=epydoc.apidoc.RoutineDoc-class.html#posargs"><a title="epydoc.apidoc.RoutineDoc.posargs" class="py-name" href="#" onclick="return doclink('link-110', 'posargs', 'link-110');">posar [...]
+<a name="L184"></a><tt class="py-lineno">184</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">func_doc</tt><tt class="py-op">.</tt><tt id="link-112" class="py-name" targets="Variable epydoc.apidoc.RoutineDoc.vararg=epydoc.apidoc.RoutineDoc-class.html#vararg"><a title="epydoc.apidoc.RoutineDoc.vararg" class="py-name" href="#" onclick="return doclink('link-112', 'vararg', 'link-112');">vararg</a></tt><tt class="py-op">:</tt> <tt class="py-name">args</tt> [...]
+<a name="L185"></a><tt class="py-lineno">185</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">func_doc</tt><tt class="py-op">.</tt><tt id="link-114" class="py-name" targets="Variable epydoc.apidoc.RoutineDoc.kwarg=epydoc.apidoc.RoutineDoc-class.html#kwarg"><a title="epydoc.apidoc.RoutineDoc.kwarg" class="py-name" href="#" onclick="return doclink('link-114', 'kwarg', 'link-114');">kwarg</a></tt><tt class="py-op">:</tt> <tt class="py-name">args</tt><tt c [...]
+<a name="L186"></a><tt class="py-lineno">186</tt>  <tt class="py-line"> </tt>
+<a name="L187"></a><tt class="py-lineno">187</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-name">prefix</tt><tt class="py-op">+</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-116" class="py-name"><a title="epydoc.docwriter.plaintext.PlaintextWriter.bold" class="py-name" href="#" onclick="return doclink('link-116', 'bold', 'link-38');">bold</a></tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py [...]
+<a name="L188"></a><tt class="py-lineno">188</tt>  <tt class="py-line">        <tt class="py-name">x</tt> <tt class="py-op">=</tt> <tt class="py-name">left</tt> <tt class="py-op">=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">prefix</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-118" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return docl [...]
+<a name="L189"></a><tt class="py-lineno">189</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">i</tt><tt class="py-op">,</tt> <tt id="link-119" class="py-name" targets="Method epydoc.markup.Field.arg()=epydoc.markup.Field-class.html#arg"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-119', 'arg', 'link-119');">arg</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">enumerate</tt><tt class="py-op">(</tt [...]
+<a name="L190"></a><tt class="py-lineno">190</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">x</tt> <tt class="py-op">></tt> <tt class="py-name">left</tt> <tt class="py-keyword">and</tt> <tt class="py-name">x</tt><tt class="py-op">+</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-120" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-120', 'arg', 'link-119');">arg</a>< [...]
+<a name="L191"></a><tt class="py-lineno">191</tt>  <tt class="py-line">                <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">+</tt><tt class="py-name">prefix</tt> <tt class="py-op">+</tt> <tt class="py-string">' '</tt><tt class="py-op">*</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-121" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-121' [...]
+<a name="L192"></a><tt class="py-lineno">192</tt>  <tt class="py-line">                <tt class="py-name">x</tt> <tt class="py-op">=</tt> <tt class="py-name">left</tt> </tt>
+<a name="L193"></a><tt class="py-lineno">193</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt id="link-122" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-122', 'arg', 'link-119');">arg</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L194"></a><tt class="py-lineno">194</tt>  <tt class="py-line">            <tt class="py-name">x</tt> <tt class="py-op">+=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-123" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-123', 'arg', 'link-119');">arg</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L195"></a><tt class="py-lineno">195</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">i</tt> <tt class="py-op"><</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">args</tt><tt class="py-op">)</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L196"></a><tt class="py-lineno">196</tt>  <tt class="py-line">                <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">', '</tt><tt class="py-op">)</tt> </tt>
+<a name="L197"></a><tt class="py-lineno">197</tt>  <tt class="py-line">                <tt class="py-name">x</tt> <tt class="py-op">+=</tt> <tt class="py-number">2</tt> </tt>
+<a name="L198"></a><tt class="py-lineno">198</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-string">')\n'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L199"></a><tt class="py-lineno">199</tt>  <tt class="py-line"> </tt>
+<a name="L200"></a><tt class="py-lineno">200</tt>  <tt class="py-line">    <tt class="py-comment"># [xx] tuple args!</tt> </tt>
+<a name="PlaintextWriter.fmt_arg"></a><div id="PlaintextWriter.fmt_arg-def"><a name="L201"></a><tt class="py-lineno">201</tt> <a class="py-toggle" href="#" id="PlaintextWriter.fmt_arg-toggle" onclick="return toggle('PlaintextWriter.fmt_arg');">-</a><tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.plaintext.PlaintextWriter-class.html#fmt_arg">fmt_arg</a><tt class="py-op">(</tt><tt class="py-param">self</tt><t [...]
+</div><div id="PlaintextWriter.fmt_arg-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="PlaintextWriter.fmt_arg-expanded"><a name="L202"></a><tt class="py-lineno">202</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">default</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L203"></a><tt class="py-lineno">203</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">'%s'</tt> <tt class="py-op">%</tt> <tt id="link-124" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-124', 'name', 'link-39');">name</a></tt> </tt>
+<a name="L204"></a><tt class="py-lineno">204</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L205"></a><tt class="py-lineno">205</tt>  <tt class="py-line">            <tt class="py-name">default_repr</tt> <tt class="py-op">=</tt> <tt class="py-name">default</tt><tt class="py-op">.</tt><tt id="link-125" class="py-name"><a title="epydoc.apidoc.ValueDoc.summary_pyval_repr" class="py-name" href="#" onclick="return doclink('link-125', 'summary_pyval_repr', 'link-74');">summary_pyval_repr</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L206"></a><tt class="py-lineno">206</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">'%s=%s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt id="link-126" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-126', 'name', 'link-39');">name</a></tt><tt class="py-op">,</tt> <tt class="py-name">default_repr</tt><tt class="py-op">.</tt><tt id="link-127" class="py-name" [...]
+epydoc.markup.ParsedDocstring.to_plaintext
+epydoc.markup.epytext.ParsedEpytextDocstring.to_plaintext
+epydoc.markup.epytext.to_plaintext
+epydoc.markup.javadoc.ParsedJavadocDocstring.to_plaintext
+epydoc.markup.plaintext.ParsedPlaintextDocstring.to_plaintext
+epydoc.markup.restructuredtext.ParsedRstDocstring.to_plaintext" class="py-name" href="#" onclick="return doclink('link-127', 'to_plaintext', 'link-14');">to_plaintext</a></tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L207"></a><tt class="py-lineno">207</tt>  <tt class="py-line"> </tt>
+<a name="PlaintextWriter.write_list"></a><div id="PlaintextWriter.write_list-def"><a name="L208"></a><tt class="py-lineno">208</tt> <a class="py-toggle" href="#" id="PlaintextWriter.write_list-toggle" onclick="return toggle('PlaintextWriter.write_list');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.plaintext.PlaintextWriter-class.html#write_list">write_list</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="p [...]
+<a name="L209"></a><tt class="py-lineno">209</tt>  <tt class="py-line">                   <tt class="py-param">inherited</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> <tt class="py-param">prefix</tt><tt class="py-op">=</tt><tt class="py-string">''</tt><tt class="py-op">,</tt> <tt class="py-param">noindent</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> </tt>
+<a name="L210"></a><tt class="py-lineno">210</tt>  <tt class="py-line">                   <tt class="py-param">verbose</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="PlaintextWriter.write_list-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="PlaintextWriter.write_list-expanded"><a name="L211"></a><tt class="py-lineno">211</tt>  <tt class="py-line">        <tt class="py-comment"># Get a list of the VarDocs we should describe.</tt> </tt>
+<a name="L212"></a><tt class="py-lineno">212</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt id="link-128" class="py-name"><a title="epydoc.apidoc.ClassDoc" class="py-name" href="#" onclick="return doclink('link-128', 'ClassDoc', 'link-4');">ClassDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L213"></a><tt class="py-lineno">213</tt>  <tt class="py-line">            <tt class="py-name">var_docs</tt> <tt class="py-op">=</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-129" class="py-name" targets="Method epydoc.apidoc.ClassDoc.select_variables()=epydoc.apidoc.ClassDoc-class.html#select_variables,Method epydoc.apidoc.ModuleDoc.select_variables()=epydoc.apidoc.ModuleDoc-class.html#select_variables"><a title="epydoc.apidoc.ClassDoc.select_variables
+epydoc.apidoc.ModuleDoc.select_variables" class="py-name" href="#" onclick="return doclink('link-129', 'select_variables', 'link-129');">select_variables</a></tt><tt class="py-op">(</tt><tt class="py-name">value_type</tt><tt class="py-op">=</tt><tt class="py-name">value_type</tt><tt class="py-op">,</tt> </tt>
+<a name="L214"></a><tt class="py-lineno">214</tt>  <tt class="py-line">                                            <tt class="py-name">imported</tt><tt class="py-op">=</tt><tt class="py-name">imported</tt><tt class="py-op">,</tt> </tt>
+<a name="L215"></a><tt class="py-lineno">215</tt>  <tt class="py-line">                                            <tt class="py-name">inherited</tt><tt class="py-op">=</tt><tt class="py-name">inherited</tt><tt class="py-op">)</tt> </tt>
+<a name="L216"></a><tt class="py-lineno">216</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L217"></a><tt class="py-lineno">217</tt>  <tt class="py-line">            <tt class="py-name">var_docs</tt> <tt class="py-op">=</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-130" class="py-name"><a title="epydoc.apidoc.ClassDoc.select_variables
+epydoc.apidoc.ModuleDoc.select_variables" class="py-name" href="#" onclick="return doclink('link-130', 'select_variables', 'link-129');">select_variables</a></tt><tt class="py-op">(</tt><tt class="py-name">value_type</tt><tt class="py-op">=</tt><tt class="py-name">value_type</tt><tt class="py-op">,</tt> </tt>
+<a name="L218"></a><tt class="py-lineno">218</tt>  <tt class="py-line">                                            <tt class="py-name">imported</tt><tt class="py-op">=</tt><tt class="py-name">imported</tt><tt class="py-op">)</tt> </tt>
+<a name="L219"></a><tt class="py-lineno">219</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">var_docs</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> </tt>
+<a name="L220"></a><tt class="py-lineno">220</tt>  <tt class="py-line"> </tt>
+<a name="L221"></a><tt class="py-lineno">221</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-name">prefix</tt><tt class="py-op">+</tt><tt class="py-string">'\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L222"></a><tt class="py-lineno">222</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">noindent</tt><tt class="py-op">:</tt> </tt>
+<a name="L223"></a><tt class="py-lineno">223</tt>  <tt class="py-line">            <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-131" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.section
+epydoc.docwriter.plaintext.PlaintextWriter.section" class="py-name" href="#" onclick="return doclink('link-131', 'section', 'link-8');">section</a></tt><tt class="py-op">(</tt><tt class="py-name">heading</tt><tt class="py-op">,</tt> <tt class="py-name">prefix</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L224"></a><tt class="py-lineno">224</tt>  <tt class="py-line">            <tt class="py-name">prefix</tt> <tt class="py-op">+=</tt> <tt class="py-string">'    '</tt> </tt>
+<a name="L225"></a><tt class="py-lineno">225</tt>  <tt class="py-line"> </tt>
+<a name="L226"></a><tt class="py-lineno">226</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">i</tt><tt class="py-op">,</tt> <tt class="py-name">var_doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">enumerate</tt><tt class="py-op">(</tt><tt class="py-name">var_docs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L227"></a><tt class="py-lineno">227</tt>  <tt class="py-line">            <tt class="py-name">val_doc</tt><tt class="py-op">,</tt> <tt id="link-132" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-132', 'name', 'link-39');">name</a></tt> <tt class="py-op">=</tt> <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-133" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href=" [...]
+<a name="L228"></a><tt class="py-lineno">228</tt>  <tt class="py-line"> </tt>
+<a name="L229"></a><tt class="py-lineno">229</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">verbose</tt><tt class="py-op">:</tt> </tt>
+<a name="L230"></a><tt class="py-lineno">230</tt>  <tt class="py-line">                <tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-name">prefix</tt><tt class="py-op">+</tt><tt class="py-string">'\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L231"></a><tt class="py-lineno">231</tt>  <tt class="py-line"> </tt>
+<a name="L232"></a><tt class="py-lineno">232</tt>  <tt class="py-line">            <tt class="py-comment"># hmm:</tt> </tt>
+<a name="L233"></a><tt class="py-lineno">233</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">verbose</tt><tt class="py-op">:</tt> </tt>
+<a name="L234"></a><tt class="py-lineno">234</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt id="link-135" class="py-name"><a title="epydoc.apidoc.ClassDoc" class="py-name" href="#" onclick="return doclink('link-135', 'ClassDoc', 'link-4');">ClassDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L235"></a><tt class="py-lineno">235</tt>  <tt class="py-line">                    <tt id="link-136" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-136', 'name', 'link-39');">name</a></tt> <tt class="py-op">=</tt> <tt class="py-name">var_doc</tt><tt class="py-op">.</tt><tt id="link-137" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-137', 'canonical_name', 'link-9');">canonical_name</a></tt> </tt>
+<a name="L236"></a><tt class="py-lineno">236</tt>  <tt class="py-line">                <tt class="py-keyword">elif</tt> <tt class="py-name">val_doc</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-138" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-138', 'UNKNOWN', 'link-11');">UNKNOWN</a></tt><tt class="py-op">)</tt><tt cl [...]
+<a name="L237"></a><tt class="py-lineno">237</tt>  <tt class="py-line">                    <tt id="link-139" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-139', 'name', 'link-39');">name</a></tt> <tt class="py-op">=</tt> <tt class="py-name">val_doc</tt><tt class="py-op">.</tt><tt id="link-140" class="py-name"><a title="epydoc.apidoc.GenericValueDoc.canonical_name
+epydoc.apidoc.ValueDoc.canonical_name
+epydoc.apidoc.VariableDoc.canonical_name" class="py-name" href="#" onclick="return doclink('link-140', 'canonical_name', 'link-9');">canonical_name</a></tt> </tt>
+<a name="L238"></a><tt class="py-lineno">238</tt>  <tt class="py-line">                     </tt>
+<a name="L239"></a><tt class="py-lineno">239</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">val_doc</tt><tt class="py-op">,</tt> <tt id="link-141" class="py-name"><a title="epydoc.apidoc.RoutineDoc" class="py-name" href="#" onclick="return doclink('link-141', 'RoutineDoc', 'link-6');">RoutineDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L240"></a><tt class="py-lineno">240</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-142" class="py-name"><a title="epydoc.docwriter.plaintext.PlaintextWriter.write_function" class="py-name" href="#" onclick="return doclink('link-142', 'write_function', 'link-7');">write_function</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-name">val_doc</tt><tt class="py-op">,</tt> < [...]
+<a name="L241"></a><tt class="py-lineno">241</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">val_doc</tt><tt class="py-op">,</tt> <tt id="link-144" class="py-name" targets="Class epydoc.apidoc.PropertyDoc=epydoc.apidoc.PropertyDoc-class.html"><a title="epydoc.apidoc.PropertyDoc" class="py-name" href="#" onclick="return doclink('link-144', 'PropertyDoc', 'link-144');">PropertyDoc</a></tt> [...]
+<a name="L242"></a><tt class="py-lineno">242</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-145" class="py-name" targets="Method epydoc.docwriter.plaintext.PlaintextWriter.write_property()=epydoc.docwriter.plaintext.PlaintextWriter-class.html#write_property"><a title="epydoc.docwriter.plaintext.PlaintextWriter.write_property" class="py-name" href="#" onclick="return doclink('link-145', 'write_property', 'link-145');">write_prop [...]
+<a name="L243"></a><tt class="py-lineno">243</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">val_doc</tt><tt class="py-op">,</tt> <tt id="link-147" class="py-name"><a title="epydoc.apidoc.ClassDoc" class="py-name" href="#" onclick="return doclink('link-147', 'ClassDoc', 'link-4');">ClassDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L244"></a><tt class="py-lineno">244</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-148" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.write_class
+epydoc.docwriter.latex.LatexWriter.write_class
+epydoc.docwriter.plaintext.PlaintextWriter.write_class" class="py-name" href="#" onclick="return doclink('link-148', 'write_class', 'link-5');">write_class</a></tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-name">val_doc</tt><tt class="py-op">,</tt> <tt id="link-149" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-149', 'name', 'link-39');">name</a></tt><tt class="py-op">,</tt [...]
+<a name="L245"></a><tt class="py-lineno">245</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L246"></a><tt class="py-lineno">246</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-150" class="py-name" targets="Method epydoc.docwriter.plaintext.PlaintextWriter.write_variable()=epydoc.docwriter.plaintext.PlaintextWriter-class.html#write_variable"><a title="epydoc.docwriter.plaintext.PlaintextWriter.write_variable" class="py-name" href="#" onclick="return doclink('link-150', 'write_variable', 'link-150');">write_vari [...]
+</div><a name="L247"></a><tt class="py-lineno">247</tt>  <tt class="py-line"> </tt>
+<a name="PlaintextWriter._descr"></a><div id="PlaintextWriter._descr-def"><a name="L248"></a><tt class="py-lineno">248</tt> <a class="py-toggle" href="#" id="PlaintextWriter._descr-toggle" onclick="return toggle('PlaintextWriter._descr');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.plaintext.PlaintextWriter-class.html#_descr">_descr</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class=" [...]
+</div><div id="PlaintextWriter._descr-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="PlaintextWriter._descr-expanded"><a name="L249"></a><tt class="py-lineno">249</tt>  <tt class="py-line">        <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt id="link-152" class="py-name"><a title="epydoc.apidoc.APIDoc.descr
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-152', 'descr', 'link-10');">descr</a></tt><tt class="py-op">.</tt><tt id="link-153" class="py-name"><a title="epydoc.markup.ConcatenatedDocstring.to_plaintext
+epydoc.markup.ParsedDocstring.to_plaintext
+epydoc.markup.epytext.ParsedEpytextDocstring.to_plaintext
+epydoc.markup.epytext.to_plaintext
+epydoc.markup.javadoc.ParsedJavadocDocstring.to_plaintext
+epydoc.markup.plaintext.ParsedPlaintextDocstring.to_plaintext
+epydoc.markup.restructuredtext.ParsedRstDocstring.to_plaintext" class="py-name" href="#" onclick="return doclink('link-153', 'to_plaintext', 'link-14');">to_plaintext</a></tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">indent</tt><tt class="py-op">=</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">prefix</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">rstrip</t [...]
+<a name="L250"></a><tt class="py-lineno">250</tt>  <tt class="py-line">        <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-string">'\n'</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-name">prefix</tt><tt class="py-op">+</tt><tt class="py-name">l</tt><tt class="py-op">[</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">prefix</tt><tt class="py-op" [...]
+<a name="L251"></a><tt class="py-lineno">251</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">s</tt><tt class="py-op">+</tt><tt class="py-string">'\n'</tt><tt class="py-comment">#+prefix+'\n'</tt> </tt>
+</div><a name="L252"></a><tt class="py-lineno">252</tt>  <tt class="py-line">                                </tt>
+<a name="L253"></a><tt class="py-lineno">253</tt>  <tt class="py-line"> </tt>
+<a name="L254"></a><tt class="py-lineno">254</tt>  <tt class="py-line"><tt class="py-comment">#    def drawline(self, s, x):</tt> </tt>
+<a name="L255"></a><tt class="py-lineno">255</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#        s = re.sub(r'(?m)^(.{%s}) ' % x, r'\1|', s)</tt> </tt>
+<a name="L256"></a><tt class="py-lineno">256</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#        return re.sub(r'(?m)^( {,%s})$(?=\n)' % x, x*' '+'|', s)</tt> </tt>
+<a name="L257"></a><tt class="py-lineno">257</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L258"></a><tt class="py-lineno">258</tt>  <tt class="py-line">         </tt>
+<a name="L259"></a><tt class="py-lineno">259</tt>  <tt class="py-line">    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L260"></a><tt class="py-lineno">260</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># Helpers</tt> </tt>
+<a name="L261"></a><tt class="py-lineno">261</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L262"></a><tt class="py-lineno">262</tt>  <tt class="py-line"><tt class="py-comment"></tt>     </tt>
+<a name="PlaintextWriter.bold"></a><div id="PlaintextWriter.bold-def"><a name="L263"></a><tt class="py-lineno">263</tt> <a class="py-toggle" href="#" id="PlaintextWriter.bold-toggle" onclick="return toggle('PlaintextWriter.bold');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.plaintext.PlaintextWriter-class.html#bold">bold</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">te [...]
+</div><div id="PlaintextWriter.bold-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="PlaintextWriter.bold-expanded"><a name="L264"></a><tt class="py-lineno">264</tt>  <tt class="py-line">        <tt class="py-docstring">"""Write a string in bold by overstriking."""</tt> </tt>
+<a name="L265"></a><tt class="py-lineno">265</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">''</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">ch</tt><tt class="py-op">+</tt><tt class="py-string">'\b'</tt><tt class="py-op">+</tt><tt class="py-name">ch</tt> <tt class="py-keyword">for</tt> <tt class="py-name">ch</tt> <tt class="py-keyword">in</tt> <tt class="py-name">tex [...]
+</div><a name="L266"></a><tt class="py-lineno">266</tt>  <tt class="py-line"> </tt>
+<a name="PlaintextWriter.title"></a><div id="PlaintextWriter.title-def"><a name="L267"></a><tt class="py-lineno">267</tt> <a class="py-toggle" href="#" id="PlaintextWriter.title-toggle" onclick="return toggle('PlaintextWriter.title');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.plaintext.PlaintextWriter-class.html#title">title</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-par [...]
+</div><div id="PlaintextWriter.title-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="PlaintextWriter.title-expanded"><a name="L268"></a><tt class="py-lineno">268</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">' '</tt><tt class="py-op">*</tt><tt class="py-name">indent</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-154" class="py-name"><a title="epydoc.docwriter.plaintex [...]
+</div><a name="L269"></a><tt class="py-lineno">269</tt>  <tt class="py-line"> </tt>
+<a name="PlaintextWriter.section"></a><div id="PlaintextWriter.section-def"><a name="L270"></a><tt class="py-lineno">270</tt> <a class="py-toggle" href="#" id="PlaintextWriter.section-toggle" onclick="return toggle('PlaintextWriter.section');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.plaintext.PlaintextWriter-class.html#section">section</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt c [...]
+</div><div id="PlaintextWriter.section-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="PlaintextWriter.section-expanded"><a name="L271"></a><tt class="py-lineno">271</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">indent</tt> <tt class="py-op">==</tt> <tt class="py-string">''</tt><tt class="py-op">:</tt> </tt>
+<a name="L272"></a><tt class="py-lineno">272</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">indent</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-155" class="py-name"><a title="epydoc.docwriter.plaintext.PlaintextWriter.bold" class="py-name" href="#" onclick="return doclink('link-155', 'bold', 'link-38');">bold</a></tt><tt class="py-op">(</tt><tt class="py-name">text</tt><tt class="py-op">.</tt [...]
+<a name="L273"></a><tt class="py-lineno">273</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L274"></a><tt class="py-lineno">274</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">indent</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-156" class="py-name"><a title="epydoc.docwriter.plaintext.PlaintextWriter.bold" class="py-name" href="#" onclick="return doclink('link-156', 'bold', 'link-38');">bold</a></tt><tt class="py-op">(</tt><tt class="py-name">text</tt><tt class="py-op">.</tt [...]
+</div></div><a name="L275"></a><tt class="py-lineno">275</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:09:42 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.docwriter.plaintext.PlaintextWriter-class.html b/doc/api/epydoc.docwriter.plaintext.PlaintextWriter-class.html
new file mode 100644
index 0000000..2892c30
--- /dev/null
+++ b/doc/api/epydoc.docwriter.plaintext.PlaintextWriter-class.html
@@ -0,0 +1,407 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.docwriter.plaintext.PlaintextWriter</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.docwriter-module.html">Package docwriter</a> ::
+        <a href="epydoc.docwriter.plaintext-module.html">Module plaintext</a> ::
+        Class PlaintextWriter
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.docwriter.plaintext.PlaintextWriter-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class PlaintextWriter</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.docwriter.plaintext-pysrc.html#PlaintextWriter">source code</a></span></p>
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="write"></a><span class="summary-sig-name">write</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">api_doc</span>,
+        <span class="summary-sig-arg">**options</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.plaintext-pysrc.html#PlaintextWriter.write">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="write_module"></a><span class="summary-sig-name">write_module</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">out</span>,
+        <span class="summary-sig-arg">mod_doc</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.plaintext-pysrc.html#PlaintextWriter.write_module">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="baselist"></a><span class="summary-sig-name">baselist</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">class_doc</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.plaintext-pysrc.html#PlaintextWriter.baselist">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="write_class"></a><span class="summary-sig-name">write_class</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">out</span>,
+        <span class="summary-sig-arg">class_doc</span>,
+        <span class="summary-sig-arg">name</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">prefix</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>,
+        <span class="summary-sig-arg">verbose</span>=<span class="summary-sig-default">True</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.plaintext-pysrc.html#PlaintextWriter.write_class">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="write_variable"></a><span class="summary-sig-name">write_variable</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">out</span>,
+        <span class="summary-sig-arg">var_doc</span>,
+        <span class="summary-sig-arg">name</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">prefix</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>,
+        <span class="summary-sig-arg">verbose</span>=<span class="summary-sig-default">True</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.plaintext-pysrc.html#PlaintextWriter.write_variable">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="write_property"></a><span class="summary-sig-name">write_property</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">out</span>,
+        <span class="summary-sig-arg">prop_doc</span>,
+        <span class="summary-sig-arg">name</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">prefix</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>,
+        <span class="summary-sig-arg">verbose</span>=<span class="summary-sig-default">True</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.plaintext-pysrc.html#PlaintextWriter.write_property">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="write_function"></a><span class="summary-sig-name">write_function</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">out</span>,
+        <span class="summary-sig-arg">func_doc</span>,
+        <span class="summary-sig-arg">name</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">prefix</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>,
+        <span class="summary-sig-arg">verbose</span>=<span class="summary-sig-default">True</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.plaintext-pysrc.html#PlaintextWriter.write_function">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="write_signature"></a><span class="summary-sig-name">write_signature</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">out</span>,
+        <span class="summary-sig-arg">func_doc</span>,
+        <span class="summary-sig-arg">name</span>,
+        <span class="summary-sig-arg">prefix</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.plaintext-pysrc.html#PlaintextWriter.write_signature">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="fmt_arg"></a><span class="summary-sig-name">fmt_arg</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">name</span>,
+        <span class="summary-sig-arg">default</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.plaintext-pysrc.html#PlaintextWriter.fmt_arg">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="write_list"></a><span class="summary-sig-name">write_list</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">out</span>,
+        <span class="summary-sig-arg">heading</span>,
+        <span class="summary-sig-arg">doc</span>,
+        <span class="summary-sig-arg">value_type</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">imported</span>=<span class="summary-sig-default">False</span>,
+        <span class="summary-sig-arg">inherited</span>=<span class="summary-sig-default">False</span>,
+        <span class="summary-sig-arg">prefix</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>,
+        <span class="summary-sig-arg">noindent</span>=<span class="summary-sig-default">False</span>,
+        <span class="summary-sig-arg">verbose</span>=<span class="summary-sig-default">True</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.plaintext-pysrc.html#PlaintextWriter.write_list">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_descr"></a><span class="summary-sig-name">_descr</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">descr</span>,
+        <span class="summary-sig-arg">prefix</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.plaintext-pysrc.html#PlaintextWriter._descr">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="bold"></a><span class="summary-sig-name">bold</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">text</span>)</span><br />
+      Write a string in bold by overstriking.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.plaintext-pysrc.html#PlaintextWriter.bold">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="title"></a><span class="summary-sig-name">title</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">text</span>,
+        <span class="summary-sig-arg">indent</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.plaintext-pysrc.html#PlaintextWriter.title">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="section"></a><span class="summary-sig-name">section</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">text</span>,
+        <span class="summary-sig-arg">indent</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.plaintext-pysrc.html#PlaintextWriter.section">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:08:16 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.docwriter.xlink-module.html b/doc/api/epydoc.docwriter.xlink-module.html
new file mode 100644
index 0000000..de798d3
--- /dev/null
+++ b/doc/api/epydoc.docwriter.xlink-module.html
@@ -0,0 +1,549 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.docwriter.xlink</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.docwriter-module.html">Package docwriter</a> ::
+        Module xlink
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.docwriter.xlink-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module xlink</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.docwriter.xlink-pysrc.html">source code</a></span></p>
+<p>A <a class="rst-rst-rst-rst-reference external rst-rst-rst-reference external rst-rst-reference external rst-reference external" href="http://docutils.sourceforge.net/" target="_top">Docutils</a> interpreted text role for cross-API reference support.</p>
+<p>This module allows a <a class="rst-reference external" href="http://docutils.sourceforge.net/" target="_top">Docutils</a> document to refer to elements defined in
+external API documentation. It is possible to refer to many external API
+from the same document.</p>
+<p>Each API documentation is assigned a new interpreted text role: using such
+interpreted text, an user can specify an object name inside an API
+documentation. The system will convert such text into an url and generate a
+reference to it. For example, if the API <tt class="rst-docutils literal"><span class="pre">db</span></tt> is defined, being a database
+package, then a certain method may be referred as:</p>
+<pre class="rst-literal-block">
+:db:`Connection.cursor()`
+</pre>
+<p>To define a new API, an <em>index file</em> must be provided. This file contains
+a mapping from the object name to the URL part required to resolve such object.</p>
+<div class="rst-section" id="rst-index-file">
+<h1 class="heading">Index file</h1>
+<p>Each line in the the index file describes an object.</p>
+<p>Each line contains the fully qualified name of the object and the URL at which
+the documentation is located. The fields are separated by a <tt class="rst-docutils literal"><span class="pre"><tab></span></tt>
+character.</p>
+<p>The URL's in the file are relative from the documentation root: the system can
+be configured to add a prefix in front of each returned URL.</p>
+</div>
+<div class="rst-section" id="rst-allowed-names">
+<h1 class="heading">Allowed names</h1>
+<p>When a name is used in an API text role, it is split over any <em>separator</em>.
+The separators defined are '<tt class="rst-docutils literal"><span class="pre">.</span></tt>', '<tt class="rst-docutils literal"><span class="pre">::</span></tt>', '<tt class="rst-docutils literal"><span class="pre">-></span></tt>'. All the text from the
+first noise char (neither a separator nor alphanumeric or '<tt class="rst-docutils literal"><span class="pre">_</span></tt>') is
+discarded. The same algorithm is applied when the index file is read.</p>
+<p>First the sequence of name parts is looked for in the provided index file.
+If no matching name is found, a partial match against the trailing part of the
+names in the index is performed. If no object is found, or if the trailing part
+of the name may refer to many objects, a warning is issued and no reference
+is created.</p>
+</div>
+<div class="rst-section" id="rst-configuration">
+<h1 class="heading">Configuration</h1>
+<p>This module provides the class <a href="epydoc.docwriter.xlink.ApiLinkReader-class.html" class="link">ApiLinkReader</a> a replacement for the Docutils
+standalone reader. Such reader specifies the settings required for the
+API canonical roles configuration. The same command line options are exposed by
+Epydoc.</p>
+<p>The script <tt class="rst-docutils literal"><span class="pre">apirst2html.py</span></tt> is a frontend for the <a href="epydoc.docwriter.xlink.ApiLinkReader-class.html" class="link">ApiLinkReader</a> reader.</p>
+<p>API Linking Options:</p>
+<pre class="rst-literal-block">
+--external-api=NAME
+                    Define a new API document.  A new interpreted text
+                    role NAME will be added.
+--external-api-file=NAME:FILENAME
+                    Use records in FILENAME to resolve objects in the API
+                    named NAME.
+--external-api-root=NAME:STRING
+                    Use STRING as prefix for the URL generated from the
+                    API NAME.
+</pre>
+</div>
+
+<hr />
+<div class="fields">      <p><strong>Version:</strong>
+        1586
+      </p>
+      <p><strong>Author:</strong>
+        Daniele Varrazzo
+      </p>
+      <p><strong>Copyright:</strong>
+        Copyright (C) 2007 by Daniele Varrazzo
+      </p>
+</div><!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Classes</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Classes"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docwriter.xlink.UrlGenerator-class.html" class="summary-name">UrlGenerator</a><br />
+      Generate URL from an object name.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docwriter.xlink.VoidUrlGenerator-class.html" class="summary-name">VoidUrlGenerator</a><br />
+      Don't actually know any url, but don't report any error.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docwriter.xlink.DocUrlGenerator-class.html" class="summary-name">DocUrlGenerator</a><br />
+      Read a <em>documentation index</em> and generate URL's for it.
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Command line parsing</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docwriter.xlink.ApiLinkReader-class.html" class="summary-name">ApiLinkReader</a><br />
+      A Docutils standalone reader allowing external documentation links.
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTIONS ==================== -->
+<a name="section-Functions"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Functions</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Functions"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    API register</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docwriter.xlink-module.html#register_api" class="summary-sig-name">register_api</a>(<span class="summary-sig-arg">name</span>,
+        <span class="summary-sig-arg">generator</span>=<span class="summary-sig-default">None</span>)</span><br />
+      Register the API <code class="link">name</code> into the <a href="epydoc.docwriter.xlink-module.html#api_register" class="link">api_register</a>.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.xlink-pysrc.html#register_api">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docwriter.xlink-module.html#set_api_file" class="summary-sig-name">set_api_file</a>(<span class="summary-sig-arg">name</span>,
+        <span class="summary-sig-arg">file</span>)</span><br />
+      Set an URL generator populated with data from <code class="link">file</code>.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.xlink-pysrc.html#set_api_file">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docwriter.xlink-module.html#set_api_root" class="summary-sig-name">set_api_root</a>(<span class="summary-sig-arg">name</span>,
+        <span class="summary-sig-arg">prefix</span>)</span><br />
+      Set the root for the URLs returned by a registered URL generator.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.xlink-pysrc.html#set_api_root">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docwriter.xlink-module.html#create_api_role" class="summary-sig-name">create_api_role</a>(<span class="summary-sig-arg">name</span>,
+        <span class="summary-sig-arg">problematic</span>)</span><br />
+      Create and register a new role to create links for an API documentation.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.xlink-pysrc.html#create_api_role">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Command line parsing</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="split_name"></a><span class="summary-sig-name">split_name</span>(<span class="summary-sig-arg">value</span>)</span><br />
+      Split an option in form <tt class="rst-docutils literal"><span class="pre">NAME:VALUE</span></tt> and check if <tt class="rst-docutils literal"><span class="pre">NAME</span></tt> exists.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.xlink-pysrc.html#split_name">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Variables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    API register</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docwriter.xlink-module.html#api_register" class="summary-name">api_register</a> = <code title="{}"><code class="variable-group">{</code><code class="variable-group">}</code></code><br />
+      Mapping from the API name to the <a href="epydoc.docwriter.xlink.UrlGenerator-class.html" class="link">UrlGenerator</a> to be used.
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTION DETAILS ==================== -->
+<a name="section-FunctionDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Function Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-FunctionDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="register_api"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">register_api</span>(<span class="sig-arg">name</span>,
+        <span class="sig-arg">generator</span>=<span class="sig-default">None</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docwriter.xlink-pysrc.html#register_api">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Register the API <code class="link">name</code> into the <a href="epydoc.docwriter.xlink-module.html#api_register" class="link">api_register</a>.</p>
+<p>A registered API will be available to the markup as the interpreted text
+role <tt class="rst-docutils literal"><span class="pre">name</span></tt>.</p>
+<p>If a <code class="link">generator</code> is not provided, register a <a href="epydoc.docwriter.xlink.VoidUrlGenerator-class.html" class="link">VoidUrlGenerator</a> instance:
+in this case no warning will be issued for missing names, but no URL will
+be generated and all the dotted names will simply be rendered as literals.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>name</code></strong> (<code class="link">str</code>) - the name of the generator to be registered</li>
+        <li><strong class="pname"><code>generator</code></strong> (<a href="epydoc.docwriter.xlink.UrlGenerator-class.html" class="link">UrlGenerator</a>) - the object to register to translate names into URLs.</li>
+    </ul></dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="set_api_file"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">set_api_file</span>(<span class="sig-arg">name</span>,
+        <span class="sig-arg">file</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docwriter.xlink-pysrc.html#set_api_file">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Set an URL generator populated with data from <code class="link">file</code>.</p>
+<p>Use <code class="link">file</code> to populate a new <a href="epydoc.docwriter.xlink.DocUrlGenerator-class.html" class="link">DocUrlGenerator</a> instance and register it
+as <code class="link">name</code>.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>name</code></strong> (<code class="link">str</code>) - the name of the generator to be registered</li>
+        <li><strong class="pname"><code>file</code></strong> (<code class="link">str</code> or file) - the file to parse populate the URL generator</li>
+    </ul></dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="set_api_root"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">set_api_root</span>(<span class="sig-arg">name</span>,
+        <span class="sig-arg">prefix</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docwriter.xlink-pysrc.html#set_api_root">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  Set the root for the URLs returned by a registered URL generator.
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>name</code></strong> (<code class="link">str</code>) - the name of the generator to be updated</li>
+        <li><strong class="pname"><code>prefix</code></strong> (<code class="link">str</code>) - the prefix for the generated URL's</li>
+    </ul></dd>
+    <dt>Raises:</dt>
+    <dd><ul class="nomargin-top">
+        <li><code><strong class='fraise'>IndexError</strong></code> - <code class="link">name</code> is not a registered generator</li>
+    </ul></dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="create_api_role"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">create_api_role</span>(<span class="sig-arg">name</span>,
+        <span class="sig-arg">problematic</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docwriter.xlink-pysrc.html#create_api_role">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Create and register a new role to create links for an API documentation.</p>
+<p>Create a role called <code class="link">name</code>, which will use the URL resolver registered as
+<tt class="rst-docutils literal"><span class="pre">name</span></tt> in <a href="epydoc.docwriter.xlink-module.html#api_register" class="link">api_register</a> to create a link for an object.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>name</code></strong> (<code class="link">str</code>) - name of the role to create.</li>
+        <li><strong class="pname"><code>problematic</code></strong> (<code class="link">bool</code>) - if True, the registered role will create problematic nodes in
+case of failed references. If False, a warning will be raised
+anyway, but the output will appear as an ordinary literal.</li>
+    </ul></dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== VARIABLES DETAILS ==================== -->
+<a name="section-VariablesDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Variables Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-VariablesDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="api_register"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">api_register</h3>
+  <p>Mapping from the API name to the <a href="epydoc.docwriter.xlink.UrlGenerator-class.html" class="link">UrlGenerator</a> to be used.</p>
+<p>Use <a href="epydoc.docwriter.xlink-module.html#register_api" class="link">register_api()</a> to add new generators to the register.</p>
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-group">{</code><code class="variable-group">}</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:06:38 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.docwriter.xlink-pysrc.html b/doc/api/epydoc.docwriter.xlink-pysrc.html
new file mode 100644
index 0000000..6808b84
--- /dev/null
+++ b/doc/api/epydoc.docwriter.xlink-pysrc.html
@@ -0,0 +1,712 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.docwriter.xlink</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.docwriter-module.html">Package docwriter</a> ::
+        Module xlink
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.docwriter.xlink-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="epydoc.docwriter.xlink-module.html">Module epydoc.docwriter.xlink</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno">  1</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L2"></a><tt class="py-lineno">  2</tt>  <tt class="py-line"><tt class="py-docstring">A Docutils_ interpreted text role for cross-API reference support.</tt> </tt>
+<a name="L3"></a><tt class="py-lineno">  3</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L4"></a><tt class="py-lineno">  4</tt>  <tt class="py-line"><tt class="py-docstring">This module allows a Docutils_ document to refer to elements defined in</tt> </tt>
+<a name="L5"></a><tt class="py-lineno">  5</tt>  <tt class="py-line"><tt class="py-docstring">external API documentation. It is possible to refer to many external API</tt> </tt>
+<a name="L6"></a><tt class="py-lineno">  6</tt>  <tt class="py-line"><tt class="py-docstring">from the same document.</tt> </tt>
+<a name="L7"></a><tt class="py-lineno">  7</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L8"></a><tt class="py-lineno">  8</tt>  <tt class="py-line"><tt class="py-docstring">Each API documentation is assigned a new interpreted text role: using such</tt> </tt>
+<a name="L9"></a><tt class="py-lineno">  9</tt>  <tt class="py-line"><tt class="py-docstring">interpreted text, an user can specify an object name inside an API</tt> </tt>
+<a name="L10"></a><tt class="py-lineno"> 10</tt>  <tt class="py-line"><tt class="py-docstring">documentation. The system will convert such text into an url and generate a</tt> </tt>
+<a name="L11"></a><tt class="py-lineno"> 11</tt>  <tt class="py-line"><tt class="py-docstring">reference to it. For example, if the API ``db`` is defined, being a database</tt> </tt>
+<a name="L12"></a><tt class="py-lineno"> 12</tt>  <tt class="py-line"><tt class="py-docstring">package, then a certain method may be referred as::</tt> </tt>
+<a name="L13"></a><tt class="py-lineno"> 13</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L14"></a><tt class="py-lineno"> 14</tt>  <tt class="py-line"><tt class="py-docstring">    :db:`Connection.cursor()`</tt> </tt>
+<a name="L15"></a><tt class="py-lineno"> 15</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L16"></a><tt class="py-lineno"> 16</tt>  <tt class="py-line"><tt class="py-docstring">To define a new API, an *index file* must be provided. This file contains</tt> </tt>
+<a name="L17"></a><tt class="py-lineno"> 17</tt>  <tt class="py-line"><tt class="py-docstring">a mapping from the object name to the URL part required to resolve such object.</tt> </tt>
+<a name="L18"></a><tt class="py-lineno"> 18</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L19"></a><tt class="py-lineno"> 19</tt>  <tt class="py-line"><tt class="py-docstring">Index file</tt> </tt>
+<a name="L20"></a><tt class="py-lineno"> 20</tt>  <tt class="py-line"><tt class="py-docstring">----------</tt> </tt>
+<a name="L21"></a><tt class="py-lineno"> 21</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L22"></a><tt class="py-lineno"> 22</tt>  <tt class="py-line"><tt class="py-docstring">Each line in the the index file describes an object.</tt> </tt>
+<a name="L23"></a><tt class="py-lineno"> 23</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L24"></a><tt class="py-lineno"> 24</tt>  <tt class="py-line"><tt class="py-docstring">Each line contains the fully qualified name of the object and the URL at which</tt> </tt>
+<a name="L25"></a><tt class="py-lineno"> 25</tt>  <tt class="py-line"><tt class="py-docstring">the documentation is located. The fields are separated by a ``<tab>``</tt> </tt>
+<a name="L26"></a><tt class="py-lineno"> 26</tt>  <tt class="py-line"><tt class="py-docstring">character.</tt> </tt>
+<a name="L27"></a><tt class="py-lineno"> 27</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L28"></a><tt class="py-lineno"> 28</tt>  <tt class="py-line"><tt class="py-docstring">The URL's in the file are relative from the documentation root: the system can</tt> </tt>
+<a name="L29"></a><tt class="py-lineno"> 29</tt>  <tt class="py-line"><tt class="py-docstring">be configured to add a prefix in front of each returned URL.</tt> </tt>
+<a name="L30"></a><tt class="py-lineno"> 30</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L31"></a><tt class="py-lineno"> 31</tt>  <tt class="py-line"><tt class="py-docstring">Allowed names</tt> </tt>
+<a name="L32"></a><tt class="py-lineno"> 32</tt>  <tt class="py-line"><tt class="py-docstring">-------------</tt> </tt>
+<a name="L33"></a><tt class="py-lineno"> 33</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L34"></a><tt class="py-lineno"> 34</tt>  <tt class="py-line"><tt class="py-docstring">When a name is used in an API text role, it is split over any *separator*.</tt> </tt>
+<a name="L35"></a><tt class="py-lineno"> 35</tt>  <tt class="py-line"><tt class="py-docstring">The separators defined are '``.``', '``::``', '``->``'. All the text from the</tt> </tt>
+<a name="L36"></a><tt class="py-lineno"> 36</tt>  <tt class="py-line"><tt class="py-docstring">first noise char (neither a separator nor alphanumeric or '``_``') is</tt> </tt>
+<a name="L37"></a><tt class="py-lineno"> 37</tt>  <tt class="py-line"><tt class="py-docstring">discarded. The same algorithm is applied when the index file is read.</tt> </tt>
+<a name="L38"></a><tt class="py-lineno"> 38</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L39"></a><tt class="py-lineno"> 39</tt>  <tt class="py-line"><tt class="py-docstring">First the sequence of name parts is looked for in the provided index file.</tt> </tt>
+<a name="L40"></a><tt class="py-lineno"> 40</tt>  <tt class="py-line"><tt class="py-docstring">If no matching name is found, a partial match against the trailing part of the</tt> </tt>
+<a name="L41"></a><tt class="py-lineno"> 41</tt>  <tt class="py-line"><tt class="py-docstring">names in the index is performed. If no object is found, or if the trailing part</tt> </tt>
+<a name="L42"></a><tt class="py-lineno"> 42</tt>  <tt class="py-line"><tt class="py-docstring">of the name may refer to many objects, a warning is issued and no reference</tt> </tt>
+<a name="L43"></a><tt class="py-lineno"> 43</tt>  <tt class="py-line"><tt class="py-docstring">is created.</tt> </tt>
+<a name="L44"></a><tt class="py-lineno"> 44</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L45"></a><tt class="py-lineno"> 45</tt>  <tt class="py-line"><tt class="py-docstring">Configuration</tt> </tt>
+<a name="L46"></a><tt class="py-lineno"> 46</tt>  <tt class="py-line"><tt class="py-docstring">-------------</tt> </tt>
+<a name="L47"></a><tt class="py-lineno"> 47</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L48"></a><tt class="py-lineno"> 48</tt>  <tt class="py-line"><tt class="py-docstring">This module provides the class `ApiLinkReader` a replacement for the Docutils</tt> </tt>
+<a name="L49"></a><tt class="py-lineno"> 49</tt>  <tt class="py-line"><tt class="py-docstring">standalone reader. Such reader specifies the settings required for the</tt> </tt>
+<a name="L50"></a><tt class="py-lineno"> 50</tt>  <tt class="py-line"><tt class="py-docstring">API canonical roles configuration. The same command line options are exposed by</tt> </tt>
+<a name="L51"></a><tt class="py-lineno"> 51</tt>  <tt class="py-line"><tt class="py-docstring">Epydoc.</tt> </tt>
+<a name="L52"></a><tt class="py-lineno"> 52</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L53"></a><tt class="py-lineno"> 53</tt>  <tt class="py-line"><tt class="py-docstring">The script ``apirst2html.py`` is a frontend for the `ApiLinkReader` reader.</tt> </tt>
+<a name="L54"></a><tt class="py-lineno"> 54</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L55"></a><tt class="py-lineno"> 55</tt>  <tt class="py-line"><tt class="py-docstring">API Linking Options::</tt> </tt>
+<a name="L56"></a><tt class="py-lineno"> 56</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L57"></a><tt class="py-lineno"> 57</tt>  <tt class="py-line"><tt class="py-docstring">    --external-api=NAME</tt> </tt>
+<a name="L58"></a><tt class="py-lineno"> 58</tt>  <tt class="py-line"><tt class="py-docstring">                        Define a new API document.  A new interpreted text</tt> </tt>
+<a name="L59"></a><tt class="py-lineno"> 59</tt>  <tt class="py-line"><tt class="py-docstring">                        role NAME will be added.</tt> </tt>
+<a name="L60"></a><tt class="py-lineno"> 60</tt>  <tt class="py-line"><tt class="py-docstring">    --external-api-file=NAME:FILENAME</tt> </tt>
+<a name="L61"></a><tt class="py-lineno"> 61</tt>  <tt class="py-line"><tt class="py-docstring">                        Use records in FILENAME to resolve objects in the API</tt> </tt>
+<a name="L62"></a><tt class="py-lineno"> 62</tt>  <tt class="py-line"><tt class="py-docstring">                        named NAME.</tt> </tt>
+<a name="L63"></a><tt class="py-lineno"> 63</tt>  <tt class="py-line"><tt class="py-docstring">    --external-api-root=NAME:STRING</tt> </tt>
+<a name="L64"></a><tt class="py-lineno"> 64</tt>  <tt class="py-line"><tt class="py-docstring">                        Use STRING as prefix for the URL generated from the</tt> </tt>
+<a name="L65"></a><tt class="py-lineno"> 65</tt>  <tt class="py-line"><tt class="py-docstring">                        API NAME.</tt> </tt>
+<a name="L66"></a><tt class="py-lineno"> 66</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L67"></a><tt class="py-lineno"> 67</tt>  <tt class="py-line"><tt class="py-docstring">.. _Docutils: http://docutils.sourceforge.net/</tt> </tt>
+<a name="L68"></a><tt class="py-lineno"> 68</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L69"></a><tt class="py-lineno"> 69</tt>  <tt class="py-line"> </tt>
+<a name="L70"></a><tt class="py-lineno"> 70</tt>  <tt class="py-line"><tt class="py-comment"># $Id: xlink.py 1586 2007-03-14 01:53:42Z dvarrazzo $</tt> </tt>
+<a name="L71"></a><tt class="py-lineno"> 71</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt id="link-0" class="py-name" targets="Variable epydoc.__version__=epydoc-module.html#__version__"><a title="epydoc.__version__" class="py-name" href="#" onclick="return doclink('link-0', '__version__', 'link-0');">__version__</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"$Revision: 1586 $"</tt><tt class="py-op">[</tt><tt class="py-number">11</tt><tt class="py-op">:</tt><tt clas [...]
+<a name="L72"></a><tt class="py-lineno"> 72</tt>  <tt class="py-line"><tt id="link-1" class="py-name" targets="Variable epydoc.__author__=epydoc-module.html#__author__"><a title="epydoc.__author__" class="py-name" href="#" onclick="return doclink('link-1', '__author__', 'link-1');">__author__</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"Daniele Varrazzo"</tt> </tt>
+<a name="L73"></a><tt class="py-lineno"> 73</tt>  <tt class="py-line"><tt class="py-name">__copyright__</tt> <tt class="py-op">=</tt> <tt class="py-string">"Copyright (C) 2007 by Daniele Varrazzo"</tt> </tt>
+<a name="L74"></a><tt class="py-lineno"> 74</tt>  <tt class="py-line"><tt class="py-name">__docformat__</tt> <tt class="py-op">=</tt> <tt class="py-string">'reStructuredText en'</tt> </tt>
+<a name="L75"></a><tt class="py-lineno"> 75</tt>  <tt class="py-line"> </tt>
+<a name="L76"></a><tt class="py-lineno"> 76</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">re</tt> </tt>
+<a name="L77"></a><tt class="py-lineno"> 77</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">sys</tt> </tt>
+<a name="L78"></a><tt class="py-lineno"> 78</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">optparse</tt> <tt class="py-keyword">import</tt> <tt class="py-name">OptionValueError</tt> </tt>
+<a name="L79"></a><tt class="py-lineno"> 79</tt>  <tt class="py-line"> </tt>
+<a name="L80"></a><tt class="py-lineno"> 80</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-2" class="py-name" targets="Package epydoc=epydoc-module.html"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-2', 'epydoc', 'link-2');">epydoc</a></tt> <tt class="py-keyword">import</tt> <tt id="link-3" class="py-name" targets="Method epydoc.cli.ConsoleLogger.log()=epydoc.cli.ConsoleLogger-class.html#log,Method epydoc.cli.HTMLLogger.log()=epydoc.cl [...]
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-3', 'log', 'link-3');">log</a></tt> </tt>
+<a name="L81"></a><tt class="py-lineno"> 81</tt>  <tt class="py-line"> </tt>
+<a name="UrlGenerator"></a><div id="UrlGenerator-def"><a name="L82"></a><tt class="py-lineno"> 82</tt> <a class="py-toggle" href="#" id="UrlGenerator-toggle" onclick="return toggle('UrlGenerator');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="epydoc.docwriter.xlink.UrlGenerator-class.html">UrlGenerator</a><tt class="py-op">:</tt> </tt>
+</div><div id="UrlGenerator-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="UrlGenerator-expanded"><a name="L83"></a><tt class="py-lineno"> 83</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L84"></a><tt class="py-lineno"> 84</tt>  <tt class="py-line"><tt class="py-docstring">    Generate URL from an object name.</tt> </tt>
+<a name="L85"></a><tt class="py-lineno"> 85</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="UrlGenerator.IndexAmbiguous"></a><div id="UrlGenerator.IndexAmbiguous-def"><a name="L86"></a><tt class="py-lineno"> 86</tt> <a class="py-toggle" href="#" id="UrlGenerator.IndexAmbiguous-toggle" onclick="return toggle('UrlGenerator.IndexAmbiguous');">-</a><tt class="py-line">    <tt class="py-keyword">class</tt> <a class="py-def-name" href="epydoc.docwriter.xlink.UrlGenerator.IndexAmbiguous-class.html">IndexAmbiguous</a><tt class="py-op">(</tt><tt class="py-base-class">IndexError [...]
+</div><div id="UrlGenerator.IndexAmbiguous-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="UrlGenerator.IndexAmbiguous-expanded"><a name="L87"></a><tt class="py-lineno"> 87</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L88"></a><tt class="py-lineno"> 88</tt>  <tt class="py-line"><tt class="py-docstring">        The name looked for is ambiguous</tt> </tt>
+<a name="L89"></a><tt class="py-lineno"> 89</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+</div><a name="L90"></a><tt class="py-lineno"> 90</tt>  <tt class="py-line"> </tt>
+<a name="UrlGenerator.get_url"></a><div id="UrlGenerator.get_url-def"><a name="L91"></a><tt class="py-lineno"> 91</tt> <a class="py-toggle" href="#" id="UrlGenerator.get_url-toggle" onclick="return toggle('UrlGenerator.get_url');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.xlink.UrlGenerator-class.html#get_url">get_url</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">name [...]
+</div><div id="UrlGenerator.get_url-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="UrlGenerator.get_url-expanded"><a name="L92"></a><tt class="py-lineno"> 92</tt>  <tt class="py-line">        <tt class="py-docstring">"""Look for a name and return the matching URL documentation.</tt> </tt>
+<a name="L93"></a><tt class="py-lineno"> 93</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L94"></a><tt class="py-lineno"> 94</tt>  <tt class="py-line"><tt class="py-docstring">        First look for a fully qualified name. If not found, try with partial</tt> </tt>
+<a name="L95"></a><tt class="py-lineno"> 95</tt>  <tt class="py-line"><tt class="py-docstring">        name.</tt> </tt>
+<a name="L96"></a><tt class="py-lineno"> 96</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L97"></a><tt class="py-lineno"> 97</tt>  <tt class="py-line"><tt class="py-docstring">        If no url exists for the given object, return `None`.</tt> </tt>
+<a name="L98"></a><tt class="py-lineno"> 98</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L99"></a><tt class="py-lineno"> 99</tt>  <tt class="py-line"><tt class="py-docstring">        :Parameters:</tt> </tt>
+<a name="L100"></a><tt class="py-lineno">100</tt>  <tt class="py-line"><tt class="py-docstring">          `name` : `str`</tt> </tt>
+<a name="L101"></a><tt class="py-lineno">101</tt>  <tt class="py-line"><tt class="py-docstring">            the name to look for</tt> </tt>
+<a name="L102"></a><tt class="py-lineno">102</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L103"></a><tt class="py-lineno">103</tt>  <tt class="py-line"><tt class="py-docstring">        :return: the URL that can be used to reach the `name` documentation.</tt> </tt>
+<a name="L104"></a><tt class="py-lineno">104</tt>  <tt class="py-line"><tt class="py-docstring">            `None` if no such URL exists.</tt> </tt>
+<a name="L105"></a><tt class="py-lineno">105</tt>  <tt class="py-line"><tt class="py-docstring">        :rtype: `str`</tt> </tt>
+<a name="L106"></a><tt class="py-lineno">106</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L107"></a><tt class="py-lineno">107</tt>  <tt class="py-line"><tt class="py-docstring">        :Exceptions:</tt> </tt>
+<a name="L108"></a><tt class="py-lineno">108</tt>  <tt class="py-line"><tt class="py-docstring">          - `IndexError`: no object found with `name`</tt> </tt>
+<a name="L109"></a><tt class="py-lineno">109</tt>  <tt class="py-line"><tt class="py-docstring">          - `DocUrlGenerator.IndexAmbiguous` : more than one object found with</tt> </tt>
+<a name="L110"></a><tt class="py-lineno">110</tt>  <tt class="py-line"><tt class="py-docstring">            a non-fully qualified name; notice that this is an ``IndexError``</tt> </tt>
+<a name="L111"></a><tt class="py-lineno">111</tt>  <tt class="py-line"><tt class="py-docstring">            subclass</tt> </tt>
+<a name="L112"></a><tt class="py-lineno">112</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L113"></a><tt class="py-lineno">113</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">NotImplementedError</tt> </tt>
+</div><a name="L114"></a><tt class="py-lineno">114</tt>  <tt class="py-line"> </tt>
+<a name="UrlGenerator.get_canonical_name"></a><div id="UrlGenerator.get_canonical_name-def"><a name="L115"></a><tt class="py-lineno">115</tt> <a class="py-toggle" href="#" id="UrlGenerator.get_canonical_name-toggle" onclick="return toggle('UrlGenerator.get_canonical_name');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.xlink.UrlGenerator-class.html#get_canonical_name">get_canonical_name</a><tt class="py-op">(</tt><tt class="py [...]
+</div><div id="UrlGenerator.get_canonical_name-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="UrlGenerator.get_canonical_name-expanded"><a name="L116"></a><tt class="py-lineno">116</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L117"></a><tt class="py-lineno">117</tt>  <tt class="py-line"><tt class="py-docstring">        Convert an object name into a canonical name.</tt> </tt>
+<a name="L118"></a><tt class="py-lineno">118</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L119"></a><tt class="py-lineno">119</tt>  <tt class="py-line"><tt class="py-docstring">        the canonical name of an object is a tuple of strings containing its</tt> </tt>
+<a name="L120"></a><tt class="py-lineno">120</tt>  <tt class="py-line"><tt class="py-docstring">        name fragments, splitted on any allowed separator ('``.``', '``::``',</tt> </tt>
+<a name="L121"></a><tt class="py-lineno">121</tt>  <tt class="py-line"><tt class="py-docstring">        '``->``').</tt> </tt>
+<a name="L122"></a><tt class="py-lineno">122</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L123"></a><tt class="py-lineno">123</tt>  <tt class="py-line"><tt class="py-docstring">        Noise such parenthesis to indicate a function is discarded.</tt> </tt>
+<a name="L124"></a><tt class="py-lineno">124</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L125"></a><tt class="py-lineno">125</tt>  <tt class="py-line"><tt class="py-docstring">        :Parameters:</tt> </tt>
+<a name="L126"></a><tt class="py-lineno">126</tt>  <tt class="py-line"><tt class="py-docstring">          `name` : `str`</tt> </tt>
+<a name="L127"></a><tt class="py-lineno">127</tt>  <tt class="py-line"><tt class="py-docstring">            an object name, such as ``os.path.prefix()`` or ``lib::foo::bar``</tt> </tt>
+<a name="L128"></a><tt class="py-lineno">128</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L129"></a><tt class="py-lineno">129</tt>  <tt class="py-line"><tt class="py-docstring">        :return: the fully qualified name such ``('os', 'path', 'prefix')`` and</tt> </tt>
+<a name="L130"></a><tt class="py-lineno">130</tt>  <tt class="py-line"><tt class="py-docstring">            ``('lib', 'foo', 'bar')``</tt> </tt>
+<a name="L131"></a><tt class="py-lineno">131</tt>  <tt class="py-line"><tt class="py-docstring">        :rtype: `tuple` of `str`</tt> </tt>
+<a name="L132"></a><tt class="py-lineno">132</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L133"></a><tt class="py-lineno">133</tt>  <tt class="py-line">        <tt class="py-name">rv</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L134"></a><tt class="py-lineno">134</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">m</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-4" class="py-name" targets="Variable epydoc.docwriter.xlink.UrlGenerator._SEP_RE=epydoc.docwriter.xlink.UrlGenerator-class.html#_SEP_RE"><a title="epydoc.docwriter.xlink.UrlGenerator._SEP_RE" class="py-name" href="#" onclick="return doclink('link-4', '_SEP_ [...]
+<a name="L135"></a><tt class="py-lineno">135</tt>  <tt class="py-line">            <tt class="py-name">groups</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt class="py-name">groups</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L136"></a><tt class="py-lineno">136</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">groups</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L137"></a><tt class="py-lineno">137</tt>  <tt class="py-line">                <tt class="py-name">rv</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">groups</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L138"></a><tt class="py-lineno">138</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">groups</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L139"></a><tt class="py-lineno">139</tt>  <tt class="py-line">                <tt class="py-keyword">break</tt> </tt>
+<a name="L140"></a><tt class="py-lineno">140</tt>  <tt class="py-line"> </tt>
+<a name="L141"></a><tt class="py-lineno">141</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">tuple</tt><tt class="py-op">(</tt><tt class="py-name">rv</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L142"></a><tt class="py-lineno">142</tt>  <tt class="py-line"> </tt>
+<a name="L143"></a><tt class="py-lineno">143</tt>  <tt class="py-line">    <tt id="link-6" class="py-name"><a title="epydoc.docwriter.xlink.UrlGenerator._SEP_RE" class="py-name" href="#" onclick="return doclink('link-6', '_SEP_RE', 'link-4');">_SEP_RE</a></tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">compile</tt><tt class="py-op">(</tt><tt class="py-string">r"""(?x)</tt> </tt>
+<a name="L144"></a><tt class="py-lineno">144</tt>  <tt class="py-line"><tt class="py-string">        # Tokenize the input into keyword, separator, noise</tt> </tt>
+<a name="L145"></a><tt class="py-lineno">145</tt>  <tt class="py-line"><tt class="py-string">        ([a-zA-Z0-9_]+)         |   # A keyword is a alphanum word</tt> </tt>
+<a name="L146"></a><tt class="py-lineno">146</tt>  <tt class="py-line"><tt class="py-string">        ( \. | \:\: | \-\> )    |   # These are the allowed separators</tt> </tt>
+<a name="L147"></a><tt class="py-lineno">147</tt>  <tt class="py-line"><tt class="py-string">        (.)                         # If it doesn't fit, it's noise.</tt> </tt>
+<a name="L148"></a><tt class="py-lineno">148</tt>  <tt class="py-line"><tt class="py-string">            # Matching a single noise char is enough, because it</tt> </tt>
+<a name="L149"></a><tt class="py-lineno">149</tt>  <tt class="py-line"><tt class="py-string">            # is used to break the tokenization as soon as some noise</tt> </tt>
+<a name="L150"></a><tt class="py-lineno">150</tt>  <tt class="py-line"><tt class="py-string">            # is found.</tt> </tt>
+<a name="L151"></a><tt class="py-lineno">151</tt>  <tt class="py-line"><tt class="py-string">        """</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L152"></a><tt class="py-lineno">152</tt>  <tt class="py-line"> </tt>
+<a name="L153"></a><tt class="py-lineno">153</tt>  <tt class="py-line"> </tt>
+<a name="VoidUrlGenerator"></a><div id="VoidUrlGenerator-def"><a name="L154"></a><tt class="py-lineno">154</tt> <a class="py-toggle" href="#" id="VoidUrlGenerator-toggle" onclick="return toggle('VoidUrlGenerator');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="epydoc.docwriter.xlink.VoidUrlGenerator-class.html">VoidUrlGenerator</a><tt class="py-op">(</tt><tt class="py-base-class">UrlGenerator</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="VoidUrlGenerator-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="VoidUrlGenerator-expanded"><a name="L155"></a><tt class="py-lineno">155</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L156"></a><tt class="py-lineno">156</tt>  <tt class="py-line"><tt class="py-docstring">    Don't actually know any url, but don't report any error.</tt> </tt>
+<a name="L157"></a><tt class="py-lineno">157</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L158"></a><tt class="py-lineno">158</tt>  <tt class="py-line"><tt class="py-docstring">    Useful if an index file is not available, but a document linking to it</tt> </tt>
+<a name="L159"></a><tt class="py-lineno">159</tt>  <tt class="py-line"><tt class="py-docstring">    is to be generated, and warnings are to be avoided.</tt> </tt>
+<a name="L160"></a><tt class="py-lineno">160</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L161"></a><tt class="py-lineno">161</tt>  <tt class="py-line"><tt class="py-docstring">    Don't report any object as missing, Don't return any url anyway.</tt> </tt>
+<a name="L162"></a><tt class="py-lineno">162</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="VoidUrlGenerator.get_url"></a><div id="VoidUrlGenerator.get_url-def"><a name="L163"></a><tt class="py-lineno">163</tt> <a class="py-toggle" href="#" id="VoidUrlGenerator.get_url-toggle" onclick="return toggle('VoidUrlGenerator.get_url');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.xlink.VoidUrlGenerator-class.html#get_url">get_url</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt  [...]
+</div><div id="VoidUrlGenerator.get_url-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="VoidUrlGenerator.get_url-expanded"><a name="L164"></a><tt class="py-lineno">164</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
+</div></div><a name="L165"></a><tt class="py-lineno">165</tt>  <tt class="py-line"> </tt>
+<a name="L166"></a><tt class="py-lineno">166</tt>  <tt class="py-line"> </tt>
+<a name="DocUrlGenerator"></a><div id="DocUrlGenerator-def"><a name="L167"></a><tt class="py-lineno">167</tt> <a class="py-toggle" href="#" id="DocUrlGenerator-toggle" onclick="return toggle('DocUrlGenerator');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="epydoc.docwriter.xlink.DocUrlGenerator-class.html">DocUrlGenerator</a><tt class="py-op">(</tt><tt class="py-base-class">UrlGenerator</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="DocUrlGenerator-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="DocUrlGenerator-expanded"><a name="L168"></a><tt class="py-lineno">168</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L169"></a><tt class="py-lineno">169</tt>  <tt class="py-line"><tt class="py-docstring">    Read a *documentation index* and generate URL's for it.</tt> </tt>
+<a name="L170"></a><tt class="py-lineno">170</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="DocUrlGenerator.__init__"></a><div id="DocUrlGenerator.__init__-def"><a name="L171"></a><tt class="py-lineno">171</tt> <a class="py-toggle" href="#" id="DocUrlGenerator.__init__-toggle" onclick="return toggle('DocUrlGenerator.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.xlink.DocUrlGenerator-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt  [...]
+</div><div id="DocUrlGenerator.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="DocUrlGenerator.__init__-expanded"><a name="L172"></a><tt class="py-lineno">172</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_exact_matches</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L173"></a><tt class="py-lineno">173</tt>  <tt class="py-line">        <tt class="py-string">"""</tt> </tt>
+<a name="L174"></a><tt class="py-lineno">174</tt>  <tt class="py-line"><tt class="py-string">        A map from an object fully qualified name to its URL.</tt> </tt>
+<a name="L175"></a><tt class="py-lineno">175</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L176"></a><tt class="py-lineno">176</tt>  <tt class="py-line"><tt class="py-string">        Values are both the name as tuple of fragments and as read from the</tt> </tt>
+<a name="L177"></a><tt class="py-lineno">177</tt>  <tt class="py-line"><tt class="py-string">        records (see `load_records()`), mostly to help `_partial_names` to</tt> </tt>
+<a name="L178"></a><tt class="py-lineno">178</tt>  <tt class="py-line"><tt class="py-string">        perform lookup for unambiguous names.</tt> </tt>
+<a name="L179"></a><tt class="py-lineno">179</tt>  <tt class="py-line"><tt class="py-string">        """</tt> </tt>
+<a name="L180"></a><tt class="py-lineno">180</tt>  <tt class="py-line"> </tt>
+<a name="L181"></a><tt class="py-lineno">181</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_partial_names</tt><tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L182"></a><tt class="py-lineno">182</tt>  <tt class="py-line">        <tt class="py-string">"""</tt> </tt>
+<a name="L183"></a><tt class="py-lineno">183</tt>  <tt class="py-line"><tt class="py-string">        A map from partial names to the fully qualified names they may refer.</tt> </tt>
+<a name="L184"></a><tt class="py-lineno">184</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L185"></a><tt class="py-lineno">185</tt>  <tt class="py-line"><tt class="py-string">        The keys are the possible left sub-tuples of fully qualified names,</tt> </tt>
+<a name="L186"></a><tt class="py-lineno">186</tt>  <tt class="py-line"><tt class="py-string">        the values are list of strings as provided by the index.</tt> </tt>
+<a name="L187"></a><tt class="py-lineno">187</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L188"></a><tt class="py-lineno">188</tt>  <tt class="py-line"><tt class="py-string">        If the list for a given tuple contains a single item, the partial</tt> </tt>
+<a name="L189"></a><tt class="py-lineno">189</tt>  <tt class="py-line"><tt class="py-string">        match is not ambuguous. In this case the string can be looked up in</tt> </tt>
+<a name="L190"></a><tt class="py-lineno">190</tt>  <tt class="py-line"><tt class="py-string">        `_exact_matches`.</tt> </tt>
+<a name="L191"></a><tt class="py-lineno">191</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L192"></a><tt class="py-lineno">192</tt>  <tt class="py-line"><tt class="py-string">        If the name fragment is ambiguous, a warning may be issued to the user.</tt> </tt>
+<a name="L193"></a><tt class="py-lineno">193</tt>  <tt class="py-line"><tt class="py-string">        The items can be used to provide an informative message to the user,</tt> </tt>
+<a name="L194"></a><tt class="py-lineno">194</tt>  <tt class="py-line"><tt class="py-string">        to help him qualifying the name in a unambiguous manner.</tt> </tt>
+<a name="L195"></a><tt class="py-lineno">195</tt>  <tt class="py-line"><tt class="py-string">        """</tt> </tt>
+<a name="L196"></a><tt class="py-lineno">196</tt>  <tt class="py-line"> </tt>
+<a name="L197"></a><tt class="py-lineno">197</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">prefix</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
+<a name="L198"></a><tt class="py-lineno">198</tt>  <tt class="py-line">        <tt class="py-string">"""</tt> </tt>
+<a name="L199"></a><tt class="py-lineno">199</tt>  <tt class="py-line"><tt class="py-string">        Prefix portion for the URL's returned by `get_url()`.</tt> </tt>
+<a name="L200"></a><tt class="py-lineno">200</tt>  <tt class="py-line"><tt class="py-string">        """</tt> </tt>
+<a name="L201"></a><tt class="py-lineno">201</tt>  <tt class="py-line"> </tt>
+<a name="L202"></a><tt class="py-lineno">202</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_filename</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L203"></a><tt class="py-lineno">203</tt>  <tt class="py-line">        <tt class="py-string">"""</tt> </tt>
+<a name="L204"></a><tt class="py-lineno">204</tt>  <tt class="py-line"><tt class="py-string">        Not very important: only for logging.</tt> </tt>
+<a name="L205"></a><tt class="py-lineno">205</tt>  <tt class="py-line"><tt class="py-string">        """</tt> </tt>
+</div><a name="L206"></a><tt class="py-lineno">206</tt>  <tt class="py-line"> </tt>
+<a name="DocUrlGenerator.get_url"></a><div id="DocUrlGenerator.get_url-def"><a name="L207"></a><tt class="py-lineno">207</tt> <a class="py-toggle" href="#" id="DocUrlGenerator.get_url-toggle" onclick="return toggle('DocUrlGenerator.get_url');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.xlink.DocUrlGenerator-class.html#get_url">get_url</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class [...]
+</div><div id="DocUrlGenerator.get_url-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="DocUrlGenerator.get_url-expanded"><a name="L208"></a><tt class="py-lineno">208</tt>  <tt class="py-line">        <tt class="py-name">cname</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-7" class="py-name" targets="Function epydoc.docintrospecter.get_canonical_name()=epydoc.docintrospecter-module.html#get_canonical_name,Method  [...]
+epydoc.docwriter.xlink.UrlGenerator.get_canonical_name" class="py-name" href="#" onclick="return doclink('link-7', 'get_canonical_name', 'link-7');">get_canonical_name</a></tt><tt class="py-op">(</tt><tt id="link-8" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-8', 'name', 'link-5');">name</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L209"></a><tt class="py-lineno">209</tt>  <tt class="py-line">        <tt id="link-9" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.url()=epydoc.docwriter.html.HTMLWriter-class.html#url"><a title="epydoc.docwriter.html.HTMLWriter.url" class="py-name" href="#" onclick="return doclink('link-9', 'url', 'link-9');">url</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_exact_matches</tt><tt class="py-op">.</ [...]
+<a name="L210"></a><tt class="py-lineno">210</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-10" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.url" class="py-name" href="#" onclick="return doclink('link-10', 'url', 'link-9');">url</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L211"></a><tt class="py-lineno">211</tt>  <tt class="py-line"> </tt>
+<a name="L212"></a><tt class="py-lineno">212</tt>  <tt class="py-line">            <tt class="py-comment"># go for a partial match</tt> </tt>
+<a name="L213"></a><tt class="py-lineno">213</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">vals</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_partial_names</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-name">cname</tt><tt class="py-op">)</tt> </tt>
+<a name="L214"></a><tt class="py-lineno">214</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">vals</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L215"></a><tt class="py-lineno">215</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">IndexError</tt><tt class="py-op">(</tt> </tt>
+<a name="L216"></a><tt class="py-lineno">216</tt>  <tt class="py-line">                    <tt class="py-string">"no object named '%s' found"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt id="link-11" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-11', 'name', 'link-5');">name</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L217"></a><tt class="py-lineno">217</tt>  <tt class="py-line"> </tt>
+<a name="L218"></a><tt class="py-lineno">218</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">vals</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L219"></a><tt class="py-lineno">219</tt>  <tt class="py-line">                <tt id="link-12" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.url" class="py-name" href="#" onclick="return doclink('link-12', 'url', 'link-9');">url</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_exact_matches</tt><tt class="py-op">[</tt><tt class="py-name">vals</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class= [...]
+<a name="L220"></a><tt class="py-lineno">220</tt>  <tt class="py-line"> </tt>
+<a name="L221"></a><tt class="py-lineno">221</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L222"></a><tt class="py-lineno">222</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-13" class="py-name" targets="Class epydoc.docwriter.xlink.UrlGenerator.IndexAmbiguous=epydoc.docwriter.xlink.UrlGenerator.IndexAmbiguous-class.html"><a title="epydoc.docwriter.xlink.UrlGenerator.IndexAmbiguous" class="py-name" href="#" onclick="return doclink('link-13', 'IndexAmbiguous', 'link-13');">Ind [...]
+<a name="L223"></a><tt class="py-lineno">223</tt>  <tt class="py-line">                    <tt class="py-string">"found %d objects that '%s' may refer to: %s"</tt> </tt>
+<a name="L224"></a><tt class="py-lineno">224</tt>  <tt class="py-line">                    <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">vals</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt id="link-14" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-14', 'name', 'link-5');">name</a></tt><tt class="py-op">,</tt> <tt class="py-string">", "</t [...]
+<a name="L225"></a><tt class="py-lineno">225</tt>  <tt class="py-line"> </tt>
+<a name="L226"></a><tt class="py-lineno">226</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">prefix</tt> <tt class="py-op">+</tt> <tt id="link-15" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.url" class="py-name" href="#" onclick="return doclink('link-15', 'url', 'link-9');">url</a></tt> </tt>
+</div><a name="L227"></a><tt class="py-lineno">227</tt>  <tt class="py-line"> </tt>
+<a name="L228"></a><tt class="py-lineno">228</tt>  <tt class="py-line">    <tt class="py-comment">#{ Content loading</tt> </tt>
+<a name="L229"></a><tt class="py-lineno">229</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#  ---------------</tt> </tt>
+<a name="L230"></a><tt class="py-lineno">230</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="DocUrlGenerator.clear"></a><div id="DocUrlGenerator.clear-def"><a name="L231"></a><tt class="py-lineno">231</tt> <a class="py-toggle" href="#" id="DocUrlGenerator.clear-toggle" onclick="return toggle('DocUrlGenerator.clear');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.xlink.DocUrlGenerator-class.html#clear">clear</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</t [...]
+</div><div id="DocUrlGenerator.clear-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="DocUrlGenerator.clear-expanded"><a name="L232"></a><tt class="py-lineno">232</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L233"></a><tt class="py-lineno">233</tt>  <tt class="py-line"><tt class="py-docstring">        Clear the current class content.</tt> </tt>
+<a name="L234"></a><tt class="py-lineno">234</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L235"></a><tt class="py-lineno">235</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_exact_matches</tt><tt class="py-op">.</tt><tt id="link-16" class="py-name" targets="Method epydoc.docwriter.xlink.DocUrlGenerator.clear()=epydoc.docwriter.xlink.DocUrlGenerator-class.html#clear,Method epydoc.gui.GUILogger.clear()=epydoc.gui.GUILogger-class.html#clear"><a title="epydoc.docwriter.xlink.DocUrlGenerator.clear
+epydoc.gui.GUILogger.clear" class="py-name" href="#" onclick="return doclink('link-16', 'clear', 'link-16');">clear</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L236"></a><tt class="py-lineno">236</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_partial_names</tt><tt class="py-op">.</tt><tt id="link-17" class="py-name"><a title="epydoc.docwriter.xlink.DocUrlGenerator.clear
+epydoc.gui.GUILogger.clear" class="py-name" href="#" onclick="return doclink('link-17', 'clear', 'link-16');">clear</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L237"></a><tt class="py-lineno">237</tt>  <tt class="py-line"> </tt>
+<a name="DocUrlGenerator.load_index"></a><div id="DocUrlGenerator.load_index-def"><a name="L238"></a><tt class="py-lineno">238</tt> <a class="py-toggle" href="#" id="DocUrlGenerator.load_index-toggle" onclick="return toggle('DocUrlGenerator.load_index');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.xlink.DocUrlGenerator-class.html#load_index">load_index</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op [...]
+</div><div id="DocUrlGenerator.load_index-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="DocUrlGenerator.load_index-expanded"><a name="L239"></a><tt class="py-lineno">239</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L240"></a><tt class="py-lineno">240</tt>  <tt class="py-line"><tt class="py-docstring">        Read the content of an index file.</tt> </tt>
+<a name="L241"></a><tt class="py-lineno">241</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L242"></a><tt class="py-lineno">242</tt>  <tt class="py-line"><tt class="py-docstring">        Populate the internal maps with the file content using `load_records()`.</tt> </tt>
+<a name="L243"></a><tt class="py-lineno">243</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L244"></a><tt class="py-lineno">244</tt>  <tt class="py-line"><tt class="py-docstring">        :Parameters:</tt> </tt>
+<a name="L245"></a><tt class="py-lineno">245</tt>  <tt class="py-line"><tt class="py-docstring">          f : `str` or file</tt> </tt>
+<a name="L246"></a><tt class="py-lineno">246</tt>  <tt class="py-line"><tt class="py-docstring">            a file name or file-like object fron which read the index.</tt> </tt>
+<a name="L247"></a><tt class="py-lineno">247</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L248"></a><tt class="py-lineno">248</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_filename</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">)</tt> </tt>
+<a name="L249"></a><tt class="py-lineno">249</tt>  <tt class="py-line"> </tt>
+<a name="L250"></a><tt class="py-lineno">250</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L251"></a><tt class="py-lineno">251</tt>  <tt class="py-line">            <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt id="link-18" class="py-name" targets="Method epydoc.gui.EpydocGUI.open()=epydoc.gui.EpydocGUI-class.html#open"><a title="epydoc.gui.EpydocGUI.open" class="py-name" href="#" onclick="return doclink('link-18', 'open', 'link-18');">open</a></tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">)</tt> </tt>
+<a name="L252"></a><tt class="py-lineno">252</tt>  <tt class="py-line"> </tt>
+<a name="L253"></a><tt class="py-lineno">253</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-19" class="py-name" targets="Method epydoc.docwriter.xlink.DocUrlGenerator.load_records()=epydoc.docwriter.xlink.DocUrlGenerator-class.html#load_records"><a title="epydoc.docwriter.xlink.DocUrlGenerator.load_records" class="py-name" href="#" onclick="return doclink('link-19', 'load_records', 'link-19');">load_records</a></tt><tt class="py-op">(< [...]
+</div><a name="L254"></a><tt class="py-lineno">254</tt>  <tt class="py-line"> </tt>
+<a name="DocUrlGenerator._iter_tuples"></a><div id="DocUrlGenerator._iter_tuples-def"><a name="L255"></a><tt class="py-lineno">255</tt> <a class="py-toggle" href="#" id="DocUrlGenerator._iter_tuples-toggle" onclick="return toggle('DocUrlGenerator._iter_tuples');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.xlink.DocUrlGenerator-class.html#_iter_tuples">_iter_tuples</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt  [...]
+</div><div id="DocUrlGenerator._iter_tuples-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="DocUrlGenerator._iter_tuples-expanded"><a name="L256"></a><tt class="py-lineno">256</tt>  <tt class="py-line">        <tt class="py-docstring">"""Iterate on a file returning 2-tuples."""</tt> </tt>
+<a name="L257"></a><tt class="py-lineno">257</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">nrow</tt><tt class="py-op">,</tt> <tt class="py-name">row</tt> <tt class="py-keyword">in</tt> <tt class="py-name">enumerate</tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L258"></a><tt class="py-lineno">258</tt>  <tt class="py-line">            <tt class="py-comment"># skip blank lines</tt> </tt>
+<a name="L259"></a><tt class="py-lineno">259</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">row</tt> <tt class="py-op">=</tt> <tt class="py-name">row</tt><tt class="py-op">.</tt><tt class="py-name">rstrip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L260"></a><tt class="py-lineno">260</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">row</tt><tt class="py-op">:</tt> <tt class="py-keyword">continue</tt> </tt>
+<a name="L261"></a><tt class="py-lineno">261</tt>  <tt class="py-line"> </tt>
+<a name="L262"></a><tt class="py-lineno">262</tt>  <tt class="py-line">            <tt class="py-name">rec</tt> <tt class="py-op">=</tt> <tt class="py-name">row</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'\t'</tt><tt class="py-op">,</tt> <tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
+<a name="L263"></a><tt class="py-lineno">263</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">rec</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">2</tt><tt class="py-op">:</tt> </tt>
+<a name="L264"></a><tt class="py-lineno">264</tt>  <tt class="py-line">                <tt class="py-keyword">yield</tt> <tt class="py-name">rec</tt> </tt>
+<a name="L265"></a><tt class="py-lineno">265</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L266"></a><tt class="py-lineno">266</tt>  <tt class="py-line">                <tt id="link-21" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-21', 'log', 'link-3');">log</a></tt><tt class="py-op">.</tt><tt id="link-22" class="py-name" targets="Method epydoc.checker.DocChecker.warning()=epydoc.checker.DocChecker-class.html#warning,Function epydoc.log.warning()=epydoc.log-module.html#warning"><a title="epydoc.checker.DocChecker.warning
+epydoc.log.warning" class="py-name" href="#" onclick="return doclink('link-22', 'warning', 'link-22');">warning</a></tt><tt class="py-op">(</tt><tt class="py-string">"invalid row in '%s' row %d: '%s'"</tt> </tt>
+<a name="L267"></a><tt class="py-lineno">267</tt>  <tt class="py-line">                            <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_filename</tt><tt class="py-op">,</tt> <tt class="py-name">nrow</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-name">row</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L268"></a><tt class="py-lineno">268</tt>  <tt class="py-line"> </tt>
+<a name="DocUrlGenerator.load_records"></a><div id="DocUrlGenerator.load_records-def"><a name="L269"></a><tt class="py-lineno">269</tt> <a class="py-toggle" href="#" id="DocUrlGenerator.load_records-toggle" onclick="return toggle('DocUrlGenerator.load_records');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.xlink.DocUrlGenerator-class.html#load_records">load_records</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt  [...]
+</div><div id="DocUrlGenerator.load_records-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="DocUrlGenerator.load_records-expanded"><a name="L270"></a><tt class="py-lineno">270</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L271"></a><tt class="py-lineno">271</tt>  <tt class="py-line"><tt class="py-docstring">        Read a sequence of pairs name -> url and populate the internal maps.</tt> </tt>
+<a name="L272"></a><tt class="py-lineno">272</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L273"></a><tt class="py-lineno">273</tt>  <tt class="py-line"><tt class="py-docstring">        :Parameters:</tt> </tt>
+<a name="L274"></a><tt class="py-lineno">274</tt>  <tt class="py-line"><tt class="py-docstring">          records : iterable</tt> </tt>
+<a name="L275"></a><tt class="py-lineno">275</tt>  <tt class="py-line"><tt class="py-docstring">            the sequence of pairs (*name*, *url*) to add to the maps.</tt> </tt>
+<a name="L276"></a><tt class="py-lineno">276</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L277"></a><tt class="py-lineno">277</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt id="link-23" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-23', 'name', 'link-5');">name</a></tt><tt class="py-op">,</tt> <tt id="link-24" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.url" class="py-name" href="#" onclick="return doclink('link-24', 'url', 'link-9');">url</a></tt> <tt class="py-k [...]
+<a name="L278"></a><tt class="py-lineno">278</tt>  <tt class="py-line">            <tt class="py-name">cname</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-25" class="py-name"><a title="epydoc.docintrospecter.get_canonical_name
+epydoc.docwriter.xlink.UrlGenerator.get_canonical_name" class="py-name" href="#" onclick="return doclink('link-25', 'get_canonical_name', 'link-7');">get_canonical_name</a></tt><tt class="py-op">(</tt><tt id="link-26" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-26', 'name', 'link-5');">name</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L279"></a><tt class="py-lineno">279</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">cname</tt><tt class="py-op">:</tt> </tt>
+<a name="L280"></a><tt class="py-lineno">280</tt>  <tt class="py-line">                <tt id="link-27" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-27', 'log', 'link-3');">log</a></tt><tt class="py-op">.</tt><tt id="link-28" class="py-name"><a title="epydoc.checker.DocChecker.warning
+epydoc.log.warning" class="py-name" href="#" onclick="return doclink('link-28', 'warning', 'link-22');">warning</a></tt><tt class="py-op">(</tt><tt class="py-string">"invalid object name in '%s': '%s'"</tt> </tt>
+<a name="L281"></a><tt class="py-lineno">281</tt>  <tt class="py-line">                    <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_filename</tt><tt class="py-op">,</tt> <tt id="link-29" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-29', 'name', 'link-5');">name</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L282"></a><tt class="py-lineno">282</tt>  <tt class="py-line">                <tt class="py-keyword">continue</tt> </tt>
+<a name="L283"></a><tt class="py-lineno">283</tt>  <tt class="py-line"> </tt>
+<a name="L284"></a><tt class="py-lineno">284</tt>  <tt class="py-line">            <tt class="py-comment"># discard duplicates</tt> </tt>
+<a name="L285"></a><tt class="py-lineno">285</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt id="link-30" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-30', 'name', 'link-5');">name</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_exact_matches</tt><tt class="py-op">:</tt> </tt>
+<a name="L286"></a><tt class="py-lineno">286</tt>  <tt class="py-line">                <tt class="py-keyword">continue</tt> </tt>
+<a name="L287"></a><tt class="py-lineno">287</tt>  <tt class="py-line"> </tt>
+<a name="L288"></a><tt class="py-lineno">288</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_exact_matches</tt><tt class="py-op">[</tt><tt id="link-31" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-31', 'name', 'link-5');">name</a></tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-32" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter [...]
+<a name="L289"></a><tt class="py-lineno">289</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_exact_matches</tt><tt class="py-op">[</tt><tt class="py-name">cname</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-33" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.url" class="py-name" href="#" onclick="return doclink('link-33', 'url', 'link-9');">url</a></tt> </tt>
+<a name="L290"></a><tt class="py-lineno">290</tt>  <tt class="py-line"> </tt>
+<a name="L291"></a><tt class="py-lineno">291</tt>  <tt class="py-line">            <tt class="py-comment"># Link the different ambiguous fragments to the url</tt> </tt>
+<a name="L292"></a><tt class="py-lineno">292</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">cname</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L293"></a><tt class="py-lineno">293</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_partial_names</tt><tt class="py-op">.</tt><tt class="py-name">setdefault</tt><tt class="py-op">(</tt><tt class="py-name">cname</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt c [...]
+</div></div><a name="L294"></a><tt class="py-lineno">294</tt>  <tt class="py-line"> </tt>
+<a name="L295"></a><tt class="py-lineno">295</tt>  <tt class="py-line"><tt class="py-comment">#{ API register</tt> </tt>
+<a name="L296"></a><tt class="py-lineno">296</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#  ------------</tt> </tt>
+<a name="L297"></a><tt class="py-lineno">297</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L298"></a><tt class="py-lineno">298</tt>  <tt class="py-line"><tt id="link-35" class="py-name" targets="Variable epydoc.docwriter.xlink.api_register=epydoc.docwriter.xlink-module.html#api_register"><a title="epydoc.docwriter.xlink.api_register" class="py-name" href="#" onclick="return doclink('link-35', 'api_register', 'link-35');">api_register</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L299"></a><tt class="py-lineno">299</tt>  <tt class="py-line"><tt class="py-string">"""</tt> </tt>
+<a name="L300"></a><tt class="py-lineno">300</tt>  <tt class="py-line"><tt class="py-string">Mapping from the API name to the `UrlGenerator` to be used.</tt> </tt>
+<a name="L301"></a><tt class="py-lineno">301</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L302"></a><tt class="py-lineno">302</tt>  <tt class="py-line"><tt class="py-string">Use `register_api()` to add new generators to the register.</tt> </tt>
+<a name="L303"></a><tt class="py-lineno">303</tt>  <tt class="py-line"><tt class="py-string">"""</tt> </tt>
+<a name="L304"></a><tt class="py-lineno">304</tt>  <tt class="py-line"> </tt>
+<a name="register_api"></a><div id="register_api-def"><a name="L305"></a><tt class="py-lineno">305</tt> <a class="py-toggle" href="#" id="register_api-toggle" onclick="return toggle('register_api');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.xlink-module.html#register_api">register_api</a><tt class="py-op">(</tt><tt class="py-param">name</tt><tt class="py-op">,</tt> <tt class="py-param">generator</tt><tt class="py-op">=</tt><tt [...]
+</div><div id="register_api-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="register_api-expanded"><a name="L306"></a><tt class="py-lineno">306</tt>  <tt class="py-line">    <tt class="py-docstring">"""Register the API `name` into the `api_register`.</tt> </tt>
+<a name="L307"></a><tt class="py-lineno">307</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L308"></a><tt class="py-lineno">308</tt>  <tt class="py-line"><tt class="py-docstring">    A registered API will be available to the markup as the interpreted text</tt> </tt>
+<a name="L309"></a><tt class="py-lineno">309</tt>  <tt class="py-line"><tt class="py-docstring">    role ``name``.</tt> </tt>
+<a name="L310"></a><tt class="py-lineno">310</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L311"></a><tt class="py-lineno">311</tt>  <tt class="py-line"><tt class="py-docstring">    If a `generator` is not provided, register a `VoidUrlGenerator` instance:</tt> </tt>
+<a name="L312"></a><tt class="py-lineno">312</tt>  <tt class="py-line"><tt class="py-docstring">    in this case no warning will be issued for missing names, but no URL will</tt> </tt>
+<a name="L313"></a><tt class="py-lineno">313</tt>  <tt class="py-line"><tt class="py-docstring">    be generated and all the dotted names will simply be rendered as literals.</tt> </tt>
+<a name="L314"></a><tt class="py-lineno">314</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L315"></a><tt class="py-lineno">315</tt>  <tt class="py-line"><tt class="py-docstring">    :Parameters:</tt> </tt>
+<a name="L316"></a><tt class="py-lineno">316</tt>  <tt class="py-line"><tt class="py-docstring">      `name` : `str`</tt> </tt>
+<a name="L317"></a><tt class="py-lineno">317</tt>  <tt class="py-line"><tt class="py-docstring">        the name of the generator to be registered</tt> </tt>
+<a name="L318"></a><tt class="py-lineno">318</tt>  <tt class="py-line"><tt class="py-docstring">      `generator` : `UrlGenerator`</tt> </tt>
+<a name="L319"></a><tt class="py-lineno">319</tt>  <tt class="py-line"><tt class="py-docstring">        the object to register to translate names into URLs.</tt> </tt>
+<a name="L320"></a><tt class="py-lineno">320</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L321"></a><tt class="py-lineno">321</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">generator</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L322"></a><tt class="py-lineno">322</tt>  <tt class="py-line">        <tt class="py-name">generator</tt> <tt class="py-op">=</tt> <tt id="link-36" class="py-name" targets="Class epydoc.docwriter.xlink.VoidUrlGenerator=epydoc.docwriter.xlink.VoidUrlGenerator-class.html"><a title="epydoc.docwriter.xlink.VoidUrlGenerator" class="py-name" href="#" onclick="return doclink('link-36', 'VoidUrlGenerator', 'link-36');">VoidUrlGenerator</a></tt><tt class="py-op">(</tt><tt class="py-op">)< [...]
+<a name="L323"></a><tt class="py-lineno">323</tt>  <tt class="py-line"> </tt>
+<a name="L324"></a><tt class="py-lineno">324</tt>  <tt class="py-line">    <tt id="link-37" class="py-name"><a title="epydoc.docwriter.xlink.api_register" class="py-name" href="#" onclick="return doclink('link-37', 'api_register', 'link-35');">api_register</a></tt><tt class="py-op">[</tt><tt id="link-38" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-38', 'name', 'link-5');">name</a></tt><tt class="py-op">]</tt> <tt class= [...]
+</div><a name="L325"></a><tt class="py-lineno">325</tt>  <tt class="py-line"> </tt>
+<a name="set_api_file"></a><div id="set_api_file-def"><a name="L326"></a><tt class="py-lineno">326</tt> <a class="py-toggle" href="#" id="set_api_file-toggle" onclick="return toggle('set_api_file');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.xlink-module.html#set_api_file">set_api_file</a><tt class="py-op">(</tt><tt class="py-param">name</tt><tt class="py-op">,</tt> <tt class="py-param">file</tt><tt class="py-op">)</tt><tt clas [...]
+</div><div id="set_api_file-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="set_api_file-expanded"><a name="L327"></a><tt class="py-lineno">327</tt>  <tt class="py-line">    <tt class="py-docstring">"""Set an URL generator populated with data from `file`.</tt> </tt>
+<a name="L328"></a><tt class="py-lineno">328</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L329"></a><tt class="py-lineno">329</tt>  <tt class="py-line"><tt class="py-docstring">    Use `file` to populate a new `DocUrlGenerator` instance and register it</tt> </tt>
+<a name="L330"></a><tt class="py-lineno">330</tt>  <tt class="py-line"><tt class="py-docstring">    as `name`.</tt> </tt>
+<a name="L331"></a><tt class="py-lineno">331</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L332"></a><tt class="py-lineno">332</tt>  <tt class="py-line"><tt class="py-docstring">    :Parameters:</tt> </tt>
+<a name="L333"></a><tt class="py-lineno">333</tt>  <tt class="py-line"><tt class="py-docstring">      `name` : `str`</tt> </tt>
+<a name="L334"></a><tt class="py-lineno">334</tt>  <tt class="py-line"><tt class="py-docstring">        the name of the generator to be registered</tt> </tt>
+<a name="L335"></a><tt class="py-lineno">335</tt>  <tt class="py-line"><tt class="py-docstring">      `file` : `str` or file</tt> </tt>
+<a name="L336"></a><tt class="py-lineno">336</tt>  <tt class="py-line"><tt class="py-docstring">        the file to parse populate the URL generator</tt> </tt>
+<a name="L337"></a><tt class="py-lineno">337</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L338"></a><tt class="py-lineno">338</tt>  <tt class="py-line">    <tt class="py-name">generator</tt> <tt class="py-op">=</tt> <tt id="link-39" class="py-name" targets="Class epydoc.docwriter.xlink.DocUrlGenerator=epydoc.docwriter.xlink.DocUrlGenerator-class.html"><a title="epydoc.docwriter.xlink.DocUrlGenerator" class="py-name" href="#" onclick="return doclink('link-39', 'DocUrlGenerator', 'link-39');">DocUrlGenerator</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L339"></a><tt class="py-lineno">339</tt>  <tt class="py-line">    <tt class="py-name">generator</tt><tt class="py-op">.</tt><tt id="link-40" class="py-name" targets="Method epydoc.docwriter.xlink.DocUrlGenerator.load_index()=epydoc.docwriter.xlink.DocUrlGenerator-class.html#load_index"><a title="epydoc.docwriter.xlink.DocUrlGenerator.load_index" class="py-name" href="#" onclick="return doclink('link-40', 'load_index', 'link-40');">load_index</a></tt><tt class="py-op">(</tt><tt c [...]
+<a name="L340"></a><tt class="py-lineno">340</tt>  <tt class="py-line">    <tt id="link-41" class="py-name" targets="Function epydoc.docwriter.xlink.register_api()=epydoc.docwriter.xlink-module.html#register_api"><a title="epydoc.docwriter.xlink.register_api" class="py-name" href="#" onclick="return doclink('link-41', 'register_api', 'link-41');">register_api</a></tt><tt class="py-op">(</tt><tt id="link-42" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="# [...]
+</div><a name="L341"></a><tt class="py-lineno">341</tt>  <tt class="py-line"> </tt>
+<a name="set_api_root"></a><div id="set_api_root-def"><a name="L342"></a><tt class="py-lineno">342</tt> <a class="py-toggle" href="#" id="set_api_root-toggle" onclick="return toggle('set_api_root');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.xlink-module.html#set_api_root">set_api_root</a><tt class="py-op">(</tt><tt class="py-param">name</tt><tt class="py-op">,</tt> <tt class="py-param">prefix</tt><tt class="py-op">)</tt><tt cl [...]
+</div><div id="set_api_root-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="set_api_root-expanded"><a name="L343"></a><tt class="py-lineno">343</tt>  <tt class="py-line">    <tt class="py-docstring">"""Set the root for the URLs returned by a registered URL generator.</tt> </tt>
+<a name="L344"></a><tt class="py-lineno">344</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L345"></a><tt class="py-lineno">345</tt>  <tt class="py-line"><tt class="py-docstring">    :Parameters:</tt> </tt>
+<a name="L346"></a><tt class="py-lineno">346</tt>  <tt class="py-line"><tt class="py-docstring">      `name` : `str`</tt> </tt>
+<a name="L347"></a><tt class="py-lineno">347</tt>  <tt class="py-line"><tt class="py-docstring">        the name of the generator to be updated</tt> </tt>
+<a name="L348"></a><tt class="py-lineno">348</tt>  <tt class="py-line"><tt class="py-docstring">      `prefix` : `str`</tt> </tt>
+<a name="L349"></a><tt class="py-lineno">349</tt>  <tt class="py-line"><tt class="py-docstring">        the prefix for the generated URL's</tt> </tt>
+<a name="L350"></a><tt class="py-lineno">350</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L351"></a><tt class="py-lineno">351</tt>  <tt class="py-line"><tt class="py-docstring">    :Exceptions:</tt> </tt>
+<a name="L352"></a><tt class="py-lineno">352</tt>  <tt class="py-line"><tt class="py-docstring">      - `IndexError`: `name` is not a registered generator</tt> </tt>
+<a name="L353"></a><tt class="py-lineno">353</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L354"></a><tt class="py-lineno">354</tt>  <tt class="py-line">    <tt id="link-43" class="py-name"><a title="epydoc.docwriter.xlink.api_register" class="py-name" href="#" onclick="return doclink('link-43', 'api_register', 'link-35');">api_register</a></tt><tt class="py-op">[</tt><tt id="link-44" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-44', 'name', 'link-5');">name</a></tt><tt class="py-op">]</tt><tt class=" [...]
+</div><a name="L355"></a><tt class="py-lineno">355</tt>  <tt class="py-line"> </tt>
+<a name="L356"></a><tt class="py-lineno">356</tt>  <tt class="py-line"><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L357"></a><tt class="py-lineno">357</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Below this point requires docutils.</tt> </tt>
+<a name="L358"></a><tt class="py-lineno">358</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L359"></a><tt class="py-lineno">359</tt>  <tt class="py-line">    <tt class="py-keyword">import</tt> <tt class="py-name">docutils</tt> </tt>
+<a name="L360"></a><tt class="py-lineno">360</tt>  <tt class="py-line">    <tt class="py-keyword">from</tt> <tt class="py-name">docutils</tt><tt class="py-op">.</tt><tt class="py-name">parsers</tt><tt class="py-op">.</tt><tt class="py-name">rst</tt> <tt class="py-keyword">import</tt> <tt class="py-name">roles</tt> </tt>
+<a name="L361"></a><tt class="py-lineno">361</tt>  <tt class="py-line">    <tt class="py-keyword">from</tt> <tt class="py-name">docutils</tt> <tt class="py-keyword">import</tt> <tt class="py-name">nodes</tt><tt class="py-op">,</tt> <tt class="py-name">utils</tt> </tt>
+<a name="L362"></a><tt class="py-lineno">362</tt>  <tt class="py-line">    <tt class="py-keyword">from</tt> <tt class="py-name">docutils</tt><tt class="py-op">.</tt><tt class="py-name">readers</tt><tt class="py-op">.</tt><tt class="py-name">standalone</tt> <tt class="py-keyword">import</tt> <tt class="py-name">Reader</tt> </tt>
+<a name="L363"></a><tt class="py-lineno">363</tt>  <tt class="py-line"><tt class="py-keyword">except</tt> <tt class="py-name">ImportError</tt><tt class="py-op">:</tt> </tt>
+<a name="L364"></a><tt class="py-lineno">364</tt>  <tt class="py-line">    <tt class="py-name">docutils</tt> <tt class="py-op">=</tt> <tt class="py-name">roles</tt> <tt class="py-op">=</tt> <tt class="py-name">nodes</tt> <tt class="py-op">=</tt> <tt class="py-name">utils</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="Reader"></a><div id="Reader-def"><a name="L365"></a><tt class="py-lineno">365</tt> <a class="py-toggle" href="#" id="Reader-toggle" onclick="return toggle('Reader');">-</a><tt class="py-line">    <tt class="py-keyword">class</tt> <a class="py-def-name" href="epydoc.docwriter.xlink.Reader-class.html">Reader</a><tt class="py-op">:</tt> <tt id="link-45" class="py-name" targets="Variable epydoc.docwriter.xlink.ApiLinkReader.settings_spec=epydoc.docwriter.xlink.ApiLinkReader-class.ht [...]
+</div><a name="L366"></a><tt class="py-lineno">366</tt>  <tt class="py-line"> </tt>
+<a name="create_api_role"></a><div id="create_api_role-def"><a name="L367"></a><tt class="py-lineno">367</tt> <a class="py-toggle" href="#" id="create_api_role-toggle" onclick="return toggle('create_api_role');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.xlink-module.html#create_api_role">create_api_role</a><tt class="py-op">(</tt><tt class="py-param">name</tt><tt class="py-op">,</tt> <tt class="py-param">problematic</tt><tt cla [...]
+</div><div id="create_api_role-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="create_api_role-expanded"><a name="L368"></a><tt class="py-lineno">368</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L369"></a><tt class="py-lineno">369</tt>  <tt class="py-line"><tt class="py-docstring">    Create and register a new role to create links for an API documentation.</tt> </tt>
+<a name="L370"></a><tt class="py-lineno">370</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L371"></a><tt class="py-lineno">371</tt>  <tt class="py-line"><tt class="py-docstring">    Create a role called `name`, which will use the URL resolver registered as</tt> </tt>
+<a name="L372"></a><tt class="py-lineno">372</tt>  <tt class="py-line"><tt class="py-docstring">    ``name`` in `api_register` to create a link for an object.</tt> </tt>
+<a name="L373"></a><tt class="py-lineno">373</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L374"></a><tt class="py-lineno">374</tt>  <tt class="py-line"><tt class="py-docstring">    :Parameters:</tt> </tt>
+<a name="L375"></a><tt class="py-lineno">375</tt>  <tt class="py-line"><tt class="py-docstring">      `name` : `str`</tt> </tt>
+<a name="L376"></a><tt class="py-lineno">376</tt>  <tt class="py-line"><tt class="py-docstring">        name of the role to create.</tt> </tt>
+<a name="L377"></a><tt class="py-lineno">377</tt>  <tt class="py-line"><tt class="py-docstring">      `problematic` : `bool`</tt> </tt>
+<a name="L378"></a><tt class="py-lineno">378</tt>  <tt class="py-line"><tt class="py-docstring">        if True, the registered role will create problematic nodes in</tt> </tt>
+<a name="L379"></a><tt class="py-lineno">379</tt>  <tt class="py-line"><tt class="py-docstring">        case of failed references. If False, a warning will be raised</tt> </tt>
+<a name="L380"></a><tt class="py-lineno">380</tt>  <tt class="py-line"><tt class="py-docstring">        anyway, but the output will appear as an ordinary literal.</tt> </tt>
+<a name="L381"></a><tt class="py-lineno">381</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L382"></a><tt class="py-lineno">382</tt>  <tt class="py-line">    <tt class="py-keyword">def</tt> <tt class="py-def-name">resolve_api_name</tt><tt class="py-op">(</tt><tt class="py-param">n</tt><tt class="py-op">,</tt> <tt class="py-param">rawtext</tt><tt class="py-op">,</tt> <tt class="py-param">text</tt><tt class="py-op">,</tt> <tt class="py-param">lineno</tt><tt class="py-op">,</tt> <tt class="py-param">inliner</tt><tt class="py-op">,</tt> </tt>
+<a name="L383"></a><tt class="py-lineno">383</tt>  <tt class="py-line">                <tt class="py-param">options</tt><tt class="py-op">=</tt><tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">,</tt> <tt class="py-param">content</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L384"></a><tt class="py-lineno">384</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">docutils</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L385"></a><tt class="py-lineno">385</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">AssertionError</tt><tt class="py-op">(</tt><tt class="py-string">'requires docutils'</tt><tt class="py-op">)</tt> </tt>
+<a name="L386"></a><tt class="py-lineno">386</tt>  <tt class="py-line"> </tt>
+<a name="L387"></a><tt class="py-lineno">387</tt>  <tt class="py-line">        <tt class="py-comment"># node in monotype font</tt> </tt>
+<a name="L388"></a><tt class="py-lineno">388</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">text</tt> <tt class="py-op">=</tt> <tt class="py-name">utils</tt><tt class="py-op">.</tt><tt class="py-name">unescape</tt><tt class="py-op">(</tt><tt class="py-name">text</tt><tt class="py-op">)</tt> </tt>
+<a name="L389"></a><tt class="py-lineno">389</tt>  <tt class="py-line">        <tt class="py-name">node</tt> <tt class="py-op">=</tt> <tt class="py-name">nodes</tt><tt class="py-op">.</tt><tt class="py-name">literal</tt><tt class="py-op">(</tt><tt class="py-name">rawtext</tt><tt class="py-op">,</tt> <tt class="py-name">text</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-name">options</tt><tt class="py-op">)</tt> </tt>
+<a name="L390"></a><tt class="py-lineno">390</tt>  <tt class="py-line"> </tt>
+<a name="L391"></a><tt class="py-lineno">391</tt>  <tt class="py-line">        <tt class="py-comment"># Get the resolver from the register and create an url from it.</tt> </tt>
+<a name="L392"></a><tt class="py-lineno">392</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L393"></a><tt class="py-lineno">393</tt>  <tt class="py-line">            <tt id="link-46" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.url" class="py-name" href="#" onclick="return doclink('link-46', 'url', 'link-9');">url</a></tt> <tt class="py-op">=</tt> <tt id="link-47" class="py-name"><a title="epydoc.docwriter.xlink.api_register" class="py-name" href="#" onclick="return doclink('link-47', 'api_register', 'link-35');">api_register</a></tt><tt class="py-op">[</ [...]
+epydoc.docwriter.xlink.UrlGenerator.get_url
+epydoc.docwriter.xlink.VoidUrlGenerator.get_url" class="py-name" href="#" onclick="return doclink('link-49', 'get_url', 'link-49');">get_url</a></tt><tt class="py-op">(</tt><tt class="py-name">text</tt><tt class="py-op">)</tt> </tt>
+<a name="L394"></a><tt class="py-lineno">394</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">IndexError</tt><tt class="py-op">,</tt> <tt class="py-name">exc</tt><tt class="py-op">:</tt> </tt>
+<a name="L395"></a><tt class="py-lineno">395</tt>  <tt class="py-line">            <tt class="py-name">msg</tt> <tt class="py-op">=</tt> <tt class="py-name">inliner</tt><tt class="py-op">.</tt><tt class="py-name">reporter</tt><tt class="py-op">.</tt><tt id="link-50" class="py-name"><a title="epydoc.checker.DocChecker.warning
+epydoc.log.warning" class="py-name" href="#" onclick="return doclink('link-50', 'warning', 'link-22');">warning</a></tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">exc</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">line</tt><tt class="py-op">=</tt><tt id="link-51" class="py-name" targets="Variable epydoc.apidoc.RoutineDoc.lineno=epydoc.apidoc.RoutineDoc-class.html#lineno"><a title="epydoc.apidoc.RoutineDoc.line [...]
+<a name="L396"></a><tt class="py-lineno">396</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">problematic</tt><tt class="py-op">:</tt> </tt>
+<a name="L397"></a><tt class="py-lineno">397</tt>  <tt class="py-line">                <tt class="py-name">prb</tt> <tt class="py-op">=</tt> <tt class="py-name">inliner</tt><tt class="py-op">.</tt><tt class="py-name">problematic</tt><tt class="py-op">(</tt><tt class="py-name">rawtext</tt><tt class="py-op">,</tt> <tt class="py-name">text</tt><tt class="py-op">,</tt> <tt class="py-name">msg</tt><tt class="py-op">)</tt> </tt>
+<a name="L398"></a><tt class="py-lineno">398</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-op">[</tt><tt class="py-name">prb</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-name">msg</tt><tt class="py-op">]</tt> </tt>
+<a name="L399"></a><tt class="py-lineno">399</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L400"></a><tt class="py-lineno">400</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-op">[</tt><tt class="py-name">node</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L401"></a><tt class="py-lineno">401</tt>  <tt class="py-line"> </tt>
+<a name="L402"></a><tt class="py-lineno">402</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-52" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.url" class="py-name" href="#" onclick="return doclink('link-52', 'url', 'link-9');">url</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L403"></a><tt class="py-lineno">403</tt>  <tt class="py-line">            <tt class="py-name">node</tt> <tt class="py-op">=</tt> <tt class="py-name">nodes</tt><tt class="py-op">.</tt><tt class="py-name">reference</tt><tt class="py-op">(</tt><tt class="py-name">rawtext</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">,</tt> <tt class="py-name">node</tt><tt class="py-op">,</tt> <tt class="py-name">refuri</tt><tt class="py-op">=</tt><tt id="link-53" class [...]
+<a name="L404"></a><tt class="py-lineno">404</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-op">[</tt><tt class="py-name">node</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+</div><a name="L405"></a><tt class="py-lineno">405</tt>  <tt class="py-line"> </tt>
+<a name="L406"></a><tt class="py-lineno">406</tt>  <tt class="py-line">    <tt class="py-name">roles</tt><tt class="py-op">.</tt><tt class="py-name">register_local_role</tt><tt class="py-op">(</tt><tt id="link-54" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-54', 'name', 'link-5');">name</a></tt><tt class="py-op">,</tt> <tt class="py-name">resolve_api_name</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L407"></a><tt class="py-lineno">407</tt>  <tt class="py-line"> </tt>
+<a name="L408"></a><tt class="py-lineno">408</tt>  <tt class="py-line"> </tt>
+<a name="L409"></a><tt class="py-lineno">409</tt>  <tt class="py-line"><tt class="py-comment">#{ Command line parsing</tt> </tt>
+<a name="L410"></a><tt class="py-lineno">410</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#  --------------------</tt> </tt>
+<a name="L411"></a><tt class="py-lineno">411</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L412"></a><tt class="py-lineno">412</tt>  <tt class="py-line"> </tt>
+<a name="split_name"></a><div id="split_name-def"><a name="L413"></a><tt class="py-lineno">413</tt> <a class="py-toggle" href="#" id="split_name-toggle" onclick="return toggle('split_name');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.xlink-module.html#split_name">split_name</a><tt class="py-op">(</tt><tt class="py-param">value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="split_name-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="split_name-expanded"><a name="L414"></a><tt class="py-lineno">414</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L415"></a><tt class="py-lineno">415</tt>  <tt class="py-line"><tt class="py-docstring">    Split an option in form ``NAME:VALUE`` and check if ``NAME`` exists.</tt> </tt>
+<a name="L416"></a><tt class="py-lineno">416</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L417"></a><tt class="py-lineno">417</tt>  <tt class="py-line">    <tt class="py-name">parts</tt> <tt class="py-op">=</tt> <tt id="link-55" class="py-name" targets="Variable epydoc.apidoc.VariableDoc.value=epydoc.apidoc.VariableDoc-class.html#value"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-55', 'value', 'link-55');">value</a></tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-str [...]
+<a name="L418"></a><tt class="py-lineno">418</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">parts</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-number">2</tt><tt class="py-op">:</tt> </tt>
+<a name="L419"></a><tt class="py-lineno">419</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">OptionValueError</tt><tt class="py-op">(</tt> </tt>
+<a name="L420"></a><tt class="py-lineno">420</tt>  <tt class="py-line">            <tt class="py-string">"option value must be specified as NAME:VALUE; got '%s' instead"</tt> </tt>
+<a name="L421"></a><tt class="py-lineno">421</tt>  <tt class="py-line">            <tt class="py-op">%</tt> <tt id="link-56" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-56', 'value', 'link-55');">value</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L422"></a><tt class="py-lineno">422</tt>  <tt class="py-line"> </tt>
+<a name="L423"></a><tt class="py-lineno">423</tt>  <tt class="py-line">    <tt id="link-57" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-57', 'name', 'link-5');">name</a></tt><tt class="py-op">,</tt> <tt class="py-name">val</tt> <tt class="py-op">=</tt> <tt class="py-name">parts</tt> </tt>
+<a name="L424"></a><tt class="py-lineno">424</tt>  <tt class="py-line"> </tt>
+<a name="L425"></a><tt class="py-lineno">425</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-58" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-58', 'name', 'link-5');">name</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt id="link-59" class="py-name"><a title="epydoc.docwriter.xlink.api_register" class="py-name" href="#" onclick="return doclink('link-59', 'api_register' [...]
+<a name="L426"></a><tt class="py-lineno">426</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">OptionValueError</tt><tt class="py-op">(</tt> </tt>
+<a name="L427"></a><tt class="py-lineno">427</tt>  <tt class="py-line">            <tt class="py-string">"the name '%s' has not been registered; use --external-api"</tt> </tt>
+<a name="L428"></a><tt class="py-lineno">428</tt>  <tt class="py-line">            <tt class="py-op">%</tt> <tt id="link-60" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-60', 'name', 'link-5');">name</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L429"></a><tt class="py-lineno">429</tt>  <tt class="py-line"> </tt>
+<a name="L430"></a><tt class="py-lineno">430</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt id="link-61" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-61', 'name', 'link-5');">name</a></tt><tt class="py-op">,</tt> <tt class="py-name">val</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L431"></a><tt class="py-lineno">431</tt>  <tt class="py-line"> </tt>
+<a name="L432"></a><tt class="py-lineno">432</tt>  <tt class="py-line"> </tt>
+<a name="ApiLinkReader"></a><div id="ApiLinkReader-def"><a name="L433"></a><tt class="py-lineno">433</tt> <a class="py-toggle" href="#" id="ApiLinkReader-toggle" onclick="return toggle('ApiLinkReader');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="epydoc.docwriter.xlink.ApiLinkReader-class.html">ApiLinkReader</a><tt class="py-op">(</tt><tt class="py-base-class">Reader</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ApiLinkReader-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="ApiLinkReader-expanded"><a name="L434"></a><tt class="py-lineno">434</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L435"></a><tt class="py-lineno">435</tt>  <tt class="py-line"><tt class="py-docstring">    A Docutils standalone reader allowing external documentation links.</tt> </tt>
+<a name="L436"></a><tt class="py-lineno">436</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L437"></a><tt class="py-lineno">437</tt>  <tt class="py-line"><tt class="py-docstring">    The reader configure the url resolvers at the time `read()` is invoked the</tt> </tt>
+<a name="L438"></a><tt class="py-lineno">438</tt>  <tt class="py-line"><tt class="py-docstring">    first time.</tt> </tt>
+<a name="L439"></a><tt class="py-lineno">439</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L440"></a><tt class="py-lineno">440</tt>  <tt class="py-line">    <tt class="py-comment">#: The option parser configuration.</tt> </tt>
+<a name="L441"></a><tt class="py-lineno">441</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-62" class="py-name"><a title="epydoc.docwriter.xlink.ApiLinkReader.settings_spec" class="py-name" href="#" onclick="return doclink('link-62', 'settings_spec', 'link-45');">settings_spec</a></tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt> </tt>
+<a name="L442"></a><tt class="py-lineno">442</tt>  <tt class="py-line">    <tt class="py-string">'API Linking Options'</tt><tt class="py-op">,</tt> </tt>
+<a name="L443"></a><tt class="py-lineno">443</tt>  <tt class="py-line">    <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L444"></a><tt class="py-lineno">444</tt>  <tt class="py-line">    <tt class="py-op">(</tt><tt class="py-op">(</tt> </tt>
+<a name="L445"></a><tt class="py-lineno">445</tt>  <tt class="py-line">        <tt class="py-string">'Define a new API document.  A new interpreted text role NAME will be '</tt> </tt>
+<a name="L446"></a><tt class="py-lineno">446</tt>  <tt class="py-line">        <tt class="py-string">'added.'</tt><tt class="py-op">,</tt> </tt>
+<a name="L447"></a><tt class="py-lineno">447</tt>  <tt class="py-line">        <tt class="py-op">[</tt><tt class="py-string">'--external-api'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L448"></a><tt class="py-lineno">448</tt>  <tt class="py-line">        <tt class="py-op">{</tt><tt class="py-string">'metavar'</tt><tt class="py-op">:</tt> <tt class="py-string">'NAME'</tt><tt class="py-op">,</tt> <tt class="py-string">'action'</tt><tt class="py-op">:</tt> <tt class="py-string">'append'</tt><tt class="py-op">}</tt> </tt>
+<a name="L449"></a><tt class="py-lineno">449</tt>  <tt class="py-line">    <tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt> </tt>
+<a name="L450"></a><tt class="py-lineno">450</tt>  <tt class="py-line">        <tt class="py-string">'Use records in FILENAME to resolve objects in the API named NAME.'</tt><tt class="py-op">,</tt> </tt>
+<a name="L451"></a><tt class="py-lineno">451</tt>  <tt class="py-line">        <tt class="py-op">[</tt><tt class="py-string">'--external-api-file'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L452"></a><tt class="py-lineno">452</tt>  <tt class="py-line">        <tt class="py-op">{</tt><tt class="py-string">'metavar'</tt><tt class="py-op">:</tt> <tt class="py-string">'NAME:FILENAME'</tt><tt class="py-op">,</tt> <tt class="py-string">'action'</tt><tt class="py-op">:</tt> <tt class="py-string">'append'</tt><tt class="py-op">}</tt> </tt>
+<a name="L453"></a><tt class="py-lineno">453</tt>  <tt class="py-line">    <tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt> </tt>
+<a name="L454"></a><tt class="py-lineno">454</tt>  <tt class="py-line">        <tt class="py-string">'Use STRING as prefix for the URL generated from the API NAME.'</tt><tt class="py-op">,</tt> </tt>
+<a name="L455"></a><tt class="py-lineno">455</tt>  <tt class="py-line">        <tt class="py-op">[</tt><tt class="py-string">'--external-api-root'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L456"></a><tt class="py-lineno">456</tt>  <tt class="py-line">        <tt class="py-op">{</tt><tt class="py-string">'metavar'</tt><tt class="py-op">:</tt> <tt class="py-string">'NAME:STRING'</tt><tt class="py-op">,</tt> <tt class="py-string">'action'</tt><tt class="py-op">:</tt> <tt class="py-string">'append'</tt><tt class="py-op">}</tt> </tt>
+<a name="L457"></a><tt class="py-lineno">457</tt>  <tt class="py-line">    <tt class="py-op">)</tt><tt class="py-op">,</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-name">Reader</tt><tt class="py-op">.</tt><tt id="link-63" class="py-name"><a title="epydoc.docwriter.xlink.ApiLinkReader.settings_spec" class="py-name" href="#" onclick="return doclink('link-63', 'settings_spec', 'link-45');">settings_spec</a></tt> </tt>
+<a name="L458"></a><tt class="py-lineno">458</tt>  <tt class="py-line"> </tt>
+<a name="ApiLinkReader.__init__"></a><div id="ApiLinkReader.__init__-def"><a name="L459"></a><tt class="py-lineno">459</tt> <a class="py-toggle" href="#" id="ApiLinkReader.__init__-toggle" onclick="return toggle('ApiLinkReader.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.xlink.ApiLinkReader-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py [...]
+</div><div id="ApiLinkReader.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ApiLinkReader.__init__-expanded"><a name="L460"></a><tt class="py-lineno">460</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">docutils</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L461"></a><tt class="py-lineno">461</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">AssertionError</tt><tt class="py-op">(</tt><tt class="py-string">'requires docutils'</tt><tt class="py-op">)</tt> </tt>
+<a name="L462"></a><tt class="py-lineno">462</tt>  <tt class="py-line">        <tt class="py-name">Reader</tt><tt class="py-op">.</tt><tt id="link-64" class="py-name" targets="Method epydoc.apidoc.APIDoc.__init__()=epydoc.apidoc.APIDoc-class.html#__init__,Method epydoc.apidoc.DocIndex.__init__()=epydoc.apidoc.DocIndex-class.html#__init__,Method epydoc.apidoc.DottedName.__init__()=epydoc.apidoc.DottedName-class.html#__init__,Method epydoc.apidoc.NamespaceDoc.__init__()=epydoc.apidoc.Names [...]
+epydoc.apidoc.DocIndex.__init__
+epydoc.apidoc.DottedName.__init__
+epydoc.apidoc.NamespaceDoc.__init__
+epydoc.apidoc.VariableDoc.__init__
+epydoc.apidoc._Sentinel.__init__
+epydoc.checker.DocChecker.__init__
+epydoc.cli.ConsoleLogger.__init__
+epydoc.cli.HTMLLogger.__init__
+epydoc.cli.TerminalController.__init__
+epydoc.cli.UnifiedProgressConsoleLogger.__init__
+epydoc.docbuilder.BuildOptions.__init__
+epydoc.docbuilder._ProgressEstimator.__init__
+epydoc.docintrospecter._DevNull.__init__
+epydoc.docstringparser.DocstringField.__init__
+epydoc.docwriter.dotgraph.DotGraph.__init__
+epydoc.docwriter.dotgraph.DotGraphEdge.__init__
+epydoc.docwriter.dotgraph.DotGraphNode.__init__
+epydoc.docwriter.dotgraph.DotGraphUmlClassNode.__init__
+epydoc.docwriter.dotgraph.DotGraphUmlModuleNode.__init__
+epydoc.docwriter.html.HTMLWriter.__init__
+epydoc.docwriter.html._HTMLDocstringLinker.__init__
+epydoc.docwriter.html_colorize.PythonSourceColorizer.__init__
+epydoc.docwriter.latex.LatexWriter.__init__
+epydoc.docwriter.xlink.ApiLinkReader.__init__
+epydoc.docwriter.xlink.DocUrlGenerator.__init__
+epydoc.gui.EpydocGUI.__init__
+epydoc.gui.GUILogger.__init__
+epydoc.log.SimpleLogger.__init__
+epydoc.markup.ConcatenatedDocstring.__init__
+epydoc.markup.Field.__init__
+epydoc.markup.ParseError.__init__
+epydoc.markup.epytext.ColorizingError.__init__
+epydoc.markup.epytext.Element.__init__
+epydoc.markup.epytext.ParsedEpytextDocstring.__init__
+epydoc.markup.epytext.Token.__init__
+epydoc.markup.javadoc.ParsedJavadocDocstring.__init__
+epydoc.markup.plaintext.ParsedPlaintextDocstring.__init__
+epydoc.markup.pyval_repr.ColorizedPyvalRepr.__init__
+epydoc.markup.pyval_repr.PyvalColorizer.__init__
+epydoc.markup.pyval_repr._ColorizerState.__init__
+epydoc.markup.restructuredtext.ParsedRstDocstring.__init__
+epydoc.markup.restructuredtext._DocumentPseudoWriter.__init__
+epydoc.markup.restructuredtext._EpydocHTMLTranslator.__init__
+epydoc.markup.restructuredtext._EpydocLaTeXTranslator.__init__
+epydoc.markup.restructuredtext._EpydocReader.__init__
+epydoc.markup.restructuredtext._SplitFieldsTranslator.__init__
+epydoc.markup.restructuredtext._SummaryExtractor.__init__
+epydoc.markup.restructuredtext._TermsExtractor.__init__
+epydoc.markup.restructuredtext.dotgraph.__init__
+epydoc.util.RunSubprocessError.__init__" class="py-name" href="#" onclick="return doclink('link-64', '__init__', 'link-64');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-name">args</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-name">kwargs</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L463"></a><tt class="py-lineno">463</tt>  <tt class="py-line"> </tt>
+<a name="ApiLinkReader.read"></a><div id="ApiLinkReader.read-def"><a name="L464"></a><tt class="py-lineno">464</tt> <a class="py-toggle" href="#" id="ApiLinkReader.read-toggle" onclick="return toggle('ApiLinkReader.read');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.xlink.ApiLinkReader-class.html#read">read</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">source</tt><tt c [...]
+</div><div id="ApiLinkReader.read-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ApiLinkReader.read-expanded"><a name="L465"></a><tt class="py-lineno">465</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-65" class="py-name" targets="Class Method epydoc.docwriter.xlink.ApiLinkReader.read_configuration()=epydoc.docwriter.xlink.ApiLinkReader-class.html#read_configuration"><a title="epydoc.docwriter.xlink.ApiLink [...]
+epydoc.markup.restructuredtext._EpydocLaTeXTranslator.settings" class="py-name" href="#" onclick="return doclink('link-66', 'settings', 'link-66');">settings</a></tt><tt class="py-op">,</tt> <tt class="py-name">problematic</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt>
+<a name="L466"></a><tt class="py-lineno">466</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">Reader</tt><tt class="py-op">.</tt><tt id="link-67" class="py-name" targets="Method epydoc.docintrospecter._DevNull.read()=epydoc.docintrospecter._DevNull-class.html#read,Method epydoc.docwriter.xlink.ApiLinkReader.read()=epydoc.docwriter.xlink.ApiLinkReader-class.html#read,Method epydoc.gui.GUILogger.read()=epydoc.gui.GUILogger-class.html#read"><a title=" [...]
+epydoc.docwriter.xlink.ApiLinkReader.read
+epydoc.gui.GUILogger.read" class="py-name" href="#" onclick="return doclink('link-67', 'read', 'link-67');">read</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">source</tt><tt class="py-op">,</tt> <tt class="py-name">parser</tt><tt class="py-op">,</tt> <tt id="link-68" class="py-name"><a title="epydoc.markup.restructuredtext._EpydocHTMLTranslator.settings
+epydoc.markup.restructuredtext._EpydocLaTeXTranslator.settings" class="py-name" href="#" onclick="return doclink('link-68', 'settings', 'link-66');">settings</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L467"></a><tt class="py-lineno">467</tt>  <tt class="py-line"> </tt>
+<a name="ApiLinkReader.read_configuration"></a><div id="ApiLinkReader.read_configuration-def"><a name="L468"></a><tt class="py-lineno">468</tt> <a class="py-toggle" href="#" id="ApiLinkReader.read_configuration-toggle" onclick="return toggle('ApiLinkReader.read_configuration');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.docwriter.xlink.ApiLinkReader-class.html#read_configuration">read_configuration</a><tt class="py-op">(</tt><tt clas [...]
+</div><div id="ApiLinkReader.read_configuration-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ApiLinkReader.read_configuration-expanded"><a name="L469"></a><tt class="py-lineno">469</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L470"></a><tt class="py-lineno">470</tt>  <tt class="py-line"><tt class="py-docstring">        Read the configuration for the configured URL resolver.</tt> </tt>
+<a name="L471"></a><tt class="py-lineno">471</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L472"></a><tt class="py-lineno">472</tt>  <tt class="py-line"><tt class="py-docstring">        Register a new role for each configured API.</tt> </tt>
+<a name="L473"></a><tt class="py-lineno">473</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L474"></a><tt class="py-lineno">474</tt>  <tt class="py-line"><tt class="py-docstring">        :Parameters:</tt> </tt>
+<a name="L475"></a><tt class="py-lineno">475</tt>  <tt class="py-line"><tt class="py-docstring">          `settings`</tt> </tt>
+<a name="L476"></a><tt class="py-lineno">476</tt>  <tt class="py-line"><tt class="py-docstring">            the settings structure containing the options to read.</tt> </tt>
+<a name="L477"></a><tt class="py-lineno">477</tt>  <tt class="py-line"><tt class="py-docstring">          `problematic` : `bool`</tt> </tt>
+<a name="L478"></a><tt class="py-lineno">478</tt>  <tt class="py-line"><tt class="py-docstring">            if True, the registered role will create problematic nodes in</tt> </tt>
+<a name="L479"></a><tt class="py-lineno">479</tt>  <tt class="py-line"><tt class="py-docstring">            case of failed references. If False, a warning will be raised</tt> </tt>
+<a name="L480"></a><tt class="py-lineno">480</tt>  <tt class="py-line"><tt class="py-docstring">            anyway, but the output will appear as an ordinary literal.</tt> </tt>
+<a name="L481"></a><tt class="py-lineno">481</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L482"></a><tt class="py-lineno">482</tt>  <tt class="py-line">        <tt class="py-comment"># Read config only once</tt> </tt>
+<a name="L483"></a><tt class="py-lineno">483</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-string">'_conf'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L484"></a><tt class="py-lineno">484</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> </tt>
+<a name="L485"></a><tt class="py-lineno">485</tt>  <tt class="py-line">        <tt id="link-69" class="py-name" targets="Class epydoc.docwriter.xlink.ApiLinkReader=epydoc.docwriter.xlink.ApiLinkReader-class.html"><a title="epydoc.docwriter.xlink.ApiLinkReader" class="py-name" href="#" onclick="return doclink('link-69', 'ApiLinkReader', 'link-69');">ApiLinkReader</a></tt><tt class="py-op">.</tt><tt id="link-70" class="py-name" targets="Variable epydoc.docwriter.xlink.ApiLinkReader._conf=e [...]
+<a name="L486"></a><tt class="py-lineno">486</tt>  <tt class="py-line"> </tt>
+<a name="L487"></a><tt class="py-lineno">487</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L488"></a><tt class="py-lineno">488</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt id="link-71" class="py-name"><a title="epydoc.markup.restructuredtext._EpydocHTMLTranslator.settings
+epydoc.markup.restructuredtext._EpydocLaTeXTranslator.settings" class="py-name" href="#" onclick="return doclink('link-71', 'settings', 'link-66');">settings</a></tt><tt class="py-op">.</tt><tt class="py-name">external_api</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L489"></a><tt class="py-lineno">489</tt>  <tt class="py-line">                <tt class="py-keyword">for</tt> <tt id="link-72" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-72', 'name', 'link-5');">name</a></tt> <tt class="py-keyword">in</tt> <tt id="link-73" class="py-name"><a title="epydoc.markup.restructuredtext._EpydocHTMLTranslator.settings
+epydoc.markup.restructuredtext._EpydocLaTeXTranslator.settings" class="py-name" href="#" onclick="return doclink('link-73', 'settings', 'link-66');">settings</a></tt><tt class="py-op">.</tt><tt class="py-name">external_api</tt><tt class="py-op">:</tt> </tt>
+<a name="L490"></a><tt class="py-lineno">490</tt>  <tt class="py-line">                    <tt id="link-74" class="py-name"><a title="epydoc.docwriter.xlink.register_api" class="py-name" href="#" onclick="return doclink('link-74', 'register_api', 'link-41');">register_api</a></tt><tt class="py-op">(</tt><tt id="link-75" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-75', 'name', 'link-5');">name</a></tt><tt class="py-op">) [...]
+<a name="L491"></a><tt class="py-lineno">491</tt>  <tt class="py-line">                    <tt id="link-76" class="py-name" targets="Function epydoc.docwriter.xlink.create_api_role()=epydoc.docwriter.xlink-module.html#create_api_role"><a title="epydoc.docwriter.xlink.create_api_role" class="py-name" href="#" onclick="return doclink('link-76', 'create_api_role', 'link-76');">create_api_role</a></tt><tt class="py-op">(</tt><tt id="link-77" class="py-name"><a title="epydoc.apidoc.VariableDo [...]
+<a name="L492"></a><tt class="py-lineno">492</tt>  <tt class="py-line"> </tt>
+<a name="L493"></a><tt class="py-lineno">493</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt id="link-78" class="py-name"><a title="epydoc.markup.restructuredtext._EpydocHTMLTranslator.settings
+epydoc.markup.restructuredtext._EpydocLaTeXTranslator.settings" class="py-name" href="#" onclick="return doclink('link-78', 'settings', 'link-66');">settings</a></tt><tt class="py-op">.</tt><tt class="py-name">external_api_file</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L494"></a><tt class="py-lineno">494</tt>  <tt class="py-line">                <tt class="py-keyword">for</tt> <tt id="link-79" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-79', 'name', 'link-5');">name</a></tt><tt class="py-op">,</tt> <tt class="py-name">file</tt> <tt class="py-keyword">in</tt> <tt class="py-name">map</tt><tt class="py-op">(</tt><tt id="link-80" class="py-name" targets="Function epydoc.docwriter [...]
+epydoc.markup.restructuredtext._EpydocLaTeXTranslator.settings" class="py-name" href="#" onclick="return doclink('link-81', 'settings', 'link-66');">settings</a></tt><tt class="py-op">.</tt><tt class="py-name">external_api_file</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L495"></a><tt class="py-lineno">495</tt>  <tt class="py-line">                    <tt id="link-82" class="py-name" targets="Function epydoc.docwriter.xlink.set_api_file()=epydoc.docwriter.xlink-module.html#set_api_file"><a title="epydoc.docwriter.xlink.set_api_file" class="py-name" href="#" onclick="return doclink('link-82', 'set_api_file', 'link-82');">set_api_file</a></tt><tt class="py-op">(</tt><tt id="link-83" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class=" [...]
+<a name="L496"></a><tt class="py-lineno">496</tt>  <tt class="py-line"> </tt>
+<a name="L497"></a><tt class="py-lineno">497</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt id="link-84" class="py-name"><a title="epydoc.markup.restructuredtext._EpydocHTMLTranslator.settings
+epydoc.markup.restructuredtext._EpydocLaTeXTranslator.settings" class="py-name" href="#" onclick="return doclink('link-84', 'settings', 'link-66');">settings</a></tt><tt class="py-op">.</tt><tt class="py-name">external_api_root</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L498"></a><tt class="py-lineno">498</tt>  <tt class="py-line">                <tt class="py-keyword">for</tt> <tt id="link-85" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-85', 'name', 'link-5');">name</a></tt><tt class="py-op">,</tt> <tt class="py-name">root</tt> <tt class="py-keyword">in</tt> <tt class="py-name">map</tt><tt class="py-op">(</tt><tt id="link-86" class="py-name"><a title="epydoc.docwriter.xlink.s [...]
+epydoc.markup.restructuredtext._EpydocLaTeXTranslator.settings" class="py-name" href="#" onclick="return doclink('link-87', 'settings', 'link-66');">settings</a></tt><tt class="py-op">.</tt><tt class="py-name">external_api_root</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L499"></a><tt class="py-lineno">499</tt>  <tt class="py-line">                    <tt id="link-88" class="py-name" targets="Function epydoc.docwriter.xlink.set_api_root()=epydoc.docwriter.xlink-module.html#set_api_root"><a title="epydoc.docwriter.xlink.set_api_root" class="py-name" href="#" onclick="return doclink('link-88', 'set_api_root', 'link-88');">set_api_root</a></tt><tt class="py-op">(</tt><tt id="link-89" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class=" [...]
+<a name="L500"></a><tt class="py-lineno">500</tt>  <tt class="py-line"> </tt>
+<a name="L501"></a><tt class="py-lineno">501</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">OptionValueError</tt><tt class="py-op">,</tt> <tt class="py-name">exc</tt><tt class="py-op">:</tt> </tt>
+<a name="L502"></a><tt class="py-lineno">502</tt>  <tt class="py-line">            <tt class="py-keyword">print</tt> <tt class="py-op">>></tt><tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">stderr</tt><tt class="py-op">,</tt> <tt class="py-string">"%s: %s"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">exc</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt><tt clas [...]
+<a name="L503"></a><tt class="py-lineno">503</tt>  <tt class="py-line">            <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">exit</tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L504"></a><tt class="py-lineno">504</tt>  <tt class="py-line"> </tt>
+<a name="L505"></a><tt class="py-lineno">505</tt>  <tt class="py-line">    <tt id="link-90" class="py-name"><a title="epydoc.docwriter.xlink.ApiLinkReader.read_configuration" class="py-name" href="#" onclick="return doclink('link-90', 'read_configuration', 'link-65');">read_configuration</a></tt> <tt class="py-op">=</tt> <tt class="py-name">classmethod</tt><tt class="py-op">(</tt><tt id="link-91" class="py-name"><a title="epydoc.docwriter.xlink.ApiLinkReader.read_configuration" class="py [...]
+</div><a name="L506"></a><tt class="py-lineno">506</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:09:34 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.docwriter.xlink.ApiLinkReader-class.html b/doc/api/epydoc.docwriter.xlink.ApiLinkReader-class.html
new file mode 100644
index 0000000..8f81794
--- /dev/null
+++ b/doc/api/epydoc.docwriter.xlink.ApiLinkReader-class.html
@@ -0,0 +1,571 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.docwriter.xlink.ApiLinkReader</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.docwriter-module.html">Package docwriter</a> ::
+        <a href="epydoc.docwriter.xlink-module.html">Module xlink</a> ::
+        Class ApiLinkReader
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.docwriter.xlink.ApiLinkReader-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class ApiLinkReader</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.docwriter.xlink-pysrc.html#ApiLinkReader">source code</a></span></p>
+<center>
+  <div class="private"><center>  <map id="uml_class_diagram_for_epydoc_d_7" name="uml_class_diagram_for_epydoc_d_7">
+<area shape="rect" href="javascript:void(0);" title="Name of the component type ('reader', 'parser', 'writer')." alt="" coords="130,215,316,233" />
+<area shape="rect" href="javascript:void(0);" title="Create and return a new empty document tree (root node)." alt="" coords="130,236,316,255" />
+<area shape="rect" href="javascript:void(0);" title="Parse self.input into a document tree." alt="" coords="130,255,316,273" />
+<area shape="rect" href="javascript:void(0);" title="Set self.parser by name." alt="" coords="130,273,316,292" />
+<area shape="rect" href="javascript:void(0);" title="Abstract base class for docutils Readers." alt="" coords="118,192,328,299" />
+<area shape="rect" href="javascript:void(0);" title="The name of the config file section specific to this component (lowercase, no brackets)." alt="" coords="118,340,328,359" />
+<area shape="rect" href="javascript:void(0);" title="A list of names of config file sections that are to be applied before config_section, in order (from general to specific)." alt="" coords="118,359,328,377" />
+<area shape="rect" href="javascript:void(0);" title="docutils.readers.standalone.Reader.document" alt="" coords="118,377,328,396" />
+<area shape="rect" href="javascript:void(0);" title="Names for this component." alt="" coords="118,396,328,415" />
+<area shape="rect" href="javascript:void(0);" title="Transforms required by this class." alt="" coords="118,417,328,436" />
+<area shape="rect" href="javascript:void(0);" title="docutils.readers.standalone.Reader" alt="" coords="106,317,340,443" />
+<area shape="rect" href="epydoc.markup.restructuredtext._EpydocReader-class.html" title="A reader that captures all errors that are generated by parsing, and appends them to a list." alt="" coords="84,587,362,624" />
+<area shape="rect" href="javascript:void(0);" title="Is format supported by this component?" alt="" coords="156,148,290,167" />
+<area shape="rect" href="javascript:void(0);" title="Base class for Docutils components." alt="" coords="144,117,302,173" />
+<area shape="rect" href="javascript:void(0);" title="docutils.TransformSpec.default_transforms" alt="" coords="18,37,202,56" />
+<area shape="rect" href="javascript:void(0);" title="List of functions to try to resolve unknown references." alt="" coords="18,56,202,75" />
+<area shape="rect" href="javascript:void(0);" title="Runtime transform specification base class." alt="" coords="6,15,214,89" />
+<area shape="rect" href="epydoc.docwriter.xlink.ApiLinkReader-class.html#settings_spec" title="The option parser configuration." alt="" coords="67,484,379,503" />
+<area shape="rect" href="epydoc.docwriter.xlink.ApiLinkReader-class.html#__init__" title="Initialize the Reader instance." alt="" coords="67,505,379,524" />
+<area shape="rect" href="epydoc.docwriter.xlink.ApiLinkReader-class.html#read" title="epydoc.docwriter.xlink.ApiLinkReader.read" alt="" coords="67,524,379,543" />
+<area shape="rect" href="epydoc.docwriter.xlink.ApiLinkReader-class.html#read_configuration" title="Read the configuration for the configured URL resolver." alt="" coords="67,543,379,561" />
+<area shape="rect" href="epydoc.docwriter.xlink.ApiLinkReader-class.html" title="A Docutils standalone reader allowing external documentation links." alt="" coords="55,461,391,568" />
+<area shape="rect" href="javascript:void(0);" title="A dictionary of defaults for settings not in settings_spec (internal settings, intended to be inaccessible by command-line and config file)." alt="" coords="255,28,418,47" />
+<area shape="rect" href="javascript:void(0);" title="A dictionary of auxiliary defaults, to override defaults for settings defined in other components." alt="" coords="255,47,418,65" />
+<area shape="rect" href="javascript:void(0);" title="Settings containing filesystem paths." alt="" coords="255,65,418,84" />
+<area shape="rect" href="javascript:void(0);" title="Runtime setting specification base class." alt="" coords="243,5,430,99" />
+</map>
+  <img src="uml_class_diagram_for_epydoc_d_7.gif" alt='' usemap="#uml_class_diagram_for_epydoc_d_7" ismap="ismap" class="graph-without-title" />
+</center></div>
+  <div class="public" style="display:none"><center>  <map id="uml_class_diagram_for_epydoc_d_8" name="uml_class_diagram_for_epydoc_d_8">
+<area shape="rect" href="javascript:void(0);" title="Name of the component type ('reader', 'parser', 'writer')." alt="" coords="130,215,316,233" />
+<area shape="rect" href="javascript:void(0);" title="Create and return a new empty document tree (root node)." alt="" coords="130,236,316,255" />
+<area shape="rect" href="javascript:void(0);" title="Parse self.input into a document tree." alt="" coords="130,255,316,273" />
+<area shape="rect" href="javascript:void(0);" title="Set self.parser by name." alt="" coords="130,273,316,292" />
+<area shape="rect" href="javascript:void(0);" title="Abstract base class for docutils Readers." alt="" coords="118,192,328,299" />
+<area shape="rect" href="javascript:void(0);" title="The name of the config file section specific to this component (lowercase, no brackets)." alt="" coords="118,340,328,359" />
+<area shape="rect" href="javascript:void(0);" title="A list of names of config file sections that are to be applied before config_section, in order (from general to specific)." alt="" coords="118,359,328,377" />
+<area shape="rect" href="javascript:void(0);" title="docutils.readers.standalone.Reader.document" alt="" coords="118,377,328,396" />
+<area shape="rect" href="javascript:void(0);" title="Names for this component." alt="" coords="118,396,328,415" />
+<area shape="rect" href="javascript:void(0);" title="Transforms required by this class." alt="" coords="118,417,328,436" />
+<area shape="rect" href="javascript:void(0);" title="docutils.readers.standalone.Reader" alt="" coords="106,317,340,443" />
+<area shape="rect" href="javascript:void(0);" title="Is format supported by this component?" alt="" coords="156,148,290,167" />
+<area shape="rect" href="javascript:void(0);" title="Base class for Docutils components." alt="" coords="144,117,302,173" />
+<area shape="rect" href="javascript:void(0);" title="docutils.TransformSpec.default_transforms" alt="" coords="18,37,202,56" />
+<area shape="rect" href="javascript:void(0);" title="List of functions to try to resolve unknown references." alt="" coords="18,56,202,75" />
+<area shape="rect" href="javascript:void(0);" title="Runtime transform specification base class." alt="" coords="6,15,214,89" />
+<area shape="rect" href="epydoc.docwriter.xlink.ApiLinkReader-class.html#settings_spec" title="The option parser configuration." alt="" coords="67,484,379,503" />
+<area shape="rect" href="epydoc.docwriter.xlink.ApiLinkReader-class.html#__init__" title="Initialize the Reader instance." alt="" coords="67,505,379,524" />
+<area shape="rect" href="epydoc.docwriter.xlink.ApiLinkReader-class.html#read" title="epydoc.docwriter.xlink.ApiLinkReader.read" alt="" coords="67,524,379,543" />
+<area shape="rect" href="epydoc.docwriter.xlink.ApiLinkReader-class.html#read_configuration" title="Read the configuration for the configured URL resolver." alt="" coords="67,543,379,561" />
+<area shape="rect" href="epydoc.docwriter.xlink.ApiLinkReader-class.html" title="A Docutils standalone reader allowing external documentation links." alt="" coords="55,461,391,568" />
+<area shape="rect" href="javascript:void(0);" title="A dictionary of defaults for settings not in settings_spec (internal settings, intended to be inaccessible by command-line and config file)." alt="" coords="255,28,418,47" />
+<area shape="rect" href="javascript:void(0);" title="A dictionary of auxiliary defaults, to override defaults for settings defined in other components." alt="" coords="255,47,418,65" />
+<area shape="rect" href="javascript:void(0);" title="Settings containing filesystem paths." alt="" coords="255,65,418,84" />
+<area shape="rect" href="javascript:void(0);" title="Runtime setting specification base class." alt="" coords="243,5,430,99" />
+</map>
+  <img src="uml_class_diagram_for_epydoc_d_8.gif" alt='' usemap="#uml_class_diagram_for_epydoc_d_8" ismap="ismap" class="graph-without-title" />
+</center></div>
+</center>
+<hr />
+<p>A Docutils standalone reader allowing external documentation links.</p>
+<p>The reader configure the url resolvers at the time <a href="epydoc.docwriter.xlink.ApiLinkReader-class.html#read" class="link">read()</a> is invoked the
+first time.</p>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docwriter.xlink.ApiLinkReader-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">*args</span>,
+        <span class="summary-sig-arg">**kwargs</span>)</span><br />
+      Initialize the Reader instance.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.xlink-pysrc.html#ApiLinkReader.__init__">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for___init___25-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for___init___25-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for___init___25" name="call_graph_for___init___25">
+<area shape="rect" href="javascript:void(0);" title="docutils.readers.Reader.__init__()" alt="" coords="604,6,879,38" />
+<area shape="rect" href="epydoc.docwriter.xlink.ApiLinkReader-class.html#__init__" title="__init__()" alt="" coords="457,6,553,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext._EpydocReader-class.html#__init__" title="markup.restructuredtext._EpydocReader.__init__()" alt="" coords="5,6,408,38" />
+</map>
+  <img src="call_graph_for___init___25.gif" alt='' usemap="#call_graph_for___init___25" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docwriter.xlink.ApiLinkReader-class.html#read" class="summary-sig-name">read</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">source</span>,
+        <span class="summary-sig-arg">parser</span>,
+        <span class="summary-sig-arg">settings</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.xlink-pysrc.html#ApiLinkReader.read">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_read_2-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_read_2-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_read_2" name="call_graph_for_read_2">
+<area shape="rect" href="javascript:void(0);" title="docutils.readers.Reader.read()" alt="" coords="124,6,369,38" />
+<area shape="rect" href="epydoc.docwriter.xlink.ApiLinkReader-class.html#read" title="read()" alt="" coords="7,34,73,66" />
+<area shape="rect" href="epydoc.docwriter.xlink.ApiLinkReader-class.html#read_configuration" title="read_configuration()" alt="" coords="159,62,335,94" />
+</map>
+  <img src="call_graph_for_read_2.gif" alt='' usemap="#call_graph_for_read_2" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>docutils.readers.standalone.Reader</code></b>:
+      <code>get_transforms</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>docutils.readers.Reader</code></b>:
+      <code>new_document</code>,
+      <code>parse</code>,
+      <code>set_parser</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>docutils.Component</code></b>:
+      <code>supports</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS METHODS ==================== -->
+<a name="section-ClassMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Class Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-ClassMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docwriter.xlink.ApiLinkReader-class.html#read_configuration" class="summary-sig-name">read_configuration</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">settings</span>,
+        <span class="summary-sig-arg">problematic</span>=<span class="summary-sig-default">True</span>)</span><br />
+      Read the configuration for the configured URL resolver.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.xlink-pysrc.html#ApiLinkReader.read_configuration">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_read_configurat-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_read_configurat-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_read_configurat" name="call_graph_for_read_configurat">
+<area shape="rect" href="epydoc.docwriter.xlink.ApiLinkReader-class.html#read" title="read()" alt="" coords="7,6,74,38" />
+<area shape="rect" href="epydoc.docwriter.xlink.ApiLinkReader-class.html#read_configuration" title="read_configuration()" alt="" coords="124,6,300,38" />
+</map>
+  <img src="call_graph_for_read_configurat.gif" alt='' usemap="#call_graph_for_read_configurat" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Class Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-ClassVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docwriter.xlink.ApiLinkReader-class.html#settings_spec" class="summary-name">settings_spec</a> = <code title="('API Linking Options',
+ None,
+ (('Define a new API document.  A new interpreted text role NAME will \
+be added.',
+   ['--external-api'],
+   {'action': 'append', 'metavar': 'NAME'}),
+  ('Use records in FILENAME to resolve objects in the API named NAME.'\
+,
+..."><code class="variable-group">(</code><code class="variable-quote">'</code><code class="variable-string">API Linking Options</code><code class="variable-quote">'</code><code class="variable-op">, </code>None<code class="variable-op">, </code><code class="variable-group">(</code><code class="variable-group">(</code><code class="variable-quote">'</code><code class="variable-string">Define a new </code><code class="variable-ellipsis">...</code></code><br />
+      The option parser configuration.
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="_conf"></a><span class="summary-name">_conf</span> = <code title="True">True</code>
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>docutils.readers.standalone.Reader</code></b>:
+      <code>config_section</code>,
+      <code>config_section_dependencies</code>,
+      <code>document</code>,
+      <code>supported</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>docutils.readers.Reader</code></b>:
+      <code>component_type</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>docutils.SettingsSpec</code></b>:
+      <code>relative_path_settings</code>,
+      <code>settings_default_overrides</code>,
+      <code>settings_defaults</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>docutils.TransformSpec</code></b>:
+      <code>default_transforms</code>,
+      <code>unknown_reference_resolvers</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Method Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-MethodDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">*args</span>,
+        <span class="sig-arg">**kwargs</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docwriter.xlink-pysrc.html#ApiLinkReader.__init__">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for___init___25-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for___init___25-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for___init___25" name="call_graph_for___init___25">
+<area shape="rect" href="javascript:void(0);" title="docutils.readers.Reader.__init__()" alt="" coords="604,6,879,38" />
+<area shape="rect" href="epydoc.docwriter.xlink.ApiLinkReader-class.html#__init__" title="__init__()" alt="" coords="457,6,553,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext._EpydocReader-class.html#__init__" title="markup.restructuredtext._EpydocReader.__init__()" alt="" coords="5,6,408,38" />
+</map>
+  <img src="call_graph_for___init___25.gif" alt='' usemap="#call_graph_for___init___25" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Initialize the Reader instance.</p>
+<p>Several instance attributes are defined with dummy initial values.
+Subclasses may use these attributes as they wish.</p>
+  <dl class="fields">
+    <dt>Overrides:
+        docutils.readers.Reader.__init__
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="read"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">read</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">source</span>,
+        <span class="sig-arg">parser</span>,
+        <span class="sig-arg">settings</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docwriter.xlink-pysrc.html#ApiLinkReader.read">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_read_2-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_read_2-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_read_2" name="call_graph_for_read_2">
+<area shape="rect" href="javascript:void(0);" title="docutils.readers.Reader.read()" alt="" coords="124,6,369,38" />
+<area shape="rect" href="epydoc.docwriter.xlink.ApiLinkReader-class.html#read" title="read()" alt="" coords="7,34,73,66" />
+<area shape="rect" href="epydoc.docwriter.xlink.ApiLinkReader-class.html#read_configuration" title="read_configuration()" alt="" coords="159,62,335,94" />
+</map>
+  <img src="call_graph_for_read_2.gif" alt='' usemap="#call_graph_for_read_2" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  
+  <dl class="fields">
+    <dt>Overrides:
+        docutils.readers.Reader.read
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="read_configuration"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">read_configuration</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">settings</span>,
+        <span class="sig-arg">problematic</span>=<span class="sig-default">True</span>)</span>
+    <br /><em class="fname">Class Method</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docwriter.xlink-pysrc.html#ApiLinkReader.read_configuration">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_read_configurat-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_read_configurat-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_read_configurat" name="call_graph_for_read_configurat">
+<area shape="rect" href="epydoc.docwriter.xlink.ApiLinkReader-class.html#read" title="read()" alt="" coords="7,6,74,38" />
+<area shape="rect" href="epydoc.docwriter.xlink.ApiLinkReader-class.html#read_configuration" title="read_configuration()" alt="" coords="124,6,300,38" />
+</map>
+  <img src="call_graph_for_read_configurat.gif" alt='' usemap="#call_graph_for_read_configurat" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Read the configuration for the configured URL resolver.</p>
+<p>Register a new role for each configured API.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>settings</code></strong> - the settings structure containing the options to read.</li>
+        <li><strong class="pname"><code>problematic</code></strong> (<code class="link">bool</code>) - if True, the registered role will create problematic nodes in
+case of failed references. If False, a warning will be raised
+anyway, but the output will appear as an ordinary literal.</li>
+    </ul></dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== CLASS VARIABLE DETAILS ==================== -->
+<a name="section-ClassVariableDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Class Variable Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-ClassVariableDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="settings_spec"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">settings_spec</h3>
+  The option parser configuration.
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-group">(</code><code class="variable-quote">'</code><code class="variable-string">API Linking Options</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ None<code class="variable-op">,</code>
+ <code class="variable-group">(</code><code class="variable-group">(</code><code class="variable-quote">'</code><code class="variable-string">Define a new API document.  A new interpreted text role NAME will </code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-string">be added.</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+   <code class="variable-group">[</code><code class="variable-quote">'</code><code class="variable-string">--external-api</code><code class="variable-quote">'</code><code class="variable-group">]</code><code class="variable-op">,</code>
+   <code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">action</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">append</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">metavar</code><code class="variable-quote">'</code><code class="variable-op">: </ [...]
+  <code class="variable-group">(</code><code class="variable-quote">'</code><code class="variable-string">Use records in FILENAME to resolve objects in the API named NAME.</code><code class="variable-quote">'</code><code class="variable-op"></code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-op">,</code>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:08:19 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.docwriter.xlink.DocUrlGenerator-class.html b/doc/api/epydoc.docwriter.xlink.DocUrlGenerator-class.html
new file mode 100644
index 0000000..85c6ec4
--- /dev/null
+++ b/doc/api/epydoc.docwriter.xlink.DocUrlGenerator-class.html
@@ -0,0 +1,530 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.docwriter.xlink.DocUrlGenerator</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.docwriter-module.html">Package docwriter</a> ::
+        <a href="epydoc.docwriter.xlink-module.html">Module xlink</a> ::
+        Class DocUrlGenerator
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.docwriter.xlink.DocUrlGenerator-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class DocUrlGenerator</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.docwriter.xlink-pysrc.html#DocUrlGenerator">source code</a></span></p>
+<center>
+<center>  <map id="uml_class_diagram_for_epydoc_d_9" name="uml_class_diagram_for_epydoc_d_9">
+<area shape="rect" href="epydoc.docwriter.xlink.UrlGenerator.IndexAmbiguous-class.html" title="The name looked for is ambiguous" alt="" coords="18,28,218,47" />
+<area shape="rect" href="epydoc.docwriter.xlink.UrlGenerator-class.html#get_canonical_name" title="Convert an object name into a canonical name." alt="" coords="18,50,218,68" />
+<area shape="rect" href="epydoc.docwriter.xlink.UrlGenerator-class.html" title="Generate URL from an object name." alt="" coords="6,6,230,75" />
+<area shape="rect" href="epydoc.docwriter.xlink.DocUrlGenerator-class.html#prefix" title="Prefix portion for the URL's returned by get_url()." alt="" coords="35,116,200,135" />
+<area shape="rect" href="epydoc.docwriter.xlink.DocUrlGenerator-class.html#__init__" title="epydoc.docwriter.xlink.DocUrlGenerator.__init__" alt="" coords="35,138,200,156" />
+<area shape="rect" href="epydoc.docwriter.xlink.DocUrlGenerator-class.html#get_url" title="Look for a name and return the matching URL documentation." alt="" coords="35,156,200,175" />
+<area shape="rect" href="epydoc.docwriter.xlink.DocUrlGenerator-class.html#clear" title="Clear the current class content." alt="" coords="35,175,200,194" />
+<area shape="rect" href="epydoc.docwriter.xlink.DocUrlGenerator-class.html#load_index" title="Read the content of an index file." alt="" coords="35,194,200,212" />
+<area shape="rect" href="epydoc.docwriter.xlink.DocUrlGenerator-class.html#load_records" title="Read a sequence of pairs name -> url and populate the internal maps." alt="" coords="35,212,200,231" />
+<area shape="rect" href="epydoc.docwriter.xlink.DocUrlGenerator-class.html" title="Read a documentation index and generate URL's for it." alt="" coords="23,94,212,238" />
+</map>
+  <img src="uml_class_diagram_for_epydoc_d_9.gif" alt='' usemap="#uml_class_diagram_for_epydoc_d_9" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+Read a <em>documentation index</em> and generate URL's for it.
+
+<!-- ==================== NESTED CLASSES ==================== -->
+<a name="section-NestedClasses"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Nested Classes</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-NestedClasses"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.docwriter.xlink.UrlGenerator-class.html">UrlGenerator</a></code></b>:
+      <code><a href="epydoc.docwriter.xlink.UrlGenerator.IndexAmbiguous-class.html">IndexAmbiguous</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__init__"></a><span class="summary-sig-name">__init__</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.xlink-pysrc.html#DocUrlGenerator.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code class="link">str</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docwriter.xlink.DocUrlGenerator-class.html#get_url" class="summary-sig-name">get_url</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">name</span>)</span><br />
+      Look for a name and return the matching URL documentation.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.xlink-pysrc.html#DocUrlGenerator.get_url">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.docwriter.xlink.UrlGenerator-class.html">UrlGenerator</a></code></b>:
+      <code><a href="epydoc.docwriter.xlink.UrlGenerator-class.html#get_canonical_name">get_canonical_name</a></code>
+      </p>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Content loading</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="clear"></a><span class="summary-sig-name">clear</span>(<span class="summary-sig-arg">self</span>)</span><br />
+      Clear the current class content.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.xlink-pysrc.html#DocUrlGenerator.clear">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docwriter.xlink.DocUrlGenerator-class.html#load_index" class="summary-sig-name">load_index</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">f</span>)</span><br />
+      Read the content of an index file.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.xlink-pysrc.html#DocUrlGenerator.load_index">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_iter_tuples"></a><span class="summary-sig-name">_iter_tuples</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">f</span>)</span><br />
+      Iterate on a file returning 2-tuples.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.xlink-pysrc.html#DocUrlGenerator._iter_tuples">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docwriter.xlink.DocUrlGenerator-class.html#load_records" class="summary-sig-name">load_records</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">records</span>)</span><br />
+      Read a sequence of pairs name -> url and populate the internal maps.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.xlink-pysrc.html#DocUrlGenerator.load_records">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Class Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-ClassVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <div class="private">    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.docwriter.xlink.UrlGenerator-class.html">UrlGenerator</a></code></b> (private):
+      <code><a href="epydoc.docwriter.xlink.UrlGenerator-class.html#_SEP_RE" onclick="show_private();">_SEP_RE</a></code>
+      </p></div>
+    </td>
+  </tr>
+</table>
+<!-- ==================== INSTANCE VARIABLES ==================== -->
+<a name="section-InstanceVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docwriter.xlink.DocUrlGenerator-class.html#_exact_matches" class="summary-name" onclick="show_private();">_exact_matches</a><br />
+      A map from an object fully qualified name to its URL.
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docwriter.xlink.DocUrlGenerator-class.html#_partial_names" class="summary-name" onclick="show_private();">_partial_names</a><br />
+      A map from partial names to the fully qualified names they may refer.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="prefix"></a><span class="summary-name">prefix</span><br />
+      Prefix portion for the URL's returned by <a href="epydoc.docwriter.xlink.DocUrlGenerator-class.html#get_url" class="link">get_url()</a>.
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="_filename"></a><span class="summary-name">_filename</span><br />
+      Not very important: only for logging.
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Method Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-MethodDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="get_url"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">get_url</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">name</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docwriter.xlink-pysrc.html#DocUrlGenerator.get_url">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Look for a name and return the matching URL documentation.</p>
+<p>First look for a fully qualified name. If not found, try with partial
+name.</p>
+<p>If no url exists for the given object, return <code class="link">None</code>.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>name</code></strong> - the name to look for</li>
+    </ul></dd>
+    <dt>Returns: <code class="link">str</code></dt>
+        <dd>the URL that can be used to reach the <code class="link">name</code> documentation.
+<code class="link">None</code> if no such URL exists.</dd>
+    <dt>Raises:</dt>
+    <dd><ul class="nomargin-top">
+        <li><code><strong class='fraise'>IndexError</strong></code> - no object found with <code class="link">name</code></li>
+        <li><code><strong class='fraise'><a href="epydoc.docwriter.xlink.UrlGenerator.IndexAmbiguous-class.html">DocUrlGenerator.IndexAmbiguous</a></strong></code> - more than one object found with
+a non-fully qualified name; notice that this is an <tt class="rst-docutils literal"><span class="pre">IndexError</span></tt>
+subclass</li>
+    </ul></dd>
+    <dt>Overrides:
+        <a href="epydoc.docwriter.xlink.UrlGenerator-class.html#get_url">UrlGenerator.get_url</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="load_index"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">load_index</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">f</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docwriter.xlink-pysrc.html#DocUrlGenerator.load_index">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Read the content of an index file.</p>
+<p>Populate the internal maps with the file content using <a href="epydoc.docwriter.xlink.DocUrlGenerator-class.html#load_records" class="link">load_records()</a>.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>f</code></strong> (<code class="link">str</code> or file) - a file name or file-like object fron which read the index.</li>
+    </ul></dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="load_records"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">load_records</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">records</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docwriter.xlink-pysrc.html#DocUrlGenerator.load_records">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  Read a sequence of pairs name -> url and populate the internal maps.
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>records</code></strong> (iterable) - the sequence of pairs (<em>name</em>, <em>url</em>) to add to the maps.</li>
+    </ul></dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== INSTANCE VARIABLE DETAILS ==================== -->
+<a name="section-InstanceVariableDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Variable Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceVariableDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="_exact_matches"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">_exact_matches</h3>
+  <p>A map from an object fully qualified name to its URL.</p>
+<p>Values are both the name as tuple of fragments and as read from the
+records (see <a href="epydoc.docwriter.xlink.DocUrlGenerator-class.html#load_records" class="link">load_records()</a>), mostly to help <a href="epydoc.docwriter.xlink.DocUrlGenerator-class.html#_partial_names" class="link" onclick="show_private();">_partial_names</a> to
+perform lookup for unambiguous names.</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="_partial_names"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">_partial_names</h3>
+  <p>A map from partial names to the fully qualified names they may refer.</p>
+<p>The keys are the possible left sub-tuples of fully qualified names,
+the values are list of strings as provided by the index.</p>
+<p>If the list for a given tuple contains a single item, the partial
+match is not ambuguous. In this case the string can be looked up in
+<a href="epydoc.docwriter.xlink.DocUrlGenerator-class.html#_exact_matches" class="link" onclick="show_private();">_exact_matches</a>.</p>
+<p>If the name fragment is ambiguous, a warning may be issued to the user.
+The items can be used to provide an informative message to the user,
+to help him qualifying the name in a unambiguous manner.</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:08:19 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.docwriter.xlink.UrlGenerator-class.html b/doc/api/epydoc.docwriter.xlink.UrlGenerator-class.html
new file mode 100644
index 0000000..88fd0ed
--- /dev/null
+++ b/doc/api/epydoc.docwriter.xlink.UrlGenerator-class.html
@@ -0,0 +1,324 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.docwriter.xlink.UrlGenerator</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.docwriter-module.html">Package docwriter</a> ::
+        <a href="epydoc.docwriter.xlink-module.html">Module xlink</a> ::
+        Class UrlGenerator
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.docwriter.xlink.UrlGenerator-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class UrlGenerator</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.docwriter.xlink-pysrc.html#UrlGenerator">source code</a></span></p>
+<center>
+<center>  <map id="uml_class_diagram_for_epydoc_d_10" name="uml_class_diagram_for_epydoc_d_10">
+<area shape="rect" href="epydoc.docwriter.xlink.DocUrlGenerator-class.html" title="Read a documentation index and generate URL's for it." alt="" coords="6,112,142,150" />
+<area shape="rect" href="epydoc.docwriter.xlink.VoidUrlGenerator-class.html" title="Don't actually know any url, but don't report any error." alt="" coords="171,112,310,150" />
+<area shape="rect" href="epydoc.docwriter.xlink.UrlGenerator.IndexAmbiguous-class.html" title="The name looked for is ambiguous" alt="" coords="56,28,256,47" />
+<area shape="rect" href="epydoc.docwriter.xlink.UrlGenerator-class.html#get_url" title="Look for a name and return the matching URL documentation." alt="" coords="56,50,256,68" />
+<area shape="rect" href="epydoc.docwriter.xlink.UrlGenerator-class.html#get_canonical_name" title="Convert an object name into a canonical name." alt="" coords="56,68,256,87" />
+<area shape="rect" href="epydoc.docwriter.xlink.UrlGenerator-class.html" title="Generate URL from an object name." alt="" coords="44,6,268,94" />
+</map>
+  <img src="uml_class_diagram_for_epydoc_d_10.gif" alt='' usemap="#uml_class_diagram_for_epydoc_d_10" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+Generate URL from an object name.
+
+<!-- ==================== NESTED CLASSES ==================== -->
+<a name="section-NestedClasses"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Nested Classes</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-NestedClasses"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.docwriter.xlink.UrlGenerator.IndexAmbiguous-class.html" class="summary-name">IndexAmbiguous</a><br />
+      The name looked for is ambiguous
+    </td>
+  </tr>
+</table>
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code class="link">str</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docwriter.xlink.UrlGenerator-class.html#get_url" class="summary-sig-name">get_url</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">name</span>)</span><br />
+      Look for a name and return the matching URL documentation.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.xlink-pysrc.html#UrlGenerator.get_url">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code class="link">tuple</code> of <code class="link">str</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docwriter.xlink.UrlGenerator-class.html#get_canonical_name" class="summary-sig-name">get_canonical_name</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">name</span>)</span><br />
+      Convert an object name into a canonical name.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.xlink-pysrc.html#UrlGenerator.get_canonical_name">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Class Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-ClassVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="_SEP_RE"></a><span class="summary-name">_SEP_RE</span> = <code title="re.compile(r'(?x)([a-zA-Z0-9_]+)|(\.|::|->)|(.)')">re.compile(r'<code class="re-flags">(?x)</code><code class="re-group">(</code><code class="re-group">[</code>a<code class="re-op">-</code>zA<code class="re-op">-</code>Z0<code class="re-op">-</code>9_<code class="re-group">]</code><code class="re-op">+</code><code class="re-group">)</code><code class="re-op">|</code><code class="re-group">(</code>\. [...]
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Method Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-MethodDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="get_url"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">get_url</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">name</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docwriter.xlink-pysrc.html#UrlGenerator.get_url">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Look for a name and return the matching URL documentation.</p>
+<p>First look for a fully qualified name. If not found, try with partial
+name.</p>
+<p>If no url exists for the given object, return <code class="link">None</code>.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>name</code></strong> (<code class="link">str</code>) - the name to look for</li>
+    </ul></dd>
+    <dt>Returns: <code class="link">str</code></dt>
+        <dd>the URL that can be used to reach the <code class="link">name</code> documentation.
+<code class="link">None</code> if no such URL exists.</dd>
+    <dt>Raises:</dt>
+    <dd><ul class="nomargin-top">
+        <li><code><strong class='fraise'>IndexError</strong></code> - no object found with <code class="link">name</code></li>
+        <li><code><strong class='fraise'><a href="epydoc.docwriter.xlink.UrlGenerator.IndexAmbiguous-class.html">DocUrlGenerator.IndexAmbiguous</a></strong></code> - more than one object found with
+a non-fully qualified name; notice that this is an <tt class="rst-rst-docutils literal rst-docutils literal"><span class="pre">IndexError</span></tt>
+subclass</li>
+    </ul></dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="get_canonical_name"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">get_canonical_name</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">name</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docwriter.xlink-pysrc.html#UrlGenerator.get_canonical_name">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Convert an object name into a canonical name.</p>
+<p>the canonical name of an object is a tuple of strings containing its
+name fragments, splitted on any allowed separator ('<tt class="rst-docutils literal"><span class="pre">.</span></tt>', '<tt class="rst-docutils literal"><span class="pre">::</span></tt>',
+'<tt class="rst-docutils literal"><span class="pre">-></span></tt>').</p>
+<p>Noise such parenthesis to indicate a function is discarded.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>name</code></strong> (<code class="link">str</code>) - an object name, such as <tt class="rst-docutils literal"><span class="pre">os.path.prefix()</span></tt> or <tt class="rst-docutils literal"><span class="pre">lib::foo::bar</span></tt></li>
+    </ul></dd>
+    <dt>Returns: <code class="link">tuple</code> of <code class="link">str</code></dt>
+        <dd>the fully qualified name such <tt class="rst-docutils literal"><span class="pre">('os',</span> <span class="pre">'path',</span> <span class="pre">'prefix')</span></tt> and
+<tt class="rst-docutils literal"><span class="pre">('lib',</span> <span class="pre">'foo',</span> <span class="pre">'bar')</span></tt></dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:08:20 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.docwriter.xlink.UrlGenerator.IndexAmbiguous-class.html b/doc/api/epydoc.docwriter.xlink.UrlGenerator.IndexAmbiguous-class.html
new file mode 100644
index 0000000..85586d6
--- /dev/null
+++ b/doc/api/epydoc.docwriter.xlink.UrlGenerator.IndexAmbiguous-class.html
@@ -0,0 +1,162 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.docwriter.xlink.UrlGenerator.IndexAmbiguous</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.docwriter-module.html">Package docwriter</a> ::
+        <a href="epydoc.docwriter.xlink-module.html">Module xlink</a> ::
+        <a href="epydoc.docwriter.xlink.UrlGenerator-class.html">Class UrlGenerator</a> ::
+        Class IndexAmbiguous
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.docwriter.xlink.UrlGenerator.IndexAmbiguous-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class IndexAmbiguous</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.docwriter.xlink-pysrc.html#UrlGenerator.IndexAmbiguous">source code</a></span></p>
+<center>
+<center>  <map id="uml_class_diagram_for_epydoc_d_11" name="uml_class_diagram_for_epydoc_d_11">
+<area shape="rect" href="javascript:void(0);" title="Sequence index out of range." alt="" coords="16,240,171,283" />
+<area shape="rect" href="epydoc.docwriter.xlink.UrlGenerator.IndexAmbiguous-class.html" title="The name looked for is ambiguous" alt="" coords="31,301,156,344" />
+<area shape="rect" href="javascript:void(0);" title="exceptions.Exception.__getitem__" alt="" coords="30,36,158,55" />
+<area shape="rect" href="javascript:void(0);" title="exceptions.Exception.__init__" alt="" coords="30,55,158,73" />
+<area shape="rect" href="javascript:void(0);" title="exceptions.Exception.__str__" alt="" coords="30,73,158,92" />
+<area shape="rect" href="javascript:void(0);" title="Common base class for all exceptions." alt="" coords="18,5,170,99" />
+<area shape="rect" href="javascript:void(0);" title="Base class for all standard Python exceptions." alt="" coords="6,117,182,160" />
+<area shape="rect" href="javascript:void(0);" title="Base class for lookup errors." alt="" coords="11,179,176,221" />
+</map>
+  <img src="uml_class_diagram_for_epydoc_d_11.gif" alt='' usemap="#uml_class_diagram_for_epydoc_d_11" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+The name looked for is ambiguous
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.Exception</code></b>:
+      <code>__getitem__</code>,
+      <code>__init__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:08:20 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.docwriter.xlink.VoidUrlGenerator-class.html b/doc/api/epydoc.docwriter.xlink.VoidUrlGenerator-class.html
new file mode 100644
index 0000000..01c1d94
--- /dev/null
+++ b/doc/api/epydoc.docwriter.xlink.VoidUrlGenerator-class.html
@@ -0,0 +1,287 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.docwriter.xlink.VoidUrlGenerator</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.docwriter-module.html">Package docwriter</a> ::
+        <a href="epydoc.docwriter.xlink-module.html">Module xlink</a> ::
+        Class VoidUrlGenerator
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.docwriter.xlink.VoidUrlGenerator-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class VoidUrlGenerator</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.docwriter.xlink-pysrc.html#VoidUrlGenerator">source code</a></span></p>
+<center>
+<center>  <map id="uml_class_diagram_for_epydoc_d_12" name="uml_class_diagram_for_epydoc_d_12">
+<area shape="rect" href="epydoc.docwriter.xlink.UrlGenerator.IndexAmbiguous-class.html" title="The name looked for is ambiguous" alt="" coords="18,28,218,47" />
+<area shape="rect" href="epydoc.docwriter.xlink.UrlGenerator-class.html#get_canonical_name" title="Convert an object name into a canonical name." alt="" coords="18,50,218,68" />
+<area shape="rect" href="epydoc.docwriter.xlink.UrlGenerator-class.html" title="Generate URL from an object name." alt="" coords="6,6,230,75" />
+<area shape="rect" href="epydoc.docwriter.xlink.VoidUrlGenerator-class.html#get_url" title="Look for a name and return the matching URL documentation." alt="" coords="59,124,176,143" />
+<area shape="rect" href="epydoc.docwriter.xlink.VoidUrlGenerator-class.html" title="Don't actually know any url, but don't report any error." alt="" coords="47,94,188,150" />
+</map>
+  <img src="uml_class_diagram_for_epydoc_d_12.gif" alt='' usemap="#uml_class_diagram_for_epydoc_d_12" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<p>Don't actually know any url, but don't report any error.</p>
+<p>Useful if an index file is not available, but a document linking to it
+is to be generated, and warnings are to be avoided.</p>
+<p>Don't report any object as missing, Don't return any url anyway.</p>
+
+<!-- ==================== NESTED CLASSES ==================== -->
+<a name="section-NestedClasses"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Nested Classes</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-NestedClasses"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.docwriter.xlink.UrlGenerator-class.html">UrlGenerator</a></code></b>:
+      <code><a href="epydoc.docwriter.xlink.UrlGenerator.IndexAmbiguous-class.html">IndexAmbiguous</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code class="link">str</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.docwriter.xlink.VoidUrlGenerator-class.html#get_url" class="summary-sig-name">get_url</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">name</span>)</span><br />
+      Look for a name and return the matching URL documentation.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.docwriter.xlink-pysrc.html#VoidUrlGenerator.get_url">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.docwriter.xlink.UrlGenerator-class.html">UrlGenerator</a></code></b>:
+      <code><a href="epydoc.docwriter.xlink.UrlGenerator-class.html#get_canonical_name">get_canonical_name</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Class Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-ClassVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <div class="private">    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.docwriter.xlink.UrlGenerator-class.html">UrlGenerator</a></code></b> (private):
+      <code><a href="epydoc.docwriter.xlink.UrlGenerator-class.html#_SEP_RE" onclick="show_private();">_SEP_RE</a></code>
+      </p></div>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Method Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-MethodDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="get_url"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">get_url</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">name</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.docwriter.xlink-pysrc.html#VoidUrlGenerator.get_url">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Look for a name and return the matching URL documentation.</p>
+<p>First look for a fully qualified name. If not found, try with partial
+name.</p>
+<p>If no url exists for the given object, return <code class="link">None</code>.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>name</code></strong> - the name to look for</li>
+    </ul></dd>
+    <dt>Returns: <code class="link">str</code></dt>
+        <dd>the URL that can be used to reach the <code class="link">name</code> documentation.
+<code class="link">None</code> if no such URL exists.</dd>
+    <dt>Raises:</dt>
+    <dd><ul class="nomargin-top">
+        <li><code><strong class='fraise'>IndexError</strong></code> - no object found with <code class="link">name</code></li>
+        <li><code><strong class='fraise'><a href="epydoc.docwriter.xlink.UrlGenerator.IndexAmbiguous-class.html">DocUrlGenerator.IndexAmbiguous</a></strong></code> - more than one object found with
+a non-fully qualified name; notice that this is an <tt class="rst-rst-rst-docutils literal rst-rst-docutils literal rst-docutils literal"><span class="pre">IndexError</span></tt>
+subclass</li>
+    </ul></dd>
+    <dt>Overrides:
+        <a href="epydoc.docwriter.xlink.UrlGenerator-class.html#get_url">UrlGenerator.get_url</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:08:20 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.gui-module.html b/doc/api/epydoc.gui-module.html
new file mode 100644
index 0000000..1cb2edb
--- /dev/null
+++ b/doc/api/epydoc.gui-module.html
@@ -0,0 +1,1009 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.gui</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        Module gui
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.gui-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module gui</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.gui-pysrc.html">source code</a></span></p>
+<p>Graphical interface to epydoc.  This interface might be useful for 
+  systems where it's inconvenient to use the command-line interface (such 
+  as Windows).  It supports many (but not all) of the features that are 
+  supported by the command-line interface.  It also supports loading and 
+  saving of <a name="index-project_files"></a><i class="indexterm">project 
+  files</i>, which store a set of related modules, and the options that 
+  should be used to generate the documentation for those modules.</p>
+  <p>Usage:</p>
+<pre class="literalblock">
+   epydocgui [OPTIONS] [FILE.prj | MODULES...]
+
+   FILE.prj                  An epydoc GUI project file.
+   MODULES...                A list of Python modules to document.
+   -V, --version             Print the version of epydoc.
+   -h, -?, --help, --usage   Display this usage message
+   --debug                   Do not suppress error messages
+</pre>
+
+<hr />
+<div class="fields">      <p><strong>To Do:</strong>
+        Use ini-style project files, rather than pickles (using the same format
+    as the CLI).
+      </p>
+</div><!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Classes</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Classes"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.gui.GUILogger-class.html" class="summary-name">GUILogger</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.gui.EpydocGUI-class.html" class="summary-name">EpydocGUI</a><br />
+      A graphical user interace to epydoc.
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTIONS ==================== -->
+<a name="section-Functions"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Functions</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Functions"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.gui-module.html#document" class="summary-sig-name">document</a>(<span class="summary-sig-arg">options</span>,
+        <span class="summary-sig-arg">cancel</span>,
+        <span class="summary-sig-arg">done</span>)</span><br />
+      Create the documentation for <code>modules</code>, using the options 
+      specified by <code>options</code>.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.gui-pysrc.html#document">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>None</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_version"></a><span class="summary-sig-name">_version</span>()</span><br />
+      Display the version information, and exit.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.gui-pysrc.html#_version">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_usage"></a><span class="summary-sig-name">_usage</span>()</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.gui-pysrc.html#_usage">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_error"></a><span class="summary-sig-name">_error</span>(<span class="summary-sig-arg">s</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.gui-pysrc.html#_error">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="gui"></a><span class="summary-sig-name">gui</span>()</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.gui-pysrc.html#gui">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Variables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="DEBUG"></a><span class="summary-name">DEBUG</span> = <code title="0">0</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="BG_COLOR"></a><span class="summary-name">BG_COLOR</span> = <code title="'#e0e0e0'"><code class="variable-quote">'</code><code class="variable-string">#e0e0e0</code><code class="variable-quote">'</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="ACTIVEBG_COLOR"></a><span class="summary-name">ACTIVEBG_COLOR</span> = <code title="'#e0e0e0'"><code class="variable-quote">'</code><code class="variable-string">#e0e0e0</code><code class="variable-quote">'</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="TEXT_COLOR"></a><span class="summary-name">TEXT_COLOR</span> = <code title="'black'"><code class="variable-quote">'</code><code class="variable-string">black</code><code class="variable-quote">'</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="ENTRYSELECT_COLOR"></a><span class="summary-name">ENTRYSELECT_COLOR</span> = <code title="'#e0e0e0'"><code class="variable-quote">'</code><code class="variable-string">#e0e0e0</code><code class="variable-quote">'</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="SELECT_COLOR"></a><span class="summary-name">SELECT_COLOR</span> = <code title="'#208070'"><code class="variable-quote">'</code><code class="variable-string">#208070</code><code class="variable-quote">'</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="MESSAGE_COLOR"></a><span class="summary-name">MESSAGE_COLOR</span> = <code title="'#000060'"><code class="variable-quote">'</code><code class="variable-string">#000060</code><code class="variable-quote">'</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="ERROR_COLOR"></a><span class="summary-name">ERROR_COLOR</span> = <code title="'#600000'"><code class="variable-quote">'</code><code class="variable-string">#600000</code><code class="variable-quote">'</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="GUIERROR_COLOR"></a><span class="summary-name">GUIERROR_COLOR</span> = <code title="'#600000'"><code class="variable-quote">'</code><code class="variable-string">#600000</code><code class="variable-quote">'</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="WARNING_COLOR"></a><span class="summary-name">WARNING_COLOR</span> = <code title="'#604000'"><code class="variable-quote">'</code><code class="variable-string">#604000</code><code class="variable-quote">'</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="HEADER_COLOR"></a><span class="summary-name">HEADER_COLOR</span> = <code title="'#000000'"><code class="variable-quote">'</code><code class="variable-string">#000000</code><code class="variable-quote">'</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.gui-module.html#COLOR_CONFIG" class="summary-name">COLOR_CONFIG</a> = <code title="{'background': '#e0e0e0',
+ 'foreground': 'black',
+ 'highlightbackground': '#e0e0e0',
+ 'highlightcolor': '#e0e0e0'}"><code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">background</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">#e0e0e0</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">foreground</code><code class="variable-quote">'< [...]
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.gui-module.html#ENTRY_CONFIG" class="summary-name">ENTRY_CONFIG</a> = <code title="{'background': '#e0e0e0',
+ 'foreground': 'black',
+ 'highlightbackground': '#e0e0e0',
+ 'highlightcolor': '#e0e0e0',
+ 'selectbackground': '#e0e0e0',
+ 'selectforeground': 'black'}"><code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">background</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">#e0e0e0</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">foreground</code><code class="variable-quote">'< [...]
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.gui-module.html#SB_CONFIG" class="summary-name">SB_CONFIG</a> = <code title="{'activebackground': '#e0e0e0',
+ 'background': '#e0e0e0',
+ 'highlightbackground': '#e0e0e0',
+ 'troughcolor': '#e0e0e0'}"><code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">activebackground</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">#e0e0e0</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">background</code><code class="variable-quote" [...]
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.gui-module.html#LISTBOX_CONFIG" class="summary-name">LISTBOX_CONFIG</a> = <code title="{'background': '#e0e0e0',
+ 'foreground': 'black',
+ 'highlightbackground': '#e0e0e0',
+ 'highlightcolor': '#e0e0e0',
+ 'selectbackground': '#e0e0e0',
+ 'selectforeground': 'black'}"><code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">background</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">#e0e0e0</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">foreground</code><code class="variable-quote">'< [...]
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.gui-module.html#BUTTON_CONFIG" class="summary-name">BUTTON_CONFIG</a> = <code title="{'activebackground': '#e0e0e0',
+ 'activeforeground': 'black',
+ 'background': '#e0e0e0',
+ 'foreground': 'black',
+ 'highlightbackground': '#e0e0e0',
+ 'highlightcolor': '#e0e0e0',
+ 'highlightthickness': 0,
+ 'padx': 4,
+..."><code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">activebackground</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">#e0e0e0</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">activeforegro</code><code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.gui-module.html#CBUTTON_CONFIG" class="summary-name">CBUTTON_CONFIG</a> = <code title="{'activebackground': '#e0e0e0',
+ 'activeforeground': 'black',
+ 'background': '#e0e0e0',
+ 'foreground': 'black',
+ 'highlightbackground': '#e0e0e0',
+ 'highlightcolor': '#e0e0e0',
+ 'highlightthickness': 0,
+ 'padx': 4,
+..."><code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">activebackground</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">#e0e0e0</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">activeforegr</code><code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.gui-module.html#SHOWMSG_CONFIG" class="summary-name">SHOWMSG_CONFIG</a> = <code title="{'activebackground': '#e0e0e0',
+ 'activeforeground': 'black',
+ 'background': '#e0e0e0',
+ 'foreground': '#000060',
+ 'highlightbackground': '#e0e0e0',
+ 'highlightcolor': '#e0e0e0',
+ 'highlightthickness': 0,
+ 'padx': 4,
+..."><code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">activebackground</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">#e0e0e0</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">activeforegr</code><code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.gui-module.html#SHOWWRN_CONFIG" class="summary-name">SHOWWRN_CONFIG</a> = <code title="{'activebackground': '#e0e0e0',
+ 'activeforeground': 'black',
+ 'background': '#e0e0e0',
+ 'foreground': '#604000',
+ 'highlightbackground': '#e0e0e0',
+ 'highlightcolor': '#e0e0e0',
+ 'highlightthickness': 0,
+ 'padx': 4,
+..."><code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">activebackground</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">#e0e0e0</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">activeforegr</code><code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.gui-module.html#SHOWERR_CONFIG" class="summary-name">SHOWERR_CONFIG</a> = <code title="{'activebackground': '#e0e0e0',
+ 'activeforeground': 'black',
+ 'background': '#e0e0e0',
+ 'foreground': '#600000',
+ 'highlightbackground': '#e0e0e0',
+ 'highlightcolor': '#e0e0e0',
+ 'highlightthickness': 0,
+ 'padx': 4,
+..."><code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">activebackground</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">#e0e0e0</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">activeforegr</code><code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="PROGRESS_HEIGHT"></a><span class="summary-name">PROGRESS_HEIGHT</span> = <code title="16">16</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="PROGRESS_WIDTH"></a><span class="summary-name">PROGRESS_WIDTH</span> = <code title="200">200</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="PROGRESS_BG"></a><span class="summary-name">PROGRESS_BG</span> = <code title="'#305060'"><code class="variable-quote">'</code><code class="variable-string">#305060</code><code class="variable-quote">'</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="PROGRESS_COLOR1"></a><span class="summary-name">PROGRESS_COLOR1</span> = <code title="'#30c070'"><code class="variable-quote">'</code><code class="variable-string">#30c070</code><code class="variable-quote">'</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="PROGRESS_COLOR2"></a><span class="summary-name">PROGRESS_COLOR2</span> = <code title="'#60ffa0'"><code class="variable-quote">'</code><code class="variable-string">#60ffa0</code><code class="variable-quote">'</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="PROGRESS_COLOR3"></a><span class="summary-name">PROGRESS_COLOR3</span> = <code title="'#106030'"><code class="variable-quote">'</code><code class="variable-string">#106030</code><code class="variable-quote">'</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="DX"></a><span class="summary-name">DX</span> = <code title="1">1</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="DY"></a><span class="summary-name">DY</span> = <code title="1">1</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="DH"></a><span class="summary-name">DH</span> = <code title="1">1</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="DW"></a><span class="summary-name">DW</span> = <code title="3">3</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="IMPORT_PROGRESS"></a><span class="summary-name">IMPORT_PROGRESS</span> = <code title="0.1">0.1</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="BUILD_PROGRESS"></a><span class="summary-name">BUILD_PROGRESS</span> = <code title="0.2">0.2</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="WRITE_PROGRESS"></a><span class="summary-name">WRITE_PROGRESS</span> = <code title="0.7">0.7</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.gui-module.html#UP_GIF" class="summary-name">UP_GIF</a> = <code title="'''R0lGODlhCwAMALMAANnZ2QDMmQCZZgBmZgAAAAAzM////////wAAAAAAAAAAAAAAAAA\
+AAAAAAAAA
+AAAAACH5BAEAAAAALAAAAAALAAwAAAQjEMhJKxCW4gzCIJxXZIEwFGDlDadqsii1sq1U0n\
+A64+ON
+5xEAOw==
+'''"><code class="variable-quote">'</code><code class="variable-string">R0lGODlhCwAMALMAANnZ2QDMmQCZZgBmZgAAAAAzM////////wAA</code><code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.gui-module.html#DOWN_GIF" class="summary-name">DOWN_GIF</a> = <code title="'''R0lGODlhCwAMALMAANnZ2QDMmQCZZgBmZgAAAAAzM////////wAAAAAAAAAAAAAAAAA\
+AAAAAAAAA
+AAAAACH5BAEAAAAALAAAAAALAAwAAAQmEIQxgLVUCsppsVPngVtXEFfIfWk5nBe4xuSL0t\
+KLy/cu
+7JffJQIAOw==
+'''"><code class="variable-quote">'</code><code class="variable-string">R0lGODlhCwAMALMAANnZ2QDMmQCZZgBmZgAAAAAzM////////w</code><code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.gui-module.html#LEFT_GIF" class="summary-name">LEFT_GIF</a> = <code title="'''R0lGODlhDAALAKIAANnZ2QDMmQCZZgBmZgAAAAAzM////////yH5BAEAAAAALAAAAAA\
+MAAsAAAM4
+CLocgaCrESiDoBshOAoAgBEyMzgAEIGCowsiOLoLgEBVOLoIqlSFo4OgC1RYM4Ogq1RYg6\
+DLVJgA
+Ow==
+'''"><code class="variable-quote">'</code><code class="variable-string">R0lGODlhDAALAKIAANnZ2QDMmQCZZgBmZgAAAAAzM////////y</code><code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.gui-module.html#RIGHT_GIF" class="summary-name">RIGHT_GIF</a> = <code title="'''R0lGODlhDAALAKIAANnZ2QDMmQBmZgCZZgAzMwAAAP///////yH5BAEAAAAALAAAAAA\
+MAAsAAAM5
+GIGgyzIYgaCrIigTgaALIigyEQiqKLoTgaAoujuDgKJLVAgqIoJEBQAIIkKEhaArRFgIuk\
+qFoMsJ
+ADs=
+'''"><code class="variable-quote">'</code><code class="variable-string">R0lGODlhDAALAKIAANnZ2QDMmQBmZgCZZgAzMwAAAP///////</code><code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTION DETAILS ==================== -->
+<a name="section-FunctionDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Function Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-FunctionDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="document"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">document</span>(<span class="sig-arg">options</span>,
+        <span class="sig-arg">cancel</span>,
+        <span class="sig-arg">done</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.gui-pysrc.html#document">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Create the documentation for <code>modules</code>, using the options 
+  specified by <code>options</code>.  <code>document</code> is designed to 
+  be started in its own thread by <a 
+  href="epydoc.gui.EpydocGUI-class.html#_go" class="link" 
+  onclick="show_private();">EpydocGUI._go</a>.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>options</code></strong> (<code>dictionary</code>) - The options to use for generating documentation. This includes 
+          keyword options that can be given to <a 
+          href="epydoc.docwriter.html.HTMLWriter-class.html" 
+          class="link">docwriter.html.HTMLWriter</a>, as well as the option
+          <code>target</code>, which controls where the output is written 
+          to.</li>
+    </ul></dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== VARIABLES DETAILS ==================== -->
+<a name="section-VariablesDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Variables Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-VariablesDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="COLOR_CONFIG"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">COLOR_CONFIG</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">background</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">#e0e0e0</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">foreground</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">black</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">highlightbackground</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">#e0e0e0</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">highlightcolor</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">#e0e0e0</code><code class="variable-quote">'</code><code class="variable-group">}</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="ENTRY_CONFIG"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">ENTRY_CONFIG</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">background</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">#e0e0e0</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">foreground</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">black</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">highlightbackground</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">#e0e0e0</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">highlightcolor</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">#e0e0e0</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">selectbackground</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">#e0e0e0</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">selectforeground</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">black</code><code class="variable-quote">'</code><code class="variable-group">}</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="SB_CONFIG"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">SB_CONFIG</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">activebackground</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">#e0e0e0</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">background</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">#e0e0e0</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">highlightbackground</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">#e0e0e0</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">troughcolor</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">#e0e0e0</code><code class="variable-quote">'</code><code class="variable-group">}</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="LISTBOX_CONFIG"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">LISTBOX_CONFIG</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">background</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">#e0e0e0</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">foreground</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">black</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">highlightbackground</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">#e0e0e0</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">highlightcolor</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">#e0e0e0</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">selectbackground</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">#e0e0e0</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">selectforeground</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">black</code><code class="variable-quote">'</code><code class="variable-group">}</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="BUTTON_CONFIG"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">BUTTON_CONFIG</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">activebackground</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">#e0e0e0</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">activeforeground</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">black</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">background</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">#e0e0e0</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">foreground</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">black</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">highlightbackground</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">#e0e0e0</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">highlightcolor</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">#e0e0e0</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">highlightthickness</code><code class="variable-quote">'</code><code class="variable-op">: </code>0<code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">padx</code><code class="variable-quote">'</code><code class="variable-op">: </code>4<code class="variable-op">,</code>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="CBUTTON_CONFIG"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">CBUTTON_CONFIG</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">activebackground</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">#e0e0e0</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">activeforeground</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">black</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">background</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">#e0e0e0</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">foreground</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">black</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">highlightbackground</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">#e0e0e0</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">highlightcolor</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">#e0e0e0</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">highlightthickness</code><code class="variable-quote">'</code><code class="variable-op">: </code>0<code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">padx</code><code class="variable-quote">'</code><code class="variable-op">: </code>4<code class="variable-op">,</code>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="SHOWMSG_CONFIG"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">SHOWMSG_CONFIG</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">activebackground</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">#e0e0e0</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">activeforeground</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">black</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">background</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">#e0e0e0</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">foreground</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">#000060</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">highlightbackground</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">#e0e0e0</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">highlightcolor</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">#e0e0e0</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">highlightthickness</code><code class="variable-quote">'</code><code class="variable-op">: </code>0<code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">padx</code><code class="variable-quote">'</code><code class="variable-op">: </code>4<code class="variable-op">,</code>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="SHOWWRN_CONFIG"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">SHOWWRN_CONFIG</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">activebackground</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">#e0e0e0</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">activeforeground</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">black</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">background</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">#e0e0e0</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">foreground</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">#604000</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">highlightbackground</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">#e0e0e0</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">highlightcolor</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">#e0e0e0</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">highlightthickness</code><code class="variable-quote">'</code><code class="variable-op">: </code>0<code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">padx</code><code class="variable-quote">'</code><code class="variable-op">: </code>4<code class="variable-op">,</code>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="SHOWERR_CONFIG"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">SHOWERR_CONFIG</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">activebackground</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">#e0e0e0</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">activeforeground</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">black</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">background</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">#e0e0e0</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">foreground</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">#600000</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">highlightbackground</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">#e0e0e0</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">highlightcolor</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">#e0e0e0</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">highlightthickness</code><code class="variable-quote">'</code><code class="variable-op">: </code>0<code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">padx</code><code class="variable-quote">'</code><code class="variable-op">: </code>4<code class="variable-op">,</code>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="UP_GIF"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">UP_GIF</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'''</code><code class="variable-string">R0lGODlhCwAMALMAANnZ2QDMmQCZZgBmZgAAAAAzM////////wAAAAAAAAAAAAAAAAA</code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-string">AAAAAAAAA</code>
+<code class="variable-string">AAAAACH5BAEAAAAALAAAAAALAAwAAAQjEMhJKxCW4gzCIJxXZIEwFGDlDadqsii1sq1U0n</code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-string">A64+ON</code>
+<code class="variable-string">5xEAOw==</code>
+<code class="variable-string"></code><code class="variable-quote">'''</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="DOWN_GIF"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">DOWN_GIF</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'''</code><code class="variable-string">R0lGODlhCwAMALMAANnZ2QDMmQCZZgBmZgAAAAAzM////////wAAAAAAAAAAAAAAAAA</code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-string">AAAAAAAAA</code>
+<code class="variable-string">AAAAACH5BAEAAAAALAAAAAALAAwAAAQmEIQxgLVUCsppsVPngVtXEFfIfWk5nBe4xuSL0t</code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-string">KLy/cu</code>
+<code class="variable-string">7JffJQIAOw==</code>
+<code class="variable-string"></code><code class="variable-quote">'''</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="LEFT_GIF"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">LEFT_GIF</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'''</code><code class="variable-string">R0lGODlhDAALAKIAANnZ2QDMmQCZZgBmZgAAAAAzM////////yH5BAEAAAAALAAAAAA</code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-string">MAAsAAAM4</code>
+<code class="variable-string">CLocgaCrESiDoBshOAoAgBEyMzgAEIGCowsiOLoLgEBVOLoIqlSFo4OgC1RYM4Ogq1RYg6</code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-string">DLVJgA</code>
+<code class="variable-string">Ow==</code>
+<code class="variable-string"></code><code class="variable-quote">'''</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="RIGHT_GIF"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">RIGHT_GIF</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'''</code><code class="variable-string">R0lGODlhDAALAKIAANnZ2QDMmQBmZgCZZgAzMwAAAP///////yH5BAEAAAAALAAAAAA</code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-string">MAAsAAAM5</code>
+<code class="variable-string">GIGgyzIYgaCrIigTgaALIigyEQiqKLoTgaAoujuDgKJLVAgqIoJEBQAIIkKEhaArRFgIuk</code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-string">qFoMsJ</code>
+<code class="variable-string">ADs=</code>
+<code class="variable-string"></code><code class="variable-quote">'''</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:06:38 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.gui-pysrc.html b/doc/api/epydoc.gui-pysrc.html
new file mode 100644
index 0000000..15c9aa4
--- /dev/null
+++ b/doc/api/epydoc.gui-pysrc.html
@@ -0,0 +1,1417 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.gui</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        Module gui
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.gui-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="epydoc.gui-module.html">Module epydoc.gui</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno">   1</tt>  <tt class="py-line"><tt class="py-comment">#!/usr/bin/env python</tt> </tt>
+<a name="L2"></a><tt class="py-lineno">   2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L3"></a><tt class="py-lineno">   3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># objdoc: epydoc command-line interface</tt> </tt>
+<a name="L4"></a><tt class="py-lineno">   4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Edward Loper</tt> </tt>
+<a name="L5"></a><tt class="py-lineno">   5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L6"></a><tt class="py-lineno">   6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Created [03/15/02 10:31 PM]</tt> </tt>
+<a name="L7"></a><tt class="py-lineno">   7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># $Id: gui.py 646 2004-03-19 19:01:37Z edloper $</tt> </tt>
+<a name="L8"></a><tt class="py-lineno">   8</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L9"></a><tt class="py-lineno">   9</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L10"></a><tt class="py-lineno">  10</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L11"></a><tt class="py-lineno">  11</tt>  <tt class="py-line"><tt class="py-docstring">Graphical interface to epydoc.  This interface might be useful for</tt> </tt>
+<a name="L12"></a><tt class="py-lineno">  12</tt>  <tt class="py-line"><tt class="py-docstring">systems where it's inconvenient to use the command-line interface</tt> </tt>
+<a name="L13"></a><tt class="py-lineno">  13</tt>  <tt class="py-line"><tt class="py-docstring">(such as Windows).  It supports many (but not all) of the features</tt> </tt>
+<a name="L14"></a><tt class="py-lineno">  14</tt>  <tt class="py-line"><tt class="py-docstring">that are supported by the command-line interface.  It also supports</tt> </tt>
+<a name="L15"></a><tt class="py-lineno">  15</tt>  <tt class="py-line"><tt class="py-docstring">loading and saving of X{project files}, which store a set of related</tt> </tt>
+<a name="L16"></a><tt class="py-lineno">  16</tt>  <tt class="py-line"><tt class="py-docstring">modules, and the options that should be used to generate the</tt> </tt>
+<a name="L17"></a><tt class="py-lineno">  17</tt>  <tt class="py-line"><tt class="py-docstring">documentation for those modules.</tt> </tt>
+<a name="L18"></a><tt class="py-lineno">  18</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L19"></a><tt class="py-lineno">  19</tt>  <tt class="py-line"><tt class="py-docstring">Usage::</tt> </tt>
+<a name="L20"></a><tt class="py-lineno">  20</tt>  <tt class="py-line"><tt class="py-docstring">    epydocgui [OPTIONS] [FILE.prj | MODULES...]</tt> </tt>
+<a name="L21"></a><tt class="py-lineno">  21</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L22"></a><tt class="py-lineno">  22</tt>  <tt class="py-line"><tt class="py-docstring">    FILE.prj                  An epydoc GUI project file.</tt> </tt>
+<a name="L23"></a><tt class="py-lineno">  23</tt>  <tt class="py-line"><tt class="py-docstring">    MODULES...                A list of Python modules to document.</tt> </tt>
+<a name="L24"></a><tt class="py-lineno">  24</tt>  <tt class="py-line"><tt class="py-docstring">    -V, --version             Print the version of epydoc.</tt> </tt>
+<a name="L25"></a><tt class="py-lineno">  25</tt>  <tt class="py-line"><tt class="py-docstring">    -h, -?, --help, --usage   Display this usage message</tt> </tt>
+<a name="L26"></a><tt class="py-lineno">  26</tt>  <tt class="py-line"><tt class="py-docstring">    --debug                   Do not suppress error messages</tt> </tt>
+<a name="L27"></a><tt class="py-lineno">  27</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L28"></a><tt class="py-lineno">  28</tt>  <tt class="py-line"><tt class="py-docstring">@todo: Use ini-style project files, rather than pickles (using the</tt> </tt>
+<a name="L29"></a><tt class="py-lineno">  29</tt>  <tt class="py-line"><tt class="py-docstring">same format as the CLI).</tt> </tt>
+<a name="L30"></a><tt class="py-lineno">  30</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L31"></a><tt class="py-lineno">  31</tt>  <tt class="py-line"><tt class="py-name">__docformat__</tt> <tt class="py-op">=</tt> <tt class="py-string">'epytext en'</tt> </tt>
+<a name="L32"></a><tt class="py-lineno">  32</tt>  <tt class="py-line"> </tt>
+<a name="L33"></a><tt class="py-lineno">  33</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">sys</tt><tt class="py-op">,</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-0" class="py-name" targets="Variable epydoc.apidoc.ModuleDoc.path=epydoc.apidoc.ModuleDoc-class.html#path"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-0', 'path', 'link-0');">path</a></tt><tt class="py-op">,</tt> <tt c [...]
+<a name="L34"></a><tt class="py-lineno">  34</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">Tkinter</tt> <tt class="py-keyword">import</tt> <tt class="py-op">*</tt> </tt>
+<a name="L35"></a><tt class="py-lineno">  35</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">tkFileDialog</tt> <tt class="py-keyword">import</tt> <tt class="py-name">askopenfilename</tt><tt class="py-op">,</tt> <tt class="py-name">asksaveasfilename</tt> </tt>
+<a name="L36"></a><tt class="py-lineno">  36</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">thread</tt> <tt class="py-keyword">import</tt> <tt class="py-name">start_new_thread</tt><tt class="py-op">,</tt> <tt class="py-name">exit_thread</tt> </tt>
+<a name="L37"></a><tt class="py-lineno">  37</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">pickle</tt> <tt class="py-keyword">import</tt> <tt class="py-name">dump</tt><tt class="py-op">,</tt> <tt class="py-name">load</tt> </tt>
+<a name="L38"></a><tt class="py-lineno">  38</tt>  <tt class="py-line"> </tt>
+<a name="L39"></a><tt class="py-lineno">  39</tt>  <tt class="py-line"><tt class="py-comment"># askdirectory is only defined in python 2.2+; fall back on</tt> </tt>
+<a name="L40"></a><tt class="py-lineno">  40</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># asksaveasfilename if it's not available.</tt> </tt>
+<a name="L41"></a><tt class="py-lineno">  41</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">try</tt><tt class="py-op">:</tt> <tt class="py-keyword">from</tt> <tt class="py-name">tkFileDialog</tt> <tt class="py-keyword">import</tt> <tt class="py-name">askdirectory</tt> </tt>
+<a name="L42"></a><tt class="py-lineno">  42</tt>  <tt class="py-line"><tt class="py-keyword">except</tt><tt class="py-op">:</tt> <tt class="py-name">askdirectory</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L43"></a><tt class="py-lineno">  43</tt>  <tt class="py-line"> </tt>
+<a name="L44"></a><tt class="py-lineno">  44</tt>  <tt class="py-line"><tt class="py-comment"># Include support for Zope, if it's available.</tt> </tt>
+<a name="L45"></a><tt class="py-lineno">  45</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">try</tt><tt class="py-op">:</tt> <tt class="py-keyword">import</tt> <tt class="py-name">ZODB</tt> </tt>
+<a name="L46"></a><tt class="py-lineno">  46</tt>  <tt class="py-line"><tt class="py-keyword">except</tt><tt class="py-op">:</tt> <tt class="py-keyword">pass</tt> </tt>
+<a name="L47"></a><tt class="py-lineno">  47</tt>  <tt class="py-line"> </tt>
+<a name="L48"></a><tt class="py-lineno">  48</tt>  <tt class="py-line"><tt class="py-comment">##/////////////////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L49"></a><tt class="py-lineno">  49</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## CONSTANTS</tt> </tt>
+<a name="L50"></a><tt class="py-lineno">  50</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">##/////////////////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L51"></a><tt class="py-lineno">  51</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L52"></a><tt class="py-lineno">  52</tt>  <tt class="py-line"><tt id="link-1" class="py-name" targets="Variable epydoc.DEBUG=epydoc-module.html#DEBUG,Variable epydoc.gui.DEBUG=epydoc.gui-module.html#DEBUG,Variable epydoc.log.DEBUG=epydoc.log-module.html#DEBUG"><a title="epydoc.DEBUG
+epydoc.gui.DEBUG
+epydoc.log.DEBUG" class="py-name" href="#" onclick="return doclink('link-1', 'DEBUG', 'link-1');">DEBUG</a></tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L53"></a><tt class="py-lineno">  53</tt>  <tt class="py-line"> </tt>
+<a name="L54"></a><tt class="py-lineno">  54</tt>  <tt class="py-line"><tt class="py-comment"># Colors for tkinter display</tt> </tt>
+<a name="L55"></a><tt class="py-lineno">  55</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt id="link-2" class="py-name" targets="Variable epydoc.gui.BG_COLOR=epydoc.gui-module.html#BG_COLOR"><a title="epydoc.gui.BG_COLOR" class="py-name" href="#" onclick="return doclink('link-2', 'BG_COLOR', 'link-2');">BG_COLOR</a></tt><tt class="py-op">=</tt><tt class="py-string">'#e0e0e0'</tt> </tt>
+<a name="L56"></a><tt class="py-lineno">  56</tt>  <tt class="py-line"><tt id="link-3" class="py-name" targets="Variable epydoc.gui.ACTIVEBG_COLOR=epydoc.gui-module.html#ACTIVEBG_COLOR"><a title="epydoc.gui.ACTIVEBG_COLOR" class="py-name" href="#" onclick="return doclink('link-3', 'ACTIVEBG_COLOR', 'link-3');">ACTIVEBG_COLOR</a></tt><tt class="py-op">=</tt><tt class="py-string">'#e0e0e0'</tt> </tt>
+<a name="L57"></a><tt class="py-lineno">  57</tt>  <tt class="py-line"><tt id="link-4" class="py-name" targets="Variable epydoc.gui.TEXT_COLOR=epydoc.gui-module.html#TEXT_COLOR"><a title="epydoc.gui.TEXT_COLOR" class="py-name" href="#" onclick="return doclink('link-4', 'TEXT_COLOR', 'link-4');">TEXT_COLOR</a></tt><tt class="py-op">=</tt><tt class="py-string">'black'</tt> </tt>
+<a name="L58"></a><tt class="py-lineno">  58</tt>  <tt class="py-line"><tt id="link-5" class="py-name" targets="Variable epydoc.gui.ENTRYSELECT_COLOR=epydoc.gui-module.html#ENTRYSELECT_COLOR"><a title="epydoc.gui.ENTRYSELECT_COLOR" class="py-name" href="#" onclick="return doclink('link-5', 'ENTRYSELECT_COLOR', 'link-5');">ENTRYSELECT_COLOR</a></tt> <tt class="py-op">=</tt> <tt id="link-6" class="py-name"><a title="epydoc.gui.ACTIVEBG_COLOR" class="py-name" href="#" onclick="return doclin [...]
+<a name="L59"></a><tt class="py-lineno">  59</tt>  <tt class="py-line"><tt id="link-7" class="py-name" targets="Variable epydoc.gui.SELECT_COLOR=epydoc.gui-module.html#SELECT_COLOR"><a title="epydoc.gui.SELECT_COLOR" class="py-name" href="#" onclick="return doclink('link-7', 'SELECT_COLOR', 'link-7');">SELECT_COLOR</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'#208070'</tt> </tt>
+<a name="L60"></a><tt class="py-lineno">  60</tt>  <tt class="py-line"><tt id="link-8" class="py-name" targets="Variable epydoc.gui.MESSAGE_COLOR=epydoc.gui-module.html#MESSAGE_COLOR"><a title="epydoc.gui.MESSAGE_COLOR" class="py-name" href="#" onclick="return doclink('link-8', 'MESSAGE_COLOR', 'link-8');">MESSAGE_COLOR</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'#000060'</tt> </tt>
+<a name="L61"></a><tt class="py-lineno">  61</tt>  <tt class="py-line"><tt id="link-9" class="py-name" targets="Variable epydoc.gui.ERROR_COLOR=epydoc.gui-module.html#ERROR_COLOR"><a title="epydoc.gui.ERROR_COLOR" class="py-name" href="#" onclick="return doclink('link-9', 'ERROR_COLOR', 'link-9');">ERROR_COLOR</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'#600000'</tt> </tt>
+<a name="L62"></a><tt class="py-lineno">  62</tt>  <tt class="py-line"><tt id="link-10" class="py-name" targets="Variable epydoc.gui.GUIERROR_COLOR=epydoc.gui-module.html#GUIERROR_COLOR"><a title="epydoc.gui.GUIERROR_COLOR" class="py-name" href="#" onclick="return doclink('link-10', 'GUIERROR_COLOR', 'link-10');">GUIERROR_COLOR</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'#600000'</tt> </tt>
+<a name="L63"></a><tt class="py-lineno">  63</tt>  <tt class="py-line"><tt id="link-11" class="py-name" targets="Variable epydoc.gui.WARNING_COLOR=epydoc.gui-module.html#WARNING_COLOR"><a title="epydoc.gui.WARNING_COLOR" class="py-name" href="#" onclick="return doclink('link-11', 'WARNING_COLOR', 'link-11');">WARNING_COLOR</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'#604000'</tt> </tt>
+<a name="L64"></a><tt class="py-lineno">  64</tt>  <tt class="py-line"><tt id="link-12" class="py-name" targets="Variable epydoc.gui.HEADER_COLOR=epydoc.gui-module.html#HEADER_COLOR"><a title="epydoc.gui.HEADER_COLOR" class="py-name" href="#" onclick="return doclink('link-12', 'HEADER_COLOR', 'link-12');">HEADER_COLOR</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'#000000'</tt> </tt>
+<a name="L65"></a><tt class="py-lineno">  65</tt>  <tt class="py-line"> </tt>
+<a name="L66"></a><tt class="py-lineno">  66</tt>  <tt class="py-line"><tt class="py-comment"># Convenience dictionaries for specifying widget colors</tt> </tt>
+<a name="L67"></a><tt class="py-lineno">  67</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt id="link-13" class="py-name" targets="Variable epydoc.gui.COLOR_CONFIG=epydoc.gui-module.html#COLOR_CONFIG"><a title="epydoc.gui.COLOR_CONFIG" class="py-name" href="#" onclick="return doclink('link-13', 'COLOR_CONFIG', 'link-13');">COLOR_CONFIG</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-string">'background'</tt><tt class="py-op">:</tt><tt id="link-14" class= [...]
+<a name="L68"></a><tt class="py-lineno">  68</tt>  <tt class="py-line">                <tt class="py-string">'foreground'</tt><tt class="py-op">:</tt><tt id="link-16" class="py-name"><a title="epydoc.gui.TEXT_COLOR" class="py-name" href="#" onclick="return doclink('link-16', 'TEXT_COLOR', 'link-4');">TEXT_COLOR</a></tt><tt class="py-op">,</tt> <tt class="py-string">'highlightbackground'</tt><tt class="py-op">:</tt> <tt id="link-17" class="py-name"><a title="epydoc.gui.BG_COLOR" class="py [...]
+<a name="L69"></a><tt class="py-lineno">  69</tt>  <tt class="py-line"><tt id="link-18" class="py-name" targets="Variable epydoc.gui.ENTRY_CONFIG=epydoc.gui-module.html#ENTRY_CONFIG"><a title="epydoc.gui.ENTRY_CONFIG" class="py-name" href="#" onclick="return doclink('link-18', 'ENTRY_CONFIG', 'link-18');">ENTRY_CONFIG</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-string">'background'</tt><tt class="py-op">:</tt><tt id="link-19" class="py-name"><a title="epydoc.g [...]
+<a name="L70"></a><tt class="py-lineno">  70</tt>  <tt class="py-line">                <tt class="py-string">'foreground'</tt><tt class="py-op">:</tt><tt id="link-21" class="py-name"><a title="epydoc.gui.TEXT_COLOR" class="py-name" href="#" onclick="return doclink('link-21', 'TEXT_COLOR', 'link-4');">TEXT_COLOR</a></tt><tt class="py-op">,</tt> <tt class="py-string">'highlightbackground'</tt><tt class="py-op">:</tt> <tt id="link-22" class="py-name"><a title="epydoc.gui.BG_COLOR" class="py [...]
+<a name="L71"></a><tt class="py-lineno">  71</tt>  <tt class="py-line">                <tt class="py-string">'selectbackground'</tt><tt class="py-op">:</tt> <tt id="link-23" class="py-name"><a title="epydoc.gui.ENTRYSELECT_COLOR" class="py-name" href="#" onclick="return doclink('link-23', 'ENTRYSELECT_COLOR', 'link-5');">ENTRYSELECT_COLOR</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L72"></a><tt class="py-lineno">  72</tt>  <tt class="py-line">                <tt class="py-string">'selectforeground'</tt><tt class="py-op">:</tt> <tt id="link-24" class="py-name"><a title="epydoc.gui.TEXT_COLOR" class="py-name" href="#" onclick="return doclink('link-24', 'TEXT_COLOR', 'link-4');">TEXT_COLOR</a></tt><tt class="py-op">}</tt> </tt>
+<a name="L73"></a><tt class="py-lineno">  73</tt>  <tt class="py-line"><tt id="link-25" class="py-name" targets="Variable epydoc.gui.SB_CONFIG=epydoc.gui-module.html#SB_CONFIG"><a title="epydoc.gui.SB_CONFIG" class="py-name" href="#" onclick="return doclink('link-25', 'SB_CONFIG', 'link-25');">SB_CONFIG</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-string">'troughcolor'</tt><tt class="py-op">:</tt><tt id="link-26" class="py-name"><a title="epydoc.gui.BG_COLOR" c [...]
+<a name="L74"></a><tt class="py-lineno">  74</tt>  <tt class="py-line">             <tt class="py-string">'background'</tt><tt class="py-op">:</tt><tt id="link-28" class="py-name"><a title="epydoc.gui.BG_COLOR" class="py-name" href="#" onclick="return doclink('link-28', 'BG_COLOR', 'link-2');">BG_COLOR</a></tt><tt class="py-op">,</tt> <tt class="py-string">'highlightbackground'</tt><tt class="py-op">:</tt><tt id="link-29" class="py-name"><a title="epydoc.gui.BG_COLOR" class="py-name" hre [...]
+<a name="L75"></a><tt class="py-lineno">  75</tt>  <tt class="py-line"><tt id="link-30" class="py-name" targets="Variable epydoc.gui.LISTBOX_CONFIG=epydoc.gui-module.html#LISTBOX_CONFIG"><a title="epydoc.gui.LISTBOX_CONFIG" class="py-name" href="#" onclick="return doclink('link-30', 'LISTBOX_CONFIG', 'link-30');">LISTBOX_CONFIG</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-string">'highlightcolor'</tt><tt class="py-op">:</tt> <tt id="link-31" class="py-name"><a  [...]
+<a name="L76"></a><tt class="py-lineno">  76</tt>  <tt class="py-line">                  <tt class="py-string">'foreground'</tt><tt class="py-op">:</tt><tt id="link-33" class="py-name"><a title="epydoc.gui.TEXT_COLOR" class="py-name" href="#" onclick="return doclink('link-33', 'TEXT_COLOR', 'link-4');">TEXT_COLOR</a></tt><tt class="py-op">,</tt> <tt class="py-string">'selectforeground'</tt><tt class="py-op">:</tt> <tt id="link-34" class="py-name"><a title="epydoc.gui.TEXT_COLOR" class="p [...]
+<a name="L77"></a><tt class="py-lineno">  77</tt>  <tt class="py-line">                  <tt class="py-string">'selectbackground'</tt><tt class="py-op">:</tt> <tt id="link-35" class="py-name"><a title="epydoc.gui.ACTIVEBG_COLOR" class="py-name" href="#" onclick="return doclink('link-35', 'ACTIVEBG_COLOR', 'link-3');">ACTIVEBG_COLOR</a></tt><tt class="py-op">,</tt> <tt class="py-string">'background'</tt><tt class="py-op">:</tt><tt id="link-36" class="py-name"><a title="epydoc.gui.BG_COLOR [...]
+<a name="L78"></a><tt class="py-lineno">  78</tt>  <tt class="py-line"><tt id="link-37" class="py-name" targets="Variable epydoc.gui.BUTTON_CONFIG=epydoc.gui-module.html#BUTTON_CONFIG"><a title="epydoc.gui.BUTTON_CONFIG" class="py-name" href="#" onclick="return doclink('link-37', 'BUTTON_CONFIG', 'link-37');">BUTTON_CONFIG</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-string">'background'</tt><tt class="py-op">:</tt><tt id="link-38" class="py-name"><a title="epy [...]
+<a name="L79"></a><tt class="py-lineno">  79</tt>  <tt class="py-line">                 <tt class="py-string">'highlightbackground'</tt><tt class="py-op">:</tt> <tt id="link-39" class="py-name"><a title="epydoc.gui.BG_COLOR" class="py-name" href="#" onclick="return doclink('link-39', 'BG_COLOR', 'link-2');">BG_COLOR</a></tt><tt class="py-op">,</tt> <tt class="py-string">'foreground'</tt><tt class="py-op">:</tt><tt id="link-40" class="py-name"><a title="epydoc.gui.TEXT_COLOR" class="py-na [...]
+<a name="L80"></a><tt class="py-lineno">  80</tt>  <tt class="py-line">                 <tt class="py-string">'highlightcolor'</tt><tt class="py-op">:</tt> <tt id="link-41" class="py-name"><a title="epydoc.gui.BG_COLOR" class="py-name" href="#" onclick="return doclink('link-41', 'BG_COLOR', 'link-2');">BG_COLOR</a></tt><tt class="py-op">,</tt> <tt class="py-string">'activeforeground'</tt><tt class="py-op">:</tt> <tt id="link-42" class="py-name"><a title="epydoc.gui.TEXT_COLOR" class="py- [...]
+<a name="L81"></a><tt class="py-lineno">  81</tt>  <tt class="py-line">                 <tt class="py-string">'activebackground'</tt><tt class="py-op">:</tt> <tt id="link-43" class="py-name"><a title="epydoc.gui.ACTIVEBG_COLOR" class="py-name" href="#" onclick="return doclink('link-43', 'ACTIVEBG_COLOR', 'link-3');">ACTIVEBG_COLOR</a></tt><tt class="py-op">,</tt> <tt class="py-string">'pady'</tt><tt class="py-op">:</tt><tt class="py-number">0</tt><tt class="py-op">}</tt> </tt>
+<a name="L82"></a><tt class="py-lineno">  82</tt>  <tt class="py-line"><tt id="link-44" class="py-name" targets="Variable epydoc.gui.CBUTTON_CONFIG=epydoc.gui-module.html#CBUTTON_CONFIG"><a title="epydoc.gui.CBUTTON_CONFIG" class="py-name" href="#" onclick="return doclink('link-44', 'CBUTTON_CONFIG', 'link-44');">CBUTTON_CONFIG</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-string">'background'</tt><tt class="py-op">:</tt><tt id="link-45" class="py-name"><a title [...]
+<a name="L83"></a><tt class="py-lineno">  83</tt>  <tt class="py-line">                  <tt class="py-string">'highlightbackground'</tt><tt class="py-op">:</tt> <tt id="link-46" class="py-name"><a title="epydoc.gui.BG_COLOR" class="py-name" href="#" onclick="return doclink('link-46', 'BG_COLOR', 'link-2');">BG_COLOR</a></tt><tt class="py-op">,</tt> <tt class="py-string">'foreground'</tt><tt class="py-op">:</tt><tt id="link-47" class="py-name"><a title="epydoc.gui.TEXT_COLOR" class="py-n [...]
+<a name="L84"></a><tt class="py-lineno">  84</tt>  <tt class="py-line">                  <tt class="py-string">'highlightcolor'</tt><tt class="py-op">:</tt> <tt id="link-48" class="py-name"><a title="epydoc.gui.BG_COLOR" class="py-name" href="#" onclick="return doclink('link-48', 'BG_COLOR', 'link-2');">BG_COLOR</a></tt><tt class="py-op">,</tt> <tt class="py-string">'activeforeground'</tt><tt class="py-op">:</tt> <tt id="link-49" class="py-name"><a title="epydoc.gui.TEXT_COLOR" class="py [...]
+<a name="L85"></a><tt class="py-lineno">  85</tt>  <tt class="py-line">                  <tt class="py-string">'activebackground'</tt><tt class="py-op">:</tt> <tt id="link-50" class="py-name"><a title="epydoc.gui.ACTIVEBG_COLOR" class="py-name" href="#" onclick="return doclink('link-50', 'ACTIVEBG_COLOR', 'link-3');">ACTIVEBG_COLOR</a></tt><tt class="py-op">,</tt> <tt class="py-string">'pady'</tt><tt class="py-op">:</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> </tt>
+<a name="L86"></a><tt class="py-lineno">  86</tt>  <tt class="py-line">                  <tt class="py-string">'selectcolor'</tt><tt class="py-op">:</tt> <tt id="link-51" class="py-name"><a title="epydoc.gui.SELECT_COLOR" class="py-name" href="#" onclick="return doclink('link-51', 'SELECT_COLOR', 'link-7');">SELECT_COLOR</a></tt><tt class="py-op">}</tt> </tt>
+<a name="L87"></a><tt class="py-lineno">  87</tt>  <tt class="py-line"><tt id="link-52" class="py-name" targets="Variable epydoc.gui.SHOWMSG_CONFIG=epydoc.gui-module.html#SHOWMSG_CONFIG"><a title="epydoc.gui.SHOWMSG_CONFIG" class="py-name" href="#" onclick="return doclink('link-52', 'SHOWMSG_CONFIG', 'link-52');">SHOWMSG_CONFIG</a></tt> <tt class="py-op">=</tt> <tt id="link-53" class="py-name"><a title="epydoc.gui.CBUTTON_CONFIG" class="py-name" href="#" onclick="return doclink('link-53' [...]
+<a name="L88"></a><tt class="py-lineno">  88</tt>  <tt class="py-line"><tt id="link-54" class="py-name"><a title="epydoc.gui.SHOWMSG_CONFIG" class="py-name" href="#" onclick="return doclink('link-54', 'SHOWMSG_CONFIG', 'link-52');">SHOWMSG_CONFIG</a></tt><tt class="py-op">[</tt><tt class="py-string">'foreground'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-55" class="py-name"><a title="epydoc.gui.MESSAGE_COLOR" class="py-name" href="#" onclick="return doclink('link- [...]
+<a name="L89"></a><tt class="py-lineno">  89</tt>  <tt class="py-line"><tt id="link-56" class="py-name" targets="Variable epydoc.gui.SHOWWRN_CONFIG=epydoc.gui-module.html#SHOWWRN_CONFIG"><a title="epydoc.gui.SHOWWRN_CONFIG" class="py-name" href="#" onclick="return doclink('link-56', 'SHOWWRN_CONFIG', 'link-56');">SHOWWRN_CONFIG</a></tt> <tt class="py-op">=</tt> <tt id="link-57" class="py-name"><a title="epydoc.gui.CBUTTON_CONFIG" class="py-name" href="#" onclick="return doclink('link-57' [...]
+<a name="L90"></a><tt class="py-lineno">  90</tt>  <tt class="py-line"><tt id="link-58" class="py-name"><a title="epydoc.gui.SHOWWRN_CONFIG" class="py-name" href="#" onclick="return doclink('link-58', 'SHOWWRN_CONFIG', 'link-56');">SHOWWRN_CONFIG</a></tt><tt class="py-op">[</tt><tt class="py-string">'foreground'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-59" class="py-name"><a title="epydoc.gui.WARNING_COLOR" class="py-name" href="#" onclick="return doclink('link- [...]
+<a name="L91"></a><tt class="py-lineno">  91</tt>  <tt class="py-line"><tt id="link-60" class="py-name" targets="Variable epydoc.gui.SHOWERR_CONFIG=epydoc.gui-module.html#SHOWERR_CONFIG"><a title="epydoc.gui.SHOWERR_CONFIG" class="py-name" href="#" onclick="return doclink('link-60', 'SHOWERR_CONFIG', 'link-60');">SHOWERR_CONFIG</a></tt> <tt class="py-op">=</tt> <tt id="link-61" class="py-name"><a title="epydoc.gui.CBUTTON_CONFIG" class="py-name" href="#" onclick="return doclink('link-61' [...]
+<a name="L92"></a><tt class="py-lineno">  92</tt>  <tt class="py-line"><tt id="link-62" class="py-name"><a title="epydoc.gui.SHOWERR_CONFIG" class="py-name" href="#" onclick="return doclink('link-62', 'SHOWERR_CONFIG', 'link-60');">SHOWERR_CONFIG</a></tt><tt class="py-op">[</tt><tt class="py-string">'foreground'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-63" class="py-name"><a title="epydoc.gui.ERROR_COLOR" class="py-name" href="#" onclick="return doclink('link-63 [...]
+<a name="L93"></a><tt class="py-lineno">  93</tt>  <tt class="py-line"> </tt>
+<a name="L94"></a><tt class="py-lineno">  94</tt>  <tt class="py-line"><tt class="py-comment"># Colors for the progress bar</tt> </tt>
+<a name="L95"></a><tt class="py-lineno">  95</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt id="link-64" class="py-name" targets="Variable epydoc.gui.PROGRESS_HEIGHT=epydoc.gui-module.html#PROGRESS_HEIGHT"><a title="epydoc.gui.PROGRESS_HEIGHT" class="py-name" href="#" onclick="return doclink('link-64', 'PROGRESS_HEIGHT', 'link-64');">PROGRESS_HEIGHT</a></tt> <tt class="py-op">=</tt> <tt class="py-number">16</tt> </tt>
+<a name="L96"></a><tt class="py-lineno">  96</tt>  <tt class="py-line"><tt id="link-65" class="py-name" targets="Variable epydoc.gui.PROGRESS_WIDTH=epydoc.gui-module.html#PROGRESS_WIDTH"><a title="epydoc.gui.PROGRESS_WIDTH" class="py-name" href="#" onclick="return doclink('link-65', 'PROGRESS_WIDTH', 'link-65');">PROGRESS_WIDTH</a></tt> <tt class="py-op">=</tt> <tt class="py-number">200</tt> </tt>
+<a name="L97"></a><tt class="py-lineno">  97</tt>  <tt class="py-line"><tt id="link-66" class="py-name" targets="Variable epydoc.gui.PROGRESS_BG=epydoc.gui-module.html#PROGRESS_BG"><a title="epydoc.gui.PROGRESS_BG" class="py-name" href="#" onclick="return doclink('link-66', 'PROGRESS_BG', 'link-66');">PROGRESS_BG</a></tt><tt class="py-op">=</tt><tt class="py-string">'#305060'</tt> </tt>
+<a name="L98"></a><tt class="py-lineno">  98</tt>  <tt class="py-line"><tt id="link-67" class="py-name" targets="Variable epydoc.gui.PROGRESS_COLOR1=epydoc.gui-module.html#PROGRESS_COLOR1"><a title="epydoc.gui.PROGRESS_COLOR1" class="py-name" href="#" onclick="return doclink('link-67', 'PROGRESS_COLOR1', 'link-67');">PROGRESS_COLOR1</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'#30c070'</tt> </tt>
+<a name="L99"></a><tt class="py-lineno">  99</tt>  <tt class="py-line"><tt id="link-68" class="py-name" targets="Variable epydoc.gui.PROGRESS_COLOR2=epydoc.gui-module.html#PROGRESS_COLOR2"><a title="epydoc.gui.PROGRESS_COLOR2" class="py-name" href="#" onclick="return doclink('link-68', 'PROGRESS_COLOR2', 'link-68');">PROGRESS_COLOR2</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'#60ffa0'</tt> </tt>
+<a name="L100"></a><tt class="py-lineno"> 100</tt>  <tt class="py-line"><tt id="link-69" class="py-name" targets="Variable epydoc.gui.PROGRESS_COLOR3=epydoc.gui-module.html#PROGRESS_COLOR3"><a title="epydoc.gui.PROGRESS_COLOR3" class="py-name" href="#" onclick="return doclink('link-69', 'PROGRESS_COLOR3', 'link-69');">PROGRESS_COLOR3</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'#106030'</tt> </tt>
+<a name="L101"></a><tt class="py-lineno"> 101</tt>  <tt class="py-line"> </tt>
+<a name="L102"></a><tt class="py-lineno"> 102</tt>  <tt class="py-line"><tt class="py-comment"># On tkinter canvases, where's the zero coordinate?</tt> </tt>
+<a name="L103"></a><tt class="py-lineno"> 103</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">if</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">platform</tt><tt class="py-op">.</tt><tt class="py-name">lower</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">startswith</tt><tt class="py-op">(</tt><tt class="py-string">'win'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L104"></a><tt class="py-lineno"> 104</tt>  <tt class="py-line">    <tt id="link-70" class="py-name" targets="Variable epydoc.gui.DX=epydoc.gui-module.html#DX"><a title="epydoc.gui.DX" class="py-name" href="#" onclick="return doclink('link-70', 'DX', 'link-70');">DX</a></tt> <tt class="py-op">=</tt> <tt class="py-number">3</tt><tt class="py-op">;</tt> <tt id="link-71" class="py-name" targets="Variable epydoc.gui.DY=epydoc.gui-module.html#DY"><a title="epydoc.gui.DY" class="py-nam [...]
+<a name="L105"></a><tt class="py-lineno"> 105</tt>  <tt class="py-line">    <tt id="link-72" class="py-name" targets="Variable epydoc.gui.DH=epydoc.gui-module.html#DH"><a title="epydoc.gui.DH" class="py-name" href="#" onclick="return doclink('link-72', 'DH', 'link-72');">DH</a></tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt><tt class="py-op">;</tt> <tt id="link-73" class="py-name" targets="Variable epydoc.gui.DW=epydoc.gui-module.html#DW"><a title="epydoc.gui.DW" class="py-nam [...]
+<a name="L106"></a><tt class="py-lineno"> 106</tt>  <tt class="py-line"><tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L107"></a><tt class="py-lineno"> 107</tt>  <tt class="py-line">    <tt id="link-74" class="py-name"><a title="epydoc.gui.DX" class="py-name" href="#" onclick="return doclink('link-74', 'DX', 'link-70');">DX</a></tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt><tt class="py-op">;</tt> <tt id="link-75" class="py-name"><a title="epydoc.gui.DY" class="py-name" href="#" onclick="return doclink('link-75', 'DY', 'link-71');">DY</a></tt> <tt class="py-op">=</tt> <tt class="py-n [...]
+<a name="L108"></a><tt class="py-lineno"> 108</tt>  <tt class="py-line">    <tt id="link-76" class="py-name"><a title="epydoc.gui.DH" class="py-name" href="#" onclick="return doclink('link-76', 'DH', 'link-72');">DH</a></tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt><tt class="py-op">;</tt> <tt id="link-77" class="py-name"><a title="epydoc.gui.DW" class="py-name" href="#" onclick="return doclink('link-77', 'DW', 'link-73');">DW</a></tt> <tt class="py-op">=</tt> <tt class="py-n [...]
+<a name="L109"></a><tt class="py-lineno"> 109</tt>  <tt class="py-line"> </tt>
+<a name="L110"></a><tt class="py-lineno"> 110</tt>  <tt class="py-line"><tt class="py-comment"># How much of the progress is in each subtask?</tt> </tt>
+<a name="L111"></a><tt class="py-lineno"> 111</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt id="link-78" class="py-name" targets="Variable epydoc.gui.IMPORT_PROGRESS=epydoc.gui-module.html#IMPORT_PROGRESS"><a title="epydoc.gui.IMPORT_PROGRESS" class="py-name" href="#" onclick="return doclink('link-78', 'IMPORT_PROGRESS', 'link-78');">IMPORT_PROGRESS</a></tt> <tt class="py-op">=</tt> <tt class="py-number">0.1</tt> </tt>
+<a name="L112"></a><tt class="py-lineno"> 112</tt>  <tt class="py-line"><tt id="link-79" class="py-name" targets="Variable epydoc.gui.BUILD_PROGRESS=epydoc.gui-module.html#BUILD_PROGRESS"><a title="epydoc.gui.BUILD_PROGRESS" class="py-name" href="#" onclick="return doclink('link-79', 'BUILD_PROGRESS', 'link-79');">BUILD_PROGRESS</a></tt>  <tt class="py-op">=</tt> <tt class="py-number">0.2</tt> </tt>
+<a name="L113"></a><tt class="py-lineno"> 113</tt>  <tt class="py-line"><tt id="link-80" class="py-name" targets="Variable epydoc.gui.WRITE_PROGRESS=epydoc.gui-module.html#WRITE_PROGRESS"><a title="epydoc.gui.WRITE_PROGRESS" class="py-name" href="#" onclick="return doclink('link-80', 'WRITE_PROGRESS', 'link-80');">WRITE_PROGRESS</a></tt>  <tt class="py-op">=</tt> <tt class="py-number">1.0</tt> <tt class="py-op">-</tt> <tt id="link-81" class="py-name"><a title="epydoc.gui.BUILD_PROGRESS"  [...]
+<a name="L114"></a><tt class="py-lineno"> 114</tt>  <tt class="py-line"> </tt>
+<a name="L115"></a><tt class="py-lineno"> 115</tt>  <tt class="py-line"><tt class="py-comment">##/////////////////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L116"></a><tt class="py-lineno"> 116</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## IMAGE CONSTANTS</tt> </tt>
+<a name="L117"></a><tt class="py-lineno"> 117</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">##/////////////////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L118"></a><tt class="py-lineno"> 118</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L119"></a><tt class="py-lineno"> 119</tt>  <tt class="py-line"><tt id="link-83" class="py-name" targets="Variable epydoc.gui.UP_GIF=epydoc.gui-module.html#UP_GIF"><a title="epydoc.gui.UP_GIF" class="py-name" href="#" onclick="return doclink('link-83', 'UP_GIF', 'link-83');">UP_GIF</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'''\</tt> </tt>
+<a name="L120"></a><tt class="py-lineno"> 120</tt>  <tt class="py-line"><tt class="py-string">R0lGODlhCwAMALMAANnZ2QDMmQCZZgBmZgAAAAAzM////////wAAAAAAAAAAAAAAAAAAAAAAAAAA</tt> </tt>
+<a name="L121"></a><tt class="py-lineno"> 121</tt>  <tt class="py-line"><tt class="py-string">AAAAACH5BAEAAAAALAAAAAALAAwAAAQjEMhJKxCW4gzCIJxXZIEwFGDlDadqsii1sq1U0nA64+ON</tt> </tt>
+<a name="L122"></a><tt class="py-lineno"> 122</tt>  <tt class="py-line"><tt class="py-string">5xEAOw==</tt> </tt>
+<a name="L123"></a><tt class="py-lineno"> 123</tt>  <tt class="py-line"><tt class="py-string">'''</tt> </tt>
+<a name="L124"></a><tt class="py-lineno"> 124</tt>  <tt class="py-line"><tt id="link-84" class="py-name" targets="Variable epydoc.gui.DOWN_GIF=epydoc.gui-module.html#DOWN_GIF"><a title="epydoc.gui.DOWN_GIF" class="py-name" href="#" onclick="return doclink('link-84', 'DOWN_GIF', 'link-84');">DOWN_GIF</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'''\</tt> </tt>
+<a name="L125"></a><tt class="py-lineno"> 125</tt>  <tt class="py-line"><tt class="py-string">R0lGODlhCwAMALMAANnZ2QDMmQCZZgBmZgAAAAAzM////////wAAAAAAAAAAAAAAAAAAAAAAAAAA</tt> </tt>
+<a name="L126"></a><tt class="py-lineno"> 126</tt>  <tt class="py-line"><tt class="py-string">AAAAACH5BAEAAAAALAAAAAALAAwAAAQmEIQxgLVUCsppsVPngVtXEFfIfWk5nBe4xuSL0tKLy/cu</tt> </tt>
+<a name="L127"></a><tt class="py-lineno"> 127</tt>  <tt class="py-line"><tt class="py-string">7JffJQIAOw==</tt> </tt>
+<a name="L128"></a><tt class="py-lineno"> 128</tt>  <tt class="py-line"><tt class="py-string">'''</tt> </tt>
+<a name="L129"></a><tt class="py-lineno"> 129</tt>  <tt class="py-line"><tt id="link-85" class="py-name" targets="Variable epydoc.gui.LEFT_GIF=epydoc.gui-module.html#LEFT_GIF"><a title="epydoc.gui.LEFT_GIF" class="py-name" href="#" onclick="return doclink('link-85', 'LEFT_GIF', 'link-85');">LEFT_GIF</a></tt><tt class="py-op">=</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L130"></a><tt class="py-lineno"> 130</tt>  <tt class="py-line"><tt class="py-string">R0lGODlhDAALAKIAANnZ2QDMmQCZZgBmZgAAAAAzM////////yH5BAEAAAAALAAAAAAMAAsAAAM4</tt> </tt>
+<a name="L131"></a><tt class="py-lineno"> 131</tt>  <tt class="py-line"><tt class="py-string">CLocgaCrESiDoBshOAoAgBEyMzgAEIGCowsiOLoLgEBVOLoIqlSFo4OgC1RYM4Ogq1RYg6DLVJgA</tt> </tt>
+<a name="L132"></a><tt class="py-lineno"> 132</tt>  <tt class="py-line"><tt class="py-string">Ow==</tt> </tt>
+<a name="L133"></a><tt class="py-lineno"> 133</tt>  <tt class="py-line"><tt class="py-string">'''</tt> </tt>
+<a name="L134"></a><tt class="py-lineno"> 134</tt>  <tt class="py-line"><tt id="link-86" class="py-name" targets="Variable epydoc.gui.RIGHT_GIF=epydoc.gui-module.html#RIGHT_GIF"><a title="epydoc.gui.RIGHT_GIF" class="py-name" href="#" onclick="return doclink('link-86', 'RIGHT_GIF', 'link-86');">RIGHT_GIF</a></tt><tt class="py-op">=</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L135"></a><tt class="py-lineno"> 135</tt>  <tt class="py-line"><tt class="py-string">R0lGODlhDAALAKIAANnZ2QDMmQBmZgCZZgAzMwAAAP///////yH5BAEAAAAALAAAAAAMAAsAAAM5</tt> </tt>
+<a name="L136"></a><tt class="py-lineno"> 136</tt>  <tt class="py-line"><tt class="py-string">GIGgyzIYgaCrIigTgaALIigyEQiqKLoTgaAoujuDgKJLVAgqIoJEBQAIIkKEhaArRFgIukqFoMsJ</tt> </tt>
+<a name="L137"></a><tt class="py-lineno"> 137</tt>  <tt class="py-line"><tt class="py-string">ADs=</tt> </tt>
+<a name="L138"></a><tt class="py-lineno"> 138</tt>  <tt class="py-line"><tt class="py-string">'''</tt> </tt>
+<a name="L139"></a><tt class="py-lineno"> 139</tt>  <tt class="py-line"> </tt>
+<a name="L140"></a><tt class="py-lineno"> 140</tt>  <tt class="py-line"><tt class="py-comment">##/////////////////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L141"></a><tt class="py-lineno"> 141</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## MessageIO</tt> </tt>
+<a name="L142"></a><tt class="py-lineno"> 142</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">##/////////////////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L143"></a><tt class="py-lineno"> 143</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L144"></a><tt class="py-lineno"> 144</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-87" class="py-name" targets="Package epydoc=epydoc-module.html"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-87', 'epydoc', 'link-87');">epydoc</a></tt> <tt class="py-keyword">import</tt> <tt id="link-88" class="py-name" targets="Method epydoc.cli.ConsoleLogger.log()=epydoc.cli.ConsoleLogger-class.html#log,Method epydoc.cli.HTMLLogger.log()=epy [...]
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-88', 'log', 'link-88');">log</a></tt> </tt>
+<a name="L145"></a><tt class="py-lineno"> 145</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-89" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-89', 'epydoc', 'link-87');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-90" class="py-name" targets="Module epydoc.test.util=epydoc.test.util-module.html,Module epydoc.util=epydoc.util-module.html"><a title="epydoc.test.util
+epydoc.util" class="py-name" href="#" onclick="return doclink('link-90', 'util', 'link-90');">util</a></tt> <tt class="py-keyword">import</tt> <tt id="link-91" class="py-name" targets="Function epydoc.util.wordwrap()=epydoc.util-module.html#wordwrap"><a title="epydoc.util.wordwrap" class="py-name" href="#" onclick="return doclink('link-91', 'wordwrap', 'link-91');">wordwrap</a></tt> </tt>
+<a name="GUILogger"></a><div id="GUILogger-def"><a name="L146"></a><tt class="py-lineno"> 146</tt> <a class="py-toggle" href="#" id="GUILogger-toggle" onclick="return toggle('GUILogger');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="epydoc.gui.GUILogger-class.html">GUILogger</a><tt class="py-op">(</tt><tt class="py-base-class">log</tt><tt class="py-op">.</tt><tt class="py-base-class">Logger</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="GUILogger-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="GUILogger-expanded"><a name="L147"></a><tt class="py-lineno"> 147</tt>  <tt class="py-line">    <tt id="link-92" class="py-name" targets="Variable epydoc.gui.GUILogger._STAGES=epydoc.gui.GUILogger-class.html#_STAGES"><a title="epydoc.gui.GUILogger._STAGES" class="py-name" href="#" onclick="return doclink('link-92', '_STAGES', 'link-92');">_STAGES</a></tt> <tt class="py-op">=</tt> <tt class=" [...]
+<a name="L148"></a><tt class="py-lineno"> 148</tt>  <tt class="py-line">     </tt>
+<a name="GUILogger.__init__"></a><div id="GUILogger.__init__-def"><a name="L149"></a><tt class="py-lineno"> 149</tt> <a class="py-toggle" href="#" id="GUILogger.__init__-toggle" onclick="return toggle('GUILogger.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.gui.GUILogger-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">progress</tt><tt class= [...]
+</div><div id="GUILogger.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="GUILogger.__init__-expanded"><a name="L150"></a><tt class="py-lineno"> 150</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_progress</tt> <tt class="py-op">=</tt> <tt id="link-93" class="py-name" targets="Method epydoc.cli.ConsoleLogger.progress()=epydoc.cli.ConsoleLogger-class.html#progress,Method epydoc.cli.UnifiedProg [...]
+epydoc.cli.UnifiedProgressConsoleLogger.progress
+epydoc.docbuilder._ProgressEstimator.progress
+epydoc.gui.GUILogger.progress
+epydoc.log.Logger.progress
+epydoc.log.progress" class="py-name" href="#" onclick="return doclink('link-93', 'progress', 'link-93');">progress</a></tt> </tt>
+<a name="L151"></a><tt class="py-lineno"> 151</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cancel</tt> <tt class="py-op">=</tt> <tt class="py-name">cancel</tt> </tt>
+<a name="L152"></a><tt class="py-lineno"> 152</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-94" class="py-name" targets="Method epydoc.docwriter.xlink.DocUrlGenerator.clear()=epydoc.docwriter.xlink.DocUrlGenerator-class.html#clear,Method epydoc.gui.GUILogger.clear()=epydoc.gui.GUILogger-class.html#clear"><a title="epydoc.docwriter.xlink.DocUrlGenerator.clear
+epydoc.gui.GUILogger.clear" class="py-name" href="#" onclick="return doclink('link-94', 'clear', 'link-94');">clear</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L153"></a><tt class="py-lineno"> 153</tt>  <tt class="py-line"> </tt>
+<a name="GUILogger.clear"></a><div id="GUILogger.clear-def"><a name="L154"></a><tt class="py-lineno"> 154</tt> <a class="py-toggle" href="#" id="GUILogger.clear-toggle" onclick="return toggle('GUILogger.clear');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.gui.GUILogger-class.html#clear">clear</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="GUILogger.clear-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="GUILogger.clear-expanded"><a name="L155"></a><tt class="py-lineno"> 155</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_messages</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L156"></a><tt class="py-lineno"> 156</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_n</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L157"></a><tt class="py-lineno"> 157</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_stage</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L158"></a><tt class="py-lineno"> 158</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_message_blocks</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+</div><a name="L159"></a><tt class="py-lineno"> 159</tt>  <tt class="py-line">         </tt>
+<a name="GUILogger.log"></a><div id="GUILogger.log-def"><a name="L160"></a><tt class="py-lineno"> 160</tt> <a class="py-toggle" href="#" id="GUILogger.log-toggle" onclick="return toggle('GUILogger.log');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.gui.GUILogger-class.html#log">log</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">level</tt><tt class="py-op">,</tt> <tt class="py-para [...]
+</div><div id="GUILogger.log-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="GUILogger.log-expanded"><a name="L161"></a><tt class="py-lineno"> 161</tt>  <tt class="py-line">        <tt class="py-name">message</tt> <tt class="py-op">=</tt> <tt id="link-95" class="py-name"><a title="epydoc.util.wordwrap" class="py-name" href="#" onclick="return doclink('link-95', 'wordwrap', 'link-91');">wordwrap</a></tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt c [...]
+<a name="L162"></a><tt class="py-lineno"> 162</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_message_blocks</tt><tt class="py-op">:</tt> </tt>
+<a name="L163"></a><tt class="py-lineno"> 163</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_message_blocks</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt> <tt class="py-op">(</tt><tt class=" [...]
+<a name="L164"></a><tt class="py-lineno"> 164</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L165"></a><tt class="py-lineno"> 165</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_messages</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt> <tt class="py-op">(</tt><tt class="py-name">level</tt><tt class="py-op">,</tt> <tt class="py-name">message</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt> </tt>
+</div><a name="L166"></a><tt class="py-lineno"> 166</tt>  <tt class="py-line"> </tt>
+<a name="GUILogger.start_block"></a><div id="GUILogger.start_block-def"><a name="L167"></a><tt class="py-lineno"> 167</tt> <a class="py-toggle" href="#" id="GUILogger.start_block-toggle" onclick="return toggle('GUILogger.start_block');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.gui.GUILogger-class.html#start_block">start_block</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">heade [...]
+</div><div id="GUILogger.start_block-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="GUILogger.start_block-expanded"><a name="L168"></a><tt class="py-lineno"> 168</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_message_blocks</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt> <tt class="py-op">(</tt><tt class="py-name">header</tt><tt class="py-op">,</tt> <tt class="py [...]
+</div><a name="L169"></a><tt class="py-lineno"> 169</tt>  <tt class="py-line"> </tt>
+<a name="GUILogger.end_block"></a><div id="GUILogger.end_block-def"><a name="L170"></a><tt class="py-lineno"> 170</tt> <a class="py-toggle" href="#" id="GUILogger.end_block-toggle" onclick="return toggle('GUILogger.end_block');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.gui.GUILogger-class.html#end_block">end_block</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="GUILogger.end_block-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="GUILogger.end_block-expanded"><a name="L171"></a><tt class="py-lineno"> 171</tt>  <tt class="py-line">        <tt class="py-name">header</tt><tt class="py-op">,</tt> <tt class="py-name">messages</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_message_blocks</tt><tt class="py-op">.</tt><tt class="py-name">pop</tt><tt class= [...]
+<a name="L172"></a><tt class="py-lineno"> 172</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">messages</tt><tt class="py-op">:</tt> </tt>
+<a name="L173"></a><tt class="py-lineno"> 173</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_messages</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt> <tt class="py-op">(</tt><tt class="py-string">'uline'</tt><tt class="py-op">,</tt> <tt class="py-string">' '</tt><tt class="py-op">*</tt><tt class="py-number">75</tt><tt class="py-op">+</tt><tt class="py-string">'\n'</tt><tt class="py-op">)< [...]
+<a name="L174"></a><tt class="py-lineno"> 174</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-96" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-96', 'log', 'link-88');">log</a></tt><tt class="py-op">(</tt><tt class="py-string">'header'</tt><tt class="py-op">,</tt> <tt class="py-name">header</tt><tt class="py-op">)</tt> </tt>
+<a name="L175"></a><tt class="py-lineno"> 175</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_messages</tt> <tt class="py-op">+=</tt> <tt class="py-name">messages</tt> </tt>
+<a name="L176"></a><tt class="py-lineno"> 176</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_messages</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt> <tt class="py-op">(</tt><tt class="py-string">'uline'</tt><tt class="py-op">,</tt> <tt class="py-string">' '</tt><tt class="py-op">*</tt><tt class="py-number">75</tt><tt class="py-op">+</tt><tt class="py-string">'\n'</tt><tt class="py-op">)< [...]
+</div><a name="L177"></a><tt class="py-lineno"> 177</tt>  <tt class="py-line">         </tt>
+<a name="GUILogger.start_progress"></a><div id="GUILogger.start_progress-def"><a name="L178"></a><tt class="py-lineno"> 178</tt> <a class="py-toggle" href="#" id="GUILogger.start_progress-toggle" onclick="return toggle('GUILogger.start_progress');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.gui.GUILogger-class.html#start_progress">start_progress</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt clas [...]
+</div><div id="GUILogger.start_progress-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="GUILogger.start_progress-expanded"><a name="L179"></a><tt class="py-lineno"> 179</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-97" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-97', 'log', 'link-88');">log</a></tt><tt class="py-op">(</tt><tt id="link-98" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-98', 'log', 'link-88');">log</a></tt><tt class="py-op">.</tt><tt id="link-99" class="py-name" targets="Variable epydoc.log.INFO=epydoc.log-module.html#INFO"><a title="epydoc.log.INFO" class="py-name" href="#" onclick="return doclink('link-99', 'INFO', 'link-99');">INFO</a></tt><tt class="py-op">,</tt> <tt class="py-name">header</tt><tt class="py-op">)</tt> </tt>
+<a name="L180"></a><tt class="py-lineno"> 180</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_stage</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+</div><a name="L181"></a><tt class="py-lineno"> 181</tt>  <tt class="py-line">         </tt>
+<a name="GUILogger.end_progress"></a><div id="GUILogger.end_progress-def"><a name="L182"></a><tt class="py-lineno"> 182</tt> <a class="py-toggle" href="#" id="GUILogger.end_progress-toggle" onclick="return toggle('GUILogger.end_progress');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.gui.GUILogger-class.html#end_progress">end_progress</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</ [...]
+</div><div id="GUILogger.end_progress-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="GUILogger.end_progress-expanded"><a name="L183"></a><tt class="py-lineno"> 183</tt>  <tt class="py-line">        <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L184"></a><tt class="py-lineno"> 184</tt>  <tt class="py-line">     </tt>
+<a name="GUILogger.progress"></a><div id="GUILogger.progress-def"><a name="L185"></a><tt class="py-lineno"> 185</tt> <a class="py-toggle" href="#" id="GUILogger.progress-toggle" onclick="return toggle('GUILogger.progress');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.gui.GUILogger-class.html#progress">progress</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">percent</tt><tt class=" [...]
+</div><div id="GUILogger.progress-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="GUILogger.progress-expanded"><a name="L186"></a><tt class="py-lineno"> 186</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cancel</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> <tt class="py-name">exit_thread</tt><tt class="py-op">( [...]
+<a name="L187"></a><tt class="py-lineno"> 187</tt>  <tt class="py-line">        <tt class="py-name">i</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_stage</tt> <tt class="py-op">-</tt> <tt class="py-number">1</tt> </tt>
+<a name="L188"></a><tt class="py-lineno"> 188</tt>  <tt class="py-line">        <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">sum</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-100" class="py-name"><a title="epydoc.gui.GUILogger._STAGES" class="py-name" href="#" onclick="return doclink('link-100', '_STAGES', 'link-92');">_STAGES</a></tt><tt class="py-op">[</tt><tt clas [...]
+<a name="L189"></a><tt class="py-lineno"> 189</tt>  <tt class="py-line">             <tt class="py-name">float</tt><tt class="py-op">(</tt><tt class="py-name">sum</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-102" class="py-name"><a title="epydoc.gui.GUILogger._STAGES" class="py-name" href="#" onclick="return doclink('link-102', '_STAGES', 'link-92');">_STAGES</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L190"></a><tt class="py-lineno"> 190</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_progress</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt> </tt>
+</div><a name="L191"></a><tt class="py-lineno"> 191</tt>  <tt class="py-line">         </tt>
+<a name="GUILogger.read"></a><div id="GUILogger.read-def"><a name="L192"></a><tt class="py-lineno"> 192</tt> <a class="py-toggle" href="#" id="GUILogger.read-toggle" onclick="return toggle('GUILogger.read');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.gui.GUILogger-class.html#read">read</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="GUILogger.read-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="GUILogger.read-expanded"><a name="L193"></a><tt class="py-lineno"> 193</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_n</tt> <tt class="py-op">>=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_messages</tt> [...]
+<a name="L194"></a><tt class="py-lineno"> 194</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt> </tt>
+<a name="L195"></a><tt class="py-lineno"> 195</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L196"></a><tt class="py-lineno"> 196</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_n</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L197"></a><tt class="py-lineno"> 197</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_messages</tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_n</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+</div></div><a name="L198"></a><tt class="py-lineno"> 198</tt>  <tt class="py-line">         </tt>
+<a name="L199"></a><tt class="py-lineno"> 199</tt>  <tt class="py-line"><tt class="py-comment">##/////////////////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L200"></a><tt class="py-lineno"> 200</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## THREADED DOCUMENTER</tt> </tt>
+<a name="L201"></a><tt class="py-lineno"> 201</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">##/////////////////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L202"></a><tt class="py-lineno"> 202</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="document"></a><div id="document-def"><a name="L203"></a><tt class="py-lineno"> 203</tt> <a class="py-toggle" href="#" id="document-toggle" onclick="return toggle('document');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.gui-module.html#document">document</a><tt class="py-op">(</tt><tt class="py-param">options</tt><tt class="py-op">,</tt> <tt class="py-param">cancel</tt><tt class="py-op">,</tt> <tt class="py-param">done</tt><tt cla [...]
+</div><div id="document-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="document-expanded"><a name="L204"></a><tt class="py-lineno"> 204</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L205"></a><tt class="py-lineno"> 205</tt>  <tt class="py-line"><tt class="py-docstring">    Create the documentation for C{modules}, using the options</tt> </tt>
+<a name="L206"></a><tt class="py-lineno"> 206</tt>  <tt class="py-line"><tt class="py-docstring">    specified by C{options}.  C{document} is designed to be started in</tt> </tt>
+<a name="L207"></a><tt class="py-lineno"> 207</tt>  <tt class="py-line"><tt class="py-docstring">    its own thread by L{EpydocGUI._go}.</tt> </tt>
+<a name="L208"></a><tt class="py-lineno"> 208</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L209"></a><tt class="py-lineno"> 209</tt>  <tt class="py-line"><tt class="py-docstring">    @param options: The options to use for generating documentation.</tt> </tt>
+<a name="L210"></a><tt class="py-lineno"> 210</tt>  <tt class="py-line"><tt class="py-docstring">        This includes keyword options that can be given to</tt> </tt>
+<a name="L211"></a><tt class="py-lineno"> 211</tt>  <tt class="py-line"><tt class="py-docstring">        L{docwriter.html.HTMLWriter}, as well as the option C{target}, which</tt> </tt>
+<a name="L212"></a><tt class="py-lineno"> 212</tt>  <tt class="py-line"><tt class="py-docstring">        controls where the output is written to.</tt> </tt>
+<a name="L213"></a><tt class="py-lineno"> 213</tt>  <tt class="py-line"><tt class="py-docstring">    @type options: C{dictionary}</tt> </tt>
+<a name="L214"></a><tt class="py-lineno"> 214</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L215"></a><tt class="py-lineno"> 215</tt>  <tt class="py-line">    <tt class="py-keyword">from</tt> <tt id="link-103" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-103', 'epydoc', 'link-87');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-104" class="py-name" targets="Package epydoc.docwriter=epydoc.docwriter-module.html"><a title="epydoc.docwriter" class="py-name" href="#" onclick="return doclink('link-104', 'docwriter', 'link-10 [...]
+<a name="L216"></a><tt class="py-lineno"> 216</tt>  <tt class="py-line">    <tt class="py-keyword">from</tt> <tt id="link-107" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-107', 'epydoc', 'link-87');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-108" class="py-name" targets="Module epydoc.docbuilder=epydoc.docbuilder-module.html"><a title="epydoc.docbuilder" class="py-name" href="#" onclick="return doclink('link-108', 'docbuilder', 'link [...]
+<a name="L217"></a><tt class="py-lineno"> 217</tt>  <tt class="py-line">    <tt class="py-keyword">import</tt> <tt id="link-110" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-110', 'epydoc', 'link-87');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-111" class="py-name" targets="Module epydoc.docstringparser=epydoc.docstringparser-module.html"><a title="epydoc.docstringparser" class="py-name" href="#" onclick="return doclink('link-111', 'd [...]
+<a name="L218"></a><tt class="py-lineno"> 218</tt>  <tt class="py-line"> </tt>
+<a name="L219"></a><tt class="py-lineno"> 219</tt>  <tt class="py-line">    <tt class="py-comment"># Set the default docformat.</tt> </tt>
+<a name="L220"></a><tt class="py-lineno"> 220</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-112" class="py-name" targets="Variable epydoc.apidoc.ModuleDoc.docformat=epydoc.apidoc.ModuleDoc-class.html#docformat"><a title="epydoc.apidoc.ModuleDoc.docformat" class="py-name" href="#" onclick="return doclink('link-112', 'docformat', 'link-112');">docformat</a></tt> <tt class="py-op">=</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">get [...]
+<a name="L221"></a><tt class="py-lineno"> 221</tt>  <tt class="py-line">    <tt id="link-113" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-113', 'epydoc', 'link-87');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-114" class="py-name"><a title="epydoc.docstringparser" class="py-name" href="#" onclick="return doclink('link-114', 'docstringparser', 'link-111');">docstringparser</a></tt><tt class="py-op">.</tt><tt id="link-115" class="py-nam [...]
+epydoc.docstringparser.DEFAULT_DOCFORMAT" class="py-name" href="#" onclick="return doclink('link-115', 'DEFAULT_DOCFORMAT', 'link-115');">DEFAULT_DOCFORMAT</a></tt> <tt class="py-op">=</tt> <tt id="link-116" class="py-name"><a title="epydoc.apidoc.ModuleDoc.docformat" class="py-name" href="#" onclick="return doclink('link-116', 'docformat', 'link-112');">docformat</a></tt> </tt>
+<a name="L222"></a><tt class="py-lineno"> 222</tt>  <tt class="py-line"> </tt>
+<a name="L223"></a><tt class="py-lineno"> 223</tt>  <tt class="py-line">    <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L224"></a><tt class="py-lineno"> 224</tt>  <tt class="py-line">        <tt id="link-117" class="py-name" targets="Function epydoc.markup.epytext.parse()=epydoc.markup.epytext-module.html#parse,Function epydoc.markup.parse()=epydoc.markup-module.html#parse"><a title="epydoc.markup.epytext.parse
+epydoc.markup.parse" class="py-name" href="#" onclick="return doclink('link-117', 'parse', 'link-117');">parse</a></tt> <tt class="py-op">=</tt> <tt class="py-name">options</tt><tt class="py-op">[</tt><tt class="py-string">'introspect_or_parse'</tt><tt class="py-op">]</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-string">'parse'</tt><tt class="py-op">,</tt> <tt class="py-string">'both'</tt><tt class="py-op">)</tt> </tt>
+<a name="L225"></a><tt class="py-lineno"> 225</tt>  <tt class="py-line">        <tt class="py-name">introspect</tt> <tt class="py-op">=</tt> <tt class="py-name">options</tt><tt class="py-op">[</tt><tt class="py-string">'introspect_or_parse'</tt><tt class="py-op">]</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-string">'introspect'</tt><tt class="py-op">,</tt> <tt class="py-string">'both'</tt><tt class="py-op">)</tt> </tt>
+<a name="L226"></a><tt class="py-lineno"> 226</tt>  <tt class="py-line">        <tt class="py-name">docindex</tt> <tt class="py-op">=</tt> <tt id="link-118" class="py-name"><a title="epydoc.docbuilder.build_doc_index" class="py-name" href="#" onclick="return doclink('link-118', 'build_doc_index', 'link-109');">build_doc_index</a></tt><tt class="py-op">(</tt><tt class="py-name">options</tt><tt class="py-op">[</tt><tt class="py-string">'modules'</tt><tt class="py-op">]</tt><tt class="py-op [...]
+epydoc.markup.parse" class="py-name" href="#" onclick="return doclink('link-119', 'parse', 'link-117');">parse</a></tt><tt class="py-op">,</tt> <tt class="py-name">introspect</tt><tt class="py-op">)</tt> </tt>
+<a name="L227"></a><tt class="py-lineno"> 227</tt>  <tt class="py-line">        <tt class="py-name">html_writer</tt> <tt class="py-op">=</tt> <tt id="link-120" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter" class="py-name" href="#" onclick="return doclink('link-120', 'HTMLWriter', 'link-106');">HTMLWriter</a></tt><tt class="py-op">(</tt><tt class="py-name">docindex</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-name">options</tt><tt class="py-op">)</tt> </tt>
+<a name="L228"></a><tt class="py-lineno"> 228</tt>  <tt class="py-line">        <tt id="link-121" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-121', 'log', 'link-88');">log</a></tt><tt class="py-op">.</tt><tt id="link-122" class="py-name" targets="Method epydoc.cli.ConsoleLogger.start_progress()=epydoc.cli.ConsoleLogger-class.html#start_progress,Method epydoc.cli.UnifiedProgressConsoleLogger.start_progress()=epydoc.cli.UnifiedProgressConsoleLogger-class.html#start_progress,Method epydoc.gui.GUILogger.start_progress()=epydoc.gui.GUILogger-class.h [...]
+epydoc.cli.UnifiedProgressConsoleLogger.start_progress
+epydoc.gui.GUILogger.start_progress
+epydoc.log.Logger.start_progress
+epydoc.log.start_progress" class="py-name" href="#" onclick="return doclink('link-122', 'start_progress', 'link-122');">start_progress</a></tt><tt class="py-op">(</tt><tt class="py-string">'Writing HTML docs to %r'</tt> <tt class="py-op">%</tt> <tt class="py-name">options</tt><tt class="py-op">[</tt><tt class="py-string">'target'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L229"></a><tt class="py-lineno"> 229</tt>  <tt class="py-line">        <tt class="py-name">html_writer</tt><tt class="py-op">.</tt><tt id="link-123" class="py-name" targets="Method epydoc.docintrospecter._DevNull.write()=epydoc.docintrospecter._DevNull-class.html#write,Method epydoc.docwriter.dotgraph.DotGraph.write()=epydoc.docwriter.dotgraph.DotGraph-class.html#write,Method epydoc.docwriter.html.HTMLWriter.write()=epydoc.docwriter.html.HTMLWriter-class.html#write,Method epydoc [...]
+epydoc.docwriter.dotgraph.DotGraph.write
+epydoc.docwriter.html.HTMLWriter.write
+epydoc.docwriter.latex.LatexWriter.write
+epydoc.docwriter.plaintext.PlaintextWriter.write" class="py-name" href="#" onclick="return doclink('link-123', 'write', 'link-123');">write</a></tt><tt class="py-op">(</tt><tt class="py-name">options</tt><tt class="py-op">[</tt><tt class="py-string">'target'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L230"></a><tt class="py-lineno"> 230</tt>  <tt class="py-line">        <tt id="link-124" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-124', 'log', 'link-88');">log</a></tt><tt class="py-op">.</tt><tt id="link-125" class="py-name" targets="Method epydoc.cli.ConsoleLogger.end_progress()=epydoc.cli.ConsoleLogger-class.html#end_progress,Method epydoc.cli.UnifiedProgressConsoleLogger.end_progress()=epydoc.cli.UnifiedProgressConsoleLogger-class.html#end_progress,Method epydoc.gui.GUILogger.end_progress()=epydoc.gui.GUILogger-class.html#end_pr [...]
+epydoc.cli.UnifiedProgressConsoleLogger.end_progress
+epydoc.gui.GUILogger.end_progress
+epydoc.log.Logger.end_progress
+epydoc.log.end_progress" class="py-name" href="#" onclick="return doclink('link-125', 'end_progress', 'link-125');">end_progress</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L231"></a><tt class="py-lineno"> 231</tt>  <tt class="py-line">     </tt>
+<a name="L232"></a><tt class="py-lineno"> 232</tt>  <tt class="py-line">        <tt class="py-comment"># We're done.</tt> </tt>
+<a name="L233"></a><tt class="py-lineno"> 233</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt id="link-126" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-126', 'log', 'link-88');">log</a></tt><tt class="py-op">.</tt><tt id="link-127" class="py-name" targets="Method epydoc.checker.DocChecker.warning()=epydoc.checker.DocChecker-class.html#warning,Function epydoc.log.warning()=epydoc.log-module.html#warning"><a title="epydoc.checker.DocChecker.warning
+epydoc.log.warning" class="py-name" href="#" onclick="return doclink('link-127', 'warning', 'link-127');">warning</a></tt><tt class="py-op">(</tt><tt class="py-string">'Finished!'</tt><tt class="py-op">)</tt> </tt>
+<a name="L234"></a><tt class="py-lineno"> 234</tt>  <tt class="py-line">        <tt class="py-name">done</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">'done'</tt> </tt>
+<a name="L235"></a><tt class="py-lineno"> 235</tt>  <tt class="py-line"> </tt>
+<a name="L236"></a><tt class="py-lineno"> 236</tt>  <tt class="py-line">    <tt class="py-keyword">except</tt> <tt class="py-name">SystemExit</tt><tt class="py-op">:</tt> </tt>
+<a name="L237"></a><tt class="py-lineno"> 237</tt>  <tt class="py-line">        <tt class="py-comment"># Cancel.</tt> </tt>
+<a name="L238"></a><tt class="py-lineno"> 238</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt id="link-128" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-128', 'log', 'link-88');">log</a></tt><tt class="py-op">.</tt><tt id="link-129" class="py-name" targets="Function epydoc.log.error()=epydoc.log-module.html#error"><a title="epydoc.log.error" class="py-name" href="#" onclick="return doclink('link-129', 'error', 'link-129');">error</a></tt><tt class="py-op">(</tt><tt class="py-string">'Cancelled!'</tt><tt class="py-op">)</tt> </tt>
+<a name="L239"></a><tt class="py-lineno"> 239</tt>  <tt class="py-line">        <tt class="py-name">done</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt><tt class="py-string">'cancel'</tt> </tt>
+<a name="L240"></a><tt class="py-lineno"> 240</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> </tt>
+<a name="L241"></a><tt class="py-lineno"> 241</tt>  <tt class="py-line">    <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
+<a name="L242"></a><tt class="py-lineno"> 242</tt>  <tt class="py-line">        <tt class="py-comment"># We failed.</tt> </tt>
+<a name="L243"></a><tt class="py-lineno"> 243</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt id="link-130" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-130', 'log', 'link-88');">log</a></tt><tt class="py-op">.</tt><tt id="link-131" class="py-name"><a title="epydoc.log.error" class="py-name" href="#" onclick="return doclink('link-131', 'error', 'link-129');">error</a></tt><tt class="py-op">(</tt><tt class="py-string">'Internal error: %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">e</tt><tt class="py-op">)</tt> </tt>
+<a name="L244"></a><tt class="py-lineno"> 244</tt>  <tt class="py-line">        <tt class="py-name">done</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt><tt class="py-string">'cancel'</tt> </tt>
+<a name="L245"></a><tt class="py-lineno"> 245</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> </tt>
+<a name="L246"></a><tt class="py-lineno"> 246</tt>  <tt class="py-line">    <tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt>
+<a name="L247"></a><tt class="py-lineno"> 247</tt>  <tt class="py-line">        <tt class="py-comment"># We failed.</tt> </tt>
+<a name="L248"></a><tt class="py-lineno"> 248</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt id="link-132" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-132', 'log', 'link-88');">log</a></tt><tt class="py-op">.</tt><tt id="link-133" class="py-name"><a title="epydoc.log.error" class="py-name" href="#" onclick="return doclink('link-133', 'error', 'link-129');">error</a></tt><tt class="py-op">(</tt><tt class="py-string">'Internal error!'</tt><tt class="py-op">)</tt> </tt>
+<a name="L249"></a><tt class="py-lineno"> 249</tt>  <tt class="py-line">        <tt class="py-name">done</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt><tt class="py-string">'cancel'</tt> </tt>
+<a name="L250"></a><tt class="py-lineno"> 250</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> </tt>
+</div><a name="L251"></a><tt class="py-lineno"> 251</tt>  <tt class="py-line">     </tt>
+<a name="L252"></a><tt class="py-lineno"> 252</tt>  <tt class="py-line"><tt class="py-comment">##/////////////////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L253"></a><tt class="py-lineno"> 253</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## GUI</tt> </tt>
+<a name="L254"></a><tt class="py-lineno"> 254</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">##/////////////////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L255"></a><tt class="py-lineno"> 255</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="EpydocGUI"></a><div id="EpydocGUI-def"><a name="L256"></a><tt class="py-lineno"> 256</tt> <a class="py-toggle" href="#" id="EpydocGUI-toggle" onclick="return toggle('EpydocGUI');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="epydoc.gui.EpydocGUI-class.html">EpydocGUI</a><tt class="py-op">:</tt> </tt>
+</div><div id="EpydocGUI-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="EpydocGUI-expanded"><a name="L257"></a><tt class="py-lineno"> 257</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L258"></a><tt class="py-lineno"> 258</tt>  <tt class="py-line"><tt class="py-docstring">    A graphical user interace to epydoc.</tt> </tt>
+<a name="L259"></a><tt class="py-lineno"> 259</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="EpydocGUI.__init__"></a><div id="EpydocGUI.__init__-def"><a name="L260"></a><tt class="py-lineno"> 260</tt> <a class="py-toggle" href="#" id="EpydocGUI.__init__-toggle" onclick="return toggle('EpydocGUI.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.gui.EpydocGUI-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="EpydocGUI.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="EpydocGUI.__init__-expanded"><a name="L261"></a><tt class="py-lineno"> 261</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_afterid</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L262"></a><tt class="py-lineno"> 262</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_progress</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">None</tt><tt class="py-op">]</tt> </tt>
+<a name="L263"></a><tt class="py-lineno"> 263</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cancel</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L264"></a><tt class="py-lineno"> 264</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_filename</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L265"></a><tt class="py-lineno"> 265</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_init_dir</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L266"></a><tt class="py-lineno"> 266</tt>  <tt class="py-line"> </tt>
+<a name="L267"></a><tt class="py-lineno"> 267</tt>  <tt class="py-line">        <tt class="py-comment"># Store a copy of sys.modules, so that we can restore it</tt> </tt>
+<a name="L268"></a><tt class="py-lineno"> 268</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># later.  This is useful for making sure that we reload</tt> </tt>
+<a name="L269"></a><tt class="py-lineno"> 269</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># everything when we re-build its documentation.  This will</tt> </tt>
+<a name="L270"></a><tt class="py-lineno"> 270</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># *not* reload the modules that are present when the EpydocGUI</tt> </tt>
+<a name="L271"></a><tt class="py-lineno"> 271</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># is created, but that should only contain some builtins, some</tt> </tt>
+<a name="L272"></a><tt class="py-lineno"> 272</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># epydoc modules, Tkinter, pickle, and thread..</tt> </tt>
+<a name="L273"></a><tt class="py-lineno"> 273</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_old_modules</tt> <tt class="py-op">=</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">modules</tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L274"></a><tt class="py-lineno"> 274</tt>  <tt class="py-line"> </tt>
+<a name="L275"></a><tt class="py-lineno"> 275</tt>  <tt class="py-line">        <tt class="py-comment"># Create the main window.</tt> </tt>
+<a name="L276"></a><tt class="py-lineno"> 276</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_root</tt> <tt class="py-op">=</tt> <tt class="py-name">Tk</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L277"></a><tt class="py-lineno"> 277</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_root</tt><tt class="py-op">[</tt><tt class="py-string">'background'</tt><tt class="py-op">]</tt><tt class="py-op">=</tt><tt id="link-134" class="py-name"><a title="epydoc.gui.BG_COLOR" class="py-name" href="#" onclick="return doclink('link-134', 'BG_COLOR', 'link-2');">BG_COLOR</a></tt> </tt>
+<a name="L278"></a><tt class="py-lineno"> 278</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_root</tt><tt class="py-op">.</tt><tt class="py-name">bind</tt><tt class="py-op">(</tt><tt class="py-string">'<Control-q>'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-135" class="py-name" targets="Method epydoc.gui.EpydocGUI.destroy()=epydoc.gui.EpydocGUI-class.html#destroy"><a tit [...]
+<a name="L279"></a><tt class="py-lineno"> 279</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_root</tt><tt class="py-op">.</tt><tt class="py-name">bind</tt><tt class="py-op">(</tt><tt class="py-string">'<Alt-q>'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-136" class="py-name"><a title="epydoc.gui.EpydocGUI.destroy" class="py-name" href="#" onclick="return doclink('link-136 [...]
+<a name="L280"></a><tt class="py-lineno"> 280</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_root</tt><tt class="py-op">.</tt><tt class="py-name">bind</tt><tt class="py-op">(</tt><tt class="py-string">'<Alt-x>'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-137" class="py-name"><a title="epydoc.gui.EpydocGUI.destroy" class="py-name" href="#" onclick="return doclink('link-137 [...]
+<a name="L281"></a><tt class="py-lineno"> 281</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_root</tt><tt class="py-op">.</tt><tt class="py-name">bind</tt><tt class="py-op">(</tt><tt class="py-string">'<Control-x>'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-138" class="py-name"><a title="epydoc.gui.EpydocGUI.destroy" class="py-name" href="#" onclick="return doclink('link [...]
+<a name="L282"></a><tt class="py-lineno"> 282</tt>  <tt class="py-line">        <tt class="py-comment">#self._root.bind('<Control-d>', self.destroy)</tt> </tt>
+<a name="L283"></a><tt class="py-lineno"> 283</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_root</tt><tt class="py-op">.</tt><tt id="link-139" class="py-name" targets="Method epydoc.docwriter.plaintext.PlaintextWriter.title()=epydoc.docwriter.plaintext.PlaintextWriter-class.html#title"><a title="epydoc.docwriter.plaintext.PlaintextWriter.title" class="py-name" href="#" onclick="return doclink('link- [...]
+<a name="L284"></a><tt class="py-lineno"> 284</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_rootframe</tt> <tt class="py-op">=</tt> <tt class="py-name">Frame</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_root</tt><tt class="py-op">,</tt> <tt class="py-name">background</tt><tt class="py-op">=</tt><tt id="link-140" class="py-name"><a title="epydoc.gui.BG_COLOR" class="py-na [...]
+<a name="L285"></a><tt class="py-lineno"> 285</tt>  <tt class="py-line">                               <tt class="py-name">border</tt><tt class="py-op">=</tt><tt class="py-number">2</tt><tt class="py-op">,</tt> <tt class="py-name">relief</tt><tt class="py-op">=</tt><tt class="py-string">'raised'</tt><tt class="py-op">)</tt> </tt>
+<a name="L286"></a><tt class="py-lineno"> 286</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_rootframe</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt><tt class="py-op">(</tt><tt class="py-name">expand</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-name">fill</tt><tt class="py-op">=</tt><tt class="py-string">'both'</tt><tt class="py-op">,</tt> <tt class="py-name">padx</tt [...]
+<a name="L287"></a><tt class="py-lineno"> 287</tt>  <tt class="py-line"> </tt>
+<a name="L288"></a><tt class="py-lineno"> 288</tt>  <tt class="py-line">        <tt class="py-comment"># Set up the basic frames.  Do not pack the options frame or</tt> </tt>
+<a name="L289"></a><tt class="py-lineno"> 289</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># the messages frame; the GUI has buttons to expand them.</tt> </tt>
+<a name="L290"></a><tt class="py-lineno"> 290</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">leftframe</tt> <tt class="py-op">=</tt> <tt class="py-name">Frame</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_rootframe</tt><tt class="py-op">,</tt> <tt class="py-name">background</tt><tt class="py-op">=</tt><tt id="link-141" class="py-name"><a title="epydoc.gui.BG_COLOR" class="py-name" href="#" onclick= [...]
+<a name="L291"></a><tt class="py-lineno"> 291</tt>  <tt class="py-line">        <tt class="py-name">leftframe</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt><tt class="py-op">(</tt><tt class="py-name">expand</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-name">fill</tt><tt class="py-op">=</tt><tt class="py-string">'both'</tt><tt class="py-op">,</tt> <tt class="py-name">side</tt><tt class="py-op">=</tt><tt class="py-string">'left'< [...]
+<a name="L292"></a><tt class="py-lineno"> 292</tt>  <tt class="py-line">        <tt class="py-name">optsframe</tt> <tt class="py-op">=</tt> <tt class="py-name">Frame</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_rootframe</tt><tt class="py-op">,</tt> <tt class="py-name">background</tt><tt class="py-op">=</tt><tt id="link-142" class="py-name"><a title="epydoc.gui.BG_COLOR" class="py-name" href="#" onclick="return doclink('link-142',  [...]
+<a name="L293"></a><tt class="py-lineno"> 293</tt>  <tt class="py-line">        <tt class="py-name">mainframe</tt> <tt class="py-op">=</tt> <tt class="py-name">Frame</tt><tt class="py-op">(</tt><tt class="py-name">leftframe</tt><tt class="py-op">,</tt> <tt class="py-name">background</tt><tt class="py-op">=</tt><tt id="link-143" class="py-name"><a title="epydoc.gui.BG_COLOR" class="py-name" href="#" onclick="return doclink('link-143', 'BG_COLOR', 'link-2');">BG_COLOR</a></tt><tt class="py [...]
+<a name="L294"></a><tt class="py-lineno"> 294</tt>  <tt class="py-line">        <tt class="py-name">mainframe</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt><tt class="py-op">(</tt><tt class="py-name">expand</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-name">fill</tt><tt class="py-op">=</tt><tt class="py-string">'both'</tt><tt class="py-op">,</tt> <tt class="py-name">side</tt><tt class="py-op">=</tt><tt class="py-string">'top'</ [...]
+<a name="L295"></a><tt class="py-lineno"> 295</tt>  <tt class="py-line">        <tt class="py-name">ctrlframe</tt> <tt class="py-op">=</tt> <tt class="py-name">Frame</tt><tt class="py-op">(</tt><tt class="py-name">mainframe</tt><tt class="py-op">,</tt> <tt class="py-name">background</tt><tt class="py-op">=</tt><tt id="link-144" class="py-name"><a title="epydoc.gui.BG_COLOR" class="py-name" href="#" onclick="return doclink('link-144', 'BG_COLOR', 'link-2');">BG_COLOR</a></tt><tt class="py [...]
+<a name="L296"></a><tt class="py-lineno"> 296</tt>  <tt class="py-line">        <tt class="py-name">ctrlframe</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt><tt class="py-op">(</tt><tt class="py-name">side</tt><tt class="py-op">=</tt><tt class="py-string">"bottom"</tt><tt class="py-op">,</tt> <tt class="py-name">fill</tt><tt class="py-op">=</tt><tt class="py-string">'x'</tt><tt class="py-op">,</tt> <tt class="py-name">expand</tt><tt class="py-op">=</tt><tt class="py-number">0</ [...]
+<a name="L297"></a><tt class="py-lineno"> 297</tt>  <tt class="py-line">        <tt class="py-name">msgsframe</tt> <tt class="py-op">=</tt> <tt class="py-name">Frame</tt><tt class="py-op">(</tt><tt class="py-name">leftframe</tt><tt class="py-op">,</tt> <tt class="py-name">background</tt><tt class="py-op">=</tt><tt id="link-145" class="py-name"><a title="epydoc.gui.BG_COLOR" class="py-name" href="#" onclick="return doclink('link-145', 'BG_COLOR', 'link-2');">BG_COLOR</a></tt><tt class="py [...]
+<a name="L298"></a><tt class="py-lineno"> 298</tt>  <tt class="py-line"> </tt>
+<a name="L299"></a><tt class="py-lineno"> 299</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_optsframe</tt> <tt class="py-op">=</tt> <tt class="py-name">optsframe</tt> </tt>
+<a name="L300"></a><tt class="py-lineno"> 300</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_msgsframe</tt> <tt class="py-op">=</tt> <tt class="py-name">msgsframe</tt> </tt>
+<a name="L301"></a><tt class="py-lineno"> 301</tt>  <tt class="py-line"> </tt>
+<a name="L302"></a><tt class="py-lineno"> 302</tt>  <tt class="py-line">        <tt class="py-comment"># Initialize all the frames, etc.</tt> </tt>
+<a name="L303"></a><tt class="py-lineno"> 303</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-146" class="py-name" targets="Method epydoc.gui.EpydocGUI._init_menubar()=epydoc.gui.EpydocGUI-class.html#_init_menubar"><a title="epydoc.gui.EpydocGUI._init_menubar" class="py-name" href="#" onclick="return doclink('link-146', '_init_menubar', 'link-146');">_init_menubar</a></tt><tt class="py-op">(</tt><tt class="py [...]
+<a name="L304"></a><tt class="py-lineno"> 304</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-147" class="py-name" targets="Method epydoc.gui.EpydocGUI._init_progress_bar()=epydoc.gui.EpydocGUI-class.html#_init_progress_bar"><a title="epydoc.gui.EpydocGUI._init_progress_bar" class="py-name" href="#" onclick="return doclink('link-147', '_init_progress_bar', 'link-147');">_init_progress_bar</a></tt><tt class="py-op">(</tt><tt class="py-na [...]
+<a name="L305"></a><tt class="py-lineno"> 305</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-148" class="py-name" targets="Method epydoc.gui.EpydocGUI._init_module_list()=epydoc.gui.EpydocGUI-class.html#_init_module_list"><a title="epydoc.gui.EpydocGUI._init_module_list" class="py-name" href="#" onclick="return doclink('link-148', '_init_module_list', 'link-148');">_init_module_list</a></tt><tt class="py-op">(</tt><tt class="py-name">m [...]
+<a name="L306"></a><tt class="py-lineno"> 306</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-149" class="py-name" targets="Method epydoc.gui.EpydocGUI._init_options()=epydoc.gui.EpydocGUI-class.html#_init_options"><a title="epydoc.gui.EpydocGUI._init_options" class="py-name" href="#" onclick="return doclink('link-149', '_init_options', 'link-149');">_init_options</a></tt><tt class="py-op">(</tt><tt class="py-name">optsframe</tt><tt cla [...]
+<a name="L307"></a><tt class="py-lineno"> 307</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-150" class="py-name" targets="Method epydoc.gui.EpydocGUI._init_messages()=epydoc.gui.EpydocGUI-class.html#_init_messages"><a title="epydoc.gui.EpydocGUI._init_messages" class="py-name" href="#" onclick="return doclink('link-150', '_init_messages', 'link-150');">_init_messages</a></tt><tt class="py-op">(</tt><tt class="py-name">msgsframe</tt><t [...]
+<a name="L308"></a><tt class="py-lineno"> 308</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-151" class="py-name" targets="Method epydoc.gui.EpydocGUI._init_bindings()=epydoc.gui.EpydocGUI-class.html#_init_bindings"><a title="epydoc.gui.EpydocGUI._init_bindings" class="py-name" href="#" onclick="return doclink('link-151', '_init_bindings', 'link-151');">_init_bindings</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L309"></a><tt class="py-lineno"> 309</tt>  <tt class="py-line"> </tt>
+<a name="L310"></a><tt class="py-lineno"> 310</tt>  <tt class="py-line">        <tt class="py-comment"># Set up logging</tt> </tt>
+<a name="L311"></a><tt class="py-lineno"> 311</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_logger</tt> <tt class="py-op">=</tt> <tt id="link-152" class="py-name" targets="Class epydoc.gui.GUILogger=epydoc.gui.GUILogger-class.html"><a title="epydoc.gui.GUILogger" class="py-name" href="#" onclick="return doclink('link-152', 'GUILogger', 'link-152');">GUILogger</a></tt><tt class="py-op">(</tt><tt clas [...]
+<a name="L312"></a><tt class="py-lineno"> 312</tt>  <tt class="py-line">        <tt id="link-153" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-153', 'log', 'link-88');">log</a></tt><tt class="py-op">.</tt><tt id="link-154" class="py-name" targets="Function epydoc.log.register_logger()=epydoc.log-module.html#register_logger"><a title="epydoc.log.register_logger" class="py-name" href="#" onclick="return doclink('link-154', 'register_logger', 'link-154');">register_logger</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op [...]
+<a name="L313"></a><tt class="py-lineno"> 313</tt>  <tt class="py-line"> </tt>
+<a name="L314"></a><tt class="py-lineno"> 314</tt>  <tt class="py-line">        <tt class="py-comment"># Open the messages pane by default.</tt> </tt>
+<a name="L315"></a><tt class="py-lineno"> 315</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-155" class="py-name" targets="Method epydoc.gui.EpydocGUI._messages_toggle()=epydoc.gui.EpydocGUI-class.html#_messages_toggle"><a title="epydoc.gui.EpydocGUI._messages_toggle" class="py-name" href="#" onclick="return doclink('link-155', '_messages_toggle', 'link-155');">_messages_toggle</a></tt><tt class="py-op">(</t [...]
+</div><a name="L316"></a><tt class="py-lineno"> 316</tt>  <tt class="py-line"> </tt>
+<a name="L317"></a><tt class="py-lineno"> 317</tt>  <tt class="py-line">        <tt class="py-comment">## For testing options:</tt> </tt>
+<a name="L318"></a><tt class="py-lineno"> 318</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#self._options_toggle()</tt> </tt>
+<a name="L319"></a><tt class="py-lineno"> 319</tt>  <tt class="py-line"><tt class="py-comment"></tt>         </tt>
+<a name="EpydocGUI._init_menubar"></a><div id="EpydocGUI._init_menubar-def"><a name="L320"></a><tt class="py-lineno"> 320</tt> <a class="py-toggle" href="#" id="EpydocGUI._init_menubar-toggle" onclick="return toggle('EpydocGUI._init_menubar');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.gui.EpydocGUI-class.html#_init_menubar">_init_menubar</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-o [...]
+</div><div id="EpydocGUI._init_menubar-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="EpydocGUI._init_menubar-expanded"><a name="L321"></a><tt class="py-lineno"> 321</tt>  <tt class="py-line">        <tt class="py-name">menubar</tt> <tt class="py-op">=</tt> <tt class="py-name">Menu</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_root</tt><tt class="py-op">,</tt> <tt class="py-name">borderwidth</tt><tt cla [...]
+<a name="L322"></a><tt class="py-lineno"> 322</tt>  <tt class="py-line">                       <tt class="py-name">background</tt><tt class="py-op">=</tt><tt id="link-156" class="py-name"><a title="epydoc.gui.BG_COLOR" class="py-name" href="#" onclick="return doclink('link-156', 'BG_COLOR', 'link-2');">BG_COLOR</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L323"></a><tt class="py-lineno"> 323</tt>  <tt class="py-line">                       <tt class="py-name">activebackground</tt><tt class="py-op">=</tt><tt id="link-157" class="py-name"><a title="epydoc.gui.BG_COLOR" class="py-name" href="#" onclick="return doclink('link-157', 'BG_COLOR', 'link-2');">BG_COLOR</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L324"></a><tt class="py-lineno"> 324</tt>  <tt class="py-line">        <tt class="py-name">filemenu</tt> <tt class="py-op">=</tt> <tt class="py-name">Menu</tt><tt class="py-op">(</tt><tt class="py-name">menubar</tt><tt class="py-op">,</tt> <tt class="py-name">tearoff</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+<a name="L325"></a><tt class="py-lineno"> 325</tt>  <tt class="py-line">        <tt class="py-name">filemenu</tt><tt class="py-op">.</tt><tt class="py-name">add_command</tt><tt class="py-op">(</tt><tt id="link-158" class="py-name" targets="Method epydoc.docwriter.latex.LatexWriter.label()=epydoc.docwriter.latex.LatexWriter-class.html#label"><a title="epydoc.docwriter.latex.LatexWriter.label" class="py-name" href="#" onclick="return doclink('link-158', 'label', 'link-158');">label</a></tt [...]
+<a name="L326"></a><tt class="py-lineno"> 326</tt>  <tt class="py-line">                             <tt class="py-name">command</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-159" class="py-name" targets="Method epydoc.gui.EpydocGUI._new()=epydoc.gui.EpydocGUI-class.html#_new"><a title="epydoc.gui.EpydocGUI._new" class="py-name" href="#" onclick="return doclink('link-159', '_new', 'link-159');">_new</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L327"></a><tt class="py-lineno"> 327</tt>  <tt class="py-line">                             <tt class="py-name">accelerator</tt><tt class="py-op">=</tt><tt class="py-string">'Ctrl-n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L328"></a><tt class="py-lineno"> 328</tt>  <tt class="py-line">        <tt class="py-name">filemenu</tt><tt class="py-op">.</tt><tt class="py-name">add_command</tt><tt class="py-op">(</tt><tt id="link-160" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.label" class="py-name" href="#" onclick="return doclink('link-160', 'label', 'link-158');">label</a></tt><tt class="py-op">=</tt><tt class="py-string">'Open Project'</tt><tt class="py-op">,</tt> <tt class="py-name">u [...]
+<a name="L329"></a><tt class="py-lineno"> 329</tt>  <tt class="py-line">                             <tt class="py-name">command</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-161" class="py-name" targets="Method epydoc.gui.EpydocGUI._open()=epydoc.gui.EpydocGUI-class.html#_open"><a title="epydoc.gui.EpydocGUI._open" class="py-name" href="#" onclick="return doclink('link-161', '_open', 'link-161');">_open</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L330"></a><tt class="py-lineno"> 330</tt>  <tt class="py-line">                             <tt class="py-name">accelerator</tt><tt class="py-op">=</tt><tt class="py-string">'Ctrl-o'</tt><tt class="py-op">)</tt> </tt>
+<a name="L331"></a><tt class="py-lineno"> 331</tt>  <tt class="py-line">        <tt class="py-name">filemenu</tt><tt class="py-op">.</tt><tt class="py-name">add_command</tt><tt class="py-op">(</tt><tt id="link-162" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.label" class="py-name" href="#" onclick="return doclink('link-162', 'label', 'link-158');">label</a></tt><tt class="py-op">=</tt><tt class="py-string">'Save Project'</tt><tt class="py-op">,</tt> <tt class="py-name">u [...]
+<a name="L332"></a><tt class="py-lineno"> 332</tt>  <tt class="py-line">                             <tt class="py-name">command</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-163" class="py-name" targets="Method epydoc.gui.EpydocGUI._save()=epydoc.gui.EpydocGUI-class.html#_save"><a title="epydoc.gui.EpydocGUI._save" class="py-name" href="#" onclick="return doclink('link-163', '_save', 'link-163');">_save</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L333"></a><tt class="py-lineno"> 333</tt>  <tt class="py-line">                             <tt class="py-name">accelerator</tt><tt class="py-op">=</tt><tt class="py-string">'Ctrl-s'</tt><tt class="py-op">)</tt> </tt>
+<a name="L334"></a><tt class="py-lineno"> 334</tt>  <tt class="py-line">        <tt class="py-name">filemenu</tt><tt class="py-op">.</tt><tt class="py-name">add_command</tt><tt class="py-op">(</tt><tt id="link-164" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.label" class="py-name" href="#" onclick="return doclink('link-164', 'label', 'link-158');">label</a></tt><tt class="py-op">=</tt><tt class="py-string">'Save As..'</tt><tt class="py-op">,</tt> <tt class="py-name">unde [...]
+<a name="L335"></a><tt class="py-lineno"> 335</tt>  <tt class="py-line">                             <tt class="py-name">command</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-165" class="py-name" targets="Method epydoc.gui.EpydocGUI._saveas()=epydoc.gui.EpydocGUI-class.html#_saveas"><a title="epydoc.gui.EpydocGUI._saveas" class="py-name" href="#" onclick="return doclink('link-165', '_saveas', 'link-165');">_saveas</a></tt><tt class="py-op"> [...]
+<a name="L336"></a><tt class="py-lineno"> 336</tt>  <tt class="py-line">                             <tt class="py-name">accelerator</tt><tt class="py-op">=</tt><tt class="py-string">'Ctrl-a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L337"></a><tt class="py-lineno"> 337</tt>  <tt class="py-line">        <tt class="py-name">filemenu</tt><tt class="py-op">.</tt><tt class="py-name">add_separator</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L338"></a><tt class="py-lineno"> 338</tt>  <tt class="py-line">        <tt class="py-name">filemenu</tt><tt class="py-op">.</tt><tt class="py-name">add_command</tt><tt class="py-op">(</tt><tt id="link-166" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.label" class="py-name" href="#" onclick="return doclink('link-166', 'label', 'link-158');">label</a></tt><tt class="py-op">=</tt><tt class="py-string">'Exit'</tt><tt class="py-op">,</tt> <tt class="py-name">underline [...]
+<a name="L339"></a><tt class="py-lineno"> 339</tt>  <tt class="py-line">                             <tt class="py-name">command</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-167" class="py-name"><a title="epydoc.gui.EpydocGUI.destroy" class="py-name" href="#" onclick="return doclink('link-167', 'destroy', 'link-135');">destroy</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L340"></a><tt class="py-lineno"> 340</tt>  <tt class="py-line">                             <tt class="py-name">accelerator</tt><tt class="py-op">=</tt><tt class="py-string">'Ctrl-x'</tt><tt class="py-op">)</tt> </tt>
+<a name="L341"></a><tt class="py-lineno"> 341</tt>  <tt class="py-line">        <tt class="py-name">menubar</tt><tt class="py-op">.</tt><tt class="py-name">add_cascade</tt><tt class="py-op">(</tt><tt id="link-168" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.label" class="py-name" href="#" onclick="return doclink('link-168', 'label', 'link-158');">label</a></tt><tt class="py-op">=</tt><tt class="py-string">'File'</tt><tt class="py-op">,</tt> <tt class="py-name">underline< [...]
+<a name="L342"></a><tt class="py-lineno"> 342</tt>  <tt class="py-line">        <tt class="py-name">gomenu</tt> <tt class="py-op">=</tt> <tt class="py-name">Menu</tt><tt class="py-op">(</tt><tt class="py-name">menubar</tt><tt class="py-op">,</tt> <tt class="py-name">tearoff</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+<a name="L343"></a><tt class="py-lineno"> 343</tt>  <tt class="py-line">        <tt class="py-name">gomenu</tt><tt class="py-op">.</tt><tt class="py-name">add_command</tt><tt class="py-op">(</tt><tt id="link-169" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.label" class="py-name" href="#" onclick="return doclink('link-169', 'label', 'link-158');">label</a></tt><tt class="py-op">=</tt><tt class="py-string">'Run Epydoc'</tt><tt class="py-op">,</tt>  <tt class="py-name">comm [...]
+<a name="L344"></a><tt class="py-lineno"> 344</tt>  <tt class="py-line">                           <tt class="py-name">underline</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">accelerator</tt><tt class="py-op">=</tt><tt class="py-string">'Alt-g'</tt><tt class="py-op">)</tt> </tt>
+<a name="L345"></a><tt class="py-lineno"> 345</tt>  <tt class="py-line">        <tt class="py-name">menubar</tt><tt class="py-op">.</tt><tt class="py-name">add_cascade</tt><tt class="py-op">(</tt><tt id="link-171" class="py-name"><a title="epydoc.docwriter.latex.LatexWriter.label" class="py-name" href="#" onclick="return doclink('link-171', 'label', 'link-158');">label</a></tt><tt class="py-op">=</tt><tt class="py-string">'Run'</tt><tt class="py-op">,</tt> <tt class="py-name">menu</tt><t [...]
+<a name="L346"></a><tt class="py-lineno"> 346</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_root</tt><tt class="py-op">.</tt><tt class="py-name">config</tt><tt class="py-op">(</tt><tt class="py-name">menu</tt><tt class="py-op">=</tt><tt class="py-name">menubar</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L347"></a><tt class="py-lineno"> 347</tt>  <tt class="py-line">         </tt>
+<a name="EpydocGUI._init_module_list"></a><div id="EpydocGUI._init_module_list-def"><a name="L348"></a><tt class="py-lineno"> 348</tt> <a class="py-toggle" href="#" id="EpydocGUI._init_module_list-toggle" onclick="return toggle('EpydocGUI._init_module_list');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.gui.EpydocGUI-class.html#_init_module_list">_init_module_list</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-o [...]
+</div><div id="EpydocGUI._init_module_list-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="EpydocGUI._init_module_list-expanded"><a name="L349"></a><tt class="py-lineno"> 349</tt>  <tt class="py-line">        <tt class="py-name">mframe1</tt> <tt class="py-op">=</tt> <tt class="py-name">Frame</tt><tt class="py-op">(</tt><tt class="py-name">mainframe</tt><tt class="py-op">,</tt> <tt class="py-name">relief</tt><tt class="py-op">=</tt><tt class="py-string">'groov [...]
+<a name="L350"></a><tt class="py-lineno"> 350</tt>  <tt class="py-line">                        <tt class="py-name">background</tt><tt class="py-op">=</tt><tt id="link-172" class="py-name"><a title="epydoc.gui.BG_COLOR" class="py-name" href="#" onclick="return doclink('link-172', 'BG_COLOR', 'link-2');">BG_COLOR</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L351"></a><tt class="py-lineno"> 351</tt>  <tt class="py-line">        <tt class="py-name">mframe1</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt><tt class="py-op">(</tt><tt class="py-name">side</tt><tt class="py-op">=</tt><tt class="py-string">"top"</tt><tt class="py-op">,</tt> <tt class="py-name">fill</tt><tt class="py-op">=</tt><tt class="py-string">'both'</tt><tt class="py-op">,</tt> <tt class="py-name">expand</tt><tt class="py-op">=</tt><tt class="py-number">1</tt [...]
+<a name="L352"></a><tt class="py-lineno"> 352</tt>  <tt class="py-line">        <tt class="py-name">l</tt> <tt class="py-op">=</tt> <tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">mframe1</tt><tt class="py-op">,</tt> <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Modules to document:"</tt><tt class="py-op">,</tt> </tt>
+<a name="L353"></a><tt class="py-lineno"> 353</tt>  <tt class="py-line">                  <tt class="py-name">justify</tt><tt class="py-op">=</tt><tt class="py-string">'left'</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt id="link-173" class="py-name"><a title="epydoc.gui.COLOR_CONFIG" class="py-name" href="#" onclick="return doclink('link-173', 'COLOR_CONFIG', 'link-13');">COLOR_CONFIG</a></tt><tt class="py-op">)</tt>  </tt>
+<a name="L354"></a><tt class="py-lineno"> 354</tt>  <tt class="py-line">        <tt class="py-name">l</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt><tt class="py-op">(</tt><tt class="py-name">side</tt><tt class="py-op">=</tt><tt class="py-string">'top'</tt><tt class="py-op">,</tt> <tt class="py-name">fill</tt><tt class="py-op">=</tt><tt class="py-string">'none'</tt><tt class="py-op">,</tt> <tt class="py-name">anchor</tt><tt class="py-op">=</tt><tt class="py-string">'nw'</tt><t [...]
+<a name="L355"></a><tt class="py-lineno"> 355</tt>  <tt class="py-line">        <tt class="py-name">mframe2</tt> <tt class="py-op">=</tt> <tt class="py-name">Frame</tt><tt class="py-op">(</tt><tt class="py-name">mframe1</tt><tt class="py-op">,</tt> <tt class="py-name">background</tt><tt class="py-op">=</tt><tt id="link-174" class="py-name"><a title="epydoc.gui.BG_COLOR" class="py-name" href="#" onclick="return doclink('link-174', 'BG_COLOR', 'link-2');">BG_COLOR</a></tt><tt class="py-op" [...]
+<a name="L356"></a><tt class="py-lineno"> 356</tt>  <tt class="py-line">        <tt class="py-name">mframe2</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt><tt class="py-op">(</tt><tt class="py-name">side</tt><tt class="py-op">=</tt><tt class="py-string">"top"</tt><tt class="py-op">,</tt> <tt class="py-name">fill</tt><tt class="py-op">=</tt><tt class="py-string">'both'</tt><tt class="py-op">,</tt> <tt class="py-name">expand</tt><tt class="py-op">=</tt><tt class="py-number">1</tt [...]
+<a name="L357"></a><tt class="py-lineno"> 357</tt>  <tt class="py-line">        <tt class="py-name">mframe3</tt> <tt class="py-op">=</tt> <tt class="py-name">Frame</tt><tt class="py-op">(</tt><tt class="py-name">mframe1</tt><tt class="py-op">,</tt> <tt class="py-name">background</tt><tt class="py-op">=</tt><tt id="link-175" class="py-name"><a title="epydoc.gui.BG_COLOR" class="py-name" href="#" onclick="return doclink('link-175', 'BG_COLOR', 'link-2');">BG_COLOR</a></tt><tt class="py-op" [...]
+<a name="L358"></a><tt class="py-lineno"> 358</tt>  <tt class="py-line">        <tt class="py-name">mframe3</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt><tt class="py-op">(</tt><tt class="py-name">side</tt><tt class="py-op">=</tt><tt class="py-string">"bottom"</tt><tt class="py-op">,</tt> <tt class="py-name">fill</tt><tt class="py-op">=</tt><tt class="py-string">'x'</tt><tt class="py-op">,</tt> <tt class="py-name">expand</tt><tt class="py-op">=</tt><tt class="py-number">0</tt [...]
+<a name="L359"></a><tt class="py-lineno"> 359</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_module_list</tt> <tt class="py-op">=</tt> <tt class="py-name">Listbox</tt><tt class="py-op">(</tt><tt class="py-name">mframe2</tt><tt class="py-op">,</tt> <tt class="py-name">width</tt><tt class="py-op">=</tt><tt class="py-number">80</tt><tt class="py-op">,</tt> <tt class="py-name">height</tt><tt class="py-op">=</tt><tt class="py-number [...]
+<a name="L360"></a><tt class="py-lineno"> 360</tt>  <tt class="py-line">                                    <tt class="py-name">selectmode</tt><tt class="py-op">=</tt><tt class="py-string">'multiple'</tt><tt class="py-op">,</tt> </tt>
+<a name="L361"></a><tt class="py-lineno"> 361</tt>  <tt class="py-line">                                    <tt class="py-op">**</tt><tt id="link-176" class="py-name"><a title="epydoc.gui.LISTBOX_CONFIG" class="py-name" href="#" onclick="return doclink('link-176', 'LISTBOX_CONFIG', 'link-30');">LISTBOX_CONFIG</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L362"></a><tt class="py-lineno"> 362</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_module_list</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt><tt class="py-op">(</tt><tt class="py-name">side</tt><tt class="py-op">=</tt><tt class="py-string">"left"</tt><tt class="py-op">,</tt> <tt class="py-name">fill</tt><tt class="py-op">=</tt><tt class="py-string">'both'</tt><tt class="py-op">,</tt> <tt class="py-name">exp [...]
+<a name="L363"></a><tt class="py-lineno"> 363</tt>  <tt class="py-line">        <tt class="py-name">sb</tt> <tt class="py-op">=</tt> <tt class="py-name">Scrollbar</tt><tt class="py-op">(</tt><tt class="py-name">mframe2</tt><tt class="py-op">,</tt> <tt class="py-name">orient</tt><tt class="py-op">=</tt><tt class="py-string">'vertical'</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt id="link-177" class="py-name"><a title="epydoc.gui.SB_CONFIG" class="py-name" href="#" onclick="ret [...]
+<a name="L364"></a><tt class="py-lineno"> 364</tt>  <tt class="py-line">        <tt class="py-name">sb</tt><tt class="py-op">[</tt><tt class="py-string">'command'</tt><tt class="py-op">]</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_module_list</tt><tt class="py-op">.</tt><tt class="py-name">yview</tt> </tt>
+<a name="L365"></a><tt class="py-lineno"> 365</tt>  <tt class="py-line">        <tt class="py-name">sb</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt><tt class="py-op">(</tt><tt class="py-name">side</tt><tt class="py-op">=</tt><tt class="py-string">'right'</tt><tt class="py-op">,</tt> <tt class="py-name">fill</tt><tt class="py-op">=</tt><tt class="py-string">'y'</tt><tt class="py-op">)</tt> </tt>
+<a name="L366"></a><tt class="py-lineno"> 366</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_module_list</tt><tt class="py-op">.</tt><tt class="py-name">config</tt><tt class="py-op">(</tt><tt class="py-name">yscrollcommand</tt><tt class="py-op">=</tt><tt class="py-name">sb</tt><tt class="py-op">.</tt><tt class="py-name">set</tt><tt class="py-op">)</tt> </tt>
+<a name="L367"></a><tt class="py-lineno"> 367</tt>  <tt class="py-line">        <tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">mframe3</tt><tt class="py-op">,</tt> <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Add:"</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt id="link-178" class="py-name"><a title="epydoc.gui.COLOR_CONFIG" class="py-name" href="#" onclick="return doclink('link-178', 'COLOR_CONFIG', 'link-13');">COLOR_ [...]
+<a name="L368"></a><tt class="py-lineno"> 368</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_module_entry</tt> <tt class="py-op">=</tt> <tt class="py-name">Entry</tt><tt class="py-op">(</tt><tt class="py-name">mframe3</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt id="link-179" class="py-name"><a title="epydoc.gui.ENTRY_CONFIG" class="py-name" href="#" onclick="return doclink('link-179', 'ENTRY_CONFIG', 'link-18');"> [...]
+<a name="L369"></a><tt class="py-lineno"> 369</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_module_entry</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt><tt class="py-op">(</tt><tt class="py-name">side</tt><tt class="py-op">=</tt><tt class="py-string">'left'</tt><tt class="py-op">,</tt> <tt class="py-name">fill</tt><tt class="py-op">=</tt><tt class="py-string">'x'</tt><tt class="py-op">,</tt> <tt class="py-name">expan [...]
+<a name="L370"></a><tt class="py-lineno"> 370</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_module_entry</tt><tt class="py-op">.</tt><tt class="py-name">bind</tt><tt class="py-op">(</tt><tt class="py-string">'<Return>'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-180" class="py-name" targets="Method epydoc.gui.EpydocGUI._entry_module()=epydoc.gui.EpydocGUI-class.html#_ent [...]
+<a name="L371"></a><tt class="py-lineno"> 371</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_module_delete</tt> <tt class="py-op">=</tt> <tt class="py-name">Button</tt><tt class="py-op">(</tt><tt class="py-name">mframe3</tt><tt class="py-op">,</tt> <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Remove"</tt><tt class="py-op">,</tt> </tt>
+<a name="L372"></a><tt class="py-lineno"> 372</tt>  <tt class="py-line">                                     <tt class="py-name">command</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-181" class="py-name" targets="Method epydoc.gui.EpydocGUI._delete_module()=epydoc.gui.EpydocGUI-class.html#_delete_module"><a title="epydoc.gui.EpydocGUI._delete_module" class="py-name" href="#" onclick="return doclink('link-181', '_delete_module', 'link-181'); [...]
+<a name="L373"></a><tt class="py-lineno"> 373</tt>  <tt class="py-line">                                     <tt class="py-op">**</tt><tt id="link-182" class="py-name"><a title="epydoc.gui.BUTTON_CONFIG" class="py-name" href="#" onclick="return doclink('link-182', 'BUTTON_CONFIG', 'link-37');">BUTTON_CONFIG</a></tt><tt class="py-op">)</tt>  </tt>
+<a name="L374"></a><tt class="py-lineno"> 374</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_module_delete</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt><tt class="py-op">(</tt><tt class="py-name">side</tt><tt class="py-op">=</tt><tt class="py-string">'right'</tt><tt class="py-op">,</tt> <tt class="py-name">expand</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">pad [...]
+<a name="L375"></a><tt class="py-lineno"> 375</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_module_browse</tt> <tt class="py-op">=</tt> <tt class="py-name">Button</tt><tt class="py-op">(</tt><tt class="py-name">mframe3</tt><tt class="py-op">,</tt> <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Browse"</tt><tt class="py-op">,</tt> </tt>
+<a name="L376"></a><tt class="py-lineno"> 376</tt>  <tt class="py-line">                                     <tt class="py-name">command</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-183" class="py-name" targets="Method epydoc.gui.EpydocGUI._browse_module()=epydoc.gui.EpydocGUI-class.html#_browse_module"><a title="epydoc.gui.EpydocGUI._browse_module" class="py-name" href="#" onclick="return doclink('link-183', '_browse_module', 'link-183'); [...]
+<a name="L377"></a><tt class="py-lineno"> 377</tt>  <tt class="py-line">                                     <tt class="py-op">**</tt><tt id="link-184" class="py-name"><a title="epydoc.gui.BUTTON_CONFIG" class="py-name" href="#" onclick="return doclink('link-184', 'BUTTON_CONFIG', 'link-37');">BUTTON_CONFIG</a></tt><tt class="py-op">)</tt>  </tt>
+<a name="L378"></a><tt class="py-lineno"> 378</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_module_browse</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt><tt class="py-op">(</tt><tt class="py-name">side</tt><tt class="py-op">=</tt><tt class="py-string">'right'</tt><tt class="py-op">,</tt> <tt class="py-name">expand</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">pad [...]
+</div><a name="L379"></a><tt class="py-lineno"> 379</tt>  <tt class="py-line">         </tt>
+<a name="EpydocGUI._init_progress_bar"></a><div id="EpydocGUI._init_progress_bar-def"><a name="L380"></a><tt class="py-lineno"> 380</tt> <a class="py-toggle" href="#" id="EpydocGUI._init_progress_bar-toggle" onclick="return toggle('EpydocGUI._init_progress_bar');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.gui.EpydocGUI-class.html#_init_progress_bar">_init_progress_bar</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class [...]
+</div><div id="EpydocGUI._init_progress_bar-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="EpydocGUI._init_progress_bar-expanded"><a name="L381"></a><tt class="py-lineno"> 381</tt>  <tt class="py-line">        <tt class="py-name">pframe1</tt> <tt class="py-op">=</tt> <tt class="py-name">Frame</tt><tt class="py-op">(</tt><tt class="py-name">mainframe</tt><tt class="py-op">,</tt> <tt class="py-name">background</tt><tt class="py-op">=</tt><tt id="link-185" clas [...]
+<a name="L382"></a><tt class="py-lineno"> 382</tt>  <tt class="py-line">        <tt class="py-name">pframe1</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt><tt class="py-op">(</tt><tt class="py-name">side</tt><tt class="py-op">=</tt><tt class="py-string">"bottom"</tt><tt class="py-op">,</tt> <tt class="py-name">fill</tt><tt class="py-op">=</tt><tt class="py-string">'x'</tt><tt class="py-op">,</tt> <tt class="py-name">expand</tt><tt class="py-op">=</tt><tt class="py-number">0</tt [...]
+<a name="L383"></a><tt class="py-lineno"> 383</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_go_button</tt> <tt class="py-op">=</tt> <tt class="py-name">Button</tt><tt class="py-op">(</tt><tt class="py-name">pframe1</tt><tt class="py-op">,</tt> <tt class="py-name">width</tt><tt class="py-op">=</tt><tt class="py-number">4</tt><tt class="py-op">,</tt> <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">'Sta [...]
+<a name="L384"></a><tt class="py-lineno"> 384</tt>  <tt class="py-line">                                 <tt class="py-name">underline</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">command</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-186" class="py-name" targets="Method epydoc.gui.EpydocGUI._go()=epydoc.gui.EpydocGUI-class.html#_go"><a title="epydoc.gui.EpydocGUI._go" class="py-name" h [...]
+<a name="L385"></a><tt class="py-lineno"> 385</tt>  <tt class="py-line">                                 <tt class="py-op">**</tt><tt id="link-187" class="py-name"><a title="epydoc.gui.BUTTON_CONFIG" class="py-name" href="#" onclick="return doclink('link-187', 'BUTTON_CONFIG', 'link-37');">BUTTON_CONFIG</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L386"></a><tt class="py-lineno"> 386</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_go_button</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt><tt class="py-op">(</tt><tt class="py-name">side</tt><tt class="py-op">=</tt><tt class="py-string">'left'</tt><tt class="py-op">,</tt> <tt class="py-name">padx</tt><tt class="py-op">=</tt><tt class="py-number">4</tt><tt class="py-op">)</tt> </tt>
+<a name="L387"></a><tt class="py-lineno"> 387</tt>  <tt class="py-line">        <tt class="py-name">pframe2</tt> <tt class="py-op">=</tt> <tt class="py-name">Frame</tt><tt class="py-op">(</tt><tt class="py-name">pframe1</tt><tt class="py-op">,</tt> <tt class="py-name">relief</tt><tt class="py-op">=</tt><tt class="py-string">'groove'</tt><tt class="py-op">,</tt> <tt class="py-name">border</tt><tt class="py-op">=</tt><tt class="py-number">2</tt><tt class="py-op">,</tt> </tt>
+<a name="L388"></a><tt class="py-lineno"> 388</tt>  <tt class="py-line">                        <tt class="py-name">background</tt><tt class="py-op">=</tt><tt id="link-188" class="py-name"><a title="epydoc.gui.BG_COLOR" class="py-name" href="#" onclick="return doclink('link-188', 'BG_COLOR', 'link-2');">BG_COLOR</a></tt><tt class="py-op">)</tt>  </tt>
+<a name="L389"></a><tt class="py-lineno"> 389</tt>  <tt class="py-line">        <tt class="py-name">pframe2</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt><tt class="py-op">(</tt><tt class="py-name">side</tt><tt class="py-op">=</tt><tt class="py-string">"top"</tt><tt class="py-op">,</tt> <tt class="py-name">fill</tt><tt class="py-op">=</tt><tt class="py-string">'x'</tt><tt class="py-op">,</tt> <tt class="py-name">expand</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><t [...]
+<a name="L390"></a><tt class="py-lineno"> 390</tt>  <tt class="py-line">        <tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">pframe2</tt><tt class="py-op">,</tt> <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">'Progress:'</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt id="link-189" class="py-name"><a title="epydoc.gui.COLOR_CONFIG" class="py-name" href="#" onclick="return doclink('link-189', 'COLOR_CONFIG', 'link-13');">C [...]
+<a name="L391"></a><tt class="py-lineno"> 391</tt>  <tt class="py-line">        <tt class="py-name">H</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_H</tt> <tt class="py-op">=</tt> <tt id="link-190" class="py-name"><a title="epydoc.gui.PROGRESS_HEIGHT" class="py-name" href="#" onclick="return doclink('link-190', 'PROGRESS_HEIGHT', 'link-64');">PROGRESS_HEIGHT</a></tt> </tt>
+<a name="L392"></a><tt class="py-lineno"> 392</tt>  <tt class="py-line">        <tt class="py-name">W</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_W</tt> <tt class="py-op">=</tt> <tt id="link-191" class="py-name"><a title="epydoc.gui.PROGRESS_WIDTH" class="py-name" href="#" onclick="return doclink('link-191', 'PROGRESS_WIDTH', 'link-65');">PROGRESS_WIDTH</a></tt> </tt>
+<a name="L393"></a><tt class="py-lineno"> 393</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_canvas</tt> <tt class="py-op">=</tt> <tt class="py-name">Canvas</tt><tt class="py-op">(</tt><tt class="py-name">pframe2</tt><tt class="py-op">,</tt> <tt class="py-name">height</tt><tt class="py-op">=</tt><tt class="py-name">H</tt><tt class="py-op">+</tt><tt id="link-192" class="py-name [...]
+<a name="L394"></a><tt class="py-lineno"> 394</tt>  <tt class="py-line">                                  <tt class="py-name">background</tt><tt class="py-op">=</tt><tt id="link-194" class="py-name"><a title="epydoc.gui.PROGRESS_BG" class="py-name" href="#" onclick="return doclink('link-194', 'PROGRESS_BG', 'link-66');">PROGRESS_BG</a></tt><tt class="py-op">,</tt> <tt class="py-name">border</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> </tt>
+<a name="L395"></a><tt class="py-lineno"> 395</tt>  <tt class="py-line">                                  <tt class="py-name">selectborderwidth</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">relief</tt><tt class="py-op">=</tt><tt class="py-string">'sunken'</tt><tt class="py-op">,</tt> </tt>
+<a name="L396"></a><tt class="py-lineno"> 396</tt>  <tt class="py-line">                                  <tt class="py-name">insertwidth</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">insertborderwidth</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> </tt>
+<a name="L397"></a><tt class="py-lineno"> 397</tt>  <tt class="py-line">                                  <tt class="py-name">highlightbackground</tt><tt class="py-op">=</tt><tt id="link-195" class="py-name"><a title="epydoc.gui.BG_COLOR" class="py-name" href="#" onclick="return doclink('link-195', 'BG_COLOR', 'link-2');">BG_COLOR</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L398"></a><tt class="py-lineno"> 398</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_canvas</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt><tt class="py-op">(</tt><tt class="py-name">side</tt><tt class="py-op">=</tt><tt class="py-string">'left'</tt><tt class="py-op">,</tt> <tt class="py-name">fill</tt><tt class="py-op">=</tt><tt class="py-string">'x'</tt><tt class="py-op">,</tt> <tt class="py-name">expand</tt> [...]
+<a name="L399"></a><tt class="py-lineno"> 399</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_r2</tt> <tt class="py-op">=</tt> <tt class="py-name">c</tt><tt class="py-op">.</tt><tt class="py-name">create_rectangle</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-number">0</tt><tt cl [...]
+<a name="L400"></a><tt class="py-lineno"> 400</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_r3</tt> <tt class="py-op">=</tt> <tt class="py-name">c</tt><tt class="py-op">.</tt><tt class="py-name">create_rectangle</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-number">0</tt><tt cl [...]
+<a name="L401"></a><tt class="py-lineno"> 401</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_r1</tt> <tt class="py-op">=</tt> <tt class="py-name">c</tt><tt class="py-op">.</tt><tt class="py-name">create_rectangle</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-number">0</tt><tt cl [...]
+<a name="L402"></a><tt class="py-lineno"> 402</tt>  <tt class="py-line">                                      <tt class="py-name">outline</tt><tt class="py-op">=</tt><tt class="py-string">''</tt><tt class="py-op">)</tt> </tt>
+<a name="L403"></a><tt class="py-lineno"> 403</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_canvas</tt><tt class="py-op">.</tt><tt class="py-name">bind</tt><tt class="py-op">(</tt><tt class="py-string">'<Configure>'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-199" class="py-name" targets="Method epydoc.gui.EpydocGUI._configure()=epydoc.gui.EpydocGUI-class.html#_configure [...]
+</div><a name="L404"></a><tt class="py-lineno"> 404</tt>  <tt class="py-line"> </tt>
+<a name="EpydocGUI._init_messages"></a><div id="EpydocGUI._init_messages-def"><a name="L405"></a><tt class="py-lineno"> 405</tt> <a class="py-toggle" href="#" id="EpydocGUI._init_messages-toggle" onclick="return toggle('EpydocGUI._init_messages');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.gui.EpydocGUI-class.html#_init_messages">_init_messages</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt clas [...]
+</div><div id="EpydocGUI._init_messages-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="EpydocGUI._init_messages-expanded"><a name="L406"></a><tt class="py-lineno"> 406</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_downImage</tt> <tt class="py-op">=</tt> <tt class="py-name">PhotoImage</tt><tt class="py-op">(</tt><tt class="py-name">master</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt [...]
+<a name="L407"></a><tt class="py-lineno"> 407</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_upImage</tt> <tt class="py-op">=</tt> <tt class="py-name">PhotoImage</tt><tt class="py-op">(</tt><tt class="py-name">master</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_root</tt><tt class="py-op">,</tt> <tt class="py-name">data</tt><tt class="py-op">=</tt><tt id="link-201" class=" [...]
+<a name="L408"></a><tt class="py-lineno"> 408</tt>  <tt class="py-line"> </tt>
+<a name="L409"></a><tt class="py-lineno"> 409</tt>  <tt class="py-line">        <tt class="py-comment"># Set up the messages control frame</tt> </tt>
+<a name="L410"></a><tt class="py-lineno"> 410</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">b1</tt> <tt class="py-op">=</tt> <tt class="py-name">Button</tt><tt class="py-op">(</tt><tt class="py-name">ctrlframe</tt><tt class="py-op">,</tt> <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Messages"</tt><tt class="py-op">,</tt> <tt class="py-name">justify</tt><tt class="py-op">=</tt><tt class="py-string">'center'</tt><tt class=" [...]
+<a name="L411"></a><tt class="py-lineno"> 411</tt>  <tt class="py-line">                    <tt class="py-name">command</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-202" class="py-name"><a title="epydoc.gui.EpydocGUI._messages_toggle" class="py-name" href="#" onclick="return doclink('link-202', '_messages_toggle', 'link-155');">_messages_toggle</a></tt><tt class="py-op">,</tt> <tt class="py-name">underline</tt><tt class="py-op">=</tt><tt c [...]
+<a name="L412"></a><tt class="py-lineno"> 412</tt>  <tt class="py-line">                    <tt class="py-name">highlightthickness</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">activebackground</tt><tt class="py-op">=</tt><tt id="link-203" class="py-name"><a title="epydoc.gui.BG_COLOR" class="py-name" href="#" onclick="return doclink('link-203', 'BG_COLOR', 'link-2');">BG_COLOR</a></tt><tt class="py-op">,</tt>  </tt>
+<a name="L413"></a><tt class="py-lineno"> 413</tt>  <tt class="py-line">                    <tt class="py-name">border</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">relief</tt><tt class="py-op">=</tt><tt class="py-string">'flat'</tt><tt class="py-op">,</tt> <tt class="py-name">padx</tt><tt class="py-op">=</tt><tt class="py-number">2</tt><tt class="py-op">,</tt> <tt class="py-name">pady</tt><tt class="py-op">=</tt><tt class="py-number [...]
+<a name="L414"></a><tt class="py-lineno"> 414</tt>  <tt class="py-line">        <tt class="py-name">b2</tt> <tt class="py-op">=</tt> <tt class="py-name">Button</tt><tt class="py-op">(</tt><tt class="py-name">ctrlframe</tt><tt class="py-op">,</tt> <tt class="py-name">image</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_downImage</tt><tt class="py-op">,</tt> <tt class="py-name">relief</tt><tt class="py-op">=</tt><tt class="py-string">' [...]
+<a name="L415"></a><tt class="py-lineno"> 415</tt>  <tt class="py-line">                    <tt class="py-name">border</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">command</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-205" class="py-name"><a title="epydoc.gui.EpydocGUI._messages_toggle" class="py-name" href="#" onclick="return doclink('link-205', '_messages_toggle', 'link-155');">_mess [...]
+<a name="L416"></a><tt class="py-lineno"> 416</tt>  <tt class="py-line">                    <tt class="py-name">activebackground</tt><tt class="py-op">=</tt><tt id="link-206" class="py-name"><a title="epydoc.gui.BG_COLOR" class="py-name" href="#" onclick="return doclink('link-206', 'BG_COLOR', 'link-2');">BG_COLOR</a></tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt id="link-207" class="py-name"><a title="epydoc.gui.COLOR_CONFIG" class="py-name" href="#" onclick="return doclink( [...]
+<a name="L417"></a><tt class="py-lineno"> 417</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_message_button</tt> <tt class="py-op">=</tt> <tt class="py-name">b2</tt> </tt>
+<a name="L418"></a><tt class="py-lineno"> 418</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_messages_visible</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L419"></a><tt class="py-lineno"> 419</tt>  <tt class="py-line">        <tt class="py-name">b2</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt><tt class="py-op">(</tt><tt class="py-name">side</tt><tt class="py-op">=</tt><tt class="py-string">"left"</tt><tt class="py-op">)</tt> </tt>
+<a name="L420"></a><tt class="py-lineno"> 420</tt>  <tt class="py-line">        <tt class="py-name">b1</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt><tt class="py-op">(</tt><tt class="py-name">side</tt><tt class="py-op">=</tt><tt class="py-string">"left"</tt><tt class="py-op">)</tt> </tt>
+<a name="L421"></a><tt class="py-lineno"> 421</tt>  <tt class="py-line"> </tt>
+<a name="L422"></a><tt class="py-lineno"> 422</tt>  <tt class="py-line">        <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">Frame</tt><tt class="py-op">(</tt><tt class="py-name">msgsframe</tt><tt class="py-op">,</tt> <tt class="py-name">background</tt><tt class="py-op">=</tt><tt id="link-208" class="py-name"><a title="epydoc.gui.BG_COLOR" class="py-name" href="#" onclick="return doclink('link-208', 'BG_COLOR', 'link-2');">BG_COLOR</a></tt><tt class="py-op">)</ [...]
+<a name="L423"></a><tt class="py-lineno"> 423</tt>  <tt class="py-line">        <tt class="py-name">f</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt><tt class="py-op">(</tt><tt class="py-name">side</tt><tt class="py-op">=</tt><tt class="py-string">'top'</tt><tt class="py-op">,</tt> <tt class="py-name">expand</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-name">fill</tt><tt class="py-op">=</tt><tt class="py-string">'both'</tt><tt c [...]
+<a name="L424"></a><tt class="py-lineno"> 424</tt>  <tt class="py-line">        <tt class="py-name">messages</tt> <tt class="py-op">=</tt> <tt class="py-name">Text</tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">,</tt> <tt class="py-name">width</tt><tt class="py-op">=</tt><tt class="py-number">80</tt><tt class="py-op">,</tt> <tt class="py-name">height</tt><tt class="py-op">=</tt><tt class="py-number">10</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt id= [...]
+<a name="L425"></a><tt class="py-lineno"> 425</tt>  <tt class="py-line">        <tt class="py-name">messages</tt><tt class="py-op">[</tt><tt class="py-string">'state'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">'disabled'</tt> </tt>
+<a name="L426"></a><tt class="py-lineno"> 426</tt>  <tt class="py-line">        <tt class="py-name">messages</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt><tt class="py-op">(</tt><tt class="py-name">fill</tt><tt class="py-op">=</tt><tt class="py-string">'both'</tt><tt class="py-op">,</tt> <tt class="py-name">expand</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-name">side</tt><tt class="py-op">=</tt><tt class="py-string">'left'</ [...]
+<a name="L427"></a><tt class="py-lineno"> 427</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_messages</tt> <tt class="py-op">=</tt> <tt class="py-name">messages</tt> </tt>
+<a name="L428"></a><tt class="py-lineno"> 428</tt>  <tt class="py-line"> </tt>
+<a name="L429"></a><tt class="py-lineno"> 429</tt>  <tt class="py-line">        <tt class="py-comment"># Add a scrollbar</tt> </tt>
+<a name="L430"></a><tt class="py-lineno"> 430</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">sb</tt> <tt class="py-op">=</tt> <tt class="py-name">Scrollbar</tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">,</tt> <tt class="py-name">orient</tt><tt class="py-op">=</tt><tt class="py-string">'vertical'</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt id="link-210" class="py-name"><a title="epydoc.gui.SB_CONFIG" class="py-name [...]
+<a name="L431"></a><tt class="py-lineno"> 431</tt>  <tt class="py-line">        <tt class="py-name">sb</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt><tt class="py-op">(</tt><tt class="py-name">fill</tt><tt class="py-op">=</tt><tt class="py-string">'y'</tt><tt class="py-op">,</tt> <tt class="py-name">side</tt><tt class="py-op">=</tt><tt class="py-string">'right'</tt><tt class="py-op">)</tt> </tt>
+<a name="L432"></a><tt class="py-lineno"> 432</tt>  <tt class="py-line">        <tt class="py-name">sb</tt><tt class="py-op">[</tt><tt class="py-string">'command'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">messages</tt><tt class="py-op">.</tt><tt class="py-name">yview</tt> </tt>
+<a name="L433"></a><tt class="py-lineno"> 433</tt>  <tt class="py-line">        <tt class="py-name">messages</tt><tt class="py-op">[</tt><tt class="py-string">'yscrollcommand'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">sb</tt><tt class="py-op">.</tt><tt class="py-name">set</tt> </tt>
+<a name="L434"></a><tt class="py-lineno"> 434</tt>  <tt class="py-line"> </tt>
+<a name="L435"></a><tt class="py-lineno"> 435</tt>  <tt class="py-line">        <tt class="py-comment"># Set up some colorization tags</tt> </tt>
+<a name="L436"></a><tt class="py-lineno"> 436</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">messages</tt><tt class="py-op">.</tt><tt class="py-name">tag_config</tt><tt class="py-op">(</tt><tt class="py-string">'error'</tt><tt class="py-op">,</tt> <tt class="py-name">foreground</tt><tt class="py-op">=</tt><tt id="link-211" class="py-name"><a title="epydoc.gui.ERROR_COLOR" class="py-name" href="#" onclick="return doclink('link-211', 'ERROR_COLOR', 'link- [...]
+<a name="L437"></a><tt class="py-lineno"> 437</tt>  <tt class="py-line">        <tt class="py-name">messages</tt><tt class="py-op">.</tt><tt class="py-name">tag_config</tt><tt class="py-op">(</tt><tt class="py-string">'warning'</tt><tt class="py-op">,</tt> <tt class="py-name">foreground</tt><tt class="py-op">=</tt><tt id="link-212" class="py-name"><a title="epydoc.gui.WARNING_COLOR" class="py-name" href="#" onclick="return doclink('link-212', 'WARNING_COLOR', 'link-11');">WARNING_COLOR</ [...]
+<a name="L438"></a><tt class="py-lineno"> 438</tt>  <tt class="py-line">        <tt class="py-name">messages</tt><tt class="py-op">.</tt><tt class="py-name">tag_config</tt><tt class="py-op">(</tt><tt class="py-string">'guierror'</tt><tt class="py-op">,</tt> <tt class="py-name">foreground</tt><tt class="py-op">=</tt><tt id="link-213" class="py-name"><a title="epydoc.gui.GUIERROR_COLOR" class="py-name" href="#" onclick="return doclink('link-213', 'GUIERROR_COLOR', 'link-10');">GUIERROR_COL [...]
+<a name="L439"></a><tt class="py-lineno"> 439</tt>  <tt class="py-line">        <tt class="py-name">messages</tt><tt class="py-op">.</tt><tt class="py-name">tag_config</tt><tt class="py-op">(</tt><tt class="py-string">'message'</tt><tt class="py-op">,</tt> <tt class="py-name">foreground</tt><tt class="py-op">=</tt><tt id="link-214" class="py-name"><a title="epydoc.gui.MESSAGE_COLOR" class="py-name" href="#" onclick="return doclink('link-214', 'MESSAGE_COLOR', 'link-8');">MESSAGE_COLOR</a [...]
+<a name="L440"></a><tt class="py-lineno"> 440</tt>  <tt class="py-line">        <tt class="py-name">messages</tt><tt class="py-op">.</tt><tt class="py-name">tag_config</tt><tt class="py-op">(</tt><tt class="py-string">'header'</tt><tt class="py-op">,</tt> <tt class="py-name">foreground</tt><tt class="py-op">=</tt><tt id="link-215" class="py-name"><a title="epydoc.gui.HEADER_COLOR" class="py-name" href="#" onclick="return doclink('link-215', 'HEADER_COLOR', 'link-12');">HEADER_COLOR</a></ [...]
+<a name="L441"></a><tt class="py-lineno"> 441</tt>  <tt class="py-line">        <tt class="py-name">messages</tt><tt class="py-op">.</tt><tt class="py-name">tag_config</tt><tt class="py-op">(</tt><tt class="py-string">'uline'</tt><tt class="py-op">,</tt> <tt class="py-name">underline</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L442"></a><tt class="py-lineno"> 442</tt>  <tt class="py-line"> </tt>
+<a name="L443"></a><tt class="py-lineno"> 443</tt>  <tt class="py-line">        <tt class="py-comment"># Keep track of tag state..</tt> </tt>
+<a name="L444"></a><tt class="py-lineno"> 444</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_in_header</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L445"></a><tt class="py-lineno"> 445</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_last_tag</tt> <tt class="py-op">=</tt> <tt class="py-string">'error'</tt> </tt>
+<a name="L446"></a><tt class="py-lineno"> 446</tt>  <tt class="py-line"> </tt>
+<a name="L447"></a><tt class="py-lineno"> 447</tt>  <tt class="py-line">        <tt class="py-comment"># Add some buttons</tt> </tt>
+<a name="L448"></a><tt class="py-lineno"> 448</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">buttons</tt> <tt class="py-op">=</tt> <tt class="py-name">Frame</tt><tt class="py-op">(</tt><tt class="py-name">msgsframe</tt><tt class="py-op">,</tt> <tt class="py-name">background</tt><tt class="py-op">=</tt><tt id="link-216" class="py-name"><a title="epydoc.gui.BG_COLOR" class="py-name" href="#" onclick="return doclink('link-216', 'BG_COLOR', 'link-2');">BG_C [...]
+<a name="L449"></a><tt class="py-lineno"> 449</tt>  <tt class="py-line">        <tt class="py-name">buttons</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt><tt class="py-op">(</tt><tt class="py-name">side</tt><tt class="py-op">=</tt><tt class="py-string">'bottom'</tt><tt class="py-op">,</tt> <tt class="py-name">fill</tt><tt class="py-op">=</tt><tt class="py-string">'x'</tt><tt class="py-op">)</tt> </tt>
+<a name="L450"></a><tt class="py-lineno"> 450</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_show_errors</tt> <tt class="py-op">=</tt> <tt class="py-name">IntVar</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_root</tt><tt class="py-op">)</tt> </tt>
+<a name="L451"></a><tt class="py-lineno"> 451</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_show_errors</tt><tt class="py-op">.</tt><tt class="py-name">set</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L452"></a><tt class="py-lineno"> 452</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_show_warnings</tt> <tt class="py-op">=</tt> <tt class="py-name">IntVar</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_root</tt><tt class="py-op">)</tt> </tt>
+<a name="L453"></a><tt class="py-lineno"> 453</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_show_warnings</tt><tt class="py-op">.</tt><tt class="py-name">set</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L454"></a><tt class="py-lineno"> 454</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_show_messages</tt> <tt class="py-op">=</tt> <tt class="py-name">IntVar</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_root</tt><tt class="py-op">)</tt> </tt>
+<a name="L455"></a><tt class="py-lineno"> 455</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_show_messages</tt><tt class="py-op">.</tt><tt class="py-name">set</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+<a name="L456"></a><tt class="py-lineno"> 456</tt>  <tt class="py-line">        <tt class="py-name">Checkbutton</tt><tt class="py-op">(</tt><tt class="py-name">buttons</tt><tt class="py-op">,</tt> <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">'Show Messages'</tt><tt class="py-op">,</tt> <tt class="py-name">var</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_show_messages</tt><tt class="py-op">,</tt> </tt>
+<a name="L457"></a><tt class="py-lineno"> 457</tt>  <tt class="py-line">                    <tt class="py-name">command</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-217" class="py-name" targets="Method epydoc.gui.EpydocGUI._update_msg_tags()=epydoc.gui.EpydocGUI-class.html#_update_msg_tags"><a title="epydoc.gui.EpydocGUI._update_msg_tags" class="py-name" href="#" onclick="return doclink('link-217', '_update_msg_tags', 'link-217');">_update [...]
+<a name="L458"></a><tt class="py-lineno"> 458</tt>  <tt class="py-line">                    <tt class="py-op">**</tt><tt id="link-218" class="py-name"><a title="epydoc.gui.SHOWMSG_CONFIG" class="py-name" href="#" onclick="return doclink('link-218', 'SHOWMSG_CONFIG', 'link-52');">SHOWMSG_CONFIG</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt><tt class="py-op">(</tt><tt class="py-name">side</tt><tt class="py-op">=</tt><tt class="py-string">'left'</tt><t [...]
+<a name="L459"></a><tt class="py-lineno"> 459</tt>  <tt class="py-line">        <tt class="py-name">Checkbutton</tt><tt class="py-op">(</tt><tt class="py-name">buttons</tt><tt class="py-op">,</tt> <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">'Show Warnings'</tt><tt class="py-op">,</tt> <tt class="py-name">var</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_show_warnings</tt><tt class="py-op">,</tt> </tt>
+<a name="L460"></a><tt class="py-lineno"> 460</tt>  <tt class="py-line">                    <tt class="py-name">command</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-219" class="py-name"><a title="epydoc.gui.EpydocGUI._update_msg_tags" class="py-name" href="#" onclick="return doclink('link-219', '_update_msg_tags', 'link-217');">_update_msg_tags</a></tt><tt class="py-op">,</tt>  </tt>
+<a name="L461"></a><tt class="py-lineno"> 461</tt>  <tt class="py-line">                    <tt class="py-op">**</tt><tt id="link-220" class="py-name"><a title="epydoc.gui.SHOWWRN_CONFIG" class="py-name" href="#" onclick="return doclink('link-220', 'SHOWWRN_CONFIG', 'link-56');">SHOWWRN_CONFIG</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt><tt class="py-op">(</tt><tt class="py-name">side</tt><tt class="py-op">=</tt><tt class="py-string">'left'</tt><t [...]
+<a name="L462"></a><tt class="py-lineno"> 462</tt>  <tt class="py-line">        <tt class="py-name">Checkbutton</tt><tt class="py-op">(</tt><tt class="py-name">buttons</tt><tt class="py-op">,</tt> <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">'Show Errors'</tt><tt class="py-op">,</tt> <tt class="py-name">var</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_show_errors</tt><tt class="py-op">,</tt> </tt>
+<a name="L463"></a><tt class="py-lineno"> 463</tt>  <tt class="py-line">                    <tt class="py-name">command</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-221" class="py-name"><a title="epydoc.gui.EpydocGUI._update_msg_tags" class="py-name" href="#" onclick="return doclink('link-221', '_update_msg_tags', 'link-217');">_update_msg_tags</a></tt><tt class="py-op">,</tt>  </tt>
+<a name="L464"></a><tt class="py-lineno"> 464</tt>  <tt class="py-line">                    <tt class="py-op">**</tt><tt id="link-222" class="py-name"><a title="epydoc.gui.SHOWERR_CONFIG" class="py-name" href="#" onclick="return doclink('link-222', 'SHOWERR_CONFIG', 'link-60');">SHOWERR_CONFIG</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt><tt class="py-op">(</tt><tt class="py-name">side</tt><tt class="py-op">=</tt><tt class="py-string">'left'</tt><t [...]
+<a name="L465"></a><tt class="py-lineno"> 465</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-223" class="py-name"><a title="epydoc.gui.EpydocGUI._update_msg_tags" class="py-name" href="#" onclick="return doclink('link-223', '_update_msg_tags', 'link-217');">_update_msg_tags</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L466"></a><tt class="py-lineno"> 466</tt>  <tt class="py-line"> </tt>
+<a name="EpydocGUI._update_msg_tags"></a><div id="EpydocGUI._update_msg_tags-def"><a name="L467"></a><tt class="py-lineno"> 467</tt> <a class="py-toggle" href="#" id="EpydocGUI._update_msg_tags-toggle" onclick="return toggle('EpydocGUI._update_msg_tags');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.gui.EpydocGUI-class.html#_update_msg_tags">_update_msg_tags</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</ [...]
+</div><div id="EpydocGUI._update_msg_tags-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="EpydocGUI._update_msg_tags-expanded"><a name="L468"></a><tt class="py-lineno"> 468</tt>  <tt class="py-line">        <tt class="py-name">elide_errors</tt> <tt class="py-op">=</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_show_errors</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">( [...]
+<a name="L469"></a><tt class="py-lineno"> 469</tt>  <tt class="py-line">        <tt class="py-name">elide_warnings</tt> <tt class="py-op">=</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_show_warnings</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L470"></a><tt class="py-lineno"> 470</tt>  <tt class="py-line">        <tt class="py-name">elide_messages</tt> <tt class="py-op">=</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_show_messages</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L471"></a><tt class="py-lineno"> 471</tt>  <tt class="py-line">        <tt class="py-name">elide_headers</tt> <tt class="py-op">=</tt> <tt class="py-name">elide_errors</tt> <tt class="py-keyword">and</tt> <tt class="py-name">elide_warnings</tt> </tt>
+<a name="L472"></a><tt class="py-lineno"> 472</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_messages</tt><tt class="py-op">.</tt><tt class="py-name">tag_config</tt><tt class="py-op">(</tt><tt class="py-string">'error'</tt><tt class="py-op">,</tt> <tt class="py-name">elide</tt><tt class="py-op">=</tt><tt class="py-name">elide_errors</tt><tt class="py-op">)</tt> </tt>
+<a name="L473"></a><tt class="py-lineno"> 473</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_messages</tt><tt class="py-op">.</tt><tt class="py-name">tag_config</tt><tt class="py-op">(</tt><tt class="py-string">'guierror'</tt><tt class="py-op">,</tt> <tt class="py-name">elide</tt><tt class="py-op">=</tt><tt class="py-name">elide_errors</tt><tt class="py-op">)</tt> </tt>
+<a name="L474"></a><tt class="py-lineno"> 474</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_messages</tt><tt class="py-op">.</tt><tt class="py-name">tag_config</tt><tt class="py-op">(</tt><tt class="py-string">'warning'</tt><tt class="py-op">,</tt> <tt class="py-name">elide</tt><tt class="py-op">=</tt><tt class="py-name">elide_warnings</tt><tt class="py-op">)</tt> </tt>
+<a name="L475"></a><tt class="py-lineno"> 475</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_messages</tt><tt class="py-op">.</tt><tt class="py-name">tag_config</tt><tt class="py-op">(</tt><tt class="py-string">'message'</tt><tt class="py-op">,</tt> <tt class="py-name">elide</tt><tt class="py-op">=</tt><tt class="py-name">elide_messages</tt><tt class="py-op">)</tt> </tt>
+<a name="L476"></a><tt class="py-lineno"> 476</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_messages</tt><tt class="py-op">.</tt><tt class="py-name">tag_config</tt><tt class="py-op">(</tt><tt class="py-string">'header'</tt><tt class="py-op">,</tt> <tt class="py-name">elide</tt><tt class="py-op">=</tt><tt class="py-name">elide_headers</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L477"></a><tt class="py-lineno"> 477</tt>  <tt class="py-line"> </tt>
+<a name="EpydocGUI._init_options"></a><div id="EpydocGUI._init_options-def"><a name="L478"></a><tt class="py-lineno"> 478</tt> <a class="py-toggle" href="#" id="EpydocGUI._init_options-toggle" onclick="return toggle('EpydocGUI._init_options');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.gui.EpydocGUI-class.html#_init_options">_init_options</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py- [...]
+</div><div id="EpydocGUI._init_options-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="EpydocGUI._init_options-expanded"><a name="L479"></a><tt class="py-lineno"> 479</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_leftImage</tt><tt class="py-op">=</tt><tt class="py-name">PhotoImage</tt><tt class="py-op">(</tt><tt class="py-name">master</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt cla [...]
+<a name="L480"></a><tt class="py-lineno"> 480</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_rightImage</tt><tt class="py-op">=</tt><tt class="py-name">PhotoImage</tt><tt class="py-op">(</tt><tt class="py-name">master</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_root</tt><tt class="py-op">,</tt> <tt class="py-name">data</tt><tt class="py-op">=</tt><tt id="link-225" class= [...]
+<a name="L481"></a><tt class="py-lineno"> 481</tt>  <tt class="py-line"> </tt>
+<a name="L482"></a><tt class="py-lineno"> 482</tt>  <tt class="py-line">        <tt class="py-comment"># Set up the options control frame</tt> </tt>
+<a name="L483"></a><tt class="py-lineno"> 483</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">b1</tt> <tt class="py-op">=</tt> <tt class="py-name">Button</tt><tt class="py-op">(</tt><tt class="py-name">ctrlframe</tt><tt class="py-op">,</tt> <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Options"</tt><tt class="py-op">,</tt> <tt class="py-name">justify</tt><tt class="py-op">=</tt><tt class="py-string">'center'</tt><tt class="p [...]
+<a name="L484"></a><tt class="py-lineno"> 484</tt>  <tt class="py-line">                    <tt class="py-name">border</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">relief</tt><tt class="py-op">=</tt><tt class="py-string">'flat'</tt><tt class="py-op">,</tt> </tt>
+<a name="L485"></a><tt class="py-lineno"> 485</tt>  <tt class="py-line">                    <tt class="py-name">command</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-226" class="py-name" targets="Method epydoc.gui.EpydocGUI._options_toggle()=epydoc.gui.EpydocGUI-class.html#_options_toggle"><a title="epydoc.gui.EpydocGUI._options_toggle" class="py-name" href="#" onclick="return doclink('link-226', '_options_toggle', 'link-226');">_options_to [...]
+<a name="L486"></a><tt class="py-lineno"> 486</tt>  <tt class="py-line">                    <tt class="py-name">underline</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">pady</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">highlightthickness</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> </tt>
+<a name="L487"></a><tt class="py-lineno"> 487</tt>  <tt class="py-line">                    <tt class="py-name">activebackground</tt><tt class="py-op">=</tt><tt id="link-227" class="py-name"><a title="epydoc.gui.BG_COLOR" class="py-name" href="#" onclick="return doclink('link-227', 'BG_COLOR', 'link-2');">BG_COLOR</a></tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt id="link-228" class="py-name"><a title="epydoc.gui.COLOR_CONFIG" class="py-name" href="#" onclick="return doclink( [...]
+<a name="L488"></a><tt class="py-lineno"> 488</tt>  <tt class="py-line">        <tt class="py-name">b2</tt> <tt class="py-op">=</tt> <tt class="py-name">Button</tt><tt class="py-op">(</tt><tt class="py-name">ctrlframe</tt><tt class="py-op">,</tt> <tt class="py-name">image</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_rightImage</tt><tt class="py-op">,</tt> <tt class="py-name">relief</tt><tt class="py-op">=</tt><tt class="py-string"> [...]
+<a name="L489"></a><tt class="py-lineno"> 489</tt>  <tt class="py-line">                    <tt class="py-name">border</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">command</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-229" class="py-name"><a title="epydoc.gui.EpydocGUI._options_toggle" class="py-name" href="#" onclick="return doclink('link-229', '_options_toggle', 'link-226');">_option [...]
+<a name="L490"></a><tt class="py-lineno"> 490</tt>  <tt class="py-line">                    <tt class="py-name">activebackground</tt><tt class="py-op">=</tt><tt id="link-230" class="py-name"><a title="epydoc.gui.BG_COLOR" class="py-name" href="#" onclick="return doclink('link-230', 'BG_COLOR', 'link-2');">BG_COLOR</a></tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt id="link-231" class="py-name"><a title="epydoc.gui.COLOR_CONFIG" class="py-name" href="#" onclick="return doclink( [...]
+<a name="L491"></a><tt class="py-lineno"> 491</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_option_button</tt> <tt class="py-op">=</tt> <tt class="py-name">b2</tt> </tt>
+<a name="L492"></a><tt class="py-lineno"> 492</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_options_visible</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L493"></a><tt class="py-lineno"> 493</tt>  <tt class="py-line">        <tt class="py-name">b2</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt><tt class="py-op">(</tt><tt class="py-name">side</tt><tt class="py-op">=</tt><tt class="py-string">"right"</tt><tt class="py-op">)</tt> </tt>
+<a name="L494"></a><tt class="py-lineno"> 494</tt>  <tt class="py-line">        <tt class="py-name">b1</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt><tt class="py-op">(</tt><tt class="py-name">side</tt><tt class="py-op">=</tt><tt class="py-string">"right"</tt><tt class="py-op">)</tt> </tt>
+<a name="L495"></a><tt class="py-lineno"> 495</tt>  <tt class="py-line"> </tt>
+<a name="L496"></a><tt class="py-lineno"> 496</tt>  <tt class="py-line">        <tt class="py-name">oframe2</tt> <tt class="py-op">=</tt> <tt class="py-name">Frame</tt><tt class="py-op">(</tt><tt class="py-name">optsframe</tt><tt class="py-op">,</tt> <tt class="py-name">relief</tt><tt class="py-op">=</tt><tt class="py-string">'groove'</tt><tt class="py-op">,</tt> <tt class="py-name">border</tt><tt class="py-op">=</tt><tt class="py-number">2</tt><tt class="py-op">,</tt> </tt>
+<a name="L497"></a><tt class="py-lineno"> 497</tt>  <tt class="py-line">                        <tt class="py-name">background</tt><tt class="py-op">=</tt><tt id="link-232" class="py-name"><a title="epydoc.gui.BG_COLOR" class="py-name" href="#" onclick="return doclink('link-232', 'BG_COLOR', 'link-2');">BG_COLOR</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L498"></a><tt class="py-lineno"> 498</tt>  <tt class="py-line">        <tt class="py-name">oframe2</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt><tt class="py-op">(</tt><tt class="py-name">side</tt><tt class="py-op">=</tt><tt class="py-string">"right"</tt><tt class="py-op">,</tt> <tt class="py-name">fill</tt><tt class="py-op">=</tt><tt class="py-string">'both'</tt><tt class="py-op">,</tt> </tt>
+<a name="L499"></a><tt class="py-lineno"> 499</tt>  <tt class="py-line">                     <tt class="py-name">expand</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">padx</tt><tt class="py-op">=</tt><tt class="py-number">4</tt><tt class="py-op">,</tt> <tt class="py-name">pady</tt><tt class="py-op">=</tt><tt class="py-number">3</tt><tt class="py-op">,</tt> <tt class="py-name">ipadx</tt><tt class="py-op">=</tt><tt class="py-number">4</ [...]
+<a name="L500"></a><tt class="py-lineno"> 500</tt>  <tt class="py-line">         </tt>
+<a name="L501"></a><tt class="py-lineno"> 501</tt>  <tt class="py-line">        <tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">oframe2</tt><tt class="py-op">,</tt> <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Project Options"</tt><tt class="py-op">,</tt> <tt class="py-name">font</tt><tt class="py-op">=</tt><tt class="py-string">'helvetica -16'</tt><tt class="py-op">,</tt> </tt>
+<a name="L502"></a><tt class="py-lineno"> 502</tt>  <tt class="py-line">              <tt class="py-op">**</tt><tt id="link-233" class="py-name"><a title="epydoc.gui.COLOR_CONFIG" class="py-name" href="#" onclick="return doclink('link-233', 'COLOR_CONFIG', 'link-13');">COLOR_CONFIG</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt><tt class="py-op">(</tt><tt class="py-name">anchor</tt><tt class="py-op">=</tt><tt class="py-string">'w'</tt><tt class="py-o [...]
+<a name="L503"></a><tt class="py-lineno"> 503</tt>  <tt class="py-line">        <tt class="py-name">oframe3</tt> <tt class="py-op">=</tt> <tt class="py-name">Frame</tt><tt class="py-op">(</tt><tt class="py-name">oframe2</tt><tt class="py-op">,</tt> <tt class="py-name">background</tt><tt class="py-op">=</tt><tt id="link-234" class="py-name"><a title="epydoc.gui.BG_COLOR" class="py-name" href="#" onclick="return doclink('link-234', 'BG_COLOR', 'link-2');">BG_COLOR</a></tt><tt class="py-op" [...]
+<a name="L504"></a><tt class="py-lineno"> 504</tt>  <tt class="py-line">        <tt class="py-name">oframe3</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt><tt class="py-op">(</tt><tt class="py-name">fill</tt><tt class="py-op">=</tt><tt class="py-string">'x'</tt><tt class="py-op">)</tt> </tt>
+<a name="L505"></a><tt class="py-lineno"> 505</tt>  <tt class="py-line">        <tt class="py-name">oframe4</tt> <tt class="py-op">=</tt> <tt class="py-name">Frame</tt><tt class="py-op">(</tt><tt class="py-name">oframe2</tt><tt class="py-op">,</tt> <tt class="py-name">background</tt><tt class="py-op">=</tt><tt id="link-235" class="py-name"><a title="epydoc.gui.BG_COLOR" class="py-name" href="#" onclick="return doclink('link-235', 'BG_COLOR', 'link-2');">BG_COLOR</a></tt><tt class="py-op" [...]
+<a name="L506"></a><tt class="py-lineno"> 506</tt>  <tt class="py-line">        <tt class="py-name">oframe4</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt><tt class="py-op">(</tt><tt class="py-name">fill</tt><tt class="py-op">=</tt><tt class="py-string">'x'</tt><tt class="py-op">)</tt> </tt>
+<a name="L507"></a><tt class="py-lineno"> 507</tt>  <tt class="py-line">        <tt class="py-name">oframe7</tt> <tt class="py-op">=</tt> <tt class="py-name">Frame</tt><tt class="py-op">(</tt><tt class="py-name">oframe2</tt><tt class="py-op">,</tt> <tt class="py-name">background</tt><tt class="py-op">=</tt><tt id="link-236" class="py-name"><a title="epydoc.gui.BG_COLOR" class="py-name" href="#" onclick="return doclink('link-236', 'BG_COLOR', 'link-2');">BG_COLOR</a></tt><tt class="py-op" [...]
+<a name="L508"></a><tt class="py-lineno"> 508</tt>  <tt class="py-line">        <tt class="py-name">oframe7</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt><tt class="py-op">(</tt><tt class="py-name">fill</tt><tt class="py-op">=</tt><tt class="py-string">'x'</tt><tt class="py-op">)</tt> </tt>
+<a name="L509"></a><tt class="py-lineno"> 509</tt>  <tt class="py-line">        <tt class="py-name">div</tt> <tt class="py-op">=</tt> <tt class="py-name">Frame</tt><tt class="py-op">(</tt><tt class="py-name">oframe2</tt><tt class="py-op">,</tt> <tt class="py-name">background</tt><tt class="py-op">=</tt><tt id="link-237" class="py-name"><a title="epydoc.gui.BG_COLOR" class="py-name" href="#" onclick="return doclink('link-237', 'BG_COLOR', 'link-2');">BG_COLOR</a></tt><tt class="py-op">,</ [...]
+<a name="L510"></a><tt class="py-lineno"> 510</tt>  <tt class="py-line">        <tt class="py-name">div</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt><tt class="py-op">(</tt><tt class="py-name">ipady</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-name">fill</tt><tt class="py-op">=</tt><tt class="py-string">'x'</tt><tt class="py-op">,</tt> <tt class="py-name">padx</tt><tt class="py-op">=</tt><tt class="py-number">4</tt><tt class=" [...]
+<a name="L511"></a><tt class="py-lineno"> 511</tt>  <tt class="py-line"> </tt>
+<a name="L512"></a><tt class="py-lineno"> 512</tt>  <tt class="py-line">        <tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">oframe2</tt><tt class="py-op">,</tt> <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Help File"</tt><tt class="py-op">,</tt> <tt class="py-name">font</tt><tt class="py-op">=</tt><tt class="py-string">'helvetica -16'</tt><tt class="py-op">,</tt> </tt>
+<a name="L513"></a><tt class="py-lineno"> 513</tt>  <tt class="py-line">              <tt class="py-op">**</tt><tt id="link-238" class="py-name"><a title="epydoc.gui.COLOR_CONFIG" class="py-name" href="#" onclick="return doclink('link-238', 'COLOR_CONFIG', 'link-13');">COLOR_CONFIG</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt><tt class="py-op">(</tt><tt class="py-name">anchor</tt><tt class="py-op">=</tt><tt class="py-string">'w'</tt><tt class="py-o [...]
+<a name="L514"></a><tt class="py-lineno"> 514</tt>  <tt class="py-line">        <tt class="py-name">oframe5</tt> <tt class="py-op">=</tt> <tt class="py-name">Frame</tt><tt class="py-op">(</tt><tt class="py-name">oframe2</tt><tt class="py-op">,</tt> <tt class="py-name">background</tt><tt class="py-op">=</tt><tt id="link-239" class="py-name"><a title="epydoc.gui.BG_COLOR" class="py-name" href="#" onclick="return doclink('link-239', 'BG_COLOR', 'link-2');">BG_COLOR</a></tt><tt class="py-op" [...]
+<a name="L515"></a><tt class="py-lineno"> 515</tt>  <tt class="py-line">        <tt class="py-name">oframe5</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt><tt class="py-op">(</tt><tt class="py-name">fill</tt><tt class="py-op">=</tt><tt class="py-string">'x'</tt><tt class="py-op">)</tt> </tt>
+<a name="L516"></a><tt class="py-lineno"> 516</tt>  <tt class="py-line">        <tt class="py-name">div</tt> <tt class="py-op">=</tt> <tt class="py-name">Frame</tt><tt class="py-op">(</tt><tt class="py-name">oframe2</tt><tt class="py-op">,</tt> <tt class="py-name">background</tt><tt class="py-op">=</tt><tt id="link-240" class="py-name"><a title="epydoc.gui.BG_COLOR" class="py-name" href="#" onclick="return doclink('link-240', 'BG_COLOR', 'link-2');">BG_COLOR</a></tt><tt class="py-op">,</ [...]
+<a name="L517"></a><tt class="py-lineno"> 517</tt>  <tt class="py-line">        <tt class="py-name">div</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt><tt class="py-op">(</tt><tt class="py-name">ipady</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-name">fill</tt><tt class="py-op">=</tt><tt class="py-string">'x'</tt><tt class="py-op">,</tt> <tt class="py-name">padx</tt><tt class="py-op">=</tt><tt class="py-number">4</tt><tt class=" [...]
+<a name="L518"></a><tt class="py-lineno"> 518</tt>  <tt class="py-line"> </tt>
+<a name="L519"></a><tt class="py-lineno"> 519</tt>  <tt class="py-line">        <tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">oframe2</tt><tt class="py-op">,</tt> <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"CSS Stylesheet"</tt><tt class="py-op">,</tt> <tt class="py-name">font</tt><tt class="py-op">=</tt><tt class="py-string">'helvetica -16'</tt><tt class="py-op">,</tt> </tt>
+<a name="L520"></a><tt class="py-lineno"> 520</tt>  <tt class="py-line">              <tt class="py-op">**</tt><tt id="link-241" class="py-name"><a title="epydoc.gui.COLOR_CONFIG" class="py-name" href="#" onclick="return doclink('link-241', 'COLOR_CONFIG', 'link-13');">COLOR_CONFIG</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt><tt class="py-op">(</tt><tt class="py-name">anchor</tt><tt class="py-op">=</tt><tt class="py-string">'w'</tt><tt class="py-o [...]
+<a name="L521"></a><tt class="py-lineno"> 521</tt>  <tt class="py-line">        <tt class="py-name">oframe6</tt> <tt class="py-op">=</tt> <tt class="py-name">Frame</tt><tt class="py-op">(</tt><tt class="py-name">oframe2</tt><tt class="py-op">,</tt> <tt class="py-name">background</tt><tt class="py-op">=</tt><tt id="link-242" class="py-name"><a title="epydoc.gui.BG_COLOR" class="py-name" href="#" onclick="return doclink('link-242', 'BG_COLOR', 'link-2');">BG_COLOR</a></tt><tt class="py-op" [...]
+<a name="L522"></a><tt class="py-lineno"> 522</tt>  <tt class="py-line">        <tt class="py-name">oframe6</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt><tt class="py-op">(</tt><tt class="py-name">fill</tt><tt class="py-op">=</tt><tt class="py-string">'x'</tt><tt class="py-op">)</tt> </tt>
+<a name="L523"></a><tt class="py-lineno"> 523</tt>  <tt class="py-line"> </tt>
+<a name="L524"></a><tt class="py-lineno"> 524</tt>  <tt class="py-line">        <tt class="py-comment">#==================== oframe3 ====================</tt> </tt>
+<a name="L525"></a><tt class="py-lineno"> 525</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># -n NAME, --name NAME</tt> </tt>
+<a name="L526"></a><tt class="py-lineno"> 526</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">row</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L527"></a><tt class="py-lineno"> 527</tt>  <tt class="py-line">        <tt class="py-name">l</tt> <tt class="py-op">=</tt> <tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">oframe3</tt><tt class="py-op">,</tt> <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Project Name:"</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt id="link-243" class="py-name"><a title="epydoc.gui.COLOR_CONFIG" class="py-name" href="#" onclick="r [...]
+<a name="L528"></a><tt class="py-lineno"> 528</tt>  <tt class="py-line">        <tt class="py-name">l</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">row</tt><tt class="py-op">,</tt> <tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">sticky</tt><tt class="py-op">=</tt><tt class="py-string">'e'</tt><tt class=" [...]
+<a name="L529"></a><tt class="py-lineno"> 529</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_name_entry</tt> <tt class="py-op">=</tt> <tt class="py-name">Entry</tt><tt class="py-op">(</tt><tt class="py-name">oframe3</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt id="link-244" class="py-name"><a title="epydoc.gui.ENTRY_CONFIG" class="py-name" href="#" onclick="return doclink('link-244', 'ENTRY_CONFIG', 'link-18');">EN [...]
+<a name="L530"></a><tt class="py-lineno"> 530</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_name_entry</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">row</tt><tt class="py-op">,</tt> <tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-name">sticky</tt><t [...]
+<a name="L531"></a><tt class="py-lineno"> 531</tt>  <tt class="py-line"> </tt>
+<a name="L532"></a><tt class="py-lineno"> 532</tt>  <tt class="py-line">        <tt class="py-comment"># -u URL, --url URL</tt> </tt>
+<a name="L533"></a><tt class="py-lineno"> 533</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L534"></a><tt class="py-lineno"> 534</tt>  <tt class="py-line">        <tt class="py-name">l</tt> <tt class="py-op">=</tt> <tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">oframe3</tt><tt class="py-op">,</tt> <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Project URL:"</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt id="link-245" class="py-name"><a title="epydoc.gui.COLOR_CONFIG" class="py-name" href="#" onclick="re [...]
+<a name="L535"></a><tt class="py-lineno"> 535</tt>  <tt class="py-line">        <tt class="py-name">l</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">row</tt><tt class="py-op">,</tt> <tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">sticky</tt><tt class="py-op">=</tt><tt class="py-string">'e'</tt><tt class=" [...]
+<a name="L536"></a><tt class="py-lineno"> 536</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_url_entry</tt> <tt class="py-op">=</tt> <tt class="py-name">Entry</tt><tt class="py-op">(</tt><tt class="py-name">oframe3</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt id="link-246" class="py-name"><a title="epydoc.gui.ENTRY_CONFIG" class="py-name" href="#" onclick="return doclink('link-246', 'ENTRY_CONFIG', 'link-18');">ENT [...]
+<a name="L537"></a><tt class="py-lineno"> 537</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_url_entry</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">row</tt><tt class="py-op">,</tt> <tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-name">sticky</tt><tt [...]
+<a name="L538"></a><tt class="py-lineno"> 538</tt>  <tt class="py-line"> </tt>
+<a name="L539"></a><tt class="py-lineno"> 539</tt>  <tt class="py-line">        <tt class="py-comment"># -o DIR, --output DIR</tt> </tt>
+<a name="L540"></a><tt class="py-lineno"> 540</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L541"></a><tt class="py-lineno"> 541</tt>  <tt class="py-line">        <tt class="py-name">l</tt> <tt class="py-op">=</tt> <tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">oframe3</tt><tt class="py-op">,</tt> <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Output Directory:"</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt id="link-247" class="py-name"><a title="epydoc.gui.COLOR_CONFIG" class="py-name" href="#" onclic [...]
+<a name="L542"></a><tt class="py-lineno"> 542</tt>  <tt class="py-line">        <tt class="py-name">l</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">row</tt><tt class="py-op">,</tt> <tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">sticky</tt><tt class="py-op">=</tt><tt class="py-string">'e'</tt><tt class=" [...]
+<a name="L543"></a><tt class="py-lineno"> 543</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_out_entry</tt> <tt class="py-op">=</tt> <tt class="py-name">Entry</tt><tt class="py-op">(</tt><tt class="py-name">oframe3</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt id="link-248" class="py-name"><a title="epydoc.gui.ENTRY_CONFIG" class="py-name" href="#" onclick="return doclink('link-248', 'ENTRY_CONFIG', 'link-18');">ENT [...]
+<a name="L544"></a><tt class="py-lineno"> 544</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_out_entry</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">row</tt><tt class="py-op">,</tt> <tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-name">sticky</tt><tt [...]
+<a name="L545"></a><tt class="py-lineno"> 545</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_out_browse</tt> <tt class="py-op">=</tt> <tt class="py-name">Button</tt><tt class="py-op">(</tt><tt class="py-name">oframe3</tt><tt class="py-op">,</tt> <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Browse"</tt><tt class="py-op">,</tt> </tt>
+<a name="L546"></a><tt class="py-lineno"> 546</tt>  <tt class="py-line">                                  <tt class="py-name">command</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-249" class="py-name" targets="Method epydoc.gui.EpydocGUI._browse_out()=epydoc.gui.EpydocGUI-class.html#_browse_out"><a title="epydoc.gui.EpydocGUI._browse_out" class="py-name" href="#" onclick="return doclink('link-249', '_browse_out', 'link-249');">_browse_out</ [...]
+<a name="L547"></a><tt class="py-lineno"> 547</tt>  <tt class="py-line">                                  <tt class="py-op">**</tt><tt id="link-250" class="py-name"><a title="epydoc.gui.BUTTON_CONFIG" class="py-name" href="#" onclick="return doclink('link-250', 'BUTTON_CONFIG', 'link-37');">BUTTON_CONFIG</a></tt><tt class="py-op">)</tt>  </tt>
+<a name="L548"></a><tt class="py-lineno"> 548</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_out_browse</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">row</tt><tt class="py-op">,</tt> <tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">3</tt><tt class="py-op">,</tt> <tt class="py-name">sticky</tt><t [...]
+<a name="L549"></a><tt class="py-lineno"> 549</tt>  <tt class="py-line"> </tt>
+<a name="L550"></a><tt class="py-lineno"> 550</tt>  <tt class="py-line">        <tt class="py-comment">#==================== oframe4 ====================</tt> </tt>
+<a name="L551"></a><tt class="py-lineno"> 551</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># --no-frames</tt> </tt>
+<a name="L552"></a><tt class="py-lineno"> 552</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">row</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L553"></a><tt class="py-lineno"> 553</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_frames_var</tt> <tt class="py-op">=</tt> <tt class="py-name">IntVar</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_root</tt><tt class="py-op">)</tt> </tt>
+<a name="L554"></a><tt class="py-lineno"> 554</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_frames_var</tt><tt class="py-op">.</tt><tt class="py-name">set</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L555"></a><tt class="py-lineno"> 555</tt>  <tt class="py-line">        <tt class="py-name">l</tt> <tt class="py-op">=</tt> <tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">oframe4</tt><tt class="py-op">,</tt> <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Generate a frame-based table of contents"</tt><tt class="py-op">,</tt> </tt>
+<a name="L556"></a><tt class="py-lineno"> 556</tt>  <tt class="py-line">                  <tt class="py-op">**</tt><tt id="link-251" class="py-name"><a title="epydoc.gui.COLOR_CONFIG" class="py-name" href="#" onclick="return doclink('link-251', 'COLOR_CONFIG', 'link-13');">COLOR_CONFIG</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L557"></a><tt class="py-lineno"> 557</tt>  <tt class="py-line">        <tt class="py-name">l</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">row</tt><tt class="py-op">,</tt> <tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-name">sticky</tt><tt class="py-op">=</tt><tt class="py-string">'w'</tt><tt class=" [...]
+<a name="L558"></a><tt class="py-lineno"> 558</tt>  <tt class="py-line">        <tt class="py-name">cb</tt> <tt class="py-op">=</tt> <tt class="py-name">Checkbutton</tt><tt class="py-op">(</tt><tt class="py-name">oframe4</tt><tt class="py-op">,</tt> <tt class="py-name">var</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_frames_var</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt id="link-252" class="py-name"><a title="epydoc. [...]
+<a name="L559"></a><tt class="py-lineno"> 559</tt>  <tt class="py-line">        <tt class="py-name">cb</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">row</tt><tt class="py-op">,</tt> <tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">sticky</tt><tt class="py-op">=</tt><tt class="py-string">'e'</tt><tt class= [...]
+<a name="L560"></a><tt class="py-lineno"> 560</tt>  <tt class="py-line"> </tt>
+<a name="L561"></a><tt class="py-lineno"> 561</tt>  <tt class="py-line">        <tt class="py-comment"># --no-private</tt> </tt>
+<a name="L562"></a><tt class="py-lineno"> 562</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L563"></a><tt class="py-lineno"> 563</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_private_var</tt> <tt class="py-op">=</tt> <tt class="py-name">IntVar</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_root</tt><tt class="py-op">)</tt> </tt>
+<a name="L564"></a><tt class="py-lineno"> 564</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_private_var</tt><tt class="py-op">.</tt><tt class="py-name">set</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L565"></a><tt class="py-lineno"> 565</tt>  <tt class="py-line">        <tt class="py-name">l</tt> <tt class="py-op">=</tt> <tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">oframe4</tt><tt class="py-op">,</tt> <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Generate documentation for private objects"</tt><tt class="py-op">,</tt> </tt>
+<a name="L566"></a><tt class="py-lineno"> 566</tt>  <tt class="py-line">                  <tt class="py-op">**</tt><tt id="link-253" class="py-name"><a title="epydoc.gui.COLOR_CONFIG" class="py-name" href="#" onclick="return doclink('link-253', 'COLOR_CONFIG', 'link-13');">COLOR_CONFIG</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L567"></a><tt class="py-lineno"> 567</tt>  <tt class="py-line">        <tt class="py-name">l</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">row</tt><tt class="py-op">,</tt> <tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-name">sticky</tt><tt class="py-op">=</tt><tt class="py-string">'w'</tt><tt class=" [...]
+<a name="L568"></a><tt class="py-lineno"> 568</tt>  <tt class="py-line">        <tt class="py-name">cb</tt> <tt class="py-op">=</tt> <tt class="py-name">Checkbutton</tt><tt class="py-op">(</tt><tt class="py-name">oframe4</tt><tt class="py-op">,</tt> <tt class="py-name">var</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_private_var</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt id="link-254" class="py-name"><a title="epydoc [...]
+<a name="L569"></a><tt class="py-lineno"> 569</tt>  <tt class="py-line">        <tt class="py-name">cb</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">row</tt><tt class="py-op">,</tt> <tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">sticky</tt><tt class="py-op">=</tt><tt class="py-string">'e'</tt><tt class= [...]
+<a name="L570"></a><tt class="py-lineno"> 570</tt>  <tt class="py-line"> </tt>
+<a name="L571"></a><tt class="py-lineno"> 571</tt>  <tt class="py-line">        <tt class="py-comment"># --show-imports</tt> </tt>
+<a name="L572"></a><tt class="py-lineno"> 572</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L573"></a><tt class="py-lineno"> 573</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_imports_var</tt> <tt class="py-op">=</tt> <tt class="py-name">IntVar</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_root</tt><tt class="py-op">)</tt> </tt>
+<a name="L574"></a><tt class="py-lineno"> 574</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_imports_var</tt><tt class="py-op">.</tt><tt class="py-name">set</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+<a name="L575"></a><tt class="py-lineno"> 575</tt>  <tt class="py-line">        <tt class="py-name">l</tt> <tt class="py-op">=</tt> <tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">oframe4</tt><tt class="py-op">,</tt> <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"List imported classes and functions"</tt><tt class="py-op">,</tt> </tt>
+<a name="L576"></a><tt class="py-lineno"> 576</tt>  <tt class="py-line">                  <tt class="py-op">**</tt><tt id="link-255" class="py-name"><a title="epydoc.gui.COLOR_CONFIG" class="py-name" href="#" onclick="return doclink('link-255', 'COLOR_CONFIG', 'link-13');">COLOR_CONFIG</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L577"></a><tt class="py-lineno"> 577</tt>  <tt class="py-line">        <tt class="py-name">l</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">row</tt><tt class="py-op">,</tt> <tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-name">sticky</tt><tt class="py-op">=</tt><tt class="py-string">'w'</tt><tt class=" [...]
+<a name="L578"></a><tt class="py-lineno"> 578</tt>  <tt class="py-line">        <tt class="py-name">cb</tt> <tt class="py-op">=</tt> <tt class="py-name">Checkbutton</tt><tt class="py-op">(</tt><tt class="py-name">oframe4</tt><tt class="py-op">,</tt> <tt class="py-name">var</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_imports_var</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt id="link-256" class="py-name"><a title="epydoc [...]
+<a name="L579"></a><tt class="py-lineno"> 579</tt>  <tt class="py-line">        <tt class="py-name">cb</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">row</tt><tt class="py-op">,</tt> <tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">sticky</tt><tt class="py-op">=</tt><tt class="py-string">'e'</tt><tt class= [...]
+<a name="L580"></a><tt class="py-lineno"> 580</tt>  <tt class="py-line"> </tt>
+<a name="L581"></a><tt class="py-lineno"> 581</tt>  <tt class="py-line">        <tt class="py-comment">#==================== oframe7 ====================</tt> </tt>
+<a name="L582"></a><tt class="py-lineno"> 582</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># --docformat</tt> </tt>
+<a name="L583"></a><tt class="py-lineno"> 583</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L584"></a><tt class="py-lineno"> 584</tt>  <tt class="py-line">        <tt class="py-name">l</tt> <tt class="py-op">=</tt> <tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">oframe7</tt><tt class="py-op">,</tt> <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Default Docformat:"</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt id="link-257" class="py-name"><a title="epydoc.gui.COLOR_CONFIG" class="py-name" href="#" oncli [...]
+<a name="L585"></a><tt class="py-lineno"> 585</tt>  <tt class="py-line">        <tt class="py-name">l</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">row</tt><tt class="py-op">,</tt> <tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">sticky</tt><tt class="py-op">=</tt><tt class="py-string">'e'</tt><tt class=" [...]
+<a name="L586"></a><tt class="py-lineno"> 586</tt>  <tt class="py-line">        <tt class="py-name">df_var</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_docformat_var</tt> <tt class="py-op">=</tt> <tt class="py-name">StringVar</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_root</tt><tt class="py-op">)</tt> </tt>
+<a name="L587"></a><tt class="py-lineno"> 587</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_docformat_var</tt><tt class="py-op">.</tt><tt class="py-name">set</tt><tt class="py-op">(</tt><tt class="py-string">'epytext'</tt><tt class="py-op">)</tt> </tt>
+<a name="L588"></a><tt class="py-lineno"> 588</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt class="py-name">Radiobutton</tt><tt class="py-op">(</tt><tt class="py-name">oframe7</tt><tt class="py-op">,</tt> <tt class="py-name">var</tt><tt class="py-op">=</tt><tt class="py-name">df_var</tt><tt class="py-op">,</tt> <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">'Epytext'</tt><tt class="py-op">,</tt> </tt>
+<a name="L589"></a><tt class="py-lineno"> 589</tt>  <tt class="py-line">                        <tt id="link-258" class="py-name" targets="Variable epydoc.apidoc.VariableDoc.value=epydoc.apidoc.VariableDoc-class.html#value"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-258', 'value', 'link-258');">value</a></tt><tt class="py-op">=</tt><tt class="py-string">'epytext'</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt id="link-259" [...]
+<a name="L590"></a><tt class="py-lineno"> 590</tt>  <tt class="py-line">        <tt class="py-name">b</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">row</tt><tt class="py-op">,</tt> <tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-name">sticky</tt><tt class="py-op">=</tt><tt class="py-string">'w'</tt><tt class=" [...]
+<a name="L591"></a><tt class="py-lineno"> 591</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt class="py-name">Radiobutton</tt><tt class="py-op">(</tt><tt class="py-name">oframe7</tt><tt class="py-op">,</tt> <tt class="py-name">var</tt><tt class="py-op">=</tt><tt class="py-name">df_var</tt><tt class="py-op">,</tt> <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">'ReStructuredText'</tt><tt class="py-op">,</tt> </tt>
+<a name="L592"></a><tt class="py-lineno"> 592</tt>  <tt class="py-line">                        <tt id="link-260" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-260', 'value', 'link-258');">value</a></tt><tt class="py-op">=</tt><tt class="py-string">'restructuredtext'</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt id="link-261" class="py-name"><a title="epydoc.gui.CBUTTON_CONFIG" class="py-name" href="#" onclic [...]
+<a name="L593"></a><tt class="py-lineno"> 593</tt>  <tt class="py-line">        <tt class="py-name">b</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">row</tt><tt class="py-op">,</tt> <tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">2</tt><tt class="py-op">,</tt> <tt class="py-name">columnspan</tt><tt class="py-op">=</tt><tt class="py-number">2</tt><tt class [...]
+<a name="L594"></a><tt class="py-lineno"> 594</tt>  <tt class="py-line">        <tt class="py-name">row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L595"></a><tt class="py-lineno"> 595</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt class="py-name">Radiobutton</tt><tt class="py-op">(</tt><tt class="py-name">oframe7</tt><tt class="py-op">,</tt> <tt class="py-name">var</tt><tt class="py-op">=</tt><tt class="py-name">df_var</tt><tt class="py-op">,</tt> <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">'Plaintext'</tt><tt class="py-op">,</tt> </tt>
+<a name="L596"></a><tt class="py-lineno"> 596</tt>  <tt class="py-line">                        <tt id="link-262" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-262', 'value', 'link-258');">value</a></tt><tt class="py-op">=</tt><tt class="py-string">'plaintext'</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt id="link-263" class="py-name"><a title="epydoc.gui.CBUTTON_CONFIG" class="py-name" href="#" onclick="retu [...]
+<a name="L597"></a><tt class="py-lineno"> 597</tt>  <tt class="py-line">        <tt class="py-name">b</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">row</tt><tt class="py-op">,</tt> <tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-name">sticky</tt><tt class="py-op">=</tt><tt class="py-string">'w'</tt><tt class=" [...]
+<a name="L598"></a><tt class="py-lineno"> 598</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt class="py-name">Radiobutton</tt><tt class="py-op">(</tt><tt class="py-name">oframe7</tt><tt class="py-op">,</tt> <tt class="py-name">var</tt><tt class="py-op">=</tt><tt class="py-name">df_var</tt><tt class="py-op">,</tt> <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">'Javadoc'</tt><tt class="py-op">,</tt> </tt>
+<a name="L599"></a><tt class="py-lineno"> 599</tt>  <tt class="py-line">                        <tt id="link-264" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-264', 'value', 'link-258');">value</a></tt><tt class="py-op">=</tt><tt class="py-string">'javadoc'</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt id="link-265" class="py-name"><a title="epydoc.gui.CBUTTON_CONFIG" class="py-name" href="#" onclick="return [...]
+<a name="L600"></a><tt class="py-lineno"> 600</tt>  <tt class="py-line">        <tt class="py-name">b</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">row</tt><tt class="py-op">,</tt> <tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">2</tt><tt class="py-op">,</tt> <tt class="py-name">columnspan</tt><tt class="py-op">=</tt><tt class="py-number">2</tt><tt class [...]
+<a name="L601"></a><tt class="py-lineno"> 601</tt>  <tt class="py-line">        <tt class="py-name">row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L602"></a><tt class="py-lineno"> 602</tt>  <tt class="py-line"> </tt>
+<a name="L603"></a><tt class="py-lineno"> 603</tt>  <tt class="py-line">        <tt class="py-comment"># Separater</tt> </tt>
+<a name="L604"></a><tt class="py-lineno"> 604</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">Frame</tt><tt class="py-op">(</tt><tt class="py-name">oframe7</tt><tt class="py-op">,</tt> <tt class="py-name">background</tt><tt class="py-op">=</tt><tt id="link-266" class="py-name"><a title="epydoc.gui.BG_COLOR" class="py-name" href="#" onclick="return doclink('link-266', 'BG_COLOR', 'link-2');">BG_COLOR</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt [...]
+<a name="L605"></a><tt class="py-lineno"> 605</tt>  <tt class="py-line">        <tt class="py-name">row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L606"></a><tt class="py-lineno"> 606</tt>  <tt class="py-line"> </tt>
+<a name="L607"></a><tt class="py-lineno"> 607</tt>  <tt class="py-line">        <tt class="py-comment"># --inheritance</tt> </tt>
+<a name="L608"></a><tt class="py-lineno"> 608</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">l</tt> <tt class="py-op">=</tt> <tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">oframe7</tt><tt class="py-op">,</tt> <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Inheritance Style:"</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt id="link-267" class="py-name"><a title="epydoc.gui.COLOR_CONFIG" cl [...]
+<a name="L609"></a><tt class="py-lineno"> 609</tt>  <tt class="py-line">        <tt class="py-name">l</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">row</tt><tt class="py-op">,</tt> <tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">sticky</tt><tt class="py-op">=</tt><tt class="py-string">'e'</tt><tt class=" [...]
+<a name="L610"></a><tt class="py-lineno"> 610</tt>  <tt class="py-line">        <tt class="py-name">inh_var</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_inheritance_var</tt> <tt class="py-op">=</tt> <tt class="py-name">StringVar</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_root</tt><tt class="py-op">)</tt> </tt>
+<a name="L611"></a><tt class="py-lineno"> 611</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_inheritance_var</tt><tt class="py-op">.</tt><tt class="py-name">set</tt><tt class="py-op">(</tt><tt class="py-string">'grouped'</tt><tt class="py-op">)</tt> </tt>
+<a name="L612"></a><tt class="py-lineno"> 612</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt class="py-name">Radiobutton</tt><tt class="py-op">(</tt><tt class="py-name">oframe7</tt><tt class="py-op">,</tt> <tt class="py-name">var</tt><tt class="py-op">=</tt><tt class="py-name">inh_var</tt><tt class="py-op">,</tt> <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">'Grouped'</tt><tt class="py-op">,</tt> </tt>
+<a name="L613"></a><tt class="py-lineno"> 613</tt>  <tt class="py-line">                        <tt id="link-268" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-268', 'value', 'link-258');">value</a></tt><tt class="py-op">=</tt><tt class="py-string">'grouped'</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt id="link-269" class="py-name"><a title="epydoc.gui.CBUTTON_CONFIG" class="py-name" href="#" onclick="return [...]
+<a name="L614"></a><tt class="py-lineno"> 614</tt>  <tt class="py-line">        <tt class="py-name">b</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">row</tt><tt class="py-op">,</tt> <tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-name">sticky</tt><tt class="py-op">=</tt><tt class="py-string">'w'</tt><tt class=" [...]
+<a name="L615"></a><tt class="py-lineno"> 615</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt class="py-name">Radiobutton</tt><tt class="py-op">(</tt><tt class="py-name">oframe7</tt><tt class="py-op">,</tt> <tt class="py-name">var</tt><tt class="py-op">=</tt><tt class="py-name">inh_var</tt><tt class="py-op">,</tt> <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">'Listed'</tt><tt class="py-op">,</tt> </tt>
+<a name="L616"></a><tt class="py-lineno"> 616</tt>  <tt class="py-line">                        <tt id="link-270" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-270', 'value', 'link-258');">value</a></tt><tt class="py-op">=</tt><tt class="py-string">'listed'</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt id="link-271" class="py-name"><a title="epydoc.gui.CBUTTON_CONFIG" class="py-name" href="#" onclick="return  [...]
+<a name="L617"></a><tt class="py-lineno"> 617</tt>  <tt class="py-line">        <tt class="py-name">b</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">row</tt><tt class="py-op">,</tt> <tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">2</tt><tt class="py-op">,</tt> <tt class="py-name">sticky</tt><tt class="py-op">=</tt><tt class="py-string">'w'</tt><tt class=" [...]
+<a name="L618"></a><tt class="py-lineno"> 618</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt class="py-name">Radiobutton</tt><tt class="py-op">(</tt><tt class="py-name">oframe7</tt><tt class="py-op">,</tt> <tt class="py-name">var</tt><tt class="py-op">=</tt><tt class="py-name">inh_var</tt><tt class="py-op">,</tt> <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">'Included'</tt><tt class="py-op">,</tt> </tt>
+<a name="L619"></a><tt class="py-lineno"> 619</tt>  <tt class="py-line">                        <tt id="link-272" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-272', 'value', 'link-258');">value</a></tt><tt class="py-op">=</tt><tt class="py-string">'included'</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt id="link-273" class="py-name"><a title="epydoc.gui.CBUTTON_CONFIG" class="py-name" href="#" onclick="retur [...]
+<a name="L620"></a><tt class="py-lineno"> 620</tt>  <tt class="py-line">        <tt class="py-name">b</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">row</tt><tt class="py-op">,</tt> <tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">3</tt><tt class="py-op">,</tt> <tt class="py-name">sticky</tt><tt class="py-op">=</tt><tt class="py-string">'w'</tt><tt class=" [...]
+<a name="L621"></a><tt class="py-lineno"> 621</tt>  <tt class="py-line">        <tt class="py-name">row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L622"></a><tt class="py-lineno"> 622</tt>  <tt class="py-line"> </tt>
+<a name="L623"></a><tt class="py-lineno"> 623</tt>  <tt class="py-line">        <tt class="py-comment"># Separater</tt> </tt>
+<a name="L624"></a><tt class="py-lineno"> 624</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">Frame</tt><tt class="py-op">(</tt><tt class="py-name">oframe7</tt><tt class="py-op">,</tt> <tt class="py-name">background</tt><tt class="py-op">=</tt><tt id="link-274" class="py-name"><a title="epydoc.gui.BG_COLOR" class="py-name" href="#" onclick="return doclink('link-274', 'BG_COLOR', 'link-2');">BG_COLOR</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt [...]
+<a name="L625"></a><tt class="py-lineno"> 625</tt>  <tt class="py-line">        <tt class="py-name">row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L626"></a><tt class="py-lineno"> 626</tt>  <tt class="py-line"> </tt>
+<a name="L627"></a><tt class="py-lineno"> 627</tt>  <tt class="py-line">        <tt class="py-comment"># --parse-only, --introspect-only</tt> </tt>
+<a name="L628"></a><tt class="py-lineno"> 628</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">l</tt> <tt class="py-op">=</tt> <tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">oframe7</tt><tt class="py-op">,</tt> <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Get docs from:"</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt id="link-275" class="py-name"><a title="epydoc.gui.COLOR_CONFIG" class= [...]
+<a name="L629"></a><tt class="py-lineno"> 629</tt>  <tt class="py-line">        <tt class="py-name">l</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">row</tt><tt class="py-op">,</tt> <tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">sticky</tt><tt class="py-op">=</tt><tt class="py-string">'e'</tt><tt class=" [...]
+<a name="L630"></a><tt class="py-lineno"> 630</tt>  <tt class="py-line">        <tt class="py-name">iop_var</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_introspect_or_parse_var</tt> <tt class="py-op">=</tt> <tt class="py-name">StringVar</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_root</tt><tt class="py-op">)</tt> </tt>
+<a name="L631"></a><tt class="py-lineno"> 631</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_introspect_or_parse_var</tt><tt class="py-op">.</tt><tt class="py-name">set</tt><tt class="py-op">(</tt><tt class="py-string">'both'</tt><tt class="py-op">)</tt> </tt>
+<a name="L632"></a><tt class="py-lineno"> 632</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt class="py-name">Radiobutton</tt><tt class="py-op">(</tt><tt class="py-name">oframe7</tt><tt class="py-op">,</tt> <tt class="py-name">var</tt><tt class="py-op">=</tt><tt class="py-name">iop_var</tt><tt class="py-op">,</tt> <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">'Parsing'</tt><tt class="py-op">,</tt> </tt>
+<a name="L633"></a><tt class="py-lineno"> 633</tt>  <tt class="py-line">                        <tt id="link-276" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-276', 'value', 'link-258');">value</a></tt><tt class="py-op">=</tt><tt class="py-string">'parse'</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt id="link-277" class="py-name"><a title="epydoc.gui.CBUTTON_CONFIG" class="py-name" href="#" onclick="return d [...]
+<a name="L634"></a><tt class="py-lineno"> 634</tt>  <tt class="py-line">        <tt class="py-name">b</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">row</tt><tt class="py-op">,</tt> <tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-name">sticky</tt><tt class="py-op">=</tt><tt class="py-string">'w'</tt><tt class=" [...]
+<a name="L635"></a><tt class="py-lineno"> 635</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt class="py-name">Radiobutton</tt><tt class="py-op">(</tt><tt class="py-name">oframe7</tt><tt class="py-op">,</tt> <tt class="py-name">var</tt><tt class="py-op">=</tt><tt class="py-name">iop_var</tt><tt class="py-op">,</tt> <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">'Introspecting'</tt><tt class="py-op">,</tt> </tt>
+<a name="L636"></a><tt class="py-lineno"> 636</tt>  <tt class="py-line">                        <tt id="link-278" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-278', 'value', 'link-258');">value</a></tt><tt class="py-op">=</tt><tt class="py-string">'introspect'</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt id="link-279" class="py-name"><a title="epydoc.gui.CBUTTON_CONFIG" class="py-name" href="#" onclick="ret [...]
+<a name="L637"></a><tt class="py-lineno"> 637</tt>  <tt class="py-line">        <tt class="py-name">b</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">row</tt><tt class="py-op">,</tt> <tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">2</tt><tt class="py-op">,</tt> <tt class="py-name">sticky</tt><tt class="py-op">=</tt><tt class="py-string">'w'</tt><tt class=" [...]
+<a name="L638"></a><tt class="py-lineno"> 638</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt class="py-name">Radiobutton</tt><tt class="py-op">(</tt><tt class="py-name">oframe7</tt><tt class="py-op">,</tt> <tt class="py-name">var</tt><tt class="py-op">=</tt><tt class="py-name">iop_var</tt><tt class="py-op">,</tt> <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">'Both'</tt><tt class="py-op">,</tt> </tt>
+<a name="L639"></a><tt class="py-lineno"> 639</tt>  <tt class="py-line">                        <tt id="link-280" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-280', 'value', 'link-258');">value</a></tt><tt class="py-op">=</tt><tt class="py-string">'both'</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt id="link-281" class="py-name"><a title="epydoc.gui.CBUTTON_CONFIG" class="py-name" href="#" onclick="return do [...]
+<a name="L640"></a><tt class="py-lineno"> 640</tt>  <tt class="py-line">        <tt class="py-name">b</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">row</tt><tt class="py-op">,</tt> <tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">3</tt><tt class="py-op">,</tt> <tt class="py-name">sticky</tt><tt class="py-op">=</tt><tt class="py-string">'w'</tt><tt class=" [...]
+<a name="L641"></a><tt class="py-lineno"> 641</tt>  <tt class="py-line">        <tt class="py-name">row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L642"></a><tt class="py-lineno"> 642</tt>  <tt class="py-line"> </tt>
+<a name="L643"></a><tt class="py-lineno"> 643</tt>  <tt class="py-line">        <tt class="py-comment">#==================== oframe5 ====================</tt> </tt>
+<a name="L644"></a><tt class="py-lineno"> 644</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># --help-file FILE</tt> </tt>
+<a name="L645"></a><tt class="py-lineno"> 645</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">row</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L646"></a><tt class="py-lineno"> 646</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_help_var</tt> <tt class="py-op">=</tt> <tt class="py-name">StringVar</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_root</tt><tt class="py-op">)</tt> </tt>
+<a name="L647"></a><tt class="py-lineno"> 647</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_help_var</tt><tt class="py-op">.</tt><tt class="py-name">set</tt><tt class="py-op">(</tt><tt class="py-string">'default'</tt><tt class="py-op">)</tt> </tt>
+<a name="L648"></a><tt class="py-lineno"> 648</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt class="py-name">Radiobutton</tt><tt class="py-op">(</tt><tt class="py-name">oframe5</tt><tt class="py-op">,</tt> <tt class="py-name">var</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_help_var</tt><tt class="py-op">,</tt> </tt>
+<a name="L649"></a><tt class="py-lineno"> 649</tt>  <tt class="py-line">                        <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">'Default'</tt><tt class="py-op">,</tt> </tt>
+<a name="L650"></a><tt class="py-lineno"> 650</tt>  <tt class="py-line">                        <tt id="link-282" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-282', 'value', 'link-258');">value</a></tt><tt class="py-op">=</tt><tt class="py-string">'default'</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt id="link-283" class="py-name"><a title="epydoc.gui.CBUTTON_CONFIG" class="py-name" href="#" onclick="return [...]
+<a name="L651"></a><tt class="py-lineno"> 651</tt>  <tt class="py-line">        <tt class="py-name">b</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">row</tt><tt class="py-op">,</tt> <tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-name">sticky</tt><tt class="py-op">=</tt><tt class="py-string">'w'</tt><tt class=" [...]
+<a name="L652"></a><tt class="py-lineno"> 652</tt>  <tt class="py-line">        <tt class="py-name">row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L653"></a><tt class="py-lineno"> 653</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt class="py-name">Radiobutton</tt><tt class="py-op">(</tt><tt class="py-name">oframe5</tt><tt class="py-op">,</tt> <tt class="py-name">var</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_help_var</tt><tt class="py-op">,</tt> </tt>
+<a name="L654"></a><tt class="py-lineno"> 654</tt>  <tt class="py-line">                        <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">'Select File'</tt><tt class="py-op">,</tt> </tt>
+<a name="L655"></a><tt class="py-lineno"> 655</tt>  <tt class="py-line">                        <tt id="link-284" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-284', 'value', 'link-258');">value</a></tt><tt class="py-op">=</tt><tt class="py-string">'-other-'</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt id="link-285" class="py-name"><a title="epydoc.gui.CBUTTON_CONFIG" class="py-name" href="#" onclick="return [...]
+<a name="L656"></a><tt class="py-lineno"> 656</tt>  <tt class="py-line">        <tt class="py-name">b</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">row</tt><tt class="py-op">,</tt> <tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-name">sticky</tt><tt class="py-op">=</tt><tt class="py-string">'w'</tt><tt class=" [...]
+<a name="L657"></a><tt class="py-lineno"> 657</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_help_entry</tt> <tt class="py-op">=</tt> <tt class="py-name">Entry</tt><tt class="py-op">(</tt><tt class="py-name">oframe5</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt id="link-286" class="py-name"><a title="epydoc.gui.ENTRY_CONFIG" class="py-name" href="#" onclick="return doclink('link-286', 'ENTRY_CONFIG', 'link-18');">EN [...]
+<a name="L658"></a><tt class="py-lineno"> 658</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_help_entry</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">row</tt><tt class="py-op">,</tt> <tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">2</tt><tt class="py-op">,</tt> <tt class="py-name">sticky</tt><t [...]
+<a name="L659"></a><tt class="py-lineno"> 659</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_help_browse</tt> <tt class="py-op">=</tt> <tt class="py-name">Button</tt><tt class="py-op">(</tt><tt class="py-name">oframe5</tt><tt class="py-op">,</tt> <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">'Browse'</tt><tt class="py-op">,</tt> </tt>
+<a name="L660"></a><tt class="py-lineno"> 660</tt>  <tt class="py-line">                                   <tt class="py-name">command</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-287" class="py-name" targets="Method epydoc.gui.EpydocGUI._browse_help()=epydoc.gui.EpydocGUI-class.html#_browse_help"><a title="epydoc.gui.EpydocGUI._browse_help" class="py-name" href="#" onclick="return doclink('link-287', '_browse_help', 'link-287');">_browse_ [...]
+<a name="L661"></a><tt class="py-lineno"> 661</tt>  <tt class="py-line">                                   <tt class="py-op">**</tt><tt id="link-288" class="py-name"><a title="epydoc.gui.BUTTON_CONFIG" class="py-name" href="#" onclick="return doclink('link-288', 'BUTTON_CONFIG', 'link-37');">BUTTON_CONFIG</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L662"></a><tt class="py-lineno"> 662</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_help_browse</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">row</tt><tt class="py-op">,</tt> <tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">3</tt><tt class="py-op">,</tt> <tt class="py-name">sticky</tt>< [...]
+<a name="L663"></a><tt class="py-lineno"> 663</tt>  <tt class="py-line">         </tt>
+<a name="L664"></a><tt class="py-lineno"> 664</tt>  <tt class="py-line">        <tt class="py-keyword">from</tt> <tt id="link-289" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-289', 'epydoc', 'link-87');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-290" class="py-name"><a title="epydoc.docwriter" class="py-name" href="#" onclick="return doclink('link-290', 'docwriter', 'link-104');">docwriter</a></tt><tt class="py-op">.</tt><tt id="link [...]
+<a name="L665"></a><tt class="py-lineno"> 665</tt>  <tt class="py-line">        <tt class="py-name">items</tt> <tt class="py-op">=</tt> <tt id="link-293" class="py-name"><a title="epydoc.docwriter.html_css.STYLESHEETS" class="py-name" href="#" onclick="return doclink('link-293', 'STYLESHEETS', 'link-292');">STYLESHEETS</a></tt><tt class="py-op">.</tt><tt class="py-name">items</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L666"></a><tt class="py-lineno"> 666</tt>  <tt class="py-line">        <tt class="py-keyword">def</tt> <tt class="py-def-name">_css_sort</tt><tt class="py-op">(</tt><tt class="py-param">css1</tt><tt class="py-op">,</tt> <tt class="py-param">css2</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L667"></a><tt class="py-lineno"> 667</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">css1</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">'default'</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-op">-</tt><tt class="py-number">1</tt> </tt>
+<a name="L668"></a><tt class="py-lineno"> 668</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">css2</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">'default'</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-number">1</tt> </tt>
+<a name="L669"></a><tt class="py-lineno"> 669</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-name">cmp</tt><tt class="py-op">(</tt><tt class="py-name">css1</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">css2</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L670"></a><tt class="py-lineno"> 670</tt>  <tt class="py-line">        <tt class="py-name">items</tt><tt class="py-op">.</tt><tt class="py-name">sort</tt><tt class="py-op">(</tt><tt class="py-name">_css_sort</tt><tt class="py-op">)</tt> </tt>
+<a name="L671"></a><tt class="py-lineno"> 671</tt>  <tt class="py-line"> </tt>
+<a name="L672"></a><tt class="py-lineno"> 672</tt>  <tt class="py-line">        <tt class="py-comment">#==================== oframe6 ====================</tt> </tt>
+<a name="L673"></a><tt class="py-lineno"> 673</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># -c CSS, --css CSS</tt> </tt>
+<a name="L674"></a><tt class="py-lineno"> 674</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># --private-css CSS</tt> </tt>
+<a name="L675"></a><tt class="py-lineno"> 675</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">row</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L676"></a><tt class="py-lineno"> 676</tt>  <tt class="py-line">        <tt class="py-comment">#l = Label(oframe6, text="Public", **COLOR_CONFIG)</tt> </tt>
+<a name="L677"></a><tt class="py-lineno"> 677</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#l.grid(row=row, column=0, sticky='e')</tt> </tt>
+<a name="L678"></a><tt class="py-lineno"> 678</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#l = Label(oframe6, text="Private", **COLOR_CONFIG)</tt> </tt>
+<a name="L679"></a><tt class="py-lineno"> 679</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#l.grid(row=row, column=1, sticky='w')</tt> </tt>
+<a name="L680"></a><tt class="py-lineno"> 680</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L681"></a><tt class="py-lineno"> 681</tt>  <tt class="py-line">        <tt class="py-name">css_var</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_css_var</tt> <tt class="py-op">=</tt> <tt class="py-name">StringVar</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_root</tt><tt class="py-op">)</tt> </tt>
+<a name="L682"></a><tt class="py-lineno"> 682</tt>  <tt class="py-line">        <tt class="py-name">css_var</tt><tt class="py-op">.</tt><tt class="py-name">set</tt><tt class="py-op">(</tt><tt class="py-string">'default'</tt><tt class="py-op">)</tt> </tt>
+<a name="L683"></a><tt class="py-lineno"> 683</tt>  <tt class="py-line">        <tt class="py-comment">#private_css_var = self._private_css_var = StringVar(self._root)</tt> </tt>
+<a name="L684"></a><tt class="py-lineno"> 684</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#private_css_var.set('default')</tt> </tt>
+<a name="L685"></a><tt class="py-lineno"> 685</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">for</tt> <tt class="py-op">(</tt><tt id="link-294" class="py-name" targets="Variable epydoc.apidoc.VariableDoc.name=epydoc.apidoc.VariableDoc-class.html#name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-294', 'name', 'link-294');">name</a></tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt id="link-29 [...]
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-296', 'descr', 'link-296');">descr</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-name">items</tt><tt class="py-op">:</tt> </tt>
+<a name="L686"></a><tt class="py-lineno"> 686</tt>  <tt class="py-line">            <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt class="py-name">Radiobutton</tt><tt class="py-op">(</tt><tt class="py-name">oframe6</tt><tt class="py-op">,</tt> <tt class="py-name">var</tt><tt class="py-op">=</tt><tt class="py-name">css_var</tt><tt class="py-op">,</tt> <tt id="link-297" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('lin [...]
+<a name="L687"></a><tt class="py-lineno"> 687</tt>  <tt class="py-line">            <tt class="py-name">b</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">row</tt><tt class="py-op">,</tt> <tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">sticky</tt><tt class="py-op">=</tt><tt class="py-string">'e'</tt><tt cla [...]
+<a name="L688"></a><tt class="py-lineno"> 688</tt>  <tt class="py-line">            <tt class="py-comment">#b = Radiobutton(oframe6, var=private_css_var, value=name, </tt> </tt>
+<a name="L689"></a><tt class="py-lineno"> 689</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment">#                text=name, **CBUTTON_CONFIG)</tt> </tt>
+<a name="L690"></a><tt class="py-lineno"> 690</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment">#b.grid(row=row, column=1, sticky='w')</tt> </tt>
+<a name="L691"></a><tt class="py-lineno"> 691</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">l</tt> <tt class="py-op">=</tt> <tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">oframe6</tt><tt class="py-op">,</tt> <tt class="py-name">text</tt><tt class="py-op">=</tt><tt id="link-300" class="py-name"><a title="epydoc.apidoc.APIDoc.descr
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-300', 'descr', 'link-296');">descr</a></tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt id="link-301" class="py-name"><a title="epydoc.gui.COLOR_CONFIG" class="py-name" href="#" onclick="return doclink('link-301', 'COLOR_CONFIG', 'link-13');">COLOR_CONFIG</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L692"></a><tt class="py-lineno"> 692</tt>  <tt class="py-line">            <tt class="py-name">l</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">row</tt><tt class="py-op">,</tt> <tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-name">sticky</tt><tt class="py-op">=</tt><tt class="py-string">'w'</tt><tt cla [...]
+<a name="L693"></a><tt class="py-lineno"> 693</tt>  <tt class="py-line">            <tt class="py-name">row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L694"></a><tt class="py-lineno"> 694</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt class="py-name">Radiobutton</tt><tt class="py-op">(</tt><tt class="py-name">oframe6</tt><tt class="py-op">,</tt> <tt class="py-name">var</tt><tt class="py-op">=</tt><tt class="py-name">css_var</tt><tt class="py-op">,</tt> <tt id="link-302" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-30 [...]
+<a name="L695"></a><tt class="py-lineno"> 695</tt>  <tt class="py-line">                        <tt class="py-op">**</tt><tt id="link-303" class="py-name"><a title="epydoc.gui.CBUTTON_CONFIG" class="py-name" href="#" onclick="return doclink('link-303', 'CBUTTON_CONFIG', 'link-44');">CBUTTON_CONFIG</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L696"></a><tt class="py-lineno"> 696</tt>  <tt class="py-line">        <tt class="py-name">b</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">row</tt><tt class="py-op">,</tt> <tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">sticky</tt><tt class="py-op">=</tt><tt class="py-string">'e'</tt><tt class=" [...]
+<a name="L697"></a><tt class="py-lineno"> 697</tt>  <tt class="py-line">        <tt class="py-comment">#b = Radiobutton(oframe6, text='Select File', var=private_css_var, </tt> </tt>
+<a name="L698"></a><tt class="py-lineno"> 698</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#                value='-other-', **CBUTTON_CONFIG)</tt> </tt>
+<a name="L699"></a><tt class="py-lineno"> 699</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#b.grid(row=row, column=1, sticky='w')</tt> </tt>
+<a name="L700"></a><tt class="py-lineno"> 700</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#l = Label(oframe6, text='Select File', **COLOR_CONFIG)</tt> </tt>
+<a name="L701"></a><tt class="py-lineno"> 701</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#l.grid(row=row, column=1, sticky='w')</tt> </tt>
+<a name="L702"></a><tt class="py-lineno"> 702</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_css_entry</tt> <tt class="py-op">=</tt> <tt class="py-name">Entry</tt><tt class="py-op">(</tt><tt class="py-name">oframe6</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt id="link-304" class="py-name"><a title="epydoc.gui.ENTRY_CONFIG" class="py-name" href="#" onclick="return doclink('link-304', 'ENT [...]
+<a name="L703"></a><tt class="py-lineno"> 703</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_css_entry</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">row</tt><tt class="py-op">,</tt> <tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-name">sticky</tt><tt [...]
+<a name="L704"></a><tt class="py-lineno"> 704</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_css_browse</tt> <tt class="py-op">=</tt> <tt class="py-name">Button</tt><tt class="py-op">(</tt><tt class="py-name">oframe6</tt><tt class="py-op">,</tt> <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Browse"</tt><tt class="py-op">,</tt> </tt>
+<a name="L705"></a><tt class="py-lineno"> 705</tt>  <tt class="py-line">                                  <tt class="py-name">command</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-305" class="py-name" targets="Method epydoc.gui.EpydocGUI._browse_css()=epydoc.gui.EpydocGUI-class.html#_browse_css"><a title="epydoc.gui.EpydocGUI._browse_css" class="py-name" href="#" onclick="return doclink('link-305', '_browse_css', 'link-305');">_browse_css</ [...]
+<a name="L706"></a><tt class="py-lineno"> 706</tt>  <tt class="py-line">                                  <tt class="py-op">**</tt><tt id="link-306" class="py-name"><a title="epydoc.gui.BUTTON_CONFIG" class="py-name" href="#" onclick="return doclink('link-306', 'BUTTON_CONFIG', 'link-37');">BUTTON_CONFIG</a></tt><tt class="py-op">)</tt>  </tt>
+<a name="L707"></a><tt class="py-lineno"> 707</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_css_browse</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">row</tt><tt class="py-op">,</tt> <tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">2</tt><tt class="py-op">,</tt> <tt class="py-name">sticky</tt><t [...]
+</div><a name="L708"></a><tt class="py-lineno"> 708</tt>  <tt class="py-line"> </tt>
+<a name="EpydocGUI._init_bindings"></a><div id="EpydocGUI._init_bindings-def"><a name="L709"></a><tt class="py-lineno"> 709</tt> <a class="py-toggle" href="#" id="EpydocGUI._init_bindings-toggle" onclick="return toggle('EpydocGUI._init_bindings');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.gui.EpydocGUI-class.html#_init_bindings">_init_bindings</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class [...]
+</div><div id="EpydocGUI._init_bindings-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="EpydocGUI._init_bindings-expanded"><a name="L710"></a><tt class="py-lineno"> 710</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_root</tt><tt class="py-op">.</tt><tt class="py-name">bind</tt><tt class="py-op">(</tt><tt class="py-string">'<Delete>'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt [...]
+<a name="L711"></a><tt class="py-lineno"> 711</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_root</tt><tt class="py-op">.</tt><tt class="py-name">bind</tt><tt class="py-op">(</tt><tt class="py-string">'<Alt-o>'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-308" class="py-name"><a title="epydoc.gui.EpydocGUI._options_toggle" class="py-name" href="#" onclick="return doclink(' [...]
+<a name="L712"></a><tt class="py-lineno"> 712</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_root</tt><tt class="py-op">.</tt><tt class="py-name">bind</tt><tt class="py-op">(</tt><tt class="py-string">'<Alt-m>'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-309" class="py-name"><a title="epydoc.gui.EpydocGUI._messages_toggle" class="py-name" href="#" onclick="return doclink( [...]
+<a name="L713"></a><tt class="py-lineno"> 713</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_root</tt><tt class="py-op">.</tt><tt class="py-name">bind</tt><tt class="py-op">(</tt><tt class="py-string">'<F5>'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-310" class="py-name"><a title="epydoc.gui.EpydocGUI._go" class="py-name" href="#" onclick="return doclink('link-310', '_go [...]
+<a name="L714"></a><tt class="py-lineno"> 714</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_root</tt><tt class="py-op">.</tt><tt class="py-name">bind</tt><tt class="py-op">(</tt><tt class="py-string">'<Alt-s>'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-311" class="py-name"><a title="epydoc.gui.EpydocGUI._go" class="py-name" href="#" onclick="return doclink('link-311', ' [...]
+<a name="L715"></a><tt class="py-lineno"> 715</tt>  <tt class="py-line">         </tt>
+<a name="L716"></a><tt class="py-lineno"> 716</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_root</tt><tt class="py-op">.</tt><tt class="py-name">bind</tt><tt class="py-op">(</tt><tt class="py-string">'<Control-n>'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-312" class="py-name"><a title="epydoc.gui.EpydocGUI._new" class="py-name" href="#" onclick="return doclink('link-31 [...]
+<a name="L717"></a><tt class="py-lineno"> 717</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_root</tt><tt class="py-op">.</tt><tt class="py-name">bind</tt><tt class="py-op">(</tt><tt class="py-string">'<Control-o>'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-313" class="py-name"><a title="epydoc.gui.EpydocGUI._open" class="py-name" href="#" onclick="return doclink('link-3 [...]
+<a name="L718"></a><tt class="py-lineno"> 718</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_root</tt><tt class="py-op">.</tt><tt class="py-name">bind</tt><tt class="py-op">(</tt><tt class="py-string">'<Control-s>'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-314" class="py-name"><a title="epydoc.gui.EpydocGUI._save" class="py-name" href="#" onclick="return doclink('link-3 [...]
+<a name="L719"></a><tt class="py-lineno"> 719</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_root</tt><tt class="py-op">.</tt><tt class="py-name">bind</tt><tt class="py-op">(</tt><tt class="py-string">'<Control-a>'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-315" class="py-name"><a title="epydoc.gui.EpydocGUI._saveas" class="py-name" href="#" onclick="return doclink('link [...]
+</div><a name="L720"></a><tt class="py-lineno"> 720</tt>  <tt class="py-line"> </tt>
+<a name="EpydocGUI._options_toggle"></a><div id="EpydocGUI._options_toggle-def"><a name="L721"></a><tt class="py-lineno"> 721</tt> <a class="py-toggle" href="#" id="EpydocGUI._options_toggle-toggle" onclick="return toggle('EpydocGUI._options_toggle');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.gui.EpydocGUI-class.html#_options_toggle">_options_toggle</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <t [...]
+</div><div id="EpydocGUI._options_toggle-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="EpydocGUI._options_toggle-expanded"><a name="L722"></a><tt class="py-lineno"> 722</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_options_visible</tt><tt class="py-op">:</tt> </tt>
+<a name="L723"></a><tt class="py-lineno"> 723</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_optsframe</tt><tt class="py-op">.</tt><tt class="py-name">forget</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L724"></a><tt class="py-lineno"> 724</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_option_button</tt><tt class="py-op">[</tt><tt class="py-string">'image'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_rightImage</tt> </tt>
+<a name="L725"></a><tt class="py-lineno"> 725</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_options_visible</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L726"></a><tt class="py-lineno"> 726</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L727"></a><tt class="py-lineno"> 727</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_optsframe</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt><tt class="py-op">(</tt><tt class="py-name">fill</tt><tt class="py-op">=</tt><tt class="py-string">'both'</tt><tt class="py-op">,</tt> <tt class="py-name">side</tt><tt class="py-op">=</tt><tt class="py-string">'right'</tt><tt class="py-op">)</tt> </tt>
+<a name="L728"></a><tt class="py-lineno"> 728</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_option_button</tt><tt class="py-op">[</tt><tt class="py-string">'image'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_leftImage</tt> </tt>
+<a name="L729"></a><tt class="py-lineno"> 729</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_options_visible</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+</div><a name="L730"></a><tt class="py-lineno"> 730</tt>  <tt class="py-line"> </tt>
+<a name="EpydocGUI._messages_toggle"></a><div id="EpydocGUI._messages_toggle-def"><a name="L731"></a><tt class="py-lineno"> 731</tt> <a class="py-toggle" href="#" id="EpydocGUI._messages_toggle-toggle" onclick="return toggle('EpydocGUI._messages_toggle');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.gui.EpydocGUI-class.html#_messages_toggle">_messages_toggle</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</ [...]
+</div><div id="EpydocGUI._messages_toggle-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="EpydocGUI._messages_toggle-expanded"><a name="L732"></a><tt class="py-lineno"> 732</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_messages_visible</tt><tt class="py-op">:</tt> </tt>
+<a name="L733"></a><tt class="py-lineno"> 733</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_msgsframe</tt><tt class="py-op">.</tt><tt class="py-name">forget</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L734"></a><tt class="py-lineno"> 734</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_message_button</tt><tt class="py-op">[</tt><tt class="py-string">'image'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_rightImage</tt> </tt>
+<a name="L735"></a><tt class="py-lineno"> 735</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_messages_visible</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L736"></a><tt class="py-lineno"> 736</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L737"></a><tt class="py-lineno"> 737</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_msgsframe</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt><tt class="py-op">(</tt><tt class="py-name">fill</tt><tt class="py-op">=</tt><tt class="py-string">'both'</tt><tt class="py-op">,</tt> <tt class="py-name">side</tt><tt class="py-op">=</tt><tt class="py-string">'bottom'</tt><tt class="py-op">,</tt> <tt class="py-name" [...]
+<a name="L738"></a><tt class="py-lineno"> 738</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_message_button</tt><tt class="py-op">[</tt><tt class="py-string">'image'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_leftImage</tt> </tt>
+<a name="L739"></a><tt class="py-lineno"> 739</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_messages_visible</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+</div><a name="L740"></a><tt class="py-lineno"> 740</tt>  <tt class="py-line"> </tt>
+<a name="EpydocGUI._configure"></a><div id="EpydocGUI._configure-def"><a name="L741"></a><tt class="py-lineno"> 741</tt> <a class="py-toggle" href="#" id="EpydocGUI._configure-toggle" onclick="return toggle('EpydocGUI._configure');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.gui.EpydocGUI-class.html#_configure">_configure</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">event</tt>< [...]
+</div><div id="EpydocGUI._configure-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="EpydocGUI._configure-expanded"><a name="L742"></a><tt class="py-lineno"> 742</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_W</tt> <tt class="py-op">=</tt> <tt class="py-name">event</tt><tt class="py-op">.</tt><tt class="py-name">width</tt><tt class="py-op">-</tt><tt id="link-316" class="py-name"><a title="epydoc.gui [...]
+</div><a name="L743"></a><tt class="py-lineno"> 743</tt>  <tt class="py-line"> </tt>
+<a name="EpydocGUI._delete_module"></a><div id="EpydocGUI._delete_module-def"><a name="L744"></a><tt class="py-lineno"> 744</tt> <a class="py-toggle" href="#" id="EpydocGUI._delete_module-toggle" onclick="return toggle('EpydocGUI._delete_module');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.gui.EpydocGUI-class.html#_delete_module">_delete_module</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt clas [...]
+</div><div id="EpydocGUI._delete_module-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="EpydocGUI._delete_module-expanded"><a name="L745"></a><tt class="py-lineno"> 745</tt>  <tt class="py-line">        <tt class="py-name">selection</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_module_list</tt><tt class="py-op">.</tt><tt class="py-name">curselection</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L746"></a><tt class="py-lineno"> 746</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">selection</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> </tt>
+<a name="L747"></a><tt class="py-lineno"> 747</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_module_list</tt><tt class="py-op">.</tt><tt class="py-name">delete</tt><tt class="py-op">(</tt><tt class="py-name">selection</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L748"></a><tt class="py-lineno"> 748</tt>  <tt class="py-line"> </tt>
+<a name="EpydocGUI._entry_module"></a><div id="EpydocGUI._entry_module-def"><a name="L749"></a><tt class="py-lineno"> 749</tt> <a class="py-toggle" href="#" id="EpydocGUI._entry_module-toggle" onclick="return toggle('EpydocGUI._entry_module');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.gui.EpydocGUI-class.html#_entry_module">_entry_module</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py- [...]
+</div><div id="EpydocGUI._entry_module-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="EpydocGUI._entry_module-expanded"><a name="L750"></a><tt class="py-lineno"> 750</tt>  <tt class="py-line">        <tt class="py-name">modules</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_module_entry</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py [...]
+<a name="L751"></a><tt class="py-lineno"> 751</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">glob</tt><tt class="py-op">.</tt><tt class="py-name">has_magic</tt><tt class="py-op">(</tt><tt class="py-name">modules</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L752"></a><tt class="py-lineno"> 752</tt>  <tt class="py-line">            <tt class="py-name">modules</tt> <tt class="py-op">=</tt> <tt class="py-name">glob</tt><tt class="py-op">.</tt><tt class="py-name">glob</tt><tt class="py-op">(</tt><tt class="py-name">modules</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L753"></a><tt class="py-lineno"> 753</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt id="link-317" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-317', 'name', 'link-294');">name</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">modules</tt><tt class="py-op">:</tt> </tt>
+<a name="L754"></a><tt class="py-lineno"> 754</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-318" class="py-name" targets="Method epydoc.gui.EpydocGUI.add_module()=epydoc.gui.EpydocGUI-class.html#add_module"><a title="epydoc.gui.EpydocGUI.add_module" class="py-name" href="#" onclick="return doclink('link-318', 'add_module', 'link-318');">add_module</a></tt><tt class="py-op">(</tt><tt id="link-319" class="py-name"><a title="epydoc.a [...]
+<a name="L755"></a><tt class="py-lineno"> 755</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_module_entry</tt><tt class="py-op">.</tt><tt class="py-name">delete</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-string">'end'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L756"></a><tt class="py-lineno"> 756</tt>  <tt class="py-line"> </tt>
+<a name="EpydocGUI._browse_module"></a><div id="EpydocGUI._browse_module-def"><a name="L757"></a><tt class="py-lineno"> 757</tt> <a class="py-toggle" href="#" id="EpydocGUI._browse_module-toggle" onclick="return toggle('EpydocGUI._browse_module');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.gui.EpydocGUI-class.html#_browse_module">_browse_module</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt clas [...]
+</div><div id="EpydocGUI._browse_module-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="EpydocGUI._browse_module-expanded"><a name="L758"></a><tt class="py-lineno"> 758</tt>  <tt class="py-line">        <tt id="link-321" class="py-name"><a title="epydoc.docwriter.plaintext.PlaintextWriter.title" class="py-name" href="#" onclick="return doclink('link-321', 'title', 'link-139');">title</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'Select a module for [...]
+<a name="L759"></a><tt class="py-lineno"> 759</tt>  <tt class="py-line">        <tt class="py-name">ftypes</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-string">'Python module'</tt><tt class="py-op">,</tt> <tt class="py-string">'.py'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L760"></a><tt class="py-lineno"> 760</tt>  <tt class="py-line">                  <tt class="py-op">(</tt><tt class="py-string">'Python extension'</tt><tt class="py-op">,</tt> <tt class="py-string">'.so'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L761"></a><tt class="py-lineno"> 761</tt>  <tt class="py-line">                  <tt class="py-op">(</tt><tt class="py-string">'All files'</tt><tt class="py-op">,</tt> <tt class="py-string">'*'</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt>
+<a name="L762"></a><tt class="py-lineno"> 762</tt>  <tt class="py-line">        <tt id="link-322" class="py-name" targets="Variable epydoc.apidoc.ModuleDoc.filename=epydoc.apidoc.ModuleDoc-class.html#filename"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-322', 'filename', 'link-322');">filename</a></tt> <tt class="py-op">=</tt> <tt class="py-name">askopenfilename</tt><tt class="py-op">(</tt><tt class="py-name">filetypes</tt><tt class= [...]
+<a name="L763"></a><tt class="py-lineno"> 763</tt>  <tt class="py-line">                                   <tt class="py-name">defaultextension</tt><tt class="py-op">=</tt><tt class="py-string">'.py'</tt><tt class="py-op">,</tt> </tt>
+<a name="L764"></a><tt class="py-lineno"> 764</tt>  <tt class="py-line">                                   <tt class="py-name">initialdir</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_init_dir</tt><tt class="py-op">)</tt> </tt>
+<a name="L765"></a><tt class="py-lineno"> 765</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-325" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-325', 'filename', 'link-322');">filename</a></tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> </tt>
+<a name="L766"></a><tt class="py-lineno"> 766</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_init_dir</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-326" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-326', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt class="py-name">dirname</tt><tt class="py-op">(</tt> [...]
+<a name="L767"></a><tt class="py-lineno"> 767</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-328" class="py-name"><a title="epydoc.gui.EpydocGUI.add_module" class="py-name" href="#" onclick="return doclink('link-328', 'add_module', 'link-318');">add_module</a></tt><tt class="py-op">(</tt><tt id="link-329" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-329', 'filename', [...]
+</div><a name="L768"></a><tt class="py-lineno"> 768</tt>  <tt class="py-line">         </tt>
+<a name="EpydocGUI._browse_css"></a><div id="EpydocGUI._browse_css-def"><a name="L769"></a><tt class="py-lineno"> 769</tt> <a class="py-toggle" href="#" id="EpydocGUI._browse_css-toggle" onclick="return toggle('EpydocGUI._browse_css');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.gui.EpydocGUI-class.html#_browse_css">_browse_css</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><t [...]
+</div><div id="EpydocGUI._browse_css-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="EpydocGUI._browse_css-expanded"><a name="L770"></a><tt class="py-lineno"> 770</tt>  <tt class="py-line">        <tt id="link-331" class="py-name"><a title="epydoc.docwriter.plaintext.PlaintextWriter.title" class="py-name" href="#" onclick="return doclink('link-331', 'title', 'link-139');">title</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'Select a CSS stylesheet'< [...]
+<a name="L771"></a><tt class="py-lineno"> 771</tt>  <tt class="py-line">        <tt class="py-name">ftypes</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-string">'CSS Stylesheet'</tt><tt class="py-op">,</tt> <tt class="py-string">'.css'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-string">'All files'</tt><tt class="py-op">,</tt> <tt class="py-string">'*'</tt><tt class="py-op">)</tt><tt class="py-op [...]
+<a name="L772"></a><tt class="py-lineno"> 772</tt>  <tt class="py-line">        <tt id="link-332" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-332', 'filename', 'link-322');">filename</a></tt> <tt class="py-op">=</tt> <tt class="py-name">askopenfilename</tt><tt class="py-op">(</tt><tt class="py-name">filetypes</tt><tt class="py-op">=</tt><tt class="py-name">ftypes</tt><tt class="py-op">,</tt> <tt id="link-333" class="p [...]
+<a name="L773"></a><tt class="py-lineno"> 773</tt>  <tt class="py-line">                                   <tt class="py-name">defaultextension</tt><tt class="py-op">=</tt><tt class="py-string">'.css'</tt><tt class="py-op">)</tt> </tt>
+<a name="L774"></a><tt class="py-lineno"> 774</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-335" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-335', 'filename', 'link-322');">filename</a></tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> </tt>
+<a name="L775"></a><tt class="py-lineno"> 775</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_css_entry</tt><tt class="py-op">.</tt><tt class="py-name">delete</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-string">'end'</tt><tt class="py-op">)</tt> </tt>
+<a name="L776"></a><tt class="py-lineno"> 776</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_css_entry</tt><tt class="py-op">.</tt><tt class="py-name">insert</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt id="link-336" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-336', 'filename', 'link-322');">filename</a></tt><tt class= [...]
+</div><a name="L777"></a><tt class="py-lineno"> 777</tt>  <tt class="py-line"> </tt>
+<a name="EpydocGUI._browse_help"></a><div id="EpydocGUI._browse_help-def"><a name="L778"></a><tt class="py-lineno"> 778</tt> <a class="py-toggle" href="#" id="EpydocGUI._browse_help-toggle" onclick="return toggle('EpydocGUI._browse_help');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.gui.EpydocGUI-class.html#_browse_help">_browse_help</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-op">*< [...]
+</div><div id="EpydocGUI._browse_help-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="EpydocGUI._browse_help-expanded"><a name="L779"></a><tt class="py-lineno"> 779</tt>  <tt class="py-line">        <tt id="link-337" class="py-name"><a title="epydoc.docwriter.plaintext.PlaintextWriter.title" class="py-name" href="#" onclick="return doclink('link-337', 'title', 'link-139');">title</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'Select a help file'</tt> </tt>
+<a name="L780"></a><tt class="py-lineno"> 780</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_help_var</tt><tt class="py-op">.</tt><tt class="py-name">set</tt><tt class="py-op">(</tt><tt class="py-string">'-other-'</tt><tt class="py-op">)</tt> </tt>
+<a name="L781"></a><tt class="py-lineno"> 781</tt>  <tt class="py-line">        <tt class="py-name">ftypes</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-string">'HTML file'</tt><tt class="py-op">,</tt> <tt class="py-string">'.html'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-string">'All files'</tt><tt class="py-op">,</tt> <tt class="py-string">'*'</tt><tt class="py-op">)</tt><tt class="py-op">]< [...]
+<a name="L782"></a><tt class="py-lineno"> 782</tt>  <tt class="py-line">        <tt id="link-338" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-338', 'filename', 'link-322');">filename</a></tt> <tt class="py-op">=</tt> <tt class="py-name">askopenfilename</tt><tt class="py-op">(</tt><tt class="py-name">filetypes</tt><tt class="py-op">=</tt><tt class="py-name">ftypes</tt><tt class="py-op">,</tt> <tt id="link-339" class="p [...]
+<a name="L783"></a><tt class="py-lineno"> 783</tt>  <tt class="py-line">                                   <tt class="py-name">defaultextension</tt><tt class="py-op">=</tt><tt class="py-string">'.html'</tt><tt class="py-op">)</tt> </tt>
+<a name="L784"></a><tt class="py-lineno"> 784</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-341" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-341', 'filename', 'link-322');">filename</a></tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> </tt>
+<a name="L785"></a><tt class="py-lineno"> 785</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_help_entry</tt><tt class="py-op">.</tt><tt class="py-name">delete</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-string">'end'</tt><tt class="py-op">)</tt> </tt>
+<a name="L786"></a><tt class="py-lineno"> 786</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_help_entry</tt><tt class="py-op">.</tt><tt class="py-name">insert</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt id="link-342" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-342', 'filename', 'link-322');">filename</a></tt><tt class [...]
+</div><a name="L787"></a><tt class="py-lineno"> 787</tt>  <tt class="py-line"> </tt>
+<a name="EpydocGUI._browse_out"></a><div id="EpydocGUI._browse_out-def"><a name="L788"></a><tt class="py-lineno"> 788</tt> <a class="py-toggle" href="#" id="EpydocGUI._browse_out-toggle" onclick="return toggle('EpydocGUI._browse_out');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.gui.EpydocGUI-class.html#_browse_out">_browse_out</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><t [...]
+</div><div id="EpydocGUI._browse_out-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="EpydocGUI._browse_out-expanded"><a name="L789"></a><tt class="py-lineno"> 789</tt>  <tt class="py-line">        <tt class="py-name">ftypes</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-string">'All files'</tt><tt class="py-op">,</tt> <tt class="py-string">'*'</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt>
+<a name="L790"></a><tt class="py-lineno"> 790</tt>  <tt class="py-line">        <tt id="link-343" class="py-name"><a title="epydoc.docwriter.plaintext.PlaintextWriter.title" class="py-name" href="#" onclick="return doclink('link-343', 'title', 'link-139');">title</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'Choose the output directory'</tt> </tt>
+<a name="L791"></a><tt class="py-lineno"> 791</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">askdirectory</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L792"></a><tt class="py-lineno"> 792</tt>  <tt class="py-line">            <tt id="link-344" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-344', 'filename', 'link-322');">filename</a></tt> <tt class="py-op">=</tt> <tt class="py-name">askdirectory</tt><tt class="py-op">(</tt><tt class="py-name">mustexist</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt id="link-345" class="py- [...]
+<a name="L793"></a><tt class="py-lineno"> 793</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-347" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-347', 'filename', 'link-322');">filename</a></tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> </tt>
+<a name="L794"></a><tt class="py-lineno"> 794</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L795"></a><tt class="py-lineno"> 795</tt>  <tt class="py-line">            <tt class="py-comment"># Hack for Python 2.1 or earlier:</tt> </tt>
+<a name="L796"></a><tt class="py-lineno"> 796</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt id="link-348" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-348', 'filename', 'link-322');">filename</a></tt> <tt class="py-op">=</tt> <tt class="py-name">asksaveasfilename</tt><tt class="py-op">(</tt><tt class="py-name">filetypes</tt><tt class="py-op">=</tt><tt class="py-name">ftypes</tt><tt class="py-op" [...]
+<a name="L797"></a><tt class="py-lineno"> 797</tt>  <tt class="py-line">                                         <tt class="py-name">initialfile</tt><tt class="py-op">=</tt><tt class="py-string">'--this directory--'</tt><tt class="py-op">)</tt> </tt>
+<a name="L798"></a><tt class="py-lineno"> 798</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-351" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-351', 'filename', 'link-322');">filename</a></tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> </tt>
+<a name="L799"></a><tt class="py-lineno"> 799</tt>  <tt class="py-line">            <tt class="py-op">(</tt><tt class="py-name">f1</tt><tt class="py-op">,</tt> <tt class="py-name">f2</tt><tt class="py-op">)</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-352" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-352', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt class="p [...]
+<a name="L800"></a><tt class="py-lineno"> 800</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">f2</tt> <tt class="py-op">==</tt> <tt class="py-string">'--this directory--'</tt><tt class="py-op">:</tt> <tt id="link-354" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-354', 'filename', 'link-322');">filename</a></tt> <tt class="py-op">=</tt> <tt class="py-name">f1</tt> </tt>
+<a name="L801"></a><tt class="py-lineno"> 801</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_out_entry</tt><tt class="py-op">.</tt><tt class="py-name">delete</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-string">'end'</tt><tt class="py-op">)</tt> </tt>
+<a name="L802"></a><tt class="py-lineno"> 802</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_out_entry</tt><tt class="py-op">.</tt><tt class="py-name">insert</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt id="link-355" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-355', 'filename', 'link-322');">filename</a></tt><tt class= [...]
+</div><a name="L803"></a><tt class="py-lineno"> 803</tt>  <tt class="py-line"> </tt>
+<a name="EpydocGUI.destroy"></a><div id="EpydocGUI.destroy-def"><a name="L804"></a><tt class="py-lineno"> 804</tt> <a class="py-toggle" href="#" id="EpydocGUI.destroy-toggle" onclick="return toggle('EpydocGUI.destroy');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.gui.EpydocGUI-class.html#destroy">destroy</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-param">e</tt [...]
+</div><div id="EpydocGUI.destroy-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="EpydocGUI.destroy-expanded"><a name="L805"></a><tt class="py-lineno"> 805</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_root</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> </tt>
+<a name="L806"></a><tt class="py-lineno"> 806</tt>  <tt class="py-line"> </tt>
+<a name="L807"></a><tt class="py-lineno"> 807</tt>  <tt class="py-line">        <tt class="py-comment"># Unload any modules that we've imported</tt> </tt>
+<a name="L808"></a><tt class="py-lineno"> 808</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">for</tt> <tt class="py-name">m</tt> <tt class="py-keyword">in</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">modules</tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L809"></a><tt class="py-lineno"> 809</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">m</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_old_modules</tt><tt class="py-op">:</tt> <tt class="py-keyword">del</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">modules</tt><tt class="py-op">[</tt><tt class="py-name">m</tt><tt cl [...]
+<a name="L810"></a><tt class="py-lineno"> 810</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_root</tt><tt class="py-op">.</tt><tt id="link-356" class="py-name"><a title="epydoc.gui.EpydocGUI.destroy" class="py-name" href="#" onclick="return doclink('link-356', 'destroy', 'link-135');">destroy</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L811"></a><tt class="py-lineno"> 811</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_root</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+</div><a name="L812"></a><tt class="py-lineno"> 812</tt>  <tt class="py-line"> </tt>
+<a name="EpydocGUI.add_module"></a><div id="EpydocGUI.add_module-def"><a name="L813"></a><tt class="py-lineno"> 813</tt> <a class="py-toggle" href="#" id="EpydocGUI.add_module-toggle" onclick="return toggle('EpydocGUI.add_module');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.gui.EpydocGUI-class.html#add_module">add_module</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">name</tt><t [...]
+</div><div id="EpydocGUI.add_module-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="EpydocGUI.add_module-expanded"><a name="L814"></a><tt class="py-lineno"> 814</tt>  <tt class="py-line">        <tt class="py-keyword">from</tt> <tt id="link-357" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-357', 'epydoc', 'link-87');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-358" class="py-name"><a title="epydoc.test.util
+epydoc.util" class="py-name" href="#" onclick="return doclink('link-358', 'util', 'link-90');">util</a></tt> <tt class="py-keyword">import</tt> <tt id="link-359" class="py-name" targets="Function epydoc.util.is_package_dir()=epydoc.util-module.html#is_package_dir"><a title="epydoc.util.is_package_dir" class="py-name" href="#" onclick="return doclink('link-359', 'is_package_dir', 'link-359');">is_package_dir</a></tt><tt class="py-op">,</tt> <tt id="link-360" class="py-name" targets="Funct [...]
+<a name="L815"></a><tt class="py-lineno"> 815</tt>  <tt class="py-line">        <tt class="py-keyword">from</tt> <tt id="link-362" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-362', 'epydoc', 'link-87');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-363" class="py-name" targets="Module epydoc.docintrospecter=epydoc.docintrospecter-module.html"><a title="epydoc.docintrospecter" class="py-name" href="#" onclick="return doclink('link-363',  [...]
+<a name="L816"></a><tt class="py-lineno"> 816</tt>  <tt class="py-line">        <tt class="py-keyword">from</tt> <tt id="link-365" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-365', 'epydoc', 'link-87');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-366" class="py-name"><a title="epydoc.docintrospecter" class="py-name" href="#" onclick="return doclink('link-366', 'docintrospecter', 'link-363');">docintrospecter</a></tt> <tt class="py-key [...]
+<a name="L817"></a><tt class="py-lineno"> 817</tt>  <tt class="py-line"> </tt>
+<a name="L818"></a><tt class="py-lineno"> 818</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-368" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-368', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt class="py-name">isfile</tt><tt class="py-op">(</tt><tt id="link-369" class="py-name"><a title="epydoc.apidoc.V [...]
+<a name="L819"></a><tt class="py-lineno"> 819</tt>  <tt class="py-line">            <tt class="py-comment"># Check that it's a good module, if requested.</tt> </tt>
+<a name="L820"></a><tt class="py-lineno"> 820</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt id="link-374" class="py-name"><a title="epydoc.checker.DocChecker.check" class="py-name" href="#" onclick="return doclink('link-374', 'check', 'link-320');">check</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L821"></a><tt class="py-lineno"> 821</tt>  <tt class="py-line">                <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L822"></a><tt class="py-lineno"> 822</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt id="link-375" class="py-name"><a title="epydoc.util.is_module_file" class="py-name" href="#" onclick="return doclink('link-375', 'is_module_file', 'link-361');">is_module_file</a></tt><tt class="py-op">(</tt><tt id="link-376" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-376', 'name', 'link-294'); [...]
+<a name="L823"></a><tt class="py-lineno"> 823</tt>  <tt class="py-line">                        <tt id="link-379" class="py-name"><a title="epydoc.docintrospecter.get_value_from_filename" class="py-name" href="#" onclick="return doclink('link-379', 'get_value_from_filename', 'link-367');">get_value_from_filename</a></tt><tt class="py-op">(</tt><tt id="link-380" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-380', 'name', ' [...]
+<a name="L824"></a><tt class="py-lineno"> 824</tt>  <tt class="py-line">                    <tt class="py-keyword">elif</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-381" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-381', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt class="py-name">isfile</tt><tt class="py-op">(</tt><tt id="link-382" class="py-name"><a title="epydoc.apidoc.VariableDoc [...]
+<a name="L825"></a><tt class="py-lineno"> 825</tt>  <tt class="py-line">                        <tt id="link-383" class="py-name" targets="Function epydoc.docintrospecter.get_value_from_scriptname()=epydoc.docintrospecter-module.html#get_value_from_scriptname"><a title="epydoc.docintrospecter.get_value_from_scriptname" class="py-name" href="#" onclick="return doclink('link-383', 'get_value_from_scriptname', 'link-383');">get_value_from_scriptname</a></tt><tt class="py-op">(</tt><tt id="l [...]
+<a name="L826"></a><tt class="py-lineno"> 826</tt>  <tt class="py-line">                    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L827"></a><tt class="py-lineno"> 827</tt>  <tt class="py-line">                        <tt id="link-385" class="py-name"><a title="epydoc.docintrospecter.get_value_from_name" class="py-name" href="#" onclick="return doclink('link-385', 'get_value_from_name', 'link-364');">get_value_from_name</a></tt><tt class="py-op">(</tt><tt id="link-386" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-386', 'name', 'link-294');" [...]
+<a name="L828"></a><tt class="py-lineno"> 828</tt>  <tt class="py-line">                <tt class="py-keyword">except</tt> <tt class="py-name">ImportError</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
+<a name="L829"></a><tt class="py-lineno"> 829</tt>  <tt class="py-line">                    <tt id="link-387" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-387', 'log', 'link-88');">log</a></tt><tt class="py-op">.</tt><tt id="link-388" class="py-name"><a title="epydoc.log.error" class="py-name" href="#" onclick="return doclink('link-388', 'error', 'link-129');">error</a></tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">)</tt> </tt>
+<a name="L830"></a><tt class="py-lineno"> 830</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-389" class="py-name" targets="Method epydoc.gui.EpydocGUI._update_messages()=epydoc.gui.EpydocGUI-class.html#_update_messages"><a title="epydoc.gui.EpydocGUI._update_messages" class="py-name" href="#" onclick="return doclink('link-389', '_update_messages', 'link-389');">_update_messages</a></tt><tt class="py-op">(</tt><tt class="py- [...]
+<a name="L831"></a><tt class="py-lineno"> 831</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_root</tt><tt class="py-op">.</tt><tt class="py-name">bell</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L832"></a><tt class="py-lineno"> 832</tt>  <tt class="py-line">                    <tt class="py-keyword">return</tt> </tt>
+<a name="L833"></a><tt class="py-lineno"> 833</tt>  <tt class="py-line">             </tt>
+<a name="L834"></a><tt class="py-lineno"> 834</tt>  <tt class="py-line">            <tt class="py-comment"># Add the module to the list of modules.</tt> </tt>
+<a name="L835"></a><tt class="py-lineno"> 835</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_module_list</tt><tt class="py-op">.</tt><tt class="py-name">insert</tt><tt class="py-op">(</tt><tt class="py-string">'end'</tt><tt class="py-op">,</tt> <tt id="link-390" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-390', 'name', 'link-294 [...]
+<a name="L836"></a><tt class="py-lineno"> 836</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_module_list</tt><tt class="py-op">.</tt><tt class="py-name">yview</tt><tt class="py-op">(</tt><tt class="py-string">'end'</tt><tt class="py-op">)</tt> </tt>
+<a name="L837"></a><tt class="py-lineno"> 837</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L838"></a><tt class="py-lineno"> 838</tt>  <tt class="py-line">            <tt id="link-391" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-391', 'log', 'link-88');">log</a></tt><tt class="py-op">.</tt><tt id="link-392" class="py-name"><a title="epydoc.log.error" class="py-name" href="#" onclick="return doclink('link-392', 'error', 'link-129');">error</a></tt><tt class="py-op">(</tt><tt class="py-string">"Couldn't find %r"</tt> <tt class="py-op">%</tt> <tt id="link-393" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" [...]
+<a name="L839"></a><tt class="py-lineno"> 839</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-394" class="py-name"><a title="epydoc.gui.EpydocGUI._update_messages" class="py-name" href="#" onclick="return doclink('link-394', '_update_messages', 'link-389');">_update_messages</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L840"></a><tt class="py-lineno"> 840</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_root</tt><tt class="py-op">.</tt><tt class="py-name">bell</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L841"></a><tt class="py-lineno"> 841</tt>  <tt class="py-line">         </tt>
+<a name="EpydocGUI.mainloop"></a><div id="EpydocGUI.mainloop-def"><a name="L842"></a><tt class="py-lineno"> 842</tt> <a class="py-toggle" href="#" id="EpydocGUI.mainloop-toggle" onclick="return toggle('EpydocGUI.mainloop');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.gui.EpydocGUI-class.html#mainloop">mainloop</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-param" [...]
+</div><div id="EpydocGUI.mainloop-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="EpydocGUI.mainloop-expanded"><a name="L843"></a><tt class="py-lineno"> 843</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_root</tt><tt class="py-op">.</tt><tt id="link-395" class="py-name" targets="Method epydoc.gui.EpydocGUI.mainloop()=epydoc.gui.EpydocGUI-class.html#mainloop"><a title="epydoc.gui.EpydocGUI.mainloop"  [...]
+</div><a name="L844"></a><tt class="py-lineno"> 844</tt>  <tt class="py-line"> </tt>
+<a name="EpydocGUI._getopts"></a><div id="EpydocGUI._getopts-def"><a name="L845"></a><tt class="py-lineno"> 845</tt> <a class="py-toggle" href="#" id="EpydocGUI._getopts-toggle" onclick="return toggle('EpydocGUI._getopts');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.gui.EpydocGUI-class.html#_getopts">_getopts</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="EpydocGUI._getopts-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="EpydocGUI._getopts-expanded"><a name="L846"></a><tt class="py-lineno"> 846</tt>  <tt class="py-line">        <tt class="py-name">options</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L847"></a><tt class="py-lineno"> 847</tt>  <tt class="py-line">        <tt class="py-name">options</tt><tt class="py-op">[</tt><tt class="py-string">'modules'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_module_list</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-string">'end'</tt><tt class="py-op">) [...]
+<a name="L848"></a><tt class="py-lineno"> 848</tt>  <tt class="py-line">        <tt class="py-name">options</tt><tt class="py-op">[</tt><tt class="py-string">'prj_name'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_name_entry</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-string">''</tt> </tt>
+<a name="L849"></a><tt class="py-lineno"> 849</tt>  <tt class="py-line">        <tt class="py-name">options</tt><tt class="py-op">[</tt><tt class="py-string">'prj_url'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_url_entry</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-name">None</tt> </tt>
+<a name="L850"></a><tt class="py-lineno"> 850</tt>  <tt class="py-line">        <tt class="py-name">options</tt><tt class="py-op">[</tt><tt class="py-string">'docformat'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_docformat_var</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L851"></a><tt class="py-lineno"> 851</tt>  <tt class="py-line">        <tt class="py-name">options</tt><tt class="py-op">[</tt><tt class="py-string">'inheritance'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_inheritance_var</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L852"></a><tt class="py-lineno"> 852</tt>  <tt class="py-line">        <tt class="py-name">options</tt><tt class="py-op">[</tt><tt class="py-string">'introspect_or_parse'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_introspect_or_parse_var</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L853"></a><tt class="py-lineno"> 853</tt>  <tt class="py-line">        <tt class="py-name">options</tt><tt class="py-op">[</tt><tt class="py-string">'target'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_out_entry</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-string">'html'</tt> </tt>
+<a name="L854"></a><tt class="py-lineno"> 854</tt>  <tt class="py-line">        <tt class="py-name">options</tt><tt class="py-op">[</tt><tt class="py-string">'frames'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_frames_var</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L855"></a><tt class="py-lineno"> 855</tt>  <tt class="py-line">        <tt class="py-name">options</tt><tt class="py-op">[</tt><tt class="py-string">'private'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_private_var</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L856"></a><tt class="py-lineno"> 856</tt>  <tt class="py-line">        <tt class="py-name">options</tt><tt class="py-op">[</tt><tt class="py-string">'show_imports'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_imports_var</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L857"></a><tt class="py-lineno"> 857</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_help_var</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-string">'-other-'</tt><tt class="py-op">:</tt> </tt>
+<a name="L858"></a><tt class="py-lineno"> 858</tt>  <tt class="py-line">            <tt class="py-name">options</tt><tt class="py-op">[</tt><tt class="py-string">'help'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_help_entry</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-name">None</tt> </tt>
+<a name="L859"></a><tt class="py-lineno"> 859</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L860"></a><tt class="py-lineno"> 860</tt>  <tt class="py-line">            <tt class="py-name">options</tt><tt class="py-op">[</tt><tt class="py-string">'help'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L861"></a><tt class="py-lineno"> 861</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_css_var</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-string">'-other-'</tt><tt class="py-op">:</tt> </tt>
+<a name="L862"></a><tt class="py-lineno"> 862</tt>  <tt class="py-line">            <tt class="py-name">options</tt><tt class="py-op">[</tt><tt class="py-string">'css'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_css_entry</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-string">'default'</tt> </tt>
+<a name="L863"></a><tt class="py-lineno"> 863</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L864"></a><tt class="py-lineno"> 864</tt>  <tt class="py-line">            <tt class="py-name">options</tt><tt class="py-op">[</tt><tt class="py-string">'css'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_css_var</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-string">'default'</tt> </tt>
+<a name="L865"></a><tt class="py-lineno"> 865</tt>  <tt class="py-line">        <tt class="py-comment">#if self._private_css_var.get() == '-other-':</tt> </tt>
+<a name="L866"></a><tt class="py-lineno"> 866</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#    options['private_css'] = self._css_entry.get() or 'default'</tt> </tt>
+<a name="L867"></a><tt class="py-lineno"> 867</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#else:</tt> </tt>
+<a name="L868"></a><tt class="py-lineno"> 868</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#    options['private_css'] = self._private_css_var.get() or 'default'</tt> </tt>
+<a name="L869"></a><tt class="py-lineno"> 869</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">return</tt> <tt class="py-name">options</tt> </tt>
+</div><a name="L870"></a><tt class="py-lineno"> 870</tt>  <tt class="py-line">     </tt>
+<a name="EpydocGUI._go"></a><div id="EpydocGUI._go-def"><a name="L871"></a><tt class="py-lineno"> 871</tt> <a class="py-toggle" href="#" id="EpydocGUI._go-toggle" onclick="return toggle('EpydocGUI._go');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.gui.EpydocGUI-class.html#_go">_go</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-param">e</tt><tt class="py-op">)</tt [...]
+</div><div id="EpydocGUI._go-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="EpydocGUI._go-expanded"><a name="L872"></a><tt class="py-lineno"> 872</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_module_list</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt c [...]
+<a name="L873"></a><tt class="py-lineno"> 873</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_root</tt><tt class="py-op">.</tt><tt class="py-name">bell</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L874"></a><tt class="py-lineno"> 874</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> </tt>
+<a name="L875"></a><tt class="py-lineno"> 875</tt>  <tt class="py-line"> </tt>
+<a name="L876"></a><tt class="py-lineno"> 876</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_progress</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">!=</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L877"></a><tt class="py-lineno"> 877</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cancel</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L878"></a><tt class="py-lineno"> 878</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> </tt>
+<a name="L879"></a><tt class="py-lineno"> 879</tt>  <tt class="py-line"> </tt>
+<a name="L880"></a><tt class="py-lineno"> 880</tt>  <tt class="py-line">        <tt class="py-comment"># Construct the argument list for document().</tt> </tt>
+<a name="L881"></a><tt class="py-lineno"> 881</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">opts</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-396" class="py-name" targets="Method epydoc.gui.EpydocGUI._getopts()=epydoc.gui.EpydocGUI-class.html#_getopts"><a title="epydoc.gui.EpydocGUI._getopts" class="py-name" href="#" onclick="return doclink('link-396', '_getopts', 'link-396');">_getopts</a></tt><tt cla [...]
+<a name="L882"></a><tt class="py-lineno"> 882</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_progress</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-number">0.0</tt> </tt>
+<a name="L883"></a><tt class="py-lineno"> 883</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cancel</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L884"></a><tt class="py-lineno"> 884</tt>  <tt class="py-line">        <tt class="py-name">args</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">opts</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cancel</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_progress</tt><tt class="py-op">)</tt> </tt>
+<a name="L885"></a><tt class="py-lineno"> 885</tt>  <tt class="py-line"> </tt>
+<a name="L886"></a><tt class="py-lineno"> 886</tt>  <tt class="py-line">        <tt class="py-comment"># Clear the messages window.</tt> </tt>
+<a name="L887"></a><tt class="py-lineno"> 887</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_messages</tt><tt class="py-op">[</tt><tt class="py-string">'state'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">'normal'</tt> </tt>
+<a name="L888"></a><tt class="py-lineno"> 888</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_messages</tt><tt class="py-op">.</tt><tt class="py-name">delete</tt><tt class="py-op">(</tt><tt class="py-string">'0.0'</tt><tt class="py-op">,</tt> <tt class="py-string">'end'</tt><tt class="py-op">)</tt> </tt>
+<a name="L889"></a><tt class="py-lineno"> 889</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_messages</tt><tt class="py-op">[</tt><tt class="py-string">'state'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">'disabled'</tt> </tt>
+<a name="L890"></a><tt class="py-lineno"> 890</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_logger</tt><tt class="py-op">.</tt><tt id="link-397" class="py-name"><a title="epydoc.docwriter.xlink.DocUrlGenerator.clear
+epydoc.gui.GUILogger.clear" class="py-name" href="#" onclick="return doclink('link-397', 'clear', 'link-94');">clear</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L891"></a><tt class="py-lineno"> 891</tt>  <tt class="py-line"> </tt>
+<a name="L892"></a><tt class="py-lineno"> 892</tt>  <tt class="py-line">        <tt class="py-comment"># Restore the module list.  This will force re-loading of</tt> </tt>
+<a name="L893"></a><tt class="py-lineno"> 893</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># anything that we're documenting.</tt> </tt>
+<a name="L894"></a><tt class="py-lineno"> 894</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">for</tt> <tt class="py-name">m</tt> <tt class="py-keyword">in</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">modules</tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L895"></a><tt class="py-lineno"> 895</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">m</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_old_modules</tt><tt class="py-op">:</tt> </tt>
+<a name="L896"></a><tt class="py-lineno"> 896</tt>  <tt class="py-line">                <tt class="py-keyword">del</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">modules</tt><tt class="py-op">[</tt><tt class="py-name">m</tt><tt class="py-op">]</tt> </tt>
+<a name="L897"></a><tt class="py-lineno"> 897</tt>  <tt class="py-line"> </tt>
+<a name="L898"></a><tt class="py-lineno"> 898</tt>  <tt class="py-line">        <tt class="py-comment"># [xx] Reset caches??</tt> </tt>
+<a name="L899"></a><tt class="py-lineno"> 899</tt>  <tt class="py-line"><tt class="py-comment"></tt>     </tt>
+<a name="L900"></a><tt class="py-lineno"> 900</tt>  <tt class="py-line">        <tt class="py-comment"># Start documenting</tt> </tt>
+<a name="L901"></a><tt class="py-lineno"> 901</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">start_new_thread</tt><tt class="py-op">(</tt><tt id="link-398" class="py-name" targets="Function epydoc.gui.document()=epydoc.gui-module.html#document"><a title="epydoc.gui.document" class="py-name" href="#" onclick="return doclink('link-398', 'document', 'link-398');">document</a></tt><tt class="py-op">,</tt> <tt class="py-name">args</tt><tt class="py-op">)</tt> </tt>
+<a name="L902"></a><tt class="py-lineno"> 902</tt>  <tt class="py-line"> </tt>
+<a name="L903"></a><tt class="py-lineno"> 903</tt>  <tt class="py-line">        <tt class="py-comment"># Start the progress bar.</tt> </tt>
+<a name="L904"></a><tt class="py-lineno"> 904</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_go_button</tt><tt class="py-op">[</tt><tt class="py-string">'text'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">'Stop'</tt> </tt>
+<a name="L905"></a><tt class="py-lineno"> 905</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_afterid</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L906"></a><tt class="py-lineno"> 906</tt>  <tt class="py-line">        <tt class="py-name">dt</tt> <tt class="py-op">=</tt> <tt class="py-number">300</tt> <tt class="py-comment"># How often to update, in milliseconds</tt> </tt>
+<a name="L907"></a><tt class="py-lineno"> 907</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-399" class="py-name" targets="Method epydoc.gui.EpydocGUI._update()=epydoc.gui.EpydocGUI-class.html#_update"><a title="epydoc.gui.EpydocGUI._update" class="py-name" href="#" onclick="return doclink('link-399', '_update', 'link-399');">_update</a></tt><tt class="py-op">(</tt><tt class="py-name">dt</tt><tt class="py-op">,</tt> <tt class="py-name" [...]
+</div><a name="L908"></a><tt class="py-lineno"> 908</tt>  <tt class="py-line"> </tt>
+<a name="EpydocGUI._update_messages"></a><div id="EpydocGUI._update_messages-def"><a name="L909"></a><tt class="py-lineno"> 909</tt> <a class="py-toggle" href="#" id="EpydocGUI._update_messages-toggle" onclick="return toggle('EpydocGUI._update_messages');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.gui.EpydocGUI-class.html#_update_messages">_update_messages</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</ [...]
+</div><div id="EpydocGUI._update_messages-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="EpydocGUI._update_messages-expanded"><a name="L910"></a><tt class="py-lineno"> 910</tt>  <tt class="py-line">        <tt class="py-keyword">while</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L911"></a><tt class="py-lineno"> 911</tt>  <tt class="py-line">            <tt class="py-name">level</tt><tt class="py-op">,</tt> <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_logger</tt><tt class="py-op">.</tt><tt id="link-400" class="py-name" targets="Method epydoc.docintrospecter._DevNull.read()=epydoc.docintrospecter._DevNull-class.html#read,Method epydoc.docwriter.xlink.ApiLinkReader.read()=e [...]
+epydoc.docwriter.xlink.ApiLinkReader.read
+epydoc.gui.GUILogger.read" class="py-name" href="#" onclick="return doclink('link-400', 'read', 'link-400');">read</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L912"></a><tt class="py-lineno"> 912</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">data</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> <tt class="py-keyword">break</tt> </tt>
+<a name="L913"></a><tt class="py-lineno"> 913</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_messages</tt><tt class="py-op">[</tt><tt class="py-string">'state'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">'normal'</tt> </tt>
+<a name="L914"></a><tt class="py-lineno"> 914</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">level</tt> <tt class="py-op">==</tt> <tt class="py-string">'header'</tt><tt class="py-op">:</tt> </tt>
+<a name="L915"></a><tt class="py-lineno"> 915</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_messages</tt><tt class="py-op">.</tt><tt class="py-name">insert</tt><tt class="py-op">(</tt><tt class="py-string">'end'</tt><tt class="py-op">,</tt> <tt class="py-name">data</tt><tt class="py-op">,</tt> <tt class="py-string">'header'</tt><tt class="py-op">)</tt> </tt>
+<a name="L916"></a><tt class="py-lineno"> 916</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">level</tt> <tt class="py-op">==</tt> <tt class="py-string">'uline'</tt><tt class="py-op">:</tt> </tt>
+<a name="L917"></a><tt class="py-lineno"> 917</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_messages</tt><tt class="py-op">.</tt><tt class="py-name">insert</tt><tt class="py-op">(</tt><tt class="py-string">'end'</tt><tt class="py-op">,</tt> <tt class="py-name">data</tt><tt class="py-op">,</tt> <tt class="py-string">'uline header'</tt><tt class="py-op">)</tt> </tt>
+<a name="L918"></a><tt class="py-lineno"> 918</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">level</tt> <tt class="py-op">>=</tt> <tt id="link-401" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-401', 'log', 'link-88');">log</a></tt><tt class="py-op">.</tt><tt id="link-402" class="py-name" targets="Variable epydoc.log.ERROR=epydoc.log-module.html#ERROR"><a title="epydoc.log.ERROR" class="py-name" href="#" onclick="return doclink('link-402', 'ERROR', 'link-402');">ERROR</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L919"></a><tt class="py-lineno"> 919</tt>  <tt class="py-line">                <tt class="py-name">data</tt><tt class="py-op">=</tt> <tt class="py-name">data</tt><tt class="py-op">.</tt><tt class="py-name">rstrip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">+</tt><tt class="py-string">'\n\n'</tt> </tt>
+<a name="L920"></a><tt class="py-lineno"> 920</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_messages</tt><tt class="py-op">.</tt><tt class="py-name">insert</tt><tt class="py-op">(</tt><tt class="py-string">'end'</tt><tt class="py-op">,</tt> <tt class="py-name">data</tt><tt class="py-op">,</tt> <tt class="py-string">'guierror'</tt><tt class="py-op">)</tt> </tt>
+<a name="L921"></a><tt class="py-lineno"> 921</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">level</tt> <tt class="py-op">>=</tt> <tt id="link-403" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-403', 'log', 'link-88');">log</a></tt><tt class="py-op">.</tt><tt id="link-404" class="py-name" targets="Variable epydoc.log.DOCSTRING_WARNING=epydoc.log-module.html#DOCSTRING_WARNING"><a title="epydoc.log.DOCSTRING_WARNING" class="py-name" href="#" onclick="return doclink('link-404', 'DOCSTRING_WARNING', 'link-404');">DOCSTRING_WARNING</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L922"></a><tt class="py-lineno"> 922</tt>  <tt class="py-line">                <tt class="py-name">data</tt><tt class="py-op">=</tt> <tt class="py-name">data</tt><tt class="py-op">.</tt><tt class="py-name">rstrip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">+</tt><tt class="py-string">'\n\n'</tt> </tt>
+<a name="L923"></a><tt class="py-lineno"> 923</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_messages</tt><tt class="py-op">.</tt><tt class="py-name">insert</tt><tt class="py-op">(</tt><tt class="py-string">'end'</tt><tt class="py-op">,</tt> <tt class="py-name">data</tt><tt class="py-op">,</tt> <tt class="py-string">'warning'</tt><tt class="py-op">)</tt> </tt>
+<a name="L924"></a><tt class="py-lineno"> 924</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt id="link-405" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-405', 'log', 'link-88');">log</a></tt> <tt class="py-op">>=</tt> <tt id="link-406" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-406', 'log', 'link-88');">log</a></tt><tt class="py-op">.</tt><tt id="link-407" class="py-name"><a title="epydoc.log.INFO" class="py-name" href="#" onclick="return doclink('link-407', 'INFO', 'link-99');">INFO</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L925"></a><tt class="py-lineno"> 925</tt>  <tt class="py-line">                <tt class="py-name">data</tt><tt class="py-op">=</tt> <tt class="py-name">data</tt><tt class="py-op">.</tt><tt class="py-name">rstrip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">+</tt><tt class="py-string">'\n\n'</tt> </tt>
+<a name="L926"></a><tt class="py-lineno"> 926</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_messages</tt><tt class="py-op">.</tt><tt class="py-name">insert</tt><tt class="py-op">(</tt><tt class="py-string">'end'</tt><tt class="py-op">,</tt> <tt class="py-name">data</tt><tt class="py-op">,</tt> <tt class="py-string">'message'</tt><tt class="py-op">)</tt> </tt>
+<a name="L927"></a><tt class="py-lineno"> 927</tt>  <tt class="py-line"><tt class="py-comment">#                 if data == '\n':</tt> </tt>
+<a name="L928"></a><tt class="py-lineno"> 928</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#                     if self._last_tag != 'header2':</tt> </tt>
+<a name="L929"></a><tt class="py-lineno"> 929</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#                         self._messages.insert('end', '\n', self._last_tag)</tt> </tt>
+<a name="L930"></a><tt class="py-lineno"> 930</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#                 elif data == '='*75:</tt> </tt>
+<a name="L931"></a><tt class="py-lineno"> 931</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#                     if self._messages.get('end-3c', 'end') == '\n\n\n':</tt> </tt>
+<a name="L932"></a><tt class="py-lineno"> 932</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#                         self._messages.delete('end-1c')</tt> </tt>
+<a name="L933"></a><tt class="py-lineno"> 933</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#                     self._in_header = 1</tt> </tt>
+<a name="L934"></a><tt class="py-lineno"> 934</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#                     self._messages.insert('end', ' '*75, 'uline header')</tt> </tt>
+<a name="L935"></a><tt class="py-lineno"> 935</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#                     self._last_tag = 'header'</tt> </tt>
+<a name="L936"></a><tt class="py-lineno"> 936</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#                 elif data == '-'*75:</tt> </tt>
+<a name="L937"></a><tt class="py-lineno"> 937</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#                     self._in_header = 0</tt> </tt>
+<a name="L938"></a><tt class="py-lineno"> 938</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#                     self._last_tag = 'header2'</tt> </tt>
+<a name="L939"></a><tt class="py-lineno"> 939</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#                 elif self._in_header:</tt> </tt>
+<a name="L940"></a><tt class="py-lineno"> 940</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#                     self._messages.insert('end', data, 'header')</tt> </tt>
+<a name="L941"></a><tt class="py-lineno"> 941</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#                     self._last_tag = 'header'</tt> </tt>
+<a name="L942"></a><tt class="py-lineno"> 942</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#                 elif re.match(r'\s*(L\d+:|-)?\s*Warning: ', data):</tt> </tt>
+<a name="L943"></a><tt class="py-lineno"> 943</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#                     self._messages.insert('end', data, 'warning')</tt> </tt>
+<a name="L944"></a><tt class="py-lineno"> 944</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#                     self._last_tag = 'warning'</tt> </tt>
+<a name="L945"></a><tt class="py-lineno"> 945</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#                 else:</tt> </tt>
+<a name="L946"></a><tt class="py-lineno"> 946</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#                     self._messages.insert('end', data, 'error')</tt> </tt>
+<a name="L947"></a><tt class="py-lineno"> 947</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#                     self._last_tag = 'error'</tt> </tt>
+<a name="L948"></a><tt class="py-lineno"> 948</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L949"></a><tt class="py-lineno"> 949</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_messages</tt><tt class="py-op">[</tt><tt class="py-string">'state'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">'disabled'</tt> </tt>
+<a name="L950"></a><tt class="py-lineno"> 950</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_messages</tt><tt class="py-op">.</tt><tt class="py-name">yview</tt><tt class="py-op">(</tt><tt class="py-string">'end'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L951"></a><tt class="py-lineno"> 951</tt>  <tt class="py-line"> </tt>
+<a name="EpydocGUI._update"></a><div id="EpydocGUI._update-def"><a name="L952"></a><tt class="py-lineno"> 952</tt> <a class="py-toggle" href="#" id="EpydocGUI._update-toggle" onclick="return toggle('EpydocGUI._update');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.gui.EpydocGUI-class.html#_update">_update</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">dt</tt><tt class="py-op">,</t [...]
+</div><div id="EpydocGUI._update-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="EpydocGUI._update-expanded"><a name="L953"></a><tt class="py-lineno"> 953</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_root</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> </tt>
+<a name="L954"></a><tt class="py-lineno"> 954</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_progress</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> </tt>
+<a name="L955"></a><tt class="py-lineno"> 955</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">id</tt> <tt class="py-op">!=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_afterid</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> </tt>
+<a name="L956"></a><tt class="py-lineno"> 956</tt>  <tt class="py-line"> </tt>
+<a name="L957"></a><tt class="py-lineno"> 957</tt>  <tt class="py-line">        <tt class="py-comment"># Update the messages box</tt> </tt>
+<a name="L958"></a><tt class="py-lineno"> 958</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-408" class="py-name"><a title="epydoc.gui.EpydocGUI._update_messages" class="py-name" href="#" onclick="return doclink('link-408', '_update_messages', 'link-389');">_update_messages</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L959"></a><tt class="py-lineno"> 959</tt>  <tt class="py-line"> </tt>
+<a name="L960"></a><tt class="py-lineno"> 960</tt>  <tt class="py-line">        <tt class="py-comment"># Update the progress bar.</tt> </tt>
+<a name="L961"></a><tt class="py-lineno"> 961</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_progress</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">'done'</tt><tt class="py-op">:</tt> <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt> [...]
+<a name="L962"></a><tt class="py-lineno"> 962</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_progress</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">'cancel'</tt><tt class="py-op">:</tt> <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt class="py-op">-</tt><tt class="py-number">5</tt> </tt>
+<a name="L963"></a><tt class="py-lineno"> 963</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt id="link-410" class="py-name"><a title="epydoc.gui.DX" class="py-name" href="#" onclick="return doclink('link-410', 'DX', 'link-70');">DX</a></tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_W</tt> <tt class="py-op">*</tt> <tt class="py-name">s [...]
+<a name="L964"></a><tt class="py-lineno"> 964</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_canvas</tt><tt class="py-op">.</tt><tt class="py-name">coords</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_r1</tt><tt class="py-op">,</tt> <tt id="link-411" class="py-name"><a title="epydoc.gui.DX" class="py-name" href="#" onclick="return doclink('link-411', 'DX', 'link-70');">DX< [...]
+<a name="L965"></a><tt class="py-lineno"> 965</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_canvas</tt><tt class="py-op">.</tt><tt class="py-name">coords</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_r2</tt><tt class="py-op">,</tt> <tt id="link-413" class="py-name"><a title="epydoc.gui.DX" class="py-name" href="#" onclick="return doclink('link-413', 'DX', 'link-70');">DX< [...]
+<a name="L966"></a><tt class="py-lineno"> 966</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_canvas</tt><tt class="py-op">.</tt><tt class="py-name">coords</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_r3</tt><tt class="py-op">,</tt> <tt id="link-415" class="py-name"><a title="epydoc.gui.DX" class="py-name" href="#" onclick="return doclink('link-415', 'DX', 'link-70');">DX< [...]
+<a name="L967"></a><tt class="py-lineno"> 967</tt>  <tt class="py-line"> </tt>
+<a name="L968"></a><tt class="py-lineno"> 968</tt>  <tt class="py-line">        <tt class="py-comment"># Are we done?</tt> </tt>
+<a name="L969"></a><tt class="py-lineno"> 969</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_progress</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-string">'done'</tt><tt class="py-op">,</tt> <tt class="py-string">'cancel'</tt><tt class="py-op">)</tt><tt class="py-op" [...]
+<a name="L970"></a><tt class="py-lineno"> 970</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_progress</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">'cancel'</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_root</tt><tt class="py-op">.</tt><tt class="py-name"> [...]
+<a name="L971"></a><tt class="py-lineno"> 971</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_go_button</tt><tt class="py-op">[</tt><tt class="py-string">'text'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">'Start'</tt> </tt>
+<a name="L972"></a><tt class="py-lineno"> 972</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_progress</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L973"></a><tt class="py-lineno"> 973</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> </tt>
+<a name="L974"></a><tt class="py-lineno"> 974</tt>  <tt class="py-line"> </tt>
+<a name="L975"></a><tt class="py-lineno"> 975</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_root</tt><tt class="py-op">.</tt><tt class="py-name">after</tt><tt class="py-op">(</tt><tt class="py-name">dt</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-417" class="py-name"><a title="epydoc.gui.EpydocGUI._update" class="py-name" href="#" onclick="return doclink('link-417', '_update',  [...]
+</div><a name="L976"></a><tt class="py-lineno"> 976</tt>  <tt class="py-line"> </tt>
+<a name="EpydocGUI._new"></a><div id="EpydocGUI._new-def"><a name="L977"></a><tt class="py-lineno"> 977</tt> <a class="py-toggle" href="#" id="EpydocGUI._new-toggle" onclick="return toggle('EpydocGUI._new');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.gui.EpydocGUI-class.html#_new">_new</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-param">e</tt><tt class="py-op" [...]
+</div><div id="EpydocGUI._new-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="EpydocGUI._new-expanded"><a name="L978"></a><tt class="py-lineno"> 978</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_module_list</tt><tt class="py-op">.</tt><tt class="py-name">delete</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-string">'end'</tt><tt class="py-op">)</tt> </tt>
+<a name="L979"></a><tt class="py-lineno"> 979</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_name_entry</tt><tt class="py-op">.</tt><tt class="py-name">delete</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-string">'end'</tt><tt class="py-op">)</tt> </tt>
+<a name="L980"></a><tt class="py-lineno"> 980</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_url_entry</tt><tt class="py-op">.</tt><tt class="py-name">delete</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-string">'end'</tt><tt class="py-op">)</tt> </tt>
+<a name="L981"></a><tt class="py-lineno"> 981</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_docformat_var</tt><tt class="py-op">.</tt><tt class="py-name">set</tt><tt class="py-op">(</tt><tt class="py-string">'epytext'</tt><tt class="py-op">)</tt> </tt>
+<a name="L982"></a><tt class="py-lineno"> 982</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_inheritance_var</tt><tt class="py-op">.</tt><tt class="py-name">set</tt><tt class="py-op">(</tt><tt class="py-string">'grouped'</tt><tt class="py-op">)</tt> </tt>
+<a name="L983"></a><tt class="py-lineno"> 983</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_introspect_or_parse_var</tt><tt class="py-op">.</tt><tt class="py-name">set</tt><tt class="py-op">(</tt><tt class="py-string">'both'</tt><tt class="py-op">)</tt> </tt>
+<a name="L984"></a><tt class="py-lineno"> 984</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_out_entry</tt><tt class="py-op">.</tt><tt class="py-name">delete</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-string">'end'</tt><tt class="py-op">)</tt> </tt>
+<a name="L985"></a><tt class="py-lineno"> 985</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_module_entry</tt><tt class="py-op">.</tt><tt class="py-name">delete</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-string">'end'</tt><tt class="py-op">)</tt> </tt>
+<a name="L986"></a><tt class="py-lineno"> 986</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_css_entry</tt><tt class="py-op">.</tt><tt class="py-name">delete</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-string">'end'</tt><tt class="py-op">)</tt> </tt>
+<a name="L987"></a><tt class="py-lineno"> 987</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_help_entry</tt><tt class="py-op">.</tt><tt class="py-name">delete</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-string">'end'</tt><tt class="py-op">)</tt> </tt>
+<a name="L988"></a><tt class="py-lineno"> 988</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_frames_var</tt><tt class="py-op">.</tt><tt class="py-name">set</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L989"></a><tt class="py-lineno"> 989</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_private_var</tt><tt class="py-op">.</tt><tt class="py-name">set</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L990"></a><tt class="py-lineno"> 990</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_imports_var</tt><tt class="py-op">.</tt><tt class="py-name">set</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+<a name="L991"></a><tt class="py-lineno"> 991</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_css_var</tt><tt class="py-op">.</tt><tt class="py-name">set</tt><tt class="py-op">(</tt><tt class="py-string">'default'</tt><tt class="py-op">)</tt> </tt>
+<a name="L992"></a><tt class="py-lineno"> 992</tt>  <tt class="py-line">        <tt class="py-comment">#self._private_css_var.set('default')</tt> </tt>
+<a name="L993"></a><tt class="py-lineno"> 993</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_help_var</tt><tt class="py-op">.</tt><tt class="py-name">set</tt><tt class="py-op">(</tt><tt class="py-string">'default'</tt><tt class="py-op">)</tt> </tt>
+<a name="L994"></a><tt class="py-lineno"> 994</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_filename</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L995"></a><tt class="py-lineno"> 995</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_init_dir</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+</div><a name="L996"></a><tt class="py-lineno"> 996</tt>  <tt class="py-line"> </tt>
+<a name="EpydocGUI._open"></a><div id="EpydocGUI._open-def"><a name="L997"></a><tt class="py-lineno"> 997</tt> <a class="py-toggle" href="#" id="EpydocGUI._open-toggle" onclick="return toggle('EpydocGUI._open');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.gui.EpydocGUI-class.html#_open">_open</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-param">e</tt><tt class=" [...]
+</div><div id="EpydocGUI._open-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="EpydocGUI._open-expanded"><a name="L998"></a><tt class="py-lineno"> 998</tt>  <tt class="py-line">        <tt id="link-418" class="py-name"><a title="epydoc.docwriter.plaintext.PlaintextWriter.title" class="py-name" href="#" onclick="return doclink('link-418', 'title', 'link-139');">title</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'Open project'</tt> </tt>
+<a name="L999"></a><tt class="py-lineno"> 999</tt>  <tt class="py-line">        <tt class="py-name">ftypes</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-string">'Project file'</tt><tt class="py-op">,</tt> <tt class="py-string">'.prj'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1000"></a><tt class="py-lineno">1000</tt>  <tt class="py-line">                  <tt class="py-op">(</tt><tt class="py-string">'All files'</tt><tt class="py-op">,</tt> <tt class="py-string">'*'</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt>
+<a name="L1001"></a><tt class="py-lineno">1001</tt>  <tt class="py-line">        <tt id="link-419" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-419', 'filename', 'link-322');">filename</a></tt> <tt class="py-op">=</tt> <tt class="py-name">askopenfilename</tt><tt class="py-op">(</tt><tt class="py-name">filetypes</tt><tt class="py-op">=</tt><tt class="py-name">ftypes</tt><tt class="py-op">,</tt> <tt id="link-420" class=" [...]
+<a name="L1002"></a><tt class="py-lineno">1002</tt>  <tt class="py-line">                                   <tt class="py-name">defaultextension</tt><tt class="py-op">=</tt><tt class="py-string">'.css'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1003"></a><tt class="py-lineno">1003</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-422" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-422', 'filename', 'link-322');">filename</a></tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> </tt>
+<a name="L1004"></a><tt class="py-lineno">1004</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-423" class="py-name" targets="Method epydoc.gui.EpydocGUI.open()=epydoc.gui.EpydocGUI-class.html#open"><a title="epydoc.gui.EpydocGUI.open" class="py-name" href="#" onclick="return doclink('link-423', 'open', 'link-423');">open</a></tt><tt class="py-op">(</tt><tt id="link-424" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class=" [...]
+</div><a name="L1005"></a><tt class="py-lineno">1005</tt>  <tt class="py-line"> </tt>
+<a name="EpydocGUI.open"></a><div id="EpydocGUI.open-def"><a name="L1006"></a><tt class="py-lineno">1006</tt> <a class="py-toggle" href="#" id="EpydocGUI.open-toggle" onclick="return toggle('EpydocGUI.open');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.gui.EpydocGUI-class.html#open">open</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">prjfile</tt><tt class="py-op">)</tt><tt class= [...]
+</div><div id="EpydocGUI.open-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="EpydocGUI.open-expanded"><a name="L1007"></a><tt class="py-lineno">1007</tt>  <tt class="py-line">        <tt class="py-keyword">from</tt> <tt id="link-425" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-425', 'epydoc', 'link-87');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-426" class="py-name"><a title="epydoc.docwriter" class="py [...]
+<a name="L1008"></a><tt class="py-lineno">1008</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_filename</tt> <tt class="py-op">=</tt> <tt class="py-name">prjfile</tt> </tt>
+<a name="L1009"></a><tt class="py-lineno">1009</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L1010"></a><tt class="py-lineno">1010</tt>  <tt class="py-line">            <tt class="py-name">opts</tt> <tt class="py-op">=</tt> <tt class="py-name">load</tt><tt class="py-op">(</tt><tt id="link-429" class="py-name"><a title="epydoc.gui.EpydocGUI.open" class="py-name" href="#" onclick="return doclink('link-429', 'open', 'link-423');">open</a></tt><tt class="py-op">(</tt><tt class="py-name">prjfile</tt><tt class="py-op">,</tt> <tt class="py-string">'r'</tt><tt class="py-op">)</ [...]
+<a name="L1011"></a><tt class="py-lineno">1011</tt>  <tt class="py-line">             </tt>
+<a name="L1012"></a><tt class="py-lineno">1012</tt>  <tt class="py-line">            <tt class="py-name">modnames</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">opts</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'modules'</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1013"></a><tt class="py-lineno">1013</tt>  <tt class="py-line">            <tt class="py-name">modnames</tt><tt class="py-op">.</tt><tt class="py-name">sort</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1014"></a><tt class="py-lineno">1014</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_module_list</tt><tt class="py-op">.</tt><tt class="py-name">delete</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-string">'end'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1015"></a><tt class="py-lineno">1015</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt id="link-430" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-430', 'name', 'link-294');">name</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">modnames</tt><tt class="py-op">:</tt> </tt>
+<a name="L1016"></a><tt class="py-lineno">1016</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-431" class="py-name"><a title="epydoc.gui.EpydocGUI.add_module" class="py-name" href="#" onclick="return doclink('link-431', 'add_module', 'link-318');">add_module</a></tt><tt class="py-op">(</tt><tt id="link-432" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-432', 'nam [...]
+<a name="L1017"></a><tt class="py-lineno">1017</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_module_entry</tt><tt class="py-op">.</tt><tt class="py-name">delete</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-string">'end'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1018"></a><tt class="py-lineno">1018</tt>  <tt class="py-line">                 </tt>
+<a name="L1019"></a><tt class="py-lineno">1019</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_name_entry</tt><tt class="py-op">.</tt><tt class="py-name">delete</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-string">'end'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1020"></a><tt class="py-lineno">1020</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">opts</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'prj_name'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1021"></a><tt class="py-lineno">1021</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_name_entry</tt><tt class="py-op">.</tt><tt class="py-name">insert</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">opts</tt><tt class="py-op">[</tt><tt class="py-string">'prj_name'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1022"></a><tt class="py-lineno">1022</tt>  <tt class="py-line">                 </tt>
+<a name="L1023"></a><tt class="py-lineno">1023</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_url_entry</tt><tt class="py-op">.</tt><tt class="py-name">delete</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-string">'end'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1024"></a><tt class="py-lineno">1024</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">opts</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'prj_url'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1025"></a><tt class="py-lineno">1025</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_url_entry</tt><tt class="py-op">.</tt><tt class="py-name">insert</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">opts</tt><tt class="py-op">[</tt><tt class="py-string">'prj_url'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1026"></a><tt class="py-lineno">1026</tt>  <tt class="py-line"> </tt>
+<a name="L1027"></a><tt class="py-lineno">1027</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_docformat_var</tt><tt class="py-op">.</tt><tt class="py-name">set</tt><tt class="py-op">(</tt><tt class="py-name">opts</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'docformat'</tt><tt class="py-op">,</tt> <tt class="py-string">'epytext'</tt><tt class="py-op">)</tt><tt class=" [...]
+<a name="L1028"></a><tt class="py-lineno">1028</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_inheritance_var</tt><tt class="py-op">.</tt><tt class="py-name">set</tt><tt class="py-op">(</tt><tt class="py-name">opts</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'inheritance'</tt><tt class="py-op">,</tt> <tt class="py-string">'grouped'</tt><tt class="py-op">)</tt><tt cla [...]
+<a name="L1029"></a><tt class="py-lineno">1029</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_introspect_or_parse_var</tt><tt class="py-op">.</tt><tt class="py-name">set</tt><tt class="py-op">(</tt> </tt>
+<a name="L1030"></a><tt class="py-lineno">1030</tt>  <tt class="py-line">                <tt class="py-name">opts</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'introspect_or_parse'</tt><tt class="py-op">,</tt> <tt class="py-string">'both'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1031"></a><tt class="py-lineno">1031</tt>  <tt class="py-line"> </tt>
+<a name="L1032"></a><tt class="py-lineno">1032</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_help_entry</tt><tt class="py-op">.</tt><tt class="py-name">delete</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-string">'end'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1033"></a><tt class="py-lineno">1033</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">opts</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'help'</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1034"></a><tt class="py-lineno">1034</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_help_var</tt><tt class="py-op">.</tt><tt class="py-name">set</tt><tt class="py-op">(</tt><tt class="py-string">'default'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1035"></a><tt class="py-lineno">1035</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1036"></a><tt class="py-lineno">1036</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_help_var</tt><tt class="py-op">.</tt><tt class="py-name">set</tt><tt class="py-op">(</tt><tt class="py-string">'-other-'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1037"></a><tt class="py-lineno">1037</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_help_entry</tt><tt class="py-op">.</tt><tt class="py-name">insert</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">opts</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'help'</tt><tt class="py-op">)</tt><tt class="py-op">)< [...]
+<a name="L1038"></a><tt class="py-lineno">1038</tt>  <tt class="py-line">                 </tt>
+<a name="L1039"></a><tt class="py-lineno">1039</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_out_entry</tt><tt class="py-op">.</tt><tt class="py-name">delete</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-string">'end'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1040"></a><tt class="py-lineno">1040</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_out_entry</tt><tt class="py-op">.</tt><tt class="py-name">insert</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">opts</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'target'</tt><tt class="py-op">,</tt> <tt class="py-string"> [...]
+<a name="L1041"></a><tt class="py-lineno">1041</tt>  <tt class="py-line"> </tt>
+<a name="L1042"></a><tt class="py-lineno">1042</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_frames_var</tt><tt class="py-op">.</tt><tt class="py-name">set</tt><tt class="py-op">(</tt><tt class="py-name">opts</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'frames'</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1043"></a><tt class="py-lineno">1043</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_private_var</tt><tt class="py-op">.</tt><tt class="py-name">set</tt><tt class="py-op">(</tt><tt class="py-name">opts</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'private'</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1044"></a><tt class="py-lineno">1044</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_imports_var</tt><tt class="py-op">.</tt><tt class="py-name">set</tt><tt class="py-op">(</tt><tt class="py-name">opts</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'show_imports'</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op"> [...]
+<a name="L1045"></a><tt class="py-lineno">1045</tt>  <tt class="py-line">             </tt>
+<a name="L1046"></a><tt class="py-lineno">1046</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_css_entry</tt><tt class="py-op">.</tt><tt class="py-name">delete</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-string">'end'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1047"></a><tt class="py-lineno">1047</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">opts</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'css'</tt><tt class="py-op">,</tt> <tt class="py-string">'default'</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt id="link-433" class="py-name"><a title="epydoc.docwriter.html_css.STYLESHEETS" class="py-name" href="#" onclick="retur [...]
+<a name="L1048"></a><tt class="py-lineno">1048</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_css_var</tt><tt class="py-op">.</tt><tt class="py-name">set</tt><tt class="py-op">(</tt><tt class="py-name">opts</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'css'</tt><tt class="py-op">,</tt> <tt class="py-string">'default'</tt><tt class="py-op">)</tt><tt class="py-op">) [...]
+<a name="L1049"></a><tt class="py-lineno">1049</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1050"></a><tt class="py-lineno">1050</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_css_var</tt><tt class="py-op">.</tt><tt class="py-name">set</tt><tt class="py-op">(</tt><tt class="py-string">'-other-'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1051"></a><tt class="py-lineno">1051</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_css_entry</tt><tt class="py-op">.</tt><tt class="py-name">insert</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">opts</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'css'</tt><tt class="py-op">,</tt> <tt class="py-string" [...]
+<a name="L1052"></a><tt class="py-lineno">1052</tt>  <tt class="py-line"> </tt>
+<a name="L1053"></a><tt class="py-lineno">1053</tt>  <tt class="py-line">            <tt class="py-comment">#if opts.get('private_css', 'default') in STYLESHEETS.keys():</tt> </tt>
+<a name="L1054"></a><tt class="py-lineno">1054</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment">#    self._private_css_var.set(opts.get('private_css', 'default'))</tt> </tt>
+<a name="L1055"></a><tt class="py-lineno">1055</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment">#else:</tt> </tt>
+<a name="L1056"></a><tt class="py-lineno">1056</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment">#    self._private_css_var.set('-other-')</tt> </tt>
+<a name="L1057"></a><tt class="py-lineno">1057</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment">#    self._css_entry.insert(0, opts.get('private_css', 'default'))</tt> </tt>
+<a name="L1058"></a><tt class="py-lineno">1058</tt>  <tt class="py-line"><tt class="py-comment"></tt>                                                    </tt>
+<a name="L1059"></a><tt class="py-lineno">1059</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
+<a name="L1060"></a><tt class="py-lineno">1060</tt>  <tt class="py-line">            <tt id="link-434" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-434', 'log', 'link-88');">log</a></tt><tt class="py-op">.</tt><tt id="link-435" class="py-name"><a title="epydoc.log.error" class="py-name" href="#" onclick="return doclink('link-435', 'error', 'link-129');">error</a></tt><tt class="py-op">(</tt><tt class="py-string">'Error opening %s: %s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">prjfile</tt><tt class="py-op">,</tt> <tt cl [...]
+<a name="L1061"></a><tt class="py-lineno">1061</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_root</tt><tt class="py-op">.</tt><tt class="py-name">bell</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1062"></a><tt class="py-lineno">1062</tt>  <tt class="py-line">         </tt>
+<a name="EpydocGUI._save"></a><div id="EpydocGUI._save-def"><a name="L1063"></a><tt class="py-lineno">1063</tt> <a class="py-toggle" href="#" id="EpydocGUI._save-toggle" onclick="return toggle('EpydocGUI._save');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.gui.EpydocGUI-class.html#_save">_save</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-param">e</tt><tt class= [...]
+</div><div id="EpydocGUI._save-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="EpydocGUI._save-expanded"><a name="L1064"></a><tt class="py-lineno">1064</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_filename</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class [...]
+<a name="L1065"></a><tt class="py-lineno">1065</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L1066"></a><tt class="py-lineno">1066</tt>  <tt class="py-line">            <tt class="py-name">opts</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-437" class="py-name"><a title="epydoc.gui.EpydocGUI._getopts" class="py-name" href="#" onclick="return doclink('link-437', '_getopts', 'link-396');">_getopts</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1067"></a><tt class="py-lineno">1067</tt>  <tt class="py-line">            <tt class="py-name">dump</tt><tt class="py-op">(</tt><tt class="py-name">opts</tt><tt class="py-op">,</tt> <tt id="link-438" class="py-name"><a title="epydoc.gui.EpydocGUI.open" class="py-name" href="#" onclick="return doclink('link-438', 'open', 'link-423');">open</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_filename</tt><tt class="py-op">,</t [...]
+<a name="L1068"></a><tt class="py-lineno">1068</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
+<a name="L1069"></a><tt class="py-lineno">1069</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_filename</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1070"></a><tt class="py-lineno">1070</tt>  <tt class="py-line">                <tt id="link-439" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-439', 'log', 'link-88');">log</a></tt><tt class="py-op">.</tt><tt id="link-440" class="py-name"><a title="epydoc.log.error" class="py-name" href="#" onclick="return doclink('link-440', 'error', 'link-129');">error</a></tt><tt class="py-op">(</tt><tt class="py-string">'Error saving: %s'</tt> <tt class="py-op">%</tt>  <tt class="py-name">e</tt><tt class="py-op">)</tt> </tt>
+<a name="L1071"></a><tt class="py-lineno">1071</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1072"></a><tt class="py-lineno">1072</tt>  <tt class="py-line">                <tt id="link-441" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-441', 'log', 'link-88');">log</a></tt><tt class="py-op">.</tt><tt id="link-442" class="py-name"><a title="epydoc.log.error" class="py-name" href="#" onclick="return doclink('link-442', 'error', 'link-129');">error</a></tt><tt class="py-op">(</tt><tt class="py-string">'Error saving %s: %s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class=" [...]
+<a name="L1073"></a><tt class="py-lineno">1073</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_root</tt><tt class="py-op">.</tt><tt class="py-name">bell</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1074"></a><tt class="py-lineno">1074</tt>  <tt class="py-line">              </tt>
+<a name="EpydocGUI._saveas"></a><div id="EpydocGUI._saveas-def"><a name="L1075"></a><tt class="py-lineno">1075</tt> <a class="py-toggle" href="#" id="EpydocGUI._saveas-toggle" onclick="return toggle('EpydocGUI._saveas');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.gui.EpydocGUI-class.html#_saveas">_saveas</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-param">e</t [...]
+</div><div id="EpydocGUI._saveas-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="EpydocGUI._saveas-expanded"><a name="L1076"></a><tt class="py-lineno">1076</tt>  <tt class="py-line">        <tt id="link-443" class="py-name"><a title="epydoc.docwriter.plaintext.PlaintextWriter.title" class="py-name" href="#" onclick="return doclink('link-443', 'title', 'link-139');">title</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'Save project as'</tt> </tt>
+<a name="L1077"></a><tt class="py-lineno">1077</tt>  <tt class="py-line">        <tt class="py-name">ftypes</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-string">'Project file'</tt><tt class="py-op">,</tt> <tt class="py-string">'.prj'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-string">'All files'</tt><tt class="py-op">,</tt> <tt class="py-string">'*'</tt><tt class="py-op">)</tt><tt class="py-op" [...]
+<a name="L1078"></a><tt class="py-lineno">1078</tt>  <tt class="py-line">        <tt id="link-444" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-444', 'filename', 'link-322');">filename</a></tt> <tt class="py-op">=</tt> <tt class="py-name">asksaveasfilename</tt><tt class="py-op">(</tt><tt class="py-name">filetypes</tt><tt class="py-op">=</tt><tt class="py-name">ftypes</tt><tt class="py-op">,</tt> <tt id="link-445" class [...]
+<a name="L1079"></a><tt class="py-lineno">1079</tt>  <tt class="py-line">                                     <tt class="py-name">defaultextension</tt><tt class="py-op">=</tt><tt class="py-string">'.prj'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1080"></a><tt class="py-lineno">1080</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-447" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-447', 'filename', 'link-322');">filename</a></tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> </tt>
+<a name="L1081"></a><tt class="py-lineno">1081</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_filename</tt> <tt class="py-op">=</tt> <tt id="link-448" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-448', 'filename', 'link-322');">filename</a></tt> </tt>
+<a name="L1082"></a><tt class="py-lineno">1082</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-449" class="py-name"><a title="epydoc.gui.EpydocGUI._save" class="py-name" href="#" onclick="return doclink('link-449', '_save', 'link-163');">_save</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L1083"></a><tt class="py-lineno">1083</tt>  <tt class="py-line"> </tt>
+<a name="_version"></a><div id="_version-def"><a name="L1084"></a><tt class="py-lineno">1084</tt> <a class="py-toggle" href="#" id="_version-toggle" onclick="return toggle('_version');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.gui-module.html#_version">_version</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_version-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_version-expanded"><a name="L1085"></a><tt class="py-lineno">1085</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L1086"></a><tt class="py-lineno">1086</tt>  <tt class="py-line"><tt class="py-docstring">    Display the version information, and exit.</tt> </tt>
+<a name="L1087"></a><tt class="py-lineno">1087</tt>  <tt class="py-line"><tt class="py-docstring">    @rtype: C{None}</tt> </tt>
+<a name="L1088"></a><tt class="py-lineno">1088</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1089"></a><tt class="py-lineno">1089</tt>  <tt class="py-line">    <tt class="py-keyword">import</tt> <tt id="link-450" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-450', 'epydoc', 'link-87');">epydoc</a></tt> </tt>
+<a name="L1090"></a><tt class="py-lineno">1090</tt>  <tt class="py-line">    <tt class="py-keyword">print</tt> <tt class="py-string">"Epydoc version %s"</tt> <tt class="py-op">%</tt> <tt id="link-451" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-451', 'epydoc', 'link-87');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-452" class="py-name" targets="Variable epydoc.__version__=epydoc-module.html#__version__"><a title="epydoc.__version__" c [...]
+<a name="L1091"></a><tt class="py-lineno">1091</tt>  <tt class="py-line">    <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">exit</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1092"></a><tt class="py-lineno">1092</tt>  <tt class="py-line"> </tt>
+<a name="L1093"></a><tt class="py-lineno">1093</tt>  <tt class="py-line"><tt class="py-comment"># At some point I could add:</tt> </tt>
+<a name="L1094"></a><tt class="py-lineno">1094</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#   --show-messages, --hide-messages</tt> </tt>
+<a name="L1095"></a><tt class="py-lineno">1095</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#   --show-options, --hide-options</tt> </tt>
+<a name="_usage"></a><div id="_usage-def"><a name="L1096"></a><tt class="py-lineno">1096</tt> <a class="py-toggle" href="#" id="_usage-toggle" onclick="return toggle('_usage');">-</a><tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.gui-module.html#_usage">_usage</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_usage-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_usage-expanded"><a name="L1097"></a><tt class="py-lineno">1097</tt>  <tt class="py-line">    <tt class="py-keyword">print</tt> </tt>
+<a name="L1098"></a><tt class="py-lineno">1098</tt>  <tt class="py-line">    <tt class="py-keyword">print</tt> <tt class="py-string">'Usage: epydocgui [OPTIONS] [FILE.prj | MODULES...]'</tt> </tt>
+<a name="L1099"></a><tt class="py-lineno">1099</tt>  <tt class="py-line">    <tt class="py-keyword">print</tt> </tt>
+<a name="L1100"></a><tt class="py-lineno">1100</tt>  <tt class="py-line">    <tt class="py-keyword">print</tt> <tt class="py-string">'    FILE.prj                  An epydoc GUI project file.'</tt> </tt>
+<a name="L1101"></a><tt class="py-lineno">1101</tt>  <tt class="py-line">    <tt class="py-keyword">print</tt> <tt class="py-string">'    MODULES...                A list of Python modules to document.'</tt> </tt>
+<a name="L1102"></a><tt class="py-lineno">1102</tt>  <tt class="py-line">    <tt class="py-keyword">print</tt> <tt class="py-string">'    -V, --version             Print the version of epydoc.'</tt> </tt>
+<a name="L1103"></a><tt class="py-lineno">1103</tt>  <tt class="py-line">    <tt class="py-keyword">print</tt> <tt class="py-string">'    -h, -?, --help, --usage   Display this usage message'</tt> </tt>
+<a name="L1104"></a><tt class="py-lineno">1104</tt>  <tt class="py-line">    <tt class="py-keyword">print</tt> <tt class="py-string">'    --debug                   Do not suppress error messages'</tt> </tt>
+<a name="L1105"></a><tt class="py-lineno">1105</tt>  <tt class="py-line">    <tt class="py-keyword">print</tt> </tt>
+<a name="L1106"></a><tt class="py-lineno">1106</tt>  <tt class="py-line">    <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">exit</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1107"></a><tt class="py-lineno">1107</tt>  <tt class="py-line"> </tt>
+<a name="_error"></a><div id="_error-def"><a name="L1108"></a><tt class="py-lineno">1108</tt> <a class="py-toggle" href="#" id="_error-toggle" onclick="return toggle('_error');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.gui-module.html#_error">_error</a><tt class="py-op">(</tt><tt class="py-param">s</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_error-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_error-expanded"><a name="L1109"></a><tt class="py-lineno">1109</tt>  <tt class="py-line">    <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-string">'%s; run "%s -h" for usage'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">,</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-453" class="py-name"><a title="e [...]
+<a name="L1110"></a><tt class="py-lineno">1110</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-number">80</tt><tt class="py-op">:</tt> </tt>
+<a name="L1111"></a><tt class="py-lineno">1111</tt>  <tt class="py-line">        <tt class="py-name">i</tt> <tt class="py-op">=</tt> <tt class="py-name">s</tt><tt class="py-op">.</tt><tt class="py-name">rfind</tt><tt class="py-op">(</tt><tt class="py-string">' '</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-number">80</tt><tt class="py-op">)</tt> </tt>
+<a name="L1112"></a><tt class="py-lineno">1112</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">i</tt><tt class="py-op">></tt><tt class="py-number">0</tt><tt class="py-op">:</tt> <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">s</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-name">i</tt><tt class="py-op">]</tt><tt class="py-op">+</tt><tt class="py-string">'\n'</tt><tt class="py-op">+</tt><tt class="py-name" [...]
+<a name="L1113"></a><tt class="py-lineno">1113</tt>  <tt class="py-line">    <tt class="py-keyword">print</tt> <tt class="py-op">>></tt><tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">stderr</tt><tt class="py-op">,</tt> <tt class="py-name">s</tt> </tt>
+<a name="L1114"></a><tt class="py-lineno">1114</tt>  <tt class="py-line">    <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">exit</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1115"></a><tt class="py-lineno">1115</tt>  <tt class="py-line">     </tt>
+<a name="gui"></a><div id="gui-def"><a name="L1116"></a><tt class="py-lineno">1116</tt> <a class="py-toggle" href="#" id="gui-toggle" onclick="return toggle('gui');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.gui-module.html#gui">gui</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="gui-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="gui-expanded"><a name="L1117"></a><tt class="py-lineno">1117</tt>  <tt class="py-line">    <tt class="py-keyword">global</tt> <tt id="link-454" class="py-name"><a title="epydoc.DEBUG
+epydoc.gui.DEBUG
+epydoc.log.DEBUG" class="py-name" href="#" onclick="return doclink('link-454', 'DEBUG', 'link-1');">DEBUG</a></tt> </tt>
+<a name="L1118"></a><tt class="py-lineno">1118</tt>  <tt class="py-line">    <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">stderr</tt> <tt class="py-op">=</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">__stderr__</tt> </tt>
+<a name="L1119"></a><tt class="py-lineno">1119</tt>  <tt class="py-line">    <tt class="py-name">projects</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L1120"></a><tt class="py-lineno">1120</tt>  <tt class="py-line">    <tt class="py-name">modules</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L1121"></a><tt class="py-lineno">1121</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt id="link-455" class="py-name" targets="Method epydoc.markup.Field.arg()=epydoc.markup.Field-class.html#arg"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-455', 'arg', 'link-455');">arg</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">argv</tt><tt class="py-op">[</tt><tt c [...]
+<a name="L1122"></a><tt class="py-lineno">1122</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-456" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-456', 'arg', 'link-455');">arg</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">'-'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1123"></a><tt class="py-lineno">1123</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt id="link-457" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-457', 'arg', 'link-455');">arg</a></tt> <tt class="py-op">!=</tt> <tt class="py-string">'-V'</tt><tt class="py-op">:</tt> <tt id="link-458" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-458',  [...]
+<a name="L1124"></a><tt class="py-lineno">1124</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt id="link-460" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-460', 'arg', 'link-455');">arg</a></tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-string">'-h'</tt><tt class="py-op">,</tt> <tt class="py-string">'--help'</tt><tt class="py-op">,</tt> <tt class="py-string">'-?'</tt><tt class= [...]
+<a name="L1125"></a><tt class="py-lineno">1125</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt id="link-462" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-462', 'arg', 'link-455');">arg</a></tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-string">'-V'</tt><tt class="py-op">,</tt> <tt class="py-string">'--version'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt id="link [...]
+<a name="L1126"></a><tt class="py-lineno">1126</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt id="link-464" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-464', 'arg', 'link-455');">arg</a></tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-string">'--debug'</tt><tt class="py-op">,</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt id="link-465" class="py-name"><a title="ep [...]
+epydoc.gui.DEBUG
+epydoc.log.DEBUG" class="py-name" href="#" onclick="return doclink('link-465', 'DEBUG', 'link-1');">DEBUG</a></tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L1127"></a><tt class="py-lineno">1127</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1128"></a><tt class="py-lineno">1128</tt>  <tt class="py-line">                <tt id="link-466" class="py-name" targets="Function epydoc.gui._error()=epydoc.gui-module.html#_error"><a title="epydoc.gui._error" class="py-name" href="#" onclick="return doclink('link-466', '_error', 'link-466');">_error</a></tt><tt class="py-op">(</tt><tt class="py-string">'Unknown parameter %r'</tt> <tt class="py-op">%</tt> <tt id="link-467" class="py-name"><a title="epydoc.markup.Field.arg" cla [...]
+<a name="L1129"></a><tt class="py-lineno">1129</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt id="link-468" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-468', 'arg', 'link-455');">arg</a></tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">4</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">'.prj'</tt><tt class="py-op">:</tt> <tt cl [...]
+<a name="L1130"></a><tt class="py-lineno">1130</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> <tt class="py-name">modules</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-470" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-470', 'arg', 'link-455');">arg</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1131"></a><tt class="py-lineno">1131</tt>  <tt class="py-line"> </tt>
+<a name="L1132"></a><tt class="py-lineno">1132</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">projects</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L1133"></a><tt class="py-lineno">1133</tt>  <tt class="py-line">        <tt id="link-471" class="py-name"><a title="epydoc.gui._error" class="py-name" href="#" onclick="return doclink('link-471', '_error', 'link-466');">_error</a></tt><tt class="py-op">(</tt><tt class="py-string">'Too many projects'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1134"></a><tt class="py-lineno">1134</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">projects</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L1135"></a><tt class="py-lineno">1135</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">modules</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L1136"></a><tt class="py-lineno">1136</tt>  <tt class="py-line">            <tt id="link-472" class="py-name"><a title="epydoc.gui._error" class="py-name" href="#" onclick="return doclink('link-472', '_error', 'link-466');">_error</a></tt><tt class="py-op">(</tt><tt class="py-string">'You must specify either a project or a list of modules'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1137"></a><tt class="py-lineno">1137</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-473" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-473', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt class="py-name">exists</tt><tt class="py-op">(</tt><tt class="py-name">projects</tt><tt class="py-op" [...]
+<a name="L1138"></a><tt class="py-lineno">1138</tt>  <tt class="py-line">            <tt id="link-474" class="py-name"><a title="epydoc.gui._error" class="py-name" href="#" onclick="return doclink('link-474', '_error', 'link-466');">_error</a></tt><tt class="py-op">(</tt><tt class="py-string">'Cannot open project file %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">projects</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1139"></a><tt class="py-lineno">1139</tt>  <tt class="py-line">        <tt id="link-475" class="py-name" targets="Module epydoc.gui=epydoc.gui-module.html,Function epydoc.gui.gui()=epydoc.gui-module.html#gui"><a title="epydoc.gui
+epydoc.gui.gui" class="py-name" href="#" onclick="return doclink('link-475', 'gui', 'link-475');">gui</a></tt> <tt class="py-op">=</tt> <tt id="link-476" class="py-name" targets="Class epydoc.gui.EpydocGUI=epydoc.gui.EpydocGUI-class.html"><a title="epydoc.gui.EpydocGUI" class="py-name" href="#" onclick="return doclink('link-476', 'EpydocGUI', 'link-476');">EpydocGUI</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1140"></a><tt class="py-lineno">1140</tt>  <tt class="py-line">        <tt id="link-477" class="py-name"><a title="epydoc.gui
+epydoc.gui.gui" class="py-name" href="#" onclick="return doclink('link-477', 'gui', 'link-475');">gui</a></tt><tt class="py-op">.</tt><tt id="link-478" class="py-name"><a title="epydoc.gui.EpydocGUI.open" class="py-name" href="#" onclick="return doclink('link-478', 'open', 'link-423');">open</a></tt><tt class="py-op">(</tt><tt class="py-name">projects</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1141"></a><tt class="py-lineno">1141</tt>  <tt class="py-line">        <tt id="link-479" class="py-name"><a title="epydoc.gui
+epydoc.gui.gui" class="py-name" href="#" onclick="return doclink('link-479', 'gui', 'link-475');">gui</a></tt><tt class="py-op">.</tt><tt id="link-480" class="py-name"><a title="epydoc.gui.EpydocGUI.mainloop" class="py-name" href="#" onclick="return doclink('link-480', 'mainloop', 'link-395');">mainloop</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1142"></a><tt class="py-lineno">1142</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1143"></a><tt class="py-lineno">1143</tt>  <tt class="py-line">        <tt id="link-481" class="py-name"><a title="epydoc.gui
+epydoc.gui.gui" class="py-name" href="#" onclick="return doclink('link-481', 'gui', 'link-475');">gui</a></tt> <tt class="py-op">=</tt> <tt id="link-482" class="py-name"><a title="epydoc.gui.EpydocGUI" class="py-name" href="#" onclick="return doclink('link-482', 'EpydocGUI', 'link-476');">EpydocGUI</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1144"></a><tt class="py-lineno">1144</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">module</tt> <tt class="py-keyword">in</tt> <tt class="py-name">modules</tt><tt class="py-op">:</tt> <tt id="link-483" class="py-name"><a title="epydoc.gui
+epydoc.gui.gui" class="py-name" href="#" onclick="return doclink('link-483', 'gui', 'link-475');">gui</a></tt><tt class="py-op">.</tt><tt id="link-484" class="py-name"><a title="epydoc.gui.EpydocGUI.add_module" class="py-name" href="#" onclick="return doclink('link-484', 'add_module', 'link-318');">add_module</a></tt><tt class="py-op">(</tt><tt class="py-name">module</tt><tt class="py-op">,</tt> <tt id="link-485" class="py-name"><a title="epydoc.checker.DocChecker.check" class="py-name"  [...]
+<a name="L1145"></a><tt class="py-lineno">1145</tt>  <tt class="py-line">        <tt id="link-486" class="py-name"><a title="epydoc.gui
+epydoc.gui.gui" class="py-name" href="#" onclick="return doclink('link-486', 'gui', 'link-475');">gui</a></tt><tt class="py-op">.</tt><tt id="link-487" class="py-name"><a title="epydoc.gui.EpydocGUI.mainloop" class="py-name" href="#" onclick="return doclink('link-487', 'mainloop', 'link-395');">mainloop</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1146"></a><tt class="py-lineno">1146</tt>  <tt class="py-line"> </tt>
+<a name="L1147"></a><tt class="py-lineno">1147</tt>  <tt class="py-line"><tt class="py-keyword">if</tt> <tt class="py-name">__name__</tt> <tt class="py-op">==</tt> <tt class="py-string">'__main__'</tt><tt class="py-op">:</tt> <tt id="link-488" class="py-name"><a title="epydoc.gui
+epydoc.gui.gui" class="py-name" href="#" onclick="return doclink('link-488', 'gui', 'link-475');">gui</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1148"></a><tt class="py-lineno">1148</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:09:16 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.gui.EpydocGUI-class.html b/doc/api/epydoc.gui.EpydocGUI-class.html
new file mode 100644
index 0000000..f156fed
--- /dev/null
+++ b/doc/api/epydoc.gui.EpydocGUI-class.html
@@ -0,0 +1,629 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.gui.EpydocGUI</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.gui-module.html">Module gui</a> ::
+        Class EpydocGUI
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.gui.EpydocGUI-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class EpydocGUI</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.gui-pysrc.html#EpydocGUI">source code</a></span></p>
+<p>A graphical user interace to epydoc.</p>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__init__"></a><span class="summary-sig-name">__init__</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.gui-pysrc.html#EpydocGUI.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_init_menubar"></a><span class="summary-sig-name">_init_menubar</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.gui-pysrc.html#EpydocGUI._init_menubar">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_init_module_list"></a><span class="summary-sig-name">_init_module_list</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">mainframe</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.gui-pysrc.html#EpydocGUI._init_module_list">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_init_progress_bar"></a><span class="summary-sig-name">_init_progress_bar</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">mainframe</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.gui-pysrc.html#EpydocGUI._init_progress_bar">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_init_messages"></a><span class="summary-sig-name">_init_messages</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">msgsframe</span>,
+        <span class="summary-sig-arg">ctrlframe</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.gui-pysrc.html#EpydocGUI._init_messages">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_update_msg_tags"></a><span class="summary-sig-name">_update_msg_tags</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">*e</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.gui-pysrc.html#EpydocGUI._update_msg_tags">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_init_options"></a><span class="summary-sig-name">_init_options</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">optsframe</span>,
+        <span class="summary-sig-arg">ctrlframe</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.gui-pysrc.html#EpydocGUI._init_options">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_init_bindings"></a><span class="summary-sig-name">_init_bindings</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.gui-pysrc.html#EpydocGUI._init_bindings">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_options_toggle"></a><span class="summary-sig-name">_options_toggle</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">*e</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.gui-pysrc.html#EpydocGUI._options_toggle">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_messages_toggle"></a><span class="summary-sig-name">_messages_toggle</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">*e</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.gui-pysrc.html#EpydocGUI._messages_toggle">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_configure"></a><span class="summary-sig-name">_configure</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">event</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.gui-pysrc.html#EpydocGUI._configure">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_delete_module"></a><span class="summary-sig-name">_delete_module</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">*e</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.gui-pysrc.html#EpydocGUI._delete_module">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_entry_module"></a><span class="summary-sig-name">_entry_module</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">*e</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.gui-pysrc.html#EpydocGUI._entry_module">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_browse_module"></a><span class="summary-sig-name">_browse_module</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">*e</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.gui-pysrc.html#EpydocGUI._browse_module">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_browse_css"></a><span class="summary-sig-name">_browse_css</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">*e</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.gui-pysrc.html#EpydocGUI._browse_css">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_browse_help"></a><span class="summary-sig-name">_browse_help</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">*e</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.gui-pysrc.html#EpydocGUI._browse_help">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_browse_out"></a><span class="summary-sig-name">_browse_out</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">*e</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.gui-pysrc.html#EpydocGUI._browse_out">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="destroy"></a><span class="summary-sig-name">destroy</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">*e</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.gui-pysrc.html#EpydocGUI.destroy">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="add_module"></a><span class="summary-sig-name">add_module</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">name</span>,
+        <span class="summary-sig-arg">check</span>=<span class="summary-sig-default">0</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.gui-pysrc.html#EpydocGUI.add_module">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="mainloop"></a><span class="summary-sig-name">mainloop</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">*args</span>,
+        <span class="summary-sig-arg">**kwargs</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.gui-pysrc.html#EpydocGUI.mainloop">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_getopts"></a><span class="summary-sig-name">_getopts</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.gui-pysrc.html#EpydocGUI._getopts">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_go"></a><span class="summary-sig-name">_go</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">*e</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.gui-pysrc.html#EpydocGUI._go">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_update_messages"></a><span class="summary-sig-name">_update_messages</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.gui-pysrc.html#EpydocGUI._update_messages">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_update"></a><span class="summary-sig-name">_update</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">dt</span>,
+        <span class="summary-sig-arg">id</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.gui-pysrc.html#EpydocGUI._update">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_new"></a><span class="summary-sig-name">_new</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">*e</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.gui-pysrc.html#EpydocGUI._new">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_open"></a><span class="summary-sig-name">_open</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">*e</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.gui-pysrc.html#EpydocGUI._open">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="open"></a><span class="summary-sig-name">open</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">prjfile</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.gui-pysrc.html#EpydocGUI.open">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_save"></a><span class="summary-sig-name">_save</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">*e</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.gui-pysrc.html#EpydocGUI._save">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_saveas"></a><span class="summary-sig-name">_saveas</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">*e</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.gui-pysrc.html#EpydocGUI._saveas">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:08:20 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.gui.GUILogger-class.html b/doc/api/epydoc.gui.GUILogger-class.html
new file mode 100644
index 0000000..bd297f4
--- /dev/null
+++ b/doc/api/epydoc.gui.GUILogger-class.html
@@ -0,0 +1,535 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.gui.GUILogger</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.gui-module.html">Module gui</a> ::
+        Class GUILogger
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.gui.GUILogger-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class GUILogger</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.gui-pysrc.html#GUILogger">source code</a></span></p>
+<center>
+<center>  <map id="uml_class_diagram_for_epydoc_g" name="uml_class_diagram_for_epydoc_g">
+<area shape="rect" href="epydoc.log.Logger-class.html#close" title="Perform any tasks needed to close this logger." alt="" coords="92,36,159,55" />
+<area shape="rect" href="epydoc.log.Logger-class.html" title="An abstract base class that defines the interface for loggers, which are used by epydoc to report information back to the user." alt="" coords="80,6,171,62" />
+<area shape="rect" href="epydoc.gui.GUILogger-class.html#__init__" title="epydoc.gui.GUILogger.__init__" alt="" coords="18,111,234,130" />
+<area shape="rect" href="epydoc.gui.GUILogger-class.html#clear" title="epydoc.gui.GUILogger.clear" alt="" coords="18,130,234,148" />
+<area shape="rect" href="epydoc.gui.GUILogger-class.html#log" title="Display a message." alt="" coords="18,148,234,167" />
+<area shape="rect" href="epydoc.gui.GUILogger-class.html#start_block" title="Start a new message block." alt="" coords="18,167,234,186" />
+<area shape="rect" href="epydoc.gui.GUILogger-class.html#end_block" title="End a warning block." alt="" coords="18,186,234,204" />
+<area shape="rect" href="epydoc.gui.GUILogger-class.html#start_progress" title="Begin displaying progress for a new task." alt="" coords="18,204,234,223" />
+<area shape="rect" href="epydoc.gui.GUILogger-class.html#end_progress" title="Finish off the display of progress for the current task." alt="" coords="18,223,234,242" />
+<area shape="rect" href="epydoc.gui.GUILogger-class.html#progress" title="Update the progress display." alt="" coords="18,242,234,260" />
+<area shape="rect" href="epydoc.gui.GUILogger-class.html#read" title="epydoc.gui.GUILogger.read" alt="" coords="18,260,234,279" />
+<area shape="rect" href="epydoc.gui.GUILogger-class.html" title="epydoc.gui.GUILogger" alt="" coords="6,80,246,286" />
+</map>
+  <img src="uml_class_diagram_for_epydoc_g.gif" alt='' usemap="#uml_class_diagram_for_epydoc_g" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__init__"></a><span class="summary-sig-name">__init__</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">progress</span>,
+        <span class="summary-sig-arg">cancel</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.gui-pysrc.html#GUILogger.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="clear"></a><span class="summary-sig-name">clear</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.gui-pysrc.html#GUILogger.clear">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.gui.GUILogger-class.html#log" class="summary-sig-name">log</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">level</span>,
+        <span class="summary-sig-arg">message</span>)</span><br />
+      Display a message.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.gui-pysrc.html#GUILogger.log">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.gui.GUILogger-class.html#start_block" class="summary-sig-name">start_block</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">header</span>)</span><br />
+      Start a new message block.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.gui-pysrc.html#GUILogger.start_block">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.gui.GUILogger-class.html#end_block" class="summary-sig-name">end_block</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      End a warning block.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.gui-pysrc.html#GUILogger.end_block">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.gui.GUILogger-class.html#start_progress" class="summary-sig-name">start_progress</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">header</span>=<span class="summary-sig-default">None</span>)</span><br />
+      Begin displaying progress for a new task.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.gui-pysrc.html#GUILogger.start_progress">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.gui.GUILogger-class.html#end_progress" class="summary-sig-name">end_progress</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Finish off the display of progress for the current task.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.gui-pysrc.html#GUILogger.end_progress">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.gui.GUILogger-class.html#progress" class="summary-sig-name">progress</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">percent</span>,
+        <span class="summary-sig-arg">message</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>)</span><br />
+      Update the progress display.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.gui-pysrc.html#GUILogger.progress">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="read"></a><span class="summary-sig-name">read</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.gui-pysrc.html#GUILogger.read">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.log.Logger-class.html">log.Logger</a></code></b>:
+      <code><a href="epydoc.log.Logger-class.html#close">close</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Class Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-ClassVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="_STAGES"></a><span class="summary-name">_STAGES</span> = <code title="[40, 7, 1, 3, 1, 30, 1, 2, 100]"><code class="variable-group">[</code>40<code class="variable-op">, </code>7<code class="variable-op">, </code>1<code class="variable-op">, </code>3<code class="variable-op">, </code>1<code class="variable-op">, </code>30<code class="variable-op">, </code>1<code class="variable-op">, </code>2<code class="variable-op">, </code>100<code class="variable-group">]</code></code>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Method Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-MethodDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="log"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">log</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">level</span>,
+        <span class="sig-arg">message</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.gui-pysrc.html#GUILogger.log">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Display a message.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>message</code></strong> - The message string to display.  <code>message</code> may contain 
+          newlines, but does not need to end in a newline.</li>
+        <li><strong class="pname"><code>level</code></strong> - An integer value indicating the severity of the message.</li>
+    </ul></dd>
+    <dt>Overrides:
+        <a href="epydoc.log.Logger-class.html#log">log.Logger.log</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="start_block"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">start_block</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">header</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.gui-pysrc.html#GUILogger.start_block">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Start a new message block.  Any calls to <a 
+  href="epydoc.log-module.html#info" class="link">info()</a>, <a 
+  href="epydoc.log-module.html#warning" class="link">warning()</a>, or <a 
+  href="epydoc.log-module.html#error" class="link">error()</a> that occur 
+  between a call to <code>start_block</code> and a corresponding call to 
+  <code>end_block</code> will be grouped together, and displayed with a 
+  common header. <code>start_block</code> can be called multiple times (to 
+  form nested blocks), but every call to <code>start_block</code> 
+  <i>must</i> be balanced by a call to <code>end_block</code>.</p>
+  <dl class="fields">
+    <dt>Overrides:
+        <a href="epydoc.log.Logger-class.html#start_block">log.Logger.start_block</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="end_block"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">end_block</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.gui-pysrc.html#GUILogger.end_block">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>End a warning block.  See <a 
+  href="epydoc.cli.ConsoleLogger-class.html#start_block" 
+  class="link">start_block</a> for details.</p>
+  <dl class="fields">
+    <dt>Overrides:
+        <a href="epydoc.log.Logger-class.html#end_block">log.Logger.end_block</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="start_progress"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">start_progress</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">header</span>=<span class="sig-default">None</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.gui-pysrc.html#GUILogger.start_progress">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Begin displaying progress for a new task.  <code>header</code> is a 
+  description of the task for which progress is being reported. Each call 
+  to <code>start_progress</code> must be followed by a call to 
+  <code>end_progress</code> (with no intervening calls to 
+  <code>start_progress</code>).</p>
+  <dl class="fields">
+    <dt>Overrides:
+        <a href="epydoc.log.Logger-class.html#start_progress">log.Logger.start_progress</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="end_progress"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">end_progress</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.gui-pysrc.html#GUILogger.end_progress">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Finish off the display of progress for the current task.  See <a 
+  href="epydoc.cli.ConsoleLogger-class.html#start_progress" 
+  class="link">start_progress</a> for more information.</p>
+  <dl class="fields">
+    <dt>Overrides:
+        <a href="epydoc.log.Logger-class.html#end_progress">log.Logger.end_progress</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="progress"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">progress</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">percent</span>,
+        <span class="sig-arg">message</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.gui-pysrc.html#GUILogger.progress">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Update the progress display.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>percent</code></strong> - A float from 0.0 to 1.0, indicating how much progress has been 
+          made.</li>
+        <li><strong class="pname"><code>message</code></strong> - A message indicating the most recent action that contributed 
+          towards that progress.</li>
+    </ul></dd>
+    <dt>Overrides:
+        <a href="epydoc.log.Logger-class.html#progress">log.Logger.progress</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:08:21 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.log-module.html b/doc/api/epydoc.log-module.html
new file mode 100644
index 0000000..f7f5312
--- /dev/null
+++ b/doc/api/epydoc.log-module.html
@@ -0,0 +1,773 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.log</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        Module log
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.log-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module log</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.log-pysrc.html">source code</a></span></p>
+<p>Functions used to report messages and progress updates to the user. 
+  These functions are delegated to zero or more registered <a 
+  href="epydoc.log.Logger-class.html" class="link">Logger</a> objects, 
+  which are responsible for actually presenting the information to the 
+  user.  Different interfaces are free to create and register their own 
+  <code>Logger</code>s, allowing them to present this information in the 
+  manner that is best suited to each interface.</p>
+
+<hr />
+<div class="fields">      <p><strong>Note:</strong>
+        I considered using the standard <code>logging</code> package to 
+        provide this functionality.  However, I found that it would be too 
+        difficult to get that package to provide the behavior I want (esp. 
+        with respect to progress displays; but also with respect to message
+        blocks).
+      </p>
+</div><!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Classes</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Classes"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.log.Logger-class.html" class="summary-name">Logger</a><br />
+      An abstract base class that defines the interface for <a 
+        name="index-loggers"></a><i class="indexterm">loggers</i>, which 
+        are used by epydoc to report information back to the user.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.log.SimpleLogger-class.html" class="summary-name">SimpleLogger</a>
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTIONS ==================== -->
+<a name="section-Functions"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Functions</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Functions"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.log-module.html#register_logger" class="summary-sig-name">register_logger</a>(<span class="summary-sig-arg">logger</span>)</span><br />
+      Register a logger.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.log-pysrc.html#register_logger">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="remove_logger"></a><span class="summary-sig-name">remove_logger</span>(<span class="summary-sig-arg">logger</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.log-pysrc.html#remove_logger">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="fatal"></a><span class="summary-sig-name">fatal</span>(<span class="summary-sig-arg">*messages</span>)</span><br />
+      Display the given fatal message.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.log-pysrc.html#fatal">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="error"></a><span class="summary-sig-name">error</span>(<span class="summary-sig-arg">*messages</span>)</span><br />
+      Display the given error message.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.log-pysrc.html#error">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="warning"></a><span class="summary-sig-name">warning</span>(<span class="summary-sig-arg">*messages</span>)</span><br />
+      Display the given warning message.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.log-pysrc.html#warning">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_warning-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_warning-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_warning" name="call_graph_for_warning">
+<area shape="rect" href="epydoc.apidoc.NamespaceDoc-class.html#_init_grouping" title="apidoc.NamespaceDoc._init_grouping()" alt="" coords="7,6,327,38" />
+<area shape="rect" href="epydoc.log-module.html#warning" title="warning()" alt="" coords="377,6,471,38" />
+</map>
+  <img src="call_graph_for_warning.gif" alt='' usemap="#call_graph_for_warning" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="docstring_warning"></a><span class="summary-sig-name">docstring_warning</span>(<span class="summary-sig-arg">*messages</span>)</span><br />
+      Display the given docstring warning message.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.log-pysrc.html#docstring_warning">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_docstring_warni-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_docstring_warni-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_docstring_warni" name="call_graph_for_docstring_warni">
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write" title="docwriter.html.HTMLWriter.write()" alt="" coords="5,6,299,38" />
+<area shape="rect" href="epydoc.log-module.html#docstring_warning" title="docstring_warning()" alt="" coords="347,6,520,38" />
+</map>
+  <img src="call_graph_for_docstring_warni.gif" alt='' usemap="#call_graph_for_docstring_warni" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="info"></a><span class="summary-sig-name">info</span>(<span class="summary-sig-arg">*messages</span>)</span><br />
+      Display the given informational message.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.log-pysrc.html#info">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_info-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_info-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_info" name="call_graph_for_info">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__str__" title="apidoc.DottedName.__str__()" alt="" coords="471,118,713,150" />
+<area shape="rect" href="epydoc.docbuilder-module.html#merge_bases" title="docbuilder.merge_bases()" alt="" coords="49,6,263,38" />
+<area shape="rect" href="epydoc.log-module.html#info" title="info()" alt="" coords="356,118,420,150" />
+<area shape="rect" href="epydoc.docbuilder-module.html#merge_docs" title="docbuilder.merge_docs()" alt="" coords="52,62,260,94" />
+<area shape="rect" href="epydoc.docparser-module.html#find_base" title="docparser.find_base()" alt="" coords="64,118,248,150" />
+<area shape="rect" href="epydoc.docparser-module.html#parse_docs" title="docparser.parse_docs()" alt="" coords="59,174,253,206" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#get_dot_version" title="docwriter.dotgraph.get_dot_version()" alt="" coords="7,230,305,262" />
+</map>
+  <img src="call_graph_for_info.gif" alt='' usemap="#call_graph_for_info" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="debug"></a><span class="summary-sig-name">debug</span>(<span class="summary-sig-arg">*messages</span>)</span><br />
+      Display the given debugging message.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.log-pysrc.html#debug">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.log-module.html#start_block" class="summary-sig-name">start_block</a>(<span class="summary-sig-arg">header</span>)</span><br />
+      Start a new message block.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.log-pysrc.html#start_block">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.log-module.html#end_block" class="summary-sig-name">end_block</a>()</span><br />
+      End a warning block.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.log-pysrc.html#end_block">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.log-module.html#start_progress" class="summary-sig-name">start_progress</a>(<span class="summary-sig-arg">header</span>=<span class="summary-sig-default">None</span>)</span><br />
+      Begin displaying progress for a new task.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.log-pysrc.html#start_progress">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_start_progress-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_start_progress-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_start_progress" name="call_graph_for_start_progress">
+<area shape="rect" href="epydoc.docbuilder-module.html#_get_docs_from_items" title="docbuilder._get_docs_from_items()" alt="" coords="7,6,295,38" />
+<area shape="rect" href="epydoc.log-module.html#start_progress" title="start_progress()" alt="" coords="344,34,483,66" />
+<area shape="rect" href="epydoc.docbuilder-module.html#build_doc_index" title="docbuilder.build_doc_index()" alt="" coords="29,62,272,94" />
+<area shape="rect" href="epydoc.log.Logger-class.html#start_progress" title="Logger.start_progress()" alt="" coords="531,34,728,66" />
+</map>
+  <img src="call_graph_for_start_progress.gif" alt='' usemap="#call_graph_for_start_progress" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.log-module.html#end_progress" class="summary-sig-name">end_progress</a>()</span><br />
+      Finish off the display of progress for the current task.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.log-pysrc.html#end_progress">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_end_progress-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_end_progress-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_end_progress" name="call_graph_for_end_progress">
+<area shape="rect" href="epydoc.docbuilder-module.html#_get_docs_from_items" title="docbuilder._get_docs_from_items()" alt="" coords="7,6,295,38" />
+<area shape="rect" href="epydoc.log-module.html#end_progress" title="end_progress()" alt="" coords="344,34,478,66" />
+<area shape="rect" href="epydoc.docbuilder-module.html#build_doc_index" title="docbuilder.build_doc_index()" alt="" coords="30,62,272,94" />
+<area shape="rect" href="epydoc.log.Logger-class.html#end_progress" title="Logger.end_progress()" alt="" coords="526,34,718,66" />
+</map>
+  <img src="call_graph_for_end_progress.gif" alt='' usemap="#call_graph_for_end_progress" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.log-module.html#progress" class="summary-sig-name">progress</a>(<span class="summary-sig-arg">percent</span>,
+        <span class="summary-sig-arg">message</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>)</span><br />
+      Update the progress display.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.log-pysrc.html#progress">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_progress-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_progress-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_progress" name="call_graph_for_progress">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__str__" title="apidoc.DottedName.__str__()" alt="" coords="540,90,783,122" />
+<area shape="rect" href="epydoc.docbuilder-module.html#_get_docs_from_module_file" title="docbuilder._get_docs_from_module_file()" alt="" coords="5,6,344,38" />
+<area shape="rect" href="epydoc.log-module.html#progress" title="progress()" alt="" coords="392,118,491,150" />
+<area shape="rect" href="epydoc.docbuilder-module.html#_report_valdoc_progress" title="docbuilder._report_valdoc_progress()" alt="" coords="24,62,325,94" />
+<area shape="rect" href="epydoc.docbuilder-module.html#build_doc_index" title="docbuilder.build_doc_index()" alt="" coords="53,118,296,150" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_write" title="docwriter.html.HTMLWriter._write()" alt="" coords="24,174,325,206" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write" title="docwriter.html.HTMLWriter.write()" alt="" coords="28,230,321,262" />
+<area shape="rect" href="epydoc.log.Logger-class.html#progress" title="Logger.progress()" alt="" coords="584,146,739,178" />
+</map>
+  <img src="call_graph_for_progress.gif" alt='' usemap="#call_graph_for_progress" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="close"></a><span class="summary-sig-name">close</span>()</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.log-pysrc.html#close">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Variables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="DOCSTRING_WARNING"></a><span class="summary-name">DOCSTRING_WARNING</span> = <code title="25">25</code>
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="_loggers"></a><span class="summary-name">_loggers</span> = <code title="[]">[]</code><br />
+      The list of registered logging functions.
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Message Severity Levels</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="DEBUG"></a><span class="summary-name">DEBUG</span> = <code title="10">10</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="INFO"></a><span class="summary-name">INFO</span> = <code title="20">20</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="WARNING"></a><span class="summary-name">WARNING</span> = <code title="30">30</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="ERROR"></a><span class="summary-name">ERROR</span> = <code title="40">40</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="FATAL"></a><span class="summary-name">FATAL</span> = <code title="40">40</code>
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTION DETAILS ==================== -->
+<a name="section-FunctionDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Function Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-FunctionDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="register_logger"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">register_logger</span>(<span class="sig-arg">logger</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.log-pysrc.html#register_logger">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Register a logger.  Each call to one of the logging functions defined 
+  by this module will be delegated to each registered logger.</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="start_block"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">start_block</span>(<span class="sig-arg">header</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.log-pysrc.html#start_block">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Start a new message block.  Any calls to <a 
+  href="epydoc.log-module.html#info" class="link">info()</a>, <a 
+  href="epydoc.log-module.html#warning" class="link">warning()</a>, or <a 
+  href="epydoc.log-module.html#error" class="link">error()</a> that occur 
+  between a call to <code>start_block</code> and a corresponding call to 
+  <code>end_block</code> will be grouped together, and displayed with a 
+  common header. <code>start_block</code> can be called multiple times (to 
+  form nested blocks), but every call to <code>start_block</code> 
+  <i>must</i> be balanced by a call to <code>end_block</code>.</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="end_block"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">end_block</span>()</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.log-pysrc.html#end_block">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>End a warning block.  See <a href="epydoc.log-module.html#start_block"
+  class="link">start_block</a> for details.</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="start_progress"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">start_progress</span>(<span class="sig-arg">header</span>=<span class="sig-default">None</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.log-pysrc.html#start_progress">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_start_progress-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_start_progress-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_start_progress" name="call_graph_for_start_progress">
+<area shape="rect" href="epydoc.docbuilder-module.html#_get_docs_from_items" title="docbuilder._get_docs_from_items()" alt="" coords="7,6,295,38" />
+<area shape="rect" href="epydoc.log-module.html#start_progress" title="start_progress()" alt="" coords="344,34,483,66" />
+<area shape="rect" href="epydoc.docbuilder-module.html#build_doc_index" title="docbuilder.build_doc_index()" alt="" coords="29,62,272,94" />
+<area shape="rect" href="epydoc.log.Logger-class.html#start_progress" title="Logger.start_progress()" alt="" coords="531,34,728,66" />
+</map>
+  <img src="call_graph_for_start_progress.gif" alt='' usemap="#call_graph_for_start_progress" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Begin displaying progress for a new task.  <code>header</code> is a 
+  description of the task for which progress is being reported. Each call 
+  to <code>start_progress</code> must be followed by a call to 
+  <code>end_progress</code> (with no intervening calls to 
+  <code>start_progress</code>).</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="end_progress"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">end_progress</span>()</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.log-pysrc.html#end_progress">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_end_progress-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_end_progress-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_end_progress" name="call_graph_for_end_progress">
+<area shape="rect" href="epydoc.docbuilder-module.html#_get_docs_from_items" title="docbuilder._get_docs_from_items()" alt="" coords="7,6,295,38" />
+<area shape="rect" href="epydoc.log-module.html#end_progress" title="end_progress()" alt="" coords="344,34,478,66" />
+<area shape="rect" href="epydoc.docbuilder-module.html#build_doc_index" title="docbuilder.build_doc_index()" alt="" coords="30,62,272,94" />
+<area shape="rect" href="epydoc.log.Logger-class.html#end_progress" title="Logger.end_progress()" alt="" coords="526,34,718,66" />
+</map>
+  <img src="call_graph_for_end_progress.gif" alt='' usemap="#call_graph_for_end_progress" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Finish off the display of progress for the current task.  See <a 
+  href="epydoc.log-module.html#start_progress" 
+  class="link">start_progress</a> for more information.</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="progress"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">progress</span>(<span class="sig-arg">percent</span>,
+        <span class="sig-arg">message</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.log-pysrc.html#progress">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_progress-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_progress-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_progress" name="call_graph_for_progress">
+<area shape="rect" href="epydoc.apidoc.DottedName-class.html#__str__" title="apidoc.DottedName.__str__()" alt="" coords="540,90,783,122" />
+<area shape="rect" href="epydoc.docbuilder-module.html#_get_docs_from_module_file" title="docbuilder._get_docs_from_module_file()" alt="" coords="5,6,344,38" />
+<area shape="rect" href="epydoc.log-module.html#progress" title="progress()" alt="" coords="392,118,491,150" />
+<area shape="rect" href="epydoc.docbuilder-module.html#_report_valdoc_progress" title="docbuilder._report_valdoc_progress()" alt="" coords="24,62,325,94" />
+<area shape="rect" href="epydoc.docbuilder-module.html#build_doc_index" title="docbuilder.build_doc_index()" alt="" coords="53,118,296,150" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_write" title="docwriter.html.HTMLWriter._write()" alt="" coords="24,174,325,206" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write" title="docwriter.html.HTMLWriter.write()" alt="" coords="28,230,321,262" />
+<area shape="rect" href="epydoc.log.Logger-class.html#progress" title="Logger.progress()" alt="" coords="584,146,739,178" />
+</map>
+  <img src="call_graph_for_progress.gif" alt='' usemap="#call_graph_for_progress" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Update the progress display.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>percent</code></strong> - A float from 0.0 to 1.0, indicating how much progress has been 
+          made.</li>
+        <li><strong class="pname"><code>message</code></strong> - A message indicating the most recent action that contributed 
+          towards that progress.</li>
+    </ul></dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:06:40 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.log-pysrc.html b/doc/api/epydoc.log-pysrc.html
new file mode 100644
index 0000000..9f1f33c
--- /dev/null
+++ b/doc/api/epydoc.log-pysrc.html
@@ -0,0 +1,426 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.log</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        Module log
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.log-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="epydoc.log-module.html">Module epydoc.log</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno">  1</tt>  <tt class="py-line"><tt class="py-comment"># epydoc -- Logging</tt> </tt>
+<a name="L2"></a><tt class="py-lineno">  2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L3"></a><tt class="py-lineno">  3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2005 Edward Loper</tt> </tt>
+<a name="L4"></a><tt class="py-lineno">  4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Author: Edward Loper <edloper at loper.org></tt> </tt>
+<a name="L5"></a><tt class="py-lineno">  5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># URL: <http://epydoc.sf.net></tt> </tt>
+<a name="L6"></a><tt class="py-lineno">  6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L7"></a><tt class="py-lineno">  7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># $Id: log.py 1488 2007-02-14 00:34:27Z edloper $</tt> </tt>
+<a name="L8"></a><tt class="py-lineno">  8</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L9"></a><tt class="py-lineno">  9</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L10"></a><tt class="py-lineno"> 10</tt>  <tt class="py-line"><tt class="py-docstring">Functions used to report messages and progress updates to the user.</tt> </tt>
+<a name="L11"></a><tt class="py-lineno"> 11</tt>  <tt class="py-line"><tt class="py-docstring">These functions are delegated to zero or more registered L{Logger}</tt> </tt>
+<a name="L12"></a><tt class="py-lineno"> 12</tt>  <tt class="py-line"><tt class="py-docstring">objects, which are responsible for actually presenting the information</tt> </tt>
+<a name="L13"></a><tt class="py-lineno"> 13</tt>  <tt class="py-line"><tt class="py-docstring">to the user.  Different interfaces are free to create and register</tt> </tt>
+<a name="L14"></a><tt class="py-lineno"> 14</tt>  <tt class="py-line"><tt class="py-docstring">their own C{Logger}s, allowing them to present this information in the</tt> </tt>
+<a name="L15"></a><tt class="py-lineno"> 15</tt>  <tt class="py-line"><tt class="py-docstring">manner that is best suited to each interface.</tt> </tt>
+<a name="L16"></a><tt class="py-lineno"> 16</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L17"></a><tt class="py-lineno"> 17</tt>  <tt class="py-line"><tt class="py-docstring">@note: I considered using the standard C{logging} package to provide</tt> </tt>
+<a name="L18"></a><tt class="py-lineno"> 18</tt>  <tt class="py-line"><tt class="py-docstring">this functionality.  However, I found that it would be too difficult</tt> </tt>
+<a name="L19"></a><tt class="py-lineno"> 19</tt>  <tt class="py-line"><tt class="py-docstring">to get that package to provide the behavior I want (esp. with respect</tt> </tt>
+<a name="L20"></a><tt class="py-lineno"> 20</tt>  <tt class="py-line"><tt class="py-docstring">to progress displays; but also with respect to message blocks).</tt> </tt>
+<a name="L21"></a><tt class="py-lineno"> 21</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L22"></a><tt class="py-lineno"> 22</tt>  <tt class="py-line"><tt class="py-docstring">@group Message Severity Levels: DEBUG, INFO, WARNING, ERROR, FATAL</tt> </tt>
+<a name="L23"></a><tt class="py-lineno"> 23</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L24"></a><tt class="py-lineno"> 24</tt>  <tt class="py-line"><tt class="py-name">__docformat__</tt> <tt class="py-op">=</tt> <tt class="py-string">'epytext en'</tt> </tt>
+<a name="L25"></a><tt class="py-lineno"> 25</tt>  <tt class="py-line"> </tt>
+<a name="L26"></a><tt class="py-lineno"> 26</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">sys</tt><tt class="py-op">,</tt> <tt class="py-name">os</tt> </tt>
+<a name="L27"></a><tt class="py-lineno"> 27</tt>  <tt class="py-line"> </tt>
+<a name="L28"></a><tt class="py-lineno"> 28</tt>  <tt class="py-line"><tt id="link-0" class="py-name" targets="Variable epydoc.DEBUG=epydoc-module.html#DEBUG,Variable epydoc.gui.DEBUG=epydoc.gui-module.html#DEBUG,Variable epydoc.log.DEBUG=epydoc.log-module.html#DEBUG"><a title="epydoc.DEBUG
+epydoc.gui.DEBUG
+epydoc.log.DEBUG" class="py-name" href="#" onclick="return doclink('link-0', 'DEBUG', 'link-0');">DEBUG</a></tt> <tt class="py-op">=</tt> <tt class="py-number">10</tt> </tt>
+<a name="L29"></a><tt class="py-lineno"> 29</tt>  <tt class="py-line"><tt id="link-1" class="py-name" targets="Variable epydoc.log.INFO=epydoc.log-module.html#INFO"><a title="epydoc.log.INFO" class="py-name" href="#" onclick="return doclink('link-1', 'INFO', 'link-1');">INFO</a></tt> <tt class="py-op">=</tt> <tt class="py-number">20</tt> </tt>
+<a name="L30"></a><tt class="py-lineno"> 30</tt>  <tt class="py-line"><tt id="link-2" class="py-name" targets="Variable epydoc.log.DOCSTRING_WARNING=epydoc.log-module.html#DOCSTRING_WARNING"><a title="epydoc.log.DOCSTRING_WARNING" class="py-name" href="#" onclick="return doclink('link-2', 'DOCSTRING_WARNING', 'link-2');">DOCSTRING_WARNING</a></tt> <tt class="py-op">=</tt> <tt class="py-number">25</tt> </tt>
+<a name="L31"></a><tt class="py-lineno"> 31</tt>  <tt class="py-line"><tt id="link-3" class="py-name" targets="Variable epydoc.log.WARNING=epydoc.log-module.html#WARNING"><a title="epydoc.log.WARNING" class="py-name" href="#" onclick="return doclink('link-3', 'WARNING', 'link-3');">WARNING</a></tt> <tt class="py-op">=</tt> <tt class="py-number">30</tt> </tt>
+<a name="L32"></a><tt class="py-lineno"> 32</tt>  <tt class="py-line"><tt id="link-4" class="py-name" targets="Variable epydoc.log.ERROR=epydoc.log-module.html#ERROR"><a title="epydoc.log.ERROR" class="py-name" href="#" onclick="return doclink('link-4', 'ERROR', 'link-4');">ERROR</a></tt> <tt class="py-op">=</tt> <tt class="py-number">40</tt> </tt>
+<a name="L33"></a><tt class="py-lineno"> 33</tt>  <tt class="py-line"><tt id="link-5" class="py-name" targets="Variable epydoc.log.FATAL=epydoc.log-module.html#FATAL"><a title="epydoc.log.FATAL" class="py-name" href="#" onclick="return doclink('link-5', 'FATAL', 'link-5');">FATAL</a></tt> <tt class="py-op">=</tt> <tt class="py-number">40</tt> </tt>
+<a name="L34"></a><tt class="py-lineno"> 34</tt>  <tt class="py-line"> </tt>
+<a name="L35"></a><tt class="py-lineno"> 35</tt>  <tt class="py-line"><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L36"></a><tt class="py-lineno"> 36</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Logger Base Class</tt> </tt>
+<a name="L37"></a><tt class="py-lineno"> 37</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">######################################################################</tt> </tt>
+<a name="Logger"></a><div id="Logger-def"><a name="L38"></a><tt class="py-lineno"> 38</tt> <a class="py-toggle" href="#" id="Logger-toggle" onclick="return toggle('Logger');">-</a><tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">class</tt> <a class="py-def-name" href="epydoc.log.Logger-class.html">Logger</a><tt class="py-op">:</tt> </tt>
+</div><div id="Logger-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="Logger-expanded"><a name="L39"></a><tt class="py-lineno"> 39</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L40"></a><tt class="py-lineno"> 40</tt>  <tt class="py-line"><tt class="py-docstring">    An abstract base class that defines the interface for X{loggers},</tt> </tt>
+<a name="L41"></a><tt class="py-lineno"> 41</tt>  <tt class="py-line"><tt class="py-docstring">    which are used by epydoc to report information back to the user.</tt> </tt>
+<a name="L42"></a><tt class="py-lineno"> 42</tt>  <tt class="py-line"><tt class="py-docstring">    Loggers are responsible for tracking two types of information:</tt> </tt>
+<a name="L43"></a><tt class="py-lineno"> 43</tt>  <tt class="py-line"><tt class="py-docstring">    </tt> </tt>
+<a name="L44"></a><tt class="py-lineno"> 44</tt>  <tt class="py-line"><tt class="py-docstring">        - Messages, such as warnings and errors.</tt> </tt>
+<a name="L45"></a><tt class="py-lineno"> 45</tt>  <tt class="py-line"><tt class="py-docstring">        - Progress on the current task.</tt> </tt>
+<a name="L46"></a><tt class="py-lineno"> 46</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L47"></a><tt class="py-lineno"> 47</tt>  <tt class="py-line"><tt class="py-docstring">    This abstract class allows the command-line interface and the</tt> </tt>
+<a name="L48"></a><tt class="py-lineno"> 48</tt>  <tt class="py-line"><tt class="py-docstring">    graphical interface to each present this information to the user</tt> </tt>
+<a name="L49"></a><tt class="py-lineno"> 49</tt>  <tt class="py-line"><tt class="py-docstring">    in the way that's most natural for each interface.  To set up a</tt> </tt>
+<a name="L50"></a><tt class="py-lineno"> 50</tt>  <tt class="py-line"><tt class="py-docstring">    logger, create a subclass of C{Logger} that overrides all methods,</tt> </tt>
+<a name="L51"></a><tt class="py-lineno"> 51</tt>  <tt class="py-line"><tt class="py-docstring">    and register it using L{register_logger}.</tt> </tt>
+<a name="L52"></a><tt class="py-lineno"> 52</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L53"></a><tt class="py-lineno"> 53</tt>  <tt class="py-line">    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L54"></a><tt class="py-lineno"> 54</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># Messages</tt> </tt>
+<a name="L55"></a><tt class="py-lineno"> 55</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L56"></a><tt class="py-lineno"> 56</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="Logger.log"></a><div id="Logger.log-def"><a name="L57"></a><tt class="py-lineno"> 57</tt> <a class="py-toggle" href="#" id="Logger.log-toggle" onclick="return toggle('Logger.log');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.log.Logger-class.html#log">log</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">level</tt><tt class="py-op">,</tt> <tt class="py-param">message</tt><t [...]
+</div><div id="Logger.log-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Logger.log-expanded"><a name="L58"></a><tt class="py-lineno"> 58</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L59"></a><tt class="py-lineno"> 59</tt>  <tt class="py-line"><tt class="py-docstring">        Display a message.</tt> </tt>
+<a name="L60"></a><tt class="py-lineno"> 60</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L61"></a><tt class="py-lineno"> 61</tt>  <tt class="py-line"><tt class="py-docstring">        @param message: The message string to display.  C{message} may</tt> </tt>
+<a name="L62"></a><tt class="py-lineno"> 62</tt>  <tt class="py-line"><tt class="py-docstring">        contain newlines, but does not need to end in a newline.</tt> </tt>
+<a name="L63"></a><tt class="py-lineno"> 63</tt>  <tt class="py-line"><tt class="py-docstring">        @param level: An integer value indicating the severity of the</tt> </tt>
+<a name="L64"></a><tt class="py-lineno"> 64</tt>  <tt class="py-line"><tt class="py-docstring">        message.</tt> </tt>
+<a name="L65"></a><tt class="py-lineno"> 65</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+</div><a name="L66"></a><tt class="py-lineno"> 66</tt>  <tt class="py-line"> </tt>
+<a name="Logger.close"></a><div id="Logger.close-def"><a name="L67"></a><tt class="py-lineno"> 67</tt> <a class="py-toggle" href="#" id="Logger.close-toggle" onclick="return toggle('Logger.close');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.log.Logger-class.html#close">close</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Logger.close-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Logger.close-expanded"><a name="L68"></a><tt class="py-lineno"> 68</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L69"></a><tt class="py-lineno"> 69</tt>  <tt class="py-line"><tt class="py-docstring">        Perform any tasks needed to close this logger.</tt> </tt>
+<a name="L70"></a><tt class="py-lineno"> 70</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+</div><a name="L71"></a><tt class="py-lineno"> 71</tt>  <tt class="py-line"> </tt>
+<a name="L72"></a><tt class="py-lineno"> 72</tt>  <tt class="py-line">    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L73"></a><tt class="py-lineno"> 73</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># Message blocks</tt> </tt>
+<a name="L74"></a><tt class="py-lineno"> 74</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L75"></a><tt class="py-lineno"> 75</tt>  <tt class="py-line"><tt class="py-comment"></tt>     </tt>
+<a name="Logger.start_block"></a><div id="Logger.start_block-def"><a name="L76"></a><tt class="py-lineno"> 76</tt> <a class="py-toggle" href="#" id="Logger.start_block-toggle" onclick="return toggle('Logger.start_block');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.log.Logger-class.html#start_block">start_block</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">header</tt><tt class=" [...]
+</div><div id="Logger.start_block-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Logger.start_block-expanded"><a name="L77"></a><tt class="py-lineno"> 77</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L78"></a><tt class="py-lineno"> 78</tt>  <tt class="py-line"><tt class="py-docstring">        Start a new message block.  Any calls to L{info()},</tt> </tt>
+<a name="L79"></a><tt class="py-lineno"> 79</tt>  <tt class="py-line"><tt class="py-docstring">        L{warning()}, or L{error()} that occur between a call to</tt> </tt>
+<a name="L80"></a><tt class="py-lineno"> 80</tt>  <tt class="py-line"><tt class="py-docstring">        C{start_block} and a corresponding call to C{end_block} will</tt> </tt>
+<a name="L81"></a><tt class="py-lineno"> 81</tt>  <tt class="py-line"><tt class="py-docstring">        be grouped together, and displayed with a common header.</tt> </tt>
+<a name="L82"></a><tt class="py-lineno"> 82</tt>  <tt class="py-line"><tt class="py-docstring">        C{start_block} can be called multiple times (to form nested</tt> </tt>
+<a name="L83"></a><tt class="py-lineno"> 83</tt>  <tt class="py-line"><tt class="py-docstring">        blocks), but every call to C{start_block} I{must} be balanced</tt> </tt>
+<a name="L84"></a><tt class="py-lineno"> 84</tt>  <tt class="py-line"><tt class="py-docstring">        by a call to C{end_block}.</tt> </tt>
+<a name="L85"></a><tt class="py-lineno"> 85</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+</div><a name="L86"></a><tt class="py-lineno"> 86</tt>  <tt class="py-line">         </tt>
+<a name="Logger.end_block"></a><div id="Logger.end_block-def"><a name="L87"></a><tt class="py-lineno"> 87</tt> <a class="py-toggle" href="#" id="Logger.end_block-toggle" onclick="return toggle('Logger.end_block');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.log.Logger-class.html#end_block">end_block</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Logger.end_block-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Logger.end_block-expanded"><a name="L88"></a><tt class="py-lineno"> 88</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L89"></a><tt class="py-lineno"> 89</tt>  <tt class="py-line"><tt class="py-docstring">        End a warning block.  See L{start_block} for details.</tt> </tt>
+<a name="L90"></a><tt class="py-lineno"> 90</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+</div><a name="L91"></a><tt class="py-lineno"> 91</tt>  <tt class="py-line"> </tt>
+<a name="L92"></a><tt class="py-lineno"> 92</tt>  <tt class="py-line">    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L93"></a><tt class="py-lineno"> 93</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># Progress bar</tt> </tt>
+<a name="L94"></a><tt class="py-lineno"> 94</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L95"></a><tt class="py-lineno"> 95</tt>  <tt class="py-line"><tt class="py-comment"></tt>     </tt>
+<a name="Logger.start_progress"></a><div id="Logger.start_progress-def"><a name="L96"></a><tt class="py-lineno"> 96</tt> <a class="py-toggle" href="#" id="Logger.start_progress-toggle" onclick="return toggle('Logger.start_progress');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.log.Logger-class.html#start_progress">start_progress</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">head [...]
+</div><div id="Logger.start_progress-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Logger.start_progress-expanded"><a name="L97"></a><tt class="py-lineno"> 97</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L98"></a><tt class="py-lineno"> 98</tt>  <tt class="py-line"><tt class="py-docstring">        Begin displaying progress for a new task.  C{header} is a</tt> </tt>
+<a name="L99"></a><tt class="py-lineno"> 99</tt>  <tt class="py-line"><tt class="py-docstring">        description of the task for which progress is being reported.</tt> </tt>
+<a name="L100"></a><tt class="py-lineno">100</tt>  <tt class="py-line"><tt class="py-docstring">        Each call to C{start_progress} must be followed by a call to</tt> </tt>
+<a name="L101"></a><tt class="py-lineno">101</tt>  <tt class="py-line"><tt class="py-docstring">        C{end_progress} (with no intervening calls to</tt> </tt>
+<a name="L102"></a><tt class="py-lineno">102</tt>  <tt class="py-line"><tt class="py-docstring">        C{start_progress}).</tt> </tt>
+<a name="L103"></a><tt class="py-lineno">103</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+</div><a name="L104"></a><tt class="py-lineno">104</tt>  <tt class="py-line"> </tt>
+<a name="Logger.end_progress"></a><div id="Logger.end_progress-def"><a name="L105"></a><tt class="py-lineno">105</tt> <a class="py-toggle" href="#" id="Logger.end_progress-toggle" onclick="return toggle('Logger.end_progress');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.log.Logger-class.html#end_progress">end_progress</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Logger.end_progress-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Logger.end_progress-expanded"><a name="L106"></a><tt class="py-lineno">106</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L107"></a><tt class="py-lineno">107</tt>  <tt class="py-line"><tt class="py-docstring">        Finish off the display of progress for the current task.  See</tt> </tt>
+<a name="L108"></a><tt class="py-lineno">108</tt>  <tt class="py-line"><tt class="py-docstring">        L{start_progress} for more information.</tt> </tt>
+<a name="L109"></a><tt class="py-lineno">109</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+</div><a name="L110"></a><tt class="py-lineno">110</tt>  <tt class="py-line"> </tt>
+<a name="Logger.progress"></a><div id="Logger.progress-def"><a name="L111"></a><tt class="py-lineno">111</tt> <a class="py-toggle" href="#" id="Logger.progress-toggle" onclick="return toggle('Logger.progress');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.log.Logger-class.html#progress">progress</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">percent</tt><tt class="py-op">,</tt> <t [...]
+</div><div id="Logger.progress-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Logger.progress-expanded"><a name="L112"></a><tt class="py-lineno">112</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L113"></a><tt class="py-lineno">113</tt>  <tt class="py-line"><tt class="py-docstring">        Update the progress display.</tt> </tt>
+<a name="L114"></a><tt class="py-lineno">114</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt>
+<a name="L115"></a><tt class="py-lineno">115</tt>  <tt class="py-line"><tt class="py-docstring">        @param percent: A float from 0.0 to 1.0, indicating how much</tt> </tt>
+<a name="L116"></a><tt class="py-lineno">116</tt>  <tt class="py-line"><tt class="py-docstring">            progress has been made.</tt> </tt>
+<a name="L117"></a><tt class="py-lineno">117</tt>  <tt class="py-line"><tt class="py-docstring">        @param message: A message indicating the most recent action</tt> </tt>
+<a name="L118"></a><tt class="py-lineno">118</tt>  <tt class="py-line"><tt class="py-docstring">            that contributed towards that progress.</tt> </tt>
+<a name="L119"></a><tt class="py-lineno">119</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+</div></div><a name="L120"></a><tt class="py-lineno">120</tt>  <tt class="py-line"> </tt>
+<a name="SimpleLogger"></a><div id="SimpleLogger-def"><a name="L121"></a><tt class="py-lineno">121</tt> <a class="py-toggle" href="#" id="SimpleLogger-toggle" onclick="return toggle('SimpleLogger');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="epydoc.log.SimpleLogger-class.html">SimpleLogger</a><tt class="py-op">(</tt><tt class="py-base-class">Logger</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="SimpleLogger-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="SimpleLogger-expanded"><a name="SimpleLogger.__init__"></a><div id="SimpleLogger.__init__-def"><a name="L122"></a><tt class="py-lineno">122</tt> <a class="py-toggle" href="#" id="SimpleLogger.__init__-toggle" onclick="return toggle('SimpleLogger.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.log.SimpleLogger-class.html#__init__ [...]
+</div><div id="SimpleLogger.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SimpleLogger.__init__-expanded"><a name="L123"></a><tt class="py-lineno">123</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">threshold</tt> <tt class="py-op">=</tt> <tt class="py-name">threshold</tt> </tt>
+</div><a name="SimpleLogger.log"></a><div id="SimpleLogger.log-def"><a name="L124"></a><tt class="py-lineno">124</tt> <a class="py-toggle" href="#" id="SimpleLogger.log-toggle" onclick="return toggle('SimpleLogger.log');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.log.SimpleLogger-class.html#log">log</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">level</tt><tt class="py-op">,</tt [...]
+</div><div id="SimpleLogger.log-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SimpleLogger.log-expanded"><a name="L125"></a><tt class="py-lineno">125</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">level</tt> <tt class="py-op">>=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">threshold</tt><tt class="py-op">:</tt> <tt class="py-keyword">print</tt> <tt class="py-name">message</tt> </tt>
+</div></div><a name="L126"></a><tt class="py-lineno">126</tt>  <tt class="py-line">         </tt>
+<a name="L127"></a><tt class="py-lineno">127</tt>  <tt class="py-line"><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L128"></a><tt class="py-lineno">128</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Logger Registry</tt> </tt>
+<a name="L129"></a><tt class="py-lineno">129</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L130"></a><tt class="py-lineno">130</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L131"></a><tt class="py-lineno">131</tt>  <tt class="py-line"><tt id="link-7" class="py-name" targets="Variable epydoc.log._loggers=epydoc.log-module.html#_loggers"><a title="epydoc.log._loggers" class="py-name" href="#" onclick="return doclink('link-7', '_loggers', 'link-7');">_loggers</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L132"></a><tt class="py-lineno">132</tt>  <tt class="py-line"><tt class="py-string">"""</tt> </tt>
+<a name="L133"></a><tt class="py-lineno">133</tt>  <tt class="py-line"><tt class="py-string">The list of registered logging functions.</tt> </tt>
+<a name="L134"></a><tt class="py-lineno">134</tt>  <tt class="py-line"><tt class="py-string">"""</tt> </tt>
+<a name="L135"></a><tt class="py-lineno">135</tt>  <tt class="py-line"> </tt>
+<a name="register_logger"></a><div id="register_logger-def"><a name="L136"></a><tt class="py-lineno">136</tt> <a class="py-toggle" href="#" id="register_logger-toggle" onclick="return toggle('register_logger');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.log-module.html#register_logger">register_logger</a><tt class="py-op">(</tt><tt class="py-param">logger</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="register_logger-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="register_logger-expanded"><a name="L137"></a><tt class="py-lineno">137</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L138"></a><tt class="py-lineno">138</tt>  <tt class="py-line"><tt class="py-docstring">    Register a logger.  Each call to one of the logging functions</tt> </tt>
+<a name="L139"></a><tt class="py-lineno">139</tt>  <tt class="py-line"><tt class="py-docstring">    defined by this module will be delegated to each registered</tt> </tt>
+<a name="L140"></a><tt class="py-lineno">140</tt>  <tt class="py-line"><tt class="py-docstring">    logger.</tt> </tt>
+<a name="L141"></a><tt class="py-lineno">141</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L142"></a><tt class="py-lineno">142</tt>  <tt class="py-line">    <tt id="link-8" class="py-name"><a title="epydoc.log._loggers" class="py-name" href="#" onclick="return doclink('link-8', '_loggers', 'link-7');">_loggers</a></tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">logger</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L143"></a><tt class="py-lineno">143</tt>  <tt class="py-line"> </tt>
+<a name="remove_logger"></a><div id="remove_logger-def"><a name="L144"></a><tt class="py-lineno">144</tt> <a class="py-toggle" href="#" id="remove_logger-toggle" onclick="return toggle('remove_logger');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.log-module.html#remove_logger">remove_logger</a><tt class="py-op">(</tt><tt class="py-param">logger</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="remove_logger-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="remove_logger-expanded"><a name="L145"></a><tt class="py-lineno">145</tt>  <tt class="py-line">    <tt id="link-9" class="py-name"><a title="epydoc.log._loggers" class="py-name" href="#" onclick="return doclink('link-9', '_loggers', 'link-7');">_loggers</a></tt><tt class="py-op">.</tt><tt class="py-name">remove</tt><tt class="py-op">(</tt><tt class="py-name">logger</tt><tt class="py-op">) [...]
+</div><a name="L146"></a><tt class="py-lineno">146</tt>  <tt class="py-line"> </tt>
+<a name="L147"></a><tt class="py-lineno">147</tt>  <tt class="py-line"><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L148"></a><tt class="py-lineno">148</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Logging Functions</tt> </tt>
+<a name="L149"></a><tt class="py-lineno">149</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L150"></a><tt class="py-lineno">150</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># The following methods all just delegate to the corresponding </tt> </tt>
+<a name="L151"></a><tt class="py-lineno">151</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># methods in the Logger class (above) for each registered logger.</tt> </tt>
+<a name="L152"></a><tt class="py-lineno">152</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="fatal"></a><div id="fatal-def"><a name="L153"></a><tt class="py-lineno">153</tt> <a class="py-toggle" href="#" id="fatal-toggle" onclick="return toggle('fatal');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.log-module.html#fatal">fatal</a><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-param">messages</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="fatal-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="fatal-expanded"><a name="L154"></a><tt class="py-lineno">154</tt>  <tt class="py-line">    <tt class="py-docstring">"""Display the given fatal message."""</tt> </tt>
+<a name="L155"></a><tt class="py-lineno">155</tt>  <tt class="py-line">    <tt class="py-name">message</tt> <tt class="py-op">=</tt> <tt class="py-string">' '</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">'%s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">,</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">m</tt> <tt class="py [...]
+<a name="L156"></a><tt class="py-lineno">156</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">logger</tt> <tt class="py-keyword">in</tt> <tt id="link-10" class="py-name"><a title="epydoc.log._loggers" class="py-name" href="#" onclick="return doclink('link-10', '_loggers', 'link-7');">_loggers</a></tt><tt class="py-op">:</tt> <tt class="py-name">logger</tt><tt class="py-op">.</tt><tt id="link-11" class="py-name" targets="Method epydoc.cli.ConsoleLogger.log [...]
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-11', 'log', 'link-11');">log</a></tt><tt class="py-op">(</tt><tt id="link-12" class="py-name"><a title="epydoc.log.FATAL" class="py-name" href="#" onclick="return doclink('link-12', 'FATAL', 'link-5');">FATAL</a></tt><tt class="py-op">,</tt> <tt class="py-name">message</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L157"></a><tt class="py-lineno">157</tt>  <tt class="py-line">     </tt>
+<a name="error"></a><div id="error-def"><a name="L158"></a><tt class="py-lineno">158</tt> <a class="py-toggle" href="#" id="error-toggle" onclick="return toggle('error');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.log-module.html#error">error</a><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-param">messages</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="error-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="error-expanded"><a name="L159"></a><tt class="py-lineno">159</tt>  <tt class="py-line">    <tt class="py-docstring">"""Display the given error message."""</tt> </tt>
+<a name="L160"></a><tt class="py-lineno">160</tt>  <tt class="py-line">    <tt class="py-name">message</tt> <tt class="py-op">=</tt> <tt class="py-string">' '</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">'%s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">,</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">m</tt> <tt class="py [...]
+<a name="L161"></a><tt class="py-lineno">161</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">logger</tt> <tt class="py-keyword">in</tt> <tt id="link-13" class="py-name"><a title="epydoc.log._loggers" class="py-name" href="#" onclick="return doclink('link-13', '_loggers', 'link-7');">_loggers</a></tt><tt class="py-op">:</tt> <tt class="py-name">logger</tt><tt class="py-op">.</tt><tt id="link-14" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-14', 'log', 'link-11');">log</a></tt><tt class="py-op">(</tt><tt id="link-15" class="py-name"><a title="epydoc.log.ERROR" class="py-name" href="#" onclick="return doclink('link-15', 'ERROR', 'link-4');">ERROR</a></tt><tt class="py-op">,</tt> <tt class="py-name">message</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L162"></a><tt class="py-lineno">162</tt>  <tt class="py-line">     </tt>
+<a name="warning"></a><div id="warning-def"><a name="L163"></a><tt class="py-lineno">163</tt> <a class="py-toggle" href="#" id="warning-toggle" onclick="return toggle('warning');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.log-module.html#warning">warning</a><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-param">messages</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="warning-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="warning-expanded"><a name="L164"></a><tt class="py-lineno">164</tt>  <tt class="py-line">    <tt class="py-docstring">"""Display the given warning message."""</tt> </tt>
+<a name="L165"></a><tt class="py-lineno">165</tt>  <tt class="py-line">    <tt class="py-name">message</tt> <tt class="py-op">=</tt> <tt class="py-string">' '</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">'%s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">,</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">m</tt> <tt class="py [...]
+<a name="L166"></a><tt class="py-lineno">166</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">logger</tt> <tt class="py-keyword">in</tt> <tt id="link-16" class="py-name"><a title="epydoc.log._loggers" class="py-name" href="#" onclick="return doclink('link-16', '_loggers', 'link-7');">_loggers</a></tt><tt class="py-op">:</tt> <tt class="py-name">logger</tt><tt class="py-op">.</tt><tt id="link-17" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-17', 'log', 'link-11');">log</a></tt><tt class="py-op">(</tt><tt id="link-18" class="py-name"><a title="epydoc.log.WARNING" class="py-name" href="#" onclick="return doclink('link-18', 'WARNING', 'link-3');">WARNING</a></tt><tt class="py-op">,</tt> <tt class="py-name">message</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L167"></a><tt class="py-lineno">167</tt>  <tt class="py-line">     </tt>
+<a name="docstring_warning"></a><div id="docstring_warning-def"><a name="L168"></a><tt class="py-lineno">168</tt> <a class="py-toggle" href="#" id="docstring_warning-toggle" onclick="return toggle('docstring_warning');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.log-module.html#docstring_warning">docstring_warning</a><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-param">messages</tt><tt class="py-op">)</tt><tt class="py-op" [...]
+</div><div id="docstring_warning-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="docstring_warning-expanded"><a name="L169"></a><tt class="py-lineno">169</tt>  <tt class="py-line">    <tt class="py-docstring">"""Display the given docstring warning message."""</tt> </tt>
+<a name="L170"></a><tt class="py-lineno">170</tt>  <tt class="py-line">    <tt class="py-name">message</tt> <tt class="py-op">=</tt> <tt class="py-string">' '</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">'%s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">,</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">m</tt> <tt class="py [...]
+<a name="L171"></a><tt class="py-lineno">171</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">logger</tt> <tt class="py-keyword">in</tt> <tt id="link-19" class="py-name"><a title="epydoc.log._loggers" class="py-name" href="#" onclick="return doclink('link-19', '_loggers', 'link-7');">_loggers</a></tt><tt class="py-op">:</tt> <tt class="py-name">logger</tt><tt class="py-op">.</tt><tt id="link-20" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-20', 'log', 'link-11');">log</a></tt><tt class="py-op">(</tt><tt id="link-21" class="py-name"><a title="epydoc.log.DOCSTRING_WARNING" class="py-name" href="#" onclick="return doclink('link-21', 'DOCSTRING_WARNING', 'link-2');">DOCSTRING_WARNING</a></tt><tt class="py-op">,</tt> <tt class="py-name">message</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L172"></a><tt class="py-lineno">172</tt>  <tt class="py-line">     </tt>
+<a name="info"></a><div id="info-def"><a name="L173"></a><tt class="py-lineno">173</tt> <a class="py-toggle" href="#" id="info-toggle" onclick="return toggle('info');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.log-module.html#info">info</a><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-param">messages</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="info-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="info-expanded"><a name="L174"></a><tt class="py-lineno">174</tt>  <tt class="py-line">    <tt class="py-docstring">"""Display the given informational message."""</tt> </tt>
+<a name="L175"></a><tt class="py-lineno">175</tt>  <tt class="py-line">    <tt class="py-name">message</tt> <tt class="py-op">=</tt> <tt class="py-string">' '</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">'%s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">,</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">m</tt> <tt class="py [...]
+<a name="L176"></a><tt class="py-lineno">176</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">logger</tt> <tt class="py-keyword">in</tt> <tt id="link-22" class="py-name"><a title="epydoc.log._loggers" class="py-name" href="#" onclick="return doclink('link-22', '_loggers', 'link-7');">_loggers</a></tt><tt class="py-op">:</tt> <tt class="py-name">logger</tt><tt class="py-op">.</tt><tt id="link-23" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-23', 'log', 'link-11');">log</a></tt><tt class="py-op">(</tt><tt id="link-24" class="py-name"><a title="epydoc.log.INFO" class="py-name" href="#" onclick="return doclink('link-24', 'INFO', 'link-1');">INFO</a></tt><tt class="py-op">,</tt> <tt class="py-name">message</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L177"></a><tt class="py-lineno">177</tt>  <tt class="py-line">     </tt>
+<a name="debug"></a><div id="debug-def"><a name="L178"></a><tt class="py-lineno">178</tt> <a class="py-toggle" href="#" id="debug-toggle" onclick="return toggle('debug');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.log-module.html#debug">debug</a><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-param">messages</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="debug-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="debug-expanded"><a name="L179"></a><tt class="py-lineno">179</tt>  <tt class="py-line">    <tt class="py-docstring">"""Display the given debugging message."""</tt> </tt>
+<a name="L180"></a><tt class="py-lineno">180</tt>  <tt class="py-line">    <tt class="py-name">message</tt> <tt class="py-op">=</tt> <tt class="py-string">' '</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">'%s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">,</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">m</tt> <tt class="py [...]
+<a name="L181"></a><tt class="py-lineno">181</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">logger</tt> <tt class="py-keyword">in</tt> <tt id="link-25" class="py-name"><a title="epydoc.log._loggers" class="py-name" href="#" onclick="return doclink('link-25', '_loggers', 'link-7');">_loggers</a></tt><tt class="py-op">:</tt> <tt class="py-name">logger</tt><tt class="py-op">.</tt><tt id="link-26" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-26', 'log', 'link-11');">log</a></tt><tt class="py-op">(</tt><tt id="link-27" class="py-name"><a title="epydoc.DEBUG
+epydoc.gui.DEBUG
+epydoc.log.DEBUG" class="py-name" href="#" onclick="return doclink('link-27', 'DEBUG', 'link-0');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-name">message</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L182"></a><tt class="py-lineno">182</tt>  <tt class="py-line">     </tt>
+<a name="start_block"></a><div id="start_block-def"><a name="L183"></a><tt class="py-lineno">183</tt> <a class="py-toggle" href="#" id="start_block-toggle" onclick="return toggle('start_block');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.log-module.html#start_block">start_block</a><tt class="py-op">(</tt><tt class="py-param">header</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="start_block-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="start_block-expanded"><a name="L184"></a><tt class="py-lineno">184</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">logger</tt> <tt class="py-keyword">in</tt> <tt id="link-28" class="py-name"><a title="epydoc.log._loggers" class="py-name" href="#" onclick="return doclink('link-28', '_loggers', 'link-7');">_loggers</a></tt><tt class="py-op">:</tt> <tt class=" [...]
+epydoc.cli.HTMLLogger.start_block
+epydoc.gui.GUILogger.start_block
+epydoc.log.Logger.start_block
+epydoc.log.start_block" class="py-name" href="#" onclick="return doclink('link-29', 'start_block', 'link-29');">start_block</a></tt><tt class="py-op">(</tt><tt class="py-name">header</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L185"></a><tt class="py-lineno">185</tt>  <tt class="py-line"><tt id="link-30" class="py-name"><a title="epydoc.cli.ConsoleLogger.start_block
+epydoc.cli.HTMLLogger.start_block
+epydoc.gui.GUILogger.start_block
+epydoc.log.Logger.start_block
+epydoc.log.start_block" class="py-name" href="#" onclick="return doclink('link-30', 'start_block', 'link-29');">start_block</a></tt><tt class="py-op">.</tt><tt id="link-31" class="py-name" targets="Variable epydoc.markup.epytext.__doc__=epydoc.markup.epytext-module.html#__doc__"><a title="epydoc.markup.epytext.__doc__" class="py-name" href="#" onclick="return doclink('link-31', '__doc__', 'link-31');">__doc__</a></tt> <tt class="py-op">=</tt> <tt id="link-32" class="py-name" targets="Cla [...]
+epydoc.cli.HTMLLogger.start_block
+epydoc.gui.GUILogger.start_block
+epydoc.log.Logger.start_block
+epydoc.log.start_block" class="py-name" href="#" onclick="return doclink('link-33', 'start_block', 'link-29');">start_block</a></tt><tt class="py-op">.</tt><tt id="link-34" class="py-name"><a title="epydoc.markup.epytext.__doc__" class="py-name" href="#" onclick="return doclink('link-34', '__doc__', 'link-31');">__doc__</a></tt> </tt>
+<a name="L186"></a><tt class="py-lineno">186</tt>  <tt class="py-line">     </tt>
+<a name="end_block"></a><div id="end_block-def"><a name="L187"></a><tt class="py-lineno">187</tt> <a class="py-toggle" href="#" id="end_block-toggle" onclick="return toggle('end_block');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.log-module.html#end_block">end_block</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="end_block-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="end_block-expanded"><a name="L188"></a><tt class="py-lineno">188</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">logger</tt> <tt class="py-keyword">in</tt> <tt id="link-35" class="py-name"><a title="epydoc.log._loggers" class="py-name" href="#" onclick="return doclink('link-35', '_loggers', 'link-7');">_loggers</a></tt><tt class="py-op">:</tt> <tt class="py-n [...]
+epydoc.cli.HTMLLogger.end_block
+epydoc.gui.GUILogger.end_block
+epydoc.log.Logger.end_block
+epydoc.log.end_block" class="py-name" href="#" onclick="return doclink('link-36', 'end_block', 'link-36');">end_block</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L189"></a><tt class="py-lineno">189</tt>  <tt class="py-line"><tt id="link-37" class="py-name"><a title="epydoc.cli.ConsoleLogger.end_block
+epydoc.cli.HTMLLogger.end_block
+epydoc.gui.GUILogger.end_block
+epydoc.log.Logger.end_block
+epydoc.log.end_block" class="py-name" href="#" onclick="return doclink('link-37', 'end_block', 'link-36');">end_block</a></tt><tt class="py-op">.</tt><tt id="link-38" class="py-name"><a title="epydoc.markup.epytext.__doc__" class="py-name" href="#" onclick="return doclink('link-38', '__doc__', 'link-31');">__doc__</a></tt> <tt class="py-op">=</tt> <tt id="link-39" class="py-name"><a title="epydoc.log.Logger" class="py-name" href="#" onclick="return doclink('link-39', 'Logger', 'link-32') [...]
+epydoc.cli.HTMLLogger.end_block
+epydoc.gui.GUILogger.end_block
+epydoc.log.Logger.end_block
+epydoc.log.end_block" class="py-name" href="#" onclick="return doclink('link-40', 'end_block', 'link-36');">end_block</a></tt><tt class="py-op">.</tt><tt id="link-41" class="py-name"><a title="epydoc.markup.epytext.__doc__" class="py-name" href="#" onclick="return doclink('link-41', '__doc__', 'link-31');">__doc__</a></tt> </tt>
+<a name="L190"></a><tt class="py-lineno">190</tt>  <tt class="py-line">     </tt>
+<a name="start_progress"></a><div id="start_progress-def"><a name="L191"></a><tt class="py-lineno">191</tt> <a class="py-toggle" href="#" id="start_progress-toggle" onclick="return toggle('start_progress');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.log-module.html#start_progress">start_progress</a><tt class="py-op">(</tt><tt class="py-param">header</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt clas [...]
+</div><div id="start_progress-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="start_progress-expanded"><a name="L192"></a><tt class="py-lineno">192</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">logger</tt> <tt class="py-keyword">in</tt> <tt id="link-42" class="py-name"><a title="epydoc.log._loggers" class="py-name" href="#" onclick="return doclink('link-42', '_loggers', 'link-7');">_loggers</a></tt><tt class="py-op">:</tt> <tt c [...]
+epydoc.cli.UnifiedProgressConsoleLogger.start_progress
+epydoc.gui.GUILogger.start_progress
+epydoc.log.Logger.start_progress
+epydoc.log.start_progress" class="py-name" href="#" onclick="return doclink('link-43', 'start_progress', 'link-43');">start_progress</a></tt><tt class="py-op">(</tt><tt class="py-name">header</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L193"></a><tt class="py-lineno">193</tt>  <tt class="py-line"><tt id="link-44" class="py-name"><a title="epydoc.cli.ConsoleLogger.start_progress
+epydoc.cli.UnifiedProgressConsoleLogger.start_progress
+epydoc.gui.GUILogger.start_progress
+epydoc.log.Logger.start_progress
+epydoc.log.start_progress" class="py-name" href="#" onclick="return doclink('link-44', 'start_progress', 'link-43');">start_progress</a></tt><tt class="py-op">.</tt><tt id="link-45" class="py-name"><a title="epydoc.markup.epytext.__doc__" class="py-name" href="#" onclick="return doclink('link-45', '__doc__', 'link-31');">__doc__</a></tt> <tt class="py-op">=</tt> <tt id="link-46" class="py-name"><a title="epydoc.log.Logger" class="py-name" href="#" onclick="return doclink('link-46', 'Logg [...]
+epydoc.cli.UnifiedProgressConsoleLogger.start_progress
+epydoc.gui.GUILogger.start_progress
+epydoc.log.Logger.start_progress
+epydoc.log.start_progress" class="py-name" href="#" onclick="return doclink('link-47', 'start_progress', 'link-43');">start_progress</a></tt><tt class="py-op">.</tt><tt id="link-48" class="py-name"><a title="epydoc.markup.epytext.__doc__" class="py-name" href="#" onclick="return doclink('link-48', '__doc__', 'link-31');">__doc__</a></tt> </tt>
+<a name="L194"></a><tt class="py-lineno">194</tt>  <tt class="py-line">     </tt>
+<a name="end_progress"></a><div id="end_progress-def"><a name="L195"></a><tt class="py-lineno">195</tt> <a class="py-toggle" href="#" id="end_progress-toggle" onclick="return toggle('end_progress');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.log-module.html#end_progress">end_progress</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="end_progress-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="end_progress-expanded"><a name="L196"></a><tt class="py-lineno">196</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">logger</tt> <tt class="py-keyword">in</tt> <tt id="link-49" class="py-name"><a title="epydoc.log._loggers" class="py-name" href="#" onclick="return doclink('link-49', '_loggers', 'link-7');">_loggers</a></tt><tt class="py-op">:</tt> <tt class [...]
+epydoc.cli.UnifiedProgressConsoleLogger.end_progress
+epydoc.gui.GUILogger.end_progress
+epydoc.log.Logger.end_progress
+epydoc.log.end_progress" class="py-name" href="#" onclick="return doclink('link-50', 'end_progress', 'link-50');">end_progress</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L197"></a><tt class="py-lineno">197</tt>  <tt class="py-line"><tt id="link-51" class="py-name"><a title="epydoc.cli.ConsoleLogger.end_progress
+epydoc.cli.UnifiedProgressConsoleLogger.end_progress
+epydoc.gui.GUILogger.end_progress
+epydoc.log.Logger.end_progress
+epydoc.log.end_progress" class="py-name" href="#" onclick="return doclink('link-51', 'end_progress', 'link-50');">end_progress</a></tt><tt class="py-op">.</tt><tt id="link-52" class="py-name"><a title="epydoc.markup.epytext.__doc__" class="py-name" href="#" onclick="return doclink('link-52', '__doc__', 'link-31');">__doc__</a></tt> <tt class="py-op">=</tt> <tt id="link-53" class="py-name"><a title="epydoc.log.Logger" class="py-name" href="#" onclick="return doclink('link-53', 'Logger', ' [...]
+epydoc.cli.UnifiedProgressConsoleLogger.end_progress
+epydoc.gui.GUILogger.end_progress
+epydoc.log.Logger.end_progress
+epydoc.log.end_progress" class="py-name" href="#" onclick="return doclink('link-54', 'end_progress', 'link-50');">end_progress</a></tt><tt class="py-op">.</tt><tt id="link-55" class="py-name"><a title="epydoc.markup.epytext.__doc__" class="py-name" href="#" onclick="return doclink('link-55', '__doc__', 'link-31');">__doc__</a></tt> </tt>
+<a name="L198"></a><tt class="py-lineno">198</tt>  <tt class="py-line">     </tt>
+<a name="progress"></a><div id="progress-def"><a name="L199"></a><tt class="py-lineno">199</tt> <a class="py-toggle" href="#" id="progress-toggle" onclick="return toggle('progress');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.log-module.html#progress">progress</a><tt class="py-op">(</tt><tt class="py-param">percent</tt><tt class="py-op">,</tt> <tt class="py-param">message</tt><tt class="py-op">=</tt><tt class="py-string">''</tt><tt class [...]
+</div><div id="progress-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="progress-expanded"><a name="L200"></a><tt class="py-lineno">200</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">logger</tt> <tt class="py-keyword">in</tt> <tt id="link-56" class="py-name"><a title="epydoc.log._loggers" class="py-name" href="#" onclick="return doclink('link-56', '_loggers', 'link-7');">_loggers</a></tt><tt class="py-op">:</tt> <tt class="py-nam [...]
+epydoc.cli.UnifiedProgressConsoleLogger.progress
+epydoc.docbuilder._ProgressEstimator.progress
+epydoc.gui.GUILogger.progress
+epydoc.log.Logger.progress
+epydoc.log.progress" class="py-name" href="#" onclick="return doclink('link-57', 'progress', 'link-57');">progress</a></tt><tt class="py-op">(</tt><tt class="py-name">percent</tt><tt class="py-op">,</tt> <tt class="py-string">'%s'</tt> <tt class="py-op">%</tt> <tt class="py-name">message</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L201"></a><tt class="py-lineno">201</tt>  <tt class="py-line"><tt id="link-58" class="py-name"><a title="epydoc.cli.ConsoleLogger.progress
+epydoc.cli.UnifiedProgressConsoleLogger.progress
+epydoc.docbuilder._ProgressEstimator.progress
+epydoc.gui.GUILogger.progress
+epydoc.log.Logger.progress
+epydoc.log.progress" class="py-name" href="#" onclick="return doclink('link-58', 'progress', 'link-57');">progress</a></tt><tt class="py-op">.</tt><tt id="link-59" class="py-name"><a title="epydoc.markup.epytext.__doc__" class="py-name" href="#" onclick="return doclink('link-59', '__doc__', 'link-31');">__doc__</a></tt> <tt class="py-op">=</tt> <tt id="link-60" class="py-name"><a title="epydoc.log.Logger" class="py-name" href="#" onclick="return doclink('link-60', 'Logger', 'link-32');"> [...]
+epydoc.cli.UnifiedProgressConsoleLogger.progress
+epydoc.docbuilder._ProgressEstimator.progress
+epydoc.gui.GUILogger.progress
+epydoc.log.Logger.progress
+epydoc.log.progress" class="py-name" href="#" onclick="return doclink('link-61', 'progress', 'link-57');">progress</a></tt><tt class="py-op">.</tt><tt id="link-62" class="py-name"><a title="epydoc.markup.epytext.__doc__" class="py-name" href="#" onclick="return doclink('link-62', '__doc__', 'link-31');">__doc__</a></tt> </tt>
+<a name="L202"></a><tt class="py-lineno">202</tt>  <tt class="py-line"> </tt>
+<a name="close"></a><div id="close-def"><a name="L203"></a><tt class="py-lineno">203</tt> <a class="py-toggle" href="#" id="close-toggle" onclick="return toggle('close');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.log-module.html#close">close</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="close-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="close-expanded"><a name="L204"></a><tt class="py-lineno">204</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">logger</tt> <tt class="py-keyword">in</tt> <tt id="link-63" class="py-name"><a title="epydoc.log._loggers" class="py-name" href="#" onclick="return doclink('link-63', '_loggers', 'link-7');">_loggers</a></tt><tt class="py-op">:</tt> <tt class="py-name">log [...]
+epydoc.docintrospecter._DevNull.close
+epydoc.log.Logger.close
+epydoc.log.close" class="py-name" href="#" onclick="return doclink('link-64', 'close', 'link-64');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L205"></a><tt class="py-lineno">205</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:09:42 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.log.Logger-class.html b/doc/api/epydoc.log.Logger-class.html
new file mode 100644
index 0000000..246571f
--- /dev/null
+++ b/doc/api/epydoc.log.Logger-class.html
@@ -0,0 +1,532 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.log.Logger</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.log-module.html">Module log</a> ::
+        Class Logger
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.log.Logger-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Logger</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.log-pysrc.html#Logger">source code</a></span></p>
+<center>
+<center>  <map id="uml_class_diagram_for_epydoc_l" name="uml_class_diagram_for_epydoc_l">
+<area shape="rect" href="epydoc.cli.HTMLLogger-class.html" title="A logger used to generate a log of all warnings and messages to an HTML file." alt="" coords="6,192,136,230" />
+<area shape="rect" href="epydoc.cli.UnifiedProgressConsoleLogger-class.html" title="epydoc.cli.UnifiedProgressConsoleLogger" alt="" coords="416,248,654,286" />
+<area shape="rect" href="epydoc.gui.GUILogger-class.html" title="epydoc.gui.GUILogger" alt="" coords="166,192,288,230" />
+<area shape="rect" href="epydoc.log.SimpleLogger-class.html" title="epydoc.log.SimpleLogger" alt="" coords="318,192,435,230" />
+<area shape="rect" href="epydoc.cli.ConsoleLogger-class.html" title="epydoc.cli.ConsoleLogger" alt="" coords="464,192,606,230" />
+<area shape="rect" href="epydoc.log.Logger-class.html#log" title="Display a message." alt="" coords="194,36,410,55" />
+<area shape="rect" href="epydoc.log.Logger-class.html#close" title="Perform any tasks needed to close this logger." alt="" coords="194,55,410,74" />
+<area shape="rect" href="epydoc.log.Logger-class.html#start_block" title="Start a new message block." alt="" coords="194,74,410,92" />
+<area shape="rect" href="epydoc.log.Logger-class.html#end_block" title="End a warning block." alt="" coords="194,92,410,111" />
+<area shape="rect" href="epydoc.log.Logger-class.html#start_progress" title="Begin displaying progress for a new task." alt="" coords="194,111,410,130" />
+<area shape="rect" href="epydoc.log.Logger-class.html#end_progress" title="Finish off the display of progress for the current task." alt="" coords="194,130,410,148" />
+<area shape="rect" href="epydoc.log.Logger-class.html#progress" title="Update the progress display." alt="" coords="194,148,410,167" />
+<area shape="rect" href="epydoc.log.Logger-class.html" title="An abstract base class that defines the interface for loggers, which are used by epydoc to report information back to the user." alt="" coords="182,6,422,174" />
+</map>
+  <img src="uml_class_diagram_for_epydoc_l.gif" alt='' usemap="#uml_class_diagram_for_epydoc_l" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<p>An abstract base class that defines the interface for <a 
+  name="index-loggers"></a><i class="indexterm">loggers</i>, which are used
+  by epydoc to report information back to the user. Loggers are responsible
+  for tracking two types of information:</p>
+  <ul>
+    <li>
+      Messages, such as warnings and errors.
+    </li>
+    <li>
+      Progress on the current task.
+    </li>
+  </ul>
+  <p>This abstract class allows the command-line interface and the 
+  graphical interface to each present this information to the user in the 
+  way that's most natural for each interface.  To set up a logger, create a
+  subclass of <code>Logger</code> that overrides all methods, and register 
+  it using <a href="epydoc.log-module.html#register_logger" 
+  class="link">register_logger</a>.</p>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.log.Logger-class.html#log" class="summary-sig-name">log</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">level</span>,
+        <span class="summary-sig-arg">message</span>)</span><br />
+      Display a message.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.log-pysrc.html#Logger.log">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="close"></a><span class="summary-sig-name">close</span>(<span class="summary-sig-arg">self</span>)</span><br />
+      Perform any tasks needed to close this logger.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.log-pysrc.html#Logger.close">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.log.Logger-class.html#start_block" class="summary-sig-name">start_block</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">header</span>)</span><br />
+      Start a new message block.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.log-pysrc.html#Logger.start_block">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.log.Logger-class.html#end_block" class="summary-sig-name">end_block</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      End a warning block.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.log-pysrc.html#Logger.end_block">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.log.Logger-class.html#start_progress" class="summary-sig-name">start_progress</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">header</span>=<span class="summary-sig-default">None</span>)</span><br />
+      Begin displaying progress for a new task.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.log-pysrc.html#Logger.start_progress">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_start_progress_5-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_start_progress_5-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_start_progress_5" name="call_graph_for_start_progress_5">
+<area shape="rect" href="epydoc.log.Logger-class.html#start_progress" title="start_progress()" alt="" coords="192,6,331,38" />
+<area shape="rect" href="epydoc.log-module.html#start_progress" title="start_progress()" alt="" coords="5,6,144,38" />
+</map>
+  <img src="call_graph_for_start_progress_5.gif" alt='' usemap="#call_graph_for_start_progress_5" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.log.Logger-class.html#end_progress" class="summary-sig-name">end_progress</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Finish off the display of progress for the current task.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.log-pysrc.html#Logger.end_progress">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_end_progress_5-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_end_progress_5-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_end_progress_5" name="call_graph_for_end_progress_5">
+<area shape="rect" href="epydoc.log.Logger-class.html#end_progress" title="end_progress()" alt="" coords="187,6,320,38" />
+<area shape="rect" href="epydoc.log-module.html#end_progress" title="end_progress()" alt="" coords="5,6,139,38" />
+</map>
+  <img src="call_graph_for_end_progress_5.gif" alt='' usemap="#call_graph_for_end_progress_5" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.log.Logger-class.html#progress" class="summary-sig-name">progress</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">percent</span>,
+        <span class="summary-sig-arg">message</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>)</span><br />
+      Update the progress display.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.log-pysrc.html#Logger.progress">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_progress_6-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_progress_6-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_progress_6" name="call_graph_for_progress_6">
+<area shape="rect" href="epydoc.log.Logger-class.html#progress" title="progress()" alt="" coords="152,6,251,38" />
+<area shape="rect" href="epydoc.log-module.html#progress" title="progress()" alt="" coords="5,6,104,38" />
+</map>
+  <img src="call_graph_for_progress_6.gif" alt='' usemap="#call_graph_for_progress_6" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Method Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-MethodDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="log"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">log</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">level</span>,
+        <span class="sig-arg">message</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.log-pysrc.html#Logger.log">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Display a message.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>message</code></strong> - The message string to display.  <code>message</code> may contain 
+          newlines, but does not need to end in a newline.</li>
+        <li><strong class="pname"><code>level</code></strong> - An integer value indicating the severity of the message.</li>
+    </ul></dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="start_block"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">start_block</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">header</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.log-pysrc.html#Logger.start_block">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Start a new message block.  Any calls to <a 
+  href="epydoc.log-module.html#info" class="link">info()</a>, <a 
+  href="epydoc.log-module.html#warning" class="link">warning()</a>, or <a 
+  href="epydoc.log-module.html#error" class="link">error()</a> that occur 
+  between a call to <code>start_block</code> and a corresponding call to 
+  <code>end_block</code> will be grouped together, and displayed with a 
+  common header. <code>start_block</code> can be called multiple times (to 
+  form nested blocks), but every call to <code>start_block</code> 
+  <i>must</i> be balanced by a call to <code>end_block</code>.</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="end_block"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">end_block</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.log-pysrc.html#Logger.end_block">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>End a warning block.  See <a 
+  href="epydoc.cli.ConsoleLogger-class.html#start_block" 
+  class="link">start_block</a> for details.</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="start_progress"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">start_progress</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">header</span>=<span class="sig-default">None</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.log-pysrc.html#Logger.start_progress">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_start_progress_5-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_start_progress_5-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_start_progress_5" name="call_graph_for_start_progress_5">
+<area shape="rect" href="epydoc.log.Logger-class.html#start_progress" title="start_progress()" alt="" coords="192,6,331,38" />
+<area shape="rect" href="epydoc.log-module.html#start_progress" title="start_progress()" alt="" coords="5,6,144,38" />
+</map>
+  <img src="call_graph_for_start_progress_5.gif" alt='' usemap="#call_graph_for_start_progress_5" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Begin displaying progress for a new task.  <code>header</code> is a 
+  description of the task for which progress is being reported. Each call 
+  to <code>start_progress</code> must be followed by a call to 
+  <code>end_progress</code> (with no intervening calls to 
+  <code>start_progress</code>).</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="end_progress"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">end_progress</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.log-pysrc.html#Logger.end_progress">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_end_progress_5-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_end_progress_5-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_end_progress_5" name="call_graph_for_end_progress_5">
+<area shape="rect" href="epydoc.log.Logger-class.html#end_progress" title="end_progress()" alt="" coords="187,6,320,38" />
+<area shape="rect" href="epydoc.log-module.html#end_progress" title="end_progress()" alt="" coords="5,6,139,38" />
+</map>
+  <img src="call_graph_for_end_progress_5.gif" alt='' usemap="#call_graph_for_end_progress_5" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Finish off the display of progress for the current task.  See <a 
+  href="epydoc.cli.ConsoleLogger-class.html#start_progress" 
+  class="link">start_progress</a> for more information.</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="progress"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">progress</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">percent</span>,
+        <span class="sig-arg">message</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.log-pysrc.html#Logger.progress">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_progress_6-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_progress_6-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_progress_6" name="call_graph_for_progress_6">
+<area shape="rect" href="epydoc.log.Logger-class.html#progress" title="progress()" alt="" coords="152,6,251,38" />
+<area shape="rect" href="epydoc.log-module.html#progress" title="progress()" alt="" coords="5,6,104,38" />
+</map>
+  <img src="call_graph_for_progress_6.gif" alt='' usemap="#call_graph_for_progress_6" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Update the progress display.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>percent</code></strong> - A float from 0.0 to 1.0, indicating how much progress has been 
+          made.</li>
+        <li><strong class="pname"><code>message</code></strong> - A message indicating the most recent action that contributed 
+          towards that progress.</li>
+    </ul></dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:08:22 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.log.SimpleLogger-class.html b/doc/api/epydoc.log.SimpleLogger-class.html
new file mode 100644
index 0000000..ed52e03
--- /dev/null
+++ b/doc/api/epydoc.log.SimpleLogger-class.html
@@ -0,0 +1,249 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.log.SimpleLogger</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.log-module.html">Module log</a> ::
+        Class SimpleLogger
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.log.SimpleLogger-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class SimpleLogger</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.log-pysrc.html#SimpleLogger">source code</a></span></p>
+<center>
+<center>  <map id="uml_class_diagram_for_epydoc_l_2" name="uml_class_diagram_for_epydoc_l_2">
+<area shape="rect" href="epydoc.log.Logger-class.html#close" title="Perform any tasks needed to close this logger." alt="" coords="18,36,234,55" />
+<area shape="rect" href="epydoc.log.Logger-class.html#start_block" title="Start a new message block." alt="" coords="18,55,234,73" />
+<area shape="rect" href="epydoc.log.Logger-class.html#end_block" title="End a warning block." alt="" coords="18,73,234,92" />
+<area shape="rect" href="epydoc.log.Logger-class.html#start_progress" title="Begin displaying progress for a new task." alt="" coords="18,92,234,111" />
+<area shape="rect" href="epydoc.log.Logger-class.html#end_progress" title="Finish off the display of progress for the current task." alt="" coords="18,111,234,129" />
+<area shape="rect" href="epydoc.log.Logger-class.html#progress" title="Update the progress display." alt="" coords="18,129,234,148" />
+<area shape="rect" href="epydoc.log.Logger-class.html" title="An abstract base class that defines the interface for loggers, which are used by epydoc to report information back to the user." alt="" coords="6,5,246,155" />
+<area shape="rect" href="epydoc.log.SimpleLogger-class.html#__init__" title="epydoc.log.SimpleLogger.__init__" alt="" coords="42,204,210,223" />
+<area shape="rect" href="epydoc.log.SimpleLogger-class.html#log" title="Display a message." alt="" coords="42,223,210,241" />
+<area shape="rect" href="epydoc.log.SimpleLogger-class.html" title="epydoc.log.SimpleLogger" alt="" coords="30,173,222,248" />
+</map>
+  <img src="uml_class_diagram_for_epydoc_l_2.gif" alt='' usemap="#uml_class_diagram_for_epydoc_l_2" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__init__"></a><span class="summary-sig-name">__init__</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">threshold</span>=<span class="summary-sig-default">30</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.log-pysrc.html#SimpleLogger.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.log.SimpleLogger-class.html#log" class="summary-sig-name">log</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">level</span>,
+        <span class="summary-sig-arg">message</span>)</span><br />
+      Display a message.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.log-pysrc.html#SimpleLogger.log">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.log.Logger-class.html">Logger</a></code></b>:
+      <code><a href="epydoc.log.Logger-class.html#close">close</a></code>,
+      <code><a href="epydoc.log.Logger-class.html#end_block">end_block</a></code>,
+      <code><a href="epydoc.log.Logger-class.html#end_progress">end_progress</a></code>,
+      <code><a href="epydoc.log.Logger-class.html#progress">progress</a></code>,
+      <code><a href="epydoc.log.Logger-class.html#start_block">start_block</a></code>,
+      <code><a href="epydoc.log.Logger-class.html#start_progress">start_progress</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Method Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-MethodDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="log"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">log</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">level</span>,
+        <span class="sig-arg">message</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.log-pysrc.html#SimpleLogger.log">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Display a message.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>message</code></strong> - The message string to display.  <code>message</code> may contain 
+          newlines, but does not need to end in a newline.</li>
+        <li><strong class="pname"><code>level</code></strong> - An integer value indicating the severity of the message.</li>
+    </ul></dd>
+    <dt>Overrides:
+        <a href="epydoc.log.Logger-class.html#log">Logger.log</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:08:22 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.markup-module.html b/doc/api/epydoc.markup-module.html
new file mode 100644
index 0000000..eb73005
--- /dev/null
+++ b/doc/api/epydoc.markup-module.html
@@ -0,0 +1,674 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.markup</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        Package markup
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.markup-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PACKAGE DESCRIPTION ==================== -->
+<h1 class="epydoc">Package markup</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.markup-pysrc.html">source code</a></span></p>
+<p>Markup language support for docstrings.  Each submodule defines a 
+  parser for a single markup language.  These parsers convert an object's 
+  docstring to a <a href="epydoc.markup.ParsedDocstring-class.html" 
+  class="link">ParsedDocstring</a>, a standard intermediate representation 
+  that can be used to generate output. <code>ParsedDocstring</code>s 
+  support the following operations:</p>
+  <ul>
+    <li>
+      output generation (<a 
+      href="epydoc.markup.ParsedDocstring-class.html#to_plaintext" 
+      class="link">to_plaintext()</a>, <a 
+      href="epydoc.markup.ParsedDocstring-class.html#to_html" 
+      class="link">to_html()</a>, and <a 
+      href="epydoc.markup.ParsedDocstring-class.html#to_latex" 
+      class="link">to_latex()</a>).
+    </li>
+    <li>
+      Summarization (<a 
+      href="epydoc.markup.ParsedDocstring-class.html#summary" 
+      class="link">summary()</a>).
+    </li>
+    <li>
+      Field extraction (<a 
+      href="epydoc.markup.ParsedDocstring-class.html#split_fields" 
+      class="link">split_fields()</a>).
+    </li>
+    <li>
+      Index term extraction (<a 
+      href="epydoc.markup.ParsedDocstring-class.html#index_terms" 
+      class="link">index_terms()</a>.
+    </li>
+  </ul>
+  <p>The <a href="epydoc.markup-module.html#parse" class="link">parse()</a>
+  function provides a single interface to the <code>epydoc.markup</code> 
+  package: it takes a docstring and the name of a markup language; 
+  delegates to the appropriate parser; and returns the parsed docstring 
+  (along with any errors or warnings that were generated).</p>
+  <p>The <code>ParsedDocstring</code> output generation methods 
+  (<code>to_<i class="math">format</i>()</code>) use a <a 
+  href="epydoc.markup.DocstringLinker-class.html" 
+  class="link">DocstringLinker</a> to link the docstring output with the 
+  rest of the documentation that epydoc generates.  
+  <code>DocstringLinker</code>s are currently responsible for translating 
+  two kinds of crossreference:</p>
+  <ul>
+    <li>
+      index terms (<a 
+      href="epydoc.markup.DocstringLinker-class.html#translate_indexterm" 
+      class="link">translate_indexterm()</a>).
+    </li>
+    <li>
+      identifier crossreferences (<a 
+      href="epydoc.markup.DocstringLinker-class.html#translate_identifier_xref"
+      class="link">translate_identifier_xref()</a>).
+    </li>
+  </ul>
+  <p>A parsed docstring's fields can be extracted using the <a 
+  href="epydoc.markup.ParsedDocstring-class.html#split_fields" 
+  class="link">ParsedDocstring.split_fields()</a> method.  This method 
+  divides a docstring into its main body and a list of <a 
+  href="epydoc.markup.Field-class.html" class="link">Field</a>s, each of 
+  which encodes a single field.  The field's bodies are encoded as 
+  <code>ParsedDocstring</code>s.</p>
+  <p>Markup errors are represented using <a 
+  href="epydoc.markup.ParseError-class.html" class="link">ParseError</a>s.
+  These exception classes record information about the cause, location, and
+  severity of each error.</p>
+
+<!-- ==================== SUBMODULES ==================== -->
+<a name="section-Submodules"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Submodules</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Submodules"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+  <tr><td class="summary">
+  <ul class="nomargin">
+    <li> <strong class="uidlink"><a href="epydoc.markup.doctest-module.html">epydoc.markup.doctest</a></strong>: <em class="summary">Syntax highlighting for doctest blocks.</em>    </li>
+    <li> <strong class="uidlink"><a href="epydoc.markup.epytext-module.html">epydoc.markup.epytext</a></strong>: <em class="summary">Parser for epytext strings.</em>    </li>
+    <li> <strong class="uidlink"><a href="epydoc.markup.javadoc-module.html">epydoc.markup.javadoc</a></strong>: <em class="summary">Epydoc parser for <a href="http://java.sun.com/j2se/javadoc/" 
+        target="_top">Javadoc</a> docstrings.</em>    </li>
+    <li> <strong class="uidlink"><a href="epydoc.markup.plaintext-module.html">epydoc.markup.plaintext</a></strong>: <em class="summary">Parser for plaintext docstrings.</em>    </li>
+    <li> <strong class="uidlink"><a href="epydoc.markup.pyval_repr-module.html">epydoc.markup.pyval_repr</a></strong>: <em class="summary">Syntax highlighter for Python values.</em>    </li>
+    <li> <strong class="uidlink"><a href="epydoc.markup.restructuredtext-module.html">epydoc.markup.restructuredtext</a></strong>: <em class="summary">Epydoc parser for ReStructuredText strings.</em>    </li>
+  </ul></td></tr>
+</table>
+
+<br />
+<!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Classes</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Classes"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.markup.ParsedDocstring-class.html" class="summary-name">ParsedDocstring</a><br />
+      A standard intermediate representation for parsed docstrings that 
+        can be used to generate output.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.markup.Field-class.html" class="summary-name">Field</a><br />
+      The contents of a docstring's field.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.markup.DocstringLinker-class.html" class="summary-name">DocstringLinker</a><br />
+      A translator for crossreference links into and out of a 
+        <code>ParsedDocstring</code>.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.markup.ConcatenatedDocstring-class.html" class="summary-name">ConcatenatedDocstring</a>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Errors and Warnings</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.markup.ParseError-class.html" class="summary-name">ParseError</a><br />
+      The base class for errors generated while parsing docstrings.
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTIONS ==================== -->
+<a name="section-Functions"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Functions</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Functions"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><a href="epydoc.markup.ParsedDocstring-class.html" 
+      class="link">ParsedDocstring</a></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup-module.html#parse" class="summary-sig-name">parse</a>(<span class="summary-sig-arg">docstring</span>,
+        <span class="summary-sig-arg">markup</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string">plaintext</code><code class="variable-quote">'</code></span>,
+        <span class="summary-sig-arg">errors</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">**options</span>)</span><br />
+      Parse the given docstring, and use it to construct a 
+      <code>ParsedDocstring</code>.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup-pysrc.html#parse">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_parse-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_parse-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_parse" name="call_graph_for_parse">
+<area shape="rect" href="epydoc.docstringparser-module.html#parse_docstring" title="docstringparser.parse_docstring()" alt="" coords="40,34,312,66" />
+<area shape="rect" href="epydoc.markup-module.html#parse" title="parse()" alt="" coords="395,62,469,94" />
+<area shape="rect" href="epydoc.docstringparser-module.html#parse_function_signature" title="docstringparser.parse_function_signature()" alt="" coords="5,90,347,122" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#parse_docstring" title="epytext.parse_docstring()" alt="" coords="549,6,760,38" />
+<area shape="rect" href="epydoc.markup.plaintext-module.html#parse_docstring" title="plaintext.parse_docstring()" alt="" coords="544,62,765,94" />
+<area shape="rect" href="epydoc.markup.restructuredtext-module.html#parse_docstring" title="restructuredtext.parse_docstring()" alt="" coords="517,118,792,150" />
+</map>
+  <img src="call_graph_for_parse.gif" alt='' usemap="#call_graph_for_parse" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup-module.html#register_markup_language" class="summary-sig-name">register_markup_language</a>(<span class="summary-sig-arg">name</span>,
+        <span class="summary-sig-arg">parse_function</span>)</span><br />
+      Register a new markup language named <code>name</code>, which can be 
+      parsed by the function <code>parse_function</code>.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup-pysrc.html#register_markup_language">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup-module.html#_parse_warn" class="summary-sig-name" onclick="show_private();">_parse_warn</a>(<span class="summary-sig-arg">estr</span>)</span><br />
+      Print a warning message.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup-pysrc.html#_parse_warn">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Utility Functions</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><a href="epydoc.markup.ParsedDocstring-class.html" 
+      class="link">ParsedDocstring</a></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup-module.html#parse_type_of" class="summary-sig-name">parse_type_of</a>(<span class="summary-sig-arg">obj</span>)</span><br />
+      Returns:
+      A <code>ParsedDocstring</code> that encodes the type of the given 
+      object.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup-pysrc.html#parse_type_of">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Variables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.markup-module.html#_markup_language_registry" class="summary-name" onclick="show_private();">_markup_language_registry</a> = <code title="{'restructuredtext': 'epydoc.markup.restructuredtext', 'epytext': 'epy\
+doc.markup.epytext', 'plaintext': 'epydoc.markup.plaintext', 'javadoc'\
+: 'epydoc.markup.javadoc',}">{'restructuredtext': 'epydoc.marku<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.markup-module.html#MARKUP_LANGUAGES_USED" class="summary-name">MARKUP_LANGUAGES_USED</a> = <code title="set(['epytext', 'plaintext', u'restructuredtext'])"><code class="variable-group">set([</code><code class="variable-quote">'</code><code class="variable-string">epytext</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">plaintext</code><code class="variable-quote">'</cod [...]
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="_parse_warnings"></a><span class="summary-name">_parse_warnings</span> = <code title="{}"><code class="variable-group">{</code><code class="variable-group">}</code></code><br />
+      Used by <a href="epydoc.markup-module.html#_parse_warn" class="link" 
+      onclick="show_private();">_parse_warn</a>.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>int</code></span>
+    </td><td class="summary">
+        <a name="SCRWIDTH"></a><span class="summary-name">SCRWIDTH</span><br />
+      The default width with which text will be wrapped when formatting the
+      output of the parser.
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTION DETAILS ==================== -->
+<a name="section-FunctionDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Function Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-FunctionDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="parse"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">parse</span>(<span class="sig-arg">docstring</span>,
+        <span class="sig-arg">markup</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string">plaintext</code><code class="variable-quote">'</code></span>,
+        <span class="sig-arg">errors</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">**options</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup-pysrc.html#parse">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_parse-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_parse-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_parse" name="call_graph_for_parse">
+<area shape="rect" href="epydoc.docstringparser-module.html#parse_docstring" title="docstringparser.parse_docstring()" alt="" coords="40,34,312,66" />
+<area shape="rect" href="epydoc.markup-module.html#parse" title="parse()" alt="" coords="395,62,469,94" />
+<area shape="rect" href="epydoc.docstringparser-module.html#parse_function_signature" title="docstringparser.parse_function_signature()" alt="" coords="5,90,347,122" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#parse_docstring" title="epytext.parse_docstring()" alt="" coords="549,6,760,38" />
+<area shape="rect" href="epydoc.markup.plaintext-module.html#parse_docstring" title="plaintext.parse_docstring()" alt="" coords="544,62,765,94" />
+<area shape="rect" href="epydoc.markup.restructuredtext-module.html#parse_docstring" title="restructuredtext.parse_docstring()" alt="" coords="517,118,792,150" />
+</map>
+  <img src="call_graph_for_parse.gif" alt='' usemap="#call_graph_for_parse" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Parse the given docstring, and use it to construct a 
+  <code>ParsedDocstring</code>.  If any fatal <code>ParseError</code>s are 
+  encountered while parsing the docstring, then the docstring will be 
+  rendered as plaintext, instead.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>docstring</code></strong> (<code>string</code>) - The docstring to encode.</li>
+        <li><strong class="pname"><code>markup</code></strong> (<code>string</code>) - The name of the markup language that is used by the docstring.  
+          If the markup language is not supported, then the docstring will 
+          be treated as plaintext.  The markup name is case-insensitive.</li>
+        <li><strong class="pname"><code>errors</code></strong> (<code>list</code> of <a 
+          href="epydoc.markup.ParseError-class.html" 
+          class="link">ParseError</a>) - A list where any errors generated during parsing will be stored.
+          If no list is specified, then fatal errors will generate 
+          exceptions, and non-fatal errors will be ignored.</li>
+    </ul></dd>
+    <dt>Returns: <a href="epydoc.markup.ParsedDocstring-class.html" 
+      class="link">ParsedDocstring</a></dt>
+        <dd>A <a href="epydoc.markup.ParsedDocstring-class.html" 
+          class="link">ParsedDocstring</a> that encodes the contents of 
+          <code>docstring</code>.</dd>
+    <dt>Raises:</dt>
+    <dd><ul class="nomargin-top">
+        <li><code><strong class='fraise'><a href="epydoc.markup.ParseError-class.html">ParseError</a></strong></code> - If <code>errors</code> is <code>None</code> and an error is 
+        encountered while parsing.</li>
+    </ul></dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="register_markup_language"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">register_markup_language</span>(<span class="sig-arg">name</span>,
+        <span class="sig-arg">parse_function</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup-pysrc.html#register_markup_language">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Register a new markup language named <code>name</code>, which can be 
+  parsed by the function <code>parse_function</code>.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>name</code></strong> - The name of the markup language.  <code>name</code> should be a 
+          simple identifier, such as <code>'epytext'</code> or 
+          <code>'restructuredtext'</code>. Markup language names are case 
+          insensitive.</li>
+        <li><strong class="pname"><code>parse_function</code></strong> - A function which can be used to parse the markup language, and 
+          returns a <a href="epydoc.markup.ParsedDocstring-class.html" 
+          class="link">ParsedDocstring</a>.  It should have the following 
+          signature:
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">def</span> <span class="py-defname">parse</span>(s, errors):
+<span class="py-more">... </span>    <span class="py-string">'returns a ParsedDocstring'</span></pre>
+          <p>Where:</p>
+          <ul>
+            <li>
+              <code>s</code> is the string to parse.  (<code>s</code> will 
+              be a unicode string.)
+            </li>
+            <li>
+              <code>errors</code> is a list; any errors that are generated 
+              during docstring parsing should be appended to this list (as 
+              <a href="epydoc.markup.ParseError-class.html" 
+              class="link">ParseError</a> objects).
+            </li>
+          </ul></li>
+    </ul></dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="_parse_warn"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">_parse_warn</span>(<span class="sig-arg">estr</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup-pysrc.html#_parse_warn">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Print a warning message.  If the given error has already been printed,
+  then do nothing.</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="parse_type_of"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">parse_type_of</span>(<span class="sig-arg">obj</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup-pysrc.html#parse_type_of">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>obj</code></strong> (any) - The object whose type should be returned as DOM document.</li>
+    </ul></dd>
+    <dt>Returns: <a href="epydoc.markup.ParsedDocstring-class.html" 
+      class="link">ParsedDocstring</a></dt>
+        <dd>A <code>ParsedDocstring</code> that encodes the type of the given
+          object.</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== VARIABLES DETAILS ==================== -->
+<a name="section-VariablesDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Variables Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-VariablesDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="_markup_language_registry"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">_markup_language_registry</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+{'restructuredtext': 'epydoc.markup.restructuredtext', 'epytext': 'epy<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+doc.markup.epytext', 'plaintext': 'epydoc.markup.plaintext', 'javadoc'<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+: 'epydoc.markup.javadoc',}
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="MARKUP_LANGUAGES_USED"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">MARKUP_LANGUAGES_USED</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-group">set([</code><code class="variable-quote">'</code><code class="variable-string">epytext</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">plaintext</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">u'</code><code class="variable-string">restructuredtext</code><code class="variable-quote">'</code><code class="va [...]
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:06:41 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.markup-pysrc.html b/doc/api/epydoc.markup-pysrc.html
new file mode 100644
index 0000000..fc81b6c
--- /dev/null
+++ b/doc/api/epydoc.markup-pysrc.html
@@ -0,0 +1,945 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.markup</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        Package markup
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.markup-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="epydoc.markup-module.html">Package epydoc.markup</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno">  1</tt>  <tt class="py-line"><tt class="py-comment">#</tt> </tt>
+<a name="L2"></a><tt class="py-lineno">  2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># epydoc package file</tt> </tt>
+<a name="L3"></a><tt class="py-lineno">  3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L4"></a><tt class="py-lineno">  4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># A python documentation Module</tt> </tt>
+<a name="L5"></a><tt class="py-lineno">  5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Edward Loper</tt> </tt>
+<a name="L6"></a><tt class="py-lineno">  6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L7"></a><tt class="py-lineno">  7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># $Id: __init__.py 1577 2007-03-09 23:26:21Z dvarrazzo $</tt> </tt>
+<a name="L8"></a><tt class="py-lineno">  8</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L9"></a><tt class="py-lineno">  9</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L10"></a><tt class="py-lineno"> 10</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L11"></a><tt class="py-lineno"> 11</tt>  <tt class="py-line"><tt class="py-docstring">Markup language support for docstrings.  Each submodule defines a</tt> </tt>
+<a name="L12"></a><tt class="py-lineno"> 12</tt>  <tt class="py-line"><tt class="py-docstring">parser for a single markup language.  These parsers convert an</tt> </tt>
+<a name="L13"></a><tt class="py-lineno"> 13</tt>  <tt class="py-line"><tt class="py-docstring">object's docstring to a L{ParsedDocstring}, a standard intermediate</tt> </tt>
+<a name="L14"></a><tt class="py-lineno"> 14</tt>  <tt class="py-line"><tt class="py-docstring">representation that can be used to generate output.</tt> </tt>
+<a name="L15"></a><tt class="py-lineno"> 15</tt>  <tt class="py-line"><tt class="py-docstring">C{ParsedDocstring}s support the following operations:</tt> </tt>
+<a name="L16"></a><tt class="py-lineno"> 16</tt>  <tt class="py-line"><tt class="py-docstring">  - output generation (L{to_plaintext()<ParsedDocstring.to_plaintext>},</tt> </tt>
+<a name="L17"></a><tt class="py-lineno"> 17</tt>  <tt class="py-line"><tt class="py-docstring">    L{to_html()<ParsedDocstring.to_html>}, and</tt> </tt>
+<a name="L18"></a><tt class="py-lineno"> 18</tt>  <tt class="py-line"><tt class="py-docstring">    L{to_latex()<ParsedDocstring.to_latex>}).</tt> </tt>
+<a name="L19"></a><tt class="py-lineno"> 19</tt>  <tt class="py-line"><tt class="py-docstring">  - Summarization (L{summary()<ParsedDocstring.summary>}).</tt> </tt>
+<a name="L20"></a><tt class="py-lineno"> 20</tt>  <tt class="py-line"><tt class="py-docstring">  - Field extraction (L{split_fields()<ParsedDocstring.split_fields>}).</tt> </tt>
+<a name="L21"></a><tt class="py-lineno"> 21</tt>  <tt class="py-line"><tt class="py-docstring">  - Index term extraction (L{index_terms()<ParsedDocstring.index_terms>}.</tt> </tt>
+<a name="L22"></a><tt class="py-lineno"> 22</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L23"></a><tt class="py-lineno"> 23</tt>  <tt class="py-line"><tt class="py-docstring">The L{parse()} function provides a single interface to the</tt> </tt>
+<a name="L24"></a><tt class="py-lineno"> 24</tt>  <tt class="py-line"><tt class="py-docstring">C{epydoc.markup} package: it takes a docstring and the name of a</tt> </tt>
+<a name="L25"></a><tt class="py-lineno"> 25</tt>  <tt class="py-line"><tt class="py-docstring">markup language; delegates to the appropriate parser; and returns the</tt> </tt>
+<a name="L26"></a><tt class="py-lineno"> 26</tt>  <tt class="py-line"><tt class="py-docstring">parsed docstring (along with any errors or warnings that were</tt> </tt>
+<a name="L27"></a><tt class="py-lineno"> 27</tt>  <tt class="py-line"><tt class="py-docstring">generated).</tt> </tt>
+<a name="L28"></a><tt class="py-lineno"> 28</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L29"></a><tt class="py-lineno"> 29</tt>  <tt class="py-line"><tt class="py-docstring">The C{ParsedDocstring} output generation methods (C{to_M{format}()})</tt> </tt>
+<a name="L30"></a><tt class="py-lineno"> 30</tt>  <tt class="py-line"><tt class="py-docstring">use a L{DocstringLinker} to link the docstring output with the rest of</tt> </tt>
+<a name="L31"></a><tt class="py-lineno"> 31</tt>  <tt class="py-line"><tt class="py-docstring">the documentation that epydoc generates.  C{DocstringLinker}s are</tt> </tt>
+<a name="L32"></a><tt class="py-lineno"> 32</tt>  <tt class="py-line"><tt class="py-docstring">currently responsible for translating two kinds of crossreference:</tt> </tt>
+<a name="L33"></a><tt class="py-lineno"> 33</tt>  <tt class="py-line"><tt class="py-docstring">  - index terms (L{translate_indexterm()</tt> </tt>
+<a name="L34"></a><tt class="py-lineno"> 34</tt>  <tt class="py-line"><tt class="py-docstring">    <DocstringLinker.translate_indexterm>}).</tt> </tt>
+<a name="L35"></a><tt class="py-lineno"> 35</tt>  <tt class="py-line"><tt class="py-docstring">  - identifier crossreferences (L{translate_identifier_xref()</tt> </tt>
+<a name="L36"></a><tt class="py-lineno"> 36</tt>  <tt class="py-line"><tt class="py-docstring">    <DocstringLinker.translate_identifier_xref>}).</tt> </tt>
+<a name="L37"></a><tt class="py-lineno"> 37</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L38"></a><tt class="py-lineno"> 38</tt>  <tt class="py-line"><tt class="py-docstring">A parsed docstring's fields can be extracted using the</tt> </tt>
+<a name="L39"></a><tt class="py-lineno"> 39</tt>  <tt class="py-line"><tt class="py-docstring">L{ParsedDocstring.split_fields()} method.  This method divides a</tt> </tt>
+<a name="L40"></a><tt class="py-lineno"> 40</tt>  <tt class="py-line"><tt class="py-docstring">docstring into its main body and a list of L{Field}s, each of which</tt> </tt>
+<a name="L41"></a><tt class="py-lineno"> 41</tt>  <tt class="py-line"><tt class="py-docstring">encodes a single field.  The field's bodies are encoded as</tt> </tt>
+<a name="L42"></a><tt class="py-lineno"> 42</tt>  <tt class="py-line"><tt class="py-docstring">C{ParsedDocstring}s.</tt> </tt>
+<a name="L43"></a><tt class="py-lineno"> 43</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L44"></a><tt class="py-lineno"> 44</tt>  <tt class="py-line"><tt class="py-docstring">Markup errors are represented using L{ParseError}s.  These exception</tt> </tt>
+<a name="L45"></a><tt class="py-lineno"> 45</tt>  <tt class="py-line"><tt class="py-docstring">classes record information about the cause, location, and severity of</tt> </tt>
+<a name="L46"></a><tt class="py-lineno"> 46</tt>  <tt class="py-line"><tt class="py-docstring">each error.</tt> </tt>
+<a name="L47"></a><tt class="py-lineno"> 47</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L48"></a><tt class="py-lineno"> 48</tt>  <tt class="py-line"><tt class="py-docstring">@sort: parse, ParsedDocstring, Field, DocstringLinker</tt> </tt>
+<a name="L49"></a><tt class="py-lineno"> 49</tt>  <tt class="py-line"><tt class="py-docstring">@group Errors and Warnings: ParseError</tt> </tt>
+<a name="L50"></a><tt class="py-lineno"> 50</tt>  <tt class="py-line"><tt class="py-docstring">@group Utility Functions: parse_type_of</tt> </tt>
+<a name="L51"></a><tt class="py-lineno"> 51</tt>  <tt class="py-line"><tt class="py-docstring">@var SCRWIDTH: The default width with which text will be wrapped</tt> </tt>
+<a name="L52"></a><tt class="py-lineno"> 52</tt>  <tt class="py-line"><tt class="py-docstring">      when formatting the output of the parser.</tt> </tt>
+<a name="L53"></a><tt class="py-lineno"> 53</tt>  <tt class="py-line"><tt class="py-docstring">@type SCRWIDTH: C{int}</tt> </tt>
+<a name="L54"></a><tt class="py-lineno"> 54</tt>  <tt class="py-line"><tt class="py-docstring">@var _parse_warnings: Used by L{_parse_warn}.</tt> </tt>
+<a name="L55"></a><tt class="py-lineno"> 55</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L56"></a><tt class="py-lineno"> 56</tt>  <tt class="py-line"><tt class="py-name">__docformat__</tt> <tt class="py-op">=</tt> <tt class="py-string">'epytext en'</tt> </tt>
+<a name="L57"></a><tt class="py-lineno"> 57</tt>  <tt class="py-line"> </tt>
+<a name="L58"></a><tt class="py-lineno"> 58</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">re</tt><tt class="py-op">,</tt> <tt class="py-name">types</tt><tt class="py-op">,</tt> <tt class="py-name">sys</tt> </tt>
+<a name="L59"></a><tt class="py-lineno"> 59</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-0" class="py-name" targets="Package epydoc=epydoc-module.html"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-0', 'epydoc', 'link-0');">epydoc</a></tt> <tt class="py-keyword">import</tt> <tt id="link-1" class="py-name" targets="Method epydoc.cli.ConsoleLogger.log()=epydoc.cli.ConsoleLogger-class.html#log,Method epydoc.cli.HTMLLogger.log()=epydoc.cl [...]
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-1', 'log', 'link-1');">log</a></tt> </tt>
+<a name="L60"></a><tt class="py-lineno"> 60</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-2" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-2', 'epydoc', 'link-0');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-3" class="py-name" targets="Module epydoc.test.util=epydoc.test.util-module.html,Module epydoc.util=epydoc.util-module.html"><a title="epydoc.test.util
+epydoc.util" class="py-name" href="#" onclick="return doclink('link-3', 'util', 'link-3');">util</a></tt> <tt class="py-keyword">import</tt> <tt id="link-4" class="py-name" targets="Function epydoc.util.plaintext_to_html()=epydoc.util-module.html#plaintext_to_html"><a title="epydoc.util.plaintext_to_html" class="py-name" href="#" onclick="return doclink('link-4', 'plaintext_to_html', 'link-4');">plaintext_to_html</a></tt><tt class="py-op">,</tt> <tt id="link-5" class="py-name" targets="F [...]
+<a name="L61"></a><tt class="py-lineno"> 61</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-6" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-6', 'epydoc', 'link-0');">epydoc</a></tt> </tt>
+<a name="L62"></a><tt class="py-lineno"> 62</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-7" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-7', 'epydoc', 'link-0');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-8" class="py-name" targets="Module epydoc.compat=epydoc.compat-module.html"><a title="epydoc.compat" class="py-name" href="#" onclick="return doclink('link-8', 'compat', 'link-8');">compat</a></tt> <tt clas [...]
+<a name="L63"></a><tt class="py-lineno"> 63</tt>  <tt class="py-line"> </tt>
+<a name="L64"></a><tt class="py-lineno"> 64</tt>  <tt class="py-line"><tt class="py-comment">##################################################</tt> </tt>
+<a name="L65"></a><tt class="py-lineno"> 65</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## Contents</tt> </tt>
+<a name="L66"></a><tt class="py-lineno"> 66</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">##################################################</tt> </tt>
+<a name="L67"></a><tt class="py-lineno"> 67</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L68"></a><tt class="py-lineno"> 68</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># 1. parse() dispatcher</tt> </tt>
+<a name="L69"></a><tt class="py-lineno"> 69</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># 2. ParsedDocstring abstract base class</tt> </tt>
+<a name="L70"></a><tt class="py-lineno"> 70</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># 3. Field class</tt> </tt>
+<a name="L71"></a><tt class="py-lineno"> 71</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># 4. Docstring Linker</tt> </tt>
+<a name="L72"></a><tt class="py-lineno"> 72</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># 5. ParseError exceptions</tt> </tt>
+<a name="L73"></a><tt class="py-lineno"> 73</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># 6. Misc helpers</tt> </tt>
+<a name="L74"></a><tt class="py-lineno"> 74</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L75"></a><tt class="py-lineno"> 75</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L76"></a><tt class="py-lineno"> 76</tt>  <tt class="py-line"><tt class="py-comment">##################################################</tt> </tt>
+<a name="L77"></a><tt class="py-lineno"> 77</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## Dispatcher</tt> </tt>
+<a name="L78"></a><tt class="py-lineno"> 78</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">##################################################</tt> </tt>
+<a name="L79"></a><tt class="py-lineno"> 79</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L80"></a><tt class="py-lineno"> 80</tt>  <tt class="py-line"><tt id="link-9" class="py-name" targets="Variable epydoc.markup._markup_language_registry=epydoc.markup-module.html#_markup_language_registry"><a title="epydoc.markup._markup_language_registry" class="py-name" href="#" onclick="return doclink('link-9', '_markup_language_registry', 'link-9');">_markup_language_registry</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
+<a name="L81"></a><tt class="py-lineno"> 81</tt>  <tt class="py-line">    <tt class="py-string">'restructuredtext'</tt><tt class="py-op">:</tt> <tt class="py-string">'epydoc.markup.restructuredtext'</tt><tt class="py-op">,</tt> </tt>
+<a name="L82"></a><tt class="py-lineno"> 82</tt>  <tt class="py-line">    <tt class="py-string">'epytext'</tt><tt class="py-op">:</tt> <tt class="py-string">'epydoc.markup.epytext'</tt><tt class="py-op">,</tt> </tt>
+<a name="L83"></a><tt class="py-lineno"> 83</tt>  <tt class="py-line">    <tt class="py-string">'plaintext'</tt><tt class="py-op">:</tt> <tt class="py-string">'epydoc.markup.plaintext'</tt><tt class="py-op">,</tt> </tt>
+<a name="L84"></a><tt class="py-lineno"> 84</tt>  <tt class="py-line">    <tt class="py-string">'javadoc'</tt><tt class="py-op">:</tt> <tt class="py-string">'epydoc.markup.javadoc'</tt><tt class="py-op">,</tt> </tt>
+<a name="L85"></a><tt class="py-lineno"> 85</tt>  <tt class="py-line">    <tt class="py-op">}</tt> </tt>
+<a name="L86"></a><tt class="py-lineno"> 86</tt>  <tt class="py-line"> </tt>
+<a name="register_markup_language"></a><div id="register_markup_language-def"><a name="L87"></a><tt class="py-lineno"> 87</tt> <a class="py-toggle" href="#" id="register_markup_language-toggle" onclick="return toggle('register_markup_language');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup-module.html#register_markup_language">register_markup_language</a><tt class="py-op">(</tt><tt class="py-param">name</tt><tt class="py-op">,</tt>  [...]
+</div><div id="register_markup_language-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="register_markup_language-expanded"><a name="L88"></a><tt class="py-lineno"> 88</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L89"></a><tt class="py-lineno"> 89</tt>  <tt class="py-line"><tt class="py-docstring">    Register a new markup language named C{name}, which can be parsed</tt> </tt>
+<a name="L90"></a><tt class="py-lineno"> 90</tt>  <tt class="py-line"><tt class="py-docstring">    by the function C{parse_function}.</tt> </tt>
+<a name="L91"></a><tt class="py-lineno"> 91</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L92"></a><tt class="py-lineno"> 92</tt>  <tt class="py-line"><tt class="py-docstring">    @param name: The name of the markup language.  C{name} should be a</tt> </tt>
+<a name="L93"></a><tt class="py-lineno"> 93</tt>  <tt class="py-line"><tt class="py-docstring">    simple identifier, such as C{'epytext'} or C{'restructuredtext'}.</tt> </tt>
+<a name="L94"></a><tt class="py-lineno"> 94</tt>  <tt class="py-line"><tt class="py-docstring">    Markup language names are case insensitive.</tt> </tt>
+<a name="L95"></a><tt class="py-lineno"> 95</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L96"></a><tt class="py-lineno"> 96</tt>  <tt class="py-line"><tt class="py-docstring">    @param parse_function: A function which can be used to parse the</tt> </tt>
+<a name="L97"></a><tt class="py-lineno"> 97</tt>  <tt class="py-line"><tt class="py-docstring">        markup language, and returns a L{ParsedDocstring}.  It should</tt> </tt>
+<a name="L98"></a><tt class="py-lineno"> 98</tt>  <tt class="py-line"><tt class="py-docstring">        have the following signature:</tt> </tt>
+<a name="L99"></a><tt class="py-lineno"> 99</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L100"></a><tt class="py-lineno">100</tt>  <tt class="py-line"><tt class="py-docstring">            >>> def parse(s, errors):</tt> </tt>
+<a name="L101"></a><tt class="py-lineno">101</tt>  <tt class="py-line"><tt class="py-docstring">            ...     'returns a ParsedDocstring'</tt> </tt>
+<a name="L102"></a><tt class="py-lineno">102</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L103"></a><tt class="py-lineno">103</tt>  <tt class="py-line"><tt class="py-docstring">        Where:</tt> </tt>
+<a name="L104"></a><tt class="py-lineno">104</tt>  <tt class="py-line"><tt class="py-docstring">            - C{s} is the string to parse.  (C{s} will be a unicode</tt> </tt>
+<a name="L105"></a><tt class="py-lineno">105</tt>  <tt class="py-line"><tt class="py-docstring">              string.)</tt> </tt>
+<a name="L106"></a><tt class="py-lineno">106</tt>  <tt class="py-line"><tt class="py-docstring">            - C{errors} is a list; any errors that are generated</tt> </tt>
+<a name="L107"></a><tt class="py-lineno">107</tt>  <tt class="py-line"><tt class="py-docstring">              during docstring parsing should be appended to this</tt> </tt>
+<a name="L108"></a><tt class="py-lineno">108</tt>  <tt class="py-line"><tt class="py-docstring">              list (as L{ParseError} objects).</tt> </tt>
+<a name="L109"></a><tt class="py-lineno">109</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L110"></a><tt class="py-lineno">110</tt>  <tt class="py-line">    <tt id="link-10" class="py-name"><a title="epydoc.markup._markup_language_registry" class="py-name" href="#" onclick="return doclink('link-10', '_markup_language_registry', 'link-9');">_markup_language_registry</a></tt><tt class="py-op">[</tt><tt id="link-11" class="py-name" targets="Variable epydoc.apidoc.VariableDoc.name=epydoc.apidoc.VariableDoc-class.html#name"><a title="epydoc.apidoc.VariableDoc.name" class=" [...]
+</div><a name="L111"></a><tt class="py-lineno">111</tt>  <tt class="py-line"> </tt>
+<a name="L112"></a><tt class="py-lineno">112</tt>  <tt class="py-line"><tt id="link-12" class="py-name" targets="Variable epydoc.markup.MARKUP_LANGUAGES_USED=epydoc.markup-module.html#MARKUP_LANGUAGES_USED"><a title="epydoc.markup.MARKUP_LANGUAGES_USED" class="py-name" href="#" onclick="return doclink('link-12', 'MARKUP_LANGUAGES_USED', 'link-12');">MARKUP_LANGUAGES_USED</a></tt> <tt class="py-op">=</tt> <tt class="py-name">set</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L113"></a><tt class="py-lineno">113</tt>  <tt class="py-line"> </tt>
+<a name="parse"></a><div id="parse-def"><a name="L114"></a><tt class="py-lineno">114</tt> <a class="py-toggle" href="#" id="parse-toggle" onclick="return toggle('parse');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup-module.html#parse">parse</a><tt class="py-op">(</tt><tt class="py-param">docstring</tt><tt class="py-op">,</tt> <tt class="py-param">markup</tt><tt class="py-op">=</tt><tt class="py-string">'plaintext'</tt><tt class="py- [...]
+</div><div id="parse-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="parse-expanded"><a name="L115"></a><tt class="py-lineno">115</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L116"></a><tt class="py-lineno">116</tt>  <tt class="py-line"><tt class="py-docstring">    Parse the given docstring, and use it to construct a</tt> </tt>
+<a name="L117"></a><tt class="py-lineno">117</tt>  <tt class="py-line"><tt class="py-docstring">    C{ParsedDocstring}.  If any fatal C{ParseError}s are encountered</tt> </tt>
+<a name="L118"></a><tt class="py-lineno">118</tt>  <tt class="py-line"><tt class="py-docstring">    while parsing the docstring, then the docstring will be rendered</tt> </tt>
+<a name="L119"></a><tt class="py-lineno">119</tt>  <tt class="py-line"><tt class="py-docstring">    as plaintext, instead.</tt> </tt>
+<a name="L120"></a><tt class="py-lineno">120</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L121"></a><tt class="py-lineno">121</tt>  <tt class="py-line"><tt class="py-docstring">    @type docstring: C{string}</tt> </tt>
+<a name="L122"></a><tt class="py-lineno">122</tt>  <tt class="py-line"><tt class="py-docstring">    @param docstring: The docstring to encode.</tt> </tt>
+<a name="L123"></a><tt class="py-lineno">123</tt>  <tt class="py-line"><tt class="py-docstring">    @type markup: C{string}</tt> </tt>
+<a name="L124"></a><tt class="py-lineno">124</tt>  <tt class="py-line"><tt class="py-docstring">    @param markup: The name of the markup language that is used by</tt> </tt>
+<a name="L125"></a><tt class="py-lineno">125</tt>  <tt class="py-line"><tt class="py-docstring">        the docstring.  If the markup language is not supported, then</tt> </tt>
+<a name="L126"></a><tt class="py-lineno">126</tt>  <tt class="py-line"><tt class="py-docstring">        the docstring will be treated as plaintext.  The markup name</tt> </tt>
+<a name="L127"></a><tt class="py-lineno">127</tt>  <tt class="py-line"><tt class="py-docstring">        is case-insensitive.</tt> </tt>
+<a name="L128"></a><tt class="py-lineno">128</tt>  <tt class="py-line"><tt class="py-docstring">    @param errors: A list where any errors generated during parsing</tt> </tt>
+<a name="L129"></a><tt class="py-lineno">129</tt>  <tt class="py-line"><tt class="py-docstring">        will be stored.  If no list is specified, then fatal errors</tt> </tt>
+<a name="L130"></a><tt class="py-lineno">130</tt>  <tt class="py-line"><tt class="py-docstring">        will generate exceptions, and non-fatal errors will be</tt> </tt>
+<a name="L131"></a><tt class="py-lineno">131</tt>  <tt class="py-line"><tt class="py-docstring">        ignored.</tt> </tt>
+<a name="L132"></a><tt class="py-lineno">132</tt>  <tt class="py-line"><tt class="py-docstring">    @type errors: C{list} of L{ParseError}</tt> </tt>
+<a name="L133"></a><tt class="py-lineno">133</tt>  <tt class="py-line"><tt class="py-docstring">    @rtype: L{ParsedDocstring}</tt> </tt>
+<a name="L134"></a><tt class="py-lineno">134</tt>  <tt class="py-line"><tt class="py-docstring">    @return: A L{ParsedDocstring} that encodes the contents of</tt> </tt>
+<a name="L135"></a><tt class="py-lineno">135</tt>  <tt class="py-line"><tt class="py-docstring">        C{docstring}.</tt> </tt>
+<a name="L136"></a><tt class="py-lineno">136</tt>  <tt class="py-line"><tt class="py-docstring">    @raise ParseError: If C{errors} is C{None} and an error is</tt> </tt>
+<a name="L137"></a><tt class="py-lineno">137</tt>  <tt class="py-line"><tt class="py-docstring">        encountered while parsing.</tt> </tt>
+<a name="L138"></a><tt class="py-lineno">138</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L139"></a><tt class="py-lineno">139</tt>  <tt class="py-line">    <tt class="py-comment"># Initialize errors list.</tt> </tt>
+<a name="L140"></a><tt class="py-lineno">140</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">raise_on_error</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">errors</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+<a name="L141"></a><tt class="py-lineno">141</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">errors</tt> <tt class="py-op">==</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> <tt class="py-name">errors</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L142"></a><tt class="py-lineno">142</tt>  <tt class="py-line"> </tt>
+<a name="L143"></a><tt class="py-lineno">143</tt>  <tt class="py-line">    <tt class="py-comment"># Normalize the markup language name.</tt> </tt>
+<a name="L144"></a><tt class="py-lineno">144</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-13" class="py-name" targets="Package epydoc.markup=epydoc.markup-module.html,Method epydoc.markup.doctest.DoctestColorizer.markup()=epydoc.markup.doctest.DoctestColorizer-class.html#markup,Method epydoc.markup.doctest.HTMLDoctestColorizer.markup()=epydoc.markup.doctest.HTMLDoctestColorizer-class.html#markup,Method epydoc.markup.doctest.LaTeXDoctestColorizer.markup()=epydoc. [...]
+epydoc.markup.doctest.DoctestColorizer.markup
+epydoc.markup.doctest.HTMLDoctestColorizer.markup
+epydoc.markup.doctest.LaTeXDoctestColorizer.markup
+epydoc.markup.doctest.XMLDoctestColorizer.markup" class="py-name" href="#" onclick="return doclink('link-13', 'markup', 'link-13');">markup</a></tt> <tt class="py-op">=</tt> <tt id="link-14" class="py-name"><a title="epydoc.markup
+epydoc.markup.doctest.DoctestColorizer.markup
+epydoc.markup.doctest.HTMLDoctestColorizer.markup
+epydoc.markup.doctest.LaTeXDoctestColorizer.markup
+epydoc.markup.doctest.XMLDoctestColorizer.markup" class="py-name" href="#" onclick="return doclink('link-14', 'markup', 'link-13');">markup</a></tt><tt class="py-op">.</tt><tt class="py-name">lower</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L145"></a><tt class="py-lineno">145</tt>  <tt class="py-line"> </tt>
+<a name="L146"></a><tt class="py-lineno">146</tt>  <tt class="py-line">    <tt class="py-comment"># Is the markup language valid?</tt> </tt>
+<a name="L147"></a><tt class="py-lineno">147</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">match</tt><tt class="py-op">(</tt><tt class="py-string">r'\w+'</tt><tt class="py-op">,</tt> <tt id="link-15" class="py-name"><a title="epydoc.markup
+epydoc.markup.doctest.DoctestColorizer.markup
+epydoc.markup.doctest.HTMLDoctestColorizer.markup
+epydoc.markup.doctest.LaTeXDoctestColorizer.markup
+epydoc.markup.doctest.XMLDoctestColorizer.markup" class="py-name" href="#" onclick="return doclink('link-15', 'markup', 'link-13');">markup</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L148"></a><tt class="py-lineno">148</tt>  <tt class="py-line">        <tt id="link-16" class="py-name" targets="Function epydoc.markup._parse_warn()=epydoc.markup-module.html#_parse_warn"><a title="epydoc.markup._parse_warn" class="py-name" href="#" onclick="return doclink('link-16', '_parse_warn', 'link-16');">_parse_warn</a></tt><tt class="py-op">(</tt><tt class="py-string">'Bad markup language name %r.  Treating '</tt> </tt>
+<a name="L149"></a><tt class="py-lineno">149</tt>  <tt class="py-line">                    <tt class="py-string">'docstrings as plaintext.'</tt> <tt class="py-op">%</tt> <tt id="link-17" class="py-name"><a title="epydoc.markup
+epydoc.markup.doctest.DoctestColorizer.markup
+epydoc.markup.doctest.HTMLDoctestColorizer.markup
+epydoc.markup.doctest.LaTeXDoctestColorizer.markup
+epydoc.markup.doctest.XMLDoctestColorizer.markup" class="py-name" href="#" onclick="return doclink('link-17', 'markup', 'link-13');">markup</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L150"></a><tt class="py-lineno">150</tt>  <tt class="py-line">        <tt class="py-keyword">import</tt> <tt id="link-18" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-18', 'epydoc', 'link-0');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-19" class="py-name"><a title="epydoc.markup
+epydoc.markup.doctest.DoctestColorizer.markup
+epydoc.markup.doctest.HTMLDoctestColorizer.markup
+epydoc.markup.doctest.LaTeXDoctestColorizer.markup
+epydoc.markup.doctest.XMLDoctestColorizer.markup" class="py-name" href="#" onclick="return doclink('link-19', 'markup', 'link-13');">markup</a></tt><tt class="py-op">.</tt><tt id="link-20" class="py-name" targets="Module epydoc.docwriter.plaintext=epydoc.docwriter.plaintext-module.html,Module epydoc.markup.plaintext=epydoc.markup.plaintext-module.html"><a title="epydoc.docwriter.plaintext
+epydoc.markup.plaintext" class="py-name" href="#" onclick="return doclink('link-20', 'plaintext', 'link-20');">plaintext</a></tt> <tt class="py-name">as</tt> <tt id="link-21" class="py-name"><a title="epydoc.docwriter.plaintext
+epydoc.markup.plaintext" class="py-name" href="#" onclick="return doclink('link-21', 'plaintext', 'link-20');">plaintext</a></tt> </tt>
+<a name="L151"></a><tt class="py-lineno">151</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-22" class="py-name"><a title="epydoc.docwriter.plaintext
+epydoc.markup.plaintext" class="py-name" href="#" onclick="return doclink('link-22', 'plaintext', 'link-20');">plaintext</a></tt><tt class="py-op">.</tt><tt id="link-23" class="py-name" targets="Function epydoc.docstringparser.parse_docstring()=epydoc.docstringparser-module.html#parse_docstring,Function epydoc.markup.epytext.parse_docstring()=epydoc.markup.epytext-module.html#parse_docstring,Function epydoc.markup.javadoc.parse_docstring()=epydoc.markup.javadoc-module.html#parse_docstrin [...]
+epydoc.markup.epytext.parse_docstring
+epydoc.markup.javadoc.parse_docstring
+epydoc.markup.plaintext.parse_docstring
+epydoc.markup.restructuredtext.parse_docstring" class="py-name" href="#" onclick="return doclink('link-23', 'parse_docstring', 'link-23');">parse_docstring</a></tt><tt class="py-op">(</tt><tt id="link-24" class="py-name" targets="Variable epydoc.apidoc.APIDoc.docstring=epydoc.apidoc.APIDoc-class.html#docstring"><a title="epydoc.apidoc.APIDoc.docstring" class="py-name" href="#" onclick="return doclink('link-24', 'docstring', 'link-24');">docstring</a></tt><tt class="py-op">,</tt> <tt clas [...]
+<a name="L152"></a><tt class="py-lineno">152</tt>  <tt class="py-line"> </tt>
+<a name="L153"></a><tt class="py-lineno">153</tt>  <tt class="py-line">    <tt class="py-comment"># Is the markup language supported?</tt> </tt>
+<a name="L154"></a><tt class="py-lineno">154</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt id="link-25" class="py-name"><a title="epydoc.markup
+epydoc.markup.doctest.DoctestColorizer.markup
+epydoc.markup.doctest.HTMLDoctestColorizer.markup
+epydoc.markup.doctest.LaTeXDoctestColorizer.markup
+epydoc.markup.doctest.XMLDoctestColorizer.markup" class="py-name" href="#" onclick="return doclink('link-25', 'markup', 'link-13');">markup</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt id="link-26" class="py-name"><a title="epydoc.markup._markup_language_registry" class="py-name" href="#" onclick="return doclink('link-26', '_markup_language_registry', 'link-9');">_markup_language_registry</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L155"></a><tt class="py-lineno">155</tt>  <tt class="py-line">        <tt id="link-27" class="py-name"><a title="epydoc.markup._parse_warn" class="py-name" href="#" onclick="return doclink('link-27', '_parse_warn', 'link-16');">_parse_warn</a></tt><tt class="py-op">(</tt><tt class="py-string">'Unsupported markup language %r.  Treating '</tt> </tt>
+<a name="L156"></a><tt class="py-lineno">156</tt>  <tt class="py-line">                    <tt class="py-string">'docstrings as plaintext.'</tt> <tt class="py-op">%</tt> <tt id="link-28" class="py-name"><a title="epydoc.markup
+epydoc.markup.doctest.DoctestColorizer.markup
+epydoc.markup.doctest.HTMLDoctestColorizer.markup
+epydoc.markup.doctest.LaTeXDoctestColorizer.markup
+epydoc.markup.doctest.XMLDoctestColorizer.markup" class="py-name" href="#" onclick="return doclink('link-28', 'markup', 'link-13');">markup</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L157"></a><tt class="py-lineno">157</tt>  <tt class="py-line">        <tt class="py-keyword">import</tt> <tt id="link-29" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-29', 'epydoc', 'link-0');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-30" class="py-name"><a title="epydoc.markup
+epydoc.markup.doctest.DoctestColorizer.markup
+epydoc.markup.doctest.HTMLDoctestColorizer.markup
+epydoc.markup.doctest.LaTeXDoctestColorizer.markup
+epydoc.markup.doctest.XMLDoctestColorizer.markup" class="py-name" href="#" onclick="return doclink('link-30', 'markup', 'link-13');">markup</a></tt><tt class="py-op">.</tt><tt id="link-31" class="py-name"><a title="epydoc.docwriter.plaintext
+epydoc.markup.plaintext" class="py-name" href="#" onclick="return doclink('link-31', 'plaintext', 'link-20');">plaintext</a></tt> <tt class="py-name">as</tt> <tt id="link-32" class="py-name"><a title="epydoc.docwriter.plaintext
+epydoc.markup.plaintext" class="py-name" href="#" onclick="return doclink('link-32', 'plaintext', 'link-20');">plaintext</a></tt> </tt>
+<a name="L158"></a><tt class="py-lineno">158</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-33" class="py-name"><a title="epydoc.docwriter.plaintext
+epydoc.markup.plaintext" class="py-name" href="#" onclick="return doclink('link-33', 'plaintext', 'link-20');">plaintext</a></tt><tt class="py-op">.</tt><tt id="link-34" class="py-name"><a title="epydoc.docstringparser.parse_docstring
+epydoc.markup.epytext.parse_docstring
+epydoc.markup.javadoc.parse_docstring
+epydoc.markup.plaintext.parse_docstring
+epydoc.markup.restructuredtext.parse_docstring" class="py-name" href="#" onclick="return doclink('link-34', 'parse_docstring', 'link-23');">parse_docstring</a></tt><tt class="py-op">(</tt><tt id="link-35" class="py-name"><a title="epydoc.apidoc.APIDoc.docstring" class="py-name" href="#" onclick="return doclink('link-35', 'docstring', 'link-24');">docstring</a></tt><tt class="py-op">,</tt> <tt class="py-name">errors</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-name" [...]
+<a name="L159"></a><tt class="py-lineno">159</tt>  <tt class="py-line"> </tt>
+<a name="L160"></a><tt class="py-lineno">160</tt>  <tt class="py-line">    <tt class="py-comment"># Get the parse function.</tt> </tt>
+<a name="L161"></a><tt class="py-lineno">161</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-36" class="py-name"><a title="epydoc.docstringparser.parse_docstring
+epydoc.markup.epytext.parse_docstring
+epydoc.markup.javadoc.parse_docstring
+epydoc.markup.plaintext.parse_docstring
+epydoc.markup.restructuredtext.parse_docstring" class="py-name" href="#" onclick="return doclink('link-36', 'parse_docstring', 'link-23');">parse_docstring</a></tt> <tt class="py-op">=</tt> <tt id="link-37" class="py-name"><a title="epydoc.markup._markup_language_registry" class="py-name" href="#" onclick="return doclink('link-37', '_markup_language_registry', 'link-9');">_markup_language_registry</a></tt><tt class="py-op">[</tt><tt id="link-38" class="py-name"><a title="epydoc.markup
+epydoc.markup.doctest.DoctestColorizer.markup
+epydoc.markup.doctest.HTMLDoctestColorizer.markup
+epydoc.markup.doctest.LaTeXDoctestColorizer.markup
+epydoc.markup.doctest.XMLDoctestColorizer.markup" class="py-name" href="#" onclick="return doclink('link-38', 'markup', 'link-13');">markup</a></tt><tt class="py-op">]</tt> </tt>
+<a name="L162"></a><tt class="py-lineno">162</tt>  <tt class="py-line"> </tt>
+<a name="L163"></a><tt class="py-lineno">163</tt>  <tt class="py-line">    <tt class="py-comment"># If it's a string, then it names a function to import.</tt> </tt>
+<a name="L164"></a><tt class="py-lineno">164</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-39" class="py-name"><a title="epydoc.docstringparser.parse_docstring
+epydoc.markup.epytext.parse_docstring
+epydoc.markup.javadoc.parse_docstring
+epydoc.markup.plaintext.parse_docstring
+epydoc.markup.restructuredtext.parse_docstring" class="py-name" href="#" onclick="return doclink('link-39', 'parse_docstring', 'link-23');">parse_docstring</a></tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L165"></a><tt class="py-lineno">165</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> <tt class="py-keyword">exec</tt><tt class="py-op">(</tt><tt class="py-string">'from %s import parse_docstring'</tt> <tt class="py-op">%</tt> <tt id="link-40" class="py-name"><a title="epydoc.docstringparser.parse_docstring
+epydoc.markup.epytext.parse_docstring
+epydoc.markup.javadoc.parse_docstring
+epydoc.markup.plaintext.parse_docstring
+epydoc.markup.restructuredtext.parse_docstring" class="py-name" href="#" onclick="return doclink('link-40', 'parse_docstring', 'link-23');">parse_docstring</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L166"></a><tt class="py-lineno">166</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">ImportError</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
+<a name="L167"></a><tt class="py-lineno">167</tt>  <tt class="py-line">            <tt id="link-41" class="py-name"><a title="epydoc.markup._parse_warn" class="py-name" href="#" onclick="return doclink('link-41', '_parse_warn', 'link-16');">_parse_warn</a></tt><tt class="py-op">(</tt><tt class="py-string">'Error importing %s for markup language %s: %s'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L168"></a><tt class="py-lineno">168</tt>  <tt class="py-line">                        <tt class="py-op">(</tt><tt id="link-42" class="py-name"><a title="epydoc.docstringparser.parse_docstring
+epydoc.markup.epytext.parse_docstring
+epydoc.markup.javadoc.parse_docstring
+epydoc.markup.plaintext.parse_docstring
+epydoc.markup.restructuredtext.parse_docstring" class="py-name" href="#" onclick="return doclink('link-42', 'parse_docstring', 'link-23');">parse_docstring</a></tt><tt class="py-op">,</tt> <tt id="link-43" class="py-name"><a title="epydoc.markup
+epydoc.markup.doctest.DoctestColorizer.markup
+epydoc.markup.doctest.HTMLDoctestColorizer.markup
+epydoc.markup.doctest.LaTeXDoctestColorizer.markup
+epydoc.markup.doctest.XMLDoctestColorizer.markup" class="py-name" href="#" onclick="return doclink('link-43', 'markup', 'link-13');">markup</a></tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L169"></a><tt class="py-lineno">169</tt>  <tt class="py-line">            <tt class="py-keyword">import</tt> <tt id="link-44" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-44', 'epydoc', 'link-0');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-45" class="py-name"><a title="epydoc.markup
+epydoc.markup.doctest.DoctestColorizer.markup
+epydoc.markup.doctest.HTMLDoctestColorizer.markup
+epydoc.markup.doctest.LaTeXDoctestColorizer.markup
+epydoc.markup.doctest.XMLDoctestColorizer.markup" class="py-name" href="#" onclick="return doclink('link-45', 'markup', 'link-13');">markup</a></tt><tt class="py-op">.</tt><tt id="link-46" class="py-name"><a title="epydoc.docwriter.plaintext
+epydoc.markup.plaintext" class="py-name" href="#" onclick="return doclink('link-46', 'plaintext', 'link-20');">plaintext</a></tt> <tt class="py-name">as</tt> <tt id="link-47" class="py-name"><a title="epydoc.docwriter.plaintext
+epydoc.markup.plaintext" class="py-name" href="#" onclick="return doclink('link-47', 'plaintext', 'link-20');">plaintext</a></tt> </tt>
+<a name="L170"></a><tt class="py-lineno">170</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt id="link-48" class="py-name"><a title="epydoc.docwriter.plaintext
+epydoc.markup.plaintext" class="py-name" href="#" onclick="return doclink('link-48', 'plaintext', 'link-20');">plaintext</a></tt><tt class="py-op">.</tt><tt id="link-49" class="py-name"><a title="epydoc.docstringparser.parse_docstring
+epydoc.markup.epytext.parse_docstring
+epydoc.markup.javadoc.parse_docstring
+epydoc.markup.plaintext.parse_docstring
+epydoc.markup.restructuredtext.parse_docstring" class="py-name" href="#" onclick="return doclink('link-49', 'parse_docstring', 'link-23');">parse_docstring</a></tt><tt class="py-op">(</tt><tt id="link-50" class="py-name"><a title="epydoc.apidoc.APIDoc.docstring" class="py-name" href="#" onclick="return doclink('link-50', 'docstring', 'link-24');">docstring</a></tt><tt class="py-op">,</tt> <tt class="py-name">errors</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-name" [...]
+<a name="L171"></a><tt class="py-lineno">171</tt>  <tt class="py-line">        <tt id="link-51" class="py-name"><a title="epydoc.markup._markup_language_registry" class="py-name" href="#" onclick="return doclink('link-51', '_markup_language_registry', 'link-9');">_markup_language_registry</a></tt><tt class="py-op">[</tt><tt id="link-52" class="py-name"><a title="epydoc.markup
+epydoc.markup.doctest.DoctestColorizer.markup
+epydoc.markup.doctest.HTMLDoctestColorizer.markup
+epydoc.markup.doctest.LaTeXDoctestColorizer.markup
+epydoc.markup.doctest.XMLDoctestColorizer.markup" class="py-name" href="#" onclick="return doclink('link-52', 'markup', 'link-13');">markup</a></tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-53" class="py-name"><a title="epydoc.docstringparser.parse_docstring
+epydoc.markup.epytext.parse_docstring
+epydoc.markup.javadoc.parse_docstring
+epydoc.markup.plaintext.parse_docstring
+epydoc.markup.restructuredtext.parse_docstring" class="py-name" href="#" onclick="return doclink('link-53', 'parse_docstring', 'link-23');">parse_docstring</a></tt> </tt>
+<a name="L172"></a><tt class="py-lineno">172</tt>  <tt class="py-line"> </tt>
+<a name="L173"></a><tt class="py-lineno">173</tt>  <tt class="py-line">    <tt class="py-comment"># Keep track of which markup languages have been used so far.</tt> </tt>
+<a name="L174"></a><tt class="py-lineno">174</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-54" class="py-name"><a title="epydoc.markup.MARKUP_LANGUAGES_USED" class="py-name" href="#" onclick="return doclink('link-54', 'MARKUP_LANGUAGES_USED', 'link-12');">MARKUP_LANGUAGES_USED</a></tt><tt class="py-op">.</tt><tt class="py-name">add</tt><tt class="py-op">(</tt><tt id="link-55" class="py-name"><a title="epydoc.markup
+epydoc.markup.doctest.DoctestColorizer.markup
+epydoc.markup.doctest.HTMLDoctestColorizer.markup
+epydoc.markup.doctest.LaTeXDoctestColorizer.markup
+epydoc.markup.doctest.XMLDoctestColorizer.markup" class="py-name" href="#" onclick="return doclink('link-55', 'markup', 'link-13');">markup</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L175"></a><tt class="py-lineno">175</tt>  <tt class="py-line"> </tt>
+<a name="L176"></a><tt class="py-lineno">176</tt>  <tt class="py-line">    <tt class="py-comment"># Parse the docstring.</tt> </tt>
+<a name="L177"></a><tt class="py-lineno">177</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">try</tt><tt class="py-op">:</tt> <tt class="py-name">parsed_docstring</tt> <tt class="py-op">=</tt> <tt id="link-56" class="py-name"><a title="epydoc.docstringparser.parse_docstring
+epydoc.markup.epytext.parse_docstring
+epydoc.markup.javadoc.parse_docstring
+epydoc.markup.plaintext.parse_docstring
+epydoc.markup.restructuredtext.parse_docstring" class="py-name" href="#" onclick="return doclink('link-56', 'parse_docstring', 'link-23');">parse_docstring</a></tt><tt class="py-op">(</tt><tt id="link-57" class="py-name"><a title="epydoc.apidoc.APIDoc.docstring" class="py-name" href="#" onclick="return doclink('link-57', 'docstring', 'link-24');">docstring</a></tt><tt class="py-op">,</tt> <tt class="py-name">errors</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-name" [...]
+<a name="L178"></a><tt class="py-lineno">178</tt>  <tt class="py-line">    <tt class="py-keyword">except</tt> <tt class="py-name">KeyboardInterrupt</tt><tt class="py-op">:</tt> <tt class="py-keyword">raise</tt> </tt>
+<a name="L179"></a><tt class="py-lineno">179</tt>  <tt class="py-line">    <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
+<a name="L180"></a><tt class="py-lineno">180</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-58" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-58', 'epydoc', 'link-0');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-59" class="py-name" targets="Variable epydoc.DEBUG=epydoc-module.html#DEBUG,Variable epydoc.gui.DEBUG=epydoc.gui-module.html#DEBUG,Variable epydoc.log.DEBUG=epydoc.log-module.html#DEBUG"><a title=" [...]
+epydoc.gui.DEBUG
+epydoc.log.DEBUG" class="py-name" href="#" onclick="return doclink('link-59', 'DEBUG', 'link-59');">DEBUG</a></tt><tt class="py-op">:</tt> <tt class="py-keyword">raise</tt> </tt>
+<a name="L181"></a><tt class="py-lineno">181</tt>  <tt class="py-line">        <tt id="link-60" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-60', 'log', 'link-1');">log</a></tt><tt class="py-op">.</tt><tt id="link-61" class="py-name" targets="Function epydoc.log.error()=epydoc.log-module.html#error"><a title="epydoc.log.error" class="py-name" href="#" onclick="return doclink('link-61', 'error', 'link-61');">error</a></tt><tt class="py-op">(</tt><tt class="py-string">'Internal error while parsing a docstring: %s; '</tt> </tt>
+<a name="L182"></a><tt class="py-lineno">182</tt>  <tt class="py-line">                  <tt class="py-string">'treating docstring as plaintext'</tt> <tt class="py-op">%</tt> <tt class="py-name">e</tt><tt class="py-op">)</tt> </tt>
+<a name="L183"></a><tt class="py-lineno">183</tt>  <tt class="py-line">        <tt class="py-keyword">import</tt> <tt id="link-62" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-62', 'epydoc', 'link-0');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-63" class="py-name"><a title="epydoc.markup
+epydoc.markup.doctest.DoctestColorizer.markup
+epydoc.markup.doctest.HTMLDoctestColorizer.markup
+epydoc.markup.doctest.LaTeXDoctestColorizer.markup
+epydoc.markup.doctest.XMLDoctestColorizer.markup" class="py-name" href="#" onclick="return doclink('link-63', 'markup', 'link-13');">markup</a></tt><tt class="py-op">.</tt><tt id="link-64" class="py-name"><a title="epydoc.docwriter.plaintext
+epydoc.markup.plaintext" class="py-name" href="#" onclick="return doclink('link-64', 'plaintext', 'link-20');">plaintext</a></tt> <tt class="py-name">as</tt> <tt id="link-65" class="py-name"><a title="epydoc.docwriter.plaintext
+epydoc.markup.plaintext" class="py-name" href="#" onclick="return doclink('link-65', 'plaintext', 'link-20');">plaintext</a></tt> </tt>
+<a name="L184"></a><tt class="py-lineno">184</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-66" class="py-name"><a title="epydoc.docwriter.plaintext
+epydoc.markup.plaintext" class="py-name" href="#" onclick="return doclink('link-66', 'plaintext', 'link-20');">plaintext</a></tt><tt class="py-op">.</tt><tt id="link-67" class="py-name"><a title="epydoc.docstringparser.parse_docstring
+epydoc.markup.epytext.parse_docstring
+epydoc.markup.javadoc.parse_docstring
+epydoc.markup.plaintext.parse_docstring
+epydoc.markup.restructuredtext.parse_docstring" class="py-name" href="#" onclick="return doclink('link-67', 'parse_docstring', 'link-23');">parse_docstring</a></tt><tt class="py-op">(</tt><tt id="link-68" class="py-name"><a title="epydoc.apidoc.APIDoc.docstring" class="py-name" href="#" onclick="return doclink('link-68', 'docstring', 'link-24');">docstring</a></tt><tt class="py-op">,</tt> <tt class="py-name">errors</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-name" [...]
+<a name="L185"></a><tt class="py-lineno">185</tt>  <tt class="py-line"> </tt>
+<a name="L186"></a><tt class="py-lineno">186</tt>  <tt class="py-line">    <tt class="py-comment"># Check for fatal errors.</tt> </tt>
+<a name="L187"></a><tt class="py-lineno">187</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">fatal_errors</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">e</tt> <tt class="py-keyword">for</tt> <tt class="py-name">e</tt> <tt class="py-keyword">in</tt> <tt class="py-name">errors</tt> <tt class="py-keyword">if</tt> <tt class="py-name">e</tt><tt class="py-op">.</tt><tt id="link-69" class="py-name" targets="Method epydoc.markup.ParseErro [...]
+<a name="L188"></a><tt class="py-lineno">188</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">fatal_errors</tt> <tt class="py-keyword">and</tt> <tt class="py-name">raise_on_error</tt><tt class="py-op">:</tt> <tt class="py-keyword">raise</tt> <tt class="py-name">fatal_errors</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L189"></a><tt class="py-lineno">189</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">fatal_errors</tt><tt class="py-op">:</tt> </tt>
+<a name="L190"></a><tt class="py-lineno">190</tt>  <tt class="py-line">        <tt class="py-keyword">import</tt> <tt id="link-70" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-70', 'epydoc', 'link-0');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-71" class="py-name"><a title="epydoc.markup
+epydoc.markup.doctest.DoctestColorizer.markup
+epydoc.markup.doctest.HTMLDoctestColorizer.markup
+epydoc.markup.doctest.LaTeXDoctestColorizer.markup
+epydoc.markup.doctest.XMLDoctestColorizer.markup" class="py-name" href="#" onclick="return doclink('link-71', 'markup', 'link-13');">markup</a></tt><tt class="py-op">.</tt><tt id="link-72" class="py-name"><a title="epydoc.docwriter.plaintext
+epydoc.markup.plaintext" class="py-name" href="#" onclick="return doclink('link-72', 'plaintext', 'link-20');">plaintext</a></tt> <tt class="py-name">as</tt> <tt id="link-73" class="py-name"><a title="epydoc.docwriter.plaintext
+epydoc.markup.plaintext" class="py-name" href="#" onclick="return doclink('link-73', 'plaintext', 'link-20');">plaintext</a></tt> </tt>
+<a name="L191"></a><tt class="py-lineno">191</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-74" class="py-name"><a title="epydoc.docwriter.plaintext
+epydoc.markup.plaintext" class="py-name" href="#" onclick="return doclink('link-74', 'plaintext', 'link-20');">plaintext</a></tt><tt class="py-op">.</tt><tt id="link-75" class="py-name"><a title="epydoc.docstringparser.parse_docstring
+epydoc.markup.epytext.parse_docstring
+epydoc.markup.javadoc.parse_docstring
+epydoc.markup.plaintext.parse_docstring
+epydoc.markup.restructuredtext.parse_docstring" class="py-name" href="#" onclick="return doclink('link-75', 'parse_docstring', 'link-23');">parse_docstring</a></tt><tt class="py-op">(</tt><tt id="link-76" class="py-name"><a title="epydoc.apidoc.APIDoc.docstring" class="py-name" href="#" onclick="return doclink('link-76', 'docstring', 'link-24');">docstring</a></tt><tt class="py-op">,</tt> <tt class="py-name">errors</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-name" [...]
+<a name="L192"></a><tt class="py-lineno">192</tt>  <tt class="py-line"> </tt>
+<a name="L193"></a><tt class="py-lineno">193</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">parsed_docstring</tt> </tt>
+</div><a name="L194"></a><tt class="py-lineno">194</tt>  <tt class="py-line"> </tt>
+<a name="L195"></a><tt class="py-lineno">195</tt>  <tt class="py-line"><tt class="py-comment"># only issue each warning once:</tt> </tt>
+<a name="L196"></a><tt class="py-lineno">196</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt id="link-77" class="py-name" targets="Variable epydoc.markup._parse_warnings=epydoc.markup-module.html#_parse_warnings"><a title="epydoc.markup._parse_warnings" class="py-name" href="#" onclick="return doclink('link-77', '_parse_warnings', 'link-77');">_parse_warnings</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="_parse_warn"></a><div id="_parse_warn-def"><a name="L197"></a><tt class="py-lineno">197</tt> <a class="py-toggle" href="#" id="_parse_warn-toggle" onclick="return toggle('_parse_warn');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup-module.html#_parse_warn">_parse_warn</a><tt class="py-op">(</tt><tt class="py-param">estr</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_parse_warn-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_parse_warn-expanded"><a name="L198"></a><tt class="py-lineno">198</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L199"></a><tt class="py-lineno">199</tt>  <tt class="py-line"><tt class="py-docstring">    Print a warning message.  If the given error has already been</tt> </tt>
+<a name="L200"></a><tt class="py-lineno">200</tt>  <tt class="py-line"><tt class="py-docstring">    printed, then do nothing.</tt> </tt>
+<a name="L201"></a><tt class="py-lineno">201</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L202"></a><tt class="py-lineno">202</tt>  <tt class="py-line">    <tt class="py-keyword">global</tt> <tt id="link-78" class="py-name"><a title="epydoc.markup._parse_warnings" class="py-name" href="#" onclick="return doclink('link-78', '_parse_warnings', 'link-77');">_parse_warnings</a></tt> </tt>
+<a name="L203"></a><tt class="py-lineno">203</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">estr</tt> <tt class="py-keyword">in</tt> <tt id="link-79" class="py-name"><a title="epydoc.markup._parse_warnings" class="py-name" href="#" onclick="return doclink('link-79', '_parse_warnings', 'link-77');">_parse_warnings</a></tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> </tt>
+<a name="L204"></a><tt class="py-lineno">204</tt>  <tt class="py-line">    <tt id="link-80" class="py-name"><a title="epydoc.markup._parse_warnings" class="py-name" href="#" onclick="return doclink('link-80', '_parse_warnings', 'link-77');">_parse_warnings</a></tt><tt class="py-op">[</tt><tt class="py-name">estr</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L205"></a><tt class="py-lineno">205</tt>  <tt class="py-line">    <tt id="link-81" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-81', 'log', 'link-1');">log</a></tt><tt class="py-op">.</tt><tt id="link-82" class="py-name" targets="Method epydoc.checker.DocChecker.warning()=epydoc.checker.DocChecker-class.html#warning,Function epydoc.log.warning()=epydoc.log-module.html#warning"><a title="epydoc.checker.DocChecker.warning
+epydoc.log.warning" class="py-name" href="#" onclick="return doclink('link-82', 'warning', 'link-82');">warning</a></tt><tt class="py-op">(</tt><tt class="py-name">estr</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L206"></a><tt class="py-lineno">206</tt>  <tt class="py-line"> </tt>
+<a name="L207"></a><tt class="py-lineno">207</tt>  <tt class="py-line"><tt class="py-comment">##################################################</tt> </tt>
+<a name="L208"></a><tt class="py-lineno">208</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## ParsedDocstring</tt> </tt>
+<a name="L209"></a><tt class="py-lineno">209</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">##################################################</tt> </tt>
+<a name="ParsedDocstring"></a><div id="ParsedDocstring-def"><a name="L210"></a><tt class="py-lineno">210</tt> <a class="py-toggle" href="#" id="ParsedDocstring-toggle" onclick="return toggle('ParsedDocstring');">-</a><tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">class</tt> <a class="py-def-name" href="epydoc.markup.ParsedDocstring-class.html">ParsedDocstring</a><tt class="py-op">:</tt> </tt>
+</div><div id="ParsedDocstring-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="ParsedDocstring-expanded"><a name="L211"></a><tt class="py-lineno">211</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L212"></a><tt class="py-lineno">212</tt>  <tt class="py-line"><tt class="py-docstring">    A standard intermediate representation for parsed docstrings that</tt> </tt>
+<a name="L213"></a><tt class="py-lineno">213</tt>  <tt class="py-line"><tt class="py-docstring">    can be used to generate output.  Parsed docstrings are produced by</tt> </tt>
+<a name="L214"></a><tt class="py-lineno">214</tt>  <tt class="py-line"><tt class="py-docstring">    markup parsers (such as L{epytext.parse} or L{javadoc.parse}).</tt> </tt>
+<a name="L215"></a><tt class="py-lineno">215</tt>  <tt class="py-line"><tt class="py-docstring">    C{ParsedDocstring}s support several kinds of operation:    </tt> </tt>
+<a name="L216"></a><tt class="py-lineno">216</tt>  <tt class="py-line"><tt class="py-docstring">      - output generation (L{to_plaintext()}, L{to_html()}, and</tt> </tt>
+<a name="L217"></a><tt class="py-lineno">217</tt>  <tt class="py-line"><tt class="py-docstring">        L{to_latex()}).</tt> </tt>
+<a name="L218"></a><tt class="py-lineno">218</tt>  <tt class="py-line"><tt class="py-docstring">      - Summarization (L{summary()}).</tt> </tt>
+<a name="L219"></a><tt class="py-lineno">219</tt>  <tt class="py-line"><tt class="py-docstring">      - Field extraction (L{split_fields()}).</tt> </tt>
+<a name="L220"></a><tt class="py-lineno">220</tt>  <tt class="py-line"><tt class="py-docstring">      - Index term extraction (L{index_terms()}.</tt> </tt>
+<a name="L221"></a><tt class="py-lineno">221</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L222"></a><tt class="py-lineno">222</tt>  <tt class="py-line"><tt class="py-docstring">    The output generation methods (C{to_M{format}()}) use a</tt> </tt>
+<a name="L223"></a><tt class="py-lineno">223</tt>  <tt class="py-line"><tt class="py-docstring">    L{DocstringLinker} to link the docstring output with the rest</tt> </tt>
+<a name="L224"></a><tt class="py-lineno">224</tt>  <tt class="py-line"><tt class="py-docstring">    of the documentation that epydoc generates.</tt> </tt>
+<a name="L225"></a><tt class="py-lineno">225</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L226"></a><tt class="py-lineno">226</tt>  <tt class="py-line"><tt class="py-docstring">    Subclassing</tt> </tt>
+<a name="L227"></a><tt class="py-lineno">227</tt>  <tt class="py-line"><tt class="py-docstring">    ===========</tt> </tt>
+<a name="L228"></a><tt class="py-lineno">228</tt>  <tt class="py-line"><tt class="py-docstring">    The only method that a subclass is I{required} to implement is</tt> </tt>
+<a name="L229"></a><tt class="py-lineno">229</tt>  <tt class="py-line"><tt class="py-docstring">    L{to_plaintext()}; but it is often useful to override the other</tt> </tt>
+<a name="L230"></a><tt class="py-lineno">230</tt>  <tt class="py-line"><tt class="py-docstring">    methods.  The default behavior of each method is described below:</tt> </tt>
+<a name="L231"></a><tt class="py-lineno">231</tt>  <tt class="py-line"><tt class="py-docstring">      - C{to_I{format}}: Calls C{to_plaintext}, and uses the string it</tt> </tt>
+<a name="L232"></a><tt class="py-lineno">232</tt>  <tt class="py-line"><tt class="py-docstring">        returns to generate verbatim output.</tt> </tt>
+<a name="L233"></a><tt class="py-lineno">233</tt>  <tt class="py-line"><tt class="py-docstring">      - C{summary}: Returns C{self} (i.e., the entire docstring).</tt> </tt>
+<a name="L234"></a><tt class="py-lineno">234</tt>  <tt class="py-line"><tt class="py-docstring">      - C{split_fields}: Returns C{(self, [])} (i.e., extracts no</tt> </tt>
+<a name="L235"></a><tt class="py-lineno">235</tt>  <tt class="py-line"><tt class="py-docstring">        fields).</tt> </tt>
+<a name="L236"></a><tt class="py-lineno">236</tt>  <tt class="py-line"><tt class="py-docstring">      - C{index_terms}: Returns C{[]} (i.e., extracts no index terms).</tt> </tt>
+<a name="L237"></a><tt class="py-lineno">237</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L238"></a><tt class="py-lineno">238</tt>  <tt class="py-line"><tt class="py-docstring">    If and when epydoc adds more output formats, new C{to_I{format}}</tt> </tt>
+<a name="L239"></a><tt class="py-lineno">239</tt>  <tt class="py-line"><tt class="py-docstring">    methods will be added to this base class; but they will always</tt> </tt>
+<a name="L240"></a><tt class="py-lineno">240</tt>  <tt class="py-line"><tt class="py-docstring">    be given a default implementation.</tt> </tt>
+<a name="L241"></a><tt class="py-lineno">241</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="ParsedDocstring.split_fields"></a><div id="ParsedDocstring.split_fields-def"><a name="L242"></a><tt class="py-lineno">242</tt> <a class="py-toggle" href="#" id="ParsedDocstring.split_fields-toggle" onclick="return toggle('ParsedDocstring.split_fields');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.ParsedDocstring-class.html#split_fields">split_fields</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py [...]
+</div><div id="ParsedDocstring.split_fields-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ParsedDocstring.split_fields-expanded"><a name="L243"></a><tt class="py-lineno">243</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L244"></a><tt class="py-lineno">244</tt>  <tt class="py-line"><tt class="py-docstring">        Split this docstring into its body and its fields.</tt> </tt>
+<a name="L245"></a><tt class="py-lineno">245</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt>
+<a name="L246"></a><tt class="py-lineno">246</tt>  <tt class="py-line"><tt class="py-docstring">        @return: A tuple C{(M{body}, M{fields})}, where C{M{body}} is</tt> </tt>
+<a name="L247"></a><tt class="py-lineno">247</tt>  <tt class="py-line"><tt class="py-docstring">            the main body of this docstring, and C{M{fields}} is a list</tt> </tt>
+<a name="L248"></a><tt class="py-lineno">248</tt>  <tt class="py-line"><tt class="py-docstring">            of its fields.  If the resulting body is empty, return</tt> </tt>
+<a name="L249"></a><tt class="py-lineno">249</tt>  <tt class="py-line"><tt class="py-docstring">            C{None} for the body.</tt> </tt>
+<a name="L250"></a><tt class="py-lineno">250</tt>  <tt class="py-line"><tt class="py-docstring">        @rtype: C{(L{ParsedDocstring}, list of L{Field})}</tt> </tt>
+<a name="L251"></a><tt class="py-lineno">251</tt>  <tt class="py-line"><tt class="py-docstring">        @param errors: A list where any errors generated during</tt> </tt>
+<a name="L252"></a><tt class="py-lineno">252</tt>  <tt class="py-line"><tt class="py-docstring">            splitting will be stored.  If no list is specified, then</tt> </tt>
+<a name="L253"></a><tt class="py-lineno">253</tt>  <tt class="py-line"><tt class="py-docstring">            errors will be ignored.</tt> </tt>
+<a name="L254"></a><tt class="py-lineno">254</tt>  <tt class="py-line"><tt class="py-docstring">        @type errors: C{list} of L{ParseError}</tt> </tt>
+<a name="L255"></a><tt class="py-lineno">255</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L256"></a><tt class="py-lineno">256</tt>  <tt class="py-line">        <tt class="py-comment"># Default behavior:</tt> </tt>
+<a name="L257"></a><tt class="py-lineno">257</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+</div><a name="L258"></a><tt class="py-lineno">258</tt>  <tt class="py-line"> </tt>
+<a name="ParsedDocstring.summary"></a><div id="ParsedDocstring.summary-def"><a name="L259"></a><tt class="py-lineno">259</tt> <a class="py-toggle" href="#" id="ParsedDocstring.summary-toggle" onclick="return toggle('ParsedDocstring.summary');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.ParsedDocstring-class.html#summary">summary</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">: [...]
+</div><div id="ParsedDocstring.summary-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ParsedDocstring.summary-expanded"><a name="L260"></a><tt class="py-lineno">260</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L261"></a><tt class="py-lineno">261</tt>  <tt class="py-line"><tt class="py-docstring">        @return: A pair consisting of a short summary of this docstring and a</tt> </tt>
+<a name="L262"></a><tt class="py-lineno">262</tt>  <tt class="py-line"><tt class="py-docstring">            boolean value indicating whether there is further documentation</tt> </tt>
+<a name="L263"></a><tt class="py-lineno">263</tt>  <tt class="py-line"><tt class="py-docstring">            in addition to the summary. Typically, the summary consists of the</tt> </tt>
+<a name="L264"></a><tt class="py-lineno">264</tt>  <tt class="py-line"><tt class="py-docstring">            first sentence of the docstring.</tt> </tt>
+<a name="L265"></a><tt class="py-lineno">265</tt>  <tt class="py-line"><tt class="py-docstring">        @rtype: (L{ParsedDocstring}, C{bool})</tt> </tt>
+<a name="L266"></a><tt class="py-lineno">266</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L267"></a><tt class="py-lineno">267</tt>  <tt class="py-line">        <tt class="py-comment"># Default behavior:</tt> </tt>
+<a name="L268"></a><tt class="py-lineno">268</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">False</tt> </tt>
+</div><a name="L269"></a><tt class="py-lineno">269</tt>  <tt class="py-line"> </tt>
+<a name="ParsedDocstring.concatenate"></a><div id="ParsedDocstring.concatenate-def"><a name="L270"></a><tt class="py-lineno">270</tt> <a class="py-toggle" href="#" id="ParsedDocstring.concatenate-toggle" onclick="return toggle('ParsedDocstring.concatenate');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.ParsedDocstring-class.html#concatenate">concatenate</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">, [...]
+</div><div id="ParsedDocstring.concatenate-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ParsedDocstring.concatenate-expanded"><a name="L271"></a><tt class="py-lineno">271</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L272"></a><tt class="py-lineno">272</tt>  <tt class="py-line"><tt class="py-docstring">        @return: A new parsed docstring containing the concatination</tt> </tt>
+<a name="L273"></a><tt class="py-lineno">273</tt>  <tt class="py-line"><tt class="py-docstring">            of this docstring and C{other}.</tt> </tt>
+<a name="L274"></a><tt class="py-lineno">274</tt>  <tt class="py-line"><tt class="py-docstring">        @raise ValueError: If the two parsed docstrings are</tt> </tt>
+<a name="L275"></a><tt class="py-lineno">275</tt>  <tt class="py-line"><tt class="py-docstring">            incompatible.</tt> </tt>
+<a name="L276"></a><tt class="py-lineno">276</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L277"></a><tt class="py-lineno">277</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-83" class="py-name" targets="Class epydoc.markup.ConcatenatedDocstring=epydoc.markup.ConcatenatedDocstring-class.html"><a title="epydoc.markup.ConcatenatedDocstring" class="py-name" href="#" onclick="return doclink('link-83', 'ConcatenatedDocstring', 'link-83');">ConcatenatedDocstring</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op"> [...]
+</div><a name="L278"></a><tt class="py-lineno">278</tt>  <tt class="py-line"> </tt>
+<a name="ParsedDocstring.__add__"></a><div id="ParsedDocstring.__add__-def"><a name="L279"></a><tt class="py-lineno">279</tt> <a class="py-toggle" href="#" id="ParsedDocstring.__add__-toggle" onclick="return toggle('ParsedDocstring.__add__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.ParsedDocstring-class.html#__add__">__add__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-para [...]
+</div><a name="L280"></a><tt class="py-lineno">280</tt>  <tt class="py-line"> </tt>
+<a name="ParsedDocstring.to_html"></a><div id="ParsedDocstring.to_html-def"><a name="L281"></a><tt class="py-lineno">281</tt> <a class="py-toggle" href="#" id="ParsedDocstring.to_html-toggle" onclick="return toggle('ParsedDocstring.to_html');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.ParsedDocstring-class.html#to_html">to_html</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-para [...]
+</div><div id="ParsedDocstring.to_html-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ParsedDocstring.to_html-expanded"><a name="L282"></a><tt class="py-lineno">282</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L283"></a><tt class="py-lineno">283</tt>  <tt class="py-line"><tt class="py-docstring">        Translate this docstring to HTML.</tt> </tt>
+<a name="L284"></a><tt class="py-lineno">284</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L285"></a><tt class="py-lineno">285</tt>  <tt class="py-line"><tt class="py-docstring">        @param docstring_linker: An HTML translator for crossreference</tt> </tt>
+<a name="L286"></a><tt class="py-lineno">286</tt>  <tt class="py-line"><tt class="py-docstring">            links into and out of the docstring.</tt> </tt>
+<a name="L287"></a><tt class="py-lineno">287</tt>  <tt class="py-line"><tt class="py-docstring">        @type docstring_linker: L{DocstringLinker}</tt> </tt>
+<a name="L288"></a><tt class="py-lineno">288</tt>  <tt class="py-line"><tt class="py-docstring">        @param options: Any extra options for the output.  Unknown</tt> </tt>
+<a name="L289"></a><tt class="py-lineno">289</tt>  <tt class="py-line"><tt class="py-docstring">            options are ignored.</tt> </tt>
+<a name="L290"></a><tt class="py-lineno">290</tt>  <tt class="py-line"><tt class="py-docstring">        @return: An HTML fragment that encodes this docstring.</tt> </tt>
+<a name="L291"></a><tt class="py-lineno">291</tt>  <tt class="py-line"><tt class="py-docstring">        @rtype: C{string}</tt> </tt>
+<a name="L292"></a><tt class="py-lineno">292</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L293"></a><tt class="py-lineno">293</tt>  <tt class="py-line">        <tt class="py-comment"># Default behavior:</tt> </tt>
+<a name="L294"></a><tt class="py-lineno">294</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt id="link-85" class="py-name"><a title="epydoc.docwriter.plaintext
+epydoc.markup.plaintext" class="py-name" href="#" onclick="return doclink('link-85', 'plaintext', 'link-20');">plaintext</a></tt> <tt class="py-op">=</tt> <tt id="link-86" class="py-name"><a title="epydoc.util.plaintext_to_html" class="py-name" href="#" onclick="return doclink('link-86', 'plaintext_to_html', 'link-4');">plaintext_to_html</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-87" class="py-name" targets="Method epydoc.markup.Conc [...]
+epydoc.markup.ParsedDocstring.to_plaintext
+epydoc.markup.epytext.ParsedEpytextDocstring.to_plaintext
+epydoc.markup.epytext.to_plaintext
+epydoc.markup.javadoc.ParsedJavadocDocstring.to_plaintext
+epydoc.markup.plaintext.ParsedPlaintextDocstring.to_plaintext
+epydoc.markup.restructuredtext.ParsedRstDocstring.to_plaintext" class="py-name" href="#" onclick="return doclink('link-87', 'to_plaintext', 'link-87');">to_plaintext</a></tt><tt class="py-op">(</tt><tt class="py-name">docstring_linker</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L295"></a><tt class="py-lineno">295</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">'<pre class="literalblock">\n%s\n</pre>\n'</tt> <tt class="py-op">%</tt> <tt id="link-88" class="py-name"><a title="epydoc.docwriter.plaintext
+epydoc.markup.plaintext" class="py-name" href="#" onclick="return doclink('link-88', 'plaintext', 'link-20');">plaintext</a></tt> </tt>
+</div><a name="L296"></a><tt class="py-lineno">296</tt>  <tt class="py-line"> </tt>
+<a name="ParsedDocstring.to_latex"></a><div id="ParsedDocstring.to_latex-def"><a name="L297"></a><tt class="py-lineno">297</tt> <a class="py-toggle" href="#" id="ParsedDocstring.to_latex-toggle" onclick="return toggle('ParsedDocstring.to_latex');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.ParsedDocstring-class.html#to_latex">to_latex</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="p [...]
+</div><div id="ParsedDocstring.to_latex-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ParsedDocstring.to_latex-expanded"><a name="L298"></a><tt class="py-lineno">298</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L299"></a><tt class="py-lineno">299</tt>  <tt class="py-line"><tt class="py-docstring">        Translate this docstring to LaTeX.</tt> </tt>
+<a name="L300"></a><tt class="py-lineno">300</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt>
+<a name="L301"></a><tt class="py-lineno">301</tt>  <tt class="py-line"><tt class="py-docstring">        @param docstring_linker: A LaTeX translator for crossreference</tt> </tt>
+<a name="L302"></a><tt class="py-lineno">302</tt>  <tt class="py-line"><tt class="py-docstring">            links into and out of the docstring.</tt> </tt>
+<a name="L303"></a><tt class="py-lineno">303</tt>  <tt class="py-line"><tt class="py-docstring">        @type docstring_linker: L{DocstringLinker}</tt> </tt>
+<a name="L304"></a><tt class="py-lineno">304</tt>  <tt class="py-line"><tt class="py-docstring">        @param options: Any extra options for the output.  Unknown</tt> </tt>
+<a name="L305"></a><tt class="py-lineno">305</tt>  <tt class="py-line"><tt class="py-docstring">            options are ignored.</tt> </tt>
+<a name="L306"></a><tt class="py-lineno">306</tt>  <tt class="py-line"><tt class="py-docstring">        @return: A LaTeX fragment that encodes this docstring.</tt> </tt>
+<a name="L307"></a><tt class="py-lineno">307</tt>  <tt class="py-line"><tt class="py-docstring">        @rtype: C{string}</tt> </tt>
+<a name="L308"></a><tt class="py-lineno">308</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L309"></a><tt class="py-lineno">309</tt>  <tt class="py-line">        <tt class="py-comment"># Default behavior:</tt> </tt>
+<a name="L310"></a><tt class="py-lineno">310</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt id="link-89" class="py-name"><a title="epydoc.docwriter.plaintext
+epydoc.markup.plaintext" class="py-name" href="#" onclick="return doclink('link-89', 'plaintext', 'link-20');">plaintext</a></tt> <tt class="py-op">=</tt> <tt id="link-90" class="py-name"><a title="epydoc.util.plaintext_to_latex" class="py-name" href="#" onclick="return doclink('link-90', 'plaintext_to_latex', 'link-5');">plaintext_to_latex</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-91" class="py-name"><a title="epydoc.markup.Concate [...]
+epydoc.markup.ParsedDocstring.to_plaintext
+epydoc.markup.epytext.ParsedEpytextDocstring.to_plaintext
+epydoc.markup.epytext.to_plaintext
+epydoc.markup.javadoc.ParsedJavadocDocstring.to_plaintext
+epydoc.markup.plaintext.ParsedPlaintextDocstring.to_plaintext
+epydoc.markup.restructuredtext.ParsedRstDocstring.to_plaintext" class="py-name" href="#" onclick="return doclink('link-91', 'to_plaintext', 'link-87');">to_plaintext</a></tt><tt class="py-op">(</tt><tt class="py-name">docstring_linker</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L311"></a><tt class="py-lineno">311</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">'\\begin{alltt}\n%s\\end{alltt}\n\n'</tt> <tt class="py-op">%</tt> <tt id="link-92" class="py-name"><a title="epydoc.docwriter.plaintext
+epydoc.markup.plaintext" class="py-name" href="#" onclick="return doclink('link-92', 'plaintext', 'link-20');">plaintext</a></tt> </tt>
+</div><a name="L312"></a><tt class="py-lineno">312</tt>  <tt class="py-line"> </tt>
+<a name="ParsedDocstring.to_plaintext"></a><div id="ParsedDocstring.to_plaintext-def"><a name="L313"></a><tt class="py-lineno">313</tt> <a class="py-toggle" href="#" id="ParsedDocstring.to_plaintext-toggle" onclick="return toggle('ParsedDocstring.to_plaintext');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.ParsedDocstring-class.html#to_plaintext">to_plaintext</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py [...]
+</div><div id="ParsedDocstring.to_plaintext-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ParsedDocstring.to_plaintext-expanded"><a name="L314"></a><tt class="py-lineno">314</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L315"></a><tt class="py-lineno">315</tt>  <tt class="py-line"><tt class="py-docstring">        Translate this docstring to plaintext.</tt> </tt>
+<a name="L316"></a><tt class="py-lineno">316</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt>
+<a name="L317"></a><tt class="py-lineno">317</tt>  <tt class="py-line"><tt class="py-docstring">        @param docstring_linker: A plaintext translator for</tt> </tt>
+<a name="L318"></a><tt class="py-lineno">318</tt>  <tt class="py-line"><tt class="py-docstring">            crossreference links into and out of the docstring.</tt> </tt>
+<a name="L319"></a><tt class="py-lineno">319</tt>  <tt class="py-line"><tt class="py-docstring">        @type docstring_linker: L{DocstringLinker}</tt> </tt>
+<a name="L320"></a><tt class="py-lineno">320</tt>  <tt class="py-line"><tt class="py-docstring">        @param options: Any extra options for the output.  Unknown</tt> </tt>
+<a name="L321"></a><tt class="py-lineno">321</tt>  <tt class="py-line"><tt class="py-docstring">            options are ignored.</tt> </tt>
+<a name="L322"></a><tt class="py-lineno">322</tt>  <tt class="py-line"><tt class="py-docstring">        @return: A plaintext fragment that encodes this docstring.</tt> </tt>
+<a name="L323"></a><tt class="py-lineno">323</tt>  <tt class="py-line"><tt class="py-docstring">        @rtype: C{string}</tt> </tt>
+<a name="L324"></a><tt class="py-lineno">324</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L325"></a><tt class="py-lineno">325</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">NotImplementedError</tt><tt class="py-op">,</tt> <tt class="py-string">'ParsedDocstring.to_plaintext()'</tt> </tt>
+</div><a name="L326"></a><tt class="py-lineno">326</tt>  <tt class="py-line"> </tt>
+<a name="ParsedDocstring.index_terms"></a><div id="ParsedDocstring.index_terms-def"><a name="L327"></a><tt class="py-lineno">327</tt> <a class="py-toggle" href="#" id="ParsedDocstring.index_terms-toggle" onclick="return toggle('ParsedDocstring.index_terms');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.ParsedDocstring-class.html#index_terms">index_terms</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">) [...]
+</div><div id="ParsedDocstring.index_terms-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ParsedDocstring.index_terms-expanded"><a name="L328"></a><tt class="py-lineno">328</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L329"></a><tt class="py-lineno">329</tt>  <tt class="py-line"><tt class="py-docstring">        @return: The list of index terms that are defined in this</tt> </tt>
+<a name="L330"></a><tt class="py-lineno">330</tt>  <tt class="py-line"><tt class="py-docstring">            docstring.  Each of these items will be added to the index</tt> </tt>
+<a name="L331"></a><tt class="py-lineno">331</tt>  <tt class="py-line"><tt class="py-docstring">            page of the documentation.</tt> </tt>
+<a name="L332"></a><tt class="py-lineno">332</tt>  <tt class="py-line"><tt class="py-docstring">        @rtype: C{list} of C{ParsedDocstring}</tt> </tt>
+<a name="L333"></a><tt class="py-lineno">333</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L334"></a><tt class="py-lineno">334</tt>  <tt class="py-line">        <tt class="py-comment"># Default behavior:</tt> </tt>
+<a name="L335"></a><tt class="py-lineno">335</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">return</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+</div></div><a name="L336"></a><tt class="py-lineno">336</tt>  <tt class="py-line"> </tt>
+<a name="L337"></a><tt class="py-lineno">337</tt>  <tt class="py-line"><tt class="py-comment">##################################################</tt> </tt>
+<a name="L338"></a><tt class="py-lineno">338</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## Concatenated Docstring</tt> </tt>
+<a name="L339"></a><tt class="py-lineno">339</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">##################################################</tt> </tt>
+<a name="ConcatenatedDocstring"></a><div id="ConcatenatedDocstring-def"><a name="L340"></a><tt class="py-lineno">340</tt> <a class="py-toggle" href="#" id="ConcatenatedDocstring-toggle" onclick="return toggle('ConcatenatedDocstring');">-</a><tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">class</tt> <a class="py-def-name" href="epydoc.markup.ConcatenatedDocstring-class.html">ConcatenatedDocstring</a><tt class="py-op">:</tt> </tt>
+</div><div id="ConcatenatedDocstring-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="ConcatenatedDocstring-expanded"><a name="ConcatenatedDocstring.__init__"></a><div id="ConcatenatedDocstring.__init__-def"><a name="L341"></a><tt class="py-lineno">341</tt> <a class="py-toggle" href="#" id="ConcatenatedDocstring.__init__-toggle" onclick="return toggle('ConcatenatedDocstring.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-n [...]
+</div><div id="ConcatenatedDocstring.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ConcatenatedDocstring.__init__-expanded"><a name="L342"></a><tt class="py-lineno">342</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_parsed_docstrings</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">pds</tt> <tt class="py-keyword">for</tt> <tt class="py-name">pds</tt> <tt class="py- [...]
+<a name="L343"></a><tt class="py-lineno">343</tt>  <tt class="py-line">                                   <tt class="py-keyword">if</tt> <tt class="py-name">pds</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">]</tt> </tt>
+</div><a name="L344"></a><tt class="py-lineno">344</tt>  <tt class="py-line">         </tt>
+<a name="ConcatenatedDocstring.split_fields"></a><div id="ConcatenatedDocstring.split_fields-def"><a name="L345"></a><tt class="py-lineno">345</tt> <a class="py-toggle" href="#" id="ConcatenatedDocstring.split_fields-toggle" onclick="return toggle('ConcatenatedDocstring.split_fields');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.ConcatenatedDocstring-class.html#split_fields">split_fields</a><tt class="py-op">(</tt><tt class="py [...]
+</div><div id="ConcatenatedDocstring.split_fields-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ConcatenatedDocstring.split_fields-expanded"><a name="L346"></a><tt class="py-lineno">346</tt>  <tt class="py-line">        <tt class="py-name">bodies</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L347"></a><tt class="py-lineno">347</tt>  <tt class="py-line">        <tt class="py-name">fields</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L348"></a><tt class="py-lineno">348</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_parsed_docstrings</tt><tt class="py-op">:</tt> </tt>
+<a name="L349"></a><tt class="py-lineno">349</tt>  <tt class="py-line">            <tt class="py-name">b</tt><tt class="py-op">,</tt><tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-93" class="py-name" targets="Method epydoc.markup.ConcatenatedDocstring.split_fields()=epydoc.markup.ConcatenatedDocstring-class.html#split_fields,Method epydoc.markup.ParsedDocstring.split_fields()=epydoc.markup.ParsedDocstring-class.html#sp [...]
+epydoc.markup.ParsedDocstring.split_fields
+epydoc.markup.epytext.ParsedEpytextDocstring.split_fields
+epydoc.markup.javadoc.ParsedJavadocDocstring.split_fields
+epydoc.markup.restructuredtext.ParsedRstDocstring.split_fields" class="py-name" href="#" onclick="return doclink('link-93', 'split_fields', 'link-93');">split_fields</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L350"></a><tt class="py-lineno">350</tt>  <tt class="py-line">            <tt class="py-name">bodies</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">b</tt><tt class="py-op">)</tt> </tt>
+<a name="L351"></a><tt class="py-lineno">351</tt>  <tt class="py-line">            <tt class="py-name">fields</tt><tt class="py-op">.</tt><tt class="py-name">extend</tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">)</tt> </tt>
+<a name="L352"></a><tt class="py-lineno">352</tt>  <tt class="py-line"> </tt>
+<a name="L353"></a><tt class="py-lineno">353</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-94" class="py-name"><a title="epydoc.markup.ConcatenatedDocstring" class="py-name" href="#" onclick="return doclink('link-94', 'ConcatenatedDocstring', 'link-83');">ConcatenatedDocstring</a></tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">bodies</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">fields</tt> </tt>
+</div><a name="L354"></a><tt class="py-lineno">354</tt>  <tt class="py-line"> </tt>
+<a name="ConcatenatedDocstring.summary"></a><div id="ConcatenatedDocstring.summary-def"><a name="L355"></a><tt class="py-lineno">355</tt> <a class="py-toggle" href="#" id="ConcatenatedDocstring.summary-toggle" onclick="return toggle('ConcatenatedDocstring.summary');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.ConcatenatedDocstring-class.html#summary">summary</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py [...]
+</div><div id="ConcatenatedDocstring.summary-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ConcatenatedDocstring.summary-expanded"><a name="L356"></a><tt class="py-lineno">356</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_parsed_docstrings</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-95" clas [...]
+epydoc.docwriter.html.HTMLWriter.summary
+epydoc.markup.ConcatenatedDocstring.summary
+epydoc.markup.ParsedDocstring.summary
+epydoc.markup.epytext.ParsedEpytextDocstring.summary
+epydoc.markup.javadoc.ParsedJavadocDocstring.summary
+epydoc.markup.plaintext.ParsedPlaintextDocstring.summary
+epydoc.markup.restructuredtext.ParsedRstDocstring.summary" class="py-name" href="#" onclick="return doclink('link-95', 'summary', 'link-95');">summary</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L357"></a><tt class="py-lineno">357</tt>  <tt class="py-line"> </tt>
+<a name="ConcatenatedDocstring.to_html"></a><div id="ConcatenatedDocstring.to_html-def"><a name="L358"></a><tt class="py-lineno">358</tt> <a class="py-toggle" href="#" id="ConcatenatedDocstring.to_html-toggle" onclick="return toggle('ConcatenatedDocstring.to_html');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.ConcatenatedDocstring-class.html#to_html">to_html</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py [...]
+</div><div id="ConcatenatedDocstring.to_html-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ConcatenatedDocstring.to_html-expanded"><a name="L359"></a><tt class="py-lineno">359</tt>  <tt class="py-line">        <tt class="py-name">htmlstring</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
+<a name="L360"></a><tt class="py-lineno">360</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_parsed_docstrings</tt><tt class="py-op">:</tt> </tt>
+<a name="L361"></a><tt class="py-lineno">361</tt>  <tt class="py-line">            <tt class="py-name">htmlstring</tt> <tt class="py-op">+=</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-96" class="py-name" targets="Method epydoc.docwriter.dotgraph.DotGraph.to_html()=epydoc.docwriter.dotgraph.DotGraph-class.html#to_html,Method epydoc.markup.ConcatenatedDocstring.to_html()=epydoc.markup.ConcatenatedDocstring-class.html#to_html,Method epydoc.markup.ParsedDocstring.to [...]
+epydoc.markup.ConcatenatedDocstring.to_html
+epydoc.markup.ParsedDocstring.to_html
+epydoc.markup.epytext.ParsedEpytextDocstring.to_html
+epydoc.markup.javadoc.ParsedJavadocDocstring.to_html
+epydoc.markup.plaintext.ParsedPlaintextDocstring.to_html
+epydoc.markup.restructuredtext.ParsedRstDocstring.to_html" class="py-name" href="#" onclick="return doclink('link-96', 'to_html', 'link-96');">to_html</a></tt><tt class="py-op">(</tt><tt class="py-name">docstring_linker</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-name">options</tt><tt class="py-op">)</tt> </tt>
+<a name="L362"></a><tt class="py-lineno">362</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">htmlstring</tt> </tt>
+</div><a name="L363"></a><tt class="py-lineno">363</tt>  <tt class="py-line"> </tt>
+<a name="ConcatenatedDocstring.to_latex"></a><div id="ConcatenatedDocstring.to_latex-def"><a name="L364"></a><tt class="py-lineno">364</tt> <a class="py-toggle" href="#" id="ConcatenatedDocstring.to_latex-toggle" onclick="return toggle('ConcatenatedDocstring.to_latex');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.ConcatenatedDocstring-class.html#to_latex">to_latex</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt cla [...]
+</div><div id="ConcatenatedDocstring.to_latex-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ConcatenatedDocstring.to_latex-expanded"><a name="L365"></a><tt class="py-lineno">365</tt>  <tt class="py-line">        <tt class="py-name">latexstring</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
+<a name="L366"></a><tt class="py-lineno">366</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_parsed_docstrings</tt><tt class="py-op">:</tt> </tt>
+<a name="L367"></a><tt class="py-lineno">367</tt>  <tt class="py-line">            <tt class="py-name">latexstring</tt> <tt class="py-op">+=</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-97" class="py-name" targets="Method epydoc.markup.ConcatenatedDocstring.to_latex()=epydoc.markup.ConcatenatedDocstring-class.html#to_latex,Method epydoc.markup.ParsedDocstring.to_latex()=epydoc.markup.ParsedDocstring-class.html#to_latex,Method epydoc.markup.epytext.ParsedEpytextDo [...]
+epydoc.markup.ParsedDocstring.to_latex
+epydoc.markup.epytext.ParsedEpytextDocstring.to_latex
+epydoc.markup.plaintext.ParsedPlaintextDocstring.to_latex
+epydoc.markup.restructuredtext.ParsedRstDocstring.to_latex" class="py-name" href="#" onclick="return doclink('link-97', 'to_latex', 'link-97');">to_latex</a></tt><tt class="py-op">(</tt><tt class="py-name">docstring_linker</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-name">options</tt><tt class="py-op">)</tt> </tt>
+<a name="L368"></a><tt class="py-lineno">368</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">latexstring</tt> </tt>
+</div><a name="L369"></a><tt class="py-lineno">369</tt>  <tt class="py-line"> </tt>
+<a name="ConcatenatedDocstring.to_plaintext"></a><div id="ConcatenatedDocstring.to_plaintext-def"><a name="L370"></a><tt class="py-lineno">370</tt> <a class="py-toggle" href="#" id="ConcatenatedDocstring.to_plaintext-toggle" onclick="return toggle('ConcatenatedDocstring.to_plaintext');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.ConcatenatedDocstring-class.html#to_plaintext">to_plaintext</a><tt class="py-op">(</tt><tt class="py [...]
+</div><div id="ConcatenatedDocstring.to_plaintext-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ConcatenatedDocstring.to_plaintext-expanded"><a name="L371"></a><tt class="py-lineno">371</tt>  <tt class="py-line">        <tt class="py-name">textstring</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
+<a name="L372"></a><tt class="py-lineno">372</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_parsed_docstrings</tt><tt class="py-op">:</tt> </tt>
+<a name="L373"></a><tt class="py-lineno">373</tt>  <tt class="py-line">            <tt class="py-name">textstring</tt> <tt class="py-op">+=</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-98" class="py-name"><a title="epydoc.markup.ConcatenatedDocstring.to_plaintext
+epydoc.markup.ParsedDocstring.to_plaintext
+epydoc.markup.epytext.ParsedEpytextDocstring.to_plaintext
+epydoc.markup.epytext.to_plaintext
+epydoc.markup.javadoc.ParsedJavadocDocstring.to_plaintext
+epydoc.markup.plaintext.ParsedPlaintextDocstring.to_plaintext
+epydoc.markup.restructuredtext.ParsedRstDocstring.to_plaintext" class="py-name" href="#" onclick="return doclink('link-98', 'to_plaintext', 'link-87');">to_plaintext</a></tt><tt class="py-op">(</tt><tt class="py-name">docstring_linker</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-name">options</tt><tt class="py-op">)</tt> </tt>
+<a name="L374"></a><tt class="py-lineno">374</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">textstring</tt> </tt>
+</div><a name="L375"></a><tt class="py-lineno">375</tt>  <tt class="py-line"> </tt>
+<a name="ConcatenatedDocstring.index_terms"></a><div id="ConcatenatedDocstring.index_terms-def"><a name="L376"></a><tt class="py-lineno">376</tt> <a class="py-toggle" href="#" id="ConcatenatedDocstring.index_terms-toggle" onclick="return toggle('ConcatenatedDocstring.index_terms');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.ConcatenatedDocstring-class.html#index_terms">index_terms</a><tt class="py-op">(</tt><tt class="py-param [...]
+</div><div id="ConcatenatedDocstring.index_terms-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ConcatenatedDocstring.index_terms-expanded"><a name="L377"></a><tt class="py-lineno">377</tt>  <tt class="py-line">        <tt class="py-name">terms</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L378"></a><tt class="py-lineno">378</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_parsed_docstrings</tt><tt class="py-op">:</tt> </tt>
+<a name="L379"></a><tt class="py-lineno">379</tt>  <tt class="py-line">            <tt class="py-name">terms</tt> <tt class="py-op">+=</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-99" class="py-name" targets="Method epydoc.markup.ConcatenatedDocstring.index_terms()=epydoc.markup.ConcatenatedDocstring-class.html#index_terms,Method epydoc.markup.ParsedDocstring.index_terms()=epydoc.markup.ParsedDocstring-class.html#index_terms,Method epydoc.markup.epytext.ParsedEpy [...]
+epydoc.markup.ParsedDocstring.index_terms
+epydoc.markup.epytext.ParsedEpytextDocstring.index_terms
+epydoc.markup.restructuredtext.ParsedRstDocstring.index_terms" class="py-name" href="#" onclick="return doclink('link-99', 'index_terms', 'link-99');">index_terms</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L380"></a><tt class="py-lineno">380</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">terms</tt> </tt>
+</div></div><a name="L381"></a><tt class="py-lineno">381</tt>  <tt class="py-line">     </tt>
+<a name="L382"></a><tt class="py-lineno">382</tt>  <tt class="py-line"><tt class="py-comment">##################################################</tt> </tt>
+<a name="L383"></a><tt class="py-lineno">383</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## Fields</tt> </tt>
+<a name="L384"></a><tt class="py-lineno">384</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">##################################################</tt> </tt>
+<a name="Field"></a><div id="Field-def"><a name="L385"></a><tt class="py-lineno">385</tt> <a class="py-toggle" href="#" id="Field-toggle" onclick="return toggle('Field');">-</a><tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">class</tt> <a class="py-def-name" href="epydoc.markup.Field-class.html">Field</a><tt class="py-op">:</tt> </tt>
+</div><div id="Field-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="Field-expanded"><a name="L386"></a><tt class="py-lineno">386</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L387"></a><tt class="py-lineno">387</tt>  <tt class="py-line"><tt class="py-docstring">    The contents of a docstring's field.  Docstring fields are used</tt> </tt>
+<a name="L388"></a><tt class="py-lineno">388</tt>  <tt class="py-line"><tt class="py-docstring">    to describe specific aspects of an object, such as a parameter of</tt> </tt>
+<a name="L389"></a><tt class="py-lineno">389</tt>  <tt class="py-line"><tt class="py-docstring">    a function or the author of a module.  Each field consists of a</tt> </tt>
+<a name="L390"></a><tt class="py-lineno">390</tt>  <tt class="py-line"><tt class="py-docstring">    tag, an optional argument, and a body:</tt> </tt>
+<a name="L391"></a><tt class="py-lineno">391</tt>  <tt class="py-line"><tt class="py-docstring">      - The tag specifies the type of information that the field</tt> </tt>
+<a name="L392"></a><tt class="py-lineno">392</tt>  <tt class="py-line"><tt class="py-docstring">        encodes.</tt> </tt>
+<a name="L393"></a><tt class="py-lineno">393</tt>  <tt class="py-line"><tt class="py-docstring">      - The argument specifies the object that the field describes.</tt> </tt>
+<a name="L394"></a><tt class="py-lineno">394</tt>  <tt class="py-line"><tt class="py-docstring">        The argument may be C{None} or a C{string}.</tt> </tt>
+<a name="L395"></a><tt class="py-lineno">395</tt>  <tt class="py-line"><tt class="py-docstring">      - The body contains the field's information.</tt> </tt>
+<a name="L396"></a><tt class="py-lineno">396</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L397"></a><tt class="py-lineno">397</tt>  <tt class="py-line"><tt class="py-docstring">    Tags are automatically downcased and stripped; and arguments are</tt> </tt>
+<a name="L398"></a><tt class="py-lineno">398</tt>  <tt class="py-line"><tt class="py-docstring">    automatically stripped.</tt> </tt>
+<a name="L399"></a><tt class="py-lineno">399</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="Field.__init__"></a><div id="Field.__init__-def"><a name="L400"></a><tt class="py-lineno">400</tt> <a class="py-toggle" href="#" id="Field.__init__-toggle" onclick="return toggle('Field.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.Field-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">tag</tt><tt class="py-op">,</tt> <tt clas [...]
+</div><div id="Field.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Field.__init__-expanded"><a name="L401"></a><tt class="py-lineno">401</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_tag</tt> <tt class="py-op">=</tt> <tt id="link-100" class="py-name" targets="Method epydoc.markup.Field.tag()=epydoc.markup.Field-class.html#tag"><a title="epydoc.markup.Field.tag" class="py-name" href="#" on [...]
+<a name="L402"></a><tt class="py-lineno">402</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-101" class="py-name" targets="Method epydoc.markup.Field.arg()=epydoc.markup.Field-class.html#arg"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-101', 'arg', 'link-101');">arg</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><t [...]
+<a name="L403"></a><tt class="py-lineno">403</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_arg</tt> <tt class="py-op">=</tt> <tt id="link-102" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-102', 'arg', 'link-101');">arg</a></tt><tt class="py-op">.</tt><tt class="py-name">strip</tt><tt class="py-op">(</tt><tt cla [...]
+<a name="L404"></a><tt class="py-lineno">404</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_body</tt> <tt class="py-op">=</tt> <tt id="link-103" class="py-name" targets="Method epydoc.markup.Field.body()=epydoc.markup.Field-class.html#body"><a title="epydoc.markup.Field.body" class="py-name" href="#" onclick="return doclink('link-103', 'body', 'link-103');">body</a></tt> </tt>
+</div><a name="L405"></a><tt class="py-lineno">405</tt>  <tt class="py-line"> </tt>
+<a name="Field.tag"></a><div id="Field.tag-def"><a name="L406"></a><tt class="py-lineno">406</tt> <a class="py-toggle" href="#" id="Field.tag-toggle" onclick="return toggle('Field.tag');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.Field-class.html#tag">tag</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Field.tag-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Field.tag-expanded"><a name="L407"></a><tt class="py-lineno">407</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L408"></a><tt class="py-lineno">408</tt>  <tt class="py-line"><tt class="py-docstring">        @return: This field's tag.</tt> </tt>
+<a name="L409"></a><tt class="py-lineno">409</tt>  <tt class="py-line"><tt class="py-docstring">        @rtype: C{string}</tt> </tt>
+<a name="L410"></a><tt class="py-lineno">410</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L411"></a><tt class="py-lineno">411</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_tag</tt> </tt>
+</div><a name="L412"></a><tt class="py-lineno">412</tt>  <tt class="py-line"> </tt>
+<a name="Field.arg"></a><div id="Field.arg-def"><a name="L413"></a><tt class="py-lineno">413</tt> <a class="py-toggle" href="#" id="Field.arg-toggle" onclick="return toggle('Field.arg');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.Field-class.html#arg">arg</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Field.arg-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Field.arg-expanded"><a name="L414"></a><tt class="py-lineno">414</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L415"></a><tt class="py-lineno">415</tt>  <tt class="py-line"><tt class="py-docstring">        @return: This field's argument, or C{None} if this field has</tt> </tt>
+<a name="L416"></a><tt class="py-lineno">416</tt>  <tt class="py-line"><tt class="py-docstring">            no argument.</tt> </tt>
+<a name="L417"></a><tt class="py-lineno">417</tt>  <tt class="py-line"><tt class="py-docstring">        @rtype: C{string} or C{None}</tt> </tt>
+<a name="L418"></a><tt class="py-lineno">418</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L419"></a><tt class="py-lineno">419</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_arg</tt> </tt>
+</div><a name="L420"></a><tt class="py-lineno">420</tt>  <tt class="py-line"> </tt>
+<a name="Field.body"></a><div id="Field.body-def"><a name="L421"></a><tt class="py-lineno">421</tt> <a class="py-toggle" href="#" id="Field.body-toggle" onclick="return toggle('Field.body');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.Field-class.html#body">body</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Field.body-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Field.body-expanded"><a name="L422"></a><tt class="py-lineno">422</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L423"></a><tt class="py-lineno">423</tt>  <tt class="py-line"><tt class="py-docstring">        @return: This field's body.</tt> </tt>
+<a name="L424"></a><tt class="py-lineno">424</tt>  <tt class="py-line"><tt class="py-docstring">        @rtype: L{ParsedDocstring}</tt> </tt>
+<a name="L425"></a><tt class="py-lineno">425</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L426"></a><tt class="py-lineno">426</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_body</tt> </tt>
+</div><a name="L427"></a><tt class="py-lineno">427</tt>  <tt class="py-line"> </tt>
+<a name="Field.__repr__"></a><div id="Field.__repr__-def"><a name="L428"></a><tt class="py-lineno">428</tt> <a class="py-toggle" href="#" id="Field.__repr__-toggle" onclick="return toggle('Field.__repr__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.Field-class.html#__repr__">__repr__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Field.__repr__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Field.__repr__-expanded"><a name="L429"></a><tt class="py-lineno">429</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_arg</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L430"></a><tt class="py-lineno">430</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">'<Field @%s: ...>'</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_tag</tt> </tt>
+<a name="L431"></a><tt class="py-lineno">431</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L432"></a><tt class="py-lineno">432</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">'<Field @%s %s: ...>'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_tag</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_arg</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L433"></a><tt class="py-lineno">433</tt>  <tt class="py-line"> </tt>
+<a name="L434"></a><tt class="py-lineno">434</tt>  <tt class="py-line"><tt class="py-comment">##################################################</tt> </tt>
+<a name="L435"></a><tt class="py-lineno">435</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## Docstring Linker (resolves crossreferences)</tt> </tt>
+<a name="L436"></a><tt class="py-lineno">436</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">##################################################</tt> </tt>
+<a name="DocstringLinker"></a><div id="DocstringLinker-def"><a name="L437"></a><tt class="py-lineno">437</tt> <a class="py-toggle" href="#" id="DocstringLinker-toggle" onclick="return toggle('DocstringLinker');">-</a><tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">class</tt> <a class="py-def-name" href="epydoc.markup.DocstringLinker-class.html">DocstringLinker</a><tt class="py-op">:</tt>  </tt>
+</div><a name="L438"></a><tt class="py-lineno">438</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L439"></a><tt class="py-lineno">439</tt>  <tt class="py-line"><tt class="py-docstring">    A translator for crossreference links into and out of a</tt> </tt>
+<a name="L440"></a><tt class="py-lineno">440</tt>  <tt class="py-line"><tt class="py-docstring">    C{ParsedDocstring}.  C{DocstringLinker} is used by</tt> </tt>
+<a name="L441"></a><tt class="py-lineno">441</tt>  <tt class="py-line"><tt class="py-docstring">    C{ParsedDocstring} to convert these crossreference links into</tt> </tt>
+<a name="L442"></a><tt class="py-lineno">442</tt>  <tt class="py-line"><tt class="py-docstring">    appropriate output formats.  For example,</tt> </tt>
+<a name="L443"></a><tt class="py-lineno">443</tt>  <tt class="py-line"><tt class="py-docstring">    C{DocstringLinker.to_html} expects a C{DocstringLinker} that</tt> </tt>
+<a name="L444"></a><tt class="py-lineno">444</tt>  <tt class="py-line"><tt class="py-docstring">    converts crossreference links to HTML.</tt> </tt>
+<a name="L445"></a><tt class="py-lineno">445</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="DocstringLinker.translate_indexterm"></a><div id="DocstringLinker.translate_indexterm-def"><a name="L446"></a><tt class="py-lineno">446</tt> <a class="py-toggle" href="#" id="DocstringLinker.translate_indexterm-toggle" onclick="return toggle('DocstringLinker.translate_indexterm');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.DocstringLinker-class.html#translate_indexterm">translate_indexterm</a><tt class="py-op">(</tt>< [...]
+</div><div id="DocstringLinker.translate_indexterm-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="DocstringLinker.translate_indexterm-expanded"><a name="L447"></a><tt class="py-lineno">447</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L448"></a><tt class="py-lineno">448</tt>  <tt class="py-line"><tt class="py-docstring">        Translate an index term to the appropriate output format.  The</tt> </tt>
+<a name="L449"></a><tt class="py-lineno">449</tt>  <tt class="py-line"><tt class="py-docstring">        output will typically include a crossreference anchor.</tt> </tt>
+<a name="L450"></a><tt class="py-lineno">450</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L451"></a><tt class="py-lineno">451</tt>  <tt class="py-line"><tt class="py-docstring">        @type indexterm: L{ParsedDocstring}</tt> </tt>
+<a name="L452"></a><tt class="py-lineno">452</tt>  <tt class="py-line"><tt class="py-docstring">        @param indexterm: The index term to translate.</tt> </tt>
+<a name="L453"></a><tt class="py-lineno">453</tt>  <tt class="py-line"><tt class="py-docstring">        @rtype: C{string}</tt> </tt>
+<a name="L454"></a><tt class="py-lineno">454</tt>  <tt class="py-line"><tt class="py-docstring">        @return: The translated index term.</tt> </tt>
+<a name="L455"></a><tt class="py-lineno">455</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L456"></a><tt class="py-lineno">456</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">NotImplementedError</tt><tt class="py-op">,</tt> <tt class="py-string">'DocstringLinker.translate_indexterm()'</tt> </tt>
+</div><a name="L457"></a><tt class="py-lineno">457</tt>  <tt class="py-line"> </tt>
+<a name="DocstringLinker.translate_identifier_xref"></a><div id="DocstringLinker.translate_identifier_xref-def"><a name="L458"></a><tt class="py-lineno">458</tt> <a class="py-toggle" href="#" id="DocstringLinker.translate_identifier_xref-toggle" onclick="return toggle('DocstringLinker.translate_identifier_xref');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.DocstringLinker-class.html#translate_identifier_xref">translate_identifi [...]
+</div><div id="DocstringLinker.translate_identifier_xref-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="DocstringLinker.translate_identifier_xref-expanded"><a name="L459"></a><tt class="py-lineno">459</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L460"></a><tt class="py-lineno">460</tt>  <tt class="py-line"><tt class="py-docstring">        Translate a crossreference link to a Python identifier to the</tt> </tt>
+<a name="L461"></a><tt class="py-lineno">461</tt>  <tt class="py-line"><tt class="py-docstring">        appropriate output format.  The output will typically include</tt> </tt>
+<a name="L462"></a><tt class="py-lineno">462</tt>  <tt class="py-line"><tt class="py-docstring">        a reference or pointer to the crossreference target.</tt> </tt>
+<a name="L463"></a><tt class="py-lineno">463</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L464"></a><tt class="py-lineno">464</tt>  <tt class="py-line"><tt class="py-docstring">        @type identifier: C{string}</tt> </tt>
+<a name="L465"></a><tt class="py-lineno">465</tt>  <tt class="py-line"><tt class="py-docstring">        @param identifier: The name of the Python identifier that</tt> </tt>
+<a name="L466"></a><tt class="py-lineno">466</tt>  <tt class="py-line"><tt class="py-docstring">            should be linked to.</tt> </tt>
+<a name="L467"></a><tt class="py-lineno">467</tt>  <tt class="py-line"><tt class="py-docstring">        @type label: C{string} or C{None}</tt> </tt>
+<a name="L468"></a><tt class="py-lineno">468</tt>  <tt class="py-line"><tt class="py-docstring">        @param label: The label that should be used for the identifier,</tt> </tt>
+<a name="L469"></a><tt class="py-lineno">469</tt>  <tt class="py-line"><tt class="py-docstring">            if it's different from the name of the identifier.</tt> </tt>
+<a name="L470"></a><tt class="py-lineno">470</tt>  <tt class="py-line"><tt class="py-docstring">        @rtype: C{string}</tt> </tt>
+<a name="L471"></a><tt class="py-lineno">471</tt>  <tt class="py-line"><tt class="py-docstring">        @return: The translated crossreference link.</tt> </tt>
+<a name="L472"></a><tt class="py-lineno">472</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L473"></a><tt class="py-lineno">473</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">NotImplementedError</tt><tt class="py-op">,</tt> <tt class="py-string">'DocstringLinker.translate_xref()'</tt> </tt>
+</div></div><a name="L474"></a><tt class="py-lineno">474</tt>  <tt class="py-line"> </tt>
+<a name="L475"></a><tt class="py-lineno">475</tt>  <tt class="py-line"><tt class="py-comment">##################################################</tt> </tt>
+<a name="L476"></a><tt class="py-lineno">476</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## ParseError exceptions</tt> </tt>
+<a name="L477"></a><tt class="py-lineno">477</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">##################################################</tt> </tt>
+<a name="L478"></a><tt class="py-lineno">478</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="ParseError"></a><div id="ParseError-def"><a name="L479"></a><tt class="py-lineno">479</tt> <a class="py-toggle" href="#" id="ParseError-toggle" onclick="return toggle('ParseError');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="epydoc.markup.ParseError-class.html">ParseError</a><tt class="py-op">(</tt><tt class="py-base-class">Exception</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ParseError-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="ParseError-expanded"><a name="L480"></a><tt class="py-lineno">480</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L481"></a><tt class="py-lineno">481</tt>  <tt class="py-line"><tt class="py-docstring">    The base class for errors generated while parsing docstrings.</tt> </tt>
+<a name="L482"></a><tt class="py-lineno">482</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L483"></a><tt class="py-lineno">483</tt>  <tt class="py-line"><tt class="py-docstring">    @ivar _linenum: The line on which the error occured within the</tt> </tt>
+<a name="L484"></a><tt class="py-lineno">484</tt>  <tt class="py-line"><tt class="py-docstring">        docstring.  The linenum of the first line is 0.</tt> </tt>
+<a name="L485"></a><tt class="py-lineno">485</tt>  <tt class="py-line"><tt class="py-docstring">    @type _linenum: C{int}</tt> </tt>
+<a name="L486"></a><tt class="py-lineno">486</tt>  <tt class="py-line"><tt class="py-docstring">    @ivar _offset: The line number where the docstring begins.  This</tt> </tt>
+<a name="L487"></a><tt class="py-lineno">487</tt>  <tt class="py-line"><tt class="py-docstring">        offset is added to C{_linenum} when displaying the line number</tt> </tt>
+<a name="L488"></a><tt class="py-lineno">488</tt>  <tt class="py-line"><tt class="py-docstring">        of the error.  Default value: 1.</tt> </tt>
+<a name="L489"></a><tt class="py-lineno">489</tt>  <tt class="py-line"><tt class="py-docstring">    @type _offset: C{int}</tt> </tt>
+<a name="L490"></a><tt class="py-lineno">490</tt>  <tt class="py-line"><tt class="py-docstring">    @ivar _descr: A description of the error.</tt> </tt>
+<a name="L491"></a><tt class="py-lineno">491</tt>  <tt class="py-line"><tt class="py-docstring">    @type _descr: C{string}</tt> </tt>
+<a name="L492"></a><tt class="py-lineno">492</tt>  <tt class="py-line"><tt class="py-docstring">    @ivar _fatal: True if this is a fatal error.</tt> </tt>
+<a name="L493"></a><tt class="py-lineno">493</tt>  <tt class="py-line"><tt class="py-docstring">    @type _fatal: C{boolean}</tt> </tt>
+<a name="L494"></a><tt class="py-lineno">494</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="ParseError.__init__"></a><div id="ParseError.__init__-def"><a name="L495"></a><tt class="py-lineno">495</tt> <a class="py-toggle" href="#" id="ParseError.__init__-toggle" onclick="return toggle('ParseError.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.ParseError-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">descr</tt><tt cl [...]
+</div><div id="ParseError.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ParseError.__init__-expanded"><a name="L496"></a><tt class="py-lineno">496</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L497"></a><tt class="py-lineno">497</tt>  <tt class="py-line"><tt class="py-docstring">        @type descr: C{string}</tt> </tt>
+<a name="L498"></a><tt class="py-lineno">498</tt>  <tt class="py-line"><tt class="py-docstring">        @param descr: A description of the error.</tt> </tt>
+<a name="L499"></a><tt class="py-lineno">499</tt>  <tt class="py-line"><tt class="py-docstring">        @type linenum: C{int}</tt> </tt>
+<a name="L500"></a><tt class="py-lineno">500</tt>  <tt class="py-line"><tt class="py-docstring">        @param linenum: The line on which the error occured within</tt> </tt>
+<a name="L501"></a><tt class="py-lineno">501</tt>  <tt class="py-line"><tt class="py-docstring">            the docstring.  The linenum of the first line is 0.</tt> </tt>
+<a name="L502"></a><tt class="py-lineno">502</tt>  <tt class="py-line"><tt class="py-docstring">        @type is_fatal: C{boolean}</tt> </tt>
+<a name="L503"></a><tt class="py-lineno">503</tt>  <tt class="py-line"><tt class="py-docstring">        @param is_fatal: True if this is a fatal error.</tt> </tt>
+<a name="L504"></a><tt class="py-lineno">504</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L505"></a><tt class="py-lineno">505</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-104" class="py-name" targets="Method epydoc.docwriter.plaintext.PlaintextWriter._descr()=epydoc.docwriter.plaintext.PlaintextWriter-class.html#_descr"><a title="epydoc.docwriter.plaintext.PlaintextWriter._descr" class="py-name" href="#" onclick="return doclink('link-104', '_descr', 'link-104');">_descr</a></tt> <tt class="py-op">=</tt> <tt id="l [...]
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-105', 'descr', 'link-105');">descr</a></tt> </tt>
+<a name="L506"></a><tt class="py-lineno">506</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_linenum</tt> <tt class="py-op">=</tt> <tt id="link-106" class="py-name" targets="Method epydoc.markup.ParseError.linenum()=epydoc.markup.ParseError-class.html#linenum"><a title="epydoc.markup.ParseError.linenum" class="py-name" href="#" onclick="return doclink('link-106', 'linenum', 'link-106');">linenum</a></tt> </tt>
+<a name="L507"></a><tt class="py-lineno">507</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fatal</tt> <tt class="py-op">=</tt> <tt id="link-107" class="py-name"><a title="epydoc.markup.ParseError.is_fatal" class="py-name" href="#" onclick="return doclink('link-107', 'is_fatal', 'link-69');">is_fatal</a></tt> </tt>
+<a name="L508"></a><tt class="py-lineno">508</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_offset</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+</div><a name="L509"></a><tt class="py-lineno">509</tt>  <tt class="py-line">                  </tt>
+<a name="ParseError.is_fatal"></a><div id="ParseError.is_fatal-def"><a name="L510"></a><tt class="py-lineno">510</tt> <a class="py-toggle" href="#" id="ParseError.is_fatal-toggle" onclick="return toggle('ParseError.is_fatal');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.ParseError-class.html#is_fatal">is_fatal</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ParseError.is_fatal-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ParseError.is_fatal-expanded"><a name="L511"></a><tt class="py-lineno">511</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L512"></a><tt class="py-lineno">512</tt>  <tt class="py-line"><tt class="py-docstring">        @return: true if this is a fatal error.  If an error is fatal,</tt> </tt>
+<a name="L513"></a><tt class="py-lineno">513</tt>  <tt class="py-line"><tt class="py-docstring">            then epydoc should ignore the output of the parser, and</tt> </tt>
+<a name="L514"></a><tt class="py-lineno">514</tt>  <tt class="py-line"><tt class="py-docstring">            parse the docstring as plaintext.</tt> </tt>
+<a name="L515"></a><tt class="py-lineno">515</tt>  <tt class="py-line"><tt class="py-docstring">        @rtype: C{boolean}</tt> </tt>
+<a name="L516"></a><tt class="py-lineno">516</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L517"></a><tt class="py-lineno">517</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fatal</tt> </tt>
+</div><a name="L518"></a><tt class="py-lineno">518</tt>  <tt class="py-line"> </tt>
+<a name="ParseError.linenum"></a><div id="ParseError.linenum-def"><a name="L519"></a><tt class="py-lineno">519</tt> <a class="py-toggle" href="#" id="ParseError.linenum-toggle" onclick="return toggle('ParseError.linenum');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.ParseError-class.html#linenum">linenum</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ParseError.linenum-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ParseError.linenum-expanded"><a name="L520"></a><tt class="py-lineno">520</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L521"></a><tt class="py-lineno">521</tt>  <tt class="py-line"><tt class="py-docstring">        @return: The line number on which the error occured (including</tt> </tt>
+<a name="L522"></a><tt class="py-lineno">522</tt>  <tt class="py-line"><tt class="py-docstring">        any offset).  If the line number is unknown, then return</tt> </tt>
+<a name="L523"></a><tt class="py-lineno">523</tt>  <tt class="py-line"><tt class="py-docstring">        C{None}.</tt> </tt>
+<a name="L524"></a><tt class="py-lineno">524</tt>  <tt class="py-line"><tt class="py-docstring">        @rtype: C{int} or C{None}</tt> </tt>
+<a name="L525"></a><tt class="py-lineno">525</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L526"></a><tt class="py-lineno">526</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_linenum</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
+<a name="L527"></a><tt class="py-lineno">527</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_offset</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_linenum</tt> </tt>
+</div><a name="L528"></a><tt class="py-lineno">528</tt>  <tt class="py-line"> </tt>
+<a name="ParseError.set_linenum_offset"></a><div id="ParseError.set_linenum_offset-def"><a name="L529"></a><tt class="py-lineno">529</tt> <a class="py-toggle" href="#" id="ParseError.set_linenum_offset-toggle" onclick="return toggle('ParseError.set_linenum_offset');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.ParseError-class.html#set_linenum_offset">set_linenum_offset</a><tt class="py-op">(</tt><tt class="py-param">self</tt><t [...]
+</div><div id="ParseError.set_linenum_offset-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ParseError.set_linenum_offset-expanded"><a name="L530"></a><tt class="py-lineno">530</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L531"></a><tt class="py-lineno">531</tt>  <tt class="py-line"><tt class="py-docstring">        Set the line number offset for this error.  This offset is the</tt> </tt>
+<a name="L532"></a><tt class="py-lineno">532</tt>  <tt class="py-line"><tt class="py-docstring">        line number where the docstring begins.  This offset is added</tt> </tt>
+<a name="L533"></a><tt class="py-lineno">533</tt>  <tt class="py-line"><tt class="py-docstring">        to C{_linenum} when displaying the line number of the error.</tt> </tt>
+<a name="L534"></a><tt class="py-lineno">534</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L535"></a><tt class="py-lineno">535</tt>  <tt class="py-line"><tt class="py-docstring">        @param offset: The new line number offset.</tt> </tt>
+<a name="L536"></a><tt class="py-lineno">536</tt>  <tt class="py-line"><tt class="py-docstring">        @type offset: C{int}</tt> </tt>
+<a name="L537"></a><tt class="py-lineno">537</tt>  <tt class="py-line"><tt class="py-docstring">        @rtype: C{None}</tt> </tt>
+<a name="L538"></a><tt class="py-lineno">538</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L539"></a><tt class="py-lineno">539</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_offset</tt> <tt class="py-op">=</tt> <tt class="py-name">offset</tt> </tt>
+</div><a name="L540"></a><tt class="py-lineno">540</tt>  <tt class="py-line"> </tt>
+<a name="ParseError.descr"></a><div id="ParseError.descr-def"><a name="L541"></a><tt class="py-lineno">541</tt> <a class="py-toggle" href="#" id="ParseError.descr-toggle" onclick="return toggle('ParseError.descr');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.ParseError-class.html#descr">descr</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ParseError.descr-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ParseError.descr-expanded"><a name="L542"></a><tt class="py-lineno">542</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-108" class="py-name"><a title="epydoc.docwriter.plaintext.PlaintextWriter._descr" class="py-name" href="#" onclick="return doclink('link-108', '_descr', 'link-104');">_descr</a> [...]
+</div><a name="L543"></a><tt class="py-lineno">543</tt>  <tt class="py-line">     </tt>
+<a name="ParseError.__str__"></a><div id="ParseError.__str__-def"><a name="L544"></a><tt class="py-lineno">544</tt> <a class="py-toggle" href="#" id="ParseError.__str__-toggle" onclick="return toggle('ParseError.__str__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.ParseError-class.html#__str__">__str__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ParseError.__str__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ParseError.__str__-expanded"><a name="L545"></a><tt class="py-lineno">545</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L546"></a><tt class="py-lineno">546</tt>  <tt class="py-line"><tt class="py-docstring">        Return a string representation of this C{ParseError}.  This</tt> </tt>
+<a name="L547"></a><tt class="py-lineno">547</tt>  <tt class="py-line"><tt class="py-docstring">        multi-line string contains a description of the error, and</tt> </tt>
+<a name="L548"></a><tt class="py-lineno">548</tt>  <tt class="py-line"><tt class="py-docstring">        specifies where it occured.</tt> </tt>
+<a name="L549"></a><tt class="py-lineno">549</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt>
+<a name="L550"></a><tt class="py-lineno">550</tt>  <tt class="py-line"><tt class="py-docstring">        @return: the informal representation of this C{ParseError}.</tt> </tt>
+<a name="L551"></a><tt class="py-lineno">551</tt>  <tt class="py-line"><tt class="py-docstring">        @rtype: C{string}</tt> </tt>
+<a name="L552"></a><tt class="py-lineno">552</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L553"></a><tt class="py-lineno">553</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_linenum</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L554"></a><tt class="py-lineno">554</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">'Line %s: %s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_linenum</tt><tt class="py-op">+</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_offset</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="lin [...]
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-109', 'descr', 'link-105');">descr</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L555"></a><tt class="py-lineno">555</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L556"></a><tt class="py-lineno">556</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-110" class="py-name"><a title="epydoc.apidoc.APIDoc.descr
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-110', 'descr', 'link-105');">descr</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L557"></a><tt class="py-lineno">557</tt>  <tt class="py-line">     </tt>
+<a name="ParseError.__repr__"></a><div id="ParseError.__repr__-def"><a name="L558"></a><tt class="py-lineno">558</tt> <a class="py-toggle" href="#" id="ParseError.__repr__-toggle" onclick="return toggle('ParseError.__repr__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.ParseError-class.html#__repr__">__repr__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ParseError.__repr__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ParseError.__repr__-expanded"><a name="L559"></a><tt class="py-lineno">559</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L560"></a><tt class="py-lineno">560</tt>  <tt class="py-line"><tt class="py-docstring">        Return the formal representation of this C{ParseError}.</tt> </tt>
+<a name="L561"></a><tt class="py-lineno">561</tt>  <tt class="py-line"><tt class="py-docstring">        C{ParseError}s have formal representations of the form::</tt> </tt>
+<a name="L562"></a><tt class="py-lineno">562</tt>  <tt class="py-line"><tt class="py-docstring">           <ParseError on line 12></tt> </tt>
+<a name="L563"></a><tt class="py-lineno">563</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L564"></a><tt class="py-lineno">564</tt>  <tt class="py-line"><tt class="py-docstring">        @return: the formal representation of this C{ParseError}.</tt> </tt>
+<a name="L565"></a><tt class="py-lineno">565</tt>  <tt class="py-line"><tt class="py-docstring">        @rtype: C{string}</tt> </tt>
+<a name="L566"></a><tt class="py-lineno">566</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L567"></a><tt class="py-lineno">567</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_linenum</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L568"></a><tt class="py-lineno">568</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">'<ParseError on line %d'</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_offset</tt> </tt>
+<a name="L569"></a><tt class="py-lineno">569</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L570"></a><tt class="py-lineno">570</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">'<ParseError on line %d>'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_linenum</tt><tt class="py-op">+</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_offset</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L571"></a><tt class="py-lineno">571</tt>  <tt class="py-line"> </tt>
+<a name="ParseError.__cmp__"></a><div id="ParseError.__cmp__-def"><a name="L572"></a><tt class="py-lineno">572</tt> <a class="py-toggle" href="#" id="ParseError.__cmp__-toggle" onclick="return toggle('ParseError.__cmp__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.ParseError-class.html#__cmp__">__cmp__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">other</tt><tt class="p [...]
+</div><div id="ParseError.__cmp__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ParseError.__cmp__-expanded"><a name="L573"></a><tt class="py-lineno">573</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L574"></a><tt class="py-lineno">574</tt>  <tt class="py-line"><tt class="py-docstring">        Compare two C{ParseError}s, based on their line number.</tt> </tt>
+<a name="L575"></a><tt class="py-lineno">575</tt>  <tt class="py-line"><tt class="py-docstring">          - Return -1 if C{self.linenum<other.linenum}</tt> </tt>
+<a name="L576"></a><tt class="py-lineno">576</tt>  <tt class="py-line"><tt class="py-docstring">          - Return +1 if C{self.linenum>other.linenum}</tt> </tt>
+<a name="L577"></a><tt class="py-lineno">577</tt>  <tt class="py-line"><tt class="py-docstring">          - Return 0 if C{self.linenum==other.linenum}.</tt> </tt>
+<a name="L578"></a><tt class="py-lineno">578</tt>  <tt class="py-line"><tt class="py-docstring">        The return value is undefined if C{other} is not a</tt> </tt>
+<a name="L579"></a><tt class="py-lineno">579</tt>  <tt class="py-line"><tt class="py-docstring">        ParseError.</tt> </tt>
+<a name="L580"></a><tt class="py-lineno">580</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L581"></a><tt class="py-lineno">581</tt>  <tt class="py-line"><tt class="py-docstring">        @rtype: C{int}</tt> </tt>
+<a name="L582"></a><tt class="py-lineno">582</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L583"></a><tt class="py-lineno">583</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">other</tt><tt class="py-op">,</tt> <tt id="link-111" class="py-name" targets="Class epydoc.docparser.ParseError=epydoc.docparser.ParseError-class.html,Class epydoc.markup.ParseError=epydoc.markup.ParseError-class.html"><a title="epydoc.docparser.ParseError
+epydoc.markup.ParseError" class="py-name" href="#" onclick="return doclink('link-111', 'ParseError', 'link-111');">ParseError</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-op">-</tt><tt class="py-number">1000</tt> </tt>
+<a name="L584"></a><tt class="py-lineno">584</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">cmp</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_linenum</tt><tt class="py-op">+</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_offset</tt><tt class="py-op">,</tt> </tt>
+<a name="L585"></a><tt class="py-lineno">585</tt>  <tt class="py-line">                   <tt class="py-name">other</tt><tt class="py-op">.</tt><tt class="py-name">_linenum</tt><tt class="py-op">+</tt><tt class="py-name">other</tt><tt class="py-op">.</tt><tt class="py-name">_offset</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L586"></a><tt class="py-lineno">586</tt>  <tt class="py-line"> </tt>
+<a name="L587"></a><tt class="py-lineno">587</tt>  <tt class="py-line"><tt class="py-comment">##################################################</tt> </tt>
+<a name="L588"></a><tt class="py-lineno">588</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## Misc helpers</tt> </tt>
+<a name="L589"></a><tt class="py-lineno">589</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">##################################################</tt> </tt>
+<a name="L590"></a><tt class="py-lineno">590</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># These are used by multiple markup parsers</tt> </tt>
+<a name="L591"></a><tt class="py-lineno">591</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="parse_type_of"></a><div id="parse_type_of-def"><a name="L592"></a><tt class="py-lineno">592</tt> <a class="py-toggle" href="#" id="parse_type_of-toggle" onclick="return toggle('parse_type_of');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup-module.html#parse_type_of">parse_type_of</a><tt class="py-op">(</tt><tt class="py-param">obj</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="parse_type_of-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="parse_type_of-expanded"><a name="L593"></a><tt class="py-lineno">593</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L594"></a><tt class="py-lineno">594</tt>  <tt class="py-line"><tt class="py-docstring">    @return: A C{ParsedDocstring} that encodes the type of the given</tt> </tt>
+<a name="L595"></a><tt class="py-lineno">595</tt>  <tt class="py-line"><tt class="py-docstring">    object.</tt> </tt>
+<a name="L596"></a><tt class="py-lineno">596</tt>  <tt class="py-line"><tt class="py-docstring">    @rtype: L{ParsedDocstring}</tt> </tt>
+<a name="L597"></a><tt class="py-lineno">597</tt>  <tt class="py-line"><tt class="py-docstring">    @param obj: The object whose type should be returned as DOM document.</tt> </tt>
+<a name="L598"></a><tt class="py-lineno">598</tt>  <tt class="py-line"><tt class="py-docstring">    @type obj: any</tt> </tt>
+<a name="L599"></a><tt class="py-lineno">599</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L600"></a><tt class="py-lineno">600</tt>  <tt class="py-line">    <tt class="py-comment"># This is a bit hackish; oh well. :)</tt> </tt>
+<a name="L601"></a><tt class="py-lineno">601</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">from</tt> <tt id="link-112" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-112', 'epydoc', 'link-0');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-113" class="py-name"><a title="epydoc.markup
+epydoc.markup.doctest.DoctestColorizer.markup
+epydoc.markup.doctest.HTMLDoctestColorizer.markup
+epydoc.markup.doctest.LaTeXDoctestColorizer.markup
+epydoc.markup.doctest.XMLDoctestColorizer.markup" class="py-name" href="#" onclick="return doclink('link-113', 'markup', 'link-13');">markup</a></tt><tt class="py-op">.</tt><tt id="link-114" class="py-name" targets="Module epydoc.markup.epytext=epydoc.markup.epytext-module.html"><a title="epydoc.markup.epytext" class="py-name" href="#" onclick="return doclink('link-114', 'epytext', 'link-114');">epytext</a></tt> <tt class="py-keyword">import</tt> <tt id="link-115" class="py-name" targets [...]
+<a name="L602"></a><tt class="py-lineno">602</tt>  <tt class="py-line">    <tt class="py-keyword">from</tt> <tt class="py-name">xml</tt><tt class="py-op">.</tt><tt class="py-name">dom</tt><tt class="py-op">.</tt><tt class="py-name">minidom</tt> <tt class="py-keyword">import</tt> <tt class="py-name">Document</tt> </tt>
+<a name="L603"></a><tt class="py-lineno">603</tt>  <tt class="py-line">    <tt class="py-name">doc</tt> <tt class="py-op">=</tt> <tt class="py-name">Document</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L604"></a><tt class="py-lineno">604</tt>  <tt class="py-line">    <tt id="link-116" class="py-name"><a title="epydoc.markup.epytext" class="py-name" href="#" onclick="return doclink('link-116', 'epytext', 'link-114');">epytext</a></tt> <tt class="py-op">=</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt class="py-name">createElement</tt><tt class="py-op">(</tt><tt class="py-string">'epytext'</tt><tt class="py-op">)</tt> </tt>
+<a name="L605"></a><tt class="py-lineno">605</tt>  <tt class="py-line">    <tt class="py-name">para</tt> <tt class="py-op">=</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt class="py-name">createElement</tt><tt class="py-op">(</tt><tt class="py-string">'para'</tt><tt class="py-op">)</tt> </tt>
+<a name="L606"></a><tt class="py-lineno">606</tt>  <tt class="py-line">    <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt class="py-name">appendChild</tt><tt class="py-op">(</tt><tt id="link-117" class="py-name"><a title="epydoc.markup.epytext" class="py-name" href="#" onclick="return doclink('link-117', 'epytext', 'link-114');">epytext</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L607"></a><tt class="py-lineno">607</tt>  <tt class="py-line">    <tt id="link-118" class="py-name"><a title="epydoc.markup.epytext" class="py-name" href="#" onclick="return doclink('link-118', 'epytext', 'link-114');">epytext</a></tt><tt class="py-op">.</tt><tt class="py-name">appendChild</tt><tt class="py-op">(</tt><tt class="py-name">para</tt><tt class="py-op">)</tt> </tt>
+<a name="L608"></a><tt class="py-lineno">608</tt>  <tt class="py-line">     </tt>
+<a name="L609"></a><tt class="py-lineno">609</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">obj</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt class="py-name">types</tt><tt class="py-op">.</tt><tt class="py-name">InstanceType</tt><tt class="py-op">:</tt> </tt>
+<a name="L610"></a><tt class="py-lineno">610</tt>  <tt class="py-line">        <tt id="link-119" class="py-name" targets="Method epydoc.docwriter.dotgraph.DotGraph.link()=epydoc.docwriter.dotgraph.DotGraph-class.html#link"><a title="epydoc.docwriter.dotgraph.DotGraph.link" class="py-name" href="#" onclick="return doclink('link-119', 'link', 'link-119');">link</a></tt> <tt class="py-op">=</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt class="py-name">createElement</tt><tt cl [...]
+<a name="L611"></a><tt class="py-lineno">611</tt>  <tt class="py-line">        <tt id="link-120" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-120', 'name', 'link-11');">name</a></tt> <tt class="py-op">=</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt class="py-name">createElement</tt><tt class="py-op">(</tt><tt class="py-string">'name'</tt><tt class="py-op">)</tt> </tt>
+<a name="L612"></a><tt class="py-lineno">612</tt>  <tt class="py-line">        <tt class="py-name">target</tt> <tt class="py-op">=</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt class="py-name">createElement</tt><tt class="py-op">(</tt><tt class="py-string">'target'</tt><tt class="py-op">)</tt> </tt>
+<a name="L613"></a><tt class="py-lineno">613</tt>  <tt class="py-line">        <tt class="py-name">para</tt><tt class="py-op">.</tt><tt class="py-name">appendChild</tt><tt class="py-op">(</tt><tt id="link-121" class="py-name"><a title="epydoc.docwriter.dotgraph.DotGraph.link" class="py-name" href="#" onclick="return doclink('link-121', 'link', 'link-119');">link</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L614"></a><tt class="py-lineno">614</tt>  <tt class="py-line">        <tt id="link-122" class="py-name"><a title="epydoc.docwriter.dotgraph.DotGraph.link" class="py-name" href="#" onclick="return doclink('link-122', 'link', 'link-119');">link</a></tt><tt class="py-op">.</tt><tt class="py-name">appendChild</tt><tt class="py-op">(</tt><tt id="link-123" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-123', 'name', 'li [...]
+<a name="L615"></a><tt class="py-lineno">615</tt>  <tt class="py-line">        <tt id="link-124" class="py-name"><a title="epydoc.docwriter.dotgraph.DotGraph.link" class="py-name" href="#" onclick="return doclink('link-124', 'link', 'link-119');">link</a></tt><tt class="py-op">.</tt><tt class="py-name">appendChild</tt><tt class="py-op">(</tt><tt class="py-name">target</tt><tt class="py-op">)</tt> </tt>
+<a name="L616"></a><tt class="py-lineno">616</tt>  <tt class="py-line">        <tt id="link-125" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-125', 'name', 'link-11');">name</a></tt><tt class="py-op">.</tt><tt class="py-name">appendChild</tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">.</tt><tt class="py-name">createTextNode</tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-o [...]
+<a name="L617"></a><tt class="py-lineno">617</tt>  <tt class="py-line">        <tt class="py-name">target</tt><tt class="py-op">.</tt><tt class="py-name">appendChild</tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">.</tt><tt class="py-name">createTextNode</tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">obj</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">)</tt><tt class="py-op">)</ [...]
+<a name="L618"></a><tt class="py-lineno">618</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L619"></a><tt class="py-lineno">619</tt>  <tt class="py-line">        <tt class="py-name">code</tt> <tt class="py-op">=</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt class="py-name">createElement</tt><tt class="py-op">(</tt><tt class="py-string">'code'</tt><tt class="py-op">)</tt> </tt>
+<a name="L620"></a><tt class="py-lineno">620</tt>  <tt class="py-line">        <tt class="py-name">para</tt><tt class="py-op">.</tt><tt class="py-name">appendChild</tt><tt class="py-op">(</tt><tt class="py-name">code</tt><tt class="py-op">)</tt> </tt>
+<a name="L621"></a><tt class="py-lineno">621</tt>  <tt class="py-line">        <tt class="py-name">code</tt><tt class="py-op">.</tt><tt class="py-name">appendChild</tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">.</tt><tt class="py-name">createTextNode</tt><tt class="py-op">(</tt><tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">obj</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt><tt class="py-op">)</tt [...]
+<a name="L622"></a><tt class="py-lineno">622</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-126" class="py-name"><a title="epydoc.markup.epytext.ParsedEpytextDocstring" class="py-name" href="#" onclick="return doclink('link-126', 'ParsedEpytextDocstring', 'link-115');">ParsedEpytextDocstring</a></tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L623"></a><tt class="py-lineno">623</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:10:00 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.markup.ConcatenatedDocstring-class.html b/doc/api/epydoc.markup.ConcatenatedDocstring-class.html
new file mode 100644
index 0000000..eaab5e8
--- /dev/null
+++ b/doc/api/epydoc.markup.ConcatenatedDocstring-class.html
@@ -0,0 +1,304 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.markup.ConcatenatedDocstring</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.markup-module.html">Package markup</a> ::
+        Class ConcatenatedDocstring
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.markup.ConcatenatedDocstring-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class ConcatenatedDocstring</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.markup-pysrc.html#ConcatenatedDocstring">source code</a></span></p>
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__init__"></a><span class="summary-sig-name">__init__</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">*parsed_docstrings</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup-pysrc.html#ConcatenatedDocstring.__init__">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for___init___30-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for___init___30-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for___init___30" name="call_graph_for___init___30">
+<area shape="rect" href="epydoc.docstringparser-module.html#process_cvar_field" title="docstringparser.process_cvar_field()" alt="" coords="7,6,300,38" />
+<area shape="rect" href="epydoc.markup.ConcatenatedDocstring-class.html#__init__" title="__init__()" alt="" coords="351,62,447,94" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_ivar_field" title="docstringparser.process_ivar_field()" alt="" coords="8,62,299,94" />
+<area shape="rect" href="epydoc.markup.ParsedDocstring-class.html#concatenate" title="ParsedDocstring.concatenate()" alt="" coords="28,118,279,150" />
+</map>
+  <img src="call_graph_for___init___30.gif" alt='' usemap="#call_graph_for___init___30" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="split_fields"></a><span class="summary-sig-name">split_fields</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">errors</span>=<span class="summary-sig-default">None</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup-pysrc.html#ConcatenatedDocstring.split_fields">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="summary"></a><span class="summary-sig-name">summary</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup-pysrc.html#ConcatenatedDocstring.summary">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="to_html"></a><span class="summary-sig-name">to_html</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">docstring_linker</span>,
+        <span class="summary-sig-arg">**options</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup-pysrc.html#ConcatenatedDocstring.to_html">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_to_html_2-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_to_html_2-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_to_html_2" name="call_graph_for_to_html_2">
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#docstring_to_html" title="docwriter.html.HTMLWriter.docstring_to_html()" alt="" coords="7,34,396,66" />
+<area shape="rect" href="epydoc.markup.ConcatenatedDocstring-class.html#to_html" title="to_html()" alt="" coords="447,34,537,66" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#to_html" title="epytext.ParsedEpytextDocstring.to_html()" alt="" coords="603,6,939,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html#to_html" title="restructuredtext.ParsedRstDocstring.to_html()" alt="" coords="588,62,953,94" />
+</map>
+  <img src="call_graph_for_to_html_2.gif" alt='' usemap="#call_graph_for_to_html_2" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="to_latex"></a><span class="summary-sig-name">to_latex</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">docstring_linker</span>,
+        <span class="summary-sig-arg">**options</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup-pysrc.html#ConcatenatedDocstring.to_latex">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="to_plaintext"></a><span class="summary-sig-name">to_plaintext</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">docstring_linker</span>,
+        <span class="summary-sig-arg">**options</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup-pysrc.html#ConcatenatedDocstring.to_plaintext">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_to_plaintext_2-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_to_plaintext_2-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_to_plaintext_2" name="call_graph_for_to_plaintext_2">
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_summary" title="docwriter.dotgraph.DotGraphUmlClassNode._summary()" alt="" coords="7,6,458,38" />
+<area shape="rect" href="epydoc.markup.ConcatenatedDocstring-class.html#to_plaintext" title="to_plaintext()" alt="" coords="507,6,630,38" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#to_plaintext" title="epytext.ParsedEpytextDocstring.to_plaintext()" alt="" coords="678,6,1046,38" />
+</map>
+  <img src="call_graph_for_to_plaintext_2.gif" alt='' usemap="#call_graph_for_to_plaintext_2" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="index_terms"></a><span class="summary-sig-name">index_terms</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup-pysrc.html#ConcatenatedDocstring.index_terms">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_index_terms-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_index_terms-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_index_terms" name="call_graph_for_index_terms">
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_terms_from_docstring" title="docwriter.html.HTMLWriter._terms_from_docstring()" alt="" coords="6,6,435,38" />
+<area shape="rect" href="epydoc.markup.ConcatenatedDocstring-class.html#index_terms" title="index_terms()" alt="" coords="483,6,611,38" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#index_terms" title="epytext.ParsedEpytextDocstring.index_terms()" alt="" coords="659,6,1030,38" />
+</map>
+  <img src="call_graph_for_index_terms.gif" alt='' usemap="#call_graph_for_index_terms" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:08:23 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.markup.DocstringLinker-class.html b/doc/api/epydoc.markup.DocstringLinker-class.html
new file mode 100644
index 0000000..e57da97
--- /dev/null
+++ b/doc/api/epydoc.markup.DocstringLinker-class.html
@@ -0,0 +1,277 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.markup.DocstringLinker</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.markup-module.html">Package markup</a> ::
+        Class DocstringLinker
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.markup.DocstringLinker-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class DocstringLinker</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.markup-pysrc.html#DocstringLinker">source code</a></span></p>
+<center>
+  <div class="private"><center>  <map id="uml_class_diagram_for_epydoc_m" name="uml_class_diagram_for_epydoc_m">
+<area shape="rect" href="epydoc.docwriter.latex.LatexWriter._LatexDocstringLinker-class.html" title="epydoc.docwriter.latex.LatexWriter._LatexDocstringLinker" alt="" coords="5,99,336,136" />
+<area shape="rect" href="epydoc.docwriter.html._HTMLDocstringLinker-class.html" title="epydoc.docwriter.html._HTMLDocstringLinker" alt="" coords="365,99,624,136" />
+<area shape="rect" href="epydoc.markup.DocstringLinker-class.html#translate_identifier_xref" title="Translate a crossreference link to a Python identifier to the appropriate  output format." alt="" coords="179,36,485,55" />
+<area shape="rect" href="epydoc.markup.DocstringLinker-class.html#translate_indexterm" title="Translate an index term to the appropriate output format." alt="" coords="179,55,485,73" />
+<area shape="rect" href="epydoc.markup.DocstringLinker-class.html" title="A translator for crossreference links into and out of a ParsedDocstring." alt="" coords="167,5,497,80" />
+</map>
+  <img src="uml_class_diagram_for_epydoc_m.gif" alt='' usemap="#uml_class_diagram_for_epydoc_m" ismap="ismap" class="graph-without-title" />
+</center></div>
+  <div class="public" style="display:none"><center>  <map id="uml_class_diagram_for_epydoc_m_2" name="uml_class_diagram_for_epydoc_m_2">
+<area shape="rect" href="epydoc.markup.DocstringLinker-class.html#translate_identifier_xref" title="Translate a crossreference link to a Python identifier to the appropriate  output format." alt="" coords="17,36,324,55" />
+<area shape="rect" href="epydoc.markup.DocstringLinker-class.html#translate_indexterm" title="Translate an index term to the appropriate output format." alt="" coords="17,55,324,73" />
+<area shape="rect" href="epydoc.markup.DocstringLinker-class.html" title="A translator for crossreference links into and out of a ParsedDocstring." alt="" coords="5,5,336,80" />
+</map>
+  <img src="uml_class_diagram_for_epydoc_m_2.gif" alt='' usemap="#uml_class_diagram_for_epydoc_m_2" ismap="ismap" class="graph-without-title" />
+</center></div>
+</center>
+<hr />
+<p>A translator for crossreference links into and out of a 
+  <code>ParsedDocstring</code>.  <code>DocstringLinker</code> is used by 
+  <code>ParsedDocstring</code> to convert these crossreference links into 
+  appropriate output formats.  For example, 
+  <code>DocstringLinker.to_html</code> expects a 
+  <code>DocstringLinker</code> that converts crossreference links to 
+  HTML.</p>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>string</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.DocstringLinker-class.html#translate_identifier_xref" class="summary-sig-name">translate_identifier_xref</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">identifier</span>,
+        <span class="summary-sig-arg">label</span>=<span class="summary-sig-default">None</span>)</span><br />
+      Translate a crossreference link to a Python identifier to the 
+      appropriate output format.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup-pysrc.html#DocstringLinker.translate_identifier_xref">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>string</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.DocstringLinker-class.html#translate_indexterm" class="summary-sig-name">translate_indexterm</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">indexterm</span>)</span><br />
+      Translate an index term to the appropriate output format.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup-pysrc.html#DocstringLinker.translate_indexterm">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Method Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-MethodDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="translate_identifier_xref"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">translate_identifier_xref</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">identifier</span>,
+        <span class="sig-arg">label</span>=<span class="sig-default">None</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup-pysrc.html#DocstringLinker.translate_identifier_xref">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Translate a crossreference link to a Python identifier to the 
+  appropriate output format.  The output will typically include a reference
+  or pointer to the crossreference target.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>identifier</code></strong> (<code>string</code>) - The name of the Python identifier that should be linked to.</li>
+        <li><strong class="pname"><code>label</code></strong> (<code>string</code> or <code>None</code>) - The label that should be used for the identifier, if it's 
+          different from the name of the identifier.</li>
+    </ul></dd>
+    <dt>Returns: <code>string</code></dt>
+        <dd>The translated crossreference link.</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="translate_indexterm"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">translate_indexterm</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">indexterm</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup-pysrc.html#DocstringLinker.translate_indexterm">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Translate an index term to the appropriate output format.  The output 
+  will typically include a crossreference anchor.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>indexterm</code></strong> (<a href="epydoc.markup.ParsedDocstring-class.html" 
+          class="link">ParsedDocstring</a>) - The index term to translate.</li>
+    </ul></dd>
+    <dt>Returns: <code>string</code></dt>
+        <dd>The translated index term.</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:08:24 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.markup.Field-class.html b/doc/api/epydoc.markup.Field-class.html
new file mode 100644
index 0000000..a2e52b7
--- /dev/null
+++ b/doc/api/epydoc.markup.Field-class.html
@@ -0,0 +1,410 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.markup.Field</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.markup-module.html">Package markup</a> ::
+        Class Field
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.markup.Field-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Field</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.markup-pysrc.html#Field">source code</a></span></p>
+<p>The contents of a docstring's field.  Docstring fields are used to 
+  describe specific aspects of an object, such as a parameter of a function
+  or the author of a module.  Each field consists of a tag, an optional 
+  argument, and a body:</p>
+  <ul>
+    <li>
+      The tag specifies the type of information that the field encodes.
+    </li>
+    <li>
+      The argument specifies the object that the field describes. The 
+      argument may be <code>None</code> or a <code>string</code>.
+    </li>
+    <li>
+      The body contains the field's information.
+    </li>
+  </ul>
+  <p>Tags are automatically downcased and stripped; and arguments are 
+  automatically stripped.</p>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__init__"></a><span class="summary-sig-name">__init__</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">tag</span>,
+        <span class="summary-sig-arg">arg</span>,
+        <span class="summary-sig-arg">body</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup-pysrc.html#Field.__init__">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for___init___31-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for___init___31-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for___init___31" name="call_graph_for___init___31">
+<area shape="rect" href="epydoc.markup.Field-class.html#__init__" title="__init__()" alt="" coords="463,34,559,66" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#split_fields" title="epytext.ParsedEpytextDocstring.split_fields()" alt="" coords="28,6,391,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html#_add_field" title="restructuredtext._SplitFieldsTranslator._add_field()" alt="" coords="7,62,412,94" />
+</map>
+  <img src="call_graph_for___init___31.gif" alt='' usemap="#call_graph_for___init___31" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>string</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.Field-class.html#tag" class="summary-sig-name">tag</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Returns:
+      This field's tag.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup-pysrc.html#Field.tag">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_tag-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_tag-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_tag" name="call_graph_for_tag">
+<area shape="rect" href="epydoc.docstringparser-module.html#parse_docstring" title="docstringparser.parse_docstring()" alt="" coords="5,6,277,38" />
+<area shape="rect" href="epydoc.markup.Field-class.html#tag" title="tag()" alt="" coords="327,34,383,66" />
+<area shape="rect" href="epydoc.docstringparser-module.html#split_init_fields" title="docstringparser.split_init_fields()" alt="" coords="7,62,276,94" />
+</map>
+  <img src="call_graph_for_tag.gif" alt='' usemap="#call_graph_for_tag" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>string</code> or <code>None</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.Field-class.html#arg" class="summary-sig-name">arg</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Returns:
+      This field's argument, or <code>None</code> if this field has no 
+      argument.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup-pysrc.html#Field.arg">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_arg-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_arg-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_arg" name="call_graph_for_arg">
+<area shape="rect" href="epydoc.docstringparser-module.html#parse_docstring" title="docstringparser.parse_docstring()" alt="" coords="5,6,277,38" />
+<area shape="rect" href="epydoc.markup.Field-class.html#arg" title="arg()" alt="" coords="325,34,384,66" />
+<area shape="rect" href="epydoc.docstringparser-module.html#split_init_fields" title="docstringparser.split_init_fields()" alt="" coords="7,62,276,94" />
+</map>
+  <img src="call_graph_for_arg.gif" alt='' usemap="#call_graph_for_arg" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><a href="epydoc.markup.ParsedDocstring-class.html" 
+      class="link">ParsedDocstring</a></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.Field-class.html#body" class="summary-sig-name">body</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Returns:
+      This field's body.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup-pysrc.html#Field.body">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_body-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_body-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_body" name="call_graph_for_body">
+<area shape="rect" href="epydoc.docstringparser-module.html#parse_docstring" title="docstringparser.parse_docstring()" alt="" coords="5,6,277,38" />
+<area shape="rect" href="epydoc.markup.Field-class.html#body" title="body()" alt="" coords="327,6,399,38" />
+</map>
+  <img src="call_graph_for_body.gif" alt='' usemap="#call_graph_for_body" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__repr__"></a><span class="summary-sig-name">__repr__</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup-pysrc.html#Field.__repr__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Method Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-MethodDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="tag"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">tag</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup-pysrc.html#Field.tag">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_tag-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_tag-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_tag" name="call_graph_for_tag">
+<area shape="rect" href="epydoc.docstringparser-module.html#parse_docstring" title="docstringparser.parse_docstring()" alt="" coords="5,6,277,38" />
+<area shape="rect" href="epydoc.markup.Field-class.html#tag" title="tag()" alt="" coords="327,34,383,66" />
+<area shape="rect" href="epydoc.docstringparser-module.html#split_init_fields" title="docstringparser.split_init_fields()" alt="" coords="7,62,276,94" />
+</map>
+  <img src="call_graph_for_tag.gif" alt='' usemap="#call_graph_for_tag" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  
+  <dl class="fields">
+    <dt>Returns: <code>string</code></dt>
+        <dd>This field's tag.</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="arg"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">arg</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup-pysrc.html#Field.arg">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_arg-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_arg-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_arg" name="call_graph_for_arg">
+<area shape="rect" href="epydoc.docstringparser-module.html#parse_docstring" title="docstringparser.parse_docstring()" alt="" coords="5,6,277,38" />
+<area shape="rect" href="epydoc.markup.Field-class.html#arg" title="arg()" alt="" coords="325,34,384,66" />
+<area shape="rect" href="epydoc.docstringparser-module.html#split_init_fields" title="docstringparser.split_init_fields()" alt="" coords="7,62,276,94" />
+</map>
+  <img src="call_graph_for_arg.gif" alt='' usemap="#call_graph_for_arg" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  
+  <dl class="fields">
+    <dt>Returns: <code>string</code> or <code>None</code></dt>
+        <dd>This field's argument, or <code>None</code> if this field has no 
+          argument.</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="body"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">body</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup-pysrc.html#Field.body">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_body-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_body-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_body" name="call_graph_for_body">
+<area shape="rect" href="epydoc.docstringparser-module.html#parse_docstring" title="docstringparser.parse_docstring()" alt="" coords="5,6,277,38" />
+<area shape="rect" href="epydoc.markup.Field-class.html#body" title="body()" alt="" coords="327,6,399,38" />
+</map>
+  <img src="call_graph_for_body.gif" alt='' usemap="#call_graph_for_body" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  
+  <dl class="fields">
+    <dt>Returns: <a href="epydoc.markup.ParsedDocstring-class.html" 
+      class="link">ParsedDocstring</a></dt>
+        <dd>This field's body.</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:08:25 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.markup.ParseError-class.html b/doc/api/epydoc.markup.ParseError-class.html
new file mode 100644
index 0000000..1473e35
--- /dev/null
+++ b/doc/api/epydoc.markup.ParseError-class.html
@@ -0,0 +1,616 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.markup.ParseError</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.markup-module.html">Package markup</a> ::
+        Class ParseError
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.markup.ParseError-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class ParseError</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.markup-pysrc.html#ParseError">source code</a></span></p>
+<center>
+<center>  <map id="uml_class_diagram_for_epydoc_m_3" name="uml_class_diagram_for_epydoc_m_3">
+<area shape="rect" href="epydoc.markup.epytext.ColorizingError-class.html" title="An error generated while colorizing a paragraph." alt="" coords="5,285,176,323" />
+<area shape="rect" href="javascript:void(0);" title="exceptions.Exception.__getitem__" alt="" coords="231,36,359,55" />
+<area shape="rect" href="javascript:void(0);" title="Common base class for all exceptions." alt="" coords="219,5,371,61" />
+<area shape="rect" href="epydoc.markup.ParseError-class.html#__init__" title="epydoc.markup.ParseError.__init__" alt="" coords="153,111,436,129" />
+<area shape="rect" href="epydoc.markup.ParseError-class.html#is_fatal" title="Returns:  true if this is a fatal error." alt="" coords="153,129,436,148" />
+<area shape="rect" href="epydoc.markup.ParseError-class.html#linenum" title="Returns:  The line number on which the error occured (including any offset)." alt="" coords="153,148,436,167" />
+<area shape="rect" href="epydoc.markup.ParseError-class.html#set_linenum_offset" title="Set the line number offset for this error." alt="" coords="153,167,436,185" />
+<area shape="rect" href="epydoc.markup.ParseError-class.html#descr" title="epydoc.markup.ParseError.descr" alt="" coords="153,185,436,204" />
+<area shape="rect" href="epydoc.markup.ParseError-class.html#__str__" title="Return a string representation of this ParseError." alt="" coords="153,204,436,223" />
+<area shape="rect" href="epydoc.markup.ParseError-class.html#__repr__" title="Return the formal representation of this ParseError." alt="" coords="153,223,436,241" />
+<area shape="rect" href="epydoc.markup.ParseError-class.html#__cmp__" title="Compare two ParseErrors, based on their line number." alt="" coords="153,241,436,260" />
+<area shape="rect" href="epydoc.markup.ParseError-class.html" title="The base class for errors generated while parsing docstrings." alt="" coords="141,80,448,267" />
+<area shape="rect" href="epydoc.markup.epytext.StructuringError-class.html" title="An error generated while structuring a formatted documentation string." alt="" coords="205,285,384,323" />
+<area shape="rect" href="epydoc.markup.epytext.TokenizationError-class.html" title="An error generated while tokenizing a formatted documentation string." alt="" coords="413,285,603,323" />
+</map>
+  <img src="uml_class_diagram_for_epydoc_m_3.gif" alt='' usemap="#uml_class_diagram_for_epydoc_m_3" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<p>The base class for errors generated while parsing docstrings.</p>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.ParseError-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">descr</span>,
+        <span class="summary-sig-arg">linenum</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">is_fatal</span>=<span class="summary-sig-default">1</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup-pysrc.html#ParseError.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>boolean</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.ParseError-class.html#is_fatal" class="summary-sig-name">is_fatal</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Returns:
+      true if this is a fatal error.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup-pysrc.html#ParseError.is_fatal">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>int</code> or <code>None</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.ParseError-class.html#linenum" class="summary-sig-name">linenum</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Returns:
+      The line number on which the error occured (including any offset).</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup-pysrc.html#ParseError.linenum">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>None</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.ParseError-class.html#set_linenum_offset" class="summary-sig-name">set_linenum_offset</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">offset</span>)</span><br />
+      Set the line number offset for this error.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup-pysrc.html#ParseError.set_linenum_offset">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="descr"></a><span class="summary-sig-name">descr</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup-pysrc.html#ParseError.descr">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>string</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.ParseError-class.html#__str__" class="summary-sig-name">__str__</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Return a string representation of this <code>ParseError</code>.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup-pysrc.html#ParseError.__str__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>string</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.ParseError-class.html#__repr__" class="summary-sig-name">__repr__</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Return the formal representation of this <code>ParseError</code>.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup-pysrc.html#ParseError.__repr__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>int</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.ParseError-class.html#__cmp__" class="summary-sig-name">__cmp__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">other</span>)</span><br />
+      Compare two <code>ParseError</code>s, based on their line number.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup-pysrc.html#ParseError.__cmp__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.Exception</code></b>:
+      <code>__getitem__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== INSTANCE VARIABLES ==================== -->
+<a name="section-InstanceVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>string</code></span>
+    </td><td class="summary">
+        <a name="_descr"></a><span class="summary-name">_descr</span><br />
+      A description of the error.
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>boolean</code></span>
+    </td><td class="summary">
+        <a name="_fatal"></a><span class="summary-name">_fatal</span><br />
+      True if this is a fatal error.
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>int</code></span>
+    </td><td class="summary">
+        <a href="epydoc.markup.ParseError-class.html#_linenum" class="summary-name" onclick="show_private();">_linenum</a><br />
+      The line on which the error occured within the docstring.
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>int</code></span>
+    </td><td class="summary">
+        <a href="epydoc.markup.ParseError-class.html#_offset" class="summary-name" onclick="show_private();">_offset</a><br />
+      The line number where the docstring begins.
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Method Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-MethodDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">descr</span>,
+        <span class="sig-arg">linenum</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">is_fatal</span>=<span class="sig-default">1</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup-pysrc.html#ParseError.__init__">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>descr</code></strong> (<code>string</code>) - A description of the error.</li>
+        <li><strong class="pname"><code>linenum</code></strong> (<code>int</code>) - The line on which the error occured within the docstring.  The 
+          linenum of the first line is 0.</li>
+        <li><strong class="pname"><code>is_fatal</code></strong> (<code>boolean</code>) - True if this is a fatal error.</li>
+    </ul></dd>
+    <dt>Overrides:
+        exceptions.Exception.__init__
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="is_fatal"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">is_fatal</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup-pysrc.html#ParseError.is_fatal">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  
+  <dl class="fields">
+    <dt>Returns: <code>boolean</code></dt>
+        <dd>true if this is a fatal error.  If an error is fatal, then epydoc
+          should ignore the output of the parser, and parse the docstring 
+          as plaintext.</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="linenum"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">linenum</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup-pysrc.html#ParseError.linenum">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  
+  <dl class="fields">
+    <dt>Returns: <code>int</code> or <code>None</code></dt>
+        <dd>The line number on which the error occured (including any 
+          offset).  If the line number is unknown, then return 
+          <code>None</code>.</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="set_linenum_offset"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">set_linenum_offset</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">offset</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup-pysrc.html#ParseError.set_linenum_offset">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Set the line number offset for this error.  This offset is the line 
+  number where the docstring begins.  This offset is added to 
+  <code>_linenum</code> when displaying the line number of the error.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>offset</code></strong> (<code>int</code>) - The new line number offset.</li>
+    </ul></dd>
+    <dt>Returns: <code>None</code></dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="__str__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__str__</span>(<span class="sig-arg">self</span>)</span>
+    <br /><em class="fname">(Informal representation operator)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup-pysrc.html#ParseError.__str__">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Return a string representation of this <code>ParseError</code>.  This 
+  multi-line string contains a description of the error, and specifies 
+  where it occured.</p>
+  <dl class="fields">
+    <dt>Returns: <code>string</code></dt>
+        <dd>the informal representation of this <code>ParseError</code>.</dd>
+    <dt>Overrides:
+        exceptions.Exception.__str__
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="__repr__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__repr__</span>(<span class="sig-arg">self</span>)</span>
+    <br /><em class="fname">(Representation operator)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup-pysrc.html#ParseError.__repr__">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Return the formal representation of this <code>ParseError</code>. 
+  <code>ParseError</code>s have formal representations of the form:</p>
+<pre class="literalblock">
+  <ParseError on line 12>
+</pre>
+  <dl class="fields">
+    <dt>Returns: <code>string</code></dt>
+        <dd>the formal representation of this <code>ParseError</code>.</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="__cmp__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__cmp__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">other</span>)</span>
+    <br /><em class="fname">(Comparison operator)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup-pysrc.html#ParseError.__cmp__">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Compare two <code>ParseError</code>s, based on their line number.</p>
+  <ul>
+    <li>
+      Return -1 if <code>self.linenum<other.linenum</code>
+    </li>
+    <li>
+      Return +1 if <code>self.linenum>other.linenum</code>
+    </li>
+    <li>
+      Return 0 if <code>self.linenum==other.linenum</code>.
+    </li>
+  </ul>
+  <p>The return value is undefined if <code>other</code> is not a 
+  ParseError.</p>
+  <dl class="fields">
+    <dt>Returns: <code>int</code></dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== INSTANCE VARIABLE DETAILS ==================== -->
+<a name="section-InstanceVariableDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Variable Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceVariableDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="_linenum"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">_linenum</h3>
+  The line on which the error occured within the docstring.  The linenum of
+  the first line is 0.
+  <dl class="fields">
+    <dt>Type:</dt>
+      <dd><code>int</code></dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="_offset"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">_offset</h3>
+  The line number where the docstring begins.  This offset is added to 
+  <code>_linenum</code> when displaying the line number of the error.  
+  Default value: 1.
+  <dl class="fields">
+    <dt>Type:</dt>
+      <dd><code>int</code></dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:08:25 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.markup.ParsedDocstring-class.html b/doc/api/epydoc.markup.ParsedDocstring-class.html
new file mode 100644
index 0000000..1207363
--- /dev/null
+++ b/doc/api/epydoc.markup.ParsedDocstring-class.html
@@ -0,0 +1,699 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.markup.ParsedDocstring</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.markup-module.html">Package markup</a> ::
+        Class ParsedDocstring
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.markup.ParsedDocstring-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class ParsedDocstring</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.markup-pysrc.html#ParsedDocstring">source code</a></span></p>
+<center>
+<center>  <map id="uml_class_diagram_for_epydoc_m_4" name="uml_class_diagram_for_epydoc_m_4">
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html" title="epydoc.markup.epytext.ParsedEpytextDocstring" alt="" coords="6,211,232,248" />
+<area shape="rect" href="epydoc.markup.pyval_repr.ColorizedPyvalRepr-class.html" title="epydoc.markup.pyval_repr.ColorizedPyvalRepr" alt="" coords="10,267,228,304" />
+<area shape="rect" href="epydoc.markup.plaintext.ParsedPlaintextDocstring-class.html" title="epydoc.markup.plaintext.ParsedPlaintextDocstring" alt="" coords="262,211,502,248" />
+<area shape="rect" href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html" title="An encoded version of a ReStructuredText docstring." alt="" coords="531,211,782,248" />
+<area shape="rect" href="epydoc.markup.ParsedDocstring-class.html#split_fields" title="Split this docstring into its body and its fields." alt="" coords="386,36,652,55" />
+<area shape="rect" href="epydoc.markup.ParsedDocstring-class.html#summary" title="Returns:  A pair consisting of a short summary of this docstring and a boolean value  indicating whether there is further documentation in addition to the  summary." alt="" coords="386,55,652,73" />
+<area shape="rect" href="epydoc.markup.ParsedDocstring-class.html#concatenate" title="Returns:  A new parsed docstring containing the concatination of this docstring and  other." alt="" coords="386,73,652,92" />
+<area shape="rect" href="epydoc.markup.ParsedDocstring-class.html#__add__" title="epydoc.markup.ParsedDocstring.__add__" alt="" coords="386,92,652,111" />
+<area shape="rect" href="epydoc.markup.ParsedDocstring-class.html#to_html" title="Translate this docstring to HTML." alt="" coords="386,111,652,129" />
+<area shape="rect" href="epydoc.markup.ParsedDocstring-class.html#to_latex" title="Translate this docstring to LaTeX." alt="" coords="386,129,652,148" />
+<area shape="rect" href="epydoc.markup.ParsedDocstring-class.html#to_plaintext" title="Translate this docstring to plaintext." alt="" coords="386,148,652,167" />
+<area shape="rect" href="epydoc.markup.ParsedDocstring-class.html#index_terms" title="Returns:  The list of index terms that are defined in this docstring." alt="" coords="386,167,652,185" />
+<area shape="rect" href="epydoc.markup.ParsedDocstring-class.html" title="A standard intermediate representation for parsed docstrings that can be used to generate output." alt="" coords="374,5,664,192" />
+<area shape="rect" href="epydoc.markup.javadoc.ParsedJavadocDocstring-class.html" title="An encoded version of a Javadoc docstring." alt="" coords="811,211,1046,248" />
+</map>
+  <img src="uml_class_diagram_for_epydoc_m_4.gif" alt='' usemap="#uml_class_diagram_for_epydoc_m_4" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<p>A standard intermediate representation for parsed docstrings that can 
+  be used to generate output.  Parsed docstrings are produced by markup 
+  parsers (such as <a href="epydoc.markup.epytext-module.html#parse" 
+  class="link">epytext.parse</a> or <a 
+  href="epydoc.markup-module.html#parse" class="link">javadoc.parse</a>). 
+  <code>ParsedDocstring</code>s support several kinds of operation:</p>
+  <ul>
+    <li>
+      output generation (<a 
+      href="epydoc.markup.ParsedDocstring-class.html#to_plaintext" 
+      class="link">to_plaintext()</a>, <a 
+      href="epydoc.markup.ParsedDocstring-class.html#to_html" 
+      class="link">to_html()</a>, and <a 
+      href="epydoc.markup.ParsedDocstring-class.html#to_latex" 
+      class="link">to_latex()</a>).
+    </li>
+    <li>
+      Summarization (<a 
+      href="epydoc.markup.ParsedDocstring-class.html#summary" 
+      class="link">summary()</a>).
+    </li>
+    <li>
+      Field extraction (<a 
+      href="epydoc.markup.ParsedDocstring-class.html#split_fields" 
+      class="link">split_fields()</a>).
+    </li>
+    <li>
+      Index term extraction (<a 
+      href="epydoc.markup.ParsedDocstring-class.html#index_terms" 
+      class="link">index_terms()</a>.
+    </li>
+  </ul>
+  <p>The output generation methods (<code>to_<i 
+  class="math">format</i>()</code>) use a <a 
+  href="epydoc.markup.DocstringLinker-class.html" 
+  class="link">DocstringLinker</a> to link the docstring output with the 
+  rest of the documentation that epydoc generates.</p>
+  <h1 class="heading">Subclassing</h1>
+    <p>The only method that a subclass is <i>required</i> to implement is 
+    <a href="epydoc.markup.ParsedDocstring-class.html#to_plaintext" 
+    class="link">to_plaintext()</a>; but it is often useful to override the
+    other methods.  The default behavior of each method is described 
+    below:</p>
+    <ul>
+      <li>
+        <code>to_<i>format</i></code>: Calls <code>to_plaintext</code>, and
+        uses the string it returns to generate verbatim output.
+      </li>
+      <li>
+        <code>summary</code>: Returns <code>self</code> (i.e., the entire 
+        docstring).
+      </li>
+      <li>
+        <code>split_fields</code>: Returns <code>(self, [])</code> (i.e., 
+        extracts no fields).
+      </li>
+      <li>
+        <code>index_terms</code>: Returns <code>[]</code> (i.e., extracts 
+        no index terms).
+      </li>
+    </ul>
+    <p>If and when epydoc adds more output formats, new 
+    <code>to_<i>format</i></code> methods will be added to this base class;
+    but they will always be given a default implementation.</p>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>(<a href="epydoc.markup.ParsedDocstring-class.html" 
+      class="link">ParsedDocstring</a>, list of <a 
+      href="epydoc.markup.Field-class.html" class="link">Field</a>)</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.ParsedDocstring-class.html#split_fields" class="summary-sig-name">split_fields</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">errors</span>=<span class="summary-sig-default">None</span>)</span><br />
+      Split this docstring into its body and its fields.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup-pysrc.html#ParsedDocstring.split_fields">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_split_fields_2-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_split_fields_2-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_split_fields_2" name="call_graph_for_split_fields_2">
+<area shape="rect" href="epydoc.docstringparser-module.html#parse_docstring" title="docstringparser.parse_docstring()" alt="" coords="5,6,277,38" />
+<area shape="rect" href="epydoc.markup.ParsedDocstring-class.html#split_fields" title="split_fields()" alt="" coords="325,6,443,38" />
+</map>
+  <img src="call_graph_for_split_fields_2.gif" alt='' usemap="#call_graph_for_split_fields_2" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">(<a href="epydoc.markup.ParsedDocstring-class.html" 
+      class="link">ParsedDocstring</a>, <code>bool</code>)</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.ParsedDocstring-class.html#summary" class="summary-sig-name">summary</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Returns:
+      A pair consisting of a short summary of this docstring and a boolean 
+      value indicating whether there is further documentation in addition 
+      to the summary.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup-pysrc.html#ParsedDocstring.summary">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.ParsedDocstring-class.html#concatenate" class="summary-sig-name">concatenate</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">other</span>)</span><br />
+      Returns:
+      A new parsed docstring containing the concatination of this docstring
+      and <code>other</code>.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup-pysrc.html#ParsedDocstring.concatenate">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_concatenate-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_concatenate-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_concatenate" name="call_graph_for_concatenate">
+<area shape="rect" href="epydoc.markup.ConcatenatedDocstring-class.html#__init__" title="ConcatenatedDocstring.__init__()" alt="" coords="327,6,601,38" />
+<area shape="rect" href="epydoc.markup.ParsedDocstring-class.html#__add__" title="__add__()" alt="" coords="7,6,105,38" />
+<area shape="rect" href="epydoc.markup.ParsedDocstring-class.html#concatenate" title="concatenate()" alt="" coords="155,6,277,38" />
+</map>
+  <img src="call_graph_for_concatenate.gif" alt='' usemap="#call_graph_for_concatenate" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__add__"></a><span class="summary-sig-name">__add__</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">other</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup-pysrc.html#ParsedDocstring.__add__">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for___add___2-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for___add___2-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for___add___2" name="call_graph_for___add___2">
+<area shape="rect" href="epydoc.docstringparser-module.html#parse_docstring" title="docstringparser.parse_docstring()" alt="" coords="6,6,278,38" />
+<area shape="rect" href="epydoc.markup.ParsedDocstring-class.html#__add__" title="__add__()" alt="" coords="327,6,426,38" />
+<area shape="rect" href="epydoc.markup.ParsedDocstring-class.html#concatenate" title="concatenate()" alt="" coords="475,6,598,38" />
+</map>
+  <img src="call_graph_for___add___2.gif" alt='' usemap="#call_graph_for___add___2" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>string</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.ParsedDocstring-class.html#to_html" class="summary-sig-name">to_html</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">docstring_linker</span>,
+        <span class="summary-sig-arg">**options</span>)</span><br />
+      Translate this docstring to HTML.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup-pysrc.html#ParsedDocstring.to_html">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_to_html_3-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_to_html_3-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_to_html_3" name="call_graph_for_to_html_3">
+<area shape="rect" href="epydoc.markup.ParsedDocstring-class.html#to_html" title="to_html()" alt="" coords="412,34,503,66" />
+<area shape="rect" href="epydoc.markup.plaintext.ParsedPlaintextDocstring-class.html#to_plaintext" title="plaintext.ParsedPlaintextDocstring.to_plaintext()" alt="" coords="554,6,940,38" />
+<area shape="rect" href="epydoc.util-module.html#plaintext_to_html" title="util.plaintext_to_html()" alt="" coords="648,62,846,94" />
+<area shape="rect" href="epydoc.markup.plaintext.ParsedPlaintextDocstring-class.html#to_html" title="plaintext.ParsedPlaintextDocstring.to_html()" alt="" coords="7,34,362,66" />
+</map>
+  <img src="call_graph_for_to_html_3.gif" alt='' usemap="#call_graph_for_to_html_3" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>string</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.ParsedDocstring-class.html#to_latex" class="summary-sig-name">to_latex</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">docstring_linker</span>,
+        <span class="summary-sig-arg">**options</span>)</span><br />
+      Translate this docstring to LaTeX.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup-pysrc.html#ParsedDocstring.to_latex">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>string</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.ParsedDocstring-class.html#to_plaintext" class="summary-sig-name">to_plaintext</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">docstring_linker</span>,
+        <span class="summary-sig-arg">**options</span>)</span><br />
+      Translate this docstring to plaintext.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup-pysrc.html#ParsedDocstring.to_plaintext">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>list</code> of <code>ParsedDocstring</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.ParsedDocstring-class.html#index_terms" class="summary-sig-name">index_terms</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Returns:
+      The list of index terms that are defined in this docstring.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup-pysrc.html#ParsedDocstring.index_terms">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_index_terms_2-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_index_terms_2-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_index_terms_2" name="call_graph_for_index_terms_2">
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_terms_from_docstring" title="docwriter.html.HTMLWriter._terms_from_docstring()" alt="" coords="5,6,435,38" />
+<area shape="rect" href="epydoc.markup.ParsedDocstring-class.html#index_terms" title="index_terms()" alt="" coords="483,6,611,38" />
+</map>
+  <img src="call_graph_for_index_terms_2.gif" alt='' usemap="#call_graph_for_index_terms_2" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Method Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-MethodDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="split_fields"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">split_fields</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">errors</span>=<span class="sig-default">None</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup-pysrc.html#ParsedDocstring.split_fields">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_split_fields_2-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_split_fields_2-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_split_fields_2" name="call_graph_for_split_fields_2">
+<area shape="rect" href="epydoc.docstringparser-module.html#parse_docstring" title="docstringparser.parse_docstring()" alt="" coords="5,6,277,38" />
+<area shape="rect" href="epydoc.markup.ParsedDocstring-class.html#split_fields" title="split_fields()" alt="" coords="325,6,443,38" />
+</map>
+  <img src="call_graph_for_split_fields_2.gif" alt='' usemap="#call_graph_for_split_fields_2" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Split this docstring into its body and its fields.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>errors</code></strong> (<code>list</code> of <a 
+          href="epydoc.markup.ParseError-class.html" 
+          class="link">ParseError</a>) - A list where any errors generated during splitting will be 
+          stored.  If no list is specified, then errors will be ignored.</li>
+    </ul></dd>
+    <dt>Returns: <code>(<a href="epydoc.markup.ParsedDocstring-class.html" 
+      class="link">ParsedDocstring</a>, list of <a 
+      href="epydoc.markup.Field-class.html" class="link">Field</a>)</code></dt>
+        <dd>A tuple <code>(<i class="math">body</i>, <i 
+          class="math">fields</i>)</code>, where <code><i 
+          class="math">body</i></code> is the main body of this docstring, 
+          and <code><i class="math">fields</i></code> is a list of its 
+          fields.  If the resulting body is empty, return <code>None</code>
+          for the body.</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="summary"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">summary</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup-pysrc.html#ParsedDocstring.summary">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  
+  <dl class="fields">
+    <dt>Returns: (<a href="epydoc.markup.ParsedDocstring-class.html" 
+      class="link">ParsedDocstring</a>, <code>bool</code>)</dt>
+        <dd>A pair consisting of a short summary of this docstring and a 
+          boolean value indicating whether there is further documentation 
+          in addition to the summary. Typically, the summary consists of 
+          the first sentence of the docstring.</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="concatenate"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">concatenate</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">other</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup-pysrc.html#ParsedDocstring.concatenate">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_concatenate-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_concatenate-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_concatenate" name="call_graph_for_concatenate">
+<area shape="rect" href="epydoc.markup.ConcatenatedDocstring-class.html#__init__" title="ConcatenatedDocstring.__init__()" alt="" coords="327,6,601,38" />
+<area shape="rect" href="epydoc.markup.ParsedDocstring-class.html#__add__" title="__add__()" alt="" coords="7,6,105,38" />
+<area shape="rect" href="epydoc.markup.ParsedDocstring-class.html#concatenate" title="concatenate()" alt="" coords="155,6,277,38" />
+</map>
+  <img src="call_graph_for_concatenate.gif" alt='' usemap="#call_graph_for_concatenate" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  
+  <dl class="fields">
+    <dt>Returns:</dt>
+        <dd>A new parsed docstring containing the concatination of this 
+          docstring and <code>other</code>.</dd>
+    <dt>Raises:</dt>
+    <dd><ul class="nomargin-top">
+        <li><code><strong class='fraise'>ValueError</strong></code> - If the two parsed docstrings are incompatible.</li>
+    </ul></dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="to_html"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">to_html</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">docstring_linker</span>,
+        <span class="sig-arg">**options</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup-pysrc.html#ParsedDocstring.to_html">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_to_html_3-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_to_html_3-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_to_html_3" name="call_graph_for_to_html_3">
+<area shape="rect" href="epydoc.markup.ParsedDocstring-class.html#to_html" title="to_html()" alt="" coords="412,34,503,66" />
+<area shape="rect" href="epydoc.markup.plaintext.ParsedPlaintextDocstring-class.html#to_plaintext" title="plaintext.ParsedPlaintextDocstring.to_plaintext()" alt="" coords="554,6,940,38" />
+<area shape="rect" href="epydoc.util-module.html#plaintext_to_html" title="util.plaintext_to_html()" alt="" coords="648,62,846,94" />
+<area shape="rect" href="epydoc.markup.plaintext.ParsedPlaintextDocstring-class.html#to_html" title="plaintext.ParsedPlaintextDocstring.to_html()" alt="" coords="7,34,362,66" />
+</map>
+  <img src="call_graph_for_to_html_3.gif" alt='' usemap="#call_graph_for_to_html_3" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Translate this docstring to HTML.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>docstring_linker</code></strong> (<a href="epydoc.markup.DocstringLinker-class.html" 
+          class="link">DocstringLinker</a>) - An HTML translator for crossreference links into and out of the 
+          docstring.</li>
+        <li><strong class="pname"><code>options</code></strong> - Any extra options for the output.  Unknown options are ignored.</li>
+    </ul></dd>
+    <dt>Returns: <code>string</code></dt>
+        <dd>An HTML fragment that encodes this docstring.</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="to_latex"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">to_latex</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">docstring_linker</span>,
+        <span class="sig-arg">**options</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup-pysrc.html#ParsedDocstring.to_latex">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Translate this docstring to LaTeX.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>docstring_linker</code></strong> (<a href="epydoc.markup.DocstringLinker-class.html" 
+          class="link">DocstringLinker</a>) - A LaTeX translator for crossreference links into and out of the 
+          docstring.</li>
+        <li><strong class="pname"><code>options</code></strong> - Any extra options for the output.  Unknown options are ignored.</li>
+    </ul></dd>
+    <dt>Returns: <code>string</code></dt>
+        <dd>A LaTeX fragment that encodes this docstring.</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="to_plaintext"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">to_plaintext</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">docstring_linker</span>,
+        <span class="sig-arg">**options</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup-pysrc.html#ParsedDocstring.to_plaintext">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Translate this docstring to plaintext.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>docstring_linker</code></strong> (<a href="epydoc.markup.DocstringLinker-class.html" 
+          class="link">DocstringLinker</a>) - A plaintext translator for crossreference links into and out of 
+          the docstring.</li>
+        <li><strong class="pname"><code>options</code></strong> - Any extra options for the output.  Unknown options are ignored.</li>
+    </ul></dd>
+    <dt>Returns: <code>string</code></dt>
+        <dd>A plaintext fragment that encodes this docstring.</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="index_terms"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">index_terms</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup-pysrc.html#ParsedDocstring.index_terms">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_index_terms_2-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_index_terms_2-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_index_terms_2" name="call_graph_for_index_terms_2">
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_terms_from_docstring" title="docwriter.html.HTMLWriter._terms_from_docstring()" alt="" coords="5,6,435,38" />
+<area shape="rect" href="epydoc.markup.ParsedDocstring-class.html#index_terms" title="index_terms()" alt="" coords="483,6,611,38" />
+</map>
+  <img src="call_graph_for_index_terms_2.gif" alt='' usemap="#call_graph_for_index_terms_2" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  
+  <dl class="fields">
+    <dt>Returns: <code>list</code> of <code>ParsedDocstring</code></dt>
+        <dd>The list of index terms that are defined in this docstring.  Each
+          of these items will be added to the index page of the 
+          documentation.</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:08:27 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.markup.doctest-module.html b/doc/api/epydoc.markup.doctest-module.html
new file mode 100644
index 0000000..247bdda
--- /dev/null
+++ b/doc/api/epydoc.markup.doctest-module.html
@@ -0,0 +1,381 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.markup.doctest</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.markup-module.html">Package markup</a> ::
+        Module doctest
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.markup.doctest-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module doctest</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.markup.doctest-pysrc.html">source code</a></span></p>
+<p>Syntax highlighting for doctest blocks.  This module defines two 
+  functions, <a href="epydoc.markup.doctest-module.html#doctest_to_html" 
+  class="link">doctest_to_html()</a> and <a 
+  href="epydoc.markup.doctest-module.html#doctest_to_latex" 
+  class="link">doctest_to_latex()</a>, which can be used to perform syntax 
+  highlighting on doctest blocks.  It also defines the more general 
+  <code>colorize_doctest()</code>, which could be used to do syntac 
+  highlighting on doctest blocks with other output formats. (Both 
+  <code>doctest_to_html()</code> and <code>doctest_to_latex()</code> are 
+  defined using <code>colorize_doctest()</code>.)</p>
+
+<!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Classes</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Classes"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.markup.doctest.DoctestColorizer-class.html" class="summary-name">DoctestColorizer</a><br />
+      An abstract base class for performing syntax highlighting on 
+        doctest blocks and other bits of Python code.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.markup.doctest.XMLDoctestColorizer-class.html" class="summary-name">XMLDoctestColorizer</a><br />
+      A subclass of DoctestColorizer that generates XML-like output.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.markup.doctest.HTMLDoctestColorizer-class.html" class="summary-name">HTMLDoctestColorizer</a><br />
+      A subclass of DoctestColorizer that generates HTML output.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.markup.doctest.LaTeXDoctestColorizer-class.html" class="summary-name">LaTeXDoctestColorizer</a><br />
+      A subclass of DoctestColorizer that generates LaTeX output.
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTIONS ==================== -->
+<a name="section-Functions"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Functions</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Functions"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.doctest-module.html#doctest_to_html" class="summary-sig-name">doctest_to_html</a>(<span class="summary-sig-arg">s</span>)</span><br />
+      Perform syntax highlighting on the given doctest string, and return 
+      the resulting HTML code.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.doctest-pysrc.html#doctest_to_html">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_doctest_to_html-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_doctest_to_html-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_doctest_to_html" name="call_graph_for_doctest_to_html">
+<area shape="rect" href="epydoc.markup.doctest.DoctestColorizer-class.html#colorize_doctest" title="DoctestColorizer.colorize_doctest()" alt="" coords="604,6,892,38" />
+<area shape="rect" href="epydoc.markup.doctest-module.html#doctest_to_html" title="doctest_to_html()" alt="" coords="400,6,555,38" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#_to_html" title="epytext.ParsedEpytextDocstring._to_html()" alt="" coords="6,6,352,38" />
+</map>
+  <img src="call_graph_for_doctest_to_html.gif" alt='' usemap="#call_graph_for_doctest_to_html" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.doctest-module.html#doctest_to_latex" class="summary-sig-name">doctest_to_latex</a>(<span class="summary-sig-arg">s</span>)</span><br />
+      Perform syntax highlighting on the given doctest string, and return 
+      the resulting LaTeX code.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.doctest-pysrc.html#doctest_to_latex">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTION DETAILS ==================== -->
+<a name="section-FunctionDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Function Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-FunctionDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="doctest_to_html"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">doctest_to_html</span>(<span class="sig-arg">s</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.doctest-pysrc.html#doctest_to_html">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_doctest_to_html-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_doctest_to_html-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_doctest_to_html" name="call_graph_for_doctest_to_html">
+<area shape="rect" href="epydoc.markup.doctest.DoctestColorizer-class.html#colorize_doctest" title="DoctestColorizer.colorize_doctest()" alt="" coords="604,6,892,38" />
+<area shape="rect" href="epydoc.markup.doctest-module.html#doctest_to_html" title="doctest_to_html()" alt="" coords="400,6,555,38" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#_to_html" title="epytext.ParsedEpytextDocstring._to_html()" alt="" coords="6,6,352,38" />
+</map>
+  <img src="call_graph_for_doctest_to_html.gif" alt='' usemap="#call_graph_for_doctest_to_html" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Perform syntax highlighting on the given doctest string, and return 
+  the resulting HTML code.  This code consists of a 
+  <code><pre></code> block with class=py-doctest.  Syntax 
+  highlighting is performed using the following css classes:</p>
+  <ul>
+    <li>
+      <code>py-prompt</code> -- the Python PS1 prompt (>>>)
+    </li>
+    <li>
+      <code>py-more</code> -- the Python PS2 prompt (...)
+    </li>
+    <li>
+      <code>py-keyword</code> -- a Python keyword (for, if, etc.)
+    </li>
+    <li>
+      <code>py-builtin</code> -- a Python builtin name (abs, dir, etc.)
+    </li>
+    <li>
+      <code>py-string</code> -- a string literal
+    </li>
+    <li>
+      <code>py-comment</code> -- a comment
+    </li>
+    <li>
+      <code>py-except</code> -- an exception traceback (up to the next 
+      >>>)
+    </li>
+    <li>
+      <code>py-output</code> -- the output from a doctest block.
+    </li>
+    <li>
+      <code>py-defname</code> -- the name of a function or class defined by
+      a <code>def</code> or <code>class</code> statement.
+    </li>
+  </ul>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="doctest_to_latex"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">doctest_to_latex</span>(<span class="sig-arg">s</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.doctest-pysrc.html#doctest_to_latex">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Perform syntax highlighting on the given doctest string, and return 
+  the resulting LaTeX code.  This code consists of an <code>alltt</code> 
+  environment.  Syntax highlighting is performed using the following new 
+  latex commands, which must be defined externally:</p>
+  <ul>
+    <li>
+      <code>\pysrcprompt</code> -- the Python PS1 prompt (>>>)
+    </li>
+    <li>
+      <code>\pysrcmore</code> -- the Python PS2 prompt (...)
+    </li>
+    <li>
+      <code>\pysrckeyword</code> -- a Python keyword (for, if, etc.)
+    </li>
+    <li>
+      <code>\pysrcbuiltin</code> -- a Python builtin name (abs, dir, etc.)
+    </li>
+    <li>
+      <code>\pysrcstring</code> -- a string literal
+    </li>
+    <li>
+      <code>\pysrccomment</code> -- a comment
+    </li>
+    <li>
+      <code>\pysrcexcept</code> -- an exception traceback (up to the next 
+      >>>)
+    </li>
+    <li>
+      <code>\pysrcoutput</code> -- the output from a doctest block.
+    </li>
+    <li>
+      <code>\pysrcdefname</code> -- the name of a function or class defined
+      by a <code>def</code> or <code>class</code> statement.
+    </li>
+  </ul>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:06:41 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.markup.doctest-pysrc.html b/doc/api/epydoc.markup.doctest-pysrc.html
new file mode 100644
index 0000000..89e7412
--- /dev/null
+++ b/doc/api/epydoc.markup.doctest-pysrc.html
@@ -0,0 +1,533 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.markup.doctest</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.markup-module.html">Package markup</a> ::
+        Module doctest
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.markup.doctest-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="epydoc.markup.doctest-module.html">Module epydoc.markup.doctest</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno">  1</tt>  <tt class="py-line"><tt class="py-comment">#</tt> </tt>
+<a name="L2"></a><tt class="py-lineno">  2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># doctest.py: Syntax Highlighting for doctest blocks</tt> </tt>
+<a name="L3"></a><tt class="py-lineno">  3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Edward Loper</tt> </tt>
+<a name="L4"></a><tt class="py-lineno">  4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L5"></a><tt class="py-lineno">  5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Created [06/28/03 02:52 AM]</tt> </tt>
+<a name="L6"></a><tt class="py-lineno">  6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># $Id: restructuredtext.py 1210 2006-04-10 13:25:50Z edloper $</tt> </tt>
+<a name="L7"></a><tt class="py-lineno">  7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L8"></a><tt class="py-lineno">  8</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L9"></a><tt class="py-lineno">  9</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L10"></a><tt class="py-lineno"> 10</tt>  <tt class="py-line"><tt class="py-docstring">Syntax highlighting for doctest blocks.  This module defines two</tt> </tt>
+<a name="L11"></a><tt class="py-lineno"> 11</tt>  <tt class="py-line"><tt class="py-docstring">functions, L{doctest_to_html()} and L{doctest_to_latex()}, which can</tt> </tt>
+<a name="L12"></a><tt class="py-lineno"> 12</tt>  <tt class="py-line"><tt class="py-docstring">be used to perform syntax highlighting on doctest blocks.  It also</tt> </tt>
+<a name="L13"></a><tt class="py-lineno"> 13</tt>  <tt class="py-line"><tt class="py-docstring">defines the more general C{colorize_doctest()}, which could be used to</tt> </tt>
+<a name="L14"></a><tt class="py-lineno"> 14</tt>  <tt class="py-line"><tt class="py-docstring">do syntac highlighting on doctest blocks with other output formats.</tt> </tt>
+<a name="L15"></a><tt class="py-lineno"> 15</tt>  <tt class="py-line"><tt class="py-docstring">(Both C{doctest_to_html()} and C{doctest_to_latex()} are defined using</tt> </tt>
+<a name="L16"></a><tt class="py-lineno"> 16</tt>  <tt class="py-line"><tt class="py-docstring">C{colorize_doctest()}.)</tt> </tt>
+<a name="L17"></a><tt class="py-lineno"> 17</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L18"></a><tt class="py-lineno"> 18</tt>  <tt class="py-line"><tt class="py-name">__docformat__</tt> <tt class="py-op">=</tt> <tt class="py-string">'epytext en'</tt> </tt>
+<a name="L19"></a><tt class="py-lineno"> 19</tt>  <tt class="py-line"> </tt>
+<a name="L20"></a><tt class="py-lineno"> 20</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">re</tt> </tt>
+<a name="L21"></a><tt class="py-lineno"> 21</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-0" class="py-name" targets="Package epydoc=epydoc-module.html"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-0', 'epydoc', 'link-0');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-1" class="py-name" targets="Module epydoc.test.util=epydoc.test.util-module.html,Module epydoc.util=epydoc.util-module.html"><a title="epydoc.test.util
+epydoc.util" class="py-name" href="#" onclick="return doclink('link-1', 'util', 'link-1');">util</a></tt> <tt class="py-keyword">import</tt> <tt id="link-2" class="py-name" targets="Function epydoc.util.plaintext_to_html()=epydoc.util-module.html#plaintext_to_html"><a title="epydoc.util.plaintext_to_html" class="py-name" href="#" onclick="return doclink('link-2', 'plaintext_to_html', 'link-2');">plaintext_to_html</a></tt><tt class="py-op">,</tt> <tt id="link-3" class="py-name" targets="F [...]
+<a name="L22"></a><tt class="py-lineno"> 22</tt>  <tt class="py-line"> </tt>
+<a name="L23"></a><tt class="py-lineno"> 23</tt>  <tt class="py-line"><tt class="py-name">__all__</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-string">'doctest_to_html'</tt><tt class="py-op">,</tt> <tt class="py-string">'doctest_to_latex'</tt><tt class="py-op">,</tt> </tt>
+<a name="L24"></a><tt class="py-lineno"> 24</tt>  <tt class="py-line">           <tt class="py-string">'DoctestColorizer'</tt><tt class="py-op">,</tt> <tt class="py-string">'XMLDoctestColorizer'</tt><tt class="py-op">,</tt>  </tt>
+<a name="L25"></a><tt class="py-lineno"> 25</tt>  <tt class="py-line">           <tt class="py-string">'HTMLDoctestColorizer'</tt><tt class="py-op">,</tt> <tt class="py-string">'LaTeXDoctestColorizer'</tt><tt class="py-op">]</tt> </tt>
+<a name="L26"></a><tt class="py-lineno"> 26</tt>  <tt class="py-line"> </tt>
+<a name="doctest_to_html"></a><div id="doctest_to_html-def"><a name="L27"></a><tt class="py-lineno"> 27</tt> <a class="py-toggle" href="#" id="doctest_to_html-toggle" onclick="return toggle('doctest_to_html');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.doctest-module.html#doctest_to_html">doctest_to_html</a><tt class="py-op">(</tt><tt class="py-param">s</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="doctest_to_html-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="doctest_to_html-expanded"><a name="L28"></a><tt class="py-lineno"> 28</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L29"></a><tt class="py-lineno"> 29</tt>  <tt class="py-line"><tt class="py-docstring">    Perform syntax highlighting on the given doctest string, and</tt> </tt>
+<a name="L30"></a><tt class="py-lineno"> 30</tt>  <tt class="py-line"><tt class="py-docstring">    return the resulting HTML code.  This code consists of a C{<pre>}</tt> </tt>
+<a name="L31"></a><tt class="py-lineno"> 31</tt>  <tt class="py-line"><tt class="py-docstring">    block with class=py-doctest.  Syntax highlighting is performed</tt> </tt>
+<a name="L32"></a><tt class="py-lineno"> 32</tt>  <tt class="py-line"><tt class="py-docstring">    using the following css classes:</tt> </tt>
+<a name="L33"></a><tt class="py-lineno"> 33</tt>  <tt class="py-line"><tt class="py-docstring">    </tt> </tt>
+<a name="L34"></a><tt class="py-lineno"> 34</tt>  <tt class="py-line"><tt class="py-docstring">      - C{py-prompt} -- the Python PS1 prompt (>>>)</tt> </tt>
+<a name="L35"></a><tt class="py-lineno"> 35</tt>  <tt class="py-line"><tt class="py-docstring">      - C{py-more} -- the Python PS2 prompt (...)</tt> </tt>
+<a name="L36"></a><tt class="py-lineno"> 36</tt>  <tt class="py-line"><tt class="py-docstring">      - C{py-keyword} -- a Python keyword (for, if, etc.)</tt> </tt>
+<a name="L37"></a><tt class="py-lineno"> 37</tt>  <tt class="py-line"><tt class="py-docstring">      - C{py-builtin} -- a Python builtin name (abs, dir, etc.)</tt> </tt>
+<a name="L38"></a><tt class="py-lineno"> 38</tt>  <tt class="py-line"><tt class="py-docstring">      - C{py-string} -- a string literal</tt> </tt>
+<a name="L39"></a><tt class="py-lineno"> 39</tt>  <tt class="py-line"><tt class="py-docstring">      - C{py-comment} -- a comment</tt> </tt>
+<a name="L40"></a><tt class="py-lineno"> 40</tt>  <tt class="py-line"><tt class="py-docstring">      - C{py-except} -- an exception traceback (up to the next >>>)</tt> </tt>
+<a name="L41"></a><tt class="py-lineno"> 41</tt>  <tt class="py-line"><tt class="py-docstring">      - C{py-output} -- the output from a doctest block.</tt> </tt>
+<a name="L42"></a><tt class="py-lineno"> 42</tt>  <tt class="py-line"><tt class="py-docstring">      - C{py-defname} -- the name of a function or class defined by</tt> </tt>
+<a name="L43"></a><tt class="py-lineno"> 43</tt>  <tt class="py-line"><tt class="py-docstring">        a C{def} or C{class} statement.</tt> </tt>
+<a name="L44"></a><tt class="py-lineno"> 44</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L45"></a><tt class="py-lineno"> 45</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-4" class="py-name" targets="Class epydoc.markup.doctest.HTMLDoctestColorizer=epydoc.markup.doctest.HTMLDoctestColorizer-class.html"><a title="epydoc.markup.doctest.HTMLDoctestColorizer" class="py-name" href="#" onclick="return doclink('link-4', 'HTMLDoctestColorizer', 'link-4');">HTMLDoctestColorizer</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="p [...]
+</div><a name="L46"></a><tt class="py-lineno"> 46</tt>  <tt class="py-line"> </tt>
+<a name="doctest_to_latex"></a><div id="doctest_to_latex-def"><a name="L47"></a><tt class="py-lineno"> 47</tt> <a class="py-toggle" href="#" id="doctest_to_latex-toggle" onclick="return toggle('doctest_to_latex');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.doctest-module.html#doctest_to_latex">doctest_to_latex</a><tt class="py-op">(</tt><tt class="py-param">s</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="doctest_to_latex-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="doctest_to_latex-expanded"><a name="L48"></a><tt class="py-lineno"> 48</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L49"></a><tt class="py-lineno"> 49</tt>  <tt class="py-line"><tt class="py-docstring">    Perform syntax highlighting on the given doctest string, and</tt> </tt>
+<a name="L50"></a><tt class="py-lineno"> 50</tt>  <tt class="py-line"><tt class="py-docstring">    return the resulting LaTeX code.  This code consists of an</tt> </tt>
+<a name="L51"></a><tt class="py-lineno"> 51</tt>  <tt class="py-line"><tt class="py-docstring">    C{alltt} environment.  Syntax highlighting is performed using </tt> </tt>
+<a name="L52"></a><tt class="py-lineno"> 52</tt>  <tt class="py-line"><tt class="py-docstring">    the following new latex commands, which must be defined externally:</tt> </tt>
+<a name="L53"></a><tt class="py-lineno"> 53</tt>  <tt class="py-line"><tt class="py-docstring">      - C{\pysrcprompt} -- the Python PS1 prompt (>>>)</tt> </tt>
+<a name="L54"></a><tt class="py-lineno"> 54</tt>  <tt class="py-line"><tt class="py-docstring">      - C{\pysrcmore} -- the Python PS2 prompt (...)</tt> </tt>
+<a name="L55"></a><tt class="py-lineno"> 55</tt>  <tt class="py-line"><tt class="py-docstring">      - C{\pysrckeyword} -- a Python keyword (for, if, etc.)</tt> </tt>
+<a name="L56"></a><tt class="py-lineno"> 56</tt>  <tt class="py-line"><tt class="py-docstring">      - C{\pysrcbuiltin} -- a Python builtin name (abs, dir, etc.)</tt> </tt>
+<a name="L57"></a><tt class="py-lineno"> 57</tt>  <tt class="py-line"><tt class="py-docstring">      - C{\pysrcstring} -- a string literal</tt> </tt>
+<a name="L58"></a><tt class="py-lineno"> 58</tt>  <tt class="py-line"><tt class="py-docstring">      - C{\pysrccomment} -- a comment</tt> </tt>
+<a name="L59"></a><tt class="py-lineno"> 59</tt>  <tt class="py-line"><tt class="py-docstring">      - C{\pysrcexcept} -- an exception traceback (up to the next >>>)</tt> </tt>
+<a name="L60"></a><tt class="py-lineno"> 60</tt>  <tt class="py-line"><tt class="py-docstring">      - C{\pysrcoutput} -- the output from a doctest block.</tt> </tt>
+<a name="L61"></a><tt class="py-lineno"> 61</tt>  <tt class="py-line"><tt class="py-docstring">      - C{\pysrcdefname} -- the name of a function or class defined by</tt> </tt>
+<a name="L62"></a><tt class="py-lineno"> 62</tt>  <tt class="py-line"><tt class="py-docstring">        a C{def} or C{class} statement.</tt> </tt>
+<a name="L63"></a><tt class="py-lineno"> 63</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L64"></a><tt class="py-lineno"> 64</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-6" class="py-name" targets="Class epydoc.markup.doctest.LaTeXDoctestColorizer=epydoc.markup.doctest.LaTeXDoctestColorizer-class.html"><a title="epydoc.markup.doctest.LaTeXDoctestColorizer" class="py-name" href="#" onclick="return doclink('link-6', 'LaTeXDoctestColorizer', 'link-6');">LaTeXDoctestColorizer</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt cla [...]
+</div><a name="L65"></a><tt class="py-lineno"> 65</tt>  <tt class="py-line"> </tt>
+<a name="DoctestColorizer"></a><div id="DoctestColorizer-def"><a name="L66"></a><tt class="py-lineno"> 66</tt> <a class="py-toggle" href="#" id="DoctestColorizer-toggle" onclick="return toggle('DoctestColorizer');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="epydoc.markup.doctest.DoctestColorizer-class.html">DoctestColorizer</a><tt class="py-op">:</tt> </tt>
+</div><div id="DoctestColorizer-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="DoctestColorizer-expanded"><a name="L67"></a><tt class="py-lineno"> 67</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L68"></a><tt class="py-lineno"> 68</tt>  <tt class="py-line"><tt class="py-docstring">    An abstract base class for performing syntax highlighting on</tt> </tt>
+<a name="L69"></a><tt class="py-lineno"> 69</tt>  <tt class="py-line"><tt class="py-docstring">    doctest blocks and other bits of Python code.  Subclasses should</tt> </tt>
+<a name="L70"></a><tt class="py-lineno"> 70</tt>  <tt class="py-line"><tt class="py-docstring">    provide definitions for:</tt> </tt>
+<a name="L71"></a><tt class="py-lineno"> 71</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L72"></a><tt class="py-lineno"> 72</tt>  <tt class="py-line"><tt class="py-docstring">      - The L{markup()} method, which takes a substring and a tag, and</tt> </tt>
+<a name="L73"></a><tt class="py-lineno"> 73</tt>  <tt class="py-line"><tt class="py-docstring">        returns a colorized version of the substring.</tt> </tt>
+<a name="L74"></a><tt class="py-lineno"> 74</tt>  <tt class="py-line"><tt class="py-docstring">      - The L{PREFIX} and L{SUFFIX} variables, which will be added</tt> </tt>
+<a name="L75"></a><tt class="py-lineno"> 75</tt>  <tt class="py-line"><tt class="py-docstring">        to the beginning and end of the strings returned by</tt> </tt>
+<a name="L76"></a><tt class="py-lineno"> 76</tt>  <tt class="py-line"><tt class="py-docstring">        L{colorize_codeblock} and L{colorize_doctest}.  </tt> </tt>
+<a name="L77"></a><tt class="py-lineno"> 77</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L78"></a><tt class="py-lineno"> 78</tt>  <tt class="py-line"> </tt>
+<a name="L79"></a><tt class="py-lineno"> 79</tt>  <tt class="py-line">    <tt class="py-comment">#: A string that is added to the beginning of the strings</tt> </tt>
+<a name="L80"></a><tt class="py-lineno"> 80</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#: returned by L{colorize_codeblock} and L{colorize_doctest}.</tt> </tt>
+<a name="L81"></a><tt class="py-lineno"> 81</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#: Typically, this string begins a preformatted area.</tt> </tt>
+<a name="L82"></a><tt class="py-lineno"> 82</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-8" class="py-name" targets="Variable epydoc.markup.doctest.DoctestColorizer.PREFIX=epydoc.markup.doctest.DoctestColorizer-class.html#PREFIX,Variable epydoc.markup.doctest.HTMLDoctestColorizer.PREFIX=epydoc.markup.doctest.HTMLDoctestColorizer-class.html#PREFIX,Variable epydoc.markup.doctest.LaTeXDoctestColorizer.PREFIX=epydoc.markup.doctest.LaTeXDoctestColorizer-class.html#PR [...]
+epydoc.markup.doctest.HTMLDoctestColorizer.PREFIX
+epydoc.markup.doctest.LaTeXDoctestColorizer.PREFIX
+epydoc.markup.doctest.XMLDoctestColorizer.PREFIX" class="py-name" href="#" onclick="return doclink('link-8', 'PREFIX', 'link-8');">PREFIX</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L83"></a><tt class="py-lineno"> 83</tt>  <tt class="py-line"> </tt>
+<a name="L84"></a><tt class="py-lineno"> 84</tt>  <tt class="py-line">    <tt class="py-comment">#: A string that is added to the end of the strings</tt> </tt>
+<a name="L85"></a><tt class="py-lineno"> 85</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#: returned by L{colorize_codeblock} and L{colorize_doctest}.</tt> </tt>
+<a name="L86"></a><tt class="py-lineno"> 86</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#: Typically, this string ends a preformatted area.</tt> </tt>
+<a name="L87"></a><tt class="py-lineno"> 87</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-9" class="py-name" targets="Variable epydoc.markup.doctest.DoctestColorizer.SUFFIX=epydoc.markup.doctest.DoctestColorizer-class.html#SUFFIX,Variable epydoc.markup.doctest.HTMLDoctestColorizer.SUFFIX=epydoc.markup.doctest.HTMLDoctestColorizer-class.html#SUFFIX,Variable epydoc.markup.doctest.LaTeXDoctestColorizer.SUFFIX=epydoc.markup.doctest.LaTeXDoctestColorizer-class.html#SU [...]
+epydoc.markup.doctest.HTMLDoctestColorizer.SUFFIX
+epydoc.markup.doctest.LaTeXDoctestColorizer.SUFFIX
+epydoc.markup.doctest.XMLDoctestColorizer.SUFFIX" class="py-name" href="#" onclick="return doclink('link-9', 'SUFFIX', 'link-9');">SUFFIX</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L88"></a><tt class="py-lineno"> 88</tt>  <tt class="py-line"> </tt>
+<a name="L89"></a><tt class="py-lineno"> 89</tt>  <tt class="py-line">    <tt class="py-comment">#: A list of the names of all Python keywords.  ('as' is included</tt> </tt>
+<a name="L90"></a><tt class="py-lineno"> 90</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#: even though it is technically not a keyword.)</tt> </tt>
+<a name="L91"></a><tt class="py-lineno"> 91</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-10" class="py-name" targets="Variable epydoc.markup.doctest.DoctestColorizer._KEYWORDS=epydoc.markup.doctest.DoctestColorizer-class.html#_KEYWORDS"><a title="epydoc.markup.doctest.DoctestColorizer._KEYWORDS" class="py-name" href="#" onclick="return doclink('link-10', '_KEYWORDS', 'link-10');">_KEYWORDS</a></tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-s [...]
+<a name="L92"></a><tt class="py-lineno"> 92</tt>  <tt class="py-line">                 <tt class="py-string">"assert    elif      from      lambda    return"</tt> </tt>
+<a name="L93"></a><tt class="py-lineno"> 93</tt>  <tt class="py-line">                 <tt class="py-string">"break     else      global    not       try"</tt> </tt>
+<a name="L94"></a><tt class="py-lineno"> 94</tt>  <tt class="py-line">                 <tt class="py-string">"class     except    if        or        while"</tt> </tt>
+<a name="L95"></a><tt class="py-lineno"> 95</tt>  <tt class="py-line">                 <tt class="py-string">"continue  exec      import    pass      yield"</tt> </tt>
+<a name="L96"></a><tt class="py-lineno"> 96</tt>  <tt class="py-line">                 <tt class="py-string">"def       finally   in        print     as"</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L97"></a><tt class="py-lineno"> 97</tt>  <tt class="py-line"> </tt>
+<a name="L98"></a><tt class="py-lineno"> 98</tt>  <tt class="py-line">    <tt class="py-comment">#: A list of all Python builtins.</tt> </tt>
+<a name="L99"></a><tt class="py-lineno"> 99</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-11" class="py-name" targets="Variable epydoc.markup.doctest.DoctestColorizer._BUILTINS=epydoc.markup.doctest.DoctestColorizer-class.html#_BUILTINS"><a title="epydoc.markup.doctest.DoctestColorizer._BUILTINS" class="py-name" href="#" onclick="return doclink('link-11', '_BUILTINS', 'link-11');">_BUILTINS</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt id="link-12 [...]
+<a name="L100"></a><tt class="py-lineno">100</tt>  <tt class="py-line">                 <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-14" class="py-name"><a title="epydoc.markup.doctest.DoctestColorizer._BI" class="py-name" href="#" onclick="return doclink('link-14', '_BI', 'link-12');">_BI</a></tt><tt class="py-op">.</tt><tt class="py-name">startswith</tt><tt class="py-op">(</tt><tt class="py-string">'__'</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt>
+<a name="L101"></a><tt class="py-lineno">101</tt>  <tt class="py-line"> </tt>
+<a name="L102"></a><tt class="py-lineno">102</tt>  <tt class="py-line">    <tt class="py-comment">#: A regexp group that matches keywords.</tt> </tt>
+<a name="L103"></a><tt class="py-lineno">103</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-15" class="py-name" targets="Variable epydoc.markup.doctest.DoctestColorizer._KEYWORD_GRP=epydoc.markup.doctest.DoctestColorizer-class.html#_KEYWORD_GRP"><a title="epydoc.markup.doctest.DoctestColorizer._KEYWORD_GRP" class="py-name" href="#" onclick="return doclink('link-15', '_KEYWORD_GRP', 'link-15');">_KEYWORD_GRP</a></tt> <tt class="py-op">=</tt> <tt class="py-string">' [...]
+<a name="L104"></a><tt class="py-lineno">104</tt>  <tt class="py-line"> </tt>
+<a name="L105"></a><tt class="py-lineno">105</tt>  <tt class="py-line">    <tt class="py-comment">#: A regexp group that matches Python builtins.</tt> </tt>
+<a name="L106"></a><tt class="py-lineno">106</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-19" class="py-name" targets="Variable epydoc.markup.doctest.DoctestColorizer._BUILTIN_GRP=epydoc.markup.doctest.DoctestColorizer-class.html#_BUILTIN_GRP"><a title="epydoc.markup.doctest.DoctestColorizer._BUILTIN_GRP" class="py-name" href="#" onclick="return doclink('link-19', '_BUILTIN_GRP', 'link-19');">_BUILTIN_GRP</a></tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt [...]
+<a name="L107"></a><tt class="py-lineno">107</tt>  <tt class="py-line">                                                 <tt class="py-keyword">for</tt> <tt id="link-21" class="py-name"><a title="epydoc.markup.doctest.DoctestColorizer._BI" class="py-name" href="#" onclick="return doclink('link-21', '_BI', 'link-12');">_BI</a></tt> <tt class="py-keyword">in</tt> <tt id="link-22" class="py-name"><a title="epydoc.markup.doctest.DoctestColorizer._BUILTINS" class="py-name" href="#" onclick="re [...]
+<a name="L108"></a><tt class="py-lineno">108</tt>  <tt class="py-line"> </tt>
+<a name="L109"></a><tt class="py-lineno">109</tt>  <tt class="py-line">    <tt class="py-comment">#: A regexp group that matches Python strings.</tt> </tt>
+<a name="L110"></a><tt class="py-lineno">110</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-23" class="py-name" targets="Variable epydoc.markup.doctest.DoctestColorizer._STRING_GRP=epydoc.markup.doctest.DoctestColorizer-class.html#_STRING_GRP"><a title="epydoc.markup.doctest.DoctestColorizer._STRING_GRP" class="py-name" href="#" onclick="return doclink('link-23', '_STRING_GRP', 'link-23');">_STRING_GRP</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'|'</t [...]
+<a name="L111"></a><tt class="py-lineno">111</tt>  <tt class="py-line">        <tt class="py-op">[</tt><tt class="py-string">r'("""("""|.*?((?!").)"""))'</tt><tt class="py-op">,</tt> <tt class="py-string">r'("("|.*?((?!").)"))'</tt><tt class="py-op">,</tt> </tt>
+<a name="L112"></a><tt class="py-lineno">112</tt>  <tt class="py-line">         <tt class="py-string">r"('''('''|.*?[^\\']'''))"</tt><tt class="py-op">,</tt> <tt class="py-string">r"('('|.*?[^\\']'))"</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L113"></a><tt class="py-lineno">113</tt>  <tt class="py-line"> </tt>
+<a name="L114"></a><tt class="py-lineno">114</tt>  <tt class="py-line">    <tt class="py-comment">#: A regexp group that matches Python comments.</tt> </tt>
+<a name="L115"></a><tt class="py-lineno">115</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-24" class="py-name" targets="Variable epydoc.markup.doctest.DoctestColorizer._COMMENT_GRP=epydoc.markup.doctest.DoctestColorizer-class.html#_COMMENT_GRP"><a title="epydoc.markup.doctest.DoctestColorizer._COMMENT_GRP" class="py-name" href="#" onclick="return doclink('link-24', '_COMMENT_GRP', 'link-24');">_COMMENT_GRP</a></tt> <tt class="py-op">=</tt> <tt class="py-string">' [...]
+<a name="L116"></a><tt class="py-lineno">116</tt>  <tt class="py-line"> </tt>
+<a name="L117"></a><tt class="py-lineno">117</tt>  <tt class="py-line">    <tt class="py-comment">#: A regexp group that matches Python ">>>" prompts.</tt> </tt>
+<a name="L118"></a><tt class="py-lineno">118</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-25" class="py-name" targets="Variable epydoc.markup.doctest.DoctestColorizer._PROMPT1_GRP=epydoc.markup.doctest.DoctestColorizer-class.html#_PROMPT1_GRP"><a title="epydoc.markup.doctest.DoctestColorizer._PROMPT1_GRP" class="py-name" href="#" onclick="return doclink('link-25', '_PROMPT1_GRP', 'link-25');">_PROMPT1_GRP</a></tt> <tt class="py-op">=</tt> <tt class="py-string">r [...]
+<a name="L119"></a><tt class="py-lineno">119</tt>  <tt class="py-line">     </tt>
+<a name="L120"></a><tt class="py-lineno">120</tt>  <tt class="py-line">    <tt class="py-comment">#: A regexp group that matches Python "..." prompts.</tt> </tt>
+<a name="L121"></a><tt class="py-lineno">121</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-26" class="py-name" targets="Variable epydoc.markup.doctest.DoctestColorizer._PROMPT2_GRP=epydoc.markup.doctest.DoctestColorizer-class.html#_PROMPT2_GRP"><a title="epydoc.markup.doctest.DoctestColorizer._PROMPT2_GRP" class="py-name" href="#" onclick="return doclink('link-26', '_PROMPT2_GRP', 'link-26');">_PROMPT2_GRP</a></tt> <tt class="py-op">=</tt> <tt class="py-string">r [...]
+<a name="L122"></a><tt class="py-lineno">122</tt>  <tt class="py-line"> </tt>
+<a name="L123"></a><tt class="py-lineno">123</tt>  <tt class="py-line">    <tt class="py-comment">#: A regexp group that matches function and class definitions.</tt> </tt>
+<a name="L124"></a><tt class="py-lineno">124</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-27" class="py-name" targets="Variable epydoc.markup.doctest.DoctestColorizer._DEFINE_GRP=epydoc.markup.doctest.DoctestColorizer-class.html#_DEFINE_GRP"><a title="epydoc.markup.doctest.DoctestColorizer._DEFINE_GRP" class="py-name" href="#" onclick="return doclink('link-27', '_DEFINE_GRP', 'link-27');">_DEFINE_GRP</a></tt> <tt class="py-op">=</tt> <tt class="py-string">r'\b(? [...]
+<a name="L125"></a><tt class="py-lineno">125</tt>  <tt class="py-line"> </tt>
+<a name="L126"></a><tt class="py-lineno">126</tt>  <tt class="py-line">    <tt class="py-comment">#: A regexp that matches Python prompts</tt> </tt>
+<a name="L127"></a><tt class="py-lineno">127</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-28" class="py-name" targets="Variable epydoc.markup.doctest.DoctestColorizer.PROMPT_RE=epydoc.markup.doctest.DoctestColorizer-class.html#PROMPT_RE"><a title="epydoc.markup.doctest.DoctestColorizer.PROMPT_RE" class="py-name" href="#" onclick="return doclink('link-28', 'PROMPT_RE', 'link-28');">PROMPT_RE</a></tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class=" [...]
+<a name="L128"></a><tt class="py-lineno">128</tt>  <tt class="py-line">                           <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">MULTILINE</tt> <tt class="py-op">|</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">DOTALL</tt><tt class="py-op">)</tt> </tt>
+<a name="L129"></a><tt class="py-lineno">129</tt>  <tt class="py-line"> </tt>
+<a name="L130"></a><tt class="py-lineno">130</tt>  <tt class="py-line">    <tt class="py-comment">#: A regexp that matches Python "..." prompts.</tt> </tt>
+<a name="L131"></a><tt class="py-lineno">131</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-31" class="py-name" targets="Variable epydoc.markup.doctest.DoctestColorizer.PROMPT2_RE=epydoc.markup.doctest.DoctestColorizer-class.html#PROMPT2_RE"><a title="epydoc.markup.doctest.DoctestColorizer.PROMPT2_RE" class="py-name" href="#" onclick="return doclink('link-31', 'PROMPT2_RE', 'link-31');">PROMPT2_RE</a></tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt cl [...]
+<a name="L132"></a><tt class="py-lineno">132</tt>  <tt class="py-line">                            <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">MULTILINE</tt> <tt class="py-op">|</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">DOTALL</tt><tt class="py-op">)</tt> </tt>
+<a name="L133"></a><tt class="py-lineno">133</tt>  <tt class="py-line"> </tt>
+<a name="L134"></a><tt class="py-lineno">134</tt>  <tt class="py-line">    <tt class="py-comment">#: A regexp that matches doctest exception blocks.</tt> </tt>
+<a name="L135"></a><tt class="py-lineno">135</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-33" class="py-name" targets="Variable epydoc.markup.doctest.DoctestColorizer.EXCEPT_RE=epydoc.markup.doctest.DoctestColorizer-class.html#EXCEPT_RE"><a title="epydoc.markup.doctest.DoctestColorizer.EXCEPT_RE" class="py-name" href="#" onclick="return doclink('link-33', 'EXCEPT_RE', 'link-33');">EXCEPT_RE</a></tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class=" [...]
+<a name="L136"></a><tt class="py-lineno">136</tt>  <tt class="py-line">                           <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">DOTALL</tt> <tt class="py-op">|</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">MULTILINE</tt><tt class="py-op">)</tt> </tt>
+<a name="L137"></a><tt class="py-lineno">137</tt>  <tt class="py-line"> </tt>
+<a name="L138"></a><tt class="py-lineno">138</tt>  <tt class="py-line">    <tt class="py-comment">#: A regexp that matches doctest directives.</tt> </tt>
+<a name="L139"></a><tt class="py-lineno">139</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-34" class="py-name" targets="Variable epydoc.markup.doctest.DoctestColorizer.DOCTEST_DIRECTIVE_RE=epydoc.markup.doctest.DoctestColorizer-class.html#DOCTEST_DIRECTIVE_RE"><a title="epydoc.markup.doctest.DoctestColorizer.DOCTEST_DIRECTIVE_RE" class="py-name" href="#" onclick="return doclink('link-34', 'DOCTEST_DIRECTIVE_RE', 'link-34');">DOCTEST_DIRECTIVE_RE</a></tt> <tt clas [...]
+<a name="L140"></a><tt class="py-lineno">140</tt>  <tt class="py-line"> </tt>
+<a name="L141"></a><tt class="py-lineno">141</tt>  <tt class="py-line">    <tt class="py-comment">#: A regexp that matches all of the regions of a doctest block</tt> </tt>
+<a name="L142"></a><tt class="py-lineno">142</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#: that should be colored.</tt> </tt>
+<a name="L143"></a><tt class="py-lineno">143</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-35" class="py-name" targets="Variable epydoc.markup.doctest.DoctestColorizer.DOCTEST_RE=epydoc.markup.doctest.DoctestColorizer-class.html#DOCTEST_RE"><a title="epydoc.markup.doctest.DoctestColorizer.DOCTEST_RE" class="py-name" href="#" onclick="return doclink('link-35', 'DOCTEST_RE', 'link-35');">DOCTEST_RE</a></tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt cl [...]
+<a name="L144"></a><tt class="py-lineno">144</tt>  <tt class="py-line">        <tt class="py-string">r'(.*?)((?P<STRING>%s)|(?P<COMMENT>%s)|(?P<DEFINE>%s)|'</tt> </tt>
+<a name="L145"></a><tt class="py-lineno">145</tt>  <tt class="py-line">              <tt class="py-string">r'(?P<KEYWORD>%s)|(?P<BUILTIN>%s)|'</tt> </tt>
+<a name="L146"></a><tt class="py-lineno">146</tt>  <tt class="py-line">              <tt class="py-string">r'(?P<PROMPT1>%s)|(?P<PROMPT2>%s)|(?P<EOS>\Z))'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt> </tt>
+<a name="L147"></a><tt class="py-lineno">147</tt>  <tt class="py-line">        <tt id="link-36" class="py-name"><a title="epydoc.markup.doctest.DoctestColorizer._STRING_GRP" class="py-name" href="#" onclick="return doclink('link-36', '_STRING_GRP', 'link-23');">_STRING_GRP</a></tt><tt class="py-op">,</tt> <tt id="link-37" class="py-name"><a title="epydoc.markup.doctest.DoctestColorizer._COMMENT_GRP" class="py-name" href="#" onclick="return doclink('link-37', '_COMMENT_GRP', 'link-24');"> [...]
+<a name="L148"></a><tt class="py-lineno">148</tt>  <tt class="py-line">        <tt id="link-41" class="py-name"><a title="epydoc.markup.doctest.DoctestColorizer._PROMPT1_GRP" class="py-name" href="#" onclick="return doclink('link-41', '_PROMPT1_GRP', 'link-25');">_PROMPT1_GRP</a></tt><tt class="py-op">,</tt> <tt id="link-42" class="py-name"><a title="epydoc.markup.doctest.DoctestColorizer._PROMPT2_GRP" class="py-name" href="#" onclick="return doclink('link-42', '_PROMPT2_GRP', 'link-26') [...]
+<a name="L149"></a><tt class="py-lineno">149</tt>  <tt class="py-line"> </tt>
+<a name="L150"></a><tt class="py-lineno">150</tt>  <tt class="py-line">    <tt class="py-comment">#: This regular expression is used to find doctest examples in a</tt> </tt>
+<a name="L151"></a><tt class="py-lineno">151</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#: string.  This is copied from the standard Python doctest.py</tt> </tt>
+<a name="L152"></a><tt class="py-lineno">152</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#: module (after the refactoring in Python 2.4+).</tt> </tt>
+<a name="L153"></a><tt class="py-lineno">153</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-43" class="py-name" targets="Variable epydoc.markup.doctest.DoctestColorizer.DOCTEST_EXAMPLE_RE=epydoc.markup.doctest.DoctestColorizer-class.html#DOCTEST_EXAMPLE_RE"><a title="epydoc.markup.doctest.DoctestColorizer.DOCTEST_EXAMPLE_RE" class="py-name" href="#" onclick="return doclink('link-43', 'DOCTEST_EXAMPLE_RE', 'link-43');">DOCTEST_EXAMPLE_RE</a></tt> <tt class="py-op"> [...]
+<a name="L154"></a><tt class="py-lineno">154</tt>  <tt class="py-line"><tt class="py-string">        # Source consists of a PS1 line followed by zero or more PS2 lines.</tt> </tt>
+<a name="L155"></a><tt class="py-lineno">155</tt>  <tt class="py-line"><tt class="py-string">        (?P<source></tt> </tt>
+<a name="L156"></a><tt class="py-lineno">156</tt>  <tt class="py-line"><tt class="py-string">            (?:^(?P<indent> [ ]*) >>>    .*)    # PS1 line</tt> </tt>
+<a name="L157"></a><tt class="py-lineno">157</tt>  <tt class="py-line"><tt class="py-string">            (?:\n           [ ]*  \.\.\. .*)*   # PS2 lines</tt> </tt>
+<a name="L158"></a><tt class="py-lineno">158</tt>  <tt class="py-line"><tt class="py-string">          \n?)</tt> </tt>
+<a name="L159"></a><tt class="py-lineno">159</tt>  <tt class="py-line"><tt class="py-string">        # Want consists of any non-blank lines that do not start with PS1.</tt> </tt>
+<a name="L160"></a><tt class="py-lineno">160</tt>  <tt class="py-line"><tt class="py-string">        (?P<want> (?:(?![ ]*$)    # Not a blank line</tt> </tt>
+<a name="L161"></a><tt class="py-lineno">161</tt>  <tt class="py-line"><tt class="py-string">                     (?![ ]*>>>)  # Not a line starting with PS1</tt> </tt>
+<a name="L162"></a><tt class="py-lineno">162</tt>  <tt class="py-line"><tt class="py-string">                     .*$\n?       # But any other line</tt> </tt>
+<a name="L163"></a><tt class="py-lineno">163</tt>  <tt class="py-line"><tt class="py-string">                  )*)</tt> </tt>
+<a name="L164"></a><tt class="py-lineno">164</tt>  <tt class="py-line"><tt class="py-string">        '''</tt><tt class="py-op">,</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">MULTILINE</tt> <tt class="py-op">|</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">VERBOSE</tt><tt class="py-op">)</tt> </tt>
+<a name="L165"></a><tt class="py-lineno">165</tt>  <tt class="py-line"> </tt>
+<a name="DoctestColorizer.colorize_inline"></a><div id="DoctestColorizer.colorize_inline-def"><a name="L166"></a><tt class="py-lineno">166</tt> <a class="py-toggle" href="#" id="DoctestColorizer.colorize_inline-toggle" onclick="return toggle('DoctestColorizer.colorize_inline');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.doctest.DoctestColorizer-class.html#colorize_inline">colorize_inline</a><tt class="py-op">(</tt><tt class="p [...]
+</div><div id="DoctestColorizer.colorize_inline-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="DoctestColorizer.colorize_inline-expanded"><a name="L167"></a><tt class="py-lineno">167</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L168"></a><tt class="py-lineno">168</tt>  <tt class="py-line"><tt class="py-docstring">        Colorize a string containing Python code.  Do not add the</tt> </tt>
+<a name="L169"></a><tt class="py-lineno">169</tt>  <tt class="py-line"><tt class="py-docstring">        L{PREFIX} and L{SUFFIX} strings to the returned value.  This</tt> </tt>
+<a name="L170"></a><tt class="py-lineno">170</tt>  <tt class="py-line"><tt class="py-docstring">        method is intended for generating syntax-highlighted strings</tt> </tt>
+<a name="L171"></a><tt class="py-lineno">171</tt>  <tt class="py-line"><tt class="py-docstring">        that are appropriate for inclusion as inline expressions.</tt> </tt>
+<a name="L172"></a><tt class="py-lineno">172</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L173"></a><tt class="py-lineno">173</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-44" class="py-name"><a title="epydoc.markup.doctest.DoctestColorizer.DOCTEST_RE" class="py-name" href="#" onclick="return doclink('link-44', 'DOCTEST_RE', 'link-35');">DOCTEST_RE</a></tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.< [...]
+</div><a name="L174"></a><tt class="py-lineno">174</tt>  <tt class="py-line"> </tt>
+<a name="DoctestColorizer.colorize_codeblock"></a><div id="DoctestColorizer.colorize_codeblock-def"><a name="L175"></a><tt class="py-lineno">175</tt> <a class="py-toggle" href="#" id="DoctestColorizer.colorize_codeblock-toggle" onclick="return toggle('DoctestColorizer.colorize_codeblock');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.doctest.DoctestColorizer-class.html#colorize_codeblock">colorize_codeblock</a><tt class="py-op"> [...]
+</div><div id="DoctestColorizer.colorize_codeblock-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="DoctestColorizer.colorize_codeblock-expanded"><a name="L176"></a><tt class="py-lineno">176</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L177"></a><tt class="py-lineno">177</tt>  <tt class="py-line"><tt class="py-docstring">        Colorize a string containing only Python code.  This method</tt> </tt>
+<a name="L178"></a><tt class="py-lineno">178</tt>  <tt class="py-line"><tt class="py-docstring">        differs from L{colorize_doctest} in that it will not search</tt> </tt>
+<a name="L179"></a><tt class="py-lineno">179</tt>  <tt class="py-line"><tt class="py-docstring">        for doctest prompts when deciding how to colorize the string.</tt> </tt>
+<a name="L180"></a><tt class="py-lineno">180</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L181"></a><tt class="py-lineno">181</tt>  <tt class="py-line">        <tt id="link-46" class="py-name" targets="Method epydoc.markup.Field.body()=epydoc.markup.Field-class.html#body"><a title="epydoc.markup.Field.body" class="py-name" href="#" onclick="return doclink('link-46', 'body', 'link-46');">body</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-47" class="py-name"><a title="epydoc.markup.doctest.DoctestColorizer.DOCTEST_R [...]
+<a name="L182"></a><tt class="py-lineno">182</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-49" class="py-name"><a title="epydoc.markup.doctest.DoctestColorizer.PREFIX
+epydoc.markup.doctest.HTMLDoctestColorizer.PREFIX
+epydoc.markup.doctest.LaTeXDoctestColorizer.PREFIX
+epydoc.markup.doctest.XMLDoctestColorizer.PREFIX" class="py-name" href="#" onclick="return doclink('link-49', 'PREFIX', 'link-8');">PREFIX</a></tt> <tt class="py-op">+</tt> <tt id="link-50" class="py-name"><a title="epydoc.markup.Field.body" class="py-name" href="#" onclick="return doclink('link-50', 'body', 'link-46');">body</a></tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-51" class="py-name"><a title="epydoc.markup.doctest.DoctestColor [...]
+epydoc.markup.doctest.HTMLDoctestColorizer.SUFFIX
+epydoc.markup.doctest.LaTeXDoctestColorizer.SUFFIX
+epydoc.markup.doctest.XMLDoctestColorizer.SUFFIX" class="py-name" href="#" onclick="return doclink('link-51', 'SUFFIX', 'link-9');">SUFFIX</a></tt> </tt>
+</div><a name="L183"></a><tt class="py-lineno">183</tt>  <tt class="py-line"> </tt>
+<a name="DoctestColorizer.colorize_doctest"></a><div id="DoctestColorizer.colorize_doctest-def"><a name="L184"></a><tt class="py-lineno">184</tt> <a class="py-toggle" href="#" id="DoctestColorizer.colorize_doctest-toggle" onclick="return toggle('DoctestColorizer.colorize_doctest');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.doctest.DoctestColorizer-class.html#colorize_doctest">colorize_doctest</a><tt class="py-op">(</tt><tt cl [...]
+</div><div id="DoctestColorizer.colorize_doctest-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="DoctestColorizer.colorize_doctest-expanded"><a name="L185"></a><tt class="py-lineno">185</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L186"></a><tt class="py-lineno">186</tt>  <tt class="py-line"><tt class="py-docstring">        Colorize a string containing one or more doctest examples.</tt> </tt>
+<a name="L187"></a><tt class="py-lineno">187</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L188"></a><tt class="py-lineno">188</tt>  <tt class="py-line">        <tt class="py-name">output</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L189"></a><tt class="py-lineno">189</tt>  <tt class="py-line">        <tt class="py-name">charno</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L190"></a><tt class="py-lineno">190</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">m</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-52" class="py-name"><a title="epydoc.markup.doctest.DoctestColorizer.DOCTEST_EXAMPLE_RE" class="py-name" href="#" onclick="return doclink('link-52', 'DOCTEST_EXAMPLE_RE', 'link-43');">DOCTEST_EXAMPLE_RE</a></tt><tt class="py-op">.</tt><tt class="py-name">fi [...]
+<a name="L191"></a><tt class="py-lineno">191</tt>  <tt class="py-line">            <tt class="py-comment"># Parse the doctest example:</tt> </tt>
+<a name="L192"></a><tt class="py-lineno">192</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">pysrc</tt><tt class="py-op">,</tt> <tt class="py-name">want</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt class="py-name">group</tt><tt class="py-op">(</tt><tt class="py-string">'source'</tt><tt class="py-op">,</tt> <tt class="py-string">'want'</tt><tt class="py-op">)</tt> </tt>
+<a name="L193"></a><tt class="py-lineno">193</tt>  <tt class="py-line">            <tt class="py-comment"># Pre-example text:</tt> </tt>
+<a name="L194"></a><tt class="py-lineno">194</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">output</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">[</tt><tt class="py-name">charno</tt><tt class="py-op">:</tt><tt class="py-name">m</tt><tt class="py-op">.</tt><tt class="py-name">start</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py- [...]
+<a name="L195"></a><tt class="py-lineno">195</tt>  <tt class="py-line">            <tt class="py-comment"># Example source code:</tt> </tt>
+<a name="L196"></a><tt class="py-lineno">196</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">output</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-53" class="py-name"><a title="epydoc.markup.doctest.DoctestColorizer.DOCTEST_RE" class="py-name" href="#" onclick="return doclink('link-53', 'DOCTEST_RE', 'link-35');">DOCTEST_RE</a></tt><tt class="py-op"> [...]
+<a name="L197"></a><tt class="py-lineno">197</tt>  <tt class="py-line">            <tt class="py-comment"># Example output:</tt> </tt>
+<a name="L198"></a><tt class="py-lineno">198</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt class="py-name">want</tt><tt class="py-op">:</tt> </tt>
+<a name="L199"></a><tt class="py-lineno">199</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-55" class="py-name"><a title="epydoc.markup.doctest.DoctestColorizer.EXCEPT_RE" class="py-name" href="#" onclick="return doclink('link-55', 'EXCEPT_RE', 'link-33');">EXCEPT_RE</a></tt><tt class="py-op">.</tt><tt class="py-name">match</tt><tt class="py-op">(</tt><tt class="py-name">want</tt><tt class="py-op" [...]
+<a name="L200"></a><tt class="py-lineno">200</tt>  <tt class="py-line">                    <tt class="py-name">output</tt> <tt class="py-op">+=</tt> <tt class="py-string">'\n'</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-56" class="py-name" targets="Package epydoc.markup=epydoc.markup-module.html,Method epydoc.markup.doctest.DoctestColorizer.markup()=epydoc.markup [...]
+epydoc.markup.doctest.DoctestColorizer.markup
+epydoc.markup.doctest.HTMLDoctestColorizer.markup
+epydoc.markup.doctest.LaTeXDoctestColorizer.markup
+epydoc.markup.doctest.XMLDoctestColorizer.markup" class="py-name" href="#" onclick="return doclink('link-56', 'markup', 'link-56');">markup</a></tt><tt class="py-op">(</tt><tt class="py-name">line</tt><tt class="py-op">,</tt> <tt class="py-string">'except'</tt><tt class="py-op">)</tt> </tt>
+<a name="L201"></a><tt class="py-lineno">201</tt>  <tt class="py-line">                                         <tt class="py-keyword">for</tt> <tt class="py-name">line</tt> <tt class="py-keyword">in</tt> <tt class="py-name">want</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L202"></a><tt class="py-lineno">202</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L203"></a><tt class="py-lineno">203</tt>  <tt class="py-line">                    <tt class="py-name">output</tt> <tt class="py-op">+=</tt> <tt class="py-string">'\n'</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-57" class="py-name"><a title="epydoc.markup
+epydoc.markup.doctest.DoctestColorizer.markup
+epydoc.markup.doctest.HTMLDoctestColorizer.markup
+epydoc.markup.doctest.LaTeXDoctestColorizer.markup
+epydoc.markup.doctest.XMLDoctestColorizer.markup" class="py-name" href="#" onclick="return doclink('link-57', 'markup', 'link-56');">markup</a></tt><tt class="py-op">(</tt><tt class="py-name">line</tt><tt class="py-op">,</tt> <tt class="py-string">'output'</tt><tt class="py-op">)</tt> </tt>
+<a name="L204"></a><tt class="py-lineno">204</tt>  <tt class="py-line">                                         <tt class="py-keyword">for</tt> <tt class="py-name">line</tt> <tt class="py-keyword">in</tt> <tt class="py-name">want</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L205"></a><tt class="py-lineno">205</tt>  <tt class="py-line">            <tt class="py-comment"># Update charno</tt> </tt>
+<a name="L206"></a><tt class="py-lineno">206</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">charno</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt class="py-name">end</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L207"></a><tt class="py-lineno">207</tt>  <tt class="py-line">        <tt class="py-comment"># Add any remaining post-example text.</tt> </tt>
+<a name="L208"></a><tt class="py-lineno">208</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">output</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">[</tt><tt class="py-name">charno</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L209"></a><tt class="py-lineno">209</tt>  <tt class="py-line">         </tt>
+<a name="L210"></a><tt class="py-lineno">210</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-58" class="py-name"><a title="epydoc.markup.doctest.DoctestColorizer.PREFIX
+epydoc.markup.doctest.HTMLDoctestColorizer.PREFIX
+epydoc.markup.doctest.LaTeXDoctestColorizer.PREFIX
+epydoc.markup.doctest.XMLDoctestColorizer.PREFIX" class="py-name" href="#" onclick="return doclink('link-58', 'PREFIX', 'link-8');">PREFIX</a></tt> <tt class="py-op">+</tt> <tt class="py-string">''</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">output</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-59" class="py-name"><a title="epydoc.markup.doctest.DoctestColoriz [...]
+epydoc.markup.doctest.HTMLDoctestColorizer.SUFFIX
+epydoc.markup.doctest.LaTeXDoctestColorizer.SUFFIX
+epydoc.markup.doctest.XMLDoctestColorizer.SUFFIX" class="py-name" href="#" onclick="return doclink('link-59', 'SUFFIX', 'link-9');">SUFFIX</a></tt> </tt>
+</div><a name="L211"></a><tt class="py-lineno">211</tt>  <tt class="py-line">     </tt>
+<a name="DoctestColorizer.subfunc"></a><div id="DoctestColorizer.subfunc-def"><a name="L212"></a><tt class="py-lineno">212</tt> <a class="py-toggle" href="#" id="DoctestColorizer.subfunc-toggle" onclick="return toggle('DoctestColorizer.subfunc');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.doctest.DoctestColorizer-class.html#subfunc">subfunc</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt c [...]
+</div><div id="DoctestColorizer.subfunc-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="DoctestColorizer.subfunc-expanded"><a name="L213"></a><tt class="py-lineno">213</tt>  <tt class="py-line">        <tt class="py-name">other</tt><tt class="py-op">,</tt> <tt class="py-name">text</tt> <tt class="py-op">=</tt> <tt class="py-name">match</tt><tt class="py-op">.</tt><tt class="py-name">group</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op [...]
+<a name="L214"></a><tt class="py-lineno">214</tt>  <tt class="py-line">        <tt class="py-comment">#print 'M %20r %20r' % (other, text) # <- for debugging</tt> </tt>
+<a name="L215"></a><tt class="py-lineno">215</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">other</tt><tt class="py-op">:</tt> </tt>
+<a name="L216"></a><tt class="py-lineno">216</tt>  <tt class="py-line">            <tt class="py-name">other</tt> <tt class="py-op">=</tt> <tt class="py-string">'\n'</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-60" class="py-name"><a title="epydoc.markup
+epydoc.markup.doctest.DoctestColorizer.markup
+epydoc.markup.doctest.HTMLDoctestColorizer.markup
+epydoc.markup.doctest.LaTeXDoctestColorizer.markup
+epydoc.markup.doctest.XMLDoctestColorizer.markup" class="py-name" href="#" onclick="return doclink('link-60', 'markup', 'link-56');">markup</a></tt><tt class="py-op">(</tt><tt class="py-name">line</tt><tt class="py-op">,</tt> <tt class="py-string">'other'</tt><tt class="py-op">)</tt> </tt>
+<a name="L217"></a><tt class="py-lineno">217</tt>  <tt class="py-line">                               <tt class="py-keyword">for</tt> <tt class="py-name">line</tt> <tt class="py-keyword">in</tt> <tt class="py-name">other</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L218"></a><tt class="py-lineno">218</tt>  <tt class="py-line">             </tt>
+<a name="L219"></a><tt class="py-lineno">219</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">match</tt><tt class="py-op">.</tt><tt class="py-name">group</tt><tt class="py-op">(</tt><tt class="py-string">'PROMPT1'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L220"></a><tt class="py-lineno">220</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">other</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-61" class="py-name"><a title="epydoc.markup
+epydoc.markup.doctest.DoctestColorizer.markup
+epydoc.markup.doctest.HTMLDoctestColorizer.markup
+epydoc.markup.doctest.LaTeXDoctestColorizer.markup
+epydoc.markup.doctest.XMLDoctestColorizer.markup" class="py-name" href="#" onclick="return doclink('link-61', 'markup', 'link-56');">markup</a></tt><tt class="py-op">(</tt><tt class="py-name">text</tt><tt class="py-op">,</tt> <tt class="py-string">'prompt'</tt><tt class="py-op">)</tt> </tt>
+<a name="L221"></a><tt class="py-lineno">221</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">match</tt><tt class="py-op">.</tt><tt class="py-name">group</tt><tt class="py-op">(</tt><tt class="py-string">'PROMPT2'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L222"></a><tt class="py-lineno">222</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">other</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-62" class="py-name"><a title="epydoc.markup
+epydoc.markup.doctest.DoctestColorizer.markup
+epydoc.markup.doctest.HTMLDoctestColorizer.markup
+epydoc.markup.doctest.LaTeXDoctestColorizer.markup
+epydoc.markup.doctest.XMLDoctestColorizer.markup" class="py-name" href="#" onclick="return doclink('link-62', 'markup', 'link-56');">markup</a></tt><tt class="py-op">(</tt><tt class="py-name">text</tt><tt class="py-op">,</tt> <tt class="py-string">'more'</tt><tt class="py-op">)</tt> </tt>
+<a name="L223"></a><tt class="py-lineno">223</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">match</tt><tt class="py-op">.</tt><tt class="py-name">group</tt><tt class="py-op">(</tt><tt class="py-string">'KEYWORD'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L224"></a><tt class="py-lineno">224</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">other</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-63" class="py-name"><a title="epydoc.markup
+epydoc.markup.doctest.DoctestColorizer.markup
+epydoc.markup.doctest.HTMLDoctestColorizer.markup
+epydoc.markup.doctest.LaTeXDoctestColorizer.markup
+epydoc.markup.doctest.XMLDoctestColorizer.markup" class="py-name" href="#" onclick="return doclink('link-63', 'markup', 'link-56');">markup</a></tt><tt class="py-op">(</tt><tt class="py-name">text</tt><tt class="py-op">,</tt> <tt class="py-string">'keyword'</tt><tt class="py-op">)</tt> </tt>
+<a name="L225"></a><tt class="py-lineno">225</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">match</tt><tt class="py-op">.</tt><tt class="py-name">group</tt><tt class="py-op">(</tt><tt class="py-string">'BUILTIN'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L226"></a><tt class="py-lineno">226</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">other</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-64" class="py-name"><a title="epydoc.markup
+epydoc.markup.doctest.DoctestColorizer.markup
+epydoc.markup.doctest.HTMLDoctestColorizer.markup
+epydoc.markup.doctest.LaTeXDoctestColorizer.markup
+epydoc.markup.doctest.XMLDoctestColorizer.markup" class="py-name" href="#" onclick="return doclink('link-64', 'markup', 'link-56');">markup</a></tt><tt class="py-op">(</tt><tt class="py-name">text</tt><tt class="py-op">,</tt> <tt class="py-string">'builtin'</tt><tt class="py-op">)</tt> </tt>
+<a name="L227"></a><tt class="py-lineno">227</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">match</tt><tt class="py-op">.</tt><tt class="py-name">group</tt><tt class="py-op">(</tt><tt class="py-string">'COMMENT'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L228"></a><tt class="py-lineno">228</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">other</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-65" class="py-name"><a title="epydoc.markup
+epydoc.markup.doctest.DoctestColorizer.markup
+epydoc.markup.doctest.HTMLDoctestColorizer.markup
+epydoc.markup.doctest.LaTeXDoctestColorizer.markup
+epydoc.markup.doctest.XMLDoctestColorizer.markup" class="py-name" href="#" onclick="return doclink('link-65', 'markup', 'link-56');">markup</a></tt><tt class="py-op">(</tt><tt class="py-name">text</tt><tt class="py-op">,</tt> <tt class="py-string">'comment'</tt><tt class="py-op">)</tt> </tt>
+<a name="L229"></a><tt class="py-lineno">229</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">match</tt><tt class="py-op">.</tt><tt class="py-name">group</tt><tt class="py-op">(</tt><tt class="py-string">'STRING'</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-string">'\n'</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">text</tt><tt class="py-op">:</tt> </tt>
+<a name="L230"></a><tt class="py-lineno">230</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">other</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-66" class="py-name"><a title="epydoc.markup
+epydoc.markup.doctest.DoctestColorizer.markup
+epydoc.markup.doctest.HTMLDoctestColorizer.markup
+epydoc.markup.doctest.LaTeXDoctestColorizer.markup
+epydoc.markup.doctest.XMLDoctestColorizer.markup" class="py-name" href="#" onclick="return doclink('link-66', 'markup', 'link-56');">markup</a></tt><tt class="py-op">(</tt><tt class="py-name">text</tt><tt class="py-op">,</tt> <tt class="py-string">'string'</tt><tt class="py-op">)</tt> </tt>
+<a name="L231"></a><tt class="py-lineno">231</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">match</tt><tt class="py-op">.</tt><tt class="py-name">group</tt><tt class="py-op">(</tt><tt class="py-string">'STRING'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L232"></a><tt class="py-lineno">232</tt>  <tt class="py-line">            <tt class="py-comment"># It's a multiline string; colorize the string & prompt</tt> </tt>
+<a name="L233"></a><tt class="py-lineno">233</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># portion of each line.</tt> </tt>
+<a name="L234"></a><tt class="py-lineno">234</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">pieces</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L235"></a><tt class="py-lineno">235</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">line</tt> <tt class="py-keyword">in</tt> <tt class="py-name">text</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L236"></a><tt class="py-lineno">236</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-67" class="py-name"><a title="epydoc.markup.doctest.DoctestColorizer.PROMPT2_RE" class="py-name" href="#" onclick="return doclink('link-67', 'PROMPT2_RE', 'link-31');">PROMPT2_RE</a></tt><tt class="py-op">.</tt><tt class="py-name">match</tt><tt class="py-op">(</tt><tt class="py-name">line</tt><tt class="py- [...]
+<a name="L237"></a><tt class="py-lineno">237</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">line</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-number">4</tt><tt class="py-op">:</tt> </tt>
+<a name="L238"></a><tt class="py-lineno">238</tt>  <tt class="py-line">                        <tt class="py-name">pieces</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-68" class="py-name"><a title="epydoc.markup
+epydoc.markup.doctest.DoctestColorizer.markup
+epydoc.markup.doctest.HTMLDoctestColorizer.markup
+epydoc.markup.doctest.LaTeXDoctestColorizer.markup
+epydoc.markup.doctest.XMLDoctestColorizer.markup" class="py-name" href="#" onclick="return doclink('link-68', 'markup', 'link-56');">markup</a></tt><tt class="py-op">(</tt><tt class="py-name">line</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-number">4</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-string">'more'</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> </tt>
+<a name="L239"></a><tt class="py-lineno">239</tt>  <tt class="py-line">                                      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-69" class="py-name"><a title="epydoc.markup
+epydoc.markup.doctest.DoctestColorizer.markup
+epydoc.markup.doctest.HTMLDoctestColorizer.markup
+epydoc.markup.doctest.LaTeXDoctestColorizer.markup
+epydoc.markup.doctest.XMLDoctestColorizer.markup" class="py-name" href="#" onclick="return doclink('link-69', 'markup', 'link-56');">markup</a></tt><tt class="py-op">(</tt><tt class="py-name">line</tt><tt class="py-op">[</tt><tt class="py-number">4</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-string">'string'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L240"></a><tt class="py-lineno">240</tt>  <tt class="py-line">                    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L241"></a><tt class="py-lineno">241</tt>  <tt class="py-line">                        <tt class="py-name">pieces</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-70" class="py-name"><a title="epydoc.markup
+epydoc.markup.doctest.DoctestColorizer.markup
+epydoc.markup.doctest.HTMLDoctestColorizer.markup
+epydoc.markup.doctest.LaTeXDoctestColorizer.markup
+epydoc.markup.doctest.XMLDoctestColorizer.markup" class="py-name" href="#" onclick="return doclink('link-70', 'markup', 'link-56');">markup</a></tt><tt class="py-op">(</tt><tt class="py-name">line</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-number">4</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-string">'more'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L242"></a><tt class="py-lineno">242</tt>  <tt class="py-line">                <tt class="py-keyword">elif</tt> <tt class="py-name">line</tt><tt class="py-op">:</tt> </tt>
+<a name="L243"></a><tt class="py-lineno">243</tt>  <tt class="py-line">                    <tt class="py-name">pieces</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-71" class="py-name"><a title="epydoc.markup
+epydoc.markup.doctest.DoctestColorizer.markup
+epydoc.markup.doctest.HTMLDoctestColorizer.markup
+epydoc.markup.doctest.LaTeXDoctestColorizer.markup
+epydoc.markup.doctest.XMLDoctestColorizer.markup" class="py-name" href="#" onclick="return doclink('link-71', 'markup', 'link-56');">markup</a></tt><tt class="py-op">(</tt><tt class="py-name">line</tt><tt class="py-op">,</tt> <tt class="py-string">'string'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L244"></a><tt class="py-lineno">244</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L245"></a><tt class="py-lineno">245</tt>  <tt class="py-line">                    <tt class="py-name">pieces</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">''</tt><tt class="py-op">)</tt> </tt>
+<a name="L246"></a><tt class="py-lineno">246</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">other</tt> <tt class="py-op">+</tt> <tt class="py-string">'\n'</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">pieces</tt><tt class="py-op">)</tt> </tt>
+<a name="L247"></a><tt class="py-lineno">247</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">match</tt><tt class="py-op">.</tt><tt class="py-name">group</tt><tt class="py-op">(</tt><tt class="py-string">'DEFINE'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L248"></a><tt class="py-lineno">248</tt>  <tt class="py-line">            <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">match</tt><tt class="py-op">(</tt><tt class="py-string">'(?P<def>\w+)(?P<space>\s+)(?P<name>\w+)'</tt><tt class="py-op">,</tt> <tt class="py-name">text</tt><tt class="py-op">)</tt> </tt>
+<a name="L249"></a><tt class="py-lineno">249</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">other</tt> <tt class="py-op">+</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-72" class="py-name"><a title="epydoc.markup
+epydoc.markup.doctest.DoctestColorizer.markup
+epydoc.markup.doctest.HTMLDoctestColorizer.markup
+epydoc.markup.doctest.LaTeXDoctestColorizer.markup
+epydoc.markup.doctest.XMLDoctestColorizer.markup" class="py-name" href="#" onclick="return doclink('link-72', 'markup', 'link-56');">markup</a></tt><tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">.</tt><tt class="py-name">group</tt><tt class="py-op">(</tt><tt class="py-string">'def'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-string">'keyword'</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> </tt>
+<a name="L250"></a><tt class="py-lineno">250</tt>  <tt class="py-line">                        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-73" class="py-name"><a title="epydoc.markup
+epydoc.markup.doctest.DoctestColorizer.markup
+epydoc.markup.doctest.HTMLDoctestColorizer.markup
+epydoc.markup.doctest.LaTeXDoctestColorizer.markup
+epydoc.markup.doctest.XMLDoctestColorizer.markup" class="py-name" href="#" onclick="return doclink('link-73', 'markup', 'link-56');">markup</a></tt><tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">.</tt><tt class="py-name">group</tt><tt class="py-op">(</tt><tt class="py-string">'space'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-string">'other'</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> </tt>
+<a name="L251"></a><tt class="py-lineno">251</tt>  <tt class="py-line">                        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-74" class="py-name"><a title="epydoc.markup
+epydoc.markup.doctest.DoctestColorizer.markup
+epydoc.markup.doctest.HTMLDoctestColorizer.markup
+epydoc.markup.doctest.LaTeXDoctestColorizer.markup
+epydoc.markup.doctest.XMLDoctestColorizer.markup" class="py-name" href="#" onclick="return doclink('link-74', 'markup', 'link-56');">markup</a></tt><tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">.</tt><tt class="py-name">group</tt><tt class="py-op">(</tt><tt class="py-string">'name'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-string">'defname'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L252"></a><tt class="py-lineno">252</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">match</tt><tt class="py-op">.</tt><tt class="py-name">group</tt><tt class="py-op">(</tt><tt class="py-string">'EOS'</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L253"></a><tt class="py-lineno">253</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">other</tt> </tt>
+<a name="L254"></a><tt class="py-lineno">254</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L255"></a><tt class="py-lineno">255</tt>  <tt class="py-line">            <tt class="py-keyword">assert</tt> <tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-string">'Unexpected match!'</tt> </tt>
+</div><a name="L256"></a><tt class="py-lineno">256</tt>  <tt class="py-line"> </tt>
+<a name="DoctestColorizer.markup"></a><div id="DoctestColorizer.markup-def"><a name="L257"></a><tt class="py-lineno">257</tt> <a class="py-toggle" href="#" id="DoctestColorizer.markup-toggle" onclick="return toggle('DoctestColorizer.markup');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.doctest.DoctestColorizer-class.html#markup">markup</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class=" [...]
+</div><div id="DoctestColorizer.markup-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="DoctestColorizer.markup-expanded"><a name="L258"></a><tt class="py-lineno">258</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L259"></a><tt class="py-lineno">259</tt>  <tt class="py-line"><tt class="py-docstring">        Apply syntax highlighting to a single substring from a doctest</tt> </tt>
+<a name="L260"></a><tt class="py-lineno">260</tt>  <tt class="py-line"><tt class="py-docstring">        block.  C{s} is the substring, and C{tag} is the tag that</tt> </tt>
+<a name="L261"></a><tt class="py-lineno">261</tt>  <tt class="py-line"><tt class="py-docstring">        should be applied to the substring.  C{tag} will be one of the</tt> </tt>
+<a name="L262"></a><tt class="py-lineno">262</tt>  <tt class="py-line"><tt class="py-docstring">        following strings:</tt> </tt>
+<a name="L263"></a><tt class="py-lineno">263</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt>
+<a name="L264"></a><tt class="py-lineno">264</tt>  <tt class="py-line"><tt class="py-docstring">          - C{prompt} -- the Python PS1 prompt (>>>)</tt> </tt>
+<a name="L265"></a><tt class="py-lineno">265</tt>  <tt class="py-line"><tt class="py-docstring">          - C{more} -- the Python PS2 prompt (...)</tt> </tt>
+<a name="L266"></a><tt class="py-lineno">266</tt>  <tt class="py-line"><tt class="py-docstring">          - C{keyword} -- a Python keyword (for, if, etc.)</tt> </tt>
+<a name="L267"></a><tt class="py-lineno">267</tt>  <tt class="py-line"><tt class="py-docstring">          - C{builtin} -- a Python builtin name (abs, dir, etc.)</tt> </tt>
+<a name="L268"></a><tt class="py-lineno">268</tt>  <tt class="py-line"><tt class="py-docstring">          - C{string} -- a string literal</tt> </tt>
+<a name="L269"></a><tt class="py-lineno">269</tt>  <tt class="py-line"><tt class="py-docstring">          - C{comment} -- a comment</tt> </tt>
+<a name="L270"></a><tt class="py-lineno">270</tt>  <tt class="py-line"><tt class="py-docstring">          - C{except} -- an exception traceback (up to the next >>>)</tt> </tt>
+<a name="L271"></a><tt class="py-lineno">271</tt>  <tt class="py-line"><tt class="py-docstring">          - C{output} -- the output from a doctest block.</tt> </tt>
+<a name="L272"></a><tt class="py-lineno">272</tt>  <tt class="py-line"><tt class="py-docstring">          - C{defname} -- the name of a function or class defined by</tt> </tt>
+<a name="L273"></a><tt class="py-lineno">273</tt>  <tt class="py-line"><tt class="py-docstring">            a C{def} or C{class} statement.</tt> </tt>
+<a name="L274"></a><tt class="py-lineno">274</tt>  <tt class="py-line"><tt class="py-docstring">          - C{other} -- anything else (does *not* include output.)</tt> </tt>
+<a name="L275"></a><tt class="py-lineno">275</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L276"></a><tt class="py-lineno">276</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">AssertionError</tt><tt class="py-op">(</tt><tt class="py-string">"Abstract method"</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L277"></a><tt class="py-lineno">277</tt>  <tt class="py-line"> </tt>
+<a name="XMLDoctestColorizer"></a><div id="XMLDoctestColorizer-def"><a name="L278"></a><tt class="py-lineno">278</tt> <a class="py-toggle" href="#" id="XMLDoctestColorizer-toggle" onclick="return toggle('XMLDoctestColorizer');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="epydoc.markup.doctest.XMLDoctestColorizer-class.html">XMLDoctestColorizer</a><tt class="py-op">(</tt><tt class="py-base-class">DoctestColorizer</tt><tt class="py-op">)</tt><tt  [...]
+</div><div id="XMLDoctestColorizer-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="XMLDoctestColorizer-expanded"><a name="L279"></a><tt class="py-lineno">279</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L280"></a><tt class="py-lineno">280</tt>  <tt class="py-line"><tt class="py-docstring">    A subclass of DoctestColorizer that generates XML-like output.</tt> </tt>
+<a name="L281"></a><tt class="py-lineno">281</tt>  <tt class="py-line"><tt class="py-docstring">    This class is mainly intended to be used for testing purposes.</tt> </tt>
+<a name="L282"></a><tt class="py-lineno">282</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L283"></a><tt class="py-lineno">283</tt>  <tt class="py-line">    <tt id="link-75" class="py-name"><a title="epydoc.markup.doctest.DoctestColorizer.PREFIX
+epydoc.markup.doctest.HTMLDoctestColorizer.PREFIX
+epydoc.markup.doctest.LaTeXDoctestColorizer.PREFIX
+epydoc.markup.doctest.XMLDoctestColorizer.PREFIX" class="py-name" href="#" onclick="return doclink('link-75', 'PREFIX', 'link-8');">PREFIX</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'<colorized>\n'</tt> </tt>
+<a name="L284"></a><tt class="py-lineno">284</tt>  <tt class="py-line">    <tt id="link-76" class="py-name"><a title="epydoc.markup.doctest.DoctestColorizer.SUFFIX
+epydoc.markup.doctest.HTMLDoctestColorizer.SUFFIX
+epydoc.markup.doctest.LaTeXDoctestColorizer.SUFFIX
+epydoc.markup.doctest.XMLDoctestColorizer.SUFFIX" class="py-name" href="#" onclick="return doclink('link-76', 'SUFFIX', 'link-9');">SUFFIX</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'</colorized>\n'</tt> </tt>
+<a name="XMLDoctestColorizer.markup"></a><div id="XMLDoctestColorizer.markup-def"><a name="L285"></a><tt class="py-lineno">285</tt> <a class="py-toggle" href="#" id="XMLDoctestColorizer.markup-toggle" onclick="return toggle('XMLDoctestColorizer.markup');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.doctest.XMLDoctestColorizer-class.html#markup">markup</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</ [...]
+</div><div id="XMLDoctestColorizer.markup-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="XMLDoctestColorizer.markup-expanded"><a name="L286"></a><tt class="py-lineno">286</tt>  <tt class="py-line">        <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">s</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">'&'</tt><tt class="py-op">,</tt> <tt class="py-string">'&amp;'</tt><tt [...]
+<a name="L287"></a><tt class="py-lineno">287</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-77" class="py-name" targets="Method epydoc.markup.Field.tag()=epydoc.markup.Field-class.html#tag"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-77', 'tag', 'link-77');">tag</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'other'</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-name">s</ [...]
+<a name="L288"></a><tt class="py-lineno">288</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-string">'<%s>%s</%s>'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt id="link-78" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-78', 'tag', 'link-77');">tag</a></tt><tt class="py-op">,</tt> <tt class="py-name">s</tt><tt clas [...]
+</div></div><a name="L289"></a><tt class="py-lineno">289</tt>  <tt class="py-line"> </tt>
+<a name="HTMLDoctestColorizer"></a><div id="HTMLDoctestColorizer-def"><a name="L290"></a><tt class="py-lineno">290</tt> <a class="py-toggle" href="#" id="HTMLDoctestColorizer-toggle" onclick="return toggle('HTMLDoctestColorizer');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="epydoc.markup.doctest.HTMLDoctestColorizer-class.html">HTMLDoctestColorizer</a><tt class="py-op">(</tt><tt class="py-base-class">DoctestColorizer</tt><tt class="py-op">)</t [...]
+</div><div id="HTMLDoctestColorizer-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="HTMLDoctestColorizer-expanded"><a name="L291"></a><tt class="py-lineno">291</tt>  <tt class="py-line">    <tt class="py-docstring">"""A subclass of DoctestColorizer that generates HTML output."""</tt> </tt>
+<a name="L292"></a><tt class="py-lineno">292</tt>  <tt class="py-line">    <tt id="link-80" class="py-name"><a title="epydoc.markup.doctest.DoctestColorizer.PREFIX
+epydoc.markup.doctest.HTMLDoctestColorizer.PREFIX
+epydoc.markup.doctest.LaTeXDoctestColorizer.PREFIX
+epydoc.markup.doctest.XMLDoctestColorizer.PREFIX" class="py-name" href="#" onclick="return doclink('link-80', 'PREFIX', 'link-8');">PREFIX</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'<pre class="py-doctest">\n'</tt> </tt>
+<a name="L293"></a><tt class="py-lineno">293</tt>  <tt class="py-line">    <tt id="link-81" class="py-name"><a title="epydoc.markup.doctest.DoctestColorizer.SUFFIX
+epydoc.markup.doctest.HTMLDoctestColorizer.SUFFIX
+epydoc.markup.doctest.LaTeXDoctestColorizer.SUFFIX
+epydoc.markup.doctest.XMLDoctestColorizer.SUFFIX" class="py-name" href="#" onclick="return doclink('link-81', 'SUFFIX', 'link-9');">SUFFIX</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'</pre>\n'</tt> </tt>
+<a name="HTMLDoctestColorizer.markup"></a><div id="HTMLDoctestColorizer.markup-def"><a name="L294"></a><tt class="py-lineno">294</tt> <a class="py-toggle" href="#" id="HTMLDoctestColorizer.markup-toggle" onclick="return toggle('HTMLDoctestColorizer.markup');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.doctest.HTMLDoctestColorizer-class.html#markup">markup</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op [...]
+</div><div id="HTMLDoctestColorizer.markup-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="HTMLDoctestColorizer.markup-expanded"><a name="L295"></a><tt class="py-lineno">295</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-82" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-82', 'tag', 'link-77');">tag</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'other'</tt><tt  [...]
+<a name="L296"></a><tt class="py-lineno">296</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt id="link-83" class="py-name"><a title="epydoc.util.plaintext_to_html" class="py-name" href="#" onclick="return doclink('link-83', 'plaintext_to_html', 'link-2');">plaintext_to_html</a></tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> </tt>
+<a name="L297"></a><tt class="py-lineno">297</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L298"></a><tt class="py-lineno">298</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-string">'<span class="py-%s">%s</span>'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L299"></a><tt class="py-lineno">299</tt>  <tt class="py-line">                    <tt class="py-op">(</tt><tt id="link-84" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-84', 'tag', 'link-77');">tag</a></tt><tt class="py-op">,</tt> <tt id="link-85" class="py-name"><a title="epydoc.util.plaintext_to_html" class="py-name" href="#" onclick="return doclink('link-85', 'plaintext_to_html', 'link-2');">plaintext_to_html</a></tt [...]
+</div></div><a name="L300"></a><tt class="py-lineno">300</tt>  <tt class="py-line"> </tt>
+<a name="LaTeXDoctestColorizer"></a><div id="LaTeXDoctestColorizer-def"><a name="L301"></a><tt class="py-lineno">301</tt> <a class="py-toggle" href="#" id="LaTeXDoctestColorizer-toggle" onclick="return toggle('LaTeXDoctestColorizer');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="epydoc.markup.doctest.LaTeXDoctestColorizer-class.html">LaTeXDoctestColorizer</a><tt class="py-op">(</tt><tt class="py-base-class">DoctestColorizer</tt><tt class="py-op [...]
+</div><div id="LaTeXDoctestColorizer-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="LaTeXDoctestColorizer-expanded"><a name="L302"></a><tt class="py-lineno">302</tt>  <tt class="py-line">    <tt class="py-docstring">"""A subclass of DoctestColorizer that generates LaTeX output."""</tt> </tt>
+<a name="L303"></a><tt class="py-lineno">303</tt>  <tt class="py-line">    <tt id="link-86" class="py-name"><a title="epydoc.markup.doctest.DoctestColorizer.PREFIX
+epydoc.markup.doctest.HTMLDoctestColorizer.PREFIX
+epydoc.markup.doctest.LaTeXDoctestColorizer.PREFIX
+epydoc.markup.doctest.XMLDoctestColorizer.PREFIX" class="py-name" href="#" onclick="return doclink('link-86', 'PREFIX', 'link-8');">PREFIX</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'\\begin{alltt}\n'</tt> </tt>
+<a name="L304"></a><tt class="py-lineno">304</tt>  <tt class="py-line">    <tt id="link-87" class="py-name"><a title="epydoc.markup.doctest.DoctestColorizer.SUFFIX
+epydoc.markup.doctest.HTMLDoctestColorizer.SUFFIX
+epydoc.markup.doctest.LaTeXDoctestColorizer.SUFFIX
+epydoc.markup.doctest.XMLDoctestColorizer.SUFFIX" class="py-name" href="#" onclick="return doclink('link-87', 'SUFFIX', 'link-9');">SUFFIX</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'\\end{alltt}\n'</tt> </tt>
+<a name="LaTeXDoctestColorizer.markup"></a><div id="LaTeXDoctestColorizer.markup-def"><a name="L305"></a><tt class="py-lineno">305</tt> <a class="py-toggle" href="#" id="LaTeXDoctestColorizer.markup-toggle" onclick="return toggle('LaTeXDoctestColorizer.markup');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.doctest.LaTeXDoctestColorizer-class.html#markup">markup</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class=" [...]
+</div><div id="LaTeXDoctestColorizer.markup-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="LaTeXDoctestColorizer.markup-expanded"><a name="L306"></a><tt class="py-lineno">306</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-88" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-88', 'tag', 'link-77');">tag</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'other'</tt><t [...]
+<a name="L307"></a><tt class="py-lineno">307</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt id="link-89" class="py-name"><a title="epydoc.util.plaintext_to_latex" class="py-name" href="#" onclick="return doclink('link-89', 'plaintext_to_latex', 'link-3');">plaintext_to_latex</a></tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> </tt>
+<a name="L308"></a><tt class="py-lineno">308</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L309"></a><tt class="py-lineno">309</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">'\\pysrc%s{%s}'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt id="link-90" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-90', 'tag', 'link-77');">tag</a></tt><tt class="py-op">,</tt> <tt id="link-91" class="py-name"><a title="epydoc.util.plaintext_to_latex" class="py-name" href=" [...]
+</div></div><a name="L310"></a><tt class="py-lineno">310</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:09:31 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.markup.doctest.DoctestColorizer-class.html b/doc/api/epydoc.markup.doctest.DoctestColorizer-class.html
new file mode 100644
index 0000000..c8da72f
--- /dev/null
+++ b/doc/api/epydoc.markup.doctest.DoctestColorizer-class.html
@@ -0,0 +1,899 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.markup.doctest.DoctestColorizer</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.markup-module.html">Package markup</a> ::
+        <a href="epydoc.markup.doctest-module.html">Module doctest</a> ::
+        Class DoctestColorizer
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.markup.doctest.DoctestColorizer-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class DoctestColorizer</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.markup.doctest-pysrc.html#DoctestColorizer">source code</a></span></p>
+<center>
+<center>  <map id="uml_class_diagram_for_epydoc_m_5" name="uml_class_diagram_for_epydoc_m_5">
+<area shape="rect" href="epydoc.markup.doctest.HTMLDoctestColorizer-class.html" title="A subclass of DoctestColorizer that generates HTML output." alt="" coords="5,299,176,336" />
+<area shape="rect" href="epydoc.markup.doctest.XMLDoctestColorizer-class.html" title="A subclass of DoctestColorizer that generates XML-like output." alt="" coords="205,299,368,336" />
+<area shape="rect" href="epydoc.markup.doctest.DoctestColorizer-class.html#PREFIX" title="A string that is added to the beginning of the strings returned by  colorize_codeblock and colorize_doctest." alt="" coords="145,28,428,47" />
+<area shape="rect" href="epydoc.markup.doctest.DoctestColorizer-class.html#SUFFIX" title="A string that is added to the end of the strings returned by  colorize_codeblock and colorize_doctest." alt="" coords="145,47,428,65" />
+<area shape="rect" href="epydoc.markup.doctest.DoctestColorizer-class.html#PROMPT_RE" title="A regexp that matches Python prompts" alt="" coords="145,65,428,84" />
+<area shape="rect" href="epydoc.markup.doctest.DoctestColorizer-class.html#PROMPT2_RE" title="A regexp that matches Python "..." prompts." alt="" coords="145,84,428,103" />
+<area shape="rect" href="epydoc.markup.doctest.DoctestColorizer-class.html#EXCEPT_RE" title="A regexp that matches doctest exception blocks." alt="" coords="145,103,428,121" />
+<area shape="rect" href="epydoc.markup.doctest.DoctestColorizer-class.html#DOCTEST_DIRECTIVE_RE" title="A regexp that matches doctest directives." alt="" coords="145,121,428,140" />
+<area shape="rect" href="epydoc.markup.doctest.DoctestColorizer-class.html#DOCTEST_RE" title="A regexp that matches all of the regions of a doctest block that should be  colored." alt="" coords="145,140,428,159" />
+<area shape="rect" href="epydoc.markup.doctest.DoctestColorizer-class.html#DOCTEST_EXAMPLE_RE" title="This regular expression is used to find doctest examples in a string." alt="" coords="145,159,428,177" />
+<area shape="rect" href="epydoc.markup.doctest.DoctestColorizer-class.html#colorize_inline" title="Colorize a string containing Python code." alt="" coords="145,180,428,199" />
+<area shape="rect" href="epydoc.markup.doctest.DoctestColorizer-class.html#colorize_codeblock" title="Colorize a string containing only Python code." alt="" coords="145,199,428,217" />
+<area shape="rect" href="epydoc.markup.doctest.DoctestColorizer-class.html#colorize_doctest" title="Colorize a string containing one or more doctest examples." alt="" coords="145,217,428,236" />
+<area shape="rect" href="epydoc.markup.doctest.DoctestColorizer-class.html#subfunc" title="epydoc.markup.doctest.DoctestColorizer.subfunc" alt="" coords="145,236,428,255" />
+<area shape="rect" href="epydoc.markup.doctest.DoctestColorizer-class.html#markup" title="Apply syntax highlighting to a single substring from a doctest block." alt="" coords="145,255,428,273" />
+<area shape="rect" href="epydoc.markup.doctest.DoctestColorizer-class.html" title="An abstract base class for performing syntax highlighting on doctest blocks and other bits of Python code." alt="" coords="133,5,440,280" />
+<area shape="rect" href="epydoc.markup.doctest.LaTeXDoctestColorizer-class.html" title="A subclass of DoctestColorizer that generates LaTeX output." alt="" coords="397,299,571,336" />
+</map>
+  <img src="uml_class_diagram_for_epydoc_m_5.gif" alt='' usemap="#uml_class_diagram_for_epydoc_m_5" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<p>An abstract base class for performing syntax highlighting on doctest 
+  blocks and other bits of Python code.  Subclasses should provide 
+  definitions for:</p>
+  <ul>
+    <li>
+      The <a 
+      href="epydoc.markup.doctest.DoctestColorizer-class.html#markup" 
+      class="link">markup()</a> method, which takes a substring and a tag, 
+      and returns a colorized version of the substring.
+    </li>
+    <li>
+      The <a 
+      href="epydoc.markup.doctest.DoctestColorizer-class.html#PREFIX" 
+      class="link">PREFIX</a> and <a 
+      href="epydoc.markup.doctest.DoctestColorizer-class.html#SUFFIX" 
+      class="link">SUFFIX</a> variables, which will be added to the 
+      beginning and end of the strings returned by <a 
+      href="epydoc.markup.doctest.DoctestColorizer-class.html#colorize_codeblock"
+      class="link">colorize_codeblock</a> and <a 
+      href="epydoc.markup.doctest.DoctestColorizer-class.html#colorize_doctest"
+      class="link">colorize_doctest</a>.
+    </li>
+  </ul>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.doctest.DoctestColorizer-class.html#colorize_inline" class="summary-sig-name">colorize_inline</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">s</span>)</span><br />
+      Colorize a string containing Python code.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.doctest-pysrc.html#DoctestColorizer.colorize_inline">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.doctest.DoctestColorizer-class.html#colorize_codeblock" class="summary-sig-name">colorize_codeblock</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">s</span>)</span><br />
+      Colorize a string containing only Python code.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.doctest-pysrc.html#DoctestColorizer.colorize_codeblock">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="colorize_doctest"></a><span class="summary-sig-name">colorize_doctest</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">s</span>,
+        <span class="summary-sig-arg">strip_directives</span>=<span class="summary-sig-default">False</span>)</span><br />
+      Colorize a string containing one or more doctest examples.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.doctest-pysrc.html#DoctestColorizer.colorize_doctest">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_colorize_doctes-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_colorize_doctes-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_colorize_doctes" name="call_graph_for_colorize_doctes">
+<area shape="rect" href="epydoc.markup.doctest.DoctestColorizer-class.html#colorize_doctest" title="colorize_doctest()" alt="" coords="209,6,364,38" />
+<area shape="rect" href="epydoc.markup.doctest.HTMLDoctestColorizer-class.html#markup" title="HTMLDoctestColorizer.markup()" alt="" coords="413,6,691,38" />
+<area shape="rect" href="epydoc.markup.doctest-module.html#doctest_to_html" title="doctest_to_html()" alt="" coords="5,6,160,38" />
+</map>
+  <img src="call_graph_for_colorize_doctes.gif" alt='' usemap="#call_graph_for_colorize_doctes" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="subfunc"></a><span class="summary-sig-name">subfunc</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">match</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.doctest-pysrc.html#DoctestColorizer.subfunc">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_subfunc-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_subfunc-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_subfunc" name="call_graph_for_subfunc">
+<area shape="rect" href="epydoc.markup.doctest.DoctestColorizer-class.html#subfunc" title="subfunc()" alt="" coords="5,6,99,38" />
+<area shape="rect" href="epydoc.markup.doctest.HTMLDoctestColorizer-class.html#markup" title="HTMLDoctestColorizer.markup()" alt="" coords="147,6,424,38" />
+</map>
+  <img src="call_graph_for_subfunc.gif" alt='' usemap="#call_graph_for_subfunc" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.doctest.DoctestColorizer-class.html#markup" class="summary-sig-name">markup</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">s</span>,
+        <span class="summary-sig-arg">tag</span>)</span><br />
+      Apply syntax highlighting to a single substring from a doctest block.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.doctest-pysrc.html#DoctestColorizer.markup">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Class Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-ClassVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.markup.doctest.DoctestColorizer-class.html#PREFIX" class="summary-name">PREFIX</a> = <code title="None">None</code><br />
+      A string that is added to the beginning of the strings returned by <a
+      
+      href="epydoc.markup.doctest.DoctestColorizer-class.html#colorize_codeblock"
+      class="link">colorize_codeblock</a> and <a 
+      href="epydoc.markup.doctest.DoctestColorizer-class.html#colorize_doctest"
+      class="link">colorize_doctest</a>.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.markup.doctest.DoctestColorizer-class.html#SUFFIX" class="summary-name">SUFFIX</a> = <code title="None">None</code><br />
+      A string that is added to the end of the strings returned by <a 
+      href="epydoc.markup.doctest.DoctestColorizer-class.html#colorize_codeblock"
+      class="link">colorize_codeblock</a> and <a 
+      href="epydoc.markup.doctest.DoctestColorizer-class.html#colorize_doctest"
+      class="link">colorize_doctest</a>.
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.markup.doctest.DoctestColorizer-class.html#_KEYWORDS" class="summary-name" onclick="show_private();">_KEYWORDS</a> = <code title="['and',
+ 'del',
+ 'for',
+ 'is',
+ 'raiseassert',
+ 'elif',
+ 'from',
+ 'lambda',
+..."><code class="variable-group">[</code><code class="variable-quote">'</code><code class="variable-string">and</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">del</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">for</code><code class="variable-quote">'</code><code class="variable-op">, </code><co [...]
+      A list of the names of all Python keywords.
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.markup.doctest.DoctestColorizer-class.html#_BUILTINS" class="summary-name" onclick="show_private();">_BUILTINS</a> = <code title="['clear',
+ 'copy',
+ 'fromkeys',
+ 'get',
+ 'has_key',
+ 'items',
+ 'iteritems',
+ 'iterkeys',
+..."><code class="variable-group">[</code><code class="variable-quote">'</code><code class="variable-string">clear</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">copy</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">fromkeys</code><code class="variable-quote">'</code><code class="variable-op">, </ [...]
+      A list of all Python builtins.
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.markup.doctest.DoctestColorizer-class.html#_KEYWORD_GRP" class="summary-name" onclick="show_private();">_KEYWORD_GRP</a> = <code title="'\\band\\b|\\bdel\\b|\\bfor\\b|\\bis\\b|\\braiseassert\\b|\\belif\\b|\\
+\bfrom\\b|\\blambda\\b|\\breturnbreak\\b|\\belse\\b|\\bglobal\\b|\\bno\
+t\\b|\\btryclass\\b|\\bexcept\\b|\\bif\\b|\\bor\\b|\\bwhilecontinue\\b\
+|\\bexec\\b|\\bimport\\b|\\bpass\\b|\\byielddef\\b|\\bfinally\\b|\\bin\
+\\b|\\bprint\\b|\\bas\\b'"><code class="variable-quote">'</code><code class="variable-string">\\band\\b|\\bdel\\b|\\bfor\\b|\\bis\\b|\\brais</code><code class="variable-ellipsis">...</code></code><br />
+      A regexp group that matches keywords.
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.markup.doctest.DoctestColorizer-class.html#_BUILTIN_GRP" class="summary-name" onclick="show_private();">_BUILTIN_GRP</a> = <code title="'(?<!\\.)(?:\\bclear\\b|\\bcopy\\b|\\bfromkeys\\b|\\bget\\b|\\bhas_key\
+\\b|\\bitems\\b|\\biteritems\\b|\\biterkeys\\b|\\bitervalues\\b|\\bkey\
+s\\b|\\bpop\\b|\\bpopitem\\b|\\bsetdefault\\b|\\bupdate\\b|\\bvalues\\\
+b)'"><code class="variable-quote">'</code><code class="variable-string">(?<!\\.)(?:\\bclear\\b|\\bcopy\\b|\\bfromkeys\</code><code class="variable-ellipsis">...</code></code><br />
+      A regexp group that matches Python builtins.
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.markup.doctest.DoctestColorizer-class.html#_STRING_GRP" class="summary-name" onclick="show_private();">_STRING_GRP</a> = <code title="'("""("""|.*?((?!").)"""))|("("|.*?((?!").)"))|(\'\'\'(\'\'\'|.*?[^\\\\
+\\']\'\'\'))|(\'(\'|.*?[^\\\\\']\'))'"><code class="variable-quote">'</code><code class="variable-string">("""("""|.*?((?!").)"""))|("("|.*?((?!").)"))|(</code><code class="variable-ellipsis">...</code></code><br />
+      A regexp group that matches Python strings.
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="_COMMENT_GRP"></a><span class="summary-name">_COMMENT_GRP</span> = <code title="'(#.*?$)'"><code class="variable-quote">'</code><code class="variable-string">(#.*?$)</code><code class="variable-quote">'</code></code><br />
+      A regexp group that matches Python comments.
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="_PROMPT1_GRP"></a><span class="summary-name">_PROMPT1_GRP</span> = <code title="'^[ \\t]*>>>(?:[ \\t]|$)'"><code class="variable-quote">'</code><code class="variable-string">^[ \\t]*>>>(?:[ \\t]|$)</code><code class="variable-quote">'</code></code><br />
+      A regexp group that matches Python ">>>" prompts.
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="_PROMPT2_GRP"></a><span class="summary-name">_PROMPT2_GRP</span> = <code title="'^[ \\t]*\\.\\.\\.(?:[ \\t]|$)'"><code class="variable-quote">'</code><code class="variable-string">^[ \\t]*\\.\\.\\.(?:[ \\t]|$)</code><code class="variable-quote">'</code></code><br />
+      A regexp group that matches Python "..." prompts.
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="_DEFINE_GRP"></a><span class="summary-name">_DEFINE_GRP</span> = <code title="'\\b(?:def|class)[ \\t]+\\w+'"><code class="variable-quote">'</code><code class="variable-string">\\b(?:def|class)[ \\t]+\\w+</code><code class="variable-quote">'</code></code><br />
+      A regexp group that matches function and class definitions.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.markup.doctest.DoctestColorizer-class.html#PROMPT_RE" class="summary-name">PROMPT_RE</a> = <code title="re.compile(r'(?ms)(^[ \t]*>>>(?:[ \t]|$)|[ \t]*\.\.\.(?:[ \t]|$))')">re.compile(r'<code class="re-flags">(?ms)</code><code class="re-group">(</code>^<code class="re-group">[</code> \t<code class="re-group">]</code><code class="re-op">*</code>>>><code class="re-group">(?:</code><code class="re-group">[</code> \t<code class="re-group">]</code><co [...]
+      A regexp that matches Python prompts
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="PROMPT2_RE"></a><span class="summary-name">PROMPT2_RE</span> = <code title="re.compile(r'(?ms)(^[ \t]*\.\.\.(?:[ \t]|$))')">re.compile(r'<code class="re-flags">(?ms)</code><code class="re-group">(</code>^<code class="re-group">[</code> \t<code class="re-group">]</code><code class="re-op">*</code>\.\.\.<code class="re-group">(?:</code><code class="re-group">[</code> \t<code class="re-group">]</code><code class="re-op">|</code>$<code class="re-group">)</code><code class="r [...]
+      A regexp that matches Python "..." prompts.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.markup.doctest.DoctestColorizer-class.html#EXCEPT_RE" class="summary-name">EXCEPT_RE</a> = <code title="re.compile(r'(?ms)^[ \t]*Traceback \(most recent call last\):.*')">re.compile(r'<code class="re-flags">(?ms)</code>^<code class="re-group">[</code> \t<code class="re-group">]</code><code class="re-op">*</code>Traceback \(most recent c<code class="variable-ellipsis">...</code></code><br />
+      A regexp that matches doctest exception blocks.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="DOCTEST_DIRECTIVE_RE"></a><span class="summary-name">DOCTEST_DIRECTIVE_RE</span> = <code title="re.compile(r'#[ \t]*doctest:.*')">re.compile(r'#<code class="re-group">[</code> \t<code class="re-group">]</code><code class="re-op">*</code>doctest:.<code class="re-op">*</code>')</code><br />
+      A regexp that matches doctest directives.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.markup.doctest.DoctestColorizer-class.html#DOCTEST_RE" class="summary-name">DOCTEST_RE</a> = <code title="re.compile(r'(?ms)(.*?)((?P<STRING>("""("""|.*?((?!").)"""))|("("|.*?(\
+(?!").)"))|(\'\'\'(\'\'\'|.*?[^\\\']\'\'\'))|(\'(\'|.*?[^\\\']\')))|(?\
+P<COMMENT>(#.*?$))|(?P<DEFINE>\b(?:def|class)[ \t]+\w+)|(?P<KEYWORD>\b\
+and\b|del\b|for\b|is\b|raiseassert\b|elif\b|from\b|lambda\b|returnbrea\
+k\b|else\b|global\b|not\b|tryclass\b|except\b|if\b|or\b|whilecontinue\\
+b|exec\b|import\b|pass\b|yielddef\b|finally\b|in\b|print\b|as\b)|(?P<B\
+UILTIN>(?<!\.)(?:\bclear\b|copy\b|fromkeys\b|get\b|has_key\b|items\b|i\
+teritems\b|iterkeys\b|itervalues\b|keys\b|pop\b|popitem\b|setdefault\b\
+...">re.compile(r'<code class="re-flags">(?ms)</code><code class="re-group">(</code>.<code class="re-op">*?</code><code class="re-group">)</code><code class="re-group">(</code><code class="re-group">(?P<</code><code class="re-ref">STRING</code><code class="re-group">></code><code class="re-group">(</code>"""<code class="re-group">(</code>"""<code class="re-op">|</code>.<code class="re-op">*?</code><code class="re-group">(</code><code class="re-group">( [...]
+      A regexp that matches all of the regions of a doctest block that 
+      should be colored.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.markup.doctest.DoctestColorizer-class.html#DOCTEST_EXAMPLE_RE" class="summary-name">DOCTEST_EXAMPLE_RE</a> = <code title="re.compile(r'(?mx)(?P<source>(?:^(?P<indent> *)>>>.*)(?:\n *\.\.\..*)*\
+\n?)(?P<want>(?:(?! *$)(?! *>>>).*$\n?)*)')">re.compile(r'<code class="re-flags">(?mx)</code><code class="re-group">(?P<</code><code class="re-ref">source</code><code class="re-group">></code><code class="re-group">(?:</code>^<code class="re-group">(?P<</code><code class="re-ref">inde</code><code class="variable-ellipsis">...</code></code><br />
+      This regular expression is used to find doctest examples in a string.
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="_BI"></a><span class="summary-name">_BI</span> = <code title="'values'"><code class="variable-quote">'</code><code class="variable-string">values</code><code class="variable-quote">'</code></code>
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="_KW"></a><span class="summary-name">_KW</span> = <code title="'as'"><code class="variable-quote">'</code><code class="variable-string">as</code><code class="variable-quote">'</code></code>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Method Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-MethodDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="colorize_inline"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">colorize_inline</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">s</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.doctest-pysrc.html#DoctestColorizer.colorize_inline">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Colorize a string containing Python code.  Do not add the <a 
+  href="epydoc.markup.doctest.DoctestColorizer-class.html#PREFIX" 
+  class="link">PREFIX</a> and <a 
+  href="epydoc.markup.doctest.DoctestColorizer-class.html#SUFFIX" 
+  class="link">SUFFIX</a> strings to the returned value.  This method is 
+  intended for generating syntax-highlighted strings that are appropriate 
+  for inclusion as inline expressions.</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="colorize_codeblock"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">colorize_codeblock</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">s</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.doctest-pysrc.html#DoctestColorizer.colorize_codeblock">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Colorize a string containing only Python code.  This method differs 
+  from <a 
+  href="epydoc.markup.doctest.DoctestColorizer-class.html#colorize_doctest"
+  class="link">colorize_doctest</a> in that it will not search for doctest 
+  prompts when deciding how to colorize the string.</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="markup"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">markup</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">s</span>,
+        <span class="sig-arg">tag</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.doctest-pysrc.html#DoctestColorizer.markup">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Apply syntax highlighting to a single substring from a doctest block.
+  <code>s</code> is the substring, and <code>tag</code> is the tag that 
+  should be applied to the substring.  <code>tag</code> will be one of the 
+  following strings:</p>
+  <ul>
+    <li>
+      <code>prompt</code> -- the Python PS1 prompt (>>>)
+    </li>
+    <li>
+      <code>more</code> -- the Python PS2 prompt (...)
+    </li>
+    <li>
+      <code>keyword</code> -- a Python keyword (for, if, etc.)
+    </li>
+    <li>
+      <code>builtin</code> -- a Python builtin name (abs, dir, etc.)
+    </li>
+    <li>
+      <code>string</code> -- a string literal
+    </li>
+    <li>
+      <code>comment</code> -- a comment
+    </li>
+    <li>
+      <code>except</code> -- an exception traceback (up to the next 
+      >>>)
+    </li>
+    <li>
+      <code>output</code> -- the output from a doctest block.
+    </li>
+    <li>
+      <code>defname</code> -- the name of a function or class defined by a 
+      <code>def</code> or <code>class</code> statement.
+    </li>
+    <li>
+      <code>other</code> -- anything else (does *not* include output.)
+    </li>
+  </ul>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== CLASS VARIABLE DETAILS ==================== -->
+<a name="section-ClassVariableDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Class Variable Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-ClassVariableDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="PREFIX"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">PREFIX</h3>
+  <p>A string that is added to the beginning of the strings returned by <a 
+  href="epydoc.markup.doctest.DoctestColorizer-class.html#colorize_codeblock"
+  class="link">colorize_codeblock</a> and <a 
+  href="epydoc.markup.doctest.DoctestColorizer-class.html#colorize_doctest"
+  class="link">colorize_doctest</a>. Typically, this string begins a 
+  preformatted area.</p>
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+None
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="SUFFIX"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">SUFFIX</h3>
+  <p>A string that is added to the end of the strings returned by <a 
+  href="epydoc.markup.doctest.DoctestColorizer-class.html#colorize_codeblock"
+  class="link">colorize_codeblock</a> and <a 
+  href="epydoc.markup.doctest.DoctestColorizer-class.html#colorize_doctest"
+  class="link">colorize_doctest</a>. Typically, this string ends a 
+  preformatted area.</p>
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+None
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="_KEYWORDS"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">_KEYWORDS</h3>
+  <p>A list of the names of all Python keywords.  ('as' is included even 
+  though it is technically not a keyword.)</p>
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-group">[</code><code class="variable-quote">'</code><code class="variable-string">and</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">del</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">for</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">is</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">raiseassert</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">elif</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">from</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">lambda</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="_BUILTINS"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">_BUILTINS</h3>
+  <p>A list of all Python builtins.</p>
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-group">[</code><code class="variable-quote">'</code><code class="variable-string">clear</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">copy</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">fromkeys</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">get</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">has_key</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">items</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">iteritems</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">iterkeys</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="_KEYWORD_GRP"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">_KEYWORD_GRP</h3>
+  <p>A regexp group that matches keywords.</p>
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">\\band\\b|\\bdel\\b|\\bfor\\b|\\bis\\b|\\braiseassert\\b|\\belif\\b|\</code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-string">\bfrom\\b|\\blambda\\b|\\breturnbreak\\b|\\belse\\b|\\bglobal\\b|\\bno</code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-string">t\\b|\\btryclass\\b|\\bexcept\\b|\\bif\\b|\\bor\\b|\\bwhilecontinue\\b</code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-string">|\\bexec\\b|\\bimport\\b|\\bpass\\b|\\byielddef\\b|\\bfinally\\b|\\bin</code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-string">\\b|\\bprint\\b|\\bas\\b</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="_BUILTIN_GRP"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">_BUILTIN_GRP</h3>
+  <p>A regexp group that matches Python builtins.</p>
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">(?<!\\.)(?:\\bclear\\b|\\bcopy\\b|\\bfromkeys\\b|\\bget\\b|\\bhas_key</code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-string">\\b|\\bitems\\b|\\biteritems\\b|\\biterkeys\\b|\\bitervalues\\b|\\bkey</code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-string">s\\b|\\bpop\\b|\\bpopitem\\b|\\bsetdefault\\b|\\bupdate\\b|\\bvalues\\</code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-string">b)</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="_STRING_GRP"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">_STRING_GRP</h3>
+  <p>A regexp group that matches Python strings.</p>
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">("""("""|.*?((?!").)"""))|("("|.*?((?!").)"))|(\'\'\'(\'\'\'|.*?[^\\\</code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-string">\\']\'\'\'))|(\'(\'|.*?[^\\\\\']\'))</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="PROMPT_RE"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">PROMPT_RE</h3>
+  <p>A regexp that matches Python prompts</p>
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+re.compile(r'<code class="re-flags">(?ms)</code><code class="re-group">(</code>^<code class="re-group">[</code> \t<code class="re-group">]</code><code class="re-op">*</code>>>><code class="re-group">(?:</code><code class="re-group">[</code> \t<code class="re-group">]</code><code class="re-op">|</code>$<code class="re-group">)</code><code class="re-op">|</code><code class="re-group">[</code> \t<code class="re-group">]</code><code class="re-op">*</code>\.\.\.<code class="re-group" [...]
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="EXCEPT_RE"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">EXCEPT_RE</h3>
+  <p>A regexp that matches doctest exception blocks.</p>
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+re.compile(r'<code class="re-flags">(?ms)</code>^<code class="re-group">[</code> \t<code class="re-group">]</code><code class="re-op">*</code>Traceback \(most recent call last\):.<code class="re-op">*</code>')
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="DOCTEST_RE"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">DOCTEST_RE</h3>
+  <p>A regexp that matches all of the regions of a doctest block that 
+  should be colored.</p>
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+re.compile(r'<code class="re-flags">(?ms)</code><code class="re-group">(</code>.<code class="re-op">*?</code><code class="re-group">)</code><code class="re-group">(</code><code class="re-group">(?P<</code><code class="re-ref">STRING</code><code class="re-group">></code><code class="re-group">(</code>"""<code class="re-group">(</code>"""<code class="re-op">|</code>.<code class="re-op">*?</code><code class="re-group">(</code><code class="re-group">(?!</c [...]
+<code class="re-group">(?!</code>"<code class="re-group">)</code>.<code class="re-group">)</code>"<code class="re-group">)</code><code class="re-group">)</code><code class="re-op">|</code><code class="re-group">(</code>\'\'\'<code class="re-group">(</code>\'\'\'<code class="re-op">|</code>.<code class="re-op">*?</code><code class="re-group">[</code><code class="re-op">^</code>\\\'<code class="re-group">]</code>\'\'\'<code class="re-group">)</code><code class="re-group">)</code> [...]
+<code class="re-group">P<</code><code class="re-ref">COMMENT</code><code class="re-group">></code><code class="re-group">(</code>#.<code class="re-op">*?</code>$<code class="re-group">)</code><code class="re-group">)</code><code class="re-op">|</code><code class="re-group">(?P<</code><code class="re-ref">DEFINE</code><code class="re-group">></code>\b<code class="re-group">(?:</code>def<code class="re-op">|</code>class<code class="re-group">)</code><code class="re-group">[</co [...]
+and\b<code class="re-op">|</code>del\b<code class="re-op">|</code>for\b<code class="re-op">|</code>is\b<code class="re-op">|</code>raiseassert\b<code class="re-op">|</code>elif\b<code class="re-op">|</code>from\b<code class="re-op">|</code>lambda\b<code class="re-op">|</code>returnbrea<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+k\b<code class="re-op">|</code>else\b<code class="re-op">|</code>global\b<code class="re-op">|</code>not\b<code class="re-op">|</code>tryclass\b<code class="re-op">|</code>except\b<code class="re-op">|</code>if\b<code class="re-op">|</code>or\b<code class="re-op">|</code>whilecontinue\<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+b<code class="re-op">|</code>exec\b<code class="re-op">|</code>import\b<code class="re-op">|</code>pass\b<code class="re-op">|</code>yielddef\b<code class="re-op">|</code>finally\b<code class="re-op">|</code>in\b<code class="re-op">|</code>print\b<code class="re-op">|</code>as\b<code class="re-group">)</code><code class="re-op">|</code><code class="re-group">(?P<</code><code class="re-ref">B</code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="re-ref">UILTIN</code><code class="re-group">></code><code class="re-group">(?<!</code>\.<code class="re-group">)</code><code class="re-group">(?:</code>\bclear\b<code class="re-op">|</code>copy\b<code class="re-op">|</code>fromkeys\b<code class="re-op">|</code>get\b<code class="re-op">|</code>has_key\b<code class="re-op">|</code>items\b<code class="re-op">|</code>i<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+teritems\b<code class="re-op">|</code>iterkeys\b<code class="re-op">|</code>itervalues\b<code class="re-op">|</code>keys\b<code class="re-op">|</code>pop\b<code class="re-op">|</code>popitem\b<code class="re-op">|</code>setdefault\b<code class="re-op"></code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="DOCTEST_EXAMPLE_RE"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">DOCTEST_EXAMPLE_RE</h3>
+  <p>This regular expression is used to find doctest examples in a string.
+  This is copied from the standard Python doctest.py module (after the 
+  refactoring in Python 2.4+).</p>
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+re.compile(r'<code class="re-flags">(?mx)</code><code class="re-group">(?P<</code><code class="re-ref">source</code><code class="re-group">></code><code class="re-group">(?:</code>^<code class="re-group">(?P<</code><code class="re-ref">indent</code><code class="re-group">></code> <code class="re-op">*</code><code class="re-group">)</code>>>>.<code class="re-op">*</code><code class="re-group">)</code><code class="re-group">(?:</code>\n <code class="re-op">*</code>\.\. [...]
+\n<code class="re-op">?</code><code class="re-group">)</code><code class="re-group">(?P<</code><code class="re-ref">want</code><code class="re-group">></code><code class="re-group">(?:</code><code class="re-group">(?!</code> <code class="re-op">*</code>$<code class="re-group">)</code><code class="re-group">(?!</code> <code class="re-op">*</code>>>><code class="re-group">)</code>.<code class="re-op">*</code>$\n<code class="re-op">?</code><code class="re-group">)</code><code [...]
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:08:29 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.markup.doctest.HTMLDoctestColorizer-class.html b/doc/api/epydoc.markup.doctest.HTMLDoctestColorizer-class.html
new file mode 100644
index 0000000..9b3d080
--- /dev/null
+++ b/doc/api/epydoc.markup.doctest.HTMLDoctestColorizer-class.html
@@ -0,0 +1,365 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.markup.doctest.HTMLDoctestColorizer</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.markup-module.html">Package markup</a> ::
+        <a href="epydoc.markup.doctest-module.html">Module doctest</a> ::
+        Class HTMLDoctestColorizer
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.markup.doctest.HTMLDoctestColorizer-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class HTMLDoctestColorizer</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.markup.doctest-pysrc.html#HTMLDoctestColorizer">source code</a></span></p>
+<center>
+<center>  <map id="uml_class_diagram_for_epydoc_m_6" name="uml_class_diagram_for_epydoc_m_6">
+<area shape="rect" href="epydoc.markup.doctest.DoctestColorizer-class.html#PROMPT_RE" title="A regexp that matches Python prompts" alt="" coords="17,28,300,47" />
+<area shape="rect" href="epydoc.markup.doctest.DoctestColorizer-class.html#PROMPT2_RE" title="A regexp that matches Python "..." prompts." alt="" coords="17,47,300,65" />
+<area shape="rect" href="epydoc.markup.doctest.DoctestColorizer-class.html#EXCEPT_RE" title="A regexp that matches doctest exception blocks." alt="" coords="17,65,300,84" />
+<area shape="rect" href="epydoc.markup.doctest.DoctestColorizer-class.html#DOCTEST_DIRECTIVE_RE" title="A regexp that matches doctest directives." alt="" coords="17,84,300,103" />
+<area shape="rect" href="epydoc.markup.doctest.DoctestColorizer-class.html#DOCTEST_RE" title="A regexp that matches all of the regions of a doctest block that should be  colored." alt="" coords="17,103,300,121" />
+<area shape="rect" href="epydoc.markup.doctest.DoctestColorizer-class.html#DOCTEST_EXAMPLE_RE" title="This regular expression is used to find doctest examples in a string." alt="" coords="17,121,300,140" />
+<area shape="rect" href="epydoc.markup.doctest.DoctestColorizer-class.html#colorize_inline" title="Colorize a string containing Python code." alt="" coords="17,143,300,161" />
+<area shape="rect" href="epydoc.markup.doctest.DoctestColorizer-class.html#colorize_codeblock" title="Colorize a string containing only Python code." alt="" coords="17,161,300,180" />
+<area shape="rect" href="epydoc.markup.doctest.DoctestColorizer-class.html#colorize_doctest" title="Colorize a string containing one or more doctest examples." alt="" coords="17,180,300,199" />
+<area shape="rect" href="epydoc.markup.doctest.DoctestColorizer-class.html#subfunc" title="epydoc.markup.doctest.DoctestColorizer.subfunc" alt="" coords="17,199,300,217" />
+<area shape="rect" href="epydoc.markup.doctest.DoctestColorizer-class.html" title="An abstract base class for performing syntax highlighting on doctest blocks and other bits of Python code." alt="" coords="5,5,312,224" />
+<area shape="rect" href="epydoc.markup.doctest.HTMLDoctestColorizer-class.html#PREFIX" title="A string that is added to the beginning of the strings returned by  colorize_codeblock and colorize_doctest." alt="" coords="91,265,227,284" />
+<area shape="rect" href="epydoc.markup.doctest.HTMLDoctestColorizer-class.html#SUFFIX" title="A string that is added to the end of the strings returned by  colorize_codeblock and colorize_doctest." alt="" coords="91,284,227,303" />
+<area shape="rect" href="epydoc.markup.doctest.HTMLDoctestColorizer-class.html#markup" title="Apply syntax highlighting to a single substring from a doctest block." alt="" coords="91,305,227,324" />
+<area shape="rect" href="epydoc.markup.doctest.HTMLDoctestColorizer-class.html" title="A subclass of DoctestColorizer that generates HTML output." alt="" coords="79,243,239,331" />
+</map>
+  <img src="uml_class_diagram_for_epydoc_m_6.gif" alt='' usemap="#uml_class_diagram_for_epydoc_m_6" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<p>A subclass of DoctestColorizer that generates HTML output.</p>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.doctest.HTMLDoctestColorizer-class.html#markup" class="summary-sig-name">markup</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">s</span>,
+        <span class="summary-sig-arg">tag</span>)</span><br />
+      Apply syntax highlighting to a single substring from a doctest block.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.doctest-pysrc.html#HTMLDoctestColorizer.markup">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_markup_2-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_markup_2-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_markup_2" name="call_graph_for_markup_2">
+<area shape="rect" href="epydoc.markup.doctest.DoctestColorizer-class.html#colorize_doctest" title="DoctestColorizer.colorize_doctest()" alt="" coords="7,6,295,38" />
+<area shape="rect" href="epydoc.markup.doctest.HTMLDoctestColorizer-class.html#markup" title="markup()" alt="" coords="344,34,435,66" />
+<area shape="rect" href="epydoc.markup.doctest.DoctestColorizer-class.html#subfunc" title="DoctestColorizer.subfunc()" alt="" coords="37,62,264,94" />
+<area shape="rect" href="epydoc.util-module.html#plaintext_to_html" title="util.plaintext_to_html()" alt="" coords="483,34,680,66" />
+</map>
+  <img src="call_graph_for_markup_2.gif" alt='' usemap="#call_graph_for_markup_2" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.markup.doctest.DoctestColorizer-class.html">DoctestColorizer</a></code></b>:
+      <code><a href="epydoc.markup.doctest.DoctestColorizer-class.html#colorize_codeblock">colorize_codeblock</a></code>,
+      <code><a href="epydoc.markup.doctest.DoctestColorizer-class.html#colorize_doctest">colorize_doctest</a></code>,
+      <code><a href="epydoc.markup.doctest.DoctestColorizer-class.html#colorize_inline">colorize_inline</a></code>,
+      <code><a href="epydoc.markup.doctest.DoctestColorizer-class.html#subfunc">subfunc</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Class Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-ClassVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="PREFIX"></a><span class="summary-name">PREFIX</span> = <code title="'''<pre class="py-doctest">
+'''"><code class="variable-quote">'</code><code class="variable-string"><pre class="py-doctest">\n</code><code class="variable-quote">'</code></code><br />
+      A string that is added to the beginning of the strings returned by <a
+      
+      href="epydoc.markup.doctest.DoctestColorizer-class.html#colorize_codeblock"
+      class="link">colorize_codeblock</a> and <a 
+      href="epydoc.markup.doctest.DoctestColorizer-class.html#colorize_doctest"
+      class="link">colorize_doctest</a>.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="SUFFIX"></a><span class="summary-name">SUFFIX</span> = <code title="'''</pre>
+'''"><code class="variable-quote">'</code><code class="variable-string"></pre>\n</code><code class="variable-quote">'</code></code><br />
+      A string that is added to the end of the strings returned by <a 
+      href="epydoc.markup.doctest.DoctestColorizer-class.html#colorize_codeblock"
+      class="link">colorize_codeblock</a> and <a 
+      href="epydoc.markup.doctest.DoctestColorizer-class.html#colorize_doctest"
+      class="link">colorize_doctest</a>.
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.markup.doctest.DoctestColorizer-class.html">DoctestColorizer</a></code></b>:
+      <code><a href="epydoc.markup.doctest.DoctestColorizer-class.html#DOCTEST_DIRECTIVE_RE">DOCTEST_DIRECTIVE_RE</a></code>,
+      <code><a href="epydoc.markup.doctest.DoctestColorizer-class.html#DOCTEST_EXAMPLE_RE">DOCTEST_EXAMPLE_RE</a></code>,
+      <code><a href="epydoc.markup.doctest.DoctestColorizer-class.html#DOCTEST_RE">DOCTEST_RE</a></code>,
+      <code><a href="epydoc.markup.doctest.DoctestColorizer-class.html#EXCEPT_RE">EXCEPT_RE</a></code>,
+      <code><a href="epydoc.markup.doctest.DoctestColorizer-class.html#PROMPT2_RE">PROMPT2_RE</a></code>,
+      <code><a href="epydoc.markup.doctest.DoctestColorizer-class.html#PROMPT_RE">PROMPT_RE</a></code>
+      </p>
+    <div class="private">    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.markup.doctest.DoctestColorizer-class.html">DoctestColorizer</a></code></b> (private):
+      <code><a href="epydoc.markup.doctest.DoctestColorizer-class.html#_BI" onclick="show_private();">_BI</a></code>,
+      <code><a href="epydoc.markup.doctest.DoctestColorizer-class.html#_BUILTINS" onclick="show_private();">_BUILTINS</a></code>,
+      <code><a href="epydoc.markup.doctest.DoctestColorizer-class.html#_BUILTIN_GRP" onclick="show_private();">_BUILTIN_GRP</a></code>,
+      <code><a href="epydoc.markup.doctest.DoctestColorizer-class.html#_COMMENT_GRP" onclick="show_private();">_COMMENT_GRP</a></code>,
+      <code><a href="epydoc.markup.doctest.DoctestColorizer-class.html#_DEFINE_GRP" onclick="show_private();">_DEFINE_GRP</a></code>,
+      <code><a href="epydoc.markup.doctest.DoctestColorizer-class.html#_KEYWORDS" onclick="show_private();">_KEYWORDS</a></code>,
+      <code><a href="epydoc.markup.doctest.DoctestColorizer-class.html#_KEYWORD_GRP" onclick="show_private();">_KEYWORD_GRP</a></code>,
+      <code><a href="epydoc.markup.doctest.DoctestColorizer-class.html#_KW" onclick="show_private();">_KW</a></code>,
+      <code><a href="epydoc.markup.doctest.DoctestColorizer-class.html#_PROMPT1_GRP" onclick="show_private();">_PROMPT1_GRP</a></code>,
+      <code><a href="epydoc.markup.doctest.DoctestColorizer-class.html#_PROMPT2_GRP" onclick="show_private();">_PROMPT2_GRP</a></code>,
+      <code><a href="epydoc.markup.doctest.DoctestColorizer-class.html#_STRING_GRP" onclick="show_private();">_STRING_GRP</a></code>
+      </p></div>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Method Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-MethodDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="markup"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">markup</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">s</span>,
+        <span class="sig-arg">tag</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.doctest-pysrc.html#HTMLDoctestColorizer.markup">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_markup_2-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_markup_2-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_markup_2" name="call_graph_for_markup_2">
+<area shape="rect" href="epydoc.markup.doctest.DoctestColorizer-class.html#colorize_doctest" title="DoctestColorizer.colorize_doctest()" alt="" coords="7,6,295,38" />
+<area shape="rect" href="epydoc.markup.doctest.HTMLDoctestColorizer-class.html#markup" title="markup()" alt="" coords="344,34,435,66" />
+<area shape="rect" href="epydoc.markup.doctest.DoctestColorizer-class.html#subfunc" title="DoctestColorizer.subfunc()" alt="" coords="37,62,264,94" />
+<area shape="rect" href="epydoc.util-module.html#plaintext_to_html" title="util.plaintext_to_html()" alt="" coords="483,34,680,66" />
+</map>
+  <img src="call_graph_for_markup_2.gif" alt='' usemap="#call_graph_for_markup_2" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Apply syntax highlighting to a single substring from a doctest block.
+  <code>s</code> is the substring, and <code>tag</code> is the tag that 
+  should be applied to the substring.  <code>tag</code> will be one of the 
+  following strings:</p>
+  <ul>
+    <li>
+      <code>prompt</code> -- the Python PS1 prompt (>>>)
+    </li>
+    <li>
+      <code>more</code> -- the Python PS2 prompt (...)
+    </li>
+    <li>
+      <code>keyword</code> -- a Python keyword (for, if, etc.)
+    </li>
+    <li>
+      <code>builtin</code> -- a Python builtin name (abs, dir, etc.)
+    </li>
+    <li>
+      <code>string</code> -- a string literal
+    </li>
+    <li>
+      <code>comment</code> -- a comment
+    </li>
+    <li>
+      <code>except</code> -- an exception traceback (up to the next 
+      >>>)
+    </li>
+    <li>
+      <code>output</code> -- the output from a doctest block.
+    </li>
+    <li>
+      <code>defname</code> -- the name of a function or class defined by a 
+      <code>def</code> or <code>class</code> statement.
+    </li>
+    <li>
+      <code>other</code> -- anything else (does *not* include output.)
+    </li>
+  </ul>
+  <dl class="fields">
+    <dt>Overrides:
+        <a href="epydoc.markup.doctest.DoctestColorizer-class.html#markup">DoctestColorizer.markup</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:08:29 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.markup.doctest.LaTeXDoctestColorizer-class.html b/doc/api/epydoc.markup.doctest.LaTeXDoctestColorizer-class.html
new file mode 100644
index 0000000..c0182d7
--- /dev/null
+++ b/doc/api/epydoc.markup.doctest.LaTeXDoctestColorizer-class.html
@@ -0,0 +1,339 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.markup.doctest.LaTeXDoctestColorizer</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.markup-module.html">Package markup</a> ::
+        <a href="epydoc.markup.doctest-module.html">Module doctest</a> ::
+        Class LaTeXDoctestColorizer
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.markup.doctest.LaTeXDoctestColorizer-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class LaTeXDoctestColorizer</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.markup.doctest-pysrc.html#LaTeXDoctestColorizer">source code</a></span></p>
+<center>
+<center>  <map id="uml_class_diagram_for_epydoc_m_7" name="uml_class_diagram_for_epydoc_m_7">
+<area shape="rect" href="epydoc.markup.doctest.DoctestColorizer-class.html#PROMPT_RE" title="A regexp that matches Python prompts" alt="" coords="17,28,300,47" />
+<area shape="rect" href="epydoc.markup.doctest.DoctestColorizer-class.html#PROMPT2_RE" title="A regexp that matches Python "..." prompts." alt="" coords="17,47,300,65" />
+<area shape="rect" href="epydoc.markup.doctest.DoctestColorizer-class.html#EXCEPT_RE" title="A regexp that matches doctest exception blocks." alt="" coords="17,65,300,84" />
+<area shape="rect" href="epydoc.markup.doctest.DoctestColorizer-class.html#DOCTEST_DIRECTIVE_RE" title="A regexp that matches doctest directives." alt="" coords="17,84,300,103" />
+<area shape="rect" href="epydoc.markup.doctest.DoctestColorizer-class.html#DOCTEST_RE" title="A regexp that matches all of the regions of a doctest block that should be  colored." alt="" coords="17,103,300,121" />
+<area shape="rect" href="epydoc.markup.doctest.DoctestColorizer-class.html#DOCTEST_EXAMPLE_RE" title="This regular expression is used to find doctest examples in a string." alt="" coords="17,121,300,140" />
+<area shape="rect" href="epydoc.markup.doctest.DoctestColorizer-class.html#colorize_inline" title="Colorize a string containing Python code." alt="" coords="17,143,300,161" />
+<area shape="rect" href="epydoc.markup.doctest.DoctestColorizer-class.html#colorize_codeblock" title="Colorize a string containing only Python code." alt="" coords="17,161,300,180" />
+<area shape="rect" href="epydoc.markup.doctest.DoctestColorizer-class.html#colorize_doctest" title="Colorize a string containing one or more doctest examples." alt="" coords="17,180,300,199" />
+<area shape="rect" href="epydoc.markup.doctest.DoctestColorizer-class.html#subfunc" title="epydoc.markup.doctest.DoctestColorizer.subfunc" alt="" coords="17,199,300,217" />
+<area shape="rect" href="epydoc.markup.doctest.DoctestColorizer-class.html" title="An abstract base class for performing syntax highlighting on doctest blocks and other bits of Python code." alt="" coords="5,5,312,224" />
+<area shape="rect" href="epydoc.markup.doctest.LaTeXDoctestColorizer-class.html#PREFIX" title="A string that is added to the beginning of the strings returned by  colorize_codeblock and colorize_doctest." alt="" coords="89,265,228,284" />
+<area shape="rect" href="epydoc.markup.doctest.LaTeXDoctestColorizer-class.html#SUFFIX" title="A string that is added to the end of the strings returned by  colorize_codeblock and colorize_doctest." alt="" coords="89,284,228,303" />
+<area shape="rect" href="epydoc.markup.doctest.LaTeXDoctestColorizer-class.html#markup" title="Apply syntax highlighting to a single substring from a doctest block." alt="" coords="89,305,228,324" />
+<area shape="rect" href="epydoc.markup.doctest.LaTeXDoctestColorizer-class.html" title="A subclass of DoctestColorizer that generates LaTeX output." alt="" coords="77,243,240,331" />
+</map>
+  <img src="uml_class_diagram_for_epydoc_m_7.gif" alt='' usemap="#uml_class_diagram_for_epydoc_m_7" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<p>A subclass of DoctestColorizer that generates LaTeX output.</p>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.doctest.LaTeXDoctestColorizer-class.html#markup" class="summary-sig-name">markup</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">s</span>,
+        <span class="summary-sig-arg">tag</span>)</span><br />
+      Apply syntax highlighting to a single substring from a doctest block.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.doctest-pysrc.html#LaTeXDoctestColorizer.markup">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.markup.doctest.DoctestColorizer-class.html">DoctestColorizer</a></code></b>:
+      <code><a href="epydoc.markup.doctest.DoctestColorizer-class.html#colorize_codeblock">colorize_codeblock</a></code>,
+      <code><a href="epydoc.markup.doctest.DoctestColorizer-class.html#colorize_doctest">colorize_doctest</a></code>,
+      <code><a href="epydoc.markup.doctest.DoctestColorizer-class.html#colorize_inline">colorize_inline</a></code>,
+      <code><a href="epydoc.markup.doctest.DoctestColorizer-class.html#subfunc">subfunc</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Class Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-ClassVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="PREFIX"></a><span class="summary-name">PREFIX</span> = <code title="'''\\begin{alltt}
+'''"><code class="variable-quote">'</code><code class="variable-string">\\begin{alltt}\n</code><code class="variable-quote">'</code></code><br />
+      A string that is added to the beginning of the strings returned by <a
+      
+      href="epydoc.markup.doctest.DoctestColorizer-class.html#colorize_codeblock"
+      class="link">colorize_codeblock</a> and <a 
+      href="epydoc.markup.doctest.DoctestColorizer-class.html#colorize_doctest"
+      class="link">colorize_doctest</a>.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="SUFFIX"></a><span class="summary-name">SUFFIX</span> = <code title="'''\\end{alltt}
+'''"><code class="variable-quote">'</code><code class="variable-string">\\end{alltt}\n</code><code class="variable-quote">'</code></code><br />
+      A string that is added to the end of the strings returned by <a 
+      href="epydoc.markup.doctest.DoctestColorizer-class.html#colorize_codeblock"
+      class="link">colorize_codeblock</a> and <a 
+      href="epydoc.markup.doctest.DoctestColorizer-class.html#colorize_doctest"
+      class="link">colorize_doctest</a>.
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.markup.doctest.DoctestColorizer-class.html">DoctestColorizer</a></code></b>:
+      <code><a href="epydoc.markup.doctest.DoctestColorizer-class.html#DOCTEST_DIRECTIVE_RE">DOCTEST_DIRECTIVE_RE</a></code>,
+      <code><a href="epydoc.markup.doctest.DoctestColorizer-class.html#DOCTEST_EXAMPLE_RE">DOCTEST_EXAMPLE_RE</a></code>,
+      <code><a href="epydoc.markup.doctest.DoctestColorizer-class.html#DOCTEST_RE">DOCTEST_RE</a></code>,
+      <code><a href="epydoc.markup.doctest.DoctestColorizer-class.html#EXCEPT_RE">EXCEPT_RE</a></code>,
+      <code><a href="epydoc.markup.doctest.DoctestColorizer-class.html#PROMPT2_RE">PROMPT2_RE</a></code>,
+      <code><a href="epydoc.markup.doctest.DoctestColorizer-class.html#PROMPT_RE">PROMPT_RE</a></code>
+      </p>
+    <div class="private">    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.markup.doctest.DoctestColorizer-class.html">DoctestColorizer</a></code></b> (private):
+      <code><a href="epydoc.markup.doctest.DoctestColorizer-class.html#_BI" onclick="show_private();">_BI</a></code>,
+      <code><a href="epydoc.markup.doctest.DoctestColorizer-class.html#_BUILTINS" onclick="show_private();">_BUILTINS</a></code>,
+      <code><a href="epydoc.markup.doctest.DoctestColorizer-class.html#_BUILTIN_GRP" onclick="show_private();">_BUILTIN_GRP</a></code>,
+      <code><a href="epydoc.markup.doctest.DoctestColorizer-class.html#_COMMENT_GRP" onclick="show_private();">_COMMENT_GRP</a></code>,
+      <code><a href="epydoc.markup.doctest.DoctestColorizer-class.html#_DEFINE_GRP" onclick="show_private();">_DEFINE_GRP</a></code>,
+      <code><a href="epydoc.markup.doctest.DoctestColorizer-class.html#_KEYWORDS" onclick="show_private();">_KEYWORDS</a></code>,
+      <code><a href="epydoc.markup.doctest.DoctestColorizer-class.html#_KEYWORD_GRP" onclick="show_private();">_KEYWORD_GRP</a></code>,
+      <code><a href="epydoc.markup.doctest.DoctestColorizer-class.html#_KW" onclick="show_private();">_KW</a></code>,
+      <code><a href="epydoc.markup.doctest.DoctestColorizer-class.html#_PROMPT1_GRP" onclick="show_private();">_PROMPT1_GRP</a></code>,
+      <code><a href="epydoc.markup.doctest.DoctestColorizer-class.html#_PROMPT2_GRP" onclick="show_private();">_PROMPT2_GRP</a></code>,
+      <code><a href="epydoc.markup.doctest.DoctestColorizer-class.html#_STRING_GRP" onclick="show_private();">_STRING_GRP</a></code>
+      </p></div>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Method Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-MethodDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="markup"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">markup</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">s</span>,
+        <span class="sig-arg">tag</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.doctest-pysrc.html#LaTeXDoctestColorizer.markup">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Apply syntax highlighting to a single substring from a doctest block.
+  <code>s</code> is the substring, and <code>tag</code> is the tag that 
+  should be applied to the substring.  <code>tag</code> will be one of the 
+  following strings:</p>
+  <ul>
+    <li>
+      <code>prompt</code> -- the Python PS1 prompt (>>>)
+    </li>
+    <li>
+      <code>more</code> -- the Python PS2 prompt (...)
+    </li>
+    <li>
+      <code>keyword</code> -- a Python keyword (for, if, etc.)
+    </li>
+    <li>
+      <code>builtin</code> -- a Python builtin name (abs, dir, etc.)
+    </li>
+    <li>
+      <code>string</code> -- a string literal
+    </li>
+    <li>
+      <code>comment</code> -- a comment
+    </li>
+    <li>
+      <code>except</code> -- an exception traceback (up to the next 
+      >>>)
+    </li>
+    <li>
+      <code>output</code> -- the output from a doctest block.
+    </li>
+    <li>
+      <code>defname</code> -- the name of a function or class defined by a 
+      <code>def</code> or <code>class</code> statement.
+    </li>
+    <li>
+      <code>other</code> -- anything else (does *not* include output.)
+    </li>
+  </ul>
+  <dl class="fields">
+    <dt>Overrides:
+        <a href="epydoc.markup.doctest.DoctestColorizer-class.html#markup">DoctestColorizer.markup</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:08:30 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.markup.doctest.XMLDoctestColorizer-class.html b/doc/api/epydoc.markup.doctest.XMLDoctestColorizer-class.html
new file mode 100644
index 0000000..0c6e082
--- /dev/null
+++ b/doc/api/epydoc.markup.doctest.XMLDoctestColorizer-class.html
@@ -0,0 +1,340 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.markup.doctest.XMLDoctestColorizer</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.markup-module.html">Package markup</a> ::
+        <a href="epydoc.markup.doctest-module.html">Module doctest</a> ::
+        Class XMLDoctestColorizer
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.markup.doctest.XMLDoctestColorizer-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class XMLDoctestColorizer</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.markup.doctest-pysrc.html#XMLDoctestColorizer">source code</a></span></p>
+<center>
+<center>  <map id="uml_class_diagram_for_epydoc_m_8" name="uml_class_diagram_for_epydoc_m_8">
+<area shape="rect" href="epydoc.markup.doctest.DoctestColorizer-class.html#PROMPT_RE" title="A regexp that matches Python prompts" alt="" coords="17,28,300,47" />
+<area shape="rect" href="epydoc.markup.doctest.DoctestColorizer-class.html#PROMPT2_RE" title="A regexp that matches Python "..." prompts." alt="" coords="17,47,300,65" />
+<area shape="rect" href="epydoc.markup.doctest.DoctestColorizer-class.html#EXCEPT_RE" title="A regexp that matches doctest exception blocks." alt="" coords="17,65,300,84" />
+<area shape="rect" href="epydoc.markup.doctest.DoctestColorizer-class.html#DOCTEST_DIRECTIVE_RE" title="A regexp that matches doctest directives." alt="" coords="17,84,300,103" />
+<area shape="rect" href="epydoc.markup.doctest.DoctestColorizer-class.html#DOCTEST_RE" title="A regexp that matches all of the regions of a doctest block that should be  colored." alt="" coords="17,103,300,121" />
+<area shape="rect" href="epydoc.markup.doctest.DoctestColorizer-class.html#DOCTEST_EXAMPLE_RE" title="This regular expression is used to find doctest examples in a string." alt="" coords="17,121,300,140" />
+<area shape="rect" href="epydoc.markup.doctest.DoctestColorizer-class.html#colorize_inline" title="Colorize a string containing Python code." alt="" coords="17,143,300,161" />
+<area shape="rect" href="epydoc.markup.doctest.DoctestColorizer-class.html#colorize_codeblock" title="Colorize a string containing only Python code." alt="" coords="17,161,300,180" />
+<area shape="rect" href="epydoc.markup.doctest.DoctestColorizer-class.html#colorize_doctest" title="Colorize a string containing one or more doctest examples." alt="" coords="17,180,300,199" />
+<area shape="rect" href="epydoc.markup.doctest.DoctestColorizer-class.html#subfunc" title="epydoc.markup.doctest.DoctestColorizer.subfunc" alt="" coords="17,199,300,217" />
+<area shape="rect" href="epydoc.markup.doctest.DoctestColorizer-class.html" title="An abstract base class for performing syntax highlighting on doctest blocks and other bits of Python code." alt="" coords="5,5,312,224" />
+<area shape="rect" href="epydoc.markup.doctest.XMLDoctestColorizer-class.html#PREFIX" title="A string that is added to the beginning of the strings returned by  colorize_codeblock and colorize_doctest." alt="" coords="95,265,223,284" />
+<area shape="rect" href="epydoc.markup.doctest.XMLDoctestColorizer-class.html#SUFFIX" title="A string that is added to the end of the strings returned by  colorize_codeblock and colorize_doctest." alt="" coords="95,284,223,303" />
+<area shape="rect" href="epydoc.markup.doctest.XMLDoctestColorizer-class.html#markup" title="Apply syntax highlighting to a single substring from a doctest block." alt="" coords="95,305,223,324" />
+<area shape="rect" href="epydoc.markup.doctest.XMLDoctestColorizer-class.html" title="A subclass of DoctestColorizer that generates XML-like output." alt="" coords="83,243,235,331" />
+</map>
+  <img src="uml_class_diagram_for_epydoc_m_8.gif" alt='' usemap="#uml_class_diagram_for_epydoc_m_8" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<p>A subclass of DoctestColorizer that generates XML-like output. This 
+  class is mainly intended to be used for testing purposes.</p>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.doctest.XMLDoctestColorizer-class.html#markup" class="summary-sig-name">markup</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">s</span>,
+        <span class="summary-sig-arg">tag</span>)</span><br />
+      Apply syntax highlighting to a single substring from a doctest block.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.doctest-pysrc.html#XMLDoctestColorizer.markup">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.markup.doctest.DoctestColorizer-class.html">DoctestColorizer</a></code></b>:
+      <code><a href="epydoc.markup.doctest.DoctestColorizer-class.html#colorize_codeblock">colorize_codeblock</a></code>,
+      <code><a href="epydoc.markup.doctest.DoctestColorizer-class.html#colorize_doctest">colorize_doctest</a></code>,
+      <code><a href="epydoc.markup.doctest.DoctestColorizer-class.html#colorize_inline">colorize_inline</a></code>,
+      <code><a href="epydoc.markup.doctest.DoctestColorizer-class.html#subfunc">subfunc</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Class Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-ClassVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="PREFIX"></a><span class="summary-name">PREFIX</span> = <code title="'''<colorized>
+'''"><code class="variable-quote">'</code><code class="variable-string"><colorized>\n</code><code class="variable-quote">'</code></code><br />
+      A string that is added to the beginning of the strings returned by <a
+      
+      href="epydoc.markup.doctest.DoctestColorizer-class.html#colorize_codeblock"
+      class="link">colorize_codeblock</a> and <a 
+      href="epydoc.markup.doctest.DoctestColorizer-class.html#colorize_doctest"
+      class="link">colorize_doctest</a>.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="SUFFIX"></a><span class="summary-name">SUFFIX</span> = <code title="'''</colorized>
+'''"><code class="variable-quote">'</code><code class="variable-string"></colorized>\n</code><code class="variable-quote">'</code></code><br />
+      A string that is added to the end of the strings returned by <a 
+      href="epydoc.markup.doctest.DoctestColorizer-class.html#colorize_codeblock"
+      class="link">colorize_codeblock</a> and <a 
+      href="epydoc.markup.doctest.DoctestColorizer-class.html#colorize_doctest"
+      class="link">colorize_doctest</a>.
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.markup.doctest.DoctestColorizer-class.html">DoctestColorizer</a></code></b>:
+      <code><a href="epydoc.markup.doctest.DoctestColorizer-class.html#DOCTEST_DIRECTIVE_RE">DOCTEST_DIRECTIVE_RE</a></code>,
+      <code><a href="epydoc.markup.doctest.DoctestColorizer-class.html#DOCTEST_EXAMPLE_RE">DOCTEST_EXAMPLE_RE</a></code>,
+      <code><a href="epydoc.markup.doctest.DoctestColorizer-class.html#DOCTEST_RE">DOCTEST_RE</a></code>,
+      <code><a href="epydoc.markup.doctest.DoctestColorizer-class.html#EXCEPT_RE">EXCEPT_RE</a></code>,
+      <code><a href="epydoc.markup.doctest.DoctestColorizer-class.html#PROMPT2_RE">PROMPT2_RE</a></code>,
+      <code><a href="epydoc.markup.doctest.DoctestColorizer-class.html#PROMPT_RE">PROMPT_RE</a></code>
+      </p>
+    <div class="private">    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.markup.doctest.DoctestColorizer-class.html">DoctestColorizer</a></code></b> (private):
+      <code><a href="epydoc.markup.doctest.DoctestColorizer-class.html#_BI" onclick="show_private();">_BI</a></code>,
+      <code><a href="epydoc.markup.doctest.DoctestColorizer-class.html#_BUILTINS" onclick="show_private();">_BUILTINS</a></code>,
+      <code><a href="epydoc.markup.doctest.DoctestColorizer-class.html#_BUILTIN_GRP" onclick="show_private();">_BUILTIN_GRP</a></code>,
+      <code><a href="epydoc.markup.doctest.DoctestColorizer-class.html#_COMMENT_GRP" onclick="show_private();">_COMMENT_GRP</a></code>,
+      <code><a href="epydoc.markup.doctest.DoctestColorizer-class.html#_DEFINE_GRP" onclick="show_private();">_DEFINE_GRP</a></code>,
+      <code><a href="epydoc.markup.doctest.DoctestColorizer-class.html#_KEYWORDS" onclick="show_private();">_KEYWORDS</a></code>,
+      <code><a href="epydoc.markup.doctest.DoctestColorizer-class.html#_KEYWORD_GRP" onclick="show_private();">_KEYWORD_GRP</a></code>,
+      <code><a href="epydoc.markup.doctest.DoctestColorizer-class.html#_KW" onclick="show_private();">_KW</a></code>,
+      <code><a href="epydoc.markup.doctest.DoctestColorizer-class.html#_PROMPT1_GRP" onclick="show_private();">_PROMPT1_GRP</a></code>,
+      <code><a href="epydoc.markup.doctest.DoctestColorizer-class.html#_PROMPT2_GRP" onclick="show_private();">_PROMPT2_GRP</a></code>,
+      <code><a href="epydoc.markup.doctest.DoctestColorizer-class.html#_STRING_GRP" onclick="show_private();">_STRING_GRP</a></code>
+      </p></div>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Method Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-MethodDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="markup"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">markup</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">s</span>,
+        <span class="sig-arg">tag</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.doctest-pysrc.html#XMLDoctestColorizer.markup">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Apply syntax highlighting to a single substring from a doctest block.
+  <code>s</code> is the substring, and <code>tag</code> is the tag that 
+  should be applied to the substring.  <code>tag</code> will be one of the 
+  following strings:</p>
+  <ul>
+    <li>
+      <code>prompt</code> -- the Python PS1 prompt (>>>)
+    </li>
+    <li>
+      <code>more</code> -- the Python PS2 prompt (...)
+    </li>
+    <li>
+      <code>keyword</code> -- a Python keyword (for, if, etc.)
+    </li>
+    <li>
+      <code>builtin</code> -- a Python builtin name (abs, dir, etc.)
+    </li>
+    <li>
+      <code>string</code> -- a string literal
+    </li>
+    <li>
+      <code>comment</code> -- a comment
+    </li>
+    <li>
+      <code>except</code> -- an exception traceback (up to the next 
+      >>>)
+    </li>
+    <li>
+      <code>output</code> -- the output from a doctest block.
+    </li>
+    <li>
+      <code>defname</code> -- the name of a function or class defined by a 
+      <code>def</code> or <code>class</code> statement.
+    </li>
+    <li>
+      <code>other</code> -- anything else (does *not* include output.)
+    </li>
+  </ul>
+  <dl class="fields">
+    <dt>Overrides:
+        <a href="epydoc.markup.doctest.DoctestColorizer-class.html#markup">DoctestColorizer.markup</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:08:30 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.markup.epytext-module.html b/doc/api/epydoc.markup.epytext-module.html
new file mode 100644
index 0000000..cc6354b
--- /dev/null
+++ b/doc/api/epydoc.markup.epytext-module.html
@@ -0,0 +1,2363 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.markup.epytext</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.markup-module.html">Package markup</a> ::
+        Module epytext
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.markup.epytext-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module epytext</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.markup.epytext-pysrc.html">source code</a></span></p>
+<p>Parser for epytext strings.  Epytext is a lightweight markup whose 
+  primary intended application is Python documentation strings.  This 
+  parser converts Epytext strings to a simple DOM-like representation 
+  (encoded as a tree of <a href="epydoc.markup.epytext.Element-class.html" 
+  class="link">Element</a> objects and strings).  Epytext strings can 
+  contain the following <a name="index-structural_blocks"></a><i 
+  class="indexterm">structural blocks</i>:</p>
+  <ul>
+    <li>
+      <a name="index-epytext"></a><i class="indexterm">epytext</i>: The 
+      top-level element of the DOM tree.
+    </li>
+    <li>
+      <a name="index-para"></a><i class="indexterm">para</i>: A paragraph 
+      of text.  Paragraphs contain no newlines, and all spaces are soft.
+    </li>
+    <li>
+      <a name="index-section"></a><i class="indexterm">section</i>: A 
+      section or subsection.
+    </li>
+    <li>
+      <a name="index-field"></a><i class="indexterm">field</i>: A tagged 
+      field.  These fields provide information about specific aspects of a 
+      Python object, such as the description of a function's parameter, or 
+      the author of a module.
+    </li>
+    <li>
+      <a name="index-literalblock"></a><i 
+      class="indexterm">literalblock</i>: A block of literal text.  This 
+      text should be displayed as it would be displayed in plaintext.  The 
+      parser removes the appropriate amount of leading whitespace from each
+      line in the literal block.
+    </li>
+    <li>
+      <a name="index-doctestblock"></a><i 
+      class="indexterm">doctestblock</i>: A block containing sample python 
+      code, formatted according to the specifications of the 
+      <code>doctest</code> module.
+    </li>
+    <li>
+      <a name="index-ulist"></a><i class="indexterm">ulist</i>: An 
+      unordered list.
+    </li>
+    <li>
+      <a name="index-olist"></a><i class="indexterm">olist</i>: An ordered 
+      list.
+    </li>
+    <li>
+      <a name="index-li"></a><i class="indexterm">li</i>: A list item.  
+      This tag is used both for unordered list items and for ordered list 
+      items.
+    </li>
+  </ul>
+  <p>Additionally, the following <a name="index-inline_regions"></a><i 
+  class="indexterm">inline regions</i> may be used within <code>para</code>
+  blocks:</p>
+  <ul>
+    <li>
+      <a name="index-code"></a><i class="indexterm">code</i>:   Source code
+      and identifiers.
+    </li>
+    <li>
+      <a name="index-math"></a><i class="indexterm">math</i>:   
+      Mathematical expressions.
+    </li>
+    <li>
+      <a name="index-index"></a><i class="indexterm">index</i>:  A term 
+      which should be included in an index, if one is generated.
+    </li>
+    <li>
+      <a name="index-italic"></a><i class="indexterm">italic</i>: 
+      Italicized text.
+    </li>
+    <li>
+      <a name="index-bold"></a><i class="indexterm">bold</i>:   Bold-faced 
+      text.
+    </li>
+    <li>
+      <a name="index-uri"></a><i class="indexterm">uri</i>:    A Universal 
+      Resource Indicator (URI) or Universal Resource Locator (URL)
+    </li>
+    <li>
+      <a name="index-link"></a><i class="indexterm">link</i>:   A Python 
+      identifier which should be hyperlinked to the named object's 
+      documentation, when possible.
+    </li>
+  </ul>
+  <p>The returned DOM tree will conform to the the following Document Type 
+  Description:</p>
+<pre class="literalblock">
+  <!ENTITY % colorized '(code | math | index | italic |
+                         bold | uri | link | symbol)*'>
+
+  <!ELEMENT epytext ((para | literalblock | doctestblock |
+                     section | ulist | olist)*, fieldlist?)>
+
+  <!ELEMENT para (#PCDATA | %colorized;)*>
+
+  <!ELEMENT section (para | listblock | doctestblock |
+                     section | ulist | olist)+>
+
+  <!ELEMENT fieldlist (field+)>
+  <!ELEMENT field (tag, arg?, (para | listblock | doctestblock)
+                               ulist | olist)+)>
+  <!ELEMENT tag (#PCDATA)>
+  <!ELEMENT arg (#PCDATA)>
+  
+  <!ELEMENT literalblock (#PCDATA | %colorized;)*>
+  <!ELEMENT doctestblock (#PCDATA)>
+
+  <!ELEMENT ulist (li+)>
+  <!ELEMENT olist (li+)>
+  <!ELEMENT li (para | literalblock | doctestblock | ulist | olist)+>
+  <!ATTLIST li bullet NMTOKEN #IMPLIED>
+  <!ATTLIST olist start NMTOKEN #IMPLIED>
+
+  <!ELEMENT uri     (name, target)>
+  <!ELEMENT link    (name, target)>
+  <!ELEMENT name    (#PCDATA | %colorized;)*>
+  <!ELEMENT target  (#PCDATA)>
+  
+  <!ELEMENT code    (#PCDATA | %colorized;)*>
+  <!ELEMENT math    (#PCDATA | %colorized;)*>
+  <!ELEMENT italic  (#PCDATA | %colorized;)*>
+  <!ELEMENT bold    (#PCDATA | %colorized;)*>
+  <!ELEMENT indexed (#PCDATA | %colorized;)>
+  <!ATTLIST code style CDATA #IMPLIED>
+
+  <!ELEMENT symbol (#PCDATA)>
+</pre>
+
+<!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Classes</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Classes"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.markup.epytext.Element-class.html" class="summary-name">Element</a><br />
+      A very simple DOM-like representation for parsed epytext documents.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.markup.epytext.Token-class.html" class="summary-name">Token</a><br />
+      <code>Token</code>s are an intermediate data structure used while 
+        constructing the structuring DOM tree for a formatted docstring.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.markup.epytext.TokenizationError-class.html" class="summary-name">TokenizationError</a><br />
+      An error generated while tokenizing a formatted documentation 
+        string.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.markup.epytext.StructuringError-class.html" class="summary-name">StructuringError</a><br />
+      An error generated while structuring a formatted documentation 
+        string.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.markup.epytext.ColorizingError-class.html" class="summary-name">ColorizingError</a><br />
+      An error generated while colorizing a paragraph.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html" class="summary-name">ParsedEpytextDocstring</a>
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTIONS ==================== -->
+<a name="section-Functions"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Functions</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Functions"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>Element</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.epytext-module.html#parse" class="summary-sig-name">parse</a>(<span class="summary-sig-arg">str</span>,
+        <span class="summary-sig-arg">errors</span>=<span class="summary-sig-default">None</span>)</span><br />
+      Return a DOM tree encoding the contents of an epytext string.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.epytext-pysrc.html#parse">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_parse_2-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_parse_2-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_parse_2" name="call_graph_for_parse_2">
+<area shape="rect" href="epydoc.markup.epytext.Element-class.html#__init__" title="Element.__init__()" alt="" coords="359,6,522,38" />
+<area shape="rect" href="epydoc.markup.epytext.Token-class.html#to_dom" title="Token.to_dom()" alt="" coords="368,62,512,94" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#_add_list" title="_add_list()" alt="" coords="388,118,492,150" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#_add_para" title="_add_para()" alt="" coords="384,174,496,206" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#_add_section" title="_add_section()" alt="" coords="374,230,507,262" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#_pop_completed_blocks" title="_pop_completed_blocks()" alt="" coords="332,286,548,318" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#_raise_graphs" title="_raise_graphs()" alt="" coords="371,342,510,374" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#_tokenize" title="_tokenize()" alt="" coords="387,398,494,430" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#parse" title="parse()" alt="" coords="208,202,283,234" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#parse_docstring" title="parse_docstring()" alt="" coords="7,202,159,234" />
+</map>
+  <img src="call_graph_for_parse_2.gif" alt='' usemap="#call_graph_for_parse_2" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_raise_graphs"></a><span class="summary-sig-name">_raise_graphs</span>(<span class="summary-sig-arg">tree</span>,
+        <span class="summary-sig-arg">parent</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.epytext-pysrc.html#_raise_graphs">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__raise_graphs-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__raise_graphs-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__raise_graphs" name="call_graph_for__raise_graphs">
+<area shape="rect" href="epydoc.markup.epytext.Element-class.html#__init__" title="Element.__init__()" alt="" coords="315,30,478,62" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#_raise_graphs" title="_raise_graphs()" alt="" coords="128,30,267,62" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#parse" title="parse()" alt="" coords="6,30,80,62" />
+</map>
+  <img src="call_graph_for__raise_graphs.gif" alt='' usemap="#call_graph_for__raise_graphs" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.epytext-module.html#_pop_completed_blocks" class="summary-sig-name" onclick="show_private();">_pop_completed_blocks</a>(<span class="summary-sig-arg">token</span>,
+        <span class="summary-sig-arg">stack</span>,
+        <span class="summary-sig-arg">indent_stack</span>)</span><br />
+      Pop any completed blocks off the stack.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.epytext-pysrc.html#_pop_completed_blocks">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__pop_completed_-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__pop_completed_-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__pop_completed_" name="call_graph_for__pop_completed_">
+<area shape="rect" href="epydoc.markup.epytext-module.html#_pop_completed_blocks" title="_pop_completed_blocks()" alt="" coords="129,6,345,38" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#parse" title="parse()" alt="" coords="5,6,80,38" />
+</map>
+  <img src="call_graph_for__pop_completed_.gif" alt='' usemap="#call_graph_for__pop_completed_" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_add_para"></a><span class="summary-sig-name">_add_para</span>(<span class="summary-sig-arg">doc</span>,
+        <span class="summary-sig-arg">para_token</span>,
+        <span class="summary-sig-arg">stack</span>,
+        <span class="summary-sig-arg">indent_stack</span>,
+        <span class="summary-sig-arg">errors</span>)</span><br />
+      Colorize the given paragraph, and add it to the DOM tree.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.epytext-pysrc.html#_add_para">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__add_para-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__add_para-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__add_para" name="call_graph_for__add_para">
+<area shape="rect" href="epydoc.markup.epytext-module.html#_add_para" title="_add_para()" alt="" coords="130,6,242,38" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#_colorize" title="_colorize()" alt="" coords="292,6,396,38" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#parse" title="parse()" alt="" coords="6,6,80,38" />
+</map>
+  <img src="call_graph_for__add_para.gif" alt='' usemap="#call_graph_for__add_para" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_add_section"></a><span class="summary-sig-name">_add_section</span>(<span class="summary-sig-arg">doc</span>,
+        <span class="summary-sig-arg">heading_token</span>,
+        <span class="summary-sig-arg">stack</span>,
+        <span class="summary-sig-arg">indent_stack</span>,
+        <span class="summary-sig-arg">errors</span>)</span><br />
+      Add a new section to the DOM tree, with the given heading.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.epytext-pysrc.html#_add_section">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__add_section-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__add_section-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__add_section" name="call_graph_for__add_section">
+<area shape="rect" href="epydoc.markup.epytext.Element-class.html#__init__" title="Element.__init__()" alt="" coords="309,6,472,38" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#_add_section" title="_add_section()" alt="" coords="128,34,261,66" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#_colorize" title="_colorize()" alt="" coords="339,62,443,94" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#parse" title="parse()" alt="" coords="5,34,80,66" />
+</map>
+  <img src="call_graph_for__add_section.gif" alt='' usemap="#call_graph_for__add_section" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.epytext-module.html#_add_list" class="summary-sig-name" onclick="show_private();">_add_list</a>(<span class="summary-sig-arg">doc</span>,
+        <span class="summary-sig-arg">bullet_token</span>,
+        <span class="summary-sig-arg">stack</span>,
+        <span class="summary-sig-arg">indent_stack</span>,
+        <span class="summary-sig-arg">errors</span>)</span><br />
+      Add a new list item or field to the DOM tree, with the given bullet 
+      or field tag.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.epytext-pysrc.html#_add_list">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__add_list-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__add_list-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__add_list" name="call_graph_for__add_list">
+<area shape="rect" href="epydoc.markup.epytext.Element-class.html#__init__" title="Element.__init__()" alt="" coords="280,6,443,38" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#_add_list" title="_add_list()" alt="" coords="128,6,232,38" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#parse" title="parse()" alt="" coords="5,6,80,38" />
+</map>
+  <img src="call_graph_for__add_list.gif" alt='' usemap="#call_graph_for__add_list" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>int</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.epytext-module.html#_tokenize_doctest" class="summary-sig-name" onclick="show_private();">_tokenize_doctest</a>(<span class="summary-sig-arg">lines</span>,
+        <span class="summary-sig-arg">start</span>,
+        <span class="summary-sig-arg">block_indent</span>,
+        <span class="summary-sig-arg">tokens</span>,
+        <span class="summary-sig-arg">errors</span>)</span><br />
+      Construct a <a href="epydoc.markup.epytext.Token-class.html" 
+      class="link">Token</a> containing the doctest block starting at 
+      <code>lines[start]</code>, and append it to <code>tokens</code>.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.epytext-pysrc.html#_tokenize_doctest">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__tokenize_docte-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__tokenize_docte-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__tokenize_docte" name="call_graph_for__tokenize_docte">
+<area shape="rect" href="epydoc.markup.epytext.Token-class.html#__init__" title="Token.__init__()" alt="" coords="383,6,529,38" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#_tokenize" title="_tokenize()" alt="" coords="7,6,113,38" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#_tokenize_doctest" title="_tokenize_doctest()" alt="" coords="163,6,333,38" />
+</map>
+  <img src="call_graph_for__tokenize_docte.gif" alt='' usemap="#call_graph_for__tokenize_docte" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>int</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.epytext-module.html#_tokenize_literal" class="summary-sig-name" onclick="show_private();">_tokenize_literal</a>(<span class="summary-sig-arg">lines</span>,
+        <span class="summary-sig-arg">start</span>,
+        <span class="summary-sig-arg">block_indent</span>,
+        <span class="summary-sig-arg">tokens</span>,
+        <span class="summary-sig-arg">errors</span>)</span><br />
+      Construct a <a href="epydoc.markup.epytext.Token-class.html" 
+      class="link">Token</a> containing the literal block starting at 
+      <code>lines[start]</code>, and append it to <code>tokens</code>.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.epytext-pysrc.html#_tokenize_literal">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__tokenize_liter-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__tokenize_liter-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__tokenize_liter" name="call_graph_for__tokenize_liter">
+<area shape="rect" href="epydoc.markup.epytext.Token-class.html#__init__" title="Token.__init__()" alt="" coords="372,6,519,38" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#_tokenize" title="_tokenize()" alt="" coords="7,6,113,38" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#_tokenize_literal" title="_tokenize_literal()" alt="" coords="163,6,323,38" />
+</map>
+  <img src="call_graph_for__tokenize_liter.gif" alt='' usemap="#call_graph_for__tokenize_liter" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>int</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.epytext-module.html#_tokenize_listart" class="summary-sig-name" onclick="show_private();">_tokenize_listart</a>(<span class="summary-sig-arg">lines</span>,
+        <span class="summary-sig-arg">start</span>,
+        <span class="summary-sig-arg">bullet_indent</span>,
+        <span class="summary-sig-arg">tokens</span>,
+        <span class="summary-sig-arg">errors</span>)</span><br />
+      Construct <a href="epydoc.markup.epytext.Token-class.html" 
+      class="link">Token</a>s for the bullet and the first paragraph of the
+      list item (or field) starting at <code>lines[start]</code>, and 
+      append them to <code>tokens</code>.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.epytext-pysrc.html#_tokenize_listart">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__tokenize_lista-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__tokenize_lista-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__tokenize_lista" name="call_graph_for__tokenize_lista">
+<area shape="rect" href="epydoc.markup.epytext.Token-class.html#__init__" title="Token.__init__()" alt="" coords="372,6,519,38" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#_tokenize" title="_tokenize()" alt="" coords="7,6,113,38" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#_tokenize_listart" title="_tokenize_listart()" alt="" coords="163,6,323,38" />
+</map>
+  <img src="call_graph_for__tokenize_lista.gif" alt='' usemap="#call_graph_for__tokenize_lista" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>int</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.epytext-module.html#_tokenize_para" class="summary-sig-name" onclick="show_private();">_tokenize_para</a>(<span class="summary-sig-arg">lines</span>,
+        <span class="summary-sig-arg">start</span>,
+        <span class="summary-sig-arg">para_indent</span>,
+        <span class="summary-sig-arg">tokens</span>,
+        <span class="summary-sig-arg">errors</span>)</span><br />
+      Construct a <a href="epydoc.markup.epytext.Token-class.html" 
+      class="link">Token</a> containing the paragraph starting at 
+      <code>lines[start]</code>, and append it to <code>tokens</code>.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.epytext-pysrc.html#_tokenize_para">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__tokenize_para-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__tokenize_para-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__tokenize_para" name="call_graph_for__tokenize_para">
+<area shape="rect" href="epydoc.markup.epytext.Token-class.html#__init__" title="Token.__init__()" alt="" coords="362,6,508,38" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#_tokenize" title="_tokenize()" alt="" coords="7,6,114,38" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#_tokenize_para" title="_tokenize_para()" alt="" coords="163,6,312,38" />
+</map>
+  <img src="call_graph_for__tokenize_para.gif" alt='' usemap="#call_graph_for__tokenize_para" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>list</code> of <a href="epydoc.markup.epytext.Token-class.html"
+      class="link">Token</a></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.epytext-module.html#_tokenize" class="summary-sig-name" onclick="show_private();">_tokenize</a>(<span class="summary-sig-arg">str</span>,
+        <span class="summary-sig-arg">errors</span>)</span><br />
+      Split a given formatted docstring into an ordered list of 
+      <code>Token</code>s, according to the epytext markup rules.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.epytext-pysrc.html#_tokenize">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__tokenize-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__tokenize-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__tokenize" name="call_graph_for__tokenize">
+<area shape="rect" href="epydoc.markup.epytext-module.html#_tokenize" title="_tokenize()" alt="" coords="129,90,236,122" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#_tokenize_doctest" title="_tokenize_doctest()" alt="" coords="285,6,456,38" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#_tokenize_listart" title="_tokenize_listart()" alt="" coords="291,62,451,94" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#_tokenize_literal" title="_tokenize_literal()" alt="" coords="291,118,451,150" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#_tokenize_para" title="_tokenize_para()" alt="" coords="296,174,445,206" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#parse" title="parse()" alt="" coords="5,90,80,122" />
+</map>
+  <img src="call_graph_for__tokenize.gif" alt='' usemap="#call_graph_for__tokenize" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>Element</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.epytext-module.html#_colorize" class="summary-sig-name" onclick="show_private();">_colorize</a>(<span class="summary-sig-arg">doc</span>,
+        <span class="summary-sig-arg">token</span>,
+        <span class="summary-sig-arg">errors</span>,
+        <span class="summary-sig-arg">tagName</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string">para</code><code class="variable-quote">'</code></span>)</span><br />
+      Given a string containing the contents of a paragraph, produce a DOM 
+      <code>Element</code> encoding that paragraph.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.epytext-pysrc.html#_colorize">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__colorize-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__colorize-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__colorize" name="call_graph_for__colorize">
+<area shape="rect" href="epydoc.markup.epytext.Element-class.html#__init__" title="Element.__init__()" alt="" coords="341,6,504,38" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#_add_para" title="_add_para()" alt="" coords="16,34,128,66" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#_colorize" title="_colorize()" alt="" coords="188,62,292,94" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#_add_section" title="_add_section()" alt="" coords="5,90,139,122" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#_colorize_graph" title="_colorize_graph()" alt="" coords="345,62,500,94" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#_colorize_link" title="_colorize_link()" alt="" coords="352,118,493,150" />
+</map>
+  <img src="call_graph_for__colorize.gif" alt='' usemap="#call_graph_for__colorize" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.epytext-module.html#_colorize_graph" class="summary-sig-name" onclick="show_private();">_colorize_graph</a>(<span class="summary-sig-arg">doc</span>,
+        <span class="summary-sig-arg">graph</span>,
+        <span class="summary-sig-arg">token</span>,
+        <span class="summary-sig-arg">end</span>,
+        <span class="summary-sig-arg">errors</span>)</span><br />
+      Eg:</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.epytext-pysrc.html#_colorize_graph">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__colorize_graph-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__colorize_graph-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__colorize_graph" name="call_graph_for__colorize_graph">
+<area shape="rect" href="epydoc.markup.epytext-module.html#_colorize" title="_colorize()" alt="" coords="7,6,111,38" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#_colorize_graph" title="_colorize_graph()" alt="" coords="162,6,316,38" />
+</map>
+  <img src="call_graph_for__colorize_graph.gif" alt='' usemap="#call_graph_for__colorize_graph" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_colorize_link"></a><span class="summary-sig-name">_colorize_link</span>(<span class="summary-sig-arg">doc</span>,
+        <span class="summary-sig-arg">link</span>,
+        <span class="summary-sig-arg">token</span>,
+        <span class="summary-sig-arg">end</span>,
+        <span class="summary-sig-arg">errors</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.epytext-pysrc.html#_colorize_link">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__colorize_link-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__colorize_link-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__colorize_link" name="call_graph_for__colorize_link">
+<area shape="rect" href="epydoc.markup.epytext.Element-class.html#__init__" title="Element.__init__()" alt="" coords="352,6,515,38" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#_colorize" title="_colorize()" alt="" coords="7,6,111,38" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#_colorize_link" title="_colorize_link()" alt="" coords="161,6,303,38" />
+</map>
+  <img src="call_graph_for__colorize_link.gif" alt='' usemap="#call_graph_for__colorize_link" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>string</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.epytext-module.html#to_epytext" class="summary-sig-name">to_epytext</a>(<span class="summary-sig-arg">tree</span>,
+        <span class="summary-sig-arg">indent</span>=<span class="summary-sig-default">0</span>,
+        <span class="summary-sig-arg">seclevel</span>=<span class="summary-sig-default">0</span>)</span><br />
+      Convert a DOM document encoding epytext back to an epytext string.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.epytext-pysrc.html#to_epytext">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>string</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.epytext-module.html#to_plaintext" class="summary-sig-name">to_plaintext</a>(<span class="summary-sig-arg">tree</span>,
+        <span class="summary-sig-arg">indent</span>=<span class="summary-sig-default">0</span>,
+        <span class="summary-sig-arg">seclevel</span>=<span class="summary-sig-default">0</span>)</span><br />
+      Convert a DOM document encoding epytext to a string representation.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.epytext-pysrc.html#to_plaintext">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_to_plaintext-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_to_plaintext-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_to_plaintext" name="call_graph_for_to_plaintext">
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#to_plaintext" title="ParsedEpytextDocstring.to_plaintext()" alt="" coords="7,30,313,62" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#to_plaintext" title="to_plaintext()" alt="" coords="363,30,485,62" />
+<area shape="rect" href="epydoc.util-module.html#wordwrap" title="util.wordwrap()" alt="" coords="535,30,673,62" />
+</map>
+  <img src="call_graph_for_to_plaintext.gif" alt='' usemap="#call_graph_for_to_plaintext" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>string</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.epytext-module.html#to_debug" class="summary-sig-name">to_debug</a>(<span class="summary-sig-arg">tree</span>,
+        <span class="summary-sig-arg">indent</span>=<span class="summary-sig-default">4</span>,
+        <span class="summary-sig-arg">seclevel</span>=<span class="summary-sig-default">0</span>)</span><br />
+      Convert a DOM document encoding epytext back to an epytext string, 
+      annotated with extra debugging information.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.epytext-pysrc.html#to_debug">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>Element</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.epytext-module.html#pparse" class="summary-sig-name">pparse</a>(<span class="summary-sig-arg">str</span>,
+        <span class="summary-sig-arg">show_warnings</span>=<span class="summary-sig-default">1</span>,
+        <span class="summary-sig-arg">show_errors</span>=<span class="summary-sig-default">1</span>,
+        <span class="summary-sig-arg">stream</span>=<span class="summary-sig-default">sys.stderr</span>)</span><br />
+      Pretty-parse the string.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.epytext-pysrc.html#pparse">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>Element</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.epytext-module.html#parse_as_literal" class="summary-sig-name">parse_as_literal</a>(<span class="summary-sig-arg">str</span>)</span><br />
+      Return a DOM document matching the epytext DTD, containing a single 
+      literal block.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.epytext-pysrc.html#parse_as_literal">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>Element</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.epytext-module.html#parse_as_para" class="summary-sig-name">parse_as_para</a>(<span class="summary-sig-arg">str</span>)</span><br />
+      Return a DOM document matching the epytext DTD, containing a single 
+      paragraph.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.epytext-pysrc.html#parse_as_para">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_parse_as_para-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_parse_as_para-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_parse_as_para" name="call_graph_for_parse_as_para">
+<area shape="rect" href="epydoc.docstringparser-module.html#add_metadata_from_var" title="docstringparser.add_metadata_from_var()" alt="" coords="7,6,340,38" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#parse_as_para" title="parse_as_para()" alt="" coords="390,6,531,38" />
+<area shape="rect" href="epydoc.markup.epytext.Element-class.html#__init__" title="Element.__init__()" alt="" coords="579,6,742,38" />
+</map>
+  <img src="call_graph_for_parse_as_para.gif" alt='' usemap="#call_graph_for_parse_as_para" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><a href="epydoc.markup.ParsedDocstring-class.html" 
+      class="link">ParsedDocstring</a></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.epytext-module.html#parse_docstring" class="summary-sig-name">parse_docstring</a>(<span class="summary-sig-arg">docstring</span>,
+        <span class="summary-sig-arg">errors</span>,
+        <span class="summary-sig-arg">**options</span>)</span><br />
+      Parse the given docstring, which is formatted using epytext; and 
+      return a <code>ParsedDocstring</code> representation of its contents.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.epytext-pysrc.html#parse_docstring">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_parse_docstring_2-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_parse_docstring_2-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_parse_docstring_2" name="call_graph_for_parse_docstring_2">
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#__init__" title="ParsedEpytextDocstring.__init__()" alt="" coords="332,6,612,38" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#parse" title="parse()" alt="" coords="435,62,510,94" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#parse_docstring" title="parse_docstring()" alt="" coords="130,34,282,66" />
+<area shape="rect" href="epydoc.markup-module.html#parse" title="parse()" alt="" coords="6,34,80,66" />
+</map>
+  <img src="call_graph_for_parse_docstring_2.gif" alt='' usemap="#call_graph_for_parse_docstring_2" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+</table>
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Variables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="_HEADING_CHARS"></a><span class="summary-name">_HEADING_CHARS</span> = <code title="'=-~'"><code class="variable-quote">'</code><code class="variable-string">=-~</code><code class="variable-quote">'</code></code>
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="_ESCAPES"></a><span class="summary-name">_ESCAPES</span> = <code title="{'lb': '{', 'rb': '}'}"><code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">lb</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">{</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code clas [...]
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.markup.epytext-module.html#SYMBOLS" class="summary-name">SYMBOLS</a> = <code title="['<-',
+ '->',
+ '^',
+ 'v',
+ 'alpha',
+ 'beta',
+ 'gamma',
+ 'delta',
+..."><code class="variable-group">[</code><code class="variable-quote">'</code><code class="variable-string"><-</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">-></code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">^</code><code class="variable-quote">'</code><code class="variable-op">, </code>< [...]
+      A list of the of escape symbols that are supported by epydoc.
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.markup.epytext-module.html#_SYMBOLS" class="summary-name" onclick="show_private();">_SYMBOLS</a> = <code title="{'->': 1,
+ '<-': 1,
+ '<=': 1,
+ '>=': 1,
+ 'Alpha': 1,
+ 'Beta': 1,
+ 'Chi': 1,
+ 'Delta': 1,
+..."><code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">-></code><code class="variable-quote">'</code><code class="variable-op">: </code>1<code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string"><-</code><code class="variable-quote">'</code><code class="variable-op">: </code>1<code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string"><=</co [...]
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="__doc__"></a><span class="summary-name">__doc__</span> = <code title="__doc__.replace('<<<SYMBOLS>>>', symblist)">__doc__.replace('<<<SYMBOLS>>>', symblist)</code>
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.markup.epytext-module.html#_COLORIZING_TAGS" class="summary-name" onclick="show_private();">_COLORIZING_TAGS</a> = <code title="{'B': 'bold',
+ 'C': 'code',
+ 'E': 'escape',
+ 'G': 'graph',
+ 'I': 'italic',
+ 'L': 'link',
+ 'M': 'math',
+ 'S': 'symbol',
+..."><code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">B</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">bold</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">C</code><code class="variable-quote">'</code><code class="variable-op">: </code><code  [...]
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="_LINK_COLORIZING_TAGS"></a><span class="summary-name">_LINK_COLORIZING_TAGS</span> = <code title="['link', 'uri']"><code class="variable-group">[</code><code class="variable-quote">'</code><code class="variable-string">link</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">uri</code><code class="variable-quote">'</code><code class="variable-group">]</code></code>
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.markup.epytext-module.html#_BULLET_RE" class="summary-name" onclick="show_private();">_BULLET_RE</a> = <code title="re.compile(r'-( +|$)|(\d+\.)+( +|$)|@\w+( [^\{\}:\n]+)?:')">re.compile(r'-<code class="re-group">(</code> <code class="re-op">+</code><code class="re-op">|</code>$<code class="re-group">)</code><code class="re-op">|</code><code class="re-group">(</code>\d<code class="re-op">+</code>\.<code class="re-group">)</code><code class="re-op">+</code><code cl [...]
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="_LIST_BULLET_RE"></a><span class="summary-name">_LIST_BULLET_RE</span> = <code title="re.compile(r'-( +|$)|(\d+\.)+( +|$)')">re.compile(r'-<code class="re-group">(</code> <code class="re-op">+</code><code class="re-op">|</code>$<code class="re-group">)</code><code class="re-op">|</code><code class="re-group">(</code>\d<code class="re-op">+</code>\.<code class="re-group">)</code><code class="re-op">+</code><code class="re-group">(</code> <code class="re-op">+</code><code  [...]
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="_FIELD_BULLET_RE"></a><span class="summary-name">_FIELD_BULLET_RE</span> = <code title="re.compile(r'@\w+( [^\{\}:\n]+)?:')">re.compile(r'@\w<code class="re-op">+</code><code class="re-group">(</code> <code class="re-group">[</code><code class="re-op">^</code>\{\}:\n<code class="re-group">]</code><code class="re-op">+</code><code class="re-group">)</code><code class="re-op">?</code>:')</code>
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="_BRACE_RE"></a><span class="summary-name">_BRACE_RE</span> = <code title="re.compile(r'[\{\}]')">re.compile(r'<code class="re-group">[</code>\{\}<code class="re-group">]</code>')</code>
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="_TARGET_RE"></a><span class="summary-name">_TARGET_RE</span> = <code title="re.compile(r'^(.*?)\s*<(?:URI:|L:)?([^<>]+)>$')">re.compile(r'^<code class="re-group">(</code>.<code class="re-op">*?</code><code class="re-group">)</code>\s<code class="re-op">*</code><<code class="re-group">(?:</code>URI:<code class="re-op">|</code>L:<code class="re-group">)</code><code class="re-op">?</code><code class="re-group">(</code><code class="re-group">[</code><code clas [...]
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.markup.epytext-module.html#GRAPH_TYPES" class="summary-name">GRAPH_TYPES</a> = <code title="['classtree', 'packagetree', 'importgraph', 'callgraph']"><code class="variable-group">[</code><code class="variable-quote">'</code><code class="variable-string">classtree</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">packagetree</code><code class="variable-quote">'</code><cod [...]
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="SYMBOL_TO_PLAINTEXT"></a><span class="summary-name">SYMBOL_TO_PLAINTEXT</span> = <code title="{'crarr': '\\'}"><code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">crarr</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">\\</code><code class="variable-quote">'</code><code class="variable-group">}</code></code>
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTION DETAILS ==================== -->
+<a name="section-FunctionDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Function Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-FunctionDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="parse"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">parse</span>(<span class="sig-arg">str</span>,
+        <span class="sig-arg">errors</span>=<span class="sig-default">None</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.epytext-pysrc.html#parse">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_parse_2-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_parse_2-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_parse_2" name="call_graph_for_parse_2">
+<area shape="rect" href="epydoc.markup.epytext.Element-class.html#__init__" title="Element.__init__()" alt="" coords="359,6,522,38" />
+<area shape="rect" href="epydoc.markup.epytext.Token-class.html#to_dom" title="Token.to_dom()" alt="" coords="368,62,512,94" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#_add_list" title="_add_list()" alt="" coords="388,118,492,150" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#_add_para" title="_add_para()" alt="" coords="384,174,496,206" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#_add_section" title="_add_section()" alt="" coords="374,230,507,262" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#_pop_completed_blocks" title="_pop_completed_blocks()" alt="" coords="332,286,548,318" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#_raise_graphs" title="_raise_graphs()" alt="" coords="371,342,510,374" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#_tokenize" title="_tokenize()" alt="" coords="387,398,494,430" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#parse" title="parse()" alt="" coords="208,202,283,234" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#parse_docstring" title="parse_docstring()" alt="" coords="7,202,159,234" />
+</map>
+  <img src="call_graph_for_parse_2.gif" alt='' usemap="#call_graph_for_parse_2" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Return a DOM tree encoding the contents of an epytext string.  Any 
+  errors generated during parsing will be stored in 
+  <code>errors</code>.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>str</code></strong> (<code>string</code>) - The epytext string to parse.</li>
+        <li><strong class="pname"><code>errors</code></strong> (<code>list</code> of <a 
+          href="epydoc.markup.ParseError-class.html" 
+          class="link">ParseError</a>) - A list where any errors generated during parsing will be stored.
+          If no list is specified, then fatal errors will generate 
+          exceptions, and non-fatal errors will be ignored.</li>
+    </ul></dd>
+    <dt>Returns: <code>Element</code></dt>
+        <dd>a DOM tree encoding the contents of an epytext string.</dd>
+    <dt>Raises:</dt>
+    <dd><ul class="nomargin-top">
+        <li><code><strong class='fraise'><a href="epydoc.markup.ParseError-class.html">ParseError</a></strong></code> - If <code>errors</code> is <code>None</code> and an error is 
+        encountered while parsing.</li>
+    </ul></dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="_pop_completed_blocks"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">_pop_completed_blocks</span>(<span class="sig-arg">token</span>,
+        <span class="sig-arg">stack</span>,
+        <span class="sig-arg">indent_stack</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.epytext-pysrc.html#_pop_completed_blocks">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__pop_completed_-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for__pop_completed_-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__pop_completed_" name="call_graph_for__pop_completed_">
+<area shape="rect" href="epydoc.markup.epytext-module.html#_pop_completed_blocks" title="_pop_completed_blocks()" alt="" coords="129,6,345,38" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#parse" title="parse()" alt="" coords="5,6,80,38" />
+</map>
+  <img src="call_graph_for__pop_completed_.gif" alt='' usemap="#call_graph_for__pop_completed_" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Pop any completed blocks off the stack.  This includes any blocks that
+  we have dedented past, as well as any list item blocks that we've 
+  dedented to.  The top element on the stack should only be a list if we're
+  about to start a new list item (i.e., if the next token is a bullet).</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="_add_list"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">_add_list</span>(<span class="sig-arg">doc</span>,
+        <span class="sig-arg">bullet_token</span>,
+        <span class="sig-arg">stack</span>,
+        <span class="sig-arg">indent_stack</span>,
+        <span class="sig-arg">errors</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.epytext-pysrc.html#_add_list">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__add_list-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for__add_list-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__add_list" name="call_graph_for__add_list">
+<area shape="rect" href="epydoc.markup.epytext.Element-class.html#__init__" title="Element.__init__()" alt="" coords="280,6,443,38" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#_add_list" title="_add_list()" alt="" coords="128,6,232,38" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#parse" title="parse()" alt="" coords="5,6,80,38" />
+</map>
+  <img src="call_graph_for__add_list.gif" alt='' usemap="#call_graph_for__add_list" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Add a new list item or field to the DOM tree, with the given bullet or
+  field tag.  When necessary, create the associated list.</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="_tokenize_doctest"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">_tokenize_doctest</span>(<span class="sig-arg">lines</span>,
+        <span class="sig-arg">start</span>,
+        <span class="sig-arg">block_indent</span>,
+        <span class="sig-arg">tokens</span>,
+        <span class="sig-arg">errors</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.epytext-pysrc.html#_tokenize_doctest">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__tokenize_docte-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for__tokenize_docte-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__tokenize_docte" name="call_graph_for__tokenize_docte">
+<area shape="rect" href="epydoc.markup.epytext.Token-class.html#__init__" title="Token.__init__()" alt="" coords="383,6,529,38" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#_tokenize" title="_tokenize()" alt="" coords="7,6,113,38" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#_tokenize_doctest" title="_tokenize_doctest()" alt="" coords="163,6,333,38" />
+</map>
+  <img src="call_graph_for__tokenize_docte.gif" alt='' usemap="#call_graph_for__tokenize_docte" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Construct a <a href="epydoc.markup.epytext.Token-class.html" 
+  class="link">Token</a> containing the doctest block starting at 
+  <code>lines[start]</code>, and append it to <code>tokens</code>.  
+  <code>block_indent</code> should be the indentation of the doctest block.
+  Any errors generated while tokenizing the doctest block will be appended 
+  to <code>errors</code>.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>lines</code></strong> (<code>list</code> of <code>string</code>) - The list of lines to be tokenized</li>
+        <li><strong class="pname"><code>start</code></strong> (<code>int</code>) - The index into <code>lines</code> of the first line of the 
+          doctest block to be tokenized.</li>
+        <li><strong class="pname"><code>block_indent</code></strong> (<code>int</code>) - The indentation of <code>lines[start]</code>.  This is the 
+          indentation of the doctest block.</li>
+        <li><strong class="pname"><code>errors</code></strong> (<code>list</code> of <a 
+          href="epydoc.markup.ParseError-class.html" 
+          class="link">ParseError</a>) - A list where any errors generated during parsing will be stored.
+          If no list is specified, then errors will generate exceptions.</li>
+        <li><strong class="pname"><code>tokens</code></strong> (<code>list</code> of <a 
+          href="epydoc.markup.epytext.Token-class.html" 
+          class="link">Token</a>)</li>
+    </ul></dd>
+    <dt>Returns: <code>int</code></dt>
+        <dd>The line number of the first line following the doctest block.</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="_tokenize_literal"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">_tokenize_literal</span>(<span class="sig-arg">lines</span>,
+        <span class="sig-arg">start</span>,
+        <span class="sig-arg">block_indent</span>,
+        <span class="sig-arg">tokens</span>,
+        <span class="sig-arg">errors</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.epytext-pysrc.html#_tokenize_literal">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__tokenize_liter-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for__tokenize_liter-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__tokenize_liter" name="call_graph_for__tokenize_liter">
+<area shape="rect" href="epydoc.markup.epytext.Token-class.html#__init__" title="Token.__init__()" alt="" coords="372,6,519,38" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#_tokenize" title="_tokenize()" alt="" coords="7,6,113,38" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#_tokenize_literal" title="_tokenize_literal()" alt="" coords="163,6,323,38" />
+</map>
+  <img src="call_graph_for__tokenize_liter.gif" alt='' usemap="#call_graph_for__tokenize_liter" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Construct a <a href="epydoc.markup.epytext.Token-class.html" 
+  class="link">Token</a> containing the literal block starting at 
+  <code>lines[start]</code>, and append it to <code>tokens</code>.  
+  <code>block_indent</code> should be the indentation of the literal block.
+  Any errors generated while tokenizing the literal block will be appended 
+  to <code>errors</code>.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>lines</code></strong> (<code>list</code> of <code>string</code>) - The list of lines to be tokenized</li>
+        <li><strong class="pname"><code>start</code></strong> (<code>int</code>) - The index into <code>lines</code> of the first line of the 
+          literal block to be tokenized.</li>
+        <li><strong class="pname"><code>block_indent</code></strong> (<code>int</code>) - The indentation of <code>lines[start]</code>.  This is the 
+          indentation of the literal block.</li>
+        <li><strong class="pname"><code>errors</code></strong> (<code>list</code> of <a 
+          href="epydoc.markup.ParseError-class.html" 
+          class="link">ParseError</a>) - A list of the errors generated by parsing.  Any new errors 
+          generated while will tokenizing this paragraph will be appended 
+          to this list.</li>
+        <li><strong class="pname"><code>tokens</code></strong> (<code>list</code> of <a 
+          href="epydoc.markup.epytext.Token-class.html" 
+          class="link">Token</a>)</li>
+    </ul></dd>
+    <dt>Returns: <code>int</code></dt>
+        <dd>The line number of the first line following the literal block.</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="_tokenize_listart"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">_tokenize_listart</span>(<span class="sig-arg">lines</span>,
+        <span class="sig-arg">start</span>,
+        <span class="sig-arg">bullet_indent</span>,
+        <span class="sig-arg">tokens</span>,
+        <span class="sig-arg">errors</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.epytext-pysrc.html#_tokenize_listart">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__tokenize_lista-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for__tokenize_lista-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__tokenize_lista" name="call_graph_for__tokenize_lista">
+<area shape="rect" href="epydoc.markup.epytext.Token-class.html#__init__" title="Token.__init__()" alt="" coords="372,6,519,38" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#_tokenize" title="_tokenize()" alt="" coords="7,6,113,38" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#_tokenize_listart" title="_tokenize_listart()" alt="" coords="163,6,323,38" />
+</map>
+  <img src="call_graph_for__tokenize_lista.gif" alt='' usemap="#call_graph_for__tokenize_lista" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Construct <a href="epydoc.markup.epytext.Token-class.html" 
+  class="link">Token</a>s for the bullet and the first paragraph of the 
+  list item (or field) starting at <code>lines[start]</code>, and append 
+  them to <code>tokens</code>.  <code>bullet_indent</code> should be the 
+  indentation of the list item.  Any errors generated while tokenizing will
+  be appended to <code>errors</code>.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>lines</code></strong> (<code>list</code> of <code>string</code>) - The list of lines to be tokenized</li>
+        <li><strong class="pname"><code>start</code></strong> (<code>int</code>) - The index into <code>lines</code> of the first line of the list 
+          item to be tokenized.</li>
+        <li><strong class="pname"><code>bullet_indent</code></strong> (<code>int</code>) - The indentation of <code>lines[start]</code>.  This is the 
+          indentation of the list item.</li>
+        <li><strong class="pname"><code>errors</code></strong> (<code>list</code> of <a 
+          href="epydoc.markup.ParseError-class.html" 
+          class="link">ParseError</a>) - A list of the errors generated by parsing.  Any new errors 
+          generated while will tokenizing this paragraph will be appended 
+          to this list.</li>
+        <li><strong class="pname"><code>tokens</code></strong> (<code>list</code> of <a 
+          href="epydoc.markup.epytext.Token-class.html" 
+          class="link">Token</a>)</li>
+    </ul></dd>
+    <dt>Returns: <code>int</code></dt>
+        <dd>The line number of the first line following the list item's first
+          paragraph.</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="_tokenize_para"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">_tokenize_para</span>(<span class="sig-arg">lines</span>,
+        <span class="sig-arg">start</span>,
+        <span class="sig-arg">para_indent</span>,
+        <span class="sig-arg">tokens</span>,
+        <span class="sig-arg">errors</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.epytext-pysrc.html#_tokenize_para">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__tokenize_para-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for__tokenize_para-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__tokenize_para" name="call_graph_for__tokenize_para">
+<area shape="rect" href="epydoc.markup.epytext.Token-class.html#__init__" title="Token.__init__()" alt="" coords="362,6,508,38" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#_tokenize" title="_tokenize()" alt="" coords="7,6,114,38" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#_tokenize_para" title="_tokenize_para()" alt="" coords="163,6,312,38" />
+</map>
+  <img src="call_graph_for__tokenize_para.gif" alt='' usemap="#call_graph_for__tokenize_para" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Construct a <a href="epydoc.markup.epytext.Token-class.html" 
+  class="link">Token</a> containing the paragraph starting at 
+  <code>lines[start]</code>, and append it to <code>tokens</code>.  
+  <code>para_indent</code> should be the indentation of the paragraph .  
+  Any errors generated while tokenizing the paragraph will be appended to 
+  <code>errors</code>.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>lines</code></strong> (<code>list</code> of <code>string</code>) - The list of lines to be tokenized</li>
+        <li><strong class="pname"><code>start</code></strong> (<code>int</code>) - The index into <code>lines</code> of the first line of the 
+          paragraph to be tokenized.</li>
+        <li><strong class="pname"><code>para_indent</code></strong> (<code>int</code>) - The indentation of <code>lines[start]</code>.  This is the 
+          indentation of the paragraph.</li>
+        <li><strong class="pname"><code>errors</code></strong> (<code>list</code> of <a 
+          href="epydoc.markup.ParseError-class.html" 
+          class="link">ParseError</a>) - A list of the errors generated by parsing.  Any new errors 
+          generated while will tokenizing this paragraph will be appended 
+          to this list.</li>
+        <li><strong class="pname"><code>tokens</code></strong> (<code>list</code> of <a 
+          href="epydoc.markup.epytext.Token-class.html" 
+          class="link">Token</a>)</li>
+    </ul></dd>
+    <dt>Returns: <code>int</code></dt>
+        <dd>The line number of the first line following the paragraph.</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="_tokenize"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">_tokenize</span>(<span class="sig-arg">str</span>,
+        <span class="sig-arg">errors</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.epytext-pysrc.html#_tokenize">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__tokenize-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for__tokenize-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__tokenize" name="call_graph_for__tokenize">
+<area shape="rect" href="epydoc.markup.epytext-module.html#_tokenize" title="_tokenize()" alt="" coords="129,90,236,122" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#_tokenize_doctest" title="_tokenize_doctest()" alt="" coords="285,6,456,38" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#_tokenize_listart" title="_tokenize_listart()" alt="" coords="291,62,451,94" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#_tokenize_literal" title="_tokenize_literal()" alt="" coords="291,118,451,150" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#_tokenize_para" title="_tokenize_para()" alt="" coords="296,174,445,206" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#parse" title="parse()" alt="" coords="5,90,80,122" />
+</map>
+  <img src="call_graph_for__tokenize.gif" alt='' usemap="#call_graph_for__tokenize" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Split a given formatted docstring into an ordered list of 
+  <code>Token</code>s, according to the epytext markup rules.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>str</code></strong> (<code>string</code>) - The epytext string</li>
+        <li><strong class="pname"><code>errors</code></strong> (<code>list</code> of <a 
+          href="epydoc.markup.ParseError-class.html" 
+          class="link">ParseError</a>) - A list where any errors generated during parsing will be stored.
+          If no list is specified, then errors will generate exceptions.</li>
+    </ul></dd>
+    <dt>Returns: <code>list</code> of <a href="epydoc.markup.epytext.Token-class.html"
+      class="link">Token</a></dt>
+        <dd>a list of the <code>Token</code>s that make up the given string.</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="_colorize"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">_colorize</span>(<span class="sig-arg">doc</span>,
+        <span class="sig-arg">token</span>,
+        <span class="sig-arg">errors</span>,
+        <span class="sig-arg">tagName</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string">para</code><code class="variable-quote">'</code></span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.epytext-pysrc.html#_colorize">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__colorize-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for__colorize-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__colorize" name="call_graph_for__colorize">
+<area shape="rect" href="epydoc.markup.epytext.Element-class.html#__init__" title="Element.__init__()" alt="" coords="341,6,504,38" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#_add_para" title="_add_para()" alt="" coords="16,34,128,66" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#_colorize" title="_colorize()" alt="" coords="188,62,292,94" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#_add_section" title="_add_section()" alt="" coords="5,90,139,122" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#_colorize_graph" title="_colorize_graph()" alt="" coords="345,62,500,94" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#_colorize_link" title="_colorize_link()" alt="" coords="352,118,493,150" />
+</map>
+  <img src="call_graph_for__colorize.gif" alt='' usemap="#call_graph_for__colorize" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Given a string containing the contents of a paragraph, produce a DOM 
+  <code>Element</code> encoding that paragraph.  Colorized regions are 
+  represented using DOM <code>Element</code>s, and text is represented 
+  using DOM <code>Text</code>s.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>errors</code></strong> (<code>list</code> of <code>string</code>) - A list of errors.  Any newly generated errors will be appended to
+          this list.</li>
+        <li><strong class="pname"><code>tagName</code></strong> (<code>string</code>) - The element tag for the DOM <code>Element</code> that should be 
+          generated.</li>
+    </ul></dd>
+    <dt>Returns: <code>Element</code></dt>
+        <dd>a DOM <code>Element</code> encoding the given paragraph.</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="_colorize_graph"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">_colorize_graph</span>(<span class="sig-arg">doc</span>,
+        <span class="sig-arg">graph</span>,
+        <span class="sig-arg">token</span>,
+        <span class="sig-arg">end</span>,
+        <span class="sig-arg">errors</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.epytext-pysrc.html#_colorize_graph">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__colorize_graph-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for__colorize_graph-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__colorize_graph" name="call_graph_for__colorize_graph">
+<area shape="rect" href="epydoc.markup.epytext-module.html#_colorize" title="_colorize()" alt="" coords="7,6,111,38" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#_colorize_graph" title="_colorize_graph()" alt="" coords="162,6,316,38" />
+</map>
+  <img src="call_graph_for__colorize_graph.gif" alt='' usemap="#call_graph_for__colorize_graph" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Eg:</p>
+<pre class="literalblock">
+ G{classtree}
+ G{classtree x, y, z}
+ G{importgraph}
+</pre>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="to_epytext"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">to_epytext</span>(<span class="sig-arg">tree</span>,
+        <span class="sig-arg">indent</span>=<span class="sig-default">0</span>,
+        <span class="sig-arg">seclevel</span>=<span class="sig-default">0</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.epytext-pysrc.html#to_epytext">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Convert a DOM document encoding epytext back to an epytext string. 
+  This is the inverse operation from <a 
+  href="epydoc.markup.epytext-module.html#parse" class="link">parse</a>.  
+  I.e., assuming there are no errors, the following is true:</p>
+  <ul>
+    <li>
+      <code>parse(to_epytext(tree)) == tree</code>
+    </li>
+  </ul>
+  <p>The inverse is true, except that whitespace, line wrapping, and 
+  character escaping may be done differently.</p>
+  <ul>
+    <li>
+      <code>to_epytext(parse(str)) == str</code> (approximately)
+    </li>
+  </ul>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>tree</code></strong> (<code>Element</code>) - A DOM document encoding of an epytext string.</li>
+        <li><strong class="pname"><code>indent</code></strong> (<code>int</code>) - The indentation for the string representation of 
+          <code>tree</code>.  Each line of the returned string will begin 
+          with <code>indent</code> space characters.</li>
+        <li><strong class="pname"><code>seclevel</code></strong> (<code>int</code>) - The section level that <code>tree</code> appears at.  This is 
+          used to generate section headings.</li>
+    </ul></dd>
+    <dt>Returns: <code>string</code></dt>
+        <dd>The epytext string corresponding to <code>tree</code>.</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="to_plaintext"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">to_plaintext</span>(<span class="sig-arg">tree</span>,
+        <span class="sig-arg">indent</span>=<span class="sig-default">0</span>,
+        <span class="sig-arg">seclevel</span>=<span class="sig-default">0</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.epytext-pysrc.html#to_plaintext">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_to_plaintext-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_to_plaintext-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_to_plaintext" name="call_graph_for_to_plaintext">
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#to_plaintext" title="ParsedEpytextDocstring.to_plaintext()" alt="" coords="7,30,313,62" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#to_plaintext" title="to_plaintext()" alt="" coords="363,30,485,62" />
+<area shape="rect" href="epydoc.util-module.html#wordwrap" title="util.wordwrap()" alt="" coords="535,30,673,62" />
+</map>
+  <img src="call_graph_for_to_plaintext.gif" alt='' usemap="#call_graph_for_to_plaintext" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Convert a DOM document encoding epytext to a string representation. 
+  This representation is similar to the string generated by 
+  <code>to_epytext</code>, but <code>to_plaintext</code> removes inline 
+  markup, prints escaped characters in unescaped form, etc.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>tree</code></strong> (<code>Element</code>) - A DOM document encoding of an epytext string.</li>
+        <li><strong class="pname"><code>indent</code></strong> (<code>int</code>) - The indentation for the string representation of 
+          <code>tree</code>.  Each line of the returned string will begin 
+          with <code>indent</code> space characters.</li>
+        <li><strong class="pname"><code>seclevel</code></strong> (<code>int</code>) - The section level that <code>tree</code> appears at.  This is 
+          used to generate section headings.</li>
+    </ul></dd>
+    <dt>Returns: <code>string</code></dt>
+        <dd>The epytext string corresponding to <code>tree</code>.</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="to_debug"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">to_debug</span>(<span class="sig-arg">tree</span>,
+        <span class="sig-arg">indent</span>=<span class="sig-default">4</span>,
+        <span class="sig-arg">seclevel</span>=<span class="sig-default">0</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.epytext-pysrc.html#to_debug">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Convert a DOM document encoding epytext back to an epytext string, 
+  annotated with extra debugging information.  This function is similar to 
+  <a href="epydoc.markup.epytext-module.html#to_epytext" 
+  class="link">to_epytext</a>, but it adds explicit information about where
+  different blocks begin, along the left margin.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>tree</code></strong> (<code>Element</code>) - A DOM document encoding of an epytext string.</li>
+        <li><strong class="pname"><code>indent</code></strong> (<code>int</code>) - The indentation for the string representation of 
+          <code>tree</code>.  Each line of the returned string will begin 
+          with <code>indent</code> space characters.</li>
+        <li><strong class="pname"><code>seclevel</code></strong> (<code>int</code>) - The section level that <code>tree</code> appears at.  This is 
+          used to generate section headings.</li>
+    </ul></dd>
+    <dt>Returns: <code>string</code></dt>
+        <dd>The epytext string corresponding to <code>tree</code>.</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="pparse"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">pparse</span>(<span class="sig-arg">str</span>,
+        <span class="sig-arg">show_warnings</span>=<span class="sig-default">1</span>,
+        <span class="sig-arg">show_errors</span>=<span class="sig-default">1</span>,
+        <span class="sig-arg">stream</span>=<span class="sig-default">sys.stderr</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.epytext-pysrc.html#pparse">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Pretty-parse the string.  This parses the string, and catches any 
+  warnings or errors produced.  Any warnings and errors are displayed, and 
+  the resulting DOM parse structure is returned.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>str</code></strong> (<code>string</code>) - The string to parse.</li>
+        <li><strong class="pname"><code>show_warnings</code></strong> (<code>boolean</code>) - Whether or not to display non-fatal errors generated by parsing 
+          <code>str</code>.</li>
+        <li><strong class="pname"><code>show_errors</code></strong> (<code>boolean</code>) - Whether or not to display fatal errors generated by parsing 
+          <code>str</code>.</li>
+        <li><strong class="pname"><code>stream</code></strong> (<code>stream</code>) - The stream that warnings and errors should be written to.</li>
+    </ul></dd>
+    <dt>Returns: <code>Element</code></dt>
+        <dd>a DOM document encoding the contents of <code>str</code>.</dd>
+    <dt>Raises:</dt>
+    <dd><ul class="nomargin-top">
+        <li><code><strong class='fraise'>SyntaxError</strong></code> - If any fatal errors were encountered.</li>
+    </ul></dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="parse_as_literal"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">parse_as_literal</span>(<span class="sig-arg">str</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.epytext-pysrc.html#parse_as_literal">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Return a DOM document matching the epytext DTD, containing a single 
+  literal block.  That literal block will include the contents of the given
+  string.  This method is typically used as a fall-back when the parser 
+  fails.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>str</code></strong> (<code>string</code>) - The string which should be enclosed in a literal block.</li>
+    </ul></dd>
+    <dt>Returns: <code>Element</code></dt>
+        <dd>A DOM document containing <code>str</code> in a single literal 
+          block.</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="parse_as_para"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">parse_as_para</span>(<span class="sig-arg">str</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.epytext-pysrc.html#parse_as_para">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_parse_as_para-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_parse_as_para-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_parse_as_para" name="call_graph_for_parse_as_para">
+<area shape="rect" href="epydoc.docstringparser-module.html#add_metadata_from_var" title="docstringparser.add_metadata_from_var()" alt="" coords="7,6,340,38" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#parse_as_para" title="parse_as_para()" alt="" coords="390,6,531,38" />
+<area shape="rect" href="epydoc.markup.epytext.Element-class.html#__init__" title="Element.__init__()" alt="" coords="579,6,742,38" />
+</map>
+  <img src="call_graph_for_parse_as_para.gif" alt='' usemap="#call_graph_for_parse_as_para" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Return a DOM document matching the epytext DTD, containing a single 
+  paragraph.  That paragraph will include the contents of the given string.
+  This can be used to wrap some forms of automatically generated 
+  information (such as type names) in paragraphs.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>str</code></strong> (<code>string</code>) - The string which should be enclosed in a paragraph.</li>
+    </ul></dd>
+    <dt>Returns: <code>Element</code></dt>
+        <dd>A DOM document containing <code>str</code> in a single paragraph.</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="parse_docstring"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">parse_docstring</span>(<span class="sig-arg">docstring</span>,
+        <span class="sig-arg">errors</span>,
+        <span class="sig-arg">**options</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.epytext-pysrc.html#parse_docstring">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_parse_docstring_2-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_parse_docstring_2-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_parse_docstring_2" name="call_graph_for_parse_docstring_2">
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#__init__" title="ParsedEpytextDocstring.__init__()" alt="" coords="332,6,612,38" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#parse" title="parse()" alt="" coords="435,62,510,94" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#parse_docstring" title="parse_docstring()" alt="" coords="130,34,282,66" />
+<area shape="rect" href="epydoc.markup-module.html#parse" title="parse()" alt="" coords="6,34,80,66" />
+</map>
+  <img src="call_graph_for_parse_docstring_2.gif" alt='' usemap="#call_graph_for_parse_docstring_2" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Parse the given docstring, which is formatted using epytext; and 
+  return a <code>ParsedDocstring</code> representation of its contents.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>docstring</code></strong> (<code>string</code>) - The docstring to parse</li>
+        <li><strong class="pname"><code>errors</code></strong> (<code>list</code> of <a 
+          href="epydoc.markup.ParseError-class.html" 
+          class="link">ParseError</a>) - A list where any errors generated during parsing will be stored.</li>
+        <li><strong class="pname"><code>options</code></strong> - Extra options.  Unknown options are ignored. Currently, no extra 
+          options are defined.</li>
+    </ul></dd>
+    <dt>Returns: <a href="epydoc.markup.ParsedDocstring-class.html" 
+      class="link">ParsedDocstring</a></dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== VARIABLES DETAILS ==================== -->
+<a name="section-VariablesDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Variables Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-VariablesDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="SYMBOLS"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">SYMBOLS</h3>
+  A list of the of escape symbols that are supported by epydoc.  Currently 
+  the following symbols are supported:
+  <ul>
+    <li>
+      <code>S{<-}</code>=←;
+    </li>
+    <li>
+      <code>S{->}</code>=→;
+    </li>
+    <li>
+      <code>S{^}</code>=↑;
+    </li>
+    <li>
+      <code>S{v}</code>=↓;
+    </li>
+    <li>
+      <code>S{alpha}</code>=α;
+    </li>
+    <li>
+      <code>S{beta}</code>=β;
+    </li>
+    <li>
+      <code>S{gamma}</code>=γ;
+    </li>
+    <li>
+      <code>S{delta}</code>=δ;
+    </li>
+    <li>
+      <code>S{epsilon}</code>=ε;
+    </li>
+    <li>
+      <code>S{zeta}</code>=ζ;
+    </li>
+    <li>
+      <code>S{eta}</code>=η;
+    </li>
+    <li>
+      <code>S{theta}</code>=θ;
+    </li>
+    <li>
+      <code>S{iota}</code>=ι;
+    </li>
+    <li>
+      <code>S{kappa}</code>=κ;
+    </li>
+    <li>
+      <code>S{lambda}</code>=λ;
+    </li>
+    <li>
+      <code>S{mu}</code>=μ;
+    </li>
+    <li>
+      <code>S{nu}</code>=ν;
+    </li>
+    <li>
+      <code>S{xi}</code>=ξ;
+    </li>
+    <li>
+      <code>S{omicron}</code>=ο;
+    </li>
+    <li>
+      <code>S{pi}</code>=π;
+    </li>
+    <li>
+      <code>S{rho}</code>=ρ;
+    </li>
+    <li>
+      <code>S{sigma}</code>=σ;
+    </li>
+    <li>
+      <code>S{tau}</code>=τ;
+    </li>
+    <li>
+      <code>S{upsilon}</code>=υ;
+    </li>
+    <li>
+      <code>S{phi}</code>=φ;
+    </li>
+    <li>
+      <code>S{chi}</code>=χ;
+    </li>
+    <li>
+      <code>S{psi}</code>=ψ;
+    </li>
+    <li>
+      <code>S{omega}</code>=ω;
+    </li>
+    <li>
+      <code>S{Alpha}</code>=Α;
+    </li>
+    <li>
+      <code>S{Beta}</code>=Β;
+    </li>
+    <li>
+      <code>S{Gamma}</code>=Γ;
+    </li>
+    <li>
+      <code>S{Delta}</code>=Δ;
+    </li>
+    <li>
+      <code>S{Epsilon}</code>=Ε;
+    </li>
+    <li>
+      <code>S{Zeta}</code>=Ζ;
+    </li>
+    <li>
+      <code>S{Eta}</code>=Η;
+    </li>
+    <li>
+      <code>S{Theta}</code>=Θ;
+    </li>
+    <li>
+      <code>S{Iota}</code>=Ι;
+    </li>
+    <li>
+      <code>S{Kappa}</code>=Κ;
+    </li>
+    <li>
+      <code>S{Lambda}</code>=Λ;
+    </li>
+    <li>
+      <code>S{Mu}</code>=Μ;
+    </li>
+    <li>
+      <code>S{Nu}</code>=Ν;
+    </li>
+    <li>
+      <code>S{Xi}</code>=Ξ;
+    </li>
+    <li>
+      <code>S{Omicron}</code>=Ο;
+    </li>
+    <li>
+      <code>S{Pi}</code>=Π;
+    </li>
+    <li>
+      <code>S{Rho}</code>=Ρ;
+    </li>
+    <li>
+      <code>S{Sigma}</code>=Σ;
+    </li>
+    <li>
+      <code>S{Tau}</code>=Τ;
+    </li>
+    <li>
+      <code>S{Upsilon}</code>=Υ;
+    </li>
+    <li>
+      <code>S{Phi}</code>=Φ;
+    </li>
+    <li>
+      <code>S{Chi}</code>=Χ;
+    </li>
+    <li>
+      <code>S{Psi}</code>=Ψ;
+    </li>
+    <li>
+      <code>S{Omega}</code>=Ω;
+    </li>
+    <li>
+      <code>S{larr}</code>=←;
+    </li>
+    <li>
+      <code>S{rarr}</code>=→;
+    </li>
+    <li>
+      <code>S{uarr}</code>=↑;
+    </li>
+    <li>
+      <code>S{darr}</code>=↓;
+    </li>
+    <li>
+      <code>S{harr}</code>=↔;
+    </li>
+    <li>
+      <code>S{crarr}</code>=<span class="variable-linewrap"><img 
+      src="crarr.png" alt="\" /></span>;
+    </li>
+    <li>
+      <code>S{lArr}</code>=⇐;
+    </li>
+    <li>
+      <code>S{rArr}</code>=⇒;
+    </li>
+    <li>
+      <code>S{uArr}</code>=⇑;
+    </li>
+    <li>
+      <code>S{dArr}</code>=⇓;
+    </li>
+    <li>
+      <code>S{hArr}</code>=⇔;
+    </li>
+    <li>
+      <code>S{copy}</code>=©;
+    </li>
+    <li>
+      <code>S{times}</code>=×;
+    </li>
+    <li>
+      <code>S{forall}</code>=∀;
+    </li>
+    <li>
+      <code>S{exist}</code>=∃;
+    </li>
+    <li>
+      <code>S{part}</code>=∂;
+    </li>
+    <li>
+      <code>S{empty}</code>=∅;
+    </li>
+    <li>
+      <code>S{isin}</code>=∈;
+    </li>
+    <li>
+      <code>S{notin}</code>=∉;
+    </li>
+    <li>
+      <code>S{ni}</code>=∋;
+    </li>
+    <li>
+      <code>S{prod}</code>=∏;
+    </li>
+    <li>
+      <code>S{sum}</code>=∑;
+    </li>
+    <li>
+      <code>S{prop}</code>=∝;
+    </li>
+    <li>
+      <code>S{infin}</code>=∞;
+    </li>
+    <li>
+      <code>S{ang}</code>=∠;
+    </li>
+    <li>
+      <code>S{and}</code>=∧;
+    </li>
+    <li>
+      <code>S{or}</code>=∨;
+    </li>
+    <li>
+      <code>S{cap}</code>=∩;
+    </li>
+    <li>
+      <code>S{cup}</code>=∪;
+    </li>
+    <li>
+      <code>S{int}</code>=∫;
+    </li>
+    <li>
+      <code>S{there4}</code>=&there4;;
+    </li>
+    <li>
+      <code>S{sim}</code>=∼;
+    </li>
+    <li>
+      <code>S{cong}</code>=≅;
+    </li>
+    <li>
+      <code>S{asymp}</code>=≈;
+    </li>
+    <li>
+      <code>S{ne}</code>=≠;
+    </li>
+    <li>
+      <code>S{equiv}</code>=≡;
+    </li>
+    <li>
+      <code>S{le}</code>=≤;
+    </li>
+    <li>
+      <code>S{ge}</code>=≥;
+    </li>
+    <li>
+      <code>S{sub}</code>=⊂;
+    </li>
+    <li>
+      <code>S{sup}</code>=⊃;
+    </li>
+    <li>
+      <code>S{nsub}</code>=⊄;
+    </li>
+    <li>
+      <code>S{sube}</code>=⊆;
+    </li>
+    <li>
+      <code>S{supe}</code>=⊇;
+    </li>
+    <li>
+      <code>S{oplus}</code>=⊕;
+    </li>
+    <li>
+      <code>S{otimes}</code>=⊗;
+    </li>
+    <li>
+      <code>S{perp}</code>=⊥;
+    </li>
+    <li>
+      <code>S{infinity}</code>=∞;
+    </li>
+    <li>
+      <code>S{integral}</code>=∫;
+    </li>
+    <li>
+      <code>S{product}</code>=∏;
+    </li>
+    <li>
+      <code>S{>=}</code>=≥;
+    </li>
+    <li>
+      <code>S{<=}</code>=≤
+    </li>
+  </ul>
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-group">[</code><code class="variable-quote">'</code><code class="variable-string"><-</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">-></code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">^</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">v</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">alpha</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">beta</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">gamma</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">delta</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="_SYMBOLS"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">_SYMBOLS</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">-></code><code class="variable-quote">'</code><code class="variable-op">: </code>1<code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string"><-</code><code class="variable-quote">'</code><code class="variable-op">: </code>1<code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string"><=</code><code class="variable-quote">'</code><code class="variable-op">: </code>1<code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">>=</code><code class="variable-quote">'</code><code class="variable-op">: </code>1<code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">Alpha</code><code class="variable-quote">'</code><code class="variable-op">: </code>1<code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">Beta</code><code class="variable-quote">'</code><code class="variable-op">: </code>1<code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">Chi</code><code class="variable-quote">'</code><code class="variable-op">: </code>1<code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">Delta</code><code class="variable-quote">'</code><code class="variable-op">: </code>1<code class="variable-op">,</code>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="_COLORIZING_TAGS"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">_COLORIZING_TAGS</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">B</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">bold</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">C</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">code</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">E</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">escape</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">G</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">graph</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">I</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">italic</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">L</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">link</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">M</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">math</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">S</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">symbol</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="_BULLET_RE"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">_BULLET_RE</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+re.compile(r'-<code class="re-group">(</code> <code class="re-op">+</code><code class="re-op">|</code>$<code class="re-group">)</code><code class="re-op">|</code><code class="re-group">(</code>\d<code class="re-op">+</code>\.<code class="re-group">)</code><code class="re-op">+</code><code class="re-group">(</code> <code class="re-op">+</code><code class="re-op">|</code>$<code class="re-group">)</code><code class="re-op">|</code>@\w<code class="re-op">+</code><code class="re-group">(</cod [...]
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="GRAPH_TYPES"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">GRAPH_TYPES</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-group">[</code><code class="variable-quote">'</code><code class="variable-string">classtree</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">packagetree</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">importgraph</code><code class="variable-quote">'</code><code class="variable [...]
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:06:45 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.markup.epytext-pysrc.html b/doc/api/epydoc.markup.epytext-pysrc.html
new file mode 100644
index 0000000..331f91a
--- /dev/null
+++ b/doc/api/epydoc.markup.epytext-pysrc.html
@@ -0,0 +1,2378 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.markup.epytext</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.markup-module.html">Package markup</a> ::
+        Module epytext
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.markup.epytext-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="epydoc.markup.epytext-module.html">Module epydoc.markup.epytext</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno">   1</tt>  <tt class="py-line"><tt class="py-comment">#</tt> </tt>
+<a name="L2"></a><tt class="py-lineno">   2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># epytext.py: epydoc formatted docstring parsing</tt> </tt>
+<a name="L3"></a><tt class="py-lineno">   3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Edward Loper</tt> </tt>
+<a name="L4"></a><tt class="py-lineno">   4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L5"></a><tt class="py-lineno">   5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Created [04/10/01 12:00 AM]</tt> </tt>
+<a name="L6"></a><tt class="py-lineno">   6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># $Id: epytext.py 1652 2007-09-26 04:45:34Z edloper $</tt> </tt>
+<a name="L7"></a><tt class="py-lineno">   7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L8"></a><tt class="py-lineno">   8</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L9"></a><tt class="py-lineno">   9</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L10"></a><tt class="py-lineno">  10</tt>  <tt class="py-line"><tt class="py-docstring">Parser for epytext strings.  Epytext is a lightweight markup whose</tt> </tt>
+<a name="L11"></a><tt class="py-lineno">  11</tt>  <tt class="py-line"><tt class="py-docstring">primary intended application is Python documentation strings.  This</tt> </tt>
+<a name="L12"></a><tt class="py-lineno">  12</tt>  <tt class="py-line"><tt class="py-docstring">parser converts Epytext strings to a simple DOM-like representation</tt> </tt>
+<a name="L13"></a><tt class="py-lineno">  13</tt>  <tt class="py-line"><tt class="py-docstring">(encoded as a tree of L{Element} objects and strings).  Epytext</tt> </tt>
+<a name="L14"></a><tt class="py-lineno">  14</tt>  <tt class="py-line"><tt class="py-docstring">strings can contain the following X{structural blocks}:</tt> </tt>
+<a name="L15"></a><tt class="py-lineno">  15</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L16"></a><tt class="py-lineno">  16</tt>  <tt class="py-line"><tt class="py-docstring">    - X{epytext}: The top-level element of the DOM tree.</tt> </tt>
+<a name="L17"></a><tt class="py-lineno">  17</tt>  <tt class="py-line"><tt class="py-docstring">    - X{para}: A paragraph of text.  Paragraphs contain no newlines, </tt> </tt>
+<a name="L18"></a><tt class="py-lineno">  18</tt>  <tt class="py-line"><tt class="py-docstring">      and all spaces are soft.</tt> </tt>
+<a name="L19"></a><tt class="py-lineno">  19</tt>  <tt class="py-line"><tt class="py-docstring">    - X{section}: A section or subsection.</tt> </tt>
+<a name="L20"></a><tt class="py-lineno">  20</tt>  <tt class="py-line"><tt class="py-docstring">    - X{field}: A tagged field.  These fields provide information</tt> </tt>
+<a name="L21"></a><tt class="py-lineno">  21</tt>  <tt class="py-line"><tt class="py-docstring">      about specific aspects of a Python object, such as the</tt> </tt>
+<a name="L22"></a><tt class="py-lineno">  22</tt>  <tt class="py-line"><tt class="py-docstring">      description of a function's parameter, or the author of a</tt> </tt>
+<a name="L23"></a><tt class="py-lineno">  23</tt>  <tt class="py-line"><tt class="py-docstring">      module.</tt> </tt>
+<a name="L24"></a><tt class="py-lineno">  24</tt>  <tt class="py-line"><tt class="py-docstring">    - X{literalblock}: A block of literal text.  This text should be</tt> </tt>
+<a name="L25"></a><tt class="py-lineno">  25</tt>  <tt class="py-line"><tt class="py-docstring">      displayed as it would be displayed in plaintext.  The</tt> </tt>
+<a name="L26"></a><tt class="py-lineno">  26</tt>  <tt class="py-line"><tt class="py-docstring">      parser removes the appropriate amount of leading whitespace </tt> </tt>
+<a name="L27"></a><tt class="py-lineno">  27</tt>  <tt class="py-line"><tt class="py-docstring">      from each line in the literal block.</tt> </tt>
+<a name="L28"></a><tt class="py-lineno">  28</tt>  <tt class="py-line"><tt class="py-docstring">    - X{doctestblock}: A block containing sample python code,</tt> </tt>
+<a name="L29"></a><tt class="py-lineno">  29</tt>  <tt class="py-line"><tt class="py-docstring">      formatted according to the specifications of the C{doctest}</tt> </tt>
+<a name="L30"></a><tt class="py-lineno">  30</tt>  <tt class="py-line"><tt class="py-docstring">      module.</tt> </tt>
+<a name="L31"></a><tt class="py-lineno">  31</tt>  <tt class="py-line"><tt class="py-docstring">    - X{ulist}: An unordered list.</tt> </tt>
+<a name="L32"></a><tt class="py-lineno">  32</tt>  <tt class="py-line"><tt class="py-docstring">    - X{olist}: An ordered list.</tt> </tt>
+<a name="L33"></a><tt class="py-lineno">  33</tt>  <tt class="py-line"><tt class="py-docstring">    - X{li}: A list item.  This tag is used both for unordered list</tt> </tt>
+<a name="L34"></a><tt class="py-lineno">  34</tt>  <tt class="py-line"><tt class="py-docstring">      items and for ordered list items.</tt> </tt>
+<a name="L35"></a><tt class="py-lineno">  35</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L36"></a><tt class="py-lineno">  36</tt>  <tt class="py-line"><tt class="py-docstring">Additionally, the following X{inline regions} may be used within</tt> </tt>
+<a name="L37"></a><tt class="py-lineno">  37</tt>  <tt class="py-line"><tt class="py-docstring">C{para} blocks:</tt> </tt>
+<a name="L38"></a><tt class="py-lineno">  38</tt>  <tt class="py-line"><tt class="py-docstring">    </tt> </tt>
+<a name="L39"></a><tt class="py-lineno">  39</tt>  <tt class="py-line"><tt class="py-docstring">    - X{code}:   Source code and identifiers.</tt> </tt>
+<a name="L40"></a><tt class="py-lineno">  40</tt>  <tt class="py-line"><tt class="py-docstring">    - X{math}:   Mathematical expressions.</tt> </tt>
+<a name="L41"></a><tt class="py-lineno">  41</tt>  <tt class="py-line"><tt class="py-docstring">    - X{index}:  A term which should be included in an index, if one</tt> </tt>
+<a name="L42"></a><tt class="py-lineno">  42</tt>  <tt class="py-line"><tt class="py-docstring">                 is generated.</tt> </tt>
+<a name="L43"></a><tt class="py-lineno">  43</tt>  <tt class="py-line"><tt class="py-docstring">    - X{italic}: Italicized text.</tt> </tt>
+<a name="L44"></a><tt class="py-lineno">  44</tt>  <tt class="py-line"><tt class="py-docstring">    - X{bold}:   Bold-faced text.</tt> </tt>
+<a name="L45"></a><tt class="py-lineno">  45</tt>  <tt class="py-line"><tt class="py-docstring">    - X{uri}:    A Universal Resource Indicator (URI) or Universal</tt> </tt>
+<a name="L46"></a><tt class="py-lineno">  46</tt>  <tt class="py-line"><tt class="py-docstring">                 Resource Locator (URL)</tt> </tt>
+<a name="L47"></a><tt class="py-lineno">  47</tt>  <tt class="py-line"><tt class="py-docstring">    - X{link}:   A Python identifier which should be hyperlinked to</tt> </tt>
+<a name="L48"></a><tt class="py-lineno">  48</tt>  <tt class="py-line"><tt class="py-docstring">                 the named object's documentation, when possible.</tt> </tt>
+<a name="L49"></a><tt class="py-lineno">  49</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L50"></a><tt class="py-lineno">  50</tt>  <tt class="py-line"><tt class="py-docstring">The returned DOM tree will conform to the the following Document Type</tt> </tt>
+<a name="L51"></a><tt class="py-lineno">  51</tt>  <tt class="py-line"><tt class="py-docstring">Description::</tt> </tt>
+<a name="L52"></a><tt class="py-lineno">  52</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L53"></a><tt class="py-lineno">  53</tt>  <tt class="py-line"><tt class="py-docstring">   <!ENTITY % colorized '(code | math | index | italic |</tt> </tt>
+<a name="L54"></a><tt class="py-lineno">  54</tt>  <tt class="py-line"><tt class="py-docstring">                          bold | uri | link | symbol)*'></tt> </tt>
+<a name="L55"></a><tt class="py-lineno">  55</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L56"></a><tt class="py-lineno">  56</tt>  <tt class="py-line"><tt class="py-docstring">   <!ELEMENT epytext ((para | literalblock | doctestblock |</tt> </tt>
+<a name="L57"></a><tt class="py-lineno">  57</tt>  <tt class="py-line"><tt class="py-docstring">                      section | ulist | olist)*, fieldlist?)></tt> </tt>
+<a name="L58"></a><tt class="py-lineno">  58</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L59"></a><tt class="py-lineno">  59</tt>  <tt class="py-line"><tt class="py-docstring">   <!ELEMENT para (#PCDATA | %colorized;)*></tt> </tt>
+<a name="L60"></a><tt class="py-lineno">  60</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L61"></a><tt class="py-lineno">  61</tt>  <tt class="py-line"><tt class="py-docstring">   <!ELEMENT section (para | listblock | doctestblock |</tt> </tt>
+<a name="L62"></a><tt class="py-lineno">  62</tt>  <tt class="py-line"><tt class="py-docstring">                      section | ulist | olist)+></tt> </tt>
+<a name="L63"></a><tt class="py-lineno">  63</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L64"></a><tt class="py-lineno">  64</tt>  <tt class="py-line"><tt class="py-docstring">   <!ELEMENT fieldlist (field+)></tt> </tt>
+<a name="L65"></a><tt class="py-lineno">  65</tt>  <tt class="py-line"><tt class="py-docstring">   <!ELEMENT field (tag, arg?, (para | listblock | doctestblock)</tt> </tt>
+<a name="L66"></a><tt class="py-lineno">  66</tt>  <tt class="py-line"><tt class="py-docstring">                                ulist | olist)+)></tt> </tt>
+<a name="L67"></a><tt class="py-lineno">  67</tt>  <tt class="py-line"><tt class="py-docstring">   <!ELEMENT tag (#PCDATA)></tt> </tt>
+<a name="L68"></a><tt class="py-lineno">  68</tt>  <tt class="py-line"><tt class="py-docstring">   <!ELEMENT arg (#PCDATA)></tt> </tt>
+<a name="L69"></a><tt class="py-lineno">  69</tt>  <tt class="py-line"><tt class="py-docstring">   </tt> </tt>
+<a name="L70"></a><tt class="py-lineno">  70</tt>  <tt class="py-line"><tt class="py-docstring">   <!ELEMENT literalblock (#PCDATA | %colorized;)*></tt> </tt>
+<a name="L71"></a><tt class="py-lineno">  71</tt>  <tt class="py-line"><tt class="py-docstring">   <!ELEMENT doctestblock (#PCDATA)></tt> </tt>
+<a name="L72"></a><tt class="py-lineno">  72</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L73"></a><tt class="py-lineno">  73</tt>  <tt class="py-line"><tt class="py-docstring">   <!ELEMENT ulist (li+)></tt> </tt>
+<a name="L74"></a><tt class="py-lineno">  74</tt>  <tt class="py-line"><tt class="py-docstring">   <!ELEMENT olist (li+)></tt> </tt>
+<a name="L75"></a><tt class="py-lineno">  75</tt>  <tt class="py-line"><tt class="py-docstring">   <!ELEMENT li (para | literalblock | doctestblock | ulist | olist)+></tt> </tt>
+<a name="L76"></a><tt class="py-lineno">  76</tt>  <tt class="py-line"><tt class="py-docstring">   <!ATTLIST li bullet NMTOKEN #IMPLIED></tt> </tt>
+<a name="L77"></a><tt class="py-lineno">  77</tt>  <tt class="py-line"><tt class="py-docstring">   <!ATTLIST olist start NMTOKEN #IMPLIED></tt> </tt>
+<a name="L78"></a><tt class="py-lineno">  78</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L79"></a><tt class="py-lineno">  79</tt>  <tt class="py-line"><tt class="py-docstring">   <!ELEMENT uri     (name, target)></tt> </tt>
+<a name="L80"></a><tt class="py-lineno">  80</tt>  <tt class="py-line"><tt class="py-docstring">   <!ELEMENT link    (name, target)></tt> </tt>
+<a name="L81"></a><tt class="py-lineno">  81</tt>  <tt class="py-line"><tt class="py-docstring">   <!ELEMENT name    (#PCDATA | %colorized;)*></tt> </tt>
+<a name="L82"></a><tt class="py-lineno">  82</tt>  <tt class="py-line"><tt class="py-docstring">   <!ELEMENT target  (#PCDATA)></tt> </tt>
+<a name="L83"></a><tt class="py-lineno">  83</tt>  <tt class="py-line"><tt class="py-docstring">   </tt> </tt>
+<a name="L84"></a><tt class="py-lineno">  84</tt>  <tt class="py-line"><tt class="py-docstring">   <!ELEMENT code    (#PCDATA | %colorized;)*></tt> </tt>
+<a name="L85"></a><tt class="py-lineno">  85</tt>  <tt class="py-line"><tt class="py-docstring">   <!ELEMENT math    (#PCDATA | %colorized;)*></tt> </tt>
+<a name="L86"></a><tt class="py-lineno">  86</tt>  <tt class="py-line"><tt class="py-docstring">   <!ELEMENT italic  (#PCDATA | %colorized;)*></tt> </tt>
+<a name="L87"></a><tt class="py-lineno">  87</tt>  <tt class="py-line"><tt class="py-docstring">   <!ELEMENT bold    (#PCDATA | %colorized;)*></tt> </tt>
+<a name="L88"></a><tt class="py-lineno">  88</tt>  <tt class="py-line"><tt class="py-docstring">   <!ELEMENT indexed (#PCDATA | %colorized;)></tt> </tt>
+<a name="L89"></a><tt class="py-lineno">  89</tt>  <tt class="py-line"><tt class="py-docstring">   <!ATTLIST code style CDATA #IMPLIED></tt> </tt>
+<a name="L90"></a><tt class="py-lineno">  90</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L91"></a><tt class="py-lineno">  91</tt>  <tt class="py-line"><tt class="py-docstring">   <!ELEMENT symbol (#PCDATA)></tt> </tt>
+<a name="L92"></a><tt class="py-lineno">  92</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L93"></a><tt class="py-lineno">  93</tt>  <tt class="py-line"><tt class="py-docstring">@var SYMBOLS: A list of the of escape symbols that are supported</tt> </tt>
+<a name="L94"></a><tt class="py-lineno">  94</tt>  <tt class="py-line"><tt class="py-docstring">      by epydoc.  Currently the following symbols are supported:</tt> </tt>
+<a name="L95"></a><tt class="py-lineno">  95</tt>  <tt class="py-line"><tt class="py-docstring"><<<SYMBOLS>>></tt> </tt>
+<a name="L96"></a><tt class="py-lineno">  96</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L97"></a><tt class="py-lineno">  97</tt>  <tt class="py-line"><tt class="py-comment"># Note: the symbol list is appended to the docstring automatically,</tt> </tt>
+<a name="L98"></a><tt class="py-lineno">  98</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># below.</tt> </tt>
+<a name="L99"></a><tt class="py-lineno">  99</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L100"></a><tt class="py-lineno"> 100</tt>  <tt class="py-line"><tt class="py-name">__docformat__</tt> <tt class="py-op">=</tt> <tt class="py-string">'epytext en'</tt> </tt>
+<a name="L101"></a><tt class="py-lineno"> 101</tt>  <tt class="py-line"> </tt>
+<a name="L102"></a><tt class="py-lineno"> 102</tt>  <tt class="py-line"><tt class="py-comment"># Code organization..</tt> </tt>
+<a name="L103"></a><tt class="py-lineno"> 103</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#   1. parse()</tt> </tt>
+<a name="L104"></a><tt class="py-lineno"> 104</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#   2. tokenize()</tt> </tt>
+<a name="L105"></a><tt class="py-lineno"> 105</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#   3. colorize()</tt> </tt>
+<a name="L106"></a><tt class="py-lineno"> 106</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#   4. helpers</tt> </tt>
+<a name="L107"></a><tt class="py-lineno"> 107</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#   5. testing</tt> </tt>
+<a name="L108"></a><tt class="py-lineno"> 108</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L109"></a><tt class="py-lineno"> 109</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">re</tt><tt class="py-op">,</tt> <tt class="py-name">string</tt><tt class="py-op">,</tt> <tt class="py-name">types</tt><tt class="py-op">,</tt> <tt class="py-name">sys</tt><tt class="py-op">,</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-0" class="py-name" targets="Variable epydoc.apidoc.ModuleDoc.path=epydoc.apidoc.ModuleDoc-class.html#path [...]
+<a name="L110"></a><tt class="py-lineno"> 110</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-1" class="py-name" targets="Package epydoc=epydoc-module.html"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-1', 'epydoc', 'link-1');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-2" class="py-name" targets="Package epydoc.markup=epydoc.markup-module.html,Method epydoc.markup.doctest.DoctestColorizer.markup()=epydoc.markup.doctest.Doctest [...]
+epydoc.markup.doctest.DoctestColorizer.markup
+epydoc.markup.doctest.HTMLDoctestColorizer.markup
+epydoc.markup.doctest.LaTeXDoctestColorizer.markup
+epydoc.markup.doctest.XMLDoctestColorizer.markup" class="py-name" href="#" onclick="return doclink('link-2', 'markup', 'link-2');">markup</a></tt> <tt class="py-keyword">import</tt> <tt class="py-op">*</tt> </tt>
+<a name="L111"></a><tt class="py-lineno"> 111</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-3" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-3', 'epydoc', 'link-1');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-4" class="py-name" targets="Module epydoc.test.util=epydoc.test.util-module.html,Module epydoc.util=epydoc.util-module.html"><a title="epydoc.test.util
+epydoc.util" class="py-name" href="#" onclick="return doclink('link-4', 'util', 'link-4');">util</a></tt> <tt class="py-keyword">import</tt> <tt id="link-5" class="py-name" targets="Function epydoc.util.wordwrap()=epydoc.util-module.html#wordwrap"><a title="epydoc.util.wordwrap" class="py-name" href="#" onclick="return doclink('link-5', 'wordwrap', 'link-5');">wordwrap</a></tt><tt class="py-op">,</tt> <tt id="link-6" class="py-name" targets="Function epydoc.util.plaintext_to_html()=epydo [...]
+<a name="L112"></a><tt class="py-lineno"> 112</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-8" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-8', 'epydoc', 'link-1');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-9" class="py-name"><a title="epydoc.markup
+epydoc.markup.doctest.DoctestColorizer.markup
+epydoc.markup.doctest.HTMLDoctestColorizer.markup
+epydoc.markup.doctest.LaTeXDoctestColorizer.markup
+epydoc.markup.doctest.XMLDoctestColorizer.markup" class="py-name" href="#" onclick="return doclink('link-9', 'markup', 'link-2');">markup</a></tt><tt class="py-op">.</tt><tt id="link-10" class="py-name" targets="Module epydoc.markup.doctest=epydoc.markup.doctest-module.html"><a title="epydoc.markup.doctest" class="py-name" href="#" onclick="return doclink('link-10', 'doctest', 'link-10');">doctest</a></tt> <tt class="py-keyword">import</tt> <tt id="link-11" class="py-name" targets="Funct [...]
+<a name="L113"></a><tt class="py-lineno"> 113</tt>  <tt class="py-line"> </tt>
+<a name="L114"></a><tt class="py-lineno"> 114</tt>  <tt class="py-line"><tt class="py-comment">##################################################</tt> </tt>
+<a name="L115"></a><tt class="py-lineno"> 115</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## DOM-Like Encoding</tt> </tt>
+<a name="L116"></a><tt class="py-lineno"> 116</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">##################################################</tt> </tt>
+<a name="L117"></a><tt class="py-lineno"> 117</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="Element"></a><div id="Element-def"><a name="L118"></a><tt class="py-lineno"> 118</tt> <a class="py-toggle" href="#" id="Element-toggle" onclick="return toggle('Element');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="epydoc.markup.epytext.Element-class.html">Element</a><tt class="py-op">:</tt> </tt>
+</div><div id="Element-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="Element-expanded"><a name="L119"></a><tt class="py-lineno"> 119</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L120"></a><tt class="py-lineno"> 120</tt>  <tt class="py-line"><tt class="py-docstring">    A very simple DOM-like representation for parsed epytext</tt> </tt>
+<a name="L121"></a><tt class="py-lineno"> 121</tt>  <tt class="py-line"><tt class="py-docstring">    documents.  Each epytext document is encoded as a tree whose nodes</tt> </tt>
+<a name="L122"></a><tt class="py-lineno"> 122</tt>  <tt class="py-line"><tt class="py-docstring">    are L{Element} objects, and whose leaves are C{string}s.  Each</tt> </tt>
+<a name="L123"></a><tt class="py-lineno"> 123</tt>  <tt class="py-line"><tt class="py-docstring">    node is marked by a I{tag} and zero or more I{attributes}.  Each</tt> </tt>
+<a name="L124"></a><tt class="py-lineno"> 124</tt>  <tt class="py-line"><tt class="py-docstring">    attribute is a mapping from a string key to a string value.</tt> </tt>
+<a name="L125"></a><tt class="py-lineno"> 125</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="Element.__init__"></a><div id="Element.__init__-def"><a name="L126"></a><tt class="py-lineno"> 126</tt> <a class="py-toggle" href="#" id="Element.__init__-toggle" onclick="return toggle('Element.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.epytext.Element-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">tag</tt><tt class="py- [...]
+</div><div id="Element.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Element.__init__-expanded"><a name="L127"></a><tt class="py-lineno"> 127</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-13" class="py-name" targets="Method epydoc.markup.Field.tag()=epydoc.markup.Field-class.html#tag"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-13', 'tag', 'link-13') [...]
+<a name="L128"></a><tt class="py-lineno"> 128</tt>  <tt class="py-line">        <tt class="py-string">"""A string tag indicating the type of this element.</tt> </tt>
+<a name="L129"></a><tt class="py-lineno"> 129</tt>  <tt class="py-line"><tt class="py-string">        @type: C{string}"""</tt> </tt>
+<a name="L130"></a><tt class="py-lineno"> 130</tt>  <tt class="py-line">         </tt>
+<a name="L131"></a><tt class="py-lineno"> 131</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">children</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">children</tt><tt class="py-op">)</tt> </tt>
+<a name="L132"></a><tt class="py-lineno"> 132</tt>  <tt class="py-line">        <tt class="py-string">"""A list of the children of this element.</tt> </tt>
+<a name="L133"></a><tt class="py-lineno"> 133</tt>  <tt class="py-line"><tt class="py-string">        @type: C{list} of (C{string} or C{Element})"""</tt> </tt>
+<a name="L134"></a><tt class="py-lineno"> 134</tt>  <tt class="py-line">         </tt>
+<a name="L135"></a><tt class="py-lineno"> 135</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">attribs</tt> <tt class="py-op">=</tt> <tt class="py-name">attribs</tt> </tt>
+<a name="L136"></a><tt class="py-lineno"> 136</tt>  <tt class="py-line">        <tt class="py-string">"""A dictionary mapping attribute names to attribute values</tt> </tt>
+<a name="L137"></a><tt class="py-lineno"> 137</tt>  <tt class="py-line"><tt class="py-string">        for this element.</tt> </tt>
+<a name="L138"></a><tt class="py-lineno"> 138</tt>  <tt class="py-line"><tt class="py-string">        @type: C{dict} from C{string} to C{string}"""</tt> </tt>
+</div><a name="L139"></a><tt class="py-lineno"> 139</tt>  <tt class="py-line"> </tt>
+<a name="Element.__str__"></a><div id="Element.__str__-def"><a name="L140"></a><tt class="py-lineno"> 140</tt> <a class="py-toggle" href="#" id="Element.__str__-toggle" onclick="return toggle('Element.__str__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.epytext.Element-class.html#__str__">__str__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Element.__str__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Element.__str__-expanded"><a name="L141"></a><tt class="py-lineno"> 141</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L142"></a><tt class="py-lineno"> 142</tt>  <tt class="py-line"><tt class="py-docstring">        Return a string representation of this element, using XML</tt> </tt>
+<a name="L143"></a><tt class="py-lineno"> 143</tt>  <tt class="py-line"><tt class="py-docstring">        notation.</tt> </tt>
+<a name="L144"></a><tt class="py-lineno"> 144</tt>  <tt class="py-line"><tt class="py-docstring">        @bug: Doesn't escape '<' or '&' or '>'.</tt> </tt>
+<a name="L145"></a><tt class="py-lineno"> 145</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L146"></a><tt class="py-lineno"> 146</tt>  <tt class="py-line">        <tt class="py-name">attribs</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">' %s=%r'</tt> <tt class="py-op">%</tt> <tt class="py-name">t</tt> <tt class="py-keyword">for</tt> <tt class="py-name">t</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op" [...]
+<a name="L147"></a><tt class="py-lineno"> 147</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-string">'<%s%s>'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-15" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-15', 'tag', 'link-13');">tag</a></tt><tt class="py-op">,</tt> <tt class="py-name">attr [...]
+<a name="L148"></a><tt class="py-lineno"> 148</tt>  <tt class="py-line">                <tt class="py-string">''</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">child</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">child</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name"> [...]
+<a name="L149"></a><tt class="py-lineno"> 149</tt>  <tt class="py-line">                <tt class="py-string">'</%s>'</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-16" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-16', 'tag', 'link-13');">tag</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L150"></a><tt class="py-lineno"> 150</tt>  <tt class="py-line"> </tt>
+<a name="Element.__repr__"></a><div id="Element.__repr__-def"><a name="L151"></a><tt class="py-lineno"> 151</tt> <a class="py-toggle" href="#" id="Element.__repr__-toggle" onclick="return toggle('Element.__repr__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.epytext.Element-class.html#__repr__">__repr__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Element.__repr__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Element.__repr__-expanded"><a name="L152"></a><tt class="py-lineno"> 152</tt>  <tt class="py-line">        <tt class="py-name">attribs</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">', %s=%r'</tt> <tt class="py-op">%</tt> <tt class="py-name">t</tt> [...]
+<a name="L153"></a><tt class="py-lineno"> 153</tt>  <tt class="py-line">        <tt class="py-name">args</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">', %r'</tt> <tt class="py-op">%</tt> <tt class="py-name">c</tt> <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</t [...]
+<a name="L154"></a><tt class="py-lineno"> 154</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">'Element(%s%s%s)'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-17" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-17', 'tag', 'link-13');">tag</a></tt><tt class="py-op">,</tt> <tt class="py-name">args</tt><tt class="py-op [...]
+</div></div><a name="L155"></a><tt class="py-lineno"> 155</tt>  <tt class="py-line"> </tt>
+<a name="L156"></a><tt class="py-lineno"> 156</tt>  <tt class="py-line"><tt class="py-comment">##################################################</tt> </tt>
+<a name="L157"></a><tt class="py-lineno"> 157</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## Constants</tt> </tt>
+<a name="L158"></a><tt class="py-lineno"> 158</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">##################################################</tt> </tt>
+<a name="L159"></a><tt class="py-lineno"> 159</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L160"></a><tt class="py-lineno"> 160</tt>  <tt class="py-line"><tt class="py-comment"># The possible heading underline characters, listed in order of</tt> </tt>
+<a name="L161"></a><tt class="py-lineno"> 161</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># heading depth. </tt> </tt>
+<a name="L162"></a><tt class="py-lineno"> 162</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt id="link-18" class="py-name" targets="Variable epydoc.markup.epytext._HEADING_CHARS=epydoc.markup.epytext-module.html#_HEADING_CHARS"><a title="epydoc.markup.epytext._HEADING_CHARS" class="py-name" href="#" onclick="return doclink('link-18', '_HEADING_CHARS', 'link-18');">_HEADING_CHARS</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"=-~"</tt> </tt>
+<a name="L163"></a><tt class="py-lineno"> 163</tt>  <tt class="py-line"> </tt>
+<a name="L164"></a><tt class="py-lineno"> 164</tt>  <tt class="py-line"><tt class="py-comment"># Escape codes.  These should be needed very rarely.</tt> </tt>
+<a name="L165"></a><tt class="py-lineno"> 165</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt id="link-19" class="py-name" targets="Variable epydoc.markup.epytext._ESCAPES=epydoc.markup.epytext-module.html#_ESCAPES"><a title="epydoc.markup.epytext._ESCAPES" class="py-name" href="#" onclick="return doclink('link-19', '_ESCAPES', 'link-19');">_ESCAPES</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-string">'lb'</tt><tt class="py-op">:</tt><tt class="py-str [...]
+<a name="L166"></a><tt class="py-lineno"> 166</tt>  <tt class="py-line"> </tt>
+<a name="L167"></a><tt class="py-lineno"> 167</tt>  <tt class="py-line"><tt class="py-comment"># Symbols.  These can be generated via S{...} escapes.</tt> </tt>
+<a name="L168"></a><tt class="py-lineno"> 168</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt id="link-20" class="py-name" targets="Variable epydoc.markup.epytext.SYMBOLS=epydoc.markup.epytext-module.html#SYMBOLS"><a title="epydoc.markup.epytext.SYMBOLS" class="py-name" href="#" onclick="return doclink('link-20', 'SYMBOLS', 'link-20');">SYMBOLS</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> </tt>
+<a name="L169"></a><tt class="py-lineno"> 169</tt>  <tt class="py-line">    <tt class="py-comment"># Arrows</tt> </tt>
+<a name="L170"></a><tt class="py-lineno"> 170</tt>  <tt class="py-line">    <tt class="py-string">'<-'</tt><tt class="py-op">,</tt> <tt class="py-string">'->'</tt><tt class="py-op">,</tt> <tt class="py-string">'^'</tt><tt class="py-op">,</tt> <tt class="py-string">'v'</tt><tt class="py-op">,</tt>  </tt>
+<a name="L171"></a><tt class="py-lineno"> 171</tt>  <tt class="py-line"> </tt>
+<a name="L172"></a><tt class="py-lineno"> 172</tt>  <tt class="py-line">    <tt class="py-comment"># Greek letters</tt> </tt>
+<a name="L173"></a><tt class="py-lineno"> 173</tt>  <tt class="py-line">    <tt class="py-string">'alpha'</tt><tt class="py-op">,</tt> <tt class="py-string">'beta'</tt><tt class="py-op">,</tt> <tt class="py-string">'gamma'</tt><tt class="py-op">,</tt> <tt class="py-string">'delta'</tt><tt class="py-op">,</tt> <tt class="py-string">'epsilon'</tt><tt class="py-op">,</tt> <tt class="py-string">'zeta'</tt><tt class="py-op">,</tt>   </tt>
+<a name="L174"></a><tt class="py-lineno"> 174</tt>  <tt class="py-line">    <tt class="py-string">'eta'</tt><tt class="py-op">,</tt> <tt class="py-string">'theta'</tt><tt class="py-op">,</tt> <tt class="py-string">'iota'</tt><tt class="py-op">,</tt> <tt class="py-string">'kappa'</tt><tt class="py-op">,</tt> <tt class="py-string">'lambda'</tt><tt class="py-op">,</tt> <tt class="py-string">'mu'</tt><tt class="py-op">,</tt>   </tt>
+<a name="L175"></a><tt class="py-lineno"> 175</tt>  <tt class="py-line">    <tt class="py-string">'nu'</tt><tt class="py-op">,</tt> <tt class="py-string">'xi'</tt><tt class="py-op">,</tt> <tt class="py-string">'omicron'</tt><tt class="py-op">,</tt> <tt class="py-string">'pi'</tt><tt class="py-op">,</tt> <tt class="py-string">'rho'</tt><tt class="py-op">,</tt> <tt class="py-string">'sigma'</tt><tt class="py-op">,</tt>   </tt>
+<a name="L176"></a><tt class="py-lineno"> 176</tt>  <tt class="py-line">    <tt class="py-string">'tau'</tt><tt class="py-op">,</tt> <tt class="py-string">'upsilon'</tt><tt class="py-op">,</tt> <tt class="py-string">'phi'</tt><tt class="py-op">,</tt> <tt class="py-string">'chi'</tt><tt class="py-op">,</tt> <tt class="py-string">'psi'</tt><tt class="py-op">,</tt> <tt class="py-string">'omega'</tt><tt class="py-op">,</tt> </tt>
+<a name="L177"></a><tt class="py-lineno"> 177</tt>  <tt class="py-line">    <tt class="py-string">'Alpha'</tt><tt class="py-op">,</tt> <tt class="py-string">'Beta'</tt><tt class="py-op">,</tt> <tt class="py-string">'Gamma'</tt><tt class="py-op">,</tt> <tt class="py-string">'Delta'</tt><tt class="py-op">,</tt> <tt class="py-string">'Epsilon'</tt><tt class="py-op">,</tt> <tt class="py-string">'Zeta'</tt><tt class="py-op">,</tt>   </tt>
+<a name="L178"></a><tt class="py-lineno"> 178</tt>  <tt class="py-line">    <tt class="py-string">'Eta'</tt><tt class="py-op">,</tt> <tt class="py-string">'Theta'</tt><tt class="py-op">,</tt> <tt class="py-string">'Iota'</tt><tt class="py-op">,</tt> <tt class="py-string">'Kappa'</tt><tt class="py-op">,</tt> <tt class="py-string">'Lambda'</tt><tt class="py-op">,</tt> <tt class="py-string">'Mu'</tt><tt class="py-op">,</tt>   </tt>
+<a name="L179"></a><tt class="py-lineno"> 179</tt>  <tt class="py-line">    <tt class="py-string">'Nu'</tt><tt class="py-op">,</tt> <tt class="py-string">'Xi'</tt><tt class="py-op">,</tt> <tt class="py-string">'Omicron'</tt><tt class="py-op">,</tt> <tt class="py-string">'Pi'</tt><tt class="py-op">,</tt> <tt class="py-string">'Rho'</tt><tt class="py-op">,</tt> <tt class="py-string">'Sigma'</tt><tt class="py-op">,</tt>   </tt>
+<a name="L180"></a><tt class="py-lineno"> 180</tt>  <tt class="py-line">    <tt class="py-string">'Tau'</tt><tt class="py-op">,</tt> <tt class="py-string">'Upsilon'</tt><tt class="py-op">,</tt> <tt class="py-string">'Phi'</tt><tt class="py-op">,</tt> <tt class="py-string">'Chi'</tt><tt class="py-op">,</tt> <tt class="py-string">'Psi'</tt><tt class="py-op">,</tt> <tt class="py-string">'Omega'</tt><tt class="py-op">,</tt> </tt>
+<a name="L181"></a><tt class="py-lineno"> 181</tt>  <tt class="py-line">     </tt>
+<a name="L182"></a><tt class="py-lineno"> 182</tt>  <tt class="py-line">    <tt class="py-comment"># HTML character entities</tt> </tt>
+<a name="L183"></a><tt class="py-lineno"> 183</tt>  <tt class="py-line">    <tt class="py-string">'larr'</tt><tt class="py-op">,</tt> <tt class="py-string">'rarr'</tt><tt class="py-op">,</tt> <tt class="py-string">'uarr'</tt><tt class="py-op">,</tt> <tt class="py-string">'darr'</tt><tt class="py-op">,</tt> <tt class="py-string">'harr'</tt><tt class="py-op">,</tt> <tt class="py-string">'crarr'</tt><tt class="py-op">,</tt> </tt>
+<a name="L184"></a><tt class="py-lineno"> 184</tt>  <tt class="py-line">    <tt class="py-string">'lArr'</tt><tt class="py-op">,</tt> <tt class="py-string">'rArr'</tt><tt class="py-op">,</tt> <tt class="py-string">'uArr'</tt><tt class="py-op">,</tt> <tt class="py-string">'dArr'</tt><tt class="py-op">,</tt> <tt class="py-string">'hArr'</tt><tt class="py-op">,</tt>  </tt>
+<a name="L185"></a><tt class="py-lineno"> 185</tt>  <tt class="py-line">    <tt class="py-string">'copy'</tt><tt class="py-op">,</tt> <tt class="py-string">'times'</tt><tt class="py-op">,</tt> <tt class="py-string">'forall'</tt><tt class="py-op">,</tt> <tt class="py-string">'exist'</tt><tt class="py-op">,</tt> <tt class="py-string">'part'</tt><tt class="py-op">,</tt> </tt>
+<a name="L186"></a><tt class="py-lineno"> 186</tt>  <tt class="py-line">    <tt class="py-string">'empty'</tt><tt class="py-op">,</tt> <tt class="py-string">'isin'</tt><tt class="py-op">,</tt> <tt class="py-string">'notin'</tt><tt class="py-op">,</tt> <tt class="py-string">'ni'</tt><tt class="py-op">,</tt> <tt class="py-string">'prod'</tt><tt class="py-op">,</tt> <tt class="py-string">'sum'</tt><tt class="py-op">,</tt> </tt>
+<a name="L187"></a><tt class="py-lineno"> 187</tt>  <tt class="py-line">    <tt class="py-string">'prop'</tt><tt class="py-op">,</tt> <tt class="py-string">'infin'</tt><tt class="py-op">,</tt> <tt class="py-string">'ang'</tt><tt class="py-op">,</tt> <tt class="py-string">'and'</tt><tt class="py-op">,</tt> <tt class="py-string">'or'</tt><tt class="py-op">,</tt> <tt class="py-string">'cap'</tt><tt class="py-op">,</tt> <tt class="py-string">'cup'</tt><tt class="py-op">,</tt> </tt>
+<a name="L188"></a><tt class="py-lineno"> 188</tt>  <tt class="py-line">    <tt class="py-string">'int'</tt><tt class="py-op">,</tt> <tt class="py-string">'there4'</tt><tt class="py-op">,</tt> <tt class="py-string">'sim'</tt><tt class="py-op">,</tt> <tt class="py-string">'cong'</tt><tt class="py-op">,</tt> <tt class="py-string">'asymp'</tt><tt class="py-op">,</tt> <tt class="py-string">'ne'</tt><tt class="py-op">,</tt> </tt>
+<a name="L189"></a><tt class="py-lineno"> 189</tt>  <tt class="py-line">    <tt class="py-string">'equiv'</tt><tt class="py-op">,</tt> <tt class="py-string">'le'</tt><tt class="py-op">,</tt> <tt class="py-string">'ge'</tt><tt class="py-op">,</tt> <tt class="py-string">'sub'</tt><tt class="py-op">,</tt> <tt class="py-string">'sup'</tt><tt class="py-op">,</tt> <tt class="py-string">'nsub'</tt><tt class="py-op">,</tt> </tt>
+<a name="L190"></a><tt class="py-lineno"> 190</tt>  <tt class="py-line">    <tt class="py-string">'sube'</tt><tt class="py-op">,</tt> <tt class="py-string">'supe'</tt><tt class="py-op">,</tt> <tt class="py-string">'oplus'</tt><tt class="py-op">,</tt> <tt class="py-string">'otimes'</tt><tt class="py-op">,</tt> <tt class="py-string">'perp'</tt><tt class="py-op">,</tt> </tt>
+<a name="L191"></a><tt class="py-lineno"> 191</tt>  <tt class="py-line"> </tt>
+<a name="L192"></a><tt class="py-lineno"> 192</tt>  <tt class="py-line">    <tt class="py-comment"># Alternate (long) names</tt> </tt>
+<a name="L193"></a><tt class="py-lineno"> 193</tt>  <tt class="py-line">    <tt class="py-string">'infinity'</tt><tt class="py-op">,</tt> <tt class="py-string">'integral'</tt><tt class="py-op">,</tt> <tt class="py-string">'product'</tt><tt class="py-op">,</tt> </tt>
+<a name="L194"></a><tt class="py-lineno"> 194</tt>  <tt class="py-line">    <tt class="py-string">'>='</tt><tt class="py-op">,</tt> <tt class="py-string">'<='</tt><tt class="py-op">,</tt>  </tt>
+<a name="L195"></a><tt class="py-lineno"> 195</tt>  <tt class="py-line">    <tt class="py-op">]</tt> </tt>
+<a name="L196"></a><tt class="py-lineno"> 196</tt>  <tt class="py-line"><tt class="py-comment"># Convert to a dictionary, for quick lookup</tt> </tt>
+<a name="L197"></a><tt class="py-lineno"> 197</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt id="link-21" class="py-name" targets="Variable epydoc.markup.epytext._SYMBOLS=epydoc.markup.epytext-module.html#_SYMBOLS"><a title="epydoc.markup.epytext._SYMBOLS" class="py-name" href="#" onclick="return doclink('link-21', '_SYMBOLS', 'link-21');">_SYMBOLS</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L198"></a><tt class="py-lineno"> 198</tt>  <tt class="py-line"><tt class="py-keyword">for</tt> <tt class="py-name">symbol</tt> <tt class="py-keyword">in</tt> <tt id="link-22" class="py-name"><a title="epydoc.markup.epytext.SYMBOLS" class="py-name" href="#" onclick="return doclink('link-22', 'SYMBOLS', 'link-20');">SYMBOLS</a></tt><tt class="py-op">:</tt> <tt id="link-23" class="py-name"><a title="epydoc.markup.epytext._SYMBOLS" class="py-name" href="#" onclick="return doclink('l [...]
+<a name="L199"></a><tt class="py-lineno"> 199</tt>  <tt class="py-line"> </tt>
+<a name="L200"></a><tt class="py-lineno"> 200</tt>  <tt class="py-line"><tt class="py-comment"># Add symbols to the docstring.</tt> </tt>
+<a name="L201"></a><tt class="py-lineno"> 201</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-name">symblist</tt> <tt class="py-op">=</tt> <tt class="py-string">'      '</tt> </tt>
+<a name="L202"></a><tt class="py-lineno"> 202</tt>  <tt class="py-line"><tt class="py-name">symblist</tt> <tt class="py-op">+=</tt> <tt class="py-string">';\n      '</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">' - C{E{S}{%s}}=S{%s}'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">symbol</tt><tt class="py-op">,</tt> <tt class="py-name">symbol</tt><tt class="py-op">)</tt> </tt>
+<a name="L203"></a><tt class="py-lineno"> 203</tt>  <tt class="py-line">                              <tt class="py-keyword">for</tt> <tt class="py-name">symbol</tt> <tt class="py-keyword">in</tt> <tt id="link-24" class="py-name"><a title="epydoc.markup.epytext.SYMBOLS" class="py-name" href="#" onclick="return doclink('link-24', 'SYMBOLS', 'link-20');">SYMBOLS</a></tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L204"></a><tt class="py-lineno"> 204</tt>  <tt class="py-line"><tt id="link-25" class="py-name" targets="Variable epydoc.markup.epytext.__doc__=epydoc.markup.epytext-module.html#__doc__"><a title="epydoc.markup.epytext.__doc__" class="py-name" href="#" onclick="return doclink('link-25', '__doc__', 'link-25');">__doc__</a></tt> <tt class="py-op">=</tt> <tt id="link-26" class="py-name"><a title="epydoc.markup.epytext.__doc__" class="py-name" href="#" onclick="return doclink('link- [...]
+<a name="L205"></a><tt class="py-lineno"> 205</tt>  <tt class="py-line"><tt class="py-keyword">del</tt> <tt class="py-name">symbol</tt><tt class="py-op">,</tt> <tt class="py-name">symblist</tt> </tt>
+<a name="L206"></a><tt class="py-lineno"> 206</tt>  <tt class="py-line"> </tt>
+<a name="L207"></a><tt class="py-lineno"> 207</tt>  <tt class="py-line"><tt class="py-comment"># Tags for colorizing text.</tt> </tt>
+<a name="L208"></a><tt class="py-lineno"> 208</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt id="link-27" class="py-name" targets="Variable epydoc.markup.epytext._COLORIZING_TAGS=epydoc.markup.epytext-module.html#_COLORIZING_TAGS"><a title="epydoc.markup.epytext._COLORIZING_TAGS" class="py-name" href="#" onclick="return doclink('link-27', '_COLORIZING_TAGS', 'link-27');">_COLORIZING_TAGS</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
+<a name="L209"></a><tt class="py-lineno"> 209</tt>  <tt class="py-line">    <tt class="py-string">'C'</tt><tt class="py-op">:</tt> <tt class="py-string">'code'</tt><tt class="py-op">,</tt> </tt>
+<a name="L210"></a><tt class="py-lineno"> 210</tt>  <tt class="py-line">    <tt class="py-string">'M'</tt><tt class="py-op">:</tt> <tt class="py-string">'math'</tt><tt class="py-op">,</tt> </tt>
+<a name="L211"></a><tt class="py-lineno"> 211</tt>  <tt class="py-line">    <tt class="py-string">'X'</tt><tt class="py-op">:</tt> <tt class="py-string">'indexed'</tt><tt class="py-op">,</tt> </tt>
+<a name="L212"></a><tt class="py-lineno"> 212</tt>  <tt class="py-line">    <tt class="py-string">'I'</tt><tt class="py-op">:</tt> <tt class="py-string">'italic'</tt><tt class="py-op">,</tt>  </tt>
+<a name="L213"></a><tt class="py-lineno"> 213</tt>  <tt class="py-line">    <tt class="py-string">'B'</tt><tt class="py-op">:</tt> <tt class="py-string">'bold'</tt><tt class="py-op">,</tt> </tt>
+<a name="L214"></a><tt class="py-lineno"> 214</tt>  <tt class="py-line">    <tt class="py-string">'U'</tt><tt class="py-op">:</tt> <tt class="py-string">'uri'</tt><tt class="py-op">,</tt> </tt>
+<a name="L215"></a><tt class="py-lineno"> 215</tt>  <tt class="py-line">    <tt class="py-string">'L'</tt><tt class="py-op">:</tt> <tt class="py-string">'link'</tt><tt class="py-op">,</tt>       <tt class="py-comment"># A Python identifier that should be linked to </tt> </tt>
+<a name="L216"></a><tt class="py-lineno"> 216</tt>  <tt class="py-line">    <tt class="py-string">'E'</tt><tt class="py-op">:</tt> <tt class="py-string">'escape'</tt><tt class="py-op">,</tt>     <tt class="py-comment"># escapes characters or creates symbols</tt> </tt>
+<a name="L217"></a><tt class="py-lineno"> 217</tt>  <tt class="py-line">    <tt class="py-string">'S'</tt><tt class="py-op">:</tt> <tt class="py-string">'symbol'</tt><tt class="py-op">,</tt> </tt>
+<a name="L218"></a><tt class="py-lineno"> 218</tt>  <tt class="py-line">    <tt class="py-string">'G'</tt><tt class="py-op">:</tt> <tt class="py-string">'graph'</tt><tt class="py-op">,</tt> </tt>
+<a name="L219"></a><tt class="py-lineno"> 219</tt>  <tt class="py-line">    <tt class="py-op">}</tt> </tt>
+<a name="L220"></a><tt class="py-lineno"> 220</tt>  <tt class="py-line"> </tt>
+<a name="L221"></a><tt class="py-lineno"> 221</tt>  <tt class="py-line"><tt class="py-comment"># Which tags can use "link syntax" (e.g., U{Python<www.python.org>})?</tt> </tt>
+<a name="L222"></a><tt class="py-lineno"> 222</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt id="link-28" class="py-name" targets="Variable epydoc.markup.epytext._LINK_COLORIZING_TAGS=epydoc.markup.epytext-module.html#_LINK_COLORIZING_TAGS"><a title="epydoc.markup.epytext._LINK_COLORIZING_TAGS" class="py-name" href="#" onclick="return doclink('link-28', '_LINK_COLORIZING_TAGS', 'link-28');">_LINK_COLORIZING_TAGS</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt cla [...]
+<a name="L223"></a><tt class="py-lineno"> 223</tt>  <tt class="py-line"> </tt>
+<a name="L224"></a><tt class="py-lineno"> 224</tt>  <tt class="py-line"><tt class="py-comment">##################################################</tt> </tt>
+<a name="L225"></a><tt class="py-lineno"> 225</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## Structuring (Top Level)</tt> </tt>
+<a name="L226"></a><tt class="py-lineno"> 226</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">##################################################</tt> </tt>
+<a name="L227"></a><tt class="py-lineno"> 227</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="parse"></a><div id="parse-def"><a name="L228"></a><tt class="py-lineno"> 228</tt> <a class="py-toggle" href="#" id="parse-toggle" onclick="return toggle('parse');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.epytext-module.html#parse">parse</a><tt class="py-op">(</tt><tt class="py-param">str</tt><tt class="py-op">,</tt> <tt class="py-param">errors</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt><tt class="py-op"> [...]
+</div><div id="parse-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="parse-expanded"><a name="L229"></a><tt class="py-lineno"> 229</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L230"></a><tt class="py-lineno"> 230</tt>  <tt class="py-line"><tt class="py-docstring">    Return a DOM tree encoding the contents of an epytext string.  Any</tt> </tt>
+<a name="L231"></a><tt class="py-lineno"> 231</tt>  <tt class="py-line"><tt class="py-docstring">    errors generated during parsing will be stored in C{errors}.</tt> </tt>
+<a name="L232"></a><tt class="py-lineno"> 232</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L233"></a><tt class="py-lineno"> 233</tt>  <tt class="py-line"><tt class="py-docstring">    @param str: The epytext string to parse.</tt> </tt>
+<a name="L234"></a><tt class="py-lineno"> 234</tt>  <tt class="py-line"><tt class="py-docstring">    @type str: C{string}</tt> </tt>
+<a name="L235"></a><tt class="py-lineno"> 235</tt>  <tt class="py-line"><tt class="py-docstring">    @param errors: A list where any errors generated during parsing</tt> </tt>
+<a name="L236"></a><tt class="py-lineno"> 236</tt>  <tt class="py-line"><tt class="py-docstring">        will be stored.  If no list is specified, then fatal errors</tt> </tt>
+<a name="L237"></a><tt class="py-lineno"> 237</tt>  <tt class="py-line"><tt class="py-docstring">        will generate exceptions, and non-fatal errors will be</tt> </tt>
+<a name="L238"></a><tt class="py-lineno"> 238</tt>  <tt class="py-line"><tt class="py-docstring">        ignored.</tt> </tt>
+<a name="L239"></a><tt class="py-lineno"> 239</tt>  <tt class="py-line"><tt class="py-docstring">    @type errors: C{list} of L{ParseError}</tt> </tt>
+<a name="L240"></a><tt class="py-lineno"> 240</tt>  <tt class="py-line"><tt class="py-docstring">    @return: a DOM tree encoding the contents of an epytext string.</tt> </tt>
+<a name="L241"></a><tt class="py-lineno"> 241</tt>  <tt class="py-line"><tt class="py-docstring">    @rtype: C{Element}</tt> </tt>
+<a name="L242"></a><tt class="py-lineno"> 242</tt>  <tt class="py-line"><tt class="py-docstring">    @raise ParseError: If C{errors} is C{None} and an error is</tt> </tt>
+<a name="L243"></a><tt class="py-lineno"> 243</tt>  <tt class="py-line"><tt class="py-docstring">        encountered while parsing.</tt> </tt>
+<a name="L244"></a><tt class="py-lineno"> 244</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L245"></a><tt class="py-lineno"> 245</tt>  <tt class="py-line">    <tt class="py-comment"># Initialize errors list.</tt> </tt>
+<a name="L246"></a><tt class="py-lineno"> 246</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">errors</tt> <tt class="py-op">==</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L247"></a><tt class="py-lineno"> 247</tt>  <tt class="py-line">        <tt class="py-name">errors</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L248"></a><tt class="py-lineno"> 248</tt>  <tt class="py-line">        <tt class="py-name">raise_on_error</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L249"></a><tt class="py-lineno"> 249</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L250"></a><tt class="py-lineno"> 250</tt>  <tt class="py-line">        <tt class="py-name">raise_on_error</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L251"></a><tt class="py-lineno"> 251</tt>  <tt class="py-line"> </tt>
+<a name="L252"></a><tt class="py-lineno"> 252</tt>  <tt class="py-line">    <tt class="py-comment"># Preprocess the string.</tt> </tt>
+<a name="L253"></a><tt class="py-lineno"> 253</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">str</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt class="py-string">'\015\012'</tt><tt class="py-op">,</tt> <tt class="py-string">'\012'</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">)</tt> </tt>
+<a name="L254"></a><tt class="py-lineno"> 254</tt>  <tt class="py-line">    <tt class="py-name">str</tt> <tt class="py-op">=</tt> <tt class="py-name">string</tt><tt class="py-op">.</tt><tt class="py-name">expandtabs</tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">)</tt> </tt>
+<a name="L255"></a><tt class="py-lineno"> 255</tt>  <tt class="py-line"> </tt>
+<a name="L256"></a><tt class="py-lineno"> 256</tt>  <tt class="py-line">    <tt class="py-comment"># Tokenize the input string.</tt> </tt>
+<a name="L257"></a><tt class="py-lineno"> 257</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">tokens</tt> <tt class="py-op">=</tt> <tt id="link-29" class="py-name" targets="Function epydoc.markup.epytext._tokenize()=epydoc.markup.epytext-module.html#_tokenize"><a title="epydoc.markup.epytext._tokenize" class="py-name" href="#" onclick="return doclink('link-29', '_tokenize', 'link-29');">_tokenize</a></tt><tt class="py-op">(</tt><tt class="py-name">str</tt><t [...]
+<a name="L258"></a><tt class="py-lineno"> 258</tt>  <tt class="py-line"> </tt>
+<a name="L259"></a><tt class="py-lineno"> 259</tt>  <tt class="py-line">    <tt class="py-comment"># Have we encountered a field yet?</tt> </tt>
+<a name="L260"></a><tt class="py-lineno"> 260</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">encountered_field</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L261"></a><tt class="py-lineno"> 261</tt>  <tt class="py-line"> </tt>
+<a name="L262"></a><tt class="py-lineno"> 262</tt>  <tt class="py-line">    <tt class="py-comment"># Create an document to hold the epytext.</tt> </tt>
+<a name="L263"></a><tt class="py-lineno"> 263</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">doc</tt> <tt class="py-op">=</tt> <tt id="link-30" class="py-name" targets="Class epydoc.markup.epytext.Element=epydoc.markup.epytext.Element-class.html"><a title="epydoc.markup.epytext.Element" class="py-name" href="#" onclick="return doclink('link-30', 'Element', 'link-30');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'epytext'</tt><tt class="py [...]
+<a name="L264"></a><tt class="py-lineno"> 264</tt>  <tt class="py-line"> </tt>
+<a name="L265"></a><tt class="py-lineno"> 265</tt>  <tt class="py-line">    <tt class="py-comment"># Maintain two parallel stacks: one contains DOM elements, and</tt> </tt>
+<a name="L266"></a><tt class="py-lineno"> 266</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># gives the ancestors of the current block.  The other contains</tt> </tt>
+<a name="L267"></a><tt class="py-lineno"> 267</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># indentation values, and gives the indentation of the</tt> </tt>
+<a name="L268"></a><tt class="py-lineno"> 268</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># corresponding DOM elements.  An indentation of "None" reflects</tt> </tt>
+<a name="L269"></a><tt class="py-lineno"> 269</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># an unknown indentation.  However, the indentation must be</tt> </tt>
+<a name="L270"></a><tt class="py-lineno"> 270</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># greater than, or greater than or equal to, the indentation of</tt> </tt>
+<a name="L271"></a><tt class="py-lineno"> 271</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># the prior element (depending on what type of DOM element it</tt> </tt>
+<a name="L272"></a><tt class="py-lineno"> 272</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># corresponds to).  No 2 consecutive indent_stack values will be</tt> </tt>
+<a name="L273"></a><tt class="py-lineno"> 273</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># ever be "None."  Use initial dummy elements in the stack, so we</tt> </tt>
+<a name="L274"></a><tt class="py-lineno"> 274</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># don't have to worry about bounds checking.</tt> </tt>
+<a name="L275"></a><tt class="py-lineno"> 275</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">stack</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">doc</tt><tt class="py-op">]</tt> </tt>
+<a name="L276"></a><tt class="py-lineno"> 276</tt>  <tt class="py-line">    <tt class="py-name">indent_stack</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">]</tt> </tt>
+<a name="L277"></a><tt class="py-lineno"> 277</tt>  <tt class="py-line"> </tt>
+<a name="L278"></a><tt class="py-lineno"> 278</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">token</tt> <tt class="py-keyword">in</tt> <tt class="py-name">tokens</tt><tt class="py-op">:</tt> </tt>
+<a name="L279"></a><tt class="py-lineno"> 279</tt>  <tt class="py-line">        <tt class="py-comment"># Uncomment this for debugging:</tt> </tt>
+<a name="L280"></a><tt class="py-lineno"> 280</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#print ('%s: %s\n%s: %s\n' % </tt> </tt>
+<a name="L281"></a><tt class="py-lineno"> 281</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#       (''.join(['%-11s' % (t and t.tag) for t in stack]),</tt> </tt>
+<a name="L282"></a><tt class="py-lineno"> 282</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#        token.tag, ''.join(['%-11s' % i for i in indent_stack]),</tt> </tt>
+<a name="L283"></a><tt class="py-lineno"> 283</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#        token.indent))</tt> </tt>
+<a name="L284"></a><tt class="py-lineno"> 284</tt>  <tt class="py-line"><tt class="py-comment"></tt>         </tt>
+<a name="L285"></a><tt class="py-lineno"> 285</tt>  <tt class="py-line">        <tt class="py-comment"># Pop any completed blocks off the stack.</tt> </tt>
+<a name="L286"></a><tt class="py-lineno"> 286</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt id="link-31" class="py-name" targets="Function epydoc.markup.epytext._pop_completed_blocks()=epydoc.markup.epytext-module.html#_pop_completed_blocks"><a title="epydoc.markup.epytext._pop_completed_blocks" class="py-name" href="#" onclick="return doclink('link-31', '_pop_completed_blocks', 'link-31');">_pop_completed_blocks</a></tt><tt class="py-op">(</tt><tt class="py-name">tok [...]
+<a name="L287"></a><tt class="py-lineno"> 287</tt>  <tt class="py-line"> </tt>
+<a name="L288"></a><tt class="py-lineno"> 288</tt>  <tt class="py-line">        <tt class="py-comment"># If Token has type PARA, colorize and add the new paragraph</tt> </tt>
+<a name="L289"></a><tt class="py-lineno"> 289</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">token</tt><tt class="py-op">.</tt><tt id="link-32" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-32', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt id="link-33" class="py-name" targets="Class epydoc.markup.epytext.Token=epydoc.markup.epytext.Token-class.ht [...]
+<a name="L290"></a><tt class="py-lineno"> 290</tt>  <tt class="py-line">            <tt id="link-35" class="py-name" targets="Function epydoc.markup.epytext._add_para()=epydoc.markup.epytext-module.html#_add_para"><a title="epydoc.markup.epytext._add_para" class="py-name" href="#" onclick="return doclink('link-35', '_add_para', 'link-35');">_add_para</a></tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt class="py-name">token</tt><tt class="py-op">,</tt> [...]
+<a name="L291"></a><tt class="py-lineno"> 291</tt>  <tt class="py-line">                      </tt>
+<a name="L292"></a><tt class="py-lineno"> 292</tt>  <tt class="py-line">        <tt class="py-comment"># If Token has type HEADING, add the new section</tt> </tt>
+<a name="L293"></a><tt class="py-lineno"> 293</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">elif</tt> <tt class="py-name">token</tt><tt class="py-op">.</tt><tt id="link-36" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-36', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt id="link-37" class="py-name"><a title="epydoc.markup.epytext.Token" class="py-name" href="#" onclick="retu [...]
+<a name="L294"></a><tt class="py-lineno"> 294</tt>  <tt class="py-line">            <tt id="link-39" class="py-name" targets="Function epydoc.markup.epytext._add_section()=epydoc.markup.epytext-module.html#_add_section"><a title="epydoc.markup.epytext._add_section" class="py-name" href="#" onclick="return doclink('link-39', '_add_section', 'link-39');">_add_section</a></tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt class="py-name">token</tt><tt class [...]
+<a name="L295"></a><tt class="py-lineno"> 295</tt>  <tt class="py-line"> </tt>
+<a name="L296"></a><tt class="py-lineno"> 296</tt>  <tt class="py-line">        <tt class="py-comment"># If Token has type LBLOCK, add the new literal block</tt> </tt>
+<a name="L297"></a><tt class="py-lineno"> 297</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">elif</tt> <tt class="py-name">token</tt><tt class="py-op">.</tt><tt id="link-40" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-40', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt id="link-41" class="py-name"><a title="epydoc.markup.epytext.Token" class="py-name" href="#" onclick="retu [...]
+<a name="L298"></a><tt class="py-lineno"> 298</tt>  <tt class="py-line">            <tt class="py-name">stack</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">children</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">token</tt><tt class="py-op">.</tt><tt id="link-43" class="py-name" targets="Method epydoc.markup.epytext.Token.to_dom()=ep [...]
+<a name="L299"></a><tt class="py-lineno"> 299</tt>  <tt class="py-line"> </tt>
+<a name="L300"></a><tt class="py-lineno"> 300</tt>  <tt class="py-line">        <tt class="py-comment"># If Token has type DTBLOCK, add the new doctest block</tt> </tt>
+<a name="L301"></a><tt class="py-lineno"> 301</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">elif</tt> <tt class="py-name">token</tt><tt class="py-op">.</tt><tt id="link-44" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-44', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt id="link-45" class="py-name"><a title="epydoc.markup.epytext.Token" class="py-name" href="#" onclick="retu [...]
+<a name="L302"></a><tt class="py-lineno"> 302</tt>  <tt class="py-line">            <tt class="py-name">stack</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">children</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">token</tt><tt class="py-op">.</tt><tt id="link-47" class="py-name"><a title="epydoc.markup.epytext.Token.to_dom" class="py [...]
+<a name="L303"></a><tt class="py-lineno"> 303</tt>  <tt class="py-line"> </tt>
+<a name="L304"></a><tt class="py-lineno"> 304</tt>  <tt class="py-line">        <tt class="py-comment"># If Token has type BULLET, add the new list/list item/field</tt> </tt>
+<a name="L305"></a><tt class="py-lineno"> 305</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">elif</tt> <tt class="py-name">token</tt><tt class="py-op">.</tt><tt id="link-48" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-48', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt id="link-49" class="py-name"><a title="epydoc.markup.epytext.Token" class="py-name" href="#" onclick="retu [...]
+<a name="L306"></a><tt class="py-lineno"> 306</tt>  <tt class="py-line">            <tt id="link-51" class="py-name" targets="Function epydoc.markup.epytext._add_list()=epydoc.markup.epytext-module.html#_add_list"><a title="epydoc.markup.epytext._add_list" class="py-name" href="#" onclick="return doclink('link-51', '_add_list', 'link-51');">_add_list</a></tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt class="py-name">token</tt><tt class="py-op">,</tt> [...]
+<a name="L307"></a><tt class="py-lineno"> 307</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L308"></a><tt class="py-lineno"> 308</tt>  <tt class="py-line">            <tt class="py-keyword">assert</tt> <tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-string">'Unknown token type: '</tt><tt class="py-op">+</tt><tt class="py-name">token</tt><tt class="py-op">.</tt><tt id="link-52" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-52', 'tag', 'link-13');">tag</a></tt> </tt>
+<a name="L309"></a><tt class="py-lineno"> 309</tt>  <tt class="py-line"> </tt>
+<a name="L310"></a><tt class="py-lineno"> 310</tt>  <tt class="py-line">        <tt class="py-comment"># Check if the DOM element we just added was a field..</tt> </tt>
+<a name="L311"></a><tt class="py-lineno"> 311</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">stack</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-53" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-53', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt class="p [...]
+<a name="L312"></a><tt class="py-lineno"> 312</tt>  <tt class="py-line">            <tt class="py-name">encountered_field</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L313"></a><tt class="py-lineno"> 313</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">encountered_field</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L314"></a><tt class="py-lineno"> 314</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">stack</tt><tt class="py-op">)</tt> <tt class="py-op"><=</tt> <tt class="py-number">3</tt><tt class="py-op">:</tt> </tt>
+<a name="L315"></a><tt class="py-lineno"> 315</tt>  <tt class="py-line">                <tt class="py-name">estr</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">"Fields must be the final elements in an "</tt><tt class="py-op">+</tt> </tt>
+<a name="L316"></a><tt class="py-lineno"> 316</tt>  <tt class="py-line">                        <tt class="py-string">"epytext string."</tt><tt class="py-op">)</tt> </tt>
+<a name="L317"></a><tt class="py-lineno"> 317</tt>  <tt class="py-line">                <tt class="py-name">errors</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-54" class="py-name" targets="Class epydoc.markup.epytext.StructuringError=epydoc.markup.epytext.StructuringError-class.html"><a title="epydoc.markup.epytext.StructuringError" class="py-name" href="#" onclick="return doclink('link-54', 'StructuringError', 'link-54');">StructuringEr [...]
+<a name="L318"></a><tt class="py-lineno"> 318</tt>  <tt class="py-line"> </tt>
+<a name="L319"></a><tt class="py-lineno"> 319</tt>  <tt class="py-line">    <tt class="py-comment"># Graphs use inline markup (G{...}) but are really block-level</tt> </tt>
+<a name="L320"></a><tt class="py-lineno"> 320</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># elements; so "raise" any graphs we generated.  This is a bit of</tt> </tt>
+<a name="L321"></a><tt class="py-lineno"> 321</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># a hack, but the alternative is to define a new markup for</tt> </tt>
+<a name="L322"></a><tt class="py-lineno"> 322</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># block-level elements, which I'd rather not do.  (See sourceforge</tt> </tt>
+<a name="L323"></a><tt class="py-lineno"> 323</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># bug #1673017.)</tt> </tt>
+<a name="L324"></a><tt class="py-lineno"> 324</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">for</tt> <tt class="py-name">child</tt> <tt class="py-keyword">in</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt class="py-name">children</tt><tt class="py-op">:</tt> </tt>
+<a name="L325"></a><tt class="py-lineno"> 325</tt>  <tt class="py-line">        <tt id="link-55" class="py-name" targets="Function epydoc.markup.epytext._raise_graphs()=epydoc.markup.epytext-module.html#_raise_graphs"><a title="epydoc.markup.epytext._raise_graphs" class="py-name" href="#" onclick="return doclink('link-55', '_raise_graphs', 'link-55');">_raise_graphs</a></tt><tt class="py-op">(</tt><tt class="py-name">child</tt><tt class="py-op">,</tt> <tt class="py-name">doc</tt><tt clas [...]
+<a name="L326"></a><tt class="py-lineno"> 326</tt>  <tt class="py-line"> </tt>
+<a name="L327"></a><tt class="py-lineno"> 327</tt>  <tt class="py-line">    <tt class="py-comment"># If there was an error, then signal it!</tt> </tt>
+<a name="L328"></a><tt class="py-lineno"> 328</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">e</tt> <tt class="py-keyword">for</tt> <tt class="py-name">e</tt> <tt class="py-keyword">in</tt> <tt class="py-name">errors</tt> <tt class="py-keyword">if</tt> <tt class="py-name">e</tt><tt class="py-op">.</tt><tt id="link-56" class="py-name" targets="Method ep [...]
+<a name="L329"></a><tt class="py-lineno"> 329</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">raise_on_error</tt><tt class="py-op">:</tt> </tt>
+<a name="L330"></a><tt class="py-lineno"> 330</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">errors</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L331"></a><tt class="py-lineno"> 331</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L332"></a><tt class="py-lineno"> 332</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
+<a name="L333"></a><tt class="py-lineno"> 333</tt>  <tt class="py-line">         </tt>
+<a name="L334"></a><tt class="py-lineno"> 334</tt>  <tt class="py-line">    <tt class="py-comment"># Return the top-level epytext DOM element.</tt> </tt>
+<a name="L335"></a><tt class="py-lineno"> 335</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">return</tt> <tt class="py-name">doc</tt> </tt>
+</div><a name="L336"></a><tt class="py-lineno"> 336</tt>  <tt class="py-line"> </tt>
+<a name="_raise_graphs"></a><div id="_raise_graphs-def"><a name="L337"></a><tt class="py-lineno"> 337</tt> <a class="py-toggle" href="#" id="_raise_graphs-toggle" onclick="return toggle('_raise_graphs');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.epytext-module.html#_raise_graphs">_raise_graphs</a><tt class="py-op">(</tt><tt class="py-param">tree</tt><tt class="py-op">,</tt> <tt class="py-param">parent</tt><tt class="py-op">)</tt> [...]
+</div><div id="_raise_graphs-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_raise_graphs-expanded"><a name="L338"></a><tt class="py-lineno"> 338</tt>  <tt class="py-line">    <tt class="py-comment"># Recurse to children.</tt> </tt>
+<a name="L339"></a><tt class="py-lineno"> 339</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">have_graph_child</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L340"></a><tt class="py-lineno"> 340</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">elt</tt> <tt class="py-keyword">in</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt class="py-name">children</tt><tt class="py-op">:</tt> </tt>
+<a name="L341"></a><tt class="py-lineno"> 341</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">elt</tt><tt class="py-op">,</tt> <tt id="link-57" class="py-name"><a title="epydoc.markup.epytext.Element" class="py-name" href="#" onclick="return doclink('link-57', 'Element', 'link-30');">Element</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L342"></a><tt class="py-lineno"> 342</tt>  <tt class="py-line">            <tt id="link-58" class="py-name"><a title="epydoc.markup.epytext._raise_graphs" class="py-name" href="#" onclick="return doclink('link-58', '_raise_graphs', 'link-55');">_raise_graphs</a></tt><tt class="py-op">(</tt><tt class="py-name">elt</tt><tt class="py-op">,</tt> <tt class="py-name">tree</tt><tt class="py-op">)</tt> </tt>
+<a name="L343"></a><tt class="py-lineno"> 343</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">elt</tt><tt class="py-op">.</tt><tt id="link-59" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-59', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'graph'</tt><tt class="py-op">:</tt> <tt class="py-name">have_graph_child</tt> <tt class="py-op">=</tt> <tt class="p [...]
+<a name="L344"></a><tt class="py-lineno"> 344</tt>  <tt class="py-line"> </tt>
+<a name="L345"></a><tt class="py-lineno"> 345</tt>  <tt class="py-line">    <tt class="py-name">block</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">'section'</tt><tt class="py-op">,</tt> <tt class="py-string">'fieldlist'</tt><tt class="py-op">,</tt> <tt class="py-string">'field'</tt><tt class="py-op">,</tt> <tt class="py-string">'ulist'</tt><tt class="py-op">,</tt> <tt class="py-string">'olist'</tt><tt class="py-op">,</tt> <tt class="py-string">'li'</tt><tt  [...]
+<a name="L346"></a><tt class="py-lineno"> 346</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">have_graph_child</tt> <tt class="py-keyword">and</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-60" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-60', 'tag', 'link-13');">tag</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">block</tt><tt  [...]
+<a name="L347"></a><tt class="py-lineno"> 347</tt>  <tt class="py-line">        <tt class="py-name">child_index</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L348"></a><tt class="py-lineno"> 348</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">elt</tt> <tt class="py-keyword">in</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt class="py-name">children</tt><tt class="py-op">:</tt> </tt>
+<a name="L349"></a><tt class="py-lineno"> 349</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">elt</tt><tt class="py-op">,</tt> <tt id="link-61" class="py-name"><a title="epydoc.markup.epytext.Element" class="py-name" href="#" onclick="return doclink('link-61', 'Element', 'link-30');">Element</a></tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-name">elt</tt><tt cl [...]
+<a name="L350"></a><tt class="py-lineno"> 350</tt>  <tt class="py-line">                <tt class="py-comment"># We found a graph: splice it into the parent.</tt> </tt>
+<a name="L351"></a><tt class="py-lineno"> 351</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-name">parent_index</tt> <tt class="py-op">=</tt> <tt class="py-name">parent</tt><tt class="py-op">.</tt><tt class="py-name">children</tt><tt class="py-op">.</tt><tt class="py-name">index</tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">)</tt> </tt>
+<a name="L352"></a><tt class="py-lineno"> 352</tt>  <tt class="py-line">                <tt class="py-name">left</tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt class="py-name">children</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-name">child_index</tt><tt class="py-op">]</tt> </tt>
+<a name="L353"></a><tt class="py-lineno"> 353</tt>  <tt class="py-line">                <tt class="py-name">right</tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt class="py-name">children</tt><tt class="py-op">[</tt><tt class="py-name">child_index</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt>
+<a name="L354"></a><tt class="py-lineno"> 354</tt>  <tt class="py-line">                <tt class="py-name">parent</tt><tt class="py-op">.</tt><tt class="py-name">children</tt><tt class="py-op">[</tt><tt class="py-name">parent_index</tt><tt class="py-op">:</tt><tt class="py-name">parent_index</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> </tt>
+<a name="L355"></a><tt class="py-lineno"> 355</tt>  <tt class="py-line">                    <tt id="link-63" class="py-name"><a title="epydoc.markup.epytext.Element" class="py-name" href="#" onclick="return doclink('link-63', 'Element', 'link-30');">Element</a></tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-64" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-64', 'tag', 'link-13');">t [...]
+<a name="L356"></a><tt class="py-lineno"> 356</tt>  <tt class="py-line">                    <tt class="py-name">elt</tt><tt class="py-op">,</tt> </tt>
+<a name="L357"></a><tt class="py-lineno"> 357</tt>  <tt class="py-line">                    <tt id="link-65" class="py-name"><a title="epydoc.markup.epytext.Element" class="py-name" href="#" onclick="return doclink('link-65', 'Element', 'link-30');">Element</a></tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-66" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-66', 'tag', 'link-13');">t [...]
+<a name="L358"></a><tt class="py-lineno"> 358</tt>  <tt class="py-line">                <tt class="py-name">child_index</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L359"></a><tt class="py-lineno"> 359</tt>  <tt class="py-line">                <tt class="py-name">parent_index</tt> <tt class="py-op">+=</tt> <tt class="py-number">2</tt> </tt>
+<a name="L360"></a><tt class="py-lineno"> 360</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L361"></a><tt class="py-lineno"> 361</tt>  <tt class="py-line">                <tt class="py-name">child_index</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+</div><a name="L362"></a><tt class="py-lineno"> 362</tt>  <tt class="py-line"> </tt>
+<a name="_pop_completed_blocks"></a><div id="_pop_completed_blocks-def"><a name="L363"></a><tt class="py-lineno"> 363</tt> <a class="py-toggle" href="#" id="_pop_completed_blocks-toggle" onclick="return toggle('_pop_completed_blocks');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.epytext-module.html#_pop_completed_blocks">_pop_completed_blocks</a><tt class="py-op">(</tt><tt class="py-param">token</tt><tt class="py-op">,</tt> <tt cla [...]
+</div><div id="_pop_completed_blocks-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_pop_completed_blocks-expanded"><a name="L364"></a><tt class="py-lineno"> 364</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L365"></a><tt class="py-lineno"> 365</tt>  <tt class="py-line"><tt class="py-docstring">    Pop any completed blocks off the stack.  This includes any</tt> </tt>
+<a name="L366"></a><tt class="py-lineno"> 366</tt>  <tt class="py-line"><tt class="py-docstring">    blocks that we have dedented past, as well as any list item</tt> </tt>
+<a name="L367"></a><tt class="py-lineno"> 367</tt>  <tt class="py-line"><tt class="py-docstring">    blocks that we've dedented to.  The top element on the stack </tt> </tt>
+<a name="L368"></a><tt class="py-lineno"> 368</tt>  <tt class="py-line"><tt class="py-docstring">    should only be a list if we're about to start a new list</tt> </tt>
+<a name="L369"></a><tt class="py-lineno"> 369</tt>  <tt class="py-line"><tt class="py-docstring">    item (i.e., if the next token is a bullet).</tt> </tt>
+<a name="L370"></a><tt class="py-lineno"> 370</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L371"></a><tt class="py-lineno"> 371</tt>  <tt class="py-line">    <tt class="py-name">indent</tt> <tt class="py-op">=</tt> <tt class="py-name">token</tt><tt class="py-op">.</tt><tt class="py-name">indent</tt> </tt>
+<a name="L372"></a><tt class="py-lineno"> 372</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">indent</tt> <tt class="py-op">!=</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L373"></a><tt class="py-lineno"> 373</tt>  <tt class="py-line">        <tt class="py-keyword">while</tt> <tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">stack</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-number">2</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L374"></a><tt class="py-lineno"> 374</tt>  <tt class="py-line">            <tt class="py-name">pop</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L375"></a><tt class="py-lineno"> 375</tt>  <tt class="py-line">             </tt>
+<a name="L376"></a><tt class="py-lineno"> 376</tt>  <tt class="py-line">            <tt class="py-comment"># Dedent past a block</tt> </tt>
+<a name="L377"></a><tt class="py-lineno"> 377</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt class="py-name">indent_stack</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">!=</tt><tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-name">indent</tt><tt class="py-op"><</tt><tt class="py-name">indent_stack</tt><tt class="py-op">[</tt><tt cl [...]
+<a name="L378"></a><tt class="py-lineno"> 378</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">indent_stack</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">==</tt><tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-name">indent</tt><tt class="py-op"><</tt><tt class="py-name">indent_stack</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt clas [...]
+<a name="L379"></a><tt class="py-lineno"> 379</tt>  <tt class="py-line"> </tt>
+<a name="L380"></a><tt class="py-lineno"> 380</tt>  <tt class="py-line">            <tt class="py-comment"># Dedent to a list item, if it is follwed by another list</tt> </tt>
+<a name="L381"></a><tt class="py-lineno"> 381</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># item with the same indentation.</tt> </tt>
+<a name="L382"></a><tt class="py-lineno"> 382</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">elif</tt> <tt class="py-op">(</tt><tt class="py-name">token</tt><tt class="py-op">.</tt><tt id="link-67" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-67', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'bullet'</tt> <tt class="py-keyword">and</tt> <tt class="py- [...]
+<a name="L383"></a><tt class="py-lineno"> 383</tt>  <tt class="py-line">                  <tt class="py-name">stack</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-68" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-68', 'tag', 'link-13');">tag</a></tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-string">'li'</tt>< [...]
+<a name="L384"></a><tt class="py-lineno"> 384</tt>  <tt class="py-line"> </tt>
+<a name="L385"></a><tt class="py-lineno"> 385</tt>  <tt class="py-line">            <tt class="py-comment"># End of a list (no more list items available)</tt> </tt>
+<a name="L386"></a><tt class="py-lineno"> 386</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">elif</tt> <tt class="py-op">(</tt><tt class="py-name">stack</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-69" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-69', 'tag', 'link-13');">tag</a></tt> <tt clas [...]
+<a name="L387"></a><tt class="py-lineno"> 387</tt>  <tt class="py-line">                  <tt class="py-op">(</tt><tt class="py-name">token</tt><tt class="py-op">.</tt><tt id="link-70" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-70', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">!=</tt> <tt class="py-string">'bullet'</tt> <tt class="py-keyword">or</tt> <tt class="py-name">token</tt><tt class="py-op">.</tt><tt class="py-na [...]
+<a name="L388"></a><tt class="py-lineno"> 388</tt>  <tt class="py-line">                <tt class="py-name">pop</tt><tt class="py-op">=</tt><tt class="py-number">1</tt> </tt>
+<a name="L389"></a><tt class="py-lineno"> 389</tt>  <tt class="py-line"> </tt>
+<a name="L390"></a><tt class="py-lineno"> 390</tt>  <tt class="py-line">            <tt class="py-comment"># Pop the block, if it's complete.  Otherwise, we're done.</tt> </tt>
+<a name="L391"></a><tt class="py-lineno"> 391</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt class="py-name">pop</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> </tt>
+<a name="L392"></a><tt class="py-lineno"> 392</tt>  <tt class="py-line">            <tt class="py-name">stack</tt><tt class="py-op">.</tt><tt class="py-name">pop</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L393"></a><tt class="py-lineno"> 393</tt>  <tt class="py-line">            <tt class="py-name">indent_stack</tt><tt class="py-op">.</tt><tt class="py-name">pop</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L394"></a><tt class="py-lineno"> 394</tt>  <tt class="py-line"> </tt>
+<a name="_add_para"></a><div id="_add_para-def"><a name="L395"></a><tt class="py-lineno"> 395</tt> <a class="py-toggle" href="#" id="_add_para-toggle" onclick="return toggle('_add_para');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.epytext-module.html#_add_para">_add_para</a><tt class="py-op">(</tt><tt class="py-param">doc</tt><tt class="py-op">,</tt> <tt class="py-param">para_token</tt><tt class="py-op">,</tt> <tt class="py-param" [...]
+</div><div id="_add_para-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_add_para-expanded"><a name="L396"></a><tt class="py-lineno"> 396</tt>  <tt class="py-line">    <tt class="py-docstring">"""Colorize the given paragraph, and add it to the DOM tree."""</tt> </tt>
+<a name="L397"></a><tt class="py-lineno"> 397</tt>  <tt class="py-line">    <tt class="py-comment"># Check indentation, and update the parent's indentation</tt> </tt>
+<a name="L398"></a><tt class="py-lineno"> 398</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># when appropriate.</tt> </tt>
+<a name="L399"></a><tt class="py-lineno"> 399</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">indent_stack</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L400"></a><tt class="py-lineno"> 400</tt>  <tt class="py-line">        <tt class="py-name">indent_stack</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">para_token</tt><tt class="py-op">.</tt><tt class="py-name">indent</tt> </tt>
+<a name="L401"></a><tt class="py-lineno"> 401</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">para_token</tt><tt class="py-op">.</tt><tt class="py-name">indent</tt> <tt class="py-op">==</tt> <tt class="py-name">indent_stack</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L402"></a><tt class="py-lineno"> 402</tt>  <tt class="py-line">        <tt class="py-comment"># Colorize the paragraph and add it.</tt> </tt>
+<a name="L403"></a><tt class="py-lineno"> 403</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">para</tt> <tt class="py-op">=</tt> <tt id="link-71" class="py-name" targets="Function epydoc.markup.epytext._colorize()=epydoc.markup.epytext-module.html#_colorize,Method epydoc.markup.pyval_repr.PyvalColorizer._colorize()=epydoc.markup.pyval_repr.PyvalColorizer-class.html#_colorize"><a title="epydoc.markup.epytext._colorize
+epydoc.markup.pyval_repr.PyvalColorizer._colorize" class="py-name" href="#" onclick="return doclink('link-71', '_colorize', 'link-71');">_colorize</a></tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt class="py-name">para_token</tt><tt class="py-op">,</tt> <tt class="py-name">errors</tt><tt class="py-op">)</tt> </tt>
+<a name="L404"></a><tt class="py-lineno"> 404</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">para_token</tt><tt class="py-op">.</tt><tt class="py-name">inline</tt><tt class="py-op">:</tt> </tt>
+<a name="L405"></a><tt class="py-lineno"> 405</tt>  <tt class="py-line">            <tt class="py-name">para</tt><tt class="py-op">.</tt><tt class="py-name">attribs</tt><tt class="py-op">[</tt><tt class="py-string">'inline'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L406"></a><tt class="py-lineno"> 406</tt>  <tt class="py-line">        <tt class="py-name">stack</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">children</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">para</tt><tt class="py-op">)</tt> </tt>
+<a name="L407"></a><tt class="py-lineno"> 407</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L408"></a><tt class="py-lineno"> 408</tt>  <tt class="py-line">        <tt class="py-name">estr</tt> <tt class="py-op">=</tt> <tt class="py-string">"Improper paragraph indentation."</tt> </tt>
+<a name="L409"></a><tt class="py-lineno"> 409</tt>  <tt class="py-line">        <tt class="py-name">errors</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-72" class="py-name"><a title="epydoc.markup.epytext.StructuringError" class="py-name" href="#" onclick="return doclink('link-72', 'StructuringError', 'link-54');">StructuringError</a></tt><tt class="py-op">(</tt><tt class="py-name">estr</tt><tt class="py-op">,</tt> <tt class="py-name">par [...]
+</div><a name="L410"></a><tt class="py-lineno"> 410</tt>  <tt class="py-line"> </tt>
+<a name="_add_section"></a><div id="_add_section-def"><a name="L411"></a><tt class="py-lineno"> 411</tt> <a class="py-toggle" href="#" id="_add_section-toggle" onclick="return toggle('_add_section');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.epytext-module.html#_add_section">_add_section</a><tt class="py-op">(</tt><tt class="py-param">doc</tt><tt class="py-op">,</tt> <tt class="py-param">heading_token</tt><tt class="py-op">,</tt> [...]
+</div><div id="_add_section-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_add_section-expanded"><a name="L412"></a><tt class="py-lineno"> 412</tt>  <tt class="py-line">    <tt class="py-docstring">"""Add a new section to the DOM tree, with the given heading."""</tt> </tt>
+<a name="L413"></a><tt class="py-lineno"> 413</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">indent_stack</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L414"></a><tt class="py-lineno"> 414</tt>  <tt class="py-line">        <tt class="py-name">indent_stack</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">heading_token</tt><tt class="py-op">.</tt><tt class="py-name">indent</tt> </tt>
+<a name="L415"></a><tt class="py-lineno"> 415</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">indent_stack</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">!=</tt> <tt class="py-name">heading_token</tt><tt class="py-op">.</tt><tt class="py-name">indent</tt><tt class="py-op">:</tt> </tt>
+<a name="L416"></a><tt class="py-lineno"> 416</tt>  <tt class="py-line">        <tt class="py-name">estr</tt> <tt class="py-op">=</tt> <tt class="py-string">"Improper heading indentation."</tt> </tt>
+<a name="L417"></a><tt class="py-lineno"> 417</tt>  <tt class="py-line">        <tt class="py-name">errors</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-73" class="py-name"><a title="epydoc.markup.epytext.StructuringError" class="py-name" href="#" onclick="return doclink('link-73', 'StructuringError', 'link-54');">StructuringError</a></tt><tt class="py-op">(</tt><tt class="py-name">estr</tt><tt class="py-op">,</tt> <tt class="py-name">hea [...]
+<a name="L418"></a><tt class="py-lineno"> 418</tt>  <tt class="py-line"> </tt>
+<a name="L419"></a><tt class="py-lineno"> 419</tt>  <tt class="py-line">    <tt class="py-comment"># Check for errors.</tt> </tt>
+<a name="L420"></a><tt class="py-lineno"> 420</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">for</tt> <tt class="py-name">tok</tt> <tt class="py-keyword">in</tt> <tt class="py-name">stack</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L421"></a><tt class="py-lineno"> 421</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">tok</tt><tt class="py-op">.</tt><tt id="link-74" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-74', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">!=</tt> <tt class="py-string">"section"</tt><tt class="py-op">:</tt> </tt>
+<a name="L422"></a><tt class="py-lineno"> 422</tt>  <tt class="py-line">            <tt class="py-name">estr</tt> <tt class="py-op">=</tt> <tt class="py-string">"Headings must occur at the top level."</tt> </tt>
+<a name="L423"></a><tt class="py-lineno"> 423</tt>  <tt class="py-line">            <tt class="py-name">errors</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-75" class="py-name"><a title="epydoc.markup.epytext.StructuringError" class="py-name" href="#" onclick="return doclink('link-75', 'StructuringError', 'link-54');">StructuringError</a></tt><tt class="py-op">(</tt><tt class="py-name">estr</tt><tt class="py-op">,</tt> <tt class="py-name" [...]
+<a name="L424"></a><tt class="py-lineno"> 424</tt>  <tt class="py-line">            <tt class="py-keyword">break</tt> </tt>
+<a name="L425"></a><tt class="py-lineno"> 425</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">heading_token</tt><tt class="py-op">.</tt><tt class="py-name">level</tt><tt class="py-op">+</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">stack</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L426"></a><tt class="py-lineno"> 426</tt>  <tt class="py-line">        <tt class="py-name">estr</tt> <tt class="py-op">=</tt> <tt class="py-string">"Wrong underline character for heading."</tt> </tt>
+<a name="L427"></a><tt class="py-lineno"> 427</tt>  <tt class="py-line">        <tt class="py-name">errors</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-76" class="py-name"><a title="epydoc.markup.epytext.StructuringError" class="py-name" href="#" onclick="return doclink('link-76', 'StructuringError', 'link-54');">StructuringError</a></tt><tt class="py-op">(</tt><tt class="py-name">estr</tt><tt class="py-op">,</tt> <tt class="py-name">hea [...]
+<a name="L428"></a><tt class="py-lineno"> 428</tt>  <tt class="py-line"> </tt>
+<a name="L429"></a><tt class="py-lineno"> 429</tt>  <tt class="py-line">    <tt class="py-comment"># Pop the appropriate number of headings so we're at the</tt> </tt>
+<a name="L430"></a><tt class="py-lineno"> 430</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># correct level.</tt> </tt>
+<a name="L431"></a><tt class="py-lineno"> 431</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">stack</tt><tt class="py-op">[</tt><tt class="py-name">heading_token</tt><tt class="py-op">.</tt><tt class="py-name">level</tt><tt class="py-op">+</tt><tt class="py-number">2</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L432"></a><tt class="py-lineno"> 432</tt>  <tt class="py-line">    <tt class="py-name">indent_stack</tt><tt class="py-op">[</tt><tt class="py-name">heading_token</tt><tt class="py-op">.</tt><tt class="py-name">level</tt><tt class="py-op">+</tt><tt class="py-number">2</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L433"></a><tt class="py-lineno"> 433</tt>  <tt class="py-line"> </tt>
+<a name="L434"></a><tt class="py-lineno"> 434</tt>  <tt class="py-line">    <tt class="py-comment"># Colorize the heading</tt> </tt>
+<a name="L435"></a><tt class="py-lineno"> 435</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">head</tt> <tt class="py-op">=</tt> <tt id="link-77" class="py-name"><a title="epydoc.markup.epytext._colorize
+epydoc.markup.pyval_repr.PyvalColorizer._colorize" class="py-name" href="#" onclick="return doclink('link-77', '_colorize', 'link-71');">_colorize</a></tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt class="py-name">heading_token</tt><tt class="py-op">,</tt> <tt class="py-name">errors</tt><tt class="py-op">,</tt> <tt class="py-string">'heading'</tt><tt class="py-op">)</tt> </tt>
+<a name="L436"></a><tt class="py-lineno"> 436</tt>  <tt class="py-line"> </tt>
+<a name="L437"></a><tt class="py-lineno"> 437</tt>  <tt class="py-line">    <tt class="py-comment"># Add the section's and heading's DOM elements.</tt> </tt>
+<a name="L438"></a><tt class="py-lineno"> 438</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">sec</tt> <tt class="py-op">=</tt> <tt id="link-78" class="py-name"><a title="epydoc.markup.epytext.Element" class="py-name" href="#" onclick="return doclink('link-78', 'Element', 'link-30');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">"section"</tt><tt class="py-op">)</tt> </tt>
+<a name="L439"></a><tt class="py-lineno"> 439</tt>  <tt class="py-line">    <tt class="py-name">stack</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">children</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">sec</tt><tt class="py-op">)</tt> </tt>
+<a name="L440"></a><tt class="py-lineno"> 440</tt>  <tt class="py-line">    <tt class="py-name">stack</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">sec</tt><tt class="py-op">)</tt> </tt>
+<a name="L441"></a><tt class="py-lineno"> 441</tt>  <tt class="py-line">    <tt class="py-name">sec</tt><tt class="py-op">.</tt><tt class="py-name">children</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">head</tt><tt class="py-op">)</tt> </tt>
+<a name="L442"></a><tt class="py-lineno"> 442</tt>  <tt class="py-line">    <tt class="py-name">indent_stack</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L443"></a><tt class="py-lineno"> 443</tt>  <tt class="py-line">         </tt>
+<a name="_add_list"></a><div id="_add_list-def"><a name="L444"></a><tt class="py-lineno"> 444</tt> <a class="py-toggle" href="#" id="_add_list-toggle" onclick="return toggle('_add_list');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.epytext-module.html#_add_list">_add_list</a><tt class="py-op">(</tt><tt class="py-param">doc</tt><tt class="py-op">,</tt> <tt class="py-param">bullet_token</tt><tt class="py-op">,</tt> <tt class="py-para [...]
+</div><div id="_add_list-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_add_list-expanded"><a name="L445"></a><tt class="py-lineno"> 445</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L446"></a><tt class="py-lineno"> 446</tt>  <tt class="py-line"><tt class="py-docstring">    Add a new list item or field to the DOM tree, with the given</tt> </tt>
+<a name="L447"></a><tt class="py-lineno"> 447</tt>  <tt class="py-line"><tt class="py-docstring">    bullet or field tag.  When necessary, create the associated</tt> </tt>
+<a name="L448"></a><tt class="py-lineno"> 448</tt>  <tt class="py-line"><tt class="py-docstring">    list.</tt> </tt>
+<a name="L449"></a><tt class="py-lineno"> 449</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L450"></a><tt class="py-lineno"> 450</tt>  <tt class="py-line">    <tt class="py-comment"># Determine what type of bullet it is.</tt> </tt>
+<a name="L451"></a><tt class="py-lineno"> 451</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">bullet_token</tt><tt class="py-op">.</tt><tt class="py-name">contents</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">'-'</tt><tt class="py-op">:</tt> </tt>
+<a name="L452"></a><tt class="py-lineno"> 452</tt>  <tt class="py-line">        <tt class="py-name">list_type</tt> <tt class="py-op">=</tt> <tt class="py-string">'ulist'</tt> </tt>
+<a name="L453"></a><tt class="py-lineno"> 453</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">bullet_token</tt><tt class="py-op">.</tt><tt class="py-name">contents</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">'.'</tt><tt class="py-op">:</tt> </tt>
+<a name="L454"></a><tt class="py-lineno"> 454</tt>  <tt class="py-line">        <tt class="py-name">list_type</tt> <tt class="py-op">=</tt> <tt class="py-string">'olist'</tt> </tt>
+<a name="L455"></a><tt class="py-lineno"> 455</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">bullet_token</tt><tt class="py-op">.</tt><tt class="py-name">contents</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">':'</tt><tt class="py-op">:</tt> </tt>
+<a name="L456"></a><tt class="py-lineno"> 456</tt>  <tt class="py-line">        <tt class="py-name">list_type</tt> <tt class="py-op">=</tt> <tt class="py-string">'fieldlist'</tt> </tt>
+<a name="L457"></a><tt class="py-lineno"> 457</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L458"></a><tt class="py-lineno"> 458</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">AssertionError</tt><tt class="py-op">(</tt><tt class="py-string">'Bad Bullet: %r'</tt> <tt class="py-op">%</tt> <tt class="py-name">bullet_token</tt><tt class="py-op">.</tt><tt class="py-name">contents</tt><tt class="py-op">)</tt> </tt>
+<a name="L459"></a><tt class="py-lineno"> 459</tt>  <tt class="py-line"> </tt>
+<a name="L460"></a><tt class="py-lineno"> 460</tt>  <tt class="py-line">    <tt class="py-comment"># Is this a new list?</tt> </tt>
+<a name="L461"></a><tt class="py-lineno"> 461</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">newlist</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L462"></a><tt class="py-lineno"> 462</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">stack</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-79" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-79', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">!=</tt> <tt class="py-name">list_type</tt><tt class= [...]
+<a name="L463"></a><tt class="py-lineno"> 463</tt>  <tt class="py-line">        <tt class="py-name">newlist</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L464"></a><tt class="py-lineno"> 464</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">list_type</tt> <tt class="py-op">==</tt> <tt class="py-string">'olist'</tt> <tt class="py-keyword">and</tt> <tt class="py-name">stack</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-80" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick= [...]
+<a name="L465"></a><tt class="py-lineno"> 465</tt>  <tt class="py-line">        <tt class="py-name">old_listitem</tt> <tt class="py-op">=</tt> <tt class="py-name">stack</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">children</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L466"></a><tt class="py-lineno"> 466</tt>  <tt class="py-line">        <tt class="py-name">old_bullet</tt> <tt class="py-op">=</tt> <tt class="py-name">old_listitem</tt><tt class="py-op">.</tt><tt class="py-name">attribs</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">"bullet"</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'.'</tt><tt class="py-o [...]
+<a name="L467"></a><tt class="py-lineno"> 467</tt>  <tt class="py-line">        <tt class="py-name">new_bullet</tt> <tt class="py-op">=</tt> <tt class="py-name">bullet_token</tt><tt class="py-op">.</tt><tt class="py-name">contents</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'.'</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L468"></a><tt class="py-lineno"> 468</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">new_bullet</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">!=</tt> <tt class="py-name">old_bullet</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class=" [...]
+<a name="L469"></a><tt class="py-lineno"> 469</tt>  <tt class="py-line">            <tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">new_bullet</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">old_bullet</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt cla [...]
+<a name="L470"></a><tt class="py-lineno"> 470</tt>  <tt class="py-line">            <tt class="py-name">newlist</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L471"></a><tt class="py-lineno"> 471</tt>  <tt class="py-line"> </tt>
+<a name="L472"></a><tt class="py-lineno"> 472</tt>  <tt class="py-line">    <tt class="py-comment"># Create the new list.</tt> </tt>
+<a name="L473"></a><tt class="py-lineno"> 473</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">newlist</tt><tt class="py-op">:</tt> </tt>
+<a name="L474"></a><tt class="py-lineno"> 474</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">stack</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-81" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-81', 'tag', 'link-13');">tag</a></tt> <tt class="py-keyword">is</tt> <tt class="py-string">'fieldlist'</ [...]
+<a name="L475"></a><tt class="py-lineno"> 475</tt>  <tt class="py-line">            <tt class="py-comment"># The new list item is not a field list item (since this</tt> </tt>
+<a name="L476"></a><tt class="py-lineno"> 476</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># is a new list); but it's indented the same as the field</tt> </tt>
+<a name="L477"></a><tt class="py-lineno"> 477</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># list.  This either means that they forgot to indent the</tt> </tt>
+<a name="L478"></a><tt class="py-lineno"> 478</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># list, or they are trying to put something after the</tt> </tt>
+<a name="L479"></a><tt class="py-lineno"> 479</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># field list.  The first one seems more likely, so we'll</tt> </tt>
+<a name="L480"></a><tt class="py-lineno"> 480</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># just warn about that (to avoid confusion).</tt> </tt>
+<a name="L481"></a><tt class="py-lineno"> 481</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">estr</tt> <tt class="py-op">=</tt> <tt class="py-string">"Lists must be indented."</tt> </tt>
+<a name="L482"></a><tt class="py-lineno"> 482</tt>  <tt class="py-line">            <tt class="py-name">errors</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-82" class="py-name"><a title="epydoc.markup.epytext.StructuringError" class="py-name" href="#" onclick="return doclink('link-82', 'StructuringError', 'link-54');">StructuringError</a></tt><tt class="py-op">(</tt><tt class="py-name">estr</tt><tt class="py-op">,</tt> <tt class="py-name" [...]
+<a name="L483"></a><tt class="py-lineno"> 483</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">stack</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-83" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-83', 'tag', 'link-13');">tag</a></tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class=" [...]
+<a name="L484"></a><tt class="py-lineno"> 484</tt>  <tt class="py-line">            <tt class="py-name">stack</tt><tt class="py-op">.</tt><tt class="py-name">pop</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L485"></a><tt class="py-lineno"> 485</tt>  <tt class="py-line">            <tt class="py-name">indent_stack</tt><tt class="py-op">.</tt><tt class="py-name">pop</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L486"></a><tt class="py-lineno"> 486</tt>  <tt class="py-line"> </tt>
+<a name="L487"></a><tt class="py-lineno"> 487</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">list_type</tt> <tt class="py-op">!=</tt> <tt class="py-string">'fieldlist'</tt> <tt class="py-keyword">and</tt> <tt class="py-name">indent_stack</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None [...]
+<a name="L488"></a><tt class="py-lineno"> 488</tt>  <tt class="py-line">            <tt class="py-name">bullet_token</tt><tt class="py-op">.</tt><tt class="py-name">indent</tt> <tt class="py-op">==</tt> <tt class="py-name">indent_stack</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L489"></a><tt class="py-lineno"> 489</tt>  <tt class="py-line">            <tt class="py-comment"># Ignore this error if there's text on the same line as</tt> </tt>
+<a name="L490"></a><tt class="py-lineno"> 490</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># the comment-opening quote -- epydoc can't reliably</tt> </tt>
+<a name="L491"></a><tt class="py-lineno"> 491</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># determine the indentation for that line.</tt> </tt>
+<a name="L492"></a><tt class="py-lineno"> 492</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt class="py-name">bullet_token</tt><tt class="py-op">.</tt><tt class="py-name">startline</tt> <tt class="py-op">!=</tt> <tt class="py-number">1</tt> <tt class="py-keyword">or</tt> <tt class="py-name">bullet_token</tt><tt class="py-op">.</tt><tt class="py-name">indent</tt> <tt class="py-op">!=</tt> <tt class="py-number">0</tt><tt class="py-op">:< [...]
+<a name="L493"></a><tt class="py-lineno"> 493</tt>  <tt class="py-line">                <tt class="py-name">estr</tt> <tt class="py-op">=</tt> <tt class="py-string">"Lists must be indented."</tt> </tt>
+<a name="L494"></a><tt class="py-lineno"> 494</tt>  <tt class="py-line">                <tt class="py-name">errors</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-84" class="py-name"><a title="epydoc.markup.epytext.StructuringError" class="py-name" href="#" onclick="return doclink('link-84', 'StructuringError', 'link-54');">StructuringError</a></tt><tt class="py-op">(</tt><tt class="py-name">estr</tt><tt class="py-op">,</tt> <tt class="py-n [...]
+<a name="L495"></a><tt class="py-lineno"> 495</tt>  <tt class="py-line"> </tt>
+<a name="L496"></a><tt class="py-lineno"> 496</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">list_type</tt> <tt class="py-op">==</tt> <tt class="py-string">'fieldlist'</tt><tt class="py-op">:</tt> </tt>
+<a name="L497"></a><tt class="py-lineno"> 497</tt>  <tt class="py-line">            <tt class="py-comment"># Fieldlist should be at the top-level.</tt> </tt>
+<a name="L498"></a><tt class="py-lineno"> 498</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">for</tt> <tt class="py-name">tok</tt> <tt class="py-keyword">in</tt> <tt class="py-name">stack</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L499"></a><tt class="py-lineno"> 499</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">tok</tt><tt class="py-op">.</tt><tt id="link-85" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-85', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">!=</tt> <tt class="py-string">"section"</tt><tt class="py-op">:</tt> </tt>
+<a name="L500"></a><tt class="py-lineno"> 500</tt>  <tt class="py-line">                    <tt class="py-name">estr</tt> <tt class="py-op">=</tt> <tt class="py-string">"Fields must be at the top level."</tt> </tt>
+<a name="L501"></a><tt class="py-lineno"> 501</tt>  <tt class="py-line">                    <tt class="py-name">errors</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt> </tt>
+<a name="L502"></a><tt class="py-lineno"> 502</tt>  <tt class="py-line">                        <tt id="link-86" class="py-name"><a title="epydoc.markup.epytext.StructuringError" class="py-name" href="#" onclick="return doclink('link-86', 'StructuringError', 'link-54');">StructuringError</a></tt><tt class="py-op">(</tt><tt class="py-name">estr</tt><tt class="py-op">,</tt> <tt class="py-name">bullet_token</tt><tt class="py-op">.</tt><tt class="py-name">startline</tt><tt class="py-op">)</t [...]
+<a name="L503"></a><tt class="py-lineno"> 503</tt>  <tt class="py-line">                    <tt class="py-keyword">break</tt> </tt>
+<a name="L504"></a><tt class="py-lineno"> 504</tt>  <tt class="py-line">            <tt class="py-name">stack</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L505"></a><tt class="py-lineno"> 505</tt>  <tt class="py-line">            <tt class="py-name">indent_stack</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L506"></a><tt class="py-lineno"> 506</tt>  <tt class="py-line"> </tt>
+<a name="L507"></a><tt class="py-lineno"> 507</tt>  <tt class="py-line">        <tt class="py-comment"># Add the new list.</tt> </tt>
+<a name="L508"></a><tt class="py-lineno"> 508</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">lst</tt> <tt class="py-op">=</tt> <tt id="link-87" class="py-name"><a title="epydoc.markup.epytext.Element" class="py-name" href="#" onclick="return doclink('link-87', 'Element', 'link-30');">Element</a></tt><tt class="py-op">(</tt><tt class="py-name">list_type</tt><tt class="py-op">)</tt> </tt>
+<a name="L509"></a><tt class="py-lineno"> 509</tt>  <tt class="py-line">        <tt class="py-name">stack</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">children</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">lst</tt><tt class="py-op">)</tt> </tt>
+<a name="L510"></a><tt class="py-lineno"> 510</tt>  <tt class="py-line">        <tt class="py-name">stack</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">lst</tt><tt class="py-op">)</tt> </tt>
+<a name="L511"></a><tt class="py-lineno"> 511</tt>  <tt class="py-line">        <tt class="py-name">indent_stack</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">bullet_token</tt><tt class="py-op">.</tt><tt class="py-name">indent</tt><tt class="py-op">)</tt> </tt>
+<a name="L512"></a><tt class="py-lineno"> 512</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">list_type</tt> <tt class="py-op">==</tt> <tt class="py-string">'olist'</tt><tt class="py-op">:</tt> </tt>
+<a name="L513"></a><tt class="py-lineno"> 513</tt>  <tt class="py-line">            <tt class="py-name">start</tt> <tt class="py-op">=</tt> <tt class="py-name">bullet_token</tt><tt class="py-op">.</tt><tt class="py-name">contents</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'.'</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L514"></a><tt class="py-lineno"> 514</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">start</tt> <tt class="py-op">!=</tt> <tt class="py-string">'1'</tt><tt class="py-op">:</tt> </tt>
+<a name="L515"></a><tt class="py-lineno"> 515</tt>  <tt class="py-line">                <tt class="py-name">lst</tt><tt class="py-op">.</tt><tt class="py-name">attribs</tt><tt class="py-op">[</tt><tt class="py-string">"start"</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">start</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L516"></a><tt class="py-lineno"> 516</tt>  <tt class="py-line"> </tt>
+<a name="L517"></a><tt class="py-lineno"> 517</tt>  <tt class="py-line">    <tt class="py-comment"># Fields are treated somewhat specially: A "fieldlist"</tt> </tt>
+<a name="L518"></a><tt class="py-lineno"> 518</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># node is created to make the parsing simpler, but fields</tt> </tt>
+<a name="L519"></a><tt class="py-lineno"> 519</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># are adjoined directly into the "epytext" node, not into</tt> </tt>
+<a name="L520"></a><tt class="py-lineno"> 520</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># the "fieldlist" node.</tt> </tt>
+<a name="L521"></a><tt class="py-lineno"> 521</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">list_type</tt> <tt class="py-op">==</tt> <tt class="py-string">'fieldlist'</tt><tt class="py-op">:</tt> </tt>
+<a name="L522"></a><tt class="py-lineno"> 522</tt>  <tt class="py-line">        <tt class="py-name">li</tt> <tt class="py-op">=</tt> <tt id="link-88" class="py-name"><a title="epydoc.markup.epytext.Element" class="py-name" href="#" onclick="return doclink('link-88', 'Element', 'link-30');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">"field"</tt><tt class="py-op">)</tt> </tt>
+<a name="L523"></a><tt class="py-lineno"> 523</tt>  <tt class="py-line">        <tt class="py-name">token_words</tt> <tt class="py-op">=</tt> <tt class="py-name">bullet_token</tt><tt class="py-op">.</tt><tt class="py-name">contents</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-name">None</ [...]
+<a name="L524"></a><tt class="py-lineno"> 524</tt>  <tt class="py-line">        <tt class="py-name">tag_elt</tt> <tt class="py-op">=</tt> <tt id="link-89" class="py-name"><a title="epydoc.markup.epytext.Element" class="py-name" href="#" onclick="return doclink('link-89', 'Element', 'link-30');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">"tag"</tt><tt class="py-op">)</tt> </tt>
+<a name="L525"></a><tt class="py-lineno"> 525</tt>  <tt class="py-line">        <tt class="py-name">tag_elt</tt><tt class="py-op">.</tt><tt class="py-name">children</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">token_words</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L526"></a><tt class="py-lineno"> 526</tt>  <tt class="py-line">        <tt class="py-name">li</tt><tt class="py-op">.</tt><tt class="py-name">children</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">tag_elt</tt><tt class="py-op">)</tt> </tt>
+<a name="L527"></a><tt class="py-lineno"> 527</tt>  <tt class="py-line"> </tt>
+<a name="L528"></a><tt class="py-lineno"> 528</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">token_words</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L529"></a><tt class="py-lineno"> 529</tt>  <tt class="py-line">            <tt class="py-name">arg_elt</tt> <tt class="py-op">=</tt> <tt id="link-90" class="py-name"><a title="epydoc.markup.epytext.Element" class="py-name" href="#" onclick="return doclink('link-90', 'Element', 'link-30');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">"arg"</tt><tt class="py-op">)</tt> </tt>
+<a name="L530"></a><tt class="py-lineno"> 530</tt>  <tt class="py-line">            <tt class="py-name">arg_elt</tt><tt class="py-op">.</tt><tt class="py-name">children</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">token_words</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L531"></a><tt class="py-lineno"> 531</tt>  <tt class="py-line">            <tt class="py-name">li</tt><tt class="py-op">.</tt><tt class="py-name">children</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">arg_elt</tt><tt class="py-op">)</tt> </tt>
+<a name="L532"></a><tt class="py-lineno"> 532</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L533"></a><tt class="py-lineno"> 533</tt>  <tt class="py-line">        <tt class="py-name">li</tt> <tt class="py-op">=</tt> <tt id="link-91" class="py-name"><a title="epydoc.markup.epytext.Element" class="py-name" href="#" onclick="return doclink('link-91', 'Element', 'link-30');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">"li"</tt><tt class="py-op">)</tt> </tt>
+<a name="L534"></a><tt class="py-lineno"> 534</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">list_type</tt> <tt class="py-op">==</tt> <tt class="py-string">'olist'</tt><tt class="py-op">:</tt> </tt>
+<a name="L535"></a><tt class="py-lineno"> 535</tt>  <tt class="py-line">            <tt class="py-name">li</tt><tt class="py-op">.</tt><tt class="py-name">attribs</tt><tt class="py-op">[</tt><tt class="py-string">"bullet"</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">bullet_token</tt><tt class="py-op">.</tt><tt class="py-name">contents</tt> </tt>
+<a name="L536"></a><tt class="py-lineno"> 536</tt>  <tt class="py-line"> </tt>
+<a name="L537"></a><tt class="py-lineno"> 537</tt>  <tt class="py-line">    <tt class="py-comment"># Add the bullet.</tt> </tt>
+<a name="L538"></a><tt class="py-lineno"> 538</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">stack</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">children</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">li</tt><tt class="py-op">)</tt> </tt>
+<a name="L539"></a><tt class="py-lineno"> 539</tt>  <tt class="py-line">    <tt class="py-name">stack</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">li</tt><tt class="py-op">)</tt> </tt>
+<a name="L540"></a><tt class="py-lineno"> 540</tt>  <tt class="py-line">    <tt class="py-name">indent_stack</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L541"></a><tt class="py-lineno"> 541</tt>  <tt class="py-line"> </tt>
+<a name="L542"></a><tt class="py-lineno"> 542</tt>  <tt class="py-line"><tt class="py-comment">##################################################</tt> </tt>
+<a name="L543"></a><tt class="py-lineno"> 543</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## Tokenization</tt> </tt>
+<a name="L544"></a><tt class="py-lineno"> 544</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">##################################################</tt> </tt>
+<a name="L545"></a><tt class="py-lineno"> 545</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="Token"></a><div id="Token-def"><a name="L546"></a><tt class="py-lineno"> 546</tt> <a class="py-toggle" href="#" id="Token-toggle" onclick="return toggle('Token');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="epydoc.markup.epytext.Token-class.html">Token</a><tt class="py-op">:</tt> </tt>
+</div><div id="Token-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="Token-expanded"><a name="L547"></a><tt class="py-lineno"> 547</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L548"></a><tt class="py-lineno"> 548</tt>  <tt class="py-line"><tt class="py-docstring">    C{Token}s are an intermediate data structure used while</tt> </tt>
+<a name="L549"></a><tt class="py-lineno"> 549</tt>  <tt class="py-line"><tt class="py-docstring">    constructing the structuring DOM tree for a formatted docstring.</tt> </tt>
+<a name="L550"></a><tt class="py-lineno"> 550</tt>  <tt class="py-line"><tt class="py-docstring">    There are five types of C{Token}:</tt> </tt>
+<a name="L551"></a><tt class="py-lineno"> 551</tt>  <tt class="py-line"><tt class="py-docstring">    </tt> </tt>
+<a name="L552"></a><tt class="py-lineno"> 552</tt>  <tt class="py-line"><tt class="py-docstring">        - Paragraphs</tt> </tt>
+<a name="L553"></a><tt class="py-lineno"> 553</tt>  <tt class="py-line"><tt class="py-docstring">        - Literal blocks</tt> </tt>
+<a name="L554"></a><tt class="py-lineno"> 554</tt>  <tt class="py-line"><tt class="py-docstring">        - Doctest blocks</tt> </tt>
+<a name="L555"></a><tt class="py-lineno"> 555</tt>  <tt class="py-line"><tt class="py-docstring">        - Headings</tt> </tt>
+<a name="L556"></a><tt class="py-lineno"> 556</tt>  <tt class="py-line"><tt class="py-docstring">        - Bullets</tt> </tt>
+<a name="L557"></a><tt class="py-lineno"> 557</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L558"></a><tt class="py-lineno"> 558</tt>  <tt class="py-line"><tt class="py-docstring">    The text contained in each C{Token} is stored in the</tt> </tt>
+<a name="L559"></a><tt class="py-lineno"> 559</tt>  <tt class="py-line"><tt class="py-docstring">    C{contents} variable.  The string in this variable has been</tt> </tt>
+<a name="L560"></a><tt class="py-lineno"> 560</tt>  <tt class="py-line"><tt class="py-docstring">    normalized.  For paragraphs, this means that it has been converted </tt> </tt>
+<a name="L561"></a><tt class="py-lineno"> 561</tt>  <tt class="py-line"><tt class="py-docstring">    into a single line of text, with newline/indentation replaced by</tt> </tt>
+<a name="L562"></a><tt class="py-lineno"> 562</tt>  <tt class="py-line"><tt class="py-docstring">    single spaces.  For literal blocks and doctest blocks, this means</tt> </tt>
+<a name="L563"></a><tt class="py-lineno"> 563</tt>  <tt class="py-line"><tt class="py-docstring">    that the appropriate amount of leading whitespace has been removed </tt> </tt>
+<a name="L564"></a><tt class="py-lineno"> 564</tt>  <tt class="py-line"><tt class="py-docstring">    from each line.</tt> </tt>
+<a name="L565"></a><tt class="py-lineno"> 565</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L566"></a><tt class="py-lineno"> 566</tt>  <tt class="py-line"><tt class="py-docstring">    Each C{Token} has an indentation level associated with it,</tt> </tt>
+<a name="L567"></a><tt class="py-lineno"> 567</tt>  <tt class="py-line"><tt class="py-docstring">    stored in the C{indent} variable.  This indentation level is used</tt> </tt>
+<a name="L568"></a><tt class="py-lineno"> 568</tt>  <tt class="py-line"><tt class="py-docstring">    by the structuring procedure to assemble hierarchical blocks.</tt> </tt>
+<a name="L569"></a><tt class="py-lineno"> 569</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L570"></a><tt class="py-lineno"> 570</tt>  <tt class="py-line"><tt class="py-docstring">    @type tag: C{string}</tt> </tt>
+<a name="L571"></a><tt class="py-lineno"> 571</tt>  <tt class="py-line"><tt class="py-docstring">    @ivar tag: This C{Token}'s type.  Possible values are C{Token.PARA} </tt> </tt>
+<a name="L572"></a><tt class="py-lineno"> 572</tt>  <tt class="py-line"><tt class="py-docstring">        (paragraph), C{Token.LBLOCK} (literal block), C{Token.DTBLOCK}</tt> </tt>
+<a name="L573"></a><tt class="py-lineno"> 573</tt>  <tt class="py-line"><tt class="py-docstring">        (doctest block), C{Token.HEADINGC}, and C{Token.BULLETC}.</tt> </tt>
+<a name="L574"></a><tt class="py-lineno"> 574</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt>
+<a name="L575"></a><tt class="py-lineno"> 575</tt>  <tt class="py-line"><tt class="py-docstring">    @type startline: C{int}</tt> </tt>
+<a name="L576"></a><tt class="py-lineno"> 576</tt>  <tt class="py-line"><tt class="py-docstring">    @ivar startline: The line on which this C{Token} begins.  This </tt> </tt>
+<a name="L577"></a><tt class="py-lineno"> 577</tt>  <tt class="py-line"><tt class="py-docstring">        line number is only used for issuing errors.</tt> </tt>
+<a name="L578"></a><tt class="py-lineno"> 578</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L579"></a><tt class="py-lineno"> 579</tt>  <tt class="py-line"><tt class="py-docstring">    @type contents: C{string}</tt> </tt>
+<a name="L580"></a><tt class="py-lineno"> 580</tt>  <tt class="py-line"><tt class="py-docstring">    @ivar contents: The normalized text contained in this C{Token}.</tt> </tt>
+<a name="L581"></a><tt class="py-lineno"> 581</tt>  <tt class="py-line"><tt class="py-docstring">    </tt> </tt>
+<a name="L582"></a><tt class="py-lineno"> 582</tt>  <tt class="py-line"><tt class="py-docstring">    @type indent: C{int} or C{None}</tt> </tt>
+<a name="L583"></a><tt class="py-lineno"> 583</tt>  <tt class="py-line"><tt class="py-docstring">    @ivar indent: The indentation level of this C{Token} (in</tt> </tt>
+<a name="L584"></a><tt class="py-lineno"> 584</tt>  <tt class="py-line"><tt class="py-docstring">        number of leading spaces).  A value of C{None} indicates an</tt> </tt>
+<a name="L585"></a><tt class="py-lineno"> 585</tt>  <tt class="py-line"><tt class="py-docstring">        unknown indentation; this is used for list items and fields</tt> </tt>
+<a name="L586"></a><tt class="py-lineno"> 586</tt>  <tt class="py-line"><tt class="py-docstring">        that begin with one-line paragraphs.</tt> </tt>
+<a name="L587"></a><tt class="py-lineno"> 587</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt>
+<a name="L588"></a><tt class="py-lineno"> 588</tt>  <tt class="py-line"><tt class="py-docstring">    @type level: C{int} or C{None}</tt> </tt>
+<a name="L589"></a><tt class="py-lineno"> 589</tt>  <tt class="py-line"><tt class="py-docstring">    @ivar level: The heading-level of this C{Token} if it is a</tt> </tt>
+<a name="L590"></a><tt class="py-lineno"> 590</tt>  <tt class="py-line"><tt class="py-docstring">        heading; C{None}, otherwise.  Valid heading levels are 0, 1,</tt> </tt>
+<a name="L591"></a><tt class="py-lineno"> 591</tt>  <tt class="py-line"><tt class="py-docstring">        and 2.</tt> </tt>
+<a name="L592"></a><tt class="py-lineno"> 592</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L593"></a><tt class="py-lineno"> 593</tt>  <tt class="py-line"><tt class="py-docstring">    @type inline: C{bool}</tt> </tt>
+<a name="L594"></a><tt class="py-lineno"> 594</tt>  <tt class="py-line"><tt class="py-docstring">    @ivar inline: If True, the element is an inline level element, comparable</tt> </tt>
+<a name="L595"></a><tt class="py-lineno"> 595</tt>  <tt class="py-line"><tt class="py-docstring">        to an HTML C{<span>} tag. Else, it is a block level element, comparable</tt> </tt>
+<a name="L596"></a><tt class="py-lineno"> 596</tt>  <tt class="py-line"><tt class="py-docstring">        to an HTML C{<div>}.</tt> </tt>
+<a name="L597"></a><tt class="py-lineno"> 597</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L598"></a><tt class="py-lineno"> 598</tt>  <tt class="py-line"><tt class="py-docstring">    @type PARA: C{string}</tt> </tt>
+<a name="L599"></a><tt class="py-lineno"> 599</tt>  <tt class="py-line"><tt class="py-docstring">    @cvar PARA: The C{tag} value for paragraph C{Token}s.</tt> </tt>
+<a name="L600"></a><tt class="py-lineno"> 600</tt>  <tt class="py-line"><tt class="py-docstring">    @type LBLOCK: C{string}</tt> </tt>
+<a name="L601"></a><tt class="py-lineno"> 601</tt>  <tt class="py-line"><tt class="py-docstring">    @cvar LBLOCK: The C{tag} value for literal C{Token}s.</tt> </tt>
+<a name="L602"></a><tt class="py-lineno"> 602</tt>  <tt class="py-line"><tt class="py-docstring">    @type DTBLOCK: C{string}</tt> </tt>
+<a name="L603"></a><tt class="py-lineno"> 603</tt>  <tt class="py-line"><tt class="py-docstring">    @cvar DTBLOCK: The C{tag} value for doctest C{Token}s.</tt> </tt>
+<a name="L604"></a><tt class="py-lineno"> 604</tt>  <tt class="py-line"><tt class="py-docstring">    @type HEADING: C{string}</tt> </tt>
+<a name="L605"></a><tt class="py-lineno"> 605</tt>  <tt class="py-line"><tt class="py-docstring">    @cvar HEADING: The C{tag} value for heading C{Token}s.</tt> </tt>
+<a name="L606"></a><tt class="py-lineno"> 606</tt>  <tt class="py-line"><tt class="py-docstring">    @type BULLET: C{string}</tt> </tt>
+<a name="L607"></a><tt class="py-lineno"> 607</tt>  <tt class="py-line"><tt class="py-docstring">    @cvar BULLET: The C{tag} value for bullet C{Token}s.  This C{tag}</tt> </tt>
+<a name="L608"></a><tt class="py-lineno"> 608</tt>  <tt class="py-line"><tt class="py-docstring">        value is also used for field tag C{Token}s, since fields</tt> </tt>
+<a name="L609"></a><tt class="py-lineno"> 609</tt>  <tt class="py-line"><tt class="py-docstring">        function syntactically the same as list items.</tt> </tt>
+<a name="L610"></a><tt class="py-lineno"> 610</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L611"></a><tt class="py-lineno"> 611</tt>  <tt class="py-line">    <tt class="py-comment"># The possible token types.</tt> </tt>
+<a name="L612"></a><tt class="py-lineno"> 612</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-92" class="py-name"><a title="epydoc.markup.epytext.Token.PARA" class="py-name" href="#" onclick="return doclink('link-92', 'PARA', 'link-34');">PARA</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"para"</tt> </tt>
+<a name="L613"></a><tt class="py-lineno"> 613</tt>  <tt class="py-line">    <tt id="link-93" class="py-name"><a title="epydoc.markup.epytext.Token.LBLOCK" class="py-name" href="#" onclick="return doclink('link-93', 'LBLOCK', 'link-42');">LBLOCK</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"literalblock"</tt> </tt>
+<a name="L614"></a><tt class="py-lineno"> 614</tt>  <tt class="py-line">    <tt id="link-94" class="py-name"><a title="epydoc.markup.epytext.Token.DTBLOCK" class="py-name" href="#" onclick="return doclink('link-94', 'DTBLOCK', 'link-46');">DTBLOCK</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"doctestblock"</tt> </tt>
+<a name="L615"></a><tt class="py-lineno"> 615</tt>  <tt class="py-line">    <tt id="link-95" class="py-name"><a title="epydoc.markup.epytext.Token.HEADING" class="py-name" href="#" onclick="return doclink('link-95', 'HEADING', 'link-38');">HEADING</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"heading"</tt> </tt>
+<a name="L616"></a><tt class="py-lineno"> 616</tt>  <tt class="py-line">    <tt id="link-96" class="py-name"><a title="epydoc.markup.epytext.Token.BULLET" class="py-name" href="#" onclick="return doclink('link-96', 'BULLET', 'link-50');">BULLET</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"bullet"</tt> </tt>
+<a name="L617"></a><tt class="py-lineno"> 617</tt>  <tt class="py-line"> </tt>
+<a name="Token.__init__"></a><div id="Token.__init__-def"><a name="L618"></a><tt class="py-lineno"> 618</tt> <a class="py-toggle" href="#" id="Token.__init__-toggle" onclick="return toggle('Token.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.epytext.Token-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">tag</tt><tt class="py-op">,</tt> [...]
+<a name="L619"></a><tt class="py-lineno"> 619</tt>  <tt class="py-line">                 <tt class="py-param">inline</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Token.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Token.__init__-expanded"><a name="L620"></a><tt class="py-lineno"> 620</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L621"></a><tt class="py-lineno"> 621</tt>  <tt class="py-line"><tt class="py-docstring">        Create a new C{Token}.</tt> </tt>
+<a name="L622"></a><tt class="py-lineno"> 622</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L623"></a><tt class="py-lineno"> 623</tt>  <tt class="py-line"><tt class="py-docstring">        @param tag: The type of the new C{Token}.</tt> </tt>
+<a name="L624"></a><tt class="py-lineno"> 624</tt>  <tt class="py-line"><tt class="py-docstring">        @type tag: C{string}</tt> </tt>
+<a name="L625"></a><tt class="py-lineno"> 625</tt>  <tt class="py-line"><tt class="py-docstring">        @param startline: The line on which the new C{Token} begins.</tt> </tt>
+<a name="L626"></a><tt class="py-lineno"> 626</tt>  <tt class="py-line"><tt class="py-docstring">        @type startline: C{int}</tt> </tt>
+<a name="L627"></a><tt class="py-lineno"> 627</tt>  <tt class="py-line"><tt class="py-docstring">        @param contents: The normalized contents of the new C{Token}.</tt> </tt>
+<a name="L628"></a><tt class="py-lineno"> 628</tt>  <tt class="py-line"><tt class="py-docstring">        @type contents: C{string}</tt> </tt>
+<a name="L629"></a><tt class="py-lineno"> 629</tt>  <tt class="py-line"><tt class="py-docstring">        @param indent: The indentation of the new C{Token} (in number</tt> </tt>
+<a name="L630"></a><tt class="py-lineno"> 630</tt>  <tt class="py-line"><tt class="py-docstring">            of leading spaces).  A value of C{None} indicates an</tt> </tt>
+<a name="L631"></a><tt class="py-lineno"> 631</tt>  <tt class="py-line"><tt class="py-docstring">            unknown indentation.</tt> </tt>
+<a name="L632"></a><tt class="py-lineno"> 632</tt>  <tt class="py-line"><tt class="py-docstring">        @type indent: C{int} or C{None}</tt> </tt>
+<a name="L633"></a><tt class="py-lineno"> 633</tt>  <tt class="py-line"><tt class="py-docstring">        @param level: The heading-level of this C{Token} if it is a</tt> </tt>
+<a name="L634"></a><tt class="py-lineno"> 634</tt>  <tt class="py-line"><tt class="py-docstring">            heading; C{None}, otherwise.</tt> </tt>
+<a name="L635"></a><tt class="py-lineno"> 635</tt>  <tt class="py-line"><tt class="py-docstring">        @type level: C{int} or C{None}</tt> </tt>
+<a name="L636"></a><tt class="py-lineno"> 636</tt>  <tt class="py-line"><tt class="py-docstring">        @param inline: Is this C{Token} inline as a C{<span>}?.</tt> </tt>
+<a name="L637"></a><tt class="py-lineno"> 637</tt>  <tt class="py-line"><tt class="py-docstring">        @type inline: C{bool}</tt> </tt>
+<a name="L638"></a><tt class="py-lineno"> 638</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L639"></a><tt class="py-lineno"> 639</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-97" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-97', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">=</tt> <tt id="link-98" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-98', 'tag', 'link-13');">tag</a></tt> </tt>
+<a name="L640"></a><tt class="py-lineno"> 640</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">startline</tt> <tt class="py-op">=</tt> <tt class="py-name">startline</tt> </tt>
+<a name="L641"></a><tt class="py-lineno"> 641</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">contents</tt> <tt class="py-op">=</tt> <tt class="py-name">contents</tt> </tt>
+<a name="L642"></a><tt class="py-lineno"> 642</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">indent</tt> <tt class="py-op">=</tt> <tt class="py-name">indent</tt> </tt>
+<a name="L643"></a><tt class="py-lineno"> 643</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">level</tt> <tt class="py-op">=</tt> <tt class="py-name">level</tt> </tt>
+<a name="L644"></a><tt class="py-lineno"> 644</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">inline</tt> <tt class="py-op">=</tt> <tt class="py-name">inline</tt> </tt>
+</div><a name="L645"></a><tt class="py-lineno"> 645</tt>  <tt class="py-line"> </tt>
+<a name="Token.__repr__"></a><div id="Token.__repr__-def"><a name="L646"></a><tt class="py-lineno"> 646</tt> <a class="py-toggle" href="#" id="Token.__repr__-toggle" onclick="return toggle('Token.__repr__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.epytext.Token-class.html#__repr__">__repr__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Token.__repr__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Token.__repr__-expanded"><a name="L647"></a><tt class="py-lineno"> 647</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L648"></a><tt class="py-lineno"> 648</tt>  <tt class="py-line"><tt class="py-docstring">        @rtype: C{string}</tt> </tt>
+<a name="L649"></a><tt class="py-lineno"> 649</tt>  <tt class="py-line"><tt class="py-docstring">        @return: the formal representation of this C{Token}.</tt> </tt>
+<a name="L650"></a><tt class="py-lineno"> 650</tt>  <tt class="py-line"><tt class="py-docstring">            C{Token}s have formal representaitons of the form:: </tt> </tt>
+<a name="L651"></a><tt class="py-lineno"> 651</tt>  <tt class="py-line"><tt class="py-docstring">                <Token: para at line 12></tt> </tt>
+<a name="L652"></a><tt class="py-lineno"> 652</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L653"></a><tt class="py-lineno"> 653</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">'<Token: %s at line %s>'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-99" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-99', 'tag', 'link-13');">tag</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt [...]
+</div><a name="L654"></a><tt class="py-lineno"> 654</tt>  <tt class="py-line"> </tt>
+<a name="Token.to_dom"></a><div id="Token.to_dom-def"><a name="L655"></a><tt class="py-lineno"> 655</tt> <a class="py-toggle" href="#" id="Token.to_dom-toggle" onclick="return toggle('Token.to_dom');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.epytext.Token-class.html#to_dom">to_dom</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">doc</tt><tt class="py-op">)</tt><tt class="p [...]
+</div><div id="Token.to_dom-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Token.to_dom-expanded"><a name="L656"></a><tt class="py-lineno"> 656</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L657"></a><tt class="py-lineno"> 657</tt>  <tt class="py-line"><tt class="py-docstring">        @return: a DOM representation of this C{Token}.</tt> </tt>
+<a name="L658"></a><tt class="py-lineno"> 658</tt>  <tt class="py-line"><tt class="py-docstring">        @rtype: L{Element}</tt> </tt>
+<a name="L659"></a><tt class="py-lineno"> 659</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L660"></a><tt class="py-lineno"> 660</tt>  <tt class="py-line">        <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt id="link-100" class="py-name"><a title="epydoc.markup.epytext.Element" class="py-name" href="#" onclick="return doclink('link-100', 'Element', 'link-30');">Element</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-101" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="retu [...]
+<a name="L661"></a><tt class="py-lineno"> 661</tt>  <tt class="py-line">        <tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">children</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">contents</tt><tt class="py-op">)</tt> </tt>
+<a name="L662"></a><tt class="py-lineno"> 662</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">e</tt> </tt>
+</div></div><a name="L663"></a><tt class="py-lineno"> 663</tt>  <tt class="py-line"> </tt>
+<a name="L664"></a><tt class="py-lineno"> 664</tt>  <tt class="py-line"><tt class="py-comment"># Construct regular expressions for recognizing bullets.  These are</tt> </tt>
+<a name="L665"></a><tt class="py-lineno"> 665</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># global so they don't have to be reconstructed each time we tokenize</tt> </tt>
+<a name="L666"></a><tt class="py-lineno"> 666</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># a docstring.</tt> </tt>
+<a name="L667"></a><tt class="py-lineno"> 667</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-name">_ULIST_BULLET</tt> <tt class="py-op">=</tt> <tt class="py-string">'[-]( +|$)'</tt> </tt>
+<a name="L668"></a><tt class="py-lineno"> 668</tt>  <tt class="py-line"><tt class="py-name">_OLIST_BULLET</tt> <tt class="py-op">=</tt> <tt class="py-string">'(\d+[.])+( +|$)'</tt> </tt>
+<a name="L669"></a><tt class="py-lineno"> 669</tt>  <tt class="py-line"><tt class="py-name">_FIELD_BULLET</tt> <tt class="py-op">=</tt> <tt class="py-string">'@\w+( [^{}:\n]+)?:'</tt> </tt>
+<a name="L670"></a><tt class="py-lineno"> 670</tt>  <tt class="py-line"><tt id="link-102" class="py-name" targets="Variable epydoc.markup.epytext._BULLET_RE=epydoc.markup.epytext-module.html#_BULLET_RE"><a title="epydoc.markup.epytext._BULLET_RE" class="py-name" href="#" onclick="return doclink('link-102', '_BULLET_RE', 'link-102');">_BULLET_RE</a></tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">compile</tt><tt class="py-op">(</tt><tt  [...]
+<a name="L671"></a><tt class="py-lineno"> 671</tt>  <tt class="py-line">                        <tt class="py-name">_OLIST_BULLET</tt> <tt class="py-op">+</tt> <tt class="py-string">'|'</tt> <tt class="py-op">+</tt> </tt>
+<a name="L672"></a><tt class="py-lineno"> 672</tt>  <tt class="py-line">                        <tt class="py-name">_FIELD_BULLET</tt><tt class="py-op">)</tt> </tt>
+<a name="L673"></a><tt class="py-lineno"> 673</tt>  <tt class="py-line"><tt id="link-103" class="py-name" targets="Variable epydoc.markup.epytext._LIST_BULLET_RE=epydoc.markup.epytext-module.html#_LIST_BULLET_RE"><a title="epydoc.markup.epytext._LIST_BULLET_RE" class="py-name" href="#" onclick="return doclink('link-103', '_LIST_BULLET_RE', 'link-103');">_LIST_BULLET_RE</a></tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">compile</tt><tt [...]
+<a name="L674"></a><tt class="py-lineno"> 674</tt>  <tt class="py-line"><tt id="link-104" class="py-name" targets="Variable epydoc.markup.epytext._FIELD_BULLET_RE=epydoc.markup.epytext-module.html#_FIELD_BULLET_RE"><a title="epydoc.markup.epytext._FIELD_BULLET_RE" class="py-name" href="#" onclick="return doclink('link-104', '_FIELD_BULLET_RE', 'link-104');">_FIELD_BULLET_RE</a></tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">compile</t [...]
+<a name="L675"></a><tt class="py-lineno"> 675</tt>  <tt class="py-line"><tt class="py-keyword">del</tt> <tt class="py-name">_ULIST_BULLET</tt><tt class="py-op">,</tt> <tt class="py-name">_OLIST_BULLET</tt><tt class="py-op">,</tt> <tt class="py-name">_FIELD_BULLET</tt> </tt>
+<a name="L676"></a><tt class="py-lineno"> 676</tt>  <tt class="py-line"> </tt>
+<a name="_tokenize_doctest"></a><div id="_tokenize_doctest-def"><a name="L677"></a><tt class="py-lineno"> 677</tt> <a class="py-toggle" href="#" id="_tokenize_doctest-toggle" onclick="return toggle('_tokenize_doctest');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.epytext-module.html#_tokenize_doctest">_tokenize_doctest</a><tt class="py-op">(</tt><tt class="py-param">lines</tt><tt class="py-op">,</tt> <tt class="py-param">start</tt> [...]
+</div><div id="_tokenize_doctest-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_tokenize_doctest-expanded"><a name="L678"></a><tt class="py-lineno"> 678</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L679"></a><tt class="py-lineno"> 679</tt>  <tt class="py-line"><tt class="py-docstring">    Construct a L{Token} containing the doctest block starting at</tt> </tt>
+<a name="L680"></a><tt class="py-lineno"> 680</tt>  <tt class="py-line"><tt class="py-docstring">    C{lines[start]}, and append it to C{tokens}.  C{block_indent}</tt> </tt>
+<a name="L681"></a><tt class="py-lineno"> 681</tt>  <tt class="py-line"><tt class="py-docstring">    should be the indentation of the doctest block.  Any errors</tt> </tt>
+<a name="L682"></a><tt class="py-lineno"> 682</tt>  <tt class="py-line"><tt class="py-docstring">    generated while tokenizing the doctest block will be appended to</tt> </tt>
+<a name="L683"></a><tt class="py-lineno"> 683</tt>  <tt class="py-line"><tt class="py-docstring">    C{errors}.</tt> </tt>
+<a name="L684"></a><tt class="py-lineno"> 684</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L685"></a><tt class="py-lineno"> 685</tt>  <tt class="py-line"><tt class="py-docstring">    @param lines: The list of lines to be tokenized</tt> </tt>
+<a name="L686"></a><tt class="py-lineno"> 686</tt>  <tt class="py-line"><tt class="py-docstring">    @param start: The index into C{lines} of the first line of the</tt> </tt>
+<a name="L687"></a><tt class="py-lineno"> 687</tt>  <tt class="py-line"><tt class="py-docstring">        doctest block to be tokenized.</tt> </tt>
+<a name="L688"></a><tt class="py-lineno"> 688</tt>  <tt class="py-line"><tt class="py-docstring">    @param block_indent: The indentation of C{lines[start]}.  This is</tt> </tt>
+<a name="L689"></a><tt class="py-lineno"> 689</tt>  <tt class="py-line"><tt class="py-docstring">        the indentation of the doctest block.</tt> </tt>
+<a name="L690"></a><tt class="py-lineno"> 690</tt>  <tt class="py-line"><tt class="py-docstring">    @param errors: A list where any errors generated during parsing</tt> </tt>
+<a name="L691"></a><tt class="py-lineno"> 691</tt>  <tt class="py-line"><tt class="py-docstring">        will be stored.  If no list is specified, then errors will </tt> </tt>
+<a name="L692"></a><tt class="py-lineno"> 692</tt>  <tt class="py-line"><tt class="py-docstring">        generate exceptions.</tt> </tt>
+<a name="L693"></a><tt class="py-lineno"> 693</tt>  <tt class="py-line"><tt class="py-docstring">    @return: The line number of the first line following the doctest</tt> </tt>
+<a name="L694"></a><tt class="py-lineno"> 694</tt>  <tt class="py-line"><tt class="py-docstring">        block.</tt> </tt>
+<a name="L695"></a><tt class="py-lineno"> 695</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt>
+<a name="L696"></a><tt class="py-lineno"> 696</tt>  <tt class="py-line"><tt class="py-docstring">    @type lines: C{list} of C{string}</tt> </tt>
+<a name="L697"></a><tt class="py-lineno"> 697</tt>  <tt class="py-line"><tt class="py-docstring">    @type start: C{int}</tt> </tt>
+<a name="L698"></a><tt class="py-lineno"> 698</tt>  <tt class="py-line"><tt class="py-docstring">    @type block_indent: C{int}</tt> </tt>
+<a name="L699"></a><tt class="py-lineno"> 699</tt>  <tt class="py-line"><tt class="py-docstring">    @type tokens: C{list} of L{Token}</tt> </tt>
+<a name="L700"></a><tt class="py-lineno"> 700</tt>  <tt class="py-line"><tt class="py-docstring">    @type errors: C{list} of L{ParseError}</tt> </tt>
+<a name="L701"></a><tt class="py-lineno"> 701</tt>  <tt class="py-line"><tt class="py-docstring">    @rtype: C{int}</tt> </tt>
+<a name="L702"></a><tt class="py-lineno"> 702</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L703"></a><tt class="py-lineno"> 703</tt>  <tt class="py-line">    <tt class="py-comment"># If they dedent past block_indent, keep track of the minimum</tt> </tt>
+<a name="L704"></a><tt class="py-lineno"> 704</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># indentation.  This is used when removing leading indentation</tt> </tt>
+<a name="L705"></a><tt class="py-lineno"> 705</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># from the lines of the doctest block.</tt> </tt>
+<a name="L706"></a><tt class="py-lineno"> 706</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">min_indent</tt> <tt class="py-op">=</tt> <tt class="py-name">block_indent</tt> </tt>
+<a name="L707"></a><tt class="py-lineno"> 707</tt>  <tt class="py-line"> </tt>
+<a name="L708"></a><tt class="py-lineno"> 708</tt>  <tt class="py-line">    <tt id="link-105" class="py-name" targets="Method epydoc.markup.ParseError.linenum()=epydoc.markup.ParseError-class.html#linenum"><a title="epydoc.markup.ParseError.linenum" class="py-name" href="#" onclick="return doclink('link-105', 'linenum', 'link-105');">linenum</a></tt> <tt class="py-op">=</tt> <tt class="py-name">start</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt> </tt>
+<a name="L709"></a><tt class="py-lineno"> 709</tt>  <tt class="py-line">    <tt class="py-keyword">while</tt> <tt id="link-106" class="py-name"><a title="epydoc.markup.ParseError.linenum" class="py-name" href="#" onclick="return doclink('link-106', 'linenum', 'link-105');">linenum</a></tt> <tt class="py-op"><</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">lines</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L710"></a><tt class="py-lineno"> 710</tt>  <tt class="py-line">        <tt class="py-comment"># Find the indentation of this line.</tt> </tt>
+<a name="L711"></a><tt class="py-lineno"> 711</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">line</tt> <tt class="py-op">=</tt> <tt class="py-name">lines</tt><tt class="py-op">[</tt><tt id="link-107" class="py-name"><a title="epydoc.markup.ParseError.linenum" class="py-name" href="#" onclick="return doclink('link-107', 'linenum', 'link-105');">linenum</a></tt><tt class="py-op">]</tt> </tt>
+<a name="L712"></a><tt class="py-lineno"> 712</tt>  <tt class="py-line">        <tt class="py-name">indent</tt> <tt class="py-op">=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">line</tt><tt class="py-op">)</tt> <tt class="py-op">-</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">line</tt><tt class="py-op">.</tt><tt class="py-name">lstrip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L713"></a><tt class="py-lineno"> 713</tt>  <tt class="py-line">         </tt>
+<a name="L714"></a><tt class="py-lineno"> 714</tt>  <tt class="py-line">        <tt class="py-comment"># A blank line ends doctest block.</tt> </tt>
+<a name="L715"></a><tt class="py-lineno"> 715</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">indent</tt> <tt class="py-op">==</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">line</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-keyword">break</tt> </tt>
+<a name="L716"></a><tt class="py-lineno"> 716</tt>  <tt class="py-line">         </tt>
+<a name="L717"></a><tt class="py-lineno"> 717</tt>  <tt class="py-line">        <tt class="py-comment"># A Dedent past block_indent is an error.</tt> </tt>
+<a name="L718"></a><tt class="py-lineno"> 718</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">indent</tt> <tt class="py-op"><</tt> <tt class="py-name">block_indent</tt><tt class="py-op">:</tt> </tt>
+<a name="L719"></a><tt class="py-lineno"> 719</tt>  <tt class="py-line">            <tt class="py-name">min_indent</tt> <tt class="py-op">=</tt> <tt class="py-name">min</tt><tt class="py-op">(</tt><tt class="py-name">min_indent</tt><tt class="py-op">,</tt> <tt class="py-name">indent</tt><tt class="py-op">)</tt> </tt>
+<a name="L720"></a><tt class="py-lineno"> 720</tt>  <tt class="py-line">            <tt class="py-name">estr</tt> <tt class="py-op">=</tt> <tt class="py-string">'Improper doctest block indentation.'</tt> </tt>
+<a name="L721"></a><tt class="py-lineno"> 721</tt>  <tt class="py-line">            <tt class="py-name">errors</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-108" class="py-name" targets="Class epydoc.markup.epytext.TokenizationError=epydoc.markup.epytext.TokenizationError-class.html"><a title="epydoc.markup.epytext.TokenizationError" class="py-name" href="#" onclick="return doclink('link-108', 'TokenizationError', 'link-108');">Tokenizati [...]
+<a name="L722"></a><tt class="py-lineno"> 722</tt>  <tt class="py-line"> </tt>
+<a name="L723"></a><tt class="py-lineno"> 723</tt>  <tt class="py-line">        <tt class="py-comment"># Go on to the next line.</tt> </tt>
+<a name="L724"></a><tt class="py-lineno"> 724</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt id="link-110" class="py-name"><a title="epydoc.markup.ParseError.linenum" class="py-name" href="#" onclick="return doclink('link-110', 'linenum', 'link-105');">linenum</a></tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L725"></a><tt class="py-lineno"> 725</tt>  <tt class="py-line"> </tt>
+<a name="L726"></a><tt class="py-lineno"> 726</tt>  <tt class="py-line">    <tt class="py-comment"># Add the token, and return the linenum after the token ends.</tt> </tt>
+<a name="L727"></a><tt class="py-lineno"> 727</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">contents</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">line</tt><tt class="py-op">[</tt><tt class="py-name">min_indent</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> <tt class="py-keyword">for</tt> <tt class="py-name">line</tt> <tt class="py-keyword">in</tt> <tt class="py-name">lines</tt><tt class="py-op">[</tt><tt class="py-name">s [...]
+<a name="L728"></a><tt class="py-lineno"> 728</tt>  <tt class="py-line">    <tt class="py-name">contents</tt> <tt class="py-op">=</tt> <tt class="py-string">'\n'</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">contents</tt><tt class="py-op">)</tt> </tt>
+<a name="L729"></a><tt class="py-lineno"> 729</tt>  <tt class="py-line">    <tt class="py-name">tokens</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-112" class="py-name"><a title="epydoc.markup.epytext.Token" class="py-name" href="#" onclick="return doclink('link-112', 'Token', 'link-33');">Token</a></tt><tt class="py-op">(</tt><tt id="link-113" class="py-name"><a title="epydoc.markup.epytext.Token" class="py-name" href="#" onclick="retur [...]
+<a name="L730"></a><tt class="py-lineno"> 730</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-115" class="py-name"><a title="epydoc.markup.ParseError.linenum" class="py-name" href="#" onclick="return doclink('link-115', 'linenum', 'link-105');">linenum</a></tt> </tt>
+</div><a name="L731"></a><tt class="py-lineno"> 731</tt>  <tt class="py-line"> </tt>
+<a name="_tokenize_literal"></a><div id="_tokenize_literal-def"><a name="L732"></a><tt class="py-lineno"> 732</tt> <a class="py-toggle" href="#" id="_tokenize_literal-toggle" onclick="return toggle('_tokenize_literal');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.epytext-module.html#_tokenize_literal">_tokenize_literal</a><tt class="py-op">(</tt><tt class="py-param">lines</tt><tt class="py-op">,</tt> <tt class="py-param">start</tt> [...]
+</div><div id="_tokenize_literal-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_tokenize_literal-expanded"><a name="L733"></a><tt class="py-lineno"> 733</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L734"></a><tt class="py-lineno"> 734</tt>  <tt class="py-line"><tt class="py-docstring">    Construct a L{Token} containing the literal block starting at</tt> </tt>
+<a name="L735"></a><tt class="py-lineno"> 735</tt>  <tt class="py-line"><tt class="py-docstring">    C{lines[start]}, and append it to C{tokens}.  C{block_indent}</tt> </tt>
+<a name="L736"></a><tt class="py-lineno"> 736</tt>  <tt class="py-line"><tt class="py-docstring">    should be the indentation of the literal block.  Any errors</tt> </tt>
+<a name="L737"></a><tt class="py-lineno"> 737</tt>  <tt class="py-line"><tt class="py-docstring">    generated while tokenizing the literal block will be appended to</tt> </tt>
+<a name="L738"></a><tt class="py-lineno"> 738</tt>  <tt class="py-line"><tt class="py-docstring">    C{errors}.</tt> </tt>
+<a name="L739"></a><tt class="py-lineno"> 739</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L740"></a><tt class="py-lineno"> 740</tt>  <tt class="py-line"><tt class="py-docstring">    @param lines: The list of lines to be tokenized</tt> </tt>
+<a name="L741"></a><tt class="py-lineno"> 741</tt>  <tt class="py-line"><tt class="py-docstring">    @param start: The index into C{lines} of the first line of the</tt> </tt>
+<a name="L742"></a><tt class="py-lineno"> 742</tt>  <tt class="py-line"><tt class="py-docstring">        literal block to be tokenized.</tt> </tt>
+<a name="L743"></a><tt class="py-lineno"> 743</tt>  <tt class="py-line"><tt class="py-docstring">    @param block_indent: The indentation of C{lines[start]}.  This is</tt> </tt>
+<a name="L744"></a><tt class="py-lineno"> 744</tt>  <tt class="py-line"><tt class="py-docstring">        the indentation of the literal block.</tt> </tt>
+<a name="L745"></a><tt class="py-lineno"> 745</tt>  <tt class="py-line"><tt class="py-docstring">    @param errors: A list of the errors generated by parsing.  Any</tt> </tt>
+<a name="L746"></a><tt class="py-lineno"> 746</tt>  <tt class="py-line"><tt class="py-docstring">        new errors generated while will tokenizing this paragraph</tt> </tt>
+<a name="L747"></a><tt class="py-lineno"> 747</tt>  <tt class="py-line"><tt class="py-docstring">        will be appended to this list.</tt> </tt>
+<a name="L748"></a><tt class="py-lineno"> 748</tt>  <tt class="py-line"><tt class="py-docstring">    @return: The line number of the first line following the literal</tt> </tt>
+<a name="L749"></a><tt class="py-lineno"> 749</tt>  <tt class="py-line"><tt class="py-docstring">        block. </tt> </tt>
+<a name="L750"></a><tt class="py-lineno"> 750</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt>
+<a name="L751"></a><tt class="py-lineno"> 751</tt>  <tt class="py-line"><tt class="py-docstring">    @type lines: C{list} of C{string}</tt> </tt>
+<a name="L752"></a><tt class="py-lineno"> 752</tt>  <tt class="py-line"><tt class="py-docstring">    @type start: C{int}</tt> </tt>
+<a name="L753"></a><tt class="py-lineno"> 753</tt>  <tt class="py-line"><tt class="py-docstring">    @type block_indent: C{int}</tt> </tt>
+<a name="L754"></a><tt class="py-lineno"> 754</tt>  <tt class="py-line"><tt class="py-docstring">    @type tokens: C{list} of L{Token}</tt> </tt>
+<a name="L755"></a><tt class="py-lineno"> 755</tt>  <tt class="py-line"><tt class="py-docstring">    @type errors: C{list} of L{ParseError}</tt> </tt>
+<a name="L756"></a><tt class="py-lineno"> 756</tt>  <tt class="py-line"><tt class="py-docstring">    @rtype: C{int}</tt> </tt>
+<a name="L757"></a><tt class="py-lineno"> 757</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L758"></a><tt class="py-lineno"> 758</tt>  <tt class="py-line">    <tt id="link-116" class="py-name"><a title="epydoc.markup.ParseError.linenum" class="py-name" href="#" onclick="return doclink('link-116', 'linenum', 'link-105');">linenum</a></tt> <tt class="py-op">=</tt> <tt class="py-name">start</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt> </tt>
+<a name="L759"></a><tt class="py-lineno"> 759</tt>  <tt class="py-line">    <tt class="py-keyword">while</tt> <tt id="link-117" class="py-name"><a title="epydoc.markup.ParseError.linenum" class="py-name" href="#" onclick="return doclink('link-117', 'linenum', 'link-105');">linenum</a></tt> <tt class="py-op"><</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">lines</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L760"></a><tt class="py-lineno"> 760</tt>  <tt class="py-line">        <tt class="py-comment"># Find the indentation of this line.</tt> </tt>
+<a name="L761"></a><tt class="py-lineno"> 761</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">line</tt> <tt class="py-op">=</tt> <tt class="py-name">lines</tt><tt class="py-op">[</tt><tt id="link-118" class="py-name"><a title="epydoc.markup.ParseError.linenum" class="py-name" href="#" onclick="return doclink('link-118', 'linenum', 'link-105');">linenum</a></tt><tt class="py-op">]</tt> </tt>
+<a name="L762"></a><tt class="py-lineno"> 762</tt>  <tt class="py-line">        <tt class="py-name">indent</tt> <tt class="py-op">=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">line</tt><tt class="py-op">)</tt> <tt class="py-op">-</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">line</tt><tt class="py-op">.</tt><tt class="py-name">lstrip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L763"></a><tt class="py-lineno"> 763</tt>  <tt class="py-line"> </tt>
+<a name="L764"></a><tt class="py-lineno"> 764</tt>  <tt class="py-line">        <tt class="py-comment"># A Dedent to block_indent ends the literal block.</tt> </tt>
+<a name="L765"></a><tt class="py-lineno"> 765</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># (Ignore blank likes, though)</tt> </tt>
+<a name="L766"></a><tt class="py-lineno"> 766</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">line</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-name">indent</tt> <tt class="py-keyword">and</tt> <tt class="py-name">indent</tt> <tt class="py-op"><=</tt> <tt class="py-name">block_indent</tt><tt class="py-op">:</tt> </tt>
+<a name="L767"></a><tt class="py-lineno"> 767</tt>  <tt class="py-line">            <tt class="py-keyword">break</tt> </tt>
+<a name="L768"></a><tt class="py-lineno"> 768</tt>  <tt class="py-line">         </tt>
+<a name="L769"></a><tt class="py-lineno"> 769</tt>  <tt class="py-line">        <tt class="py-comment"># Go on to the next line.</tt> </tt>
+<a name="L770"></a><tt class="py-lineno"> 770</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt id="link-119" class="py-name"><a title="epydoc.markup.ParseError.linenum" class="py-name" href="#" onclick="return doclink('link-119', 'linenum', 'link-105');">linenum</a></tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L771"></a><tt class="py-lineno"> 771</tt>  <tt class="py-line"> </tt>
+<a name="L772"></a><tt class="py-lineno"> 772</tt>  <tt class="py-line">    <tt class="py-comment"># Add the token, and return the linenum after the token ends.</tt> </tt>
+<a name="L773"></a><tt class="py-lineno"> 773</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">contents</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">line</tt><tt class="py-op">[</tt><tt class="py-name">block_indent</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> <tt class="py-keyword">for</tt> <tt class="py-name">line</tt> <tt class="py-keyword">in</tt> <tt class="py-name">l [...]
+<a name="L774"></a><tt class="py-lineno"> 774</tt>  <tt class="py-line">    <tt class="py-name">contents</tt> <tt class="py-op">=</tt> <tt class="py-string">'\n'</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">contents</tt><tt class="py-op">)</tt> </tt>
+<a name="L775"></a><tt class="py-lineno"> 775</tt>  <tt class="py-line">    <tt class="py-name">contents</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt class="py-string">'(\A[ \n]*\n)|(\n[ \n]*\Z)'</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">,</tt> <tt class="py-name">contents</tt><tt class="py-op">)</tt> </tt>
+<a name="L776"></a><tt class="py-lineno"> 776</tt>  <tt class="py-line">    <tt class="py-name">tokens</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-121" class="py-name"><a title="epydoc.markup.epytext.Token" class="py-name" href="#" onclick="return doclink('link-121', 'Token', 'link-33');">Token</a></tt><tt class="py-op">(</tt><tt id="link-122" class="py-name"><a title="epydoc.markup.epytext.Token" class="py-name" href="#" onclick="retur [...]
+<a name="L777"></a><tt class="py-lineno"> 777</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-124" class="py-name"><a title="epydoc.markup.ParseError.linenum" class="py-name" href="#" onclick="return doclink('link-124', 'linenum', 'link-105');">linenum</a></tt> </tt>
+</div><a name="L778"></a><tt class="py-lineno"> 778</tt>  <tt class="py-line"> </tt>
+<a name="_tokenize_listart"></a><div id="_tokenize_listart-def"><a name="L779"></a><tt class="py-lineno"> 779</tt> <a class="py-toggle" href="#" id="_tokenize_listart-toggle" onclick="return toggle('_tokenize_listart');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.epytext-module.html#_tokenize_listart">_tokenize_listart</a><tt class="py-op">(</tt><tt class="py-param">lines</tt><tt class="py-op">,</tt> <tt class="py-param">start</tt> [...]
+</div><div id="_tokenize_listart-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_tokenize_listart-expanded"><a name="L780"></a><tt class="py-lineno"> 780</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L781"></a><tt class="py-lineno"> 781</tt>  <tt class="py-line"><tt class="py-docstring">    Construct L{Token}s for the bullet and the first paragraph of the</tt> </tt>
+<a name="L782"></a><tt class="py-lineno"> 782</tt>  <tt class="py-line"><tt class="py-docstring">    list item (or field) starting at C{lines[start]}, and append them</tt> </tt>
+<a name="L783"></a><tt class="py-lineno"> 783</tt>  <tt class="py-line"><tt class="py-docstring">    to C{tokens}.  C{bullet_indent} should be the indentation of the</tt> </tt>
+<a name="L784"></a><tt class="py-lineno"> 784</tt>  <tt class="py-line"><tt class="py-docstring">    list item.  Any errors generated while tokenizing will be</tt> </tt>
+<a name="L785"></a><tt class="py-lineno"> 785</tt>  <tt class="py-line"><tt class="py-docstring">    appended to C{errors}.</tt> </tt>
+<a name="L786"></a><tt class="py-lineno"> 786</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L787"></a><tt class="py-lineno"> 787</tt>  <tt class="py-line"><tt class="py-docstring">    @param lines: The list of lines to be tokenized</tt> </tt>
+<a name="L788"></a><tt class="py-lineno"> 788</tt>  <tt class="py-line"><tt class="py-docstring">    @param start: The index into C{lines} of the first line of the</tt> </tt>
+<a name="L789"></a><tt class="py-lineno"> 789</tt>  <tt class="py-line"><tt class="py-docstring">        list item to be tokenized.</tt> </tt>
+<a name="L790"></a><tt class="py-lineno"> 790</tt>  <tt class="py-line"><tt class="py-docstring">    @param bullet_indent: The indentation of C{lines[start]}.  This is</tt> </tt>
+<a name="L791"></a><tt class="py-lineno"> 791</tt>  <tt class="py-line"><tt class="py-docstring">        the indentation of the list item.</tt> </tt>
+<a name="L792"></a><tt class="py-lineno"> 792</tt>  <tt class="py-line"><tt class="py-docstring">    @param errors: A list of the errors generated by parsing.  Any</tt> </tt>
+<a name="L793"></a><tt class="py-lineno"> 793</tt>  <tt class="py-line"><tt class="py-docstring">        new errors generated while will tokenizing this paragraph</tt> </tt>
+<a name="L794"></a><tt class="py-lineno"> 794</tt>  <tt class="py-line"><tt class="py-docstring">        will be appended to this list.</tt> </tt>
+<a name="L795"></a><tt class="py-lineno"> 795</tt>  <tt class="py-line"><tt class="py-docstring">    @return: The line number of the first line following the list</tt> </tt>
+<a name="L796"></a><tt class="py-lineno"> 796</tt>  <tt class="py-line"><tt class="py-docstring">        item's first paragraph.</tt> </tt>
+<a name="L797"></a><tt class="py-lineno"> 797</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt>
+<a name="L798"></a><tt class="py-lineno"> 798</tt>  <tt class="py-line"><tt class="py-docstring">    @type lines: C{list} of C{string}</tt> </tt>
+<a name="L799"></a><tt class="py-lineno"> 799</tt>  <tt class="py-line"><tt class="py-docstring">    @type start: C{int}</tt> </tt>
+<a name="L800"></a><tt class="py-lineno"> 800</tt>  <tt class="py-line"><tt class="py-docstring">    @type bullet_indent: C{int}</tt> </tt>
+<a name="L801"></a><tt class="py-lineno"> 801</tt>  <tt class="py-line"><tt class="py-docstring">    @type tokens: C{list} of L{Token}</tt> </tt>
+<a name="L802"></a><tt class="py-lineno"> 802</tt>  <tt class="py-line"><tt class="py-docstring">    @type errors: C{list} of L{ParseError}</tt> </tt>
+<a name="L803"></a><tt class="py-lineno"> 803</tt>  <tt class="py-line"><tt class="py-docstring">    @rtype: C{int}</tt> </tt>
+<a name="L804"></a><tt class="py-lineno"> 804</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L805"></a><tt class="py-lineno"> 805</tt>  <tt class="py-line">    <tt id="link-125" class="py-name"><a title="epydoc.markup.ParseError.linenum" class="py-name" href="#" onclick="return doclink('link-125', 'linenum', 'link-105');">linenum</a></tt> <tt class="py-op">=</tt> <tt class="py-name">start</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt> </tt>
+<a name="L806"></a><tt class="py-lineno"> 806</tt>  <tt class="py-line">    <tt class="py-name">para_indent</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L807"></a><tt class="py-lineno"> 807</tt>  <tt class="py-line">    <tt class="py-name">doublecolon</tt> <tt class="py-op">=</tt> <tt class="py-name">lines</tt><tt class="py-op">[</tt><tt class="py-name">start</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">rstrip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">2</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> <tt class="py-op"> [...]
+<a name="L808"></a><tt class="py-lineno"> 808</tt>  <tt class="py-line"> </tt>
+<a name="L809"></a><tt class="py-lineno"> 809</tt>  <tt class="py-line">    <tt class="py-comment"># Get the contents of the bullet.</tt> </tt>
+<a name="L810"></a><tt class="py-lineno"> 810</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">para_start</tt> <tt class="py-op">=</tt> <tt id="link-126" class="py-name"><a title="epydoc.markup.epytext._BULLET_RE" class="py-name" href="#" onclick="return doclink('link-126', '_BULLET_RE', 'link-102');">_BULLET_RE</a></tt><tt class="py-op">.</tt><tt class="py-name">match</tt><tt class="py-op">(</tt><tt class="py-name">lines</tt><tt class="py-op">[</tt><tt class [...]
+<a name="L811"></a><tt class="py-lineno"> 811</tt>  <tt class="py-line">    <tt class="py-name">bcontents</tt> <tt class="py-op">=</tt> <tt class="py-name">lines</tt><tt class="py-op">[</tt><tt class="py-name">start</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">bullet_indent</tt><tt class="py-op">:</tt><tt class="py-name">para_start</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">strip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L812"></a><tt class="py-lineno"> 812</tt>  <tt class="py-line">     </tt>
+<a name="L813"></a><tt class="py-lineno"> 813</tt>  <tt class="py-line">    <tt class="py-keyword">while</tt> <tt id="link-127" class="py-name"><a title="epydoc.markup.ParseError.linenum" class="py-name" href="#" onclick="return doclink('link-127', 'linenum', 'link-105');">linenum</a></tt> <tt class="py-op"><</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">lines</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L814"></a><tt class="py-lineno"> 814</tt>  <tt class="py-line">        <tt class="py-comment"># Find the indentation of this line.</tt> </tt>
+<a name="L815"></a><tt class="py-lineno"> 815</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">line</tt> <tt class="py-op">=</tt> <tt class="py-name">lines</tt><tt class="py-op">[</tt><tt id="link-128" class="py-name"><a title="epydoc.markup.ParseError.linenum" class="py-name" href="#" onclick="return doclink('link-128', 'linenum', 'link-105');">linenum</a></tt><tt class="py-op">]</tt> </tt>
+<a name="L816"></a><tt class="py-lineno"> 816</tt>  <tt class="py-line">        <tt class="py-name">indent</tt> <tt class="py-op">=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">line</tt><tt class="py-op">)</tt> <tt class="py-op">-</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">line</tt><tt class="py-op">.</tt><tt class="py-name">lstrip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L817"></a><tt class="py-lineno"> 817</tt>  <tt class="py-line"> </tt>
+<a name="L818"></a><tt class="py-lineno"> 818</tt>  <tt class="py-line">        <tt class="py-comment"># "::" markers end paragraphs.</tt> </tt>
+<a name="L819"></a><tt class="py-lineno"> 819</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">doublecolon</tt><tt class="py-op">:</tt> <tt class="py-keyword">break</tt> </tt>
+<a name="L820"></a><tt class="py-lineno"> 820</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">line</tt><tt class="py-op">.</tt><tt class="py-name">rstrip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">2</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">'::'</tt><tt class="py-op">:</tt> <tt class="py-name">doublecolon</tt> <tt c [...]
+<a name="L821"></a><tt class="py-lineno"> 821</tt>  <tt class="py-line"> </tt>
+<a name="L822"></a><tt class="py-lineno"> 822</tt>  <tt class="py-line">        <tt class="py-comment"># A blank line ends the token</tt> </tt>
+<a name="L823"></a><tt class="py-lineno"> 823</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">indent</tt> <tt class="py-op">==</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">line</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-keyword">break</tt> </tt>
+<a name="L824"></a><tt class="py-lineno"> 824</tt>  <tt class="py-line"> </tt>
+<a name="L825"></a><tt class="py-lineno"> 825</tt>  <tt class="py-line">        <tt class="py-comment"># Dedenting past bullet_indent ends the list item.</tt> </tt>
+<a name="L826"></a><tt class="py-lineno"> 826</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">indent</tt> <tt class="py-op"><</tt> <tt class="py-name">bullet_indent</tt><tt class="py-op">:</tt> <tt class="py-keyword">break</tt> </tt>
+<a name="L827"></a><tt class="py-lineno"> 827</tt>  <tt class="py-line">         </tt>
+<a name="L828"></a><tt class="py-lineno"> 828</tt>  <tt class="py-line">        <tt class="py-comment"># A line beginning with a bullet ends the token.</tt> </tt>
+<a name="L829"></a><tt class="py-lineno"> 829</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt id="link-129" class="py-name"><a title="epydoc.markup.epytext._BULLET_RE" class="py-name" href="#" onclick="return doclink('link-129', '_BULLET_RE', 'link-102');">_BULLET_RE</a></tt><tt class="py-op">.</tt><tt class="py-name">match</tt><tt class="py-op">(</tt><tt class="py-name">line</tt><tt class="py-op">,</tt> <tt class="py-name">indent</tt><tt  [...]
+<a name="L830"></a><tt class="py-lineno"> 830</tt>  <tt class="py-line">         </tt>
+<a name="L831"></a><tt class="py-lineno"> 831</tt>  <tt class="py-line">        <tt class="py-comment"># If this is the second line, set the paragraph indentation, or </tt> </tt>
+<a name="L832"></a><tt class="py-lineno"> 832</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># end the token, as appropriate.</tt> </tt>
+<a name="L833"></a><tt class="py-lineno"> 833</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">para_indent</tt> <tt class="py-op">==</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> <tt class="py-name">para_indent</tt> <tt class="py-op">=</tt> <tt class="py-name">indent</tt> </tt>
+<a name="L834"></a><tt class="py-lineno"> 834</tt>  <tt class="py-line"> </tt>
+<a name="L835"></a><tt class="py-lineno"> 835</tt>  <tt class="py-line">        <tt class="py-comment"># A change in indentation ends the token</tt> </tt>
+<a name="L836"></a><tt class="py-lineno"> 836</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">indent</tt> <tt class="py-op">!=</tt> <tt class="py-name">para_indent</tt><tt class="py-op">:</tt> <tt class="py-keyword">break</tt> </tt>
+<a name="L837"></a><tt class="py-lineno"> 837</tt>  <tt class="py-line"> </tt>
+<a name="L838"></a><tt class="py-lineno"> 838</tt>  <tt class="py-line">        <tt class="py-comment"># Go on to the next line.</tt> </tt>
+<a name="L839"></a><tt class="py-lineno"> 839</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt id="link-130" class="py-name"><a title="epydoc.markup.ParseError.linenum" class="py-name" href="#" onclick="return doclink('link-130', 'linenum', 'link-105');">linenum</a></tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L840"></a><tt class="py-lineno"> 840</tt>  <tt class="py-line"> </tt>
+<a name="L841"></a><tt class="py-lineno"> 841</tt>  <tt class="py-line">    <tt class="py-comment"># Add the bullet token.</tt> </tt>
+<a name="L842"></a><tt class="py-lineno"> 842</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">tokens</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-131" class="py-name"><a title="epydoc.markup.epytext.Token" class="py-name" href="#" onclick="return doclink('link-131', 'Token', 'link-33');">Token</a></tt><tt class="py-op">(</tt><tt id="link-132" class="py-name"><a title="epydoc.markup.epytext.Token" class="py-n [...]
+<a name="L843"></a><tt class="py-lineno"> 843</tt>  <tt class="py-line">                        <tt class="py-name">inline</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L844"></a><tt class="py-lineno"> 844</tt>  <tt class="py-line"> </tt>
+<a name="L845"></a><tt class="py-lineno"> 845</tt>  <tt class="py-line">    <tt class="py-comment"># Add the paragraph token.</tt> </tt>
+<a name="L846"></a><tt class="py-lineno"> 846</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">pcontents</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">lines</tt><tt class="py-op">[</tt><tt class="py-name">start</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">para_start</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">strip</tt><tt class=" [...]
+<a name="L847"></a><tt class="py-lineno"> 847</tt>  <tt class="py-line">                 <tt class="py-op">[</tt><tt class="py-name">line</tt><tt class="py-op">.</tt><tt class="py-name">strip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">line</tt> <tt class="py-keyword">in</tt> <tt class="py-name">lines</tt><tt class="py-op">[</tt><tt class="py-name">start</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op"> [...]
+<a name="L848"></a><tt class="py-lineno"> 848</tt>  <tt class="py-line">    <tt class="py-name">pcontents</tt> <tt class="py-op">=</tt> <tt class="py-string">' '</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">pcontents</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">strip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L849"></a><tt class="py-lineno"> 849</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">pcontents</tt><tt class="py-op">:</tt> </tt>
+<a name="L850"></a><tt class="py-lineno"> 850</tt>  <tt class="py-line">        <tt class="py-name">tokens</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-135" class="py-name"><a title="epydoc.markup.epytext.Token" class="py-name" href="#" onclick="return doclink('link-135', 'Token', 'link-33');">Token</a></tt><tt class="py-op">(</tt><tt id="link-136" class="py-name"><a title="epydoc.markup.epytext.Token" class="py-name" href="#" onclick="r [...]
+<a name="L851"></a><tt class="py-lineno"> 851</tt>  <tt class="py-line">                            <tt class="py-name">inline</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L852"></a><tt class="py-lineno"> 852</tt>  <tt class="py-line"> </tt>
+<a name="L853"></a><tt class="py-lineno"> 853</tt>  <tt class="py-line">    <tt class="py-comment"># Return the linenum after the paragraph token ends.</tt> </tt>
+<a name="L854"></a><tt class="py-lineno"> 854</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">return</tt> <tt id="link-138" class="py-name"><a title="epydoc.markup.ParseError.linenum" class="py-name" href="#" onclick="return doclink('link-138', 'linenum', 'link-105');">linenum</a></tt> </tt>
+</div><a name="L855"></a><tt class="py-lineno"> 855</tt>  <tt class="py-line"> </tt>
+<a name="_tokenize_para"></a><div id="_tokenize_para-def"><a name="L856"></a><tt class="py-lineno"> 856</tt> <a class="py-toggle" href="#" id="_tokenize_para-toggle" onclick="return toggle('_tokenize_para');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.epytext-module.html#_tokenize_para">_tokenize_para</a><tt class="py-op">(</tt><tt class="py-param">lines</tt><tt class="py-op">,</tt> <tt class="py-param">start</tt><tt class="py-op"> [...]
+</div><div id="_tokenize_para-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_tokenize_para-expanded"><a name="L857"></a><tt class="py-lineno"> 857</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L858"></a><tt class="py-lineno"> 858</tt>  <tt class="py-line"><tt class="py-docstring">    Construct a L{Token} containing the paragraph starting at</tt> </tt>
+<a name="L859"></a><tt class="py-lineno"> 859</tt>  <tt class="py-line"><tt class="py-docstring">    C{lines[start]}, and append it to C{tokens}.  C{para_indent}</tt> </tt>
+<a name="L860"></a><tt class="py-lineno"> 860</tt>  <tt class="py-line"><tt class="py-docstring">    should be the indentation of the paragraph .  Any errors</tt> </tt>
+<a name="L861"></a><tt class="py-lineno"> 861</tt>  <tt class="py-line"><tt class="py-docstring">    generated while tokenizing the paragraph will be appended to</tt> </tt>
+<a name="L862"></a><tt class="py-lineno"> 862</tt>  <tt class="py-line"><tt class="py-docstring">    C{errors}.</tt> </tt>
+<a name="L863"></a><tt class="py-lineno"> 863</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L864"></a><tt class="py-lineno"> 864</tt>  <tt class="py-line"><tt class="py-docstring">    @param lines: The list of lines to be tokenized</tt> </tt>
+<a name="L865"></a><tt class="py-lineno"> 865</tt>  <tt class="py-line"><tt class="py-docstring">    @param start: The index into C{lines} of the first line of the</tt> </tt>
+<a name="L866"></a><tt class="py-lineno"> 866</tt>  <tt class="py-line"><tt class="py-docstring">        paragraph to be tokenized.</tt> </tt>
+<a name="L867"></a><tt class="py-lineno"> 867</tt>  <tt class="py-line"><tt class="py-docstring">    @param para_indent: The indentation of C{lines[start]}.  This is</tt> </tt>
+<a name="L868"></a><tt class="py-lineno"> 868</tt>  <tt class="py-line"><tt class="py-docstring">        the indentation of the paragraph.</tt> </tt>
+<a name="L869"></a><tt class="py-lineno"> 869</tt>  <tt class="py-line"><tt class="py-docstring">    @param errors: A list of the errors generated by parsing.  Any</tt> </tt>
+<a name="L870"></a><tt class="py-lineno"> 870</tt>  <tt class="py-line"><tt class="py-docstring">        new errors generated while will tokenizing this paragraph</tt> </tt>
+<a name="L871"></a><tt class="py-lineno"> 871</tt>  <tt class="py-line"><tt class="py-docstring">        will be appended to this list.</tt> </tt>
+<a name="L872"></a><tt class="py-lineno"> 872</tt>  <tt class="py-line"><tt class="py-docstring">    @return: The line number of the first line following the</tt> </tt>
+<a name="L873"></a><tt class="py-lineno"> 873</tt>  <tt class="py-line"><tt class="py-docstring">        paragraph. </tt> </tt>
+<a name="L874"></a><tt class="py-lineno"> 874</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt>
+<a name="L875"></a><tt class="py-lineno"> 875</tt>  <tt class="py-line"><tt class="py-docstring">    @type lines: C{list} of C{string}</tt> </tt>
+<a name="L876"></a><tt class="py-lineno"> 876</tt>  <tt class="py-line"><tt class="py-docstring">    @type start: C{int}</tt> </tt>
+<a name="L877"></a><tt class="py-lineno"> 877</tt>  <tt class="py-line"><tt class="py-docstring">    @type para_indent: C{int}</tt> </tt>
+<a name="L878"></a><tt class="py-lineno"> 878</tt>  <tt class="py-line"><tt class="py-docstring">    @type tokens: C{list} of L{Token}</tt> </tt>
+<a name="L879"></a><tt class="py-lineno"> 879</tt>  <tt class="py-line"><tt class="py-docstring">    @type errors: C{list} of L{ParseError}</tt> </tt>
+<a name="L880"></a><tt class="py-lineno"> 880</tt>  <tt class="py-line"><tt class="py-docstring">    @rtype: C{int}</tt> </tt>
+<a name="L881"></a><tt class="py-lineno"> 881</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L882"></a><tt class="py-lineno"> 882</tt>  <tt class="py-line">    <tt id="link-139" class="py-name"><a title="epydoc.markup.ParseError.linenum" class="py-name" href="#" onclick="return doclink('link-139', 'linenum', 'link-105');">linenum</a></tt> <tt class="py-op">=</tt> <tt class="py-name">start</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt> </tt>
+<a name="L883"></a><tt class="py-lineno"> 883</tt>  <tt class="py-line">    <tt class="py-name">doublecolon</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L884"></a><tt class="py-lineno"> 884</tt>  <tt class="py-line">    <tt class="py-keyword">while</tt> <tt id="link-140" class="py-name"><a title="epydoc.markup.ParseError.linenum" class="py-name" href="#" onclick="return doclink('link-140', 'linenum', 'link-105');">linenum</a></tt> <tt class="py-op"><</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">lines</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L885"></a><tt class="py-lineno"> 885</tt>  <tt class="py-line">        <tt class="py-comment"># Find the indentation of this line.</tt> </tt>
+<a name="L886"></a><tt class="py-lineno"> 886</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">line</tt> <tt class="py-op">=</tt> <tt class="py-name">lines</tt><tt class="py-op">[</tt><tt id="link-141" class="py-name"><a title="epydoc.markup.ParseError.linenum" class="py-name" href="#" onclick="return doclink('link-141', 'linenum', 'link-105');">linenum</a></tt><tt class="py-op">]</tt> </tt>
+<a name="L887"></a><tt class="py-lineno"> 887</tt>  <tt class="py-line">        <tt class="py-name">indent</tt> <tt class="py-op">=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">line</tt><tt class="py-op">)</tt> <tt class="py-op">-</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">line</tt><tt class="py-op">.</tt><tt class="py-name">lstrip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L888"></a><tt class="py-lineno"> 888</tt>  <tt class="py-line"> </tt>
+<a name="L889"></a><tt class="py-lineno"> 889</tt>  <tt class="py-line">        <tt class="py-comment"># "::" markers end paragraphs.</tt> </tt>
+<a name="L890"></a><tt class="py-lineno"> 890</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">doublecolon</tt><tt class="py-op">:</tt> <tt class="py-keyword">break</tt> </tt>
+<a name="L891"></a><tt class="py-lineno"> 891</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">line</tt><tt class="py-op">.</tt><tt class="py-name">rstrip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">2</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">'::'</tt><tt class="py-op">:</tt> <tt class="py-name">doublecolon</tt> <tt c [...]
+<a name="L892"></a><tt class="py-lineno"> 892</tt>  <tt class="py-line"> </tt>
+<a name="L893"></a><tt class="py-lineno"> 893</tt>  <tt class="py-line">        <tt class="py-comment"># Blank lines end paragraphs</tt> </tt>
+<a name="L894"></a><tt class="py-lineno"> 894</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">indent</tt> <tt class="py-op">==</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">line</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-keyword">break</tt> </tt>
+<a name="L895"></a><tt class="py-lineno"> 895</tt>  <tt class="py-line"> </tt>
+<a name="L896"></a><tt class="py-lineno"> 896</tt>  <tt class="py-line">        <tt class="py-comment"># Indentation changes end paragraphs</tt> </tt>
+<a name="L897"></a><tt class="py-lineno"> 897</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">indent</tt> <tt class="py-op">!=</tt> <tt class="py-name">para_indent</tt><tt class="py-op">:</tt> <tt class="py-keyword">break</tt> </tt>
+<a name="L898"></a><tt class="py-lineno"> 898</tt>  <tt class="py-line"> </tt>
+<a name="L899"></a><tt class="py-lineno"> 899</tt>  <tt class="py-line">        <tt class="py-comment"># List bullets end paragraphs</tt> </tt>
+<a name="L900"></a><tt class="py-lineno"> 900</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt id="link-142" class="py-name"><a title="epydoc.markup.epytext._BULLET_RE" class="py-name" href="#" onclick="return doclink('link-142', '_BULLET_RE', 'link-102');">_BULLET_RE</a></tt><tt class="py-op">.</tt><tt class="py-name">match</tt><tt class="py-op">(</tt><tt class="py-name">line</tt><tt class="py-op">,</tt> <tt class="py-name">indent</tt><tt  [...]
+<a name="L901"></a><tt class="py-lineno"> 901</tt>  <tt class="py-line"> </tt>
+<a name="L902"></a><tt class="py-lineno"> 902</tt>  <tt class="py-line">        <tt class="py-comment"># Check for mal-formatted field items.</tt> </tt>
+<a name="L903"></a><tt class="py-lineno"> 903</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">line</tt><tt class="py-op">[</tt><tt class="py-name">indent</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">'@'</tt><tt class="py-op">:</tt> </tt>
+<a name="L904"></a><tt class="py-lineno"> 904</tt>  <tt class="py-line">            <tt class="py-name">estr</tt> <tt class="py-op">=</tt> <tt class="py-string">"Possible mal-formatted field item."</tt> </tt>
+<a name="L905"></a><tt class="py-lineno"> 905</tt>  <tt class="py-line">            <tt class="py-name">errors</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-143" class="py-name"><a title="epydoc.markup.epytext.TokenizationError" class="py-name" href="#" onclick="return doclink('link-143', 'TokenizationError', 'link-108');">TokenizationError</a></tt><tt class="py-op">(</tt><tt class="py-name">estr</tt><tt class="py-op">,</tt> <tt id="link- [...]
+<a name="L906"></a><tt class="py-lineno"> 906</tt>  <tt class="py-line">             </tt>
+<a name="L907"></a><tt class="py-lineno"> 907</tt>  <tt class="py-line">        <tt class="py-comment"># Go on to the next line.</tt> </tt>
+<a name="L908"></a><tt class="py-lineno"> 908</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt id="link-146" class="py-name"><a title="epydoc.markup.ParseError.linenum" class="py-name" href="#" onclick="return doclink('link-146', 'linenum', 'link-105');">linenum</a></tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L909"></a><tt class="py-lineno"> 909</tt>  <tt class="py-line"> </tt>
+<a name="L910"></a><tt class="py-lineno"> 910</tt>  <tt class="py-line">    <tt class="py-name">contents</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">line</tt><tt class="py-op">.</tt><tt class="py-name">strip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">line</tt> <tt class="py-keyword">in</tt> <tt class="py-name">lines</tt><tt class="py-op">[</tt><tt class="py-name">start</tt><tt class="py-op">:</tt> [...]
+<a name="L911"></a><tt class="py-lineno"> 911</tt>  <tt class="py-line">     </tt>
+<a name="L912"></a><tt class="py-lineno"> 912</tt>  <tt class="py-line">    <tt class="py-comment"># Does this token look like a heading?</tt> </tt>
+<a name="L913"></a><tt class="py-lineno"> 913</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">contents</tt><tt class="py-op">)</tt> <tt class="py-op"><</tt> <tt class="py-number">2</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> </tt>
+<a name="L914"></a><tt class="py-lineno"> 914</tt>  <tt class="py-line">        <tt class="py-op">(</tt><tt class="py-name">contents</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt id="link-148" class="py-name"><a title="epydoc.markup.epytext._HEADING_CHARS" class="py-name" href="#" onclick="return doclink('link-14 [...]
+<a name="L915"></a><tt class="py-lineno"> 915</tt>  <tt class="py-line">        <tt class="py-op">(</tt><tt class="py-name">abs</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">contents</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">-</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">contents</tt><tt class="py-op">[</tt><tt class="py-numb [...]
+<a name="L916"></a><tt class="py-lineno"> 916</tt>  <tt class="py-line">        <tt class="py-name">looks_like_heading</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L917"></a><tt class="py-lineno"> 917</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L918"></a><tt class="py-lineno"> 918</tt>  <tt class="py-line">        <tt class="py-name">looks_like_heading</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L919"></a><tt class="py-lineno"> 919</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">char</tt> <tt class="py-keyword">in</tt> <tt class="py-name">contents</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L920"></a><tt class="py-lineno"> 920</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">char</tt> <tt class="py-op">!=</tt> <tt class="py-name">contents</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L921"></a><tt class="py-lineno"> 921</tt>  <tt class="py-line">                <tt class="py-name">looks_like_heading</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L922"></a><tt class="py-lineno"> 922</tt>  <tt class="py-line">                <tt class="py-keyword">break</tt> </tt>
+<a name="L923"></a><tt class="py-lineno"> 923</tt>  <tt class="py-line"> </tt>
+<a name="L924"></a><tt class="py-lineno"> 924</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">looks_like_heading</tt><tt class="py-op">:</tt> </tt>
+<a name="L925"></a><tt class="py-lineno"> 925</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">contents</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">contents</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt clas [...]
+<a name="L926"></a><tt class="py-lineno"> 926</tt>  <tt class="py-line">            <tt class="py-name">estr</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">"Possible heading typo: the number of "</tt><tt class="py-op">+</tt> </tt>
+<a name="L927"></a><tt class="py-lineno"> 927</tt>  <tt class="py-line">                    <tt class="py-string">"underline characters must match the "</tt><tt class="py-op">+</tt> </tt>
+<a name="L928"></a><tt class="py-lineno"> 928</tt>  <tt class="py-line">                    <tt class="py-string">"number of heading characters."</tt><tt class="py-op">)</tt> </tt>
+<a name="L929"></a><tt class="py-lineno"> 929</tt>  <tt class="py-line">            <tt class="py-name">errors</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-149" class="py-name"><a title="epydoc.markup.epytext.TokenizationError" class="py-name" href="#" onclick="return doclink('link-149', 'TokenizationError', 'link-108');">TokenizationError</a></tt><tt class="py-op">(</tt><tt class="py-name">estr</tt><tt class="py-op">,</tt> <tt class="py [...]
+<a name="L930"></a><tt class="py-lineno"> 930</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L931"></a><tt class="py-lineno"> 931</tt>  <tt class="py-line">            <tt class="py-name">level</tt> <tt class="py-op">=</tt> <tt id="link-151" class="py-name"><a title="epydoc.markup.epytext._HEADING_CHARS" class="py-name" href="#" onclick="return doclink('link-151', '_HEADING_CHARS', 'link-18');">_HEADING_CHARS</a></tt><tt class="py-op">.</tt><tt class="py-name">index</tt><tt class="py-op">(</tt><tt class="py-name">contents</tt><tt class="py-op">[</tt><tt class="py-number [...]
+<a name="L932"></a><tt class="py-lineno"> 932</tt>  <tt class="py-line">            <tt class="py-name">tokens</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-152" class="py-name"><a title="epydoc.markup.epytext.Token" class="py-name" href="#" onclick="return doclink('link-152', 'Token', 'link-33');">Token</a></tt><tt class="py-op">(</tt><tt id="link-153" class="py-name"><a title="epydoc.markup.epytext.Token" class="py-name" href="#" onclic [...]
+<a name="L933"></a><tt class="py-lineno"> 933</tt>  <tt class="py-line">                                <tt class="py-name">contents</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">para_indent</tt><tt class="py-op">,</tt> <tt class="py-name">level</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L934"></a><tt class="py-lineno"> 934</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">start</tt><tt class="py-op">+</tt><tt class="py-number">2</tt> </tt>
+<a name="L935"></a><tt class="py-lineno"> 935</tt>  <tt class="py-line">                  </tt>
+<a name="L936"></a><tt class="py-lineno"> 936</tt>  <tt class="py-line">    <tt class="py-comment"># Add the paragraph token, and return the linenum after it ends.</tt> </tt>
+<a name="L937"></a><tt class="py-lineno"> 937</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">contents</tt> <tt class="py-op">=</tt> <tt class="py-string">' '</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">contents</tt><tt class="py-op">)</tt> </tt>
+<a name="L938"></a><tt class="py-lineno"> 938</tt>  <tt class="py-line">    <tt class="py-name">tokens</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-155" class="py-name"><a title="epydoc.markup.epytext.Token" class="py-name" href="#" onclick="return doclink('link-155', 'Token', 'link-33');">Token</a></tt><tt class="py-op">(</tt><tt id="link-156" class="py-name"><a title="epydoc.markup.epytext.Token" class="py-name" href="#" onclick="retur [...]
+<a name="L939"></a><tt class="py-lineno"> 939</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-158" class="py-name"><a title="epydoc.markup.ParseError.linenum" class="py-name" href="#" onclick="return doclink('link-158', 'linenum', 'link-105');">linenum</a></tt> </tt>
+</div><a name="L940"></a><tt class="py-lineno"> 940</tt>  <tt class="py-line">         </tt>
+<a name="_tokenize"></a><div id="_tokenize-def"><a name="L941"></a><tt class="py-lineno"> 941</tt> <a class="py-toggle" href="#" id="_tokenize-toggle" onclick="return toggle('_tokenize');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.epytext-module.html#_tokenize">_tokenize</a><tt class="py-op">(</tt><tt class="py-param">str</tt><tt class="py-op">,</tt> <tt class="py-param">errors</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_tokenize-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_tokenize-expanded"><a name="L942"></a><tt class="py-lineno"> 942</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L943"></a><tt class="py-lineno"> 943</tt>  <tt class="py-line"><tt class="py-docstring">    Split a given formatted docstring into an ordered list of</tt> </tt>
+<a name="L944"></a><tt class="py-lineno"> 944</tt>  <tt class="py-line"><tt class="py-docstring">    C{Token}s, according to the epytext markup rules.</tt> </tt>
+<a name="L945"></a><tt class="py-lineno"> 945</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L946"></a><tt class="py-lineno"> 946</tt>  <tt class="py-line"><tt class="py-docstring">    @param str: The epytext string</tt> </tt>
+<a name="L947"></a><tt class="py-lineno"> 947</tt>  <tt class="py-line"><tt class="py-docstring">    @type str: C{string}</tt> </tt>
+<a name="L948"></a><tt class="py-lineno"> 948</tt>  <tt class="py-line"><tt class="py-docstring">    @param errors: A list where any errors generated during parsing</tt> </tt>
+<a name="L949"></a><tt class="py-lineno"> 949</tt>  <tt class="py-line"><tt class="py-docstring">        will be stored.  If no list is specified, then errors will </tt> </tt>
+<a name="L950"></a><tt class="py-lineno"> 950</tt>  <tt class="py-line"><tt class="py-docstring">        generate exceptions.</tt> </tt>
+<a name="L951"></a><tt class="py-lineno"> 951</tt>  <tt class="py-line"><tt class="py-docstring">    @type errors: C{list} of L{ParseError}</tt> </tt>
+<a name="L952"></a><tt class="py-lineno"> 952</tt>  <tt class="py-line"><tt class="py-docstring">    @return: a list of the C{Token}s that make up the given string.</tt> </tt>
+<a name="L953"></a><tt class="py-lineno"> 953</tt>  <tt class="py-line"><tt class="py-docstring">    @rtype: C{list} of L{Token}</tt> </tt>
+<a name="L954"></a><tt class="py-lineno"> 954</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L955"></a><tt class="py-lineno"> 955</tt>  <tt class="py-line">    <tt class="py-name">tokens</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L956"></a><tt class="py-lineno"> 956</tt>  <tt class="py-line">    <tt class="py-name">lines</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L957"></a><tt class="py-lineno"> 957</tt>  <tt class="py-line"> </tt>
+<a name="L958"></a><tt class="py-lineno"> 958</tt>  <tt class="py-line">    <tt class="py-comment"># Scan through the lines, determining what @type of token we're</tt> </tt>
+<a name="L959"></a><tt class="py-lineno"> 959</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># dealing with, and tokenizing it, as appropriate.</tt> </tt>
+<a name="L960"></a><tt class="py-lineno"> 960</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-159" class="py-name"><a title="epydoc.markup.ParseError.linenum" class="py-name" href="#" onclick="return doclink('link-159', 'linenum', 'link-105');">linenum</a></tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L961"></a><tt class="py-lineno"> 961</tt>  <tt class="py-line">    <tt class="py-keyword">while</tt> <tt id="link-160" class="py-name"><a title="epydoc.markup.ParseError.linenum" class="py-name" href="#" onclick="return doclink('link-160', 'linenum', 'link-105');">linenum</a></tt> <tt class="py-op"><</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">lines</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L962"></a><tt class="py-lineno"> 962</tt>  <tt class="py-line">        <tt class="py-comment"># Get the current line and its indentation.</tt> </tt>
+<a name="L963"></a><tt class="py-lineno"> 963</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">line</tt> <tt class="py-op">=</tt> <tt class="py-name">lines</tt><tt class="py-op">[</tt><tt id="link-161" class="py-name"><a title="epydoc.markup.ParseError.linenum" class="py-name" href="#" onclick="return doclink('link-161', 'linenum', 'link-105');">linenum</a></tt><tt class="py-op">]</tt> </tt>
+<a name="L964"></a><tt class="py-lineno"> 964</tt>  <tt class="py-line">        <tt class="py-name">indent</tt> <tt class="py-op">=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">line</tt><tt class="py-op">)</tt><tt class="py-op">-</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">line</tt><tt class="py-op">.</tt><tt class="py-name">lstrip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L965"></a><tt class="py-lineno"> 965</tt>  <tt class="py-line"> </tt>
+<a name="L966"></a><tt class="py-lineno"> 966</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">indent</tt> <tt class="py-op">==</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">line</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L967"></a><tt class="py-lineno"> 967</tt>  <tt class="py-line">            <tt class="py-comment"># Ignore blank lines.</tt> </tt>
+<a name="L968"></a><tt class="py-lineno"> 968</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt id="link-162" class="py-name"><a title="epydoc.markup.ParseError.linenum" class="py-name" href="#" onclick="return doclink('link-162', 'linenum', 'link-105');">linenum</a></tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L969"></a><tt class="py-lineno"> 969</tt>  <tt class="py-line">            <tt class="py-keyword">continue</tt> </tt>
+<a name="L970"></a><tt class="py-lineno"> 970</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">line</tt><tt class="py-op">[</tt><tt class="py-name">indent</tt><tt class="py-op">:</tt><tt class="py-name">indent</tt><tt class="py-op">+</tt><tt class="py-number">4</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">'>>> '</tt><tt class="py-op">:</tt> </tt>
+<a name="L971"></a><tt class="py-lineno"> 971</tt>  <tt class="py-line">            <tt class="py-comment"># blocks starting with ">>> " are doctest block tokens.</tt> </tt>
+<a name="L972"></a><tt class="py-lineno"> 972</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt id="link-163" class="py-name"><a title="epydoc.markup.ParseError.linenum" class="py-name" href="#" onclick="return doclink('link-163', 'linenum', 'link-105');">linenum</a></tt> <tt class="py-op">=</tt> <tt id="link-164" class="py-name" targets="Function epydoc.markup.epytext._tokenize_doctest()=epydoc.markup.epytext-module.html#_tokenize_doctest"><a title="epydoc.markup.epy [...]
+<a name="L973"></a><tt class="py-lineno"> 973</tt>  <tt class="py-line">                                        <tt class="py-name">tokens</tt><tt class="py-op">,</tt> <tt class="py-name">errors</tt><tt class="py-op">)</tt> </tt>
+<a name="L974"></a><tt class="py-lineno"> 974</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt id="link-166" class="py-name"><a title="epydoc.markup.epytext._BULLET_RE" class="py-name" href="#" onclick="return doclink('link-166', '_BULLET_RE', 'link-102');">_BULLET_RE</a></tt><tt class="py-op">.</tt><tt class="py-name">match</tt><tt class="py-op">(</tt><tt class="py-name">line</tt><tt class="py-op">,</tt> <tt class="py-name">indent</tt><tt class="py-op">)</tt><tt cl [...]
+<a name="L975"></a><tt class="py-lineno"> 975</tt>  <tt class="py-line">            <tt class="py-comment"># blocks starting with a bullet are LI start tokens.</tt> </tt>
+<a name="L976"></a><tt class="py-lineno"> 976</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt id="link-167" class="py-name"><a title="epydoc.markup.ParseError.linenum" class="py-name" href="#" onclick="return doclink('link-167', 'linenum', 'link-105');">linenum</a></tt> <tt class="py-op">=</tt> <tt id="link-168" class="py-name" targets="Function epydoc.markup.epytext._tokenize_listart()=epydoc.markup.epytext-module.html#_tokenize_listart"><a title="epydoc.markup.epy [...]
+<a name="L977"></a><tt class="py-lineno"> 977</tt>  <tt class="py-line">                                        <tt class="py-name">tokens</tt><tt class="py-op">,</tt> <tt class="py-name">errors</tt><tt class="py-op">)</tt> </tt>
+<a name="L978"></a><tt class="py-lineno"> 978</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">tokens</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">indent</tt> <tt class="py-op">!=</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L979"></a><tt class="py-lineno"> 979</tt>  <tt class="py-line">                <tt class="py-name">indent</tt> <tt class="py-op">=</tt> <tt class="py-name">tokens</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">indent</tt> </tt>
+<a name="L980"></a><tt class="py-lineno"> 980</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L981"></a><tt class="py-lineno"> 981</tt>  <tt class="py-line">            <tt class="py-comment"># Check for mal-formatted field items.</tt> </tt>
+<a name="L982"></a><tt class="py-lineno"> 982</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt class="py-name">line</tt><tt class="py-op">[</tt><tt class="py-name">indent</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">'@'</tt><tt class="py-op">:</tt> </tt>
+<a name="L983"></a><tt class="py-lineno"> 983</tt>  <tt class="py-line">                <tt class="py-name">estr</tt> <tt class="py-op">=</tt> <tt class="py-string">"Possible mal-formatted field item."</tt> </tt>
+<a name="L984"></a><tt class="py-lineno"> 984</tt>  <tt class="py-line">                <tt class="py-name">errors</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-170" class="py-name"><a title="epydoc.markup.epytext.TokenizationError" class="py-name" href="#" onclick="return doclink('link-170', 'TokenizationError', 'link-108');">TokenizationError</a></tt><tt class="py-op">(</tt><tt class="py-name">estr</tt><tt class="py-op">,</tt> <tt id="l [...]
+<a name="L985"></a><tt class="py-lineno"> 985</tt>  <tt class="py-line">             </tt>
+<a name="L986"></a><tt class="py-lineno"> 986</tt>  <tt class="py-line">            <tt class="py-comment"># anything else is either a paragraph or a heading.</tt> </tt>
+<a name="L987"></a><tt class="py-lineno"> 987</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt id="link-173" class="py-name"><a title="epydoc.markup.ParseError.linenum" class="py-name" href="#" onclick="return doclink('link-173', 'linenum', 'link-105');">linenum</a></tt> <tt class="py-op">=</tt> <tt id="link-174" class="py-name" targets="Function epydoc.markup.epytext._tokenize_para()=epydoc.markup.epytext-module.html#_tokenize_para"><a title="epydoc.markup.epytext._ [...]
+<a name="L988"></a><tt class="py-lineno"> 988</tt>  <tt class="py-line"> </tt>
+<a name="L989"></a><tt class="py-lineno"> 989</tt>  <tt class="py-line">        <tt class="py-comment"># Paragraph tokens ending in '::' initiate literal blocks.</tt> </tt>
+<a name="L990"></a><tt class="py-lineno"> 990</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">tokens</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-176" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-176', 'tag', 'link-13');">tag</a></tt> <tt class=" [...]
+<a name="L991"></a><tt class="py-lineno"> 991</tt>  <tt class="py-line">            <tt class="py-name">tokens</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">contents</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">2</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">'::'</tt><tt class="py-op">)</tt><tt class="py- [...]
+<a name="L992"></a><tt class="py-lineno"> 992</tt>  <tt class="py-line">            <tt class="py-name">tokens</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">contents</tt> <tt class="py-op">=</tt> <tt class="py-name">tokens</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">contents</tt><tt cl [...]
+<a name="L993"></a><tt class="py-lineno"> 993</tt>  <tt class="py-line">            <tt id="link-179" class="py-name"><a title="epydoc.markup.ParseError.linenum" class="py-name" href="#" onclick="return doclink('link-179', 'linenum', 'link-105');">linenum</a></tt> <tt class="py-op">=</tt> <tt id="link-180" class="py-name" targets="Function epydoc.markup.epytext._tokenize_literal()=epydoc.markup.epytext-module.html#_tokenize_literal"><a title="epydoc.markup.epytext._tokenize_literal" clas [...]
+<a name="L994"></a><tt class="py-lineno"> 994</tt>  <tt class="py-line"> </tt>
+<a name="L995"></a><tt class="py-lineno"> 995</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">tokens</tt> </tt>
+</div><a name="L996"></a><tt class="py-lineno"> 996</tt>  <tt class="py-line"> </tt>
+<a name="L997"></a><tt class="py-lineno"> 997</tt>  <tt class="py-line"> </tt>
+<a name="L998"></a><tt class="py-lineno"> 998</tt>  <tt class="py-line"><tt class="py-comment">##################################################</tt> </tt>
+<a name="L999"></a><tt class="py-lineno"> 999</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## Inline markup ("colorizing")</tt> </tt>
+<a name="L1000"></a><tt class="py-lineno">1000</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">##################################################</tt> </tt>
+<a name="L1001"></a><tt class="py-lineno">1001</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L1002"></a><tt class="py-lineno">1002</tt>  <tt class="py-line"><tt class="py-comment"># Assorted regular expressions used for colorizing.</tt> </tt>
+<a name="L1003"></a><tt class="py-lineno">1003</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt id="link-182" class="py-name" targets="Variable epydoc.markup.epytext._BRACE_RE=epydoc.markup.epytext-module.html#_BRACE_RE"><a title="epydoc.markup.epytext._BRACE_RE" class="py-name" href="#" onclick="return doclink('link-182', '_BRACE_RE', 'link-182');">_BRACE_RE</a></tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">compile</tt><tt  [...]
+<a name="L1004"></a><tt class="py-lineno">1004</tt>  <tt class="py-line"><tt id="link-183" class="py-name" targets="Variable epydoc.markup.epytext._TARGET_RE=epydoc.markup.epytext-module.html#_TARGET_RE"><a title="epydoc.markup.epytext._TARGET_RE" class="py-name" href="#" onclick="return doclink('link-183', '_TARGET_RE', 'link-183');">_TARGET_RE</a></tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">compile</tt><tt class="py-op">(</tt><tt [...]
+<a name="L1005"></a><tt class="py-lineno">1005</tt>  <tt class="py-line"> </tt>
+<a name="_colorize"></a><div id="_colorize-def"><a name="L1006"></a><tt class="py-lineno">1006</tt> <a class="py-toggle" href="#" id="_colorize-toggle" onclick="return toggle('_colorize');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.epytext-module.html#_colorize">_colorize</a><tt class="py-op">(</tt><tt class="py-param">doc</tt><tt class="py-op">,</tt> <tt class="py-param">token</tt><tt class="py-op">,</tt> <tt class="py-param">err [...]
+</div><div id="_colorize-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_colorize-expanded"><a name="L1007"></a><tt class="py-lineno">1007</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L1008"></a><tt class="py-lineno">1008</tt>  <tt class="py-line"><tt class="py-docstring">    Given a string containing the contents of a paragraph, produce a</tt> </tt>
+<a name="L1009"></a><tt class="py-lineno">1009</tt>  <tt class="py-line"><tt class="py-docstring">    DOM C{Element} encoding that paragraph.  Colorized regions are</tt> </tt>
+<a name="L1010"></a><tt class="py-lineno">1010</tt>  <tt class="py-line"><tt class="py-docstring">    represented using DOM C{Element}s, and text is represented using</tt> </tt>
+<a name="L1011"></a><tt class="py-lineno">1011</tt>  <tt class="py-line"><tt class="py-docstring">    DOM C{Text}s.</tt> </tt>
+<a name="L1012"></a><tt class="py-lineno">1012</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1013"></a><tt class="py-lineno">1013</tt>  <tt class="py-line"><tt class="py-docstring">    @param errors: A list of errors.  Any newly generated errors will</tt> </tt>
+<a name="L1014"></a><tt class="py-lineno">1014</tt>  <tt class="py-line"><tt class="py-docstring">        be appended to this list.</tt> </tt>
+<a name="L1015"></a><tt class="py-lineno">1015</tt>  <tt class="py-line"><tt class="py-docstring">    @type errors: C{list} of C{string}</tt> </tt>
+<a name="L1016"></a><tt class="py-lineno">1016</tt>  <tt class="py-line"><tt class="py-docstring">    </tt> </tt>
+<a name="L1017"></a><tt class="py-lineno">1017</tt>  <tt class="py-line"><tt class="py-docstring">    @param tagName: The element tag for the DOM C{Element} that should</tt> </tt>
+<a name="L1018"></a><tt class="py-lineno">1018</tt>  <tt class="py-line"><tt class="py-docstring">        be generated.</tt> </tt>
+<a name="L1019"></a><tt class="py-lineno">1019</tt>  <tt class="py-line"><tt class="py-docstring">    @type tagName: C{string}</tt> </tt>
+<a name="L1020"></a><tt class="py-lineno">1020</tt>  <tt class="py-line"><tt class="py-docstring">    </tt> </tt>
+<a name="L1021"></a><tt class="py-lineno">1021</tt>  <tt class="py-line"><tt class="py-docstring">    @return: a DOM C{Element} encoding the given paragraph.</tt> </tt>
+<a name="L1022"></a><tt class="py-lineno">1022</tt>  <tt class="py-line"><tt class="py-docstring">    @returntype: C{Element}</tt> </tt>
+<a name="L1023"></a><tt class="py-lineno">1023</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1024"></a><tt class="py-lineno">1024</tt>  <tt class="py-line">    <tt class="py-name">str</tt> <tt class="py-op">=</tt> <tt class="py-name">token</tt><tt class="py-op">.</tt><tt class="py-name">contents</tt> </tt>
+<a name="L1025"></a><tt class="py-lineno">1025</tt>  <tt class="py-line">    <tt id="link-184" class="py-name"><a title="epydoc.markup.ParseError.linenum" class="py-name" href="#" onclick="return doclink('link-184', 'linenum', 'link-105');">linenum</a></tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L1026"></a><tt class="py-lineno">1026</tt>  <tt class="py-line">     </tt>
+<a name="L1027"></a><tt class="py-lineno">1027</tt>  <tt class="py-line">    <tt class="py-comment"># Maintain a stack of DOM elements, containing the ancestors of</tt> </tt>
+<a name="L1028"></a><tt class="py-lineno">1028</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># the text currently being analyzed.  New elements are pushed when </tt> </tt>
+<a name="L1029"></a><tt class="py-lineno">1029</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># "{" is encountered, and old elements are popped when "}" is</tt> </tt>
+<a name="L1030"></a><tt class="py-lineno">1030</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># encountered. </tt> </tt>
+<a name="L1031"></a><tt class="py-lineno">1031</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">stack</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt id="link-185" class="py-name"><a title="epydoc.markup.epytext.Element" class="py-name" href="#" onclick="return doclink('link-185', 'Element', 'link-30');">Element</a></tt><tt class="py-op">(</tt><tt class="py-name">tagName</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt>
+<a name="L1032"></a><tt class="py-lineno">1032</tt>  <tt class="py-line"> </tt>
+<a name="L1033"></a><tt class="py-lineno">1033</tt>  <tt class="py-line">    <tt class="py-comment"># This is just used to make error-reporting friendlier.  It's a</tt> </tt>
+<a name="L1034"></a><tt class="py-lineno">1034</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># stack parallel to "stack" containing the index of each element's </tt> </tt>
+<a name="L1035"></a><tt class="py-lineno">1035</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># open brace.</tt> </tt>
+<a name="L1036"></a><tt class="py-lineno">1036</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">openbrace_stack</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L1037"></a><tt class="py-lineno">1037</tt>  <tt class="py-line"> </tt>
+<a name="L1038"></a><tt class="py-lineno">1038</tt>  <tt class="py-line">    <tt class="py-comment"># Process the string, scanning for '{' and '}'s.  start is the</tt> </tt>
+<a name="L1039"></a><tt class="py-lineno">1039</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># index of the first unprocessed character.  Each time through the</tt> </tt>
+<a name="L1040"></a><tt class="py-lineno">1040</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># loop, we process the text from the first unprocessed character</tt> </tt>
+<a name="L1041"></a><tt class="py-lineno">1041</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># to the next open or close brace.</tt> </tt>
+<a name="L1042"></a><tt class="py-lineno">1042</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">start</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L1043"></a><tt class="py-lineno">1043</tt>  <tt class="py-line">    <tt class="py-keyword">while</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L1044"></a><tt class="py-lineno">1044</tt>  <tt class="py-line">        <tt class="py-name">match</tt> <tt class="py-op">=</tt> <tt id="link-186" class="py-name"><a title="epydoc.markup.epytext._BRACE_RE" class="py-name" href="#" onclick="return doclink('link-186', '_BRACE_RE', 'link-182');">_BRACE_RE</a></tt><tt class="py-op">.</tt><tt class="py-name">search</tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">,</tt> <tt class="py-name">start</tt><tt class= [...]
+<a name="L1045"></a><tt class="py-lineno">1045</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">match</tt> <tt class="py-op">==</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> <tt class="py-keyword">break</tt> </tt>
+<a name="L1046"></a><tt class="py-lineno">1046</tt>  <tt class="py-line">        <tt class="py-name">end</tt> <tt class="py-op">=</tt> <tt class="py-name">match</tt><tt class="py-op">.</tt><tt class="py-name">start</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1047"></a><tt class="py-lineno">1047</tt>  <tt class="py-line">         </tt>
+<a name="L1048"></a><tt class="py-lineno">1048</tt>  <tt class="py-line">        <tt class="py-comment"># Open braces start new colorizing elements.  When preceeded</tt> </tt>
+<a name="L1049"></a><tt class="py-lineno">1049</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># by a capital letter, they specify a colored region, as</tt> </tt>
+<a name="L1050"></a><tt class="py-lineno">1050</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># defined by the _COLORIZING_TAGS dictionary.  Otherwise, </tt> </tt>
+<a name="L1051"></a><tt class="py-lineno">1051</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># use a special "literal braces" element (with tag "litbrace"),</tt> </tt>
+<a name="L1052"></a><tt class="py-lineno">1052</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># and convert them to literal braces once we find the matching </tt> </tt>
+<a name="L1053"></a><tt class="py-lineno">1053</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># close-brace.</tt> </tt>
+<a name="L1054"></a><tt class="py-lineno">1054</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">match</tt><tt class="py-op">.</tt><tt class="py-name">group</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-string">'{'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1055"></a><tt class="py-lineno">1055</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">end</tt><tt class="py-op">></tt><tt class="py-number">0</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-string">'A'</tt> <tt class="py-op"><=</tt> <tt class="py-name">str</tt><tt class="py-op">[</tt><tt class="py-name">end</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]< [...]
+<a name="L1056"></a><tt class="py-lineno">1056</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">end</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-name">start</tt><tt class="py-op">:</tt> </tt>
+<a name="L1057"></a><tt class="py-lineno">1057</tt>  <tt class="py-line">                    <tt class="py-name">stack</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">children</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">[</tt><tt class="py-name">start</tt><tt class="py-op">:</tt><tt class="py-name">end</tt [...]
+<a name="L1058"></a><tt class="py-lineno">1058</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">str</tt><tt class="py-op">[</tt><tt class="py-name">end</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt id="link-187" class="py-name"><a title="epydoc.markup.epytext._COLORIZING_TAGS" class="py-name" href="#" onclick="return doclink('link-187', '_COLOR [...]
+<a name="L1059"></a><tt class="py-lineno">1059</tt>  <tt class="py-line">                    <tt class="py-name">estr</tt> <tt class="py-op">=</tt> <tt class="py-string">"Unknown inline markup tag."</tt> </tt>
+<a name="L1060"></a><tt class="py-lineno">1060</tt>  <tt class="py-line">                    <tt class="py-name">errors</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-188" class="py-name" targets="Class epydoc.markup.epytext.ColorizingError=epydoc.markup.epytext.ColorizingError-class.html"><a title="epydoc.markup.epytext.ColorizingError" class="py-name" href="#" onclick="return doclink('link-188', 'ColorizingError', 'link-188');">Colorizin [...]
+<a name="L1061"></a><tt class="py-lineno">1061</tt>  <tt class="py-line">                    <tt class="py-name">stack</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-189" class="py-name"><a title="epydoc.markup.epytext.Element" class="py-name" href="#" onclick="return doclink('link-189', 'Element', 'link-30');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'unknown'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1062"></a><tt class="py-lineno">1062</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1063"></a><tt class="py-lineno">1063</tt>  <tt class="py-line">                    <tt id="link-190" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-190', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">=</tt> <tt id="link-191" class="py-name"><a title="epydoc.markup.epytext._COLORIZING_TAGS" class="py-name" href="#" onclick="return doclink('link-191', '_COLORIZING_TAGS', 'link-27');">_COLORIZING_TAGS</a></tt><tt clas [...]
+<a name="L1064"></a><tt class="py-lineno">1064</tt>  <tt class="py-line">                    <tt class="py-name">stack</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-192" class="py-name"><a title="epydoc.markup.epytext.Element" class="py-name" href="#" onclick="return doclink('link-192', 'Element', 'link-30');">Element</a></tt><tt class="py-op">(</tt><tt id="link-193" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href= [...]
+<a name="L1065"></a><tt class="py-lineno">1065</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1066"></a><tt class="py-lineno">1066</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">end</tt> <tt class="py-op">></tt> <tt class="py-name">start</tt><tt class="py-op">:</tt> </tt>
+<a name="L1067"></a><tt class="py-lineno">1067</tt>  <tt class="py-line">                    <tt class="py-name">stack</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">children</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">[</tt><tt class="py-name">start</tt><tt class="py-op">:</tt><tt class="py-name">end</tt [...]
+<a name="L1068"></a><tt class="py-lineno">1068</tt>  <tt class="py-line">                <tt class="py-name">stack</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-194" class="py-name"><a title="epydoc.markup.epytext.Element" class="py-name" href="#" onclick="return doclink('link-194', 'Element', 'link-30');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'litbrace'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1069"></a><tt class="py-lineno">1069</tt>  <tt class="py-line">            <tt class="py-name">openbrace_stack</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">end</tt><tt class="py-op">)</tt> </tt>
+<a name="L1070"></a><tt class="py-lineno">1070</tt>  <tt class="py-line">            <tt class="py-name">stack</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">children</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">stack</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class=" [...]
+<a name="L1071"></a><tt class="py-lineno">1071</tt>  <tt class="py-line">             </tt>
+<a name="L1072"></a><tt class="py-lineno">1072</tt>  <tt class="py-line">        <tt class="py-comment"># Close braces end colorizing elements.</tt> </tt>
+<a name="L1073"></a><tt class="py-lineno">1073</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">elif</tt> <tt class="py-name">match</tt><tt class="py-op">.</tt><tt class="py-name">group</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-string">'}'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1074"></a><tt class="py-lineno">1074</tt>  <tt class="py-line">            <tt class="py-comment"># Check for (and ignore) unbalanced braces.</tt> </tt>
+<a name="L1075"></a><tt class="py-lineno">1075</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">stack</tt><tt class="py-op">)</tt> <tt class="py-op"><=</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L1076"></a><tt class="py-lineno">1076</tt>  <tt class="py-line">                <tt class="py-name">estr</tt> <tt class="py-op">=</tt> <tt class="py-string">"Unbalanced '}'."</tt> </tt>
+<a name="L1077"></a><tt class="py-lineno">1077</tt>  <tt class="py-line">                <tt class="py-name">errors</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-195" class="py-name"><a title="epydoc.markup.epytext.ColorizingError" class="py-name" href="#" onclick="return doclink('link-195', 'ColorizingError', 'link-188');">ColorizingError</a></tt><tt class="py-op">(</tt><tt class="py-name">estr</tt><tt class="py-op">,</tt> <tt class="py- [...]
+<a name="L1078"></a><tt class="py-lineno">1078</tt>  <tt class="py-line">                <tt class="py-name">start</tt> <tt class="py-op">=</tt> <tt class="py-name">end</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt> </tt>
+<a name="L1079"></a><tt class="py-lineno">1079</tt>  <tt class="py-line">                <tt class="py-keyword">continue</tt> </tt>
+<a name="L1080"></a><tt class="py-lineno">1080</tt>  <tt class="py-line"> </tt>
+<a name="L1081"></a><tt class="py-lineno">1081</tt>  <tt class="py-line">            <tt class="py-comment"># Add any remaining text.</tt> </tt>
+<a name="L1082"></a><tt class="py-lineno">1082</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt class="py-name">end</tt> <tt class="py-op">></tt> <tt class="py-name">start</tt><tt class="py-op">:</tt> </tt>
+<a name="L1083"></a><tt class="py-lineno">1083</tt>  <tt class="py-line">                <tt class="py-name">stack</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">children</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">[</tt><tt class="py-name">start</tt><tt class="py-op">:</tt><tt class="py-name">end</tt><tt [...]
+<a name="L1084"></a><tt class="py-lineno">1084</tt>  <tt class="py-line"> </tt>
+<a name="L1085"></a><tt class="py-lineno">1085</tt>  <tt class="py-line">            <tt class="py-comment"># Special handling for symbols:</tt> </tt>
+<a name="L1086"></a><tt class="py-lineno">1086</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt class="py-name">stack</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-196" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-196', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt c [...]
+<a name="L1087"></a><tt class="py-lineno">1087</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">stack</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">children</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-number">1</tt> <tt class="py-keyword">or</tt> </tt>
+<a name="L1088"></a><tt class="py-lineno">1088</tt>  <tt class="py-line">                    <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">stack</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">children</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name"> [...]
+<a name="L1089"></a><tt class="py-lineno">1089</tt>  <tt class="py-line">                    <tt class="py-name">estr</tt> <tt class="py-op">=</tt> <tt class="py-string">"Invalid symbol code."</tt> </tt>
+<a name="L1090"></a><tt class="py-lineno">1090</tt>  <tt class="py-line">                    <tt class="py-name">errors</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-197" class="py-name"><a title="epydoc.markup.epytext.ColorizingError" class="py-name" href="#" onclick="return doclink('link-197', 'ColorizingError', 'link-188');">ColorizingError</a></tt><tt class="py-op">(</tt><tt class="py-name">estr</tt><tt class="py-op">,</tt> <tt class= [...]
+<a name="L1091"></a><tt class="py-lineno">1091</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1092"></a><tt class="py-lineno">1092</tt>  <tt class="py-line">                    <tt class="py-name">symb</tt> <tt class="py-op">=</tt> <tt class="py-name">stack</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">children</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L1093"></a><tt class="py-lineno">1093</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">symb</tt> <tt class="py-keyword">in</tt> <tt id="link-198" class="py-name"><a title="epydoc.markup.epytext._SYMBOLS" class="py-name" href="#" onclick="return doclink('link-198', '_SYMBOLS', 'link-21');">_SYMBOLS</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1094"></a><tt class="py-lineno">1094</tt>  <tt class="py-line">                        <tt class="py-comment"># It's a symbol</tt> </tt>
+<a name="L1095"></a><tt class="py-lineno">1095</tt>  <tt class="py-line"><tt class="py-comment"></tt>                        <tt class="py-name">stack</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">children</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-199" class="py-name"><a title="epydoc.mar [...]
+<a name="L1096"></a><tt class="py-lineno">1096</tt>  <tt class="py-line">                    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1097"></a><tt class="py-lineno">1097</tt>  <tt class="py-line">                        <tt class="py-name">estr</tt> <tt class="py-op">=</tt> <tt class="py-string">"Invalid symbol code."</tt> </tt>
+<a name="L1098"></a><tt class="py-lineno">1098</tt>  <tt class="py-line">                        <tt class="py-name">errors</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-200" class="py-name"><a title="epydoc.markup.epytext.ColorizingError" class="py-name" href="#" onclick="return doclink('link-200', 'ColorizingError', 'link-188');">ColorizingError</a></tt><tt class="py-op">(</tt><tt class="py-name">estr</tt><tt class="py-op">,</tt> <tt cl [...]
+<a name="L1099"></a><tt class="py-lineno">1099</tt>  <tt class="py-line">                         </tt>
+<a name="L1100"></a><tt class="py-lineno">1100</tt>  <tt class="py-line">            <tt class="py-comment"># Special handling for escape elements:</tt> </tt>
+<a name="L1101"></a><tt class="py-lineno">1101</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt class="py-name">stack</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-201" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-201', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt c [...]
+<a name="L1102"></a><tt class="py-lineno">1102</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">stack</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">children</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-number">1</tt> <tt class="py-keyword">or</tt> </tt>
+<a name="L1103"></a><tt class="py-lineno">1103</tt>  <tt class="py-line">                    <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">stack</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">children</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name"> [...]
+<a name="L1104"></a><tt class="py-lineno">1104</tt>  <tt class="py-line">                    <tt class="py-name">estr</tt> <tt class="py-op">=</tt> <tt class="py-string">"Invalid escape code."</tt> </tt>
+<a name="L1105"></a><tt class="py-lineno">1105</tt>  <tt class="py-line">                    <tt class="py-name">errors</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-202" class="py-name"><a title="epydoc.markup.epytext.ColorizingError" class="py-name" href="#" onclick="return doclink('link-202', 'ColorizingError', 'link-188');">ColorizingError</a></tt><tt class="py-op">(</tt><tt class="py-name">estr</tt><tt class="py-op">,</tt> <tt class= [...]
+<a name="L1106"></a><tt class="py-lineno">1106</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1107"></a><tt class="py-lineno">1107</tt>  <tt class="py-line">                    <tt class="py-name">escp</tt> <tt class="py-op">=</tt> <tt class="py-name">stack</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">children</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L1108"></a><tt class="py-lineno">1108</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">escp</tt> <tt class="py-keyword">in</tt> <tt id="link-203" class="py-name"><a title="epydoc.markup.epytext._ESCAPES" class="py-name" href="#" onclick="return doclink('link-203', '_ESCAPES', 'link-19');">_ESCAPES</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1109"></a><tt class="py-lineno">1109</tt>  <tt class="py-line">                        <tt class="py-comment"># It's an escape from _ESCPAES</tt> </tt>
+<a name="L1110"></a><tt class="py-lineno">1110</tt>  <tt class="py-line"><tt class="py-comment"></tt>                        <tt class="py-name">stack</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">children</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-204" class="py-name"><a title="epydoc.mar [...]
+<a name="L1111"></a><tt class="py-lineno">1111</tt>  <tt class="py-line">                    <tt class="py-keyword">elif</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">escp</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L1112"></a><tt class="py-lineno">1112</tt>  <tt class="py-line">                        <tt class="py-comment"># It's a single-character escape (eg E{.})</tt> </tt>
+<a name="L1113"></a><tt class="py-lineno">1113</tt>  <tt class="py-line"><tt class="py-comment"></tt>                        <tt class="py-name">stack</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">children</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">escp</tt> </tt>
+<a name="L1114"></a><tt class="py-lineno">1114</tt>  <tt class="py-line">                    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1115"></a><tt class="py-lineno">1115</tt>  <tt class="py-line">                        <tt class="py-name">estr</tt> <tt class="py-op">=</tt> <tt class="py-string">"Invalid escape code."</tt> </tt>
+<a name="L1116"></a><tt class="py-lineno">1116</tt>  <tt class="py-line">                        <tt class="py-name">errors</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-205" class="py-name"><a title="epydoc.markup.epytext.ColorizingError" class="py-name" href="#" onclick="return doclink('link-205', 'ColorizingError', 'link-188');">ColorizingError</a></tt><tt class="py-op">(</tt><tt class="py-name">estr</tt><tt class="py-op">,</tt> <tt cl [...]
+<a name="L1117"></a><tt class="py-lineno">1117</tt>  <tt class="py-line"> </tt>
+<a name="L1118"></a><tt class="py-lineno">1118</tt>  <tt class="py-line">            <tt class="py-comment"># Special handling for literal braces elements:</tt> </tt>
+<a name="L1119"></a><tt class="py-lineno">1119</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt class="py-name">stack</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-206" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-206', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt c [...]
+<a name="L1120"></a><tt class="py-lineno">1120</tt>  <tt class="py-line">                <tt class="py-name">stack</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">children</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-string">'{'</tt><tt class="p [...]
+<a name="L1121"></a><tt class="py-lineno">1121</tt>  <tt class="py-line"> </tt>
+<a name="L1122"></a><tt class="py-lineno">1122</tt>  <tt class="py-line">            <tt class="py-comment"># Special handling for graphs:</tt> </tt>
+<a name="L1123"></a><tt class="py-lineno">1123</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt class="py-name">stack</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-207" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-207', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt c [...]
+<a name="L1124"></a><tt class="py-lineno">1124</tt>  <tt class="py-line">                <tt id="link-208" class="py-name" targets="Function epydoc.markup.epytext._colorize_graph()=epydoc.markup.epytext-module.html#_colorize_graph"><a title="epydoc.markup.epytext._colorize_graph" class="py-name" href="#" onclick="return doclink('link-208', '_colorize_graph', 'link-208');">_colorize_graph</a></tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt class="py-na [...]
+<a name="L1125"></a><tt class="py-lineno">1125</tt>  <tt class="py-line"> </tt>
+<a name="L1126"></a><tt class="py-lineno">1126</tt>  <tt class="py-line">            <tt class="py-comment"># Special handling for link-type elements:</tt> </tt>
+<a name="L1127"></a><tt class="py-lineno">1127</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt class="py-name">stack</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-209" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-209', 'tag', 'link-13');">tag</a></tt> <tt class="py-keyword">in</tt>  [...]
+<a name="L1128"></a><tt class="py-lineno">1128</tt>  <tt class="py-line">                <tt id="link-211" class="py-name" targets="Function epydoc.markup.epytext._colorize_link()=epydoc.markup.epytext-module.html#_colorize_link"><a title="epydoc.markup.epytext._colorize_link" class="py-name" href="#" onclick="return doclink('link-211', '_colorize_link', 'link-211');">_colorize_link</a></tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">,</tt> <tt class="py-name">s [...]
+<a name="L1129"></a><tt class="py-lineno">1129</tt>  <tt class="py-line"> </tt>
+<a name="L1130"></a><tt class="py-lineno">1130</tt>  <tt class="py-line">            <tt class="py-comment"># Pop the completed element.</tt> </tt>
+<a name="L1131"></a><tt class="py-lineno">1131</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">openbrace_stack</tt><tt class="py-op">.</tt><tt class="py-name">pop</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1132"></a><tt class="py-lineno">1132</tt>  <tt class="py-line">            <tt class="py-name">stack</tt><tt class="py-op">.</tt><tt class="py-name">pop</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1133"></a><tt class="py-lineno">1133</tt>  <tt class="py-line"> </tt>
+<a name="L1134"></a><tt class="py-lineno">1134</tt>  <tt class="py-line">        <tt class="py-name">start</tt> <tt class="py-op">=</tt> <tt class="py-name">end</tt><tt class="py-op">+</tt><tt class="py-number">1</tt> </tt>
+<a name="L1135"></a><tt class="py-lineno">1135</tt>  <tt class="py-line"> </tt>
+<a name="L1136"></a><tt class="py-lineno">1136</tt>  <tt class="py-line">    <tt class="py-comment"># Add any final text.</tt> </tt>
+<a name="L1137"></a><tt class="py-lineno">1137</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">start</tt> <tt class="py-op"><</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1138"></a><tt class="py-lineno">1138</tt>  <tt class="py-line">        <tt class="py-name">stack</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">children</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">[</tt><tt class="py-name">start</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-o [...]
+<a name="L1139"></a><tt class="py-lineno">1139</tt>  <tt class="py-line">         </tt>
+<a name="L1140"></a><tt class="py-lineno">1140</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">stack</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt>  </tt>
+<a name="L1141"></a><tt class="py-lineno">1141</tt>  <tt class="py-line">        <tt class="py-name">estr</tt> <tt class="py-op">=</tt> <tt class="py-string">"Unbalanced '{'."</tt> </tt>
+<a name="L1142"></a><tt class="py-lineno">1142</tt>  <tt class="py-line">        <tt class="py-name">errors</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-212" class="py-name"><a title="epydoc.markup.epytext.ColorizingError" class="py-name" href="#" onclick="return doclink('link-212', 'ColorizingError', 'link-188');">ColorizingError</a></tt><tt class="py-op">(</tt><tt class="py-name">estr</tt><tt class="py-op">,</tt> <tt class="py-name">to [...]
+<a name="L1143"></a><tt class="py-lineno">1143</tt>  <tt class="py-line"> </tt>
+<a name="L1144"></a><tt class="py-lineno">1144</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">stack</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+</div><a name="L1145"></a><tt class="py-lineno">1145</tt>  <tt class="py-line"> </tt>
+<a name="L1146"></a><tt class="py-lineno">1146</tt>  <tt class="py-line"><tt id="link-213" class="py-name" targets="Variable epydoc.cli.GRAPH_TYPES=epydoc.cli-module.html#GRAPH_TYPES,Variable epydoc.markup.epytext.GRAPH_TYPES=epydoc.markup.epytext-module.html#GRAPH_TYPES"><a title="epydoc.cli.GRAPH_TYPES
+epydoc.markup.epytext.GRAPH_TYPES" class="py-name" href="#" onclick="return doclink('link-213', 'GRAPH_TYPES', 'link-213');">GRAPH_TYPES</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-string">'classtree'</tt><tt class="py-op">,</tt> <tt class="py-string">'packagetree'</tt><tt class="py-op">,</tt> <tt class="py-string">'importgraph'</tt><tt class="py-op">,</tt> <tt class="py-string">'callgraph'</tt><tt class="py-op">]</tt> </tt>
+<a name="L1147"></a><tt class="py-lineno">1147</tt>  <tt class="py-line"> </tt>
+<a name="_colorize_graph"></a><div id="_colorize_graph-def"><a name="L1148"></a><tt class="py-lineno">1148</tt> <a class="py-toggle" href="#" id="_colorize_graph-toggle" onclick="return toggle('_colorize_graph');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.epytext-module.html#_colorize_graph">_colorize_graph</a><tt class="py-op">(</tt><tt class="py-param">doc</tt><tt class="py-op">,</tt> <tt class="py-param">graph</tt><tt class="py [...]
+</div><div id="_colorize_graph-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_colorize_graph-expanded"><a name="L1149"></a><tt class="py-lineno">1149</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L1150"></a><tt class="py-lineno">1150</tt>  <tt class="py-line"><tt class="py-docstring">    Eg::</tt> </tt>
+<a name="L1151"></a><tt class="py-lineno">1151</tt>  <tt class="py-line"><tt class="py-docstring">      G{classtree}</tt> </tt>
+<a name="L1152"></a><tt class="py-lineno">1152</tt>  <tt class="py-line"><tt class="py-docstring">      G{classtree x, y, z}</tt> </tt>
+<a name="L1153"></a><tt class="py-lineno">1153</tt>  <tt class="py-line"><tt class="py-docstring">      G{importgraph}</tt> </tt>
+<a name="L1154"></a><tt class="py-lineno">1154</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1155"></a><tt class="py-lineno">1155</tt>  <tt class="py-line">    <tt class="py-name">bad_graph_spec</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L1156"></a><tt class="py-lineno">1156</tt>  <tt class="py-line">     </tt>
+<a name="L1157"></a><tt class="py-lineno">1157</tt>  <tt class="py-line">    <tt class="py-name">children</tt> <tt class="py-op">=</tt> <tt id="link-214" class="py-name" targets="Method epydoc.markup.restructuredtext.dotgraph.graph()=epydoc.markup.restructuredtext.dotgraph-class.html#graph"><a title="epydoc.markup.restructuredtext.dotgraph.graph" class="py-name" href="#" onclick="return doclink('link-214', 'graph', 'link-214');">graph</a></tt><tt class="py-op">.</tt><tt class="py-name">c [...]
+<a name="L1158"></a><tt class="py-lineno">1158</tt>  <tt class="py-line">    <tt id="link-215" class="py-name"><a title="epydoc.markup.restructuredtext.dotgraph.graph" class="py-name" href="#" onclick="return doclink('link-215', 'graph', 'link-214');">graph</a></tt><tt class="py-op">.</tt><tt class="py-name">children</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L1159"></a><tt class="py-lineno">1159</tt>  <tt class="py-line"> </tt>
+<a name="L1160"></a><tt class="py-lineno">1160</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">children</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-number">1</tt> <tt class="py-keyword">or</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">children</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="p [...]
+<a name="L1161"></a><tt class="py-lineno">1161</tt>  <tt class="py-line">        <tt class="py-name">bad_graph_spec</tt> <tt class="py-op">=</tt> <tt class="py-string">"Bad graph specification"</tt> </tt>
+<a name="L1162"></a><tt class="py-lineno">1162</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1163"></a><tt class="py-lineno">1163</tt>  <tt class="py-line">        <tt class="py-name">pieces</tt> <tt class="py-op">=</tt> <tt class="py-name">children</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L1164"></a><tt class="py-lineno">1164</tt>  <tt class="py-line">        <tt class="py-name">graphtype</tt> <tt class="py-op">=</tt> <tt class="py-name">pieces</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">':'</tt><tt class="py-op">,</tt><tt class="py-string">''</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">strip</tt><tt [...]
+<a name="L1165"></a><tt class="py-lineno">1165</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">graphtype</tt> <tt class="py-keyword">in</tt> <tt id="link-216" class="py-name"><a title="epydoc.cli.GRAPH_TYPES
+epydoc.markup.epytext.GRAPH_TYPES" class="py-name" href="#" onclick="return doclink('link-216', 'GRAPH_TYPES', 'link-213');">GRAPH_TYPES</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1166"></a><tt class="py-lineno">1166</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">pieces</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">2</tt><tt class="py-op">:</tt> </tt>
+<a name="L1167"></a><tt class="py-lineno">1167</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">match</tt><tt class="py-op">(</tt><tt class="py-string">r'\s*:?\s*([\w\.]+\s*,?\s*)*'</tt><tt class="py-op">,</tt> <tt class="py-name">pieces</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1168"></a><tt class="py-lineno">1168</tt>  <tt class="py-line">                    <tt class="py-name">args</tt> <tt class="py-op">=</tt> <tt class="py-name">pieces</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">','</tt><tt class="py-op">,</tt> <tt class="py-string">' '</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">repl [...]
+<a name="L1169"></a><tt class="py-lineno">1169</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1170"></a><tt class="py-lineno">1170</tt>  <tt class="py-line">                    <tt class="py-name">bad_graph_spec</tt> <tt class="py-op">=</tt> <tt class="py-string">"Bad graph arg list"</tt> </tt>
+<a name="L1171"></a><tt class="py-lineno">1171</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1172"></a><tt class="py-lineno">1172</tt>  <tt class="py-line">                <tt class="py-name">args</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L1173"></a><tt class="py-lineno">1173</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1174"></a><tt class="py-lineno">1174</tt>  <tt class="py-line">            <tt class="py-name">bad_graph_spec</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">"Bad graph type %s -- use one of %s"</tt> <tt class="py-op">%</tt> </tt>
+<a name="L1175"></a><tt class="py-lineno">1175</tt>  <tt class="py-line">                              <tt class="py-op">(</tt><tt class="py-name">pieces</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-string">', '</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt id="link-217" class="py-name"><a title="epydoc.cli.GRAPH_TYPES
+epydoc.markup.epytext.GRAPH_TYPES" class="py-name" href="#" onclick="return doclink('link-217', 'GRAPH_TYPES', 'link-213');">GRAPH_TYPES</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1176"></a><tt class="py-lineno">1176</tt>  <tt class="py-line"> </tt>
+<a name="L1177"></a><tt class="py-lineno">1177</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">bad_graph_spec</tt><tt class="py-op">:</tt> </tt>
+<a name="L1178"></a><tt class="py-lineno">1178</tt>  <tt class="py-line">        <tt class="py-name">errors</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-218" class="py-name"><a title="epydoc.markup.epytext.ColorizingError" class="py-name" href="#" onclick="return doclink('link-218', 'ColorizingError', 'link-188');">ColorizingError</a></tt><tt class="py-op">(</tt><tt class="py-name">bad_graph_spec</tt><tt class="py-op">,</tt> <tt class="p [...]
+<a name="L1179"></a><tt class="py-lineno">1179</tt>  <tt class="py-line">        <tt id="link-219" class="py-name"><a title="epydoc.markup.restructuredtext.dotgraph.graph" class="py-name" href="#" onclick="return doclink('link-219', 'graph', 'link-214');">graph</a></tt><tt class="py-op">.</tt><tt class="py-name">children</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">'none'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1180"></a><tt class="py-lineno">1180</tt>  <tt class="py-line">        <tt id="link-220" class="py-name"><a title="epydoc.markup.restructuredtext.dotgraph.graph" class="py-name" href="#" onclick="return doclink('link-220', 'graph', 'link-214');">graph</a></tt><tt class="py-op">.</tt><tt class="py-name">children</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">''</tt><tt class="py-op">)</tt> </tt>
+<a name="L1181"></a><tt class="py-lineno">1181</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> </tt>
+<a name="L1182"></a><tt class="py-lineno">1182</tt>  <tt class="py-line"> </tt>
+<a name="L1183"></a><tt class="py-lineno">1183</tt>  <tt class="py-line">    <tt id="link-221" class="py-name"><a title="epydoc.markup.restructuredtext.dotgraph.graph" class="py-name" href="#" onclick="return doclink('link-221', 'graph', 'link-214');">graph</a></tt><tt class="py-op">.</tt><tt class="py-name">children</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">graphtype</tt><tt class="py-op">)</tt> </tt>
+<a name="L1184"></a><tt class="py-lineno">1184</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt id="link-222" class="py-name" targets="Method epydoc.markup.Field.arg()=epydoc.markup.Field-class.html#arg"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-222', 'arg', 'link-222');">arg</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">args</tt><tt class="py-op">:</tt> </tt>
+<a name="L1185"></a><tt class="py-lineno">1185</tt>  <tt class="py-line">        <tt id="link-223" class="py-name"><a title="epydoc.markup.restructuredtext.dotgraph.graph" class="py-name" href="#" onclick="return doclink('link-223', 'graph', 'link-214');">graph</a></tt><tt class="py-op">.</tt><tt class="py-name">children</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-224" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" h [...]
+</div><a name="L1186"></a><tt class="py-lineno">1186</tt>  <tt class="py-line"> </tt>
+<a name="_colorize_link"></a><div id="_colorize_link-def"><a name="L1187"></a><tt class="py-lineno">1187</tt> <a class="py-toggle" href="#" id="_colorize_link-toggle" onclick="return toggle('_colorize_link');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.epytext-module.html#_colorize_link">_colorize_link</a><tt class="py-op">(</tt><tt class="py-param">doc</tt><tt class="py-op">,</tt> <tt class="py-param">link</tt><tt class="py-op">,< [...]
+</div><div id="_colorize_link-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_colorize_link-expanded"><a name="L1188"></a><tt class="py-lineno">1188</tt>  <tt class="py-line">    <tt id="link-225" class="py-name" targets="Variable epydoc.apidoc.NamespaceDoc.variables=epydoc.apidoc.NamespaceDoc-class.html#variables"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-225', 'variables', 'link-225');">variables</a> [...]
+<a name="L1189"></a><tt class="py-lineno">1189</tt>  <tt class="py-line"> </tt>
+<a name="L1190"></a><tt class="py-lineno">1190</tt>  <tt class="py-line">    <tt class="py-comment"># If the last child isn't text, we know it's bad.</tt> </tt>
+<a name="L1191"></a><tt class="py-lineno">1191</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-227" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-227', 'variables', 'link-225');">variables</a></tt><tt class="py-op">)</tt><tt class="py-op">==</tt><tt class="py-number">0</tt> <tt class="py-keyword">or</tt> <tt cla [...]
+<a name="L1192"></a><tt class="py-lineno">1192</tt>  <tt class="py-line">        <tt class="py-name">estr</tt> <tt class="py-op">=</tt> <tt class="py-string">"Bad %s target."</tt> <tt class="py-op">%</tt> <tt id="link-229" class="py-name"><a title="epydoc.docwriter.dotgraph.DotGraph.link" class="py-name" href="#" onclick="return doclink('link-229', 'link', 'link-226');">link</a></tt><tt class="py-op">.</tt><tt id="link-230" class="py-name"><a title="epydoc.markup.Field.tag" class="py-nam [...]
+<a name="L1193"></a><tt class="py-lineno">1193</tt>  <tt class="py-line">        <tt class="py-name">errors</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-231" class="py-name"><a title="epydoc.markup.epytext.ColorizingError" class="py-name" href="#" onclick="return doclink('link-231', 'ColorizingError', 'link-188');">ColorizingError</a></tt><tt class="py-op">(</tt><tt class="py-name">estr</tt><tt class="py-op">,</tt> <tt class="py-name">to [...]
+<a name="L1194"></a><tt class="py-lineno">1194</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> </tt>
+<a name="L1195"></a><tt class="py-lineno">1195</tt>  <tt class="py-line">     </tt>
+<a name="L1196"></a><tt class="py-lineno">1196</tt>  <tt class="py-line">    <tt class="py-comment"># Did they provide an explicit target?</tt> </tt>
+<a name="L1197"></a><tt class="py-lineno">1197</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">match2</tt> <tt class="py-op">=</tt> <tt id="link-232" class="py-name"><a title="epydoc.markup.epytext._TARGET_RE" class="py-name" href="#" onclick="return doclink('link-232', '_TARGET_RE', 'link-183');">_TARGET_RE</a></tt><tt class="py-op">.</tt><tt class="py-name">match</tt><tt class="py-op">(</tt><tt id="link-233" class="py-name"><a title="epydoc.apidoc.Namespac [...]
+<a name="L1198"></a><tt class="py-lineno">1198</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">match2</tt><tt class="py-op">:</tt> </tt>
+<a name="L1199"></a><tt class="py-lineno">1199</tt>  <tt class="py-line">        <tt class="py-op">(</tt><tt class="py-name">text</tt><tt class="py-op">,</tt> <tt class="py-name">target</tt><tt class="py-op">)</tt> <tt class="py-op">=</tt> <tt class="py-name">match2</tt><tt class="py-op">.</tt><tt class="py-name">groups</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1200"></a><tt class="py-lineno">1200</tt>  <tt class="py-line">        <tt id="link-234" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-234', 'variables', 'link-225');">variables</a></tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">text</tt> </tt>
+<a name="L1201"></a><tt class="py-lineno">1201</tt>  <tt class="py-line">    <tt class="py-comment"># Can we extract an implicit target?</tt> </tt>
+<a name="L1202"></a><tt class="py-lineno">1202</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">elif</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-235" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-235', 'variables', 'link-225');">variables</a></tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L1203"></a><tt class="py-lineno">1203</tt>  <tt class="py-line">        <tt class="py-name">target</tt> <tt class="py-op">=</tt> <tt id="link-236" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-236', 'variables', 'link-225');">variables</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L1204"></a><tt class="py-lineno">1204</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1205"></a><tt class="py-lineno">1205</tt>  <tt class="py-line">        <tt class="py-name">estr</tt> <tt class="py-op">=</tt> <tt class="py-string">"Bad %s target."</tt> <tt class="py-op">%</tt> <tt id="link-237" class="py-name"><a title="epydoc.docwriter.dotgraph.DotGraph.link" class="py-name" href="#" onclick="return doclink('link-237', 'link', 'link-226');">link</a></tt><tt class="py-op">.</tt><tt id="link-238" class="py-name"><a title="epydoc.markup.Field.tag" class="py-nam [...]
+<a name="L1206"></a><tt class="py-lineno">1206</tt>  <tt class="py-line">        <tt class="py-name">errors</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-239" class="py-name"><a title="epydoc.markup.epytext.ColorizingError" class="py-name" href="#" onclick="return doclink('link-239', 'ColorizingError', 'link-188');">ColorizingError</a></tt><tt class="py-op">(</tt><tt class="py-name">estr</tt><tt class="py-op">,</tt> <tt class="py-name">to [...]
+<a name="L1207"></a><tt class="py-lineno">1207</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> </tt>
+<a name="L1208"></a><tt class="py-lineno">1208</tt>  <tt class="py-line"> </tt>
+<a name="L1209"></a><tt class="py-lineno">1209</tt>  <tt class="py-line">    <tt class="py-comment"># Construct the name element.</tt> </tt>
+<a name="L1210"></a><tt class="py-lineno">1210</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">name_elt</tt> <tt class="py-op">=</tt> <tt id="link-240" class="py-name"><a title="epydoc.markup.epytext.Element" class="py-name" href="#" onclick="return doclink('link-240', 'Element', 'link-30');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'name'</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt id="link-241" class="py-name"><a title="ep [...]
+<a name="L1211"></a><tt class="py-lineno">1211</tt>  <tt class="py-line"> </tt>
+<a name="L1212"></a><tt class="py-lineno">1212</tt>  <tt class="py-line">    <tt class="py-comment"># Clean up the target.  For URIs, assume http or mailto if they</tt> </tt>
+<a name="L1213"></a><tt class="py-lineno">1213</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># don't specify (no relative urls)</tt> </tt>
+<a name="L1214"></a><tt class="py-lineno">1214</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">target</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt class="py-string">r'\s'</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">,</tt> <tt class="py-name">target</tt><tt class="py-op">)</tt> </tt>
+<a name="L1215"></a><tt class="py-lineno">1215</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-242" class="py-name"><a title="epydoc.docwriter.dotgraph.DotGraph.link" class="py-name" href="#" onclick="return doclink('link-242', 'link', 'link-226');">link</a></tt><tt class="py-op">.</tt><tt id="link-243" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-243', 'tag', 'link-13');">tag</a></tt><tt class="py-op" [...]
+<a name="L1216"></a><tt class="py-lineno">1216</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">match</tt><tt class="py-op">(</tt><tt class="py-string">r'\w+:'</tt><tt class="py-op">,</tt> <tt class="py-name">target</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1217"></a><tt class="py-lineno">1217</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">match</tt><tt class="py-op">(</tt><tt class="py-string">r'\w+@(\w+)(\.\w+)*'</tt><tt class="py-op">,</tt> <tt class="py-name">target</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1218"></a><tt class="py-lineno">1218</tt>  <tt class="py-line">                <tt class="py-name">target</tt> <tt class="py-op">=</tt> <tt class="py-string">'mailto:'</tt> <tt class="py-op">+</tt> <tt class="py-name">target</tt> </tt>
+<a name="L1219"></a><tt class="py-lineno">1219</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1220"></a><tt class="py-lineno">1220</tt>  <tt class="py-line">                <tt class="py-name">target</tt> <tt class="py-op">=</tt> <tt class="py-string">'http://'</tt><tt class="py-op">+</tt><tt class="py-name">target</tt> </tt>
+<a name="L1221"></a><tt class="py-lineno">1221</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt id="link-244" class="py-name"><a title="epydoc.docwriter.dotgraph.DotGraph.link" class="py-name" href="#" onclick="return doclink('link-244', 'link', 'link-226');">link</a></tt><tt class="py-op">.</tt><tt id="link-245" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-245', 'tag', 'link-13');">tag</a></tt><tt class="py-o [...]
+<a name="L1222"></a><tt class="py-lineno">1222</tt>  <tt class="py-line">        <tt class="py-comment"># Remove arg lists for functions (e.g., L{_colorize_link()})</tt> </tt>
+<a name="L1223"></a><tt class="py-lineno">1223</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">target</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt class="py-string">r'\(.*\)$'</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">,</tt> <tt class="py-name">target</tt><tt class="py-op">)</tt> </tt>
+<a name="L1224"></a><tt class="py-lineno">1224</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">match</tt><tt class="py-op">(</tt><tt class="py-string">r'^[a-zA-Z_]\w*(\.[a-zA-Z_]\w*)*$'</tt><tt class="py-op">,</tt> <tt class="py-name">target</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1225"></a><tt class="py-lineno">1225</tt>  <tt class="py-line">            <tt class="py-name">estr</tt> <tt class="py-op">=</tt> <tt class="py-string">"Bad link target."</tt> </tt>
+<a name="L1226"></a><tt class="py-lineno">1226</tt>  <tt class="py-line">            <tt class="py-name">errors</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-246" class="py-name"><a title="epydoc.markup.epytext.ColorizingError" class="py-name" href="#" onclick="return doclink('link-246', 'ColorizingError', 'link-188');">ColorizingError</a></tt><tt class="py-op">(</tt><tt class="py-name">estr</tt><tt class="py-op">,</tt> <tt class="py-name [...]
+<a name="L1227"></a><tt class="py-lineno">1227</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> </tt>
+<a name="L1228"></a><tt class="py-lineno">1228</tt>  <tt class="py-line"> </tt>
+<a name="L1229"></a><tt class="py-lineno">1229</tt>  <tt class="py-line">    <tt class="py-comment"># Construct the target element.</tt> </tt>
+<a name="L1230"></a><tt class="py-lineno">1230</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">target_elt</tt> <tt class="py-op">=</tt> <tt id="link-247" class="py-name"><a title="epydoc.markup.epytext.Element" class="py-name" href="#" onclick="return doclink('link-247', 'Element', 'link-30');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'target'</tt><tt class="py-op">,</tt> <tt class="py-name">target</tt><tt class="py-op">)</tt> </tt>
+<a name="L1231"></a><tt class="py-lineno">1231</tt>  <tt class="py-line"> </tt>
+<a name="L1232"></a><tt class="py-lineno">1232</tt>  <tt class="py-line">    <tt class="py-comment"># Add them to the link element.</tt> </tt>
+<a name="L1233"></a><tt class="py-lineno">1233</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-248" class="py-name"><a title="epydoc.docwriter.dotgraph.DotGraph.link" class="py-name" href="#" onclick="return doclink('link-248', 'link', 'link-226');">link</a></tt><tt class="py-op">.</tt><tt class="py-name">children</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">name_elt</tt><tt class="py-op">,</tt> <tt class="py-name">target_elt</tt><tt cl [...]
+</div><a name="L1234"></a><tt class="py-lineno">1234</tt>  <tt class="py-line"> </tt>
+<a name="L1235"></a><tt class="py-lineno">1235</tt>  <tt class="py-line"><tt class="py-comment">##################################################</tt> </tt>
+<a name="L1236"></a><tt class="py-lineno">1236</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## Formatters</tt> </tt>
+<a name="L1237"></a><tt class="py-lineno">1237</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">##################################################</tt> </tt>
+<a name="L1238"></a><tt class="py-lineno">1238</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="to_epytext"></a><div id="to_epytext-def"><a name="L1239"></a><tt class="py-lineno">1239</tt> <a class="py-toggle" href="#" id="to_epytext-toggle" onclick="return toggle('to_epytext');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.epytext-module.html#to_epytext">to_epytext</a><tt class="py-op">(</tt><tt class="py-param">tree</tt><tt class="py-op">,</tt> <tt class="py-param">indent</tt><tt class="py-op">=</tt><tt class="py-num [...]
+</div><div id="to_epytext-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="to_epytext-expanded"><a name="L1240"></a><tt class="py-lineno">1240</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L1241"></a><tt class="py-lineno">1241</tt>  <tt class="py-line"><tt class="py-docstring">    Convert a DOM document encoding epytext back to an epytext string.</tt> </tt>
+<a name="L1242"></a><tt class="py-lineno">1242</tt>  <tt class="py-line"><tt class="py-docstring">    This is the inverse operation from L{parse}.  I.e., assuming there</tt> </tt>
+<a name="L1243"></a><tt class="py-lineno">1243</tt>  <tt class="py-line"><tt class="py-docstring">    are no errors, the following is true:</tt> </tt>
+<a name="L1244"></a><tt class="py-lineno">1244</tt>  <tt class="py-line"><tt class="py-docstring">        - C{parse(to_epytext(tree)) == tree}</tt> </tt>
+<a name="L1245"></a><tt class="py-lineno">1245</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1246"></a><tt class="py-lineno">1246</tt>  <tt class="py-line"><tt class="py-docstring">    The inverse is true, except that whitespace, line wrapping, and</tt> </tt>
+<a name="L1247"></a><tt class="py-lineno">1247</tt>  <tt class="py-line"><tt class="py-docstring">    character escaping may be done differently.</tt> </tt>
+<a name="L1248"></a><tt class="py-lineno">1248</tt>  <tt class="py-line"><tt class="py-docstring">        - C{to_epytext(parse(str)) == str} (approximately)</tt> </tt>
+<a name="L1249"></a><tt class="py-lineno">1249</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1250"></a><tt class="py-lineno">1250</tt>  <tt class="py-line"><tt class="py-docstring">    @param tree: A DOM document encoding of an epytext string.</tt> </tt>
+<a name="L1251"></a><tt class="py-lineno">1251</tt>  <tt class="py-line"><tt class="py-docstring">    @type tree: C{Element}</tt> </tt>
+<a name="L1252"></a><tt class="py-lineno">1252</tt>  <tt class="py-line"><tt class="py-docstring">    @param indent: The indentation for the string representation of</tt> </tt>
+<a name="L1253"></a><tt class="py-lineno">1253</tt>  <tt class="py-line"><tt class="py-docstring">        C{tree}.  Each line of the returned string will begin with</tt> </tt>
+<a name="L1254"></a><tt class="py-lineno">1254</tt>  <tt class="py-line"><tt class="py-docstring">        C{indent} space characters.</tt> </tt>
+<a name="L1255"></a><tt class="py-lineno">1255</tt>  <tt class="py-line"><tt class="py-docstring">    @type indent: C{int}</tt> </tt>
+<a name="L1256"></a><tt class="py-lineno">1256</tt>  <tt class="py-line"><tt class="py-docstring">    @param seclevel: The section level that C{tree} appears at.  This</tt> </tt>
+<a name="L1257"></a><tt class="py-lineno">1257</tt>  <tt class="py-line"><tt class="py-docstring">        is used to generate section headings.</tt> </tt>
+<a name="L1258"></a><tt class="py-lineno">1258</tt>  <tt class="py-line"><tt class="py-docstring">    @type seclevel: C{int}</tt> </tt>
+<a name="L1259"></a><tt class="py-lineno">1259</tt>  <tt class="py-line"><tt class="py-docstring">    @return: The epytext string corresponding to C{tree}.</tt> </tt>
+<a name="L1260"></a><tt class="py-lineno">1260</tt>  <tt class="py-line"><tt class="py-docstring">    @rtype: C{string}</tt> </tt>
+<a name="L1261"></a><tt class="py-lineno">1261</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1262"></a><tt class="py-lineno">1262</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1263"></a><tt class="py-lineno">1263</tt>  <tt class="py-line">        <tt class="py-name">str</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt class="py-string">r'\{'</tt><tt class="py-op">,</tt> <tt class="py-string">'\0'</tt><tt class="py-op">,</tt> <tt class="py-name">tree</tt><tt class="py-op">)</tt> </tt>
+<a name="L1264"></a><tt class="py-lineno">1264</tt>  <tt class="py-line">        <tt class="py-name">str</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt class="py-string">r'\}'</tt><tt class="py-op">,</tt> <tt class="py-string">'\1'</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">)</tt> </tt>
+<a name="L1265"></a><tt class="py-lineno">1265</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">str</tt> </tt>
+<a name="L1266"></a><tt class="py-lineno">1266</tt>  <tt class="py-line"> </tt>
+<a name="L1267"></a><tt class="py-lineno">1267</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-249" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-249', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'epytext'</tt><tt class="py-op">:</tt> <tt class="py-name">indent</tt> <tt class="py-op">-=</tt> <tt class="py-number">2 [...]
+<a name="L1268"></a><tt class="py-lineno">1268</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-250" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-250', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'section'</tt><tt class="py-op">:</tt> <tt class="py-name">seclevel</tt> <tt class="py-op">+=</tt> <tt class="py-number" [...]
+<a name="L1269"></a><tt class="py-lineno">1269</tt>  <tt class="py-line">    <tt id="link-251" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-251', 'variables', 'link-225');">variables</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt id="link-252" class="py-name" targets="Function epydoc.markup.epytext.to_epytext()=epydoc.markup.epytext-module.html#to_epytext"><a title="epydoc.markup.epytext.to_epytext"  [...]
+<a name="L1270"></a><tt class="py-lineno">1270</tt>  <tt class="py-line">    <tt class="py-name">childstr</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt id="link-253" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-253', 'variables', 'link-225');">variables</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1271"></a><tt class="py-lineno">1271</tt>  <tt class="py-line"> </tt>
+<a name="L1272"></a><tt class="py-lineno">1272</tt>  <tt class="py-line">    <tt class="py-comment"># Clean up for literal blocks (add the double "::" back)</tt> </tt>
+<a name="L1273"></a><tt class="py-lineno">1273</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">childstr</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt class="py-string">':(\s*)\2'</tt><tt class="py-op">,</tt> <tt class="py-string">'::\\1'</tt><tt class="py-op">,</tt> <tt class="py-name">childstr</tt><tt class="py-op">)</tt> </tt>
+<a name="L1274"></a><tt class="py-lineno">1274</tt>  <tt class="py-line"> </tt>
+<a name="L1275"></a><tt class="py-lineno">1275</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-254" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-254', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'para'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1276"></a><tt class="py-lineno">1276</tt>  <tt class="py-line">        <tt class="py-name">str</tt> <tt class="py-op">=</tt> <tt id="link-255" class="py-name"><a title="epydoc.util.wordwrap" class="py-name" href="#" onclick="return doclink('link-255', 'wordwrap', 'link-5');">wordwrap</a></tt><tt class="py-op">(</tt><tt class="py-name">childstr</tt><tt class="py-op">,</tt> <tt class="py-name">indent</tt><tt class="py-op">)</tt><tt class="py-op">+</tt><tt class="py-string">'\n'</ [...]
+<a name="L1277"></a><tt class="py-lineno">1277</tt>  <tt class="py-line">        <tt class="py-name">str</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt class="py-string">r'((^|\n)\s*\d+)\.'</tt><tt class="py-op">,</tt> <tt class="py-string">r'\1E{.}'</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">)</tt> </tt>
+<a name="L1278"></a><tt class="py-lineno">1278</tt>  <tt class="py-line">        <tt class="py-name">str</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt class="py-string">r'((^|\n)\s*)-'</tt><tt class="py-op">,</tt> <tt class="py-string">r'\1E{-}'</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">)</tt> </tt>
+<a name="L1279"></a><tt class="py-lineno">1279</tt>  <tt class="py-line">        <tt class="py-name">str</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt class="py-string">r'((^|\n)\s*)@'</tt><tt class="py-op">,</tt> <tt class="py-string">r'\1E{@}'</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">)</tt> </tt>
+<a name="L1280"></a><tt class="py-lineno">1280</tt>  <tt class="py-line">        <tt class="py-name">str</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt class="py-string">r'::(\s*($|\n))'</tt><tt class="py-op">,</tt> <tt class="py-string">r'E{:}E{:}\1'</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">)</tt> </tt>
+<a name="L1281"></a><tt class="py-lineno">1281</tt>  <tt class="py-line">        <tt class="py-name">str</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt class="py-string">'\0'</tt><tt class="py-op">,</tt> <tt class="py-string">'E{lb}'</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">)</tt> </tt>
+<a name="L1282"></a><tt class="py-lineno">1282</tt>  <tt class="py-line">        <tt class="py-name">str</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt class="py-string">'\1'</tt><tt class="py-op">,</tt> <tt class="py-string">'E{rb}'</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">)</tt> </tt>
+<a name="L1283"></a><tt class="py-lineno">1283</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">str</tt> </tt>
+<a name="L1284"></a><tt class="py-lineno">1284</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-256" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-256', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'li'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1285"></a><tt class="py-lineno">1285</tt>  <tt class="py-line">        <tt class="py-name">bullet</tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt class="py-name">attribs</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'bullet'</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-string">'-'</tt> </tt>
+<a name="L1286"></a><tt class="py-lineno">1286</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">indent</tt><tt class="py-op">*</tt><tt class="py-string">' '</tt><tt class="py-op">+</tt> <tt class="py-name">bullet</tt> <tt class="py-op">+</tt> <tt class="py-string">' '</tt> <tt class="py-op">+</tt> <tt class="py-name">childstr</tt><tt class="py-op">.</tt><tt class="py-name">lstrip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1287"></a><tt class="py-lineno">1287</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-257" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-257', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'heading'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1288"></a><tt class="py-lineno">1288</tt>  <tt class="py-line">        <tt class="py-name">str</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt class="py-string">'\0'</tt><tt class="py-op">,</tt> <tt class="py-string">'E{lb}'</tt><tt class="py-op">,</tt><tt class="py-name">childstr</tt><tt class="py-op">)</tt> </tt>
+<a name="L1289"></a><tt class="py-lineno">1289</tt>  <tt class="py-line">        <tt class="py-name">str</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt class="py-string">'\1'</tt><tt class="py-op">,</tt> <tt class="py-string">'E{rb}'</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">)</tt> </tt>
+<a name="L1290"></a><tt class="py-lineno">1290</tt>  <tt class="py-line">        <tt class="py-name">uline</tt> <tt class="py-op">=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">childstr</tt><tt class="py-op">)</tt><tt class="py-op">*</tt><tt id="link-258" class="py-name"><a title="epydoc.markup.epytext._HEADING_CHARS" class="py-name" href="#" onclick="return doclink('link-258', '_HEADING_CHARS', 'link-18');">_HEADING_CHARS</a></tt><tt class="py-op">[</tt>< [...]
+<a name="L1291"></a><tt class="py-lineno">1291</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-name">indent</tt><tt class="py-op">-</tt><tt class="py-number">2</tt><tt class="py-op">)</tt><tt class="py-op">*</tt><tt class="py-string">' '</tt> <tt class="py-op">+</tt> <tt class="py-name">str</tt> <tt class="py-op">+</tt> <tt class="py-string">'\n'</tt> <tt class="py-op">+</tt> <tt class="py-op">(</tt><tt class="py-name">indent</tt [...]
+<a name="L1292"></a><tt class="py-lineno">1292</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-259" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-259', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'doctestblock'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1293"></a><tt class="py-lineno">1293</tt>  <tt class="py-line">        <tt class="py-name">str</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt class="py-string">'\0'</tt><tt class="py-op">,</tt> <tt class="py-string">'{'</tt><tt class="py-op">,</tt> <tt class="py-name">childstr</tt><tt class="py-op">)</tt> </tt>
+<a name="L1294"></a><tt class="py-lineno">1294</tt>  <tt class="py-line">        <tt class="py-name">str</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt class="py-string">'\1'</tt><tt class="py-op">,</tt> <tt class="py-string">'}'</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">)</tt> </tt>
+<a name="L1295"></a><tt class="py-lineno">1295</tt>  <tt class="py-line">        <tt class="py-name">lines</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-string">'  '</tt><tt class="py-op">+</tt><tt class="py-name">indent</tt><tt class="py-op">*</tt><tt class="py-string">' '</tt><tt class="py-op">+</tt><tt class="py-name">line</tt> <tt class="py-keyword">for</tt> <tt class="py-name">line</tt> <tt class="py-keyword">in</tt> <tt class="py-name">str</tt><tt class="py-op [...]
+<a name="L1296"></a><tt class="py-lineno">1296</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">'\n'</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">lines</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-string">'\n\n'</tt> </tt>
+<a name="L1297"></a><tt class="py-lineno">1297</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-260" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-260', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'literalblock'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1298"></a><tt class="py-lineno">1298</tt>  <tt class="py-line">        <tt class="py-name">str</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt class="py-string">'\0'</tt><tt class="py-op">,</tt> <tt class="py-string">'{'</tt><tt class="py-op">,</tt> <tt class="py-name">childstr</tt><tt class="py-op">)</tt> </tt>
+<a name="L1299"></a><tt class="py-lineno">1299</tt>  <tt class="py-line">        <tt class="py-name">str</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt class="py-string">'\1'</tt><tt class="py-op">,</tt> <tt class="py-string">'}'</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">)</tt> </tt>
+<a name="L1300"></a><tt class="py-lineno">1300</tt>  <tt class="py-line">        <tt class="py-name">lines</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-name">indent</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">*</tt><tt class="py-string">' '</tt><tt class="py-op">+</tt><tt class="py-name">line</tt> <tt class="py-keyword">for</tt> <tt class="py-name">line</tt> <tt class="py-keyword">in</tt> [...]
+<a name="L1301"></a><tt class="py-lineno">1301</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">'\2'</tt> <tt class="py-op">+</tt> <tt class="py-string">'\n'</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">lines</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-string">'\n\n'</tt> </tt>
+<a name="L1302"></a><tt class="py-lineno">1302</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-261" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-261', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'field'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1303"></a><tt class="py-lineno">1303</tt>  <tt class="py-line">        <tt class="py-name">numargs</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L1304"></a><tt class="py-lineno">1304</tt>  <tt class="py-line">        <tt class="py-keyword">while</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt class="py-name">children</tt><tt class="py-op">[</tt><tt class="py-name">numargs</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-262" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-262', 'tag' [...]
+<a name="L1305"></a><tt class="py-lineno">1305</tt>  <tt class="py-line">        <tt id="link-263" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-263', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">=</tt> <tt id="link-264" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-264', 'variables', 'link-225');">variables</a></tt><tt class="py-op">[</tt><tt class=" [...]
+<a name="L1306"></a><tt class="py-lineno">1306</tt>  <tt class="py-line">        <tt class="py-name">args</tt> <tt class="py-op">=</tt> <tt id="link-265" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-265', 'variables', 'link-225');">variables</a></tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-number">1</tt><tt class="py-op">+</tt><tt class="py-name">numargs</tt><tt clas [...]
+<a name="L1307"></a><tt class="py-lineno">1307</tt>  <tt class="py-line">        <tt id="link-266" class="py-name" targets="Method epydoc.markup.Field.body()=epydoc.markup.Field-class.html#body"><a title="epydoc.markup.Field.body" class="py-name" href="#" onclick="return doclink('link-266', 'body', 'link-266');">body</a></tt> <tt class="py-op">=</tt> <tt id="link-267" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-26 [...]
+<a name="L1308"></a><tt class="py-lineno">1308</tt>  <tt class="py-line">        <tt class="py-name">str</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">indent</tt><tt class="py-op">)</tt><tt class="py-op">*</tt><tt class="py-string">' '</tt><tt class="py-op">+</tt><tt class="py-string">'@'</tt><tt class="py-op">+</tt><tt id="link-268" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-268', 'va [...]
+<a name="L1309"></a><tt class="py-lineno">1309</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">args</tt><tt class="py-op">:</tt> <tt class="py-name">str</tt> <tt class="py-op">+=</tt> <tt class="py-string">'('</tt> <tt class="py-op">+</tt> <tt class="py-string">', '</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">args</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-string">')'</t [...]
+<a name="L1310"></a><tt class="py-lineno">1310</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">str</tt> <tt class="py-op">+</tt> <tt class="py-string">':\n'</tt> <tt class="py-op">+</tt> <tt class="py-string">''</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt id="link-269" class="py-name"><a title="epydoc.markup.Field.body" class="py-name" href="#" onclick="return doclink('link-269', 'body', 'link-266');">body< [...]
+<a name="L1311"></a><tt class="py-lineno">1311</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-270" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-270', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'target'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1312"></a><tt class="py-lineno">1312</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">'<%s>'</tt> <tt class="py-op">%</tt> <tt class="py-name">childstr</tt> </tt>
+<a name="L1313"></a><tt class="py-lineno">1313</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-271" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-271', 'tag', 'link-13');">tag</a></tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-string">'fieldlist'</tt><tt class="py-op">,</tt> <tt class="py-string">'tag'</tt><tt class="py-op [...]
+<a name="L1314"></a><tt class="py-lineno">1314</tt>  <tt class="py-line">                          <tt class="py-string">'section'</tt><tt class="py-op">,</tt> <tt class="py-string">'olist'</tt><tt class="py-op">,</tt> <tt class="py-string">'ulist'</tt><tt class="py-op">,</tt> <tt class="py-string">'name'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1315"></a><tt class="py-lineno">1315</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">childstr</tt> </tt>
+<a name="L1316"></a><tt class="py-lineno">1316</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-272" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-272', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'symbol'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1317"></a><tt class="py-lineno">1317</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">'E{%s}'</tt> <tt class="py-op">%</tt> <tt class="py-name">childstr</tt> </tt>
+<a name="L1318"></a><tt class="py-lineno">1318</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-273" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-273', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'graph'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1319"></a><tt class="py-lineno">1319</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">'G{%s}'</tt> <tt class="py-op">%</tt> <tt class="py-string">' '</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt id="link-274" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-274', 'variables', 'link-225');">variables</a></tt><tt class="py-op">)</ [...]
+<a name="L1320"></a><tt class="py-lineno">1320</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1321"></a><tt class="py-lineno">1321</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-op">(</tt><tt id="link-275" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-275', 'tag', 'link-13');">tag</a></tt><tt class="py-op">,</tt> <tt id="link-276" class="py-name" targets="Variable epydoc.apidoc.VariableDoc.name=epydoc.apidoc.VariableDoc-class.html#name"><a title="epydoc.apidoc.VariableDoc.name"  [...]
+<a name="L1322"></a><tt class="py-lineno">1322</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt id="link-278" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-278', 'name', 'link-276');">name</a></tt> <tt class="py-op">==</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-279" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link- [...]
+<a name="L1323"></a><tt class="py-lineno">1323</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-string">'%s{%s}'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt id="link-280" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-280', 'tag', 'link-13');">tag</a></tt><tt class="py-op">,</tt> <tt class="py-name">childstr</tt><tt class="py-op">)</tt> </tt>
+<a name="L1324"></a><tt class="py-lineno">1324</tt>  <tt class="py-line">    <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">'Unknown DOM element %r'</tt> <tt class="py-op">%</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-281" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-281', 'tag', 'link-13');">tag</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1325"></a><tt class="py-lineno">1325</tt>  <tt class="py-line"> </tt>
+<a name="L1326"></a><tt class="py-lineno">1326</tt>  <tt class="py-line"><tt id="link-282" class="py-name" targets="Variable epydoc.markup.epytext.SYMBOL_TO_PLAINTEXT=epydoc.markup.epytext-module.html#SYMBOL_TO_PLAINTEXT"><a title="epydoc.markup.epytext.SYMBOL_TO_PLAINTEXT" class="py-name" href="#" onclick="return doclink('link-282', 'SYMBOL_TO_PLAINTEXT', 'link-282');">SYMBOL_TO_PLAINTEXT</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
+<a name="L1327"></a><tt class="py-lineno">1327</tt>  <tt class="py-line">    <tt class="py-string">'crarr'</tt><tt class="py-op">:</tt> <tt class="py-string">'\\'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1328"></a><tt class="py-lineno">1328</tt>  <tt class="py-line">    <tt class="py-op">}</tt> </tt>
+<a name="L1329"></a><tt class="py-lineno">1329</tt>  <tt class="py-line"> </tt>
+<a name="to_plaintext"></a><div id="to_plaintext-def"><a name="L1330"></a><tt class="py-lineno">1330</tt> <a class="py-toggle" href="#" id="to_plaintext-toggle" onclick="return toggle('to_plaintext');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.epytext-module.html#to_plaintext">to_plaintext</a><tt class="py-op">(</tt><tt class="py-param">tree</tt><tt class="py-op">,</tt> <tt class="py-param">indent</tt><tt class="py-op">=</tt><tt c [...]
+</div><div id="to_plaintext-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="to_plaintext-expanded"><a name="L1331"></a><tt class="py-lineno">1331</tt>  <tt class="py-line">    <tt class="py-docstring">"""    </tt> </tt>
+<a name="L1332"></a><tt class="py-lineno">1332</tt>  <tt class="py-line"><tt class="py-docstring">    Convert a DOM document encoding epytext to a string representation.</tt> </tt>
+<a name="L1333"></a><tt class="py-lineno">1333</tt>  <tt class="py-line"><tt class="py-docstring">    This representation is similar to the string generated by</tt> </tt>
+<a name="L1334"></a><tt class="py-lineno">1334</tt>  <tt class="py-line"><tt class="py-docstring">    C{to_epytext}, but C{to_plaintext} removes inline markup, prints</tt> </tt>
+<a name="L1335"></a><tt class="py-lineno">1335</tt>  <tt class="py-line"><tt class="py-docstring">    escaped characters in unescaped form, etc.</tt> </tt>
+<a name="L1336"></a><tt class="py-lineno">1336</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1337"></a><tt class="py-lineno">1337</tt>  <tt class="py-line"><tt class="py-docstring">    @param tree: A DOM document encoding of an epytext string.</tt> </tt>
+<a name="L1338"></a><tt class="py-lineno">1338</tt>  <tt class="py-line"><tt class="py-docstring">    @type tree: C{Element}</tt> </tt>
+<a name="L1339"></a><tt class="py-lineno">1339</tt>  <tt class="py-line"><tt class="py-docstring">    @param indent: The indentation for the string representation of</tt> </tt>
+<a name="L1340"></a><tt class="py-lineno">1340</tt>  <tt class="py-line"><tt class="py-docstring">        C{tree}.  Each line of the returned string will begin with</tt> </tt>
+<a name="L1341"></a><tt class="py-lineno">1341</tt>  <tt class="py-line"><tt class="py-docstring">        C{indent} space characters.</tt> </tt>
+<a name="L1342"></a><tt class="py-lineno">1342</tt>  <tt class="py-line"><tt class="py-docstring">    @type indent: C{int}</tt> </tt>
+<a name="L1343"></a><tt class="py-lineno">1343</tt>  <tt class="py-line"><tt class="py-docstring">    @param seclevel: The section level that C{tree} appears at.  This</tt> </tt>
+<a name="L1344"></a><tt class="py-lineno">1344</tt>  <tt class="py-line"><tt class="py-docstring">        is used to generate section headings.</tt> </tt>
+<a name="L1345"></a><tt class="py-lineno">1345</tt>  <tt class="py-line"><tt class="py-docstring">    @type seclevel: C{int}</tt> </tt>
+<a name="L1346"></a><tt class="py-lineno">1346</tt>  <tt class="py-line"><tt class="py-docstring">    @return: The epytext string corresponding to C{tree}.</tt> </tt>
+<a name="L1347"></a><tt class="py-lineno">1347</tt>  <tt class="py-line"><tt class="py-docstring">    @rtype: C{string}</tt> </tt>
+<a name="L1348"></a><tt class="py-lineno">1348</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1349"></a><tt class="py-lineno">1349</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-name">tree</tt> </tt>
+<a name="L1350"></a><tt class="py-lineno">1350</tt>  <tt class="py-line"> </tt>
+<a name="L1351"></a><tt class="py-lineno">1351</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-283" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-283', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'section'</tt><tt class="py-op">:</tt> <tt class="py-name">seclevel</tt> <tt class="py-op">+=</tt> <tt class="py-number" [...]
+<a name="L1352"></a><tt class="py-lineno">1352</tt>  <tt class="py-line"> </tt>
+<a name="L1353"></a><tt class="py-lineno">1353</tt>  <tt class="py-line">    <tt class="py-comment"># Figure out the child indent level.</tt> </tt>
+<a name="L1354"></a><tt class="py-lineno">1354</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-284" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-284', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'epytext'</tt><tt class="py-op">:</tt> <tt class="py-name">cindent</tt> <tt class="py-op">=< [...]
+<a name="L1355"></a><tt class="py-lineno">1355</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-285" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-285', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'li'</tt> <tt class="py-keyword">and</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt class="py-name">att [...]
+<a name="L1356"></a><tt class="py-lineno">1356</tt>  <tt class="py-line">        <tt class="py-name">cindent</tt> <tt class="py-op">=</tt> <tt class="py-name">indent</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt> <tt class="py-op">+</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">.</tt><tt class="py-name">attribs</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'bullet [...]
+<a name="L1357"></a><tt class="py-lineno">1357</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1358"></a><tt class="py-lineno">1358</tt>  <tt class="py-line">        <tt class="py-name">cindent</tt> <tt class="py-op">=</tt> <tt class="py-name">indent</tt> <tt class="py-op">+</tt> <tt class="py-number">2</tt> </tt>
+<a name="L1359"></a><tt class="py-lineno">1359</tt>  <tt class="py-line">    <tt id="link-286" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-286', 'variables', 'link-225');">variables</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt id="link-287" class="py-name" targets="Method epydoc.markup.ConcatenatedDocstring.to_plaintext()=epydoc.markup.ConcatenatedDocstring-class.html#to_plaintext,Method epydoc.ma [...]
+epydoc.markup.ParsedDocstring.to_plaintext
+epydoc.markup.epytext.ParsedEpytextDocstring.to_plaintext
+epydoc.markup.epytext.to_plaintext
+epydoc.markup.javadoc.ParsedJavadocDocstring.to_plaintext
+epydoc.markup.plaintext.ParsedPlaintextDocstring.to_plaintext
+epydoc.markup.restructuredtext.ParsedRstDocstring.to_plaintext" class="py-name" href="#" onclick="return doclink('link-287', 'to_plaintext', 'link-287');">to_plaintext</a></tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">,</tt> <tt class="py-name">cindent</tt><tt class="py-op">,</tt> <tt class="py-name">seclevel</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt class="py-name">tree</tt><tt cla [...]
+<a name="L1360"></a><tt class="py-lineno">1360</tt>  <tt class="py-line">    <tt class="py-name">childstr</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt id="link-288" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-288', 'variables', 'link-225');">variables</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1361"></a><tt class="py-lineno">1361</tt>  <tt class="py-line"> </tt>
+<a name="L1362"></a><tt class="py-lineno">1362</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-289" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-289', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'para'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1363"></a><tt class="py-lineno">1363</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-290" class="py-name"><a title="epydoc.util.wordwrap" class="py-name" href="#" onclick="return doclink('link-290', 'wordwrap', 'link-5');">wordwrap</a></tt><tt class="py-op">(</tt><tt class="py-name">childstr</tt><tt class="py-op">,</tt> <tt class="py-name">indent</tt><tt class="py-op">)</tt><tt class="py-op">+</tt><tt class="py-string">'\n'</tt> </tt>
+<a name="L1364"></a><tt class="py-lineno">1364</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-291" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-291', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'li'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1365"></a><tt class="py-lineno">1365</tt>  <tt class="py-line">        <tt class="py-comment"># We should be able to use getAttribute here; but there's no</tt> </tt>
+<a name="L1366"></a><tt class="py-lineno">1366</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># convenient way to test if an element has an attribute..</tt> </tt>
+<a name="L1367"></a><tt class="py-lineno">1367</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">bullet</tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt class="py-name">attribs</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'bullet'</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-string">'-'</tt> </tt>
+<a name="L1368"></a><tt class="py-lineno">1368</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">indent</tt><tt class="py-op">*</tt><tt class="py-string">' '</tt> <tt class="py-op">+</tt> <tt class="py-name">bullet</tt> <tt class="py-op">+</tt> <tt class="py-string">' '</tt> <tt class="py-op">+</tt> <tt class="py-name">childstr</tt><tt class="py-op">.</tt><tt class="py-name">lstrip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1369"></a><tt class="py-lineno">1369</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-292" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-292', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'heading'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1370"></a><tt class="py-lineno">1370</tt>  <tt class="py-line">        <tt class="py-name">uline</tt> <tt class="py-op">=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">childstr</tt><tt class="py-op">)</tt><tt class="py-op">*</tt><tt id="link-293" class="py-name"><a title="epydoc.markup.epytext._HEADING_CHARS" class="py-name" href="#" onclick="return doclink('link-293', '_HEADING_CHARS', 'link-18');">_HEADING_CHARS</a></tt><tt class="py-op">[</tt>< [...]
+<a name="L1371"></a><tt class="py-lineno">1371</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">indent</tt><tt class="py-op">-</tt><tt class="py-number">2</tt><tt class="py-op">)</tt><tt class="py-op">*</tt><tt class="py-string">' '</tt> <tt class="py-op">+</tt> <tt class="py-name">childstr</tt> <tt class="py-op">+</tt> <tt class="py-string">'\n'</tt> <tt class="py-op">+</tt> </tt>
+<a name="L1372"></a><tt class="py-lineno">1372</tt>  <tt class="py-line">                <tt class="py-op">(</tt><tt class="py-name">indent</tt><tt class="py-op">-</tt><tt class="py-number">2</tt><tt class="py-op">)</tt><tt class="py-op">*</tt><tt class="py-string">' '</tt> <tt class="py-op">+</tt> <tt class="py-name">uline</tt> <tt class="py-op">+</tt> <tt class="py-string">'\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1373"></a><tt class="py-lineno">1373</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-294" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-294', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'doctestblock'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1374"></a><tt class="py-lineno">1374</tt>  <tt class="py-line">        <tt class="py-name">lines</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-name">indent</tt><tt class="py-op">+</tt><tt class="py-number">2</tt><tt class="py-op">)</tt><tt class="py-op">*</tt><tt class="py-string">' '</tt><tt class="py-op">+</tt><tt class="py-name">line</tt> <tt class="py-keyword">for</tt> <tt class="py-name">line</tt> <tt class="py-keyword">in</tt> [...]
+<a name="L1375"></a><tt class="py-lineno">1375</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">'\n'</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">lines</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-string">'\n\n'</tt> </tt>
+<a name="L1376"></a><tt class="py-lineno">1376</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-295" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-295', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'literalblock'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1377"></a><tt class="py-lineno">1377</tt>  <tt class="py-line">        <tt class="py-name">lines</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-name">indent</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">*</tt><tt class="py-string">' '</tt><tt class="py-op">+</tt><tt class="py-name">line</tt> <tt class="py-keyword">for</tt> <tt class="py-name">line</tt> <tt class="py-keyword">in</tt> [...]
+<a name="L1378"></a><tt class="py-lineno">1378</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">'\n'</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">lines</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-string">'\n\n'</tt> </tt>
+<a name="L1379"></a><tt class="py-lineno">1379</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-296" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-296', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'fieldlist'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1380"></a><tt class="py-lineno">1380</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">childstr</tt> </tt>
+<a name="L1381"></a><tt class="py-lineno">1381</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-297" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-297', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'field'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1382"></a><tt class="py-lineno">1382</tt>  <tt class="py-line">        <tt class="py-name">numargs</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L1383"></a><tt class="py-lineno">1383</tt>  <tt class="py-line">        <tt class="py-keyword">while</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt class="py-name">children</tt><tt class="py-op">[</tt><tt class="py-name">numargs</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-298" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-298', 'tag' [...]
+<a name="L1384"></a><tt class="py-lineno">1384</tt>  <tt class="py-line">        <tt id="link-299" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-299', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">=</tt> <tt id="link-300" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-300', 'variables', 'link-225');">variables</a></tt><tt class="py-op">[</tt><tt class=" [...]
+<a name="L1385"></a><tt class="py-lineno">1385</tt>  <tt class="py-line">        <tt class="py-name">args</tt> <tt class="py-op">=</tt> <tt id="link-301" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-301', 'variables', 'link-225');">variables</a></tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-number">1</tt><tt class="py-op">+</tt><tt class="py-name">numargs</tt><tt clas [...]
+<a name="L1386"></a><tt class="py-lineno">1386</tt>  <tt class="py-line">        <tt id="link-302" class="py-name"><a title="epydoc.markup.Field.body" class="py-name" href="#" onclick="return doclink('link-302', 'body', 'link-266');">body</a></tt> <tt class="py-op">=</tt> <tt id="link-303" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-303', 'variables', 'link-225');">variables</a></tt><tt class="py-op">[</tt><tt cla [...]
+<a name="L1387"></a><tt class="py-lineno">1387</tt>  <tt class="py-line">        <tt class="py-name">str</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">indent</tt><tt class="py-op">)</tt><tt class="py-op">*</tt><tt class="py-string">' '</tt><tt class="py-op">+</tt><tt class="py-string">'@'</tt><tt class="py-op">+</tt><tt id="link-304" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-304', 'va [...]
+<a name="L1388"></a><tt class="py-lineno">1388</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">args</tt><tt class="py-op">:</tt> <tt class="py-name">str</tt> <tt class="py-op">+=</tt> <tt class="py-string">'('</tt> <tt class="py-op">+</tt> <tt class="py-string">', '</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">args</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-string">')'</t [...]
+<a name="L1389"></a><tt class="py-lineno">1389</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">str</tt> <tt class="py-op">+</tt> <tt class="py-string">':\n'</tt> <tt class="py-op">+</tt> <tt class="py-string">''</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt id="link-305" class="py-name"><a title="epydoc.markup.Field.body" class="py-name" href="#" onclick="return doclink('link-305', 'body', 'link-266');">body< [...]
+<a name="L1390"></a><tt class="py-lineno">1390</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-306" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-306', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'uri'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1391"></a><tt class="py-lineno">1391</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-307" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-307', 'variables', 'link-225');">variables</a></tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-number">2</tt><tt class="py-op">:</tt> <tt class="py-keyword">raise</tt> <t [...]
+<a name="L1392"></a><tt class="py-lineno">1392</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt id="link-308" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-308', 'variables', 'link-225');">variables</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt id="link-309" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class [...]
+<a name="L1393"></a><tt class="py-lineno">1393</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-string">'%r<%s>'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt id="link-311" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-311', 'variables', 'link-225');">variables</a></tt><tt class="py-op">[</tt><tt class="py-nu [...]
+<a name="L1394"></a><tt class="py-lineno">1394</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-313" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-313', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'link'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1395"></a><tt class="py-lineno">1395</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-314" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-314', 'variables', 'link-225');">variables</a></tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-number">2</tt><tt class="py-op">:</tt> <tt class="py-keyword">raise</tt> <t [...]
+<a name="L1396"></a><tt class="py-lineno">1396</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">'%s'</tt> <tt class="py-op">%</tt> <tt id="link-315" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-315', 'variables', 'link-225');">variables</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L1397"></a><tt class="py-lineno">1397</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-316" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-316', 'tag', 'link-13');">tag</a></tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-string">'olist'</tt><tt class="py-op">,</tt> <tt class="py-string">'ulist'</tt><tt class="py-op"> [...]
+<a name="L1398"></a><tt class="py-lineno">1398</tt>  <tt class="py-line">        <tt class="py-comment"># [xx] always use condensed lists.</tt> </tt>
+<a name="L1399"></a><tt class="py-lineno">1399</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">## Use a condensed list if each list item is 1 line long.</tt> </tt>
+<a name="L1400"></a><tt class="py-lineno">1400</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#for child in variables:</tt> </tt>
+<a name="L1401"></a><tt class="py-lineno">1401</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#    if child.count('\n') > 2: return childstr</tt> </tt>
+<a name="L1402"></a><tt class="py-lineno">1402</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">return</tt> <tt class="py-name">childstr</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">'\n\n'</tt><tt class="py-op">,</tt> <tt class="py-string">'\n'</tt><tt class="py-op">)</tt><tt class="py-op">+</tt><tt class="py-string">'\n'</tt> </tt>
+<a name="L1403"></a><tt class="py-lineno">1403</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-317" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-317', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'symbol'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1404"></a><tt class="py-lineno">1404</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">'%s'</tt> <tt class="py-op">%</tt> <tt id="link-318" class="py-name"><a title="epydoc.markup.epytext.SYMBOL_TO_PLAINTEXT" class="py-name" href="#" onclick="return doclink('link-318', 'SYMBOL_TO_PLAINTEXT', 'link-282');">SYMBOL_TO_PLAINTEXT</a></tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-name">childstr</ [...]
+<a name="L1405"></a><tt class="py-lineno">1405</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-319" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-319', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'graph'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1406"></a><tt class="py-lineno">1406</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">'<<%s graph: %s>>'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt id="link-320" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-320', 'variables', 'link-225');">variables</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt c [...]
+<a name="L1407"></a><tt class="py-lineno">1407</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1408"></a><tt class="py-lineno">1408</tt>  <tt class="py-line">        <tt class="py-comment"># Assume that anything else can be passed through.</tt> </tt>
+<a name="L1409"></a><tt class="py-lineno">1409</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">return</tt> <tt class="py-name">childstr</tt> </tt>
+</div><a name="L1410"></a><tt class="py-lineno">1410</tt>  <tt class="py-line"> </tt>
+<a name="to_debug"></a><div id="to_debug-def"><a name="L1411"></a><tt class="py-lineno">1411</tt> <a class="py-toggle" href="#" id="to_debug-toggle" onclick="return toggle('to_debug');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.epytext-module.html#to_debug">to_debug</a><tt class="py-op">(</tt><tt class="py-param">tree</tt><tt class="py-op">,</tt> <tt class="py-param">indent</tt><tt class="py-op">=</tt><tt class="py-number">4</tt>< [...]
+</div><div id="to_debug-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="to_debug-expanded"><a name="L1412"></a><tt class="py-lineno">1412</tt>  <tt class="py-line">    <tt class="py-docstring">"""    </tt> </tt>
+<a name="L1413"></a><tt class="py-lineno">1413</tt>  <tt class="py-line"><tt class="py-docstring">    Convert a DOM document encoding epytext back to an epytext string,</tt> </tt>
+<a name="L1414"></a><tt class="py-lineno">1414</tt>  <tt class="py-line"><tt class="py-docstring">    annotated with extra debugging information.  This function is</tt> </tt>
+<a name="L1415"></a><tt class="py-lineno">1415</tt>  <tt class="py-line"><tt class="py-docstring">    similar to L{to_epytext}, but it adds explicit information about</tt> </tt>
+<a name="L1416"></a><tt class="py-lineno">1416</tt>  <tt class="py-line"><tt class="py-docstring">    where different blocks begin, along the left margin.</tt> </tt>
+<a name="L1417"></a><tt class="py-lineno">1417</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1418"></a><tt class="py-lineno">1418</tt>  <tt class="py-line"><tt class="py-docstring">    @param tree: A DOM document encoding of an epytext string.</tt> </tt>
+<a name="L1419"></a><tt class="py-lineno">1419</tt>  <tt class="py-line"><tt class="py-docstring">    @type tree: C{Element}</tt> </tt>
+<a name="L1420"></a><tt class="py-lineno">1420</tt>  <tt class="py-line"><tt class="py-docstring">    @param indent: The indentation for the string representation of</tt> </tt>
+<a name="L1421"></a><tt class="py-lineno">1421</tt>  <tt class="py-line"><tt class="py-docstring">        C{tree}.  Each line of the returned string will begin with</tt> </tt>
+<a name="L1422"></a><tt class="py-lineno">1422</tt>  <tt class="py-line"><tt class="py-docstring">        C{indent} space characters.</tt> </tt>
+<a name="L1423"></a><tt class="py-lineno">1423</tt>  <tt class="py-line"><tt class="py-docstring">    @type indent: C{int}</tt> </tt>
+<a name="L1424"></a><tt class="py-lineno">1424</tt>  <tt class="py-line"><tt class="py-docstring">    @param seclevel: The section level that C{tree} appears at.  This</tt> </tt>
+<a name="L1425"></a><tt class="py-lineno">1425</tt>  <tt class="py-line"><tt class="py-docstring">        is used to generate section headings.</tt> </tt>
+<a name="L1426"></a><tt class="py-lineno">1426</tt>  <tt class="py-line"><tt class="py-docstring">    @type seclevel: C{int}</tt> </tt>
+<a name="L1427"></a><tt class="py-lineno">1427</tt>  <tt class="py-line"><tt class="py-docstring">    @return: The epytext string corresponding to C{tree}.</tt> </tt>
+<a name="L1428"></a><tt class="py-lineno">1428</tt>  <tt class="py-line"><tt class="py-docstring">    @rtype: C{string}</tt> </tt>
+<a name="L1429"></a><tt class="py-lineno">1429</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1430"></a><tt class="py-lineno">1430</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1431"></a><tt class="py-lineno">1431</tt>  <tt class="py-line">        <tt class="py-name">str</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt class="py-string">r'\{'</tt><tt class="py-op">,</tt> <tt class="py-string">'\0'</tt><tt class="py-op">,</tt> <tt class="py-name">tree</tt><tt class="py-op">)</tt> </tt>
+<a name="L1432"></a><tt class="py-lineno">1432</tt>  <tt class="py-line">        <tt class="py-name">str</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt class="py-string">r'\}'</tt><tt class="py-op">,</tt> <tt class="py-string">'\1'</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">)</tt> </tt>
+<a name="L1433"></a><tt class="py-lineno">1433</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">str</tt> </tt>
+<a name="L1434"></a><tt class="py-lineno">1434</tt>  <tt class="py-line"> </tt>
+<a name="L1435"></a><tt class="py-lineno">1435</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-322" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-322', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'section'</tt><tt class="py-op">:</tt> <tt class="py-name">seclevel</tt> <tt class="py-op">+=</tt> <tt class="py-number" [...]
+<a name="L1436"></a><tt class="py-lineno">1436</tt>  <tt class="py-line">    <tt id="link-323" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-323', 'variables', 'link-225');">variables</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt id="link-324" class="py-name" targets="Function epydoc.markup.epytext.to_debug()=epydoc.markup.epytext-module.html#to_debug"><a title="epydoc.markup.epytext.to_debug" class= [...]
+<a name="L1437"></a><tt class="py-lineno">1437</tt>  <tt class="py-line">    <tt class="py-name">childstr</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt id="link-325" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-325', 'variables', 'link-225');">variables</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1438"></a><tt class="py-lineno">1438</tt>  <tt class="py-line"> </tt>
+<a name="L1439"></a><tt class="py-lineno">1439</tt>  <tt class="py-line">    <tt class="py-comment"># Clean up for literal blocks (add the double "::" back)</tt> </tt>
+<a name="L1440"></a><tt class="py-lineno">1440</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">childstr</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt class="py-string">':( *\n     \|\n)\2'</tt><tt class="py-op">,</tt> <tt class="py-string">'::\\1'</tt><tt class="py-op">,</tt> <tt class="py-name">childstr</tt><tt class="py-op">)</tt> </tt>
+<a name="L1441"></a><tt class="py-lineno">1441</tt>  <tt class="py-line"> </tt>
+<a name="L1442"></a><tt class="py-lineno">1442</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-326" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-326', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'para'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1443"></a><tt class="py-lineno">1443</tt>  <tt class="py-line">        <tt class="py-name">str</tt> <tt class="py-op">=</tt> <tt id="link-327" class="py-name"><a title="epydoc.util.wordwrap" class="py-name" href="#" onclick="return doclink('link-327', 'wordwrap', 'link-5');">wordwrap</a></tt><tt class="py-op">(</tt><tt class="py-name">childstr</tt><tt class="py-op">,</tt> <tt class="py-name">indent</tt><tt class="py-op">-</tt><tt class="py-number">6</tt><tt class="py-op">,</tt> [...]
+<a name="L1444"></a><tt class="py-lineno">1444</tt>  <tt class="py-line">        <tt class="py-name">str</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt class="py-string">r'((^|\n)\s*\d+)\.'</tt><tt class="py-op">,</tt> <tt class="py-string">r'\1E{.}'</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">)</tt> </tt>
+<a name="L1445"></a><tt class="py-lineno">1445</tt>  <tt class="py-line">        <tt class="py-name">str</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt class="py-string">r'((^|\n)\s*)-'</tt><tt class="py-op">,</tt> <tt class="py-string">r'\1E{-}'</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">)</tt> </tt>
+<a name="L1446"></a><tt class="py-lineno">1446</tt>  <tt class="py-line">        <tt class="py-name">str</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt class="py-string">r'((^|\n)\s*)@'</tt><tt class="py-op">,</tt> <tt class="py-string">r'\1E{@}'</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">)</tt> </tt>
+<a name="L1447"></a><tt class="py-lineno">1447</tt>  <tt class="py-line">        <tt class="py-name">str</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt class="py-string">r'::(\s*($|\n))'</tt><tt class="py-op">,</tt> <tt class="py-string">r'E{:}E{:}\1'</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">)</tt> </tt>
+<a name="L1448"></a><tt class="py-lineno">1448</tt>  <tt class="py-line">        <tt class="py-name">str</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt class="py-string">'\0'</tt><tt class="py-op">,</tt> <tt class="py-string">'E{lb}'</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">)</tt> </tt>
+<a name="L1449"></a><tt class="py-lineno">1449</tt>  <tt class="py-line">        <tt class="py-name">str</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt class="py-string">'\1'</tt><tt class="py-op">,</tt> <tt class="py-string">'E{rb}'</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">)</tt> </tt>
+<a name="L1450"></a><tt class="py-lineno">1450</tt>  <tt class="py-line">        <tt class="py-name">lines</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">.</tt><tt class="py-name">rstrip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1451"></a><tt class="py-lineno">1451</tt>  <tt class="py-line">        <tt class="py-name">lines</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">'   P>|'</tt> <tt class="py-op">+</tt> <tt class="py-name">lines</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L1452"></a><tt class="py-lineno">1452</tt>  <tt class="py-line">        <tt class="py-name">lines</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-string">'     |'</tt><tt class="py-op">+</tt><tt class="py-name">l</tt> <tt class="py-keyword">for</tt> <tt class="py-name">l</tt> <tt class="py-keyword">in</tt> <tt class="py-name">lines</tt><tt class="py-op">[</tt>< [...]
+<a name="L1453"></a><tt class="py-lineno">1453</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">'\n'</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">lines</tt><tt class="py-op">)</tt><tt class="py-op">+</tt><tt class="py-string">'\n     |\n'</tt> </tt>
+<a name="L1454"></a><tt class="py-lineno">1454</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-328" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-328', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'li'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1455"></a><tt class="py-lineno">1455</tt>  <tt class="py-line">        <tt class="py-name">bullet</tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt class="py-name">attribs</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'bullet'</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-string">'-'</tt> </tt>
+<a name="L1456"></a><tt class="py-lineno">1456</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">'  LI>|'</tt><tt class="py-op">+</tt> <tt class="py-op">(</tt><tt class="py-name">indent</tt><tt class="py-op">-</tt><tt class="py-number">6</tt><tt class="py-op">)</tt><tt class="py-op">*</tt><tt class="py-string">' '</tt><tt class="py-op">+</tt> <tt class="py-name">bullet</tt> <tt class="py-op">+</tt> <tt class="py-string">' '</tt> <tt class="py-o [...]
+<a name="L1457"></a><tt class="py-lineno">1457</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-329" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-329', 'tag', 'link-13');">tag</a></tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-string">'olist'</tt><tt class="py-op">,</tt> <tt class="py-string">'ulist'</tt><tt class="py-op"> [...]
+<a name="L1458"></a><tt class="py-lineno">1458</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">'LIST>|'</tt><tt class="py-op">+</tt><tt class="py-op">(</tt><tt class="py-name">indent</tt><tt class="py-op">-</tt><tt class="py-number">4</tt><tt class="py-op">)</tt><tt class="py-op">*</tt><tt class="py-string">' '</tt><tt class="py-op">+</tt><tt class="py-name">childstr</tt><tt class="py-op">[</tt><tt class="py-name">indent</tt><tt class="py-op" [...]
+<a name="L1459"></a><tt class="py-lineno">1459</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-330" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-330', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'heading'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1460"></a><tt class="py-lineno">1460</tt>  <tt class="py-line">        <tt class="py-name">str</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt class="py-string">'\0'</tt><tt class="py-op">,</tt> <tt class="py-string">'E{lb}'</tt><tt class="py-op">,</tt> <tt class="py-name">childstr</tt><tt class="py-op">)</tt> </tt>
+<a name="L1461"></a><tt class="py-lineno">1461</tt>  <tt class="py-line">        <tt class="py-name">str</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt class="py-string">'\1'</tt><tt class="py-op">,</tt> <tt class="py-string">'E{rb}'</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">)</tt> </tt>
+<a name="L1462"></a><tt class="py-lineno">1462</tt>  <tt class="py-line">        <tt class="py-name">uline</tt> <tt class="py-op">=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">childstr</tt><tt class="py-op">)</tt><tt class="py-op">*</tt><tt id="link-331" class="py-name"><a title="epydoc.markup.epytext._HEADING_CHARS" class="py-name" href="#" onclick="return doclink('link-331', '_HEADING_CHARS', 'link-18');">_HEADING_CHARS</a></tt><tt class="py-op">[</tt>< [...]
+<a name="L1463"></a><tt class="py-lineno">1463</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-string">'SEC'</tt><tt class="py-op">+</tt><tt class="py-op">`</tt><tt class="py-name">seclevel</tt><tt class="py-op">`</tt><tt class="py-op">+</tt><tt class="py-string">'>|'</tt><tt class="py-op">+</tt><tt class="py-op">(</tt><tt class="py-name">indent</tt><tt class="py-op">-</tt><tt class="py-number">8</tt><tt class="py-op">)</tt><t [...]
+<a name="L1464"></a><tt class="py-lineno">1464</tt>  <tt class="py-line">                <tt class="py-string">'     |'</tt><tt class="py-op">+</tt><tt class="py-op">(</tt><tt class="py-name">indent</tt><tt class="py-op">-</tt><tt class="py-number">8</tt><tt class="py-op">)</tt><tt class="py-op">*</tt><tt class="py-string">' '</tt> <tt class="py-op">+</tt> <tt class="py-name">uline</tt> <tt class="py-op">+</tt> <tt class="py-string">'\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1465"></a><tt class="py-lineno">1465</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-332" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-332', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'doctestblock'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1466"></a><tt class="py-lineno">1466</tt>  <tt class="py-line">        <tt class="py-name">str</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt class="py-string">'\0'</tt><tt class="py-op">,</tt> <tt class="py-string">'{'</tt><tt class="py-op">,</tt> <tt class="py-name">childstr</tt><tt class="py-op">)</tt> </tt>
+<a name="L1467"></a><tt class="py-lineno">1467</tt>  <tt class="py-line">        <tt class="py-name">str</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt class="py-string">'\1'</tt><tt class="py-op">,</tt> <tt class="py-string">'}'</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">)</tt> </tt>
+<a name="L1468"></a><tt class="py-lineno">1468</tt>  <tt class="py-line">        <tt class="py-name">lines</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-string">'     |'</tt><tt class="py-op">+</tt><tt class="py-op">(</tt><tt class="py-name">indent</tt><tt class="py-op">-</tt><tt class="py-number">4</tt><tt class="py-op">)</tt><tt class="py-op">*</tt><tt class="py-string">' '</tt><tt class="py-op">+</tt><tt class="py-name">line</tt> <tt class="py-keyword">for</tt> < [...]
+<a name="L1469"></a><tt class="py-lineno">1469</tt>  <tt class="py-line">        <tt class="py-name">lines</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">'DTST>'</tt><tt class="py-op">+</tt><tt class="py-name">lines</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">5</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt>
+<a name="L1470"></a><tt class="py-lineno">1470</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">'\n'</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">lines</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-string">'\n     |\n'</tt> </tt>
+<a name="L1471"></a><tt class="py-lineno">1471</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-333" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-333', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'literalblock'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1472"></a><tt class="py-lineno">1472</tt>  <tt class="py-line">        <tt class="py-name">str</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt class="py-string">'\0'</tt><tt class="py-op">,</tt> <tt class="py-string">'{'</tt><tt class="py-op">,</tt> <tt class="py-name">childstr</tt><tt class="py-op">)</tt> </tt>
+<a name="L1473"></a><tt class="py-lineno">1473</tt>  <tt class="py-line">        <tt class="py-name">str</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt class="py-string">'\1'</tt><tt class="py-op">,</tt> <tt class="py-string">'}'</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">)</tt> </tt>
+<a name="L1474"></a><tt class="py-lineno">1474</tt>  <tt class="py-line">        <tt class="py-name">lines</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-string">'     |'</tt><tt class="py-op">+</tt><tt class="py-op">(</tt><tt class="py-name">indent</tt><tt class="py-op">-</tt><tt class="py-number">5</tt><tt class="py-op">)</tt><tt class="py-op">*</tt><tt class="py-string">' '</tt><tt class="py-op">+</tt><tt class="py-name">line</tt> <tt class="py-keyword">for</tt> < [...]
+<a name="L1475"></a><tt class="py-lineno">1475</tt>  <tt class="py-line">        <tt class="py-name">lines</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">' LIT>'</tt><tt class="py-op">+</tt><tt class="py-name">lines</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">5</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt>
+<a name="L1476"></a><tt class="py-lineno">1476</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">'\2'</tt> <tt class="py-op">+</tt> <tt class="py-string">'\n'</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">lines</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-string">'\n     |\n'</tt> </tt>
+<a name="L1477"></a><tt class="py-lineno">1477</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-334" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-334', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'field'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1478"></a><tt class="py-lineno">1478</tt>  <tt class="py-line">        <tt class="py-name">numargs</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L1479"></a><tt class="py-lineno">1479</tt>  <tt class="py-line">        <tt class="py-keyword">while</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt class="py-name">children</tt><tt class="py-op">[</tt><tt class="py-name">numargs</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-335" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-335', 'tag' [...]
+<a name="L1480"></a><tt class="py-lineno">1480</tt>  <tt class="py-line">        <tt id="link-336" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-336', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">=</tt> <tt id="link-337" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-337', 'variables', 'link-225');">variables</a></tt><tt class="py-op">[</tt><tt class=" [...]
+<a name="L1481"></a><tt class="py-lineno">1481</tt>  <tt class="py-line">        <tt class="py-name">args</tt> <tt class="py-op">=</tt> <tt id="link-338" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-338', 'variables', 'link-225');">variables</a></tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-number">1</tt><tt class="py-op">+</tt><tt class="py-name">numargs</tt><tt clas [...]
+<a name="L1482"></a><tt class="py-lineno">1482</tt>  <tt class="py-line">        <tt id="link-339" class="py-name"><a title="epydoc.markup.Field.body" class="py-name" href="#" onclick="return doclink('link-339', 'body', 'link-266');">body</a></tt> <tt class="py-op">=</tt> <tt id="link-340" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-340', 'variables', 'link-225');">variables</a></tt><tt class="py-op">[</tt><tt cla [...]
+<a name="L1483"></a><tt class="py-lineno">1483</tt>  <tt class="py-line">        <tt class="py-name">str</tt> <tt class="py-op">=</tt> <tt class="py-string">' FLD>|'</tt><tt class="py-op">+</tt><tt class="py-op">(</tt><tt class="py-name">indent</tt><tt class="py-op">-</tt><tt class="py-number">6</tt><tt class="py-op">)</tt><tt class="py-op">*</tt><tt class="py-string">' '</tt><tt class="py-op">+</tt><tt class="py-string">'@'</tt><tt class="py-op">+</tt><tt id="link-341" class="py-name [...]
+<a name="L1484"></a><tt class="py-lineno">1484</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">args</tt><tt class="py-op">:</tt> <tt class="py-name">str</tt> <tt class="py-op">+=</tt> <tt class="py-string">'('</tt> <tt class="py-op">+</tt> <tt class="py-string">', '</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">args</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-string">')'</t [...]
+<a name="L1485"></a><tt class="py-lineno">1485</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">str</tt> <tt class="py-op">+</tt> <tt class="py-string">':\n'</tt> <tt class="py-op">+</tt> <tt class="py-string">''</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt id="link-342" class="py-name"><a title="epydoc.markup.Field.body" class="py-name" href="#" onclick="return doclink('link-342', 'body', 'link-266');">body< [...]
+<a name="L1486"></a><tt class="py-lineno">1486</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-343" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-343', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'target'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1487"></a><tt class="py-lineno">1487</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">'<%s>'</tt> <tt class="py-op">%</tt> <tt class="py-name">childstr</tt> </tt>
+<a name="L1488"></a><tt class="py-lineno">1488</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-344" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-344', 'tag', 'link-13');">tag</a></tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-string">'fieldlist'</tt><tt class="py-op">,</tt> <tt class="py-string">'tag'</tt><tt class="py-op [...]
+<a name="L1489"></a><tt class="py-lineno">1489</tt>  <tt class="py-line">                          <tt class="py-string">'section'</tt><tt class="py-op">,</tt> <tt class="py-string">'olist'</tt><tt class="py-op">,</tt> <tt class="py-string">'ulist'</tt><tt class="py-op">,</tt> <tt class="py-string">'name'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1490"></a><tt class="py-lineno">1490</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">childstr</tt> </tt>
+<a name="L1491"></a><tt class="py-lineno">1491</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-345" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-345', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'symbol'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1492"></a><tt class="py-lineno">1492</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">'E{%s}'</tt> <tt class="py-op">%</tt> <tt class="py-name">childstr</tt> </tt>
+<a name="L1493"></a><tt class="py-lineno">1493</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-346" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-346', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'graph'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1494"></a><tt class="py-lineno">1494</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">'G{%s}'</tt> <tt class="py-op">%</tt> <tt class="py-string">' '</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt id="link-347" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-347', 'variables', 'link-225');">variables</a></tt><tt class="py-op">)</ [...]
+<a name="L1495"></a><tt class="py-lineno">1495</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1496"></a><tt class="py-lineno">1496</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-op">(</tt><tt id="link-348" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-348', 'tag', 'link-13');">tag</a></tt><tt class="py-op">,</tt> <tt id="link-349" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-349', 'name', 'link-276');">name</a>< [...]
+<a name="L1497"></a><tt class="py-lineno">1497</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt id="link-351" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-351', 'name', 'link-276');">name</a></tt> <tt class="py-op">==</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-352" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link- [...]
+<a name="L1498"></a><tt class="py-lineno">1498</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-string">'%s{%s}'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt id="link-353" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-353', 'tag', 'link-13');">tag</a></tt><tt class="py-op">,</tt> <tt class="py-name">childstr</tt><tt class="py-op">)</tt> </tt>
+<a name="L1499"></a><tt class="py-lineno">1499</tt>  <tt class="py-line">    <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">'Unknown DOM element %r'</tt> <tt class="py-op">%</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-354" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-354', 'tag', 'link-13');">tag</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1500"></a><tt class="py-lineno">1500</tt>  <tt class="py-line"> </tt>
+<a name="L1501"></a><tt class="py-lineno">1501</tt>  <tt class="py-line"><tt class="py-comment">##################################################</tt> </tt>
+<a name="L1502"></a><tt class="py-lineno">1502</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## Top-Level Wrapper function</tt> </tt>
+<a name="L1503"></a><tt class="py-lineno">1503</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">##################################################</tt> </tt>
+<a name="pparse"></a><div id="pparse-def"><a name="L1504"></a><tt class="py-lineno">1504</tt> <a class="py-toggle" href="#" id="pparse-toggle" onclick="return toggle('pparse');">-</a><tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.epytext-module.html#pparse">pparse</a><tt class="py-op">(</tt><tt class="py-param">str</tt><tt class="py-op">,</tt> <tt class="py-param">show_warnings</tt><tt class="py-op">=</tt><tt cla [...]
+</div><div id="pparse-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="pparse-expanded"><a name="L1505"></a><tt class="py-lineno">1505</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L1506"></a><tt class="py-lineno">1506</tt>  <tt class="py-line"><tt class="py-docstring">    Pretty-parse the string.  This parses the string, and catches any</tt> </tt>
+<a name="L1507"></a><tt class="py-lineno">1507</tt>  <tt class="py-line"><tt class="py-docstring">    warnings or errors produced.  Any warnings and errors are</tt> </tt>
+<a name="L1508"></a><tt class="py-lineno">1508</tt>  <tt class="py-line"><tt class="py-docstring">    displayed, and the resulting DOM parse structure is returned.</tt> </tt>
+<a name="L1509"></a><tt class="py-lineno">1509</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1510"></a><tt class="py-lineno">1510</tt>  <tt class="py-line"><tt class="py-docstring">    @param str: The string to parse.</tt> </tt>
+<a name="L1511"></a><tt class="py-lineno">1511</tt>  <tt class="py-line"><tt class="py-docstring">    @type str: C{string}</tt> </tt>
+<a name="L1512"></a><tt class="py-lineno">1512</tt>  <tt class="py-line"><tt class="py-docstring">    @param show_warnings: Whether or not to display non-fatal errors</tt> </tt>
+<a name="L1513"></a><tt class="py-lineno">1513</tt>  <tt class="py-line"><tt class="py-docstring">        generated by parsing C{str}.</tt> </tt>
+<a name="L1514"></a><tt class="py-lineno">1514</tt>  <tt class="py-line"><tt class="py-docstring">    @type show_warnings: C{boolean}</tt> </tt>
+<a name="L1515"></a><tt class="py-lineno">1515</tt>  <tt class="py-line"><tt class="py-docstring">    @param show_errors: Whether or not to display fatal errors </tt> </tt>
+<a name="L1516"></a><tt class="py-lineno">1516</tt>  <tt class="py-line"><tt class="py-docstring">        generated by parsing C{str}.</tt> </tt>
+<a name="L1517"></a><tt class="py-lineno">1517</tt>  <tt class="py-line"><tt class="py-docstring">    @type show_errors: C{boolean}</tt> </tt>
+<a name="L1518"></a><tt class="py-lineno">1518</tt>  <tt class="py-line"><tt class="py-docstring">    @param stream: The stream that warnings and errors should be</tt> </tt>
+<a name="L1519"></a><tt class="py-lineno">1519</tt>  <tt class="py-line"><tt class="py-docstring">        written to.</tt> </tt>
+<a name="L1520"></a><tt class="py-lineno">1520</tt>  <tt class="py-line"><tt class="py-docstring">    @type stream: C{stream}</tt> </tt>
+<a name="L1521"></a><tt class="py-lineno">1521</tt>  <tt class="py-line"><tt class="py-docstring">    @return: a DOM document encoding the contents of C{str}.</tt> </tt>
+<a name="L1522"></a><tt class="py-lineno">1522</tt>  <tt class="py-line"><tt class="py-docstring">    @rtype: C{Element}</tt> </tt>
+<a name="L1523"></a><tt class="py-lineno">1523</tt>  <tt class="py-line"><tt class="py-docstring">    @raise SyntaxError: If any fatal errors were encountered.</tt> </tt>
+<a name="L1524"></a><tt class="py-lineno">1524</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1525"></a><tt class="py-lineno">1525</tt>  <tt class="py-line">    <tt class="py-name">errors</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L1526"></a><tt class="py-lineno">1526</tt>  <tt class="py-line">    <tt class="py-name">confused</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L1527"></a><tt class="py-lineno">1527</tt>  <tt class="py-line">    <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L1528"></a><tt class="py-lineno">1528</tt>  <tt class="py-line">        <tt class="py-name">val</tt> <tt class="py-op">=</tt> <tt id="link-355" class="py-name" targets="Function epydoc.markup.epytext.parse()=epydoc.markup.epytext-module.html#parse,Function epydoc.markup.parse()=epydoc.markup-module.html#parse"><a title="epydoc.markup.epytext.parse
+epydoc.markup.parse" class="py-name" href="#" onclick="return doclink('link-355', 'parse', 'link-355');">parse</a></tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">,</tt> <tt class="py-name">errors</tt><tt class="py-op">)</tt> </tt>
+<a name="L1529"></a><tt class="py-lineno">1529</tt>  <tt class="py-line">        <tt class="py-name">warnings</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">e</tt> <tt class="py-keyword">for</tt> <tt class="py-name">e</tt> <tt class="py-keyword">in</tt> <tt class="py-name">errors</tt> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">e</tt><tt class="py-op">.</tt><tt id="link-356" class="py-name"><a title="epydoc.markup.ParseErr [...]
+<a name="L1530"></a><tt class="py-lineno">1530</tt>  <tt class="py-line">        <tt class="py-name">errors</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">e</tt> <tt class="py-keyword">for</tt> <tt class="py-name">e</tt> <tt class="py-keyword">in</tt> <tt class="py-name">errors</tt> <tt class="py-keyword">if</tt> <tt class="py-name">e</tt><tt class="py-op">.</tt><tt id="link-357" class="py-name"><a title="epydoc.markup.ParseError.is_fatal" class="py-name" href= [...]
+<a name="L1531"></a><tt class="py-lineno">1531</tt>  <tt class="py-line">    <tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt>
+<a name="L1532"></a><tt class="py-lineno">1532</tt>  <tt class="py-line">        <tt class="py-name">confused</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L1533"></a><tt class="py-lineno">1533</tt>  <tt class="py-line">         </tt>
+<a name="L1534"></a><tt class="py-lineno">1534</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">show_warnings</tt><tt class="py-op">:</tt> <tt class="py-name">warnings</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L1535"></a><tt class="py-lineno">1535</tt>  <tt class="py-line">    <tt class="py-name">warnings</tt><tt class="py-op">.</tt><tt class="py-name">sort</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1536"></a><tt class="py-lineno">1536</tt>  <tt class="py-line">    <tt class="py-name">errors</tt><tt class="py-op">.</tt><tt class="py-name">sort</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1537"></a><tt class="py-lineno">1537</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">warnings</tt><tt class="py-op">:</tt> </tt>
+<a name="L1538"></a><tt class="py-lineno">1538</tt>  <tt class="py-line">        <tt class="py-keyword">print</tt> <tt class="py-op">>></tt><tt class="py-name">stream</tt><tt class="py-op">,</tt> <tt class="py-string">'='</tt><tt class="py-op">*</tt><tt class="py-name">SCRWIDTH</tt> </tt>
+<a name="L1539"></a><tt class="py-lineno">1539</tt>  <tt class="py-line">        <tt class="py-keyword">print</tt> <tt class="py-op">>></tt><tt class="py-name">stream</tt><tt class="py-op">,</tt> <tt class="py-string">"WARNINGS"</tt> </tt>
+<a name="L1540"></a><tt class="py-lineno">1540</tt>  <tt class="py-line">        <tt class="py-keyword">print</tt> <tt class="py-op">>></tt><tt class="py-name">stream</tt><tt class="py-op">,</tt> <tt class="py-string">'-'</tt><tt class="py-op">*</tt><tt class="py-name">SCRWIDTH</tt> </tt>
+<a name="L1541"></a><tt class="py-lineno">1541</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt id="link-358" class="py-name" targets="Method epydoc.checker.DocChecker.warning()=epydoc.checker.DocChecker-class.html#warning,Function epydoc.log.warning()=epydoc.log-module.html#warning"><a title="epydoc.checker.DocChecker.warning
+epydoc.log.warning" class="py-name" href="#" onclick="return doclink('link-358', 'warning', 'link-358');">warning</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">warnings</tt><tt class="py-op">:</tt> </tt>
+<a name="L1542"></a><tt class="py-lineno">1542</tt>  <tt class="py-line">            <tt class="py-keyword">print</tt> <tt class="py-op">>></tt><tt class="py-name">stream</tt><tt class="py-op">,</tt> <tt id="link-359" class="py-name"><a title="epydoc.checker.DocChecker.warning
+epydoc.log.warning" class="py-name" href="#" onclick="return doclink('link-359', 'warning', 'link-358');">warning</a></tt><tt class="py-op">.</tt><tt class="py-name">as_warning</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1543"></a><tt class="py-lineno">1543</tt>  <tt class="py-line">        <tt class="py-keyword">print</tt> <tt class="py-op">>></tt><tt class="py-name">stream</tt><tt class="py-op">,</tt> <tt class="py-string">'='</tt><tt class="py-op">*</tt><tt class="py-name">SCRWIDTH</tt> </tt>
+<a name="L1544"></a><tt class="py-lineno">1544</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">errors</tt> <tt class="py-keyword">and</tt> <tt class="py-name">show_errors</tt><tt class="py-op">:</tt> </tt>
+<a name="L1545"></a><tt class="py-lineno">1545</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">warnings</tt><tt class="py-op">:</tt> <tt class="py-keyword">print</tt> <tt class="py-op">>></tt><tt class="py-name">stream</tt><tt class="py-op">,</tt> <tt class="py-string">'='</tt><tt class="py-op">*</tt><tt class="py-name">SCRWIDTH</tt> </tt>
+<a name="L1546"></a><tt class="py-lineno">1546</tt>  <tt class="py-line">        <tt class="py-keyword">print</tt> <tt class="py-op">>></tt><tt class="py-name">stream</tt><tt class="py-op">,</tt> <tt class="py-string">"ERRORS"</tt> </tt>
+<a name="L1547"></a><tt class="py-lineno">1547</tt>  <tt class="py-line">        <tt class="py-keyword">print</tt> <tt class="py-op">>></tt><tt class="py-name">stream</tt><tt class="py-op">,</tt> <tt class="py-string">'-'</tt><tt class="py-op">*</tt><tt class="py-name">SCRWIDTH</tt> </tt>
+<a name="L1548"></a><tt class="py-lineno">1548</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt id="link-360" class="py-name" targets="Function epydoc.log.error()=epydoc.log-module.html#error"><a title="epydoc.log.error" class="py-name" href="#" onclick="return doclink('link-360', 'error', 'link-360');">error</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">errors</tt><tt class="py-op">:</tt> </tt>
+<a name="L1549"></a><tt class="py-lineno">1549</tt>  <tt class="py-line">            <tt class="py-keyword">print</tt> <tt class="py-op">>></tt><tt class="py-name">stream</tt><tt class="py-op">,</tt> <tt id="link-361" class="py-name"><a title="epydoc.log.error" class="py-name" href="#" onclick="return doclink('link-361', 'error', 'link-360');">error</a></tt> </tt>
+<a name="L1550"></a><tt class="py-lineno">1550</tt>  <tt class="py-line">        <tt class="py-keyword">print</tt> <tt class="py-op">>></tt><tt class="py-name">stream</tt><tt class="py-op">,</tt> <tt class="py-string">'='</tt><tt class="py-op">*</tt><tt class="py-name">SCRWIDTH</tt> </tt>
+<a name="L1551"></a><tt class="py-lineno">1551</tt>  <tt class="py-line"> </tt>
+<a name="L1552"></a><tt class="py-lineno">1552</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">confused</tt><tt class="py-op">:</tt> <tt class="py-keyword">raise</tt> </tt>
+<a name="L1553"></a><tt class="py-lineno">1553</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">errors</tt><tt class="py-op">:</tt> <tt class="py-keyword">raise</tt> <tt class="py-name">SyntaxError</tt><tt class="py-op">(</tt><tt class="py-string">'Encountered Errors'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1554"></a><tt class="py-lineno">1554</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-name">val</tt> </tt>
+</div><a name="L1555"></a><tt class="py-lineno">1555</tt>  <tt class="py-line"> </tt>
+<a name="L1556"></a><tt class="py-lineno">1556</tt>  <tt class="py-line"><tt class="py-comment">##################################################</tt> </tt>
+<a name="L1557"></a><tt class="py-lineno">1557</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## Parse Errors</tt> </tt>
+<a name="L1558"></a><tt class="py-lineno">1558</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">##################################################</tt> </tt>
+<a name="L1559"></a><tt class="py-lineno">1559</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="TokenizationError"></a><div id="TokenizationError-def"><a name="L1560"></a><tt class="py-lineno">1560</tt> <a class="py-toggle" href="#" id="TokenizationError-toggle" onclick="return toggle('TokenizationError');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="epydoc.markup.epytext.TokenizationError-class.html">TokenizationError</a><tt class="py-op">(</tt><tt class="py-base-class">ParseError</tt><tt class="py-op">)</tt><tt class="py-op">:< [...]
+</div><div id="TokenizationError-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="TokenizationError-expanded"><a name="L1561"></a><tt class="py-lineno">1561</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L1562"></a><tt class="py-lineno">1562</tt>  <tt class="py-line"><tt class="py-docstring">    An error generated while tokenizing a formatted documentation</tt> </tt>
+<a name="L1563"></a><tt class="py-lineno">1563</tt>  <tt class="py-line"><tt class="py-docstring">    string.</tt> </tt>
+<a name="L1564"></a><tt class="py-lineno">1564</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+</div><a name="L1565"></a><tt class="py-lineno">1565</tt>  <tt class="py-line"> </tt>
+<a name="StructuringError"></a><div id="StructuringError-def"><a name="L1566"></a><tt class="py-lineno">1566</tt> <a class="py-toggle" href="#" id="StructuringError-toggle" onclick="return toggle('StructuringError');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="epydoc.markup.epytext.StructuringError-class.html">StructuringError</a><tt class="py-op">(</tt><tt class="py-base-class">ParseError</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="StructuringError-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="StructuringError-expanded"><a name="L1567"></a><tt class="py-lineno">1567</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L1568"></a><tt class="py-lineno">1568</tt>  <tt class="py-line"><tt class="py-docstring">    An error generated while structuring a formatted documentation</tt> </tt>
+<a name="L1569"></a><tt class="py-lineno">1569</tt>  <tt class="py-line"><tt class="py-docstring">    string.</tt> </tt>
+<a name="L1570"></a><tt class="py-lineno">1570</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+</div><a name="L1571"></a><tt class="py-lineno">1571</tt>  <tt class="py-line"> </tt>
+<a name="ColorizingError"></a><div id="ColorizingError-def"><a name="L1572"></a><tt class="py-lineno">1572</tt> <a class="py-toggle" href="#" id="ColorizingError-toggle" onclick="return toggle('ColorizingError');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="epydoc.markup.epytext.ColorizingError-class.html">ColorizingError</a><tt class="py-op">(</tt><tt class="py-base-class">ParseError</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ColorizingError-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="ColorizingError-expanded"><a name="L1573"></a><tt class="py-lineno">1573</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L1574"></a><tt class="py-lineno">1574</tt>  <tt class="py-line"><tt class="py-docstring">    An error generated while colorizing a paragraph.</tt> </tt>
+<a name="L1575"></a><tt class="py-lineno">1575</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="ColorizingError.__init__"></a><div id="ColorizingError.__init__-def"><a name="L1576"></a><tt class="py-lineno">1576</tt> <a class="py-toggle" href="#" id="ColorizingError.__init__-toggle" onclick="return toggle('ColorizingError.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.epytext.ColorizingError-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <t [...]
+</div><div id="ColorizingError.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ColorizingError.__init__-expanded"><a name="L1577"></a><tt class="py-lineno">1577</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L1578"></a><tt class="py-lineno">1578</tt>  <tt class="py-line"><tt class="py-docstring">        Construct a new colorizing exception.</tt> </tt>
+<a name="L1579"></a><tt class="py-lineno">1579</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt>
+<a name="L1580"></a><tt class="py-lineno">1580</tt>  <tt class="py-line"><tt class="py-docstring">        @param descr: A short description of the error.</tt> </tt>
+<a name="L1581"></a><tt class="py-lineno">1581</tt>  <tt class="py-line"><tt class="py-docstring">        @type descr: C{string}</tt> </tt>
+<a name="L1582"></a><tt class="py-lineno">1582</tt>  <tt class="py-line"><tt class="py-docstring">        @param token: The token where the error occured</tt> </tt>
+<a name="L1583"></a><tt class="py-lineno">1583</tt>  <tt class="py-line"><tt class="py-docstring">        @type token: L{Token}</tt> </tt>
+<a name="L1584"></a><tt class="py-lineno">1584</tt>  <tt class="py-line"><tt class="py-docstring">        @param charnum: The character index of the position in</tt> </tt>
+<a name="L1585"></a><tt class="py-lineno">1585</tt>  <tt class="py-line"><tt class="py-docstring">            C{token} where the error occured.</tt> </tt>
+<a name="L1586"></a><tt class="py-lineno">1586</tt>  <tt class="py-line"><tt class="py-docstring">        @type charnum: C{int}</tt> </tt>
+<a name="L1587"></a><tt class="py-lineno">1587</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L1588"></a><tt class="py-lineno">1588</tt>  <tt class="py-line">        <tt id="link-362" class="py-name" targets="Class epydoc.docparser.ParseError=epydoc.docparser.ParseError-class.html,Class epydoc.markup.ParseError=epydoc.markup.ParseError-class.html"><a title="epydoc.docparser.ParseError
+epydoc.markup.ParseError" class="py-name" href="#" onclick="return doclink('link-362', 'ParseError', 'link-362');">ParseError</a></tt><tt class="py-op">.</tt><tt id="link-363" class="py-name" targets="Method epydoc.apidoc.APIDoc.__init__()=epydoc.apidoc.APIDoc-class.html#__init__,Method epydoc.apidoc.DocIndex.__init__()=epydoc.apidoc.DocIndex-class.html#__init__,Method epydoc.apidoc.DottedName.__init__()=epydoc.apidoc.DottedName-class.html#__init__,Method epydoc.apidoc.NamespaceDoc.__ini [...]
+epydoc.apidoc.DocIndex.__init__
+epydoc.apidoc.DottedName.__init__
+epydoc.apidoc.NamespaceDoc.__init__
+epydoc.apidoc.VariableDoc.__init__
+epydoc.apidoc._Sentinel.__init__
+epydoc.checker.DocChecker.__init__
+epydoc.cli.ConsoleLogger.__init__
+epydoc.cli.HTMLLogger.__init__
+epydoc.cli.TerminalController.__init__
+epydoc.cli.UnifiedProgressConsoleLogger.__init__
+epydoc.docbuilder.BuildOptions.__init__
+epydoc.docbuilder._ProgressEstimator.__init__
+epydoc.docintrospecter._DevNull.__init__
+epydoc.docstringparser.DocstringField.__init__
+epydoc.docwriter.dotgraph.DotGraph.__init__
+epydoc.docwriter.dotgraph.DotGraphEdge.__init__
+epydoc.docwriter.dotgraph.DotGraphNode.__init__
+epydoc.docwriter.dotgraph.DotGraphUmlClassNode.__init__
+epydoc.docwriter.dotgraph.DotGraphUmlModuleNode.__init__
+epydoc.docwriter.html.HTMLWriter.__init__
+epydoc.docwriter.html._HTMLDocstringLinker.__init__
+epydoc.docwriter.html_colorize.PythonSourceColorizer.__init__
+epydoc.docwriter.latex.LatexWriter.__init__
+epydoc.docwriter.xlink.ApiLinkReader.__init__
+epydoc.docwriter.xlink.DocUrlGenerator.__init__
+epydoc.gui.EpydocGUI.__init__
+epydoc.gui.GUILogger.__init__
+epydoc.log.SimpleLogger.__init__
+epydoc.markup.ConcatenatedDocstring.__init__
+epydoc.markup.Field.__init__
+epydoc.markup.ParseError.__init__
+epydoc.markup.epytext.ColorizingError.__init__
+epydoc.markup.epytext.Element.__init__
+epydoc.markup.epytext.ParsedEpytextDocstring.__init__
+epydoc.markup.epytext.Token.__init__
+epydoc.markup.javadoc.ParsedJavadocDocstring.__init__
+epydoc.markup.plaintext.ParsedPlaintextDocstring.__init__
+epydoc.markup.pyval_repr.ColorizedPyvalRepr.__init__
+epydoc.markup.pyval_repr.PyvalColorizer.__init__
+epydoc.markup.pyval_repr._ColorizerState.__init__
+epydoc.markup.restructuredtext.ParsedRstDocstring.__init__
+epydoc.markup.restructuredtext._DocumentPseudoWriter.__init__
+epydoc.markup.restructuredtext._EpydocHTMLTranslator.__init__
+epydoc.markup.restructuredtext._EpydocLaTeXTranslator.__init__
+epydoc.markup.restructuredtext._EpydocReader.__init__
+epydoc.markup.restructuredtext._SplitFieldsTranslator.__init__
+epydoc.markup.restructuredtext._SummaryExtractor.__init__
+epydoc.markup.restructuredtext._TermsExtractor.__init__
+epydoc.markup.restructuredtext.dotgraph.__init__
+epydoc.util.RunSubprocessError.__init__" class="py-name" href="#" onclick="return doclink('link-363', '__init__', 'link-363');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt id="link-364" class="py-name" targets="Variable epydoc.apidoc.APIDoc.descr=epydoc.apidoc.APIDoc-class.html#descr,Variable epydoc.cli.descr=epydoc.cli-module.html#descr,Method epydoc.docwriter.html.HTMLWriter.descr()=epydoc.docwriter.html.HTMLWriter-class.html#descr [...]
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-364', 'descr', 'link-364');">descr</a></tt><tt class="py-op">,</tt> <tt class="py-name">token</tt><tt class="py-op">.</tt><tt class="py-name">startline</tt><tt class="py-op">,</tt> <tt id="link-365" class="py-name"><a title="epydoc.markup.ParseError.is_fatal" class="py-name" href="#" onclick="return doclink('link-365', 'is_fatal', 'link-56');">is_fatal</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1589"></a><tt class="py-lineno">1589</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">token</tt> <tt class="py-op">=</tt> <tt class="py-name">token</tt> </tt>
+<a name="L1590"></a><tt class="py-lineno">1590</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">charnum</tt> <tt class="py-op">=</tt> <tt class="py-name">charnum</tt> </tt>
+</div><a name="L1591"></a><tt class="py-lineno">1591</tt>  <tt class="py-line"> </tt>
+<a name="L1592"></a><tt class="py-lineno">1592</tt>  <tt class="py-line">    <tt id="link-366" class="py-name" targets="Variable epydoc.markup.epytext.ColorizingError.CONTEXT_RANGE=epydoc.markup.epytext.ColorizingError-class.html#CONTEXT_RANGE"><a title="epydoc.markup.epytext.ColorizingError.CONTEXT_RANGE" class="py-name" href="#" onclick="return doclink('link-366', 'CONTEXT_RANGE', 'link-366');">CONTEXT_RANGE</a></tt> <tt class="py-op">=</tt> <tt class="py-number">20</tt> </tt>
+<a name="ColorizingError.descr"></a><div id="ColorizingError.descr-def"><a name="L1593"></a><tt class="py-lineno">1593</tt> <a class="py-toggle" href="#" id="ColorizingError.descr-toggle" onclick="return toggle('ColorizingError.descr');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.epytext.ColorizingError-class.html#descr">descr</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</ [...]
+</div><div id="ColorizingError.descr-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ColorizingError.descr-expanded"><a name="L1594"></a><tt class="py-lineno">1594</tt>  <tt class="py-line">        <tt class="py-name">RANGE</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-367" class="py-name"><a title="epydoc.markup.epytext.ColorizingError.CONTEXT_RANGE" class="py-name" href="#" onclick="return doclink('link-367' [...]
+<a name="L1595"></a><tt class="py-lineno">1595</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">charnum</tt> <tt class="py-op"><=</tt> <tt class="py-name">RANGE</tt><tt class="py-op">:</tt> </tt>
+<a name="L1596"></a><tt class="py-lineno">1596</tt>  <tt class="py-line">            <tt class="py-name">left</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">token</tt><tt class="py-op">.</tt><tt class="py-name">contents</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">:</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">charnum</tt><tt class="py-op">]</tt> </tt>
+<a name="L1597"></a><tt class="py-lineno">1597</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1598"></a><tt class="py-lineno">1598</tt>  <tt class="py-line">            <tt class="py-name">left</tt> <tt class="py-op">=</tt> <tt class="py-string">'...'</tt><tt class="py-op">+</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">token</tt><tt class="py-op">.</tt><tt class="py-name">contents</tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">charnum</tt><tt class="py-op">-</tt><tt class="py-name">RAN [...]
+<a name="L1599"></a><tt class="py-lineno">1599</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">token</tt><tt class="py-op">.</tt><tt class="py-name">contents</tt><tt class="py-op">)</tt><tt class="py-op">-</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">charnum</tt><tt class="py-op">)</tt> <tt cl [...]
+<a name="L1600"></a><tt class="py-lineno">1600</tt>  <tt class="py-line">            <tt class="py-name">right</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">token</tt><tt class="py-op">.</tt><tt class="py-name">contents</tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">charnum</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt>
+<a name="L1601"></a><tt class="py-lineno">1601</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1602"></a><tt class="py-lineno">1602</tt>  <tt class="py-line">            <tt class="py-name">right</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">token</tt><tt class="py-op">.</tt><tt class="py-name">contents</tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">charnum</tt><tt class="py-op">:</tt><tt class="py-name">self</tt><tt class="py-op">.</tt>< [...]
+<a name="L1603"></a><tt class="py-lineno">1603</tt>  <tt class="py-line">                     <tt class="py-op">+</tt> <tt class="py-string">'...'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1604"></a><tt class="py-lineno">1604</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-string">'%s\n\n%s%s\n%s^'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-368" class="py-name" targets="Method epydoc.docwriter.plaintext.PlaintextWriter._descr()=epydoc.docwriter.plaintext.PlaintextWriter-class.html#_descr"><a title="epydoc.docwriter.plaintext.Plai [...]
+</div></div><a name="L1605"></a><tt class="py-lineno">1605</tt>  <tt class="py-line">                 </tt>
+<a name="L1606"></a><tt class="py-lineno">1606</tt>  <tt class="py-line"><tt class="py-comment">##################################################</tt> </tt>
+<a name="L1607"></a><tt class="py-lineno">1607</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## Convenience parsers</tt> </tt>
+<a name="L1608"></a><tt class="py-lineno">1608</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">##################################################</tt> </tt>
+<a name="L1609"></a><tt class="py-lineno">1609</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="parse_as_literal"></a><div id="parse_as_literal-def"><a name="L1610"></a><tt class="py-lineno">1610</tt> <a class="py-toggle" href="#" id="parse_as_literal-toggle" onclick="return toggle('parse_as_literal');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.epytext-module.html#parse_as_literal">parse_as_literal</a><tt class="py-op">(</tt><tt class="py-param">str</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="parse_as_literal-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="parse_as_literal-expanded"><a name="L1611"></a><tt class="py-lineno">1611</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L1612"></a><tt class="py-lineno">1612</tt>  <tt class="py-line"><tt class="py-docstring">    Return a DOM document matching the epytext DTD, containing a</tt> </tt>
+<a name="L1613"></a><tt class="py-lineno">1613</tt>  <tt class="py-line"><tt class="py-docstring">    single literal block.  That literal block will include the</tt> </tt>
+<a name="L1614"></a><tt class="py-lineno">1614</tt>  <tt class="py-line"><tt class="py-docstring">    contents of the given string.  This method is typically used as a</tt> </tt>
+<a name="L1615"></a><tt class="py-lineno">1615</tt>  <tt class="py-line"><tt class="py-docstring">    fall-back when the parser fails.</tt> </tt>
+<a name="L1616"></a><tt class="py-lineno">1616</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1617"></a><tt class="py-lineno">1617</tt>  <tt class="py-line"><tt class="py-docstring">    @param str: The string which should be enclosed in a literal</tt> </tt>
+<a name="L1618"></a><tt class="py-lineno">1618</tt>  <tt class="py-line"><tt class="py-docstring">        block.</tt> </tt>
+<a name="L1619"></a><tt class="py-lineno">1619</tt>  <tt class="py-line"><tt class="py-docstring">    @type str: C{string}</tt> </tt>
+<a name="L1620"></a><tt class="py-lineno">1620</tt>  <tt class="py-line"><tt class="py-docstring">    </tt> </tt>
+<a name="L1621"></a><tt class="py-lineno">1621</tt>  <tt class="py-line"><tt class="py-docstring">    @return: A DOM document containing C{str} in a single literal</tt> </tt>
+<a name="L1622"></a><tt class="py-lineno">1622</tt>  <tt class="py-line"><tt class="py-docstring">        block.</tt> </tt>
+<a name="L1623"></a><tt class="py-lineno">1623</tt>  <tt class="py-line"><tt class="py-docstring">    @rtype: C{Element}</tt> </tt>
+<a name="L1624"></a><tt class="py-lineno">1624</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1625"></a><tt class="py-lineno">1625</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-369" class="py-name"><a title="epydoc.markup.epytext.Element" class="py-name" href="#" onclick="return doclink('link-369', 'Element', 'link-30');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'epytext'</tt><tt class="py-op">,</tt> <tt id="link-370" class="py-name"><a title="epydoc.markup.epytext.Element" class="py-name" href="#" onclick="return doc [...]
+</div><a name="L1626"></a><tt class="py-lineno">1626</tt>  <tt class="py-line"> </tt>
+<a name="parse_as_para"></a><div id="parse_as_para-def"><a name="L1627"></a><tt class="py-lineno">1627</tt> <a class="py-toggle" href="#" id="parse_as_para-toggle" onclick="return toggle('parse_as_para');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.epytext-module.html#parse_as_para">parse_as_para</a><tt class="py-op">(</tt><tt class="py-param">str</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="parse_as_para-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="parse_as_para-expanded"><a name="L1628"></a><tt class="py-lineno">1628</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L1629"></a><tt class="py-lineno">1629</tt>  <tt class="py-line"><tt class="py-docstring">    Return a DOM document matching the epytext DTD, containing a</tt> </tt>
+<a name="L1630"></a><tt class="py-lineno">1630</tt>  <tt class="py-line"><tt class="py-docstring">    single paragraph.  That paragraph will include the contents of the</tt> </tt>
+<a name="L1631"></a><tt class="py-lineno">1631</tt>  <tt class="py-line"><tt class="py-docstring">    given string.  This can be used to wrap some forms of</tt> </tt>
+<a name="L1632"></a><tt class="py-lineno">1632</tt>  <tt class="py-line"><tt class="py-docstring">    automatically generated information (such as type names) in</tt> </tt>
+<a name="L1633"></a><tt class="py-lineno">1633</tt>  <tt class="py-line"><tt class="py-docstring">    paragraphs.</tt> </tt>
+<a name="L1634"></a><tt class="py-lineno">1634</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1635"></a><tt class="py-lineno">1635</tt>  <tt class="py-line"><tt class="py-docstring">    @param str: The string which should be enclosed in a paragraph.</tt> </tt>
+<a name="L1636"></a><tt class="py-lineno">1636</tt>  <tt class="py-line"><tt class="py-docstring">    @type str: C{string}</tt> </tt>
+<a name="L1637"></a><tt class="py-lineno">1637</tt>  <tt class="py-line"><tt class="py-docstring">    </tt> </tt>
+<a name="L1638"></a><tt class="py-lineno">1638</tt>  <tt class="py-line"><tt class="py-docstring">    @return: A DOM document containing C{str} in a single paragraph.</tt> </tt>
+<a name="L1639"></a><tt class="py-lineno">1639</tt>  <tt class="py-line"><tt class="py-docstring">    @rtype: C{Element}</tt> </tt>
+<a name="L1640"></a><tt class="py-lineno">1640</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1641"></a><tt class="py-lineno">1641</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-371" class="py-name"><a title="epydoc.markup.epytext.Element" class="py-name" href="#" onclick="return doclink('link-371', 'Element', 'link-30');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'epytext'</tt><tt class="py-op">,</tt> <tt id="link-372" class="py-name"><a title="epydoc.markup.epytext.Element" class="py-name" href="#" onclick="return doc [...]
+</div><a name="L1642"></a><tt class="py-lineno">1642</tt>  <tt class="py-line"> </tt>
+<a name="L1643"></a><tt class="py-lineno">1643</tt>  <tt class="py-line"><tt class="py-comment">#################################################################</tt> </tt>
+<a name="L1644"></a><tt class="py-lineno">1644</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">##                    SUPPORT FOR EPYDOC</tt> </tt>
+<a name="L1645"></a><tt class="py-lineno">1645</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#################################################################</tt> </tt>
+<a name="L1646"></a><tt class="py-lineno">1646</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="parse_docstring"></a><div id="parse_docstring-def"><a name="L1647"></a><tt class="py-lineno">1647</tt> <a class="py-toggle" href="#" id="parse_docstring-toggle" onclick="return toggle('parse_docstring');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.epytext-module.html#parse_docstring">parse_docstring</a><tt class="py-op">(</tt><tt class="py-param">docstring</tt><tt class="py-op">,</tt> <tt class="py-param">errors</tt><tt cl [...]
+</div><div id="parse_docstring-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="parse_docstring-expanded"><a name="L1648"></a><tt class="py-lineno">1648</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L1649"></a><tt class="py-lineno">1649</tt>  <tt class="py-line"><tt class="py-docstring">    Parse the given docstring, which is formatted using epytext; and</tt> </tt>
+<a name="L1650"></a><tt class="py-lineno">1650</tt>  <tt class="py-line"><tt class="py-docstring">    return a C{ParsedDocstring} representation of its contents.</tt> </tt>
+<a name="L1651"></a><tt class="py-lineno">1651</tt>  <tt class="py-line"><tt class="py-docstring">    @param docstring: The docstring to parse</tt> </tt>
+<a name="L1652"></a><tt class="py-lineno">1652</tt>  <tt class="py-line"><tt class="py-docstring">    @type docstring: C{string}</tt> </tt>
+<a name="L1653"></a><tt class="py-lineno">1653</tt>  <tt class="py-line"><tt class="py-docstring">    @param errors: A list where any errors generated during parsing</tt> </tt>
+<a name="L1654"></a><tt class="py-lineno">1654</tt>  <tt class="py-line"><tt class="py-docstring">        will be stored.</tt> </tt>
+<a name="L1655"></a><tt class="py-lineno">1655</tt>  <tt class="py-line"><tt class="py-docstring">    @type errors: C{list} of L{ParseError}</tt> </tt>
+<a name="L1656"></a><tt class="py-lineno">1656</tt>  <tt class="py-line"><tt class="py-docstring">    @param options: Extra options.  Unknown options are ignored.</tt> </tt>
+<a name="L1657"></a><tt class="py-lineno">1657</tt>  <tt class="py-line"><tt class="py-docstring">        Currently, no extra options are defined.</tt> </tt>
+<a name="L1658"></a><tt class="py-lineno">1658</tt>  <tt class="py-line"><tt class="py-docstring">    @rtype: L{ParsedDocstring}</tt> </tt>
+<a name="L1659"></a><tt class="py-lineno">1659</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1660"></a><tt class="py-lineno">1660</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-373" class="py-name" targets="Class epydoc.markup.epytext.ParsedEpytextDocstring=epydoc.markup.epytext.ParsedEpytextDocstring-class.html"><a title="epydoc.markup.epytext.ParsedEpytextDocstring" class="py-name" href="#" onclick="return doclink('link-373', 'ParsedEpytextDocstring', 'link-373');">ParsedEpytextDocstring</a></tt><tt class="py-op">(</tt><tt id="link-374" [...]
+epydoc.markup.parse" class="py-name" href="#" onclick="return doclink('link-374', 'parse', 'link-355');">parse</a></tt><tt class="py-op">(</tt><tt id="link-375" class="py-name" targets="Variable epydoc.apidoc.APIDoc.docstring=epydoc.apidoc.APIDoc-class.html#docstring"><a title="epydoc.apidoc.APIDoc.docstring" class="py-name" href="#" onclick="return doclink('link-375', 'docstring', 'link-375');">docstring</a></tt><tt class="py-op">,</tt> <tt class="py-name">errors</tt><tt class="py-op">) [...]
+</div><a name="L1661"></a><tt class="py-lineno">1661</tt>  <tt class="py-line">     </tt>
+<a name="ParsedEpytextDocstring"></a><div id="ParsedEpytextDocstring-def"><a name="L1662"></a><tt class="py-lineno">1662</tt> <a class="py-toggle" href="#" id="ParsedEpytextDocstring-toggle" onclick="return toggle('ParsedEpytextDocstring');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html">ParsedEpytextDocstring</a><tt class="py-op">(</tt><tt class="py-base-class">ParsedDocstring</tt><tt class [...]
+</div><div id="ParsedEpytextDocstring-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="ParsedEpytextDocstring-expanded"><a name="L1663"></a><tt class="py-lineno">1663</tt>  <tt class="py-line">    <tt id="link-376" class="py-name" targets="Variable epydoc.markup.epytext.ParsedEpytextDocstring.SYMBOL_TO_HTML=epydoc.markup.epytext.ParsedEpytextDocstring-class.html#SYMBOL_TO_HTML"><a title="epydoc.markup.epytext.ParsedEpytextDocstring.SYMBOL_TO_HTML" class="py-name"  [...]
+<a name="L1664"></a><tt class="py-lineno">1664</tt>  <tt class="py-line">        <tt class="py-comment"># Symbols</tt> </tt>
+<a name="L1665"></a><tt class="py-lineno">1665</tt>  <tt class="py-line">        <tt class="py-string">'<-'</tt><tt class="py-op">:</tt> <tt class="py-string">'&larr;'</tt><tt class="py-op">,</tt> <tt class="py-string">'->'</tt><tt class="py-op">:</tt> <tt class="py-string">'&rarr;'</tt><tt class="py-op">,</tt> <tt class="py-string">'^'</tt><tt class="py-op">:</tt> <tt class="py-string">'&uarr;'</tt><tt class="py-op">,</tt> <tt class="py-string">'v'</tt><tt class="py-op [...]
+<a name="L1666"></a><tt class="py-lineno">1666</tt>  <tt class="py-line">     </tt>
+<a name="L1667"></a><tt class="py-lineno">1667</tt>  <tt class="py-line">        <tt class="py-comment"># Greek letters</tt> </tt>
+<a name="L1668"></a><tt class="py-lineno">1668</tt>  <tt class="py-line">        <tt class="py-string">'alpha'</tt><tt class="py-op">:</tt> <tt class="py-string">'&alpha;'</tt><tt class="py-op">,</tt> <tt class="py-string">'beta'</tt><tt class="py-op">:</tt> <tt class="py-string">'&beta;'</tt><tt class="py-op">,</tt> <tt class="py-string">'gamma'</tt><tt class="py-op">:</tt> <tt class="py-string">'&gamma;'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1669"></a><tt class="py-lineno">1669</tt>  <tt class="py-line">        <tt class="py-string">'delta'</tt><tt class="py-op">:</tt> <tt class="py-string">'&delta;'</tt><tt class="py-op">,</tt> <tt class="py-string">'epsilon'</tt><tt class="py-op">:</tt> <tt class="py-string">'&epsilon;'</tt><tt class="py-op">,</tt> <tt class="py-string">'zeta'</tt><tt class="py-op">:</tt> <tt class="py-string">'&zeta;'</tt><tt class="py-op">,</tt>   </tt>
+<a name="L1670"></a><tt class="py-lineno">1670</tt>  <tt class="py-line">        <tt class="py-string">'eta'</tt><tt class="py-op">:</tt> <tt class="py-string">'&eta;'</tt><tt class="py-op">,</tt> <tt class="py-string">'theta'</tt><tt class="py-op">:</tt> <tt class="py-string">'&theta;'</tt><tt class="py-op">,</tt> <tt class="py-string">'iota'</tt><tt class="py-op">:</tt> <tt class="py-string">'&iota;'</tt><tt class="py-op">,</tt>  </tt>
+<a name="L1671"></a><tt class="py-lineno">1671</tt>  <tt class="py-line">        <tt class="py-string">'kappa'</tt><tt class="py-op">:</tt> <tt class="py-string">'&kappa;'</tt><tt class="py-op">,</tt> <tt class="py-string">'lambda'</tt><tt class="py-op">:</tt> <tt class="py-string">'&lambda;'</tt><tt class="py-op">,</tt> <tt class="py-string">'mu'</tt><tt class="py-op">:</tt> <tt class="py-string">'&mu;'</tt><tt class="py-op">,</tt>   </tt>
+<a name="L1672"></a><tt class="py-lineno">1672</tt>  <tt class="py-line">        <tt class="py-string">'nu'</tt><tt class="py-op">:</tt> <tt class="py-string">'&nu;'</tt><tt class="py-op">,</tt> <tt class="py-string">'xi'</tt><tt class="py-op">:</tt> <tt class="py-string">'&xi;'</tt><tt class="py-op">,</tt> <tt class="py-string">'omicron'</tt><tt class="py-op">:</tt> <tt class="py-string">'&omicron;'</tt><tt class="py-op">,</tt>   </tt>
+<a name="L1673"></a><tt class="py-lineno">1673</tt>  <tt class="py-line">        <tt class="py-string">'pi'</tt><tt class="py-op">:</tt> <tt class="py-string">'&pi;'</tt><tt class="py-op">,</tt> <tt class="py-string">'rho'</tt><tt class="py-op">:</tt> <tt class="py-string">'&rho;'</tt><tt class="py-op">,</tt> <tt class="py-string">'sigma'</tt><tt class="py-op">:</tt> <tt class="py-string">'&sigma;'</tt><tt class="py-op">,</tt>   </tt>
+<a name="L1674"></a><tt class="py-lineno">1674</tt>  <tt class="py-line">        <tt class="py-string">'tau'</tt><tt class="py-op">:</tt> <tt class="py-string">'&tau;'</tt><tt class="py-op">,</tt> <tt class="py-string">'upsilon'</tt><tt class="py-op">:</tt> <tt class="py-string">'&upsilon;'</tt><tt class="py-op">,</tt> <tt class="py-string">'phi'</tt><tt class="py-op">:</tt> <tt class="py-string">'&phi;'</tt><tt class="py-op">,</tt>   </tt>
+<a name="L1675"></a><tt class="py-lineno">1675</tt>  <tt class="py-line">        <tt class="py-string">'chi'</tt><tt class="py-op">:</tt> <tt class="py-string">'&chi;'</tt><tt class="py-op">,</tt> <tt class="py-string">'psi'</tt><tt class="py-op">:</tt> <tt class="py-string">'&psi;'</tt><tt class="py-op">,</tt> <tt class="py-string">'omega'</tt><tt class="py-op">:</tt> <tt class="py-string">'&omega;'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1676"></a><tt class="py-lineno">1676</tt>  <tt class="py-line">        <tt class="py-string">'Alpha'</tt><tt class="py-op">:</tt> <tt class="py-string">'&Alpha;'</tt><tt class="py-op">,</tt> <tt class="py-string">'Beta'</tt><tt class="py-op">:</tt> <tt class="py-string">'&Beta;'</tt><tt class="py-op">,</tt> <tt class="py-string">'Gamma'</tt><tt class="py-op">:</tt> <tt class="py-string">'&Gamma;'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1677"></a><tt class="py-lineno">1677</tt>  <tt class="py-line">        <tt class="py-string">'Delta'</tt><tt class="py-op">:</tt> <tt class="py-string">'&Delta;'</tt><tt class="py-op">,</tt> <tt class="py-string">'Epsilon'</tt><tt class="py-op">:</tt> <tt class="py-string">'&Epsilon;'</tt><tt class="py-op">,</tt> <tt class="py-string">'Zeta'</tt><tt class="py-op">:</tt> <tt class="py-string">'&Zeta;'</tt><tt class="py-op">,</tt>   </tt>
+<a name="L1678"></a><tt class="py-lineno">1678</tt>  <tt class="py-line">        <tt class="py-string">'Eta'</tt><tt class="py-op">:</tt> <tt class="py-string">'&Eta;'</tt><tt class="py-op">,</tt> <tt class="py-string">'Theta'</tt><tt class="py-op">:</tt> <tt class="py-string">'&Theta;'</tt><tt class="py-op">,</tt> <tt class="py-string">'Iota'</tt><tt class="py-op">:</tt> <tt class="py-string">'&Iota;'</tt><tt class="py-op">,</tt>  </tt>
+<a name="L1679"></a><tt class="py-lineno">1679</tt>  <tt class="py-line">        <tt class="py-string">'Kappa'</tt><tt class="py-op">:</tt> <tt class="py-string">'&Kappa;'</tt><tt class="py-op">,</tt> <tt class="py-string">'Lambda'</tt><tt class="py-op">:</tt> <tt class="py-string">'&Lambda;'</tt><tt class="py-op">,</tt> <tt class="py-string">'Mu'</tt><tt class="py-op">:</tt> <tt class="py-string">'&Mu;'</tt><tt class="py-op">,</tt>   </tt>
+<a name="L1680"></a><tt class="py-lineno">1680</tt>  <tt class="py-line">        <tt class="py-string">'Nu'</tt><tt class="py-op">:</tt> <tt class="py-string">'&Nu;'</tt><tt class="py-op">,</tt> <tt class="py-string">'Xi'</tt><tt class="py-op">:</tt> <tt class="py-string">'&Xi;'</tt><tt class="py-op">,</tt> <tt class="py-string">'Omicron'</tt><tt class="py-op">:</tt> <tt class="py-string">'&Omicron;'</tt><tt class="py-op">,</tt>   </tt>
+<a name="L1681"></a><tt class="py-lineno">1681</tt>  <tt class="py-line">        <tt class="py-string">'Pi'</tt><tt class="py-op">:</tt> <tt class="py-string">'&Pi;'</tt><tt class="py-op">,</tt> <tt class="py-string">'Rho'</tt><tt class="py-op">:</tt> <tt class="py-string">'&Rho;'</tt><tt class="py-op">,</tt> <tt class="py-string">'Sigma'</tt><tt class="py-op">:</tt> <tt class="py-string">'&Sigma;'</tt><tt class="py-op">,</tt>   </tt>
+<a name="L1682"></a><tt class="py-lineno">1682</tt>  <tt class="py-line">        <tt class="py-string">'Tau'</tt><tt class="py-op">:</tt> <tt class="py-string">'&Tau;'</tt><tt class="py-op">,</tt> <tt class="py-string">'Upsilon'</tt><tt class="py-op">:</tt> <tt class="py-string">'&Upsilon;'</tt><tt class="py-op">,</tt> <tt class="py-string">'Phi'</tt><tt class="py-op">:</tt> <tt class="py-string">'&Phi;'</tt><tt class="py-op">,</tt>   </tt>
+<a name="L1683"></a><tt class="py-lineno">1683</tt>  <tt class="py-line">        <tt class="py-string">'Chi'</tt><tt class="py-op">:</tt> <tt class="py-string">'&Chi;'</tt><tt class="py-op">,</tt> <tt class="py-string">'Psi'</tt><tt class="py-op">:</tt> <tt class="py-string">'&Psi;'</tt><tt class="py-op">,</tt> <tt class="py-string">'Omega'</tt><tt class="py-op">:</tt> <tt class="py-string">'&Omega;'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1684"></a><tt class="py-lineno">1684</tt>  <tt class="py-line">     </tt>
+<a name="L1685"></a><tt class="py-lineno">1685</tt>  <tt class="py-line">        <tt class="py-comment"># HTML character entities</tt> </tt>
+<a name="L1686"></a><tt class="py-lineno">1686</tt>  <tt class="py-line">        <tt class="py-string">'larr'</tt><tt class="py-op">:</tt> <tt class="py-string">'&larr;'</tt><tt class="py-op">,</tt> <tt class="py-string">'rarr'</tt><tt class="py-op">:</tt> <tt class="py-string">'&rarr;'</tt><tt class="py-op">,</tt> <tt class="py-string">'uarr'</tt><tt class="py-op">:</tt> <tt class="py-string">'&uarr;'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1687"></a><tt class="py-lineno">1687</tt>  <tt class="py-line">        <tt class="py-string">'darr'</tt><tt class="py-op">:</tt> <tt class="py-string">'&darr;'</tt><tt class="py-op">,</tt> <tt class="py-string">'harr'</tt><tt class="py-op">:</tt> <tt class="py-string">'&harr;'</tt><tt class="py-op">,</tt> <tt class="py-string">'crarr'</tt><tt class="py-op">:</tt> <tt class="py-string">'&crarr;'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1688"></a><tt class="py-lineno">1688</tt>  <tt class="py-line">        <tt class="py-string">'lArr'</tt><tt class="py-op">:</tt> <tt class="py-string">'&lArr;'</tt><tt class="py-op">,</tt> <tt class="py-string">'rArr'</tt><tt class="py-op">:</tt> <tt class="py-string">'&rArr;'</tt><tt class="py-op">,</tt> <tt class="py-string">'uArr'</tt><tt class="py-op">:</tt> <tt class="py-string">'&uArr;'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1689"></a><tt class="py-lineno">1689</tt>  <tt class="py-line">        <tt class="py-string">'dArr'</tt><tt class="py-op">:</tt> <tt class="py-string">'&dArr;'</tt><tt class="py-op">,</tt> <tt class="py-string">'hArr'</tt><tt class="py-op">:</tt> <tt class="py-string">'&hArr;'</tt><tt class="py-op">,</tt>  </tt>
+<a name="L1690"></a><tt class="py-lineno">1690</tt>  <tt class="py-line">        <tt class="py-string">'copy'</tt><tt class="py-op">:</tt> <tt class="py-string">'&copy;'</tt><tt class="py-op">,</tt> <tt class="py-string">'times'</tt><tt class="py-op">:</tt> <tt class="py-string">'&times;'</tt><tt class="py-op">,</tt> <tt class="py-string">'forall'</tt><tt class="py-op">:</tt> <tt class="py-string">'&forall;'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1691"></a><tt class="py-lineno">1691</tt>  <tt class="py-line">        <tt class="py-string">'exist'</tt><tt class="py-op">:</tt> <tt class="py-string">'&exist;'</tt><tt class="py-op">,</tt> <tt class="py-string">'part'</tt><tt class="py-op">:</tt> <tt class="py-string">'&part;'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1692"></a><tt class="py-lineno">1692</tt>  <tt class="py-line">        <tt class="py-string">'empty'</tt><tt class="py-op">:</tt> <tt class="py-string">'&empty;'</tt><tt class="py-op">,</tt> <tt class="py-string">'isin'</tt><tt class="py-op">:</tt> <tt class="py-string">'&isin;'</tt><tt class="py-op">,</tt> <tt class="py-string">'notin'</tt><tt class="py-op">:</tt> <tt class="py-string">'&notin;'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1693"></a><tt class="py-lineno">1693</tt>  <tt class="py-line">        <tt class="py-string">'ni'</tt><tt class="py-op">:</tt> <tt class="py-string">'&ni;'</tt><tt class="py-op">,</tt> <tt class="py-string">'prod'</tt><tt class="py-op">:</tt> <tt class="py-string">'&prod;'</tt><tt class="py-op">,</tt> <tt class="py-string">'sum'</tt><tt class="py-op">:</tt> <tt class="py-string">'&sum;'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1694"></a><tt class="py-lineno">1694</tt>  <tt class="py-line">        <tt class="py-string">'prop'</tt><tt class="py-op">:</tt> <tt class="py-string">'&prop;'</tt><tt class="py-op">,</tt> <tt class="py-string">'infin'</tt><tt class="py-op">:</tt> <tt class="py-string">'&infin;'</tt><tt class="py-op">,</tt> <tt class="py-string">'ang'</tt><tt class="py-op">:</tt> <tt class="py-string">'&ang;'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1695"></a><tt class="py-lineno">1695</tt>  <tt class="py-line">        <tt class="py-string">'and'</tt><tt class="py-op">:</tt> <tt class="py-string">'&and;'</tt><tt class="py-op">,</tt> <tt class="py-string">'or'</tt><tt class="py-op">:</tt> <tt class="py-string">'&or;'</tt><tt class="py-op">,</tt> <tt class="py-string">'cap'</tt><tt class="py-op">:</tt> <tt class="py-string">'&cap;'</tt><tt class="py-op">,</tt> <tt class="py-string">'cup'</tt><tt class="py-op">:</ [...]
+<a name="L1696"></a><tt class="py-lineno">1696</tt>  <tt class="py-line">        <tt class="py-string">'int'</tt><tt class="py-op">:</tt> <tt class="py-string">'&int;'</tt><tt class="py-op">,</tt> <tt class="py-string">'there4'</tt><tt class="py-op">:</tt> <tt class="py-string">'&there4;'</tt><tt class="py-op">,</tt> <tt class="py-string">'sim'</tt><tt class="py-op">:</tt> <tt class="py-string">'&sim;'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1697"></a><tt class="py-lineno">1697</tt>  <tt class="py-line">        <tt class="py-string">'cong'</tt><tt class="py-op">:</tt> <tt class="py-string">'&cong;'</tt><tt class="py-op">,</tt> <tt class="py-string">'asymp'</tt><tt class="py-op">:</tt> <tt class="py-string">'&asymp;'</tt><tt class="py-op">,</tt> <tt class="py-string">'ne'</tt><tt class="py-op">:</tt> <tt class="py-string">'&ne;'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1698"></a><tt class="py-lineno">1698</tt>  <tt class="py-line">        <tt class="py-string">'equiv'</tt><tt class="py-op">:</tt> <tt class="py-string">'&equiv;'</tt><tt class="py-op">,</tt> <tt class="py-string">'le'</tt><tt class="py-op">:</tt> <tt class="py-string">'&le;'</tt><tt class="py-op">,</tt> <tt class="py-string">'ge'</tt><tt class="py-op">:</tt> <tt class="py-string">'&ge;'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1699"></a><tt class="py-lineno">1699</tt>  <tt class="py-line">        <tt class="py-string">'sub'</tt><tt class="py-op">:</tt> <tt class="py-string">'&sub;'</tt><tt class="py-op">,</tt> <tt class="py-string">'sup'</tt><tt class="py-op">:</tt> <tt class="py-string">'&sup;'</tt><tt class="py-op">,</tt> <tt class="py-string">'nsub'</tt><tt class="py-op">:</tt> <tt class="py-string">'&nsub;'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1700"></a><tt class="py-lineno">1700</tt>  <tt class="py-line">        <tt class="py-string">'sube'</tt><tt class="py-op">:</tt> <tt class="py-string">'&sube;'</tt><tt class="py-op">,</tt> <tt class="py-string">'supe'</tt><tt class="py-op">:</tt> <tt class="py-string">'&supe;'</tt><tt class="py-op">,</tt> <tt class="py-string">'oplus'</tt><tt class="py-op">:</tt> <tt class="py-string">'&oplus;'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1701"></a><tt class="py-lineno">1701</tt>  <tt class="py-line">        <tt class="py-string">'otimes'</tt><tt class="py-op">:</tt> <tt class="py-string">'&otimes;'</tt><tt class="py-op">,</tt> <tt class="py-string">'perp'</tt><tt class="py-op">:</tt> <tt class="py-string">'&perp;'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1702"></a><tt class="py-lineno">1702</tt>  <tt class="py-line">     </tt>
+<a name="L1703"></a><tt class="py-lineno">1703</tt>  <tt class="py-line">        <tt class="py-comment"># Alternate (long) names</tt> </tt>
+<a name="L1704"></a><tt class="py-lineno">1704</tt>  <tt class="py-line">        <tt class="py-string">'infinity'</tt><tt class="py-op">:</tt> <tt class="py-string">'&infin;'</tt><tt class="py-op">,</tt> <tt class="py-string">'integral'</tt><tt class="py-op">:</tt> <tt class="py-string">'&int;'</tt><tt class="py-op">,</tt> <tt class="py-string">'product'</tt><tt class="py-op">:</tt> <tt class="py-string">'&prod;'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1705"></a><tt class="py-lineno">1705</tt>  <tt class="py-line">        <tt class="py-string">'<='</tt><tt class="py-op">:</tt> <tt class="py-string">'&le;'</tt><tt class="py-op">,</tt> <tt class="py-string">'>='</tt><tt class="py-op">:</tt> <tt class="py-string">'&ge;'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1706"></a><tt class="py-lineno">1706</tt>  <tt class="py-line">        <tt class="py-op">}</tt> </tt>
+<a name="L1707"></a><tt class="py-lineno">1707</tt>  <tt class="py-line">     </tt>
+<a name="L1708"></a><tt class="py-lineno">1708</tt>  <tt class="py-line">    <tt id="link-377" class="py-name" targets="Variable epydoc.markup.epytext.ParsedEpytextDocstring.SYMBOL_TO_LATEX=epydoc.markup.epytext.ParsedEpytextDocstring-class.html#SYMBOL_TO_LATEX"><a title="epydoc.markup.epytext.ParsedEpytextDocstring.SYMBOL_TO_LATEX" class="py-name" href="#" onclick="return doclink('link-377', 'SYMBOL_TO_LATEX', 'link-377');">SYMBOL_TO_LATEX</a></tt> <tt class="py-op">=</tt> <tt class="py [...]
+<a name="L1709"></a><tt class="py-lineno">1709</tt>  <tt class="py-line">        <tt class="py-comment"># Symbols</tt> </tt>
+<a name="L1710"></a><tt class="py-lineno">1710</tt>  <tt class="py-line">        <tt class="py-string">'<-'</tt><tt class="py-op">:</tt> <tt class="py-string">r'\(\leftarrow\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'->'</tt><tt class="py-op">:</tt> <tt class="py-string">r'\(\rightarrow\)'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1711"></a><tt class="py-lineno">1711</tt>  <tt class="py-line">        <tt class="py-string">'^'</tt><tt class="py-op">:</tt> <tt class="py-string">r'\(\uparrow\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'v'</tt><tt class="py-op">:</tt> <tt class="py-string">r'\(\downarrow\)'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1712"></a><tt class="py-lineno">1712</tt>  <tt class="py-line">     </tt>
+<a name="L1713"></a><tt class="py-lineno">1713</tt>  <tt class="py-line">        <tt class="py-comment"># Greek letters (use lower case when upcase not available)</tt> </tt>
+<a name="L1714"></a><tt class="py-lineno">1714</tt>  <tt class="py-line"> </tt>
+<a name="L1715"></a><tt class="py-lineno">1715</tt>  <tt class="py-line">        <tt class="py-string">'alpha'</tt><tt class="py-op">:</tt> <tt class="py-string">r'\(\alpha\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'beta'</tt><tt class="py-op">:</tt> <tt class="py-string">r'\(\beta\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'gamma'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1716"></a><tt class="py-lineno">1716</tt>  <tt class="py-line">        <tt class="py-string">r'\(\gamma\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'delta'</tt><tt class="py-op">:</tt> <tt class="py-string">r'\(\delta\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'epsilon'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1717"></a><tt class="py-lineno">1717</tt>  <tt class="py-line">        <tt class="py-string">r'\(\epsilon\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'zeta'</tt><tt class="py-op">:</tt> <tt class="py-string">r'\(\zeta\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'eta'</tt><tt class="py-op">:</tt> <tt class="py-string">r'\(\eta\)'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1718"></a><tt class="py-lineno">1718</tt>  <tt class="py-line">        <tt class="py-string">'theta'</tt><tt class="py-op">:</tt> <tt class="py-string">r'\(\theta\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'iota'</tt><tt class="py-op">:</tt> <tt class="py-string">r'\(\iota\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'kappa'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1719"></a><tt class="py-lineno">1719</tt>  <tt class="py-line">        <tt class="py-string">r'\(\kappa\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'lambda'</tt><tt class="py-op">:</tt> <tt class="py-string">r'\(\lambda\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'mu'</tt><tt class="py-op">:</tt> <tt class="py-string">r'\(\mu\)'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1720"></a><tt class="py-lineno">1720</tt>  <tt class="py-line">        <tt class="py-string">'nu'</tt><tt class="py-op">:</tt> <tt class="py-string">r'\(\nu\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'xi'</tt><tt class="py-op">:</tt> <tt class="py-string">r'\(\xi\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'omicron'</tt><tt class="py-op">:</tt> <tt class="py-string">r'\(o\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'pi'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1721"></a><tt class="py-lineno">1721</tt>  <tt class="py-line">        <tt class="py-string">r'\(\pi\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'rho'</tt><tt class="py-op">:</tt> <tt class="py-string">r'\(\rho\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'sigma'</tt><tt class="py-op">:</tt> <tt class="py-string">r'\(\sigma\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'tau'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1722"></a><tt class="py-lineno">1722</tt>  <tt class="py-line">        <tt class="py-string">r'\(\tau\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'upsilon'</tt><tt class="py-op">:</tt> <tt class="py-string">r'\(\upsilon\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'phi'</tt><tt class="py-op">:</tt> <tt class="py-string">r'\(\phi\)'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1723"></a><tt class="py-lineno">1723</tt>  <tt class="py-line">        <tt class="py-string">'chi'</tt><tt class="py-op">:</tt> <tt class="py-string">r'\(\chi\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'psi'</tt><tt class="py-op">:</tt> <tt class="py-string">r'\(\psi\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'omega'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1724"></a><tt class="py-lineno">1724</tt>  <tt class="py-line">        <tt class="py-string">r'\(\omega\)'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1725"></a><tt class="py-lineno">1725</tt>  <tt class="py-line">         </tt>
+<a name="L1726"></a><tt class="py-lineno">1726</tt>  <tt class="py-line">        <tt class="py-string">'Alpha'</tt><tt class="py-op">:</tt> <tt class="py-string">r'\(\alpha\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'Beta'</tt><tt class="py-op">:</tt> <tt class="py-string">r'\(\beta\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'Gamma'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1727"></a><tt class="py-lineno">1727</tt>  <tt class="py-line">        <tt class="py-string">r'\(\Gamma\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'Delta'</tt><tt class="py-op">:</tt> <tt class="py-string">r'\(\Delta\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'Epsilon'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1728"></a><tt class="py-lineno">1728</tt>  <tt class="py-line">        <tt class="py-string">r'\(\epsilon\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'Zeta'</tt><tt class="py-op">:</tt> <tt class="py-string">r'\(\zeta\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'Eta'</tt><tt class="py-op">:</tt> <tt class="py-string">r'\(\eta\)'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1729"></a><tt class="py-lineno">1729</tt>  <tt class="py-line">        <tt class="py-string">'Theta'</tt><tt class="py-op">:</tt> <tt class="py-string">r'\(\Theta\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'Iota'</tt><tt class="py-op">:</tt> <tt class="py-string">r'\(\iota\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'Kappa'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1730"></a><tt class="py-lineno">1730</tt>  <tt class="py-line">        <tt class="py-string">r'\(\kappa\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'Lambda'</tt><tt class="py-op">:</tt> <tt class="py-string">r'\(\Lambda\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'Mu'</tt><tt class="py-op">:</tt> <tt class="py-string">r'\(\mu\)'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1731"></a><tt class="py-lineno">1731</tt>  <tt class="py-line">        <tt class="py-string">'Nu'</tt><tt class="py-op">:</tt> <tt class="py-string">r'\(\nu\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'Xi'</tt><tt class="py-op">:</tt> <tt class="py-string">r'\(\Xi\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'Omicron'</tt><tt class="py-op">:</tt> <tt class="py-string">r'\(o\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'Pi'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1732"></a><tt class="py-lineno">1732</tt>  <tt class="py-line">        <tt class="py-string">r'\(\Pi\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'ho'</tt><tt class="py-op">:</tt> <tt class="py-string">r'\(\rho\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'Sigma'</tt><tt class="py-op">:</tt> <tt class="py-string">r'\(\Sigma\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'Tau'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1733"></a><tt class="py-lineno">1733</tt>  <tt class="py-line">        <tt class="py-string">r'\(\tau\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'Upsilon'</tt><tt class="py-op">:</tt> <tt class="py-string">r'\(\Upsilon\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'Phi'</tt><tt class="py-op">:</tt> <tt class="py-string">r'\(\Phi\)'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1734"></a><tt class="py-lineno">1734</tt>  <tt class="py-line">        <tt class="py-string">'Chi'</tt><tt class="py-op">:</tt> <tt class="py-string">r'\(\chi\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'Psi'</tt><tt class="py-op">:</tt> <tt class="py-string">r'\(\Psi\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'Omega'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1735"></a><tt class="py-lineno">1735</tt>  <tt class="py-line">        <tt class="py-string">r'\(\Omega\)'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1736"></a><tt class="py-lineno">1736</tt>  <tt class="py-line">     </tt>
+<a name="L1737"></a><tt class="py-lineno">1737</tt>  <tt class="py-line">        <tt class="py-comment"># HTML character entities</tt> </tt>
+<a name="L1738"></a><tt class="py-lineno">1738</tt>  <tt class="py-line">        <tt class="py-string">'larr'</tt><tt class="py-op">:</tt> <tt class="py-string">r'\(\leftarrow\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'rarr'</tt><tt class="py-op">:</tt> <tt class="py-string">r'\(\rightarrow\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'uarr'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1739"></a><tt class="py-lineno">1739</tt>  <tt class="py-line">        <tt class="py-string">r'\(\uparrow\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'darr'</tt><tt class="py-op">:</tt> <tt class="py-string">r'\(\downarrow\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'harr'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1740"></a><tt class="py-lineno">1740</tt>  <tt class="py-line">        <tt class="py-string">r'\(\leftrightarrow\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'crarr'</tt><tt class="py-op">:</tt> <tt class="py-string">r'\(\hookleftarrow\)'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1741"></a><tt class="py-lineno">1741</tt>  <tt class="py-line">        <tt class="py-string">'lArr'</tt><tt class="py-op">:</tt> <tt class="py-string">r'\(\Leftarrow\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'rArr'</tt><tt class="py-op">:</tt> <tt class="py-string">r'\(\Rightarrow\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'uArr'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1742"></a><tt class="py-lineno">1742</tt>  <tt class="py-line">        <tt class="py-string">r'\(\Uparrow\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'dArr'</tt><tt class="py-op">:</tt> <tt class="py-string">r'\(\Downarrow\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'hArr'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1743"></a><tt class="py-lineno">1743</tt>  <tt class="py-line">        <tt class="py-string">r'\(\Leftrightarrow\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'copy'</tt><tt class="py-op">:</tt> <tt class="py-string">r'{\textcopyright}'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1744"></a><tt class="py-lineno">1744</tt>  <tt class="py-line">        <tt class="py-string">'times'</tt><tt class="py-op">:</tt> <tt class="py-string">r'\(\times\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'forall'</tt><tt class="py-op">:</tt> <tt class="py-string">r'\(\forall\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'exist'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1745"></a><tt class="py-lineno">1745</tt>  <tt class="py-line">        <tt class="py-string">r'\(\exists\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'part'</tt><tt class="py-op">:</tt> <tt class="py-string">r'\(\partial\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'empty'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1746"></a><tt class="py-lineno">1746</tt>  <tt class="py-line">        <tt class="py-string">r'\(\emptyset\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'isin'</tt><tt class="py-op">:</tt> <tt class="py-string">r'\(\in\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'notin'</tt><tt class="py-op">:</tt> <tt class="py-string">r'\(\notin\)'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1747"></a><tt class="py-lineno">1747</tt>  <tt class="py-line">        <tt class="py-string">'ni'</tt><tt class="py-op">:</tt> <tt class="py-string">r'\(\ni\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'prod'</tt><tt class="py-op">:</tt> <tt class="py-string">r'\(\prod\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'sum'</tt><tt class="py-op">:</tt> <tt class="py-string">r'\(\sum\)'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1748"></a><tt class="py-lineno">1748</tt>  <tt class="py-line">        <tt class="py-string">'prop'</tt><tt class="py-op">:</tt> <tt class="py-string">r'\(\propto\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'infin'</tt><tt class="py-op">:</tt> <tt class="py-string">r'\(\infty\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'ang'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1749"></a><tt class="py-lineno">1749</tt>  <tt class="py-line">        <tt class="py-string">r'\(\angle\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'and'</tt><tt class="py-op">:</tt> <tt class="py-string">r'\(\wedge\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'or'</tt><tt class="py-op">:</tt> <tt class="py-string">r'\(\vee\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'cap'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1750"></a><tt class="py-lineno">1750</tt>  <tt class="py-line">        <tt class="py-string">r'\(\cap\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'cup'</tt><tt class="py-op">:</tt> <tt class="py-string">r'\(\cup\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'int'</tt><tt class="py-op">:</tt> <tt class="py-string">r'\(\int\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'there4'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1751"></a><tt class="py-lineno">1751</tt>  <tt class="py-line">        <tt class="py-string">r'\(\therefore\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'sim'</tt><tt class="py-op">:</tt> <tt class="py-string">r'\(\sim\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'cong'</tt><tt class="py-op">:</tt> <tt class="py-string">r'\(\cong\)'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1752"></a><tt class="py-lineno">1752</tt>  <tt class="py-line">        <tt class="py-string">'asymp'</tt><tt class="py-op">:</tt> <tt class="py-string">r'\(\approx\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'ne'</tt><tt class="py-op">:</tt> <tt class="py-string">r'\(\ne\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'equiv'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1753"></a><tt class="py-lineno">1753</tt>  <tt class="py-line">        <tt class="py-string">r'\(\equiv\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'le'</tt><tt class="py-op">:</tt> <tt class="py-string">r'\(\le\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'ge'</tt><tt class="py-op">:</tt> <tt class="py-string">r'\(\ge\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'sub'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1754"></a><tt class="py-lineno">1754</tt>  <tt class="py-line">        <tt class="py-string">r'\(\subset\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'sup'</tt><tt class="py-op">:</tt> <tt class="py-string">r'\(\supset\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'nsub'</tt><tt class="py-op">:</tt> <tt class="py-string">r'\(\supset\)'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1755"></a><tt class="py-lineno">1755</tt>  <tt class="py-line">        <tt class="py-string">'sube'</tt><tt class="py-op">:</tt> <tt class="py-string">r'\(\subseteq\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'supe'</tt><tt class="py-op">:</tt> <tt class="py-string">r'\(\supseteq\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'oplus'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1756"></a><tt class="py-lineno">1756</tt>  <tt class="py-line">        <tt class="py-string">r'\(\oplus\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'otimes'</tt><tt class="py-op">:</tt> <tt class="py-string">r'\(\otimes\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'perp'</tt><tt class="py-op">:</tt> <tt class="py-string">r'\(\perp\)'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1757"></a><tt class="py-lineno">1757</tt>  <tt class="py-line">     </tt>
+<a name="L1758"></a><tt class="py-lineno">1758</tt>  <tt class="py-line">        <tt class="py-comment"># Alternate (long) names</tt> </tt>
+<a name="L1759"></a><tt class="py-lineno">1759</tt>  <tt class="py-line">        <tt class="py-string">'infinity'</tt><tt class="py-op">:</tt> <tt class="py-string">r'\(\infty\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'integral'</tt><tt class="py-op">:</tt> <tt class="py-string">r'\(\int\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'product'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1760"></a><tt class="py-lineno">1760</tt>  <tt class="py-line">        <tt class="py-string">r'\(\prod\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'<='</tt><tt class="py-op">:</tt> <tt class="py-string">r'\(\le\)'</tt><tt class="py-op">,</tt> <tt class="py-string">'>='</tt><tt class="py-op">:</tt> <tt class="py-string">r'\(\ge\)'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1761"></a><tt class="py-lineno">1761</tt>  <tt class="py-line">        <tt class="py-op">}</tt> </tt>
+<a name="L1762"></a><tt class="py-lineno">1762</tt>  <tt class="py-line">     </tt>
+<a name="ParsedEpytextDocstring.__init__"></a><div id="ParsedEpytextDocstring.__init__-def"><a name="L1763"></a><tt class="py-lineno">1763</tt> <a class="py-toggle" href="#" id="ParsedEpytextDocstring.__init__-toggle" onclick="return toggle('ParsedEpytextDocstring.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">s [...]
+</div><div id="ParsedEpytextDocstring.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParsedEpytextDocstring.__init__-expanded"><a name="L1764"></a><tt class="py-lineno">1764</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_tree</tt> <tt class="py-op">=</tt> <tt class="py-name">dom_tree</tt> </tt>
+<a name="L1765"></a><tt class="py-lineno">1765</tt>  <tt class="py-line">        <tt class="py-comment"># Caching:</tt> </tt>
+<a name="L1766"></a><tt class="py-lineno">1766</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_html</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_latex</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_plaintext</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L1767"></a><tt class="py-lineno">1767</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_terms</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L1768"></a><tt class="py-lineno">1768</tt>  <tt class="py-line">        <tt class="py-comment"># inline option -- mark top-level children as inline.</tt> </tt>
+<a name="L1769"></a><tt class="py-lineno">1769</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'inline'</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_tree</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt c [...]
+<a name="L1770"></a><tt class="py-lineno">1770</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">elt</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_tree</tt><tt class="py-op">.</tt><tt class="py-name">children</tt><tt class="py-op">:</tt> </tt>
+<a name="L1771"></a><tt class="py-lineno">1771</tt>  <tt class="py-line">                <tt class="py-name">elt</tt><tt class="py-op">.</tt><tt class="py-name">attribs</tt><tt class="py-op">[</tt><tt class="py-string">'inline'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+</div><a name="L1772"></a><tt class="py-lineno">1772</tt>  <tt class="py-line"> </tt>
+<a name="ParsedEpytextDocstring.__str__"></a><div id="ParsedEpytextDocstring.__str__-def"><a name="L1773"></a><tt class="py-lineno">1773</tt> <a class="py-toggle" href="#" id="ParsedEpytextDocstring.__str__-toggle" onclick="return toggle('ParsedEpytextDocstring.__str__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#__str__">__str__</a><tt class="py-op">(</tt><tt class="py-param">self</t [...]
+</div><div id="ParsedEpytextDocstring.__str__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParsedEpytextDocstring.__str__-expanded"><a name="L1774"></a><tt class="py-lineno">1774</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_tree</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1775"></a><tt class="py-lineno">1775</tt>  <tt class="py-line">         </tt>
+<a name="ParsedEpytextDocstring.to_html"></a><div id="ParsedEpytextDocstring.to_html-def"><a name="L1776"></a><tt class="py-lineno">1776</tt> <a class="py-toggle" href="#" id="ParsedEpytextDocstring.to_html-toggle" onclick="return toggle('ParsedEpytextDocstring.to_html');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#to_html">to_html</a><tt class="py-op">(</tt><tt class="py-param">self</t [...]
+<a name="L1777"></a><tt class="py-lineno">1777</tt>  <tt class="py-line">                <tt class="py-param">context</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-param">options</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ParsedEpytextDocstring.to_html-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParsedEpytextDocstring.to_html-expanded"><a name="L1778"></a><tt class="py-lineno">1778</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_html</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> <tt class="py-k [...]
+<a name="L1779"></a><tt class="py-lineno">1779</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_tree</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-string">''</tt> </tt>
+<a name="L1780"></a><tt class="py-lineno">1780</tt>  <tt class="py-line">        <tt class="py-name">indent</tt> <tt class="py-op">=</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'indent'</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+<a name="L1781"></a><tt class="py-lineno">1781</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_html</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-378" class="py-name" targets="Method epydoc.markup.epytext.ParsedEpytextDocstring._to_html()=epydoc.markup.epytext.ParsedEpytextDocstring-class.html#_to_html"><a title="epydoc.markup.epytext.ParsedEpytextDocstring._to_html" class="py-na [...]
+<a name="L1782"></a><tt class="py-lineno">1782</tt>  <tt class="py-line">                                   <tt class="py-name">docindex</tt><tt class="py-op">,</tt> <tt class="py-name">context</tt><tt class="py-op">,</tt> <tt class="py-name">indent</tt><tt class="py-op">)</tt> </tt>
+<a name="L1783"></a><tt class="py-lineno">1783</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_html</tt> </tt>
+</div><a name="L1784"></a><tt class="py-lineno">1784</tt>  <tt class="py-line"> </tt>
+<a name="ParsedEpytextDocstring.to_latex"></a><div id="ParsedEpytextDocstring.to_latex-def"><a name="L1785"></a><tt class="py-lineno">1785</tt> <a class="py-toggle" href="#" id="ParsedEpytextDocstring.to_latex-toggle" onclick="return toggle('ParsedEpytextDocstring.to_latex');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#to_latex">to_latex</a><tt class="py-op">(</tt><tt class="py-param">s [...]
+</div><div id="ParsedEpytextDocstring.to_latex-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParsedEpytextDocstring.to_latex-expanded"><a name="L1786"></a><tt class="py-lineno">1786</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_latex</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> <tt class="p [...]
+<a name="L1787"></a><tt class="py-lineno">1787</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_tree</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-string">''</tt> </tt>
+<a name="L1788"></a><tt class="py-lineno">1788</tt>  <tt class="py-line">        <tt class="py-name">indent</tt> <tt class="py-op">=</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'indent'</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+<a name="L1789"></a><tt class="py-lineno">1789</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_hyperref</tt> <tt class="py-op">=</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'hyperref'</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L1790"></a><tt class="py-lineno">1790</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_latex</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-379" class="py-name" targets="Method epydoc.markup.epytext.ParsedEpytextDocstring._to_latex()=epydoc.markup.epytext.ParsedEpytextDocstring-class.html#_to_latex"><a title="epydoc.markup.epytext.ParsedEpytextDocstring._to_latex" class="p [...]
+<a name="L1791"></a><tt class="py-lineno">1791</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_latex</tt> </tt>
+</div><a name="L1792"></a><tt class="py-lineno">1792</tt>  <tt class="py-line"> </tt>
+<a name="ParsedEpytextDocstring.to_plaintext"></a><div id="ParsedEpytextDocstring.to_plaintext-def"><a name="L1793"></a><tt class="py-lineno">1793</tt> <a class="py-toggle" href="#" id="ParsedEpytextDocstring.to_plaintext-toggle" onclick="return toggle('ParsedEpytextDocstring.to_plaintext');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#to_plaintext">to_plaintext</a><tt class="py-op">(</t [...]
+</div><div id="ParsedEpytextDocstring.to_plaintext-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParsedEpytextDocstring.to_plaintext-expanded"><a name="L1794"></a><tt class="py-lineno">1794</tt>  <tt class="py-line">        <tt class="py-comment"># [XX] don't cache -- different options might be used!!</tt> </tt>
+<a name="L1795"></a><tt class="py-lineno">1795</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#if self._plaintext is not None: return self._plaintext</tt> </tt>
+<a name="L1796"></a><tt class="py-lineno">1796</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_tree</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-string">''</tt> </tt>
+<a name="L1797"></a><tt class="py-lineno">1797</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-string">'indent'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">options</tt><tt class="py-op">:</tt> </tt>
+<a name="L1798"></a><tt class="py-lineno">1798</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_plaintext</tt> <tt class="py-op">=</tt> <tt id="link-380" class="py-name"><a title="epydoc.markup.ConcatenatedDocstring.to_plaintext
+epydoc.markup.ParsedDocstring.to_plaintext
+epydoc.markup.epytext.ParsedEpytextDocstring.to_plaintext
+epydoc.markup.epytext.to_plaintext
+epydoc.markup.javadoc.ParsedJavadocDocstring.to_plaintext
+epydoc.markup.plaintext.ParsedPlaintextDocstring.to_plaintext
+epydoc.markup.restructuredtext.ParsedRstDocstring.to_plaintext" class="py-name" href="#" onclick="return doclink('link-380', 'to_plaintext', 'link-287');">to_plaintext</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_tree</tt><tt class="py-op">,</tt> </tt>
+<a name="L1799"></a><tt class="py-lineno">1799</tt>  <tt class="py-line">                                           <tt class="py-name">indent</tt><tt class="py-op">=</tt><tt class="py-name">options</tt><tt class="py-op">[</tt><tt class="py-string">'indent'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1800"></a><tt class="py-lineno">1800</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1801"></a><tt class="py-lineno">1801</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_plaintext</tt> <tt class="py-op">=</tt> <tt id="link-381" class="py-name"><a title="epydoc.markup.ConcatenatedDocstring.to_plaintext
+epydoc.markup.ParsedDocstring.to_plaintext
+epydoc.markup.epytext.ParsedEpytextDocstring.to_plaintext
+epydoc.markup.epytext.to_plaintext
+epydoc.markup.javadoc.ParsedJavadocDocstring.to_plaintext
+epydoc.markup.plaintext.ParsedPlaintextDocstring.to_plaintext
+epydoc.markup.restructuredtext.ParsedRstDocstring.to_plaintext" class="py-name" href="#" onclick="return doclink('link-381', 'to_plaintext', 'link-287');">to_plaintext</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_tree</tt><tt class="py-op">)</tt> </tt>
+<a name="L1802"></a><tt class="py-lineno">1802</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_plaintext</tt> </tt>
+</div><a name="L1803"></a><tt class="py-lineno">1803</tt>  <tt class="py-line"> </tt>
+<a name="ParsedEpytextDocstring._index_term_key"></a><div id="ParsedEpytextDocstring._index_term_key-def"><a name="L1804"></a><tt class="py-lineno">1804</tt> <a class="py-toggle" href="#" id="ParsedEpytextDocstring._index_term_key-toggle" onclick="return toggle('ParsedEpytextDocstring._index_term_key');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#_index_term_key">_index_term_key</a><tt  [...]
+</div><div id="ParsedEpytextDocstring._index_term_key-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParsedEpytextDocstring._index_term_key-expanded"><a name="L1805"></a><tt class="py-lineno">1805</tt>  <tt class="py-line">        <tt class="py-name">str</tt> <tt class="py-op">=</tt> <tt id="link-382" class="py-name"><a title="epydoc.markup.ConcatenatedDocstring.to_plaintext
+epydoc.markup.ParsedDocstring.to_plaintext
+epydoc.markup.epytext.ParsedEpytextDocstring.to_plaintext
+epydoc.markup.epytext.to_plaintext
+epydoc.markup.javadoc.ParsedJavadocDocstring.to_plaintext
+epydoc.markup.plaintext.ParsedPlaintextDocstring.to_plaintext
+epydoc.markup.restructuredtext.ParsedRstDocstring.to_plaintext" class="py-name" href="#" onclick="return doclink('link-382', 'to_plaintext', 'link-287');">to_plaintext</a></tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">)</tt> </tt>
+<a name="L1806"></a><tt class="py-lineno">1806</tt>  <tt class="py-line">        <tt class="py-name">str</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt class="py-string">r'\s\s+'</tt><tt class="py-op">,</tt> <tt class="py-string">'-'</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">)</tt> </tt>
+<a name="L1807"></a><tt class="py-lineno">1807</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">"index-"</tt><tt class="py-op">+</tt><tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt class="py-string">"[^a-zA-Z0-9]"</tt><tt class="py-op">,</tt> <tt class="py-string">"_"</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1808"></a><tt class="py-lineno">1808</tt>  <tt class="py-line"> </tt>
+<a name="ParsedEpytextDocstring._to_html"></a><div id="ParsedEpytextDocstring._to_html-def"><a name="L1809"></a><tt class="py-lineno">1809</tt> <a class="py-toggle" href="#" id="ParsedEpytextDocstring._to_html-toggle" onclick="return toggle('ParsedEpytextDocstring._to_html');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#_to_html">_to_html</a><tt class="py-op">(</tt><tt class="py-param">s [...]
+<a name="L1810"></a><tt class="py-lineno">1810</tt>  <tt class="py-line">                 <tt class="py-param">indent</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-param">seclevel</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ParsedEpytextDocstring._to_html-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParsedEpytextDocstring._to_html-expanded"><a name="L1811"></a><tt class="py-lineno">1811</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1812"></a><tt class="py-lineno">1812</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt id="link-383" class="py-name"><a title="epydoc.util.plaintext_to_html" class="py-name" href="#" onclick="return doclink('link-383', 'plaintext_to_html', 'link-6');">plaintext_to_html</a></tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">)</tt> </tt>
+<a name="L1813"></a><tt class="py-lineno">1813</tt>  <tt class="py-line"> </tt>
+<a name="L1814"></a><tt class="py-lineno">1814</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-384" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-384', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'epytext'</tt><tt class="py-op">:</tt> <tt class="py-name">indent</tt> <tt class="py-op">-=</tt> <tt class="py-numbe [...]
+<a name="L1815"></a><tt class="py-lineno">1815</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-385" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-385', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'section'</tt><tt class="py-op">:</tt> <tt class="py-name">seclevel</tt> <tt class="py-op">+=</tt> <tt class="py-num [...]
+<a name="L1816"></a><tt class="py-lineno">1816</tt>  <tt class="py-line"> </tt>
+<a name="L1817"></a><tt class="py-lineno">1817</tt>  <tt class="py-line">        <tt class="py-comment"># Process the variables first.</tt> </tt>
+<a name="L1818"></a><tt class="py-lineno">1818</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt id="link-386" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-386', 'variables', 'link-225');">variables</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-387" class="py-name"><a title="epydoc.markup.epytext.ParsedEpytextDocstring._to [...]
+<a name="L1819"></a><tt class="py-lineno">1819</tt>  <tt class="py-line">                                   <tt class="py-name">indent</tt><tt class="py-op">+</tt><tt class="py-number">2</tt><tt class="py-op">,</tt> <tt class="py-name">seclevel</tt><tt class="py-op">)</tt> </tt>
+<a name="L1820"></a><tt class="py-lineno">1820</tt>  <tt class="py-line">                    <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt class="py-name">children</tt><tt class="py-op">]</tt> </tt>
+<a name="L1821"></a><tt class="py-lineno">1821</tt>  <tt class="py-line">     </tt>
+<a name="L1822"></a><tt class="py-lineno">1822</tt>  <tt class="py-line">        <tt class="py-comment"># Construct the HTML string for the variables.</tt> </tt>
+<a name="L1823"></a><tt class="py-lineno">1823</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">childstr</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt id="link-388" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-388', 'variables', 'link-225');">variables</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1824"></a><tt class="py-lineno">1824</tt>  <tt class="py-line">     </tt>
+<a name="L1825"></a><tt class="py-lineno">1825</tt>  <tt class="py-line">        <tt class="py-comment"># Perform the approriate action for the DOM tree type.</tt> </tt>
+<a name="L1826"></a><tt class="py-lineno">1826</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-389" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-389', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'para'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1827"></a><tt class="py-lineno">1827</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt id="link-390" class="py-name"><a title="epydoc.util.wordwrap" class="py-name" href="#" onclick="return doclink('link-390', 'wordwrap', 'link-5');">wordwrap</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L1828"></a><tt class="py-lineno">1828</tt>  <tt class="py-line">                <tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">.</tt><tt class="py-name">attribs</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'inline'</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-string">'%s'</tt> <tt class="py-keyword">or</tt> <tt class="py-string">'<p>%s</p>'</tt><tt class="py [...]
+<a name="L1829"></a><tt class="py-lineno">1829</tt>  <tt class="py-line">                <tt class="py-name">indent</tt><tt class="py-op">)</tt> </tt>
+<a name="L1830"></a><tt class="py-lineno">1830</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-391" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-391', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'code'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1831"></a><tt class="py-lineno">1831</tt>  <tt class="py-line">            <tt class="py-name">style</tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt class="py-name">attribs</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'style'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1832"></a><tt class="py-lineno">1832</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">style</tt><tt class="py-op">:</tt> </tt>
+<a name="L1833"></a><tt class="py-lineno">1833</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-string">'<code class="%s">%s</code>'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">style</tt><tt class="py-op">,</tt> <tt class="py-name">childstr</tt><tt class="py-op">)</tt> </tt>
+<a name="L1834"></a><tt class="py-lineno">1834</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1835"></a><tt class="py-lineno">1835</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-string">'<code>%s</code>'</tt> <tt class="py-op">%</tt> <tt class="py-name">childstr</tt> </tt>
+<a name="L1836"></a><tt class="py-lineno">1836</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-392" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-392', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'uri'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1837"></a><tt class="py-lineno">1837</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-string">'<a href="%s" target="_top">%s</a>'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L1838"></a><tt class="py-lineno">1838</tt>  <tt class="py-line">                    <tt class="py-op">(</tt><tt id="link-393" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-393', 'variables', 'link-225');">variables</a></tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt id="link-394" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" clas [...]
+<a name="L1839"></a><tt class="py-lineno">1839</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-395" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-395', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'link'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1840"></a><tt class="py-lineno">1840</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">linker</tt><tt class="py-op">.</tt><tt id="link-396" class="py-name" targets="Method epydoc.docwriter.html._HTMLDocstringLinker.translate_identifier_xref()=epydoc.docwriter.html._HTMLDocstringLinker-class.html#translate_identifier_xref,Method epydoc.docwriter.latex.LatexWriter._LatexDocstringLinker.translate_identifier_xref()=epydoc.docwriter.latex.L [...]
+epydoc.docwriter.latex.LatexWriter._LatexDocstringLinker.translate_identifier_xref
+epydoc.markup.DocstringLinker.translate_identifier_xref" class="py-name" href="#" onclick="return doclink('link-396', 'translate_identifier_xref', 'link-396');">translate_identifier_xref</a></tt><tt class="py-op">(</tt><tt id="link-397" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-397', 'variables', 'link-225');">variables</a></tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class [...]
+<a name="L1841"></a><tt class="py-lineno">1841</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-399" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-399', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'italic'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1842"></a><tt class="py-lineno">1842</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">'<i>%s</i>'</tt> <tt class="py-op">%</tt> <tt class="py-name">childstr</tt> </tt>
+<a name="L1843"></a><tt class="py-lineno">1843</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-400" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-400', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'math'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1844"></a><tt class="py-lineno">1844</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">'<i class="math">%s</i>'</tt> <tt class="py-op">%</tt> <tt class="py-name">childstr</tt> </tt>
+<a name="L1845"></a><tt class="py-lineno">1845</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-401" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-401', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'indexed'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1846"></a><tt class="py-lineno">1846</tt>  <tt class="py-line">            <tt class="py-name">term</tt> <tt class="py-op">=</tt> <tt id="link-402" class="py-name"><a title="epydoc.markup.epytext.Element" class="py-name" href="#" onclick="return doclink('link-402', 'Element', 'link-30');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'epytext'</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-name">tree</tt><tt class="py-op">.</tt><tt class="py- [...]
+<a name="L1847"></a><tt class="py-lineno">1847</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">linker</tt><tt class="py-op">.</tt><tt id="link-403" class="py-name" targets="Method epydoc.docwriter.html._HTMLDocstringLinker.translate_indexterm()=epydoc.docwriter.html._HTMLDocstringLinker-class.html#translate_indexterm,Method epydoc.docwriter.latex.LatexWriter._LatexDocstringLinker.translate_indexterm()=epydoc.docwriter.latex.LatexWriter._LatexD [...]
+epydoc.docwriter.latex.LatexWriter._LatexDocstringLinker.translate_indexterm
+epydoc.markup.DocstringLinker.translate_indexterm" class="py-name" href="#" onclick="return doclink('link-403', 'translate_indexterm', 'link-403');">translate_indexterm</a></tt><tt class="py-op">(</tt><tt id="link-404" class="py-name"><a title="epydoc.markup.epytext.ParsedEpytextDocstring" class="py-name" href="#" onclick="return doclink('link-404', 'ParsedEpytextDocstring', 'link-373');">ParsedEpytextDocstring</a></tt><tt class="py-op">(</tt><tt class="py-name">term</tt><tt class="py-op [...]
+<a name="L1848"></a><tt class="py-lineno">1848</tt>  <tt class="py-line">            <tt class="py-comment">#term_key = self._index_term_key(tree)</tt> </tt>
+<a name="L1849"></a><tt class="py-lineno">1849</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment">#return linker.translate_indexterm(childstr, term_key)</tt> </tt>
+<a name="L1850"></a><tt class="py-lineno">1850</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">elif</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-405" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-405', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'bold'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1851"></a><tt class="py-lineno">1851</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">'<b>%s</b>'</tt> <tt class="py-op">%</tt> <tt class="py-name">childstr</tt> </tt>
+<a name="L1852"></a><tt class="py-lineno">1852</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-406" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-406', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'ulist'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1853"></a><tt class="py-lineno">1853</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">'%s<ul>\n%s%s</ul>\n'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">indent</tt><tt class="py-op">*</tt><tt class="py-string">' '</tt><tt class="py-op">,</tt> <tt class="py-name">childstr</tt><tt class="py-op">,</tt> <tt class="py-name">indent</tt><tt class="py-op">*</tt><tt class="py-string">' '</tt><tt class [...]
+<a name="L1854"></a><tt class="py-lineno">1854</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-407" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-407', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'olist'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1855"></a><tt class="py-lineno">1855</tt>  <tt class="py-line">            <tt class="py-name">start</tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt class="py-name">attribs</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'start'</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-string">''</tt> </tt>
+<a name="L1856"></a><tt class="py-lineno">1856</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-string">'%s<ol start="%s">\n%s%s</ol>\n'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L1857"></a><tt class="py-lineno">1857</tt>  <tt class="py-line">                    <tt class="py-op">(</tt><tt class="py-name">indent</tt><tt class="py-op">*</tt><tt class="py-string">' '</tt><tt class="py-op">,</tt> <tt class="py-name">start</tt><tt class="py-op">,</tt> <tt class="py-name">childstr</tt><tt class="py-op">,</tt> <tt class="py-name">indent</tt><tt class="py-op">*</tt><tt class="py-string">' '</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1858"></a><tt class="py-lineno">1858</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-408" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-408', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'li'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1859"></a><tt class="py-lineno">1859</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">indent</tt><tt class="py-op">*</tt><tt class="py-string">' '</tt><tt class="py-op">+</tt><tt class="py-string">'<li>\n%s%s</li>\n'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">childstr</tt><tt class="py-op">,</tt> <tt class="py-name">indent</tt><tt class="py-op">*</tt><tt class="py-string">' '</tt><tt class="p [...]
+<a name="L1860"></a><tt class="py-lineno">1860</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-409" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-409', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'heading'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1861"></a><tt class="py-lineno">1861</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-string">'%s<h%s class="heading">%s</h%s>\n'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L1862"></a><tt class="py-lineno">1862</tt>  <tt class="py-line">                    <tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">indent</tt><tt class="py-op">-</tt><tt class="py-number">2</tt><tt class="py-op">)</tt><tt class="py-op">*</tt><tt class="py-string">' '</tt><tt class="py-op">,</tt> <tt class="py-name">seclevel</tt><tt class="py-op">,</tt> <tt class="py-name">childstr</tt><tt class="py-op">,</tt> <tt class="py-name">seclevel</tt><tt class="py-op [...]
+<a name="L1863"></a><tt class="py-lineno">1863</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-410" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-410', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'literalblock'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1864"></a><tt class="py-lineno">1864</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">'<pre class="literalblock">\n%s\n</pre>\n'</tt> <tt class="py-op">%</tt> <tt class="py-name">childstr</tt> </tt>
+<a name="L1865"></a><tt class="py-lineno">1865</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-411" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-411', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'doctestblock'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1866"></a><tt class="py-lineno">1866</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt id="link-412" class="py-name"><a title="epydoc.markup.doctest.doctest_to_html" class="py-name" href="#" onclick="return doclink('link-412', 'doctest_to_html', 'link-11');">doctest_to_html</a></tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">.</tt><tt class="py-name">children</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class= [...]
+<a name="L1867"></a><tt class="py-lineno">1867</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-413" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-413', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'fieldlist'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1868"></a><tt class="py-lineno">1868</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">AssertionError</tt><tt class="py-op">(</tt><tt class="py-string">"There should not be any field lists left"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1869"></a><tt class="py-lineno">1869</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-414" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-414', 'tag', 'link-13');">tag</a></tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-string">'epytext'</tt><tt class="py-op">,</tt> <tt class="py-string">'section'</tt><tt class= [...]
+<a name="L1870"></a><tt class="py-lineno">1870</tt>  <tt class="py-line">                              <tt class="py-string">'name'</tt><tt class="py-op">,</tt> <tt class="py-string">'target'</tt><tt class="py-op">,</tt> <tt class="py-string">'html'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1871"></a><tt class="py-lineno">1871</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">childstr</tt> </tt>
+<a name="L1872"></a><tt class="py-lineno">1872</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-415" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-415', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'symbol'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1873"></a><tt class="py-lineno">1873</tt>  <tt class="py-line">            <tt class="py-name">symbol</tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt class="py-name">children</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L1874"></a><tt class="py-lineno">1874</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-416" class="py-name"><a title="epydoc.markup.epytext.ParsedEpytextDocstring.SYMBOL_TO_HTML" class="py-name" href="#" onclick="return doclink('link-416', 'SYMBOL_TO_HTML', 'link-376');">SYMBOL_TO_HTML</a></tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-name">sy [...]
+<a name="L1875"></a><tt class="py-lineno">1875</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-417" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-417', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'graph'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1876"></a><tt class="py-lineno">1876</tt>  <tt class="py-line">            <tt class="py-comment"># Generate the graph.</tt> </tt>
+<a name="L1877"></a><tt class="py-lineno">1877</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt id="link-418" class="py-name"><a title="epydoc.markup.restructuredtext.dotgraph.graph" class="py-name" href="#" onclick="return doclink('link-418', 'graph', 'link-214');">graph</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-419" class="py-name" targets="Method epydoc.markup.epytext.ParsedEpytextDocstring._build_graph()=e [...]
+<a name="L1878"></a><tt class="py-lineno">1878</tt>  <tt class="py-line">                                      <tt class="py-name">docindex</tt><tt class="py-op">,</tt> <tt class="py-name">context</tt><tt class="py-op">)</tt> </tt>
+<a name="L1879"></a><tt class="py-lineno">1879</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-422" class="py-name"><a title="epydoc.markup.restructuredtext.dotgraph.graph" class="py-name" href="#" onclick="return doclink('link-422', 'graph', 'link-214');">graph</a></tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-string">''</tt> </tt>
+<a name="L1880"></a><tt class="py-lineno">1880</tt>  <tt class="py-line">            <tt class="py-comment"># Write the graph.</tt> </tt>
+<a name="L1881"></a><tt class="py-lineno">1881</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">image_url</tt> <tt class="py-op">=</tt> <tt class="py-string">'%s.gif'</tt> <tt class="py-op">%</tt> <tt id="link-423" class="py-name"><a title="epydoc.markup.restructuredtext.dotgraph.graph" class="py-name" href="#" onclick="return doclink('link-423', 'graph', 'link-214');">graph</a></tt><tt class="py-op">.</tt><tt class="py-name">uid</tt> </tt>
+<a name="L1882"></a><tt class="py-lineno">1882</tt>  <tt class="py-line">            <tt class="py-name">image_file</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-424" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-424', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">directory</tt><tt class="py-op [...]
+<a name="L1883"></a><tt class="py-lineno">1883</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt id="link-425" class="py-name"><a title="epydoc.markup.restructuredtext.dotgraph.graph" class="py-name" href="#" onclick="return doclink('link-425', 'graph', 'link-214');">graph</a></tt><tt class="py-op">.</tt><tt id="link-426" class="py-name" targets="Method epydoc.docwriter.dotgraph.DotGraph.to_html()=epydoc.docwriter.dotgraph.DotGraph-class.html#to_html,Method epy [...]
+epydoc.markup.ConcatenatedDocstring.to_html
+epydoc.markup.ParsedDocstring.to_html
+epydoc.markup.epytext.ParsedEpytextDocstring.to_html
+epydoc.markup.javadoc.ParsedJavadocDocstring.to_html
+epydoc.markup.plaintext.ParsedPlaintextDocstring.to_html
+epydoc.markup.restructuredtext.ParsedRstDocstring.to_html" class="py-name" href="#" onclick="return doclink('link-426', 'to_html', 'link-426');">to_html</a></tt><tt class="py-op">(</tt><tt class="py-name">image_file</tt><tt class="py-op">,</tt> <tt class="py-name">image_url</tt><tt class="py-op">)</tt> </tt>
+<a name="L1884"></a><tt class="py-lineno">1884</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1885"></a><tt class="py-lineno">1885</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">'Unknown epytext DOM element %r'</tt> <tt class="py-op">%</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-427" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-427', 'tag', 'link-13');">tag</a></tt><tt class="py- [...]
+</div><a name="L1886"></a><tt class="py-lineno">1886</tt>  <tt class="py-line"> </tt>
+<a name="L1887"></a><tt class="py-lineno">1887</tt>  <tt class="py-line">    <tt class="py-comment">#GRAPH_TYPES = ['classtree', 'packagetree', 'importgraph']</tt> </tt>
+<a name="ParsedEpytextDocstring._build_graph"></a><div id="ParsedEpytextDocstring._build_graph-def"><a name="L1888"></a><tt class="py-lineno">1888</tt> <a class="py-toggle" href="#" id="ParsedEpytextDocstring._build_graph-toggle" onclick="return toggle('ParsedEpytextDocstring._build_graph');">-</a><tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#_build_graph">_build_gra [...]
+<a name="L1889"></a><tt class="py-lineno">1889</tt>  <tt class="py-line">                     <tt class="py-param">docindex</tt><tt class="py-op">,</tt> <tt class="py-param">context</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ParsedEpytextDocstring._build_graph-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParsedEpytextDocstring._build_graph-expanded"><a name="L1890"></a><tt class="py-lineno">1890</tt>  <tt class="py-line">        <tt class="py-comment"># Generate the graph</tt> </tt>
+<a name="L1891"></a><tt class="py-lineno">1891</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">graph_type</tt> <tt class="py-op">==</tt> <tt class="py-string">'classtree'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1892"></a><tt class="py-lineno">1892</tt>  <tt class="py-line">            <tt class="py-keyword">from</tt> <tt id="link-428" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-428', 'epydoc', 'link-1');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-429" class="py-name" targets="Module epydoc.apidoc=epydoc.apidoc-module.html"><a title="epydoc.apidoc" class="py-name" href="#" onclick="return doclink('link-429', 'apidoc', 'link-429');" [...]
+<a name="L1893"></a><tt class="py-lineno">1893</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">graph_args</tt><tt class="py-op">:</tt> </tt>
+<a name="L1894"></a><tt class="py-lineno">1894</tt>  <tt class="py-line">                <tt id="link-431" class="py-name" targets="Variable epydoc.apidoc.ClassDoc.bases=epydoc.apidoc.ClassDoc-class.html#bases"><a title="epydoc.apidoc.ClassDoc.bases" class="py-name" href="#" onclick="return doclink('link-431', 'bases', 'link-431');">bases</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">docindex</tt><tt class="py-op">.</tt><tt id="link-432" class="py-name" ta [...]
+<a name="L1895"></a><tt class="py-lineno">1895</tt>  <tt class="py-line">                         <tt class="py-keyword">for</tt> <tt id="link-434" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-434', 'name', 'link-276');">name</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">graph_args</tt><tt class="py-op">]</tt> </tt>
+<a name="L1896"></a><tt class="py-lineno">1896</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">context</tt><tt class="py-op">,</tt> <tt id="link-435" class="py-name"><a title="epydoc.apidoc.ClassDoc" class="py-name" href="#" onclick="return doclink('link-435', 'ClassDoc', 'link-430');">ClassDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1897"></a><tt class="py-lineno">1897</tt>  <tt class="py-line">                <tt id="link-436" class="py-name"><a title="epydoc.apidoc.ClassDoc.bases" class="py-name" href="#" onclick="return doclink('link-436', 'bases', 'link-431');">bases</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">context</tt><tt class="py-op">]</tt> </tt>
+<a name="L1898"></a><tt class="py-lineno">1898</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1899"></a><tt class="py-lineno">1899</tt>  <tt class="py-line">                <tt id="link-437" class="py-name" targets="Method epydoc.cli.ConsoleLogger.log()=epydoc.cli.ConsoleLogger-class.html#log,Method epydoc.cli.HTMLLogger.log()=epydoc.cli.HTMLLogger-class.html#log,Method epydoc.gui.GUILogger.log()=epydoc.gui.GUILogger-class.html#log,Module epydoc.log=epydoc.log-module.html,Method epydoc.log.Logger.log()=epydoc.log.Logger-class.html#log,Method epydoc.log.SimpleLogger.log( [...]
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-437', 'log', 'link-437');">log</a></tt><tt class="py-op">.</tt><tt id="link-438" class="py-name"><a title="epydoc.checker.DocChecker.warning
+epydoc.log.warning" class="py-name" href="#" onclick="return doclink('link-438', 'warning', 'link-358');">warning</a></tt><tt class="py-op">(</tt><tt class="py-string">"Could not construct class tree: you must "</tt> </tt>
+<a name="L1900"></a><tt class="py-lineno">1900</tt>  <tt class="py-line">                            <tt class="py-string">"specify one or more base classes."</tt><tt class="py-op">)</tt> </tt>
+<a name="L1901"></a><tt class="py-lineno">1901</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
+<a name="L1902"></a><tt class="py-lineno">1902</tt>  <tt class="py-line">            <tt class="py-keyword">from</tt> <tt id="link-439" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-439', 'epydoc', 'link-1');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-440" class="py-name" targets="Package epydoc.docwriter=epydoc.docwriter-module.html"><a title="epydoc.docwriter" class="py-name" href="#" onclick="return doclink('link-440', 'docwriter',  [...]
+epydoc.markup.restructuredtext.dotgraph" class="py-name" href="#" onclick="return doclink('link-441', 'dotgraph', 'link-441');">dotgraph</a></tt> <tt class="py-keyword">import</tt> <tt id="link-442" class="py-name" targets="Function epydoc.docwriter.dotgraph.class_tree_graph()=epydoc.docwriter.dotgraph-module.html#class_tree_graph"><a title="epydoc.docwriter.dotgraph.class_tree_graph" class="py-name" href="#" onclick="return doclink('link-442', 'class_tree_graph', 'link-442');">class_tre [...]
+<a name="L1903"></a><tt class="py-lineno">1903</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt id="link-443" class="py-name"><a title="epydoc.docwriter.dotgraph.class_tree_graph" class="py-name" href="#" onclick="return doclink('link-443', 'class_tree_graph', 'link-442');">class_tree_graph</a></tt><tt class="py-op">(</tt><tt id="link-444" class="py-name"><a title="epydoc.apidoc.ClassDoc.bases" class="py-name" href="#" onclick="return doclink('link-444', 'base [...]
+<a name="L1904"></a><tt class="py-lineno">1904</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">graph_type</tt> <tt class="py-op">==</tt> <tt class="py-string">'packagetree'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1905"></a><tt class="py-lineno">1905</tt>  <tt class="py-line">            <tt class="py-keyword">from</tt> <tt id="link-445" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-445', 'epydoc', 'link-1');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-446" class="py-name"><a title="epydoc.apidoc" class="py-name" href="#" onclick="return doclink('link-446', 'apidoc', 'link-429');">apidoc</a></tt> <tt class="py-keyword">import</tt> <tt i [...]
+<a name="L1906"></a><tt class="py-lineno">1906</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">graph_args</tt><tt class="py-op">:</tt> </tt>
+<a name="L1907"></a><tt class="py-lineno">1907</tt>  <tt class="py-line">                <tt class="py-name">packages</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">docindex</tt><tt class="py-op">.</tt><tt id="link-448" class="py-name"><a title="epydoc.apidoc.DocIndex.find" class="py-name" href="#" onclick="return doclink('link-448', 'find', 'link-432');">find</a></tt><tt class="py-op">(</tt><tt id="link-449" class="py-name"><a title="epydoc.apidoc.VariableDoc. [...]
+<a name="L1908"></a><tt class="py-lineno">1908</tt>  <tt class="py-line">                            <tt class="py-keyword">for</tt> <tt id="link-450" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-450', 'name', 'link-276');">name</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">graph_args</tt><tt class="py-op">]</tt> </tt>
+<a name="L1909"></a><tt class="py-lineno">1909</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">context</tt><tt class="py-op">,</tt> <tt id="link-451" class="py-name"><a title="epydoc.apidoc.ModuleDoc" class="py-name" href="#" onclick="return doclink('link-451', 'ModuleDoc', 'link-447');">ModuleDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1910"></a><tt class="py-lineno">1910</tt>  <tt class="py-line">                <tt class="py-name">packages</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">context</tt><tt class="py-op">]</tt> </tt>
+<a name="L1911"></a><tt class="py-lineno">1911</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1912"></a><tt class="py-lineno">1912</tt>  <tt class="py-line">                <tt id="link-452" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-452', 'log', 'link-437');">log</a></tt><tt class="py-op">.</tt><tt id="link-453" class="py-name"><a title="epydoc.checker.DocChecker.warning
+epydoc.log.warning" class="py-name" href="#" onclick="return doclink('link-453', 'warning', 'link-358');">warning</a></tt><tt class="py-op">(</tt><tt class="py-string">"Could not construct package tree: you must "</tt> </tt>
+<a name="L1913"></a><tt class="py-lineno">1913</tt>  <tt class="py-line">                            <tt class="py-string">"specify one or more root packages."</tt><tt class="py-op">)</tt> </tt>
+<a name="L1914"></a><tt class="py-lineno">1914</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
+<a name="L1915"></a><tt class="py-lineno">1915</tt>  <tt class="py-line">            <tt class="py-keyword">from</tt> <tt id="link-454" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-454', 'epydoc', 'link-1');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-455" class="py-name"><a title="epydoc.docwriter" class="py-name" href="#" onclick="return doclink('link-455', 'docwriter', 'link-440');">docwriter</a></tt><tt class="py-op">.</tt><tt id=" [...]
+epydoc.markup.restructuredtext.dotgraph" class="py-name" href="#" onclick="return doclink('link-456', 'dotgraph', 'link-441');">dotgraph</a></tt> <tt class="py-keyword">import</tt> <tt id="link-457" class="py-name" targets="Function epydoc.docwriter.dotgraph.package_tree_graph()=epydoc.docwriter.dotgraph-module.html#package_tree_graph"><a title="epydoc.docwriter.dotgraph.package_tree_graph" class="py-name" href="#" onclick="return doclink('link-457', 'package_tree_graph', 'link-457');">p [...]
+<a name="L1916"></a><tt class="py-lineno">1916</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt id="link-458" class="py-name"><a title="epydoc.docwriter.dotgraph.package_tree_graph" class="py-name" href="#" onclick="return doclink('link-458', 'package_tree_graph', 'link-457');">package_tree_graph</a></tt><tt class="py-op">(</tt><tt class="py-name">packages</tt><tt class="py-op">,</tt> <tt class="py-name">linker</tt><tt class="py-op">,</tt> <tt class="py-name"> [...]
+<a name="L1917"></a><tt class="py-lineno">1917</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">graph_type</tt> <tt class="py-op">==</tt> <tt class="py-string">'importgraph'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1918"></a><tt class="py-lineno">1918</tt>  <tt class="py-line">            <tt class="py-keyword">from</tt> <tt id="link-459" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-459', 'epydoc', 'link-1');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-460" class="py-name"><a title="epydoc.apidoc" class="py-name" href="#" onclick="return doclink('link-460', 'apidoc', 'link-429');">apidoc</a></tt> <tt class="py-keyword">import</tt> <tt i [...]
+<a name="L1919"></a><tt class="py-lineno">1919</tt>  <tt class="py-line">            <tt class="py-name">modules</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">d</tt> <tt class="py-keyword">for</tt> <tt class="py-name">d</tt> <tt class="py-keyword">in</tt> <tt class="py-name">docindex</tt><tt class="py-op">.</tt><tt class="py-name">root</tt> <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">d</tt><tt c [...]
+<a name="L1920"></a><tt class="py-lineno">1920</tt>  <tt class="py-line">            <tt class="py-keyword">from</tt> <tt id="link-463" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-463', 'epydoc', 'link-1');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-464" class="py-name"><a title="epydoc.docwriter" class="py-name" href="#" onclick="return doclink('link-464', 'docwriter', 'link-440');">docwriter</a></tt><tt class="py-op">.</tt><tt id=" [...]
+epydoc.markup.restructuredtext.dotgraph" class="py-name" href="#" onclick="return doclink('link-465', 'dotgraph', 'link-441');">dotgraph</a></tt> <tt class="py-keyword">import</tt> <tt id="link-466" class="py-name" targets="Function epydoc.docwriter.dotgraph.import_graph()=epydoc.docwriter.dotgraph-module.html#import_graph"><a title="epydoc.docwriter.dotgraph.import_graph" class="py-name" href="#" onclick="return doclink('link-466', 'import_graph', 'link-466');">import_graph</a></tt> </tt>
+<a name="L1921"></a><tt class="py-lineno">1921</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt id="link-467" class="py-name"><a title="epydoc.docwriter.dotgraph.import_graph" class="py-name" href="#" onclick="return doclink('link-467', 'import_graph', 'link-466');">import_graph</a></tt><tt class="py-op">(</tt><tt class="py-name">modules</tt><tt class="py-op">,</tt> <tt class="py-name">docindex</tt><tt class="py-op">,</tt> <tt class="py-name">linker</tt><tt cl [...]
+<a name="L1922"></a><tt class="py-lineno">1922</tt>  <tt class="py-line"> </tt>
+<a name="L1923"></a><tt class="py-lineno">1923</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">graph_type</tt> <tt class="py-op">==</tt> <tt class="py-string">'callgraph'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1924"></a><tt class="py-lineno">1924</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">graph_args</tt><tt class="py-op">:</tt> </tt>
+<a name="L1925"></a><tt class="py-lineno">1925</tt>  <tt class="py-line">                <tt class="py-name">docs</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">docindex</tt><tt class="py-op">.</tt><tt id="link-468" class="py-name"><a title="epydoc.apidoc.DocIndex.find" class="py-name" href="#" onclick="return doclink('link-468', 'find', 'link-432');">find</a></tt><tt class="py-op">(</tt><tt id="link-469" class="py-name"><a title="epydoc.apidoc.VariableDoc.name [...]
+<a name="L1926"></a><tt class="py-lineno">1926</tt>  <tt class="py-line">                <tt class="py-name">docs</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">doc</tt> <tt class="py-keyword">for</tt> <tt class="py-name">doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">docs</tt> <tt class="py-keyword">if</tt> <tt class="py-name">doc</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">]</ [...]
+<a name="L1927"></a><tt class="py-lineno">1927</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1928"></a><tt class="py-lineno">1928</tt>  <tt class="py-line">                <tt class="py-name">docs</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">context</tt><tt class="py-op">]</tt> </tt>
+<a name="L1929"></a><tt class="py-lineno">1929</tt>  <tt class="py-line">            <tt class="py-keyword">from</tt> <tt id="link-471" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-471', 'epydoc', 'link-1');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-472" class="py-name"><a title="epydoc.docwriter" class="py-name" href="#" onclick="return doclink('link-472', 'docwriter', 'link-440');">docwriter</a></tt><tt class="py-op">.</tt><tt id=" [...]
+epydoc.markup.restructuredtext.dotgraph" class="py-name" href="#" onclick="return doclink('link-473', 'dotgraph', 'link-441');">dotgraph</a></tt> <tt class="py-keyword">import</tt> <tt id="link-474" class="py-name" targets="Function epydoc.docwriter.dotgraph.call_graph()=epydoc.docwriter.dotgraph-module.html#call_graph"><a title="epydoc.docwriter.dotgraph.call_graph" class="py-name" href="#" onclick="return doclink('link-474', 'call_graph', 'link-474');">call_graph</a></tt> </tt>
+<a name="L1930"></a><tt class="py-lineno">1930</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt id="link-475" class="py-name"><a title="epydoc.docwriter.dotgraph.call_graph" class="py-name" href="#" onclick="return doclink('link-475', 'call_graph', 'link-474');">call_graph</a></tt><tt class="py-op">(</tt><tt class="py-name">docs</tt><tt class="py-op">,</tt> <tt class="py-name">docindex</tt><tt class="py-op">,</tt> <tt class="py-name">linker</tt><tt class="py-o [...]
+<a name="L1931"></a><tt class="py-lineno">1931</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1932"></a><tt class="py-lineno">1932</tt>  <tt class="py-line">            <tt id="link-476" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-476', 'log', 'link-437');">log</a></tt><tt class="py-op">.</tt><tt id="link-477" class="py-name"><a title="epydoc.checker.DocChecker.warning
+epydoc.log.warning" class="py-name" href="#" onclick="return doclink('link-477', 'warning', 'link-358');">warning</a></tt><tt class="py-op">(</tt><tt class="py-string">"Unknown graph type %s"</tt> <tt class="py-op">%</tt> <tt class="py-name">graph_type</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1933"></a><tt class="py-lineno">1933</tt>  <tt class="py-line">             </tt>
+<a name="L1934"></a><tt class="py-lineno">1934</tt>  <tt class="py-line">     </tt>
+<a name="ParsedEpytextDocstring._to_latex"></a><div id="ParsedEpytextDocstring._to_latex-def"><a name="L1935"></a><tt class="py-lineno">1935</tt> <a class="py-toggle" href="#" id="ParsedEpytextDocstring._to_latex-toggle" onclick="return toggle('ParsedEpytextDocstring._to_latex');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#_to_latex">_to_latex</a><tt class="py-op">(</tt><tt class="py-pa [...]
+</div><div id="ParsedEpytextDocstring._to_latex-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParsedEpytextDocstring._to_latex-expanded"><a name="L1936"></a><tt class="py-lineno">1936</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1937"></a><tt class="py-lineno">1937</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt id="link-478" class="py-name"><a title="epydoc.util.plaintext_to_latex" class="py-name" href="#" onclick="return doclink('link-478', 'plaintext_to_latex', 'link-7');">plaintext_to_latex</a></tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">,</tt> <tt class="py-name">breakany</tt><tt class="py-op">=</tt><tt class="py-name">breakany</tt><tt cl [...]
+<a name="L1938"></a><tt class="py-lineno">1938</tt>  <tt class="py-line"> </tt>
+<a name="L1939"></a><tt class="py-lineno">1939</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-479" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-479', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'section'</tt><tt class="py-op">:</tt> <tt class="py-name">seclevel</tt> <tt class="py-op">+=</tt> <tt class="py-num [...]
+<a name="L1940"></a><tt class="py-lineno">1940</tt>  <tt class="py-line">     </tt>
+<a name="L1941"></a><tt class="py-lineno">1941</tt>  <tt class="py-line">        <tt class="py-comment"># Figure out the child indent level.</tt> </tt>
+<a name="L1942"></a><tt class="py-lineno">1942</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-480" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-480', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'epytext'</tt><tt class="py-op">:</tt> <tt class="py-name">cindent</tt> <tt class="py-op [...]
+<a name="L1943"></a><tt class="py-lineno">1943</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> <tt class="py-name">cindent</tt> <tt class="py-op">=</tt> <tt class="py-name">indent</tt> <tt class="py-op">+</tt> <tt class="py-number">2</tt> </tt>
+<a name="L1944"></a><tt class="py-lineno">1944</tt>  <tt class="py-line">        <tt id="link-481" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-481', 'variables', 'link-225');">variables</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-482" class="py-name"><a title="epydoc.markup.epytext.ParsedEpytextDocstring._to_latex" class="py-name" href [...]
+<a name="L1945"></a><tt class="py-lineno">1945</tt>  <tt class="py-line">                    <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt class="py-name">children</tt><tt class="py-op">]</tt> </tt>
+<a name="L1946"></a><tt class="py-lineno">1946</tt>  <tt class="py-line">        <tt class="py-name">childstr</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt id="link-483" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-483', 'variables', 'link-225');">variables</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1947"></a><tt class="py-lineno">1947</tt>  <tt class="py-line">     </tt>
+<a name="L1948"></a><tt class="py-lineno">1948</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-484" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-484', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'para'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1949"></a><tt class="py-lineno">1949</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt id="link-485" class="py-name"><a title="epydoc.util.wordwrap" class="py-name" href="#" onclick="return doclink('link-485', 'wordwrap', 'link-5');">wordwrap</a></tt><tt class="py-op">(</tt><tt class="py-name">childstr</tt><tt class="py-op">,</tt> <tt class="py-name">indent</tt><tt class="py-op">)</tt><tt class="py-op">+</tt><tt class="py-string">'\n'</tt> </tt>
+<a name="L1950"></a><tt class="py-lineno">1950</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-486" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-486', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'code'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1951"></a><tt class="py-lineno">1951</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">'\\texttt{%s}'</tt> <tt class="py-op">%</tt> <tt class="py-name">childstr</tt> </tt>
+<a name="L1952"></a><tt class="py-lineno">1952</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-487" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-487', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'uri'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1953"></a><tt class="py-lineno">1953</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-488" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-488', 'variables', 'link-225');">variables</a></tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-number">2</tt><tt class="py-op">:</tt> <tt class="py-keyword">raise</tt [...]
+<a name="L1954"></a><tt class="py-lineno">1954</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_hyperref</tt><tt class="py-op">:</tt> </tt>
+<a name="L1955"></a><tt class="py-lineno">1955</tt>  <tt class="py-line">                <tt class="py-comment"># ~ and # should not be escaped in the URI.</tt> </tt>
+<a name="L1956"></a><tt class="py-lineno">1956</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-name">uri</tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt class="py-name">children</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">children</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L1957"></a><tt class="py-lineno">1957</tt>  <tt class="py-line">                <tt class="py-name">uri</tt> <tt class="py-op">=</tt> <tt class="py-name">uri</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">'{\\textasciitilde}'</tt><tt class="py-op">,</tt> <tt class="py-string">'~'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1958"></a><tt class="py-lineno">1958</tt>  <tt class="py-line">                <tt class="py-name">uri</tt> <tt class="py-op">=</tt> <tt class="py-name">uri</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">'\\#'</tt><tt class="py-op">,</tt> <tt class="py-string">'#'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1959"></a><tt class="py-lineno">1959</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt id="link-489" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-489', 'variables', 'link-225');">variables</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt id="link-490" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" [...]
+<a name="L1960"></a><tt class="py-lineno">1960</tt>  <tt class="py-line">                    <tt class="py-keyword">return</tt> <tt class="py-string">'\\href{%s}{\\textit{%s}}'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">uri</tt><tt class="py-op">,</tt> <tt id="link-491" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-491', 'variables', 'link-225');">variables</a></tt><tt class="py-op">[< [...]
+<a name="L1961"></a><tt class="py-lineno">1961</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1962"></a><tt class="py-lineno">1962</tt>  <tt class="py-line">                    <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-string">'%s\\footnote{\\href{%s}{%s}}'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L1963"></a><tt class="py-lineno">1963</tt>  <tt class="py-line">                            <tt class="py-op">(</tt><tt id="link-492" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-492', 'variables', 'link-225');">variables</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">uri</tt><tt class="py-op">,</tt> <tt id="link-493" class=" [...]
+<a name="L1964"></a><tt class="py-lineno">1964</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1965"></a><tt class="py-lineno">1965</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt id="link-494" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-494', 'variables', 'link-225');">variables</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt id="link-495" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" [...]
+<a name="L1966"></a><tt class="py-lineno">1966</tt>  <tt class="py-line">                    <tt class="py-keyword">return</tt> <tt class="py-string">'\\textit{%s}'</tt> <tt class="py-op">%</tt> <tt id="link-496" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-496', 'variables', 'link-225');">variables</a></tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L1967"></a><tt class="py-lineno">1967</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1968"></a><tt class="py-lineno">1968</tt>  <tt class="py-line">                    <tt class="py-keyword">return</tt> <tt class="py-string">'%s\\footnote{%s}'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt id="link-497" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-497', 'variables', 'link-225');">variables</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt c [...]
+<a name="L1969"></a><tt class="py-lineno">1969</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-499" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-499', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'link'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1970"></a><tt class="py-lineno">1970</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-500" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-500', 'variables', 'link-225');">variables</a></tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-number">2</tt><tt class="py-op">:</tt> <tt class="py-keyword">raise</tt [...]
+<a name="L1971"></a><tt class="py-lineno">1971</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">linker</tt><tt class="py-op">.</tt><tt id="link-501" class="py-name"><a title="epydoc.docwriter.html._HTMLDocstringLinker.translate_identifier_xref
+epydoc.docwriter.latex.LatexWriter._LatexDocstringLinker.translate_identifier_xref
+epydoc.markup.DocstringLinker.translate_identifier_xref" class="py-name" href="#" onclick="return doclink('link-501', 'translate_identifier_xref', 'link-396');">translate_identifier_xref</a></tt><tt class="py-op">(</tt><tt id="link-502" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-502', 'variables', 'link-225');">variables</a></tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class [...]
+<a name="L1972"></a><tt class="py-lineno">1972</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-504" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-504', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'italic'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1973"></a><tt class="py-lineno">1973</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">'\\textit{%s}'</tt> <tt class="py-op">%</tt> <tt class="py-name">childstr</tt> </tt>
+<a name="L1974"></a><tt class="py-lineno">1974</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-505" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-505', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'math'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1975"></a><tt class="py-lineno">1975</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">'\\textit{%s}'</tt> <tt class="py-op">%</tt> <tt class="py-name">childstr</tt> </tt>
+<a name="L1976"></a><tt class="py-lineno">1976</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-506" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-506', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'indexed'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1977"></a><tt class="py-lineno">1977</tt>  <tt class="py-line">            <tt class="py-name">term</tt> <tt class="py-op">=</tt> <tt id="link-507" class="py-name"><a title="epydoc.markup.epytext.Element" class="py-name" href="#" onclick="return doclink('link-507', 'Element', 'link-30');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'epytext'</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-name">tree</tt><tt class="py-op">.</tt><tt class="py- [...]
+<a name="L1978"></a><tt class="py-lineno">1978</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">linker</tt><tt class="py-op">.</tt><tt id="link-508" class="py-name"><a title="epydoc.docwriter.html._HTMLDocstringLinker.translate_indexterm
+epydoc.docwriter.latex.LatexWriter._LatexDocstringLinker.translate_indexterm
+epydoc.markup.DocstringLinker.translate_indexterm" class="py-name" href="#" onclick="return doclink('link-508', 'translate_indexterm', 'link-403');">translate_indexterm</a></tt><tt class="py-op">(</tt><tt id="link-509" class="py-name"><a title="epydoc.markup.epytext.ParsedEpytextDocstring" class="py-name" href="#" onclick="return doclink('link-509', 'ParsedEpytextDocstring', 'link-373');">ParsedEpytextDocstring</a></tt><tt class="py-op">(</tt><tt class="py-name">term</tt><tt class="py-op [...]
+<a name="L1979"></a><tt class="py-lineno">1979</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-510" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-510', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'bold'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1980"></a><tt class="py-lineno">1980</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">'\\textbf{%s}'</tt> <tt class="py-op">%</tt> <tt class="py-name">childstr</tt> </tt>
+<a name="L1981"></a><tt class="py-lineno">1981</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-511" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-511', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'li'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1982"></a><tt class="py-lineno">1982</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">indent</tt><tt class="py-op">*</tt><tt class="py-string">' '</tt> <tt class="py-op">+</tt> <tt class="py-string">'\\item '</tt> <tt class="py-op">+</tt> <tt class="py-name">childstr</tt><tt class="py-op">.</tt><tt class="py-name">lstrip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1983"></a><tt class="py-lineno">1983</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-512" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-512', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'heading'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1984"></a><tt class="py-lineno">1984</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">' '</tt><tt class="py-op">*</tt><tt class="py-op">(</tt><tt class="py-name">indent</tt><tt class="py-op">-</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-string">'(section) %s\n\n'</tt> <tt class="py-op">%</tt> <tt class="py-name">childstr</tt> </tt>
+<a name="L1985"></a><tt class="py-lineno">1985</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-513" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-513', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'doctestblock'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1986"></a><tt class="py-lineno">1986</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt id="link-514" class="py-name"><a title="epydoc.markup.doctest.doctest_to_latex" class="py-name" href="#" onclick="return doclink('link-514', 'doctest_to_latex', 'link-12');">doctest_to_latex</a></tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">.</tt><tt class="py-name">children</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt cla [...]
+<a name="L1987"></a><tt class="py-lineno">1987</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-515" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-515', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'literalblock'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1988"></a><tt class="py-lineno">1988</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">'\\begin{alltt}\n%s\\end{alltt}\n\n'</tt> <tt class="py-op">%</tt> <tt class="py-name">childstr</tt> </tt>
+<a name="L1989"></a><tt class="py-lineno">1989</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-516" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-516', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'fieldlist'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1990"></a><tt class="py-lineno">1990</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">indent</tt><tt class="py-op">*</tt><tt class="py-string">' '</tt><tt class="py-op">+</tt><tt class="py-string">'{omitted fieldlist}\n'</tt> </tt>
+<a name="L1991"></a><tt class="py-lineno">1991</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-517" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-517', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'olist'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1992"></a><tt class="py-lineno">1992</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-string">' '</tt><tt class="py-op">*</tt><tt class="py-name">indent</tt> <tt class="py-op">+</tt> <tt class="py-string">'\\begin{enumerate}\n\n'</tt> <tt class="py-op">+</tt>  </tt>
+<a name="L1993"></a><tt class="py-lineno">1993</tt>  <tt class="py-line">                    <tt class="py-string">' '</tt><tt class="py-op">*</tt><tt class="py-name">indent</tt> <tt class="py-op">+</tt> <tt class="py-string">'\\setlength{\\parskip}{0.5ex}\n'</tt> <tt class="py-op">+</tt> </tt>
+<a name="L1994"></a><tt class="py-lineno">1994</tt>  <tt class="py-line">                    <tt class="py-name">childstr</tt> <tt class="py-op">+</tt> </tt>
+<a name="L1995"></a><tt class="py-lineno">1995</tt>  <tt class="py-line">                    <tt class="py-string">' '</tt><tt class="py-op">*</tt><tt class="py-name">indent</tt> <tt class="py-op">+</tt> <tt class="py-string">'\\end{enumerate}\n\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1996"></a><tt class="py-lineno">1996</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-518" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-518', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'ulist'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1997"></a><tt class="py-lineno">1997</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-string">' '</tt><tt class="py-op">*</tt><tt class="py-name">indent</tt> <tt class="py-op">+</tt> <tt class="py-string">'\\begin{itemize}\n'</tt> <tt class="py-op">+</tt> </tt>
+<a name="L1998"></a><tt class="py-lineno">1998</tt>  <tt class="py-line">                    <tt class="py-string">' '</tt><tt class="py-op">*</tt><tt class="py-name">indent</tt> <tt class="py-op">+</tt> <tt class="py-string">'\\setlength{\\parskip}{0.6ex}\n'</tt> <tt class="py-op">+</tt> </tt>
+<a name="L1999"></a><tt class="py-lineno">1999</tt>  <tt class="py-line">                    <tt class="py-name">childstr</tt> <tt class="py-op">+</tt> </tt>
+<a name="L2000"></a><tt class="py-lineno">2000</tt>  <tt class="py-line">                    <tt class="py-string">' '</tt><tt class="py-op">*</tt><tt class="py-name">indent</tt> <tt class="py-op">+</tt> <tt class="py-string">'\\end{itemize}\n\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2001"></a><tt class="py-lineno">2001</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-519" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-519', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'symbol'</tt><tt class="py-op">:</tt> </tt>
+<a name="L2002"></a><tt class="py-lineno">2002</tt>  <tt class="py-line">            <tt class="py-name">symbol</tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt class="py-name">children</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L2003"></a><tt class="py-lineno">2003</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-520" class="py-name"><a title="epydoc.markup.epytext.ParsedEpytextDocstring.SYMBOL_TO_LATEX" class="py-name" href="#" onclick="return doclink('link-520', 'SYMBOL_TO_LATEX', 'link-377');">SYMBOL_TO_LATEX</a></tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-name" [...]
+<a name="L2004"></a><tt class="py-lineno">2004</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-521" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-521', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'graph'</tt><tt class="py-op">:</tt> </tt>
+<a name="L2005"></a><tt class="py-lineno">2005</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">'(GRAPH)'</tt> </tt>
+<a name="L2006"></a><tt class="py-lineno">2006</tt>  <tt class="py-line">            <tt class="py-comment">#raise ValueError, 'graph not implemented yet for latex'</tt> </tt>
+<a name="L2007"></a><tt class="py-lineno">2007</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L2008"></a><tt class="py-lineno">2008</tt>  <tt class="py-line">            <tt class="py-comment"># Assume that anything else can be passed through.</tt> </tt>
+<a name="L2009"></a><tt class="py-lineno">2009</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">return</tt> <tt class="py-name">childstr</tt> </tt>
+</div><a name="L2010"></a><tt class="py-lineno">2010</tt>  <tt class="py-line"> </tt>
+<a name="L2011"></a><tt class="py-lineno">2011</tt>  <tt class="py-line">    <tt id="link-522" class="py-name" targets="Variable epydoc.markup.epytext.ParsedEpytextDocstring._SUMMARY_RE=epydoc.markup.epytext.ParsedEpytextDocstring-class.html#_SUMMARY_RE,Variable epydoc.markup.javadoc.ParsedJavadocDocstring._SUMMARY_RE=epydoc.markup.javadoc.ParsedJavadocDocstring-class.html#_SUMMARY_RE,Variable epydoc.markup.plaintext.ParsedPlaintextDocstring._SUMMARY_RE=epydoc.markup.plaintext.ParsedPlai [...]
+epydoc.markup.javadoc.ParsedJavadocDocstring._SUMMARY_RE
+epydoc.markup.plaintext.ParsedPlaintextDocstring._SUMMARY_RE
+epydoc.markup.restructuredtext._SummaryExtractor._SUMMARY_RE" class="py-name" href="#" onclick="return doclink('link-522', '_SUMMARY_RE', 'link-522');">_SUMMARY_RE</a></tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">compile</tt><tt class="py-op">(</tt><tt class="py-string">r'(\s*[\w\W]*?\.)(\s|$)'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2012"></a><tt class="py-lineno">2012</tt>  <tt class="py-line"> </tt>
+<a name="ParsedEpytextDocstring.summary"></a><div id="ParsedEpytextDocstring.summary-def"><a name="L2013"></a><tt class="py-lineno">2013</tt> <a class="py-toggle" href="#" id="ParsedEpytextDocstring.summary-toggle" onclick="return toggle('ParsedEpytextDocstring.summary');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#summary">summary</a><tt class="py-op">(</tt><tt class="py-param">self</t [...]
+</div><div id="ParsedEpytextDocstring.summary-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParsedEpytextDocstring.summary-expanded"><a name="L2014"></a><tt class="py-lineno">2014</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_tree</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="p [...]
+<a name="L2015"></a><tt class="py-lineno">2015</tt>  <tt class="py-line">        <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_tree</tt> </tt>
+<a name="L2016"></a><tt class="py-lineno">2016</tt>  <tt class="py-line">        <tt class="py-name">doc</tt> <tt class="py-op">=</tt> <tt id="link-523" class="py-name"><a title="epydoc.markup.epytext.Element" class="py-name" href="#" onclick="return doclink('link-523', 'Element', 'link-30');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'epytext'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2017"></a><tt class="py-lineno">2017</tt>  <tt class="py-line">     </tt>
+<a name="L2018"></a><tt class="py-lineno">2018</tt>  <tt class="py-line">        <tt class="py-comment"># Find the first paragraph.</tt> </tt>
+<a name="L2019"></a><tt class="py-lineno">2019</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt id="link-524" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-524', 'variables', 'link-225');">variables</a></tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt class="py-name">children</tt> </tt>
+<a name="L2020"></a><tt class="py-lineno">2020</tt>  <tt class="py-line">        <tt class="py-keyword">while</tt> <tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-525" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-525', 'variables', 'link-225');">variables</a></tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-number">0</tt><tt class="py-op">)</tt> <tt cla [...]
+<a name="L2021"></a><tt class="py-lineno">2021</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt id="link-528" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-528', 'variables', 'link-225');">variables</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-529" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" hre [...]
+<a name="L2022"></a><tt class="py-lineno">2022</tt>  <tt class="py-line">                <tt id="link-530" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-530', 'variables', 'link-225');">variables</a></tt> <tt class="py-op">=</tt> <tt id="link-531" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-531', 'variables', 'link-225');">variables</a></tt>< [...]
+<a name="L2023"></a><tt class="py-lineno">2023</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L2024"></a><tt class="py-lineno">2024</tt>  <tt class="py-line">                <tt id="link-532" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-532', 'variables', 'link-225');">variables</a></tt> <tt class="py-op">=</tt> <tt id="link-533" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-533', 'variables', 'link-225');">variables</a></tt>< [...]
+<a name="L2025"></a><tt class="py-lineno">2025</tt>  <tt class="py-line">     </tt>
+<a name="L2026"></a><tt class="py-lineno">2026</tt>  <tt class="py-line">        <tt class="py-comment"># Special case: if the docstring contains a single literal block,</tt> </tt>
+<a name="L2027"></a><tt class="py-lineno">2027</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># then try extracting the summary from it.</tt> </tt>
+<a name="L2028"></a><tt class="py-lineno">2028</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-534" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-534', 'variables', 'link-225');">variables</a></tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt> <tt clas [...]
+<a name="L2029"></a><tt class="py-lineno">2029</tt>  <tt class="py-line">            <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt class="py-name">children</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-535" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-535', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'literalbl [...]
+<a name="L2030"></a><tt class="py-lineno">2030</tt>  <tt class="py-line">            <tt class="py-name">str</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">r'\n\s*(\n|$).*'</tt><tt class="py-op">,</tt> </tt>
+<a name="L2031"></a><tt class="py-lineno">2031</tt>  <tt class="py-line">                           <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt class="py-name">children</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">children</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">[< [...]
+<a name="L2032"></a><tt class="py-lineno">2032</tt>  <tt class="py-line">            <tt id="link-536" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-536', 'variables', 'link-225');">variables</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt id="link-537" class="py-name"><a title="epydoc.markup.epytext.Element" class="py-name" href="#" onclick="return doclink('link-537', 'Element', 'link-30');">Element</ [...]
+<a name="L2033"></a><tt class="py-lineno">2033</tt>  <tt class="py-line">            <tt id="link-538" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-538', 'variables', 'link-225');">variables</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">children</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt cla [...]
+<a name="L2034"></a><tt class="py-lineno">2034</tt>  <tt class="py-line">     </tt>
+<a name="L2035"></a><tt class="py-lineno">2035</tt>  <tt class="py-line">        <tt class="py-comment"># If we didn't find a paragraph, return an empty epytext.</tt> </tt>
+<a name="L2036"></a><tt class="py-lineno">2036</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-539" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-539', 'variables', 'link-225');">variables</a></tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> <tt clas [...]
+<a name="L2037"></a><tt class="py-lineno">2037</tt>  <tt class="py-line">     </tt>
+<a name="L2038"></a><tt class="py-lineno">2038</tt>  <tt class="py-line">        <tt class="py-comment"># Is there anything else, excluding tags, after the first variable?</tt> </tt>
+<a name="L2039"></a><tt class="py-lineno">2039</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">long_docs</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L2040"></a><tt class="py-lineno">2040</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">var</tt> <tt class="py-keyword">in</tt> <tt id="link-541" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-541', 'variables', 'link-225');">variables</a></tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L2041"></a><tt class="py-lineno">2041</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">var</tt><tt class="py-op">,</tt> <tt id="link-542" class="py-name"><a title="epydoc.markup.epytext.Element" class="py-name" href="#" onclick="return doclink('link-542', 'Element', 'link-30');">Element</a></tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-name">var</tt><tt [...]
+<a name="L2042"></a><tt class="py-lineno">2042</tt>  <tt class="py-line">                <tt class="py-keyword">continue</tt> </tt>
+<a name="L2043"></a><tt class="py-lineno">2043</tt>  <tt class="py-line">            <tt class="py-name">long_docs</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L2044"></a><tt class="py-lineno">2044</tt>  <tt class="py-line">            <tt class="py-keyword">break</tt> </tt>
+<a name="L2045"></a><tt class="py-lineno">2045</tt>  <tt class="py-line">         </tt>
+<a name="L2046"></a><tt class="py-lineno">2046</tt>  <tt class="py-line">        <tt class="py-comment"># Extract the first sentence.</tt> </tt>
+<a name="L2047"></a><tt class="py-lineno">2047</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">parachildren</tt> <tt class="py-op">=</tt> <tt id="link-544" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-544', 'variables', 'link-225');">variables</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">children</tt> </tt>
+<a name="L2048"></a><tt class="py-lineno">2048</tt>  <tt class="py-line">        <tt class="py-name">para</tt> <tt class="py-op">=</tt> <tt id="link-545" class="py-name"><a title="epydoc.markup.epytext.Element" class="py-name" href="#" onclick="return doclink('link-545', 'Element', 'link-30');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'para'</tt><tt class="py-op">,</tt> <tt class="py-name">inline</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py- [...]
+<a name="L2049"></a><tt class="py-lineno">2049</tt>  <tt class="py-line">        <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt class="py-name">children</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">para</tt><tt class="py-op">)</tt> </tt>
+<a name="L2050"></a><tt class="py-lineno">2050</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">parachild</tt> <tt class="py-keyword">in</tt> <tt class="py-name">parachildren</tt><tt class="py-op">:</tt> </tt>
+<a name="L2051"></a><tt class="py-lineno">2051</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">parachild</tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L2052"></a><tt class="py-lineno">2052</tt>  <tt class="py-line">                <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-546" class="py-name"><a title="epydoc.markup.epytext.ParsedEpytextDocstring._SUMMARY_RE
+epydoc.markup.javadoc.ParsedJavadocDocstring._SUMMARY_RE
+epydoc.markup.plaintext.ParsedPlaintextDocstring._SUMMARY_RE
+epydoc.markup.restructuredtext._SummaryExtractor._SUMMARY_RE" class="py-name" href="#" onclick="return doclink('link-546', '_SUMMARY_RE', 'link-522');">_SUMMARY_RE</a></tt><tt class="py-op">.</tt><tt class="py-name">match</tt><tt class="py-op">(</tt><tt class="py-name">parachild</tt><tt class="py-op">)</tt> </tt>
+<a name="L2053"></a><tt class="py-lineno">2053</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">m</tt><tt class="py-op">:</tt> </tt>
+<a name="L2054"></a><tt class="py-lineno">2054</tt>  <tt class="py-line">                    <tt class="py-name">para</tt><tt class="py-op">.</tt><tt class="py-name">children</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">.</tt><tt class="py-name">group</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2055"></a><tt class="py-lineno">2055</tt>  <tt class="py-line">                    <tt class="py-name">long_docs</tt> <tt class="py-op">|=</tt> <tt class="py-name">parachild</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">parachildren</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L2056"></a><tt class="py-lineno">2056</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">long_docs</tt><tt class="py-op">:</tt> </tt>
+<a name="L2057"></a><tt class="py-lineno">2057</tt>  <tt class="py-line">                        <tt class="py-name">other</tt> <tt class="py-op">=</tt> <tt class="py-name">parachild</tt><tt class="py-op">[</tt><tt class="py-name">m</tt><tt class="py-op">.</tt><tt class="py-name">end</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt>
+<a name="L2058"></a><tt class="py-lineno">2058</tt>  <tt class="py-line">                        <tt class="py-keyword">if</tt> <tt class="py-name">other</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">other</tt><tt class="py-op">.</tt><tt class="py-name">isspace</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L2059"></a><tt class="py-lineno">2059</tt>  <tt class="py-line">                            <tt class="py-name">long_docs</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L2060"></a><tt class="py-lineno">2060</tt>  <tt class="py-line">                    <tt class="py-keyword">return</tt> <tt id="link-547" class="py-name"><a title="epydoc.markup.epytext.ParsedEpytextDocstring" class="py-name" href="#" onclick="return doclink('link-547', 'ParsedEpytextDocstring', 'link-373');">ParsedEpytextDocstring</a></tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">long_docs</tt> </tt>
+<a name="L2061"></a><tt class="py-lineno">2061</tt>  <tt class="py-line">            <tt class="py-name">para</tt><tt class="py-op">.</tt><tt class="py-name">children</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">parachild</tt><tt class="py-op">)</tt> </tt>
+<a name="L2062"></a><tt class="py-lineno">2062</tt>  <tt class="py-line"> </tt>
+<a name="L2063"></a><tt class="py-lineno">2063</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-548" class="py-name"><a title="epydoc.markup.epytext.ParsedEpytextDocstring" class="py-name" href="#" onclick="return doclink('link-548', 'ParsedEpytextDocstring', 'link-373');">ParsedEpytextDocstring</a></tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">long_docs</tt> </tt>
+</div><a name="L2064"></a><tt class="py-lineno">2064</tt>  <tt class="py-line"> </tt>
+<a name="ParsedEpytextDocstring.split_fields"></a><div id="ParsedEpytextDocstring.split_fields-def"><a name="L2065"></a><tt class="py-lineno">2065</tt> <a class="py-toggle" href="#" id="ParsedEpytextDocstring.split_fields-toggle" onclick="return toggle('ParsedEpytextDocstring.split_fields');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#split_fields">split_fields</a><tt class="py-op">(</t [...]
+</div><div id="ParsedEpytextDocstring.split_fields-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParsedEpytextDocstring.split_fields-expanded"><a name="L2066"></a><tt class="py-lineno">2066</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_tree</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <t [...]
+<a name="L2067"></a><tt class="py-lineno">2067</tt>  <tt class="py-line">        <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt id="link-549" class="py-name"><a title="epydoc.markup.epytext.Element" class="py-name" href="#" onclick="return doclink('link-549', 'Element', 'link-30');">Element</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_tree</tt><tt class="py-op">.</tt><tt id="link-550" class="py-name"><a title="epydo [...]
+<a name="L2068"></a><tt class="py-lineno">2068</tt>  <tt class="py-line">                       <tt class="py-op">**</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_tree</tt><tt class="py-op">.</tt><tt class="py-name">attribs</tt><tt class="py-op">)</tt> </tt>
+<a name="L2069"></a><tt class="py-lineno">2069</tt>  <tt class="py-line">        <tt class="py-name">fields</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L2070"></a><tt class="py-lineno">2070</tt>  <tt class="py-line"> </tt>
+<a name="L2071"></a><tt class="py-lineno">2071</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">.</tt><tt class="py-name">children</tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L2072"></a><tt class="py-lineno">2072</tt>  <tt class="py-line">            <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt class="py-name">children</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-551" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-551', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt clas [...]
+<a name="L2073"></a><tt class="py-lineno">2073</tt>  <tt class="py-line">            <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt class="py-name">children</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">children</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L2074"></a><tt class="py-lineno">2074</tt>  <tt class="py-line">            <tt class="py-name">field_nodes</tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt class="py-name">children</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">children</tt> </tt>
+<a name="L2075"></a><tt class="py-lineno">2075</tt>  <tt class="py-line">            <tt class="py-keyword">del</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt class="py-name">children</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L2076"></a><tt class="py-lineno">2076</tt>  <tt class="py-line"> </tt>
+<a name="L2077"></a><tt class="py-lineno">2077</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">field</tt> <tt class="py-keyword">in</tt> <tt class="py-name">field_nodes</tt><tt class="py-op">:</tt> </tt>
+<a name="L2078"></a><tt class="py-lineno">2078</tt>  <tt class="py-line">                <tt class="py-comment"># Get the tag</tt> </tt>
+<a name="L2079"></a><tt class="py-lineno">2079</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt id="link-552" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-552', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">=</tt> <tt class="py-name">field</tt><tt class="py-op">.</tt><tt class="py-name">children</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt> [...]
+<a name="L2080"></a><tt class="py-lineno">2080</tt>  <tt class="py-line">                <tt class="py-keyword">del</tt> <tt class="py-name">field</tt><tt class="py-op">.</tt><tt class="py-name">children</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L2081"></a><tt class="py-lineno">2081</tt>  <tt class="py-line"> </tt>
+<a name="L2082"></a><tt class="py-lineno">2082</tt>  <tt class="py-line">                <tt class="py-comment"># Get the argument.</tt> </tt>
+<a name="L2083"></a><tt class="py-lineno">2083</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-keyword">if</tt> <tt class="py-name">field</tt><tt class="py-op">.</tt><tt class="py-name">children</tt> <tt class="py-keyword">and</tt> <tt class="py-name">field</tt><tt class="py-op">.</tt><tt class="py-name">children</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-553" class="py-name"><a  [...]
+<a name="L2084"></a><tt class="py-lineno">2084</tt>  <tt class="py-line">                    <tt id="link-554" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-554', 'arg', 'link-222');">arg</a></tt> <tt class="py-op">=</tt> <tt class="py-name">field</tt><tt class="py-op">.</tt><tt class="py-name">children</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">chi [...]
+<a name="L2085"></a><tt class="py-lineno">2085</tt>  <tt class="py-line">                    <tt class="py-keyword">del</tt> <tt class="py-name">field</tt><tt class="py-op">.</tt><tt class="py-name">children</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L2086"></a><tt class="py-lineno">2086</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L2087"></a><tt class="py-lineno">2087</tt>  <tt class="py-line">                    <tt id="link-555" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-555', 'arg', 'link-222');">arg</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L2088"></a><tt class="py-lineno">2088</tt>  <tt class="py-line"> </tt>
+<a name="L2089"></a><tt class="py-lineno">2089</tt>  <tt class="py-line">                <tt class="py-comment"># Process the field.</tt> </tt>
+<a name="L2090"></a><tt class="py-lineno">2090</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-name">field</tt><tt class="py-op">.</tt><tt id="link-556" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-556', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'epytext'</tt> </tt>
+<a name="L2091"></a><tt class="py-lineno">2091</tt>  <tt class="py-line">                <tt class="py-name">fields</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-557" class="py-name" targets="Class epydoc.markup.Field=epydoc.markup.Field-class.html"><a title="epydoc.markup.Field" class="py-name" href="#" onclick="return doclink('link-557', 'Field', 'link-557');">Field</a></tt><tt class="py-op">(</tt><tt id="link-558" class="py-name"><a ti [...]
+<a name="L2092"></a><tt class="py-lineno">2092</tt>  <tt class="py-line"> </tt>
+<a name="L2093"></a><tt class="py-lineno">2093</tt>  <tt class="py-line">        <tt class="py-comment"># Save the remaining docstring as the description..</tt> </tt>
+<a name="L2094"></a><tt class="py-lineno">2094</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt class="py-name">children</tt> <tt class="py-keyword">and</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt class="py-name">children</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">children</tt><tt class="py- [...]
+<a name="L2095"></a><tt class="py-lineno">2095</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt id="link-561" class="py-name"><a title="epydoc.markup.epytext.ParsedEpytextDocstring" class="py-name" href="#" onclick="return doclink('link-561', 'ParsedEpytextDocstring', 'link-373');">ParsedEpytextDocstring</a></tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">fields</tt> </tt>
+<a name="L2096"></a><tt class="py-lineno">2096</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L2097"></a><tt class="py-lineno">2097</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">fields</tt> </tt>
+</div><a name="L2098"></a><tt class="py-lineno">2098</tt>  <tt class="py-line"> </tt>
+<a name="L2099"></a><tt class="py-lineno">2099</tt>  <tt class="py-line">     </tt>
+<a name="ParsedEpytextDocstring.index_terms"></a><div id="ParsedEpytextDocstring.index_terms-def"><a name="L2100"></a><tt class="py-lineno">2100</tt> <a class="py-toggle" href="#" id="ParsedEpytextDocstring.index_terms-toggle" onclick="return toggle('ParsedEpytextDocstring.index_terms');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#index_terms">index_terms</a><tt class="py-op">(</tt><tt  [...]
+</div><div id="ParsedEpytextDocstring.index_terms-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParsedEpytextDocstring.index_terms-expanded"><a name="L2101"></a><tt class="py-lineno">2101</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_terms</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L2102"></a><tt class="py-lineno">2102</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_terms</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L2103"></a><tt class="py-lineno">2103</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-562" class="py-name" targets="Method epydoc.markup.epytext.ParsedEpytextDocstring._index_terms()=epydoc.markup.epytext.ParsedEpytextDocstring-class.html#_index_terms"><a title="epydoc.markup.epytext.ParsedEpytextDocstring._index_terms" class="py-name" href="#" onclick="return doclink('link-562', '_index_terms', 'link-562');">_index_terms</ [...]
+<a name="L2104"></a><tt class="py-lineno">2104</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_terms</tt> </tt>
+</div><a name="L2105"></a><tt class="py-lineno">2105</tt>  <tt class="py-line"> </tt>
+<a name="ParsedEpytextDocstring._index_terms"></a><div id="ParsedEpytextDocstring._index_terms-def"><a name="L2106"></a><tt class="py-lineno">2106</tt> <a class="py-toggle" href="#" id="ParsedEpytextDocstring._index_terms-toggle" onclick="return toggle('ParsedEpytextDocstring._index_terms');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#_index_terms">_index_terms</a><tt class="py-op">(</t [...]
+</div><div id="ParsedEpytextDocstring._index_terms-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ParsedEpytextDocstring._index_terms-expanded"><a name="L2107"></a><tt class="py-lineno">2107</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">tree</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt> <tt class="py-keyword">or</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">tree< [...]
+<a name="L2108"></a><tt class="py-lineno">2108</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> </tt>
+<a name="L2109"></a><tt class="py-lineno">2109</tt>  <tt class="py-line">         </tt>
+<a name="L2110"></a><tt class="py-lineno">2110</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-563" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-563', 'tag', 'link-13');">tag</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'indexed'</tt><tt class="py-op">:</tt> </tt>
+<a name="L2111"></a><tt class="py-lineno">2111</tt>  <tt class="py-line">            <tt class="py-name">term</tt> <tt class="py-op">=</tt> <tt id="link-564" class="py-name"><a title="epydoc.markup.epytext.Element" class="py-name" href="#" onclick="return doclink('link-564', 'Element', 'link-30');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'epytext'</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-name">tree</tt><tt class="py-op">.</tt><tt class="py- [...]
+<a name="L2112"></a><tt class="py-lineno">2112</tt>  <tt class="py-line">            <tt class="py-name">terms</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-565" class="py-name"><a title="epydoc.markup.epytext.ParsedEpytextDocstring" class="py-name" href="#" onclick="return doclink('link-565', 'ParsedEpytextDocstring', 'link-373');">ParsedEpytextDocstring</a></tt><tt class="py-op">(</tt><tt class="py-name">term</tt><tt class="py-op">)</tt [...]
+<a name="L2113"></a><tt class="py-lineno">2113</tt>  <tt class="py-line"> </tt>
+<a name="L2114"></a><tt class="py-lineno">2114</tt>  <tt class="py-line">        <tt class="py-comment"># Look for index items in child nodes.</tt> </tt>
+<a name="L2115"></a><tt class="py-lineno">2115</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">for</tt> <tt class="py-name">child</tt> <tt class="py-keyword">in</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt class="py-name">children</tt><tt class="py-op">:</tt> </tt>
+<a name="L2116"></a><tt class="py-lineno">2116</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-566" class="py-name"><a title="epydoc.markup.epytext.ParsedEpytextDocstring._index_terms" class="py-name" href="#" onclick="return doclink('link-566', '_index_terms', 'link-562');">_index_terms</a></tt><tt class="py-op">(</tt><tt class="py-name">child</tt><tt class="py-op">,</tt> <tt class="py-name">terms</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L2117"></a><tt class="py-lineno">2117</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:09:13 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.markup.epytext.ColorizingError-class.html b/doc/api/epydoc.markup.epytext.ColorizingError-class.html
new file mode 100644
index 0000000..ea841d6
--- /dev/null
+++ b/doc/api/epydoc.markup.epytext.ColorizingError-class.html
@@ -0,0 +1,338 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.markup.epytext.ColorizingError</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.markup-module.html">Package markup</a> ::
+        <a href="epydoc.markup.epytext-module.html">Module epytext</a> ::
+        Class ColorizingError
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.markup.epytext.ColorizingError-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class ColorizingError</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.markup.epytext-pysrc.html#ColorizingError">source code</a></span></p>
+<center>
+<center>  <map id="uml_class_diagram_for_epydoc_m_9" name="uml_class_diagram_for_epydoc_m_9">
+<area shape="rect" href="epydoc.markup.ParseError-class.html#is_fatal" title="Returns:  true if this is a fatal error." alt="" coords="68,111,257,129" />
+<area shape="rect" href="epydoc.markup.ParseError-class.html#linenum" title="Returns:  The line number on which the error occured (including any offset)." alt="" coords="68,129,257,148" />
+<area shape="rect" href="epydoc.markup.ParseError-class.html#set_linenum_offset" title="Set the line number offset for this error." alt="" coords="68,148,257,167" />
+<area shape="rect" href="epydoc.markup.ParseError-class.html#__str__" title="Return a string representation of this ParseError." alt="" coords="68,167,257,185" />
+<area shape="rect" href="epydoc.markup.ParseError-class.html#__repr__" title="Return the formal representation of this ParseError." alt="" coords="68,185,257,204" />
+<area shape="rect" href="epydoc.markup.ParseError-class.html#__cmp__" title="Compare two ParseErrors, based on their line number." alt="" coords="68,204,257,223" />
+<area shape="rect" href="epydoc.markup.ParseError-class.html" title="The base class for errors generated while parsing docstrings." alt="" coords="56,80,269,229" />
+<area shape="rect" href="epydoc.markup.epytext.ColorizingError-class.html#CONTEXT_RANGE" title="epydoc.markup.epytext.ColorizingError.CONTEXT_RANGE" alt="" coords="17,271,308,289" />
+<area shape="rect" href="epydoc.markup.epytext.ColorizingError-class.html#__init__" title="Construct a new colorizing exception." alt="" coords="17,292,308,311" />
+<area shape="rect" href="epydoc.markup.epytext.ColorizingError-class.html#descr" title="epydoc.markup.epytext.ColorizingError.descr" alt="" coords="17,311,308,329" />
+<area shape="rect" href="epydoc.markup.epytext.ColorizingError-class.html" title="An error generated while colorizing a paragraph." alt="" coords="5,248,320,336" />
+<area shape="rect" href="javascript:void(0);" title="exceptions.Exception.__getitem__" alt="" coords="99,36,227,55" />
+<area shape="rect" href="javascript:void(0);" title="Common base class for all exceptions." alt="" coords="87,5,239,61" />
+</map>
+  <img src="uml_class_diagram_for_epydoc_m_9.gif" alt='' usemap="#uml_class_diagram_for_epydoc_m_9" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<p>An error generated while colorizing a paragraph.</p>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.epytext.ColorizingError-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">descr</span>,
+        <span class="summary-sig-arg">token</span>,
+        <span class="summary-sig-arg">charnum</span>,
+        <span class="summary-sig-arg">is_fatal</span>=<span class="summary-sig-default">1</span>)</span><br />
+      Construct a new colorizing exception.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.epytext-pysrc.html#ColorizingError.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.epytext.ColorizingError-class.html#descr" class="summary-sig-name">descr</a>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.epytext-pysrc.html#ColorizingError.descr">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.markup.ParseError-class.html">ParseError</a></code></b>:
+      <code><a href="epydoc.markup.ParseError-class.html#__cmp__">__cmp__</a></code>,
+      <code><a href="epydoc.markup.ParseError-class.html#__repr__">__repr__</a></code>,
+      <code><a href="epydoc.markup.ParseError-class.html#__str__">__str__</a></code>,
+      <code><a href="epydoc.markup.ParseError-class.html#is_fatal">is_fatal</a></code>,
+      <code><a href="epydoc.markup.ParseError-class.html#linenum">linenum</a></code>,
+      <code><a href="epydoc.markup.ParseError-class.html#set_linenum_offset">set_linenum_offset</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.Exception</code></b>:
+      <code>__getitem__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Class Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-ClassVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="CONTEXT_RANGE"></a><span class="summary-name">CONTEXT_RANGE</span> = <code title="20">20</code>
+    </td>
+  </tr>
+</table>
+<!-- ==================== INSTANCE VARIABLES ==================== -->
+<a name="section-InstanceVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <div class="private">    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.markup.ParseError-class.html">ParseError</a></code></b> (private):
+      <code><a href="epydoc.markup.ParseError-class.html#_descr" onclick="show_private();">_descr</a></code>,
+      <code><a href="epydoc.markup.ParseError-class.html#_fatal" onclick="show_private();">_fatal</a></code>,
+      <code><a href="epydoc.markup.ParseError-class.html#_linenum" onclick="show_private();">_linenum</a></code>,
+      <code><a href="epydoc.markup.ParseError-class.html#_offset" onclick="show_private();">_offset</a></code>
+      </p></div>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Method Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-MethodDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">descr</span>,
+        <span class="sig-arg">token</span>,
+        <span class="sig-arg">charnum</span>,
+        <span class="sig-arg">is_fatal</span>=<span class="sig-default">1</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.epytext-pysrc.html#ColorizingError.__init__">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Construct a new colorizing exception.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>descr</code></strong> (<code>string</code>) - A short description of the error.</li>
+        <li><strong class="pname"><code>token</code></strong> (<a href="epydoc.markup.epytext.Token-class.html" 
+          class="link">Token</a>) - The token where the error occured</li>
+        <li><strong class="pname"><code>charnum</code></strong> (<code>int</code>) - The character index of the position in <code>token</code> where 
+          the error occured.</li>
+    </ul></dd>
+    <dt>Overrides:
+        exceptions.Exception.__init__
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="descr"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">descr</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.epytext-pysrc.html#ColorizingError.descr">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  
+  <dl class="fields">
+    <dt>Overrides:
+        <a href="epydoc.markup.ParseError-class.html#descr">ParseError.descr</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:08:31 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.markup.epytext.Element-class.html b/doc/api/epydoc.markup.epytext.Element-class.html
new file mode 100644
index 0000000..99bbf86
--- /dev/null
+++ b/doc/api/epydoc.markup.epytext.Element-class.html
@@ -0,0 +1,304 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.markup.epytext.Element</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.markup-module.html">Package markup</a> ::
+        <a href="epydoc.markup.epytext-module.html">Module epytext</a> ::
+        Class Element
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.markup.epytext.Element-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Element</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.markup.epytext-pysrc.html#Element">source code</a></span></p>
+<p>A very simple DOM-like representation for parsed epytext documents.  
+  Each epytext document is encoded as a tree whose nodes are <a 
+  href="epydoc.markup.epytext.Element-class.html" class="link">Element</a> 
+  objects, and whose leaves are <code>string</code>s.  Each node is marked 
+  by a <i>tag</i> and zero or more <i>attributes</i>.  Each attribute is a 
+  mapping from a string key to a string value.</p>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__init__"></a><span class="summary-sig-name">__init__</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">tag</span>,
+        <span class="summary-sig-arg">*children</span>,
+        <span class="summary-sig-arg">**attribs</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.epytext-pysrc.html#Element.__init__">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for___init___34-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for___init___34-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for___init___34" name="call_graph_for___init___34">
+<area shape="rect" href="epydoc.markup.epytext.Element-class.html#__init__" title="__init__()" alt="" coords="377,370,473,402" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#_index_terms" title="ParsedEpytextDocstring._index_terms()" alt="" coords="7,6,327,38" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#_to_html" title="ParsedEpytextDocstring._to_html()" alt="" coords="24,62,309,94" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#split_fields" title="ParsedEpytextDocstring.split_fields()" alt="" coords="16,118,317,150" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#summary" title="ParsedEpytextDocstring.summary()" alt="" coords="23,174,311,206" />
+<area shape="rect" href="epydoc.markup.epytext.Token-class.html#to_dom" title="Token.to_dom()" alt="" coords="95,230,239,262" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#_add_list" title="_add_list()" alt="" coords="115,286,219,318" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#_add_section" title="_add_section()" alt="" coords="100,342,233,374" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#_colorize" title="_colorize()" alt="" coords="115,398,219,430" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#_colorize_link" title="_colorize_link()" alt="" coords="96,454,237,486" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#_raise_graphs" title="_raise_graphs()" alt="" coords="97,510,236,542" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#parse" title="parse()" alt="" coords="129,566,204,598" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#parse_as_para" title="parse_as_para()" alt="" coords="96,622,237,654" />
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_output" title="pyval_repr.PyvalColorizer._output()" alt="" coords="20,678,313,710" />
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#colorize" title="pyval_repr.PyvalColorizer.colorize()" alt="" coords="19,734,315,766" />
+</map>
+  <img src="call_graph_for___init___34.gif" alt='' usemap="#call_graph_for___init___34" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.epytext.Element-class.html#__str__" class="summary-sig-name">__str__</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Return a string representation of this element, using XML notation.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.epytext-pysrc.html#Element.__str__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__repr__"></a><span class="summary-sig-name">__repr__</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.epytext-pysrc.html#Element.__repr__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== INSTANCE VARIABLES ==================== -->
+<a name="section-InstanceVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>string</code></span>
+    </td><td class="summary">
+        <a name="tag"></a><span class="summary-name">tag</span><br />
+      A string tag indicating the type of this element.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>list</code> of (<code>string</code> or <code>Element</code>)</span>
+    </td><td class="summary">
+        <a name="children"></a><span class="summary-name">children</span><br />
+      A list of the children of this element.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>dict</code> from <code>string</code> to <code>string</code></span>
+    </td><td class="summary">
+        <a name="attribs"></a><span class="summary-name">attribs</span><br />
+      A dictionary mapping attribute names to attribute values for this 
+      element.
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Method Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-MethodDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="__str__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__str__</span>(<span class="sig-arg">self</span>)</span>
+    <br /><em class="fname">(Informal representation operator)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.epytext-pysrc.html#Element.__str__">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Return a string representation of this element, using XML 
+  notation.</p>
+  <dl class="fields">
+  </dl>
+<div class="fields">      <p><strong>Bug:</strong>
+        Doesn't escape '<' or '&' or '>'.
+      </p>
+</div></td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:08:31 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.markup.epytext.ParsedEpytextDocstring-class.html b/doc/api/epydoc.markup.epytext.ParsedEpytextDocstring-class.html
new file mode 100644
index 0000000..a1af5ab
--- /dev/null
+++ b/doc/api/epydoc.markup.epytext.ParsedEpytextDocstring-class.html
@@ -0,0 +1,984 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.markup.epytext.ParsedEpytextDocstring</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.markup-module.html">Package markup</a> ::
+        <a href="epydoc.markup.epytext-module.html">Module epytext</a> ::
+        Class ParsedEpytextDocstring
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class ParsedEpytextDocstring</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.markup.epytext-pysrc.html#ParsedEpytextDocstring">source code</a></span></p>
+<center>
+<center>  <map id="uml_class_diagram_for_epydoc_m_10" name="uml_class_diagram_for_epydoc_m_10">
+<area shape="rect" href="epydoc.markup.ParsedDocstring-class.html#concatenate" title="Returns:  A new parsed docstring containing the concatination of this docstring and  other." alt="" coords="209,36,356,55" />
+<area shape="rect" href="epydoc.markup.ParsedDocstring-class.html#__add__" title="epydoc.markup.ParsedDocstring.__add__" alt="" coords="209,55,356,74" />
+<area shape="rect" href="epydoc.markup.ParsedDocstring-class.html" title="A standard intermediate representation for parsed docstrings that can be used to generate output." alt="" coords="197,6,368,80" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#SYMBOL_TO_HTML" title="epydoc.markup.epytext.ParsedEpytextDocstring.SYMBOL_TO_HTML" alt="" coords="17,122,548,140" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#SYMBOL_TO_LATEX" title="epydoc.markup.epytext.ParsedEpytextDocstring.SYMBOL_TO_LATEX" alt="" coords="17,140,548,159" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#__init__" title="epydoc.markup.epytext.ParsedEpytextDocstring.__init__" alt="" coords="17,162,548,180" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#__str__" title="epydoc.markup.epytext.ParsedEpytextDocstring.__str__" alt="" coords="17,180,548,199" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#to_html" title="Translate this docstring to HTML." alt="" coords="17,199,548,218" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#to_latex" title="Translate this docstring to LaTeX." alt="" coords="17,218,548,236" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#to_plaintext" title="Translate this docstring to plaintext." alt="" coords="17,236,548,255" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#summary" title="Returns:  A pair consisting of a short summary of this docstring and a boolean value  indicating whether there is further documentation in addition to the  summary." alt="" coords="17,255,548,274" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#split_fields" title="Split this docstring into its body and its fields." alt="" coords="17,274,548,292" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#index_terms" title="Returns:  The list of index terms that are defined in this docstring." alt="" coords="17,292,548,311" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html" title="epydoc.markup.epytext.ParsedEpytextDocstring" alt="" coords="5,99,560,318" />
+<area shape="rect" href="epydoc.markup.pyval_repr.ColorizedPyvalRepr-class.html" title="epydoc.markup.pyval_repr.ColorizedPyvalRepr" alt="" coords="173,336,392,374" />
+</map>
+  <img src="uml_class_diagram_for_epydoc_m_10.gif" alt='' usemap="#uml_class_diagram_for_epydoc_m_10" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__init__"></a><span class="summary-sig-name">__init__</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">dom_tree</span>,
+        <span class="summary-sig-arg">**options</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.epytext-pysrc.html#ParsedEpytextDocstring.__init__">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for___init___35-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for___init___35-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for___init___35" name="call_graph_for___init___35">
+<area shape="rect" href="epydoc.docstringparser-module.html#add_metadata_from_var" title="docstringparser.add_metadata_from_var()" alt="" coords="8,6,341,38" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#__init__" title="__init__()" alt="" coords="393,174,489,206" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#_index_terms" title="_index_terms()" alt="" coords="107,62,243,94" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#_to_html" title="_to_html()" alt="" coords="124,118,225,150" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#split_fields" title="split_fields()" alt="" coords="116,174,233,206" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#summary" title="summary()" alt="" coords="123,230,227,262" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#parse_docstring" title="parse_docstring()" alt="" coords="99,286,251,318" />
+<area shape="rect" href="epydoc.markup.pyval_repr.ColorizedPyvalRepr-class.html#__init__" title="pyval_repr.ColorizedPyvalRepr.__init__()" alt="" coords="5,342,344,374" />
+</map>
+  <img src="call_graph_for___init___35.gif" alt='' usemap="#call_graph_for___init___35" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__str__"></a><span class="summary-sig-name">__str__</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.epytext-pysrc.html#ParsedEpytextDocstring.__str__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>string</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#to_html" class="summary-sig-name">to_html</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">docstring_linker</span>,
+        <span class="summary-sig-arg">directory</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">docindex</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">context</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">**options</span>)</span><br />
+      Translate this docstring to HTML.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.epytext-pysrc.html#ParsedEpytextDocstring.to_html">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_to_html_4-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_to_html_4-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_to_html_4" name="call_graph_for_to_html_4">
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#description" title="docwriter.html.HTMLWriter.description()" alt="" coords="81,6,417,38" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#to_html" title="to_html()" alt="" coords="543,174,633,206" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#docstring_to_html" title="docwriter.html.HTMLWriter.docstring_to_html()" alt="" coords="55,62,444,94" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#func_arg" title="docwriter.html.HTMLWriter.func_arg()" alt="" coords="89,118,409,150" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#pprint_value" title="docwriter.html.HTMLWriter.pprint_value()" alt="" coords="75,174,424,206" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_summary_line" title="docwriter.html.HTMLWriter.write_summary_line()" alt="" coords="45,230,453,262" />
+<area shape="rect" href="epydoc.docwriter.html._HTMLDocstringLinker-class.html#translate_indexterm" title="docwriter.html._HTMLDocstringLinker.translate_indexterm()" alt="" coords="7,286,492,318" />
+<area shape="rect" href="epydoc.markup.ConcatenatedDocstring-class.html#to_html" title="ConcatenatedDocstring.to_html()" alt="" coords="113,342,385,374" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#_to_html" title="_to_html()" alt="" coords="684,174,785,206" />
+</map>
+  <img src="call_graph_for_to_html_4.gif" alt='' usemap="#call_graph_for_to_html_4" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>string</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#to_latex" class="summary-sig-name">to_latex</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">docstring_linker</span>,
+        <span class="summary-sig-arg">**options</span>)</span><br />
+      Translate this docstring to LaTeX.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.epytext-pysrc.html#ParsedEpytextDocstring.to_latex">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>string</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#to_plaintext" class="summary-sig-name">to_plaintext</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">docstring_linker</span>,
+        <span class="summary-sig-arg">**options</span>)</span><br />
+      Translate this docstring to plaintext.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.epytext-pysrc.html#ParsedEpytextDocstring.to_plaintext">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_to_plaintext_4-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_to_plaintext_4-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_to_plaintext_4" name="call_graph_for_to_plaintext_4">
+<area shape="rect" href="epydoc.docstringparser-module.html#_descr_to_docstring_field" title="docstringparser._descr_to_docstring_field()" alt="" coords="76,6,423,38" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#to_plaintext" title="to_plaintext()" alt="" coords="541,230,664,262" />
+<area shape="rect" href="epydoc.docstringparser-module.html#_descr_to_identifiers" title="docstringparser._descr_to_identifiers()" alt="" coords="95,62,404,94" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_operation_arg" title="docwriter.dotgraph.DotGraphUmlClassNode._operation_arg()" alt="" coords="7,118,492,150" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_summary" title="docwriter.dotgraph.DotGraphUmlClassNode._summary()" alt="" coords="24,174,475,206" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_type_descr" title="docwriter.dotgraph.DotGraphUmlClassNode._type_descr()" alt="" coords="17,230,481,262" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_term_index_to_anchor" title="docwriter.html.HTMLWriter._term_index_to_anchor()" alt="" coords="33,286,465,318" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_terms_from_docstring" title="docwriter.html.HTMLWriter._terms_from_docstring()" alt="" coords="35,342,464,374" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#variable_tooltip" title="docwriter.html.HTMLWriter.variable_tooltip()" alt="" coords="64,398,435,430" />
+<area shape="rect" href="epydoc.markup.ConcatenatedDocstring-class.html#to_plaintext" title="ConcatenatedDocstring.to_plaintext()" alt="" coords="99,454,400,486" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#to_plaintext" title="to_plaintext()" alt="" coords="712,230,835,262" />
+</map>
+  <img src="call_graph_for_to_plaintext_4.gif" alt='' usemap="#call_graph_for_to_plaintext_4" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_index_term_key"></a><span class="summary-sig-name">_index_term_key</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">tree</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.epytext-pysrc.html#ParsedEpytextDocstring._index_term_key">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_to_html"></a><span class="summary-sig-name">_to_html</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">tree</span>,
+        <span class="summary-sig-arg">linker</span>,
+        <span class="summary-sig-arg">directory</span>,
+        <span class="summary-sig-arg">docindex</span>,
+        <span class="summary-sig-arg">context</span>,
+        <span class="summary-sig-arg">indent</span>=<span class="summary-sig-default">0</span>,
+        <span class="summary-sig-arg">seclevel</span>=<span class="summary-sig-default">0</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.epytext-pysrc.html#ParsedEpytextDocstring._to_html">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__to_html-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__to_html-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__to_html" name="call_graph_for__to_html">
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraph-class.html#to_html" title="docwriter.dotgraph.DotGraph.to_html()" alt="" coords="400,6,717,38" />
+<area shape="rect" href="epydoc.docwriter.html._HTMLDocstringLinker-class.html#translate_identifier_xref" title="docwriter.html._HTMLDocstringLinker.translate_identifier_xref()" alt="" coords="300,62,817,94" />
+<area shape="rect" href="epydoc.docwriter.html._HTMLDocstringLinker-class.html#translate_indexterm" title="docwriter.html._HTMLDocstringLinker.translate_indexterm()" alt="" coords="316,118,801,150" />
+<area shape="rect" href="epydoc.markup.doctest-module.html#doctest_to_html" title="doctest.doctest_to_html()" alt="" coords="453,174,664,206" />
+<area shape="rect" href="epydoc.markup.epytext.Element-class.html#__init__" title="Element.__init__()" alt="" coords="477,230,640,262" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#__init__" title="__init__()" alt="" coords="511,286,607,318" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#_build_graph" title="_build_graph()" alt="" coords="492,342,625,374" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#_to_html" title="_to_html()" alt="" coords="148,230,249,262" />
+<area shape="rect" href="epydoc.util-module.html#plaintext_to_html" title="util.plaintext_to_html()" alt="" coords="460,398,657,430" />
+<area shape="rect" href="epydoc.util-module.html#wordwrap" title="util.wordwrap()" alt="" coords="489,454,628,486" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#to_html" title="to_html()" alt="" coords="7,230,97,262" />
+</map>
+  <img src="call_graph_for__to_html.gif" alt='' usemap="#call_graph_for__to_html" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_build_graph"></a><span class="summary-sig-name">_build_graph</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">graph_type</span>,
+        <span class="summary-sig-arg">graph_args</span>,
+        <span class="summary-sig-arg">linker</span>,
+        <span class="summary-sig-arg">docindex</span>,
+        <span class="summary-sig-arg">context</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.epytext-pysrc.html#ParsedEpytextDocstring._build_graph">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__build_graph-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__build_graph-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__build_graph" name="call_graph_for__build_graph">
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#find" title="apidoc.DocIndex.find()" alt="" coords="397,6,592,38" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#class_tree_graph" title="docwriter.dotgraph.class_tree_graph()" alt="" coords="341,62,648,94" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#_build_graph" title="_build_graph()" alt="" coords="159,34,292,66" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#_to_html" title="_to_html()" alt="" coords="7,34,108,66" />
+</map>
+  <img src="call_graph_for__build_graph.gif" alt='' usemap="#call_graph_for__build_graph" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_to_latex"></a><span class="summary-sig-name">_to_latex</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">tree</span>,
+        <span class="summary-sig-arg">linker</span>,
+        <span class="summary-sig-arg">indent</span>=<span class="summary-sig-default">0</span>,
+        <span class="summary-sig-arg">seclevel</span>=<span class="summary-sig-default">0</span>,
+        <span class="summary-sig-arg">breakany</span>=<span class="summary-sig-default">0</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.epytext-pysrc.html#ParsedEpytextDocstring._to_latex">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">(<a href="epydoc.markup.ParsedDocstring-class.html" 
+      class="link">ParsedDocstring</a>, <code>bool</code>)</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#summary" class="summary-sig-name">summary</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Returns:
+      A pair consisting of a short summary of this docstring and a boolean 
+      value indicating whether there is further documentation in addition 
+      to the summary.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.epytext-pysrc.html#ParsedEpytextDocstring.summary">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_summary_4-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_summary_4-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_summary_4" name="call_graph_for_summary_4">
+<area shape="rect" href="epydoc.docstringparser-module.html#parse_docstring" title="docstringparser.parse_docstring()" alt="" coords="17,6,289,38" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#summary" title="summary()" alt="" coords="349,90,453,122" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_cvar_field" title="docstringparser.process_cvar_field()" alt="" coords="7,62,300,94" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_ivar_field" title="docstringparser.process_ivar_field()" alt="" coords="8,118,299,150" />
+<area shape="rect" href="epydoc.docstringparser-module.html#set_var_descr" title="docstringparser.set_var_descr()" alt="" coords="25,174,281,206" />
+<area shape="rect" href="epydoc.markup.epytext.Element-class.html#__init__" title="Element.__init__()" alt="" coords="501,62,664,94" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#__init__" title="__init__()" alt="" coords="535,118,631,150" />
+</map>
+  <img src="call_graph_for_summary_4.gif" alt='' usemap="#call_graph_for_summary_4" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>(<a href="epydoc.markup.ParsedDocstring-class.html" 
+      class="link">ParsedDocstring</a>, list of <a 
+      href="epydoc.markup.Field-class.html" class="link">Field</a>)</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#split_fields" class="summary-sig-name">split_fields</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">errors</span>=<span class="summary-sig-default">None</span>)</span><br />
+      Split this docstring into its body and its fields.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.epytext-pysrc.html#ParsedEpytextDocstring.split_fields">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_split_fields_3-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_split_fields_3-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_split_fields_3" name="call_graph_for_split_fields_3">
+<area shape="rect" href="epydoc.docstringparser-module.html#parse_docstring" title="docstringparser.parse_docstring()" alt="" coords="6,62,278,94" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#split_fields" title="split_fields()" alt="" coords="326,62,443,94" />
+<area shape="rect" href="epydoc.markup.Field-class.html#__init__" title="Field.__init__()" alt="" coords="503,6,642,38" />
+<area shape="rect" href="epydoc.markup.epytext.Element-class.html#__init__" title="Element.__init__()" alt="" coords="491,62,654,94" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#__init__" title="__init__()" alt="" coords="524,118,620,150" />
+</map>
+  <img src="call_graph_for_split_fields_3.gif" alt='' usemap="#call_graph_for_split_fields_3" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>list</code> of <code>ParsedDocstring</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#index_terms" class="summary-sig-name">index_terms</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Returns:
+      The list of index terms that are defined in this docstring.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.epytext-pysrc.html#ParsedEpytextDocstring.index_terms">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_index_terms_3-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_index_terms_3-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_index_terms_3" name="call_graph_for_index_terms_3">
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_terms_from_docstring" title="docwriter.html.HTMLWriter._terms_from_docstring()" alt="" coords="6,6,435,38" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#index_terms" title="index_terms()" alt="" coords="483,34,611,66" />
+<area shape="rect" href="epydoc.markup.ConcatenatedDocstring-class.html#index_terms" title="ConcatenatedDocstring.index_terms()" alt="" coords="68,62,372,94" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#_index_terms" title="_index_terms()" alt="" coords="660,34,796,66" />
+</map>
+  <img src="call_graph_for_index_terms_3.gif" alt='' usemap="#call_graph_for_index_terms_3" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_index_terms"></a><span class="summary-sig-name">_index_terms</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">tree</span>,
+        <span class="summary-sig-arg">terms</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.epytext-pysrc.html#ParsedEpytextDocstring._index_terms">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__index_terms-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__index_terms-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__index_terms" name="call_graph_for__index_terms">
+<area shape="rect" href="epydoc.markup.epytext.Element-class.html#__init__" title="Element.__init__()" alt="" coords="368,6,531,38" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#__init__" title="__init__()" alt="" coords="401,62,497,94" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#_index_terms" title="_index_terms()" alt="" coords="183,34,319,66" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#index_terms" title="index_terms()" alt="" coords="5,34,133,66" />
+</map>
+  <img src="call_graph_for__index_terms.gif" alt='' usemap="#call_graph_for__index_terms" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.markup.ParsedDocstring-class.html">ParsedDocstring</a></code></b>:
+      <code><a href="epydoc.markup.ParsedDocstring-class.html#__add__">__add__</a></code>,
+      <code><a href="epydoc.markup.ParsedDocstring-class.html#concatenate">concatenate</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Class Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-ClassVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#SYMBOL_TO_HTML" class="summary-name">SYMBOL_TO_HTML</a> = <code title="{'->': '&rarr;',
+ '<-': '&larr;',
+ '<=': '&le;',
+ '>=': '&ge;',
+ 'Alpha': '&Alpha;',
+ 'Beta': '&Beta;',
+ 'Chi': '&Chi;',
+ 'Delta': '&Delta;',
+..."><code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">-></code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">&rarr;</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string"><-</code><code class="variable-quote">'</code><code class="variable-op">: [...]
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#SYMBOL_TO_LATEX" class="summary-name">SYMBOL_TO_LATEX</a> = <code title="{'->': '\\(\\rightarrow\\)',
+ '<-': '\\(\\leftarrow\\)',
+ '<=': '\\(\\le\\)',
+ '>=': '\\(\\ge\\)',
+ 'Alpha': '\\(\\alpha\\)',
+ 'Beta': '\\(\\beta\\)',
+ 'Chi': '\\(\\chi\\)',
+ 'Delta': '\\(\\Delta\\)',
+..."><code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">-></code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">\\(\\rightarrow\\)</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string"><-</code><code class="variable-quote">'</code><code class="variab [...]
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="_SUMMARY_RE"></a><span class="summary-name">_SUMMARY_RE</span> = <code title="re.compile(r'(\s*[\w\W]*?\.)(\s|$)')">re.compile(r'<code class="re-group">(</code>\s<code class="re-op">*</code><code class="re-group">[</code>\w\W<code class="re-group">]</code><code class="re-op">*?</code>\.<code class="re-group">)</code><code class="re-group">(</code>\s<code class="re-op">|</code>$<code class="re-group">)</code>')</code>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Method Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-MethodDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="to_html"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">to_html</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">docstring_linker</span>,
+        <span class="sig-arg">directory</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">docindex</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">context</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">**options</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.epytext-pysrc.html#ParsedEpytextDocstring.to_html">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_to_html_4-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_to_html_4-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_to_html_4" name="call_graph_for_to_html_4">
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#description" title="docwriter.html.HTMLWriter.description()" alt="" coords="81,6,417,38" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#to_html" title="to_html()" alt="" coords="543,174,633,206" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#docstring_to_html" title="docwriter.html.HTMLWriter.docstring_to_html()" alt="" coords="55,62,444,94" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#func_arg" title="docwriter.html.HTMLWriter.func_arg()" alt="" coords="89,118,409,150" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#pprint_value" title="docwriter.html.HTMLWriter.pprint_value()" alt="" coords="75,174,424,206" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_summary_line" title="docwriter.html.HTMLWriter.write_summary_line()" alt="" coords="45,230,453,262" />
+<area shape="rect" href="epydoc.docwriter.html._HTMLDocstringLinker-class.html#translate_indexterm" title="docwriter.html._HTMLDocstringLinker.translate_indexterm()" alt="" coords="7,286,492,318" />
+<area shape="rect" href="epydoc.markup.ConcatenatedDocstring-class.html#to_html" title="ConcatenatedDocstring.to_html()" alt="" coords="113,342,385,374" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#_to_html" title="_to_html()" alt="" coords="684,174,785,206" />
+</map>
+  <img src="call_graph_for_to_html_4.gif" alt='' usemap="#call_graph_for_to_html_4" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Translate this docstring to HTML.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>docstring_linker</code></strong> - An HTML translator for crossreference links into and out of the 
+          docstring.</li>
+        <li><strong class="pname"><code>options</code></strong> - Any extra options for the output.  Unknown options are ignored.</li>
+    </ul></dd>
+    <dt>Returns: <code>string</code></dt>
+        <dd>An HTML fragment that encodes this docstring.</dd>
+    <dt>Overrides:
+        <a href="epydoc.markup.ParsedDocstring-class.html#to_html">ParsedDocstring.to_html</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="to_latex"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">to_latex</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">docstring_linker</span>,
+        <span class="sig-arg">**options</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.epytext-pysrc.html#ParsedEpytextDocstring.to_latex">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Translate this docstring to LaTeX.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>docstring_linker</code></strong> - A LaTeX translator for crossreference links into and out of the 
+          docstring.</li>
+        <li><strong class="pname"><code>options</code></strong> - Any extra options for the output.  Unknown options are ignored.</li>
+    </ul></dd>
+    <dt>Returns: <code>string</code></dt>
+        <dd>A LaTeX fragment that encodes this docstring.</dd>
+    <dt>Overrides:
+        <a href="epydoc.markup.ParsedDocstring-class.html#to_latex">ParsedDocstring.to_latex</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="to_plaintext"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">to_plaintext</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">docstring_linker</span>,
+        <span class="sig-arg">**options</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.epytext-pysrc.html#ParsedEpytextDocstring.to_plaintext">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_to_plaintext_4-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_to_plaintext_4-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_to_plaintext_4" name="call_graph_for_to_plaintext_4">
+<area shape="rect" href="epydoc.docstringparser-module.html#_descr_to_docstring_field" title="docstringparser._descr_to_docstring_field()" alt="" coords="76,6,423,38" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#to_plaintext" title="to_plaintext()" alt="" coords="541,230,664,262" />
+<area shape="rect" href="epydoc.docstringparser-module.html#_descr_to_identifiers" title="docstringparser._descr_to_identifiers()" alt="" coords="95,62,404,94" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_operation_arg" title="docwriter.dotgraph.DotGraphUmlClassNode._operation_arg()" alt="" coords="7,118,492,150" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_summary" title="docwriter.dotgraph.DotGraphUmlClassNode._summary()" alt="" coords="24,174,475,206" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_type_descr" title="docwriter.dotgraph.DotGraphUmlClassNode._type_descr()" alt="" coords="17,230,481,262" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_term_index_to_anchor" title="docwriter.html.HTMLWriter._term_index_to_anchor()" alt="" coords="33,286,465,318" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_terms_from_docstring" title="docwriter.html.HTMLWriter._terms_from_docstring()" alt="" coords="35,342,464,374" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#variable_tooltip" title="docwriter.html.HTMLWriter.variable_tooltip()" alt="" coords="64,398,435,430" />
+<area shape="rect" href="epydoc.markup.ConcatenatedDocstring-class.html#to_plaintext" title="ConcatenatedDocstring.to_plaintext()" alt="" coords="99,454,400,486" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#to_plaintext" title="to_plaintext()" alt="" coords="712,230,835,262" />
+</map>
+  <img src="call_graph_for_to_plaintext_4.gif" alt='' usemap="#call_graph_for_to_plaintext_4" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Translate this docstring to plaintext.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>docstring_linker</code></strong> - A plaintext translator for crossreference links into and out of 
+          the docstring.</li>
+        <li><strong class="pname"><code>options</code></strong> - Any extra options for the output.  Unknown options are ignored.</li>
+    </ul></dd>
+    <dt>Returns: <code>string</code></dt>
+        <dd>A plaintext fragment that encodes this docstring.</dd>
+    <dt>Overrides:
+        <a href="epydoc.markup.ParsedDocstring-class.html#to_plaintext">ParsedDocstring.to_plaintext</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="summary"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">summary</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.epytext-pysrc.html#ParsedEpytextDocstring.summary">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_summary_4-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_summary_4-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_summary_4" name="call_graph_for_summary_4">
+<area shape="rect" href="epydoc.docstringparser-module.html#parse_docstring" title="docstringparser.parse_docstring()" alt="" coords="17,6,289,38" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#summary" title="summary()" alt="" coords="349,90,453,122" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_cvar_field" title="docstringparser.process_cvar_field()" alt="" coords="7,62,300,94" />
+<area shape="rect" href="epydoc.docstringparser-module.html#process_ivar_field" title="docstringparser.process_ivar_field()" alt="" coords="8,118,299,150" />
+<area shape="rect" href="epydoc.docstringparser-module.html#set_var_descr" title="docstringparser.set_var_descr()" alt="" coords="25,174,281,206" />
+<area shape="rect" href="epydoc.markup.epytext.Element-class.html#__init__" title="Element.__init__()" alt="" coords="501,62,664,94" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#__init__" title="__init__()" alt="" coords="535,118,631,150" />
+</map>
+  <img src="call_graph_for_summary_4.gif" alt='' usemap="#call_graph_for_summary_4" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  
+  <dl class="fields">
+    <dt>Returns: (<a href="epydoc.markup.ParsedDocstring-class.html" 
+      class="link">ParsedDocstring</a>, <code>bool</code>)</dt>
+        <dd>A pair consisting of a short summary of this docstring and a 
+          boolean value indicating whether there is further documentation 
+          in addition to the summary. Typically, the summary consists of 
+          the first sentence of the docstring.</dd>
+    <dt>Overrides:
+        <a href="epydoc.markup.ParsedDocstring-class.html#summary">ParsedDocstring.summary</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="split_fields"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">split_fields</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">errors</span>=<span class="sig-default">None</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.epytext-pysrc.html#ParsedEpytextDocstring.split_fields">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_split_fields_3-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_split_fields_3-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_split_fields_3" name="call_graph_for_split_fields_3">
+<area shape="rect" href="epydoc.docstringparser-module.html#parse_docstring" title="docstringparser.parse_docstring()" alt="" coords="6,62,278,94" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#split_fields" title="split_fields()" alt="" coords="326,62,443,94" />
+<area shape="rect" href="epydoc.markup.Field-class.html#__init__" title="Field.__init__()" alt="" coords="503,6,642,38" />
+<area shape="rect" href="epydoc.markup.epytext.Element-class.html#__init__" title="Element.__init__()" alt="" coords="491,62,654,94" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#__init__" title="__init__()" alt="" coords="524,118,620,150" />
+</map>
+  <img src="call_graph_for_split_fields_3.gif" alt='' usemap="#call_graph_for_split_fields_3" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Split this docstring into its body and its fields.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>errors</code></strong> - A list where any errors generated during splitting will be 
+          stored.  If no list is specified, then errors will be ignored.</li>
+    </ul></dd>
+    <dt>Returns: <code>(<a href="epydoc.markup.ParsedDocstring-class.html" 
+      class="link">ParsedDocstring</a>, list of <a 
+      href="epydoc.markup.Field-class.html" class="link">Field</a>)</code></dt>
+        <dd>A tuple <code>(<i class="math">body</i>, <i 
+          class="math">fields</i>)</code>, where <code><i 
+          class="math">body</i></code> is the main body of this docstring, 
+          and <code><i class="math">fields</i></code> is a list of its 
+          fields.  If the resulting body is empty, return <code>None</code>
+          for the body.</dd>
+    <dt>Overrides:
+        <a href="epydoc.markup.ParsedDocstring-class.html#split_fields">ParsedDocstring.split_fields</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="index_terms"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">index_terms</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.epytext-pysrc.html#ParsedEpytextDocstring.index_terms">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_index_terms_3-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_index_terms_3-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_index_terms_3" name="call_graph_for_index_terms_3">
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_terms_from_docstring" title="docwriter.html.HTMLWriter._terms_from_docstring()" alt="" coords="6,6,435,38" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#index_terms" title="index_terms()" alt="" coords="483,34,611,66" />
+<area shape="rect" href="epydoc.markup.ConcatenatedDocstring-class.html#index_terms" title="ConcatenatedDocstring.index_terms()" alt="" coords="68,62,372,94" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#_index_terms" title="_index_terms()" alt="" coords="660,34,796,66" />
+</map>
+  <img src="call_graph_for_index_terms_3.gif" alt='' usemap="#call_graph_for_index_terms_3" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  
+  <dl class="fields">
+    <dt>Returns: <code>list</code> of <code>ParsedDocstring</code></dt>
+        <dd>The list of index terms that are defined in this docstring.  Each
+          of these items will be added to the index page of the 
+          documentation.</dd>
+    <dt>Overrides:
+        <a href="epydoc.markup.ParsedDocstring-class.html#index_terms">ParsedDocstring.index_terms</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== CLASS VARIABLE DETAILS ==================== -->
+<a name="section-ClassVariableDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Class Variable Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-ClassVariableDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="SYMBOL_TO_HTML"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">SYMBOL_TO_HTML</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">-></code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">&rarr;</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string"><-</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">&larr;</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string"><=</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">&le;</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">>=</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">&ge;</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">Alpha</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">&Alpha;</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">Beta</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">&Beta;</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">Chi</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">&Chi;</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">Delta</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">&Delta;</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="SYMBOL_TO_LATEX"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">SYMBOL_TO_LATEX</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">-></code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">\\(\\rightarrow\\)</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string"><-</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">\\(\\leftarrow\\)</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string"><=</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">\\(\\le\\)</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">>=</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">\\(\\ge\\)</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">Alpha</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">\\(\\alpha\\)</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">Beta</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">\\(\\beta\\)</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">Chi</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">\\(\\chi\\)</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">Delta</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">\\(\\Delta\\)</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:08:36 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.markup.epytext.StructuringError-class.html b/doc/api/epydoc.markup.epytext.StructuringError-class.html
new file mode 100644
index 0000000..35e67ae
--- /dev/null
+++ b/doc/api/epydoc.markup.epytext.StructuringError-class.html
@@ -0,0 +1,202 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.markup.epytext.StructuringError</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.markup-module.html">Package markup</a> ::
+        <a href="epydoc.markup.epytext-module.html">Module epytext</a> ::
+        Class StructuringError
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.markup.epytext.StructuringError-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class StructuringError</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.markup.epytext-pysrc.html#StructuringError">source code</a></span></p>
+<center>
+<center>  <map id="uml_class_diagram_for_epydoc_m_11" name="uml_class_diagram_for_epydoc_m_11">
+<area shape="rect" href="epydoc.markup.ParseError-class.html#__init__" title="epydoc.markup.ParseError.__init__" alt="" coords="17,111,300,129" />
+<area shape="rect" href="epydoc.markup.ParseError-class.html#is_fatal" title="Returns:  true if this is a fatal error." alt="" coords="17,129,300,148" />
+<area shape="rect" href="epydoc.markup.ParseError-class.html#linenum" title="Returns:  The line number on which the error occured (including any offset)." alt="" coords="17,148,300,167" />
+<area shape="rect" href="epydoc.markup.ParseError-class.html#set_linenum_offset" title="Set the line number offset for this error." alt="" coords="17,167,300,185" />
+<area shape="rect" href="epydoc.markup.ParseError-class.html#descr" title="epydoc.markup.ParseError.descr" alt="" coords="17,185,300,204" />
+<area shape="rect" href="epydoc.markup.ParseError-class.html#__str__" title="Return a string representation of this ParseError." alt="" coords="17,204,300,223" />
+<area shape="rect" href="epydoc.markup.ParseError-class.html#__repr__" title="Return the formal representation of this ParseError." alt="" coords="17,223,300,241" />
+<area shape="rect" href="epydoc.markup.ParseError-class.html#__cmp__" title="Compare two ParseErrors, based on their line number." alt="" coords="17,241,300,260" />
+<area shape="rect" href="epydoc.markup.ParseError-class.html" title="The base class for errors generated while parsing docstrings." alt="" coords="5,80,312,267" />
+<area shape="rect" href="epydoc.markup.epytext.StructuringError-class.html" title="An error generated while structuring a formatted documentation string." alt="" coords="99,285,219,328" />
+<area shape="rect" href="javascript:void(0);" title="exceptions.Exception.__getitem__" alt="" coords="95,36,223,55" />
+<area shape="rect" href="javascript:void(0);" title="Common base class for all exceptions." alt="" coords="83,5,235,61" />
+</map>
+  <img src="uml_class_diagram_for_epydoc_m_11.gif" alt='' usemap="#uml_class_diagram_for_epydoc_m_11" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<p>An error generated while structuring a formatted documentation 
+  string.</p>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.markup.ParseError-class.html">ParseError</a></code></b>:
+      <code><a href="epydoc.markup.ParseError-class.html#__cmp__">__cmp__</a></code>,
+      <code><a href="epydoc.markup.ParseError-class.html#__init__">__init__</a></code>,
+      <code><a href="epydoc.markup.ParseError-class.html#__repr__">__repr__</a></code>,
+      <code><a href="epydoc.markup.ParseError-class.html#__str__">__str__</a></code>,
+      <code><a href="epydoc.markup.ParseError-class.html#descr">descr</a></code>,
+      <code><a href="epydoc.markup.ParseError-class.html#is_fatal">is_fatal</a></code>,
+      <code><a href="epydoc.markup.ParseError-class.html#linenum">linenum</a></code>,
+      <code><a href="epydoc.markup.ParseError-class.html#set_linenum_offset">set_linenum_offset</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.Exception</code></b>:
+      <code>__getitem__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== INSTANCE VARIABLES ==================== -->
+<a name="section-InstanceVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <div class="private">    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.markup.ParseError-class.html">ParseError</a></code></b> (private):
+      <code><a href="epydoc.markup.ParseError-class.html#_descr" onclick="show_private();">_descr</a></code>,
+      <code><a href="epydoc.markup.ParseError-class.html#_fatal" onclick="show_private();">_fatal</a></code>,
+      <code><a href="epydoc.markup.ParseError-class.html#_linenum" onclick="show_private();">_linenum</a></code>,
+      <code><a href="epydoc.markup.ParseError-class.html#_offset" onclick="show_private();">_offset</a></code>
+      </p></div>
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:08:36 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.markup.epytext.Token-class.html b/doc/api/epydoc.markup.epytext.Token-class.html
new file mode 100644
index 0000000..dfd2dab
--- /dev/null
+++ b/doc/api/epydoc.markup.epytext.Token-class.html
@@ -0,0 +1,647 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.markup.epytext.Token</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.markup-module.html">Package markup</a> ::
+        <a href="epydoc.markup.epytext-module.html">Module epytext</a> ::
+        Class Token
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.markup.epytext.Token-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Token</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.markup.epytext-pysrc.html#Token">source code</a></span></p>
+<p><code>Token</code>s are an intermediate data structure used while 
+  constructing the structuring DOM tree for a formatted docstring. There 
+  are five types of <code>Token</code>:</p>
+  <ul>
+    <li>
+      Paragraphs
+    </li>
+    <li>
+      Literal blocks
+    </li>
+    <li>
+      Doctest blocks
+    </li>
+    <li>
+      Headings
+    </li>
+    <li>
+      Bullets
+    </li>
+  </ul>
+  <p>The text contained in each <code>Token</code> is stored in the 
+  <code>contents</code> variable.  The string in this variable has been 
+  normalized.  For paragraphs, this means that it has been converted into a
+  single line of text, with newline/indentation replaced by single spaces.
+  For literal blocks and doctest blocks, this means that the appropriate 
+  amount of leading whitespace has been removed from each line.</p>
+  <p>Each <code>Token</code> has an indentation level associated with it, 
+  stored in the <code>indent</code> variable.  This indentation level is 
+  used by the structuring procedure to assemble hierarchical blocks.</p>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.epytext.Token-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">tag</span>,
+        <span class="summary-sig-arg">startline</span>,
+        <span class="summary-sig-arg">contents</span>,
+        <span class="summary-sig-arg">indent</span>,
+        <span class="summary-sig-arg">level</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">inline</span>=<span class="summary-sig-default">False</span>)</span><br />
+      Create a new <code>Token</code>.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.epytext-pysrc.html#Token.__init__">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for___init___36-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for___init___36-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for___init___36" name="call_graph_for___init___36">
+<area shape="rect" href="epydoc.markup.epytext.Token-class.html#__init__" title="__init__()" alt="" coords="225,90,321,122" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#_tokenize_doctest" title="_tokenize_doctest()" alt="" coords="5,6,176,38" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#_tokenize_listart" title="_tokenize_listart()" alt="" coords="11,62,171,94" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#_tokenize_literal" title="_tokenize_literal()" alt="" coords="11,118,171,150" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#_tokenize_para" title="_tokenize_para()" alt="" coords="16,174,165,206" />
+</map>
+  <img src="call_graph_for___init___36.gif" alt='' usemap="#call_graph_for___init___36" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>string</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.epytext.Token-class.html#__repr__" class="summary-sig-name">__repr__</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Returns:
+      the formal representation of this <code>Token</code>.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.epytext-pysrc.html#Token.__repr__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><a href="epydoc.markup.epytext.Element-class.html" 
+      class="link">Element</a></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.epytext.Token-class.html#to_dom" class="summary-sig-name">to_dom</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">doc</span>)</span><br />
+      Returns:
+      a DOM representation of this <code>Token</code>.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.epytext-pysrc.html#Token.to_dom">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_to_dom-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_to_dom-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_to_dom" name="call_graph_for_to_dom">
+<area shape="rect" href="epydoc.markup.epytext.Element-class.html#__init__" title="Element.__init__()" alt="" coords="267,6,430,38" />
+<area shape="rect" href="epydoc.markup.epytext.Token-class.html#to_dom" title="to_dom()" alt="" coords="128,6,219,38" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#parse" title="parse()" alt="" coords="6,6,80,38" />
+</map>
+  <img src="call_graph_for_to_dom.gif" alt='' usemap="#call_graph_for_to_dom" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Class Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-ClassVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>string</code></span>
+    </td><td class="summary">
+        <a name="PARA"></a><span class="summary-name">PARA</span> = <code title="'para'"><code class="variable-quote">'</code><code class="variable-string">para</code><code class="variable-quote">'</code></code><br />
+      The <code>tag</code> value for paragraph <code>Token</code>s.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>string</code></span>
+    </td><td class="summary">
+        <a name="LBLOCK"></a><span class="summary-name">LBLOCK</span> = <code title="'literalblock'"><code class="variable-quote">'</code><code class="variable-string">literalblock</code><code class="variable-quote">'</code></code><br />
+      The <code>tag</code> value for literal <code>Token</code>s.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>string</code></span>
+    </td><td class="summary">
+        <a name="DTBLOCK"></a><span class="summary-name">DTBLOCK</span> = <code title="'doctestblock'"><code class="variable-quote">'</code><code class="variable-string">doctestblock</code><code class="variable-quote">'</code></code><br />
+      The <code>tag</code> value for doctest <code>Token</code>s.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>string</code></span>
+    </td><td class="summary">
+        <a name="HEADING"></a><span class="summary-name">HEADING</span> = <code title="'heading'"><code class="variable-quote">'</code><code class="variable-string">heading</code><code class="variable-quote">'</code></code><br />
+      The <code>tag</code> value for heading <code>Token</code>s.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>string</code></span>
+    </td><td class="summary">
+        <a href="epydoc.markup.epytext.Token-class.html#BULLET" class="summary-name">BULLET</a> = <code title="'bullet'"><code class="variable-quote">'</code><code class="variable-string">bullet</code><code class="variable-quote">'</code></code><br />
+      The <code>tag</code> value for bullet <code>Token</code>s.
+    </td>
+  </tr>
+</table>
+<!-- ==================== INSTANCE VARIABLES ==================== -->
+<a name="section-InstanceVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>string</code></span>
+    </td><td class="summary">
+        <a name="contents"></a><span class="summary-name">contents</span><br />
+      The normalized text contained in this <code>Token</code>.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>int</code> or <code>None</code></span>
+    </td><td class="summary">
+        <a href="epydoc.markup.epytext.Token-class.html#indent" class="summary-name">indent</a><br />
+      The indentation level of this <code>Token</code> (in number of 
+      leading spaces).
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>bool</code></span>
+    </td><td class="summary">
+        <a href="epydoc.markup.epytext.Token-class.html#inline" class="summary-name">inline</a><br />
+      If True, the element is an inline level element, comparable to an 
+      HTML <code><span></code> tag.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>int</code> or <code>None</code></span>
+    </td><td class="summary">
+        <a href="epydoc.markup.epytext.Token-class.html#level" class="summary-name">level</a><br />
+      The heading-level of this <code>Token</code> if it is a heading; 
+      <code>None</code>, otherwise.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>int</code></span>
+    </td><td class="summary">
+        <a href="epydoc.markup.epytext.Token-class.html#startline" class="summary-name">startline</a><br />
+      The line on which this <code>Token</code> begins.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>string</code></span>
+    </td><td class="summary">
+        <a href="epydoc.markup.epytext.Token-class.html#tag" class="summary-name">tag</a><br />
+      This <code>Token</code>'s type.
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Method Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-MethodDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">tag</span>,
+        <span class="sig-arg">startline</span>,
+        <span class="sig-arg">contents</span>,
+        <span class="sig-arg">indent</span>,
+        <span class="sig-arg">level</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">inline</span>=<span class="sig-default">False</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.epytext-pysrc.html#Token.__init__">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for___init___36-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for___init___36-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for___init___36" name="call_graph_for___init___36">
+<area shape="rect" href="epydoc.markup.epytext.Token-class.html#__init__" title="__init__()" alt="" coords="225,90,321,122" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#_tokenize_doctest" title="_tokenize_doctest()" alt="" coords="5,6,176,38" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#_tokenize_listart" title="_tokenize_listart()" alt="" coords="11,62,171,94" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#_tokenize_literal" title="_tokenize_literal()" alt="" coords="11,118,171,150" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#_tokenize_para" title="_tokenize_para()" alt="" coords="16,174,165,206" />
+</map>
+  <img src="call_graph_for___init___36.gif" alt='' usemap="#call_graph_for___init___36" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Create a new <code>Token</code>.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>tag</code></strong> (<code>string</code>) - The type of the new <code>Token</code>.</li>
+        <li><strong class="pname"><code>startline</code></strong> (<code>int</code>) - The line on which the new <code>Token</code> begins.</li>
+        <li><strong class="pname"><code>contents</code></strong> (<code>string</code>) - The normalized contents of the new <code>Token</code>.</li>
+        <li><strong class="pname"><code>indent</code></strong> (<code>int</code> or <code>None</code>) - The indentation of the new <code>Token</code> (in number of 
+          leading spaces).  A value of <code>None</code> indicates an 
+          unknown indentation.</li>
+        <li><strong class="pname"><code>level</code></strong> (<code>int</code> or <code>None</code>) - The heading-level of this <code>Token</code> if it is a heading; 
+          <code>None</code>, otherwise.</li>
+        <li><strong class="pname"><code>inline</code></strong> (<code>bool</code>) - Is this <code>Token</code> inline as a 
+          <code><span></code>?.</li>
+    </ul></dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="__repr__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__repr__</span>(<span class="sig-arg">self</span>)</span>
+    <br /><em class="fname">(Representation operator)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.epytext-pysrc.html#Token.__repr__">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  
+  <dl class="fields">
+    <dt>Returns: <code>string</code></dt>
+        <dd>the formal representation of this <code>Token</code>. 
+          <code>Token</code>s have formal representaitons of the form:
+<pre class="literalblock">
+   <Token: para at line 12>
+</pre></dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="to_dom"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">to_dom</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">doc</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.epytext-pysrc.html#Token.to_dom">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_to_dom-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_to_dom-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_to_dom" name="call_graph_for_to_dom">
+<area shape="rect" href="epydoc.markup.epytext.Element-class.html#__init__" title="Element.__init__()" alt="" coords="267,6,430,38" />
+<area shape="rect" href="epydoc.markup.epytext.Token-class.html#to_dom" title="to_dom()" alt="" coords="128,6,219,38" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#parse" title="parse()" alt="" coords="6,6,80,38" />
+</map>
+  <img src="call_graph_for_to_dom.gif" alt='' usemap="#call_graph_for_to_dom" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  
+  <dl class="fields">
+    <dt>Returns: <a href="epydoc.markup.epytext.Element-class.html" 
+      class="link">Element</a></dt>
+        <dd>a DOM representation of this <code>Token</code>.</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== CLASS VARIABLE DETAILS ==================== -->
+<a name="section-ClassVariableDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Class Variable Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-ClassVariableDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="BULLET"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">BULLET</h3>
+  The <code>tag</code> value for bullet <code>Token</code>s.  This 
+  <code>tag</code> value is also used for field tag <code>Token</code>s, 
+  since fields function syntactically the same as list items.
+  <dl class="fields">
+    <dt>Type:</dt>
+      <dd><code>string</code></dd>
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">bullet</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== INSTANCE VARIABLE DETAILS ==================== -->
+<a name="section-InstanceVariableDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Variable Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceVariableDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="indent"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">indent</h3>
+  The indentation level of this <code>Token</code> (in number of leading 
+  spaces).  A value of <code>None</code> indicates an unknown indentation; 
+  this is used for list items and fields that begin with one-line 
+  paragraphs.
+  <dl class="fields">
+    <dt>Type:</dt>
+      <dd><code>int</code> or <code>None</code></dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="inline"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">inline</h3>
+  If True, the element is an inline level element, comparable to an HTML 
+  <code><span></code> tag. Else, it is a block level element, 
+  comparable to an HTML <code><div></code>.
+  <dl class="fields">
+    <dt>Type:</dt>
+      <dd><code>bool</code></dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="level"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">level</h3>
+  The heading-level of this <code>Token</code> if it is a heading; 
+  <code>None</code>, otherwise.  Valid heading levels are 0, 1, and 2.
+  <dl class="fields">
+    <dt>Type:</dt>
+      <dd><code>int</code> or <code>None</code></dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="startline"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">startline</h3>
+  The line on which this <code>Token</code> begins.  This line number is 
+  only used for issuing errors.
+  <dl class="fields">
+    <dt>Type:</dt>
+      <dd><code>int</code></dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="tag"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">tag</h3>
+  This <code>Token</code>'s type.  Possible values are 
+  <code>Token.PARA</code> (paragraph), <code>Token.LBLOCK</code> (literal 
+  block), <code>Token.DTBLOCK</code> (doctest block), 
+  <code>Token.HEADINGC</code>, and <code>Token.BULLETC</code>.
+  <dl class="fields">
+    <dt>Type:</dt>
+      <dd><code>string</code></dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:08:36 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.markup.epytext.TokenizationError-class.html b/doc/api/epydoc.markup.epytext.TokenizationError-class.html
new file mode 100644
index 0000000..67d499c
--- /dev/null
+++ b/doc/api/epydoc.markup.epytext.TokenizationError-class.html
@@ -0,0 +1,202 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.markup.epytext.TokenizationError</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.markup-module.html">Package markup</a> ::
+        <a href="epydoc.markup.epytext-module.html">Module epytext</a> ::
+        Class TokenizationError
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.markup.epytext.TokenizationError-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class TokenizationError</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.markup.epytext-pysrc.html#TokenizationError">source code</a></span></p>
+<center>
+<center>  <map id="uml_class_diagram_for_epydoc_m_12" name="uml_class_diagram_for_epydoc_m_12">
+<area shape="rect" href="epydoc.markup.ParseError-class.html#__init__" title="epydoc.markup.ParseError.__init__" alt="" coords="17,111,300,129" />
+<area shape="rect" href="epydoc.markup.ParseError-class.html#is_fatal" title="Returns:  true if this is a fatal error." alt="" coords="17,129,300,148" />
+<area shape="rect" href="epydoc.markup.ParseError-class.html#linenum" title="Returns:  The line number on which the error occured (including any offset)." alt="" coords="17,148,300,167" />
+<area shape="rect" href="epydoc.markup.ParseError-class.html#set_linenum_offset" title="Set the line number offset for this error." alt="" coords="17,167,300,185" />
+<area shape="rect" href="epydoc.markup.ParseError-class.html#descr" title="epydoc.markup.ParseError.descr" alt="" coords="17,185,300,204" />
+<area shape="rect" href="epydoc.markup.ParseError-class.html#__str__" title="Return a string representation of this ParseError." alt="" coords="17,204,300,223" />
+<area shape="rect" href="epydoc.markup.ParseError-class.html#__repr__" title="Return the formal representation of this ParseError." alt="" coords="17,223,300,241" />
+<area shape="rect" href="epydoc.markup.ParseError-class.html#__cmp__" title="Compare two ParseErrors, based on their line number." alt="" coords="17,241,300,260" />
+<area shape="rect" href="epydoc.markup.ParseError-class.html" title="The base class for errors generated while parsing docstrings." alt="" coords="5,80,312,267" />
+<area shape="rect" href="epydoc.markup.epytext.TokenizationError-class.html" title="An error generated while tokenizing a formatted documentation string." alt="" coords="93,285,224,328" />
+<area shape="rect" href="javascript:void(0);" title="exceptions.Exception.__getitem__" alt="" coords="95,36,223,55" />
+<area shape="rect" href="javascript:void(0);" title="Common base class for all exceptions." alt="" coords="83,5,235,61" />
+</map>
+  <img src="uml_class_diagram_for_epydoc_m_12.gif" alt='' usemap="#uml_class_diagram_for_epydoc_m_12" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<p>An error generated while tokenizing a formatted documentation 
+  string.</p>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.markup.ParseError-class.html">ParseError</a></code></b>:
+      <code><a href="epydoc.markup.ParseError-class.html#__cmp__">__cmp__</a></code>,
+      <code><a href="epydoc.markup.ParseError-class.html#__init__">__init__</a></code>,
+      <code><a href="epydoc.markup.ParseError-class.html#__repr__">__repr__</a></code>,
+      <code><a href="epydoc.markup.ParseError-class.html#__str__">__str__</a></code>,
+      <code><a href="epydoc.markup.ParseError-class.html#descr">descr</a></code>,
+      <code><a href="epydoc.markup.ParseError-class.html#is_fatal">is_fatal</a></code>,
+      <code><a href="epydoc.markup.ParseError-class.html#linenum">linenum</a></code>,
+      <code><a href="epydoc.markup.ParseError-class.html#set_linenum_offset">set_linenum_offset</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.Exception</code></b>:
+      <code>__getitem__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== INSTANCE VARIABLES ==================== -->
+<a name="section-InstanceVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <div class="private">    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.markup.ParseError-class.html">ParseError</a></code></b> (private):
+      <code><a href="epydoc.markup.ParseError-class.html#_descr" onclick="show_private();">_descr</a></code>,
+      <code><a href="epydoc.markup.ParseError-class.html#_fatal" onclick="show_private();">_fatal</a></code>,
+      <code><a href="epydoc.markup.ParseError-class.html#_linenum" onclick="show_private();">_linenum</a></code>,
+      <code><a href="epydoc.markup.ParseError-class.html#_offset" onclick="show_private();">_offset</a></code>
+      </p></div>
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:08:37 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.markup.javadoc-module.html b/doc/api/epydoc.markup.javadoc-module.html
new file mode 100644
index 0000000..a243401
--- /dev/null
+++ b/doc/api/epydoc.markup.javadoc-module.html
@@ -0,0 +1,287 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.markup.javadoc</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.markup-module.html">Package markup</a> ::
+        Module javadoc
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.markup.javadoc-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module javadoc</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.markup.javadoc-pysrc.html">source code</a></span></p>
+<p>Epydoc parser for <a href="http://java.sun.com/j2se/javadoc/" 
+  target="_top">Javadoc</a> docstrings.  Javadoc is an HTML-based markup 
+  language that was developed for documenting Java APIs with inline 
+  comments.  It consists of raw HTML, augmented by Javadoc tags.  There are
+  two types of Javadoc tag:</p>
+  <ul>
+    <li>
+      <a name="index-Javadoc_block_tags"></a><i class="indexterm">Javadoc 
+      block tags</i> correspond to Epydoc fields.  They are marked by 
+      starting a line with a string of the form "<code>@<i 
+      class="math">tag</i> [<i class="math">arg</i>]</code>", where 
+      <code><i class="math">tag</i></code> indicates the type of block, and
+      <code><i class="math">arg</i></code> is an optional argument.  (For 
+      fields that take arguments, Javadoc assumes that the single word 
+      immediately following the tag is an argument; multi-word arguments 
+      cannot be used with javadoc.)
+    </li>
+    <li>
+      <a name="index-inline_Javadoc_tags"></a><i class="indexterm">inline 
+      Javadoc tags</i> are used for inline markup.  In particular, epydoc 
+      uses them for crossreference links between documentation. Inline tags
+      may appear anywhere in the text, and have the form "<code>{@<i 
+      class="math">tag</i> <i class="math">[args...]</i>}</code>", 
+      where <code><i class="math">tag</i></code> indicates the type of 
+      inline markup, and <code><i class="math">args</i></code> are optional
+      arguments.
+    </li>
+  </ul>
+  <p>Epydoc supports all Javadoc tags, <i>except</i>:</p>
+  <ul>
+    <li>
+      <code>{@docRoot}</code>, which gives the (relative) URL of the 
+      generated documentation's root.
+    </li>
+    <li>
+      <code>{@inheritDoc}</code>, which copies the documentation of the 
+      nearest overridden object.  This can be used to combine the 
+      documentation of the overridden object with the documentation of the 
+      overridding object.
+    </li>
+    <li>
+      <code>@serial</code>, <code>@serialField</code>, and 
+      <code>@serialData</code> which describe the serialization (pickling) 
+      of an object.
+    </li>
+    <li>
+      <code>{@value}</code>, which copies the value of a constant.
+    </li>
+  </ul>
+
+<hr />
+<div class="fields">      <p><strong>Warning:</strong>
+        Epydoc only supports HTML output for Javadoc docstrings.
+      </p>
+</div><!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Classes</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Classes"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.markup.javadoc.ParsedJavadocDocstring-class.html" class="summary-name">ParsedJavadocDocstring</a><br />
+      An encoded version of a Javadoc docstring.
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTIONS ==================== -->
+<a name="section-Functions"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Functions</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Functions"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><a href="epydoc.markup.ParsedDocstring-class.html" 
+      class="link">ParsedDocstring</a></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.javadoc-module.html#parse_docstring" class="summary-sig-name">parse_docstring</a>(<span class="summary-sig-arg">docstring</span>,
+        <span class="summary-sig-arg">errors</span>,
+        <span class="summary-sig-arg">**options</span>)</span><br />
+      Parse the given docstring, which is formatted using Javadoc; and 
+      return a <code>ParsedDocstring</code> representation of its contents.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.javadoc-pysrc.html#parse_docstring">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTION DETAILS ==================== -->
+<a name="section-FunctionDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Function Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-FunctionDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="parse_docstring"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">parse_docstring</span>(<span class="sig-arg">docstring</span>,
+        <span class="sig-arg">errors</span>,
+        <span class="sig-arg">**options</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.javadoc-pysrc.html#parse_docstring">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Parse the given docstring, which is formatted using Javadoc; and 
+  return a <code>ParsedDocstring</code> representation of its contents.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>docstring</code></strong> (<code>string</code>) - The docstring to parse</li>
+        <li><strong class="pname"><code>errors</code></strong> (<code>list</code> of <a 
+          href="epydoc.markup.ParseError-class.html" 
+          class="link">ParseError</a>) - A list where any errors generated during parsing will be stored.</li>
+        <li><strong class="pname"><code>options</code></strong> - Extra options.  Unknown options are ignored. Currently, no extra 
+          options are defined.</li>
+    </ul></dd>
+    <dt>Returns: <a href="epydoc.markup.ParsedDocstring-class.html" 
+      class="link">ParsedDocstring</a></dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:06:45 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.markup.javadoc-pysrc.html b/doc/api/epydoc.markup.javadoc-pysrc.html
new file mode 100644
index 0000000..a2e1c4b
--- /dev/null
+++ b/doc/api/epydoc.markup.javadoc-pysrc.html
@@ -0,0 +1,415 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.markup.javadoc</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.markup-module.html">Package markup</a> ::
+        Module javadoc
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.markup.javadoc-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="epydoc.markup.javadoc-module.html">Module epydoc.markup.javadoc</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno">  1</tt>  <tt class="py-line"><tt class="py-comment">#</tt> </tt>
+<a name="L2"></a><tt class="py-lineno">  2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># javadoc.py: javadoc docstring parsing</tt> </tt>
+<a name="L3"></a><tt class="py-lineno">  3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Edward Loper</tt> </tt>
+<a name="L4"></a><tt class="py-lineno">  4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L5"></a><tt class="py-lineno">  5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Created [07/03/03 12:37 PM]</tt> </tt>
+<a name="L6"></a><tt class="py-lineno">  6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># $Id: javadoc.py 1574 2007-03-07 02:55:14Z dvarrazzo $</tt> </tt>
+<a name="L7"></a><tt class="py-lineno">  7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L8"></a><tt class="py-lineno">  8</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L9"></a><tt class="py-lineno">  9</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L10"></a><tt class="py-lineno"> 10</tt>  <tt class="py-line"><tt class="py-docstring">Epydoc parser for U{Javadoc<http://java.sun.com/j2se/javadoc/>}</tt> </tt>
+<a name="L11"></a><tt class="py-lineno"> 11</tt>  <tt class="py-line"><tt class="py-docstring">docstrings.  Javadoc is an HTML-based markup language that was</tt> </tt>
+<a name="L12"></a><tt class="py-lineno"> 12</tt>  <tt class="py-line"><tt class="py-docstring">developed for documenting Java APIs with inline comments.  It consists</tt> </tt>
+<a name="L13"></a><tt class="py-lineno"> 13</tt>  <tt class="py-line"><tt class="py-docstring">of raw HTML, augmented by Javadoc tags.  There are two types of</tt> </tt>
+<a name="L14"></a><tt class="py-lineno"> 14</tt>  <tt class="py-line"><tt class="py-docstring">Javadoc tag:</tt> </tt>
+<a name="L15"></a><tt class="py-lineno"> 15</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L16"></a><tt class="py-lineno"> 16</tt>  <tt class="py-line"><tt class="py-docstring">  - X{Javadoc block tags} correspond to Epydoc fields.  They are</tt> </tt>
+<a name="L17"></a><tt class="py-lineno"> 17</tt>  <tt class="py-line"><tt class="py-docstring">    marked by starting a line with a string of the form \"C{@M{tag}</tt> </tt>
+<a name="L18"></a><tt class="py-lineno"> 18</tt>  <tt class="py-line"><tt class="py-docstring">    [M{arg}]}\", where C{M{tag}} indicates the type of block, and</tt> </tt>
+<a name="L19"></a><tt class="py-lineno"> 19</tt>  <tt class="py-line"><tt class="py-docstring">    C{M{arg}} is an optional argument.  (For fields that take</tt> </tt>
+<a name="L20"></a><tt class="py-lineno"> 20</tt>  <tt class="py-line"><tt class="py-docstring">    arguments, Javadoc assumes that the single word immediately</tt> </tt>
+<a name="L21"></a><tt class="py-lineno"> 21</tt>  <tt class="py-line"><tt class="py-docstring">    following the tag is an argument; multi-word arguments cannot be</tt> </tt>
+<a name="L22"></a><tt class="py-lineno"> 22</tt>  <tt class="py-line"><tt class="py-docstring">    used with javadoc.)  </tt> </tt>
+<a name="L23"></a><tt class="py-lineno"> 23</tt>  <tt class="py-line"><tt class="py-docstring">  </tt> </tt>
+<a name="L24"></a><tt class="py-lineno"> 24</tt>  <tt class="py-line"><tt class="py-docstring">  - X{inline Javadoc tags} are used for inline markup.  In particular,</tt> </tt>
+<a name="L25"></a><tt class="py-lineno"> 25</tt>  <tt class="py-line"><tt class="py-docstring">    epydoc uses them for crossreference links between documentation.</tt> </tt>
+<a name="L26"></a><tt class="py-lineno"> 26</tt>  <tt class="py-line"><tt class="py-docstring">    Inline tags may appear anywhere in the text, and have the form</tt> </tt>
+<a name="L27"></a><tt class="py-lineno"> 27</tt>  <tt class="py-line"><tt class="py-docstring">    \"C{{@M{tag} M{[args...]}}}\", where C{M{tag}} indicates the</tt> </tt>
+<a name="L28"></a><tt class="py-lineno"> 28</tt>  <tt class="py-line"><tt class="py-docstring">    type of inline markup, and C{M{args}} are optional arguments.</tt> </tt>
+<a name="L29"></a><tt class="py-lineno"> 29</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L30"></a><tt class="py-lineno"> 30</tt>  <tt class="py-line"><tt class="py-docstring">Epydoc supports all Javadoc tags, I{except}:</tt> </tt>
+<a name="L31"></a><tt class="py-lineno"> 31</tt>  <tt class="py-line"><tt class="py-docstring">  - C{{@docRoot}}, which gives the (relative) URL of the generated</tt> </tt>
+<a name="L32"></a><tt class="py-lineno"> 32</tt>  <tt class="py-line"><tt class="py-docstring">    documentation's root.</tt> </tt>
+<a name="L33"></a><tt class="py-lineno"> 33</tt>  <tt class="py-line"><tt class="py-docstring">  - C{{@inheritDoc}}, which copies the documentation of the nearest</tt> </tt>
+<a name="L34"></a><tt class="py-lineno"> 34</tt>  <tt class="py-line"><tt class="py-docstring">    overridden object.  This can be used to combine the documentation</tt> </tt>
+<a name="L35"></a><tt class="py-lineno"> 35</tt>  <tt class="py-line"><tt class="py-docstring">    of the overridden object with the documentation of the</tt> </tt>
+<a name="L36"></a><tt class="py-lineno"> 36</tt>  <tt class="py-line"><tt class="py-docstring">    overridding object.</tt> </tt>
+<a name="L37"></a><tt class="py-lineno"> 37</tt>  <tt class="py-line"><tt class="py-docstring">  - C{@serial}, C{@serialField}, and C{@serialData} which describe the</tt> </tt>
+<a name="L38"></a><tt class="py-lineno"> 38</tt>  <tt class="py-line"><tt class="py-docstring">    serialization (pickling) of an object.</tt> </tt>
+<a name="L39"></a><tt class="py-lineno"> 39</tt>  <tt class="py-line"><tt class="py-docstring">  - C{{@value}}, which copies the value of a constant.</tt> </tt>
+<a name="L40"></a><tt class="py-lineno"> 40</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L41"></a><tt class="py-lineno"> 41</tt>  <tt class="py-line"><tt class="py-docstring">@warning: Epydoc only supports HTML output for Javadoc docstrings.</tt> </tt>
+<a name="L42"></a><tt class="py-lineno"> 42</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L43"></a><tt class="py-lineno"> 43</tt>  <tt class="py-line"><tt class="py-name">__docformat__</tt> <tt class="py-op">=</tt> <tt class="py-string">'epytext en'</tt> </tt>
+<a name="L44"></a><tt class="py-lineno"> 44</tt>  <tt class="py-line"> </tt>
+<a name="L45"></a><tt class="py-lineno"> 45</tt>  <tt class="py-line"><tt class="py-comment"># Imports</tt> </tt>
+<a name="L46"></a><tt class="py-lineno"> 46</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">import</tt> <tt class="py-name">re</tt> </tt>
+<a name="L47"></a><tt class="py-lineno"> 47</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">xml</tt><tt class="py-op">.</tt><tt class="py-name">dom</tt><tt class="py-op">.</tt><tt class="py-name">minidom</tt> <tt class="py-keyword">import</tt> <tt class="py-op">*</tt> </tt>
+<a name="L48"></a><tt class="py-lineno"> 48</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-0" class="py-name" targets="Package epydoc=epydoc-module.html"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-0', 'epydoc', 'link-0');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-1" class="py-name" targets="Package epydoc.markup=epydoc.markup-module.html,Method epydoc.markup.doctest.DoctestColorizer.markup()=epydoc.markup.doctest.DoctestCo [...]
+epydoc.markup.doctest.DoctestColorizer.markup
+epydoc.markup.doctest.HTMLDoctestColorizer.markup
+epydoc.markup.doctest.LaTeXDoctestColorizer.markup
+epydoc.markup.doctest.XMLDoctestColorizer.markup" class="py-name" href="#" onclick="return doclink('link-1', 'markup', 'link-1');">markup</a></tt> <tt class="py-keyword">import</tt> <tt class="py-op">*</tt> </tt>
+<a name="L49"></a><tt class="py-lineno"> 49</tt>  <tt class="py-line"> </tt>
+<a name="parse_docstring"></a><div id="parse_docstring-def"><a name="L50"></a><tt class="py-lineno"> 50</tt> <a class="py-toggle" href="#" id="parse_docstring-toggle" onclick="return toggle('parse_docstring');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.javadoc-module.html#parse_docstring">parse_docstring</a><tt class="py-op">(</tt><tt class="py-param">docstring</tt><tt class="py-op">,</tt> <tt class="py-param">errors</tt><tt class [...]
+</div><div id="parse_docstring-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="parse_docstring-expanded"><a name="L51"></a><tt class="py-lineno"> 51</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L52"></a><tt class="py-lineno"> 52</tt>  <tt class="py-line"><tt class="py-docstring">    Parse the given docstring, which is formatted using Javadoc; and</tt> </tt>
+<a name="L53"></a><tt class="py-lineno"> 53</tt>  <tt class="py-line"><tt class="py-docstring">    return a C{ParsedDocstring} representation of its contents.</tt> </tt>
+<a name="L54"></a><tt class="py-lineno"> 54</tt>  <tt class="py-line"><tt class="py-docstring">    @param docstring: The docstring to parse</tt> </tt>
+<a name="L55"></a><tt class="py-lineno"> 55</tt>  <tt class="py-line"><tt class="py-docstring">    @type docstring: C{string}</tt> </tt>
+<a name="L56"></a><tt class="py-lineno"> 56</tt>  <tt class="py-line"><tt class="py-docstring">    @param errors: A list where any errors generated during parsing</tt> </tt>
+<a name="L57"></a><tt class="py-lineno"> 57</tt>  <tt class="py-line"><tt class="py-docstring">        will be stored.</tt> </tt>
+<a name="L58"></a><tt class="py-lineno"> 58</tt>  <tt class="py-line"><tt class="py-docstring">    @type errors: C{list} of L{ParseError}</tt> </tt>
+<a name="L59"></a><tt class="py-lineno"> 59</tt>  <tt class="py-line"><tt class="py-docstring">    @param options: Extra options.  Unknown options are ignored.</tt> </tt>
+<a name="L60"></a><tt class="py-lineno"> 60</tt>  <tt class="py-line"><tt class="py-docstring">        Currently, no extra options are defined.</tt> </tt>
+<a name="L61"></a><tt class="py-lineno"> 61</tt>  <tt class="py-line"><tt class="py-docstring">    @rtype: L{ParsedDocstring}</tt> </tt>
+<a name="L62"></a><tt class="py-lineno"> 62</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L63"></a><tt class="py-lineno"> 63</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-2" class="py-name" targets="Class epydoc.markup.javadoc.ParsedJavadocDocstring=epydoc.markup.javadoc.ParsedJavadocDocstring-class.html"><a title="epydoc.markup.javadoc.ParsedJavadocDocstring" class="py-name" href="#" onclick="return doclink('link-2', 'ParsedJavadocDocstring', 'link-2');">ParsedJavadocDocstring</a></tt><tt class="py-op">(</tt><tt id="link-3" class="py- [...]
+</div><a name="L64"></a><tt class="py-lineno"> 64</tt>  <tt class="py-line"> </tt>
+<a name="ParsedJavadocDocstring"></a><div id="ParsedJavadocDocstring-def"><a name="L65"></a><tt class="py-lineno"> 65</tt> <a class="py-toggle" href="#" id="ParsedJavadocDocstring-toggle" onclick="return toggle('ParsedJavadocDocstring');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="epydoc.markup.javadoc.ParsedJavadocDocstring-class.html">ParsedJavadocDocstring</a><tt class="py-op">(</tt><tt class="py-base-class">ParsedDocstring</tt><tt class="p [...]
+</div><div id="ParsedJavadocDocstring-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="ParsedJavadocDocstring-expanded"><a name="L66"></a><tt class="py-lineno"> 66</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L67"></a><tt class="py-lineno"> 67</tt>  <tt class="py-line"><tt class="py-docstring">    An encoded version of a Javadoc docstring.  Since Javadoc is a</tt> </tt>
+<a name="L68"></a><tt class="py-lineno"> 68</tt>  <tt class="py-line"><tt class="py-docstring">    fairly simple markup language, we don't do any processing in</tt> </tt>
+<a name="L69"></a><tt class="py-lineno"> 69</tt>  <tt class="py-line"><tt class="py-docstring">    advance; instead, we wait to split fields or resolve</tt> </tt>
+<a name="L70"></a><tt class="py-lineno"> 70</tt>  <tt class="py-line"><tt class="py-docstring">    crossreference links until we need to.</tt> </tt>
+<a name="L71"></a><tt class="py-lineno"> 71</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L72"></a><tt class="py-lineno"> 72</tt>  <tt class="py-line"><tt class="py-docstring">    @group Field Splitting: split_fields, _ARG_FIELDS, _FIELD_RE</tt> </tt>
+<a name="L73"></a><tt class="py-lineno"> 73</tt>  <tt class="py-line"><tt class="py-docstring">    @cvar _ARG_FIELDS: A list of the fields that take arguments.</tt> </tt>
+<a name="L74"></a><tt class="py-lineno"> 74</tt>  <tt class="py-line"><tt class="py-docstring">        Since Javadoc doesn't mark arguments in any special way, we</tt> </tt>
+<a name="L75"></a><tt class="py-lineno"> 75</tt>  <tt class="py-line"><tt class="py-docstring">        must consult this list to decide whether the first word of a</tt> </tt>
+<a name="L76"></a><tt class="py-lineno"> 76</tt>  <tt class="py-line"><tt class="py-docstring">        field is an argument or not.</tt> </tt>
+<a name="L77"></a><tt class="py-lineno"> 77</tt>  <tt class="py-line"><tt class="py-docstring">    @cvar _FIELD_RE: A regular expression used to search for Javadoc</tt> </tt>
+<a name="L78"></a><tt class="py-lineno"> 78</tt>  <tt class="py-line"><tt class="py-docstring">        block tags.</tt> </tt>
+<a name="L79"></a><tt class="py-lineno"> 79</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L80"></a><tt class="py-lineno"> 80</tt>  <tt class="py-line"><tt class="py-docstring">    @group HTML Output: to_html, _LINK_SPLIT_RE, _LINK_RE</tt> </tt>
+<a name="L81"></a><tt class="py-lineno"> 81</tt>  <tt class="py-line"><tt class="py-docstring">    @cvar _LINK_SPLIT_RE: A regular expression used to search for</tt> </tt>
+<a name="L82"></a><tt class="py-lineno"> 82</tt>  <tt class="py-line"><tt class="py-docstring">        Javadoc inline tags.</tt> </tt>
+<a name="L83"></a><tt class="py-lineno"> 83</tt>  <tt class="py-line"><tt class="py-docstring">    @cvar _LINK_RE: A regular expression used to process Javadoc</tt> </tt>
+<a name="L84"></a><tt class="py-lineno"> 84</tt>  <tt class="py-line"><tt class="py-docstring">        inline tags.</tt> </tt>
+<a name="L85"></a><tt class="py-lineno"> 85</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="ParsedJavadocDocstring.__init__"></a><div id="ParsedJavadocDocstring.__init__-def"><a name="L86"></a><tt class="py-lineno"> 86</tt> <a class="py-toggle" href="#" id="ParsedJavadocDocstring.__init__-toggle" onclick="return toggle('ParsedJavadocDocstring.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.javadoc.ParsedJavadocDocstring-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self [...]
+</div><div id="ParsedJavadocDocstring.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ParsedJavadocDocstring.__init__-expanded"><a name="L87"></a><tt class="py-lineno"> 87</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L88"></a><tt class="py-lineno"> 88</tt>  <tt class="py-line"><tt class="py-docstring">        Create a new C{ParsedJavadocDocstring}.</tt> </tt>
+<a name="L89"></a><tt class="py-lineno"> 89</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt>
+<a name="L90"></a><tt class="py-lineno"> 90</tt>  <tt class="py-line"><tt class="py-docstring">        @param docstring: The docstring that should be used to</tt> </tt>
+<a name="L91"></a><tt class="py-lineno"> 91</tt>  <tt class="py-line"><tt class="py-docstring">            construct this C{ParsedJavadocDocstring}.</tt> </tt>
+<a name="L92"></a><tt class="py-lineno"> 92</tt>  <tt class="py-line"><tt class="py-docstring">        @type docstring: C{string}</tt> </tt>
+<a name="L93"></a><tt class="py-lineno"> 93</tt>  <tt class="py-line"><tt class="py-docstring">        @param errors: A list where any errors generated during</tt> </tt>
+<a name="L94"></a><tt class="py-lineno"> 94</tt>  <tt class="py-line"><tt class="py-docstring">            parsing will be stored.  If no list is given, then</tt> </tt>
+<a name="L95"></a><tt class="py-lineno"> 95</tt>  <tt class="py-line"><tt class="py-docstring">            all errors are ignored.</tt> </tt>
+<a name="L96"></a><tt class="py-lineno"> 96</tt>  <tt class="py-line"><tt class="py-docstring">        @type errors: C{list} of L{ParseError}</tt> </tt>
+<a name="L97"></a><tt class="py-lineno"> 97</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L98"></a><tt class="py-lineno"> 98</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_docstring</tt> <tt class="py-op">=</tt> <tt id="link-4" class="py-name"><a title="epydoc.apidoc.APIDoc.docstring" class="py-name" href="#" onclick="return doclink('link-4', 'docstring', 'link-3');">docstring</a></tt> </tt>
+<a name="L99"></a><tt class="py-lineno"> 99</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">errors</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> <tt class="py-name">errors</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L100"></a><tt class="py-lineno">100</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-5" class="py-name" targets="Method epydoc.markup.javadoc.ParsedJavadocDocstring._check_links()=epydoc.markup.javadoc.ParsedJavadocDocstring-class.html#_check_links"><a title="epydoc.markup.javadoc.ParsedJavadocDocstring._check_links" class="py-name" href="#" onclick="return doclink('link-5', '_check_links', 'link-5');">_check_links</a></tt><tt c [...]
+</div><a name="L101"></a><tt class="py-lineno">101</tt>  <tt class="py-line"> </tt>
+<a name="L102"></a><tt class="py-lineno">102</tt>  <tt class="py-line">    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L103"></a><tt class="py-lineno">103</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># Field Splitting</tt> </tt>
+<a name="L104"></a><tt class="py-lineno">104</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L105"></a><tt class="py-lineno">105</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L106"></a><tt class="py-lineno">106</tt>  <tt class="py-line">    <tt id="link-6" class="py-name" targets="Variable epydoc.markup.javadoc.ParsedJavadocDocstring._ARG_FIELDS=epydoc.markup.javadoc.ParsedJavadocDocstring-class.html#_ARG_FIELDS"><a title="epydoc.markup.javadoc.ParsedJavadocDocstring._ARG_FIELDS" class="py-name" href="#" onclick="return doclink('link-6', '_ARG_FIELDS', 'link-6');">_ARG_FIELDS</a></tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-str [...]
+<a name="L107"></a><tt class="py-lineno">107</tt>  <tt class="py-line">                   <tt class="py-string">'ivar param '</tt><tt class="py-op">+</tt> </tt>
+<a name="L108"></a><tt class="py-lineno">108</tt>  <tt class="py-line">                   <tt class="py-string">'parameter arg argument raise raises exception '</tt><tt class="py-op">+</tt> </tt>
+<a name="L109"></a><tt class="py-lineno">109</tt>  <tt class="py-line">                   <tt class="py-string">'except deffield newfield keyword kwarg kwparam'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L110"></a><tt class="py-lineno">110</tt>  <tt class="py-line">    <tt id="link-7" class="py-name" targets="Variable epydoc.markup.javadoc.ParsedJavadocDocstring._FIELD_RE=epydoc.markup.javadoc.ParsedJavadocDocstring-class.html#_FIELD_RE"><a title="epydoc.markup.javadoc.ParsedJavadocDocstring._FIELD_RE" class="py-name" href="#" onclick="return doclink('link-7', '_FIELD_RE', 'link-7');">_FIELD_RE</a></tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt> [...]
+<a name="L111"></a><tt class="py-lineno">111</tt>  <tt class="py-line">     </tt>
+<a name="L112"></a><tt class="py-lineno">112</tt>  <tt class="py-line">    <tt class="py-comment"># Inherit docs from ParsedDocstring.</tt> </tt>
+<a name="ParsedJavadocDocstring.split_fields"></a><div id="ParsedJavadocDocstring.split_fields-def"><a name="L113"></a><tt class="py-lineno">113</tt> <a class="py-toggle" href="#" id="ParsedJavadocDocstring.split_fields-toggle" onclick="return toggle('ParsedJavadocDocstring.split_fields');">-</a><tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.javadoc.ParsedJavadocDocstring-class.html#split_fields">split_fields [...]
+</div><div id="ParsedJavadocDocstring.split_fields-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ParsedJavadocDocstring.split_fields-expanded"><a name="L114"></a><tt class="py-lineno">114</tt>  <tt class="py-line"> </tt>
+<a name="L115"></a><tt class="py-lineno">115</tt>  <tt class="py-line">        <tt class="py-comment"># Split the docstring into an alternating list of field tags</tt> </tt>
+<a name="L116"></a><tt class="py-lineno">116</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># and text (odd pieces are field tags).</tt> </tt>
+<a name="L117"></a><tt class="py-lineno">117</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">pieces</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-8" class="py-name"><a title="epydoc.markup.javadoc.ParsedJavadocDocstring._FIELD_RE" class="py-name" href="#" onclick="return doclink('link-8', '_FIELD_RE', 'link-7');">_FIELD_RE</a></tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</ [...]
+<a name="L118"></a><tt class="py-lineno">118</tt>  <tt class="py-line"> </tt>
+<a name="L119"></a><tt class="py-lineno">119</tt>  <tt class="py-line">        <tt class="py-comment"># The first piece is the description.</tt> </tt>
+<a name="L120"></a><tt class="py-lineno">120</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt id="link-9" class="py-name" targets="Variable epydoc.apidoc.APIDoc.descr=epydoc.apidoc.APIDoc-class.html#descr,Variable epydoc.cli.descr=epydoc.cli-module.html#descr,Method epydoc.docwriter.html.HTMLWriter.descr()=epydoc.docwriter.html.HTMLWriter-class.html#descr,Method epydoc.markup.ParseError.descr()=epydoc.markup.ParseError-class.html#descr,Method epydoc.markup.epytext.Colori [...]
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-9', 'descr', 'link-9');">descr</a></tt> <tt class="py-op">=</tt> <tt id="link-10" class="py-name"><a title="epydoc.markup.javadoc.ParsedJavadocDocstring" class="py-name" href="#" onclick="return doclink('link-10', 'ParsedJavadocDocstring', 'link-2');">ParsedJavadocDocstring</a></tt><tt class="py-op">(</tt><tt class="py-name">pieces</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><t [...]
+<a name="L121"></a><tt class="py-lineno">121</tt>  <tt class="py-line"> </tt>
+<a name="L122"></a><tt class="py-lineno">122</tt>  <tt class="py-line">        <tt class="py-comment"># The remaining pieces are the block fields (alternating tags</tt> </tt>
+<a name="L123"></a><tt class="py-lineno">123</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># and bodies; odd pieces are tags).</tt> </tt>
+<a name="L124"></a><tt class="py-lineno">124</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">fields</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L125"></a><tt class="py-lineno">125</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">pieces</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L126"></a><tt class="py-lineno">126</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">i</tt><tt class="py-op">%</tt><tt class="py-number">2</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L127"></a><tt class="py-lineno">127</tt>  <tt class="py-line">                <tt class="py-comment"># Get the field tag.</tt> </tt>
+<a name="L128"></a><tt class="py-lineno">128</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt id="link-11" class="py-name" targets="Method epydoc.markup.Field.tag()=epydoc.markup.Field-class.html#tag"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-11', 'tag', 'link-11');">tag</a></tt> <tt class="py-op">=</tt> <tt class="py-name">pieces</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt><tt clas [...]
+<a name="L129"></a><tt class="py-lineno">129</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L130"></a><tt class="py-lineno">130</tt>  <tt class="py-line">                <tt class="py-comment"># Get the field argument (if appropriate).</tt> </tt>
+<a name="L131"></a><tt class="py-lineno">131</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-keyword">if</tt> <tt id="link-12" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-12', 'tag', 'link-11');">tag</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-13" class="py-name"><a title="epydoc.markup.javadoc.ParsedJavadocDocstring._ARG_FIELDS"  [...]
+<a name="L132"></a><tt class="py-lineno">132</tt>  <tt class="py-line">                    <tt class="py-name">subpieces</tt> <tt class="py-op">=</tt> <tt class="py-name">pieces</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">strip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <t [...]
+<a name="L133"></a><tt class="py-lineno">133</tt>  <tt class="py-line">                    <tt class="py-op">(</tt><tt id="link-14" class="py-name" targets="Method epydoc.markup.Field.arg()=epydoc.markup.Field-class.html#arg"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-14', 'arg', 'link-14');">arg</a></tt><tt class="py-op">,</tt> <tt id="link-15" class="py-name" targets="Method epydoc.markup.Field.body()=epydoc.markup.Field-class.html#body">< [...]
+<a name="L134"></a><tt class="py-lineno">134</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L135"></a><tt class="py-lineno">135</tt>  <tt class="py-line">                    <tt class="py-op">(</tt><tt id="link-16" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-16', 'arg', 'link-14');">arg</a></tt><tt class="py-op">,</tt> <tt id="link-17" class="py-name"><a title="epydoc.markup.Field.body" class="py-name" href="#" onclick="return doclink('link-17', 'body', 'link-15');">body</a></tt><tt class="py-op">)</tt> <tt  [...]
+<a name="L136"></a><tt class="py-lineno">136</tt>  <tt class="py-line"> </tt>
+<a name="L137"></a><tt class="py-lineno">137</tt>  <tt class="py-line">                <tt class="py-comment"># Special processing for @see fields, since Epydoc</tt> </tt>
+<a name="L138"></a><tt class="py-lineno">138</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-comment"># allows unrestricted text in them, but Javadoc just</tt> </tt>
+<a name="L139"></a><tt class="py-lineno">139</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-comment"># uses them for xref links:</tt> </tt>
+<a name="L140"></a><tt class="py-lineno">140</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-keyword">if</tt> <tt id="link-18" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-18', 'tag', 'link-11');">tag</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'see'</tt> <tt class="py-keyword">and</tt> <tt id="link-19" class="py-name"><a title="epydoc.markup.Field.body" class="py-name" href="#"  [...]
+<a name="L141"></a><tt class="py-lineno">141</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt id="link-20" class="py-name"><a title="epydoc.markup.Field.body" class="py-name" href="#" onclick="return doclink('link-20', 'body', 'link-15');">body</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-keyword">in</tt> <tt class="py-string">'"\''</tt><tt class="py-op">:</tt> </tt>
+<a name="L142"></a><tt class="py-lineno">142</tt>  <tt class="py-line">                        <tt class="py-keyword">if</tt> <tt id="link-21" class="py-name"><a title="epydoc.markup.Field.body" class="py-name" href="#" onclick="return doclink('link-21', 'body', 'link-15');">body</a></tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt id="link-22" class="py-name"><a title="epydoc.markup.Field.body" class=" [...]
+<a name="L143"></a><tt class="py-lineno">143</tt>  <tt class="py-line">                    <tt class="py-keyword">elif</tt> <tt id="link-25" class="py-name"><a title="epydoc.markup.Field.body" class="py-name" href="#" onclick="return doclink('link-25', 'body', 'link-15');">body</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">'<'</tt><tt class="py-op">:</tt> <tt class="py-keyword">pass</tt> </tt>
+<a name="L144"></a><tt class="py-lineno">144</tt>  <tt class="py-line">                    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> <tt id="link-26" class="py-name"><a title="epydoc.markup.Field.body" class="py-name" href="#" onclick="return doclink('link-26', 'body', 'link-15');">body</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'{@link %s}'</tt> <tt class="py-op">%</tt> <tt id="link-27" class="py-name"><a title="epydoc.markup.Field.body" class="py-name" href= [...]
+<a name="L145"></a><tt class="py-lineno">145</tt>  <tt class="py-line"> </tt>
+<a name="L146"></a><tt class="py-lineno">146</tt>  <tt class="py-line">                <tt class="py-comment"># Construct the field.</tt> </tt>
+<a name="L147"></a><tt class="py-lineno">147</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-name">parsed_body</tt> <tt class="py-op">=</tt> <tt id="link-28" class="py-name"><a title="epydoc.markup.javadoc.ParsedJavadocDocstring" class="py-name" href="#" onclick="return doclink('link-28', 'ParsedJavadocDocstring', 'link-2');">ParsedJavadocDocstring</a></tt><tt class="py-op">(</tt><tt id="link-29" class="py-name"><a title="epydoc.markup.Field.body" clas [...]
+<a name="L148"></a><tt class="py-lineno">148</tt>  <tt class="py-line">                <tt class="py-name">fields</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-30" class="py-name" targets="Class epydoc.markup.Field=epydoc.markup.Field-class.html"><a title="epydoc.markup.Field" class="py-name" href="#" onclick="return doclink('link-30', 'Field', 'link-30');">Field</a></tt><tt class="py-op">(</tt><tt id="link-31" class="py-name"><a title="e [...]
+<a name="L149"></a><tt class="py-lineno">149</tt>  <tt class="py-line"> </tt>
+<a name="L150"></a><tt class="py-lineno">150</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">pieces</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">strip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L151"></a><tt class="py-lineno">151</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt id="link-33" class="py-name"><a title="epydoc.apidoc.APIDoc.descr
+epydoc.cli.descr
+epydoc.docwriter.html.HTMLWriter.descr
+epydoc.markup.ParseError.descr
+epydoc.markup.epytext.ColorizingError.descr" class="py-name" href="#" onclick="return doclink('link-33', 'descr', 'link-9');">descr</a></tt><tt class="py-op">,</tt> <tt class="py-name">fields</tt><tt class="py-op">)</tt> </tt>
+<a name="L152"></a><tt class="py-lineno">152</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L153"></a><tt class="py-lineno">153</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">fields</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L154"></a><tt class="py-lineno">154</tt>  <tt class="py-line"> </tt>
+<a name="L155"></a><tt class="py-lineno">155</tt>  <tt class="py-line">    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L156"></a><tt class="py-lineno">156</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># HTML Output.</tt> </tt>
+<a name="L157"></a><tt class="py-lineno">157</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L158"></a><tt class="py-lineno">158</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L159"></a><tt class="py-lineno">159</tt>  <tt class="py-line">    <tt id="link-34" class="py-name" targets="Variable epydoc.markup.javadoc.ParsedJavadocDocstring._LINK_SPLIT_RE=epydoc.markup.javadoc.ParsedJavadocDocstring-class.html#_LINK_SPLIT_RE"><a title="epydoc.markup.javadoc.ParsedJavadocDocstring._LINK_SPLIT_RE" class="py-name" href="#" onclick="return doclink('link-34', '_LINK_SPLIT_RE', 'link-34');">_LINK_SPLIT_RE</a></tt> <tt class="py-op">=</tt> <tt class="py-name">re< [...]
+<a name="L160"></a><tt class="py-lineno">160</tt>  <tt class="py-line">    <tt id="link-35" class="py-name" targets="Variable epydoc.markup.javadoc.ParsedJavadocDocstring._LINK_RE=epydoc.markup.javadoc.ParsedJavadocDocstring-class.html#_LINK_RE"><a title="epydoc.markup.javadoc.ParsedJavadocDocstring._LINK_RE" class="py-name" href="#" onclick="return doclink('link-35', '_LINK_RE', 'link-35');">_LINK_RE</a></tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><t [...]
+<a name="L161"></a><tt class="py-lineno">161</tt>  <tt class="py-line">                          <tt class="py-string">r'(?:\([^\)]*\))?'</tt> <tt class="py-op">+</tt> <tt class="py-string">r'(\s+.*)?'</tt> <tt class="py-op">+</tt> <tt class="py-string">r'}'</tt><tt class="py-op">)</tt> </tt>
+<a name="L162"></a><tt class="py-lineno">162</tt>  <tt class="py-line"> </tt>
+<a name="L163"></a><tt class="py-lineno">163</tt>  <tt class="py-line">    <tt class="py-comment"># Inherit docs from ParsedDocstring.</tt> </tt>
+<a name="ParsedJavadocDocstring.to_html"></a><div id="ParsedJavadocDocstring.to_html-def"><a name="L164"></a><tt class="py-lineno">164</tt> <a class="py-toggle" href="#" id="ParsedJavadocDocstring.to_html-toggle" onclick="return toggle('ParsedJavadocDocstring.to_html');">-</a><tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.javadoc.ParsedJavadocDocstring-class.html#to_html">to_html</a><tt class="py-op">(</tt><t [...]
+</div><div id="ParsedJavadocDocstring.to_html-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ParsedJavadocDocstring.to_html-expanded"><a name="L165"></a><tt class="py-lineno">165</tt>  <tt class="py-line">        <tt class="py-comment"># Split the docstring into an alternating list of HTML and</tt> </tt>
+<a name="L166"></a><tt class="py-lineno">166</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># links (odd pieces are links).</tt> </tt>
+<a name="L167"></a><tt class="py-lineno">167</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">pieces</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-36" class="py-name"><a title="epydoc.markup.javadoc.ParsedJavadocDocstring._LINK_SPLIT_RE" class="py-name" href="#" onclick="return doclink('link-36', '_LINK_SPLIT_RE', 'link-34');">_LINK_SPLIT_RE</a></tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt [...]
+<a name="L168"></a><tt class="py-lineno">168</tt>  <tt class="py-line"> </tt>
+<a name="L169"></a><tt class="py-lineno">169</tt>  <tt class="py-line">        <tt class="py-comment"># This function is used to translate {@link ...}s to HTML.</tt> </tt>
+<a name="L170"></a><tt class="py-lineno">170</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">translate_xref</tt> <tt class="py-op">=</tt> <tt class="py-name">docstring_linker</tt><tt class="py-op">.</tt><tt id="link-37" class="py-name" targets="Method epydoc.docwriter.html._HTMLDocstringLinker.translate_identifier_xref()=epydoc.docwriter.html._HTMLDocstringLinker-class.html#translate_identifier_xref,Method epydoc.docwriter.latex.LatexWriter._LatexDocstri [...]
+epydoc.docwriter.latex.LatexWriter._LatexDocstringLinker.translate_identifier_xref
+epydoc.markup.DocstringLinker.translate_identifier_xref" class="py-name" href="#" onclick="return doclink('link-37', 'translate_identifier_xref', 'link-37');">translate_identifier_xref</a></tt> </tt>
+<a name="L171"></a><tt class="py-lineno">171</tt>  <tt class="py-line">         </tt>
+<a name="L172"></a><tt class="py-lineno">172</tt>  <tt class="py-line">        <tt class="py-comment"># Build up the HTML string from the pieces.  For HTML pieces</tt> </tt>
+<a name="L173"></a><tt class="py-lineno">173</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># (even), just add it to html.  For link pieces (odd), use</tt> </tt>
+<a name="L174"></a><tt class="py-lineno">174</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># docstring_linker to translate the crossreference link to</tt> </tt>
+<a name="L175"></a><tt class="py-lineno">175</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># HTML for us.</tt> </tt>
+<a name="L176"></a><tt class="py-lineno">176</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt id="link-38" class="py-name" targets="Module epydoc.docwriter.html=epydoc.docwriter.html-module.html"><a title="epydoc.docwriter.html" class="py-name" href="#" onclick="return doclink('link-38', 'html', 'link-38');">html</a></tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
+<a name="L177"></a><tt class="py-lineno">177</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">pieces</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L178"></a><tt class="py-lineno">178</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">i</tt><tt class="py-op">%</tt><tt class="py-number">2</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L179"></a><tt class="py-lineno">179</tt>  <tt class="py-line">                <tt id="link-39" class="py-name"><a title="epydoc.docwriter.html" class="py-name" href="#" onclick="return doclink('link-39', 'html', 'link-38');">html</a></tt> <tt class="py-op">+=</tt> <tt class="py-name">pieces</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt> </tt>
+<a name="L180"></a><tt class="py-lineno">180</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L181"></a><tt class="py-lineno">181</tt>  <tt class="py-line">                <tt class="py-comment"># Decompose the link into pieces.</tt> </tt>
+<a name="L182"></a><tt class="py-lineno">182</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-40" class="py-name"><a title="epydoc.markup.javadoc.ParsedJavadocDocstring._LINK_RE" class="py-name" href="#" onclick="return doclink('link-40', '_LINK_RE', 'link-35');">_LINK_RE</a></tt><tt class="py-op">.</tt><tt class="py-name">match</tt><tt class="py-op"> [...]
+<a name="L183"></a><tt class="py-lineno">183</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">m</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> <tt class="py-keyword">continue</tt> <tt class="py-comment"># Error flagged by _check_links</tt> </tt>
+<a name="L184"></a><tt class="py-lineno">184</tt>  <tt class="py-line">                <tt class="py-op">(</tt><tt class="py-name">target</tt><tt class="py-op">,</tt> <tt id="link-41" class="py-name" targets="Variable epydoc.apidoc.VariableDoc.name=epydoc.apidoc.VariableDoc-class.html#name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-41', 'name', 'link-41');">name</a></tt><tt class="py-op">)</tt> <tt class="py-op">=</tt> <tt class="py- [...]
+<a name="L185"></a><tt class="py-lineno">185</tt>  <tt class="py-line"> </tt>
+<a name="L186"></a><tt class="py-lineno">186</tt>  <tt class="py-line">                <tt class="py-comment"># Normalize the target name.</tt> </tt>
+<a name="L187"></a><tt class="py-lineno">187</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-keyword">if</tt> <tt class="py-name">target</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">'#'</tt><tt class="py-op">:</tt> <tt class="py-name">target</tt> <tt class="py-op">=</tt> <tt class="py-name">target</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op" [...]
+<a name="L188"></a><tt class="py-lineno">188</tt>  <tt class="py-line">                <tt class="py-name">target</tt> <tt class="py-op">=</tt> <tt class="py-name">target</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">'#'</tt><tt class="py-op">,</tt> <tt class="py-string">'.'</tt><tt class="py-op">)</tt> </tt>
+<a name="L189"></a><tt class="py-lineno">189</tt>  <tt class="py-line">                <tt class="py-name">target</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt class="py-string">r'\(.*\)'</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">,</tt> <tt class="py-name">target</tt><tt class="py-op">)</tt> </tt>
+<a name="L190"></a><tt class="py-lineno">190</tt>  <tt class="py-line"> </tt>
+<a name="L191"></a><tt class="py-lineno">191</tt>  <tt class="py-line">                <tt class="py-comment"># Provide a name, if it wasn't specified.</tt> </tt>
+<a name="L192"></a><tt class="py-lineno">192</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-keyword">if</tt> <tt id="link-42" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-42', 'name', 'link-41');">name</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> <tt id="link-43" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name"  [...]
+<a name="L193"></a><tt class="py-lineno">193</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> <tt id="link-44" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-44', 'name', 'link-41');">name</a></tt> <tt class="py-op">=</tt> <tt id="link-45" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-45', 'name', 'link-41') [...]
+<a name="L194"></a><tt class="py-lineno">194</tt>  <tt class="py-line"> </tt>
+<a name="L195"></a><tt class="py-lineno">195</tt>  <tt class="py-line">                <tt class="py-comment"># Use docstring_linker to convert the name to html.</tt> </tt>
+<a name="L196"></a><tt class="py-lineno">196</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt id="link-46" class="py-name"><a title="epydoc.docwriter.html" class="py-name" href="#" onclick="return doclink('link-46', 'html', 'link-38');">html</a></tt> <tt class="py-op">+=</tt> <tt class="py-name">translate_xref</tt><tt class="py-op">(</tt><tt class="py-name">target</tt><tt class="py-op">,</tt> <tt id="link-47" class="py-name"><a title="epydoc.apidoc.VariableDoc.na [...]
+<a name="L197"></a><tt class="py-lineno">197</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-48" class="py-name"><a title="epydoc.docwriter.html" class="py-name" href="#" onclick="return doclink('link-48', 'html', 'link-38');">html</a></tt> </tt>
+</div><a name="L198"></a><tt class="py-lineno">198</tt>  <tt class="py-line"> </tt>
+<a name="ParsedJavadocDocstring._check_links"></a><div id="ParsedJavadocDocstring._check_links-def"><a name="L199"></a><tt class="py-lineno">199</tt> <a class="py-toggle" href="#" id="ParsedJavadocDocstring._check_links-toggle" onclick="return toggle('ParsedJavadocDocstring._check_links');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.javadoc.ParsedJavadocDocstring-class.html#_check_links">_check_links</a><tt class="py-op">(</tt> [...]
+</div><div id="ParsedJavadocDocstring._check_links-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ParsedJavadocDocstring._check_links-expanded"><a name="L200"></a><tt class="py-lineno">200</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L201"></a><tt class="py-lineno">201</tt>  <tt class="py-line"><tt class="py-docstring">        Make sure that all @{link}s are valid.  We need a separate</tt> </tt>
+<a name="L202"></a><tt class="py-lineno">202</tt>  <tt class="py-line"><tt class="py-docstring">        method for ths because we want to do this at parse time, not</tt> </tt>
+<a name="L203"></a><tt class="py-lineno">203</tt>  <tt class="py-line"><tt class="py-docstring">        html output time.  Any errors found are appended to C{errors}.</tt> </tt>
+<a name="L204"></a><tt class="py-lineno">204</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L205"></a><tt class="py-lineno">205</tt>  <tt class="py-line">        <tt class="py-name">pieces</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-49" class="py-name"><a title="epydoc.markup.javadoc.ParsedJavadocDocstring._LINK_SPLIT_RE" class="py-name" href="#" onclick="return doclink('link-49', '_LINK_SPLIT_RE', 'link-34');">_LINK_SPLIT_RE</a></tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt cla [...]
+<a name="L206"></a><tt class="py-lineno">206</tt>  <tt class="py-line">        <tt id="link-50" class="py-name" targets="Method epydoc.markup.ParseError.linenum()=epydoc.markup.ParseError-class.html#linenum"><a title="epydoc.markup.ParseError.linenum" class="py-name" href="#" onclick="return doclink('link-50', 'linenum', 'link-50');">linenum</a></tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L207"></a><tt class="py-lineno">207</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">pieces</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L208"></a><tt class="py-lineno">208</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">i</tt><tt class="py-op">%</tt><tt class="py-number">2</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-51" class="py-name"><a title="epydoc.markup.javadoc.ParsedJavadocDocstring._LINK_RE" class="py-name" href="#" oncl [...]
+<a name="L209"></a><tt class="py-lineno">209</tt>  <tt class="py-line">                <tt class="py-name">estr</tt> <tt class="py-op">=</tt> <tt class="py-string">'Bad link %r'</tt> <tt class="py-op">%</tt> <tt class="py-name">pieces</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt> </tt>
+<a name="L210"></a><tt class="py-lineno">210</tt>  <tt class="py-line">                <tt class="py-name">errors</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-52" class="py-name" targets="Class epydoc.docparser.ParseError=epydoc.docparser.ParseError-class.html,Class epydoc.markup.ParseError=epydoc.markup.ParseError-class.html"><a title="epydoc.docparser.ParseError
+epydoc.markup.ParseError" class="py-name" href="#" onclick="return doclink('link-52', 'ParseError', 'link-52');">ParseError</a></tt><tt class="py-op">(</tt><tt class="py-name">estr</tt><tt class="py-op">,</tt> <tt id="link-53" class="py-name"><a title="epydoc.markup.ParseError.linenum" class="py-name" href="#" onclick="return doclink('link-53', 'linenum', 'link-50');">linenum</a></tt><tt class="py-op">,</tt> <tt id="link-54" class="py-name" targets="Method epydoc.markup.ParseError.is_fat [...]
+<a name="L211"></a><tt class="py-lineno">211</tt>  <tt class="py-line">            <tt id="link-55" class="py-name"><a title="epydoc.markup.ParseError.linenum" class="py-name" href="#" onclick="return doclink('link-55', 'linenum', 'link-50');">linenum</a></tt> <tt class="py-op">+=</tt> <tt class="py-name">pieces</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">count</tt><tt class="py-op">(</tt><tt class="py-string"> [...]
+</div><a name="L212"></a><tt class="py-lineno">212</tt>  <tt class="py-line"> </tt>
+<a name="L213"></a><tt class="py-lineno">213</tt>  <tt class="py-line">    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L214"></a><tt class="py-lineno">214</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># Plaintext Output.</tt> </tt>
+<a name="L215"></a><tt class="py-lineno">215</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L216"></a><tt class="py-lineno">216</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L217"></a><tt class="py-lineno">217</tt>  <tt class="py-line">    <tt class="py-comment"># Inherit docs from ParsedDocstring.  Since we don't define</tt> </tt>
+<a name="L218"></a><tt class="py-lineno">218</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># to_latex, this is used when generating latex output.</tt> </tt>
+<a name="ParsedJavadocDocstring.to_plaintext"></a><div id="ParsedJavadocDocstring.to_plaintext-def"><a name="L219"></a><tt class="py-lineno">219</tt> <a class="py-toggle" href="#" id="ParsedJavadocDocstring.to_plaintext-toggle" onclick="return toggle('ParsedJavadocDocstring.to_plaintext');">-</a><tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.javadoc.ParsedJavadocDocstring-class.html#to_plaintext">to_plaintext [...]
+</div><div id="ParsedJavadocDocstring.to_plaintext-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ParsedJavadocDocstring.to_plaintext-expanded"><a name="L220"></a><tt class="py-lineno">220</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_docstring</tt> </tt>
+</div><a name="L221"></a><tt class="py-lineno">221</tt>  <tt class="py-line"> </tt>
+<a name="L222"></a><tt class="py-lineno">222</tt>  <tt class="py-line">    <tt id="link-56" class="py-name" targets="Variable epydoc.markup.epytext.ParsedEpytextDocstring._SUMMARY_RE=epydoc.markup.epytext.ParsedEpytextDocstring-class.html#_SUMMARY_RE,Variable epydoc.markup.javadoc.ParsedJavadocDocstring._SUMMARY_RE=epydoc.markup.javadoc.ParsedJavadocDocstring-class.html#_SUMMARY_RE,Variable epydoc.markup.plaintext.ParsedPlaintextDocstring._SUMMARY_RE=epydoc.markup.plaintext.ParsedPlainte [...]
+epydoc.markup.javadoc.ParsedJavadocDocstring._SUMMARY_RE
+epydoc.markup.plaintext.ParsedPlaintextDocstring._SUMMARY_RE
+epydoc.markup.restructuredtext._SummaryExtractor._SUMMARY_RE" class="py-name" href="#" onclick="return doclink('link-56', '_SUMMARY_RE', 'link-56');">_SUMMARY_RE</a></tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">compile</tt><tt class="py-op">(</tt><tt class="py-string">r'(\s*[\w\W]*?\.)(\s|$)'</tt><tt class="py-op">)</tt> </tt>
+<a name="L223"></a><tt class="py-lineno">223</tt>  <tt class="py-line"> </tt>
+<a name="L224"></a><tt class="py-lineno">224</tt>  <tt class="py-line">    <tt class="py-comment"># Jeff's hack to get summary working</tt> </tt>
+<a name="ParsedJavadocDocstring.summary"></a><div id="ParsedJavadocDocstring.summary-def"><a name="L225"></a><tt class="py-lineno">225</tt> <a class="py-toggle" href="#" id="ParsedJavadocDocstring.summary-toggle" onclick="return toggle('ParsedJavadocDocstring.summary');">-</a><tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.javadoc.ParsedJavadocDocstring-class.html#summary">summary</a><tt class="py-op">(</tt><t [...]
+</div><div id="ParsedJavadocDocstring.summary-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ParsedJavadocDocstring.summary-expanded"><a name="L226"></a><tt class="py-lineno">226</tt>  <tt class="py-line">        <tt class="py-comment"># Drop tags</tt> </tt>
+<a name="L227"></a><tt class="py-lineno">227</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">doc</tt> <tt class="py-op">=</tt> <tt class="py-string">"\n"</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-op">[</tt> <tt class="py-name">row</tt> <tt class="py-keyword">for</tt> <tt class="py-name">row</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_doc [...]
+<a name="L228"></a><tt class="py-lineno">228</tt>  <tt class="py-line">                          <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">row</tt><tt class="py-op">.</tt><tt class="py-name">lstrip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">startswith</tt><tt class="py-op">(</tt><tt class="py-string">'@'</tt><tt class="py-op">)</tt> <tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L229"></a><tt class="py-lineno">229</tt>  <tt class="py-line"> </tt>
+<a name="L230"></a><tt class="py-lineno">230</tt>  <tt class="py-line">        <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-57" class="py-name"><a title="epydoc.markup.epytext.ParsedEpytextDocstring._SUMMARY_RE
+epydoc.markup.javadoc.ParsedJavadocDocstring._SUMMARY_RE
+epydoc.markup.plaintext.ParsedPlaintextDocstring._SUMMARY_RE
+epydoc.markup.restructuredtext._SummaryExtractor._SUMMARY_RE" class="py-name" href="#" onclick="return doclink('link-57', '_SUMMARY_RE', 'link-56');">_SUMMARY_RE</a></tt><tt class="py-op">.</tt><tt class="py-name">match</tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">)</tt> </tt>
+<a name="L231"></a><tt class="py-lineno">231</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">m</tt><tt class="py-op">:</tt> </tt>
+<a name="L232"></a><tt class="py-lineno">232</tt>  <tt class="py-line">            <tt class="py-name">other</tt> <tt class="py-op">=</tt> <tt class="py-name">doc</tt><tt class="py-op">[</tt><tt class="py-name">m</tt><tt class="py-op">.</tt><tt class="py-name">end</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt>
+<a name="L233"></a><tt class="py-lineno">233</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt id="link-58" class="py-name"><a title="epydoc.markup.javadoc.ParsedJavadocDocstring" class="py-name" href="#" onclick="return doclink('link-58', 'ParsedJavadocDocstring', 'link-2');">ParsedJavadocDocstring</a></tt><tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">.</tt><tt class="py-name">group</tt><tt class="py-op">(</tt><tt  [...]
+<a name="L234"></a><tt class="py-lineno">234</tt>  <tt class="py-line">                    <tt class="py-name">other</tt> <tt class="py-op">!=</tt> <tt class="py-string">''</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">other</tt><tt class="py-op">.</tt><tt class="py-name">isspace</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L235"></a><tt class="py-lineno">235</tt>  <tt class="py-line">             </tt>
+<a name="L236"></a><tt class="py-lineno">236</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L237"></a><tt class="py-lineno">237</tt>  <tt class="py-line">            <tt class="py-name">parts</tt> <tt class="py-op">=</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt class="py-name">strip</tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L238"></a><tt class="py-lineno">238</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">parts</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L239"></a><tt class="py-lineno">239</tt>  <tt class="py-line">                <tt id="link-59" class="py-name" targets="Variable epydoc.apidoc.APIDoc.summary=epydoc.apidoc.APIDoc-class.html#summary,Method epydoc.docwriter.html.HTMLWriter.summary()=epydoc.docwriter.html.HTMLWriter-class.html#summary,Method epydoc.markup.ConcatenatedDocstring.summary()=epydoc.markup.ConcatenatedDocstring-class.html#summary,Method epydoc.markup.ParsedDocstring.summary()=epydoc.markup.ParsedDocstrin [...]
+epydoc.docwriter.html.HTMLWriter.summary
+epydoc.markup.ConcatenatedDocstring.summary
+epydoc.markup.ParsedDocstring.summary
+epydoc.markup.epytext.ParsedEpytextDocstring.summary
+epydoc.markup.javadoc.ParsedJavadocDocstring.summary
+epydoc.markup.plaintext.ParsedPlaintextDocstring.summary
+epydoc.markup.restructuredtext.ParsedRstDocstring.summary" class="py-name" href="#" onclick="return doclink('link-59', 'summary', 'link-59');">summary</a></tt> <tt class="py-op">=</tt> <tt class="py-name">parts</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L240"></a><tt class="py-lineno">240</tt>  <tt class="py-line">                <tt class="py-name">other</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L241"></a><tt class="py-lineno">241</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L242"></a><tt class="py-lineno">242</tt>  <tt class="py-line">                <tt id="link-60" class="py-name"><a title="epydoc.apidoc.APIDoc.summary
+epydoc.docwriter.html.HTMLWriter.summary
+epydoc.markup.ConcatenatedDocstring.summary
+epydoc.markup.ParsedDocstring.summary
+epydoc.markup.epytext.ParsedEpytextDocstring.summary
+epydoc.markup.javadoc.ParsedJavadocDocstring.summary
+epydoc.markup.plaintext.ParsedPlaintextDocstring.summary
+epydoc.markup.restructuredtext.ParsedRstDocstring.summary" class="py-name" href="#" onclick="return doclink('link-60', 'summary', 'link-59');">summary</a></tt> <tt class="py-op">=</tt> <tt class="py-name">parts</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">+</tt> <tt class="py-string">'...'</tt> </tt>
+<a name="L243"></a><tt class="py-lineno">243</tt>  <tt class="py-line">                <tt class="py-name">other</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L244"></a><tt class="py-lineno">244</tt>  <tt class="py-line">             </tt>
+<a name="L245"></a><tt class="py-lineno">245</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt id="link-61" class="py-name"><a title="epydoc.markup.javadoc.ParsedJavadocDocstring" class="py-name" href="#" onclick="return doclink('link-61', 'ParsedJavadocDocstring', 'link-2');">ParsedJavadocDocstring</a></tt><tt class="py-op">(</tt><tt id="link-62" class="py-name"><a title="epydoc.apidoc.APIDoc.summary
+epydoc.docwriter.html.HTMLWriter.summary
+epydoc.markup.ConcatenatedDocstring.summary
+epydoc.markup.ParsedDocstring.summary
+epydoc.markup.epytext.ParsedEpytextDocstring.summary
+epydoc.markup.javadoc.ParsedJavadocDocstring.summary
+epydoc.markup.plaintext.ParsedPlaintextDocstring.summary
+epydoc.markup.restructuredtext.ParsedRstDocstring.summary" class="py-name" href="#" onclick="return doclink('link-62', 'summary', 'link-59');">summary</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">other</tt> </tt>
+</div></div><a name="L246"></a><tt class="py-lineno">246</tt>  <tt class="py-line">         </tt>
+<a name="L247"></a><tt class="py-lineno">247</tt>  <tt class="py-line"><tt class="py-comment">#     def concatenate(self, other):</tt> </tt>
+<a name="L248"></a><tt class="py-lineno">248</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#         if not isinstance(other, ParsedJavadocDocstring):</tt> </tt>
+<a name="L249"></a><tt class="py-lineno">249</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#             raise ValueError, 'Could not concatenate docstrings'</tt> </tt>
+<a name="L250"></a><tt class="py-lineno">250</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#         return ParsedJavadocDocstring(self._docstring+other._docstring)</tt> </tt>
+<a name="L251"></a><tt class="py-lineno">251</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:09:55 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.markup.javadoc.ParsedJavadocDocstring-class.html b/doc/api/epydoc.markup.javadoc.ParsedJavadocDocstring-class.html
new file mode 100644
index 0000000..8ebd19a
--- /dev/null
+++ b/doc/api/epydoc.markup.javadoc.ParsedJavadocDocstring-class.html
@@ -0,0 +1,631 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.markup.javadoc.ParsedJavadocDocstring</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.markup-module.html">Package markup</a> ::
+        <a href="epydoc.markup.javadoc-module.html">Module javadoc</a> ::
+        Class ParsedJavadocDocstring
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.markup.javadoc.ParsedJavadocDocstring-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class ParsedJavadocDocstring</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.markup.javadoc-pysrc.html#ParsedJavadocDocstring">source code</a></span></p>
+<center>
+<center>  <map id="uml_class_diagram_for_epydoc_m_13" name="uml_class_diagram_for_epydoc_m_13">
+<area shape="rect" href="epydoc.markup.ParsedDocstring-class.html#concatenate" title="Returns:  A new parsed docstring containing the concatination of this docstring and  other." alt="" coords="28,36,273,55" />
+<area shape="rect" href="epydoc.markup.ParsedDocstring-class.html#__add__" title="epydoc.markup.ParsedDocstring.__add__" alt="" coords="28,55,273,73" />
+<area shape="rect" href="epydoc.markup.ParsedDocstring-class.html#to_latex" title="Translate this docstring to LaTeX." alt="" coords="28,73,273,92" />
+<area shape="rect" href="epydoc.markup.ParsedDocstring-class.html#index_terms" title="Returns:  The list of index terms that are defined in this docstring." alt="" coords="28,92,273,111" />
+<area shape="rect" href="epydoc.markup.ParsedDocstring-class.html" title="A standard intermediate representation for parsed docstrings that can be used to generate output." alt="" coords="16,5,285,117" />
+<area shape="rect" href="epydoc.markup.javadoc.ParsedJavadocDocstring-class.html#__init__" title="Create a new ParsedJavadocDocstring." alt="" coords="17,167,284,185" />
+<area shape="rect" href="epydoc.markup.javadoc.ParsedJavadocDocstring-class.html#split_fields" title="Split this docstring into its body and its fields." alt="" coords="17,185,284,204" />
+<area shape="rect" href="epydoc.markup.javadoc.ParsedJavadocDocstring-class.html#to_html" title="Translate this docstring to HTML." alt="" coords="17,204,284,223" />
+<area shape="rect" href="epydoc.markup.javadoc.ParsedJavadocDocstring-class.html#to_plaintext" title="Translate this docstring to plaintext." alt="" coords="17,223,284,241" />
+<area shape="rect" href="epydoc.markup.javadoc.ParsedJavadocDocstring-class.html#summary" title="Returns:  A pair consisting of a short summary of this docstring and a boolean value  indicating whether there is further documentation in addition to the  summary." alt="" coords="17,241,284,260" />
+<area shape="rect" href="epydoc.markup.javadoc.ParsedJavadocDocstring-class.html" title="An encoded version of a Javadoc docstring." alt="" coords="5,136,296,267" />
+</map>
+  <img src="uml_class_diagram_for_epydoc_m_13.gif" alt='' usemap="#uml_class_diagram_for_epydoc_m_13" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<p>An encoded version of a Javadoc docstring.  Since Javadoc is a fairly 
+  simple markup language, we don't do any processing in advance; instead, 
+  we wait to split fields or resolve crossreference links until we need 
+  to.</p>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.javadoc.ParsedJavadocDocstring-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">docstring</span>,
+        <span class="summary-sig-arg">errors</span>=<span class="summary-sig-default">None</span>)</span><br />
+      Create a new <code>ParsedJavadocDocstring</code>.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.javadoc-pysrc.html#ParsedJavadocDocstring.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.javadoc.ParsedJavadocDocstring-class.html#_check_links" class="summary-sig-name" onclick="show_private();">_check_links</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">errors</span>)</span><br />
+      Make sure that all @{link}s are valid.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.javadoc-pysrc.html#ParsedJavadocDocstring._check_links">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>string</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.javadoc.ParsedJavadocDocstring-class.html#to_plaintext" class="summary-sig-name">to_plaintext</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">docstring_linker</span>,
+        <span class="summary-sig-arg">**options</span>)</span><br />
+      Translate this docstring to plaintext.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.javadoc-pysrc.html#ParsedJavadocDocstring.to_plaintext">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">(<a href="epydoc.markup.ParsedDocstring-class.html" 
+      class="link">ParsedDocstring</a>, <code>bool</code>)</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.javadoc.ParsedJavadocDocstring-class.html#summary" class="summary-sig-name">summary</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Returns:
+      A pair consisting of a short summary of this docstring and a boolean 
+      value indicating whether there is further documentation in addition 
+      to the summary.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.javadoc-pysrc.html#ParsedJavadocDocstring.summary">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.markup.ParsedDocstring-class.html">ParsedDocstring</a></code></b>:
+      <code><a href="epydoc.markup.ParsedDocstring-class.html#__add__">__add__</a></code>,
+      <code><a href="epydoc.markup.ParsedDocstring-class.html#concatenate">concatenate</a></code>,
+      <code><a href="epydoc.markup.ParsedDocstring-class.html#index_terms">index_terms</a></code>,
+      <code><a href="epydoc.markup.ParsedDocstring-class.html#to_latex">to_latex</a></code>
+      </p>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Field Splitting</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>(<a href="epydoc.markup.ParsedDocstring-class.html" 
+      class="link">ParsedDocstring</a>, list of <a 
+      href="epydoc.markup.Field-class.html" class="link">Field</a>)</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.javadoc.ParsedJavadocDocstring-class.html#split_fields" class="summary-sig-name">split_fields</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">errors</span>=<span class="summary-sig-default">None</span>)</span><br />
+      Split this docstring into its body and its fields.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.javadoc-pysrc.html#ParsedJavadocDocstring.split_fields">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    HTML Output</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>string</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.javadoc.ParsedJavadocDocstring-class.html#to_html" class="summary-sig-name">to_html</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">docstring_linker</span>,
+        <span class="summary-sig-arg">**options</span>)</span><br />
+      Translate this docstring to HTML.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.javadoc-pysrc.html#ParsedJavadocDocstring.to_html">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Class Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-ClassVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="_SUMMARY_RE"></a><span class="summary-name">_SUMMARY_RE</span> = <code title="re.compile(r'(\s*[\w\W]*?\.)(\s|$)')">re.compile(r'<code class="re-group">(</code>\s<code class="re-op">*</code><code class="re-group">[</code>\w\W<code class="re-group">]</code><code class="re-op">*?</code>\.<code class="re-group">)</code><code class="re-group">(</code>\s<code class="re-op">|</code>$<code class="re-group">)</code>')</code>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8"  class="private">
+  <th colspan="2" class="group-header"
+    >    Field Splitting</th></tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.markup.javadoc.ParsedJavadocDocstring-class.html#_ARG_FIELDS" class="summary-name" onclick="show_private();">_ARG_FIELDS</a> = <code title="['group',
+ 'variable',
+ 'var',
+ 'type',
+ 'cvariable',
+ 'cvar',
+ 'ivariable',
+ 'ivar',
+..."><code class="variable-group">[</code><code class="variable-quote">'</code><code class="variable-string">group</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">variable</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">var</code><code class="variable-quote">'</code><code class="variable-op">, </c [...]
+      A list of the fields that take arguments.
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="_FIELD_RE"></a><span class="summary-name">_FIELD_RE</span> = <code title="re.compile(r'(?m)(^\s*@\w+[\s\$])')">re.compile(r'<code class="re-flags">(?m)</code><code class="re-group">(</code>^\s<code class="re-op">*</code>@\w<code class="re-op">+</code><code class="re-group">[</code>\s\$<code class="re-group">]</code><code class="re-group">)</code>')</code><br />
+      A regular expression used to search for Javadoc block tags.
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8"  class="private">
+  <th colspan="2" class="group-header"
+    >    HTML Output</th></tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="_LINK_SPLIT_RE"></a><span class="summary-name">_LINK_SPLIT_RE</span> = <code title="re.compile(r'(\{@link(?:plain)?\s[^\}]+\})')">re.compile(r'<code class="re-group">(</code>\{@link<code class="re-group">(?:</code>plain<code class="re-group">)</code><code class="re-op">?</code>\s<code class="re-group">[^</code>\}<code class="re-group">]</code><code class="re-op">+</code>\}<code class="re-group">)</code>')</code><br />
+      A regular expression used to search for Javadoc inline tags.
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.markup.javadoc.ParsedJavadocDocstring-class.html#_LINK_RE" class="summary-name" onclick="show_private();">_LINK_RE</a> = <code title="re.compile(r'\{@link(?:plain)?\s+([\w#\.]+)(?:\([^\)]*\))?(\s+.*)?\}')">re.compile(r'\{@link<code class="re-group">(?:</code>plain<code class="re-group">)</code><code class="re-op">?</code>\s<code class="re-op">+</code><code class="re-group">(</code><code class="re-group">[</code>\w#\.<code class="re-group">]</code><code class="re-o [...]
+      A regular expression used to process Javadoc inline tags.
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Method Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-MethodDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">docstring</span>,
+        <span class="sig-arg">errors</span>=<span class="sig-default">None</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.javadoc-pysrc.html#ParsedJavadocDocstring.__init__">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Create a new <code>ParsedJavadocDocstring</code>.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>docstring</code></strong> (<code>string</code>) - The docstring that should be used to construct this 
+          <code>ParsedJavadocDocstring</code>.</li>
+        <li><strong class="pname"><code>errors</code></strong> (<code>list</code> of <a 
+          href="epydoc.markup.ParseError-class.html" 
+          class="link">ParseError</a>) - A list where any errors generated during parsing will be stored.
+          If no list is given, then all errors are ignored.</li>
+    </ul></dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="split_fields"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">split_fields</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">errors</span>=<span class="sig-default">None</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.javadoc-pysrc.html#ParsedJavadocDocstring.split_fields">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Split this docstring into its body and its fields.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>errors</code></strong> - A list where any errors generated during splitting will be 
+          stored.  If no list is specified, then errors will be ignored.</li>
+    </ul></dd>
+    <dt>Returns: <code>(<a href="epydoc.markup.ParsedDocstring-class.html" 
+      class="link">ParsedDocstring</a>, list of <a 
+      href="epydoc.markup.Field-class.html" class="link">Field</a>)</code></dt>
+        <dd>A tuple <code>(<i class="math">body</i>, <i 
+          class="math">fields</i>)</code>, where <code><i 
+          class="math">body</i></code> is the main body of this docstring, 
+          and <code><i class="math">fields</i></code> is a list of its 
+          fields.  If the resulting body is empty, return <code>None</code>
+          for the body.</dd>
+    <dt>Overrides:
+        <a href="epydoc.markup.ParsedDocstring-class.html#split_fields">ParsedDocstring.split_fields</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="to_html"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">to_html</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">docstring_linker</span>,
+        <span class="sig-arg">**options</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.javadoc-pysrc.html#ParsedJavadocDocstring.to_html">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Translate this docstring to HTML.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>docstring_linker</code></strong> - An HTML translator for crossreference links into and out of the 
+          docstring.</li>
+        <li><strong class="pname"><code>options</code></strong> - Any extra options for the output.  Unknown options are ignored.</li>
+    </ul></dd>
+    <dt>Returns: <code>string</code></dt>
+        <dd>An HTML fragment that encodes this docstring.</dd>
+    <dt>Overrides:
+        <a href="epydoc.markup.ParsedDocstring-class.html#to_html">ParsedDocstring.to_html</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="_check_links"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">_check_links</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">errors</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.javadoc-pysrc.html#ParsedJavadocDocstring._check_links">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Make sure that all @{link}s are valid.  We need a separate method for 
+  ths because we want to do this at parse time, not html output time.  Any 
+  errors found are appended to <code>errors</code>.</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="to_plaintext"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">to_plaintext</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">docstring_linker</span>,
+        <span class="sig-arg">**options</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.javadoc-pysrc.html#ParsedJavadocDocstring.to_plaintext">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Translate this docstring to plaintext.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>docstring_linker</code></strong> - A plaintext translator for crossreference links into and out of 
+          the docstring.</li>
+        <li><strong class="pname"><code>options</code></strong> - Any extra options for the output.  Unknown options are ignored.</li>
+    </ul></dd>
+    <dt>Returns: <code>string</code></dt>
+        <dd>A plaintext fragment that encodes this docstring.</dd>
+    <dt>Overrides:
+        <a href="epydoc.markup.ParsedDocstring-class.html#to_plaintext">ParsedDocstring.to_plaintext</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="summary"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">summary</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.javadoc-pysrc.html#ParsedJavadocDocstring.summary">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  
+  <dl class="fields">
+    <dt>Returns: (<a href="epydoc.markup.ParsedDocstring-class.html" 
+      class="link">ParsedDocstring</a>, <code>bool</code>)</dt>
+        <dd>A pair consisting of a short summary of this docstring and a 
+          boolean value indicating whether there is further documentation 
+          in addition to the summary. Typically, the summary consists of 
+          the first sentence of the docstring.</dd>
+    <dt>Overrides:
+        <a href="epydoc.markup.ParsedDocstring-class.html#summary">ParsedDocstring.summary</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== CLASS VARIABLE DETAILS ==================== -->
+<a name="section-ClassVariableDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Class Variable Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-ClassVariableDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="_ARG_FIELDS"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">_ARG_FIELDS</h3>
+  A list of the fields that take arguments. Since Javadoc doesn't mark 
+  arguments in any special way, we must consult this list to decide whether
+  the first word of a field is an argument or not.
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-group">[</code><code class="variable-quote">'</code><code class="variable-string">group</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">variable</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">var</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">type</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">cvariable</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">cvar</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">ivariable</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">ivar</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="_LINK_RE"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">_LINK_RE</h3>
+  A regular expression used to process Javadoc inline tags.
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+re.compile(r'\{@link<code class="re-group">(?:</code>plain<code class="re-group">)</code><code class="re-op">?</code>\s<code class="re-op">+</code><code class="re-group">(</code><code class="re-group">[</code>\w#\.<code class="re-group">]</code><code class="re-op">+</code><code class="re-group">)</code><code class="re-group">(?:</code>\(<code class="re-group">[^</code>\)<code class="re-group">]</code><code class="re-op">*</code>\)<code class="re-group">)</code><code class="re-op">?</code [...]
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:08:38 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.markup.plaintext-module.html b/doc/api/epydoc.markup.plaintext-module.html
new file mode 100644
index 0000000..a591ef5
--- /dev/null
+++ b/doc/api/epydoc.markup.plaintext-module.html
@@ -0,0 +1,265 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.markup.plaintext</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.markup-module.html">Package markup</a> ::
+        Module plaintext
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.markup.plaintext-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module plaintext</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.markup.plaintext-pysrc.html">source code</a></span></p>
+<p>Parser for plaintext docstrings.  Plaintext docstrings are rendered as
+  verbatim output, preserving all whitespace.</p>
+
+<!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Classes</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Classes"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.markup.plaintext.ParsedPlaintextDocstring-class.html" class="summary-name">ParsedPlaintextDocstring</a>
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTIONS ==================== -->
+<a name="section-Functions"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Functions</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Functions"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code><a 
+      href="epydoc.markup.plaintext.ParsedPlaintextDocstring-class.html" 
+      class="link">ParsedPlaintextDocstring</a>, <code>list</code> of <a 
+      href="epydoc.markup.ParseError-class.html" 
+      class="link">ParseError</a></code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.plaintext-module.html#parse_docstring" class="summary-sig-name">parse_docstring</a>(<span class="summary-sig-arg">docstring</span>,
+        <span class="summary-sig-arg">errors</span>,
+        <span class="summary-sig-arg">**options</span>)</span><br />
+      Returns:
+      A pair <code>(<i class="math">d</i>, <i class="math">e</i>)</code>, 
+      where <code><i class="math">d</i></code> is a 
+      <code>ParsedDocstring</code> that encodes the contents of the given 
+      plaintext docstring; and <code><i class="math">e</i></code> is a list
+      of errors that were generated while parsing the docstring.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.plaintext-pysrc.html#parse_docstring">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_parse_docstring_4-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_parse_docstring_4-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_parse_docstring_4" name="call_graph_for_parse_docstring_4">
+<area shape="rect" href="epydoc.markup-module.html#parse" title="parse()" alt="" coords="6,6,80,38" />
+<area shape="rect" href="epydoc.markup.plaintext-module.html#parse_docstring" title="parse_docstring()" alt="" coords="130,6,282,38" />
+<area shape="rect" href="epydoc.markup.plaintext.ParsedPlaintextDocstring-class.html#__init__" title="ParsedPlaintextDocstring.__init__()" alt="" coords="332,6,620,38" />
+</map>
+  <img src="call_graph_for_parse_docstring_4.gif" alt='' usemap="#call_graph_for_parse_docstring_4" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTION DETAILS ==================== -->
+<a name="section-FunctionDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Function Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-FunctionDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="parse_docstring"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">parse_docstring</span>(<span class="sig-arg">docstring</span>,
+        <span class="sig-arg">errors</span>,
+        <span class="sig-arg">**options</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.plaintext-pysrc.html#parse_docstring">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_parse_docstring_4-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_parse_docstring_4-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_parse_docstring_4" name="call_graph_for_parse_docstring_4">
+<area shape="rect" href="epydoc.markup-module.html#parse" title="parse()" alt="" coords="6,6,80,38" />
+<area shape="rect" href="epydoc.markup.plaintext-module.html#parse_docstring" title="parse_docstring()" alt="" coords="130,6,282,38" />
+<area shape="rect" href="epydoc.markup.plaintext.ParsedPlaintextDocstring-class.html#__init__" title="ParsedPlaintextDocstring.__init__()" alt="" coords="332,6,620,38" />
+</map>
+  <img src="call_graph_for_parse_docstring_4.gif" alt='' usemap="#call_graph_for_parse_docstring_4" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  
+  <dl class="fields">
+    <dt>Returns: <code><a 
+      href="epydoc.markup.plaintext.ParsedPlaintextDocstring-class.html" 
+      class="link">ParsedPlaintextDocstring</a>, <code>list</code> of <a 
+      href="epydoc.markup.ParseError-class.html" 
+      class="link">ParseError</a></code></dt>
+        <dd>A pair <code>(<i class="math">d</i>, <i 
+          class="math">e</i>)</code>, where <code><i 
+          class="math">d</i></code> is a <code>ParsedDocstring</code> that 
+          encodes the contents of the given plaintext docstring; and 
+          <code><i class="math">e</i></code> is a list of errors that were 
+          generated while parsing the docstring.</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:06:45 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.markup.plaintext-pysrc.html b/doc/api/epydoc.markup.plaintext-pysrc.html
new file mode 100644
index 0000000..b223703
--- /dev/null
+++ b/doc/api/epydoc.markup.plaintext-pysrc.html
@@ -0,0 +1,255 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.markup.plaintext</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.markup-module.html">Package markup</a> ::
+        Module plaintext
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.markup.plaintext-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="epydoc.markup.plaintext-module.html">Module epydoc.markup.plaintext</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno"> 1</tt>  <tt class="py-line"><tt class="py-comment">#</tt> </tt>
+<a name="L2"></a><tt class="py-lineno"> 2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># plaintext.py: plaintext docstring parsing</tt> </tt>
+<a name="L3"></a><tt class="py-lineno"> 3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Edward Loper</tt> </tt>
+<a name="L4"></a><tt class="py-lineno"> 4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L5"></a><tt class="py-lineno"> 5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Created [04/10/01 12:00 AM]</tt> </tt>
+<a name="L6"></a><tt class="py-lineno"> 6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># $Id: plaintext.py 1574 2007-03-07 02:55:14Z dvarrazzo $</tt> </tt>
+<a name="L7"></a><tt class="py-lineno"> 7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L8"></a><tt class="py-lineno"> 8</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L9"></a><tt class="py-lineno"> 9</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L10"></a><tt class="py-lineno">10</tt>  <tt class="py-line"><tt class="py-docstring">Parser for plaintext docstrings.  Plaintext docstrings are rendered as</tt> </tt>
+<a name="L11"></a><tt class="py-lineno">11</tt>  <tt class="py-line"><tt class="py-docstring">verbatim output, preserving all whitespace.</tt> </tt>
+<a name="L12"></a><tt class="py-lineno">12</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L13"></a><tt class="py-lineno">13</tt>  <tt class="py-line"><tt class="py-name">__docformat__</tt> <tt class="py-op">=</tt> <tt class="py-string">'epytext en'</tt> </tt>
+<a name="L14"></a><tt class="py-lineno">14</tt>  <tt class="py-line"> </tt>
+<a name="L15"></a><tt class="py-lineno">15</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-0" class="py-name" targets="Package epydoc=epydoc-module.html"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-0', 'epydoc', 'link-0');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-1" class="py-name" targets="Package epydoc.markup=epydoc.markup-module.html,Method epydoc.markup.doctest.DoctestColorizer.markup()=epydoc.markup.doctest.DoctestCol [...]
+epydoc.markup.doctest.DoctestColorizer.markup
+epydoc.markup.doctest.HTMLDoctestColorizer.markup
+epydoc.markup.doctest.LaTeXDoctestColorizer.markup
+epydoc.markup.doctest.XMLDoctestColorizer.markup" class="py-name" href="#" onclick="return doclink('link-1', 'markup', 'link-1');">markup</a></tt> <tt class="py-keyword">import</tt> <tt class="py-op">*</tt> </tt>
+<a name="L16"></a><tt class="py-lineno">16</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-2" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-2', 'epydoc', 'link-0');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-3" class="py-name" targets="Module epydoc.test.util=epydoc.test.util-module.html,Module epydoc.util=epydoc.util-module.html"><a title="epydoc.test.util
+epydoc.util" class="py-name" href="#" onclick="return doclink('link-3', 'util', 'link-3');">util</a></tt> <tt class="py-keyword">import</tt> <tt id="link-4" class="py-name" targets="Function epydoc.util.plaintext_to_html()=epydoc.util-module.html#plaintext_to_html"><a title="epydoc.util.plaintext_to_html" class="py-name" href="#" onclick="return doclink('link-4', 'plaintext_to_html', 'link-4');">plaintext_to_html</a></tt><tt class="py-op">,</tt> <tt id="link-5" class="py-name" targets="F [...]
+<a name="L17"></a><tt class="py-lineno">17</tt>  <tt class="py-line"> </tt>
+<a name="parse_docstring"></a><div id="parse_docstring-def"><a name="L18"></a><tt class="py-lineno">18</tt> <a class="py-toggle" href="#" id="parse_docstring-toggle" onclick="return toggle('parse_docstring');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.plaintext-module.html#parse_docstring">parse_docstring</a><tt class="py-op">(</tt><tt class="py-param">docstring</tt><tt class="py-op">,</tt> <tt class="py-param">errors</tt><tt clas [...]
+</div><div id="parse_docstring-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="parse_docstring-expanded"><a name="L19"></a><tt class="py-lineno">19</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L20"></a><tt class="py-lineno">20</tt>  <tt class="py-line"><tt class="py-docstring">    @return: A pair C{(M{d}, M{e})}, where C{M{d}} is a</tt> </tt>
+<a name="L21"></a><tt class="py-lineno">21</tt>  <tt class="py-line"><tt class="py-docstring">        C{ParsedDocstring} that encodes the contents of the given</tt> </tt>
+<a name="L22"></a><tt class="py-lineno">22</tt>  <tt class="py-line"><tt class="py-docstring">        plaintext docstring; and C{M{e}} is a list of errors that were</tt> </tt>
+<a name="L23"></a><tt class="py-lineno">23</tt>  <tt class="py-line"><tt class="py-docstring">        generated while parsing the docstring.</tt> </tt>
+<a name="L24"></a><tt class="py-lineno">24</tt>  <tt class="py-line"><tt class="py-docstring">    @rtype: C{L{ParsedPlaintextDocstring}, C{list} of L{ParseError}}</tt> </tt>
+<a name="L25"></a><tt class="py-lineno">25</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L26"></a><tt class="py-lineno">26</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-6" class="py-name" targets="Class epydoc.markup.plaintext.ParsedPlaintextDocstring=epydoc.markup.plaintext.ParsedPlaintextDocstring-class.html"><a title="epydoc.markup.plaintext.ParsedPlaintextDocstring" class="py-name" href="#" onclick="return doclink('link-6', 'ParsedPlaintextDocstring', 'link-6');">ParsedPlaintextDocstring</a></tt><tt class="py-op">(</tt><tt id="lin [...]
+</div><a name="L27"></a><tt class="py-lineno">27</tt>  <tt class="py-line"> </tt>
+<a name="ParsedPlaintextDocstring"></a><div id="ParsedPlaintextDocstring-def"><a name="L28"></a><tt class="py-lineno">28</tt> <a class="py-toggle" href="#" id="ParsedPlaintextDocstring-toggle" onclick="return toggle('ParsedPlaintextDocstring');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="epydoc.markup.plaintext.ParsedPlaintextDocstring-class.html">ParsedPlaintextDocstring</a><tt class="py-op">(</tt><tt class="py-base-class">ParsedDocstring</tt [...]
+</div><div id="ParsedPlaintextDocstring-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="ParsedPlaintextDocstring-expanded"><a name="ParsedPlaintextDocstring.__init__"></a><div id="ParsedPlaintextDocstring.__init__-def"><a name="L29"></a><tt class="py-lineno">29</tt> <a class="py-toggle" href="#" id="ParsedPlaintextDocstring.__init__-toggle" onclick="return toggle('ParsedPlaintextDocstring.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a  [...]
+</div><div id="ParsedPlaintextDocstring.__init__-collapsed" style="display:none;" pad="++" indent="++++++++"></div><div id="ParsedPlaintextDocstring.__init__-expanded"><a name="L30"></a><tt class="py-lineno">30</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_verbatim</tt> <tt class="py-op">=</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'ver [...]
+<a name="L31"></a><tt class="py-lineno">31</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">text</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">,</tt> <tt class="py-string">'Bad text value (expected a str)'</tt> </tt>
+<a name="L32"></a><tt class="py-lineno">32</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_text</tt> <tt class="py-op">=</tt> <tt class="py-name">text</tt> </tt>
+</div><a name="L33"></a><tt class="py-lineno">33</tt>  <tt class="py-line"> </tt>
+<a name="ParsedPlaintextDocstring.to_html"></a><div id="ParsedPlaintextDocstring.to_html-def"><a name="L34"></a><tt class="py-lineno">34</tt> <a class="py-toggle" href="#" id="ParsedPlaintextDocstring.to_html-toggle" onclick="return toggle('ParsedPlaintextDocstring.to_html');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.plaintext.ParsedPlaintextDocstring-class.html#to_html">to_html</a><tt class="py-op">(</tt><tt class="py-param" [...]
+</div><div id="ParsedPlaintextDocstring.to_html-collapsed" style="display:none;" pad="++" indent="++++++++"></div><div id="ParsedPlaintextDocstring.to_html-expanded"><a name="L35"></a><tt class="py-lineno">35</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'verbatim'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">. [...]
+<a name="L36"></a><tt class="py-lineno">36</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt id="link-8" class="py-name"><a title="epydoc.util.plaintext_to_html" class="py-name" href="#" onclick="return doclink('link-8', 'plaintext_to_html', 'link-4');">plaintext_to_html</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-9" class="py-name" targets="Method epydoc.markup.ConcatenatedDocstring.to_plaintext()=epydoc.ma [...]
+epydoc.markup.ParsedDocstring.to_plaintext
+epydoc.markup.epytext.ParsedEpytextDocstring.to_plaintext
+epydoc.markup.epytext.to_plaintext
+epydoc.markup.javadoc.ParsedJavadocDocstring.to_plaintext
+epydoc.markup.plaintext.ParsedPlaintextDocstring.to_plaintext
+epydoc.markup.restructuredtext.ParsedRstDocstring.to_plaintext" class="py-name" href="#" onclick="return doclink('link-9', 'to_plaintext', 'link-9');">to_plaintext</a></tt><tt class="py-op">(</tt><tt class="py-name">docstring_linker</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L37"></a><tt class="py-lineno">37</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L38"></a><tt class="py-lineno">38</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt id="link-10" class="py-name" targets="Class epydoc.markup.ParsedDocstring=epydoc.markup.ParsedDocstring-class.html"><a title="epydoc.markup.ParsedDocstring" class="py-name" href="#" onclick="return doclink('link-10', 'ParsedDocstring', 'link-10');">ParsedDocstring</a></tt><tt class="py-op">.</tt><tt id="link-11" class="py-name" targets="Method epydoc.docwriter.dotgraph. [...]
+epydoc.markup.ConcatenatedDocstring.to_html
+epydoc.markup.ParsedDocstring.to_html
+epydoc.markup.epytext.ParsedEpytextDocstring.to_html
+epydoc.markup.javadoc.ParsedJavadocDocstring.to_html
+epydoc.markup.plaintext.ParsedPlaintextDocstring.to_html
+epydoc.markup.restructuredtext.ParsedRstDocstring.to_html" class="py-name" href="#" onclick="return doclink('link-11', 'to_html', 'link-11');">to_html</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">docstring_linker</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-name">options</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L39"></a><tt class="py-lineno">39</tt>  <tt class="py-line"> </tt>
+<a name="ParsedPlaintextDocstring.to_latex"></a><div id="ParsedPlaintextDocstring.to_latex-def"><a name="L40"></a><tt class="py-lineno">40</tt> <a class="py-toggle" href="#" id="ParsedPlaintextDocstring.to_latex-toggle" onclick="return toggle('ParsedPlaintextDocstring.to_latex');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.plaintext.ParsedPlaintextDocstring-class.html#to_latex">to_latex</a><tt class="py-op">(</tt><tt class="py- [...]
+</div><div id="ParsedPlaintextDocstring.to_latex-collapsed" style="display:none;" pad="++" indent="++++++++"></div><div id="ParsedPlaintextDocstring.to_latex-expanded"><a name="L41"></a><tt class="py-lineno">41</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'verbatim'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op" [...]
+<a name="L42"></a><tt class="py-lineno">42</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt id="link-12" class="py-name"><a title="epydoc.util.plaintext_to_latex" class="py-name" href="#" onclick="return doclink('link-12', 'plaintext_to_latex', 'link-5');">plaintext_to_latex</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-13" class="py-name"><a title="epydoc.markup.ConcatenatedDocstring.to_plaintext
+epydoc.markup.ParsedDocstring.to_plaintext
+epydoc.markup.epytext.ParsedEpytextDocstring.to_plaintext
+epydoc.markup.epytext.to_plaintext
+epydoc.markup.javadoc.ParsedJavadocDocstring.to_plaintext
+epydoc.markup.plaintext.ParsedPlaintextDocstring.to_plaintext
+epydoc.markup.restructuredtext.ParsedRstDocstring.to_plaintext" class="py-name" href="#" onclick="return doclink('link-13', 'to_plaintext', 'link-9');">to_plaintext</a></tt><tt class="py-op">(</tt><tt class="py-name">docstring_linker</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L43"></a><tt class="py-lineno">43</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L44"></a><tt class="py-lineno">44</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt id="link-14" class="py-name"><a title="epydoc.markup.ParsedDocstring" class="py-name" href="#" onclick="return doclink('link-14', 'ParsedDocstring', 'link-10');">ParsedDocstring</a></tt><tt class="py-op">.</tt><tt id="link-15" class="py-name" targets="Method epydoc.markup.ConcatenatedDocstring.to_latex()=epydoc.markup.ConcatenatedDocstring-class.html#to_latex,Method epy [...]
+epydoc.markup.ParsedDocstring.to_latex
+epydoc.markup.epytext.ParsedEpytextDocstring.to_latex
+epydoc.markup.plaintext.ParsedPlaintextDocstring.to_latex
+epydoc.markup.restructuredtext.ParsedRstDocstring.to_latex" class="py-name" href="#" onclick="return doclink('link-15', 'to_latex', 'link-15');">to_latex</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">docstring_linker</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-name">options</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L45"></a><tt class="py-lineno">45</tt>  <tt class="py-line"> </tt>
+<a name="ParsedPlaintextDocstring.to_plaintext"></a><div id="ParsedPlaintextDocstring.to_plaintext-def"><a name="L46"></a><tt class="py-lineno">46</tt> <a class="py-toggle" href="#" id="ParsedPlaintextDocstring.to_plaintext-toggle" onclick="return toggle('ParsedPlaintextDocstring.to_plaintext');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.plaintext.ParsedPlaintextDocstring-class.html#to_plaintext">to_plaintext</a><tt class="py- [...]
+</div><div id="ParsedPlaintextDocstring.to_plaintext-collapsed" style="display:none;" pad="++" indent="++++++++"></div><div id="ParsedPlaintextDocstring.to_plaintext-expanded"><a name="L47"></a><tt class="py-lineno">47</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-string">'indent'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">options</tt><tt class="py-op">:</tt> </tt>
+<a name="L48"></a><tt class="py-lineno">48</tt>  <tt class="py-line">            <tt class="py-name">indent</tt> <tt class="py-op">=</tt> <tt class="py-name">options</tt><tt class="py-op">[</tt><tt class="py-string">'indent'</tt><tt class="py-op">]</tt> </tt>
+<a name="L49"></a><tt class="py-lineno">49</tt>  <tt class="py-line">            <tt class="py-name">lines</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_text</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L50"></a><tt class="py-lineno">50</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">'\n'</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">' '</tt><tt class="py-op">*</tt><tt class="py-name">indent</tt><tt class="py-op">+</tt><tt class="py-name">l</tt> <tt class="py-keyword">for</tt> <tt class="py-name">l</tt> <tt class="py-keyword">in</tt> <tt class="py-name [...]
+<a name="L51"></a><tt class="py-lineno">51</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_text</tt><tt class="py-op">+</tt><tt class="py-string">'\n'</tt> </tt>
+</div><a name="L52"></a><tt class="py-lineno">52</tt>  <tt class="py-line">     </tt>
+<a name="L53"></a><tt class="py-lineno">53</tt>  <tt class="py-line">    <tt id="link-16" class="py-name" targets="Variable epydoc.markup.epytext.ParsedEpytextDocstring._SUMMARY_RE=epydoc.markup.epytext.ParsedEpytextDocstring-class.html#_SUMMARY_RE,Variable epydoc.markup.javadoc.ParsedJavadocDocstring._SUMMARY_RE=epydoc.markup.javadoc.ParsedJavadocDocstring-class.html#_SUMMARY_RE,Variable epydoc.markup.plaintext.ParsedPlaintextDocstring._SUMMARY_RE=epydoc.markup.plaintext.ParsedPlaintext [...]
+epydoc.markup.javadoc.ParsedJavadocDocstring._SUMMARY_RE
+epydoc.markup.plaintext.ParsedPlaintextDocstring._SUMMARY_RE
+epydoc.markup.restructuredtext._SummaryExtractor._SUMMARY_RE" class="py-name" href="#" onclick="return doclink('link-16', '_SUMMARY_RE', 'link-16');">_SUMMARY_RE</a></tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">compile</tt><tt class="py-op">(</tt><tt class="py-string">r'(\s*[\w\W]*?(?:\.(\s|$)|[\n][\t ]*[\n]))'</tt><tt class="py-op">)</tt> </tt>
+<a name="L54"></a><tt class="py-lineno">54</tt>  <tt class="py-line"> </tt>
+<a name="ParsedPlaintextDocstring.summary"></a><div id="ParsedPlaintextDocstring.summary-def"><a name="L55"></a><tt class="py-lineno">55</tt> <a class="py-toggle" href="#" id="ParsedPlaintextDocstring.summary-toggle" onclick="return toggle('ParsedPlaintextDocstring.summary');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.plaintext.ParsedPlaintextDocstring-class.html#summary">summary</a><tt class="py-op">(</tt><tt class="py-param" [...]
+</div><div id="ParsedPlaintextDocstring.summary-collapsed" style="display:none;" pad="++" indent="++++++++"></div><div id="ParsedPlaintextDocstring.summary-expanded"><a name="L56"></a><tt class="py-lineno">56</tt>  <tt class="py-line">        <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-17" class="py-name"><a title="epydoc.markup.epytext.ParsedEpytextDocstring._SUMMARY_RE
+epydoc.markup.javadoc.ParsedJavadocDocstring._SUMMARY_RE
+epydoc.markup.plaintext.ParsedPlaintextDocstring._SUMMARY_RE
+epydoc.markup.restructuredtext._SummaryExtractor._SUMMARY_RE" class="py-name" href="#" onclick="return doclink('link-17', '_SUMMARY_RE', 'link-16');">_SUMMARY_RE</a></tt><tt class="py-op">.</tt><tt class="py-name">match</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_text</tt><tt class="py-op">)</tt> </tt>
+<a name="L57"></a><tt class="py-lineno">57</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">m</tt><tt class="py-op">:</tt> </tt>
+<a name="L58"></a><tt class="py-lineno">58</tt>  <tt class="py-line">            <tt class="py-name">other</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_text</tt><tt class="py-op">[</tt><tt class="py-name">m</tt><tt class="py-op">.</tt><tt class="py-name">end</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt>
+<a name="L59"></a><tt class="py-lineno">59</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt id="link-18" class="py-name"><a title="epydoc.markup.plaintext.ParsedPlaintextDocstring" class="py-name" href="#" onclick="return doclink('link-18', 'ParsedPlaintextDocstring', 'link-6');">ParsedPlaintextDocstring</a></tt><tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">.</tt><tt class="py-name">group</tt><tt class="py-op">(</t [...]
+<a name="L60"></a><tt class="py-lineno">60</tt>  <tt class="py-line">                    <tt class="py-name">other</tt> <tt class="py-op">!=</tt> <tt class="py-string">''</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">other</tt><tt class="py-op">.</tt><tt class="py-name">isspace</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L61"></a><tt class="py-lineno">61</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L62"></a><tt class="py-lineno">62</tt>  <tt class="py-line">            <tt class="py-name">parts</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_text</tt><tt class="py-op">.</tt><tt class="py-name">strip</tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">,</tt> <tt c [...]
+<a name="L63"></a><tt class="py-lineno">63</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">parts</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L64"></a><tt class="py-lineno">64</tt>  <tt class="py-line">                <tt id="link-19" class="py-name" targets="Variable epydoc.apidoc.APIDoc.summary=epydoc.apidoc.APIDoc-class.html#summary,Method epydoc.docwriter.html.HTMLWriter.summary()=epydoc.docwriter.html.HTMLWriter-class.html#summary,Method epydoc.markup.ConcatenatedDocstring.summary()=epydoc.markup.ConcatenatedDocstring-class.html#summary,Method epydoc.markup.ParsedDocstring.summary()=epydoc.markup.ParsedDocstring- [...]
+epydoc.docwriter.html.HTMLWriter.summary
+epydoc.markup.ConcatenatedDocstring.summary
+epydoc.markup.ParsedDocstring.summary
+epydoc.markup.epytext.ParsedEpytextDocstring.summary
+epydoc.markup.javadoc.ParsedJavadocDocstring.summary
+epydoc.markup.plaintext.ParsedPlaintextDocstring.summary
+epydoc.markup.restructuredtext.ParsedRstDocstring.summary" class="py-name" href="#" onclick="return doclink('link-19', 'summary', 'link-19');">summary</a></tt> <tt class="py-op">=</tt> <tt class="py-name">parts</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L65"></a><tt class="py-lineno">65</tt>  <tt class="py-line">                <tt class="py-name">other</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L66"></a><tt class="py-lineno">66</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L67"></a><tt class="py-lineno">67</tt>  <tt class="py-line">                <tt id="link-20" class="py-name"><a title="epydoc.apidoc.APIDoc.summary
+epydoc.docwriter.html.HTMLWriter.summary
+epydoc.markup.ConcatenatedDocstring.summary
+epydoc.markup.ParsedDocstring.summary
+epydoc.markup.epytext.ParsedEpytextDocstring.summary
+epydoc.markup.javadoc.ParsedJavadocDocstring.summary
+epydoc.markup.plaintext.ParsedPlaintextDocstring.summary
+epydoc.markup.restructuredtext.ParsedRstDocstring.summary" class="py-name" href="#" onclick="return doclink('link-20', 'summary', 'link-19');">summary</a></tt> <tt class="py-op">=</tt> <tt class="py-name">parts</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">+</tt> <tt class="py-string">'...'</tt> </tt>
+<a name="L68"></a><tt class="py-lineno">68</tt>  <tt class="py-line">                <tt class="py-name">other</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L69"></a><tt class="py-lineno">69</tt>  <tt class="py-line">                 </tt>
+<a name="L70"></a><tt class="py-lineno">70</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt id="link-21" class="py-name"><a title="epydoc.markup.plaintext.ParsedPlaintextDocstring" class="py-name" href="#" onclick="return doclink('link-21', 'ParsedPlaintextDocstring', 'link-6');">ParsedPlaintextDocstring</a></tt><tt class="py-op">(</tt><tt id="link-22" class="py-name"><a title="epydoc.apidoc.APIDoc.summary
+epydoc.docwriter.html.HTMLWriter.summary
+epydoc.markup.ConcatenatedDocstring.summary
+epydoc.markup.ParsedDocstring.summary
+epydoc.markup.epytext.ParsedEpytextDocstring.summary
+epydoc.markup.javadoc.ParsedJavadocDocstring.summary
+epydoc.markup.plaintext.ParsedPlaintextDocstring.summary
+epydoc.markup.restructuredtext.ParsedRstDocstring.summary" class="py-name" href="#" onclick="return doclink('link-22', 'summary', 'link-19');">summary</a></tt><tt class="py-op">,</tt> <tt class="py-name">verbatim</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">other</tt> </tt>
+</div></div><a name="L71"></a><tt class="py-lineno">71</tt>  <tt class="py-line">         </tt>
+<a name="L72"></a><tt class="py-lineno">72</tt>  <tt class="py-line"><tt class="py-comment">#     def concatenate(self, other):</tt> </tt>
+<a name="L73"></a><tt class="py-lineno">73</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#         if not isinstance(other, ParsedPlaintextDocstring):</tt> </tt>
+<a name="L74"></a><tt class="py-lineno">74</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#             raise ValueError, 'Could not concatenate docstrings'</tt> </tt>
+<a name="L75"></a><tt class="py-lineno">75</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#         text = self._text+other._text</tt> </tt>
+<a name="L76"></a><tt class="py-lineno">76</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#         options = self._options.copy()</tt> </tt>
+<a name="L77"></a><tt class="py-lineno">77</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#         options.update(other._options)</tt> </tt>
+<a name="L78"></a><tt class="py-lineno">78</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#         return ParsedPlaintextDocstring(text, options)</tt> </tt>
+<a name="L79"></a><tt class="py-lineno">79</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:09:20 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.markup.plaintext.ParsedPlaintextDocstring-class.html b/doc/api/epydoc.markup.plaintext.ParsedPlaintextDocstring-class.html
new file mode 100644
index 0000000..fb32efd
--- /dev/null
+++ b/doc/api/epydoc.markup.plaintext.ParsedPlaintextDocstring-class.html
@@ -0,0 +1,523 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.markup.plaintext.ParsedPlaintextDocstring</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.markup-module.html">Package markup</a> ::
+        <a href="epydoc.markup.plaintext-module.html">Module plaintext</a> ::
+        Class ParsedPlaintextDocstring
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.markup.plaintext.ParsedPlaintextDocstring-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class ParsedPlaintextDocstring</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.markup.plaintext-pysrc.html#ParsedPlaintextDocstring">source code</a></span></p>
+<center>
+<center>  <map id="uml_class_diagram_for_epydoc_m_14" name="uml_class_diagram_for_epydoc_m_14">
+<area shape="rect" href="epydoc.markup.ParsedDocstring-class.html#split_fields" title="Split this docstring into its body and its fields." alt="" coords="60,36,241,55" />
+<area shape="rect" href="epydoc.markup.ParsedDocstring-class.html#concatenate" title="Returns:  A new parsed docstring containing the concatination of this docstring and  other." alt="" coords="60,55,241,73" />
+<area shape="rect" href="epydoc.markup.ParsedDocstring-class.html#__add__" title="epydoc.markup.ParsedDocstring.__add__" alt="" coords="60,73,241,92" />
+<area shape="rect" href="epydoc.markup.ParsedDocstring-class.html#index_terms" title="Returns:  The list of index terms that are defined in this docstring." alt="" coords="60,92,241,111" />
+<area shape="rect" href="epydoc.markup.ParsedDocstring-class.html" title="A standard intermediate representation for parsed docstrings that can be used to generate output." alt="" coords="48,5,253,117" />
+<area shape="rect" href="epydoc.markup.plaintext.ParsedPlaintextDocstring-class.html#__init__" title="epydoc.markup.plaintext.ParsedPlaintextDocstring.__init__" alt="" coords="17,167,284,185" />
+<area shape="rect" href="epydoc.markup.plaintext.ParsedPlaintextDocstring-class.html#to_html" title="Translate this docstring to HTML." alt="" coords="17,185,284,204" />
+<area shape="rect" href="epydoc.markup.plaintext.ParsedPlaintextDocstring-class.html#to_latex" title="Translate this docstring to LaTeX." alt="" coords="17,204,284,223" />
+<area shape="rect" href="epydoc.markup.plaintext.ParsedPlaintextDocstring-class.html#to_plaintext" title="Translate this docstring to plaintext." alt="" coords="17,223,284,241" />
+<area shape="rect" href="epydoc.markup.plaintext.ParsedPlaintextDocstring-class.html#summary" title="Returns:  A pair consisting of a short summary of this docstring and a boolean value  indicating whether there is further documentation in addition to the  summary." alt="" coords="17,241,284,260" />
+<area shape="rect" href="epydoc.markup.plaintext.ParsedPlaintextDocstring-class.html" title="epydoc.markup.plaintext.ParsedPlaintextDocstring" alt="" coords="5,136,296,267" />
+</map>
+  <img src="uml_class_diagram_for_epydoc_m_14.gif" alt='' usemap="#uml_class_diagram_for_epydoc_m_14" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__init__"></a><span class="summary-sig-name">__init__</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">text</span>,
+        <span class="summary-sig-arg">**options</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.plaintext-pysrc.html#ParsedPlaintextDocstring.__init__">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for___init___38-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for___init___38-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for___init___38" name="call_graph_for___init___38">
+<area shape="rect" href="epydoc.markup.plaintext.ParsedPlaintextDocstring-class.html#__init__" title="__init__()" alt="" coords="209,34,305,66" />
+<area shape="rect" href="epydoc.markup.plaintext.ParsedPlaintextDocstring-class.html#summary" title="summary()" alt="" coords="31,6,135,38" />
+<area shape="rect" href="epydoc.markup.plaintext-module.html#parse_docstring" title="parse_docstring()" alt="" coords="7,62,159,94" />
+</map>
+  <img src="call_graph_for___init___38.gif" alt='' usemap="#call_graph_for___init___38" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>string</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.plaintext.ParsedPlaintextDocstring-class.html#to_html" class="summary-sig-name">to_html</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">docstring_linker</span>,
+        <span class="summary-sig-arg">**options</span>)</span><br />
+      Translate this docstring to HTML.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.plaintext-pysrc.html#ParsedPlaintextDocstring.to_html">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_to_html_6-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_to_html_6-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_to_html_6" name="call_graph_for_to_html_6">
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#description" title="docwriter.html.HTMLWriter.description()" alt="" coords="33,34,369,66" />
+<area shape="rect" href="epydoc.markup.plaintext.ParsedPlaintextDocstring-class.html#to_html" title="to_html()" alt="" coords="447,62,537,94" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#docstring_to_html" title="docwriter.html.HTMLWriter.docstring_to_html()" alt="" coords="7,90,396,122" />
+<area shape="rect" href="epydoc.markup.ParsedDocstring-class.html#to_html" title="ParsedDocstring.to_html()" alt="" coords="588,6,807,38" />
+<area shape="rect" href="epydoc.markup.plaintext.ParsedPlaintextDocstring-class.html#to_plaintext" title="to_plaintext()" alt="" coords="636,62,759,94" />
+<area shape="rect" href="epydoc.util-module.html#plaintext_to_html" title="util.plaintext_to_html()" alt="" coords="599,118,796,150" />
+</map>
+  <img src="call_graph_for_to_html_6.gif" alt='' usemap="#call_graph_for_to_html_6" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>string</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.plaintext.ParsedPlaintextDocstring-class.html#to_latex" class="summary-sig-name">to_latex</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">docstring_linker</span>,
+        <span class="summary-sig-arg">**options</span>)</span><br />
+      Translate this docstring to LaTeX.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.plaintext-pysrc.html#ParsedPlaintextDocstring.to_latex">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>string</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.plaintext.ParsedPlaintextDocstring-class.html#to_plaintext" class="summary-sig-name">to_plaintext</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">docstring_linker</span>,
+        <span class="summary-sig-arg">**options</span>)</span><br />
+      Translate this docstring to plaintext.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.plaintext-pysrc.html#ParsedPlaintextDocstring.to_plaintext">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_to_plaintext_6-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_to_plaintext_6-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_to_plaintext_6" name="call_graph_for_to_plaintext_6">
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_summary" title="docwriter.dotgraph.DotGraphUmlClassNode._summary()" alt="" coords="7,6,458,38" />
+<area shape="rect" href="epydoc.markup.plaintext.ParsedPlaintextDocstring-class.html#to_plaintext" title="to_plaintext()" alt="" coords="507,62,630,94" />
+<area shape="rect" href="epydoc.markup.ParsedDocstring-class.html#to_html" title="ParsedDocstring.to_html()" alt="" coords="123,62,342,94" />
+<area shape="rect" href="epydoc.markup.plaintext.ParsedPlaintextDocstring-class.html#to_html" title="to_html()" alt="" coords="187,118,278,150" />
+</map>
+  <img src="call_graph_for_to_plaintext_6.gif" alt='' usemap="#call_graph_for_to_plaintext_6" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">(<a href="epydoc.markup.ParsedDocstring-class.html" 
+      class="link">ParsedDocstring</a>, <code>bool</code>)</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.plaintext.ParsedPlaintextDocstring-class.html#summary" class="summary-sig-name">summary</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Returns:
+      A pair consisting of a short summary of this docstring and a boolean 
+      value indicating whether there is further documentation in addition 
+      to the summary.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.plaintext-pysrc.html#ParsedPlaintextDocstring.summary">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_summary_6-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_summary_6-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_summary_6" name="call_graph_for_summary_6">
+<area shape="rect" href="epydoc.docstringparser-module.html#parse_docstring" title="docstringparser.parse_docstring()" alt="" coords="5,6,277,38" />
+<area shape="rect" href="epydoc.markup.plaintext.ParsedPlaintextDocstring-class.html#summary" title="summary()" alt="" coords="325,6,429,38" />
+<area shape="rect" href="epydoc.markup.plaintext.ParsedPlaintextDocstring-class.html#__init__" title="__init__()" alt="" coords="479,6,575,38" />
+</map>
+  <img src="call_graph_for_summary_6.gif" alt='' usemap="#call_graph_for_summary_6" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.markup.ParsedDocstring-class.html">ParsedDocstring</a></code></b>:
+      <code><a href="epydoc.markup.ParsedDocstring-class.html#__add__">__add__</a></code>,
+      <code><a href="epydoc.markup.ParsedDocstring-class.html#concatenate">concatenate</a></code>,
+      <code><a href="epydoc.markup.ParsedDocstring-class.html#index_terms">index_terms</a></code>,
+      <code><a href="epydoc.markup.ParsedDocstring-class.html#split_fields">split_fields</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Class Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-ClassVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="_SUMMARY_RE"></a><span class="summary-name">_SUMMARY_RE</span> = <code title="re.compile(r'(\s*[\w\W]*?(?:\.(\s|$)|\n[\t ]*\n))')">re.compile(r'<code class="re-group">(</code>\s<code class="re-op">*</code><code class="re-group">[</code>\w\W<code class="re-group">]</code><code class="re-op">*?</code><code class="re-group">(?:</code>\.<code class="re-group">(</code>\s<code class="re-op">|</code>$<code class="re-group">)</code><code class="re-op">|</code>\n<code class="re-g [...]
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Method Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-MethodDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="to_html"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">to_html</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">docstring_linker</span>,
+        <span class="sig-arg">**options</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.plaintext-pysrc.html#ParsedPlaintextDocstring.to_html">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_to_html_6-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_to_html_6-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_to_html_6" name="call_graph_for_to_html_6">
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#description" title="docwriter.html.HTMLWriter.description()" alt="" coords="33,34,369,66" />
+<area shape="rect" href="epydoc.markup.plaintext.ParsedPlaintextDocstring-class.html#to_html" title="to_html()" alt="" coords="447,62,537,94" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#docstring_to_html" title="docwriter.html.HTMLWriter.docstring_to_html()" alt="" coords="7,90,396,122" />
+<area shape="rect" href="epydoc.markup.ParsedDocstring-class.html#to_html" title="ParsedDocstring.to_html()" alt="" coords="588,6,807,38" />
+<area shape="rect" href="epydoc.markup.plaintext.ParsedPlaintextDocstring-class.html#to_plaintext" title="to_plaintext()" alt="" coords="636,62,759,94" />
+<area shape="rect" href="epydoc.util-module.html#plaintext_to_html" title="util.plaintext_to_html()" alt="" coords="599,118,796,150" />
+</map>
+  <img src="call_graph_for_to_html_6.gif" alt='' usemap="#call_graph_for_to_html_6" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Translate this docstring to HTML.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>docstring_linker</code></strong> - An HTML translator for crossreference links into and out of the 
+          docstring.</li>
+        <li><strong class="pname"><code>options</code></strong> - Any extra options for the output.  Unknown options are ignored.</li>
+    </ul></dd>
+    <dt>Returns: <code>string</code></dt>
+        <dd>An HTML fragment that encodes this docstring.</dd>
+    <dt>Overrides:
+        <a href="epydoc.markup.ParsedDocstring-class.html#to_html">ParsedDocstring.to_html</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="to_latex"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">to_latex</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">docstring_linker</span>,
+        <span class="sig-arg">**options</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.plaintext-pysrc.html#ParsedPlaintextDocstring.to_latex">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Translate this docstring to LaTeX.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>docstring_linker</code></strong> - A LaTeX translator for crossreference links into and out of the 
+          docstring.</li>
+        <li><strong class="pname"><code>options</code></strong> - Any extra options for the output.  Unknown options are ignored.</li>
+    </ul></dd>
+    <dt>Returns: <code>string</code></dt>
+        <dd>A LaTeX fragment that encodes this docstring.</dd>
+    <dt>Overrides:
+        <a href="epydoc.markup.ParsedDocstring-class.html#to_latex">ParsedDocstring.to_latex</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="to_plaintext"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">to_plaintext</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">docstring_linker</span>,
+        <span class="sig-arg">**options</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.plaintext-pysrc.html#ParsedPlaintextDocstring.to_plaintext">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_to_plaintext_6-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_to_plaintext_6-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_to_plaintext_6" name="call_graph_for_to_plaintext_6">
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_summary" title="docwriter.dotgraph.DotGraphUmlClassNode._summary()" alt="" coords="7,6,458,38" />
+<area shape="rect" href="epydoc.markup.plaintext.ParsedPlaintextDocstring-class.html#to_plaintext" title="to_plaintext()" alt="" coords="507,62,630,94" />
+<area shape="rect" href="epydoc.markup.ParsedDocstring-class.html#to_html" title="ParsedDocstring.to_html()" alt="" coords="123,62,342,94" />
+<area shape="rect" href="epydoc.markup.plaintext.ParsedPlaintextDocstring-class.html#to_html" title="to_html()" alt="" coords="187,118,278,150" />
+</map>
+  <img src="call_graph_for_to_plaintext_6.gif" alt='' usemap="#call_graph_for_to_plaintext_6" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Translate this docstring to plaintext.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>docstring_linker</code></strong> - A plaintext translator for crossreference links into and out of 
+          the docstring.</li>
+        <li><strong class="pname"><code>options</code></strong> - Any extra options for the output.  Unknown options are ignored.</li>
+    </ul></dd>
+    <dt>Returns: <code>string</code></dt>
+        <dd>A plaintext fragment that encodes this docstring.</dd>
+    <dt>Overrides:
+        <a href="epydoc.markup.ParsedDocstring-class.html#to_plaintext">ParsedDocstring.to_plaintext</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="summary"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">summary</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.plaintext-pysrc.html#ParsedPlaintextDocstring.summary">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_summary_6-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_summary_6-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_summary_6" name="call_graph_for_summary_6">
+<area shape="rect" href="epydoc.docstringparser-module.html#parse_docstring" title="docstringparser.parse_docstring()" alt="" coords="5,6,277,38" />
+<area shape="rect" href="epydoc.markup.plaintext.ParsedPlaintextDocstring-class.html#summary" title="summary()" alt="" coords="325,6,429,38" />
+<area shape="rect" href="epydoc.markup.plaintext.ParsedPlaintextDocstring-class.html#__init__" title="__init__()" alt="" coords="479,6,575,38" />
+</map>
+  <img src="call_graph_for_summary_6.gif" alt='' usemap="#call_graph_for_summary_6" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  
+  <dl class="fields">
+    <dt>Returns: (<a href="epydoc.markup.ParsedDocstring-class.html" 
+      class="link">ParsedDocstring</a>, <code>bool</code>)</dt>
+        <dd>A pair consisting of a short summary of this docstring and a 
+          boolean value indicating whether there is further documentation 
+          in addition to the summary. Typically, the summary consists of 
+          the first sentence of the docstring.</dd>
+    <dt>Overrides:
+        <a href="epydoc.markup.ParsedDocstring-class.html#summary">ParsedDocstring.summary</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:08:39 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.markup.pyval_repr-module.html b/doc/api/epydoc.markup.pyval_repr-module.html
new file mode 100644
index 0000000..9285f41
--- /dev/null
+++ b/doc/api/epydoc.markup.pyval_repr-module.html
@@ -0,0 +1,284 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.markup.pyval_repr</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.markup-module.html">Package markup</a> ::
+        Module pyval_repr
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.markup.pyval_repr-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module pyval_repr</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.markup.pyval_repr-pysrc.html">source code</a></span></p>
+<p>Syntax highlighter for Python values.  Currently provides special 
+  colorization support for:</p>
+  <ul>
+    <li>
+      lists, tuples, sets, frozensets, dicts
+    </li>
+    <li>
+      numbers
+    </li>
+    <li>
+      strings
+    </li>
+    <li>
+      compiled regexps
+    </li>
+  </ul>
+  <p>The highlighter also takes care of line-wrapping, and automatically 
+  stops generating repr output as soon as it has exceeded the specified 
+  number of lines (which should make it faster than pprint for large 
+  values).  It does <i>not</i> bother to do automatic cycle detection, 
+  because maxlines is typically around 5, so it's really not worth it.</p>
+  <p>The syntax-highlighted output is encoded using a <a 
+  href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html" 
+  class="link">ParsedEpytextDocstring</a>, which can then be used to 
+  generate output in a variety of formats.</p>
+
+<!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Classes</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Classes"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.markup.pyval_repr._ColorizerState-class.html" class="summary-name" onclick="show_private();">_ColorizerState</a><br />
+      An object uesd to keep track of the current state of the pyval 
+        colorizer.
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.markup.pyval_repr._Maxlines-class.html" class="summary-name" onclick="show_private();">_Maxlines</a><br />
+      A control-flow exception that is raised when PyvalColorizer exeeds 
+        the maximum number of allowed lines.
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.markup.pyval_repr._Linebreak-class.html" class="summary-name" onclick="show_private();">_Linebreak</a><br />
+      A control-flow exception that is raised when PyvalColorizer 
+        generates a string containing a newline, but the state object's 
+        linebreakok variable is False.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.markup.pyval_repr.ColorizedPyvalRepr-class.html" class="summary-name">ColorizedPyvalRepr</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.markup.pyval_repr.PyvalColorizer-class.html" class="summary-name">PyvalColorizer</a><br />
+      Syntax highlighter for Python values.
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTIONS ==================== -->
+<a name="section-Functions"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Functions</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Functions"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="is_re_pattern"></a><span class="summary-sig-name">is_re_pattern</span>(<span class="summary-sig-arg">pyval</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.pyval_repr-pysrc.html#is_re_pattern">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_is_re_pattern-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_is_re_pattern-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_is_re_pattern" name="call_graph_for_is_re_pattern">
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_colorize" title="PyvalColorizer._colorize()" alt="" coords="7,6,225,38" />
+<area shape="rect" href="epydoc.markup.pyval_repr-module.html#is_re_pattern" title="is_re_pattern()" alt="" coords="276,6,407,38" />
+</map>
+  <img src="call_graph_for_is_re_pattern.gif" alt='' usemap="#call_graph_for_is_re_pattern" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="colorize_pyval"></a><span class="summary-sig-name">colorize_pyval</span>(<span class="summary-sig-arg">pyval</span>,
+        <span class="summary-sig-arg">parse_repr</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">min_score</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">linelen</span>=<span class="summary-sig-default">75</span>,
+        <span class="summary-sig-arg">maxlines</span>=<span class="summary-sig-default">5</span>,
+        <span class="summary-sig-arg">linebreakok</span>=<span class="summary-sig-default">True</span>,
+        <span class="summary-sig-arg">sort</span>=<span class="summary-sig-default">True</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.pyval_repr-pysrc.html#colorize_pyval">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_colorize_pyval-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_colorize_pyval-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_colorize_pyval" name="call_graph_for_colorize_pyval">
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#pyval_repr" title="apidoc.ValueDoc.pyval_repr()" alt="" coords="46,6,294,38" />
+<area shape="rect" href="epydoc.markup.pyval_repr-module.html#colorize_pyval" title="colorize_pyval()" alt="" coords="383,34,527,66" />
+<area shape="rect" href="epydoc.apidoc.ValueDoc-class.html#summary_pyval_repr" title="apidoc.ValueDoc.summary_pyval_repr()" alt="" coords="6,62,334,94" />
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#__init__" title="PyvalColorizer.__init__()" alt="" coords="576,6,790,38" />
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#colorize" title="PyvalColorizer.colorize()" alt="" coords="578,62,788,94" />
+</map>
+  <img src="call_graph_for_colorize_pyval.gif" alt='' usemap="#call_graph_for_colorize_pyval" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:06:46 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.markup.pyval_repr-pysrc.html b/doc/api/epydoc.markup.pyval_repr-pysrc.html
new file mode 100644
index 0000000..8ac88ce
--- /dev/null
+++ b/doc/api/epydoc.markup.pyval_repr-pysrc.html
@@ -0,0 +1,728 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.markup.pyval_repr</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.markup-module.html">Package markup</a> ::
+        Module pyval_repr
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.markup.pyval_repr-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="epydoc.markup.pyval_repr-module.html">Module epydoc.markup.pyval_repr</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno">  1</tt>  <tt class="py-line"><tt class="py-comment"># epydoc -- Marked-up Representations for Python Values</tt> </tt>
+<a name="L2"></a><tt class="py-lineno">  2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L3"></a><tt class="py-lineno">  3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2005 Edward Loper</tt> </tt>
+<a name="L4"></a><tt class="py-lineno">  4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Author: Edward Loper <edloper at loper.org></tt> </tt>
+<a name="L5"></a><tt class="py-lineno">  5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># URL: <http://epydoc.sf.net></tt> </tt>
+<a name="L6"></a><tt class="py-lineno">  6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L7"></a><tt class="py-lineno">  7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># $Id: apidoc.py 1448 2007-02-11 00:05:34Z dvarrazzo $</tt> </tt>
+<a name="L8"></a><tt class="py-lineno">  8</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L9"></a><tt class="py-lineno">  9</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L10"></a><tt class="py-lineno"> 10</tt>  <tt class="py-line"><tt class="py-docstring">Syntax highlighter for Python values.  Currently provides special</tt> </tt>
+<a name="L11"></a><tt class="py-lineno"> 11</tt>  <tt class="py-line"><tt class="py-docstring">colorization support for:</tt> </tt>
+<a name="L12"></a><tt class="py-lineno"> 12</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L13"></a><tt class="py-lineno"> 13</tt>  <tt class="py-line"><tt class="py-docstring">  - lists, tuples, sets, frozensets, dicts</tt> </tt>
+<a name="L14"></a><tt class="py-lineno"> 14</tt>  <tt class="py-line"><tt class="py-docstring">  - numbers</tt> </tt>
+<a name="L15"></a><tt class="py-lineno"> 15</tt>  <tt class="py-line"><tt class="py-docstring">  - strings</tt> </tt>
+<a name="L16"></a><tt class="py-lineno"> 16</tt>  <tt class="py-line"><tt class="py-docstring">  - compiled regexps</tt> </tt>
+<a name="L17"></a><tt class="py-lineno"> 17</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L18"></a><tt class="py-lineno"> 18</tt>  <tt class="py-line"><tt class="py-docstring">The highlighter also takes care of line-wrapping, and automatically</tt> </tt>
+<a name="L19"></a><tt class="py-lineno"> 19</tt>  <tt class="py-line"><tt class="py-docstring">stops generating repr output as soon as it has exceeded the specified</tt> </tt>
+<a name="L20"></a><tt class="py-lineno"> 20</tt>  <tt class="py-line"><tt class="py-docstring">number of lines (which should make it faster than pprint for large</tt> </tt>
+<a name="L21"></a><tt class="py-lineno"> 21</tt>  <tt class="py-line"><tt class="py-docstring">values).  It does I{not} bother to do automatic cycle detection,</tt> </tt>
+<a name="L22"></a><tt class="py-lineno"> 22</tt>  <tt class="py-line"><tt class="py-docstring">because maxlines is typically around 5, so it's really not worth it.</tt> </tt>
+<a name="L23"></a><tt class="py-lineno"> 23</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L24"></a><tt class="py-lineno"> 24</tt>  <tt class="py-line"><tt class="py-docstring">The syntax-highlighted output is encoded using a</tt> </tt>
+<a name="L25"></a><tt class="py-lineno"> 25</tt>  <tt class="py-line"><tt class="py-docstring">L{ParsedEpytextDocstring}, which can then be used to generate output in</tt> </tt>
+<a name="L26"></a><tt class="py-lineno"> 26</tt>  <tt class="py-line"><tt class="py-docstring">a variety of formats.</tt> </tt>
+<a name="L27"></a><tt class="py-lineno"> 27</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L28"></a><tt class="py-lineno"> 28</tt>  <tt class="py-line"><tt class="py-name">__docformat__</tt> <tt class="py-op">=</tt> <tt class="py-string">'epytext en'</tt> </tt>
+<a name="L29"></a><tt class="py-lineno"> 29</tt>  <tt class="py-line"> </tt>
+<a name="L30"></a><tt class="py-lineno"> 30</tt>  <tt class="py-line"><tt class="py-comment"># Implementation note: we use exact tests for classes (list, etc)</tt> </tt>
+<a name="L31"></a><tt class="py-lineno"> 31</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># rather than using isinstance, because subclasses might override</tt> </tt>
+<a name="L32"></a><tt class="py-lineno"> 32</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># __repr__.</tt> </tt>
+<a name="L33"></a><tt class="py-lineno"> 33</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L34"></a><tt class="py-lineno"> 34</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">types</tt><tt class="py-op">,</tt> <tt class="py-name">re</tt> </tt>
+<a name="L35"></a><tt class="py-lineno"> 35</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-0" class="py-name" targets="Package epydoc=epydoc-module.html"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-0', 'epydoc', 'link-0');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-1" class="py-name" targets="Module epydoc.apidoc=epydoc.apidoc-module.html"><a title="epydoc.apidoc" class="py-name" href="#" onclick="return doclink('link-1',  [...]
+<a name="L36"></a><tt class="py-lineno"> 36</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-2" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-2', 'epydoc', 'link-0');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-3" class="py-name" targets="Module epydoc.test.util=epydoc.test.util-module.html,Module epydoc.util=epydoc.util-module.html"><a title="epydoc.test.util
+epydoc.util" class="py-name" href="#" onclick="return doclink('link-3', 'util', 'link-3');">util</a></tt> <tt class="py-keyword">import</tt> <tt id="link-4" class="py-name" targets="Function epydoc.util.decode_with_backslashreplace()=epydoc.util-module.html#decode_with_backslashreplace"><a title="epydoc.util.decode_with_backslashreplace" class="py-name" href="#" onclick="return doclink('link-4', 'decode_with_backslashreplace', 'link-4');">decode_with_backslashreplace</a></tt> </tt>
+<a name="L37"></a><tt class="py-lineno"> 37</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-5" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-5', 'epydoc', 'link-0');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-6" class="py-name"><a title="epydoc.test.util
+epydoc.util" class="py-name" href="#" onclick="return doclink('link-6', 'util', 'link-3');">util</a></tt> <tt class="py-keyword">import</tt> <tt id="link-7" class="py-name" targets="Function epydoc.util.plaintext_to_html()=epydoc.util-module.html#plaintext_to_html"><a title="epydoc.util.plaintext_to_html" class="py-name" href="#" onclick="return doclink('link-7', 'plaintext_to_html', 'link-7');">plaintext_to_html</a></tt><tt class="py-op">,</tt> <tt id="link-8" class="py-name" targets="F [...]
+<a name="L38"></a><tt class="py-lineno"> 38</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-9" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-9', 'epydoc', 'link-0');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-10" class="py-name" targets="Module epydoc.compat=epydoc.compat-module.html"><a title="epydoc.compat" class="py-name" href="#" onclick="return doclink('link-10', 'compat', 'link-10');">compat</a></tt> <tt c [...]
+<a name="L39"></a><tt class="py-lineno"> 39</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">sre_parse</tt><tt class="py-op">,</tt> <tt class="py-name">sre_constants</tt> </tt>
+<a name="L40"></a><tt class="py-lineno"> 40</tt>  <tt class="py-line"> </tt>
+<a name="L41"></a><tt class="py-lineno"> 41</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-11" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-11', 'epydoc', 'link-0');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-12" class="py-name" targets="Package epydoc.markup=epydoc.markup-module.html,Method epydoc.markup.doctest.DoctestColorizer.markup()=epydoc.markup.doctest.DoctestColorizer-class.html#markup,Method epydoc.m [...]
+epydoc.markup.doctest.DoctestColorizer.markup
+epydoc.markup.doctest.HTMLDoctestColorizer.markup
+epydoc.markup.doctest.LaTeXDoctestColorizer.markup
+epydoc.markup.doctest.XMLDoctestColorizer.markup" class="py-name" href="#" onclick="return doclink('link-12', 'markup', 'link-12');">markup</a></tt><tt class="py-op">.</tt><tt id="link-13" class="py-name" targets="Module epydoc.markup.epytext=epydoc.markup.epytext-module.html"><a title="epydoc.markup.epytext" class="py-name" href="#" onclick="return doclink('link-13', 'epytext', 'link-13');">epytext</a></tt> <tt class="py-keyword">import</tt> <tt id="link-14" class="py-name" targets="Cla [...]
+<a name="L42"></a><tt class="py-lineno"> 42</tt>  <tt class="py-line"> </tt>
+<a name="is_re_pattern"></a><div id="is_re_pattern-def"><a name="L43"></a><tt class="py-lineno"> 43</tt> <a class="py-toggle" href="#" id="is_re_pattern-toggle" onclick="return toggle('is_re_pattern');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.pyval_repr-module.html#is_re_pattern">is_re_pattern</a><tt class="py-op">(</tt><tt class="py-param">pyval</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="is_re_pattern-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="is_re_pattern-expanded"><a name="L44"></a><tt class="py-lineno"> 44</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt id="link-16" class="py-name" targets="Variable epydoc.apidoc.ValueDoc.pyval=epydoc.apidoc.ValueDoc-class.html#pyval"><a title="epydoc.apidoc.ValueDoc.pyval" class="py-name" href="#" onclick="return doc [...]
+</div><a name="L45"></a><tt class="py-lineno"> 45</tt>  <tt class="py-line"> </tt>
+<a name="_ColorizerState"></a><div id="_ColorizerState-def"><a name="L46"></a><tt class="py-lineno"> 46</tt> <a class="py-toggle" href="#" id="_ColorizerState-toggle" onclick="return toggle('_ColorizerState');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="epydoc.markup.pyval_repr._ColorizerState-class.html">_ColorizerState</a><tt class="py-op">:</tt> </tt>
+</div><div id="_ColorizerState-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_ColorizerState-expanded"><a name="L47"></a><tt class="py-lineno"> 47</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L48"></a><tt class="py-lineno"> 48</tt>  <tt class="py-line"><tt class="py-docstring">    An object uesd to keep track of the current state of the pyval</tt> </tt>
+<a name="L49"></a><tt class="py-lineno"> 49</tt>  <tt class="py-line"><tt class="py-docstring">    colorizer.  The L{mark()}/L{restore()} methods can be used to set</tt> </tt>
+<a name="L50"></a><tt class="py-lineno"> 50</tt>  <tt class="py-line"><tt class="py-docstring">    a backup point, and restore back to that backup point.  This is</tt> </tt>
+<a name="L51"></a><tt class="py-lineno"> 51</tt>  <tt class="py-line"><tt class="py-docstring">    used by several colorization methods that first try colorizing</tt> </tt>
+<a name="L52"></a><tt class="py-lineno"> 52</tt>  <tt class="py-line"><tt class="py-docstring">    their object on a single line (setting linebreakok=False); and</tt> </tt>
+<a name="L53"></a><tt class="py-lineno"> 53</tt>  <tt class="py-line"><tt class="py-docstring">    then fall back on a multi-line output if that fails.  The L{score}</tt> </tt>
+<a name="L54"></a><tt class="py-lineno"> 54</tt>  <tt class="py-line"><tt class="py-docstring">    variable is used to keep track of a 'score', reflecting how good</tt> </tt>
+<a name="L55"></a><tt class="py-lineno"> 55</tt>  <tt class="py-line"><tt class="py-docstring">    we think this repr is.  E.g., unhelpful values like '<Foo instance</tt> </tt>
+<a name="L56"></a><tt class="py-lineno"> 56</tt>  <tt class="py-line"><tt class="py-docstring">    at 0x12345>' get low scores.  If the score is too low, we'll use</tt> </tt>
+<a name="L57"></a><tt class="py-lineno"> 57</tt>  <tt class="py-line"><tt class="py-docstring">    the parse-derived repr instead.</tt> </tt>
+<a name="L58"></a><tt class="py-lineno"> 58</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="_ColorizerState.__init__"></a><div id="_ColorizerState.__init__-def"><a name="L59"></a><tt class="py-lineno"> 59</tt> <a class="py-toggle" href="#" id="_ColorizerState.__init__-toggle" onclick="return toggle('_ColorizerState.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.pyval_repr._ColorizerState-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt [...]
+</div><div id="_ColorizerState.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="_ColorizerState.__init__-expanded"><a name="L60"></a><tt class="py-lineno"> 60</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L61"></a><tt class="py-lineno"> 61</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">charpos</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L62"></a><tt class="py-lineno"> 62</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-17" class="py-name" targets="Variable epydoc.apidoc.RoutineDoc.lineno=epydoc.apidoc.RoutineDoc-class.html#lineno"><a title="epydoc.apidoc.RoutineDoc.lineno" class="py-name" href="#" onclick="return doclink('link-17', 'lineno', 'link-17');">lineno</a></tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L63"></a><tt class="py-lineno"> 63</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">linebreakok</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L64"></a><tt class="py-lineno"> 64</tt>  <tt class="py-line">         </tt>
+<a name="L65"></a><tt class="py-lineno"> 65</tt>  <tt class="py-line">        <tt class="py-comment">#: How good this represention is?</tt> </tt>
+<a name="L66"></a><tt class="py-lineno"> 66</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">score</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+</div><a name="L67"></a><tt class="py-lineno"> 67</tt>  <tt class="py-line"> </tt>
+<a name="_ColorizerState.mark"></a><div id="_ColorizerState.mark-def"><a name="L68"></a><tt class="py-lineno"> 68</tt> <a class="py-toggle" href="#" id="_ColorizerState.mark-toggle" onclick="return toggle('_ColorizerState.mark');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.pyval_repr._ColorizerState-class.html#mark">mark</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ColorizerState.mark-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="_ColorizerState.mark-expanded"><a name="L69"></a><tt class="py-lineno"> 69</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">result</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">self</t [...]
+<a name="L70"></a><tt class="py-lineno"> 70</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-18" class="py-name"><a title="epydoc.apidoc.RoutineDoc.lineno" class="py-name" href="#" onclick="return doclink('link-18', 'lineno', 'link-17');">lineno</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">linebreakok</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class=" [...]
+</div><a name="L71"></a><tt class="py-lineno"> 71</tt>  <tt class="py-line"> </tt>
+<a name="_ColorizerState.restore"></a><div id="_ColorizerState.restore-def"><a name="L72"></a><tt class="py-lineno"> 72</tt> <a class="py-toggle" href="#" id="_ColorizerState.restore-toggle" onclick="return toggle('_ColorizerState.restore');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.pyval_repr._ColorizerState-class.html#restore">restore</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt clas [...]
+</div><div id="_ColorizerState.restore-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="_ColorizerState.restore-expanded"><a name="L73"></a><tt class="py-lineno"> 73</tt>  <tt class="py-line">        <tt class="py-name">n</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">charpos</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-19" class="py-name"><a title="epydoc.a [...]
+<a name="L74"></a><tt class="py-lineno"> 74</tt>  <tt class="py-line">        <tt class="py-keyword">del</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">result</tt><tt class="py-op">[</tt><tt class="py-name">n</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt>
+</div></div><a name="L75"></a><tt class="py-lineno"> 75</tt>  <tt class="py-line"> </tt>
+<a name="_Maxlines"></a><div id="_Maxlines-def"><a name="L76"></a><tt class="py-lineno"> 76</tt> <a class="py-toggle" href="#" id="_Maxlines-toggle" onclick="return toggle('_Maxlines');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="epydoc.markup.pyval_repr._Maxlines-class.html">_Maxlines</a><tt class="py-op">(</tt><tt class="py-base-class">Exception</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_Maxlines-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_Maxlines-expanded"><a name="L77"></a><tt class="py-lineno"> 77</tt>  <tt class="py-line">    <tt class="py-docstring">"""A control-flow exception that is raised when PyvalColorizer</tt> </tt>
+<a name="L78"></a><tt class="py-lineno"> 78</tt>  <tt class="py-line"><tt class="py-docstring">    exeeds the maximum number of allowed lines."""</tt> </tt>
+</div><a name="L79"></a><tt class="py-lineno"> 79</tt>  <tt class="py-line">     </tt>
+<a name="_Linebreak"></a><div id="_Linebreak-def"><a name="L80"></a><tt class="py-lineno"> 80</tt> <a class="py-toggle" href="#" id="_Linebreak-toggle" onclick="return toggle('_Linebreak');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="epydoc.markup.pyval_repr._Linebreak-class.html">_Linebreak</a><tt class="py-op">(</tt><tt class="py-base-class">Exception</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_Linebreak-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_Linebreak-expanded"><a name="L81"></a><tt class="py-lineno"> 81</tt>  <tt class="py-line">    <tt class="py-docstring">"""A control-flow exception that is raised when PyvalColorizer</tt> </tt>
+<a name="L82"></a><tt class="py-lineno"> 82</tt>  <tt class="py-line"><tt class="py-docstring">    generates a string containing a newline, but the state object's</tt> </tt>
+<a name="L83"></a><tt class="py-lineno"> 83</tt>  <tt class="py-line"><tt class="py-docstring">    linebreakok variable is False."""</tt> </tt>
+</div><a name="L84"></a><tt class="py-lineno"> 84</tt>  <tt class="py-line"> </tt>
+<a name="ColorizedPyvalRepr"></a><div id="ColorizedPyvalRepr-def"><a name="L85"></a><tt class="py-lineno"> 85</tt> <a class="py-toggle" href="#" id="ColorizedPyvalRepr-toggle" onclick="return toggle('ColorizedPyvalRepr');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="epydoc.markup.pyval_repr.ColorizedPyvalRepr-class.html">ColorizedPyvalRepr</a><tt class="py-op">(</tt><tt class="py-base-class">ParsedEpytextDocstring</tt><tt class="py-op">)</tt><t [...]
+</div><div id="ColorizedPyvalRepr-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="ColorizedPyvalRepr-expanded"><a name="L86"></a><tt class="py-lineno"> 86</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L87"></a><tt class="py-lineno"> 87</tt>  <tt class="py-line"><tt class="py-docstring">    @ivar score: A score, evaluating how good this repr is.</tt> </tt>
+<a name="L88"></a><tt class="py-lineno"> 88</tt>  <tt class="py-line"><tt class="py-docstring">    @ivar is_complete: True if this colorized repr completely describes</tt> </tt>
+<a name="L89"></a><tt class="py-lineno"> 89</tt>  <tt class="py-line"><tt class="py-docstring">       the object.</tt> </tt>
+<a name="L90"></a><tt class="py-lineno"> 90</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="ColorizedPyvalRepr.__init__"></a><div id="ColorizedPyvalRepr.__init__-def"><a name="L91"></a><tt class="py-lineno"> 91</tt> <a class="py-toggle" href="#" id="ColorizedPyvalRepr.__init__-toggle" onclick="return toggle('ColorizedPyvalRepr.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.pyval_repr.ColorizedPyvalRepr-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="p [...]
+</div><div id="ColorizedPyvalRepr.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ColorizedPyvalRepr.__init__-expanded"><a name="L92"></a><tt class="py-lineno"> 92</tt>  <tt class="py-line">        <tt id="link-21" class="py-name"><a title="epydoc.markup.epytext.ParsedEpytextDocstring" class="py-name" href="#" onclick="return doclink('link-21', 'ParsedEpytextDocstring', 'link-15');">ParsedEpytextDocstring</a></tt><tt class="py-op">.</tt><tt id="link-2 [...]
+epydoc.apidoc.DocIndex.__init__
+epydoc.apidoc.DottedName.__init__
+epydoc.apidoc.NamespaceDoc.__init__
+epydoc.apidoc.VariableDoc.__init__
+epydoc.apidoc._Sentinel.__init__
+epydoc.checker.DocChecker.__init__
+epydoc.cli.ConsoleLogger.__init__
+epydoc.cli.HTMLLogger.__init__
+epydoc.cli.TerminalController.__init__
+epydoc.cli.UnifiedProgressConsoleLogger.__init__
+epydoc.docbuilder.BuildOptions.__init__
+epydoc.docbuilder._ProgressEstimator.__init__
+epydoc.docintrospecter._DevNull.__init__
+epydoc.docstringparser.DocstringField.__init__
+epydoc.docwriter.dotgraph.DotGraph.__init__
+epydoc.docwriter.dotgraph.DotGraphEdge.__init__
+epydoc.docwriter.dotgraph.DotGraphNode.__init__
+epydoc.docwriter.dotgraph.DotGraphUmlClassNode.__init__
+epydoc.docwriter.dotgraph.DotGraphUmlModuleNode.__init__
+epydoc.docwriter.html.HTMLWriter.__init__
+epydoc.docwriter.html._HTMLDocstringLinker.__init__
+epydoc.docwriter.html_colorize.PythonSourceColorizer.__init__
+epydoc.docwriter.latex.LatexWriter.__init__
+epydoc.docwriter.xlink.ApiLinkReader.__init__
+epydoc.docwriter.xlink.DocUrlGenerator.__init__
+epydoc.gui.EpydocGUI.__init__
+epydoc.gui.GUILogger.__init__
+epydoc.log.SimpleLogger.__init__
+epydoc.markup.ConcatenatedDocstring.__init__
+epydoc.markup.Field.__init__
+epydoc.markup.ParseError.__init__
+epydoc.markup.epytext.ColorizingError.__init__
+epydoc.markup.epytext.Element.__init__
+epydoc.markup.epytext.ParsedEpytextDocstring.__init__
+epydoc.markup.epytext.Token.__init__
+epydoc.markup.javadoc.ParsedJavadocDocstring.__init__
+epydoc.markup.plaintext.ParsedPlaintextDocstring.__init__
+epydoc.markup.pyval_repr.ColorizedPyvalRepr.__init__
+epydoc.markup.pyval_repr.PyvalColorizer.__init__
+epydoc.markup.pyval_repr._ColorizerState.__init__
+epydoc.markup.restructuredtext.ParsedRstDocstring.__init__
+epydoc.markup.restructuredtext._DocumentPseudoWriter.__init__
+epydoc.markup.restructuredtext._EpydocHTMLTranslator.__init__
+epydoc.markup.restructuredtext._EpydocLaTeXTranslator.__init__
+epydoc.markup.restructuredtext._EpydocReader.__init__
+epydoc.markup.restructuredtext._SplitFieldsTranslator.__init__
+epydoc.markup.restructuredtext._SummaryExtractor.__init__
+epydoc.markup.restructuredtext._TermsExtractor.__init__
+epydoc.markup.restructuredtext.dotgraph.__init__
+epydoc.util.RunSubprocessError.__init__" class="py-name" href="#" onclick="return doclink('link-22', '__init__', 'link-22');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">tree</tt><tt class="py-op">)</tt> </tt>
+<a name="L93"></a><tt class="py-lineno"> 93</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">score</tt> <tt class="py-op">=</tt> <tt class="py-name">score</tt> </tt>
+<a name="L94"></a><tt class="py-lineno"> 94</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">is_complete</tt> <tt class="py-op">=</tt> <tt class="py-name">is_complete</tt> </tt>
+</div></div><a name="L95"></a><tt class="py-lineno"> 95</tt>  <tt class="py-line"> </tt>
+<a name="colorize_pyval"></a><div id="colorize_pyval-def"><a name="L96"></a><tt class="py-lineno"> 96</tt> <a class="py-toggle" href="#" id="colorize_pyval-toggle" onclick="return toggle('colorize_pyval');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.pyval_repr-module.html#colorize_pyval">colorize_pyval</a><tt class="py-op">(</tt><tt class="py-param">pyval</tt><tt class="py-op">,</tt> <tt class="py-param">parse_repr</tt><tt class="p [...]
+<a name="L97"></a><tt class="py-lineno"> 97</tt>  <tt class="py-line">                   <tt class="py-param">linelen</tt><tt class="py-op">=</tt><tt class="py-number">75</tt><tt class="py-op">,</tt> <tt class="py-param">maxlines</tt><tt class="py-op">=</tt><tt class="py-number">5</tt><tt class="py-op">,</tt> <tt class="py-param">linebreakok</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> <tt class="py-param">sort</tt><tt class="py-op">=</tt><tt class="p [...]
+</div><div id="colorize_pyval-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="colorize_pyval-expanded"><a name="L98"></a><tt class="py-lineno"> 98</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-23" class="py-name" targets="Class epydoc.markup.pyval_repr.PyvalColorizer=epydoc.markup.pyval_repr.PyvalColorizer-class.html"><a title="epydoc.markup.pyval_repr.PyvalColorizer" class="py-name" href="#" onclick="return doclink('link-23', 'Pyva [...]
+epydoc.markup.pyval_repr.PyvalColorizer.colorize" class="py-name" href="#" onclick="return doclink('link-24', 'colorize', 'link-24');">colorize</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L99"></a><tt class="py-lineno"> 99</tt>  <tt class="py-line">        <tt id="link-25" class="py-name"><a title="epydoc.apidoc.ValueDoc.pyval" class="py-name" href="#" onclick="return doclink('link-25', 'pyval', 'link-16');">pyval</a></tt><tt class="py-op">,</tt> <tt id="link-26" class="py-name" targets="Variable epydoc.apidoc.ValueDoc.parse_repr=epydoc.apidoc.ValueDoc-class.html#parse_repr"><a title="epydoc.apidoc.ValueDoc.parse_repr" class="py-name" href="#" onclick="return doc [...]
+</div><a name="L100"></a><tt class="py-lineno">100</tt>  <tt class="py-line"> </tt>
+<a name="PyvalColorizer"></a><div id="PyvalColorizer-def"><a name="L101"></a><tt class="py-lineno">101</tt> <a class="py-toggle" href="#" id="PyvalColorizer-toggle" onclick="return toggle('PyvalColorizer');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html">PyvalColorizer</a><tt class="py-op">:</tt> </tt>
+</div><div id="PyvalColorizer-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="PyvalColorizer-expanded"><a name="L102"></a><tt class="py-lineno">102</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L103"></a><tt class="py-lineno">103</tt>  <tt class="py-line"><tt class="py-docstring">    Syntax highlighter for Python values.</tt> </tt>
+<a name="L104"></a><tt class="py-lineno">104</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L105"></a><tt class="py-lineno">105</tt>  <tt class="py-line"> </tt>
+<a name="PyvalColorizer.__init__"></a><div id="PyvalColorizer.__init__-def"><a name="L106"></a><tt class="py-lineno">106</tt> <a class="py-toggle" href="#" id="PyvalColorizer.__init__-toggle" onclick="return toggle('PyvalColorizer.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt cl [...]
+</div><div id="PyvalColorizer.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="PyvalColorizer.__init__-expanded"><a name="L107"></a><tt class="py-lineno">107</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">linelen</tt> <tt class="py-op">=</tt> <tt class="py-name">linelen</tt> </tt>
+<a name="L108"></a><tt class="py-lineno">108</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">maxlines</tt> <tt class="py-op">=</tt> <tt class="py-name">maxlines</tt> </tt>
+<a name="L109"></a><tt class="py-lineno">109</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">linebreakok</tt> <tt class="py-op">=</tt> <tt class="py-name">linebreakok</tt> </tt>
+<a name="L110"></a><tt class="py-lineno">110</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sort</tt> <tt class="py-op">=</tt> <tt class="py-name">sort</tt> </tt>
+</div><a name="L111"></a><tt class="py-lineno">111</tt>  <tt class="py-line"> </tt>
+<a name="L112"></a><tt class="py-lineno">112</tt>  <tt class="py-line">    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L113"></a><tt class="py-lineno">113</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># Colorization Tags & other constants</tt> </tt>
+<a name="L114"></a><tt class="py-lineno">114</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L115"></a><tt class="py-lineno">115</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L116"></a><tt class="py-lineno">116</tt>  <tt class="py-line">    <tt id="link-27" class="py-name" targets="Variable epydoc.markup.pyval_repr.PyvalColorizer.GROUP_TAG=epydoc.markup.pyval_repr.PyvalColorizer-class.html#GROUP_TAG"><a title="epydoc.markup.pyval_repr.PyvalColorizer.GROUP_TAG" class="py-name" href="#" onclick="return doclink('link-27', 'GROUP_TAG', 'link-27');">GROUP_TAG</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'variable-group'</tt>     <tt class="py-c [...]
+<a name="L117"></a><tt class="py-lineno">117</tt>  <tt class="py-line">    <tt id="link-28" class="py-name" targets="Variable epydoc.markup.pyval_repr.PyvalColorizer.COMMA_TAG=epydoc.markup.pyval_repr.PyvalColorizer-class.html#COMMA_TAG"><a title="epydoc.markup.pyval_repr.PyvalColorizer.COMMA_TAG" class="py-name" href="#" onclick="return doclink('link-28', 'COMMA_TAG', 'link-28');">COMMA_TAG</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'variable-op'</tt>        <tt class="py-c [...]
+<a name="L118"></a><tt class="py-lineno">118</tt>  <tt class="py-line">    <tt id="link-29" class="py-name" targets="Variable epydoc.markup.pyval_repr.PyvalColorizer.COLON_TAG=epydoc.markup.pyval_repr.PyvalColorizer-class.html#COLON_TAG"><a title="epydoc.markup.pyval_repr.PyvalColorizer.COLON_TAG" class="py-name" href="#" onclick="return doclink('link-29', 'COLON_TAG', 'link-29');">COLON_TAG</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'variable-op'</tt>        <tt class="py-c [...]
+<a name="L119"></a><tt class="py-lineno">119</tt>  <tt class="py-line">    <tt id="link-30" class="py-name" targets="Variable epydoc.markup.pyval_repr.PyvalColorizer.CONST_TAG=epydoc.markup.pyval_repr.PyvalColorizer-class.html#CONST_TAG"><a title="epydoc.markup.pyval_repr.PyvalColorizer.CONST_TAG" class="py-name" href="#" onclick="return doclink('link-30', 'CONST_TAG', 'link-30');">CONST_TAG</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt>                 <tt class="py-com [...]
+<a name="L120"></a><tt class="py-lineno">120</tt>  <tt class="py-line">    <tt id="link-31" class="py-name" targets="Variable epydoc.markup.pyval_repr.PyvalColorizer.NUMBER_TAG=epydoc.markup.pyval_repr.PyvalColorizer-class.html#NUMBER_TAG"><a title="epydoc.markup.pyval_repr.PyvalColorizer.NUMBER_TAG" class="py-name" href="#" onclick="return doclink('link-31', 'NUMBER_TAG', 'link-31');">NUMBER_TAG</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt>                <tt class="py [...]
+<a name="L121"></a><tt class="py-lineno">121</tt>  <tt class="py-line">    <tt id="link-32" class="py-name" targets="Variable epydoc.markup.pyval_repr.PyvalColorizer.QUOTE_TAG=epydoc.markup.pyval_repr.PyvalColorizer-class.html#QUOTE_TAG"><a title="epydoc.markup.pyval_repr.PyvalColorizer.QUOTE_TAG" class="py-name" href="#" onclick="return doclink('link-32', 'QUOTE_TAG', 'link-32');">QUOTE_TAG</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'variable-quote'</tt>     <tt class="py-c [...]
+<a name="L122"></a><tt class="py-lineno">122</tt>  <tt class="py-line">    <tt id="link-33" class="py-name" targets="Variable epydoc.markup.pyval_repr.PyvalColorizer.STRING_TAG=epydoc.markup.pyval_repr.PyvalColorizer-class.html#STRING_TAG"><a title="epydoc.markup.pyval_repr.PyvalColorizer.STRING_TAG" class="py-name" href="#" onclick="return doclink('link-33', 'STRING_TAG', 'link-33');">STRING_TAG</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'variable-string'</tt>   <tt class=" [...]
+<a name="L123"></a><tt class="py-lineno">123</tt>  <tt class="py-line"> </tt>
+<a name="L124"></a><tt class="py-lineno">124</tt>  <tt class="py-line">    <tt id="link-34" class="py-name" targets="Variable epydoc.markup.pyval_repr.PyvalColorizer.RE_CHAR_TAG=epydoc.markup.pyval_repr.PyvalColorizer-class.html#RE_CHAR_TAG"><a title="epydoc.markup.pyval_repr.PyvalColorizer.RE_CHAR_TAG" class="py-name" href="#" onclick="return doclink('link-34', 'RE_CHAR_TAG', 'link-34');">RE_CHAR_TAG</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L125"></a><tt class="py-lineno">125</tt>  <tt class="py-line">    <tt id="link-35" class="py-name" targets="Variable epydoc.markup.pyval_repr.PyvalColorizer.RE_GROUP_TAG=epydoc.markup.pyval_repr.PyvalColorizer-class.html#RE_GROUP_TAG"><a title="epydoc.markup.pyval_repr.PyvalColorizer.RE_GROUP_TAG" class="py-name" href="#" onclick="return doclink('link-35', 'RE_GROUP_TAG', 'link-35');">RE_GROUP_TAG</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'re-group'</tt> </tt>
+<a name="L126"></a><tt class="py-lineno">126</tt>  <tt class="py-line">    <tt id="link-36" class="py-name" targets="Variable epydoc.markup.pyval_repr.PyvalColorizer.RE_REF_TAG=epydoc.markup.pyval_repr.PyvalColorizer-class.html#RE_REF_TAG"><a title="epydoc.markup.pyval_repr.PyvalColorizer.RE_REF_TAG" class="py-name" href="#" onclick="return doclink('link-36', 'RE_REF_TAG', 'link-36');">RE_REF_TAG</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'re-ref'</tt> </tt>
+<a name="L127"></a><tt class="py-lineno">127</tt>  <tt class="py-line">    <tt id="link-37" class="py-name" targets="Variable epydoc.markup.pyval_repr.PyvalColorizer.RE_OP_TAG=epydoc.markup.pyval_repr.PyvalColorizer-class.html#RE_OP_TAG"><a title="epydoc.markup.pyval_repr.PyvalColorizer.RE_OP_TAG" class="py-name" href="#" onclick="return doclink('link-37', 'RE_OP_TAG', 'link-37');">RE_OP_TAG</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'re-op'</tt> </tt>
+<a name="L128"></a><tt class="py-lineno">128</tt>  <tt class="py-line">    <tt id="link-38" class="py-name" targets="Variable epydoc.markup.pyval_repr.PyvalColorizer.RE_FLAGS_TAG=epydoc.markup.pyval_repr.PyvalColorizer-class.html#RE_FLAGS_TAG"><a title="epydoc.markup.pyval_repr.PyvalColorizer.RE_FLAGS_TAG" class="py-name" href="#" onclick="return doclink('link-38', 'RE_FLAGS_TAG', 'link-38');">RE_FLAGS_TAG</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'re-flags'</tt> </tt>
+<a name="L129"></a><tt class="py-lineno">129</tt>  <tt class="py-line"> </tt>
+<a name="L130"></a><tt class="py-lineno">130</tt>  <tt class="py-line">    <tt id="link-39" class="py-name" targets="Variable epydoc.markup.pyval_repr.PyvalColorizer.ELLIPSIS=epydoc.markup.pyval_repr.PyvalColorizer-class.html#ELLIPSIS"><a title="epydoc.markup.pyval_repr.PyvalColorizer.ELLIPSIS" class="py-name" href="#" onclick="return doclink('link-39', 'ELLIPSIS', 'link-39');">ELLIPSIS</a></tt> <tt class="py-op">=</tt> <tt id="link-40" class="py-name"><a title="epydoc.markup.epytext.Ele [...]
+<a name="L131"></a><tt class="py-lineno">131</tt>  <tt class="py-line">    <tt id="link-41" class="py-name" targets="Variable epydoc.markup.pyval_repr.PyvalColorizer.LINEWRAP=epydoc.markup.pyval_repr.PyvalColorizer-class.html#LINEWRAP"><a title="epydoc.markup.pyval_repr.PyvalColorizer.LINEWRAP" class="py-name" href="#" onclick="return doclink('link-41', 'LINEWRAP', 'link-41');">LINEWRAP</a></tt> <tt class="py-op">=</tt> <tt id="link-42" class="py-name"><a title="epydoc.markup.epytext.Ele [...]
+<a name="L132"></a><tt class="py-lineno">132</tt>  <tt class="py-line">    <tt id="link-43" class="py-name" targets="Variable epydoc.markup.pyval_repr.PyvalColorizer.UNKNOWN_REPR=epydoc.markup.pyval_repr.PyvalColorizer-class.html#UNKNOWN_REPR"><a title="epydoc.markup.pyval_repr.PyvalColorizer.UNKNOWN_REPR" class="py-name" href="#" onclick="return doclink('link-43', 'UNKNOWN_REPR', 'link-43');">UNKNOWN_REPR</a></tt> <tt class="py-op">=</tt> <tt id="link-44" class="py-name"><a title="epydo [...]
+<a name="L133"></a><tt class="py-lineno">133</tt>  <tt class="py-line">     </tt>
+<a name="L134"></a><tt class="py-lineno">134</tt>  <tt class="py-line">    <tt id="link-45" class="py-name" targets="Variable epydoc.markup.pyval_repr.PyvalColorizer.GENERIC_OBJECT_RE=epydoc.markup.pyval_repr.PyvalColorizer-class.html#GENERIC_OBJECT_RE"><a title="epydoc.markup.pyval_repr.PyvalColorizer.GENERIC_OBJECT_RE" class="py-name" href="#" onclick="return doclink('link-45', 'GENERIC_OBJECT_RE', 'link-45');">GENERIC_OBJECT_RE</a></tt> <tt class="py-op">=</tt> <tt class="py-name">re< [...]
+<a name="L135"></a><tt class="py-lineno">135</tt>  <tt class="py-line"> </tt>
+<a name="L136"></a><tt class="py-lineno">136</tt>  <tt class="py-line">    <tt id="link-46" class="py-name" targets="Variable epydoc.markup.pyval_repr.PyvalColorizer.ESCAPE_UNICODE=epydoc.markup.pyval_repr.PyvalColorizer-class.html#ESCAPE_UNICODE"><a title="epydoc.markup.pyval_repr.PyvalColorizer.ESCAPE_UNICODE" class="py-name" href="#" onclick="return doclink('link-46', 'ESCAPE_UNICODE', 'link-46');">ESCAPE_UNICODE</a></tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> <tt cla [...]
+<a name="L137"></a><tt class="py-lineno">137</tt>  <tt class="py-line"> </tt>
+<a name="L138"></a><tt class="py-lineno">138</tt>  <tt class="py-line">    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L139"></a><tt class="py-lineno">139</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># Entry Point</tt> </tt>
+<a name="L140"></a><tt class="py-lineno">140</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L141"></a><tt class="py-lineno">141</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="PyvalColorizer.colorize"></a><div id="PyvalColorizer.colorize-def"><a name="L142"></a><tt class="py-lineno">142</tt> <a class="py-toggle" href="#" id="PyvalColorizer.colorize-toggle" onclick="return toggle('PyvalColorizer.colorize');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#colorize">colorize</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt cl [...]
+</div><div id="PyvalColorizer.colorize-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="PyvalColorizer.colorize-expanded"><a name="L143"></a><tt class="py-lineno">143</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L144"></a><tt class="py-lineno">144</tt>  <tt class="py-line"><tt class="py-docstring">        @return: A L{ColorizedPyvalRepr} describing the given pyval.</tt> </tt>
+<a name="L145"></a><tt class="py-lineno">145</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L146"></a><tt class="py-lineno">146</tt>  <tt class="py-line">        <tt id="link-47" class="py-name" targets="Variable epydoc.apidoc.UNKNOWN=epydoc.apidoc-module.html#UNKNOWN"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-47', 'UNKNOWN', 'link-47');">UNKNOWN</a></tt> <tt class="py-op">=</tt> <tt id="link-48" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-48', 'epydoc', 'link-0');">epydoc</a></t [...]
+<a name="L147"></a><tt class="py-lineno">147</tt>  <tt class="py-line">        <tt class="py-comment"># Create an object to keep track of the colorization.</tt> </tt>
+<a name="L148"></a><tt class="py-lineno">148</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">state</tt> <tt class="py-op">=</tt> <tt id="link-51" class="py-name" targets="Class epydoc.markup.pyval_repr._ColorizerState=epydoc.markup.pyval_repr._ColorizerState-class.html"><a title="epydoc.markup.pyval_repr._ColorizerState" class="py-name" href="#" onclick="return doclink('link-51', '_ColorizerState', 'link-51');">_ColorizerState</a></tt><tt class="py-op">( [...]
+<a name="L149"></a><tt class="py-lineno">149</tt>  <tt class="py-line">        <tt class="py-name">state</tt><tt class="py-op">.</tt><tt class="py-name">linebreakok</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">linebreakok</tt> </tt>
+<a name="L150"></a><tt class="py-lineno">150</tt>  <tt class="py-line">        <tt class="py-comment"># Colorize the value.  If we reach maxlines, then add on an</tt> </tt>
+<a name="L151"></a><tt class="py-lineno">151</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># ellipsis marker and call it a day.</tt> </tt>
+<a name="L152"></a><tt class="py-lineno">152</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L153"></a><tt class="py-lineno">153</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt id="link-52" class="py-name"><a title="epydoc.apidoc.ValueDoc.pyval" class="py-name" href="#" onclick="return doclink('link-52', 'pyval', 'link-16');">pyval</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt id="link-53" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-53', 'UNKNOWN', 'link-47 [...]
+<a name="L154"></a><tt class="py-lineno">154</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-54" class="py-name" targets="Function epydoc.markup.epytext._colorize()=epydoc.markup.epytext-module.html#_colorize,Method epydoc.markup.pyval_repr.PyvalColorizer._colorize()=epydoc.markup.pyval_repr.PyvalColorizer-class.html#_colorize"><a title="epydoc.markup.epytext._colorize
+epydoc.markup.pyval_repr.PyvalColorizer._colorize" class="py-name" href="#" onclick="return doclink('link-54', '_colorize', 'link-54');">_colorize</a></tt><tt class="py-op">(</tt><tt id="link-55" class="py-name"><a title="epydoc.apidoc.ValueDoc.pyval" class="py-name" href="#" onclick="return doclink('link-55', 'pyval', 'link-16');">pyval</a></tt><tt class="py-op">,</tt> <tt class="py-name">state</tt><tt class="py-op">)</tt> </tt>
+<a name="L155"></a><tt class="py-lineno">155</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt id="link-56" class="py-name"><a title="epydoc.apidoc.ValueDoc.parse_repr" class="py-name" href="#" onclick="return doclink('link-56', 'parse_repr', 'link-26');">parse_repr</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-57" class="py-name"><a title="epydoc. [...]
+<a name="L156"></a><tt class="py-lineno">156</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-58" class="py-name" targets="Method epydoc.markup.pyval_repr.PyvalColorizer._output()=epydoc.markup.pyval_repr.PyvalColorizer-class.html#_output"><a title="epydoc.markup.pyval_repr.PyvalColorizer._output" class="py-name" href="#" onclick="return doclink('link-58', '_output', 'link-58');">_output</a></tt><tt class="py-op">(</tt><tt id="li [...]
+<a name="L157"></a><tt class="py-lineno">157</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L158"></a><tt class="py-lineno">158</tt>  <tt class="py-line">                <tt class="py-name">state</tt><tt class="py-op">.</tt><tt class="py-name">result</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-60" class="py-name"><a title="epydoc.markup.pyval_repr.PyvalColorizer" class="py-name" href="#" onclick="return doclink('link-60', 'PyvalColorizer', 'link-23');">PyvalColorizer</a></tt><tt class="py-op">.</tt><tt id="link-61" cl [...]
+<a name="L159"></a><tt class="py-lineno">159</tt>  <tt class="py-line">            <tt class="py-name">is_complete</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L160"></a><tt class="py-lineno">160</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-op">(</tt><tt id="link-62" class="py-name" targets="Class epydoc.markup.pyval_repr._Maxlines=epydoc.markup.pyval_repr._Maxlines-class.html"><a title="epydoc.markup.pyval_repr._Maxlines" class="py-name" href="#" onclick="return doclink('link-62', '_Maxlines', 'link-62');">_Maxlines</a></tt><tt class="py-op">,</tt> <tt id="link-63" class="py-name" targets="Class e [...]
+<a name="L161"></a><tt class="py-lineno">161</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">linebreakok</tt><tt class="py-op">:</tt> </tt>
+<a name="L162"></a><tt class="py-lineno">162</tt>  <tt class="py-line">                <tt class="py-name">state</tt><tt class="py-op">.</tt><tt class="py-name">result</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L163"></a><tt class="py-lineno">163</tt>  <tt class="py-line">                <tt class="py-name">state</tt><tt class="py-op">.</tt><tt class="py-name">result</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-64" class="py-name"><a title="epydoc.markup.pyval_repr.PyvalColorizer.ELLIPSIS" class="py-name" href="#" onclick="return doclink('link-64', 'ELLIPSIS', 'link-39');">ELLIPSIS</ [...]
+<a name="L164"></a><tt class="py-lineno">164</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L165"></a><tt class="py-lineno">165</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">state</tt><tt class="py-op">.</tt><tt class="py-name">result</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-keyword">is</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-65" class="py-name"><a title="epydoc.markup.pyval_repr.PyvalColorizer.LINEWRAP" class="py-n [...]
+<a name="L166"></a><tt class="py-lineno">166</tt>  <tt class="py-line">                    <tt class="py-name">state</tt><tt class="py-op">.</tt><tt class="py-name">result</tt><tt class="py-op">.</tt><tt class="py-name">pop</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L167"></a><tt class="py-lineno">167</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-66" class="py-name" targets="Method epydoc.markup.pyval_repr.PyvalColorizer._trim_result()=epydoc.markup.pyval_repr.PyvalColorizer-class.html#_trim_result"><a title="epydoc.markup.pyval_repr.PyvalColorizer._trim_result" class="py-name" href="#" onclick="return doclink('link-66', '_trim_result', 'link-66');">_trim_result</a></tt><tt class [...]
+<a name="L168"></a><tt class="py-lineno">168</tt>  <tt class="py-line">                <tt class="py-name">state</tt><tt class="py-op">.</tt><tt class="py-name">result</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-67" class="py-name"><a title="epydoc.markup.pyval_repr.PyvalColorizer.ELLIPSIS" class="py-name" href="#" onclick="return doclink('link-67', 'ELLIPSIS', 'link-39');">ELLIPSIS</ [...]
+<a name="L169"></a><tt class="py-lineno">169</tt>  <tt class="py-line">            <tt class="py-name">is_complete</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L170"></a><tt class="py-lineno">170</tt>  <tt class="py-line">        <tt class="py-comment"># If we didn't score high enough, then try again.</tt> </tt>
+<a name="L171"></a><tt class="py-lineno">171</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt id="link-68" class="py-name"><a title="epydoc.apidoc.ValueDoc.pyval" class="py-name" href="#" onclick="return doclink('link-68', 'pyval', 'link-16');">pyval</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt id="link-69" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclic [...]
+<a name="L172"></a><tt class="py-lineno">172</tt>  <tt class="py-line">            <tt class="py-keyword">and</tt> <tt class="py-name">min_score</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-name">state</tt><tt class="py-op">.</tt><tt class="py-name">score</tt> <tt class="py-op"><</tt> <tt class="py-name">min_score</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L173"></a><tt class="py-lineno">173</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-72" class="py-name"><a title="epydoc.docwriter.html_colorize.PythonSourceColorizer.colorize
+epydoc.markup.pyval_repr.PyvalColorizer.colorize" class="py-name" href="#" onclick="return doclink('link-72', 'colorize', 'link-24');">colorize</a></tt><tt class="py-op">(</tt><tt id="link-73" class="py-name"><a title="epydoc.apidoc.UNKNOWN" class="py-name" href="#" onclick="return doclink('link-73', 'UNKNOWN', 'link-47');">UNKNOWN</a></tt><tt class="py-op">,</tt> <tt id="link-74" class="py-name"><a title="epydoc.apidoc.ValueDoc.parse_repr" class="py-name" href="#" onclick="return doclin [...]
+<a name="L174"></a><tt class="py-lineno">174</tt>  <tt class="py-line">        <tt class="py-comment"># Put it all together.</tt> </tt>
+<a name="L175"></a><tt class="py-lineno">175</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt id="link-75" class="py-name"><a title="epydoc.markup.epytext.Element" class="py-name" href="#" onclick="return doclink('link-75', 'Element', 'link-14');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'epytext'</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-name">state</tt><tt class="py-op" [...]
+<a name="L176"></a><tt class="py-lineno">176</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-76" class="py-name" targets="Class epydoc.markup.pyval_repr.ColorizedPyvalRepr=epydoc.markup.pyval_repr.ColorizedPyvalRepr-class.html"><a title="epydoc.markup.pyval_repr.ColorizedPyvalRepr" class="py-name" href="#" onclick="return doclink('link-76', 'ColorizedPyvalRepr', 'link-76');">ColorizedPyvalRepr</a></tt><tt class="py-op">(</tt><tt class="py-name">tree</tt> [...]
+</div><a name="L177"></a><tt class="py-lineno">177</tt>  <tt class="py-line"> </tt>
+<a name="PyvalColorizer._colorize"></a><div id="PyvalColorizer._colorize-def"><a name="L178"></a><tt class="py-lineno">178</tt> <a class="py-toggle" href="#" id="PyvalColorizer._colorize-toggle" onclick="return toggle('PyvalColorizer._colorize');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_colorize">_colorize</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt>  [...]
+</div><div id="PyvalColorizer._colorize-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="PyvalColorizer._colorize-expanded"><a name="L179"></a><tt class="py-lineno">179</tt>  <tt class="py-line">        <tt class="py-name">pyval_type</tt> <tt class="py-op">=</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt id="link-77" class="py-name"><a title="epydoc.apidoc.ValueDoc.pyval" class="py-name" href="#" onclick="return doclink('link-77', 'pyval', 'link- [...]
+<a name="L180"></a><tt class="py-lineno">180</tt>  <tt class="py-line">        <tt class="py-name">state</tt><tt class="py-op">.</tt><tt class="py-name">score</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L181"></a><tt class="py-lineno">181</tt>  <tt class="py-line">         </tt>
+<a name="L182"></a><tt class="py-lineno">182</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-78" class="py-name"><a title="epydoc.apidoc.ValueDoc.pyval" class="py-name" href="#" onclick="return doclink('link-78', 'pyval', 'link-16');">pyval</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt> <tt class="py-keyword">or</tt> <tt id="link-79" class="py-name"><a title="epydoc.apidoc.ValueDoc.pyval" class="py-name" href="#" onclick="return doclin [...]
+<a name="L183"></a><tt class="py-lineno">183</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-81" class="py-name"><a title="epydoc.markup.pyval_repr.PyvalColorizer._output" class="py-name" href="#" onclick="return doclink('link-81', '_output', 'link-58');">_output</a></tt><tt class="py-op">(</tt><tt class="py-name">unicode</tt><tt class="py-op">(</tt><tt id="link-82" class="py-name"><a title="epydoc.apidoc.ValueDoc.pyval" class="py-n [...]
+<a name="L184"></a><tt class="py-lineno">184</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">pyval_type</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">int</tt><tt class="py-op">,</tt> <tt class="py-name">float</tt><tt class="py-op">,</tt> <tt class="py-name">long</tt><tt class="py-op">,</tt> <tt class="py-name">types</tt><tt class="py-op">.</tt><tt class="py-name">ComplexType</tt><tt class="py-op">)</tt><tt class="py [...]
+<a name="L185"></a><tt class="py-lineno">185</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-84" class="py-name"><a title="epydoc.markup.pyval_repr.PyvalColorizer._output" class="py-name" href="#" onclick="return doclink('link-84', '_output', 'link-58');">_output</a></tt><tt class="py-op">(</tt><tt class="py-name">unicode</tt><tt class="py-op">(</tt><tt id="link-85" class="py-name"><a title="epydoc.apidoc.ValueDoc.pyval" class="py-n [...]
+<a name="L186"></a><tt class="py-lineno">186</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">pyval_type</tt> <tt class="py-keyword">is</tt> <tt class="py-name">str</tt><tt class="py-op">:</tt> </tt>
+<a name="L187"></a><tt class="py-lineno">187</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-87" class="py-name" targets="Method epydoc.markup.pyval_repr.PyvalColorizer._colorize_str()=epydoc.markup.pyval_repr.PyvalColorizer-class.html#_colorize_str"><a title="epydoc.markup.pyval_repr.PyvalColorizer._colorize_str" class="py-name" href="#" onclick="return doclink('link-87', '_colorize_str', 'link-87');">_colorize_str</a></tt><tt clas [...]
+<a name="L188"></a><tt class="py-lineno">188</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">pyval_type</tt> <tt class="py-keyword">is</tt> <tt class="py-name">unicode</tt><tt class="py-op">:</tt> </tt>
+<a name="L189"></a><tt class="py-lineno">189</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-89" class="py-name"><a title="epydoc.markup.pyval_repr.PyvalColorizer.ESCAPE_UNICODE" class="py-name" href="#" onclick="return doclink('link-89', 'ESCAPE_UNICODE', 'link-46');">ESCAPE_UNICODE</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L190"></a><tt class="py-lineno">190</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-90" class="py-name"><a title="epydoc.markup.pyval_repr.PyvalColorizer._colorize_str" class="py-name" href="#" onclick="return doclink('link-90', '_colorize_str', 'link-87');">_colorize_str</a></tt><tt class="py-op">(</tt><tt id="link-91" class="py-name"><a title="epydoc.apidoc.ValueDoc.pyval" class="py-name" href="#" onclick="return docl [...]
+<a name="L191"></a><tt class="py-lineno">191</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L192"></a><tt class="py-lineno">192</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-92" class="py-name"><a title="epydoc.markup.pyval_repr.PyvalColorizer._colorize_str" class="py-name" href="#" onclick="return doclink('link-92', '_colorize_str', 'link-87');">_colorize_str</a></tt><tt class="py-op">(</tt><tt id="link-93" class="py-name"><a title="epydoc.apidoc.ValueDoc.pyval" class="py-name" href="#" onclick="return docl [...]
+<a name="L193"></a><tt class="py-lineno">193</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">pyval_type</tt> <tt class="py-keyword">is</tt> <tt class="py-name">list</tt><tt class="py-op">:</tt> </tt>
+<a name="L194"></a><tt class="py-lineno">194</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-94" class="py-name" targets="Method epydoc.markup.pyval_repr.PyvalColorizer._multiline()=epydoc.markup.pyval_repr.PyvalColorizer-class.html#_multiline"><a title="epydoc.markup.pyval_repr.PyvalColorizer._multiline" class="py-name" href="#" onclick="return doclink('link-94', '_multiline', 'link-94');">_multiline</a></tt><tt class="py-op">(</tt [...]
+<a name="L195"></a><tt class="py-lineno">195</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">pyval_type</tt> <tt class="py-keyword">is</tt> <tt class="py-name">tuple</tt><tt class="py-op">:</tt> </tt>
+<a name="L196"></a><tt class="py-lineno">196</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-97" class="py-name"><a title="epydoc.markup.pyval_repr.PyvalColorizer._multiline" class="py-name" href="#" onclick="return doclink('link-97', '_multiline', 'link-94');">_multiline</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-98" class="py-name"><a title="epydoc.markup.pyval_repr.PyvalColor [...]
+<a name="L197"></a><tt class="py-lineno">197</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">pyval_type</tt> <tt class="py-keyword">is</tt> <tt class="py-name">set</tt><tt class="py-op">:</tt> </tt>
+<a name="L198"></a><tt class="py-lineno">198</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-100" class="py-name"><a title="epydoc.markup.pyval_repr.PyvalColorizer._multiline" class="py-name" href="#" onclick="return doclink('link-100', '_multiline', 'link-94');">_multiline</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-101" class="py-name"><a title="epydoc.markup.pyval_repr.PyvalCo [...]
+<a name="L199"></a><tt class="py-lineno">199</tt>  <tt class="py-line">                            <tt class="py-name">state</tt><tt class="py-op">,</tt> <tt class="py-string">'set(['</tt><tt class="py-op">,</tt> <tt class="py-string">'])'</tt><tt class="py-op">)</tt> </tt>
+<a name="L200"></a><tt class="py-lineno">200</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">pyval_type</tt> <tt class="py-keyword">is</tt> <tt class="py-name">frozenset</tt><tt class="py-op">:</tt> </tt>
+<a name="L201"></a><tt class="py-lineno">201</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-104" class="py-name"><a title="epydoc.markup.pyval_repr.PyvalColorizer._multiline" class="py-name" href="#" onclick="return doclink('link-104', '_multiline', 'link-94');">_multiline</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-105" class="py-name"><a title="epydoc.markup.pyval_repr.PyvalCo [...]
+<a name="L202"></a><tt class="py-lineno">202</tt>  <tt class="py-line">                            <tt class="py-name">state</tt><tt class="py-op">,</tt> <tt class="py-string">'frozenset(['</tt><tt class="py-op">,</tt> <tt class="py-string">'])'</tt><tt class="py-op">)</tt> </tt>
+<a name="L203"></a><tt class="py-lineno">203</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">pyval_type</tt> <tt class="py-keyword">is</tt> <tt class="py-name">dict</tt><tt class="py-op">:</tt> </tt>
+<a name="L204"></a><tt class="py-lineno">204</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-108" class="py-name"><a title="epydoc.markup.pyval_repr.PyvalColorizer._multiline" class="py-name" href="#" onclick="return doclink('link-108', '_multiline', 'link-94');">_multiline</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-109" class="py-name" targets="Method epydoc.markup.pyval_repr.P [...]
+<a name="L205"></a><tt class="py-lineno">205</tt>  <tt class="py-line">                            <tt class="py-name">state</tt><tt class="py-op">,</tt> <tt class="py-string">'{'</tt><tt class="py-op">,</tt> <tt class="py-string">'}'</tt><tt class="py-op">)</tt> </tt>
+<a name="L206"></a><tt class="py-lineno">206</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt id="link-112" class="py-name" targets="Function epydoc.markup.pyval_repr.is_re_pattern()=epydoc.markup.pyval_repr-module.html#is_re_pattern"><a title="epydoc.markup.pyval_repr.is_re_pattern" class="py-name" href="#" onclick="return doclink('link-112', 'is_re_pattern', 'link-112');">is_re_pattern</a></tt><tt class="py-op">(</tt><tt id="link-113" class="py-name"><a title="epy [...]
+<a name="L207"></a><tt class="py-lineno">207</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-114" class="py-name" targets="Method epydoc.markup.pyval_repr.PyvalColorizer._colorize_re()=epydoc.markup.pyval_repr.PyvalColorizer-class.html#_colorize_re"><a title="epydoc.markup.pyval_repr.PyvalColorizer._colorize_re" class="py-name" href="#" onclick="return doclink('link-114', '_colorize_re', 'link-114');">_colorize_re</a></tt><tt class= [...]
+<a name="L208"></a><tt class="py-lineno">208</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L209"></a><tt class="py-lineno">209</tt>  <tt class="py-line">            <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L210"></a><tt class="py-lineno">210</tt>  <tt class="py-line">                <tt id="link-116" class="py-name" targets="Method epydoc.apidoc.ValueDoc.pyval_repr()=epydoc.apidoc.ValueDoc-class.html#pyval_repr,Module epydoc.markup.pyval_repr=epydoc.markup.pyval_repr-module.html"><a title="epydoc.apidoc.ValueDoc.pyval_repr
+epydoc.markup.pyval_repr" class="py-name" href="#" onclick="return doclink('link-116', 'pyval_repr', 'link-116');">pyval_repr</a></tt> <tt class="py-op">=</tt> <tt class="py-name">repr</tt><tt class="py-op">(</tt><tt id="link-117" class="py-name"><a title="epydoc.apidoc.ValueDoc.pyval" class="py-name" href="#" onclick="return doclink('link-117', 'pyval', 'link-16');">pyval</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L211"></a><tt class="py-lineno">211</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-118" class="py-name"><a title="epydoc.apidoc.ValueDoc.pyval_repr
+epydoc.markup.pyval_repr" class="py-name" href="#" onclick="return doclink('link-118', 'pyval_repr', 'link-116');">pyval_repr</a></tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">,</tt> <tt class="py-name">unicode</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L212"></a><tt class="py-lineno">212</tt>  <tt class="py-line">                    <tt id="link-119" class="py-name"><a title="epydoc.apidoc.ValueDoc.pyval_repr
+epydoc.markup.pyval_repr" class="py-name" href="#" onclick="return doclink('link-119', 'pyval_repr', 'link-116');">pyval_repr</a></tt> <tt class="py-op">=</tt> <tt class="py-name">unicode</tt><tt class="py-op">(</tt><tt id="link-120" class="py-name"><a title="epydoc.apidoc.ValueDoc.pyval_repr
+epydoc.markup.pyval_repr" class="py-name" href="#" onclick="return doclink('link-120', 'pyval_repr', 'link-116');">pyval_repr</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L213"></a><tt class="py-lineno">213</tt>  <tt class="py-line">                <tt class="py-name">pyval_repr_ok</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L214"></a><tt class="py-lineno">214</tt>  <tt class="py-line">            <tt class="py-keyword">except</tt> <tt class="py-name">KeyboardInterrupt</tt><tt class="py-op">:</tt> </tt>
+<a name="L215"></a><tt class="py-lineno">215</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> </tt>
+<a name="L216"></a><tt class="py-lineno">216</tt>  <tt class="py-line">            <tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt>
+<a name="L217"></a><tt class="py-lineno">217</tt>  <tt class="py-line">                <tt class="py-name">pyval_repr_ok</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L218"></a><tt class="py-lineno">218</tt>  <tt class="py-line">                <tt class="py-name">state</tt><tt class="py-op">.</tt><tt class="py-name">score</tt> <tt class="py-op">-=</tt> <tt class="py-number">100</tt> </tt>
+<a name="L219"></a><tt class="py-lineno">219</tt>  <tt class="py-line"> </tt>
+<a name="L220"></a><tt class="py-lineno">220</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">pyval_repr_ok</tt><tt class="py-op">:</tt> </tt>
+<a name="L221"></a><tt class="py-lineno">221</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-121" class="py-name"><a title="epydoc.markup.pyval_repr.PyvalColorizer.GENERIC_OBJECT_RE" class="py-name" href="#" onclick="return doclink('link-121', 'GENERIC_OBJECT_RE', 'link-45');">GENERIC_OBJECT_RE</a></tt><tt class="py-op">.</tt><tt class="py-name">match</tt><tt class="py-op">(</tt><tt id="link-122" c [...]
+epydoc.markup.pyval_repr" class="py-name" href="#" onclick="return doclink('link-122', 'pyval_repr', 'link-116');">pyval_repr</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L222"></a><tt class="py-lineno">222</tt>  <tt class="py-line">                    <tt class="py-name">state</tt><tt class="py-op">.</tt><tt class="py-name">score</tt> <tt class="py-op">-=</tt> <tt class="py-number">5</tt> </tt>
+<a name="L223"></a><tt class="py-lineno">223</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-123" class="py-name"><a title="epydoc.markup.pyval_repr.PyvalColorizer._output" class="py-name" href="#" onclick="return doclink('link-123', '_output', 'link-58');">_output</a></tt><tt class="py-op">(</tt><tt id="link-124" class="py-name"><a title="epydoc.apidoc.ValueDoc.pyval_repr
+epydoc.markup.pyval_repr" class="py-name" href="#" onclick="return doclink('link-124', 'pyval_repr', 'link-116');">pyval_repr</a></tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">state</tt><tt class="py-op">)</tt> </tt>
+<a name="L224"></a><tt class="py-lineno">224</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L225"></a><tt class="py-lineno">225</tt>  <tt class="py-line">                <tt class="py-name">state</tt><tt class="py-op">.</tt><tt class="py-name">result</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-125" class="py-name"><a title="epydoc.markup.pyval_repr.PyvalColorizer.UNKNOWN_REPR" class="py-name" href="#" onclick="return doclink('link-125', 'UNKNOWN_REPR', 'link-43');"> [...]
+</div><a name="L226"></a><tt class="py-lineno">226</tt>  <tt class="py-line"> </tt>
+<a name="PyvalColorizer._sort"></a><div id="PyvalColorizer._sort-def"><a name="L227"></a><tt class="py-lineno">227</tt> <a class="py-toggle" href="#" id="PyvalColorizer._sort-toggle" onclick="return toggle('PyvalColorizer._sort');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_sort">_sort</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">ite [...]
+</div><div id="PyvalColorizer._sort-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="PyvalColorizer._sort-expanded"><a name="L228"></a><tt class="py-lineno">228</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sort</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-name">items</tt> </tt>
+<a name="L229"></a><tt class="py-lineno">229</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt id="link-126" class="py-name" targets="Function epydoc.compat.sorted()=epydoc.compat-module.html#sorted"><a title="epydoc.compat.sorted" class="py-name" href="#" onclick="return doclink('link-126', 'sorted', 'link-126');">sorted</a></tt><tt class="py-op">(</tt><tt class="py-name">items</tt><tt class="py-op">)</tt> </tt>
+<a name="L230"></a><tt class="py-lineno">230</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">KeyboardInterrupt</tt><tt class="py-op">:</tt> <tt class="py-keyword">raise</tt> </tt>
+<a name="L231"></a><tt class="py-lineno">231</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-name">items</tt> </tt>
+</div><a name="L232"></a><tt class="py-lineno">232</tt>  <tt class="py-line">         </tt>
+<a name="PyvalColorizer._trim_result"></a><div id="PyvalColorizer._trim_result-def"><a name="L233"></a><tt class="py-lineno">233</tt> <a class="py-toggle" href="#" id="PyvalColorizer._trim_result-toggle" onclick="return toggle('PyvalColorizer._trim_result');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_trim_result">_trim_result</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt cla [...]
+</div><div id="PyvalColorizer._trim_result-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="PyvalColorizer._trim_result-expanded"><a name="L234"></a><tt class="py-lineno">234</tt>  <tt class="py-line">        <tt class="py-keyword">while</tt> <tt class="py-name">num_chars</tt> <tt class="py-op">></tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L235"></a><tt class="py-lineno">235</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">result</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt>  </tt>
+<a name="L236"></a><tt class="py-lineno">236</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt id="link-127" class="py-name"><a title="epydoc.markup.epytext.Element" class="py-name" href="#" onclick="return doclink('link-127', 'Element', 'link-14');">Ele [...]
+<a name="L237"></a><tt class="py-lineno">237</tt>  <tt class="py-line">                <tt class="py-keyword">assert</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">children</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt> </tt>
+<a name="L238"></a><tt class="py-lineno">238</tt>  <tt class="py-line">                <tt class="py-name">trim</tt> <tt class="py-op">=</tt> <tt class="py-name">min</tt><tt class="py-op">(</tt><tt class="py-name">num_chars</tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">children</tt [...]
+<a name="L239"></a><tt class="py-lineno">239</tt>  <tt class="py-line">                <tt class="py-name">result</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">children</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">result</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt clas [...]
+<a name="L240"></a><tt class="py-lineno">240</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">result</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">children</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> <tt class="py-name">result</tt><tt class="py-op">.</t [...]
+<a name="L241"></a><tt class="py-lineno">241</tt>  <tt class="py-line">                <tt class="py-name">num_chars</tt> <tt class="py-op">-=</tt> <tt class="py-name">trim</tt> </tt>
+<a name="L242"></a><tt class="py-lineno">242</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L243"></a><tt class="py-lineno">243</tt>  <tt class="py-line">                <tt class="py-name">trim</tt> <tt class="py-op">=</tt> <tt class="py-name">min</tt><tt class="py-op">(</tt><tt class="py-name">num_chars</tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L244"></a><tt class="py-lineno">244</tt>  <tt class="py-line">                <tt class="py-name">result</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">result</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-name">trim</tt><tt class="py-op [...]
+<a name="L245"></a><tt class="py-lineno">245</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">result</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> <tt class="py-name">result</tt><tt class="py-op">.</tt><tt class="py-name">pop</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L246"></a><tt class="py-lineno">246</tt>  <tt class="py-line">                <tt class="py-name">num_chars</tt> <tt class="py-op">-=</tt> <tt class="py-name">trim</tt> </tt>
+</div><a name="L247"></a><tt class="py-lineno">247</tt>  <tt class="py-line"> </tt>
+<a name="L248"></a><tt class="py-lineno">248</tt>  <tt class="py-line">    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L249"></a><tt class="py-lineno">249</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># Object Colorization Functions</tt> </tt>
+<a name="L250"></a><tt class="py-lineno">250</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L251"></a><tt class="py-lineno">251</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="PyvalColorizer._multiline"></a><div id="PyvalColorizer._multiline-def"><a name="L252"></a><tt class="py-lineno">252</tt> <a class="py-toggle" href="#" id="PyvalColorizer._multiline-toggle" onclick="return toggle('PyvalColorizer._multiline');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_multiline">_multiline</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">, [...]
+</div><div id="PyvalColorizer._multiline-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="PyvalColorizer._multiline-expanded"><a name="L253"></a><tt class="py-lineno">253</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L254"></a><tt class="py-lineno">254</tt>  <tt class="py-line"><tt class="py-docstring">        Helper for container-type colorizers.  First, try calling</tt> </tt>
+<a name="L255"></a><tt class="py-lineno">255</tt>  <tt class="py-line"><tt class="py-docstring">        C{func(pyval, state, *args)} with linebreakok set to false;</tt> </tt>
+<a name="L256"></a><tt class="py-lineno">256</tt>  <tt class="py-line"><tt class="py-docstring">        and if that fails, then try again with it set to true.</tt> </tt>
+<a name="L257"></a><tt class="py-lineno">257</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L258"></a><tt class="py-lineno">258</tt>  <tt class="py-line">        <tt class="py-name">linebreakok</tt> <tt class="py-op">=</tt> <tt class="py-name">state</tt><tt class="py-op">.</tt><tt class="py-name">linebreakok</tt> </tt>
+<a name="L259"></a><tt class="py-lineno">259</tt>  <tt class="py-line">        <tt id="link-128" class="py-name"><a title="epydoc.markup.pyval_repr._ColorizerState.mark" class="py-name" href="#" onclick="return doclink('link-128', 'mark', 'link-20');">mark</a></tt> <tt class="py-op">=</tt> <tt class="py-name">state</tt><tt class="py-op">.</tt><tt id="link-129" class="py-name"><a title="epydoc.markup.pyval_repr._ColorizerState.mark" class="py-name" href="#" onclick="return doclink('link-1 [...]
+<a name="L260"></a><tt class="py-lineno">260</tt>  <tt class="py-line">         </tt>
+<a name="L261"></a><tt class="py-lineno">261</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L262"></a><tt class="py-lineno">262</tt>  <tt class="py-line">            <tt class="py-name">state</tt><tt class="py-op">.</tt><tt class="py-name">linebreakok</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L263"></a><tt class="py-lineno">263</tt>  <tt class="py-line">            <tt class="py-name">func</tt><tt class="py-op">(</tt><tt id="link-130" class="py-name"><a title="epydoc.apidoc.ValueDoc.pyval" class="py-name" href="#" onclick="return doclink('link-130', 'pyval', 'link-16');">pyval</a></tt><tt class="py-op">,</tt> <tt class="py-name">state</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-name">args</tt><tt class="py-op">)</tt> </tt>
+<a name="L264"></a><tt class="py-lineno">264</tt>  <tt class="py-line">            <tt class="py-name">state</tt><tt class="py-op">.</tt><tt class="py-name">linebreakok</tt> <tt class="py-op">=</tt> <tt class="py-name">linebreakok</tt> </tt>
+<a name="L265"></a><tt class="py-lineno">265</tt>  <tt class="py-line"> </tt>
+<a name="L266"></a><tt class="py-lineno">266</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt id="link-131" class="py-name"><a title="epydoc.markup.pyval_repr._Linebreak" class="py-name" href="#" onclick="return doclink('link-131', '_Linebreak', 'link-63');">_Linebreak</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L267"></a><tt class="py-lineno">267</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">linebreakok</tt><tt class="py-op">:</tt> </tt>
+<a name="L268"></a><tt class="py-lineno">268</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> </tt>
+<a name="L269"></a><tt class="py-lineno">269</tt>  <tt class="py-line">            <tt class="py-name">state</tt><tt class="py-op">.</tt><tt id="link-132" class="py-name" targets="Method epydoc.markup.pyval_repr._ColorizerState.restore()=epydoc.markup.pyval_repr._ColorizerState-class.html#restore"><a title="epydoc.markup.pyval_repr._ColorizerState.restore" class="py-name" href="#" onclick="return doclink('link-132', 'restore', 'link-132');">restore</a></tt><tt class="py-op">(</tt><tt id= [...]
+<a name="L270"></a><tt class="py-lineno">270</tt>  <tt class="py-line">            <tt class="py-name">func</tt><tt class="py-op">(</tt><tt id="link-134" class="py-name"><a title="epydoc.apidoc.ValueDoc.pyval" class="py-name" href="#" onclick="return doclink('link-134', 'pyval', 'link-16');">pyval</a></tt><tt class="py-op">,</tt> <tt class="py-name">state</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-name">args</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L271"></a><tt class="py-lineno">271</tt>  <tt class="py-line">             </tt>
+<a name="PyvalColorizer._colorize_iter"></a><div id="PyvalColorizer._colorize_iter-def"><a name="L272"></a><tt class="py-lineno">272</tt> <a class="py-toggle" href="#" id="PyvalColorizer._colorize_iter-toggle" onclick="return toggle('PyvalColorizer._colorize_iter');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_colorize_iter">_colorize_iter</a><tt class="py-op">(</tt><tt class="py-param">self [...]
+</div><div id="PyvalColorizer._colorize_iter-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="PyvalColorizer._colorize_iter-expanded"><a name="L273"></a><tt class="py-lineno">273</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-135" class="py-name"><a title="epydoc.markup.pyval_repr.PyvalColorizer._output" class="py-name" href="#" onclick="return doclink('link-135', '_output', 'link-58');">_output</a></tt><tt c [...]
+<a name="L274"></a><tt class="py-lineno">274</tt>  <tt class="py-line">        <tt class="py-name">indent</tt> <tt class="py-op">=</tt> <tt class="py-name">state</tt><tt class="py-op">.</tt><tt class="py-name">charpos</tt> </tt>
+<a name="L275"></a><tt class="py-lineno">275</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">i</tt><tt class="py-op">,</tt> <tt class="py-name">elt</tt> <tt class="py-keyword">in</tt> <tt class="py-name">enumerate</tt><tt class="py-op">(</tt><tt id="link-137" class="py-name"><a title="epydoc.apidoc.ValueDoc.pyval" class="py-name" href="#" onclick="return doclink('link-137', 'pyval', 'link-16');">pyval</a></tt><tt class="py-op">)</tt><tt class="py-op" [...]
+<a name="L276"></a><tt class="py-lineno">276</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">i</tt><tt class="py-op">>=</tt><tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L277"></a><tt class="py-lineno">277</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">state</tt><tt class="py-op">.</tt><tt class="py-name">linebreakok</tt><tt class="py-op">:</tt> </tt>
+<a name="L278"></a><tt class="py-lineno">278</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-138" class="py-name"><a title="epydoc.markup.pyval_repr.PyvalColorizer._output" class="py-name" href="#" onclick="return doclink('link-138', '_output', 'link-58');">_output</a></tt><tt class="py-op">(</tt><tt class="py-string">','</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-139" clas [...]
+<a name="L279"></a><tt class="py-lineno">279</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-140" class="py-name"><a title="epydoc.markup.pyval_repr.PyvalColorizer._output" class="py-name" href="#" onclick="return doclink('link-140', '_output', 'link-58');">_output</a></tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">+</tt><tt class="py-string">' '</tt><tt class="py-op">*</tt><tt class="py-name">i [...]
+<a name="L280"></a><tt class="py-lineno">280</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L281"></a><tt class="py-lineno">281</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-141" class="py-name"><a title="epydoc.markup.pyval_repr.PyvalColorizer._output" class="py-name" href="#" onclick="return doclink('link-141', '_output', 'link-58');">_output</a></tt><tt class="py-op">(</tt><tt class="py-string">', '</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-142" cla [...]
+<a name="L282"></a><tt class="py-lineno">282</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-143" class="py-name"><a title="epydoc.markup.epytext._colorize
+epydoc.markup.pyval_repr.PyvalColorizer._colorize" class="py-name" href="#" onclick="return doclink('link-143', '_colorize', 'link-54');">_colorize</a></tt><tt class="py-op">(</tt><tt class="py-name">elt</tt><tt class="py-op">,</tt> <tt class="py-name">state</tt><tt class="py-op">)</tt> </tt>
+<a name="L283"></a><tt class="py-lineno">283</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-144" class="py-name"><a title="epydoc.markup.pyval_repr.PyvalColorizer._output" class="py-name" href="#" onclick="return doclink('link-144', '_output', 'link-58');">_output</a></tt><tt class="py-op">(</tt><tt class="py-name">suffix</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-145" class="py-name" [...]
+</div><a name="L284"></a><tt class="py-lineno">284</tt>  <tt class="py-line"> </tt>
+<a name="PyvalColorizer._colorize_dict"></a><div id="PyvalColorizer._colorize_dict-def"><a name="L285"></a><tt class="py-lineno">285</tt> <a class="py-toggle" href="#" id="PyvalColorizer._colorize_dict-toggle" onclick="return toggle('PyvalColorizer._colorize_dict');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_colorize_dict">_colorize_dict</a><tt class="py-op">(</tt><tt class="py-param">self [...]
+</div><div id="PyvalColorizer._colorize_dict-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="PyvalColorizer._colorize_dict-expanded"><a name="L286"></a><tt class="py-lineno">286</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-146" class="py-name"><a title="epydoc.markup.pyval_repr.PyvalColorizer._output" class="py-name" href="#" onclick="return doclink('link-146', '_output', 'link-58');">_output</a></tt><tt c [...]
+<a name="L287"></a><tt class="py-lineno">287</tt>  <tt class="py-line">        <tt class="py-name">indent</tt> <tt class="py-op">=</tt> <tt class="py-name">state</tt><tt class="py-op">.</tt><tt class="py-name">charpos</tt> </tt>
+<a name="L288"></a><tt class="py-lineno">288</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">i</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt id="link-148" class="py-name" targets="Variable epydoc.cli.key=epydoc.cli-module.html#key"><a title="epydoc.cli.key" class="py-name" href="#" onclick="return doclink('link-148', 'key', 'link-148');">key</a></tt><tt class="py-op">,</tt> <tt class="py-name">val</tt><tt class="py-op">)</tt> <tt class="py [...]
+<a name="L289"></a><tt class="py-lineno">289</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">i</tt><tt class="py-op">>=</tt><tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L290"></a><tt class="py-lineno">290</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">state</tt><tt class="py-op">.</tt><tt class="py-name">linebreakok</tt><tt class="py-op">:</tt> </tt>
+<a name="L291"></a><tt class="py-lineno">291</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-149" class="py-name"><a title="epydoc.markup.pyval_repr.PyvalColorizer._output" class="py-name" href="#" onclick="return doclink('link-149', '_output', 'link-58');">_output</a></tt><tt class="py-op">(</tt><tt class="py-string">','</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-150" clas [...]
+<a name="L292"></a><tt class="py-lineno">292</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-151" class="py-name"><a title="epydoc.markup.pyval_repr.PyvalColorizer._output" class="py-name" href="#" onclick="return doclink('link-151', '_output', 'link-58');">_output</a></tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">+</tt><tt class="py-string">' '</tt><tt class="py-op">*</tt><tt class="py-name">i [...]
+<a name="L293"></a><tt class="py-lineno">293</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L294"></a><tt class="py-lineno">294</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-152" class="py-name"><a title="epydoc.markup.pyval_repr.PyvalColorizer._output" class="py-name" href="#" onclick="return doclink('link-152', '_output', 'link-58');">_output</a></tt><tt class="py-op">(</tt><tt class="py-string">', '</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-153" cla [...]
+<a name="L295"></a><tt class="py-lineno">295</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-154" class="py-name"><a title="epydoc.markup.epytext._colorize
+epydoc.markup.pyval_repr.PyvalColorizer._colorize" class="py-name" href="#" onclick="return doclink('link-154', '_colorize', 'link-54');">_colorize</a></tt><tt class="py-op">(</tt><tt id="link-155" class="py-name"><a title="epydoc.cli.key" class="py-name" href="#" onclick="return doclink('link-155', 'key', 'link-148');">key</a></tt><tt class="py-op">,</tt> <tt class="py-name">state</tt><tt class="py-op">)</tt> </tt>
+<a name="L296"></a><tt class="py-lineno">296</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-156" class="py-name"><a title="epydoc.markup.pyval_repr.PyvalColorizer._output" class="py-name" href="#" onclick="return doclink('link-156', '_output', 'link-58');">_output</a></tt><tt class="py-op">(</tt><tt class="py-string">': '</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-157" class="py-n [...]
+<a name="L297"></a><tt class="py-lineno">297</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-158" class="py-name"><a title="epydoc.markup.epytext._colorize
+epydoc.markup.pyval_repr.PyvalColorizer._colorize" class="py-name" href="#" onclick="return doclink('link-158', '_colorize', 'link-54');">_colorize</a></tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">,</tt> <tt class="py-name">state</tt><tt class="py-op">)</tt> </tt>
+<a name="L298"></a><tt class="py-lineno">298</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-159" class="py-name"><a title="epydoc.markup.pyval_repr.PyvalColorizer._output" class="py-name" href="#" onclick="return doclink('link-159', '_output', 'link-58');">_output</a></tt><tt class="py-op">(</tt><tt class="py-name">suffix</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-160" class="py-name" [...]
+</div><a name="L299"></a><tt class="py-lineno">299</tt>  <tt class="py-line"> </tt>
+<a name="PyvalColorizer._colorize_str"></a><div id="PyvalColorizer._colorize_str-def"><a name="L300"></a><tt class="py-lineno">300</tt> <a class="py-toggle" href="#" id="PyvalColorizer._colorize_str-toggle" onclick="return toggle('PyvalColorizer._colorize_str');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_colorize_str">_colorize_str</a><tt class="py-op">(</tt><tt class="py-param">self</tt>< [...]
+</div><div id="PyvalColorizer._colorize_str-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="PyvalColorizer._colorize_str-expanded"><a name="L301"></a><tt class="py-lineno">301</tt>  <tt class="py-line">        <tt class="py-comment"># Decide which quote to use.</tt> </tt>
+<a name="L302"></a><tt class="py-lineno">302</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-string">'\n'</tt> <tt class="py-keyword">in</tt> <tt id="link-161" class="py-name"><a title="epydoc.apidoc.ValueDoc.pyval" class="py-name" href="#" onclick="return doclink('link-161', 'pyval', 'link-16');">pyval</a></tt> <tt class="py-keyword">and</tt> <tt class="py-name">state</tt><tt class="py-op">.</tt><tt class="py-name">linebreakok</ [...]
+<a name="L303"></a><tt class="py-lineno">303</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> <tt class="py-name">quote</tt> <tt class="py-op">=</tt> <tt class="py-string">"'"</tt> </tt>
+<a name="L304"></a><tt class="py-lineno">304</tt>  <tt class="py-line">        <tt class="py-comment"># Divide the string into lines.</tt> </tt>
+<a name="L305"></a><tt class="py-lineno">305</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">state</tt><tt class="py-op">.</tt><tt class="py-name">linebreakok</tt><tt class="py-op">:</tt> </tt>
+<a name="L306"></a><tt class="py-lineno">306</tt>  <tt class="py-line">            <tt class="py-name">lines</tt> <tt class="py-op">=</tt> <tt id="link-162" class="py-name"><a title="epydoc.apidoc.ValueDoc.pyval" class="py-name" href="#" onclick="return doclink('link-162', 'pyval', 'link-16');">pyval</a></tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L307"></a><tt class="py-lineno">307</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L308"></a><tt class="py-lineno">308</tt>  <tt class="py-line">            <tt class="py-name">lines</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt id="link-163" class="py-name"><a title="epydoc.apidoc.ValueDoc.pyval" class="py-name" href="#" onclick="return doclink('link-163', 'pyval', 'link-16');">pyval</a></tt><tt class="py-op">]</tt> </tt>
+<a name="L309"></a><tt class="py-lineno">309</tt>  <tt class="py-line">        <tt class="py-comment"># Open quote.</tt> </tt>
+<a name="L310"></a><tt class="py-lineno">310</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-164" class="py-name"><a title="epydoc.markup.pyval_repr.PyvalColorizer._output" class="py-name" href="#" onclick="return doclink('link-164', '_output', 'link-58');">_output</a></tt><tt class="py-op">(</tt><tt class="py-name">prefix</tt><tt class="py-op">+</tt><tt class="py-name">quote</tt><tt class="py-op">,</tt> <tt  [...]
+<a name="L311"></a><tt class="py-lineno">311</tt>  <tt class="py-line">        <tt class="py-comment"># Body</tt> </tt>
+<a name="L312"></a><tt class="py-lineno">312</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">for</tt> <tt class="py-name">i</tt><tt class="py-op">,</tt> <tt class="py-name">line</tt> <tt class="py-keyword">in</tt> <tt class="py-name">enumerate</tt><tt class="py-op">(</tt><tt class="py-name">lines</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L313"></a><tt class="py-lineno">313</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">i</tt><tt class="py-op">></tt><tt class="py-number">0</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-166" class="py-name"><a title="epydoc.markup.pyval_repr.PyvalColorizer._output" class="py-name" href="#" onclick="return doclink('link-166', '_output', 'link-58');">_output</a></tt><tt class="py-op">(</tt>< [...]
+<a name="L314"></a><tt class="py-lineno">314</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">encoding</tt><tt class="py-op">:</tt> <tt class="py-name">line</tt> <tt class="py-op">=</tt> <tt class="py-name">line</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-name">encoding</tt><tt class="py-op">)</tt> </tt>
+<a name="L315"></a><tt class="py-lineno">315</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-167" class="py-name"><a title="epydoc.markup.pyval_repr.PyvalColorizer._output" class="py-name" href="#" onclick="return doclink('link-167', '_output', 'link-58');">_output</a></tt><tt class="py-op">(</tt><tt class="py-name">line</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-168" class="py-nam [...]
+<a name="L316"></a><tt class="py-lineno">316</tt>  <tt class="py-line">        <tt class="py-comment"># Close quote.</tt> </tt>
+<a name="L317"></a><tt class="py-lineno">317</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-169" class="py-name"><a title="epydoc.markup.pyval_repr.PyvalColorizer._output" class="py-name" href="#" onclick="return doclink('link-169', '_output', 'link-58');">_output</a></tt><tt class="py-op">(</tt><tt class="py-name">quote</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id [...]
+</div><a name="L318"></a><tt class="py-lineno">318</tt>  <tt class="py-line"> </tt>
+<a name="PyvalColorizer._colorize_re"></a><div id="PyvalColorizer._colorize_re-def"><a name="L319"></a><tt class="py-lineno">319</tt> <a class="py-toggle" href="#" id="PyvalColorizer._colorize_re-toggle" onclick="return toggle('PyvalColorizer._colorize_re');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_colorize_re">_colorize_re</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt cla [...]
+</div><div id="PyvalColorizer._colorize_re-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="PyvalColorizer._colorize_re-expanded"><a name="L320"></a><tt class="py-lineno">320</tt>  <tt class="py-line">        <tt class="py-comment"># Extract the flag & pattern from the regexp.</tt> </tt>
+<a name="L321"></a><tt class="py-lineno">321</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">pat</tt><tt class="py-op">,</tt> <tt class="py-name">flags</tt> <tt class="py-op">=</tt> <tt id="link-171" class="py-name"><a title="epydoc.apidoc.ValueDoc.pyval" class="py-name" href="#" onclick="return doclink('link-171', 'pyval', 'link-16');">pyval</a></tt><tt class="py-op">.</tt><tt class="py-name">pattern</tt><tt class="py-op">,</tt> <tt id="link-172" class= [...]
+<a name="L322"></a><tt class="py-lineno">322</tt>  <tt class="py-line">        <tt class="py-comment"># If the pattern is a string, decode it to unicode.</tt> </tt>
+<a name="L323"></a><tt class="py-lineno">323</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">pat</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L324"></a><tt class="py-lineno">324</tt>  <tt class="py-line">            <tt class="py-name">pat</tt> <tt class="py-op">=</tt> <tt id="link-173" class="py-name"><a title="epydoc.util.decode_with_backslashreplace" class="py-name" href="#" onclick="return doclink('link-173', 'decode_with_backslashreplace', 'link-4');">decode_with_backslashreplace</a></tt><tt class="py-op">(</tt><tt class="py-name">pat</tt><tt class="py-op">)</tt> </tt>
+<a name="L325"></a><tt class="py-lineno">325</tt>  <tt class="py-line">        <tt class="py-comment"># Parse the regexp pattern.</tt> </tt>
+<a name="L326"></a><tt class="py-lineno">326</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">sre_parse</tt><tt class="py-op">.</tt><tt id="link-174" class="py-name" targets="Function epydoc.markup.epytext.parse()=epydoc.markup.epytext-module.html#parse,Function epydoc.markup.parse()=epydoc.markup-module.html#parse"><a title="epydoc.markup.epytext.parse
+epydoc.markup.parse" class="py-name" href="#" onclick="return doclink('link-174', 'parse', 'link-174');">parse</a></tt><tt class="py-op">(</tt><tt class="py-name">pat</tt><tt class="py-op">,</tt> <tt class="py-name">flags</tt><tt class="py-op">)</tt> </tt>
+<a name="L327"></a><tt class="py-lineno">327</tt>  <tt class="py-line">        <tt class="py-name">groups</tt> <tt class="py-op">=</tt> <tt class="py-name">dict</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-name">num</tt><tt class="py-op">,</tt><tt id="link-175" class="py-name" targets="Variable epydoc.apidoc.VariableDoc.name=epydoc.apidoc.VariableDoc-class.html#name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="r [...]
+<a name="L328"></a><tt class="py-lineno">328</tt>  <tt class="py-line">                       <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt class="py-name">pattern</tt><tt class="py-op">.</tt><tt class="py-name">groupdict</tt><tt class="py-op">.</tt><tt class="py-name">items</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L329"></a><tt class="py-lineno">329</tt>  <tt class="py-line">        <tt class="py-comment"># Colorize it!</tt> </tt>
+<a name="L330"></a><tt class="py-lineno">330</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-177" class="py-name"><a title="epydoc.markup.pyval_repr.PyvalColorizer._output" class="py-name" href="#" onclick="return doclink('link-177', '_output', 'link-58');">_output</a></tt><tt class="py-op">(</tt><tt class="py-string">"re.compile(r'"</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op"> [...]
+<a name="L331"></a><tt class="py-lineno">331</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-178" class="py-name" targets="Method epydoc.markup.pyval_repr.PyvalColorizer._colorize_re_flags()=epydoc.markup.pyval_repr.PyvalColorizer-class.html#_colorize_re_flags"><a title="epydoc.markup.pyval_repr.PyvalColorizer._colorize_re_flags" class="py-name" href="#" onclick="return doclink('link-178', '_colorize_re_flags', 'link-178');">_colorize_r [...]
+<a name="L332"></a><tt class="py-lineno">332</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-179" class="py-name" targets="Method epydoc.markup.pyval_repr.PyvalColorizer._colorize_re_tree()=epydoc.markup.pyval_repr.PyvalColorizer-class.html#_colorize_re_tree"><a title="epydoc.markup.pyval_repr.PyvalColorizer._colorize_re_tree" class="py-name" href="#" onclick="return doclink('link-179', '_colorize_re_tree', 'link-179');">_colorize_re_tr [...]
+<a name="L333"></a><tt class="py-lineno">333</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-180" class="py-name"><a title="epydoc.markup.pyval_repr.PyvalColorizer._output" class="py-name" href="#" onclick="return doclink('link-180', '_output', 'link-58');">_output</a></tt><tt class="py-op">(</tt><tt class="py-string">"')"</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">state</tt><t [...]
+</div><a name="L334"></a><tt class="py-lineno">334</tt>  <tt class="py-line"> </tt>
+<a name="PyvalColorizer._colorize_re_flags"></a><div id="PyvalColorizer._colorize_re_flags-def"><a name="L335"></a><tt class="py-lineno">335</tt> <a class="py-toggle" href="#" id="PyvalColorizer._colorize_re_flags-toggle" onclick="return toggle('PyvalColorizer._colorize_re_flags');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_colorize_re_flags">_colorize_re_flags</a><tt class="py-op">(</tt>< [...]
+</div><div id="PyvalColorizer._colorize_re_flags-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="PyvalColorizer._colorize_re_flags-expanded"><a name="L336"></a><tt class="py-lineno">336</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">flags</tt><tt class="py-op">:</tt> </tt>
+<a name="L337"></a><tt class="py-lineno">337</tt>  <tt class="py-line">            <tt class="py-name">flags</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">c</tt> <tt class="py-keyword">for</tt> <tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">,</tt><tt class="py-name">n</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt id="link-181" class="py-name"><a title="epydoc.compat.sorted" class="py-name" href="#" onclick="return doclink [...]
+<a name="L338"></a><tt class="py-lineno">338</tt>  <tt class="py-line">                     <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">n</tt><tt class="py-op">&</tt><tt class="py-name">flags</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt>
+<a name="L339"></a><tt class="py-lineno">339</tt>  <tt class="py-line">            <tt class="py-name">flags</tt> <tt class="py-op">=</tt> <tt class="py-string">'(?%s)'</tt> <tt class="py-op">%</tt> <tt class="py-string">''</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">flags</tt><tt class="py-op">)</tt> </tt>
+<a name="L340"></a><tt class="py-lineno">340</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-182" class="py-name"><a title="epydoc.markup.pyval_repr.PyvalColorizer._output" class="py-name" href="#" onclick="return doclink('link-182', '_output', 'link-58');">_output</a></tt><tt class="py-op">(</tt><tt class="py-name">flags</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-183" class="py-na [...]
+</div><a name="L341"></a><tt class="py-lineno">341</tt>  <tt class="py-line"> </tt>
+<a name="PyvalColorizer._colorize_re_tree"></a><div id="PyvalColorizer._colorize_re_tree-def"><a name="L342"></a><tt class="py-lineno">342</tt> <a class="py-toggle" href="#" id="PyvalColorizer._colorize_re_tree-toggle" onclick="return toggle('PyvalColorizer._colorize_re_tree');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_colorize_re_tree">_colorize_re_tree</a><tt class="py-op">(</tt><tt cla [...]
+</div><div id="PyvalColorizer._colorize_re_tree-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="PyvalColorizer._colorize_re_tree-expanded"><a name="L343"></a><tt class="py-lineno">343</tt>  <tt class="py-line">        <tt class="py-keyword">assert</tt> <tt class="py-name">noparen</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> <tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
+<a name="L344"></a><tt class="py-lineno">344</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-number">1</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">noparen</tt><tt class="py-op">:</tt> </tt>
+<a name="L345"></a><tt class="py-lineno">345</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-184" class="py-name"><a title="epydoc.markup.pyval_repr.PyvalColorizer._output" class="py-name" href="#" onclick="return doclink('link-184', '_output', 'link-58');">_output</a></tt><tt class="py-op">(</tt><tt class="py-string">'('</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-185" class="py-na [...]
+<a name="L346"></a><tt class="py-lineno">346</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">elt</tt> <tt class="py-keyword">in</tt> <tt class="py-name">tree</tt><tt class="py-op">:</tt> </tt>
+<a name="L347"></a><tt class="py-lineno">347</tt>  <tt class="py-line">            <tt class="py-name">op</tt> <tt class="py-op">=</tt> <tt class="py-name">elt</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L348"></a><tt class="py-lineno">348</tt>  <tt class="py-line">            <tt class="py-name">args</tt> <tt class="py-op">=</tt> <tt class="py-name">elt</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L349"></a><tt class="py-lineno">349</tt>  <tt class="py-line">     </tt>
+<a name="L350"></a><tt class="py-lineno">350</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">op</tt> <tt class="py-op">==</tt> <tt class="py-name">sre_constants</tt><tt class="py-op">.</tt><tt class="py-name">LITERAL</tt><tt class="py-op">:</tt> </tt>
+<a name="L351"></a><tt class="py-lineno">351</tt>  <tt class="py-line">                <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt class="py-name">unichr</tt><tt class="py-op">(</tt><tt class="py-name">args</tt><tt class="py-op">)</tt> </tt>
+<a name="L352"></a><tt class="py-lineno">352</tt>  <tt class="py-line">                <tt class="py-comment"># Add any appropriate escaping.</tt> </tt>
+<a name="L353"></a><tt class="py-lineno">353</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-keyword">if</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt class="py-string">'.^$\\*+?{}[]|()\''</tt><tt class="py-op">:</tt> <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt class="py-string">'\\'</tt><tt class="py-op">+</tt><tt class="py-name">c</tt> </tt>
+<a name="L354"></a><tt class="py-lineno">354</tt>  <tt class="py-line">                <tt class="py-keyword">elif</tt> <tt class="py-name">c</tt> <tt class="py-op">==</tt> <tt class="py-string">'\t'</tt><tt class="py-op">:</tt> <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt class="py-string">'\\t'</tt> </tt>
+<a name="L355"></a><tt class="py-lineno">355</tt>  <tt class="py-line">                <tt class="py-keyword">elif</tt> <tt class="py-name">c</tt> <tt class="py-op">==</tt> <tt class="py-string">'\r'</tt><tt class="py-op">:</tt> <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt class="py-string">'\\r'</tt> </tt>
+<a name="L356"></a><tt class="py-lineno">356</tt>  <tt class="py-line">                <tt class="py-keyword">elif</tt> <tt class="py-name">c</tt> <tt class="py-op">==</tt> <tt class="py-string">'\n'</tt><tt class="py-op">:</tt> <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt class="py-string">'\\n'</tt> </tt>
+<a name="L357"></a><tt class="py-lineno">357</tt>  <tt class="py-line">                <tt class="py-keyword">elif</tt> <tt class="py-name">c</tt> <tt class="py-op">==</tt> <tt class="py-string">'\f'</tt><tt class="py-op">:</tt> <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt class="py-string">'\\f'</tt> </tt>
+<a name="L358"></a><tt class="py-lineno">358</tt>  <tt class="py-line">                <tt class="py-keyword">elif</tt> <tt class="py-name">c</tt> <tt class="py-op">==</tt> <tt class="py-string">'\v'</tt><tt class="py-op">:</tt> <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt class="py-string">'\\v'</tt> </tt>
+<a name="L359"></a><tt class="py-lineno">359</tt>  <tt class="py-line">                <tt class="py-keyword">elif</tt> <tt class="py-name">ord</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-number">0xffff</tt><tt class="py-op">:</tt> <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt class="py-string">r'\U%08x'</tt> <tt class="py-op">%</tt> <tt class="py-name">ord</tt><tt class="py-op">(</tt><tt class="py-nam [...]
+<a name="L360"></a><tt class="py-lineno">360</tt>  <tt class="py-line">                <tt class="py-keyword">elif</tt> <tt class="py-name">ord</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-number">0xff</tt><tt class="py-op">:</tt> <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt class="py-string">r'\u%04x'</tt> <tt class="py-op">%</tt> <tt class="py-name">ord</tt><tt class="py-op">(</tt><tt class="py-name" [...]
+<a name="L361"></a><tt class="py-lineno">361</tt>  <tt class="py-line">                <tt class="py-keyword">elif</tt> <tt class="py-name">ord</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">)</tt><tt class="py-op"><</tt><tt class="py-number">32</tt> <tt class="py-keyword">or</tt> <tt class="py-name">ord</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">)</tt><tt class="py-op">>=</tt><tt class="py-number">127</tt><tt class="py-op">:</t [...]
+<a name="L362"></a><tt class="py-lineno">362</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-186" class="py-name"><a title="epydoc.markup.pyval_repr.PyvalColorizer._output" class="py-name" href="#" onclick="return doclink('link-186', '_output', 'link-58');">_output</a></tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-187" class="py-na [...]
+<a name="L363"></a><tt class="py-lineno">363</tt>  <tt class="py-line">             </tt>
+<a name="L364"></a><tt class="py-lineno">364</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">op</tt> <tt class="py-op">==</tt> <tt class="py-name">sre_constants</tt><tt class="py-op">.</tt><tt class="py-name">ANY</tt><tt class="py-op">:</tt> </tt>
+<a name="L365"></a><tt class="py-lineno">365</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-188" class="py-name"><a title="epydoc.markup.pyval_repr.PyvalColorizer._output" class="py-name" href="#" onclick="return doclink('link-188', '_output', 'link-58');">_output</a></tt><tt class="py-op">(</tt><tt class="py-string">'.'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-189" class="p [...]
+<a name="L366"></a><tt class="py-lineno">366</tt>  <tt class="py-line">                 </tt>
+<a name="L367"></a><tt class="py-lineno">367</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">op</tt> <tt class="py-op">==</tt> <tt class="py-name">sre_constants</tt><tt class="py-op">.</tt><tt class="py-name">BRANCH</tt><tt class="py-op">:</tt> </tt>
+<a name="L368"></a><tt class="py-lineno">368</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">args</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L369"></a><tt class="py-lineno">369</tt>  <tt class="py-line">                    <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">'Branch expected None arg but got %s'</tt> </tt>
+<a name="L370"></a><tt class="py-lineno">370</tt>  <tt class="py-line">                                     <tt class="py-op">%</tt> <tt class="py-name">args</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L371"></a><tt class="py-lineno">371</tt>  <tt class="py-line">                <tt class="py-keyword">for</tt> <tt class="py-name">i</tt><tt class="py-op">,</tt> <tt class="py-name">item</tt> <tt class="py-keyword">in</tt> <tt class="py-name">enumerate</tt><tt class="py-op">(</tt><tt class="py-name">args</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L372"></a><tt class="py-lineno">372</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">i</tt> <tt class="py-op">></tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L373"></a><tt class="py-lineno">373</tt>  <tt class="py-line">                        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-190" class="py-name"><a title="epydoc.markup.pyval_repr.PyvalColorizer._output" class="py-name" href="#" onclick="return doclink('link-190', '_output', 'link-58');">_output</a></tt><tt class="py-op">(</tt><tt class="py-string">'|'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-191"  [...]
+<a name="L374"></a><tt class="py-lineno">374</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-192" class="py-name"><a title="epydoc.markup.pyval_repr.PyvalColorizer._colorize_re_tree" class="py-name" href="#" onclick="return doclink('link-192', '_colorize_re_tree', 'link-179');">_colorize_re_tree</a></tt><tt class="py-op">(</tt><tt class="py-name">item</tt><tt class="py-op">,</tt> <tt class="py-name">state</tt><tt class="py-o [...]
+<a name="L375"></a><tt class="py-lineno">375</tt>  <tt class="py-line">                 </tt>
+<a name="L376"></a><tt class="py-lineno">376</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">op</tt> <tt class="py-op">==</tt> <tt class="py-name">sre_constants</tt><tt class="py-op">.</tt><tt class="py-name">IN</tt><tt class="py-op">:</tt> </tt>
+<a name="L377"></a><tt class="py-lineno">377</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">args</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt> <tt class="py-keyword">and</tt> <tt class="py-name">args</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</tt> [...]
+<a name="L378"></a><tt class="py-lineno">378</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-193" class="py-name"><a title="epydoc.markup.pyval_repr.PyvalColorizer._colorize_re_tree" class="py-name" href="#" onclick="return doclink('link-193', '_colorize_re_tree', 'link-179');">_colorize_re_tree</a></tt><tt class="py-op">(</tt><tt class="py-name">args</tt><tt class="py-op">,</tt> <tt class="py-name">state</tt><tt class="py-o [...]
+<a name="L379"></a><tt class="py-lineno">379</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L380"></a><tt class="py-lineno">380</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-194" class="py-name"><a title="epydoc.markup.pyval_repr.PyvalColorizer._output" class="py-name" href="#" onclick="return doclink('link-194', '_output', 'link-58');">_output</a></tt><tt class="py-op">(</tt><tt class="py-string">'['</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-195" clas [...]
+<a name="L381"></a><tt class="py-lineno">381</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-196" class="py-name"><a title="epydoc.markup.pyval_repr.PyvalColorizer._colorize_re_tree" class="py-name" href="#" onclick="return doclink('link-196', '_colorize_re_tree', 'link-179');">_colorize_re_tree</a></tt><tt class="py-op">(</tt><tt class="py-name">args</tt><tt class="py-op">,</tt> <tt class="py-name">state</tt><tt class="py-o [...]
+<a name="L382"></a><tt class="py-lineno">382</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-197" class="py-name"><a title="epydoc.markup.pyval_repr.PyvalColorizer._output" class="py-name" href="#" onclick="return doclink('link-197', '_output', 'link-58');">_output</a></tt><tt class="py-op">(</tt><tt class="py-string">']'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-198" clas [...]
+<a name="L383"></a><tt class="py-lineno">383</tt>  <tt class="py-line">                     </tt>
+<a name="L384"></a><tt class="py-lineno">384</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">op</tt> <tt class="py-op">==</tt> <tt class="py-name">sre_constants</tt><tt class="py-op">.</tt><tt class="py-name">CATEGORY</tt><tt class="py-op">:</tt> </tt>
+<a name="L385"></a><tt class="py-lineno">385</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">args</tt> <tt class="py-op">==</tt> <tt class="py-name">sre_constants</tt><tt class="py-op">.</tt><tt class="py-name">CATEGORY_DIGIT</tt><tt class="py-op">:</tt> <tt class="py-name">val</tt> <tt class="py-op">=</tt> <tt class="py-string">r'\d'</tt> </tt>
+<a name="L386"></a><tt class="py-lineno">386</tt>  <tt class="py-line">                <tt class="py-keyword">elif</tt> <tt class="py-name">args</tt> <tt class="py-op">==</tt> <tt class="py-name">sre_constants</tt><tt class="py-op">.</tt><tt class="py-name">CATEGORY_NOT_DIGIT</tt><tt class="py-op">:</tt> <tt class="py-name">val</tt> <tt class="py-op">=</tt> <tt class="py-string">r'\D'</tt> </tt>
+<a name="L387"></a><tt class="py-lineno">387</tt>  <tt class="py-line">                <tt class="py-keyword">elif</tt> <tt class="py-name">args</tt> <tt class="py-op">==</tt> <tt class="py-name">sre_constants</tt><tt class="py-op">.</tt><tt class="py-name">CATEGORY_SPACE</tt><tt class="py-op">:</tt> <tt class="py-name">val</tt> <tt class="py-op">=</tt> <tt class="py-string">r'\s'</tt> </tt>
+<a name="L388"></a><tt class="py-lineno">388</tt>  <tt class="py-line">                <tt class="py-keyword">elif</tt> <tt class="py-name">args</tt> <tt class="py-op">==</tt> <tt class="py-name">sre_constants</tt><tt class="py-op">.</tt><tt class="py-name">CATEGORY_NOT_SPACE</tt><tt class="py-op">:</tt> <tt class="py-name">val</tt> <tt class="py-op">=</tt> <tt class="py-string">r'\S'</tt> </tt>
+<a name="L389"></a><tt class="py-lineno">389</tt>  <tt class="py-line">                <tt class="py-keyword">elif</tt> <tt class="py-name">args</tt> <tt class="py-op">==</tt> <tt class="py-name">sre_constants</tt><tt class="py-op">.</tt><tt class="py-name">CATEGORY_WORD</tt><tt class="py-op">:</tt> <tt class="py-name">val</tt> <tt class="py-op">=</tt> <tt class="py-string">r'\w'</tt> </tt>
+<a name="L390"></a><tt class="py-lineno">390</tt>  <tt class="py-line">                <tt class="py-keyword">elif</tt> <tt class="py-name">args</tt> <tt class="py-op">==</tt> <tt class="py-name">sre_constants</tt><tt class="py-op">.</tt><tt class="py-name">CATEGORY_NOT_WORD</tt><tt class="py-op">:</tt> <tt class="py-name">val</tt> <tt class="py-op">=</tt> <tt class="py-string">r'\W'</tt> </tt>
+<a name="L391"></a><tt class="py-lineno">391</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">'Unknown category %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">args</tt><tt class="py-op">)</tt> </tt>
+<a name="L392"></a><tt class="py-lineno">392</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-199" class="py-name"><a title="epydoc.markup.pyval_repr.PyvalColorizer._output" class="py-name" href="#" onclick="return doclink('link-199', '_output', 'link-58');">_output</a></tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-200" class="py- [...]
+<a name="L393"></a><tt class="py-lineno">393</tt>  <tt class="py-line">                 </tt>
+<a name="L394"></a><tt class="py-lineno">394</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">op</tt> <tt class="py-op">==</tt> <tt class="py-name">sre_constants</tt><tt class="py-op">.</tt><tt class="py-name">AT</tt><tt class="py-op">:</tt> </tt>
+<a name="L395"></a><tt class="py-lineno">395</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">args</tt> <tt class="py-op">==</tt> <tt class="py-name">sre_constants</tt><tt class="py-op">.</tt><tt class="py-name">AT_BEGINNING_STRING</tt><tt class="py-op">:</tt> <tt class="py-name">val</tt> <tt class="py-op">=</tt> <tt class="py-string">r'\A'</tt> </tt>
+<a name="L396"></a><tt class="py-lineno">396</tt>  <tt class="py-line">                <tt class="py-keyword">elif</tt> <tt class="py-name">args</tt> <tt class="py-op">==</tt> <tt class="py-name">sre_constants</tt><tt class="py-op">.</tt><tt class="py-name">AT_BEGINNING</tt><tt class="py-op">:</tt> <tt class="py-name">val</tt> <tt class="py-op">=</tt> <tt class="py-string">r'^'</tt> </tt>
+<a name="L397"></a><tt class="py-lineno">397</tt>  <tt class="py-line">                <tt class="py-keyword">elif</tt> <tt class="py-name">args</tt> <tt class="py-op">==</tt> <tt class="py-name">sre_constants</tt><tt class="py-op">.</tt><tt class="py-name">AT_END</tt><tt class="py-op">:</tt> <tt class="py-name">val</tt> <tt class="py-op">=</tt> <tt class="py-string">r'$'</tt> </tt>
+<a name="L398"></a><tt class="py-lineno">398</tt>  <tt class="py-line">                <tt class="py-keyword">elif</tt> <tt class="py-name">args</tt> <tt class="py-op">==</tt> <tt class="py-name">sre_constants</tt><tt class="py-op">.</tt><tt class="py-name">AT_BOUNDARY</tt><tt class="py-op">:</tt> <tt class="py-name">val</tt> <tt class="py-op">=</tt> <tt class="py-string">r'\b'</tt> </tt>
+<a name="L399"></a><tt class="py-lineno">399</tt>  <tt class="py-line">                <tt class="py-keyword">elif</tt> <tt class="py-name">args</tt> <tt class="py-op">==</tt> <tt class="py-name">sre_constants</tt><tt class="py-op">.</tt><tt class="py-name">AT_NON_BOUNDARY</tt><tt class="py-op">:</tt> <tt class="py-name">val</tt> <tt class="py-op">=</tt> <tt class="py-string">r'\B'</tt> </tt>
+<a name="L400"></a><tt class="py-lineno">400</tt>  <tt class="py-line">                <tt class="py-keyword">elif</tt> <tt class="py-name">args</tt> <tt class="py-op">==</tt> <tt class="py-name">sre_constants</tt><tt class="py-op">.</tt><tt class="py-name">AT_END_STRING</tt><tt class="py-op">:</tt> <tt class="py-name">val</tt> <tt class="py-op">=</tt> <tt class="py-string">r'\Z'</tt> </tt>
+<a name="L401"></a><tt class="py-lineno">401</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">'Unknown position %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">args</tt><tt class="py-op">)</tt> </tt>
+<a name="L402"></a><tt class="py-lineno">402</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-201" class="py-name"><a title="epydoc.markup.pyval_repr.PyvalColorizer._output" class="py-name" href="#" onclick="return doclink('link-201', '_output', 'link-58');">_output</a></tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-202" class="py- [...]
+<a name="L403"></a><tt class="py-lineno">403</tt>  <tt class="py-line">                 </tt>
+<a name="L404"></a><tt class="py-lineno">404</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">op</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">sre_constants</tt><tt class="py-op">.</tt><tt class="py-name">MAX_REPEAT</tt><tt class="py-op">,</tt> <tt class="py-name">sre_constants</tt><tt class="py-op">.</tt><tt class="py-name">MIN_REPEAT</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L405"></a><tt class="py-lineno">405</tt>  <tt class="py-line">                <tt class="py-name">minrpt</tt> <tt class="py-op">=</tt> <tt class="py-name">args</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L406"></a><tt class="py-lineno">406</tt>  <tt class="py-line">                <tt class="py-name">maxrpt</tt> <tt class="py-op">=</tt> <tt class="py-name">args</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L407"></a><tt class="py-lineno">407</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">maxrpt</tt> <tt class="py-op">==</tt> <tt class="py-name">sre_constants</tt><tt class="py-op">.</tt><tt class="py-name">MAXREPEAT</tt><tt class="py-op">:</tt> </tt>
+<a name="L408"></a><tt class="py-lineno">408</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">minrpt</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt>   <tt class="py-name">val</tt> <tt class="py-op">=</tt> <tt class="py-string">'*'</tt> </tt>
+<a name="L409"></a><tt class="py-lineno">409</tt>  <tt class="py-line">                    <tt class="py-keyword">elif</tt> <tt class="py-name">minrpt</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> <tt class="py-name">val</tt> <tt class="py-op">=</tt> <tt class="py-string">'+'</tt> </tt>
+<a name="L410"></a><tt class="py-lineno">410</tt>  <tt class="py-line">                    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> <tt class="py-name">val</tt> <tt class="py-op">=</tt> <tt class="py-string">'{%d,}'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">minrpt</tt><tt class="py-op">)</tt> </tt>
+<a name="L411"></a><tt class="py-lineno">411</tt>  <tt class="py-line">                <tt class="py-keyword">elif</tt> <tt class="py-name">minrpt</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L412"></a><tt class="py-lineno">412</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">maxrpt</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> <tt class="py-name">val</tt> <tt class="py-op">=</tt> <tt class="py-string">'?'</tt> </tt>
+<a name="L413"></a><tt class="py-lineno">413</tt>  <tt class="py-line">                    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> <tt class="py-name">val</tt> <tt class="py-op">=</tt> <tt class="py-string">'{,%d}'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">maxrpt</tt><tt class="py-op">)</tt> </tt>
+<a name="L414"></a><tt class="py-lineno">414</tt>  <tt class="py-line">                <tt class="py-keyword">elif</tt> <tt class="py-name">minrpt</tt> <tt class="py-op">==</tt> <tt class="py-name">maxrpt</tt><tt class="py-op">:</tt> </tt>
+<a name="L415"></a><tt class="py-lineno">415</tt>  <tt class="py-line">                    <tt class="py-name">val</tt> <tt class="py-op">=</tt> <tt class="py-string">'{%d}'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">maxrpt</tt><tt class="py-op">)</tt> </tt>
+<a name="L416"></a><tt class="py-lineno">416</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L417"></a><tt class="py-lineno">417</tt>  <tt class="py-line">                    <tt class="py-name">val</tt> <tt class="py-op">=</tt> <tt class="py-string">'{%d,%d}'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">minrpt</tt><tt class="py-op">,</tt> <tt class="py-name">maxrpt</tt><tt class="py-op">)</tt> </tt>
+<a name="L418"></a><tt class="py-lineno">418</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">op</tt> <tt class="py-op">==</tt> <tt class="py-name">sre_constants</tt><tt class="py-op">.</tt><tt class="py-name">MIN_REPEAT</tt><tt class="py-op">:</tt> </tt>
+<a name="L419"></a><tt class="py-lineno">419</tt>  <tt class="py-line">                    <tt class="py-name">val</tt> <tt class="py-op">+=</tt> <tt class="py-string">'?'</tt> </tt>
+<a name="L420"></a><tt class="py-lineno">420</tt>  <tt class="py-line">                     </tt>
+<a name="L421"></a><tt class="py-lineno">421</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-203" class="py-name"><a title="epydoc.markup.pyval_repr.PyvalColorizer._colorize_re_tree" class="py-name" href="#" onclick="return doclink('link-203', '_colorize_re_tree', 'link-179');">_colorize_re_tree</a></tt><tt class="py-op">(</tt><tt class="py-name">args</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</t [...]
+<a name="L422"></a><tt class="py-lineno">422</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-204" class="py-name"><a title="epydoc.markup.pyval_repr.PyvalColorizer._output" class="py-name" href="#" onclick="return doclink('link-204', '_output', 'link-58');">_output</a></tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-205" class="py- [...]
+<a name="L423"></a><tt class="py-lineno">423</tt>  <tt class="py-line">                 </tt>
+<a name="L424"></a><tt class="py-lineno">424</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">op</tt> <tt class="py-op">==</tt> <tt class="py-name">sre_constants</tt><tt class="py-op">.</tt><tt class="py-name">SUBPATTERN</tt><tt class="py-op">:</tt> </tt>
+<a name="L425"></a><tt class="py-lineno">425</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">args</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L426"></a><tt class="py-lineno">426</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-206" class="py-name"><a title="epydoc.markup.pyval_repr.PyvalColorizer._output" class="py-name" href="#" onclick="return doclink('link-206', '_output', 'link-58');">_output</a></tt><tt class="py-op">(</tt><tt class="py-string">'(?:'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-207" cl [...]
+<a name="L427"></a><tt class="py-lineno">427</tt>  <tt class="py-line">                <tt class="py-keyword">elif</tt> <tt class="py-name">args</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-keyword">in</tt> <tt class="py-name">groups</tt><tt class="py-op">:</tt> </tt>
+<a name="L428"></a><tt class="py-lineno">428</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-208" class="py-name"><a title="epydoc.markup.pyval_repr.PyvalColorizer._output" class="py-name" href="#" onclick="return doclink('link-208', '_output', 'link-58');">_output</a></tt><tt class="py-op">(</tt><tt class="py-string">'(?P<'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-209 [...]
+<a name="L429"></a><tt class="py-lineno">429</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-210" class="py-name"><a title="epydoc.markup.pyval_repr.PyvalColorizer._output" class="py-name" href="#" onclick="return doclink('link-210', '_output', 'link-58');">_output</a></tt><tt class="py-op">(</tt><tt class="py-name">groups</tt><tt class="py-op">[</tt><tt class="py-name">args</tt><tt class="py-op">[</tt><tt class="py-number"> [...]
+<a name="L430"></a><tt class="py-lineno">430</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-212" class="py-name"><a title="epydoc.markup.pyval_repr.PyvalColorizer._output" class="py-name" href="#" onclick="return doclink('link-212', '_output', 'link-58');">_output</a></tt><tt class="py-op">(</tt><tt class="py-string">'>'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-213" c [...]
+<a name="L431"></a><tt class="py-lineno">431</tt>  <tt class="py-line">                <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">args</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">int</tt><tt class="py-op">,</tt> <tt class="py-name">long</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L432"></a><tt class="py-lineno">432</tt>  <tt class="py-line">                    <tt class="py-comment"># This is cheating:</tt> </tt>
+<a name="L433"></a><tt class="py-lineno">433</tt>  <tt class="py-line"><tt class="py-comment"></tt>                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-214" class="py-name"><a title="epydoc.markup.pyval_repr.PyvalColorizer._output" class="py-name" href="#" onclick="return doclink('link-214', '_output', 'link-58');">_output</a></tt><tt class="py-op">(</tt><tt class="py-string">'('</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op"> [...]
+<a name="L434"></a><tt class="py-lineno">434</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L435"></a><tt class="py-lineno">435</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-216" class="py-name"><a title="epydoc.markup.pyval_repr.PyvalColorizer._output" class="py-name" href="#" onclick="return doclink('link-216', '_output', 'link-58');">_output</a></tt><tt class="py-op">(</tt><tt class="py-string">'(?P<'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-217 [...]
+<a name="L436"></a><tt class="py-lineno">436</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-218" class="py-name"><a title="epydoc.markup.pyval_repr.PyvalColorizer._output" class="py-name" href="#" onclick="return doclink('link-218', '_output', 'link-58');">_output</a></tt><tt class="py-op">(</tt><tt class="py-name">args</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt>  [...]
+<a name="L437"></a><tt class="py-lineno">437</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-220" class="py-name"><a title="epydoc.markup.pyval_repr.PyvalColorizer._output" class="py-name" href="#" onclick="return doclink('link-220', '_output', 'link-58');">_output</a></tt><tt class="py-op">(</tt><tt class="py-string">'>'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-221" c [...]
+<a name="L438"></a><tt class="py-lineno">438</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-222" class="py-name"><a title="epydoc.markup.pyval_repr.PyvalColorizer._colorize_re_tree" class="py-name" href="#" onclick="return doclink('link-222', '_colorize_re_tree', 'link-179');">_colorize_re_tree</a></tt><tt class="py-op">(</tt><tt class="py-name">args</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</t [...]
+<a name="L439"></a><tt class="py-lineno">439</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-223" class="py-name"><a title="epydoc.markup.pyval_repr.PyvalColorizer._output" class="py-name" href="#" onclick="return doclink('link-223', '_output', 'link-58');">_output</a></tt><tt class="py-op">(</tt><tt class="py-string">')'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-224" class="p [...]
+<a name="L440"></a><tt class="py-lineno">440</tt>  <tt class="py-line">     </tt>
+<a name="L441"></a><tt class="py-lineno">441</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">op</tt> <tt class="py-op">==</tt> <tt class="py-name">sre_constants</tt><tt class="py-op">.</tt><tt class="py-name">GROUPREF</tt><tt class="py-op">:</tt> </tt>
+<a name="L442"></a><tt class="py-lineno">442</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-225" class="py-name"><a title="epydoc.markup.pyval_repr.PyvalColorizer._output" class="py-name" href="#" onclick="return doclink('link-225', '_output', 'link-58');">_output</a></tt><tt class="py-op">(</tt><tt class="py-string">'\\%d'</tt> <tt class="py-op">%</tt> <tt class="py-name">args</tt><tt class="py-op">,</tt> <tt class="py-name">s [...]
+<a name="L443"></a><tt class="py-lineno">443</tt>  <tt class="py-line">     </tt>
+<a name="L444"></a><tt class="py-lineno">444</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">op</tt> <tt class="py-op">==</tt> <tt class="py-name">sre_constants</tt><tt class="py-op">.</tt><tt class="py-name">RANGE</tt><tt class="py-op">:</tt> </tt>
+<a name="L445"></a><tt class="py-lineno">445</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-227" class="py-name"><a title="epydoc.markup.pyval_repr.PyvalColorizer._colorize_re_tree" class="py-name" href="#" onclick="return doclink('link-227', '_colorize_re_tree', 'link-179');">_colorize_re_tree</a></tt><tt class="py-op">(</tt> <tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">sre_constants</tt><tt class="py-op [...]
+<a name="L446"></a><tt class="py-lineno">446</tt>  <tt class="py-line">                                        <tt class="py-name">state</tt><tt class="py-op">,</tt> <tt class="py-name">False</tt><tt class="py-op">,</tt> <tt class="py-name">groups</tt> <tt class="py-op">)</tt> </tt>
+<a name="L447"></a><tt class="py-lineno">447</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-228" class="py-name"><a title="epydoc.markup.pyval_repr.PyvalColorizer._output" class="py-name" href="#" onclick="return doclink('link-228', '_output', 'link-58');">_output</a></tt><tt class="py-op">(</tt><tt class="py-string">'-'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-229" class="p [...]
+<a name="L448"></a><tt class="py-lineno">448</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-230" class="py-name"><a title="epydoc.markup.pyval_repr.PyvalColorizer._colorize_re_tree" class="py-name" href="#" onclick="return doclink('link-230', '_colorize_re_tree', 'link-179');">_colorize_re_tree</a></tt><tt class="py-op">(</tt> <tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">sre_constants</tt><tt class="py-op [...]
+<a name="L449"></a><tt class="py-lineno">449</tt>  <tt class="py-line">                                        <tt class="py-name">state</tt><tt class="py-op">,</tt> <tt class="py-name">False</tt><tt class="py-op">,</tt> <tt class="py-name">groups</tt> <tt class="py-op">)</tt> </tt>
+<a name="L450"></a><tt class="py-lineno">450</tt>  <tt class="py-line">                 </tt>
+<a name="L451"></a><tt class="py-lineno">451</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">op</tt> <tt class="py-op">==</tt> <tt class="py-name">sre_constants</tt><tt class="py-op">.</tt><tt class="py-name">NEGATE</tt><tt class="py-op">:</tt> </tt>
+<a name="L452"></a><tt class="py-lineno">452</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-231" class="py-name"><a title="epydoc.markup.pyval_repr.PyvalColorizer._output" class="py-name" href="#" onclick="return doclink('link-231', '_output', 'link-58');">_output</a></tt><tt class="py-op">(</tt><tt class="py-string">'^'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-232" class="p [...]
+<a name="L453"></a><tt class="py-lineno">453</tt>  <tt class="py-line">     </tt>
+<a name="L454"></a><tt class="py-lineno">454</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">op</tt> <tt class="py-op">==</tt> <tt class="py-name">sre_constants</tt><tt class="py-op">.</tt><tt class="py-name">ASSERT</tt><tt class="py-op">:</tt> </tt>
+<a name="L455"></a><tt class="py-lineno">455</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">args</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">></tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L456"></a><tt class="py-lineno">456</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-233" class="py-name"><a title="epydoc.markup.pyval_repr.PyvalColorizer._output" class="py-name" href="#" onclick="return doclink('link-233', '_output', 'link-58');">_output</a></tt><tt class="py-op">(</tt><tt class="py-string">'(?='</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-234" cl [...]
+<a name="L457"></a><tt class="py-lineno">457</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L458"></a><tt class="py-lineno">458</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-235" class="py-name"><a title="epydoc.markup.pyval_repr.PyvalColorizer._output" class="py-name" href="#" onclick="return doclink('link-235', '_output', 'link-58');">_output</a></tt><tt class="py-op">(</tt><tt class="py-string">'(?<='</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-236 [...]
+<a name="L459"></a><tt class="py-lineno">459</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-237" class="py-name"><a title="epydoc.markup.pyval_repr.PyvalColorizer._colorize_re_tree" class="py-name" href="#" onclick="return doclink('link-237', '_colorize_re_tree', 'link-179');">_colorize_re_tree</a></tt><tt class="py-op">(</tt><tt class="py-name">args</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</t [...]
+<a name="L460"></a><tt class="py-lineno">460</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-238" class="py-name"><a title="epydoc.markup.pyval_repr.PyvalColorizer._output" class="py-name" href="#" onclick="return doclink('link-238', '_output', 'link-58');">_output</a></tt><tt class="py-op">(</tt><tt class="py-string">')'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-239" class="p [...]
+<a name="L461"></a><tt class="py-lineno">461</tt>  <tt class="py-line">                                </tt>
+<a name="L462"></a><tt class="py-lineno">462</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">op</tt> <tt class="py-op">==</tt> <tt class="py-name">sre_constants</tt><tt class="py-op">.</tt><tt class="py-name">ASSERT_NOT</tt><tt class="py-op">:</tt> </tt>
+<a name="L463"></a><tt class="py-lineno">463</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">args</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">></tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L464"></a><tt class="py-lineno">464</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-240" class="py-name"><a title="epydoc.markup.pyval_repr.PyvalColorizer._output" class="py-name" href="#" onclick="return doclink('link-240', '_output', 'link-58');">_output</a></tt><tt class="py-op">(</tt><tt class="py-string">'(?!'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-241" cl [...]
+<a name="L465"></a><tt class="py-lineno">465</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L466"></a><tt class="py-lineno">466</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-242" class="py-name"><a title="epydoc.markup.pyval_repr.PyvalColorizer._output" class="py-name" href="#" onclick="return doclink('link-242', '_output', 'link-58');">_output</a></tt><tt class="py-op">(</tt><tt class="py-string">'(?<!'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-243 [...]
+<a name="L467"></a><tt class="py-lineno">467</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-244" class="py-name"><a title="epydoc.markup.pyval_repr.PyvalColorizer._colorize_re_tree" class="py-name" href="#" onclick="return doclink('link-244', '_colorize_re_tree', 'link-179');">_colorize_re_tree</a></tt><tt class="py-op">(</tt><tt class="py-name">args</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</t [...]
+<a name="L468"></a><tt class="py-lineno">468</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-245" class="py-name"><a title="epydoc.markup.pyval_repr.PyvalColorizer._output" class="py-name" href="#" onclick="return doclink('link-245', '_output', 'link-58');">_output</a></tt><tt class="py-op">(</tt><tt class="py-string">')'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-246" class="p [...]
+<a name="L469"></a><tt class="py-lineno">469</tt>  <tt class="py-line">     </tt>
+<a name="L470"></a><tt class="py-lineno">470</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">op</tt> <tt class="py-op">==</tt> <tt class="py-name">sre_constants</tt><tt class="py-op">.</tt><tt class="py-name">NOT_LITERAL</tt><tt class="py-op">:</tt> </tt>
+<a name="L471"></a><tt class="py-lineno">471</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-247" class="py-name"><a title="epydoc.markup.pyval_repr.PyvalColorizer._output" class="py-name" href="#" onclick="return doclink('link-247', '_output', 'link-58');">_output</a></tt><tt class="py-op">(</tt><tt class="py-string">'[^'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-248" class=" [...]
+<a name="L472"></a><tt class="py-lineno">472</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-249" class="py-name"><a title="epydoc.markup.pyval_repr.PyvalColorizer._colorize_re_tree" class="py-name" href="#" onclick="return doclink('link-249', '_colorize_re_tree', 'link-179');">_colorize_re_tree</a></tt><tt class="py-op">(</tt> <tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">sre_constants</tt><tt class="py-op [...]
+<a name="L473"></a><tt class="py-lineno">473</tt>  <tt class="py-line">                                        <tt class="py-name">state</tt><tt class="py-op">,</tt> <tt class="py-name">False</tt><tt class="py-op">,</tt> <tt class="py-name">groups</tt> <tt class="py-op">)</tt> </tt>
+<a name="L474"></a><tt class="py-lineno">474</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-250" class="py-name"><a title="epydoc.markup.pyval_repr.PyvalColorizer._output" class="py-name" href="#" onclick="return doclink('link-250', '_output', 'link-58');">_output</a></tt><tt class="py-op">(</tt><tt class="py-string">']'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-251" class="p [...]
+<a name="L475"></a><tt class="py-lineno">475</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L476"></a><tt class="py-lineno">476</tt>  <tt class="py-line">                <tt id="link-252" class="py-name" targets="Method epydoc.cli.ConsoleLogger.log()=epydoc.cli.ConsoleLogger-class.html#log,Method epydoc.cli.HTMLLogger.log()=epydoc.cli.HTMLLogger-class.html#log,Method epydoc.gui.GUILogger.log()=epydoc.gui.GUILogger-class.html#log,Module epydoc.log=epydoc.log-module.html,Method epydoc.log.Logger.log()=epydoc.log.Logger-class.html#log,Method epydoc.log.SimpleLogger.log()= [...]
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-252', 'log', 'link-252');">log</a></tt><tt class="py-op">.</tt><tt id="link-253" class="py-name" targets="Function epydoc.log.error()=epydoc.log-module.html#error"><a title="epydoc.log.error" class="py-name" href="#" onclick="return doclink('link-253', 'error', 'link-253');">error</a></tt><tt class="py-op">(</tt><tt class="py-string">"Error colorizing regexp: unknown elt %r"</tt> <tt class="py-op">%</tt>  [...]
+<a name="L477"></a><tt class="py-lineno">477</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-number">1</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">noparen</tt><tt class="py-op">:</tt>  </tt>
+<a name="L478"></a><tt class="py-lineno">478</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-254" class="py-name"><a title="epydoc.markup.pyval_repr.PyvalColorizer._output" class="py-name" href="#" onclick="return doclink('link-254', '_output', 'link-58');">_output</a></tt><tt class="py-op">(</tt><tt class="py-string">')'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-255" class="py-na [...]
+</div><a name="L479"></a><tt class="py-lineno">479</tt>  <tt class="py-line">                            </tt>
+<a name="L480"></a><tt class="py-lineno">480</tt>  <tt class="py-line">    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L481"></a><tt class="py-lineno">481</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># Output function</tt> </tt>
+<a name="L482"></a><tt class="py-lineno">482</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#////////////////////////////////////////////////////////////</tt> </tt>
+<a name="L483"></a><tt class="py-lineno">483</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="PyvalColorizer._output"></a><div id="PyvalColorizer._output-def"><a name="L484"></a><tt class="py-lineno">484</tt> <a class="py-toggle" href="#" id="PyvalColorizer._output-toggle" onclick="return toggle('PyvalColorizer._output');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_output">_output</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="p [...]
+</div><div id="PyvalColorizer._output-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="PyvalColorizer._output-expanded"><a name="L485"></a><tt class="py-lineno">485</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L486"></a><tt class="py-lineno">486</tt>  <tt class="py-line"><tt class="py-docstring">        Add the string `s` to the result list, tagging its contents</tt> </tt>
+<a name="L487"></a><tt class="py-lineno">487</tt>  <tt class="py-line"><tt class="py-docstring">        with tag `tag`.  Any lines that go beyond `self.linelen` will</tt> </tt>
+<a name="L488"></a><tt class="py-lineno">488</tt>  <tt class="py-line"><tt class="py-docstring">        be line-wrapped.  If the total number of lines exceeds</tt> </tt>
+<a name="L489"></a><tt class="py-lineno">489</tt>  <tt class="py-line"><tt class="py-docstring">        `self.maxlines`, then raise a `_Maxlines` exception.</tt> </tt>
+<a name="L490"></a><tt class="py-lineno">490</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L491"></a><tt class="py-lineno">491</tt>  <tt class="py-line">        <tt class="py-comment"># Make sure the string is unicode.</tt> </tt>
+<a name="L492"></a><tt class="py-lineno">492</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L493"></a><tt class="py-lineno">493</tt>  <tt class="py-line">            <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt id="link-256" class="py-name"><a title="epydoc.util.decode_with_backslashreplace" class="py-name" href="#" onclick="return doclink('link-256', 'decode_with_backslashreplace', 'link-4');">decode_with_backslashreplace</a></tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> </tt>
+<a name="L494"></a><tt class="py-lineno">494</tt>  <tt class="py-line">         </tt>
+<a name="L495"></a><tt class="py-lineno">495</tt>  <tt class="py-line">        <tt class="py-comment"># Split the string into segments.  The first segment is the</tt> </tt>
+<a name="L496"></a><tt class="py-lineno">496</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># content to add to the current line, and the remaining</tt> </tt>
+<a name="L497"></a><tt class="py-lineno">497</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># segments are new lines.</tt> </tt>
+<a name="L498"></a><tt class="py-lineno">498</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">segments</tt> <tt class="py-op">=</tt> <tt class="py-name">s</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L499"></a><tt class="py-lineno">499</tt>  <tt class="py-line"> </tt>
+<a name="L500"></a><tt class="py-lineno">500</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">i</tt><tt class="py-op">,</tt> <tt class="py-name">segment</tt> <tt class="py-keyword">in</tt> <tt class="py-name">enumerate</tt><tt class="py-op">(</tt><tt class="py-name">segments</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L501"></a><tt class="py-lineno">501</tt>  <tt class="py-line">            <tt class="py-comment"># If this isn't the first segment, then add a newline to</tt> </tt>
+<a name="L502"></a><tt class="py-lineno">502</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># split it from the previous segment.</tt> </tt>
+<a name="L503"></a><tt class="py-lineno">503</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt class="py-name">i</tt> <tt class="py-op">></tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L504"></a><tt class="py-lineno">504</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">state</tt><tt class="py-op">.</tt><tt id="link-257" class="py-name"><a title="epydoc.apidoc.RoutineDoc.lineno" class="py-name" href="#" onclick="return doclink('link-257', 'lineno', 'link-17');">lineno</a></tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-n [...]
+<a name="L505"></a><tt class="py-lineno">505</tt>  <tt class="py-line">                    <tt class="py-keyword">raise</tt> <tt id="link-258" class="py-name"><a title="epydoc.markup.pyval_repr._Maxlines" class="py-name" href="#" onclick="return doclink('link-258', '_Maxlines', 'link-62');">_Maxlines</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L506"></a><tt class="py-lineno">506</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">state</tt><tt class="py-op">.</tt><tt class="py-name">linebreakok</tt><tt class="py-op">:</tt> </tt>
+<a name="L507"></a><tt class="py-lineno">507</tt>  <tt class="py-line">                    <tt class="py-keyword">raise</tt> <tt id="link-259" class="py-name"><a title="epydoc.markup.pyval_repr._Linebreak" class="py-name" href="#" onclick="return doclink('link-259', '_Linebreak', 'link-63');">_Linebreak</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L508"></a><tt class="py-lineno">508</tt>  <tt class="py-line">                <tt class="py-name">state</tt><tt class="py-op">.</tt><tt class="py-name">result</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">u'\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L509"></a><tt class="py-lineno">509</tt>  <tt class="py-line">                <tt class="py-name">state</tt><tt class="py-op">.</tt><tt id="link-260" class="py-name"><a title="epydoc.apidoc.RoutineDoc.lineno" class="py-name" href="#" onclick="return doclink('link-260', 'lineno', 'link-17');">lineno</a></tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L510"></a><tt class="py-lineno">510</tt>  <tt class="py-line">                <tt class="py-name">state</tt><tt class="py-op">.</tt><tt class="py-name">charpos</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L511"></a><tt class="py-lineno">511</tt>  <tt class="py-line"> </tt>
+<a name="L512"></a><tt class="py-lineno">512</tt>  <tt class="py-line">            <tt class="py-comment"># If the segment fits on the current line, then just call</tt> </tt>
+<a name="L513"></a><tt class="py-lineno">513</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># markup to tag it, and store the result.</tt> </tt>
+<a name="L514"></a><tt class="py-lineno">514</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt class="py-name">state</tt><tt class="py-op">.</tt><tt class="py-name">charpos</tt> <tt class="py-op">+</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">segment</tt><tt class="py-op">)</tt> <tt class="py-op"><=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">linelen</tt><tt class="py-o [...]
+<a name="L515"></a><tt class="py-lineno">515</tt>  <tt class="py-line">                <tt class="py-name">state</tt><tt class="py-op">.</tt><tt class="py-name">charpos</tt> <tt class="py-op">+=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">segment</tt><tt class="py-op">)</tt> </tt>
+<a name="L516"></a><tt class="py-lineno">516</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt id="link-261" class="py-name" targets="Method epydoc.markup.Field.tag()=epydoc.markup.Field-class.html#tag"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-261', 'tag', 'link-261');">tag</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L517"></a><tt class="py-lineno">517</tt>  <tt class="py-line">                    <tt class="py-name">segment</tt> <tt class="py-op">=</tt> <tt id="link-262" class="py-name"><a title="epydoc.markup.epytext.Element" class="py-name" href="#" onclick="return doclink('link-262', 'Element', 'link-14');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'code'</tt><tt class="py-op">,</tt> <tt class="py-name">segment</tt><tt class="py-op">,</tt> <tt class="py-name">style</t [...]
+<a name="L518"></a><tt class="py-lineno">518</tt>  <tt class="py-line">                <tt class="py-name">state</tt><tt class="py-op">.</tt><tt class="py-name">result</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">segment</tt><tt class="py-op">)</tt> </tt>
+<a name="L519"></a><tt class="py-lineno">519</tt>  <tt class="py-line"> </tt>
+<a name="L520"></a><tt class="py-lineno">520</tt>  <tt class="py-line">            <tt class="py-comment"># If the segment doesn't fit on the current line, then</tt> </tt>
+<a name="L521"></a><tt class="py-lineno">521</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># line-wrap it, and insert the remainder of the line into</tt> </tt>
+<a name="L522"></a><tt class="py-lineno">522</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># the segments list that we're iterating over.  (We'll go</tt> </tt>
+<a name="L523"></a><tt class="py-lineno">523</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># the the beginning of the next line at the start of the</tt> </tt>
+<a name="L524"></a><tt class="py-lineno">524</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># next iteration through the loop.)</tt> </tt>
+<a name="L525"></a><tt class="py-lineno">525</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L526"></a><tt class="py-lineno">526</tt>  <tt class="py-line">                <tt class="py-name">split</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">linelen</tt><tt class="py-op">-</tt><tt class="py-name">state</tt><tt class="py-op">.</tt><tt class="py-name">charpos</tt> </tt>
+<a name="L527"></a><tt class="py-lineno">527</tt>  <tt class="py-line">                <tt class="py-name">segments</tt><tt class="py-op">.</tt><tt class="py-name">insert</tt><tt class="py-op">(</tt><tt class="py-name">i</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-name">segment</tt><tt class="py-op">[</tt><tt class="py-name">split</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L528"></a><tt class="py-lineno">528</tt>  <tt class="py-line">                <tt class="py-name">segment</tt> <tt class="py-op">=</tt> <tt class="py-name">segment</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-name">split</tt><tt class="py-op">]</tt> </tt>
+<a name="L529"></a><tt class="py-lineno">529</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt id="link-264" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-264', 'tag', 'link-261');">tag</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L530"></a><tt class="py-lineno">530</tt>  <tt class="py-line">                    <tt class="py-name">segment</tt> <tt class="py-op">=</tt> <tt id="link-265" class="py-name"><a title="epydoc.markup.epytext.Element" class="py-name" href="#" onclick="return doclink('link-265', 'Element', 'link-14');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'code'</tt><tt class="py-op">,</tt> <tt class="py-name">segment</tt><tt class="py-op">,</tt> <tt class="py-name">style</t [...]
+<a name="L531"></a><tt class="py-lineno">531</tt>  <tt class="py-line">                <tt class="py-name">state</tt><tt class="py-op">.</tt><tt class="py-name">result</tt> <tt class="py-op">+=</tt> <tt class="py-op">[</tt><tt class="py-name">segment</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-267" class="py-name"><a title="epydoc.markup.pyval_repr.PyvalColorizer.LINEWRAP" class="py-name" href="#" onclick="return doclink('link-267', 'LIN [...]
+</div></div><a name="L532"></a><tt class="py-lineno">532</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:09:41 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.markup.pyval_repr.ColorizedPyvalRepr-class.html b/doc/api/epydoc.markup.pyval_repr.ColorizedPyvalRepr-class.html
new file mode 100644
index 0000000..000d216
--- /dev/null
+++ b/doc/api/epydoc.markup.pyval_repr.ColorizedPyvalRepr-class.html
@@ -0,0 +1,334 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.markup.pyval_repr.ColorizedPyvalRepr</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.markup-module.html">Package markup</a> ::
+        <a href="epydoc.markup.pyval_repr-module.html">Module pyval_repr</a> ::
+        Class ColorizedPyvalRepr
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.markup.pyval_repr.ColorizedPyvalRepr-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class ColorizedPyvalRepr</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.markup.pyval_repr-pysrc.html#ColorizedPyvalRepr">source code</a></span></p>
+<center>
+<center>  <map id="uml_class_diagram_for_epydoc_m_15" name="uml_class_diagram_for_epydoc_m_15">
+<area shape="rect" href="epydoc.markup.ParsedDocstring-class.html#concatenate" title="Returns:  A new parsed docstring containing the concatination of this docstring and  other." alt="" coords="209,36,356,55" />
+<area shape="rect" href="epydoc.markup.ParsedDocstring-class.html#__add__" title="epydoc.markup.ParsedDocstring.__add__" alt="" coords="209,55,356,74" />
+<area shape="rect" href="epydoc.markup.ParsedDocstring-class.html" title="A standard intermediate representation for parsed docstrings that can be used to generate output." alt="" coords="197,6,368,80" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#SYMBOL_TO_HTML" title="epydoc.markup.epytext.ParsedEpytextDocstring.SYMBOL_TO_HTML" alt="" coords="17,122,548,140" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#SYMBOL_TO_LATEX" title="epydoc.markup.epytext.ParsedEpytextDocstring.SYMBOL_TO_LATEX" alt="" coords="17,140,548,159" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#__str__" title="epydoc.markup.epytext.ParsedEpytextDocstring.__str__" alt="" coords="17,162,548,180" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#to_html" title="Translate this docstring to HTML." alt="" coords="17,180,548,199" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#to_latex" title="Translate this docstring to LaTeX." alt="" coords="17,199,548,218" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#to_plaintext" title="Translate this docstring to plaintext." alt="" coords="17,218,548,236" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#summary" title="Returns:  A pair consisting of a short summary of this docstring and a boolean value  indicating whether there is further documentation in addition to the  summary." alt="" coords="17,236,548,255" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#split_fields" title="Split this docstring into its body and its fields." alt="" coords="17,255,548,274" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#index_terms" title="Returns:  The list of index terms that are defined in this docstring." alt="" coords="17,274,548,292" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html" title="epydoc.markup.epytext.ParsedEpytextDocstring" alt="" coords="5,99,560,299" />
+<area shape="rect" href="epydoc.markup.pyval_repr.ColorizedPyvalRepr-class.html#is_complete" title="True if this colorized repr completely describes the object." alt="" coords="165,340,400,359" />
+<area shape="rect" href="epydoc.markup.pyval_repr.ColorizedPyvalRepr-class.html#score" title="A score, evaluating how good this repr is." alt="" coords="165,359,400,378" />
+<area shape="rect" href="epydoc.markup.pyval_repr.ColorizedPyvalRepr-class.html#__init__" title="epydoc.markup.pyval_repr.ColorizedPyvalRepr.__init__" alt="" coords="165,380,400,399" />
+<area shape="rect" href="epydoc.markup.pyval_repr.ColorizedPyvalRepr-class.html" title="epydoc.markup.pyval_repr.ColorizedPyvalRepr" alt="" coords="153,318,412,406" />
+</map>
+  <img src="uml_class_diagram_for_epydoc_m_15.gif" alt='' usemap="#uml_class_diagram_for_epydoc_m_15" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.pyval_repr.ColorizedPyvalRepr-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">tree</span>,
+        <span class="summary-sig-arg">score</span>,
+        <span class="summary-sig-arg">is_complete</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.pyval_repr-pysrc.html#ColorizedPyvalRepr.__init__">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for___init___39-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for___init___39-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for___init___39" name="call_graph_for___init___39">
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#__init__" title="epytext.ParsedEpytextDocstring.__init__()" alt="" coords="411,6,752,38" />
+<area shape="rect" href="epydoc.markup.pyval_repr.ColorizedPyvalRepr-class.html#__init__" title="__init__()" alt="" coords="265,6,361,38" />
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#colorize" title="PyvalColorizer.colorize()" alt="" coords="5,6,216,38" />
+</map>
+  <img src="call_graph_for___init___39.gif" alt='' usemap="#call_graph_for___init___39" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html">epytext.ParsedEpytextDocstring</a></code></b>:
+      <code><a href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#__str__">__str__</a></code>,
+      <code><a href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#index_terms">index_terms</a></code>,
+      <code><a href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#split_fields">split_fields</a></code>,
+      <code><a href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#summary">summary</a></code>,
+      <code><a href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#to_html">to_html</a></code>,
+      <code><a href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#to_latex">to_latex</a></code>,
+      <code><a href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#to_plaintext">to_plaintext</a></code>
+      </p>
+    <div class="private">    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html">epytext.ParsedEpytextDocstring</a></code></b> (private):
+      <code><a href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#_build_graph" onclick="show_private();">_build_graph</a></code>,
+      <code><a href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#_index_term_key" onclick="show_private();">_index_term_key</a></code>,
+      <code><a href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#_index_terms" onclick="show_private();">_index_terms</a></code>,
+      <code><a href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#_to_html" onclick="show_private();">_to_html</a></code>,
+      <code><a href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#_to_latex" onclick="show_private();">_to_latex</a></code>
+      </p></div>
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.markup.ParsedDocstring-class.html">ParsedDocstring</a></code></b>:
+      <code><a href="epydoc.markup.ParsedDocstring-class.html#__add__">__add__</a></code>,
+      <code><a href="epydoc.markup.ParsedDocstring-class.html#concatenate">concatenate</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Class Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-ClassVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html">epytext.ParsedEpytextDocstring</a></code></b>:
+      <code><a href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#SYMBOL_TO_HTML">SYMBOL_TO_HTML</a></code>,
+      <code><a href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#SYMBOL_TO_LATEX">SYMBOL_TO_LATEX</a></code>
+      </p>
+    <div class="private">    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html">epytext.ParsedEpytextDocstring</a></code></b> (private):
+      <code><a href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#_SUMMARY_RE" onclick="show_private();">_SUMMARY_RE</a></code>
+      </p></div>
+    </td>
+  </tr>
+</table>
+<!-- ==================== INSTANCE VARIABLES ==================== -->
+<a name="section-InstanceVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="is_complete"></a><span class="summary-name">is_complete</span><br />
+      True if this colorized repr completely describes the object.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="score"></a><span class="summary-name">score</span><br />
+      A score, evaluating how good this repr is.
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Method Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-MethodDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">tree</span>,
+        <span class="sig-arg">score</span>,
+        <span class="sig-arg">is_complete</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.pyval_repr-pysrc.html#ColorizedPyvalRepr.__init__">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for___init___39-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for___init___39-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for___init___39" name="call_graph_for___init___39">
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#__init__" title="epytext.ParsedEpytextDocstring.__init__()" alt="" coords="411,6,752,38" />
+<area shape="rect" href="epydoc.markup.pyval_repr.ColorizedPyvalRepr-class.html#__init__" title="__init__()" alt="" coords="265,6,361,38" />
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#colorize" title="PyvalColorizer.colorize()" alt="" coords="5,6,216,38" />
+</map>
+  <img src="call_graph_for___init___39.gif" alt='' usemap="#call_graph_for___init___39" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  
+  <dl class="fields">
+    <dt>Overrides:
+        <a href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#__init__">epytext.ParsedEpytextDocstring.__init__</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:08:40 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.markup.pyval_repr.PyvalColorizer-class.html b/doc/api/epydoc.markup.pyval_repr.PyvalColorizer-class.html
new file mode 100644
index 0000000..65cbc4d
--- /dev/null
+++ b/doc/api/epydoc.markup.pyval_repr.PyvalColorizer-class.html
@@ -0,0 +1,855 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.markup.pyval_repr.PyvalColorizer</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.markup-module.html">Package markup</a> ::
+        <a href="epydoc.markup.pyval_repr-module.html">Module pyval_repr</a> ::
+        Class PyvalColorizer
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.markup.pyval_repr.PyvalColorizer-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class PyvalColorizer</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.markup.pyval_repr-pysrc.html#PyvalColorizer">source code</a></span></p>
+<p>Syntax highlighter for Python values.</p>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__init__"></a><span class="summary-sig-name">__init__</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">linelen</span>=<span class="summary-sig-default">75</span>,
+        <span class="summary-sig-arg">maxlines</span>=<span class="summary-sig-default">5</span>,
+        <span class="summary-sig-arg">linebreakok</span>=<span class="summary-sig-default">True</span>,
+        <span class="summary-sig-arg">sort</span>=<span class="summary-sig-default">True</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.pyval_repr-pysrc.html#PyvalColorizer.__init__">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for___init___40-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for___init___40-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for___init___40" name="call_graph_for___init___40">
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#__init__" title="__init__()" alt="" coords="201,6,297,38" />
+<area shape="rect" href="epydoc.markup.pyval_repr-module.html#colorize_pyval" title="colorize_pyval()" alt="" coords="7,6,151,38" />
+</map>
+  <img src="call_graph_for___init___40.gif" alt='' usemap="#call_graph_for___init___40" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#colorize" class="summary-sig-name">colorize</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">pyval</span>,
+        <span class="summary-sig-arg">parse_repr</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">min_score</span>=<span class="summary-sig-default">None</span>)</span><br />
+      Returns:
+      A <a href="epydoc.markup.pyval_repr.ColorizedPyvalRepr-class.html" 
+      class="link">ColorizedPyvalRepr</a> describing the given pyval.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.pyval_repr-pysrc.html#PyvalColorizer.colorize">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_colorize_2-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_colorize_2-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_colorize_2" name="call_graph_for_colorize_2">
+<area shape="rect" href="epydoc.markup.epytext.Element-class.html#__init__" title="epytext.Element.__init__()" alt="" coords="360,6,582,38" />
+<area shape="rect" href="epydoc.markup.pyval_repr.ColorizedPyvalRepr-class.html#__init__" title="ColorizedPyvalRepr.__init__()" alt="" coords="346,62,596,94" />
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_colorize" title="_colorize()" alt="" coords="419,118,523,150" />
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_output" title="_output()" alt="" coords="426,174,516,206" />
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_trim_result" title="_trim_result()" alt="" coords="408,230,534,262" />
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#colorize" title="colorize()" alt="" coords="202,146,295,178" />
+<area shape="rect" href="epydoc.markup.pyval_repr._ColorizerState-class.html#__init__" title="_ColorizerState.__init__()" alt="" coords="362,286,580,318" />
+<area shape="rect" href="epydoc.markup.pyval_repr-module.html#colorize_pyval" title="colorize_pyval()" alt="" coords="7,146,151,178" />
+</map>
+  <img src="call_graph_for_colorize_2.gif" alt='' usemap="#call_graph_for_colorize_2" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_colorize"></a><span class="summary-sig-name">_colorize</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">pyval</span>,
+        <span class="summary-sig-arg">state</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.pyval_repr-pysrc.html#PyvalColorizer._colorize">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__colorize_2-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__colorize_2-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__colorize_2" name="call_graph_for__colorize_2">
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_colorize" title="_colorize()" alt="" coords="196,146,300,178" />
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_colorize_re" title="_colorize_re()" alt="" coords="352,6,480,38" />
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_colorize_str" title="_colorize_str()" alt="" coords="351,62,481,94" />
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_multiline" title="_multiline()" alt="" coords="360,118,472,150" />
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_output" title="_output()" alt="" coords="371,174,461,206" />
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_sort" title="_sort()" alt="" coords="380,230,452,262" />
+<area shape="rect" href="epydoc.markup.pyval_repr-module.html#is_re_pattern" title="is_re_pattern()" alt="" coords="351,286,481,318" />
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_colorize_dict" title="_colorize_dict()" alt="" coords="5,90,147,122" />
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_colorize_iter" title="_colorize_iter()" alt="" coords="7,146,145,178" />
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#colorize" title="colorize()" alt="" coords="29,202,123,234" />
+</map>
+  <img src="call_graph_for__colorize_2.gif" alt='' usemap="#call_graph_for__colorize_2" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_sort"></a><span class="summary-sig-name">_sort</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">items</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.pyval_repr-pysrc.html#PyvalColorizer._sort">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__sort-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__sort-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__sort" name="call_graph_for__sort">
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_colorize" title="_colorize()" alt="" coords="7,6,111,38" />
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_sort" title="_sort()" alt="" coords="161,6,233,38" />
+</map>
+  <img src="call_graph_for__sort.gif" alt='' usemap="#call_graph_for__sort" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_trim_result"></a><span class="summary-sig-name">_trim_result</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">result</span>,
+        <span class="summary-sig-arg">num_chars</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.pyval_repr-pysrc.html#PyvalColorizer._trim_result">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__trim_result-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__trim_result-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__trim_result" name="call_graph_for__trim_result">
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_trim_result" title="_trim_result()" alt="" coords="151,6,276,38" />
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#colorize" title="colorize()" alt="" coords="7,6,100,38" />
+</map>
+  <img src="call_graph_for__trim_result.gif" alt='' usemap="#call_graph_for__trim_result" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_multiline" class="summary-sig-name" onclick="show_private();">_multiline</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">func</span>,
+        <span class="summary-sig-arg">pyval</span>,
+        <span class="summary-sig-arg">state</span>,
+        <span class="summary-sig-arg">*args</span>)</span><br />
+      Helper for container-type colorizers.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.pyval_repr-pysrc.html#PyvalColorizer._multiline">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__multiline-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__multiline-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__multiline" name="call_graph_for__multiline">
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_colorize" title="_colorize()" alt="" coords="7,90,111,122" />
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_multiline" title="_multiline()" alt="" coords="160,90,272,122" />
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_colorize_dict" title="_colorize_dict()" alt="" coords="353,6,495,38" />
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_colorize_iter" title="_colorize_iter()" alt="" coords="355,62,493,94" />
+<area shape="rect" href="epydoc.markup.pyval_repr._ColorizerState-class.html#mark" title="_ColorizerState.mark()" alt="" coords="327,118,521,150" />
+<area shape="rect" href="epydoc.markup.pyval_repr._ColorizerState-class.html#restore" title="_ColorizerState.restore()" alt="" coords="320,174,528,206" />
+</map>
+  <img src="call_graph_for__multiline.gif" alt='' usemap="#call_graph_for__multiline" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_colorize_iter"></a><span class="summary-sig-name">_colorize_iter</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">pyval</span>,
+        <span class="summary-sig-arg">state</span>,
+        <span class="summary-sig-arg">prefix</span>,
+        <span class="summary-sig-arg">suffix</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.pyval_repr-pysrc.html#PyvalColorizer._colorize_iter">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__colorize_iter-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__colorize_iter-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__colorize_iter" name="call_graph_for__colorize_iter">
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_colorize" title="_colorize()" alt="" coords="353,6,457,38" />
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_colorize_iter" title="_colorize_iter()" alt="" coords="165,34,304,66" />
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_output" title="_output()" alt="" coords="360,62,451,94" />
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_multiline" title="_multiline()" alt="" coords="5,34,117,66" />
+</map>
+  <img src="call_graph_for__colorize_iter.gif" alt='' usemap="#call_graph_for__colorize_iter" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_colorize_dict"></a><span class="summary-sig-name">_colorize_dict</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">items</span>,
+        <span class="summary-sig-arg">state</span>,
+        <span class="summary-sig-arg">prefix</span>,
+        <span class="summary-sig-arg">suffix</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.pyval_repr-pysrc.html#PyvalColorizer._colorize_dict">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__colorize_dict-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__colorize_dict-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__colorize_dict" name="call_graph_for__colorize_dict">
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_colorize" title="_colorize()" alt="" coords="356,6,460,38" />
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_colorize_dict" title="_colorize_dict()" alt="" coords="166,34,307,66" />
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_output" title="_output()" alt="" coords="363,62,454,94" />
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_multiline" title="_multiline()" alt="" coords="6,34,118,66" />
+</map>
+  <img src="call_graph_for__colorize_dict.gif" alt='' usemap="#call_graph_for__colorize_dict" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_colorize_str"></a><span class="summary-sig-name">_colorize_str</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">pyval</span>,
+        <span class="summary-sig-arg">state</span>,
+        <span class="summary-sig-arg">prefix</span>,
+        <span class="summary-sig-arg">encoding</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.pyval_repr-pysrc.html#PyvalColorizer._colorize_str">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__colorize_str-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__colorize_str-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__colorize_str" name="call_graph_for__colorize_str">
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_colorize" title="_colorize()" alt="" coords="7,6,111,38" />
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_colorize_str" title="_colorize_str()" alt="" coords="161,6,292,38" />
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_output" title="_output()" alt="" coords="343,6,433,38" />
+</map>
+  <img src="call_graph_for__colorize_str.gif" alt='' usemap="#call_graph_for__colorize_str" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_colorize_re"></a><span class="summary-sig-name">_colorize_re</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">pyval</span>,
+        <span class="summary-sig-arg">state</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.pyval_repr-pysrc.html#PyvalColorizer._colorize_re">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__colorize_re-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__colorize_re-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__colorize_re" name="call_graph_for__colorize_re">
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_colorize" title="_colorize()" alt="" coords="7,90,111,122" />
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_colorize_re" title="_colorize_re()" alt="" coords="160,90,288,122" />
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_colorize_re_flags" title="_colorize_re_flags()" alt="" coords="397,6,571,38" />
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_colorize_re_tree" title="_colorize_re_tree()" alt="" coords="401,62,567,94" />
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_output" title="_output()" alt="" coords="439,118,529,150" />
+<area shape="rect" href="epydoc.util-module.html#decode_with_backslashreplace" title="util.decode_with_backslashreplace()" alt="" coords="336,174,632,206" />
+</map>
+  <img src="call_graph_for__colorize_re.gif" alt='' usemap="#call_graph_for__colorize_re" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_colorize_re_flags"></a><span class="summary-sig-name">_colorize_re_flags</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">flags</span>,
+        <span class="summary-sig-arg">state</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.pyval_repr-pysrc.html#PyvalColorizer._colorize_re_flags">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__colorize_re_fl-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__colorize_re_fl-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__colorize_re_fl" name="call_graph_for__colorize_re_fl">
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_colorize_re" title="_colorize_re()" alt="" coords="5,6,133,38" />
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_colorize_re_flags" title="_colorize_re_flags()" alt="" coords="181,6,355,38" />
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_output" title="_output()" alt="" coords="404,6,495,38" />
+</map>
+  <img src="call_graph_for__colorize_re_fl.gif" alt='' usemap="#call_graph_for__colorize_re_fl" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_colorize_re_tree"></a><span class="summary-sig-name">_colorize_re_tree</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">tree</span>,
+        <span class="summary-sig-arg">state</span>,
+        <span class="summary-sig-arg">noparen</span>,
+        <span class="summary-sig-arg">groups</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.pyval_repr-pysrc.html#PyvalColorizer._colorize_re_tree">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__colorize_re_tr-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__colorize_re_tr-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__colorize_re_tr" name="call_graph_for__colorize_re_tr">
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_colorize_re" title="_colorize_re()" alt="" coords="5,30,133,62" />
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_colorize_re_tree" title="_colorize_re_tree()" alt="" coords="181,30,347,62" />
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_output" title="_output()" alt="" coords="396,30,487,62" />
+</map>
+  <img src="call_graph_for__colorize_re_tr.gif" alt='' usemap="#call_graph_for__colorize_re_tr" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_output" class="summary-sig-name" onclick="show_private();">_output</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">s</span>,
+        <span class="summary-sig-arg">tag</span>,
+        <span class="summary-sig-arg">state</span>)</span><br />
+      Add the string `s` to the result list, tagging its contents with tag 
+      `tag`.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.pyval_repr-pysrc.html#PyvalColorizer._output">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__output-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__output-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__output" name="call_graph_for__output">
+<area shape="rect" href="epydoc.markup.epytext.Element-class.html#__init__" title="epytext.Element.__init__()" alt="" coords="405,174,627,206" />
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_colorize" title="_colorize()" alt="" coords="40,6,144,38" />
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_output" title="_output()" alt="" coords="228,202,319,234" />
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_colorize_dict" title="_colorize_dict()" alt="" coords="21,62,163,94" />
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_colorize_iter" title="_colorize_iter()" alt="" coords="23,118,161,150" />
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_colorize_re" title="_colorize_re()" alt="" coords="28,174,156,206" />
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_colorize_re_flags" title="_colorize_re_flags()" alt="" coords="5,230,179,262" />
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_colorize_re_tree" title="_colorize_re_tree()" alt="" coords="9,286,175,318" />
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_colorize_str" title="_colorize_str()" alt="" coords="27,342,157,374" />
+<area shape="rect" href="epydoc.util-module.html#decode_with_backslashreplace" title="util.decode_with_backslashreplace()" alt="" coords="368,230,664,262" />
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#colorize" title="colorize()" alt="" coords="45,398,139,430" />
+</map>
+  <img src="call_graph_for__output.gif" alt='' usemap="#call_graph_for__output" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Class Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-ClassVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="GROUP_TAG"></a><span class="summary-name">GROUP_TAG</span> = <code title="'variable-group'"><code class="variable-quote">'</code><code class="variable-string">variable-group</code><code class="variable-quote">'</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="COMMA_TAG"></a><span class="summary-name">COMMA_TAG</span> = <code title="'variable-op'"><code class="variable-quote">'</code><code class="variable-string">variable-op</code><code class="variable-quote">'</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="COLON_TAG"></a><span class="summary-name">COLON_TAG</span> = <code title="'variable-op'"><code class="variable-quote">'</code><code class="variable-string">variable-op</code><code class="variable-quote">'</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="CONST_TAG"></a><span class="summary-name">CONST_TAG</span> = <code title="None">None</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="NUMBER_TAG"></a><span class="summary-name">NUMBER_TAG</span> = <code title="None">None</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="QUOTE_TAG"></a><span class="summary-name">QUOTE_TAG</span> = <code title="'variable-quote'"><code class="variable-quote">'</code><code class="variable-string">variable-quote</code><code class="variable-quote">'</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="STRING_TAG"></a><span class="summary-name">STRING_TAG</span> = <code title="'variable-string'"><code class="variable-quote">'</code><code class="variable-string">variable-string</code><code class="variable-quote">'</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="RE_CHAR_TAG"></a><span class="summary-name">RE_CHAR_TAG</span> = <code title="None">None</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="RE_GROUP_TAG"></a><span class="summary-name">RE_GROUP_TAG</span> = <code title="'re-group'"><code class="variable-quote">'</code><code class="variable-string">re-group</code><code class="variable-quote">'</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="RE_REF_TAG"></a><span class="summary-name">RE_REF_TAG</span> = <code title="'re-ref'"><code class="variable-quote">'</code><code class="variable-string">re-ref</code><code class="variable-quote">'</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="RE_OP_TAG"></a><span class="summary-name">RE_OP_TAG</span> = <code title="'re-op'"><code class="variable-quote">'</code><code class="variable-string">re-op</code><code class="variable-quote">'</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="RE_FLAGS_TAG"></a><span class="summary-name">RE_FLAGS_TAG</span> = <code title="'re-flags'"><code class="variable-quote">'</code><code class="variable-string">re-flags</code><code class="variable-quote">'</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="ELLIPSIS"></a><span class="summary-name">ELLIPSIS</span> = <code title="Element(code, u'...', style='variable-ellipsis')">Element(code, u'...', style='variable-ellipsis')</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="LINEWRAP"></a><span class="summary-name">LINEWRAP</span> = <code title="Element(symbol, u'crarr')">Element(symbol, u'crarr')</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="UNKNOWN_REPR"></a><span class="summary-name">UNKNOWN_REPR</span> = <code title="Element(code, u'??', style='variable-unknown')">Element(code, u'??', style='variable-unknown')</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="GENERIC_OBJECT_RE"></a><span class="summary-name">GENERIC_OBJECT_RE</span> = <code title="re.compile(r'(?i)^<.* at 0x[0-9a-f]+>$')">re.compile(r'<code class="re-flags">(?i)</code>^<.<code class="re-op">*</code> at 0x<code class="re-group">[</code>0<code class="re-op">-</code>9a<code class="re-op">-</code>f<code class="re-group">]</code><code class="re-op">+</code>>$')</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="ESCAPE_UNICODE"></a><span class="summary-name">ESCAPE_UNICODE</span> = <code title="False">False</code>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Method Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-MethodDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="colorize"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">colorize</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">pyval</span>,
+        <span class="sig-arg">parse_repr</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">min_score</span>=<span class="sig-default">None</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.pyval_repr-pysrc.html#PyvalColorizer.colorize">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_colorize_2-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_colorize_2-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_colorize_2" name="call_graph_for_colorize_2">
+<area shape="rect" href="epydoc.markup.epytext.Element-class.html#__init__" title="epytext.Element.__init__()" alt="" coords="360,6,582,38" />
+<area shape="rect" href="epydoc.markup.pyval_repr.ColorizedPyvalRepr-class.html#__init__" title="ColorizedPyvalRepr.__init__()" alt="" coords="346,62,596,94" />
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_colorize" title="_colorize()" alt="" coords="419,118,523,150" />
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_output" title="_output()" alt="" coords="426,174,516,206" />
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_trim_result" title="_trim_result()" alt="" coords="408,230,534,262" />
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#colorize" title="colorize()" alt="" coords="202,146,295,178" />
+<area shape="rect" href="epydoc.markup.pyval_repr._ColorizerState-class.html#__init__" title="_ColorizerState.__init__()" alt="" coords="362,286,580,318" />
+<area shape="rect" href="epydoc.markup.pyval_repr-module.html#colorize_pyval" title="colorize_pyval()" alt="" coords="7,146,151,178" />
+</map>
+  <img src="call_graph_for_colorize_2.gif" alt='' usemap="#call_graph_for_colorize_2" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  
+  <dl class="fields">
+    <dt>Returns:</dt>
+        <dd>A <a 
+          href="epydoc.markup.pyval_repr.ColorizedPyvalRepr-class.html" 
+          class="link">ColorizedPyvalRepr</a> describing the given pyval.</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="_multiline"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">_multiline</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">func</span>,
+        <span class="sig-arg">pyval</span>,
+        <span class="sig-arg">state</span>,
+        <span class="sig-arg">*args</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.pyval_repr-pysrc.html#PyvalColorizer._multiline">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__multiline-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for__multiline-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__multiline" name="call_graph_for__multiline">
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_colorize" title="_colorize()" alt="" coords="7,90,111,122" />
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_multiline" title="_multiline()" alt="" coords="160,90,272,122" />
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_colorize_dict" title="_colorize_dict()" alt="" coords="353,6,495,38" />
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_colorize_iter" title="_colorize_iter()" alt="" coords="355,62,493,94" />
+<area shape="rect" href="epydoc.markup.pyval_repr._ColorizerState-class.html#mark" title="_ColorizerState.mark()" alt="" coords="327,118,521,150" />
+<area shape="rect" href="epydoc.markup.pyval_repr._ColorizerState-class.html#restore" title="_ColorizerState.restore()" alt="" coords="320,174,528,206" />
+</map>
+  <img src="call_graph_for__multiline.gif" alt='' usemap="#call_graph_for__multiline" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Helper for container-type colorizers.  First, try calling 
+  <code>func(pyval, state, *args)</code> with linebreakok set to false; and
+  if that fails, then try again with it set to true.</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="_output"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">_output</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">s</span>,
+        <span class="sig-arg">tag</span>,
+        <span class="sig-arg">state</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.pyval_repr-pysrc.html#PyvalColorizer._output">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__output-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for__output-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__output" name="call_graph_for__output">
+<area shape="rect" href="epydoc.markup.epytext.Element-class.html#__init__" title="epytext.Element.__init__()" alt="" coords="405,174,627,206" />
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_colorize" title="_colorize()" alt="" coords="40,6,144,38" />
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_output" title="_output()" alt="" coords="228,202,319,234" />
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_colorize_dict" title="_colorize_dict()" alt="" coords="21,62,163,94" />
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_colorize_iter" title="_colorize_iter()" alt="" coords="23,118,161,150" />
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_colorize_re" title="_colorize_re()" alt="" coords="28,174,156,206" />
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_colorize_re_flags" title="_colorize_re_flags()" alt="" coords="5,230,179,262" />
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_colorize_re_tree" title="_colorize_re_tree()" alt="" coords="9,286,175,318" />
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_colorize_str" title="_colorize_str()" alt="" coords="27,342,157,374" />
+<area shape="rect" href="epydoc.util-module.html#decode_with_backslashreplace" title="util.decode_with_backslashreplace()" alt="" coords="368,230,664,262" />
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#colorize" title="colorize()" alt="" coords="45,398,139,430" />
+</map>
+  <img src="call_graph_for__output.gif" alt='' usemap="#call_graph_for__output" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Add the string `s` to the result list, tagging its contents with tag 
+  `tag`.  Any lines that go beyond `self.linelen` will be line-wrapped.  If
+  the total number of lines exceeds `self.maxlines`, then raise a 
+  `_Maxlines` exception.</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:08:43 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.markup.pyval_repr._ColorizerState-class.html b/doc/api/epydoc.markup.pyval_repr._ColorizerState-class.html
new file mode 100644
index 0000000..66adca6
--- /dev/null
+++ b/doc/api/epydoc.markup.pyval_repr._ColorizerState-class.html
@@ -0,0 +1,259 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.markup.pyval_repr._ColorizerState</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.markup-module.html">Package markup</a> ::
+        <a href="epydoc.markup.pyval_repr-module.html">Module pyval_repr</a> ::
+        Class _ColorizerState
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.markup.pyval_repr._ColorizerState-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class _ColorizerState</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.markup.pyval_repr-pysrc.html#_ColorizerState">source code</a></span></p>
+<p>An object uesd to keep track of the current state of the pyval 
+  colorizer.  The <a 
+  href="epydoc.markup.pyval_repr._ColorizerState-class.html#mark" 
+  class="link">mark()</a>/<a 
+  href="epydoc.markup.pyval_repr._ColorizerState-class.html#restore" 
+  class="link">restore()</a> methods can be used to set a backup point, and
+  restore back to that backup point.  This is used by several colorization 
+  methods that first try colorizing their object on a single line (setting 
+  linebreakok=False); and then fall back on a multi-line output if that 
+  fails.  The <a 
+  href="epydoc.markup.pyval_repr._ColorizerState-class.html#score" 
+  class="link">score</a> variable is used to keep track of a 'score', 
+  reflecting how good we think this repr is.  E.g., unhelpful values like 
+  '<Foo instance at 0x12345>' get low scores.  If the score is too 
+  low, we'll use the parse-derived repr instead.</p>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__init__"></a><span class="summary-sig-name">__init__</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.pyval_repr-pysrc.html#_ColorizerState.__init__">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for___init___41-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for___init___41-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for___init___41" name="call_graph_for___init___41">
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#colorize" title="PyvalColorizer.colorize()" alt="" coords="5,6,216,38" />
+<area shape="rect" href="epydoc.markup.pyval_repr._ColorizerState-class.html#__init__" title="__init__()" alt="" coords="265,6,361,38" />
+</map>
+  <img src="call_graph_for___init___41.gif" alt='' usemap="#call_graph_for___init___41" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="mark"></a><span class="summary-sig-name">mark</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.pyval_repr-pysrc.html#_ColorizerState.mark">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_mark-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_mark-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_mark" name="call_graph_for_mark">
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_multiline" title="PyvalColorizer._multiline()" alt="" coords="7,6,233,38" />
+<area shape="rect" href="epydoc.markup.pyval_repr._ColorizerState-class.html#mark" title="mark()" alt="" coords="283,6,355,38" />
+</map>
+  <img src="call_graph_for_mark.gif" alt='' usemap="#call_graph_for_mark" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="restore"></a><span class="summary-sig-name">restore</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">mark</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.pyval_repr-pysrc.html#_ColorizerState.restore">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_restore-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_restore-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_restore" name="call_graph_for_restore">
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_multiline" title="PyvalColorizer._multiline()" alt="" coords="7,6,233,38" />
+<area shape="rect" href="epydoc.markup.pyval_repr._ColorizerState-class.html#restore" title="restore()" alt="" coords="284,6,369,38" />
+</map>
+  <img src="call_graph_for_restore.gif" alt='' usemap="#call_graph_for_restore" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+</table>
+<!-- ==================== INSTANCE VARIABLES ==================== -->
+<a name="section-InstanceVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="score"></a><span class="summary-name">score</span><br />
+      How good this represention is?
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:08:43 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.markup.pyval_repr._Linebreak-class.html b/doc/api/epydoc.markup.pyval_repr._Linebreak-class.html
new file mode 100644
index 0000000..752cdf4
--- /dev/null
+++ b/doc/api/epydoc.markup.pyval_repr._Linebreak-class.html
@@ -0,0 +1,160 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.markup.pyval_repr._Linebreak</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.markup-module.html">Package markup</a> ::
+        <a href="epydoc.markup.pyval_repr-module.html">Module pyval_repr</a> ::
+        Class _Linebreak
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.markup.pyval_repr._Linebreak-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class _Linebreak</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.markup.pyval_repr-pysrc.html#_Linebreak">source code</a></span></p>
+<center>
+<center>  <map id="uml_class_diagram_for_epydoc_m_16" name="uml_class_diagram_for_epydoc_m_16">
+<area shape="rect" href="javascript:void(0);" title="exceptions.Exception.__getitem__" alt="" coords="18,36,146,55" />
+<area shape="rect" href="javascript:void(0);" title="exceptions.Exception.__init__" alt="" coords="18,55,146,73" />
+<area shape="rect" href="javascript:void(0);" title="exceptions.Exception.__str__" alt="" coords="18,73,146,92" />
+<area shape="rect" href="javascript:void(0);" title="Common base class for all exceptions." alt="" coords="6,5,158,99" />
+<area shape="rect" href="epydoc.markup.pyval_repr._Linebreak-class.html" title="A control-flow exception that is raised when PyvalColorizer generates a string containing a newline, but the state object's linebreakok variable is False." alt="" coords="35,117,128,160" />
+</map>
+  <img src="uml_class_diagram_for_epydoc_m_16.gif" alt='' usemap="#uml_class_diagram_for_epydoc_m_16" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<p>A control-flow exception that is raised when PyvalColorizer generates 
+  a string containing a newline, but the state object's linebreakok 
+  variable is False.</p>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.Exception</code></b>:
+      <code>__getitem__</code>,
+      <code>__init__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:08:43 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.markup.pyval_repr._Maxlines-class.html b/doc/api/epydoc.markup.pyval_repr._Maxlines-class.html
new file mode 100644
index 0000000..2e82a07
--- /dev/null
+++ b/doc/api/epydoc.markup.pyval_repr._Maxlines-class.html
@@ -0,0 +1,159 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.markup.pyval_repr._Maxlines</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.markup-module.html">Package markup</a> ::
+        <a href="epydoc.markup.pyval_repr-module.html">Module pyval_repr</a> ::
+        Class _Maxlines
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.markup.pyval_repr._Maxlines-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class _Maxlines</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.markup.pyval_repr-pysrc.html#_Maxlines">source code</a></span></p>
+<center>
+<center>  <map id="uml_class_diagram_for_epydoc_m_17" name="uml_class_diagram_for_epydoc_m_17">
+<area shape="rect" href="javascript:void(0);" title="exceptions.Exception.__getitem__" alt="" coords="18,36,146,55" />
+<area shape="rect" href="javascript:void(0);" title="exceptions.Exception.__init__" alt="" coords="18,55,146,73" />
+<area shape="rect" href="javascript:void(0);" title="exceptions.Exception.__str__" alt="" coords="18,73,146,92" />
+<area shape="rect" href="javascript:void(0);" title="Common base class for all exceptions." alt="" coords="6,5,158,99" />
+<area shape="rect" href="epydoc.markup.pyval_repr._Maxlines-class.html" title="A control-flow exception that is raised when PyvalColorizer exeeds the maximum number of allowed lines." alt="" coords="38,117,126,160" />
+</map>
+  <img src="uml_class_diagram_for_epydoc_m_17.gif" alt='' usemap="#uml_class_diagram_for_epydoc_m_17" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<p>A control-flow exception that is raised when PyvalColorizer exeeds the
+  maximum number of allowed lines.</p>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.Exception</code></b>:
+      <code>__getitem__</code>,
+      <code>__init__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:08:44 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.markup.restructuredtext-module.html b/doc/api/epydoc.markup.restructuredtext-module.html
new file mode 100644
index 0000000..0830119
--- /dev/null
+++ b/doc/api/epydoc.markup.restructuredtext-module.html
@@ -0,0 +1,1138 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.markup.restructuredtext</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.markup-module.html">Package markup</a> ::
+        Module restructuredtext
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.markup.restructuredtext-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module restructuredtext</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html">source code</a></span></p>
+<p>Epydoc parser for ReStructuredText strings.  ReStructuredText is the 
+  standard markup language used by the Docutils project. <a 
+  href="epydoc.markup.restructuredtext-module.html#parse_docstring" 
+  class="link">parse_docstring()</a> provides the primary interface to this
+  module; it returns a <a 
+  href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html" 
+  class="link">ParsedRstDocstring</a>, which supports all of the methods 
+  defined by <a href="epydoc.markup.ParsedDocstring-class.html" 
+  class="link">ParsedDocstring</a>.</p>
+  <p><a href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html"
+  class="link">ParsedRstDocstring</a> is basically just a <a 
+  href="epydoc.markup.ParsedDocstring-class.html" 
+  class="link">ParsedDocstring</a> wrapper for the 
+  <code>docutils.nodes.document</code> class.</p>
+  <h1 class="heading">Creating <code>ParsedRstDocstring</code>s</h1>
+    <p><code>ParsedRstDocstring</code>s are created by the 
+    <code>parse_document</code> function, using the 
+    <code>docutils.core.publish_string()</code> method, with the following 
+    helpers:</p>
+    <ul>
+      <li>
+        An <a 
+        href="epydoc.markup.restructuredtext._EpydocReader-class.html" 
+        class="link" onclick="show_private();">_EpydocReader</a> is used to
+        capture all error messages as it parses the docstring.
+      </li>
+      <li>
+        A <a 
+        href="epydoc.markup.restructuredtext._DocumentPseudoWriter-class.html"
+        class="link" onclick="show_private();">_DocumentPseudoWriter</a> is
+        used to extract the document itself, without actually writing any 
+        output.  The document is saved for further processing.  The 
+        settings for the writer are copied from 
+        <code>docutils.writers.html4css1.Writer</code>, since those 
+        settings will be used when we actually write the docstring to html.
+      </li>
+    </ul>
+  <h1 class="heading">Using <code>ParsedRstDocstring</code>s</h1>
+    <p><code>ParsedRstDocstring</code>s support all of the methods defined 
+    by <code>ParsedDocstring</code>; but only the following four methods 
+    have non-default behavior:</p>
+    <ul>
+      <li>
+        <a 
+        href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html#to_html"
+        class="link">to_html()</a> uses an <a 
+        href="epydoc.markup.restructuredtext._EpydocHTMLTranslator-class.html"
+        class="link" onclick="show_private();">_EpydocHTMLTranslator</a> to
+        translate the <code>ParsedRstDocstring</code>'s document into an 
+        HTML segment.
+      </li>
+      <li>
+        <a 
+        href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html#split_fields"
+        class="link">split_fields()</a> uses a <a 
+        href="epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html"
+        class="link" onclick="show_private();">_SplitFieldsTranslator</a> 
+        to divide the <code>ParsedRstDocstring</code>'s document into its 
+        main body and its fields.  Special handling is done to account for 
+        consolidated fields.
+      </li>
+      <li>
+        <a 
+        href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html#summary"
+        class="link">summary()</a> uses a <a 
+        href="epydoc.markup.restructuredtext._SummaryExtractor-class.html" 
+        class="link" onclick="show_private();">_SummaryExtractor</a> to 
+        extract the first sentence from the 
+        <code>ParsedRstDocstring</code>'s document.
+      </li>
+      <li>
+        <a 
+        href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html#to_plaintext"
+        class="link">to_plaintext()</a> uses <code>document.astext()</code>
+        to convert the <code>ParsedRstDocstring</code>'s document to 
+        plaintext.
+      </li>
+    </ul>
+
+<hr />
+<div class="fields">      <p><strong>To Do:</strong>
+        Add ParsedRstDocstring.to_latex()
+      </p>
+</div><!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Classes</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Classes"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.markup.restructuredtext.OptimizedReporter-class.html" class="summary-name">OptimizedReporter</a><br />
+      A reporter that ignores all debug messages.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html" class="summary-name">ParsedRstDocstring</a><br />
+      An encoded version of a ReStructuredText docstring.
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.markup.restructuredtext._EpydocReader-class.html" class="summary-name" onclick="show_private();">_EpydocReader</a><br />
+      A reader that captures all errors that are generated by parsing, 
+        and appends them to a list.
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.markup.restructuredtext._DocumentPseudoWriter-class.html" class="summary-name" onclick="show_private();">_DocumentPseudoWriter</a><br />
+      A pseudo-writer for the docutils framework, that can be used to 
+        access the document itself.
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.markup.restructuredtext._SummaryExtractor-class.html" class="summary-name" onclick="show_private();">_SummaryExtractor</a><br />
+      A docutils node visitor that extracts the first sentence from the 
+        first paragraph in a document.
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.markup.restructuredtext._TermsExtractor-class.html" class="summary-name" onclick="show_private();">_TermsExtractor</a><br />
+      A docutils node visitor that extracts the terms from documentation.
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html" class="summary-name" onclick="show_private();">_SplitFieldsTranslator</a><br />
+      A docutils translator that removes all fields from a document, and 
+        collects them into the instance variable <code>fields</code>
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.markup.restructuredtext._EpydocLaTeXTranslator-class.html" class="summary-name" onclick="show_private();">_EpydocLaTeXTranslator</a>
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.markup.restructuredtext._EpydocHTMLTranslator-class.html" class="summary-name" onclick="show_private();">_EpydocHTMLTranslator</a>
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Graph Generation Directives</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.markup.restructuredtext.dotgraph-class.html" class="summary-name">dotgraph</a><br />
+      A custom docutils node that should be rendered using Graphviz dot.
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTIONS ==================== -->
+<a name="section-Functions"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Functions</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Functions"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><a href="epydoc.markup.ParsedDocstring-class.html" 
+      class="link">ParsedDocstring</a></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.restructuredtext-module.html#parse_docstring" class="summary-sig-name">parse_docstring</a>(<span class="summary-sig-arg">docstring</span>,
+        <span class="summary-sig-arg">errors</span>,
+        <span class="summary-sig-arg">**options</span>)</span><br />
+      Parse the given docstring, which is formatted using ReStructuredText;
+      and return a <a href="epydoc.markup.ParsedDocstring-class.html" 
+      class="link">ParsedDocstring</a> representation of its contents.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#parse_docstring">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_parse_docstring_5-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_parse_docstring_5-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_parse_docstring_5" name="call_graph_for_parse_docstring_5">
+<area shape="rect" href="epydoc.markup-module.html#parse" title="parse()" alt="" coords="6,62,80,94" />
+<area shape="rect" href="epydoc.markup.restructuredtext-module.html#parse_docstring" title="parse_docstring()" alt="" coords="130,62,282,94" />
+<area shape="rect" href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html#__init__" title="ParsedRstDocstring.__init__()" alt="" coords="352,6,600,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext._DocumentPseudoWriter-class.html#__init__" title="_DocumentPseudoWriter.__init__()" alt="" coords="331,62,622,94" />
+<area shape="rect" href="epydoc.markup.restructuredtext._EpydocReader-class.html#__init__" title="_EpydocReader.__init__()" alt="" coords="366,118,587,150" />
+</map>
+  <img src="call_graph_for_parse_docstring_5.gif" alt='' usemap="#call_graph_for_parse_docstring_5" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="latex_head_prefix"></a><span class="summary-sig-name">latex_head_prefix</span>()</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#latex_head_prefix">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.restructuredtext-module.html#python_code_directive" class="summary-sig-name">python_code_directive</a>(<span class="summary-sig-arg">name</span>,
+        <span class="summary-sig-arg">arguments</span>,
+        <span class="summary-sig-arg">options</span>,
+        <span class="summary-sig-arg">content</span>,
+        <span class="summary-sig-arg">lineno</span>,
+        <span class="summary-sig-arg">content_offset</span>,
+        <span class="summary-sig-arg">block_text</span>,
+        <span class="summary-sig-arg">state</span>,
+        <span class="summary-sig-arg">state_machine</span>)</span><br />
+      A custom restructuredtext directive which can be used to display 
+      syntax-highlighted Python code blocks.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#python_code_directive">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="term_role"></a><span class="summary-sig-name">term_role</span>(<span class="summary-sig-arg">name</span>,
+        <span class="summary-sig-arg">rawtext</span>,
+        <span class="summary-sig-arg">text</span>,
+        <span class="summary-sig-arg">lineno</span>,
+        <span class="summary-sig-arg">inliner</span>,
+        <span class="summary-sig-arg">options</span>=<span class="summary-sig-default"><code class="variable-group">{</code><code class="variable-group">}</code></span>,
+        <span class="summary-sig-arg">content</span>=<span class="summary-sig-default"><code class="variable-group">[</code><code class="variable-group">]</code></span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#term_role">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Graph Generation Directives</th></tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_dir_option"></a><span class="summary-sig-name">_dir_option</span>(<span class="summary-sig-arg">argument</span>)</span><br />
+      A directive option spec for the orientation of a graph.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#_dir_option">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.restructuredtext-module.html#digraph_directive" class="summary-sig-name">digraph_directive</a>(<span class="summary-sig-arg">name</span>,
+        <span class="summary-sig-arg">arguments</span>,
+        <span class="summary-sig-arg">options</span>,
+        <span class="summary-sig-arg">content</span>,
+        <span class="summary-sig-arg">lineno</span>,
+        <span class="summary-sig-arg">content_offset</span>,
+        <span class="summary-sig-arg">block_text</span>,
+        <span class="summary-sig-arg">state</span>,
+        <span class="summary-sig-arg">state_machine</span>)</span><br />
+      A custom restructuredtext directive which can be used to display 
+      Graphviz dot graphs.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#digraph_directive">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_digraph_directi-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_digraph_directi-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_digraph_directi" name="call_graph_for_digraph_directi">
+<area shape="rect" href="epydoc.markup.restructuredtext-module.html#digraph_directive" title="digraph_directive()" alt="" coords="5,6,171,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext.dotgraph-class.html#__init__" title="dotgraph.__init__()" alt="" coords="220,6,385,38" />
+</map>
+  <img src="call_graph_for_digraph_directi.gif" alt='' usemap="#call_graph_for_digraph_directi" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_construct_digraph"></a><span class="summary-sig-name">_construct_digraph</span>(<span class="summary-sig-arg">docindex</span>,
+        <span class="summary-sig-arg">context</span>,
+        <span class="summary-sig-arg">linker</span>,
+        <span class="summary-sig-arg">title</span>,
+        <span class="summary-sig-arg">caption</span>,
+        <span class="summary-sig-arg">body</span>)</span><br />
+      Graph generator for <a 
+      href="epydoc.markup.restructuredtext-module.html#digraph_directive" 
+      class="link">digraph_directive</a></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#_construct_digraph">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__construct_digr-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__construct_digr-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__construct_digr" name="call_graph_for__construct_digr">
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraph-class.html#__init__" title="docwriter.dotgraph.DotGraph.__init__()" alt="" coords="428,6,748,38" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraph-class.html#link" title="docwriter.dotgraph.DotGraph.link()" alt="" coords="444,62,732,94" />
+<area shape="rect" href="epydoc.markup.restructuredtext-module.html#_construct_digraph" title="_construct_digraph()" alt="" coords="200,34,379,66" />
+<area shape="rect" href="epydoc.markup.restructuredtext.dotgraph-class.html#graph" title="dotgraph.graph()" alt="" coords="6,34,152,66" />
+</map>
+  <img src="call_graph_for__construct_digr.gif" alt='' usemap="#call_graph_for__construct_digr" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.restructuredtext-module.html#classtree_directive" class="summary-sig-name">classtree_directive</a>(<span class="summary-sig-arg">name</span>,
+        <span class="summary-sig-arg">arguments</span>,
+        <span class="summary-sig-arg">options</span>,
+        <span class="summary-sig-arg">content</span>,
+        <span class="summary-sig-arg">lineno</span>,
+        <span class="summary-sig-arg">content_offset</span>,
+        <span class="summary-sig-arg">block_text</span>,
+        <span class="summary-sig-arg">state</span>,
+        <span class="summary-sig-arg">state_machine</span>)</span><br />
+      A custom restructuredtext directive which can be used to graphically 
+      display a class hierarchy.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#classtree_directive">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_classtree_direc-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_classtree_direc-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_classtree_direc" name="call_graph_for_classtree_direc">
+<area shape="rect" href="epydoc.markup.restructuredtext-module.html#classtree_directive" title="classtree_directive()" alt="" coords="5,6,179,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext.dotgraph-class.html#__init__" title="dotgraph.__init__()" alt="" coords="228,6,393,38" />
+</map>
+  <img src="call_graph_for_classtree_direc.gif" alt='' usemap="#call_graph_for_classtree_direc" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_construct_classtree"></a><span class="summary-sig-name">_construct_classtree</span>(<span class="summary-sig-arg">docindex</span>,
+        <span class="summary-sig-arg">context</span>,
+        <span class="summary-sig-arg">linker</span>,
+        <span class="summary-sig-arg">arguments</span>,
+        <span class="summary-sig-arg">options</span>)</span><br />
+      Graph generator for <a 
+      href="epydoc.markup.restructuredtext-module.html#classtree_directive"
+      class="link">classtree_directive</a></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#_construct_classtree">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__construct_clas-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__construct_clas-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__construct_clas" name="call_graph_for__construct_clas">
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#find" title="apidoc.DocIndex.find()" alt="" coords="491,6,686,38" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#class_tree_graph" title="docwriter.dotgraph.class_tree_graph()" alt="" coords="435,62,742,94" />
+<area shape="rect" href="epydoc.markup.restructuredtext-module.html#_construct_classtree" title="_construct_classtree()" alt="" coords="200,34,387,66" />
+<area shape="rect" href="epydoc.markup.restructuredtext.dotgraph-class.html#graph" title="dotgraph.graph()" alt="" coords="6,34,152,66" />
+</map>
+  <img src="call_graph_for__construct_clas.gif" alt='' usemap="#call_graph_for__construct_clas" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.restructuredtext-module.html#packagetree_directive" class="summary-sig-name">packagetree_directive</a>(<span class="summary-sig-arg">name</span>,
+        <span class="summary-sig-arg">arguments</span>,
+        <span class="summary-sig-arg">options</span>,
+        <span class="summary-sig-arg">content</span>,
+        <span class="summary-sig-arg">lineno</span>,
+        <span class="summary-sig-arg">content_offset</span>,
+        <span class="summary-sig-arg">block_text</span>,
+        <span class="summary-sig-arg">state</span>,
+        <span class="summary-sig-arg">state_machine</span>)</span><br />
+      A custom restructuredtext directive which can be used to graphically 
+      display a package hierarchy.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#packagetree_directive">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_packagetree_dir-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_packagetree_dir-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_packagetree_dir" name="call_graph_for_packagetree_dir">
+<area shape="rect" href="epydoc.markup.restructuredtext.dotgraph-class.html#__init__" title="dotgraph.__init__()" alt="" coords="255,6,420,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext-module.html#packagetree_directive" title="packagetree_directive()" alt="" coords="7,6,204,38" />
+</map>
+  <img src="call_graph_for_packagetree_dir.gif" alt='' usemap="#call_graph_for_packagetree_dir" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_construct_packagetree"></a><span class="summary-sig-name">_construct_packagetree</span>(<span class="summary-sig-arg">docindex</span>,
+        <span class="summary-sig-arg">context</span>,
+        <span class="summary-sig-arg">linker</span>,
+        <span class="summary-sig-arg">arguments</span>,
+        <span class="summary-sig-arg">options</span>)</span><br />
+      Graph generator for <a 
+      href="epydoc.markup.restructuredtext-module.html#packagetree_directive"
+      class="link">packagetree_directive</a></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#_construct_packagetree">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__construct_pack-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__construct_pack-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__construct_pack" name="call_graph_for__construct_pack">
+<area shape="rect" href="epydoc.apidoc.DocIndex-class.html#find" title="apidoc.DocIndex.find()" alt="" coords="529,6,724,38" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#package_tree_graph" title="docwriter.dotgraph.package_tree_graph()" alt="" coords="461,62,792,94" />
+<area shape="rect" href="epydoc.markup.restructuredtext-module.html#_construct_packagetree" title="_construct_packagetree()" alt="" coords="201,34,412,66" />
+<area shape="rect" href="epydoc.markup.restructuredtext.dotgraph-class.html#graph" title="dotgraph.graph()" alt="" coords="5,34,152,66" />
+</map>
+  <img src="call_graph_for__construct_pack.gif" alt='' usemap="#call_graph_for__construct_pack" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="importgraph_directive"></a><span class="summary-sig-name">importgraph_directive</span>(<span class="summary-sig-arg">name</span>,
+        <span class="summary-sig-arg">arguments</span>,
+        <span class="summary-sig-arg">options</span>,
+        <span class="summary-sig-arg">content</span>,
+        <span class="summary-sig-arg">lineno</span>,
+        <span class="summary-sig-arg">content_offset</span>,
+        <span class="summary-sig-arg">block_text</span>,
+        <span class="summary-sig-arg">state</span>,
+        <span class="summary-sig-arg">state_machine</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#importgraph_directive">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_importgraph_dir-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_importgraph_dir-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_importgraph_dir" name="call_graph_for_importgraph_dir">
+<area shape="rect" href="epydoc.markup.restructuredtext.dotgraph-class.html#__init__" title="dotgraph.__init__()" alt="" coords="257,6,423,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext-module.html#importgraph_directive" title="importgraph_directive()" alt="" coords="7,6,207,38" />
+</map>
+  <img src="call_graph_for_importgraph_dir.gif" alt='' usemap="#call_graph_for_importgraph_dir" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_construct_importgraph"></a><span class="summary-sig-name">_construct_importgraph</span>(<span class="summary-sig-arg">docindex</span>,
+        <span class="summary-sig-arg">context</span>,
+        <span class="summary-sig-arg">linker</span>,
+        <span class="summary-sig-arg">arguments</span>,
+        <span class="summary-sig-arg">options</span>)</span><br />
+      Graph generator for <a 
+      href="epydoc.markup.restructuredtext-module.html#importgraph_directive"
+      class="link">importgraph_directive</a></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#_construct_importgraph">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__construct_impo-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__construct_impo-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__construct_impo" name="call_graph_for__construct_impo">
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#import_graph" title="docwriter.dotgraph.import_graph()" alt="" coords="463,6,743,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext-module.html#_construct_importgraph" title="_construct_importgraph()" alt="" coords="200,6,413,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext.dotgraph-class.html#graph" title="dotgraph.graph()" alt="" coords="5,6,152,38" />
+</map>
+  <img src="call_graph_for__construct_impo.gif" alt='' usemap="#call_graph_for__construct_impo" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="callgraph_directive"></a><span class="summary-sig-name">callgraph_directive</span>(<span class="summary-sig-arg">name</span>,
+        <span class="summary-sig-arg">arguments</span>,
+        <span class="summary-sig-arg">options</span>,
+        <span class="summary-sig-arg">content</span>,
+        <span class="summary-sig-arg">lineno</span>,
+        <span class="summary-sig-arg">content_offset</span>,
+        <span class="summary-sig-arg">block_text</span>,
+        <span class="summary-sig-arg">state</span>,
+        <span class="summary-sig-arg">state_machine</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#callgraph_directive">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_construct_callgraph"></a><span class="summary-sig-name">_construct_callgraph</span>(<span class="summary-sig-arg">docindex</span>,
+        <span class="summary-sig-arg">context</span>,
+        <span class="summary-sig-arg">linker</span>,
+        <span class="summary-sig-arg">arguments</span>,
+        <span class="summary-sig-arg">options</span>)</span><br />
+      Graph generator for <a 
+      href="epydoc.markup.restructuredtext-module.html#callgraph_directive"
+      class="link">callgraph_directive</a></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#_construct_callgraph">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Variables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.markup.restructuredtext-module.html#CONSOLIDATED_FIELDS" class="summary-name">CONSOLIDATED_FIELDS</a> = <code title="{'arguments': 'arg',
+ 'cvariables': 'cvar',
+ 'exceptions': 'except',
+ 'groups': 'group',
+ 'ivariables': 'ivar',
+ 'keywords': 'keyword',
+ 'parameters': 'param',
+ 'types': 'type',
+..."><code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">arguments</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">arg</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">cvariables</code><code class="variable-quote">'</code><code class="variable-op" [...]
+      A dictionary encoding the set of 'consolidated fields' that can be 
+      used.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.markup.restructuredtext-module.html#CONSOLIDATED_DEFLIST_FIELDS" class="summary-name">CONSOLIDATED_DEFLIST_FIELDS</a> = <code title="['param', 'arg', 'var', 'ivar', 'cvar', 'keyword']"><code class="variable-group">[</code><code class="variable-quote">'</code><code class="variable-string">param</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">arg</code><code class="varia [...]
+      A list of consolidated fields whose bodies may be specified using a 
+      definition list, rather than a bulleted list.
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTION DETAILS ==================== -->
+<a name="section-FunctionDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Function Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-FunctionDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="parse_docstring"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">parse_docstring</span>(<span class="sig-arg">docstring</span>,
+        <span class="sig-arg">errors</span>,
+        <span class="sig-arg">**options</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#parse_docstring">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_parse_docstring_5-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_parse_docstring_5-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_parse_docstring_5" name="call_graph_for_parse_docstring_5">
+<area shape="rect" href="epydoc.markup-module.html#parse" title="parse()" alt="" coords="6,62,80,94" />
+<area shape="rect" href="epydoc.markup.restructuredtext-module.html#parse_docstring" title="parse_docstring()" alt="" coords="130,62,282,94" />
+<area shape="rect" href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html#__init__" title="ParsedRstDocstring.__init__()" alt="" coords="352,6,600,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext._DocumentPseudoWriter-class.html#__init__" title="_DocumentPseudoWriter.__init__()" alt="" coords="331,62,622,94" />
+<area shape="rect" href="epydoc.markup.restructuredtext._EpydocReader-class.html#__init__" title="_EpydocReader.__init__()" alt="" coords="366,118,587,150" />
+</map>
+  <img src="call_graph_for_parse_docstring_5.gif" alt='' usemap="#call_graph_for_parse_docstring_5" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Parse the given docstring, which is formatted using ReStructuredText; 
+  and return a <a href="epydoc.markup.ParsedDocstring-class.html" 
+  class="link">ParsedDocstring</a> representation of its contents.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>docstring</code></strong> (<code>string</code>) - The docstring to parse</li>
+        <li><strong class="pname"><code>errors</code></strong> (<code>list</code> of <a 
+          href="epydoc.markup.ParseError-class.html" 
+          class="link">ParseError</a>) - A list where any errors generated during parsing will be stored.</li>
+        <li><strong class="pname"><code>options</code></strong> - Extra options.  Unknown options are ignored. Currently, no extra 
+          options are defined.</li>
+    </ul></dd>
+    <dt>Returns: <a href="epydoc.markup.ParsedDocstring-class.html" 
+      class="link">ParsedDocstring</a></dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="python_code_directive"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">python_code_directive</span>(<span class="sig-arg">name</span>,
+        <span class="sig-arg">arguments</span>,
+        <span class="sig-arg">options</span>,
+        <span class="sig-arg">content</span>,
+        <span class="sig-arg">lineno</span>,
+        <span class="sig-arg">content_offset</span>,
+        <span class="sig-arg">block_text</span>,
+        <span class="sig-arg">state</span>,
+        <span class="sig-arg">state_machine</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#python_code_directive">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>A custom restructuredtext directive which can be used to display 
+  syntax-highlighted Python code blocks.  This directive takes no 
+  arguments, and the body should contain only Python code.  This directive 
+  can be used instead of doctest blocks when it is inconvenient to list 
+  prompts on each line, or when you would prefer that the output not 
+  contain prompts (e.g., to make copy/paste easier).</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="digraph_directive"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">digraph_directive</span>(<span class="sig-arg">name</span>,
+        <span class="sig-arg">arguments</span>,
+        <span class="sig-arg">options</span>,
+        <span class="sig-arg">content</span>,
+        <span class="sig-arg">lineno</span>,
+        <span class="sig-arg">content_offset</span>,
+        <span class="sig-arg">block_text</span>,
+        <span class="sig-arg">state</span>,
+        <span class="sig-arg">state_machine</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#digraph_directive">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_digraph_directi-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_digraph_directi-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_digraph_directi" name="call_graph_for_digraph_directi">
+<area shape="rect" href="epydoc.markup.restructuredtext-module.html#digraph_directive" title="digraph_directive()" alt="" coords="5,6,171,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext.dotgraph-class.html#__init__" title="dotgraph.__init__()" alt="" coords="220,6,385,38" />
+</map>
+  <img src="call_graph_for_digraph_directi.gif" alt='' usemap="#call_graph_for_digraph_directi" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>A custom restructuredtext directive which can be used to display 
+  Graphviz dot graphs.  This directive takes a single argument, which is 
+  used as the graph's name.  The contents of the directive are used as the 
+  body of the graph.  Any href attributes whose value has the form 
+  <name> will be replaced by the URL of the object with that name.  
+  Here's a simple example:</p>
+<pre class="literalblock">
+.. digraph:: example_digraph
+  a -> b -> c
+  c -> a [dir="none"]
+</pre>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="classtree_directive"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">classtree_directive</span>(<span class="sig-arg">name</span>,
+        <span class="sig-arg">arguments</span>,
+        <span class="sig-arg">options</span>,
+        <span class="sig-arg">content</span>,
+        <span class="sig-arg">lineno</span>,
+        <span class="sig-arg">content_offset</span>,
+        <span class="sig-arg">block_text</span>,
+        <span class="sig-arg">state</span>,
+        <span class="sig-arg">state_machine</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#classtree_directive">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_classtree_direc-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_classtree_direc-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_classtree_direc" name="call_graph_for_classtree_direc">
+<area shape="rect" href="epydoc.markup.restructuredtext-module.html#classtree_directive" title="classtree_directive()" alt="" coords="5,6,179,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext.dotgraph-class.html#__init__" title="dotgraph.__init__()" alt="" coords="228,6,393,38" />
+</map>
+  <img src="call_graph_for_classtree_direc.gif" alt='' usemap="#call_graph_for_classtree_direc" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>A custom restructuredtext directive which can be used to graphically 
+  display a class hierarchy.  If one or more arguments are given, then 
+  those classes and all their descendants will be displayed.  If no 
+  arguments are given, and the directive is in a class's docstring, then 
+  that class and all its descendants will be displayed.  It is an error to 
+  use this directive with no arguments in a non-class docstring.</p>
+  <p>Options:</p>
+  <ul>
+    <li>
+      <code>:dir:</code> -- Specifies the orientation of the graph.  One of
+      <code>down</code>, <code>right</code> (default), <code>left</code>, 
+      <code>up</code>.
+    </li>
+  </ul>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="packagetree_directive"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">packagetree_directive</span>(<span class="sig-arg">name</span>,
+        <span class="sig-arg">arguments</span>,
+        <span class="sig-arg">options</span>,
+        <span class="sig-arg">content</span>,
+        <span class="sig-arg">lineno</span>,
+        <span class="sig-arg">content_offset</span>,
+        <span class="sig-arg">block_text</span>,
+        <span class="sig-arg">state</span>,
+        <span class="sig-arg">state_machine</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#packagetree_directive">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_packagetree_dir-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_packagetree_dir-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_packagetree_dir" name="call_graph_for_packagetree_dir">
+<area shape="rect" href="epydoc.markup.restructuredtext.dotgraph-class.html#__init__" title="dotgraph.__init__()" alt="" coords="255,6,420,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext-module.html#packagetree_directive" title="packagetree_directive()" alt="" coords="7,6,204,38" />
+</map>
+  <img src="call_graph_for_packagetree_dir.gif" alt='' usemap="#call_graph_for_packagetree_dir" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>A custom restructuredtext directive which can be used to graphically 
+  display a package hierarchy.  If one or more arguments are given, then 
+  those packages and all their submodules will be displayed.  If no 
+  arguments are given, and the directive is in a package's docstring, then 
+  that package and all its submodules will be displayed.  It is an error to
+  use this directive with no arguments in a non-package docstring.</p>
+  <p>Options:</p>
+  <ul>
+    <li>
+      <code>:dir:</code> -- Specifies the orientation of the graph.  One of
+      <code>down</code>, <code>right</code> (default), <code>left</code>, 
+      <code>up</code>.
+    </li>
+  </ul>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== VARIABLES DETAILS ==================== -->
+<a name="section-VariablesDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Variables Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-VariablesDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="CONSOLIDATED_FIELDS"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">CONSOLIDATED_FIELDS</h3>
+  <p>A dictionary whose keys are the "consolidated fields" that 
+  are recognized by epydoc; and whose values are the corresponding epydoc 
+  field names that should be used for the individual fields.</p>
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">arguments</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">arg</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">cvariables</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">cvar</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">exceptions</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">except</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">groups</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">group</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">ivariables</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">ivar</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">keywords</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">keyword</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">parameters</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">param</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">types</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">type</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="CONSOLIDATED_DEFLIST_FIELDS"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">CONSOLIDATED_DEFLIST_FIELDS</h3>
+  <p>A list of consolidated fields whose bodies may be specified using a 
+  definition list, rather than a bulleted list.  For these fields, the 
+  'classifier' for each term in the definition list is translated into a 
+  @type field.</p>
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-group">[</code><code class="variable-quote">'</code><code class="variable-string">param</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">arg</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">var</code><code class="variable-quote">'</code><code class="variable-op">, </code><code  [...]
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:06:48 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.markup.restructuredtext-pysrc.html b/doc/api/epydoc.markup.restructuredtext-pysrc.html
new file mode 100644
index 0000000..aaa8d12
--- /dev/null
+++ b/doc/api/epydoc.markup.restructuredtext-pysrc.html
@@ -0,0 +1,1537 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.markup.restructuredtext</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.markup-module.html">Package markup</a> ::
+        Module restructuredtext
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.markup.restructuredtext-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="epydoc.markup.restructuredtext-module.html">Module epydoc.markup.restructuredtext</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno">  1</tt>  <tt class="py-line"><tt class="py-comment">#</tt> </tt>
+<a name="L2"></a><tt class="py-lineno">  2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># rst.py: ReStructuredText docstring parsing</tt> </tt>
+<a name="L3"></a><tt class="py-lineno">  3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Edward Loper</tt> </tt>
+<a name="L4"></a><tt class="py-lineno">  4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L5"></a><tt class="py-lineno">  5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Created [06/28/03 02:52 AM]</tt> </tt>
+<a name="L6"></a><tt class="py-lineno">  6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># $Id: restructuredtext.py 1661 2007-11-07 12:59:34Z dvarrazzo $</tt> </tt>
+<a name="L7"></a><tt class="py-lineno">  7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L8"></a><tt class="py-lineno">  8</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L9"></a><tt class="py-lineno">  9</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L10"></a><tt class="py-lineno"> 10</tt>  <tt class="py-line"><tt class="py-docstring">Epydoc parser for ReStructuredText strings.  ReStructuredText is the</tt> </tt>
+<a name="L11"></a><tt class="py-lineno"> 11</tt>  <tt class="py-line"><tt class="py-docstring">standard markup language used by the Docutils project.</tt> </tt>
+<a name="L12"></a><tt class="py-lineno"> 12</tt>  <tt class="py-line"><tt class="py-docstring">L{parse_docstring()} provides the primary interface to this module; it</tt> </tt>
+<a name="L13"></a><tt class="py-lineno"> 13</tt>  <tt class="py-line"><tt class="py-docstring">returns a L{ParsedRstDocstring}, which supports all of the methods</tt> </tt>
+<a name="L14"></a><tt class="py-lineno"> 14</tt>  <tt class="py-line"><tt class="py-docstring">defined by L{ParsedDocstring}.</tt> </tt>
+<a name="L15"></a><tt class="py-lineno"> 15</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L16"></a><tt class="py-lineno"> 16</tt>  <tt class="py-line"><tt class="py-docstring">L{ParsedRstDocstring} is basically just a L{ParsedDocstring} wrapper</tt> </tt>
+<a name="L17"></a><tt class="py-lineno"> 17</tt>  <tt class="py-line"><tt class="py-docstring">for the C{docutils.nodes.document} class.</tt> </tt>
+<a name="L18"></a><tt class="py-lineno"> 18</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L19"></a><tt class="py-lineno"> 19</tt>  <tt class="py-line"><tt class="py-docstring">Creating C{ParsedRstDocstring}s</tt> </tt>
+<a name="L20"></a><tt class="py-lineno"> 20</tt>  <tt class="py-line"><tt class="py-docstring">===============================</tt> </tt>
+<a name="L21"></a><tt class="py-lineno"> 21</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L22"></a><tt class="py-lineno"> 22</tt>  <tt class="py-line"><tt class="py-docstring">C{ParsedRstDocstring}s are created by the C{parse_document} function,</tt> </tt>
+<a name="L23"></a><tt class="py-lineno"> 23</tt>  <tt class="py-line"><tt class="py-docstring">using the C{docutils.core.publish_string()} method, with the following</tt> </tt>
+<a name="L24"></a><tt class="py-lineno"> 24</tt>  <tt class="py-line"><tt class="py-docstring">helpers:</tt> </tt>
+<a name="L25"></a><tt class="py-lineno"> 25</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L26"></a><tt class="py-lineno"> 26</tt>  <tt class="py-line"><tt class="py-docstring">  - An L{_EpydocReader} is used to capture all error messages as it</tt> </tt>
+<a name="L27"></a><tt class="py-lineno"> 27</tt>  <tt class="py-line"><tt class="py-docstring">    parses the docstring.</tt> </tt>
+<a name="L28"></a><tt class="py-lineno"> 28</tt>  <tt class="py-line"><tt class="py-docstring">  - A L{_DocumentPseudoWriter} is used to extract the document itself,</tt> </tt>
+<a name="L29"></a><tt class="py-lineno"> 29</tt>  <tt class="py-line"><tt class="py-docstring">    without actually writing any output.  The document is saved for</tt> </tt>
+<a name="L30"></a><tt class="py-lineno"> 30</tt>  <tt class="py-line"><tt class="py-docstring">    further processing.  The settings for the writer are copied from</tt> </tt>
+<a name="L31"></a><tt class="py-lineno"> 31</tt>  <tt class="py-line"><tt class="py-docstring">    C{docutils.writers.html4css1.Writer}, since those settings will</tt> </tt>
+<a name="L32"></a><tt class="py-lineno"> 32</tt>  <tt class="py-line"><tt class="py-docstring">    be used when we actually write the docstring to html.</tt> </tt>
+<a name="L33"></a><tt class="py-lineno"> 33</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L34"></a><tt class="py-lineno"> 34</tt>  <tt class="py-line"><tt class="py-docstring">Using C{ParsedRstDocstring}s</tt> </tt>
+<a name="L35"></a><tt class="py-lineno"> 35</tt>  <tt class="py-line"><tt class="py-docstring">============================</tt> </tt>
+<a name="L36"></a><tt class="py-lineno"> 36</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L37"></a><tt class="py-lineno"> 37</tt>  <tt class="py-line"><tt class="py-docstring">C{ParsedRstDocstring}s support all of the methods defined by</tt> </tt>
+<a name="L38"></a><tt class="py-lineno"> 38</tt>  <tt class="py-line"><tt class="py-docstring">C{ParsedDocstring}; but only the following four methods have</tt> </tt>
+<a name="L39"></a><tt class="py-lineno"> 39</tt>  <tt class="py-line"><tt class="py-docstring">non-default behavior:</tt> </tt>
+<a name="L40"></a><tt class="py-lineno"> 40</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L41"></a><tt class="py-lineno"> 41</tt>  <tt class="py-line"><tt class="py-docstring">  - L{to_html()<ParsedRstDocstring.to_html>} uses an</tt> </tt>
+<a name="L42"></a><tt class="py-lineno"> 42</tt>  <tt class="py-line"><tt class="py-docstring">    L{_EpydocHTMLTranslator} to translate the C{ParsedRstDocstring}'s</tt> </tt>
+<a name="L43"></a><tt class="py-lineno"> 43</tt>  <tt class="py-line"><tt class="py-docstring">    document into an HTML segment.</tt> </tt>
+<a name="L44"></a><tt class="py-lineno"> 44</tt>  <tt class="py-line"><tt class="py-docstring">  - L{split_fields()<ParsedRstDocstring.split_fields>} uses a</tt> </tt>
+<a name="L45"></a><tt class="py-lineno"> 45</tt>  <tt class="py-line"><tt class="py-docstring">    L{_SplitFieldsTranslator} to divide the C{ParsedRstDocstring}'s</tt> </tt>
+<a name="L46"></a><tt class="py-lineno"> 46</tt>  <tt class="py-line"><tt class="py-docstring">    document into its main body and its fields.  Special handling</tt> </tt>
+<a name="L47"></a><tt class="py-lineno"> 47</tt>  <tt class="py-line"><tt class="py-docstring">    is done to account for consolidated fields.</tt> </tt>
+<a name="L48"></a><tt class="py-lineno"> 48</tt>  <tt class="py-line"><tt class="py-docstring">  - L{summary()<ParsedRstDocstring.summary>} uses a</tt> </tt>
+<a name="L49"></a><tt class="py-lineno"> 49</tt>  <tt class="py-line"><tt class="py-docstring">    L{_SummaryExtractor} to extract the first sentence from</tt> </tt>
+<a name="L50"></a><tt class="py-lineno"> 50</tt>  <tt class="py-line"><tt class="py-docstring">    the C{ParsedRstDocstring}'s document.</tt> </tt>
+<a name="L51"></a><tt class="py-lineno"> 51</tt>  <tt class="py-line"><tt class="py-docstring">  - L{to_plaintext()<ParsedRstDocstring.to_plaintext>} uses</tt> </tt>
+<a name="L52"></a><tt class="py-lineno"> 52</tt>  <tt class="py-line"><tt class="py-docstring">    C{document.astext()} to convert the C{ParsedRstDocstring}'s</tt> </tt>
+<a name="L53"></a><tt class="py-lineno"> 53</tt>  <tt class="py-line"><tt class="py-docstring">    document to plaintext.</tt> </tt>
+<a name="L54"></a><tt class="py-lineno"> 54</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L55"></a><tt class="py-lineno"> 55</tt>  <tt class="py-line"><tt class="py-docstring">@todo: Add ParsedRstDocstring.to_latex()</tt> </tt>
+<a name="L56"></a><tt class="py-lineno"> 56</tt>  <tt class="py-line"><tt class="py-docstring">@var CONSOLIDATED_FIELDS: A dictionary encoding the set of</tt> </tt>
+<a name="L57"></a><tt class="py-lineno"> 57</tt>  <tt class="py-line"><tt class="py-docstring">'consolidated fields' that can be used.  Each consolidated field is</tt> </tt>
+<a name="L58"></a><tt class="py-lineno"> 58</tt>  <tt class="py-line"><tt class="py-docstring">marked by a single tag, and contains a single bulleted list, where</tt> </tt>
+<a name="L59"></a><tt class="py-lineno"> 59</tt>  <tt class="py-line"><tt class="py-docstring">each list item starts with an identifier, marked as interpreted text</tt> </tt>
+<a name="L60"></a><tt class="py-lineno"> 60</tt>  <tt class="py-line"><tt class="py-docstring">(C{`...`}).  This module automatically splits these consolidated</tt> </tt>
+<a name="L61"></a><tt class="py-lineno"> 61</tt>  <tt class="py-line"><tt class="py-docstring">fields into individual fields.  The keys of C{CONSOLIDATED_FIELDS} are</tt> </tt>
+<a name="L62"></a><tt class="py-lineno"> 62</tt>  <tt class="py-line"><tt class="py-docstring">the names of possible consolidated fields; and the values are the</tt> </tt>
+<a name="L63"></a><tt class="py-lineno"> 63</tt>  <tt class="py-line"><tt class="py-docstring">names of the field tags that should be used for individual entries in</tt> </tt>
+<a name="L64"></a><tt class="py-lineno"> 64</tt>  <tt class="py-line"><tt class="py-docstring">the list.</tt> </tt>
+<a name="L65"></a><tt class="py-lineno"> 65</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L66"></a><tt class="py-lineno"> 66</tt>  <tt class="py-line"><tt class="py-name">__docformat__</tt> <tt class="py-op">=</tt> <tt class="py-string">'epytext en'</tt> </tt>
+<a name="L67"></a><tt class="py-lineno"> 67</tt>  <tt class="py-line"> </tt>
+<a name="L68"></a><tt class="py-lineno"> 68</tt>  <tt class="py-line"><tt class="py-comment"># Imports</tt> </tt>
+<a name="L69"></a><tt class="py-lineno"> 69</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">import</tt> <tt class="py-name">re</tt><tt class="py-op">,</tt> <tt class="py-name">os</tt><tt class="py-op">,</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-0" class="py-name" targets="Variable epydoc.apidoc.ModuleDoc.path=epydoc.apidoc.ModuleDoc-class.html#path"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doc [...]
+<a name="L70"></a><tt class="py-lineno"> 70</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">xml</tt><tt class="py-op">.</tt><tt class="py-name">dom</tt><tt class="py-op">.</tt><tt class="py-name">minidom</tt> <tt class="py-keyword">import</tt> <tt class="py-op">*</tt> </tt>
+<a name="L71"></a><tt class="py-lineno"> 71</tt>  <tt class="py-line"> </tt>
+<a name="L72"></a><tt class="py-lineno"> 72</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">docutils</tt><tt class="py-op">.</tt><tt class="py-name">core</tt> <tt class="py-keyword">import</tt> <tt class="py-name">publish_string</tt> </tt>
+<a name="L73"></a><tt class="py-lineno"> 73</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">docutils</tt><tt class="py-op">.</tt><tt class="py-name">writers</tt> <tt class="py-keyword">import</tt> <tt class="py-name">Writer</tt> </tt>
+<a name="L74"></a><tt class="py-lineno"> 74</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">docutils</tt><tt class="py-op">.</tt><tt class="py-name">writers</tt><tt class="py-op">.</tt><tt class="py-name">html4css1</tt> <tt class="py-keyword">import</tt> <tt class="py-name">HTMLTranslator</tt><tt class="py-op">,</tt> <tt class="py-name">Writer</tt> <tt class="py-name">as</tt> <tt id="link-1" class="py-name" targets="Class epydoc.docwriter.html.HTMLWriter=ep [...]
+<a name="L75"></a><tt class="py-lineno"> 75</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">docutils</tt><tt class="py-op">.</tt><tt class="py-name">writers</tt><tt class="py-op">.</tt><tt class="py-name">latex2e</tt> <tt class="py-keyword">import</tt> <tt class="py-name">LaTeXTranslator</tt><tt class="py-op">,</tt> <tt class="py-name">Writer</tt> <tt class="py-name">as</tt> <tt class="py-name">LaTeXWriter</tt> </tt>
+<a name="L76"></a><tt class="py-lineno"> 76</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">docutils</tt><tt class="py-op">.</tt><tt class="py-name">readers</tt><tt class="py-op">.</tt><tt class="py-name">standalone</tt> <tt class="py-keyword">import</tt> <tt class="py-name">Reader</tt> <tt class="py-name">as</tt> <tt class="py-name">StandaloneReader</tt> </tt>
+<a name="L77"></a><tt class="py-lineno"> 77</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">docutils</tt><tt class="py-op">.</tt><tt class="py-name">utils</tt> <tt class="py-keyword">import</tt> <tt id="link-2" class="py-name" targets="Method epydoc.markup.restructuredtext._EpydocReader.new_document()=epydoc.markup.restructuredtext._EpydocReader-class.html#new_document"><a title="epydoc.markup.restructuredtext._EpydocReader.new_document" class="py-name" hre [...]
+<a name="L78"></a><tt class="py-lineno"> 78</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">docutils</tt><tt class="py-op">.</tt><tt class="py-name">nodes</tt> <tt class="py-keyword">import</tt> <tt class="py-name">NodeVisitor</tt><tt class="py-op">,</tt> <tt class="py-name">Text</tt><tt class="py-op">,</tt> <tt class="py-name">SkipChildren</tt> </tt>
+<a name="L79"></a><tt class="py-lineno"> 79</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">docutils</tt><tt class="py-op">.</tt><tt class="py-name">nodes</tt> <tt class="py-keyword">import</tt> <tt class="py-name">SkipNode</tt><tt class="py-op">,</tt> <tt class="py-name">TreeCopyVisitor</tt> </tt>
+<a name="L80"></a><tt class="py-lineno"> 80</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">docutils</tt><tt class="py-op">.</tt><tt class="py-name">frontend</tt> <tt class="py-keyword">import</tt> <tt class="py-name">OptionParser</tt> </tt>
+<a name="L81"></a><tt class="py-lineno"> 81</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">docutils</tt><tt class="py-op">.</tt><tt class="py-name">parsers</tt><tt class="py-op">.</tt><tt class="py-name">rst</tt> <tt class="py-keyword">import</tt> <tt class="py-name">directives</tt><tt class="py-op">,</tt> <tt class="py-name">roles</tt> </tt>
+<a name="L82"></a><tt class="py-lineno"> 82</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">docutils</tt><tt class="py-op">.</tt><tt class="py-name">nodes</tt> </tt>
+<a name="L83"></a><tt class="py-lineno"> 83</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">docutils</tt><tt class="py-op">.</tt><tt class="py-name">transforms</tt><tt class="py-op">.</tt><tt class="py-name">frontmatter</tt> </tt>
+<a name="L84"></a><tt class="py-lineno"> 84</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">docutils</tt><tt class="py-op">.</tt><tt class="py-name">transforms</tt> </tt>
+<a name="L85"></a><tt class="py-lineno"> 85</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">docutils</tt><tt class="py-op">.</tt><tt class="py-name">utils</tt> </tt>
+<a name="L86"></a><tt class="py-lineno"> 86</tt>  <tt class="py-line"> </tt>
+<a name="L87"></a><tt class="py-lineno"> 87</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-3" class="py-name" targets="Package epydoc=epydoc-module.html"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-3', 'epydoc', 'link-3');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-4" class="py-name" targets="Module epydoc.compat=epydoc.compat-module.html"><a title="epydoc.compat" class="py-name" href="#" onclick="return doclink('link-4', 'c [...]
+<a name="L88"></a><tt class="py-lineno"> 88</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-5" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-5', 'epydoc', 'link-3');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-6" class="py-name" targets="Package epydoc.markup=epydoc.markup-module.html,Method epydoc.markup.doctest.DoctestColorizer.markup()=epydoc.markup.doctest.DoctestColorizer-class.html#markup,Method epydoc.mark [...]
+epydoc.markup.doctest.DoctestColorizer.markup
+epydoc.markup.doctest.HTMLDoctestColorizer.markup
+epydoc.markup.doctest.LaTeXDoctestColorizer.markup
+epydoc.markup.doctest.XMLDoctestColorizer.markup" class="py-name" href="#" onclick="return doclink('link-6', 'markup', 'link-6');">markup</a></tt> <tt class="py-keyword">import</tt> <tt class="py-op">*</tt> </tt>
+<a name="L89"></a><tt class="py-lineno"> 89</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-7" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-7', 'epydoc', 'link-3');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-8" class="py-name" targets="Module epydoc.apidoc=epydoc.apidoc-module.html"><a title="epydoc.apidoc" class="py-name" href="#" onclick="return doclink('link-8', 'apidoc', 'link-8');">apidoc</a></tt> <tt clas [...]
+<a name="L90"></a><tt class="py-lineno"> 90</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-11" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-11', 'epydoc', 'link-3');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-12" class="py-name" targets="Package epydoc.docwriter=epydoc.docwriter-module.html"><a title="epydoc.docwriter" class="py-name" href="#" onclick="return doclink('link-12', 'docwriter', 'link-12');">docwri [...]
+epydoc.markup.restructuredtext.dotgraph" class="py-name" href="#" onclick="return doclink('link-13', 'dotgraph', 'link-13');">dotgraph</a></tt> <tt class="py-keyword">import</tt> <tt class="py-op">*</tt> </tt>
+<a name="L91"></a><tt class="py-lineno"> 91</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-14" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-14', 'epydoc', 'link-3');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-15" class="py-name"><a title="epydoc.docwriter" class="py-name" href="#" onclick="return doclink('link-15', 'docwriter', 'link-12');">docwriter</a></tt><tt class="py-op">.</tt><tt id="link-16" class="py-n [...]
+<a name="L92"></a><tt class="py-lineno"> 92</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-18" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-18', 'epydoc', 'link-3');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-19" class="py-name"><a title="epydoc.markup
+epydoc.markup.doctest.DoctestColorizer.markup
+epydoc.markup.doctest.HTMLDoctestColorizer.markup
+epydoc.markup.doctest.LaTeXDoctestColorizer.markup
+epydoc.markup.doctest.XMLDoctestColorizer.markup" class="py-name" href="#" onclick="return doclink('link-19', 'markup', 'link-6');">markup</a></tt><tt class="py-op">.</tt><tt id="link-20" class="py-name" targets="Module epydoc.markup.doctest=epydoc.markup.doctest-module.html"><a title="epydoc.markup.doctest" class="py-name" href="#" onclick="return doclink('link-20', 'doctest', 'link-20');">doctest</a></tt> <tt class="py-keyword">import</tt> <tt id="link-21" class="py-name" targets="Func [...]
+<a name="L93"></a><tt class="py-lineno"> 93</tt>  <tt class="py-line">                                  <tt id="link-23" class="py-name" targets="Class epydoc.markup.doctest.HTMLDoctestColorizer=epydoc.markup.doctest.HTMLDoctestColorizer-class.html"><a title="epydoc.markup.doctest.HTMLDoctestColorizer" class="py-name" href="#" onclick="return doclink('link-23', 'HTMLDoctestColorizer', 'link-23');">HTMLDoctestColorizer</a></tt> </tt>
+<a name="L94"></a><tt class="py-lineno"> 94</tt>  <tt class="py-line"> </tt>
+<a name="L95"></a><tt class="py-lineno"> 95</tt>  <tt class="py-line"><tt class="py-comment">#: A dictionary whose keys are the "consolidated fields" that are</tt> </tt>
+<a name="L96"></a><tt class="py-lineno"> 96</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#: recognized by epydoc; and whose values are the corresponding epydoc</tt> </tt>
+<a name="L97"></a><tt class="py-lineno"> 97</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#: field names that should be used for the individual fields.</tt> </tt>
+<a name="L98"></a><tt class="py-lineno"> 98</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt id="link-24" class="py-name" targets="Variable epydoc.markup.restructuredtext.CONSOLIDATED_FIELDS=epydoc.markup.restructuredtext-module.html#CONSOLIDATED_FIELDS"><a title="epydoc.markup.restructuredtext.CONSOLIDATED_FIELDS" class="py-name" href="#" onclick="return doclink('link-24', 'CONSOLIDATED_FIELDS', 'link-24');">CONSOLIDATED_FIELDS</a></tt> <tt class="py-op">=</tt> <tt class="py-op [...]
+<a name="L99"></a><tt class="py-lineno"> 99</tt>  <tt class="py-line">    <tt class="py-string">'parameters'</tt><tt class="py-op">:</tt> <tt class="py-string">'param'</tt><tt class="py-op">,</tt> </tt>
+<a name="L100"></a><tt class="py-lineno">100</tt>  <tt class="py-line">    <tt class="py-string">'arguments'</tt><tt class="py-op">:</tt> <tt class="py-string">'arg'</tt><tt class="py-op">,</tt> </tt>
+<a name="L101"></a><tt class="py-lineno">101</tt>  <tt class="py-line">    <tt class="py-string">'exceptions'</tt><tt class="py-op">:</tt> <tt class="py-string">'except'</tt><tt class="py-op">,</tt> </tt>
+<a name="L102"></a><tt class="py-lineno">102</tt>  <tt class="py-line">    <tt class="py-string">'variables'</tt><tt class="py-op">:</tt> <tt class="py-string">'var'</tt><tt class="py-op">,</tt> </tt>
+<a name="L103"></a><tt class="py-lineno">103</tt>  <tt class="py-line">    <tt class="py-string">'ivariables'</tt><tt class="py-op">:</tt> <tt class="py-string">'ivar'</tt><tt class="py-op">,</tt> </tt>
+<a name="L104"></a><tt class="py-lineno">104</tt>  <tt class="py-line">    <tt class="py-string">'cvariables'</tt><tt class="py-op">:</tt> <tt class="py-string">'cvar'</tt><tt class="py-op">,</tt> </tt>
+<a name="L105"></a><tt class="py-lineno">105</tt>  <tt class="py-line">    <tt class="py-string">'groups'</tt><tt class="py-op">:</tt> <tt class="py-string">'group'</tt><tt class="py-op">,</tt> </tt>
+<a name="L106"></a><tt class="py-lineno">106</tt>  <tt class="py-line">    <tt class="py-string">'types'</tt><tt class="py-op">:</tt> <tt class="py-string">'type'</tt><tt class="py-op">,</tt> </tt>
+<a name="L107"></a><tt class="py-lineno">107</tt>  <tt class="py-line">    <tt class="py-string">'keywords'</tt><tt class="py-op">:</tt> <tt class="py-string">'keyword'</tt><tt class="py-op">,</tt> </tt>
+<a name="L108"></a><tt class="py-lineno">108</tt>  <tt class="py-line">    <tt class="py-op">}</tt> </tt>
+<a name="L109"></a><tt class="py-lineno">109</tt>  <tt class="py-line"> </tt>
+<a name="L110"></a><tt class="py-lineno">110</tt>  <tt class="py-line"><tt class="py-comment">#: A list of consolidated fields whose bodies may be specified using a</tt> </tt>
+<a name="L111"></a><tt class="py-lineno">111</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#: definition list, rather than a bulleted list.  For these fields, the</tt> </tt>
+<a name="L112"></a><tt class="py-lineno">112</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#: 'classifier' for each term in the definition list is translated into</tt> </tt>
+<a name="L113"></a><tt class="py-lineno">113</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#: a @type field.</tt> </tt>
+<a name="L114"></a><tt class="py-lineno">114</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt id="link-25" class="py-name" targets="Variable epydoc.markup.restructuredtext.CONSOLIDATED_DEFLIST_FIELDS=epydoc.markup.restructuredtext-module.html#CONSOLIDATED_DEFLIST_FIELDS"><a title="epydoc.markup.restructuredtext.CONSOLIDATED_DEFLIST_FIELDS" class="py-name" href="#" onclick="return doclink('link-25', 'CONSOLIDATED_DEFLIST_FIELDS', 'link-25');">CONSOLIDATED_DEFLIST_FIELDS</a></tt>  [...]
+<a name="L115"></a><tt class="py-lineno">115</tt>  <tt class="py-line"> </tt>
+<a name="parse_docstring"></a><div id="parse_docstring-def"><a name="L116"></a><tt class="py-lineno">116</tt> <a class="py-toggle" href="#" id="parse_docstring-toggle" onclick="return toggle('parse_docstring');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.restructuredtext-module.html#parse_docstring">parse_docstring</a><tt class="py-op">(</tt><tt class="py-param">docstring</tt><tt class="py-op">,</tt> <tt class="py-param">errors</tt [...]
+</div><div id="parse_docstring-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="parse_docstring-expanded"><a name="L117"></a><tt class="py-lineno">117</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L118"></a><tt class="py-lineno">118</tt>  <tt class="py-line"><tt class="py-docstring">    Parse the given docstring, which is formatted using</tt> </tt>
+<a name="L119"></a><tt class="py-lineno">119</tt>  <tt class="py-line"><tt class="py-docstring">    ReStructuredText; and return a L{ParsedDocstring} representation</tt> </tt>
+<a name="L120"></a><tt class="py-lineno">120</tt>  <tt class="py-line"><tt class="py-docstring">    of its contents.</tt> </tt>
+<a name="L121"></a><tt class="py-lineno">121</tt>  <tt class="py-line"><tt class="py-docstring">    @param docstring: The docstring to parse</tt> </tt>
+<a name="L122"></a><tt class="py-lineno">122</tt>  <tt class="py-line"><tt class="py-docstring">    @type docstring: C{string}</tt> </tt>
+<a name="L123"></a><tt class="py-lineno">123</tt>  <tt class="py-line"><tt class="py-docstring">    @param errors: A list where any errors generated during parsing</tt> </tt>
+<a name="L124"></a><tt class="py-lineno">124</tt>  <tt class="py-line"><tt class="py-docstring">        will be stored.</tt> </tt>
+<a name="L125"></a><tt class="py-lineno">125</tt>  <tt class="py-line"><tt class="py-docstring">    @type errors: C{list} of L{ParseError}</tt> </tt>
+<a name="L126"></a><tt class="py-lineno">126</tt>  <tt class="py-line"><tt class="py-docstring">    @param options: Extra options.  Unknown options are ignored.</tt> </tt>
+<a name="L127"></a><tt class="py-lineno">127</tt>  <tt class="py-line"><tt class="py-docstring">        Currently, no extra options are defined.</tt> </tt>
+<a name="L128"></a><tt class="py-lineno">128</tt>  <tt class="py-line"><tt class="py-docstring">    @rtype: L{ParsedDocstring}</tt> </tt>
+<a name="L129"></a><tt class="py-lineno">129</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L130"></a><tt class="py-lineno">130</tt>  <tt class="py-line">    <tt class="py-name">writer</tt> <tt class="py-op">=</tt> <tt id="link-26" class="py-name" targets="Class epydoc.markup.restructuredtext._DocumentPseudoWriter=epydoc.markup.restructuredtext._DocumentPseudoWriter-class.html"><a title="epydoc.markup.restructuredtext._DocumentPseudoWriter" class="py-name" href="#" onclick="return doclink('link-26', '_DocumentPseudoWriter', 'link-26');">_DocumentPseudoWriter</a></tt><t [...]
+<a name="L131"></a><tt class="py-lineno">131</tt>  <tt class="py-line">    <tt class="py-name">reader</tt> <tt class="py-op">=</tt> <tt id="link-27" class="py-name" targets="Class epydoc.markup.restructuredtext._EpydocReader=epydoc.markup.restructuredtext._EpydocReader-class.html"><a title="epydoc.markup.restructuredtext._EpydocReader" class="py-name" href="#" onclick="return doclink('link-27', '_EpydocReader', 'link-27');">_EpydocReader</a></tt><tt class="py-op">(</tt><tt class="py-name [...]
+<a name="L132"></a><tt class="py-lineno">132</tt>  <tt class="py-line">    <tt class="py-name">publish_string</tt><tt class="py-op">(</tt><tt id="link-28" class="py-name" targets="Variable epydoc.apidoc.APIDoc.docstring=epydoc.apidoc.APIDoc-class.html#docstring"><a title="epydoc.apidoc.APIDoc.docstring" class="py-name" href="#" onclick="return doclink('link-28', 'docstring', 'link-28');">docstring</a></tt><tt class="py-op">,</tt> <tt class="py-name">writer</tt><tt class="py-op">=</tt><tt [...]
+<a name="L133"></a><tt class="py-lineno">133</tt>  <tt class="py-line">                   <tt class="py-name">settings_overrides</tt><tt class="py-op">=</tt><tt class="py-op">{</tt><tt class="py-string">'report_level'</tt><tt class="py-op">:</tt><tt class="py-number">10000</tt><tt class="py-op">,</tt> </tt>
+<a name="L134"></a><tt class="py-lineno">134</tt>  <tt class="py-line">                                       <tt class="py-string">'halt_level'</tt><tt class="py-op">:</tt><tt class="py-number">10000</tt><tt class="py-op">,</tt> </tt>
+<a name="L135"></a><tt class="py-lineno">135</tt>  <tt class="py-line">                                       <tt class="py-string">'warning_stream'</tt><tt class="py-op">:</tt><tt class="py-name">None</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
+<a name="L136"></a><tt class="py-lineno">136</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-29" class="py-name" targets="Class epydoc.markup.restructuredtext.ParsedRstDocstring=epydoc.markup.restructuredtext.ParsedRstDocstring-class.html"><a title="epydoc.markup.restructuredtext.ParsedRstDocstring" class="py-name" href="#" onclick="return doclink('link-29', 'ParsedRstDocstring', 'link-29');">ParsedRstDocstring</a></tt><tt class="py-op">(</tt><tt class="py-n [...]
+</div><a name="L137"></a><tt class="py-lineno">137</tt>  <tt class="py-line"> </tt>
+<a name="OptimizedReporter"></a><div id="OptimizedReporter-def"><a name="L138"></a><tt class="py-lineno">138</tt> <a class="py-toggle" href="#" id="OptimizedReporter-toggle" onclick="return toggle('OptimizedReporter');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="epydoc.markup.restructuredtext.OptimizedReporter-class.html">OptimizedReporter</a><tt class="py-op">(</tt><tt class="py-base-class">docutils</tt><tt class="py-op">.</tt><tt class="py-b [...]
+</div><div id="OptimizedReporter-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="OptimizedReporter-expanded"><a name="L139"></a><tt class="py-lineno">139</tt>  <tt class="py-line">    <tt class="py-docstring">"""A reporter that ignores all debug messages.  This is used to</tt> </tt>
+<a name="L140"></a><tt class="py-lineno">140</tt>  <tt class="py-line"><tt class="py-docstring">    shave a couple seconds off of epydoc's run time, since docutils</tt> </tt>
+<a name="L141"></a><tt class="py-lineno">141</tt>  <tt class="py-line"><tt class="py-docstring">    isn't very fast about processing its own debug messages."""</tt> </tt>
+<a name="OptimizedReporter.debug"></a><div id="OptimizedReporter.debug-def"><a name="L142"></a><tt class="py-lineno">142</tt> <a class="py-toggle" href="#" id="OptimizedReporter.debug-toggle" onclick="return toggle('OptimizedReporter.debug');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.restructuredtext.OptimizedReporter-class.html#debug">debug</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt [...]
+</div></div><a name="L143"></a><tt class="py-lineno">143</tt>  <tt class="py-line"> </tt>
+<a name="ParsedRstDocstring"></a><div id="ParsedRstDocstring-def"><a name="L144"></a><tt class="py-lineno">144</tt> <a class="py-toggle" href="#" id="ParsedRstDocstring-toggle" onclick="return toggle('ParsedRstDocstring');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html">ParsedRstDocstring</a><tt class="py-op">(</tt><tt class="py-base-class">ParsedDocstring</tt><tt class="py-op">)</tt><t [...]
+</div><div id="ParsedRstDocstring-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="ParsedRstDocstring-expanded"><a name="L145"></a><tt class="py-lineno">145</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L146"></a><tt class="py-lineno">146</tt>  <tt class="py-line"><tt class="py-docstring">    An encoded version of a ReStructuredText docstring.  The contents</tt> </tt>
+<a name="L147"></a><tt class="py-lineno">147</tt>  <tt class="py-line"><tt class="py-docstring">    of the docstring are encoded in the L{_document} instance</tt> </tt>
+<a name="L148"></a><tt class="py-lineno">148</tt>  <tt class="py-line"><tt class="py-docstring">    variable.</tt> </tt>
+<a name="L149"></a><tt class="py-lineno">149</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L150"></a><tt class="py-lineno">150</tt>  <tt class="py-line"><tt class="py-docstring">    @ivar _document: A ReStructuredText document, encoding the</tt> </tt>
+<a name="L151"></a><tt class="py-lineno">151</tt>  <tt class="py-line"><tt class="py-docstring">        docstring.</tt> </tt>
+<a name="L152"></a><tt class="py-lineno">152</tt>  <tt class="py-line"><tt class="py-docstring">    @type _document: C{docutils.nodes.document}</tt> </tt>
+<a name="L153"></a><tt class="py-lineno">153</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="ParsedRstDocstring.__init__"></a><div id="ParsedRstDocstring.__init__-def"><a name="L154"></a><tt class="py-lineno">154</tt> <a class="py-toggle" href="#" id="ParsedRstDocstring.__init__-toggle" onclick="return toggle('ParsedRstDocstring.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt c [...]
+</div><div id="ParsedRstDocstring.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ParsedRstDocstring.__init__-expanded"><a name="L155"></a><tt class="py-lineno">155</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L156"></a><tt class="py-lineno">156</tt>  <tt class="py-line"><tt class="py-docstring">        @type document: C{docutils.nodes.document}</tt> </tt>
+<a name="L157"></a><tt class="py-lineno">157</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L158"></a><tt class="py-lineno">158</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_document</tt> <tt class="py-op">=</tt> <tt id="link-31" class="py-name"><a title="epydoc.gui.document" class="py-name" href="#" onclick="return doclink('link-31', 'document', 'link-30');">document</a></tt> </tt>
+<a name="L159"></a><tt class="py-lineno">159</tt>  <tt class="py-line">         </tt>
+<a name="L160"></a><tt class="py-lineno">160</tt>  <tt class="py-line">        <tt class="py-comment"># The default document reporter and transformer are not</tt> </tt>
+<a name="L161"></a><tt class="py-lineno">161</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># pickle-able; so replace them with stubs that are.</tt> </tt>
+<a name="L162"></a><tt class="py-lineno">162</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt id="link-32" class="py-name"><a title="epydoc.gui.document" class="py-name" href="#" onclick="return doclink('link-32', 'document', 'link-30');">document</a></tt><tt class="py-op">.</tt><tt class="py-name">reporter</tt> <tt class="py-op">=</tt> <tt id="link-33" class="py-name" targets="Class epydoc.markup.restructuredtext.OptimizedReporter=epydoc.markup.restructuredtext.Optimize [...]
+<a name="L163"></a><tt class="py-lineno">163</tt>  <tt class="py-line">            <tt id="link-34" class="py-name"><a title="epydoc.gui.document" class="py-name" href="#" onclick="return doclink('link-34', 'document', 'link-30');">document</a></tt><tt class="py-op">.</tt><tt class="py-name">reporter</tt><tt class="py-op">.</tt><tt class="py-name">source</tt><tt class="py-op">,</tt> <tt class="py-string">'SEVERE'</tt><tt class="py-op">,</tt> <tt class="py-string">'SEVERE'</tt><tt class=" [...]
+<a name="L164"></a><tt class="py-lineno">164</tt>  <tt class="py-line">        <tt id="link-35" class="py-name"><a title="epydoc.gui.document" class="py-name" href="#" onclick="return doclink('link-35', 'document', 'link-30');">document</a></tt><tt class="py-op">.</tt><tt class="py-name">transformer</tt> <tt class="py-op">=</tt> <tt class="py-name">docutils</tt><tt class="py-op">.</tt><tt class="py-name">transforms</tt><tt class="py-op">.</tt><tt class="py-name">Transformer</tt><tt class [...]
+</div><a name="L165"></a><tt class="py-lineno">165</tt>  <tt class="py-line"> </tt>
+<a name="ParsedRstDocstring.split_fields"></a><div id="ParsedRstDocstring.split_fields-def"><a name="L166"></a><tt class="py-lineno">166</tt> <a class="py-toggle" href="#" id="ParsedRstDocstring.split_fields-toggle" onclick="return toggle('ParsedRstDocstring.split_fields');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html#split_fields">split_fields</a><tt class="py-op">(</tt><tt class=" [...]
+</div><div id="ParsedRstDocstring.split_fields-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ParsedRstDocstring.split_fields-expanded"><a name="L167"></a><tt class="py-lineno">167</tt>  <tt class="py-line">        <tt class="py-comment"># Inherit docs</tt> </tt>
+<a name="L168"></a><tt class="py-lineno">168</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">errors</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> <tt class="py-name">errors</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L169"></a><tt class="py-lineno">169</tt>  <tt class="py-line">        <tt class="py-name">visitor</tt> <tt class="py-op">=</tt> <tt id="link-37" class="py-name" targets="Class epydoc.markup.restructuredtext._SplitFieldsTranslator=epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html"><a title="epydoc.markup.restructuredtext._SplitFieldsTranslator" class="py-name" href="#" onclick="return doclink('link-37', '_SplitFieldsTranslator', 'link-37');">_SplitFieldsTranslator< [...]
+<a name="L170"></a><tt class="py-lineno">170</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_document</tt><tt class="py-op">.</tt><tt class="py-name">walk</tt><tt class="py-op">(</tt><tt class="py-name">visitor</tt><tt class="py-op">)</tt> </tt>
+<a name="L171"></a><tt class="py-lineno">171</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_document</tt><tt class="py-op">.</tt><tt class="py-name">children</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L172"></a><tt class="py-lineno">172</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">visitor</tt><tt class="py-op">.</tt><tt class="py-name">fields</tt> </tt>
+<a name="L173"></a><tt class="py-lineno">173</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L174"></a><tt class="py-lineno">174</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">visitor</tt><tt class="py-op">.</tt><tt class="py-name">fields</tt> </tt>
+</div><a name="L175"></a><tt class="py-lineno">175</tt>  <tt class="py-line"> </tt>
+<a name="ParsedRstDocstring.summary"></a><div id="ParsedRstDocstring.summary-def"><a name="L176"></a><tt class="py-lineno">176</tt> <a class="py-toggle" href="#" id="ParsedRstDocstring.summary-toggle" onclick="return toggle('ParsedRstDocstring.summary');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html#summary">summary</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class=" [...]
+</div><div id="ParsedRstDocstring.summary-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ParsedRstDocstring.summary-expanded"><a name="L177"></a><tt class="py-lineno">177</tt>  <tt class="py-line">        <tt class="py-comment"># Inherit docs</tt> </tt>
+<a name="L178"></a><tt class="py-lineno">178</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">visitor</tt> <tt class="py-op">=</tt> <tt id="link-38" class="py-name" targets="Class epydoc.markup.restructuredtext._SummaryExtractor=epydoc.markup.restructuredtext._SummaryExtractor-class.html"><a title="epydoc.markup.restructuredtext._SummaryExtractor" class="py-name" href="#" onclick="return doclink('link-38', '_SummaryExtractor', 'link-38');">_SummaryExtract [...]
+<a name="L179"></a><tt class="py-lineno">179</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_document</tt><tt class="py-op">.</tt><tt class="py-name">walk</tt><tt class="py-op">(</tt><tt class="py-name">visitor</tt><tt class="py-op">)</tt> </tt>
+<a name="L180"></a><tt class="py-lineno">180</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">docutils</tt><tt class="py-op">.</tt><tt class="py-name">nodes</tt><tt class="py-op">.</tt><tt class="py-name">NodeFound</tt><tt class="py-op">:</tt> <tt class="py-keyword">pass</tt> </tt>
+<a name="L181"></a><tt class="py-lineno">181</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">visitor</tt><tt class="py-op">.</tt><tt id="link-39" class="py-name" targets="Variable epydoc.apidoc.APIDoc.summary=epydoc.apidoc.APIDoc-class.html#summary,Method epydoc.docwriter.html.HTMLWriter.summary()=epydoc.docwriter.html.HTMLWriter-class.html#summary,Method epydoc.markup.ConcatenatedDocstring.summary()=epydoc.markup.ConcatenatedDocstring-class.html# [...]
+epydoc.docwriter.html.HTMLWriter.summary
+epydoc.markup.ConcatenatedDocstring.summary
+epydoc.markup.ParsedDocstring.summary
+epydoc.markup.epytext.ParsedEpytextDocstring.summary
+epydoc.markup.javadoc.ParsedJavadocDocstring.summary
+epydoc.markup.plaintext.ParsedPlaintextDocstring.summary
+epydoc.markup.restructuredtext.ParsedRstDocstring.summary" class="py-name" href="#" onclick="return doclink('link-39', 'summary', 'link-39');">summary</a></tt><tt class="py-op">,</tt> <tt class="py-name">bool</tt><tt class="py-op">(</tt><tt class="py-name">visitor</tt><tt class="py-op">.</tt><tt id="link-40" class="py-name" targets="Variable epydoc.apidoc.APIDoc.other_docs=epydoc.apidoc.APIDoc-class.html#other_docs"><a title="epydoc.apidoc.APIDoc.other_docs" class="py-name" href="#" oncl [...]
+</div><a name="L182"></a><tt class="py-lineno">182</tt>  <tt class="py-line"> </tt>
+<a name="L183"></a><tt class="py-lineno">183</tt>  <tt class="py-line"><tt class="py-comment">#     def concatenate(self, other):</tt> </tt>
+<a name="L184"></a><tt class="py-lineno">184</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#         result = self._document.copy()</tt> </tt>
+<a name="L185"></a><tt class="py-lineno">185</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#         for child in (self._document.get_children() +</tt> </tt>
+<a name="L186"></a><tt class="py-lineno">186</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#                       other._document.get_children()):</tt> </tt>
+<a name="L187"></a><tt class="py-lineno">187</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#             visitor = TreeCopyVisitor(self._document)</tt> </tt>
+<a name="L188"></a><tt class="py-lineno">188</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#             child.walkabout(visitor)</tt> </tt>
+<a name="L189"></a><tt class="py-lineno">189</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#             result.append(visitor.get_tree_copy())</tt> </tt>
+<a name="L190"></a><tt class="py-lineno">190</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#         return ParsedRstDocstring(result)</tt> </tt>
+<a name="L191"></a><tt class="py-lineno">191</tt>  <tt class="py-line"><tt class="py-comment"></tt>         </tt>
+<a name="ParsedRstDocstring.to_html"></a><div id="ParsedRstDocstring.to_html-def"><a name="L192"></a><tt class="py-lineno">192</tt> <a class="py-toggle" href="#" id="ParsedRstDocstring.to_html-toggle" onclick="return toggle('ParsedRstDocstring.to_html');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html#to_html">to_html</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class=" [...]
+<a name="L193"></a><tt class="py-lineno">193</tt>  <tt class="py-line">                <tt class="py-param">docindex</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">context</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-param">options</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ParsedRstDocstring.to_html-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ParsedRstDocstring.to_html-expanded"><a name="L194"></a><tt class="py-lineno">194</tt>  <tt class="py-line">        <tt class="py-comment"># Inherit docs</tt> </tt>
+<a name="L195"></a><tt class="py-lineno">195</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">visitor</tt> <tt class="py-op">=</tt> <tt id="link-41" class="py-name" targets="Class epydoc.markup.restructuredtext._EpydocHTMLTranslator=epydoc.markup.restructuredtext._EpydocHTMLTranslator-class.html"><a title="epydoc.markup.restructuredtext._EpydocHTMLTranslator" class="py-name" href="#" onclick="return doclink('link-41', '_EpydocHTMLTranslator', 'link-41');" [...]
+<a name="L196"></a><tt class="py-lineno">196</tt>  <tt class="py-line">                                        <tt class="py-name">directory</tt><tt class="py-op">,</tt> <tt class="py-name">docindex</tt><tt class="py-op">,</tt> <tt class="py-name">context</tt><tt class="py-op">)</tt> </tt>
+<a name="L197"></a><tt class="py-lineno">197</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_document</tt><tt class="py-op">.</tt><tt class="py-name">walkabout</tt><tt class="py-op">(</tt><tt class="py-name">visitor</tt><tt class="py-op">)</tt> </tt>
+<a name="L198"></a><tt class="py-lineno">198</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">''</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">visitor</tt><tt class="py-op">.</tt><tt id="link-42" class="py-name" targets="Method epydoc.markup.Field.body()=epydoc.markup.Field-class.html#body"><a title="epydoc.markup.Field.body" class="py-name" href="#" onclick="return doclink('link-42', 'body', [...]
+</div><a name="L199"></a><tt class="py-lineno">199</tt>  <tt class="py-line"> </tt>
+<a name="ParsedRstDocstring.to_latex"></a><div id="ParsedRstDocstring.to_latex-def"><a name="L200"></a><tt class="py-lineno">200</tt> <a class="py-toggle" href="#" id="ParsedRstDocstring.to_latex-toggle" onclick="return toggle('ParsedRstDocstring.to_latex');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html#to_latex">to_latex</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt c [...]
+</div><div id="ParsedRstDocstring.to_latex-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ParsedRstDocstring.to_latex-expanded"><a name="L201"></a><tt class="py-lineno">201</tt>  <tt class="py-line">        <tt class="py-comment"># Inherit docs</tt> </tt>
+<a name="L202"></a><tt class="py-lineno">202</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">visitor</tt> <tt class="py-op">=</tt> <tt id="link-43" class="py-name" targets="Class epydoc.markup.restructuredtext._EpydocLaTeXTranslator=epydoc.markup.restructuredtext._EpydocLaTeXTranslator-class.html"><a title="epydoc.markup.restructuredtext._EpydocLaTeXTranslator" class="py-name" href="#" onclick="return doclink('link-43', '_EpydocLaTeXTranslator', 'link-43 [...]
+<a name="L203"></a><tt class="py-lineno">203</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_document</tt><tt class="py-op">.</tt><tt class="py-name">walkabout</tt><tt class="py-op">(</tt><tt class="py-name">visitor</tt><tt class="py-op">)</tt> </tt>
+<a name="L204"></a><tt class="py-lineno">204</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">''</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">visitor</tt><tt class="py-op">.</tt><tt id="link-44" class="py-name"><a title="epydoc.markup.Field.body" class="py-name" href="#" onclick="return doclink('link-44', 'body', 'link-42');">body</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L205"></a><tt class="py-lineno">205</tt>  <tt class="py-line"> </tt>
+<a name="ParsedRstDocstring.to_plaintext"></a><div id="ParsedRstDocstring.to_plaintext-def"><a name="L206"></a><tt class="py-lineno">206</tt> <a class="py-toggle" href="#" id="ParsedRstDocstring.to_plaintext-toggle" onclick="return toggle('ParsedRstDocstring.to_plaintext');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html#to_plaintext">to_plaintext</a><tt class="py-op">(</tt><tt class=" [...]
+</div><div id="ParsedRstDocstring.to_plaintext-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ParsedRstDocstring.to_plaintext-expanded"><a name="L207"></a><tt class="py-lineno">207</tt>  <tt class="py-line">        <tt class="py-comment"># This is should be replaced by something better:</tt> </tt>
+<a name="L208"></a><tt class="py-lineno">208</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_document</tt><tt class="py-op">.</tt><tt class="py-name">astext</tt><tt class="py-op">(</tt><tt class="py-op">)</tt>  </tt>
+</div><a name="L209"></a><tt class="py-lineno">209</tt>  <tt class="py-line"> </tt>
+<a name="ParsedRstDocstring.__repr__"></a><div id="ParsedRstDocstring.__repr__-def"><a name="L210"></a><tt class="py-lineno">210</tt> <a class="py-toggle" href="#" id="ParsedRstDocstring.__repr__-toggle" onclick="return toggle('ParsedRstDocstring.__repr__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html#__repr__">__repr__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt c [...]
+</div><a name="L211"></a><tt class="py-lineno">211</tt>  <tt class="py-line"> </tt>
+<a name="ParsedRstDocstring.index_terms"></a><div id="ParsedRstDocstring.index_terms-def"><a name="L212"></a><tt class="py-lineno">212</tt> <a class="py-toggle" href="#" id="ParsedRstDocstring.index_terms-toggle" onclick="return toggle('ParsedRstDocstring.index_terms');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html#index_terms">index_terms</a><tt class="py-op">(</tt><tt class="py-par [...]
+</div><div id="ParsedRstDocstring.index_terms-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ParsedRstDocstring.index_terms-expanded"><a name="L213"></a><tt class="py-lineno">213</tt>  <tt class="py-line">        <tt class="py-name">visitor</tt> <tt class="py-op">=</tt> <tt id="link-45" class="py-name" targets="Class epydoc.markup.restructuredtext._TermsExtractor=epydoc.markup.restructuredtext._TermsExtractor-class.html"><a title="epydoc.markup.restructuredte [...]
+<a name="L214"></a><tt class="py-lineno">214</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_document</tt><tt class="py-op">.</tt><tt class="py-name">walkabout</tt><tt class="py-op">(</tt><tt class="py-name">visitor</tt><tt class="py-op">)</tt> </tt>
+<a name="L215"></a><tt class="py-lineno">215</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">visitor</tt><tt class="py-op">.</tt><tt class="py-name">terms</tt> </tt>
+</div></div><a name="L216"></a><tt class="py-lineno">216</tt>  <tt class="py-line"> </tt>
+<a name="_EpydocReader"></a><div id="_EpydocReader-def"><a name="L217"></a><tt class="py-lineno">217</tt> <a class="py-toggle" href="#" id="_EpydocReader-toggle" onclick="return toggle('_EpydocReader');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="epydoc.markup.restructuredtext._EpydocReader-class.html">_EpydocReader</a><tt class="py-op">(</tt><tt class="py-base-class">ApiLinkReader</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_EpydocReader-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_EpydocReader-expanded"><a name="L218"></a><tt class="py-lineno">218</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L219"></a><tt class="py-lineno">219</tt>  <tt class="py-line"><tt class="py-docstring">    A reader that captures all errors that are generated by parsing,</tt> </tt>
+<a name="L220"></a><tt class="py-lineno">220</tt>  <tt class="py-line"><tt class="py-docstring">    and appends them to a list.</tt> </tt>
+<a name="L221"></a><tt class="py-lineno">221</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L222"></a><tt class="py-lineno">222</tt>  <tt class="py-line">    <tt class="py-comment"># Remove the DocInfo transform, to ensure that :author: fields are</tt> </tt>
+<a name="L223"></a><tt class="py-lineno">223</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># correctly handled.  This needs to be handled differently</tt> </tt>
+<a name="L224"></a><tt class="py-lineno">224</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># depending on the version of docutils that's being used, because</tt> </tt>
+<a name="L225"></a><tt class="py-lineno">225</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># the default_transforms attribute was deprecated & replaced by</tt> </tt>
+<a name="L226"></a><tt class="py-lineno">226</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># get_transforms().</tt> </tt>
+<a name="L227"></a><tt class="py-lineno">227</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">version</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">int</tt><tt class="py-op">(</tt><tt id="link-46" class="py-name" targets="Variable epydoc.markup.restructuredtext._EpydocReader.v=epydoc.markup.restructuredtext._EpydocReader-class.html#v"><a title="epydoc.markup.restructuredtext._EpydocReader.v" class="py-name" href="#" onclick="return [...]
+<a name="L228"></a><tt class="py-lineno">228</tt>  <tt class="py-line">    <tt class="py-name">version</tt> <tt class="py-op">+=</tt> <tt class="py-op">[</tt> <tt class="py-number">0</tt> <tt class="py-op">]</tt> <tt class="py-op">*</tt> <tt class="py-op">(</tt><tt class="py-number">3</tt> <tt class="py-op">-</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">version</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L229"></a><tt class="py-lineno">229</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">version</tt> <tt class="py-op"><</tt> <tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-number">4</tt><tt class="py-op">,</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L230"></a><tt class="py-lineno">230</tt>  <tt class="py-line">        <tt id="link-49" class="py-name" targets="Variable epydoc.markup.restructuredtext._EpydocReader.default_transforms=epydoc.markup.restructuredtext._EpydocReader-class.html#default_transforms"><a title="epydoc.markup.restructuredtext._EpydocReader.default_transforms" class="py-name" href="#" onclick="return doclink('link-49', 'default_transforms', 'link-49');">default_transforms</a></tt> <tt class="py-op">=</tt> [...]
+<a name="L231"></a><tt class="py-lineno">231</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> <tt id="link-52" class="py-name"><a title="epydoc.markup.restructuredtext._EpydocReader.default_transforms" class="py-name" href="#" onclick="return doclink('link-52', 'default_transforms', 'link-49');">default_transforms</a></tt><tt class="py-op">.</tt><tt class="py-name">remove</tt><tt class="py-op">(</tt><tt class="py-name">docutils</tt><tt class="py-o [...]
+<a name="L232"></a><tt class="py-lineno">232</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">ValueError</tt><tt class="py-op">:</tt> <tt class="py-keyword">pass</tt> </tt>
+<a name="L233"></a><tt class="py-lineno">233</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="_EpydocReader.get_transforms"></a><div id="_EpydocReader.get_transforms-def"><a name="L234"></a><tt class="py-lineno">234</tt> <a class="py-toggle" href="#" id="_EpydocReader.get_transforms-toggle" onclick="return toggle('_EpydocReader.get_transforms');">-</a><tt class="py-line">        <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.restructuredtext._EpydocReader-class.html#get_transforms">get_transforms</a><tt class="py-op">(</tt><tt class="py-param" [...]
+</div><div id="_EpydocReader.get_transforms-collapsed" style="display:none;" pad="+++" indent="++++++++++++++++"></div><div id="_EpydocReader.get_transforms-expanded"><a name="L235"></a><tt class="py-lineno">235</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-op">[</tt><tt class="py-name">t</tt> <tt class="py-keyword">for</tt> <tt class="py-name">t</tt> <tt class="py-keyword">in</tt> <tt id="link-53" class="py-name"><a title="epydoc.docwriter.xlink. [...]
+<a name="L236"></a><tt class="py-lineno">236</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">t</tt> <tt class="py-op">!=</tt> <tt class="py-name">docutils</tt><tt class="py-op">.</tt><tt class="py-name">transforms</tt><tt class="py-op">.</tt><tt class="py-name">frontmatter</tt><tt class="py-op">.</tt><tt class="py-name">DocInfo</tt><tt class="py-op">]</tt> </tt>
+</div><a name="L237"></a><tt class="py-lineno">237</tt>  <tt class="py-line">    <tt class="py-keyword">del</tt> <tt class="py-name">version</tt> </tt>
+<a name="L238"></a><tt class="py-lineno">238</tt>  <tt class="py-line"> </tt>
+<a name="_EpydocReader.__init__"></a><div id="_EpydocReader.__init__-def"><a name="L239"></a><tt class="py-lineno">239</tt> <a class="py-toggle" href="#" id="_EpydocReader.__init__-toggle" onclick="return toggle('_EpydocReader.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.restructuredtext._EpydocReader-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt c [...]
+</div><div id="_EpydocReader.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="_EpydocReader.__init__-expanded"><a name="L240"></a><tt class="py-lineno">240</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_errors</tt> <tt class="py-op">=</tt> <tt class="py-name">errors</tt> </tt>
+<a name="L241"></a><tt class="py-lineno">241</tt>  <tt class="py-line">        <tt id="link-55" class="py-name"><a title="epydoc.docwriter.xlink.ApiLinkReader" class="py-name" href="#" onclick="return doclink('link-55', 'ApiLinkReader', 'link-17');">ApiLinkReader</a></tt><tt class="py-op">.</tt><tt id="link-56" class="py-name" targets="Method epydoc.apidoc.APIDoc.__init__()=epydoc.apidoc.APIDoc-class.html#__init__,Method epydoc.apidoc.DocIndex.__init__()=epydoc.apidoc.DocIndex-class.html [...]
+epydoc.apidoc.DocIndex.__init__
+epydoc.apidoc.DottedName.__init__
+epydoc.apidoc.NamespaceDoc.__init__
+epydoc.apidoc.VariableDoc.__init__
+epydoc.apidoc._Sentinel.__init__
+epydoc.checker.DocChecker.__init__
+epydoc.cli.ConsoleLogger.__init__
+epydoc.cli.HTMLLogger.__init__
+epydoc.cli.TerminalController.__init__
+epydoc.cli.UnifiedProgressConsoleLogger.__init__
+epydoc.docbuilder.BuildOptions.__init__
+epydoc.docbuilder._ProgressEstimator.__init__
+epydoc.docintrospecter._DevNull.__init__
+epydoc.docstringparser.DocstringField.__init__
+epydoc.docwriter.dotgraph.DotGraph.__init__
+epydoc.docwriter.dotgraph.DotGraphEdge.__init__
+epydoc.docwriter.dotgraph.DotGraphNode.__init__
+epydoc.docwriter.dotgraph.DotGraphUmlClassNode.__init__
+epydoc.docwriter.dotgraph.DotGraphUmlModuleNode.__init__
+epydoc.docwriter.html.HTMLWriter.__init__
+epydoc.docwriter.html._HTMLDocstringLinker.__init__
+epydoc.docwriter.html_colorize.PythonSourceColorizer.__init__
+epydoc.docwriter.latex.LatexWriter.__init__
+epydoc.docwriter.xlink.ApiLinkReader.__init__
+epydoc.docwriter.xlink.DocUrlGenerator.__init__
+epydoc.gui.EpydocGUI.__init__
+epydoc.gui.GUILogger.__init__
+epydoc.log.SimpleLogger.__init__
+epydoc.markup.ConcatenatedDocstring.__init__
+epydoc.markup.Field.__init__
+epydoc.markup.ParseError.__init__
+epydoc.markup.epytext.ColorizingError.__init__
+epydoc.markup.epytext.Element.__init__
+epydoc.markup.epytext.ParsedEpytextDocstring.__init__
+epydoc.markup.epytext.Token.__init__
+epydoc.markup.javadoc.ParsedJavadocDocstring.__init__
+epydoc.markup.plaintext.ParsedPlaintextDocstring.__init__
+epydoc.markup.pyval_repr.ColorizedPyvalRepr.__init__
+epydoc.markup.pyval_repr.PyvalColorizer.__init__
+epydoc.markup.pyval_repr._ColorizerState.__init__
+epydoc.markup.restructuredtext.ParsedRstDocstring.__init__
+epydoc.markup.restructuredtext._DocumentPseudoWriter.__init__
+epydoc.markup.restructuredtext._EpydocHTMLTranslator.__init__
+epydoc.markup.restructuredtext._EpydocLaTeXTranslator.__init__
+epydoc.markup.restructuredtext._EpydocReader.__init__
+epydoc.markup.restructuredtext._SplitFieldsTranslator.__init__
+epydoc.markup.restructuredtext._SummaryExtractor.__init__
+epydoc.markup.restructuredtext._TermsExtractor.__init__
+epydoc.markup.restructuredtext.dotgraph.__init__
+epydoc.util.RunSubprocessError.__init__" class="py-name" href="#" onclick="return doclink('link-56', '__init__', 'link-56');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L242"></a><tt class="py-lineno">242</tt>  <tt class="py-line">         </tt>
+<a name="_EpydocReader.new_document"></a><div id="_EpydocReader.new_document-def"><a name="L243"></a><tt class="py-lineno">243</tt> <a class="py-toggle" href="#" id="_EpydocReader.new_document-toggle" onclick="return toggle('_EpydocReader.new_document');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.restructuredtext._EpydocReader-class.html#new_document">new_document</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt cl [...]
+</div><div id="_EpydocReader.new_document-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="_EpydocReader.new_document-expanded"><a name="L244"></a><tt class="py-lineno">244</tt>  <tt class="py-line">        <tt id="link-57" class="py-name"><a title="epydoc.gui.document" class="py-name" href="#" onclick="return doclink('link-57', 'document', 'link-30');">document</a></tt> <tt class="py-op">=</tt> <tt id="link-58" class="py-name"><a title="epydoc.markup.restructu [...]
+epydoc.markup.restructuredtext._EpydocLaTeXTranslator.settings" class="py-name" href="#" onclick="return doclink('link-59', 'settings', 'link-59');">settings</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L245"></a><tt class="py-lineno">245</tt>  <tt class="py-line">        <tt class="py-comment"># Capture all warning messages.</tt> </tt>
+<a name="L246"></a><tt class="py-lineno">246</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt id="link-60" class="py-name"><a title="epydoc.gui.document" class="py-name" href="#" onclick="return doclink('link-60', 'document', 'link-30');">document</a></tt><tt class="py-op">.</tt><tt class="py-name">reporter</tt><tt class="py-op">.</tt><tt class="py-name">attach_observer</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-61" clas [...]
+<a name="L247"></a><tt class="py-lineno">247</tt>  <tt class="py-line">        <tt class="py-comment"># These are used so we know how to encode warning messages:</tt> </tt>
+<a name="L248"></a><tt class="py-lineno">248</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_encoding</tt> <tt class="py-op">=</tt> <tt id="link-62" class="py-name"><a title="epydoc.gui.document" class="py-name" href="#" onclick="return doclink('link-62', 'document', 'link-30');">document</a></tt><tt class="py-op">.</tt><tt class="py-name">reporter</tt><tt class="py-op">.</tt><tt class="py-name">encod [...]
+<a name="L249"></a><tt class="py-lineno">249</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_error_handler</tt> <tt class="py-op">=</tt> <tt id="link-63" class="py-name"><a title="epydoc.gui.document" class="py-name" href="#" onclick="return doclink('link-63', 'document', 'link-30');">document</a></tt><tt class="py-op">.</tt><tt class="py-name">reporter</tt><tt class="py-op">.</tt><tt class="py-name">error_handler</tt> </tt>
+<a name="L250"></a><tt class="py-lineno">250</tt>  <tt class="py-line">        <tt class="py-comment"># Return the new document.</tt> </tt>
+<a name="L251"></a><tt class="py-lineno">251</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">return</tt> <tt id="link-64" class="py-name"><a title="epydoc.gui.document" class="py-name" href="#" onclick="return doclink('link-64', 'document', 'link-30');">document</a></tt> </tt>
+</div><a name="L252"></a><tt class="py-lineno">252</tt>  <tt class="py-line"> </tt>
+<a name="_EpydocReader.report"></a><div id="_EpydocReader.report-def"><a name="L253"></a><tt class="py-lineno">253</tt> <a class="py-toggle" href="#" id="_EpydocReader.report-toggle" onclick="return toggle('_EpydocReader.report');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.restructuredtext._EpydocReader-class.html#report">report</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-par [...]
+</div><div id="_EpydocReader.report-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="_EpydocReader.report-expanded"><a name="L254"></a><tt class="py-lineno">254</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> <tt id="link-65" class="py-name" targets="Method epydoc.markup.ParseError.is_fatal()=epydoc.markup.ParseError-class.html#is_fatal"><a title="epydoc.markup.ParseError.is_fatal" class="py-name" href="#" onclick="retu [...]
+<a name="L255"></a><tt class="py-lineno">255</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt><tt class="py-op">:</tt> <tt id="link-67" class="py-name"><a title="epydoc.markup.ParseError.is_fatal" class="py-name" href="#" onclick="return doclink('link-67', 'is_fatal', 'link-65');">is_fatal</a></tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L256"></a><tt class="py-lineno">256</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> <tt id="link-68" class="py-name" targets="Method epydoc.markup.ParseError.linenum()=epydoc.markup.ParseError-class.html#linenum"><a title="epydoc.markup.ParseError.linenum" class="py-name" href="#" onclick="return doclink('link-68', 'linenum', 'link-68');">linenum</a></tt> <tt class="py-op">=</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt id [...]
+<a name="L257"></a><tt class="py-lineno">257</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt><tt class="py-op">:</tt> <tt id="link-70" class="py-name"><a title="epydoc.markup.ParseError.linenum" class="py-name" href="#" onclick="return doclink('link-70', 'linenum', 'link-68');">linenum</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L258"></a><tt class="py-lineno">258</tt>  <tt class="py-line"> </tt>
+<a name="L259"></a><tt class="py-lineno">259</tt>  <tt class="py-line">        <tt class="py-name">msg</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">c</tt><tt class="py-op">.</tt><tt class="py-name">astext</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-name">s [...]
+<a name="L260"></a><tt class="py-lineno">260</tt>  <tt class="py-line">                       <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt id="link-71" class="py-name"><a title="epydoc.log.error" class="py-name" href="#" onclick="return doclink('link-71', 'error', 'link-66');">error</a></tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L261"></a><tt class="py-lineno">261</tt>  <tt class="py-line"> </tt>
+<a name="L262"></a><tt class="py-lineno">262</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_errors</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-72" class="py-name" targets="Class epydoc.docparser.ParseError=epydoc.docparser.ParseError-class.html,Class epydoc.markup.ParseError=epydoc.markup.ParseError-class.html"><a title="epydoc.docparser.ParseError
+epydoc.markup.ParseError" class="py-name" href="#" onclick="return doclink('link-72', 'ParseError', 'link-72');">ParseError</a></tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">,</tt> <tt id="link-73" class="py-name"><a title="epydoc.markup.ParseError.linenum" class="py-name" href="#" onclick="return doclink('link-73', 'linenum', 'link-68');">linenum</a></tt><tt class="py-op">,</tt> <tt id="link-74" class="py-name"><a title="epydoc.markup.ParseError.is_fatal" cla [...]
+</div></div><a name="L263"></a><tt class="py-lineno">263</tt>  <tt class="py-line">         </tt>
+<a name="_DocumentPseudoWriter"></a><div id="_DocumentPseudoWriter-def"><a name="L264"></a><tt class="py-lineno">264</tt> <a class="py-toggle" href="#" id="_DocumentPseudoWriter-toggle" onclick="return toggle('_DocumentPseudoWriter');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="epydoc.markup.restructuredtext._DocumentPseudoWriter-class.html">_DocumentPseudoWriter</a><tt class="py-op">(</tt><tt class="py-base-class">Writer</tt><tt class="py-op" [...]
+</div><div id="_DocumentPseudoWriter-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_DocumentPseudoWriter-expanded"><a name="L265"></a><tt class="py-lineno">265</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L266"></a><tt class="py-lineno">266</tt>  <tt class="py-line"><tt class="py-docstring">    A pseudo-writer for the docutils framework, that can be used to</tt> </tt>
+<a name="L267"></a><tt class="py-lineno">267</tt>  <tt class="py-line"><tt class="py-docstring">    access the document itself.  The output of C{_DocumentPseudoWriter}</tt> </tt>
+<a name="L268"></a><tt class="py-lineno">268</tt>  <tt class="py-line"><tt class="py-docstring">    is just an empty string; but after it has been used, the most</tt> </tt>
+<a name="L269"></a><tt class="py-lineno">269</tt>  <tt class="py-line"><tt class="py-docstring">    recently processed document is available as the instance variable</tt> </tt>
+<a name="L270"></a><tt class="py-lineno">270</tt>  <tt class="py-line"><tt class="py-docstring">    C{document}</tt> </tt>
+<a name="L271"></a><tt class="py-lineno">271</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L272"></a><tt class="py-lineno">272</tt>  <tt class="py-line"><tt class="py-docstring">    @type document: C{docutils.nodes.document}</tt> </tt>
+<a name="L273"></a><tt class="py-lineno">273</tt>  <tt class="py-line"><tt class="py-docstring">    @ivar document: The most recently processed document.</tt> </tt>
+<a name="L274"></a><tt class="py-lineno">274</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="_DocumentPseudoWriter.__init__"></a><div id="_DocumentPseudoWriter.__init__-def"><a name="L275"></a><tt class="py-lineno">275</tt> <a class="py-toggle" href="#" id="_DocumentPseudoWriter.__init__-toggle" onclick="return toggle('_DocumentPseudoWriter.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.restructuredtext._DocumentPseudoWriter-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param" [...]
+</div><div id="_DocumentPseudoWriter.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="_DocumentPseudoWriter.__init__-expanded"><a name="L276"></a><tt class="py-lineno">276</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-75" class="py-name"><a title="epydoc.gui.document" class="py-name" href="#" onclick="return doclink('link-75', 'document', 'link-30');">document</a></tt> <tt class="py-op">=</tt> <tt c [...]
+<a name="L277"></a><tt class="py-lineno">277</tt>  <tt class="py-line">        <tt class="py-name">Writer</tt><tt class="py-op">.</tt><tt id="link-76" class="py-name"><a title="epydoc.apidoc.APIDoc.__init__
+epydoc.apidoc.DocIndex.__init__
+epydoc.apidoc.DottedName.__init__
+epydoc.apidoc.NamespaceDoc.__init__
+epydoc.apidoc.VariableDoc.__init__
+epydoc.apidoc._Sentinel.__init__
+epydoc.checker.DocChecker.__init__
+epydoc.cli.ConsoleLogger.__init__
+epydoc.cli.HTMLLogger.__init__
+epydoc.cli.TerminalController.__init__
+epydoc.cli.UnifiedProgressConsoleLogger.__init__
+epydoc.docbuilder.BuildOptions.__init__
+epydoc.docbuilder._ProgressEstimator.__init__
+epydoc.docintrospecter._DevNull.__init__
+epydoc.docstringparser.DocstringField.__init__
+epydoc.docwriter.dotgraph.DotGraph.__init__
+epydoc.docwriter.dotgraph.DotGraphEdge.__init__
+epydoc.docwriter.dotgraph.DotGraphNode.__init__
+epydoc.docwriter.dotgraph.DotGraphUmlClassNode.__init__
+epydoc.docwriter.dotgraph.DotGraphUmlModuleNode.__init__
+epydoc.docwriter.html.HTMLWriter.__init__
+epydoc.docwriter.html._HTMLDocstringLinker.__init__
+epydoc.docwriter.html_colorize.PythonSourceColorizer.__init__
+epydoc.docwriter.latex.LatexWriter.__init__
+epydoc.docwriter.xlink.ApiLinkReader.__init__
+epydoc.docwriter.xlink.DocUrlGenerator.__init__
+epydoc.gui.EpydocGUI.__init__
+epydoc.gui.GUILogger.__init__
+epydoc.log.SimpleLogger.__init__
+epydoc.markup.ConcatenatedDocstring.__init__
+epydoc.markup.Field.__init__
+epydoc.markup.ParseError.__init__
+epydoc.markup.epytext.ColorizingError.__init__
+epydoc.markup.epytext.Element.__init__
+epydoc.markup.epytext.ParsedEpytextDocstring.__init__
+epydoc.markup.epytext.Token.__init__
+epydoc.markup.javadoc.ParsedJavadocDocstring.__init__
+epydoc.markup.plaintext.ParsedPlaintextDocstring.__init__
+epydoc.markup.pyval_repr.ColorizedPyvalRepr.__init__
+epydoc.markup.pyval_repr.PyvalColorizer.__init__
+epydoc.markup.pyval_repr._ColorizerState.__init__
+epydoc.markup.restructuredtext.ParsedRstDocstring.__init__
+epydoc.markup.restructuredtext._DocumentPseudoWriter.__init__
+epydoc.markup.restructuredtext._EpydocHTMLTranslator.__init__
+epydoc.markup.restructuredtext._EpydocLaTeXTranslator.__init__
+epydoc.markup.restructuredtext._EpydocReader.__init__
+epydoc.markup.restructuredtext._SplitFieldsTranslator.__init__
+epydoc.markup.restructuredtext._SummaryExtractor.__init__
+epydoc.markup.restructuredtext._TermsExtractor.__init__
+epydoc.markup.restructuredtext.dotgraph.__init__
+epydoc.util.RunSubprocessError.__init__" class="py-name" href="#" onclick="return doclink('link-76', '__init__', 'link-56');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L278"></a><tt class="py-lineno">278</tt>  <tt class="py-line">         </tt>
+<a name="_DocumentPseudoWriter.translate"></a><div id="_DocumentPseudoWriter.translate-def"><a name="L279"></a><tt class="py-lineno">279</tt> <a class="py-toggle" href="#" id="_DocumentPseudoWriter.translate-toggle" onclick="return toggle('_DocumentPseudoWriter.translate');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.restructuredtext._DocumentPseudoWriter-class.html#translate">translate</a><tt class="py-op">(</tt><tt class="py- [...]
+</div><div id="_DocumentPseudoWriter.translate-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="_DocumentPseudoWriter.translate-expanded"><a name="L280"></a><tt class="py-lineno">280</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">output</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
+</div></div><a name="L281"></a><tt class="py-lineno">281</tt>  <tt class="py-line">         </tt>
+<a name="_SummaryExtractor"></a><div id="_SummaryExtractor-def"><a name="L282"></a><tt class="py-lineno">282</tt> <a class="py-toggle" href="#" id="_SummaryExtractor-toggle" onclick="return toggle('_SummaryExtractor');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="epydoc.markup.restructuredtext._SummaryExtractor-class.html">_SummaryExtractor</a><tt class="py-op">(</tt><tt class="py-base-class">NodeVisitor</tt><tt class="py-op">)</tt><tt class="p [...]
+</div><div id="_SummaryExtractor-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_SummaryExtractor-expanded"><a name="L283"></a><tt class="py-lineno">283</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L284"></a><tt class="py-lineno">284</tt>  <tt class="py-line"><tt class="py-docstring">    A docutils node visitor that extracts the first sentence from</tt> </tt>
+<a name="L285"></a><tt class="py-lineno">285</tt>  <tt class="py-line"><tt class="py-docstring">    the first paragraph in a document.</tt> </tt>
+<a name="L286"></a><tt class="py-lineno">286</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="_SummaryExtractor.__init__"></a><div id="_SummaryExtractor.__init__-def"><a name="L287"></a><tt class="py-lineno">287</tt> <a class="py-toggle" href="#" id="_SummaryExtractor.__init__-toggle" onclick="return toggle('_SummaryExtractor.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.restructuredtext._SummaryExtractor-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class= [...]
+</div><div id="_SummaryExtractor.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="_SummaryExtractor.__init__-expanded"><a name="L288"></a><tt class="py-lineno">288</tt>  <tt class="py-line">        <tt class="py-name">NodeVisitor</tt><tt class="py-op">.</tt><tt id="link-77" class="py-name"><a title="epydoc.apidoc.APIDoc.__init__
+epydoc.apidoc.DocIndex.__init__
+epydoc.apidoc.DottedName.__init__
+epydoc.apidoc.NamespaceDoc.__init__
+epydoc.apidoc.VariableDoc.__init__
+epydoc.apidoc._Sentinel.__init__
+epydoc.checker.DocChecker.__init__
+epydoc.cli.ConsoleLogger.__init__
+epydoc.cli.HTMLLogger.__init__
+epydoc.cli.TerminalController.__init__
+epydoc.cli.UnifiedProgressConsoleLogger.__init__
+epydoc.docbuilder.BuildOptions.__init__
+epydoc.docbuilder._ProgressEstimator.__init__
+epydoc.docintrospecter._DevNull.__init__
+epydoc.docstringparser.DocstringField.__init__
+epydoc.docwriter.dotgraph.DotGraph.__init__
+epydoc.docwriter.dotgraph.DotGraphEdge.__init__
+epydoc.docwriter.dotgraph.DotGraphNode.__init__
+epydoc.docwriter.dotgraph.DotGraphUmlClassNode.__init__
+epydoc.docwriter.dotgraph.DotGraphUmlModuleNode.__init__
+epydoc.docwriter.html.HTMLWriter.__init__
+epydoc.docwriter.html._HTMLDocstringLinker.__init__
+epydoc.docwriter.html_colorize.PythonSourceColorizer.__init__
+epydoc.docwriter.latex.LatexWriter.__init__
+epydoc.docwriter.xlink.ApiLinkReader.__init__
+epydoc.docwriter.xlink.DocUrlGenerator.__init__
+epydoc.gui.EpydocGUI.__init__
+epydoc.gui.GUILogger.__init__
+epydoc.log.SimpleLogger.__init__
+epydoc.markup.ConcatenatedDocstring.__init__
+epydoc.markup.Field.__init__
+epydoc.markup.ParseError.__init__
+epydoc.markup.epytext.ColorizingError.__init__
+epydoc.markup.epytext.Element.__init__
+epydoc.markup.epytext.ParsedEpytextDocstring.__init__
+epydoc.markup.epytext.Token.__init__
+epydoc.markup.javadoc.ParsedJavadocDocstring.__init__
+epydoc.markup.plaintext.ParsedPlaintextDocstring.__init__
+epydoc.markup.pyval_repr.ColorizedPyvalRepr.__init__
+epydoc.markup.pyval_repr.PyvalColorizer.__init__
+epydoc.markup.pyval_repr._ColorizerState.__init__
+epydoc.markup.restructuredtext.ParsedRstDocstring.__init__
+epydoc.markup.restructuredtext._DocumentPseudoWriter.__init__
+epydoc.markup.restructuredtext._EpydocHTMLTranslator.__init__
+epydoc.markup.restructuredtext._EpydocLaTeXTranslator.__init__
+epydoc.markup.restructuredtext._EpydocReader.__init__
+epydoc.markup.restructuredtext._SplitFieldsTranslator.__init__
+epydoc.markup.restructuredtext._SummaryExtractor.__init__
+epydoc.markup.restructuredtext._TermsExtractor.__init__
+epydoc.markup.restructuredtext.dotgraph.__init__
+epydoc.util.RunSubprocessError.__init__" class="py-name" href="#" onclick="return doclink('link-77', '__init__', 'link-56');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt id="link-78" class="py-name"><a title="epydoc.gui.document" class="py-name" href="#" onclick="return doclink('link-78', 'document', 'link-30');">document</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L289"></a><tt class="py-lineno">289</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-79" class="py-name"><a title="epydoc.apidoc.APIDoc.summary
+epydoc.docwriter.html.HTMLWriter.summary
+epydoc.markup.ConcatenatedDocstring.summary
+epydoc.markup.ParsedDocstring.summary
+epydoc.markup.epytext.ParsedEpytextDocstring.summary
+epydoc.markup.javadoc.ParsedJavadocDocstring.summary
+epydoc.markup.plaintext.ParsedPlaintextDocstring.summary
+epydoc.markup.restructuredtext.ParsedRstDocstring.summary" class="py-name" href="#" onclick="return doclink('link-79', 'summary', 'link-39');">summary</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L290"></a><tt class="py-lineno">290</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-80" class="py-name"><a title="epydoc.apidoc.APIDoc.other_docs" class="py-name" href="#" onclick="return doclink('link-80', 'other_docs', 'link-40');">other_docs</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+</div><a name="L291"></a><tt class="py-lineno">291</tt>  <tt class="py-line">         </tt>
+<a name="_SummaryExtractor.visit_document"></a><div id="_SummaryExtractor.visit_document-def"><a name="L292"></a><tt class="py-lineno">292</tt> <a class="py-toggle" href="#" id="_SummaryExtractor.visit_document-toggle" onclick="return toggle('_SummaryExtractor.visit_document');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.restructuredtext._SummaryExtractor-class.html#visit_document">visit_document</a><tt class="py-op">(</tt><tt  [...]
+</div><div id="_SummaryExtractor.visit_document-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="_SummaryExtractor.visit_document-expanded"><a name="L293"></a><tt class="py-lineno">293</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-81" class="py-name"><a title="epydoc.apidoc.APIDoc.summary
+epydoc.docwriter.html.HTMLWriter.summary
+epydoc.markup.ConcatenatedDocstring.summary
+epydoc.markup.ParsedDocstring.summary
+epydoc.markup.epytext.ParsedEpytextDocstring.summary
+epydoc.markup.javadoc.ParsedJavadocDocstring.summary
+epydoc.markup.plaintext.ParsedPlaintextDocstring.summary
+epydoc.markup.restructuredtext.ParsedRstDocstring.summary" class="py-name" href="#" onclick="return doclink('link-81', 'summary', 'link-39');">summary</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+</div><a name="L294"></a><tt class="py-lineno">294</tt>  <tt class="py-line">         </tt>
+<a name="L295"></a><tt class="py-lineno">295</tt>  <tt class="py-line">    <tt id="link-82" class="py-name" targets="Variable epydoc.markup.epytext.ParsedEpytextDocstring._SUMMARY_RE=epydoc.markup.epytext.ParsedEpytextDocstring-class.html#_SUMMARY_RE,Variable epydoc.markup.javadoc.ParsedJavadocDocstring._SUMMARY_RE=epydoc.markup.javadoc.ParsedJavadocDocstring-class.html#_SUMMARY_RE,Variable epydoc.markup.plaintext.ParsedPlaintextDocstring._SUMMARY_RE=epydoc.markup.plaintext.ParsedPlainte [...]
+epydoc.markup.javadoc.ParsedJavadocDocstring._SUMMARY_RE
+epydoc.markup.plaintext.ParsedPlaintextDocstring._SUMMARY_RE
+epydoc.markup.restructuredtext._SummaryExtractor._SUMMARY_RE" class="py-name" href="#" onclick="return doclink('link-82', '_SUMMARY_RE', 'link-82');">_SUMMARY_RE</a></tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">compile</tt><tt class="py-op">(</tt><tt class="py-string">r'(\s*[\w\W]*?\.)(\s|$)'</tt><tt class="py-op">)</tt> </tt>
+<a name="_SummaryExtractor.visit_paragraph"></a><div id="_SummaryExtractor.visit_paragraph-def"><a name="L296"></a><tt class="py-lineno">296</tt> <a class="py-toggle" href="#" id="_SummaryExtractor.visit_paragraph-toggle" onclick="return toggle('_SummaryExtractor.visit_paragraph');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.restructuredtext._SummaryExtractor-class.html#visit_paragraph">visit_paragraph</a><tt class="py-op">(</t [...]
+</div><div id="_SummaryExtractor.visit_paragraph-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="_SummaryExtractor.visit_paragraph-expanded"><a name="L297"></a><tt class="py-lineno">297</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-83" class="py-name"><a title="epydoc.apidoc.APIDoc.summary
+epydoc.docwriter.html.HTMLWriter.summary
+epydoc.markup.ConcatenatedDocstring.summary
+epydoc.markup.ParsedDocstring.summary
+epydoc.markup.epytext.ParsedEpytextDocstring.summary
+epydoc.markup.javadoc.ParsedJavadocDocstring.summary
+epydoc.markup.plaintext.ParsedPlaintextDocstring.summary
+epydoc.markup.restructuredtext.ParsedRstDocstring.summary" class="py-name" href="#" onclick="return doclink('link-83', 'summary', 'link-39');">summary</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L298"></a><tt class="py-lineno">298</tt>  <tt class="py-line">            <tt class="py-comment"># found a paragraph after the first one</tt> </tt>
+<a name="L299"></a><tt class="py-lineno">299</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-84" class="py-name"><a title="epydoc.apidoc.APIDoc.other_docs" class="py-name" href="#" onclick="return doclink('link-84', 'other_docs', 'link-40');">other_docs</a></tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L300"></a><tt class="py-lineno">300</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">docutils</tt><tt class="py-op">.</tt><tt class="py-name">nodes</tt><tt class="py-op">.</tt><tt class="py-name">NodeFound</tt><tt class="py-op">(</tt><tt class="py-string">'Found summary'</tt><tt class="py-op">)</tt> </tt>
+<a name="L301"></a><tt class="py-lineno">301</tt>  <tt class="py-line"> </tt>
+<a name="L302"></a><tt class="py-lineno">302</tt>  <tt class="py-line">        <tt class="py-name">summary_pieces</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L303"></a><tt class="py-lineno">303</tt>  <tt class="py-line"> </tt>
+<a name="L304"></a><tt class="py-lineno">304</tt>  <tt class="py-line">        <tt class="py-comment"># Extract the first sentence.</tt> </tt>
+<a name="L305"></a><tt class="py-lineno">305</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">for</tt> <tt class="py-name">child</tt> <tt class="py-keyword">in</tt> <tt class="py-name">node</tt><tt class="py-op">:</tt> </tt>
+<a name="L306"></a><tt class="py-lineno">306</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">child</tt><tt class="py-op">,</tt> <tt class="py-name">docutils</tt><tt class="py-op">.</tt><tt class="py-name">nodes</tt><tt class="py-op">.</tt><tt class="py-name">Text</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L307"></a><tt class="py-lineno">307</tt>  <tt class="py-line">                <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-85" class="py-name"><a title="epydoc.markup.epytext.ParsedEpytextDocstring._SUMMARY_RE
+epydoc.markup.javadoc.ParsedJavadocDocstring._SUMMARY_RE
+epydoc.markup.plaintext.ParsedPlaintextDocstring._SUMMARY_RE
+epydoc.markup.restructuredtext._SummaryExtractor._SUMMARY_RE" class="py-name" href="#" onclick="return doclink('link-85', '_SUMMARY_RE', 'link-82');">_SUMMARY_RE</a></tt><tt class="py-op">.</tt><tt class="py-name">match</tt><tt class="py-op">(</tt><tt class="py-name">child</tt><tt class="py-op">.</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt>
+<a name="L308"></a><tt class="py-lineno">308</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">m</tt><tt class="py-op">:</tt> </tt>
+<a name="L309"></a><tt class="py-lineno">309</tt>  <tt class="py-line">                    <tt class="py-name">summary_pieces</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">docutils</tt><tt class="py-op">.</tt><tt class="py-name">nodes</tt><tt class="py-op">.</tt><tt class="py-name">Text</tt><tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">.</tt><tt class="py-name">group</tt><tt class="py-op">(</tt><tt class="py-n [...]
+<a name="L310"></a><tt class="py-lineno">310</tt>  <tt class="py-line">                    <tt class="py-name">other</tt> <tt class="py-op">=</tt> <tt class="py-name">child</tt><tt class="py-op">.</tt><tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-name">m</tt><tt class="py-op">.</tt><tt class="py-name">end</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt>
+<a name="L311"></a><tt class="py-lineno">311</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">other</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">other</tt><tt class="py-op">.</tt><tt class="py-name">isspace</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L312"></a><tt class="py-lineno">312</tt>  <tt class="py-line">                        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-86" class="py-name"><a title="epydoc.apidoc.APIDoc.other_docs" class="py-name" href="#" onclick="return doclink('link-86', 'other_docs', 'link-40');">other_docs</a></tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L313"></a><tt class="py-lineno">313</tt>  <tt class="py-line">                    <tt class="py-keyword">break</tt> </tt>
+<a name="L314"></a><tt class="py-lineno">314</tt>  <tt class="py-line">            <tt class="py-name">summary_pieces</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">child</tt><tt class="py-op">)</tt> </tt>
+<a name="L315"></a><tt class="py-lineno">315</tt>  <tt class="py-line"> </tt>
+<a name="L316"></a><tt class="py-lineno">316</tt>  <tt class="py-line">        <tt class="py-name">summary_doc</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-87" class="py-name"><a title="epydoc.gui.document" class="py-name" href="#" onclick="return doclink('link-87', 'document', 'link-30');">document</a></tt><tt class="py-op">.</tt><tt class="py-name">copy</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-comment"># shall [...]
+<a name="L317"></a><tt class="py-lineno">317</tt>  <tt class="py-line">        <tt class="py-name">summary_para</tt> <tt class="py-op">=</tt> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">copy</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-comment"># shallow copy</tt> </tt>
+<a name="L318"></a><tt class="py-lineno">318</tt>  <tt class="py-line">        <tt class="py-name">summary_doc</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">summary_para</tt><tt class="py-op">]</tt> </tt>
+<a name="L319"></a><tt class="py-lineno">319</tt>  <tt class="py-line">        <tt class="py-name">summary_para</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">summary_pieces</tt> </tt>
+<a name="L320"></a><tt class="py-lineno">320</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-88" class="py-name"><a title="epydoc.apidoc.APIDoc.summary
+epydoc.docwriter.html.HTMLWriter.summary
+epydoc.markup.ConcatenatedDocstring.summary
+epydoc.markup.ParsedDocstring.summary
+epydoc.markup.epytext.ParsedEpytextDocstring.summary
+epydoc.markup.javadoc.ParsedJavadocDocstring.summary
+epydoc.markup.plaintext.ParsedPlaintextDocstring.summary
+epydoc.markup.restructuredtext.ParsedRstDocstring.summary" class="py-name" href="#" onclick="return doclink('link-88', 'summary', 'link-39');">summary</a></tt> <tt class="py-op">=</tt> <tt id="link-89" class="py-name"><a title="epydoc.markup.restructuredtext.ParsedRstDocstring" class="py-name" href="#" onclick="return doclink('link-89', 'ParsedRstDocstring', 'link-29');">ParsedRstDocstring</a></tt><tt class="py-op">(</tt><tt class="py-name">summary_doc</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L321"></a><tt class="py-lineno">321</tt>  <tt class="py-line"> </tt>
+<a name="_SummaryExtractor.visit_field"></a><div id="_SummaryExtractor.visit_field-def"><a name="L322"></a><tt class="py-lineno">322</tt> <a class="py-toggle" href="#" id="_SummaryExtractor.visit_field-toggle" onclick="return toggle('_SummaryExtractor.visit_field');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.restructuredtext._SummaryExtractor-class.html#visit_field">visit_field</a><tt class="py-op">(</tt><tt class="py-param">s [...]
+</div><div id="_SummaryExtractor.visit_field-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="_SummaryExtractor.visit_field-expanded"><a name="L323"></a><tt class="py-lineno">323</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">SkipNode</tt> </tt>
+</div><a name="L324"></a><tt class="py-lineno">324</tt>  <tt class="py-line"> </tt>
+<a name="_SummaryExtractor.unknown_visit"></a><div id="_SummaryExtractor.unknown_visit-def"><a name="L325"></a><tt class="py-lineno">325</tt> <a class="py-toggle" href="#" id="_SummaryExtractor.unknown_visit-toggle" onclick="return toggle('_SummaryExtractor.unknown_visit');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.restructuredtext._SummaryExtractor-class.html#unknown_visit">unknown_visit</a><tt class="py-op">(</tt><tt class= [...]
+</div><div id="_SummaryExtractor.unknown_visit-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="_SummaryExtractor.unknown_visit-expanded"><a name="L326"></a><tt class="py-lineno">326</tt>  <tt class="py-line">        <tt class="py-docstring">'Ignore all unknown nodes'</tt> </tt>
+</div></div><a name="L327"></a><tt class="py-lineno">327</tt>  <tt class="py-line"> </tt>
+<a name="_TermsExtractor"></a><div id="_TermsExtractor-def"><a name="L328"></a><tt class="py-lineno">328</tt> <a class="py-toggle" href="#" id="_TermsExtractor-toggle" onclick="return toggle('_TermsExtractor');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="epydoc.markup.restructuredtext._TermsExtractor-class.html">_TermsExtractor</a><tt class="py-op">(</tt><tt class="py-base-class">NodeVisitor</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_TermsExtractor-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_TermsExtractor-expanded"><a name="L329"></a><tt class="py-lineno">329</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L330"></a><tt class="py-lineno">330</tt>  <tt class="py-line"><tt class="py-docstring">    A docutils node visitor that extracts the terms from documentation.</tt> </tt>
+<a name="L331"></a><tt class="py-lineno">331</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L332"></a><tt class="py-lineno">332</tt>  <tt class="py-line"><tt class="py-docstring">    Terms are created using the C{:term:} interpreted text role.</tt> </tt>
+<a name="L333"></a><tt class="py-lineno">333</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="_TermsExtractor.__init__"></a><div id="_TermsExtractor.__init__-def"><a name="L334"></a><tt class="py-lineno">334</tt> <a class="py-toggle" href="#" id="_TermsExtractor.__init__-toggle" onclick="return toggle('_TermsExtractor.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.restructuredtext._TermsExtractor-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,< [...]
+</div><div id="_TermsExtractor.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="_TermsExtractor.__init__-expanded"><a name="L335"></a><tt class="py-lineno">335</tt>  <tt class="py-line">        <tt class="py-name">NodeVisitor</tt><tt class="py-op">.</tt><tt id="link-90" class="py-name"><a title="epydoc.apidoc.APIDoc.__init__
+epydoc.apidoc.DocIndex.__init__
+epydoc.apidoc.DottedName.__init__
+epydoc.apidoc.NamespaceDoc.__init__
+epydoc.apidoc.VariableDoc.__init__
+epydoc.apidoc._Sentinel.__init__
+epydoc.checker.DocChecker.__init__
+epydoc.cli.ConsoleLogger.__init__
+epydoc.cli.HTMLLogger.__init__
+epydoc.cli.TerminalController.__init__
+epydoc.cli.UnifiedProgressConsoleLogger.__init__
+epydoc.docbuilder.BuildOptions.__init__
+epydoc.docbuilder._ProgressEstimator.__init__
+epydoc.docintrospecter._DevNull.__init__
+epydoc.docstringparser.DocstringField.__init__
+epydoc.docwriter.dotgraph.DotGraph.__init__
+epydoc.docwriter.dotgraph.DotGraphEdge.__init__
+epydoc.docwriter.dotgraph.DotGraphNode.__init__
+epydoc.docwriter.dotgraph.DotGraphUmlClassNode.__init__
+epydoc.docwriter.dotgraph.DotGraphUmlModuleNode.__init__
+epydoc.docwriter.html.HTMLWriter.__init__
+epydoc.docwriter.html._HTMLDocstringLinker.__init__
+epydoc.docwriter.html_colorize.PythonSourceColorizer.__init__
+epydoc.docwriter.latex.LatexWriter.__init__
+epydoc.docwriter.xlink.ApiLinkReader.__init__
+epydoc.docwriter.xlink.DocUrlGenerator.__init__
+epydoc.gui.EpydocGUI.__init__
+epydoc.gui.GUILogger.__init__
+epydoc.log.SimpleLogger.__init__
+epydoc.markup.ConcatenatedDocstring.__init__
+epydoc.markup.Field.__init__
+epydoc.markup.ParseError.__init__
+epydoc.markup.epytext.ColorizingError.__init__
+epydoc.markup.epytext.Element.__init__
+epydoc.markup.epytext.ParsedEpytextDocstring.__init__
+epydoc.markup.epytext.Token.__init__
+epydoc.markup.javadoc.ParsedJavadocDocstring.__init__
+epydoc.markup.plaintext.ParsedPlaintextDocstring.__init__
+epydoc.markup.pyval_repr.ColorizedPyvalRepr.__init__
+epydoc.markup.pyval_repr.PyvalColorizer.__init__
+epydoc.markup.pyval_repr._ColorizerState.__init__
+epydoc.markup.restructuredtext.ParsedRstDocstring.__init__
+epydoc.markup.restructuredtext._DocumentPseudoWriter.__init__
+epydoc.markup.restructuredtext._EpydocHTMLTranslator.__init__
+epydoc.markup.restructuredtext._EpydocLaTeXTranslator.__init__
+epydoc.markup.restructuredtext._EpydocReader.__init__
+epydoc.markup.restructuredtext._SplitFieldsTranslator.__init__
+epydoc.markup.restructuredtext._SummaryExtractor.__init__
+epydoc.markup.restructuredtext._TermsExtractor.__init__
+epydoc.markup.restructuredtext.dotgraph.__init__
+epydoc.util.RunSubprocessError.__init__" class="py-name" href="#" onclick="return doclink('link-90', '__init__', 'link-56');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt id="link-91" class="py-name"><a title="epydoc.gui.document" class="py-name" href="#" onclick="return doclink('link-91', 'document', 'link-30');">document</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L336"></a><tt class="py-lineno">336</tt>  <tt class="py-line">         </tt>
+<a name="L337"></a><tt class="py-lineno">337</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">terms</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L338"></a><tt class="py-lineno">338</tt>  <tt class="py-line">        <tt class="py-string">"""</tt> </tt>
+<a name="L339"></a><tt class="py-lineno">339</tt>  <tt class="py-line"><tt class="py-string">        The terms currently found.</tt> </tt>
+<a name="L340"></a><tt class="py-lineno">340</tt>  <tt class="py-line"><tt class="py-string">        @type: C{list}</tt> </tt>
+<a name="L341"></a><tt class="py-lineno">341</tt>  <tt class="py-line"><tt class="py-string">        """</tt> </tt>
+</div><a name="L342"></a><tt class="py-lineno">342</tt>  <tt class="py-line">         </tt>
+<a name="_TermsExtractor.visit_document"></a><div id="_TermsExtractor.visit_document-def"><a name="L343"></a><tt class="py-lineno">343</tt> <a class="py-toggle" href="#" id="_TermsExtractor.visit_document-toggle" onclick="return toggle('_TermsExtractor.visit_document');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.restructuredtext._TermsExtractor-class.html#visit_document">visit_document</a><tt class="py-op">(</tt><tt class="py- [...]
+</div><div id="_TermsExtractor.visit_document-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="_TermsExtractor.visit_document-expanded"><a name="L344"></a><tt class="py-lineno">344</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">terms</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L345"></a><tt class="py-lineno">345</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_in_term</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+</div><a name="L346"></a><tt class="py-lineno">346</tt>  <tt class="py-line"> </tt>
+<a name="_TermsExtractor.visit_emphasis"></a><div id="_TermsExtractor.visit_emphasis-def"><a name="L347"></a><tt class="py-lineno">347</tt> <a class="py-toggle" href="#" id="_TermsExtractor.visit_emphasis-toggle" onclick="return toggle('_TermsExtractor.visit_emphasis');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.restructuredtext._TermsExtractor-class.html#visit_emphasis">visit_emphasis</a><tt class="py-op">(</tt><tt class="py- [...]
+</div><div id="_TermsExtractor.visit_emphasis-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="_TermsExtractor.visit_emphasis-expanded"><a name="L348"></a><tt class="py-lineno">348</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-string">'term'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'classes'</tt><tt class="py [...]
+<a name="L349"></a><tt class="py-lineno">349</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_in_term</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+</div><a name="L350"></a><tt class="py-lineno">350</tt>  <tt class="py-line"> </tt>
+<a name="_TermsExtractor.depart_emphasis"></a><div id="_TermsExtractor.depart_emphasis-def"><a name="L351"></a><tt class="py-lineno">351</tt> <a class="py-toggle" href="#" id="_TermsExtractor.depart_emphasis-toggle" onclick="return toggle('_TermsExtractor.depart_emphasis');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.restructuredtext._TermsExtractor-class.html#depart_emphasis">depart_emphasis</a><tt class="py-op">(</tt><tt clas [...]
+</div><div id="_TermsExtractor.depart_emphasis-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="_TermsExtractor.depart_emphasis-expanded"><a name="L352"></a><tt class="py-lineno">352</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-string">'term'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'classes'</tt><tt class=" [...]
+<a name="L353"></a><tt class="py-lineno">353</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_in_term</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+</div><a name="L354"></a><tt class="py-lineno">354</tt>  <tt class="py-line"> </tt>
+<a name="_TermsExtractor.visit_Text"></a><div id="_TermsExtractor.visit_Text-def"><a name="L355"></a><tt class="py-lineno">355</tt> <a class="py-toggle" href="#" id="_TermsExtractor.visit_Text-toggle" onclick="return toggle('_TermsExtractor.visit_Text');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.restructuredtext._TermsExtractor-class.html#visit_Text">visit_Text</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt clas [...]
+</div><div id="_TermsExtractor.visit_Text-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="_TermsExtractor.visit_Text-expanded"><a name="L356"></a><tt class="py-lineno">356</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_in_term</tt><tt class="py-op">:</tt> </tt>
+<a name="L357"></a><tt class="py-lineno">357</tt>  <tt class="py-line">            <tt class="py-name">doc</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-92" class="py-name"><a title="epydoc.gui.document" class="py-name" href="#" onclick="return doclink('link-92', 'document', 'link-30');">document</a></tt><tt class="py-op">.</tt><tt class="py-name">copy</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L358"></a><tt class="py-lineno">358</tt>  <tt class="py-line">            <tt class="py-name">doc</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">copy</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt>
+<a name="L359"></a><tt class="py-lineno">359</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">terms</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-93" class="py-name"><a title="epydoc.markup.restructuredtext.ParsedRstDocstring" class="py-name" href="#" onclick="return doclink('link-93', 'ParsedRstDocstring', 'link-29');">ParsedRstDocstring</a></tt><tt class="py-op">(</tt><tt cla [...]
+</div><a name="L360"></a><tt class="py-lineno">360</tt>  <tt class="py-line"> </tt>
+<a name="_TermsExtractor.unknown_visit"></a><div id="_TermsExtractor.unknown_visit-def"><a name="L361"></a><tt class="py-lineno">361</tt> <a class="py-toggle" href="#" id="_TermsExtractor.unknown_visit-toggle" onclick="return toggle('_TermsExtractor.unknown_visit');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.restructuredtext._TermsExtractor-class.html#unknown_visit">unknown_visit</a><tt class="py-op">(</tt><tt class="py-param" [...]
+</div><div id="_TermsExtractor.unknown_visit-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="_TermsExtractor.unknown_visit-expanded"><a name="L362"></a><tt class="py-lineno">362</tt>  <tt class="py-line">        <tt class="py-docstring">'Ignore all unknown nodes'</tt> </tt>
+</div><a name="L363"></a><tt class="py-lineno">363</tt>  <tt class="py-line"> </tt>
+<a name="_TermsExtractor.unknown_departure"></a><div id="_TermsExtractor.unknown_departure-def"><a name="L364"></a><tt class="py-lineno">364</tt> <a class="py-toggle" href="#" id="_TermsExtractor.unknown_departure-toggle" onclick="return toggle('_TermsExtractor.unknown_departure');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.restructuredtext._TermsExtractor-class.html#unknown_departure">unknown_departure</a><tt class="py-op">(< [...]
+</div><div id="_TermsExtractor.unknown_departure-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="_TermsExtractor.unknown_departure-expanded"><a name="L365"></a><tt class="py-lineno">365</tt>  <tt class="py-line">        <tt class="py-docstring">'Ignore all unknown nodes'</tt> </tt>
+</div></div><a name="L366"></a><tt class="py-lineno">366</tt>  <tt class="py-line"> </tt>
+<a name="_SplitFieldsTranslator"></a><div id="_SplitFieldsTranslator-def"><a name="L367"></a><tt class="py-lineno">367</tt> <a class="py-toggle" href="#" id="_SplitFieldsTranslator-toggle" onclick="return toggle('_SplitFieldsTranslator');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html">_SplitFieldsTranslator</a><tt class="py-op">(</tt><tt class="py-base-class">NodeVisitor</tt><tt cl [...]
+</div><div id="_SplitFieldsTranslator-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_SplitFieldsTranslator-expanded"><a name="L368"></a><tt class="py-lineno">368</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L369"></a><tt class="py-lineno">369</tt>  <tt class="py-line"><tt class="py-docstring">    A docutils translator that removes all fields from a document, and</tt> </tt>
+<a name="L370"></a><tt class="py-lineno">370</tt>  <tt class="py-line"><tt class="py-docstring">    collects them into the instance variable C{fields}</tt> </tt>
+<a name="L371"></a><tt class="py-lineno">371</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L372"></a><tt class="py-lineno">372</tt>  <tt class="py-line"><tt class="py-docstring">    @ivar fields: The fields of the most recently walked document.</tt> </tt>
+<a name="L373"></a><tt class="py-lineno">373</tt>  <tt class="py-line"><tt class="py-docstring">    @type fields: C{list} of L{Field<markup.Field>}</tt> </tt>
+<a name="L374"></a><tt class="py-lineno">374</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L375"></a><tt class="py-lineno">375</tt>  <tt class="py-line">     </tt>
+<a name="L376"></a><tt class="py-lineno">376</tt>  <tt class="py-line">    <tt id="link-94" class="py-name" targets="Variable epydoc.markup.restructuredtext._SplitFieldsTranslator.ALLOW_UNMARKED_ARG_IN_CONSOLIDATED_FIELD=epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html#ALLOW_UNMARKED_ARG_IN_CONSOLIDATED_FIELD"><a title="epydoc.markup.restructuredtext._SplitFieldsTranslator.ALLOW_UNMARKED_ARG_IN_CONSOLIDATED_FIELD" class="py-name" href="#" onclick="return doclink('link-94' [...]
+<a name="L377"></a><tt class="py-lineno">377</tt>  <tt class="py-line">    <tt class="py-string">"""If true, then consolidated fields are not required to mark</tt> </tt>
+<a name="L378"></a><tt class="py-lineno">378</tt>  <tt class="py-line"><tt class="py-string">    arguments with C{`backticks`}.  (This is currently only</tt> </tt>
+<a name="L379"></a><tt class="py-lineno">379</tt>  <tt class="py-line"><tt class="py-string">    implemented for consolidated fields expressed as definition lists;</tt> </tt>
+<a name="L380"></a><tt class="py-lineno">380</tt>  <tt class="py-line"><tt class="py-string">    consolidated fields expressed as unordered lists still require</tt> </tt>
+<a name="L381"></a><tt class="py-lineno">381</tt>  <tt class="py-line"><tt class="py-string">    backticks for now."""</tt> </tt>
+<a name="L382"></a><tt class="py-lineno">382</tt>  <tt class="py-line">     </tt>
+<a name="_SplitFieldsTranslator.__init__"></a><div id="_SplitFieldsTranslator.__init__-def"><a name="L383"></a><tt class="py-lineno">383</tt> <a class="py-toggle" href="#" id="_SplitFieldsTranslator.__init__-toggle" onclick="return toggle('_SplitFieldsTranslator.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-p [...]
+</div><div id="_SplitFieldsTranslator.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="_SplitFieldsTranslator.__init__-expanded"><a name="L384"></a><tt class="py-lineno">384</tt>  <tt class="py-line">        <tt class="py-name">NodeVisitor</tt><tt class="py-op">.</tt><tt id="link-95" class="py-name"><a title="epydoc.apidoc.APIDoc.__init__
+epydoc.apidoc.DocIndex.__init__
+epydoc.apidoc.DottedName.__init__
+epydoc.apidoc.NamespaceDoc.__init__
+epydoc.apidoc.VariableDoc.__init__
+epydoc.apidoc._Sentinel.__init__
+epydoc.checker.DocChecker.__init__
+epydoc.cli.ConsoleLogger.__init__
+epydoc.cli.HTMLLogger.__init__
+epydoc.cli.TerminalController.__init__
+epydoc.cli.UnifiedProgressConsoleLogger.__init__
+epydoc.docbuilder.BuildOptions.__init__
+epydoc.docbuilder._ProgressEstimator.__init__
+epydoc.docintrospecter._DevNull.__init__
+epydoc.docstringparser.DocstringField.__init__
+epydoc.docwriter.dotgraph.DotGraph.__init__
+epydoc.docwriter.dotgraph.DotGraphEdge.__init__
+epydoc.docwriter.dotgraph.DotGraphNode.__init__
+epydoc.docwriter.dotgraph.DotGraphUmlClassNode.__init__
+epydoc.docwriter.dotgraph.DotGraphUmlModuleNode.__init__
+epydoc.docwriter.html.HTMLWriter.__init__
+epydoc.docwriter.html._HTMLDocstringLinker.__init__
+epydoc.docwriter.html_colorize.PythonSourceColorizer.__init__
+epydoc.docwriter.latex.LatexWriter.__init__
+epydoc.docwriter.xlink.ApiLinkReader.__init__
+epydoc.docwriter.xlink.DocUrlGenerator.__init__
+epydoc.gui.EpydocGUI.__init__
+epydoc.gui.GUILogger.__init__
+epydoc.log.SimpleLogger.__init__
+epydoc.markup.ConcatenatedDocstring.__init__
+epydoc.markup.Field.__init__
+epydoc.markup.ParseError.__init__
+epydoc.markup.epytext.ColorizingError.__init__
+epydoc.markup.epytext.Element.__init__
+epydoc.markup.epytext.ParsedEpytextDocstring.__init__
+epydoc.markup.epytext.Token.__init__
+epydoc.markup.javadoc.ParsedJavadocDocstring.__init__
+epydoc.markup.plaintext.ParsedPlaintextDocstring.__init__
+epydoc.markup.pyval_repr.ColorizedPyvalRepr.__init__
+epydoc.markup.pyval_repr.PyvalColorizer.__init__
+epydoc.markup.pyval_repr._ColorizerState.__init__
+epydoc.markup.restructuredtext.ParsedRstDocstring.__init__
+epydoc.markup.restructuredtext._DocumentPseudoWriter.__init__
+epydoc.markup.restructuredtext._EpydocHTMLTranslator.__init__
+epydoc.markup.restructuredtext._EpydocLaTeXTranslator.__init__
+epydoc.markup.restructuredtext._EpydocReader.__init__
+epydoc.markup.restructuredtext._SplitFieldsTranslator.__init__
+epydoc.markup.restructuredtext._SummaryExtractor.__init__
+epydoc.markup.restructuredtext._TermsExtractor.__init__
+epydoc.markup.restructuredtext.dotgraph.__init__
+epydoc.util.RunSubprocessError.__init__" class="py-name" href="#" onclick="return doclink('link-95', '__init__', 'link-56');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt id="link-96" class="py-name"><a title="epydoc.gui.document" class="py-name" href="#" onclick="return doclink('link-96', 'document', 'link-30');">document</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L385"></a><tt class="py-lineno">385</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_errors</tt> <tt class="py-op">=</tt> <tt class="py-name">errors</tt> </tt>
+<a name="L386"></a><tt class="py-lineno">386</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">fields</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L387"></a><tt class="py-lineno">387</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_newfields</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+</div><a name="L388"></a><tt class="py-lineno">388</tt>  <tt class="py-line"> </tt>
+<a name="_SplitFieldsTranslator.visit_document"></a><div id="_SplitFieldsTranslator.visit_document-def"><a name="L389"></a><tt class="py-lineno">389</tt> <a class="py-toggle" href="#" id="_SplitFieldsTranslator.visit_document-toggle" onclick="return toggle('_SplitFieldsTranslator.visit_document');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html#visit_document">visit_document</a><tt [...]
+</div><div id="_SplitFieldsTranslator.visit_document-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="_SplitFieldsTranslator.visit_document-expanded"><a name="L390"></a><tt class="py-lineno">390</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">fields</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+</div><a name="L391"></a><tt class="py-lineno">391</tt>  <tt class="py-line"> </tt>
+<a name="_SplitFieldsTranslator.visit_field"></a><div id="_SplitFieldsTranslator.visit_field-def"><a name="L392"></a><tt class="py-lineno">392</tt> <a class="py-toggle" href="#" id="_SplitFieldsTranslator.visit_field-toggle" onclick="return toggle('_SplitFieldsTranslator.visit_field');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html#visit_field">visit_field</a><tt class="py-op">(</ [...]
+</div><div id="_SplitFieldsTranslator.visit_field-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="_SplitFieldsTranslator.visit_field-expanded"><a name="L393"></a><tt class="py-lineno">393</tt>  <tt class="py-line">        <tt class="py-comment"># Remove the field from the tree.</tt> </tt>
+<a name="L394"></a><tt class="py-lineno">394</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">parent</tt><tt class="py-op">.</tt><tt class="py-name">remove</tt><tt class="py-op">(</tt><tt class="py-name">node</tt><tt class="py-op">)</tt> </tt>
+<a name="L395"></a><tt class="py-lineno">395</tt>  <tt class="py-line"> </tt>
+<a name="L396"></a><tt class="py-lineno">396</tt>  <tt class="py-line">        <tt class="py-comment"># Extract the field name & optional argument</tt> </tt>
+<a name="L397"></a><tt class="py-lineno">397</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt id="link-97" class="py-name" targets="Method epydoc.markup.Field.tag()=epydoc.markup.Field-class.html#tag"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-97', 'tag', 'link-97');">tag</a></tt> <tt class="py-op">=</tt> <tt class="py-name">node</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op [...]
+<a name="L398"></a><tt class="py-lineno">398</tt>  <tt class="py-line">        <tt class="py-name">tagname</tt> <tt class="py-op">=</tt> <tt id="link-98" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-98', 'tag', 'link-97');">tag</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L399"></a><tt class="py-lineno">399</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-99" class="py-name"><a title="epydoc.markup.Field.tag" class="py-name" href="#" onclick="return doclink('link-99', 'tag', 'link-97');">tag</a></tt><tt class="py-op">)</tt><tt class="py-op">></tt><tt class="py-number">1</tt><tt class="py-op">:</tt> <tt id="link-100" class="py-name" targets="Method epydoc.markup.Fi [...]
+<a name="L400"></a><tt class="py-lineno">400</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> <tt id="link-102" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-102', 'arg', 'link-100');">arg</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L401"></a><tt class="py-lineno">401</tt>  <tt class="py-line"> </tt>
+<a name="L402"></a><tt class="py-lineno">402</tt>  <tt class="py-line">        <tt class="py-comment"># Handle special fields:</tt> </tt>
+<a name="L403"></a><tt class="py-lineno">403</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">fbody</tt> <tt class="py-op">=</tt> <tt class="py-name">node</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L404"></a><tt class="py-lineno">404</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-103" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-103', 'arg', 'link-100');">arg</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L405"></a><tt class="py-lineno">405</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-op">(</tt><tt class="py-name">list_tag</tt><tt class="py-op">,</tt> <tt class="py-name">entry_tag</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt id="link-104" class="py-name"><a title="epydoc.markup.restructuredtext.CONSOLIDATED_FIELDS" class="py-name" href="#" onclick="return doclink('link-104', 'CONSOLIDATED_FIELDS', 'link-24');">CONSOLIDATED [...]
+<a name="L406"></a><tt class="py-lineno">406</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">tagname</tt><tt class="py-op">.</tt><tt class="py-name">lower</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-name">list_tag</tt><tt class="py-op">:</tt> </tt>
+<a name="L407"></a><tt class="py-lineno">407</tt>  <tt class="py-line">                    <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L408"></a><tt class="py-lineno">408</tt>  <tt class="py-line">                        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-105" class="py-name" targets="Method epydoc.markup.restructuredtext._SplitFieldsTranslator.handle_consolidated_field()=epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html#handle_consolidated_field"><a title="epydoc.markup.restructuredtext._SplitFieldsTranslator.handle_consolidated_field" class="py-name" href="#" oncl [...]
+<a name="L409"></a><tt class="py-lineno">409</tt>  <tt class="py-line">                        <tt class="py-keyword">return</tt> </tt>
+<a name="L410"></a><tt class="py-lineno">410</tt>  <tt class="py-line">                    <tt class="py-keyword">except</tt> <tt class="py-name">ValueError</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
+<a name="L411"></a><tt class="py-lineno">411</tt>  <tt class="py-line">                        <tt class="py-name">estr</tt> <tt class="py-op">=</tt> <tt class="py-string">'Unable to split consolidated field '</tt> </tt>
+<a name="L412"></a><tt class="py-lineno">412</tt>  <tt class="py-line">                        <tt class="py-name">estr</tt> <tt class="py-op">+=</tt> <tt class="py-string">'"%s" - %s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">tagname</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">)</tt> </tt>
+<a name="L413"></a><tt class="py-lineno">413</tt>  <tt class="py-line">                        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_errors</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-106" class="py-name"><a title="epydoc.docparser.ParseError
+epydoc.markup.ParseError" class="py-name" href="#" onclick="return doclink('link-106', 'ParseError', 'link-72');">ParseError</a></tt><tt class="py-op">(</tt><tt class="py-name">estr</tt><tt class="py-op">,</tt> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">line</tt><tt class="py-op">,</tt> </tt>
+<a name="L414"></a><tt class="py-lineno">414</tt>  <tt class="py-line">                                                       <tt id="link-107" class="py-name"><a title="epydoc.markup.ParseError.is_fatal" class="py-name" href="#" onclick="return doclink('link-107', 'is_fatal', 'link-65');">is_fatal</a></tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L415"></a><tt class="py-lineno">415</tt>  <tt class="py-line">                         </tt>
+<a name="L416"></a><tt class="py-lineno">416</tt>  <tt class="py-line">                        <tt class="py-comment"># Use a @newfield to let it be displayed as-is.</tt> </tt>
+<a name="L417"></a><tt class="py-lineno">417</tt>  <tt class="py-line"><tt class="py-comment"></tt>                        <tt class="py-keyword">if</tt> <tt class="py-name">tagname</tt><tt class="py-op">.</tt><tt class="py-name">lower</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_newfields</tt><tt class="py-op">:</tt> </tt>
+<a name="L418"></a><tt class="py-lineno">418</tt>  <tt class="py-line">                            <tt class="py-name">newfield</tt> <tt class="py-op">=</tt> <tt id="link-108" class="py-name" targets="Class epydoc.markup.Field=epydoc.markup.Field-class.html"><a title="epydoc.markup.Field" class="py-name" href="#" onclick="return doclink('link-108', 'Field', 'link-108');">Field</a></tt><tt class="py-op">(</tt><tt class="py-string">'newfield'</tt><tt class="py-op">,</tt> <tt class="py-name [...]
+<a name="L419"></a><tt class="py-lineno">419</tt>  <tt class="py-line">                                             <tt id="link-109" class="py-name" targets="Function epydoc.markup.epytext.parse()=epydoc.markup.epytext-module.html#parse,Function epydoc.markup.parse()=epydoc.markup-module.html#parse"><a title="epydoc.markup.epytext.parse
+epydoc.markup.parse" class="py-name" href="#" onclick="return doclink('link-109', 'parse', 'link-109');">parse</a></tt><tt class="py-op">(</tt><tt class="py-name">tagname</tt><tt class="py-op">,</tt> <tt class="py-string">'plaintext'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L420"></a><tt class="py-lineno">420</tt>  <tt class="py-line">                            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">fields</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">newfield</tt><tt class="py-op">)</tt> </tt>
+<a name="L421"></a><tt class="py-lineno">421</tt>  <tt class="py-line">                            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_newfields</tt><tt class="py-op">[</tt><tt class="py-name">tagname</tt><tt class="py-op">.</tt><tt class="py-name">lower</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L422"></a><tt class="py-lineno">422</tt>  <tt class="py-line">                         </tt>
+<a name="L423"></a><tt class="py-lineno">423</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-110" class="py-name" targets="Method epydoc.markup.restructuredtext._SplitFieldsTranslator._add_field()=epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html#_add_field"><a title="epydoc.markup.restructuredtext._SplitFieldsTranslator._add_field" class="py-name" href="#" onclick="return doclink('link-110', '_add_field', 'link-110');">_ [...]
+</div><a name="L424"></a><tt class="py-lineno">424</tt>  <tt class="py-line"> </tt>
+<a name="_SplitFieldsTranslator._add_field"></a><div id="_SplitFieldsTranslator._add_field-def"><a name="L425"></a><tt class="py-lineno">425</tt> <a class="py-toggle" href="#" id="_SplitFieldsTranslator._add_field-toggle" onclick="return toggle('_SplitFieldsTranslator._add_field');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html#_add_field">_add_field</a><tt class="py-op">(</tt><tt [...]
+</div><div id="_SplitFieldsTranslator._add_field-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="_SplitFieldsTranslator._add_field-expanded"><a name="L426"></a><tt class="py-lineno">426</tt>  <tt class="py-line">        <tt class="py-name">field_doc</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-112" class="py-name"><a title="epydoc.gui.document" class="py-name" href="#" onclick="return doclink('link-112', 'docu [...]
+<a name="L427"></a><tt class="py-lineno">427</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">child</tt> <tt class="py-keyword">in</tt> <tt class="py-name">fbody</tt><tt class="py-op">:</tt> <tt class="py-name">field_doc</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">child</tt><tt class="py-op">)</tt> </tt>
+<a name="L428"></a><tt class="py-lineno">428</tt>  <tt class="py-line">        <tt class="py-name">field_pdoc</tt> <tt class="py-op">=</tt> <tt id="link-113" class="py-name"><a title="epydoc.markup.restructuredtext.ParsedRstDocstring" class="py-name" href="#" onclick="return doclink('link-113', 'ParsedRstDocstring', 'link-29');">ParsedRstDocstring</a></tt><tt class="py-op">(</tt><tt class="py-name">field_doc</tt><tt class="py-op">)</tt> </tt>
+<a name="L429"></a><tt class="py-lineno">429</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">fields</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-114" class="py-name"><a title="epydoc.markup.Field" class="py-name" href="#" onclick="return doclink('link-114', 'Field', 'link-108');">Field</a></tt><tt class="py-op">(</tt><tt class="py-name">tagname</tt><tt class="py-op">,</tt> <tt id [...]
+</div><a name="L430"></a><tt class="py-lineno">430</tt>  <tt class="py-line">             </tt>
+<a name="_SplitFieldsTranslator.visit_field_list"></a><div id="_SplitFieldsTranslator.visit_field_list-def"><a name="L431"></a><tt class="py-lineno">431</tt> <a class="py-toggle" href="#" id="_SplitFieldsTranslator.visit_field_list-toggle" onclick="return toggle('_SplitFieldsTranslator.visit_field_list');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html#visit_field_list">visit_field [...]
+</div><div id="_SplitFieldsTranslator.visit_field_list-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="_SplitFieldsTranslator.visit_field_list-expanded"><a name="L432"></a><tt class="py-lineno">432</tt>  <tt class="py-line">        <tt class="py-comment"># Remove the field list from the tree.  The visitor will still walk</tt> </tt>
+<a name="L433"></a><tt class="py-lineno">433</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># over the node's children.</tt> </tt>
+<a name="L434"></a><tt class="py-lineno">434</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">parent</tt><tt class="py-op">.</tt><tt class="py-name">remove</tt><tt class="py-op">(</tt><tt class="py-name">node</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L435"></a><tt class="py-lineno">435</tt>  <tt class="py-line"> </tt>
+<a name="_SplitFieldsTranslator.handle_consolidated_field"></a><div id="_SplitFieldsTranslator.handle_consolidated_field-def"><a name="L436"></a><tt class="py-lineno">436</tt> <a class="py-toggle" href="#" id="_SplitFieldsTranslator.handle_consolidated_field-toggle" onclick="return toggle('_SplitFieldsTranslator.handle_consolidated_field');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.restructuredtext._SplitFieldsTranslator-clas [...]
+</div><div id="_SplitFieldsTranslator.handle_consolidated_field-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="_SplitFieldsTranslator.handle_consolidated_field-expanded"><a name="L437"></a><tt class="py-lineno">437</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L438"></a><tt class="py-lineno">438</tt>  <tt class="py-line"><tt class="py-docstring">        Attempt to handle a consolidated section.</tt> </tt>
+<a name="L439"></a><tt class="py-lineno">439</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L440"></a><tt class="py-lineno">440</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-116" class="py-name"><a title="epydoc.markup.Field.body" class="py-name" href="#" onclick="return doclink('link-116', 'body', 'link-42');">body</a></tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L441"></a><tt class="py-lineno">441</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">'does not contain a single list.'</tt><tt class="py-op">)</tt> </tt>
+<a name="L442"></a><tt class="py-lineno">442</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt id="link-117" class="py-name"><a title="epydoc.markup.Field.body" class="py-name" href="#" onclick="return doclink('link-117', 'body', 'link-42');">body</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">tagname</tt> <tt class="py-op">==</tt> <tt class="py-string">'bullet_list'</tt><tt class="py-op [...]
+<a name="L443"></a><tt class="py-lineno">443</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-118" class="py-name" targets="Method epydoc.markup.restructuredtext._SplitFieldsTranslator.handle_consolidated_bullet_list()=epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html#handle_consolidated_bullet_list"><a title="epydoc.markup.restructuredtext._SplitFieldsTranslator.handle_consolidated_bullet_list" class="py-name" href="# [...]
+<a name="L444"></a><tt class="py-lineno">444</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-op">(</tt><tt id="link-120" class="py-name"><a title="epydoc.markup.Field.body" class="py-name" href="#" onclick="return doclink('link-120', 'body', 'link-42');">body</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">tagname</tt> <tt class="py-op">==</tt> <tt class="py-string">'definitio [...]
+<a name="L445"></a><tt class="py-lineno">445</tt>  <tt class="py-line">              <tt class="py-name">tagname</tt> <tt class="py-keyword">in</tt> <tt id="link-121" class="py-name"><a title="epydoc.markup.restructuredtext.CONSOLIDATED_DEFLIST_FIELDS" class="py-name" href="#" onclick="return doclink('link-121', 'CONSOLIDATED_DEFLIST_FIELDS', 'link-25');">CONSOLIDATED_DEFLIST_FIELDS</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L446"></a><tt class="py-lineno">446</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-122" class="py-name" targets="Method epydoc.markup.restructuredtext._SplitFieldsTranslator.handle_consolidated_definition_list()=epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html#handle_consolidated_definition_list"><a title="epydoc.markup.restructuredtext._SplitFieldsTranslator.handle_consolidated_definition_list" class="py-n [...]
+<a name="L447"></a><tt class="py-lineno">447</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">tagname</tt> <tt class="py-keyword">in</tt> <tt id="link-124" class="py-name"><a title="epydoc.markup.restructuredtext.CONSOLIDATED_DEFLIST_FIELDS" class="py-name" href="#" onclick="return doclink('link-124', 'CONSOLIDATED_DEFLIST_FIELDS', 'link-25');">CONSOLIDATED_DEFLIST_FIELDS</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L448"></a><tt class="py-lineno">448</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">'does not contain a bulleted list or '</tt> </tt>
+<a name="L449"></a><tt class="py-lineno">449</tt>  <tt class="py-line">                             <tt class="py-string">'definition list.'</tt><tt class="py-op">)</tt> </tt>
+<a name="L450"></a><tt class="py-lineno">450</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L451"></a><tt class="py-lineno">451</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">'does not contain a bulleted list.'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L452"></a><tt class="py-lineno">452</tt>  <tt class="py-line"> </tt>
+<a name="_SplitFieldsTranslator.handle_consolidated_bullet_list"></a><div id="_SplitFieldsTranslator.handle_consolidated_bullet_list-def"><a name="L453"></a><tt class="py-lineno">453</tt> <a class="py-toggle" href="#" id="_SplitFieldsTranslator.handle_consolidated_bullet_list-toggle" onclick="return toggle('_SplitFieldsTranslator.handle_consolidated_bullet_list');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.restructuredtext._Sp [...]
+</div><div id="_SplitFieldsTranslator.handle_consolidated_bullet_list-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="_SplitFieldsTranslator.handle_consolidated_bullet_list-expanded"><a name="L454"></a><tt class="py-lineno">454</tt>  <tt class="py-line">        <tt class="py-comment"># Check the contents of the list.  In particular, each list</tt> </tt>
+<a name="L455"></a><tt class="py-lineno">455</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># item should have the form:</tt> </tt>
+<a name="L456"></a><tt class="py-lineno">456</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#   - `arg`: description...</tt> </tt>
+<a name="L457"></a><tt class="py-lineno">457</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">n</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L458"></a><tt class="py-lineno">458</tt>  <tt class="py-line">        <tt class="py-name">_BAD_ITEM</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">"list item %d is not well formed.  Each item must "</tt> </tt>
+<a name="L459"></a><tt class="py-lineno">459</tt>  <tt class="py-line">                     <tt class="py-string">"consist of a single marked identifier (e.g., `x`), "</tt> </tt>
+<a name="L460"></a><tt class="py-lineno">460</tt>  <tt class="py-line">                     <tt class="py-string">"optionally followed by a colon or dash and a "</tt> </tt>
+<a name="L461"></a><tt class="py-lineno">461</tt>  <tt class="py-line">                     <tt class="py-string">"description."</tt><tt class="py-op">)</tt> </tt>
+<a name="L462"></a><tt class="py-lineno">462</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">item</tt> <tt class="py-keyword">in</tt> <tt class="py-name">items</tt><tt class="py-op">:</tt> </tt>
+<a name="L463"></a><tt class="py-lineno">463</tt>  <tt class="py-line">            <tt class="py-name">n</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L464"></a><tt class="py-lineno">464</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">item</tt><tt class="py-op">.</tt><tt class="py-name">tagname</tt> <tt class="py-op">!=</tt> <tt class="py-string">'list_item'</tt> <tt class="py-keyword">or</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">item</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt>  </tt>
+<a name="L465"></a><tt class="py-lineno">465</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">'bad bulleted list (bad child %d).'</tt> <tt class="py-op">%</tt> <tt class="py-name">n</tt><tt class="py-op">)</tt> </tt>
+<a name="L466"></a><tt class="py-lineno">466</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">item</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">tagname</tt> <tt class="py-op">!=</tt> <tt class="py-string">'paragraph'</tt><tt class="py-op">:</tt> </tt>
+<a name="L467"></a><tt class="py-lineno">467</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">item</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">tagname</tt> <tt class="py-op">==</tt> <tt class="py-string">'definition_list'</tt><tt class="py-op">:</tt> </tt>
+<a name="L468"></a><tt class="py-lineno">468</tt>  <tt class="py-line">                    <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-string">'list item %d contains a definition '</tt><tt class="py-op">+</tt> </tt>
+<a name="L469"></a><tt class="py-lineno">469</tt>  <tt class="py-line">                                      <tt class="py-string">'list (it\'s probably indented '</tt><tt class="py-op">+</tt> </tt>
+<a name="L470"></a><tt class="py-lineno">470</tt>  <tt class="py-line">                                      <tt class="py-string">'wrong).'</tt><tt class="py-op">)</tt> <tt class="py-op">%</tt> <tt class="py-name">n</tt><tt class="py-op">)</tt> </tt>
+<a name="L471"></a><tt class="py-lineno">471</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L472"></a><tt class="py-lineno">472</tt>  <tt class="py-line">                    <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-name">_BAD_ITEM</tt> <tt class="py-op">%</tt> <tt class="py-name">n</tt><tt class="py-op">)</tt> </tt>
+<a name="L473"></a><tt class="py-lineno">473</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">item</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt>  </tt>
+<a name="L474"></a><tt class="py-lineno">474</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-name">_BAD_ITEM</tt> <tt class="py-op">%</tt> <tt class="py-name">n</tt><tt class="py-op">)</tt> </tt>
+<a name="L475"></a><tt class="py-lineno">475</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">item</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">tagname</tt> <tt class="py-op">!=</tt> <tt class="py-string">'title_reference'</tt><tt class="py-op">:</tt> </tt>
+<a name="L476"></a><tt class="py-lineno">476</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-name">_BAD_ITEM</tt> <tt class="py-op">%</tt> <tt class="py-name">n</tt><tt class="py-op">)</tt> </tt>
+<a name="L477"></a><tt class="py-lineno">477</tt>  <tt class="py-line"> </tt>
+<a name="L478"></a><tt class="py-lineno">478</tt>  <tt class="py-line">        <tt class="py-comment"># Everything looks good; convert to multiple fields.</tt> </tt>
+<a name="L479"></a><tt class="py-lineno">479</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">for</tt> <tt class="py-name">item</tt> <tt class="py-keyword">in</tt> <tt class="py-name">items</tt><tt class="py-op">:</tt> </tt>
+<a name="L480"></a><tt class="py-lineno">480</tt>  <tt class="py-line">            <tt class="py-comment"># Extract the arg</tt> </tt>
+<a name="L481"></a><tt class="py-lineno">481</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt id="link-125" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-125', 'arg', 'link-100');">arg</a></tt> <tt class="py-op">=</tt> <tt class="py-name">item</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class=" [...]
+<a name="L482"></a><tt class="py-lineno">482</tt>  <tt class="py-line"> </tt>
+<a name="L483"></a><tt class="py-lineno">483</tt>  <tt class="py-line">            <tt class="py-comment"># Extract the field body, and remove the arg</tt> </tt>
+<a name="L484"></a><tt class="py-lineno">484</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">fbody</tt> <tt class="py-op">=</tt> <tt class="py-name">item</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt>
+<a name="L485"></a><tt class="py-lineno">485</tt>  <tt class="py-line">            <tt class="py-name">fbody</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">fbody</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">copy</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L486"></a><tt class="py-lineno">486</tt>  <tt class="py-line">            <tt class="py-name">fbody</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">item</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt>
+<a name="L487"></a><tt class="py-lineno">487</tt>  <tt class="py-line"> </tt>
+<a name="L488"></a><tt class="py-lineno">488</tt>  <tt class="py-line">            <tt class="py-comment"># Remove the separating ":", if present</tt> </tt>
+<a name="L489"></a><tt class="py-lineno">489</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">fbody</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-number">0</tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L490"></a><tt class="py-lineno">490</tt>  <tt class="py-line">                <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">fbody</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">docutils</tt><tt class="py-op">.</tt><tt class="py-name">nodes</tt><tt class="py-op">.</tt><tt class="py-name">Text</tt [...]
+<a name="L491"></a><tt class="py-lineno">491</tt>  <tt class="py-line">                <tt class="py-name">child</tt> <tt class="py-op">=</tt> <tt class="py-name">fbody</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L492"></a><tt class="py-lineno">492</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">child</tt><tt class="py-op">.</tt><tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-keyword">in</tt> <tt class="py-string">':-'</tt><tt class="py-op">:</tt> </tt>
+<a name="L493"></a><tt class="py-lineno">493</tt>  <tt class="py-line">                    <tt class="py-name">child</tt><tt class="py-op">.</tt><tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">child</tt><tt class="py-op">.</tt><tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">lstrip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L494"></a><tt class="py-lineno">494</tt>  <tt class="py-line">                <tt class="py-keyword">elif</tt> <tt class="py-name">child</tt><tt class="py-op">.</tt><tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-number">2</tt><tt class="py-op">]</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-string">' -'</tt><tt class="py-op">,</tt> <tt class="py-string">' :'</tt><tt class="py-op">)</tt><tt class="py-op">:</t [...]
+<a name="L495"></a><tt class="py-lineno">495</tt>  <tt class="py-line">                    <tt class="py-name">child</tt><tt class="py-op">.</tt><tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">child</tt><tt class="py-op">.</tt><tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">lstrip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L496"></a><tt class="py-lineno">496</tt>  <tt class="py-line"> </tt>
+<a name="L497"></a><tt class="py-lineno">497</tt>  <tt class="py-line">            <tt class="py-comment"># Wrap the field body, and add a new field</tt> </tt>
+<a name="L498"></a><tt class="py-lineno">498</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-126" class="py-name"><a title="epydoc.markup.restructuredtext._SplitFieldsTranslator._add_field" class="py-name" href="#" onclick="return doclink('link-126', '_add_field', 'link-110');">_add_field</a></tt><tt class="py-op">(</tt><tt class="py-name">tagname</tt><tt class="py-op">,</tt> <tt id="link-127" class="py-n [...]
+</div><a name="L499"></a><tt class="py-lineno">499</tt>  <tt class="py-line">         </tt>
+<a name="_SplitFieldsTranslator.handle_consolidated_definition_list"></a><div id="_SplitFieldsTranslator.handle_consolidated_definition_list-def"><a name="L500"></a><tt class="py-lineno">500</tt> <a class="py-toggle" href="#" id="_SplitFieldsTranslator.handle_consolidated_definition_list-toggle" onclick="return toggle('_SplitFieldsTranslator.handle_consolidated_definition_list');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.rest [...]
+</div><div id="_SplitFieldsTranslator.handle_consolidated_definition_list-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="_SplitFieldsTranslator.handle_consolidated_definition_list-expanded"><a name="L501"></a><tt class="py-lineno">501</tt>  <tt class="py-line">        <tt class="py-comment"># Check the list contents.</tt> </tt>
+<a name="L502"></a><tt class="py-lineno">502</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">n</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L503"></a><tt class="py-lineno">503</tt>  <tt class="py-line">        <tt class="py-name">_BAD_ITEM</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">"item %d is not well formed.  Each item's term must "</tt> </tt>
+<a name="L504"></a><tt class="py-lineno">504</tt>  <tt class="py-line">                     <tt class="py-string">"consist of a single marked identifier (e.g., `x`), "</tt> </tt>
+<a name="L505"></a><tt class="py-lineno">505</tt>  <tt class="py-line">                     <tt class="py-string">"optionally followed by a space, colon, space, and "</tt> </tt>
+<a name="L506"></a><tt class="py-lineno">506</tt>  <tt class="py-line">                     <tt class="py-string">"a type description."</tt><tt class="py-op">)</tt> </tt>
+<a name="L507"></a><tt class="py-lineno">507</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">item</tt> <tt class="py-keyword">in</tt> <tt class="py-name">items</tt><tt class="py-op">:</tt> </tt>
+<a name="L508"></a><tt class="py-lineno">508</tt>  <tt class="py-line">            <tt class="py-name">n</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L509"></a><tt class="py-lineno">509</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">item</tt><tt class="py-op">.</tt><tt class="py-name">tagname</tt> <tt class="py-op">!=</tt> <tt class="py-string">'definition_list_item'</tt> <tt class="py-keyword">or</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">item</tt><tt class="py-op">)</tt> <tt class="py-op"><</tt> <tt class="py-number">2</tt [...]
+<a name="L510"></a><tt class="py-lineno">510</tt>  <tt class="py-line">                <tt class="py-name">item</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">tagname</tt> <tt class="py-op">!=</tt> <tt class="py-string">'term'</tt> <tt class="py-keyword">or</tt> </tt>
+<a name="L511"></a><tt class="py-lineno">511</tt>  <tt class="py-line">                <tt class="py-name">item</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">tagname</tt> <tt class="py-op">!=</tt> <tt class="py-string">'definition'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L512"></a><tt class="py-lineno">512</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">'bad definition list (bad child %d).'</tt> <tt class="py-op">%</tt> <tt class="py-name">n</tt><tt class="py-op">)</tt> </tt>
+<a name="L513"></a><tt class="py-lineno">513</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">item</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-number">3</tt><tt class="py-op">:</tt> </tt>
+<a name="L514"></a><tt class="py-lineno">514</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-name">_BAD_ITEM</tt> <tt class="py-op">%</tt> <tt class="py-name">n</tt><tt class="py-op">)</tt> </tt>
+<a name="L515"></a><tt class="py-lineno">515</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">item</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">tagname</tt> <tt class="py-op">==</tt> <tt class="py-string">'title_refer [...]
+<a name="L516"></a><tt class="py-lineno">516</tt>  <tt class="py-line">                    <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-128" class="py-name"><a title="epydoc.markup.restructuredtext._SplitFieldsTranslator.ALLOW_UNMARKED_ARG_IN_CONSOLIDATED_FIELD" class="py-name" href="#" onclick="return doclink('link-128', 'ALLOW_UNMARKED_ARG_IN_CONSOLIDATED_FIELD', 'link-94');">ALLOW_UNMARKED_ARG_IN_CONSOLIDATED_FIELD</a></tt> <tt class="py-ke [...]
+<a name="L517"></a><tt class="py-lineno">517</tt>  <tt class="py-line">                     <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">item</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">docutils</tt><tt class="py-op">.</tt><tt class="py-name">nodes</tt><tt class="py-op">.</tt><tt class="py-name">Text [...]
+<a name="L518"></a><tt class="py-lineno">518</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-name">_BAD_ITEM</tt> <tt class="py-op">%</tt> <tt class="py-name">n</tt><tt class="py-op">)</tt> </tt>
+<a name="L519"></a><tt class="py-lineno">519</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">child</tt> <tt class="py-keyword">in</tt> <tt class="py-name">item</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L520"></a><tt class="py-lineno">520</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">child</tt><tt class="py-op">.</tt><tt class="py-name">astext</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-string">''</tt><tt class="py-op">:</tt> </tt>
+<a name="L521"></a><tt class="py-lineno">521</tt>  <tt class="py-line">                    <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-name">_BAD_ITEM</tt> <tt class="py-op">%</tt> <tt class="py-name">n</tt><tt class="py-op">)</tt> </tt>
+<a name="L522"></a><tt class="py-lineno">522</tt>  <tt class="py-line"> </tt>
+<a name="L523"></a><tt class="py-lineno">523</tt>  <tt class="py-line">        <tt class="py-comment"># Extract it.</tt> </tt>
+<a name="L524"></a><tt class="py-lineno">524</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">for</tt> <tt class="py-name">item</tt> <tt class="py-keyword">in</tt> <tt class="py-name">items</tt><tt class="py-op">:</tt> </tt>
+<a name="L525"></a><tt class="py-lineno">525</tt>  <tt class="py-line">            <tt class="py-comment"># The basic field.</tt> </tt>
+<a name="L526"></a><tt class="py-lineno">526</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt id="link-129" class="py-name"><a title="epydoc.markup.Field.arg" class="py-name" href="#" onclick="return doclink('link-129', 'arg', 'link-100');">arg</a></tt> <tt class="py-op">=</tt> <tt class="py-name">item</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class=" [...]
+<a name="L527"></a><tt class="py-lineno">527</tt>  <tt class="py-line">            <tt class="py-name">fbody</tt> <tt class="py-op">=</tt> <tt class="py-name">item</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L528"></a><tt class="py-lineno">528</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-130" class="py-name"><a title="epydoc.markup.restructuredtext._SplitFieldsTranslator._add_field" class="py-name" href="#" onclick="return doclink('link-130', '_add_field', 'link-110');">_add_field</a></tt><tt class="py-op">(</tt><tt class="py-name">tagname</tt><tt class="py-op">,</tt> <tt id="link-131" class="py-name"><a title="epydoc.markup [...]
+<a name="L529"></a><tt class="py-lineno">529</tt>  <tt class="py-line">            <tt class="py-comment"># If there's a classifier, treat it as a type.</tt> </tt>
+<a name="L530"></a><tt class="py-lineno">530</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">item</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">3</tt><tt class="py-op">:</tt> </tt>
+<a name="L531"></a><tt class="py-lineno">531</tt>  <tt class="py-line">                <tt id="link-132" class="py-name" targets="Variable epydoc.apidoc.PropertyDoc.type_descr=epydoc.apidoc.PropertyDoc-class.html#type_descr,Variable epydoc.apidoc.VariableDoc.type_descr=epydoc.apidoc.VariableDoc-class.html#type_descr,Method epydoc.docwriter.html.HTMLWriter.type_descr()=epydoc.docwriter.html.HTMLWriter-class.html#type_descr"><a title="epydoc.apidoc.PropertyDoc.type_descr
+epydoc.apidoc.VariableDoc.type_descr
+epydoc.docwriter.html.HTMLWriter.type_descr" class="py-name" href="#" onclick="return doclink('link-132', 'type_descr', 'link-132');">type_descr</a></tt> <tt class="py-op">=</tt> <tt class="py-name">item</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L532"></a><tt class="py-lineno">532</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-133" class="py-name"><a title="epydoc.markup.restructuredtext._SplitFieldsTranslator._add_field" class="py-name" href="#" onclick="return doclink('link-133', '_add_field', 'link-110');">_add_field</a></tt><tt class="py-op">(</tt><tt class="py-string">'type'</tt><tt class="py-op">,</tt> <tt id="link-134" class="py-name"><a title="epydoc.m [...]
+epydoc.apidoc.VariableDoc.type_descr
+epydoc.docwriter.html.HTMLWriter.type_descr" class="py-name" href="#" onclick="return doclink('link-135', 'type_descr', 'link-132');">type_descr</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L533"></a><tt class="py-lineno">533</tt>  <tt class="py-line"> </tt>
+<a name="_SplitFieldsTranslator.unknown_visit"></a><div id="_SplitFieldsTranslator.unknown_visit-def"><a name="L534"></a><tt class="py-lineno">534</tt> <a class="py-toggle" href="#" id="_SplitFieldsTranslator.unknown_visit-toggle" onclick="return toggle('_SplitFieldsTranslator.unknown_visit');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html#unknown_visit">unknown_visit</a><tt class [...]
+</div><div id="_SplitFieldsTranslator.unknown_visit-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="_SplitFieldsTranslator.unknown_visit-expanded"><a name="L535"></a><tt class="py-lineno">535</tt>  <tt class="py-line">        <tt class="py-docstring">'Ignore all unknown nodes'</tt> </tt>
+</div></div><a name="L536"></a><tt class="py-lineno">536</tt>  <tt class="py-line"> </tt>
+<a name="latex_head_prefix"></a><div id="latex_head_prefix-def"><a name="L537"></a><tt class="py-lineno">537</tt> <a class="py-toggle" href="#" id="latex_head_prefix-toggle" onclick="return toggle('latex_head_prefix');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.restructuredtext-module.html#latex_head_prefix">latex_head_prefix</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="latex_head_prefix-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="latex_head_prefix-expanded"><a name="L538"></a><tt class="py-lineno">538</tt>  <tt class="py-line">    <tt id="link-136" class="py-name"><a title="epydoc.gui.document" class="py-name" href="#" onclick="return doclink('link-136', 'document', 'link-30');">document</a></tt> <tt class="py-op">=</tt> <tt id="link-137" class="py-name"><a title="epydoc.markup.restructuredtext._EpydocReader.n [...]
+<a name="L539"></a><tt class="py-lineno">539</tt>  <tt class="py-line">    <tt class="py-name">translator</tt> <tt class="py-op">=</tt> <tt id="link-138" class="py-name"><a title="epydoc.markup.restructuredtext._EpydocLaTeXTranslator" class="py-name" href="#" onclick="return doclink('link-138', '_EpydocLaTeXTranslator', 'link-43');">_EpydocLaTeXTranslator</a></tt><tt class="py-op">(</tt><tt id="link-139" class="py-name"><a title="epydoc.gui.document" class="py-name" href="#" onclick="ret [...]
+<a name="L540"></a><tt class="py-lineno">540</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">translator</tt><tt class="py-op">.</tt><tt class="py-name">head_prefix</tt> </tt>
+</div><a name="L541"></a><tt class="py-lineno">541</tt>  <tt class="py-line">     </tt>
+<a name="_EpydocLaTeXTranslator"></a><div id="_EpydocLaTeXTranslator-def"><a name="L542"></a><tt class="py-lineno">542</tt> <a class="py-toggle" href="#" id="_EpydocLaTeXTranslator-toggle" onclick="return toggle('_EpydocLaTeXTranslator');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="epydoc.markup.restructuredtext._EpydocLaTeXTranslator-class.html">_EpydocLaTeXTranslator</a><tt class="py-op">(</tt><tt class="py-base-class">LaTeXTranslator</tt><t [...]
+</div><div id="_EpydocLaTeXTranslator-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_EpydocLaTeXTranslator-expanded"><a name="L543"></a><tt class="py-lineno">543</tt>  <tt class="py-line">    <tt id="link-140" class="py-name"><a title="epydoc.markup.restructuredtext._EpydocHTMLTranslator.settings
+epydoc.markup.restructuredtext._EpydocLaTeXTranslator.settings" class="py-name" href="#" onclick="return doclink('link-140', 'settings', 'link-59');">settings</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="_EpydocLaTeXTranslator.__init__"></a><div id="_EpydocLaTeXTranslator.__init__-def"><a name="L544"></a><tt class="py-lineno">544</tt> <a class="py-toggle" href="#" id="_EpydocLaTeXTranslator.__init__-toggle" onclick="return toggle('_EpydocLaTeXTranslator.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.restructuredtext._EpydocLaTeXTranslator-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-p [...]
+</div><div id="_EpydocLaTeXTranslator.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="_EpydocLaTeXTranslator.__init__-expanded"><a name="L545"></a><tt class="py-lineno">545</tt>  <tt class="py-line">        <tt class="py-comment"># Set the document's settings.</tt> </tt>
+<a name="L546"></a><tt class="py-lineno">546</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-141" class="py-name"><a title="epydoc.markup.restructuredtext._EpydocHTMLTranslator.settings
+epydoc.markup.restructuredtext._EpydocLaTeXTranslator.settings" class="py-name" href="#" onclick="return doclink('link-141', 'settings', 'link-59');">settings</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L547"></a><tt class="py-lineno">547</tt>  <tt class="py-line">            <tt id="link-142" class="py-name"><a title="epydoc.markup.restructuredtext._EpydocHTMLTranslator.settings
+epydoc.markup.restructuredtext._EpydocLaTeXTranslator.settings" class="py-name" href="#" onclick="return doclink('link-142', 'settings', 'link-59');">settings</a></tt> <tt class="py-op">=</tt> <tt class="py-name">OptionParser</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">LaTeXWriter</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">get_default_values</tt><tt class="py-o [...]
+<a name="L548"></a><tt class="py-lineno">548</tt>  <tt class="py-line">            <tt id="link-143" class="py-name"><a title="epydoc.markup.restructuredtext._EpydocHTMLTranslator.settings
+epydoc.markup.restructuredtext._EpydocLaTeXTranslator.settings" class="py-name" href="#" onclick="return doclink('link-143', 'settings', 'link-59');">settings</a></tt><tt class="py-op">.</tt><tt class="py-name">output_encoding</tt> <tt class="py-op">=</tt> <tt class="py-string">'utf-8'</tt> </tt>
+<a name="L549"></a><tt class="py-lineno">549</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">.</tt><tt id="link-144" class="py-name"><a title="epydoc.markup.restructuredtext._EpydocHTMLTranslator.settings
+epydoc.markup.restructuredtext._EpydocLaTeXTranslator.settings" class="py-name" href="#" onclick="return doclink('link-144', 'settings', 'link-59');">settings</a></tt> <tt class="py-op">=</tt> <tt id="link-145" class="py-name"><a title="epydoc.markup.restructuredtext._EpydocHTMLTranslator.settings
+epydoc.markup.restructuredtext._EpydocLaTeXTranslator.settings" class="py-name" href="#" onclick="return doclink('link-145', 'settings', 'link-59');">settings</a></tt> </tt>
+<a name="L550"></a><tt class="py-lineno">550</tt>  <tt class="py-line">        <tt id="link-146" class="py-name"><a title="epydoc.gui.document" class="py-name" href="#" onclick="return doclink('link-146', 'document', 'link-30');">document</a></tt><tt class="py-op">.</tt><tt id="link-147" class="py-name"><a title="epydoc.markup.restructuredtext._EpydocHTMLTranslator.settings
+epydoc.markup.restructuredtext._EpydocLaTeXTranslator.settings" class="py-name" href="#" onclick="return doclink('link-147', 'settings', 'link-59');">settings</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-148" class="py-name"><a title="epydoc.markup.restructuredtext._EpydocHTMLTranslator.settings
+epydoc.markup.restructuredtext._EpydocLaTeXTranslator.settings" class="py-name" href="#" onclick="return doclink('link-148', 'settings', 'link-59');">settings</a></tt> </tt>
+<a name="L551"></a><tt class="py-lineno">551</tt>  <tt class="py-line"> </tt>
+<a name="L552"></a><tt class="py-lineno">552</tt>  <tt class="py-line">        <tt class="py-name">LaTeXTranslator</tt><tt class="py-op">.</tt><tt id="link-149" class="py-name"><a title="epydoc.apidoc.APIDoc.__init__
+epydoc.apidoc.DocIndex.__init__
+epydoc.apidoc.DottedName.__init__
+epydoc.apidoc.NamespaceDoc.__init__
+epydoc.apidoc.VariableDoc.__init__
+epydoc.apidoc._Sentinel.__init__
+epydoc.checker.DocChecker.__init__
+epydoc.cli.ConsoleLogger.__init__
+epydoc.cli.HTMLLogger.__init__
+epydoc.cli.TerminalController.__init__
+epydoc.cli.UnifiedProgressConsoleLogger.__init__
+epydoc.docbuilder.BuildOptions.__init__
+epydoc.docbuilder._ProgressEstimator.__init__
+epydoc.docintrospecter._DevNull.__init__
+epydoc.docstringparser.DocstringField.__init__
+epydoc.docwriter.dotgraph.DotGraph.__init__
+epydoc.docwriter.dotgraph.DotGraphEdge.__init__
+epydoc.docwriter.dotgraph.DotGraphNode.__init__
+epydoc.docwriter.dotgraph.DotGraphUmlClassNode.__init__
+epydoc.docwriter.dotgraph.DotGraphUmlModuleNode.__init__
+epydoc.docwriter.html.HTMLWriter.__init__
+epydoc.docwriter.html._HTMLDocstringLinker.__init__
+epydoc.docwriter.html_colorize.PythonSourceColorizer.__init__
+epydoc.docwriter.latex.LatexWriter.__init__
+epydoc.docwriter.xlink.ApiLinkReader.__init__
+epydoc.docwriter.xlink.DocUrlGenerator.__init__
+epydoc.gui.EpydocGUI.__init__
+epydoc.gui.GUILogger.__init__
+epydoc.log.SimpleLogger.__init__
+epydoc.markup.ConcatenatedDocstring.__init__
+epydoc.markup.Field.__init__
+epydoc.markup.ParseError.__init__
+epydoc.markup.epytext.ColorizingError.__init__
+epydoc.markup.epytext.Element.__init__
+epydoc.markup.epytext.ParsedEpytextDocstring.__init__
+epydoc.markup.epytext.Token.__init__
+epydoc.markup.javadoc.ParsedJavadocDocstring.__init__
+epydoc.markup.plaintext.ParsedPlaintextDocstring.__init__
+epydoc.markup.pyval_repr.ColorizedPyvalRepr.__init__
+epydoc.markup.pyval_repr.PyvalColorizer.__init__
+epydoc.markup.pyval_repr._ColorizerState.__init__
+epydoc.markup.restructuredtext.ParsedRstDocstring.__init__
+epydoc.markup.restructuredtext._DocumentPseudoWriter.__init__
+epydoc.markup.restructuredtext._EpydocHTMLTranslator.__init__
+epydoc.markup.restructuredtext._EpydocLaTeXTranslator.__init__
+epydoc.markup.restructuredtext._EpydocReader.__init__
+epydoc.markup.restructuredtext._SplitFieldsTranslator.__init__
+epydoc.markup.restructuredtext._SummaryExtractor.__init__
+epydoc.markup.restructuredtext._TermsExtractor.__init__
+epydoc.markup.restructuredtext.dotgraph.__init__
+epydoc.util.RunSubprocessError.__init__" class="py-name" href="#" onclick="return doclink('link-149', '__init__', 'link-56');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt id="link-150" class="py-name"><a title="epydoc.gui.document" class="py-name" href="#" onclick="return doclink('link-150', 'document', 'link-30');">document</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L553"></a><tt class="py-lineno">553</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_linker</tt> <tt class="py-op">=</tt> <tt class="py-name">docstring_linker</tt> </tt>
+<a name="L554"></a><tt class="py-lineno">554</tt>  <tt class="py-line"> </tt>
+<a name="L555"></a><tt class="py-lineno">555</tt>  <tt class="py-line">        <tt class="py-comment"># Start at section level 3.  (Unfortunately, we now have to</tt> </tt>
+<a name="L556"></a><tt class="py-lineno">556</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># set a private variable to make this work; perhaps the standard</tt> </tt>
+<a name="L557"></a><tt class="py-lineno">557</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># latex translator should grow an official way to spell this?)</tt> </tt>
+<a name="L558"></a><tt class="py-lineno">558</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">section_level</tt> <tt class="py-op">=</tt> <tt class="py-number">3</tt> </tt>
+<a name="L559"></a><tt class="py-lineno">559</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_section_number</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">*</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">section_level</tt> </tt>
+</div><a name="L560"></a><tt class="py-lineno">560</tt>  <tt class="py-line"> </tt>
+<a name="L561"></a><tt class="py-lineno">561</tt>  <tt class="py-line">    <tt class="py-comment"># Handle interpreted text (crossreferences)</tt> </tt>
+<a name="_EpydocLaTeXTranslator.visit_title_reference"></a><div id="_EpydocLaTeXTranslator.visit_title_reference-def"><a name="L562"></a><tt class="py-lineno">562</tt> <a class="py-toggle" href="#" id="_EpydocLaTeXTranslator.visit_title_reference-toggle" onclick="return toggle('_EpydocLaTeXTranslator.visit_title_reference');">-</a><tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.restructuredtext._EpydocLaTeXTra [...]
+</div><div id="_EpydocLaTeXTranslator.visit_title_reference-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="_EpydocLaTeXTranslator.visit_title_reference-expanded"><a name="L563"></a><tt class="py-lineno">563</tt>  <tt class="py-line">        <tt class="py-name">target</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-name">node</tt><tt class="py-op">.</tt><tt  [...]
+<a name="L564"></a><tt class="py-lineno">564</tt>  <tt class="py-line">        <tt class="py-name">xref</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_linker</tt><tt class="py-op">.</tt><tt id="link-151" class="py-name" targets="Method epydoc.docwriter.html._HTMLDocstringLinker.translate_identifier_xref()=epydoc.docwriter.html._HTMLDocstringLinker-class.html#translate_identifier_xref,Method epydoc.docwriter.latex.LatexWriter._Latex [...]
+epydoc.docwriter.latex.LatexWriter._LatexDocstringLinker.translate_identifier_xref
+epydoc.markup.DocstringLinker.translate_identifier_xref" class="py-name" href="#" onclick="return doclink('link-151', 'translate_identifier_xref', 'link-151');">translate_identifier_xref</a></tt><tt class="py-op">(</tt><tt class="py-name">target</tt><tt class="py-op">,</tt> <tt class="py-name">target</tt><tt class="py-op">)</tt> </tt>
+<a name="L565"></a><tt class="py-lineno">565</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-152" class="py-name"><a title="epydoc.markup.Field.body" class="py-name" href="#" onclick="return doclink('link-152', 'body', 'link-42');">body</a></tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">xref</tt><tt class="py-op">)</tt> </tt>
+<a name="L566"></a><tt class="py-lineno">566</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">SkipNode</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L567"></a><tt class="py-lineno">567</tt>  <tt class="py-line"> </tt>
+<a name="_EpydocLaTeXTranslator.visit_document"></a><div id="_EpydocLaTeXTranslator.visit_document-def"><a name="L568"></a><tt class="py-lineno">568</tt> <a class="py-toggle" href="#" id="_EpydocLaTeXTranslator.visit_document-toggle" onclick="return toggle('_EpydocLaTeXTranslator.visit_document');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.restructuredtext._EpydocLaTeXTranslator-class.html#visit_document">visit_document</a><tt [...]
+</div><a name="_EpydocLaTeXTranslator.depart_document"></a><div id="_EpydocLaTeXTranslator.depart_document-def"><a name="L569"></a><tt class="py-lineno">569</tt> <a class="py-toggle" href="#" id="_EpydocLaTeXTranslator.depart_document-toggle" onclick="return toggle('_EpydocLaTeXTranslator.depart_document');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.restructuredtext._EpydocLaTeXTranslator-class.html#depart_document">depart_doc [...]
+</div><a name="L570"></a><tt class="py-lineno">570</tt>  <tt class="py-line"> </tt>
+<a name="L571"></a><tt class="py-lineno">571</tt>  <tt class="py-line">    <tt class="py-comment"># For now, just ignore dotgraphs. [XXX]</tt> </tt>
+<a name="_EpydocLaTeXTranslator.visit_dotgraph"></a><div id="_EpydocLaTeXTranslator.visit_dotgraph-def"><a name="L572"></a><tt class="py-lineno">572</tt> <a class="py-toggle" href="#" id="_EpydocLaTeXTranslator.visit_dotgraph-toggle" onclick="return toggle('_EpydocLaTeXTranslator.visit_dotgraph');">-</a><tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.restructuredtext._EpydocLaTeXTranslator-class.html#visit_dot [...]
+</div><div id="_EpydocLaTeXTranslator.visit_dotgraph-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="_EpydocLaTeXTranslator.visit_dotgraph-expanded"><a name="L573"></a><tt class="py-lineno">573</tt>  <tt class="py-line">        <tt id="link-153" class="py-name" targets="Method epydoc.cli.ConsoleLogger.log()=epydoc.cli.ConsoleLogger-class.html#log,Method epydoc.cli.HTMLLogger.log()=epydoc.cli.HTMLLogger-class.html#log,Method epydoc.gui.GUILogger.log()=epydoc.gu [...]
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-153', 'log', 'link-153');">log</a></tt><tt class="py-op">.</tt><tt id="link-154" class="py-name" targets="Method epydoc.checker.DocChecker.warning()=epydoc.checker.DocChecker-class.html#warning,Function epydoc.log.warning()=epydoc.log-module.html#warning"><a title="epydoc.checker.DocChecker.warning
+epydoc.log.warning" class="py-name" href="#" onclick="return doclink('link-154', 'warning', 'link-154');">warning</a></tt><tt class="py-op">(</tt><tt class="py-string">"Ignoring dotgraph in latex output (dotgraph "</tt> </tt>
+<a name="L574"></a><tt class="py-lineno">574</tt>  <tt class="py-line">                    <tt class="py-string">"rendering for latex not implemented yet)."</tt><tt class="py-op">)</tt> </tt>
+<a name="L575"></a><tt class="py-lineno">575</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">SkipNode</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L576"></a><tt class="py-lineno">576</tt>  <tt class="py-line">     </tt>
+<a name="_EpydocLaTeXTranslator.visit_doctest_block"></a><div id="_EpydocLaTeXTranslator.visit_doctest_block-def"><a name="L577"></a><tt class="py-lineno">577</tt> <a class="py-toggle" href="#" id="_EpydocLaTeXTranslator.visit_doctest_block-toggle" onclick="return toggle('_EpydocLaTeXTranslator.visit_doctest_block');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.restructuredtext._EpydocLaTeXTranslator-class.html#visit_doctest_blo [...]
+</div><div id="_EpydocLaTeXTranslator.visit_doctest_block-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="_EpydocLaTeXTranslator.visit_doctest_block-expanded"><a name="L578"></a><tt class="py-lineno">578</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-155" class="py-name"><a title="epydoc.markup.Field.body" class="py-name" href="#" onclick="return doclink('link-155', 'body', 'link-42');">body</a></tt><tt clas [...]
+<a name="L579"></a><tt class="py-lineno">579</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">SkipNode</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L580"></a><tt class="py-lineno">580</tt>  <tt class="py-line"> </tt>
+<a name="_EpydocHTMLTranslator"></a><div id="_EpydocHTMLTranslator-def"><a name="L581"></a><tt class="py-lineno">581</tt> <a class="py-toggle" href="#" id="_EpydocHTMLTranslator-toggle" onclick="return toggle('_EpydocHTMLTranslator');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="epydoc.markup.restructuredtext._EpydocHTMLTranslator-class.html">_EpydocHTMLTranslator</a><tt class="py-op">(</tt><tt class="py-base-class">HTMLTranslator</tt><tt class [...]
+</div><div id="_EpydocHTMLTranslator-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_EpydocHTMLTranslator-expanded"><a name="L582"></a><tt class="py-lineno">582</tt>  <tt class="py-line">    <tt id="link-157" class="py-name"><a title="epydoc.markup.restructuredtext._EpydocHTMLTranslator.settings
+epydoc.markup.restructuredtext._EpydocLaTeXTranslator.settings" class="py-name" href="#" onclick="return doclink('link-157', 'settings', 'link-59');">settings</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="_EpydocHTMLTranslator.__init__"></a><div id="_EpydocHTMLTranslator.__init__-def"><a name="L583"></a><tt class="py-lineno">583</tt> <a class="py-toggle" href="#" id="_EpydocHTMLTranslator.__init__-toggle" onclick="return toggle('_EpydocHTMLTranslator.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.restructuredtext._EpydocHTMLTranslator-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param" [...]
+<a name="L584"></a><tt class="py-lineno">584</tt>  <tt class="py-line">                 <tt class="py-param">docindex</tt><tt class="py-op">,</tt> <tt class="py-param">context</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_EpydocHTMLTranslator.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="_EpydocHTMLTranslator.__init__-expanded"><a name="L585"></a><tt class="py-lineno">585</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_linker</tt> <tt class="py-op">=</tt> <tt class="py-name">docstring_linker</tt> </tt>
+<a name="L586"></a><tt class="py-lineno">586</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_directory</tt> <tt class="py-op">=</tt> <tt class="py-name">directory</tt> </tt>
+<a name="L587"></a><tt class="py-lineno">587</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_docindex</tt> <tt class="py-op">=</tt> <tt class="py-name">docindex</tt> </tt>
+<a name="L588"></a><tt class="py-lineno">588</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_context</tt> <tt class="py-op">=</tt> <tt class="py-name">context</tt> </tt>
+<a name="L589"></a><tt class="py-lineno">589</tt>  <tt class="py-line">         </tt>
+<a name="L590"></a><tt class="py-lineno">590</tt>  <tt class="py-line">        <tt class="py-comment"># Set the document's settings.</tt> </tt>
+<a name="L591"></a><tt class="py-lineno">591</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-158" class="py-name"><a title="epydoc.markup.restructuredtext._EpydocHTMLTranslator.settings
+epydoc.markup.restructuredtext._EpydocLaTeXTranslator.settings" class="py-name" href="#" onclick="return doclink('link-158', 'settings', 'link-59');">settings</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L592"></a><tt class="py-lineno">592</tt>  <tt class="py-line">            <tt id="link-159" class="py-name"><a title="epydoc.markup.restructuredtext._EpydocHTMLTranslator.settings
+epydoc.markup.restructuredtext._EpydocLaTeXTranslator.settings" class="py-name" href="#" onclick="return doclink('link-159', 'settings', 'link-59');">settings</a></tt> <tt class="py-op">=</tt> <tt class="py-name">OptionParser</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt id="link-160" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter" class="py-name" href="#" onclick="return doclink('link-160', 'HTMLWriter', 'link-1');">HTMLWriter</a></tt><tt class="py-op">(</tt><tt cl [...]
+<a name="L593"></a><tt class="py-lineno">593</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">.</tt><tt id="link-161" class="py-name"><a title="epydoc.markup.restructuredtext._EpydocHTMLTranslator.settings
+epydoc.markup.restructuredtext._EpydocLaTeXTranslator.settings" class="py-name" href="#" onclick="return doclink('link-161', 'settings', 'link-59');">settings</a></tt> <tt class="py-op">=</tt> <tt id="link-162" class="py-name"><a title="epydoc.markup.restructuredtext._EpydocHTMLTranslator.settings
+epydoc.markup.restructuredtext._EpydocLaTeXTranslator.settings" class="py-name" href="#" onclick="return doclink('link-162', 'settings', 'link-59');">settings</a></tt> </tt>
+<a name="L594"></a><tt class="py-lineno">594</tt>  <tt class="py-line">        <tt id="link-163" class="py-name"><a title="epydoc.gui.document" class="py-name" href="#" onclick="return doclink('link-163', 'document', 'link-30');">document</a></tt><tt class="py-op">.</tt><tt id="link-164" class="py-name"><a title="epydoc.markup.restructuredtext._EpydocHTMLTranslator.settings
+epydoc.markup.restructuredtext._EpydocLaTeXTranslator.settings" class="py-name" href="#" onclick="return doclink('link-164', 'settings', 'link-59');">settings</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-165" class="py-name"><a title="epydoc.markup.restructuredtext._EpydocHTMLTranslator.settings
+epydoc.markup.restructuredtext._EpydocLaTeXTranslator.settings" class="py-name" href="#" onclick="return doclink('link-165', 'settings', 'link-59');">settings</a></tt> </tt>
+<a name="L595"></a><tt class="py-lineno">595</tt>  <tt class="py-line"> </tt>
+<a name="L596"></a><tt class="py-lineno">596</tt>  <tt class="py-line">        <tt class="py-comment"># Call the parent constructor.</tt> </tt>
+<a name="L597"></a><tt class="py-lineno">597</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">HTMLTranslator</tt><tt class="py-op">.</tt><tt id="link-166" class="py-name"><a title="epydoc.apidoc.APIDoc.__init__
+epydoc.apidoc.DocIndex.__init__
+epydoc.apidoc.DottedName.__init__
+epydoc.apidoc.NamespaceDoc.__init__
+epydoc.apidoc.VariableDoc.__init__
+epydoc.apidoc._Sentinel.__init__
+epydoc.checker.DocChecker.__init__
+epydoc.cli.ConsoleLogger.__init__
+epydoc.cli.HTMLLogger.__init__
+epydoc.cli.TerminalController.__init__
+epydoc.cli.UnifiedProgressConsoleLogger.__init__
+epydoc.docbuilder.BuildOptions.__init__
+epydoc.docbuilder._ProgressEstimator.__init__
+epydoc.docintrospecter._DevNull.__init__
+epydoc.docstringparser.DocstringField.__init__
+epydoc.docwriter.dotgraph.DotGraph.__init__
+epydoc.docwriter.dotgraph.DotGraphEdge.__init__
+epydoc.docwriter.dotgraph.DotGraphNode.__init__
+epydoc.docwriter.dotgraph.DotGraphUmlClassNode.__init__
+epydoc.docwriter.dotgraph.DotGraphUmlModuleNode.__init__
+epydoc.docwriter.html.HTMLWriter.__init__
+epydoc.docwriter.html._HTMLDocstringLinker.__init__
+epydoc.docwriter.html_colorize.PythonSourceColorizer.__init__
+epydoc.docwriter.latex.LatexWriter.__init__
+epydoc.docwriter.xlink.ApiLinkReader.__init__
+epydoc.docwriter.xlink.DocUrlGenerator.__init__
+epydoc.gui.EpydocGUI.__init__
+epydoc.gui.GUILogger.__init__
+epydoc.log.SimpleLogger.__init__
+epydoc.markup.ConcatenatedDocstring.__init__
+epydoc.markup.Field.__init__
+epydoc.markup.ParseError.__init__
+epydoc.markup.epytext.ColorizingError.__init__
+epydoc.markup.epytext.Element.__init__
+epydoc.markup.epytext.ParsedEpytextDocstring.__init__
+epydoc.markup.epytext.Token.__init__
+epydoc.markup.javadoc.ParsedJavadocDocstring.__init__
+epydoc.markup.plaintext.ParsedPlaintextDocstring.__init__
+epydoc.markup.pyval_repr.ColorizedPyvalRepr.__init__
+epydoc.markup.pyval_repr.PyvalColorizer.__init__
+epydoc.markup.pyval_repr._ColorizerState.__init__
+epydoc.markup.restructuredtext.ParsedRstDocstring.__init__
+epydoc.markup.restructuredtext._DocumentPseudoWriter.__init__
+epydoc.markup.restructuredtext._EpydocHTMLTranslator.__init__
+epydoc.markup.restructuredtext._EpydocLaTeXTranslator.__init__
+epydoc.markup.restructuredtext._EpydocReader.__init__
+epydoc.markup.restructuredtext._SplitFieldsTranslator.__init__
+epydoc.markup.restructuredtext._SummaryExtractor.__init__
+epydoc.markup.restructuredtext._TermsExtractor.__init__
+epydoc.markup.restructuredtext.dotgraph.__init__
+epydoc.util.RunSubprocessError.__init__" class="py-name" href="#" onclick="return doclink('link-166', '__init__', 'link-56');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt id="link-167" class="py-name"><a title="epydoc.gui.document" class="py-name" href="#" onclick="return doclink('link-167', 'document', 'link-30');">document</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L598"></a><tt class="py-lineno">598</tt>  <tt class="py-line"> </tt>
+<a name="L599"></a><tt class="py-lineno">599</tt>  <tt class="py-line">    <tt class="py-comment"># Handle interpreted text (crossreferences)</tt> </tt>
+<a name="_EpydocHTMLTranslator.visit_title_reference"></a><div id="_EpydocHTMLTranslator.visit_title_reference-def"><a name="L600"></a><tt class="py-lineno">600</tt> <a class="py-toggle" href="#" id="_EpydocHTMLTranslator.visit_title_reference-toggle" onclick="return toggle('_EpydocHTMLTranslator.visit_title_reference');">-</a><tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.restructuredtext._EpydocHTMLTranslat [...]
+</div><div id="_EpydocHTMLTranslator.visit_title_reference-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="_EpydocHTMLTranslator.visit_title_reference-expanded"><a name="L601"></a><tt class="py-lineno">601</tt>  <tt class="py-line">        <tt class="py-name">target</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-name">node</tt><tt class="py-op">.</tt><tt cl [...]
+<a name="L602"></a><tt class="py-lineno">602</tt>  <tt class="py-line">        <tt class="py-name">xref</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_linker</tt><tt class="py-op">.</tt><tt id="link-168" class="py-name"><a title="epydoc.docwriter.html._HTMLDocstringLinker.translate_identifier_xref
+epydoc.docwriter.latex.LatexWriter._LatexDocstringLinker.translate_identifier_xref
+epydoc.markup.DocstringLinker.translate_identifier_xref" class="py-name" href="#" onclick="return doclink('link-168', 'translate_identifier_xref', 'link-151');">translate_identifier_xref</a></tt><tt class="py-op">(</tt><tt class="py-name">target</tt><tt class="py-op">,</tt> <tt class="py-name">target</tt><tt class="py-op">)</tt> </tt>
+<a name="L603"></a><tt class="py-lineno">603</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-169" class="py-name"><a title="epydoc.markup.Field.body" class="py-name" href="#" onclick="return doclink('link-169', 'body', 'link-42');">body</a></tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">xref</tt><tt class="py-op">)</tt> </tt>
+<a name="L604"></a><tt class="py-lineno">604</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">SkipNode</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L605"></a><tt class="py-lineno">605</tt>  <tt class="py-line"> </tt>
+<a name="_EpydocHTMLTranslator.should_be_compact_paragraph"></a><div id="_EpydocHTMLTranslator.should_be_compact_paragraph-def"><a name="L606"></a><tt class="py-lineno">606</tt> <a class="py-toggle" href="#" id="_EpydocHTMLTranslator.should_be_compact_paragraph-toggle" onclick="return toggle('_EpydocHTMLTranslator.should_be_compact_paragraph');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.restructuredtext._EpydocHTMLTranslator-c [...]
+</div><div id="_EpydocHTMLTranslator.should_be_compact_paragraph-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="_EpydocHTMLTranslator.should_be_compact_paragraph-expanded"><a name="L607"></a><tt class="py-lineno">607</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-170" class="py-name"><a title="epydoc.gui.document" class="py-name" href="#" onclick="return doclink('link-170', 'd [...]
+<a name="L608"></a><tt class="py-lineno">608</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
+<a name="L609"></a><tt class="py-lineno">609</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L610"></a><tt class="py-lineno">610</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">HTMLTranslator</tt><tt class="py-op">.</tt><tt id="link-171" class="py-name" targets="Method epydoc.markup.restructuredtext._EpydocHTMLTranslator.should_be_compact_paragraph()=epydoc.markup.restructuredtext._EpydocHTMLTranslator-class.html#should_be_compact_paragraph"><a title="epydoc.markup.restructuredtext._EpydocHTMLTranslator.should_be_compact_para [...]
+</div><a name="L611"></a><tt class="py-lineno">611</tt>  <tt class="py-line"> </tt>
+<a name="_EpydocHTMLTranslator.visit_document"></a><div id="_EpydocHTMLTranslator.visit_document-def"><a name="L612"></a><tt class="py-lineno">612</tt> <a class="py-toggle" href="#" id="_EpydocHTMLTranslator.visit_document-toggle" onclick="return toggle('_EpydocHTMLTranslator.visit_document');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.restructuredtext._EpydocHTMLTranslator-class.html#visit_document">visit_document</a><tt clas [...]
+</div><a name="_EpydocHTMLTranslator.depart_document"></a><div id="_EpydocHTMLTranslator.depart_document-def"><a name="L613"></a><tt class="py-lineno">613</tt> <a class="py-toggle" href="#" id="_EpydocHTMLTranslator.depart_document-toggle" onclick="return toggle('_EpydocHTMLTranslator.depart_document');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.restructuredtext._EpydocHTMLTranslator-class.html#depart_document">depart_document [...]
+</div><a name="L614"></a><tt class="py-lineno">614</tt>  <tt class="py-line">         </tt>
+<a name="_EpydocHTMLTranslator.starttag"></a><div id="_EpydocHTMLTranslator.starttag-def"><a name="L615"></a><tt class="py-lineno">615</tt> <a class="py-toggle" href="#" id="_EpydocHTMLTranslator.starttag-toggle" onclick="return toggle('_EpydocHTMLTranslator.starttag');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.restructuredtext._EpydocHTMLTranslator-class.html#starttag">starttag</a><tt class="py-op">(</tt><tt class="py-param" [...]
+</div><div id="_EpydocHTMLTranslator.starttag-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="_EpydocHTMLTranslator.starttag-expanded"><a name="L616"></a><tt class="py-lineno">616</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L617"></a><tt class="py-lineno">617</tt>  <tt class="py-line"><tt class="py-docstring">        This modified version of starttag makes a few changes to HTML</tt> </tt>
+<a name="L618"></a><tt class="py-lineno">618</tt>  <tt class="py-line"><tt class="py-docstring">        tags, to prevent them from conflicting with epydoc.  In particular:</tt> </tt>
+<a name="L619"></a><tt class="py-lineno">619</tt>  <tt class="py-line"><tt class="py-docstring">          - existing class attributes are prefixed with C{'rst-'}</tt> </tt>
+<a name="L620"></a><tt class="py-lineno">620</tt>  <tt class="py-line"><tt class="py-docstring">          - existing names are prefixed with C{'rst-'}</tt> </tt>
+<a name="L621"></a><tt class="py-lineno">621</tt>  <tt class="py-line"><tt class="py-docstring">          - hrefs starting with C{'#'} are prefixed with C{'rst-'}</tt> </tt>
+<a name="L622"></a><tt class="py-lineno">622</tt>  <tt class="py-line"><tt class="py-docstring">          - hrefs not starting with C{'#'} are given target='_top'</tt> </tt>
+<a name="L623"></a><tt class="py-lineno">623</tt>  <tt class="py-line"><tt class="py-docstring">          - all headings (C{<hM{n}>}) are given the css class C{'heading'}</tt> </tt>
+<a name="L624"></a><tt class="py-lineno">624</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L625"></a><tt class="py-lineno">625</tt>  <tt class="py-line">        <tt class="py-comment"># Get the list of all attribute dictionaries we need to munge.</tt> </tt>
+<a name="L626"></a><tt class="py-lineno">626</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">attr_dicts</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">attributes</tt><tt class="py-op">]</tt> </tt>
+<a name="L627"></a><tt class="py-lineno">627</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">node</tt><tt class="py-op">,</tt> <tt class="py-name">docutils</tt><tt class="py-op">.</tt><tt class="py-name">nodes</tt><tt class="py-op">.</tt><tt class="py-name">Node</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L628"></a><tt class="py-lineno">628</tt>  <tt class="py-line">            <tt class="py-name">attr_dicts</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">attributes</tt><tt class="py-op">)</tt> </tt>
+<a name="L629"></a><tt class="py-lineno">629</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">node</tt><tt class="py-op">,</tt> <tt class="py-name">dict</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L630"></a><tt class="py-lineno">630</tt>  <tt class="py-line">            <tt class="py-name">attr_dicts</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">node</tt><tt class="py-op">)</tt> </tt>
+<a name="L631"></a><tt class="py-lineno">631</tt>  <tt class="py-line">        <tt class="py-comment"># Munge each attribute dictionary.  Unfortunately, we need to</tt> </tt>
+<a name="L632"></a><tt class="py-lineno">632</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># iterate through attributes one at a time because some</tt> </tt>
+<a name="L633"></a><tt class="py-lineno">633</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># versions of docutils don't case-normalize attributes.</tt> </tt>
+<a name="L634"></a><tt class="py-lineno">634</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">for</tt> <tt class="py-name">attr_dict</tt> <tt class="py-keyword">in</tt> <tt class="py-name">attr_dicts</tt><tt class="py-op">:</tt> </tt>
+<a name="L635"></a><tt class="py-lineno">635</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-op">(</tt><tt id="link-172" class="py-name" targets="Variable epydoc.cli.key=epydoc.cli-module.html#key"><a title="epydoc.cli.key" class="py-name" href="#" onclick="return doclink('link-172', 'key', 'link-172');">key</a></tt><tt class="py-op">,</tt> <tt class="py-name">val</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-name">attr_dict [...]
+<a name="L636"></a><tt class="py-lineno">636</tt>  <tt class="py-line">                <tt class="py-comment"># Prefix all CSS classes with "rst-"; and prefix all</tt> </tt>
+<a name="L637"></a><tt class="py-lineno">637</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-comment"># names with "rst-" to avoid conflicts.</tt> </tt>
+<a name="L638"></a><tt class="py-lineno">638</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-keyword">if</tt> <tt id="link-173" class="py-name"><a title="epydoc.cli.key" class="py-name" href="#" onclick="return doclink('link-173', 'key', 'link-172');">key</a></tt><tt class="py-op">.</tt><tt class="py-name">lower</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-string">'class'</tt> [...]
+<a name="L639"></a><tt class="py-lineno">639</tt>  <tt class="py-line">                    <tt class="py-name">attr_dict</tt><tt class="py-op">[</tt><tt id="link-174" class="py-name"><a title="epydoc.cli.key" class="py-name" href="#" onclick="return doclink('link-174', 'key', 'link-172');">key</a></tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">'rst-%s'</tt> <tt class="py-op">%</tt> <tt class="py-name">val</tt> </tt>
+<a name="L640"></a><tt class="py-lineno">640</tt>  <tt class="py-line">                <tt class="py-keyword">elif</tt> <tt id="link-175" class="py-name"><a title="epydoc.cli.key" class="py-name" href="#" onclick="return doclink('link-175', 'key', 'link-172');">key</a></tt><tt class="py-op">.</tt><tt class="py-name">lower</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-string">'classes'</tt><tt class="py-op">,</tt> [...]
+<a name="L641"></a><tt class="py-lineno">641</tt>  <tt class="py-line">                    <tt class="py-name">attr_dict</tt><tt class="py-op">[</tt><tt id="link-176" class="py-name"><a title="epydoc.cli.key" class="py-name" href="#" onclick="return doclink('link-176', 'key', 'link-172');">key</a></tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-string">'rst-%s'</tt> <tt class="py-op">%</tt> <tt class="py-name">cls</tt> <tt class="py-keyword">fo [...]
+<a name="L642"></a><tt class="py-lineno">642</tt>  <tt class="py-line">                <tt class="py-keyword">elif</tt> <tt id="link-177" class="py-name"><a title="epydoc.cli.key" class="py-name" href="#" onclick="return doclink('link-177', 'key', 'link-172');">key</a></tt><tt class="py-op">.</tt><tt class="py-name">lower</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-string">'href'</tt><tt class="py-op">:</tt> </tt>
+<a name="L643"></a><tt class="py-lineno">643</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">attr_dict</tt><tt class="py-op">[</tt><tt id="link-178" class="py-name"><a title="epydoc.cli.key" class="py-name" href="#" onclick="return doclink('link-178', 'key', 'link-172');">key</a></tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">==</tt><tt class [...]
+<a name="L644"></a><tt class="py-lineno">644</tt>  <tt class="py-line">                        <tt class="py-name">attr_dict</tt><tt class="py-op">[</tt><tt id="link-179" class="py-name"><a title="epydoc.cli.key" class="py-name" href="#" onclick="return doclink('link-179', 'key', 'link-172');">key</a></tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">'#rst-%s'</tt> <tt class="py-op">%</tt> <tt class="py-name">attr_dict</tt><tt class="py-op">[</tt><tt id="link-18 [...]
+<a name="L645"></a><tt class="py-lineno">645</tt>  <tt class="py-line">                    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L646"></a><tt class="py-lineno">646</tt>  <tt class="py-line">                        <tt class="py-comment"># If it's an external link, open it in a new</tt> </tt>
+<a name="L647"></a><tt class="py-lineno">647</tt>  <tt class="py-line"><tt class="py-comment"></tt>                        <tt class="py-comment"># page.</tt> </tt>
+<a name="L648"></a><tt class="py-lineno">648</tt>  <tt class="py-line"><tt class="py-comment"></tt>                        <tt class="py-name">attr_dict</tt><tt class="py-op">[</tt><tt class="py-string">'target'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">'_top'</tt> </tt>
+<a name="L649"></a><tt class="py-lineno">649</tt>  <tt class="py-line"> </tt>
+<a name="L650"></a><tt class="py-lineno">650</tt>  <tt class="py-line">        <tt class="py-comment"># For headings, use class="heading"</tt> </tt>
+<a name="L651"></a><tt class="py-lineno">651</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">match</tt><tt class="py-op">(</tt><tt class="py-string">r'^h\d+$'</tt><tt class="py-op">,</tt> <tt class="py-name">tagname</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L652"></a><tt class="py-lineno">652</tt>  <tt class="py-line">            <tt class="py-name">attributes</tt><tt class="py-op">[</tt><tt class="py-string">'class'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">' '</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">attributes</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'c [...]
+<a name="L653"></a><tt class="py-lineno">653</tt>  <tt class="py-line">                                            <tt class="py-string">'heading'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">strip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L654"></a><tt class="py-lineno">654</tt>  <tt class="py-line">         </tt>
+<a name="L655"></a><tt class="py-lineno">655</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">HTMLTranslator</tt><tt class="py-op">.</tt><tt id="link-181" class="py-name" targets="Method epydoc.markup.restructuredtext._EpydocHTMLTranslator.starttag()=epydoc.markup.restructuredtext._EpydocHTMLTranslator-class.html#starttag"><a title="epydoc.markup.restructuredtext._EpydocHTMLTranslator.starttag" class="py-name" href="#" onclick="return doclink('link [...]
+<a name="L656"></a><tt class="py-lineno">656</tt>  <tt class="py-line">                                       <tt class="py-op">**</tt><tt class="py-name">attributes</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L657"></a><tt class="py-lineno">657</tt>  <tt class="py-line"> </tt>
+<a name="_EpydocHTMLTranslator.visit_dotgraph"></a><div id="_EpydocHTMLTranslator.visit_dotgraph-def"><a name="L658"></a><tt class="py-lineno">658</tt> <a class="py-toggle" href="#" id="_EpydocHTMLTranslator.visit_dotgraph-toggle" onclick="return toggle('_EpydocHTMLTranslator.visit_dotgraph');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.restructuredtext._EpydocHTMLTranslator-class.html#visit_dotgraph">visit_dotgraph</a><tt clas [...]
+</div><div id="_EpydocHTMLTranslator.visit_dotgraph-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="_EpydocHTMLTranslator.visit_dotgraph-expanded"><a name="L659"></a><tt class="py-lineno">659</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_directory</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt [...]
+<a name="L660"></a><tt class="py-lineno">660</tt>  <tt class="py-line">         </tt>
+<a name="L661"></a><tt class="py-lineno">661</tt>  <tt class="py-line">        <tt class="py-comment"># Generate the graph.</tt> </tt>
+<a name="L662"></a><tt class="py-lineno">662</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt id="link-182" class="py-name" targets="Method epydoc.markup.restructuredtext.dotgraph.graph()=epydoc.markup.restructuredtext.dotgraph-class.html#graph"><a title="epydoc.markup.restructuredtext.dotgraph.graph" class="py-name" href="#" onclick="return doclink('link-182', 'graph', 'link-182');">graph</a></tt> <tt class="py-op">=</tt> <tt class="py-name">node</tt><tt class="py-op">. [...]
+<a name="L663"></a><tt class="py-lineno">663</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-184" class="py-name"><a title="epydoc.markup.restructuredtext.dotgraph.graph" class="py-name" href="#" onclick="return doclink('link-184', 'graph', 'link-182');">graph</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> </tt>
+<a name="L664"></a><tt class="py-lineno">664</tt>  <tt class="py-line">         </tt>
+<a name="L665"></a><tt class="py-lineno">665</tt>  <tt class="py-line">        <tt class="py-comment"># Write the graph.</tt> </tt>
+<a name="L666"></a><tt class="py-lineno">666</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">image_url</tt> <tt class="py-op">=</tt> <tt class="py-string">'%s.gif'</tt> <tt class="py-op">%</tt> <tt id="link-185" class="py-name"><a title="epydoc.markup.restructuredtext.dotgraph.graph" class="py-name" href="#" onclick="return doclink('link-185', 'graph', 'link-182');">graph</a></tt><tt class="py-op">.</tt><tt class="py-name">uid</tt> </tt>
+<a name="L667"></a><tt class="py-lineno">667</tt>  <tt class="py-line">        <tt class="py-name">image_file</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-186" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-186', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt [...]
+<a name="L668"></a><tt class="py-lineno">668</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-187" class="py-name"><a title="epydoc.markup.Field.body" class="py-name" href="#" onclick="return doclink('link-187', 'body', 'link-42');">body</a></tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-188" class="py-name"><a title="epydoc.markup.restructuredtext.dotgraph.graph" class="py-name" href="#"  [...]
+epydoc.markup.ConcatenatedDocstring.to_html
+epydoc.markup.ParsedDocstring.to_html
+epydoc.markup.epytext.ParsedEpytextDocstring.to_html
+epydoc.markup.javadoc.ParsedJavadocDocstring.to_html
+epydoc.markup.plaintext.ParsedPlaintextDocstring.to_html
+epydoc.markup.restructuredtext.ParsedRstDocstring.to_html" class="py-name" href="#" onclick="return doclink('link-189', 'to_html', 'link-189');">to_html</a></tt><tt class="py-op">(</tt><tt class="py-name">image_file</tt><tt class="py-op">,</tt> <tt class="py-name">image_url</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L669"></a><tt class="py-lineno">669</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">SkipNode</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L670"></a><tt class="py-lineno">670</tt>  <tt class="py-line"> </tt>
+<a name="_EpydocHTMLTranslator.visit_doctest_block"></a><div id="_EpydocHTMLTranslator.visit_doctest_block-def"><a name="L671"></a><tt class="py-lineno">671</tt> <a class="py-toggle" href="#" id="_EpydocHTMLTranslator.visit_doctest_block-toggle" onclick="return toggle('_EpydocHTMLTranslator.visit_doctest_block');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.restructuredtext._EpydocHTMLTranslator-class.html#visit_doctest_block">v [...]
+</div><div id="_EpydocHTMLTranslator.visit_doctest_block-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="_EpydocHTMLTranslator.visit_doctest_block-expanded"><a name="L672"></a><tt class="py-lineno">672</tt>  <tt class="py-line">        <tt class="py-name">pysrc</tt> <tt class="py-op">=</tt> <tt class="py-name">node</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">astext</tt><tt class="p [...]
+<a name="L673"></a><tt class="py-lineno">673</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'codeblock'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L674"></a><tt class="py-lineno">674</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-190" class="py-name"><a title="epydoc.markup.Field.body" class="py-name" href="#" onclick="return doclink('link-190', 'body', 'link-42');">body</a></tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-191" class="py-name"><a title="epydoc.markup.doctest.HTMLDoctestColorizer" class="py-name" href="#" [...]
+<a name="L675"></a><tt class="py-lineno">675</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L676"></a><tt class="py-lineno">676</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-193" class="py-name"><a title="epydoc.markup.Field.body" class="py-name" href="#" onclick="return doclink('link-193', 'body', 'link-42');">body</a></tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-194" class="py-name"><a title="epydoc.markup.doctest.doctest_to_html" class="py-name" href="#" oncl [...]
+<a name="L677"></a><tt class="py-lineno">677</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">SkipNode</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L678"></a><tt class="py-lineno">678</tt>  <tt class="py-line"> </tt>
+<a name="_EpydocHTMLTranslator.visit_emphasis"></a><div id="_EpydocHTMLTranslator.visit_emphasis-def"><a name="L679"></a><tt class="py-lineno">679</tt> <a class="py-toggle" href="#" id="_EpydocHTMLTranslator.visit_emphasis-toggle" onclick="return toggle('_EpydocHTMLTranslator.visit_emphasis');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.restructuredtext._EpydocHTMLTranslator-class.html#visit_emphasis">visit_emphasis</a><tt clas [...]
+</div><div id="_EpydocHTMLTranslator.visit_emphasis-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="_EpydocHTMLTranslator.visit_emphasis-expanded"><a name="L680"></a><tt class="py-lineno">680</tt>  <tt class="py-line">        <tt class="py-comment"># Generate a corrent index term anchor</tt> </tt>
+<a name="L681"></a><tt class="py-lineno">681</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-string">'term'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'classes'</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">children</tt><tt c [...]
+<a name="L682"></a><tt class="py-lineno">682</tt>  <tt class="py-line">            <tt class="py-name">doc</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-195" class="py-name"><a title="epydoc.gui.document" class="py-name" href="#" onclick="return doclink('link-195', 'document', 'link-30');">document</a></tt><tt class="py-op">.</tt><tt class="py-name">copy</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L683"></a><tt class="py-lineno">683</tt>  <tt class="py-line">            <tt class="py-name">doc</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">children</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">copy</tt><tt class="py-op">(</tt><tt class="py-op">)< [...]
+<a name="L684"></a><tt class="py-lineno">684</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-196" class="py-name"><a title="epydoc.markup.Field.body" class="py-name" href="#" onclick="return doclink('link-196', 'body', 'link-42');">body</a></tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt> </tt>
+<a name="L685"></a><tt class="py-lineno">685</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_linker</tt><tt class="py-op">.</tt><tt id="link-197" class="py-name" targets="Method epydoc.docwriter.html._HTMLDocstringLinker.translate_indexterm()=epydoc.docwriter.html._HTMLDocstringLinker-class.html#translate_indexterm,Method epydoc.docwriter.latex.LatexWriter._LatexDocstringLinker.translate_indexterm()=epydoc.docwriter.late [...]
+epydoc.docwriter.latex.LatexWriter._LatexDocstringLinker.translate_indexterm
+epydoc.markup.DocstringLinker.translate_indexterm" class="py-name" href="#" onclick="return doclink('link-197', 'translate_indexterm', 'link-197');">translate_indexterm</a></tt><tt class="py-op">(</tt><tt id="link-198" class="py-name"><a title="epydoc.markup.restructuredtext.ParsedRstDocstring" class="py-name" href="#" onclick="return doclink('link-198', 'ParsedRstDocstring', 'link-29');">ParsedRstDocstring</a></tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">)</ [...]
+<a name="L686"></a><tt class="py-lineno">686</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">SkipNode</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L687"></a><tt class="py-lineno">687</tt>  <tt class="py-line"> </tt>
+<a name="L688"></a><tt class="py-lineno">688</tt>  <tt class="py-line">        <tt class="py-name">HTMLTranslator</tt><tt class="py-op">.</tt><tt id="link-199" class="py-name" targets="Method epydoc.markup.restructuredtext._EpydocHTMLTranslator.visit_emphasis()=epydoc.markup.restructuredtext._EpydocHTMLTranslator-class.html#visit_emphasis,Method epydoc.markup.restructuredtext._TermsExtractor.visit_emphasis()=epydoc.markup.restructuredtext._TermsExtractor-class.html#visit_emphasis"><a tit [...]
+epydoc.markup.restructuredtext._TermsExtractor.visit_emphasis" class="py-name" href="#" onclick="return doclink('link-199', 'visit_emphasis', 'link-199');">visit_emphasis</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">node</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L689"></a><tt class="py-lineno">689</tt>  <tt class="py-line"> </tt>
+<a name="python_code_directive"></a><div id="python_code_directive-def"><a name="L690"></a><tt class="py-lineno">690</tt> <a class="py-toggle" href="#" id="python_code_directive-toggle" onclick="return toggle('python_code_directive');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.restructuredtext-module.html#python_code_directive">python_code_directive</a><tt class="py-op">(</tt><tt class="py-param">name</tt><tt class="py-op">,</tt>  [...]
+<a name="L691"></a><tt class="py-lineno">691</tt>  <tt class="py-line">                          <tt class="py-param">content_offset</tt><tt class="py-op">,</tt> <tt class="py-param">block_text</tt><tt class="py-op">,</tt> <tt class="py-param">state</tt><tt class="py-op">,</tt> <tt class="py-param">state_machine</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="python_code_directive-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="python_code_directive-expanded"><a name="L692"></a><tt class="py-lineno">692</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L693"></a><tt class="py-lineno">693</tt>  <tt class="py-line"><tt class="py-docstring">    A custom restructuredtext directive which can be used to display</tt> </tt>
+<a name="L694"></a><tt class="py-lineno">694</tt>  <tt class="py-line"><tt class="py-docstring">    syntax-highlighted Python code blocks.  This directive takes no</tt> </tt>
+<a name="L695"></a><tt class="py-lineno">695</tt>  <tt class="py-line"><tt class="py-docstring">    arguments, and the body should contain only Python code.  This</tt> </tt>
+<a name="L696"></a><tt class="py-lineno">696</tt>  <tt class="py-line"><tt class="py-docstring">    directive can be used instead of doctest blocks when it is</tt> </tt>
+<a name="L697"></a><tt class="py-lineno">697</tt>  <tt class="py-line"><tt class="py-docstring">    inconvenient to list prompts on each line, or when you would</tt> </tt>
+<a name="L698"></a><tt class="py-lineno">698</tt>  <tt class="py-line"><tt class="py-docstring">    prefer that the output not contain prompts (e.g., to make</tt> </tt>
+<a name="L699"></a><tt class="py-lineno">699</tt>  <tt class="py-line"><tt class="py-docstring">    copy/paste easier).</tt> </tt>
+<a name="L700"></a><tt class="py-lineno">700</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L701"></a><tt class="py-lineno">701</tt>  <tt class="py-line">    <tt class="py-name">required_arguments</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L702"></a><tt class="py-lineno">702</tt>  <tt class="py-line">    <tt class="py-name">optional_arguments</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L703"></a><tt class="py-lineno">703</tt>  <tt class="py-line"> </tt>
+<a name="L704"></a><tt class="py-lineno">704</tt>  <tt class="py-line">    <tt class="py-name">text</tt> <tt class="py-op">=</tt> <tt class="py-string">'\n'</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
+<a name="L705"></a><tt class="py-lineno">705</tt>  <tt class="py-line">    <tt class="py-name">node</tt> <tt class="py-op">=</tt> <tt class="py-name">docutils</tt><tt class="py-op">.</tt><tt class="py-name">nodes</tt><tt class="py-op">.</tt><tt class="py-name">doctest_block</tt><tt class="py-op">(</tt><tt class="py-name">text</tt><tt class="py-op">,</tt> <tt class="py-name">text</tt><tt class="py-op">,</tt> <tt class="py-name">codeblock</tt><tt class="py-op">=</tt><tt class="py-name">Tru [...]
+<a name="L706"></a><tt class="py-lineno">706</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-op">[</tt> <tt class="py-name">node</tt> <tt class="py-op">]</tt> </tt>
+</div><a name="L707"></a><tt class="py-lineno">707</tt>  <tt class="py-line">     </tt>
+<a name="L708"></a><tt class="py-lineno">708</tt>  <tt class="py-line"><tt id="link-200" class="py-name" targets="Function epydoc.markup.restructuredtext.python_code_directive()=epydoc.markup.restructuredtext-module.html#python_code_directive"><a title="epydoc.markup.restructuredtext.python_code_directive" class="py-name" href="#" onclick="return doclink('link-200', 'python_code_directive', 'link-200');">python_code_directive</a></tt><tt class="py-op">.</tt><tt class="py-name">arguments< [...]
+<a name="L709"></a><tt class="py-lineno">709</tt>  <tt class="py-line"><tt id="link-201" class="py-name"><a title="epydoc.markup.restructuredtext.python_code_directive" class="py-name" href="#" onclick="return doclink('link-201', 'python_code_directive', 'link-200');">python_code_directive</a></tt><tt class="py-op">.</tt><tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L710"></a><tt class="py-lineno">710</tt>  <tt class="py-line"> </tt>
+<a name="L711"></a><tt class="py-lineno">711</tt>  <tt class="py-line"><tt class="py-name">directives</tt><tt class="py-op">.</tt><tt class="py-name">register_directive</tt><tt class="py-op">(</tt><tt class="py-string">'python'</tt><tt class="py-op">,</tt> <tt id="link-202" class="py-name"><a title="epydoc.markup.restructuredtext.python_code_directive" class="py-name" href="#" onclick="return doclink('link-202', 'python_code_directive', 'link-200');">python_code_directive</a></tt><tt cla [...]
+<a name="L712"></a><tt class="py-lineno">712</tt>  <tt class="py-line"> </tt>
+<a name="term_role"></a><div id="term_role-def"><a name="L713"></a><tt class="py-lineno">713</tt> <a class="py-toggle" href="#" id="term_role-toggle" onclick="return toggle('term_role');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.restructuredtext-module.html#term_role">term_role</a><tt class="py-op">(</tt><tt class="py-param">name</tt><tt class="py-op">,</tt> <tt class="py-param">rawtext</tt><tt class="py-op">,</tt> <tt class="py- [...]
+<a name="L714"></a><tt class="py-lineno">714</tt>  <tt class="py-line">            <tt class="py-param">options</tt><tt class="py-op">=</tt><tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">,</tt> <tt class="py-param">content</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="term_role-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="term_role-expanded"><a name="L715"></a><tt class="py-lineno">715</tt>  <tt class="py-line"> </tt>
+<a name="L716"></a><tt class="py-lineno">716</tt>  <tt class="py-line">    <tt class="py-name">text</tt> <tt class="py-op">=</tt> <tt class="py-name">docutils</tt><tt class="py-op">.</tt><tt class="py-name">utils</tt><tt class="py-op">.</tt><tt class="py-name">unescape</tt><tt class="py-op">(</tt><tt class="py-name">text</tt><tt class="py-op">)</tt> </tt>
+<a name="L717"></a><tt class="py-lineno">717</tt>  <tt class="py-line">    <tt class="py-name">node</tt> <tt class="py-op">=</tt> <tt class="py-name">docutils</tt><tt class="py-op">.</tt><tt class="py-name">nodes</tt><tt class="py-op">.</tt><tt class="py-name">emphasis</tt><tt class="py-op">(</tt><tt class="py-name">rawtext</tt><tt class="py-op">,</tt> <tt class="py-name">text</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-name">options</tt><tt class="py-op">)</tt> </tt>
+<a name="L718"></a><tt class="py-lineno">718</tt>  <tt class="py-line">    <tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">attributes</tt><tt class="py-op">[</tt><tt class="py-string">'classes'</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">'term'</tt><tt class="py-op">)</tt> </tt>
+<a name="L719"></a><tt class="py-lineno">719</tt>  <tt class="py-line"> </tt>
+<a name="L720"></a><tt class="py-lineno">720</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-op">[</tt><tt class="py-name">node</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+</div><a name="L721"></a><tt class="py-lineno">721</tt>  <tt class="py-line"> </tt>
+<a name="L722"></a><tt class="py-lineno">722</tt>  <tt class="py-line"><tt class="py-name">roles</tt><tt class="py-op">.</tt><tt class="py-name">register_local_role</tt><tt class="py-op">(</tt><tt class="py-string">'term'</tt><tt class="py-op">,</tt> <tt id="link-203" class="py-name" targets="Function epydoc.markup.restructuredtext.term_role()=epydoc.markup.restructuredtext-module.html#term_role"><a title="epydoc.markup.restructuredtext.term_role" class="py-name" href="#" onclick="return [...]
+<a name="L723"></a><tt class="py-lineno">723</tt>  <tt class="py-line"> </tt>
+<a name="L724"></a><tt class="py-lineno">724</tt>  <tt class="py-line"><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L725"></a><tt class="py-lineno">725</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#{ Graph Generation Directives</tt> </tt>
+<a name="L726"></a><tt class="py-lineno">726</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L727"></a><tt class="py-lineno">727</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># See http://docutils.sourceforge.net/docs/howto/rst-directives.html</tt> </tt>
+<a name="L728"></a><tt class="py-lineno">728</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="dotgraph"></a><div id="dotgraph-def"><a name="L729"></a><tt class="py-lineno">729</tt> <a class="py-toggle" href="#" id="dotgraph-toggle" onclick="return toggle('dotgraph');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="epydoc.markup.restructuredtext.dotgraph-class.html">dotgraph</a><tt class="py-op">(</tt><tt class="py-base-class">docutils</tt><tt class="py-op">.</tt><tt class="py-base-class">nodes</tt><tt class="py-op">.</tt><tt class [...]
+</div><div id="dotgraph-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="dotgraph-expanded"><a name="L730"></a><tt class="py-lineno">730</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L731"></a><tt class="py-lineno">731</tt>  <tt class="py-line"><tt class="py-docstring">    A custom docutils node that should be rendered using Graphviz dot.</tt> </tt>
+<a name="L732"></a><tt class="py-lineno">732</tt>  <tt class="py-line"><tt class="py-docstring">    This node does not directly store the graph; instead, it stores a</tt> </tt>
+<a name="L733"></a><tt class="py-lineno">733</tt>  <tt class="py-line"><tt class="py-docstring">    pointer to a function that can be used to generate the graph.</tt> </tt>
+<a name="L734"></a><tt class="py-lineno">734</tt>  <tt class="py-line"><tt class="py-docstring">    This allows the graph to be built based on information that might</tt> </tt>
+<a name="L735"></a><tt class="py-lineno">735</tt>  <tt class="py-line"><tt class="py-docstring">    not be available yet at parse time.  This graph generation</tt> </tt>
+<a name="L736"></a><tt class="py-lineno">736</tt>  <tt class="py-line"><tt class="py-docstring">    function has the following signature:</tt> </tt>
+<a name="L737"></a><tt class="py-lineno">737</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L738"></a><tt class="py-lineno">738</tt>  <tt class="py-line"><tt class="py-docstring">        >>> def generate_graph(docindex, context, linker, *args):</tt> </tt>
+<a name="L739"></a><tt class="py-lineno">739</tt>  <tt class="py-line"><tt class="py-docstring">        ...     'generates and returns a new DotGraph'</tt> </tt>
+<a name="L740"></a><tt class="py-lineno">740</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L741"></a><tt class="py-lineno">741</tt>  <tt class="py-line"><tt class="py-docstring">    Where C{docindex} is a docindex containing the documentation that</tt> </tt>
+<a name="L742"></a><tt class="py-lineno">742</tt>  <tt class="py-line"><tt class="py-docstring">    epydoc has built; C{context} is the C{APIDoc} whose docstring</tt> </tt>
+<a name="L743"></a><tt class="py-lineno">743</tt>  <tt class="py-line"><tt class="py-docstring">    contains this dotgraph node; C{linker} is a L{DocstringLinker}</tt> </tt>
+<a name="L744"></a><tt class="py-lineno">744</tt>  <tt class="py-line"><tt class="py-docstring">    that can be used to resolve crossreferences; and C{args} is any</tt> </tt>
+<a name="L745"></a><tt class="py-lineno">745</tt>  <tt class="py-line"><tt class="py-docstring">    extra arguments that are passed to the C{dotgraph} constructor.</tt> </tt>
+<a name="L746"></a><tt class="py-lineno">746</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="dotgraph.__init__"></a><div id="dotgraph.__init__-def"><a name="L747"></a><tt class="py-lineno">747</tt> <a class="py-toggle" href="#" id="dotgraph.__init__-toggle" onclick="return toggle('dotgraph.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.restructuredtext.dotgraph-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">generate_ [...]
+</div><div id="dotgraph.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="dotgraph.__init__-expanded"><a name="L748"></a><tt class="py-lineno">748</tt>  <tt class="py-line">        <tt class="py-name">docutils</tt><tt class="py-op">.</tt><tt class="py-name">nodes</tt><tt class="py-op">.</tt><tt class="py-name">image</tt><tt class="py-op">.</tt><tt id="link-204" class="py-name"><a title="epydoc.apidoc.APIDoc.__init__
+epydoc.apidoc.DocIndex.__init__
+epydoc.apidoc.DottedName.__init__
+epydoc.apidoc.NamespaceDoc.__init__
+epydoc.apidoc.VariableDoc.__init__
+epydoc.apidoc._Sentinel.__init__
+epydoc.checker.DocChecker.__init__
+epydoc.cli.ConsoleLogger.__init__
+epydoc.cli.HTMLLogger.__init__
+epydoc.cli.TerminalController.__init__
+epydoc.cli.UnifiedProgressConsoleLogger.__init__
+epydoc.docbuilder.BuildOptions.__init__
+epydoc.docbuilder._ProgressEstimator.__init__
+epydoc.docintrospecter._DevNull.__init__
+epydoc.docstringparser.DocstringField.__init__
+epydoc.docwriter.dotgraph.DotGraph.__init__
+epydoc.docwriter.dotgraph.DotGraphEdge.__init__
+epydoc.docwriter.dotgraph.DotGraphNode.__init__
+epydoc.docwriter.dotgraph.DotGraphUmlClassNode.__init__
+epydoc.docwriter.dotgraph.DotGraphUmlModuleNode.__init__
+epydoc.docwriter.html.HTMLWriter.__init__
+epydoc.docwriter.html._HTMLDocstringLinker.__init__
+epydoc.docwriter.html_colorize.PythonSourceColorizer.__init__
+epydoc.docwriter.latex.LatexWriter.__init__
+epydoc.docwriter.xlink.ApiLinkReader.__init__
+epydoc.docwriter.xlink.DocUrlGenerator.__init__
+epydoc.gui.EpydocGUI.__init__
+epydoc.gui.GUILogger.__init__
+epydoc.log.SimpleLogger.__init__
+epydoc.markup.ConcatenatedDocstring.__init__
+epydoc.markup.Field.__init__
+epydoc.markup.ParseError.__init__
+epydoc.markup.epytext.ColorizingError.__init__
+epydoc.markup.epytext.Element.__init__
+epydoc.markup.epytext.ParsedEpytextDocstring.__init__
+epydoc.markup.epytext.Token.__init__
+epydoc.markup.javadoc.ParsedJavadocDocstring.__init__
+epydoc.markup.plaintext.ParsedPlaintextDocstring.__init__
+epydoc.markup.pyval_repr.ColorizedPyvalRepr.__init__
+epydoc.markup.pyval_repr.PyvalColorizer.__init__
+epydoc.markup.pyval_repr._ColorizerState.__init__
+epydoc.markup.restructuredtext.ParsedRstDocstring.__init__
+epydoc.markup.restructuredtext._DocumentPseudoWriter.__init__
+epydoc.markup.restructuredtext._EpydocHTMLTranslator.__init__
+epydoc.markup.restructuredtext._EpydocLaTeXTranslator.__init__
+epydoc.markup.restructuredtext._EpydocReader.__init__
+epydoc.markup.restructuredtext._SplitFieldsTranslator.__init__
+epydoc.markup.restructuredtext._SummaryExtractor.__init__
+epydoc.markup.restructuredtext._TermsExtractor.__init__
+epydoc.markup.restructuredtext.dotgraph.__init__
+epydoc.util.RunSubprocessError.__init__" class="py-name" href="#" onclick="return doclink('link-204', '__init__', 'link-56');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L749"></a><tt class="py-lineno">749</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">graph_func</tt> <tt class="py-op">=</tt> <tt class="py-name">generate_graph_func</tt> </tt>
+<a name="L750"></a><tt class="py-lineno">750</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">args</tt> <tt class="py-op">=</tt> <tt class="py-name">generate_graph_args</tt> </tt>
+</div><a name="dotgraph.graph"></a><div id="dotgraph.graph-def"><a name="L751"></a><tt class="py-lineno">751</tt> <a class="py-toggle" href="#" id="dotgraph.graph-toggle" onclick="return toggle('dotgraph.graph');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.restructuredtext.dotgraph-class.html#graph">graph</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">docindex</tt><tt clas [...]
+</div><div id="dotgraph.graph-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="dotgraph.graph-expanded"><a name="L752"></a><tt class="py-lineno">752</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">graph_func</tt><tt class="py-op">(</tt><tt class="py-name">docindex</tt><tt class="py-op">,</tt> <tt class="py-name">context</tt><tt class="py-op">,</tt> <tt class="py-name"> [...]
+</div></div><a name="L753"></a><tt class="py-lineno">753</tt>  <tt class="py-line"> </tt>
+<a name="_dir_option"></a><div id="_dir_option-def"><a name="L754"></a><tt class="py-lineno">754</tt> <a class="py-toggle" href="#" id="_dir_option-toggle" onclick="return toggle('_dir_option');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.restructuredtext-module.html#_dir_option">_dir_option</a><tt class="py-op">(</tt><tt class="py-param">argument</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_dir_option-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_dir_option-expanded"><a name="L755"></a><tt class="py-lineno">755</tt>  <tt class="py-line">    <tt class="py-docstring">"""A directive option spec for the orientation of a graph."""</tt> </tt>
+<a name="L756"></a><tt class="py-lineno">756</tt>  <tt class="py-line">    <tt class="py-name">argument</tt> <tt class="py-op">=</tt> <tt class="py-name">argument</tt><tt class="py-op">.</tt><tt class="py-name">lower</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">strip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L757"></a><tt class="py-lineno">757</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">argument</tt> <tt class="py-op">==</tt> <tt class="py-string">'right'</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-string">'LR'</tt> </tt>
+<a name="L758"></a><tt class="py-lineno">758</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">argument</tt> <tt class="py-op">==</tt> <tt class="py-string">'left'</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-string">'RL'</tt> </tt>
+<a name="L759"></a><tt class="py-lineno">759</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">argument</tt> <tt class="py-op">==</tt> <tt class="py-string">'down'</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-string">'TB'</tt> </tt>
+<a name="L760"></a><tt class="py-lineno">760</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">argument</tt> <tt class="py-op">==</tt> <tt class="py-string">'up'</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-string">'BT'</tt> </tt>
+<a name="L761"></a><tt class="py-lineno">761</tt>  <tt class="py-line">    <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">'%r unknown; choose from left, right, up, down'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L762"></a><tt class="py-lineno">762</tt>  <tt class="py-line">                     <tt class="py-name">argument</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L763"></a><tt class="py-lineno">763</tt>  <tt class="py-line">  </tt>
+<a name="digraph_directive"></a><div id="digraph_directive-def"><a name="L764"></a><tt class="py-lineno">764</tt> <a class="py-toggle" href="#" id="digraph_directive-toggle" onclick="return toggle('digraph_directive');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.restructuredtext-module.html#digraph_directive">digraph_directive</a><tt class="py-op">(</tt><tt class="py-param">name</tt><tt class="py-op">,</tt> <tt class="py-param">arg [...]
+<a name="L765"></a><tt class="py-lineno">765</tt>  <tt class="py-line">                      <tt class="py-param">content_offset</tt><tt class="py-op">,</tt> <tt class="py-param">block_text</tt><tt class="py-op">,</tt> <tt class="py-param">state</tt><tt class="py-op">,</tt> <tt class="py-param">state_machine</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="digraph_directive-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="digraph_directive-expanded"><a name="L766"></a><tt class="py-lineno">766</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L767"></a><tt class="py-lineno">767</tt>  <tt class="py-line"><tt class="py-docstring">    A custom restructuredtext directive which can be used to display</tt> </tt>
+<a name="L768"></a><tt class="py-lineno">768</tt>  <tt class="py-line"><tt class="py-docstring">    Graphviz dot graphs.  This directive takes a single argument,</tt> </tt>
+<a name="L769"></a><tt class="py-lineno">769</tt>  <tt class="py-line"><tt class="py-docstring">    which is used as the graph's name.  The contents of the directive</tt> </tt>
+<a name="L770"></a><tt class="py-lineno">770</tt>  <tt class="py-line"><tt class="py-docstring">    are used as the body of the graph.  Any href attributes whose</tt> </tt>
+<a name="L771"></a><tt class="py-lineno">771</tt>  <tt class="py-line"><tt class="py-docstring">    value has the form <name> will be replaced by the URL of the object</tt> </tt>
+<a name="L772"></a><tt class="py-lineno">772</tt>  <tt class="py-line"><tt class="py-docstring">    with that name.  Here's a simple example::</tt> </tt>
+<a name="L773"></a><tt class="py-lineno">773</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L774"></a><tt class="py-lineno">774</tt>  <tt class="py-line"><tt class="py-docstring">     .. digraph:: example_digraph</tt> </tt>
+<a name="L775"></a><tt class="py-lineno">775</tt>  <tt class="py-line"><tt class="py-docstring">       a -> b -> c</tt> </tt>
+<a name="L776"></a><tt class="py-lineno">776</tt>  <tt class="py-line"><tt class="py-docstring">       c -> a [dir=\"none\"]</tt> </tt>
+<a name="L777"></a><tt class="py-lineno">777</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L778"></a><tt class="py-lineno">778</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">arguments</tt><tt class="py-op">:</tt> <tt id="link-205" class="py-name" targets="Method epydoc.docwriter.plaintext.PlaintextWriter.title()=epydoc.docwriter.plaintext.PlaintextWriter-class.html#title"><a title="epydoc.docwriter.plaintext.PlaintextWriter.title" class="py-name" href="#" onclick="return doclink('link-205', 'title', 'link-205');">title</a></tt> <tt cl [...]
+<a name="L779"></a><tt class="py-lineno">779</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> <tt id="link-206" class="py-name"><a title="epydoc.docwriter.plaintext.PlaintextWriter.title" class="py-name" href="#" onclick="return doclink('link-206', 'title', 'link-205');">title</a></tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
+<a name="L780"></a><tt class="py-lineno">780</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-op">[</tt> <tt id="link-207" class="py-name"><a title="epydoc.docwriter.dotgraph
+epydoc.markup.restructuredtext.dotgraph" class="py-name" href="#" onclick="return doclink('link-207', 'dotgraph', 'link-13');">dotgraph</a></tt><tt class="py-op">(</tt><tt id="link-208" class="py-name" targets="Function epydoc.markup.restructuredtext._construct_digraph()=epydoc.markup.restructuredtext-module.html#_construct_digraph"><a title="epydoc.markup.restructuredtext._construct_digraph" class="py-name" href="#" onclick="return doclink('link-208', '_construct_digraph', 'link-208');" [...]
+<a name="L781"></a><tt class="py-lineno">781</tt>  <tt class="py-line">                    <tt class="py-string">'\n'</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">content</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-op">]</tt> </tt>
+</div><a name="L782"></a><tt class="py-lineno">782</tt>  <tt class="py-line"><tt id="link-210" class="py-name" targets="Function epydoc.markup.restructuredtext.digraph_directive()=epydoc.markup.restructuredtext-module.html#digraph_directive"><a title="epydoc.markup.restructuredtext.digraph_directive" class="py-name" href="#" onclick="return doclink('link-210', 'digraph_directive', 'link-210');">digraph_directive</a></tt><tt class="py-op">.</tt><tt class="py-name">arguments</tt> <tt class [...]
+<a name="L783"></a><tt class="py-lineno">783</tt>  <tt class="py-line"><tt id="link-211" class="py-name"><a title="epydoc.markup.restructuredtext.digraph_directive" class="py-name" href="#" onclick="return doclink('link-211', 'digraph_directive', 'link-210');">digraph_directive</a></tt><tt class="py-op">.</tt><tt class="py-name">options</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-string">'caption'</tt><tt class="py-op">:</tt> <tt class="py-name">directives</tt><tt [...]
+<a name="L784"></a><tt class="py-lineno">784</tt>  <tt class="py-line"><tt id="link-212" class="py-name"><a title="epydoc.markup.restructuredtext.digraph_directive" class="py-name" href="#" onclick="return doclink('link-212', 'digraph_directive', 'link-210');">digraph_directive</a></tt><tt class="py-op">.</tt><tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L785"></a><tt class="py-lineno">785</tt>  <tt class="py-line"><tt class="py-name">directives</tt><tt class="py-op">.</tt><tt class="py-name">register_directive</tt><tt class="py-op">(</tt><tt class="py-string">'digraph'</tt><tt class="py-op">,</tt> <tt id="link-213" class="py-name"><a title="epydoc.markup.restructuredtext.digraph_directive" class="py-name" href="#" onclick="return doclink('link-213', 'digraph_directive', 'link-210');">digraph_directive</a></tt><tt class="py-op"> [...]
+<a name="L786"></a><tt class="py-lineno">786</tt>  <tt class="py-line"> </tt>
+<a name="_construct_digraph"></a><div id="_construct_digraph-def"><a name="L787"></a><tt class="py-lineno">787</tt> <a class="py-toggle" href="#" id="_construct_digraph-toggle" onclick="return toggle('_construct_digraph');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.restructuredtext-module.html#_construct_digraph">_construct_digraph</a><tt class="py-op">(</tt><tt class="py-param">docindex</tt><tt class="py-op">,</tt> <tt class="py- [...]
+<a name="L788"></a><tt class="py-lineno">788</tt>  <tt class="py-line">                       <tt class="py-param">body</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_construct_digraph-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_construct_digraph-expanded"><a name="L789"></a><tt class="py-lineno">789</tt>  <tt class="py-line">    <tt class="py-docstring">"""Graph generator for L{digraph_directive}"""</tt> </tt>
+<a name="L790"></a><tt class="py-lineno">790</tt>  <tt class="py-line">    <tt id="link-214" class="py-name"><a title="epydoc.markup.restructuredtext.dotgraph.graph" class="py-name" href="#" onclick="return doclink('link-214', 'graph', 'link-182');">graph</a></tt> <tt class="py-op">=</tt> <tt id="link-215" class="py-name" targets="Class epydoc.docwriter.dotgraph.DotGraph=epydoc.docwriter.dotgraph.DotGraph-class.html"><a title="epydoc.docwriter.dotgraph.DotGraph" class="py-name" href="#"  [...]
+<a name="L791"></a><tt class="py-lineno">791</tt>  <tt class="py-line">    <tt id="link-218" class="py-name"><a title="epydoc.markup.restructuredtext.dotgraph.graph" class="py-name" href="#" onclick="return doclink('link-218', 'graph', 'link-182');">graph</a></tt><tt class="py-op">.</tt><tt id="link-219" class="py-name" targets="Method epydoc.docwriter.dotgraph.DotGraph.link()=epydoc.docwriter.dotgraph.DotGraph-class.html#link"><a title="epydoc.docwriter.dotgraph.DotGraph.link" class="py [...]
+<a name="L792"></a><tt class="py-lineno">792</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-220" class="py-name"><a title="epydoc.markup.restructuredtext.dotgraph.graph" class="py-name" href="#" onclick="return doclink('link-220', 'graph', 'link-182');">graph</a></tt> </tt>
+</div><a name="L793"></a><tt class="py-lineno">793</tt>  <tt class="py-line"> </tt>
+<a name="classtree_directive"></a><div id="classtree_directive-def"><a name="L794"></a><tt class="py-lineno">794</tt> <a class="py-toggle" href="#" id="classtree_directive-toggle" onclick="return toggle('classtree_directive');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.restructuredtext-module.html#classtree_directive">classtree_directive</a><tt class="py-op">(</tt><tt class="py-param">name</tt><tt class="py-op">,</tt> <tt class="p [...]
+<a name="L795"></a><tt class="py-lineno">795</tt>  <tt class="py-line">                        <tt class="py-param">content_offset</tt><tt class="py-op">,</tt> <tt class="py-param">block_text</tt><tt class="py-op">,</tt> <tt class="py-param">state</tt><tt class="py-op">,</tt> <tt class="py-param">state_machine</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="classtree_directive-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="classtree_directive-expanded"><a name="L796"></a><tt class="py-lineno">796</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L797"></a><tt class="py-lineno">797</tt>  <tt class="py-line"><tt class="py-docstring">    A custom restructuredtext directive which can be used to</tt> </tt>
+<a name="L798"></a><tt class="py-lineno">798</tt>  <tt class="py-line"><tt class="py-docstring">    graphically display a class hierarchy.  If one or more arguments</tt> </tt>
+<a name="L799"></a><tt class="py-lineno">799</tt>  <tt class="py-line"><tt class="py-docstring">    are given, then those classes and all their descendants will be</tt> </tt>
+<a name="L800"></a><tt class="py-lineno">800</tt>  <tt class="py-line"><tt class="py-docstring">    displayed.  If no arguments are given, and the directive is in a</tt> </tt>
+<a name="L801"></a><tt class="py-lineno">801</tt>  <tt class="py-line"><tt class="py-docstring">    class's docstring, then that class and all its descendants will be</tt> </tt>
+<a name="L802"></a><tt class="py-lineno">802</tt>  <tt class="py-line"><tt class="py-docstring">    displayed.  It is an error to use this directive with no arguments</tt> </tt>
+<a name="L803"></a><tt class="py-lineno">803</tt>  <tt class="py-line"><tt class="py-docstring">    in a non-class docstring.</tt> </tt>
+<a name="L804"></a><tt class="py-lineno">804</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L805"></a><tt class="py-lineno">805</tt>  <tt class="py-line"><tt class="py-docstring">    Options:</tt> </tt>
+<a name="L806"></a><tt class="py-lineno">806</tt>  <tt class="py-line"><tt class="py-docstring">      - C{:dir:} -- Specifies the orientation of the graph.  One of</tt> </tt>
+<a name="L807"></a><tt class="py-lineno">807</tt>  <tt class="py-line"><tt class="py-docstring">        C{down}, C{right} (default), C{left}, C{up}.</tt> </tt>
+<a name="L808"></a><tt class="py-lineno">808</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L809"></a><tt class="py-lineno">809</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-op">[</tt> <tt id="link-221" class="py-name"><a title="epydoc.docwriter.dotgraph
+epydoc.markup.restructuredtext.dotgraph" class="py-name" href="#" onclick="return doclink('link-221', 'dotgraph', 'link-13');">dotgraph</a></tt><tt class="py-op">(</tt><tt id="link-222" class="py-name" targets="Function epydoc.markup.restructuredtext._construct_classtree()=epydoc.markup.restructuredtext-module.html#_construct_classtree"><a title="epydoc.markup.restructuredtext._construct_classtree" class="py-name" href="#" onclick="return doclink('link-222', '_construct_classtree', 'link [...]
+</div><a name="L810"></a><tt class="py-lineno">810</tt>  <tt class="py-line"><tt id="link-223" class="py-name" targets="Function epydoc.markup.restructuredtext.classtree_directive()=epydoc.markup.restructuredtext-module.html#classtree_directive"><a title="epydoc.markup.restructuredtext.classtree_directive" class="py-name" href="#" onclick="return doclink('link-223', 'classtree_directive', 'link-223');">classtree_directive</a></tt><tt class="py-op">.</tt><tt class="py-name">arguments</tt> [...]
+<a name="L811"></a><tt class="py-lineno">811</tt>  <tt class="py-line"><tt id="link-224" class="py-name"><a title="epydoc.markup.restructuredtext.classtree_directive" class="py-name" href="#" onclick="return doclink('link-224', 'classtree_directive', 'link-223');">classtree_directive</a></tt><tt class="py-op">.</tt><tt class="py-name">options</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-string">'dir'</tt><tt class="py-op">:</tt> <tt id="link-225" class="py-name" ta [...]
+<a name="L812"></a><tt class="py-lineno">812</tt>  <tt class="py-line"><tt id="link-226" class="py-name"><a title="epydoc.markup.restructuredtext.classtree_directive" class="py-name" href="#" onclick="return doclink('link-226', 'classtree_directive', 'link-223');">classtree_directive</a></tt><tt class="py-op">.</tt><tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L813"></a><tt class="py-lineno">813</tt>  <tt class="py-line"><tt class="py-name">directives</tt><tt class="py-op">.</tt><tt class="py-name">register_directive</tt><tt class="py-op">(</tt><tt class="py-string">'classtree'</tt><tt class="py-op">,</tt> <tt id="link-227" class="py-name"><a title="epydoc.markup.restructuredtext.classtree_directive" class="py-name" href="#" onclick="return doclink('link-227', 'classtree_directive', 'link-223');">classtree_directive</a></tt><tt class= [...]
+<a name="L814"></a><tt class="py-lineno">814</tt>  <tt class="py-line"> </tt>
+<a name="_construct_classtree"></a><div id="_construct_classtree-def"><a name="L815"></a><tt class="py-lineno">815</tt> <a class="py-toggle" href="#" id="_construct_classtree-toggle" onclick="return toggle('_construct_classtree');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.restructuredtext-module.html#_construct_classtree">_construct_classtree</a><tt class="py-op">(</tt><tt class="py-param">docindex</tt><tt class="py-op">,</tt> <t [...]
+</div><div id="_construct_classtree-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_construct_classtree-expanded"><a name="L816"></a><tt class="py-lineno">816</tt>  <tt class="py-line">    <tt class="py-docstring">"""Graph generator for L{classtree_directive}"""</tt> </tt>
+<a name="L817"></a><tt class="py-lineno">817</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">arguments</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L818"></a><tt class="py-lineno">818</tt>  <tt class="py-line">        <tt id="link-228" class="py-name" targets="Variable epydoc.apidoc.ClassDoc.bases=epydoc.apidoc.ClassDoc-class.html#bases"><a title="epydoc.apidoc.ClassDoc.bases" class="py-name" href="#" onclick="return doclink('link-228', 'bases', 'link-228');">bases</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">docindex</tt><tt class="py-op">.</tt><tt id="link-229" class="py-name" targets="Met [...]
+<a name="L819"></a><tt class="py-lineno">819</tt>  <tt class="py-line">                 <tt class="py-name">arguments</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">','</tt><tt class="py-op">,</tt><tt class="py-string">' '</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt  [...]
+<a name="L820"></a><tt class="py-lineno">820</tt>  <tt class="py-line">        <tt id="link-232" class="py-name"><a title="epydoc.apidoc.ClassDoc.bases" class="py-name" href="#" onclick="return doclink('link-232', 'bases', 'link-228');">bases</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">d</tt> <tt class="py-keyword">for</tt> <tt class="py-name">d</tt> <tt class="py-keyword">in</tt> <tt id="link-233" class="py-name"><a title="epydoc.apidoc.ClassDoc.bases"  [...]
+<a name="L821"></a><tt class="py-lineno">821</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">context</tt><tt class="py-op">,</tt> <tt id="link-235" class="py-name"><a title="epydoc.apidoc.ClassDoc" class="py-name" href="#" onclick="return doclink('link-235', 'ClassDoc', 'link-10');">ClassDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L822"></a><tt class="py-lineno">822</tt>  <tt class="py-line">        <tt id="link-236" class="py-name"><a title="epydoc.apidoc.ClassDoc.bases" class="py-name" href="#" onclick="return doclink('link-236', 'bases', 'link-228');">bases</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">context</tt><tt class="py-op">]</tt> </tt>
+<a name="L823"></a><tt class="py-lineno">823</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L824"></a><tt class="py-lineno">824</tt>  <tt class="py-line">        <tt id="link-237" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-237', 'log', 'link-153');">log</a></tt><tt class="py-op">.</tt><tt id="link-238" class="py-name"><a title="epydoc.checker.DocChecker.warning
+epydoc.log.warning" class="py-name" href="#" onclick="return doclink('link-238', 'warning', 'link-154');">warning</a></tt><tt class="py-op">(</tt><tt class="py-string">"Could not construct class tree: you must "</tt> </tt>
+<a name="L825"></a><tt class="py-lineno">825</tt>  <tt class="py-line">                    <tt class="py-string">"specify one or more base classes."</tt><tt class="py-op">)</tt> </tt>
+<a name="L826"></a><tt class="py-lineno">826</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
+<a name="L827"></a><tt class="py-lineno">827</tt>  <tt class="py-line">         </tt>
+<a name="L828"></a><tt class="py-lineno">828</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-239" class="py-name" targets="Function epydoc.docwriter.dotgraph.class_tree_graph()=epydoc.docwriter.dotgraph-module.html#class_tree_graph"><a title="epydoc.docwriter.dotgraph.class_tree_graph" class="py-name" href="#" onclick="return doclink('link-239', 'class_tree_graph', 'link-239');">class_tree_graph</a></tt><tt class="py-op">(</tt><tt id="link-240" class="py-nam [...]
+</div><a name="L829"></a><tt class="py-lineno">829</tt>  <tt class="py-line"> </tt>
+<a name="packagetree_directive"></a><div id="packagetree_directive-def"><a name="L830"></a><tt class="py-lineno">830</tt> <a class="py-toggle" href="#" id="packagetree_directive-toggle" onclick="return toggle('packagetree_directive');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.restructuredtext-module.html#packagetree_directive">packagetree_directive</a><tt class="py-op">(</tt><tt class="py-param">name</tt><tt class="py-op">,</tt>  [...]
+<a name="L831"></a><tt class="py-lineno">831</tt>  <tt class="py-line">                        <tt class="py-param">content_offset</tt><tt class="py-op">,</tt> <tt class="py-param">block_text</tt><tt class="py-op">,</tt> <tt class="py-param">state</tt><tt class="py-op">,</tt> <tt class="py-param">state_machine</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="packagetree_directive-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="packagetree_directive-expanded"><a name="L832"></a><tt class="py-lineno">832</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L833"></a><tt class="py-lineno">833</tt>  <tt class="py-line"><tt class="py-docstring">    A custom restructuredtext directive which can be used to</tt> </tt>
+<a name="L834"></a><tt class="py-lineno">834</tt>  <tt class="py-line"><tt class="py-docstring">    graphically display a package hierarchy.  If one or more arguments</tt> </tt>
+<a name="L835"></a><tt class="py-lineno">835</tt>  <tt class="py-line"><tt class="py-docstring">    are given, then those packages and all their submodules will be</tt> </tt>
+<a name="L836"></a><tt class="py-lineno">836</tt>  <tt class="py-line"><tt class="py-docstring">    displayed.  If no arguments are given, and the directive is in a</tt> </tt>
+<a name="L837"></a><tt class="py-lineno">837</tt>  <tt class="py-line"><tt class="py-docstring">    package's docstring, then that package and all its submodules will</tt> </tt>
+<a name="L838"></a><tt class="py-lineno">838</tt>  <tt class="py-line"><tt class="py-docstring">    be displayed.  It is an error to use this directive with no</tt> </tt>
+<a name="L839"></a><tt class="py-lineno">839</tt>  <tt class="py-line"><tt class="py-docstring">    arguments in a non-package docstring.</tt> </tt>
+<a name="L840"></a><tt class="py-lineno">840</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L841"></a><tt class="py-lineno">841</tt>  <tt class="py-line"><tt class="py-docstring">    Options:</tt> </tt>
+<a name="L842"></a><tt class="py-lineno">842</tt>  <tt class="py-line"><tt class="py-docstring">      - C{:dir:} -- Specifies the orientation of the graph.  One of</tt> </tt>
+<a name="L843"></a><tt class="py-lineno">843</tt>  <tt class="py-line"><tt class="py-docstring">        C{down}, C{right} (default), C{left}, C{up}.</tt> </tt>
+<a name="L844"></a><tt class="py-lineno">844</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L845"></a><tt class="py-lineno">845</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-op">[</tt> <tt id="link-241" class="py-name"><a title="epydoc.docwriter.dotgraph
+epydoc.markup.restructuredtext.dotgraph" class="py-name" href="#" onclick="return doclink('link-241', 'dotgraph', 'link-13');">dotgraph</a></tt><tt class="py-op">(</tt><tt id="link-242" class="py-name" targets="Function epydoc.markup.restructuredtext._construct_packagetree()=epydoc.markup.restructuredtext-module.html#_construct_packagetree"><a title="epydoc.markup.restructuredtext._construct_packagetree" class="py-name" href="#" onclick="return doclink('link-242', '_construct_packagetree [...]
+</div><a name="L846"></a><tt class="py-lineno">846</tt>  <tt class="py-line"><tt id="link-243" class="py-name" targets="Function epydoc.markup.restructuredtext.packagetree_directive()=epydoc.markup.restructuredtext-module.html#packagetree_directive"><a title="epydoc.markup.restructuredtext.packagetree_directive" class="py-name" href="#" onclick="return doclink('link-243', 'packagetree_directive', 'link-243');">packagetree_directive</a></tt><tt class="py-op">.</tt><tt class="py-name">argu [...]
+<a name="L847"></a><tt class="py-lineno">847</tt>  <tt class="py-line"><tt id="link-244" class="py-name"><a title="epydoc.markup.restructuredtext.packagetree_directive" class="py-name" href="#" onclick="return doclink('link-244', 'packagetree_directive', 'link-243');">packagetree_directive</a></tt><tt class="py-op">.</tt><tt class="py-name">options</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
+<a name="L848"></a><tt class="py-lineno">848</tt>  <tt class="py-line">  <tt class="py-string">'dir'</tt><tt class="py-op">:</tt> <tt id="link-245" class="py-name"><a title="epydoc.markup.restructuredtext._dir_option" class="py-name" href="#" onclick="return doclink('link-245', '_dir_option', 'link-225');">_dir_option</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L849"></a><tt class="py-lineno">849</tt>  <tt class="py-line">  <tt class="py-string">'style'</tt><tt class="py-op">:</tt> <tt class="py-keyword">lambda</tt> <tt class="py-name">a</tt><tt class="py-op">:</tt><tt class="py-name">directives</tt><tt class="py-op">.</tt><tt class="py-name">choice</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">.</tt><tt class="py-name">lower</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt clas [...]
+<a name="L850"></a><tt class="py-lineno">850</tt>  <tt class="py-line"><tt id="link-246" class="py-name"><a title="epydoc.markup.restructuredtext.packagetree_directive" class="py-name" href="#" onclick="return doclink('link-246', 'packagetree_directive', 'link-243');">packagetree_directive</a></tt><tt class="py-op">.</tt><tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L851"></a><tt class="py-lineno">851</tt>  <tt class="py-line"><tt class="py-name">directives</tt><tt class="py-op">.</tt><tt class="py-name">register_directive</tt><tt class="py-op">(</tt><tt class="py-string">'packagetree'</tt><tt class="py-op">,</tt> <tt id="link-247" class="py-name"><a title="epydoc.markup.restructuredtext.packagetree_directive" class="py-name" href="#" onclick="return doclink('link-247', 'packagetree_directive', 'link-243');">packagetree_directive</a></tt><t [...]
+<a name="L852"></a><tt class="py-lineno">852</tt>  <tt class="py-line"> </tt>
+<a name="_construct_packagetree"></a><div id="_construct_packagetree-def"><a name="L853"></a><tt class="py-lineno">853</tt> <a class="py-toggle" href="#" id="_construct_packagetree-toggle" onclick="return toggle('_construct_packagetree');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.restructuredtext-module.html#_construct_packagetree">_construct_packagetree</a><tt class="py-op">(</tt><tt class="py-param">docindex</tt><tt class="py-o [...]
+</div><div id="_construct_packagetree-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_construct_packagetree-expanded"><a name="L854"></a><tt class="py-lineno">854</tt>  <tt class="py-line">    <tt class="py-docstring">"""Graph generator for L{packagetree_directive}"""</tt> </tt>
+<a name="L855"></a><tt class="py-lineno">855</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">arguments</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L856"></a><tt class="py-lineno">856</tt>  <tt class="py-line">        <tt class="py-name">packages</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">docindex</tt><tt class="py-op">.</tt><tt id="link-248" class="py-name"><a title="epydoc.apidoc.DocIndex.find" class="py-name" href="#" onclick="return doclink('link-248', 'find', 'link-229');">find</a></tt><tt class="py-op">(</tt><tt id="link-249" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" clas [...]
+<a name="L857"></a><tt class="py-lineno">857</tt>  <tt class="py-line">                    <tt class="py-name">arguments</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">','</tt><tt class="py-op">,</tt><tt class="py-string">' '</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-op">)</tt>< [...]
+<a name="L858"></a><tt class="py-lineno">858</tt>  <tt class="py-line">        <tt class="py-name">packages</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">d</tt> <tt class="py-keyword">for</tt> <tt class="py-name">d</tt> <tt class="py-keyword">in</tt> <tt class="py-name">packages</tt> <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">d</tt><tt class="py-op">,</tt> <tt id="link-251" class="py-name"><a t [...]
+<a name="L859"></a><tt class="py-lineno">859</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">context</tt><tt class="py-op">,</tt> <tt id="link-252" class="py-name"><a title="epydoc.apidoc.ModuleDoc" class="py-name" href="#" onclick="return doclink('link-252', 'ModuleDoc', 'link-9');">ModuleDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L860"></a><tt class="py-lineno">860</tt>  <tt class="py-line">        <tt class="py-name">packages</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">context</tt><tt class="py-op">]</tt> </tt>
+<a name="L861"></a><tt class="py-lineno">861</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L862"></a><tt class="py-lineno">862</tt>  <tt class="py-line">        <tt id="link-253" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-253', 'log', 'link-153');">log</a></tt><tt class="py-op">.</tt><tt id="link-254" class="py-name"><a title="epydoc.checker.DocChecker.warning
+epydoc.log.warning" class="py-name" href="#" onclick="return doclink('link-254', 'warning', 'link-154');">warning</a></tt><tt class="py-op">(</tt><tt class="py-string">"Could not construct package tree: you must "</tt> </tt>
+<a name="L863"></a><tt class="py-lineno">863</tt>  <tt class="py-line">                    <tt class="py-string">"specify one or more root packages."</tt><tt class="py-op">)</tt> </tt>
+<a name="L864"></a><tt class="py-lineno">864</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
+<a name="L865"></a><tt class="py-lineno">865</tt>  <tt class="py-line"> </tt>
+<a name="L866"></a><tt class="py-lineno">866</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-255" class="py-name" targets="Function epydoc.docwriter.dotgraph.package_tree_graph()=epydoc.docwriter.dotgraph-module.html#package_tree_graph"><a title="epydoc.docwriter.dotgraph.package_tree_graph" class="py-name" href="#" onclick="return doclink('link-255', 'package_tree_graph', 'link-255');">package_tree_graph</a></tt><tt class="py-op">(</tt><tt class="py-name">p [...]
+</div><a name="L867"></a><tt class="py-lineno">867</tt>  <tt class="py-line"> </tt>
+<a name="importgraph_directive"></a><div id="importgraph_directive-def"><a name="L868"></a><tt class="py-lineno">868</tt> <a class="py-toggle" href="#" id="importgraph_directive-toggle" onclick="return toggle('importgraph_directive');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.restructuredtext-module.html#importgraph_directive">importgraph_directive</a><tt class="py-op">(</tt><tt class="py-param">name</tt><tt class="py-op">,</tt>  [...]
+<a name="L869"></a><tt class="py-lineno">869</tt>  <tt class="py-line">                        <tt class="py-param">content_offset</tt><tt class="py-op">,</tt> <tt class="py-param">block_text</tt><tt class="py-op">,</tt> <tt class="py-param">state</tt><tt class="py-op">,</tt> <tt class="py-param">state_machine</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="importgraph_directive-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="importgraph_directive-expanded"><a name="L870"></a><tt class="py-lineno">870</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-op">[</tt> <tt id="link-256" class="py-name"><a title="epydoc.docwriter.dotgraph
+epydoc.markup.restructuredtext.dotgraph" class="py-name" href="#" onclick="return doclink('link-256', 'dotgraph', 'link-13');">dotgraph</a></tt><tt class="py-op">(</tt><tt id="link-257" class="py-name" targets="Function epydoc.markup.restructuredtext._construct_importgraph()=epydoc.markup.restructuredtext-module.html#_construct_importgraph"><a title="epydoc.markup.restructuredtext._construct_importgraph" class="py-name" href="#" onclick="return doclink('link-257', '_construct_importgraph [...]
+</div><a name="L871"></a><tt class="py-lineno">871</tt>  <tt class="py-line"><tt id="link-258" class="py-name" targets="Function epydoc.markup.restructuredtext.importgraph_directive()=epydoc.markup.restructuredtext-module.html#importgraph_directive"><a title="epydoc.markup.restructuredtext.importgraph_directive" class="py-name" href="#" onclick="return doclink('link-258', 'importgraph_directive', 'link-258');">importgraph_directive</a></tt><tt class="py-op">.</tt><tt class="py-name">argu [...]
+<a name="L872"></a><tt class="py-lineno">872</tt>  <tt class="py-line"><tt id="link-259" class="py-name"><a title="epydoc.markup.restructuredtext.importgraph_directive" class="py-name" href="#" onclick="return doclink('link-259', 'importgraph_directive', 'link-258');">importgraph_directive</a></tt><tt class="py-op">.</tt><tt class="py-name">options</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-string">'dir'</tt><tt class="py-op">:</tt> <tt id="link-260" class="py-na [...]
+<a name="L873"></a><tt class="py-lineno">873</tt>  <tt class="py-line"><tt id="link-261" class="py-name"><a title="epydoc.markup.restructuredtext.importgraph_directive" class="py-name" href="#" onclick="return doclink('link-261', 'importgraph_directive', 'link-258');">importgraph_directive</a></tt><tt class="py-op">.</tt><tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L874"></a><tt class="py-lineno">874</tt>  <tt class="py-line"><tt class="py-name">directives</tt><tt class="py-op">.</tt><tt class="py-name">register_directive</tt><tt class="py-op">(</tt><tt class="py-string">'importgraph'</tt><tt class="py-op">,</tt> <tt id="link-262" class="py-name"><a title="epydoc.markup.restructuredtext.importgraph_directive" class="py-name" href="#" onclick="return doclink('link-262', 'importgraph_directive', 'link-258');">importgraph_directive</a></tt><t [...]
+<a name="L875"></a><tt class="py-lineno">875</tt>  <tt class="py-line"> </tt>
+<a name="_construct_importgraph"></a><div id="_construct_importgraph-def"><a name="L876"></a><tt class="py-lineno">876</tt> <a class="py-toggle" href="#" id="_construct_importgraph-toggle" onclick="return toggle('_construct_importgraph');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.restructuredtext-module.html#_construct_importgraph">_construct_importgraph</a><tt class="py-op">(</tt><tt class="py-param">docindex</tt><tt class="py-o [...]
+</div><div id="_construct_importgraph-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_construct_importgraph-expanded"><a name="L877"></a><tt class="py-lineno">877</tt>  <tt class="py-line">    <tt class="py-docstring">"""Graph generator for L{importgraph_directive}"""</tt> </tt>
+<a name="L878"></a><tt class="py-lineno">878</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">arguments</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L879"></a><tt class="py-lineno">879</tt>  <tt class="py-line">        <tt class="py-name">modules</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> <tt class="py-name">docindex</tt><tt class="py-op">.</tt><tt id="link-263" class="py-name"><a title="epydoc.apidoc.DocIndex.find" class="py-name" href="#" onclick="return doclink('link-263', 'find', 'link-229');">find</a></tt><tt class="py-op">(</tt><tt id="link-264" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" clas [...]
+<a name="L880"></a><tt class="py-lineno">880</tt>  <tt class="py-line">                    <tt class="py-keyword">for</tt> <tt id="link-265" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-265', 'name', 'link-230');">name</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">arguments</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt [...]
+<a name="L881"></a><tt class="py-lineno">881</tt>  <tt class="py-line">        <tt class="py-name">modules</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">d</tt> <tt class="py-keyword">for</tt> <tt class="py-name">d</tt> <tt class="py-keyword">in</tt> <tt class="py-name">modules</tt> <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">d</tt><tt class="py-op">,</tt> <tt id="link-266" class="py-name"><a tit [...]
+<a name="L882"></a><tt class="py-lineno">882</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L883"></a><tt class="py-lineno">883</tt>  <tt class="py-line">        <tt class="py-name">modules</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">d</tt> <tt class="py-keyword">for</tt> <tt class="py-name">d</tt> <tt class="py-keyword">in</tt> <tt class="py-name">docindex</tt><tt class="py-op">.</tt><tt class="py-name">root</tt> <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">d</tt><tt class=" [...]
+<a name="L884"></a><tt class="py-lineno">884</tt>  <tt class="py-line"> </tt>
+<a name="L885"></a><tt class="py-lineno">885</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-268" class="py-name" targets="Function epydoc.docwriter.dotgraph.import_graph()=epydoc.docwriter.dotgraph-module.html#import_graph"><a title="epydoc.docwriter.dotgraph.import_graph" class="py-name" href="#" onclick="return doclink('link-268', 'import_graph', 'link-268');">import_graph</a></tt><tt class="py-op">(</tt><tt class="py-name">modules</tt><tt class="py-op">, [...]
+</div><a name="L886"></a><tt class="py-lineno">886</tt>  <tt class="py-line"> </tt>
+<a name="callgraph_directive"></a><div id="callgraph_directive-def"><a name="L887"></a><tt class="py-lineno">887</tt> <a class="py-toggle" href="#" id="callgraph_directive-toggle" onclick="return toggle('callgraph_directive');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.restructuredtext-module.html#callgraph_directive">callgraph_directive</a><tt class="py-op">(</tt><tt class="py-param">name</tt><tt class="py-op">,</tt> <tt class="p [...]
+<a name="L888"></a><tt class="py-lineno">888</tt>  <tt class="py-line">                        <tt class="py-param">content_offset</tt><tt class="py-op">,</tt> <tt class="py-param">block_text</tt><tt class="py-op">,</tt> <tt class="py-param">state</tt><tt class="py-op">,</tt> <tt class="py-param">state_machine</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="callgraph_directive-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="callgraph_directive-expanded"><a name="L889"></a><tt class="py-lineno">889</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-op">[</tt> <tt id="link-269" class="py-name"><a title="epydoc.docwriter.dotgraph
+epydoc.markup.restructuredtext.dotgraph" class="py-name" href="#" onclick="return doclink('link-269', 'dotgraph', 'link-13');">dotgraph</a></tt><tt class="py-op">(</tt><tt id="link-270" class="py-name" targets="Function epydoc.markup.restructuredtext._construct_callgraph()=epydoc.markup.restructuredtext-module.html#_construct_callgraph"><a title="epydoc.markup.restructuredtext._construct_callgraph" class="py-name" href="#" onclick="return doclink('link-270', '_construct_callgraph', 'link [...]
+</div><a name="L890"></a><tt class="py-lineno">890</tt>  <tt class="py-line"><tt id="link-271" class="py-name" targets="Function epydoc.markup.restructuredtext.callgraph_directive()=epydoc.markup.restructuredtext-module.html#callgraph_directive"><a title="epydoc.markup.restructuredtext.callgraph_directive" class="py-name" href="#" onclick="return doclink('link-271', 'callgraph_directive', 'link-271');">callgraph_directive</a></tt><tt class="py-op">.</tt><tt class="py-name">arguments</tt> [...]
+<a name="L891"></a><tt class="py-lineno">891</tt>  <tt class="py-line"><tt id="link-272" class="py-name"><a title="epydoc.markup.restructuredtext.callgraph_directive" class="py-name" href="#" onclick="return doclink('link-272', 'callgraph_directive', 'link-271');">callgraph_directive</a></tt><tt class="py-op">.</tt><tt class="py-name">options</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-string">'dir'</tt><tt class="py-op">:</tt> <tt id="link-273" class="py-name"><a [...]
+<a name="L892"></a><tt class="py-lineno">892</tt>  <tt class="py-line">                                 <tt class="py-string">'add_callers'</tt><tt class="py-op">:</tt> <tt class="py-name">directives</tt><tt class="py-op">.</tt><tt class="py-name">flag</tt><tt class="py-op">,</tt> </tt>
+<a name="L893"></a><tt class="py-lineno">893</tt>  <tt class="py-line">                                 <tt class="py-string">'add_callees'</tt><tt class="py-op">:</tt> <tt class="py-name">directives</tt><tt class="py-op">.</tt><tt class="py-name">flag</tt><tt class="py-op">}</tt> </tt>
+<a name="L894"></a><tt class="py-lineno">894</tt>  <tt class="py-line"><tt id="link-274" class="py-name"><a title="epydoc.markup.restructuredtext.callgraph_directive" class="py-name" href="#" onclick="return doclink('link-274', 'callgraph_directive', 'link-271');">callgraph_directive</a></tt><tt class="py-op">.</tt><tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L895"></a><tt class="py-lineno">895</tt>  <tt class="py-line"><tt class="py-name">directives</tt><tt class="py-op">.</tt><tt class="py-name">register_directive</tt><tt class="py-op">(</tt><tt class="py-string">'callgraph'</tt><tt class="py-op">,</tt> <tt id="link-275" class="py-name"><a title="epydoc.markup.restructuredtext.callgraph_directive" class="py-name" href="#" onclick="return doclink('link-275', 'callgraph_directive', 'link-271');">callgraph_directive</a></tt><tt class= [...]
+<a name="L896"></a><tt class="py-lineno">896</tt>  <tt class="py-line"> </tt>
+<a name="_construct_callgraph"></a><div id="_construct_callgraph-def"><a name="L897"></a><tt class="py-lineno">897</tt> <a class="py-toggle" href="#" id="_construct_callgraph-toggle" onclick="return toggle('_construct_callgraph');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.markup.restructuredtext-module.html#_construct_callgraph">_construct_callgraph</a><tt class="py-op">(</tt><tt class="py-param">docindex</tt><tt class="py-op">,</tt> <t [...]
+</div><div id="_construct_callgraph-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_construct_callgraph-expanded"><a name="L898"></a><tt class="py-lineno">898</tt>  <tt class="py-line">    <tt class="py-docstring">"""Graph generator for L{callgraph_directive}"""</tt> </tt>
+<a name="L899"></a><tt class="py-lineno">899</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">arguments</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L900"></a><tt class="py-lineno">900</tt>  <tt class="py-line">        <tt class="py-name">docs</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">docindex</tt><tt class="py-op">.</tt><tt id="link-276" class="py-name"><a title="epydoc.apidoc.DocIndex.find" class="py-name" href="#" onclick="return doclink('link-276', 'find', 'link-229');">find</a></tt><tt class="py-op">(</tt><tt id="link-277" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="p [...]
+<a name="L901"></a><tt class="py-lineno">901</tt>  <tt class="py-line">                 <tt class="py-name">arguments</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">','</tt><tt class="py-op">,</tt><tt class="py-string">' '</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt  [...]
+<a name="L902"></a><tt class="py-lineno">902</tt>  <tt class="py-line">        <tt class="py-name">docs</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">doc</tt> <tt class="py-keyword">for</tt> <tt class="py-name">doc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">docs</tt> <tt class="py-keyword">if</tt> <tt class="py-name">doc</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">]</tt> </tt>
+<a name="L903"></a><tt class="py-lineno">903</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L904"></a><tt class="py-lineno">904</tt>  <tt class="py-line">        <tt class="py-name">docs</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">context</tt><tt class="py-op">]</tt> </tt>
+<a name="L905"></a><tt class="py-lineno">905</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-279" class="py-name" targets="Function epydoc.docwriter.dotgraph.call_graph()=epydoc.docwriter.dotgraph-module.html#call_graph"><a title="epydoc.docwriter.dotgraph.call_graph" class="py-name" href="#" onclick="return doclink('link-279', 'call_graph', 'link-279');">call_graph</a></tt><tt class="py-op">(</tt><tt class="py-name">docs</tt><tt class="py-op">,</tt> <tt cla [...]
+</div><a name="L906"></a><tt class="py-lineno">906</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:09:59 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.markup.restructuredtext.OptimizedReporter-class.html b/doc/api/epydoc.markup.restructuredtext.OptimizedReporter-class.html
new file mode 100644
index 0000000..e9f1aad
--- /dev/null
+++ b/doc/api/epydoc.markup.restructuredtext.OptimizedReporter-class.html
@@ -0,0 +1,346 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.markup.restructuredtext.OptimizedReporter</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.markup-module.html">Package markup</a> ::
+        <a href="epydoc.markup.restructuredtext-module.html">Module restructuredtext</a> ::
+        Class OptimizedReporter
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.markup.restructuredtext.OptimizedReporter-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class OptimizedReporter</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#OptimizedReporter">source code</a></span></p>
+<center>
+<center>  <map id="uml_class_diagram_for_epydoc_m_18" name="uml_class_diagram_for_epydoc_m_18">
+<area shape="rect" href="javascript:void(0);" title="List of names for system message levels, indexed by level." alt="" coords="18,28,682,47" />
+<area shape="rect" href="javascript:void(0);" title="The path to or description of the source data." alt="" coords="18,47,682,65" />
+<area shape="rect" href="javascript:void(0);" title="The character encoding for the stderr output." alt="" coords="18,65,682,84" />
+<area shape="rect" href="javascript:void(0);" title="The character encoding error handler." alt="" coords="18,84,682,103" />
+<area shape="rect" href="javascript:void(0);" title="Show debug (level=0) system messages?" alt="" coords="18,103,682,121" />
+<area shape="rect" href="javascript:void(0);" title="The level at or above which warning output will be sent to self.stream." alt="" coords="18,121,682,140" />
+<area shape="rect" href="javascript:void(0);" title="The level at or above which SystemMessage exceptions will be raised, halting execution." alt="" coords="18,140,682,159" />
+<area shape="rect" href="javascript:void(0);" title="Where warning output is sent." alt="" coords="18,159,682,177" />
+<area shape="rect" href="javascript:void(0);" title="List of bound methods or functions to call with each system_message created." alt="" coords="18,177,682,196" />
+<area shape="rect" href="javascript:void(0);" title="The highest level system message generated so far." alt="" coords="18,196,682,215" />
+<area shape="rect" href="javascript:void(0);" title="docutils.utils.Reporter.DEBUG_LEVEL" alt="" coords="18,215,682,233" />
+<area shape="rect" href="javascript:void(0);" title="docutils.utils.Reporter.ERROR_LEVEL" alt="" coords="18,233,682,252" />
+<area shape="rect" href="javascript:void(0);" title="docutils.utils.Reporter.INFO_LEVEL" alt="" coords="18,252,682,271" />
+<area shape="rect" href="javascript:void(0);" title="docutils.utils.Reporter.SEVERE_LEVEL" alt="" coords="18,271,682,289" />
+<area shape="rect" href="javascript:void(0);" title="docutils.utils.Reporter.WARNING_LEVEL" alt="" coords="18,289,682,308" />
+<area shape="rect" href="javascript:void(0);" title="docutils.utils.Reporter.__init__" alt="" coords="18,311,682,329" />
+<area shape="rect" href="javascript:void(0);" title="docutils.utils.Reporter.set_conditions" alt="" coords="18,329,682,348" />
+<area shape="rect" href="javascript:void(0);" title="The observer parameter is a function or bound method which takes one argument, a nodes.system_message instance." alt="" coords="18,348,682,367" />
+<area shape="rect" href="javascript:void(0);" title="docutils.utils.Reporter.detach_observer" alt="" coords="18,367,682,385" />
+<area shape="rect" href="javascript:void(0);" title="docutils.utils.Reporter.notify_observers" alt="" coords="18,385,682,404" />
+<area shape="rect" href="javascript:void(0);" title="Return a system_message object." alt="" coords="18,404,682,423" />
+<area shape="rect" href="javascript:void(0);" title="Level-1, "INFO": a minor issue that can be ignored." alt="" coords="18,423,682,441" />
+<area shape="rect" href="javascript:void(0);" title="Level-2, "WARNING": an issue that should be addressed." alt="" coords="18,441,682,460" />
+<area shape="rect" href="javascript:void(0);" title="Level-3, "ERROR": an error that should be addressed." alt="" coords="18,460,682,479" />
+<area shape="rect" href="javascript:void(0);" title="Level-4, "SEVERE": a severe error that must be addressed." alt="" coords="18,479,682,497" />
+<area shape="rect" href="javascript:void(0);" title="Info/warning/error reporter and system_message element generator." alt="" coords="6,5,694,504" />
+<area shape="rect" href="epydoc.markup.restructuredtext.OptimizedReporter-class.html#debug" title="Level-0, "DEBUG": an internal reporting issue." alt="" coords="263,553,436,572" />
+<area shape="rect" href="epydoc.markup.restructuredtext.OptimizedReporter-class.html" title="A reporter that ignores all debug messages." alt="" coords="251,523,448,579" />
+</map>
+  <img src="uml_class_diagram_for_epydoc_m_18.gif" alt='' usemap="#uml_class_diagram_for_epydoc_m_18" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<p>A reporter that ignores all debug messages.  This is used to shave a 
+  couple seconds off of epydoc's run time, since docutils isn't very fast 
+  about processing its own debug messages.</p>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.restructuredtext.OptimizedReporter-class.html#debug" class="summary-sig-name">debug</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">*args</span>,
+        <span class="summary-sig-arg">**kwargs</span>)</span><br />
+      Level-0, "DEBUG": an internal reporting issue.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#OptimizedReporter.debug">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_debug_2-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_debug_2-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_debug_2" name="call_graph_for_debug_2">
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.Node.walk()" alt="" coords="84,6,311,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext.OptimizedReporter-class.html#debug" title="debug()" alt="" coords="438,90,518,122" />
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.Node.walkabout()" alt="" coords="63,62,332,94" />
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.NodeVisitor.dispatch_departure()" alt="" coords="6,118,390,150" />
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.NodeVisitor.dispatch_visit()" alt="" coords="24,174,371,206" />
+</map>
+  <img src="call_graph_for_debug_2.gif" alt='' usemap="#call_graph_for_debug_2" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>docutils.utils.Reporter</code></b>:
+      <code>__init__</code>,
+      <code>attach_observer</code>,
+      <code>detach_observer</code>,
+      <code>error</code>,
+      <code>info</code>,
+      <code>notify_observers</code>,
+      <code>set_conditions</code>,
+      <code>severe</code>,
+      <code>system_message</code>,
+      <code>warning</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Class Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-ClassVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>docutils.utils.Reporter</code></b>:
+      <code>DEBUG_LEVEL</code>,
+      <code>ERROR_LEVEL</code>,
+      <code>INFO_LEVEL</code>,
+      <code>SEVERE_LEVEL</code>,
+      <code>WARNING_LEVEL</code>,
+      <code>levels</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== INSTANCE VARIABLES ==================== -->
+<a name="section-InstanceVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>docutils.utils.Reporter</code></b>:
+      <code>debug_flag</code>,
+      <code>encoding</code>,
+      <code>error_handler</code>,
+      <code>halt_level</code>,
+      <code>max_level</code>,
+      <code>observers</code>,
+      <code>report_level</code>,
+      <code>source</code>,
+      <code>stream</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Method Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-MethodDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="debug"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">debug</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">*args</span>,
+        <span class="sig-arg">**kwargs</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#OptimizedReporter.debug">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_debug_2-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_debug_2-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_debug_2" name="call_graph_for_debug_2">
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.Node.walk()" alt="" coords="84,6,311,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext.OptimizedReporter-class.html#debug" title="debug()" alt="" coords="438,90,518,122" />
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.Node.walkabout()" alt="" coords="63,62,332,94" />
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.NodeVisitor.dispatch_departure()" alt="" coords="6,118,390,150" />
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.NodeVisitor.dispatch_visit()" alt="" coords="24,174,371,206" />
+</map>
+  <img src="call_graph_for_debug_2.gif" alt='' usemap="#call_graph_for_debug_2" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  Level-0, "DEBUG": an internal reporting issue. Typically, there is no
+effect on the processing. Level-0 system messages are handled
+separately from the others.
+  <dl class="fields">
+    <dt>Overrides:
+        docutils.utils.Reporter.debug
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:08:45 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.markup.restructuredtext.ParsedRstDocstring-class.html b/doc/api/epydoc.markup.restructuredtext.ParsedRstDocstring-class.html
new file mode 100644
index 0000000..adadee6
--- /dev/null
+++ b/doc/api/epydoc.markup.restructuredtext.ParsedRstDocstring-class.html
@@ -0,0 +1,750 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.markup.restructuredtext.ParsedRstDocstring</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.markup-module.html">Package markup</a> ::
+        <a href="epydoc.markup.restructuredtext-module.html">Module restructuredtext</a> ::
+        Class ParsedRstDocstring
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class ParsedRstDocstring</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#ParsedRstDocstring">source code</a></span></p>
+<center>
+<center>  <map id="uml_class_diagram_for_epydoc_m_19" name="uml_class_diagram_for_epydoc_m_19">
+<area shape="rect" href="epydoc.markup.ParsedDocstring-class.html#concatenate" title="Returns:  A new parsed docstring containing the concatination of this docstring and  other." alt="" coords="209,36,356,55" />
+<area shape="rect" href="epydoc.markup.ParsedDocstring-class.html#__add__" title="epydoc.markup.ParsedDocstring.__add__" alt="" coords="209,55,356,74" />
+<area shape="rect" href="epydoc.markup.ParsedDocstring-class.html" title="A standard intermediate representation for parsed docstrings that can be used to generate output." alt="" coords="197,6,368,80" />
+<area shape="rect" href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html#__init__" title="epydoc.markup.restructuredtext.ParsedRstDocstring.__init__" alt="" coords="17,130,548,148" />
+<area shape="rect" href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html#split_fields" title="Split this docstring into its body and its fields." alt="" coords="17,148,548,167" />
+<area shape="rect" href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html#summary" title="Returns:  A pair consisting of a short summary of this docstring and a boolean value  indicating whether there is further documentation in addition to the  summary." alt="" coords="17,167,548,186" />
+<area shape="rect" href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html#to_html" title="Translate this docstring to HTML." alt="" coords="17,186,548,204" />
+<area shape="rect" href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html#to_latex" title="Translate this docstring to LaTeX." alt="" coords="17,204,548,223" />
+<area shape="rect" href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html#to_plaintext" title="Translate this docstring to plaintext." alt="" coords="17,223,548,242" />
+<area shape="rect" href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html#__repr__" title="epydoc.markup.restructuredtext.ParsedRstDocstring.__repr__" alt="" coords="17,242,548,260" />
+<area shape="rect" href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html#index_terms" title="Returns:  The list of index terms that are defined in this docstring." alt="" coords="17,260,548,279" />
+<area shape="rect" href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html" title="An encoded version of a ReStructuredText docstring." alt="" coords="5,99,560,286" />
+</map>
+  <img src="uml_class_diagram_for_epydoc_m_19.gif" alt='' usemap="#uml_class_diagram_for_epydoc_m_19" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<p>An encoded version of a ReStructuredText docstring.  The contents of 
+  the docstring are encoded in the <a 
+  href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html#_document"
+  class="link" onclick="show_private();">_document</a> instance 
+  variable.</p>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">document</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#ParsedRstDocstring.__init__">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for___init___42-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for___init___42-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for___init___42" name="call_graph_for___init___42">
+<area shape="rect" href="javascript:void(0);" title="docutils.utils.Reporter.__init__()" alt="" coords="507,62,774,94" />
+<area shape="rect" href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html#__init__" title="__init__()" alt="" coords="362,62,458,94" />
+<area shape="rect" href="epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html#_add_field" title="_SplitFieldsTranslator._add_field()" alt="" coords="16,6,302,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext._SummaryExtractor-class.html#visit_paragraph" title="_SummaryExtractor.visit_paragraph()" alt="" coords="6,62,312,94" />
+<area shape="rect" href="epydoc.markup.restructuredtext-module.html#parse_docstring" title="parse_docstring()" alt="" coords="83,118,235,150" />
+</map>
+  <img src="call_graph_for___init___42.gif" alt='' usemap="#call_graph_for___init___42" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>(<a href="epydoc.markup.ParsedDocstring-class.html" 
+      class="link">ParsedDocstring</a>, list of <a 
+      href="epydoc.markup.Field-class.html" class="link">Field</a>)</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html#split_fields" class="summary-sig-name">split_fields</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">errors</span>=<span class="summary-sig-default">None</span>)</span><br />
+      Split this docstring into its body and its fields.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#ParsedRstDocstring.split_fields">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_split_fields_5-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_split_fields_5-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_split_fields_5" name="call_graph_for_split_fields_5">
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.Node.walk()" alt="" coords="512,6,739,38" />
+<area shape="rect" href="epydoc.docstringparser-module.html#parse_docstring" title="docstringparser.parse_docstring()" alt="" coords="5,34,277,66" />
+<area shape="rect" href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html#split_fields" title="split_fields()" alt="" coords="325,34,443,66" />
+<area shape="rect" href="epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html#__init__" title="_SplitFieldsTranslator.__init__()" alt="" coords="492,62,759,94" />
+</map>
+  <img src="call_graph_for_split_fields_5.gif" alt='' usemap="#call_graph_for_split_fields_5" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">(<a href="epydoc.markup.ParsedDocstring-class.html" 
+      class="link">ParsedDocstring</a>, <code>bool</code>)</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html#summary" class="summary-sig-name">summary</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Returns:
+      A pair consisting of a short summary of this docstring and a boolean 
+      value indicating whether there is further documentation in addition 
+      to the summary.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#ParsedRstDocstring.summary">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_summary_7-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_summary_7-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_summary_7" name="call_graph_for_summary_7">
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.Node.walk()" alt="" coords="491,6,717,38" />
+<area shape="rect" href="epydoc.docstringparser-module.html#parse_docstring" title="docstringparser.parse_docstring()" alt="" coords="5,34,277,66" />
+<area shape="rect" href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html#summary" title="summary()" alt="" coords="325,34,429,66" />
+<area shape="rect" href="epydoc.markup.restructuredtext._SummaryExtractor-class.html#__init__" title="_SummaryExtractor.__init__()" alt="" coords="479,62,729,94" />
+</map>
+  <img src="call_graph_for_summary_7.gif" alt='' usemap="#call_graph_for_summary_7" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>string</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html#to_html" class="summary-sig-name">to_html</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">docstring_linker</span>,
+        <span class="summary-sig-arg">directory</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">docindex</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">context</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">**options</span>)</span><br />
+      Translate this docstring to HTML.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#ParsedRstDocstring.to_html">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_to_html_7-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_to_html_7-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_to_html_7" name="call_graph_for_to_html_7">
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.Node.walkabout()" alt="" coords="602,34,871,66" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#description" title="docwriter.html.HTMLWriter.description()" alt="" coords="34,6,370,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html#to_html" title="to_html()" alt="" coords="447,62,538,94" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#docstring_to_html" title="docwriter.html.HTMLWriter.docstring_to_html()" alt="" coords="7,62,396,94" />
+<area shape="rect" href="epydoc.markup.ConcatenatedDocstring-class.html#to_html" title="ConcatenatedDocstring.to_html()" alt="" coords="66,118,338,150" />
+<area shape="rect" href="epydoc.markup.restructuredtext._EpydocHTMLTranslator-class.html#__init__" title="_EpydocHTMLTranslator.__init__()" alt="" coords="587,90,886,122" />
+</map>
+  <img src="call_graph_for_to_html_7.gif" alt='' usemap="#call_graph_for_to_html_7" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>string</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html#to_latex" class="summary-sig-name">to_latex</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">docstring_linker</span>,
+        <span class="summary-sig-arg">**options</span>)</span><br />
+      Translate this docstring to LaTeX.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#ParsedRstDocstring.to_latex">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>string</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html#to_plaintext" class="summary-sig-name">to_plaintext</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">docstring_linker</span>,
+        <span class="summary-sig-arg">**options</span>)</span><br />
+      Translate this docstring to plaintext.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#ParsedRstDocstring.to_plaintext">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_to_plaintext_7-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_to_plaintext_7-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_to_plaintext_7" name="call_graph_for_to_plaintext_7">
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.Element.astext()" alt="" coords="679,62,935,94" />
+<area shape="rect" href="epydoc.docstringparser-module.html#_descr_to_docstring_field" title="docstringparser._descr_to_docstring_field()" alt="" coords="59,6,405,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html#to_plaintext" title="to_plaintext()" alt="" coords="507,62,629,94" />
+<area shape="rect" href="epydoc.docstringparser-module.html#_descr_to_identifiers" title="docstringparser._descr_to_identifiers()" alt="" coords="77,62,387,94" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_summary" title="docwriter.dotgraph.DotGraphUmlClassNode._summary()" alt="" coords="7,118,457,150" />
+</map>
+  <img src="call_graph_for_to_plaintext_7.gif" alt='' usemap="#call_graph_for_to_plaintext_7" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__repr__"></a><span class="summary-sig-name">__repr__</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#ParsedRstDocstring.__repr__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>list</code> of <code>ParsedDocstring</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html#index_terms" class="summary-sig-name">index_terms</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Returns:
+      The list of index terms that are defined in this docstring.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#ParsedRstDocstring.index_terms">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_index_terms_4-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_index_terms_4-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_index_terms_4" name="call_graph_for_index_terms_4">
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.Node.walkabout()" alt="" coords="659,6,928,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_terms_from_docstring" title="docwriter.html.HTMLWriter._terms_from_docstring()" alt="" coords="5,34,435,66" />
+<area shape="rect" href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html#index_terms" title="index_terms()" alt="" coords="483,34,611,66" />
+<area shape="rect" href="epydoc.markup.restructuredtext._TermsExtractor-class.html#__init__" title="_TermsExtractor.__init__()" alt="" coords="680,62,907,94" />
+</map>
+  <img src="call_graph_for_index_terms_4.gif" alt='' usemap="#call_graph_for_index_terms_4" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.markup.ParsedDocstring-class.html">ParsedDocstring</a></code></b>:
+      <code><a href="epydoc.markup.ParsedDocstring-class.html#__add__">__add__</a></code>,
+      <code><a href="epydoc.markup.ParsedDocstring-class.html#concatenate">concatenate</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== INSTANCE VARIABLES ==================== -->
+<a name="section-InstanceVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>docutils.nodes.document</code></span>
+    </td><td class="summary">
+        <a name="_document"></a><span class="summary-name">_document</span><br />
+      A ReStructuredText document, encoding the docstring.
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Method Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-MethodDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">document</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#ParsedRstDocstring.__init__">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for___init___42-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for___init___42-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for___init___42" name="call_graph_for___init___42">
+<area shape="rect" href="javascript:void(0);" title="docutils.utils.Reporter.__init__()" alt="" coords="507,62,774,94" />
+<area shape="rect" href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html#__init__" title="__init__()" alt="" coords="362,62,458,94" />
+<area shape="rect" href="epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html#_add_field" title="_SplitFieldsTranslator._add_field()" alt="" coords="16,6,302,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext._SummaryExtractor-class.html#visit_paragraph" title="_SummaryExtractor.visit_paragraph()" alt="" coords="6,62,312,94" />
+<area shape="rect" href="epydoc.markup.restructuredtext-module.html#parse_docstring" title="parse_docstring()" alt="" coords="83,118,235,150" />
+</map>
+  <img src="call_graph_for___init___42.gif" alt='' usemap="#call_graph_for___init___42" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>document</code></strong> (<code>docutils.nodes.document</code>)</li>
+    </ul></dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="split_fields"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">split_fields</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">errors</span>=<span class="sig-default">None</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#ParsedRstDocstring.split_fields">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_split_fields_5-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_split_fields_5-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_split_fields_5" name="call_graph_for_split_fields_5">
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.Node.walk()" alt="" coords="512,6,739,38" />
+<area shape="rect" href="epydoc.docstringparser-module.html#parse_docstring" title="docstringparser.parse_docstring()" alt="" coords="5,34,277,66" />
+<area shape="rect" href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html#split_fields" title="split_fields()" alt="" coords="325,34,443,66" />
+<area shape="rect" href="epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html#__init__" title="_SplitFieldsTranslator.__init__()" alt="" coords="492,62,759,94" />
+</map>
+  <img src="call_graph_for_split_fields_5.gif" alt='' usemap="#call_graph_for_split_fields_5" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Split this docstring into its body and its fields.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>errors</code></strong> - A list where any errors generated during splitting will be 
+          stored.  If no list is specified, then errors will be ignored.</li>
+    </ul></dd>
+    <dt>Returns: <code>(<a href="epydoc.markup.ParsedDocstring-class.html" 
+      class="link">ParsedDocstring</a>, list of <a 
+      href="epydoc.markup.Field-class.html" class="link">Field</a>)</code></dt>
+        <dd>A tuple <code>(<i class="math">body</i>, <i 
+          class="math">fields</i>)</code>, where <code><i 
+          class="math">body</i></code> is the main body of this docstring, 
+          and <code><i class="math">fields</i></code> is a list of its 
+          fields.  If the resulting body is empty, return <code>None</code>
+          for the body.</dd>
+    <dt>Overrides:
+        <a href="epydoc.markup.ParsedDocstring-class.html#split_fields">ParsedDocstring.split_fields</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="summary"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">summary</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#ParsedRstDocstring.summary">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_summary_7-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_summary_7-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_summary_7" name="call_graph_for_summary_7">
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.Node.walk()" alt="" coords="491,6,717,38" />
+<area shape="rect" href="epydoc.docstringparser-module.html#parse_docstring" title="docstringparser.parse_docstring()" alt="" coords="5,34,277,66" />
+<area shape="rect" href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html#summary" title="summary()" alt="" coords="325,34,429,66" />
+<area shape="rect" href="epydoc.markup.restructuredtext._SummaryExtractor-class.html#__init__" title="_SummaryExtractor.__init__()" alt="" coords="479,62,729,94" />
+</map>
+  <img src="call_graph_for_summary_7.gif" alt='' usemap="#call_graph_for_summary_7" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  
+  <dl class="fields">
+    <dt>Returns: (<a href="epydoc.markup.ParsedDocstring-class.html" 
+      class="link">ParsedDocstring</a>, <code>bool</code>)</dt>
+        <dd>A pair consisting of a short summary of this docstring and a 
+          boolean value indicating whether there is further documentation 
+          in addition to the summary. Typically, the summary consists of 
+          the first sentence of the docstring.</dd>
+    <dt>Overrides:
+        <a href="epydoc.markup.ParsedDocstring-class.html#summary">ParsedDocstring.summary</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="to_html"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">to_html</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">docstring_linker</span>,
+        <span class="sig-arg">directory</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">docindex</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">context</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">**options</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#ParsedRstDocstring.to_html">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_to_html_7-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_to_html_7-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_to_html_7" name="call_graph_for_to_html_7">
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.Node.walkabout()" alt="" coords="602,34,871,66" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#description" title="docwriter.html.HTMLWriter.description()" alt="" coords="34,6,370,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html#to_html" title="to_html()" alt="" coords="447,62,538,94" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#docstring_to_html" title="docwriter.html.HTMLWriter.docstring_to_html()" alt="" coords="7,62,396,94" />
+<area shape="rect" href="epydoc.markup.ConcatenatedDocstring-class.html#to_html" title="ConcatenatedDocstring.to_html()" alt="" coords="66,118,338,150" />
+<area shape="rect" href="epydoc.markup.restructuredtext._EpydocHTMLTranslator-class.html#__init__" title="_EpydocHTMLTranslator.__init__()" alt="" coords="587,90,886,122" />
+</map>
+  <img src="call_graph_for_to_html_7.gif" alt='' usemap="#call_graph_for_to_html_7" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Translate this docstring to HTML.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>docstring_linker</code></strong> - An HTML translator for crossreference links into and out of the 
+          docstring.</li>
+        <li><strong class="pname"><code>options</code></strong> - Any extra options for the output.  Unknown options are ignored.</li>
+    </ul></dd>
+    <dt>Returns: <code>string</code></dt>
+        <dd>An HTML fragment that encodes this docstring.</dd>
+    <dt>Overrides:
+        <a href="epydoc.markup.ParsedDocstring-class.html#to_html">ParsedDocstring.to_html</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="to_latex"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">to_latex</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">docstring_linker</span>,
+        <span class="sig-arg">**options</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#ParsedRstDocstring.to_latex">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Translate this docstring to LaTeX.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>docstring_linker</code></strong> - A LaTeX translator for crossreference links into and out of the 
+          docstring.</li>
+        <li><strong class="pname"><code>options</code></strong> - Any extra options for the output.  Unknown options are ignored.</li>
+    </ul></dd>
+    <dt>Returns: <code>string</code></dt>
+        <dd>A LaTeX fragment that encodes this docstring.</dd>
+    <dt>Overrides:
+        <a href="epydoc.markup.ParsedDocstring-class.html#to_latex">ParsedDocstring.to_latex</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="to_plaintext"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">to_plaintext</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">docstring_linker</span>,
+        <span class="sig-arg">**options</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#ParsedRstDocstring.to_plaintext">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_to_plaintext_7-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_to_plaintext_7-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_to_plaintext_7" name="call_graph_for_to_plaintext_7">
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.Element.astext()" alt="" coords="679,62,935,94" />
+<area shape="rect" href="epydoc.docstringparser-module.html#_descr_to_docstring_field" title="docstringparser._descr_to_docstring_field()" alt="" coords="59,6,405,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html#to_plaintext" title="to_plaintext()" alt="" coords="507,62,629,94" />
+<area shape="rect" href="epydoc.docstringparser-module.html#_descr_to_identifiers" title="docstringparser._descr_to_identifiers()" alt="" coords="77,62,387,94" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_summary" title="docwriter.dotgraph.DotGraphUmlClassNode._summary()" alt="" coords="7,118,457,150" />
+</map>
+  <img src="call_graph_for_to_plaintext_7.gif" alt='' usemap="#call_graph_for_to_plaintext_7" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Translate this docstring to plaintext.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>docstring_linker</code></strong> - A plaintext translator for crossreference links into and out of 
+          the docstring.</li>
+        <li><strong class="pname"><code>options</code></strong> - Any extra options for the output.  Unknown options are ignored.</li>
+    </ul></dd>
+    <dt>Returns: <code>string</code></dt>
+        <dd>A plaintext fragment that encodes this docstring.</dd>
+    <dt>Overrides:
+        <a href="epydoc.markup.ParsedDocstring-class.html#to_plaintext">ParsedDocstring.to_plaintext</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="index_terms"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">index_terms</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#ParsedRstDocstring.index_terms">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_index_terms_4-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_index_terms_4-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_index_terms_4" name="call_graph_for_index_terms_4">
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.Node.walkabout()" alt="" coords="659,6,928,38" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#_terms_from_docstring" title="docwriter.html.HTMLWriter._terms_from_docstring()" alt="" coords="5,34,435,66" />
+<area shape="rect" href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html#index_terms" title="index_terms()" alt="" coords="483,34,611,66" />
+<area shape="rect" href="epydoc.markup.restructuredtext._TermsExtractor-class.html#__init__" title="_TermsExtractor.__init__()" alt="" coords="680,62,907,94" />
+</map>
+  <img src="call_graph_for_index_terms_4.gif" alt='' usemap="#call_graph_for_index_terms_4" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  
+  <dl class="fields">
+    <dt>Returns: <code>list</code> of <code>ParsedDocstring</code></dt>
+        <dd>The list of index terms that are defined in this docstring.  Each
+          of these items will be added to the index page of the 
+          documentation.</dd>
+    <dt>Overrides:
+        <a href="epydoc.markup.ParsedDocstring-class.html#index_terms">ParsedDocstring.index_terms</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:08:47 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.markup.restructuredtext._DocumentPseudoWriter-class.html b/doc/api/epydoc.markup.restructuredtext._DocumentPseudoWriter-class.html
new file mode 100644
index 0000000..799575d
--- /dev/null
+++ b/doc/api/epydoc.markup.restructuredtext._DocumentPseudoWriter-class.html
@@ -0,0 +1,413 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.markup.restructuredtext._DocumentPseudoWriter</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.markup-module.html">Package markup</a> ::
+        <a href="epydoc.markup.restructuredtext-module.html">Module restructuredtext</a> ::
+        Class _DocumentPseudoWriter
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.markup.restructuredtext._DocumentPseudoWriter-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class _DocumentPseudoWriter</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#_DocumentPseudoWriter">source code</a></span></p>
+<center>
+<center>  <map id="uml_class_diagram_for_epydoc_m_20" name="uml_class_diagram_for_epydoc_m_20">
+<area shape="rect" href="javascript:void(0);" title="Name of the component type ('reader', 'parser', 'writer')." alt="" coords="124,266,329,284" />
+<area shape="rect" href="javascript:void(0);" title="The name of the config file section specific to this component (lowercase, no brackets)." alt="" coords="124,284,329,303" />
+<area shape="rect" href="javascript:void(0);" title="Final translated form of document (Unicode string for text, binary string for other forms); set by translate." alt="" coords="124,303,329,322" />
+<area shape="rect" href="javascript:void(0);" title="Language module for the document; set by write." alt="" coords="124,322,329,340" />
+<area shape="rect" href="javascript:void(0);" title="docutils.io Output object; where to write the document." alt="" coords="124,340,329,359" />
+<area shape="rect" href="javascript:void(0);" title="Mapping of document part names to fragments of self.output." alt="" coords="124,359,329,378" />
+<area shape="rect" href="javascript:void(0);" title="Transforms required by this class." alt="" coords="124,380,329,399" />
+<area shape="rect" href="javascript:void(0);" title="Process a document into its final form." alt="" coords="124,399,329,418" />
+<area shape="rect" href="javascript:void(0);" title="Assemble the self.parts dictionary." alt="" coords="124,418,329,436" />
+<area shape="rect" href="javascript:void(0);" title="Abstract base class for docutils Writers." alt="" coords="112,243,341,443" />
+<area shape="rect" href="epydoc.markup.restructuredtext._DocumentPseudoWriter-class.html#document" title="The document to write (Docutils doctree); set by write." alt="" coords="116,484,337,503" />
+<area shape="rect" href="epydoc.markup.restructuredtext._DocumentPseudoWriter-class.html#__init__" title="epydoc.markup.restructuredtext._DocumentPseudoWriter.__init__" alt="" coords="116,506,337,524" />
+<area shape="rect" href="epydoc.markup.restructuredtext._DocumentPseudoWriter-class.html#translate" title="Do final translation of self.document into self.output." alt="" coords="116,524,337,543" />
+<area shape="rect" href="epydoc.markup.restructuredtext._DocumentPseudoWriter-class.html" title="A pseudo-writer for the docutils framework, that can be used to access the document itself." alt="" coords="104,462,349,550" />
+<area shape="rect" href="javascript:void(0);" title="docutils.TransformSpec.default_transforms" alt="" coords="17,56,201,75" />
+<area shape="rect" href="javascript:void(0);" title="List of functions to try to resolve unknown references." alt="" coords="17,75,201,94" />
+<area shape="rect" href="javascript:void(0);" title="Runtime transform specification base class." alt="" coords="5,34,213,108" />
+<area shape="rect" href="javascript:void(0);" title="Names for this component." alt="" coords="160,178,293,196" />
+<area shape="rect" href="javascript:void(0);" title="Is format supported by this component?" alt="" coords="160,199,293,218" />
+<area shape="rect" href="javascript:void(0);" title="Base class for Docutils components." alt="" coords="148,155,305,224" />
+<area shape="rect" href="javascript:void(0);" title="Runtime settings specification." alt="" coords="255,28,436,47" />
+<area shape="rect" href="javascript:void(0);" title="A dictionary of defaults for settings not in settings_spec (internal settings, intended to be inaccessible by command-line and config file)." alt="" coords="255,47,436,66" />
+<area shape="rect" href="javascript:void(0);" title="A dictionary of auxiliary defaults, to override defaults for settings defined in other components." alt="" coords="255,66,436,84" />
+<area shape="rect" href="javascript:void(0);" title="Settings containing filesystem paths." alt="" coords="255,84,436,103" />
+<area shape="rect" href="javascript:void(0);" title="A list of names of config file sections that are to be applied before config_section, in order (from general to specific)." alt="" coords="255,103,436,122" />
+<area shape="rect" href="javascript:void(0);" title="Runtime setting specification base class." alt="" coords="243,6,448,136" />
+</map>
+  <img src="uml_class_diagram_for_epydoc_m_20.gif" alt='' usemap="#uml_class_diagram_for_epydoc_m_20" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<p>A pseudo-writer for the docutils framework, that can be used to access
+  the document itself.  The output of <code>_DocumentPseudoWriter</code> is
+  just an empty string; but after it has been used, the most recently 
+  processed document is available as the instance variable 
+  <code>document</code></p>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.restructuredtext._DocumentPseudoWriter-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#_DocumentPseudoWriter.__init__">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for___init___43-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for___init___43-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for___init___43" name="call_graph_for___init___43">
+<area shape="rect" href="javascript:void(0);" title="docutils.writers.Writer.__init__()" alt="" coords="355,6,624,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext._DocumentPseudoWriter-class.html#__init__" title="__init__()" alt="" coords="209,6,305,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext-module.html#parse_docstring" title="parse_docstring()" alt="" coords="7,6,159,38" />
+</map>
+  <img src="call_graph_for___init___43.gif" alt='' usemap="#call_graph_for___init___43" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.restructuredtext._DocumentPseudoWriter-class.html#translate" class="summary-sig-name">translate</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Do final translation of <a href="epydoc.markup.restructuredtext._DocumentPseudoWriter-class.html#document" class="link">self.document</a> into self.output.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#_DocumentPseudoWriter.translate">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_translate-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_translate-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_translate" name="call_graph_for_translate">
+<area shape="rect" href="javascript:void(0);" title="docutils.writers.Writer.write()" alt="" coords="6,6,251,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext._DocumentPseudoWriter-class.html#translate" title="translate()" alt="" coords="300,6,396,38" />
+</map>
+  <img src="call_graph_for_translate.gif" alt='' usemap="#call_graph_for_translate" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>docutils.writers.Writer</code></b>:
+      <code>assemble_parts</code>,
+      <code>get_transforms</code>,
+      <code>write</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>docutils.Component</code></b>:
+      <code>supports</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Class Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-ClassVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>docutils.writers.Writer</code></b>:
+      <code>component_type</code>,
+      <code>config_section</code>,
+      <code>destination</code>,
+      <code>language</code>,
+      <code>output</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>docutils.Component</code></b>:
+      <code>supported</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>docutils.SettingsSpec</code></b>:
+      <code>config_section_dependencies</code>,
+      <code>relative_path_settings</code>,
+      <code>settings_default_overrides</code>,
+      <code>settings_defaults</code>,
+      <code>settings_spec</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>docutils.TransformSpec</code></b>:
+      <code>default_transforms</code>,
+      <code>unknown_reference_resolvers</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== INSTANCE VARIABLES ==================== -->
+<a name="section-InstanceVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>docutils.nodes.document</code></span>
+    </td><td class="summary">
+        <a name="document"></a><span class="summary-name">document</span><br />
+      The document to write (Docutils doctree); set by write.
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>docutils.writers.Writer</code></b>:
+      <code>parts</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Method Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-MethodDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#_DocumentPseudoWriter.__init__">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for___init___43-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for___init___43-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for___init___43" name="call_graph_for___init___43">
+<area shape="rect" href="javascript:void(0);" title="docutils.writers.Writer.__init__()" alt="" coords="355,6,624,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext._DocumentPseudoWriter-class.html#__init__" title="__init__()" alt="" coords="209,6,305,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext-module.html#parse_docstring" title="parse_docstring()" alt="" coords="7,6,159,38" />
+</map>
+  <img src="call_graph_for___init___43.gif" alt='' usemap="#call_graph_for___init___43" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  
+  <dl class="fields">
+    <dt>Overrides:
+        docutils.writers.Writer.__init__
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="translate"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">translate</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#_DocumentPseudoWriter.translate">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_translate-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_translate-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_translate" name="call_graph_for_translate">
+<area shape="rect" href="javascript:void(0);" title="docutils.writers.Writer.write()" alt="" coords="6,6,251,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext._DocumentPseudoWriter-class.html#translate" title="translate()" alt="" coords="300,6,396,38" />
+</map>
+  <img src="call_graph_for_translate.gif" alt='' usemap="#call_graph_for_translate" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Do final translation of <a href="epydoc.markup.restructuredtext._DocumentPseudoWriter-class.html#document" class="link">self.document</a> into self.output.  Called
+from write.  Override in subclasses.</p>
+<p>Usually done with a <code class="link">docutils.nodes.NodeVisitor</code> subclass, in
+combination with a call to <code class="link">docutils.nodes.Node.walk()</code> or
+<code class="link">docutils.nodes.Node.walkabout()</code>.  The <tt class="rst-docutils literal"><span class="pre">NodeVisitor</span></tt> subclass must
+support all standard elements (listed in
+<code class="link">docutils.nodes.node_class_names</code>) and possibly non-standard elements
+used by the current Reader as well.</p>
+  <dl class="fields">
+    <dt>Overrides:
+        docutils.writers.Writer.translate
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:08:48 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.markup.restructuredtext._EpydocHTMLTranslator-class.html b/doc/api/epydoc.markup.restructuredtext._EpydocHTMLTranslator-class.html
new file mode 100644
index 0000000..e9365ff
--- /dev/null
+++ b/doc/api/epydoc.markup.restructuredtext._EpydocHTMLTranslator-class.html
@@ -0,0 +1,1016 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.markup.restructuredtext._EpydocHTMLTranslator</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.markup-module.html">Package markup</a> ::
+        <a href="epydoc.markup.restructuredtext-module.html">Module restructuredtext</a> ::
+        Class _EpydocHTMLTranslator
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.markup.restructuredtext._EpydocHTMLTranslator-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class _EpydocHTMLTranslator</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#_EpydocHTMLTranslator">source code</a></span></p>
+<center>
+<center>  <map id="uml_class_diagram_for_epydoc_m_21" name="uml_class_diagram_for_epydoc_m_21">
+<area shape="rect" href="javascript:void(0);" title="docutils.writers.html4css1.HTMLTranslator.xml_declaration" alt="" coords="65,172,391,191" />
+<area shape="rect" href="javascript:void(0);" title="docutils.writers.html4css1.HTMLTranslator.doctype" alt="" coords="65,191,391,209" />
+<area shape="rect" href="javascript:void(0);" title="docutils.writers.html4css1.HTMLTranslator.head_prefix_template" alt="" coords="65,209,391,228" />
+<area shape="rect" href="javascript:void(0);" title="docutils.writers.html4css1.HTMLTranslator.content_type" alt="" coords="65,228,391,247" />
+<area shape="rect" href="javascript:void(0);" title="docutils.writers.html4css1.HTMLTranslator.generator" alt="" coords="65,247,391,265" />
+<area shape="rect" href="javascript:void(0);" title="docutils.writers.html4css1.HTMLTranslator.stylesheet_link" alt="" coords="65,265,391,284" />
+<area shape="rect" href="javascript:void(0);" title="docutils.writers.html4css1.HTMLTranslator.embedded_stylesheet" alt="" coords="65,284,391,303" />
+<area shape="rect" href="javascript:void(0);" title="docutils.writers.html4css1.HTMLTranslator.words_and_spaces" alt="" coords="65,303,391,321" />
+<area shape="rect" href="javascript:void(0);" title="docutils.writers.html4css1.HTMLTranslator.attribution_formats" alt="" coords="65,321,391,340" />
+<area shape="rect" href="javascript:void(0);" title="docutils.writers.html4css1.HTMLTranslator.astext" alt="" coords="65,343,391,361" />
+<area shape="rect" href="javascript:void(0);" title="Encode special characters in text & return." alt="" coords="65,361,391,380" />
+<area shape="rect" href="javascript:void(0);" title="Try to hide a mailto: URL from harvesters." alt="" coords="65,380,391,399" />
+<area shape="rect" href="javascript:void(0);" title="Try to hide the link text of a email link from harversters." alt="" coords="65,399,391,417" />
+<area shape="rect" href="javascript:void(0);" title="Cleanse, HTML encode, and return attribute value text." alt="" coords="65,417,391,436" />
+<area shape="rect" href="javascript:void(0);" title="Construct and return an XML-compatible empty tag." alt="" coords="65,436,391,455" />
+<area shape="rect" href="javascript:void(0);" title="Set class class_ on the visible child no." alt="" coords="65,455,391,473" />
+<area shape="rect" href="javascript:void(0);" title="docutils.writers.html4css1.HTMLTranslator.set_first_last" alt="" coords="65,473,391,492" />
+<area shape="rect" href="javascript:void(0);" title="docutils.writers.html4css1.HTMLTranslator.visit_Text" alt="" coords="65,492,391,511" />
+<area shape="rect" href="javascript:void(0);" title="docutils.writers.html4css1.HTMLTranslator.depart_Text" alt="" coords="65,511,391,529" />
+<area shape="rect" href="javascript:void(0);" title="docutils.writers.html4css1.HTMLTranslator.visit_abbreviation" alt="" coords="65,529,391,548" />
+<area shape="rect" href="javascript:void(0);" title="docutils.writers.html4css1.HTMLTranslator.depart_abbreviation" alt="" coords="65,548,391,567" />
+<area shape="rect" href="javascript:void(0);" title="docutils.writers.html4css1.HTMLTranslator.visit_acronym" alt="" coords="65,567,391,585" />
+<area shape="rect" href="javascript:void(0);" title="docutils.writers.html4css1.HTMLTranslator.unimplemented_visit" alt="" coords="65,604,391,623" />
+<area shape="rect" href="javascript:void(0);" title="This HTML writer has been optimized to produce visually compact lists (less vertical whitespace)." alt="" coords="53,149,403,629" />
+<area shape="rect" href="epydoc.markup.restructuredtext._EpydocHTMLTranslator-class.html#settings" title="epydoc.markup.restructuredtext._EpydocHTMLTranslator.settings" alt="" coords="17,671,439,689" />
+<area shape="rect" href="epydoc.markup.restructuredtext._EpydocHTMLTranslator-class.html#__init__" title="epydoc.markup.restructuredtext._EpydocHTMLTranslator.__init__" alt="" coords="17,692,439,711" />
+<area shape="rect" href="epydoc.markup.restructuredtext._EpydocHTMLTranslator-class.html#visit_title_reference" title="epydoc.markup.restructuredtext._EpydocHTMLTranslator.visit_title_reference" alt="" coords="17,711,439,729" />
+<area shape="rect" href="epydoc.markup.restructuredtext._EpydocHTMLTranslator-class.html#should_be_compact_paragraph" title="Determine if the <p> tags around paragraph node can be omitted." alt="" coords="17,729,439,748" />
+<area shape="rect" href="epydoc.markup.restructuredtext._EpydocHTMLTranslator-class.html#visit_document" title="epydoc.markup.restructuredtext._EpydocHTMLTranslator.visit_document" alt="" coords="17,748,439,767" />
+<area shape="rect" href="epydoc.markup.restructuredtext._EpydocHTMLTranslator-class.html#depart_document" title="epydoc.markup.restructuredtext._EpydocHTMLTranslator.depart_document" alt="" coords="17,767,439,785" />
+<area shape="rect" href="epydoc.markup.restructuredtext._EpydocHTMLTranslator-class.html#starttag" title="This modified version of starttag makes a few changes to HTML tags, to  prevent them from conflicting with epydoc." alt="" coords="17,785,439,804" />
+<area shape="rect" href="epydoc.markup.restructuredtext._EpydocHTMLTranslator-class.html#visit_dotgraph" title="epydoc.markup.restructuredtext._EpydocHTMLTranslator.visit_dotgraph" alt="" coords="17,804,439,823" />
+<area shape="rect" href="epydoc.markup.restructuredtext._EpydocHTMLTranslator-class.html#visit_doctest_block" title="epydoc.markup.restructuredtext._EpydocHTMLTranslator.visit_doctest_block" alt="" coords="17,823,439,841" />
+<area shape="rect" href="epydoc.markup.restructuredtext._EpydocHTMLTranslator-class.html#visit_emphasis" title="epydoc.markup.restructuredtext._EpydocHTMLTranslator.visit_emphasis" alt="" coords="17,841,439,860" />
+<area shape="rect" href="epydoc.markup.restructuredtext._EpydocHTMLTranslator-class.html" title="epydoc.markup.restructuredtext._EpydocHTMLTranslator" alt="" coords="5,648,451,867" />
+<area shape="rect" href="javascript:void(0);" title="Tuple containing node class names (as strings)." alt="" coords="132,28,324,47" />
+<area shape="rect" href="javascript:void(0);" title="Call self."visit_ + node class name" with node as parameter." alt="" coords="132,49,324,68" />
+<area shape="rect" href="javascript:void(0);" title="Call self."depart_ + node class name" with node as parameter." alt="" coords="132,68,324,87" />
+<area shape="rect" href="javascript:void(0);" title="Called when entering unknown Node types." alt="" coords="132,87,324,105" />
+<area shape="rect" href="javascript:void(0);" title="Called before exiting unknown Node types." alt="" coords="132,105,324,124" />
+<area shape="rect" href="javascript:void(0);" title=""Visitor" pattern GoF95 abstract superclass implementation for document tree traversals." alt="" coords="120,5,336,131" />
+</map>
+  <img src="uml_class_diagram_for_epydoc_m_21.gif" alt='' usemap="#uml_class_diagram_for_epydoc_m_21" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.restructuredtext._EpydocHTMLTranslator-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">document</span>,
+        <span class="summary-sig-arg">docstring_linker</span>,
+        <span class="summary-sig-arg">directory</span>,
+        <span class="summary-sig-arg">docindex</span>,
+        <span class="summary-sig-arg">context</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#_EpydocHTMLTranslator.__init__">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for___init___44-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for___init___44-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for___init___44" name="call_graph_for___init___44">
+<area shape="rect" href="javascript:void(0);" title="docutils.writers.html4css1.HTMLTranslator.__init__()" alt="" coords="447,6,876,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html#to_html" title="ParsedRstDocstring.to_html()" alt="" coords="7,6,250,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext._EpydocHTMLTranslator-class.html#__init__" title="__init__()" alt="" coords="300,6,396,38" />
+</map>
+  <img src="call_graph_for___init___44.gif" alt='' usemap="#call_graph_for___init___44" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.restructuredtext._EpydocHTMLTranslator-class.html#visit_title_reference" class="summary-sig-name">visit_title_reference</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">node</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#_EpydocHTMLTranslator.visit_title_reference">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_visit_title_ref-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_visit_title_ref-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_visit_title_ref" name="call_graph_for_visit_title_ref">
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.Element.astext()" alt="" coords="764,6,1020,38" />
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.NodeVisitor.dispatch_visit()" alt="" coords="5,62,352,94" />
+<area shape="rect" href="epydoc.markup.restructuredtext._EpydocHTMLTranslator-class.html#visit_title_reference" title="visit_title_reference()" alt="" coords="401,62,583,94" />
+<area shape="rect" href="javascript:void(0);" title="docutils.writers.html4css1.HTMLTranslator.encode()" alt="" coords="681,62,1103,94" />
+<area shape="rect" href="epydoc.docwriter.html._HTMLDocstringLinker-class.html#translate_identifier_xref" title="docwriter.html._HTMLDocstringLinker.translate_identifier_xref()" alt="" coords="633,118,1151,150" />
+</map>
+  <img src="call_graph_for_visit_title_ref.gif" alt='' usemap="#call_graph_for_visit_title_ref" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.restructuredtext._EpydocHTMLTranslator-class.html#should_be_compact_paragraph" class="summary-sig-name">should_be_compact_paragraph</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">node</span>)</span><br />
+      Determine if the <p> tags around paragraph <tt class="rst-docutils literal"><span class="pre">node</span></tt> can be omitted.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#_EpydocHTMLTranslator.should_be_compact_paragraph">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_should_be_compa-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_should_be_compa-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_should_be_compa" name="call_graph_for_should_be_compa">
+<area shape="rect" href="javascript:void(0);" title="docutils.writers.html4css1.HTMLTranslator.should_be_compact_paragraph()" alt="" coords="855,6,1455,38" />
+<area shape="rect" href="javascript:void(0);" title="docutils.writers.html4css1.HTMLTranslator.visit_paragraph()" alt="" coords="7,6,489,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext._EpydocHTMLTranslator-class.html#should_be_compact_paragraph" title="should_be_compact_paragraph()" alt="" coords="539,6,805,38" />
+</map>
+  <img src="call_graph_for_should_be_compa.gif" alt='' usemap="#call_graph_for_should_be_compa" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.restructuredtext._EpydocHTMLTranslator-class.html#visit_document" class="summary-sig-name">visit_document</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">node</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#_EpydocHTMLTranslator.visit_document">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_visit_document-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_visit_document-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_visit_document" name="call_graph_for_visit_document">
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.NodeVisitor.dispatch_visit()" alt="" coords="6,6,352,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext._EpydocHTMLTranslator-class.html#visit_document" title="visit_document()" alt="" coords="400,6,550,38" />
+</map>
+  <img src="call_graph_for_visit_document.gif" alt='' usemap="#call_graph_for_visit_document" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.restructuredtext._EpydocHTMLTranslator-class.html#depart_document" class="summary-sig-name">depart_document</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">node</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#_EpydocHTMLTranslator.depart_document">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_depart_document-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_depart_document-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_depart_document" name="call_graph_for_depart_document">
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.NodeVisitor.dispatch_departure()" alt="" coords="5,6,389,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext._EpydocHTMLTranslator-class.html#depart_document" title="depart_document()" alt="" coords="437,6,600,38" />
+</map>
+  <img src="call_graph_for_depart_document.gif" alt='' usemap="#call_graph_for_depart_document" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.restructuredtext._EpydocHTMLTranslator-class.html#starttag" class="summary-sig-name">starttag</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">node</span>,
+        <span class="summary-sig-arg">tagname</span>,
+        <span class="summary-sig-arg">suffix</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string">\n</code><code class="variable-quote">'</code></span>,
+        <span class="summary-sig-arg">**attributes</span>)</span><br />
+      This modified version of starttag makes a few changes to HTML tags, 
+      to prevent them from conflicting with epydoc.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#_EpydocHTMLTranslator.starttag">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_starttag-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_starttag-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_starttag" name="call_graph_for_starttag">
+<area shape="rect" href="javascript:void(0);" title="docutils.writers.html4css1.HTMLTranslator.starttag()" alt="" coords="736,286,1160,318" />
+<area shape="rect" href="javascript:void(0);" title="docutils.writers.html4css1.HTMLTranslator.visit_block_quote()" alt="" coords="27,6,528,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext._EpydocHTMLTranslator-class.html#starttag" title="starttag()" alt="" coords="599,286,687,318" />
+<area shape="rect" href="javascript:void(0);" title="docutils.writers.html4css1.HTMLTranslator.visit_bullet_list()" alt="" coords="36,62,519,94" />
+<area shape="rect" href="javascript:void(0);" title="docutils.writers.html4css1.HTMLTranslator.visit_citation_reference()" alt="" coords="5,118,549,150" />
+<area shape="rect" href="javascript:void(0);" title="docutils.writers.html4css1.HTMLTranslator.visit_enumerated_list()" alt="" coords="13,174,541,206" />
+<area shape="rect" href="javascript:void(0);" title="docutils.writers.html4css1.HTMLTranslator.visit_list_item()" alt="" coords="40,230,515,262" />
+<area shape="rect" href="javascript:void(0);" title="docutils.writers.html4css1.HTMLTranslator.visit_literal()" alt="" coords="51,286,504,318" />
+<area shape="rect" href="javascript:void(0);" title="docutils.writers.html4css1.HTMLTranslator.visit_literal_block()" alt="" coords="25,342,529,374" />
+<area shape="rect" href="javascript:void(0);" title="docutils.writers.html4css1.HTMLTranslator.visit_paragraph()" alt="" coords="36,398,519,430" />
+<area shape="rect" href="javascript:void(0);" title="docutils.writers.html4css1.HTMLTranslator.visit_reference()" alt="" coords="37,454,517,486" />
+<area shape="rect" href="javascript:void(0);" title="docutils.writers.html4css1.HTMLTranslator.visit_section()" alt="" coords="47,510,508,542" />
+<area shape="rect" href="javascript:void(0);" title="docutils.writers.html4css1.HTMLTranslator.visit_title()" alt="" coords="59,566,496,598" />
+</map>
+  <img src="call_graph_for_starttag.gif" alt='' usemap="#call_graph_for_starttag" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="visit_dotgraph"></a><span class="summary-sig-name">visit_dotgraph</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">node</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#_EpydocHTMLTranslator.visit_dotgraph">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_visit_dotgraph-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_visit_dotgraph-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_visit_dotgraph" name="call_graph_for_visit_dotgraph">
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.NodeVisitor.dispatch_visit()" alt="" coords="5,34,352,66" />
+<area shape="rect" href="epydoc.markup.restructuredtext._EpydocHTMLTranslator-class.html#visit_dotgraph" title="visit_dotgraph()" alt="" coords="400,34,541,66" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraph-class.html#to_html" title="docwriter.dotgraph.DotGraph.to_html()" alt="" coords="589,6,907,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext.dotgraph-class.html#graph" title="dotgraph.graph()" alt="" coords="675,62,821,94" />
+</map>
+  <img src="call_graph_for_visit_dotgraph.gif" alt='' usemap="#call_graph_for_visit_dotgraph" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.restructuredtext._EpydocHTMLTranslator-class.html#visit_doctest_block" class="summary-sig-name">visit_doctest_block</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">node</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#_EpydocHTMLTranslator.visit_doctest_block">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.restructuredtext._EpydocHTMLTranslator-class.html#visit_emphasis" class="summary-sig-name">visit_emphasis</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">node</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#_EpydocHTMLTranslator.visit_emphasis">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_visit_emphasis-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_visit_emphasis-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_visit_emphasis" name="call_graph_for_visit_emphasis">
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.Element.get()" alt="" coords="717,6,952,38" />
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.NodeVisitor.dispatch_visit()" alt="" coords="5,34,352,66" />
+<area shape="rect" href="epydoc.markup.restructuredtext._EpydocHTMLTranslator-class.html#visit_emphasis" title="visit_emphasis()" alt="" coords="401,34,545,66" />
+<area shape="rect" href="javascript:void(0);" title="docutils.writers.html4css1.HTMLTranslator.visit_emphasis()" alt="" coords="595,62,1075,94" />
+</map>
+  <img src="call_graph_for_visit_emphasis.gif" alt='' usemap="#call_graph_for_visit_emphasis" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>docutils.writers.html4css1.HTMLTranslator</code></b>:
+      <code>add_meta</code>,
+      <code>astext</code>,
+      <code>attval</code>,
+      <code>check_simple_list</code>,
+      <code>cloak_email</code>,
+      <code>cloak_mailto</code>,
+      <code>depart_Text</code>,
+      <code>depart_abbreviation</code>,
+      <code>depart_acronym</code>,
+      <code>depart_address</code>,
+      <code>depart_admonition</code>,
+      <code>depart_attribution</code>,
+      <code>depart_author</code>,
+      <code>depart_authors</code>,
+      <code>depart_block_quote</code>,
+      <code>depart_bullet_list</code>,
+      <code>depart_caption</code>,
+      <code>depart_citation</code>,
+      <code>depart_citation_reference</code>,
+      <code>depart_classifier</code>,
+      <code>depart_colspec</code>,
+      <code>depart_compound</code>,
+      <code>depart_contact</code>,
+      <code>depart_container</code>,
+      <code>depart_copyright</code>,
+      <code>depart_date</code>,
+      <code>depart_decoration</code>,
+      <code>depart_definition</code>,
+      <code>depart_definition_list</code>,
+      <code>depart_definition_list_item</code>,
+      <code>depart_description</code>,
+      <code>depart_docinfo</code>,
+      <code>depart_docinfo_item</code>,
+      <code>depart_doctest_block</code>,
+      <code>depart_emphasis</code>,
+      <code>depart_entry</code>,
+      <code>depart_enumerated_list</code>,
+      <code>depart_field</code>,
+      <code>depart_field_body</code>,
+      <code>depart_field_list</code>,
+      <code>depart_field_name</code>,
+      <code>depart_figure</code>,
+      <code>depart_footer</code>,
+      <code>depart_footnote</code>,
+      <code>depart_footnote_reference</code>,
+      <code>depart_generated</code>,
+      <code>depart_header</code>,
+      <code>depart_image</code>,
+      <code>depart_inline</code>,
+      <code>depart_label</code>,
+      <code>depart_legend</code>,
+      <code>depart_line</code>,
+      <code>depart_line_block</code>,
+      <code>depart_list_item</code>,
+      <code>depart_literal_block</code>,
+      <code>depart_meta</code>,
+      <code>depart_option</code>,
+      <code>depart_option_argument</code>,
+      <code>depart_option_group</code>,
+      <code>depart_option_list</code>,
+      <code>depart_option_list_item</code>,
+      <code>depart_option_string</code>,
+      <code>depart_organization</code>,
+      <code>depart_paragraph</code>,
+      <code>depart_problematic</code>,
+      <code>depart_reference</code>,
+      <code>depart_revision</code>,
+      <code>depart_row</code>,
+      <code>depart_rubric</code>,
+      <code>depart_section</code>,
+      <code>depart_sidebar</code>,
+      <code>depart_status</code>,
+      <code>depart_strong</code>,
+      <code>depart_subscript</code>,
+      <code>depart_subtitle</code>,
+      <code>depart_superscript</code>,
+      <code>depart_system_message</code>,
+      <code>depart_table</code>,
+      <code>depart_target</code>,
+      <code>depart_tbody</code>,
+      <code>depart_term</code>,
+      <code>depart_tgroup</code>,
+      <code>depart_thead</code>,
+      <code>depart_title</code>,
+      <code>depart_title_reference</code>,
+      <code>depart_topic</code>,
+      <code>depart_transition</code>,
+      <code>depart_version</code>,
+      <code>emptytag</code>,
+      <code>encode</code>,
+      <code>footnote_backrefs</code>,
+      <code>is_compactable</code>,
+      <code>set_class_on_child</code>,
+      <code>set_first_last</code>,
+      <code>unimplemented_visit</code>,
+      <code>visit_Text</code>,
+      <code>visit_abbreviation</code>,
+      <code>visit_acronym</code>,
+      <code>visit_address</code>,
+      <code>visit_admonition</code>,
+      <code>visit_attribution</code>,
+      <code>visit_author</code>,
+      <code>visit_authors</code>,
+      <code>visit_block_quote</code>,
+      <code>visit_bullet_list</code>,
+      <code>visit_caption</code>,
+      <code>visit_citation</code>,
+      <code>visit_citation_reference</code>,
+      <code>visit_classifier</code>,
+      <code>visit_colspec</code>,
+      <code>visit_comment</code>,
+      <code>visit_compound</code>,
+      <code>visit_contact</code>,
+      <code>visit_container</code>,
+      <code>visit_copyright</code>,
+      <code>visit_date</code>,
+      <code>visit_decoration</code>,
+      <code>visit_definition</code>,
+      <code>visit_definition_list</code>,
+      <code>visit_definition_list_item</code>,
+      <code>visit_description</code>,
+      <code>visit_docinfo</code>,
+      <code>visit_docinfo_item</code>,
+      <code>visit_entry</code>,
+      <code>visit_enumerated_list</code>,
+      <code>visit_field</code>,
+      <code>visit_field_body</code>,
+      <code>visit_field_list</code>,
+      <code>visit_field_name</code>,
+      <code>visit_figure</code>,
+      <code>visit_footer</code>,
+      <code>visit_footnote</code>,
+      <code>visit_footnote_reference</code>,
+      <code>visit_generated</code>,
+      <code>visit_header</code>,
+      <code>visit_image</code>,
+      <code>visit_inline</code>,
+      <code>visit_label</code>,
+      <code>visit_legend</code>,
+      <code>visit_line</code>,
+      <code>visit_line_block</code>,
+      <code>visit_list_item</code>,
+      <code>visit_literal</code>,
+      <code>visit_literal_block</code>,
+      <code>visit_meta</code>,
+      <code>visit_option</code>,
+      <code>visit_option_argument</code>,
+      <code>visit_option_group</code>,
+      <code>visit_option_list</code>,
+      <code>visit_option_list_item</code>,
+      <code>visit_option_string</code>,
+      <code>visit_organization</code>,
+      <code>visit_paragraph</code>,
+      <code>visit_problematic</code>,
+      <code>visit_raw</code>,
+      <code>visit_reference</code>,
+      <code>visit_revision</code>,
+      <code>visit_row</code>,
+      <code>visit_rubric</code>,
+      <code>visit_section</code>,
+      <code>visit_sidebar</code>,
+      <code>visit_status</code>,
+      <code>visit_strong</code>,
+      <code>visit_subscript</code>,
+      <code>visit_substitution_definition</code>,
+      <code>visit_substitution_reference</code>,
+      <code>visit_subtitle</code>,
+      <code>visit_superscript</code>,
+      <code>visit_system_message</code>,
+      <code>visit_table</code>,
+      <code>visit_target</code>,
+      <code>visit_tbody</code>,
+      <code>visit_term</code>,
+      <code>visit_tgroup</code>,
+      <code>visit_thead</code>,
+      <code>visit_title</code>,
+      <code>visit_topic</code>,
+      <code>visit_transition</code>,
+      <code>visit_version</code>,
+      <code>write_colspecs</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>docutils.nodes.NodeVisitor</code></b>:
+      <code>dispatch_departure</code>,
+      <code>dispatch_visit</code>,
+      <code>unknown_departure</code>,
+      <code>unknown_visit</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Class Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-ClassVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="settings"></a><span class="summary-name">settings</span> = <code title="None">None</code>
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>docutils.writers.html4css1.HTMLTranslator</code></b>:
+      <code>attribution_formats</code>,
+      <code>content_type</code>,
+      <code>doctype</code>,
+      <code>embedded_stylesheet</code>,
+      <code>generator</code>,
+      <code>head_prefix_template</code>,
+      <code>stylesheet_link</code>,
+      <code>words_and_spaces</code>,
+      <code>xml_declaration</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>docutils.nodes.NodeVisitor</code></b>:
+      <code>optional</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Method Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-MethodDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">document</span>,
+        <span class="sig-arg">docstring_linker</span>,
+        <span class="sig-arg">directory</span>,
+        <span class="sig-arg">docindex</span>,
+        <span class="sig-arg">context</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#_EpydocHTMLTranslator.__init__">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for___init___44-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for___init___44-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for___init___44" name="call_graph_for___init___44">
+<area shape="rect" href="javascript:void(0);" title="docutils.writers.html4css1.HTMLTranslator.__init__()" alt="" coords="447,6,876,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html#to_html" title="ParsedRstDocstring.to_html()" alt="" coords="7,6,250,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext._EpydocHTMLTranslator-class.html#__init__" title="__init__()" alt="" coords="300,6,396,38" />
+</map>
+  <img src="call_graph_for___init___44.gif" alt='' usemap="#call_graph_for___init___44" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  
+  <dl class="fields">
+    <dt>Overrides:
+        docutils.nodes.NodeVisitor.__init__
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="visit_title_reference"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">visit_title_reference</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">node</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#_EpydocHTMLTranslator.visit_title_reference">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_visit_title_ref-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_visit_title_ref-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_visit_title_ref" name="call_graph_for_visit_title_ref">
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.Element.astext()" alt="" coords="764,6,1020,38" />
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.NodeVisitor.dispatch_visit()" alt="" coords="5,62,352,94" />
+<area shape="rect" href="epydoc.markup.restructuredtext._EpydocHTMLTranslator-class.html#visit_title_reference" title="visit_title_reference()" alt="" coords="401,62,583,94" />
+<area shape="rect" href="javascript:void(0);" title="docutils.writers.html4css1.HTMLTranslator.encode()" alt="" coords="681,62,1103,94" />
+<area shape="rect" href="epydoc.docwriter.html._HTMLDocstringLinker-class.html#translate_identifier_xref" title="docwriter.html._HTMLDocstringLinker.translate_identifier_xref()" alt="" coords="633,118,1151,150" />
+</map>
+  <img src="call_graph_for_visit_title_ref.gif" alt='' usemap="#call_graph_for_visit_title_ref" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  
+  <dl class="fields">
+    <dt>Overrides:
+        docutils.writers.html4css1.HTMLTranslator.visit_title_reference
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="should_be_compact_paragraph"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">should_be_compact_paragraph</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">node</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#_EpydocHTMLTranslator.should_be_compact_paragraph">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_should_be_compa-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_should_be_compa-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_should_be_compa" name="call_graph_for_should_be_compa">
+<area shape="rect" href="javascript:void(0);" title="docutils.writers.html4css1.HTMLTranslator.should_be_compact_paragraph()" alt="" coords="855,6,1455,38" />
+<area shape="rect" href="javascript:void(0);" title="docutils.writers.html4css1.HTMLTranslator.visit_paragraph()" alt="" coords="7,6,489,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext._EpydocHTMLTranslator-class.html#should_be_compact_paragraph" title="should_be_compact_paragraph()" alt="" coords="539,6,805,38" />
+</map>
+  <img src="call_graph_for_should_be_compa.gif" alt='' usemap="#call_graph_for_should_be_compa" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  Determine if the <p> tags around paragraph <tt class="rst-rst-docutils literal rst-docutils literal"><span class="pre">node</span></tt> can be omitted.
+  <dl class="fields">
+    <dt>Overrides:
+        docutils.writers.html4css1.HTMLTranslator.should_be_compact_paragraph
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="visit_document"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">visit_document</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">node</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#_EpydocHTMLTranslator.visit_document">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_visit_document-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_visit_document-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_visit_document" name="call_graph_for_visit_document">
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.NodeVisitor.dispatch_visit()" alt="" coords="6,6,352,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext._EpydocHTMLTranslator-class.html#visit_document" title="visit_document()" alt="" coords="400,6,550,38" />
+</map>
+  <img src="call_graph_for_visit_document.gif" alt='' usemap="#call_graph_for_visit_document" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  
+  <dl class="fields">
+    <dt>Overrides:
+        docutils.writers.html4css1.HTMLTranslator.visit_document
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="depart_document"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">depart_document</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">node</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#_EpydocHTMLTranslator.depart_document">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_depart_document-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_depart_document-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_depart_document" name="call_graph_for_depart_document">
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.NodeVisitor.dispatch_departure()" alt="" coords="5,6,389,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext._EpydocHTMLTranslator-class.html#depart_document" title="depart_document()" alt="" coords="437,6,600,38" />
+</map>
+  <img src="call_graph_for_depart_document.gif" alt='' usemap="#call_graph_for_depart_document" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  
+  <dl class="fields">
+    <dt>Overrides:
+        docutils.writers.html4css1.HTMLTranslator.depart_document
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="starttag"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">starttag</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">node</span>,
+        <span class="sig-arg">tagname</span>,
+        <span class="sig-arg">suffix</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string">\n</code><code class="variable-quote">'</code></span>,
+        <span class="sig-arg">**attributes</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#_EpydocHTMLTranslator.starttag">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_starttag-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_starttag-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_starttag" name="call_graph_for_starttag">
+<area shape="rect" href="javascript:void(0);" title="docutils.writers.html4css1.HTMLTranslator.starttag()" alt="" coords="736,286,1160,318" />
+<area shape="rect" href="javascript:void(0);" title="docutils.writers.html4css1.HTMLTranslator.visit_block_quote()" alt="" coords="27,6,528,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext._EpydocHTMLTranslator-class.html#starttag" title="starttag()" alt="" coords="599,286,687,318" />
+<area shape="rect" href="javascript:void(0);" title="docutils.writers.html4css1.HTMLTranslator.visit_bullet_list()" alt="" coords="36,62,519,94" />
+<area shape="rect" href="javascript:void(0);" title="docutils.writers.html4css1.HTMLTranslator.visit_citation_reference()" alt="" coords="5,118,549,150" />
+<area shape="rect" href="javascript:void(0);" title="docutils.writers.html4css1.HTMLTranslator.visit_enumerated_list()" alt="" coords="13,174,541,206" />
+<area shape="rect" href="javascript:void(0);" title="docutils.writers.html4css1.HTMLTranslator.visit_list_item()" alt="" coords="40,230,515,262" />
+<area shape="rect" href="javascript:void(0);" title="docutils.writers.html4css1.HTMLTranslator.visit_literal()" alt="" coords="51,286,504,318" />
+<area shape="rect" href="javascript:void(0);" title="docutils.writers.html4css1.HTMLTranslator.visit_literal_block()" alt="" coords="25,342,529,374" />
+<area shape="rect" href="javascript:void(0);" title="docutils.writers.html4css1.HTMLTranslator.visit_paragraph()" alt="" coords="36,398,519,430" />
+<area shape="rect" href="javascript:void(0);" title="docutils.writers.html4css1.HTMLTranslator.visit_reference()" alt="" coords="37,454,517,486" />
+<area shape="rect" href="javascript:void(0);" title="docutils.writers.html4css1.HTMLTranslator.visit_section()" alt="" coords="47,510,508,542" />
+<area shape="rect" href="javascript:void(0);" title="docutils.writers.html4css1.HTMLTranslator.visit_title()" alt="" coords="59,566,496,598" />
+</map>
+  <img src="call_graph_for_starttag.gif" alt='' usemap="#call_graph_for_starttag" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>This modified version of starttag makes a few changes to HTML tags, to
+  prevent them from conflicting with epydoc.  In particular:</p>
+  <ul>
+    <li>
+      existing class attributes are prefixed with <code>'rst-'</code>
+    </li>
+    <li>
+      existing names are prefixed with <code>'rst-'</code>
+    </li>
+    <li>
+      hrefs starting with <code>'#'</code> are prefixed with 
+      <code>'rst-'</code>
+    </li>
+    <li>
+      hrefs not starting with <code>'#'</code> are given target='_top'
+    </li>
+    <li>
+      all headings (<code><h<i class="math">n</i>></code>) are given 
+      the css class <code>'heading'</code>
+    </li>
+  </ul>
+  <dl class="fields">
+    <dt>Overrides:
+        docutils.writers.html4css1.HTMLTranslator.starttag
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="visit_doctest_block"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">visit_doctest_block</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">node</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#_EpydocHTMLTranslator.visit_doctest_block">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  
+  <dl class="fields">
+    <dt>Overrides:
+        docutils.writers.html4css1.HTMLTranslator.visit_doctest_block
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="visit_emphasis"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">visit_emphasis</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">node</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#_EpydocHTMLTranslator.visit_emphasis">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_visit_emphasis-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_visit_emphasis-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_visit_emphasis" name="call_graph_for_visit_emphasis">
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.Element.get()" alt="" coords="717,6,952,38" />
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.NodeVisitor.dispatch_visit()" alt="" coords="5,34,352,66" />
+<area shape="rect" href="epydoc.markup.restructuredtext._EpydocHTMLTranslator-class.html#visit_emphasis" title="visit_emphasis()" alt="" coords="401,34,545,66" />
+<area shape="rect" href="javascript:void(0);" title="docutils.writers.html4css1.HTMLTranslator.visit_emphasis()" alt="" coords="595,62,1075,94" />
+</map>
+  <img src="call_graph_for_visit_emphasis.gif" alt='' usemap="#call_graph_for_visit_emphasis" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  
+  <dl class="fields">
+    <dt>Overrides:
+        docutils.writers.html4css1.HTMLTranslator.visit_emphasis
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:08:53 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.markup.restructuredtext._EpydocLaTeXTranslator-class.html b/doc/api/epydoc.markup.restructuredtext._EpydocLaTeXTranslator-class.html
new file mode 100644
index 0000000..99625a0
--- /dev/null
+++ b/doc/api/epydoc.markup.restructuredtext._EpydocLaTeXTranslator-class.html
@@ -0,0 +1,677 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.markup.restructuredtext._EpydocLaTeXTranslator</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.markup-module.html">Package markup</a> ::
+        <a href="epydoc.markup.restructuredtext-module.html">Module restructuredtext</a> ::
+        Class _EpydocLaTeXTranslator
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.markup.restructuredtext._EpydocLaTeXTranslator-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class _EpydocLaTeXTranslator</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#_EpydocLaTeXTranslator">source code</a></span></p>
+<center>
+<center>  <map id="uml_class_diagram_for_epydoc_m_22" name="uml_class_diagram_for_epydoc_m_22">
+<area shape="rect" href="javascript:void(0);" title="docutils.writers.latex2e.LaTeXTranslator.latex_head" alt="" coords="18,172,330,191" />
+<area shape="rect" href="javascript:void(0);" title="docutils.writers.latex2e.LaTeXTranslator.linking" alt="" coords="18,191,330,209" />
+<area shape="rect" href="javascript:void(0);" title="docutils.writers.latex2e.LaTeXTranslator.stylesheet" alt="" coords="18,209,330,228" />
+<area shape="rect" href="javascript:void(0);" title="docutils.writers.latex2e.LaTeXTranslator.generator" alt="" coords="18,228,330,247" />
+<area shape="rect" href="javascript:void(0);" title="docutils.writers.latex2e.LaTeXTranslator.use_latex_toc" alt="" coords="18,247,330,265" />
+<area shape="rect" href="javascript:void(0);" title="docutils.writers.latex2e.LaTeXTranslator.use_optionlist_for_docinfo" alt="" coords="18,265,330,284" />
+<area shape="rect" href="javascript:void(0);" title="docutils.writers.latex2e.LaTeXTranslator.compound_enumerators" alt="" coords="18,284,330,303" />
+<area shape="rect" href="javascript:void(0);" title="docutils.writers.latex2e.LaTeXTranslator.section_prefix_for_enumerators" alt="" coords="18,303,330,321" />
+<area shape="rect" href="javascript:void(0);" title="docutils.writers.latex2e.LaTeXTranslator.section_enumerator_separator" alt="" coords="18,321,330,340" />
+<area shape="rect" href="javascript:void(0);" title="docutils.writers.latex2e.LaTeXTranslator.hyperlink_color" alt="" coords="18,340,330,359" />
+<area shape="rect" href="javascript:void(0);" title="docutils.writers.latex2e.LaTeXTranslator.latex_equivalents" alt="" coords="18,359,330,377" />
+<area shape="rect" href="javascript:void(0);" title="docutils.writers.latex2e.LaTeXTranslator.attribution_formats" alt="" coords="18,377,330,396" />
+<area shape="rect" href="javascript:void(0);" title="Translate docutils encoding name into latex's." alt="" coords="18,399,330,417" />
+<area shape="rect" href="javascript:void(0);" title="docutils.writers.latex2e.LaTeXTranslator.language_label" alt="" coords="18,417,330,436" />
+<area shape="rect" href="javascript:void(0);" title="docutils.writers.latex2e.LaTeXTranslator.unicode_to_latex" alt="" coords="18,436,330,455" />
+<area shape="rect" href="javascript:void(0);" title="docutils.writers.latex2e.LaTeXTranslator.ensure_math" alt="" coords="18,455,330,473" />
+<area shape="rect" href="javascript:void(0);" title="Encode special characters (# $ % & ~ _ ^ \ { }) in text & return" alt="" coords="18,473,330,492" />
+<area shape="rect" href="javascript:void(0);" title="Cleanse, encode, and return attribute value text." alt="" coords="18,492,330,511" />
+<area shape="rect" href="javascript:void(0);" title="docutils.writers.latex2e.LaTeXTranslator.astext" alt="" coords="18,511,330,529" />
+<area shape="rect" href="javascript:void(0);" title="docutils.writers.latex2e.LaTeXTranslator.visit_Text" alt="" coords="18,529,330,548" />
+<area shape="rect" href="javascript:void(0);" title="docutils.writers.latex2e.LaTeXTranslator.depart_Text" alt="" coords="18,548,330,567" />
+<area shape="rect" href="javascript:void(0);" title="docutils.writers.latex2e.LaTeXTranslator.visit_address" alt="" coords="18,567,330,585" />
+<area shape="rect" href="javascript:void(0);" title="docutils.writers.latex2e.LaTeXTranslator.depart_address" alt="" coords="18,585,330,604" />
+<area shape="rect" href="javascript:void(0);" title="docutils.writers.latex2e.LaTeXTranslator.visit_admonition" alt="" coords="18,604,330,623" />
+<area shape="rect" href="javascript:void(0);" title="docutils.writers.latex2e.LaTeXTranslator.depart_admonition" alt="" coords="18,623,330,641" />
+<area shape="rect" href="javascript:void(0);" title="docutils.writers.latex2e.LaTeXTranslator.unimplemented_visit" alt="" coords="18,660,330,679" />
+<area shape="rect" href="javascript:void(0);" title="docutils.writers.latex2e.LaTeXTranslator" alt="" coords="6,149,342,685" />
+<area shape="rect" href="epydoc.markup.restructuredtext._EpydocLaTeXTranslator-class.html#settings" title="epydoc.markup.restructuredtext._EpydocLaTeXTranslator.settings" alt="" coords="48,727,299,745" />
+<area shape="rect" href="epydoc.markup.restructuredtext._EpydocLaTeXTranslator-class.html#__init__" title="epydoc.markup.restructuredtext._EpydocLaTeXTranslator.__init__" alt="" coords="48,748,299,767" />
+<area shape="rect" href="epydoc.markup.restructuredtext._EpydocLaTeXTranslator-class.html#visit_title_reference" title="epydoc.markup.restructuredtext._EpydocLaTeXTranslator.visit_title_reference" alt="" coords="48,767,299,785" />
+<area shape="rect" href="epydoc.markup.restructuredtext._EpydocLaTeXTranslator-class.html#visit_document" title="epydoc.markup.restructuredtext._EpydocLaTeXTranslator.visit_document" alt="" coords="48,785,299,804" />
+<area shape="rect" href="epydoc.markup.restructuredtext._EpydocLaTeXTranslator-class.html#depart_document" title="epydoc.markup.restructuredtext._EpydocLaTeXTranslator.depart_document" alt="" coords="48,804,299,823" />
+<area shape="rect" href="epydoc.markup.restructuredtext._EpydocLaTeXTranslator-class.html#visit_dotgraph" title="epydoc.markup.restructuredtext._EpydocLaTeXTranslator.visit_dotgraph" alt="" coords="48,823,299,841" />
+<area shape="rect" href="epydoc.markup.restructuredtext._EpydocLaTeXTranslator-class.html#visit_doctest_block" title="epydoc.markup.restructuredtext._EpydocLaTeXTranslator.visit_doctest_block" alt="" coords="48,841,299,860" />
+<area shape="rect" href="epydoc.markup.restructuredtext._EpydocLaTeXTranslator-class.html" title="epydoc.markup.restructuredtext._EpydocLaTeXTranslator" alt="" coords="36,704,311,867" />
+<area shape="rect" href="javascript:void(0);" title="Tuple containing node class names (as strings)." alt="" coords="78,28,270,47" />
+<area shape="rect" href="javascript:void(0);" title="Call self."visit_ + node class name" with node as parameter." alt="" coords="78,49,270,68" />
+<area shape="rect" href="javascript:void(0);" title="Call self."depart_ + node class name" with node as parameter." alt="" coords="78,68,270,87" />
+<area shape="rect" href="javascript:void(0);" title="Called when entering unknown Node types." alt="" coords="78,87,270,105" />
+<area shape="rect" href="javascript:void(0);" title="Called before exiting unknown Node types." alt="" coords="78,105,270,124" />
+<area shape="rect" href="javascript:void(0);" title=""Visitor" pattern GoF95 abstract superclass implementation for document tree traversals." alt="" coords="66,5,282,131" />
+</map>
+  <img src="uml_class_diagram_for_epydoc_m_22.gif" alt='' usemap="#uml_class_diagram_for_epydoc_m_22" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.restructuredtext._EpydocLaTeXTranslator-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">document</span>,
+        <span class="summary-sig-arg">docstring_linker</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#_EpydocLaTeXTranslator.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.restructuredtext._EpydocLaTeXTranslator-class.html#visit_title_reference" class="summary-sig-name">visit_title_reference</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">node</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#_EpydocLaTeXTranslator.visit_title_reference">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.restructuredtext._EpydocLaTeXTranslator-class.html#visit_document" class="summary-sig-name">visit_document</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">node</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#_EpydocLaTeXTranslator.visit_document">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.restructuredtext._EpydocLaTeXTranslator-class.html#depart_document" class="summary-sig-name">depart_document</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">node</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#_EpydocLaTeXTranslator.depart_document">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="visit_dotgraph"></a><span class="summary-sig-name">visit_dotgraph</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">node</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#_EpydocLaTeXTranslator.visit_dotgraph">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.restructuredtext._EpydocLaTeXTranslator-class.html#visit_doctest_block" class="summary-sig-name">visit_doctest_block</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">node</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#_EpydocLaTeXTranslator.visit_doctest_block">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>docutils.writers.latex2e.LaTeXTranslator</code></b>:
+      <code>astext</code>,
+      <code>attval</code>,
+      <code>bookmark</code>,
+      <code>depart_Text</code>,
+      <code>depart_address</code>,
+      <code>depart_admonition</code>,
+      <code>depart_attention</code>,
+      <code>depart_attribution</code>,
+      <code>depart_author</code>,
+      <code>depart_authors</code>,
+      <code>depart_block_quote</code>,
+      <code>depart_bullet_list</code>,
+      <code>depart_caption</code>,
+      <code>depart_caution</code>,
+      <code>depart_citation</code>,
+      <code>depart_citation_reference</code>,
+      <code>depart_classifier</code>,
+      <code>depart_colspec</code>,
+      <code>depart_compound</code>,
+      <code>depart_contact</code>,
+      <code>depart_container</code>,
+      <code>depart_copyright</code>,
+      <code>depart_danger</code>,
+      <code>depart_date</code>,
+      <code>depart_decoration</code>,
+      <code>depart_definition</code>,
+      <code>depart_definition_list</code>,
+      <code>depart_definition_list_item</code>,
+      <code>depart_description</code>,
+      <code>depart_docinfo</code>,
+      <code>depart_docinfo_item</code>,
+      <code>depart_doctest_block</code>,
+      <code>depart_emphasis</code>,
+      <code>depart_entry</code>,
+      <code>depart_enumerated_list</code>,
+      <code>depart_error</code>,
+      <code>depart_field</code>,
+      <code>depart_field_argument</code>,
+      <code>depart_field_body</code>,
+      <code>depart_field_list</code>,
+      <code>depart_field_name</code>,
+      <code>depart_figure</code>,
+      <code>depart_footer</code>,
+      <code>depart_footnote</code>,
+      <code>depart_footnote_reference</code>,
+      <code>depart_generated</code>,
+      <code>depart_header</code>,
+      <code>depart_hint</code>,
+      <code>depart_image</code>,
+      <code>depart_important</code>,
+      <code>depart_inline</code>,
+      <code>depart_interpreted</code>,
+      <code>depart_label</code>,
+      <code>depart_legend</code>,
+      <code>depart_line</code>,
+      <code>depart_line_block</code>,
+      <code>depart_list_item</code>,
+      <code>depart_literal</code>,
+      <code>depart_literal_block</code>,
+      <code>depart_meta</code>,
+      <code>depart_note</code>,
+      <code>depart_option</code>,
+      <code>depart_option_argument</code>,
+      <code>depart_option_group</code>,
+      <code>depart_option_list</code>,
+      <code>depart_option_list_item</code>,
+      <code>depart_option_string</code>,
+      <code>depart_organization</code>,
+      <code>depart_paragraph</code>,
+      <code>depart_problematic</code>,
+      <code>depart_reference</code>,
+      <code>depart_revision</code>,
+      <code>depart_row</code>,
+      <code>depart_rubric</code>,
+      <code>depart_section</code>,
+      <code>depart_sidebar</code>,
+      <code>depart_status</code>,
+      <code>depart_strong</code>,
+      <code>depart_subscript</code>,
+      <code>depart_subtitle</code>,
+      <code>depart_superscript</code>,
+      <code>depart_system_message</code>,
+      <code>depart_table</code>,
+      <code>depart_target</code>,
+      <code>depart_tbody</code>,
+      <code>depart_term</code>,
+      <code>depart_tgroup</code>,
+      <code>depart_thead</code>,
+      <code>depart_tip</code>,
+      <code>depart_title</code>,
+      <code>depart_title_reference</code>,
+      <code>depart_topic</code>,
+      <code>depart_transition</code>,
+      <code>depart_version</code>,
+      <code>depart_warning</code>,
+      <code>encode</code>,
+      <code>ensure_math</code>,
+      <code>label_delim</code>,
+      <code>language_label</code>,
+      <code>latex_image_length</code>,
+      <code>to_latex_encoding</code>,
+      <code>unicode_to_latex</code>,
+      <code>unimplemented_visit</code>,
+      <code>visit_Text</code>,
+      <code>visit_address</code>,
+      <code>visit_admonition</code>,
+      <code>visit_attention</code>,
+      <code>visit_attribution</code>,
+      <code>visit_author</code>,
+      <code>visit_authors</code>,
+      <code>visit_block_quote</code>,
+      <code>visit_bullet_list</code>,
+      <code>visit_caption</code>,
+      <code>visit_caution</code>,
+      <code>visit_citation</code>,
+      <code>visit_citation_reference</code>,
+      <code>visit_classifier</code>,
+      <code>visit_colspec</code>,
+      <code>visit_comment</code>,
+      <code>visit_compound</code>,
+      <code>visit_contact</code>,
+      <code>visit_container</code>,
+      <code>visit_copyright</code>,
+      <code>visit_danger</code>,
+      <code>visit_date</code>,
+      <code>visit_decoration</code>,
+      <code>visit_definition</code>,
+      <code>visit_definition_list</code>,
+      <code>visit_definition_list_item</code>,
+      <code>visit_description</code>,
+      <code>visit_docinfo</code>,
+      <code>visit_docinfo_item</code>,
+      <code>visit_emphasis</code>,
+      <code>visit_entry</code>,
+      <code>visit_enumerated_list</code>,
+      <code>visit_error</code>,
+      <code>visit_field</code>,
+      <code>visit_field_argument</code>,
+      <code>visit_field_body</code>,
+      <code>visit_field_list</code>,
+      <code>visit_field_name</code>,
+      <code>visit_figure</code>,
+      <code>visit_footer</code>,
+      <code>visit_footnote</code>,
+      <code>visit_footnote_reference</code>,
+      <code>visit_generated</code>,
+      <code>visit_header</code>,
+      <code>visit_hint</code>,
+      <code>visit_image</code>,
+      <code>visit_important</code>,
+      <code>visit_inline</code>,
+      <code>visit_interpreted</code>,
+      <code>visit_label</code>,
+      <code>visit_legend</code>,
+      <code>visit_line</code>,
+      <code>visit_line_block</code>,
+      <code>visit_list_item</code>,
+      <code>visit_literal</code>,
+      <code>visit_literal_block</code>,
+      <code>visit_meta</code>,
+      <code>visit_note</code>,
+      <code>visit_option</code>,
+      <code>visit_option_argument</code>,
+      <code>visit_option_group</code>,
+      <code>visit_option_list</code>,
+      <code>visit_option_list_item</code>,
+      <code>visit_option_string</code>,
+      <code>visit_organization</code>,
+      <code>visit_paragraph</code>,
+      <code>visit_problematic</code>,
+      <code>visit_raw</code>,
+      <code>visit_reference</code>,
+      <code>visit_revision</code>,
+      <code>visit_row</code>,
+      <code>visit_rubric</code>,
+      <code>visit_section</code>,
+      <code>visit_sidebar</code>,
+      <code>visit_status</code>,
+      <code>visit_strong</code>,
+      <code>visit_subscript</code>,
+      <code>visit_substitution_definition</code>,
+      <code>visit_substitution_reference</code>,
+      <code>visit_subtitle</code>,
+      <code>visit_superscript</code>,
+      <code>visit_system_message</code>,
+      <code>visit_table</code>,
+      <code>visit_target</code>,
+      <code>visit_tbody</code>,
+      <code>visit_term</code>,
+      <code>visit_tgroup</code>,
+      <code>visit_thead</code>,
+      <code>visit_tip</code>,
+      <code>visit_title</code>,
+      <code>visit_topic</code>,
+      <code>visit_transition</code>,
+      <code>visit_version</code>,
+      <code>visit_warning</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>docutils.nodes.NodeVisitor</code></b>:
+      <code>dispatch_departure</code>,
+      <code>dispatch_visit</code>,
+      <code>unknown_departure</code>,
+      <code>unknown_visit</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Class Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-ClassVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="settings"></a><span class="summary-name">settings</span> = <code title="None">None</code>
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>docutils.writers.latex2e.LaTeXTranslator</code></b>:
+      <code>attribution_formats</code>,
+      <code>compound_enumerators</code>,
+      <code>generator</code>,
+      <code>hyperlink_color</code>,
+      <code>latex_equivalents</code>,
+      <code>latex_head</code>,
+      <code>linking</code>,
+      <code>section_enumerator_separator</code>,
+      <code>section_prefix_for_enumerators</code>,
+      <code>stylesheet</code>,
+      <code>use_latex_toc</code>,
+      <code>use_optionlist_for_docinfo</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>docutils.nodes.NodeVisitor</code></b>:
+      <code>optional</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Method Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-MethodDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">document</span>,
+        <span class="sig-arg">docstring_linker</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#_EpydocLaTeXTranslator.__init__">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  
+  <dl class="fields">
+    <dt>Overrides:
+        docutils.nodes.NodeVisitor.__init__
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="visit_title_reference"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">visit_title_reference</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">node</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#_EpydocLaTeXTranslator.visit_title_reference">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  
+  <dl class="fields">
+    <dt>Overrides:
+        docutils.writers.latex2e.LaTeXTranslator.visit_title_reference
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="visit_document"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">visit_document</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">node</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#_EpydocLaTeXTranslator.visit_document">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  
+  <dl class="fields">
+    <dt>Overrides:
+        docutils.writers.latex2e.LaTeXTranslator.visit_document
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="depart_document"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">depart_document</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">node</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#_EpydocLaTeXTranslator.depart_document">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  
+  <dl class="fields">
+    <dt>Overrides:
+        docutils.writers.latex2e.LaTeXTranslator.depart_document
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="visit_doctest_block"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">visit_doctest_block</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">node</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#_EpydocLaTeXTranslator.visit_doctest_block">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  
+  <dl class="fields">
+    <dt>Overrides:
+        docutils.writers.latex2e.LaTeXTranslator.visit_doctest_block
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:08:54 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.markup.restructuredtext._EpydocReader-class.html b/doc/api/epydoc.markup.restructuredtext._EpydocReader-class.html
new file mode 100644
index 0000000..08cc5d1
--- /dev/null
+++ b/doc/api/epydoc.markup.restructuredtext._EpydocReader-class.html
@@ -0,0 +1,502 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.markup.restructuredtext._EpydocReader</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.markup-module.html">Package markup</a> ::
+        <a href="epydoc.markup.restructuredtext-module.html">Module restructuredtext</a> ::
+        Class _EpydocReader
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.markup.restructuredtext._EpydocReader-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class _EpydocReader</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#_EpydocReader">source code</a></span></p>
+<center>
+<center>  <map id="uml_class_diagram_for_epydoc_m_23" name="uml_class_diagram_for_epydoc_m_23">
+<area shape="rect" href="javascript:void(0);" title="Name of the component type ('reader', 'parser', 'writer')." alt="" coords="119,215,306,233" />
+<area shape="rect" href="javascript:void(0);" title="Parse self.input into a document tree." alt="" coords="119,236,306,255" />
+<area shape="rect" href="javascript:void(0);" title="Set self.parser by name." alt="" coords="119,255,306,273" />
+<area shape="rect" href="javascript:void(0);" title="Abstract base class for docutils Readers." alt="" coords="107,192,318,280" />
+<area shape="rect" href="javascript:void(0);" title="The name of the config file section specific to this component (lowercase, no brackets)." alt="" coords="107,321,318,340" />
+<area shape="rect" href="javascript:void(0);" title="A list of names of config file sections that are to be applied before config_section, in order (from general to specific)." alt="" coords="107,340,318,359" />
+<area shape="rect" href="javascript:void(0);" title="docutils.readers.standalone.Reader.document" alt="" coords="107,359,318,377" />
+<area shape="rect" href="javascript:void(0);" title="Names for this component." alt="" coords="107,377,318,396" />
+<area shape="rect" href="javascript:void(0);" title="docutils.readers.standalone.Reader" alt="" coords="95,299,330,411" />
+<area shape="rect" href="javascript:void(0);" title="Is format supported by this component?" alt="" coords="146,148,279,167" />
+<area shape="rect" href="javascript:void(0);" title="Base class for Docutils components." alt="" coords="134,117,291,173" />
+<area shape="rect" href="epydoc.markup.restructuredtext._EpydocReader-class.html#default_transforms" title="epydoc.markup.restructuredtext._EpydocReader.default_transforms" alt="" coords="148,559,276,577" />
+<area shape="rect" href="epydoc.markup.restructuredtext._EpydocReader-class.html#v" title="epydoc.markup.restructuredtext._EpydocReader.v" alt="" coords="148,577,276,596" />
+<area shape="rect" href="epydoc.markup.restructuredtext._EpydocReader-class.html#get_transforms" title="Transforms required by this class." alt="" coords="148,599,276,617" />
+<area shape="rect" href="epydoc.markup.restructuredtext._EpydocReader-class.html#__init__" title="Initialize the Reader instance." alt="" coords="148,617,276,636" />
+<area shape="rect" href="epydoc.markup.restructuredtext._EpydocReader-class.html#new_document" title="Create and return a new empty document tree (root node)." alt="" coords="148,636,276,655" />
+<area shape="rect" href="epydoc.markup.restructuredtext._EpydocReader-class.html#report" title="epydoc.markup.restructuredtext._EpydocReader.report" alt="" coords="148,655,276,673" />
+<area shape="rect" href="epydoc.markup.restructuredtext._EpydocReader-class.html" title="A reader that captures all errors that are generated by parsing, and appends them to a list." alt="" coords="136,536,288,680" />
+<area shape="rect" href="epydoc.docwriter.xlink.ApiLinkReader-class.html#settings_spec" title="The option parser configuration." alt="" coords="56,452,368,471" />
+<area shape="rect" href="epydoc.docwriter.xlink.ApiLinkReader-class.html#read" title="epydoc.docwriter.xlink.ApiLinkReader.read" alt="" coords="56,473,368,492" />
+<area shape="rect" href="epydoc.docwriter.xlink.ApiLinkReader-class.html#read_configuration" title="Read the configuration for the configured URL resolver." alt="" coords="56,492,368,511" />
+<area shape="rect" href="epydoc.docwriter.xlink.ApiLinkReader-class.html" title="A Docutils standalone reader allowing external documentation links." alt="" coords="44,429,380,517" />
+<area shape="rect" href="javascript:void(0);" title="A dictionary of defaults for settings not in settings_spec (internal settings, intended to be inaccessible by command-line and config file)." alt="" coords="18,28,180,47" />
+<area shape="rect" href="javascript:void(0);" title="A dictionary of auxiliary defaults, to override defaults for settings defined in other components." alt="" coords="18,47,180,65" />
+<area shape="rect" href="javascript:void(0);" title="Settings containing filesystem paths." alt="" coords="18,65,180,84" />
+<area shape="rect" href="javascript:void(0);" title="Runtime setting specification base class." alt="" coords="6,5,192,99" />
+<area shape="rect" href="javascript:void(0);" title="List of functions to try to resolve unknown references." alt="" coords="234,47,418,65" />
+<area shape="rect" href="javascript:void(0);" title="Runtime transform specification base class." alt="" coords="222,24,430,80" />
+</map>
+  <img src="uml_class_diagram_for_epydoc_m_23.gif" alt='' usemap="#uml_class_diagram_for_epydoc_m_23" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<p>A reader that captures all errors that are generated by parsing, and 
+  appends them to a list.</p>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.restructuredtext._EpydocReader-class.html#get_transforms" class="summary-sig-name">get_transforms</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Transforms required by this class.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#_EpydocReader.get_transforms">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_get_transforms-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_get_transforms-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_get_transforms" name="call_graph_for_get_transforms">
+<area shape="rect" href="javascript:void(0);" title="docutils.readers.standalone.Reader.get_transforms()" alt="" coords="200,6,611,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext._EpydocReader-class.html#get_transforms" title="get_transforms()" alt="" coords="7,6,151,38" />
+</map>
+  <img src="call_graph_for_get_transforms.gif" alt='' usemap="#call_graph_for_get_transforms" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.restructuredtext._EpydocReader-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">errors</span>)</span><br />
+      Initialize the Reader instance.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#_EpydocReader.__init__">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for___init___46-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for___init___46-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for___init___46" name="call_graph_for___init___46">
+<area shape="rect" href="epydoc.docwriter.xlink.ApiLinkReader-class.html#__init__" title="docwriter.xlink.ApiLinkReader.__init__()" alt="" coords="355,6,691,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext._EpydocReader-class.html#__init__" title="__init__()" alt="" coords="209,6,305,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext-module.html#parse_docstring" title="parse_docstring()" alt="" coords="7,6,159,38" />
+</map>
+  <img src="call_graph_for___init___46.gif" alt='' usemap="#call_graph_for___init___46" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.restructuredtext._EpydocReader-class.html#new_document" class="summary-sig-name">new_document</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Create and return a new empty document tree (root node).</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#_EpydocReader.new_document">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_new_document-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_new_document-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_new_document" name="call_graph_for_new_document">
+<area shape="rect" href="javascript:void(0);" title="docutils.readers.Reader.parse()" alt="" coords="5,6,259,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext._EpydocReader-class.html#new_document" title="new_document()" alt="" coords="308,6,455,38" />
+<area shape="rect" href="javascript:void(0);" title="docutils.utils.Reporter.attach_observer()" alt="" coords="504,6,827,38" />
+</map>
+  <img src="call_graph_for_new_document.gif" alt='' usemap="#call_graph_for_new_document" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="report"></a><span class="summary-sig-name">report</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">error</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#_EpydocReader.report">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.docwriter.xlink.ApiLinkReader-class.html">docwriter.xlink.ApiLinkReader</a></code></b>:
+      <code><a href="epydoc.docwriter.xlink.ApiLinkReader-class.html#read">read</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>docutils.readers.Reader</code></b>:
+      <code>parse</code>,
+      <code>set_parser</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>docutils.Component</code></b>:
+      <code>supports</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS METHODS ==================== -->
+<a name="section-ClassMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Class Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-ClassMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.docwriter.xlink.ApiLinkReader-class.html">docwriter.xlink.ApiLinkReader</a></code></b>:
+      <code><a href="epydoc.docwriter.xlink.ApiLinkReader-class.html#read_configuration">read_configuration</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Class Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-ClassVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="default_transforms"></a><span class="summary-name">default_transforms</span> = <code title="list(ApiLinkReader.default_transforms)">list(ApiLinkReader.default_transforms)</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="v"></a><span class="summary-name">v</span> = <code title="'5'"><code class="variable-quote">'</code><code class="variable-string">5</code><code class="variable-quote">'</code></code>
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.docwriter.xlink.ApiLinkReader-class.html">docwriter.xlink.ApiLinkReader</a></code></b>:
+      <code><a href="epydoc.docwriter.xlink.ApiLinkReader-class.html#settings_spec">settings_spec</a></code>
+      </p>
+    <div class="private">    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="epydoc.docwriter.xlink.ApiLinkReader-class.html">docwriter.xlink.ApiLinkReader</a></code></b> (private):
+      <code><a href="epydoc.docwriter.xlink.ApiLinkReader-class.html#_conf" onclick="show_private();">_conf</a></code>
+      </p></div>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>docutils.readers.standalone.Reader</code></b>:
+      <code>config_section</code>,
+      <code>config_section_dependencies</code>,
+      <code>document</code>,
+      <code>supported</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>docutils.readers.Reader</code></b>:
+      <code>component_type</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>docutils.SettingsSpec</code></b>:
+      <code>relative_path_settings</code>,
+      <code>settings_default_overrides</code>,
+      <code>settings_defaults</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>docutils.TransformSpec</code></b>:
+      <code>unknown_reference_resolvers</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Method Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-MethodDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="get_transforms"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">get_transforms</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#_EpydocReader.get_transforms">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_get_transforms-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_get_transforms-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_get_transforms" name="call_graph_for_get_transforms">
+<area shape="rect" href="javascript:void(0);" title="docutils.readers.standalone.Reader.get_transforms()" alt="" coords="200,6,611,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext._EpydocReader-class.html#get_transforms" title="get_transforms()" alt="" coords="7,6,151,38" />
+</map>
+  <img src="call_graph_for_get_transforms.gif" alt='' usemap="#call_graph_for_get_transforms" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  Transforms required by this class.  Override in subclasses.
+  <dl class="fields">
+    <dt>Overrides:
+        docutils.TransformSpec.get_transforms
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">errors</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#_EpydocReader.__init__">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for___init___46-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for___init___46-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for___init___46" name="call_graph_for___init___46">
+<area shape="rect" href="epydoc.docwriter.xlink.ApiLinkReader-class.html#__init__" title="docwriter.xlink.ApiLinkReader.__init__()" alt="" coords="355,6,691,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext._EpydocReader-class.html#__init__" title="__init__()" alt="" coords="209,6,305,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext-module.html#parse_docstring" title="parse_docstring()" alt="" coords="7,6,159,38" />
+</map>
+  <img src="call_graph_for___init___46.gif" alt='' usemap="#call_graph_for___init___46" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Initialize the Reader instance.</p>
+<p>Several instance attributes are defined with dummy initial values.
+Subclasses may use these attributes as they wish.</p>
+  <dl class="fields">
+    <dt>Overrides:
+        docutils.readers.Reader.__init__
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="new_document"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">new_document</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#_EpydocReader.new_document">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_new_document-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_new_document-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_new_document" name="call_graph_for_new_document">
+<area shape="rect" href="javascript:void(0);" title="docutils.readers.Reader.parse()" alt="" coords="5,6,259,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext._EpydocReader-class.html#new_document" title="new_document()" alt="" coords="308,6,455,38" />
+<area shape="rect" href="javascript:void(0);" title="docutils.utils.Reporter.attach_observer()" alt="" coords="504,6,827,38" />
+</map>
+  <img src="call_graph_for_new_document.gif" alt='' usemap="#call_graph_for_new_document" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  Create and return a new empty document tree (root node).
+  <dl class="fields">
+    <dt>Overrides:
+        docutils.readers.Reader.new_document
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:08:56 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html b/doc/api/epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html
new file mode 100644
index 0000000..f407c1f
--- /dev/null
+++ b/doc/api/epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html
@@ -0,0 +1,649 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.markup.restructuredtext._SplitFieldsTranslator</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.markup-module.html">Package markup</a> ::
+        <a href="epydoc.markup.restructuredtext-module.html">Module restructuredtext</a> ::
+        Class _SplitFieldsTranslator
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class _SplitFieldsTranslator</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#_SplitFieldsTranslator">source code</a></span></p>
+<center>
+<center>  <map id="uml_class_diagram_for_epydoc_m_24" name="uml_class_diagram_for_epydoc_m_24">
+<area shape="rect" href="javascript:void(0);" title="Tuple containing node class names (as strings)." alt="" coords="98,28,290,47" />
+<area shape="rect" href="javascript:void(0);" title="Call self."visit_ + node class name" with node as parameter." alt="" coords="98,49,290,68" />
+<area shape="rect" href="javascript:void(0);" title="Call self."depart_ + node class name" with node as parameter." alt="" coords="98,68,290,87" />
+<area shape="rect" href="javascript:void(0);" title="Called before exiting unknown Node types." alt="" coords="98,87,290,105" />
+<area shape="rect" href="javascript:void(0);" title=""Visitor" pattern GoF95 abstract superclass implementation for document tree traversals." alt="" coords="86,5,302,112" />
+<area shape="rect" href="epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html#ALLOW_UNMARKED_ARG_IN_CONSOLIDATED_FIELD" title="If true, then consolidated fields are not required to mark arguments with  `backticks`." alt="" coords="18,159,370,177" />
+<area shape="rect" href="epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html#__init__" title="epydoc.markup.restructuredtext._SplitFieldsTranslator.__init__" alt="" coords="18,180,370,199" />
+<area shape="rect" href="epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html#visit_document" title="epydoc.markup.restructuredtext._SplitFieldsTranslator.visit_document" alt="" coords="18,199,370,217" />
+<area shape="rect" href="epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html#visit_field" title="epydoc.markup.restructuredtext._SplitFieldsTranslator.visit_field" alt="" coords="18,217,370,236" />
+<area shape="rect" href="epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html#visit_field_list" title="epydoc.markup.restructuredtext._SplitFieldsTranslator.visit_field_list" alt="" coords="18,236,370,255" />
+<area shape="rect" href="epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html#handle_consolidated_field" title="Attempt to handle a consolidated section." alt="" coords="18,255,370,273" />
+<area shape="rect" href="epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html#handle_consolidated_bullet_list" title="epydoc.markup.restructuredtext._SplitFieldsTranslator.handle_consolidated_bullet_list" alt="" coords="18,273,370,292" />
+<area shape="rect" href="epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html#handle_consolidated_definition_list" title="epydoc.markup.restructuredtext._SplitFieldsTranslator.handle_consolidated_definition_list" alt="" coords="18,292,370,311" />
+<area shape="rect" href="epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html#unknown_visit" title="Ignore all unknown nodes" alt="" coords="18,311,370,329" />
+<area shape="rect" href="epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html" title="A docutils translator that removes all fields from a document, and collects them into the instance variable fields" alt="" coords="6,136,382,336" />
+<area shape="rect" href="epydoc.markup.Field-class.html" title="The contents of a docstring's field." alt="" coords="162,373,226,411" />
+<area shape="rect" href="epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html#fields" title="epydoc.markup.restructuredtext._SplitFieldsTranslator.fields" alt="" coords="194,347,226,362" />
+<area shape="rect" href="epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html#fields" title="*" alt="" coords="199,353,204,367" />
+<area shape="rect" href="epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html#fields" title="fields" alt="" coords="190,327,198,335" />
+<area shape="rect" href="epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html#fields" title="*" alt="" coords="190,375,198,383" />
+</map>
+  <img src="uml_class_diagram_for_epydoc_m_24.gif" alt='' usemap="#uml_class_diagram_for_epydoc_m_24" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<p>A docutils translator that removes all fields from a document, and 
+  collects them into the instance variable <code>fields</code></p>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">document</span>,
+        <span class="summary-sig-arg">errors</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#_SplitFieldsTranslator.__init__">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for___init___47-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for___init___47-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for___init___47" name="call_graph_for___init___47">
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.NodeVisitor.__init__()" alt="" coords="471,6,775,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html#split_fields" title="ParsedRstDocstring.split_fields()" alt="" coords="5,6,275,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html#__init__" title="__init__()" alt="" coords="324,6,420,38" />
+</map>
+  <img src="call_graph_for___init___47.gif" alt='' usemap="#call_graph_for___init___47" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="visit_document"></a><span class="summary-sig-name">visit_document</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">node</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#_SplitFieldsTranslator.visit_document">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_visit_document_3-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_visit_document_3-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_visit_document_3" name="call_graph_for_visit_document_3">
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.NodeVisitor.dispatch_visit()" alt="" coords="6,6,352,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html#visit_document" title="visit_document()" alt="" coords="400,6,550,38" />
+</map>
+  <img src="call_graph_for_visit_document_3.gif" alt='' usemap="#call_graph_for_visit_document_3" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="visit_field"></a><span class="summary-sig-name">visit_field</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">node</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#_SplitFieldsTranslator.visit_field">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_visit_field-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_visit_field-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_visit_field" name="call_graph_for_visit_field">
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.Element.__getitem__()" alt="" coords="557,6,864,38" />
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.Element.astext()" alt="" coords="583,62,839,94" />
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.Element.remove()" alt="" coords="576,118,845,150" />
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.NodeVisitor.dispatch_visit()" alt="" coords="5,118,352,150" />
+<area shape="rect" href="epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html#visit_field" title="visit_field()" alt="" coords="400,118,509,150" />
+<area shape="rect" href="epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html#_add_field" title="_add_field()" alt="" coords="653,174,768,206" />
+<area shape="rect" href="epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html#handle_consolidated_field" title="handle_consolidated_field()" alt="" coords="595,230,827,262" />
+</map>
+  <img src="call_graph_for_visit_field.gif" alt='' usemap="#call_graph_for_visit_field" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_add_field"></a><span class="summary-sig-name">_add_field</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">tagname</span>,
+        <span class="summary-sig-arg">arg</span>,
+        <span class="summary-sig-arg">fbody</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#_SplitFieldsTranslator._add_field">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for__add_field-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for__add_field-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for__add_field" name="call_graph_for__add_field">
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.Element.__getitem__()" alt="" coords="517,6,824,38" />
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.Element.append()" alt="" coords="537,62,804,94" />
+<area shape="rect" href="epydoc.markup.Field-class.html#__init__" title="Field.__init__()" alt="" coords="601,118,740,150" />
+<area shape="rect" href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html#__init__" title="ParsedRstDocstring.__init__()" alt="" coords="547,174,795,206" />
+<area shape="rect" href="epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html#_add_field" title="_add_field()" alt="" coords="355,90,469,122" />
+<area shape="rect" href="epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html#handle_consolidated_bullet_list" title="handle_consolidated_bullet_list()" alt="" coords="20,34,292,66" />
+<area shape="rect" href="epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html#handle_consolidated_definition_list" title="handle_consolidated_definition_list()" alt="" coords="5,90,307,122" />
+<area shape="rect" href="epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html#visit_field" title="visit_field()" alt="" coords="101,146,211,178" />
+</map>
+  <img src="call_graph_for__add_field.gif" alt='' usemap="#call_graph_for__add_field" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="visit_field_list"></a><span class="summary-sig-name">visit_field_list</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">node</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#_SplitFieldsTranslator.visit_field_list">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_visit_field_lis-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_visit_field_lis-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_visit_field_lis" name="call_graph_for_visit_field_lis">
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.Element.remove()" alt="" coords="589,6,859,38" />
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.NodeVisitor.dispatch_visit()" alt="" coords="5,6,352,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html#visit_field_list" title="visit_field_list()" alt="" coords="400,6,541,38" />
+</map>
+  <img src="call_graph_for_visit_field_lis.gif" alt='' usemap="#call_graph_for_visit_field_lis" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="handle_consolidated_field"></a><span class="summary-sig-name">handle_consolidated_field</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">body</span>,
+        <span class="summary-sig-arg">tagname</span>)</span><br />
+      Attempt to handle a consolidated section.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#_SplitFieldsTranslator.handle_consolidated_field">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_handle_consolid-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_handle_consolid-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_handle_consolid" name="call_graph_for_handle_consolid">
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.Element.__getitem__()" alt="" coords="443,6,750,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html#handle_consolidated_bullet_list" title="handle_consolidated_bullet_list()" alt="" coords="460,62,732,94" />
+<area shape="rect" href="epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html#handle_consolidated_definition_list" title="handle_consolidated_definition_list()" alt="" coords="446,118,747,150" />
+<area shape="rect" href="epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html#handle_consolidated_field" title="handle_consolidated_field()" alt="" coords="163,62,395,94" />
+<area shape="rect" href="epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html#visit_field" title="visit_field()" alt="" coords="6,62,115,94" />
+</map>
+  <img src="call_graph_for_handle_consolid.gif" alt='' usemap="#call_graph_for_handle_consolid" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="handle_consolidated_bullet_list"></a><span class="summary-sig-name">handle_consolidated_bullet_list</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">items</span>,
+        <span class="summary-sig-arg">tagname</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#_SplitFieldsTranslator.handle_consolidated_bullet_list">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_handle_consolid_2-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_handle_consolid_2-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_handle_consolid_2" name="call_graph_for_handle_consolid_2">
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.Element.__getitem__()" alt="" coords="605,6,912,38" />
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.Element.__setitem__()" alt="" coords="607,62,911,94" />
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.Element.astext()" alt="" coords="631,118,887,150" />
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.Element.copy()" alt="" coords="635,174,883,206" />
+<area shape="rect" href="epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html#_add_field" title="_add_field()" alt="" coords="701,230,816,262" />
+<area shape="rect" href="epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html#handle_consolidated_bullet_list" title="handle_consolidated_bullet_list()" alt="" coords="285,118,557,150" />
+<area shape="rect" href="epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html#handle_consolidated_field" title="handle_consolidated_field()" alt="" coords="5,118,237,150" />
+</map>
+  <img src="call_graph_for_handle_consolid_2.gif" alt='' usemap="#call_graph_for_handle_consolid_2" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="handle_consolidated_definition_list"></a><span class="summary-sig-name">handle_consolidated_definition_list</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">items</span>,
+        <span class="summary-sig-arg">tagname</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#_SplitFieldsTranslator.handle_consolidated_definition_list">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_handle_consolid_3-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_handle_consolid_3-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_handle_consolid_3" name="call_graph_for_handle_consolid_3">
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.Element.__getitem__()" alt="" coords="635,6,942,38" />
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.Element.astext()" alt="" coords="660,62,916,94" />
+<area shape="rect" href="epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html#_add_field" title="_add_field()" alt="" coords="731,118,846,150" />
+<area shape="rect" href="epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html#handle_consolidated_definition_list" title="handle_consolidated_definition_list()" alt="" coords="286,62,587,94" />
+<area shape="rect" href="epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html#handle_consolidated_field" title="handle_consolidated_field()" alt="" coords="6,62,238,94" />
+</map>
+  <img src="call_graph_for_handle_consolid_3.gif" alt='' usemap="#call_graph_for_handle_consolid_3" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html#unknown_visit" class="summary-sig-name">unknown_visit</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">node</span>)</span><br />
+      Ignore all unknown nodes</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#_SplitFieldsTranslator.unknown_visit">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_unknown_visit-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_unknown_visit-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_unknown_visit" name="call_graph_for_unknown_visit">
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.NodeVisitor.dispatch_visit()" alt="" coords="5,6,352,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html#unknown_visit" title="unknown_visit()" alt="" coords="400,6,547,38" />
+</map>
+  <img src="call_graph_for_unknown_visit.gif" alt='' usemap="#call_graph_for_unknown_visit" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>docutils.nodes.NodeVisitor</code></b>:
+      <code>dispatch_departure</code>,
+      <code>dispatch_visit</code>,
+      <code>unknown_departure</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Class Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-ClassVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html#ALLOW_UNMARKED_ARG_IN_CONSOLIDATED_FIELD" class="summary-name">ALLOW_UNMARKED_ARG_IN_CONSOLIDATED_FIELD</a> = <code title="True">True</code><br />
+      If true, then consolidated fields are not required to mark arguments 
+      with <code>`backticks`</code>.
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>docutils.nodes.NodeVisitor</code></b>:
+      <code>optional</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== INSTANCE VARIABLES ==================== -->
+<a name="section-InstanceVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>list</code> of <a href="epydoc.markup.Field-class.html" 
+      class="link">Field</a></span>
+    </td><td class="summary">
+        <a name="fields"></a><span class="summary-name">fields</span><br />
+      The fields of the most recently walked document.
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Method Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-MethodDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">document</span>,
+        <span class="sig-arg">errors</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#_SplitFieldsTranslator.__init__">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for___init___47-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for___init___47-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for___init___47" name="call_graph_for___init___47">
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.NodeVisitor.__init__()" alt="" coords="471,6,775,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html#split_fields" title="ParsedRstDocstring.split_fields()" alt="" coords="5,6,275,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html#__init__" title="__init__()" alt="" coords="324,6,420,38" />
+</map>
+  <img src="call_graph_for___init___47.gif" alt='' usemap="#call_graph_for___init___47" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  
+  <dl class="fields">
+    <dt>Overrides:
+        docutils.nodes.NodeVisitor.__init__
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="unknown_visit"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">unknown_visit</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">node</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#_SplitFieldsTranslator.unknown_visit">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_unknown_visit-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_unknown_visit-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_unknown_visit" name="call_graph_for_unknown_visit">
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.NodeVisitor.dispatch_visit()" alt="" coords="5,6,352,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html#unknown_visit" title="unknown_visit()" alt="" coords="400,6,547,38" />
+</map>
+  <img src="call_graph_for_unknown_visit.gif" alt='' usemap="#call_graph_for_unknown_visit" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Ignore all unknown nodes</p>
+  <dl class="fields">
+    <dt>Overrides:
+        docutils.nodes.NodeVisitor.unknown_visit
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== CLASS VARIABLE DETAILS ==================== -->
+<a name="section-ClassVariableDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Class Variable Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-ClassVariableDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="ALLOW_UNMARKED_ARG_IN_CONSOLIDATED_FIELD"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">ALLOW_UNMARKED_ARG_IN_CONSOLIDATED_FIELD</h3>
+  <p>If true, then consolidated fields are not required to mark arguments 
+  with <code>`backticks`</code>.  (This is currently only implemented for 
+  consolidated fields expressed as definition lists; consolidated fields 
+  expressed as unordered lists still require backticks for now.</p>
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+True
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:08:59 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.markup.restructuredtext._SummaryExtractor-class.html b/doc/api/epydoc.markup.restructuredtext._SummaryExtractor-class.html
new file mode 100644
index 0000000..8d55232
--- /dev/null
+++ b/doc/api/epydoc.markup.restructuredtext._SummaryExtractor-class.html
@@ -0,0 +1,421 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.markup.restructuredtext._SummaryExtractor</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.markup-module.html">Package markup</a> ::
+        <a href="epydoc.markup.restructuredtext-module.html">Module restructuredtext</a> ::
+        Class _SummaryExtractor
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.markup.restructuredtext._SummaryExtractor-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class _SummaryExtractor</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#_SummaryExtractor">source code</a></span></p>
+<center>
+<center>  <map id="uml_class_diagram_for_epydoc_m_25" name="uml_class_diagram_for_epydoc_m_25">
+<area shape="rect" href="javascript:void(0);" title="Tuple containing node class names (as strings)." alt="" coords="18,28,210,47" />
+<area shape="rect" href="javascript:void(0);" title="Call self."visit_ + node class name" with node as parameter." alt="" coords="18,50,210,68" />
+<area shape="rect" href="javascript:void(0);" title="Call self."depart_ + node class name" with node as parameter." alt="" coords="18,68,210,87" />
+<area shape="rect" href="javascript:void(0);" title="Called before exiting unknown Node types." alt="" coords="18,87,210,106" />
+<area shape="rect" href="javascript:void(0);" title=""Visitor" pattern GoF95 abstract superclass implementation for document tree traversals." alt="" coords="6,6,222,112" />
+<area shape="rect" href="epydoc.markup.restructuredtext._SummaryExtractor-class.html#__init__" title="epydoc.markup.restructuredtext._SummaryExtractor.__init__" alt="" coords="31,162,196,180" />
+<area shape="rect" href="epydoc.markup.restructuredtext._SummaryExtractor-class.html#visit_document" title="epydoc.markup.restructuredtext._SummaryExtractor.visit_document" alt="" coords="31,180,196,199" />
+<area shape="rect" href="epydoc.markup.restructuredtext._SummaryExtractor-class.html#visit_paragraph" title="epydoc.markup.restructuredtext._SummaryExtractor.visit_paragraph" alt="" coords="31,199,196,218" />
+<area shape="rect" href="epydoc.markup.restructuredtext._SummaryExtractor-class.html#visit_field" title="epydoc.markup.restructuredtext._SummaryExtractor.visit_field" alt="" coords="31,218,196,236" />
+<area shape="rect" href="epydoc.markup.restructuredtext._SummaryExtractor-class.html#unknown_visit" title="Ignore all unknown nodes" alt="" coords="31,236,196,255" />
+<area shape="rect" href="epydoc.markup.restructuredtext._SummaryExtractor-class.html" title="A docutils node visitor that extracts the first sentence from the first paragraph in a document." alt="" coords="19,131,208,262" />
+</map>
+  <img src="uml_class_diagram_for_epydoc_m_25.gif" alt='' usemap="#uml_class_diagram_for_epydoc_m_25" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<p>A docutils node visitor that extracts the first sentence from the 
+  first paragraph in a document.</p>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.restructuredtext._SummaryExtractor-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">document</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#_SummaryExtractor.__init__">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for___init___48-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for___init___48-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for___init___48" name="call_graph_for___init___48">
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.NodeVisitor.__init__()" alt="" coords="457,6,761,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html#summary" title="ParsedRstDocstring.summary()" alt="" coords="5,6,261,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext._SummaryExtractor-class.html#__init__" title="__init__()" alt="" coords="311,6,407,38" />
+</map>
+  <img src="call_graph_for___init___48.gif" alt='' usemap="#call_graph_for___init___48" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="visit_document"></a><span class="summary-sig-name">visit_document</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">node</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#_SummaryExtractor.visit_document">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_visit_document_4-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_visit_document_4-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_visit_document_4" name="call_graph_for_visit_document_4">
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.NodeVisitor.dispatch_visit()" alt="" coords="6,6,352,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext._SummaryExtractor-class.html#visit_document" title="visit_document()" alt="" coords="400,6,550,38" />
+</map>
+  <img src="call_graph_for_visit_document_4.gif" alt='' usemap="#call_graph_for_visit_document_4" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="visit_paragraph"></a><span class="summary-sig-name">visit_paragraph</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">node</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#_SummaryExtractor.visit_paragraph">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_visit_paragraph-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_visit_paragraph-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_visit_paragraph" name="call_graph_for_visit_paragraph">
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.Element.__getitem__()" alt="" coords="597,6,904,38" />
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.Element.__setitem__()" alt="" coords="599,62,903,94" />
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.Element.copy()" alt="" coords="627,118,875,150" />
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.NodeVisitor.dispatch_visit()" alt="" coords="5,90,352,122" />
+<area shape="rect" href="epydoc.markup.restructuredtext._SummaryExtractor-class.html#visit_paragraph" title="visit_paragraph()" alt="" coords="400,90,549,122" />
+<area shape="rect" href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html#__init__" title="ParsedRstDocstring.__init__()" alt="" coords="627,174,875,206" />
+</map>
+  <img src="call_graph_for_visit_paragraph.gif" alt='' usemap="#call_graph_for_visit_paragraph" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="visit_field"></a><span class="summary-sig-name">visit_field</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">node</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#_SummaryExtractor.visit_field">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.restructuredtext._SummaryExtractor-class.html#unknown_visit" class="summary-sig-name">unknown_visit</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">node</span>)</span><br />
+      Ignore all unknown nodes</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#_SummaryExtractor.unknown_visit">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_unknown_visit_2-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_unknown_visit_2-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_unknown_visit_2" name="call_graph_for_unknown_visit_2">
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.NodeVisitor.dispatch_visit()" alt="" coords="5,6,352,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext._SummaryExtractor-class.html#unknown_visit" title="unknown_visit()" alt="" coords="400,6,547,38" />
+</map>
+  <img src="call_graph_for_unknown_visit_2.gif" alt='' usemap="#call_graph_for_unknown_visit_2" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>docutils.nodes.NodeVisitor</code></b>:
+      <code>dispatch_departure</code>,
+      <code>dispatch_visit</code>,
+      <code>unknown_departure</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Class Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-ClassVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="_SUMMARY_RE"></a><span class="summary-name">_SUMMARY_RE</span> = <code title="re.compile(r'(\s*[\w\W]*?\.)(\s|$)')">re.compile(r'<code class="re-group">(</code>\s<code class="re-op">*</code><code class="re-group">[</code>\w\W<code class="re-group">]</code><code class="re-op">*?</code>\.<code class="re-group">)</code><code class="re-group">(</code>\s<code class="re-op">|</code>$<code class="re-group">)</code>')</code>
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>docutils.nodes.NodeVisitor</code></b>:
+      <code>optional</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Method Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-MethodDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">document</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#_SummaryExtractor.__init__">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for___init___48-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for___init___48-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for___init___48" name="call_graph_for___init___48">
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.NodeVisitor.__init__()" alt="" coords="457,6,761,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html#summary" title="ParsedRstDocstring.summary()" alt="" coords="5,6,261,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext._SummaryExtractor-class.html#__init__" title="__init__()" alt="" coords="311,6,407,38" />
+</map>
+  <img src="call_graph_for___init___48.gif" alt='' usemap="#call_graph_for___init___48" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  
+  <dl class="fields">
+    <dt>Overrides:
+        docutils.nodes.NodeVisitor.__init__
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="unknown_visit"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">unknown_visit</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">node</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#_SummaryExtractor.unknown_visit">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_unknown_visit_2-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_unknown_visit_2-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_unknown_visit_2" name="call_graph_for_unknown_visit_2">
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.NodeVisitor.dispatch_visit()" alt="" coords="5,6,352,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext._SummaryExtractor-class.html#unknown_visit" title="unknown_visit()" alt="" coords="400,6,547,38" />
+</map>
+  <img src="call_graph_for_unknown_visit_2.gif" alt='' usemap="#call_graph_for_unknown_visit_2" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Ignore all unknown nodes</p>
+  <dl class="fields">
+    <dt>Overrides:
+        docutils.nodes.NodeVisitor.unknown_visit
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:09:00 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.markup.restructuredtext._TermsExtractor-class.html b/doc/api/epydoc.markup.restructuredtext._TermsExtractor-class.html
new file mode 100644
index 0000000..99c5fe8
--- /dev/null
+++ b/doc/api/epydoc.markup.restructuredtext._TermsExtractor-class.html
@@ -0,0 +1,543 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.markup.restructuredtext._TermsExtractor</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.markup-module.html">Package markup</a> ::
+        <a href="epydoc.markup.restructuredtext-module.html">Module restructuredtext</a> ::
+        Class _TermsExtractor
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.markup.restructuredtext._TermsExtractor-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class _TermsExtractor</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#_TermsExtractor">source code</a></span></p>
+<center>
+<center>  <map id="uml_class_diagram_for_epydoc_m_26" name="uml_class_diagram_for_epydoc_m_26">
+<area shape="rect" href="javascript:void(0);" title="Tuple containing node class names (as strings)." alt="" coords="20,28,207,47" />
+<area shape="rect" href="javascript:void(0);" title="Call self."visit_ + node class name" with node as parameter." alt="" coords="20,50,207,68" />
+<area shape="rect" href="javascript:void(0);" title="Call self."depart_ + node class name" with node as parameter." alt="" coords="20,68,207,87" />
+<area shape="rect" href="javascript:void(0);" title=""Visitor" pattern GoF95 abstract superclass implementation for document tree traversals." alt="" coords="8,6,219,94" />
+<area shape="rect" href="epydoc.markup.restructuredtext._TermsExtractor-class.html#terms" title="The terms currently found." alt="" coords="18,135,210,154" />
+<area shape="rect" href="epydoc.markup.restructuredtext._TermsExtractor-class.html#__init__" title="epydoc.markup.restructuredtext._TermsExtractor.__init__" alt="" coords="18,156,210,175" />
+<area shape="rect" href="epydoc.markup.restructuredtext._TermsExtractor-class.html#visit_document" title="epydoc.markup.restructuredtext._TermsExtractor.visit_document" alt="" coords="18,175,210,194" />
+<area shape="rect" href="epydoc.markup.restructuredtext._TermsExtractor-class.html#visit_emphasis" title="epydoc.markup.restructuredtext._TermsExtractor.visit_emphasis" alt="" coords="18,194,210,212" />
+<area shape="rect" href="epydoc.markup.restructuredtext._TermsExtractor-class.html#depart_emphasis" title="epydoc.markup.restructuredtext._TermsExtractor.depart_emphasis" alt="" coords="18,212,210,231" />
+<area shape="rect" href="epydoc.markup.restructuredtext._TermsExtractor-class.html#visit_Text" title="epydoc.markup.restructuredtext._TermsExtractor.visit_Text" alt="" coords="18,231,210,250" />
+<area shape="rect" href="epydoc.markup.restructuredtext._TermsExtractor-class.html#unknown_visit" title="Ignore all unknown nodes" alt="" coords="18,250,210,268" />
+<area shape="rect" href="epydoc.markup.restructuredtext._TermsExtractor-class.html#unknown_departure" title="Ignore all unknown nodes" alt="" coords="18,268,210,287" />
+<area shape="rect" href="epydoc.markup.restructuredtext._TermsExtractor-class.html" title="A docutils node visitor that extracts the terms from documentation." alt="" coords="6,112,222,294" />
+</map>
+  <img src="uml_class_diagram_for_epydoc_m_26.gif" alt='' usemap="#uml_class_diagram_for_epydoc_m_26" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<p>A docutils node visitor that extracts the terms from 
+  documentation.</p>
+  <p>Terms are created using the <code>:term:</code> interpreted text 
+  role.</p>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.restructuredtext._TermsExtractor-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">document</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#_TermsExtractor.__init__">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for___init___49-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for___init___49-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for___init___49" name="call_graph_for___init___49">
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.NodeVisitor.__init__()" alt="" coords="481,6,785,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html#index_terms" title="ParsedRstDocstring.index_terms()" alt="" coords="7,6,284,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext._TermsExtractor-class.html#__init__" title="__init__()" alt="" coords="335,6,431,38" />
+</map>
+  <img src="call_graph_for___init___49.gif" alt='' usemap="#call_graph_for___init___49" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="visit_document"></a><span class="summary-sig-name">visit_document</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">node</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#_TermsExtractor.visit_document">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_visit_document_5-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_visit_document_5-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_visit_document_5" name="call_graph_for_visit_document_5">
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.NodeVisitor.dispatch_visit()" alt="" coords="6,6,352,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext._TermsExtractor-class.html#visit_document" title="visit_document()" alt="" coords="400,6,550,38" />
+</map>
+  <img src="call_graph_for_visit_document_5.gif" alt='' usemap="#call_graph_for_visit_document_5" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="visit_emphasis"></a><span class="summary-sig-name">visit_emphasis</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">node</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#_TermsExtractor.visit_emphasis">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_visit_emphasis_2-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_visit_emphasis_2-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_visit_emphasis_2" name="call_graph_for_visit_emphasis_2">
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.Element.get()" alt="" coords="596,6,831,38" />
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.NodeVisitor.dispatch_visit()" alt="" coords="5,6,352,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext._TermsExtractor-class.html#visit_emphasis" title="visit_emphasis()" alt="" coords="401,6,545,38" />
+</map>
+  <img src="call_graph_for_visit_emphasis_2.gif" alt='' usemap="#call_graph_for_visit_emphasis_2" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="depart_emphasis"></a><span class="summary-sig-name">depart_emphasis</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">node</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#_TermsExtractor.depart_emphasis">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_depart_emphasis-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_depart_emphasis-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_depart_emphasis" name="call_graph_for_depart_emphasis">
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.Element.get()" alt="" coords="647,6,881,38" />
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.NodeVisitor.dispatch_departure()" alt="" coords="5,6,389,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext._TermsExtractor-class.html#depart_emphasis" title="depart_emphasis()" alt="" coords="437,6,597,38" />
+</map>
+  <img src="call_graph_for_depart_emphasis.gif" alt='' usemap="#call_graph_for_depart_emphasis" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="visit_Text"></a><span class="summary-sig-name">visit_Text</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">node</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#_TermsExtractor.visit_Text">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_visit_text-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_visit_text-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_visit_text" name="call_graph_for_visit_text">
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.NodeVisitor.dispatch_visit()" alt="" coords="6,6,352,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext._TermsExtractor-class.html#visit_Text" title="visit_Text()" alt="" coords="400,6,510,38" />
+</map>
+  <img src="call_graph_for_visit_text.gif" alt='' usemap="#call_graph_for_visit_text" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.restructuredtext._TermsExtractor-class.html#unknown_visit" class="summary-sig-name">unknown_visit</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">node</span>)</span><br />
+      Ignore all unknown nodes</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#_TermsExtractor.unknown_visit">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_unknown_visit_3-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_unknown_visit_3-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_unknown_visit_3" name="call_graph_for_unknown_visit_3">
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.NodeVisitor.dispatch_visit()" alt="" coords="5,6,352,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext._TermsExtractor-class.html#unknown_visit" title="unknown_visit()" alt="" coords="400,6,547,38" />
+</map>
+  <img src="call_graph_for_unknown_visit_3.gif" alt='' usemap="#call_graph_for_unknown_visit_3" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.restructuredtext._TermsExtractor-class.html#unknown_departure" class="summary-sig-name">unknown_departure</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">node</span>)</span><br />
+      Ignore all unknown nodes</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#_TermsExtractor.unknown_departure">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_unknown_departu-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_unknown_departu-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_unknown_departu" name="call_graph_for_unknown_departu">
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.NodeVisitor.dispatch_departure()" alt="" coords="6,6,390,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext._TermsExtractor-class.html#unknown_departure" title="unknown_departure()" alt="" coords="438,6,622,38" />
+</map>
+  <img src="call_graph_for_unknown_departu.gif" alt='' usemap="#call_graph_for_unknown_departu" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>docutils.nodes.NodeVisitor</code></b>:
+      <code>dispatch_departure</code>,
+      <code>dispatch_visit</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Class Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-ClassVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>docutils.nodes.NodeVisitor</code></b>:
+      <code>optional</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== INSTANCE VARIABLES ==================== -->
+<a name="section-InstanceVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>list</code></span>
+    </td><td class="summary">
+        <a name="terms"></a><span class="summary-name">terms</span><br />
+      The terms currently found.
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Method Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-MethodDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">document</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#_TermsExtractor.__init__">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for___init___49-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for___init___49-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for___init___49" name="call_graph_for___init___49">
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.NodeVisitor.__init__()" alt="" coords="481,6,785,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html#index_terms" title="ParsedRstDocstring.index_terms()" alt="" coords="7,6,284,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext._TermsExtractor-class.html#__init__" title="__init__()" alt="" coords="335,6,431,38" />
+</map>
+  <img src="call_graph_for___init___49.gif" alt='' usemap="#call_graph_for___init___49" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  
+  <dl class="fields">
+    <dt>Overrides:
+        docutils.nodes.NodeVisitor.__init__
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="unknown_visit"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">unknown_visit</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">node</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#_TermsExtractor.unknown_visit">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_unknown_visit_3-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_unknown_visit_3-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_unknown_visit_3" name="call_graph_for_unknown_visit_3">
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.NodeVisitor.dispatch_visit()" alt="" coords="5,6,352,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext._TermsExtractor-class.html#unknown_visit" title="unknown_visit()" alt="" coords="400,6,547,38" />
+</map>
+  <img src="call_graph_for_unknown_visit_3.gif" alt='' usemap="#call_graph_for_unknown_visit_3" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Ignore all unknown nodes</p>
+  <dl class="fields">
+    <dt>Overrides:
+        docutils.nodes.NodeVisitor.unknown_visit
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="unknown_departure"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">unknown_departure</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">node</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#_TermsExtractor.unknown_departure">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_unknown_departu-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_unknown_departu-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_unknown_departu" name="call_graph_for_unknown_departu">
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.NodeVisitor.dispatch_departure()" alt="" coords="6,6,390,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext._TermsExtractor-class.html#unknown_departure" title="unknown_departure()" alt="" coords="438,6,622,38" />
+</map>
+  <img src="call_graph_for_unknown_departu.gif" alt='' usemap="#call_graph_for_unknown_departu" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Ignore all unknown nodes</p>
+  <dl class="fields">
+    <dt>Overrides:
+        docutils.nodes.NodeVisitor.unknown_departure
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:09:02 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.markup.restructuredtext.dotgraph-class.html b/doc/api/epydoc.markup.restructuredtext.dotgraph-class.html
new file mode 100644
index 0000000..16ec5b4
--- /dev/null
+++ b/doc/api/epydoc.markup.restructuredtext.dotgraph-class.html
@@ -0,0 +1,447 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.markup.restructuredtext.dotgraph</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.markup-module.html">Package markup</a> ::
+        <a href="epydoc.markup.restructuredtext-module.html">Module restructuredtext</a> ::
+        Class dotgraph
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.markup.restructuredtext.dotgraph-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class dotgraph</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#dotgraph">source code</a></span></p>
+<center>
+<center>  <map id="uml_class_diagram_for_epydoc_m_27" name="uml_class_diagram_for_epydoc_m_27">
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.image.astext" alt="" coords="208,753,333,772" />
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.image" alt="" coords="196,723,345,779" />
+<area shape="rect" href="epydoc.markup.restructuredtext.dotgraph-class.html#__init__" title="epydoc.markup.restructuredtext.dotgraph.__init__" alt="" coords="92,828,449,847" />
+<area shape="rect" href="epydoc.markup.restructuredtext.dotgraph-class.html#graph" title="epydoc.markup.restructuredtext.dotgraph.graph" alt="" coords="92,847,449,865" />
+<area shape="rect" href="epydoc.markup.restructuredtext.dotgraph-class.html" title="A custom docutils node that should be rendered using Graphviz dot." alt="" coords="80,797,461,872" />
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.General" alt="" coords="5,471,168,513" />
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.Inline" alt="" coords="197,471,344,513" />
+<area shape="rect" href="javascript:void(0);" title="List attributes, automatically initialized to empty lists for all nodes." alt="" coords="385,303,679,321" />
+<area shape="rect" href="javascript:void(0);" title="The element generic identifier." alt="" coords="385,321,679,340" />
+<area shape="rect" href="javascript:void(0);" title="Separator for child nodes, used by astext() method." alt="" coords="385,340,679,359" />
+<area shape="rect" href="javascript:void(0);" title="The raw text from which this element was constructed." alt="" coords="385,359,679,377" />
+<area shape="rect" href="javascript:void(0);" title="List of child nodes (elements and/or Text)." alt="" coords="385,377,679,396" />
+<area shape="rect" href="javascript:void(0);" title="Dictionary of attribute {name: value}." alt="" coords="385,396,679,415" />
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.Element.__repr__" alt="" coords="385,417,679,436" />
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.Element.shortrepr" alt="" coords="385,436,679,455" />
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.Element.__unicode__" alt="" coords="385,455,679,473" />
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.Element.starttag" alt="" coords="385,473,679,492" />
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.Element.endtag" alt="" coords="385,492,679,511" />
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.Element.emptytag" alt="" coords="385,511,679,529" />
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.Element.__len__" alt="" coords="385,529,679,548" />
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.Element.__getitem__" alt="" coords="385,548,679,567" />
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.Element.__setitem__" alt="" coords="385,567,679,585" />
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.Element.__delitem__" alt="" coords="385,585,679,604" />
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.Element.__add__" alt="" coords="385,604,679,623" />
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.Element.__radd__" alt="" coords="385,623,679,641" />
+<area shape="rect" href="javascript:void(0);" title="Append a node or a list of nodes to self.children." alt="" coords="385,641,679,660" />
+<area shape="rect" href="javascript:void(0);" title="Note that this Element has been referenced by its name name or id id." alt="" coords="385,679,679,697" />
+<area shape="rect" href="javascript:void(0);" title="Element is the superclass to all specific elements." alt="" coords="373,280,691,704" />
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.Body" alt="" coords="15,112,159,155" />
+<area shape="rect" href="javascript:void(0);" title="Back-reference to the Node immediately containing this Node." alt="" coords="284,28,780,47" />
+<area shape="rect" href="javascript:void(0);" title="The document node at the root of the tree containing this Node." alt="" coords="284,47,780,65" />
+<area shape="rect" href="javascript:void(0);" title="Path or description of the input source which generated this Node." alt="" coords="284,65,780,84" />
+<area shape="rect" href="javascript:void(0);" title="The line number (1-based) of the beginning of this Node in source." alt="" coords="284,84,780,103" />
+<area shape="rect" href="javascript:void(0);" title="Node instances are always true, even if they're empty." alt="" coords="284,105,780,124" />
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.Node.__str__" alt="" coords="284,124,780,143" />
+<area shape="rect" href="javascript:void(0);" title="Return a DOM fragment representation of this Node." alt="" coords="284,143,780,161" />
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.Node.setup_child" alt="" coords="284,161,780,180" />
+<area shape="rect" href="javascript:void(0);" title="Traverse a tree of Node objects, calling the dispatch_visit() method of visitor when entering each node." alt="" coords="284,180,780,199" />
+<area shape="rect" href="javascript:void(0);" title="Perform a tree traversal similarly to Node.walk() (which see), except also call the dispatch_departure() method before exiting each node." alt="" coords="284,199,780,217" />
+<area shape="rect" href="javascript:void(0);" title="Return an iterable containing" alt="" coords="284,217,780,236" />
+<area shape="rect" href="javascript:void(0);" title="Return the first node in the iterable returned by traverse(), or None if the iterable is empty." alt="" coords="284,236,780,255" />
+<area shape="rect" href="javascript:void(0);" title="Abstract base class of nodes in a document tree." alt="" coords="272,5,792,261" />
+</map>
+  <img src="uml_class_diagram_for_epydoc_m_27.gif" alt='' usemap="#uml_class_diagram_for_epydoc_m_27" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<p>A custom docutils node that should be rendered using Graphviz dot. 
+  This node does not directly store the graph; instead, it stores a pointer
+  to a function that can be used to generate the graph. This allows the 
+  graph to be built based on information that might not be available yet at
+  parse time.  This graph generation function has the following 
+  signature:</p>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">def</span> <span class="py-defname">generate_graph</span>(docindex, context, linker, *args):
+<span class="py-more">... </span>    <span class="py-string">'generates and returns a new DotGraph'</span></pre>
+  <p>Where <code>docindex</code> is a docindex containing the documentation
+  that epydoc has built; <code>context</code> is the <code>APIDoc</code> 
+  whose docstring contains this dotgraph node; <code>linker</code> is a <a 
+  href="epydoc.markup.DocstringLinker-class.html" 
+  class="link">DocstringLinker</a> that can be used to resolve 
+  crossreferences; and <code>args</code> is any extra arguments that are 
+  passed to the <code>dotgraph</code> constructor.</p>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.markup.restructuredtext.dotgraph-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">generate_graph_func</span>,
+        <span class="summary-sig-arg">*generate_graph_args</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#dotgraph.__init__">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for___init___50-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for___init___50-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for___init___50" name="call_graph_for___init___50">
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.Element.__init__()" alt="" coords="403,90,678,122" />
+<area shape="rect" href="epydoc.markup.restructuredtext-module.html#classtree_directive" title="classtree_directive()" alt="" coords="20,6,194,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext.dotgraph-class.html#__init__" title="__init__()" alt="" coords="258,90,354,122" />
+<area shape="rect" href="epydoc.markup.restructuredtext-module.html#digraph_directive" title="digraph_directive()" alt="" coords="24,62,190,94" />
+<area shape="rect" href="epydoc.markup.restructuredtext-module.html#importgraph_directive" title="importgraph_directive()" alt="" coords="7,118,207,150" />
+<area shape="rect" href="epydoc.markup.restructuredtext-module.html#packagetree_directive" title="packagetree_directive()" alt="" coords="8,174,206,206" />
+</map>
+  <img src="call_graph_for___init___50.gif" alt='' usemap="#call_graph_for___init___50" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="graph"></a><span class="summary-sig-name">graph</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">docindex</span>,
+        <span class="summary-sig-arg">context</span>,
+        <span class="summary-sig-arg">linker</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#dotgraph.graph">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_graph-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_graph-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_graph" name="call_graph_for_graph">
+<area shape="rect" href="epydoc.markup.restructuredtext._EpydocHTMLTranslator-class.html#visit_dotgraph" title="_EpydocHTMLTranslator.visit_dotgraph()" alt="" coords="5,90,349,122" />
+<area shape="rect" href="epydoc.markup.restructuredtext.dotgraph-class.html#graph" title="graph()" alt="" coords="399,90,473,122" />
+<area shape="rect" href="epydoc.markup.restructuredtext-module.html#_construct_classtree" title="_construct_classtree()" alt="" coords="536,6,723,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext-module.html#_construct_digraph" title="_construct_digraph()" alt="" coords="540,62,719,94" />
+<area shape="rect" href="epydoc.markup.restructuredtext-module.html#_construct_importgraph" title="_construct_importgraph()" alt="" coords="523,118,736,150" />
+<area shape="rect" href="epydoc.markup.restructuredtext-module.html#_construct_packagetree" title="_construct_packagetree()" alt="" coords="524,174,735,206" />
+</map>
+  <img src="call_graph_for_graph.gif" alt='' usemap="#call_graph_for_graph" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>docutils.nodes.image</code></b>:
+      <code>astext</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>docutils.nodes.Element</code></b>:
+      <code>__add__</code>,
+      <code>__delitem__</code>,
+      <code>__getitem__</code>,
+      <code>__iadd__</code>,
+      <code>__len__</code>,
+      <code>__radd__</code>,
+      <code>__repr__</code>,
+      <code>__setitem__</code>,
+      <code>__unicode__</code>,
+      <code>append</code>,
+      <code>attlist</code>,
+      <code>clear</code>,
+      <code>copy</code>,
+      <code>deepcopy</code>,
+      <code>delattr</code>,
+      <code>emptytag</code>,
+      <code>endtag</code>,
+      <code>extend</code>,
+      <code>first_child_matching_class</code>,
+      <code>first_child_not_matching_class</code>,
+      <code>get</code>,
+      <code>has_key</code>,
+      <code>hasattr</code>,
+      <code>index</code>,
+      <code>insert</code>,
+      <code>is_not_default</code>,
+      <code>non_default_attributes</code>,
+      <code>note_referenced_by</code>,
+      <code>pformat</code>,
+      <code>pop</code>,
+      <code>remove</code>,
+      <code>replace</code>,
+      <code>replace_self</code>,
+      <code>set_class</code>,
+      <code>setdefault</code>,
+      <code>shortrepr</code>,
+      <code>starttag</code>,
+      <code>update_basic_atts</code>
+      </p>
+    <div class="private">    <p class="indent-wrapped-lines"><b>Inherited from <code>docutils.nodes.Element</code></b> (private):
+      <code>_dom_node</code>
+      </p></div>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>docutils.nodes.Node</code></b>:
+      <code>__nonzero__</code>,
+      <code>__str__</code>,
+      <code>asdom</code>,
+      <code>next_node</code>,
+      <code>setup_child</code>,
+      <code>traverse</code>,
+      <code>walk</code>,
+      <code>walkabout</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Class Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-ClassVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>docutils.nodes.Element</code></b>:
+      <code>child_text_separator</code>,
+      <code>list_attributes</code>,
+      <code>tagname</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>docutils.nodes.Node</code></b>:
+      <code>document</code>,
+      <code>line</code>,
+      <code>parent</code>,
+      <code>source</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== INSTANCE VARIABLES ==================== -->
+<a name="section-InstanceVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>docutils.nodes.Element</code></b>:
+      <code>attributes</code>,
+      <code>children</code>,
+      <code>rawsource</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Method Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-MethodDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">generate_graph_func</span>,
+        <span class="sig-arg">*generate_graph_args</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.markup.restructuredtext-pysrc.html#dotgraph.__init__">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for___init___50-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for___init___50-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for___init___50" name="call_graph_for___init___50">
+<area shape="rect" href="javascript:void(0);" title="docutils.nodes.Element.__init__()" alt="" coords="403,90,678,122" />
+<area shape="rect" href="epydoc.markup.restructuredtext-module.html#classtree_directive" title="classtree_directive()" alt="" coords="20,6,194,38" />
+<area shape="rect" href="epydoc.markup.restructuredtext.dotgraph-class.html#__init__" title="__init__()" alt="" coords="258,90,354,122" />
+<area shape="rect" href="epydoc.markup.restructuredtext-module.html#digraph_directive" title="digraph_directive()" alt="" coords="24,62,190,94" />
+<area shape="rect" href="epydoc.markup.restructuredtext-module.html#importgraph_directive" title="importgraph_directive()" alt="" coords="7,118,207,150" />
+<area shape="rect" href="epydoc.markup.restructuredtext-module.html#packagetree_directive" title="packagetree_directive()" alt="" coords="8,174,206,206" />
+</map>
+  <img src="call_graph_for___init___50.gif" alt='' usemap="#call_graph_for___init___50" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  
+  <dl class="fields">
+    <dt>Overrides:
+        docutils.nodes.Element.__init__
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:09:04 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.test-module.html b/doc/api/epydoc.test-module.html
new file mode 100644
index 0000000..f0bdf23
--- /dev/null
+++ b/doc/api/epydoc.test-module.html
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.test</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        Package test
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.test-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PACKAGE DESCRIPTION ==================== -->
+<h1 class="epydoc">Package test</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.test-pysrc.html">source code</a></span></p>
+<p>Regression testing.</p>
+
+<!-- ==================== SUBMODULES ==================== -->
+<a name="section-Submodules"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Submodules</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Submodules"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+  <tr><td class="summary">
+  <ul class="nomargin">
+    <li> <strong class="uidlink"><a href="epydoc.test.util-module.html">epydoc.test.util</a></strong>: <em class="summary">Utility functions used by the regression tests 
+        (<code>*.doctest</code>).</em>    </li>
+  </ul></td></tr>
+</table>
+
+<br />
+<!-- ==================== FUNCTIONS ==================== -->
+<a name="section-Functions"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Functions</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Functions"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="main"></a><span class="summary-sig-name">main</span>()</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.test-pysrc.html#main">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.test-module.html#check_requirements" class="summary-sig-name">check_requirements</a>(<span class="summary-sig-arg">filename</span>)</span><br />
+      Search for strings of the form:</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.test-pysrc.html#check_requirements">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTION DETAILS ==================== -->
+<a name="section-FunctionDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Function Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-FunctionDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="check_requirements"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">check_requirements</span>(<span class="sig-arg">filename</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.test-pysrc.html#check_requirements">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Search for strings of the form:</p>
+<pre class="literalblock">
+   [Require: <module>]
+</pre>
+  <p>If any are found, then try importing the module named <module>. 
+  If the import fails, then return False.  If all required modules are 
+  found, return True.  (This includes the case where no requirements are 
+  listed.)</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:06:48 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.test-pysrc.html b/doc/api/epydoc.test-pysrc.html
new file mode 100644
index 0000000..5520fb7
--- /dev/null
+++ b/doc/api/epydoc.test-pysrc.html
@@ -0,0 +1,225 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.test</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        Package test
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.test-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="epydoc.test-module.html">Package epydoc.test</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno"> 1</tt>  <tt class="py-line"><tt class="py-comment"># epydoc -- Regression testing</tt> </tt>
+<a name="L2"></a><tt class="py-lineno"> 2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L3"></a><tt class="py-lineno"> 3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2005 Edward Loper</tt> </tt>
+<a name="L4"></a><tt class="py-lineno"> 4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Author: Edward Loper <edloper at loper.org></tt> </tt>
+<a name="L5"></a><tt class="py-lineno"> 5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># URL: <http://epydoc.sf.net></tt> </tt>
+<a name="L6"></a><tt class="py-lineno"> 6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L7"></a><tt class="py-lineno"> 7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># $Id: __init__.py 1502 2007-02-14 08:38:44Z edloper $</tt> </tt>
+<a name="L8"></a><tt class="py-lineno"> 8</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L9"></a><tt class="py-lineno"> 9</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L10"></a><tt class="py-lineno">10</tt>  <tt class="py-line"><tt class="py-docstring">Regression testing.</tt> </tt>
+<a name="L11"></a><tt class="py-lineno">11</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L12"></a><tt class="py-lineno">12</tt>  <tt class="py-line"><tt class="py-name">__docformat__</tt> <tt class="py-op">=</tt> <tt class="py-string">'epytext en'</tt> </tt>
+<a name="L13"></a><tt class="py-lineno">13</tt>  <tt class="py-line"> </tt>
+<a name="L14"></a><tt class="py-lineno">14</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">unittest</tt><tt class="py-op">,</tt> <tt id="link-0" class="py-name" targets="Module epydoc.markup.doctest=epydoc.markup.doctest-module.html"><a title="epydoc.markup.doctest" class="py-name" href="#" onclick="return doclink('link-0', 'doctest', 'link-0');">doctest</a></tt><tt class="py-op">,</tt> <tt id="link-1" class="py-name" targets="Package epydoc=epydoc-module [...]
+<a name="L15"></a><tt class="py-lineno">15</tt>  <tt class="py-line"> </tt>
+<a name="main"></a><div id="main-def"><a name="L16"></a><tt class="py-lineno">16</tt> <a class="py-toggle" href="#" id="main-toggle" onclick="return toggle('main');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.test-module.html#main">main</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="main-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="main-expanded"><a name="L17"></a><tt class="py-lineno">17</tt>  <tt class="py-line">    <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L18"></a><tt class="py-lineno">18</tt>  <tt class="py-line">        <tt id="link-3" class="py-name"><a title="epydoc.markup.doctest" class="py-name" href="#" onclick="return doclink('link-3', 'doctest', 'link-0');">doctest</a></tt><tt class="py-op">.</tt><tt class="py-name">register_optionflag</tt> </tt>
+<a name="L19"></a><tt class="py-lineno">19</tt>  <tt class="py-line">    <tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt>
+<a name="L20"></a><tt class="py-lineno">20</tt>  <tt class="py-line">        <tt class="py-keyword">print</tt> <tt class="py-op">(</tt><tt class="py-string">"\n"</tt> </tt>
+<a name="L21"></a><tt class="py-lineno">21</tt>  <tt class="py-line">            <tt class="py-string">"The regression test suite requires a more recent version of\n"</tt> </tt>
+<a name="L22"></a><tt class="py-lineno">22</tt>  <tt class="py-line">            <tt class="py-string">"doctest (e.g., the version that ships with Python 2.4 or 2.5).\n"</tt> </tt>
+<a name="L23"></a><tt class="py-lineno">23</tt>  <tt class="py-line">            <tt class="py-string">"Please place a new version of doctest on your path before \n"</tt> </tt>
+<a name="L24"></a><tt class="py-lineno">24</tt>  <tt class="py-line">            <tt class="py-string">"running the test suite.\n"</tt><tt class="py-op">)</tt> </tt>
+<a name="L25"></a><tt class="py-lineno">25</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> </tt>
+<a name="L26"></a><tt class="py-lineno">26</tt>  <tt class="py-line">                           </tt>
+<a name="L27"></a><tt class="py-lineno">27</tt>  <tt class="py-line">     </tt>
+<a name="L28"></a><tt class="py-lineno">28</tt>  <tt class="py-line">    <tt class="py-name">PY24</tt> <tt class="py-op">=</tt> <tt id="link-4" class="py-name"><a title="epydoc.markup.doctest" class="py-name" href="#" onclick="return doclink('link-4', 'doctest', 'link-0');">doctest</a></tt><tt class="py-op">.</tt><tt class="py-name">register_optionflag</tt><tt class="py-op">(</tt><tt class="py-string">'PYTHON2.4'</tt><tt class="py-op">)</tt> </tt>
+<a name="L29"></a><tt class="py-lineno">29</tt>  <tt class="py-line">    <tt class="py-string">"""Flag indicating that a doctest example requires Python 2.4+"""</tt> </tt>
+<a name="L30"></a><tt class="py-lineno">30</tt>  <tt class="py-line">     </tt>
+<a name="L31"></a><tt class="py-lineno">31</tt>  <tt class="py-line">    <tt class="py-name">PY25</tt> <tt class="py-op">=</tt> <tt id="link-5" class="py-name"><a title="epydoc.markup.doctest" class="py-name" href="#" onclick="return doclink('link-5', 'doctest', 'link-0');">doctest</a></tt><tt class="py-op">.</tt><tt class="py-name">register_optionflag</tt><tt class="py-op">(</tt><tt class="py-string">'PYTHON2.5'</tt><tt class="py-op">)</tt> </tt>
+<a name="L32"></a><tt class="py-lineno">32</tt>  <tt class="py-line">    <tt class="py-string">"""Flag indicating that a doctest example requires Python 2.5+"""</tt> </tt>
+<a name="L33"></a><tt class="py-lineno">33</tt>  <tt class="py-line">     </tt>
+<a name="L34"></a><tt class="py-lineno">34</tt>  <tt class="py-line">    <tt class="py-keyword">class</tt> <tt class="py-def-name">DocTestParser</tt><tt class="py-op">(</tt><tt class="py-base-class">doctest</tt><tt class="py-op">.</tt><tt class="py-base-class">DocTestParser</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L35"></a><tt class="py-lineno">35</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L36"></a><tt class="py-lineno">36</tt>  <tt class="py-line"><tt class="py-docstring">        Custom doctest parser that adds support for two new flags</tt> </tt>
+<a name="L37"></a><tt class="py-lineno">37</tt>  <tt class="py-line"><tt class="py-docstring">        +PYTHON2.4 and +PYTHON2.5.</tt> </tt>
+<a name="L38"></a><tt class="py-lineno">38</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L39"></a><tt class="py-lineno">39</tt>  <tt class="py-line">        <tt class="py-keyword">def</tt> <tt class="py-def-name">parse</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">string</tt><tt class="py-op">,</tt> <tt class="py-param">name</tt><tt class="py-op">=</tt><tt class="py-string">'<string>'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L40"></a><tt class="py-lineno">40</tt>  <tt class="py-line">            <tt class="py-name">pieces</tt> <tt class="py-op">=</tt> <tt id="link-6" class="py-name"><a title="epydoc.markup.doctest" class="py-name" href="#" onclick="return doclink('link-6', 'doctest', 'link-0');">doctest</a></tt><tt class="py-op">.</tt><tt class="py-name">DocTestParser</tt><tt class="py-op">.</tt><tt id="link-7" class="py-name" targets="Function epydoc.markup.epytext.parse()=epydoc.markup.epytext-mod [...]
+epydoc.markup.parse" class="py-name" href="#" onclick="return doclink('link-7', 'parse', 'link-7');">parse</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">string</tt><tt class="py-op">,</tt> <tt id="link-8" class="py-name" targets="Variable epydoc.apidoc.VariableDoc.name=epydoc.apidoc.VariableDoc-class.html#name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-8', 'name', 'link-8'); [...]
+<a name="L41"></a><tt class="py-lineno">41</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">i</tt><tt class="py-op">,</tt> <tt class="py-name">val</tt> <tt class="py-keyword">in</tt> <tt class="py-name">enumerate</tt><tt class="py-op">(</tt><tt class="py-name">pieces</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L42"></a><tt class="py-lineno">42</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">,</tt> <tt id="link-9" class="py-name"><a title="epydoc.markup.doctest" class="py-name" href="#" onclick="return doclink('link-9', 'doctest', 'link-0');">doctest</a></tt><tt class="py-op">.</tt><tt class="py-name">Example</tt><tt class="py-op">)</ [...]
+<a name="L43"></a><tt class="py-lineno">43</tt>  <tt class="py-line">                    <tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">.</tt><tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-name">PY24</tt><tt class="py-op">,</tt> <tt class="py-name">False</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L44"></a><tt class="py-lineno">44</tt>  <tt class="py-line">                      <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">version</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-number">2</tt><tt class="py-op">]</tt> <tt class="py-op"><</tt> <tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">,</tt><tt class="py-number">4</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> </tt>
+<a name="L45"></a><tt class="py-lineno">45</tt>  <tt class="py-line">                     <tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">.</tt><tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-name">PY25</tt><tt class="py-op">,</tt> <tt class="py-name">False</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L46"></a><tt class="py-lineno">46</tt>  <tt class="py-line">                      <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">version</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-number">2</tt><tt class="py-op">]</tt> <tt class="py-op"><</tt> <tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">,</tt><tt class="py-number">5</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="p [...]
+<a name="L47"></a><tt class="py-lineno">47</tt>  <tt class="py-line">                    <tt class="py-name">pieces</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-10" class="py-name"><a title="epydoc.markup.doctest" class="py-name" href="#" onclick="return doclink('link-10', 'doctest', 'link-0');">doctest</a></tt><tt class="py-op">.</tt><tt class="py-name">Example</tt><tt class="py-op">(</tt><tt class="py-string">'1'</ [...]
+<a name="L48"></a><tt class="py-lineno">48</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">pieces</tt> </tt>
+</div></div><a name="L49"></a><tt class="py-lineno">49</tt>  <tt class="py-line"> </tt>
+<a name="L50"></a><tt class="py-lineno">50</tt>  <tt class="py-line">    <tt class="py-comment"># Turn on debugging.</tt> </tt>
+<a name="L51"></a><tt class="py-lineno">51</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-11" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-11', 'epydoc', 'link-1');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-12" class="py-name" targets="Variable epydoc.DEBUG=epydoc-module.html#DEBUG,Variable epydoc.gui.DEBUG=epydoc.gui-module.html#DEBUG,Variable epydoc.log.DEBUG=epydoc.log-module.html#DEBUG"><a title="epydoc.DEBUG
+epydoc.gui.DEBUG
+epydoc.log.DEBUG" class="py-name" href="#" onclick="return doclink('link-12', 'DEBUG', 'link-12');">DEBUG</a></tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L52"></a><tt class="py-lineno">52</tt>  <tt class="py-line">     </tt>
+<a name="L53"></a><tt class="py-lineno">53</tt>  <tt class="py-line">    <tt class="py-comment"># Options for doctest:</tt> </tt>
+<a name="L54"></a><tt class="py-lineno">54</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">options</tt> <tt class="py-op">=</tt> <tt id="link-13" class="py-name"><a title="epydoc.markup.doctest" class="py-name" href="#" onclick="return doclink('link-13', 'doctest', 'link-0');">doctest</a></tt><tt class="py-op">.</tt><tt id="link-14" class="py-name" targets="Variable epydoc.markup.pyval_repr.PyvalColorizer.ELLIPSIS=epydoc.markup.pyval_repr.PyvalColorizer-clas [...]
+<a name="L55"></a><tt class="py-lineno">55</tt>  <tt class="py-line">    <tt id="link-15" class="py-name"><a title="epydoc.markup.doctest" class="py-name" href="#" onclick="return doclink('link-15', 'doctest', 'link-0');">doctest</a></tt><tt class="py-op">.</tt><tt class="py-name">set_unittest_reportflags</tt><tt class="py-op">(</tt><tt id="link-16" class="py-name"><a title="epydoc.markup.doctest" class="py-name" href="#" onclick="return doclink('link-16', 'doctest', 'link-0');">doctest< [...]
+<a name="L56"></a><tt class="py-lineno">56</tt>  <tt class="py-line"> </tt>
+<a name="L57"></a><tt class="py-lineno">57</tt>  <tt class="py-line">    <tt class="py-comment"># Use a custom parser</tt> </tt>
+<a name="L58"></a><tt class="py-lineno">58</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">parser</tt> <tt class="py-op">=</tt> <tt class="py-name">DocTestParser</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L59"></a><tt class="py-lineno">59</tt>  <tt class="py-line">     </tt>
+<a name="L60"></a><tt class="py-lineno">60</tt>  <tt class="py-line">    <tt class="py-comment"># Find all test cases.</tt> </tt>
+<a name="L61"></a><tt class="py-lineno">61</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">tests</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L62"></a><tt class="py-lineno">62</tt>  <tt class="py-line">    <tt class="py-name">testdir</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-17" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-17', 'path', 'link-2');">path</a></tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-18" [...]
+<a name="L63"></a><tt class="py-lineno">63</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">testdir</tt> <tt class="py-op">==</tt> <tt class="py-string">''</tt><tt class="py-op">:</tt> <tt class="py-name">testdir</tt> <tt class="py-op">=</tt> <tt class="py-string">'.'</tt> </tt>
+<a name="L64"></a><tt class="py-lineno">64</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt id="link-19" class="py-name" targets="Variable epydoc.apidoc.ModuleDoc.filename=epydoc.apidoc.ModuleDoc-class.html#filename"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-19', 'filename', 'link-19');">filename</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">listdir</ [...]
+<a name="L65"></a><tt class="py-lineno">65</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt id="link-20" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-20', 'filename', 'link-19');">filename</a></tt><tt class="py-op">.</tt><tt class="py-name">endswith</tt><tt class="py-op">(</tt><tt class="py-string">'.doctest'</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L66"></a><tt class="py-lineno">66</tt>  <tt class="py-line">            <tt id="link-21" class="py-name" targets="Function epydoc.test.check_requirements()=epydoc.test-module.html#check_requirements"><a title="epydoc.test.check_requirements" class="py-name" href="#" onclick="return doclink('link-21', 'check_requirements', 'link-21');">check_requirements</a></tt><tt class="py-op">(</tt><tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-22" class="py-name"><a title="e [...]
+<a name="L67"></a><tt class="py-lineno">67</tt>  <tt class="py-line">            <tt class="py-name">tests</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-24" class="py-name"><a title="epydoc.markup.doctest" class="py-name" href="#" onclick="return doclink('link-24', 'doctest', 'link-0');">doctest</a></tt><tt class="py-op">.</tt><tt class="py-name">DocFileSuite</tt><tt class="py-op">(</tt><tt id="link-25" class="py-name"><a title="epydoc.ap [...]
+<a name="L68"></a><tt class="py-lineno">68</tt>  <tt class="py-line">                                              <tt class="py-name">parser</tt><tt class="py-op">=</tt><tt class="py-name">parser</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L69"></a><tt class="py-lineno">69</tt>  <tt class="py-line">             </tt>
+<a name="L70"></a><tt class="py-lineno">70</tt>  <tt class="py-line">    <tt class="py-comment"># Run all test cases.</tt> </tt>
+<a name="L71"></a><tt class="py-lineno">71</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">unittest</tt><tt class="py-op">.</tt><tt class="py-name">TextTestRunner</tt><tt class="py-op">(</tt><tt class="py-name">verbosity</tt><tt class="py-op">=</tt><tt class="py-number">2</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">run</tt><tt class="py-op">(</tt><tt class="py-name">unittest</tt><tt class="py-op">.</tt><tt class="py-name">TestSuit [...]
+</div><a name="L72"></a><tt class="py-lineno">72</tt>  <tt class="py-line"> </tt>
+<a name="check_requirements"></a><div id="check_requirements-def"><a name="L73"></a><tt class="py-lineno">73</tt> <a class="py-toggle" href="#" id="check_requirements-toggle" onclick="return toggle('check_requirements');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.test-module.html#check_requirements">check_requirements</a><tt class="py-op">(</tt><tt class="py-param">filename</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="check_requirements-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="check_requirements-expanded"><a name="L74"></a><tt class="py-lineno">74</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L75"></a><tt class="py-lineno">75</tt>  <tt class="py-line"><tt class="py-docstring">    Search for strings of the form::</tt> </tt>
+<a name="L76"></a><tt class="py-lineno">76</tt>  <tt class="py-line"><tt class="py-docstring">    </tt> </tt>
+<a name="L77"></a><tt class="py-lineno">77</tt>  <tt class="py-line"><tt class="py-docstring">        [Require: <module>]</tt> </tt>
+<a name="L78"></a><tt class="py-lineno">78</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L79"></a><tt class="py-lineno">79</tt>  <tt class="py-line"><tt class="py-docstring">    If any are found, then try importing the module named <module>.</tt> </tt>
+<a name="L80"></a><tt class="py-lineno">80</tt>  <tt class="py-line"><tt class="py-docstring">    If the import fails, then return False.  If all required modules</tt> </tt>
+<a name="L81"></a><tt class="py-lineno">81</tt>  <tt class="py-line"><tt class="py-docstring">    are found, return True.  (This includes the case where no</tt> </tt>
+<a name="L82"></a><tt class="py-lineno">82</tt>  <tt class="py-line"><tt class="py-docstring">    requirements are listed.)</tt> </tt>
+<a name="L83"></a><tt class="py-lineno">83</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L84"></a><tt class="py-lineno">84</tt>  <tt class="py-line">    <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt id="link-26" class="py-name" targets="Method epydoc.gui.EpydocGUI.open()=epydoc.gui.EpydocGUI-class.html#open"><a title="epydoc.gui.EpydocGUI.open" class="py-name" href="#" onclick="return doclink('link-26', 'open', 'link-26');">open</a></tt><tt class="py-op">(</tt><tt id="link-27" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href [...]
+epydoc.docwriter.xlink.ApiLinkReader.read
+epydoc.gui.GUILogger.read" class="py-name" href="#" onclick="return doclink('link-28', 'read', 'link-28');">read</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L85"></a><tt class="py-lineno">85</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">m</tt> <tt class="py-keyword">in</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">finditer</tt><tt class="py-op">(</tt><tt class="py-string">'(?mi)^[ ]*\:RequireModule:(.*)$'</tt><tt class="py-op">,</tt> <tt class="py-name">s</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L86"></a><tt class="py-lineno">86</tt>  <tt class="py-line">        <tt class="py-name">module</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt class="py-name">group</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">strip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L87"></a><tt class="py-lineno">87</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L88"></a><tt class="py-lineno">88</tt>  <tt class="py-line">            <tt class="py-name">__import__</tt><tt class="py-op">(</tt><tt class="py-name">module</tt><tt class="py-op">)</tt> </tt>
+<a name="L89"></a><tt class="py-lineno">89</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">ImportError</tt><tt class="py-op">:</tt> </tt>
+<a name="L90"></a><tt class="py-lineno">90</tt>  <tt class="py-line">            <tt class="py-keyword">print</tt> <tt class="py-op">(</tt><tt class="py-string">'Skipping %r (required module %r not found)'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L91"></a><tt class="py-lineno">91</tt>  <tt class="py-line">                   <tt class="py-op">(</tt><tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-29" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-29', 'path', 'link-2');">path</a></tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt id="link-30" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="p [...]
+<a name="L92"></a><tt class="py-lineno">92</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
+<a name="L93"></a><tt class="py-lineno">93</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
+</div><a name="L94"></a><tt class="py-lineno">94</tt>  <tt class="py-line">             </tt>
+<a name="L95"></a><tt class="py-lineno">95</tt>  <tt class="py-line"> </tt>
+<a name="L96"></a><tt class="py-lineno">96</tt>  <tt class="py-line"><tt class="py-keyword">if</tt> <tt class="py-name">__name__</tt><tt class="py-op">==</tt><tt class="py-string">'__main__'</tt><tt class="py-op">:</tt> </tt>
+<a name="L97"></a><tt class="py-lineno">97</tt>  <tt class="py-line">    <tt id="link-31" class="py-name" targets="Function epydoc.cli.main()=epydoc.cli-module.html#main,Function epydoc.test.main()=epydoc.test-module.html#main"><a title="epydoc.cli.main
+epydoc.test.main" class="py-name" href="#" onclick="return doclink('link-31', 'main', 'link-31');">main</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L98"></a><tt class="py-lineno">98</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:09:52 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.test.util-module.html b/doc/api/epydoc.test.util-module.html
new file mode 100644
index 0000000..b8bfb26
--- /dev/null
+++ b/doc/api/epydoc.test.util-module.html
@@ -0,0 +1,567 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.test.util</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.test-module.html">Package test</a> ::
+        Module util
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.test.util-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module util</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.test.util-pysrc.html">source code</a></span></p>
+<p>Utility functions used by the regression tests 
+  (<code>*.doctest</code>).</p>
+
+<!-- ==================== FUNCTIONS ==================== -->
+<a name="section-Functions"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Functions</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Functions"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Test Functions</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.test.util-module.html#buildvaluedoc" class="summary-sig-name">buildvaluedoc</a>(<span class="summary-sig-arg">s</span>)</span><br />
+      This test function takes a string containing the contents of a 
+      module.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.test.util-pysrc.html#buildvaluedoc">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.test.util-module.html#runbuilder" class="summary-sig-name">runbuilder</a>(<span class="summary-sig-arg">s</span>,
+        <span class="summary-sig-arg">attribs</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>,
+        <span class="summary-sig-arg">build</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">exclude</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>)</span><br />
+      This test function takes a string containing the contents of a 
+      module.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.test.util-pysrc.html#runbuilder">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.test.util-module.html#runparser" class="summary-sig-name">runparser</a>(<span class="summary-sig-arg">s</span>,
+        <span class="summary-sig-arg">attribs</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>,
+        <span class="summary-sig-arg">show</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">exclude</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>)</span><br />
+      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.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.test.util-pysrc.html#runparser">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.test.util-module.html#runintrospecter" class="summary-sig-name">runintrospecter</a>(<span class="summary-sig-arg">s</span>,
+        <span class="summary-sig-arg">attribs</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>,
+        <span class="summary-sig-arg">introspect</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">exclude</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>)</span><br />
+      This test function takes a string containing the contents of a 
+      module.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.test.util-pysrc.html#runintrospecter">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="print_warnings"></a><span class="summary-sig-name">print_warnings</span>()</span><br />
+      Register a logger that will print warnings & errors.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.test.util-pysrc.html#print_warnings">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.test.util-module.html#testencoding" class="summary-sig-name">testencoding</a>(<span class="summary-sig-arg">s</span>,
+        <span class="summary-sig-arg">introspect</span>=<span class="summary-sig-default">True</span>,
+        <span class="summary-sig-arg">parse</span>=<span class="summary-sig-default">True</span>,
+        <span class="summary-sig-arg">debug</span>=<span class="summary-sig-default">False</span>)</span><br />
+      An end-to-end test for unicode encodings.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.test.util-pysrc.html#testencoding">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Helper Functions</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="write_pystring_to_tmp_dir"></a><span class="summary-sig-name">write_pystring_to_tmp_dir</span>(<span class="summary-sig-arg">s</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.test.util-pysrc.html#write_pystring_to_tmp_dir">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="cleanup_tmp_dir"></a><span class="summary-sig-name">cleanup_tmp_dir</span>(<span class="summary-sig-arg">tmp_dir</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.test.util-pysrc.html#cleanup_tmp_dir">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="to_plain"></a><span class="summary-sig-name">to_plain</span>(<span class="summary-sig-arg">docstring</span>)</span><br />
+      Conver a parsed docstring into plain text</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.test.util-pysrc.html#to_plain">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="fun_to_plain"></a><span class="summary-sig-name">fun_to_plain</span>(<span class="summary-sig-arg">val_doc</span>)</span><br />
+      Convert parsed docstrings in text from a RoutineDoc</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.test.util-pysrc.html#fun_to_plain">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.test.util-module.html#print_docstring_as_html" class="summary-sig-name">print_docstring_as_html</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">parsed_docstring</span>,
+        <span class="summary-sig-arg">*varargs</span>,
+        <span class="summary-sig-arg">**kwargs</span>)</span><br />
+      Convert the given parsed_docstring to HTML and print it.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.test.util-pysrc.html#print_docstring_as_html">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.test.util-module.html#remove_surrogates" class="summary-sig-name">remove_surrogates</a>(<span class="summary-sig-arg">s</span>)</span><br />
+      The following is a helper function, used to convert two-character 
+      surrogate sequences into single characters.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.test.util-pysrc.html#remove_surrogates">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTION DETAILS ==================== -->
+<a name="section-FunctionDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Function Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-FunctionDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="buildvaluedoc"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">buildvaluedoc</span>(<span class="sig-arg">s</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.test.util-pysrc.html#buildvaluedoc">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>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 returns it as a 
+  <code>ValueDoc</code> object.</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="runbuilder"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">runbuilder</span>(<span class="sig-arg">s</span>,
+        <span class="sig-arg">attribs</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>,
+        <span class="sig-arg">build</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">exclude</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.test.util-pysrc.html#runbuilder">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>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 <code>attribs</code> argument specifies 
+  which attributes of the <code>APIDoc</code>s should be displayed. The 
+  <code>build</code> argument gives the name of a variable in the module 
+  whose documentation should be built, instead of bilding docs for the 
+  whole module.</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="runparser"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">runparser</span>(<span class="sig-arg">s</span>,
+        <span class="sig-arg">attribs</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>,
+        <span class="sig-arg">show</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">exclude</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.test.util-pysrc.html#runparser">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>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 specifies which 
+  attributes of the `APIDoc`s should be displayed.  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).</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="runintrospecter"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">runintrospecter</span>(<span class="sig-arg">s</span>,
+        <span class="sig-arg">attribs</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>,
+        <span class="sig-arg">introspect</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">exclude</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.test.util-pysrc.html#runintrospecter">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>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 <code>introspect_docs</code> to introspect it, and pretty prints
+  the resulting ModuleDoc object.  The <code>attribs</code> argument 
+  specifies which attributes of the <code>APIDoc</code>s should be 
+  displayed.  The <code>introspect</code> argument gives the name of a 
+  variable in the module whose value should be introspected, instead of 
+  introspecting the whole module.</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="testencoding"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">testencoding</span>(<span class="sig-arg">s</span>,
+        <span class="sig-arg">introspect</span>=<span class="sig-default">True</span>,
+        <span class="sig-arg">parse</span>=<span class="sig-default">True</span>,
+        <span class="sig-arg">debug</span>=<span class="sig-default">False</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.test.util-pysrc.html#testencoding">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>An end-to-end test for unicode encodings.  This function 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 HTML output, and displays 
+  them.  (In order to extract & display all docstrings, it 
+  monkey-patches the HMTLwriter.docstring_to_html() method.)</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="print_docstring_as_html"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">print_docstring_as_html</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">parsed_docstring</span>,
+        <span class="sig-arg">*varargs</span>,
+        <span class="sig-arg">**kwargs</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.test.util-pysrc.html#print_docstring_as_html">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Convert the given parsed_docstring to HTML and print it.  Ignore any 
+  other arguments.  This function is used by <a 
+  href="epydoc.test.util-module.html#testencoding" 
+  class="link">testencoding</a> to monkey-patch the HTMLWriter class's 
+  docstring_to_html() method.</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="remove_surrogates"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">remove_surrogates</span>(<span class="sig-arg">s</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.test.util-pysrc.html#remove_surrogates">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>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.</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:06:48 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.test.util-pysrc.html b/doc/api/epydoc.test.util-pysrc.html
new file mode 100644
index 0000000..d38944b
--- /dev/null
+++ b/doc/api/epydoc.test.util-pysrc.html
@@ -0,0 +1,409 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.test.util</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.test-module.html">Package test</a> ::
+        Module util
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.test.util-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="epydoc.test.util-module.html">Module epydoc.test.util</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno">  1</tt>  <tt class="py-line"><tt class="py-comment">#</tt> </tt>
+<a name="L2"></a><tt class="py-lineno">  2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># epydoc -- Utility functions used by regression tests (*.doctest)</tt> </tt>
+<a name="L3"></a><tt class="py-lineno">  3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Edward Loper</tt> </tt>
+<a name="L4"></a><tt class="py-lineno">  4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L5"></a><tt class="py-lineno">  5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Created [01/30/01 05:18 PM]</tt> </tt>
+<a name="L6"></a><tt class="py-lineno">  6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># $Id: html.py 1420 2007-01-28 14:19:30Z dvarrazzo $</tt> </tt>
+<a name="L7"></a><tt class="py-lineno">  7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L8"></a><tt class="py-lineno">  8</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L9"></a><tt class="py-lineno">  9</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L10"></a><tt class="py-lineno"> 10</tt>  <tt class="py-line"><tt class="py-docstring">Utility functions used by the regression tests (C{*.doctest}).</tt> </tt>
+<a name="L11"></a><tt class="py-lineno"> 11</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L12"></a><tt class="py-lineno"> 12</tt>  <tt class="py-line"><tt class="py-name">__docformat__</tt> <tt class="py-op">=</tt> <tt class="py-string">'epytext en'</tt> </tt>
+<a name="L13"></a><tt class="py-lineno"> 13</tt>  <tt class="py-line"> </tt>
+<a name="L14"></a><tt class="py-lineno"> 14</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">tempfile</tt><tt class="py-op">,</tt> <tt class="py-name">re</tt><tt class="py-op">,</tt> <tt class="py-name">os</tt><tt class="py-op">,</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-0" class="py-name" targets="Variable epydoc.apidoc.ModuleDoc.path=epydoc.apidoc.ModuleDoc-class.html#path"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name [...]
+<a name="L15"></a><tt class="py-lineno"> 15</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-1" class="py-name" targets="Package epydoc=epydoc-module.html"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-1', 'epydoc', 'link-1');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-2" class="py-name" targets="Module epydoc.docbuilder=epydoc.docbuilder-module.html"><a title="epydoc.docbuilder" class="py-name" href="#" onclick="return doclink( [...]
+<a name="L16"></a><tt class="py-lineno"> 16</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-5" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-5', 'epydoc', 'link-1');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-6" class="py-name" targets="Module epydoc.docparser=epydoc.docparser-module.html"><a title="epydoc.docparser" class="py-name" href="#" onclick="return doclink('link-6', 'docparser', 'link-6');">docparser</a [...]
+<a name="L17"></a><tt class="py-lineno"> 17</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-8" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-8', 'epydoc', 'link-1');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-9" class="py-name" targets="Module epydoc.docintrospecter=epydoc.docintrospecter-module.html"><a title="epydoc.docintrospecter" class="py-name" href="#" onclick="return doclink('link-9', 'docintrospecter',  [...]
+<a name="L18"></a><tt class="py-lineno"> 18</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-11" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-11', 'epydoc', 'link-1');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-12" class="py-name" targets="Module epydoc.apidoc=epydoc.apidoc-module.html"><a title="epydoc.apidoc" class="py-name" href="#" onclick="return doclink('link-12', 'apidoc', 'link-12');">apidoc</a></tt> <tt [...]
+<a name="L19"></a><tt class="py-lineno"> 19</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-15" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-15', 'epydoc', 'link-1');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-16" class="py-name" targets="Package epydoc.markup=epydoc.markup-module.html,Method epydoc.markup.doctest.DoctestColorizer.markup()=epydoc.markup.doctest.DoctestColorizer-class.html#markup,Method epydoc.m [...]
+epydoc.markup.doctest.DoctestColorizer.markup
+epydoc.markup.doctest.HTMLDoctestColorizer.markup
+epydoc.markup.doctest.LaTeXDoctestColorizer.markup
+epydoc.markup.doctest.XMLDoctestColorizer.markup" class="py-name" href="#" onclick="return doclink('link-16', 'markup', 'link-16');">markup</a></tt> <tt class="py-keyword">import</tt> <tt id="link-17" class="py-name" targets="Class epydoc.markup.ParsedDocstring=epydoc.markup.ParsedDocstring-class.html"><a title="epydoc.markup.ParsedDocstring" class="py-name" href="#" onclick="return doclink('link-17', 'ParsedDocstring', 'link-17');">ParsedDocstring</a></tt> </tt>
+<a name="L20"></a><tt class="py-lineno"> 20</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-18" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-18', 'epydoc', 'link-1');">epydoc</a></tt><tt class="py-op">.</tt><tt id="link-19" class="py-name" targets="Package epydoc.docwriter=epydoc.docwriter-module.html"><a title="epydoc.docwriter" class="py-name" href="#" onclick="return doclink('link-19', 'docwriter', 'link-19');">docwri [...]
+<a name="L21"></a><tt class="py-lineno"> 21</tt>  <tt class="py-line"> </tt>
+<a name="L22"></a><tt class="py-lineno"> 22</tt>  <tt class="py-line"><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L23"></a><tt class="py-lineno"> 23</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#{ Test Functions</tt> </tt>
+<a name="L24"></a><tt class="py-lineno"> 24</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L25"></a><tt class="py-lineno"> 25</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="buildvaluedoc"></a><div id="buildvaluedoc-def"><a name="L26"></a><tt class="py-lineno"> 26</tt> <a class="py-toggle" href="#" id="buildvaluedoc-toggle" onclick="return toggle('buildvaluedoc');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.test.util-module.html#buildvaluedoc">buildvaluedoc</a><tt class="py-op">(</tt><tt class="py-param">s</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="buildvaluedoc-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="buildvaluedoc-expanded"><a name="L27"></a><tt class="py-lineno"> 27</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L28"></a><tt class="py-lineno"> 28</tt>  <tt class="py-line"><tt class="py-docstring">    This test function takes a string containing the contents of a</tt> </tt>
+<a name="L29"></a><tt class="py-lineno"> 29</tt>  <tt class="py-line"><tt class="py-docstring">    module.  It writes the string contents to a file, imports the file</tt> </tt>
+<a name="L30"></a><tt class="py-lineno"> 30</tt>  <tt class="py-line"><tt class="py-docstring">    as a module, and uses build_doc to build documentation, and</tt> </tt>
+<a name="L31"></a><tt class="py-lineno"> 31</tt>  <tt class="py-line"><tt class="py-docstring">    returns it as a C{ValueDoc} object.</tt> </tt>
+<a name="L32"></a><tt class="py-lineno"> 32</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L33"></a><tt class="py-lineno"> 33</tt>  <tt class="py-line">    <tt class="py-name">tmp_dir</tt> <tt class="py-op">=</tt> <tt id="link-22" class="py-name" targets="Function epydoc.test.util.write_pystring_to_tmp_dir()=epydoc.test.util-module.html#write_pystring_to_tmp_dir"><a title="epydoc.test.util.write_pystring_to_tmp_dir" class="py-name" href="#" onclick="return doclink('link-22', 'write_pystring_to_tmp_dir', 'link-22');">write_pystring_to_tmp_dir</a></tt><tt class="py-op"> [...]
+<a name="L34"></a><tt class="py-lineno"> 34</tt>  <tt class="py-line">    <tt class="py-name">val_doc</tt> <tt class="py-op">=</tt> <tt id="link-23" class="py-name"><a title="epydoc.docbuilder.build_doc" class="py-name" href="#" onclick="return doclink('link-23', 'build_doc', 'link-3');">build_doc</a></tt><tt class="py-op">(</tt><tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-24" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="ret [...]
+<a name="L35"></a><tt class="py-lineno"> 35</tt>  <tt class="py-line">    <tt id="link-25" class="py-name" targets="Function epydoc.test.util.cleanup_tmp_dir()=epydoc.test.util-module.html#cleanup_tmp_dir"><a title="epydoc.test.util.cleanup_tmp_dir" class="py-name" href="#" onclick="return doclink('link-25', 'cleanup_tmp_dir', 'link-25');">cleanup_tmp_dir</a></tt><tt class="py-op">(</tt><tt class="py-name">tmp_dir</tt><tt class="py-op">)</tt> </tt>
+<a name="L36"></a><tt class="py-lineno"> 36</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">val_doc</tt> </tt>
+</div><a name="L37"></a><tt class="py-lineno"> 37</tt>  <tt class="py-line"> </tt>
+<a name="runbuilder"></a><div id="runbuilder-def"><a name="L38"></a><tt class="py-lineno"> 38</tt> <a class="py-toggle" href="#" id="runbuilder-toggle" onclick="return toggle('runbuilder');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.test.util-module.html#runbuilder">runbuilder</a><tt class="py-op">(</tt><tt class="py-param">s</tt><tt class="py-op">,</tt> <tt class="py-param">attribs</tt><tt class="py-op">=</tt><tt class="py-string">''</t [...]
+</div><div id="runbuilder-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="runbuilder-expanded"><a name="L39"></a><tt class="py-lineno"> 39</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L40"></a><tt class="py-lineno"> 40</tt>  <tt class="py-line"><tt class="py-docstring">    This test function takes a string containing the contents of a</tt> </tt>
+<a name="L41"></a><tt class="py-lineno"> 41</tt>  <tt class="py-line"><tt class="py-docstring">    module.  It writes the string contents to a file, imports the file</tt> </tt>
+<a name="L42"></a><tt class="py-lineno"> 42</tt>  <tt class="py-line"><tt class="py-docstring">    as a module, and uses build_doc to build documentation, and pretty</tt> </tt>
+<a name="L43"></a><tt class="py-lineno"> 43</tt>  <tt class="py-line"><tt class="py-docstring">    prints the resulting ModuleDoc object.  The C{attribs} argument</tt> </tt>
+<a name="L44"></a><tt class="py-lineno"> 44</tt>  <tt class="py-line"><tt class="py-docstring">    specifies which attributes of the C{APIDoc}s should be displayed.</tt> </tt>
+<a name="L45"></a><tt class="py-lineno"> 45</tt>  <tt class="py-line"><tt class="py-docstring">    The C{build} argument gives the name of a variable in the module</tt> </tt>
+<a name="L46"></a><tt class="py-lineno"> 46</tt>  <tt class="py-line"><tt class="py-docstring">    whose documentation should be built, instead of bilding docs for</tt> </tt>
+<a name="L47"></a><tt class="py-lineno"> 47</tt>  <tt class="py-line"><tt class="py-docstring">    the whole module.</tt> </tt>
+<a name="L48"></a><tt class="py-lineno"> 48</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L49"></a><tt class="py-lineno"> 49</tt>  <tt class="py-line">    <tt class="py-comment"># Write it to a temp file.</tt> </tt>
+<a name="L50"></a><tt class="py-lineno"> 50</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">tmp_dir</tt> <tt class="py-op">=</tt> <tt id="link-26" class="py-name"><a title="epydoc.test.util.write_pystring_to_tmp_dir" class="py-name" href="#" onclick="return doclink('link-26', 'write_pystring_to_tmp_dir', 'link-22');">write_pystring_to_tmp_dir</a></tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> </tt>
+<a name="L51"></a><tt class="py-lineno"> 51</tt>  <tt class="py-line">    <tt class="py-comment"># Build it.</tt> </tt>
+<a name="L52"></a><tt class="py-lineno"> 52</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">val_doc</tt> <tt class="py-op">=</tt> <tt id="link-27" class="py-name"><a title="epydoc.docbuilder.build_doc" class="py-name" href="#" onclick="return doclink('link-27', 'build_doc', 'link-3');">build_doc</a></tt><tt class="py-op">(</tt><tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-28" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py [...]
+<a name="L53"></a><tt class="py-lineno"> 53</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">build</tt><tt class="py-op">:</tt> <tt class="py-name">val_doc</tt> <tt class="py-op">=</tt> <tt class="py-name">val_doc</tt><tt class="py-op">.</tt><tt id="link-29" class="py-name" targets="Variable epydoc.apidoc.NamespaceDoc.variables=epydoc.apidoc.NamespaceDoc-class.html#variables"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick= [...]
+<a name="L54"></a><tt class="py-lineno"> 54</tt>  <tt class="py-line">    <tt class="py-comment"># Display it.</tt> </tt>
+<a name="L55"></a><tt class="py-lineno"> 55</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">val_doc</tt><tt class="py-op">,</tt> <tt id="link-31" class="py-name"><a title="epydoc.apidoc.ClassDoc" class="py-name" href="#" onclick="return doclink('link-31', 'ClassDoc', 'link-13');">ClassDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L56"></a><tt class="py-lineno"> 56</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">val</tt> <tt class="py-keyword">in</tt> <tt class="py-name">val_doc</tt><tt class="py-op">.</tt><tt id="link-32" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-32', 'variables', 'link-29');">variables</a></tt><tt class="py-op">.</tt><tt class="py-name">values</tt><tt class="py-op">(</tt><t [...]
+<a name="L57"></a><tt class="py-lineno"> 57</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">.</tt><tt id="link-33" class="py-name"><a title="epydoc.apidoc.VariableDoc.value" class="py-name" href="#" onclick="return doclink('link-33', 'value', 'link-30');">value</a></tt><tt class="py-op">,</tt> <tt id="link-34" class="py-name"><a title="epydoc.apidoc.RoutineDoc" cl [...]
+<a name="L58"></a><tt class="py-lineno"> 58</tt>  <tt class="py-line">                <tt id="link-35" class="py-name" targets="Function epydoc.test.util.fun_to_plain()=epydoc.test.util-module.html#fun_to_plain"><a title="epydoc.test.util.fun_to_plain" class="py-name" href="#" onclick="return doclink('link-35', 'fun_to_plain', 'link-35');">fun_to_plain</a></tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">.</tt><tt id="link-36" class="py-name"><a title="epydoc.api [...]
+<a name="L59"></a><tt class="py-lineno"> 59</tt>  <tt class="py-line">    <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">val_doc</tt><tt class="py-op">.</tt><tt id="link-37" class="py-name" targets="Method epydoc.apidoc.APIDoc.pp()=epydoc.apidoc.APIDoc-class.html#pp"><a title="epydoc.apidoc.APIDoc.pp" class="py-name" href="#" onclick="return doclink('link-37', 'pp', 'link-37');">pp</a></tt><tt class="py-op">(</tt><tt class="py-name">include</tt><tt class="py-op"> [...]
+<a name="L60"></a><tt class="py-lineno"> 60</tt>  <tt class="py-line">    <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt class="py-string">r"(filename = ).*"</tt><tt class="py-op">,</tt> <tt class="py-string">r"\1..."</tt><tt class="py-op">,</tt> <tt class="py-name">s</tt><tt class="py-op">)</tt> </tt>
+<a name="L61"></a><tt class="py-lineno"> 61</tt>  <tt class="py-line">    <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt class="py-string">r"(<module 'epydoc_test' from ).*"</tt><tt class="py-op">,</tt> <tt class="py-string">r'\1...'</tt><tt class="py-op">,</tt> <tt class="py-name">s</tt><tt class="py-op">)</tt> </tt>
+<a name="L62"></a><tt class="py-lineno"> 62</tt>  <tt class="py-line">    <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt class="py-string">r"(<function \w+ at )0x\w+>"</tt><tt class="py-op">,</tt> <tt class="py-string">r"\1...>"</tt><tt class="py-op">,</tt> <tt class="py-name">s</tt><tt class="py-op">)</tt> </tt>
+<a name="L63"></a><tt class="py-lineno"> 63</tt>  <tt class="py-line">    <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt class="py-string">r"(<\w+ object at )0x\w+>"</tt><tt class="py-op">,</tt> <tt class="py-string">r"\1...>"</tt><tt class="py-op">,</tt> <tt class="py-name">s</tt><tt class="py-op">)</tt> </tt>
+<a name="L64"></a><tt class="py-lineno"> 64</tt>  <tt class="py-line">    <tt class="py-keyword">print</tt> <tt class="py-name">s</tt> </tt>
+<a name="L65"></a><tt class="py-lineno"> 65</tt>  <tt class="py-line">    <tt class="py-comment"># Clean up.</tt> </tt>
+<a name="L66"></a><tt class="py-lineno"> 66</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-38" class="py-name"><a title="epydoc.test.util.cleanup_tmp_dir" class="py-name" href="#" onclick="return doclink('link-38', 'cleanup_tmp_dir', 'link-25');">cleanup_tmp_dir</a></tt><tt class="py-op">(</tt><tt class="py-name">tmp_dir</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L67"></a><tt class="py-lineno"> 67</tt>  <tt class="py-line"> </tt>
+<a name="runparser"></a><div id="runparser-def"><a name="L68"></a><tt class="py-lineno"> 68</tt> <a class="py-toggle" href="#" id="runparser-toggle" onclick="return toggle('runparser');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.test.util-module.html#runparser">runparser</a><tt class="py-op">(</tt><tt class="py-param">s</tt><tt class="py-op">,</tt> <tt class="py-param">attribs</tt><tt class="py-op">=</tt><tt class="py-string">''</tt><tt  [...]
+</div><div id="runparser-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="runparser-expanded"><a name="L69"></a><tt class="py-lineno"> 69</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L70"></a><tt class="py-lineno"> 70</tt>  <tt class="py-line"><tt class="py-docstring">    This test function takes a string containing the contents of a</tt> </tt>
+<a name="L71"></a><tt class="py-lineno"> 71</tt>  <tt class="py-line"><tt class="py-docstring">    module, and writes it to a file, uses `parse_docs` to parse it,</tt> </tt>
+<a name="L72"></a><tt class="py-lineno"> 72</tt>  <tt class="py-line"><tt class="py-docstring">    and pretty prints the resulting ModuleDoc object.  The `attribs`</tt> </tt>
+<a name="L73"></a><tt class="py-lineno"> 73</tt>  <tt class="py-line"><tt class="py-docstring">    argument specifies which attributes of the `APIDoc`s should be</tt> </tt>
+<a name="L74"></a><tt class="py-lineno"> 74</tt>  <tt class="py-line"><tt class="py-docstring">    displayed.  The `show` argument, if specifies, gives the name of</tt> </tt>
+<a name="L75"></a><tt class="py-lineno"> 75</tt>  <tt class="py-line"><tt class="py-docstring">    the object in the module that should be displayed (but the whole</tt> </tt>
+<a name="L76"></a><tt class="py-lineno"> 76</tt>  <tt class="py-line"><tt class="py-docstring">    module will always be inspected; this just selects what to</tt> </tt>
+<a name="L77"></a><tt class="py-lineno"> 77</tt>  <tt class="py-line"><tt class="py-docstring">    display).</tt> </tt>
+<a name="L78"></a><tt class="py-lineno"> 78</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L79"></a><tt class="py-lineno"> 79</tt>  <tt class="py-line">    <tt class="py-comment"># Write it to a temp file.</tt> </tt>
+<a name="L80"></a><tt class="py-lineno"> 80</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">tmp_dir</tt> <tt class="py-op">=</tt> <tt id="link-39" class="py-name"><a title="epydoc.test.util.write_pystring_to_tmp_dir" class="py-name" href="#" onclick="return doclink('link-39', 'write_pystring_to_tmp_dir', 'link-22');">write_pystring_to_tmp_dir</a></tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> </tt>
+<a name="L81"></a><tt class="py-lineno"> 81</tt>  <tt class="py-line">    <tt class="py-comment"># Parse it.</tt> </tt>
+<a name="L82"></a><tt class="py-lineno"> 82</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">val_doc</tt> <tt class="py-op">=</tt> <tt id="link-40" class="py-name"><a title="epydoc.docparser.parse_docs" class="py-name" href="#" onclick="return doclink('link-40', 'parse_docs', 'link-7');">parse_docs</a></tt><tt class="py-op">(</tt><tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-41" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class=" [...]
+<a name="L83"></a><tt class="py-lineno"> 83</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">show</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L84"></a><tt class="py-lineno"> 84</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt id="link-42" class="py-name" targets="Variable epydoc.apidoc.VariableDoc.name=epydoc.apidoc.VariableDoc-class.html#name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-42', 'name', 'link-42');">name</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">show</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt cl [...]
+<a name="L85"></a><tt class="py-lineno"> 85</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">val_doc</tt><tt class="py-op">,</tt> <tt id="link-43" class="py-name"><a title="epydoc.apidoc.ClassDoc" class="py-name" href="#" onclick="return doclink('link-43', 'ClassDoc', 'link-13');">ClassDoc</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L86"></a><tt class="py-lineno"> 86</tt>  <tt class="py-line">                <tt class="py-name">val_doc</tt> <tt class="py-op">=</tt> <tt class="py-name">val_doc</tt><tt class="py-op">.</tt><tt class="py-name">local_variables</tt><tt class="py-op">[</tt><tt id="link-44" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-44', 'name', 'link-42');">name</a></tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="lin [...]
+<a name="L87"></a><tt class="py-lineno"> 87</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L88"></a><tt class="py-lineno"> 88</tt>  <tt class="py-line">                <tt class="py-name">val_doc</tt> <tt class="py-op">=</tt> <tt class="py-name">val_doc</tt><tt class="py-op">.</tt><tt id="link-46" class="py-name"><a title="epydoc.apidoc.NamespaceDoc.variables" class="py-name" href="#" onclick="return doclink('link-46', 'variables', 'link-29');">variables</a></tt><tt class="py-op">[</tt><tt id="link-47" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="p [...]
+<a name="L89"></a><tt class="py-lineno"> 89</tt>  <tt class="py-line">    <tt class="py-comment"># Display it.</tt> </tt>
+<a name="L90"></a><tt class="py-lineno"> 90</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">val_doc</tt><tt class="py-op">.</tt><tt id="link-49" class="py-name"><a title="epydoc.apidoc.APIDoc.pp" class="py-name" href="#" onclick="return doclink('link-49', 'pp', 'link-37');">pp</a></tt><tt class="py-op">(</tt><tt class="py-name">include</tt><tt class="py-op">=</tt><tt class="py-name">attribs</tt><tt class="p [...]
+<a name="L91"></a><tt class="py-lineno"> 91</tt>  <tt class="py-line">    <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt class="py-string">r"filename = .*"</tt><tt class="py-op">,</tt> <tt class="py-string">"filename = ..."</tt><tt class="py-op">,</tt> <tt class="py-name">s</tt><tt class="py-op">)</tt> </tt>
+<a name="L92"></a><tt class="py-lineno"> 92</tt>  <tt class="py-line">    <tt class="py-keyword">print</tt> <tt class="py-name">s</tt> </tt>
+<a name="L93"></a><tt class="py-lineno"> 93</tt>  <tt class="py-line">    <tt class="py-comment"># Clean up.</tt> </tt>
+<a name="L94"></a><tt class="py-lineno"> 94</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-50" class="py-name"><a title="epydoc.test.util.cleanup_tmp_dir" class="py-name" href="#" onclick="return doclink('link-50', 'cleanup_tmp_dir', 'link-25');">cleanup_tmp_dir</a></tt><tt class="py-op">(</tt><tt class="py-name">tmp_dir</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L95"></a><tt class="py-lineno"> 95</tt>  <tt class="py-line"> </tt>
+<a name="runintrospecter"></a><div id="runintrospecter-def"><a name="L96"></a><tt class="py-lineno"> 96</tt> <a class="py-toggle" href="#" id="runintrospecter-toggle" onclick="return toggle('runintrospecter');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.test.util-module.html#runintrospecter">runintrospecter</a><tt class="py-op">(</tt><tt class="py-param">s</tt><tt class="py-op">,</tt> <tt class="py-param">attribs</tt><tt class="py-op">=</ [...]
+</div><div id="runintrospecter-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="runintrospecter-expanded"><a name="L97"></a><tt class="py-lineno"> 97</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L98"></a><tt class="py-lineno"> 98</tt>  <tt class="py-line"><tt class="py-docstring">    This test function takes a string containing the contents of a</tt> </tt>
+<a name="L99"></a><tt class="py-lineno"> 99</tt>  <tt class="py-line"><tt class="py-docstring">    module.  It writes the string contents to a file, imports the file</tt> </tt>
+<a name="L100"></a><tt class="py-lineno">100</tt>  <tt class="py-line"><tt class="py-docstring">    as a module, and uses C{introspect_docs} to introspect it, and</tt> </tt>
+<a name="L101"></a><tt class="py-lineno">101</tt>  <tt class="py-line"><tt class="py-docstring">    pretty prints the resulting ModuleDoc object.  The C{attribs}</tt> </tt>
+<a name="L102"></a><tt class="py-lineno">102</tt>  <tt class="py-line"><tt class="py-docstring">    argument specifies which attributes of the C{APIDoc}s should be</tt> </tt>
+<a name="L103"></a><tt class="py-lineno">103</tt>  <tt class="py-line"><tt class="py-docstring">    displayed.  The C{introspect} argument gives the name of a variable</tt> </tt>
+<a name="L104"></a><tt class="py-lineno">104</tt>  <tt class="py-line"><tt class="py-docstring">    in the module whose value should be introspected, instead of</tt> </tt>
+<a name="L105"></a><tt class="py-lineno">105</tt>  <tt class="py-line"><tt class="py-docstring">    introspecting the whole module.</tt> </tt>
+<a name="L106"></a><tt class="py-lineno">106</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L107"></a><tt class="py-lineno">107</tt>  <tt class="py-line">    <tt class="py-comment"># Write it to a temp file.</tt> </tt>
+<a name="L108"></a><tt class="py-lineno">108</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">tmp_dir</tt> <tt class="py-op">=</tt> <tt id="link-51" class="py-name"><a title="epydoc.test.util.write_pystring_to_tmp_dir" class="py-name" href="#" onclick="return doclink('link-51', 'write_pystring_to_tmp_dir', 'link-22');">write_pystring_to_tmp_dir</a></tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> </tt>
+<a name="L109"></a><tt class="py-lineno">109</tt>  <tt class="py-line">    <tt class="py-comment"># Import it.</tt> </tt>
+<a name="L110"></a><tt class="py-lineno">110</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt id="link-52" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-52', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt class="py-name">insert</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">tmp_dir</tt><tt cla [...]
+<a name="L111"></a><tt class="py-lineno">111</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">introspect</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L112"></a><tt class="py-lineno">112</tt>  <tt class="py-line">        <tt class="py-keyword">import</tt> <tt class="py-name">epydoc_test</tt> <tt class="py-name">as</tt> <tt class="py-name">val</tt> </tt>
+<a name="L113"></a><tt class="py-lineno">113</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L114"></a><tt class="py-lineno">114</tt>  <tt class="py-line">        <tt class="py-keyword">exec</tt><tt class="py-op">(</tt><tt class="py-string">"from epydoc_test import %s as val"</tt> <tt class="py-op">%</tt> <tt class="py-name">introspect</tt><tt class="py-op">)</tt> </tt>
+<a name="L115"></a><tt class="py-lineno">115</tt>  <tt class="py-line">    <tt class="py-keyword">del</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt id="link-53" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-53', 'path', 'link-0');">path</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L116"></a><tt class="py-lineno">116</tt>  <tt class="py-line">    <tt class="py-comment"># Introspect it.</tt> </tt>
+<a name="L117"></a><tt class="py-lineno">117</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">val_doc</tt> <tt class="py-op">=</tt> <tt id="link-54" class="py-name"><a title="epydoc.docintrospecter.introspect_docs" class="py-name" href="#" onclick="return doclink('link-54', 'introspect_docs', 'link-10');">introspect_docs</a></tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">)</tt> </tt>
+<a name="L118"></a><tt class="py-lineno">118</tt>  <tt class="py-line">    <tt class="py-comment"># Display it.</tt> </tt>
+<a name="L119"></a><tt class="py-lineno">119</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">val_doc</tt><tt class="py-op">.</tt><tt id="link-55" class="py-name"><a title="epydoc.apidoc.APIDoc.pp" class="py-name" href="#" onclick="return doclink('link-55', 'pp', 'link-37');">pp</a></tt><tt class="py-op">(</tt><tt class="py-name">include</tt><tt class="py-op">=</tt><tt class="py-name">attribs</tt><tt class=" [...]
+<a name="L120"></a><tt class="py-lineno">120</tt>  <tt class="py-line">    <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt class="py-string">r"(filename = ).*"</tt><tt class="py-op">,</tt> <tt class="py-string">r"\1..."</tt><tt class="py-op">,</tt> <tt class="py-name">s</tt><tt class="py-op">)</tt> </tt>
+<a name="L121"></a><tt class="py-lineno">121</tt>  <tt class="py-line">    <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt class="py-string">r"(<module 'epydoc_test' from ).*"</tt><tt class="py-op">,</tt> <tt class="py-string">r'\1...'</tt><tt class="py-op">,</tt> <tt class="py-name">s</tt><tt class="py-op">)</tt> </tt>
+<a name="L122"></a><tt class="py-lineno">122</tt>  <tt class="py-line">    <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt class="py-string">r"(<function \w+ at )0x\w+>"</tt><tt class="py-op">,</tt> <tt class="py-string">r"\1...>"</tt><tt class="py-op">,</tt> <tt class="py-name">s</tt><tt class="py-op">)</tt> </tt>
+<a name="L123"></a><tt class="py-lineno">123</tt>  <tt class="py-line">    <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt class="py-string">r"(<\w+ object at )0x\w+>"</tt><tt class="py-op">,</tt> <tt class="py-string">r"\1...>"</tt><tt class="py-op">,</tt> <tt class="py-name">s</tt><tt class="py-op">)</tt> </tt>
+<a name="L124"></a><tt class="py-lineno">124</tt>  <tt class="py-line">    <tt class="py-keyword">print</tt> <tt class="py-name">s</tt> </tt>
+<a name="L125"></a><tt class="py-lineno">125</tt>  <tt class="py-line">    <tt class="py-comment"># Clean up.</tt> </tt>
+<a name="L126"></a><tt class="py-lineno">126</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-56" class="py-name"><a title="epydoc.test.util.cleanup_tmp_dir" class="py-name" href="#" onclick="return doclink('link-56', 'cleanup_tmp_dir', 'link-25');">cleanup_tmp_dir</a></tt><tt class="py-op">(</tt><tt class="py-name">tmp_dir</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L127"></a><tt class="py-lineno">127</tt>  <tt class="py-line"> </tt>
+<a name="print_warnings"></a><div id="print_warnings-def"><a name="L128"></a><tt class="py-lineno">128</tt> <a class="py-toggle" href="#" id="print_warnings-toggle" onclick="return toggle('print_warnings');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.test.util-module.html#print_warnings">print_warnings</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="print_warnings-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="print_warnings-expanded"><a name="L129"></a><tt class="py-lineno">129</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L130"></a><tt class="py-lineno">130</tt>  <tt class="py-line"><tt class="py-docstring">    Register a logger that will print warnings & errors.</tt> </tt>
+<a name="L131"></a><tt class="py-lineno">131</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L132"></a><tt class="py-lineno">132</tt>  <tt class="py-line">    <tt class="py-keyword">from</tt> <tt id="link-57" class="py-name"><a title="epydoc" class="py-name" href="#" onclick="return doclink('link-57', 'epydoc', 'link-1');">epydoc</a></tt> <tt class="py-keyword">import</tt> <tt id="link-58" class="py-name" targets="Method epydoc.cli.ConsoleLogger.log()=epydoc.cli.ConsoleLogger-class.html#log,Method epydoc.cli.HTMLLogger.log()=epydoc.cli.HTMLLogger-class.html#log,Method e [...]
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-58', 'log', 'link-58');">log</a></tt> </tt>
+<a name="L133"></a><tt class="py-lineno">133</tt>  <tt class="py-line">    <tt class="py-keyword">del</tt> <tt id="link-59" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-59', 'log', 'link-58');">log</a></tt><tt class="py-op">.</tt><tt id="link-60" class="py-name" targets="Variable epydoc.log._loggers=epydoc.log-module.html#_loggers"><a title="epydoc.log._loggers" class="py-name" href="#" onclick="return doclink('link-60', '_loggers', 'link-60');">_loggers</a></tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt>
+<a name="L134"></a><tt class="py-lineno">134</tt>  <tt class="py-line">    <tt id="link-61" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-61', 'log', 'link-58');">log</a></tt><tt class="py-op">.</tt><tt id="link-62" class="py-name" targets="Function epydoc.log.register_logger()=epydoc.log-module.html#register_logger"><a title="epydoc.log.register_logger" class="py-name" href="#" onclick="return doclink('link-62', 'register_logger', 'link-62');">register_logger</a></tt><tt class="py-op">(</tt><tt id="link-63" class="py-name"><a title="epydoc [...]
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-63', 'log', 'link-58');">log</a></tt><tt class="py-op">.</tt><tt id="link-64" class="py-name" targets="Class epydoc.log.SimpleLogger=epydoc.log.SimpleLogger-class.html"><a title="epydoc.log.SimpleLogger" class="py-name" href="#" onclick="return doclink('link-64', 'SimpleLogger', 'link-64');">SimpleLogger</a></tt><tt class="py-op">(</tt><tt id="link-65" class="py-name"><a title="epydoc.cli.ConsoleLogger.log
+epydoc.cli.HTMLLogger.log
+epydoc.gui.GUILogger.log
+epydoc.log
+epydoc.log.Logger.log
+epydoc.log.SimpleLogger.log" class="py-name" href="#" onclick="return doclink('link-65', 'log', 'link-58');">log</a></tt><tt class="py-op">.</tt><tt id="link-66" class="py-name" targets="Variable epydoc.log.DOCSTRING_WARNING=epydoc.log-module.html#DOCSTRING_WARNING"><a title="epydoc.log.DOCSTRING_WARNING" class="py-name" href="#" onclick="return doclink('link-66', 'DOCSTRING_WARNING', 'link-66');">DOCSTRING_WARNING</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L135"></a><tt class="py-lineno">135</tt>  <tt class="py-line"> </tt>
+<a name="testencoding"></a><div id="testencoding-def"><a name="L136"></a><tt class="py-lineno">136</tt> <a class="py-toggle" href="#" id="testencoding-toggle" onclick="return toggle('testencoding');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.test.util-module.html#testencoding">testencoding</a><tt class="py-op">(</tt><tt class="py-param">s</tt><tt class="py-op">,</tt> <tt class="py-param">introspect</tt><tt class="py-op">=</tt><tt class=" [...]
+</div><div id="testencoding-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="testencoding-expanded"><a name="L137"></a><tt class="py-lineno">137</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L138"></a><tt class="py-lineno">138</tt>  <tt class="py-line"><tt class="py-docstring">    An end-to-end test for unicode encodings.  This function takes a</tt> </tt>
+<a name="L139"></a><tt class="py-lineno">139</tt>  <tt class="py-line"><tt class="py-docstring">    given string, writes it to a python file, and processes that</tt> </tt>
+<a name="L140"></a><tt class="py-lineno">140</tt>  <tt class="py-line"><tt class="py-docstring">    file's documentation.  It then generates HTML output from the</tt> </tt>
+<a name="L141"></a><tt class="py-lineno">141</tt>  <tt class="py-line"><tt class="py-docstring">    documentation, extracts all docstrings from the generated HTML</tt> </tt>
+<a name="L142"></a><tt class="py-lineno">142</tt>  <tt class="py-line"><tt class="py-docstring">    output, and displays them.  (In order to extract & display all</tt> </tt>
+<a name="L143"></a><tt class="py-lineno">143</tt>  <tt class="py-line"><tt class="py-docstring">    docstrings, it monkey-patches the HMTLwriter.docstring_to_html()</tt> </tt>
+<a name="L144"></a><tt class="py-lineno">144</tt>  <tt class="py-line"><tt class="py-docstring">    method.)"""</tt> </tt>
+<a name="L145"></a><tt class="py-lineno">145</tt>  <tt class="py-line">    <tt class="py-comment"># Monkey-patch docstring_to_html</tt> </tt>
+<a name="L146"></a><tt class="py-lineno">146</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">original_docstring_to_html</tt> <tt class="py-op">=</tt> <tt id="link-67" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter" class="py-name" href="#" onclick="return doclink('link-67', 'HTMLWriter', 'link-21');">HTMLWriter</a></tt><tt class="py-op">.</tt><tt id="link-68" class="py-name" targets="Method epydoc.docwriter.html.HTMLWriter.docstring_to_html()=epy [...]
+<a name="L147"></a><tt class="py-lineno">147</tt>  <tt class="py-line">    <tt id="link-69" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter" class="py-name" href="#" onclick="return doclink('link-69', 'HTMLWriter', 'link-21');">HTMLWriter</a></tt><tt class="py-op">.</tt><tt id="link-70" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.docstring_to_html" class="py-name" href="#" onclick="return doclink('link-70', 'docstring_to_html', 'link-68');">docstring_to_html</a> [...]
+<a name="L148"></a><tt class="py-lineno">148</tt>  <tt class="py-line">     </tt>
+<a name="L149"></a><tt class="py-lineno">149</tt>  <tt class="py-line">    <tt class="py-comment"># Write s to a temporary file.</tt> </tt>
+<a name="L150"></a><tt class="py-lineno">150</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">tmp_dir</tt> <tt class="py-op">=</tt> <tt class="py-name">tempfile</tt><tt class="py-op">.</tt><tt class="py-name">mkdtemp</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L151"></a><tt class="py-lineno">151</tt>  <tt class="py-line">    <tt id="link-72" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-72', 'path', 'link-0');">path</a></tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-73" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-73', 'path', 'link-0');">path</a></tt><tt clas [...]
+<a name="L152"></a><tt class="py-lineno">152</tt>  <tt class="py-line">    <tt class="py-name">out</tt> <tt class="py-op">=</tt> <tt id="link-74" class="py-name" targets="Method epydoc.gui.EpydocGUI.open()=epydoc.gui.EpydocGUI-class.html#open"><a title="epydoc.gui.EpydocGUI.open" class="py-name" href="#" onclick="return doclink('link-74', 'open', 'link-74');">open</a></tt><tt class="py-op">(</tt><tt id="link-75" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href [...]
+<a name="L153"></a><tt class="py-lineno">153</tt>  <tt class="py-line">    <tt class="py-name">out</tt><tt class="py-op">.</tt><tt id="link-76" class="py-name" targets="Method epydoc.docintrospecter._DevNull.write()=epydoc.docintrospecter._DevNull-class.html#write,Method epydoc.docwriter.dotgraph.DotGraph.write()=epydoc.docwriter.dotgraph.DotGraph-class.html#write,Method epydoc.docwriter.html.HTMLWriter.write()=epydoc.docwriter.html.HTMLWriter-class.html#write,Method epydoc.docwriter.lat [...]
+epydoc.docwriter.dotgraph.DotGraph.write
+epydoc.docwriter.html.HTMLWriter.write
+epydoc.docwriter.latex.LatexWriter.write
+epydoc.docwriter.plaintext.PlaintextWriter.write" class="py-name" href="#" onclick="return doclink('link-76', 'write', 'link-76');">write</a></tt><tt class="py-op">(</tt><tt class="py-name">textwrap</tt><tt class="py-op">.</tt><tt class="py-name">dedent</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L154"></a><tt class="py-lineno">154</tt>  <tt class="py-line">    <tt class="py-name">out</tt><tt class="py-op">.</tt><tt id="link-77" class="py-name" targets="Method epydoc.cli.HTMLLogger.close()=epydoc.cli.HTMLLogger-class.html#close,Method epydoc.docintrospecter._DevNull.close()=epydoc.docintrospecter._DevNull-class.html#close,Method epydoc.log.Logger.close()=epydoc.log.Logger-class.html#close,Function epydoc.log.close()=epydoc.log-module.html#close"><a title="epydoc.cli.HTML [...]
+epydoc.docintrospecter._DevNull.close
+epydoc.log.Logger.close
+epydoc.log.close" class="py-name" href="#" onclick="return doclink('link-77', 'close', 'link-77');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L155"></a><tt class="py-lineno">155</tt>  <tt class="py-line">    <tt class="py-comment"># Build docs for it</tt> </tt>
+<a name="L156"></a><tt class="py-lineno">156</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">docindex</tt> <tt class="py-op">=</tt> <tt id="link-78" class="py-name"><a title="epydoc.docbuilder.build_doc_index" class="py-name" href="#" onclick="return doclink('link-78', 'build_doc_index', 'link-4');">build_doc_index</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt id="link-79" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name"  [...]
+epydoc.markup.parse" class="py-name" href="#" onclick="return doclink('link-80', 'parse', 'link-80');">parse</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L157"></a><tt class="py-lineno">157</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">docindex</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> </tt>
+<a name="L158"></a><tt class="py-lineno">158</tt>  <tt class="py-line">    <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">modules</tt><tt class="py-op">.</tt><tt class="py-name">pop</tt><tt class="py-op">(</tt><tt class="py-string">'enc_test'</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+<a name="L159"></a><tt class="py-lineno">159</tt>  <tt class="py-line">    <tt class="py-comment"># Write html output.</tt> </tt>
+<a name="L160"></a><tt class="py-lineno">160</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">writer</tt> <tt class="py-op">=</tt> <tt id="link-81" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter" class="py-name" href="#" onclick="return doclink('link-81', 'HTMLWriter', 'link-21');">HTMLWriter</a></tt><tt class="py-op">(</tt><tt class="py-name">docindex</tt><tt class="py-op">,</tt> <tt class="py-name">mark_docstrings</tt><tt class="py-op">=</tt><tt [...]
+<a name="L161"></a><tt class="py-lineno">161</tt>  <tt class="py-line">    <tt class="py-name">writer</tt><tt class="py-op">.</tt><tt id="link-82" class="py-name"><a title="epydoc.docintrospecter._DevNull.write
+epydoc.docwriter.dotgraph.DotGraph.write
+epydoc.docwriter.html.HTMLWriter.write
+epydoc.docwriter.latex.LatexWriter.write
+epydoc.docwriter.plaintext.PlaintextWriter.write" class="py-name" href="#" onclick="return doclink('link-82', 'write', 'link-76');">write</a></tt><tt class="py-op">(</tt><tt class="py-name">tmp_dir</tt><tt class="py-op">)</tt> </tt>
+<a name="L162"></a><tt class="py-lineno">162</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">file</tt> <tt class="py-keyword">in</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">listdir</tt><tt class="py-op">(</tt><tt class="py-name">tmp_dir</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L163"></a><tt class="py-lineno">163</tt>  <tt class="py-line">        <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">unlink</tt><tt class="py-op">(</tt><tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-83" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-83', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py [...]
+<a name="L164"></a><tt class="py-lineno">164</tt>  <tt class="py-line">    <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">rmdir</tt><tt class="py-op">(</tt><tt class="py-name">tmp_dir</tt><tt class="py-op">)</tt> </tt>
+<a name="L165"></a><tt class="py-lineno">165</tt>  <tt class="py-line"> </tt>
+<a name="L166"></a><tt class="py-lineno">166</tt>  <tt class="py-line">    <tt class="py-comment"># Restore the HTMLWriter class to its original state.</tt> </tt>
+<a name="L167"></a><tt class="py-lineno">167</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-84" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter" class="py-name" href="#" onclick="return doclink('link-84', 'HTMLWriter', 'link-21');">HTMLWriter</a></tt><tt class="py-op">.</tt><tt id="link-85" class="py-name"><a title="epydoc.docwriter.html.HTMLWriter.docstring_to_html" class="py-name" href="#" onclick="return doclink('link-85', 'docstring_to_html', 'link- [...]
+</div><a name="L168"></a><tt class="py-lineno">168</tt>  <tt class="py-line"> </tt>
+<a name="L169"></a><tt class="py-lineno">169</tt>  <tt class="py-line"><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L170"></a><tt class="py-lineno">170</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#{ Helper Functions</tt> </tt>
+<a name="L171"></a><tt class="py-lineno">171</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L172"></a><tt class="py-lineno">172</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="write_pystring_to_tmp_dir"></a><div id="write_pystring_to_tmp_dir-def"><a name="L173"></a><tt class="py-lineno">173</tt> <a class="py-toggle" href="#" id="write_pystring_to_tmp_dir-toggle" onclick="return toggle('write_pystring_to_tmp_dir');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.test.util-module.html#write_pystring_to_tmp_dir">write_pystring_to_tmp_dir</a><tt class="py-op">(</tt><tt class="py-param">s</tt><tt class="py-op"> [...]
+</div><div id="write_pystring_to_tmp_dir-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="write_pystring_to_tmp_dir-expanded"><a name="L174"></a><tt class="py-lineno">174</tt>  <tt class="py-line">    <tt class="py-name">tmp_dir</tt> <tt class="py-op">=</tt> <tt class="py-name">tempfile</tt><tt class="py-op">.</tt><tt class="py-name">mkdtemp</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L175"></a><tt class="py-lineno">175</tt>  <tt class="py-line">    <tt class="py-name">out</tt> <tt class="py-op">=</tt> <tt id="link-86" class="py-name"><a title="epydoc.gui.EpydocGUI.open" class="py-name" href="#" onclick="return doclink('link-86', 'open', 'link-74');">open</a></tt><tt class="py-op">(</tt><tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-87" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('l [...]
+<a name="L176"></a><tt class="py-lineno">176</tt>  <tt class="py-line">    <tt class="py-name">out</tt><tt class="py-op">.</tt><tt id="link-88" class="py-name"><a title="epydoc.docintrospecter._DevNull.write
+epydoc.docwriter.dotgraph.DotGraph.write
+epydoc.docwriter.html.HTMLWriter.write
+epydoc.docwriter.latex.LatexWriter.write
+epydoc.docwriter.plaintext.PlaintextWriter.write" class="py-name" href="#" onclick="return doclink('link-88', 'write', 'link-76');">write</a></tt><tt class="py-op">(</tt><tt class="py-name">textwrap</tt><tt class="py-op">.</tt><tt class="py-name">dedent</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L177"></a><tt class="py-lineno">177</tt>  <tt class="py-line">    <tt class="py-name">out</tt><tt class="py-op">.</tt><tt id="link-89" class="py-name"><a title="epydoc.cli.HTMLLogger.close
+epydoc.docintrospecter._DevNull.close
+epydoc.log.Logger.close
+epydoc.log.close" class="py-name" href="#" onclick="return doclink('link-89', 'close', 'link-77');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L178"></a><tt class="py-lineno">178</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">tmp_dir</tt> </tt>
+</div><a name="L179"></a><tt class="py-lineno">179</tt>  <tt class="py-line"> </tt>
+<a name="cleanup_tmp_dir"></a><div id="cleanup_tmp_dir-def"><a name="L180"></a><tt class="py-lineno">180</tt> <a class="py-toggle" href="#" id="cleanup_tmp_dir-toggle" onclick="return toggle('cleanup_tmp_dir');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.test.util-module.html#cleanup_tmp_dir">cleanup_tmp_dir</a><tt class="py-op">(</tt><tt class="py-param">tmp_dir</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="cleanup_tmp_dir-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="cleanup_tmp_dir-expanded"><a name="L181"></a><tt class="py-lineno">181</tt>  <tt class="py-line">    <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">unlink</tt><tt class="py-op">(</tt><tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-90" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-90' [...]
+<a name="L182"></a><tt class="py-lineno">182</tt>  <tt class="py-line">    <tt class="py-keyword">try</tt><tt class="py-op">:</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">unlink</tt><tt class="py-op">(</tt><tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-91" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-91', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt class="py- [...]
+<a name="L183"></a><tt class="py-lineno">183</tt>  <tt class="py-line">    <tt class="py-keyword">except</tt> <tt class="py-name">OSError</tt><tt class="py-op">:</tt> <tt class="py-keyword">pass</tt> </tt>
+<a name="L184"></a><tt class="py-lineno">184</tt>  <tt class="py-line">    <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">rmdir</tt><tt class="py-op">(</tt><tt class="py-name">tmp_dir</tt><tt class="py-op">)</tt> </tt>
+<a name="L185"></a><tt class="py-lineno">185</tt>  <tt class="py-line">    <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">modules</tt><tt class="py-op">.</tt><tt class="py-name">pop</tt><tt class="py-op">(</tt><tt class="py-string">'epydoc_test'</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L186"></a><tt class="py-lineno">186</tt>  <tt class="py-line"> </tt>
+<a name="to_plain"></a><div id="to_plain-def"><a name="L187"></a><tt class="py-lineno">187</tt> <a class="py-toggle" href="#" id="to_plain-toggle" onclick="return toggle('to_plain');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.test.util-module.html#to_plain">to_plain</a><tt class="py-op">(</tt><tt class="py-param">docstring</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="to_plain-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="to_plain-expanded"><a name="L188"></a><tt class="py-lineno">188</tt>  <tt class="py-line">    <tt class="py-docstring">"""Conver a parsed docstring into plain text"""</tt> </tt>
+<a name="L189"></a><tt class="py-lineno">189</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-92" class="py-name" targets="Variable epydoc.apidoc.APIDoc.docstring=epydoc.apidoc.APIDoc-class.html#docstring"><a title="epydoc.apidoc.APIDoc.docstring" class="py-name" href="#" onclick="return doclink('link-92', 'docstring', 'link-92');">docstring</a></tt><tt class="py-op">,</tt> <tt id="link-93" class="py-name [...]
+<a name="L190"></a><tt class="py-lineno">190</tt>  <tt class="py-line">        <tt id="link-94" class="py-name"><a title="epydoc.apidoc.APIDoc.docstring" class="py-name" href="#" onclick="return doclink('link-94', 'docstring', 'link-92');">docstring</a></tt> <tt class="py-op">=</tt> <tt id="link-95" class="py-name"><a title="epydoc.apidoc.APIDoc.docstring" class="py-name" href="#" onclick="return doclink('link-95', 'docstring', 'link-92');">docstring</a></tt><tt class="py-op">.</tt><tt i [...]
+epydoc.markup.ParsedDocstring.to_plaintext
+epydoc.markup.epytext.ParsedEpytextDocstring.to_plaintext
+epydoc.markup.epytext.to_plaintext
+epydoc.markup.javadoc.ParsedJavadocDocstring.to_plaintext
+epydoc.markup.plaintext.ParsedPlaintextDocstring.to_plaintext
+epydoc.markup.restructuredtext.ParsedRstDocstring.to_plaintext" class="py-name" href="#" onclick="return doclink('link-96', 'to_plaintext', 'link-96');">to_plaintext</a></tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+<a name="L191"></a><tt class="py-lineno">191</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-97" class="py-name"><a title="epydoc.apidoc.APIDoc.docstring" class="py-name" href="#" onclick="return doclink('link-97', 'docstring', 'link-92');">docstring</a></tt><tt class="py-op">.</tt><tt class="py-name">rstrip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L192"></a><tt class="py-lineno">192</tt>  <tt class="py-line"> </tt>
+<a name="fun_to_plain"></a><div id="fun_to_plain-def"><a name="L193"></a><tt class="py-lineno">193</tt> <a class="py-toggle" href="#" id="fun_to_plain-toggle" onclick="return toggle('fun_to_plain');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.test.util-module.html#fun_to_plain">fun_to_plain</a><tt class="py-op">(</tt><tt class="py-param">val_doc</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="fun_to_plain-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="fun_to_plain-expanded"><a name="L194"></a><tt class="py-lineno">194</tt>  <tt class="py-line">    <tt class="py-docstring">"""Convert parsed docstrings in text from a RoutineDoc"""</tt> </tt>
+<a name="L195"></a><tt class="py-lineno">195</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">k</tt><tt class="py-op">,</tt> <tt id="link-98" class="py-name" targets="Variable epydoc.markup.restructuredtext._EpydocReader.v=epydoc.markup.restructuredtext._EpydocReader-class.html#v"><a title="epydoc.markup.restructuredtext._EpydocReader.v" class="py-name" href="#" onclick="return doclink('link-98', 'v', 'link-98');">v</a></tt> <tt class="py-keyword">in</tt> [...]
+<a name="L196"></a><tt class="py-lineno">196</tt>  <tt class="py-line">        <tt class="py-name">val_doc</tt><tt class="py-op">.</tt><tt id="link-100" class="py-name"><a title="epydoc.apidoc.RoutineDoc.arg_types" class="py-name" href="#" onclick="return doclink('link-100', 'arg_types', 'link-99');">arg_types</a></tt><tt class="py-op">[</tt><tt class="py-name">k</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-101" class="py-name" targets="Function epydoc.test.util.to_ [...]
+<a name="L197"></a><tt class="py-lineno">197</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">i</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">k</tt><tt class="py-op">,</tt> <tt id="link-103" class="py-name"><a title="epydoc.markup.restructuredtext._EpydocReader.v" class="py-name" href="#" onclick="return doclink('link-103', 'v', 'link-98');">v</a></tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-name">en [...]
+<a name="L198"></a><tt class="py-lineno">198</tt>  <tt class="py-line">        <tt class="py-name">val_doc</tt><tt class="py-op">.</tt><tt id="link-105" class="py-name"><a title="epydoc.apidoc.RoutineDoc.arg_descrs" class="py-name" href="#" onclick="return doclink('link-105', 'arg_descrs', 'link-104');">arg_descrs</a></tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">k</tt><tt class="py-op"> [...]
+</div><a name="L199"></a><tt class="py-lineno">199</tt>  <tt class="py-line"> </tt>
+<a name="print_docstring_as_html"></a><div id="print_docstring_as_html-def"><a name="L200"></a><tt class="py-lineno">200</tt> <a class="py-toggle" href="#" id="print_docstring_as_html-toggle" onclick="return toggle('print_docstring_as_html');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.test.util-module.html#print_docstring_as_html">print_docstring_as_html</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <t [...]
+</div><div id="print_docstring_as_html-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="print_docstring_as_html-expanded"><a name="L201"></a><tt class="py-lineno">201</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L202"></a><tt class="py-lineno">202</tt>  <tt class="py-line"><tt class="py-docstring">    Convert the given parsed_docstring to HTML and print it.  Ignore</tt> </tt>
+<a name="L203"></a><tt class="py-lineno">203</tt>  <tt class="py-line"><tt class="py-docstring">    any other arguments.  This function is used by L{testencoding} to</tt> </tt>
+<a name="L204"></a><tt class="py-lineno">204</tt>  <tt class="py-line"><tt class="py-docstring">    monkey-patch the HTMLWriter class's docstring_to_html() method.</tt> </tt>
+<a name="L205"></a><tt class="py-lineno">205</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L206"></a><tt class="py-lineno">206</tt>  <tt class="py-line">    <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">parsed_docstring</tt><tt class="py-op">.</tt><tt id="link-108" class="py-name" targets="Method epydoc.docwriter.dotgraph.DotGraph.to_html()=epydoc.docwriter.dotgraph.DotGraph-class.html#to_html,Method epydoc.markup.ConcatenatedDocstring.to_html()=epydoc.markup.ConcatenatedDocstring-class.html#to_html,Method epydoc.markup.ParsedDocstring.to_htm [...]
+epydoc.markup.ConcatenatedDocstring.to_html
+epydoc.markup.ParsedDocstring.to_html
+epydoc.markup.epytext.ParsedEpytextDocstring.to_html
+epydoc.markup.javadoc.ParsedJavadocDocstring.to_html
+epydoc.markup.plaintext.ParsedPlaintextDocstring.to_html
+epydoc.markup.restructuredtext.ParsedRstDocstring.to_html" class="py-name" href="#" onclick="return doclink('link-108', 'to_html', 'link-108');">to_html</a></tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">strip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L207"></a><tt class="py-lineno">207</tt>  <tt class="py-line">    <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">s</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">'ascii'</tt><tt class="py-op">,</tt> <tt class="py-string">'xmlcharrefreplace'</tt><tt class="py-op">)</tt> </tt>
+<a name="L208"></a><tt class="py-lineno">208</tt>  <tt class="py-line">    <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt id="link-109" class="py-name" targets="Function epydoc.test.util.remove_surrogates()=epydoc.test.util-module.html#remove_surrogates"><a title="epydoc.test.util.remove_surrogates" class="py-name" href="#" onclick="return doclink('link-109', 'remove_surrogates', 'link-109');">remove_surrogates</a></tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class= [...]
+<a name="L209"></a><tt class="py-lineno">209</tt>  <tt class="py-line">    <tt class="py-keyword">print</tt> <tt class="py-name">s</tt> </tt>
+<a name="L210"></a><tt class="py-lineno">210</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-string">''</tt> </tt>
+</div><a name="L211"></a><tt class="py-lineno">211</tt>  <tt class="py-line"> </tt>
+<a name="remove_surrogates"></a><div id="remove_surrogates-def"><a name="L212"></a><tt class="py-lineno">212</tt> <a class="py-toggle" href="#" id="remove_surrogates-toggle" onclick="return toggle('remove_surrogates');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.test.util-module.html#remove_surrogates">remove_surrogates</a><tt class="py-op">(</tt><tt class="py-param">s</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="remove_surrogates-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="remove_surrogates-expanded"><a name="L213"></a><tt class="py-lineno">213</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L214"></a><tt class="py-lineno">214</tt>  <tt class="py-line"><tt class="py-docstring">    The following is a helper function, used to convert two-character</tt> </tt>
+<a name="L215"></a><tt class="py-lineno">215</tt>  <tt class="py-line"><tt class="py-docstring">    surrogate sequences into single characters.  This is needed</tt> </tt>
+<a name="L216"></a><tt class="py-lineno">216</tt>  <tt class="py-line"><tt class="py-docstring">    because some systems create surrogates but others don't.</tt> </tt>
+<a name="L217"></a><tt class="py-lineno">217</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L218"></a><tt class="py-lineno">218</tt>  <tt class="py-line">    <tt class="py-name">pieces</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'(&#\d+;)'</tt><tt class="py-op">,</tt> <tt class="py-name">s</tt><tt class="py-op">)</tt> </tt>
+<a name="L219"></a><tt class="py-lineno">219</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-number">3</tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">pieces</tt><tt class="py-op">)</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-number">2</tt><tt clas [...]
+<a name="L220"></a><tt class="py-lineno">220</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">pieces</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">!=</tt> <tt class="py-string">''</tt><tt class="py-op">:</tt> <tt class="py-keyword">continue</tt> </tt>
+<a name="L221"></a><tt class="py-lineno">221</tt>  <tt class="py-line">        <tt class="py-name">high</tt><tt class="py-op">,</tt><tt class="py-name">low</tt> <tt class="py-op">=</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">pieces</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">-</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">:</tt><tt class="py-op">-</ [...]
+<a name="L222"></a><tt class="py-lineno">222</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-number">0xd800</tt> <tt class="py-op"><=</tt> <tt class="py-name">high</tt> <tt class="py-op"><=</tt> <tt class="py-number">0xdbff</tt> <tt class="py-keyword">and</tt> <tt class="py-number">0xdc00</tt> <tt class="py-op"><=</tt> <tt class="py-name">low</tt> <tt class="py-op"><=</tt> <tt class="py-number">0xdfff</tt><tt class="py-op">:</tt> </tt>
+<a name="L223"></a><tt class="py-lineno">223</tt>  <tt class="py-line">            <tt class="py-name">pieces</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">-</tt><tt class="py-number">2</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">'&#%d;'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">high</tt><tt class="py-op">&</tt><tt class="py-number">0x3ff</tt>< [...]
+<a name="L224"></a><tt class="py-lineno">224</tt>  <tt class="py-line">                                     <tt class="py-op">(</tt><tt class="py-name">low</tt><tt class="py-op">&</tt><tt class="py-number">0x3ff</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-number">0x10000</tt><tt class="py-op">)</tt> </tt>
+<a name="L225"></a><tt class="py-lineno">225</tt>  <tt class="py-line">            <tt class="py-name">pieces</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
+<a name="L226"></a><tt class="py-lineno">226</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-string">''</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">pieces</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L227"></a><tt class="py-lineno">227</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:09:05 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.util-module.html b/doc/api/epydoc.util-module.html
new file mode 100644
index 0000000..7a9c042
--- /dev/null
+++ b/doc/api/epydoc.util-module.html
@@ -0,0 +1,740 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.util</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        Module util
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.util-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module util</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.util-pysrc.html">source code</a></span></p>
+<p>Miscellaneous utility functions that are used by multiple modules.</p>
+
+<!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Classes</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Classes"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="epydoc.util.RunSubprocessError-class.html" class="summary-name">RunSubprocessError</a>
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTIONS ==================== -->
+<a name="section-Functions"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Functions</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Functions"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="is_src_filename"></a><span class="summary-sig-name">is_src_filename</span>(<span class="summary-sig-arg">filename</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.util-pysrc.html#is_src_filename">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_is_src_filename-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_is_src_filename-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_is_src_filename" name="call_graph_for_is_src_filename">
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#__init__" title="docwriter.html.HTMLWriter.__init__()" alt="" coords="6,6,323,38" />
+<area shape="rect" href="epydoc.util-module.html#is_src_filename" title="is_src_filename()" alt="" coords="372,6,524,38" />
+</map>
+  <img src="call_graph_for_is_src_filename.gif" alt='' usemap="#call_graph_for_is_src_filename" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="munge_script_name"></a><span class="summary-sig-name">munge_script_name</span>(<span class="summary-sig-arg">filename</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.util-pysrc.html#munge_script_name">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>string</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.util-module.html#plaintext_to_latex" class="summary-sig-name">plaintext_to_latex</a>(<span class="summary-sig-arg">str</span>,
+        <span class="summary-sig-arg">nbsp</span>=<span class="summary-sig-default">0</span>,
+        <span class="summary-sig-arg">breakany</span>=<span class="summary-sig-default">0</span>)</span><br />
+      Returns:
+      A LaTeX string that encodes the given plaintext string.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.util-pysrc.html#plaintext_to_latex">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.util-module.html#run_subprocess" class="summary-sig-name">run_subprocess</a>(<span class="summary-sig-arg">cmd</span>,
+        <span class="summary-sig-arg">data</span>=<span class="summary-sig-default">None</span>)</span><br />
+      Execute the command <code>cmd</code> in a subprocess.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.util-pysrc.html#run_subprocess">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_run_subprocess-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_run_subprocess-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_run_subprocess" name="call_graph_for_run_subprocess">
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraph-class.html#_run_dot" title="docwriter.dotgraph.DotGraph._run_dot()" alt="" coords="7,6,332,38" />
+<area shape="rect" href="epydoc.util-module.html#run_subprocess" title="run_subprocess()" alt="" coords="382,34,534,66" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#get_dot_version" title="docwriter.dotgraph.get_dot_version()" alt="" coords="20,62,319,94" />
+</map>
+  <img src="call_graph_for_run_subprocess.gif" alt='' usemap="#call_graph_for_run_subprocess" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Python source types</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="is_module_file"></a><span class="summary-sig-name">is_module_file</span>(<span class="summary-sig-arg">path</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.util-pysrc.html#is_module_file">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_is_module_file-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_is_module_file-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_is_module_file" name="call_graph_for_is_module_file">
+<area shape="rect" href="epydoc.docbuilder._ProgressEstimator-class.html#_est_pkg_modules" title="docbuilder._ProgressEstimator._est_pkg_modules()" alt="" coords="5,6,413,38" />
+<area shape="rect" href="epydoc.util-module.html#is_module_file" title="is_module_file()" alt="" coords="461,90,608,122" />
+<area shape="rect" href="epydoc.docbuilder-module.html#_get_docs_from_items" title="docbuilder._get_docs_from_items()" alt="" coords="65,62,353,94" />
+<area shape="rect" href="epydoc.docbuilder-module.html#_get_docs_from_submodules" title="docbuilder._get_docs_from_submodules()" alt="" coords="41,118,377,150" />
+<area shape="rect" href="epydoc.util-module.html#is_package_dir" title="is_package_dir()" alt="" coords="136,174,283,206" />
+</map>
+  <img src="call_graph_for_is_module_file.gif" alt='' usemap="#call_graph_for_is_module_file" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="is_package_dir"></a><span class="summary-sig-name">is_package_dir</span>(<span class="summary-sig-arg">dirname</span>)</span><br />
+      Return true if the given directory is a valid package directory 
+      (i.e., it names a directory that contains a valid __init__ file, and 
+      its name is a valid identifier).</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.util-pysrc.html#is_package_dir">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_is_package_dir-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_is_package_dir-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_is_package_dir" name="call_graph_for_is_package_dir">
+<area shape="rect" href="epydoc.docbuilder._ProgressEstimator-class.html#__init__" title="docbuilder._ProgressEstimator.__init__()" alt="" coords="44,6,375,38" />
+<area shape="rect" href="epydoc.util-module.html#is_package_dir" title="is_package_dir()" alt="" coords="463,146,610,178" />
+<area shape="rect" href="epydoc.docbuilder._ProgressEstimator-class.html#_est_pkg_modules" title="docbuilder._ProgressEstimator._est_pkg_modules()" alt="" coords="6,62,414,94" />
+<area shape="rect" href="epydoc.docbuilder-module.html#_get_docs_from_items" title="docbuilder._get_docs_from_items()" alt="" coords="66,118,354,150" />
+<area shape="rect" href="epydoc.docbuilder-module.html#_get_docs_from_submodules" title="docbuilder._get_docs_from_submodules()" alt="" coords="42,174,378,206" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#get_value_from_filename" title="docintrospecter.get_value_from_filename()" alt="" coords="38,230,382,262" />
+<area shape="rect" href="epydoc.docparser-module.html#_parse_package" title="docparser._parse_package()" alt="" coords="95,286,324,318" />
+<area shape="rect" href="epydoc.util-module.html#is_module_file" title="is_module_file()" alt="" coords="659,146,806,178" />
+</map>
+  <img src="call_graph_for_is_package_dir.gif" alt='' usemap="#call_graph_for_is_package_dir" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="is_pyname"></a><span class="summary-sig-name">is_pyname</span>(<span class="summary-sig-arg">name</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.util-pysrc.html#is_pyname">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="py_src_filename"></a><span class="summary-sig-name">py_src_filename</span>(<span class="summary-sig-arg">filename</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.util-pysrc.html#py_src_filename">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_py_src_filename-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_py_src_filename-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_py_src_filename" name="call_graph_for_py_src_filename">
+<area shape="rect" href="epydoc.docbuilder-module.html#_get_docs_from_module_file" title="docbuilder._get_docs_from_module_file()" alt="" coords="65,6,404,38" />
+<area shape="rect" href="epydoc.util-module.html#py_src_filename" title="py_src_filename()" alt="" coords="512,90,672,122" />
+<area shape="rect" href="epydoc.docintrospecter-module.html#introspect_module" title="docintrospecter.introspect_module()" alt="" coords="89,62,380,94" />
+<area shape="rect" href="epydoc.docparser-module.html#parse_docs" title="docparser.parse_docs()" alt="" coords="137,118,332,150" />
+<area shape="rect" href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#__init__" title="docwriter.html_colorize.PythonSourceColorizer.__init__()" alt="" coords="5,174,464,206" />
+</map>
+  <img src="call_graph_for_py_src_filename.gif" alt='' usemap="#call_graph_for_py_src_filename" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Text processing</th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.util-module.html#decode_with_backslashreplace" class="summary-sig-name">decode_with_backslashreplace</a>(<span class="summary-sig-arg">s</span>)</span><br />
+      Convert the given 8-bit string into unicode, treating any character c
+      such that ord(c)<128 as an ascii character, and converting any c 
+      such that ord(c)>128 into a backslashed escape sequence.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.util-pysrc.html#decode_with_backslashreplace">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_decode_with_bac-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_decode_with_bac-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_decode_with_bac" name="call_graph_for_decode_with_bac">
+<area shape="rect" href="epydoc.docparser-module.html#process_file" title="docparser.process_file()" alt="" coords="101,6,301,38" />
+<area shape="rect" href="epydoc.util-module.html#decode_with_backslashreplace" title="decode_with_backslashreplace()" alt="" coords="447,90,711,122" />
+<area shape="rect" href="epydoc.docstringparser-module.html#add_metadata_from_var" title="docstringparser.add_metadata_from_var()" alt="" coords="35,62,368,94" />
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_colorize_re" title="markup.pyval_repr.PyvalColorizer._colorize_re()" alt="" coords="7,118,396,150" />
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_output" title="markup.pyval_repr.PyvalColorizer._output()" alt="" coords="24,174,379,206" />
+</map>
+  <img src="call_graph_for_decode_with_bac.gif" alt='' usemap="#call_graph_for_decode_with_bac" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>str</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.util-module.html#wordwrap" class="summary-sig-name">wordwrap</a>(<span class="summary-sig-arg">str</span>,
+        <span class="summary-sig-arg">indent</span>=<span class="summary-sig-default">0</span>,
+        <span class="summary-sig-arg">right</span>=<span class="summary-sig-default">75</span>,
+        <span class="summary-sig-arg">startindex</span>=<span class="summary-sig-default">0</span>,
+        <span class="summary-sig-arg">splitchars</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>)</span><br />
+      Word-wrap the given string.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.util-pysrc.html#wordwrap">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_wordwrap-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_wordwrap-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_wordwrap" name="call_graph_for_wordwrap">
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#_to_html" title="markup.epytext.ParsedEpytextDocstring._to_html()" alt="" coords="5,6,413,38" />
+<area shape="rect" href="epydoc.util-module.html#wordwrap" title="wordwrap()" alt="" coords="461,34,571,66" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#to_plaintext" title="markup.epytext.to_plaintext()" alt="" coords="88,62,331,94" />
+</map>
+  <img src="call_graph_for_wordwrap.gif" alt='' usemap="#call_graph_for_wordwrap" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>string</code></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.util-module.html#plaintext_to_html" class="summary-sig-name">plaintext_to_html</a>(<span class="summary-sig-arg">s</span>)</span><br />
+      Returns:
+      An HTML string that encodes the given plaintext string.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.util-pysrc.html#plaintext_to_html">source code</a></span>
+            <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_plaintext_to_ht-summary-div');return false;">call graph</a></span> 
+          </td>
+        </tr>
+      </table>
+      <div style="display:none" id="call_graph_for_plaintext_to_ht-summary-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_plaintext_to_ht" name="call_graph_for_plaintext_to_ht">
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraph-class.html#to_html" title="docwriter.dotgraph.DotGraph.to_html()" alt="" coords="92,6,409,38" />
+<area shape="rect" href="epydoc.util-module.html#plaintext_to_html" title="plaintext_to_html()" alt="" coords="544,314,712,346" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_operation_cell" title="docwriter.dotgraph.DotGraphUmlClassNode._operation_cell()" alt="" coords="7,62,495,94" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_summary" title="docwriter.dotgraph.DotGraphUmlClassNode._summary()" alt="" coords="25,118,476,150" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_type_descr" title="docwriter.dotgraph.DotGraphUmlClassNode._type_descr()" alt="" coords="19,174,483,206" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#build_identifier_index" title="docwriter.html.HTMLWriter.build_identifier_index()" alt="" coords="40,230,461,262" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#href" title="docwriter.html.HTMLWriter.href()" alt="" coords="108,286,393,318" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#variable_tooltip" title="docwriter.html.HTMLWriter.variable_tooltip()" alt="" coords="65,342,436,374" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_summary_table" title="docwriter.html.HTMLWriter.write_summary_table()" alt="" coords="43,398,459,430" />
+<area shape="rect" href="epydoc.markup.ParsedDocstring-class.html#to_html" title="markup.ParsedDocstring.to_html()" alt="" coords="111,454,391,486" />
+<area shape="rect" href="epydoc.markup.doctest.HTMLDoctestColorizer-class.html#markup" title="markup.doctest.HTMLDoctestColorizer.markup()" alt="" coords="53,510,448,542" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#_to_html" title="markup.epytext.ParsedEpytextDocstring._to_html()" alt="" coords="47,566,455,598" />
+<area shape="rect" href="epydoc.markup.plaintext.ParsedPlaintextDocstring-class.html#to_html" title="markup.plaintext.ParsedPlaintextDocstring.to_html()" alt="" coords="43,622,459,654" />
+</map>
+  <img src="call_graph_for_plaintext_to_ht.gif" alt='' usemap="#call_graph_for_plaintext_to_ht" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+    </td>
+  </tr>
+</table>
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Variables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="PY_SRC_EXTENSIONS"></a><span class="summary-name">PY_SRC_EXTENSIONS</span> = <code title="['.py', '.pyw']"><code class="variable-group">[</code><code class="variable-quote">'</code><code class="variable-string">.py</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">.pyw</code><code class="variable-quote">'</code><code class="variable-group">]</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="PY_BIN_EXTENSIONS"></a><span class="summary-name">PY_BIN_EXTENSIONS</span> = <code title="['.pyc', '.so', '.pyd']"><code class="variable-group">[</code><code class="variable-quote">'</code><code class="variable-string">.pyc</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">.so</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-qu [...]
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTION DETAILS ==================== -->
+<a name="section-FunctionDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Function Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-FunctionDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="decode_with_backslashreplace"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">decode_with_backslashreplace</span>(<span class="sig-arg">s</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.util-pysrc.html#decode_with_backslashreplace">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_decode_with_bac-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_decode_with_bac-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_decode_with_bac" name="call_graph_for_decode_with_bac">
+<area shape="rect" href="epydoc.docparser-module.html#process_file" title="docparser.process_file()" alt="" coords="101,6,301,38" />
+<area shape="rect" href="epydoc.util-module.html#decode_with_backslashreplace" title="decode_with_backslashreplace()" alt="" coords="447,90,711,122" />
+<area shape="rect" href="epydoc.docstringparser-module.html#add_metadata_from_var" title="docstringparser.add_metadata_from_var()" alt="" coords="35,62,368,94" />
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_colorize_re" title="markup.pyval_repr.PyvalColorizer._colorize_re()" alt="" coords="7,118,396,150" />
+<area shape="rect" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_output" title="markup.pyval_repr.PyvalColorizer._output()" alt="" coords="24,174,379,206" />
+</map>
+  <img src="call_graph_for_decode_with_bac.gif" alt='' usemap="#call_graph_for_decode_with_bac" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Convert the given 8-bit string into unicode, treating any character c 
+  such that ord(c)<128 as an ascii character, and converting any c such 
+  that ord(c)>128 into a backslashed escape sequence.</p>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>decode_with_backslashreplace(<span class="py-string">'abc\xff\xe8'</span>)
+<span class="py-output">u'abc\\xff\\xe8'</span></pre>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="wordwrap"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">wordwrap</span>(<span class="sig-arg">str</span>,
+        <span class="sig-arg">indent</span>=<span class="sig-default">0</span>,
+        <span class="sig-arg">right</span>=<span class="sig-default">75</span>,
+        <span class="sig-arg">startindex</span>=<span class="sig-default">0</span>,
+        <span class="sig-arg">splitchars</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.util-pysrc.html#wordwrap">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_wordwrap-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_wordwrap-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_wordwrap" name="call_graph_for_wordwrap">
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#_to_html" title="markup.epytext.ParsedEpytextDocstring._to_html()" alt="" coords="5,6,413,38" />
+<area shape="rect" href="epydoc.util-module.html#wordwrap" title="wordwrap()" alt="" coords="461,34,571,66" />
+<area shape="rect" href="epydoc.markup.epytext-module.html#to_plaintext" title="markup.epytext.to_plaintext()" alt="" coords="88,62,331,94" />
+</map>
+  <img src="call_graph_for_wordwrap.gif" alt='' usemap="#call_graph_for_wordwrap" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Word-wrap the given string.  I.e., add newlines to the string such 
+  that any lines that are longer than <code>right</code> are broken into 
+  shorter lines (at the first whitespace sequence that occurs before index 
+  <code>right</code>).  If the given string contains newlines, they will 
+  <i>not</i> be removed.  Any lines that begin with whitespace will not be 
+  wordwrapped.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>indent</code></strong> (<code>int</code>) - If specified, then indent each line by this number of spaces.</li>
+        <li><strong class="pname"><code>right</code></strong> (<code>int</code>) - The right margin for word wrapping.  Lines that are longer than 
+          <code>right</code> will be broken at the first whitespace 
+          sequence before the right margin.</li>
+        <li><strong class="pname"><code>startindex</code></strong> (<code>int</code>) - If specified, then assume that the first line is already 
+          preceeded by <code>startindex</code> characters.</li>
+        <li><strong class="pname"><code>splitchars</code></strong> - A list of non-whitespace characters which can be used to split a 
+          line.  (E.g., use '/\' to allow path names to be split over 
+          multiple lines.)</li>
+    </ul></dd>
+    <dt>Returns: <code>str</code></dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="plaintext_to_html"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">plaintext_to_html</span>(<span class="sig-arg">s</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.util-pysrc.html#plaintext_to_html">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_plaintext_to_ht-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_plaintext_to_ht-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_plaintext_to_ht" name="call_graph_for_plaintext_to_ht">
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraph-class.html#to_html" title="docwriter.dotgraph.DotGraph.to_html()" alt="" coords="92,6,409,38" />
+<area shape="rect" href="epydoc.util-module.html#plaintext_to_html" title="plaintext_to_html()" alt="" coords="544,314,712,346" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_operation_cell" title="docwriter.dotgraph.DotGraphUmlClassNode._operation_cell()" alt="" coords="7,62,495,94" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_summary" title="docwriter.dotgraph.DotGraphUmlClassNode._summary()" alt="" coords="25,118,476,150" />
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_type_descr" title="docwriter.dotgraph.DotGraphUmlClassNode._type_descr()" alt="" coords="19,174,483,206" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#build_identifier_index" title="docwriter.html.HTMLWriter.build_identifier_index()" alt="" coords="40,230,461,262" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#href" title="docwriter.html.HTMLWriter.href()" alt="" coords="108,286,393,318" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#variable_tooltip" title="docwriter.html.HTMLWriter.variable_tooltip()" alt="" coords="65,342,436,374" />
+<area shape="rect" href="epydoc.docwriter.html.HTMLWriter-class.html#write_summary_table" title="docwriter.html.HTMLWriter.write_summary_table()" alt="" coords="43,398,459,430" />
+<area shape="rect" href="epydoc.markup.ParsedDocstring-class.html#to_html" title="markup.ParsedDocstring.to_html()" alt="" coords="111,454,391,486" />
+<area shape="rect" href="epydoc.markup.doctest.HTMLDoctestColorizer-class.html#markup" title="markup.doctest.HTMLDoctestColorizer.markup()" alt="" coords="53,510,448,542" />
+<area shape="rect" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#_to_html" title="markup.epytext.ParsedEpytextDocstring._to_html()" alt="" coords="47,566,455,598" />
+<area shape="rect" href="epydoc.markup.plaintext.ParsedPlaintextDocstring-class.html#to_html" title="markup.plaintext.ParsedPlaintextDocstring.to_html()" alt="" coords="43,622,459,654" />
+</map>
+  <img src="call_graph_for_plaintext_to_ht.gif" alt='' usemap="#call_graph_for_plaintext_to_ht" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  
+  <dl class="fields">
+    <dt>Returns: <code>string</code></dt>
+        <dd>An HTML string that encodes the given plaintext string. In 
+          particular, special characters (such as <code>'<'</code> and 
+          <code>'&'</code>) are escaped.</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="plaintext_to_latex"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">plaintext_to_latex</span>(<span class="sig-arg">str</span>,
+        <span class="sig-arg">nbsp</span>=<span class="sig-default">0</span>,
+        <span class="sig-arg">breakany</span>=<span class="sig-default">0</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.util-pysrc.html#plaintext_to_latex">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>breakany</code></strong> - Insert hyphenation marks, so that LaTeX can break the resulting 
+          string at any point.  This is useful for small boxes (e.g., the 
+          type box in the variable list table).</li>
+        <li><strong class="pname"><code>nbsp</code></strong> - Replace every space with a non-breaking space (<code>'~'</code>).</li>
+    </ul></dd>
+    <dt>Returns: <code>string</code></dt>
+        <dd>A LaTeX string that encodes the given plaintext string. In 
+          particular, special characters (such as <code>'$'</code> and 
+          <code>'_'</code>) are escaped, and tabs are expanded.</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="run_subprocess"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">run_subprocess</span>(<span class="sig-arg">cmd</span>,
+        <span class="sig-arg">data</span>=<span class="sig-default">None</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.util-pysrc.html#run_subprocess">source code</a></span> 
+    <br /><span class="codelink"><a href="javascript:void(0);" onclick="toggleCallGraph('call_graph_for_run_subprocess-div');return false;">call graph</a></span> </td>
+  </tr></table>
+  <div style="display:none" id="call_graph_for_run_subprocess-div"><center>
+<table border="0" cellpadding="0" cellspacing="0">
+  <tr><td><center>  <map id="call_graph_for_run_subprocess" name="call_graph_for_run_subprocess">
+<area shape="rect" href="epydoc.docwriter.dotgraph.DotGraph-class.html#_run_dot" title="docwriter.dotgraph.DotGraph._run_dot()" alt="" coords="7,6,332,38" />
+<area shape="rect" href="epydoc.util-module.html#run_subprocess" title="run_subprocess()" alt="" coords="382,34,534,66" />
+<area shape="rect" href="epydoc.docwriter.dotgraph-module.html#get_dot_version" title="docwriter.dotgraph.get_dot_version()" alt="" coords="20,62,319,94" />
+</map>
+  <img src="call_graph_for_run_subprocess.gif" alt='' usemap="#call_graph_for_run_subprocess" ismap="ismap" class="graph-without-title" />
+</center></td></tr>
+  <tr><th>Call Graph</th></tr>
+</table><br />
+</center></div>
+
+  <p>Execute the command <code>cmd</code> in a subprocess.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>cmd</code></strong> - The command to execute, specified as a list of string.</li>
+        <li><strong class="pname"><code>data</code></strong> - A string containing data to send to the subprocess.</li>
+    </ul></dd>
+    <dt>Returns:</dt>
+        <dd>A tuple <code>(out, err)</code>.</dd>
+    <dt>Raises:</dt>
+    <dd><ul class="nomargin-top">
+        <li><code><strong class='fraise'>OSError</strong></code> - If there is any problem executing the command, or if its exitval is
+        not 0.</li>
+    </ul></dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:06:51 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.util-pysrc.html b/doc/api/epydoc.util-pysrc.html
new file mode 100644
index 0000000..1b6215e
--- /dev/null
+++ b/doc/api/epydoc.util-pysrc.html
@@ -0,0 +1,487 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.util</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        Module util
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.util-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="epydoc.util-module.html">Module epydoc.util</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno">  1</tt>  <tt class="py-line"><tt class="py-comment"># epydoc -- Utility functions</tt> </tt>
+<a name="L2"></a><tt class="py-lineno">  2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L3"></a><tt class="py-lineno">  3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2005 Edward Loper</tt> </tt>
+<a name="L4"></a><tt class="py-lineno">  4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Author: Edward Loper <edloper at loper.org></tt> </tt>
+<a name="L5"></a><tt class="py-lineno">  5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># URL: <http://epydoc.sf.net></tt> </tt>
+<a name="L6"></a><tt class="py-lineno">  6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L7"></a><tt class="py-lineno">  7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># $Id: util.py 1671 2008-01-29 02:55:49Z edloper $</tt> </tt>
+<a name="L8"></a><tt class="py-lineno">  8</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L9"></a><tt class="py-lineno">  9</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L10"></a><tt class="py-lineno"> 10</tt>  <tt class="py-line"><tt class="py-docstring">Miscellaneous utility functions that are used by multiple modules.</tt> </tt>
+<a name="L11"></a><tt class="py-lineno"> 11</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L12"></a><tt class="py-lineno"> 12</tt>  <tt class="py-line"><tt class="py-docstring">@group Python source types: is_module_file, is_package_dir, is_pyname,</tt> </tt>
+<a name="L13"></a><tt class="py-lineno"> 13</tt>  <tt class="py-line"><tt class="py-docstring">    py_src_filename</tt> </tt>
+<a name="L14"></a><tt class="py-lineno"> 14</tt>  <tt class="py-line"><tt class="py-docstring">@group Text processing: wordwrap, decode_with_backslashreplace,</tt> </tt>
+<a name="L15"></a><tt class="py-lineno"> 15</tt>  <tt class="py-line"><tt class="py-docstring">    plaintext_to_html</tt> </tt>
+<a name="L16"></a><tt class="py-lineno"> 16</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L17"></a><tt class="py-lineno"> 17</tt>  <tt class="py-line"><tt class="py-name">__docformat__</tt> <tt class="py-op">=</tt> <tt class="py-string">'epytext en'</tt> </tt>
+<a name="L18"></a><tt class="py-lineno"> 18</tt>  <tt class="py-line"> </tt>
+<a name="L19"></a><tt class="py-lineno"> 19</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">os</tt><tt class="py-op">,</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-0" class="py-name" targets="Variable epydoc.apidoc.ModuleDoc.path=epydoc.apidoc.ModuleDoc-class.html#path"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-0', 'path', 'link-0');">path</a></tt><tt class="py-op">,</tt> <tt cla [...]
+<a name="L20"></a><tt class="py-lineno"> 20</tt>  <tt class="py-line"> </tt>
+<a name="L21"></a><tt class="py-lineno"> 21</tt>  <tt class="py-line"><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L22"></a><tt class="py-lineno"> 22</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## Python Source Types</tt> </tt>
+<a name="L23"></a><tt class="py-lineno"> 23</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L24"></a><tt class="py-lineno"> 24</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L25"></a><tt class="py-lineno"> 25</tt>  <tt class="py-line"><tt id="link-1" class="py-name" targets="Variable epydoc.util.PY_SRC_EXTENSIONS=epydoc.util-module.html#PY_SRC_EXTENSIONS"><a title="epydoc.util.PY_SRC_EXTENSIONS" class="py-name" href="#" onclick="return doclink('link-1', 'PY_SRC_EXTENSIONS', 'link-1');">PY_SRC_EXTENSIONS</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-string">'.py'</tt><tt class="py-op">,</tt> <tt class="py-string">'.pyw'</tt> [...]
+<a name="L26"></a><tt class="py-lineno"> 26</tt>  <tt class="py-line"><tt id="link-2" class="py-name" targets="Variable epydoc.util.PY_BIN_EXTENSIONS=epydoc.util-module.html#PY_BIN_EXTENSIONS"><a title="epydoc.util.PY_BIN_EXTENSIONS" class="py-name" href="#" onclick="return doclink('link-2', 'PY_BIN_EXTENSIONS', 'link-2');">PY_BIN_EXTENSIONS</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-string">'.pyc'</tt><tt class="py-op">,</tt> <tt class="py-string">'.so'</tt> [...]
+<a name="L27"></a><tt class="py-lineno"> 27</tt>  <tt class="py-line"> </tt>
+<a name="is_module_file"></a><div id="is_module_file-def"><a name="L28"></a><tt class="py-lineno"> 28</tt> <a class="py-toggle" href="#" id="is_module_file-toggle" onclick="return toggle('is_module_file');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.util-module.html#is_module_file">is_module_file</a><tt class="py-op">(</tt><tt class="py-param">path</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="is_module_file-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="is_module_file-expanded"><a name="L29"></a><tt class="py-lineno"> 29</tt>  <tt class="py-line">    <tt class="py-comment"># Make sure it's a file name.</tt> </tt>
+<a name="L30"></a><tt class="py-lineno"> 30</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-3" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-3', 'path', 'link-0');">path</a></tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt><tt class="py-op">)</tt><tt class="py-op">:< [...]
+<a name="L31"></a><tt class="py-lineno"> 31</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
+<a name="L32"></a><tt class="py-lineno"> 32</tt>  <tt class="py-line">    <tt class="py-op">(</tt><tt class="py-name">dir</tt><tt class="py-op">,</tt> <tt id="link-4" class="py-name" targets="Variable epydoc.apidoc.ModuleDoc.filename=epydoc.apidoc.ModuleDoc-class.html#filename"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-4', 'filename', 'link-4');">filename</a></tt><tt class="py-op">)</tt> <tt class="py-op">=</tt> <tt class="py-name" [...]
+<a name="L33"></a><tt class="py-lineno"> 33</tt>  <tt class="py-line">    <tt class="py-op">(</tt><tt class="py-name">basename</tt><tt class="py-op">,</tt> <tt class="py-name">extension</tt><tt class="py-op">)</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-7" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-7', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt class="py [...]
+<a name="L34"></a><tt class="py-lineno"> 34</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-9" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-9', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt class="py-name">isfile</tt><tt class="py-op">(</tt><tt id="link-10" class="py-name"><a title="epydoc.apidoc.ModuleDo [...]
+<a name="L35"></a><tt class="py-lineno"> 35</tt>  <tt class="py-line">            <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">match</tt><tt class="py-op">(</tt><tt class="py-string">'[a-zA-Z_]\w*$'</tt><tt class="py-op">,</tt> <tt class="py-name">basename</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L36"></a><tt class="py-lineno"> 36</tt>  <tt class="py-line">            <tt class="py-name">extension</tt> <tt class="py-keyword">in</tt> <tt id="link-11" class="py-name"><a title="epydoc.util.PY_SRC_EXTENSIONS" class="py-name" href="#" onclick="return doclink('link-11', 'PY_SRC_EXTENSIONS', 'link-1');">PY_SRC_EXTENSIONS</a></tt><tt class="py-op">+</tt><tt id="link-12" class="py-name"><a title="epydoc.util.PY_BIN_EXTENSIONS" class="py-name" href="#" onclick="return doclink('lin [...]
+</div><a name="L37"></a><tt class="py-lineno"> 37</tt>  <tt class="py-line"> </tt>
+<a name="is_src_filename"></a><div id="is_src_filename-def"><a name="L38"></a><tt class="py-lineno"> 38</tt> <a class="py-toggle" href="#" id="is_src_filename-toggle" onclick="return toggle('is_src_filename');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.util-module.html#is_src_filename">is_src_filename</a><tt class="py-op">(</tt><tt class="py-param">filename</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="is_src_filename-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="is_src_filename-expanded"><a name="L39"></a><tt class="py-lineno"> 39</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-13" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-13', 'filename', 'link-4');">filena [...]
+<a name="L40"></a><tt class="py-lineno"> 40</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-14" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-14', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt class="py-name">exists</tt><tt class="py-op">(</tt><tt id="link-15" class="py-name"><a title="epydoc.apidoc.Mo [...]
+<a name="L41"></a><tt class="py-lineno"> 41</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-16" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-16', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt class="py-name">splitext</tt><tt class="py-op">(</tt><tt id="link-17" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="p [...]
+</div><a name="L42"></a><tt class="py-lineno"> 42</tt>  <tt class="py-line">     </tt>
+<a name="is_package_dir"></a><div id="is_package_dir-def"><a name="L43"></a><tt class="py-lineno"> 43</tt> <a class="py-toggle" href="#" id="is_package_dir-toggle" onclick="return toggle('is_package_dir');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.util-module.html#is_package_dir">is_package_dir</a><tt class="py-op">(</tt><tt class="py-param">dirname</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="is_package_dir-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="is_package_dir-expanded"><a name="L44"></a><tt class="py-lineno"> 44</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L45"></a><tt class="py-lineno"> 45</tt>  <tt class="py-line"><tt class="py-docstring">    Return true if the given directory is a valid package directory</tt> </tt>
+<a name="L46"></a><tt class="py-lineno"> 46</tt>  <tt class="py-line"><tt class="py-docstring">    (i.e., it names a directory that contains a valid __init__ file,</tt> </tt>
+<a name="L47"></a><tt class="py-lineno"> 47</tt>  <tt class="py-line"><tt class="py-docstring">    and its name is a valid identifier).</tt> </tt>
+<a name="L48"></a><tt class="py-lineno"> 48</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L49"></a><tt class="py-lineno"> 49</tt>  <tt class="py-line">    <tt class="py-comment"># Make sure it's a directory name.</tt> </tt>
+<a name="L50"></a><tt class="py-lineno"> 50</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">dirname</tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L51"></a><tt class="py-lineno"> 51</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
+<a name="L52"></a><tt class="py-lineno"> 52</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-19" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-19', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt class="py-name">isdir</tt><tt class="py-op">(</tt><tt class="py-name">dirname</tt><tt class="py-op">)</tt><tt  [...]
+<a name="L53"></a><tt class="py-lineno"> 53</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
+<a name="L54"></a><tt class="py-lineno"> 54</tt>  <tt class="py-line">    <tt class="py-name">dirname</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-20" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-20', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt class="py-name">abspath</tt><tt class="py-op">(</tt><tt class="py-name">dirname</tt><tt class="py-op">)</tt> </tt>
+<a name="L55"></a><tt class="py-lineno"> 55</tt>  <tt class="py-line">    <tt class="py-comment"># Make sure it's a valid identifier.  (Special case for</tt> </tt>
+<a name="L56"></a><tt class="py-lineno"> 56</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># "foo/", where os.path.split -> ("foo", "").)</tt> </tt>
+<a name="L57"></a><tt class="py-lineno"> 57</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-op">(</tt><tt class="py-name">parent</tt><tt class="py-op">,</tt> <tt class="py-name">dir</tt><tt class="py-op">)</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-21" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-21', 'path', 'link-0');">path</a></tt><tt class="py-o [...]
+<a name="L58"></a><tt class="py-lineno"> 58</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">dir</tt> <tt class="py-op">==</tt> <tt class="py-string">''</tt><tt class="py-op">:</tt> <tt class="py-op">(</tt><tt class="py-name">parent</tt><tt class="py-op">,</tt> <tt class="py-name">dir</tt><tt class="py-op">)</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-22" class="py-name"><a title="epydoc.apidoc.ModuleDoc.pa [...]
+<a name="L59"></a><tt class="py-lineno"> 59</tt>  <tt class="py-line">     </tt>
+<a name="L60"></a><tt class="py-lineno"> 60</tt>  <tt class="py-line">    <tt class="py-comment"># The following constraint was removed because of sourceforge</tt> </tt>
+<a name="L61"></a><tt class="py-lineno"> 61</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># bug #1787028 -- in some cases (eg eggs), it's too strict.</tt> </tt>
+<a name="L62"></a><tt class="py-lineno"> 62</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#if not re.match('\w+$', dir):</tt> </tt>
+<a name="L63"></a><tt class="py-lineno"> 63</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#    return False</tt> </tt>
+<a name="L64"></a><tt class="py-lineno"> 64</tt>  <tt class="py-line"><tt class="py-comment"></tt>     </tt>
+<a name="L65"></a><tt class="py-lineno"> 65</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt id="link-23" class="py-name" targets="Variable epydoc.apidoc.VariableDoc.name=epydoc.apidoc.VariableDoc-class.html#name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-23', 'name', 'link-23');">name</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">listdir</tt><tt class= [...]
+<a name="L66"></a><tt class="py-lineno"> 66</tt>  <tt class="py-line">        <tt id="link-24" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-24', 'filename', 'link-4');">filename</a></tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-25" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-25', 'path', 'link-0');">path</ [...]
+<a name="L67"></a><tt class="py-lineno"> 67</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-27" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-27', 'name', 'link-23');">name</a></tt><tt class="py-op">.</tt><tt class="py-name">startswith</tt><tt class="py-op">(</tt><tt class="py-string">'__init__.'</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt id="link-28" class="py-name" tar [...]
+<a name="L68"></a><tt class="py-lineno"> 68</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
+<a name="L69"></a><tt class="py-lineno"> 69</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L70"></a><tt class="py-lineno"> 70</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
+</div><a name="L71"></a><tt class="py-lineno"> 71</tt>  <tt class="py-line"> </tt>
+<a name="is_pyname"></a><div id="is_pyname-def"><a name="L72"></a><tt class="py-lineno"> 72</tt> <a class="py-toggle" href="#" id="is_pyname-toggle" onclick="return toggle('is_pyname');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.util-module.html#is_pyname">is_pyname</a><tt class="py-op">(</tt><tt class="py-param">name</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="is_pyname-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="is_pyname-expanded"><a name="L73"></a><tt class="py-lineno"> 73</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">match</tt><tt class="py-op">(</tt><tt class="py-string">r"\w+(\.\w+)*$"</tt><tt class="py-op">,</tt> <tt id="link-30" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" hre [...]
+</div><a name="L74"></a><tt class="py-lineno"> 74</tt>  <tt class="py-line"> </tt>
+<a name="py_src_filename"></a><div id="py_src_filename-def"><a name="L75"></a><tt class="py-lineno"> 75</tt> <a class="py-toggle" href="#" id="py_src_filename-toggle" onclick="return toggle('py_src_filename');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.util-module.html#py_src_filename">py_src_filename</a><tt class="py-op">(</tt><tt class="py-param">filename</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="py_src_filename-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="py_src_filename-expanded"><a name="L76"></a><tt class="py-lineno"> 76</tt>  <tt class="py-line">    <tt class="py-name">basefile</tt><tt class="py-op">,</tt> <tt class="py-name">extension</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-31" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclin [...]
+<a name="L77"></a><tt class="py-lineno"> 77</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">extension</tt> <tt class="py-keyword">in</tt> <tt id="link-33" class="py-name"><a title="epydoc.util.PY_SRC_EXTENSIONS" class="py-name" href="#" onclick="return doclink('link-33', 'PY_SRC_EXTENSIONS', 'link-1');">PY_SRC_EXTENSIONS</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L78"></a><tt class="py-lineno"> 78</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-34" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-34', 'filename', 'link-4');">filename</a></tt> </tt>
+<a name="L79"></a><tt class="py-lineno"> 79</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L80"></a><tt class="py-lineno"> 80</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">ext</tt> <tt class="py-keyword">in</tt> <tt id="link-35" class="py-name"><a title="epydoc.util.PY_SRC_EXTENSIONS" class="py-name" href="#" onclick="return doclink('link-35', 'PY_SRC_EXTENSIONS', 'link-1');">PY_SRC_EXTENSIONS</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L81"></a><tt class="py-lineno"> 81</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-36" class="py-name"><a title="epydoc.apidoc.ModuleDoc.path" class="py-name" href="#" onclick="return doclink('link-36', 'path', 'link-0');">path</a></tt><tt class="py-op">.</tt><tt class="py-name">isfile</tt><tt class="py-op">(</tt><tt class="py-string">'%s%s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt> [...]
+<a name="L82"></a><tt class="py-lineno"> 82</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-string">'%s%s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">basefile</tt><tt class="py-op">,</tt> <tt class="py-name">ext</tt><tt class="py-op">)</tt> </tt>
+<a name="L83"></a><tt class="py-lineno"> 83</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L84"></a><tt class="py-lineno"> 84</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">'Could not find a corresponding '</tt> </tt>
+<a name="L85"></a><tt class="py-lineno"> 85</tt>  <tt class="py-line">                             <tt class="py-string">'Python source file for %r.'</tt> <tt class="py-op">%</tt> <tt id="link-37" class="py-name"><a title="epydoc.apidoc.ModuleDoc.filename" class="py-name" href="#" onclick="return doclink('link-37', 'filename', 'link-4');">filename</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L86"></a><tt class="py-lineno"> 86</tt>  <tt class="py-line"> </tt>
+<a name="munge_script_name"></a><div id="munge_script_name-def"><a name="L87"></a><tt class="py-lineno"> 87</tt> <a class="py-toggle" href="#" id="munge_script_name-toggle" onclick="return toggle('munge_script_name');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.util-module.html#munge_script_name">munge_script_name</a><tt class="py-op">(</tt><tt class="py-param">filename</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="munge_script_name-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="munge_script_name-expanded"><a name="L88"></a><tt class="py-lineno"> 88</tt>  <tt class="py-line">    <tt id="link-38" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-38', 'name', 'link-23');">name</a></tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-39" class="py-name"><a tit [...]
+<a name="L89"></a><tt class="py-lineno"> 89</tt>  <tt class="py-line">    <tt id="link-41" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-41', 'name', 'link-23');">name</a></tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt class="py-string">r'\W'</tt><tt class="py-op">,</tt> <tt class="py-string">'_'</tt><tt class="py-op">,</tt> <tt id=" [...]
+<a name="L90"></a><tt class="py-lineno"> 90</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-string">'script-'</tt><tt class="py-op">+</tt><tt id="link-43" class="py-name"><a title="epydoc.apidoc.VariableDoc.name" class="py-name" href="#" onclick="return doclink('link-43', 'name', 'link-23');">name</a></tt> </tt>
+</div><a name="L91"></a><tt class="py-lineno"> 91</tt>  <tt class="py-line"> </tt>
+<a name="L92"></a><tt class="py-lineno"> 92</tt>  <tt class="py-line"><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L93"></a><tt class="py-lineno"> 93</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## Text Processing</tt> </tt>
+<a name="L94"></a><tt class="py-lineno"> 94</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">######################################################################</tt> </tt>
+<a name="L95"></a><tt class="py-lineno"> 95</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="decode_with_backslashreplace"></a><div id="decode_with_backslashreplace-def"><a name="L96"></a><tt class="py-lineno"> 96</tt> <a class="py-toggle" href="#" id="decode_with_backslashreplace-toggle" onclick="return toggle('decode_with_backslashreplace');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.util-module.html#decode_with_backslashreplace">decode_with_backslashreplace</a><tt class="py-op">(</tt><tt class="py-param">s</tt><tt cl [...]
+</div><div id="decode_with_backslashreplace-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="decode_with_backslashreplace-expanded"><a name="L97"></a><tt class="py-lineno"> 97</tt>  <tt class="py-line">    <tt class="py-docstring">r"""</tt> </tt>
+<a name="L98"></a><tt class="py-lineno"> 98</tt>  <tt class="py-line"><tt class="py-docstring">    Convert the given 8-bit string into unicode, treating any</tt> </tt>
+<a name="L99"></a><tt class="py-lineno"> 99</tt>  <tt class="py-line"><tt class="py-docstring">    character c such that ord(c)<128 as an ascii character, and</tt> </tt>
+<a name="L100"></a><tt class="py-lineno">100</tt>  <tt class="py-line"><tt class="py-docstring">    converting any c such that ord(c)>128 into a backslashed escape</tt> </tt>
+<a name="L101"></a><tt class="py-lineno">101</tt>  <tt class="py-line"><tt class="py-docstring">    sequence.</tt> </tt>
+<a name="L102"></a><tt class="py-lineno">102</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L103"></a><tt class="py-lineno">103</tt>  <tt class="py-line"><tt class="py-docstring">        >>> decode_with_backslashreplace('abc\xff\xe8')</tt> </tt>
+<a name="L104"></a><tt class="py-lineno">104</tt>  <tt class="py-line"><tt class="py-docstring">        u'abc\\xff\\xe8'</tt> </tt>
+<a name="L105"></a><tt class="py-lineno">105</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L106"></a><tt class="py-lineno">106</tt>  <tt class="py-line">    <tt class="py-comment"># s.encode('string-escape') is not appropriate here, since it</tt> </tt>
+<a name="L107"></a><tt class="py-lineno">107</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># also adds backslashes to some ascii chars (eg \ and ').</tt> </tt>
+<a name="L108"></a><tt class="py-lineno">108</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">)</tt> </tt>
+<a name="L109"></a><tt class="py-lineno">109</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-name">s</tt> </tt>
+<a name="L110"></a><tt class="py-lineno">110</tt>  <tt class="py-line">            <tt class="py-op">.</tt><tt class="py-name">decode</tt><tt class="py-op">(</tt><tt class="py-string">'latin1'</tt><tt class="py-op">)</tt> </tt>
+<a name="L111"></a><tt class="py-lineno">111</tt>  <tt class="py-line">            <tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">'ascii'</tt><tt class="py-op">,</tt> <tt class="py-string">'backslashreplace'</tt><tt class="py-op">)</tt> </tt>
+<a name="L112"></a><tt class="py-lineno">112</tt>  <tt class="py-line">            <tt class="py-op">.</tt><tt class="py-name">decode</tt><tt class="py-op">(</tt><tt class="py-string">'ascii'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L113"></a><tt class="py-lineno">113</tt>  <tt class="py-line"> </tt>
+<a name="wordwrap"></a><div id="wordwrap-def"><a name="L114"></a><tt class="py-lineno">114</tt> <a class="py-toggle" href="#" id="wordwrap-toggle" onclick="return toggle('wordwrap');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.util-module.html#wordwrap">wordwrap</a><tt class="py-op">(</tt><tt class="py-param">str</tt><tt class="py-op">,</tt> <tt class="py-param">indent</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py- [...]
+</div><div id="wordwrap-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="wordwrap-expanded"><a name="L115"></a><tt class="py-lineno">115</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L116"></a><tt class="py-lineno">116</tt>  <tt class="py-line"><tt class="py-docstring">    Word-wrap the given string.  I.e., add newlines to the string such</tt> </tt>
+<a name="L117"></a><tt class="py-lineno">117</tt>  <tt class="py-line"><tt class="py-docstring">    that any lines that are longer than C{right} are broken into</tt> </tt>
+<a name="L118"></a><tt class="py-lineno">118</tt>  <tt class="py-line"><tt class="py-docstring">    shorter lines (at the first whitespace sequence that occurs before</tt> </tt>
+<a name="L119"></a><tt class="py-lineno">119</tt>  <tt class="py-line"><tt class="py-docstring">    index C{right}).  If the given string contains newlines, they will</tt> </tt>
+<a name="L120"></a><tt class="py-lineno">120</tt>  <tt class="py-line"><tt class="py-docstring">    I{not} be removed.  Any lines that begin with whitespace will not</tt> </tt>
+<a name="L121"></a><tt class="py-lineno">121</tt>  <tt class="py-line"><tt class="py-docstring">    be wordwrapped.</tt> </tt>
+<a name="L122"></a><tt class="py-lineno">122</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L123"></a><tt class="py-lineno">123</tt>  <tt class="py-line"><tt class="py-docstring">    @param indent: If specified, then indent each line by this number</tt> </tt>
+<a name="L124"></a><tt class="py-lineno">124</tt>  <tt class="py-line"><tt class="py-docstring">        of spaces.</tt> </tt>
+<a name="L125"></a><tt class="py-lineno">125</tt>  <tt class="py-line"><tt class="py-docstring">    @type indent: C{int}</tt> </tt>
+<a name="L126"></a><tt class="py-lineno">126</tt>  <tt class="py-line"><tt class="py-docstring">    @param right: The right margin for word wrapping.  Lines that are</tt> </tt>
+<a name="L127"></a><tt class="py-lineno">127</tt>  <tt class="py-line"><tt class="py-docstring">        longer than C{right} will be broken at the first whitespace</tt> </tt>
+<a name="L128"></a><tt class="py-lineno">128</tt>  <tt class="py-line"><tt class="py-docstring">        sequence before the right margin.</tt> </tt>
+<a name="L129"></a><tt class="py-lineno">129</tt>  <tt class="py-line"><tt class="py-docstring">    @type right: C{int}</tt> </tt>
+<a name="L130"></a><tt class="py-lineno">130</tt>  <tt class="py-line"><tt class="py-docstring">    @param startindex: If specified, then assume that the first line</tt> </tt>
+<a name="L131"></a><tt class="py-lineno">131</tt>  <tt class="py-line"><tt class="py-docstring">        is already preceeded by C{startindex} characters.</tt> </tt>
+<a name="L132"></a><tt class="py-lineno">132</tt>  <tt class="py-line"><tt class="py-docstring">    @type startindex: C{int}</tt> </tt>
+<a name="L133"></a><tt class="py-lineno">133</tt>  <tt class="py-line"><tt class="py-docstring">    @param splitchars: A list of non-whitespace characters which can</tt> </tt>
+<a name="L134"></a><tt class="py-lineno">134</tt>  <tt class="py-line"><tt class="py-docstring">        be used to split a line.  (E.g., use '/\\' to allow path names</tt> </tt>
+<a name="L135"></a><tt class="py-lineno">135</tt>  <tt class="py-line"><tt class="py-docstring">        to be split over multiple lines.)</tt> </tt>
+<a name="L136"></a><tt class="py-lineno">136</tt>  <tt class="py-line"><tt class="py-docstring">    @rtype: C{str}</tt> </tt>
+<a name="L137"></a><tt class="py-lineno">137</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L138"></a><tt class="py-lineno">138</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">splitchars</tt><tt class="py-op">:</tt> </tt>
+<a name="L139"></a><tt class="py-lineno">139</tt>  <tt class="py-line">        <tt class="py-name">chunks</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">r'( +|\n|[^ \n%s]*[%s])'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L140"></a><tt class="py-lineno">140</tt>  <tt class="py-line">                          <tt class="py-op">(</tt><tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">escape</tt><tt class="py-op">(</tt><tt class="py-name">splitchars</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">escape</tt><tt class="py-op">(</tt><tt class="py-name">splitchars</tt><tt class="py-op">)</tt><tt class="py-op [...]
+<a name="L141"></a><tt class="py-lineno">141</tt>  <tt class="py-line">                          <tt class="py-name">str</tt><tt class="py-op">.</tt><tt class="py-name">expandtabs</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L142"></a><tt class="py-lineno">142</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L143"></a><tt class="py-lineno">143</tt>  <tt class="py-line">        <tt class="py-name">chunks</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">r'( +|\n)'</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">.</tt><tt class="py-name">expandtabs</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L144"></a><tt class="py-lineno">144</tt>  <tt class="py-line">    <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-string">' '</tt><tt class="py-op">*</tt><tt class="py-op">(</tt><tt class="py-name">indent</tt><tt class="py-op">-</tt><tt class="py-name">startindex</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt>
+<a name="L145"></a><tt class="py-lineno">145</tt>  <tt class="py-line">    <tt class="py-name">charindex</tt> <tt class="py-op">=</tt> <tt class="py-name">max</tt><tt class="py-op">(</tt><tt class="py-name">indent</tt><tt class="py-op">,</tt> <tt class="py-name">startindex</tt><tt class="py-op">)</tt> </tt>
+<a name="L146"></a><tt class="py-lineno">146</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">chunknum</tt><tt class="py-op">,</tt> <tt class="py-name">chunk</tt> <tt class="py-keyword">in</tt> <tt class="py-name">enumerate</tt><tt class="py-op">(</tt><tt class="py-name">chunks</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L147"></a><tt class="py-lineno">147</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">charindex</tt><tt class="py-op">+</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">chunk</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-name">right</tt> <tt class="py-keyword">and</tt> <tt class="py-name">charindex</tt> <tt class="py-op">></tt> <tt class="py-number">0</tt><tt class=" [...]
+<a name="L148"></a><tt class="py-lineno">148</tt>  <tt class="py-line">            <tt class="py-name">result</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt> <tt class="py-op">+</tt> <tt class="py-string">' '</tt><tt class="py-op">*</tt><tt class="py-name">indent</tt><tt class="py-op">)</tt> </tt>
+<a name="L149"></a><tt class="py-lineno">149</tt>  <tt class="py-line">            <tt class="py-name">charindex</tt> <tt class="py-op">=</tt> <tt class="py-name">indent</tt> </tt>
+<a name="L150"></a><tt class="py-lineno">150</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">chunk</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">,</tt> <tt class="py-string">' '</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L151"></a><tt class="py-lineno">151</tt>  <tt class="py-line">                <tt class="py-name">result</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">chunk</tt><tt class="py-op">)</tt> </tt>
+<a name="L152"></a><tt class="py-lineno">152</tt>  <tt class="py-line">                <tt class="py-name">charindex</tt> <tt class="py-op">+=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">chunk</tt><tt class="py-op">)</tt> </tt>
+<a name="L153"></a><tt class="py-lineno">153</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L154"></a><tt class="py-lineno">154</tt>  <tt class="py-line">            <tt class="py-name">result</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">chunk</tt><tt class="py-op">)</tt> </tt>
+<a name="L155"></a><tt class="py-lineno">155</tt>  <tt class="py-line">            <tt class="py-name">charindex</tt> <tt class="py-op">+=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">chunk</tt><tt class="py-op">)</tt> </tt>
+<a name="L156"></a><tt class="py-lineno">156</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-string">''</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">rstrip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">+</tt><tt class="py-string">'\n'</tt> </tt>
+</div><a name="L157"></a><tt class="py-lineno">157</tt>  <tt class="py-line"> </tt>
+<a name="plaintext_to_html"></a><div id="plaintext_to_html-def"><a name="L158"></a><tt class="py-lineno">158</tt> <a class="py-toggle" href="#" id="plaintext_to_html-toggle" onclick="return toggle('plaintext_to_html');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.util-module.html#plaintext_to_html">plaintext_to_html</a><tt class="py-op">(</tt><tt class="py-param">s</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="plaintext_to_html-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="plaintext_to_html-expanded"><a name="L159"></a><tt class="py-lineno">159</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L160"></a><tt class="py-lineno">160</tt>  <tt class="py-line"><tt class="py-docstring">    @return: An HTML string that encodes the given plaintext string.</tt> </tt>
+<a name="L161"></a><tt class="py-lineno">161</tt>  <tt class="py-line"><tt class="py-docstring">    In particular, special characters (such as C{'<'} and C{'&'})</tt> </tt>
+<a name="L162"></a><tt class="py-lineno">162</tt>  <tt class="py-line"><tt class="py-docstring">    are escaped.</tt> </tt>
+<a name="L163"></a><tt class="py-lineno">163</tt>  <tt class="py-line"><tt class="py-docstring">    @rtype: C{string}</tt> </tt>
+<a name="L164"></a><tt class="py-lineno">164</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L165"></a><tt class="py-lineno">165</tt>  <tt class="py-line">    <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">s</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">'&'</tt><tt class="py-op">,</tt> <tt class="py-string">'&amp;'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">'"'</tt><tt class="py-op">,</tt> <tt [...]
+<a name="L166"></a><tt class="py-lineno">166</tt>  <tt class="py-line">    <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">s</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">'<'</tt><tt class="py-op">,</tt> <tt class="py-string">'&lt;'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">'>'</tt><tt class="py-op">,</tt> <t [...]
+<a name="L167"></a><tt class="py-lineno">167</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">s</tt> </tt>
+</div><a name="L168"></a><tt class="py-lineno">168</tt>  <tt class="py-line">         </tt>
+<a name="plaintext_to_latex"></a><div id="plaintext_to_latex-def"><a name="L169"></a><tt class="py-lineno">169</tt> <a class="py-toggle" href="#" id="plaintext_to_latex-toggle" onclick="return toggle('plaintext_to_latex');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.util-module.html#plaintext_to_latex">plaintext_to_latex</a><tt class="py-op">(</tt><tt class="py-param">str</tt><tt class="py-op">,</tt> <tt class="py-param">nbsp</tt><tt clas [...]
+</div><div id="plaintext_to_latex-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="plaintext_to_latex-expanded"><a name="L170"></a><tt class="py-lineno">170</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L171"></a><tt class="py-lineno">171</tt>  <tt class="py-line"><tt class="py-docstring">    @return: A LaTeX string that encodes the given plaintext string.</tt> </tt>
+<a name="L172"></a><tt class="py-lineno">172</tt>  <tt class="py-line"><tt class="py-docstring">    In particular, special characters (such as C{'$'} and C{'_'})</tt> </tt>
+<a name="L173"></a><tt class="py-lineno">173</tt>  <tt class="py-line"><tt class="py-docstring">    are escaped, and tabs are expanded.</tt> </tt>
+<a name="L174"></a><tt class="py-lineno">174</tt>  <tt class="py-line"><tt class="py-docstring">    @rtype: C{string}</tt> </tt>
+<a name="L175"></a><tt class="py-lineno">175</tt>  <tt class="py-line"><tt class="py-docstring">    @param breakany: Insert hyphenation marks, so that LaTeX can</tt> </tt>
+<a name="L176"></a><tt class="py-lineno">176</tt>  <tt class="py-line"><tt class="py-docstring">    break the resulting string at any point.  This is useful for</tt> </tt>
+<a name="L177"></a><tt class="py-lineno">177</tt>  <tt class="py-line"><tt class="py-docstring">    small boxes (e.g., the type box in the variable list table).</tt> </tt>
+<a name="L178"></a><tt class="py-lineno">178</tt>  <tt class="py-line"><tt class="py-docstring">    @param nbsp: Replace every space with a non-breaking space</tt> </tt>
+<a name="L179"></a><tt class="py-lineno">179</tt>  <tt class="py-line"><tt class="py-docstring">    (C{'~'}).</tt> </tt>
+<a name="L180"></a><tt class="py-lineno">180</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L181"></a><tt class="py-lineno">181</tt>  <tt class="py-line">    <tt class="py-comment"># These get converted to hyphenation points later</tt> </tt>
+<a name="L182"></a><tt class="py-lineno">182</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">breakany</tt><tt class="py-op">:</tt> <tt class="py-name">str</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt class="py-string">'(.)'</tt><tt class="py-op">,</tt> <tt class="py-string">'\\1\1'</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt [...]
+<a name="L183"></a><tt class="py-lineno">183</tt>  <tt class="py-line"> </tt>
+<a name="L184"></a><tt class="py-lineno">184</tt>  <tt class="py-line">    <tt class="py-comment"># These get converted to \textbackslash later.</tt> </tt>
+<a name="L185"></a><tt class="py-lineno">185</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">str</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">'\\'</tt><tt class="py-op">,</tt> <tt class="py-string">'\0'</tt><tt class="py-op">)</tt> </tt>
+<a name="L186"></a><tt class="py-lineno">186</tt>  <tt class="py-line"> </tt>
+<a name="L187"></a><tt class="py-lineno">187</tt>  <tt class="py-line">    <tt class="py-comment"># Expand tabs</tt> </tt>
+<a name="L188"></a><tt class="py-lineno">188</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">str</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">.</tt><tt class="py-name">expandtabs</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L189"></a><tt class="py-lineno">189</tt>  <tt class="py-line"> </tt>
+<a name="L190"></a><tt class="py-lineno">190</tt>  <tt class="py-line">    <tt class="py-comment"># These elements need to be backslashed.</tt> </tt>
+<a name="L191"></a><tt class="py-lineno">191</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">str</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt class="py-string">r'([#$&%_\${}])'</tt><tt class="py-op">,</tt> <tt class="py-string">r'\\\1'</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">)</tt> </tt>
+<a name="L192"></a><tt class="py-lineno">192</tt>  <tt class="py-line"> </tt>
+<a name="L193"></a><tt class="py-lineno">193</tt>  <tt class="py-line">    <tt class="py-comment"># These elements have special names.</tt> </tt>
+<a name="L194"></a><tt class="py-lineno">194</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">str</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">'|'</tt><tt class="py-op">,</tt> <tt class="py-string">'{\\textbar}'</tt><tt class="py-op">)</tt> </tt>
+<a name="L195"></a><tt class="py-lineno">195</tt>  <tt class="py-line">    <tt class="py-name">str</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">'<'</tt><tt class="py-op">,</tt> <tt class="py-string">'{\\textless}'</tt><tt class="py-op">)</tt> </tt>
+<a name="L196"></a><tt class="py-lineno">196</tt>  <tt class="py-line">    <tt class="py-name">str</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">'>'</tt><tt class="py-op">,</tt> <tt class="py-string">'{\\textgreater}'</tt><tt class="py-op">)</tt> </tt>
+<a name="L197"></a><tt class="py-lineno">197</tt>  <tt class="py-line">    <tt class="py-name">str</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">'^'</tt><tt class="py-op">,</tt> <tt class="py-string">'{\\textasciicircum}'</tt><tt class="py-op">)</tt> </tt>
+<a name="L198"></a><tt class="py-lineno">198</tt>  <tt class="py-line">    <tt class="py-name">str</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">'~'</tt><tt class="py-op">,</tt> <tt class="py-string">'{\\textasciitilde}'</tt><tt class="py-op">)</tt> </tt>
+<a name="L199"></a><tt class="py-lineno">199</tt>  <tt class="py-line">    <tt class="py-name">str</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">'\0'</tt><tt class="py-op">,</tt> <tt class="py-string">r'{\textbackslash}'</tt><tt class="py-op">)</tt> </tt>
+<a name="L200"></a><tt class="py-lineno">200</tt>  <tt class="py-line"> </tt>
+<a name="L201"></a><tt class="py-lineno">201</tt>  <tt class="py-line">    <tt class="py-comment"># replace spaces with non-breaking spaces</tt> </tt>
+<a name="L202"></a><tt class="py-lineno">202</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">nbsp</tt><tt class="py-op">:</tt> <tt class="py-name">str</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">' '</tt><tt class="py-op">,</tt> <tt class="py-string">'~'</tt><tt class="py-op">)</tt> </tt>
+<a name="L203"></a><tt class="py-lineno">203</tt>  <tt class="py-line"> </tt>
+<a name="L204"></a><tt class="py-lineno">204</tt>  <tt class="py-line">    <tt class="py-comment"># Convert \1's to hyphenation points.</tt> </tt>
+<a name="L205"></a><tt class="py-lineno">205</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">breakany</tt><tt class="py-op">:</tt> <tt class="py-name">str</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">'\1'</tt><tt class="py-op">,</tt> <tt class="py-string">r'\-'</tt><tt class="py-op">)</tt> </tt>
+<a name="L206"></a><tt class="py-lineno">206</tt>  <tt class="py-line">     </tt>
+<a name="L207"></a><tt class="py-lineno">207</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">str</tt> </tt>
+</div><a name="L208"></a><tt class="py-lineno">208</tt>  <tt class="py-line"> </tt>
+<a name="RunSubprocessError"></a><div id="RunSubprocessError-def"><a name="L209"></a><tt class="py-lineno">209</tt> <a class="py-toggle" href="#" id="RunSubprocessError-toggle" onclick="return toggle('RunSubprocessError');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="epydoc.util.RunSubprocessError-class.html">RunSubprocessError</a><tt class="py-op">(</tt><tt class="py-base-class">OSError</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="RunSubprocessError-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="RunSubprocessError-expanded"><a name="RunSubprocessError.__init__"></a><div id="RunSubprocessError.__init__-def"><a name="L210"></a><tt class="py-lineno">210</tt> <a class="py-toggle" href="#" id="RunSubprocessError.__init__-toggle" onclick="return toggle('RunSubprocessError.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc. [...]
+</div><div id="RunSubprocessError.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="RunSubprocessError.__init__-expanded"><a name="L211"></a><tt class="py-lineno">211</tt>  <tt class="py-line">        <tt class="py-name">OSError</tt><tt class="py-op">.</tt><tt id="link-44" class="py-name" targets="Method epydoc.apidoc.APIDoc.__init__()=epydoc.apidoc.APIDoc-class.html#__init__,Method epydoc.apidoc.DocIndex.__init__()=epydoc.apidoc.DocIndex-class.html#__i [...]
+epydoc.apidoc.DocIndex.__init__
+epydoc.apidoc.DottedName.__init__
+epydoc.apidoc.NamespaceDoc.__init__
+epydoc.apidoc.VariableDoc.__init__
+epydoc.apidoc._Sentinel.__init__
+epydoc.checker.DocChecker.__init__
+epydoc.cli.ConsoleLogger.__init__
+epydoc.cli.HTMLLogger.__init__
+epydoc.cli.TerminalController.__init__
+epydoc.cli.UnifiedProgressConsoleLogger.__init__
+epydoc.docbuilder.BuildOptions.__init__
+epydoc.docbuilder._ProgressEstimator.__init__
+epydoc.docintrospecter._DevNull.__init__
+epydoc.docstringparser.DocstringField.__init__
+epydoc.docwriter.dotgraph.DotGraph.__init__
+epydoc.docwriter.dotgraph.DotGraphEdge.__init__
+epydoc.docwriter.dotgraph.DotGraphNode.__init__
+epydoc.docwriter.dotgraph.DotGraphUmlClassNode.__init__
+epydoc.docwriter.dotgraph.DotGraphUmlModuleNode.__init__
+epydoc.docwriter.html.HTMLWriter.__init__
+epydoc.docwriter.html._HTMLDocstringLinker.__init__
+epydoc.docwriter.html_colorize.PythonSourceColorizer.__init__
+epydoc.docwriter.latex.LatexWriter.__init__
+epydoc.docwriter.xlink.ApiLinkReader.__init__
+epydoc.docwriter.xlink.DocUrlGenerator.__init__
+epydoc.gui.EpydocGUI.__init__
+epydoc.gui.GUILogger.__init__
+epydoc.log.SimpleLogger.__init__
+epydoc.markup.ConcatenatedDocstring.__init__
+epydoc.markup.Field.__init__
+epydoc.markup.ParseError.__init__
+epydoc.markup.epytext.ColorizingError.__init__
+epydoc.markup.epytext.Element.__init__
+epydoc.markup.epytext.ParsedEpytextDocstring.__init__
+epydoc.markup.epytext.Token.__init__
+epydoc.markup.javadoc.ParsedJavadocDocstring.__init__
+epydoc.markup.plaintext.ParsedPlaintextDocstring.__init__
+epydoc.markup.pyval_repr.ColorizedPyvalRepr.__init__
+epydoc.markup.pyval_repr.PyvalColorizer.__init__
+epydoc.markup.pyval_repr._ColorizerState.__init__
+epydoc.markup.restructuredtext.ParsedRstDocstring.__init__
+epydoc.markup.restructuredtext._DocumentPseudoWriter.__init__
+epydoc.markup.restructuredtext._EpydocHTMLTranslator.__init__
+epydoc.markup.restructuredtext._EpydocLaTeXTranslator.__init__
+epydoc.markup.restructuredtext._EpydocReader.__init__
+epydoc.markup.restructuredtext._SplitFieldsTranslator.__init__
+epydoc.markup.restructuredtext._SummaryExtractor.__init__
+epydoc.markup.restructuredtext._TermsExtractor.__init__
+epydoc.markup.restructuredtext.dotgraph.__init__
+epydoc.util.RunSubprocessError.__init__" class="py-name" href="#" onclick="return doclink('link-44', '__init__', 'link-44');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-string">'%s failed'</tt> <tt class="py-op">%</tt> <tt class="py-name">cmd</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L212"></a><tt class="py-lineno">212</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">out</tt> <tt class="py-op">=</tt> <tt class="py-name">out</tt> </tt>
+<a name="L213"></a><tt class="py-lineno">213</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">err</tt> <tt class="py-op">=</tt> <tt class="py-name">err</tt> </tt>
+</div></div><a name="L214"></a><tt class="py-lineno">214</tt>  <tt class="py-line"> </tt>
+<a name="run_subprocess"></a><div id="run_subprocess-def"><a name="L215"></a><tt class="py-lineno">215</tt> <a class="py-toggle" href="#" id="run_subprocess-toggle" onclick="return toggle('run_subprocess');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epydoc.util-module.html#run_subprocess">run_subprocess</a><tt class="py-op">(</tt><tt class="py-param">cmd</tt><tt class="py-op">,</tt> <tt class="py-param">data</tt><tt class="py-op">=</tt><tt clas [...]
+</div><div id="run_subprocess-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="run_subprocess-expanded"><a name="L216"></a><tt class="py-lineno">216</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L217"></a><tt class="py-lineno">217</tt>  <tt class="py-line"><tt class="py-docstring">    Execute the command C{cmd} in a subprocess.</tt> </tt>
+<a name="L218"></a><tt class="py-lineno">218</tt>  <tt class="py-line"><tt class="py-docstring">    </tt> </tt>
+<a name="L219"></a><tt class="py-lineno">219</tt>  <tt class="py-line"><tt class="py-docstring">    @param cmd: The command to execute, specified as a list</tt> </tt>
+<a name="L220"></a><tt class="py-lineno">220</tt>  <tt class="py-line"><tt class="py-docstring">        of string.</tt> </tt>
+<a name="L221"></a><tt class="py-lineno">221</tt>  <tt class="py-line"><tt class="py-docstring">    @param data: A string containing data to send to the</tt> </tt>
+<a name="L222"></a><tt class="py-lineno">222</tt>  <tt class="py-line"><tt class="py-docstring">        subprocess.</tt> </tt>
+<a name="L223"></a><tt class="py-lineno">223</tt>  <tt class="py-line"><tt class="py-docstring">    @return: A tuple C{(out, err)}.</tt> </tt>
+<a name="L224"></a><tt class="py-lineno">224</tt>  <tt class="py-line"><tt class="py-docstring">    @raise OSError: If there is any problem executing the</tt> </tt>
+<a name="L225"></a><tt class="py-lineno">225</tt>  <tt class="py-line"><tt class="py-docstring">        command, or if its exitval is not 0.</tt> </tt>
+<a name="L226"></a><tt class="py-lineno">226</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L227"></a><tt class="py-lineno">227</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">cmd</tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L228"></a><tt class="py-lineno">228</tt>  <tt class="py-line">        <tt class="py-name">cmd</tt> <tt class="py-op">=</tt> <tt class="py-name">cmd</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L229"></a><tt class="py-lineno">229</tt>  <tt class="py-line"> </tt>
+<a name="L230"></a><tt class="py-lineno">230</tt>  <tt class="py-line">    <tt class="py-comment"># Under Python 2.4+, use subprocess</tt> </tt>
+<a name="L231"></a><tt class="py-lineno">231</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L232"></a><tt class="py-lineno">232</tt>  <tt class="py-line">        <tt class="py-keyword">from</tt> <tt class="py-name">subprocess</tt> <tt class="py-keyword">import</tt> <tt class="py-name">Popen</tt><tt class="py-op">,</tt> <tt class="py-name">PIPE</tt> </tt>
+<a name="L233"></a><tt class="py-lineno">233</tt>  <tt class="py-line">        <tt class="py-name">pipe</tt> <tt class="py-op">=</tt> <tt class="py-name">Popen</tt><tt class="py-op">(</tt><tt class="py-name">cmd</tt><tt class="py-op">,</tt> <tt class="py-name">stdin</tt><tt class="py-op">=</tt><tt class="py-name">PIPE</tt><tt class="py-op">,</tt> <tt class="py-name">stdout</tt><tt class="py-op">=</tt><tt class="py-name">PIPE</tt><tt class="py-op">,</tt> <tt class="py-name">stderr</tt><tt [...]
+<a name="L234"></a><tt class="py-lineno">234</tt>  <tt class="py-line">        <tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-name">err</tt> <tt class="py-op">=</tt> <tt class="py-name">pipe</tt><tt class="py-op">.</tt><tt class="py-name">communicate</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt>
+<a name="L235"></a><tt class="py-lineno">235</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">pipe</tt><tt class="py-op">,</tt> <tt class="py-string">'returncode'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L236"></a><tt class="py-lineno">236</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">pipe</tt><tt class="py-op">.</tt><tt class="py-name">returncode</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L237"></a><tt class="py-lineno">237</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-name">err</tt> </tt>
+<a name="L238"></a><tt class="py-lineno">238</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L239"></a><tt class="py-lineno">239</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt id="link-45" class="py-name" targets="Class epydoc.util.RunSubprocessError=epydoc.util.RunSubprocessError-class.html"><a title="epydoc.util.RunSubprocessError" class="py-name" href="#" onclick="return doclink('link-45', 'RunSubprocessError', 'link-45');">RunSubprocessError</a></tt><tt class="py-op">(</tt><tt class="py-name">cmd</tt><tt class="py-op">,</tt> <tt clas [...]
+<a name="L240"></a><tt class="py-lineno">240</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L241"></a><tt class="py-lineno">241</tt>  <tt class="py-line">            <tt class="py-comment"># Assume that there was an error iff anything was written</tt> </tt>
+<a name="L242"></a><tt class="py-lineno">242</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># to the child's stderr.</tt> </tt>
+<a name="L243"></a><tt class="py-lineno">243</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt class="py-name">err</tt> <tt class="py-op">==</tt> <tt class="py-string">''</tt><tt class="py-op">:</tt> </tt>
+<a name="L244"></a><tt class="py-lineno">244</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-name">err</tt> </tt>
+<a name="L245"></a><tt class="py-lineno">245</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L246"></a><tt class="py-lineno">246</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt id="link-46" class="py-name"><a title="epydoc.util.RunSubprocessError" class="py-name" href="#" onclick="return doclink('link-46', 'RunSubprocessError', 'link-45');">RunSubprocessError</a></tt><tt class="py-op">(</tt><tt class="py-name">cmd</tt><tt class="py-op">,</tt> <tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-name">err</tt><tt class="py-op [...]
+<a name="L247"></a><tt class="py-lineno">247</tt>  <tt class="py-line">    <tt class="py-keyword">except</tt> <tt class="py-name">ImportError</tt><tt class="py-op">:</tt> </tt>
+<a name="L248"></a><tt class="py-lineno">248</tt>  <tt class="py-line">        <tt class="py-keyword">pass</tt> </tt>
+<a name="L249"></a><tt class="py-lineno">249</tt>  <tt class="py-line"> </tt>
+<a name="L250"></a><tt class="py-lineno">250</tt>  <tt class="py-line">    <tt class="py-comment"># Under Python 2.3 or earlier, on unix, use popen2.Popen3 so we</tt> </tt>
+<a name="L251"></a><tt class="py-lineno">251</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># can access the return value.</tt> </tt>
+<a name="L252"></a><tt class="py-lineno">252</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">import</tt> <tt class="py-name">popen2</tt> </tt>
+<a name="L253"></a><tt class="py-lineno">253</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">popen2</tt><tt class="py-op">,</tt> <tt class="py-string">'Popen3'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L254"></a><tt class="py-lineno">254</tt>  <tt class="py-line">        <tt class="py-name">pipe</tt> <tt class="py-op">=</tt> <tt class="py-name">popen2</tt><tt class="py-op">.</tt><tt class="py-name">Popen3</tt><tt class="py-op">(</tt><tt class="py-string">' '</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">cmd</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">True</tt><tt class="py-op">)</tt> </tt>
+<a name="L255"></a><tt class="py-lineno">255</tt>  <tt class="py-line">        <tt class="py-name">to_child</tt> <tt class="py-op">=</tt> <tt class="py-name">pipe</tt><tt class="py-op">.</tt><tt class="py-name">tochild</tt> </tt>
+<a name="L256"></a><tt class="py-lineno">256</tt>  <tt class="py-line">        <tt class="py-name">from_child</tt> <tt class="py-op">=</tt> <tt class="py-name">pipe</tt><tt class="py-op">.</tt><tt class="py-name">fromchild</tt> </tt>
+<a name="L257"></a><tt class="py-lineno">257</tt>  <tt class="py-line">        <tt class="py-name">child_err</tt> <tt class="py-op">=</tt> <tt class="py-name">pipe</tt><tt class="py-op">.</tt><tt class="py-name">childerr</tt> </tt>
+<a name="L258"></a><tt class="py-lineno">258</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">data</tt><tt class="py-op">:</tt> </tt>
+<a name="L259"></a><tt class="py-lineno">259</tt>  <tt class="py-line">            <tt class="py-name">to_child</tt><tt class="py-op">.</tt><tt id="link-47" class="py-name" targets="Method epydoc.docintrospecter._DevNull.write()=epydoc.docintrospecter._DevNull-class.html#write,Method epydoc.docwriter.dotgraph.DotGraph.write()=epydoc.docwriter.dotgraph.DotGraph-class.html#write,Method epydoc.docwriter.html.HTMLWriter.write()=epydoc.docwriter.html.HTMLWriter-class.html#write,Method epydoc. [...]
+epydoc.docwriter.dotgraph.DotGraph.write
+epydoc.docwriter.html.HTMLWriter.write
+epydoc.docwriter.latex.LatexWriter.write
+epydoc.docwriter.plaintext.PlaintextWriter.write" class="py-name" href="#" onclick="return doclink('link-47', 'write', 'link-47');">write</a></tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt>
+<a name="L260"></a><tt class="py-lineno">260</tt>  <tt class="py-line">        <tt class="py-name">to_child</tt><tt class="py-op">.</tt><tt id="link-48" class="py-name" targets="Method epydoc.cli.HTMLLogger.close()=epydoc.cli.HTMLLogger-class.html#close,Method epydoc.docintrospecter._DevNull.close()=epydoc.docintrospecter._DevNull-class.html#close,Method epydoc.log.Logger.close()=epydoc.log.Logger-class.html#close,Function epydoc.log.close()=epydoc.log-module.html#close"><a title="epydoc [...]
+epydoc.docintrospecter._DevNull.close
+epydoc.log.Logger.close
+epydoc.log.close" class="py-name" href="#" onclick="return doclink('link-48', 'close', 'link-48');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L261"></a><tt class="py-lineno">261</tt>  <tt class="py-line">        <tt class="py-name">out</tt> <tt class="py-op">=</tt> <tt class="py-name">err</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
+<a name="L262"></a><tt class="py-lineno">262</tt>  <tt class="py-line">        <tt class="py-keyword">while</tt> <tt class="py-name">pipe</tt><tt class="py-op">.</tt><tt class="py-name">poll</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L263"></a><tt class="py-lineno">263</tt>  <tt class="py-line">            <tt class="py-name">out</tt> <tt class="py-op">+=</tt> <tt class="py-name">from_child</tt><tt class="py-op">.</tt><tt id="link-49" class="py-name" targets="Method epydoc.docintrospecter._DevNull.read()=epydoc.docintrospecter._DevNull-class.html#read,Method epydoc.docwriter.xlink.ApiLinkReader.read()=epydoc.docwriter.xlink.ApiLinkReader-class.html#read,Method epydoc.gui.GUILogger.read()=epydoc.gui.GUILogger [...]
+epydoc.docwriter.xlink.ApiLinkReader.read
+epydoc.gui.GUILogger.read" class="py-name" href="#" onclick="return doclink('link-49', 'read', 'link-49');">read</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L264"></a><tt class="py-lineno">264</tt>  <tt class="py-line">            <tt class="py-name">err</tt> <tt class="py-op">+=</tt> <tt class="py-name">child_err</tt><tt class="py-op">.</tt><tt id="link-50" class="py-name"><a title="epydoc.docintrospecter._DevNull.read
+epydoc.docwriter.xlink.ApiLinkReader.read
+epydoc.gui.GUILogger.read" class="py-name" href="#" onclick="return doclink('link-50', 'read', 'link-49');">read</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L265"></a><tt class="py-lineno">265</tt>  <tt class="py-line">        <tt class="py-name">out</tt> <tt class="py-op">+=</tt> <tt class="py-name">from_child</tt><tt class="py-op">.</tt><tt id="link-51" class="py-name"><a title="epydoc.docintrospecter._DevNull.read
+epydoc.docwriter.xlink.ApiLinkReader.read
+epydoc.gui.GUILogger.read" class="py-name" href="#" onclick="return doclink('link-51', 'read', 'link-49');">read</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L266"></a><tt class="py-lineno">266</tt>  <tt class="py-line">        <tt class="py-name">err</tt> <tt class="py-op">+=</tt> <tt class="py-name">child_err</tt><tt class="py-op">.</tt><tt id="link-52" class="py-name"><a title="epydoc.docintrospecter._DevNull.read
+epydoc.docwriter.xlink.ApiLinkReader.read
+epydoc.gui.GUILogger.read" class="py-name" href="#" onclick="return doclink('link-52', 'read', 'link-49');">read</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L267"></a><tt class="py-lineno">267</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">pipe</tt><tt class="py-op">.</tt><tt class="py-name">wait</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L268"></a><tt class="py-lineno">268</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-name">err</tt> </tt>
+<a name="L269"></a><tt class="py-lineno">269</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L270"></a><tt class="py-lineno">270</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt id="link-53" class="py-name"><a title="epydoc.util.RunSubprocessError" class="py-name" href="#" onclick="return doclink('link-53', 'RunSubprocessError', 'link-45');">RunSubprocessError</a></tt><tt class="py-op">(</tt><tt class="py-name">cmd</tt><tt class="py-op">,</tt> <tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-name">err</tt><tt class="py-op">)< [...]
+<a name="L271"></a><tt class="py-lineno">271</tt>  <tt class="py-line"> </tt>
+<a name="L272"></a><tt class="py-lineno">272</tt>  <tt class="py-line">    <tt class="py-comment"># Under Python 2.3 or earlier, on non-unix, use os.popen3</tt> </tt>
+<a name="L273"></a><tt class="py-lineno">273</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L274"></a><tt class="py-lineno">274</tt>  <tt class="py-line">        <tt class="py-name">to_child</tt><tt class="py-op">,</tt> <tt class="py-name">from_child</tt><tt class="py-op">,</tt> <tt class="py-name">child_err</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">popen3</tt><tt class="py-op">(</tt><tt class="py-string">' '</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">cm [...]
+<a name="L275"></a><tt class="py-lineno">275</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">data</tt><tt class="py-op">:</tt> </tt>
+<a name="L276"></a><tt class="py-lineno">276</tt>  <tt class="py-line">            <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L277"></a><tt class="py-lineno">277</tt>  <tt class="py-line">                <tt class="py-name">to_child</tt><tt class="py-op">.</tt><tt id="link-54" class="py-name"><a title="epydoc.docintrospecter._DevNull.write
+epydoc.docwriter.dotgraph.DotGraph.write
+epydoc.docwriter.html.HTMLWriter.write
+epydoc.docwriter.latex.LatexWriter.write
+epydoc.docwriter.plaintext.PlaintextWriter.write" class="py-name" href="#" onclick="return doclink('link-54', 'write', 'link-47');">write</a></tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt>
+<a name="L278"></a><tt class="py-lineno">278</tt>  <tt class="py-line">            <tt class="py-comment"># Guard for a broken pipe error</tt> </tt>
+<a name="L279"></a><tt class="py-lineno">279</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">except</tt> <tt class="py-name">IOError</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
+<a name="L280"></a><tt class="py-lineno">280</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">OSError</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">)</tt> </tt>
+<a name="L281"></a><tt class="py-lineno">281</tt>  <tt class="py-line">        <tt class="py-name">to_child</tt><tt class="py-op">.</tt><tt id="link-55" class="py-name"><a title="epydoc.cli.HTMLLogger.close
+epydoc.docintrospecter._DevNull.close
+epydoc.log.Logger.close
+epydoc.log.close" class="py-name" href="#" onclick="return doclink('link-55', 'close', 'link-48');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L282"></a><tt class="py-lineno">282</tt>  <tt class="py-line">        <tt class="py-name">out</tt> <tt class="py-op">=</tt> <tt class="py-name">from_child</tt><tt class="py-op">.</tt><tt id="link-56" class="py-name"><a title="epydoc.docintrospecter._DevNull.read
+epydoc.docwriter.xlink.ApiLinkReader.read
+epydoc.gui.GUILogger.read" class="py-name" href="#" onclick="return doclink('link-56', 'read', 'link-49');">read</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L283"></a><tt class="py-lineno">283</tt>  <tt class="py-line">        <tt class="py-name">err</tt> <tt class="py-op">=</tt> <tt class="py-name">child_err</tt><tt class="py-op">.</tt><tt id="link-57" class="py-name"><a title="epydoc.docintrospecter._DevNull.read
+epydoc.docwriter.xlink.ApiLinkReader.read
+epydoc.gui.GUILogger.read" class="py-name" href="#" onclick="return doclink('link-57', 'read', 'link-49');">read</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L284"></a><tt class="py-lineno">284</tt>  <tt class="py-line">        <tt class="py-comment"># Assume that there was an error iff anything was written</tt> </tt>
+<a name="L285"></a><tt class="py-lineno">285</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># to the child's stderr.</tt> </tt>
+<a name="L286"></a><tt class="py-lineno">286</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">err</tt> <tt class="py-op">==</tt> <tt class="py-string">''</tt><tt class="py-op">:</tt> </tt>
+<a name="L287"></a><tt class="py-lineno">287</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-name">err</tt> </tt>
+<a name="L288"></a><tt class="py-lineno">288</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L289"></a><tt class="py-lineno">289</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt id="link-58" class="py-name"><a title="epydoc.util.RunSubprocessError" class="py-name" href="#" onclick="return doclink('link-58', 'RunSubprocessError', 'link-45');">RunSubprocessError</a></tt><tt class="py-op">(</tt><tt class="py-name">cmd</tt><tt class="py-op">,</tt> <tt class="py-name">out</tt><tt class="py-op">,</tt> <tt class="py-name">err</tt><tt class="py-op">)< [...]
+</div><a name="L290"></a><tt class="py-lineno">290</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:09:56 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/epydoc.util.RunSubprocessError-class.html b/doc/api/epydoc.util.RunSubprocessError-class.html
new file mode 100644
index 0000000..b837e48
--- /dev/null
+++ b/doc/api/epydoc.util.RunSubprocessError-class.html
@@ -0,0 +1,223 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc.util.RunSubprocessError</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="epydoc-module.html">Package epydoc</a> ::
+        <a href="epydoc.util-module.html">Module util</a> ::
+        Class RunSubprocessError
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epydoc.util.RunSubprocessError-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class RunSubprocessError</h1><p class="nomargin-top"><span class="codelink"><a href="epydoc.util-pysrc.html#RunSubprocessError">source code</a></span></p>
+<center>
+<center>  <map id="uml_class_diagram_for_epydoc_u" name="uml_class_diagram_for_epydoc_u">
+<area shape="rect" href="javascript:void(0);" title="exceptions.EnvironmentError.__str__" alt="" coords="17,172,191,191" />
+<area shape="rect" href="javascript:void(0);" title="Base class for I/O related errors." alt="" coords="5,142,203,198" />
+<area shape="rect" href="javascript:void(0);" title="OS system call failed." alt="" coords="33,216,175,259" />
+<area shape="rect" href="epydoc.util.RunSubprocessError-class.html#__init__" title="epydoc.util.RunSubprocessError.__init__" alt="" coords="20,308,188,327" />
+<area shape="rect" href="epydoc.util.RunSubprocessError-class.html" title="epydoc.util.RunSubprocessError" alt="" coords="8,278,200,334" />
+<area shape="rect" href="javascript:void(0);" title="Base class for all standard Python exceptions." alt="" coords="16,80,192,123" />
+<area shape="rect" href="javascript:void(0);" title="exceptions.Exception.__getitem__" alt="" coords="40,36,168,55" />
+<area shape="rect" href="javascript:void(0);" title="Common base class for all exceptions." alt="" coords="28,6,180,62" />
+</map>
+  <img src="uml_class_diagram_for_epydoc_u.gif" alt='' usemap="#uml_class_diagram_for_epydoc_u" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epydoc.util.RunSubprocessError-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">cmd</span>,
+        <span class="summary-sig-arg">out</span>,
+        <span class="summary-sig-arg">err</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epydoc.util-pysrc.html#RunSubprocessError.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.EnvironmentError</code></b>:
+      <code>__str__</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.Exception</code></b>:
+      <code>__getitem__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Method Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-MethodDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">cmd</span>,
+        <span class="sig-arg">out</span>,
+        <span class="sig-arg">err</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epydoc.util-pysrc.html#RunSubprocessError.__init__">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  
+  <dl class="fields">
+    <dt>Overrides:
+        exceptions.Exception.__init__
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:09:04 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/frames.html b/doc/api/frames.html
new file mode 100644
index 0000000..c3ded09
--- /dev/null
+++ b/doc/api/frames.html
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
+          "DTD/xhtml1-frameset.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title> epydoc </title>
+</head>
+<frameset cols="20%,80%">
+  <frameset rows="30%,70%">
+    <frame src="toc.html" name="moduleListFrame"
+           id="moduleListFrame" />
+    <frame src="toc-everything.html" name="moduleFrame"
+           id="moduleFrame" />
+  </frameset>
+  <frame src="epydoc-module.html" name="mainFrame" id="mainFrame" />
+</frameset>
+</html>
diff --git a/doc/api/help.html b/doc/api/help.html
new file mode 100644
index 0000000..d0ec727
--- /dev/null
+++ b/doc/api/help.html
@@ -0,0 +1,279 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Help</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >   Help   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%"> </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="help.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+
+<h1 class="epydoc"> API Documentation </h1>
+
+<p> This document contains the API (Application Programming Interface)
+documentation for epydoc.  Documentation for the Python
+objects defined by the project is divided into separate pages for each
+package, module, and class.  The API documentation also includes two
+pages containing information about the project as a whole: a trees
+page, and an index page.  </p>
+
+<h2> Object Documentation </h2>
+
+  <p>Each <strong>Package Documentation</strong> page contains: </p>
+  <ul>
+    <li> A description of the package. </li>
+    <li> A list of the modules and sub-packages contained by the
+    package.  </li>
+    <li> A summary of the classes defined by the package. </li>
+    <li> A summary of the functions defined by the package. </li>
+    <li> A summary of the variables defined by the package. </li>
+    <li> A detailed description of each function defined by the
+    package. </li>
+    <li> A detailed description of each variable defined by the
+    package. </li>
+  </ul>
+  
+  <p>Each <strong>Module Documentation</strong> page contains:</p>
+  <ul>
+    <li> A description of the module. </li>
+    <li> A summary of the classes defined by the module. </li>
+    <li> A summary of the functions defined by the module. </li>
+    <li> A summary of the variables defined by the module. </li>
+    <li> A detailed description of each function defined by the
+    module. </li>
+    <li> A detailed description of each variable defined by the
+    module. </li>
+  </ul>
+  
+  <p>Each <strong>Class Documentation</strong> page contains: </p>
+  <ul>
+    <li> A class inheritance diagram. </li>
+    <li> A list of known subclasses. </li>
+    <li> A description of the class. </li>
+    <li> A summary of the methods defined by the class. </li>
+    <li> A summary of the instance variables defined by the class. </li>
+    <li> A summary of the class (static) variables defined by the
+    class. </li> 
+    <li> A detailed description of each method defined by the
+    class. </li>
+    <li> A detailed description of each instance variable defined by the
+    class. </li> 
+    <li> A detailed description of each class (static) variable defined
+    by the class. </li> 
+  </ul>
+
+<h2> Project Documentation </h2>
+
+  <p> The <strong>Trees</strong> page contains the module and class hierarchies: </p>
+  <ul>
+    <li> The <em>module hierarchy</em> lists every package and module, with
+    modules grouped into packages.  At the top level, and within each
+    package, modules and sub-packages are listed alphabetically. </li>
+    <li> The <em>class hierarchy</em> lists every class, grouped by base
+    class.  If a class has more than one base class, then it will be
+    listed under each base class.  At the top level, and under each base
+    class, classes are listed alphabetically. </li>
+  </ul>
+  
+  <p> The <strong>Index</strong> page contains indices of terms and
+  identifiers: </p>
+  <ul>
+    <li> The <em>term index</em> lists every term indexed by any object's
+    documentation.  For each term, the index provides links to each
+    place where the term is indexed. </li>
+    <li> The <em>identifier index</em> lists the (short) name of every package,
+    module, class, method, function, variable, and parameter.  For each
+    identifier, the index provides a short description, and a link to
+    its documentation. </li>
+  </ul>
+
+<h2> The Table of Contents </h2>
+
+<p> The table of contents occupies the two frames on the left side of
+the window.  The upper-left frame displays the <em>project
+contents</em>, and the lower-left frame displays the <em>module
+contents</em>: </p>
+
+<table class="help summary" border="1" cellspacing="0" cellpadding="3">
+  <tr style="height: 30%">
+    <td align="center" style="font-size: small">
+       Project<br />Contents<hr />...</td>
+    <td align="center" style="font-size: small" rowspan="2" width="70%">
+      API<br />Documentation<br />Frame<br /><br /><br />
+    </td>
+  </tr>
+  <tr>
+    <td align="center" style="font-size: small">
+      Module<br />Contents<hr /> <br />...<br /> 
+    </td>
+  </tr>
+</table><br />
+
+<p> The <strong>project contents frame</strong> contains a list of all packages
+and modules that are defined by the project.  Clicking on an entry
+will display its contents in the module contents frame.  Clicking on a
+special entry, labeled "Everything," will display the contents of
+the entire project. </p>
+
+<p> The <strong>module contents frame</strong> contains a list of every
+submodule, class, type, exception, function, and variable defined by a
+module or package.  Clicking on an entry will display its
+documentation in the API documentation frame.  Clicking on the name of
+the module, at the top of the frame, will display the documentation
+for the module itself. </p>
+
+<p> The "<strong>frames</strong>" and "<strong>no frames</strong>" buttons below the top
+navigation bar can be used to control whether the table of contents is
+displayed or not. </p>
+
+<h2> The Navigation Bar </h2>
+
+<p> A navigation bar is located at the top and bottom of every page.
+It indicates what type of page you are currently viewing, and allows
+you to go to related pages.  The following table describes the labels
+on the navigation bar.  Note that not some labels (such as
+[Parent]) are not displayed on all pages. </p>
+
+<table class="summary" border="1" cellspacing="0" cellpadding="3" width="100%">
+<tr class="summary">
+  <th>Label</th>
+  <th>Highlighted when...</th>
+  <th>Links to...</th>
+</tr>
+  <tr><td valign="top"><strong>[Parent]</strong></td>
+      <td valign="top"><em>(never highlighted)</em></td>
+      <td valign="top"> the parent of the current package </td></tr>
+  <tr><td valign="top"><strong>[Package]</strong></td>
+      <td valign="top">viewing a package</td>
+      <td valign="top">the package containing the current object
+      </td></tr>
+  <tr><td valign="top"><strong>[Module]</strong></td>
+      <td valign="top">viewing a module</td>
+      <td valign="top">the module containing the current object
+      </td></tr> 
+  <tr><td valign="top"><strong>[Class]</strong></td>
+      <td valign="top">viewing a class </td>
+      <td valign="top">the class containing the current object</td></tr>
+  <tr><td valign="top"><strong>[Trees]</strong></td>
+      <td valign="top">viewing the trees page</td>
+      <td valign="top"> the trees page </td></tr>
+  <tr><td valign="top"><strong>[Index]</strong></td>
+      <td valign="top">viewing the index page</td>
+      <td valign="top"> the index page </td></tr>
+  <tr><td valign="top"><strong>[Help]</strong></td>
+      <td valign="top">viewing the help page</td>
+      <td valign="top"> the help page </td></tr>
+</table>
+
+<p> The "<strong>show private</strong>" and "<strong>hide private</strong>" buttons below
+the top navigation bar can be used to control whether documentation
+for private objects is displayed.  Private objects are usually defined
+as objects whose (short) names begin with a single underscore, but do
+not end with an underscore.  For example, "<code>_x</code>",
+"<code>__pprint</code>", and "<code>epydoc.epytext._tokenize</code>"
+are private objects; but "<code>re.sub</code>",
+"<code>__init__</code>", and "<code>type_</code>" are not.  However,
+if a module defines the "<code>__all__</code>" variable, then its
+contents are used to decide which objects are private. </p>
+
+<p> A timestamp below the bottom navigation bar indicates when each
+page was last updated. </p>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >   Help   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:05:43 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/identifier-index.html b/doc/api/identifier-index.html
new file mode 100644
index 0000000..354e154
--- /dev/null
+++ b/doc/api/identifier-index.html
@@ -0,0 +1,3868 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Identifier Index</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >   Indices   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%"> </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="identifier-index.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<center><b>[
+ <a href="identifier-index.html">Identifiers</a>
+| <a href="term-index.html">Term Definitions</a>
+| <a href="bug-index.html">Bugs</a>
+| <a href="todo-index.html">To Do</a>
+]</b></center><br />
+<table border="0" width="100%">
+<tr valign="bottom"><td>
+<h1 class="epydoc">Identifier Index</h1>
+</td><td>
+[
+ <a href="#A">A</a>
+ <a href="#B">B</a>
+ <a href="#C">C</a>
+ <a href="#D">D</a>
+ <a href="#E">E</a>
+ <a href="#F">F</a>
+ <a href="#G">G</a>
+ <a href="#H">H</a>
+ <a href="#I">I</a>
+ <a href="#J">J</a>
+ <a href="#K">K</a>
+ <a href="#L">L</a>
+ <a href="#M">M</a>
+ <a href="#N">N</a>
+ <a href="#O">O</a>
+ <a href="#P">P</a>
+ <a href="#Q">Q</a>
+ <a href="#R">R</a>
+ <a href="#S">S</a>
+ <a href="#T">T</a>
+ <a href="#U">U</a>
+ <a href="#V">V</a>
+ <a href="#W">W</a>
+ <a href="#X">X</a>
+ <a href="#Y">Y</a>
+  Z
+ <a href="#_">_</a>
+]
+</td></table>
+<table border="0" width="100%">
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="A">A</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.cli-module.html#ACTIONS">ACTIONS</a><br />
+<span class="index-where">(in <a href="epydoc.cli-module.html">epydoc.cli</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.RoutineDoc-class.html#all_args">all_args()</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.RoutineDoc-class.html">RoutineDoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.ValueDoc-class.html#apidoc_links">apidoc_links()</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.ValueDoc-class.html">ValueDoc</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.gui-module.html#ACTIVEBG_COLOR">ACTIVEBG_COLOR</a><br />
+<span class="index-where">(in <a href="epydoc.gui-module.html">epydoc.gui</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.checker.DocChecker-class.html#ALL_C">ALL_C</a><br />
+<span class="index-where">(in <a href="epydoc.checker.DocChecker-class.html">DocChecker</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.VariableDoc-class.html#apidoc_links">apidoc_links()</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.VariableDoc-class.html">VariableDoc</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#ADD_DEF_BLOCKS">ADD_DEF_BLOCKS</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html">PythonSourceColorizer</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.checker.DocChecker-class.html#ALL_T">ALL_T</a><br />
+<span class="index-where">(in <a href="epydoc.checker.DocChecker-class.html">DocChecker</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.xlink.ApiLinkReader-class.html">ApiLinkReader</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.xlink-module.html">epydoc.docwriter.xlink</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docparser-module.html#add_docstring_from_comments">add_docstring_from_comments()</a><br />
+<span class="index-where">(in <a href="epydoc.docparser-module.html">epydoc.docparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html#ALLOW_UNMARKED_ARG_IN_CONSOLIDATED_FIELD">ALLOW_UNMARKED_ARG_IN_CONSOLIDATED_FIELD</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html" onclick="show_private();">_SplitFieldsTranslator</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docparser-module.html#apply_decorator">apply_decorator()</a><br />
+<span class="index-where">(in <a href="epydoc.docparser-module.html">epydoc.docparser</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#ADD_LINE_NUMBERS">ADD_LINE_NUMBERS</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html">PythonSourceColorizer</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.xlink-module.html#api_register">api_register</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.xlink-module.html">epydoc.docwriter.xlink</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.Field-class.html#arg">arg()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.Field-class.html">Field</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#add_line_numbers">add_line_numbers()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html">PythonSourceColorizer</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc-module.html">apidoc</a><br />
+<span class="index-where">(in <a href="epydoc-module.html">epydoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.RoutineDoc-class.html#arg_descrs">arg_descrs</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.RoutineDoc-class.html">RoutineDoc</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docstringparser-module.html#add_metadata_from_var">add_metadata_from_var()</a><br />
+<span class="index-where">(in <a href="epydoc.docstringparser-module.html">epydoc.docstringparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.APIDoc-class.html">APIDoc</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc-module.html">epydoc.apidoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#arg_name_to_html">arg_name_to_html()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.gui.EpydocGUI-class.html#add_module">add_module()</a><br />
+<span class="index-where">(in <a href="epydoc.gui.EpydocGUI-class.html">EpydocGUI</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.APIDoc-class.html#apidoc_links">apidoc_links()</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.APIDoc-class.html">APIDoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.RoutineDoc-class.html#arg_types">arg_types</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.RoutineDoc-class.html">RoutineDoc</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docparser-module.html#add_to_group">add_to_group()</a><br />
+<span class="index-where">(in <a href="epydoc.docparser-module.html">epydoc.docparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.ClassDoc-class.html#apidoc_links">apidoc_links()</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.ClassDoc-class.html">ClassDoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docbuilder-module.html#assign_canonical_names">assign_canonical_names()</a><br />
+<span class="index-where">(in <a href="epydoc.docbuilder-module.html">epydoc.docbuilder</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#ADD_TOOLTIPS">ADD_TOOLTIPS</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html">PythonSourceColorizer</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.ModuleDoc-class.html#apidoc_links">apidoc_links()</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.ModuleDoc-class.html">ModuleDoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.checker.DocChecker-class.html#AUTHOR">AUTHOR</a><br />
+<span class="index-where">(in <a href="epydoc.checker.DocChecker-class.html">DocChecker</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.dotgraph-module.html#add_valdoc_nodes">add_valdoc_nodes()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.dotgraph-module.html">epydoc.docwriter.dotgraph</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.NamespaceDoc-class.html#apidoc_links">apidoc_links()</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.NamespaceDoc-class.html">NamespaceDoc</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.checker.DocChecker-class.html#ALL">ALL</a><br />
+<span class="index-where">(in <a href="epydoc.checker.DocChecker-class.html">DocChecker</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.PropertyDoc-class.html#apidoc_links">apidoc_links()</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.PropertyDoc-class.html">PropertyDoc</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+</tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="B">B</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docstringparser-module.html#BAD_CONTEXT">BAD_CONTEXT</a><br />
+<span class="index-where">(in <a href="epydoc.docstringparser-module.html">epydoc.docstringparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.cli.TerminalController-class.html#BLACK">BLACK</a><br />
+<span class="index-where">(in <a href="epydoc.cli.TerminalController-class.html">TerminalController</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#build_identifier_index">build_identifier_index()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docstringparser-module.html#BAD_PARAM">BAD_PARAM</a><br />
+<span class="index-where">(in <a href="epydoc.docstringparser-module.html">epydoc.docstringparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.cli.TerminalController-class.html#BLUE">BLUE</a><br />
+<span class="index-where">(in <a href="epydoc.cli.TerminalController-class.html">TerminalController</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#build_metadata_index">build_metadata_index()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docparser-module.html#BASE_HANDLING">BASE_HANDLING</a><br />
+<span class="index-where">(in <a href="epydoc.docparser-module.html">epydoc.docparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.Field-class.html#body">body()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.Field-class.html">Field</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.gui-module.html#BUILD_PROGRESS">BUILD_PROGRESS</a><br />
+<span class="index-where">(in <a href="epydoc.gui-module.html">epydoc.gui</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#base_tree">base_tree()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.cli.TerminalController-class.html#BOL">BOL</a><br />
+<span class="index-where">(in <a href="epydoc.cli.TerminalController-class.html">TerminalController</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#build_term_index">build_term_index()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.latex.LatexWriter-class.html#base_tree">base_tree()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.latex.LatexWriter-class.html">LatexWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.cli.TerminalController-class.html#BOLD">BOLD</a><br />
+<span class="index-where">(in <a href="epydoc.cli.TerminalController-class.html">TerminalController</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docbuilder.BuildOptions-class.html">BuildOptions</a><br />
+<span class="index-where">(in <a href="epydoc.docbuilder-module.html">epydoc.docbuilder</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.dotgraph-module.html#BASECLASS_BG">BASECLASS_BG</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.dotgraph-module.html">epydoc.docwriter.dotgraph</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.plaintext.PlaintextWriter-class.html#bold">bold()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.plaintext.PlaintextWriter-class.html">PlaintextWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.test.util-module.html#buildvaluedoc">buildvaluedoc()</a><br />
+<span class="index-where">(in <a href="epydoc.test.util-module.html">epydoc.test.util</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.plaintext.PlaintextWriter-class.html#baselist">baselist()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.plaintext.PlaintextWriter-class.html">PlaintextWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#breadcrumbs">breadcrumbs()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext.Token-class.html#BULLET">BULLET</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext.Token-class.html">Token</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.ClassDoc-class.html#bases">bases</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.ClassDoc-class.html">ClassDoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docbuilder-module.html#build_doc">build_doc()</a><br />
+<span class="index-where">(in <a href="epydoc.docbuilder-module.html">epydoc.docbuilder</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.gui-module.html#BUTTON_CONFIG">BUTTON_CONFIG</a><br />
+<span class="index-where">(in <a href="epydoc.gui-module.html">epydoc.gui</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.gui-module.html#BG_COLOR">BG_COLOR</a><br />
+<span class="index-where">(in <a href="epydoc.gui-module.html">epydoc.gui</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docbuilder-module.html#build_doc_index">build_doc_index()</a><br />
+<span class="index-where">(in <a href="epydoc.docbuilder-module.html">epydoc.docbuilder</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+</tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="C">C</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.dotgraph-module.html#call_graph">call_graph()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.dotgraph-module.html">epydoc.docwriter.dotgraph</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docintrospecter-module.html#clear_cache">clear_cache()</a><br />
+<span class="index-where">(in <a href="epydoc.docintrospecter-module.html">epydoc.docintrospecter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docparser-module.html#COMMENT_DOCSTRING_MARKER">COMMENT_DOCSTRING_MARKER</a><br />
+<span class="index-where">(in <a href="epydoc.docparser-module.html">epydoc.docparser</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext-module.html#callgraph_directive">callgraph_directive()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext-module.html">epydoc.markup.restructuredtext</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.cli.TerminalController-class.html#CLEAR_EOL">CLEAR_EOL</a><br />
+<span class="index-where">(in <a href="epydoc.cli.TerminalController-class.html">TerminalController</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.compat-module.html">compat</a><br />
+<span class="index-where">(in <a href="epydoc-module.html">epydoc</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#callgraph_link">callgraph_link()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.cli.TerminalController-class.html#CLEAR_LINE">CLEAR_LINE</a><br />
+<span class="index-where">(in <a href="epydoc.cli.TerminalController-class.html">TerminalController</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html-module.html#compile_template">compile_template()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html-module.html">epydoc.docwriter.html</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.RoutineDoc-class.html#callgraph_uid">callgraph_uid</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.RoutineDoc-class.html">RoutineDoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.cli-module.html">cli</a><br />
+<span class="index-where">(in <a href="epydoc-module.html">epydoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.ParsedDocstring-class.html#concatenate">concatenate()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.ParsedDocstring-class.html">ParsedDocstring</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.GenericValueDoc-class.html#canonical_name">canonical_name</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.GenericValueDoc-class.html">GenericValueDoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.cli-module.html#cli">cli()</a><br />
+<span class="index-where">(in <a href="epydoc.cli-module.html">epydoc.cli</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.ConcatenatedDocstring-class.html">ConcatenatedDocstring</a><br />
+<span class="index-where">(in <a href="epydoc.markup-module.html">epydoc.markup</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.ValueDoc-class.html#canonical_name">canonical_name</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.ValueDoc-class.html">ValueDoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.cli.HTMLLogger-class.html#close">close()</a><br />
+<span class="index-where">(in <a href="epydoc.cli.HTMLLogger-class.html">HTMLLogger</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.cli.ConsoleLogger-class.html">ConsoleLogger</a><br />
+<span class="index-where">(in <a href="epydoc.cli-module.html">epydoc.cli</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.VariableDoc-class.html#canonical_name">canonical_name</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.VariableDoc-class.html">VariableDoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docintrospecter._DevNull-class.html#close">close()</a><br />
+<span class="index-where">(in <a href="epydoc.docintrospecter._DevNull-class.html" onclick="show_private();">_DevNull</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext-module.html#CONSOLIDATED_DEFLIST_FIELDS">CONSOLIDATED_DEFLIST_FIELDS</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext-module.html">epydoc.markup.restructuredtext</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.gui-module.html#CBUTTON_CONFIG">CBUTTON_CONFIG</a><br />
+<span class="index-where">(in <a href="epydoc.gui-module.html">epydoc.gui</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.log.Logger-class.html#close">close()</a><br />
+<span class="index-where">(in <a href="epydoc.log.Logger-class.html">Logger</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext-module.html#CONSOLIDATED_FIELDS">CONSOLIDATED_FIELDS</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext-module.html">epydoc.markup.restructuredtext</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.checker.DocChecker-class.html#check">check()</a><br />
+<span class="index-where">(in <a href="epydoc.checker.DocChecker-class.html">DocChecker</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.log-module.html#close">close()</a><br />
+<span class="index-where">(in <a href="epydoc.log-module.html">epydoc.log</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#CONST_TAG">CONST_TAG</a><br />
+<span class="index-where">(in <a href="epydoc.markup.pyval_repr.PyvalColorizer-class.html">PyvalColorizer</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.cli-module.html#check_docs">check_docs()</a><br />
+<span class="index-where">(in <a href="epydoc.cli-module.html">epydoc.cli</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#COLLECTION_TYPE_RE">COLLECTION_TYPE_RE</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html">DotGraphUmlClassNode</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.VariableDoc-class.html#container">container</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.VariableDoc-class.html">VariableDoc</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.test-module.html#check_requirements">check_requirements()</a><br />
+<span class="index-where">(in <a href="epydoc.test-module.html">epydoc.test</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#COLON_TAG">COLON_TAG</a><br />
+<span class="index-where">(in <a href="epydoc.markup.pyval_repr.PyvalColorizer-class.html">PyvalColorizer</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.DocIndex-class.html#container">container()</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.DocIndex-class.html">DocIndex</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docstringparser-module.html#check_type_fields">check_type_fields()</a><br />
+<span class="index-where">(in <a href="epydoc.docstringparser-module.html">epydoc.docstringparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.gui-module.html#COLOR_CONFIG">COLOR_CONFIG</a><br />
+<span class="index-where">(in <a href="epydoc.gui-module.html">epydoc.gui</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.DottedName-class.html#container">container()</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.DottedName-class.html">DottedName</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.checker-module.html">checker</a><br />
+<span class="index-where">(in <a href="epydoc-module.html">epydoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#colorize">colorize()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html">PythonSourceColorizer</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#context_name">context_name()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html">PythonSourceColorizer</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.checker.DocChecker-class.html#CLASS">CLASS</a><br />
+<span class="index-where">(in <a href="epydoc.checker.DocChecker-class.html">DocChecker</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#colorize">colorize()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.pyval_repr.PyvalColorizer-class.html">PyvalColorizer</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext.ColorizingError-class.html#CONTEXT_RANGE">CONTEXT_RANGE</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext.ColorizingError-class.html">ColorizingError</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.dotgraph-module.html#CLASS_BG">CLASS_BG</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.dotgraph-module.html">epydoc.docwriter.dotgraph</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.doctest.DoctestColorizer-class.html#colorize_codeblock">colorize_codeblock()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.doctest.DoctestColorizer-class.html">DoctestColorizer</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#contextual_label">contextual_label()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.dotgraph-module.html#class_tree_graph">class_tree_graph()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.dotgraph-module.html">epydoc.docwriter.dotgraph</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.doctest.DoctestColorizer-class.html#colorize_doctest">colorize_doctest()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.doctest.DoctestColorizer-class.html">DoctestColorizer</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.DottedName-class.html#contextualize">contextualize()</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.DottedName-class.html">DottedName</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.ClassDoc-class.html">ClassDoc</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc-module.html">epydoc.apidoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.doctest.DoctestColorizer-class.html#colorize_inline">colorize_inline()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.doctest.DoctestColorizer-class.html">DoctestColorizer</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docparser-module.html#CONTROL_FLOW_KEYWORDS">CONTROL_FLOW_KEYWORDS</a><br />
+<span class="index-where">(in <a href="epydoc.docparser-module.html">epydoc.docparser</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.ClassMethodDoc-class.html">ClassMethodDoc</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc-module.html">epydoc.apidoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.pyval_repr-module.html#colorize_pyval">colorize_pyval()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.pyval_repr-module.html">epydoc.markup.pyval_repr</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.xlink-module.html#create_api_role">create_api_role()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.xlink-module.html">epydoc.docwriter.xlink</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext-module.html#classtree_directive">classtree_directive()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext-module.html">epydoc.markup.restructuredtext</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.pyval_repr.ColorizedPyvalRepr-class.html">ColorizedPyvalRepr</a><br />
+<span class="index-where">(in <a href="epydoc.markup.pyval_repr-module.html">epydoc.markup.pyval_repr</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#CSS_CLASSES">CSS_CLASSES</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html">PythonSourceColorizer</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.test.util-module.html#cleanup_tmp_dir">cleanup_tmp_dir()</a><br />
+<span class="index-where">(in <a href="epydoc.test.util-module.html">epydoc.test.util</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext.ColorizingError-class.html">ColorizingError</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext-module.html">epydoc.markup.epytext</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.cli.TerminalController-class.html#CYAN">CYAN</a><br />
+<span class="index-where">(in <a href="epydoc.cli.TerminalController-class.html">TerminalController</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.xlink.DocUrlGenerator-class.html#clear">clear()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.xlink.DocUrlGenerator-class.html">DocUrlGenerator</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.cli.TerminalController-class.html#COLS">COLS</a><br />
+<span class="index-where">(in <a href="epydoc.cli.TerminalController-class.html">TerminalController</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.gui.GUILogger-class.html#clear">clear()</a><br />
+<span class="index-where">(in <a href="epydoc.gui.GUILogger-class.html">GUILogger</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#COMMA_TAG">COMMA_TAG</a><br />
+<span class="index-where">(in <a href="epydoc.markup.pyval_repr.PyvalColorizer-class.html">PyvalColorizer</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+</tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="D">D</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="epydoc-module.html#DEBUG">DEBUG</a><br />
+<span class="index-where">(in <a href="epydoc-module.html">epydoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.gui.EpydocGUI-class.html#destroy">destroy()</a><br />
+<span class="index-where">(in <a href="epydoc.gui.EpydocGUI-class.html">EpydocGUI</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.doctest.DoctestColorizer-class.html#DOCTEST_EXAMPLE_RE">DOCTEST_EXAMPLE_RE</a><br />
+<span class="index-where">(in <a href="epydoc.markup.doctest.DoctestColorizer-class.html">DoctestColorizer</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.gui-module.html#DEBUG">DEBUG</a><br />
+<span class="index-where">(in <a href="epydoc.gui-module.html">epydoc.gui</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.gui-module.html#DH">DH</a><br />
+<span class="index-where">(in <a href="epydoc.gui-module.html">epydoc.gui</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.doctest.DoctestColorizer-class.html#DOCTEST_RE">DOCTEST_RE</a><br />
+<span class="index-where">(in <a href="epydoc.markup.doctest.DoctestColorizer-class.html">DoctestColorizer</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.log-module.html#DEBUG">DEBUG</a><br />
+<span class="index-where">(in <a href="epydoc.log-module.html">epydoc.log</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext-module.html#digraph_directive">digraph_directive()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext-module.html">epydoc.markup.restructuredtext</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.doctest-module.html#doctest_to_html">doctest_to_html()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.doctest-module.html">epydoc.markup.doctest</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.log-module.html#debug">debug()</a><br />
+<span class="index-where">(in <a href="epydoc.log-module.html">epydoc.log</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#doc_descr">doc_descr()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html">PythonSourceColorizer</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.doctest-module.html#doctest_to_latex">doctest_to_latex()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.doctest-module.html">epydoc.markup.doctest</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext.OptimizedReporter-class.html#debug">debug()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext.OptimizedReporter-class.html">OptimizedReporter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#doc_kind">doc_kind()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.doctest.DoctestColorizer-class.html">DoctestColorizer</a><br />
+<span class="index-where">(in <a href="epydoc.markup.doctest-module.html">epydoc.markup.doctest</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.util-module.html#decode_with_backslashreplace">decode_with_backslashreplace()</a><br />
+<span class="index-where">(in <a href="epydoc.util-module.html">epydoc.util</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#doc_kind">doc_kind()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html">PythonSourceColorizer</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.gui-module.html#document">document()</a><br />
+<span class="index-where">(in <a href="epydoc.gui-module.html">epydoc.gui</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.RoutineDoc-class.html#decorators">decorators</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.RoutineDoc-class.html">RoutineDoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.latex.LatexWriter-class.html#doc_kind">doc_kind()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.latex.LatexWriter-class.html">LatexWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.xlink.DocUrlGenerator-class.html">DocUrlGenerator</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.xlink-module.html">epydoc.docwriter.xlink</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docparser-module.html#DEFAULT_DECORATOR_BEHAVIOR">DEFAULT_DECORATOR_BEHAVIOR</a><br />
+<span class="index-where">(in <a href="epydoc.docparser-module.html">epydoc.docparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docbuilder-module.html">docbuilder</a><br />
+<span class="index-where">(in <a href="epydoc-module.html">epydoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter-module.html">docwriter</a><br />
+<span class="index-where">(in <a href="epydoc-module.html">epydoc</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.cli-module.html#DEFAULT_DOCFORMAT">DEFAULT_DOCFORMAT</a><br />
+<span class="index-where">(in <a href="epydoc.cli-module.html">epydoc.cli</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.checker.DocChecker-class.html">DocChecker</a><br />
+<span class="index-where">(in <a href="epydoc.checker-module.html">epydoc.checker</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.DottedName-class.html#dominates">dominates()</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.DottedName-class.html">DottedName</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docstringparser-module.html#DEFAULT_DOCFORMAT">DEFAULT_DOCFORMAT</a><br />
+<span class="index-where">(in <a href="epydoc.docstringparser-module.html">epydoc.docstringparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.ModuleDoc-class.html#docformat">docformat</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.ModuleDoc-class.html">ModuleDoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.dotgraph-module.html#DOT_COMMAND">DOT_COMMAND</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.dotgraph-module.html">epydoc.docwriter.dotgraph</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.dotgraph.DotGraph-class.html#DEFAULT_EDGE_DEFAULTS">DEFAULT_EDGE_DEFAULTS</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.dotgraph.DotGraph-class.html">DotGraph</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.cli-module.html#DOCFORMATS">DOCFORMATS</a><br />
+<span class="index-where">(in <a href="epydoc.cli-module.html">epydoc.cli</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.dotgraph-module.html">dotgraph</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter-module.html">epydoc.docwriter</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docbuilder-module.html#DEFAULT_MERGE_PRECEDENCE">DEFAULT_MERGE_PRECEDENCE</a><br />
+<span class="index-where">(in <a href="epydoc.docbuilder-module.html">epydoc.docbuilder</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.DocIndex-class.html">DocIndex</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc-module.html">epydoc.apidoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.dotgraph.DotGraph-class.html">DotGraph</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.dotgraph-module.html">epydoc.docwriter.dotgraph</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.dotgraph.DotGraph-class.html#DEFAULT_NODE_DEFAULTS">DEFAULT_NODE_DEFAULTS</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.dotgraph.DotGraph-class.html">DotGraph</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docintrospecter-module.html">docintrospecter</a><br />
+<span class="index-where">(in <a href="epydoc-module.html">epydoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext.dotgraph-class.html">dotgraph</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext-module.html">epydoc.markup.restructuredtext</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext._EpydocReader-class.html#default_transforms">default_transforms</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext._EpydocReader-class.html">_EpydocReader</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#doclink">doclink()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html">PythonSourceColorizer</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.dotgraph.DotGraphEdge-class.html">DotGraphEdge</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.dotgraph-module.html">epydoc.docwriter.dotgraph</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.ValueDoc-class.html#defining_module">defining_module</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.ValueDoc-class.html">ValueDoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docparser-module.html">docparser</a><br />
+<span class="index-where">(in <a href="epydoc-module.html">epydoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.dotgraph.DotGraphNode-class.html">DotGraphNode</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.dotgraph-module.html">epydoc.docwriter.dotgraph</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.VariableDoc-class.html#defining_module">defining_module</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.VariableDoc-class.html">VariableDoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.APIDoc-class.html#docs_extracted_by">docs_extracted_by</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.APIDoc-class.html">APIDoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html">DotGraphUmlClassNode</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.dotgraph-module.html">epydoc.docwriter.dotgraph</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docparser-module.html#del_variable">del_variable()</a><br />
+<span class="index-where">(in <a href="epydoc.docparser-module.html">epydoc.docparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.APIDoc-class.html#docstring">docstring</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.APIDoc-class.html">APIDoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.dotgraph.DotGraphUmlModuleNode-class.html">DotGraphUmlModuleNode</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.dotgraph-module.html">epydoc.docwriter.dotgraph</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext._EpydocHTMLTranslator-class.html#depart_document">depart_document()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext._EpydocHTMLTranslator-class.html" onclick="show_private();">_EpydocHTMLTranslator</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.APIDoc-class.html#docstring_lineno">docstring_lineno</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.APIDoc-class.html">APIDoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docparser-module.html#dotted_names_in">dotted_names_in()</a><br />
+<span class="index-where">(in <a href="epydoc.docparser-module.html">epydoc.docparser</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext._EpydocLaTeXTranslator-class.html#depart_document">depart_document()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext._EpydocLaTeXTranslator-class.html" onclick="show_private();">_EpydocLaTeXTranslator</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#docstring_to_html">docstring_to_html()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.DottedName-class.html">DottedName</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc-module.html">epydoc.apidoc</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext._TermsExtractor-class.html#depart_emphasis">depart_emphasis()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext._TermsExtractor-class.html" onclick="show_private();">_TermsExtractor</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.latex.LatexWriter-class.html#docstring_to_latex">docstring_to_latex()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.latex.LatexWriter-class.html">LatexWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.cli.TerminalController-class.html#DOWN">DOWN</a><br />
+<span class="index-where">(in <a href="epydoc.cli.TerminalController-class.html">TerminalController</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.APIDoc-class.html#descr">descr</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.APIDoc-class.html">APIDoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.log-module.html#DOCSTRING_WARNING">DOCSTRING_WARNING</a><br />
+<span class="index-where">(in <a href="epydoc.log-module.html">epydoc.log</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.gui-module.html#DOWN_GIF">DOWN_GIF</a><br />
+<span class="index-where">(in <a href="epydoc.gui-module.html">epydoc.gui</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.checker.DocChecker-class.html#DESCR">DESCR</a><br />
+<span class="index-where">(in <a href="epydoc.checker.DocChecker-class.html">DocChecker</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.log-module.html#docstring_warning">docstring_warning()</a><br />
+<span class="index-where">(in <a href="epydoc.log-module.html">epydoc.log</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext.Token-class.html#DTBLOCK">DTBLOCK</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext.Token-class.html">Token</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.cli-module.html#descr">descr</a><br />
+<span class="index-where">(in <a href="epydoc.cli-module.html">epydoc.cli</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docstringparser.DocstringField-class.html">DocstringField</a><br />
+<span class="index-where">(in <a href="epydoc.docstringparser-module.html">epydoc.docstringparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.gui-module.html#DW">DW</a><br />
+<span class="index-where">(in <a href="epydoc.gui-module.html">epydoc.gui</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#descr">descr()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.DocstringLinker-class.html">DocstringLinker</a><br />
+<span class="index-where">(in <a href="epydoc.markup-module.html">epydoc.markup</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.gui-module.html#DX">DX</a><br />
+<span class="index-where">(in <a href="epydoc.gui-module.html">epydoc.gui</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.ParseError-class.html#descr">descr()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.ParseError-class.html">ParseError</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docstringparser-module.html">docstringparser</a><br />
+<span class="index-where">(in <a href="epydoc-module.html">epydoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.gui-module.html#DY">DY</a><br />
+<span class="index-where">(in <a href="epydoc.gui-module.html">epydoc.gui</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext.ColorizingError-class.html#descr">descr()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext.ColorizingError-class.html">ColorizingError</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.doctest-module.html">doctest</a><br />
+<span class="index-where">(in <a href="epydoc.markup-module.html">epydoc.markup</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#description">description()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.doctest.DoctestColorizer-class.html#DOCTEST_DIRECTIVE_RE">DOCTEST_DIRECTIVE_RE</a><br />
+<span class="index-where">(in <a href="epydoc.markup.doctest.DoctestColorizer-class.html">DoctestColorizer</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+</tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="E">E</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext.Element-class.html">Element</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext-module.html">epydoc.markup.epytext</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.cli.ConsoleLogger-class.html#end_progress">end_progress()</a><br />
+<span class="index-where">(in <a href="epydoc.cli.ConsoleLogger-class.html">ConsoleLogger</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.log-module.html#ERROR">ERROR</a><br />
+<span class="index-where">(in <a href="epydoc.log-module.html">epydoc.log</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#ELLIPSIS">ELLIPSIS</a><br />
+<span class="index-where">(in <a href="epydoc.markup.pyval_repr.PyvalColorizer-class.html">PyvalColorizer</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.cli.UnifiedProgressConsoleLogger-class.html#end_progress">end_progress()</a><br />
+<span class="index-where">(in <a href="epydoc.cli.UnifiedProgressConsoleLogger-class.html">UnifiedProgressConsoleLogger</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.log-module.html#error">error()</a><br />
+<span class="index-where">(in <a href="epydoc.log-module.html">epydoc.log</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.cli.HTMLLogger-class.html#END_BLOCK">END_BLOCK</a><br />
+<span class="index-where">(in <a href="epydoc.cli.HTMLLogger-class.html">HTMLLogger</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.gui.GUILogger-class.html#end_progress">end_progress()</a><br />
+<span class="index-where">(in <a href="epydoc.gui.GUILogger-class.html">GUILogger</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.gui-module.html#ERROR_COLOR">ERROR_COLOR</a><br />
+<span class="index-where">(in <a href="epydoc.gui-module.html">epydoc.gui</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.cli.ConsoleLogger-class.html#end_block">end_block()</a><br />
+<span class="index-where">(in <a href="epydoc.cli.ConsoleLogger-class.html">ConsoleLogger</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.log.Logger-class.html#end_progress">end_progress()</a><br />
+<span class="index-where">(in <a href="epydoc.log.Logger-class.html">Logger</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#ESCAPE_UNICODE">ESCAPE_UNICODE</a><br />
+<span class="index-where">(in <a href="epydoc.markup.pyval_repr.PyvalColorizer-class.html">PyvalColorizer</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.cli.HTMLLogger-class.html#end_block">end_block()</a><br />
+<span class="index-where">(in <a href="epydoc.cli.HTMLLogger-class.html">HTMLLogger</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.log-module.html#end_progress">end_progress()</a><br />
+<span class="index-where">(in <a href="epydoc.log-module.html">epydoc.log</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.doctest.DoctestColorizer-class.html#EXCEPT_RE">EXCEPT_RE</a><br />
+<span class="index-where">(in <a href="epydoc.markup.doctest.DoctestColorizer-class.html">DoctestColorizer</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.gui.GUILogger-class.html#end_block">end_block()</a><br />
+<span class="index-where">(in <a href="epydoc.gui.GUILogger-class.html">GUILogger</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.gui-module.html#ENTRY_CONFIG">ENTRY_CONFIG</a><br />
+<span class="index-where">(in <a href="epydoc.gui-module.html">epydoc.gui</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.RoutineDoc-class.html#exception_descrs">exception_descrs</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.RoutineDoc-class.html">RoutineDoc</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.log.Logger-class.html#end_block">end_block()</a><br />
+<span class="index-where">(in <a href="epydoc.log.Logger-class.html">Logger</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.gui-module.html#ENTRYSELECT_COLOR">ENTRYSELECT_COLOR</a><br />
+<span class="index-where">(in <a href="epydoc.gui-module.html">epydoc.gui</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docstringparser-module.html#EXCEPTION_TAGS">EXCEPTION_TAGS</a><br />
+<span class="index-where">(in <a href="epydoc.docstringparser-module.html">epydoc.docstringparser</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.log-module.html#end_block">end_block()</a><br />
+<span class="index-where">(in <a href="epydoc.log-module.html">epydoc.log</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc-module.html">epydoc</a></td>
+<td width="33%" class="link-index"><a href="epydoc.docstringparser-module.html#EXPECTED_ARG">EXPECTED_ARG</a><br />
+<span class="index-where">(in <a href="epydoc.docstringparser-module.html">epydoc.docstringparser</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#END_DEF_BLOCK">END_DEF_BLOCK</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html">PythonSourceColorizer</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.gui.EpydocGUI-class.html">EpydocGUI</a><br />
+<span class="index-where">(in <a href="epydoc.gui-module.html">epydoc.gui</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docstringparser-module.html#EXPECTED_SINGLE_ARG">EXPECTED_SINGLE_ARG</a><br />
+<span class="index-where">(in <a href="epydoc.docstringparser-module.html">epydoc.docstringparser</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docparser-module.html#END_GROUP_MARKER">END_GROUP_MARKER</a><br />
+<span class="index-where">(in <a href="epydoc.docparser-module.html">epydoc.docparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext-module.html">epytext</a><br />
+<span class="index-where">(in <a href="epydoc.markup-module.html">epydoc.markup</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.APIDoc-class.html#extra_docstring_fields">extra_docstring_fields</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.APIDoc-class.html">APIDoc</a>)</span></td>
+</tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="F">F</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.log-module.html#FATAL">FATAL</a><br />
+<span class="index-where">(in <a href="epydoc.log-module.html">epydoc.log</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docparser-module.html#find_base">find_base()</a><br />
+<span class="index-where">(in <a href="epydoc.docparser-module.html">epydoc.docparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.cli.TerminalController-class.html#FORCE_SIMPLE_TERM">FORCE_SIMPLE_TERM</a><br />
+<span class="index-where">(in <a href="epydoc.cli.TerminalController-class.html">TerminalController</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.log-module.html#fatal">fatal()</a><br />
+<span class="index-where">(in <a href="epydoc.log-module.html">epydoc.log</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#find_line_offsets">find_line_offsets()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html">PythonSourceColorizer</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.PropertyDoc-class.html#fset">fset</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.PropertyDoc-class.html">PropertyDoc</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.PropertyDoc-class.html#fdel">fdel</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.PropertyDoc-class.html">PropertyDoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docbuilder-module.html#find_overrides">find_overrides()</a><br />
+<span class="index-where">(in <a href="epydoc.docbuilder-module.html">epydoc.docbuilder</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.test.util-module.html#fun_to_plain">fun_to_plain()</a><br />
+<span class="index-where">(in <a href="epydoc.test.util-module.html">epydoc.test.util</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.PropertyDoc-class.html#fget">fget</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.PropertyDoc-class.html">PropertyDoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#find_tree_width">find_tree_width()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.checker.DocChecker-class.html#FUNC">FUNC</a><br />
+<span class="index-where">(in <a href="epydoc.checker.DocChecker-class.html">DocChecker</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.Field-class.html">Field</a><br />
+<span class="index-where">(in <a href="epydoc.markup-module.html">epydoc.markup</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docparser-module.html#flatten">flatten()</a><br />
+<span class="index-where">(in <a href="epydoc.docparser-module.html">epydoc.docparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#func_arg">func_arg()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.ModuleDoc-class.html#filename">filename</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.ModuleDoc-class.html">ModuleDoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docintrospecter._DevNull-class.html#flush">flush()</a><br />
+<span class="index-where">(in <a href="epydoc.docintrospecter._DevNull-class.html" onclick="show_private();">_DevNull</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.latex.LatexWriter-class.html#func_arg">func_arg()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.latex.LatexWriter-class.html">LatexWriter</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.cli.HTMLLogger-class.html#FILENAME">FILENAME</a><br />
+<span class="index-where">(in <a href="epydoc.cli.HTMLLogger-class.html">HTMLLogger</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.plaintext.PlaintextWriter-class.html#fmt_arg">fmt_arg()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.plaintext.PlaintextWriter-class.html">PlaintextWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#function_signature">function_signature()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.DocIndex-class.html#find">find()</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.DocIndex-class.html">DocIndex</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.cli.HTMLLogger-class.html#FOOTER">FOOTER</a><br />
+<span class="index-where">(in <a href="epydoc.cli.HTMLLogger-class.html">HTMLLogger</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.latex.LatexWriter-class.html#function_signature">function_signature()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.latex.LatexWriter-class.html">LatexWriter</a>)</span></td>
+</tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="G">G</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#GENERIC_OBJECT_RE">GENERIC_OBJECT_RE</a><br />
+<span class="index-where">(in <a href="epydoc.markup.pyval_repr.PyvalColorizer-class.html">PyvalColorizer</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docparser-module.html#get_module_encoding">get_module_encoding()</a><br />
+<span class="index-where">(in <a href="epydoc.docparser-module.html">epydoc.docparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext-module.html#GRAPH_TYPES">GRAPH_TYPES</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext-module.html">epydoc.markup.epytext</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.GenericValueDoc-class.html">GenericValueDoc</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc-module.html">epydoc.apidoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext._EpydocReader-class.html#get_transforms">get_transforms()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext._EpydocReader-class.html" onclick="show_private();">_EpydocReader</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.cli.TerminalController-class.html#GREEN">GREEN</a><br />
+<span class="index-where">(in <a href="epydoc.cli.TerminalController-class.html">TerminalController</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#GET_ANCHOR_JS">GET_ANCHOR_JS</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.xlink.DocUrlGenerator-class.html#get_url">get_url()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.xlink.DocUrlGenerator-class.html">DocUrlGenerator</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.NamespaceDoc-class.html#group_names">group_names()</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.NamespaceDoc-class.html">NamespaceDoc</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docintrospecter-module.html#get_canonical_name">get_canonical_name()</a><br />
+<span class="index-where">(in <a href="epydoc.docintrospecter-module.html">epydoc.docintrospecter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.xlink.UrlGenerator-class.html#get_url">get_url()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.xlink.UrlGenerator-class.html">UrlGenerator</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.NamespaceDoc-class.html#group_specs">group_specs</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.NamespaceDoc-class.html">NamespaceDoc</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.xlink.UrlGenerator-class.html#get_canonical_name">get_canonical_name()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.xlink.UrlGenerator-class.html">UrlGenerator</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.xlink.VoidUrlGenerator-class.html#get_url">get_url()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.xlink.VoidUrlGenerator-class.html">VoidUrlGenerator</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#GROUP_TAG">GROUP_TAG</a><br />
+<span class="index-where">(in <a href="epydoc.markup.pyval_repr.PyvalColorizer-class.html">PyvalColorizer</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docintrospecter-module.html#get_containing_module">get_containing_module()</a><br />
+<span class="index-where">(in <a href="epydoc.docintrospecter-module.html">epydoc.docintrospecter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.DocIndex-class.html#get_valdoc">get_valdoc()</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.DocIndex-class.html">DocIndex</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#GUESS_LINK_TARGETS">GUESS_LINK_TARGETS</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html">PythonSourceColorizer</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#GET_COOKIE_JS">GET_COOKIE_JS</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docintrospecter-module.html#get_value_from_filename">get_value_from_filename()</a><br />
+<span class="index-where">(in <a href="epydoc.docintrospecter-module.html">epydoc.docintrospecter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.gui-module.html">gui</a><br />
+<span class="index-where">(in <a href="epydoc-module.html">epydoc</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docstringparser-module.html#get_docformat">get_docformat()</a><br />
+<span class="index-where">(in <a href="epydoc.docstringparser-module.html">epydoc.docstringparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docintrospecter-module.html#get_value_from_name">get_value_from_name()</a><br />
+<span class="index-where">(in <a href="epydoc.docintrospecter-module.html">epydoc.docintrospecter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.gui-module.html#gui">gui()</a><br />
+<span class="index-where">(in <a href="epydoc.gui-module.html">epydoc.gui</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docintrospecter-module.html#get_docstring">get_docstring()</a><br />
+<span class="index-where">(in <a href="epydoc.docintrospecter-module.html">epydoc.docintrospecter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docintrospecter-module.html#get_value_from_scriptname">get_value_from_scriptname()</a><br />
+<span class="index-where">(in <a href="epydoc.docintrospecter-module.html">epydoc.docintrospecter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.gui-module.html#GUIERROR_COLOR">GUIERROR_COLOR</a><br />
+<span class="index-where">(in <a href="epydoc.gui-module.html">epydoc.gui</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.dotgraph-module.html#get_dot_version">get_dot_version()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.dotgraph-module.html">epydoc.docwriter.dotgraph</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.DocIndex-class.html#get_vardoc">get_vardoc()</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.DocIndex-class.html">DocIndex</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.gui.GUILogger-class.html">GUILogger</a><br />
+<span class="index-where">(in <a href="epydoc.gui-module.html">epydoc.gui</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.latex.LatexWriter-class.html#get_latex_encoding">get_latex_encoding()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.latex.LatexWriter-class.html">LatexWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext.dotgraph-class.html#graph">graph()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext.dotgraph-class.html">dotgraph</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docparser-module.html#get_lhs_parent">get_lhs_parent()</a><br />
+<span class="index-where">(in <a href="epydoc.docparser-module.html">epydoc.docparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.cli-module.html#GRAPH_TYPES">GRAPH_TYPES</a><br />
+<span class="index-where">(in <a href="epydoc.cli-module.html">epydoc.cli</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+</tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="H">H</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html#handle_consolidated_bullet_list">handle_consolidated_bullet_list()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html" onclick="show_private();">_SplitFieldsTranslator</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext.Token-class.html#HEADING">HEADING</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext.Token-class.html">Token</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html_css-module.html">html_css</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter-module.html">epydoc.docwriter</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html#handle_consolidated_definition_list">handle_consolidated_definition_list()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html" onclick="show_private();">_SplitFieldsTranslator</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.cli-module.html#HELP_TOPICS">HELP_TOPICS</a><br />
+<span class="index-where">(in <a href="epydoc.cli-module.html">epydoc.cli</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html_help-module.html">html_help</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter-module.html">epydoc.docwriter</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html#handle_consolidated_field">handle_consolidated_field()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html" onclick="show_private();">_SplitFieldsTranslator</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#HIDE_PRIVATE_JS">HIDE_PRIVATE_JS</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html_help-module.html#HTML_HELP">HTML_HELP</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html_help-module.html">epydoc.docwriter.html_help</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#handle_line">handle_line()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html">PythonSourceColorizer</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#href">href()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.doctest.HTMLDoctestColorizer-class.html">HTMLDoctestColorizer</a><br />
+<span class="index-where">(in <a href="epydoc.markup.doctest-module.html">epydoc.markup.doctest</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docparser-module.html#handle_special_module_vars">handle_special_module_vars()</a><br />
+<span class="index-where">(in <a href="epydoc.docparser-module.html">epydoc.docparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.latex.LatexWriter-class.html#HRULE">HRULE</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.latex.LatexWriter-class.html">LatexWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.cli.HTMLLogger-class.html">HTMLLogger</a><br />
+<span class="index-where">(in <a href="epydoc.cli-module.html">epydoc.cli</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.cli.HTMLLogger-class.html#HEADER">HEADER</a><br />
+<span class="index-where">(in <a href="epydoc.cli.HTMLLogger-class.html">HTMLLogger</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html-module.html">html</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter-module.html">epydoc.docwriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html-module.html">epydoc.docwriter.html</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.gui-module.html#HEADER_COLOR">HEADER_COLOR</a><br />
+<span class="index-where">(in <a href="epydoc.gui-module.html">epydoc.gui</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html_colorize-module.html">html_colorize</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter-module.html">epydoc.docwriter</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+</tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="I">I</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#IMAGES">IMAGES</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.NamespaceDoc-class.html#init_sorted_variables">init_sorted_variables()</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.NamespaceDoc-class.html">NamespaceDoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#is_docstring">is_docstring()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html">PythonSourceColorizer</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.dotgraph-module.html#import_graph">import_graph()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.dotgraph-module.html">epydoc.docwriter.dotgraph</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.ModuleDoc-class.html#init_submodule_groups">init_submodule_groups()</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.ModuleDoc-class.html">ModuleDoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.ClassDoc-class.html#is_exception">is_exception()</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.ClassDoc-class.html">ClassDoc</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docparser-module.html#IMPORT_HANDLING">IMPORT_HANDLING</a><br />
+<span class="index-where">(in <a href="epydoc.docparser-module.html">epydoc.docparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.NamespaceDoc-class.html#init_variable_groups">init_variable_groups()</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.NamespaceDoc-class.html">NamespaceDoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.ParseError-class.html#is_fatal">is_fatal()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.ParseError-class.html">ParseError</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.gui-module.html#IMPORT_PROGRESS">IMPORT_PROGRESS</a><br />
+<span class="index-where">(in <a href="epydoc.gui-module.html">epydoc.gui</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docstringparser-module.html#initialize_api_doc">initialize_api_doc()</a><br />
+<span class="index-where">(in <a href="epydoc.docstringparser-module.html">epydoc.docstringparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docintrospecter-module.html#is_future_feature">is_future_feature()</a><br />
+<span class="index-where">(in <a href="epydoc.docintrospecter-module.html">epydoc.docintrospecter</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docparser-module.html#IMPORT_STAR_HANDLING">IMPORT_STAR_HANDLING</a><br />
+<span class="index-where">(in <a href="epydoc.docparser-module.html">epydoc.docparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docintrospecter-module.html#introspect_class">introspect_class()</a><br />
+<span class="index-where">(in <a href="epydoc.docintrospecter-module.html">epydoc.docintrospecter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docintrospecter-module.html#is_getset">is_getset()</a><br />
+<span class="index-where">(in <a href="epydoc.docintrospecter-module.html">epydoc.docintrospecter</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.VariableDoc-class.html#imported_from">imported_from</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.VariableDoc-class.html">VariableDoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docintrospecter-module.html#introspect_docs">introspect_docs()</a><br />
+<span class="index-where">(in <a href="epydoc.docintrospecter-module.html">epydoc.docintrospecter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.VariableDoc-class.html#is_imported">is_imported</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.VariableDoc-class.html">VariableDoc</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext-module.html#importgraph_directive">importgraph_directive()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext-module.html">epydoc.markup.restructuredtext</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docintrospecter-module.html#introspect_docstring_lineno">introspect_docstring_lineno()</a><br />
+<span class="index-where">(in <a href="epydoc.docintrospecter-module.html">epydoc.docintrospecter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.VariableDoc-class.html#is_instvar">is_instvar</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.VariableDoc-class.html">VariableDoc</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.ModuleDoc-class.html#imports">imports</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.ModuleDoc-class.html">ModuleDoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docintrospecter-module.html#introspect_module">introspect_module()</a><br />
+<span class="index-where">(in <a href="epydoc.docintrospecter-module.html">epydoc.docintrospecter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docintrospecter-module.html#is_member">is_member()</a><br />
+<span class="index-where">(in <a href="epydoc.docintrospecter-module.html">epydoc.docintrospecter</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.ConcatenatedDocstring-class.html#index_terms">index_terms()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.ConcatenatedDocstring-class.html">ConcatenatedDocstring</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docintrospecter-module.html#introspect_other">introspect_other()</a><br />
+<span class="index-where">(in <a href="epydoc.docintrospecter-module.html">epydoc.docintrospecter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.util-module.html#is_module_file">is_module_file()</a><br />
+<span class="index-where">(in <a href="epydoc.util-module.html">epydoc.util</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.ParsedDocstring-class.html#index_terms">index_terms()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.ParsedDocstring-class.html">ParsedDocstring</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docintrospecter-module.html#introspect_property">introspect_property()</a><br />
+<span class="index-where">(in <a href="epydoc.docintrospecter-module.html">epydoc.docintrospecter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.ClassDoc-class.html#is_newstyle_class">is_newstyle_class()</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.ClassDoc-class.html">ClassDoc</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#index_terms">index_terms()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html">ParsedEpytextDocstring</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docintrospecter-module.html#introspect_routine">introspect_routine()</a><br />
+<span class="index-where">(in <a href="epydoc.docintrospecter-module.html">epydoc.docintrospecter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.ModuleDoc-class.html#is_package">is_package</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.ModuleDoc-class.html">ModuleDoc</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html#index_terms">index_terms()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html">ParsedRstDocstring</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.DottedName.InvalidDottedName-class.html">InvalidDottedName</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.DottedName-class.html">DottedName</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.util-module.html#is_package_dir">is_package_dir()</a><br />
+<span class="index-where">(in <a href="epydoc.util-module.html">epydoc.util</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.xlink.UrlGenerator.IndexAmbiguous-class.html">IndexAmbiguous</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.xlink.UrlGenerator-class.html">UrlGenerator</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.VariableDoc-class.html#is_alias">is_alias</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.VariableDoc-class.html">VariableDoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docintrospecter-module.html#is_property">is_property()</a><br />
+<span class="index-where">(in <a href="epydoc.docintrospecter-module.html">epydoc.docintrospecter</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.latex.LatexWriter-class.html#indexterm">indexterm()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.latex.LatexWriter-class.html">LatexWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docintrospecter-module.html#is_classmethod">is_classmethod()</a><br />
+<span class="index-where">(in <a href="epydoc.docintrospecter-module.html">epydoc.docintrospecter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.VariableDoc-class.html#is_public">is_public</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.VariableDoc-class.html">VariableDoc</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.log-module.html#INFO">INFO</a><br />
+<span class="index-where">(in <a href="epydoc.log-module.html">epydoc.log</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.APIDoc-class.html#is_detailed">is_detailed()</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.APIDoc-class.html">APIDoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.util-module.html#is_pyname">is_pyname()</a><br />
+<span class="index-where">(in <a href="epydoc.util-module.html">epydoc.util</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.log-module.html#info">info()</a><br />
+<span class="index-where">(in <a href="epydoc.log-module.html">epydoc.log</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.GenericValueDoc-class.html#is_detailed">is_detailed()</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.GenericValueDoc-class.html">GenericValueDoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.pyval_repr-module.html#is_re_pattern">is_re_pattern()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.pyval_repr-module.html">epydoc.markup.pyval_repr</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.dotgraph-module.html#INH_LINK_COLOR">INH_LINK_COLOR</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.dotgraph-module.html">epydoc.docwriter.dotgraph</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.NamespaceDoc-class.html#is_detailed">is_detailed()</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.NamespaceDoc-class.html">NamespaceDoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.util-module.html#is_src_filename">is_src_filename()</a><br />
+<span class="index-where">(in <a href="epydoc.util-module.html">epydoc.util</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docbuilder-module.html#inherit_docs">inherit_docs()</a><br />
+<span class="index-where">(in <a href="epydoc.docbuilder-module.html">epydoc.docbuilder</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.PropertyDoc-class.html#is_detailed">is_detailed()</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.PropertyDoc-class.html">PropertyDoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docintrospecter-module.html#is_staticmethod">is_staticmethod()</a><br />
+<span class="index-where">(in <a href="epydoc.docintrospecter-module.html">epydoc.docintrospecter</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.cli-module.html#INHERITANCE_STYLES">INHERITANCE_STYLES</a><br />
+<span class="index-where">(in <a href="epydoc.cli-module.html">epydoc.cli</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.RoutineDoc-class.html#is_detailed">is_detailed()</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.RoutineDoc-class.html">RoutineDoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.ClassDoc-class.html#is_type">is_type()</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.ClassDoc-class.html">ClassDoc</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docparser-module.html#init_arglist">init_arglist()</a><br />
+<span class="index-where">(in <a href="epydoc.docparser-module.html">epydoc.docparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.VariableDoc-class.html#is_detailed">is_detailed()</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.VariableDoc-class.html">VariableDoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docintrospecter-module.html#isclass">isclass()</a><br />
+<span class="index-where">(in <a href="epydoc.docintrospecter-module.html">epydoc.docintrospecter</a>)</span></td>
+</tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="J">J</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.javadoc-module.html">javadoc</a><br />
+<span class="index-where">(in <a href="epydoc.markup-module.html">epydoc.markup</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+<td width="33%" class="link-index"> </td>
+</tr>
+<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="K">K</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.cli-module.html#key">key</a><br />
+<span class="index-where">(in <a href="epydoc.cli-module.html">epydoc.cli</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.RoutineDoc-class.html#kwarg">kwarg</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.RoutineDoc-class.html">RoutineDoc</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+</tr>
+<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="L">L</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.latex.LatexWriter-class.html#label">label()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.latex.LatexWriter-class.html">LatexWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docparser-module.html#lhs_is_instvar">lhs_is_instvar()</a><br />
+<span class="index-where">(in <a href="epydoc.docparser-module.html">epydoc.docparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.log-module.html">log</a><br />
+<span class="index-where">(in <a href="epydoc-module.html">epydoc</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#labelled_list_item">labelled_list_item()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.RoutineDoc-class.html#lineno">lineno</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.RoutineDoc-class.html">RoutineDoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.cli.ConsoleLogger-class.html#log">log()</a><br />
+<span class="index-where">(in <a href="epydoc.cli.ConsoleLogger-class.html">ConsoleLogger</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.latex-module.html">latex</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter-module.html">epydoc.docwriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#lineno_to_html">lineno_to_html()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html">PythonSourceColorizer</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.cli.HTMLLogger-class.html#log">log()</a><br />
+<span class="index-where">(in <a href="epydoc.cli.HTMLLogger-class.html">HTMLLogger</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.latex.LatexWriter-class.html#latex_encodings">latex_encodings</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.latex.LatexWriter-class.html">LatexWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.ParseError-class.html#linenum">linenum()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.ParseError-class.html">ParseError</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.gui.GUILogger-class.html#log">log()</a><br />
+<span class="index-where">(in <a href="epydoc.gui.GUILogger-class.html">GUILogger</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext-module.html#latex_head_prefix">latex_head_prefix()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext-module.html">epydoc.markup.restructuredtext</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#LINEWRAP">LINEWRAP</a><br />
+<span class="index-where">(in <a href="epydoc.markup.pyval_repr.PyvalColorizer-class.html">PyvalColorizer</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.log.Logger-class.html#log">log()</a><br />
+<span class="index-where">(in <a href="epydoc.log.Logger-class.html">Logger</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.doctest.LaTeXDoctestColorizer-class.html">LaTeXDoctestColorizer</a><br />
+<span class="index-where">(in <a href="epydoc.markup.doctest-module.html">epydoc.markup.doctest</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.dotgraph.DotGraph-class.html#link">link()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.dotgraph.DotGraph-class.html">DotGraph</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.log.SimpleLogger-class.html#log">log()</a><br />
+<span class="index-where">(in <a href="epydoc.log.SimpleLogger-class.html">SimpleLogger</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.latex.LatexWriter-class.html">LatexWriter</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.latex-module.html">epydoc.docwriter.latex</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#link_attributes">link_attributes()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html">DotGraphUmlClassNode</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.log.Logger-class.html">Logger</a><br />
+<span class="index-where">(in <a href="epydoc.log-module.html">epydoc.log</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext.Token-class.html#LBLOCK">LBLOCK</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext.Token-class.html">Token</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docbuilder-module.html#link_imports">link_imports()</a><br />
+<span class="index-where">(in <a href="epydoc.docbuilder-module.html">epydoc.docbuilder</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docparser-module.html#lookup_name">lookup_name()</a><br />
+<span class="index-where">(in <a href="epydoc.docparser-module.html">epydoc.docparser</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.cli.TerminalController-class.html#LEFT">LEFT</a><br />
+<span class="index-where">(in <a href="epydoc.cli.TerminalController-class.html">TerminalController</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.gui-module.html#LISTBOX_CONFIG">LISTBOX_CONFIG</a><br />
+<span class="index-where">(in <a href="epydoc.gui-module.html">epydoc.gui</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docparser-module.html#lookup_value">lookup_value()</a><br />
+<span class="index-where">(in <a href="epydoc.docparser-module.html">epydoc.docparser</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.gui-module.html#LEFT_GIF">LEFT_GIF</a><br />
+<span class="index-where">(in <a href="epydoc.gui-module.html">epydoc.gui</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.xlink.DocUrlGenerator-class.html#load_index">load_index()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.xlink.DocUrlGenerator-class.html">DocUrlGenerator</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docparser-module.html#lookup_variable">lookup_variable()</a><br />
+<span class="index-where">(in <a href="epydoc.docparser-module.html">epydoc.docparser</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#LETTERS">LETTERS</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.xlink.DocUrlGenerator-class.html#load_records">load_records()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.xlink.DocUrlGenerator-class.html">DocUrlGenerator</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+</tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="M">M</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.cli.TerminalController-class.html#MAGENTA">MAGENTA</a><br />
+<span class="index-where">(in <a href="epydoc.cli.TerminalController-class.html">TerminalController</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.APIDoc-class.html#merge_and_overwrite">merge_and_overwrite()</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.APIDoc-class.html">APIDoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docbuilder-module.html#merge_value">merge_value()</a><br />
+<span class="index-where">(in <a href="epydoc.docbuilder-module.html">epydoc.docbuilder</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.cli-module.html#main">main()</a><br />
+<span class="index-where">(in <a href="epydoc.cli-module.html">epydoc.cli</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docbuilder-module.html#merge_attribute">merge_attribute()</a><br />
+<span class="index-where">(in <a href="epydoc.docbuilder-module.html">epydoc.docbuilder</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docbuilder-module.html#merge_variables">merge_variables()</a><br />
+<span class="index-where">(in <a href="epydoc.docbuilder-module.html">epydoc.docbuilder</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.test-module.html#main">main()</a><br />
+<span class="index-where">(in <a href="epydoc.test-module.html">epydoc.test</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docbuilder-module.html#merge_bases">merge_bases()</a><br />
+<span class="index-where">(in <a href="epydoc.docbuilder-module.html">epydoc.docbuilder</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.cli.HTMLLogger-class.html#MESSAGE">MESSAGE</a><br />
+<span class="index-where">(in <a href="epydoc.cli.HTMLLogger-class.html">HTMLLogger</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.gui.EpydocGUI-class.html#mainloop">mainloop()</a><br />
+<span class="index-where">(in <a href="epydoc.gui.EpydocGUI-class.html">EpydocGUI</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docbuilder-module.html#merge_docs">merge_docs()</a><br />
+<span class="index-where">(in <a href="epydoc.docbuilder-module.html">epydoc.docbuilder</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.gui-module.html#MESSAGE_COLOR">MESSAGE_COLOR</a><br />
+<span class="index-where">(in <a href="epydoc.gui-module.html">epydoc.gui</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#MAPPING_TO_COLLECTION_TYPE_RE">MAPPING_TO_COLLECTION_TYPE_RE</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html">DotGraphUmlClassNode</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docbuilder-module.html#merge_docs_extracted_by">merge_docs_extracted_by()</a><br />
+<span class="index-where">(in <a href="epydoc.docbuilder-module.html">epydoc.docbuilder</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.APIDoc-class.html#metadata">metadata</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.APIDoc-class.html">APIDoc</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#MAPPING_TYPE_RE">MAPPING_TYPE_RE</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html">DotGraphUmlClassNode</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docbuilder-module.html#merge_docstring">merge_docstring()</a><br />
+<span class="index-where">(in <a href="epydoc.docbuilder-module.html">epydoc.docbuilder</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#METADATA_INDICES">METADATA_INDICES</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.pyval_repr._ColorizerState-class.html#mark">mark()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.pyval_repr._ColorizerState-class.html" onclick="show_private();">_ColorizerState</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docbuilder-module.html#merge_fdel">merge_fdel()</a><br />
+<span class="index-where">(in <a href="epydoc.docbuilder-module.html">epydoc.docbuilder</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.checker.DocChecker-class.html#MODULE">MODULE</a><br />
+<span class="index-where">(in <a href="epydoc.checker.DocChecker-class.html">DocChecker</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#mark_def">mark_def()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html">PythonSourceColorizer</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docbuilder-module.html#merge_fget">merge_fget()</a><br />
+<span class="index-where">(in <a href="epydoc.docbuilder-module.html">epydoc.docbuilder</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.dotgraph-module.html#MODULE_BG">MODULE_BG</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.dotgraph-module.html">epydoc.docwriter.dotgraph</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup-module.html">markup</a><br />
+<span class="index-where">(in <a href="epydoc-module.html">epydoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docbuilder-module.html#merge_fset">merge_fset()</a><br />
+<span class="index-where">(in <a href="epydoc.docbuilder-module.html">epydoc.docbuilder</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.dotgraph-module.html#MODULE_NODE_HTML">MODULE_NODE_HTML</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.dotgraph-module.html">epydoc.docwriter.dotgraph</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.doctest.DoctestColorizer-class.html#markup">markup()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.doctest.DoctestColorizer-class.html">DoctestColorizer</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docbuilder-module.html#merge_overrides">merge_overrides()</a><br />
+<span class="index-where">(in <a href="epydoc.docbuilder-module.html">epydoc.docbuilder</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.ModuleDoc-class.html">ModuleDoc</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc-module.html">epydoc.apidoc</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.doctest.HTMLDoctestColorizer-class.html#markup">markup()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.doctest.HTMLDoctestColorizer-class.html">HTMLDoctestColorizer</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docbuilder-module.html#merge_posarg_defaults">merge_posarg_defaults()</a><br />
+<span class="index-where">(in <a href="epydoc.docbuilder-module.html">epydoc.docbuilder</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.ClassDoc-class.html#mro">mro()</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.ClassDoc-class.html">ClassDoc</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.doctest.LaTeXDoctestColorizer-class.html#markup">markup()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.doctest.LaTeXDoctestColorizer-class.html">LaTeXDoctestColorizer</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docbuilder-module.html#MERGE_PRECEDENCE">MERGE_PRECEDENCE</a><br />
+<span class="index-where">(in <a href="epydoc.docbuilder-module.html">epydoc.docbuilder</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.util-module.html#munge_script_name">munge_script_name()</a><br />
+<span class="index-where">(in <a href="epydoc.util-module.html">epydoc.util</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.doctest.XMLDoctestColorizer-class.html#markup">markup()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.doctest.XMLDoctestColorizer-class.html">XMLDoctestColorizer</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docbuilder-module.html#merge_proxy_for">merge_proxy_for()</a><br />
+<span class="index-where">(in <a href="epydoc.docbuilder-module.html">epydoc.docbuilder</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docbuilder.BuildOptions-class.html#must_introspect">must_introspect()</a><br />
+<span class="index-where">(in <a href="epydoc.docbuilder.BuildOptions-class.html">BuildOptions</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup-module.html#MARKUP_LANGUAGES_USED">MARKUP_LANGUAGES_USED</a><br />
+<span class="index-where">(in <a href="epydoc.markup-module.html">epydoc.markup</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docbuilder-module.html#merge_submodules">merge_submodules()</a><br />
+<span class="index-where">(in <a href="epydoc.docbuilder-module.html">epydoc.docbuilder</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docbuilder.BuildOptions-class.html#must_parse">must_parse()</a><br />
+<span class="index-where">(in <a href="epydoc.docbuilder.BuildOptions-class.html">BuildOptions</a>)</span></td>
+</tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="N">N</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.VariableDoc-class.html#name">name</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.VariableDoc-class.html">VariableDoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.NamespaceDoc-class.html">NamespaceDoc</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc-module.html">epydoc.apidoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.cli.TerminalController-class.html#NORMAL">NORMAL</a><br />
+<span class="index-where">(in <a href="epydoc.cli.TerminalController-class.html">TerminalController</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#name2url">name2url()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html">PythonSourceColorizer</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext._EpydocReader-class.html#new_document">new_document()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext._EpydocReader-class.html" onclick="show_private();">_EpydocReader</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.latex.LatexWriter-class.html#num_files">num_files()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.latex.LatexWriter-class.html">LatexWriter</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.dotgraph-module.html#name_list">name_list()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.dotgraph-module.html">epydoc.docwriter.dotgraph</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.dotgraph-module.html#NOOP_URL">NOOP_URL</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.dotgraph-module.html">epydoc.docwriter.dotgraph</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#NUMBER_TAG">NUMBER_TAG</a><br />
+<span class="index-where">(in <a href="epydoc.markup.pyval_repr.PyvalColorizer-class.html">PyvalColorizer</a>)</span></td>
+</tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="O">O</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.gui.EpydocGUI-class.html#open">open()</a><br />
+<span class="index-where">(in <a href="epydoc.gui.EpydocGUI-class.html">EpydocGUI</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.cli-module.html#OPTION_DEFAULTS">OPTION_DEFAULTS</a><br />
+<span class="index-where">(in <a href="epydoc.cli-module.html">epydoc.cli</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.APIDoc-class.html#other_docs">other_docs</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.APIDoc-class.html">APIDoc</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext.OptimizedReporter-class.html">OptimizedReporter</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext-module.html">epydoc.markup.restructuredtext</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#OPTIONAL_TYPE_RE">OPTIONAL_TYPE_RE</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html">DotGraphUmlClassNode</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.VariableDoc-class.html#overrides">overrides</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.VariableDoc-class.html">VariableDoc</a>)</span></td>
+</tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="P">P</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.ModuleDoc-class.html#package">package</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.ModuleDoc-class.html">ModuleDoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.cli-module.html#pickle_persistent_id">pickle_persistent_id()</a><br />
+<span class="index-where">(in <a href="epydoc.cli-module.html">epydoc.cli</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docparser-module.html#process_multi_stmt">process_multi_stmt()</a><br />
+<span class="index-where">(in <a href="epydoc.docparser-module.html">epydoc.docparser</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.dotgraph-module.html#package_tree_graph">package_tree_graph()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.dotgraph-module.html">epydoc.docwriter.dotgraph</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.cli-module.html#pickle_persistent_load">pickle_persistent_load()</a><br />
+<span class="index-where">(in <a href="epydoc.cli-module.html">epydoc.cli</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docparser-module.html#process_one_line_block">process_one_line_block()</a><br />
+<span class="index-where">(in <a href="epydoc.docparser-module.html">epydoc.docparser</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext-module.html#packagetree_directive">packagetree_directive()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext-module.html">epydoc.markup.restructuredtext</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.plaintext-module.html">plaintext</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter-module.html">epydoc.docwriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docstringparser-module.html#process_raise_field">process_raise_field()</a><br />
+<span class="index-where">(in <a href="epydoc.docstringparser-module.html">epydoc.docstringparser</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext.Token-class.html#PARA">PARA</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext.Token-class.html">Token</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.plaintext-module.html">plaintext</a><br />
+<span class="index-where">(in <a href="epydoc.markup-module.html">epydoc.markup</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docstringparser-module.html#process_return_field">process_return_field()</a><br />
+<span class="index-where">(in <a href="epydoc.docstringparser-module.html">epydoc.docstringparser</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.checker.DocChecker-class.html#PARAM">PARAM</a><br />
+<span class="index-where">(in <a href="epydoc.checker.DocChecker-class.html">DocChecker</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.util-module.html#plaintext_to_html">plaintext_to_html()</a><br />
+<span class="index-where">(in <a href="epydoc.util-module.html">epydoc.util</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docstringparser-module.html#process_rtype_field">process_rtype_field()</a><br />
+<span class="index-where">(in <a href="epydoc.docstringparser-module.html">epydoc.docstringparser</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docstringparser-module.html#PARAMETER_TAGS">PARAMETER_TAGS</a><br />
+<span class="index-where">(in <a href="epydoc.docstringparser-module.html">epydoc.docstringparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.util-module.html#plaintext_to_latex">plaintext_to_latex()</a><br />
+<span class="index-where">(in <a href="epydoc.util-module.html">epydoc.util</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docstringparser-module.html#process_sort_field">process_sort_field()</a><br />
+<span class="index-where">(in <a href="epydoc.docstringparser-module.html">epydoc.docstringparser</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext-module.html#parse">parse()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext-module.html">epydoc.markup.epytext</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.plaintext.PlaintextWriter-class.html">PlaintextWriter</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.plaintext-module.html">epydoc.docwriter.plaintext</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docstringparser-module.html#process_summary_field">process_summary_field()</a><br />
+<span class="index-where">(in <a href="epydoc.docstringparser-module.html">epydoc.docstringparser</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup-module.html#parse">parse()</a><br />
+<span class="index-where">(in <a href="epydoc.markup-module.html">epydoc.markup</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.RoutineDoc-class.html#posarg_defaults">posarg_defaults</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.RoutineDoc-class.html">RoutineDoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docstringparser-module.html#process_type_field">process_type_field()</a><br />
+<span class="index-where">(in <a href="epydoc.docstringparser-module.html">epydoc.docstringparser</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.cli-module.html#parse_arguments">parse_arguments()</a><br />
+<span class="index-where">(in <a href="epydoc.cli-module.html">epydoc.cli</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.RoutineDoc-class.html#posargs">posargs</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.RoutineDoc-class.html">RoutineDoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docstringparser-module.html#process_undocumented_field">process_undocumented_field()</a><br />
+<span class="index-where">(in <a href="epydoc.docstringparser-module.html">epydoc.docstringparser</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext-module.html#parse_as_literal">parse_as_literal()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext-module.html">epydoc.markup.epytext</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.APIDoc-class.html#pp">pp()</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.APIDoc-class.html">APIDoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docstringparser-module.html#process_var_field">process_var_field()</a><br />
+<span class="index-where">(in <a href="epydoc.docstringparser-module.html">epydoc.docstringparser</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext-module.html#parse_as_para">parse_as_para()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext-module.html">epydoc.markup.epytext</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc-module.html#pp_apidoc">pp_apidoc()</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc-module.html">epydoc.apidoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.cli-module.html#PROFILER">PROFILER</a><br />
+<span class="index-where">(in <a href="epydoc.cli-module.html">epydoc.cli</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docparser-module.html#parse_classdef_bases">parse_classdef_bases()</a><br />
+<span class="index-where">(in <a href="epydoc.docparser-module.html">epydoc.docparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docparser-module.html#pp_toktree">pp_toktree()</a><br />
+<span class="index-where">(in <a href="epydoc.docparser-module.html">epydoc.docparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.cli.ConsoleLogger-class.html#progress">progress()</a><br />
+<span class="index-where">(in <a href="epydoc.cli.ConsoleLogger-class.html">ConsoleLogger</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.cli-module.html#parse_configfiles">parse_configfiles()</a><br />
+<span class="index-where">(in <a href="epydoc.cli-module.html">epydoc.cli</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext-module.html#pparse">pparse()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext-module.html">epydoc.markup.epytext</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.cli.UnifiedProgressConsoleLogger-class.html#progress">progress()</a><br />
+<span class="index-where">(in <a href="epydoc.cli.UnifiedProgressConsoleLogger-class.html">UnifiedProgressConsoleLogger</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docparser-module.html#parse_docs">parse_docs()</a><br />
+<span class="index-where">(in <a href="epydoc.docparser-module.html">epydoc.docparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#pprint_value">pprint_value()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docbuilder._ProgressEstimator-class.html#progress">progress()</a><br />
+<span class="index-where">(in <a href="epydoc.docbuilder._ProgressEstimator-class.html" onclick="show_private();">_ProgressEstimator</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docstringparser-module.html#parse_docstring">parse_docstring()</a><br />
+<span class="index-where">(in <a href="epydoc.docstringparser-module.html">epydoc.docstringparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.latex.LatexWriter-class.html#PREAMBLE">PREAMBLE</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.latex.LatexWriter-class.html">LatexWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.gui.GUILogger-class.html#progress">progress()</a><br />
+<span class="index-where">(in <a href="epydoc.gui.GUILogger-class.html">GUILogger</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext-module.html#parse_docstring">parse_docstring()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext-module.html">epydoc.markup.epytext</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.doctest.DoctestColorizer-class.html#PREFIX">PREFIX</a><br />
+<span class="index-where">(in <a href="epydoc.markup.doctest.DoctestColorizer-class.html">DoctestColorizer</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.log.Logger-class.html#progress">progress()</a><br />
+<span class="index-where">(in <a href="epydoc.log.Logger-class.html">Logger</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.javadoc-module.html#parse_docstring">parse_docstring()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.javadoc-module.html">epydoc.markup.javadoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.doctest.HTMLDoctestColorizer-class.html#PREFIX">PREFIX</a><br />
+<span class="index-where">(in <a href="epydoc.markup.doctest.HTMLDoctestColorizer-class.html">HTMLDoctestColorizer</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.log-module.html#progress">progress()</a><br />
+<span class="index-where">(in <a href="epydoc.log-module.html">epydoc.log</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.plaintext-module.html#parse_docstring">parse_docstring()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.plaintext-module.html">epydoc.markup.plaintext</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.doctest.LaTeXDoctestColorizer-class.html#PREFIX">PREFIX</a><br />
+<span class="index-where">(in <a href="epydoc.markup.doctest.LaTeXDoctestColorizer-class.html">LaTeXDoctestColorizer</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.gui-module.html#PROGRESS_BG">PROGRESS_BG</a><br />
+<span class="index-where">(in <a href="epydoc.gui-module.html">epydoc.gui</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext-module.html#parse_docstring">parse_docstring()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext-module.html">epydoc.markup.restructuredtext</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.doctest.XMLDoctestColorizer-class.html#PREFIX">PREFIX</a><br />
+<span class="index-where">(in <a href="epydoc.markup.doctest.XMLDoctestColorizer-class.html">XMLDoctestColorizer</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.gui-module.html#PROGRESS_COLOR1">PROGRESS_COLOR1</a><br />
+<span class="index-where">(in <a href="epydoc.gui-module.html">epydoc.gui</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docparser-module.html#parse_dotted_name">parse_dotted_name()</a><br />
+<span class="index-where">(in <a href="epydoc.docparser-module.html">epydoc.docparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.test.util-module.html#print_docstring_as_html">print_docstring_as_html()</a><br />
+<span class="index-where">(in <a href="epydoc.test.util-module.html">epydoc.test.util</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.gui-module.html#PROGRESS_COLOR2">PROGRESS_COLOR2</a><br />
+<span class="index-where">(in <a href="epydoc.gui-module.html">epydoc.gui</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docparser-module.html#parse_dotted_name_list">parse_dotted_name_list()</a><br />
+<span class="index-where">(in <a href="epydoc.docparser-module.html">epydoc.docparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.cli.ConsoleLogger-class.html#print_times">print_times()</a><br />
+<span class="index-where">(in <a href="epydoc.cli.ConsoleLogger-class.html">ConsoleLogger</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.gui-module.html#PROGRESS_COLOR3">PROGRESS_COLOR3</a><br />
+<span class="index-where">(in <a href="epydoc.gui-module.html">epydoc.gui</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docparser-module.html#PARSE_ELSE_BLOCKS">PARSE_ELSE_BLOCKS</a><br />
+<span class="index-where">(in <a href="epydoc.docparser-module.html">epydoc.docparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.cli.UnifiedProgressConsoleLogger-class.html#print_times">print_times()</a><br />
+<span class="index-where">(in <a href="epydoc.cli.UnifiedProgressConsoleLogger-class.html">UnifiedProgressConsoleLogger</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.gui-module.html#PROGRESS_HEIGHT">PROGRESS_HEIGHT</a><br />
+<span class="index-where">(in <a href="epydoc.gui-module.html">epydoc.gui</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docparser-module.html#PARSE_EXCEPT_BLOCKS">PARSE_EXCEPT_BLOCKS</a><br />
+<span class="index-where">(in <a href="epydoc.docparser-module.html">epydoc.docparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.test.util-module.html#print_warnings">print_warnings()</a><br />
+<span class="index-where">(in <a href="epydoc.test.util-module.html">epydoc.test.util</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.gui-module.html#PROGRESS_WIDTH">PROGRESS_WIDTH</a><br />
+<span class="index-where">(in <a href="epydoc.gui-module.html">epydoc.gui</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docparser-module.html#PARSE_FINALLY_BLOCKS">PARSE_FINALLY_BLOCKS</a><br />
+<span class="index-where">(in <a href="epydoc.docparser-module.html">epydoc.docparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.checker.DocChecker-class.html#PRIVATE">PRIVATE</a><br />
+<span class="index-where">(in <a href="epydoc.checker.DocChecker-class.html">DocChecker</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.doctest.DoctestColorizer-class.html#PROMPT2_RE">PROMPT2_RE</a><br />
+<span class="index-where">(in <a href="epydoc.markup.doctest.DoctestColorizer-class.html">DoctestColorizer</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docparser-module.html#PARSE_FOR_BLOCKS">PARSE_FOR_BLOCKS</a><br />
+<span class="index-where">(in <a href="epydoc.docparser-module.html">epydoc.docparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#PRIVATE_LINK">PRIVATE_LINK</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.doctest.DoctestColorizer-class.html#PROMPT_RE">PROMPT_RE</a><br />
+<span class="index-where">(in <a href="epydoc.markup.doctest.DoctestColorizer-class.html">DoctestColorizer</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docparser-module.html#parse_funcdef_arg">parse_funcdef_arg()</a><br />
+<span class="index-where">(in <a href="epydoc.docparser-module.html">epydoc.docparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docstringparser-module.html#process_arg_field">process_arg_field()</a><br />
+<span class="index-where">(in <a href="epydoc.docstringparser-module.html">epydoc.docstringparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.checker.DocChecker-class.html#PROPERTY">PROPERTY</a><br />
+<span class="index-where">(in <a href="epydoc.checker.DocChecker-class.html">DocChecker</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docstringparser-module.html#parse_function_signature">parse_function_signature()</a><br />
+<span class="index-where">(in <a href="epydoc.docstringparser-module.html">epydoc.docstringparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docparser-module.html#process_assignment">process_assignment()</a><br />
+<span class="index-where">(in <a href="epydoc.docparser-module.html">epydoc.docparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#property_accessor_to_html">property_accessor_to_html()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docparser-module.html#PARSE_IF_BLOCKS">PARSE_IF_BLOCKS</a><br />
+<span class="index-where">(in <a href="epydoc.docparser-module.html">epydoc.docparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docparser-module.html#process_classdef">process_classdef()</a><br />
+<span class="index-where">(in <a href="epydoc.docparser-module.html">epydoc.docparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.PropertyDoc-class.html">PropertyDoc</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc-module.html">epydoc.apidoc</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docparser-module.html#parse_name">parse_name()</a><br />
+<span class="index-where">(in <a href="epydoc.docparser-module.html">epydoc.docparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docparser-module.html#process_control_flow_line">process_control_flow_line()</a><br />
+<span class="index-where">(in <a href="epydoc.docparser-module.html">epydoc.docparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.ValueDoc-class.html#proxy_for">proxy_for</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.ValueDoc-class.html">ValueDoc</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.ValueDoc-class.html#parse_repr">parse_repr</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.ValueDoc-class.html">ValueDoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docstringparser-module.html#process_cvar_field">process_cvar_field()</a><br />
+<span class="index-where">(in <a href="epydoc.docstringparser-module.html">epydoc.docstringparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.util-module.html#PY_BIN_EXTENSIONS">PY_BIN_EXTENSIONS</a><br />
+<span class="index-where">(in <a href="epydoc.util-module.html">epydoc.util</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docparser-module.html#parse_string">parse_string()</a><br />
+<span class="index-where">(in <a href="epydoc.docparser-module.html">epydoc.docparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docstringparser-module.html#process_deffield_field">process_deffield_field()</a><br />
+<span class="index-where">(in <a href="epydoc.docstringparser-module.html">epydoc.docstringparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.util-module.html#PY_SRC_EXTENSIONS">PY_SRC_EXTENSIONS</a><br />
+<span class="index-where">(in <a href="epydoc.util-module.html">epydoc.util</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docparser-module.html#parse_string_list">parse_string_list()</a><br />
+<span class="index-where">(in <a href="epydoc.docparser-module.html">epydoc.docparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docparser-module.html#process_del">process_del()</a><br />
+<span class="index-where">(in <a href="epydoc.docparser-module.html">epydoc.docparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.util-module.html#py_src_filename">py_src_filename()</a><br />
+<span class="index-where">(in <a href="epydoc.util-module.html">epydoc.util</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docparser-module.html#PARSE_TRY_BLOCKS">PARSE_TRY_BLOCKS</a><br />
+<span class="index-where">(in <a href="epydoc.docparser-module.html">epydoc.docparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docparser-module.html#process_docstring">process_docstring()</a><br />
+<span class="index-where">(in <a href="epydoc.docparser-module.html">epydoc.docparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html_colorize-module.html#PYSRC_EXPANDTO_JAVASCRIPT">PYSRC_EXPANDTO_JAVASCRIPT</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html_colorize-module.html">epydoc.docwriter.html_colorize</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup-module.html#parse_type_of">parse_type_of()</a><br />
+<span class="index-where">(in <a href="epydoc.markup-module.html">epydoc.markup</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docstringparser-module.html#process_field">process_field()</a><br />
+<span class="index-where">(in <a href="epydoc.docstringparser-module.html">epydoc.docstringparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html_colorize-module.html#PYSRC_JAVASCRIPTS">PYSRC_JAVASCRIPTS</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html_colorize-module.html">epydoc.docwriter.html_colorize</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docparser-module.html#PARSE_WHILE_BLOCKS">PARSE_WHILE_BLOCKS</a><br />
+<span class="index-where">(in <a href="epydoc.docparser-module.html">epydoc.docparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docparser-module.html#process_file">process_file()</a><br />
+<span class="index-where">(in <a href="epydoc.docparser-module.html">epydoc.docparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#pysrc_link">pysrc_link()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.ParsedDocstring-class.html">ParsedDocstring</a><br />
+<span class="index-where">(in <a href="epydoc.markup-module.html">epydoc.markup</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docparser-module.html#process_from_import">process_from_import()</a><br />
+<span class="index-where">(in <a href="epydoc.docparser-module.html">epydoc.docparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#pysrc_url">pysrc_url()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html">ParsedEpytextDocstring</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext-module.html">epydoc.markup.epytext</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docparser-module.html#process_funcdef">process_funcdef()</a><br />
+<span class="index-where">(in <a href="epydoc.docparser-module.html">epydoc.docparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext-module.html#python_code_directive">python_code_directive()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext-module.html">epydoc.markup.restructuredtext</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.javadoc.ParsedJavadocDocstring-class.html">ParsedJavadocDocstring</a><br />
+<span class="index-where">(in <a href="epydoc.markup.javadoc-module.html">epydoc.markup.javadoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docstringparser-module.html#process_group_field">process_group_field()</a><br />
+<span class="index-where">(in <a href="epydoc.docstringparser-module.html">epydoc.docstringparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html">PythonSourceColorizer</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html_colorize-module.html">epydoc.docwriter.html_colorize</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.plaintext.ParsedPlaintextDocstring-class.html">ParsedPlaintextDocstring</a><br />
+<span class="index-where">(in <a href="epydoc.markup.plaintext-module.html">epydoc.markup.plaintext</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docparser-module.html#process_import">process_import()</a><br />
+<span class="index-where">(in <a href="epydoc.docparser-module.html">epydoc.docparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.ValueDoc-class.html#pyval">pyval</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.ValueDoc-class.html">ValueDoc</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html">ParsedRstDocstring</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext-module.html">epydoc.markup.restructuredtext</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docstringparser-module.html#process_include_field">process_include_field()</a><br />
+<span class="index-where">(in <a href="epydoc.docstringparser-module.html">epydoc.docstringparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.pyval_repr-module.html">pyval_repr</a><br />
+<span class="index-where">(in <a href="epydoc.markup-module.html">epydoc.markup</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docparser.ParseError-class.html">ParseError</a><br />
+<span class="index-where">(in <a href="epydoc.docparser-module.html">epydoc.docparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docstringparser-module.html#process_ivar_field">process_ivar_field()</a><br />
+<span class="index-where">(in <a href="epydoc.docstringparser-module.html">epydoc.docstringparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.ValueDoc-class.html#pyval_repr">pyval_repr()</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.ValueDoc-class.html">ValueDoc</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.ParseError-class.html">ParseError</a><br />
+<span class="index-where">(in <a href="epydoc.markup-module.html">epydoc.markup</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docstringparser-module.html#process_kwarg_field">process_kwarg_field()</a><br />
+<span class="index-where">(in <a href="epydoc.docstringparser-module.html">epydoc.docstringparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.pyval_repr.PyvalColorizer-class.html">PyvalColorizer</a><br />
+<span class="index-where">(in <a href="epydoc.markup.pyval_repr-module.html">epydoc.markup.pyval_repr</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.ModuleDoc-class.html#path">path</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.ModuleDoc-class.html">ModuleDoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docparser-module.html#process_line">process_line()</a><br />
+<span class="index-where">(in <a href="epydoc.docparser-module.html">epydoc.docparser</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+</tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="Q">Q</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#QUOTE_TAG">QUOTE_TAG</a><br />
+<span class="index-where">(in <a href="epydoc.markup.pyval_repr.PyvalColorizer-class.html">PyvalColorizer</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+<td width="33%" class="link-index"> </td>
+</tr>
+<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="R">R</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#RE_CALLGRAPH_ID">RE_CALLGRAPH_ID</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docbuilder-module.html#register_attribute_mergefunc">register_attribute_mergefunc()</a><br />
+<span class="index-where">(in <a href="epydoc.docbuilder-module.html">epydoc.docbuilder</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.checker.DocChecker-class.html#RETURN">RETURN</a><br />
+<span class="index-where">(in <a href="epydoc.checker.DocChecker-class.html">DocChecker</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#RE_CHAR_TAG">RE_CHAR_TAG</a><br />
+<span class="index-where">(in <a href="epydoc.markup.pyval_repr.PyvalColorizer-class.html">PyvalColorizer</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docintrospecter-module.html#register_class_type">register_class_type()</a><br />
+<span class="index-where">(in <a href="epydoc.docintrospecter-module.html">epydoc.docintrospecter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.RoutineDoc-class.html#return_descr">return_descr</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.RoutineDoc-class.html">RoutineDoc</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#RE_FLAGS_TAG">RE_FLAGS_TAG</a><br />
+<span class="index-where">(in <a href="epydoc.markup.pyval_repr.PyvalColorizer-class.html">PyvalColorizer</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docstringparser-module.html#register_field_handler">register_field_handler()</a><br />
+<span class="index-where">(in <a href="epydoc.docstringparser-module.html">epydoc.docstringparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#return_descr">return_descr()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#RE_GROUP_TAG">RE_GROUP_TAG</a><br />
+<span class="index-where">(in <a href="epydoc.markup.pyval_repr.PyvalColorizer-class.html">PyvalColorizer</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docintrospecter-module.html#register_introspecter">register_introspecter()</a><br />
+<span class="index-where">(in <a href="epydoc.docintrospecter-module.html">epydoc.docintrospecter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docstringparser-module.html#RETURN_PDS">RETURN_PDS</a><br />
+<span class="index-where">(in <a href="epydoc.docstringparser-module.html">epydoc.docstringparser</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#RE_OP_TAG">RE_OP_TAG</a><br />
+<span class="index-where">(in <a href="epydoc.markup.pyval_repr.PyvalColorizer-class.html">PyvalColorizer</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.log-module.html#register_logger">register_logger()</a><br />
+<span class="index-where">(in <a href="epydoc.log-module.html">epydoc.log</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.RoutineDoc-class.html#return_type">return_type</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.RoutineDoc-class.html">RoutineDoc</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#RE_REF_TAG">RE_REF_TAG</a><br />
+<span class="index-where">(in <a href="epydoc.markup.pyval_repr.PyvalColorizer-class.html">PyvalColorizer</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup-module.html#register_markup_language">register_markup_language()</a><br />
+<span class="index-where">(in <a href="epydoc.markup-module.html">epydoc.markup</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#return_type">return_type()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.DocIndex-class.html#reachable_valdocs">reachable_valdocs()</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.DocIndex-class.html">DocIndex</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.log-module.html#remove_logger">remove_logger()</a><br />
+<span class="index-where">(in <a href="epydoc.log-module.html">epydoc.log</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.compat-module.html#reversed">reversed()</a><br />
+<span class="index-where">(in <a href="epydoc.compat-module.html">epydoc.compat</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.apidoc-module.html#reachable_valdocs">reachable_valdocs()</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc-module.html">epydoc.apidoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.test.util-module.html#remove_surrogates">remove_surrogates()</a><br />
+<span class="index-where">(in <a href="epydoc.test.util-module.html">epydoc.test.util</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docbuilder._ProgressEstimator-class.html#revise_estimate">revise_estimate()</a><br />
+<span class="index-where">(in <a href="epydoc.docbuilder._ProgressEstimator-class.html" onclick="show_private();">_ProgressEstimator</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docintrospecter._DevNull-class.html#read">read()</a><br />
+<span class="index-where">(in <a href="epydoc.docintrospecter._DevNull-class.html" onclick="show_private();">_DevNull</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.dotgraph.DotGraph-class.html#render">render()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.dotgraph.DotGraph-class.html">DotGraph</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docparser-module.html#rhs_to_valuedoc">rhs_to_valuedoc()</a><br />
+<span class="index-where">(in <a href="epydoc.docparser-module.html">epydoc.docparser</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.xlink.ApiLinkReader-class.html#read">read()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.xlink.ApiLinkReader-class.html">ApiLinkReader</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#render_callgraph">render_callgraph()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.cli.TerminalController-class.html#RIGHT">RIGHT</a><br />
+<span class="index-where">(in <a href="epydoc.cli.TerminalController-class.html">TerminalController</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.gui.GUILogger-class.html#read">read()</a><br />
+<span class="index-where">(in <a href="epydoc.gui.GUILogger-class.html">GUILogger</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#render_graph">render_graph()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.gui-module.html#RIGHT_GIF">RIGHT_GIF</a><br />
+<span class="index-where">(in <a href="epydoc.gui-module.html">epydoc.gui</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.xlink.ApiLinkReader-class.html#read_configuration">read_configuration()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.xlink.ApiLinkReader-class.html">ApiLinkReader</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext._EpydocReader-class.html#report">report()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext._EpydocReader-class.html" onclick="show_private();">_EpydocReader</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.dotgraph-module.html#ROUTINE_BG">ROUTINE_BG</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.dotgraph-module.html">epydoc.docwriter.dotgraph</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.DocIndex-class.html#read_profiling_info">read_profiling_info()</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.DocIndex-class.html">DocIndex</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docstringparser-module.html#report_errors">report_errors()</a><br />
+<span class="index-where">(in <a href="epydoc.docstringparser-module.html">epydoc.docstringparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.RoutineDoc-class.html">RoutineDoc</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc-module.html">epydoc.apidoc</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docintrospecter._DevNull-class.html#readline">readline()</a><br />
+<span class="index-where">(in <a href="epydoc.docintrospecter._DevNull-class.html" onclick="show_private();">_DevNull</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.NamespaceDoc-class.html#report_unused_groups">report_unused_groups()</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.NamespaceDoc-class.html">NamespaceDoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.util-module.html#run_subprocess">run_subprocess()</a><br />
+<span class="index-where">(in <a href="epydoc.util-module.html">epydoc.util</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docintrospecter._DevNull-class.html#readlines">readlines()</a><br />
+<span class="index-where">(in <a href="epydoc.docintrospecter._DevNull-class.html" onclick="show_private();">_DevNull</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.ValueDoc-class.html#REPR_LINELEN">REPR_LINELEN</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.ValueDoc-class.html">ValueDoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.test.util-module.html#runbuilder">runbuilder()</a><br />
+<span class="index-where">(in <a href="epydoc.test.util-module.html">epydoc.test.util</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.cli.TerminalController-class.html#RED">RED</a><br />
+<span class="index-where">(in <a href="epydoc.cli.TerminalController-class.html">TerminalController</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.ValueDoc-class.html#REPR_MAXLINES">REPR_MAXLINES</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.ValueDoc-class.html">ValueDoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.test.util-module.html#runintrospecter">runintrospecter()</a><br />
+<span class="index-where">(in <a href="epydoc.test.util-module.html">epydoc.test.util</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docstringparser-module.html#REDEFINED">REDEFINED</a><br />
+<span class="index-where">(in <a href="epydoc.docstringparser-module.html">epydoc.docstringparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.ValueDoc-class.html#REPR_MIN_SCORE">REPR_MIN_SCORE</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.ValueDoc-class.html">ValueDoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.test.util-module.html#runparser">runparser()</a><br />
+<span class="index-where">(in <a href="epydoc.test.util-module.html">epydoc.test.util</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#REDIRECT_URL_JS">REDIRECT_URL_JS</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.pyval_repr._ColorizerState-class.html#restore">restore()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.pyval_repr._ColorizerState-class.html" onclick="show_private();">_ColorizerState</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.util.RunSubprocessError-class.html">RunSubprocessError</a><br />
+<span class="index-where">(in <a href="epydoc.util-module.html">epydoc.util</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.xlink-module.html#register_api">register_api()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.xlink-module.html">epydoc.docwriter.xlink</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext-module.html">restructuredtext</a><br />
+<span class="index-where">(in <a href="epydoc.markup-module.html">epydoc.markup</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+</tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="S">S</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.gui-module.html#SB_CONFIG">SB_CONFIG</a><br />
+<span class="index-where">(in <a href="epydoc.gui-module.html">epydoc.gui</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.NamespaceDoc-class.html#sort_spec">sort_spec</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.NamespaceDoc-class.html">NamespaceDoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext._EpydocHTMLTranslator-class.html#starttag">starttag()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext._EpydocHTMLTranslator-class.html" onclick="show_private();">_EpydocHTMLTranslator</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docparser-module.html#script_guard">script_guard()</a><br />
+<span class="index-where">(in <a href="epydoc.docparser-module.html">epydoc.docparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.compat-module.html#sorted">sorted()</a><br />
+<span class="index-where">(in <a href="epydoc.compat-module.html">epydoc.compat</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.StaticMethodDoc-class.html">StaticMethodDoc</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc-module.html">epydoc.apidoc</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.latex.LatexWriter-class.html#section">section()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.latex.LatexWriter-class.html">LatexWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.NamespaceDoc-class.html#sorted_variables">sorted_variables</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.NamespaceDoc-class.html">NamespaceDoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#STRING_TAG">STRING_TAG</a><br />
+<span class="index-where">(in <a href="epydoc.markup.pyval_repr.PyvalColorizer-class.html">PyvalColorizer</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.plaintext.PlaintextWriter-class.html#section">section()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.plaintext.PlaintextWriter-class.html">PlaintextWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#SPECIAL_METHODS">SPECIAL_METHODS</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html-module.html#strip_indent">strip_indent()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html-module.html">epydoc.docwriter.html</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.latex.LatexWriter-class.html#SECTIONS">SECTIONS</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.latex.LatexWriter-class.html">LatexWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.APIDoc-class.html#specialize_to">specialize_to()</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.APIDoc-class.html">APIDoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext.StructuringError-class.html">StructuringError</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext-module.html">epydoc.markup.epytext</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.latex.LatexWriter-class.html#sectionstar">sectionstar()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.latex.LatexWriter-class.html">LatexWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.dotgraph-module.html#specialize_valdoc_node">specialize_valdoc_node()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.dotgraph-module.html">epydoc.docwriter.dotgraph</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html_css-module.html#STYLESHEETS">STYLESHEETS</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html_css-module.html">epydoc.docwriter.html_css</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docintrospecter._DevNull-class.html#seek">seek()</a><br />
+<span class="index-where">(in <a href="epydoc.docintrospecter._DevNull-class.html" onclick="show_private();">_DevNull</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.ConcatenatedDocstring-class.html#split_fields">split_fields()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.ConcatenatedDocstring-class.html">ConcatenatedDocstring</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.dotgraph-module.html#SUBCLASS_BG">SUBCLASS_BG</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.dotgraph-module.html">epydoc.docwriter.dotgraph</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.gui-module.html#SELECT_COLOR">SELECT_COLOR</a><br />
+<span class="index-where">(in <a href="epydoc.gui-module.html">epydoc.gui</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.ParsedDocstring-class.html#split_fields">split_fields()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.ParsedDocstring-class.html">ParsedDocstring</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.ClassDoc-class.html#subclasses">subclasses</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.ClassDoc-class.html">ClassDoc</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.ClassDoc-class.html#select_variables">select_variables()</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.ClassDoc-class.html">ClassDoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#split_fields">split_fields()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html">ParsedEpytextDocstring</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.doctest.DoctestColorizer-class.html#subfunc">subfunc()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.doctest.DoctestColorizer-class.html">DoctestColorizer</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.ModuleDoc-class.html#select_variables">select_variables()</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.ModuleDoc-class.html">ModuleDoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.javadoc.ParsedJavadocDocstring-class.html#split_fields">split_fields()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.javadoc.ParsedJavadocDocstring-class.html">ParsedJavadocDocstring</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.ModuleDoc-class.html#submodule_groups">submodule_groups</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.ModuleDoc-class.html">ModuleDoc</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.dotgraph-module.html#SELECTED_BG">SELECTED_BG</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.dotgraph-module.html">epydoc.docwriter.dotgraph</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html#split_fields">split_fields()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html">ParsedRstDocstring</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.ModuleDoc-class.html#submodules">submodules</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.ModuleDoc-class.html">ModuleDoc</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.xlink-module.html#set_api_file">set_api_file()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.xlink-module.html">epydoc.docwriter.xlink</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#SPLIT_IDENT_INDEX_SIZE">SPLIT_IDENT_INDEX_SIZE</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.doctest.DoctestColorizer-class.html#SUFFIX">SUFFIX</a><br />
+<span class="index-where">(in <a href="epydoc.markup.doctest.DoctestColorizer-class.html">DoctestColorizer</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.xlink-module.html#set_api_root">set_api_root()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.xlink-module.html">epydoc.docwriter.xlink</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docstringparser-module.html#split_init_fields">split_init_fields()</a><br />
+<span class="index-where">(in <a href="epydoc.docstringparser-module.html">epydoc.docstringparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.doctest.HTMLDoctestColorizer-class.html#SUFFIX">SUFFIX</a><br />
+<span class="index-where">(in <a href="epydoc.markup.doctest.HTMLDoctestColorizer-class.html">HTMLDoctestColorizer</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#SET_FRAME_JS">SET_FRAME_JS</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.xlink-module.html#split_name">split_name()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.xlink-module.html">epydoc.docwriter.xlink</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.doctest.LaTeXDoctestColorizer-class.html#SUFFIX">SUFFIX</a><br />
+<span class="index-where">(in <a href="epydoc.markup.doctest.LaTeXDoctestColorizer-class.html">LaTeXDoctestColorizer</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.ParseError-class.html#set_linenum_offset">set_linenum_offset()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.ParseError-class.html">ParseError</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docparser-module.html#split_on">split_on()</a><br />
+<span class="index-where">(in <a href="epydoc.docparser-module.html">epydoc.docparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.doctest.XMLDoctestColorizer-class.html#SUFFIX">SUFFIX</a><br />
+<span class="index-where">(in <a href="epydoc.markup.doctest.XMLDoctestColorizer-class.html">XMLDoctestColorizer</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docstringparser-module.html#set_var_descr">set_var_descr()</a><br />
+<span class="index-where">(in <a href="epydoc.docstringparser-module.html">epydoc.docstringparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docstringparser-module.html#STANDARD_FIELDS">STANDARD_FIELDS</a><br />
+<span class="index-where">(in <a href="epydoc.docstringparser-module.html">epydoc.docstringparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.APIDoc-class.html#summary">summary</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.APIDoc-class.html">APIDoc</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docstringparser-module.html#set_var_type">set_var_type()</a><br />
+<span class="index-where">(in <a href="epydoc.docstringparser-module.html">epydoc.docstringparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.latex.LatexWriter-class.html#STAR_SECTIONS">STAR_SECTIONS</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.latex.LatexWriter-class.html">LatexWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#summary">summary()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docparser-module.html#set_variable">set_variable()</a><br />
+<span class="index-where">(in <a href="epydoc.docparser-module.html">epydoc.docparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.cli.HTMLLogger-class.html#START_BLOCK">START_BLOCK</a><br />
+<span class="index-where">(in <a href="epydoc.cli.HTMLLogger-class.html">HTMLLogger</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.ConcatenatedDocstring-class.html#summary">summary()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.ConcatenatedDocstring-class.html">ConcatenatedDocstring</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext._EpydocHTMLTranslator-class.html#settings">settings</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext._EpydocHTMLTranslator-class.html" onclick="show_private();">_EpydocHTMLTranslator</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.cli.ConsoleLogger-class.html#start_block">start_block()</a><br />
+<span class="index-where">(in <a href="epydoc.cli.ConsoleLogger-class.html">ConsoleLogger</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.ParsedDocstring-class.html#summary">summary()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.ParsedDocstring-class.html">ParsedDocstring</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext._EpydocLaTeXTranslator-class.html#settings">settings</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext._EpydocLaTeXTranslator-class.html" onclick="show_private();">_EpydocLaTeXTranslator</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.cli.HTMLLogger-class.html#start_block">start_block()</a><br />
+<span class="index-where">(in <a href="epydoc.cli.HTMLLogger-class.html">HTMLLogger</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#summary">summary()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html">ParsedEpytextDocstring</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.xlink.ApiLinkReader-class.html#settings_spec">settings_spec</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.xlink.ApiLinkReader-class.html">ApiLinkReader</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.gui.GUILogger-class.html#start_block">start_block()</a><br />
+<span class="index-where">(in <a href="epydoc.gui.GUILogger-class.html">GUILogger</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.javadoc.ParsedJavadocDocstring-class.html#summary">summary()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.javadoc.ParsedJavadocDocstring-class.html">ParsedJavadocDocstring</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docparser-module.html#shallow_parse">shallow_parse()</a><br />
+<span class="index-where">(in <a href="epydoc.docparser-module.html">epydoc.docparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.log.Logger-class.html#start_block">start_block()</a><br />
+<span class="index-where">(in <a href="epydoc.log.Logger-class.html">Logger</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.plaintext.ParsedPlaintextDocstring-class.html#summary">summary()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.plaintext.ParsedPlaintextDocstring-class.html">ParsedPlaintextDocstring</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.cli-module.html#sheet">sheet</a><br />
+<span class="index-where">(in <a href="epydoc.cli-module.html">epydoc.cli</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.log-module.html#start_block">start_block()</a><br />
+<span class="index-where">(in <a href="epydoc.log-module.html">epydoc.log</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html#summary">summary()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html">ParsedRstDocstring</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext._EpydocHTMLTranslator-class.html#should_be_compact_paragraph">should_be_compact_paragraph()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext._EpydocHTMLTranslator-class.html" onclick="show_private();">_EpydocHTMLTranslator</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#START_DEF_BLOCK">START_DEF_BLOCK</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html">PythonSourceColorizer</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#summary_name">summary_name()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#SHOW_PRIVATE_JS">SHOW_PRIVATE_JS</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docparser-module.html#START_GROUP_MARKER">START_GROUP_MARKER</a><br />
+<span class="index-where">(in <a href="epydoc.docparser-module.html">epydoc.docparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.ValueDoc-class.html#summary_pyval_repr">summary_pyval_repr()</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.ValueDoc-class.html">ValueDoc</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.gui-module.html#SHOWERR_CONFIG">SHOWERR_CONFIG</a><br />
+<span class="index-where">(in <a href="epydoc.gui-module.html">epydoc.gui</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.cli.ConsoleLogger-class.html#start_progress">start_progress()</a><br />
+<span class="index-where">(in <a href="epydoc.cli.ConsoleLogger-class.html">ConsoleLogger</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.ValueDoc-class.html#SUMMARY_REPR_LINELEN">SUMMARY_REPR_LINELEN</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.ValueDoc-class.html">ValueDoc</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.gui-module.html#SHOWMSG_CONFIG">SHOWMSG_CONFIG</a><br />
+<span class="index-where">(in <a href="epydoc.gui-module.html">epydoc.gui</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.cli.UnifiedProgressConsoleLogger-class.html#start_progress">start_progress()</a><br />
+<span class="index-where">(in <a href="epydoc.cli.UnifiedProgressConsoleLogger-class.html">UnifiedProgressConsoleLogger</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#SYMBOL_TO_HTML">SYMBOL_TO_HTML</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html">ParsedEpytextDocstring</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.gui-module.html#SHOWWRN_CONFIG">SHOWWRN_CONFIG</a><br />
+<span class="index-where">(in <a href="epydoc.gui-module.html">epydoc.gui</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.gui.GUILogger-class.html#start_progress">start_progress()</a><br />
+<span class="index-where">(in <a href="epydoc.gui.GUILogger-class.html">GUILogger</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#SYMBOL_TO_LATEX">SYMBOL_TO_LATEX</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html">ParsedEpytextDocstring</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#SIMPLE_TYPE_RE">SIMPLE_TYPE_RE</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html">DotGraphUmlClassNode</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.log.Logger-class.html#start_progress">start_progress()</a><br />
+<span class="index-where">(in <a href="epydoc.log.Logger-class.html">Logger</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext-module.html#SYMBOL_TO_PLAINTEXT">SYMBOL_TO_PLAINTEXT</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext-module.html">epydoc.markup.epytext</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.log.SimpleLogger-class.html">SimpleLogger</a><br />
+<span class="index-where">(in <a href="epydoc.log-module.html">epydoc.log</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.log-module.html#start_progress">start_progress()</a><br />
+<span class="index-where">(in <a href="epydoc.log-module.html">epydoc.log</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext-module.html#SYMBOLS">SYMBOLS</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext-module.html">epydoc.markup.epytext</a>)</span></td>
+</tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="T">T</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#TABLE_FOOTER">TABLE_FOOTER</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.ConcatenatedDocstring-class.html#to_html">to_html()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.ConcatenatedDocstring-class.html">ConcatenatedDocstring</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#TOGGLE_CALLGRAPH_JS">TOGGLE_CALLGRAPH_JS</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.Field-class.html#tag">tag()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.Field-class.html">Field</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.ParsedDocstring-class.html#to_html">to_html()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.ParsedDocstring-class.html">ParsedDocstring</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#TOGGLE_PRIVATE_JS">TOGGLE_PRIVATE_JS</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docintrospecter._DevNull-class.html#tell">tell()</a><br />
+<span class="index-where">(in <a href="epydoc.docintrospecter._DevNull-class.html" onclick="show_private();">_DevNull</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#to_html">to_html()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html">ParsedEpytextDocstring</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext.Token-class.html">Token</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext-module.html">epydoc.markup.epytext</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html_css-module.html#TEMPLATE">TEMPLATE</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html_css-module.html">epydoc.docwriter.html_css</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.javadoc.ParsedJavadocDocstring-class.html#to_html">to_html()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.javadoc.ParsedJavadocDocstring-class.html">ParsedJavadocDocstring</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#tokeneater">tokeneater()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html">PythonSourceColorizer</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext-module.html#term_role">term_role()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext-module.html">epydoc.markup.restructuredtext</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.plaintext.ParsedPlaintextDocstring-class.html#to_html">to_html()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.plaintext.ParsedPlaintextDocstring-class.html">ParsedPlaintextDocstring</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext.TokenizationError-class.html">TokenizationError</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext-module.html">epydoc.markup.epytext</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.cli.TerminalController-class.html">TerminalController</a><br />
+<span class="index-where">(in <a href="epydoc.cli-module.html">epydoc.cli</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html#to_html">to_html()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html">ParsedRstDocstring</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.ValueDoc-class.html#toktree">toktree</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.ValueDoc-class.html">ValueDoc</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.test-module.html">test</a><br />
+<span class="index-where">(in <a href="epydoc-module.html">epydoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.ConcatenatedDocstring-class.html#to_latex">to_latex()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.ConcatenatedDocstring-class.html">ConcatenatedDocstring</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.cli-module.html#topic">topic</a><br />
+<span class="index-where">(in <a href="epydoc.cli-module.html">epydoc.cli</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.test.util-module.html#testencoding">testencoding()</a><br />
+<span class="index-where">(in <a href="epydoc.test.util-module.html">epydoc.test.util</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.ParsedDocstring-class.html#to_latex">to_latex()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.ParsedDocstring-class.html">ParsedDocstring</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext._DocumentPseudoWriter-class.html#translate">translate()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext._DocumentPseudoWriter-class.html" onclick="show_private();">_DocumentPseudoWriter</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.gui-module.html#TEXT_COLOR">TEXT_COLOR</a><br />
+<span class="index-where">(in <a href="epydoc.gui-module.html">epydoc.gui</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#to_latex">to_latex()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html">ParsedEpytextDocstring</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html._HTMLDocstringLinker-class.html#translate_identifier_xref">translate_identifier_xref()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html._HTMLDocstringLinker-class.html" onclick="show_private();">_HTMLDocstringLinker</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.plaintext.PlaintextWriter-class.html#title">title()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.plaintext.PlaintextWriter-class.html">PlaintextWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.plaintext.ParsedPlaintextDocstring-class.html#to_latex">to_latex()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.plaintext.ParsedPlaintextDocstring-class.html">ParsedPlaintextDocstring</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.latex.LatexWriter._LatexDocstringLinker-class.html#translate_identifier_xref">translate_identifier_xref()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.latex.LatexWriter._LatexDocstringLinker-class.html" onclick="show_private();">_LatexDocstringLinker</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext-module.html#to_debug">to_debug()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext-module.html">epydoc.markup.epytext</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html#to_latex">to_latex()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html">ParsedRstDocstring</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.DocstringLinker-class.html#translate_identifier_xref">translate_identifier_xref()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.DocstringLinker-class.html">DocstringLinker</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext.Token-class.html#to_dom">to_dom()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext.Token-class.html">Token</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.test.util-module.html#to_plain">to_plain()</a><br />
+<span class="index-where">(in <a href="epydoc.test.util-module.html">epydoc.test.util</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html._HTMLDocstringLinker-class.html#translate_indexterm">translate_indexterm()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html._HTMLDocstringLinker-class.html" onclick="show_private();">_HTMLDocstringLinker</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.dotgraph.DotGraph-class.html#to_dotfile">to_dotfile()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.dotgraph.DotGraph-class.html">DotGraph</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.ConcatenatedDocstring-class.html#to_plaintext">to_plaintext()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.ConcatenatedDocstring-class.html">ConcatenatedDocstring</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.latex.LatexWriter._LatexDocstringLinker-class.html#translate_indexterm">translate_indexterm()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.latex.LatexWriter._LatexDocstringLinker-class.html" onclick="show_private();">_LatexDocstringLinker</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.dotgraph.DotGraphEdge-class.html#to_dotfile">to_dotfile()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.dotgraph.DotGraphEdge-class.html">DotGraphEdge</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.ParsedDocstring-class.html#to_plaintext">to_plaintext()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.ParsedDocstring-class.html">ParsedDocstring</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.DocstringLinker-class.html#translate_indexterm">translate_indexterm()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.DocstringLinker-class.html">DocstringLinker</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.dotgraph.DotGraphNode-class.html#to_dotfile">to_dotfile()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.dotgraph.DotGraphNode-class.html">DotGraphNode</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#to_plaintext">to_plaintext()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html">ParsedEpytextDocstring</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docintrospecter._DevNull-class.html#truncate">truncate()</a><br />
+<span class="index-where">(in <a href="epydoc.docintrospecter._DevNull-class.html" onclick="show_private();">_DevNull</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#to_dotfile">to_dotfile()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html">DotGraphUmlClassNode</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext-module.html#to_plaintext">to_plaintext()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext-module.html">epydoc.markup.epytext</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.checker.DocChecker-class.html#TYPE">TYPE</a><br />
+<span class="index-where">(in <a href="epydoc.checker.DocChecker-class.html">DocChecker</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.dotgraph.DotGraphUmlModuleNode-class.html#to_dotfile">to_dotfile()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.dotgraph.DotGraphUmlModuleNode-class.html">DotGraphUmlModuleNode</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.javadoc.ParsedJavadocDocstring-class.html#to_plaintext">to_plaintext()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.javadoc.ParsedJavadocDocstring-class.html">ParsedJavadocDocstring</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.PropertyDoc-class.html#type_descr">type_descr</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.PropertyDoc-class.html">PropertyDoc</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext-module.html#to_epytext">to_epytext()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext-module.html">epydoc.markup.epytext</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.plaintext.ParsedPlaintextDocstring-class.html#to_plaintext">to_plaintext()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.plaintext.ParsedPlaintextDocstring-class.html">ParsedPlaintextDocstring</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.VariableDoc-class.html#type_descr">type_descr</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.VariableDoc-class.html">VariableDoc</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.dotgraph.DotGraph-class.html#to_html">to_html()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.dotgraph.DotGraph-class.html">DotGraph</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html#to_plaintext">to_plaintext()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html">ParsedRstDocstring</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#type_descr">type_descr()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+</tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="U">U</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.dotgraph-module.html#uml_class_tree_graph">uml_class_tree_graph()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.dotgraph-module.html">epydoc.docwriter.dotgraph</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc-module.html#UNKNOWN">UNKNOWN</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc-module.html">epydoc.apidoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.cli.TerminalController-class.html#UP">UP</a><br />
+<span class="index-where">(in <a href="epydoc.cli.TerminalController-class.html">TerminalController</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.dotgraph-module.html#uml_package_tree_graph">uml_package_tree_graph()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.dotgraph-module.html">epydoc.docwriter.dotgraph</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext._TermsExtractor-class.html#unknown_departure">unknown_departure()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext._TermsExtractor-class.html" onclick="show_private();">_TermsExtractor</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.gui-module.html#UP_GIF">UP_GIF</a><br />
+<span class="index-where">(in <a href="epydoc.gui-module.html">epydoc.gui</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docintrospecter-module.html#UNDOCUMENTED_CLASS_VARS">UNDOCUMENTED_CLASS_VARS</a><br />
+<span class="index-where">(in <a href="epydoc.docintrospecter-module.html">epydoc.docintrospecter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#UNKNOWN_REPR">UNKNOWN_REPR</a><br />
+<span class="index-where">(in <a href="epydoc.markup.pyval_repr.PyvalColorizer-class.html">PyvalColorizer</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#url">url()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docintrospecter-module.html#UNDOCUMENTED_MODULE_VARS">UNDOCUMENTED_MODULE_VARS</a><br />
+<span class="index-where">(in <a href="epydoc.docintrospecter-module.html">epydoc.docintrospecter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docstringparser-module.html#UNKNOWN_TAG">UNKNOWN_TAG</a><br />
+<span class="index-where">(in <a href="epydoc.docstringparser-module.html">epydoc.docstringparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html._HTMLDocstringLinker-class.html#url_for">url_for()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html._HTMLDocstringLinker-class.html" onclick="show_private();">_HTMLDocstringLinker</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docstringparser-module.html#UNEXPECTED_ARG">UNEXPECTED_ARG</a><br />
+<span class="index-where">(in <a href="epydoc.docstringparser-module.html">epydoc.docstringparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html#unknown_visit">unknown_visit()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html" onclick="show_private();">_SplitFieldsTranslator</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.xlink.UrlGenerator-class.html">UrlGenerator</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.xlink-module.html">epydoc.docwriter.xlink</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#UNICODE_CODING_RE">UNICODE_CODING_RE</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html">PythonSourceColorizer</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext._SummaryExtractor-class.html#unknown_visit">unknown_visit()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext._SummaryExtractor-class.html" onclick="show_private();">_SummaryExtractor</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docstringparser-module.html#user_docfields">user_docfields()</a><br />
+<span class="index-where">(in <a href="epydoc.docstringparser-module.html">epydoc.docstringparser</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.cli.UnifiedProgressConsoleLogger-class.html">UnifiedProgressConsoleLogger</a><br />
+<span class="index-where">(in <a href="epydoc.cli-module.html">epydoc.cli</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext._TermsExtractor-class.html#unknown_visit">unknown_visit()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext._TermsExtractor-class.html" onclick="show_private();">_TermsExtractor</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.test.util-module.html">util</a><br />
+<span class="index-where">(in <a href="epydoc.test-module.html">epydoc.test</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docstringparser-module.html#unindent_docstring">unindent_docstring()</a><br />
+<span class="index-where">(in <a href="epydoc.docstringparser-module.html">epydoc.docstringparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.DottedName-class.html#UNREACHABLE">UNREACHABLE</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.DottedName-class.html">DottedName</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.util-module.html">util</a><br />
+<span class="index-where">(in <a href="epydoc-module.html">epydoc</a>)</span></td>
+</tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="V">V</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext._EpydocReader-class.html#v">v</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext._EpydocReader-class.html" onclick="show_private();">_EpydocReader</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docintrospecter-module.html#verify_name">verify_name()</a><br />
+<span class="index-where">(in <a href="epydoc.docintrospecter-module.html">epydoc.docintrospecter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext._EpydocHTMLTranslator-class.html#visit_emphasis">visit_emphasis()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext._EpydocHTMLTranslator-class.html" onclick="show_private();">_EpydocHTMLTranslator</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.VariableDoc-class.html#value">value</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.VariableDoc-class.html">VariableDoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.checker.DocChecker-class.html#VERSION">VERSION</a><br />
+<span class="index-where">(in <a href="epydoc.checker.DocChecker-class.html">DocChecker</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext._TermsExtractor-class.html#visit_emphasis">visit_emphasis()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext._TermsExtractor-class.html" onclick="show_private();">_TermsExtractor</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docintrospecter-module.html#value_repr">value_repr()</a><br />
+<span class="index-where">(in <a href="epydoc.docintrospecter-module.html">epydoc.docintrospecter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext._EpydocHTMLTranslator-class.html#visit_doctest_block">visit_doctest_block()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext._EpydocHTMLTranslator-class.html" onclick="show_private();">_EpydocHTMLTranslator</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html#visit_field">visit_field()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html" onclick="show_private();">_SplitFieldsTranslator</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.ValueDoc-class.html">ValueDoc</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc-module.html">epydoc.apidoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext._EpydocLaTeXTranslator-class.html#visit_doctest_block">visit_doctest_block()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext._EpydocLaTeXTranslator-class.html" onclick="show_private();">_EpydocLaTeXTranslator</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext._SummaryExtractor-class.html#visit_field">visit_field()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext._SummaryExtractor-class.html" onclick="show_private();">_SummaryExtractor</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.checker.DocChecker-class.html#VAR">VAR</a><br />
+<span class="index-where">(in <a href="epydoc.checker.DocChecker-class.html">DocChecker</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext._EpydocHTMLTranslator-class.html#visit_document">visit_document()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext._EpydocHTMLTranslator-class.html" onclick="show_private();">_EpydocHTMLTranslator</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html#visit_field_list">visit_field_list()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html" onclick="show_private();">_SplitFieldsTranslator</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.RoutineDoc-class.html#vararg">vararg</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.RoutineDoc-class.html">RoutineDoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext._EpydocLaTeXTranslator-class.html#visit_document">visit_document()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext._EpydocLaTeXTranslator-class.html" onclick="show_private();">_EpydocLaTeXTranslator</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext._SummaryExtractor-class.html#visit_paragraph">visit_paragraph()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext._SummaryExtractor-class.html" onclick="show_private();">_SummaryExtractor</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.NamespaceDoc-class.html#variable_groups">variable_groups</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.NamespaceDoc-class.html">NamespaceDoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html#visit_document">visit_document()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html" onclick="show_private();">_SplitFieldsTranslator</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext._TermsExtractor-class.html#visit_Text">visit_Text()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext._TermsExtractor-class.html" onclick="show_private();">_TermsExtractor</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docstringparser-module.html#VARIABLE_TAGS">VARIABLE_TAGS</a><br />
+<span class="index-where">(in <a href="epydoc.docstringparser-module.html">epydoc.docstringparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext._SummaryExtractor-class.html#visit_document">visit_document()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext._SummaryExtractor-class.html" onclick="show_private();">_SummaryExtractor</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext._EpydocHTMLTranslator-class.html#visit_title_reference">visit_title_reference()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext._EpydocHTMLTranslator-class.html" onclick="show_private();">_EpydocHTMLTranslator</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#variable_tooltip">variable_tooltip()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext._TermsExtractor-class.html#visit_document">visit_document()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext._TermsExtractor-class.html" onclick="show_private();">_TermsExtractor</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext._EpydocLaTeXTranslator-class.html#visit_title_reference">visit_title_reference()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext._EpydocLaTeXTranslator-class.html" onclick="show_private();">_EpydocLaTeXTranslator</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.VariableDoc-class.html">VariableDoc</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc-module.html">epydoc.apidoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext._EpydocHTMLTranslator-class.html#visit_dotgraph">visit_dotgraph()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext._EpydocHTMLTranslator-class.html" onclick="show_private();">_EpydocHTMLTranslator</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.xlink.VoidUrlGenerator-class.html">VoidUrlGenerator</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.xlink-module.html">epydoc.docwriter.xlink</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.NamespaceDoc-class.html#variables">variables</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.NamespaceDoc-class.html">NamespaceDoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext._EpydocLaTeXTranslator-class.html#visit_dotgraph">visit_dotgraph()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext._EpydocLaTeXTranslator-class.html" onclick="show_private();">_EpydocLaTeXTranslator</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+</tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="W">W</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.log-module.html#WARNING">WARNING</a><br />
+<span class="index-where">(in <a href="epydoc.log-module.html">epydoc.log</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#write_group_header">write_group_header()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.plaintext.PlaintextWriter-class.html#write_property">write_property()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.plaintext.PlaintextWriter-class.html">PlaintextWriter</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.checker.DocChecker-class.html#warning">warning()</a><br />
+<span class="index-where">(in <a href="epydoc.checker.DocChecker-class.html">DocChecker</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#write_header">write_header()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#write_property_details_entry">write_property_details_entry()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.log-module.html#warning">warning()</a><br />
+<span class="index-where">(in <a href="epydoc.log-module.html">epydoc.log</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.latex.LatexWriter-class.html#write_header">write_header()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.latex.LatexWriter-class.html">LatexWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.latex.LatexWriter-class.html#write_property_list_line">write_property_list_line()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.latex.LatexWriter-class.html">LatexWriter</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.gui-module.html#WARNING_COLOR">WARNING_COLOR</a><br />
+<span class="index-where">(in <a href="epydoc.gui-module.html">epydoc.gui</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#write_help">write_help()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.test.util-module.html#write_pystring_to_tmp_dir">write_pystring_to_tmp_dir()</a><br />
+<span class="index-where">(in <a href="epydoc.test.util-module.html">epydoc.test.util</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.cli.TerminalController-class.html#WHITE">WHITE</a><br />
+<span class="index-where">(in <a href="epydoc.cli.TerminalController-class.html">TerminalController</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#write_homepage">write_homepage()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#write_redirect_index">write_redirect_index()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.util-module.html#wordwrap">wordwrap()</a><br />
+<span class="index-where">(in <a href="epydoc.util-module.html">epydoc.util</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.cli-module.html#write_html">write_html()</a><br />
+<span class="index-where">(in <a href="epydoc.cli-module.html">epydoc.cli</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#write_redirect_page">write_redirect_page()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docintrospecter._DevNull-class.html#write">write()</a><br />
+<span class="index-where">(in <a href="epydoc.docintrospecter._DevNull-class.html" onclick="show_private();">_DevNull</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#write_images">write_images()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.plaintext.PlaintextWriter-class.html#write_signature">write_signature()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.plaintext.PlaintextWriter-class.html">PlaintextWriter</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.dotgraph.DotGraph-class.html#write">write()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.dotgraph.DotGraph-class.html">DotGraph</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#write_imports">write_imports()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#write_sourcecode">write_sourcecode()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#write">write()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#write_index_section">write_index_section()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#write_standard_field">write_standard_field()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.latex.LatexWriter-class.html#write">write()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.latex.LatexWriter-class.html">LatexWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#write_indexpage_header">write_indexpage_header()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.latex.LatexWriter-class.html#write_standard_field">write_standard_field()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.latex.LatexWriter-class.html">LatexWriter</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.plaintext.PlaintextWriter-class.html#write">write()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.plaintext.PlaintextWriter-class.html">PlaintextWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#write_inheritance_list">write_inheritance_list()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#write_standard_fields">write_standard_fields()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#write_api_list">write_api_list()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#write_javascript">write_javascript()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.latex.LatexWriter-class.html#write_standard_fields">write_standard_fields()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.latex.LatexWriter-class.html">LatexWriter</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#write_breadcrumbs">write_breadcrumbs()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.cli-module.html#write_latex">write_latex()</a><br />
+<span class="index-where">(in <a href="epydoc.cli-module.html">epydoc.cli</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.latex.LatexWriter-class.html#write_start_of">write_start_of()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.latex.LatexWriter-class.html">LatexWriter</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#write_class">write_class()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#write_link_index">write_link_index()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#write_summary_group">write_summary_group()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.latex.LatexWriter-class.html#write_class">write_class()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.latex.LatexWriter-class.html">LatexWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.plaintext.PlaintextWriter-class.html#write_list">write_list()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.plaintext.PlaintextWriter-class.html">PlaintextWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#write_summary_line">write_summary_line()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.plaintext.PlaintextWriter-class.html#write_class">write_class()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.plaintext.PlaintextWriter-class.html">PlaintextWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#write_metadata_index">write_metadata_index()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#write_summary_table">write_summary_table()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.latex.LatexWriter-class.html#write_class_list">write_class_list()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.latex.LatexWriter-class.html">LatexWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#write_module">write_module()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#write_table_header">write_table_header()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.latex.LatexWriter-class.html#write_class_list_line">write_class_list_line()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.latex.LatexWriter-class.html">LatexWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.latex.LatexWriter-class.html#write_module">write_module()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.latex.LatexWriter-class.html">LatexWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.cli-module.html#write_text">write_text()</a><br />
+<span class="index-where">(in <a href="epydoc.cli-module.html">epydoc.cli</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#write_class_tree">write_class_tree()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.plaintext.PlaintextWriter-class.html#write_module">write_module()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.plaintext.PlaintextWriter-class.html">PlaintextWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#write_toc">write_toc()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#write_class_tree_graph">write_class_tree_graph()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#write_module_list">write_module_list()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#write_toc_section">write_toc_section()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#write_class_tree_item">write_class_tree_item()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.latex.LatexWriter-class.html#write_module_list">write_module_list()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.latex.LatexWriter-class.html">LatexWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.latex.LatexWriter-class.html#write_topfile">write_topfile()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.latex.LatexWriter-class.html">LatexWriter</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#write_css">write_css()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#write_module_toc">write_module_toc()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#write_treepage_header">write_treepage_header()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#write_details_entry">write_details_entry()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#write_module_tree">write_module_tree()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#write_url_record">write_url_record()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#write_details_list">write_details_list()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.latex.LatexWriter-class.html#write_module_tree">write_module_tree()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.latex.LatexWriter-class.html">LatexWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.latex.LatexWriter-class.html#write_var_group">write_var_group()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.latex.LatexWriter-class.html">LatexWriter</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#write_footer">write_footer()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#write_module_tree_item">write_module_tree_item()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.latex.LatexWriter-class.html#write_var_inheritance_list">write_var_inheritance_list()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.latex.LatexWriter-class.html">LatexWriter</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#write_frames_index">write_frames_index()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.latex.LatexWriter-class.html#write_module_tree_item">write_module_tree_item()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.latex.LatexWriter-class.html">LatexWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#write_var_list">write_var_list()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.latex.LatexWriter-class.html#write_func_group">write_func_group()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.latex.LatexWriter-class.html">LatexWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#write_navbar">write_navbar()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.latex.LatexWriter-class.html#write_var_list">write_var_list()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.latex.LatexWriter-class.html">LatexWriter</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.latex.LatexWriter-class.html#write_func_inheritance_list">write_func_inheritance_list()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.latex.LatexWriter-class.html">LatexWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.cli.HTMLLogger-class.html#write_options">write_options()</a><br />
+<span class="index-where">(in <a href="epydoc.cli.HTMLLogger-class.html">HTMLLogger</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.latex.LatexWriter-class.html#write_var_list_line">write_var_list_line()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.latex.LatexWriter-class.html">LatexWriter</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.latex.LatexWriter-class.html#write_func_list">write_func_list()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.latex.LatexWriter-class.html">LatexWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.cli-module.html#write_pickle">write_pickle()</a><br />
+<span class="index-where">(in <a href="epydoc.cli-module.html">epydoc.cli</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.plaintext.PlaintextWriter-class.html#write_variable">write_variable()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.plaintext.PlaintextWriter-class.html">PlaintextWriter</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.latex.LatexWriter-class.html#write_func_list_box">write_func_list_box()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.latex.LatexWriter-class.html">LatexWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.latex.LatexWriter-class.html#write_preamble">write_preamble()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.latex.LatexWriter-class.html">LatexWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#write_variable_details_entry">write_variable_details_entry()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.plaintext.PlaintextWriter-class.html#write_function">write_function()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.plaintext.PlaintextWriter-class.html">PlaintextWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.gui-module.html#WRITE_PROGRESS">WRITE_PROGRESS</a><br />
+<span class="index-where">(in <a href="epydoc.gui-module.html">epydoc.gui</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docintrospecter._DevNull-class.html#writelines">writelines()</a><br />
+<span class="index-where">(in <a href="epydoc.docintrospecter._DevNull-class.html" onclick="show_private();">_DevNull</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#write_function_details_entry">write_function_details_entry()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#write_project_toc">write_project_toc()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+</tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="X">X</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.xlink-module.html">xlink</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter-module.html">epydoc.docwriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.doctest.XMLDoctestColorizer-class.html">XMLDoctestColorizer</a><br />
+<span class="index-where">(in <a href="epydoc.markup.doctest-module.html">epydoc.markup.doctest</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+</tr>
+<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="Y">Y</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.cli.TerminalController-class.html#YELLOW">YELLOW</a><br />
+<span class="index-where">(in <a href="epydoc.cli.TerminalController-class.html">TerminalController</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+<td width="33%" class="link-index"> </td>
+</tr>
+<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="_">_</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.DottedName-class.html#__add__">__add__()</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.DottedName-class.html">DottedName</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.checker.DocChecker-class.html#_check_class">_check_class()</a><br />
+<span class="index-where">(in <a href="epydoc.checker.DocChecker-class.html">DocChecker</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.pyval_repr._Linebreak-class.html">_Linebreak</a><br />
+<span class="index-where">(in <a href="epydoc.markup.pyval_repr-module.html">epydoc.markup.pyval_repr</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.ParsedDocstring-class.html#__add__">__add__()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.ParsedDocstring-class.html">ParsedDocstring</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.checker.DocChecker-class.html#_check_func">_check_func()</a><br />
+<span class="index-where">(in <a href="epydoc.checker.DocChecker-class.html">DocChecker</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_link_attribute">_link_attribute()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html">DotGraphUmlClassNode</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc-module.html#__author__">__author__</a><br />
+<span class="index-where">(in <a href="epydoc-module.html">epydoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.javadoc.ParsedJavadocDocstring-class.html#_check_links">_check_links()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.javadoc.ParsedJavadocDocstring-class.html">ParsedJavadocDocstring</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext-module.html#_LINK_COLORIZING_TAGS">_LINK_COLORIZING_TAGS</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext-module.html">epydoc.markup.epytext</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.APIDoc-class.html#__cmp__">__cmp__()</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.APIDoc-class.html">APIDoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.checker.DocChecker-class.html#_check_module">_check_module()</a><br />
+<span class="index-where">(in <a href="epydoc.checker.DocChecker-class.html">DocChecker</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.dotgraph.DotGraph-class.html#_link_href">_link_href()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.dotgraph.DotGraph-class.html">DotGraph</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.DottedName-class.html#__cmp__">__cmp__()</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.DottedName-class.html">DottedName</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.checker.DocChecker-class.html#_check_property">_check_property()</a><br />
+<span class="index-where">(in <a href="epydoc.checker.DocChecker-class.html">DocChecker</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.javadoc.ParsedJavadocDocstring-class.html#_LINK_RE">_LINK_RE</a><br />
+<span class="index-where">(in <a href="epydoc.markup.javadoc.ParsedJavadocDocstring-class.html">ParsedJavadocDocstring</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docstringparser.DocstringField-class.html#__cmp__">__cmp__()</a><br />
+<span class="index-where">(in <a href="epydoc.docstringparser.DocstringField-class.html">DocstringField</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.checker.DocChecker-class.html#_check_var">_check_var()</a><br />
+<span class="index-where">(in <a href="epydoc.checker.DocChecker-class.html">DocChecker</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.javadoc.ParsedJavadocDocstring-class.html#_LINK_SPLIT_RE">_LINK_SPLIT_RE</a><br />
+<span class="index-where">(in <a href="epydoc.markup.javadoc.ParsedJavadocDocstring-class.html">ParsedJavadocDocstring</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.ParseError-class.html#__cmp__">__cmp__()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.ParseError-class.html">ParseError</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docintrospecter-module.html#_CLASS_TYPES">_CLASS_TYPES</a><br />
+<span class="index-where">(in <a href="epydoc.docintrospecter-module.html">epydoc.docintrospecter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext-module.html#_LIST_BULLET_RE">_LIST_BULLET_RE</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext-module.html">epydoc.markup.epytext</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext-module.html#__doc__">__doc__</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext-module.html">epydoc.markup.epytext</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_COLLAPSED_LABEL">_COLLAPSED_LABEL</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html">DotGraphUmlClassNode</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.log-module.html#_loggers">_loggers</a><br />
+<span class="index-where">(in <a href="epydoc.log-module.html">epydoc.log</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docintrospecter-module.html#__future_check_works">__future_check_works</a><br />
+<span class="index-where">(in <a href="epydoc.docintrospecter-module.html">epydoc.docintrospecter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.dotgraph.DotGraphUmlModuleNode-class.html#_color">_color()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.dotgraph.DotGraphUmlModuleNode-class.html">DotGraphUmlModuleNode</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docintrospecter-module.html#_lookup">_lookup()</a><br />
+<span class="index-where">(in <a href="epydoc.docintrospecter-module.html">epydoc.docintrospecter</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.DottedName-class.html#__getitem__">__getitem__()</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.DottedName-class.html">DottedName</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.dotgraph.DotGraphUmlModuleNode-class.html#_COLOR_DIFF">_COLOR_DIFF</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.dotgraph.DotGraphUmlModuleNode-class.html">DotGraphUmlModuleNode</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup-module.html#_markup_language_registry">_markup_language_registry</a><br />
+<span class="index-where">(in <a href="epydoc.markup-module.html">epydoc.markup</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.dotgraph.DotGraphEdge-class.html#__getitem__">__getitem__()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.dotgraph.DotGraphEdge-class.html">DotGraphEdge</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html_css-module.html#_COLOR_RE">_COLOR_RE</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html_css-module.html">epydoc.docwriter.html_css</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docbuilder.BuildOptions-class.html#_matches_filter">_matches_filter()</a><br />
+<span class="index-where">(in <a href="epydoc.docbuilder.BuildOptions-class.html">BuildOptions</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.dotgraph.DotGraphNode-class.html#__getitem__">__getitem__()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.dotgraph.DotGraphNode-class.html">DotGraphNode</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext-module.html#_colorize">_colorize()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext-module.html">epydoc.markup.epytext</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.pyval_repr._Maxlines-class.html">_Maxlines</a><br />
+<span class="index-where">(in <a href="epydoc.markup.pyval_repr-module.html">epydoc.markup.pyval_repr</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.ValueDoc-class.html#__getstate__">__getstate__()</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.ValueDoc-class.html">ValueDoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_colorize">_colorize()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.pyval_repr.PyvalColorizer-class.html">PyvalColorizer</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docbuilder-module.html#_merge_posargs_and_defaults">_merge_posargs_and_defaults()</a><br />
+<span class="index-where">(in <a href="epydoc.docbuilder-module.html">epydoc.docbuilder</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.APIDoc-class.html#__has_been_hashed">__has_been_hashed</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.APIDoc-class.html">APIDoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_colorize_dict">_colorize_dict()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.pyval_repr.PyvalColorizer-class.html">PyvalColorizer</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.cli.HTMLLogger-class.html#_message">_message()</a><br />
+<span class="index-where">(in <a href="epydoc.cli.HTMLLogger-class.html">HTMLLogger</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.APIDoc-class.html#__hash__">__hash__()</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.APIDoc-class.html">APIDoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext-module.html#_colorize_graph">_colorize_graph()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext-module.html">epydoc.markup.epytext</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.gui.EpydocGUI-class.html#_messages_toggle">_messages_toggle()</a><br />
+<span class="index-where">(in <a href="epydoc.gui.EpydocGUI-class.html">EpydocGUI</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.DottedName-class.html#__hash__">__hash__()</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.DottedName-class.html">DottedName</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_colorize_iter">_colorize_iter()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.pyval_repr.PyvalColorizer-class.html">PyvalColorizer</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#_mkdir">_mkdir()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docstringparser.DocstringField-class.html#__hash__">__hash__()</a><br />
+<span class="index-where">(in <a href="epydoc.docstringparser.DocstringField-class.html">DocstringField</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext-module.html#_colorize_link">_colorize_link()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext-module.html">epydoc.markup.epytext</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.latex.LatexWriter-class.html#_mkdir">_mkdir()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.latex.LatexWriter-class.html">LatexWriter</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.APIDoc-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.APIDoc-class.html">APIDoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_colorize_re">_colorize_re()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.pyval_repr.PyvalColorizer-class.html">PyvalColorizer</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.dotgraph.DotGraphUmlModuleNode-class.html#_MODULE_LABEL">_MODULE_LABEL</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.dotgraph.DotGraphUmlModuleNode-class.html">DotGraphUmlModuleNode</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.DocIndex-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.DocIndex-class.html">DocIndex</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_colorize_re_flags">_colorize_re_flags()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.pyval_repr.PyvalColorizer-class.html">PyvalColorizer</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docparser-module.html#_module_var_toktree">_module_var_toktree()</a><br />
+<span class="index-where">(in <a href="epydoc.docparser-module.html">epydoc.docparser</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.DottedName-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.DottedName-class.html">DottedName</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_colorize_re_tree">_colorize_re_tree()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.pyval_repr.PyvalColorizer-class.html">PyvalColorizer</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docparser-module.html#_moduledoc_cache">_moduledoc_cache</a><br />
+<span class="index-where">(in <a href="epydoc.docparser-module.html">epydoc.docparser</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.NamespaceDoc-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.NamespaceDoc-class.html">NamespaceDoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_colorize_str">_colorize_str()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.pyval_repr.PyvalColorizer-class.html">PyvalColorizer</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_multiline">_multiline()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.pyval_repr.PyvalColorizer-class.html">PyvalColorizer</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.VariableDoc-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.VariableDoc-class.html">VariableDoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.pyval_repr._ColorizerState-class.html">_ColorizerState</a><br />
+<span class="index-where">(in <a href="epydoc.markup.pyval_repr-module.html">epydoc.markup.pyval_repr</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.checker.DocChecker-class.html#_name">_name()</a><br />
+<span class="index-where">(in <a href="epydoc.checker.DocChecker-class.html">DocChecker</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.apidoc._Sentinel-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc._Sentinel-class.html" onclick="show_private();">_Sentinel</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext-module.html#_COLORIZING_TAGS">_COLORIZING_TAGS</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext-module.html">epydoc.markup.epytext</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docbuilder-module.html#_name_scores">_name_scores</a><br />
+<span class="index-where">(in <a href="epydoc.docbuilder-module.html">epydoc.docbuilder</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.checker.DocChecker-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="epydoc.checker.DocChecker-class.html">DocChecker</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.cli.TerminalController-class.html#_COLORS">_COLORS</a><br />
+<span class="index-where">(in <a href="epydoc.cli.TerminalController-class.html">TerminalController</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.dotgraph.DotGraphUmlModuleNode-class.html#_NESTED_BODY">_NESTED_BODY</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.dotgraph.DotGraphUmlModuleNode-class.html">DotGraphUmlModuleNode</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.cli.ConsoleLogger-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="epydoc.cli.ConsoleLogger-class.html">ConsoleLogger</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.doctest.DoctestColorizer-class.html#_COMMENT_GRP">_COMMENT_GRP</a><br />
+<span class="index-where">(in <a href="epydoc.markup.doctest.DoctestColorizer-class.html">DoctestColorizer</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.dotgraph.DotGraphUmlModuleNode-class.html#_NESTED_BODY_ROW">_NESTED_BODY_ROW</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.dotgraph.DotGraphUmlModuleNode-class.html">DotGraphUmlModuleNode</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.cli.HTMLLogger-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="epydoc.cli.HTMLLogger-class.html">HTMLLogger</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.xlink.ApiLinkReader-class.html#_conf">_conf</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.xlink.ApiLinkReader-class.html">ApiLinkReader</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.gui.EpydocGUI-class.html#_new">_new()</a><br />
+<span class="index-where">(in <a href="epydoc.gui.EpydocGUI-class.html">EpydocGUI</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.cli.TerminalController-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="epydoc.cli.TerminalController-class.html">TerminalController</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.gui.EpydocGUI-class.html#_configure">_configure()</a><br />
+<span class="index-where">(in <a href="epydoc.gui.EpydocGUI-class.html">EpydocGUI</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.dotgraph.DotGraphNode-class.html#_next_id">_next_id</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.dotgraph.DotGraphNode-class.html">DotGraphNode</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.cli.UnifiedProgressConsoleLogger-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="epydoc.cli.UnifiedProgressConsoleLogger-class.html">UnifiedProgressConsoleLogger</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext-module.html#_construct_callgraph">_construct_callgraph()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext-module.html">epydoc.markup.restructuredtext</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#_next_uid">_next_uid</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html">PythonSourceColorizer</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docbuilder.BuildOptions-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="epydoc.docbuilder.BuildOptions-class.html">BuildOptions</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext-module.html#_construct_classtree">_construct_classtree()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext-module.html">epydoc.markup.restructuredtext</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.checker-module.html#_NO_BASIC">_NO_BASIC</a><br />
+<span class="index-where">(in <a href="epydoc.checker-module.html">epydoc.checker</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docbuilder._ProgressEstimator-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="epydoc.docbuilder._ProgressEstimator-class.html" onclick="show_private();">_ProgressEstimator</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext-module.html#_construct_digraph">_construct_digraph()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext-module.html">epydoc.markup.restructuredtext</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.checker-module.html#_NO_DOCS">_NO_DOCS</a><br />
+<span class="index-where">(in <a href="epydoc.checker-module.html">epydoc.checker</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docintrospecter._DevNull-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="epydoc.docintrospecter._DevNull-class.html" onclick="show_private();">_DevNull</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext-module.html#_construct_importgraph">_construct_importgraph()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext-module.html">epydoc.markup.restructuredtext</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.checker-module.html#_NO_PARAM">_NO_PARAM</a><br />
+<span class="index-where">(in <a href="epydoc.checker-module.html">epydoc.checker</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docstringparser.DocstringField-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="epydoc.docstringparser.DocstringField-class.html">DocstringField</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext-module.html#_construct_packagetree">_construct_packagetree()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext-module.html">epydoc.markup.restructuredtext</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.checker-module.html#_NO_RETURN">_NO_RETURN</a><br />
+<span class="index-where">(in <a href="epydoc.checker-module.html">epydoc.checker</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.dotgraph.DotGraph-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.dotgraph.DotGraph-class.html">DotGraph</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#_crumb">_crumb()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.DottedName-class.html#_ok_identifiers">_ok_identifiers</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.DottedName-class.html">DottedName</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.dotgraph.DotGraphEdge-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.dotgraph.DotGraphEdge-class.html">DotGraphEdge</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html_css-module.html#_darken_darks">_darken_darks()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html_css-module.html">epydoc.docwriter.html_css</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.gui.EpydocGUI-class.html#_open">_open()</a><br />
+<span class="index-where">(in <a href="epydoc.gui.EpydocGUI-class.html">EpydocGUI</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.dotgraph.DotGraphNode-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.dotgraph.DotGraphNode-class.html">DotGraphNode</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.APIDoc-class.html#_debug_setattr">_debug_setattr()</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.APIDoc-class.html">APIDoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_operation_arg">_operation_arg()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html">DotGraphUmlClassNode</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html">DotGraphUmlClassNode</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.doctest.DoctestColorizer-class.html#_DEFINE_GRP">_DEFINE_GRP</a><br />
+<span class="index-where">(in <a href="epydoc.markup.doctest.DoctestColorizer-class.html">DoctestColorizer</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_OPERATION_CELL">_OPERATION_CELL</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html">DotGraphUmlClassNode</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.dotgraph.DotGraphUmlModuleNode-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.dotgraph.DotGraphUmlModuleNode-class.html">DotGraphUmlModuleNode</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.gui.EpydocGUI-class.html#_delete_module">_delete_module()</a><br />
+<span class="index-where">(in <a href="epydoc.gui.EpydocGUI-class.html">EpydocGUI</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_operation_cell">_operation_cell()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html">DotGraphUmlClassNode</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.plaintext.PlaintextWriter-class.html#_descr">_descr()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.plaintext.PlaintextWriter-class.html">PlaintextWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.gui.EpydocGUI-class.html#_options_toggle">_options_toggle()</a><br />
+<span class="index-where">(in <a href="epydoc.gui.EpydocGUI-class.html">EpydocGUI</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html._HTMLDocstringLinker-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html._HTMLDocstringLinker-class.html" onclick="show_private();">_HTMLDocstringLinker</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docstringparser-module.html#_descr_to_docstring_field">_descr_to_docstring_field()</a><br />
+<span class="index-where">(in <a href="epydoc.docstringparser-module.html">epydoc.docstringparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_output">_output()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.pyval_repr.PyvalColorizer-class.html">PyvalColorizer</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html">PythonSourceColorizer</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docstringparser-module.html#_descr_to_identifiers">_descr_to_identifiers()</a><br />
+<span class="index-where">(in <a href="epydoc.docstringparser-module.html">epydoc.docstringparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docparser-module.html#_parse_package">_parse_package()</a><br />
+<span class="index-where">(in <a href="epydoc.docparser-module.html">epydoc.docparser</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.latex.LatexWriter-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.latex.LatexWriter-class.html">LatexWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.latex.LatexWriter-class.html#_descrlist">_descrlist()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.latex.LatexWriter-class.html">LatexWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup-module.html#_parse_warn">_parse_warn()</a><br />
+<span class="index-where">(in <a href="epydoc.markup-module.html">epydoc.markup</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.xlink.ApiLinkReader-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.xlink.ApiLinkReader-class.html">ApiLinkReader</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docintrospecter-module.html#_dev_null">_dev_null</a><br />
+<span class="index-where">(in <a href="epydoc.docintrospecter-module.html">epydoc.docintrospecter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup-module.html#_parse_warnings">_parse_warnings</a><br />
+<span class="index-where">(in <a href="epydoc.markup-module.html">epydoc.markup</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.xlink.DocUrlGenerator-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.xlink.DocUrlGenerator-class.html">DocUrlGenerator</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docintrospecter._DevNull-class.html">_DevNull</a><br />
+<span class="index-where">(in <a href="epydoc.docintrospecter-module.html">epydoc.docintrospecter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext-module.html#_pop_completed_blocks">_pop_completed_blocks()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext-module.html">epydoc.markup.epytext</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.gui.EpydocGUI-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="epydoc.gui.EpydocGUI-class.html">EpydocGUI</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.ClassDoc-class.html#_dfs_bases">_dfs_bases()</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.ClassDoc-class.html">ClassDoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc-module.html#_pp_apidoc">_pp_apidoc()</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc-module.html">epydoc.apidoc</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.gui.GUILogger-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="epydoc.gui.GUILogger-class.html">GUILogger</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext-module.html#_dir_option">_dir_option()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext-module.html">epydoc.markup.restructuredtext</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc-module.html#_pp_dict">_pp_dict()</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc-module.html">epydoc.apidoc</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.log.SimpleLogger-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="epydoc.log.SimpleLogger-class.html">SimpleLogger</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#_doc_or_ancestor_is_private">_doc_or_ancestor_is_private()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc-module.html#_pp_list">_pp_list()</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc-module.html">epydoc.apidoc</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.ConcatenatedDocstring-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.ConcatenatedDocstring-class.html">ConcatenatedDocstring</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.latex.LatexWriter-class.html#_docstring_linker">_docstring_linker</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.latex.LatexWriter-class.html">LatexWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docparser-module.html#_pp_toktree">_pp_toktree()</a><br />
+<span class="index-where">(in <a href="epydoc.docparser-module.html">epydoc.docparser</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.Field-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.Field-class.html">Field</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext._DocumentPseudoWriter-class.html">_DocumentPseudoWriter</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext-module.html">epydoc.markup.restructuredtext</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docparser-module.html#_pp_toktree_add_piece">_pp_toktree_add_piece()</a><br />
+<span class="index-where">(in <a href="epydoc.docparser-module.html">epydoc.docparser</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.ParseError-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.ParseError-class.html">ParseError</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.dotgraph-module.html#_dot_version">_dot_version</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.dotgraph-module.html">epydoc.docwriter.dotgraph</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc-module.html#_pp_val">_pp_val()</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc-module.html">epydoc.apidoc</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext.ColorizingError-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext.ColorizingError-class.html">ColorizingError</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.dotgraph-module.html#_DOT_VERSION_RE">_DOT_VERSION_RE</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.dotgraph-module.html">epydoc.docwriter.dotgraph</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#_private_subclasses">_private_subclasses()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext.Element-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext.Element-class.html">Element</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.cli.HTMLLogger-class.html#_elapsed_time">_elapsed_time()</a><br />
+<span class="index-where">(in <a href="epydoc.cli.HTMLLogger-class.html">HTMLLogger</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docparser-module.html#_process_fromstar_import">_process_fromstar_import()</a><br />
+<span class="index-where">(in <a href="epydoc.docparser-module.html">epydoc.docparser</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html">ParsedEpytextDocstring</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.gui.EpydocGUI-class.html#_entry_module">_entry_module()</a><br />
+<span class="index-where">(in <a href="epydoc.gui.EpydocGUI-class.html">EpydocGUI</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.cli-module.html#_profile">_profile()</a><br />
+<span class="index-where">(in <a href="epydoc.cli-module.html">epydoc.cli</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext.Token-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext.Token-class.html">Token</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext._EpydocHTMLTranslator-class.html">_EpydocHTMLTranslator</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext-module.html">epydoc.markup.restructuredtext</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docbuilder._ProgressEstimator-class.html">_ProgressEstimator</a><br />
+<span class="index-where">(in <a href="epydoc.docbuilder-module.html">epydoc.docbuilder</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.javadoc.ParsedJavadocDocstring-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.javadoc.ParsedJavadocDocstring-class.html">ParsedJavadocDocstring</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext._EpydocLaTeXTranslator-class.html">_EpydocLaTeXTranslator</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext-module.html">epydoc.markup.restructuredtext</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.doctest.DoctestColorizer-class.html#_PROMPT1_GRP">_PROMPT1_GRP</a><br />
+<span class="index-where">(in <a href="epydoc.markup.doctest.DoctestColorizer-class.html">DoctestColorizer</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.plaintext.ParsedPlaintextDocstring-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.plaintext.ParsedPlaintextDocstring-class.html">ParsedPlaintextDocstring</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext._EpydocReader-class.html">_EpydocReader</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext-module.html">epydoc.markup.restructuredtext</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.doctest.DoctestColorizer-class.html#_PROMPT2_GRP">_PROMPT2_GRP</a><br />
+<span class="index-where">(in <a href="epydoc.markup.doctest.DoctestColorizer-class.html">DoctestColorizer</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.pyval_repr.ColorizedPyvalRepr-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.pyval_repr.ColorizedPyvalRepr-class.html">ColorizedPyvalRepr</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.gui-module.html#_error">_error()</a><br />
+<span class="index-where">(in <a href="epydoc.gui-module.html">epydoc.gui</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docparser-module.html#_proxy_base">_proxy_base()</a><br />
+<span class="index-where">(in <a href="epydoc.docparser-module.html">epydoc.docparser</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.pyval_repr.PyvalColorizer-class.html">PyvalColorizer</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext-module.html#_ESCAPES">_ESCAPES</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext-module.html">epydoc.markup.epytext</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_QUALIFIER_CELL">_QUALIFIER_CELL</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html">DotGraphUmlClassNode</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.pyval_repr._ColorizerState-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.pyval_repr._ColorizerState-class.html" onclick="show_private();">_ColorizerState</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docbuilder._ProgressEstimator-class.html#_est_pkg_modules">_est_pkg_modules()</a><br />
+<span class="index-where">(in <a href="epydoc.docbuilder._ProgressEstimator-class.html" onclick="show_private();">_ProgressEstimator</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_qualifier_cell">_qualifier_cell()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html">DotGraphUmlClassNode</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html">ParsedRstDocstring</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html._HTMLDocstringLinker-class.html#_failed_xref">_failed_xref()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html._HTMLDocstringLinker-class.html" onclick="show_private();">_HTMLDocstringLinker</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_QUALIFIER_DIV">_QUALIFIER_DIV</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html">DotGraphUmlClassNode</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext._DocumentPseudoWriter-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext._DocumentPseudoWriter-class.html" onclick="show_private();">_DocumentPseudoWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext-module.html#_FIELD_BULLET_RE">_FIELD_BULLET_RE</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext-module.html">epydoc.markup.epytext</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext-module.html#_raise_graphs">_raise_graphs()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext-module.html">epydoc.markup.epytext</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext._EpydocHTMLTranslator-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext._EpydocHTMLTranslator-class.html" onclick="show_private();">_EpydocHTMLTranslator</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docstringparser-module.html#_field_dispatch_table">_field_dispatch_table</a><br />
+<span class="index-where">(in <a href="epydoc.docstringparser-module.html">epydoc.docstringparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.cli.ConsoleLogger-class.html#_report">_report()</a><br />
+<span class="index-where">(in <a href="epydoc.cli.ConsoleLogger-class.html">ConsoleLogger</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext._EpydocLaTeXTranslator-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext._EpydocLaTeXTranslator-class.html" onclick="show_private();">_EpydocLaTeXTranslator</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.javadoc.ParsedJavadocDocstring-class.html#_FIELD_RE">_FIELD_RE</a><br />
+<span class="index-where">(in <a href="epydoc.markup.javadoc.ParsedJavadocDocstring-class.html">ParsedJavadocDocstring</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.ClassDoc-class.html#_report_bad_base">_report_bad_base()</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.ClassDoc-class.html">ClassDoc</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext._EpydocReader-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext._EpydocReader-class.html" onclick="show_private();">_EpydocReader</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docparser-module.html#_find">_find()</a><br />
+<span class="index-where">(in <a href="epydoc.docparser-module.html">epydoc.docparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docbuilder-module.html#_report_errors">_report_errors()</a><br />
+<span class="index-where">(in <a href="epydoc.docbuilder-module.html">epydoc.docbuilder</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html" onclick="show_private();">_SplitFieldsTranslator</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docintrospecter-module.html#_find_function_module">_find_function_module()</a><br />
+<span class="index-where">(in <a href="epydoc.docintrospecter-module.html">epydoc.docintrospecter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docbuilder-module.html#_report_valdoc_progress">_report_valdoc_progress()</a><br />
+<span class="index-where">(in <a href="epydoc.docbuilder-module.html">epydoc.docbuilder</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext._SummaryExtractor-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext._SummaryExtractor-class.html" onclick="show_private();">_SummaryExtractor</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docparser-module.html#_find_in_namespace">_find_in_namespace()</a><br />
+<span class="index-where">(in <a href="epydoc.docparser-module.html">epydoc.docparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.cli-module.html#_RERUN_LATEX_RE">_RERUN_LATEX_RE</a><br />
+<span class="index-where">(in <a href="epydoc.cli-module.html">epydoc.cli</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext._TermsExtractor-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext._TermsExtractor-class.html" onclick="show_private();">_TermsExtractor</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#_find_top_page">_find_top_page()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.dotgraph.DotGraph-class.html#_run_dot">_run_dot()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.dotgraph.DotGraph-class.html">DotGraph</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext.dotgraph-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext.dotgraph-class.html">dotgraph</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.latex.LatexWriter-class.html#_find_tree_width">_find_tree_width()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.latex.LatexWriter-class.html">LatexWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html_css-module.html#_rv">_rv()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html_css-module.html">epydoc.docwriter.html_css</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.util.RunSubprocessError-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="epydoc.util.RunSubprocessError-class.html">RunSubprocessError</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html#_FIX_DECORATOR_RE">_FIX_DECORATOR_RE</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html">PythonSourceColorizer</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.gui.EpydocGUI-class.html#_save">_save()</a><br />
+<span class="index-where">(in <a href="epydoc.gui.EpydocGUI-class.html">EpydocGUI</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.DottedName-class.html#__len__">__len__()</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.DottedName-class.html">DottedName</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docbuilder-module.html#_fix_self_shadowing_var">_fix_self_shadowing_var()</a><br />
+<span class="index-where">(in <a href="epydoc.docbuilder-module.html">epydoc.docbuilder</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.gui.EpydocGUI-class.html#_saveas">_saveas()</a><br />
+<span class="index-where">(in <a href="epydoc.gui.EpydocGUI-class.html">EpydocGUI</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc-module.html#__license__">__license__</a><br />
+<span class="index-where">(in <a href="epydoc-module.html">epydoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc-module.html#_flatten">_flatten()</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc-module.html">epydoc.apidoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc._Sentinel-class.html">_Sentinel</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc-module.html">epydoc.apidoc</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.APIDoc-class.html#__mergeset">__mergeset</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.APIDoc-class.html">APIDoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html_colorize-module.html#_FOOT">_FOOT</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html_colorize-module.html">epydoc.docwriter.html_colorize</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.xlink.UrlGenerator-class.html#_SEP_RE">_SEP_RE</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.xlink.UrlGenerator-class.html">UrlGenerator</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.apidoc._Sentinel-class.html#__nonzero__">__nonzero__()</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc._Sentinel-class.html" onclick="show_private();">_Sentinel</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.cli.ConsoleLogger-class.html#_format">_format()</a><br />
+<span class="index-where">(in <a href="epydoc.cli.ConsoleLogger-class.html">ConsoleLogger</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html_css-module.html#_set_colors">_set_colors()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html_css-module.html">epydoc.docwriter.html_css</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.DottedName-class.html#__radd__">__radd__()</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.DottedName-class.html">DottedName</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.latex.LatexWriter-class.html#_FUNC_GROUP_HEADER">_FUNC_GROUP_HEADER</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.latex.LatexWriter-class.html">LatexWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docstringparser-module.html#_SIGNATURE_RE">_SIGNATURE_RE</a><br />
+<span class="index-where">(in <a href="epydoc.docstringparser-module.html">epydoc.docstringparser</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.APIDoc-class.html#__repr__">__repr__()</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.APIDoc-class.html">APIDoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.DocIndex-class.html#_get">_get()</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.DocIndex-class.html">DocIndex</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_sort">_sort()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.pyval_repr.PyvalColorizer-class.html">PyvalColorizer</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.DottedName-class.html#__repr__">__repr__()</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.DottedName-class.html">DottedName</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.VariableDoc-class.html#_get_defining_module">_get_defining_module()</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.VariableDoc-class.html">VariableDoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html">_SplitFieldsTranslator</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext-module.html">epydoc.markup.restructuredtext</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.ValueDoc-class.html#__repr__">__repr__()</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.ValueDoc-class.html">ValueDoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docbuilder-module.html#_get_docs_from_items">_get_docs_from_items()</a><br />
+<span class="index-where">(in <a href="epydoc.docbuilder-module.html">epydoc.docbuilder</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.gui.GUILogger-class.html#_STAGES">_STAGES</a><br />
+<span class="index-where">(in <a href="epydoc.gui.GUILogger-class.html">GUILogger</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.VariableDoc-class.html#__repr__">__repr__()</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.VariableDoc-class.html">VariableDoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docbuilder-module.html#_get_docs_from_module_file">_get_docs_from_module_file()</a><br />
+<span class="index-where">(in <a href="epydoc.docbuilder-module.html">epydoc.docbuilder</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.cli-module.html#_str_to_bool">_str_to_bool()</a><br />
+<span class="index-where">(in <a href="epydoc.cli-module.html">epydoc.cli</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.apidoc._Sentinel-class.html#__repr__">__repr__()</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc._Sentinel-class.html" onclick="show_private();">_Sentinel</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docbuilder-module.html#_get_docs_from_pyname">_get_docs_from_pyname()</a><br />
+<span class="index-where">(in <a href="epydoc.docbuilder-module.html">epydoc.docbuilder</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.cli-module.html#_str_to_int">_str_to_int()</a><br />
+<span class="index-where">(in <a href="epydoc.cli-module.html">epydoc.cli</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docstringparser.DocstringField-class.html#__repr__">__repr__()</a><br />
+<span class="index-where">(in <a href="epydoc.docstringparser.DocstringField-class.html">DocstringField</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docbuilder-module.html#_get_docs_from_pyobject">_get_docs_from_pyobject()</a><br />
+<span class="index-where">(in <a href="epydoc.docbuilder-module.html">epydoc.docbuilder</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.cli-module.html#_str_to_list">_str_to_list()</a><br />
+<span class="index-where">(in <a href="epydoc.cli-module.html">epydoc.cli</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.Field-class.html#__repr__">__repr__()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.Field-class.html">Field</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docbuilder-module.html#_get_docs_from_pyscript">_get_docs_from_pyscript()</a><br />
+<span class="index-where">(in <a href="epydoc.docbuilder-module.html">epydoc.docbuilder</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.cli.TerminalController-class.html#_STRING_CAPABILITIES">_STRING_CAPABILITIES</a><br />
+<span class="index-where">(in <a href="epydoc.cli.TerminalController-class.html">TerminalController</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.ParseError-class.html#__repr__">__repr__()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.ParseError-class.html">ParseError</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docbuilder-module.html#_get_docs_from_submodules">_get_docs_from_submodules()</a><br />
+<span class="index-where">(in <a href="epydoc.docbuilder-module.html">epydoc.docbuilder</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.doctest.DoctestColorizer-class.html#_STRING_GRP">_STRING_GRP</a><br />
+<span class="index-where">(in <a href="epydoc.markup.doctest.DoctestColorizer-class.html">DoctestColorizer</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext.Element-class.html#__repr__">__repr__()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext.Element-class.html">Element</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docparser-module.html#_get_filename">_get_filename()</a><br />
+<span class="index-where">(in <a href="epydoc.docparser-module.html">epydoc.docparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_summary">_summary()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html">DotGraphUmlClassNode</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext.Token-class.html#__repr__">__repr__()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext.Token-class.html">Token</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.DocIndex-class.html#_get_from">_get_from()</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.DocIndex-class.html">DocIndex</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#_SUMMARY_RE">_SUMMARY_RE</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html">ParsedEpytextDocstring</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html#__repr__">__repr__()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html">ParsedRstDocstring</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_get_html_label">_get_html_label()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html">DotGraphUmlClassNode</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.javadoc.ParsedJavadocDocstring-class.html#_SUMMARY_RE">_SUMMARY_RE</a><br />
+<span class="index-where">(in <a href="epydoc.markup.javadoc.ParsedJavadocDocstring-class.html">ParsedJavadocDocstring</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.dotgraph.DotGraphEdge-class.html#__setitem__">__setitem__()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.dotgraph.DotGraphEdge-class.html">DotGraphEdge</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.dotgraph.DotGraphUmlModuleNode-class.html#_get_html_label">_get_html_label()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.dotgraph.DotGraphUmlModuleNode-class.html">DotGraphUmlModuleNode</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.plaintext.ParsedPlaintextDocstring-class.html#_SUMMARY_RE">_SUMMARY_RE</a><br />
+<span class="index-where">(in <a href="epydoc.markup.plaintext.ParsedPlaintextDocstring-class.html">ParsedPlaintextDocstring</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.dotgraph.DotGraphNode-class.html#__setitem__">__setitem__()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.dotgraph.DotGraphNode-class.html">DotGraphNode</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docintrospecter-module.html#_get_introspecter">_get_introspecter()</a><br />
+<span class="index-where">(in <a href="epydoc.docintrospecter-module.html">epydoc.docintrospecter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext._SummaryExtractor-class.html#_SUMMARY_RE">_SUMMARY_RE</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext._SummaryExtractor-class.html" onclick="show_private();">_SummaryExtractor</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.ValueDoc-class.html#__setstate__">__setstate__()</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.ValueDoc-class.html">ValueDoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.DocIndex-class.html#_get_module_classes">_get_module_classes()</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.DocIndex-class.html">DocIndex</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext._SummaryExtractor-class.html">_SummaryExtractor</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext-module.html">epydoc.markup.restructuredtext</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.DottedName-class.html#__str__">__str__()</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.DottedName-class.html">DottedName</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docparser-module.html#_get_module_name">_get_module_name()</a><br />
+<span class="index-where">(in <a href="epydoc.docparser-module.html">epydoc.docparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext-module.html#_SYMBOLS">_SYMBOLS</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext-module.html">epydoc.markup.epytext</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.ParseError-class.html#__str__">__str__()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.ParseError-class.html">ParseError</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docintrospecter-module.html#_get_valuedoc">_get_valuedoc()</a><br />
+<span class="index-where">(in <a href="epydoc.docintrospecter-module.html">epydoc.docintrospecter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext-module.html#_TARGET_RE">_TARGET_RE</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext-module.html">epydoc.markup.epytext</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext.Element-class.html#__str__">__str__()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext.Element-class.html">Element</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.gui.EpydocGUI-class.html#_getopts">_getopts()</a><br />
+<span class="index-where">(in <a href="epydoc.gui.EpydocGUI-class.html">EpydocGUI</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#_term_index_to_anchor">_term_index_to_anchor()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#__str__">__str__()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html">ParsedEpytextDocstring</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docparser-module.html#_global_name">_global_name()</a><br />
+<span class="index-where">(in <a href="epydoc.docparser-module.html">epydoc.docparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#_terms_from_docstring">_terms_from_docstring()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc-module.html#__url__">__url__</a><br />
+<span class="index-where">(in <a href="epydoc-module.html">epydoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.gui.EpydocGUI-class.html#_go">_go()</a><br />
+<span class="index-where">(in <a href="epydoc.gui.EpydocGUI-class.html">EpydocGUI</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext._TermsExtractor-class.html">_TermsExtractor</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext-module.html">epydoc.markup.restructuredtext</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc-module.html#__version__">__version__</a><br />
+<span class="index-where">(in <a href="epydoc-module.html">epydoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html_css-module.html#_GRAYSCALE">_GRAYSCALE</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html_css-module.html">epydoc.docwriter.html_css</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.cli.TerminalController-class.html#_tigetstr">_tigetstr()</a><br />
+<span class="index-where">(in <a href="epydoc.cli.TerminalController-class.html">TerminalController</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_add_attribute_edge">_add_attribute_edge()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html">DotGraphUmlClassNode</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html_css-module.html#_GREEN">_GREEN</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html_css-module.html">epydoc.docwriter.html_css</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.cli.ConsoleLogger-class.html#_timestr">_timestr()</a><br />
+<span class="index-where">(in <a href="epydoc.cli.ConsoleLogger-class.html">ConsoleLogger</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html#_add_field">_add_field()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html" onclick="show_private();">_SplitFieldsTranslator</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#_group_by_letter">_group_by_letter()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#_to_html">_to_html()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html">ParsedEpytextDocstring</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docparser-module.html#_add_import_var">_add_import_var()</a><br />
+<span class="index-where">(in <a href="epydoc.docparser-module.html">epydoc.docparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html_colorize-module.html#_HDR">_HDR</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html_colorize-module.html">epydoc.docwriter.html_colorize</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#_to_latex">_to_latex()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html">ParsedEpytextDocstring</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext-module.html#_add_list">_add_list()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext-module.html">epydoc.markup.epytext</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext-module.html#_HEADING_CHARS">_HEADING_CHARS</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext-module.html">epydoc.markup.epytext</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext-module.html#_tokenize">_tokenize()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext-module.html">epydoc.markup.epytext</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext-module.html#_add_para">_add_para()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext-module.html">epydoc.markup.epytext</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html._HTMLDocstringLinker-class.html">_HTMLDocstringLinker</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html-module.html">epydoc.docwriter.html</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext-module.html#_tokenize_doctest">_tokenize_doctest()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext-module.html">epydoc.markup.epytext</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext-module.html#_add_section">_add_section()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext-module.html">epydoc.markup.epytext</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docstringparser-module.html#_IDENTIFIER_LIST_REGEXP">_IDENTIFIER_LIST_REGEXP</a><br />
+<span class="index-where">(in <a href="epydoc.docstringparser-module.html">epydoc.docstringparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext-module.html#_tokenize_listart">_tokenize_listart()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext-module.html">epydoc.markup.epytext</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.cli.TerminalController-class.html#_ANSICOLORS">_ANSICOLORS</a><br />
+<span class="index-where">(in <a href="epydoc.cli.TerminalController-class.html">TerminalController</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.DottedName-class.html#_IDENTIFIER_RE">_IDENTIFIER_RE</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.DottedName-class.html">DottedName</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext-module.html#_tokenize_literal">_tokenize_literal()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext-module.html">epydoc.markup.epytext</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.javadoc.ParsedJavadocDocstring-class.html#_ARG_FIELDS">_ARG_FIELDS</a><br />
+<span class="index-where">(in <a href="epydoc.markup.javadoc.ParsedJavadocDocstring-class.html">ParsedJavadocDocstring</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docintrospecter-module.html#_import">_import()</a><br />
+<span class="index-where">(in <a href="epydoc.docintrospecter-module.html">epydoc.docintrospecter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext-module.html#_tokenize_para">_tokenize_para()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext-module.html">epydoc.markup.epytext</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#_arg_name">_arg_name()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#_import">_import()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_tooltip">_tooltip()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html">DotGraphUmlClassNode</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.latex.LatexWriter-class.html#_arg_name">_arg_name()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.latex.LatexWriter-class.html">LatexWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docparser-module.html#_import_var">_import_var()</a><br />
+<span class="index-where">(in <a href="epydoc.docparser-module.html">epydoc.docparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.pyval_repr.PyvalColorizer-class.html#_trim_result">_trim_result()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.pyval_repr.PyvalColorizer-class.html">PyvalColorizer</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#_attr_to_html">_attr_to_html()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docparser-module.html#_import_var_as">_import_var_as()</a><br />
+<span class="index-where">(in <a href="epydoc.docparser-module.html">epydoc.docparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_type_descr">_type_descr()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html">DotGraphUmlClassNode</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_ATTRIBUTE_CELL">_ATTRIBUTE_CELL</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html">DotGraphUmlClassNode</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#_index_term_key">_index_term_key()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html">ParsedEpytextDocstring</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.dotgraph.DotGraph-class.html#_uids">_uids</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.dotgraph.DotGraph-class.html">DotGraph</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_attribute_cell">_attribute_cell()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html">DotGraphUmlClassNode</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#_index_terms">_index_terms()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html">ParsedEpytextDocstring</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docbuilder-module.html#_unreachable_name_for">_unreachable_name_for()</a><br />
+<span class="index-where">(in <a href="epydoc.docbuilder-module.html">epydoc.docbuilder</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docbuilder-module.html#_attribute_mergefunc_registry">_attribute_mergefunc_registry</a><br />
+<span class="index-where">(in <a href="epydoc.docbuilder-module.html">epydoc.docbuilder</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docbuilder-module.html#_inherit_info">_inherit_info()</a><br />
+<span class="index-where">(in <a href="epydoc.docbuilder-module.html">epydoc.docbuilder</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docbuilder-module.html#_unreachable_names">_unreachable_names</a><br />
+<span class="index-where">(in <a href="epydoc.docbuilder-module.html">epydoc.docbuilder</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.latex.LatexWriter-class.html#_base_name">_base_name()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.latex.LatexWriter-class.html">LatexWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docbuilder-module.html#_INHERITED_ATTRIBS">_INHERITED_ATTRIBS</a><br />
+<span class="index-where">(in <a href="epydoc.docbuilder-module.html">epydoc.docbuilder</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.gui.EpydocGUI-class.html#_update">_update()</a><br />
+<span class="index-where">(in <a href="epydoc.gui.EpydocGUI-class.html">EpydocGUI</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.latex.LatexWriter-class.html#_base_tree_line">_base_tree_line()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.latex.LatexWriter-class.html">LatexWriter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.gui.EpydocGUI-class.html#_init_bindings">_init_bindings()</a><br />
+<span class="index-where">(in <a href="epydoc.gui.EpydocGUI-class.html">EpydocGUI</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.DocIndex-class.html#_update_funcid_to_doc">_update_funcid_to_doc()</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.DocIndex-class.html">DocIndex</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.doctest.DoctestColorizer-class.html#_BI">_BI</a><br />
+<span class="index-where">(in <a href="epydoc.markup.doctest.DoctestColorizer-class.html">DoctestColorizer</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.NamespaceDoc-class.html#_init_grouping">_init_grouping()</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.NamespaceDoc-class.html">NamespaceDoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.gui.EpydocGUI-class.html#_update_messages">_update_messages()</a><br />
+<span class="index-where">(in <a href="epydoc.gui.EpydocGUI-class.html">EpydocGUI</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html_css-module.html#_BLACK">_BLACK</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html_css-module.html">epydoc.docwriter.html_css</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.gui.EpydocGUI-class.html#_init_menubar">_init_menubar()</a><br />
+<span class="index-where">(in <a href="epydoc.gui.EpydocGUI-class.html">EpydocGUI</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.gui.EpydocGUI-class.html#_update_msg_tags">_update_msg_tags()</a><br />
+<span class="index-where">(in <a href="epydoc.gui.EpydocGUI-class.html">EpydocGUI</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html_css-module.html#_BLUE">_BLUE</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html_css-module.html">epydoc.docwriter.html_css</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.gui.EpydocGUI-class.html#_init_messages">_init_messages()</a><br />
+<span class="index-where">(in <a href="epydoc.gui.EpydocGUI-class.html">EpydocGUI</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#_url">_url()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html_css-module.html#_BLUE_COLORS">_BLUE_COLORS</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html_css-module.html">epydoc.docwriter.html_css</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.gui.EpydocGUI-class.html#_init_module_list">_init_module_list()</a><br />
+<span class="index-where">(in <a href="epydoc.gui.EpydocGUI-class.html">EpydocGUI</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#_url_cache">_url_cache</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext-module.html#_BRACE_RE">_BRACE_RE</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext-module.html">epydoc.markup.epytext</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.gui.EpydocGUI-class.html#_init_options">_init_options()</a><br />
+<span class="index-where">(in <a href="epydoc.gui.EpydocGUI-class.html">EpydocGUI</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.gui-module.html#_usage">_usage()</a><br />
+<span class="index-where">(in <a href="epydoc.gui-module.html">epydoc.gui</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.gui.EpydocGUI-class.html#_browse_css">_browse_css()</a><br />
+<span class="index-where">(in <a href="epydoc.gui.EpydocGUI-class.html">EpydocGUI</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.gui.EpydocGUI-class.html#_init_progress_bar">_init_progress_bar()</a><br />
+<span class="index-where">(in <a href="epydoc.gui.EpydocGUI-class.html">EpydocGUI</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#_val_is_public">_val_is_public()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.gui.EpydocGUI-class.html#_browse_help">_browse_help()</a><br />
+<span class="index-where">(in <a href="epydoc.gui.EpydocGUI-class.html">EpydocGUI</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docintrospecter-module.html#_introspected_values">_introspected_values</a><br />
+<span class="index-where">(in <a href="epydoc.docintrospecter-module.html">epydoc.docintrospecter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docintrospecter-module.html#_valuedoc_cache">_valuedoc_cache</a><br />
+<span class="index-where">(in <a href="epydoc.docintrospecter-module.html">epydoc.docintrospecter</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.gui.EpydocGUI-class.html#_browse_module">_browse_module()</a><br />
+<span class="index-where">(in <a href="epydoc.gui.EpydocGUI-class.html">EpydocGUI</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docintrospecter-module.html#_introspecter_registry">_introspecter_registry</a><br />
+<span class="index-where">(in <a href="epydoc.docintrospecter-module.html">epydoc.docintrospecter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.latex.LatexWriter-class.html#_VAR_GROUP_HEADER">_VAR_GROUP_HEADER</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.latex.LatexWriter-class.html">LatexWriter</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.gui.EpydocGUI-class.html#_browse_out">_browse_out()</a><br />
+<span class="index-where">(in <a href="epydoc.gui.EpydocGUI-class.html">EpydocGUI</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docparser-module.html#_is_submodule_import_var">_is_submodule_import_var()</a><br />
+<span class="index-where">(in <a href="epydoc.docparser-module.html">epydoc.docparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docbuilder-module.html#_var_shadows_self">_var_shadows_self()</a><br />
+<span class="index-where">(in <a href="epydoc.docbuilder-module.html">epydoc.docbuilder</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html#_build_graph">_build_graph()</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html">ParsedEpytextDocstring</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docintrospecter-module.html#_is_zope_method">_is_zope_method()</a><br />
+<span class="index-where">(in <a href="epydoc.docintrospecter-module.html">epydoc.docintrospecter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.gui-module.html#_version">_version()</a><br />
+<span class="index-where">(in <a href="epydoc.gui-module.html">epydoc.gui</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.doctest.DoctestColorizer-class.html#_BUILTIN_GRP">_BUILTIN_GRP</a><br />
+<span class="index-where">(in <a href="epydoc.markup.doctest.DoctestColorizer-class.html">DoctestColorizer</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docintrospecter-module.html#_is_zope_type">_is_zope_type()</a><br />
+<span class="index-where">(in <a href="epydoc.docintrospecter-module.html">epydoc.docintrospecter</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html_css-module.html#_WHITE">_WHITE</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html_css-module.html">epydoc.docwriter.html_css</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.doctest.DoctestColorizer-class.html#_BUILTINS">_BUILTINS</a><br />
+<span class="index-where">(in <a href="epydoc.markup.doctest.DoctestColorizer-class.html">DoctestColorizer</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.xlink.DocUrlGenerator-class.html#_iter_tuples">_iter_tuples()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.xlink.DocUrlGenerator-class.html">DocUrlGenerator</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html_css-module.html#_WHITE_COLORS">_WHITE_COLORS</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html_css-module.html">epydoc.docwriter.html_css</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext-module.html#_BULLET_RE">_BULLET_RE</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext-module.html">epydoc.markup.epytext</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docparser-module.html#_join_toktree">_join_toktree()</a><br />
+<span class="index-where">(in <a href="epydoc.docparser-module.html">epydoc.docparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#_write">_write()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.ClassDoc-class.html#_c3_merge">_c3_merge()</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.ClassDoc-class.html">ClassDoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.doctest.DoctestColorizer-class.html#_KEYWORD_GRP">_KEYWORD_GRP</a><br />
+<span class="index-where">(in <a href="epydoc.markup.doctest.DoctestColorizer-class.html">DoctestColorizer</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.latex.LatexWriter-class.html#_write">_write()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.latex.LatexWriter-class.html">LatexWriter</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.ClassDoc-class.html#_c3_mro">_c3_mro()</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.ClassDoc-class.html">ClassDoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.doctest.DoctestColorizer-class.html#_KEYWORDS">_KEYWORDS</a><br />
+<span class="index-where">(in <a href="epydoc.markup.doctest.DoctestColorizer-class.html">DoctestColorizer</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#_write_redirect_page">_write_redirect_page()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.checker.DocChecker-class.html#_check">_check()</a><br />
+<span class="index-where">(in <a href="epydoc.checker.DocChecker-class.html">DocChecker</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.doctest.DoctestColorizer-class.html#_KW">_KW</a><br />
+<span class="index-where">(in <a href="epydoc.markup.doctest.DoctestColorizer-class.html">DoctestColorizer</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.html.HTMLWriter-class.html#_write_summary_line">_write_summary_line()</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.html.HTMLWriter-class.html">HTMLWriter</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docstringparser-module.html#_check">_check()</a><br />
+<span class="index-where">(in <a href="epydoc.docstringparser-module.html">epydoc.docstringparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_LABEL">_LABEL</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html">DotGraphUmlClassNode</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docintrospecter-module.html#_ZopeType">_ZopeType</a><br />
+<span class="index-where">(in <a href="epydoc.docintrospecter-module.html">epydoc.docintrospecter</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.checker.DocChecker-class.html#_check_basic">_check_basic()</a><br />
+<span class="index-where">(in <a href="epydoc.checker.DocChecker-class.html">DocChecker</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docwriter.latex.LatexWriter._LatexDocstringLinker-class.html">_LatexDocstringLinker</a><br />
+<span class="index-where">(in <a href="epydoc.docwriter.latex.LatexWriter-class.html">LatexWriter</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+</tr>
+</table>
+</td></tr>
+</table>
+<br /><br /><!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >   Indices   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:05:42 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/index.html b/doc/api/index.html
new file mode 100644
index 0000000..c3ded09
--- /dev/null
+++ b/doc/api/index.html
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
+          "DTD/xhtml1-frameset.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title> epydoc </title>
+</head>
+<frameset cols="20%,80%">
+  <frameset rows="30%,70%">
+    <frame src="toc.html" name="moduleListFrame"
+           id="moduleListFrame" />
+    <frame src="toc-everything.html" name="moduleFrame"
+           id="moduleFrame" />
+  </frameset>
+  <frame src="epydoc-module.html" name="mainFrame" id="mainFrame" />
+</frameset>
+</html>
diff --git a/doc/api/module-tree.html b/doc/api/module-tree.html
new file mode 100644
index 0000000..3c27620
--- /dev/null
+++ b/doc/api/module-tree.html
@@ -0,0 +1,167 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Module Hierarchy</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >   Trees   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%"> </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="module-tree.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<center><b>
+ [ <a href="module-tree.html">Module Hierarchy</a>
+ | <a href="class-tree.html">Class Hierarchy</a> ]
+</b></center><br />
+<h1 class="epydoc">Module Hierarchy</h1>
+<ul class="nomargin-top">
+    <li> <strong class="uidlink"><a href="epydoc-module.html">epydoc</a></strong>: <em class="summary">Automatic Python reference documentation generator.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="epydoc.apidoc-module.html">epydoc.apidoc</a></strong>: <em class="summary">Classes for encoding API documentation about Python programs.</em>    </li>
+    <li> <strong class="uidlink"><a href="epydoc.checker-module.html">epydoc.checker</a></strong>: <em class="summary">Documentation completeness checker.</em>    </li>
+    <li> <strong class="uidlink"><a href="epydoc.cli-module.html">epydoc.cli</a></strong>: <em class="summary">Command-line interface for epydoc.</em>    </li>
+    <li> <strong class="uidlink"><a href="epydoc.compat-module.html">epydoc.compat</a></strong>: <em class="summary">Backwards compatibility with previous versions of Python.</em>    </li>
+    <li> <strong class="uidlink"><a href="epydoc.docbuilder-module.html">epydoc.docbuilder</a></strong>: <em class="summary">Construct data structures that encode the API documentation for 
+        Python objects.</em>    </li>
+    <li> <strong class="uidlink"><a href="epydoc.docintrospecter-module.html">epydoc.docintrospecter</a></strong>: <em class="summary">Extract API documentation about python objects by directly 
+        introspecting their values.</em>    </li>
+    <li> <strong class="uidlink"><a href="epydoc.docparser-module.html">epydoc.docparser</a></strong>: <em class="summary">Extract API documentation about python objects by parsing their 
+        source code.</em>    </li>
+    <li> <strong class="uidlink"><a href="epydoc.docstringparser-module.html">epydoc.docstringparser</a></strong>: <em class="summary">Parse docstrings and handle any fields it defines, such as 
+        <code>@type</code> and <code>@author</code>.</em>    </li>
+    <li> <strong class="uidlink"><a href="epydoc.docwriter-module.html">epydoc.docwriter</a></strong>: <em class="summary">Output generation.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="epydoc.docwriter.dotgraph-module.html">epydoc.docwriter.dotgraph</a></strong>: <em class="summary">Render Graphviz directed graphs as images.</em>    </li>
+    <li> <strong class="uidlink"><a href="epydoc.docwriter.html-module.html">epydoc.docwriter.html</a></strong>: <em class="summary">The HTML output generator for epydoc.</em>    </li>
+    <li> <strong class="uidlink"><a href="epydoc.docwriter.html_colorize-module.html">epydoc.docwriter.html_colorize</a></strong>: <em class="summary">Functions to produce colorized HTML code for various objects.</em>    </li>
+    <li> <strong class="uidlink"><a href="epydoc.docwriter.html_css-module.html">epydoc.docwriter.html_css</a></strong>: <em class="summary">Predefined CSS stylesheets for the HTML outputter (<a 
+        href="epydoc.docwriter.html-module.html" 
+        class="link">epydoc.docwriter.html</a>).</em>    </li>
+    <li> <strong class="uidlink"><a href="epydoc.docwriter.html_help-module.html">epydoc.docwriter.html_help</a></strong>: <em class="summary">Default help file for the HTML outputter (<a 
+        href="epydoc.docwriter.html-module.html" 
+        class="link">epydoc.docwriter.html</a>).</em>    </li>
+    <li> <strong class="uidlink"><a href="epydoc.docwriter.latex-module.html">epydoc.docwriter.latex</a></strong>: <em class="summary">The LaTeX output generator for epydoc.</em>    </li>
+    <li> <strong class="uidlink"><a href="epydoc.docwriter.plaintext-module.html">epydoc.docwriter.plaintext</a></strong>: <em class="summary">Plaintext output generation.</em>    </li>
+    <li> <strong class="uidlink"><a href="epydoc.docwriter.xlink-module.html">epydoc.docwriter.xlink</a></strong>: <em class="summary">A <a class="rst-reference external" href="http://docutils.sourceforge.net/" target="_top">Docutils</a> interpreted text role for cross-API reference support.</em>    </li>
+    </ul>
+    </li>
+    <li> <strong class="uidlink"><a href="epydoc.gui-module.html">epydoc.gui</a></strong>: <em class="summary">Graphical interface to epydoc.</em>    </li>
+    <li> <strong class="uidlink"><a href="epydoc.log-module.html">epydoc.log</a></strong>: <em class="summary">Functions used to report messages and progress updates to the user.</em>    </li>
+    <li> <strong class="uidlink"><a href="epydoc.markup-module.html">epydoc.markup</a></strong>: <em class="summary">Markup language support for docstrings.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="epydoc.markup.doctest-module.html">epydoc.markup.doctest</a></strong>: <em class="summary">Syntax highlighting for doctest blocks.</em>    </li>
+    <li> <strong class="uidlink"><a href="epydoc.markup.epytext-module.html">epydoc.markup.epytext</a></strong>: <em class="summary">Parser for epytext strings.</em>    </li>
+    <li> <strong class="uidlink"><a href="epydoc.markup.javadoc-module.html">epydoc.markup.javadoc</a></strong>: <em class="summary">Epydoc parser for <a href="http://java.sun.com/j2se/javadoc/" 
+        target="_top">Javadoc</a> docstrings.</em>    </li>
+    <li> <strong class="uidlink"><a href="epydoc.markup.plaintext-module.html">epydoc.markup.plaintext</a></strong>: <em class="summary">Parser for plaintext docstrings.</em>    </li>
+    <li> <strong class="uidlink"><a href="epydoc.markup.pyval_repr-module.html">epydoc.markup.pyval_repr</a></strong>: <em class="summary">Syntax highlighter for Python values.</em>    </li>
+    <li> <strong class="uidlink"><a href="epydoc.markup.restructuredtext-module.html">epydoc.markup.restructuredtext</a></strong>: <em class="summary">Epydoc parser for ReStructuredText strings.</em>    </li>
+    </ul>
+    </li>
+    <li> <strong class="uidlink"><a href="epydoc.test-module.html">epydoc.test</a></strong>: <em class="summary">Regression testing.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="epydoc.test.util-module.html">epydoc.test.util</a></strong>: <em class="summary">Utility functions used by the regression tests 
+        (<code>*.doctest</code>).</em>    </li>
+    </ul>
+    </li>
+    <li> <strong class="uidlink"><a href="epydoc.util-module.html">epydoc.util</a></strong>: <em class="summary">Miscellaneous utility functions that are used by multiple modules.</em>    </li>
+    </ul>
+    </li>
+</ul>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >   Trees   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:05:42 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/redirect.html b/doc/api/redirect.html
new file mode 100644
index 0000000..d7330d2
--- /dev/null
+++ b/doc/api/redirect.html
@@ -0,0 +1,38 @@
+<html><head><title>Epydoc Redirect Page</title>
+<meta http-equiv="cache-control" content="no-cache" />
+<meta http-equiv="expires" content="0" />
+<meta http-equiv="pragma" content="no-cache" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+<body>
+<script type="text/javascript">
+<!--
+var pages = ["epydoc.docwriter.latex.LatexWriter._LatexDocstringLinker-c", "epydoc.markup.restructuredtext._EpydocLaTeXTranslator-c", "epydoc.markup.restructuredtext._SplitFieldsTranslator-c", "epydoc.docwriter.html_colorize.PythonSourceColorizer-c", "epydoc.markup.restructuredtext._DocumentPseudoWriter-c", "epydoc.markup.restructuredtext._EpydocHTMLTranslator-c", "epydoc.docwriter.xlink.UrlGenerator.IndexAmbiguous-c", "epydoc.markup.restructuredtext.ParsedRstDocstring-c", "epydoc.markup [...]
+var dottedName = get_anchor();
+if (dottedName) {
+    var target = redirect_url(dottedName);
+    if (target) window.location.replace(target);
+}
+// -->
+</script>
+
+<h3>Epydoc Auto-redirect page</h3>
+
+<p>When javascript is enabled, this page will redirect URLs of
+the form <tt>redirect.html#<i>dotted.name</i></tt> to the
+documentation for the object with the given fully-qualified
+dotted name.</p>
+<p><a id="message">   </a></p>
+
+<script type="text/javascript">
+<!--
+if (dottedName) {
+    var msg = document.getElementById("message");
+    msg.innerHTML = "No documentation found for <tt>"+
+                    dottedName+"</tt>";
+}
+// -->
+</script>
+
+</body>
+</html>
diff --git a/doc/api/term-index.html b/doc/api/term-index.html
new file mode 100644
index 0000000..6a24f53
--- /dev/null
+++ b/doc/api/term-index.html
@@ -0,0 +1,356 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Term Definition Index</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >   Indices   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%"> </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="term-index.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<center><b>[
+ <a href="identifier-index.html">Identifiers</a>
+| <a href="term-index.html">Term Definitions</a>
+| <a href="bug-index.html">Bugs</a>
+| <a href="todo-index.html">To Do</a>
+]</b></center><br />
+<table border="0" width="100%">
+<tr valign="bottom"><td>
+<h1 class="epydoc">Term Definition Index</h1>
+</td><td>
+[
+  A
+ <a href="#B">B</a>
+ <a href="#C">C</a>
+ <a href="#D">D</a>
+ <a href="#E">E</a>
+ <a href="#F">F</a>
+  G
+  H
+ <a href="#I">I</a>
+ <a href="#J">J</a>
+  K
+ <a href="#L">L</a>
+ <a href="#M">M</a>
+  N
+ <a href="#O">O</a>
+ <a href="#P">P</a>
+  Q
+ <a href="#R">R</a>
+ <a href="#S">S</a>
+ <a href="#T">T</a>
+ <a href="#U">U</a>
+  V
+  W
+  X
+  Y
+  Z
+  _
+]
+</td></table>
+<table border="0" width="100%">
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="B">B</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext-module.html#index-bold">bold</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext-module.html">epydoc.markup.epytext</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+<td width="33%" class="link-index"> </td>
+</tr>
+<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="C">C</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext-module.html#index-code">code</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext-module.html">epydoc.markup.epytext</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.DocIndex-class.html#index-contained_ValueDocs">contained ValueDocs</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.DocIndex-class.html">DocIndex</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+</tr>
+<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="D">D</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext-module.html#index-doctestblock">doctestblock</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext-module.html">epydoc.markup.epytext</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+<td width="33%" class="link-index"> </td>
+</tr>
+<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="E">E</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext-module.html#index-epytext">epytext</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext-module.html">epydoc.markup.epytext</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+<td width="33%" class="link-index"> </td>
+</tr>
+<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="F">F</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext-module.html#index-field">field</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext-module.html">epydoc.markup.epytext</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+<td width="33%" class="link-index"> </td>
+</tr>
+<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="I">I</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext-module.html#index-index">index</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext-module.html">epydoc.markup.epytext</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext-module.html#index-inline_regions">inline regions</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext-module.html">epydoc.markup.epytext</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.javadoc-module.html#index-inline_Javadoc_tags">inline Javadoc tags</a><br />
+<span class="index-where">(in <a href="epydoc.markup.javadoc-module.html">epydoc.markup.javadoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext-module.html#index-italic">italic</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext-module.html">epydoc.markup.epytext</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+</tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="J">J</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.javadoc-module.html#index-Javadoc_block_tags">Javadoc block tags</a><br />
+<span class="index-where">(in <a href="epydoc.markup.javadoc-module.html">epydoc.markup.javadoc</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+<td width="33%" class="link-index"> </td>
+</tr>
+<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="L">L</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext-module.html#index-li">li</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext-module.html">epydoc.markup.epytext</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext-module.html#index-literalblock">literalblock</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext-module.html">epydoc.markup.epytext</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext-module.html#index-link">link</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext-module.html">epydoc.markup.epytext</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.log.Logger-class.html#index-loggers">loggers</a><br />
+<span class="index-where">(in <a href="epydoc.log.Logger-class.html">Logger</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+</tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="M">M</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext-module.html#index-math">math</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext-module.html">epydoc.markup.epytext</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.APIDoc-class.html#index-merged">merged</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.APIDoc-class.html">APIDoc</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.APIDoc-class.html#index-merged_object">merged object</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.APIDoc-class.html#merge_and_overwrite">merge_and_overwrite</a>)</span></td>
+</tr>
+<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="O">O</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext-module.html#index-olist">olist</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext-module.html">epydoc.markup.epytext</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+<td width="33%" class="link-index"> </td>
+</tr>
+<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="P">P</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext-module.html#index-para">para</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext-module.html">epydoc.markup.epytext</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.gui-module.html#index-project_files">project files</a><br />
+<span class="index-where">(in <a href="epydoc.gui-module.html">epydoc.gui</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+</tr>
+<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="R">R</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.apidoc.DocIndex-class.html#index-reachable_ValueDocs">reachable ValueDocs</a><br />
+<span class="index-where">(in <a href="epydoc.apidoc.DocIndex-class.html">DocIndex</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+<td width="33%" class="link-index"> </td>
+</tr>
+<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="S">S</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext-module.html#index-section">section</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext-module.html">epydoc.markup.epytext</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.docstringparser-module.html#index-special_fields">special fields</a><br />
+<span class="index-where">(in <a href="epydoc.docstringparser-module.html">epydoc.docstringparser</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docstringparser-module.html#index-simple_fields">simple fields</a><br />
+<span class="index-where">(in <a href="epydoc.docstringparser-module.html">epydoc.docstringparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext-module.html#index-structural_blocks">structural blocks</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext-module.html">epydoc.markup.epytext</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+</tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="T">T</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.docparser-module.html#index-token_tree">token tree</a><br />
+<span class="index-where">(in <a href="epydoc.docparser-module.html#shallow_parse">shallow_parse</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+<td width="33%" class="link-index"> </td>
+</tr>
+<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="U">U</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext-module.html#index-ulist">ulist</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext-module.html">epydoc.markup.epytext</a>)</span></td>
+<td width="33%" class="link-index"><a href="epydoc.markup.epytext-module.html#index-uri">uri</a><br />
+<span class="index-where">(in <a href="epydoc.markup.epytext-module.html">epydoc.markup.epytext</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+</tr>
+<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
+</table>
+</td></tr>
+</table>
+<br /><br /><!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >   Indices   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:05:42 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/toc-epydoc-module.html b/doc/api/toc-epydoc-module.html
new file mode 100644
index 0000000..53df826
--- /dev/null
+++ b/doc/api/toc-epydoc-module.html
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epydoc</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module epydoc</h1>
+<hr />
+  <h2 class="toc">Variables</h2>
+    <a target="mainFrame" href="epydoc-module.html#DEBUG"
+     >DEBUG</a><br />    <a target="mainFrame" href="epydoc-module.html#__author__"
+     >__author__</a><br />    <a target="mainFrame" href="epydoc-module.html#__license__"
+     >__license__</a><br />    <a target="mainFrame" href="epydoc-module.html#__url__"
+     >__url__</a><br />    <a target="mainFrame" href="epydoc-module.html#__version__"
+     >__version__</a><br /><hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/toc-epydoc.apidoc-module.html b/doc/api/toc-epydoc.apidoc-module.html
new file mode 100644
index 0000000..9839817
--- /dev/null
+++ b/doc/api/toc-epydoc.apidoc-module.html
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>apidoc</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module apidoc</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="epydoc.apidoc.APIDoc-class.html"
+     >APIDoc</a><br />    <a target="mainFrame" href="epydoc.apidoc.ClassDoc-class.html"
+     >ClassDoc</a><br />    <a target="mainFrame" href="epydoc.apidoc.ClassMethodDoc-class.html"
+     >ClassMethodDoc</a><br />    <a target="mainFrame" href="epydoc.apidoc.DocIndex-class.html"
+     >DocIndex</a><br />    <a target="mainFrame" href="epydoc.apidoc.DottedName-class.html"
+     >DottedName</a><br />    <a target="mainFrame" href="epydoc.apidoc.GenericValueDoc-class.html"
+     >GenericValueDoc</a><br />    <a target="mainFrame" href="epydoc.apidoc.ModuleDoc-class.html"
+     >ModuleDoc</a><br />    <a target="mainFrame" href="epydoc.apidoc.NamespaceDoc-class.html"
+     >NamespaceDoc</a><br />    <a target="mainFrame" href="epydoc.apidoc.PropertyDoc-class.html"
+     >PropertyDoc</a><br />    <a target="mainFrame" href="epydoc.apidoc.RoutineDoc-class.html"
+     >RoutineDoc</a><br />    <a target="mainFrame" href="epydoc.apidoc.StaticMethodDoc-class.html"
+     >StaticMethodDoc</a><br />    <a target="mainFrame" href="epydoc.apidoc.ValueDoc-class.html"
+     >ValueDoc</a><br />    <a target="mainFrame" href="epydoc.apidoc.VariableDoc-class.html"
+     >VariableDoc</a><br />  <div class="private">
+    <a target="mainFrame" href="epydoc.apidoc._Sentinel-class.html"
+     >_Sentinel</a><br />  </div>
+  <h2 class="toc">Functions</h2>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.apidoc-module.html#_flatten"
+     >_flatten</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.apidoc-module.html#_pp_apidoc"
+     >_pp_apidoc</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.apidoc-module.html#_pp_dict"
+     >_pp_dict</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.apidoc-module.html#_pp_list"
+     >_pp_list</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.apidoc-module.html#_pp_val"
+     >_pp_val</a><br />  </div>
+    <a target="mainFrame" href="epydoc.apidoc-module.html#pp_apidoc"
+     >pp_apidoc</a><br />    <a target="mainFrame" href="epydoc.apidoc-module.html#reachable_valdocs"
+     >reachable_valdocs</a><br />  <h2 class="toc">Variables</h2>
+    <a target="mainFrame" href="epydoc.apidoc-module.html#UNKNOWN"
+     >UNKNOWN</a><br /><hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/toc-epydoc.checker-module.html b/doc/api/toc-epydoc.checker-module.html
new file mode 100644
index 0000000..073db4e
--- /dev/null
+++ b/doc/api/toc-epydoc.checker-module.html
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>checker</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module checker</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="epydoc.checker.DocChecker-class.html"
+     >DocChecker</a><br />  <h2 class="toc">Variables</h2>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.checker-module.html#_NO_BASIC"
+     >_NO_BASIC</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.checker-module.html#_NO_DOCS"
+     >_NO_DOCS</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.checker-module.html#_NO_PARAM"
+     >_NO_PARAM</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.checker-module.html#_NO_RETURN"
+     >_NO_RETURN</a><br />  </div>
+<hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/toc-epydoc.cli-module.html b/doc/api/toc-epydoc.cli-module.html
new file mode 100644
index 0000000..0922f4c
--- /dev/null
+++ b/doc/api/toc-epydoc.cli-module.html
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>cli</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module cli</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="epydoc.cli.ConsoleLogger-class.html"
+     >ConsoleLogger</a><br />    <a target="mainFrame" href="epydoc.cli.HTMLLogger-class.html"
+     >HTMLLogger</a><br />    <a target="mainFrame" href="epydoc.cli.TerminalController-class.html"
+     >TerminalController</a><br />    <a target="mainFrame" href="epydoc.cli.UnifiedProgressConsoleLogger-class.html"
+     >UnifiedProgressConsoleLogger</a><br />  <h2 class="toc">Functions</h2>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.cli-module.html#_profile"
+     >_profile</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.cli-module.html#_str_to_bool"
+     >_str_to_bool</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.cli-module.html#_str_to_int"
+     >_str_to_int</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.cli-module.html#_str_to_list"
+     >_str_to_list</a><br />  </div>
+    <a target="mainFrame" href="epydoc.cli-module.html#check_docs"
+     >check_docs</a><br />    <a target="mainFrame" href="epydoc.cli-module.html#cli"
+     >cli</a><br />    <a target="mainFrame" href="epydoc.cli-module.html#main"
+     >main</a><br />    <a target="mainFrame" href="epydoc.cli-module.html#parse_arguments"
+     >parse_arguments</a><br />    <a target="mainFrame" href="epydoc.cli-module.html#parse_configfiles"
+     >parse_configfiles</a><br />    <a target="mainFrame" href="epydoc.cli-module.html#pickle_persistent_id"
+     >pickle_persistent_id</a><br />    <a target="mainFrame" href="epydoc.cli-module.html#pickle_persistent_load"
+     >pickle_persistent_load</a><br />    <a target="mainFrame" href="epydoc.cli-module.html#write_html"
+     >write_html</a><br />    <a target="mainFrame" href="epydoc.cli-module.html#write_latex"
+     >write_latex</a><br />    <a target="mainFrame" href="epydoc.cli-module.html#write_pickle"
+     >write_pickle</a><br />    <a target="mainFrame" href="epydoc.cli-module.html#write_text"
+     >write_text</a><br />  <h2 class="toc">Variables</h2>
+    <a target="mainFrame" href="epydoc.cli-module.html#ACTIONS"
+     >ACTIONS</a><br />    <a target="mainFrame" href="epydoc.cli-module.html#DEFAULT_DOCFORMAT"
+     >DEFAULT_DOCFORMAT</a><br />    <a target="mainFrame" href="epydoc.cli-module.html#DOCFORMATS"
+     >DOCFORMATS</a><br />    <a target="mainFrame" href="epydoc.cli-module.html#GRAPH_TYPES"
+     >GRAPH_TYPES</a><br />    <a target="mainFrame" href="epydoc.cli-module.html#HELP_TOPICS"
+     >HELP_TOPICS</a><br />    <a target="mainFrame" href="epydoc.cli-module.html#INHERITANCE_STYLES"
+     >INHERITANCE_STYLES</a><br />    <a target="mainFrame" href="epydoc.cli-module.html#OPTION_DEFAULTS"
+     >OPTION_DEFAULTS</a><br />    <a target="mainFrame" href="epydoc.cli-module.html#PROFILER"
+     >PROFILER</a><br />  <div class="private">
+    <a target="mainFrame" href="epydoc.cli-module.html#_RERUN_LATEX_RE"
+     >_RERUN_LATEX_RE</a><br />  </div>
+    <a target="mainFrame" href="epydoc.cli-module.html#descr"
+     >descr</a><br />    <a target="mainFrame" href="epydoc.cli-module.html#key"
+     >key</a><br />    <a target="mainFrame" href="epydoc.cli-module.html#sheet"
+     >sheet</a><br />    <a target="mainFrame" href="epydoc.cli-module.html#topic"
+     >topic</a><br /><hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/toc-epydoc.compat-module.html b/doc/api/toc-epydoc.compat-module.html
new file mode 100644
index 0000000..b6946f3
--- /dev/null
+++ b/doc/api/toc-epydoc.compat-module.html
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>compat</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module compat</h1>
+<hr />
+  <h2 class="toc">Functions</h2>
+    <a target="mainFrame" href="epydoc.compat-module.html#reversed"
+     >reversed</a><br />    <a target="mainFrame" href="epydoc.compat-module.html#sorted"
+     >sorted</a><br /><hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/toc-epydoc.docbuilder-module.html b/doc/api/toc-epydoc.docbuilder-module.html
new file mode 100644
index 0000000..8f3419f
--- /dev/null
+++ b/doc/api/toc-epydoc.docbuilder-module.html
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>docbuilder</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module docbuilder</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="epydoc.docbuilder.BuildOptions-class.html"
+     >BuildOptions</a><br />  <div class="private">
+    <a target="mainFrame" href="epydoc.docbuilder._ProgressEstimator-class.html"
+     >_ProgressEstimator</a><br />  </div>
+  <h2 class="toc">Functions</h2>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docbuilder-module.html#_fix_self_shadowing_var"
+     >_fix_self_shadowing_var</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docbuilder-module.html#_get_docs_from_items"
+     >_get_docs_from_items</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docbuilder-module.html#_get_docs_from_module_file"
+     >_get_docs_from_module_file</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docbuilder-module.html#_get_docs_from_pyname"
+     >_get_docs_from_pyname</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docbuilder-module.html#_get_docs_from_pyobject"
+     >_get_docs_from_pyobject</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docbuilder-module.html#_get_docs_from_pyscript"
+     >_get_docs_from_pyscript</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docbuilder-module.html#_get_docs_from_submodules"
+     >_get_docs_from_submodules</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docbuilder-module.html#_inherit_info"
+     >_inherit_info</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docbuilder-module.html#_merge_posargs_and_defaults"
+     >_merge_posargs_and_defaults</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docbuilder-module.html#_report_errors"
+     >_report_errors</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docbuilder-module.html#_report_valdoc_progress"
+     >_report_valdoc_progress</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docbuilder-module.html#_unreachable_name_for"
+     >_unreachable_name_for</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docbuilder-module.html#_var_shadows_self"
+     >_var_shadows_self</a><br />  </div>
+    <a target="mainFrame" href="epydoc.docbuilder-module.html#assign_canonical_names"
+     >assign_canonical_names</a><br />    <a target="mainFrame" href="epydoc.docbuilder-module.html#build_doc"
+     >build_doc</a><br />    <a target="mainFrame" href="epydoc.docbuilder-module.html#build_doc_index"
+     >build_doc_index</a><br />    <a target="mainFrame" href="epydoc.docbuilder-module.html#find_overrides"
+     >find_overrides</a><br />    <a target="mainFrame" href="epydoc.docbuilder-module.html#inherit_docs"
+     >inherit_docs</a><br />    <a target="mainFrame" href="epydoc.docbuilder-module.html#link_imports"
+     >link_imports</a><br />    <a target="mainFrame" href="epydoc.docbuilder-module.html#merge_attribute"
+     >merge_attribute</a><br />    <a target="mainFrame" href="epydoc.docbuilder-module.html#merge_bases"
+     >merge_bases</a><br />    <a target="mainFrame" href="epydoc.docbuilder-module.html#merge_docs"
+     >merge_docs</a><br />    <a target="mainFrame" href="epydoc.docbuilder-module.html#merge_docs_extracted_by"
+     >merge_docs_extracted_by</a><br />    <a target="mainFrame" href="epydoc.docbuilder-module.html#merge_docstring"
+     >merge_docstring</a><br />    <a target="mainFrame" href="epydoc.docbuilder-module.html#merge_fdel"
+     >merge_fdel</a><br />    <a target="mainFrame" href="epydoc.docbuilder-module.html#merge_fget"
+     >merge_fget</a><br />    <a target="mainFrame" href="epydoc.docbuilder-module.html#merge_fset"
+     >merge_fset</a><br />    <a target="mainFrame" href="epydoc.docbuilder-module.html#merge_overrides"
+     >merge_overrides</a><br />    <a target="mainFrame" href="epydoc.docbuilder-module.html#merge_posarg_defaults"
+     >merge_posarg_defaults</a><br />    <a target="mainFrame" href="epydoc.docbuilder-module.html#merge_proxy_for"
+     >merge_proxy_for</a><br />    <a target="mainFrame" href="epydoc.docbuilder-module.html#merge_submodules"
+     >merge_submodules</a><br />    <a target="mainFrame" href="epydoc.docbuilder-module.html#merge_value"
+     >merge_value</a><br />    <a target="mainFrame" href="epydoc.docbuilder-module.html#merge_variables"
+     >merge_variables</a><br />    <a target="mainFrame" href="epydoc.docbuilder-module.html#register_attribute_mergefunc"
+     >register_attribute_mergefunc</a><br />  <h2 class="toc">Variables</h2>
+    <a target="mainFrame" href="epydoc.docbuilder-module.html#DEFAULT_MERGE_PRECEDENCE"
+     >DEFAULT_MERGE_PRECEDENCE</a><br />    <a target="mainFrame" href="epydoc.docbuilder-module.html#MERGE_PRECEDENCE"
+     >MERGE_PRECEDENCE</a><br />  <div class="private">
+    <a target="mainFrame" href="epydoc.docbuilder-module.html#_INHERITED_ATTRIBS"
+     >_INHERITED_ATTRIBS</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docbuilder-module.html#_attribute_mergefunc_registry"
+     >_attribute_mergefunc_registry</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docbuilder-module.html#_name_scores"
+     >_name_scores</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docbuilder-module.html#_unreachable_names"
+     >_unreachable_names</a><br />  </div>
+<hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/toc-epydoc.docintrospecter-module.html b/doc/api/toc-epydoc.docintrospecter-module.html
new file mode 100644
index 0000000..ea83fea
--- /dev/null
+++ b/doc/api/toc-epydoc.docintrospecter-module.html
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>docintrospecter</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module docintrospecter</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docintrospecter._DevNull-class.html"
+     >_DevNull</a><br />  </div>
+  <h2 class="toc">Functions</h2>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docintrospecter-module.html#_find_function_module"
+     >_find_function_module</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docintrospecter-module.html#_get_introspecter"
+     >_get_introspecter</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docintrospecter-module.html#_get_valuedoc"
+     >_get_valuedoc</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docintrospecter-module.html#_import"
+     >_import</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docintrospecter-module.html#_is_zope_method"
+     >_is_zope_method</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docintrospecter-module.html#_is_zope_type"
+     >_is_zope_type</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docintrospecter-module.html#_lookup"
+     >_lookup</a><br />  </div>
+    <a target="mainFrame" href="epydoc.docintrospecter-module.html#clear_cache"
+     >clear_cache</a><br />    <a target="mainFrame" href="epydoc.docintrospecter-module.html#get_canonical_name"
+     >get_canonical_name</a><br />    <a target="mainFrame" href="epydoc.docintrospecter-module.html#get_containing_module"
+     >get_containing_module</a><br />    <a target="mainFrame" href="epydoc.docintrospecter-module.html#get_docstring"
+     >get_docstring</a><br />    <a target="mainFrame" href="epydoc.docintrospecter-module.html#get_value_from_filename"
+     >get_value_from_filename</a><br />    <a target="mainFrame" href="epydoc.docintrospecter-module.html#get_value_from_name"
+     >get_value_from_name</a><br />    <a target="mainFrame" href="epydoc.docintrospecter-module.html#get_value_from_scriptname"
+     >get_value_from_scriptname</a><br />    <a target="mainFrame" href="epydoc.docintrospecter-module.html#introspect_class"
+     >introspect_class</a><br />    <a target="mainFrame" href="epydoc.docintrospecter-module.html#introspect_docs"
+     >introspect_docs</a><br />    <a target="mainFrame" href="epydoc.docintrospecter-module.html#introspect_docstring_lineno"
+     >introspect_docstring_lineno</a><br />    <a target="mainFrame" href="epydoc.docintrospecter-module.html#introspect_module"
+     >introspect_module</a><br />    <a target="mainFrame" href="epydoc.docintrospecter-module.html#introspect_other"
+     >introspect_other</a><br />    <a target="mainFrame" href="epydoc.docintrospecter-module.html#introspect_property"
+     >introspect_property</a><br />    <a target="mainFrame" href="epydoc.docintrospecter-module.html#introspect_routine"
+     >introspect_routine</a><br />    <a target="mainFrame" href="epydoc.docintrospecter-module.html#is_classmethod"
+     >is_classmethod</a><br />    <a target="mainFrame" href="epydoc.docintrospecter-module.html#is_future_feature"
+     >is_future_feature</a><br />    <a target="mainFrame" href="epydoc.docintrospecter-module.html#is_getset"
+     >is_getset</a><br />    <a target="mainFrame" href="epydoc.docintrospecter-module.html#is_member"
+     >is_member</a><br />    <a target="mainFrame" href="epydoc.docintrospecter-module.html#is_property"
+     >is_property</a><br />    <a target="mainFrame" href="epydoc.docintrospecter-module.html#is_staticmethod"
+     >is_staticmethod</a><br />    <a target="mainFrame" href="epydoc.docintrospecter-module.html#isclass"
+     >isclass</a><br />    <a target="mainFrame" href="epydoc.docintrospecter-module.html#register_class_type"
+     >register_class_type</a><br />    <a target="mainFrame" href="epydoc.docintrospecter-module.html#register_introspecter"
+     >register_introspecter</a><br />    <a target="mainFrame" href="epydoc.docintrospecter-module.html#value_repr"
+     >value_repr</a><br />    <a target="mainFrame" href="epydoc.docintrospecter-module.html#verify_name"
+     >verify_name</a><br />  <h2 class="toc">Variables</h2>
+    <a target="mainFrame" href="epydoc.docintrospecter-module.html#UNDOCUMENTED_CLASS_VARS"
+     >UNDOCUMENTED_CLASS_VARS</a><br />    <a target="mainFrame" href="epydoc.docintrospecter-module.html#UNDOCUMENTED_MODULE_VARS"
+     >UNDOCUMENTED_MODULE_VARS</a><br />  <div class="private">
+    <a target="mainFrame" href="epydoc.docintrospecter-module.html#_CLASS_TYPES"
+     >_CLASS_TYPES</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docintrospecter-module.html#_ZopeType"
+     >_ZopeType</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docintrospecter-module.html#__future_check_works"
+     >__future_check_works</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docintrospecter-module.html#_dev_null"
+     >_dev_null</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docintrospecter-module.html#_introspected_values"
+     >_introspected_values</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docintrospecter-module.html#_introspecter_registry"
+     >_introspecter_registry</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docintrospecter-module.html#_valuedoc_cache"
+     >_valuedoc_cache</a><br />  </div>
+<hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/toc-epydoc.docparser-module.html b/doc/api/toc-epydoc.docparser-module.html
new file mode 100644
index 0000000..f7c20ed
--- /dev/null
+++ b/doc/api/toc-epydoc.docparser-module.html
@@ -0,0 +1,140 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>docparser</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module docparser</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="epydoc.docparser.ParseError-class.html"
+     >ParseError</a><br />  <h2 class="toc">Functions</h2>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docparser-module.html#_add_import_var"
+     >_add_import_var</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docparser-module.html#_find"
+     >_find</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docparser-module.html#_find_in_namespace"
+     >_find_in_namespace</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docparser-module.html#_get_filename"
+     >_get_filename</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docparser-module.html#_get_module_name"
+     >_get_module_name</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docparser-module.html#_global_name"
+     >_global_name</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docparser-module.html#_import_var"
+     >_import_var</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docparser-module.html#_import_var_as"
+     >_import_var_as</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docparser-module.html#_is_submodule_import_var"
+     >_is_submodule_import_var</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docparser-module.html#_join_toktree"
+     >_join_toktree</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docparser-module.html#_module_var_toktree"
+     >_module_var_toktree</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docparser-module.html#_parse_package"
+     >_parse_package</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docparser-module.html#_pp_toktree"
+     >_pp_toktree</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docparser-module.html#_pp_toktree_add_piece"
+     >_pp_toktree_add_piece</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docparser-module.html#_process_fromstar_import"
+     >_process_fromstar_import</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docparser-module.html#_proxy_base"
+     >_proxy_base</a><br />  </div>
+    <a target="mainFrame" href="epydoc.docparser-module.html#add_docstring_from_comments"
+     >add_docstring_from_comments</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#add_to_group"
+     >add_to_group</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#apply_decorator"
+     >apply_decorator</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#del_variable"
+     >del_variable</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#dotted_names_in"
+     >dotted_names_in</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#find_base"
+     >find_base</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#flatten"
+     >flatten</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#get_lhs_parent"
+     >get_lhs_parent</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#get_module_encoding"
+     >get_module_encoding</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#handle_special_module_vars"
+     >handle_special_module_vars</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#init_arglist"
+     >init_arglist</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#lhs_is_instvar"
+     >lhs_is_instvar</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#lookup_name"
+     >lookup_name</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#lookup_value"
+     >lookup_value</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#lookup_variable"
+     >lookup_variable</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#parse_classdef_bases"
+     >parse_classdef_bases</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#parse_docs"
+     >parse_docs</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#parse_dotted_name"
+     >parse_dotted_name</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#parse_dotted_name_list"
+     >parse_dotted_name_list</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#parse_funcdef_arg"
+     >parse_funcdef_arg</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#parse_name"
+     >parse_name</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#parse_string"
+     >parse_string</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#parse_string_list"
+     >parse_string_list</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#pp_toktree"
+     >pp_toktree</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#process_assignment"
+     >process_assignment</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#process_classdef"
+     >process_classdef</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#process_control_flow_line"
+     >process_control_flow_line</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#process_del"
+     >process_del</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#process_docstring"
+     >process_docstring</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#process_file"
+     >process_file</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#process_from_import"
+     >process_from_import</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#process_funcdef"
+     >process_funcdef</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#process_import"
+     >process_import</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#process_line"
+     >process_line</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#process_multi_stmt"
+     >process_multi_stmt</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#process_one_line_block"
+     >process_one_line_block</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#rhs_to_valuedoc"
+     >rhs_to_valuedoc</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#script_guard"
+     >script_guard</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#set_variable"
+     >set_variable</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#shallow_parse"
+     >shallow_parse</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#split_on"
+     >split_on</a><br />  <h2 class="toc">Variables</h2>
+    <a target="mainFrame" href="epydoc.docparser-module.html#BASE_HANDLING"
+     >BASE_HANDLING</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#COMMENT_DOCSTRING_MARKER"
+     >COMMENT_DOCSTRING_MARKER</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#CONTROL_FLOW_KEYWORDS"
+     >CONTROL_FLOW_KEYWORDS</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#DEFAULT_DECORATOR_BEHAVIOR"
+     >DEFAULT_DECORATOR_BEHAVIOR</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#END_GROUP_MARKER"
+     >END_GROUP_MARKER</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#IMPORT_HANDLING"
+     >IMPORT_HANDLING</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#IMPORT_STAR_HANDLING"
+     >IMPORT_STAR_HANDLING</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#PARSE_ELSE_BLOCKS"
+     >PARSE_ELSE_BLOCKS</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#PARSE_EXCEPT_BLOCKS"
+     >PARSE_EXCEPT_BLOCKS</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#PARSE_FINALLY_BLOCKS"
+     >PARSE_FINALLY_BLOCKS</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#PARSE_FOR_BLOCKS"
+     >PARSE_FOR_BLOCKS</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#PARSE_IF_BLOCKS"
+     >PARSE_IF_BLOCKS</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#PARSE_TRY_BLOCKS"
+     >PARSE_TRY_BLOCKS</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#PARSE_WHILE_BLOCKS"
+     >PARSE_WHILE_BLOCKS</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#START_GROUP_MARKER"
+     >START_GROUP_MARKER</a><br />  <div class="private">
+    <a target="mainFrame" href="epydoc.docparser-module.html#_moduledoc_cache"
+     >_moduledoc_cache</a><br />  </div>
+<hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/toc-epydoc.docstringparser-module.html b/doc/api/toc-epydoc.docstringparser-module.html
new file mode 100644
index 0000000..5606714
--- /dev/null
+++ b/doc/api/toc-epydoc.docstringparser-module.html
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>docstringparser</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module docstringparser</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="epydoc.docstringparser.DocstringField-class.html"
+     >DocstringField</a><br />  <h2 class="toc">Functions</h2>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docstringparser-module.html#_check"
+     >_check</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docstringparser-module.html#_descr_to_docstring_field"
+     >_descr_to_docstring_field</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docstringparser-module.html#_descr_to_identifiers"
+     >_descr_to_identifiers</a><br />  </div>
+    <a target="mainFrame" href="epydoc.docstringparser-module.html#add_metadata_from_var"
+     >add_metadata_from_var</a><br />    <a target="mainFrame" href="epydoc.docstringparser-module.html#check_type_fields"
+     >check_type_fields</a><br />    <a target="mainFrame" href="epydoc.docstringparser-module.html#get_docformat"
+     >get_docformat</a><br />    <a target="mainFrame" href="epydoc.docstringparser-module.html#initialize_api_doc"
+     >initialize_api_doc</a><br />    <a target="mainFrame" href="epydoc.docstringparser-module.html#parse_docstring"
+     >parse_docstring</a><br />    <a target="mainFrame" href="epydoc.docstringparser-module.html#parse_function_signature"
+     >parse_function_signature</a><br />    <a target="mainFrame" href="epydoc.docstringparser-module.html#process_arg_field"
+     >process_arg_field</a><br />    <a target="mainFrame" href="epydoc.docstringparser-module.html#process_cvar_field"
+     >process_cvar_field</a><br />    <a target="mainFrame" href="epydoc.docstringparser-module.html#process_deffield_field"
+     >process_deffield_field</a><br />    <a target="mainFrame" href="epydoc.docstringparser-module.html#process_field"
+     >process_field</a><br />    <a target="mainFrame" href="epydoc.docstringparser-module.html#process_group_field"
+     >process_group_field</a><br />    <a target="mainFrame" href="epydoc.docstringparser-module.html#process_include_field"
+     >process_include_field</a><br />    <a target="mainFrame" href="epydoc.docstringparser-module.html#process_ivar_field"
+     >process_ivar_field</a><br />    <a target="mainFrame" href="epydoc.docstringparser-module.html#process_kwarg_field"
+     >process_kwarg_field</a><br />    <a target="mainFrame" href="epydoc.docstringparser-module.html#process_raise_field"
+     >process_raise_field</a><br />    <a target="mainFrame" href="epydoc.docstringparser-module.html#process_return_field"
+     >process_return_field</a><br />    <a target="mainFrame" href="epydoc.docstringparser-module.html#process_rtype_field"
+     >process_rtype_field</a><br />    <a target="mainFrame" href="epydoc.docstringparser-module.html#process_sort_field"
+     >process_sort_field</a><br />    <a target="mainFrame" href="epydoc.docstringparser-module.html#process_summary_field"
+     >process_summary_field</a><br />    <a target="mainFrame" href="epydoc.docstringparser-module.html#process_type_field"
+     >process_type_field</a><br />    <a target="mainFrame" href="epydoc.docstringparser-module.html#process_undocumented_field"
+     >process_undocumented_field</a><br />    <a target="mainFrame" href="epydoc.docstringparser-module.html#process_var_field"
+     >process_var_field</a><br />    <a target="mainFrame" href="epydoc.docstringparser-module.html#register_field_handler"
+     >register_field_handler</a><br />    <a target="mainFrame" href="epydoc.docstringparser-module.html#report_errors"
+     >report_errors</a><br />    <a target="mainFrame" href="epydoc.docstringparser-module.html#set_var_descr"
+     >set_var_descr</a><br />    <a target="mainFrame" href="epydoc.docstringparser-module.html#set_var_type"
+     >set_var_type</a><br />    <a target="mainFrame" href="epydoc.docstringparser-module.html#split_init_fields"
+     >split_init_fields</a><br />    <a target="mainFrame" href="epydoc.docstringparser-module.html#unindent_docstring"
+     >unindent_docstring</a><br />    <a target="mainFrame" href="epydoc.docstringparser-module.html#user_docfields"
+     >user_docfields</a><br />  <h2 class="toc">Variables</h2>
+    <a target="mainFrame" href="epydoc.docstringparser-module.html#BAD_CONTEXT"
+     >BAD_CONTEXT</a><br />    <a target="mainFrame" href="epydoc.docstringparser-module.html#BAD_PARAM"
+     >BAD_PARAM</a><br />    <a target="mainFrame" href="epydoc.docstringparser-module.html#DEFAULT_DOCFORMAT"
+     >DEFAULT_DOCFORMAT</a><br />    <a target="mainFrame" href="epydoc.docstringparser-module.html#EXCEPTION_TAGS"
+     >EXCEPTION_TAGS</a><br />    <a target="mainFrame" href="epydoc.docstringparser-module.html#EXPECTED_ARG"
+     >EXPECTED_ARG</a><br />    <a target="mainFrame" href="epydoc.docstringparser-module.html#EXPECTED_SINGLE_ARG"
+     >EXPECTED_SINGLE_ARG</a><br />    <a target="mainFrame" href="epydoc.docstringparser-module.html#PARAMETER_TAGS"
+     >PARAMETER_TAGS</a><br />    <a target="mainFrame" href="epydoc.docstringparser-module.html#REDEFINED"
+     >REDEFINED</a><br />    <a target="mainFrame" href="epydoc.docstringparser-module.html#RETURN_PDS"
+     >RETURN_PDS</a><br />    <a target="mainFrame" href="epydoc.docstringparser-module.html#STANDARD_FIELDS"
+     >STANDARD_FIELDS</a><br />    <a target="mainFrame" href="epydoc.docstringparser-module.html#UNEXPECTED_ARG"
+     >UNEXPECTED_ARG</a><br />    <a target="mainFrame" href="epydoc.docstringparser-module.html#UNKNOWN_TAG"
+     >UNKNOWN_TAG</a><br />    <a target="mainFrame" href="epydoc.docstringparser-module.html#VARIABLE_TAGS"
+     >VARIABLE_TAGS</a><br />  <div class="private">
+    <a target="mainFrame" href="epydoc.docstringparser-module.html#_IDENTIFIER_LIST_REGEXP"
+     >_IDENTIFIER_LIST_REGEXP</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docstringparser-module.html#_SIGNATURE_RE"
+     >_SIGNATURE_RE</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docstringparser-module.html#_field_dispatch_table"
+     >_field_dispatch_table</a><br />  </div>
+<hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/toc-epydoc.docwriter-module.html b/doc/api/toc-epydoc.docwriter-module.html
new file mode 100644
index 0000000..1d3d7f7
--- /dev/null
+++ b/doc/api/toc-epydoc.docwriter-module.html
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>docwriter</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module docwriter</h1>
+<hr />
+<hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/toc-epydoc.docwriter.dotgraph-module.html b/doc/api/toc-epydoc.docwriter.dotgraph-module.html
new file mode 100644
index 0000000..3ea3392
--- /dev/null
+++ b/doc/api/toc-epydoc.docwriter.dotgraph-module.html
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>dotgraph</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module dotgraph</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="epydoc.docwriter.dotgraph.DotGraph-class.html"
+     >DotGraph</a><br />    <a target="mainFrame" href="epydoc.docwriter.dotgraph.DotGraphEdge-class.html"
+     >DotGraphEdge</a><br />    <a target="mainFrame" href="epydoc.docwriter.dotgraph.DotGraphNode-class.html"
+     >DotGraphNode</a><br />    <a target="mainFrame" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html"
+     >DotGraphUmlClassNode</a><br />    <a target="mainFrame" href="epydoc.docwriter.dotgraph.DotGraphUmlModuleNode-class.html"
+     >DotGraphUmlModuleNode</a><br />  <h2 class="toc">Functions</h2>
+    <a target="mainFrame" href="epydoc.docwriter.dotgraph-module.html#add_valdoc_nodes"
+     >add_valdoc_nodes</a><br />    <a target="mainFrame" href="epydoc.docwriter.dotgraph-module.html#call_graph"
+     >call_graph</a><br />    <a target="mainFrame" href="epydoc.docwriter.dotgraph-module.html#class_tree_graph"
+     >class_tree_graph</a><br />    <a target="mainFrame" href="epydoc.docwriter.dotgraph-module.html#get_dot_version"
+     >get_dot_version</a><br />    <a target="mainFrame" href="epydoc.docwriter.dotgraph-module.html#import_graph"
+     >import_graph</a><br />    <a target="mainFrame" href="epydoc.docwriter.dotgraph-module.html#name_list"
+     >name_list</a><br />    <a target="mainFrame" href="epydoc.docwriter.dotgraph-module.html#package_tree_graph"
+     >package_tree_graph</a><br />    <a target="mainFrame" href="epydoc.docwriter.dotgraph-module.html#specialize_valdoc_node"
+     >specialize_valdoc_node</a><br />    <a target="mainFrame" href="epydoc.docwriter.dotgraph-module.html#uml_class_tree_graph"
+     >uml_class_tree_graph</a><br />    <a target="mainFrame" href="epydoc.docwriter.dotgraph-module.html#uml_package_tree_graph"
+     >uml_package_tree_graph</a><br />  <h2 class="toc">Variables</h2>
+    <a target="mainFrame" href="epydoc.docwriter.dotgraph-module.html#BASECLASS_BG"
+     >BASECLASS_BG</a><br />    <a target="mainFrame" href="epydoc.docwriter.dotgraph-module.html#CLASS_BG"
+     >CLASS_BG</a><br />    <a target="mainFrame" href="epydoc.docwriter.dotgraph-module.html#DOT_COMMAND"
+     >DOT_COMMAND</a><br />    <a target="mainFrame" href="epydoc.docwriter.dotgraph-module.html#INH_LINK_COLOR"
+     >INH_LINK_COLOR</a><br />    <a target="mainFrame" href="epydoc.docwriter.dotgraph-module.html#MODULE_BG"
+     >MODULE_BG</a><br />    <a target="mainFrame" href="epydoc.docwriter.dotgraph-module.html#MODULE_NODE_HTML"
+     >MODULE_NODE_HTML</a><br />    <a target="mainFrame" href="epydoc.docwriter.dotgraph-module.html#NOOP_URL"
+     >NOOP_URL</a><br />    <a target="mainFrame" href="epydoc.docwriter.dotgraph-module.html#ROUTINE_BG"
+     >ROUTINE_BG</a><br />    <a target="mainFrame" href="epydoc.docwriter.dotgraph-module.html#SELECTED_BG"
+     >SELECTED_BG</a><br />    <a target="mainFrame" href="epydoc.docwriter.dotgraph-module.html#SUBCLASS_BG"
+     >SUBCLASS_BG</a><br />  <div class="private">
+    <a target="mainFrame" href="epydoc.docwriter.dotgraph-module.html#_DOT_VERSION_RE"
+     >_DOT_VERSION_RE</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docwriter.dotgraph-module.html#_dot_version"
+     >_dot_version</a><br />  </div>
+<hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/toc-epydoc.docwriter.html-module.html b/doc/api/toc-epydoc.docwriter.html-module.html
new file mode 100644
index 0000000..4497be5
--- /dev/null
+++ b/doc/api/toc-epydoc.docwriter.html-module.html
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>html</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module html</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="epydoc.docwriter.html.HTMLWriter-class.html"
+     >HTMLWriter</a><br />  <div class="private">
+    <a target="mainFrame" href="epydoc.docwriter.html._HTMLDocstringLinker-class.html"
+     >_HTMLDocstringLinker</a><br />  </div>
+  <h2 class="toc">Functions</h2>
+    <a target="mainFrame" href="epydoc.docwriter.html-module.html#compile_template"
+     >compile_template</a><br />    <a target="mainFrame" href="epydoc.docwriter.html-module.html#strip_indent"
+     >strip_indent</a><br /><hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/toc-epydoc.docwriter.html_colorize-module.html b/doc/api/toc-epydoc.docwriter.html_colorize-module.html
new file mode 100644
index 0000000..abcccd7
--- /dev/null
+++ b/doc/api/toc-epydoc.docwriter.html_colorize-module.html
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>html_colorize</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module html_colorize</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html"
+     >PythonSourceColorizer</a><br />  <h2 class="toc">Variables</h2>
+    <a target="mainFrame" href="epydoc.docwriter.html_colorize-module.html#PYSRC_EXPANDTO_JAVASCRIPT"
+     >PYSRC_EXPANDTO_JAVASCRIPT</a><br />    <a target="mainFrame" href="epydoc.docwriter.html_colorize-module.html#PYSRC_JAVASCRIPTS"
+     >PYSRC_JAVASCRIPTS</a><br />  <div class="private">
+    <a target="mainFrame" href="epydoc.docwriter.html_colorize-module.html#_FOOT"
+     >_FOOT</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docwriter.html_colorize-module.html#_HDR"
+     >_HDR</a><br />  </div>
+<hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/toc-epydoc.docwriter.html_css-module.html b/doc/api/toc-epydoc.docwriter.html_css-module.html
new file mode 100644
index 0000000..4ace06e
--- /dev/null
+++ b/doc/api/toc-epydoc.docwriter.html_css-module.html
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>html_css</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module html_css</h1>
+<hr />
+  <h2 class="toc">Functions</h2>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docwriter.html_css-module.html#_darken_darks"
+     >_darken_darks</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docwriter.html_css-module.html#_rv"
+     >_rv</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docwriter.html_css-module.html#_set_colors"
+     >_set_colors</a><br />  </div>
+  <h2 class="toc">Variables</h2>
+    <a target="mainFrame" href="epydoc.docwriter.html_css-module.html#STYLESHEETS"
+     >STYLESHEETS</a><br />    <a target="mainFrame" href="epydoc.docwriter.html_css-module.html#TEMPLATE"
+     >TEMPLATE</a><br />  <div class="private">
+    <a target="mainFrame" href="epydoc.docwriter.html_css-module.html#_BLACK"
+     >_BLACK</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docwriter.html_css-module.html#_BLUE"
+     >_BLUE</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docwriter.html_css-module.html#_BLUE_COLORS"
+     >_BLUE_COLORS</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docwriter.html_css-module.html#_COLOR_RE"
+     >_COLOR_RE</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docwriter.html_css-module.html#_GRAYSCALE"
+     >_GRAYSCALE</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docwriter.html_css-module.html#_GREEN"
+     >_GREEN</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docwriter.html_css-module.html#_WHITE"
+     >_WHITE</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docwriter.html_css-module.html#_WHITE_COLORS"
+     >_WHITE_COLORS</a><br />  </div>
+<hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/toc-epydoc.docwriter.html_help-module.html b/doc/api/toc-epydoc.docwriter.html_help-module.html
new file mode 100644
index 0000000..756b16d
--- /dev/null
+++ b/doc/api/toc-epydoc.docwriter.html_help-module.html
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>html_help</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module html_help</h1>
+<hr />
+  <h2 class="toc">Variables</h2>
+    <a target="mainFrame" href="epydoc.docwriter.html_help-module.html#HTML_HELP"
+     >HTML_HELP</a><br /><hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/toc-epydoc.docwriter.latex-module.html b/doc/api/toc-epydoc.docwriter.latex-module.html
new file mode 100644
index 0000000..3dd77b3
--- /dev/null
+++ b/doc/api/toc-epydoc.docwriter.latex-module.html
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>latex</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module latex</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="epydoc.docwriter.latex.LatexWriter-class.html"
+     >LatexWriter</a><br /><hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/toc-epydoc.docwriter.plaintext-module.html b/doc/api/toc-epydoc.docwriter.plaintext-module.html
new file mode 100644
index 0000000..b718f68
--- /dev/null
+++ b/doc/api/toc-epydoc.docwriter.plaintext-module.html
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>plaintext</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module plaintext</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="epydoc.docwriter.plaintext.PlaintextWriter-class.html"
+     >PlaintextWriter</a><br /><hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/toc-epydoc.docwriter.xlink-module.html b/doc/api/toc-epydoc.docwriter.xlink-module.html
new file mode 100644
index 0000000..0f73b88
--- /dev/null
+++ b/doc/api/toc-epydoc.docwriter.xlink-module.html
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>xlink</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module xlink</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="epydoc.docwriter.xlink.ApiLinkReader-class.html"
+     >ApiLinkReader</a><br />    <a target="mainFrame" href="epydoc.docwriter.xlink.DocUrlGenerator-class.html"
+     >DocUrlGenerator</a><br />    <a target="mainFrame" href="epydoc.docwriter.xlink.UrlGenerator-class.html"
+     >UrlGenerator</a><br />    <a target="mainFrame" href="epydoc.docwriter.xlink.VoidUrlGenerator-class.html"
+     >VoidUrlGenerator</a><br />  <h2 class="toc">Functions</h2>
+    <a target="mainFrame" href="epydoc.docwriter.xlink-module.html#create_api_role"
+     >create_api_role</a><br />    <a target="mainFrame" href="epydoc.docwriter.xlink-module.html#register_api"
+     >register_api</a><br />    <a target="mainFrame" href="epydoc.docwriter.xlink-module.html#set_api_file"
+     >set_api_file</a><br />    <a target="mainFrame" href="epydoc.docwriter.xlink-module.html#set_api_root"
+     >set_api_root</a><br />    <a target="mainFrame" href="epydoc.docwriter.xlink-module.html#split_name"
+     >split_name</a><br />  <h2 class="toc">Variables</h2>
+    <a target="mainFrame" href="epydoc.docwriter.xlink-module.html#api_register"
+     >api_register</a><br /><hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/toc-epydoc.gui-module.html b/doc/api/toc-epydoc.gui-module.html
new file mode 100644
index 0000000..71cd828
--- /dev/null
+++ b/doc/api/toc-epydoc.gui-module.html
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>gui</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module gui</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="epydoc.gui.EpydocGUI-class.html"
+     >EpydocGUI</a><br />    <a target="mainFrame" href="epydoc.gui.GUILogger-class.html"
+     >GUILogger</a><br />  <h2 class="toc">Functions</h2>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.gui-module.html#_error"
+     >_error</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.gui-module.html#_usage"
+     >_usage</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.gui-module.html#_version"
+     >_version</a><br />  </div>
+    <a target="mainFrame" href="epydoc.gui-module.html#document"
+     >document</a><br />    <a target="mainFrame" href="epydoc.gui-module.html#gui"
+     >gui</a><br />  <h2 class="toc">Variables</h2>
+    <a target="mainFrame" href="epydoc.gui-module.html#ACTIVEBG_COLOR"
+     >ACTIVEBG_COLOR</a><br />    <a target="mainFrame" href="epydoc.gui-module.html#BG_COLOR"
+     >BG_COLOR</a><br />    <a target="mainFrame" href="epydoc.gui-module.html#BUILD_PROGRESS"
+     >BUILD_PROGRESS</a><br />    <a target="mainFrame" href="epydoc.gui-module.html#BUTTON_CONFIG"
+     >BUTTON_CONFIG</a><br />    <a target="mainFrame" href="epydoc.gui-module.html#CBUTTON_CONFIG"
+     >CBUTTON_CONFIG</a><br />    <a target="mainFrame" href="epydoc.gui-module.html#COLOR_CONFIG"
+     >COLOR_CONFIG</a><br />    <a target="mainFrame" href="epydoc.gui-module.html#DEBUG"
+     >DEBUG</a><br />    <a target="mainFrame" href="epydoc.gui-module.html#DH"
+     >DH</a><br />    <a target="mainFrame" href="epydoc.gui-module.html#DOWN_GIF"
+     >DOWN_GIF</a><br />    <a target="mainFrame" href="epydoc.gui-module.html#DW"
+     >DW</a><br />    <a target="mainFrame" href="epydoc.gui-module.html#DX"
+     >DX</a><br />    <a target="mainFrame" href="epydoc.gui-module.html#DY"
+     >DY</a><br />    <a target="mainFrame" href="epydoc.gui-module.html#ENTRYSELECT_COLOR"
+     >ENTRYSELECT_COLOR</a><br />    <a target="mainFrame" href="epydoc.gui-module.html#ENTRY_CONFIG"
+     >ENTRY_CONFIG</a><br />    <a target="mainFrame" href="epydoc.gui-module.html#ERROR_COLOR"
+     >ERROR_COLOR</a><br />    <a target="mainFrame" href="epydoc.gui-module.html#GUIERROR_COLOR"
+     >GUIERROR_COLOR</a><br />    <a target="mainFrame" href="epydoc.gui-module.html#HEADER_COLOR"
+     >HEADER_COLOR</a><br />    <a target="mainFrame" href="epydoc.gui-module.html#IMPORT_PROGRESS"
+     >IMPORT_PROGRESS</a><br />    <a target="mainFrame" href="epydoc.gui-module.html#LEFT_GIF"
+     >LEFT_GIF</a><br />    <a target="mainFrame" href="epydoc.gui-module.html#LISTBOX_CONFIG"
+     >LISTBOX_CONFIG</a><br />    <a target="mainFrame" href="epydoc.gui-module.html#MESSAGE_COLOR"
+     >MESSAGE_COLOR</a><br />    <a target="mainFrame" href="epydoc.gui-module.html#PROGRESS_BG"
+     >PROGRESS_BG</a><br />    <a target="mainFrame" href="epydoc.gui-module.html#PROGRESS_COLOR1"
+     >PROGRESS_COLOR1</a><br />    <a target="mainFrame" href="epydoc.gui-module.html#PROGRESS_COLOR2"
+     >PROGRESS_COLOR2</a><br />    <a target="mainFrame" href="epydoc.gui-module.html#PROGRESS_COLOR3"
+     >PROGRESS_COLOR3</a><br />    <a target="mainFrame" href="epydoc.gui-module.html#PROGRESS_HEIGHT"
+     >PROGRESS_HEIGHT</a><br />    <a target="mainFrame" href="epydoc.gui-module.html#PROGRESS_WIDTH"
+     >PROGRESS_WIDTH</a><br />    <a target="mainFrame" href="epydoc.gui-module.html#RIGHT_GIF"
+     >RIGHT_GIF</a><br />    <a target="mainFrame" href="epydoc.gui-module.html#SB_CONFIG"
+     >SB_CONFIG</a><br />    <a target="mainFrame" href="epydoc.gui-module.html#SELECT_COLOR"
+     >SELECT_COLOR</a><br />    <a target="mainFrame" href="epydoc.gui-module.html#SHOWERR_CONFIG"
+     >SHOWERR_CONFIG</a><br />    <a target="mainFrame" href="epydoc.gui-module.html#SHOWMSG_CONFIG"
+     >SHOWMSG_CONFIG</a><br />    <a target="mainFrame" href="epydoc.gui-module.html#SHOWWRN_CONFIG"
+     >SHOWWRN_CONFIG</a><br />    <a target="mainFrame" href="epydoc.gui-module.html#TEXT_COLOR"
+     >TEXT_COLOR</a><br />    <a target="mainFrame" href="epydoc.gui-module.html#UP_GIF"
+     >UP_GIF</a><br />    <a target="mainFrame" href="epydoc.gui-module.html#WARNING_COLOR"
+     >WARNING_COLOR</a><br />    <a target="mainFrame" href="epydoc.gui-module.html#WRITE_PROGRESS"
+     >WRITE_PROGRESS</a><br /><hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/toc-epydoc.log-module.html b/doc/api/toc-epydoc.log-module.html
new file mode 100644
index 0000000..2f0590c
--- /dev/null
+++ b/doc/api/toc-epydoc.log-module.html
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>log</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module log</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="epydoc.log.Logger-class.html"
+     >Logger</a><br />    <a target="mainFrame" href="epydoc.log.SimpleLogger-class.html"
+     >SimpleLogger</a><br />  <h2 class="toc">Functions</h2>
+    <a target="mainFrame" href="epydoc.log-module.html#close"
+     >close</a><br />    <a target="mainFrame" href="epydoc.log-module.html#debug"
+     >debug</a><br />    <a target="mainFrame" href="epydoc.log-module.html#docstring_warning"
+     >docstring_warning</a><br />    <a target="mainFrame" href="epydoc.log-module.html#end_block"
+     >end_block</a><br />    <a target="mainFrame" href="epydoc.log-module.html#end_progress"
+     >end_progress</a><br />    <a target="mainFrame" href="epydoc.log-module.html#error"
+     >error</a><br />    <a target="mainFrame" href="epydoc.log-module.html#fatal"
+     >fatal</a><br />    <a target="mainFrame" href="epydoc.log-module.html#info"
+     >info</a><br />    <a target="mainFrame" href="epydoc.log-module.html#progress"
+     >progress</a><br />    <a target="mainFrame" href="epydoc.log-module.html#register_logger"
+     >register_logger</a><br />    <a target="mainFrame" href="epydoc.log-module.html#remove_logger"
+     >remove_logger</a><br />    <a target="mainFrame" href="epydoc.log-module.html#start_block"
+     >start_block</a><br />    <a target="mainFrame" href="epydoc.log-module.html#start_progress"
+     >start_progress</a><br />    <a target="mainFrame" href="epydoc.log-module.html#warning"
+     >warning</a><br />  <h2 class="toc">Variables</h2>
+    <a target="mainFrame" href="epydoc.log-module.html#DEBUG"
+     >DEBUG</a><br />    <a target="mainFrame" href="epydoc.log-module.html#DOCSTRING_WARNING"
+     >DOCSTRING_WARNING</a><br />    <a target="mainFrame" href="epydoc.log-module.html#ERROR"
+     >ERROR</a><br />    <a target="mainFrame" href="epydoc.log-module.html#FATAL"
+     >FATAL</a><br />    <a target="mainFrame" href="epydoc.log-module.html#INFO"
+     >INFO</a><br />    <a target="mainFrame" href="epydoc.log-module.html#WARNING"
+     >WARNING</a><br />  <div class="private">
+    <a target="mainFrame" href="epydoc.log-module.html#_loggers"
+     >_loggers</a><br />  </div>
+<hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/toc-epydoc.markup-module.html b/doc/api/toc-epydoc.markup-module.html
new file mode 100644
index 0000000..bca6769
--- /dev/null
+++ b/doc/api/toc-epydoc.markup-module.html
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>markup</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module markup</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="epydoc.markup.ConcatenatedDocstring-class.html"
+     >ConcatenatedDocstring</a><br />    <a target="mainFrame" href="epydoc.markup.DocstringLinker-class.html"
+     >DocstringLinker</a><br />    <a target="mainFrame" href="epydoc.markup.Field-class.html"
+     >Field</a><br />    <a target="mainFrame" href="epydoc.markup.ParseError-class.html"
+     >ParseError</a><br />    <a target="mainFrame" href="epydoc.markup.ParsedDocstring-class.html"
+     >ParsedDocstring</a><br />  <h2 class="toc">Functions</h2>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.markup-module.html#_parse_warn"
+     >_parse_warn</a><br />  </div>
+    <a target="mainFrame" href="epydoc.markup-module.html#parse"
+     >parse</a><br />    <a target="mainFrame" href="epydoc.markup-module.html#parse_type_of"
+     >parse_type_of</a><br />    <a target="mainFrame" href="epydoc.markup-module.html#register_markup_language"
+     >register_markup_language</a><br />  <h2 class="toc">Variables</h2>
+    <a target="mainFrame" href="epydoc.markup-module.html#MARKUP_LANGUAGES_USED"
+     >MARKUP_LANGUAGES_USED</a><br />    <a target="mainFrame" href="epydoc.markup-module.html#SCRWIDTH"
+     >SCRWIDTH</a><br />  <div class="private">
+    <a target="mainFrame" href="epydoc.markup-module.html#_markup_language_registry"
+     >_markup_language_registry</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.markup-module.html#_parse_warnings"
+     >_parse_warnings</a><br />  </div>
+<hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/toc-epydoc.markup.doctest-module.html b/doc/api/toc-epydoc.markup.doctest-module.html
new file mode 100644
index 0000000..6e9e381
--- /dev/null
+++ b/doc/api/toc-epydoc.markup.doctest-module.html
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>doctest</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module doctest</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="epydoc.markup.doctest.DoctestColorizer-class.html"
+     >DoctestColorizer</a><br />    <a target="mainFrame" href="epydoc.markup.doctest.HTMLDoctestColorizer-class.html"
+     >HTMLDoctestColorizer</a><br />    <a target="mainFrame" href="epydoc.markup.doctest.LaTeXDoctestColorizer-class.html"
+     >LaTeXDoctestColorizer</a><br />    <a target="mainFrame" href="epydoc.markup.doctest.XMLDoctestColorizer-class.html"
+     >XMLDoctestColorizer</a><br />  <h2 class="toc">Functions</h2>
+    <a target="mainFrame" href="epydoc.markup.doctest-module.html#doctest_to_html"
+     >doctest_to_html</a><br />    <a target="mainFrame" href="epydoc.markup.doctest-module.html#doctest_to_latex"
+     >doctest_to_latex</a><br /><hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/toc-epydoc.markup.epytext-module.html b/doc/api/toc-epydoc.markup.epytext-module.html
new file mode 100644
index 0000000..afc73bd
--- /dev/null
+++ b/doc/api/toc-epydoc.markup.epytext-module.html
@@ -0,0 +1,119 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epytext</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module epytext</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="epydoc.markup.epytext.ColorizingError-class.html"
+     >ColorizingError</a><br />    <a target="mainFrame" href="epydoc.markup.epytext.Element-class.html"
+     >Element</a><br />    <a target="mainFrame" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html"
+     >ParsedEpytextDocstring</a><br />    <a target="mainFrame" href="epydoc.markup.epytext.StructuringError-class.html"
+     >StructuringError</a><br />    <a target="mainFrame" href="epydoc.markup.epytext.Token-class.html"
+     >Token</a><br />    <a target="mainFrame" href="epydoc.markup.epytext.TokenizationError-class.html"
+     >TokenizationError</a><br />  <h2 class="toc">Functions</h2>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.markup.epytext-module.html#_add_list"
+     >_add_list</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.markup.epytext-module.html#_add_para"
+     >_add_para</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.markup.epytext-module.html#_add_section"
+     >_add_section</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.markup.epytext-module.html#_colorize"
+     >_colorize</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.markup.epytext-module.html#_colorize_graph"
+     >_colorize_graph</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.markup.epytext-module.html#_colorize_link"
+     >_colorize_link</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.markup.epytext-module.html#_pop_completed_blocks"
+     >_pop_completed_blocks</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.markup.epytext-module.html#_raise_graphs"
+     >_raise_graphs</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.markup.epytext-module.html#_tokenize"
+     >_tokenize</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.markup.epytext-module.html#_tokenize_doctest"
+     >_tokenize_doctest</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.markup.epytext-module.html#_tokenize_listart"
+     >_tokenize_listart</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.markup.epytext-module.html#_tokenize_literal"
+     >_tokenize_literal</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.markup.epytext-module.html#_tokenize_para"
+     >_tokenize_para</a><br />  </div>
+    <a target="mainFrame" href="epydoc.markup.epytext-module.html#parse"
+     >parse</a><br />    <a target="mainFrame" href="epydoc.markup.epytext-module.html#parse_as_literal"
+     >parse_as_literal</a><br />    <a target="mainFrame" href="epydoc.markup.epytext-module.html#parse_as_para"
+     >parse_as_para</a><br />    <a target="mainFrame" href="epydoc.markup.epytext-module.html#parse_docstring"
+     >parse_docstring</a><br />    <a target="mainFrame" href="epydoc.markup.epytext-module.html#pparse"
+     >pparse</a><br />    <a target="mainFrame" href="epydoc.markup.epytext-module.html#to_debug"
+     >to_debug</a><br />    <a target="mainFrame" href="epydoc.markup.epytext-module.html#to_epytext"
+     >to_epytext</a><br />    <a target="mainFrame" href="epydoc.markup.epytext-module.html#to_plaintext"
+     >to_plaintext</a><br />  <h2 class="toc">Variables</h2>
+    <a target="mainFrame" href="epydoc.markup.epytext-module.html#GRAPH_TYPES"
+     >GRAPH_TYPES</a><br />    <a target="mainFrame" href="epydoc.markup.epytext-module.html#SYMBOLS"
+     >SYMBOLS</a><br />    <a target="mainFrame" href="epydoc.markup.epytext-module.html#SYMBOL_TO_PLAINTEXT"
+     >SYMBOL_TO_PLAINTEXT</a><br />  <div class="private">
+    <a target="mainFrame" href="epydoc.markup.epytext-module.html#_BRACE_RE"
+     >_BRACE_RE</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.markup.epytext-module.html#_BULLET_RE"
+     >_BULLET_RE</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.markup.epytext-module.html#_COLORIZING_TAGS"
+     >_COLORIZING_TAGS</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.markup.epytext-module.html#_ESCAPES"
+     >_ESCAPES</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.markup.epytext-module.html#_FIELD_BULLET_RE"
+     >_FIELD_BULLET_RE</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.markup.epytext-module.html#_HEADING_CHARS"
+     >_HEADING_CHARS</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.markup.epytext-module.html#_LINK_COLORIZING_TAGS"
+     >_LINK_COLORIZING_TAGS</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.markup.epytext-module.html#_LIST_BULLET_RE"
+     >_LIST_BULLET_RE</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.markup.epytext-module.html#_SYMBOLS"
+     >_SYMBOLS</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.markup.epytext-module.html#_TARGET_RE"
+     >_TARGET_RE</a><br />  </div>
+    <a target="mainFrame" href="epydoc.markup.epytext-module.html#__doc__"
+     >__doc__</a><br /><hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/toc-epydoc.markup.javadoc-module.html b/doc/api/toc-epydoc.markup.javadoc-module.html
new file mode 100644
index 0000000..2978fe3
--- /dev/null
+++ b/doc/api/toc-epydoc.markup.javadoc-module.html
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>javadoc</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module javadoc</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="epydoc.markup.javadoc.ParsedJavadocDocstring-class.html"
+     >ParsedJavadocDocstring</a><br />  <h2 class="toc">Functions</h2>
+    <a target="mainFrame" href="epydoc.markup.javadoc-module.html#parse_docstring"
+     >parse_docstring</a><br /><hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/toc-epydoc.markup.plaintext-module.html b/doc/api/toc-epydoc.markup.plaintext-module.html
new file mode 100644
index 0000000..0e5897b
--- /dev/null
+++ b/doc/api/toc-epydoc.markup.plaintext-module.html
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>plaintext</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module plaintext</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="epydoc.markup.plaintext.ParsedPlaintextDocstring-class.html"
+     >ParsedPlaintextDocstring</a><br />  <h2 class="toc">Functions</h2>
+    <a target="mainFrame" href="epydoc.markup.plaintext-module.html#parse_docstring"
+     >parse_docstring</a><br /><hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/toc-epydoc.markup.pyval_repr-module.html b/doc/api/toc-epydoc.markup.pyval_repr-module.html
new file mode 100644
index 0000000..908635f
--- /dev/null
+++ b/doc/api/toc-epydoc.markup.pyval_repr-module.html
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>pyval_repr</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module pyval_repr</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="epydoc.markup.pyval_repr.ColorizedPyvalRepr-class.html"
+     >ColorizedPyvalRepr</a><br />    <a target="mainFrame" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html"
+     >PyvalColorizer</a><br />  <div class="private">
+    <a target="mainFrame" href="epydoc.markup.pyval_repr._ColorizerState-class.html"
+     >_ColorizerState</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.markup.pyval_repr._Linebreak-class.html"
+     >_Linebreak</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.markup.pyval_repr._Maxlines-class.html"
+     >_Maxlines</a><br />  </div>
+  <h2 class="toc">Functions</h2>
+    <a target="mainFrame" href="epydoc.markup.pyval_repr-module.html#colorize_pyval"
+     >colorize_pyval</a><br />    <a target="mainFrame" href="epydoc.markup.pyval_repr-module.html#is_re_pattern"
+     >is_re_pattern</a><br /><hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/toc-epydoc.markup.restructuredtext-module.html b/doc/api/toc-epydoc.markup.restructuredtext-module.html
new file mode 100644
index 0000000..65f2783
--- /dev/null
+++ b/doc/api/toc-epydoc.markup.restructuredtext-module.html
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>restructuredtext</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module restructuredtext</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="epydoc.markup.restructuredtext.OptimizedReporter-class.html"
+     >OptimizedReporter</a><br />    <a target="mainFrame" href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html"
+     >ParsedRstDocstring</a><br />  <div class="private">
+    <a target="mainFrame" href="epydoc.markup.restructuredtext._DocumentPseudoWriter-class.html"
+     >_DocumentPseudoWriter</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.markup.restructuredtext._EpydocHTMLTranslator-class.html"
+     >_EpydocHTMLTranslator</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.markup.restructuredtext._EpydocLaTeXTranslator-class.html"
+     >_EpydocLaTeXTranslator</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.markup.restructuredtext._EpydocReader-class.html"
+     >_EpydocReader</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html"
+     >_SplitFieldsTranslator</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.markup.restructuredtext._SummaryExtractor-class.html"
+     >_SummaryExtractor</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.markup.restructuredtext._TermsExtractor-class.html"
+     >_TermsExtractor</a><br />  </div>
+    <a target="mainFrame" href="epydoc.markup.restructuredtext.dotgraph-class.html"
+     >dotgraph</a><br />  <h2 class="toc">Functions</h2>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.markup.restructuredtext-module.html#_construct_callgraph"
+     >_construct_callgraph</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.markup.restructuredtext-module.html#_construct_classtree"
+     >_construct_classtree</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.markup.restructuredtext-module.html#_construct_digraph"
+     >_construct_digraph</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.markup.restructuredtext-module.html#_construct_importgraph"
+     >_construct_importgraph</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.markup.restructuredtext-module.html#_construct_packagetree"
+     >_construct_packagetree</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.markup.restructuredtext-module.html#_dir_option"
+     >_dir_option</a><br />  </div>
+    <a target="mainFrame" href="epydoc.markup.restructuredtext-module.html#callgraph_directive"
+     >callgraph_directive</a><br />    <a target="mainFrame" href="epydoc.markup.restructuredtext-module.html#classtree_directive"
+     >classtree_directive</a><br />    <a target="mainFrame" href="epydoc.markup.restructuredtext-module.html#digraph_directive"
+     >digraph_directive</a><br />    <a target="mainFrame" href="epydoc.markup.restructuredtext-module.html#importgraph_directive"
+     >importgraph_directive</a><br />    <a target="mainFrame" href="epydoc.markup.restructuredtext-module.html#latex_head_prefix"
+     >latex_head_prefix</a><br />    <a target="mainFrame" href="epydoc.markup.restructuredtext-module.html#packagetree_directive"
+     >packagetree_directive</a><br />    <a target="mainFrame" href="epydoc.markup.restructuredtext-module.html#parse_docstring"
+     >parse_docstring</a><br />    <a target="mainFrame" href="epydoc.markup.restructuredtext-module.html#python_code_directive"
+     >python_code_directive</a><br />    <a target="mainFrame" href="epydoc.markup.restructuredtext-module.html#term_role"
+     >term_role</a><br />  <h2 class="toc">Variables</h2>
+    <a target="mainFrame" href="epydoc.markup.restructuredtext-module.html#CONSOLIDATED_DEFLIST_FIELDS"
+     >CONSOLIDATED_DEFLIST_FIELDS</a><br />    <a target="mainFrame" href="epydoc.markup.restructuredtext-module.html#CONSOLIDATED_FIELDS"
+     >CONSOLIDATED_FIELDS</a><br /><hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/toc-epydoc.test-module.html b/doc/api/toc-epydoc.test-module.html
new file mode 100644
index 0000000..7257c4a
--- /dev/null
+++ b/doc/api/toc-epydoc.test-module.html
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>test</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module test</h1>
+<hr />
+  <h2 class="toc">Functions</h2>
+    <a target="mainFrame" href="epydoc.test-module.html#check_requirements"
+     >check_requirements</a><br />    <a target="mainFrame" href="epydoc.test-module.html#main"
+     >main</a><br /><hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/toc-epydoc.test.util-module.html b/doc/api/toc-epydoc.test.util-module.html
new file mode 100644
index 0000000..65f14f5
--- /dev/null
+++ b/doc/api/toc-epydoc.test.util-module.html
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>util</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module util</h1>
+<hr />
+  <h2 class="toc">Functions</h2>
+    <a target="mainFrame" href="epydoc.test.util-module.html#buildvaluedoc"
+     >buildvaluedoc</a><br />    <a target="mainFrame" href="epydoc.test.util-module.html#cleanup_tmp_dir"
+     >cleanup_tmp_dir</a><br />    <a target="mainFrame" href="epydoc.test.util-module.html#fun_to_plain"
+     >fun_to_plain</a><br />    <a target="mainFrame" href="epydoc.test.util-module.html#print_docstring_as_html"
+     >print_docstring_as_html</a><br />    <a target="mainFrame" href="epydoc.test.util-module.html#print_warnings"
+     >print_warnings</a><br />    <a target="mainFrame" href="epydoc.test.util-module.html#remove_surrogates"
+     >remove_surrogates</a><br />    <a target="mainFrame" href="epydoc.test.util-module.html#runbuilder"
+     >runbuilder</a><br />    <a target="mainFrame" href="epydoc.test.util-module.html#runintrospecter"
+     >runintrospecter</a><br />    <a target="mainFrame" href="epydoc.test.util-module.html#runparser"
+     >runparser</a><br />    <a target="mainFrame" href="epydoc.test.util-module.html#testencoding"
+     >testencoding</a><br />    <a target="mainFrame" href="epydoc.test.util-module.html#to_plain"
+     >to_plain</a><br />    <a target="mainFrame" href="epydoc.test.util-module.html#write_pystring_to_tmp_dir"
+     >write_pystring_to_tmp_dir</a><br /><hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/toc-epydoc.util-module.html b/doc/api/toc-epydoc.util-module.html
new file mode 100644
index 0000000..e2a93ef
--- /dev/null
+++ b/doc/api/toc-epydoc.util-module.html
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>util</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module util</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="epydoc.util.RunSubprocessError-class.html"
+     >RunSubprocessError</a><br />  <h2 class="toc">Functions</h2>
+    <a target="mainFrame" href="epydoc.util-module.html#decode_with_backslashreplace"
+     >decode_with_backslashreplace</a><br />    <a target="mainFrame" href="epydoc.util-module.html#is_module_file"
+     >is_module_file</a><br />    <a target="mainFrame" href="epydoc.util-module.html#is_package_dir"
+     >is_package_dir</a><br />    <a target="mainFrame" href="epydoc.util-module.html#is_pyname"
+     >is_pyname</a><br />    <a target="mainFrame" href="epydoc.util-module.html#is_src_filename"
+     >is_src_filename</a><br />    <a target="mainFrame" href="epydoc.util-module.html#munge_script_name"
+     >munge_script_name</a><br />    <a target="mainFrame" href="epydoc.util-module.html#plaintext_to_html"
+     >plaintext_to_html</a><br />    <a target="mainFrame" href="epydoc.util-module.html#plaintext_to_latex"
+     >plaintext_to_latex</a><br />    <a target="mainFrame" href="epydoc.util-module.html#py_src_filename"
+     >py_src_filename</a><br />    <a target="mainFrame" href="epydoc.util-module.html#run_subprocess"
+     >run_subprocess</a><br />    <a target="mainFrame" href="epydoc.util-module.html#wordwrap"
+     >wordwrap</a><br />  <h2 class="toc">Variables</h2>
+    <a target="mainFrame" href="epydoc.util-module.html#PY_BIN_EXTENSIONS"
+     >PY_BIN_EXTENSIONS</a><br />    <a target="mainFrame" href="epydoc.util-module.html#PY_SRC_EXTENSIONS"
+     >PY_SRC_EXTENSIONS</a><br /><hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/toc-everything.html b/doc/api/toc-everything.html
new file mode 100644
index 0000000..4392e42
--- /dev/null
+++ b/doc/api/toc-everything.html
@@ -0,0 +1,831 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Everything</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Everything</h1>
+<hr />
+  <h2 class="toc">All Classes</h2>
+    <a target="mainFrame" href="epydoc.apidoc.APIDoc-class.html"
+     >epydoc.apidoc.APIDoc</a><br />    <a target="mainFrame" href="epydoc.apidoc.ClassDoc-class.html"
+     >epydoc.apidoc.ClassDoc</a><br />    <a target="mainFrame" href="epydoc.apidoc.ClassMethodDoc-class.html"
+     >epydoc.apidoc.ClassMethodDoc</a><br />    <a target="mainFrame" href="epydoc.apidoc.DocIndex-class.html"
+     >epydoc.apidoc.DocIndex</a><br />    <a target="mainFrame" href="epydoc.apidoc.DottedName-class.html"
+     >epydoc.apidoc.DottedName</a><br />    <a target="mainFrame" href="epydoc.apidoc.DottedName.InvalidDottedName-class.html"
+     >epydoc.apidoc.DottedName.InvalidDottedName</a><br />    <a target="mainFrame" href="epydoc.apidoc.GenericValueDoc-class.html"
+     >epydoc.apidoc.GenericValueDoc</a><br />    <a target="mainFrame" href="epydoc.apidoc.ModuleDoc-class.html"
+     >epydoc.apidoc.ModuleDoc</a><br />    <a target="mainFrame" href="epydoc.apidoc.NamespaceDoc-class.html"
+     >epydoc.apidoc.NamespaceDoc</a><br />    <a target="mainFrame" href="epydoc.apidoc.PropertyDoc-class.html"
+     >epydoc.apidoc.PropertyDoc</a><br />    <a target="mainFrame" href="epydoc.apidoc.RoutineDoc-class.html"
+     >epydoc.apidoc.RoutineDoc</a><br />    <a target="mainFrame" href="epydoc.apidoc.StaticMethodDoc-class.html"
+     >epydoc.apidoc.StaticMethodDoc</a><br />    <a target="mainFrame" href="epydoc.apidoc.ValueDoc-class.html"
+     >epydoc.apidoc.ValueDoc</a><br />    <a target="mainFrame" href="epydoc.apidoc.VariableDoc-class.html"
+     >epydoc.apidoc.VariableDoc</a><br />  <div class="private">
+    <a target="mainFrame" href="epydoc.apidoc._Sentinel-class.html"
+     >epydoc.apidoc._Sentinel</a><br />  </div>
+    <a target="mainFrame" href="epydoc.checker.DocChecker-class.html"
+     >epydoc.checker.DocChecker</a><br />    <a target="mainFrame" href="epydoc.cli.ConsoleLogger-class.html"
+     >epydoc.cli.ConsoleLogger</a><br />    <a target="mainFrame" href="epydoc.cli.HTMLLogger-class.html"
+     >epydoc.cli.HTMLLogger</a><br />    <a target="mainFrame" href="epydoc.cli.TerminalController-class.html"
+     >epydoc.cli.TerminalController</a><br />    <a target="mainFrame" href="epydoc.cli.UnifiedProgressConsoleLogger-class.html"
+     >epydoc.cli.UnifiedProgressConsoleLogger</a><br />    <a target="mainFrame" href="epydoc.docbuilder.BuildOptions-class.html"
+     >epydoc.docbuilder.BuildOptions</a><br />  <div class="private">
+    <a target="mainFrame" href="epydoc.docbuilder._ProgressEstimator-class.html"
+     >epydoc.docbuilder._ProgressEstimator</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docintrospecter._DevNull-class.html"
+     >epydoc.docintrospecter._DevNull</a><br />  </div>
+    <a target="mainFrame" href="epydoc.docparser.ParseError-class.html"
+     >epydoc.docparser.ParseError</a><br />    <a target="mainFrame" href="epydoc.docstringparser.DocstringField-class.html"
+     >epydoc.docstringparser.DocstringField</a><br />    <a target="mainFrame" href="epydoc.docwriter.dotgraph.DotGraph-class.html"
+     >epydoc.docwriter.dotgraph.DotGraph</a><br />    <a target="mainFrame" href="epydoc.docwriter.dotgraph.DotGraphEdge-class.html"
+     >epydoc.docwriter.dotgraph.DotGraphEdge</a><br />    <a target="mainFrame" href="epydoc.docwriter.dotgraph.DotGraphNode-class.html"
+     >epydoc.docwriter.dotgraph.DotGraphNode</a><br />    <a target="mainFrame" href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html"
+     >epydoc.docwriter.dotgraph.DotGraphUmlClassNode</a><br />    <a target="mainFrame" href="epydoc.docwriter.dotgraph.DotGraphUmlModuleNode-class.html"
+     >epydoc.docwriter.dotgraph.DotGraphUmlModuleNode</a><br />    <a target="mainFrame" href="epydoc.docwriter.html.HTMLWriter-class.html"
+     >epydoc.docwriter.html.HTMLWriter</a><br />  <div class="private">
+    <a target="mainFrame" href="epydoc.docwriter.html._HTMLDocstringLinker-class.html"
+     >epydoc.docwriter.html._HTMLDocstringLinker</a><br />  </div>
+    <a target="mainFrame" href="epydoc.docwriter.html_colorize.PythonSourceColorizer-class.html"
+     >epydoc.docwriter.html_colorize.PythonSourceColorizer</a><br />    <a target="mainFrame" href="epydoc.docwriter.latex.LatexWriter-class.html"
+     >epydoc.docwriter.latex.LatexWriter</a><br />  <div class="private">
+    <a target="mainFrame" href="epydoc.docwriter.latex.LatexWriter._LatexDocstringLinker-class.html"
+     >epydoc.docwriter.latex.LatexWriter._LatexDocstringLinker</a><br />  </div>
+    <a target="mainFrame" href="epydoc.docwriter.plaintext.PlaintextWriter-class.html"
+     >epydoc.docwriter.plaintext.PlaintextWriter</a><br />    <a target="mainFrame" href="epydoc.docwriter.xlink.ApiLinkReader-class.html"
+     >epydoc.docwriter.xlink.ApiLinkReader</a><br />    <a target="mainFrame" href="epydoc.docwriter.xlink.DocUrlGenerator-class.html"
+     >epydoc.docwriter.xlink.DocUrlGenerator</a><br />    <a target="mainFrame" href="epydoc.docwriter.xlink.UrlGenerator-class.html"
+     >epydoc.docwriter.xlink.UrlGenerator</a><br />    <a target="mainFrame" href="epydoc.docwriter.xlink.UrlGenerator.IndexAmbiguous-class.html"
+     >epydoc.docwriter.xlink.UrlGenerator.IndexAmbiguous</a><br />    <a target="mainFrame" href="epydoc.docwriter.xlink.VoidUrlGenerator-class.html"
+     >epydoc.docwriter.xlink.VoidUrlGenerator</a><br />    <a target="mainFrame" href="epydoc.gui.EpydocGUI-class.html"
+     >epydoc.gui.EpydocGUI</a><br />    <a target="mainFrame" href="epydoc.gui.GUILogger-class.html"
+     >epydoc.gui.GUILogger</a><br />    <a target="mainFrame" href="epydoc.log.Logger-class.html"
+     >epydoc.log.Logger</a><br />    <a target="mainFrame" href="epydoc.log.SimpleLogger-class.html"
+     >epydoc.log.SimpleLogger</a><br />    <a target="mainFrame" href="epydoc.markup.ConcatenatedDocstring-class.html"
+     >epydoc.markup.ConcatenatedDocstring</a><br />    <a target="mainFrame" href="epydoc.markup.DocstringLinker-class.html"
+     >epydoc.markup.DocstringLinker</a><br />    <a target="mainFrame" href="epydoc.markup.Field-class.html"
+     >epydoc.markup.Field</a><br />    <a target="mainFrame" href="epydoc.markup.ParseError-class.html"
+     >epydoc.markup.ParseError</a><br />    <a target="mainFrame" href="epydoc.markup.ParsedDocstring-class.html"
+     >epydoc.markup.ParsedDocstring</a><br />    <a target="mainFrame" href="epydoc.markup.doctest.DoctestColorizer-class.html"
+     >epydoc.markup.doctest.DoctestColorizer</a><br />    <a target="mainFrame" href="epydoc.markup.doctest.HTMLDoctestColorizer-class.html"
+     >epydoc.markup.doctest.HTMLDoctestColorizer</a><br />    <a target="mainFrame" href="epydoc.markup.doctest.LaTeXDoctestColorizer-class.html"
+     >epydoc.markup.doctest.LaTeXDoctestColorizer</a><br />    <a target="mainFrame" href="epydoc.markup.doctest.XMLDoctestColorizer-class.html"
+     >epydoc.markup.doctest.XMLDoctestColorizer</a><br />    <a target="mainFrame" href="epydoc.markup.epytext.ColorizingError-class.html"
+     >epydoc.markup.epytext.ColorizingError</a><br />    <a target="mainFrame" href="epydoc.markup.epytext.Element-class.html"
+     >epydoc.markup.epytext.Element</a><br />    <a target="mainFrame" href="epydoc.markup.epytext.ParsedEpytextDocstring-class.html"
+     >epydoc.markup.epytext.ParsedEpytextDocstring</a><br />    <a target="mainFrame" href="epydoc.markup.epytext.StructuringError-class.html"
+     >epydoc.markup.epytext.StructuringError</a><br />    <a target="mainFrame" href="epydoc.markup.epytext.Token-class.html"
+     >epydoc.markup.epytext.Token</a><br />    <a target="mainFrame" href="epydoc.markup.epytext.TokenizationError-class.html"
+     >epydoc.markup.epytext.TokenizationError</a><br />    <a target="mainFrame" href="epydoc.markup.javadoc.ParsedJavadocDocstring-class.html"
+     >epydoc.markup.javadoc.ParsedJavadocDocstring</a><br />    <a target="mainFrame" href="epydoc.markup.plaintext.ParsedPlaintextDocstring-class.html"
+     >epydoc.markup.plaintext.ParsedPlaintextDocstring</a><br />    <a target="mainFrame" href="epydoc.markup.pyval_repr.ColorizedPyvalRepr-class.html"
+     >epydoc.markup.pyval_repr.ColorizedPyvalRepr</a><br />    <a target="mainFrame" href="epydoc.markup.pyval_repr.PyvalColorizer-class.html"
+     >epydoc.markup.pyval_repr.PyvalColorizer</a><br />  <div class="private">
+    <a target="mainFrame" href="epydoc.markup.pyval_repr._ColorizerState-class.html"
+     >epydoc.markup.pyval_repr._ColorizerState</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.markup.pyval_repr._Linebreak-class.html"
+     >epydoc.markup.pyval_repr._Linebreak</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.markup.pyval_repr._Maxlines-class.html"
+     >epydoc.markup.pyval_repr._Maxlines</a><br />  </div>
+    <a target="mainFrame" href="epydoc.markup.restructuredtext.OptimizedReporter-class.html"
+     >epydoc.markup.restructuredtext.OptimizedReporter</a><br />    <a target="mainFrame" href="epydoc.markup.restructuredtext.ParsedRstDocstring-class.html"
+     >epydoc.markup.restructuredtext.ParsedRstDocstring</a><br />  <div class="private">
+    <a target="mainFrame" href="epydoc.markup.restructuredtext._DocumentPseudoWriter-class.html"
+     >epydoc.markup.restructuredtext._DocumentPseudoWriter</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.markup.restructuredtext._EpydocHTMLTranslator-class.html"
+     >epydoc.markup.restructuredtext._EpydocHTMLTranslator</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.markup.restructuredtext._EpydocLaTeXTranslator-class.html"
+     >epydoc.markup.restructuredtext._EpydocLaTeXTranslator</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.markup.restructuredtext._EpydocReader-class.html"
+     >epydoc.markup.restructuredtext._EpydocReader</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.markup.restructuredtext._SplitFieldsTranslator-class.html"
+     >epydoc.markup.restructuredtext._SplitFieldsTranslator</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.markup.restructuredtext._SummaryExtractor-class.html"
+     >epydoc.markup.restructuredtext._SummaryExtractor</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.markup.restructuredtext._TermsExtractor-class.html"
+     >epydoc.markup.restructuredtext._TermsExtractor</a><br />  </div>
+    <a target="mainFrame" href="epydoc.markup.restructuredtext.dotgraph-class.html"
+     >epydoc.markup.restructuredtext.dotgraph</a><br />    <a target="mainFrame" href="epydoc.util.RunSubprocessError-class.html"
+     >epydoc.util.RunSubprocessError</a><br />  <h2 class="toc">All Functions</h2>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.apidoc-module.html#_flatten"
+     >epydoc.apidoc._flatten</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.apidoc-module.html#_pp_apidoc"
+     >epydoc.apidoc._pp_apidoc</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.apidoc-module.html#_pp_dict"
+     >epydoc.apidoc._pp_dict</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.apidoc-module.html#_pp_list"
+     >epydoc.apidoc._pp_list</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.apidoc-module.html#_pp_val"
+     >epydoc.apidoc._pp_val</a><br />  </div>
+    <a target="mainFrame" href="epydoc.apidoc-module.html#pp_apidoc"
+     >epydoc.apidoc.pp_apidoc</a><br />    <a target="mainFrame" href="epydoc.apidoc-module.html#reachable_valdocs"
+     >epydoc.apidoc.reachable_valdocs</a><br />  <div class="private">
+    <a target="mainFrame" href="epydoc.cli-module.html#_profile"
+     >epydoc.cli._profile</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.cli-module.html#_str_to_bool"
+     >epydoc.cli._str_to_bool</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.cli-module.html#_str_to_int"
+     >epydoc.cli._str_to_int</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.cli-module.html#_str_to_list"
+     >epydoc.cli._str_to_list</a><br />  </div>
+    <a target="mainFrame" href="epydoc.cli-module.html#check_docs"
+     >epydoc.cli.check_docs</a><br />    <a target="mainFrame" href="epydoc.cli-module.html#cli"
+     >epydoc.cli.cli</a><br />    <a target="mainFrame" href="epydoc.cli-module.html#main"
+     >epydoc.cli.main</a><br />    <a target="mainFrame" href="epydoc.cli-module.html#parse_arguments"
+     >epydoc.cli.parse_arguments</a><br />    <a target="mainFrame" href="epydoc.cli-module.html#parse_configfiles"
+     >epydoc.cli.parse_configfiles</a><br />    <a target="mainFrame" href="epydoc.cli-module.html#pickle_persistent_id"
+     >epydoc.cli.pickle_persistent_id</a><br />    <a target="mainFrame" href="epydoc.cli-module.html#pickle_persistent_load"
+     >epydoc.cli.pickle_persistent_load</a><br />    <a target="mainFrame" href="epydoc.cli-module.html#write_html"
+     >epydoc.cli.write_html</a><br />    <a target="mainFrame" href="epydoc.cli-module.html#write_latex"
+     >epydoc.cli.write_latex</a><br />    <a target="mainFrame" href="epydoc.cli-module.html#write_pickle"
+     >epydoc.cli.write_pickle</a><br />    <a target="mainFrame" href="epydoc.cli-module.html#write_text"
+     >epydoc.cli.write_text</a><br />    <a target="mainFrame" href="epydoc.compat-module.html#reversed"
+     >epydoc.compat.reversed</a><br />    <a target="mainFrame" href="epydoc.compat-module.html#sorted"
+     >epydoc.compat.sorted</a><br />  <div class="private">
+    <a target="mainFrame" href="epydoc.docbuilder-module.html#_fix_self_shadowing_var"
+     >epydoc.docbuilder._fix_self_shadowing_var</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docbuilder-module.html#_get_docs_from_items"
+     >epydoc.docbuilder._get_docs_from_items</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docbuilder-module.html#_get_docs_from_module_file"
+     >epydoc.docbuilder._get_docs_from_module_file</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docbuilder-module.html#_get_docs_from_pyname"
+     >epydoc.docbuilder._get_docs_from_pyname</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docbuilder-module.html#_get_docs_from_pyobject"
+     >epydoc.docbuilder._get_docs_from_pyobject</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docbuilder-module.html#_get_docs_from_pyscript"
+     >epydoc.docbuilder._get_docs_from_pyscript</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docbuilder-module.html#_get_docs_from_submodules"
+     >epydoc.docbuilder._get_docs_from_submodules</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docbuilder-module.html#_inherit_info"
+     >epydoc.docbuilder._inherit_info</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docbuilder-module.html#_merge_posargs_and_defaults"
+     >epydoc.docbuilder._merge_posargs_and_defaults</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docbuilder-module.html#_report_errors"
+     >epydoc.docbuilder._report_errors</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docbuilder-module.html#_report_valdoc_progress"
+     >epydoc.docbuilder._report_valdoc_progress</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docbuilder-module.html#_unreachable_name_for"
+     >epydoc.docbuilder._unreachable_name_for</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docbuilder-module.html#_var_shadows_self"
+     >epydoc.docbuilder._var_shadows_self</a><br />  </div>
+    <a target="mainFrame" href="epydoc.docbuilder-module.html#assign_canonical_names"
+     >epydoc.docbuilder.assign_canonical_names</a><br />    <a target="mainFrame" href="epydoc.docbuilder-module.html#build_doc"
+     >epydoc.docbuilder.build_doc</a><br />    <a target="mainFrame" href="epydoc.docbuilder-module.html#build_doc_index"
+     >epydoc.docbuilder.build_doc_index</a><br />    <a target="mainFrame" href="epydoc.docbuilder-module.html#find_overrides"
+     >epydoc.docbuilder.find_overrides</a><br />    <a target="mainFrame" href="epydoc.docbuilder-module.html#inherit_docs"
+     >epydoc.docbuilder.inherit_docs</a><br />    <a target="mainFrame" href="epydoc.docbuilder-module.html#link_imports"
+     >epydoc.docbuilder.link_imports</a><br />    <a target="mainFrame" href="epydoc.docbuilder-module.html#merge_attribute"
+     >epydoc.docbuilder.merge_attribute</a><br />    <a target="mainFrame" href="epydoc.docbuilder-module.html#merge_bases"
+     >epydoc.docbuilder.merge_bases</a><br />    <a target="mainFrame" href="epydoc.docbuilder-module.html#merge_docs"
+     >epydoc.docbuilder.merge_docs</a><br />    <a target="mainFrame" href="epydoc.docbuilder-module.html#merge_docs_extracted_by"
+     >epydoc.docbuilder.merge_docs_extracted_by</a><br />    <a target="mainFrame" href="epydoc.docbuilder-module.html#merge_docstring"
+     >epydoc.docbuilder.merge_docstring</a><br />    <a target="mainFrame" href="epydoc.docbuilder-module.html#merge_fdel"
+     >epydoc.docbuilder.merge_fdel</a><br />    <a target="mainFrame" href="epydoc.docbuilder-module.html#merge_fget"
+     >epydoc.docbuilder.merge_fget</a><br />    <a target="mainFrame" href="epydoc.docbuilder-module.html#merge_fset"
+     >epydoc.docbuilder.merge_fset</a><br />    <a target="mainFrame" href="epydoc.docbuilder-module.html#merge_overrides"
+     >epydoc.docbuilder.merge_overrides</a><br />    <a target="mainFrame" href="epydoc.docbuilder-module.html#merge_posarg_defaults"
+     >epydoc.docbuilder.merge_posarg_defaults</a><br />    <a target="mainFrame" href="epydoc.docbuilder-module.html#merge_proxy_for"
+     >epydoc.docbuilder.merge_proxy_for</a><br />    <a target="mainFrame" href="epydoc.docbuilder-module.html#merge_submodules"
+     >epydoc.docbuilder.merge_submodules</a><br />    <a target="mainFrame" href="epydoc.docbuilder-module.html#merge_value"
+     >epydoc.docbuilder.merge_value</a><br />    <a target="mainFrame" href="epydoc.docbuilder-module.html#merge_variables"
+     >epydoc.docbuilder.merge_variables</a><br />    <a target="mainFrame" href="epydoc.docbuilder-module.html#register_attribute_mergefunc"
+     >epydoc.docbuilder.register_attribute_mergefunc</a><br />  <div class="private">
+    <a target="mainFrame" href="epydoc.docintrospecter-module.html#_find_function_module"
+     >epydoc.docintrospecter._find_function_module</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docintrospecter-module.html#_get_introspecter"
+     >epydoc.docintrospecter._get_introspecter</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docintrospecter-module.html#_get_valuedoc"
+     >epydoc.docintrospecter._get_valuedoc</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docintrospecter-module.html#_import"
+     >epydoc.docintrospecter._import</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docintrospecter-module.html#_is_zope_method"
+     >epydoc.docintrospecter._is_zope_method</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docintrospecter-module.html#_is_zope_type"
+     >epydoc.docintrospecter._is_zope_type</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docintrospecter-module.html#_lookup"
+     >epydoc.docintrospecter._lookup</a><br />  </div>
+    <a target="mainFrame" href="epydoc.docintrospecter-module.html#clear_cache"
+     >epydoc.docintrospecter.clear_cache</a><br />    <a target="mainFrame" href="epydoc.docintrospecter-module.html#get_canonical_name"
+     >epydoc.docintrospecter.get_canonical_name</a><br />    <a target="mainFrame" href="epydoc.docintrospecter-module.html#get_containing_module"
+     >epydoc.docintrospecter.get_containing_module</a><br />    <a target="mainFrame" href="epydoc.docintrospecter-module.html#get_docstring"
+     >epydoc.docintrospecter.get_docstring</a><br />    <a target="mainFrame" href="epydoc.docintrospecter-module.html#get_value_from_filename"
+     >epydoc.docintrospecter.get_value_from_filename</a><br />    <a target="mainFrame" href="epydoc.docintrospecter-module.html#get_value_from_name"
+     >epydoc.docintrospecter.get_value_from_name</a><br />    <a target="mainFrame" href="epydoc.docintrospecter-module.html#get_value_from_scriptname"
+     >epydoc.docintrospecter.get_value_from_scriptname</a><br />    <a target="mainFrame" href="epydoc.docintrospecter-module.html#introspect_class"
+     >epydoc.docintrospecter.introspect_class</a><br />    <a target="mainFrame" href="epydoc.docintrospecter-module.html#introspect_docs"
+     >epydoc.docintrospecter.introspect_docs</a><br />    <a target="mainFrame" href="epydoc.docintrospecter-module.html#introspect_docstring_lineno"
+     >epydoc.docintrospecter.introspect_docstring_lineno</a><br />    <a target="mainFrame" href="epydoc.docintrospecter-module.html#introspect_module"
+     >epydoc.docintrospecter.introspect_module</a><br />    <a target="mainFrame" href="epydoc.docintrospecter-module.html#introspect_other"
+     >epydoc.docintrospecter.introspect_other</a><br />    <a target="mainFrame" href="epydoc.docintrospecter-module.html#introspect_property"
+     >epydoc.docintrospecter.introspect_property</a><br />    <a target="mainFrame" href="epydoc.docintrospecter-module.html#introspect_routine"
+     >epydoc.docintrospecter.introspect_routine</a><br />    <a target="mainFrame" href="epydoc.docintrospecter-module.html#is_classmethod"
+     >epydoc.docintrospecter.is_classmethod</a><br />    <a target="mainFrame" href="epydoc.docintrospecter-module.html#is_future_feature"
+     >epydoc.docintrospecter.is_future_feature</a><br />    <a target="mainFrame" href="epydoc.docintrospecter-module.html#is_getset"
+     >epydoc.docintrospecter.is_getset</a><br />    <a target="mainFrame" href="epydoc.docintrospecter-module.html#is_member"
+     >epydoc.docintrospecter.is_member</a><br />    <a target="mainFrame" href="epydoc.docintrospecter-module.html#is_property"
+     >epydoc.docintrospecter.is_property</a><br />    <a target="mainFrame" href="epydoc.docintrospecter-module.html#is_staticmethod"
+     >epydoc.docintrospecter.is_staticmethod</a><br />    <a target="mainFrame" href="epydoc.docintrospecter-module.html#isclass"
+     >epydoc.docintrospecter.isclass</a><br />    <a target="mainFrame" href="epydoc.docintrospecter-module.html#register_class_type"
+     >epydoc.docintrospecter.register_class_type</a><br />    <a target="mainFrame" href="epydoc.docintrospecter-module.html#register_introspecter"
+     >epydoc.docintrospecter.register_introspecter</a><br />    <a target="mainFrame" href="epydoc.docintrospecter-module.html#value_repr"
+     >epydoc.docintrospecter.value_repr</a><br />    <a target="mainFrame" href="epydoc.docintrospecter-module.html#verify_name"
+     >epydoc.docintrospecter.verify_name</a><br />  <div class="private">
+    <a target="mainFrame" href="epydoc.docparser-module.html#_add_import_var"
+     >epydoc.docparser._add_import_var</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docparser-module.html#_find"
+     >epydoc.docparser._find</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docparser-module.html#_find_in_namespace"
+     >epydoc.docparser._find_in_namespace</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docparser-module.html#_get_filename"
+     >epydoc.docparser._get_filename</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docparser-module.html#_get_module_name"
+     >epydoc.docparser._get_module_name</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docparser-module.html#_global_name"
+     >epydoc.docparser._global_name</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docparser-module.html#_import_var"
+     >epydoc.docparser._import_var</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docparser-module.html#_import_var_as"
+     >epydoc.docparser._import_var_as</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docparser-module.html#_is_submodule_import_var"
+     >epydoc.docparser._is_submodule_import_var</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docparser-module.html#_join_toktree"
+     >epydoc.docparser._join_toktree</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docparser-module.html#_module_var_toktree"
+     >epydoc.docparser._module_var_toktree</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docparser-module.html#_parse_package"
+     >epydoc.docparser._parse_package</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docparser-module.html#_pp_toktree"
+     >epydoc.docparser._pp_toktree</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docparser-module.html#_pp_toktree_add_piece"
+     >epydoc.docparser._pp_toktree_add_piece</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docparser-module.html#_process_fromstar_import"
+     >epydoc.docparser._process_fromstar_import</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docparser-module.html#_proxy_base"
+     >epydoc.docparser._proxy_base</a><br />  </div>
+    <a target="mainFrame" href="epydoc.docparser-module.html#add_docstring_from_comments"
+     >epydoc.docparser.add_docstring_from_comments</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#add_to_group"
+     >epydoc.docparser.add_to_group</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#apply_decorator"
+     >epydoc.docparser.apply_decorator</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#del_variable"
+     >epydoc.docparser.del_variable</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#dotted_names_in"
+     >epydoc.docparser.dotted_names_in</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#find_base"
+     >epydoc.docparser.find_base</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#flatten"
+     >epydoc.docparser.flatten</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#get_lhs_parent"
+     >epydoc.docparser.get_lhs_parent</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#get_module_encoding"
+     >epydoc.docparser.get_module_encoding</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#handle_special_module_vars"
+     >epydoc.docparser.handle_special_module_vars</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#init_arglist"
+     >epydoc.docparser.init_arglist</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#lhs_is_instvar"
+     >epydoc.docparser.lhs_is_instvar</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#lookup_name"
+     >epydoc.docparser.lookup_name</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#lookup_value"
+     >epydoc.docparser.lookup_value</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#lookup_variable"
+     >epydoc.docparser.lookup_variable</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#parse_classdef_bases"
+     >epydoc.docparser.parse_classdef_bases</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#parse_docs"
+     >epydoc.docparser.parse_docs</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#parse_dotted_name"
+     >epydoc.docparser.parse_dotted_name</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#parse_dotted_name_list"
+     >epydoc.docparser.parse_dotted_name_list</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#parse_funcdef_arg"
+     >epydoc.docparser.parse_funcdef_arg</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#parse_name"
+     >epydoc.docparser.parse_name</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#parse_string"
+     >epydoc.docparser.parse_string</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#parse_string_list"
+     >epydoc.docparser.parse_string_list</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#pp_toktree"
+     >epydoc.docparser.pp_toktree</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#process_assignment"
+     >epydoc.docparser.process_assignment</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#process_classdef"
+     >epydoc.docparser.process_classdef</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#process_control_flow_line"
+     >epydoc.docparser.process_control_flow_line</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#process_del"
+     >epydoc.docparser.process_del</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#process_docstring"
+     >epydoc.docparser.process_docstring</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#process_file"
+     >epydoc.docparser.process_file</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#process_from_import"
+     >epydoc.docparser.process_from_import</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#process_funcdef"
+     >epydoc.docparser.process_funcdef</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#process_import"
+     >epydoc.docparser.process_import</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#process_line"
+     >epydoc.docparser.process_line</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#process_multi_stmt"
+     >epydoc.docparser.process_multi_stmt</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#process_one_line_block"
+     >epydoc.docparser.process_one_line_block</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#rhs_to_valuedoc"
+     >epydoc.docparser.rhs_to_valuedoc</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#script_guard"
+     >epydoc.docparser.script_guard</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#set_variable"
+     >epydoc.docparser.set_variable</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#shallow_parse"
+     >epydoc.docparser.shallow_parse</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#split_on"
+     >epydoc.docparser.split_on</a><br />  <div class="private">
+    <a target="mainFrame" href="epydoc.docstringparser-module.html#_check"
+     >epydoc.docstringparser._check</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docstringparser-module.html#_descr_to_docstring_field"
+     >epydoc.docstringparser._descr_to_docstring_field</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docstringparser-module.html#_descr_to_identifiers"
+     >epydoc.docstringparser._descr_to_identifiers</a><br />  </div>
+    <a target="mainFrame" href="epydoc.docstringparser-module.html#add_metadata_from_var"
+     >epydoc.docstringparser.add_metadata_from_var</a><br />    <a target="mainFrame" href="epydoc.docstringparser-module.html#check_type_fields"
+     >epydoc.docstringparser.check_type_fields</a><br />    <a target="mainFrame" href="epydoc.docstringparser-module.html#get_docformat"
+     >epydoc.docstringparser.get_docformat</a><br />    <a target="mainFrame" href="epydoc.docstringparser-module.html#initialize_api_doc"
+     >epydoc.docstringparser.initialize_api_doc</a><br />    <a target="mainFrame" href="epydoc.docstringparser-module.html#parse_docstring"
+     >epydoc.docstringparser.parse_docstring</a><br />    <a target="mainFrame" href="epydoc.docstringparser-module.html#parse_function_signature"
+     >epydoc.docstringparser.parse_function_signature</a><br />    <a target="mainFrame" href="epydoc.docstringparser-module.html#process_arg_field"
+     >epydoc.docstringparser.process_arg_field</a><br />    <a target="mainFrame" href="epydoc.docstringparser-module.html#process_cvar_field"
+     >epydoc.docstringparser.process_cvar_field</a><br />    <a target="mainFrame" href="epydoc.docstringparser-module.html#process_deffield_field"
+     >epydoc.docstringparser.process_deffield_field</a><br />    <a target="mainFrame" href="epydoc.docstringparser-module.html#process_field"
+     >epydoc.docstringparser.process_field</a><br />    <a target="mainFrame" href="epydoc.docstringparser-module.html#process_group_field"
+     >epydoc.docstringparser.process_group_field</a><br />    <a target="mainFrame" href="epydoc.docstringparser-module.html#process_include_field"
+     >epydoc.docstringparser.process_include_field</a><br />    <a target="mainFrame" href="epydoc.docstringparser-module.html#process_ivar_field"
+     >epydoc.docstringparser.process_ivar_field</a><br />    <a target="mainFrame" href="epydoc.docstringparser-module.html#process_kwarg_field"
+     >epydoc.docstringparser.process_kwarg_field</a><br />    <a target="mainFrame" href="epydoc.docstringparser-module.html#process_raise_field"
+     >epydoc.docstringparser.process_raise_field</a><br />    <a target="mainFrame" href="epydoc.docstringparser-module.html#process_return_field"
+     >epydoc.docstringparser.process_return_field</a><br />    <a target="mainFrame" href="epydoc.docstringparser-module.html#process_rtype_field"
+     >epydoc.docstringparser.process_rtype_field</a><br />    <a target="mainFrame" href="epydoc.docstringparser-module.html#process_sort_field"
+     >epydoc.docstringparser.process_sort_field</a><br />    <a target="mainFrame" href="epydoc.docstringparser-module.html#process_summary_field"
+     >epydoc.docstringparser.process_summary_field</a><br />    <a target="mainFrame" href="epydoc.docstringparser-module.html#process_type_field"
+     >epydoc.docstringparser.process_type_field</a><br />    <a target="mainFrame" href="epydoc.docstringparser-module.html#process_undocumented_field"
+     >epydoc.docstringparser.process_undocumented_field</a><br />    <a target="mainFrame" href="epydoc.docstringparser-module.html#process_var_field"
+     >epydoc.docstringparser.process_var_field</a><br />    <a target="mainFrame" href="epydoc.docstringparser-module.html#register_field_handler"
+     >epydoc.docstringparser.register_field_handler</a><br />    <a target="mainFrame" href="epydoc.docstringparser-module.html#report_errors"
+     >epydoc.docstringparser.report_errors</a><br />    <a target="mainFrame" href="epydoc.docstringparser-module.html#set_var_descr"
+     >epydoc.docstringparser.set_var_descr</a><br />    <a target="mainFrame" href="epydoc.docstringparser-module.html#set_var_type"
+     >epydoc.docstringparser.set_var_type</a><br />    <a target="mainFrame" href="epydoc.docstringparser-module.html#split_init_fields"
+     >epydoc.docstringparser.split_init_fields</a><br />    <a target="mainFrame" href="epydoc.docstringparser-module.html#unindent_docstring"
+     >epydoc.docstringparser.unindent_docstring</a><br />    <a target="mainFrame" href="epydoc.docstringparser-module.html#user_docfields"
+     >epydoc.docstringparser.user_docfields</a><br />    <a target="mainFrame" href="epydoc.docwriter.dotgraph-module.html#add_valdoc_nodes"
+     >epydoc.docwriter.dotgraph.add_valdoc_nodes</a><br />    <a target="mainFrame" href="epydoc.docwriter.dotgraph-module.html#call_graph"
+     >epydoc.docwriter.dotgraph.call_graph</a><br />    <a target="mainFrame" href="epydoc.docwriter.dotgraph-module.html#class_tree_graph"
+     >epydoc.docwriter.dotgraph.class_tree_graph</a><br />    <a target="mainFrame" href="epydoc.docwriter.dotgraph-module.html#get_dot_version"
+     >epydoc.docwriter.dotgraph.get_dot_version</a><br />    <a target="mainFrame" href="epydoc.docwriter.dotgraph-module.html#import_graph"
+     >epydoc.docwriter.dotgraph.import_graph</a><br />    <a target="mainFrame" href="epydoc.docwriter.dotgraph-module.html#name_list"
+     >epydoc.docwriter.dotgraph.name_list</a><br />    <a target="mainFrame" href="epydoc.docwriter.dotgraph-module.html#package_tree_graph"
+     >epydoc.docwriter.dotgraph.package_tree_graph</a><br />    <a target="mainFrame" href="epydoc.docwriter.dotgraph-module.html#specialize_valdoc_node"
+     >epydoc.docwriter.dotgraph.specialize_valdoc_node</a><br />    <a target="mainFrame" href="epydoc.docwriter.dotgraph-module.html#uml_class_tree_graph"
+     >epydoc.docwriter.dotgraph.uml_class_tree_graph</a><br />    <a target="mainFrame" href="epydoc.docwriter.dotgraph-module.html#uml_package_tree_graph"
+     >epydoc.docwriter.dotgraph.uml_package_tree_graph</a><br />    <a target="mainFrame" href="epydoc.docwriter.html-module.html#compile_template"
+     >epydoc.docwriter.html.compile_template</a><br />    <a target="mainFrame" href="epydoc.docwriter.html-module.html#strip_indent"
+     >epydoc.docwriter.html.strip_indent</a><br />  <div class="private">
+    <a target="mainFrame" href="epydoc.docwriter.html_css-module.html#_darken_darks"
+     >epydoc.docwriter.html_css._darken_darks</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docwriter.html_css-module.html#_rv"
+     >epydoc.docwriter.html_css._rv</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docwriter.html_css-module.html#_set_colors"
+     >epydoc.docwriter.html_css._set_colors</a><br />  </div>
+    <a target="mainFrame" href="epydoc.docwriter.xlink-module.html#create_api_role"
+     >epydoc.docwriter.xlink.create_api_role</a><br />    <a target="mainFrame" href="epydoc.docwriter.xlink-module.html#register_api"
+     >epydoc.docwriter.xlink.register_api</a><br />    <a target="mainFrame" href="epydoc.docwriter.xlink-module.html#set_api_file"
+     >epydoc.docwriter.xlink.set_api_file</a><br />    <a target="mainFrame" href="epydoc.docwriter.xlink-module.html#set_api_root"
+     >epydoc.docwriter.xlink.set_api_root</a><br />    <a target="mainFrame" href="epydoc.docwriter.xlink-module.html#split_name"
+     >epydoc.docwriter.xlink.split_name</a><br />  <div class="private">
+    <a target="mainFrame" href="epydoc.gui-module.html#_error"
+     >epydoc.gui._error</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.gui-module.html#_usage"
+     >epydoc.gui._usage</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.gui-module.html#_version"
+     >epydoc.gui._version</a><br />  </div>
+    <a target="mainFrame" href="epydoc.gui-module.html#document"
+     >epydoc.gui.document</a><br />    <a target="mainFrame" href="epydoc.gui-module.html#gui"
+     >epydoc.gui.gui</a><br />    <a target="mainFrame" href="epydoc.log-module.html#close"
+     >epydoc.log.close</a><br />    <a target="mainFrame" href="epydoc.log-module.html#debug"
+     >epydoc.log.debug</a><br />    <a target="mainFrame" href="epydoc.log-module.html#docstring_warning"
+     >epydoc.log.docstring_warning</a><br />    <a target="mainFrame" href="epydoc.log-module.html#end_block"
+     >epydoc.log.end_block</a><br />    <a target="mainFrame" href="epydoc.log-module.html#end_progress"
+     >epydoc.log.end_progress</a><br />    <a target="mainFrame" href="epydoc.log-module.html#error"
+     >epydoc.log.error</a><br />    <a target="mainFrame" href="epydoc.log-module.html#fatal"
+     >epydoc.log.fatal</a><br />    <a target="mainFrame" href="epydoc.log-module.html#info"
+     >epydoc.log.info</a><br />    <a target="mainFrame" href="epydoc.log-module.html#progress"
+     >epydoc.log.progress</a><br />    <a target="mainFrame" href="epydoc.log-module.html#register_logger"
+     >epydoc.log.register_logger</a><br />    <a target="mainFrame" href="epydoc.log-module.html#remove_logger"
+     >epydoc.log.remove_logger</a><br />    <a target="mainFrame" href="epydoc.log-module.html#start_block"
+     >epydoc.log.start_block</a><br />    <a target="mainFrame" href="epydoc.log-module.html#start_progress"
+     >epydoc.log.start_progress</a><br />    <a target="mainFrame" href="epydoc.log-module.html#warning"
+     >epydoc.log.warning</a><br />  <div class="private">
+    <a target="mainFrame" href="epydoc.markup-module.html#_parse_warn"
+     >epydoc.markup._parse_warn</a><br />  </div>
+    <a target="mainFrame" href="epydoc.markup.doctest-module.html#doctest_to_html"
+     >epydoc.markup.doctest.doctest_to_html</a><br />    <a target="mainFrame" href="epydoc.markup.doctest-module.html#doctest_to_latex"
+     >epydoc.markup.doctest.doctest_to_latex</a><br />  <div class="private">
+    <a target="mainFrame" href="epydoc.markup.epytext-module.html#_add_list"
+     >epydoc.markup.epytext._add_list</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.markup.epytext-module.html#_add_para"
+     >epydoc.markup.epytext._add_para</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.markup.epytext-module.html#_add_section"
+     >epydoc.markup.epytext._add_section</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.markup.epytext-module.html#_colorize"
+     >epydoc.markup.epytext._colorize</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.markup.epytext-module.html#_colorize_graph"
+     >epydoc.markup.epytext._colorize_graph</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.markup.epytext-module.html#_colorize_link"
+     >epydoc.markup.epytext._colorize_link</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.markup.epytext-module.html#_pop_completed_blocks"
+     >epydoc.markup.epytext._pop_completed_blocks</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.markup.epytext-module.html#_raise_graphs"
+     >epydoc.markup.epytext._raise_graphs</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.markup.epytext-module.html#_tokenize"
+     >epydoc.markup.epytext._tokenize</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.markup.epytext-module.html#_tokenize_doctest"
+     >epydoc.markup.epytext._tokenize_doctest</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.markup.epytext-module.html#_tokenize_listart"
+     >epydoc.markup.epytext._tokenize_listart</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.markup.epytext-module.html#_tokenize_literal"
+     >epydoc.markup.epytext._tokenize_literal</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.markup.epytext-module.html#_tokenize_para"
+     >epydoc.markup.epytext._tokenize_para</a><br />  </div>
+    <a target="mainFrame" href="epydoc.markup.epytext-module.html#parse"
+     >epydoc.markup.epytext.parse</a><br />    <a target="mainFrame" href="epydoc.markup.epytext-module.html#parse_as_literal"
+     >epydoc.markup.epytext.parse_as_literal</a><br />    <a target="mainFrame" href="epydoc.markup.epytext-module.html#parse_as_para"
+     >epydoc.markup.epytext.parse_as_para</a><br />    <a target="mainFrame" href="epydoc.markup.epytext-module.html#parse_docstring"
+     >epydoc.markup.epytext.parse_docstring</a><br />    <a target="mainFrame" href="epydoc.markup.epytext-module.html#pparse"
+     >epydoc.markup.epytext.pparse</a><br />    <a target="mainFrame" href="epydoc.markup.epytext-module.html#to_debug"
+     >epydoc.markup.epytext.to_debug</a><br />    <a target="mainFrame" href="epydoc.markup.epytext-module.html#to_epytext"
+     >epydoc.markup.epytext.to_epytext</a><br />    <a target="mainFrame" href="epydoc.markup.epytext-module.html#to_plaintext"
+     >epydoc.markup.epytext.to_plaintext</a><br />    <a target="mainFrame" href="epydoc.markup.javadoc-module.html#parse_docstring"
+     >epydoc.markup.javadoc.parse_docstring</a><br />    <a target="mainFrame" href="epydoc.markup-module.html#parse"
+     >epydoc.markup.parse</a><br />    <a target="mainFrame" href="epydoc.markup-module.html#parse_type_of"
+     >epydoc.markup.parse_type_of</a><br />    <a target="mainFrame" href="epydoc.markup.plaintext-module.html#parse_docstring"
+     >epydoc.markup.plaintext.parse_docstring</a><br />    <a target="mainFrame" href="epydoc.markup.pyval_repr-module.html#colorize_pyval"
+     >epydoc.markup.pyval_repr.colorize_pyval</a><br />    <a target="mainFrame" href="epydoc.markup.pyval_repr-module.html#is_re_pattern"
+     >epydoc.markup.pyval_repr.is_re_pattern</a><br />    <a target="mainFrame" href="epydoc.markup-module.html#register_markup_language"
+     >epydoc.markup.register_markup_language</a><br />  <div class="private">
+    <a target="mainFrame" href="epydoc.markup.restructuredtext-module.html#_construct_callgraph"
+     >epydoc.markup.restructuredtext._construct_callgraph</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.markup.restructuredtext-module.html#_construct_classtree"
+     >epydoc.markup.restructuredtext._construct_classtree</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.markup.restructuredtext-module.html#_construct_digraph"
+     >epydoc.markup.restructuredtext._construct_digraph</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.markup.restructuredtext-module.html#_construct_importgraph"
+     >epydoc.markup.restructuredtext._construct_importgraph</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.markup.restructuredtext-module.html#_construct_packagetree"
+     >epydoc.markup.restructuredtext._construct_packagetree</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.markup.restructuredtext-module.html#_dir_option"
+     >epydoc.markup.restructuredtext._dir_option</a><br />  </div>
+    <a target="mainFrame" href="epydoc.markup.restructuredtext-module.html#callgraph_directive"
+     >epydoc.markup.restructuredtext.callgraph_directive</a><br />    <a target="mainFrame" href="epydoc.markup.restructuredtext-module.html#classtree_directive"
+     >epydoc.markup.restructuredtext.classtree_directive</a><br />    <a target="mainFrame" href="epydoc.markup.restructuredtext-module.html#digraph_directive"
+     >epydoc.markup.restructuredtext.digraph_directive</a><br />    <a target="mainFrame" href="epydoc.markup.restructuredtext-module.html#importgraph_directive"
+     >epydoc.markup.restructuredtext.importgraph_directive</a><br />    <a target="mainFrame" href="epydoc.markup.restructuredtext-module.html#latex_head_prefix"
+     >epydoc.markup.restructuredtext.latex_head_prefix</a><br />    <a target="mainFrame" href="epydoc.markup.restructuredtext-module.html#packagetree_directive"
+     >epydoc.markup.restructuredtext.packagetree_directive</a><br />    <a target="mainFrame" href="epydoc.markup.restructuredtext-module.html#parse_docstring"
+     >epydoc.markup.restructuredtext.parse_docstring</a><br />    <a target="mainFrame" href="epydoc.markup.restructuredtext-module.html#python_code_directive"
+     >epydoc.markup.restructuredtext.python_code_directive</a><br />    <a target="mainFrame" href="epydoc.markup.restructuredtext-module.html#term_role"
+     >epydoc.markup.restructuredtext.term_role</a><br />    <a target="mainFrame" href="epydoc.test-module.html#check_requirements"
+     >epydoc.test.check_requirements</a><br />    <a target="mainFrame" href="epydoc.test-module.html#main"
+     >epydoc.test.main</a><br />    <a target="mainFrame" href="epydoc.test.util-module.html#buildvaluedoc"
+     >epydoc.test.util.buildvaluedoc</a><br />    <a target="mainFrame" href="epydoc.test.util-module.html#cleanup_tmp_dir"
+     >epydoc.test.util.cleanup_tmp_dir</a><br />    <a target="mainFrame" href="epydoc.test.util-module.html#fun_to_plain"
+     >epydoc.test.util.fun_to_plain</a><br />    <a target="mainFrame" href="epydoc.test.util-module.html#print_docstring_as_html"
+     >epydoc.test.util.print_docstring_as_html</a><br />    <a target="mainFrame" href="epydoc.test.util-module.html#print_warnings"
+     >epydoc.test.util.print_warnings</a><br />    <a target="mainFrame" href="epydoc.test.util-module.html#remove_surrogates"
+     >epydoc.test.util.remove_surrogates</a><br />    <a target="mainFrame" href="epydoc.test.util-module.html#runbuilder"
+     >epydoc.test.util.runbuilder</a><br />    <a target="mainFrame" href="epydoc.test.util-module.html#runintrospecter"
+     >epydoc.test.util.runintrospecter</a><br />    <a target="mainFrame" href="epydoc.test.util-module.html#runparser"
+     >epydoc.test.util.runparser</a><br />    <a target="mainFrame" href="epydoc.test.util-module.html#testencoding"
+     >epydoc.test.util.testencoding</a><br />    <a target="mainFrame" href="epydoc.test.util-module.html#to_plain"
+     >epydoc.test.util.to_plain</a><br />    <a target="mainFrame" href="epydoc.test.util-module.html#write_pystring_to_tmp_dir"
+     >epydoc.test.util.write_pystring_to_tmp_dir</a><br />    <a target="mainFrame" href="epydoc.util-module.html#decode_with_backslashreplace"
+     >epydoc.util.decode_with_backslashreplace</a><br />    <a target="mainFrame" href="epydoc.util-module.html#is_module_file"
+     >epydoc.util.is_module_file</a><br />    <a target="mainFrame" href="epydoc.util-module.html#is_package_dir"
+     >epydoc.util.is_package_dir</a><br />    <a target="mainFrame" href="epydoc.util-module.html#is_pyname"
+     >epydoc.util.is_pyname</a><br />    <a target="mainFrame" href="epydoc.util-module.html#is_src_filename"
+     >epydoc.util.is_src_filename</a><br />    <a target="mainFrame" href="epydoc.util-module.html#munge_script_name"
+     >epydoc.util.munge_script_name</a><br />    <a target="mainFrame" href="epydoc.util-module.html#plaintext_to_html"
+     >epydoc.util.plaintext_to_html</a><br />    <a target="mainFrame" href="epydoc.util-module.html#plaintext_to_latex"
+     >epydoc.util.plaintext_to_latex</a><br />    <a target="mainFrame" href="epydoc.util-module.html#py_src_filename"
+     >epydoc.util.py_src_filename</a><br />    <a target="mainFrame" href="epydoc.util-module.html#run_subprocess"
+     >epydoc.util.run_subprocess</a><br />    <a target="mainFrame" href="epydoc.util-module.html#wordwrap"
+     >epydoc.util.wordwrap</a><br />  <h2 class="toc">All Variables</h2>
+    <a target="mainFrame" href="epydoc-module.html#DEBUG"
+     >epydoc.DEBUG</a><br />    <a target="mainFrame" href="epydoc-module.html#__author__"
+     >epydoc.__author__</a><br />    <a target="mainFrame" href="epydoc-module.html#__license__"
+     >epydoc.__license__</a><br />    <a target="mainFrame" href="epydoc-module.html#__url__"
+     >epydoc.__url__</a><br />    <a target="mainFrame" href="epydoc-module.html#__version__"
+     >epydoc.__version__</a><br />    <a target="mainFrame" href="epydoc.apidoc-module.html#UNKNOWN"
+     >epydoc.apidoc.UNKNOWN</a><br />  <div class="private">
+    <a target="mainFrame" href="epydoc.checker-module.html#_NO_BASIC"
+     >epydoc.checker._NO_BASIC</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.checker-module.html#_NO_DOCS"
+     >epydoc.checker._NO_DOCS</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.checker-module.html#_NO_PARAM"
+     >epydoc.checker._NO_PARAM</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.checker-module.html#_NO_RETURN"
+     >epydoc.checker._NO_RETURN</a><br />  </div>
+    <a target="mainFrame" href="epydoc.cli-module.html#ACTIONS"
+     >epydoc.cli.ACTIONS</a><br />    <a target="mainFrame" href="epydoc.cli-module.html#DEFAULT_DOCFORMAT"
+     >epydoc.cli.DEFAULT_DOCFORMAT</a><br />    <a target="mainFrame" href="epydoc.cli-module.html#DOCFORMATS"
+     >epydoc.cli.DOCFORMATS</a><br />    <a target="mainFrame" href="epydoc.cli-module.html#GRAPH_TYPES"
+     >epydoc.cli.GRAPH_TYPES</a><br />    <a target="mainFrame" href="epydoc.cli-module.html#HELP_TOPICS"
+     >epydoc.cli.HELP_TOPICS</a><br />    <a target="mainFrame" href="epydoc.cli-module.html#INHERITANCE_STYLES"
+     >epydoc.cli.INHERITANCE_STYLES</a><br />    <a target="mainFrame" href="epydoc.cli-module.html#OPTION_DEFAULTS"
+     >epydoc.cli.OPTION_DEFAULTS</a><br />    <a target="mainFrame" href="epydoc.cli-module.html#PROFILER"
+     >epydoc.cli.PROFILER</a><br />  <div class="private">
+    <a target="mainFrame" href="epydoc.cli-module.html#_RERUN_LATEX_RE"
+     >epydoc.cli._RERUN_LATEX_RE</a><br />  </div>
+    <a target="mainFrame" href="epydoc.cli-module.html#descr"
+     >epydoc.cli.descr</a><br />    <a target="mainFrame" href="epydoc.cli-module.html#key"
+     >epydoc.cli.key</a><br />    <a target="mainFrame" href="epydoc.cli-module.html#sheet"
+     >epydoc.cli.sheet</a><br />    <a target="mainFrame" href="epydoc.cli-module.html#topic"
+     >epydoc.cli.topic</a><br />    <a target="mainFrame" href="epydoc.docbuilder-module.html#DEFAULT_MERGE_PRECEDENCE"
+     >epydoc.docbuilder.DEFAULT_MERGE_PRECEDENCE</a><br />    <a target="mainFrame" href="epydoc.docbuilder-module.html#MERGE_PRECEDENCE"
+     >epydoc.docbuilder.MERGE_PRECEDENCE</a><br />  <div class="private">
+    <a target="mainFrame" href="epydoc.docbuilder-module.html#_INHERITED_ATTRIBS"
+     >epydoc.docbuilder._INHERITED_ATTRIBS</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docbuilder-module.html#_attribute_mergefunc_registry"
+     >epydoc.docbuilder._attribute_mergefunc_registry</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docbuilder-module.html#_name_scores"
+     >epydoc.docbuilder._name_scores</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docbuilder-module.html#_unreachable_names"
+     >epydoc.docbuilder._unreachable_names</a><br />  </div>
+    <a target="mainFrame" href="epydoc.docintrospecter-module.html#UNDOCUMENTED_CLASS_VARS"
+     >epydoc.docintrospecter.UNDOCUMENTED_CLASS_VARS</a><br />    <a target="mainFrame" href="epydoc.docintrospecter-module.html#UNDOCUMENTED_MODULE_VARS"
+     >epydoc.docintrospecter.UNDOCUMENTED_MODULE_VARS</a><br />  <div class="private">
+    <a target="mainFrame" href="epydoc.docintrospecter-module.html#_CLASS_TYPES"
+     >epydoc.docintrospecter._CLASS_TYPES</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docintrospecter-module.html#_ZopeType"
+     >epydoc.docintrospecter._ZopeType</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docintrospecter-module.html#__future_check_works"
+     >epydoc.docintrospecter.__future_check_works</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docintrospecter-module.html#_dev_null"
+     >epydoc.docintrospecter._dev_null</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docintrospecter-module.html#_introspected_values"
+     >epydoc.docintrospecter._introspected_values</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docintrospecter-module.html#_introspecter_registry"
+     >epydoc.docintrospecter._introspecter_registry</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docintrospecter-module.html#_valuedoc_cache"
+     >epydoc.docintrospecter._valuedoc_cache</a><br />  </div>
+    <a target="mainFrame" href="epydoc.docparser-module.html#BASE_HANDLING"
+     >epydoc.docparser.BASE_HANDLING</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#COMMENT_DOCSTRING_MARKER"
+     >epydoc.docparser.COMMENT_DOCSTRING_MARKER</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#CONTROL_FLOW_KEYWORDS"
+     >epydoc.docparser.CONTROL_FLOW_KEYWORDS</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#DEFAULT_DECORATOR_BEHAVIOR"
+     >epydoc.docparser.DEFAULT_DECORATOR_BEHAVIOR</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#END_GROUP_MARKER"
+     >epydoc.docparser.END_GROUP_MARKER</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#IMPORT_HANDLING"
+     >epydoc.docparser.IMPORT_HANDLING</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#IMPORT_STAR_HANDLING"
+     >epydoc.docparser.IMPORT_STAR_HANDLING</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#PARSE_ELSE_BLOCKS"
+     >epydoc.docparser.PARSE_ELSE_BLOCKS</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#PARSE_EXCEPT_BLOCKS"
+     >epydoc.docparser.PARSE_EXCEPT_BLOCKS</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#PARSE_FINALLY_BLOCKS"
+     >epydoc.docparser.PARSE_FINALLY_BLOCKS</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#PARSE_FOR_BLOCKS"
+     >epydoc.docparser.PARSE_FOR_BLOCKS</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#PARSE_IF_BLOCKS"
+     >epydoc.docparser.PARSE_IF_BLOCKS</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#PARSE_TRY_BLOCKS"
+     >epydoc.docparser.PARSE_TRY_BLOCKS</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#PARSE_WHILE_BLOCKS"
+     >epydoc.docparser.PARSE_WHILE_BLOCKS</a><br />    <a target="mainFrame" href="epydoc.docparser-module.html#START_GROUP_MARKER"
+     >epydoc.docparser.START_GROUP_MARKER</a><br />  <div class="private">
+    <a target="mainFrame" href="epydoc.docparser-module.html#_moduledoc_cache"
+     >epydoc.docparser._moduledoc_cache</a><br />  </div>
+    <a target="mainFrame" href="epydoc.docstringparser-module.html#BAD_CONTEXT"
+     >epydoc.docstringparser.BAD_CONTEXT</a><br />    <a target="mainFrame" href="epydoc.docstringparser-module.html#BAD_PARAM"
+     >epydoc.docstringparser.BAD_PARAM</a><br />    <a target="mainFrame" href="epydoc.docstringparser-module.html#DEFAULT_DOCFORMAT"
+     >epydoc.docstringparser.DEFAULT_DOCFORMAT</a><br />    <a target="mainFrame" href="epydoc.docstringparser-module.html#EXCEPTION_TAGS"
+     >epydoc.docstringparser.EXCEPTION_TAGS</a><br />    <a target="mainFrame" href="epydoc.docstringparser-module.html#EXPECTED_ARG"
+     >epydoc.docstringparser.EXPECTED_ARG</a><br />    <a target="mainFrame" href="epydoc.docstringparser-module.html#EXPECTED_SINGLE_ARG"
+     >epydoc.docstringparser.EXPECTED_SINGLE_ARG</a><br />    <a target="mainFrame" href="epydoc.docstringparser-module.html#PARAMETER_TAGS"
+     >epydoc.docstringparser.PARAMETER_TAGS</a><br />    <a target="mainFrame" href="epydoc.docstringparser-module.html#REDEFINED"
+     >epydoc.docstringparser.REDEFINED</a><br />    <a target="mainFrame" href="epydoc.docstringparser-module.html#RETURN_PDS"
+     >epydoc.docstringparser.RETURN_PDS</a><br />    <a target="mainFrame" href="epydoc.docstringparser-module.html#STANDARD_FIELDS"
+     >epydoc.docstringparser.STANDARD_FIELDS</a><br />    <a target="mainFrame" href="epydoc.docstringparser-module.html#UNEXPECTED_ARG"
+     >epydoc.docstringparser.UNEXPECTED_ARG</a><br />    <a target="mainFrame" href="epydoc.docstringparser-module.html#UNKNOWN_TAG"
+     >epydoc.docstringparser.UNKNOWN_TAG</a><br />    <a target="mainFrame" href="epydoc.docstringparser-module.html#VARIABLE_TAGS"
+     >epydoc.docstringparser.VARIABLE_TAGS</a><br />  <div class="private">
+    <a target="mainFrame" href="epydoc.docstringparser-module.html#_IDENTIFIER_LIST_REGEXP"
+     >epydoc.docstringparser._IDENTIFIER_LIST_REGEXP</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docstringparser-module.html#_SIGNATURE_RE"
+     >epydoc.docstringparser._SIGNATURE_RE</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docstringparser-module.html#_field_dispatch_table"
+     >epydoc.docstringparser._field_dispatch_table</a><br />  </div>
+    <a target="mainFrame" href="epydoc.docwriter.dotgraph-module.html#BASECLASS_BG"
+     >epydoc.docwriter.dotgraph.BASECLASS_BG</a><br />    <a target="mainFrame" href="epydoc.docwriter.dotgraph-module.html#CLASS_BG"
+     >epydoc.docwriter.dotgraph.CLASS_BG</a><br />    <a target="mainFrame" href="epydoc.docwriter.dotgraph-module.html#DOT_COMMAND"
+     >epydoc.docwriter.dotgraph.DOT_COMMAND</a><br />    <a target="mainFrame" href="epydoc.docwriter.dotgraph-module.html#INH_LINK_COLOR"
+     >epydoc.docwriter.dotgraph.INH_LINK_COLOR</a><br />    <a target="mainFrame" href="epydoc.docwriter.dotgraph-module.html#MODULE_BG"
+     >epydoc.docwriter.dotgraph.MODULE_BG</a><br />    <a target="mainFrame" href="epydoc.docwriter.dotgraph-module.html#MODULE_NODE_HTML"
+     >epydoc.docwriter.dotgraph.MODULE_NODE_HTML</a><br />    <a target="mainFrame" href="epydoc.docwriter.dotgraph-module.html#NOOP_URL"
+     >epydoc.docwriter.dotgraph.NOOP_URL</a><br />    <a target="mainFrame" href="epydoc.docwriter.dotgraph-module.html#ROUTINE_BG"
+     >epydoc.docwriter.dotgraph.ROUTINE_BG</a><br />    <a target="mainFrame" href="epydoc.docwriter.dotgraph-module.html#SELECTED_BG"
+     >epydoc.docwriter.dotgraph.SELECTED_BG</a><br />    <a target="mainFrame" href="epydoc.docwriter.dotgraph-module.html#SUBCLASS_BG"
+     >epydoc.docwriter.dotgraph.SUBCLASS_BG</a><br />  <div class="private">
+    <a target="mainFrame" href="epydoc.docwriter.dotgraph-module.html#_DOT_VERSION_RE"
+     >epydoc.docwriter.dotgraph._DOT_VERSION_RE</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docwriter.dotgraph-module.html#_dot_version"
+     >epydoc.docwriter.dotgraph._dot_version</a><br />  </div>
+    <a target="mainFrame" href="epydoc.docwriter.html_colorize-module.html#PYSRC_EXPANDTO_JAVASCRIPT"
+     >epydoc.docwriter.html_colorize.PYSRC_EXPANDTO_JAVASCRIPT</a><br />    <a target="mainFrame" href="epydoc.docwriter.html_colorize-module.html#PYSRC_JAVASCRIPTS"
+     >epydoc.docwriter.html_colorize.PYSRC_JAVASCRIPTS</a><br />  <div class="private">
+    <a target="mainFrame" href="epydoc.docwriter.html_colorize-module.html#_FOOT"
+     >epydoc.docwriter.html_colorize._FOOT</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docwriter.html_colorize-module.html#_HDR"
+     >epydoc.docwriter.html_colorize._HDR</a><br />  </div>
+    <a target="mainFrame" href="epydoc.docwriter.html_css-module.html#STYLESHEETS"
+     >epydoc.docwriter.html_css.STYLESHEETS</a><br />    <a target="mainFrame" href="epydoc.docwriter.html_css-module.html#TEMPLATE"
+     >epydoc.docwriter.html_css.TEMPLATE</a><br />  <div class="private">
+    <a target="mainFrame" href="epydoc.docwriter.html_css-module.html#_BLACK"
+     >epydoc.docwriter.html_css._BLACK</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docwriter.html_css-module.html#_BLUE"
+     >epydoc.docwriter.html_css._BLUE</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docwriter.html_css-module.html#_BLUE_COLORS"
+     >epydoc.docwriter.html_css._BLUE_COLORS</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docwriter.html_css-module.html#_COLOR_RE"
+     >epydoc.docwriter.html_css._COLOR_RE</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docwriter.html_css-module.html#_GRAYSCALE"
+     >epydoc.docwriter.html_css._GRAYSCALE</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docwriter.html_css-module.html#_GREEN"
+     >epydoc.docwriter.html_css._GREEN</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docwriter.html_css-module.html#_WHITE"
+     >epydoc.docwriter.html_css._WHITE</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.docwriter.html_css-module.html#_WHITE_COLORS"
+     >epydoc.docwriter.html_css._WHITE_COLORS</a><br />  </div>
+    <a target="mainFrame" href="epydoc.docwriter.html_help-module.html#HTML_HELP"
+     >epydoc.docwriter.html_help.HTML_HELP</a><br />    <a target="mainFrame" href="epydoc.docwriter.xlink-module.html#api_register"
+     >epydoc.docwriter.xlink.api_register</a><br />    <a target="mainFrame" href="epydoc.gui-module.html#ACTIVEBG_COLOR"
+     >epydoc.gui.ACTIVEBG_COLOR</a><br />    <a target="mainFrame" href="epydoc.gui-module.html#BG_COLOR"
+     >epydoc.gui.BG_COLOR</a><br />    <a target="mainFrame" href="epydoc.gui-module.html#BUILD_PROGRESS"
+     >epydoc.gui.BUILD_PROGRESS</a><br />    <a target="mainFrame" href="epydoc.gui-module.html#BUTTON_CONFIG"
+     >epydoc.gui.BUTTON_CONFIG</a><br />    <a target="mainFrame" href="epydoc.gui-module.html#CBUTTON_CONFIG"
+     >epydoc.gui.CBUTTON_CONFIG</a><br />    <a target="mainFrame" href="epydoc.gui-module.html#COLOR_CONFIG"
+     >epydoc.gui.COLOR_CONFIG</a><br />    <a target="mainFrame" href="epydoc.gui-module.html#DEBUG"
+     >epydoc.gui.DEBUG</a><br />    <a target="mainFrame" href="epydoc.gui-module.html#DH"
+     >epydoc.gui.DH</a><br />    <a target="mainFrame" href="epydoc.gui-module.html#DOWN_GIF"
+     >epydoc.gui.DOWN_GIF</a><br />    <a target="mainFrame" href="epydoc.gui-module.html#DW"
+     >epydoc.gui.DW</a><br />    <a target="mainFrame" href="epydoc.gui-module.html#DX"
+     >epydoc.gui.DX</a><br />    <a target="mainFrame" href="epydoc.gui-module.html#DY"
+     >epydoc.gui.DY</a><br />    <a target="mainFrame" href="epydoc.gui-module.html#ENTRYSELECT_COLOR"
+     >epydoc.gui.ENTRYSELECT_COLOR</a><br />    <a target="mainFrame" href="epydoc.gui-module.html#ENTRY_CONFIG"
+     >epydoc.gui.ENTRY_CONFIG</a><br />    <a target="mainFrame" href="epydoc.gui-module.html#ERROR_COLOR"
+     >epydoc.gui.ERROR_COLOR</a><br />    <a target="mainFrame" href="epydoc.gui-module.html#GUIERROR_COLOR"
+     >epydoc.gui.GUIERROR_COLOR</a><br />    <a target="mainFrame" href="epydoc.gui-module.html#HEADER_COLOR"
+     >epydoc.gui.HEADER_COLOR</a><br />    <a target="mainFrame" href="epydoc.gui-module.html#IMPORT_PROGRESS"
+     >epydoc.gui.IMPORT_PROGRESS</a><br />    <a target="mainFrame" href="epydoc.gui-module.html#LEFT_GIF"
+     >epydoc.gui.LEFT_GIF</a><br />    <a target="mainFrame" href="epydoc.gui-module.html#LISTBOX_CONFIG"
+     >epydoc.gui.LISTBOX_CONFIG</a><br />    <a target="mainFrame" href="epydoc.gui-module.html#MESSAGE_COLOR"
+     >epydoc.gui.MESSAGE_COLOR</a><br />    <a target="mainFrame" href="epydoc.gui-module.html#PROGRESS_BG"
+     >epydoc.gui.PROGRESS_BG</a><br />    <a target="mainFrame" href="epydoc.gui-module.html#PROGRESS_COLOR1"
+     >epydoc.gui.PROGRESS_COLOR1</a><br />    <a target="mainFrame" href="epydoc.gui-module.html#PROGRESS_COLOR2"
+     >epydoc.gui.PROGRESS_COLOR2</a><br />    <a target="mainFrame" href="epydoc.gui-module.html#PROGRESS_COLOR3"
+     >epydoc.gui.PROGRESS_COLOR3</a><br />    <a target="mainFrame" href="epydoc.gui-module.html#PROGRESS_HEIGHT"
+     >epydoc.gui.PROGRESS_HEIGHT</a><br />    <a target="mainFrame" href="epydoc.gui-module.html#PROGRESS_WIDTH"
+     >epydoc.gui.PROGRESS_WIDTH</a><br />    <a target="mainFrame" href="epydoc.gui-module.html#RIGHT_GIF"
+     >epydoc.gui.RIGHT_GIF</a><br />    <a target="mainFrame" href="epydoc.gui-module.html#SB_CONFIG"
+     >epydoc.gui.SB_CONFIG</a><br />    <a target="mainFrame" href="epydoc.gui-module.html#SELECT_COLOR"
+     >epydoc.gui.SELECT_COLOR</a><br />    <a target="mainFrame" href="epydoc.gui-module.html#SHOWERR_CONFIG"
+     >epydoc.gui.SHOWERR_CONFIG</a><br />    <a target="mainFrame" href="epydoc.gui-module.html#SHOWMSG_CONFIG"
+     >epydoc.gui.SHOWMSG_CONFIG</a><br />    <a target="mainFrame" href="epydoc.gui-module.html#SHOWWRN_CONFIG"
+     >epydoc.gui.SHOWWRN_CONFIG</a><br />    <a target="mainFrame" href="epydoc.gui-module.html#TEXT_COLOR"
+     >epydoc.gui.TEXT_COLOR</a><br />    <a target="mainFrame" href="epydoc.gui-module.html#UP_GIF"
+     >epydoc.gui.UP_GIF</a><br />    <a target="mainFrame" href="epydoc.gui-module.html#WARNING_COLOR"
+     >epydoc.gui.WARNING_COLOR</a><br />    <a target="mainFrame" href="epydoc.gui-module.html#WRITE_PROGRESS"
+     >epydoc.gui.WRITE_PROGRESS</a><br />    <a target="mainFrame" href="epydoc.log-module.html#DEBUG"
+     >epydoc.log.DEBUG</a><br />    <a target="mainFrame" href="epydoc.log-module.html#DOCSTRING_WARNING"
+     >epydoc.log.DOCSTRING_WARNING</a><br />    <a target="mainFrame" href="epydoc.log-module.html#ERROR"
+     >epydoc.log.ERROR</a><br />    <a target="mainFrame" href="epydoc.log-module.html#FATAL"
+     >epydoc.log.FATAL</a><br />    <a target="mainFrame" href="epydoc.log-module.html#INFO"
+     >epydoc.log.INFO</a><br />    <a target="mainFrame" href="epydoc.log-module.html#WARNING"
+     >epydoc.log.WARNING</a><br />  <div class="private">
+    <a target="mainFrame" href="epydoc.log-module.html#_loggers"
+     >epydoc.log._loggers</a><br />  </div>
+    <a target="mainFrame" href="epydoc.markup-module.html#MARKUP_LANGUAGES_USED"
+     >epydoc.markup.MARKUP_LANGUAGES_USED</a><br />    <a target="mainFrame" href="epydoc.markup-module.html#SCRWIDTH"
+     >epydoc.markup.SCRWIDTH</a><br />  <div class="private">
+    <a target="mainFrame" href="epydoc.markup-module.html#_markup_language_registry"
+     >epydoc.markup._markup_language_registry</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.markup-module.html#_parse_warnings"
+     >epydoc.markup._parse_warnings</a><br />  </div>
+    <a target="mainFrame" href="epydoc.markup.epytext-module.html#GRAPH_TYPES"
+     >epydoc.markup.epytext.GRAPH_TYPES</a><br />    <a target="mainFrame" href="epydoc.markup.epytext-module.html#SYMBOLS"
+     >epydoc.markup.epytext.SYMBOLS</a><br />    <a target="mainFrame" href="epydoc.markup.epytext-module.html#SYMBOL_TO_PLAINTEXT"
+     >epydoc.markup.epytext.SYMBOL_TO_PLAINTEXT</a><br />  <div class="private">
+    <a target="mainFrame" href="epydoc.markup.epytext-module.html#_BRACE_RE"
+     >epydoc.markup.epytext._BRACE_RE</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.markup.epytext-module.html#_BULLET_RE"
+     >epydoc.markup.epytext._BULLET_RE</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.markup.epytext-module.html#_COLORIZING_TAGS"
+     >epydoc.markup.epytext._COLORIZING_TAGS</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.markup.epytext-module.html#_ESCAPES"
+     >epydoc.markup.epytext._ESCAPES</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.markup.epytext-module.html#_FIELD_BULLET_RE"
+     >epydoc.markup.epytext._FIELD_BULLET_RE</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.markup.epytext-module.html#_HEADING_CHARS"
+     >epydoc.markup.epytext._HEADING_CHARS</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.markup.epytext-module.html#_LINK_COLORIZING_TAGS"
+     >epydoc.markup.epytext._LINK_COLORIZING_TAGS</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.markup.epytext-module.html#_LIST_BULLET_RE"
+     >epydoc.markup.epytext._LIST_BULLET_RE</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.markup.epytext-module.html#_SYMBOLS"
+     >epydoc.markup.epytext._SYMBOLS</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="epydoc.markup.epytext-module.html#_TARGET_RE"
+     >epydoc.markup.epytext._TARGET_RE</a><br />  </div>
+    <a target="mainFrame" href="epydoc.markup.epytext-module.html#__doc__"
+     >epydoc.markup.epytext.__doc__</a><br />    <a target="mainFrame" href="epydoc.markup.restructuredtext-module.html#CONSOLIDATED_DEFLIST_FIELDS"
+     >epydoc.markup.restructuredtext.CONSOLIDATED_DEFLIST_FIELDS</a><br />    <a target="mainFrame" href="epydoc.markup.restructuredtext-module.html#CONSOLIDATED_FIELDS"
+     >epydoc.markup.restructuredtext.CONSOLIDATED_FIELDS</a><br />    <a target="mainFrame" href="epydoc.util-module.html#PY_BIN_EXTENSIONS"
+     >epydoc.util.PY_BIN_EXTENSIONS</a><br />    <a target="mainFrame" href="epydoc.util-module.html#PY_SRC_EXTENSIONS"
+     >epydoc.util.PY_SRC_EXTENSIONS</a><br /><hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/toc.html b/doc/api/toc.html
new file mode 100644
index 0000000..fb4e256
--- /dev/null
+++ b/doc/api/toc.html
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Table of Contents</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Table of Contents</h1>
+<hr />
+  <a target="moduleFrame" href="toc-everything.html">Everything</a>
+  <br />
+  <h2 class="toc">Modules</h2>
+    <a target="moduleFrame" href="toc-epydoc-module.html"
+     onclick="setFrame('toc-epydoc-module.html','epydoc-module.html');"     >epydoc</a><br />    <a target="moduleFrame" href="toc-epydoc.apidoc-module.html"
+     onclick="setFrame('toc-epydoc.apidoc-module.html','epydoc.apidoc-module.html');"     >epydoc.apidoc</a><br />    <a target="moduleFrame" href="toc-epydoc.checker-module.html"
+     onclick="setFrame('toc-epydoc.checker-module.html','epydoc.checker-module.html');"     >epydoc.checker</a><br />    <a target="moduleFrame" href="toc-epydoc.cli-module.html"
+     onclick="setFrame('toc-epydoc.cli-module.html','epydoc.cli-module.html');"     >epydoc.cli</a><br />    <a target="moduleFrame" href="toc-epydoc.compat-module.html"
+     onclick="setFrame('toc-epydoc.compat-module.html','epydoc.compat-module.html');"     >epydoc.compat</a><br />    <a target="moduleFrame" href="toc-epydoc.docbuilder-module.html"
+     onclick="setFrame('toc-epydoc.docbuilder-module.html','epydoc.docbuilder-module.html');"     >epydoc.docbuilder</a><br />    <a target="moduleFrame" href="toc-epydoc.docintrospecter-module.html"
+     onclick="setFrame('toc-epydoc.docintrospecter-module.html','epydoc.docintrospecter-module.html');"     >epydoc.docintrospecter</a><br />    <a target="moduleFrame" href="toc-epydoc.docparser-module.html"
+     onclick="setFrame('toc-epydoc.docparser-module.html','epydoc.docparser-module.html');"     >epydoc.docparser</a><br />    <a target="moduleFrame" href="toc-epydoc.docstringparser-module.html"
+     onclick="setFrame('toc-epydoc.docstringparser-module.html','epydoc.docstringparser-module.html');"     >epydoc.docstringparser</a><br />    <a target="moduleFrame" href="toc-epydoc.docwriter-module.html"
+     onclick="setFrame('toc-epydoc.docwriter-module.html','epydoc.docwriter-module.html');"     >epydoc.docwriter</a><br />    <a target="moduleFrame" href="toc-epydoc.docwriter.dotgraph-module.html"
+     onclick="setFrame('toc-epydoc.docwriter.dotgraph-module.html','epydoc.docwriter.dotgraph-module.html');"     >epydoc.docwriter.dotgraph</a><br />    <a target="moduleFrame" href="toc-epydoc.docwriter.html-module.html"
+     onclick="setFrame('toc-epydoc.docwriter.html-module.html','epydoc.docwriter.html-module.html');"     >epydoc.docwriter.html</a><br />    <a target="moduleFrame" href="toc-epydoc.docwriter.html_colorize-module.html"
+     onclick="setFrame('toc-epydoc.docwriter.html_colorize-module.html','epydoc.docwriter.html_colorize-module.html');"     >epydoc.docwriter.html_colorize</a><br />    <a target="moduleFrame" href="toc-epydoc.docwriter.html_css-module.html"
+     onclick="setFrame('toc-epydoc.docwriter.html_css-module.html','epydoc.docwriter.html_css-module.html');"     >epydoc.docwriter.html_css</a><br />    <a target="moduleFrame" href="toc-epydoc.docwriter.html_help-module.html"
+     onclick="setFrame('toc-epydoc.docwriter.html_help-module.html','epydoc.docwriter.html_help-module.html');"     >epydoc.docwriter.html_help</a><br />    <a target="moduleFrame" href="toc-epydoc.docwriter.latex-module.html"
+     onclick="setFrame('toc-epydoc.docwriter.latex-module.html','epydoc.docwriter.latex-module.html');"     >epydoc.docwriter.latex</a><br />    <a target="moduleFrame" href="toc-epydoc.docwriter.plaintext-module.html"
+     onclick="setFrame('toc-epydoc.docwriter.plaintext-module.html','epydoc.docwriter.plaintext-module.html');"     >epydoc.docwriter.plaintext</a><br />    <a target="moduleFrame" href="toc-epydoc.docwriter.xlink-module.html"
+     onclick="setFrame('toc-epydoc.docwriter.xlink-module.html','epydoc.docwriter.xlink-module.html');"     >epydoc.docwriter.xlink</a><br />    <a target="moduleFrame" href="toc-epydoc.gui-module.html"
+     onclick="setFrame('toc-epydoc.gui-module.html','epydoc.gui-module.html');"     >epydoc.gui</a><br />    <a target="moduleFrame" href="toc-epydoc.log-module.html"
+     onclick="setFrame('toc-epydoc.log-module.html','epydoc.log-module.html');"     >epydoc.log</a><br />    <a target="moduleFrame" href="toc-epydoc.markup-module.html"
+     onclick="setFrame('toc-epydoc.markup-module.html','epydoc.markup-module.html');"     >epydoc.markup</a><br />    <a target="moduleFrame" href="toc-epydoc.markup.doctest-module.html"
+     onclick="setFrame('toc-epydoc.markup.doctest-module.html','epydoc.markup.doctest-module.html');"     >epydoc.markup.doctest</a><br />    <a target="moduleFrame" href="toc-epydoc.markup.epytext-module.html"
+     onclick="setFrame('toc-epydoc.markup.epytext-module.html','epydoc.markup.epytext-module.html');"     >epydoc.markup.epytext</a><br />    <a target="moduleFrame" href="toc-epydoc.markup.javadoc-module.html"
+     onclick="setFrame('toc-epydoc.markup.javadoc-module.html','epydoc.markup.javadoc-module.html');"     >epydoc.markup.javadoc</a><br />    <a target="moduleFrame" href="toc-epydoc.markup.plaintext-module.html"
+     onclick="setFrame('toc-epydoc.markup.plaintext-module.html','epydoc.markup.plaintext-module.html');"     >epydoc.markup.plaintext</a><br />    <a target="moduleFrame" href="toc-epydoc.markup.pyval_repr-module.html"
+     onclick="setFrame('toc-epydoc.markup.pyval_repr-module.html','epydoc.markup.pyval_repr-module.html');"     >epydoc.markup.pyval_repr</a><br />    <a target="moduleFrame" href="toc-epydoc.markup.restructuredtext-module.html"
+     onclick="setFrame('toc-epydoc.markup.restructuredtext-module.html','epydoc.markup.restructuredtext-module.html');"     >epydoc.markup.restructuredtext</a><br />    <a target="moduleFrame" href="toc-epydoc.test-module.html"
+     onclick="setFrame('toc-epydoc.test-module.html','epydoc.test-module.html');"     >epydoc.test</a><br />    <a target="moduleFrame" href="toc-epydoc.test.util-module.html"
+     onclick="setFrame('toc-epydoc.test.util-module.html','epydoc.test.util-module.html');"     >epydoc.test.util</a><br />    <a target="moduleFrame" href="toc-epydoc.util-module.html"
+     onclick="setFrame('toc-epydoc.util-module.html','epydoc.util-module.html');"     >epydoc.util</a><br /><hr />
+  <span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/api/todo-index.html b/doc/api/todo-index.html
new file mode 100644
index 0000000..ff41f66
--- /dev/null
+++ b/doc/api/todo-index.html
@@ -0,0 +1,206 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>To Do List</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >   Indices   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%"> </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="todo-index.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<center><b>[
+ <a href="identifier-index.html">Identifiers</a>
+| <a href="term-index.html">Term Definitions</a>
+| <a href="bug-index.html">Bugs</a>
+| <a href="todo-index.html">To Do</a>
+]</b></center><br />
+<h1 class="epydoc"><a name="todo">To Do List</a></h1>
+<br />
+<div>
+<table width="100%" class="metadata-index" bgcolor="#e0e0e0"><tr><td class="metadata-index"><b>To Do in <a href="epydoc-module.html">epydoc</a></b>    <ul class="nomargin">
+      <li>Create a better default top_page than trees.html.</li>
+      <li>Fix trees.html to work when documenting non-top-level
+modules/packages</li>
+      <li>Implement @include</li>
+      <li>Optimize epytext</li>
+      <li>More doctests</li>
+      <li>When introspecting, limit how much introspection you do (eg,
+don't construct docs for imported modules' vars if it's
+not necessary)</li>
+    </ul>
+</table></div>
+<div>
+<table width="100%" class="metadata-index" bgcolor="#e0e0e0"><tr><td class="metadata-index"><b>To Do in <a href="epydoc.apidoc-module.html">epydoc.apidoc</a></b>    <ul class="nomargin">
+      <li>Add a cache to canonical name lookup?</li>
+    </ul>
+</table></div>
+<div>
+<table width="100%" class="metadata-index" bgcolor="#e0e0e0"><tr><td class="metadata-index"><b>To Do in <a href="epydoc.docparser-module.html">epydoc.docparser</a></b>    <ul class="nomargin">
+      <li>Make it possible to extend the functionality of 
+    <code>parse_docs()</code>, by replacing process_line with a dispatch 
+    table that can be customized (similarly to 
+    <code>docintrospector.register_introspector()</code>).</li>
+    </ul>
+</table></div>
+<div>
+<table width="100%" class="metadata-index" bgcolor="#e0e0e0"><tr><td class="metadata-index"><b>To Do in <a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html">epydoc.docwriter.dotgraph.DotGraphUmlClassNode</a></b>    <ul class="nomargin">
+      <li>Add more options?
+- show/hide operation signature
+- show/hide operation signature types
+- show/hide operation signature return type
+- show/hide attribute types
+- use qualifiers</li>
+    </ul>
+</table></div>
+<div class="private">
+<table width="100%" class="metadata-index" bgcolor="#e0e0e0"><tr><td class="metadata-index"><b>To Do in <a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_operation_arg" onclick="show_private();">epydoc.docwriter.dotgraph.DotGraphUmlClassNode._operation_arg</a></b>    <ul class="nomargin">
+      <li>Handle tuple args better</li>
+      <li>Optionally add type info?</li>
+    </ul>
+</table></div>
+<div class="private">
+<table width="100%" class="metadata-index" bgcolor="#e0e0e0"><tr><td class="metadata-index"><b>To Do in <a href="epydoc.docwriter.dotgraph.DotGraphUmlClassNode-class.html#_operation_cell" onclick="show_private();">epydoc.docwriter.dotgraph.DotGraphUmlClassNode._operation_cell</a></b>    <ul class="nomargin">
+      <li>do 'word wrapping' on the signature, by starting a new
+row in the table, if necessary.  How to indent the new
+line?  Maybe use align=right?  I don't think dot has a
+&nbsp;.</li>
+      <li>Optionally add return type info?</li>
+    </ul>
+</table></div>
+<div>
+<table width="100%" class="metadata-index" bgcolor="#e0e0e0"><tr><td class="metadata-index"><b>To Do in <a href="epydoc.docwriter.dotgraph-module.html#add_valdoc_nodes">epydoc.docwriter.dotgraph.add_valdoc_nodes</a></b>    <ul class="nomargin">
+      <li>Use different node styles for different subclasses of APIDoc</li>
+    </ul>
+</table></div>
+<div>
+<table width="100%" class="metadata-index" bgcolor="#e0e0e0"><tr><td class="metadata-index"><b>To Do in <a href="epydoc.docwriter.dotgraph-module.html#call_graph">epydoc.docwriter.dotgraph.call_graph</a></b>    <ul class="nomargin">
+      <li>Add an <tt class="rst-docutils literal"><span class="pre">exclude</span></tt> option?</li>
+    </ul>
+</table></div>
+<div>
+<table width="100%" class="metadata-index" bgcolor="#e0e0e0"><tr><td class="metadata-index"><b>To Do in <a href="epydoc.docwriter.html-module.html">epydoc.docwriter.html</a></b>    <ul class="nomargin">
+      <li>Add a cache to <a 
+    href="epydoc.docwriter.html.HTMLWriter-class.html#url" 
+    class="link">HTMLWriter.url()</a>?</li>
+    </ul>
+</table></div>
+<div>
+<table width="100%" class="metadata-index" bgcolor="#e0e0e0"><tr><td class="metadata-index"><b>To Do in <a href="epydoc.docwriter.html.HTMLWriter-class.html#write_class_tree">epydoc.docwriter.html.HTMLWriter.write_class_tree</a></b>    <ul class="nomargin">
+      <li>For multiple inheritance, don't repeat subclasses the second time a 
+    class is mentioned; instead, link to the first mention.</li>
+    </ul>
+</table></div>
+<div>
+<table width="100%" class="metadata-index" bgcolor="#e0e0e0"><tr><td class="metadata-index"><b>To Do in <a href="epydoc.docwriter.latex-module.html">epydoc.docwriter.latex</a></b>    <ul class="nomargin">
+      <li>Inheritance=listed</li>
+    </ul>
+</table></div>
+<div>
+<table width="100%" class="metadata-index" bgcolor="#e0e0e0"><tr><td class="metadata-index"><b>To Do in <a href="epydoc.gui-module.html">epydoc.gui</a></b>    <ul class="nomargin">
+      <li>Use ini-style project files, rather than pickles (using the same format
+    as the CLI).</li>
+    </ul>
+</table></div>
+<div>
+<table width="100%" class="metadata-index" bgcolor="#e0e0e0"><tr><td class="metadata-index"><b>To Do in <a href="epydoc.markup.restructuredtext-module.html">epydoc.markup.restructuredtext</a></b>    <ul class="nomargin">
+      <li>Add ParsedRstDocstring.to_latex()</li>
+    </ul>
+</table></div>
+<br /><!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epydoc-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >   Indices   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc 3.0.1</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Jan 30 14:05:42 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/configfile.html b/doc/configfile.html
new file mode 100644
index 0000000..e179c8a
--- /dev/null
+++ b/doc/configfile.html
@@ -0,0 +1,157 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html> <head>
+<title>Epydoc: Sample Configuration File</title>
+<link rel="stylesheet" href="epydoc.css" type="text/css"/>
+</head>
+<!-- $Id: using.html 574 2003-07-21 06:51:56Z edloper $ -->
+
+<body>
+<div class="body">
+<h1>Sample Configuration File</h1>
+
+<p>Configuration files, specified using the <code>--config</code> option,
+may be used to specify both the list of objects to document, and the
+options that should be used to document them.  Configuration files are
+read using the standard <a
+href="http://docs.python.org/lib/module-ConfigParser.html">ConfigParser</a>
+module.  The following example configuration file demonstrates the
+various options that you can set.  Lines beginning with "#" or ";" are
+treated as comments. </p>
+
+<div class="screen"><pre>
+<b>[epydoc]</b> <i># Epydoc section marker (required by ConfigParser)</i>
+
+<i># <u>modules</u></i>
+<i>#   The list of objects to document.  Objects can be named using</i>
+<i>#   dotted names, module filenames, or package directory names.</i>
+<i>#   Alases for this option include "objects" and "values".</i>
+<b>modules: sys, os.path, re</b>
+
+<i># <u>output</u></i>
+<i>#   The type of output that should be generated.  Should be one</i>
+<i>#   of: html, text, latex, dvi, ps, pdf.</i>
+<b>output: html</b>
+
+<i># <u>target</u></i>
+<i>#   The path to the output directory.  May be relative or absolute.</i>
+<b>target: html/</b>
+
+<i># <u>docformat</u></i>
+<i>#   The default markup language for docstrings, for modules that do</i>
+<i>#   not define __docformat__.  Defaults to epytext.</i>
+<b>docformat: epytext</b>
+
+<i># <u>css</u></i>
+<i>#   The CSS stylesheet for HTML output.  Can be the name of a builtin</i>
+<i>#   stylesheet, or the name of a file.</i>
+<b>css: white</b>
+
+<i># <u>name</u></i>
+<i>#   The documented project's name.</i>
+<b>name: Example</b>
+
+<i># <u>url</u></i>
+<i>#   The documented project's URL.</i>
+<b>url: http://some.project/</b>
+
+<i># <u>link</u></i>
+<i>#   HTML code for the project link in the navigation bar.  If left</i>
+<i>#   unspecified, the project link will be generated based on the</i>
+<i>#   project's name and URL.</i>
+<b>link: <a href="somewhere">My Cool Project</a></b>
+
+<i># <u>top</u></i>
+<i>#   The "top" page for the documentation.  Can be a URL, the name</i>
+<i>#   of a module or class, or one of the special names "trees.html",</i>
+<i>#   "indices.html", or "help.html"</i>
+<b>top: os.path</b>
+
+<i># <u>help</u></i>
+<i>#   An alternative help file.  The named file should contain the</i>
+<i>#   body of an HTML file; navigation bars will be added to it.</i>
+<b>help: my_helpfile.html</b>
+
+<i># <u>frames</u></i>
+<i>#   Whether or not to include a frames-based table of contents.</i>
+<b>frames: yes</b>
+
+<i># <u>private</u></i>
+<i>#   Whether or not to inclue private variables.  (Even if included,</i>
+<i>#   private variables will be hidden by default.)</i>
+<b>private: yes</b>
+
+<i># <u>imports</u></i>
+<i>#   Whether or not to list each module's imports.</i>
+<b>imports: no</b>
+
+<i># <u>verbosity</u></i>
+<i>#   An integer indicating how verbose epydoc should be.  The default</i>
+<i>#   value is 0; negative values will supress warnings and errors;</i>
+<i>#   positive values will give more verbose output.</i>
+<b>verbosity: 0</b>
+
+<i># <u>parse</u></i>
+<i>#   Whether or not parsing should be used to examine objects.</i>
+<b>parse: yes</b>
+
+<i># <u>introspect</u></i>
+<i>#   Whether or not introspection should be used to examine objects.</i>
+<b>introspect: yes</b>
+
+<i># <u>graph</u></i>
+<i>#   The list of graph types that should be automatically included</i>
+<i>#   in the output.  Graphs are generated using the Graphviz "dot"</i>
+<i>#   executable.  Graph types include: "classtree", "callgraph",</i>
+<i>#   "umlclass".  Use "all" to include all graph types</i>
+<b>graph: all</b>
+
+<i># <u>dotpath</u></i>
+<i>#   The path to the Graphviz "dot" executable, used to generate</i>
+<i>#   graphs.</i>
+<b>dotpath: /usr/local/bin/dot</b>
+
+<i># <u>sourcecode</u></i>
+<i>#   Whether or not to include syntax highlighted source code in</i>
+<i>#   the output (HTML only).</i>
+<b>sourcecode: yes</b>
+
+<i># <u>pstat</u></i>
+<i>#   The name of one or more pstat files (generated by the profile</i>
+<i>#   or hotshot module).  These are used to generate call graphs.</i>
+<b>pstat: profile.out</b>
+
+<i># <u>separate-classes</u></i>
+<i>#   Whether each class should be listed in its own section when</i>
+<i>#   generating LaTeX or PDF output.</i>
+<b>separate-classes: no</b>
+
+</pre></div>
+</div>
+<table width="100%" class="navbox" cellpadding="1" cellspacing="0">
+  <tr>
+  <a class="nav" href="index.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="index.html">
+    Home</a></td></a>
+  <a class="nav" href="installing.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="installing.html">
+    Installing Epydoc</a></td></a>
+  <a class="nav" href="using.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="using.html">
+    Using Epydoc</a></td></a>
+  <a class="nav" href="epytext.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="epytext.html">
+    Epytext</a></td></a>
+  <td align="center" width="20%" class="nav">
+    
+    <A href="http://sourceforge.net/projects/epydoc"> 
+    <IMG src="sflogo.png" 
+    width="88" height="26" border="0" alt="SourceForge"
+    align="top"/></A></td>
+    </tr>
+</table>
+</body>
+</html>
diff --git a/doc/custom.css b/doc/custom.css
new file mode 100644
index 0000000..fa0d01f
--- /dev/null
+++ b/doc/custom.css
@@ -0,0 +1,150 @@
+/*
+:Author: Edward Loper
+:Copyright: This stylesheet has been placed in the public domain.
+
+Stylesheet for use with Docutils.
+*/
+
+ at import url("docutils.css");
+
+/*===================================================================*/
+/* Navigation box */
+
+table.navbox {
+  border-right: 1px solid black;
+  border-left: 1px solid black;
+  border-bottom: 1px solid black;
+}
+td.nav {
+  border: 2px outset #70b0ff;
+  background: #70b0ff; color: black;
+  font-weight: bold;
+}
+td.navselect {
+  background: #4888d8; color: white;
+}
+
+a.nav:link    { text-decoration: none; }
+a.nav:visited { text-decoration: none; }
+
+/*======================================================================*/
+/* Source code colorization */
+pre.py-doctest              { padding: .5em; margin: 1em;
+                              background: #e8f0f8; color: #000000;
+                              border: 1px solid #708890; }
+table.docutils pre.py-doctest { background: #dce4ec;
+                                color: #000000; 
+                                border: 1px solid #708890; }
+.py-prompt                  { color: #005050; font-weight: bold;}
+.py-string                  { color: #006030; }
+.py-comment                 { color: #003060; }
+.py-keyword                 { color: #600000; }
+.py-output                  { color: #404040; }
+.py-name                    { color: #000050; }
+.py-name:link               { color: #000050; }
+.py-name:visited            { color: #000050; }
+.py-number                  { color: #005000; }
+.py-def-name                { color: #000060; font-weight: bold; }
+.py-base-class              { color: #000060; }
+.py-param                   { color: #000060; }
+.py-docstring               { color: #006030; }
+.py-decorator               { color: #804020; }
+
+/*======================================================================*/
+/* Document formatting */
+
+ at media screen {
+  body    { background: #204060; color: #000000; }
+  div.document { 
+    background: white; color: black;
+    padding: 0 1em 0 1em;
+    border: 2px solid black;
+  }
+}
+
+h1.title { font-size: 180%; font-weight: bold; text-align: center;
+           padding: .1em; margin: 0; border-bottom: 2px solid black;}
+
+h2.subtitle { font-size: 100%; text-align: center; 
+              font-style: italic; font-weight: normal; margin-top: 0; }
+
+pre.literal-block           { padding: .5em; margin: 1em;
+                              background: #e8f0f8; color: #000000;
+                              border: 1px solid #708890; }
+
+table.docutils {
+  border: 1px solid black; background: #e8f0f8; 
+  margin-top: 6px; border-collapse: collapse;
+}
+table.docutils th, table.docutils td {
+  border: 1px solid black;
+  padding: 0 .5em 0 .5em; }
+table.docutils th       { background: #70b0ff; }
+
+div.epydoc-usage { border: 1px solid #708890; 
+                   background: #e8f0f8; margin: 1em; padding: 0.5em}
+table.option-list { background: none !important;
+                    border: 0px solid black; }
+table.option-list td { border: none !important; }
+
+div.note {  
+  border: 1px solid black; background: #e8f0f8; 
+  margin-top: 6px; 
+  border-collapse: collapse;
+  padding: 0 10px 10px 10px;
+}
+div.note p.admonition-title { 
+  background: #a0f0c0; margin: 0 -10px; padding: 6px 6px 3px 6px;
+  border-bottom: 1px solid black; 
+ }
+
+#the-epytext-markup-language table.docutils { width: 95%; }
+
+table.docutils pre { border: 0px solid black; }
+
+div.note {  }
+
+
+
+/* For the "Sections" example in the manual */
+p.h1                    { font-size: 150%; font-weight: bold;  }
+p.h2                    { font-size: 125%; font-weight: bold;  }
+
+table.docinfo { margin: 0 0 0.5em 0; font-size: 90%; }
+
+div.abstract { margin: 0; padding: 0.5em 1em; 
+               border: 1px solid black; 
+               background: #e8f0f8; color: black; }
+div.abstract p { margin: 0; }
+div.abstract p.topic-title { display: none; }
+
+#contents { 
+    background: #e8f0f8; color: black; 
+    border: 1px solid #000000;
+    margin: 1em 0 1em 0;
+    padding: 0 10px 0 10px;
+}
+
+#contents p.topic-title {
+    background: #70b0ff;
+    text-align: center;
+    font-weight: bold;
+    font-size: 125%;
+    margin: 0 -10px 0 -10px;
+    padding: 0 10px 0 10px;
+    border-bottom: 1px solid black;
+}
+
+/*
+
+<table class="docinfo" frame="void" rules="none">
+<col class="docinfo-name" />
+<col class="docinfo-content" />
+<tbody valign="top">
+<tr><th class="docinfo-name">Author:</th>
+<td><a class="first last reference" href="mailto:edloper@gradient.cis.upenn.edu">Edward Loper</a></td></tr>
+<tr><th class="docinfo-name">Version:</th>
+<td>3.0b1</td></tr>
+</tbody>
+</table>
+<div class="abstract topic">*/
diff --git a/doc/docstrings.html b/doc/docstrings.html
new file mode 100644
index 0000000..7975230
--- /dev/null
+++ b/doc/docstrings.html
@@ -0,0 +1,88 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html> <head>
+<title>Python Docstrings</title>
+<link rel="stylesheet" href="epydoc.css" type="text/css"/>
+</head>
+<!-- $Id: docstrings.html 1211 2006-04-10 19:38:37Z edloper $ -->
+<body>
+
+<div class="body">
+<h1> Python Docstrings </h1>
+
+<p> Python documentation strings (or <i>docstrings</i>) provide a
+convenient way of associating documentation with Python modules,
+functions, classes, and methods.  An object's docsting is defined by
+including a string constant as the first statement in the object's
+definition.  For example, the following function defines a docstring:
+</p>
+
+<div class="screen"><pre>
+<code class="keyword">def</code> <code class="function">x_intercept</code>(m, b):
+    <code class="string">"""
+    Return the x intercept of the line y=m*x+b.  The x intercept of a
+    line is the point at which it crosses the x axis (y=0).
+    """</code>
+    <code class="keyword">return</code> -b/m
+</pre></div>
+
+<p> Docstrings can be accessed from the interpreter and from Python
+programs using the "<code>__doc__</code>" attribute: </p>
+
+<div class="screen"><pre>
+<code class="prompt">>>></code> <code class="user"><code class="keyword">print</code> x_intercept.__doc__</code><code class="output">
+    Return the x intercept of the line y=m*x+b.  The x intercept of a
+    line is the point at which it crosses the x axis (y=0).</code>
+</pre></div>
+
+<p> The <a href="http://web.lfw.org/python/pydoc.html">pydoc</a>
+module, which became part of <a
+href="http://www.python.org/doc/current/lib/module-pydoc.html">
+the standard library</a> in Python 2.1, can be used to display
+information about a Python object, including its docstring: </p>
+
+<div class="screen"><pre>
+<code class="prompt">>>></code> <code class="user"><code class="keyword">from</code> pydoc <code class="keyword">import</code> help</code>
+
+<code class="prompt">>>></code> <code class="user">help(x_intercept)</code>
+<code class="output">Help on function x_intercept in module __main__:
+
+<b>x_intercept</b>(m, b)
+    Return the x intercept of the line y=m*x+b.  The x intercept of a
+    line is the point at which it crosses the x axis (y=0).</code>
+</pre></div>
+
+<p> For more information about Python docstrings, see the <a
+href="http://www.python.org/doc/current/tut/node6.html#SECTION006750000000000000000">Python
+Tutorial</a> or the Oreilly Network article <a
+href="http://www.onlamp.com/lpt/a/python/2001/05/17/docstrings.html">Python
+Documentation Tips and Tricks</a>. </p>
+
+</div>
+<table width="100%" class="navbox" cellpadding="1" cellspacing="0">
+  <tr>
+  <a class="nav" href="index.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="index.html">
+    Home</a></td></a>
+  <a class="nav" href="installing.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="installing.html">
+    Installing Epydoc</a></td></a>
+  <a class="nav" href="using.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="using.html">
+    Using Epydoc</a></td></a>
+  <a class="nav" href="epytext.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="epytext.html">
+    Epytext</a></td></a>
+  <td align="center" width="20%" class="nav">
+    
+    <A href="http://sourceforge.net/projects/epydoc"> 
+    <IMG src="sflogo.png" 
+    width="88" height="26" border="0" alt="SourceForge"
+    align="top"/></A></td>
+    </tr>
+</table>
+</body>
+</html>
diff --git a/doc/doctest/apidoc.html b/doc/doctest/apidoc.html
new file mode 100644
index 0000000..a115a88
--- /dev/null
+++ b/doc/doctest/apidoc.html
@@ -0,0 +1,327 @@
+<?xml version="1.0" encoding="ascii" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ascii" />
+<meta name="generator" content="Docutils 0.5: http://docutils.sourceforge.net/" />
+<title>Regression Testing for epydoc.apidoc</title>
+<link rel="stylesheet" href="../custom.css" type="text/css" />
+</head>
+<body>
+<div class="document" id="regression-testing-for-epydoc-apidoc">
+<h1 class="title">Regression Testing for epydoc.apidoc</h1>
+
+<p>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 <cite>APIDoc</cite> 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 <cite>APIDoc</cite> objects, each of
+which encodes information about a single Python variable or value.</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">import</span> epydoc; epydoc.DEBUG = True</pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">from</span> epydoc.apidoc <span class="py-keyword">import</span> *</pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">from</span> epydoc.test.util <span class="py-keyword">import</span> print_warnings
+<span class="py-prompt">>>> </span>print_warnings()</pre>
+</blockquote>
+<div class="section" id="unknown-value">
+<h1>Unknown Value</h1>
+<p>Epydoc defines a special object, epydoc.apidoc.UNKNOWN, which is used
+as the value of attributes when their real value is not (yet) known.</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>UNKNOWN
+<span class="py-output"><UNKNOWN></span></pre>
+</blockquote>
+<p>This object only compares equal to itself:</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>UNKNOWN == False
+<span class="py-output">False</span>
+<span class="py-output"></span><span class="py-prompt">>>> </span>UNKNOWN == True
+<span class="py-output">False</span>
+<span class="py-output"></span><span class="py-prompt">>>> </span>UNKNOWN == <span class="py-string">'UNKNOWN'</span>
+<span class="py-output">False</span>
+<span class="py-output"></span><span class="py-prompt">>>> </span>UNKNOWN == 0
+<span class="py-output">False</span>
+<span class="py-output"></span><span class="py-prompt">>>> </span>UNKNOWN == []
+<span class="py-output">False</span>
+<span class="py-output"></span><span class="py-prompt">>>> </span>UNKNOWN == object()
+<span class="py-output">False</span>
+<span class="py-output"></span><span class="py-prompt">>>> </span>UNKNOWN == UNKNOWN
+<span class="py-output">True</span></pre>
+</blockquote>
+<p>If UNKNOWN is used in a context where it is cast to bool, then it will
+raise an exception.  This helps prevent acidentally interpreting an
+UNKNOWN value as true or false:</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">if</span> UNKNOWN:
+<span class="py-more">... </span>    <span class="py-keyword">print</span> <span class="py-string">'ok'</span>
+<span class="py-except">Traceback (most recent call last):</span>
+<span class="py-except">ValueError: Sentinel value <UNKNOWN> can not be used as a boolean</span></pre>
+</blockquote>
+<p>To test an attribute whose value might be UNKNOWN, you should
+explicitly compare that value to True or False.  E.g.:</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>x = UNKNOWN
+<span class="py-prompt">>>> </span><span class="py-keyword">if</span> x <span class="py-keyword">is</span> True:
+<span class="py-more">... </span>    <span class="py-keyword">print</span> <span class="py-string">'we know x is true, and not unknown'</span>
+<span class="py-prompt">>>> </span><span class="py-keyword">if</span> x <span class="py-keyword">is</span> <span class="py-keyword">not</span> False:
+<span class="py-more">... </span>    <span class="py-keyword">print</span> <span class="py-string">'x might be true or unknown.'</span>
+<span class="py-output">x might be true or unknown.</span>
+<span class="py-output"></span><span class="py-prompt">>>> </span><span class="py-keyword">if</span> x <span class="py-keyword">in</span> (True, UNKNOWN):
+<span class="py-more">... </span>    <span class="py-keyword">print</span> <span class="py-string">'x might be true or unknown.'</span>
+<span class="py-output">x might be true or unknown.</span></pre>
+</blockquote>
+</div>
+<div class="section" id="dotted-names">
+<h1>Dotted Names</h1>
+<p>The DottedName class is used to encode dotted names, such as
+'epydoc.apidoc.DottedName', and make them easier to work with.
+Conceptually, a dotted name consists of a sequence of identifiers,
+separated by periods.</p>
+<p>Dotted names can be constructed from strings:</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>name1 = DottedName(<span class="py-string">'foo.bar'</span>)
+<span class="py-prompt">>>> </span>name1
+<span class="py-output">DottedName('foo', 'bar')</span></pre>
+</blockquote>
+<p>Note that the given name is split on periods.  You may also pass
+multiple strings to the constructor; they will be combined together
+into a single sequence:</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>name2 = DottedName(<span class="py-string">'x.y'</span>, <span class="py-string">'z'</span>)
+<span class="py-prompt">>>> </span>name2
+<span class="py-output">DottedName('x', 'y', 'z')</span></pre>
+</blockquote>
+<p>Each string can be a single identifier or a sequence of identifiers
+joined py periods.  You may also pass DottedName objects to the
+constructor; their sequence of identifiers will be used:</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>name3 = DottedName(name1, name2)
+<span class="py-prompt">>>> </span>name3
+<span class="py-output">DottedName('foo', 'bar', 'x', 'y', 'z')</span></pre>
+</blockquote>
+<p>The string representation of a dotted name is formed by joining the
+identifiers with periods:</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>str(name1)
+<span class="py-output">'foo.bar'</span>
+<span class="py-output"></span><span class="py-prompt">>>> </span>str(name2)
+<span class="py-output">'x.y.z'</span>
+<span class="py-output"></span><span class="py-prompt">>>> </span>str(name3)
+<span class="py-output">'foo.bar.x.y.z'</span></pre>
+</blockquote>
+<p>The individual identifiers of a dotted name can be accessed via
+indexing; and the number of identifiers is returned by the len
+operator:</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>name1[0], name1[1]
+<span class="py-output">('foo', 'bar')</span>
+<span class="py-output"></span><span class="py-prompt">>>> </span>name3[-1]
+<span class="py-output">'z'</span>
+<span class="py-output"></span><span class="py-prompt">>>> </span>name3[1:3]
+<span class="py-output">DottedName('bar', 'x')</span>
+<span class="py-output"></span><span class="py-prompt">>>> </span>len(name2)
+<span class="py-output">3</span></pre>
+</blockquote>
+<p>As a result, you can iterate over the identifiers in a dotted name:</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">for</span> ident <span class="py-keyword">in</span> name1:
+<span class="py-more">... </span>    <span class="py-keyword">print</span> ident
+<span class="py-output">foo</span>
+<span class="py-output">bar</span></pre>
+</blockquote>
+<p>Two dotted names compare equal if they have the same number of
+identifies and they are pairwise equal:</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>DottedName(<span class="py-string">'foo.bar'</span>) == DottedName(<span class="py-string">'foo'</span>, <span class="py-string">'bar'</span>)
+<span class="py-output">True</span>
+<span class="py-output"></span><span class="py-prompt">>>> </span>DottedName(<span class="py-string">'foo.bar'</span>) == DottedName(<span class="py-string">'foo.baz'</span>)
+<span class="py-output">False</span>
+<span class="py-output"></span><span class="py-prompt">>>> </span>DottedName(<span class="py-string">'foo.bar'</span>) == DottedName(<span class="py-string">'foo.bar.baz'</span>)
+<span class="py-output">False</span></pre>
+</blockquote>
+<p>Dotted names may be combined with the addition operator:</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>name1 + name2
+<span class="py-output">DottedName('foo', 'bar', 'x', 'y', 'z')</span>
+<span class="py-output"></span><span class="py-prompt">>>> </span>name1 + name2 == name3
+<span class="py-output">True</span>
+<span class="py-output"></span><span class="py-prompt">>>> </span>name2 + name1 == name3
+<span class="py-output">False</span></pre>
+</blockquote>
+<p>The container method may be used to construct a new dotted name with the
+last identifier stripped off:</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>name1.container()
+<span class="py-output">DottedName('foo')</span>
+<span class="py-output"></span><span class="py-prompt">>>> </span>name3.container()
+<span class="py-output">DottedName('foo', 'bar', 'x', 'y')</span></pre>
+</blockquote>
+<p>If a dotted name has only one identifier, then its container is None:</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">print</span> DottedName(<span class="py-string">'baz'</span>).container()
+<span class="py-output">None</span>
+<span class="py-output"></span><span class="py-prompt">>>> </span><span class="py-keyword">print</span> name1.container().container()
+<span class="py-output">None</span></pre>
+</blockquote>
+<p>It is an error to create an empty dotted name; or a dotted name that
+contains a string that's not a valid python identifier:</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>DottedName()
+<span class="py-except">Traceback (most recent call last):</span>
+<span class="py-except">InvalidDottedName: Empty DottedName</span>
+<span class="py-except"></span><span class="py-prompt">>>> </span>DottedName(<span class="py-string">'1+2'</span>, strict=True)
+<span class="py-except">Traceback (most recent call last):</span>
+<span class="py-except">InvalidDottedName: Bad identifier '1+2'</span>
+<span class="py-except"></span><span class="py-prompt">>>> </span>DottedName({})
+<span class="py-except">Traceback (most recent call last):</span>
+<span class="py-except">TypeError: Bad identifier {}: expected DottedName or str</span>
+<span class="py-except"></span><span class="py-prompt">>>> </span>DottedName(<span class="py-string">'1+2'</span>, strict=False)
+<span class="py-output">Identifier '1+2' looks suspicious; using it anyway.</span>
+<span class="py-output">DottedName('1+2')</span></pre>
+</blockquote>
+<p>The one exception is that '??' is treated as if it were a valid python
+identifier:</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>DottedName(<span class="py-string">'??'</span>, <span class="py-string">'foo'</span>)
+<span class="py-output">DottedName('??', 'foo')</span></pre>
+</blockquote>
+<p>This is used when we can't find any name for an object (e.g., if
+there's a class that was used as the base class, but is not contained
+in any module or class).</p>
+<p>A dotted name can be queried into a context to obtain a reduced version:</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>DottedName(<span class="py-string">'foo.bar'</span>).contextualize(DottedName(<span class="py-string">'foo'</span>))
+<span class="py-output">DottedName('bar')</span>
+<span class="py-output"></span><span class="py-prompt">>>> </span>DottedName(<span class="py-string">'foo.bar.baz.qux'</span>).contextualize(DottedName(<span class="py-string">'foo.bar'</span>))
+<span class="py-output">DottedName('baz', 'qux')</span>
+<span class="py-output"></span><span class="py-prompt">>>> </span>DottedName(<span class="py-string">'foo.bar'</span>).contextualize(DottedName(<span class="py-string">'baz'</span>))
+<span class="py-output">DottedName('foo', 'bar')</span>
+<span class="py-output"></span><span class="py-prompt">>>> </span>DottedName(<span class="py-string">'foo.bar'</span>).contextualize(DottedName(<span class="py-string">'foo'</span>).container())
+<span class="py-output">DottedName('foo', 'bar')</span>
+<span class="py-output"></span><span class="py-prompt">>>> </span>DottedName(<span class="py-string">'foo.bar'</span>).contextualize(UNKNOWN)
+<span class="py-output">DottedName('foo', 'bar')</span></pre>
+</blockquote>
+<p>But a contextualization can't reduce to an empty DottedName:</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>DottedName(<span class="py-string">'foo'</span>).contextualize(DottedName(<span class="py-string">'foo'</span>))
+<span class="py-output">DottedName('foo')</span></pre>
+</blockquote>
+</div>
+<div class="section" id="apidoc-objects">
+<h1>APIDoc Objects</h1>
+<p>API documentation about Python programs is broken into small pieces,
+each of which is encoded using a single APIDoc object.  Each APIDoc
+object describes a single value, variable, or function argument.</p>
+<p>The APIDoc base class has 2 direct subclasses, for the 2 basic types
+of entity that it can record information about: ValueDoc and
+VariableDoc.  ValueDoc is further subclassed to specify the different
+pieces of information that should be recorded about each value type.</p>
+<p>APIDoc objects record information about each entity using attributes.
+Attribute values may be specified in the constructor.  Any attributes
+that are not specified will be given a default value (usually
+UNKNOWN).  The APIDoc base class defines the attributes shared by all
+APIDoc objects: docstring, docstring_lineno, descr, summary, metadata,
+and extra_docstring_fields.</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>api_doc = APIDoc(docstring=<span class="py-string">'foo'</span>)
+<span class="py-prompt">>>> </span>api_doc.docstring
+<span class="py-output">'foo'</span>
+<span class="py-output"></span><span class="py-prompt">>>> </span>api_doc.summary
+<span class="py-output"><UNKNOWN></span></pre>
+</blockquote>
+<p>The constructor does not accept positional arguments; and any keyword
+argument that does not correspond to a valid attribute will generate a
+TypeError (but only if epydoc.DEBUG is true):</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>APIDoc(<span class="py-string">'foo'</span>)
+<span class="py-except">Traceback (most recent call last):</span>
+<span class="py-except">TypeError: __init__() takes exactly 1 argument (2 given)</span>
+<span class="py-except"></span><span class="py-prompt">>>> </span>APIDoc(foo=<span class="py-string">'foo'</span>)
+<span class="py-except">Traceback (most recent call last):</span>
+<span class="py-except">TypeError: APIDoc got unexpected arg 'foo'</span></pre>
+</blockquote>
+<p>Any assignment to an attribute that's not valid will also generate a
+TypeError (but only if epydoc.DEBUG is true):</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>api_doc = APIDoc(docstring=<span class="py-string">'ds'</span>)
+<span class="py-prompt">>>> </span>api_doc.foo = 0
+<span class="py-except">Traceback (most recent call last):</span>
+<span class="py-except">AttributeError: APIDoc does not define attribute 'foo'</span></pre>
+</blockquote>
+<p>APIDoc defines a pretty-print method, pp(), which can be used to
+display the information that an APIDoc contains:</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>val_doc = ValueDoc(pyval=3)
+<span class="py-prompt">>>> </span>var_doc = VariableDoc(name=<span class="py-string">'x'</span>, value=val_doc)
+<span class="py-prompt">>>> </span>class_doc = ClassDoc(bases=(), variables={<span class="py-string">'x'</span>:var_doc})
+<span class="py-prompt">>>> </span><span class="py-keyword">print</span> class_doc.pp()
+<span class="py-output">ClassDoc [0]</span>
+<span class="py-output"> +- bases = ()</span>
+<span class="py-output"> +- variables</span>
+<span class="py-output">    +- x => VariableDoc for x [1]</span>
+<span class="py-output">       +- is_public = True</span>
+<span class="py-output">       +- name = 'x'</span>
+<span class="py-output">       +- value</span>
+<span class="py-output">          +- ValueDoc [2]</span>
+<span class="py-output">             +- pyval = 3</span></pre>
+</blockquote>
+<p>This is mainly intended to be used as a debugging and testing tool.
+The attributes that will be pretty-printed for an APIDoc object are
+determined by its class's _STR_FIELDS variable.  (But any attribute
+whose value is UNKNOWN will not be displayed.)  Attributes are listed
+in alphabetical order.</p>
+</div>
+</div>
+<table width="100%" class="navbox" cellpadding="1" cellspacing="0">
+  <tr>
+  <a class="nav" href="../index.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="../index.html">
+    Home</a></td></a>
+  <a class="nav" href="../installing.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="../installing.html">
+    Installing Epydoc</a></td></a>
+  <a class="nav" href="../using.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="../using.html">
+    Using Epydoc</a></td></a>
+  <a class="nav" href="../epytext.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="../epytext.html">
+    Epytext</a></td></a>
+  <td align="center" width="20%" class="nav">
+    
+    <A href="http://sourceforge.net/projects/epydoc"> 
+    <IMG src="../sflogo.png" 
+    width="88" height="26" border="0" alt="SourceForge"
+    align="top"/></A></td>
+    </tr>
+</table>
+</body>
+</html>
diff --git a/doc/doctest/docbuilder.html b/doc/doctest/docbuilder.html
new file mode 100644
index 0000000..8e96823
--- /dev/null
+++ b/doc/doctest/docbuilder.html
@@ -0,0 +1,436 @@
+<?xml version="1.0" encoding="ascii" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ascii" />
+<meta name="generator" content="Docutils 0.5: http://docutils.sourceforge.net/" />
+<title>Regression Testing for epydoc.docbuilder</title>
+<link rel="stylesheet" href="../custom.css" type="text/css" />
+</head>
+<body>
+<div class="document" id="regression-testing-for-epydoc-docbuilder">
+<h1 class="title">Regression Testing for epydoc.docbuilder</h1>
+
+<div class="section" id="test-function">
+<h1>Test Function</h1>
+<p>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 <tt class="docutils literal"><span class="pre">attribs</span></tt> argument specifies which attributes
+of the <cite>APIDoc</cite> s should be displayed.  The <cite>build</cite> argument gives the
+name of a variable in the module whose documentation should be built,
+instead of bilding docs for the whole module.</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">from</span> epydoc.test.util <span class="py-keyword">import</span> runbuilder</pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">from</span> epydoc.test.util <span class="py-keyword">import</span> print_warnings
+<span class="py-prompt">>>> </span>print_warnings()</pre>
+</blockquote>
+</div>
+<div class="section" id="docformat-selection">
+<h1>Docformat selection</h1>
+<p>The docstrings format can be selected using the <tt class="docutils literal"><span class="pre">__docformat__</span></tt> module
+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.</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>runbuilder(s=<span class="py-string">'''</span>
+<span class="py-more">... </span><span class="py-string">    __docformat__ = 'epytext'</span>
+<span class="py-more">... </span><span class="py-string">    class Foo:</span>
+<span class="py-more">... </span><span class="py-string">        """@ivar x: description..."""</span>
+<span class="py-more">... </span><span class="py-string">    '''</span>,
+<span class="py-more">... </span>    build=<span class="py-string">'Foo'</span>, attribs=<span class="py-string">'descr variables'</span>)
+<span class="py-output">ClassDoc for epydoc_test.Foo [0]</span>
+<span class="py-output"> +- descr = None</span>
+<span class="py-output"> +- variables</span>
+<span class="py-output">    +- x => VariableDoc for epydoc_test.Foo.x [1]</span>
+<span class="py-output">       +- descr = u'description...\n\n'</span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>runbuilder(s=<span class="py-string">'''</span>
+<span class="py-more">... </span><span class="py-string">    __docformat__ = 'plaintext'</span>
+<span class="py-more">... </span><span class="py-string">    class Foo:</span>
+<span class="py-more">... </span><span class="py-string">        """@var x: description..."""</span>
+<span class="py-more">... </span><span class="py-string">    '''</span>,
+<span class="py-more">... </span>    build=<span class="py-string">'Foo'</span>, attribs=<span class="py-string">'descr variables'</span>)
+<span class="py-output">ClassDoc for epydoc_test.Foo [0]</span>
+<span class="py-output"> +- descr = u'@var x: description...\n'</span>
+<span class="py-output"> +- variables = {}</span></pre>
+</blockquote>
+<p>Stuff from future doesn't appear as variable.</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>runbuilder(s=<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">    from __future__ import division</span>
+<span class="py-more">... </span><span class="py-string">    from pickle import dump</span>
+<span class="py-more">... </span><span class="py-string">    """</span>,
+<span class="py-more">... </span>    attribs=<span class="py-string">'variables value'</span>)
+<span class="py-output">ModuleDoc for epydoc_test [0]</span>
+<span class="py-output"> +- variables</span>
+<span class="py-output">    +- dump => VariableDoc for epydoc_test.dump [1]</span>
+<span class="py-output">       +- value</span>
+<span class="py-output">          +- ValueDoc for pickle.dump [2]</span></pre>
+</blockquote>
+</div>
+<div class="section" id="specifying-constructor-signature-in-class-docstring">
+<h1>Specifying constructor signature in class docstring</h1>
+<p>The class signature can be specified in the class docstring instead of __init__</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>runbuilder(s=<span class="py-string">'''</span>
+<span class="py-more">... </span><span class="py-string">    class Foo:</span>
+<span class="py-more">... </span><span class="py-string">        """This is the object docstring</span>
+<span class="py-more">...</span>
+<span class="py-more">... </span><span class="py-string">        @param a: init param.</span>
+<span class="py-more">... </span><span class="py-string">        @ivar a: instance var.</span>
+<span class="py-more">... </span><span class="py-string">        @type a: date</span>
+<span class="py-more">... </span><span class="py-string">        """</span>
+<span class="py-more">... </span><span class="py-string">        def __init__(self, a):</span>
+<span class="py-more">... </span><span class="py-string">            """The ctor docstring."""</span>
+<span class="py-more">... </span><span class="py-string">    '''</span>,
+<span class="py-more">... </span>    build=<span class="py-string">"Foo"</span>,
+<span class="py-more">... </span>    attribs=<span class="py-string">"variables name value "</span>
+<span class="py-more">... </span>        <span class="py-string">"posargs vararg kwarg type arg_types arg_descrs"</span>)
+<span class="py-output">ClassDoc for epydoc_test.Foo [0]</span>
+<span class="py-output"> +- variables</span>
+<span class="py-output">    +- __init__ => VariableDoc for epydoc_test.Foo.__init__ [1]</span>
+<span class="py-output">    |  +- name = '__init__'</span>
+<span class="py-output">    |  +- value</span>
+<span class="py-output">    |     +- RoutineDoc for epydoc_test.Foo.__init__ [2]</span>
+<span class="py-output">    |        +- arg_descrs = [([u'a'], ...</span>
+<span class="py-output">    |        +- arg_types = {u'a': ...</span>
+<span class="py-output">    |        +- kwarg = None</span>
+<span class="py-output">    |        +- posargs = ['self', 'a']</span>
+<span class="py-output">    |        +- vararg = None</span>
+<span class="py-output">    +- a => VariableDoc for epydoc_test.Foo.a [3]</span>
+<span class="py-output">       +- name = u'a'</span>
+<span class="py-output">       +- value = <UNKNOWN></span></pre>
+</blockquote>
+<p>Also keywords arguments can be put in the constructor</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>runbuilder(s=<span class="py-string">'''</span>
+<span class="py-more">... </span><span class="py-string">    class Foo:</span>
+<span class="py-more">... </span><span class="py-string">        """This is the object docstring</span>
+<span class="py-more">...</span>
+<span class="py-more">... </span><span class="py-string">        @keyword a: a kwarg.</span>
+<span class="py-more">... </span><span class="py-string">        @type a: str</span>
+<span class="py-more">... </span><span class="py-string">        """</span>
+<span class="py-more">... </span><span class="py-string">        def __init__(self, **kwargs):</span>
+<span class="py-more">... </span><span class="py-string">            """The ctor docstring."""</span>
+<span class="py-more">... </span><span class="py-string">    '''</span>,
+<span class="py-more">... </span>    build=<span class="py-string">"Foo"</span>,
+<span class="py-more">... </span>    attribs=<span class="py-string">"variables name value "</span>
+<span class="py-more">... </span>        <span class="py-string">"posargs vararg kwarg type arg_types arg_descrs"</span>)
+<span class="py-output">ClassDoc for epydoc_test.Foo [0]</span>
+<span class="py-output"> +- variables</span>
+<span class="py-output">    +- __init__ => VariableDoc for epydoc_test.Foo.__init__ [1]</span>
+<span class="py-output">       +- name = '__init__'</span>
+<span class="py-output">       +- value</span>
+<span class="py-output">          +- RoutineDoc for epydoc_test.Foo.__init__ [2]</span>
+<span class="py-output">             +- arg_descrs = [([u'a'], ...</span>
+<span class="py-output">             +- arg_types = {u'a': ...</span>
+<span class="py-output">             +- kwarg = 'kwargs'</span>
+<span class="py-output">             +- posargs = ['self']</span>
+<span class="py-output">             +- vararg = None</span></pre>
+</blockquote>
+<p>A missing docstring on the __init__ is not an issue.</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>runbuilder(s=<span class="py-string">'''</span>
+<span class="py-more">... </span><span class="py-string">    class Foo:</span>
+<span class="py-more">... </span><span class="py-string">        """This is the object docstring</span>
+<span class="py-more">...</span>
+<span class="py-more">... </span><span class="py-string">        @param a: a param.</span>
+<span class="py-more">... </span><span class="py-string">        @type a: str</span>
+<span class="py-more">... </span><span class="py-string">        """</span>
+<span class="py-more">... </span><span class="py-string">        def __init__(self, a):</span>
+<span class="py-more">... </span><span class="py-string">            pass</span>
+<span class="py-more">... </span><span class="py-string">    '''</span>,
+<span class="py-more">... </span>    build=<span class="py-string">"Foo"</span>,
+<span class="py-more">... </span>    attribs=<span class="py-string">"variables name value "</span>
+<span class="py-more">... </span>        <span class="py-string">"posargs vararg kwarg type arg_types arg_descrs"</span>)
+<span class="py-output">ClassDoc for epydoc_test.Foo [0]</span>
+<span class="py-output"> +- variables</span>
+<span class="py-output">    +- __init__ => VariableDoc for epydoc_test.Foo.__init__ [1]</span>
+<span class="py-output">       +- name = '__init__'</span>
+<span class="py-output">       +- value</span>
+<span class="py-output">          +- RoutineDoc for epydoc_test.Foo.__init__ [2]</span>
+<span class="py-output">             +- arg_descrs = [([u'a'], ...</span>
+<span class="py-output">             +- arg_types = {u'a': ...</span>
+<span class="py-output">             +- kwarg = None</span>
+<span class="py-output">             +- posargs = ['self', 'a']</span>
+<span class="py-output">             +- vararg = None</span></pre>
+</blockquote>
+<p>Exceptions can be put in the docstring class, and they are assigned to the
+constructor too.</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>runbuilder(s=<span class="py-string">'''</span>
+<span class="py-more">... </span><span class="py-string">    class Foo:</span>
+<span class="py-more">... </span><span class="py-string">        """Foo(x, y)</span>
+<span class="py-more">...</span>
+<span class="py-more">... </span><span class="py-string">        A class to ship rockets in outer space.</span>
+<span class="py-more">...</span>
+<span class="py-more">... </span><span class="py-string">        @param x: first param</span>
+<span class="py-more">... </span><span class="py-string">        @param y: second param</span>
+<span class="py-more">... </span><span class="py-string">        @except ValueError: frobnication error</span>
+<span class="py-more">... </span><span class="py-string">        """</span>
+<span class="py-more">... </span><span class="py-string">        def __init__(self, a, b):</span>
+<span class="py-more">... </span><span class="py-string">            """__init__ doc"""</span>
+<span class="py-more">... </span><span class="py-string">            pass</span>
+<span class="py-more">... </span><span class="py-string">    '''</span>,
+<span class="py-more">... </span>    build=<span class="py-string">"Foo"</span>,
+<span class="py-more">... </span>    attribs=<span class="py-string">"variables name value exception_descrs "</span>
+<span class="py-more">... </span>        <span class="py-string">"posargs vararg kwarg type arg_types arg_descrs docstring"</span>)
+<span class="py-output">ClassDoc for epydoc_test.Foo [0]</span>
+<span class="py-output"> +- docstring = u'A class to ship rockets in outer sp...</span>
+<span class="py-output"> +- variables</span>
+<span class="py-output">    +- __init__ => VariableDoc for epydoc_test.Foo.__init__ [1]</span>
+<span class="py-output">       +- docstring = <UNKNOWN></span>
+<span class="py-output">       +- name = '__init__'</span>
+<span class="py-output">       +- value</span>
+<span class="py-output">          +- RoutineDoc for epydoc_test.Foo.__init__ [2]</span>
+<span class="py-output">             +- arg_descrs = [([u'x'], u'first param'), ([u'y'], u...</span>
+<span class="py-output">             +- arg_types = {}</span>
+<span class="py-output">             +- docstring = u'__init__ doc'</span>
+<span class="py-output">             +- exception_descrs = [(DottedName(u'ValueError'), <epydoc....</span>
+<span class="py-output">             +- kwarg = None</span>
+<span class="py-output">             +- posargs = [u'x', u'y']</span>
+<span class="py-output">             +- vararg = None</span></pre>
+</blockquote>
+<p>Epydoc can also grok the constructor signature from the class docstring</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>runbuilder(s=<span class="py-string">'''</span>
+<span class="py-more">... </span><span class="py-string">    class Foo:</span>
+<span class="py-more">... </span><span class="py-string">        """Foo(x, y)</span>
+<span class="py-more">...</span>
+<span class="py-more">... </span><span class="py-string">        A class to ship rockets in outer space.</span>
+<span class="py-more">...</span>
+<span class="py-more">... </span><span class="py-string">        @param x: first param</span>
+<span class="py-more">... </span><span class="py-string">        @param y: second param</span>
+<span class="py-more">... </span><span class="py-string">        """</span>
+<span class="py-more">... </span><span class="py-string">        def __init__(self, a, b):</span>
+<span class="py-more">... </span><span class="py-string">            """__init__ doc"""</span>
+<span class="py-more">... </span><span class="py-string">            pass</span>
+<span class="py-more">... </span><span class="py-string">    '''</span>,
+<span class="py-more">... </span>    build=<span class="py-string">"Foo"</span>,
+<span class="py-more">... </span>    attribs=<span class="py-string">"variables name value "</span>
+<span class="py-more">... </span>        <span class="py-string">"posargs vararg kwarg type arg_types arg_descrs docstring"</span>)
+<span class="py-output">ClassDoc for epydoc_test.Foo [0]</span>
+<span class="py-output"> +- docstring = u'A class to ship rockets ...</span>
+<span class="py-output"> +- variables</span>
+<span class="py-output">    +- __init__ => VariableDoc for epydoc_test.Foo.__init__ [1]</span>
+<span class="py-output">       +- docstring = <UNKNOWN></span>
+<span class="py-output">       +- name = '__init__'</span>
+<span class="py-output">       +- value</span>
+<span class="py-output">          +- RoutineDoc for epydoc_test.Foo.__init__ [2]</span>
+<span class="py-output">             +- arg_descrs = [([u'x'], ...</span>
+<span class="py-output">             +- arg_types = {}</span>
+<span class="py-output">             +- docstring = u'__init__ doc'</span>
+<span class="py-output">             +- kwarg = None</span>
+<span class="py-output">             +- posargs = [u'x', u'y']</span>
+<span class="py-output">             +- vararg = None</span></pre>
+</blockquote>
+<p>A type can apply to both a param and a variable</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>runbuilder(s=<span class="py-string">'''</span>
+<span class="py-more">... </span><span class="py-string">    class Foo:</span>
+<span class="py-more">... </span><span class="py-string">        """This is the object docstring</span>
+<span class="py-more">...</span>
+<span class="py-more">... </span><span class="py-string">        @param a: init param.</span>
+<span class="py-more">... </span><span class="py-string">        @ivar a: instance var.</span>
+<span class="py-more">... </span><span class="py-string">        @type a: date</span>
+<span class="py-more">... </span><span class="py-string">        """</span>
+<span class="py-more">... </span><span class="py-string">        def __init__(self, a):</span>
+<span class="py-more">... </span><span class="py-string">            pass</span>
+<span class="py-more">... </span><span class="py-string">    '''</span>,
+<span class="py-more">... </span>    build=<span class="py-string">"Foo"</span>,
+<span class="py-more">... </span>    attribs=<span class="py-string">"variables name value "</span>
+<span class="py-more">... </span>        <span class="py-string">"posargs vararg kwarg type_descr arg_types arg_descrs"</span>)
+<span class="py-output">ClassDoc for epydoc_test.Foo [0]</span>
+<span class="py-output"> +- variables</span>
+<span class="py-output">    +- __init__ => VariableDoc for epydoc_test.Foo.__init__ [1]</span>
+<span class="py-output">    |  +- name = '__init__'</span>
+<span class="py-output">    |  +- type_descr = None</span>
+<span class="py-output">    |  +- value</span>
+<span class="py-output">    |     +- RoutineDoc for epydoc_test.Foo.__init__ [2]</span>
+<span class="py-output">    |        +- arg_descrs = [([u'a'], u'init param.')]</span>
+<span class="py-output">    |        +- arg_types = {u'a': u'date'}</span>
+<span class="py-output">    |        +- kwarg = None</span>
+<span class="py-output">    |        +- posargs = ['self', 'a']</span>
+<span class="py-output">    |        +- vararg = None</span>
+<span class="py-output">    +- a => VariableDoc for epydoc_test.Foo.a [3]</span>
+<span class="py-output">       +- name = u'a'</span>
+<span class="py-output">       +- type_descr = u'date\n\n'</span>
+<span class="py-output">       +- value = <UNKNOWN></span></pre>
+</blockquote>
+<p>But there can also be two different types</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>runbuilder(s=<span class="py-string">'''</span>
+<span class="py-more">... </span><span class="py-string">    class Foo:</span>
+<span class="py-more">... </span><span class="py-string">        """This is the object docstring</span>
+<span class="py-more">...</span>
+<span class="py-more">... </span><span class="py-string">        @param a: init param.</span>
+<span class="py-more">... </span><span class="py-string">        @type a: string</span>
+<span class="py-more">... </span><span class="py-string">        @ivar a: instance var.</span>
+<span class="py-more">... </span><span class="py-string">        @type a: date</span>
+<span class="py-more">... </span><span class="py-string">        """</span>
+<span class="py-more">... </span><span class="py-string">        def __init__(self, a):</span>
+<span class="py-more">... </span><span class="py-string">            pass</span>
+<span class="py-more">... </span><span class="py-string">    '''</span>,
+<span class="py-more">... </span>    build=<span class="py-string">"Foo"</span>,
+<span class="py-more">... </span>    attribs=<span class="py-string">"variables name value "</span>
+<span class="py-more">... </span>        <span class="py-string">"posargs vararg kwarg type_descr arg_types arg_descrs"</span>)
+<span class="py-output">ClassDoc for epydoc_test.Foo [0]</span>
+<span class="py-output"> +- variables</span>
+<span class="py-output">    +- __init__ => VariableDoc for epydoc_test.Foo.__init__ [1]</span>
+<span class="py-output">    |  +- name = '__init__'</span>
+<span class="py-output">    |  +- type_descr = None</span>
+<span class="py-output">    |  +- value</span>
+<span class="py-output">    |     +- RoutineDoc for epydoc_test.Foo.__init__ [2]</span>
+<span class="py-output">    |        +- arg_descrs = [([u'a'], u'init param.')]</span>
+<span class="py-output">    |        +- arg_types = {u'a': u'string'}</span>
+<span class="py-output">    |        +- kwarg = None</span>
+<span class="py-output">    |        +- posargs = ['self', 'a']</span>
+<span class="py-output">    |        +- vararg = None</span>
+<span class="py-output">    +- a => VariableDoc for epydoc_test.Foo.a [3]</span>
+<span class="py-output">       +- name = u'a'</span>
+<span class="py-output">       +- type_descr = u'date\n\n'</span>
+<span class="py-output">       +- value = <UNKNOWN></span></pre>
+</blockquote>
+</div>
+<div class="section" id="value-representation">
+<h1>Value Representation</h1>
+<p>Currently, many variable reprs use the introspected form where it
+would really be better to use the parsed version.  See SF bug
+#1653577.  We intend to improve on this.  This test documents the
+current behavior; but should be replaced when we change the behavior.</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">from</span> epydoc.test.util <span class="py-keyword">import</span> buildvaluedoc
+<span class="py-prompt">>>> </span><span class="py-keyword">from</span> epydoc.compat <span class="py-keyword">import</span> *
+<span class="py-prompt">>>> </span><span class="py-keyword">def</span> <span class="py-defname">print_py_reprs</span>(s):
+<span class="py-more">... </span>    value_doc = buildvaluedoc(s)
+<span class="py-more">... </span>    <span class="py-keyword">print</span> <span class="py-string">'Var  Score  Repr\n'</span>+<span class="py-string">'-'</span>*50
+<span class="py-more">... </span>    <span class="py-keyword">for</span> (name, var_doc) <span class="py-keyword">in</span> sorted(value_doc.variables.items()):
+<span class="py-more">... </span>        <span class="py-keyword">if</span> len(name) > 1: continue
+<span class="py-more">... </span>        var_repr =  var_doc.value.pyval_repr()
+<span class="py-more">... </span>        <span class="py-keyword">print</span> <span class="py-string">" %s   %4s   %r"</span> % (name, var_repr.score,
+<span class="py-more">... </span>                                 var_repr.to_plaintext(None))</pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>print_py_reprs(<span class="py-string">'''</span>
+<span class="py-more">... </span><span class="py-string">    import re</span>
+<span class="py-more">... </span><span class="py-string">    class Foo: pass</span>
+<span class="py-more">... </span><span class="py-string">    class Bar:</span>
+<span class="py-more">... </span><span class="py-string">        def __repr__(self): return "<specialized repr>"</span>
+<span class="py-more">... </span><span class="py-string">    class Baz:</span>
+<span class="py-more">... </span><span class="py-string">        def __repr__(self): raise ValueError()</span>
+<span class="py-more">... </span><span class="py-string">    a = Foo()                  # pyval score < 0; use parse repr.</span>
+<span class="py-more">... </span><span class="py-string">    b = Bar()                  # pyval score > 0; use pyval repr.</span>
+<span class="py-more">... </span><span class="py-string">    c = Baz()                  # pyval score < 0; use parse repr.</span>
+<span class="py-more">... </span><span class="py-string">    d = [1, 2, 3]              # pyval score > 0; use pyval repr.</span>
+<span class="py-more">... </span><span class="py-string">    d.append(99)</span>
+<span class="py-more">... </span><span class="py-string">    e = 3+5                    # pyval score > 0; use pyval repr.</span>
+<span class="py-more">... </span><span class="py-string">    f = re.compile('hi+')      # pyval score > 0; use pyval repr.</span>
+<span class="py-more">... </span><span class="py-string">    globals()['h'] = Baz()     # pyval score < 0; can't be parsed.</span>
+<span class="py-more">... </span><span class="py-string">    i = [Foo(), 1, 2]          # pyval score < 0; use parse repr.</span>
+<span class="py-more">... </span><span class="py-string">    j = [Foo(), 1, 2, 3]       # pyval score = 0; use pyval repr.</span>
+<span class="py-more">... </span><span class="py-string">    '''</span>)
+<span class="py-output">Var  Score  Repr</span>
+<span class="py-output">--------------------------------------------------</span>
+<span class="py-output"> a      0   u'Foo()'</span>
+<span class="py-output"> b      1   u'<specialized repr>'</span>
+<span class="py-output"> c      0   u'Baz()'</span>
+<span class="py-output"> d      5   u'[1, 2, 3, 99]'</span>
+<span class="py-output"> e      1   u'8'</span>
+<span class="py-output"> f      1   u"re.compile(r'hi+')"</span>
+<span class="py-output"> h    -99   u'??'</span>
+<span class="py-output"> i      0   u'[Foo(), 1, 2]'</span>
+<span class="py-output"> j      0   u'[<epydoc_test.Foo instance at ...>, 1, 2, 3]'</span></pre>
+</blockquote>
+</div>
+<div class="section" id="merging-is-imported">
+<h1>Merging is_imported</h1>
+<p>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, <tt class="docutils literal"><span class="pre">x</span></tt> should
+have <cite>is_imported=True</cite>.  But if we can't tell from introspection,
+then use parse info -- so <tt class="docutils literal"><span class="pre">y</span></tt> should be imported, but <tt class="docutils literal"><span class="pre">z</span></tt> should not.</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">import</span> epydoc.docintrospecter
+<span class="py-prompt">>>> </span>epydoc.docintrospecter.clear_cache()
+<span class="py-prompt">>>> </span>runbuilder(s=<span class="py-string">'''</span>
+<span class="py-more">... </span><span class="py-string">    import cStringIO</span>
+<span class="py-more">... </span><span class="py-string">    from re import MULTILINE as y</span>
+<span class="py-more">... </span><span class="py-string">    x = cStringIO</span>
+<span class="py-more">... </span><span class="py-string">    z = y</span>
+<span class="py-more">... </span><span class="py-string">    '''</span>, attribs=(<span class="py-string">"variables is_imported "</span>))
+<span class="py-output">ModuleDoc for epydoc_test [0]</span>
+<span class="py-output"> +- variables</span>
+<span class="py-output">    +- cStringIO => VariableDoc for epydoc_test.cStringIO [1]</span>
+<span class="py-output">    |  +- is_imported = True</span>
+<span class="py-output">    +- x => VariableDoc for epydoc_test.x [2]</span>
+<span class="py-output">    |  +- is_imported = True</span>
+<span class="py-output">    +- y => VariableDoc for epydoc_test.y [3]</span>
+<span class="py-output">    |  +- is_imported = True</span>
+<span class="py-output">    +- z => VariableDoc for epydoc_test.z [4]</span>
+<span class="py-output">       +- is_imported = False</span></pre>
+</blockquote>
+</div>
+<div class="section" id="merging-the-right-value">
+<h1>Merging the right value</h1>
+<p>Test for the SF bug #1678046. Check that, in case of mismatch between parsed
+and introspected versions of a value, other values don't get damaged.</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>runbuilder(s=<span class="py-string">'''</span>
+<span class="py-more">... </span><span class="py-string">    foo = None</span>
+<span class="py-more">... </span><span class="py-string">    bar = None</span>
+<span class="py-more">...</span>
+<span class="py-more">... </span><span class="py-string">    def mangle():</span>
+<span class="py-more">... </span><span class="py-string">        global foo</span>
+<span class="py-more">... </span><span class="py-string">        foo = 'foo'</span>
+<span class="py-more">...</span>
+<span class="py-more">... </span><span class="py-string">    mangle()</span>
+<span class="py-more">... </span><span class="py-string">'''</span>,
+<span class="py-more">... </span>build=<span class="py-string">"bar"</span>,
+<span class="py-more">... </span>attribs=<span class="py-string">"pyval"</span>)
+<span class="py-output">GenericValueDoc [0]</span>
+<span class="py-output"> +- pyval = None</span></pre>
+</blockquote>
+</div>
+</div>
+<table width="100%" class="navbox" cellpadding="1" cellspacing="0">
+  <tr>
+  <a class="nav" href="../index.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="../index.html">
+    Home</a></td></a>
+  <a class="nav" href="../installing.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="../installing.html">
+    Installing Epydoc</a></td></a>
+  <a class="nav" href="../using.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="../using.html">
+    Using Epydoc</a></td></a>
+  <a class="nav" href="../epytext.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="../epytext.html">
+    Epytext</a></td></a>
+  <td align="center" width="20%" class="nav">
+    
+    <A href="http://sourceforge.net/projects/epydoc"> 
+    <IMG src="../sflogo.png" 
+    width="88" height="26" border="0" alt="SourceForge"
+    align="top"/></A></td>
+    </tr>
+</table>
+</body>
+</html>
diff --git a/doc/doctest/docintrospecter.html b/doc/doctest/docintrospecter.html
new file mode 100644
index 0000000..d8a09ee
--- /dev/null
+++ b/doc/doctest/docintrospecter.html
@@ -0,0 +1,691 @@
+<?xml version="1.0" encoding="ascii" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ascii" />
+<meta name="generator" content="Docutils 0.5: http://docutils.sourceforge.net/" />
+<title>Regression Testing for epydoc.docintrospecter</title>
+<link rel="stylesheet" href="../custom.css" type="text/css" />
+</head>
+<body>
+<div class="document" id="regression-testing-for-epydoc-docintrospecter">
+<h1 class="title">Regression Testing for epydoc.docintrospecter</h1>
+
+<p>The <cite>epydoc.docintrospecter</cite> module is used to extract API documentation
+by introspecting Python objects directy.  Its primary interface is
+<cite>docintrospecter.introspect_docs()</cite>, which takes a Python object, and returns a
+<cite>ValueDoc</cite> describing that value.</p>
+<div class="section" id="test-function">
+<h1>Test Function</h1>
+<p>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 <cite>docintrospecter.introspect_docs</cite> to introspect it, and pretty prints the resulting
+<cite>ModuleDoc</cite> object.  The <tt class="docutils literal"><span class="pre">attribs</span></tt> argument specifies which attributes
+of the <cite>APIDoc`s should be displayed.  The ``introspect`</cite> argument gives the
+name of a variable in the module whose value should be introspected,
+instead of introspecting the whole module.</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">from</span> epydoc.test.util <span class="py-keyword">import</span> runintrospecter</pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">from</span> epydoc.test.util <span class="py-keyword">import</span> print_warnings
+<span class="py-prompt">>>> </span>print_warnings()</pre>
+</blockquote>
+</div>
+<div class="section" id="module-variables">
+<h1>Module Variables</h1>
+<p>Each variable defined by a module is encoded as a <cite>VariableDoc</cite>, whose
+value contains information about the variable's value.  This includes
+any classes, functions, imported variables, and anything else that has
+an entry in a module's dictionary.</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>runintrospecter(s=<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">    x = 12</span>
+<span class="py-more">... </span><span class="py-string">    def f(x): pass</span>
+<span class="py-more">... </span><span class="py-string">    class A: pass</span>
+<span class="py-more">... </span><span class="py-string">    from os import listdir, mkdir</span>
+<span class="py-more">... </span><span class="py-string">    exec("y = 22")</span>
+<span class="py-more">... </span><span class="py-string">    """</span>, attribs=<span class="py-string">"variables"</span>)
+<span class="py-output">ModuleDoc for epydoc_test [0]</span>
+<span class="py-output"> +- variables</span>
+<span class="py-output">    +- A => VariableDoc for epydoc_test.A [1]</span>
+<span class="py-output">    +- f => VariableDoc for epydoc_test.f [2]</span>
+<span class="py-output">    +- listdir => VariableDoc for epydoc_test.listdir [3]</span>
+<span class="py-output">    +- mkdir => VariableDoc for epydoc_test.mkdir [4]</span>
+<span class="py-output">    +- x => VariableDoc for epydoc_test.x [5]</span>
+<span class="py-output">    +- y => VariableDoc for epydoc_test.y [6]</span></pre>
+</blockquote>
+<p>If two variables share the same value, then their <cite>VariableDoc</cite>s will
+share a <cite>ValueDoc</cite>:</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>runintrospecter(s=<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">    def f(x): pass</span>
+<span class="py-more">... </span><span class="py-string">    alias = f</span>
+<span class="py-more">... </span><span class="py-string">    """</span>, attribs=<span class="py-string">"variables value"</span>)
+<span class="py-output">ModuleDoc for epydoc_test [0]</span>
+<span class="py-output"> +- variables</span>
+<span class="py-output">    +- alias => VariableDoc for epydoc_test.alias [1]</span>
+<span class="py-output">    |  +- value</span>
+<span class="py-output">    |     +- RoutineDoc for epydoc_test.f [2]</span>
+<span class="py-output">    +- f => VariableDoc for epydoc_test.f [3]</span>
+<span class="py-output">       +- value</span>
+<span class="py-output">          +- RoutineDoc for epydoc_test.f [2] (defined above)</span></pre>
+</blockquote>
+<p>Importing a dotted name creates a variable for the top-level component
+of the dotted name:</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>runintrospecter(s=<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">    import os.path</span>
+<span class="py-more">... </span><span class="py-string">    """</span>, attribs=<span class="py-string">"variables"</span>)
+<span class="py-output">ModuleDoc for epydoc_test [0]</span>
+<span class="py-output"> +- variables</span>
+<span class="py-output">    +- os => VariableDoc for epydoc_test.os [1]</span></pre>
+</blockquote>
+<p>Since variables are extracted by introspection, only those variables that
+exist when the module finishes running will be seen.  (This is
+potentially different from <cite>epydoc.docparser</cite>, which has to guess
+about which code paths are taken).</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>runintrospecter(s=<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">    x = 22</span>
+<span class="py-more">... </span><span class="py-string">    if x<13: y = 32</span>
+<span class="py-more">... </span><span class="py-string">    else: z = 14</span>
+<span class="py-more">... </span><span class="py-string">    del x</span>
+<span class="py-more">... </span><span class="py-string">    """</span>, attribs=<span class="py-string">"variables"</span>)
+<span class="py-output">ModuleDoc for epydoc_test [0]</span>
+<span class="py-output"> +- variables</span>
+<span class="py-output">    +- z => VariableDoc for epydoc_test.z [1]</span></pre>
+</blockquote>
+<p>Unlike the parser, arbitrary computed values can be extracted:</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>runintrospecter(s=<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">    def f(x):</span>
+<span class="py-more">... </span><span class="py-string">        if x>100: return x</span>
+<span class="py-more">... </span><span class="py-string">        else: return f((x+2)*8/7)</span>
+<span class="py-more">... </span><span class="py-string">    x = f(12)</span>
+<span class="py-more">... </span><span class="py-string">    """</span>, attribs=<span class="py-string">"variables value pyval"</span>)
+<span class="py-output">ModuleDoc for epydoc_test [0]</span>
+<span class="py-output"> +- pyval = <module 'epydoc_test' from ...</span>
+<span class="py-output"> +- variables</span>
+<span class="py-output">    +- f => VariableDoc for epydoc_test.f [1]</span>
+<span class="py-output">    |  +- value</span>
+<span class="py-output">    |     +- RoutineDoc for epydoc_test.f [2]</span>
+<span class="py-output">    |        +- pyval = <function f at ...></span>
+<span class="py-output">    +- x => VariableDoc for epydoc_test.x [3]</span>
+<span class="py-output">       +- value</span>
+<span class="py-output">          +- GenericValueDoc [4]</span>
+<span class="py-output">             +- pyval = 112</span></pre>
+</blockquote>
+<p>The introspecter is unable to determine when variables are aliases for
+other variables, so it always sets <cite>is_alias</cite> to <cite>UNKNOWN</cite>:</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>runintrospecter(s=<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">    x = 22</span>
+<span class="py-more">... </span><span class="py-string">    y = x</span>
+<span class="py-more">... </span><span class="py-string">    """</span>, attribs=<span class="py-string">"variables is_alias"</span>)
+<span class="py-output">ModuleDoc for epydoc_test [0]</span>
+<span class="py-output"> +- variables</span>
+<span class="py-output">    +- x => VariableDoc for epydoc_test.x [1]</span>
+<span class="py-output">    |  +- is_alias = <UNKNOWN></span>
+<span class="py-output">    +- y => VariableDoc for epydoc_test.y [2]</span>
+<span class="py-output">       +- is_alias = <UNKNOWN></span></pre>
+</blockquote>
+<p>Similarly, the introspecter can't always tell if a variable was imported
+or not, so it sets <cite>is_imported</cite> to <cite>UNKNOWN</cite> when it can't decide:</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>runintrospecter(s=<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">    from pickle import dump       # definitely imported</span>
+<span class="py-more">... </span><span class="py-string">    from pickle import Pickler    # definitely imported</span>
+<span class="py-more">... </span><span class="py-string">    from pickle import HIGHEST_PROTOCOL   # might be imported</span>
+<span class="py-more">... </span><span class="py-string">    class A: pass              # definitely not imported</span>
+<span class="py-more">... </span><span class="py-string">    def f(x): pass             # definitely not imported</span>
+<span class="py-more">... </span><span class="py-string">    """</span>, attribs=<span class="py-string">"variables is_imported"</span>)
+<span class="py-output">ModuleDoc for epydoc_test [0]</span>
+<span class="py-output"> +- variables</span>
+<span class="py-output">    +- A => VariableDoc for epydoc_test.A [1]</span>
+<span class="py-output">    |  +- is_imported = False</span>
+<span class="py-output">    +- HIGHEST_PROTOCOL => VariableDoc for epydoc_test.HIGHEST_PROTOCOL [2]</span>
+<span class="py-output">    |  +- is_imported = <UNKNOWN></span>
+<span class="py-output">    +- Pickler => VariableDoc for epydoc_test.Pickler [3]</span>
+<span class="py-output">    |  +- is_imported = True</span>
+<span class="py-output">    +- dump => VariableDoc for epydoc_test.dump [4]</span>
+<span class="py-output">    |  +- is_imported = True</span>
+<span class="py-output">    +- f => VariableDoc for epydoc_test.f [5]</span>
+<span class="py-output">       +- is_imported = False</span></pre>
+</blockquote>
+</div>
+<div class="section" id="variable-docstrings">
+<h1>Variable Docstrings</h1>
+<p>The <cite>docintrospecter</cite> is unable extract docstrings for variables.  These
+docstrings can only be detected if the <cite>docparser</cite> is used.</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>runintrospecter(s=<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">    x = 12</span>
+<span class="py-more">... </span><span class="py-string">    '''docstring for x.</span>
+<span class="py-more">... </span><span class="py-string">    (can be multiline)'''"""</span>,
+<span class="py-more">... </span>    attribs=<span class="py-string">"variables name docstring"</span>)
+<span class="py-output">ModuleDoc for epydoc_test [0]</span>
+<span class="py-output"> +- docstring = None</span>
+<span class="py-output"> +- variables</span>
+<span class="py-output">    +- x => VariableDoc for epydoc_test.x [1]</span>
+<span class="py-output">       +- docstring = <UNKNOWN></span>
+<span class="py-output">       +- name = 'x'</span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>runintrospecter(s=<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">    x = 12 #: comment docstring for x"""</span>,
+<span class="py-more">... </span>    attribs=<span class="py-string">"variables name docstring"</span>)
+<span class="py-output">ModuleDoc for epydoc_test [0]</span>
+<span class="py-output"> +- docstring = None</span>
+<span class="py-output"> +- variables</span>
+<span class="py-output">    +- x => VariableDoc for epydoc_test.x [1]</span>
+<span class="py-output">       +- docstring = <UNKNOWN></span>
+<span class="py-output">       +- name = 'x'</span></pre>
+</blockquote>
+</div>
+<div class="section" id="functions">
+<h1>Functions</h1>
+<p>Introspected functions are represented by <cite>RoutineDoc</cite> objects:</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>runintrospecter(s=<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">    def f(x):</span>
+<span class="py-more">... </span><span class="py-string">        'docstring for f'</span>
+<span class="py-more">... </span><span class="py-string">        print 'inside f'</span>
+<span class="py-more">... </span><span class="py-string">    """</span>, introspect=<span class="py-string">"f"</span>, exclude=<span class="py-string">'defining_module'</span>)
+<span class="py-output">RoutineDoc for epydoc_test.f [0]</span>
+<span class="py-output"> +- canonical_name = DottedName('epydoc_test', 'f')</span>
+<span class="py-output"> +- docs_extracted_by = 'introspecter'</span>
+<span class="py-output"> +- docstring = u'docstring for f'</span>
+<span class="py-output"> +- kwarg = None</span>
+<span class="py-output"> +- lineno = 2</span>
+<span class="py-output"> +- posarg_defaults = [None]</span>
+<span class="py-output"> +- posargs = ['x']</span>
+<span class="py-output"> +- pyval = <function f at ...></span>
+<span class="py-output"> +- vararg = None</span></pre>
+</blockquote>
+<p>The function's arguments are described by the properties <tt class="docutils literal"><span class="pre">posargs</span></tt>,
+<tt class="docutils literal"><span class="pre">posarg_defaults</span></tt>, <tt class="docutils literal"><span class="pre">kwarg</span></tt>, and <tt class="docutils literal"><span class="pre">vararg</span></tt>.  <tt class="docutils literal"><span class="pre">posargs</span></tt> is a list of
+argument names (or nested tuples of names, for tuple-unpacking args).
+<tt class="docutils literal"><span class="pre">posarg_defaults</span></tt> is a list of <cite>ValueDoc</cite>s for default values,
+corresponding 1:1 with <tt class="docutils literal"><span class="pre">posargs</span></tt>.  <tt class="docutils literal"><span class="pre">posarg_defaults</span></tt> is None for
+arguments with no default value.  <tt class="docutils literal"><span class="pre">vararg</span></tt> and <tt class="docutils literal"><span class="pre">kwarg</span></tt> are the names
+of the variable argument and keyword argument, respectively:</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>runintrospecter(s=<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">    def f(x, y=22, z=(1,), *v, **kw):</span>
+<span class="py-more">... </span><span class="py-string">        'docstring for f'</span>
+<span class="py-more">... </span><span class="py-string">        print 'inside f'</span>
+<span class="py-more">... </span><span class="py-string">    """</span>, introspect=<span class="py-string">"f"</span>, exclude=<span class="py-string">'defining_module'</span>)
+<span class="py-output">RoutineDoc for epydoc_test.f [0]</span>
+<span class="py-output"> +- canonical_name = DottedName('epydoc_test', 'f')</span>
+<span class="py-output"> +- docs_extracted_by = 'introspecter'</span>
+<span class="py-output"> +- docstring = u'docstring for f'</span>
+<span class="py-output"> +- kwarg = 'kw'</span>
+<span class="py-output"> +- lineno = 2</span>
+<span class="py-output"> +- posarg_defaults = [None, <GenericValueDoc 22>, <Generic...</span>
+<span class="py-output"> +- posargs = ['x', 'y', 'z']</span>
+<span class="py-output"> +- pyval = <function f at ...></span>
+<span class="py-output"> +- vararg = 'v'</span></pre>
+</blockquote>
+<p>Tuple arguments are encoded as a single ArgDoc with a complex name:</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>runintrospecter(s=<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">    def f( (x, (y,z)) ): pass"""</span>,
+<span class="py-more">... </span>    attribs=<span class="py-string">'variables value posargs posarg_defaults vararg kwarg'</span>)
+<span class="py-output">ModuleDoc for epydoc_test [0]</span>
+<span class="py-output"> +- variables</span>
+<span class="py-output">    +- f => VariableDoc for epydoc_test.f [1]</span>
+<span class="py-output">       +- value</span>
+<span class="py-output">          +- RoutineDoc for epydoc_test.f [2]</span>
+<span class="py-output">             +- kwarg = None</span>
+<span class="py-output">             +- posarg_defaults = [None]</span>
+<span class="py-output">             +- posargs = [['x', ['y', 'z']]]</span>
+<span class="py-output">             +- vararg = None</span></pre>
+</blockquote>
+</div>
+<div class="section" id="methods">
+<h1>Methods</h1>
+<p>Note that the first argument (self) is not listed in the description
+of g(), since it's a bound
+instance method:</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>runintrospecter(s=<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">    class A:</span>
+<span class="py-more">... </span><span class="py-string">        def f(self, x): 'docstring'</span>
+<span class="py-more">... </span><span class="py-string">    g=A().f</span>
+<span class="py-more">... </span><span class="py-string">    """</span>, introspect=<span class="py-string">"g"</span>, exclude=<span class="py-string">'defining_module'</span>)
+<span class="py-output">RoutineDoc [0]</span>
+<span class="py-output"> +- docs_extracted_by = 'introspecter'</span>
+<span class="py-output"> +- docstring = u'docstring'</span>
+<span class="py-output"> +- kwarg = None</span>
+<span class="py-output"> +- lineno = 3</span>
+<span class="py-output"> +- posarg_defaults = [None]</span>
+<span class="py-output"> +- posargs = ['x']</span>
+<span class="py-output"> +- pyval = <bound method A.f of <epydoc_test.A i...</span>
+<span class="py-output"> +- vararg = None</span></pre>
+</blockquote>
+</div>
+<div class="section" id="decorators-wrapper-assignments">
+<h1>Decorators & Wrapper Assignments</h1>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>runintrospecter( <span class="py-comment"># doctest: +PYTHON2.4</span>
+<span class="py-more">... </span>    s=<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">    @classmethod</span>
+<span class="py-more">... </span><span class="py-string">    def f(cls, x): 'docstring for f'</span>
+<span class="py-more">... </span><span class="py-string">    """</span>, introspect=<span class="py-string">"f"</span>)
+<span class="py-output">ClassMethodDoc [0]</span>
+<span class="py-output"> +- docs_extracted_by = 'introspecter'</span>
+<span class="py-output"> +- docstring = u'docstring for f'</span>
+<span class="py-output"> +- kwarg = None</span>
+<span class="py-output"> +- lineno = 2</span>
+<span class="py-output"> +- posarg_defaults = [None, None]</span>
+<span class="py-output"> +- posargs = ['cls', 'x']</span>
+<span class="py-output"> +- pyval = <classmethod object at ...></span>
+<span class="py-output"> +- vararg = None</span></pre>
+</blockquote>
+</div>
+<div class="section" id="classes">
+<h1>Classes</h1>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>runintrospecter(s=<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">    class A:</span>
+<span class="py-more">... </span><span class="py-string">        "no bases"</span>
+<span class="py-more">... </span><span class="py-string">        class Nested: "nested class"</span>
+<span class="py-more">... </span><span class="py-string">    class B(A): "single base"</span>
+<span class="py-more">... </span><span class="py-string">    class C(A,B): "multiple bases"</span>
+<span class="py-more">... </span><span class="py-string">    class D( ((A)) ): "extra parens around base"</span>
+<span class="py-more">... </span><span class="py-string">    class E(A.Nested): "dotted name"</span>
+<span class="py-more">... </span><span class="py-string">    class F(((A).Nested)): "parens with dotted name"</span>
+<span class="py-more">... </span><span class="py-string">    class Z(B.__bases__[0]): "calculated base" # not handled!</span>
+<span class="py-more">... </span><span class="py-string">    """</span>,
+<span class="py-more">... </span>    attribs=<span class="py-string">'variables value bases docstring'</span>)
+<span class="py-output">ModuleDoc for epydoc_test [0]</span>
+<span class="py-output"> +- docstring = None</span>
+<span class="py-output"> +- variables</span>
+<span class="py-output">    +- A => VariableDoc for epydoc_test.A [1]</span>
+<span class="py-output">    |  +- docstring = <UNKNOWN></span>
+<span class="py-output">    |  +- value</span>
+<span class="py-output">    |     +- ClassDoc for epydoc_test.A [2]</span>
+<span class="py-output">    |        +- bases = []</span>
+<span class="py-output">    |        +- docstring = u'no bases'</span>
+<span class="py-output">    |        +- variables</span>
+<span class="py-output">    |           +- Nested => VariableDoc for epydoc_test.A.Nested [3]</span>
+<span class="py-output">    |              +- docstring = <UNKNOWN></span>
+<span class="py-output">    |              +- value</span>
+<span class="py-output">    |                 +- ClassDoc [4]</span>
+<span class="py-output">    |                    +- bases = []</span>
+<span class="py-output">    |                    +- docstring = u'nested class'</span>
+<span class="py-output">    |                    +- variables = {}</span>
+<span class="py-output">    +- B => VariableDoc for epydoc_test.B [5]</span>
+<span class="py-output">    |  +- docstring = <UNKNOWN></span>
+<span class="py-output">    |  +- value</span>
+<span class="py-output">    |     +- ClassDoc for epydoc_test.B [6]</span>
+<span class="py-output">    |        +- bases</span>
+<span class="py-output">    |        |  +- ClassDoc for epydoc_test.A [2] (defined above)</span>
+<span class="py-output">    |        +- docstring = u'single base'</span>
+<span class="py-output">    |        +- variables = {}</span>
+<span class="py-output">    +- C => VariableDoc for epydoc_test.C [7]</span>
+<span class="py-output">    |  +- docstring = <UNKNOWN></span>
+<span class="py-output">    |  +- value</span>
+<span class="py-output">    |     +- ClassDoc for epydoc_test.C [8]</span>
+<span class="py-output">    |        +- bases</span>
+<span class="py-output">    |        |  +- ClassDoc for epydoc_test.A [2] (defined above)</span>
+<span class="py-output">    |        |  +- ClassDoc for epydoc_test.B [6] (defined above)</span>
+<span class="py-output">    |        +- docstring = u'multiple bases'</span>
+<span class="py-output">    |        +- variables = {}</span>
+<span class="py-output">    +- D => VariableDoc for epydoc_test.D [9]</span>
+<span class="py-output">    |  +- docstring = <UNKNOWN></span>
+<span class="py-output">    |  +- value</span>
+<span class="py-output">    |     +- ClassDoc for epydoc_test.D [10]</span>
+<span class="py-output">    |        +- bases</span>
+<span class="py-output">    |        |  +- ClassDoc for epydoc_test.A [2] (defined above)</span>
+<span class="py-output">    |        +- docstring = u'extra parens around base'</span>
+<span class="py-output">    |        +- variables = {}</span>
+<span class="py-output">    +- E => VariableDoc for epydoc_test.E [11]</span>
+<span class="py-output">    |  +- docstring = <UNKNOWN></span>
+<span class="py-output">    |  +- value</span>
+<span class="py-output">    |     +- ClassDoc for epydoc_test.E [12]</span>
+<span class="py-output">    |        +- bases</span>
+<span class="py-output">    |        |  +- ClassDoc [4] (defined above)</span>
+<span class="py-output">    |        +- docstring = u'dotted name'</span>
+<span class="py-output">    |        +- variables = {}</span>
+<span class="py-output">    +- F => VariableDoc for epydoc_test.F [13]</span>
+<span class="py-output">    |  +- docstring = <UNKNOWN></span>
+<span class="py-output">    |  +- value</span>
+<span class="py-output">    |     +- ClassDoc for epydoc_test.F [14]</span>
+<span class="py-output">    |        +- bases</span>
+<span class="py-output">    |        |  +- ClassDoc [4] (defined above)</span>
+<span class="py-output">    |        +- docstring = u'parens with dotted name'</span>
+<span class="py-output">    |        +- variables = {}</span>
+<span class="py-output">    +- Z => VariableDoc for epydoc_test.Z [15]</span>
+<span class="py-output">       +- docstring = <UNKNOWN></span>
+<span class="py-output">       +- value</span>
+<span class="py-output">          +- ClassDoc for epydoc_test.Z [16]</span>
+<span class="py-output">             +- bases</span>
+<span class="py-output">             |  +- ClassDoc for epydoc_test.A [2] (defined above)</span>
+<span class="py-output">             +- docstring = u'calculated base'</span>
+<span class="py-output">             +- variables = {}</span></pre>
+</blockquote>
+<p>Some class variable have a special meaning. The <tt class="docutils literal"><span class="pre">__slots__</span></tt> variable isn't
+very useful and should be discarded.</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>runintrospecter(s=<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">    class Foo:</span>
+<span class="py-more">... </span><span class="py-string">        __slots__ = ['bar']</span>
+<span class="py-more">... </span><span class="py-string">        def __init__(self):</span>
+<span class="py-more">... </span><span class="py-string">            self.bar = 0</span>
+<span class="py-more">... </span><span class="py-string">    """</span>,
+<span class="py-more">... </span>    attribs=<span class="py-string">"variables name value"</span>)
+<span class="py-output">ModuleDoc for epydoc_test [0]</span>
+<span class="py-output"> +- variables</span>
+<span class="py-output">    +- Foo => VariableDoc for epydoc_test.Foo [1]</span>
+<span class="py-output">       +- name = 'Foo'</span>
+<span class="py-output">       +- value</span>
+<span class="py-output">          +- ClassDoc for epydoc_test.Foo [2]</span>
+<span class="py-output">             +- variables</span>
+<span class="py-output">                +- __init__ => VariableDoc for epydoc_test.Foo.__init__ [3]</span>
+<span class="py-output">                   +- name = '__init__'</span>
+<span class="py-output">                   +- value</span>
+<span class="py-output">                      +- RoutineDoc [4]</span></pre>
+</blockquote>
+</div>
+<div class="section" id="delete-statements">
+<h1>Delete Statements</h1>
+<p>Deleting variables:</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>runintrospecter(s=<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">    x = y = 12</span>
+<span class="py-more">... </span><span class="py-string">    del y</span>
+<span class="py-more">... </span><span class="py-string">    """</span>,
+<span class="py-more">... </span>    attribs=<span class="py-string">'variables value repr is_alias'</span>)
+<span class="py-output">ModuleDoc for epydoc_test [0]</span>
+<span class="py-output"> +- variables</span>
+<span class="py-output">    +- x => VariableDoc for epydoc_test.x [1]</span>
+<span class="py-output">       +- is_alias = <UNKNOWN></span>
+<span class="py-output">       +- value</span>
+<span class="py-output">          +- GenericValueDoc [2]</span></pre>
+</blockquote>
+<p>The right-hand side of a <tt class="docutils literal"><span class="pre">del</span></tt> statement may contain a nested
+combination of lists, tuples, and parenthases.  All variables found
+anywhere in this nested structure should be deleted:</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>runintrospecter(s=<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">    a=b=c=d=e=f=g=1</span>
+<span class="py-more">... </span><span class="py-string">    del a</span>
+<span class="py-more">... </span><span class="py-string">    del (b)</span>
+<span class="py-more">... </span><span class="py-string">    del [c]</span>
+<span class="py-more">... </span><span class="py-string">    del (d,)</span>
+<span class="py-more">... </span><span class="py-string">    del (((e,)),)</span>
+<span class="py-more">... </span><span class="py-string">    del [[[[f]]]]</span>
+<span class="py-more">... </span><span class="py-string">    """</span>,
+<span class="py-more">... </span>    attribs=<span class="py-string">'variables'</span>)
+<span class="py-output">ModuleDoc for epydoc_test [0]</span>
+<span class="py-output"> +- variables</span>
+<span class="py-output">    +- g => VariableDoc for epydoc_test.g [1]</span>
+<span class="py-output"></span><span class="py-prompt">>>> </span>runintrospecter(s=<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">    a=b=c=d=e=f=g=1</span>
+<span class="py-more">... </span><span class="py-string">    del a,b</span>
+<span class="py-more">... </span><span class="py-string">    del (c,d)</span>
+<span class="py-more">... </span><span class="py-string">    del [e,f]</span>
+<span class="py-more">... </span><span class="py-string">    """</span>,
+<span class="py-more">... </span>    attribs=<span class="py-string">'variables'</span>)
+<span class="py-output">ModuleDoc for epydoc_test [0]</span>
+<span class="py-output"> +- variables</span>
+<span class="py-output">    +- g => VariableDoc for epydoc_test.g [1]</span>
+<span class="py-output"></span><span class="py-prompt">>>> </span>runintrospecter(s=<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">    a=b=c=d=e=f=g=1</span>
+<span class="py-more">... </span><span class="py-string">    del ((a, (((((b, c)), d), [e]))), f)</span>
+<span class="py-more">... </span><span class="py-string">    """</span>,
+<span class="py-more">... </span>    attribs=<span class="py-string">'variables'</span>)
+<span class="py-output">ModuleDoc for epydoc_test [0]</span>
+<span class="py-output"> +- variables</span>
+<span class="py-output">    +- g => VariableDoc for epydoc_test.g [1]</span></pre>
+</blockquote>
+<p>The right-hand side of a <tt class="docutils literal"><span class="pre">del</span></tt> statement may contain a dotted name, in
+which case the named variable should be deleted from its containing
+namespace.</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>runintrospecter(s=<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">    class A: a = b = 1</span>
+<span class="py-more">... </span><span class="py-string">    del A.a</span>
+<span class="py-more">... </span><span class="py-string">    """</span>,
+<span class="py-more">... </span>    attribs=<span class="py-string">'variables value local_variables'</span>)
+<span class="py-output">ModuleDoc for epydoc_test [0]</span>
+<span class="py-output"> +- variables</span>
+<span class="py-output">    +- A => VariableDoc for epydoc_test.A [1]</span>
+<span class="py-output">       +- value</span>
+<span class="py-output">          +- ClassDoc for epydoc_test.A [2]</span>
+<span class="py-output">             +- variables</span>
+<span class="py-output">                +- b => VariableDoc for epydoc_test.A.b [3]</span>
+<span class="py-output">                   +- value</span>
+<span class="py-output">                      +- GenericValueDoc [4]</span></pre>
+</blockquote>
+<p>Slice deletes:</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>runintrospecter(s=<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">    a = b = [1,2,3,4]</span>
+<span class="py-more">... </span><span class="py-string">    del a[2]</span>
+<span class="py-more">... </span><span class="py-string">    del a[2:]</span>
+<span class="py-more">... </span><span class="py-string">    del ([b], a[1])</span>
+<span class="py-more">... </span><span class="py-string">    """</span>,
+<span class="py-more">... </span>    attribs=<span class="py-string">'variables'</span>)
+<span class="py-output">ModuleDoc for epydoc_test [0]</span>
+<span class="py-output"> +- variables</span>
+<span class="py-output">    +- a => VariableDoc for epydoc_test.a [1]</span></pre>
+</blockquote>
+</div>
+<div class="section" id="single-line-blocks">
+<h1>Single-Line Blocks</h1>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>runintrospecter(s=<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">    class A: 'docstring for A'</span>
+<span class="py-more">...</span>
+<span class="py-more">...</span>
+<span class="py-more">... </span><span class="py-string">    """</span>,
+<span class="py-more">... </span>    attribs=<span class="py-string">'variables value docstring'</span>)
+<span class="py-output">ModuleDoc for epydoc_test [0]</span>
+<span class="py-output"> +- docstring = None</span>
+<span class="py-output"> +- variables</span>
+<span class="py-output">    +- A => VariableDoc for epydoc_test.A [1]</span>
+<span class="py-output">       +- docstring = <UNKNOWN></span>
+<span class="py-output">       +- value</span>
+<span class="py-output">          +- ClassDoc for epydoc_test.A [2]</span>
+<span class="py-output">             +- docstring = u'docstring for A'</span>
+<span class="py-output">             +- variables = {}</span></pre>
+</blockquote>
+</div>
+<div class="section" id="imports">
+<h1>Imports</h1>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>runintrospecter(s=<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">    import pickle</span>
+<span class="py-more">... </span><span class="py-string">    from pickle import dump</span>
+<span class="py-more">... </span><span class="py-string">    """</span>,
+<span class="py-more">... </span>    attribs=<span class="py-string">'variables value is_imported'</span>)
+<span class="py-output">ModuleDoc for epydoc_test [0]</span>
+<span class="py-output"> +- variables</span>
+<span class="py-output">    +- dump => VariableDoc for epydoc_test.dump [1]</span>
+<span class="py-output">    |  +- is_imported = True</span>
+<span class="py-output">    |  +- value</span>
+<span class="py-output">    |     +- ValueDoc for pickle.dump [2]</span>
+<span class="py-output">    +- pickle => VariableDoc for epydoc_test.pickle [3]</span>
+<span class="py-output">       +- is_imported = True</span>
+<span class="py-output">       +- value</span>
+<span class="py-output">          +- ModuleDoc for pickle [4]</span>
+<span class="py-output">             +- variables = {}</span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>runintrospecter(s=<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">    from __future__ import division</span>
+<span class="py-more">... </span><span class="py-string">    from pickle import dump</span>
+<span class="py-more">... </span><span class="py-string">    """</span>,
+<span class="py-more">... </span>    attribs=<span class="py-string">'variables value'</span>)
+<span class="py-output">ModuleDoc for epydoc_test [0]</span>
+<span class="py-output"> +- variables</span>
+<span class="py-output">    +- dump => VariableDoc for epydoc_test.dump [1]</span>
+<span class="py-output">       +- value</span>
+<span class="py-output">          +- ValueDoc for pickle.dump [2]</span></pre>
+</blockquote>
+</div>
+<div class="section" id="unicode">
+<h1>Unicode</h1>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>runintrospecter(s=<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">    def f(x):</span>
+<span class="py-more">... </span><span class="py-string">        u"unicode in docstring: \u1000"</span>
+<span class="py-more">... </span><span class="py-string">    """</span>, introspect=<span class="py-string">"f"</span>, attribs=<span class="py-string">"docstring"</span>)
+<span class="py-output">RoutineDoc for epydoc_test.f [0]</span>
+<span class="py-output"> +- docstring = u'unicode in docstring: \u1000'</span></pre>
+</blockquote>
+</div>
+<div class="section" id="instance-variables">
+<h1>Instance Variables</h1>
+<p>DocIntrospecter is unable to discover instance variables:</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>runintrospecter(s=<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">    class A:</span>
+<span class="py-more">... </span><span class="py-string">        def __init__(self, x, y):</span>
+<span class="py-more">... </span><span class="py-string">            self.x = 10</span>
+<span class="py-more">...</span>
+<span class="py-more">... </span><span class="py-string">            self.y = 20 #: docstring for y</span>
+<span class="py-more">...</span>
+<span class="py-more">... </span><span class="py-string">            self.z = 30</span>
+<span class="py-more">... </span><span class="py-string">            '''docstring for z'''</span>
+<span class="py-more">...</span>
+<span class="py-more">... </span><span class="py-string">    """</span>, introspect=<span class="py-string">"A"</span>, attribs=<span class="py-string">"variables"</span>)
+<span class="py-output">ClassDoc for epydoc_test.A [0]</span>
+<span class="py-output"> +- variables</span>
+<span class="py-output">    +- __init__ => VariableDoc for epydoc_test.A.__init__ [1]</span></pre>
+</blockquote>
+</div>
+<div class="section" id="assignments-into-namespaces">
+<h1>Assignments Into Namespaces</h1>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>runintrospecter(s=<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">    class A: pass</span>
+<span class="py-more">... </span><span class="py-string">    A.x = 22</span>
+<span class="py-more">... </span><span class="py-string">    """</span>, introspect=<span class="py-string">"A"</span>, attribs=<span class="py-string">'variables value local_variables'</span>)
+<span class="py-output">ClassDoc for epydoc_test.A [0]</span>
+<span class="py-output"> +- variables</span>
+<span class="py-output">    +- x => VariableDoc for epydoc_test.A.x [1]</span>
+<span class="py-output">       +- value</span>
+<span class="py-output">          +- GenericValueDoc [2]</span></pre>
+</blockquote>
+</div>
+<div class="section" id="recursive-objects">
+<h1>Recursive objects</h1>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>x = runintrospecter(s=<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">    class A:</span>
+<span class="py-more">... </span><span class="py-string">        "A base referring to a child"</span>
+<span class="py-more">... </span><span class="py-string">        b = None</span>
+<span class="py-more">...</span>
+<span class="py-more">... </span><span class="py-string">    class B(A):</span>
+<span class="py-more">... </span><span class="py-string">        "Its child."</span>
+<span class="py-more">... </span><span class="py-string">        pass</span>
+<span class="py-more">...</span>
+<span class="py-more">... </span><span class="py-string">    A.b = B</span>
+<span class="py-more">... </span><span class="py-string">    """</span>, introspect=<span class="py-string">"A"</span>, exclude=<span class="py-string">'defining_module'</span>)
+<span class="py-more">... </span>    <span class="py-comment"># doctest: +ELLIPSIS</span>
+<span class="py-output">ClassDoc for epydoc_test.A [0]</span>
+<span class="py-output"> +- bases = []</span>
+<span class="py-output"> +- canonical_name = DottedName('epydoc_test', 'A')</span>
+<span class="py-output"> +- docs_extracted_by = 'introspecter'</span>
+<span class="py-output"> +- docstring = u'A base referring to a child'</span>
+<span class="py-output"> +- pyval = <class epydoc_test.A at ...></span>
+<span class="py-output"> +- subclasses</span>
+<span class="py-output"> |  +- ClassDoc for epydoc_test.B [1]</span>
+<span class="py-output"> |     +- bases</span>
+<span class="py-output"> |     |  +- ClassDoc for epydoc_test.A [0] (defined above)</span>
+<span class="py-output"> |     +- canonical_name = DottedName('epydoc_test', 'B')</span>
+<span class="py-output"> |     +- docs_extracted_by = 'introspecter'</span>
+<span class="py-output"> |     +- docstring = u'Its child.'</span>
+<span class="py-output"> |     +- pyval = <class epydoc_test.B at ...></span>
+<span class="py-output"> |     +- subclasses = []</span>
+<span class="py-output"> |     +- variables = {}</span>
+<span class="py-output"> +- variables</span>
+<span class="py-output">    +- b => VariableDoc for epydoc_test.A.b [2]</span>
+<span class="py-output">       +- container</span>
+<span class="py-output">       |  +- ClassDoc for epydoc_test.A [0] (defined above)</span>
+<span class="py-output">       +- docs_extracted_by = 'introspecter'</span>
+<span class="py-output">       +- is_public = True</span>
+<span class="py-output">       +- name = 'b'</span>
+<span class="py-output">       +- value</span>
+<span class="py-output">          +- ClassDoc for epydoc_test.B [1] (defined above)</span></pre>
+</blockquote>
+</div>
+<div class="section" id="closed-bugs">
+<h1>Closed Bugs</h1>
+<div class="section" id="sf-bug-1657050-builtins-not-resolved-in-os">
+<h2>SF Bug [ 1657050 ] Builtins not resolved in "os"</h2>
+<p>If a variable is listed in <tt class="docutils literal"><span class="pre">__all__</span></tt>, 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 <cite>ValueDoc</cite> value
+instead of a <cite>RoutineDoc</cite> value, because it didn't introspect the
+value of getcwd.</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>x = runintrospecter(s=<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">    __all__ = ['getcwd']</span>
+<span class="py-more">... </span><span class="py-string">    from os import getcwd</span>
+<span class="py-more">... </span><span class="py-string">    """</span>, attribs=<span class="py-string">'variables value'</span>)
+<span class="py-output">ModuleDoc for epydoc_test [0]</span>
+<span class="py-output"> +- variables</span>
+<span class="py-output">    +- getcwd => VariableDoc for epydoc_test.getcwd [1]</span>
+<span class="py-output">       +- value</span>
+<span class="py-output">          +- RoutineDoc [2]</span></pre>
+</blockquote>
+</div>
+</div>
+</div>
+<table width="100%" class="navbox" cellpadding="1" cellspacing="0">
+  <tr>
+  <a class="nav" href="../index.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="../index.html">
+    Home</a></td></a>
+  <a class="nav" href="../installing.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="../installing.html">
+    Installing Epydoc</a></td></a>
+  <a class="nav" href="../using.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="../using.html">
+    Using Epydoc</a></td></a>
+  <a class="nav" href="../epytext.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="../epytext.html">
+    Epytext</a></td></a>
+  <td align="center" width="20%" class="nav">
+    
+    <A href="http://sourceforge.net/projects/epydoc"> 
+    <IMG src="../sflogo.png" 
+    width="88" height="26" border="0" alt="SourceForge"
+    align="top"/></A></td>
+    </tr>
+</table>
+</body>
+</html>
diff --git a/doc/doctest/docparser.html b/doc/doctest/docparser.html
new file mode 100644
index 0000000..4746dd0
--- /dev/null
+++ b/doc/doctest/docparser.html
@@ -0,0 +1,869 @@
+<?xml version="1.0" encoding="ascii" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ascii" />
+<meta name="generator" content="Docutils 0.5: http://docutils.sourceforge.net/" />
+<title>Regression Testing for epydoc.docparser</title>
+<link rel="stylesheet" href="../custom.css" type="text/css" />
+</head>
+<body>
+<div class="document" id="regression-testing-for-epydoc-docparser">
+<h1 class="title">Regression Testing for epydoc.docparser</h1>
+
+<p>The <cite>epydoc.docparser</cite> module is used to extract API documentation by
+parsing the source code of Python files.  Its primary interface is
+<cite>docparser.parse_docs()</cite>, which takes a module's filename, and returns a
+ModuleDoc describing that module and its contents.</p>
+<div class="section" id="test-function">
+<h1>Test Function</h1>
+<p>This test function takes a string containing the contents of a module,
+and writes it to a file, uses <cite>docparser.parse_docs()</cite> to parse it, and pretty
+prints the resulting ModuleDoc object.  The <tt class="docutils literal"><span class="pre">attribs</span></tt> argument
+specifies which attributes of the <cite>APIDoc`s should be displayed.  The
+``show`</cite> 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).</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">from</span> epydoc.test.util <span class="py-keyword">import</span> runparser</pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">from</span> epydoc.test.util <span class="py-keyword">import</span> print_warnings
+<span class="py-prompt">>>> </span>print_warnings()</pre>
+</blockquote>
+</div>
+<div class="section" id="module-variables-from-assignment-statements">
+<h1>Module Variables from Assignment Statements</h1>
+<p>Variables are extracted from any assignment statements in the module,
+including statements contained inside of top-level if statements, for
+loops, while loops, and try/except/finally blocks.  Tuple assignments
+are unpacked, when possible.</p>
+<p>For simple variable assignments, DocParser creates <cite>VariableDoc</cite> 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
+instance variable.  (For variables generated from module variable
+assignments, is_imported and is_instvar will always be False.)</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>runparser(s=<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">    x = 12</span>
+<span class="py-more">... </span><span class="py-string">    y = [1,2,3] + [4,5]</span>
+<span class="py-more">... </span><span class="py-string">    z = f(x,y)</span>
+<span class="py-more">... </span><span class="py-string">    """</span>)
+<span class="py-output">ModuleDoc for epydoc_test [0]</span>
+<span class="py-output"> +- canonical_name = DottedName('epydoc_test')</span>
+<span class="py-output"> +- defining_module</span>
+<span class="py-output"> |  +- ModuleDoc for epydoc_test [0] (defined above)</span>
+<span class="py-output"> +- docs_extracted_by = 'parser'</span>
+<span class="py-output"> +- filename = ...</span>
+<span class="py-output"> +- imports = []</span>
+<span class="py-output"> +- is_package = False</span>
+<span class="py-output"> +- package = None</span>
+<span class="py-output"> +- sort_spec = [u'x', u'y', u'z']</span>
+<span class="py-output"> +- submodules = []</span>
+<span class="py-output"> +- variables</span>
+<span class="py-output">    +- x => VariableDoc for epydoc_test.x [1]</span>
+<span class="py-output">    |  +- container</span>
+<span class="py-output">    |  |  +- ModuleDoc for epydoc_test [0] (defined above)</span>
+<span class="py-output">    |  +- docs_extracted_by = 'parser'</span>
+<span class="py-output">    |  +- is_alias = False</span>
+<span class="py-output">    |  +- is_imported = False</span>
+<span class="py-output">    |  +- is_instvar = False</span>
+<span class="py-output">    |  +- is_public = True</span>
+<span class="py-output">    |  +- name = u'x'</span>
+<span class="py-output">    |  +- value</span>
+<span class="py-output">    |     +- GenericValueDoc [2]</span>
+<span class="py-output">    |        +- defining_module</span>
+<span class="py-output">    |        |  +- ModuleDoc for epydoc_test [0] (defined above)</span>
+<span class="py-output">    |        +- docs_extracted_by = 'parser'</span>
+<span class="py-output">    |        +- parse_repr = u'12'</span>
+<span class="py-output">    |        +- toktree = [(2, u'12')]</span>
+<span class="py-output">    +- y => VariableDoc for epydoc_test.y [3]</span>
+<span class="py-output">    |  +- container</span>
+<span class="py-output">    |  |  +- ModuleDoc for epydoc_test [0] (defined above)</span>
+<span class="py-output">    |  +- docs_extracted_by = 'parser'</span>
+<span class="py-output">    |  +- is_alias = False</span>
+<span class="py-output">    |  +- is_imported = False</span>
+<span class="py-output">    |  +- is_instvar = False</span>
+<span class="py-output">    |  +- is_public = True</span>
+<span class="py-output">    |  +- name = u'y'</span>
+<span class="py-output">    |  +- value</span>
+<span class="py-output">    |     +- GenericValueDoc [4]</span>
+<span class="py-output">    |        +- defining_module</span>
+<span class="py-output">    |        |  +- ModuleDoc for epydoc_test [0] (defined above)</span>
+<span class="py-output">    |        +- docs_extracted_by = 'parser'</span>
+<span class="py-output">    |        +- parse_repr = u'[1, 2, 3]+ [4, 5]'</span>
+<span class="py-output">    |        +- toktree = ...</span>
+<span class="py-output">    +- z => VariableDoc for epydoc_test.z [5]</span>
+<span class="py-output">       +- container</span>
+<span class="py-output">       |  +- ModuleDoc for epydoc_test [0] (defined above)</span>
+<span class="py-output">       +- docs_extracted_by = 'parser'</span>
+<span class="py-output">       +- is_alias = False</span>
+<span class="py-output">       +- is_imported = False</span>
+<span class="py-output">       +- is_instvar = False</span>
+<span class="py-output">       +- is_public = True</span>
+<span class="py-output">       +- name = u'z'</span>
+<span class="py-output">       +- value</span>
+<span class="py-output">          +- GenericValueDoc [6]</span>
+<span class="py-output">             +- defining_module</span>
+<span class="py-output">             |  +- ModuleDoc for epydoc_test [0] (defined above)</span>
+<span class="py-output">             +- docs_extracted_by = 'parser'</span>
+<span class="py-output">             +- parse_repr = u'f(x, y)'</span>
+<span class="py-output">             +- toktree = ...</span></pre>
+</blockquote>
+<p>In this example, DocParser decides that the assignment to y is
+creating an alias.  The same <cite>ValueDoc</cite> is shared by both variables.</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>runparser(s=<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">    x = [1,2]</span>
+<span class="py-more">... </span><span class="py-string">    y = x</span>
+<span class="py-more">... </span><span class="py-string">    """</span>,
+<span class="py-more">... </span>    attribs=<span class="py-string">'variables is_alias name value parse_repr'</span>)
+<span class="py-output">ModuleDoc for epydoc_test [0]</span>
+<span class="py-output"> +- parse_repr = <UNKNOWN></span>
+<span class="py-output"> +- variables</span>
+<span class="py-output">    +- x => VariableDoc for epydoc_test.x [1]</span>
+<span class="py-output">    |  +- is_alias = False</span>
+<span class="py-output">    |  +- name = u'x'</span>
+<span class="py-output">    |  +- value</span>
+<span class="py-output">    |     +- GenericValueDoc [2]</span>
+<span class="py-output">    |        +- parse_repr = u'[1, 2]'</span>
+<span class="py-output">    +- y => VariableDoc for epydoc_test.y [3]</span>
+<span class="py-output">       +- is_alias = True</span>
+<span class="py-output">       +- name = u'y'</span>
+<span class="py-output">       +- value</span>
+<span class="py-output">          +- GenericValueDoc [2] (defined above)</span></pre>
+</blockquote>
+<p>DocParser can also parse assignments where the left-hand side is a
+tuple or list; however, it will not extract values.</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>runparser(s=<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">    a,b = (5,6)</span>
+<span class="py-more">... </span><span class="py-string">    [a,(b,[c,d],e),(f,g)] = [1,(2,[3,4],5),(6,7)]</span>
+<span class="py-more">... </span><span class="py-string">    """</span>,
+<span class="py-more">... </span>    attribs=<span class="py-string">'variables is_alias name value'</span>)
+<span class="py-output">ModuleDoc for epydoc_test [0]</span>
+<span class="py-output"> +- variables</span>
+<span class="py-output">    +- a => VariableDoc for epydoc_test.a [1]</span>
+<span class="py-output">    |  +- is_alias = False</span>
+<span class="py-output">    |  +- name = u'a'</span>
+<span class="py-output">    |  +- value = <UNKNOWN></span>
+<span class="py-output">    +- b => VariableDoc for epydoc_test.b [2]</span>
+<span class="py-output">    |  +- is_alias = False</span>
+<span class="py-output">    |  +- name = u'b'</span>
+<span class="py-output">    |  +- value = <UNKNOWN></span>
+<span class="py-output">    +- c => VariableDoc for epydoc_test.c [3]</span>
+<span class="py-output">    |  +- is_alias = False</span>
+<span class="py-output">    |  +- name = u'c'</span>
+<span class="py-output">    |  +- value = <UNKNOWN></span>
+<span class="py-output">    +- d => VariableDoc for epydoc_test.d [4]</span>
+<span class="py-output">    |  +- is_alias = False</span>
+<span class="py-output">    |  +- name = u'd'</span>
+<span class="py-output">    |  +- value = <UNKNOWN></span>
+<span class="py-output">    +- e => VariableDoc for epydoc_test.e [5]</span>
+<span class="py-output">    |  +- is_alias = False</span>
+<span class="py-output">    |  +- name = u'e'</span>
+<span class="py-output">    |  +- value = <UNKNOWN></span>
+<span class="py-output">    +- f => VariableDoc for epydoc_test.f [6]</span>
+<span class="py-output">    |  +- is_alias = False</span>
+<span class="py-output">    |  +- name = u'f'</span>
+<span class="py-output">    |  +- value = <UNKNOWN></span>
+<span class="py-output">    +- g => VariableDoc for epydoc_test.g [7]</span>
+<span class="py-output">       +- is_alias = False</span>
+<span class="py-output">       +- name = u'g'</span>
+<span class="py-output">       +- value = <UNKNOWN></span></pre>
+</blockquote>
+<p>DocParser can also parse 'multi-assignment' statements, containing
+more than one assignment.  Note that the ValueDoc object is shared;
+and all but the rightmost variable are marked as aliases.  (As a
+result, the value's canonical name will use the name of the rightmost
+variable.)</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>runparser(s=<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">    x = y = z = 0</span>
+<span class="py-more">... </span><span class="py-string">    """</span>,
+<span class="py-more">... </span>    attribs=<span class="py-string">"variables is_alias name value parse_repr"</span>)
+<span class="py-output">ModuleDoc for epydoc_test [0]</span>
+<span class="py-output"> +- parse_repr = <UNKNOWN></span>
+<span class="py-output"> +- variables</span>
+<span class="py-output">    +- x => VariableDoc for epydoc_test.x [1]</span>
+<span class="py-output">    |  +- is_alias = True</span>
+<span class="py-output">    |  +- name = u'x'</span>
+<span class="py-output">    |  +- value</span>
+<span class="py-output">    |     +- GenericValueDoc [2]</span>
+<span class="py-output">    |        +- parse_repr = u'0'</span>
+<span class="py-output">    +- y => VariableDoc for epydoc_test.y [3]</span>
+<span class="py-output">    |  +- is_alias = True</span>
+<span class="py-output">    |  +- name = u'y'</span>
+<span class="py-output">    |  +- value</span>
+<span class="py-output">    |     +- GenericValueDoc [2] (defined above)</span>
+<span class="py-output">    +- z => VariableDoc for epydoc_test.z [4]</span>
+<span class="py-output">       +- is_alias = False</span>
+<span class="py-output">       +- name = u'z'</span>
+<span class="py-output">       +- value</span>
+<span class="py-output">          +- GenericValueDoc [2] (defined above)</span></pre>
+</blockquote>
+<p>If a variable is assigned to twice, then the later assignment
+overwrites the earlier one:</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>runparser(s=<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">    x = 22</span>
+<span class="py-more">... </span><span class="py-string">    x = 33</span>
+<span class="py-more">... </span><span class="py-string">    """</span>,
+<span class="py-more">... </span>    attribs=<span class="py-string">"variables name value parse_repr"</span>)
+<span class="py-output">ModuleDoc for epydoc_test [0]</span>
+<span class="py-output"> +- parse_repr = <UNKNOWN></span>
+<span class="py-output"> +- variables</span>
+<span class="py-output">    +- x => VariableDoc for epydoc_test.x [1]</span>
+<span class="py-output">       +- name = u'x'</span>
+<span class="py-output">       +- value</span>
+<span class="py-output">          +- GenericValueDoc [2]</span>
+<span class="py-output">             +- parse_repr = u'33'</span></pre>
+</blockquote>
+<p>Some class variable have a special meaning. The <tt class="docutils literal"><span class="pre">__slots__</span></tt> variable isn't
+very useful and should be discarded.</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>runparser(s=<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">    class Foo:</span>
+<span class="py-more">... </span><span class="py-string">        __slots__ = ['bar']</span>
+<span class="py-more">... </span><span class="py-string">        def __init__(self):</span>
+<span class="py-more">... </span><span class="py-string">            self.bar = 0</span>
+<span class="py-more">... </span><span class="py-string">    """</span>,
+<span class="py-more">... </span>    attribs=<span class="py-string">"variables name value"</span>)
+<span class="py-output">ModuleDoc for epydoc_test [0]</span>
+<span class="py-output"> +- variables</span>
+<span class="py-output">    +- Foo => VariableDoc for epydoc_test.Foo [1]</span>
+<span class="py-output">       +- name = u'Foo'</span>
+<span class="py-output">       +- value</span>
+<span class="py-output">          +- ClassDoc for epydoc_test.Foo [2]</span>
+<span class="py-output">             +- variables</span>
+<span class="py-output">                +- __init__ => VariableDoc for epydoc_test.Foo.__init__ [3]</span>
+<span class="py-output">                   +- name = u'__init__'</span>
+<span class="py-output">                   +- value</span>
+<span class="py-output">                      +- RoutineDoc for epydoc_test.Foo.__init__ [4]</span></pre>
+</blockquote>
+</div>
+<div class="section" id="module-control-blocks">
+<h1>Module Control Blocks</h1>
+<p>DocParser will look inside certain types of module-level control
+blocks.  By default, DocParser looks inside the following block types:</p>
+<ul class="simple">
+<li>if blocks</li>
+<li>elif blocks</li>
+<li>else blocks</li>
+<li>try blocks</li>
+<li>except blocks</li>
+<li>finally blocks</li>
+</ul>
+<p>By default, DocParse does not look inside the following block types:</p>
+<ul>
+<li><p class="first">while blocks</p>
+</li>
+<li><p class="first">for blocks</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-comment"># DocParser looks inside if/elif/else blocks.</span>
+<span class="py-prompt">>>> </span>runparser(s=<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">    if condition:</span>
+<span class="py-more">... </span><span class="py-string">        if_gated = 'x'</span>
+<span class="py-more">... </span><span class="py-string">    elif condition2:</span>
+<span class="py-more">... </span><span class="py-string">        elif_gated = 'y'</span>
+<span class="py-more">... </span><span class="py-string">    elif condition3:</span>
+<span class="py-more">... </span><span class="py-string">        elif_gated2 = 'x'</span>
+<span class="py-more">... </span><span class="py-string">    else:</span>
+<span class="py-more">... </span><span class="py-string">        else_gated = 'z'"""</span>,
+<span class="py-more">... </span>    attribs=<span class="py-string">"variables name"</span>)
+<span class="py-output">ModuleDoc for epydoc_test [0]</span>
+<span class="py-output"> +- variables</span>
+<span class="py-output">    +- elif_gated => VariableDoc for epydoc_test.elif_gated [1]</span>
+<span class="py-output">    |  +- name = u'elif_gated'</span>
+<span class="py-output">    +- elif_gated2 => VariableDoc for epydoc_test.elif_gated2 [2]</span>
+<span class="py-output">    |  +- name = u'elif_gated2'</span>
+<span class="py-output">    +- else_gated => VariableDoc for epydoc_test.else_gated [3]</span>
+<span class="py-output">    |  +- name = u'else_gated'</span>
+<span class="py-output">    +- if_gated => VariableDoc for epydoc_test.if_gated [4]</span>
+<span class="py-output">       +- name = u'if_gated'</span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-comment"># DocParser looks inside try/except and try/finally blocks:</span>
+<span class="py-prompt">>>> </span>runparser(s=<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">    try:</span>
+<span class="py-more">... </span><span class="py-string">        try:</span>
+<span class="py-more">... </span><span class="py-string">            try_gated = 'x'</span>
+<span class="py-more">... </span><span class="py-string">        except Exception1:</span>
+<span class="py-more">... </span><span class="py-string">            except_gated = 'x'</span>
+<span class="py-more">... </span><span class="py-string">        except:</span>
+<span class="py-more">... </span><span class="py-string">            except_gated2 = 'y'</span>
+<span class="py-more">... </span><span class="py-string">    finally:</span>
+<span class="py-more">... </span><span class="py-string">        finally_gated = 'z'"""</span>,
+<span class="py-more">... </span>    attribs=<span class="py-string">"variables name"</span>)
+<span class="py-output">ModuleDoc for epydoc_test [0]</span>
+<span class="py-output"> +- variables</span>
+<span class="py-output">    +- except_gated => VariableDoc for epydoc_test.except_gated [1]</span>
+<span class="py-output">    |  +- name = u'except_gated'</span>
+<span class="py-output">    +- except_gated2 => VariableDoc for epydoc_test.except_gated2 [2]</span>
+<span class="py-output">    |  +- name = u'except_gated2'</span>
+<span class="py-output">    +- finally_gated => VariableDoc for epydoc_test.finally_gated [3]</span>
+<span class="py-output">    |  +- name = u'finally_gated'</span>
+<span class="py-output">    +- try_gated => VariableDoc for epydoc_test.try_gated [4]</span>
+<span class="py-output">       +- name = u'try_gated'</span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-comment"># By default, DocParser does not look inside for blocks</span>
+<span class="py-prompt">>>> </span>runparser(s=<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">    for itervar in [5]*3:</span>
+<span class="py-more">... </span><span class="py-string">        for_gated = 'x'"""</span>,
+<span class="py-more">... </span>    attribs=<span class="py-string">"variables name"</span>)
+<span class="py-output">ModuleDoc for epydoc_test [0]</span>
+<span class="py-output"> +- variables = {}</span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-comment"># By default, DocParser does not look inside while blocks</span>
+<span class="py-prompt">>>> </span>runparser(s=<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">    while condition:</span>
+<span class="py-more">... </span><span class="py-string">        while_gated = 'x'"""</span>,
+<span class="py-more">... </span>    attribs=<span class="py-string">"variables name"</span>)
+<span class="py-output">ModuleDoc for epydoc_test [0]</span>
+<span class="py-output"> +- variables = {}</span></pre>
+</blockquote>
+</li>
+</ul>
+<p>The set of blocks that DocParser looks inside are controlled by a set
+of global variables in <cite>epydoc.docparser</cite>.  For example, the following
+code creates a DocParser that does look inside for blocks and while
+blocks:</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">import</span> epydoc.docparser
+<span class="py-prompt">>>> </span>epydoc.docparser.PARSE_FOR_BLOCKS = True
+<span class="py-prompt">>>> </span>epydoc.docparser.PARSE_WHILE_BLOCKS = True
+<span class="py-prompt">>>> </span>runparser(s=<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">    for itervar in [5]*3:</span>
+<span class="py-more">... </span><span class="py-string">        for_gated = 'x'"""</span>,
+<span class="py-more">... </span>    attribs=<span class="py-string">"variables name"</span>)
+<span class="py-output">ModuleDoc for epydoc_test [0]</span>
+<span class="py-output"> +- variables</span>
+<span class="py-output">    +- for_gated => VariableDoc for epydoc_test.for_gated [1]</span>
+<span class="py-output">    |  +- name = u'for_gated'</span>
+<span class="py-output">    +- itervar => VariableDoc for epydoc_test.itervar [2]</span>
+<span class="py-output">       +- name = u'itervar'</span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>runparser(s=<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">    while condition:</span>
+<span class="py-more">... </span><span class="py-string">        while_gated = 'x'"""</span>,
+<span class="py-more">... </span>    attribs=<span class="py-string">"variables name"</span>)
+<span class="py-output">ModuleDoc for epydoc_test [0]</span>
+<span class="py-output"> +- variables</span>
+<span class="py-output">    +- while_gated => VariableDoc for epydoc_test.while_gated [1]</span>
+<span class="py-output">       +- name = u'while_gated'</span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-comment"># reset the globals:</span>
+<span class="py-prompt">>>> </span>reload(epydoc.docparser) <span class="py-keyword">and</span> None</pre>
+</blockquote>
+<p>Note that when DocParser examines a for block, it also creates a
+VariableDoc for the loop variable (itervar in this case).</p>
+</div>
+<div class="section" id="variable-docstrings">
+<h1>Variable Docstrings</h1>
+<p>The DocParser can extract docstrings for variables.  These docstrings
+can come from one of two places: string constants that immediately
+follow the assignment statement; or comments starting with the special
+sequence "#:" that occur before the assignment or on the same line as
+it.</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>runparser(s=<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">    x = 12</span>
+<span class="py-more">... </span><span class="py-string">    '''docstring for x.</span>
+<span class="py-more">... </span><span class="py-string">    (can be multiline)'''"""</span>,
+<span class="py-more">... </span>    attribs=<span class="py-string">"variables name docstring"</span>)
+<span class="py-output">ModuleDoc for epydoc_test [0]</span>
+<span class="py-output"> +- docstring = <UNKNOWN></span>
+<span class="py-output"> +- variables</span>
+<span class="py-output">    +- x => VariableDoc for epydoc_test.x [1]</span>
+<span class="py-output">       +- docstring = u'docstring for x.\n(can be multiline)'</span>
+<span class="py-output">       +- name = u'x'</span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>runparser(s=<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">    x = 12 #: comment docstring for x"""</span>,
+<span class="py-more">... </span>    attribs=<span class="py-string">"variables name docstring"</span>)
+<span class="py-output">ModuleDoc for epydoc_test [0]</span>
+<span class="py-output"> +- docstring = <UNKNOWN></span>
+<span class="py-output"> +- variables</span>
+<span class="py-output">    +- x => VariableDoc for epydoc_test.x [1]</span>
+<span class="py-output">       +- docstring = u'comment docstring for x'</span>
+<span class="py-output">       +- name = u'x'</span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>runparser(s=<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">    #: comment docstring for x.</span>
+<span class="py-more">... </span><span class="py-string">    #: (can be multiline)</span>
+<span class="py-more">... </span><span class="py-string">    x = 12"""</span>,
+<span class="py-more">... </span>    attribs=<span class="py-string">"variables name docstring"</span>)
+<span class="py-output">ModuleDoc for epydoc_test [0]</span>
+<span class="py-output"> +- docstring = <UNKNOWN></span>
+<span class="py-output"> +- variables</span>
+<span class="py-output">    +- x => VariableDoc for epydoc_test.x [1]</span>
+<span class="py-output">       +- docstring = u'comment docstring for x.\n(can be m...</span>
+<span class="py-output">       +- name = u'x'</span></pre>
+</blockquote>
+<p>If comments and a string constant are both used, then the string
+constant takes precedence:</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>runparser(s=<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">    #: comment1</span>
+<span class="py-more">... </span><span class="py-string">    x = 12 #: comment2</span>
+<span class="py-more">... </span><span class="py-string">    '''string'''"""</span>,
+<span class="py-more">... </span>    attribs=<span class="py-string">"variables name docstring"</span>)
+<span class="py-output"><UNKNOWN> has both a comment-docstring and a normal (string) docstring; ignoring the comment-docstring.</span>
+<span class="py-output">ModuleDoc for epydoc_test [0]</span>
+<span class="py-output"> +- docstring = <UNKNOWN></span>
+<span class="py-output"> +- variables</span>
+<span class="py-output">    +- x => VariableDoc for epydoc_test.x [1]</span>
+<span class="py-output">       +- docstring = u'string'</span>
+<span class="py-output">       +- name = u'x'</span></pre>
+</blockquote>
+</div>
+<div class="section" id="functions">
+<h1>Functions</h1>
+<p>When DocParser encounters a function definition statement, it creates
+a corresponding FunctionDoc object (as the valuedoc attribute of a
+VariableDoc object in the module's children list).</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>runparser(s=<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">    def f(x):</span>
+<span class="py-more">... </span><span class="py-string">        'docstring for f'</span>
+<span class="py-more">... </span><span class="py-string">        print 'inside f'</span>
+<span class="py-more">... </span><span class="py-string">    """</span>, show=<span class="py-string">"f"</span>, exclude=<span class="py-string">'defining_module'</span>)
+<span class="py-output">RoutineDoc for epydoc_test.f [0]</span>
+<span class="py-output"> +- canonical_name = DottedName('epydoc_test', u'f')</span>
+<span class="py-output"> +- decorators = []</span>
+<span class="py-output"> +- docs_extracted_by = 'parser'</span>
+<span class="py-output"> +- docstring = u'docstring for f'</span>
+<span class="py-output"> +- docstring_lineno = 3</span>
+<span class="py-output"> +- kwarg = None</span>
+<span class="py-output"> +- lineno = 2</span>
+<span class="py-output"> +- posarg_defaults = [None]</span>
+<span class="py-output"> +- posargs = [u'x']</span>
+<span class="py-output"> +- vararg = None</span></pre>
+</blockquote>
+<p>The function's arguments are described by the properties <tt class="docutils literal"><span class="pre">posargs</span></tt>,
+<tt class="docutils literal"><span class="pre">posarg_defaults</span></tt>, <tt class="docutils literal"><span class="pre">kwarg</span></tt>, and <tt class="docutils literal"><span class="pre">vararg</span></tt>.  <tt class="docutils literal"><span class="pre">posargs</span></tt> is a list of
+argument names (or nested tuples of names, for tuple-unpacking args).
+<tt class="docutils literal"><span class="pre">posarg_defaults</span></tt> is a list of <cite>ValueDoc</cite>s for default values,
+corresponding 1:1 with <tt class="docutils literal"><span class="pre">posargs</span></tt>.  <tt class="docutils literal"><span class="pre">posarg_defaults</span></tt> is None for
+arguments with no default value.  <tt class="docutils literal"><span class="pre">vararg</span></tt> and <tt class="docutils literal"><span class="pre">kwarg</span></tt> are the names
+of the variable argument and keyword argument, respectively:</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>runparser(s=<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">    def f(x, y=22, z=(1,), *v, **kw):</span>
+<span class="py-more">... </span><span class="py-string">        'docstring for f'</span>
+<span class="py-more">... </span><span class="py-string">        print 'inside f'</span>
+<span class="py-more">... </span><span class="py-string">    """</span>, show=<span class="py-string">"f"</span>, exclude=<span class="py-string">'defining_module'</span>)
+<span class="py-output">RoutineDoc for epydoc_test.f [0]</span>
+<span class="py-output"> +- canonical_name = DottedName('epydoc_test', u'f')</span>
+<span class="py-output"> +- decorators = []</span>
+<span class="py-output"> +- docs_extracted_by = 'parser'</span>
+<span class="py-output"> +- docstring = u'docstring for f'</span>
+<span class="py-output"> +- docstring_lineno = 3</span>
+<span class="py-output"> +- kwarg = u'kw'</span>
+<span class="py-output"> +- lineno = 2</span>
+<span class="py-output"> +- posarg_defaults = [None, <GenericValueDoc None>, <Gener...</span>
+<span class="py-output"> +- posargs = [u'x', u'y', u'z']</span>
+<span class="py-output"> +- vararg = u'v'</span></pre>
+</blockquote>
+<dl class="docutils">
+<dt>Tuple arguments are encoded as a single ArgDoc with a complex name:</dt>
+<dd><pre class="py-doctest">
+<span class="py-prompt">>>> </span>runparser(s=<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">    def f( (x, (y,z)) ): pass</span>
+<span class="py-more">... </span><span class="py-string">    """</span>, show=<span class="py-string">"f"</span>, exclude=<span class="py-string">'defining_module'</span>)
+<span class="py-output">RoutineDoc for epydoc_test.f [0]</span>
+<span class="py-output"> +- canonical_name = DottedName('epydoc_test', u'f')</span>
+<span class="py-output"> +- decorators = []</span>
+<span class="py-output"> +- docs_extracted_by = 'parser'</span>
+<span class="py-output"> +- kwarg = None</span>
+<span class="py-output"> +- lineno = 2</span>
+<span class="py-output"> +- posarg_defaults = [None]</span>
+<span class="py-output"> +- posargs = [[u'x', [u'y', u'z']]]</span>
+<span class="py-output"> +- vararg = None</span></pre>
+</dd>
+</dl>
+</div>
+<div class="section" id="decorators-wrapper-assignments">
+<h1>Decorators & Wrapper Assignments</h1>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>runparser( <span class="py-comment"># doctest: +PYTHON2.4</span>
+<span class="py-more">... </span>    s=<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">    @classmethod</span>
+<span class="py-more">... </span><span class="py-string">    def f(cls, x): 'docstring for f'</span>
+<span class="py-more">... </span><span class="py-string">    """</span>,
+<span class="py-more">... </span>    attribs=<span class="py-string">'variables value docstring posargs'</span>)
+<span class="py-output">ModuleDoc for epydoc_test [0]</span>
+<span class="py-output"> +- docstring = <UNKNOWN></span>
+<span class="py-output"> +- variables</span>
+<span class="py-output">    +- f => VariableDoc for epydoc_test.f [1]</span>
+<span class="py-output">       +- docstring = <UNKNOWN></span>
+<span class="py-output">       +- value</span>
+<span class="py-output">          +- ClassMethodDoc for epydoc_test.f [2]</span>
+<span class="py-output">             +- docstring = u'docstring for f'</span>
+<span class="py-output">             +- posargs = [u'cls', u'x']</span></pre>
+</blockquote>
+</div>
+<div class="section" id="classes">
+<h1>Classes</h1>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>runparser(s=<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">    class A:</span>
+<span class="py-more">... </span><span class="py-string">        "no bases"</span>
+<span class="py-more">... </span><span class="py-string">        class Nested: "nested class"</span>
+<span class="py-more">... </span><span class="py-string">    class B(A): "single base"</span>
+<span class="py-more">... </span><span class="py-string">    class C(A,B): "multiple bases"</span>
+<span class="py-more">... </span><span class="py-string">    class D( ((A)) ): "extra parens around base"</span>
+<span class="py-more">... </span><span class="py-string">    class E(A.Nested): "dotted name"</span>
+<span class="py-more">... </span><span class="py-string">    class F(((A).Nested)): "parens with dotted name"</span>
+<span class="py-more">... </span><span class="py-string">    class Z(B.__bases__[0]): "calculated base" # not handled!</span>
+<span class="py-more">... </span><span class="py-string">    """</span>,
+<span class="py-more">... </span>    attribs=<span class="py-string">'variables value bases docstring'</span>)
+<span class="py-output">Unable to extract the base list for epydoc_test.Z: Bad dotted name</span>
+<span class="py-output">ModuleDoc for epydoc_test [0]</span>
+<span class="py-output"> +- docstring = <UNKNOWN></span>
+<span class="py-output"> +- variables</span>
+<span class="py-output">    +- A => VariableDoc for epydoc_test.A [1]</span>
+<span class="py-output">    |  +- docstring = <UNKNOWN></span>
+<span class="py-output">    |  +- value</span>
+<span class="py-output">    |     +- ClassDoc for epydoc_test.A [2]</span>
+<span class="py-output">    |        +- bases = []</span>
+<span class="py-output">    |        +- docstring = u'no bases'</span>
+<span class="py-output">    |        +- variables</span>
+<span class="py-output">    |           +- Nested => VariableDoc for epydoc_test.A.Nested [3]</span>
+<span class="py-output">    |              +- docstring = <UNKNOWN></span>
+<span class="py-output">    |              +- value</span>
+<span class="py-output">    |                 +- ClassDoc for epydoc_test.A.Nested [4]</span>
+<span class="py-output">    |                    +- bases = []</span>
+<span class="py-output">    |                    +- docstring = u'nested class'</span>
+<span class="py-output">    |                    +- variables = {}</span>
+<span class="py-output">    +- B => VariableDoc for epydoc_test.B [5]</span>
+<span class="py-output">    |  +- docstring = <UNKNOWN></span>
+<span class="py-output">    |  +- value</span>
+<span class="py-output">    |     +- ClassDoc for epydoc_test.B [6]</span>
+<span class="py-output">    |        +- bases</span>
+<span class="py-output">    |        |  +- ClassDoc for epydoc_test.A [2] (defined above)</span>
+<span class="py-output">    |        +- docstring = u'single base'</span>
+<span class="py-output">    |        +- variables = {}</span>
+<span class="py-output">    +- C => VariableDoc for epydoc_test.C [7]</span>
+<span class="py-output">    |  +- docstring = <UNKNOWN></span>
+<span class="py-output">    |  +- value</span>
+<span class="py-output">    |     +- ClassDoc for epydoc_test.C [8]</span>
+<span class="py-output">    |        +- bases</span>
+<span class="py-output">    |        |  +- ClassDoc for epydoc_test.A [2] (defined above)</span>
+<span class="py-output">    |        |  +- ClassDoc for epydoc_test.B [6] (defined above)</span>
+<span class="py-output">    |        +- docstring = u'multiple bases'</span>
+<span class="py-output">    |        +- variables = {}</span>
+<span class="py-output">    +- D => VariableDoc for epydoc_test.D [9]</span>
+<span class="py-output">    |  +- docstring = <UNKNOWN></span>
+<span class="py-output">    |  +- value</span>
+<span class="py-output">    |     +- ClassDoc for epydoc_test.D [10]</span>
+<span class="py-output">    |        +- bases</span>
+<span class="py-output">    |        |  +- ClassDoc for epydoc_test.A [2] (defined above)</span>
+<span class="py-output">    |        +- docstring = u'extra parens around base'</span>
+<span class="py-output">    |        +- variables = {}</span>
+<span class="py-output">    +- E => VariableDoc for epydoc_test.E [11]</span>
+<span class="py-output">    |  +- docstring = <UNKNOWN></span>
+<span class="py-output">    |  +- value</span>
+<span class="py-output">    |     +- ClassDoc for epydoc_test.E [12]</span>
+<span class="py-output">    |        +- bases</span>
+<span class="py-output">    |        |  +- ClassDoc for epydoc_test.A.Nested [4] (defined above)</span>
+<span class="py-output">    |        +- docstring = u'dotted name'</span>
+<span class="py-output">    |        +- variables = {}</span>
+<span class="py-output">    +- F => VariableDoc for epydoc_test.F [13]</span>
+<span class="py-output">    |  +- docstring = <UNKNOWN></span>
+<span class="py-output">    |  +- value</span>
+<span class="py-output">    |     +- ClassDoc for epydoc_test.F [14]</span>
+<span class="py-output">    |        +- bases</span>
+<span class="py-output">    |        |  +- ClassDoc for epydoc_test.A.Nested [4] (defined above)</span>
+<span class="py-output">    |        +- docstring = u'parens with dotted name'</span>
+<span class="py-output">    |        +- variables = {}</span>
+<span class="py-output">    +- Z => VariableDoc for epydoc_test.Z [15]</span>
+<span class="py-output">       +- docstring = <UNKNOWN></span>
+<span class="py-output">       +- value</span>
+<span class="py-output">          +- ClassDoc for epydoc_test.Z [16]</span>
+<span class="py-output">             +- bases = <UNKNOWN></span>
+<span class="py-output">             +- docstring = u'calculated base'</span>
+<span class="py-output">             +- variables = {}</span></pre>
+</blockquote>
+<p>Base lists:</p>
+</div>
+<div class="section" id="delete-statements">
+<h1>Delete Statements</h1>
+<p>Deleting variables:</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>runparser(s=<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">    x = y = 12</span>
+<span class="py-more">... </span><span class="py-string">    del y</span>
+<span class="py-more">... </span><span class="py-string">    """</span>,
+<span class="py-more">... </span>    attribs=<span class="py-string">'variables value parse_repr is_alias'</span>)
+<span class="py-output">ModuleDoc for epydoc_test [0]</span>
+<span class="py-output"> +- parse_repr = <UNKNOWN></span>
+<span class="py-output"> +- variables</span>
+<span class="py-output">    +- x => VariableDoc for epydoc_test.x [1]</span>
+<span class="py-output">       +- is_alias = True</span>
+<span class="py-output">       +- value</span>
+<span class="py-output">          +- GenericValueDoc [2]</span>
+<span class="py-output">             +- parse_repr = u'12'</span></pre>
+</blockquote>
+<p>The right-hand side of a <tt class="docutils literal"><span class="pre">del</span></tt> statement may contain a nested
+combination of lists, tuples, and parenthases.  All variables found
+anywhere in this nested structure should be deleted:</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>runparser(s=<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">    a=b=c=d=e=f=g=1</span>
+<span class="py-more">... </span><span class="py-string">    del a</span>
+<span class="py-more">... </span><span class="py-string">    del (b)</span>
+<span class="py-more">... </span><span class="py-string">    del [c]</span>
+<span class="py-more">... </span><span class="py-string">    del (d,)</span>
+<span class="py-more">... </span><span class="py-string">    del (((e,)),)</span>
+<span class="py-more">... </span><span class="py-string">    del [[[[f]]]]</span>
+<span class="py-more">... </span><span class="py-string">    """</span>,
+<span class="py-more">... </span>    attribs=<span class="py-string">'variables'</span>)
+<span class="py-output">ModuleDoc for epydoc_test [0]</span>
+<span class="py-output"> +- variables</span>
+<span class="py-output">    +- g => VariableDoc for epydoc_test.g [1]</span>
+<span class="py-output"></span><span class="py-prompt">>>> </span>runparser(s=<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">    a=b=c=d=e=f=g=1</span>
+<span class="py-more">... </span><span class="py-string">    del a,b</span>
+<span class="py-more">... </span><span class="py-string">    del (c,d)</span>
+<span class="py-more">... </span><span class="py-string">    del [e,f]</span>
+<span class="py-more">... </span><span class="py-string">    """</span>,
+<span class="py-more">... </span>    attribs=<span class="py-string">'variables'</span>)
+<span class="py-output">ModuleDoc for epydoc_test [0]</span>
+<span class="py-output"> +- variables</span>
+<span class="py-output">    +- g => VariableDoc for epydoc_test.g [1]</span>
+<span class="py-output"></span><span class="py-prompt">>>> </span>runparser(s=<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">    a=b=c=d=e=f=g=1</span>
+<span class="py-more">... </span><span class="py-string">    del ((a, (((((b, c)), d), [e]))), f)</span>
+<span class="py-more">... </span><span class="py-string">    """</span>,
+<span class="py-more">... </span>    attribs=<span class="py-string">'variables'</span>)
+<span class="py-output">ModuleDoc for epydoc_test [0]</span>
+<span class="py-output"> +- variables</span>
+<span class="py-output">    +- g => VariableDoc for epydoc_test.g [1]</span></pre>
+</blockquote>
+<p>The right-hand side of a <tt class="docutils literal"><span class="pre">del</span></tt> statement may contain a dotted name, in
+which case the named variable should be deleted from its containing
+namespace.</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>runparser(s=<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">    class A: a = b = 1</span>
+<span class="py-more">... </span><span class="py-string">    del A.a</span>
+<span class="py-more">... </span><span class="py-string">    """</span>,
+<span class="py-more">... </span>    attribs=<span class="py-string">'variables value local_variables'</span>)
+<span class="py-output">ModuleDoc for epydoc_test [0]</span>
+<span class="py-output"> +- variables</span>
+<span class="py-output">    +- A => VariableDoc for epydoc_test.A [1]</span>
+<span class="py-output">       +- value</span>
+<span class="py-output">          +- ClassDoc for epydoc_test.A [2]</span>
+<span class="py-output">             +- variables</span>
+<span class="py-output">                +- b => VariableDoc for epydoc_test.A.b [3]</span>
+<span class="py-output">                   +- value</span>
+<span class="py-output">                      +- GenericValueDoc [4]</span></pre>
+</blockquote>
+<p>If one of the variables to be deleted is expressed as anything other
+than a simple identifier or a dotted name, then ignore it.  (In
+particular, if we encounter 'del x[2]' then do not delete x.)</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>runparser(s=<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">    a = b = [1,2,3,4]</span>
+<span class="py-more">... </span><span class="py-string">    del a[2]</span>
+<span class="py-more">... </span><span class="py-string">    del a[2:]</span>
+<span class="py-more">... </span><span class="py-string">    del ([b], a[1])</span>
+<span class="py-more">... </span><span class="py-string">    """</span>,
+<span class="py-more">... </span>    attribs=<span class="py-string">'variables'</span>)
+<span class="py-output">ModuleDoc for epydoc_test [0]</span>
+<span class="py-output"> +- variables</span>
+<span class="py-output">    +- a => VariableDoc for epydoc_test.a [1]</span></pre>
+</blockquote>
+</div>
+<div class="section" id="single-line-blocks">
+<h1>Single-Line Blocks</h1>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>runparser(s=<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">    class A: 'docstring for A'</span>
+<span class="py-more">...</span>
+<span class="py-more">...</span>
+<span class="py-more">... </span><span class="py-string">    """</span>,
+<span class="py-more">... </span>    attribs=<span class="py-string">'variables value docstring'</span>)
+<span class="py-output">ModuleDoc for epydoc_test [0]</span>
+<span class="py-output"> +- docstring = <UNKNOWN></span>
+<span class="py-output"> +- variables</span>
+<span class="py-output">    +- A => VariableDoc for epydoc_test.A [1]</span>
+<span class="py-output">       +- docstring = <UNKNOWN></span>
+<span class="py-output">       +- value</span>
+<span class="py-output">          +- ClassDoc for epydoc_test.A [2]</span>
+<span class="py-output">             +- docstring = u'docstring for A'</span>
+<span class="py-output">             +- variables = {}</span></pre>
+</blockquote>
+</div>
+<div class="section" id="imports">
+<h1>Imports</h1>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>runparser(s=<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">    import re</span>
+<span class="py-more">... </span><span class="py-string">    from re import match</span>
+<span class="py-more">... </span><span class="py-string">    """</span>,
+<span class="py-more">... </span>    attribs=<span class="py-string">'variables value is_imported'</span>)
+<span class="py-output">ModuleDoc for epydoc_test [0]</span>
+<span class="py-output"> +- variables</span>
+<span class="py-output">    +- match => VariableDoc for epydoc_test.match [1]</span>
+<span class="py-output">    |  +- is_imported = True</span>
+<span class="py-output">    |  +- value = <UNKNOWN></span>
+<span class="py-output">    +- re => VariableDoc for epydoc_test.re [2]</span>
+<span class="py-output">       +- is_imported = True</span>
+<span class="py-output">       +- value = <UNKNOWN></span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>runparser(s=<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">    from re import match as much, split, sub as scuba</span>
+<span class="py-more">... </span><span class="py-string">    """</span>,
+<span class="py-more">... </span>    attribs=<span class="py-string">'variables name imported_from'</span>)
+<span class="py-output">ModuleDoc for epydoc_test [0]</span>
+<span class="py-output"> +- variables</span>
+<span class="py-output">    +- much => VariableDoc for epydoc_test.much [1]</span>
+<span class="py-output">    |  +- imported_from = DottedName(u're', u'match')</span>
+<span class="py-output">    |  +- name = u'much'</span>
+<span class="py-output">    +- scuba => VariableDoc for epydoc_test.scuba [2]</span>
+<span class="py-output">    |  +- imported_from = DottedName(u're', u'sub')</span>
+<span class="py-output">    |  +- name = u'scuba'</span>
+<span class="py-output">    +- split => VariableDoc for epydoc_test.split [3]</span>
+<span class="py-output">       +- imported_from = DottedName(u're', u'split')</span>
+<span class="py-output">       +- name = u'split'</span></pre>
+</blockquote>
+</div>
+<div class="section" id="unicode">
+<h1>Unicode</h1>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>runparser(s=<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">    def f(x):</span>
+<span class="py-more">... </span><span class="py-string">        u"unicode in docstring: \u1000"</span>
+<span class="py-more">... </span><span class="py-string">    """</span>,
+<span class="py-more">... </span>    attribs=<span class="py-string">'variables value docstring'</span>)
+<span class="py-output">ModuleDoc for epydoc_test [0]</span>
+<span class="py-output"> +- docstring = <UNKNOWN></span>
+<span class="py-output"> +- variables</span>
+<span class="py-output">    +- f => VariableDoc for epydoc_test.f [1]</span>
+<span class="py-output">       +- docstring = <UNKNOWN></span>
+<span class="py-output">       +- value</span>
+<span class="py-output">          +- RoutineDoc for epydoc_test.f [2]</span>
+<span class="py-output">             +- docstring = u'unicode in docstring: \u1000'</span></pre>
+</blockquote>
+</div>
+<div class="section" id="instance-variables">
+<h1>Instance Variables</h1>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>runparser(s=<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">    class A:</span>
+<span class="py-more">... </span><span class="py-string">        def __init__(self, x, y):</span>
+<span class="py-more">... </span><span class="py-string">            self.x = 10</span>
+<span class="py-more">...</span>
+<span class="py-more">... </span><span class="py-string">            self.y = 20 #: docstring for y</span>
+<span class="py-more">...</span>
+<span class="py-more">... </span><span class="py-string">            self.z = 30</span>
+<span class="py-more">... </span><span class="py-string">            '''docstring for z'''</span>
+<span class="py-more">...</span>
+<span class="py-more">... </span><span class="py-string">    """</span>,
+<span class="py-more">... </span>    attribs=<span class="py-string">'variables value is_instvar docstring local_variables'</span>)
+<span class="py-output">ModuleDoc for epydoc_test [0]</span>
+<span class="py-output"> +- docstring = <UNKNOWN></span>
+<span class="py-output"> +- variables</span>
+<span class="py-output">    +- A => VariableDoc for epydoc_test.A [1]</span>
+<span class="py-output">       +- docstring = <UNKNOWN></span>
+<span class="py-output">       +- is_instvar = <UNKNOWN></span>
+<span class="py-output">       +- value</span>
+<span class="py-output">          +- ClassDoc for epydoc_test.A [2]</span>
+<span class="py-output">             +- docstring = <UNKNOWN></span>
+<span class="py-output">             +- variables</span>
+<span class="py-output">                +- __init__ => VariableDoc for epydoc_test.A.__init__ [3]</span>
+<span class="py-output">                |  +- docstring = <UNKNOWN></span>
+<span class="py-output">                |  +- is_instvar = <UNKNOWN></span>
+<span class="py-output">                |  +- value</span>
+<span class="py-output">                |     +- RoutineDoc for epydoc_test.A.__init__ [4]</span>
+<span class="py-output">                |        +- docstring = <UNKNOWN></span>
+<span class="py-output">                +- y => VariableDoc for epydoc_test.A.y [5]</span>
+<span class="py-output">                |  +- docstring = u'docstring for y'</span>
+<span class="py-output">                |  +- is_instvar = True</span>
+<span class="py-output">                |  +- value = <UNKNOWN></span>
+<span class="py-output">                +- z => VariableDoc for epydoc_test.A.z [6]</span>
+<span class="py-output">                   +- docstring = u'docstring for z'</span>
+<span class="py-output">                   +- is_instvar = True</span>
+<span class="py-output">                   +- value = <UNKNOWN></span></pre>
+</blockquote>
+</div>
+<div class="section" id="assignments-into-namespaces">
+<h1>Assignments Into Namespaces</h1>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>runparser(s=<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">    class A: pass</span>
+<span class="py-more">... </span><span class="py-string">    A.x = 22</span>
+<span class="py-more">... </span><span class="py-string">    """</span>,
+<span class="py-more">... </span>    attribs=<span class="py-string">'variables value local_variables'</span>)
+<span class="py-output">ModuleDoc for epydoc_test [0]</span>
+<span class="py-output"> +- variables</span>
+<span class="py-output">    +- A => VariableDoc for epydoc_test.A [1]</span>
+<span class="py-output">       +- value</span>
+<span class="py-output">          +- ClassDoc for epydoc_test.A [2]</span>
+<span class="py-output">             +- variables</span>
+<span class="py-output">                +- x => VariableDoc for epydoc_test.A.x [3]</span>
+<span class="py-output">                   +- value</span>
+<span class="py-output">                      +- GenericValueDoc [4]</span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>runparser(s=<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">    Exception.x = 10</span>
+<span class="py-more">... </span><span class="py-string">    """</span>,
+<span class="py-more">... </span>    attribs=<span class="py-string">'variables value local_variables'</span>)
+<span class="py-output">ModuleDoc for epydoc_test [0]</span>
+<span class="py-output"> +- variables = {}</span></pre>
+</blockquote>
+</div>
+</div>
+<table width="100%" class="navbox" cellpadding="1" cellspacing="0">
+  <tr>
+  <a class="nav" href="../index.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="../index.html">
+    Home</a></td></a>
+  <a class="nav" href="../installing.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="../installing.html">
+    Installing Epydoc</a></td></a>
+  <a class="nav" href="../using.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="../using.html">
+    Using Epydoc</a></td></a>
+  <a class="nav" href="../epytext.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="../epytext.html">
+    Epytext</a></td></a>
+  <td align="center" width="20%" class="nav">
+    
+    <A href="http://sourceforge.net/projects/epydoc"> 
+    <IMG src="../sflogo.png" 
+    width="88" height="26" border="0" alt="SourceForge"
+    align="top"/></A></td>
+    </tr>
+</table>
+</body>
+</html>
diff --git a/doc/doctest/encoding.html b/doc/doctest/encoding.html
new file mode 100644
index 0000000..0faaf83
--- /dev/null
+++ b/doc/doctest/encoding.html
@@ -0,0 +1,300 @@
+<?xml version="1.0" encoding="ascii" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ascii" />
+<meta name="generator" content="Docutils 0.5: http://docutils.sourceforge.net/" />
+<title>End-to-end Tests for Unicode Encoding</title>
+<link rel="stylesheet" href="../custom.css" type="text/css" />
+</head>
+<body>
+<div class="document" id="end-to-end-tests-for-unicode-encoding">
+<h1 class="title">End-to-end Tests for Unicode Encoding</h1>
+
+<div class="section" id="test-function">
+<h1>Test Function</h1>
+<p>The function <cite>testencoding</cite> 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
+HTML output, and displays them.  (In order to extract & display all
+docstrings, it monkey-patches the HMTLwriter.docstring_to_html()
+method.)</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">from</span> epydoc.test.util <span class="py-keyword">import</span> testencoding</pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">from</span> epydoc.test.util <span class="py-keyword">import</span> print_warnings
+<span class="py-prompt">>>> </span>print_warnings()</pre>
+</blockquote>
+</div>
+<div class="section" id="encoding-tests">
+<h1>Encoding Tests</h1>
+<p>This section tests the output for a variety of different encodings.
+Note that some encodings (such as cp424) are not supported, since
+the ascii coding directive would result in a syntax error in the
+new encoding.</p>
+<p>Tests for several Microsoft codepges:</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>testencoding(<span class="py-string">'''# -*- coding: cp874 -*-</span>
+<span class="py-more">... </span><span class="py-string">"""abc ABC 123 \x80 \x85"""</span>
+<span class="py-more">... </span><span class="py-string">'''</span>)
+<span class="py-output"><p>abc ABC 123 &#8364; &#8230;</p></span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>testencoding(<span class="py-string">'''# -*- coding: cp1250 -*-</span>
+<span class="py-more">... </span><span class="py-string">"""abc ABC 123 \x80 \x82 \x84 \x85 \xff"""</span>
+<span class="py-more">... </span><span class="py-string">'''</span>)
+<span class="py-output"><p>abc ABC 123 &#8364; &#8218; &#8222; &#8230; &#729;</p></span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>testencoding(<span class="py-string">'''# -*- coding: cp1251 -*-</span>
+<span class="py-more">... </span><span class="py-string">"""abc ABC 123 \x80 \x81 \x82 \xff"""</span>
+<span class="py-more">... </span><span class="py-string">'''</span>)
+<span class="py-output"><p>abc ABC 123 &#1026; &#1027; &#8218; &#1103;</p></span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>testencoding(<span class="py-string">'''# -*- coding: cp1252 -*-</span>
+<span class="py-more">... </span><span class="py-string">"""abc ABC 123 \x80 \x82 \x83 \xff"""</span>
+<span class="py-more">... </span><span class="py-string">'''</span>)
+<span class="py-output"><p>abc ABC 123 &#8364; &#8218; &#402; &#255;</p></span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>testencoding(<span class="py-string">'''# -*- coding: cp1253 -*-</span>
+<span class="py-more">... </span><span class="py-string">"""abc ABC 123 \x80 \x82 \x83 \xfe"""</span>
+<span class="py-more">... </span><span class="py-string">'''</span>)
+<span class="py-output"><p>abc ABC 123 &#8364; &#8218; &#402; &#974;</p></span></pre>
+</blockquote>
+<p>Unicode tests:</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>utf8_test =<span class="py-string">'''\</span>
+<span class="py-more">... </span><span class="py-string">"""abc ABC 123</span>
+<span class="py-more">...</span>
+<span class="py-more">... </span><span class="py-string">0x80-0x7ff range:</span>
+<span class="py-more">... </span><span class="py-string">\xc2\x80 \xc2\x81 \xdf\xbe \xdf\xbf</span>
+<span class="py-more">...</span>
+<span class="py-more">... </span><span class="py-string">0x800-0xffff range:</span>
+<span class="py-more">... </span><span class="py-string">\xe0\xa0\x80 \xe0\xa0\x81 \xef\xbf\xbe \xef\xbf\xbf</span>
+<span class="py-more">...</span>
+<span class="py-more">... </span><span class="py-string">0x10000-0x10ffff range:</span>
+<span class="py-more">... </span><span class="py-string">\xf0\x90\x80\x80 \xf0\x90\x80\x81</span>
+<span class="py-more">... </span><span class="py-string">\xf4\x8f\xbf\xbe \xf4\x8f\xbf\xbf</span>
+<span class="py-more">... </span><span class="py-string">"""\n'''</span>
+<span class="py-prompt">>>> </span>utf8_bom = <span class="py-string">'\xef\xbb\xbf'</span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-comment"># UTF-8 with a coding directive:</span>
+<span class="py-prompt">>>> </span>testencoding(<span class="py-string">"# -*- coding: utf-8 -*-\n"</span>+utf8_test)
+<span class="py-output"><p>abc ABC 123</p></span>
+<span class="py-output"><p>0x80-0x7ff range: &#128; &#129; &#2046; &#2047;</p></span>
+<span class="py-output"><p>0x800-0xffff range: &#2048; &#2049; &#65534; &#65535;</p></span>
+<span class="py-output"><p>0x10000-0x10ffff range: &#65536; &#65537; &#1114110; &#1114111;</p></span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-comment"># UTF-8 with a BOM & a coding directive:</span>
+<span class="py-prompt">>>> </span>testencoding(utf8_bom+<span class="py-string">"# -*- coding: utf-8 -*-\n"</span>+utf8_test)
+<span class="py-output"><p>abc ABC 123</p></span>
+<span class="py-output"><p>0x80-0x7ff range: &#128; &#129; &#2046; &#2047;</p></span>
+<span class="py-output"><p>0x800-0xffff range: &#2048; &#2049; &#65534; &#65535;</p></span>
+<span class="py-output"><p>0x10000-0x10ffff range: &#65536; &#65537; &#1114110; &#1114111;</p></span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-comment"># UTF-8 with a BOM & no coding directive:</span>
+<span class="py-prompt">>>> </span>testencoding(utf8_bom+utf8_test)
+<span class="py-output"><p>abc ABC 123</p></span>
+<span class="py-output"><p>0x80-0x7ff range: &#128; &#129; &#2046; &#2047;</p></span>
+<span class="py-output"><p>0x800-0xffff range: &#2048; &#2049; &#65534; &#65535;</p></span>
+<span class="py-output"><p>0x10000-0x10ffff range: &#65536; &#65537; &#1114110; &#1114111;</p></span></pre>
+</blockquote>
+<p>Tests for KOI8-R:</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>testencoding(<span class="py-string">'''# -*- coding: koi8-r -*-</span>
+<span class="py-more">... </span><span class="py-string">"""abc ABC 123 \x80 \x82 \x83 \xff"""</span>
+<span class="py-more">... </span><span class="py-string">'''</span>)
+<span class="py-output"><p>abc ABC 123 &#9472; &#9484; &#9488; &#1066;</p></span></pre>
+</blockquote>
+<p>Tests for 'coding' directive on the second line:</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>testencoding(<span class="py-string">'''\n# -*- coding: cp1252 -*-</span>
+<span class="py-more">... </span><span class="py-string">"""abc ABC 123 \x80 \x82 \x83 \xff"""</span>
+<span class="py-more">... </span><span class="py-string">'''</span>)
+<span class="py-output"><p>abc ABC 123 &#8364; &#8218; &#402; &#255;</p></span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>testencoding(<span class="py-string">'''# comment on the first line.\n# -*- coding: cp1252 -*-</span>
+<span class="py-more">... </span><span class="py-string">"""abc ABC 123 \x80 \x82 \x83 \xff"""</span>
+<span class="py-more">... </span><span class="py-string">'''</span>)
+<span class="py-output"><p>abc ABC 123 &#8364; &#8218; &#402; &#255;</p></span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>testencoding(<span class="py-string">"\n# -*- coding: utf-8 -*-\n"</span>+utf8_test)
+<span class="py-output"><p>abc ABC 123</p></span>
+<span class="py-output"><p>0x80-0x7ff range: &#128; &#129; &#2046; &#2047;</p></span>
+<span class="py-output"><p>0x800-0xffff range: &#2048; &#2049; &#65534; &#65535;</p></span>
+<span class="py-output"><p>0x10000-0x10ffff range: &#65536; &#65537; &#1114110; &#1114111;</p></span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>testencoding(<span class="py-string">"# comment\n# -*- coding: utf-8 -*-\n"</span>+utf8_test)
+<span class="py-output"><p>abc ABC 123</p></span>
+<span class="py-output"><p>0x80-0x7ff range: &#128; &#129; &#2046; &#2047;</p></span>
+<span class="py-output"><p>0x800-0xffff range: &#2048; &#2049; &#65534; &#65535;</p></span>
+<span class="py-output"><p>0x10000-0x10ffff range: &#65536; &#65537; &#1114110; &#1114111;</p></span></pre>
+</blockquote>
+<p>Tests for shift-jis</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>testencoding(<span class="py-string">'''# -*- coding: shift_jis -*-</span>
+<span class="py-more">... </span><span class="py-string">"""abc ABC 123 \xA1 \xA2 \xA3"""</span>
+<span class="py-more">... </span><span class="py-string">'''</span>) <span class="py-comment"># doctest: +PYTHON2.4</span>
+<span class="py-output">abc ABC 123 &#65377; &#65378; &#65379;</span></pre>
+</blockquote>
+</div>
+<div class="section" id="str-unicode-test">
+<h1>Str/Unicode Test</h1>
+<p>Make sure that we use the coding for both str and unicode docstrings.</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>testencoding(<span class="py-string">'''# -*- coding: utf-8 -*-</span>
+<span class="py-more">... </span><span class="py-string">"""abc ABC 123 \xc2\x80 \xdf\xbf \xe0\xa0\x80"""</span>
+<span class="py-more">... </span><span class="py-string">'''</span>)
+<span class="py-output"><p>abc ABC 123 &#128; &#2047; &#2048;</p></span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>testencoding(<span class="py-string">'''# -*- coding: utf-8 -*-</span>
+<span class="py-more">... </span><span class="py-string">u"""abc ABC 123 \xc2\x80 \xdf\xbf \xe0\xa0\x80"""</span>
+<span class="py-more">... </span><span class="py-string">'''</span>)
+<span class="py-output"><p>abc ABC 123 &#128; &#2047; &#2048;</p></span></pre>
+</blockquote>
+<p>Under special circumstances, we may not be able to tell what the
+proper encoding for a docstring is.  This happens if:</p>
+<ol class="arabic simple">
+<li>the docstring is only available via introspection.</li>
+<li>we are unable to determine what module the object that owns
+the docstring came from.</li>
+<li>the docstring contains non-ascii characters</li>
+</ol>
+<p>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:</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>testencoding(<span class="py-string">'''# -*- coding: utf-8 -*-</span>
+<span class="py-more">... </span><span class="py-string">p=property(doc="""\xc2\x80""")</span>
+<span class="py-more">... </span><span class="py-string">'''</span>) <span class="py-comment"># doctest: +ELLIPSIS</span>
+<span class="py-output"><property object at ...>'s docstring is not a unicode string, but it contains non-ascii data -- treating it as latin-1.</span>
+<span class="py-output">&#194;&#128;</span></pre>
+</blockquote>
+</div>
+<div class="section" id="introspection-parsing-tests">
+<h1>Introspection/Parsing Tests</h1>
+<p>This section checks to make sure that both introspection & parsing are
+getting the right results.</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>testencoding(<span class="py-string">"# -*- coding: utf-8 -*-\n"</span>+utf8_test, introspect=False)
+<span class="py-output"><p>abc ABC 123</p></span>
+<span class="py-output"><p>0x80-0x7ff range: &#128; &#129; &#2046; &#2047;</p></span>
+<span class="py-output"><p>0x800-0xffff range: &#2048; &#2049; &#65534; &#65535;</p></span>
+<span class="py-output"><p>0x10000-0x10ffff range: &#65536; &#65537; &#1114110; &#1114111;</p></span>
+<span class="py-output"></span><span class="py-prompt">>>> </span>testencoding(utf8_bom+<span class="py-string">"# -*- coding: utf-8 -*-\n"</span>+utf8_test, introspect=False)
+<span class="py-output"><p>abc ABC 123</p></span>
+<span class="py-output"><p>0x80-0x7ff range: &#128; &#129; &#2046; &#2047;</p></span>
+<span class="py-output"><p>0x800-0xffff range: &#2048; &#2049; &#65534; &#65535;</p></span>
+<span class="py-output"><p>0x10000-0x10ffff range: &#65536; &#65537; &#1114110; &#1114111;</p></span>
+<span class="py-output"></span><span class="py-prompt">>>> </span>testencoding(utf8_bom+utf8_test, introspect=False)
+<span class="py-output"><p>abc ABC 123</p></span>
+<span class="py-output"><p>0x80-0x7ff range: &#128; &#129; &#2046; &#2047;</p></span>
+<span class="py-output"><p>0x800-0xffff range: &#2048; &#2049; &#65534; &#65535;</p></span>
+<span class="py-output"><p>0x10000-0x10ffff range: &#65536; &#65537; &#1114110; &#1114111;</p></span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>testencoding(<span class="py-string">"# -*- coding: utf-8 -*-\n"</span>+utf8_test, parse=False)
+<span class="py-output"><p>abc ABC 123</p></span>
+<span class="py-output"><p>0x80-0x7ff range: &#128; &#129; &#2046; &#2047;</p></span>
+<span class="py-output"><p>0x800-0xffff range: &#2048; &#2049; &#65534; &#65535;</p></span>
+<span class="py-output"><p>0x10000-0x10ffff range: &#65536; &#65537; &#1114110; &#1114111;</p></span>
+<span class="py-output"></span><span class="py-prompt">>>> </span>testencoding(utf8_bom+<span class="py-string">"# -*- coding: utf-8 -*-\n"</span>+utf8_test, parse=False)
+<span class="py-output"><p>abc ABC 123</p></span>
+<span class="py-output"><p>0x80-0x7ff range: &#128; &#129; &#2046; &#2047;</p></span>
+<span class="py-output"><p>0x800-0xffff range: &#2048; &#2049; &#65534; &#65535;</p></span>
+<span class="py-output"><p>0x10000-0x10ffff range: &#65536; &#65537; &#1114110; &#1114111;</p></span>
+<span class="py-output"></span><span class="py-prompt">>>> </span>testencoding(utf8_bom+utf8_test, parse=False)
+<span class="py-output"><p>abc ABC 123</p></span>
+<span class="py-output"><p>0x80-0x7ff range: &#128; &#129; &#2046; &#2047;</p></span>
+<span class="py-output"><p>0x800-0xffff range: &#2048; &#2049; &#65534; &#65535;</p></span>
+<span class="py-output"><p>0x10000-0x10ffff range: &#65536; &#65537; &#1114110; &#1114111;</p></span></pre>
+</blockquote>
+</div>
+<div class="section" id="context-checks">
+<h1>Context checks</h1>
+<p>Make sure that docstrings are rendered correctly in different contexts.</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>testencoding(<span class="py-string">'''# -*- coding: utf-8 -*-</span>
+<span class="py-more">... </span><span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">@var x: abc ABC 123 \xc2\x80 \xdf\xbf \xe0\xa0\x80</span>
+<span class="py-more">... </span><span class="py-string">@group \xc2\x80: x</span>
+<span class="py-more">... </span><span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">'''</span>)
+<span class="py-output">abc ABC 123 &#128; &#2047; &#2048;</span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>testencoding(<span class="py-string">'''# -*- coding: utf-8 -*-</span>
+<span class="py-more">... </span><span class="py-string">def f(x):</span>
+<span class="py-more">... </span><span class="py-string">    """</span>
+<span class="py-more">... </span><span class="py-string">    abc ABC 123 \xc2\x80 \xdf\xbf \xe0\xa0\x80</span>
+<span class="py-more">... </span><span class="py-string">    @param x: abc ABC 123 \xc2\x80 \xdf\xbf \xe0\xa0\x80</span>
+<span class="py-more">... </span><span class="py-string">    @type x: abc ABC 123 \xc2\x80 \xdf\xbf \xe0\xa0\x80</span>
+<span class="py-more">... </span><span class="py-string">    @return: abc ABC 123 \xc2\x80 \xdf\xbf \xe0\xa0\x80</span>
+<span class="py-more">... </span><span class="py-string">    @rtype: abc ABC 123 \xc2\x80 \xdf\xbf \xe0\xa0\x80</span>
+<span class="py-more">... </span><span class="py-string">    @except X: abc ABC 123 \xc2\x80 \xdf\xbf \xe0\xa0\x80</span>
+<span class="py-more">... </span><span class="py-string">    """</span>
+<span class="py-more">... </span><span class="py-string">'''</span>)
+<span class="py-output">abc ABC 123 &#128; &#2047; &#2048;</span>
+<span class="py-output">abc ABC 123 &#128; &#2047; &#2048;</span>
+<span class="py-output"><p>abc ABC 123 &#128; &#2047; &#2048;</p></span>
+<span class="py-output">abc ABC 123 &#128; &#2047; &#2048;</span>
+<span class="py-output">abc ABC 123 &#128; &#2047; &#2048;</span>
+<span class="py-output">abc ABC 123 &#128; &#2047; &#2048;</span>
+<span class="py-output">abc ABC 123 &#128; &#2047; &#2048;</span>
+<span class="py-output">abc ABC 123 &#128; &#2047; &#2048;</span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>testencoding(<span class="py-string">'''# -*- coding: utf-8 -*-</span>
+<span class="py-more">... </span><span class="py-string">class A:</span>
+<span class="py-more">... </span><span class="py-string">    """</span>
+<span class="py-more">... </span><span class="py-string">    abc ABC 123 \xc2\x80 \xdf\xbf \xe0\xa0\x80</span>
+<span class="py-more">... </span><span class="py-string">    @ivar x: abc ABC 123 \xc2\x80 \xdf\xbf \xe0\xa0\x80</span>
+<span class="py-more">... </span><span class="py-string">    @cvar y: abc ABC 123 \xc2\x80 \xdf\xbf \xe0\xa0\x80</span>
+<span class="py-more">... </span><span class="py-string">    @type x: abc ABC 123 \xc2\x80 \xdf\xbf \xe0\xa0\x80</span>
+<span class="py-more">... </span><span class="py-string">    """</span>
+<span class="py-more">...</span>
+<span class="py-more">... </span><span class="py-string">    z = property(doc=u"abc ABC 123 \xc2\x80 \xdf\xbf \xe0\xa0\x80")</span>
+<span class="py-more">... </span><span class="py-string">'''</span>)
+<span class="py-output">abc ABC 123 &#128; &#2047; &#2048;</span>
+<span class="py-output"><p>abc ABC 123 &#128; &#2047; &#2048;</p></span>
+<span class="py-output">abc ABC 123 &#128; &#2047; &#2048;</span>
+<span class="py-output">abc ABC 123 &#128; &#2047; &#2048;</span>
+<span class="py-output">abc ABC 123 &#128; &#2047; &#2048;</span>
+<span class="py-output">abc ABC 123 &#128; &#2047; &#2048;</span></pre>
+</blockquote>
+</div>
+</div>
+<table width="100%" class="navbox" cellpadding="1" cellspacing="0">
+  <tr>
+  <a class="nav" href="../index.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="../index.html">
+    Home</a></td></a>
+  <a class="nav" href="../installing.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="../installing.html">
+    Installing Epydoc</a></td></a>
+  <a class="nav" href="../using.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="../using.html">
+    Using Epydoc</a></td></a>
+  <a class="nav" href="../epytext.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="../epytext.html">
+    Epytext</a></td></a>
+  <td align="center" width="20%" class="nav">
+    
+    <A href="http://sourceforge.net/projects/epydoc"> 
+    <IMG src="../sflogo.png" 
+    width="88" height="26" border="0" alt="SourceForge"
+    align="top"/></A></td>
+    </tr>
+</table>
+</body>
+</html>
diff --git a/doc/doctest/epytext.html b/doc/doctest/epytext.html
new file mode 100644
index 0000000..eda0e18
--- /dev/null
+++ b/doc/doctest/epytext.html
@@ -0,0 +1,402 @@
+<?xml version="1.0" encoding="ascii" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ascii" />
+<meta name="generator" content="Docutils 0.5: http://docutils.sourceforge.net/" />
+<title>Regression Testing for epytext</title>
+<link rel="stylesheet" href="../custom.css" type="text/css" />
+</head>
+<body>
+<div class="document" id="regression-testing-for-epytext">
+<h1 class="title">Regression Testing for epytext</h1>
+
+<p>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
+than it was with unittest.</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">from</span> epydoc.test.util <span class="py-keyword">import</span> print_warnings
+<span class="py-prompt">>>> </span>print_warnings()</pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">from</span> epydoc.markup <span class="py-keyword">import</span> epytext
+<span class="py-prompt">>>> </span><span class="py-keyword">import</span> re
+<span class="py-prompt">>>> </span><span class="py-keyword">def</span> <span class="py-defname">testparse</span>(s):
+<span class="py-more">... </span>    <span class="py-comment"># this strips off the <epytext>...</epytext></span>
+<span class="py-more">... </span>    out = <span class="py-string">''</span>.join([str(n) <span class="py-keyword">for</span> n <span class="py-keyword">in</span>
+<span class="py-more">... </span>                   epytext.parse(s).children])
+<span class="py-more">... </span>    <span class="py-comment"># This is basically word-wrapping:</span>
+<span class="py-more">... </span>    out = re.sub(r<span class="py-string">'((</\w+>)+)'</span>, r<span class="py-string">'\1\n'</span>, out).rstrip()
+<span class="py-more">... </span>    out = re.sub(r<span class="py-string">'(?m)^(.{50,70}>)(.)'</span>, r<span class="py-string">'\1\n\2'</span>, out).rstrip()
+<span class="py-more">... </span>    return out
+<span class="py-prompt">>>> </span><span class="py-keyword">def</span> <span class="py-defname">checkparse</span>(s, expect):
+<span class="py-more">... </span>    <span class="py-comment"># this strips off the <epytext>...</epytext></span>
+<span class="py-more">... </span>    got = <span class="py-string">''</span>.join([str(n) <span class="py-keyword">for</span> n <span class="py-keyword">in</span> epytext.parse(s).children])
+<span class="py-more">... </span>    <span class="py-keyword">if</span> got != expect:
+<span class="py-more">... </span>        raise ValueError(<span class="py-string">'mismatch: %r %r'</span> % (expect, got))</pre>
+</blockquote>
+<p>Paragraphs:</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">print</span> testparse(<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">    this is one paragraph.</span>
+<span class="py-more">...</span>
+<span class="py-more">... </span><span class="py-string">    This is</span>
+<span class="py-more">... </span><span class="py-string">    another.</span>
+<span class="py-more">...</span>
+<span class="py-more">... </span><span class="py-string">    This is a third"""</span>)
+<span class="py-output"><para>this is one paragraph.</para></span>
+<span class="py-output"><para>This is another.</para></span>
+<span class="py-output"><para>This is a third</para></span></pre>
+</blockquote>
+<p>Make sure that unindented fields are allowed:</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">print</span> testparse(<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">    This is a paragraph.</span>
+<span class="py-more">...</span>
+<span class="py-more">... </span><span class="py-string">    @foo: This is a field."""</span>)
+<span class="py-output"><para>This is a paragraph.</para></span>
+<span class="py-output"><fieldlist><field><tag>foo</tag></span>
+<span class="py-output"><para inline=True>This is a field.</para></field></fieldlist></span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">print</span> testparse(<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">    This is a paragraph.</span>
+<span class="py-more">... </span><span class="py-string">    @foo: This is a field."""</span>)
+<span class="py-output"><para>This is a paragraph.</para></span>
+<span class="py-output"><fieldlist><field><tag>foo</tag></span>
+<span class="py-output"><para inline=True>This is a field.</para></field></fieldlist></span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">print</span> testparse(<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">    This is a paragraph.</span>
+<span class="py-more">... </span><span class="py-string">      @foo: This is a field.</span>
+<span class="py-more">... </span><span class="py-string">        Hello."""</span>)
+<span class="py-output"><para>This is a paragraph.</para></span>
+<span class="py-output"><fieldlist><field><tag>foo</tag></span>
+<span class="py-output"><para inline=True>This is a field. Hello.</para></field></span>
+<span class="py-output"></fieldlist></span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">print</span> testparse(<span class="py-string">"""Paragraph\n at foo: field"""</span>)
+<span class="py-output"><para>Paragraph</para></span>
+<span class="py-output"><fieldlist><field><tag>foo</tag></span>
+<span class="py-output"><para inline=True>field</para></field></fieldlist></span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">print</span> testparse(<span class="py-string">"""Paragraph\n\n at foo: field"""</span>)
+<span class="py-output"><para>Paragraph</para></span>
+<span class="py-output"><fieldlist><field><tag>foo</tag></span>
+<span class="py-output"><para inline=True>field</para></field></fieldlist></span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">print</span> testparse(<span class="py-string">"""\nParagraph\n at foo: field"""</span>)
+<span class="py-output"><para>Paragraph</para></span>
+<span class="py-output"><fieldlist><field><tag>foo</tag></span>
+<span class="py-output"><para inline=True>field</para></field></fieldlist></span></pre>
+</blockquote>
+<p>Make sure thta unindented lists are not allowed:</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">print</span> testparse(<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">    This is a paragraph.</span>
+<span class="py-more">...</span>
+<span class="py-more">... </span><span class="py-string">    - This is a list item."""</span>)
+<span class="py-except">Traceback (most recent call last):</span>
+<span class="py-except">StructuringError: Line 4: Lists must be indented.</span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">print</span> testparse(<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">    This is a paragraph.</span>
+<span class="py-more">... </span><span class="py-string">    - This is a list item."""</span>)
+<span class="py-except">Traceback (most recent call last):</span>
+<span class="py-except">StructuringError: Line 3: Lists must be indented.</span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">print</span> testparse(<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">    This is a paragraph.</span>
+<span class="py-more">... </span><span class="py-string">      - This is a list item.</span>
+<span class="py-more">... </span><span class="py-string">        Hello.</span>
+<span class="py-more">... </span><span class="py-string">        - Sublist item"""</span>)
+<span class="py-except">Traceback (most recent call last):</span>
+<span class="py-except">StructuringError: Line 5: Lists must be indented.</span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">print</span> testparse(<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">    This is a paragraph.</span>
+<span class="py-more">... </span><span class="py-string">      - This is a list item.</span>
+<span class="py-more">... </span><span class="py-string">        Hello.</span>
+<span class="py-more">...</span>
+<span class="py-more">... </span><span class="py-string">        - Sublist item"""</span>)
+<span class="py-except">Traceback (most recent call last):</span>
+<span class="py-except">StructuringError: Line 6: Lists must be indented.</span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">print</span> testparse(<span class="py-string">"""Paragraph\n\n- list item"""</span>)
+<span class="py-except">Traceback (most recent call last):</span>
+<span class="py-except">StructuringError: Line 3: Lists must be indented.</span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">print</span> testparse(<span class="py-string">"""\nParagraph\n- list item"""</span>)
+<span class="py-except">Traceback (most recent call last):</span>
+<span class="py-except">StructuringError: Line 3: Lists must be indented.</span></pre>
+</blockquote>
+<p>Special case if there's text on the same line as the opening quote:</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">print</span> testparse(<span class="py-string">"""Paragraph\n- list item"""</span>)
+<span class="py-output"><para>Paragraph</para></span>
+<span class="py-output"><ulist><li><para inline=True>list item</para></li></ulist></span></pre>
+</blockquote>
+<p>Make sure that indented lists are allowed:</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">print</span> testparse(<span class="py-string">'This is a paragraph.\n  - This is a list item.\n'</span>+
+<span class="py-more">... </span>          <span class="py-string">'This is a paragraph'</span>)
+<span class="py-output"><para>This is a paragraph.</para></span>
+<span class="py-output"><ulist><li><para inline=True>This is a list item.</para></li></span>
+<span class="py-output"></ulist></span>
+<span class="py-output"><para>This is a paragraph</para></span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">print</span> testparse(<span class="py-string">'This is a paragraph.\n\n  - This is a list item.'</span>+
+<span class="py-more">... </span>          <span class="py-string">'\n\nThis is a paragraph'</span>)
+<span class="py-output"><para>This is a paragraph.</para></span>
+<span class="py-output"><ulist><li><para inline=True>This is a list item.</para></li></span>
+<span class="py-output"></ulist></span>
+<span class="py-output"><para>This is a paragraph</para></span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">print</span> testparse(<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">    This is a paragraph.</span>
+<span class="py-more">...</span>
+<span class="py-more">... </span><span class="py-string">      - This is a list item.</span>
+<span class="py-more">...</span>
+<span class="py-more">... </span><span class="py-string">    This is a paragraph"""</span>)
+<span class="py-output"><para>This is a paragraph.</para></span>
+<span class="py-output"><ulist><li><para inline=True>This is a list item.</para></li></span>
+<span class="py-output"></ulist></span>
+<span class="py-output"><para>This is a paragraph</para></span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">print</span> testparse(<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">    This is a paragraph.</span>
+<span class="py-more">...</span>
+<span class="py-more">... </span><span class="py-string">          - This is a list item.</span>
+<span class="py-more">... </span><span class="py-string">    This is a paragraph"""</span>)
+<span class="py-output"><para>This is a paragraph.</para></span>
+<span class="py-output"><ulist><li><para inline=True>This is a list item.</para></li></span>
+<span class="py-output"></ulist></span>
+<span class="py-output"><para>This is a paragraph</para></span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">print</span> testparse(<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">      - This is a list item."""</span>)
+<span class="py-output"><ulist><li><para inline=True>This is a list item.</para></li></span>
+<span class="py-output"></ulist></span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">print</span> testparse(<span class="py-string">"""- This is a list item."""</span>)
+<span class="py-output"><ulist><li><para inline=True>This is a list item.</para></li></span>
+<span class="py-output"></ulist></span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">print</span> testparse(<span class="py-string">"""\n- This is a list item."""</span>)
+<span class="py-output"><ulist><li><para inline=True>This is a list item.</para></li></span>
+<span class="py-output"></ulist></span></pre>
+</blockquote>
+<p>Basic list tests:</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>P1 = <span class="py-string">"This is a paragraph."</span>
+<span class="py-prompt">>>> </span>P2 = <span class="py-string">"This is a \nparagraph."</span>
+<span class="py-prompt">>>> </span>LI1 = <span class="py-string">"  - This is a list item."</span>
+<span class="py-prompt">>>> </span>LI2 = <span class="py-string">"\n  - This is a list item."</span>
+<span class="py-prompt">>>> </span>LI3 = <span class="py-string">"  - This is a list\n  item."</span>
+<span class="py-prompt">>>> </span>LI4 = <span class="py-string">"\n  - This is a list\n  item."</span>
+<span class="py-prompt">>>> </span>PARA = (<span class="py-string">'<para>This is a paragraph.</para>'</span>)
+<span class="py-prompt">>>> </span>ONELIST = (<span class="py-string">'<ulist><li><para inline=True>This is a '</span>+
+<span class="py-more">... </span>           <span class="py-string">'list item.</para></li></ulist>'</span>)
+<span class="py-prompt">>>> </span>TWOLIST = (<span class="py-string">'<ulist><li><para inline=True>This is a '</span>+
+<span class="py-more">... </span>           <span class="py-string">'list item.</para></li><li><para inline=True>This is a '</span>+
+<span class="py-more">... </span>           <span class="py-string">'list item.</para></li></ulist>'</span>)</pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">for</span> p <span class="py-keyword">in</span> (P1, P2):
+<span class="py-more">... </span>    <span class="py-keyword">for</span> li1 <span class="py-keyword">in</span> (LI1, LI2, LI3, LI4):
+<span class="py-more">... </span>        checkparse(li1, ONELIST)
+<span class="py-more">... </span>        checkparse(<span class="py-string">'%s\n%s'</span> % (p, li1), PARA+ONELIST)
+<span class="py-more">... </span>        checkparse(<span class="py-string">'%s\n%s'</span> % (li1, p), ONELIST+PARA)
+<span class="py-more">... </span>        checkparse(<span class="py-string">'%s\n%s\n%s'</span> % (p, li1, p),
+<span class="py-more">... </span>                        PARA+ONELIST+PARA)
+<span class="py-more">...</span>
+<span class="py-more">... </span>        <span class="py-keyword">for</span> li2 <span class="py-keyword">in</span> (LI1, LI2, LI3, LI4):
+<span class="py-more">... </span>            checkparse(<span class="py-string">'%s\n%s'</span> % (li1, li2), TWOLIST)
+<span class="py-more">... </span>            checkparse(<span class="py-string">'%s\n%s\n%s'</span> % (p, li1, li2), PARA+TWOLIST)
+<span class="py-more">... </span>            checkparse(<span class="py-string">'%s\n%s\n%s'</span> % (li1, li2, p), TWOLIST+PARA)
+<span class="py-more">... </span>            checkparse(<span class="py-string">'%s\n%s\n%s\n%s'</span> % (p, li1, li2, p),
+<span class="py-more">... </span>                            PARA+TWOLIST+PARA)</pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>LI5 = <span class="py-string">"  - This is a list item.\n\n    It contains two paragraphs."</span>
+<span class="py-prompt">>>> </span>LI5LIST = (<span class="py-string">'<ulist><li><para inline=True>This is a list item.</para>'</span>+
+<span class="py-more">... </span>           <span class="py-string">'<para>It contains two paragraphs.</para></li></ulist>'</span>)
+<span class="py-prompt">>>> </span>checkparse(LI5, LI5LIST)
+<span class="py-prompt">>>> </span>checkparse(<span class="py-string">'%s\n%s'</span> % (P1, LI5), PARA+LI5LIST)
+<span class="py-prompt">>>> </span>checkparse(<span class="py-string">'%s\n%s\n%s'</span> % (P2, LI5, P1), PARA+LI5LIST+PARA)</pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>LI6 = (<span class="py-string">"  - This is a list item with a literal block::\n"</span> +
+<span class="py-more">... </span>       <span class="py-string">"    hello\n      there"</span>)
+<span class="py-prompt">>>> </span>LI6LIST = (<span class="py-string">'<ulist><li><para inline=True>This is a list item with a literal '</span>+
+<span class="py-more">... </span>           <span class="py-string">'block:</para><literalblock> hello\n   there'</span>+
+<span class="py-more">... </span>           <span class="py-string">'</literalblock></li></ulist>'</span>)
+<span class="py-prompt">>>> </span>checkparse(LI6, LI6LIST)
+<span class="py-prompt">>>> </span>checkparse(<span class="py-string">'%s\n%s'</span> % (P1, LI6), PARA+LI6LIST)
+<span class="py-prompt">>>> </span>checkparse(<span class="py-string">'%s\n%s\n%s'</span> % (P2, LI6, P1), PARA+LI6LIST+PARA)</pre>
+</blockquote>
+<p>Item wrap tests:</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>LI = <span class="py-string">"- This is a list\n  item."</span>
+<span class="py-prompt">>>> </span>ONELIST = (<span class="py-string">'<ulist><li><para inline=True>This is a '</span>+
+<span class="py-more">... </span>           <span class="py-string">'list item.</para></li></ulist>'</span>)
+<span class="py-prompt">>>> </span>TWOLIST = (<span class="py-string">'<ulist><li><para inline=True>This is a '</span>+
+<span class="py-more">... </span>           <span class="py-string">'list item.</para></li><li><para inline=True>This is a '</span>+
+<span class="py-more">... </span>           <span class="py-string">'list item.</para></li></ulist>'</span>)
+<span class="py-prompt">>>> </span><span class="py-keyword">for</span> indent <span class="py-keyword">in</span> (<span class="py-string">''</span>, <span class="py-string">'  '</span>):
+<span class="py-more">... </span>    <span class="py-keyword">for</span> nl1 <span class="py-keyword">in</span> (<span class="py-string">''</span>, <span class="py-string">'\n'</span>):
+<span class="py-more">... </span>        checkparse(nl1+indent+LI, ONELIST)
+<span class="py-more">... </span>        <span class="py-keyword">for</span> nl2 <span class="py-keyword">in</span> (<span class="py-string">'\n'</span>, <span class="py-string">'\n\n'</span>):
+<span class="py-more">... </span>            checkparse(nl1+indent+LI+nl2+indent+LI, TWOLIST)</pre>
+</blockquote>
+<div class="section" id="summary">
+<h1>Summary</h1>
+<p>The implementation of the summarization function works as expected.</p>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">from</span> epydoc.markup <span class="py-keyword">import</span> epytext
+<span class="py-prompt">>>> </span><span class="py-keyword">def</span> <span class="py-defname">getsummary</span>(s):
+<span class="py-more">... </span>    p = epytext.parse_docstring(s, [])
+<span class="py-more">... </span>    s, o = p.summary()
+<span class="py-more">... </span>    s = s.to_plaintext(None).strip()
+<span class="py-more">... </span>    return s, o</pre>
+<p>Let's not lose anything!</p>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>getsummary(<span class="py-string">"Single line"</span>)
+<span class="py-output">('Single line', False)</span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>getsummary(<span class="py-string">"Single line."</span>)
+<span class="py-output">('Single line.', False)</span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>getsummary(<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">Single line C{with} period.</span>
+<span class="py-more">... </span><span class="py-string">"""</span>)
+<span class="py-output">('Single line with period.', False)</span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>getsummary(<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">Single line C{with }period.</span>
+<span class="py-more">...</span>
+<span class="py-more">... </span><span class="py-string">@type: Also with a tag.</span>
+<span class="py-more">... </span><span class="py-string">"""</span>)
+<span class="py-output">('Single line with period.', False)</span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>getsummary(<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">Other lines C{with} period.</span>
+<span class="py-more">... </span><span class="py-string">This is attached</span>
+<span class="py-more">... </span><span class="py-string">"""</span>)
+<span class="py-output">('Other lines with period.', True)</span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>getsummary(<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">Other lines C{with} period.</span>
+<span class="py-more">...</span>
+<span class="py-more">... </span><span class="py-string">This is detached</span>
+<span class="py-more">...</span>
+<span class="py-more">... </span><span class="py-string">@type: Also with a tag.</span>
+<span class="py-more">... </span><span class="py-string">"""</span>)
+<span class="py-output">('Other lines with period.', True)</span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>getsummary(<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">Other lines without period</span>
+<span class="py-more">... </span><span class="py-string">This is attached</span>
+<span class="py-more">... </span><span class="py-string">"""</span>)
+<span class="py-output">('Other lines without period This is attached', False)</span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>getsummary(<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">Other lines without period</span>
+<span class="py-more">...</span>
+<span class="py-more">... </span><span class="py-string">This is detached</span>
+<span class="py-more">... </span><span class="py-string">"""</span>)
+<span class="py-output">('Other lines without period...', True)</span></pre>
+</div>
+<div class="section" id="literal-braces">
+<h1>Literal Braces</h1>
+<p>SF bug #1562530 reported some trouble with literal braces.  These
+tests make sure that braces are getting rendered as desired.</p>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">def</span> <span class="py-defname">epytext2html</span>(s):
+<span class="py-more">... </span>    errs = []
+<span class="py-more">... </span>    v = epytext.parse_docstring(s, errs).to_html(None)
+<span class="py-more">... </span>    <span class="py-keyword">for</span> err <span class="py-keyword">in</span> errs: <span class="py-keyword">print</span> err
+<span class="py-more">... </span>    return (v <span class="py-keyword">or</span> <span class="py-string">''</span>).rstrip()</pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">print</span> epytext2html(<span class="py-string">"{1:{2:3}}"</span>)
+<span class="py-output"><p>{1:{2:3}}</p></span>
+<span class="py-output"></span><span class="py-prompt">>>> </span><span class="py-keyword">print</span> epytext2html(<span class="py-string">"C{{1:{2:3}}}"</span>)
+<span class="py-output"><p><code>{1:{2:3}}</code></p></span>
+<span class="py-output"></span><span class="py-prompt">>>> </span><span class="py-keyword">print</span> epytext2html(<span class="py-string">"{1:C{{2:3}}}"</span>)
+<span class="py-output"><p>{1:<code>{2:3}</code>}</p></span>
+<span class="py-output"></span><span class="py-prompt">>>> </span><span class="py-keyword">print</span> epytext2html(<span class="py-string">"{{{}{}}{}}"</span>)
+<span class="py-output"><p>{{{}{}}{}}</p></span>
+<span class="py-output"></span><span class="py-prompt">>>> </span><span class="py-keyword">print</span> epytext2html(<span class="py-string">"{{E{lb}E{lb}E{lb}}}"</span>)
+<span class="py-output"><p>{{{{{}}</p></span></pre>
+</div>
+<div class="section" id="graph-raising">
+<h1>Graph Raising</h1>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>epytext._x = True
+<span class="py-prompt">>>> </span><span class="py-keyword">print</span> testparse(<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">Para containing G{classtree} graph.</span>
+<span class="py-more">... </span><span class="py-string">"""</span>)
+<span class="py-output"><para>Para containing </para></span>
+<span class="py-output"><graph>classtree</graph></span>
+<span class="py-output"><para> graph.</para></span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">print</span> testparse(<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">Para B{I{containing C{G{classtree} graph}} inside nested markup}.</span>
+<span class="py-more">... </span><span class="py-string">"""</span>)
+<span class="py-output"><para>Para <bold><italic>containing <code></code></italic></bold></span>
+<span class="py-output"></para></span>
+<span class="py-output"><graph>classtree</graph></span>
+<span class="py-output"><para><bold><italic><code> graph</code></italic></span>
+<span class="py-output"> inside nested markup</bold></span>
+<span class="py-output">.</para></span></pre>
+<p>Should we strip the 'inline' from the paras in cases like this:?
+>>> print testparse("""
+... - List item with G{classtree foo} graph.
+... - And with I{nested G{callgraph: zippy} markup} too.
+... """)
+<ulist><li><para inline=True>List item with </para>
+<graph>classtreefoo</graph>
+<para inline=True> graph.</para></li>
+<li><para inline=True>And with <italic>nested </italic>
+</para>
+<graph>callgraphzippy</graph>
+<para inline=True><italic> markup</italic></p>
+<div class="system-message">
+<p class="system-message-title">System Message: ERROR/3 (<tt class="docutils">src/epydoc/test/epytext.doctest</tt>, line 351)</p>
+Unexpected indentation.</div>
+<blockquote>
+too.</para></li></ulist></blockquote>
+</div>
+</div>
+<table width="100%" class="navbox" cellpadding="1" cellspacing="0">
+  <tr>
+  <a class="nav" href="../index.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="../index.html">
+    Home</a></td></a>
+  <a class="nav" href="../installing.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="../installing.html">
+    Installing Epydoc</a></td></a>
+  <a class="nav" href="../using.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="../using.html">
+    Using Epydoc</a></td></a>
+  <a class="nav" href="../epytext.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="../epytext.html">
+    Epytext</a></td></a>
+  <td align="center" width="20%" class="nav">
+    
+    <A href="http://sourceforge.net/projects/epydoc"> 
+    <IMG src="../sflogo.png" 
+    width="88" height="26" border="0" alt="SourceForge"
+    align="top"/></A></td>
+    </tr>
+</table>
+</body>
+</html>
diff --git a/doc/doctest/index.html b/doc/doctest/index.html
new file mode 100644
index 0000000..e16da1f
--- /dev/null
+++ b/doc/doctest/index.html
@@ -0,0 +1,82 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html> <head>
+<title>Epydoc: Regression Tests</title>
+<link rel="stylesheet" href="../epydoc.css" type="text/css"/>
+</head>
+<!-- $Id: future.html 1211 2006-04-10 19:38:37Z edloper $ -->
+
+<body>
+<div class="body">
+<h1> Epydoc: Regression Tests </h1>
+
+<p> The following files contain the current regression test suite for
+epydoc.  Each file contains a prose description of some aspect of
+epydoc, interspersed with
+<a href="http://docs.python.org/lib/module-doctest.html">doctest</a>
+examples.  Each of these doctest examples is a single test case. </p>
+
+<div class="box">
+<h2 class="box-title">Regression Tests</h2>
+
+<ul>
+  <li> <a href="apidoc.html">APIDoc</a> -- The classes used
+       to encode API documentation about Python programs.</li>
+  <li> <a href="docintrospecter.html">Introspection</a> --
+       Extracting API information about Python objects by directly
+       introspecting their values.</li>
+  <li> <a href="docparser.html">Source Code Parsing</a> --
+       Extracting API information about Python objects by parsing
+       their source code.</li>
+  <li> <a href="docbuilder.html">Documentation building</a> --
+       Merging different information sources into a single API
+       hypertext.
+  <li> <a href="encoding.html">Unicode & Encodings</a> --
+       Tests for the processing of Python files that use non-ascii
+       encodings. </li>
+  <li> <a href="epytext.html">Epytext</a> -- Tests for epytext, the default
+       markup language used by epydoc.</li>
+  <li> <a href="javadoc.html">Javadoc</a> -- Tests for epydoc's support
+       of the Javadoc markup language.</li>
+  <li> <a href="plaintext.html">Plaintext</a> -- Tests for epydoc's support
+       of plaintext markup.</li>
+  <li> <a href="restructuredtext.html">reStructuredText</a> -- Tests 
+       for epydoc's support of the reStructuredText markup language.</li>
+  <li> <a href="pyval_repr.html">Value Representations</a> -- Tests
+       for epydoc's formatting & syntax highlighting of variable's
+       values.</li>
+  <li> <a href="zope2.html">Zope 2</a> -- Tests for epydoc's support
+       for Zope 2.</li>
+  <li> <a href="zope3.html">Zope 3</a> -- Tests for epydoc's support
+       for Zope 3.</li>
+</ul>
+</div>
+
+</div>
+<table width="100%" class="navbox" cellpadding="1" cellspacing="0">
+  <tr>
+  <a class="nav" href="../index.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="../index.html">
+    Home</a></td></a>
+  <a class="nav" href="../installing.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="../installing.html">
+    Installing Epydoc</a></td></a>
+  <a class="nav" href="../using.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="../using.html">
+    Using Epydoc</a></td></a>
+  <a class="nav" href="../epytext.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="../epytext.html">
+    Epytext</a></td></a>
+  <td align="center" width="20%" class="nav">
+    
+    <A href="http://sourceforge.net/projects/epydoc"> 
+    <IMG src="../sflogo.png" 
+    width="88" height="26" border="0" alt="SourceForge"
+    align="top"/></A></td>
+    </tr>
+</table>
+</body>
+</html>
diff --git a/doc/doctest/javadoc.html b/doc/doctest/javadoc.html
new file mode 100644
index 0000000..a47d677
--- /dev/null
+++ b/doc/doctest/javadoc.html
@@ -0,0 +1,112 @@
+<?xml version="1.0" encoding="ascii" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ascii" />
+<meta name="generator" content="Docutils 0.5: http://docutils.sourceforge.net/" />
+<title>Regression Testing for javadoc</title>
+<link rel="stylesheet" href="../custom.css" type="text/css" />
+</head>
+<body>
+<div class="document" id="regression-testing-for-javadoc">
+<h1 class="title">Regression Testing for javadoc</h1>
+
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">from</span> epydoc.test.util <span class="py-keyword">import</span> print_warnings
+<span class="py-prompt">>>> </span>print_warnings()</pre>
+</blockquote>
+<div class="section" id="summary">
+<h1>Summary</h1>
+<p>The implementation of the summaization function works as expected.</p>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">from</span> epydoc.markup <span class="py-keyword">import</span> javadoc
+<span class="py-prompt">>>> </span><span class="py-keyword">def</span> <span class="py-defname">getsummary</span>(s):
+<span class="py-more">... </span>    p = javadoc.parse_docstring(s, [])
+<span class="py-more">... </span>    s, o = p.summary()
+<span class="py-more">... </span>    s = s.to_plaintext(None).strip()
+<span class="py-more">... </span>    return s, o</pre>
+<p>#Let's not lose anything!</p>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>getsummary(<span class="py-string">"Single line"</span>)
+<span class="py-output">('Single line', False)</span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>getsummary(<span class="py-string">"Single line."</span>)
+<span class="py-output">('Single line.', False)</span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>getsummary(<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">Single line <i>with</i> period.</span>
+<span class="py-more">... </span><span class="py-string">"""</span>)
+<span class="py-output">('Single line <i>with</i> period.', False)</span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>getsummary(<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">Single line <i>with</i> period.</span>
+<span class="py-more">...</span>
+<span class="py-more">... </span><span class="py-string">@type Also with a tag.</span>
+<span class="py-more">... </span><span class="py-string">"""</span>)
+<span class="py-output">('Single line <i>with</i> period.', False)</span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>getsummary(<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">Other lines <i>with</i> period.</span>
+<span class="py-more">... </span><span class="py-string">This is attached</span>
+<span class="py-more">... </span><span class="py-string">"""</span>)
+<span class="py-output">('Other lines <i>with</i> period.', True)</span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>getsummary(<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">Other lines <i>with</i> period.</span>
+<span class="py-more">...</span>
+<span class="py-more">... </span><span class="py-string">This is detached</span>
+<span class="py-more">...</span>
+<span class="py-more">... </span><span class="py-string">@type Also with a tag.</span>
+<span class="py-more">... </span><span class="py-string">"""</span>)
+<span class="py-output">('Other lines <i>with</i> period.', True)</span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>getsummary(<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">Other lines without period</span>
+<span class="py-more">... </span><span class="py-string">This is attached</span>
+<span class="py-more">... </span><span class="py-string">"""</span>)
+<span class="py-output">('Other lines without period...', True)</span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>getsummary(<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">Other lines without period</span>
+<span class="py-more">...</span>
+<span class="py-more">... </span><span class="py-string">This is detached</span>
+<span class="py-more">... </span><span class="py-string">"""</span>)
+<span class="py-output">('Other lines without period...', True)</span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>getsummary(<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">Single line <i>without</i> period</span>
+<span class="py-more">...</span>
+<span class="py-more">... </span><span class="py-string">@type Also with a tag.</span>
+<span class="py-more">... </span><span class="py-string">"""</span>)
+<span class="py-output">('Single line <i>without</i> period', False)</span></pre>
+</div>
+</div>
+<table width="100%" class="navbox" cellpadding="1" cellspacing="0">
+  <tr>
+  <a class="nav" href="../index.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="../index.html">
+    Home</a></td></a>
+  <a class="nav" href="../installing.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="../installing.html">
+    Installing Epydoc</a></td></a>
+  <a class="nav" href="../using.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="../using.html">
+    Using Epydoc</a></td></a>
+  <a class="nav" href="../epytext.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="../epytext.html">
+    Epytext</a></td></a>
+  <td align="center" width="20%" class="nav">
+    
+    <A href="http://sourceforge.net/projects/epydoc"> 
+    <IMG src="../sflogo.png" 
+    width="88" height="26" border="0" alt="SourceForge"
+    align="top"/></A></td>
+    </tr>
+</table>
+</body>
+</html>
diff --git a/doc/doctest/plaintext.html b/doc/doctest/plaintext.html
new file mode 100644
index 0000000..365868c
--- /dev/null
+++ b/doc/doctest/plaintext.html
@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="ascii" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ascii" />
+<meta name="generator" content="Docutils 0.5: http://docutils.sourceforge.net/" />
+<title>Regression Testing for plaintext</title>
+<link rel="stylesheet" href="../custom.css" type="text/css" />
+</head>
+<body>
+<div class="document" id="regression-testing-for-plaintext">
+<h1 class="title">Regression Testing for plaintext</h1>
+
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">from</span> epydoc.test.util <span class="py-keyword">import</span> print_warnings
+<span class="py-prompt">>>> </span>print_warnings()</pre>
+</blockquote>
+<div class="section" id="summary">
+<h1>Summary</h1>
+<p>The implementation of the summaization function works as expected.</p>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">from</span> epydoc.markup <span class="py-keyword">import</span> plaintext
+<span class="py-prompt">>>> </span><span class="py-keyword">def</span> <span class="py-defname">getsummary</span>(s):
+<span class="py-more">... </span>    p = plaintext.parse_docstring(s, [])
+<span class="py-more">... </span>    s, o = p.summary()
+<span class="py-more">... </span>    s = s.to_plaintext(None).strip()
+<span class="py-more">... </span>    return s, o</pre>
+<p>Let's not lose anything!</p>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>getsummary(<span class="py-string">"Single line"</span>)
+<span class="py-output">('Single line', False)</span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>getsummary(<span class="py-string">"Single line."</span>)
+<span class="py-output">('Single line.', False)</span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>getsummary(<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">Single line with period.</span>
+<span class="py-more">... </span><span class="py-string">"""</span>)
+<span class="py-output">('Single line with period.', False)</span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>getsummary(<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">Other lines with period.</span>
+<span class="py-more">... </span><span class="py-string">This is attached</span>
+<span class="py-more">... </span><span class="py-string">"""</span>)
+<span class="py-output">('Other lines with period.', True)</span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>getsummary(<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">Other lines with period.</span>
+<span class="py-more">...</span>
+<span class="py-more">... </span><span class="py-string">This is detached</span>
+<span class="py-more">... </span><span class="py-string">"""</span>)
+<span class="py-output">('Other lines with period.', True)</span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>getsummary(<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">Other lines without period</span>
+<span class="py-more">... </span><span class="py-string">This is attached</span>
+<span class="py-more">... </span><span class="py-string">"""</span>)
+<span class="py-output">('Other lines without period...', True)</span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>getsummary(<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">Other lines without period</span>
+<span class="py-more">...</span>
+<span class="py-more">... </span><span class="py-string">This is detached</span>
+<span class="py-more">... </span><span class="py-string">"""</span>)
+<span class="py-output">('Other lines without period...', True)</span></pre>
+<p>In 3.0beta1 docstrings such this were not correctly summarized.</p>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>getsummary(<span class="py-string">"""A user-defined wrapper around string objects</span>
+<span class="py-more">...</span>
+<span class="py-more">... </span><span class="py-string">Note: string objects have grown methods in Python 1.6</span>
+<span class="py-more">... </span><span class="py-string">This module requires Python 1.6 or later.</span>
+<span class="py-more">... </span><span class="py-string">"""</span>)
+<span class="py-output">('A user-defined wrapper around string objects', True)</span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>getsummary(<span class="py-string">"""This is more tricky</span>
+<span class="py-more">... </span><span class="py-string">than the test before</span>
+<span class="py-more">...</span>
+<span class="py-more">... </span><span class="py-string">but i am looking for the same bug.</span>
+<span class="py-more">... </span><span class="py-string">"""</span>)
+<span class="py-output">('This is more tricky\nthan the test before', True)</span></pre>
+</div>
+</div>
+<table width="100%" class="navbox" cellpadding="1" cellspacing="0">
+  <tr>
+  <a class="nav" href="../index.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="../index.html">
+    Home</a></td></a>
+  <a class="nav" href="../installing.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="../installing.html">
+    Installing Epydoc</a></td></a>
+  <a class="nav" href="../using.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="../using.html">
+    Using Epydoc</a></td></a>
+  <a class="nav" href="../epytext.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="../epytext.html">
+    Epytext</a></td></a>
+  <td align="center" width="20%" class="nav">
+    
+    <A href="http://sourceforge.net/projects/epydoc"> 
+    <IMG src="../sflogo.png" 
+    width="88" height="26" border="0" alt="SourceForge"
+    align="top"/></A></td>
+    </tr>
+</table>
+</body>
+</html>
diff --git a/doc/doctest/pyval_repr.html b/doc/doctest/pyval_repr.html
new file mode 100644
index 0000000..ed5d096
--- /dev/null
+++ b/doc/doctest/pyval_repr.html
@@ -0,0 +1,367 @@
+<?xml version="1.0" encoding="ascii" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ascii" />
+<meta name="generator" content="Docutils 0.5: http://docutils.sourceforge.net/" />
+<title>Regression Testing for epydoc.markup.pyval_repr</title>
+<link rel="stylesheet" href="../custom.css" type="text/css" />
+</head>
+<body>
+<div class="document" id="regression-testing-for-epydoc-markup-pyval-repr">
+<h1 class="title">Regression Testing for epydoc.markup.pyval_repr</h1>
+
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">from</span> epydoc.markup.pyval_repr <span class="py-keyword">import</span> *
+<span class="py-prompt">>>> </span>colorizer = PyvalColorizer(linelen=40)
+<span class="py-prompt">>>> </span><span class="py-keyword">def</span> <span class="py-defname">color</span>(v, linebreakok=True):
+<span class="py-more">... </span>    colorizer = PyvalColorizer(linelen=40, linebreakok=linebreakok)
+<span class="py-more">... </span>    pds = colorizer.colorize(v, None)
+<span class="py-more">... </span>    s = pds.to_html(None).rstrip()
+<span class="py-more">... </span>    <span class="py-keyword">if</span> isinstance(s, unicode):
+<span class="py-more">... </span>        s = s.encode(<span class="py-string">'ascii'</span>, <span class="py-string">'xmlcharrefreplace'</span>)
+<span class="py-more">... </span>    <span class="py-keyword">print</span> s</pre>
+</blockquote>
+<div class="section" id="simple-types">
+<h1>Simple Types</h1>
+<p>Integers, floats, None, and complex numbers get printed using str,
+with no syntax highlighting:</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>color(10)
+<span class="py-output">10</span>
+<span class="py-output"></span><span class="py-prompt">>>> </span>color(1./4)
+<span class="py-output">0.25</span>
+<span class="py-output"></span><span class="py-prompt">>>> </span>color(None)
+<span class="py-output">None</span>
+<span class="py-output"></span><span class="py-prompt">>>> </span>color(100)
+<span class="py-output">100</span></pre>
+</blockquote>
+<p>Long ints will get wrapped if they're big enough:</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>color(10000000)
+<span class="py-output">10000000</span>
+<span class="py-output"></span><span class="py-prompt">>>> </span>color(10**90)
+<span class="py-output">1000000000000000000000000000000000000000&crarr;</span>
+<span class="py-output">0000000000000000000000000000000000000000&crarr;</span>
+<span class="py-output">00000000000</span>
+<span class="py-output"></span><span class="py-prompt">>>> </span>colorizer = PyvalColorizer(linelen=40)
+<span class="py-prompt">>>> </span><span class="py-keyword">print</span> <span class="py-string">'-'</span>*40+<span class="py-string">'\n'</span>+colorizer.colorize(10**90).to_plaintext(None)
+<span class="py-output">----------------------------------------</span>
+<span class="py-output">1000000000000000000000000000000000000000\</span>
+<span class="py-output">0000000000000000000000000000000000000000\</span>
+<span class="py-output">00000000000</span></pre>
+</blockquote>
+</div>
+<div class="section" id="strings">
+<h1>Strings</h1>
+<p>Strings have their quotation marks tagged as 'quote'.  Characters are
+escaped using the 'string-escape' encoding.</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>color(<span class="py-string">''</span>.join([chr(i) <span class="py-keyword">for</span> i <span class="py-keyword">in</span> range(256)]))
+<span class="py-output"><code class="variable-quote">'''</code><code class="variable-string">\x00\x01\x02\x03\x04\x05\x06\x07\x08\</code>&crarr;</span>
+<span class="py-output"><code class="variable-string">t</code></span>
+<span class="py-output"><code class="variable-string">\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x</code>&crarr;</span>
+<span class="py-output"><code class="variable-string">15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x</code>&crarr;</span>
+<span class="py-output"><code class="variable-string">1f !&quot;#$%&amp;\'()*+,-./0123456789:;&lt;=&gt;?@ABCD</code>&crarr;</span>
+<span class="py-output"><code class="variable-ellipsis">...</code></span></pre>
+</blockquote>
+<p>Currently, the "'" quote is always used, because that's what the
+'string-escape' encoding expects.</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>color(<span class="py-string">'Hello'</span>)
+<span class="py-output"><code class="variable-quote">'</code><code class="variable-string">Hello</code><code class="variable-quote">'</code></span>
+<span class="py-output"></span><span class="py-prompt">>>> </span>color(<span class="py-string">'"Hello"'</span>)
+<span class="py-output"><code class="variable-quote">'</code><code class="variable-string">&quot;Hello&quot;</code><code class="variable-quote">'</code></span>
+<span class="py-output"></span><span class="py-prompt">>>> </span>color(<span class="py-string">"'Hello'"</span>)
+<span class="py-output"><code class="variable-quote">'</code><code class="variable-string">\'Hello\'</code><code class="variable-quote">'</code></span></pre>
+</blockquote>
+<p>Strings containing newlines are automatically rendered as multiline
+strings.</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>color(<span class="py-string">"This\n  is a multiline\n string!"</span>)
+<span class="py-output"><code class="variable-quote">'''</code><code class="variable-string">This</code></span>
+<span class="py-output"><code class="variable-string">  is a multiline</code></span>
+<span class="py-output"><code class="variable-string"> string!</code><code class="variable-quote">'''</code></span></pre>
+</blockquote>
+<p>Unless we ask for them not to be:</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>color(<span class="py-string">"This\n  is a multiline\n string!"</span>, linebreakok=False)
+<span class="py-output"><code class="variable-quote">'</code><code class="variable-string">This\n  is a multiline\n string!</code><code class="variable-quote">'</code></span></pre>
+</blockquote>
+<p>Unicode strings are handled properly.</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>color(u<span class="py-string">"Hello world"</span>)
+<span class="py-output"><code class="variable-quote">u'</code><code class="variable-string">Hello world</code><code class="variable-quote">'</code></span>
+<span class="py-output"></span><span class="py-prompt">>>> </span>color(u<span class="py-string">"\uaaaa And \ubbbb"</span>)
+<span class="py-output"><code class="variable-quote">u'</code><code class="variable-string">&#43690; And &#48059;</code><code class="variable-quote">'</code></span></pre>
+</blockquote>
+</div>
+<div class="section" id="lists-tuples-etc">
+<h1>Lists, Tuples, etc.</h1>
+<p>Lists, tuples, and sets are all colorized using the same method.  The
+braces and commas are tagged with "op".  If the value can fit on the
+current line, it is displayed on one line.  Otherwise, each value is
+listed on a separate line, indented by the size of the open-bracket.</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>color(range(10))
+<span class="py-output"><code class="variable-group">[</code>0<code class="variable-op">, </code>1<code class="variable-op">, </code>2<code class="variable-op">, </code>3<code class="variable-op">, </code>4<code class="variable-op">, </code>5<code class="variable-op">, </code>6<code class="variable-op">, </code>7&l [...]
+<span class="py-output"></span><span class="py-prompt">>>> </span>color(range(100))
+<span class="py-output"><code class="variable-group">[</code>0<code class="variable-op">,</code></span>
+<span class="py-output"> 1<code class="variable-op">,</code></span>
+<span class="py-output"> 2<code class="variable-op">,</code></span>
+<span class="py-output"> 3<code class="variable-op">,</code></span>
+<span class="py-output"> 4<code class="variable-op">,</code></span>
+<span class="py-output"><code class="variable-ellipsis">...</code></span>
+<span class="py-output"></span><span class="py-prompt">>>> </span>color([1,2,[5,6,[(11,22,33),9],10],11]+[99,98,97,96,95])
+<span class="py-output"><code class="variable-group">[</code>1<code class="variable-op">,</code></span>
+<span class="py-output"> 2<code class="variable-op">,</code></span>
+<span class="py-output"> <code class="variable-group">[</code>5<code class="variable-op">, </code>6<code class="variable-op">, </code><code class="variable-group">[</code><code class="variable-group">(</code>11<code class="variable-op">, </code>22<code class="variable-op">, </code>33<code class="variable-group">)</cod [...]
+<span class="py-output"> 11<code class="variable-op">,</code></span>
+<span class="py-output"> 99<code class="variable-op">,</code></span>
+<span class="py-output"><code class="variable-ellipsis">...</code></span>
+<span class="py-output"></span><span class="py-prompt">>>> </span>color(set(range(20)))
+<span class="py-output"><code class="variable-group">set([</code>0<code class="variable-op">,</code></span>
+<span class="py-output">     1<code class="variable-op">,</code></span>
+<span class="py-output">     2<code class="variable-op">,</code></span>
+<span class="py-output">     3<code class="variable-op">,</code></span>
+<span class="py-output">     4<code class="variable-op">,</code></span>
+<span class="py-output"><code class="variable-ellipsis">...</code></span></pre>
+</blockquote>
+</div>
+<div class="section" id="dictionaries">
+<h1>Dictionaries</h1>
+<p>Dicts are treated just like lists, except that the ":" is also tagged as
+"op".</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>color({1:33, 2:[1,2,3,{7:<span class="py-string">'oo'</span>*20}]})
+<span class="py-output"><code class="variable-group">{</code>1<code class="variable-op">: </code>33<code class="variable-op">,</code></span>
+<span class="py-output"> 2<code class="variable-op">: </code><code class="variable-group">[</code>1<code class="variable-op">,</code></span>
+<span class="py-output">     2<code class="variable-op">,</code></span>
+<span class="py-output">     3<code class="variable-op">,</code></span>
+<span class="py-output">     <code class="variable-group">{</code>7<code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">oooooooooooooooooooooooooooooo</code>&crarr;</span>
+<span class="py-output"><code class="variable-ellipsis">...</code></span></pre>
+</blockquote>
+</div>
+<div class="section" id="regular-expressions">
+<h1>Regular Expressions</h1>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">def</span> <span class="py-defname">textcontent</span>(elt):
+<span class="py-more">... </span>    <span class="py-keyword">if</span> isinstance(elt, basestring): return elt
+<span class="py-more">... </span>    <span class="py-keyword">else</span>: return <span class="py-string">''</span>.join([textcontent(c) <span class="py-keyword">for</span> c <span class="py-keyword">in</span> elt.children])</pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">import</span> re
+<span class="py-prompt">>>> </span><span class="py-keyword">def</span> <span class="py-defname">color_re</span>(s, check_roundtrip=True):
+<span class="py-more">... </span>    colorizer = PyvalColorizer(linelen=55)
+<span class="py-more">... </span>    val = colorizer.colorize(re.compile(s))
+<span class="py-more">... </span>    <span class="py-keyword">if</span> check_roundtrip:
+<span class="py-more">... </span>        assert textcontent(val._tree)[13:-2] == s, val._tree
+<span class="py-more">... </span>    <span class="py-keyword">print</span> val.to_html(None).rstrip()[13:-2]</pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-comment"># Literal characters</span>
+<span class="py-prompt">>>> </span>color_re(u<span class="py-string">'abc \t\r\n\f\v \xff \uffff'</span>, False)
+<span class="py-output">abc \t\r\n\f\v \xff \uffff</span>
+<span class="py-output"></span><span class="py-prompt">>>> </span>color_re(r'\.\^\$\\\*\+\?\{\}\[\]\|\(\)\<span class="py-string">''</span>)
+<span class="py-output">\.\^\$\\\*\+\?\{\}\[\]\|\(\)\'</span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-comment"># Any character & character classes</span>
+<span class="py-prompt">>>> </span>color_re(r<span class="py-string">".\d\D\s\S\w\W\A^$\b\B\Z"</span>)
+<span class="py-output">.\d\D\s\S\w\W\A^$\b\B\Z</span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-comment"># Branching</span>
+<span class="py-prompt">>>> </span>color_re(r<span class="py-string">"foo|bar"</span>)
+<span class="py-output">foo<code class="re-op">|</code>bar</span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-comment"># Character classes</span>
+<span class="py-prompt">>>> </span>color_re(r<span class="py-string">"[abcd]"</span>)
+<span class="py-output"><code class="re-group">[</code>abcd<code class="re-group">]</code></span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-comment"># Repeats</span>
+<span class="py-prompt">>>> </span>color_re(r<span class="py-string">"a*b+c{4,}d{,5}e{3,9}f?"</span>)
+<span class="py-output">a<code class="re-op">*</code>b<code class="re-op">+</code>c<code class="re-op">{4,}</code>d<code class="re-op">{,5}</code>e<code class="re-op">{3,9}</code>f<code class="re-op">?</code></span>
+<span class="py-output"></span><span class="py-prompt">>>> </span>color_re(r<span class="py-string">"a*?b+?c{4,}?d{,5}?e{3,9}?f??"</span>)
+<span class="py-output">a<code class="re-op">*?</code>b<code class="re-op">+?</code>c<code class="re-op">{4,}?</code>d<code class="re-op">{,5}?</code>e<code class="re-op">{3,9}?</code>f<code class="re-op">??</code></span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-comment"># Subpatterns</span>
+<span class="py-prompt">>>> </span>color_re(r<span class="py-string">"(foo (bar) | (baz))"</span>)
+<span class="py-output"><code class="re-group">(</code>foo <code class="re-group">(</code>bar<code class="re-group">)</code> <code class="re-op">|</code> <code class="re-group">(</code>baz<code class="re-group">)</code><code class="re-group">)</code></span>
+<span class="py-output"></span><span class="py-prompt">>>> </span>color_re(r<span class="py-string">"(?:foo (?:bar) | (?:baz))"</span>)
+<span class="py-output"><code class="re-group">(?:</code>foo <code class="re-group">(?:</code>bar<code class="re-group">)</code> <code class="re-op">|</code> <code class="re-group">(?:</code>baz<code class="re-group">)</code><code class="re-group">)</code></span>
+<span class="py-output"></span><span class="py-prompt">>>> </span>color_re(<span class="py-string">"(foo (?P<a>bar) | (?P<boop>baz))"</span>)
+<span class="py-output"><code class="re-group">(</code>foo <code class="re-group">(?P&lt;</code><code class="re-ref">a</code><code class="re-group">&gt;</code>bar<code class="re-group">)</code> <code class="re-op">|</code> <code class="re-group">(?P&lt;</code><code class="re-ref">boop</code><code cla [...]
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-comment"># Group References</span>
+<span class="py-prompt">>>> </span>color_re(r<span class="py-string">"(...) and (\1)"</span>)
+<span class="py-output"><code class="re-group">(</code>...<code class="re-group">)</code> and <code class="re-group">(</code><code class="re-ref">\1</code><code class="re-group">)</code></span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-comment"># Ranges</span>
+<span class="py-prompt">>>> </span>color_re(r<span class="py-string">"[a-bp-z]"</span>)
+<span class="py-output"><code class="re-group">[</code>a<code class="re-op">-</code>bp<code class="re-op">-</code>z<code class="re-group">]</code></span>
+<span class="py-output"></span><span class="py-prompt">>>> </span>color_re(r<span class="py-string">"[^a-bp-z]"</span>)
+<span class="py-output"><code class="re-group">[</code><code class="re-op">^</code>a<code class="re-op">-</code>bp<code class="re-op">-</code>z<code class="re-group">]</code></span>
+<span class="py-output"></span><span class="py-prompt">>>> </span>color_re(r<span class="py-string">"[^abc]"</span>)
+<span class="py-output"><code class="re-group">[</code><code class="re-op">^</code>abc<code class="re-group">]</code></span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-comment"># Lookahead/behinds</span>
+<span class="py-prompt">>>> </span>color_re(r<span class="py-string">"foo(?=bar)"</span>)
+<span class="py-output">foo<code class="re-group">(?=</code>bar<code class="re-group">)</code></span>
+<span class="py-output"></span><span class="py-prompt">>>> </span>color_re(r<span class="py-string">"foo(?!bar)"</span>)
+<span class="py-output">foo<code class="re-group">(?!</code>bar<code class="re-group">)</code></span>
+<span class="py-output"></span><span class="py-prompt">>>> </span>color_re(r<span class="py-string">"(?<=bar)foo"</span>)
+<span class="py-output"><code class="re-group">(?&lt;=</code>bar<code class="re-group">)</code>foo</span>
+<span class="py-output"></span><span class="py-prompt">>>> </span>color_re(r<span class="py-string">"(?<!bar)foo"</span>)
+<span class="py-output"><code class="re-group">(?&lt;!</code>bar<code class="re-group">)</code>foo</span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-comment"># Flags</span>
+<span class="py-prompt">>>> </span>color_re(r<span class="py-string">"(?im)^Food"</span>)
+<span class="py-output"><code class="re-flags">(?im)</code>^Food</span>
+<span class="py-output"></span><span class="py-prompt">>>> </span>color_re(r<span class="py-string">"(?Limsx)^Food"</span>)
+<span class="py-output"><code class="re-flags">(?Limsx)</code>^Food</span>
+<span class="py-output"></span><span class="py-prompt">>>> </span>color_re(r<span class="py-string">"(?Limstux)^Food"</span>)
+<span class="py-output"><code class="re-flags">(?Limstux)</code>^Food</span>
+<span class="py-output"></span><span class="py-prompt">>>> </span>color_re(r<span class="py-string">"(?x)This   is   verbose"</span>, False)
+<span class="py-output"><code class="re-flags">(?x)</code>Thisisverbose</span></pre>
+</blockquote>
+</div>
+<div class="section" id="line-wrapping">
+<h1>Line Wrapping</h1>
+<p>If a line goes beyond linelen, it is wrapped using <tt class="docutils literal"><span class="pre">&crarr;</span></tt> (which
+gets translated to <tt class="docutils literal"><span class="pre">\\</span></tt> by <cite>ParsedEpytextDocstring.to_plaintext()</cite>).</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>colorizer = PyvalColorizer(linelen=40)
+<span class="py-prompt">>>> </span><span class="py-keyword">print</span> colorizer.colorize(<span class="py-string">'x'</span>*100).to_plaintext(None)
+<span class="py-output">'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\</span>
+<span class="py-output">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\</span>
+<span class="py-output">xxxxxxxxxxxxxxxxxxxxx'</span></pre>
+</blockquote>
+<p>Check that the last line gets a <tt class="docutils literal"><span class="pre">&crarr;</span></tt> when maxlines is exceeded:</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">print</span> colorizer.colorize(<span class="py-string">'x'</span>*1000).to_plaintext(None)
+<span class="py-output">'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\</span>
+<span class="py-output">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\</span>
+<span class="py-output">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\</span>
+<span class="py-output">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\</span>
+<span class="py-output">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\</span>
+<span class="py-output">...</span></pre>
+</blockquote>
+<p>If linebreakok is False, then line wrapping gives an ellipsis instead:</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>colorizer = PyvalColorizer(linelen=40, linebreakok=False)
+<span class="py-prompt">>>> </span><span class="py-keyword">print</span> colorizer.colorize(<span class="py-string">'x'</span>*100).to_plaintext(None)
+<span class="py-output">'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...</span></pre>
+</blockquote>
+</div>
+<div class="section" id="representation-scores">
+<h1>Representation Scores</h1>
+<p>When colorized representations are built, a score is computed
+evaluating how helpful the repr is.  E.g., unhelpful values like <tt class="docutils literal"><span class="pre"><Foo</span>
+<span class="pre">instance</span> <span class="pre">at</span> <span class="pre">0x12345></span></tt> get low scores.  Currently, the scoring
+algorithm is:</p>
+<ul class="simple">
+<li>[+1] for each object colorized.  When the colorizer recurses into
+a structure, this will add one for each element contained.</li>
+<li>[-5] when repr(obj) looks like <xyz instance at ...>, for any
+colorized object (including objects in structures).</li>
+<li>[-100] if repr(obj) raises an exception, for any colorized object
+(including objects in structures).</li>
+</ul>
+<p>The <tt class="docutils literal"><span class="pre">min_score</span></tt> arg to colorize can be used to set a cutoff-point for
+scores; if the score is too low, then <cite>PyvalColorizer.colorize</cite> will return <tt class="docutils literal"><span class="pre">None</span></tt>.</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">def</span> <span class="py-defname">color2</span>(v):
+<span class="py-more">... </span>    colorizer = PyvalColorizer(linelen=40)
+<span class="py-more">... </span>    pds = colorizer.colorize(v)
+<span class="py-more">... </span>    <span class="py-keyword">print</span> <span class="py-string">'repr: %s'</span> % pds.to_plaintext(None)
+<span class="py-more">... </span>    <span class="py-keyword">print</span> <span class="py-string">'score: %s (%s)'</span> % (pds.score, pds.score>0 <span class="py-keyword">and</span> <span class="py-string">'ok'</span> <span class="py-keyword">or</span> <span class="py-string">'bad'</span>)</pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">class</span> <span class="py-defname">A</span>: <span class="py-keyword">pass</span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>color2(<span class="py-string">'hello'</span>)
+<span class="py-output">repr: 'hello'</span>
+<span class="py-output">score: 1 (ok)</span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>color2([<span class="py-string">"hello"</span>, 123])
+<span class="py-output">repr: ['hello', 123]</span>
+<span class="py-output">score: 3 (ok)</span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>color2(A()) <span class="py-comment"># doctest: +ELLIPSIS</span>
+<span class="py-output">repr: <__builtin__.A instance at ...></span>
+<span class="py-output">score: -4 (bad)</span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>color2([A()]) <span class="py-comment"># doctest: +ELLIPSIS</span>
+<span class="py-output">repr: [<__builtin__.A instance at ...>]</span>
+<span class="py-output">score: -3 (bad)</span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>color2([A(),1,2,3,4,5,6]) <span class="py-comment"># doctest: +ELLIPSIS</span>
+<span class="py-output">repr: [<__builtin__.A instance at ...>,</span>
+<span class="py-output"> 1,</span>
+<span class="py-output"> 2,</span>
+<span class="py-output"> 3,</span>
+<span class="py-output"> 4,</span>
+<span class="py-output">...</span>
+<span class="py-output">score: 1 (ok)</span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">from</span> epydoc.test.util <span class="py-keyword">import</span> print_warnings
+<span class="py-prompt">>>> </span>print_warnings()</pre>
+</blockquote>
+</div>
+<div class="section" id="summary">
+<h1>Summary</h1>
+<p>To generate summary-reprs, use maxlines=1 and linebreakok=False:</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>summarizer = PyvalColorizer(linelen=60, maxlines=1, linebreakok=False)
+<span class="py-prompt">>>> </span><span class="py-keyword">def</span> <span class="py-defname">summarize</span>(v):
+<span class="py-more">... </span>    <span class="py-keyword">print</span> summarizer.colorize(v).to_plaintext(None)</pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>summarize(range(100))
+<span class="py-output">[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16...</span>
+<span class="py-output"></span><span class="py-prompt">>>> </span>summarize(<span class="py-string">'hello\nworld'</span>)
+<span class="py-output">'hello\nworld'</span>
+<span class="py-output"></span><span class="py-prompt">>>> </span>summarize(<span class="py-string">'hello\nworld'</span>*100)
+<span class="py-output">'hello\nworldhello\nworldhello\nworldhello\nworldhello\nw...</span></pre>
+</blockquote>
+</div>
+</div>
+<table width="100%" class="navbox" cellpadding="1" cellspacing="0">
+  <tr>
+  <a class="nav" href="../index.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="../index.html">
+    Home</a></td></a>
+  <a class="nav" href="../installing.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="../installing.html">
+    Installing Epydoc</a></td></a>
+  <a class="nav" href="../using.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="../using.html">
+    Using Epydoc</a></td></a>
+  <a class="nav" href="../epytext.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="../epytext.html">
+    Epytext</a></td></a>
+  <td align="center" width="20%" class="nav">
+    
+    <A href="http://sourceforge.net/projects/epydoc"> 
+    <IMG src="../sflogo.png" 
+    width="88" height="26" border="0" alt="SourceForge"
+    align="top"/></A></td>
+    </tr>
+</table>
+</body>
+</html>
diff --git a/doc/doctest/restructuredtext.html b/doc/doctest/restructuredtext.html
new file mode 100644
index 0000000..fb1ce42
--- /dev/null
+++ b/doc/doctest/restructuredtext.html
@@ -0,0 +1,286 @@
+<?xml version="1.0" encoding="ascii" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ascii" />
+<meta name="generator" content="Docutils 0.5: http://docutils.sourceforge.net/" />
+<title>Regression Testing for restructuredtext</title>
+<link rel="stylesheet" href="../custom.css" type="text/css" />
+</head>
+<body>
+<div class="document" id="regression-testing-for-restructuredtext">
+<h1 class="title">Regression Testing for restructuredtext</h1>
+<table class="docinfo" frame="void" rules="none">
+<col class="docinfo-name" />
+<col class="docinfo-content" />
+<tbody valign="top">
+<tr class="field"><th class="docinfo-name">RequireModule:</th><td class="field-body"><p class="first">docutils</p>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">from</span> epydoc.test.util <span class="py-keyword">import</span> print_warnings
+<span class="py-prompt">>>> </span>print_warnings()</pre>
+</td>
+</tr>
+</tbody>
+</table>
+<div class="section" id="summary">
+<h1>Summary</h1>
+<p>The implementation of the summaization function works as expected.</p>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">from</span> epydoc.markup <span class="py-keyword">import</span> restructuredtext
+<span class="py-prompt">>>> </span><span class="py-keyword">def</span> <span class="py-defname">getsummary</span>(s):
+<span class="py-more">... </span>    p = restructuredtext.parse_docstring(s, [])
+<span class="py-more">... </span>    s, o = p.summary()
+<span class="py-more">... </span>    s = s.to_plaintext(None).strip()
+<span class="py-more">... </span>    return s, o</pre>
+<p>#Let's not lose anything!</p>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>getsummary(<span class="py-string">"Single line"</span>)
+<span class="py-output">(u'Single line', False)</span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>getsummary(<span class="py-string">"Single line."</span>)
+<span class="py-output">(u'Single line.', False)</span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>getsummary(<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">Single line *with* period.</span>
+<span class="py-more">... </span><span class="py-string">"""</span>)
+<span class="py-output">(u'Single line with period.', False)</span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>getsummary(<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">Single line `with` period.</span>
+<span class="py-more">...</span>
+<span class="py-more">... </span><span class="py-string">:type: Also with a tag.</span>
+<span class="py-more">... </span><span class="py-string">"""</span>)
+<span class="py-output">(u'Single line with period.', False)</span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>getsummary(<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">Other lines **with** period.</span>
+<span class="py-more">... </span><span class="py-string">This is attached</span>
+<span class="py-more">... </span><span class="py-string">"""</span>)
+<span class="py-output">(u'Other lines with period.', True)</span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>getsummary(<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">Other lines *with* period.</span>
+<span class="py-more">...</span>
+<span class="py-more">... </span><span class="py-string">This is detached</span>
+<span class="py-more">...</span>
+<span class="py-more">... </span><span class="py-string">:type: Also with a tag.</span>
+<span class="py-more">... </span><span class="py-string">"""</span>)
+<span class="py-output">(u'Other lines with period.', True)</span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>getsummary(<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">Other lines without period</span>
+<span class="py-more">... </span><span class="py-string">This is attached</span>
+<span class="py-more">... </span><span class="py-string">"""</span>)
+<span class="py-output">(u'Other lines without period\nThis is attached', False)</span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>getsummary(<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">Other lines without period</span>
+<span class="py-more">...</span>
+<span class="py-more">... </span><span class="py-string">This is detached</span>
+<span class="py-more">... </span><span class="py-string">"""</span>)
+<span class="py-output">(u'Other lines without period...', True)</span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>getsummary(<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">Single line *without* period</span>
+<span class="py-more">...</span>
+<span class="py-more">... </span><span class="py-string">:type: Also with a tag.</span>
+<span class="py-more">... </span><span class="py-string">"""</span>)
+<span class="py-output">(u'Single line without period', False)</span></pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>getsummary(<span class="py-string">"""</span>
+<span class="py-more">... </span><span class="py-string">This is the first line.</span>
+<span class="py-more">...</span>
+<span class="py-more">... </span><span class="py-string">:type: Also with a tag.</span>
+<span class="py-more">...</span>
+<span class="py-more">... </span><span class="py-string">Other stuff after a tag.</span>
+<span class="py-more">... </span><span class="py-string">"""</span>)
+<span class="py-output">(u'This is the first line.', True)</span></pre>
+</div>
+<div class="section" id="python-code">
+<h1>Python code</h1>
+<p>reStructuredText markup defines a <tt class="docutils literal"><span class="pre">python</span></tt> directive to represent a block
+as colorized Python code.</p>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>err = []
+<span class="py-prompt">>>> </span>p = restructuredtext.parse_docstring(
+<span class="py-more">... </span><span class="py-string">"""A test module</span>
+<span class="py-more">...</span>
+<span class="py-more">... </span><span class="py-string">.. python::</span>
+<span class="py-more">...</span>
+<span class="py-more">... </span><span class="py-string">    # This is some Python code</span>
+<span class="py-more">... </span><span class="py-string">    def foo():</span>
+<span class="py-more">... </span><span class="py-string">        pass</span>
+<span class="py-more">...</span>
+<span class="py-more">... </span><span class="py-string">    class Foo:</span>
+<span class="py-more">... </span><span class="py-string">        def __init__(self):</span>
+<span class="py-more">... </span><span class="py-string">            pass</span>
+<span class="py-more">... </span><span class="py-string">"""</span>, err)
+<span class="py-prompt">>>> </span>err
+<span class="py-output">[]</span>
+<span class="py-output"></span><span class="py-prompt">>>> </span><span class="py-keyword">print</span> p.to_html(None)
+<span class="py-output"><p>A test module</p></span>
+<span class="py-output"><pre class="py-doctest"></span>
+<span class="py-output"><span class="py-comment"># This is some Python code</span></span>
+<span class="py-output"><span class="py-keyword">def</span> <span class="py-defname">foo</span>():</span>
+<span class="py-output">    <span class="py-keyword">pass</span></span>
+<span class="py-output"><BLANKLINE></span>
+<span class="py-output"><span class="py-keyword">class</span> <span class="py-defname">Foo</span>:</span>
+<span class="py-output">    <span class="py-keyword">def</span> <span class="py-defname">__init__</span>(self):</span>
+<span class="py-output">        <span class="py-keyword">pass</span></pre></span>
+<span class="py-output"><BLANKLINE></span></pre>
+</div>
+<div class="section" id="consolidated-fields">
+<h1>Consolidated Fields</h1>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">from</span> epydoc.test.util <span class="py-keyword">import</span> runbuilder</pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>runbuilder(s=<span class="py-string">'''</span>
+<span class="py-more">... </span><span class="py-string">    __docformat__ = 'restructuredtext'</span>
+<span class="py-more">... </span><span class="py-string">    class Foo:</span>
+<span class="py-more">... </span><span class="py-string">        """This is the object docstring</span>
+<span class="py-more">...</span>
+<span class="py-more">... </span><span class="py-string">        :Parameters:</span>
+<span class="py-more">... </span><span class="py-string">          `a` : string</span>
+<span class="py-more">... </span><span class="py-string">            init param.</span>
+<span class="py-more">...</span>
+<span class="py-more">... </span><span class="py-string">        :Exceptions:</span>
+<span class="py-more">... </span><span class="py-string">          * `ValueError`: frobnication error</span>
+<span class="py-more">... </span><span class="py-string">            init param.</span>
+<span class="py-more">...</span>
+<span class="py-more">... </span><span class="py-string">        :IVariables:</span>
+<span class="py-more">... </span><span class="py-string">          `a` : date</span>
+<span class="py-more">... </span><span class="py-string">            instance var.</span>
+<span class="py-more">... </span><span class="py-string">        """</span>
+<span class="py-more">... </span><span class="py-string">        def __init__(self, a):</span>
+<span class="py-more">... </span><span class="py-string">            pass</span>
+<span class="py-more">... </span><span class="py-string">    '''</span>,
+<span class="py-more">... </span>    build=<span class="py-string">"Foo"</span>,
+<span class="py-more">... </span>    attribs=<span class="py-string">"variables name value exception_descrs "</span>
+<span class="py-more">... </span>        <span class="py-string">"posargs vararg kwarg type_descr arg_types arg_descrs"</span>)
+<span class="py-output">ClassDoc for epydoc_test.Foo [0]</span>
+<span class="py-output"> +- variables</span>
+<span class="py-output">    +- __init__ => VariableDoc for epydoc_test.Foo.__init__ [1]</span>
+<span class="py-output">    |  +- name = '__init__'</span>
+<span class="py-output">    |  +- type_descr = None</span>
+<span class="py-output">    |  +- value</span>
+<span class="py-output">    |     +- RoutineDoc for epydoc_test.Foo.__init__ [2]</span>
+<span class="py-output">    |        +- arg_descrs = [([u'a'], u'init param.')]</span>
+<span class="py-output">    |        +- arg_types = {u'a': u'string'}</span>
+<span class="py-output">    |        +- exception_descrs = [(DottedName(u'ValueError'), ...</span>
+<span class="py-output">    |        +- kwarg = None</span>
+<span class="py-output">    |        +- posargs = ['self', 'a']</span>
+<span class="py-output">    |        +- vararg = None</span>
+<span class="py-output">    +- a => VariableDoc for epydoc_test.Foo.a [3]</span>
+<span class="py-output">       +- name = u'a'</span>
+<span class="py-output">       +- type_descr = u'date'</span>
+<span class="py-output">       +- value = <UNKNOWN></span></pre>
+</blockquote>
+</div>
+<div class="section" id="misc-rst-constructs">
+<h1>Misc rst constructs</h1>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>runbuilder(s=<span class="py-string">'''</span>
+<span class="py-more">... </span><span class="py-string">    __docformat__ = 'restructuredtext'</span>
+<span class="py-more">...</span>
+<span class="py-more">... </span><span class="py-string">    class Foo:</span>
+<span class="py-more">... </span><span class="py-string">        """Testing defining_module</span>
+<span class="py-more">...</span>
+<span class="py-more">... </span><span class="py-string">        :cvar `c`: class var in class docstring</span>
+<span class="py-more">... </span><span class="py-string">        :type `c`: str</span>
+<span class="py-more">... </span><span class="py-string">        """</span>
+<span class="py-more">... </span><span class="py-string">        c = 'abc'</span>
+<span class="py-more">...</span>
+<span class="py-more">... </span><span class="py-string">        def __init__(self):</span>
+<span class="py-more">... </span><span class="py-string">            #: A funny number</span>
+<span class="py-more">... </span><span class="py-string">            #:</span>
+<span class="py-more">... </span><span class="py-string">            #: :type: float</span>
+<span class="py-more">... </span><span class="py-string">            self.x = 108.0</span>
+<span class="py-more">...</span>
+<span class="py-more">... </span><span class="py-string">        y = property(</span>
+<span class="py-more">... </span><span class="py-string">            fget=lambda self: 42,</span>
+<span class="py-more">... </span><span class="py-string">            doc="""A property has no defining module</span>
+<span class="py-more">...</span>
+<span class="py-more">... </span><span class="py-string">            :type: int</span>
+<span class="py-more">... </span><span class="py-string">            """)</span>
+<span class="py-more">...</span>
+<span class="py-more">... </span><span class="py-string">        def f(self):</span>
+<span class="py-more">... </span><span class="py-string">            """A function has a defining module</span>
+<span class="py-more">...</span>
+<span class="py-more">... </span><span class="py-string">            :rtype: int</span>
+<span class="py-more">... </span><span class="py-string">            """</span>
+<span class="py-more">... </span><span class="py-string">            return 42</span>
+<span class="py-more">... </span><span class="py-string">    '''</span>,
+<span class="py-more">... </span>    build=<span class="py-string">'Foo'</span>,
+<span class="py-more">... </span>    attribs=<span class="py-string">"variables name value type_descr return_type descr"</span>)
+<span class="py-output">ClassDoc for epydoc_test.Foo [0]</span>
+<span class="py-output"> +- descr = u'Testing defining_module'</span>
+<span class="py-output"> +- variables</span>
+<span class="py-output">    +- __init__ => VariableDoc for epydoc_test.Foo.__init__ [1]</span>
+<span class="py-output">    |  +- descr = None</span>
+<span class="py-output">    |  +- name = '__init__'</span>
+<span class="py-output">    |  +- type_descr = None</span>
+<span class="py-output">    |  +- value</span>
+<span class="py-output">    |     +- RoutineDoc for epydoc_test.Foo.__init__ [2]</span>
+<span class="py-output">    |        +- descr = None</span>
+<span class="py-output">    |        +- return_type = None</span>
+<span class="py-output">    +- c => VariableDoc for epydoc_test.Foo.c [3]</span>
+<span class="py-output">    |  +- descr = u'class var in class docstring'</span>
+<span class="py-output">    |  +- name = 'c'</span>
+<span class="py-output">    |  +- type_descr = u'str'</span>
+<span class="py-output">    |  +- value</span>
+<span class="py-output">    |     +- GenericValueDoc [4]</span>
+<span class="py-output">    |        +- descr = None</span>
+<span class="py-output">    +- f => VariableDoc for epydoc_test.Foo.f [5]</span>
+<span class="py-output">    |  +- descr = None</span>
+<span class="py-output">    |  +- name = 'f'</span>
+<span class="py-output">    |  +- type_descr = None</span>
+<span class="py-output">    |  +- value</span>
+<span class="py-output">    |     +- RoutineDoc for epydoc_test.Foo.f [6]</span>
+<span class="py-output">    |        +- descr = u'A function has a defining module'</span>
+<span class="py-output">    |        +- return_type = u'int'</span>
+<span class="py-output">    +- x => VariableDoc for epydoc_test.Foo.x [7]</span>
+<span class="py-output">    |  +- descr = u'A funny number'</span>
+<span class="py-output">    |  +- name = u'x'</span>
+<span class="py-output">    |  +- type_descr = u'float'</span>
+<span class="py-output">    |  +- value = <UNKNOWN></span>
+<span class="py-output">    +- y => VariableDoc for epydoc_test.Foo.y [8]</span>
+<span class="py-output">       +- descr = None</span>
+<span class="py-output">       +- name = 'y'</span>
+<span class="py-output">       +- type_descr = None</span>
+<span class="py-output">       +- value</span>
+<span class="py-output">          +- PropertyDoc for epydoc_test.Foo.y [9]</span>
+<span class="py-output">             +- descr = u'A property has no defining module'</span>
+<span class="py-output">             +- type_descr = u'int'</span></pre>
+</blockquote>
+</div>
+</div>
+<table width="100%" class="navbox" cellpadding="1" cellspacing="0">
+  <tr>
+  <a class="nav" href="../index.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="../index.html">
+    Home</a></td></a>
+  <a class="nav" href="../installing.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="../installing.html">
+    Installing Epydoc</a></td></a>
+  <a class="nav" href="../using.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="../using.html">
+    Using Epydoc</a></td></a>
+  <a class="nav" href="../epytext.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="../epytext.html">
+    Epytext</a></td></a>
+  <td align="center" width="20%" class="nav">
+    
+    <A href="http://sourceforge.net/projects/epydoc"> 
+    <IMG src="../sflogo.png" 
+    width="88" height="26" border="0" alt="SourceForge"
+    align="top"/></A></td>
+    </tr>
+</table>
+</body>
+</html>
diff --git a/doc/doctest/zope2.html b/doc/doctest/zope2.html
new file mode 100644
index 0000000..2b28d82
--- /dev/null
+++ b/doc/doctest/zope2.html
@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="ascii" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ascii" />
+<meta name="generator" content="Docutils 0.5: http://docutils.sourceforge.net/" />
+<title>Regression Testing for Zope 2 support</title>
+<link rel="stylesheet" href="../custom.css" type="text/css" />
+</head>
+<body>
+<div class="document" id="regression-testing-for-zope-2-support">
+<h1 class="title">Regression Testing for Zope 2 support</h1>
+<table class="docinfo" frame="void" rules="none">
+<col class="docinfo-name" />
+<col class="docinfo-content" />
+<tbody valign="top">
+<tr class="field"><th class="docinfo-name">RequireModule:</th><td class="field-body"><p class="first">ExtensionClass</p>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">from</span> epydoc.test.util <span class="py-keyword">import</span> runintrospecter</pre>
+</td>
+</tr>
+</tbody>
+</table>
+<p>We treat extension classes as if they were classes:</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">from</span> ExtensionClass <span class="py-keyword">import</span> ExtensionClass</pre>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>runintrospecter(s=<span class="py-string">'''</span>
+<span class="py-more">... </span><span class="py-string">    from ExtensionClass import ExtensionClass</span>
+<span class="py-more">... </span><span class="py-string">    '''</span>, attribs=<span class="py-string">'variables value pyval'</span>,
+<span class="py-more">... </span>    introspect=<span class="py-string">'ExtensionClass'</span>)
+<span class="py-output">ClassDoc [0]</span>
+<span class="py-output"> +- pyval = <extension class ExtensionClass at 40...</span>
+<span class="py-output"> +- variables</span>
+<span class="py-output">    +- __basicnew__ => VariableDoc for __basicnew__ [1]</span>
+<span class="py-output">    |  +- value</span>
+<span class="py-output">    |     +- RoutineDoc [2]</span>
+<span class="py-output">    |        +- pyval = <CMethod object at ...></span>
+<span class="py-output">    +- __call__ => VariableDoc for __call__ [3]</span>
+<span class="py-output">    |  +- value</span>
+<span class="py-output">    |     +- RoutineDoc [4]</span>
+<span class="py-output">    |        +- pyval = <CMethod object at ...></span>
+<span class="py-output">    +- __delattr__ => VariableDoc for __delattr__ [5]</span>
+<span class="py-output">    |  +- value</span>
+<span class="py-output">    |     +- RoutineDoc [6]</span>
+<span class="py-output">    |        +- pyval = <CMethod object at ...></span>
+<span class="py-output">    +- __getattr__ => VariableDoc for __getattr__ [7]</span>
+<span class="py-output">    |  +- value</span>
+<span class="py-output">    |     +- RoutineDoc [8]</span>
+<span class="py-output">    |        +- pyval = <CMethod object at ...></span>
+<span class="py-output">    +- __init__ => VariableDoc for __init__ [9]</span>
+<span class="py-output">    |  +- value</span>
+<span class="py-output">    |     +- RoutineDoc [10]</span>
+<span class="py-output">    |        +- pyval = <CMethod object at ...></span>
+<span class="py-output">    +- __reduce__ => VariableDoc for __reduce__ [11]</span>
+<span class="py-output">    |  +- value</span>
+<span class="py-output">    |     +- RoutineDoc [12]</span>
+<span class="py-output">    |        +- pyval = <CMethod object at ...></span>
+<span class="py-output">    +- __repr__ => VariableDoc for __repr__ [13]</span>
+<span class="py-output">    |  +- value</span>
+<span class="py-output">    |     +- RoutineDoc [14]</span>
+<span class="py-output">    |        +- pyval = <CMethod object at ...></span>
+<span class="py-output">    +- __setattr__ => VariableDoc for __setattr__ [15]</span>
+<span class="py-output">    |  +- value</span>
+<span class="py-output">    |     +- RoutineDoc [16]</span>
+<span class="py-output">    |        +- pyval = <CMethod object at ...></span>
+<span class="py-output">    +- inheritedAttribute => VariableDoc for inheritedAttribute [17]</span>
+<span class="py-output">       +- value</span>
+<span class="py-output">          +- RoutineDoc [18]</span>
+<span class="py-output">             +- pyval = <CMethod object at ...></span></pre>
+</blockquote>
+<p>(If we didn't add special support, <tt class="docutils literal"><span class="pre">ExtensionClass</span></tt> would be a
+<cite>GenericValueDoc</cite>.)</p>
+</div>
+<table width="100%" class="navbox" cellpadding="1" cellspacing="0">
+  <tr>
+  <a class="nav" href="../index.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="../index.html">
+    Home</a></td></a>
+  <a class="nav" href="../installing.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="../installing.html">
+    Installing Epydoc</a></td></a>
+  <a class="nav" href="../using.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="../using.html">
+    Using Epydoc</a></td></a>
+  <a class="nav" href="../epytext.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="../epytext.html">
+    Epytext</a></td></a>
+  <td align="center" width="20%" class="nav">
+    
+    <A href="http://sourceforge.net/projects/epydoc"> 
+    <IMG src="../sflogo.png" 
+    width="88" height="26" border="0" alt="SourceForge"
+    align="top"/></A></td>
+    </tr>
+</table>
+</body>
+</html>
diff --git a/doc/doctest/zope3.html b/doc/doctest/zope3.html
new file mode 100644
index 0000000..3c7fd0a
--- /dev/null
+++ b/doc/doctest/zope3.html
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="ascii" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ascii" />
+<meta name="generator" content="Docutils 0.5: http://docutils.sourceforge.net/" />
+<title>Regression Testing for Zope 3 support</title>
+<link rel="stylesheet" href="../custom.css" type="text/css" />
+</head>
+<body>
+<div class="document" id="regression-testing-for-zope-3-support">
+<h1 class="title">Regression Testing for Zope 3 support</h1>
+<table class="docinfo" frame="void" rules="none">
+<col class="docinfo-name" />
+<col class="docinfo-content" />
+<tbody valign="top">
+<tr class="field"><th class="docinfo-name">RequireModule:</th><td class="field-body"><p class="first">zope.interface</p>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">from</span> epydoc.test.util <span class="py-keyword">import</span> runintrospecter</pre>
+</td>
+</tr>
+</tbody>
+</table>
+<p>We treat zope interface objects as if they were classes:</p>
+<blockquote>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span>runintrospecter(s=<span class="py-string">'''</span>
+<span class="py-more">... </span><span class="py-string">    from zope.interface import Interface, Attribute</span>
+<span class="py-more">... </span><span class="py-string">    class IExample(Interface):</span>
+<span class="py-more">... </span><span class="py-string">        """This interface represents a generic example."""</span>
+<span class="py-more">...</span>
+<span class="py-more">... </span><span class="py-string">        text = Attribute("The text of the example")</span>
+<span class="py-more">...</span>
+<span class="py-more">... </span><span class="py-string">        def setText(text):</span>
+<span class="py-more">... </span><span class="py-string">            "This method writes the passed text to the text attribute."</span>
+<span class="py-more">...</span>
+<span class="py-more">... </span><span class="py-string">        def getText():</span>
+<span class="py-more">... </span><span class="py-string">            "This method returns the value of the text attribute."</span>
+<span class="py-more">... </span><span class="py-string">    '''</span>, attribs=<span class="py-string">'pyval canonical_name'</span>, introspect=<span class="py-string">'IExample'</span>)
+<span class="py-output">ClassDoc for epydoc_test.IExample [0]</span>
+<span class="py-output"> +- canonical_name = DottedName('epydoc_test', 'IExample')</span>
+<span class="py-output"> +- pyval = <InterfaceClass epydoc_test.IExample></span></pre>
+</blockquote>
+<p>(If we didn't add special support, <tt class="docutils literal"><span class="pre">IExample</span></tt> would be a
+<cite>GenericValueDoc</cite>.)</p>
+</div>
+<table width="100%" class="navbox" cellpadding="1" cellspacing="0">
+  <tr>
+  <a class="nav" href="../index.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="../index.html">
+    Home</a></td></a>
+  <a class="nav" href="../installing.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="../installing.html">
+    Installing Epydoc</a></td></a>
+  <a class="nav" href="../using.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="../using.html">
+    Using Epydoc</a></td></a>
+  <a class="nav" href="../epytext.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="../epytext.html">
+    Epytext</a></td></a>
+  <td align="center" width="20%" class="nav">
+    
+    <A href="http://sourceforge.net/projects/epydoc"> 
+    <IMG src="../sflogo.png" 
+    width="88" height="26" border="0" alt="SourceForge"
+    align="top"/></A></td>
+    </tr>
+</table>
+</body>
+</html>
diff --git a/doc/docutils.css b/doc/docutils.css
new file mode 100644
index 0000000..98bf08f
--- /dev/null
+++ b/doc/docutils.css
@@ -0,0 +1,273 @@
+/*
+:Author: David Goodger
+:Contact: goodger at python.org
+:Date: $Date: 2006-05-21 22:44:42 +0200 (Sun, 21 May 2006) $
+:Revision: $Revision: 4564 $
+:Copyright: This stylesheet has been placed in the public domain.
+
+Default cascading style sheet for the HTML output of Docutils.
+
+See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to
+customize this style sheet.
+*/
+
+/* used to remove borders from tables and images */
+.borderless, table.borderless td, table.borderless th {
+  border: 0 }
+
+table.borderless td, table.borderless th {
+  /* Override padding for "table.docutils td" with "! important".
+     The right padding separates the table cells. */
+  padding: 0 0.5em 0 0 ! important }
+
+.first {
+  /* Override more specific margin styles with "! important". */
+  margin-top: 0 ! important }
+
+.last, .with-subtitle {
+  margin-bottom: 0 ! important }
+
+.hidden {
+  display: none }
+
+a.toc-backref {
+  text-decoration: none ;
+  color: black }
+
+blockquote.epigraph {
+  margin: 2em 5em ; }
+
+dl.docutils dd {
+  margin-bottom: 0.5em }
+
+dl.docutils dt {
+  font-weight: bold }
+
+div.abstract {
+  margin: 2em 5em }
+
+div.abstract p.topic-title {
+  font-weight: bold ;
+  text-align: center }
+
+div.admonition, div.attention, div.caution, div.danger, div.error,
+div.hint, div.important, div.note, div.tip, div.warning {
+  margin: 2em ;
+  border: medium outset ;
+  padding: 1em }
+
+div.admonition p.admonition-title, div.hint p.admonition-title,
+div.important p.admonition-title, div.note p.admonition-title,
+div.tip p.admonition-title {
+  font-weight: bold ;
+  font-family: sans-serif }
+
+div.attention p.admonition-title, div.caution p.admonition-title,
+div.danger p.admonition-title, div.error p.admonition-title,
+div.warning p.admonition-title {
+  color: red ;
+  font-weight: bold ;
+  font-family: sans-serif }
+
+/* Uncomment (and remove this text!) to get reduced vertical space in
+   compound paragraphs.
+div.compound .compound-first, div.compound .compound-middle {
+  margin-bottom: 0.5em }
+
+div.compound .compound-last, div.compound .compound-middle {
+  margin-top: 0.5em }
+*/
+
+div.dedication {
+  margin: 2em 5em ;
+  text-align: center ;
+  font-style: italic }
+
+div.dedication p.topic-title {
+  font-weight: bold ;
+  font-style: normal }
+
+div.figure {
+  margin-left: 2em ;
+  margin-right: 2em }
+
+div.footer, div.header {
+  clear: both;
+  font-size: smaller }
+
+div.line-block {
+  display: block ;
+  margin-top: 1em ;
+  margin-bottom: 1em }
+
+div.line-block div.line-block {
+  margin-top: 0 ;
+  margin-bottom: 0 ;
+  margin-left: 1.5em }
+
+div.sidebar {
+  margin-left: 1em ;
+  border: medium outset ;
+  padding: 1em ;
+  background-color: #ffffee ;
+  width: 40% ;
+  float: right ;
+  clear: right }
+
+div.sidebar p.rubric {
+  font-family: sans-serif ;
+  font-size: medium }
+
+div.system-messages {
+  margin: 5em }
+
+div.system-messages h1 {
+  color: red }
+
+div.system-message {
+  border: medium outset ;
+  padding: 1em }
+
+div.system-message p.system-message-title {
+  color: red ;
+  font-weight: bold }
+
+div.topic {
+  margin: 2em }
+
+h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
+h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
+  margin-top: 0.4em }
+
+h1.title {
+  text-align: center }
+
+h2.subtitle {
+  text-align: center }
+
+hr.docutils {
+  width: 75% }
+
+img.align-left {
+  clear: left }
+
+img.align-right {
+  clear: right }
+
+ol.simple, ul.simple {
+  margin-bottom: 1em }
+
+ol.arabic {
+  list-style: decimal }
+
+ol.loweralpha {
+  list-style: lower-alpha }
+
+ol.upperalpha {
+  list-style: upper-alpha }
+
+ol.lowerroman {
+  list-style: lower-roman }
+
+ol.upperroman {
+  list-style: upper-roman }
+
+p.attribution {
+  text-align: right ;
+  margin-left: 50% }
+
+p.caption {
+  font-style: italic }
+
+p.credits {
+  font-style: italic ;
+  font-size: smaller }
+
+p.label {
+  white-space: nowrap }
+
+p.rubric {
+  font-weight: bold ;
+  font-size: larger ;
+  color: maroon ;
+  text-align: center }
+
+p.sidebar-title {
+  font-family: sans-serif ;
+  font-weight: bold ;
+  font-size: larger }
+
+p.sidebar-subtitle {
+  font-family: sans-serif ;
+  font-weight: bold }
+
+p.topic-title {
+  font-weight: bold }
+
+pre.address {
+  margin-bottom: 0 ;
+  margin-top: 0 ;
+  font-family: serif ;
+  font-size: 100% }
+
+pre.literal-block, pre.doctest-block {
+  margin-left: 2em ;
+  margin-right: 2em }
+
+span.classifier {
+  font-family: sans-serif ;
+  font-style: oblique }
+
+span.classifier-delimiter {
+  font-family: sans-serif ;
+  font-weight: bold }
+
+span.interpreted {
+  font-family: sans-serif }
+
+span.option {
+  white-space: nowrap }
+
+span.pre {
+  white-space: pre }
+
+span.problematic {
+  color: red }
+
+span.section-subtitle {
+  /* font-size relative to parent (h1..h6 element) */
+  font-size: 80% }
+
+table.citation {
+  border-left: solid 1px gray;
+  margin-left: 1px }
+
+table.docinfo {
+  margin: 2em 4em }
+
+table.docutils {
+  margin-top: 0.5em ;
+  margin-bottom: 0.5em }
+
+table.footnote {
+  border-left: solid 1px black;
+  margin-left: 1px }
+
+table.docutils td, table.docutils th,
+table.docinfo td, table.docinfo th {
+  padding-left: 0.5em ;
+  padding-right: 0.5em ;
+  vertical-align: top }
+
+table.docutils th.field-name, table.docinfo th.docinfo-name {
+  font-weight: bold ;
+  text-align: left ;
+  white-space: nowrap ;
+  padding-left: 0 }
+
+h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
+h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
+  font-size: 100% }
+
+ul.auto-toc {
+  list-style-type: none }
diff --git a/doc/epydoc-man.html b/doc/epydoc-man.html
new file mode 100644
index 0000000..0340e62
--- /dev/null
+++ b/doc/epydoc-man.html
@@ -0,0 +1,1101 @@
+
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML><HEAD><TITLE>Man page of EPYDOC</TITLE>
+<link rel="stylesheet" href="epydoc.css" type="text/css"/></HEAD><BODY><DIV CLASS="BODY">
+<H1>epydoc (1)</H1>
+
+
+
+<A NAME="lbAB">
+<H2>NAME</H2></A>
+
+epydoc - generate API documentation from Python docstrings
+
+<A NAME="lbAC">
+<H2>SYNOPSIS</H2></A>
+
+<DL COMPACT>
+<DT>
+<B>epydoc</B>
+
+[<B>action</B>]
+
+[<B>options</B>]
+
+<I>names...</I>
+
+
+</DL>
+<A NAME="lbAD">
+<H2>DESCRIPTION</H2></A>
+
+<B>epydoc</B>
+
+generates API documentation for Python modules and packages, based on
+their docstrings.  A lightweight markup language called
+<B>epytext</B>
+
+can be used to format docstrings, and to add information about
+specific fields, such as parameters and instance variables.  Epydoc
+also understands docstrings written in ReStructuredText, Javadoc, and
+plaintext.  Currently, epydoc supports two basic output formats: HTML
+and LaTeX.
+<P>
+
+The HTML API documentation produced by 
+<B>epydoc</B>
+
+consists of a set of HTML files, including: an API documentation page
+for each class and module; a syntax-highlighted source code page for
+each module; an identifier index page; a help page; and a frames-based
+table of contents.  When appropriate,
+<B>epydoc</B>
+
+will also generate
+index pages for bugs, defined terms, and to-do items; 
+a class hierarchy page; and a package hierarchy page.
+<P>
+
+The LaTeX API documentation produced by
+<B>epydoc</B>
+
+consists of a main LaTeX file, and a LaTeX file for each module.  If
+you use 
+<B>--dvi</B>,
+
+<B>--ps</B>,
+
+or
+<B>--pdf ,</B>
+
+then
+<B>epydoc</B>
+
+will invoke external commands to convert the LaTeX output to the
+requested format.  Note that the LaTeX files containing the
+documentation for individual modules can be included as chapters or
+sections of other LaTeX documents, using the LaTeX
+<B>\\include</B>
+
+command.  If you wish to include individual classes in other LaTeX
+documents, then use the
+<B>--separate-classes</B>
+
+option to produce a separate LaTeX file for each class.
+<P>
+
+<B>epydoc</B>
+
+can also be used to check the completeness of the API documentation.
+By default, it checks that every public package, module, class,
+method, and function has a docstring description.  The
+<B>--tests</B>
+
+option can be used to specify additional tests to perform.
+<P>
+
+
+<A NAME="lbAE">
+<H2>OPTIONS</H2></A>
+
+Epydoc's options are divided into six categories: basic options,
+actions, generation options, output options, graph options, and return
+value options.
+<P>
+
+
+<B>BASIC OPTIONS</B>
+
+<DL COMPACT><DT><DD>
+<DL COMPACT>
+<DT><I>names</I>...
+
+<DD>
+The list of objects that should be documented.  Objects can be
+specified using Python dotted names (such as
+<B>os.path</B>),
+
+filenames (such as
+<B>epydoc/epytext.py</B>),
+
+or directory names (such as
+<B>epydoc/</B>).
+
+Directory names specify packages, and are expanded to include
+all sub-modules and sub-packages.  If you wish to exclude
+certain sub-modules or sub-packages, use the 
+<B>--exclude</B>
+
+option (described below).
+
+<DT><B>--config </B><I>file</I>
+
+<DD>
+A configuration file, specifying additional
+<B>options</B>and/or<B>names</B>.
+
+This option may be repeated.
+
+<DT><B>--q, --quiet, --v, --verbose</B>
+
+<DD>
+Produce quite (or verbose) output.  If used multiple times, this
+option produces successively more quiet (or verbose) output.
+
+<DT><B>--debug</B>
+
+<DD>
+Show full tracebacks for internal errors.
+
+<DT><B>--simple-term</B>
+
+<DD>
+Do not try to use color or cursor control when displaying the progress
+bar, warnings, or errors.
+</DL>
+</DL>
+
+<P>
+
+
+<B>ACTIONS</B>
+
+<DL COMPACT><DT><DD>
+<DL COMPACT>
+<DT><B>--html</B>
+
+<DD>
+Write HTML output.
+<B>[default]</B>
+
+<DT><B>--latex</B>
+
+<DD>
+Write LaTeX output.
+<DT><B>--dvi</B>
+
+<DD>
+Write DVI output.
+<DT><B>--ps</B>
+
+<DD>
+Write Postscript output.
+<DT><B>--pdf</B>
+
+<DD>
+Write Adobe Acrobat (pdf) output. 
+<DT><B>--check</B>
+
+<DD>
+Perform completeness checks on the documentation.
+<DT><B>--pickle</B>
+
+<DD>
+Write the documentation to a pickle file.
+</DL>
+</DL>
+
+<P>
+
+
+<B>GENERATION OPTIONS</B>
+
+<DL COMPACT><DT><DD>
+
+<DL COMPACT>
+<DT><B>--docformat </B><I>format</I>
+
+<DD>
+Set the default value for
+<B>__docformat__</B>
+
+to
+<I>format</I>.
+
+<B>__docformat__</B>
+
+is a module variable that specifies the markup language for the
+docstrings in a module.  Its value consists of the name of a markup
+language, optionally followed by a language code (such as
+<B>en</B>
+
+for English).  For a list of the markup languages currently recognized
+by epydoc, run
+<B>epydoc --help docformat</B>.
+
+
+<DT><B>--parse-only</B>
+
+<DD>
+Gather all information about the documented objects by parsing the
+relevant Python source code; in particular, do
+<I>not</I>
+
+use introspection to gather information about the documented objects.
+This option should be used when epydoc is run on untrusted code; or on
+code that can not be introspected because of missing dependencies, or
+because importing it would cause undesired side-effects.
+
+<DT><B>--introspect-only</B>
+
+<DD>
+Gather all information about the documented objects by introspection;
+in particular, do
+<I>not</I>
+
+gather information by parsing the object's Python source code.
+
+<DT><B>--exclude </B><I>PATTERN</I>
+
+<DD>
+Do not document any object whose name matches the given regular
+expression pattern.
+
+<DT><B>--exclude-introspect </B><I>PATTERN</I>
+
+<DD>
+Do not use introspection to gather information about any object whose
+name matches the given regular expression.  
+
+<DT><B>--exclude-parse </B><I>PATTERN</I>
+
+<DD>
+Do not use Python source code parsing to gather information about any
+object whose name matches the given regular expression.
+
+<DT><B>--inheritance </B><I>format</I>
+
+<DD>
+The format that should be used to display inherited methods,
+variables, and properties in the generated "summary" tables.
+If
+<I>format</I>
+
+is "grouped," then inherited objects are gathered into groups, based
+on which class that they are inherited from.  If
+<I>format</I>
+
+is "listed," then inherited objects are listed in a short list at the
+end of the summary table.  If
+<I>format</I>
+
+is "included," then inherited objects are mixed in with non-inherited
+objects.  The default format for HTML output is "grouped."
+
+<DT><B>--show-private, --no-private</B>
+
+<DD>
+These options control whether documentation is generated for private
+objects.  By default, the generated documentation includes private
+objects, and users can choose whether to view private objects or not,
+by clicking on "show private" and "hide private" links.  But if you
+want to discourage users from directly accessing private objects, then
+you may prefer not to generate documentation for private objects.
+
+<DT><B>--show-imports, --no-imports</B>
+
+<DD>
+These options control whether module imports are included in the
+generated documentation.  By default, imports are not included.
+
+<DT><B>--show-sourcecode, --no-sourcecode</B>
+
+<DD>
+These options control whether or not epydoc should generate
+syntax-highlighted pages containing the souce code of each module in
+the HTML output.  By default, the sourcecode pages are generated.
+
+<DT><B>--include-log</B>
+
+<DD>
+Generate an HTML page
+<B>epydoc-log.html</B>
+
+containing all error and warning messages that are generated by
+epydoc, and include it in the generated output.
+</DL>
+</DL>
+
+<P>
+
+
+<B>OUTPUT OPTIONS</B>
+
+<DL COMPACT><DT><DD>
+
+<DL COMPACT>
+<DT><B>-o </B><I>dir</I><B>, --output </B><I>dir</I>
+
+<DD>
+The output directory.  If
+<B>dir</B>
+
+does not exist, then it will be created.  If no output directory is
+specified, then the action name (e.g.,
+<B>html</B> or <B>pdf</B>).
+
+<B>html</B>
+
+
+<DT><B>-c </B><I>sheet</I><B>, --css </B><I>sheet</I>
+
+<DD>
+CSS stylesheet for HTML output files.  If
+<I>sheet</I>
+
+is a file, then the stylesheet is copied from that file; otherwise,
+<I>sheet</I>
+
+is taken to be the name of a built-in stylesheet.  For a list of
+the built-in stylesheets, run
+<B>epydoc --help css</B>.
+
+If a CSS stylesheet is not specified, then the default stylesheet is
+used.
+
+<DT><B>-n </B><I>name</I><B>, --name </B><I>name</I>
+
+<DD>
+The name of the project whose documentation is being generated.  
+
+<DT><B>-u </B><I>url</I><B>, --url </B><I>url</I>
+
+<DD>
+The URL of the project's homepage.
+<DT>
+<DD>
+<DT><B>--navlink </B><I>html</I>
+
+<DD>
+HTML code for the homepage link on the HTML navigation bar.  If this
+HTML code contains any hyperlinks
+(<B><a href=...></B>),
+
+then it will be inserted verbatim.  If
+it does not contain any hyperlinks, and a project url is specified
+(with
+<B>--url</B>),
+
+then a hyperlink to the specified URL is added to the link.
+
+<DT><B>--help-file </B><I>file</I>
+
+<DD>
+An alternate help file.
+<B>file</B>
+
+should contain the body of an HTML file -- navigation bars will be
+added to it.
+
+<DT><B>--show-frames, --no-frames</B>
+
+<DD>
+These options control whether HMTL output will include a frames-base
+table of contents page.  By default, the frames-based table of
+contents is included.
+
+<DT><B>--separate-classes</B>
+
+<DD>
+In the LaTeX output, describe each class in a separate section of the
+documentation, instead of including them in the documentation for
+their modules.  This creates a separate LaTeX file for each class, so
+it can also be useful if you want to include the documentation for one
+or two classes as sections of your own LaTeX document.
+</DL>
+</DL>
+
+<P>
+
+
+<B>GRAPH OPTIONS</B>
+
+<DL COMPACT><DT><DD>
+
+<DL COMPACT>
+<DT><B>--graph </B><I>graphtype</I>
+
+<DD>
+Include graphs of type
+<B>graphtype</B>
+
+in the generated output.  Graphs are generated using the Graphviz dot
+executable.  If this executable is not on the path, then use
+<B>--dotpath</B>
+
+to specify its location.  This option may be repeated to include
+multiple graph types in the output.
+<B>graphtype</B>
+
+should be one of:
+<B>all</B>, <B>classtree</B>, <B>callgraph</B>, or <B>umlclasstree</B>.
+
+
+<DT><B>--dotpath </B><I>path</I>
+
+<DD>
+The path to the Graphviz
+<B>dot</B>
+
+executable.
+
+<DT><B>--graph-font </B><I>font</I>
+
+<DD>
+The name of the font used to generate Graphviz graphs.  (e.g.,
+helvetica or times).
+
+<DT><B>--graph-font-size </B><I>size</I>
+
+<DD>
+The size of the font used to generate Graphviz graphs, in points.
+
+<DT><B>--pstat </B><I>file</I>
+
+<DD>
+A pstat output file, to be used in generating call graphs.
+</DL>
+</DL>
+
+<P>
+
+
+<B>RETURN VALUE OPTIONS</B>
+
+<DL COMPACT><DT><DD>
+
+<DL COMPACT>
+<DT><B>--fail-on-error</B>
+
+<DD>
+Return a non-zero exit status, indicating failure, if any errors are
+encountered.
+
+<DT><B>--fail-on-warning</B>
+
+<DD>
+Return a non-zero exit status, indicating failure, if any errors or
+warnings are encountered (not including docstring warnings).
+
+<DT><B>--fail-on-docstring-warning</B>
+
+<DD>
+Return a non-zero exit status, indicating failure, if any errors or
+warnings are encountered (including docstring warnings).
+</DL>
+</DL>
+
+
+<A NAME="lbAF">
+<H2>HTML FILES</H2></A>
+
+The HTML API documentation produced by 
+<B>epydoc</B>
+
+consists of the following files:
+<P>
+
+<B>OBJECT DOCUMENTATION PAGES</B>
+
+<DL COMPACT><DT><DD>
+<DL COMPACT>
+<DT><B>index.html</B>
+
+<DD>
+The standard entry point for the documentation.  Normally,
+<B>index.html</B>
+
+is a copy of the frames file
+(<B>frames.html</B>).
+
+But if the
+<B>--no-frames</B>
+
+option is used, then
+<B>index.html</B>
+
+is a copy of the API documentation home page, which is normally the
+documentation page for the top-level package or module (or the trees
+page if there is no top-level package or module).
+<DT><I>module</I><B>-module.html</B>
+
+<DD>
+The API documentation for a module.  
+<I>module</I>
+
+is the complete dotted name of the module, such as 
+<B>sys</B>
+
+or
+<B>epydoc.epytext</B>.
+
+<DT><I>class</I><B>-class.html</B>
+
+<DD>
+The API documentation for a class, exception, or type.
+<I>class</I>
+
+is the complete dotted name of the class, such as
+<B>epydoc.epytext.Token</B>
+
+or
+<B>array.ArrayType</B>.
+
+<DT><I>module</I><B>-pysrc.html</B>
+
+<DD>
+A syntax-highlighted page containing the Python source code for
+<I>module</I>.
+
+This page includes links back to the API documentation pages.
+<DT><B>module-tree.html</B>
+
+<DD>
+The module hierarchy.
+<DT><B>class-tree.html</B>
+
+<DD>
+The class hierarchy.  This page is only generated if at least one
+class is documented.
+</DL>
+<P>
+
+</DL>
+
+<B>INDICES</B>
+
+<DL COMPACT><DT><DD>
+<DL COMPACT>
+<DT><B>identifier-index.html</B>
+
+<DD>
+An index of all documented identifiers.  If the identifier index
+contains more than 3,000 entries, then it will be split into separate
+pages for each letter, named
+<B>identifier-index-a.html</B>,
+
+<B>identifier-index-b.html</B>, etc.
+
+<DT><B>term-index.html</B>
+
+<DD>
+An index of all explicitly marked definitional terms.  This page is
+only generated if at least one definition term is marked in a
+formatted docstring.
+<DT><B>bug-index.html</B>
+
+<DD>
+An index of all explicitly marked
+<B>@bug</B>
+
+fields.  This page is only
+generated if at least one
+<B>@bug</B>
+
+field is listed in a formatted docstring.
+<DT><B>todo-index.html</B>
+
+<DD>
+An index of all explicitly marked
+<B>@todo</B>
+
+fields.  This page is only
+generated if at least one
+<B>@todo</B>
+
+field is listed in a formatted docstring.
+<DT><B>changed-index.html</B>
+
+<DD>
+An index of all explicitly marked
+<B>@changed</B>
+
+fields.  This page is only
+generated if at least one
+<B>@changed</B>
+
+field is listed in a formatted docstring.
+<DT><B>deprecated-index.html</B>
+
+<DD>
+An index of all explicitly marked
+<B>@deprecated</B>
+
+fields.  This page is only
+generated if at least one
+<B>@deprecated</B>
+
+field is listed in a formatted docstring.
+<DT><B>since-index.html</B>
+
+<DD>
+An index of all explicitly marked
+<B>@since</B>
+
+fields.  This page is only
+generated if at least one
+<B>@since</B>
+
+field is listed in a formatted docstring.
+</DL>
+</DL>
+
+<P>
+
+<B>FRAMES-BASED TABLE OF CONTENTS</B>
+
+<DL COMPACT><DT><DD>
+<DL COMPACT>
+<DT><B>frames.html</B>
+
+<DD>
+The main frames file.  Two frames on the left side of the window
+contain a table of contents, and the main frame on the right side of
+the window contains API documentation pages.
+<DT><B>toc.html</B>
+
+<DD>
+The top-level table of contents page.  This page is displayed in the
+upper-left frame of
+<B>frames.html</B>,
+
+and provides links to the
+<B>toc-everything.html</B>
+
+and 
+<B>toc-</B><I>module</I><B>-module.html</B>
+
+pages.
+<DT><B>toc-everything.html</B>
+
+<DD>
+The table of contents for the entire project.  This page is displayed
+in the lower-left frame of
+<B>frames.html</B>,
+
+and provides links to every class, type, exception, function, and
+variable defined by the project.
+<DT><B>toc-</B><I>module</I><B>-module.html</B>
+
+<DD>
+The table of contents for a module.  This page is displayed in the
+lower-left frame of
+<B>frames.html</B>,
+
+and provides links to every class, type, exception, function, and
+variable defined by the module.
+<I>module</I>
+
+is the complete dotted name of the module, such as 
+<B>sys</B>
+
+or
+<B>epydoc.epytext</B>.
+
+</DL>
+</DL>
+
+<P>
+
+<B>OTHER PAGES</B>
+
+<DL COMPACT><DT><DD>
+<DL COMPACT>
+<DT><B>help.html</B>
+
+<DD>
+The help page for the project.  This page explains how to use and
+navigate the webpage produced by epydoc.
+<DT><B>redirect.html</B>
+
+<DD>
+This page uses javascript to translate dotted names to their
+corresponding URLs.  For example, in epydoc's documentation,
+loading the page
+<B><redirect.html#epydoc.apidoc.DottedName></B>
+
+will automatically redirect the browser to
+<B><epydoc.apidoc-module.html#DottedName></B>.
+
+<DT><B>epydoc.css</B>
+
+<DD>
+The CSS stylesheet used to display all HTML pages.
+<DT><B>epydoc.js</B>
+
+<DD>
+A javascript file used to define javascript functions used by epydoc.
+<DT><B>epydoc-log.html</B>
+
+<DD>
+A page containing a log of all warnings and errors that were generated
+by epydoc, along with a table listing all of the options that were
+used.
+
+</DL>
+</DL>
+<A NAME="lbAG">
+<H2>LATEX FILES</H2></A>
+
+The LaTeX API documentation produced by
+<B>epydoc</B>
+
+consists of the following files:
+<DL COMPACT><DT><DD>
+<DL COMPACT>
+<DT><B>api.pdf</B>
+
+<DD>
+An Adobe Acrobat (pdf) file containing the complete API documentation.
+This file is only generated if you use the
+<B>--pdf</B>
+
+option.
+<DT><B>api.tex</B>
+
+<DD>
+The top-level LaTeX file.  This file imports the other LaTeX files, to
+create a single unified document.
+<DT><B>api.dvi</B>
+
+<DD>
+A dvi file containing the complete API documentation.  This file is
+only generated if you use the 
+<B>--dvi</B>
+
+option, the
+<B>--ps</B>
+
+option, or the
+<B>--pdf</B>
+
+option.
+<DT><B>api.ps</B>
+
+<DD>
+A postscript file containing the complete API documentation.  This
+file is only generated if you use the
+<B>--ps</B>
+
+option or the
+<B>--pdf</B>
+
+option.
+<DT><I>module</I><B>-module.tex</B>
+
+<DD>
+The API documentation for a module.
+<I>module</I>
+
+is the complete dotted name of the module, such as
+<B>sys or</B>
+
+<B>epydoc.epytext</B>.
+
+<DT><I>class</I><B>-class.tex</B>
+
+<DD>
+The API documentation for a class, exception, or type.
+<I>class</I>
+
+is the complete dotted name of the class, such as
+<B>epydoc.epytext.Token</B>
+
+or array.ArrayType.  These class documentation files are only created
+if the
+<B>--separate-classes</B>
+
+option is used; otherwise, the documentation for each class is
+included in its module's documentation file.
+</DL>
+</DL>
+
+
+<A NAME="lbAH">
+<H2>DIAGNOSTICS</H2></A>
+
+<B>EPYTEXT MARKUP WARNING MESSAGES</B>
+
+<DL COMPACT><DT><DD>
+Epytext errors are caused by epytext docstrings that contain invalid
+markup.  Whenever an epytext error is detected, the docstring in
+question is treated as a plaintext docstring.  Epydoc can generate the
+following epytext errors:
+<DL COMPACT>
+<DT><B>Bad link target.</B>
+
+<DD>
+The target specified for an inline link contruction
+(<B>L{...}</B>)
+
+is not well-formed.  Link targets must be valid python identifiers.
+<DT><B>Bad uri target.</B>
+
+<DD>
+The target specified for an inline uri contruction
+(<B>U{...}</B>)
+
+is not well-formed.  This typically occurs if inline markup is nested
+inside the URI target.  
+<DT><B>Fields must be at the top level.</B>
+
+<DD>
+The list of fields
+(<B>@param</B>, etc.)
+
+is contained by some other
+block structure (such as a list or a section).
+<DT><B>Fields must be the final elements.</B>
+
+<DD>
+The list of fields
+(<B>@param</B>, etc.)
+
+is not at the end of a docstring.
+<DT><B>Headings must occur at top level.</B>
+
+<DD>
+The heading is contianed in some other block structure (such as a
+list).
+<DT><B>Improper doctest block indentation.</B>
+
+<DD>
+The doctest block dedents past the indentation of its initial prompt
+line.
+<DT><B>Improper heading indentation.</B>
+
+<DD>
+The heading for a section is not left-aligned with the paragraphs in
+the section that contains it.
+<DT><B>Improper paragraph indentation.</B>
+
+<DD>
+The paragraphs within a block are not left-aligned.  This error is
+often generated when plaintext docstrings are parsed using epytext.
+<DT><B>Invalid escape.</B>
+
+<DD>
+An unknown escape sequence was used with the inline escape construction
+(<B>E{...}</B>).
+
+<DT><B>Lists must be indented.</B>
+
+<DD>
+An unindented line immediately following a paragraph starts with a
+list bullet.  Epydoc is not sure whether you meant to start a new list
+item, or meant for a paragraph to include a word that looks like a
+bullet.  If you intended the former, then indent the list.  If you
+intended the latter, then change the word-wrapping of the paragraph,
+or escape the first character of the word that looks like a bullet.
+<DT><B>Unbalanced '{'.</B>
+
+<DD>
+The docstring contains unbalanced braces.  Epytext requires that all
+braces must be balanced.  To include a single unbalanced brace, use
+the escape sequences E{lb} (left brace) and E{rb} (right brace).
+<DT><B>Unbalanced '}'.</B>
+
+<DD>
+The docstring contains unbalanced braces.  Epytext requires that all
+braces must be balanced.  To include a single unbalanced brace, use
+the escape sequences E{lb} (left brace) and E{rb} (right brace).
+<DT><B>Unknown inline markup tag.</B>
+
+<DD>
+An unknown tag was used with the inline markup construction (
+<I>x</I><B>{...}</B>
+
+).
+<DT><B>Wrong underline character for heading.</B>
+
+<DD>
+The underline character used for this section heading does not
+indicate an appopriate section level.  The "=" character should be
+used to underline sections; "-" for subsections; and "~" for
+subsubsections.
+<DT><B>Possible mal-formatted field item.</B>
+
+<DD>
+Epytext detected a line that looks like a field item, but is not
+correctly formatted.  This typically occurs when the trailing colon
+(":") is not included in the field tag.
+<DT><B>Possible heading typo.</B>
+
+<DD>
+Epytext detected a pair of lines that looks like a heading, but the
+number of underline characters does not match the number of characters
+in the heading.  The number of characters in these two lines must
+match exactly for them to be considered a heading.
+</DL>
+</DL>
+
+<P>
+
+<B>FIELD WARNINGS</B>
+
+<DL COMPACT><DT><DD>
+Field warnings are caused by docstrings containing invalid fields.
+The contents of the invalid field are generally ignored.  Epydoc can
+generate the following field warnings:
+<DL COMPACT>
+<DT><B>@param for unknown parameter </B><I>param</I><B>.</B>
+
+<DD>
+A @param field was used to specify the type for a parameter that is
+not included in the function's signature.  This is typically caused by
+a typo in the parameter name.
+<DT><I>tag</I><B> did not expect an argument.</B>
+
+<DD>
+The field tag
+<I>tag</I>
+
+was used with an argument, but it does not take one.
+<DT><I>tag</I><B> expected an argument.</B>
+
+<DD>
+The field tag
+<I>tag</I>
+
+was used without an argument, but it requires one.
+<DT><B>@type for unknown parameter </B><I>param</I><B>.</B>
+
+<DD>
+A @type field was used to specify the type for a parameter that is not
+included in the function's signature.  This is typically
+caused by a typo in the parameter name.
+<DT><B>@type for unknown variable </B><I>var</I><B>.</B>
+
+<DD>
+A @type field was used to specify the type for a variable, but no
+other information is known about the variable.  This is typically
+caused by a typo in the variable name.
+<DT><B>Unknown field tag </B><I>tag</I><B>.</B>
+
+<DD>
+A docstring contains a field with the unknown tag
+<I>tag</I>.
+
+<DT><B>Redefinition of </B><I>field</I><B>.</B>
+
+<DD>
+Multiple field tags define the value of
+<I>field</I>
+
+in the same docstring, but
+<I>field</I>
+
+can only take a single value.
+</DL>
+</DL>
+
+
+<A NAME="lbAI">
+<H2>EXAMPLES</H2></A>
+
+<DL COMPACT>
+<DT><B>epydoc -n </B>epydoc<B> -u </B><A HREF="http://epydoc.sf.net">http://epydoc.sf.net</A> epydoc/
+
+<DD>
+Generate the HTML API documentation for the epydoc package and all of
+its submodules, and write the output to the
+<B>html</B>
+
+directory.  In the headers and footers, use
+<B>epydoc</B>
+
+as the project name, and
+<B><A HREF="http://epydoc.sf.net">http://epydoc.sf.net</A></B>
+
+as the project URL.
+<DT><B>epydoc --pdf -n </B>epydoc<B> epydoc/</B>
+
+<DD>
+Generate the LaTeX API documentation for the epydoc package and all of
+its submodules, and write the output to the
+<B>latex</B>
+
+directory.
+
+</DL>
+<A NAME="lbAJ">
+<H2>EXIT STATUS</H2></A>
+
+<DL COMPACT>
+<DT><B>0</B>
+
+<DD>
+Successful program execution.
+<DT><B>1</B>
+
+<DD>
+Usage error.
+<DT><B>2</B>
+
+<DD>
+Epydoc generated an error or warning, and one of the options
+<B>--fail-on-error</B><I>,</I>
+
+<B>--fail-on-warning</B><I>, or</I>
+
+<B>--fail-on-docstring-warning</B>
+
+was specified.
+<DT><B>other</B>
+
+<DD>
+Internal error (Python exception).
+
+</DL>
+<A NAME="lbAK">
+<H2>AUTHOR</H2></A>
+
+Epydoc was written by Edward Loper.  This man page was originally
+written by Moshe Zadka, and is currently maintained by Edward Loper.
+
+<A NAME="lbAL">
+<H2>BUGS</H2></A>
+
+Report bugs to <<A HREF="mailto:edloper at users.sourceforge.net">edloper at users.sourceforge.net</A>>.
+
+<A NAME="lbAM">
+<H2>SEE ALSO</H2></A>
+
+<B><A HREF="/cgi-bin/man/man2html?1+epydocgui">epydocgui</A></B>(1)
+
+<DL COMPACT>
+<DT><B>The epydoc webpage</B>
+
+<DD>
+<<A HREF="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</A>>
+<DT><B>The epytext markup language manual</B>
+
+<DD>
+<<A HREF="http://epydoc.sourceforge.net/epytext.html">http://epydoc.sourceforge.net/epytext.html</A>>
+<P>
+</DL>
+
+<HR>
+<A NAME="index"><H2>Index</H2></A>
+<DL>
+<DT><A HREF="#lbAB">NAME</A><DD>
+<DT><A HREF="#lbAC">SYNOPSIS</A><DD>
+<DT><A HREF="#lbAD">DESCRIPTION</A><DD>
+<DT><A HREF="#lbAE">OPTIONS</A><DD>
+<DT><A HREF="#lbAF">HTML FILES</A><DD>
+<DT><A HREF="#lbAG">LATEX FILES</A><DD>
+<DT><A HREF="#lbAH">DIAGNOSTICS</A><DD>
+<DT><A HREF="#lbAI">EXAMPLES</A><DD>
+<DT><A HREF="#lbAJ">EXIT STATUS</A><DD>
+<DT><A HREF="#lbAK">AUTHOR</A><DD>
+<DT><A HREF="#lbAL">BUGS</A><DD>
+<DT><A HREF="#lbAM">SEE ALSO</A><DD>
+</DL>
+<HR>
+This document was created by
+<A HREF="/cgi-bin/man/man2html">man2html</A>,
+using the manual pages.<BR>
+Time: 01:20:48 GMT, September 24, 2007
+</DIV></BODY>
+</HTML>
diff --git a/doc/epydoc.css b/doc/epydoc.css
new file mode 100644
index 0000000..17fc595
--- /dev/null
+++ b/doc/epydoc.css
@@ -0,0 +1,181 @@
+/* 
+ * Cascading Style Sheet for edloper's webpage
+ * Copyright (C) 2002 Edward Loper
+ *
+ * This stylesheet is used to give my webpage a consistant feel.
+ * My webpage currently resides at <http://www.cis.upenn.edu/~edloper>
+ */
+
+/*===================================================================*/
+/* Default body appearance */
+
+body    { background: #b4ccd4; color: #000000; }
+
+ at media print {
+  body { font-family: times,serif; font-size: 10pt; }
+}
+
+ at media screen {
+  body    { background: #204060; color: #000000; }
+  div.body { 
+    background: white; color: black;
+/*    background: #c8e0e8; color: #000000;*/
+    padding: 0 1em 0 1em;
+    border: 2px solid black;
+/*    border: 2px groove #c0d0d0;*/
+  }
+}
+
+/*===================================================================*/
+/* Headlines. */
+
+h1 { font-size: 180%; font-weight: bold; text-align: center;
+     padding: .1em; margin: 0; border-bottom: 2px solid black;}
+h2 { font-size: 150%; font-weight: bold; }
+h3 { font-size: 140%; font-weight: bold; font-style: italic; }
+h4 { font-size: 130%; font-weight: bold; font-style: italic; }
+
+/*===================================================================*/
+/* Font alignment. */
+
+.left { text-align: left; }
+.center { text-align: center; }
+.right { text-align: right; }
+
+/*===================================================================*/
+/* Tables */
+
+table        { background: #ffffff; color: #000000; border: 1px solid black;}
+th           { background: #70b0ff; color: #000000;
+               font-weight: bold; border: 1px solid black; }
+td { border: 1px solid black; background: #e8f0f8; color: #000000; }
+th.secondary { background: #ffffff; color: #000000;
+               font-weight: bold; font-style: italic; }
+
+/* Tables used for placement */
+table.transparent { background: transparent; border-width: 0; }
+td.transparent    { background: transparent; border-width: 0; }
+
+/* Tables used for screenshots */
+.screenshot  { background: #c8e0e8; color: #000000; }
+
+th.index { background: red; }
+
+/*===================================================================*/
+/* Lists. */
+
+ul.nomargin { margin-top: 0; margin-bottom: 0; }
+
+/*===================================================================*/
+/* Index page. */
+
+#documentation-box table { margin-top: 0.7em; }
+#documentation-box ul, #documentation-box ol
+  { margin: 0; padding: 0 0 0 2em; font-size: 90%;}
+#documentation-box td { padding: 0 0 1em 0; }
+#documentation-box p { margin: 0; padding: 0; }
+#feedback-box ul
+  { margin: 0.5em 0 0.7em 2em; padding: 0; }
+
+/*===================================================================*/
+/* Link colors. */
+
+a:link        { background: transparent; color: #104060; } 
+a:visited     { background: transparent; color: #082840; } 
+
+/*===================================================================*/
+/* Date stamp. */
+
+.datestamp { font-size: 70%; color: #e0f0ff; }
+
+/*===================================================================*/
+/* Generic box.  Usually used with DIV. */
+
+.box {
+    background: #e8f0f8; color: black; 
+    border: 2px solid #000000;
+    margin: 1em 0 1em 0;
+    padding: 0 10px 0 10px;
+}
+
+.box-title {
+    background: #70b0ff;
+    text-align: center;
+    font-weight: bold;
+    font-size: 125%;
+    margin: 0 -10px 0 -10px;
+    padding: 0 10px 0 10px;
+    border-bottom: 2px solid black;
+}
+
+.doclist { padding: 0; margin: 0 0 0 1em; }
+
+.caption { font-style: italic; text-align: center; }
+
+dl.faq dt { font-weight: bold; }
+
+/*===================================================================*/
+/* Screen output. */
+/*     - prompt: a command prompt or program prompt */
+/*     - user: user input */
+/*     - (more will be added as I use them) */
+
+.screen {
+    background: #e8f0f8; color: black; 
+    border: 2px solid #000000;
+    margin: 1em 0 1em 0;
+    padding: 0 1em 0 1em;
+    font-family: monospace;
+}
+
+.screen2 {
+    background: #c8d8e0; color: black; 
+    border: 2px solid #000000;
+    margin: 1em 0 1em 0;
+    padding: 0 1em 0 1em;
+    font-family: monospace;
+}
+
+code.prompt { font-weight: bold; }
+code.user { 
+    background: transparent; color: #305040;
+    font-style: italic; font-weight: bold;
+}
+code.string   { background: transparent; color: #007000; }
+code.keyword  { background: transparent; color: #705000; }
+code.function { background: transparent; color: #000080; }
+code.output   { background: transparent; color: #505060; }
+code.field    { background: transparent; color: #007060; }
+code.comment  { background: transparent; color: #005080;
+                font-style: italic; }
+code.pycode   { background: transparent; color: #305040; }
+
+b.error { background: transparent; color: #700000; }
+b.error i { background: transparent; color: #604000; }
+
+/*===================================================================*/
+/* Navigation box */
+
+table.navbox {
+  border-right: 1px solid black;
+  border-left: 1px solid black;
+  border-bottom: 1px solid black;
+}
+td.nav {
+  border: 2px outset #70b0ff;
+  background: #70b0ff; color: black;
+  font-weight: bold;
+}
+td.navselect {
+  background: #4888d8; color: white;
+}
+
+a.nav:link    { text-decoration: none; }
+a.nav:visited { text-decoration: none; }
+
+/*===================================================================*/
+/* End of stylesheet */
+
+
+
+
diff --git a/doc/epydoc.html b/doc/epydoc.html
new file mode 100644
index 0000000..a03f8fc
--- /dev/null
+++ b/doc/epydoc.html
@@ -0,0 +1,3101 @@
+<?xml version="1.0" encoding="ascii" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ascii" />
+<meta name="generator" content="Docutils 0.5: http://docutils.sourceforge.net/" />
+<title>Epydoc</title>
+<meta name="author" content="Edward Loper" />
+<link rel="stylesheet" href="custom.css" type="text/css" />
+</head>
+<body>
+<div class="document" id="epydoc">
+<h1 class="title">Epydoc</h1>
+<h2 class="subtitle" id="automatic-api-documentation-generation-for-python">Automatic API Documentation Generation for Python</h2>
+<table class="docinfo" frame="void" rules="none">
+<col class="docinfo-name" />
+<col class="docinfo-content" />
+<tbody valign="top">
+<tr><th class="docinfo-name">Author:</th>
+<td><a class="first last reference external" href="mailto:edloper@gradient.cis.upenn.edu">Edward Loper</a></td></tr>
+<tr><th class="docinfo-name">Version:</th>
+<td>3.0b1</td></tr>
+</tbody>
+</table>
+<div class="abstract topic">
+<p class="topic-title first">Abstract</p>
+<p>Epydoc is a tool for generating API documentation for Python modules,
+based on their docstrings. For an example of epydoc's output, see the API
+documentation for epydoc itself (<a class="reference external" href="http://epydoc.sourceforge.net/api/">html</a>, <a class="reference external" href="http://epydoc.sourceforge.net/epydoc.pdf">pdf</a>). A lightweight markup language
+called <a class="reference internal" href="#the-epytext-markup-language">epytext</a> can be used to format docstrings, and to add information
+about specific fields, such as parameters and instance variables. Epydoc
+also understands docstrings written in <a class="reference external" href="http://docutils.sourceforge.net/rst.html">reStructuredText</a>, <a class="reference external" href="http://java.sun.com/j2se/javadoc/">Javadoc</a>, and
+plaintext. For a more extensive example of epydoc's output, see the <a class="reference external" href="http://epydoc.sourceforge.net/stdlib/">API
+documentation for Python 2.4</a>.</p>
+</div>
+<!-- $Id: manual.txt 1559 2007-02-27 06:42:46Z edloper $ -->
+<div class="contents topic" id="contents">
+<p class="topic-title first">Contents</p>
+<ul class="auto-toc simple">
+<li><a class="reference internal" href="#installing-epydoc" id="id19">1   Installing Epydoc</a><ul class="auto-toc">
+<li><a class="reference internal" href="#downloading-epydoc" id="id20">1.1   Downloading Epydoc</a></li>
+<li><a class="reference internal" href="#getting-epydoc-from-subversion" id="id21">1.2   Getting Epydoc from Subversion</a></li>
+<li><a class="reference internal" href="#installing-from-the-rpm-file" id="id22">1.3   Installing from the RPM File</a></li>
+<li><a class="reference internal" href="#installing-from-the-windows-installer" id="id23">1.4   Installing from the Windows Installer</a></li>
+<li><a class="reference internal" href="#installing-from-the-source-distribution-using-make" id="id24">1.5   Installing from the Source Distribution (using make)</a></li>
+<li><a class="reference internal" href="#installing-from-the-source-distribution-without-make" id="id25">1.6   Installing from the Source Distribution (without make)</a></li>
+<li><a class="reference internal" href="#installing-on-debian" id="id26">1.7   Installing on Debian</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#using-epydoc" id="id27">2   Using Epydoc</a><ul class="auto-toc">
+<li><a class="reference internal" href="#the-command-line-interface" id="id28">2.1   The Command Line Interface</a><ul class="auto-toc">
+<li><a class="reference internal" href="#command-line-usage-abbreviated" id="id29">2.1.1   Command Line Usage (Abbreviated)</a></li>
+<li><a class="reference internal" href="#examples" id="id30">2.1.2   Examples</a></li>
+<li><a class="reference internal" href="#configuration-files" id="id31">2.1.3   Configuration Files</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#the-graphical-interface" id="id32">2.2   The Graphical Interface</a></li>
+<li><a class="reference internal" href="#documentation-completeness-checks" id="id33">2.3   Documentation Completeness Checks</a></li>
+<li><a class="reference internal" href="#html-files" id="id34">2.4   HTML Files</a></li>
+<li><a class="reference internal" href="#css-stylesheets" id="id35">2.5   CSS Stylesheets</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#python-docstrings" id="id36">3   Python Docstrings</a><ul class="auto-toc">
+<li><a class="reference internal" href="#variable-docstrings" id="id37">3.1   Variable docstrings</a></li>
+<li><a class="reference internal" href="#items-visibility" id="id38">3.2   Items visibility</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#the-epytext-markup-language" id="id39">4   The Epytext Markup Language</a><ul class="auto-toc">
+<li><a class="reference internal" href="#a-brief-introduction" id="id40">4.1   A Brief Introduction</a></li>
+<li><a class="reference internal" href="#epytext-language-overview" id="id41">4.2   Epytext Language Overview</a></li>
+<li><a class="reference internal" href="#block-structure" id="id42">4.3   Block Structure</a><ul class="auto-toc">
+<li><a class="reference internal" href="#paragraphs" id="id43">4.3.1   Paragraphs</a></li>
+<li><a class="reference internal" href="#lists" id="id44">4.3.2   Lists</a></li>
+<li><a class="reference internal" href="#sections" id="id45">4.3.3   Sections</a></li>
+<li><a class="reference internal" href="#literal-blocks" id="id46">4.3.4   Literal Blocks</a></li>
+<li><a class="reference internal" href="#doctest-blocks" id="id47">4.3.5   Doctest Blocks</a></li>
+<li><a class="reference internal" href="#fields" id="id48">4.3.6   Fields</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#inline-markup" id="id49">4.4   Inline Markup</a><ul class="auto-toc">
+<li><a class="reference internal" href="#basic-inline-markup" id="id50">4.4.1   Basic Inline Markup</a></li>
+<li><a class="reference internal" href="#urls" id="id51">4.4.2   URLs</a></li>
+<li><a class="reference internal" href="#documentation-crossreference-links" id="id52">4.4.3   Documentation Crossreference Links</a></li>
+<li><a class="reference internal" href="#indexed-terms" id="id53">4.4.4   Indexed Terms</a></li>
+<li><a class="reference internal" href="#symbols" id="id54">4.4.5   Symbols</a></li>
+<li><a class="reference internal" href="#escaping" id="id55">4.4.6   Escaping</a></li>
+<li><a class="reference internal" href="#graphs" id="id56">4.4.7   Graphs</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#characters" id="id57">4.5   Characters</a><ul class="auto-toc">
+<li><a class="reference internal" href="#valid-characters" id="id58">4.5.1   Valid Characters</a></li>
+<li><a class="reference internal" href="#content-characters" id="id59">4.5.2   Content Characters</a></li>
+<li><a class="reference internal" href="#spaces-and-newlines" id="id60">4.5.3   Spaces and Newlines</a></li>
+</ul>
+</li>
+</ul>
+</li>
+<li><a class="reference internal" href="#epydoc-fields" id="id61">5   Epydoc Fields</a><ul class="auto-toc">
+<li><a class="reference internal" href="#field-markup" id="id62">5.1   Field Markup</a></li>
+<li><a class="reference internal" href="#supported-fields" id="id63">5.2   Supported Fields</a><ul class="auto-toc">
+<li><a class="reference internal" href="#functions-and-methods-parameters" id="id64">5.2.1   Functions and Methods parameters</a></li>
+<li><a class="reference internal" href="#variables-parameters" id="id65">5.2.2   Variables parameters</a></li>
+<li><a class="reference internal" href="#properties-parameters" id="id66">5.2.3   Properties parameters</a></li>
+<li><a class="reference internal" href="#grouping-and-sorting" id="id67">5.2.4   Grouping and Sorting</a></li>
+<li><a class="reference internal" href="#notes-and-warnings" id="id68">5.2.5   Notes and Warnings</a></li>
+<li><a class="reference internal" href="#status" id="id69">5.2.6   Status</a></li>
+<li><a class="reference internal" href="#formal-conditions" id="id70">5.2.7   Formal Conditions</a></li>
+<li><a class="reference internal" href="#bibliographic-information" id="id71">5.2.8   Bibliographic Information</a></li>
+<li><a class="reference internal" href="#other-fields" id="id72">5.2.9   Other fields</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#fields-synonyms" id="id73">5.3   Fields synonyms</a></li>
+<li><a class="reference internal" href="#module-metadata-variables" id="id74">5.4   Module metadata variables</a></li>
+<li><a class="reference internal" href="#adding-new-fields" id="id75">5.5   Adding New Fields</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#alternate-markup-languages" id="id76">6   Alternate Markup Languages</a><ul class="auto-toc">
+<li><a class="reference internal" href="#id13" id="id77">6.1   reStructuredText</a><ul class="auto-toc">
+<li><a class="reference internal" href="#default-role" id="id78">6.1.1   Default role</a></li>
+<li><a class="reference internal" href="#consolidated-fields" id="id79">6.1.2   Consolidated Fields</a></li>
+<li><a class="reference internal" href="#graph-directives" id="id80">6.1.3   Graph directives</a></li>
+<li><a class="reference internal" href="#colorized-snippets-directive" id="id81">6.1.4   Colorized snippets directive</a></li>
+<li><a class="reference internal" href="#external-api-links" id="id82">6.1.5   External API links</a><ul class="auto-toc">
+<li><a class="reference internal" href="#names-resolution" id="id83">6.1.5.1   Names resolution</a></li>
+<li><a class="reference internal" href="#linking-from-standalone-documents" id="id84">6.1.5.2   Linking from standalone documents</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#indexed-terms-in-restructuredtext" id="id85">6.1.6   Indexed Terms in reStructuredText</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#id15" id="id86">6.2   Javadoc</a><ul class="auto-toc">
+<li><a class="reference internal" href="#javadoc-fields" id="id87">6.2.1   Javadoc Fields</a></li>
+</ul>
+</li>
+</ul>
+</li>
+<li><a class="reference internal" href="#references" id="id88">7   References</a><ul class="auto-toc">
+<li><a class="reference internal" href="#command-line-usage" id="id89">7.1   Command Line Usage</a></li>
+<li><a class="reference internal" href="#sample-configuration-file" id="id90">7.2   Sample Configuration File</a></li>
+<li><a class="reference internal" href="#warnings-and-errors" id="id91">7.3   Warnings and Errors</a><ul class="auto-toc">
+<li><a class="reference internal" href="#epytext-warnings" id="id92">7.3.1   Epytext Warnings</a></li>
+<li><a class="reference internal" href="#field-warnings" id="id93">7.3.2   Field Warnings</a></li>
+<li><a class="reference internal" href="#epytext-errors" id="id94">7.3.3   Epytext Errors</a></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<!-- Include the document chapters -->
+<div class="section" id="installing-epydoc">
+<h1><a class="toc-backref" href="#id19">1   Installing Epydoc</a></h1>
+<!-- $Id: manual-install.txt 1692 2008-01-30 17:11:29Z edloper $ -->
+<div class="section" id="downloading-epydoc">
+<h2><a class="toc-backref" href="#id20">1.1   Downloading Epydoc</a></h2>
+<p>Epydoc can be downloaded from the <a class="reference external" href="http://sourceforge.net/project/showfiles.php?group_id=32455">SourceForge download page</a>. Epydoc is
+available in five formats:</p>
+<ul class="simple">
+<li>RPM (<tt class="docutils literal"><span class="pre">.noarch.rpm</span></tt>)</li>
+<li>Windows installer (<tt class="docutils literal"><span class="pre">.win32.exe</span></tt>)</li>
+<li>Source install (<tt class="docutils literal"><span class="pre">.tar.gz</span></tt>)</li>
+<li>Source install (<tt class="docutils literal"><span class="pre">.zip</span></tt>)</li>
+<li>Source RPM (<tt class="docutils literal"><span class="pre">.src.rpm</span></tt>)</li>
+</ul>
+<p>If you are installing on RedHat, I recommend that you use the RPM file. If you
+are installing on Windows, I recommended that you use the windows installer.
+Otherwise, you should use one of the source install files.</p>
+</div>
+<div class="section" id="getting-epydoc-from-subversion">
+<h2><a class="toc-backref" href="#id21">1.2   Getting Epydoc from Subversion</a></h2>
+<p>If you wish to keep up on the latest developments, you can get the latest
+version of epydoc from the <a class="reference external" href="http://sourceforge.net/svn/?group_id=32455">subversion repository</a>:</p>
+<pre class="literal-block">
+[/home/edloper]$ svn co https://epydoc.svn.sourceforge.net/svnroot/epydoc/trunk/epydoc epydoc
+[/home/edloper]$ ls epydoc
+Makefile  doc  man  sandbox  src
+</pre>
+<p>This will create a directory named <tt class="docutils literal"><span class="pre">epydoc</span></tt> containing the latest version of
+epydoc. The <tt class="docutils literal"><span class="pre">epydoc</span></tt> package itself is in <tt class="docutils literal"><span class="pre">epydoc/src/epydoc</span></tt> (so adding
+<tt class="docutils literal"><span class="pre">epydoc/src</span></tt> to your <tt class="docutils literal"><span class="pre">PYTHONPATH</span></tt> will let you use it). You should
+periodically update your copy of the subversion repository, to make sure you
+have all the latest changes:</p>
+<pre class="literal-block">
+[/home/edloper/epydoc]$ svn up
+</pre>
+<p>You can browse the subversion repository <a class="reference external" href="http://epydoc.svn.sourceforge.net/viewcvs.cgi/epydoc/trunk/epydoc/">here</a>.</p>
+</div>
+<div class="section" id="installing-from-the-rpm-file">
+<h2><a class="toc-backref" href="#id22">1.3   Installing from the RPM File</a></h2>
+<ol class="arabic">
+<li><p class="first">Download the RPM file to a directory of your choice.</p>
+</li>
+<li><p class="first">Use rpm to install the new package.</p>
+<pre class="literal-block">
+[/tmp]$ su
+Password:
+[/tmp]# rpm -i epydoc-3.0.1.noarch.rpm
+</pre>
+</li>
+<li><p class="first">Once epydoc is installed, you can delete the RPM file.</p>
+<pre class="literal-block">
+[/tmp]# rm epydoc-3.0.1.rpm
+</pre>
+</li>
+</ol>
+</div>
+<div class="section" id="installing-from-the-windows-installer">
+<h2><a class="toc-backref" href="#id23">1.4   Installing from the Windows Installer</a></h2>
+<ol class="arabic simple">
+<li>Download and run <tt class="docutils literal"><span class="pre">epydoc-3.0.1.win32.exe</span></tt>.</li>
+<li>Follow the on-screen instructions. Epydoc will be installed in the epydoc
+subdirectory of your Python installation directory (typically
+<tt class="docutils literal"><span class="pre">C:\Python24\</span></tt>).</li>
+<li>The Windows installer creates two scripts in the <tt class="docutils literal"><span class="pre">Scripts</span></tt> subdirectory of
+your Python installation directory: <tt class="docutils literal"><span class="pre">epydoc.pyw</span></tt> opens the graphical user
+interface, and <tt class="docutils literal"><span class="pre">epydoc.py</span></tt> calls the command line interface. If you'd
+like, you can create shortcuts from these scripts to more convenient
+locations (such as your desktop or start menu).</li>
+<li>Once epydoc is installed, you can delete <tt class="docutils literal"><span class="pre">epydoc-3.0.1.win32.exe</span></tt>.</li>
+</ol>
+</div>
+<div class="section" id="installing-from-the-source-distribution-using-make">
+<h2><a class="toc-backref" href="#id24">1.5   Installing from the Source Distribution (using make)</a></h2>
+<ol class="arabic">
+<li><p class="first">Download an epydoc source distribution to a directory of your choice, and
+uncompress it.</p>
+<pre class="literal-block">
+[/tmp]$ wget -q http://prdownloads.sourceforge.net/epydoc/epydoc-3.0.1.tar.gz
+[/tmp]$ gunzip epydoc-3.0.1.tar.gz
+[/tmp]$ tar -xvf epydoc-3.0.1.tar
+</pre>
+</li>
+<li><p class="first">Use <tt class="docutils literal"><span class="pre">make</span> <span class="pre">install</span></tt> in the <tt class="docutils literal"><span class="pre">eydoc-3.0.1/</span></tt> directory to install
+epydoc.</p>
+<pre class="literal-block">
+[/tmp]$ cd epydoc-3.0.1/
+[/tmp/epydoc-3.0.1]$ su
+Password:
+[/tmp/epydoc-3.0.1]# make install
+running install
+running build
+[...]
+copying build/scripts/epydoc -> /usr/bin
+changing mode of /usr/bin/epydoc to 100775
+</pre>
+</li>
+<li><p class="first">If you'd like to keep a local copy of the documentation, then use <tt class="docutils literal"><span class="pre">make</span>
+<span class="pre">installdocs</span></tt>. By default, this will install the documentation to
+<tt class="docutils literal"><span class="pre">/usr/share/doc/</span></tt> and the man pages to <tt class="docutils literal"><span class="pre">/usr/share/man/</span></tt>. If you would
+prefer to install documentation to different directories (such as
+<tt class="docutils literal"><span class="pre">/usr/lib/doc</span></tt>), then edit the <tt class="docutils literal"><span class="pre">MAN</span></tt> and <tt class="docutils literal"><span class="pre">DOC</span></tt> variables at the top of
+<tt class="docutils literal"><span class="pre">Makefile</span></tt> before running <tt class="docutils literal"><span class="pre">make</span> <span class="pre">installdocs</span></tt>.</p>
+<pre class="literal-block">
+[/tmp/epydoc-3.0.1]# make installdocs
+</pre>
+</li>
+<li><p class="first">Once epydoc is installed, you can delete the installation directory and the
+source distribution file.</p>
+<pre class="literal-block">
+[/tmp/epydoc-3.0.1]# cd ..
+[/tmp]# rm -r epydoc-3.0.1
+[/tmp]# rm epydoc-3.0.1.tar
+</pre>
+</li>
+</ol>
+</div>
+<div class="section" id="installing-from-the-source-distribution-without-make">
+<h2><a class="toc-backref" href="#id25">1.6   Installing from the Source Distribution (without make)</a></h2>
+<ol class="arabic">
+<li><p class="first">Download an epydoc source distribution to a directory of your choice, and
+uncompress it.</p>
+<pre class="literal-block">
+[/tmp]$ wget -q http://prdownloads.sourceforge.net/epydoc/epydoc-3.0.1.tar.gz
+[/tmp]$ gunzip epydoc-3.0.1.tar.gz
+[/tmp]$ tar -xvf epydoc-3.0.1.tar
+</pre>
+</li>
+<li><p class="first">Use the <tt class="docutils literal"><span class="pre">setup.py</span></tt> script in the <tt class="docutils literal"><span class="pre">eydoc-3.0.1/</span></tt> directory to install
+epydoc.</p>
+<pre class="literal-block">
+[/tmp]$ cd epydoc-3.0.1/
+[/tmp/epydoc-3.0.1]$ su
+Password:
+[/tmp/epydoc-3.0.1]# python setup.py install
+running install
+running build
+[...]
+copying build/scripts/epydoc -> /usr/bin
+changing mode of /usr/bin/epydoc to 100775
+[/tmp/epydoc-3.0.1]# cd ..
+[/tmp]#
+</pre>
+</li>
+<li><p class="first">If you'd like to keep a local copy of the documentation, then copy it to a
+permanant location, such as <tt class="docutils literal"><span class="pre">/usr/share/doc/</span></tt>. You may also want to copy
+the man pages to a permanant location, such as <tt class="docutils literal"><span class="pre">/usr/share/man/</span></tt>.</p>
+<pre class="literal-block">
+[/tmp]# cp -r epydoc-3.0.1/doc/ /usr/share/doc/epydoc/
+[/tmp]# cp epydoc-3.0.1/man/* /usr/share/man/
+</pre>
+</li>
+<li><p class="first">Once epydoc is installed, you can delete the installation directory and the
+source distribution file.</p>
+<pre class="literal-block">
+[/tmp]# rm -r epydoc-3.0.1
+[/tmp]# rm epydoc-3.0.1.tar
+</pre>
+</li>
+</ol>
+</div>
+<div class="section" id="installing-on-debian">
+<h2><a class="toc-backref" href="#id26">1.7   Installing on Debian</a></h2>
+<p>Epydoc 2.1 is available as a testing debian package (<tt class="docutils literal"><span class="pre">python-epydoc</span></tt>). The
+epydoc documentation is also available as a package (<tt class="docutils literal"><span class="pre">epydoc-doc</span></tt>).</p>
+</div>
+</div>
+<div class="section" id="using-epydoc">
+<h1><a class="toc-backref" href="#id27">2   Using Epydoc</a></h1>
+<!-- $Id: manual-usage.txt 1554 2007-02-27 03:31:56Z edloper $ -->
+<p>Epydoc provides two user interfaces:</p>
+<ul class="simple">
+<li>The command line interface, which is accessed via a script named <tt class="docutils literal"><span class="pre">epydoc</span></tt>
+(or <tt class="docutils literal"><span class="pre">epydoc.py</span></tt> on Windows)</li>
+<li>The graphical interface, which is accessed via a script named <tt class="docutils literal"><span class="pre">epydocgui</span></tt>
+(or <tt class="docutils literal"><span class="pre">epydoc.pyw</span></tt> on Windows).</li>
+</ul>
+<p>Epydoc can also be accessed programmatically; see <tt class="docutils literal"><span class="pre">epydoc's</span> <span class="pre">API</span>
+<span class="pre">documentation</span></tt> for more information.</p>
+<div class="section" id="the-command-line-interface">
+<h2><a class="toc-backref" href="#id28">2.1   The Command Line Interface</a></h2>
+<p>The <tt class="docutils literal"><span class="pre">epydoc</span></tt> script extracts API documentation for a set of Python objects,
+and writes it using a selected output format. Objects can be named using dotted
+names, module filenames, or package directory names. (On Windows, this script
+is named <tt class="docutils literal"><span class="pre">epydoc.py</span></tt>.)</p>
+<div class="section" id="command-line-usage-abbreviated">
+<h3><a class="toc-backref" href="#id29">2.1.1   Command Line Usage (Abbreviated)</a></h3>
+<pre class="literal-block">
+epydoc [--html|--pdf] [-o <em>DIR</em>] [--parse-only|--introspect-only] [-v|-q]
+       [--name <em>NAME</em>] [--url <em>URL</em>] [--docformat <em>NAME</em>] [--graph <em>GRAPHTYPE</em>]
+       [--inheritance <em>STYLE</em>] [--config <em>FILE</em>] <em>OBJECTS...</em>
+</pre>
+<dl class="docutils">
+<dt><em>OBJECTS...</em></dt>
+<dd>A list of the Python objects that should be documented. Objects can be
+specified using dotted names (such as <tt class="docutils literal"><span class="pre">os.path</span></tt>), module filenames (such
+as <tt class="docutils literal"><span class="pre">epydoc/epytext.py</span></tt>), or package directory names (such as <tt class="docutils literal"><span class="pre">epydoc/</span></tt>).
+Packages are expanded to include all sub-modules and sub-packages.</dd>
+</dl>
+<div class="epydoc-usage container">
+<table class="docutils option-list" frame="void" rules="none">
+<col class="option" />
+<col class="description" />
+<tbody valign="top">
+<tr><td class="option-group">
+<kbd><span class="option">--html</span></kbd></td>
+<td>Generate HTML output. (default)</td></tr>
+<tr><td class="option-group">
+<kbd><span class="option">--pdf</span></kbd></td>
+<td>Generate Adobe Acrobat (PDF) output, using LaTeX.</td></tr>
+<tr><td class="option-group" colspan="2">
+<kbd><span class="option">-o <var>DIR</var></span>, <span class="option">--output <var>DIR</var></span>, <span class="option">--target <var>DIR</var></span></kbd></td>
+</tr>
+<tr><td> </td><td>The output directory.</td></tr>
+<tr><td class="option-group" colspan="2">
+<kbd><span class="option">--parse-only</span>, <span class="option">--introspect-only</span></kbd></td>
+</tr>
+<tr><td> </td><td>By default, epydoc will gather information about each Python object using
+two methods: parsing the object's source code; and importing the object and
+directly introspecting it. Epydoc combines the information obtained from
+these two methods to provide more complete and accurate documentation.
+However, if you wish, you can tell epydoc to use only one or the other of
+these methods. For example, if you are running epydoc on untrusted code,
+you should use the <tt class="docutils literal"><span class="pre">--parse-only</span></tt> option.</td></tr>
+<tr><td class="option-group">
+<kbd><span class="option">-v</span>, <span class="option">-q</span></kbd></td>
+<td>Increase (<tt class="docutils literal"><span class="pre">-v</span></tt>) or decrease (<tt class="docutils literal"><span class="pre">-q</span></tt>) the verbosity of the output. These
+options may be repeated to further increase or decrease verbosity.
+Docstring markup warnings are supressed unless <tt class="docutils literal"><span class="pre">-v</span></tt> is used at least once.</td></tr>
+<tr><td class="option-group">
+<kbd><span class="option">--name <var>NAME</var></span></kbd></td>
+<td>The documented project's name.</td></tr>
+<tr><td class="option-group">
+<kbd><span class="option">--url <var>URL</var></span></kbd></td>
+<td>The documented project's URL.</td></tr>
+<tr><td class="option-group" colspan="2">
+<kbd><span class="option">--docformat <var>NAME</var></span></kbd></td>
+</tr>
+<tr><td> </td><td>The markup language that should be used by default to process modules'
+docstrings. This is only used for modules that do not define the special
+<tt class="docutils literal"><span class="pre">__docformat__</span></tt> variable; it is recommended that you explicitly specify
+<tt class="docutils literal"><span class="pre">__docformat__</span></tt> in all your modules.</td></tr>
+<tr><td class="option-group" colspan="2">
+<kbd><span class="option">--graph <var>GRAPHTYPE</var></span></kbd></td>
+</tr>
+<tr><td> </td><td><p class="first">Include graphs of type <em>GRAPHTYPE</em> in the generated output. Graphs are
+generated using the Graphviz <tt class="docutils literal"><span class="pre">dot</span></tt> executable. If this executable is not
+on the path, then use <tt class="docutils literal"><span class="pre">--dotpath</span></tt> to specify its location. This option
+may be repeated to include multiple graph types in the output. To include
+all graphs, use <tt class="docutils literal"><span class="pre">--graph</span> <span class="pre">all</span></tt>. The available graph types are:</p>
+<ul class="last simple">
+<li><strong>classtree</strong>: displays each class's base classes and subclasses;</li>
+<li><strong>callgraph</strong>: displays the callers and callees of each function or
+method. These graphs are based on profiling information, which must be
+specified using the <tt class="docutils literal"><span class="pre">--pstate</span></tt> option.</li>
+<li><strong>umlclass</strong>: displays each class's base classes and subclasses, using
+UML style. Methods and attributes are listed in the classes where they
+are defined. If type information is available about attributes (via the
+<tt class="docutils literal"><span class="pre">@type</span></tt> field), then those types are displayed as separate classes, and
+the attributes are displayed as associations.</li>
+</ul>
+</td></tr>
+<tr><td class="option-group" colspan="2">
+<kbd><span class="option">--inheritance <var>STYLE</var></span></kbd></td>
+</tr>
+<tr><td> </td><td><p class="first">The format that should be used to display inherited methods, variables, and
+properties. Currently, three styles are supported. To see an example of each style,
+click on it:</p>
+<ul class="last simple">
+<li><a class="reference external" href="http://epydoc.sourceforge.net/examples/grouped/inh_example.Programmer-class.html">grouped</a>: Inherited objects are gathered into groups, based on which
+class they are inherited from.</li>
+<li><a class="reference external" href="http://epydoc.sourceforge.net/examples/listed/inh_example.Programmer-class.html">listed</a>: Inherited objects are listed in a short list at the end of the
+summary table.</li>
+<li><a class="reference external" href="http://epydoc.sourceforge.net/examples/included/inh_example.Programmer-class.html">included</a>: Inherited objects are mixed in with non-inherited objects.</li>
+</ul>
+</td></tr>
+<tr><td class="option-group">
+<kbd><span class="option">--config <var>FILE</var></span></kbd></td>
+<td>Read the given configuration file, which can contain both options and
+Python object names. This option may be used multiple times, if you wish
+to use multiple configuration files. See <a class="reference internal" href="#configuration-files">Configuration Files</a> for more
+information.</td></tr>
+</tbody>
+</table>
+</div>
+<p>The complete list of command line options is available in the <a class="reference internal" href="#command-line-usage">Command Line
+Usage</a> section.</p>
+</div>
+<div class="section" id="examples">
+<h3><a class="toc-backref" href="#id30">2.1.2   Examples</a></h3>
+<p>The following command will generate HTML documentation for the <tt class="docutils literal"><span class="pre">sys</span></tt> module,
+and write it to the directory <tt class="docutils literal"><span class="pre">sys_docs</span></tt>:</p>
+<pre class="literal-block">
+[epydoc]$ epydoc --html sys -o sys_docs
+</pre>
+<p>The following commands are used to produce the API documentation for epydoc
+itself. The first command writes html output to the directory <tt class="docutils literal"><span class="pre">html/api</span></tt>,
+using <tt class="docutils literal"><span class="pre">epydoc</span></tt> as the project name and <tt class="docutils literal"><span class="pre">http://epydoc.sourcforge.net</span></tt> as
+the project URL. The <tt class="docutils literal"><span class="pre">white</span></tt> CSS style is used; inheritance is displayed
+using the listed style; and all graphs are included in the output. The second
+command writes pdf output to the file <tt class="docutils literal"><span class="pre">api.pdf</span></tt> in the directory
+<tt class="docutils literal"><span class="pre">latex/api</span></tt>, using <tt class="docutils literal"><span class="pre">Epydoc</span></tt> as the project name.</p>
+<pre class="literal-block">
+[epydoc]$ epydoc -v -o html/api --name epydoc --css white \
+                 --url http://epydoc.sourceforge.net \
+                 --inheritance listed --graph all src/epydoc
+[epydoc]$ epydoc -v -o latex/api --pdf --name "Epydoc" src/epydoc
+</pre>
+</div>
+<div class="section" id="configuration-files">
+<h3><a class="toc-backref" href="#id31">2.1.3   Configuration Files</a></h3>
+<p>Configuration files, specified using the <tt class="docutils literal"><span class="pre">--config</span></tt> option, may be used to
+specify both the list of objects to document, and the options that should be
+used to document them. Configuration files are read using the standard
+<a class="reference external" href="http://docs.python.org/lib/module-ConfigParser.html">ConfigParser</a> module. The following is a simple example of a configuration
+file.</p>
+<pre class="literal-block">
+<strong>[epydoc]</strong> <em># Epydoc section marker (required by ConfigParser)</em>
+
+<em># Information about the project.</em>
+<strong>name: My Cool Project</strong>
+<strong>url: http://cool.project/</strong>
+
+<em># The list of modules to document.  Modules can be named using</em>
+<em># dotted names, module filenames, or package directory names.</em>
+<em># This option may be repeated.</em>
+<strong>modules: sys, os.path, re</strong>
+<strong>modules: my/project/driver.py</strong>
+
+<em># Write html output to the directory "apidocs"</em>
+<strong>output: html</strong>
+<strong>target: apidocs/</strong>
+
+<em># Include all automatically generated graphs.  These graphs are</em>
+<em># generated using Graphviz dot.</em>
+<strong>graph: all</strong>
+<strong>dotpath: /usr/local/bin/dot</strong>
+</pre>
+<p>A <a class="reference internal" href="#sample-configuration-file">more complete example</a>, including all of the supported options, is also
+available.</p>
+</div>
+</div>
+<div class="section" id="the-graphical-interface">
+<h2><a class="toc-backref" href="#id32">2.2   The Graphical Interface</a></h2>
+<p>Epydoc also includes a graphical interface, for systems where command line
+interfaces are not convenient (such as Windows). The graphical interface can
+be invoked with the <tt class="docutils literal"><span class="pre">epydocgui</span></tt> command, or with <tt class="docutils literal"><span class="pre">epydoc.pyw</span></tt> in the
+<tt class="docutils literal"><span class="pre">Scripts</span></tt> subdirectory of the Python installation directory under Windows.
+Currently, the graphical interface can only generate HTML output.</p>
+<div align="center" class="align-center"><img alt="epydoc_gui.png" class="align-center" src="epydoc_gui.png" /></div>
+<p>Use the <strong>Add</strong> box to specify what objects you wish to document. Objects can
+be specified using dotted names (such as <tt class="docutils literal"><span class="pre">os.path</span></tt>), module filenames (such
+as <tt class="docutils literal"><span class="pre">epydoc/epytext.py</span></tt>), or package directory names (such as <tt class="docutils literal"><span class="pre">epydoc/</span></tt>).
+Packages are expanded to include all sub-modules and sub-packages. Once you
+have added all of the modules that you wish to document, press the <strong>Start</strong>
+button. Epydoc's progress will be displayed on the progress bar.</p>
+<p>To customize the output, click on the <strong>Options</strong> arrow at the bottom of the
+window. This opens the options pane, which contains fields corresponding to
+each command line option.</p>
+<div align="center" class="align-center"><img alt="epydoc_guiconfig.png" class="align-center" src="epydoc_guiconfig.png" /></div>
+<p>The epydoc graphical interface can save and load <em>project files</em>, which record
+the set of modules and the options that you have selected. Select
+<strong>File->Save</strong> to save the current modules and options to a project file; and
+<strong>File->Open</strong> to open a previously saved project file. (These project files do
+not currently use the same format as the configuration files used by the
+command line interface.)</p>
+<p>For more information, see the <tt class="docutils literal"><span class="pre">epydocgui(1)</span></tt> man page.</p>
+</div>
+<div class="section" id="documentation-completeness-checks">
+<h2><a class="toc-backref" href="#id33">2.3   Documentation Completeness Checks</a></h2>
+<p>The <tt class="docutils literal"><span class="pre">epydoc</span></tt> script can be used to check the completeness of the reference
+documentation. In particular, it will check that every module, class, method,
+and function has a description; that every parameter has a description and a
+type; and that every variable has a type. If the <tt class="docutils literal"><span class="pre">-p</span></tt> option is used, then
+these checks are run on both public and private objects; otherwise, the checks
+are only run on public objects.</p>
+<p><tt class="docutils literal"><span class="pre">epydoc</span></tt> <tt class="docutils literal"><span class="pre">--check</span></tt> [<tt class="docutils literal"><span class="pre">-p</span></tt>] <em>MODULES...</em></p>
+<dl class="docutils">
+<dt><em>MODULES...</em></dt>
+<dd>A list of the modules that should be checked. Modules may be specified
+using either filenames (such as <tt class="docutils literal"><span class="pre">epydoc/epytext.py</span></tt>) or module names
+(such as <tt class="docutils literal"><span class="pre">os.path</span></tt>). The filename for a package is its <tt class="docutils literal"><span class="pre">__init__.py</span></tt>
+file.</dd>
+</dl>
+<table class="docutils option-list" frame="void" rules="none">
+<col class="option" />
+<col class="description" />
+<tbody valign="top">
+<tr><td class="option-group">
+<kbd><span class="option">-p</span></kbd></td>
+<td>Run documentation completeness checks on private objects.</td></tr>
+</tbody>
+</table>
+<p>For each object that fails a check, epydoc will print a warning. For example,
+some of the warnings generated when checking the completeness of the
+documentation for epydoc's private objects are:</p>
+<pre class="literal-block">
+epydoc.html.HTML_Doc._dom_link_to_html........No docs
+epydoc.html.HTML_Doc._module..................No type
+epydoc.html.HTML_Doc._link_to_html.link.......No descr
+epydoc.html.HTML_Doc._author.return...........No type
+epydoc.html.HTML_Doc._author.authors..........No descr, No type
+epydoc.html.HTML_Doc._author.container........No descr, No type
+epydoc.html.HTML_Doc._base_tree.uid...........No descr, No type
+epydoc.html.HTML_Doc._base_tree.width.........No descr, No type
+epydoc.html.HTML_Doc._base_tree.postfix.......No descr, No type
+</pre>
+<p>If you'd like more fine-grained control over what gets checked, or you would
+like to check other fields (such as the author or version), then you should
+use the <a class="reference external" href="http://epydoc.sourceforge.net/api/epydoc.checker.DocChecker-class.html"><tt class="docutils literal"><span class="pre">DocChecker</span></tt></a> class directly.</p>
+</div>
+<div class="section" id="html-files">
+<h2><a class="toc-backref" href="#id34">2.4   HTML Files</a></h2>
+<p>Every Python module and class is documented in its own file. Index files, tree
+files, a help file, and a frames-based table of contents are also created.
+The following list describes each of the files generated by epydoc:</p>
+<dl class="docutils">
+<dt><tt class="docutils literal"><span class="pre">index.html</span></tt></dt>
+<dd>The standard entry point for the documentation. Normally, <tt class="docutils literal"><span class="pre">index.html</span></tt>
+is a copy of the frames file (<tt class="docutils literal"><span class="pre">frames.html</span></tt>). But if the <tt class="docutils literal"><span class="pre">--no-frames</span></tt>
+option is used, then <tt class="docutils literal"><span class="pre">index.html</span></tt> is a copy of the API documentation home
+page, which is normally the documentation page for the top-level package or
+module (or the trees page if there is no top-level package or module).</dd>
+<dt><em>module</em><tt class="docutils literal"><span class="pre">-module.html</span></tt></dt>
+<dd>The API documentation for a module. <em>module</em> is the complete dotted name of
+the module, such as <cite>sys</cite> or <cite>epydoc.epytext</cite>.</dd>
+<dt><em>class</em><tt class="docutils literal"><span class="pre">-class.html</span></tt></dt>
+<dd>The API documentation for a class, exception, or type. <em>class</em> is the
+complete dotted name of the class, such as <tt class="docutils literal"><span class="pre">epydoc.epytext.Token</span></tt> or
+<tt class="docutils literal"><span class="pre">array.ArrayType</span></tt>.</dd>
+<dt><em>module</em><tt class="docutils literal"><span class="pre">-pysrc.html</span></tt></dt>
+<dd>A page with the module colorized source code, with links back to the
+objects main documentation pages. The creation of the colorized source
+pages can be controlled using the <a class="reference external" href="CommandLineUsage_">options</a> <tt class="docutils literal"><span class="pre">--show-sourcecode</span></tt> and
+<tt class="docutils literal"><span class="pre">--no-sourcecode</span></tt>.</dd>
+<dt><tt class="docutils literal"><span class="pre">module-tree.html</span></tt></dt>
+<dd>The documented module hierarchy.</dd>
+<dt><tt class="docutils literal"><span class="pre">class-tree.html</span></tt></dt>
+<dd>The documented classes hierarchy.</dd>
+<dt><tt class="docutils literal"><span class="pre">identifier-index.html</span></tt></dt>
+<dd>The index of all the identifiers found in the documented items.</dd>
+<dt><tt class="docutils literal"><span class="pre">term-index.html</span></tt></dt>
+<dd>The index of all the term definition found in the docstrings. Term
+definitions are created using the <a class="reference internal" href="#indexed-terms">Indexed Terms</a> markup.</dd>
+<dt><tt class="docutils literal"><span class="pre">bug-index.html</span></tt></dt>
+<dd>The index of all the known bug in the documented sources. Bugs are marked
+using the <tt class="docutils literal"><span class="pre">@bug</span></tt> tag.</dd>
+<dt><tt class="docutils literal"><span class="pre">todo-index.html</span></tt></dt>
+<dd>The index of all the to-do items in the documented sources. They are
+marked using the <tt class="docutils literal"><span class="pre">@todo</span></tt> tag.</dd>
+<dt><tt class="docutils literal"><span class="pre">help.html</span></tt></dt>
+<dd>The help page for the project. This page explains how to use and navigate
+the webpage produced by epydoc.</dd>
+<dt><tt class="docutils literal"><span class="pre">epydoc-log.html</span></tt></dt>
+<dd>A page with the log of the epydoc execution. It is available clicking on
+the timestamp below each page, if the documentation was created using the
+<tt class="docutils literal"><span class="pre">--include-log</span></tt> option. The page also contains the list of the options
+enabled when the documentation was created.</dd>
+<dt><tt class="docutils literal"><span class="pre">api-objects.txt</span></tt></dt>
+<dd>A text file containing each available item and the URL where it is
+documented. Each item takes a file line and it is separated by the URL by
+a <tt class="docutils literal"><span class="pre">tab</span></tt> charecter. Such file can be used to create <a class="reference internal" href="#external-api-links">external API links</a>.</dd>
+<dt><tt class="docutils literal"><span class="pre">redirect.html</span></tt></dt>
+<dd>A page containing Javascript code that redirect the browser to the
+documentation page indicated by the accessed fragment. For example
+opening the page <tt class="docutils literal"><span class="pre">redirect.html#epydoc.apidoc.DottedName</span></tt> the browser
+will be redirected to the page <tt class="docutils literal"><span class="pre">epydoc.apidoc.DottedName-class.html</span></tt>.</dd>
+<dt><tt class="docutils literal"><span class="pre">frames.html</span></tt></dt>
+<dd>The main frames file. Two frames on the left side of the window contain a
+table of contents, and the main frame on the right side of the window
+contains API documentation pages.</dd>
+<dt><tt class="docutils literal"><span class="pre">toc.html</span></tt></dt>
+<dd>The top-level table of contents page. This page is displayed in the
+upper-left frame of frames.html, and provides links to the
+<tt class="docutils literal"><span class="pre">toc-everything.html</span></tt> and <tt class="docutils literal"><span class="pre">toc-module-module.html</span></tt> pages.</dd>
+<dt><tt class="docutils literal"><span class="pre">toc-everything.html</span></tt></dt>
+<dd>The table of contents for the entire project. This page is displayed in
+the lower-left frame of frames.html, and provides links to every class,
+type, exception, function, and variable defined by the project.</dd>
+<dt><tt class="docutils literal"><span class="pre">toc-</span></tt><em>module</em><tt class="docutils literal"><span class="pre">-module.html</span></tt></dt>
+<dd>The table of contents for a module. This page is displayed in the
+lower-left frame of frames.html, and provides links to every class, type,
+exception, function, and variable defined by the module. module is the
+complete dotted name of the module, such as <tt class="docutils literal"><span class="pre">sys</span></tt> or <tt class="docutils literal"><span class="pre">epydoc.epytext</span></tt>.</dd>
+<dt><tt class="docutils literal"><span class="pre">epydoc.css</span></tt></dt>
+<dd>The CSS stylesheet used to display all HTML pages.</dd>
+</dl>
+</div>
+<div class="section" id="css-stylesheets">
+<h2><a class="toc-backref" href="#id35">2.5   CSS Stylesheets</a></h2>
+<p>Epydoc creates a CSS stylesheet (<tt class="docutils literal"><span class="pre">epydoc.css</span></tt>) when it builds the API
+documentation for a project. You can specify which stylesheet should be used
+using the <tt class="docutils literal"><span class="pre">--css</span></tt> command-line option. If you do not specify a stylesheet,
+and one is already present, epydoc will use that stylesheet; otherwise, it will
+use the default stylesheet.</p>
+</div>
+</div>
+<div class="section" id="python-docstrings">
+<h1><a class="toc-backref" href="#id36">3   Python Docstrings</a></h1>
+<!-- $Id: manual-docstring.txt 1575 2007-03-08 21:28:07Z edloper $ -->
+<p>Python documentation strings (or <em>docstrings</em>) provide a convenient way of
+associating documentation with Python modules, functions, classes, and methods.
+An object's docsting is defined by including a string constant as the first
+statement in the object's definition. For example, the following function
+defines a docstring:</p>
+<pre class="py-doctest">
+<span class="py-keyword">def</span> <span class="py-defname">x_intercept</span>(m, b):
+    <span class="py-string">"""</span>
+<span class="py-string">    Return the x intercept of the line y=m*x+b.  The x intercept of a</span>
+<span class="py-string">    line is the point at which it crosses the x axis (y=0).</span>
+<span class="py-string">    """</span>
+    return -b/m</pre>
+<p>Docstrings can be accessed from the interpreter and from Python programs
+using the "<tt class="docutils literal"><span class="pre">__doc__</span></tt>" attribute:</p>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">print</span> x_intercept.__doc__
+    Return the x intercept of the line y=m*x+b.  The x intercept of a
+    line <span class="py-keyword">is</span> the point at which it crosses the x axis (y=0).</pre>
+<p>The <a class="reference external" href="http://web.lfw.org/python/pydoc.html">pydoc</a> module, which became part of <a class="reference external" href="http://www.python.org/doc/current/lib/module-pydoc.html">the standard library</a> in Python 2.1,
+can be used to display information about a Python object, including its
+docstring:</p>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">from</span> pydoc <span class="py-keyword">import</span> help
+
+<span class="py-prompt">>>> </span>help(x_intercept)
+Help on function x_intercept <span class="py-keyword">in</span> module __main__:
+
+x_intercept(m, b)
+    Return the x intercept of the line y=m*x+b.  The x intercept of a
+    line <span class="py-keyword">is</span> the point at which it crosses the x axis (y=0).</pre>
+<p>For more information about Python docstrings, see the <a class="reference external" href="http://www.python.org/doc/current/tut/node6.html#docstrings">Python Tutorial</a> or
+the O'Reilly Network article <a class="reference external" href="http://www.onlamp.com/lpt/a/python/2001/05/17/docstrings.html">Python Documentation Tips and Tricks</a>.</p>
+<div class="section" id="variable-docstrings">
+<h2><a class="toc-backref" href="#id37">3.1   Variable docstrings</a></h2>
+<!-- [xx] this should be somewhere else, i guess... -->
+<p>Python don't support directly docstrings on variables: there is no attribute
+that can be attached to variables and retrieved interactively like the
+<tt class="docutils literal"><span class="pre">__doc__</span></tt> attribute on modules, classes and functions.</p>
+<p>While the language doesn't directly provides for them, Epydoc supports
+<em>variable docstrings</em>: if a variable assignment statement is immediately
+followed by a bare string literal, then that assignment is treated as a
+docstring for that variable. In classes, variable assignments at the class
+definition level are considered class variables; and assignments to instance
+variables in the constructor (<tt class="docutils literal"><span class="pre">__init__</span></tt>) are considered instance variables:</p>
+<pre class="py-doctest">
+<span class="py-keyword">class</span> <span class="py-defname">A</span>:
+    x = 22
+    <span class="py-string">"""Docstring for class variable A.x"""</span>
+
+    <span class="py-keyword">def</span> <span class="py-defname">__init__</span>(self, a):
+        self.y = a
+        <span class="py-string">""</span>"Docstring <span class="py-keyword">for</span> instance variable A.y</pre>
+<p>Variables may also be documented using <em>comment docstrings</em>. If a variable
+assignment is immediately preceeded by a comment whose lines begin with the
+special marker '<tt class="docutils literal"><span class="pre">#:</span></tt>', or is followed on the same line by such a comment,
+then it is treated as a docstring for that variable:</p>
+<pre class="py-doctest">
+<span class="py-comment">#: docstring for x</span>
+x = 22
+x = 22 <span class="py-comment">#: docstring for x</span></pre>
+<p>Notice that variable docstrings are only available for documentation when the
+source code is available for <em>parsing</em>: it is not possible to retrieve variable</p>
+</div>
+<div class="section" id="items-visibility">
+<h2><a class="toc-backref" href="#id38">3.2   Items visibility</a></h2>
+<p>Any Python object (modules, classes, functions, variables...) can be <em>public</em>
+or <em>private</em>. Usually the object name decides the object visibility: objects
+whose name starts with an underscore and doesn't end with an underscore are
+considered private. All the other objects (including the "magic functions" such
+as <tt class="docutils literal"><span class="pre">__add__</span></tt>) are public.</p>
+<p>For each module and class, Epydoc generates pages with both public and private
+methods. A Javascript snippet allows you to toggle the visibility of private
+objects.</p>
+<p>If a module wants to hide some of the objects it contains (either defined in
+the module itself or imported from other modules), it can explicitly list the
+names if its <a class="reference external" href="http://www.python.org/doc/2.4.3/ref/import.html">public names</a> in the <tt class="docutils literal"><span class="pre">__all__</span></tt> variable.</p>
+<p>If a module defines the <tt class="docutils literal"><span class="pre">__all__</span></tt> variable, Epydoc uses its content to decide
+if the module objects are public or private.</p>
+</div>
+</div>
+<div class="section" id="the-epytext-markup-language">
+<h1><a class="toc-backref" href="#id39">4   The Epytext Markup Language</a></h1>
+<!-- $Id: manual-epytext.txt 1547 2007-02-21 17:34:54Z dvarrazzo $ -->
+<div class="section" id="a-brief-introduction">
+<h2><a class="toc-backref" href="#id40">4.1   A Brief Introduction</a></h2>
+<p>Epytext is a simple lightweight markup language that lets you add formatting
+and structue to docstrings. Epydoc uses that formatting and structure to
+produce nicely formatted API documentation. The following example (which has
+an unusually high ratio of documentaiton to code) illustrates some of the
+basic features of epytext:</p>
+<pre class="py-doctest">
+<span class="py-keyword">def</span> <span class="py-defname">x_intercept</span>(m, b):
+    <span class="py-string">"""</span>
+<span class="py-string">    Return the x intercept of the line M{y=m*x+b}.  The X{x intercept}</span>
+<span class="py-string">    of a line is the point at which it crosses the x axis (M{y=0}).</span>
+
+<span class="py-string">    This function can be used in conjuction with L{z_transform} to</span>
+<span class="py-string">    find an arbitrary function's zeros.</span>
+
+<span class="py-string">    @type  m: number</span>
+<span class="py-string">    @param m: The slope of the line.</span>
+<span class="py-string">    @type  b: number</span>
+<span class="py-string">    @param b: The y intercept of the line.  The X{y intercept} of a</span>
+<span class="py-string">              line is the point at which it crosses the y axis (M{x=0}).</span>
+<span class="py-string">    @rtype:   number</span>
+<span class="py-string">    @return:  the x intercept of the line M{y=m*x+b}.</span>
+<span class="py-string">    """</span>
+    return -b/m</pre>
+<p>You can compare this function definition with the <a class="reference external" href="http://epydoc.sourceforge.net/examples/epytext_example-module.html#x_intercept">API documentation</a>
+generated by epydoc. Note that:</p>
+<ul class="simple">
+<li>Paragraphs are separated by blank lines.</li>
+<li>Inline markup has the form "<em>x</em><tt class="docutils literal"><span class="pre">{</span></tt>...<tt class="docutils literal"><span class="pre">}</span></tt>", where "<em>x</em>" is a
+single capital letter. This example uses inline markup to mark mathematical
+expressions ("<tt class="docutils literal"><span class="pre">M{...}</span></tt>"); terms that should be indexed ("<tt class="docutils literal"><span class="pre">X{...}</span></tt>");
+and links to the documentation of other objects ("<tt class="docutils literal"><span class="pre">L{...}</span></tt>").</li>
+<li>Descriptions of parameters, return values, and types are marked with
+"<tt class="docutils literal"><span class="pre">@</span></tt><em>field</em><tt class="docutils literal"><span class="pre">:</span></tt>" or "<tt class="docutils literal"><span class="pre">@</span></tt><em>field arg</em><tt class="docutils literal"><span class="pre">:</span></tt>", where "<em>field</em>"
+identifies the kind of description, and "<em>arg</em>" specifies what object is
+described.</li>
+</ul>
+<p>Epytext is intentionally very lightweight. If you wish to use a more
+expressive markup language, I recommend <a class="reference external" href="http://docutils.sourceforge.net/rst.html">reStructuredText</a>.</p>
+</div>
+<div class="section" id="epytext-language-overview">
+<h2><a class="toc-backref" href="#id41">4.2   Epytext Language Overview</a></h2>
+<p>Epytext is a lightweight markup language for Python docstrings. The epytext
+markup language is used by epydoc to parse docstrings and create structured API
+documentation. Epytext markup is broken up into the following categories:</p>
+<ul>
+<li><p class="first"><strong>Block Structure</strong> divides the docstring into nested blocks of text, such
+as <em>paragraphs</em> and <em>lists</em>.</p>
+<blockquote>
+<p>o <strong>Basic Blocks</strong> are the basic unit of block structure.</p>
+<p>o <strong>Hierarchical blocks</strong> represent the nesting structure of the docstring.</p>
+</blockquote>
+</li>
+<li><p class="first"><strong>Inline Markup</strong> marks regions of text within a basic block with properties,
+such as italics and hyperlinks.</p>
+</li>
+</ul>
+</div>
+<div class="section" id="block-structure">
+<h2><a class="toc-backref" href="#id42">4.3   Block Structure</a></h2>
+<p>Block structure is encoded using indentation, blank lines, and a handful of
+special character sequences.</p>
+<ul class="simple">
+<li>Indentation is used to encode the nesting structure of hierarchical blocks.
+The indentation of a line is defined as the number of leading spaces on that
+line; and the indentation of a block is typically the indentation of its
+first line.</li>
+<li>Blank lines are used to separate blocks. A blank line is a line that only
+contains whitespace.</li>
+<li>Special character sequences are used to mark the beginnings of some blocks.
+For example, '<tt class="docutils literal"><span class="pre">-</span></tt>' is used as a bullet for unordered list items, and
+'<tt class="docutils literal"><span class="pre">>>></span></tt>' is used to mark <a class="reference internal" href="#doctest-blocks">doctest blocks</a>.</li>
+</ul>
+<p>The following sections describe how to use each type of block structure.</p>
+<div class="section" id="paragraphs">
+<h3><a class="toc-backref" href="#id43">4.3.1   Paragraphs</a></h3>
+<p>A paragraph is the simplest type of basic block. It consists of one or more
+lines of text. Paragraphs must be left justified (i.e., every line must have
+the same indentation). The following example illustrates how paragraphs can be
+used:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="50%" />
+<col width="50%" />
+</colgroup>
+<thead valign="bottom">
+<tr><th class="head">Docstring Input</th>
+<th class="head">Rendered Output</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr><td><pre class="py-doctest">
+<span class="py-keyword">def</span> <span class="py-defname">example</span>():
+    <span class="py-string">"""</span>
+<span class="py-string">    This is a paragraph.  Paragraphs can</span>
+<span class="py-string">    span multiple lines, and can contain</span>
+<span class="py-string">    I{inline markup}.</span>
+
+<span class="py-string">    This is another paragraph.  Paragraphs</span>
+<span class="py-string">    are separated by blank lines.</span>
+<span class="py-string">    """</span>
+    *[...]*</pre>
+</td>
+<td><p class="first">This is a paragraph. Paragraphs can span multiple lines,
+and contain <em>inline markup</em>.</p>
+<p class="last">This is another paragraph. Paragraphs are separated from each
+other by blank lines.</p>
+</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="lists">
+<h3><a class="toc-backref" href="#id44">4.3.2   Lists</a></h3>
+<p>Epytext supports both ordered and unordered lists. A list consists of one or
+more consecutive <em>list items</em> of the same type (ordered or unordered), with the
+same indentation. Each list item is marked by a <em>bullet</em>. The bullet for
+unordered list items is a single dash character (<tt class="docutils literal"><span class="pre">-</span></tt>). Bullets for ordered
+list items consist of a series of numbers followed by periods, such as
+<tt class="docutils literal"><span class="pre">12.</span></tt> or <tt class="docutils literal"><span class="pre">1.2.8.</span></tt>.</p>
+<p>List items typically consist of a bullet followed by a space and a single
+paragraph. The paragraph may be indented more than the list item's bullet;
+often, the paragraph is intended two or three characters, so that its left
+margin lines up with the right side of the bullet. The following example
+illustrates a simple ordered list.</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="50%" />
+<col width="50%" />
+</colgroup>
+<thead valign="bottom">
+<tr><th class="head">Docstring Input</th>
+<th class="head">Rendered Output</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr><td><pre class="py-doctest">
+<span class="py-keyword">def</span> <span class="py-defname">example</span>():
+    <span class="py-string">"""</span>
+<span class="py-string">    1. This is an ordered list item.</span>
+
+<span class="py-string">    2. This is a another ordered list</span>
+<span class="py-string">    item.</span>
+
+<span class="py-string">    3. This is a third list item.  Note that</span>
+<span class="py-string">       the paragraph may be indented more</span>
+<span class="py-string">       than the bullet.</span>
+<span class="py-string">    """</span>
+    *[...]*</pre>
+</td>
+<td><ol class="first last arabic simple">
+<li>This is an ordered list item.</li>
+<li>This is another ordered list item.</li>
+<li>This is a third list item. Note that the paragraph may be
+indented more than the bullet.</li>
+</ol>
+</td>
+</tr>
+</tbody>
+</table>
+<p>List items can contain more than one paragraph; and they can also contain
+sublists, <cite>literal blocks</cite>, and <cite>doctest blocks</cite>. All of the blocks contained
+by a list item must all have equal indentation, and that indentation must be
+greater than or equal to the indentation of the list item's bullet. If the
+first contained block is a paragraph, it may appear on the same line as the
+bullet, separated from the bullet by one or more spaces, as shown in the
+previous example. All other block types must follow on separate lines.</p>
+<p>Every list must be separated from surrounding blocks by indentation:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="50%" />
+<col width="50%" />
+</colgroup>
+<thead valign="bottom">
+<tr><th class="head">Docstring Input</th>
+<th class="head">Rendered Output</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr><td><pre class="py-doctest">
+<span class="py-keyword">def</span> <span class="py-defname">example</span>():
+    <span class="py-string">"""</span>
+<span class="py-string">    This is a paragraph.</span>
+<span class="py-string">      1. This is a list item.</span>
+<span class="py-string">      2. This a second list</span>
+<span class="py-string">         item.</span>
+<span class="py-string">           - This is a sublist</span>
+<span class="py-string">    """</span>
+    [...]</pre>
+</td>
+<td><p class="first">This is a paragraph.</p>
+<ol class="last arabic simple">
+<li>This is a list item.</li>
+<li>This is a second list item.<ul>
+<li>This is a sublist.</li>
+</ul>
+</li>
+</ol>
+</td>
+</tr>
+</tbody>
+</table>
+<p>Note that sublists must be separated from the blocks in their parent list
+item by indentation. In particular, the following docstring generates an error,
+since the sublist is not separated from the paragraph in its parent list item
+by indentation:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="50%" />
+<col width="50%" />
+</colgroup>
+<thead valign="bottom">
+<tr><th class="head">Docstring Input</th>
+<th class="head">Rendered Output</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr><td><pre class="py-doctest">
+<span class="py-keyword">def</span> <span class="py-defname">example</span>():
+    <span class="py-string">"""</span>
+<span class="py-string">    1. This is a list item.  Its</span>
+<span class="py-string">    paragraph is indented 7 spaces.</span>
+<span class="py-string">    - This is a sublist.  It is</span>
+<span class="py-string">      indented 7 spaces.</span>
+<span class="py-string">    """</span>
+    <span class="py-comment">#[...]</span></pre>
+</td>
+<td><strong>L5: Error: Lists must be indented.</strong></td>
+</tr>
+</tbody>
+</table>
+<p>The following example illustrates how lists can be used:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="50%" />
+<col width="50%" />
+</colgroup>
+<thead valign="bottom">
+<tr><th class="head">Docstring Input</th>
+<th class="head">Rendered Output</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr><td><pre class="py-doctest">
+<span class="py-keyword">def</span> <span class="py-defname">example</span>():
+    <span class="py-string">"""</span>
+<span class="py-string">    This is a paragraph.</span>
+<span class="py-string">      1. This is a list item.</span>
+<span class="py-string">        - This is a sublist.</span>
+<span class="py-string">        - The sublist contains two</span>
+<span class="py-string">          items.</span>
+<span class="py-string">            - The second item of the</span>
+<span class="py-string">              sublist has its own sublist.</span>
+
+<span class="py-string">      2. This list item contains two</span>
+<span class="py-string">         paragraphs and a doctest block.</span>
+
+<span class="py-string">         >>> print 'This is a doctest block'</span>
+<span class="py-string">         This is a doctest block</span>
+
+<span class="py-string">         This is the second paragraph.</span>
+<span class="py-string">    """</span>
+    <span class="py-comment">#[...]</span></pre>
+</td>
+<td><p class="first">This is a paragraph.</p>
+<ol class="last arabic">
+<li><p class="first">This is a list item.</p>
+<ul class="simple">
+<li>This is a sublist.</li>
+<li>The sublist contains two items.<ul>
+<li>The second item of the sublist has its own own sublist.</li>
+</ul>
+</li>
+</ul>
+</li>
+<li><p class="first">This list item contains two paragraphs and a doctest block.</p>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">print</span> <span class="py-string">'This is a doctest block'</span>
+<span class="py-output">This is a doctest block</span></pre>
+<p>This is the second paragraph.</p>
+</li>
+</ol>
+</td>
+</tr>
+</tbody>
+</table>
+<p>Epytext will treat any line that begins with a bullet as a list item. If you
+want to include bullet-like text in a paragraph, then you must either ensure
+that it is not at the beginning of the line, or use <a class="reference internal" href="#escaping">escaping</a> to prevent
+epytext from treating it as markup:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="50%" />
+<col width="50%" />
+</colgroup>
+<thead valign="bottom">
+<tr><th class="head">Docstring Input</th>
+<th class="head">Rendered Output</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr><td><pre class="py-doctest">
+<span class="py-keyword">def</span> <span class="py-defname">example</span>():
+    <span class="py-string">"""</span>
+<span class="py-string">    This sentence ends with the number</span>
+<span class="py-string">    1.  Epytext can't tell if the "1."</span>
+<span class="py-string">    is a bullet or part of the paragraph,</span>
+<span class="py-string">    so it generates an error.</span>
+<span class="py-string">    """</span>
+    <span class="py-comment">#[...]</span></pre>
+</td>
+<td><strong>L4: Error: Lists must be indented.</strong></td>
+</tr>
+<tr><td><pre class="py-doctest">
+<span class="py-keyword">def</span> <span class="py-defname">example</span>():
+    <span class="py-string">"""</span>
+<span class="py-string">    This sentence ends with the number 1.</span>
+
+<span class="py-string">    This sentence ends with the number</span>
+<span class="py-string">    E{1}.</span>
+<span class="py-string">    """</span>
+    <span class="py-comment">#[...]</span></pre>
+</td>
+<td><p class="first">This sentence ends with the number 1.</p>
+<p class="last">This sentence ends with the number 1.</p>
+</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="sections">
+<h3><a class="toc-backref" href="#id45">4.3.3   Sections</a></h3>
+<p>A section consists of a heading followed by one or more child blocks.</p>
+<ul class="simple">
+<li>The heading is a single underlined line of text. Top-level section headings
+are underlined with the '<tt class="docutils literal"><span class="pre">=</span></tt>' character; subsection headings are
+underlined with the '<tt class="docutils literal"><span class="pre">-</span></tt>' character; and subsubsection headings are
+underlined with the '<tt class="docutils literal"><span class="pre">~</span></tt>' character. The length of the underline must
+exactly match the length of the heading.</li>
+<li>The child blocks can be paragraphs, lists, literal blocks, doctest blocks,
+or sections. Each child must have equal indentation, and that indentation
+must be greater than or equal to the heading's indentation.</li>
+</ul>
+<p>The following example illustrates how sections can be used:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="50%" />
+<col width="50%" />
+</colgroup>
+<thead valign="bottom">
+<tr><th class="head">Docstring Input</th>
+<th class="head">Rendered Output</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr><td><pre class="py-doctest">
+<span class="py-keyword">def</span> <span class="py-defname">example</span>():
+    <span class="py-string">"""</span>
+<span class="py-string">    This paragraph is not in any section.</span>
+
+<span class="py-string">    Section 1</span>
+<span class="py-string">    =========</span>
+<span class="py-string">      This is a paragraph in section 1.</span>
+
+<span class="py-string">      Section 1.1</span>
+<span class="py-string">      -----------</span>
+<span class="py-string">      This is a paragraph in section 1.1.</span>
+
+<span class="py-string">    Section 2</span>
+<span class="py-string">    =========</span>
+<span class="py-string">      This is a paragraph in section 2.</span>
+<span class="py-string">    """</span>
+    <span class="py-comment">#[...]</span></pre>
+</td>
+<td><p class="h1 first">Section 1</p>
+<p>This is a paragraph in section 1.</p>
+<p class="h2">Section 1.1</p>
+<p>This is a paragraph in section 1.1.</p>
+<p class="h1">Section 2</p>
+<p class="last">This is a paragraph in section 2.</p>
+</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="literal-blocks">
+<h3><a class="toc-backref" href="#id46">4.3.4   Literal Blocks</a></h3>
+<p>Literal blocks are used to represent "preformatted" text. Everything within a
+literal block should be displayed exactly as it appears in plaintext. In
+particular:</p>
+<ul class="simple">
+<li>Spaces and newlines are preserved.</li>
+<li>Text is shown in a monospaced font.</li>
+<li>Inline markup is not detected.</li>
+</ul>
+<p>Literal blocks are introduced by paragraphs ending in the special sequence
+"<tt class="docutils literal"><span class="pre">::</span></tt>". Literal blocks end at the first line whose indentation is equal to
+or less than that of the paragraph that introduces them. The following example
+shows how literal blocks can be used:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="50%" />
+<col width="50%" />
+</colgroup>
+<thead valign="bottom">
+<tr><th class="head">Docstring Input</th>
+<th class="head">Rendered Output</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr><td><pre class="py-doctest">
+<span class="py-keyword">def</span> <span class="py-defname">example</span>():
+    <span class="py-string">"""</span>
+<span class="py-string">    The following is a literal block::</span>
+
+<span class="py-string">        Literal /</span>
+<span class="py-string">               / Block</span>
+
+<span class="py-string">    This is a paragraph following the</span>
+<span class="py-string">    literal block.</span>
+<span class="py-string">    """</span>
+    <span class="py-comment">#[...]</span></pre>
+</td>
+<td><p class="first">The following is a literal block:</p>
+<pre class="literal-block">
+Literal /
+       / Block
+</pre>
+<p class="last">This is a paragraph following the literal block.</p>
+</td>
+</tr>
+</tbody>
+</table>
+<p>Literal blocks are indented relative to the paragraphs that introduce them;
+for example, in the previous example, the word "Literal" is displayed with four
+leading spaces, not eight. Also, note that the double colon ("<tt class="docutils literal"><span class="pre">::</span></tt>") that
+introduces the literal block is rendered as a single colon.</p>
+</div>
+<div class="section" id="doctest-blocks">
+<h3><a class="toc-backref" href="#id47">4.3.5   Doctest Blocks</a></h3>
+<p>Doctest blocks contain examples consisting of Python expressions and their
+output. Doctest blocks can be used by the doctest module to test the
+documented object. Doctest blocks begin with the special sequence
+"<tt class="docutils literal"><span class="pre">>>></span></tt>". Doctest blocks are delimited from surrounding blocks by blank lines.
+Doctest blocks may not contain blank lines. The following example shows how
+doctest blocks can be used:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="50%" />
+<col width="50%" />
+</colgroup>
+<thead valign="bottom">
+<tr><th class="head">Docstring Input</th>
+<th class="head">Rendered Output</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr><td><pre class="py-doctest">
+<span class="py-keyword">def</span> <span class="py-defname">example</span>():
+    <span class="py-string">"""</span>
+<span class="py-string">    The following is a doctest block:</span>
+
+<span class="py-string">        >>> print (1+3,</span>
+<span class="py-more">    </span><span class="py-string">    ...        3+5)</span>
+<span class="py-string">        (4, 8)</span>
+<span class="py-string">        >>> 'a-b-c-d-e'.split('-')</span>
+<span class="py-string">        ['a', 'b', 'c', 'd', 'e']</span>
+
+<span class="py-string">    This is a paragraph following the</span>
+<span class="py-string">    doctest block.</span>
+<span class="py-string">    """</span>
+    <span class="py-comment">#[...]</span></pre>
+</td>
+<td><p class="first">The following is a doctest block:</p>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">print</span> (1+3,
+<span class="py-more">... </span>       3+5)
+<span class="py-output">(4, 8)</span>
+<span class="py-output"></span><span class="py-prompt">>>> </span><span class="py-string">'a-b-c-d-e'</span>.split(<span class="py-string">'-'</span>)
+<span class="py-output">['a', 'b', 'c', 'd', 'e']</span></pre>
+<p class="last">This is a paragraph following the doctest block.</p>
+</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="fields">
+<h3><a class="toc-backref" href="#id48">4.3.6   Fields</a></h3>
+<p>Fields are used to describe specific properties of a documented object. For
+example, fields can be used to define the parameters and return value of a
+function; the instance variables of a class; and the author of a module. Each
+field is marked by a <em>field tag</em>, which consist of an at sign ('<tt class="docutils literal"><span class="pre">@</span></tt>')
+followed by a <em>field name</em>, optionally followed by a space and a <em>field
+argument</em>, followed by a colon ('<tt class="docutils literal"><span class="pre">:</span></tt>'). For example, '<tt class="docutils literal"><span class="pre">@return:</span></tt>' and
+'<tt class="docutils literal"><span class="pre">@param</span> <span class="pre">x:</span></tt>' are field tags.</p>
+<p>Fields can contain paragraphs, lists, literal blocks, and doctest blocks.
+All of the blocks contained by a field must all have equal indentation, and
+that indentation must be greater than or equal to the indentation of the
+field's tag. If the first contained block is a paragraph, it may appear on the
+same line as the field tag, separated from the field tag by one or more spaces.
+All other block types must follow on separate lines.</p>
+<p>Fields must be placed at the end of the docstring, after the description of
+the object. Fields may be included in any order.</p>
+<p>Fields do not need to be separated from other blocks by a blank line. Any line
+that begins with a field tag followed by a space or newline is considered a
+field.</p>
+<p>The following example illustrates how fields can be used:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="50%" />
+<col width="50%" />
+</colgroup>
+<thead valign="bottom">
+<tr><th class="head">Docstring Input</th>
+<th class="head">Rendered Output</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr><td><pre class="py-doctest">
+<span class="py-keyword">def</span> <span class="py-defname">example</span>():
+    <span class="py-string">"""</span>
+<span class="py-string">    @param x: This is a description of</span>
+<span class="py-string">        the parameter x to a function.</span>
+<span class="py-string">        Note that the description is</span>
+<span class="py-string">        indented four spaces.</span>
+<span class="py-string">    @type x: This is a description of</span>
+<span class="py-string">        x's type.</span>
+<span class="py-string">    @return: This is a description of</span>
+<span class="py-string">        the function's return value.</span>
+
+<span class="py-string">        It contains two paragraphs.</span>
+<span class="py-string">    """</span>
+    <span class="py-comment">#[...]</span></pre>
+</td>
+<td><dl class="first last docutils">
+<dt><strong>Parameters:</strong></dt>
+<dd><p class="first"><strong>x</strong> - This is a description of the parameter x to a function.
+Note that the description is indented four spaces.</p>
+<blockquote class="last">
+<em>(type=This is a description of x's type.)</em></blockquote>
+</dd>
+<dt><strong>Returns:</strong></dt>
+<dd><p class="first">This is a description of the function's return value.</p>
+<p class="last">It contains two paragraphs.</p>
+</dd>
+</dl>
+</td>
+</tr>
+</tbody>
+</table>
+<p>For a list of the fields that are supported by epydoc, see the <cite>epydoc fields</cite>
+chapter.</p>
+</div>
+</div>
+<div class="section" id="inline-markup">
+<h2><a class="toc-backref" href="#id49">4.4   Inline Markup</a></h2>
+<p>Inline markup has the form '<tt class="docutils literal"><span class="pre">x{...}</span></tt>', where <tt class="docutils literal"><span class="pre">x</span></tt> is a single capital letter
+that specifies how the text between the braces should be rendered. Inline
+markup is recognized within paragraphs and section headings. It is <em>not</em>
+recognized within literal and doctest blocks. Inline markup can contain
+multiple words, and can span multiple lines. Inline markup may be nested.</p>
+<p>A matching pair of curly braces is only interpreted as inline markup if the
+left brace is immediately preceeded by a capital letter. So in most cases, you
+can use curly braces in your text without any form of escaping. However, you do
+need to escape curly braces when:</p>
+<ol class="arabic simple">
+<li>You want to include a single (un-matched) curly brace.</li>
+<li>You want to preceed a matched pair of curly braces with a capital letter.</li>
+</ol>
+<p>Note that there is no valid Python expression where a pair of matched curly
+braces is immediately preceeded by a capital letter (except within string
+literals). In particular, you never need to escape braces when writing Python
+dictionaries. See also <a class="reference internal" href="#escaping">escaping</a>.</p>
+<div class="section" id="basic-inline-markup">
+<h3><a class="toc-backref" href="#id50">4.4.1   Basic Inline Markup</a></h3>
+<blockquote>
+Epytext defines four types of inline markup that specify how text should be
+displayed:</blockquote>
+<ul class="simple">
+<li><tt class="docutils literal"><span class="pre">I{...}</span></tt>: Italicized text.</li>
+<li><tt class="docutils literal"><span class="pre">B{...}</span></tt>: Bold-faced text.</li>
+<li><tt class="docutils literal"><span class="pre">C{...}</span></tt>: Source code or a Python identifier.</li>
+<li><tt class="docutils literal"><span class="pre">M{...}</span></tt>: A mathematical expression.</li>
+</ul>
+<p>By default, source code is rendered in a fixed width font; and mathematical
+expressions are rendered in italics. But those defaults may be changed by
+modifying the CSS stylesheet. The following example illustrates how the four
+basic markup types can be used:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="50%" />
+<col width="50%" />
+</colgroup>
+<thead valign="bottom">
+<tr><th class="head">Docstring Input</th>
+<th class="head">Rendered Output</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr><td><pre class="py-doctest">
+<span class="py-keyword">def</span> <span class="py-defname">example</span>():
+    <span class="py-string">"""</span>
+<span class="py-string">    I{B{Inline markup} may be nested; and</span>
+<span class="py-string">    it may span} multiple lines.</span>
+
+<span class="py-string">      - I{Italicized text}</span>
+<span class="py-string">      - B{Bold-faced text}</span>
+<span class="py-string">      - C{Source code}</span>
+<span class="py-string">      - M{Math}</span>
+
+<span class="py-string">    Without the capital letter, matching</span>
+<span class="py-string">    braces are not interpreted as markup:</span>
+<span class="py-string">    C{my_dict={1:2, 3:4}}.</span>
+<span class="py-string">    """</span>
+    <span class="py-comment">#[...]</span></pre>
+</td>
+<td><p class="first"><strong>Inline markup</strong> <em>may be nested</em>; and it may span  multiple lines.</p>
+<ul class="simple">
+<li><em>Italicized text</em></li>
+<li><strong>Bold-faced text</strong></li>
+<li><tt class="docutils literal"><span class="pre">Source</span> <span class="pre">code</span></tt></li>
+<li>Math: <em>m*x+b</em></li>
+</ul>
+<p class="last">Without the capital letter, matching braces are not interpreted as
+markup: <tt class="docutils literal"><span class="pre">my_dict={1:2,</span> <span class="pre">3:4}</span></tt>.</p>
+</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="urls">
+<h3><a class="toc-backref" href="#id51">4.4.2   URLs</a></h3>
+<p>The inline markup construct <tt class="docutils literal"><span class="pre">U{</span></tt><em>text<url></em><tt class="docutils literal"><span class="pre">}</span></tt> is used to create links
+to external URLs and URIs. '<em>text</em>' is the text that should be displayed for
+the link, and '<em>url</em>' is the target of the link. If you wish to use the URL as
+the text for the link, you can simply write "<tt class="docutils literal"><span class="pre">U{</span></tt><em>url</em><tt class="docutils literal"><span class="pre">}</span></tt>". Whitespace
+within URL targets is ignored. In particular, URL targets may be split over
+multiple lines. The following example illustrates how URLs can be used:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="50%" />
+<col width="50%" />
+</colgroup>
+<thead valign="bottom">
+<tr><th class="head">Docstring Input</th>
+<th class="head">Rendered Output</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr><td><pre class="py-doctest">
+<span class="py-keyword">def</span> <span class="py-defname">example</span>():
+    <span class="py-string">"""</span>
+<span class="py-string">    - U{www.python.org}</span>
+<span class="py-string">    - U{http://www.python.org}</span>
+<span class="py-string">    - U{The epydoc homepage<http://</span>
+<span class="py-string">    epydoc.sourceforge.net>}</span>
+<span class="py-string">    - U{The B{Python} homepage</span>
+<span class="py-string">    <www.python.org>}</span>
+<span class="py-string">    - U{Edward Loper<mailto:edloper@</span>
+<span class="py-string">    gradient.cis.upenn.edu>}</span>
+<span class="py-string">    """</span>
+    <span class="py-comment">#[...]</span></pre>
+</td>
+<td><ul class="first last simple">
+<li><a class="reference external" href="http://www.python.org">www.python.org</a></li>
+<li><a class="reference external" href="http://www.python.org">http://www.python.org</a></li>
+<li><a class="reference external" href="http://epydoc.sourceforge.net">The epydoc homepage</a></li>
+<li><a class="reference external" href="http://www.python.org">The <strong>Python</strong> homepage</a></li>
+<li><a class="reference external" href="mailto:edloper@gradient.cis.upenn.edu">Edward Loper</a></li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="documentation-crossreference-links">
+<h3><a class="toc-backref" href="#id52">4.4.3   Documentation Crossreference Links</a></h3>
+<p>The inline markup construct '<tt class="docutils literal"><span class="pre">L{</span></tt><em>text<object></em><tt class="docutils literal"><span class="pre">}</span></tt>' is used to create
+links to the documentation for other Python objects. '<em>text</em>' is the text that
+should be displayed for the link, and '<em>object</em>' is the name of the Python
+object that should be linked to. If you wish to use the name of the Python
+object as the text for the link, you can simply write <tt class="docutils literal"><span class="pre">L{</span></tt><em>object</em>}``.
+Whitespace within object names is ignored. In particular, object names may be
+split over multiple lines. The following example illustrates how documentation
+crossreference links can be used:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="50%" />
+<col width="50%" />
+</colgroup>
+<thead valign="bottom">
+<tr><th class="head">Docstring Input</th>
+<th class="head">Rendered Output</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr><td><pre class="py-doctest">
+<span class="py-keyword">def</span> <span class="py-defname">example</span>():
+    <span class="py-string">"""</span>
+<span class="py-string">    - L{x_transform}</span>
+<span class="py-string">    - L{search<re.search>}</span>
+<span class="py-string">    - L{The I{x-transform} function</span>
+<span class="py-string">    <x_transform>}</span>
+<span class="py-string">    """</span>
+    <span class="py-comment">#[...]</span></pre>
+</td>
+<td><ul class="first last simple">
+<li><a class="reference external" href="http://www.example.com">x_transform</a></li>
+<li><a class="reference external" href="http://www.example.com">search</a></li>
+<li><a class="reference external" href="http://www.example.com">The x-transform function</a></li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+<p>In order to find the object that corresponds to a given name, epydoc checks the
+following locations, in order:</p>
+<ol class="arabic simple">
+<li>If the link is made from a class or method docstring, then epydoc checks for
+a method, instance variable, or class variable with the given name.</li>
+<li>Next, epydoc looks for an object with the given name in the current module.</li>
+<li>Epydoc then tries to import the given name as a module. If the current
+module is contained in a package, then epydoc will also try importing the
+given name from all packages containing the current module.</li>
+<li>Epydoc then tries to divide the given name into a module name and an
+object name, and to import the object from the module. If the current module
+is contained in a package, then epydoc will also try importing the module
+name from all packages containing the current module.</li>
+<li>Finally, epydoc looks for a class name in any module with the given name.
+This is only returned if there is a single class with such name.</li>
+</ol>
+<p>If no object is found that corresponds with the given name, then epydoc
+issues a warning.</p>
+</div>
+<div class="section" id="indexed-terms">
+<h3><a class="toc-backref" href="#id53">4.4.4   Indexed Terms</a></h3>
+<p>Epydoc automatically creates an index of term definitions for the API
+documentation. The inline markup construct '<tt class="docutils literal"><span class="pre">X{...}</span></tt>' is used to mark terms
+for inclusion in the index. The term itself will be italicized; and a link will
+be created from the index page to the location of the term in the text. The
+following example illustrates how index terms can be used:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="50%" />
+<col width="50%" />
+</colgroup>
+<thead valign="bottom">
+<tr><th class="head">Docstring Input</th>
+<th class="head">Rendered Output</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr><td><pre class="py-doctest">
+<span class="py-keyword">def</span> <span class="py-defname">example</span>():
+    <span class="py-string">"""</span>
+<span class="py-string">    An X{index term} is a term that</span>
+<span class="py-string">    should be included in the index.</span>
+<span class="py-string">    """</span>
+    <span class="py-comment">#[...]</span></pre>
+</td>
+<td><p class="first">An <em>index term</em> is a term that should be included in the index.</p>
+<blockquote class="last">
+<table border="1" class="docutils">
+<colgroup>
+<col width="46%" />
+<col width="54%" />
+</colgroup>
+<thead valign="bottom">
+<tr><th class="head" colspan="2">Index</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr><td>index term</td>
+<td><em>example</em></td>
+</tr>
+<tr><td>x intercept</td>
+<td><em>x_intercept</em></td>
+</tr>
+<tr><td>y intercept</td>
+<td><em>x_intercept</em></td>
+</tr>
+</tbody>
+</table>
+</blockquote>
+</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="symbols">
+<h3><a class="toc-backref" href="#id54">4.4.5   Symbols</a></h3>
+<p>Symbols are used to insert special characters in your documentation. A symbol
+has the form '<tt class="docutils literal"><span class="pre">S{code}</span></tt>', where code is a symbol code that specifies what
+character should be produced. The following example illustrates how symbols can
+be used to generate special characters:</p>
+<!-- This data file has been placed in the public domain. -->
+<!-- Derived from the Unicode character mappings available from
+<http://www.w3.org/2003/entities/xml/>.
+Processed by unicode2rstsubs.py, part of Docutils:
+<http://docutils.sourceforge.net>. -->
+<table border="1" class="docutils">
+<colgroup>
+<col width="50%" />
+<col width="50%" />
+</colgroup>
+<thead valign="bottom">
+<tr><th class="head">Docstring Input</th>
+<th class="head">Rendered Output</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr><td><pre class="py-doctest">
+<span class="py-keyword">def</span> <span class="py-defname">example</span>():
+    <span class="py-string">"""</span>
+<span class="py-string">    Symbols can be used in equations:</span>
+
+<span class="py-string">      - S{sum}S{alpha}/x S{<=} S{beta}</span>
+
+<span class="py-string">    S{<-} and S{larr} both give left</span>
+<span class="py-string">    arrows.  Some other arrows are</span>
+<span class="py-string">    S{rarr}, S{uarr}, and S{darr}.</span>
+<span class="py-string">    """</span>
+    <span class="py-comment">#[...]</span></pre>
+</td>
+<td><p class="first">Symbols can be used in equations:</p>
+<ul class="simple">
+<li>∑ α/<em>x</em> ≤ β</li>
+</ul>
+<p class="last">← and ← both give left
+arrows.  Some other arrows are
+→, ↑, and ↓.</p>
+</td>
+</tr>
+</tbody>
+</table>
+<p>Although symbols can be quite useful, you should keep in mind that they can
+make it harder to read your docstring in plaintext. In general, symbols should
+be used sparingly. For a complete list of the symbols that are currently
+supported, see the reference documentation for <a class="reference external" href="http://epydoc.sourceforge.net/api/epydoc.markup.epytext-module.html#SYMBOLS"><tt class="docutils literal"><span class="pre">epytext.SYMBOLS</span></tt></a>.</p>
+</div>
+<div class="section" id="escaping">
+<h3><a class="toc-backref" href="#id55">4.4.6   Escaping</a></h3>
+<p>Escaping is used to write text that would otherwise be interpreted as epytext
+markup. Epytext was carefully constructed to minimize the need for this type
+of escaping; but sometimes, it is unavoidable. Escaped text has the form
+'<tt class="docutils literal"><span class="pre">E{</span></tt><em>code</em><tt class="docutils literal"><span class="pre">}</span></tt>', where code is an escape code that specifies what
+character should be produced. If the escape code is a single character (other
+than '<tt class="docutils literal"><span class="pre">{</span></tt>' or '<tt class="docutils literal"><span class="pre">}</span></tt>'), then that character is produced. For example, to
+begin a paragraph with a dash (which would normally signal a list item), write
+'<tt class="docutils literal"><span class="pre">E{-}</span></tt>'. In addition, two special escape codes are defined: '<tt class="docutils literal"><span class="pre">E{lb}</span></tt>'
+produces a left curly brace ('<tt class="docutils literal"><span class="pre">{</span></tt>'); and '<tt class="docutils literal"><span class="pre">E{rb}</span></tt>' produces a right curly
+brace ('<tt class="docutils literal"><span class="pre">}</span></tt>'). The following example illustrates how escaping can be used:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="50%" />
+<col width="50%" />
+</colgroup>
+<thead valign="bottom">
+<tr><th class="head">Docstring Input</th>
+<th class="head">Rendered Output</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr><td><pre class="py-doctest">
+<span class="py-keyword">def</span> <span class="py-defname">example</span>():
+    <span class="py-string">"""</span>
+<span class="py-string">    This paragraph ends with two</span>
+<span class="py-string">    colons, but does not introduce</span>
+<span class="py-string">    a literal blockE{:}E{:}</span>
+
+<span class="py-string">    E{-} This is not a list item.</span>
+
+<span class="py-string">    Escapes can be used to write</span>
+<span class="py-string">    unmatched curly braces:</span>
+<span class="py-string">    E{rb}E{lb}</span>
+<span class="py-string">    """</span>
+    <span class="py-comment">#[...]</span></pre>
+</td>
+<td><p class="first">This paragraph ends with two colons, but does not introduce a literal
+block::</p>
+<p>- This is not a list item.</p>
+<p class="last">Escapes can be used to write unmatched curly braces: }{</p>
+</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="graphs">
+<h3><a class="toc-backref" href="#id56">4.4.7   Graphs</a></h3>
+<p>The inline markup construct '<tt class="docutils literal"><span class="pre">G{</span></tt><em>graphtype args...</em><tt class="docutils literal"><span class="pre">}</span></tt>' is used to
+insert automatically generated graphs. The following graphs generation
+constructions are currently defines:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="50%" />
+<col width="50%" />
+</colgroup>
+<thead valign="bottom">
+<tr><th class="head">Markup</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr><td><tt class="docutils literal"><span class="pre">G{classtree</span></tt>  <em>classes...</em><tt class="docutils literal"><span class="pre">}</span></tt></td>
+<td>Display a class hierarchy for the given
+class or classes (including all
+superclasses & subclasses). If no class
+is specified, and the directive is used
+in a class's docstring, then that
+class's class hierarchy will be
+displayed.</td>
+</tr>
+<tr><td><tt class="docutils literal"><span class="pre">G{packagetree</span></tt>  <em>modules...</em><tt class="docutils literal"><span class="pre">}</span></tt></td>
+<td>Display a package hierarchy for the
+given module or modules (including all
+subpackages and submodules). If no
+module is specified, and the directive
+is used in a module's docstring, then
+that module's package hierarchy will be
+displayed.</td>
+</tr>
+<tr><td><tt class="docutils literal"><span class="pre">G{importgraph</span></tt>  <em>modules...</em><tt class="docutils literal"><span class="pre">}</span></tt></td>
+<td>Display an import graph for the given
+module or modules. If no module is
+specified, and the directive is used in
+a module's docstring, then that
+module's import graph will be
+displayed.</td>
+</tr>
+<tr><td><tt class="docutils literal"><span class="pre">G{callgraph</span></tt>  <em>functions...</em><tt class="docutils literal"><span class="pre">}</span></tt></td>
+<td>Display a call graph for the given
+function or functions. If no function
+is specified, and the directive is used
+in a function's docstring, then that
+function's call graph will be
+displayed.</td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+<div class="section" id="characters">
+<h2><a class="toc-backref" href="#id57">4.5   Characters</a></h2>
+<div class="section" id="valid-characters">
+<h3><a class="toc-backref" href="#id58">4.5.1   Valid Characters</a></h3>
+<p>Valid characters for an epytext docstring are space (<tt class="docutils literal"><span class="pre">\040</span></tt>); newline
+(<tt class="docutils literal"><span class="pre">\012</span></tt>); and any letter, digit, or punctuation, as defined by the current
+locale. Control characters (<tt class="docutils literal"><span class="pre">\000</span></tt>-<tt class="docutils literal"><span class="pre">\010`</span> <span class="pre">and</span> <span class="pre">``\013</span></tt>-<tt class="docutils literal"><span class="pre">\037</span></tt>) are not
+valid content characters. Tabs (<tt class="docutils literal"><span class="pre">\011</span></tt>) are expanded to spaces, using the
+same algorithm used by the Python parser. Carridge-return/newline pairs
+(<tt class="docutils literal"><span class="pre">\015\012</span></tt>) are converted to newlines.</p>
+</div>
+<div class="section" id="content-characters">
+<h3><a class="toc-backref" href="#id59">4.5.2   Content Characters</a></h3>
+<p>Characters in a docstring that are not involved in markup are called <em>content characters</em>. Content characters are always displayed as-is. In particular, HTML
+codes are not passed through. For example, consider the following example:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="50%" />
+<col width="50%" />
+</colgroup>
+<thead valign="bottom">
+<tr><th class="head">Docstring Input</th>
+<th class="head">Rendered Output</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr><td><pre class="py-doctest">
+<span class="py-keyword">def</span> <span class="py-defname">example</span>():
+    <span class="py-string">"""</span>
+<span class="py-string">    <B>test</B></span>
+<span class="py-string">    """</span>
+    <span class="py-comment">#[...]</span></pre>
+</td>
+<td><B>test</B></td>
+</tr>
+</tbody>
+</table>
+<p>The docstring is rendered as <tt class="docutils literal"><span class="pre"><B>test</B></span></tt>, and not as the word "test" in
+bold face.</p>
+</div>
+<div class="section" id="spaces-and-newlines">
+<h3><a class="toc-backref" href="#id60">4.5.3   Spaces and Newlines</a></h3>
+<p>In general, spaces and newlines within docstrings are treated as soft spaces.
+In other words, sequences of spaces and newlines (that do not contain a blank
+line) are rendered as a single space, and words may wrapped at spaces. However,
+within literal blocks and doctest blocks, spaces and newlines are preserved,
+and no word-wrapping occurs; and within URL targets and documentation link
+targets, whitespace is ignored.</p>
+</div>
+</div>
+</div>
+<div class="section" id="epydoc-fields">
+<h1><a class="toc-backref" href="#id61">5   Epydoc Fields</a></h1>
+<!-- $Id: manual-fields.txt 1554 2007-02-27 03:31:56Z edloper $ -->
+<p>Fields are used to describe specific properties of a documented object. For
+example, fields can be used to define the parameters and return value of a
+function; the instance variables of a class; and the author of a module. Each
+field consists of a <em>tag</em>, an optional <em>argument</em>, and a <em>body</em>.</p>
+<ul class="simple">
+<li>The <em>tag</em> is a case-insensitive word that indicates what kind of
+documentation is given by the field.</li>
+<li>The optional <em>argument</em> specifies what object, parameter, or group is
+documented by the field.</li>
+<li>The <em>body</em> contains the main contents of the field.</li>
+</ul>
+<div class="section" id="field-markup">
+<h2><a class="toc-backref" href="#id62">5.1   Field Markup</a></h2>
+<p>Each docstring markup langauge marks fields differently. The following table
+shows the basic fields syntax for each markup language. For more information,
+see the definition of field syntax for each markup language.</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="33%" />
+<col width="33%" />
+<col width="33%" />
+</colgroup>
+<thead valign="bottom">
+<tr><th class="head">Epytext</th>
+<th class="head">reStructuredText</th>
+<th class="head">Javadoc</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr><td><pre class="first last literal-block">
+@<em>tag</em>: <em>body</em>...
+@<em>tag</em> <em>arg</em>: <em>body</em>...
+</pre>
+</td>
+<td><pre class="first last literal-block">
+:<em>tag</em>: <em>body</em>...
+:<em>tag</em> <em>arg</em>: <em>body</em>...
+</pre>
+</td>
+<td><pre class="first last literal-block">
+@<em>tag</em> <em>body</em>...
+@<em>tag</em> <em>arg</em> <em>body</em>...
+</pre>
+</td>
+</tr>
+<tr><td><a class="reference internal" href="#fields">Definition of epytext fields</a></td>
+<td><a class="reference external" href="http://docutils.sourceforge.net/spec/rst/reStructuredText.html#field-lists">Definition of ReStructuredText fields</a></td>
+<td><a class="reference external" href="http://java.sun.com/j2se/1.4.2/docs/tooldocs/solaris/javadoc.html#javadoctags">Definition of Javadoc fields</a></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="supported-fields">
+<h2><a class="toc-backref" href="#id63">5.2   Supported Fields</a></h2>
+<p>The following table lists the fields that epydoc currently recognizes. Field
+tags are written using epytext markup; if you are using a different markup
+language, then you should adjust the markup accordingly.</p>
+<div class="section" id="functions-and-methods-parameters">
+<h3><a class="toc-backref" href="#id64">5.2.1   Functions and Methods parameters</a></h3>
+<dl class="docutils">
+<dt><tt class="docutils literal"><span class="pre">@param</span></tt> <em>p</em>: ...</dt>
+<dd>A description of the parameter <em>p</em> for a function or method.</dd>
+<dt><tt class="docutils literal"><span class="pre">@type</span></tt> <em>p</em>: ...</dt>
+<dd>The expected type for the parameter <em>p</em>.</dd>
+<dt><tt class="docutils literal"><span class="pre">@return</span></tt>: ...</dt>
+<dd>The return value for a function or method.</dd>
+<dt><tt class="docutils literal"><span class="pre">@rtype</span></tt>: ...</dt>
+<dd>The type of the return value for a function or method.</dd>
+<dt><tt class="docutils literal"><span class="pre">@keyword</span></tt> <em>p</em>: ...</dt>
+<dd>A description of the keyword parameter <em>p</em>.</dd>
+<dt><tt class="docutils literal"><span class="pre">@raise</span></tt> <em>e</em>: ...</dt>
+<dd>A description of the circumstances under which a function or method
+raises exception <em>e</em>.</dd>
+</dl>
+<p>These tags can be used to specify attributes of parameters and return value
+of function and methods. These tags are usually put in the the docstring of the
+function to be documented.</p>
+<div class="note">
+<p class="first admonition-title">Note</p>
+<p><strong>constructor parameters</strong></p>
+<p class="last">In C extension modules, extension classes cannot have a docstring attached
+to the <tt class="docutils literal"><span class="pre">__init__</span></tt> function; consequently it is not possible to document
+parameters and exceptions raised by the class constructor. To overcome this
+shortcoming, the tags <tt class="docutils literal"><span class="pre">@param</span></tt>, <tt class="docutils literal"><span class="pre">@keyword</span></tt>, <tt class="docutils literal"><span class="pre">@type</span></tt>, <tt class="docutils literal"><span class="pre">@exception</span></tt>
+are also allowed to appear in the class docstring. In this case they refer
+to constructor parameters.</p>
+</div>
+<p><tt class="docutils literal"><span class="pre">@param</span></tt> fields should be used to document any explicit parameter
+(including the keyword parameter). <tt class="docutils literal"><span class="pre">@keyword</span></tt> fields should only be used
+for non-explicit keyword parameters:</p>
+<pre class="py-doctest">
+<span class="py-keyword">def</span> <span class="py-defname">plant</span>(seed, *tools, **options):
+    <span class="py-string">"""</span>
+<span class="py-string">    @param seed: The seed that should be planted.</span>
+<span class="py-string">    @param tools: Tools that should be used to plant the seed.</span>
+<span class="py-string">    @param options: Any extra options for the planting.</span>
+
+<span class="py-string">    @keyword dig_deep: Plant the seed deep under ground.</span>
+<span class="py-string">    @keyword soak: Soak the seed before planting it.</span>
+<span class="py-string">    """</span>
+    <span class="py-comment">#[...]</span></pre>
+<p>Since the <tt class="docutils literal"><span class="pre">@type</span></tt> field allows for arbitrary text, it does not
+automatically create a crossreference link to the specified type, and is
+not written in fixed-width font by default. If you want to create a
+crossreference link to the type, or to write the type in a fixed-width
+font, then you must use inline markup:</p>
+<pre class="py-doctest">
+<span class="py-keyword">def</span> <span class="py-defname">ponder</span>(person, time):
+    <span class="py-string">"""</span>
+<span class="py-string">    @param person: Who should think.</span>
+<span class="py-string">    @type person: L{Person} or L{Animal}</span>
+<span class="py-string">    @param time: How long they should think.</span>
+<span class="py-string">    @type time: C{int} or C{float}</span>
+<span class="py-string">    """</span>
+    <span class="py-comment">#[...]</span></pre>
+</div>
+<div class="section" id="variables-parameters">
+<h3><a class="toc-backref" href="#id65">5.2.2   Variables parameters</a></h3>
+<dl class="docutils">
+<dt><tt class="docutils literal"><span class="pre">@ivar</span></tt> <em>v</em>: ...</dt>
+<dd>A description of the class instance variable <em>v</em>.</dd>
+<dt><tt class="docutils literal"><span class="pre">@cvar</span></tt> <em>v</em>: ...</dt>
+<dd>A description of the static class variable <em>v</em>.</dd>
+<dt><tt class="docutils literal"><span class="pre">@var</span></tt> <em>v</em>: ...</dt>
+<dd>A description of the module variable <em>v</em>.</dd>
+<dt><tt class="docutils literal"><span class="pre">@type</span></tt> <em>v</em>: ...</dt>
+<dd>The type of the variable <em>v</em>.</dd>
+</dl>
+<p>These tags are usually put in a module or class docstring. If the sources can
+be parsed by Epydoc it is also possible to document the variable in their own
+docstrings: see <a class="reference internal" href="#variable-docstrings">variable docstrings</a></p>
+<p>Epydoc considers class variables the ones defined directly defined in the
+class body. A common Python idiom is to create instance variables settings
+their default value in the class instead of the constructor (hopefully if the
+default is immutable...).</p>
+<p>If you want to force Epydoc to classify as instance variable one whose default
+value is set at class level, you can describe it using the tag <tt class="docutils literal"><span class="pre">@ivar</span></tt> in the
+context of a variable docstring:</p>
+<pre class="py-doctest">
+<span class="py-keyword">class</span> <span class="py-defname">B</span>:
+    y = 42
+    <span class="py-string">"""@ivar: This is an instance variable."""</span></pre>
+</div>
+<div class="section" id="properties-parameters">
+<h3><a class="toc-backref" href="#id66">5.2.3   Properties parameters</a></h3>
+<dl class="docutils">
+<dt><tt class="docutils literal"><span class="pre">@type</span></tt>: ...</dt>
+<dd>The type of the property.</dd>
+</dl>
+<p>The <tt class="docutils literal"><span class="pre">@type</span></tt> tag can be attached toa property docstring to specify its type.</p>
+</div>
+<div class="section" id="grouping-and-sorting">
+<h3><a class="toc-backref" href="#id67">5.2.4   Grouping and Sorting</a></h3>
+<dl class="docutils">
+<dt><tt class="docutils literal"><span class="pre">@group</span></tt> <em>g</em>: <em>c1,...,cn</em></dt>
+<dd>Organizes a set of related children of a module or class into a group.
+<em>g</em> is the name of the group; and <em>c1,...,cn</em> are the names of the
+children in the group. To define multiple groups, use multiple group
+fields.</dd>
+<dt><tt class="docutils literal"><span class="pre">@sort</span></tt>: <em>c1,...,cn</em></dt>
+<dd>Specifies the sort order for the children of a module or class.
+<em>c1,...,cn</em> are the names of the children, in the order in which they
+should appear. Any children that are not included in this list will
+appear after the children from this list, in alphabetical order.</dd>
+</dl>
+<p>These tags can be used to present groups of related items in a logical way.
+They apply to modules and classes docstrings.</p>
+<p>For the <tt class="docutils literal"><span class="pre">@group</span></tt> and <tt class="docutils literal"><span class="pre">@sort</span></tt> tags, asterisks (<tt class="docutils literal"><span class="pre">*</span></tt>) can be used to
+specify multiple children at once. An asterisk in a child name will match
+any substring:</p>
+<pre class="py-doctest">
+<span class="py-keyword">class</span> <span class="py-defname">widget</span>(size, weight, age):
+    <span class="py-string">"""</span>
+<span class="py-string">    @group Tools: zip, zap, *_tool</span>
+<span class="py-string">    @group Accessors: get_*</span>
+<span class="py-string">    @sort: get_*, set_*, unpack_*, cut</span>
+<span class="py-string">    """</span>
+    <span class="py-comment">#[...]</span></pre>
+<div class="note">
+<p class="first admonition-title">Note</p>
+<p><strong>group markers</strong></p>
+<p>It is also possible to group set of related items enclosing them
+into special comment starting with the <em>group markers</em> '<tt class="docutils literal"><span class="pre">#{</span></tt>' and '<tt class="docutils literal"><span class="pre">#}</span></tt>'
+The group title can be specified after the opening group marker. Example:</p>
+<pre class="py-doctest">
+<span class="py-comment">#{ Database access functions</span>
+
+<span class="py-keyword">def</span> <span class="py-defname">read</span>(id):
+    <span class="py-comment">#[...]</span>
+
+<span class="py-keyword">def</span> <span class="py-defname">store</span>(item):
+    <span class="py-comment">#[...]</span>
+
+<span class="py-keyword">def</span> <span class="py-defname">delete</span>(id):
+    <span class="py-comment">#[...]</span>
+
+<span class="py-comment"># groups can't be nested, so a closing marker is not required here.</span>
+
+<span class="py-comment">#{ Web publish functions</span>
+
+<span class="py-keyword">def</span> <span class="py-defname">get</span>(request):
+    <span class="py-comment">#[...]</span>
+
+<span class="py-keyword">def</span> <span class="py-defname">post</span>(request):
+    <span class="py-comment">#[...]</span>
+
+<span class="py-comment">#}</span></pre>
+</div>
+</div>
+<div class="section" id="notes-and-warnings">
+<h3><a class="toc-backref" href="#id68">5.2.5   Notes and Warnings</a></h3>
+<dl class="docutils">
+<dt><tt class="docutils literal"><span class="pre">@note</span></tt>: ...</dt>
+<dd>A note about an object. Multiple note fields may be used to list
+separate notes.</dd>
+<dt><tt class="docutils literal"><span class="pre">@attention</span></tt>: ...</dt>
+<dd>An important note about an object. Multiple attention fields may be
+used to list separate notes.</dd>
+<dt><tt class="docutils literal"><span class="pre">@bug</span></tt>: ...</dt>
+<dd><p class="first">A description of a bug in an object. Multiple bug fields may be used to
+report separate bugs.</p>
+<div class="note last">
+<p class="first admonition-title">Note</p>
+<p class="last">If any <tt class="docutils literal"><span class="pre">@bug</span></tt> field is used, the HTML writer will generate a the page
+<tt class="docutils literal"><span class="pre">bug-index.html</span></tt>, containing links to all the items tagged with
+the field.</p>
+</div>
+</dd>
+<dt><tt class="docutils literal"><span class="pre">@warning</span></tt>: ...</dt>
+<dd>A warning about an object. Multiple warning fields may be used to
+report separate warnings.</dd>
+</dl>
+</div>
+<div class="section" id="status">
+<h3><a class="toc-backref" href="#id69">5.2.6   Status</a></h3>
+<dl class="docutils">
+<dt><tt class="docutils literal"><span class="pre">@version</span></tt>: ...</dt>
+<dd>The current version of an object.</dd>
+<dt><tt class="docutils literal"><span class="pre">@todo</span></tt> [<em>ver</em>]: ...</dt>
+<dd><p class="first">A planned change to an object. If the optional argument ver is given,
+then it specifies the version for which the change will be made.
+Multiple todo fields may be used if multiple changes are planned.</p>
+<div class="note last">
+<p class="first admonition-title">Note</p>
+<p class="last">If any <tt class="docutils literal"><span class="pre">@todo</span></tt> field is used, the HTML writer will generate a the
+page <tt class="docutils literal"><span class="pre">todo-index.html</span></tt>, containing links to all the items tagged
+with the field.</p>
+</div>
+</dd>
+<dt><tt class="docutils literal"><span class="pre">@deprecated</span></tt>: ...</dt>
+<dd>Indicates that an object is deprecated. The body of the field describe
+the reason why the object is deprecated.</dd>
+<dt><tt class="docutils literal"><span class="pre">@since</span></tt>: ...</dt>
+<dd>The date or version when an object was first introduced.</dd>
+<dt><tt class="docutils literal"><span class="pre">@status</span></tt>: ...</dt>
+<dd>The current status of an object.</dd>
+<dt><tt class="docutils literal"><span class="pre">@change</span></tt>: ...</dt>
+<dd>A change log entry for this object.</dd>
+<dt><tt class="docutils literal"><span class="pre">@permission</span></tt>: ...</dt>
+<dd>The object access permission, for systems such Zope/Plone supporting
+this concept. It may be used more than once to specify multiple
+permissions.</dd>
+</dl>
+</div>
+<div class="section" id="formal-conditions">
+<h3><a class="toc-backref" href="#id70">5.2.7   Formal Conditions</a></h3>
+<dl class="docutils">
+<dt><tt class="docutils literal"><span class="pre">@requires</span></tt>: ...</dt>
+<dd>A requirement for using an object. Multiple requires fields may be
+used if an object has multiple requirements.</dd>
+<dt><tt class="docutils literal"><span class="pre">@precondition</span></tt>: ...</dt>
+<dd>A condition that must be true before an object is used. Multiple
+precondition fields may be used if an object has multiple preconditions.</dd>
+<dt><tt class="docutils literal"><span class="pre">@postcondition</span></tt>: ...</dt>
+<dd>A condition that is guaranteed to be true after an object is used.
+Multiple postcondition fields may be used if an object has multiple
+postconditions.</dd>
+<dt><tt class="docutils literal"><span class="pre">@invariant</span></tt>: ...</dt>
+<dd>A condition which should always be true for an object. Multiple
+invariant fields may be used if an object has multiple invariants.</dd>
+</dl>
+</div>
+<div class="section" id="bibliographic-information">
+<h3><a class="toc-backref" href="#id71">5.2.8   Bibliographic Information</a></h3>
+<dl class="docutils">
+<dt><tt class="docutils literal"><span class="pre">@author</span></tt>: ...</dt>
+<dd>The author(s) of an object. Multiple author fields may be used if an
+object has multiple authors.</dd>
+<dt><tt class="docutils literal"><span class="pre">@organization</span></tt>: ...</dt>
+<dd>The organization that created or maintains an object.</dd>
+<dt><tt class="docutils literal"><span class="pre">@copyright</span></tt>: ...</dt>
+<dd>The copyright information for an object.</dd>
+<dt><tt class="docutils literal"><span class="pre">@license</span></tt>: ...</dt>
+<dd>The licensing information for an object.</dd>
+<dt><tt class="docutils literal"><span class="pre">@contact</span></tt>: ...</dt>
+<dd>Contact information for the author or maintainer of a module, class,
+function, or method. Multiple contact fields may be used if an object
+has multiple contacts.</dd>
+</dl>
+</div>
+<div class="section" id="other-fields">
+<h3><a class="toc-backref" href="#id72">5.2.9   Other fields</a></h3>
+<dl class="docutils">
+<dt><tt class="docutils literal"><span class="pre">@summary</span></tt>: ...</dt>
+<dd>A summary description for an object. This description overrides the
+default summary (which is constructed from the first sentence of the
+object's description).</dd>
+<dt><tt class="docutils literal"><span class="pre">@see</span></tt>: ...</dt>
+<dd>A description of a related topic. see fields typically use
+documentation crossreference links or external hyperlinks that link to
+the related topic.</dd>
+</dl>
+</div>
+</div>
+<div class="section" id="fields-synonyms">
+<h2><a class="toc-backref" href="#id73">5.3   Fields synonyms</a></h2>
+<p>Several fields have <em>synonyms</em>, or alternate tags. The following table lists
+all field synonyms. Field tags are written using epytext markup; if you are
+using a different markup language, then you should adjust the markup
+accordingly.</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="50%" />
+<col width="50%" />
+</colgroup>
+<thead valign="bottom">
+<tr><th class="head">Name</th>
+<th class="head">Synonims</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr><td><tt class="docutils literal"><span class="pre">@param</span></tt> <em>p</em>: ...</td>
+<td><div class="first last line-block">
+<div class="line"><tt class="docutils literal"><span class="pre">@parameter</span></tt> <em>p</em>: ...</div>
+<div class="line"><tt class="docutils literal"><span class="pre">@arg</span></tt> <em>p</em>: ...</div>
+<div class="line"><tt class="docutils literal"><span class="pre">@argument</span></tt> <em>p</em>: ...</div>
+</div>
+</td>
+</tr>
+<tr><td><tt class="docutils literal"><span class="pre">@return</span></tt>: ...</td>
+<td><tt class="docutils literal"><span class="pre">@returns</span></tt>: ...</td>
+</tr>
+<tr><td><tt class="docutils literal"><span class="pre">@rtype</span></tt>: ...</td>
+<td><tt class="docutils literal"><span class="pre">@returntype</span></tt>: ...</td>
+</tr>
+<tr><td><tt class="docutils literal"><span class="pre">@raise</span></tt> <em>e</em>: ...</td>
+<td><div class="first last line-block">
+<div class="line"><tt class="docutils literal"><span class="pre">@raises</span></tt> <em>e</em>: ...</div>
+<div class="line"><tt class="docutils literal"><span class="pre">@except</span></tt> <em>e</em>: ...</div>
+<div class="line"><tt class="docutils literal"><span class="pre">@exception</span></tt> <em>e</em>: ...</div>
+</div>
+</td>
+</tr>
+<tr><td><tt class="docutils literal"><span class="pre">@keyword</span></tt> <em>p</em>: ...</td>
+<td><div class="first last line-block">
+<div class="line"><tt class="docutils literal"><span class="pre">@kwarg</span></tt> <em>p</em>: ...</div>
+<div class="line"><tt class="docutils literal"><span class="pre">@kwparam</span></tt> <em>p</em>: ...</div>
+</div>
+</td>
+</tr>
+<tr><td><tt class="docutils literal"><span class="pre">@ivar</span></tt> <em>v</em>: ...</td>
+<td><tt class="docutils literal"><span class="pre">@ivariable</span></tt> <em>v</em>: ...</td>
+</tr>
+<tr><td><tt class="docutils literal"><span class="pre">@cvar</span></tt> <em>v</em>: ...</td>
+<td><tt class="docutils literal"><span class="pre">@cvariable</span></tt> <em>v</em>: ...</td>
+</tr>
+<tr><td><tt class="docutils literal"><span class="pre">@var</span></tt> <em>v</em>: ...</td>
+<td><tt class="docutils literal"><span class="pre">@variable</span></tt> <em>v</em>: ...</td>
+</tr>
+<tr><td><tt class="docutils literal"><span class="pre">@see</span></tt>: ...</td>
+<td><tt class="docutils literal"><span class="pre">@seealso</span></tt>: ...</td>
+</tr>
+<tr><td><tt class="docutils literal"><span class="pre">@warning</span></tt>: ...</td>
+<td><tt class="docutils literal"><span class="pre">@warn</span></tt>: ...</td>
+</tr>
+<tr><td><tt class="docutils literal"><span class="pre">@requires</span></tt>: ...</td>
+<td><div class="first last line-block">
+<div class="line"><tt class="docutils literal"><span class="pre">@require</span></tt>: ...</div>
+<div class="line"><tt class="docutils literal"><span class="pre">@requirement</span></tt>: ...</div>
+</div>
+</td>
+</tr>
+<tr><td><tt class="docutils literal"><span class="pre">@precondition</span></tt>: ...</td>
+<td><tt class="docutils literal"><span class="pre">@precond</span></tt>: ...</td>
+</tr>
+<tr><td><tt class="docutils literal"><span class="pre">@postcondition</span></tt>: ...</td>
+<td><tt class="docutils literal"><span class="pre">@postcond</span></tt>: ...</td>
+</tr>
+<tr><td><tt class="docutils literal"><span class="pre">@organization</span></tt>: ...</td>
+<td><tt class="docutils literal"><span class="pre">@org</span></tt>: ...</td>
+</tr>
+<tr><td><tt class="docutils literal"><span class="pre">@copyright</span></tt>: ...</td>
+<td><tt class="docutils literal"><span class="pre">@(c)</span></tt>: ...</td>
+</tr>
+<tr><td><tt class="docutils literal"><span class="pre">@change</span></tt>: ...</td>
+<td><tt class="docutils literal"><span class="pre">@changed</span></tt>: ...</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="module-metadata-variables">
+<h2><a class="toc-backref" href="#id74">5.4   Module metadata variables</a></h2>
+<p>Some module variables are commonly used as module metadata. Epydoc can use the
+value provided by these variables as alternate form for tags. The following
+table lists the recognized variables and the tag they replace. Customized
+metadata variables can be added using the method described in <a class="reference internal" href="#adding-new-fields">Adding New
+Fields</a>.</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="50%" />
+<col width="50%" />
+</colgroup>
+<thead valign="bottom">
+<tr><th class="head">Tag</th>
+<th class="head">Variable</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr><td><tt class="docutils literal"><span class="pre">@author</span></tt></td>
+<td><tt class="docutils literal"><span class="pre">__author__</span></tt></td>
+</tr>
+<tr><td><tt class="docutils literal"><span class="pre">@authors</span></tt></td>
+<td><tt class="docutils literal"><span class="pre">__authors__</span></tt></td>
+</tr>
+<tr><td><tt class="docutils literal"><span class="pre">@contact</span></tt></td>
+<td><tt class="docutils literal"><span class="pre">__contact__</span></tt></td>
+</tr>
+<tr><td><tt class="docutils literal"><span class="pre">@copyright</span></tt></td>
+<td><tt class="docutils literal"><span class="pre">__copyright__</span></tt></td>
+</tr>
+<tr><td><tt class="docutils literal"><span class="pre">@license</span></tt></td>
+<td><tt class="docutils literal"><span class="pre">__license__</span></tt></td>
+</tr>
+<tr><td><tt class="docutils literal"><span class="pre">@deprecated</span></tt></td>
+<td><tt class="docutils literal"><span class="pre">__deprecated__</span></tt></td>
+</tr>
+<tr><td><tt class="docutils literal"><span class="pre">@date</span></tt></td>
+<td><tt class="docutils literal"><span class="pre">__date__</span></tt></td>
+</tr>
+<tr><td><tt class="docutils literal"><span class="pre">@version</span></tt></td>
+<td><tt class="docutils literal"><span class="pre">__version__</span></tt></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="adding-new-fields">
+<h2><a class="toc-backref" href="#id75">5.5   Adding New Fields</a></h2>
+<p>New fields can be defined for the docstrings in a module using the special
+<tt class="docutils literal"><span class="pre">@newfield</span></tt> tag (or its synonym, <tt class="docutils literal"><span class="pre">@deffield</span></tt>). This tag has the following
+syntax:</p>
+<blockquote>
+<pre class="literal-block">
+@newfield <em>tag</em>: <em>label</em> [, <em>plural</em> ]
+</pre>
+</blockquote>
+<p>Where <em>tag</em> is the new tag that's being defined; <em>label</em> is a string that will
+be used to mark this field in the generated output; and plural is the plural form
+of label, if different.</p>
+<p>New fields can be defined in any Python module. If they are defined in a
+package, it will be possible to use the newly defined tag from every package
+submodule.</p>
+<p>Each new field will also define a <a class="reference internal" href="#module-metadata-variables">metadata variable</a> which can be used
+to set the field value instead of the tag. For example, if a <em>revision</em>
+tag has been defined with:</p>
+<pre class="literal-block">
+@newfield revision: Revision
+</pre>
+<p>then it will be possible to set a value for the field using a module variable:</p>
+<pre class="py-doctest">
+__revision__ = <span class="py-string">"1234"</span></pre>
+<p>The following example illustrates how the @newfield can be used:
+Docstring Input Rendered Output</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="50%" />
+<col width="50%" />
+</colgroup>
+<thead valign="bottom">
+<tr><th class="head">Docstring Input</th>
+<th class="head">Rendered Output</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr><td><pre class="py-doctest">
+<span class="py-string">"""</span>
+<span class="py-string">@newfield corpus: Corpus, Corpora</span>
+<span class="py-string">"""</span>
+
+<span class="py-keyword">def</span> <span class="py-defname">example</span>():
+    <span class="py-string">"""</span>
+<span class="py-string">    @corpus: Bob's wordlist.</span>
+<span class="py-string">    @corpus: The British National Corpus.</span>
+<span class="py-string">    """</span>
+    [...]</pre>
+</td>
+<td><p class="first"><strong>Corpora:</strong></p>
+<ul class="last simple">
+<li>Bob's wordlist.</li>
+<li>The British National Corpus.</li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+<div class="note">
+<p class="first admonition-title">Note</p>
+<p class="last">The module-level variable <tt class="docutils literal"><span class="pre">__extra_epydoc_fields__</span></tt> is deprecated;
+use <tt class="docutils literal"><span class="pre">@newfield</span></tt> instead.</p>
+</div>
+</div>
+</div>
+<div class="section" id="alternate-markup-languages">
+<h1><a class="toc-backref" href="#id76">6   Alternate Markup Languages</a></h1>
+<!-- $Id: manual-othermarkup.txt 1598 2007-09-06 13:02:50Z dvarrazzo $ -->
+<p>Epydoc's default markup language is <a class="reference internal" href="#the-epytext-markup-language">epytext</a>, a lightweight markup language
+that's easy to write and to understand. But if epytext is not powerful enough
+for you, or doesn't suit your needs, epydoc also supports three alternate
+markup languages:</p>
+<dl class="docutils">
+<dt><a class="reference external" href="http://docutils.sourceforge.net/rst.html">reStructuredText</a></dt>
+<dd>is an "easy-to-read, what-you-see-is-what-you-get plaintext markup syntax".
+It is more powerful than epytext (e.g., it includes markup for tables and
+footnotes); but it is also more complex, and sometimes harder to read.</dd>
+<dt><a class="reference external" href="http://java.sun.com/j2se/javadoc/">Javadoc</a></dt>
+<dd>is a documentation markup language that was developed for Java. It consists
+of HTML, augmented by a set of special tagged fields.</dd>
+<dt>Plaintext docstrings</dt>
+<dd>are rendered verbatim (preserving whitespace).</dd>
+</dl>
+<p>To specify the markup language for a module, you should define a module-level
+string variable <tt class="docutils literal"><span class="pre">__docformat__</span></tt>, containing the name of the module's markup
+language. The name of the markup language may optionally be followed by a
+language code (such as <tt class="docutils literal"><span class="pre">en</span></tt> for English). Conventionally, the definition of
+the <tt class="docutils literal"><span class="pre">__docformat__</span></tt> variable immediately follows the module's docstring:</p>
+<pre class="py-doctest">
+<span class="py-comment"># widget.py</span>
+<span class="py-string">"""</span>
+<span class="py-string">Graphical support for `gizmos` and `widgets`.</span>
+<span class="py-string">"""</span>
+__docformat__ = <span class="py-string">"restructuredtext en"</span>
+<span class="py-comment">#[...]</span></pre>
+<p>To change the default markup language from the command line, use the
+<tt class="docutils literal"><span class="pre">--docformat</span></tt> option. For example, the following command generates API
+documentation for the existing regular expression package <tt class="docutils literal"><span class="pre">re</span></tt>, which uses
+plaintext markup:</p>
+<pre class="literal-block">
+[epydoc]$ epydoc --docformat plaintext re
+</pre>
+<div class="section" id="id13">
+<h2><a class="toc-backref" href="#id77">6.1   reStructuredText</a></h2>
+<p>reStructuredText is a markup language that was developed in conjunction with
+<a class="reference external" href="http://docutils.sourceforge.net/">Docutils</a>. In order to parse reStructuredText docstrings, Docutils 0.3 or
+higher must be installed. If Docutils is not installed, then reStructuredText
+docstrings will be rendered as plaintext. Docutils can be downloaded from the
+<a class="reference external" href="http://sourceforge.net/project/showfiles.php?group_id=38414">Docutils SourceForge page</a>.</p>
+<div class="section" id="default-role">
+<h3><a class="toc-backref" href="#id78">6.1.1   Default role</a></h3>
+<p>Epydoc replaces the Docutils' default <a class="reference external" href="http://docutils.sourceforge.net/docs/ref/rst/roles.html">interpreted text role</a> with
+the creation of  <a class="reference internal" href="#documentation-crossreference-links">documentation crossreference links</a>. If you want to create
+a crossreference link to the <tt class="docutils literal"><span class="pre">somemod.Example</span></tt> class, you can put backquotes
+around your test, typing:</p>
+<pre class="literal-block">
+`somemod.Example`
+</pre>
+</div>
+<div class="section" id="consolidated-fields">
+<h3><a class="toc-backref" href="#id79">6.1.2   Consolidated Fields</a></h3>
+<p>In addition to the <a class="reference internal" href="#epydoc-fields">standard set of fields</a>, the reStructruedText parser also
+supports <em>consolidated fields</em>, which combine the documentation for several
+objects into a single field. For example, a single <tt class="docutils literal"><span class="pre">:Parameters:</span></tt> field is
+often used to describe all of the parameters for a function or method:</p>
+<pre class="py-doctest">
+<span class="py-keyword">def</span> <span class="py-defname">fox_speed</span>(size, weight, age):
+    <span class="py-string">"""</span>
+<span class="py-string">    Return the maximum speed for a fox.</span>
+
+<span class="py-string">    :Parameters:</span>
+<span class="py-string">    - `size`: The size of the fox (in meters)</span>
+<span class="py-string">    - `weight`: The weight of the fox (in stones)</span>
+<span class="py-string">    - `age`: The age of the fox (in years)</span>
+<span class="py-string">    """</span>
+    <span class="py-comment">#[...]</span></pre>
+<p>Epydoc will automatically extract information about each parameter from this
+list. These <em>consolidated fields</em> may be written using either a <a class="reference external" href="http://docutils.sourceforge.net/docs/user/rst/quickref.html#bullet-lists">bulleted
+list</a> or a <a class="reference external" href="http://docutils.sourceforge.net/docs/user/rst/quickref.html#definition-lists">definition list</a>.</p>
+<ul class="simple">
+<li>If a consolidated field is written as a <em>bulleted list</em>, then each list item
+must begin with the field's argument, marked as <a class="reference external" href="http://docutils.sourceforge.net/docs/user/rst/quickref.html#inline-markup">interpreted text</a>, and
+followed by a colon or dash.</li>
+<li>If a consolidated field is written as a <em>definition list</em>, then each
+definition item's term should contain the field's argument, (it is not
+mandatory for it being marked as interpreted text).</li>
+</ul>
+<p>The term classifier, if present, is used to specify the associated type. The
+following example shows the use of a definition list to define a consolidated
+field (note that docutils requires a space before and after the '<tt class="docutils literal"><span class="pre">:</span></tt>' used
+to mark classifiers).</p>
+<pre class="py-doctest">
+<span class="py-keyword">def</span> <span class="py-defname">fox_speed</span>(size, weight, age):
+    <span class="py-string">"""</span>
+<span class="py-string">    Return the maximum speed for a fox.</span>
+
+<span class="py-string">    :Parameters:</span>
+<span class="py-string">      size</span>
+<span class="py-string">        The size of the fox (in meters)</span>
+<span class="py-string">      weight : float</span>
+<span class="py-string">        The weight of the fox (in stones)</span>
+<span class="py-string">      age : int</span>
+<span class="py-string">        The age of the fox (in years)</span>
+<span class="py-string">    """</span>
+    <span class="py-comment">#[...]</span></pre>
+<p>The following consolidated fields are currently supported by epydoc:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="50%" />
+<col width="50%" />
+</colgroup>
+<thead valign="bottom">
+<tr><th class="head">Consolidated Field Tag</th>
+<th class="head">Corresponding Base Field Tag</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr><td><tt class="docutils literal"><span class="pre">:Parameters:</span></tt></td>
+<td><tt class="docutils literal"><span class="pre">:param:</span></tt></td>
+</tr>
+<tr><td><tt class="docutils literal"><span class="pre">:Exceptions:</span></tt></td>
+<td><tt class="docutils literal"><span class="pre">:except:</span></tt></td>
+</tr>
+<tr><td><tt class="docutils literal"><span class="pre">:Groups:</span></tt></td>
+<td><tt class="docutils literal"><span class="pre">:group:</span></tt></td>
+</tr>
+<tr><td><tt class="docutils literal"><span class="pre">:Keywords:</span></tt></td>
+<td><tt class="docutils literal"><span class="pre">:keyword:</span></tt></td>
+</tr>
+<tr><td><tt class="docutils literal"><span class="pre">:Variables:</span></tt></td>
+<td><tt class="docutils literal"><span class="pre">:var:</span></tt></td>
+</tr>
+<tr><td><tt class="docutils literal"><span class="pre">:IVariables:</span></tt></td>
+<td><tt class="docutils literal"><span class="pre">:ivar:</span></tt></td>
+</tr>
+<tr><td><tt class="docutils literal"><span class="pre">:CVariables:</span></tt></td>
+<td><tt class="docutils literal"><span class="pre">:cvar:</span></tt></td>
+</tr>
+<tr><td><tt class="docutils literal"><span class="pre">:Types:</span></tt></td>
+<td><tt class="docutils literal"><span class="pre">:type:</span></tt></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="graph-directives">
+<h3><a class="toc-backref" href="#id80">6.1.3   Graph directives</a></h3>
+<p>The epydoc reStructuredText reader defines several custom <cite>directives</cite>, which
+can be used to automatically generate a variety of graphs. The following custom
+directives are currently defined:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="30%" />
+<col width="70%" />
+</colgroup>
+<thead valign="bottom">
+<tr><th class="head">Directive</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr><td><pre class="first last literal-block">
+.. classtree:: [<em>classes...</em>]
+    :dir: <em>up|down|left|right</em>
+</pre>
+</td>
+<td>Display a class hierarchy for the given class or classes (including all
+superclasses & subclasses). If no class is specified, and the directive
+is used in a class's docstring, then that class's class hierarchy will
+be displayed. The <tt class="docutils literal"><span class="pre">dir</span></tt> option specifies the orientation for the graph
+(default=<tt class="docutils literal"><span class="pre">down</span></tt>).</td>
+</tr>
+<tr><td><pre class="first last literal-block">
+.. packagetree:: [<em>modules...</em>]
+    :dir: <em>up|down|left|right</em>
+    :style: <em>uml|tree</em>
+</pre>
+</td>
+<td>Display a package hierarchy for the given module or modules (including
+all subpackages and submodules). If no module is specified, and the
+directive is used in a module's docstring, then that module's package
+hierarchy will be displayed. The <tt class="docutils literal"><span class="pre">dir</span></tt> option specifies the
+orientation for the graph (default=<tt class="docutils literal"><span class="pre">down</span></tt>). The <tt class="docutils literal"><span class="pre">style</span></tt> option
+specifies whether packages should be displayed in a tree, or using
+nested UML symbols.</td>
+</tr>
+<tr><td><pre class="first last literal-block">
+.. importgraph:: [<em>modules...</em>]
+    :dir: <em>up|down|left|right</em>
+</pre>
+</td>
+<td>Display an import graph for the given module or modules. If no module
+is specified, and the directive is used in a module's docstring, then
+that module's import graph will be displayed. The <tt class="docutils literal"><span class="pre">dir</span></tt> option
+specifies the orientation for the graph (default=<tt class="docutils literal"><span class="pre">left</span></tt>).</td>
+</tr>
+<tr><td><pre class="first last literal-block">
+.. callgraph:: [<em>functions...</em>]
+    :dir: <em>up|down|left|right</em>
+</pre>
+</td>
+<td>Display a call graph for the given function or functions. If no
+function is specified, and the directive is used in a function's
+docstring, then that function's call graph will be displayed. The
+<tt class="docutils literal"><span class="pre">dir</span></tt> option specifies the orientation for the graph (default=<tt class="docutils literal"><span class="pre">right</span></tt>).</td>
+</tr>
+<tr><td><pre class="first last literal-block">
+.. dotgraph:: [<em>title...</em>]
+    :caption: <em>text...</em>
+    <em>graph...</em>
+</pre>
+</td>
+<td>Display a custom Graphviz dot graph. The body of the directive
+(<tt class="docutils literal"><span class="pre">graph...</span></tt>) should contain the body of a dot graph. The optional
+<tt class="docutils literal"><span class="pre">title</span></tt> argument, if specified, is used as the title of the graph.
+The optional <tt class="docutils literal"><span class="pre">caption</span></tt> option can be used to provide a caption for
+the graph.</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="colorized-snippets-directive">
+<h3><a class="toc-backref" href="#id81">6.1.4   Colorized snippets directive</a></h3>
+<p>Using reStructuredText markup it is possible to specify Python snippets in a
+<a class="reference external" href="http://docutils.sourceforge.net/docs/user/rst/quickref.html#bullet-lists">doctest block</a>. SUch block will be colorized as in epytext <a class="reference internal" href="#doctest-blocks">Doctest Blocks</a>.</p>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">def</span> <span class="py-defname">double</span>(x):
+<span class="py-more">... </span>    return x * 2
+<span class="py-more">...</span>
+<span class="py-prompt">>>> </span><span class="py-keyword">print</span> double(8)
+<span class="py-output">16</span></pre>
+<p>Doctest block are mostly useful to be run as a part of automatized test suite
+using the <a class="reference external" href="http://docs.python.org/lib/module-doctest.html">doctest</a> module. If the Python prompt gets in your way when you try
+to copy and paste and you are not interested in self-testing docstrings, the
+<tt class="docutils literal"><span class="pre">python</span></tt> directive will let you obtain a simple block of colorized text:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="50%" />
+<col width="50%" />
+</colgroup>
+<thead valign="bottom">
+<tr><th class="head">Docstring Input</th>
+<th class="head">Rendered Output</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr><td><pre class="first last literal-block">
+.. python::
+
+    def fib(n):
+        """Print a Fibonacci series."""
+        a, b = 0, 1
+        while b < n:
+            print b,
+            a, b = b, a+b
+</pre>
+</td>
+<td><pre class="py-doctest">
+<span class="py-keyword">def</span> <span class="py-defname">fib</span>(n):
+    <span class="py-string">"""Print a Fibonacci series."""</span>
+    a, b = 0, 1
+    while b < n:
+        <span class="py-keyword">print</span> b,
+        a, b = b, a+b</pre>
+</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="external-api-links">
+<h3><a class="toc-backref" href="#id82">6.1.5   External API links</a></h3>
+<p>Epydoc can be used to create hyperlinks from your package documentation towards
+objects defined in the API of other packages. Such links are similar to
+ordinary <a class="reference internal" href="#documentation-crossreference-links">documentation crossreference links</a>, but it is required to configure
+Epydoc setting up a new <a class="reference external" href="http://docutils.sourceforge.net/docs/ref/rst/roles.html">interpreted text role</a>, binding it to an external API.</p>
+<p>To create a new role, the command line option <tt class="docutils literal"><span class="pre">--external-api=</span></tt><em>NAME</em> must
+be used. This option introduces a new interpreted text role called <tt class="docutils literal"><span class="pre">NAME</span></tt>,
+which can be used to refer to objects defined in an external API.</p>
+<p>You can alternatively use a configuration file for this and all the other
+options: see the <a class="reference internal" href="#sample-configuration-file">sample configuration file</a> for a comprehensive example.</p>
+<p>For example, if your program needs to programmatically use the Epydoc package
+itself, your docstrings may refer to functions described by Epydoc API:</p>
+<pre class="literal-block">
+If you want to print a value, you can use
+the :epydoc:`apidoc.pp_apidoc()` function.
+</pre>
+<p>When you will generate the API documentation for such program, you will
+need the option <tt class="docutils literal"><span class="pre">--external-api=epydoc</span></tt> or you will get parsing errors due
+to the unknown role.</p>
+<p>Of course this doesn't help to really create cross references: the
+<tt class="docutils literal"><span class="pre">--external-api</span></tt> option suffices to stop Epydoc complaining about unknown
+roles, but the text is simply rendered in a monotype font and no link is
+created.</p>
+<p>What Epydoc requires to create external API links is a mapping from the names
+of the objects exposed by the API and the URL where such objects are actually
+described. Such mapping must be provided as a text file, with an object name
+and its URL on each line, separated by a <tt class="docutils literal"><span class="pre">tab</span></tt> character. For example the
+Epydoc API documentation may be represented by a file names <tt class="docutils literal"><span class="pre">api-objects.txt</span></tt>
+containing:</p>
+<pre class="literal-block">
+epydoc                          ->  epydoc-module.html
+epydoc.apidoc                   ->  epydoc.apidoc-module.html
+epydoc.apidoc.UNKNOWN           ->  epydoc.apidoc-module.html#UNKNOWN
+epydoc.apidoc._pp_val           ->  epydoc.apidoc-module.html#_pp_val
+epydoc.apidoc.py_src_filename   ->  epydoc.util-module.html#py_src_filename
+epydoc.apidoc.pp_apidoc         ->  epydoc.apidoc-module.html#pp_apidoc
+epydoc.apidoc._pp_list          ->  epydoc.apidoc-module.html#_pp_list
+...                                 ...
+...                                 ...
+</pre>
+<p>Epydoc's HTML writer indeed includes such file in its output: see <a class="reference internal" href="#html-files">HTML
+Files</a> for details.</p>
+<p>You can bind the definition file to the interpreted text role name using
+the command line option <tt class="docutils literal"><span class="pre">--external-api-file=</span></tt><em>NAME:FILENAME</em>.In the
+previous example you can use:</p>
+<pre class="literal-block">
+--external-api-file=epydoc:api-objects.txt
+</pre>
+<p>This helps Epydoc to create relative urls: in the previous example the
+<tt class="docutils literal"><span class="pre">apidoc.pp_apidoc()</span></tt> label will be linked with the
+<tt class="docutils literal"><span class="pre">epydoc.apidoc-module.html#_pp_val</span></tt> URL.</p>
+<p>You can specify a new root for the generated links using the last command line
+option: <tt class="docutils literal"><span class="pre">--external-api-root=</span></tt><em>NAME:STRING</em>. <em>STRING</em> will be attached
+in front of any URL returned by the <em>NAME</em> text role. For example, to let your
+program refer to Epydoc API whose documentation is published at
+<a class="reference external" href="http://epydoc.sourceforge.net/api/">http://epydoc.sourceforge.net/api/</a> you can use the options:</p>
+<pre class="literal-block">
+--external-api-root=epydoc:http://epydoc.sourceforge.net/api/
+</pre>
+<p>this will let your reference <a class="reference external" href="http://epydoc.sourceforge.net/api/epydoc.apidoc-module.html#pp_apidoc"><tt class="docutils literal"><span class="pre">apidoc.pp_apidoc()</span></tt></a> point at the
+right documentation.</p>
+<p>The three options can be used any number of time, effectively allowing to link
+towards all the required external packages.</p>
+<div class="section" id="names-resolution">
+<h4><a class="toc-backref" href="#id83">6.1.5.1   Names resolution</a></h4>
+<p>When an external API link is to be created, the required name is split along
+any separator ('<tt class="docutils literal"><span class="pre">.</span></tt>', '<tt class="docutils literal"><span class="pre">::</span></tt>', '<tt class="docutils literal"><span class="pre">-></span></tt>'). Everything after the first noise
+character (for example after an '<tt class="docutils literal"><span class="pre">(</span></tt>') is discarded.</p>
+<p>The name fragment is looked for in the names defined in the description file:
+first an exact match is attempted; if no name exactly matches the required
+name, a partial match is attempted: the required name is compared with the
+<em>trailing parts</em> of the names in the file.</p>
+<p>If a single name is found in this lookup, then its URL is returned. If the
+name is not found, or if it matches with the trailing part of many defined
+names, a warning is raised and the name is rendered as literal text.</p>
+</div>
+<div class="section" id="linking-from-standalone-documents">
+<h4><a class="toc-backref" href="#id84">6.1.5.2   Linking from standalone documents</a></h4>
+<p>Epydoc provides the script <tt class="docutils literal"><span class="pre">apirst2html.py</span></tt> which allows you to use the
+previously described interpreted text roles from any reST document. The script
+exposes the same interface of the standard Docutils script <tt class="docutils literal"><span class="pre">rst2html.py</span></tt> but
+provides the extra command line options described in <a class="reference internal" href="#external-api-links">External API links</a>.</p>
+<p>With such tool you will be able to create hypertextual documentation of your
+package with direct links to its API.</p>
+</div>
+</div>
+<div class="section" id="indexed-terms-in-restructuredtext">
+<h3><a class="toc-backref" href="#id85">6.1.6   Indexed Terms in reStructuredText</a></h3>
+<p>Epydoc uses <a class="reference internal" href="#indexed-terms">indexed terms</a> to create a table of terms definitions. Indexed
+terms are created using the epytext markup <tt class="docutils literal"><span class="pre">X{...}</span></tt>.</p>
+<p>If you want to create indexed terms in reStructuredText modules,
+you can use the <tt class="docutils literal"><span class="pre">term</span></tt> <a class="reference external" href="http://docutils.sourceforge.net/docs/ref/rst/roles.html">interpreted text role</a>. For example:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="50%" />
+<col width="50%" />
+</colgroup>
+<thead valign="bottom">
+<tr><th class="head">Docstring Input</th>
+<th class="head">Rendered Output</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr><td><pre class="py-doctest">
+<span class="py-keyword">def</span> <span class="py-defname">example</span>():
+    <span class="py-string">"""</span>
+<span class="py-string">    An :term:`index term` is a term that</span>
+<span class="py-string">    should be included in the index.</span>
+<span class="py-string">    """</span>
+    <span class="py-comment">#[...]</span></pre>
+</td>
+<td><p class="first">An <em>index term</em> is a term that should be included in the index.</p>
+<blockquote class="last">
+<table border="1" class="docutils">
+<colgroup>
+<col width="46%" />
+<col width="54%" />
+</colgroup>
+<thead valign="bottom">
+<tr><th class="head" colspan="2">Index</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr><td>index term</td>
+<td><em>example</em></td>
+</tr>
+<tr><td>x intercept</td>
+<td><em>x_intercept</em></td>
+</tr>
+<tr><td>y intercept</td>
+<td><em>x_intercept</em></td>
+</tr>
+</tbody>
+</table>
+</blockquote>
+</td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+<div class="section" id="id15">
+<h2><a class="toc-backref" href="#id86">6.2   Javadoc</a></h2>
+<p><a class="reference external" href="http://java.sun.com/j2se/javadoc/">Javadoc</a> is a markup language developed by Sun Microsystems for documenting
+Java APIs. The epydoc implementation of Javadoc is based on the <a class="reference external" href="http://java.sun.com/j2se/1.4.2/docs/tooldocs/solaris/javadoc.html">Javadoc 1.4.2
+reference documentation</a>. However, there are likely to be some minor incompatibilities between Sun's implementation and epydoc's. Known incompatibilities include:</p>
+<ul class="simple">
+<li>Epydoc does not support the Javadoc block tag <tt class="docutils literal"><span class="pre">@serial</span></tt>.</li>
+<li>Epydoc does not support the following Javadoc inline tags: <tt class="docutils literal"><span class="pre">{@docroot}</span></tt>,
+<tt class="docutils literal"><span class="pre">{@inheritdoc}</span></tt>, <tt class="docutils literal"><span class="pre">{@value}</span></tt>.</li>
+<li>Epydoc adds many field tags that Sun does not include, such as <tt class="docutils literal"><span class="pre">@var</span></tt>,
+<tt class="docutils literal"><span class="pre">@type</span></tt>, and <tt class="docutils literal"><span class="pre">@group</span></tt>.</li>
+</ul>
+<div class="section" id="javadoc-fields">
+<h3><a class="toc-backref" href="#id87">6.2.1   Javadoc Fields</a></h3>
+<p>For compatibility with Javadoc, every <tt class="docutils literal"><span class="pre">@see</span></tt> field is assumed to contain a
+single crossreference link, unless its body is quoted, or it starts with an
+HTML tag. See the <a class="reference external" href="http://java.sun.com/j2se/1.4.2/docs/tooldocs/solaris/javadoc.html#@see">Javadoc reference manual</a> for more information about how the
+<tt class="docutils literal"><span class="pre">@see</span></tt> field is encoded in Javadoc.</p>
+<p>Because Javadoc does not mark end of the optional argument, field arguments
+must contain exactly one word. Thus, multi-word arguments are not available
+in Javadoc. In particular, all group names must be single words.</p>
+</div>
+</div>
+</div>
+<div class="section" id="references">
+<h1><a class="toc-backref" href="#id88">7   References</a></h1>
+<!-- $Id: manual-reference.txt 1549 2007-02-24 16:23:49Z dvarrazzo $ -->
+<div class="section" id="command-line-usage">
+<h2><a class="toc-backref" href="#id89">7.1   Command Line Usage</a></h2>
+<p>Usage: <tt class="docutils literal"><span class="pre">epydoc.py</span></tt> [<em>ACTION</em>] [<em>options</em>] <em>NAMES...</em></p>
+<dl class="docutils">
+<dt>NAMES...</dt>
+<dd>A list of the Python objects that should be documented. Objects can be
+specified using dotted names (such as <tt class="docutils literal"><span class="pre">os.path</span></tt>), module filenames (such
+as <tt class="docutils literal"><span class="pre">epydoc/epytext.py</span></tt>), or package directory names (such as
+<tt class="docutils literal"><span class="pre">epydoc/</span></tt>). Packages are expanded to include all sub-modules and
+sub-packages.</dd>
+<dt>options</dt>
+<dd><pre class="first last literal-block">
+--config=FILE         A configuration file, specifying additional OPTIONS
+                      and/or NAMES.  This option may be repeated.
+-o PATH, --output=PATH
+                      The output directory.  If PATH does not exist, then it
+                      will be created.
+-q, --quiet           Decrease the verbosity.
+-v, --verbose         Increase the verbosity.
+--debug               Show full tracebacks for internal errors.
+--simple-term         Do not try to use color or cursor control when
+                      displaying the progress bar, warnings, or errors.
+
+Actions:
+  --html              Write HTML output.
+  --text              Write plaintext output. (not implemented yet)
+  --latex             Write LaTeX output.
+  --dvi               Write DVI output.
+  --ps                Write Postscript output.
+  --pdf               Write PDF output.
+  --check             Check completeness of docs.
+  --pickle            Write the documentation to a pickle file.
+  --version           Show epydoc's version number and exit.
+  -h, --help          Show this message and exit.  For help on specific
+                      topics, use "--help TOPIC".  Use "--help topics" for a
+                      list of available help topics
+
+Generation Options:
+  --docformat=NAME    The default markup language for docstrings.  Defaults
+                      to "epytext".
+  --parse-only        Get all information from parsing (don't introspect)
+  --introspect-only   Get all information from introspecting (don't parse)
+  --exclude=PATTERN   Exclude modules whose dotted name matches the regular
+                      expression PATTERN
+  --exclude-introspect=PATTERN
+                      Exclude introspection of modules whose dotted name
+                      matches the regular expression PATTERN
+  --exclude-parse=PATTERN
+                      Exclude parsing of modules whose dotted name matches
+                      the regular expression PATTERN
+  --inheritance=STYLE
+                      The format for showing inheritance objects.  STYLE
+                      should be one of: grouped, listed, included.
+  --show-private      Include private variables in the output. (default)
+  --no-private        Do not include private variables in the output.
+  --show-imports      List each module's imports.
+  --no-imports        Do not list each module's imports. (default)
+  --show-sourcecode   Include source code with syntax highlighting in the
+                      HTML output. (default)
+  --no-sourcecode     Do not include source code with syntax highlighting in
+                      the HTML output.
+  --include-log       Include a page with the process log (epydoc-log.html)
+
+Output Options:
+  --name=NAME         The documented project's name (for the navigation
+                      bar).
+  --css=STYLESHEET    The CSS stylesheet.  STYLESHEET can be either a
+                      builtin stylesheet or the name of a CSS file.
+  --url=URL           The documented project's URL (for the navigation bar).
+  --navlink=HTML      HTML code for a navigation link to place in the
+                      navigation bar.
+  --top=PAGE          The "top" page for the HTML documentation.  PAGE can
+                      be a URL, the name of a module or class, or one of the
+                      special names "trees.html", "indices.html", or
+                      "help.html"
+  --help-file=FILE    An alternate help file.  FILE should contain the body
+                      of an HTML file -- navigation bars will be added to
+                      it.
+  --show-frames       Include frames in the HTML output. (default)
+  --no-frames         Do not include frames in the HTML output.
+  --separate-classes  When generating LaTeX or PDF output, list each class
+                      in its own section, instead of listing them under
+                      their containing module.
+
+API Linking Options:
+  --external-api=NAME
+                      Define a new API document.  A new interpreted text
+                      role NAME will be added.
+  --external-api-file=NAME:FILENAME
+                      Use records in FILENAME to resolve objects in the API
+                      named NAME.
+  --external-api-root=NAME:STRING
+                      Use STRING as prefix for the URL generated from the
+                      API NAME.
+
+Graph Options:
+  --graph=GRAPHTYPE   Include graphs of type GRAPHTYPE in the generated
+                      output.  Graphs are generated using the Graphviz dot
+                      executable.  If this executable is not on the path,
+                      then use --dotpath to specify its location.  This
+                      option may be repeated to include multiple graph types
+                      in the output.  GRAPHTYPE should be one of: all,
+                      classtree, callgraph, umlclasstree.
+  --dotpath=PATH      The path to the Graphviz 'dot' executable.
+  --graph-font=FONT   Specify the font used to generate Graphviz graphs.
+                      (e.g., helvetica or times).
+  --graph-font-size=SIZE
+                      Specify the font size used to generate Graphviz
+                      graphs, in points.
+  --pstat=FILE        A pstat output file, to be used in generating call
+                      graphs.
+
+Return Value Options:
+  --fail-on-error     Return a non-zero exit status, indicating failure, if
+                      any errors are encountered.
+  --fail-on-warning   Return a non-zero exit status, indicating failure, if
+                      any errors or warnings are encountered (not including
+                      docstring warnings).
+  --fail-on-docstring-warning
+                      Return a non-zero exit status, indicating failure, if
+                      any errors or warnings are encountered (including
+                      docstring warnings).
+</pre>
+</dd>
+</dl>
+</div>
+<div class="section" id="sample-configuration-file">
+<h2><a class="toc-backref" href="#id90">7.2   Sample Configuration File</a></h2>
+<p>Configuration files, specified using the <tt class="docutils literal"><span class="pre">--config</span></tt> option, may be used to
+specify both the list of objects to document, and the options that should be
+used to document them. Configuration files are read using the standard
+<a class="reference external" href="http://docs.python.org/lib/module-ConfigParser.html">ConfigParser</a> module. The following example configuration file demonstrates the
+various options that you can set. Lines beginning with <tt class="docutils literal"><span class="pre">#</span></tt> or <tt class="docutils literal"><span class="pre">;</span></tt> are
+treated as comments.</p>
+<pre class="literal-block">
+<strong>[epydoc]</strong> <em># Epydoc section marker (required by ConfigParser)</em>
+
+<em># The list of objects to document.  Objects can be named using</em>
+<em># dotted names, module filenames, or package directory names.</em>
+<em># Alases for this option include "objects" and "values".</em>
+<strong>modules: sys, os.path, re</strong>
+
+<em># The type of output that should be generated.  Should be one</em>
+<em># of: html, text, latex, dvi, ps, pdf.</em>
+<strong>output: html</strong>
+
+<em># The path to the output directory.  May be relative or absolute.</em>
+<strong>target: html/</strong>
+
+<em># An integer indicating how verbose epydoc should be.  The default</em>
+<em># value is 0; negative values will supress warnings and errors;</em>
+<em># positive values will give more verbose output.</em>
+<strong>verbosity: 0</strong>
+
+<em># A boolean value indicating that Epydoc should show a tracaback</em>
+<em># in case of unexpected error. By default don't show tracebacks</em>
+<strong>debug: 0</strong>
+
+<em># If True, don't try to use colors or cursor control when doing</em>
+<em># textual output. The default False assumes a rich text prompt</em>
+<strong>simple-term: 0</strong>
+
+
+<strong>### Generation options</strong>
+
+<em># The default markup language for docstrings, for modules that do</em>
+<em># not define __docformat__.  Defaults to epytext.</em>
+<strong>docformat: epytext</strong>
+
+<em># Whether or not parsing should be used to examine objects.</em>
+<strong>parse: yes</strong>
+
+<em># Whether or not introspection should be used to examine objects.</em>
+<strong>introspect: yes</strong>
+
+<em># Don't examine in any way the modules whose dotted name match this</em>
+<em># regular expression pattern.</em>
+<strong>#exclude</strong>
+
+<em># Don't perform introspection on the modules whose dotted name match this</em>
+<em># regular expression pattern.</em>
+<strong>#exclude-introspect</strong>
+
+<em># Don't perform parsing on the modules whose dotted name match this</em>
+<em># regular expression pattern.</em>
+<strong>#exclude-parse</strong>
+
+<em># The format for showing inheritance objects.</em>
+<em># It should be one of: 'grouped', 'listed', 'included'.</em>
+<strong>inheritance: listed</strong>
+
+<em># Whether or not to inclue private variables.  (Even if included,</em>
+<em># private variables will be hidden by default.)</em>
+<strong>private: yes</strong>
+
+<em># Whether or not to list each module's imports.</em>
+<strong>imports: no</strong>
+
+<em># Whether or not to include syntax highlighted source code in</em>
+<em># the output (HTML only).</em>
+<strong>sourcecode: yes</strong>
+
+<em># Whether or not to includea a page with Epydoc log, containing</em>
+<em># effective option at the time of generation and the reported logs.</em>
+<strong>include-log: no</strong>
+
+
+<strong>### Output options</strong>
+
+<em># The documented project's name.</em>
+<strong>#name: Example</strong>
+
+<em># The CSS stylesheet for HTML output.  Can be the name of a builtin</em>
+<em># stylesheet, or the name of a file.</em>
+<strong>css: white</strong>
+
+<em># The documented project's URL.</em>
+<strong>#url: http://some.project/</strong>
+
+<em># HTML code for the project link in the navigation bar.  If left</em>
+<em># unspecified, the project link will be generated based on the</em>
+<em># project's name and URL.</em>
+<strong>#link: <a href="somewhere">My Cool Project</a></strong>
+
+<em># The "top" page for the documentation.  Can be a URL, the name</em>
+<em># of a module or class, or one of the special names "trees.html",</em>
+<em># "indices.html", or "help.html"</em>
+<strong>#top: os.path</strong>
+
+<em># An alternative help file.  The named file should contain the</em>
+<em># body of an HTML file; navigation bars will be added to it.</em>
+<strong>#help: my_helpfile.html</strong>
+
+<em># Whether or not to include a frames-based table of contents.</em>
+<strong>frames: yes</strong>
+
+<em># Whether each class should be listed in its own section when</em>
+<em># generating LaTeX or PDF output.</em>
+<strong>separate-classes: no</strong>
+
+
+<strong>### API linking options</strong>
+
+<em># Define a new API document.  A new interpreted text role</em>
+<em># will be created</em>
+<strong>#external-api: epydoc</strong>
+
+<em># Use the records in this file to resolve objects in the API named NAME.</em>
+<strong>#external-api-file: epydoc:api-objects.txt</strong>
+
+<em># Use this URL prefix to configure the string returned for external API.</em>
+<strong>#external-api-root: epydoc:http://epydoc.sourceforge.net/api</strong>
+
+
+<strong>### Graph options</strong>
+
+<em># The list of graph types that should be automatically included</em>
+<em># in the output.  Graphs are generated using the Graphviz "dot"</em>
+<em># executable.  Graph types include: "classtree", "callgraph",</em>
+<em># "umlclass".  Use "all" to include all graph types</em>
+<strong>graph: all</strong>
+
+<em># The path to the Graphviz "dot" executable, used to generate</em>
+<em># graphs.</em>
+<strong>dotpath: /usr/local/bin/dot</strong>
+
+<em># The name of one or more pstat files (generated by the profile</em>
+<em># or hotshot module).  These are used to generate call graphs.</em>
+<strong>pstat: profile.out</strong>
+
+<em># Specify the font used to generate Graphviz graphs.</em>
+<em># (e.g., helvetica or times).</em>
+<strong>graph-font: Helvetica</strong>
+
+<em># Specify the font size used to generate Graphviz graphs.</em>
+<strong>graph-font-size: 10</strong>
+
+
+<strong>### Return value options</strong>
+
+<em># The condition upon which Epydoc should exit with a non-zero</em>
+<em># exit status. Possible values are error, warning, docstring_warning</em>
+<strong>#fail-on: error</strong>
+</pre>
+</div>
+<div class="section" id="warnings-and-errors">
+<h2><a class="toc-backref" href="#id91">7.3   Warnings and Errors</a></h2>
+<p>If epydoc encounters an error while processing a docstring, it issues a warning
+message that describes the error, and attempts to continue generating
+documentation. Errors related to epytext are divided into three categories:</p>
+<dl class="docutils">
+<dt>Epytext Warnings</dt>
+<dd>are caused by epytext docstrings that contain questionable or suspicious
+markup. Epytext warnings do not prevent the docstring in question from
+being parsed.</dd>
+<dt>Field Warnings</dt>
+<dd>are caused by epytext docstrings containing invalid fields. The contents of
+the invalid field are generally ignored.</dd>
+<dt>Epytext Errors</dt>
+<dd>are caused by epytext docstrings that contain invalid markup. Whenever an
+epytext error is detected, the docstring in question is treated as a
+plaintext docstring.</dd>
+</dl>
+<p>The following sections list and describe the warning messages that epydoc can
+generate. They are intended as a reference resource, which you can search for
+more information and possible causes if you encounter an error and do not
+understand it. These descriptions are also available in the <tt class="docutils literal"><span class="pre">epydoc(1)</span></tt> man
+page.</p>
+<div class="section" id="epytext-warnings">
+<h3><a class="toc-backref" href="#id92">7.3.1   Epytext Warnings</a></h3>
+<dl class="docutils">
+<dt>Possible mal-formatted field item.</dt>
+<dd>Epytext detected a line that looks like a field item, but is not correctly
+formatted. This typically occurs when the trailing colon (<tt class="docutils literal"><span class="pre">:</span></tt>) is not
+included in the field tag.</dd>
+<dt>Possible heading typo.</dt>
+<dd>Epytext detected a pair of lines that looks like a heading, but the number
+of underline characters does not match the number of characters in the
+heading. The number of characters in these two lines must match exactly for
+them to be considered a heading.</dd>
+</dl>
+</div>
+<div class="section" id="field-warnings">
+<h3><a class="toc-backref" href="#id93">7.3.2   Field Warnings</a></h3>
+<dl class="docutils">
+<dt><tt class="docutils literal"><span class="pre">@param</span></tt> for unknown parameter <em>param</em>.</dt>
+<dd>A <tt class="docutils literal"><span class="pre">@param</span></tt> field was used to specify the type for a parameter that is not
+included in the function's signature. This is typically caused by a typo in
+the parameter name.</dd>
+<dt><em>tag</em> did not expect an argument.</dt>
+<dd>The field tag <em>tag</em> was used with an argument, but it does not take one.</dd>
+<dt><em>tag</em> expected an argument.</dt>
+<dd>The field tag <em>tag</em> was used without an argument, but it requires one.</dd>
+<dt><tt class="docutils literal"><span class="pre">@type</span></tt> for unknown parameter <em>param</em>.</dt>
+<dd>A <tt class="docutils literal"><span class="pre">@type</span></tt> field was used to specify the type for a parameter that is not
+included in the function's signature. This is typically caused by a typo in
+the parameter name.</dd>
+<dt><tt class="docutils literal"><span class="pre">@type</span></tt> for unknown variable <em>var</em>.</dt>
+<dd>A <tt class="docutils literal"><span class="pre">@type</span></tt> field was used to specify the type for a variable, but no
+other information is known about the variable. This is typically caused
+by a typo in the variable name.</dd>
+<dt>Unknown field tag <em>tag</em>.</dt>
+<dd>A docstring contains a field with the unknown tag <em>tag</em>.</dd>
+<dt>Redefinition of <em>field</em>.</dt>
+<dd>Multiple field tags define the value of field in the same docstring, but
+field can only take a single value.</dd>
+</dl>
+</div>
+<div class="section" id="epytext-errors">
+<h3><a class="toc-backref" href="#id94">7.3.3   Epytext Errors</a></h3>
+<dl class="docutils">
+<dt>Bad link target.</dt>
+<dd>The target specified for an inline link contruction (L{...}) is not
+well-formed. Link targets must be valid Python identifiers.</dd>
+<dt>Bad uri target.</dt>
+<dd>The target specified for an inline uri contruction (<tt class="docutils literal"><span class="pre">U{...}</span></tt>) is not
+well-formed. This typically occurs if inline markup is nested inside the
+URI target.</dd>
+<dt>Fields must be at the top level.</dt>
+<dd>The list of fields (<tt class="docutils literal"><span class="pre">@param</span></tt>, etc.) is contained by some other block
+structure (such as a list or a section).</dd>
+<dt>Fields must be the final elements in an epytext string.</dt>
+<dd>The list of fields (<tt class="docutils literal"><span class="pre">@param</span></tt>, etc.) is not at the end of a docstring.</dd>
+<dt>Headings must occur at top level.</dt>
+<dd>The heading is contianed in some other block structure (such as a list).</dd>
+<dt>Improper doctest block indentation.</dt>
+<dd>The doctest block dedents past the indentation of its initial prompt line.</dd>
+<dt>Improper heading indentation.</dt>
+<dd>The heading for a section is not left-aligned with the paragraphs in the
+section that contains it.</dd>
+<dt>Improper paragraph indentation.</dt>
+<dd>The paragraphs within a block are not left-aligned. This error is often
+generated when plaintext docstrings are parsed using epytext.</dd>
+<dt>Invalid escape.</dt>
+<dd>An unknown escape sequence was used with the inline escape construction
+(<tt class="docutils literal"><span class="pre">E{...}</span></tt>).</dd>
+<dt>Lists must be indented.</dt>
+<dd>An unindented line immediately following a paragraph starts with a list
+bullet. Epydoc is not sure whether you meant to start a new list item, or
+meant for a paragraph to include a word that looks like a bullet. If you
+intended the former, then indent the list. If you intended the latter, then
+change the word-wrapping of the paragraph, or escape the first character of
+the word that looks like a bullet.</dd>
+<dt>Unbalanced '<tt class="docutils literal"><span class="pre">{</span></tt>'.</dt>
+<dd>The docstring contains unbalanced braces. Epytext requires that all braces
+must be balanced. To include a single unbalanced brace, use the escape
+sequences <tt class="docutils literal"><span class="pre">E{lb}</span></tt> (left brace) and <tt class="docutils literal"><span class="pre">E{rb}</span></tt> (right brace).</dd>
+<dt>Unbalanced '<tt class="docutils literal"><span class="pre">}</span></tt>'.</dt>
+<dd>The docstring contains unbalanced braces. Epytext requires that all braces
+must be balanced. To include a single unbalanced brace, use the escape
+sequences <tt class="docutils literal"><span class="pre">E{lb}</span></tt> (left brace) and <tt class="docutils literal"><span class="pre">E{rb}</span></tt> (right brace).</dd>
+<dt>Unknown inline markup tag.</dt>
+<dd>An unknown tag was used with the inline markup construction (<tt class="docutils literal"><span class="pre">x{...}</span></tt>).</dd>
+<dt>Wrong underline character for heading.</dt>
+<dd>The underline character used for this section heading does not indicate an
+appopriate section level. The '<tt class="docutils literal"><span class="pre">=</span></tt>' character should be used to underline
+sections; '<tt class="docutils literal"><span class="pre">-</span></tt>' for subsections; and '<tt class="docutils literal"><span class="pre">~</span></tt>' for subsubsections.</dd>
+</dl>
+</div>
+</div>
+</div>
+</div>
+<table width="100%" class="navbox" cellpadding="1" cellspacing="0">
+  <tr>
+  <a class="nav" href="index.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="index.html">
+    Home</a></td></a>
+  <a class="nav" href="installing.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="installing.html">
+    Installing Epydoc</a></td></a>
+  <a class="nav" href="using.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="using.html">
+    Using Epydoc</a></td></a>
+  <a class="nav" href="epytext.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="epytext.html">
+    Epytext</a></td></a>
+  <td align="center" width="20%" class="nav">
+    
+    <A href="http://sourceforge.net/projects/epydoc"> 
+    <IMG src="sflogo.png" 
+    width="88" height="26" border="0" alt="SourceForge"
+    align="top"/></A></td>
+    </tr>
+</table>
+</body>
+</html>
diff --git a/doc/epydoc_gui.png b/doc/epydoc_gui.png
new file mode 100644
index 0000000..1013cf5
Binary files /dev/null and b/doc/epydoc_gui.png differ
diff --git a/doc/epydoc_guiconfig.png b/doc/epydoc_guiconfig.png
new file mode 100644
index 0000000..a92fd9e
Binary files /dev/null and b/doc/epydoc_guiconfig.png differ
diff --git a/doc/epydocgui-man.html b/doc/epydocgui-man.html
new file mode 100644
index 0000000..aea6c9c
--- /dev/null
+++ b/doc/epydocgui-man.html
@@ -0,0 +1,612 @@
+
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML><HEAD><TITLE>Man page of EPYDOCGUI</TITLE>
+<link rel="stylesheet" href="epydoc.css" type="text/css"/></HEAD><BODY><DIV CLASS="BODY">
+<H1>epydocgui (1)</H1>
+
+
+
+<A NAME="lbAB">
+<H2>NAME</H2></A>
+
+epydocgui - graphical interface to epydoc
+
+<A NAME="lbAC">
+<H2>SYNOPSIS</H2></A>
+
+<P>
+
+<B>epydocgui</B>
+
+[<I>project.prj</I> | <I>modules</I>...]
+
+<P>
+
+<B>epydoc -h</B>
+
+<P>
+
+<B>epydoc -V</B>
+
+
+<A NAME="lbAD">
+<H2>DESCRIPTION</H2></A>
+
+<B>epydocgui</B>
+
+is a graphical interface to epydoc, which generates API documentation
+for Python modules and packages, based on their docstrings.  A
+lightweight markup language called
+<B>epytext</B>
+
+can be used to format docstrings, and to add information about
+specific fields, such as parameters and instance variables.
+<P>
+
+The API documentation produced by 
+<B>epydocgui</B>
+
+consists of a set of HTML files.  Two subdirectories are created for
+the public and private documentation.  Within each subdirectories,
+every class and module is documented in its own file.  An index file,
+a trees file, and a help file are also created.  If you select the
+<B>frames</B>
+
+option, then a frames-based table of contents is also produced.
+
+<A NAME="lbAE">
+<H2>OPTIONS</H2></A>
+
+<DL COMPACT>
+<DT><I>project.prj</I>
+
+
+The name of a project file that was saved with
+<B>epydocgui</B>.
+
+Project files record a list of related modules, and the options that
+should be used to generate the documentation for those modules.
+<DT><I>modules</I>...
+
+<DD>
+The list of the modules that should be documented.  Modules can be
+specified using module names (such as
+<B>os.path</B>),
+
+filenames (such as
+<B>epydoc/epytext.py</B>),
+
+or directory names (such as
+<B>epydoc/</B>).
+
+Directory names specify packages, and are expanded to include
+all sub-modules and sub-packages.
+<DT><B>-h, --help, --usage, -?</B>
+
+<DD>
+Display a usage message.
+<DT><B>-V, --version</B>
+
+<DD>
+Print the version of Epydoc.
+
+
+</DL>
+<A NAME="lbAF">
+<H2>HTML FILES</H2></A>
+
+The API documentation produced by 
+<B>epydoc</B>
+
+consists of the following files:
+<DL COMPACT><DT><DD>
+<DL COMPACT>
+<DT><B>index.html</B>
+
+<DD>
+The standard entry point for the documentation.  Normally,
+<B>index.html</B>
+
+is a frame index file, which defines three frames: two frames on
+the left side of the browser contain a table of contents, and the main
+frame on the right side of the window contains documentation pages.
+But if the 
+<B>--no-frames</B>
+
+option is used, then
+<B>index.html</B>
+
+will redirect the user to the project's top page.
+<DT><B>m-</B><I>module</I><B>.html</B>
+
+<DD>
+The API documentation for a module.  
+<I>module</I>
+
+is the complete dotted name of the module, such as 
+<B>sys</B>
+
+or
+<B>epydoc.epytext</B>.
+
+<DT><B>c-</B><I>class</I><B>.html</B>
+
+<DD>
+The API documentation for a class, exception, or type.
+<I>class</I>
+
+is the complete dotted name of the class, such as
+<B>epydoc.epytext.Token</B>
+
+or
+<B>array.ArrayType</B>.
+
+<DT><B>trees.html</B>
+
+<DD>
+The module and class hierarchies.
+<DT><B>indices.html</B>
+
+<DD>
+The term  and identifier indices.
+<DT><B>help.html</B>
+
+<DD>
+The help page for the project.  This page explains how to use and
+navigate the webpage produced by epydoc.
+<DT><B>toc.html</B>
+
+<DD>
+The top-level table of contents page.  This page is displayed in the
+upper-left frame, and provides links to
+<B>toc-everything.html</B>
+
+and the
+<B>toc-m-</B><I>module</I><B>.html</B>
+
+files.
+<B>toc.html</B>
+
+is not generated if the
+<B>--no-frames</B>
+
+option is used.
+<DT><B>toc-everything.html</B>
+
+<DD>
+The table of contents for the entire project.  This page is displayed
+in the lower-left frame, and provides links to every class, type,
+exception, function, and variable defined by the project.
+<B>toc-everything.html</B>
+
+is not generated if the
+<B>--no-frames</B>
+
+option is used.
+<DT><B>toc-m-</B><I>module</I><B>.html</B>
+
+<DD>
+The table of contents for a module.  This page is displayed in the
+lower-left frame, and provides links to every class, type, exception,
+function, and variable defined by the module.
+<I>module</I>
+
+is the complete dotted name of the module, such as 
+<B>sys</B>
+
+or
+<B>epydoc.epytext</B>.
+
+<B>toc-m-</B><I>module</I><B>.html</B>
+
+is not generated if the
+<B>--no-frames</B>
+
+option is used.
+<DT><B>epydoc.css</B>
+
+<DD>
+The CSS stylesheet used to display all HTML pages.
+</DL>
+</DL>
+
+<P>
+
+By default,
+<B>epydoc</B>
+
+creates two subdirectories in the output directory:
+<B>public</B>
+
+and
+<B>private</B>.
+
+Each directory contains all of the files specified above.
+But if the
+<B>--no-private</B>
+
+option is used, then no subdirectories are created, and the public
+documentation is written directly to the output directory.
+
+
+ivided into five categories: import errors; epytext
+errors; epytext warnings; field warnings; and inspection errors.
+Whenver epydoc encounters an error, it issues a warning message that
+describes the error, and attempts to continue generating
+documentation.
+<P>
+
+Import errors indicate that epydoc was unable to import a module.
+Import errors typically prevent epydoc from generating documentation
+for the module in question.  Epydoc can generate the following import
+errors:
+<DL COMPACT><DT><DD>
+<DL COMPACT>
+<DT><B>Bad module name </B><I>module</I>
+
+<DD>
+Epydoc attempted to import
+<I>module</I>,
+
+but
+<I>module</I>
+
+is not a valid name for a Python module.
+<DT><B>Could not find a UID for </B><I>link-target</I>
+
+<DD>
+Epydoc was unable to find the object referred to by an inline link
+construction
+(<B>L{...}</B>).
+
+This is usually caused by a typo in the link.
+<DT><B>Could not import </B><I>module</I>
+
+<DD>
+Epydoc attempted to import
+<I>module</I>,
+
+but it failed.  This typically occurs when
+<I>module</I>
+
+raises an exception.
+<DT><I>file</I><B> does not exist</B>
+
+<DD>
+Epydoc attempted to import the module contained in
+<I>file</I>,
+
+but
+<I>file</I>
+
+does not exist.
+</DL>
+</DL>
+
+<P>
+
+Epytext errors are caused by epytext docstrings that contain invalid
+markup.  Whenever an epytext error is detected, the docstring in
+question is treated as a plaintext docstring.  Epydoc can generate the
+following epytext errors:
+<DL COMPACT><DT><DD>
+<DL COMPACT>
+<DT><B>Bad link target.</B>
+
+<DD>
+The target specified for an inline link contruction
+(<B>L{...}</B>)
+
+is not well-formed.  Link targets must be valid python identifiers.
+<DT><B>Bad uri target.</B>
+
+<DD>
+The target specified for an inline uri contruction
+(<B>U{...}</B>)
+
+is not well-formed.  This typically occurs if inline markup is nested
+inside the URI target.  
+<DT><B>Fields must be at the top level.</B>
+
+<DD>
+The list of fields
+(<B>@param</B>, etc.)
+
+is contained by some other
+block structure (such as a list or a section).
+<DT><B>Fields must be the final elements.</B>
+
+<DD>
+The list of fields
+(<B>@param</B>, etc.)
+
+is not at the end of a docstring.
+<DT><B>Headings must occur at top level.</B>
+
+<DD>
+The heading is contianed in some other block structure (such as a
+list).
+<DT><B>Improper doctest block indentation.</B>
+
+<DD>
+The doctest block dedents past the indentation of its initial prompt
+line.
+<DT><B>Improper heading indentation.</B>
+
+<DD>
+The heading for a section is not left-aligned with the paragraphs in
+the section that contains it.
+<DT><B>Improper paragraph indentation.</B>
+
+<DD>
+The paragraphs within a block are not left-aligned.  This error is
+often generated when plaintext docstrings are parsed using epytext.
+<DT><B>Invalid escape.</B>
+
+<DD>
+An unknown escape sequence was used with the inline escape construction
+(<B>E{...}</B>).
+
+<DT><B>Lists must be indented.</B>
+
+<DD>
+An unindented line immediately following a paragraph starts with a
+list bullet.  Epydoc is not sure whether you meant to start a new list
+item, or meant for a paragraph to include a word that looks like a
+bullet.  If you intended the former, then indent the list.  If you
+intended the latter, then change the word-wrapping of the paragraph,
+or escape the first character of the word that looks like a bullet.
+<DT><B>Unbalanced '{'.</B>
+
+<DD>
+The docstring contains unbalanced braces.  Epytext requires that all
+braces must be balanced.  To include a single unbalanced brace, use
+the escape sequences E{lb} (left brace) and E{rb} (right brace).
+<DT><B>Unbalanced '}'.</B>
+
+<DD>
+The docstring contains unbalanced braces.  Epytext requires that all
+braces must be balanced.  To include a single unbalanced brace, use
+the escape sequences E{lb} (left brace) and E{rb} (right brace).
+<DT><B>Unknown inline markup tag.</B>
+
+<DD>
+An unknown tag was used with the inline markup construction (
+<I>x</I><B>{...}</B>
+
+).
+<DT><B>Wrong underline character for heading.</B>
+
+<DD>
+The underline character used for this section heading does not
+indicate an appopriate section level.  The "=" character should be
+used to underline sections; "-" for subsections; and "~" for
+subsubsections.
+</DL>
+</DL>
+
+<P>
+
+Epytext warnings are caused by epytext docstrings that contain
+questionable or suspicious markup.  Epytext warnings do
+<B>not</B>
+
+prevent the docstring in question from being parsed.  Epydoc can
+generate the following epytext warnings:
+<DL COMPACT><DT><DD>
+<DL COMPACT>
+<DT><B>Possible mal-formatted field item.</B>
+
+<DD>
+Epytext detected a line that looks like a field item, but is not
+correctly formatted.  This typically occurs when the trailing colon
+(":") is not included in the field tag.
+<DT><B>Possible heading typo.</B>
+
+<DD>
+Epytext detected a pair of lines that looks like a heading, but the
+number of underline characters does not match the number of characters
+in the heading.  The number of characters in these two lines must
+match exactly for them to be considered a heading.
+</DL>
+</DL>
+
+<P>
+
+Field warnings are caused by epytext docstrings containing invalid
+fields.  The contents of the invalid field are generally ignored.  
+Epydoc can generate the following field warnings:
+<DL COMPACT><DT><DD>
+<DL COMPACT>
+<DT><B>@param for unknown parameter </B><I>param</I><B>.</B>
+
+<DD>
+A @param field was used to specify the type for a parameter that is
+not included in the function's signature.  This is typically caused by
+a typo in the parameter name.
+<DT><I>tag</I><B> did not expect an argument.</B>
+
+<DD>
+The field tag
+<I>tag</I>
+
+was used with an argument, but it does not take one.
+<DT><I>tag</I><B> expected an argument.</B>
+
+<DD>
+The field tag
+<I>tag</I>
+
+was used without an argument, but it requires one.
+<DT><B>@type for unknown parameter </B><I>param</I><B>.</B>
+
+<DD>
+A @type field was used to specify the type for a parameter that is not
+included in the function's signature.  This is typically
+caused by a typo in the parameter name.
+<DT><B>@type for unknown variable </B><I>var</I><B>.</B>
+
+<DD>
+A @type field was used to specify the type for a variable, but no
+other information is known about the variable.  This is typically
+caused by a typo in the variable name.
+<DT><B>Unknown field tag </B><I>tag</I><B>.</B>
+
+<DD>
+A docstring contains a field with the unknown tag
+<I>tag</I>.
+
+<DT><B>Redefinition of </B><I>field</I><B>.</B>
+
+<DD>
+Multiple field tags define the value of
+<I>field</I>
+
+in the same docstring, but
+<I>field</I>
+
+can only take a single value.
+</DL>
+</DL>
+
+<P>
+
+Inspection errors are generated if epydoc encounters problems while
+attempting to inspect the properties of a documented object.  Most of
+inspection errors do not prevent epydoc from documenting the object in
+question.  Epydoc can generate the following inspection errors:
+<DL COMPACT><DT><DD>
+<DL COMPACT>
+<DT><B>The parameters of </B><I>inhmethod</I><B> do not match </B><I>basemethod</I><B>.</B>
+
+<DD>
+The parameters of the undocumented method
+<I>inhmethod </I>
+
+do not match the parameters of the base class method
+<I>basemethod</I>
+
+that it overrides.  As a result,
+<I>inhmethod</I>
+
+does not inherit documentation from
+<I>basemethod</I>.
+
+If the difference in parameters is intentional, then you can eliminate
+the warning by adding a (possibly empty) docstring to
+<I>inhmethod</I>.
+
+<DT><B>Docmap cannot add a </B><I>type</I>
+
+<DD>
+Epydoc attempted to document an object with an unknown type.  This
+error is typically generated by packages and modules that manipulate
+the import mechanism, such that importing a module produces some other
+type of object.
+<DT><B>UID conflict detected: </B><I>uid</I>
+
+<DD>
+Two different objects were assigned the same unique identifier by
+epydoc.  This can cause epydoc to substitute the documentation of one
+object with the documentation of another object that is assigned the
+same unique identifier.  However, this will usually only cause
+problems if the two objects with the same unique identifiers are both
+modules or classes, in which case the API documentation page for one
+object will overwrite the API documentation page for the other object.
+<DT><I>object</I><B> appears in multiple builtin modules</B>
+
+<DD>
+While attempting to determine which module defines the builtin object
+<I>object</I>,
+
+epydoc encountered multiple candidates, and was unable to decide which
+candidate was correct.  In this case, epydoc arbitrarily chooses the
+first candidate that it finds.
+<DT><I>object</I><B> appears in multiple .py modules</B>
+
+<DD>
+While attempting to determine which module defines the builtin object
+<I>object</I>,
+
+epydoc encountered multiple candidates, and was unable to decide which
+candidate was correct.  In this case, epydoc arbitrarily chooses the
+first candidate that it finds.
+<DT><I>object</I><B> appears in multiple .so modules</B>
+
+<DD>
+While attempting to determine which module defines the builtin object
+<I>object</I>,
+
+epydoc encountered multiple candidates, and was unable to decide which
+candidate was correct.  In this case, epydoc arbitrarily chooses the
+first candidate that it finds.
+<DT><B>Could not find a module for </B><I>object</I>
+
+<DD>
+Epydoc was unable to determine which module defines 
+<I>object</I>.
+
+If
+<I>object</I>
+
+is a function, then this will prevent epydoc from generating any
+documentation for
+<I>object</I>,
+
+since it does not know what page to put the documentation on.
+Otherwise, this will prevent the documentation for
+<I>object</I>
+
+from including a link to its containing module.
+</DL>
+</DL>
+
+
+<A NAME="lbAG">
+<H2>AUTHOR</H2></A>
+
+Epydoc was written by Edward Loper.  This man page was originally
+written by Moshe Zadka, and is currently maintained by Edward Loper.
+
+<A NAME="lbAH">
+<H2>BUGS</H2></A>
+
+Report bugs to <<A HREF="mailto:edloper at gradient.cis.upenn.edu">edloper at gradient.cis.upenn.edu</A>>.
+
+<A NAME="lbAI">
+<H2>SEE ALSO</H2></A>
+
+<B><A HREF="/cgi-bin/man/man2html?1+epydoc">epydoc</A></B>(1)
+
+<DL COMPACT>
+<DT><B>The epydoc webpage</B>
+
+<DD>
+<<A HREF="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</A>>
+<DT><B>The epytext markup language manual</B>
+
+<DD>
+<<A HREF="http://epydoc.sourceforge.net/epytext.html">http://epydoc.sourceforge.net/epytext.html</A>>
+<P>
+</DL>
+
+<HR>
+<A NAME="index"><H2>Index</H2></A>
+<DL>
+<DT><A HREF="#lbAB">NAME</A><DD>
+<DT><A HREF="#lbAC">SYNOPSIS</A><DD>
+<DT><A HREF="#lbAD">DESCRIPTION</A><DD>
+<DT><A HREF="#lbAE">OPTIONS</A><DD>
+<DT><A HREF="#lbAF">HTML FILES</A><DD>
+<DT><A HREF="#lbAG">AUTHOR</A><DD>
+<DT><A HREF="#lbAH">BUGS</A><DD>
+<DT><A HREF="#lbAI">SEE ALSO</A><DD>
+</DL>
+<HR>
+This document was created by
+<A HREF="/cgi-bin/man/man2html">man2html</A>,
+using the manual pages.<BR>
+Time: 01:20:48 GMT, September 24, 2007
+</DIV></BODY>
+</HTML>
diff --git a/doc/epytext.html b/doc/epytext.html
new file mode 100644
index 0000000..60ff30a
--- /dev/null
+++ b/doc/epytext.html
@@ -0,0 +1,1076 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html> <head>
+<title>The Epytext Markup Language</title>
+<link rel="stylesheet" href="epydoc.css" type="text/css"/>
+</head>
+<!-- $Id: epytext.html 1211 2006-04-10 19:38:37Z edloper $ -->
+
+<body>
+<div class="body">
+<h1>The Epytext Markup Language</h1>
+
+<a name="overview"/>
+<h2> 1. Overview </h2>
+
+<p> Epytext is a lightweight markup language for Python docstrings.
+The epytext markup language is used by epydoc to parse docstrings and
+create structured API documentation.  Epytext markup is broken up into
+the following categories: </p>
+
+<ul>
+  <li> <b><i>Block Structure</i></b> divides the docstring into nested
+  blocks of text, such as paragraphs and lists.
+  <ul>
+    <li> <b><i>Basic Blocks</i></b> are the basic unit of block structure. </li>
+    <li> <b><i>Hierarchical blocks</i></b> represent the nesting structure
+    of the docstring. </li>
+  </ul> </li>
+  <li> <b><i>Inline Markup</i></b> marks regions of text within a basic block
+  with properties, such as italics and hyperlinks. </li>
+</ul>
+
+<!-- =========== BLOCK STRUCTURE ============= -->
+<a name="block_structure"/>
+<h2> 2. Block Structure </h2>
+
+<p> Block structure is encoded using indentation, blank lines, and a
+handful of special character sequences. </p>
+
+<ul>
+  <li> Indentation is used to encode the nesting structure of
+  hierarchical blocks.  The indentation of a line is defined as the
+  number of leading spaces on that line; and the indentation of a
+  block is typically the indentation of its first line. </li>
+
+  <li> Blank lines are used to separate blocks.  A blank line is a
+  line that only contains whitespace. </li>
+
+  <li> Special character sequences are used to mark the beginnings of
+  some blocks.  For example, "<code>-</code>" is used as a bullet for
+  unordered list items, and "<code>>>></code>" is used to
+  mark doctest blocks. </li>
+</ul>
+  
+<p> The following sections describe how to use each type of block
+structure. </p>
+
+<a name="paragraph"/>
+<h3> 2.1. Paragraphs </h3>
+
+<p> A paragraph is the simplest type of basic block.  It consists of
+one or more lines of text.  Paragraphs must be left justified (i.e.,
+every line must have the same indentation).  The following example
+illustrates how paragraphs can be used: </p>
+
+<table border="1" cellspacing="0" cellpadding="3" width="95%">
+  <tr><th width="50%">Docstring Input</th><th width="50%">Rendered Output</th>
+  <tr valign="top"><td>
+<pre>
+<code class="keyword">def</code> <code class="function">example</code>():
+    <code class="string">"""
+    This is a paragraph.  Paragraphs can
+    span multiple lines, and can contain
+    I{inline markup}.
+    
+
+    This is another paragraph.  Paragraphs
+    are separated by blank lines.
+    """</code>
+    <i>[...]</i>
+</pre>
+</td><td>
+  <p> This is a paragraph.  Paragraphs can span multiple lines, and
+  contain <i>inline markup</i>. </p>
+  <p> This is another paragraph.  Paragraphs are separated from each
+  other by blank lines. </p>
+  </td></tr>
+</table>
+  
+<a name="list"/> 
+<h3> 2.2. Lists </h3>
+
+<p> Epytext supports both ordered and unordered lists.  A list
+consists of one or more consecutive <i>list items</i> of the same type
+(ordered or unordered), with the same indentation.  Each list item is
+marked by a <i>bullet</i>.  The bullet for unordered list items is a
+single dash character ("<code>-</code>").  Bullets for ordered list
+items consist of a series of numbers followed by periods, such as
+"<code>12.</code>" or "<code>1.2.8.</code>". </p>
+
+<p> List items typically consist of a bullet followed by a space and a
+single paragraph.  The paragraph may be indented more than the list
+item's bullet; often, the paragraph is intended two or three
+characters, so that its left margin lines up with the right side of
+the bullet.  The following example illustrates a simple ordered
+list. </p>
+
+<table border="1" cellspacing="0" cellpadding="3" width="95%">
+  <tr><th width="50%">Docstring Input</th><th width="50%">Rendered Output</th>
+  <tr valign="top"><td>
+<pre>
+<code class="keyword">def</code> <code class="function">example</code>():
+    <code class="string">"""
+    1. This is an ordered list item.
+
+    2. This is a another ordered list
+    item.
+
+    3. This is a third list item.  Note that
+       the paragraph may be indented more
+       than the bullet.
+    """</code>
+    <i>[...]</i>
+</pre>
+</td><td>
+  <ol>
+    <li> This is an ordered list item. </li>
+    <li> This is another ordered list item. </li>
+    <li> This is a third list item.  Note that the paragraph may be
+    indented more than the bullet.</li>
+  </td></tr>
+</table>
+
+<p> List items can contain more than one paragraph; and they can also
+contain sublists, literal blocks, and doctest blocks.  All of the
+blocks contained by a list item must all have equal indentation, and
+that indentation must be greater than or equal to the indentation of
+the list item's bullet.  If the first contained block is a paragraph,
+it may appear on the same line as the bullet, separated from the
+bullet by one or more spaces, as shown in the previous example.  All
+other block types must follow on separate lines. </p>
+
+<p> Every list must be separated from surrounding blocks by
+indentation: </p>
+
+<table border="1" cellspacing="0" cellpadding="3" width="95%">
+  <tr><th width="50%">Docstring Input</th><th width="50%">Rendered Output</th>
+  <tr valign="top"><td>
+<pre>
+<code class="keyword">def</code> <code class="function">example</code>():
+    <code class="string">"""
+    This is a paragraph.
+      1. This is a list item.
+      2. This a second list
+         item.
+           - This is a sublist
+    """</code>
+    <i>[...]</i>
+</pre>
+</td><td>
+  This is a paragraph. 
+  <ol>
+    <li> This is a list item. </li>
+    <li> This is a second list item. 
+    <ul><li>This is a sublist.</li></ul></li>
+  </ol>
+  </td></tr>
+</table>
+
+<p> Note that sublists must be separated from the blocks in their
+parent list item by indentation.  In particular, the following
+docstring generates an error, since the sublist is not separated from
+the paragraph in its parent list item by indentation: </p>
+
+<table border="1" cellspacing="0" cellpadding="3" width="95%">
+  <tr><th width="50%">Docstring Input</th><th width="50%">Rendered Output</th>
+  <tr valign="top"><td>
+<pre>
+<code class="keyword">def</code> <code class="function">example</code>():
+    <code class="string">"""
+    1. This is a list item.  Its
+       paragraph is indented 7 spaces.
+       - This is a sublist.  It is
+         indented 7 spaces.
+    """</code>
+    <i>[...]</i>
+</pre>
+</td><td>
+   <b>L5: Error: Lists must be indented.</b>
+  </td></tr>
+</table>
+
+<p> The following example illustrates how lists can be used: </p>
+
+<table border="1" cellspacing="0" cellpadding="3" width="95%">
+  <tr><th width="50%">Docstring Input</th><th width="50%">Rendered Output</th>
+  <tr valign="top"><td>
+<pre>
+<code class="keyword">def</code> <code class="function">example</code>():
+    <code class="string">"""
+    This is a paragraph.
+      1. This is a list item.
+        - This is a sublist.
+        - The sublist contains two
+          items.
+            - The second item of the 
+              sublist has its own sublist.
+
+      2. This list item contains two
+         paragraphs and a doctest block.
+
+         >>> print 'This is a doctest block'
+         This is a doctest block
+
+         This is the second paragraph.
+    """</code>
+    <i>[...]</i>
+</pre>
+</td><td>
+  This is a paragraph. 
+  <ol>
+    <li> This is a list item. </li>
+    <ul>
+      <li> This is a sublist. </li>
+      <li> The sublist contains two items. </li>
+      <ul>
+        <li> The second item of the sublist has its own own sublist. </li>
+      </ul>
+    </ul>
+    <li> This list item contains two paragraphs and a doctest block.
+    <pre>
+<code class="prompt">>>></code> <code class="keyword">print</code> <code class="string">'This is a doctest block'</code>
+<code class="output">This is a doctest block</code></pre>
+    <p> This is the second paragraph. </p> </li>
+  </ol>
+  </td></tr>
+</table>
+
+<p> Epytext will treat any line that begins with a bullet as a list
+item.  If you want to include bullet-like text in a paragraph, then
+you must either ensure that it is not at the beginning of the line,
+or use <a href="#escaping">escaping</a> to prevent epytext from
+treating it as markup: </p>
+
+<table border="1" cellspacing="0" cellpadding="3" width="95%">
+  <tr><th width="50%">Docstring Input</th><th width="50%">Rendered Output</th>
+  <tr valign="top"><td>
+<pre>
+<code class="keyword">def</code> <code class="function">example</code>():
+    <code class="string">"""
+    This sentence ends with the number
+    1.  Epytext can't tell if the "1."
+    is a bullet or part of the paragraph,
+    so it generates an error.
+    """</code>
+    <i>[...]</i>
+</pre>
+</td><td>
+<b> L4: Error: Lists must be indented. </b>
+</td></tr>
+  <tr valign="top"><td>
+<pre>
+<code class="keyword">def</code> <code class="function">example</code>():
+    <code class="string">"""
+    This sentence ends with the number 1.
+
+    This sentence ends with the number
+    E{1}.
+    """</code>
+    <i>[...]</i>
+</pre>
+</td><td>
+    This sentence ends with the number 1.
+    <p> This sentence ends with the number 1.</p>
+</td></tr>
+</table>
+
+<a name="section"/>
+<h3> 2.3. Sections </h3>
+
+<p> A section consists of a heading followed by one or more
+child blocks. </p>
+
+<ul>
+  <li> The heading is a single underlined line of text.  Top-level
+  section headings are underlined with the "=" character; subsection
+  headings are underlined with the "-" character; and subsubsection
+  headings are underlined with the "~" character.  The length of the
+  underline must exactly match the length of the heading.</li>
+
+  <li> The child blocks can be paragraphs, lists, literal blocks,
+  doctest blocks, or sections.  Each child must have equal
+  indentation, and that indentation must be greater than or equal to
+  the heading's indentation. </li>
+</ul>
+
+<p> The following example illustrates how sections can be used: </p>
+
+<table border="1" cellspacing="0" cellpadding="3" width="95%">
+  <tr><th width="50%">Docstring Input</th><th width="50%">Rendered Output</th>
+  <tr valign="top"><td>
+<pre>
+<code class="keyword">def</code> <code class="function">example</code>():
+    <code class="string">"""
+    This paragraph is not in any section.
+
+    Section 1
+    =========
+      This is a paragraph in section 1.
+
+      Section 1.1
+      -----------
+      This is a paragraph in section 1.1.
+
+    Section 2
+    =========
+      This is a paragraph in section 2.
+    """</code>
+    <i>[...]</i>
+</pre>
+</td><td>
+  <b><font size="+2">Section 1</font></b><br>
+  This is a paragraph in section 1. <br><br>
+  <b><font size="+1">Section 1.1</font></b><br>
+  This is a paragraph in section 1.1. <br><br>
+  <b><font size="+2">Section 2</font></b><br>
+  This is a paragraph in section 2.
+</table>
+
+<a name="literal"/>
+<h3> 2.4. Literal Blocks </h3>
+
+<p> Literal blocks are used to represent "preformatted" text.
+Everything within a literal block should be displayed exactly as it
+appears in plaintext.  In particular: </p>
+
+<ul>
+  <li> Spaces and newlines are preserved. </li>
+  <li> Text is shown in a monospaced font. </li>
+  <li> Inline markup is not detected. </li>
+</ul>
+
+<p> Literal blocks are introduced by paragraphs ending in the special
+sequence "<code>::</code>".  Literal blocks end at the first line
+whose indentation is equal to or less than that of the paragraph that
+introduces them.  The following example shows how literal blocks can
+be used: </p>
+
+<table border="1" cellspacing="0" cellpadding="3" width="95%">
+  <tr><th width="50%">Docstring Input</th><th width="50%">Rendered Output</th>
+  <tr valign="top"><td>
+<pre>
+<code class="keyword">def</code> <code class="function">example</code>():
+    <code class="string">"""
+    The following is a literal block::
+    
+        Literal /
+               / Block
+
+    This is a paragraph following the
+    literal block.
+    """</code>
+    <i>[...]</i>
+</pre>
+</td><td>
+  <p>The following is a literal block:</p>
+<pre>
+    Literal /
+           / Block
+</pre>
+  <p>This is a paragraph following the literal block.</p>
+</table>
+
+<p> Literal blocks are indented relative to the paragraphs that
+introduce them; for example, in the previous example, the word
+"Literal" is displayed with four leading spaces, not eight.  Also,
+note that the double colon ("<code>::</code>") that introduces the
+literal block is rendered as a single colon. </p>
+
+<a name="doctest"/>
+<h3> 2.5. Doctest Blocks </h3>
+
+<p> Doctest blocks contain examples consisting of Python expressions
+and their output.  Doctest blocks can be used by the <a
+href="http://www.python.org/doc/current/lib/module-doctest.html">doctest</a>
+module to test the documented object.  Doctest blocks begin with the
+special sequence "<code>>>></code>".  Doctest blocks are
+delimited from surrounding blocks by blank lines.  Doctest blocks may
+not contain blank lines.  The following example shows how doctest
+blocks can be used: </p>
+
+<table border="1" cellspacing="0" cellpadding="3" width="95%">
+  <tr><th width="50%">Docstring Input</th><th width="50%">Rendered Output</th>
+  <tr valign="top"><td>
+<pre>
+<code class="keyword">def</code> <code class="function">example</code>():
+    <code class="string">"""
+    The following is a doctest block:
+    
+        >>> print (1+3,
+        ...        3+5)
+        (4, 8)
+        >>> 'a-b-c-d-e'.split('-')
+        ['a', 'b', 'c', 'd', 'e']
+
+    This is a paragraph following the
+    doctest block.
+    """</code>
+    <i>[...]</i>
+</pre>
+</td><td>
+<p> The following is a doctest block: </p>
+<pre>
+<code class="prompt">>>></code> <code class="keyword">print</code> <code class="pycode">(1+3,</code>
+<code class="prompt">...</code>        <code class="pycode">3+5)</code>
+<code class="output">(4, 8)</code>
+<code class="prompt">>>></code> <code class="string">'a-b-c-d-e'</code><code class="pycode">.split('-')</code>
+<code class="output">['a', 'b', 'c', 'd', 'e']</code>
+</pre>
+  <p>This is a paragraph following the doctest block.</p>
+</table>
+
+<a name="fieldlist"/>
+<h3> 2.6. Fields </h3>
+
+<p> Fields are used to describe specific properties of a documented
+object.  For example, fields can be used to define the parameters and
+return value of a function; the instance variables of a class; and the
+author of a module.  Each field is marked by a <i>field tag</i>, which
+consist of an at sign ("<code>@</code>") followed by a <i>field
+name</i>, optionally followed by a space and a <i>field argument</i>,
+followed by a colon ("<code>:</code>").  For example,
+"<code>@return:</code>" and "<code>@param x:</code>" are field
+tags. </p>
+
+<p> Fields can contain paragraphs, lists, literal blocks, and doctest
+blocks.  All of the blocks contained by a field must all have equal
+indentation, and that indentation must be greater than or equal to the
+indentation of the field's tag.  If the first contained block is a
+paragraph, it may appear on the same line as the field tag, separated
+from the field tag by one or more spaces.  All other block types must
+follow on separate lines. </p>
+
+<p> Fields must be placed at the end of the docstring, after the
+description of the object.  Fields may be included in any order. </p>
+
+<p> Fields do not need to be separated from other blocks by a blank
+line.  Any line that begins with a field tag followed by a space or
+newline is considered a field. </p>
+
+<p> The following example illustrates how fields can be
+used: </p>
+
+<table border="1" cellspacing="0" cellpadding="3" width="95%">
+  <tr><th width="50%">Docstring Input</th><th width="50%">Rendered Output</th>
+  <tr valign="top"><td>
+<pre>
+<code class="keyword">def</code> <code class="function">example</code>():
+    <code class="string">"""
+    <code class="field">@param x:</code> This is a description of
+        the parameter x to a function.
+        Note that the description is
+        indented four spaces.
+    <code class="field">@type x:</code> This is a description of
+        x's type.
+    <code class="field">@return:</code> This is a description of
+        the function's return value.
+
+        It contains two paragraphs.
+    """</code>
+    <i>[...]</i>
+</pre>
+</td><td>
+    <dl><dt><b>Parameters:</b></dt>
+      <dd><code><b>x</b></code> -
+         This is a description of the parameter x to a function. Note that the 
+        description is indented four spaces.
+        <br><i>          
+        (type=This is a description of x's type.)</i>
+      </dd>
+    </dl>
+    <dl><dt><b>Returns:</b></dt>
+      <dd>
+        This is a description of the function's return value.
+        <p>It contains two paragraphs.</p>
+      </dd>
+</td></tr>
+</table>
+
+<p> For a list of the fields that are supported by epydoc, see
+the <a href="fields.html#fields">epydoc fields page</a>.
+
+<!-- =========== INLINE MARKUP ============= -->
+<a name="inline"/>
+<h2> 3. Inline Markup </h2>
+
+<p> Inline markup has the form
+"<i>x</i><code>{</code>...<code>}</code>", where "<i>x</i>" is a
+single capital letter that specifies how the text between the braces
+should be rendered.  Inline markup is recognized within paragraphs and
+section headings.  It is <i>not</i> recognized within literal and
+doctest blocks.  Inline markup can contain multiple words, and can
+span multiple lines.  Inline markup may be nested. </p>
+
+<p> A matching pair of curly braces is only interpreted as inline
+markup if the left brace is immediately preceeded by a capital letter.
+So in most cases, you can use curly braces in your text without any
+form of escaping.  However, you <i>do</i> need to escape curly braces
+when: </p>
+
+<ol>
+  <li> You want to include a single (un-matched) curly brace.
+  <li> You want to preceed a matched pair of curly braces with a
+  capital letter. </li>
+</ol>
+
+<p> Note that there is no valid Python expression where a pair of
+matched curly braces is immediately preceeded by a capital letter
+(except within string literals).  In particular, you never need to
+escape braces when writing Python dictionaries.  See <a
+href="#escaping">section 3.5</a> for a discussion of escaping.  </p>
+
+<a name="basic_inline"/>
+<h3> 3.1. Basic Inline Markup </h3>
+
+<p> Epytext defines four types of inline markup that specify how text
+should be displayed: </p>
+
+<ul>
+  <li> <code>I{</code>...<code>}</code>: Italicized text. </li>
+  <li> <code>B{</code>...<code>}</code>: Bold-faced text. </li>
+  <li> <code>C{</code>...<code>}</code>: Source code or a Python
+  identifier. </li>
+  <li> <code>M{</code>...<code>}</code>: A mathematical
+  expression. </li>
+</ul>
+
+<p> By default, source code is rendered in a fixed width font; and
+mathematical expressions are rendered in italics.  But those defaults
+may be changed by modifying the CSS stylesheet.  The following example
+illustrates how the four basic markup types can be used: </p>
+
+<table border="1" cellspacing="0" cellpadding="3" width="95%">
+  <tr><th width="50%">Docstring Input</th><th width="50%">Rendered Output</th>
+  <tr valign="top"><td>
+<pre>
+<code class="keyword">def</code> <code class="function">example</code>():
+    <code class="string">"""
+    I{B{Inline markup} may be nested; and
+    it may span} multiple lines.
+
+      - I{Italicized text}
+      - B{Bold-faced text}
+      - C{Source code}
+      - M{Math}
+
+    Without the capital letter, matching
+    braces are not interpreted as markup:
+    C{my_dict={1:2, 3:4}}.
+    """</code>
+    <i>[...]</i>
+</pre>
+</td><td>
+  <i><b>Inline markup</b> may be nested; and it may span</i>
+  multiple lines.
+  <ul>
+    <li> <i>Italicized text</i> </li> 
+    <li> <b>Bold-faced text</b> </li> 
+    <li> <code>Source code</code> </li> 
+    <li> Math: <i>m*x+b</i> </li> 
+  </ul>
+  Without the capital letter, matching
+  braces are not interpreted as markup:
+  <code>my_dict={1:2, 3:4}</code>.
+</td></tr>
+</table>
+
+<a name="urls"/>
+<h3> 3.2. URLs </h3>
+
+<p> The inline markup construct
+"<code>U{</code><i>text</i><code><</code><i>url</i><code>>}</code>"
+is used to create links to external URLs and URIs.  "<i>Text</i>" is
+the text that should be displayed for the link, and "<i>url</i>" is
+the target of the link.  If you wish to use the URL as the text for
+the link, you can simply write
+"<code>U{</code><i>url</i><code>}</code>".  Whitespace within URL
+targets is ignored.  In particular, URL targets may be split over
+multiple lines.  The following example illustrates how URLs can be
+used: </p>
+
+<table border="1" cellspacing="0" cellpadding="3" width="95%">
+  <tr><th width="50%">Docstring Input</th><th width="50%">Rendered Output</th>
+  <tr valign="top"><td rowspan="2">
+<pre>
+<code class="keyword">def</code> <code class="function">example</code>():
+    <code class="string">"""
+    - U{www.python.org}
+    - U{http://www.python.org}
+    - U{The epydoc homepage<http://
+      epydoc.sourceforge.net>}
+    - U{The B{I{Python}} homepage
+      <www.python.org>}
+    - U{Edward Loper<mailto:edloper@
+      gradient.cis.upenn.edu>}
+    """</code>
+    <i>[...]</i>
+</pre>
+</td><td>
+  <ul>
+    <li> <a href="http://www.python.org">www.python.org</a> </li>
+    <li> <a href="http://www.python.org">http://www.python.org</a> </li>
+    <li> <a href="http://epydoc.sourceforge.net">The epydoc homepage</a> </li>
+    <li> <a href="http://www.python.org">The <b><i>Python</i></b> homepage</a> </li>
+    <li> <a href="mailto:edloper at gradient.cis.upenn.edu">Edward Loper</a> </li>
+  </ul>
+</td></tr>
+</table>
+
+<a name="links"/>
+<h3> 3.3. Documentation Crossreference Links </h3>
+
+<p> The inline markup construct
+"<code>L{</code><i>text</i><code><</code><i>object</i><code>>}</code>"
+is used to create links to the documentation for other Python objects.
+"<i>Text</i>" is the text that should be displayed for the link, and
+"<i>object</i>" is the name of the Python object that should be linked
+to.  If you wish to use the name of the Python object as the text for
+the link, you can simply write
+"<code>L{</code><i>object</i><code>}</code>".  Whitespace within
+object names is ignored.  In particular, object names may be split
+over multiple lines.  The following example illustrates how
+documentation crossreference links can be used: </p>
+
+<table border="1" cellspacing="0" cellpadding="3" width="95%">
+  <tr><th width="50%">Docstring Input</th><th width="50%">Rendered Output</th>
+  <tr valign="top"><td rowspan="2">
+<pre>
+<code class="keyword">def</code> <code class="function">example</code>():
+    <code class="string">"""
+    - L{x_transform}
+    - L{search<re.search>}
+    - L{The I{x-transform} function
+      <x_transform>}
+    """</code>
+    <i>[...]</i>
+</pre>
+</td><td>
+  <ul>
+    <li> <a href="examples/example.html#x_intercept"
+    ><code>x_transform</code></a></li>
+    <li> <a href="examples/sre.html#search"
+    ><code>search</code></a></li>
+    <li> <a href="examples/example.html#x_intercept"
+    ><code>The <i>x-transform</i> function</code></a></li>
+    </ul>
+
+</td></tr>
+</table>
+
+<p> In order to find the object that corresponds to a given name,
+epydoc checks the following locations, in order: </p>
+
+<ol>
+  <li> If the link is made from a class or method docstring, then
+  epydoc checks for a method, instance variable, or class variable
+  with the given name. </li>
+  <li> Next, epydoc looks for an object with the given name in the
+  current module. </li>
+  <li> Epydoc then tries to import the given name as a module.  If
+  the current module is contained in a package, then epydoc will also
+  try importing the given name from all packages containing the
+  current module. </li>
+  <li> Finally, epydoc tries to divide the given name into a module
+  name and an object name, and to import the object from the module.
+  If the current module is contained in a package, then epydoc will
+  also try importing the module name from all packages containing the
+  current module. </li> </ol>
+
+<p> If no object is found that corresponds with the given name, then
+epydoc issues a warning. </p>
+
+<a name="indexed"/>
+<h3> 3.4. Indexed Terms </h3>
+
+<p> Epydoc automatically creates an index of term definitions for the
+API documentation.  The inline markup construct
+"<code>X{</code>...<code>}</code>" is used to mark terms for inclusion
+in the index.  The term itself will be italicized; and a link will be
+created from the index page to the location of the term in the text.
+The following example illustrates how index terms can be used: </p>
+
+<table border="1" cellspacing="0" cellpadding="3" width="95%">
+  <tr><th width="50%">Docstring Input</th><th width="50%">Rendered Output</th>
+  <tr valign="top"><td rowspan="2">
+<pre>
+<code class="keyword">def</code> <code class="function">example</code>():
+    <code class="string">"""
+    An X{index term} is a term that
+    should be included in the index.
+    """</code>
+    <i>[...]</i>
+</pre>
+</td><td>
+  An <a name="index-index_term"/><i>index term</i> is a term that
+  should be included in the index.
+
+</td></tr><tr><td>
+
+  <table border="1" cellpadding="3" cellspacing="0" width="95%" class="grayf">
+    <tr>
+      <th colspan="2" class="grayc">Index</th></tr>
+      <tr><td width="15%">index term</td>
+      <td><i><a href="#index-index_term">example</a></i></tr></td>
+      <tr><td width="15%">x intercept</td>
+      <td><i><a href="examples/example.html#index-x_intercept">x_intercept</a></i></tr></td>
+      <tr><td width="15%">y intercept</td>
+      <td><i><a href="examples/example.html#index-y_intercept">x_intercept</a></i></tr></td>
+    </table>
+
+</td></tr>
+</table>
+
+<a name="symbols"/>
+<h3> 3.5. Symbols </h3>
+
+<p> Symbols are used to insert special characters in your
+documentation.  A symbol has the form
+"<code>S{</code><i>code</i><code>}</code>", where <i>code</i> is a
+symbol code that specifies what character should be produced.  The
+following example illustrates how symbols can be used to generate
+special characters: </p>
+
+<table border="1" cellspacing="0" cellpadding="3" width="95%">
+  <tr><th width="50%">Docstring Input</th><th width="50%">Rendered Output</th>
+  <tr valign="top"><td rowspan="2">
+<pre>
+<code class="keyword">def</code> <code class="function">example</code>():
+    <code class="string">"""
+    Symbols can be used in equations:
+      - S{sum}S{alpha}/x S{<=} S{beta}
+
+    S{<-} and S{larr} both give left
+    arrows.  Some other arrows are
+    S{rarr}, S{uarr}, and S{darr}.
+    """</code>
+    <i>[...]</i>
+</pre>
+</td><td>
+  <p>Symbols can be used in equations:</p>
+  <ul><li>∑α/x ≤ β</li></ul>
+  <p>← and ← both give left arrows.  Some other arrows are
+  →, ↑, and ↓.</p>
+</td></tr>
+</table>
+
+<p> Although symbols can be quite useful, you should keep in mind that
+they can make it harder to read your docstring in plaintext.  In
+general, symbols should be used sparingly.  For a complete list of the
+symbols that are currently supported, see the reference documentation
+for <a href="api/public/epydoc.markup.epytext-module.html#SYMBOLS"
+>epydoc.epytext.SYMBOLS</a>. </p>
+
+<a name="escaping"/>
+<h3> 3.6. Escaping </h3>
+
+<p> Escaping is used to write text that would otherwise be interpreted
+as epytext markup.  Epytext was carefully constructed to minimize the
+need for this type of escaping; but sometimes, it is unavoidable.
+Escaped text has the form "<code>E{</code><i>code</i><code>}</code>",
+where <i>code</i> is an escape code that specifies what character
+should be produced.  If the escape code is a single character (other
+than "<code>{</code>" or "<code>}</code>"), then that character is
+produced.  For example, to begin a paragraph with a dash (which would
+normally signal a list item), write "<code>E{-}</code>".  In addition,
+two special escape codes are defined: "<code>E{lb}</code>" produces a
+left curly brace ("<code>{</code>"); and "<code>E{rb}</code>" produces
+a right curly brace ("<code>}</code>").  The following example
+illustrates how escaping can be used: </p>
+
+<table border="1" cellspacing="0" cellpadding="3" width="95%">
+  <tr><th width="50%">Docstring Input</th><th width="50%">Rendered Output</th>
+  <tr valign="top"><td rowspan="2">
+<pre>
+<code class="keyword">def</code> <code class="function">example</code>():
+    <code class="string">"""
+    This paragraph ends with two
+    colons, but does not introduce
+    a literal blockE{:}E{:}
+
+    E{-} This is not a list item.
+
+    Escapes can be used to write
+    unmatched curly braces:
+    E{rb}E{lb}
+    """</code>
+    <i>[...]</i>
+</pre>
+</td><td>
+  <p>This paragraph ends with two colons, but does not introduce
+  a literal block::</p>
+  <p>- This is not a list item.</p>
+  <p>Escapes can be used to write unmatched curly braces: }{</p>
+</td></tr>
+</table>
+
+<a name="graphs"/>
+<h3> 3.7. Graphs </h3>
+
+<p> The inline markup construct "<code>G{</code><i>graphtype</i>
+<i>args...</i>}</code>" is used to insert automatically generated
+graphs.  The following graphs generation constructions are currently
+defines:</p>
+
+<table border="1" cellspacing="0" cellpadding="3" width="95%">
+<tr><th width="10%">Markup</th><th width="90%">Description</th></tr>
+
+  <tr valign="top">
+    <td><pre>G{classtree <code class="user">classes...</code>}</pre></td>
+    <td> Display a class hierarchy for the given class or classes
+    (including all superclasses & subclasses).  If no class is
+    specified, and the directive is used in a class's docstring, then
+    that class's class hierarchy will be displayed.  </td></tr>
+
+  <tr valign="top">
+    <td><pre>G{packagetree <code class="user">modules...</code>}</pre></td>
+    <td> Display a package hierarchy for the given module or modules
+    (including all subpackages and submodules).  If no module is
+    specified, and the directive is used in a module's docstring, then
+    that module's package hierarchy will be displayed.  </td></tr>
+
+  <tr valign="top">
+    <td><pre>G{impotgraph <code class="user">modules...</code>}</pre></td>
+    <td> Display an import graph for the given module or modules.  If
+    no module is specified, and the directive is used in a module's
+    docstring, then that module's import graph will be displayed.
+    </td></tr>
+
+  <tr valign="top">
+    <td><pre>G{callgraph <code class="user">functions...</code>}</pre></td>
+    <td> Display a call graph for the given function or functions.  If
+    no function is specified, and the directive is used in a
+    function's docstring, then that function's call graph will be
+    displayed.  </td></tr>
+</table>
+
+<!-- =========== CHARACTERS ============= -->
+<a name="characters"/>
+<h2> 4. Characters </h2>
+
+<a name="valid_characters"/>
+<h3> 4.1. Valid Characters </h3>
+
+<p> Valid characters for an epytext docstring are space ("\040");
+newline ("\012"); and any letter, digit, or punctuation, as defined by
+the current locale.  Control characters ("\000"-"\010" and
+"\013"-"\037") are not valid content characters.  Tabs ("\011") are
+expanded to spaces, using the same algorithm used by the Python
+parser.  Carridge-return/newline pairs ("\015\012") are converted to
+newlines. </p>
+
+<a name="content_characters"/>
+<h3> 4.2. Content Characters </h3>
+
+<p> Characters in a docstring that are not involved in markup are
+called <i>content characters</i>.  Content characters are always
+displayed as-is.  In particular, HTML codes are <i>not</i> passed
+through.  For example, consider the following example: </p>
+
+<table border="1" cellspacing="0" cellpadding="3" width="95%">
+  <tr><th width="50%">Docstring Input</th><th width="50%">Rendered Output</th>
+  <tr valign="top"><td>
+<pre>
+<code class="keyword">def</code> <code class="function">example</code>():
+    <code class="string">"""
+    <B>test</B>
+    """</code>
+    <i>[...]</i>
+</pre>
+</td><td>
+  <B>test</B>
+</table>
+
+<p> The docstring is rendered as "<B>test</B>", and not
+as the word "test" in bold face. </p>
+
+<a name="whitespace"/>
+<h3> 4.3. Spaces and Newlines </h3>
+
+<p> In general, spaces and newlines within docstrings are treated as
+<i>soft spaces</i>.  In other words, sequences of spaces and newlines
+(that do not contain a blank line) are rendered as a single space, and
+words may wrapped at spaces.  However, within literal blocks and
+doctest blocks, spaces and newlines are preserved, and no
+word-wrapping occurs; and within URL targets and documentation link
+targets, whitespace is ignored. </p>
+
+<!-- =========== WARNINGS ============= -->
+<!-- (make sure this is consistant w/ the man page!!) -->
+<a name="warnings"/>
+<h2> 5. Warnings and Errors </h2>
+
+<p>If epydoc encounters an error while processing a docstring, it
+issues a warning message that describes the error, and attempts to
+continue generating documentation.  Errors related to epytext are
+divided into three categories: </p>
+
+<ul>
+  <li> <b>Epytext Warnings</b> are caused by epytext docstrings that
+  contain questionable or suspicious markup.  Epytext warnings do
+  not prevent the docstring in question from being parsed. </li>
+  <li> <b> Field Warnings</b> are caused by epytext docstrings
+  containing invalid fields.  The contents of the invalid field are
+  generally ignored. </li>
+  <li> <b>Epytext Errors</b> are caused by epytext docstrings that
+  contain invalid markup.  Whenever an epytext error is detected,
+  the docstring in question is treated as a plaintext docstring. </li>
+</ul>
+
+<p> The following sections list and describe the warning messages that
+epydoc can generate.  They are intended as a reference resource, which
+you can search for more information and possible causes if you
+encounter an error and do not understand it.  These descriptions are
+also available in the <a
+href="epydoc-man.html#lbAH"><code>epydoc(1)</code> man page</a>. </p>
+
+<h3> 5.1. Epytext Warnings </h3>
+<ul>
+  
+<li><b class="error">Possible mal-formatted field item.</b> <br />
+  Epytext detected a line that looks like a field item, but is not
+  correctly formatted.  This typically occurs when the trailing colon
+  (<b>":"</b>) is not included in the field tag.
+
+<li><b class="error">Possible heading typo.</b> <br />
+  Epytext detected a pair of lines that looks like a heading, but the
+  number of underline characters does not match the number of
+  characters in the heading.  The number of characters in these two
+  lines must match exactly for them to be considered a
+  heading.
+
+</ul>
+<h3> 5.2. Field Warnings </h3>
+<ul>
+  
+<li><b class="error"><code>@param</code> for unknown parameter <i>param</i>.</b> <br />
+  A <code>@param</code> field was used to specify the type for a parameter that is
+  not included in the function's signature.  This is typically caused
+  by a typo in the parameter name.
+
+<li><b class="error"><i>tag</i> did not expect an argument.</b> <br />
+  The field tag <i>tag</i> was used with an argument, but it does not
+  take one.
+
+<li><b class="error"><i>tag</i> expected an argument.</b> <br />
+  The field tag <i>tag</i> was used without an argument, but it
+  requires one.
+
+<li><b class="error"><code>@type</code> for unknown parameter <i>param</i>.</b> <br />
+  A <code>@type</code> field was used to specify the type for a parameter that is
+  not included in the function's signature.  This is typically caused
+  by a typo in the parameter name.
+
+<li><b class="error"><code>@type</code> for unknown variable <i>var</i>.</b> <br />
+  A <code>@type</code> field was used to specify the type for a variable, but no
+  other information is known about the variable.  This is typically
+  caused by a typo in the variable name.
+
+<li><b class="error">Unknown field tag <i>tag</i>.</b> <br />
+  A docstring contains a field with the unknown tag <i>tag</i>.
+
+<li><b class="error">Redefinition of <i>field</i>.</b> <br />
+  Multiple field tags define the value of <i>field</i> in the same
+  docstring, but <i>field</i> can only take a single value.
+  
+</ul>
+<h3> 5.3. Epytext Errors </h3> 
+<ul>
+
+<li><b class="error">Bad link target.</b> <br />
+  The target specified for an inline link contruction (<code>L{...}</code>)
+  is not well-formed.  Link targets must be valid python identifiers.
+
+<li><b class="error">Bad uri target.</b> <br />
+  The target specified for an inline uri contruction (<code>U{...}</code>)
+  is not well-formed.  This typically occurs if inline markup is
+  nested inside the URI target.
+
+<li><b class="error">Fields must be at the top level.</b> <br />
+  The list of fields (<code>@param</code>, etc.) is contained by some other
+  block structure (such as a list or a section).
+
+<li><b class="error">Fields must be the final elements in an epytext
+string.</b> <br />
+  The list of fields (<code>@param</code>, etc.) is not at the end of a
+  docstring.
+
+<li><b class="error">Headings must occur at top level.</b> <br />
+  The heading is contianed in some other block structure (such as a
+  list).
+
+<li><b class="error">Improper doctest block indentation.</b> <br />
+  The doctest block dedents past the indentation of its initial prompt
+  line.
+
+<li><b class="error">Improper heading indentation.</b> <br />
+  The heading for a section is not left-aligned with the paragraphs in
+  the section that contains it.
+
+<li><b class="error">Improper paragraph indentation.</b> <br />
+  The paragraphs within a block are not left-aligned.  This error is
+  often generated when plaintext docstrings are parsed using epytext.
+
+<li><b class="error">Invalid escape.</b> <br />
+  An unknown escape sequence was used with the inline escape
+  construction (<code>E{...}</code>).
+
+<li><b class="error">Lists must be indented.</b> <br />
+  An unindented line immediately following a paragraph starts with a
+  list bullet.  Epydoc is not sure whether you meant to start a new
+  list item, or meant for a paragraph to include a word that looks
+  like a bullet.  If you intended the former, then indent the list.
+  If you intended the latter, then change the word-wrapping of the
+  paragraph, or escape the first character of the word that looks like
+  a bullet.
+  
+<li><b class="error">Unbalanced '{'.</b> <br />
+  The docstring contains unbalanced braces.  Epytext requires that all
+  braces must be balanced.  To include a single unbalanced brace, use
+  the escape sequences <code>E{lb}</code> (left brace) and <code>E{rb}</code> (right brace).
+
+<li><b class="error">Unbalanced '}'.</b> <br />
+  The docstring contains unbalanced braces.  Epytext requires that all
+  braces must be balanced.  To include a single unbalanced brace, use
+  the escape sequences <code>E{lb}</code> (left brace) and <code>E{rb}</code> (right brace).
+
+<li><b class="error">Unknown inline markup tag.</b> <br />
+  An unknown tag was used with the inline markup construction
+  (<code><i>x</i>{...}</code>).
+
+<li><b class="error">Wrong underline character for heading.</b> <br />
+  The underline character used for this section heading does not
+  indicate an appopriate section level.  The "<code>=</code>" character
+  should be used to underline sections; "<code>-</code>" for subsections;
+  and "<code>~</code>" for subsubsections.
+
+</ul>
+
+</div>
+<table width="100%" class="navbox" cellpadding="1" cellspacing="0">
+  <tr>
+  <a class="nav" href="index.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="index.html">
+    Home</a></td></a>
+  <a class="nav" href="installing.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="installing.html">
+    Installing Epydoc</a></td></a>
+  <a class="nav" href="using.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="using.html">
+    Using Epydoc</a></td></a>
+  <a class="nav" href="epytext.html">
+    <td align="center" width="20%" class="navselect" class="nav">
+    <a class="nav" href="epytext.html">
+    Epytext</a></td></a>
+  <td align="center" width="20%" class="nav">
+    
+    <A href="http://sourceforge.net/projects/epydoc"> 
+    <IMG src="sflogo.png" 
+    width="88" height="26" border="0" alt="SourceForge"
+    align="top"/></A></td>
+    </tr>
+</table>
+</body>
+</html>
diff --git a/doc/epytextintro.html b/doc/epytextintro.html
new file mode 100644
index 0000000..2a8ece2
--- /dev/null
+++ b/doc/epytextintro.html
@@ -0,0 +1,90 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html> <head>
+<title>A Brief Introduction to Epytext </title>
+<link rel="stylesheet" href="epydoc.css" type="text/css"/>
+</head>
+<!-- $Id: epytextintro.html 1417 2007-01-17 21:41:59Z edloper $ -->
+
+<body>
+<div class="body">
+<h1> A Brief Introduction to Epytext </h1>
+
+<p> Epytext is a simple lightweight markup language that lets you add
+formatting and structure to docstrings.  Epydoc uses that formatting
+and structure to produce nicely formatted API documentation.  The
+following example (which has an unusually high ratio of documentaiton
+to code) illustrates some of the basic features of epytext: </p>
+
+<div class="screen"><pre>
+<code class="keyword">def</code> <code class="function">x_intercept</code>(m, b):
+    <code class="string">"""
+    Return the x intercept of the line M{y=m*x+b}.  The X{x intercept}
+    of a line is the point at which it crosses the x axis (M{y=0}).
+
+    This function can be used in conjuction with L{z_transform} to
+    find an arbitrary function's zeros.
+
+    <code class="field">@type  m:</code> number
+    <code class="field">@param m:</code> The slope of the line.
+    <code class="field">@type  b:</code> number
+    <code class="field">@param b:</code> The y intercept of the line.  The X{y intercept} of a
+              line is the point at which it crosses the y axis (M{x=0}).
+    <code class="field">@rtype:</code>   number
+    <code class="field">@return:</code>  the x intercept of the line M{y=m*x+b}.
+    """</code>
+    <code class="keyword">return</code> -b/m
+</pre></div>
+
+<p> You can compare this function definition with the <a
+href="examples/epytext_example-module.html#x_intercept" target="_blank">API
+documentation</a> generated by epydoc.  Note that: </p>
+
+<ul>
+  <li> Paragraphs are separated by blank lines. </li>
+  <li> Inline markup has the form "<i>x</i><code>{...}</code>", where
+  "<i>x</i>" is a single capital letter.  This example uses
+  inline markup to mark mathematical expressions
+  ("<code>M{...}</code>"); terms that should be indexed
+  ("<code>X{...}</code>"); and links to the documentation of
+  other objects ("<code>L{...}</code>"). </li>
+  <li> Descriptions of parameters, return values, and types are
+  marked with "<code>@<i>field</i>:</code>" or
+  "<code>@<i>field</i>&nbsp<i>arg</i>:</code>", where
+  "<code><i>field</i></code>" identifies the kind of description, and
+  "<code><i>arg</i></code>" specifies what object is described. </li>
+</ul>
+
+<p> For more information about the epytext markup language, see the <a
+href="epytext.html">epytext manual</a>.  Epytext is intentionally very
+lightweight.  If you wish to use a more expressive markup language, I
+recommend <a href="othermarkup.html">reStructuredText</a>. </p>
+
+</div>
+<table width="100%" class="navbox" cellpadding="1" cellspacing="0">
+  <tr>
+  <a class="nav" href="index.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="index.html">
+    Home</a></td></a>
+  <a class="nav" href="installing.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="installing.html">
+    Installing Epydoc</a></td></a>
+  <a class="nav" href="using.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="using.html">
+    Using Epydoc</a></td></a>
+  <a class="nav" href="epytext.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="epytext.html">
+    Epytext</a></td></a>
+  <td align="center" width="20%" class="nav">
+    
+    <A href="http://sourceforge.net/projects/epydoc"> 
+    <IMG src="sflogo.png" 
+    width="88" height="26" border="0" alt="SourceForge"
+    align="top"/></A></td>
+    </tr>
+</table>
+</body>
+</html>
diff --git a/doc/examples/class-tree.html b/doc/examples/class-tree.html
new file mode 100644
index 0000000..7dd93c5
--- /dev/null
+++ b/doc/examples/class-tree.html
@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Class Hierarchy</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epytext_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >   Trees   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%"> </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="class-tree.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<center><b>
+ [ <a href="module-tree.html">Module Hierarchy</a>
+ | <a href="class-tree.html">Class Hierarchy</a> ]
+</b></center><br />
+<h1 class="epydoc">Class Hierarchy</h1>
+<ul class="nomargin-top">
+    <li> <strong class="uidlink">exceptions.Exception</strong>:
+      <em class="summary">Common base class for all exceptions.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="sre_constants.error-class.html">sre_constants.error</a></strong>
+    </li>
+    </ul>
+    </li>
+    <li> <strong class="uidlink"><a href="sre.Scanner-class.html" onclick="show_private();">sre.Scanner</a></strong>
+    </li>
+</ul>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epytext_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >   Trees   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0.1 on Wed Jan 30 14:10:06 2008
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/examples/crarr.png b/doc/examples/crarr.png
new file mode 100644
index 0000000..26b43c5
Binary files /dev/null and b/doc/examples/crarr.png differ
diff --git a/doc/examples/epydoc.css b/doc/examples/epydoc.css
new file mode 100644
index 0000000..86d4170
--- /dev/null
+++ b/doc/examples/epydoc.css
@@ -0,0 +1,322 @@
+
+
+/* Epydoc CSS Stylesheet
+ *
+ * This stylesheet can be used to customize the appearance of epydoc's
+ * HTML output.
+ *
+ */
+
+/* Default Colors & Styles
+ *   - Set the default foreground & background color with 'body'; and 
+ *     link colors with 'a:link' and 'a:visited'.
+ *   - Use bold for decision list terms.
+ *   - The heading styles defined here are used for headings *within*
+ *     docstring descriptions.  All headings used by epydoc itself use
+ *     either class='epydoc' or class='toc' (CSS styles for both
+ *     defined below).
+ */
+body                        { background: #ffffff; color: #000000; }
+p                           { margin-top: 0.5em; margin-bottom: 0.5em; }
+a:link                      { color: #0000ff; }
+a:visited                   { color: #204080; }
+dt                          { font-weight: bold; }
+h1                          { font-size: +140%; font-style: italic;
+                              font-weight: bold; }
+h2                          { font-size: +125%; font-style: italic;
+                              font-weight: bold; }
+h3                          { font-size: +110%; font-style: italic;
+                              font-weight: normal; }
+code                        { font-size: 100%; }
+/* N.B.: class, not pseudoclass */
+a.link                      { font-family: monospace; }
+ 
+/* Page Header & Footer
+ *   - The standard page header consists of a navigation bar (with
+ *     pointers to standard pages such as 'home' and 'trees'); a
+ *     breadcrumbs list, which can be used to navigate to containing
+ *     classes or modules; options links, to show/hide private
+ *     variables and to show/hide frames; and a page title (using
+ *     <h1>).  The page title may be followed by a link to the
+ *     corresponding source code (using 'span.codelink').
+ *   - The footer consists of a navigation bar, a timestamp, and a
+ *     pointer to epydoc's homepage.
+ */ 
+h1.epydoc                   { margin: 0; font-size: +140%; font-weight: bold; }
+h2.epydoc                   { font-size: +130%; font-weight: bold; }
+h3.epydoc                   { font-size: +115%; font-weight: bold;
+                              margin-top: 0.2em; }
+td h3.epydoc                { font-size: +115%; font-weight: bold;
+                              margin-bottom: 0; }
+table.navbar                { background: #a0c0ff; color: #000000;
+                              border: 2px groove #c0d0d0; }
+table.navbar table          { color: #000000; }
+th.navbar-select            { background: #70b0ff;
+                              color: #000000; } 
+table.navbar a              { text-decoration: none; }  
+table.navbar a:link         { color: #0000ff; }
+table.navbar a:visited      { color: #204080; }
+span.breadcrumbs            { font-size: 85%; font-weight: bold; }
+span.options                { font-size: 70%; }
+span.codelink               { font-size: 85%; }
+td.footer                   { font-size: 85%; }
+
+/* Table Headers
+ *   - Each summary table and details section begins with a 'header'
+ *     row.  This row contains a section title (marked by
+ *     'span.table-header') as well as a show/hide private link
+ *     (marked by 'span.options', defined above).
+ *   - Summary tables that contain user-defined groups mark those
+ *     groups using 'group header' rows.
+ */
+td.table-header             { background: #70b0ff; color: #000000;
+                              border: 1px solid #608090; }
+td.table-header table       { color: #000000; }
+td.table-header table a:link      { color: #0000ff; }
+td.table-header table a:visited   { color: #204080; }
+span.table-header           { font-size: 120%; font-weight: bold; }
+th.group-header             { background: #c0e0f8; color: #000000;
+                              text-align: left; font-style: italic; 
+                              font-size: 115%; 
+                              border: 1px solid #608090; }
+
+/* Summary Tables (functions, variables, etc)
+ *   - Each object is described by a single row of the table with
+ *     two cells.  The left cell gives the object's type, and is
+ *     marked with 'code.summary-type'.  The right cell gives the
+ *     object's name and a summary description.
+ *   - CSS styles for the table's header and group headers are
+ *     defined above, under 'Table Headers'
+ */
+table.summary               { border-collapse: collapse;
+                              background: #e8f0f8; color: #000000;
+                              border: 1px solid #608090;
+                              margin-bottom: 0.5em; }
+td.summary                  { border: 1px solid #608090; }
+code.summary-type           { font-size: 85%; }
+table.summary a:link        { color: #0000ff; }
+table.summary a:visited     { color: #204080; }
+
+
+/* Details Tables (functions, variables, etc)
+ *   - Each object is described in its own div.
+ *   - A single-row summary table w/ table-header is used as
+ *     a header for each details section (CSS style for table-header
+ *     is defined above, under 'Table Headers').
+ */
+table.details               { border-collapse: collapse;
+                              background: #e8f0f8; color: #000000;
+                              border: 1px solid #608090;
+                              margin: .2em 0 0 0; }
+table.details table         { color: #000000; }
+table.details a:link        { color: #0000ff; }
+table.details a:visited     { color: #204080; }
+
+/* Fields */
+dl.fields                   { margin-left: 2em; margin-top: 1em;
+                              margin-bottom: 1em; }
+dl.fields dd ul             { margin-left: 0em; padding-left: 0em; }
+dl.fields dd ul li ul       { margin-left: 2em; padding-left: 0em; }
+div.fields                  { margin-left: 2em; }
+div.fields p                { margin-bottom: 0.5em; }
+
+/* Index tables (identifier index, term index, etc)
+ *   - link-index is used for indices containing lists of links
+ *     (namely, the identifier index & term index).
+ *   - index-where is used in link indices for the text indicating
+ *     the container/source for each link.
+ *   - metadata-index is used for indices containing metadata
+ *     extracted from fields (namely, the bug index & todo index).
+ */
+table.link-index            { border-collapse: collapse;
+                              background: #e8f0f8; color: #000000;
+                              border: 1px solid #608090; }
+td.link-index               { border-width: 0px; }
+table.link-index a:link     { color: #0000ff; }
+table.link-index a:visited  { color: #204080; }
+span.index-where            { font-size: 70%; }
+table.metadata-index        { border-collapse: collapse;
+                              background: #e8f0f8; color: #000000;
+                              border: 1px solid #608090; 
+                              margin: .2em 0 0 0; }
+td.metadata-index           { border-width: 1px; border-style: solid; }
+table.metadata-index a:link { color: #0000ff; }
+table.metadata-index a:visited  { color: #204080; }
+
+/* Function signatures
+ *   - sig* is used for the signature in the details section.
+ *   - .summary-sig* is used for the signature in the summary 
+ *     table, and when listing property accessor functions.
+ * */
+.sig-name                   { color: #006080; }
+.sig-arg                    { color: #008060; }
+.sig-default                { color: #602000; }
+.summary-sig                { font-family: monospace; }
+.summary-sig-name           { color: #006080; font-weight: bold; }
+table.summary a.summary-sig-name:link
+                            { color: #006080; font-weight: bold; }
+table.summary a.summary-sig-name:visited
+                            { color: #006080; font-weight: bold; }
+.summary-sig-arg            { color: #006040; }
+.summary-sig-default        { color: #501800; }
+
+/* Subclass list
+ */
+ul.subclass-list { display: inline; }
+ul.subclass-list li { display: inline; }
+
+/* To render variables, classes etc. like functions */
+table.summary .summary-name { color: #006080; font-weight: bold;
+                              font-family: monospace; }
+table.summary
+     a.summary-name:link    { color: #006080; font-weight: bold;
+                              font-family: monospace; }
+table.summary
+    a.summary-name:visited  { color: #006080; font-weight: bold;
+                              font-family: monospace; }
+
+/* Variable values
+ *   - In the 'variable details' sections, each varaible's value is
+ *     listed in a 'pre.variable' box.  The width of this box is
+ *     restricted to 80 chars; if the value's repr is longer than
+ *     this it will be wrapped, using a backslash marked with
+ *     class 'variable-linewrap'.  If the value's repr is longer
+ *     than 3 lines, the rest will be ellided; and an ellipsis
+ *     marker ('...' marked with 'variable-ellipsis') will be used.
+ *   - If the value is a string, its quote marks will be marked
+ *     with 'variable-quote'.
+ *   - If the variable is a regexp, it is syntax-highlighted using
+ *     the re* CSS classes.
+ */
+pre.variable                { padding: .5em; margin: 0;
+                              background: #dce4ec; color: #000000;
+                              border: 1px solid #708890; }
+.variable-linewrap          { color: #604000; font-weight: bold; }
+.variable-ellipsis          { color: #604000; font-weight: bold; }
+.variable-quote             { color: #604000; font-weight: bold; }
+.variable-group             { color: #008000; font-weight: bold; }
+.variable-op                { color: #604000; font-weight: bold; }
+.variable-string            { color: #006030; }
+.variable-unknown           { color: #a00000; font-weight: bold; }
+.re                         { color: #000000; }
+.re-char                    { color: #006030; }
+.re-op                      { color: #600000; }
+.re-group                   { color: #003060; }
+.re-ref                     { color: #404040; }
+
+/* Base tree
+ *   - Used by class pages to display the base class hierarchy.
+ */
+pre.base-tree               { font-size: 80%; margin: 0; }
+
+/* Frames-based table of contents headers
+ *   - Consists of two frames: one for selecting modules; and
+ *     the other listing the contents of the selected module.
+ *   - h1.toc is used for each frame's heading
+ *   - h2.toc is used for subheadings within each frame.
+ */
+h1.toc                      { text-align: center; font-size: 105%;
+                              margin: 0; font-weight: bold;
+                              padding: 0; }
+h2.toc                      { font-size: 100%; font-weight: bold; 
+                              margin: 0.5em 0 0 -0.3em; }
+
+/* Syntax Highlighting for Source Code
+ *   - doctest examples are displayed in a 'pre.py-doctest' block.
+ *     If the example is in a details table entry, then it will use
+ *     the colors specified by the 'table pre.py-doctest' line.
+ *   - Source code listings are displayed in a 'pre.py-src' block.
+ *     Each line is marked with 'span.py-line' (used to draw a line
+ *     down the left margin, separating the code from the line
+ *     numbers).  Line numbers are displayed with 'span.py-lineno'.
+ *     The expand/collapse block toggle button is displayed with
+ *     'a.py-toggle' (Note: the CSS style for 'a.py-toggle' should not
+ *     modify the font size of the text.)
+ *   - If a source code page is opened with an anchor, then the
+ *     corresponding code block will be highlighted.  The code
+ *     block's header is highlighted with 'py-highlight-hdr'; and
+ *     the code block's body is highlighted with 'py-highlight'.
+ *   - The remaining py-* classes are used to perform syntax
+ *     highlighting (py-string for string literals, py-name for names,
+ *     etc.)
+ */
+pre.py-doctest              { padding: .5em; margin: 1em;
+                              background: #e8f0f8; color: #000000;
+                              border: 1px solid #708890; }
+table pre.py-doctest        { background: #dce4ec;
+                              color: #000000; }
+pre.py-src                  { border: 2px solid #000000; 
+                              background: #f0f0f0; color: #000000; }
+.py-line                    { border-left: 2px solid #000000; 
+                              margin-left: .2em; padding-left: .4em; }
+.py-lineno                  { font-style: italic; font-size: 90%;
+                              padding-left: .5em; }
+a.py-toggle                 { text-decoration: none; }
+div.py-highlight-hdr        { border-top: 2px solid #000000;
+                              border-bottom: 2px solid #000000;
+                              background: #d8e8e8; }
+div.py-highlight            { border-bottom: 2px solid #000000;
+                              background: #d0e0e0; }
+.py-prompt                  { color: #005050; font-weight: bold;}
+.py-more                    { color: #005050; font-weight: bold;}
+.py-string                  { color: #006030; }
+.py-comment                 { color: #003060; }
+.py-keyword                 { color: #600000; }
+.py-output                  { color: #404040; }
+.py-name                    { color: #000050; }
+.py-name:link               { color: #000050 !important; }
+.py-name:visited            { color: #000050 !important; }
+.py-number                  { color: #005000; }
+.py-defname                 { color: #000060; font-weight: bold; }
+.py-def-name                { color: #000060; font-weight: bold; }
+.py-base-class              { color: #000060; }
+.py-param                   { color: #000060; }
+.py-docstring               { color: #006030; }
+.py-decorator               { color: #804020; }
+/* Use this if you don't want links to names underlined: */
+/*a.py-name                   { text-decoration: none; }*/
+
+/* Graphs & Diagrams
+ *   - These CSS styles are used for graphs & diagrams generated using
+ *     Graphviz dot.  'img.graph-without-title' is used for bare
+ *     diagrams (to remove the border created by making the image
+ *     clickable).
+ */
+img.graph-without-title     { border: none; }
+img.graph-with-title        { border: 1px solid #000000; }
+span.graph-title            { font-weight: bold; }
+span.graph-caption          { }
+
+/* General-purpose classes
+ *   - 'p.indent-wrapped-lines' defines a paragraph whose first line
+ *     is not indented, but whose subsequent lines are.
+ *   - The 'nomargin-top' class is used to remove the top margin (e.g.
+ *     from lists).  The 'nomargin' class is used to remove both the
+ *     top and bottom margin (but not the left or right margin --
+ *     for lists, that would cause the bullets to disappear.)
+ */
+p.indent-wrapped-lines      { padding: 0 0 0 7em; text-indent: -7em; 
+                              margin: 0; }
+.nomargin-top               { margin-top: 0; }
+.nomargin                   { margin-top: 0; margin-bottom: 0; }
+
+/* HTML Log */
+div.log-block               { padding: 0; margin: .5em 0 .5em 0;
+                              background: #e8f0f8; color: #000000;
+                              border: 1px solid #000000; }
+div.log-error               { padding: .1em .3em .1em .3em; margin: 4px;
+                              background: #ffb0b0; color: #000000;
+                              border: 1px solid #000000; }
+div.log-warning             { padding: .1em .3em .1em .3em; margin: 4px;
+                              background: #ffffb0; color: #000000;
+                              border: 1px solid #000000; }
+div.log-info               { padding: .1em .3em .1em .3em; margin: 4px;
+                              background: #b0ffb0; color: #000000;
+                              border: 1px solid #000000; }
+h2.log-hdr                  { background: #70b0ff; color: #000000;
+                              margin: 0; padding: 0em 0.5em 0em 0.5em;
+                              border-bottom: 1px solid #000000; font-size: 110%; }
+p.log                       { font-weight: bold; margin: .5em 0 .5em 0; }
+tr.opt-changed              { color: #000000; font-weight: bold; }
+tr.opt-default              { color: #606060; }
+pre.log                     { margin: 0; padding: 0; padding-left: 1em; }
diff --git a/doc/examples/epytext_example-module.html b/doc/examples/epytext_example-module.html
new file mode 100644
index 0000000..104ce8d
--- /dev/null
+++ b/doc/examples/epytext_example-module.html
@@ -0,0 +1,223 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epytext_example</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >   Home   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        Module epytext_example
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epytext_example-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module epytext_example</h1><p class="nomargin-top"><span class="codelink"><a href="epytext_example-pysrc.html">source code</a></span></p>
+<p>Examples for the epytext manual.</p>
+
+<!-- ==================== FUNCTIONS ==================== -->
+<a name="section-Functions"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Functions</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Functions"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">number</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="epytext_example-module.html#x_intercept" class="summary-sig-name">x_intercept</a>(<span class="summary-sig-arg">m</span>,
+        <span class="summary-sig-arg">b</span>)</span><br />
+      Return the x intercept of the line <i class="math">y=m*x+b</i>.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epytext_example-pysrc.html#x_intercept">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="z_transform"></a><span class="summary-sig-name">z_transform</span>(<span class="summary-sig-arg">f</span>)</span><br />
+      This is just an example; there is no z_transform function.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="epytext_example-pysrc.html#z_transform">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTION DETAILS ==================== -->
+<a name="section-FunctionDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Function Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-FunctionDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="x_intercept"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">x_intercept</span>(<span class="sig-arg">m</span>,
+        <span class="sig-arg">b</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="epytext_example-pysrc.html#x_intercept">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Return the x intercept of the line <i class="math">y=m*x+b</i>.  The 
+  <a name="index-x_intercept"></a><i class="indexterm">x intercept</i> of a
+  line is the point at which it crosses the x axis (<i 
+  class="math">y=0</i>).</p>
+  <p>This function can be used in conjuction with <a 
+  href="epytext_example-module.html#z_transform" 
+  class="link">z_transform</a> to find an arbitrary function's zeros.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>m</code></strong> (number) - The slope of the line.</li>
+        <li><strong class="pname"><code>b</code></strong> (number) - The y intercept of the line.  The <a 
+          name="index-y_intercept"></a><i class="indexterm">y intercept</i>
+          of a line is the point at which it crosses the y axis (<i 
+          class="math">x=0</i>).</li>
+    </ul></dd>
+    <dt>Returns: number</dt>
+        <dd>the x intercept of the line <i class="math">y=m*x+b</i>.</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >   Home   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0.1 on Wed Jan 30 14:10:06 2008
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/examples/epytext_example-pysrc.html b/doc/examples/epytext_example-pysrc.html
new file mode 100644
index 0000000..041b961
--- /dev/null
+++ b/doc/examples/epytext_example-pysrc.html
@@ -0,0 +1,156 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epytext_example</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >   Home   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        Module epytext_example
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="epytext_example-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="epytext_example-module.html">Module epytext_example</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno"> 1</tt>  <tt class="py-line"><tt class="py-comment">#</tt> </tt>
+<a name="L2"></a><tt class="py-lineno"> 2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># epytext_example.py</tt> </tt>
+<a name="L3"></a><tt class="py-lineno"> 3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L4"></a><tt class="py-lineno"> 4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Example code used by the epytext manual.</tt> </tt>
+<a name="L5"></a><tt class="py-lineno"> 5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L6"></a><tt class="py-lineno"> 6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># These functions are used by epytextintro.html to illustrate epytext,</tt> </tt>
+<a name="L7"></a><tt class="py-lineno"> 7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># and show what output is generated by epydoc for a simple docstring.</tt> </tt>
+<a name="L8"></a><tt class="py-lineno"> 8</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L9"></a><tt class="py-lineno"> 9</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-docstring">"""</tt> </tt>
+<a name="L10"></a><tt class="py-lineno">10</tt>  <tt class="py-line"><tt class="py-docstring">Examples for the epytext manual.</tt> </tt>
+<a name="L11"></a><tt class="py-lineno">11</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L12"></a><tt class="py-lineno">12</tt>  <tt class="py-line"><tt class="py-name">__docformat__</tt><tt class="py-op">=</tt><tt class="py-string">'epytext'</tt> </tt>
+<a name="L13"></a><tt class="py-lineno">13</tt>  <tt class="py-line"> </tt>
+<a name="x_intercept"></a><div id="x_intercept-def"><a name="L14"></a><tt class="py-lineno">14</tt> <a class="py-toggle" href="#" id="x_intercept-toggle" onclick="return toggle('x_intercept');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epytext_example-module.html#x_intercept">x_intercept</a><tt class="py-op">(</tt><tt class="py-param">m</tt><tt class="py-op">,</tt> <tt class="py-param">b</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="x_intercept-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="x_intercept-expanded"><a name="L15"></a><tt class="py-lineno">15</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L16"></a><tt class="py-lineno">16</tt>  <tt class="py-line"><tt class="py-docstring">    Return the x intercept of the line M{y=m*x+b}.  The X{x intercept}</tt> </tt>
+<a name="L17"></a><tt class="py-lineno">17</tt>  <tt class="py-line"><tt class="py-docstring">    of a line is the point at which it crosses the x axis (M{y=0}).</tt> </tt>
+<a name="L18"></a><tt class="py-lineno">18</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L19"></a><tt class="py-lineno">19</tt>  <tt class="py-line"><tt class="py-docstring">    This function can be used in conjuction with L{z_transform} to</tt> </tt>
+<a name="L20"></a><tt class="py-lineno">20</tt>  <tt class="py-line"><tt class="py-docstring">    find an arbitrary function's zeros.</tt> </tt>
+<a name="L21"></a><tt class="py-lineno">21</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L22"></a><tt class="py-lineno">22</tt>  <tt class="py-line"><tt class="py-docstring">    @type  m: number</tt> </tt>
+<a name="L23"></a><tt class="py-lineno">23</tt>  <tt class="py-line"><tt class="py-docstring">    @param m: The slope of the line.</tt> </tt>
+<a name="L24"></a><tt class="py-lineno">24</tt>  <tt class="py-line"><tt class="py-docstring">    @type  b: number</tt> </tt>
+<a name="L25"></a><tt class="py-lineno">25</tt>  <tt class="py-line"><tt class="py-docstring">    @param b: The y intercept of the line.  The X{y intercept} of a</tt> </tt>
+<a name="L26"></a><tt class="py-lineno">26</tt>  <tt class="py-line"><tt class="py-docstring">              line is the point at which it crosses the y axis (M{x=0}).</tt> </tt>
+<a name="L27"></a><tt class="py-lineno">27</tt>  <tt class="py-line"><tt class="py-docstring">    @rtype:   number</tt> </tt>
+<a name="L28"></a><tt class="py-lineno">28</tt>  <tt class="py-line"><tt class="py-docstring">    @return:  the x intercept of the line M{y=m*x+b}.</tt> </tt>
+<a name="L29"></a><tt class="py-lineno">29</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L30"></a><tt class="py-lineno">30</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-op">-</tt><tt class="py-name">b</tt><tt class="py-op">/</tt><tt class="py-name">m</tt> </tt>
+</div><a name="L31"></a><tt class="py-lineno">31</tt>  <tt class="py-line"> </tt>
+<a name="z_transform"></a><div id="z_transform-def"><a name="L32"></a><tt class="py-lineno">32</tt> <a class="py-toggle" href="#" id="z_transform-toggle" onclick="return toggle('z_transform');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="epytext_example-module.html#z_transform">z_transform</a><tt class="py-op">(</tt><tt class="py-param">f</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="z_transform-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="z_transform-expanded"><a name="L33"></a><tt class="py-lineno">33</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L34"></a><tt class="py-lineno">34</tt>  <tt class="py-line"><tt class="py-docstring">    This is just an example; there is no z_transform function.</tt> </tt>
+<a name="L35"></a><tt class="py-lineno">35</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L36"></a><tt class="py-lineno">36</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">f</tt><tt class="py-op">(</tt><tt class="py-number">12</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L37"></a><tt class="py-lineno">37</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >   Home   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0.1 on Wed Jan 30 14:10:07 2008
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/examples/frames.html b/doc/examples/frames.html
new file mode 100644
index 0000000..c316111
--- /dev/null
+++ b/doc/examples/frames.html
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
+          "DTD/xhtml1-frameset.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title> epydoc </title>
+</head>
+<frameset cols="20%,80%">
+  <frameset rows="30%,70%">
+    <frame src="toc.html" name="moduleListFrame"
+           id="moduleListFrame" />
+    <frame src="toc-everything.html" name="moduleFrame"
+           id="moduleFrame" />
+  </frameset>
+  <frame src="epytext_example-module.html" name="mainFrame" id="mainFrame" />
+</frameset>
+</html>
diff --git a/doc/examples/grouped/class-tree.html b/doc/examples/grouped/class-tree.html
new file mode 100644
index 0000000..547fd80
--- /dev/null
+++ b/doc/examples/grouped/class-tree.html
@@ -0,0 +1,138 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Class Hierarchy</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="inh_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >   Trees   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%"> </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="class-tree.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<center><b>
+ [ <a href="module-tree.html">Module Hierarchy</a>
+ | <a href="class-tree.html">Class Hierarchy</a> ]
+</b></center><br />
+<h1 class="epydoc">Class Hierarchy</h1>
+<ul class="nomargin-top">
+    <li> <strong class="uidlink"><a href="inh_example.Animal-class.html">inh_example.Animal</a></strong>
+    <ul>
+    <li> <strong class="uidlink"><a href="inh_example.Bird-class.html">inh_example.Bird</a></strong>
+    </li>
+    <li> <strong class="uidlink"><a href="inh_example.Bug-class.html">inh_example.Bug</a></strong>
+    </li>
+    <li> <strong class="uidlink"><a href="inh_example.Fish-class.html">inh_example.Fish</a></strong>
+    </li>
+    <li> <strong class="uidlink"><a href="inh_example.Mammal-class.html">inh_example.Mammal</a></strong>
+    <ul>
+    <li> <strong class="uidlink"><a href="inh_example.Primate-class.html">inh_example.Primate</a></strong>
+    <ul>
+    <li> <strong class="uidlink"><a href="inh_example.Human-class.html">inh_example.Human</a></strong>
+    <ul>
+    <li> <strong class="uidlink"><a href="inh_example.Programmer-class.html">inh_example.Programmer</a></strong>
+    </li>
+    </ul>
+    </li>
+    </ul>
+    </li>
+    </ul>
+    </li>
+    </ul>
+    </li>
+</ul>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="inh_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >   Trees   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0.1 on Wed Jan 30 14:10:11 2008
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/examples/grouped/crarr.png b/doc/examples/grouped/crarr.png
new file mode 100644
index 0000000..26b43c5
Binary files /dev/null and b/doc/examples/grouped/crarr.png differ
diff --git a/doc/examples/grouped/epydoc.css b/doc/examples/grouped/epydoc.css
new file mode 100644
index 0000000..86d4170
--- /dev/null
+++ b/doc/examples/grouped/epydoc.css
@@ -0,0 +1,322 @@
+
+
+/* Epydoc CSS Stylesheet
+ *
+ * This stylesheet can be used to customize the appearance of epydoc's
+ * HTML output.
+ *
+ */
+
+/* Default Colors & Styles
+ *   - Set the default foreground & background color with 'body'; and 
+ *     link colors with 'a:link' and 'a:visited'.
+ *   - Use bold for decision list terms.
+ *   - The heading styles defined here are used for headings *within*
+ *     docstring descriptions.  All headings used by epydoc itself use
+ *     either class='epydoc' or class='toc' (CSS styles for both
+ *     defined below).
+ */
+body                        { background: #ffffff; color: #000000; }
+p                           { margin-top: 0.5em; margin-bottom: 0.5em; }
+a:link                      { color: #0000ff; }
+a:visited                   { color: #204080; }
+dt                          { font-weight: bold; }
+h1                          { font-size: +140%; font-style: italic;
+                              font-weight: bold; }
+h2                          { font-size: +125%; font-style: italic;
+                              font-weight: bold; }
+h3                          { font-size: +110%; font-style: italic;
+                              font-weight: normal; }
+code                        { font-size: 100%; }
+/* N.B.: class, not pseudoclass */
+a.link                      { font-family: monospace; }
+ 
+/* Page Header & Footer
+ *   - The standard page header consists of a navigation bar (with
+ *     pointers to standard pages such as 'home' and 'trees'); a
+ *     breadcrumbs list, which can be used to navigate to containing
+ *     classes or modules; options links, to show/hide private
+ *     variables and to show/hide frames; and a page title (using
+ *     <h1>).  The page title may be followed by a link to the
+ *     corresponding source code (using 'span.codelink').
+ *   - The footer consists of a navigation bar, a timestamp, and a
+ *     pointer to epydoc's homepage.
+ */ 
+h1.epydoc                   { margin: 0; font-size: +140%; font-weight: bold; }
+h2.epydoc                   { font-size: +130%; font-weight: bold; }
+h3.epydoc                   { font-size: +115%; font-weight: bold;
+                              margin-top: 0.2em; }
+td h3.epydoc                { font-size: +115%; font-weight: bold;
+                              margin-bottom: 0; }
+table.navbar                { background: #a0c0ff; color: #000000;
+                              border: 2px groove #c0d0d0; }
+table.navbar table          { color: #000000; }
+th.navbar-select            { background: #70b0ff;
+                              color: #000000; } 
+table.navbar a              { text-decoration: none; }  
+table.navbar a:link         { color: #0000ff; }
+table.navbar a:visited      { color: #204080; }
+span.breadcrumbs            { font-size: 85%; font-weight: bold; }
+span.options                { font-size: 70%; }
+span.codelink               { font-size: 85%; }
+td.footer                   { font-size: 85%; }
+
+/* Table Headers
+ *   - Each summary table and details section begins with a 'header'
+ *     row.  This row contains a section title (marked by
+ *     'span.table-header') as well as a show/hide private link
+ *     (marked by 'span.options', defined above).
+ *   - Summary tables that contain user-defined groups mark those
+ *     groups using 'group header' rows.
+ */
+td.table-header             { background: #70b0ff; color: #000000;
+                              border: 1px solid #608090; }
+td.table-header table       { color: #000000; }
+td.table-header table a:link      { color: #0000ff; }
+td.table-header table a:visited   { color: #204080; }
+span.table-header           { font-size: 120%; font-weight: bold; }
+th.group-header             { background: #c0e0f8; color: #000000;
+                              text-align: left; font-style: italic; 
+                              font-size: 115%; 
+                              border: 1px solid #608090; }
+
+/* Summary Tables (functions, variables, etc)
+ *   - Each object is described by a single row of the table with
+ *     two cells.  The left cell gives the object's type, and is
+ *     marked with 'code.summary-type'.  The right cell gives the
+ *     object's name and a summary description.
+ *   - CSS styles for the table's header and group headers are
+ *     defined above, under 'Table Headers'
+ */
+table.summary               { border-collapse: collapse;
+                              background: #e8f0f8; color: #000000;
+                              border: 1px solid #608090;
+                              margin-bottom: 0.5em; }
+td.summary                  { border: 1px solid #608090; }
+code.summary-type           { font-size: 85%; }
+table.summary a:link        { color: #0000ff; }
+table.summary a:visited     { color: #204080; }
+
+
+/* Details Tables (functions, variables, etc)
+ *   - Each object is described in its own div.
+ *   - A single-row summary table w/ table-header is used as
+ *     a header for each details section (CSS style for table-header
+ *     is defined above, under 'Table Headers').
+ */
+table.details               { border-collapse: collapse;
+                              background: #e8f0f8; color: #000000;
+                              border: 1px solid #608090;
+                              margin: .2em 0 0 0; }
+table.details table         { color: #000000; }
+table.details a:link        { color: #0000ff; }
+table.details a:visited     { color: #204080; }
+
+/* Fields */
+dl.fields                   { margin-left: 2em; margin-top: 1em;
+                              margin-bottom: 1em; }
+dl.fields dd ul             { margin-left: 0em; padding-left: 0em; }
+dl.fields dd ul li ul       { margin-left: 2em; padding-left: 0em; }
+div.fields                  { margin-left: 2em; }
+div.fields p                { margin-bottom: 0.5em; }
+
+/* Index tables (identifier index, term index, etc)
+ *   - link-index is used for indices containing lists of links
+ *     (namely, the identifier index & term index).
+ *   - index-where is used in link indices for the text indicating
+ *     the container/source for each link.
+ *   - metadata-index is used for indices containing metadata
+ *     extracted from fields (namely, the bug index & todo index).
+ */
+table.link-index            { border-collapse: collapse;
+                              background: #e8f0f8; color: #000000;
+                              border: 1px solid #608090; }
+td.link-index               { border-width: 0px; }
+table.link-index a:link     { color: #0000ff; }
+table.link-index a:visited  { color: #204080; }
+span.index-where            { font-size: 70%; }
+table.metadata-index        { border-collapse: collapse;
+                              background: #e8f0f8; color: #000000;
+                              border: 1px solid #608090; 
+                              margin: .2em 0 0 0; }
+td.metadata-index           { border-width: 1px; border-style: solid; }
+table.metadata-index a:link { color: #0000ff; }
+table.metadata-index a:visited  { color: #204080; }
+
+/* Function signatures
+ *   - sig* is used for the signature in the details section.
+ *   - .summary-sig* is used for the signature in the summary 
+ *     table, and when listing property accessor functions.
+ * */
+.sig-name                   { color: #006080; }
+.sig-arg                    { color: #008060; }
+.sig-default                { color: #602000; }
+.summary-sig                { font-family: monospace; }
+.summary-sig-name           { color: #006080; font-weight: bold; }
+table.summary a.summary-sig-name:link
+                            { color: #006080; font-weight: bold; }
+table.summary a.summary-sig-name:visited
+                            { color: #006080; font-weight: bold; }
+.summary-sig-arg            { color: #006040; }
+.summary-sig-default        { color: #501800; }
+
+/* Subclass list
+ */
+ul.subclass-list { display: inline; }
+ul.subclass-list li { display: inline; }
+
+/* To render variables, classes etc. like functions */
+table.summary .summary-name { color: #006080; font-weight: bold;
+                              font-family: monospace; }
+table.summary
+     a.summary-name:link    { color: #006080; font-weight: bold;
+                              font-family: monospace; }
+table.summary
+    a.summary-name:visited  { color: #006080; font-weight: bold;
+                              font-family: monospace; }
+
+/* Variable values
+ *   - In the 'variable details' sections, each varaible's value is
+ *     listed in a 'pre.variable' box.  The width of this box is
+ *     restricted to 80 chars; if the value's repr is longer than
+ *     this it will be wrapped, using a backslash marked with
+ *     class 'variable-linewrap'.  If the value's repr is longer
+ *     than 3 lines, the rest will be ellided; and an ellipsis
+ *     marker ('...' marked with 'variable-ellipsis') will be used.
+ *   - If the value is a string, its quote marks will be marked
+ *     with 'variable-quote'.
+ *   - If the variable is a regexp, it is syntax-highlighted using
+ *     the re* CSS classes.
+ */
+pre.variable                { padding: .5em; margin: 0;
+                              background: #dce4ec; color: #000000;
+                              border: 1px solid #708890; }
+.variable-linewrap          { color: #604000; font-weight: bold; }
+.variable-ellipsis          { color: #604000; font-weight: bold; }
+.variable-quote             { color: #604000; font-weight: bold; }
+.variable-group             { color: #008000; font-weight: bold; }
+.variable-op                { color: #604000; font-weight: bold; }
+.variable-string            { color: #006030; }
+.variable-unknown           { color: #a00000; font-weight: bold; }
+.re                         { color: #000000; }
+.re-char                    { color: #006030; }
+.re-op                      { color: #600000; }
+.re-group                   { color: #003060; }
+.re-ref                     { color: #404040; }
+
+/* Base tree
+ *   - Used by class pages to display the base class hierarchy.
+ */
+pre.base-tree               { font-size: 80%; margin: 0; }
+
+/* Frames-based table of contents headers
+ *   - Consists of two frames: one for selecting modules; and
+ *     the other listing the contents of the selected module.
+ *   - h1.toc is used for each frame's heading
+ *   - h2.toc is used for subheadings within each frame.
+ */
+h1.toc                      { text-align: center; font-size: 105%;
+                              margin: 0; font-weight: bold;
+                              padding: 0; }
+h2.toc                      { font-size: 100%; font-weight: bold; 
+                              margin: 0.5em 0 0 -0.3em; }
+
+/* Syntax Highlighting for Source Code
+ *   - doctest examples are displayed in a 'pre.py-doctest' block.
+ *     If the example is in a details table entry, then it will use
+ *     the colors specified by the 'table pre.py-doctest' line.
+ *   - Source code listings are displayed in a 'pre.py-src' block.
+ *     Each line is marked with 'span.py-line' (used to draw a line
+ *     down the left margin, separating the code from the line
+ *     numbers).  Line numbers are displayed with 'span.py-lineno'.
+ *     The expand/collapse block toggle button is displayed with
+ *     'a.py-toggle' (Note: the CSS style for 'a.py-toggle' should not
+ *     modify the font size of the text.)
+ *   - If a source code page is opened with an anchor, then the
+ *     corresponding code block will be highlighted.  The code
+ *     block's header is highlighted with 'py-highlight-hdr'; and
+ *     the code block's body is highlighted with 'py-highlight'.
+ *   - The remaining py-* classes are used to perform syntax
+ *     highlighting (py-string for string literals, py-name for names,
+ *     etc.)
+ */
+pre.py-doctest              { padding: .5em; margin: 1em;
+                              background: #e8f0f8; color: #000000;
+                              border: 1px solid #708890; }
+table pre.py-doctest        { background: #dce4ec;
+                              color: #000000; }
+pre.py-src                  { border: 2px solid #000000; 
+                              background: #f0f0f0; color: #000000; }
+.py-line                    { border-left: 2px solid #000000; 
+                              margin-left: .2em; padding-left: .4em; }
+.py-lineno                  { font-style: italic; font-size: 90%;
+                              padding-left: .5em; }
+a.py-toggle                 { text-decoration: none; }
+div.py-highlight-hdr        { border-top: 2px solid #000000;
+                              border-bottom: 2px solid #000000;
+                              background: #d8e8e8; }
+div.py-highlight            { border-bottom: 2px solid #000000;
+                              background: #d0e0e0; }
+.py-prompt                  { color: #005050; font-weight: bold;}
+.py-more                    { color: #005050; font-weight: bold;}
+.py-string                  { color: #006030; }
+.py-comment                 { color: #003060; }
+.py-keyword                 { color: #600000; }
+.py-output                  { color: #404040; }
+.py-name                    { color: #000050; }
+.py-name:link               { color: #000050 !important; }
+.py-name:visited            { color: #000050 !important; }
+.py-number                  { color: #005000; }
+.py-defname                 { color: #000060; font-weight: bold; }
+.py-def-name                { color: #000060; font-weight: bold; }
+.py-base-class              { color: #000060; }
+.py-param                   { color: #000060; }
+.py-docstring               { color: #006030; }
+.py-decorator               { color: #804020; }
+/* Use this if you don't want links to names underlined: */
+/*a.py-name                   { text-decoration: none; }*/
+
+/* Graphs & Diagrams
+ *   - These CSS styles are used for graphs & diagrams generated using
+ *     Graphviz dot.  'img.graph-without-title' is used for bare
+ *     diagrams (to remove the border created by making the image
+ *     clickable).
+ */
+img.graph-without-title     { border: none; }
+img.graph-with-title        { border: 1px solid #000000; }
+span.graph-title            { font-weight: bold; }
+span.graph-caption          { }
+
+/* General-purpose classes
+ *   - 'p.indent-wrapped-lines' defines a paragraph whose first line
+ *     is not indented, but whose subsequent lines are.
+ *   - The 'nomargin-top' class is used to remove the top margin (e.g.
+ *     from lists).  The 'nomargin' class is used to remove both the
+ *     top and bottom margin (but not the left or right margin --
+ *     for lists, that would cause the bullets to disappear.)
+ */
+p.indent-wrapped-lines      { padding: 0 0 0 7em; text-indent: -7em; 
+                              margin: 0; }
+.nomargin-top               { margin-top: 0; }
+.nomargin                   { margin-top: 0; margin-bottom: 0; }
+
+/* HTML Log */
+div.log-block               { padding: 0; margin: .5em 0 .5em 0;
+                              background: #e8f0f8; color: #000000;
+                              border: 1px solid #000000; }
+div.log-error               { padding: .1em .3em .1em .3em; margin: 4px;
+                              background: #ffb0b0; color: #000000;
+                              border: 1px solid #000000; }
+div.log-warning             { padding: .1em .3em .1em .3em; margin: 4px;
+                              background: #ffffb0; color: #000000;
+                              border: 1px solid #000000; }
+div.log-info               { padding: .1em .3em .1em .3em; margin: 4px;
+                              background: #b0ffb0; color: #000000;
+                              border: 1px solid #000000; }
+h2.log-hdr                  { background: #70b0ff; color: #000000;
+                              margin: 0; padding: 0em 0.5em 0em 0.5em;
+                              border-bottom: 1px solid #000000; font-size: 110%; }
+p.log                       { font-weight: bold; margin: .5em 0 .5em 0; }
+tr.opt-changed              { color: #000000; font-weight: bold; }
+tr.opt-default              { color: #606060; }
+pre.log                     { margin: 0; padding: 0; padding-left: 1em; }
diff --git a/doc/examples/grouped/frames.html b/doc/examples/grouped/frames.html
new file mode 100644
index 0000000..fa977a6
--- /dev/null
+++ b/doc/examples/grouped/frames.html
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
+          "DTD/xhtml1-frameset.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title> epydoc </title>
+</head>
+<frameset cols="20%,80%">
+  <frameset rows="30%,70%">
+    <frame src="toc.html" name="moduleListFrame"
+           id="moduleListFrame" />
+    <frame src="toc-everything.html" name="moduleFrame"
+           id="moduleFrame" />
+  </frameset>
+  <frame src="inh_example-module.html" name="mainFrame" id="mainFrame" />
+</frameset>
+</html>
diff --git a/doc/examples/grouped/help.html b/doc/examples/grouped/help.html
new file mode 100644
index 0000000..278f293
--- /dev/null
+++ b/doc/examples/grouped/help.html
@@ -0,0 +1,278 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Help</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="inh_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >   Help   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%"> </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="help.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+
+<h1 class="epydoc"> API Documentation </h1>
+
+<p> This document contains the API (Application Programming Interface)
+documentation for epydoc.  Documentation for the Python
+objects defined by the project is divided into separate pages for each
+package, module, and class.  The API documentation also includes two
+pages containing information about the project as a whole: a trees
+page, and an index page.  </p>
+
+<h2> Object Documentation </h2>
+
+  <p>Each <strong>Package Documentation</strong> page contains: </p>
+  <ul>
+    <li> A description of the package. </li>
+    <li> A list of the modules and sub-packages contained by the
+    package.  </li>
+    <li> A summary of the classes defined by the package. </li>
+    <li> A summary of the functions defined by the package. </li>
+    <li> A summary of the variables defined by the package. </li>
+    <li> A detailed description of each function defined by the
+    package. </li>
+    <li> A detailed description of each variable defined by the
+    package. </li>
+  </ul>
+  
+  <p>Each <strong>Module Documentation</strong> page contains:</p>
+  <ul>
+    <li> A description of the module. </li>
+    <li> A summary of the classes defined by the module. </li>
+    <li> A summary of the functions defined by the module. </li>
+    <li> A summary of the variables defined by the module. </li>
+    <li> A detailed description of each function defined by the
+    module. </li>
+    <li> A detailed description of each variable defined by the
+    module. </li>
+  </ul>
+  
+  <p>Each <strong>Class Documentation</strong> page contains: </p>
+  <ul>
+    <li> A class inheritance diagram. </li>
+    <li> A list of known subclasses. </li>
+    <li> A description of the class. </li>
+    <li> A summary of the methods defined by the class. </li>
+    <li> A summary of the instance variables defined by the class. </li>
+    <li> A summary of the class (static) variables defined by the
+    class. </li> 
+    <li> A detailed description of each method defined by the
+    class. </li>
+    <li> A detailed description of each instance variable defined by the
+    class. </li> 
+    <li> A detailed description of each class (static) variable defined
+    by the class. </li> 
+  </ul>
+
+<h2> Project Documentation </h2>
+
+  <p> The <strong>Trees</strong> page contains the module and class hierarchies: </p>
+  <ul>
+    <li> The <em>module hierarchy</em> lists every package and module, with
+    modules grouped into packages.  At the top level, and within each
+    package, modules and sub-packages are listed alphabetically. </li>
+    <li> The <em>class hierarchy</em> lists every class, grouped by base
+    class.  If a class has more than one base class, then it will be
+    listed under each base class.  At the top level, and under each base
+    class, classes are listed alphabetically. </li>
+  </ul>
+  
+  <p> The <strong>Index</strong> page contains indices of terms and
+  identifiers: </p>
+  <ul>
+    <li> The <em>term index</em> lists every term indexed by any object's
+    documentation.  For each term, the index provides links to each
+    place where the term is indexed. </li>
+    <li> The <em>identifier index</em> lists the (short) name of every package,
+    module, class, method, function, variable, and parameter.  For each
+    identifier, the index provides a short description, and a link to
+    its documentation. </li>
+  </ul>
+
+<h2> The Table of Contents </h2>
+
+<p> The table of contents occupies the two frames on the left side of
+the window.  The upper-left frame displays the <em>project
+contents</em>, and the lower-left frame displays the <em>module
+contents</em>: </p>
+
+<table class="help summary" border="1" cellspacing="0" cellpadding="3">
+  <tr style="height: 30%">
+    <td align="center" style="font-size: small">
+       Project<br />Contents<hr />...</td>
+    <td align="center" style="font-size: small" rowspan="2" width="70%">
+      API<br />Documentation<br />Frame<br /><br /><br />
+    </td>
+  </tr>
+  <tr>
+    <td align="center" style="font-size: small">
+      Module<br />Contents<hr /> <br />...<br /> 
+    </td>
+  </tr>
+</table><br />
+
+<p> The <strong>project contents frame</strong> contains a list of all packages
+and modules that are defined by the project.  Clicking on an entry
+will display its contents in the module contents frame.  Clicking on a
+special entry, labeled "Everything," will display the contents of
+the entire project. </p>
+
+<p> The <strong>module contents frame</strong> contains a list of every
+submodule, class, type, exception, function, and variable defined by a
+module or package.  Clicking on an entry will display its
+documentation in the API documentation frame.  Clicking on the name of
+the module, at the top of the frame, will display the documentation
+for the module itself. </p>
+
+<p> The "<strong>frames</strong>" and "<strong>no frames</strong>" buttons below the top
+navigation bar can be used to control whether the table of contents is
+displayed or not. </p>
+
+<h2> The Navigation Bar </h2>
+
+<p> A navigation bar is located at the top and bottom of every page.
+It indicates what type of page you are currently viewing, and allows
+you to go to related pages.  The following table describes the labels
+on the navigation bar.  Note that not some labels (such as
+[Parent]) are not displayed on all pages. </p>
+
+<table class="summary" border="1" cellspacing="0" cellpadding="3" width="100%">
+<tr class="summary">
+  <th>Label</th>
+  <th>Highlighted when...</th>
+  <th>Links to...</th>
+</tr>
+  <tr><td valign="top"><strong>[Parent]</strong></td>
+      <td valign="top"><em>(never highlighted)</em></td>
+      <td valign="top"> the parent of the current package </td></tr>
+  <tr><td valign="top"><strong>[Package]</strong></td>
+      <td valign="top">viewing a package</td>
+      <td valign="top">the package containing the current object
+      </td></tr>
+  <tr><td valign="top"><strong>[Module]</strong></td>
+      <td valign="top">viewing a module</td>
+      <td valign="top">the module containing the current object
+      </td></tr> 
+  <tr><td valign="top"><strong>[Class]</strong></td>
+      <td valign="top">viewing a class </td>
+      <td valign="top">the class containing the current object</td></tr>
+  <tr><td valign="top"><strong>[Trees]</strong></td>
+      <td valign="top">viewing the trees page</td>
+      <td valign="top"> the trees page </td></tr>
+  <tr><td valign="top"><strong>[Index]</strong></td>
+      <td valign="top">viewing the index page</td>
+      <td valign="top"> the index page </td></tr>
+  <tr><td valign="top"><strong>[Help]</strong></td>
+      <td valign="top">viewing the help page</td>
+      <td valign="top"> the help page </td></tr>
+</table>
+
+<p> The "<strong>show private</strong>" and "<strong>hide private</strong>" buttons below
+the top navigation bar can be used to control whether documentation
+for private objects is displayed.  Private objects are usually defined
+as objects whose (short) names begin with a single underscore, but do
+not end with an underscore.  For example, "<code>_x</code>",
+"<code>__pprint</code>", and "<code>epydoc.epytext._tokenize</code>"
+are private objects; but "<code>re.sub</code>",
+"<code>__init__</code>", and "<code>type_</code>" are not.  However,
+if a module defines the "<code>__all__</code>" variable, then its
+contents are used to decide which objects are private. </p>
+
+<p> A timestamp below the bottom navigation bar indicates when each
+page was last updated. </p>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="inh_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >   Help   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0.1 on Wed Jan 30 14:10:11 2008
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/examples/grouped/identifier-index.html b/doc/examples/grouped/identifier-index.html
new file mode 100644
index 0000000..1a2936b
--- /dev/null
+++ b/doc/examples/grouped/identifier-index.html
@@ -0,0 +1,306 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Identifier Index</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="inh_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >   Indices   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%"> </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="identifier-index.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<table border="0" width="100%">
+<tr valign="bottom"><td>
+<h1 class="epydoc">Identifier Index</h1>
+</td><td>
+[
+ <a href="#A">A</a>
+ <a href="#B">B</a>
+ <a href="#C">C</a>
+  D
+ <a href="#E">E</a>
+ <a href="#F">F</a>
+ <a href="#G">G</a>
+ <a href="#H">H</a>
+ <a href="#I">I</a>
+  J
+  K
+  L
+ <a href="#M">M</a>
+  N
+  O
+ <a href="#P">P</a>
+  Q
+ <a href="#R">R</a>
+ <a href="#S">S</a>
+ <a href="#T">T</a>
+  U
+  V
+  W
+  X
+  Y
+  Z
+  _
+]
+</td></table>
+<table border="0" width="100%">
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="A">A</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="inh_example.Animal-class.html">Animal</a><br />
+<span class="index-where">(in <a href="inh_example-module.html">inh_example</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+<td width="33%" class="link-index"> </td>
+</tr>
+<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="B">B</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="inh_example.Bird-class.html">Bird</a><br />
+<span class="index-where">(in <a href="inh_example-module.html">inh_example</a>)</span></td>
+<td width="33%" class="link-index"><a href="inh_example.Bug-class.html">Bug</a><br />
+<span class="index-where">(in <a href="inh_example-module.html">inh_example</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+</tr>
+<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="C">C</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="inh_example.Primate-class.html#climb">climb()</a><br />
+<span class="index-where">(in <a href="inh_example.Primate-class.html">Primate</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+<td width="33%" class="link-index"> </td>
+</tr>
+<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="E">E</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="inh_example.Animal-class.html#eat">eat()</a><br />
+<span class="index-where">(in <a href="inh_example.Animal-class.html">Animal</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+<td width="33%" class="link-index"> </td>
+</tr>
+<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="F">F</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="inh_example.Fish-class.html">Fish</a><br />
+<span class="index-where">(in <a href="inh_example-module.html">inh_example</a>)</span></td>
+<td width="33%" class="link-index"><a href="inh_example.Bird-class.html#fly">fly()</a><br />
+<span class="index-where">(in <a href="inh_example.Bird-class.html">Bird</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+</tr>
+<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="G">G</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="inh_example.Primate-class.html#grab">grab()</a><br />
+<span class="index-where">(in <a href="inh_example.Primate-class.html">Primate</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+<td width="33%" class="link-index"> </td>
+</tr>
+<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="H">H</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="inh_example.Programmer-class.html#hack">hack()</a><br />
+<span class="index-where">(in <a href="inh_example.Programmer-class.html">Programmer</a>)</span></td>
+<td width="33%" class="link-index"><a href="inh_example.Bug-class.html#hide">hide()</a><br />
+<span class="index-where">(in <a href="inh_example.Bug-class.html">Bug</a>)</span></td>
+<td width="33%" class="link-index"><a href="inh_example.Human-class.html">Human</a><br />
+<span class="index-where">(in <a href="inh_example-module.html">inh_example</a>)</span></td>
+</tr>
+<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="I">I</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="inh_example.Bug-class.html#infest">infest()</a><br />
+<span class="index-where">(in <a href="inh_example.Bug-class.html">Bug</a>)</span></td>
+<td width="33%" class="link-index"><a href="inh_example-module.html">inh_example</a></td>
+<td width="33%" class="link-index"> </td>
+</tr>
+<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="M">M</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="inh_example.Mammal-class.html">Mammal</a><br />
+<span class="index-where">(in <a href="inh_example-module.html">inh_example</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+<td width="33%" class="link-index"> </td>
+</tr>
+<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="P">P</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="inh_example.Primate-class.html">Primate</a><br />
+<span class="index-where">(in <a href="inh_example-module.html">inh_example</a>)</span></td>
+<td width="33%" class="link-index"><a href="inh_example.Programmer-class.html">Programmer</a><br />
+<span class="index-where">(in <a href="inh_example-module.html">inh_example</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+</tr>
+<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="R">R</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="inh_example.Mammal-class.html#run">run()</a><br />
+<span class="index-where">(in <a href="inh_example.Mammal-class.html">Mammal</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+<td width="33%" class="link-index"> </td>
+</tr>
+<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="S">S</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="inh_example.Animal-class.html#sleep">sleep()</a><br />
+<span class="index-where">(in <a href="inh_example.Animal-class.html">Animal</a>)</span></td>
+<td width="33%" class="link-index"><a href="inh_example.Programmer-class.html#squish">squish()</a><br />
+<span class="index-where">(in <a href="inh_example.Programmer-class.html">Programmer</a>)</span></td>
+<td width="33%" class="link-index"><a href="inh_example.Fish-class.html#swim">swim()</a><br />
+<span class="index-where">(in <a href="inh_example.Fish-class.html">Fish</a>)</span></td>
+</tr>
+<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="T">T</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="inh_example.Human-class.html#talk">talk()</a><br />
+<span class="index-where">(in <a href="inh_example.Human-class.html">Human</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+<td width="33%" class="link-index"> </td>
+</tr>
+<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
+</table>
+</td></tr>
+</table>
+<br /><br /><!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="inh_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >   Indices   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0.1 on Wed Jan 30 14:10:11 2008
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/examples/grouped/index.html b/doc/examples/grouped/index.html
new file mode 100644
index 0000000..fa977a6
--- /dev/null
+++ b/doc/examples/grouped/index.html
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
+          "DTD/xhtml1-frameset.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title> epydoc </title>
+</head>
+<frameset cols="20%,80%">
+  <frameset rows="30%,70%">
+    <frame src="toc.html" name="moduleListFrame"
+           id="moduleListFrame" />
+    <frame src="toc-everything.html" name="moduleFrame"
+           id="moduleFrame" />
+  </frameset>
+  <frame src="inh_example-module.html" name="mainFrame" id="mainFrame" />
+</frameset>
+</html>
diff --git a/doc/examples/grouped/inh_example-module.html b/doc/examples/grouped/inh_example-module.html
new file mode 100644
index 0000000..7506ff2
--- /dev/null
+++ b/doc/examples/grouped/inh_example-module.html
@@ -0,0 +1,189 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>inh_example</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >   Home   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        Module inh_example
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="inh_example-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module inh_example</h1><p class="nomargin-top"><span class="codelink"><a href="inh_example-pysrc.html">source code</a></span></p>
+<p>Examples for the epytext manual.</p>
+
+<!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Classes</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Classes"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="inh_example.Animal-class.html" class="summary-name">Animal</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="inh_example.Bug-class.html" class="summary-name">Bug</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="inh_example.Bird-class.html" class="summary-name">Bird</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="inh_example.Fish-class.html" class="summary-name">Fish</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="inh_example.Mammal-class.html" class="summary-name">Mammal</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="inh_example.Primate-class.html" class="summary-name">Primate</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="inh_example.Human-class.html" class="summary-name">Human</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="inh_example.Programmer-class.html" class="summary-name">Programmer</a>
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >   Home   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0.1 on Wed Jan 30 14:10:11 2008
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/examples/grouped/inh_example-pysrc.html b/doc/examples/grouped/inh_example-pysrc.html
new file mode 100644
index 0000000..94ab55a
--- /dev/null
+++ b/doc/examples/grouped/inh_example-pysrc.html
@@ -0,0 +1,172 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>inh_example</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >   Home   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        Module inh_example
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="inh_example-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="inh_example-module.html">Module inh_example</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno"> 1</tt>  <tt class="py-line"><tt class="py-comment">#</tt> </tt>
+<a name="L2"></a><tt class="py-lineno"> 2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># inh_example.py</tt> </tt>
+<a name="L3"></a><tt class="py-lineno"> 3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L4"></a><tt class="py-lineno"> 4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Example code used by the epytext manual.</tt> </tt>
+<a name="L5"></a><tt class="py-lineno"> 5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L6"></a><tt class="py-lineno"> 6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># These classes are used to illustrate the different inheritance</tt> </tt>
+<a name="L7"></a><tt class="py-lineno"> 7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># styles. (grouped, listed, and included).</tt> </tt>
+<a name="L8"></a><tt class="py-lineno"> 8</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L9"></a><tt class="py-lineno"> 9</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-docstring">"""</tt> </tt>
+<a name="L10"></a><tt class="py-lineno">10</tt>  <tt class="py-line"><tt class="py-docstring">Examples for the epytext manual.</tt> </tt>
+<a name="L11"></a><tt class="py-lineno">11</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L12"></a><tt class="py-lineno">12</tt>  <tt class="py-line"><tt class="py-name">__docformat__</tt><tt class="py-op">=</tt><tt class="py-string">'epytext'</tt> </tt>
+<a name="L13"></a><tt class="py-lineno">13</tt>  <tt class="py-line"> </tt>
+<a name="Animal"></a><div id="Animal-def"><a name="L14"></a><tt class="py-lineno">14</tt> <a class="py-toggle" href="#" id="Animal-toggle" onclick="return toggle('Animal');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="inh_example.Animal-class.html">Animal</a><tt class="py-op">:</tt> </tt>
+</div><div id="Animal-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="Animal-expanded"><a name="Animal.eat"></a><div id="Animal.eat-def"><a name="L15"></a><tt class="py-lineno">15</tt> <a class="py-toggle" href="#" id="Animal.eat-toggle" onclick="return toggle('Animal.eat');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="inh_example.Animal-class.html#eat">eat</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt cl [...]
+</div><a name="Animal.sleep"></a><div id="Animal.sleep-def"><a name="L16"></a><tt class="py-lineno">16</tt> <a class="py-toggle" href="#" id="Animal.sleep-toggle" onclick="return toggle('Animal.sleep');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="inh_example.Animal-class.html#sleep">sleep</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">time</tt><tt class="py-op">)</tt><tt class="py-op">: [...]
+</div></div><a name="L17"></a><tt class="py-lineno">17</tt>  <tt class="py-line"> </tt>
+<a name="Bug"></a><div id="Bug-def"><a name="L18"></a><tt class="py-lineno">18</tt> <a class="py-toggle" href="#" id="Bug-toggle" onclick="return toggle('Bug');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="inh_example.Bug-class.html">Bug</a><tt class="py-op">(</tt><tt class="py-base-class">Animal</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Bug-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="Bug-expanded"><a name="Bug.infest"></a><div id="Bug.infest-def"><a name="L19"></a><tt class="py-lineno">19</tt> <a class="py-toggle" href="#" id="Bug.infest-toggle" onclick="return toggle('Bug.infest');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="inh_example.Bug-class.html#infest">infest</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class [...]
+</div><a name="Bug.hide"></a><div id="Bug.hide-def"><a name="L20"></a><tt class="py-lineno">20</tt> <a class="py-toggle" href="#" id="Bug.hide-toggle" onclick="return toggle('Bug.hide');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="inh_example.Bug-class.html#hide">hide</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Bug.hide-collapsed" style="display:none;" pad="++" indent="++++++++"></div><div id="Bug.hide-expanded"><a name="L21"></a><tt class="py-lineno">21</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L22"></a><tt class="py-lineno">22</tt>  <tt class="py-line"><tt class="py-docstring">        Temporarily stop breaking a program, in order to evade</tt> </tt>
+<a name="L23"></a><tt class="py-lineno">23</tt>  <tt class="py-line"><tt class="py-docstring">        capture.</tt> </tt>
+<a name="L24"></a><tt class="py-lineno">24</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+</div></div><a name="Bird"></a><div id="Bird-def"><a name="L25"></a><tt class="py-lineno">25</tt> <a class="py-toggle" href="#" id="Bird-toggle" onclick="return toggle('Bird');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="inh_example.Bird-class.html">Bird</a><tt class="py-op">(</tt><tt class="py-base-class">Animal</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Bird-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="Bird-expanded"><a name="Bird.fly"></a><div id="Bird.fly-def"><a name="L26"></a><tt class="py-lineno">26</tt> <a class="py-toggle" href="#" id="Bird.fly-toggle" onclick="return toggle('Bird.fly');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="inh_example.Bird-class.html#fly">fly</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,< [...]
+</div></div><a name="L27"></a><tt class="py-lineno">27</tt>  <tt class="py-line"> </tt>
+<a name="Fish"></a><div id="Fish-def"><a name="L28"></a><tt class="py-lineno">28</tt> <a class="py-toggle" href="#" id="Fish-toggle" onclick="return toggle('Fish');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="inh_example.Fish-class.html">Fish</a><tt class="py-op">(</tt><tt class="py-base-class">Animal</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Fish-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="Fish-expanded"><a name="Fish.swim"></a><div id="Fish.swim-def"><a name="L29"></a><tt class="py-lineno">29</tt> <a class="py-toggle" href="#" id="Fish.swim-toggle" onclick="return toggle('Fish.swim');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="inh_example.Fish-class.html#swim">swim</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py- [...]
+</div></div><a name="L30"></a><tt class="py-lineno">30</tt>  <tt class="py-line">     </tt>
+<a name="Mammal"></a><div id="Mammal-def"><a name="L31"></a><tt class="py-lineno">31</tt> <a class="py-toggle" href="#" id="Mammal-toggle" onclick="return toggle('Mammal');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="inh_example.Mammal-class.html">Mammal</a><tt class="py-op">(</tt><tt class="py-base-class">Animal</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Mammal-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="Mammal-expanded"><a name="Mammal.run"></a><div id="Mammal.run-def"><a name="L32"></a><tt class="py-lineno">32</tt> <a class="py-toggle" href="#" id="Mammal.run-toggle" onclick="return toggle('Mammal.run');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="inh_example.Mammal-class.html#run">run</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt cl [...]
+</div></div><a name="L33"></a><tt class="py-lineno">33</tt>  <tt class="py-line"> </tt>
+<a name="Primate"></a><div id="Primate-def"><a name="L34"></a><tt class="py-lineno">34</tt> <a class="py-toggle" href="#" id="Primate-toggle" onclick="return toggle('Primate');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="inh_example.Primate-class.html">Primate</a><tt class="py-op">(</tt><tt class="py-base-class">Mammal</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Primate-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="Primate-expanded"><a name="Primate.climb"></a><div id="Primate.climb-def"><a name="L35"></a><tt class="py-lineno">35</tt> <a class="py-toggle" href="#" id="Primate.climb-toggle" onclick="return toggle('Primate.climb');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="inh_example.Primate-class.html#climb">climb</a><tt class="py-op">(</tt><tt class="py-par [...]
+</div><a name="Primate.grab"></a><div id="Primate.grab-def"><a name="L36"></a><tt class="py-lineno">36</tt> <a class="py-toggle" href="#" id="Primate.grab-toggle" onclick="return toggle('Primate.grab');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="inh_example.Primate-class.html#grab">grab</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">object</tt><tt class="py-op">)</tt><tt class="py-op"> [...]
+</div></div><a name="L37"></a><tt class="py-lineno">37</tt>  <tt class="py-line"> </tt>
+<a name="Human"></a><div id="Human-def"><a name="L38"></a><tt class="py-lineno">38</tt> <a class="py-toggle" href="#" id="Human-toggle" onclick="return toggle('Human');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="inh_example.Human-class.html">Human</a><tt class="py-op">(</tt><tt class="py-base-class">Primate</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Human-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="Human-expanded"><a name="Human.talk"></a><div id="Human.talk-def"><a name="L39"></a><tt class="py-lineno">39</tt> <a class="py-toggle" href="#" id="Human.talk-toggle" onclick="return toggle('Human.talk');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="inh_example.Human-class.html#talk">talk</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt cla [...]
+</div><div id="Human.talk-collapsed" style="display:none;" pad="++" indent="++++++++"></div><div id="Human.talk-expanded"><a name="L40"></a><tt class="py-lineno">40</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L41"></a><tt class="py-lineno">41</tt>  <tt class="py-line"><tt class="py-docstring">        Talk to the given animal.  Depending on what kind of creature</tt> </tt>
+<a name="L42"></a><tt class="py-lineno">42</tt>  <tt class="py-line"><tt class="py-docstring">        C{animal} is, it may or may not be responsive.</tt> </tt>
+<a name="L43"></a><tt class="py-lineno">43</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+</div></div><a name="L44"></a><tt class="py-lineno">44</tt>  <tt class="py-line"> </tt>
+<a name="Programmer"></a><div id="Programmer-def"><a name="L45"></a><tt class="py-lineno">45</tt> <a class="py-toggle" href="#" id="Programmer-toggle" onclick="return toggle('Programmer');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="inh_example.Programmer-class.html">Programmer</a><tt class="py-op">(</tt><tt class="py-base-class">Human</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Programmer-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="Programmer-expanded"><a name="Programmer.hack"></a><div id="Programmer.hack-def"><a name="L46"></a><tt class="py-lineno">46</tt> <a class="py-toggle" href="#" id="Programmer.hack-toggle" onclick="return toggle('Programmer.hack');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="inh_example.Programmer-class.html#hack">hack</a><tt class="py-op">(</tt><t [...]
+</div><a name="Programmer.squish"></a><div id="Programmer.squish-def"><a name="L47"></a><tt class="py-lineno">47</tt> <a class="py-toggle" href="#" id="Programmer.squish-toggle" onclick="return toggle('Programmer.squish');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="inh_example.Programmer-class.html#squish">squish</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">bug</tt><tt class="py-op"> [...]
+</div><div id="Programmer.squish-collapsed" style="display:none;" pad="++" indent="++++++++"></div><div id="Programmer.squish-expanded"><a name="L48"></a><tt class="py-lineno">48</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L49"></a><tt class="py-lineno">49</tt>  <tt class="py-line"><tt class="py-docstring">        Remove the given bug from the given program.</tt> </tt>
+<a name="L50"></a><tt class="py-lineno">50</tt>  <tt class="py-line"><tt class="py-docstring">        @type bug: L{Bug}</tt> </tt>
+<a name="L51"></a><tt class="py-lineno">51</tt>  <tt class="py-line"><tt class="py-docstring">        @param bug: The bug that should be removed from C{code}.</tt> </tt>
+<a name="L52"></a><tt class="py-lineno">52</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+</div></div><a name="L53"></a><tt class="py-lineno">53</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >   Home   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0.1 on Wed Jan 30 14:10:12 2008
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/examples/grouped/inh_example.Animal-class.html b/doc/examples/grouped/inh_example.Animal-class.html
new file mode 100644
index 0000000..a309c60
--- /dev/null
+++ b/doc/examples/grouped/inh_example.Animal-class.html
@@ -0,0 +1,175 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>inh_example.Animal</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="inh_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="inh_example-module.html">Module inh_example</a> ::
+        Class Animal
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="inh_example.Animal-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Animal</h1><p class="nomargin-top"><span class="codelink"><a href="inh_example-pysrc.html#Animal">source code</a></span></p>
+<dl><dt>Known Subclasses:</dt>
+<dd>
+      <ul class="subclass-list">
+<li><a href="inh_example.Bird-class.html">Bird</a></li><li>, <a href="inh_example.Bug-class.html">Bug</a></li><li>, <a href="inh_example.Fish-class.html">Fish</a></li><li>, <a href="inh_example.Mammal-class.html">Mammal</a></li>  </ul>
+</dd></dl>
+
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="eat"></a><span class="summary-sig-name">eat</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">food</span>)</span><br />
+      Consume the given food object.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="inh_example-pysrc.html#Animal.eat">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="sleep"></a><span class="summary-sig-name">sleep</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">time</span>)</span><br />
+      Sleep for the given period of time.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="inh_example-pysrc.html#Animal.sleep">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="inh_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0.1 on Wed Jan 30 14:10:11 2008
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/examples/grouped/inh_example.Bird-class.html b/doc/examples/grouped/inh_example.Bird-class.html
new file mode 100644
index 0000000..8cd0997
--- /dev/null
+++ b/doc/examples/grouped/inh_example.Bird-class.html
@@ -0,0 +1,196 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>inh_example.Bird</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="inh_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="inh_example-module.html">Module inh_example</a> ::
+        Class Bird
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="inh_example.Bird-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Bird</h1><p class="nomargin-top"><span class="codelink"><a href="inh_example-pysrc.html#Bird">source code</a></span></p>
+<pre class="base-tree">
+<a href="inh_example.Animal-class.html">Animal</a> --+
+         |
+        <strong class="uidshort">Bird</strong>
+</pre>
+
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="fly"></a><span class="summary-sig-name">fly</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">dest</span>)</span><br />
+      Fly to the given destination.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="inh_example-pysrc.html#Bird.fly">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Inherited from <a href="inh_example.Animal-class.html">Animal</a></th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="eat"></a><span class="summary-sig-name">eat</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">food</span>)</span><br />
+      Consume the given food object.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="inh_example-pysrc.html#Animal.eat">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="sleep"></a><span class="summary-sig-name">sleep</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">time</span>)</span><br />
+      Sleep for the given period of time.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="inh_example-pysrc.html#Animal.sleep">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="inh_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0.1 on Wed Jan 30 14:10:11 2008
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/examples/grouped/inh_example.Bug-class.html b/doc/examples/grouped/inh_example.Bug-class.html
new file mode 100644
index 0000000..9a9f1d2
--- /dev/null
+++ b/doc/examples/grouped/inh_example.Bug-class.html
@@ -0,0 +1,213 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>inh_example.Bug</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="inh_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="inh_example-module.html">Module inh_example</a> ::
+        Class Bug
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="inh_example.Bug-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Bug</h1><p class="nomargin-top"><span class="codelink"><a href="inh_example-pysrc.html#Bug">source code</a></span></p>
+<pre class="base-tree">
+<a href="inh_example.Animal-class.html">Animal</a> --+
+         |
+        <strong class="uidshort">Bug</strong>
+</pre>
+
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="infest"></a><span class="summary-sig-name">infest</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">code</span>)</span><br />
+      Add new bugs to the given program.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="inh_example-pysrc.html#Bug.infest">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="hide"></a><span class="summary-sig-name">hide</span>(<span class="summary-sig-arg">self</span>)</span><br />
+      Temporarily stop breaking a program, in order to evade capture.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="inh_example-pysrc.html#Bug.hide">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Inherited from <a href="inh_example.Animal-class.html">Animal</a></th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="eat"></a><span class="summary-sig-name">eat</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">food</span>)</span><br />
+      Consume the given food object.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="inh_example-pysrc.html#Animal.eat">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="sleep"></a><span class="summary-sig-name">sleep</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">time</span>)</span><br />
+      Sleep for the given period of time.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="inh_example-pysrc.html#Animal.sleep">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="inh_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0.1 on Wed Jan 30 14:10:11 2008
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/examples/grouped/inh_example.Fish-class.html b/doc/examples/grouped/inh_example.Fish-class.html
new file mode 100644
index 0000000..84b8647
--- /dev/null
+++ b/doc/examples/grouped/inh_example.Fish-class.html
@@ -0,0 +1,196 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>inh_example.Fish</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="inh_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="inh_example-module.html">Module inh_example</a> ::
+        Class Fish
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="inh_example.Fish-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Fish</h1><p class="nomargin-top"><span class="codelink"><a href="inh_example-pysrc.html#Fish">source code</a></span></p>
+<pre class="base-tree">
+<a href="inh_example.Animal-class.html">Animal</a> --+
+         |
+        <strong class="uidshort">Fish</strong>
+</pre>
+
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="swim"></a><span class="summary-sig-name">swim</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">dest</span>)</span><br />
+      Swim to the given destination.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="inh_example-pysrc.html#Fish.swim">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Inherited from <a href="inh_example.Animal-class.html">Animal</a></th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="eat"></a><span class="summary-sig-name">eat</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">food</span>)</span><br />
+      Consume the given food object.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="inh_example-pysrc.html#Animal.eat">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="sleep"></a><span class="summary-sig-name">sleep</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">time</span>)</span><br />
+      Sleep for the given period of time.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="inh_example-pysrc.html#Animal.sleep">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="inh_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0.1 on Wed Jan 30 14:10:11 2008
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/examples/grouped/inh_example.Human-class.html b/doc/examples/grouped/inh_example.Human-class.html
new file mode 100644
index 0000000..04f2a73
--- /dev/null
+++ b/doc/examples/grouped/inh_example.Human-class.html
@@ -0,0 +1,306 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>inh_example.Human</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="inh_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="inh_example-module.html">Module inh_example</a> ::
+        Class Human
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="inh_example.Human-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Human</h1><p class="nomargin-top"><span class="codelink"><a href="inh_example-pysrc.html#Human">source code</a></span></p>
+<pre class="base-tree">
+<a href="inh_example.Animal-class.html">Animal</a> --+        
+         |        
+    <a href="inh_example.Mammal-class.html">Mammal</a> --+    
+             |    
+       <a href="inh_example.Primate-class.html">Primate</a> --+
+                 |
+                <strong class="uidshort">Human</strong>
+</pre>
+
+<dl><dt>Known Subclasses:</dt>
+<dd>
+      <ul class="subclass-list">
+<li><a href="inh_example.Programmer-class.html">Programmer</a></li>  </ul>
+</dd></dl>
+
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="inh_example.Human-class.html#talk" class="summary-sig-name">talk</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">animal</span>)</span><br />
+      Talk to the given animal.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="inh_example-pysrc.html#Human.talk">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Inherited from <a href="inh_example.Primate-class.html">Primate</a></th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="climb"></a><span class="summary-sig-name">climb</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">tree</span>)</span><br />
+      Climb up the given tree.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="inh_example-pysrc.html#Primate.climb">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="grab"></a><span class="summary-sig-name">grab</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">object</span>)</span><br />
+      Grab hold of the given object.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="inh_example-pysrc.html#Primate.grab">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Inherited from <a href="inh_example.Mammal-class.html">Mammal</a></th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="run"></a><span class="summary-sig-name">run</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">dest</span>)</span><br />
+      Run to the given destination.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="inh_example-pysrc.html#Mammal.run">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Inherited from <a href="inh_example.Animal-class.html">Animal</a></th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="eat"></a><span class="summary-sig-name">eat</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">food</span>)</span><br />
+      Consume the given food object.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="inh_example-pysrc.html#Animal.eat">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="sleep"></a><span class="summary-sig-name">sleep</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">time</span>)</span><br />
+      Sleep for the given period of time.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="inh_example-pysrc.html#Animal.sleep">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Method Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-MethodDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="talk"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">talk</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">animal</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="inh_example-pysrc.html#Human.talk">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Talk to the given animal.  Depending on what kind of creature 
+  <code>animal</code> is, it may or may not be responsive.</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="inh_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0.1 on Wed Jan 30 14:10:11 2008
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/examples/grouped/inh_example.Mammal-class.html b/doc/examples/grouped/inh_example.Mammal-class.html
new file mode 100644
index 0000000..941e04a
--- /dev/null
+++ b/doc/examples/grouped/inh_example.Mammal-class.html
@@ -0,0 +1,202 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>inh_example.Mammal</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="inh_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="inh_example-module.html">Module inh_example</a> ::
+        Class Mammal
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="inh_example.Mammal-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Mammal</h1><p class="nomargin-top"><span class="codelink"><a href="inh_example-pysrc.html#Mammal">source code</a></span></p>
+<pre class="base-tree">
+<a href="inh_example.Animal-class.html">Animal</a> --+
+         |
+        <strong class="uidshort">Mammal</strong>
+</pre>
+
+<dl><dt>Known Subclasses:</dt>
+<dd>
+      <ul class="subclass-list">
+<li><a href="inh_example.Primate-class.html">Primate</a></li>  </ul>
+</dd></dl>
+
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="run"></a><span class="summary-sig-name">run</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">dest</span>)</span><br />
+      Run to the given destination.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="inh_example-pysrc.html#Mammal.run">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Inherited from <a href="inh_example.Animal-class.html">Animal</a></th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="eat"></a><span class="summary-sig-name">eat</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">food</span>)</span><br />
+      Consume the given food object.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="inh_example-pysrc.html#Animal.eat">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="sleep"></a><span class="summary-sig-name">sleep</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">time</span>)</span><br />
+      Sleep for the given period of time.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="inh_example-pysrc.html#Animal.sleep">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="inh_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0.1 on Wed Jan 30 14:10:11 2008
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/examples/grouped/inh_example.Primate-class.html b/doc/examples/grouped/inh_example.Primate-class.html
new file mode 100644
index 0000000..d70e060
--- /dev/null
+++ b/doc/examples/grouped/inh_example.Primate-class.html
@@ -0,0 +1,243 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>inh_example.Primate</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="inh_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="inh_example-module.html">Module inh_example</a> ::
+        Class Primate
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="inh_example.Primate-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Primate</h1><p class="nomargin-top"><span class="codelink"><a href="inh_example-pysrc.html#Primate">source code</a></span></p>
+<pre class="base-tree">
+<a href="inh_example.Animal-class.html">Animal</a> --+    
+         |    
+    <a href="inh_example.Mammal-class.html">Mammal</a> --+
+             |
+            <strong class="uidshort">Primate</strong>
+</pre>
+
+<dl><dt>Known Subclasses:</dt>
+<dd>
+      <ul class="subclass-list">
+<li><a href="inh_example.Human-class.html">Human</a></li>  </ul>
+</dd></dl>
+
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="climb"></a><span class="summary-sig-name">climb</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">tree</span>)</span><br />
+      Climb up the given tree.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="inh_example-pysrc.html#Primate.climb">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="grab"></a><span class="summary-sig-name">grab</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">object</span>)</span><br />
+      Grab hold of the given object.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="inh_example-pysrc.html#Primate.grab">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Inherited from <a href="inh_example.Mammal-class.html">Mammal</a></th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="run"></a><span class="summary-sig-name">run</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">dest</span>)</span><br />
+      Run to the given destination.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="inh_example-pysrc.html#Mammal.run">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Inherited from <a href="inh_example.Animal-class.html">Animal</a></th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="eat"></a><span class="summary-sig-name">eat</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">food</span>)</span><br />
+      Consume the given food object.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="inh_example-pysrc.html#Animal.eat">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="sleep"></a><span class="summary-sig-name">sleep</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">time</span>)</span><br />
+      Sleep for the given period of time.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="inh_example-pysrc.html#Animal.sleep">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="inh_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0.1 on Wed Jan 30 14:10:11 2008
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/examples/grouped/inh_example.Programmer-class.html b/doc/examples/grouped/inh_example.Programmer-class.html
new file mode 100644
index 0000000..cd918a7
--- /dev/null
+++ b/doc/examples/grouped/inh_example.Programmer-class.html
@@ -0,0 +1,346 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>inh_example.Programmer</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="inh_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="inh_example-module.html">Module inh_example</a> ::
+        Class Programmer
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="inh_example.Programmer-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Programmer</h1><p class="nomargin-top"><span class="codelink"><a href="inh_example-pysrc.html#Programmer">source code</a></span></p>
+<pre class="base-tree">
+<a href="inh_example.Animal-class.html">Animal</a> --+            
+         |            
+    <a href="inh_example.Mammal-class.html">Mammal</a> --+        
+             |        
+       <a href="inh_example.Primate-class.html">Primate</a> --+    
+                 |    
+             <a href="inh_example.Human-class.html">Human</a> --+
+                     |
+                    <strong class="uidshort">Programmer</strong>
+</pre>
+
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="hack"></a><span class="summary-sig-name">hack</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">code</span>)</span><br />
+      Improve the given program.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="inh_example-pysrc.html#Programmer.hack">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="inh_example.Programmer-class.html#squish" class="summary-sig-name">squish</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">bug</span>,
+        <span class="summary-sig-arg">code</span>)</span><br />
+      Remove the given bug from the given program.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="inh_example-pysrc.html#Programmer.squish">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Inherited from <a href="inh_example.Human-class.html">Human</a></th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="inh_example.Human-class.html#talk" class="summary-sig-name">talk</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">animal</span>)</span><br />
+      Talk to the given animal.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="inh_example-pysrc.html#Human.talk">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Inherited from <a href="inh_example.Primate-class.html">Primate</a></th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="climb"></a><span class="summary-sig-name">climb</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">tree</span>)</span><br />
+      Climb up the given tree.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="inh_example-pysrc.html#Primate.climb">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="grab"></a><span class="summary-sig-name">grab</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">object</span>)</span><br />
+      Grab hold of the given object.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="inh_example-pysrc.html#Primate.grab">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Inherited from <a href="inh_example.Mammal-class.html">Mammal</a></th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="run"></a><span class="summary-sig-name">run</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">dest</span>)</span><br />
+      Run to the given destination.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="inh_example-pysrc.html#Mammal.run">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr bgcolor="#e8f0f8" >
+  <th colspan="2" class="group-header"
+    >    Inherited from <a href="inh_example.Animal-class.html">Animal</a></th></tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="eat"></a><span class="summary-sig-name">eat</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">food</span>)</span><br />
+      Consume the given food object.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="inh_example-pysrc.html#Animal.eat">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="sleep"></a><span class="summary-sig-name">sleep</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">time</span>)</span><br />
+      Sleep for the given period of time.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="inh_example-pysrc.html#Animal.sleep">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Method Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-MethodDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="squish"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">squish</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">bug</span>,
+        <span class="sig-arg">code</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="inh_example-pysrc.html#Programmer.squish">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Remove the given bug from the given program.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>bug</code></strong> (<a href="inh_example.Bug-class.html" class="link">Bug</a>) - The bug that should be removed from <code>code</code>.</li>
+    </ul></dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="inh_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0.1 on Wed Jan 30 14:10:11 2008
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/examples/grouped/module-tree.html b/doc/examples/grouped/module-tree.html
new file mode 100644
index 0000000..894134f
--- /dev/null
+++ b/doc/examples/grouped/module-tree.html
@@ -0,0 +1,115 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Module Hierarchy</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="inh_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >   Trees   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%"> </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="module-tree.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<center><b>
+ [ <a href="module-tree.html">Module Hierarchy</a>
+ | <a href="class-tree.html">Class Hierarchy</a> ]
+</b></center><br />
+<h1 class="epydoc">Module Hierarchy</h1>
+<ul class="nomargin-top">
+    <li> <strong class="uidlink"><a href="inh_example-module.html">inh_example</a></strong>: <em class="summary">Examples for the epytext manual.</em>    </li>
+</ul>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="inh_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >   Trees   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0.1 on Wed Jan 30 14:10:11 2008
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/examples/grouped/redirect.html b/doc/examples/grouped/redirect.html
new file mode 100644
index 0000000..9303a53
--- /dev/null
+++ b/doc/examples/grouped/redirect.html
@@ -0,0 +1,38 @@
+<html><head><title>Epydoc Redirect Page</title>
+<meta http-equiv="cache-control" content="no-cache" />
+<meta http-equiv="expires" content="0" />
+<meta http-equiv="pragma" content="no-cache" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+<body>
+<script type="text/javascript">
+<!--
+var pages = ["inh_example.Programmer-c", "inh_example.Primate-c", "inh_example.Animal-c", "inh_example.Mammal-c", "inh_example.Human-c", "inh_example.Bird-c", "inh_example.Fish-c", "inh_example.Bug-c", "inh_example-m"];
+var dottedName = get_anchor();
+if (dottedName) {
+    var target = redirect_url(dottedName);
+    if (target) window.location.replace(target);
+}
+// -->
+</script>
+
+<h3>Epydoc Auto-redirect page</h3>
+
+<p>When javascript is enabled, this page will redirect URLs of
+the form <tt>redirect.html#<i>dotted.name</i></tt> to the
+documentation for the object with the given fully-qualified
+dotted name.</p>
+<p><a id="message">   </a></p>
+
+<script type="text/javascript">
+<!--
+if (dottedName) {
+    var msg = document.getElementById("message");
+    msg.innerHTML = "No documentation found for <tt>"+
+                    dottedName+"</tt>";
+}
+// -->
+</script>
+
+</body>
+</html>
diff --git a/doc/examples/grouped/toc-everything.html b/doc/examples/grouped/toc-everything.html
new file mode 100644
index 0000000..dcd1ee2
--- /dev/null
+++ b/doc/examples/grouped/toc-everything.html
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Everything</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Everything</h1>
+<hr />
+  <h2 class="toc">All Classes</h2>
+    <a target="mainFrame" href="inh_example.Animal-class.html"
+     >inh_example.Animal</a><br />    <a target="mainFrame" href="inh_example.Bird-class.html"
+     >inh_example.Bird</a><br />    <a target="mainFrame" href="inh_example.Bug-class.html"
+     >inh_example.Bug</a><br />    <a target="mainFrame" href="inh_example.Fish-class.html"
+     >inh_example.Fish</a><br />    <a target="mainFrame" href="inh_example.Human-class.html"
+     >inh_example.Human</a><br />    <a target="mainFrame" href="inh_example.Mammal-class.html"
+     >inh_example.Mammal</a><br />    <a target="mainFrame" href="inh_example.Primate-class.html"
+     >inh_example.Primate</a><br />    <a target="mainFrame" href="inh_example.Programmer-class.html"
+     >inh_example.Programmer</a><br /><hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/examples/grouped/toc-inh_example-module.html b/doc/examples/grouped/toc-inh_example-module.html
new file mode 100644
index 0000000..d902f98
--- /dev/null
+++ b/doc/examples/grouped/toc-inh_example-module.html
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>inh_example</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module inh_example</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="inh_example.Animal-class.html"
+     >Animal</a><br />    <a target="mainFrame" href="inh_example.Bird-class.html"
+     >Bird</a><br />    <a target="mainFrame" href="inh_example.Bug-class.html"
+     >Bug</a><br />    <a target="mainFrame" href="inh_example.Fish-class.html"
+     >Fish</a><br />    <a target="mainFrame" href="inh_example.Human-class.html"
+     >Human</a><br />    <a target="mainFrame" href="inh_example.Mammal-class.html"
+     >Mammal</a><br />    <a target="mainFrame" href="inh_example.Primate-class.html"
+     >Primate</a><br />    <a target="mainFrame" href="inh_example.Programmer-class.html"
+     >Programmer</a><br /><hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/examples/grouped/toc.html b/doc/examples/grouped/toc.html
new file mode 100644
index 0000000..f4fe997
--- /dev/null
+++ b/doc/examples/grouped/toc.html
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Table of Contents</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Table of Contents</h1>
+<hr />
+  <a target="moduleFrame" href="toc-everything.html">Everything</a>
+  <br />
+  <h2 class="toc">Modules</h2>
+    <a target="moduleFrame" href="toc-inh_example-module.html"
+     onclick="setFrame('toc-inh_example-module.html','inh_example-module.html');"     >inh_example</a><br /><hr />
+  <span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/examples/help.html b/doc/examples/help.html
new file mode 100644
index 0000000..3f078d9
--- /dev/null
+++ b/doc/examples/help.html
@@ -0,0 +1,278 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Help</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epytext_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >   Help   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%"> </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="help.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+
+<h1 class="epydoc"> API Documentation </h1>
+
+<p> This document contains the API (Application Programming Interface)
+documentation for epydoc.  Documentation for the Python
+objects defined by the project is divided into separate pages for each
+package, module, and class.  The API documentation also includes two
+pages containing information about the project as a whole: a trees
+page, and an index page.  </p>
+
+<h2> Object Documentation </h2>
+
+  <p>Each <strong>Package Documentation</strong> page contains: </p>
+  <ul>
+    <li> A description of the package. </li>
+    <li> A list of the modules and sub-packages contained by the
+    package.  </li>
+    <li> A summary of the classes defined by the package. </li>
+    <li> A summary of the functions defined by the package. </li>
+    <li> A summary of the variables defined by the package. </li>
+    <li> A detailed description of each function defined by the
+    package. </li>
+    <li> A detailed description of each variable defined by the
+    package. </li>
+  </ul>
+  
+  <p>Each <strong>Module Documentation</strong> page contains:</p>
+  <ul>
+    <li> A description of the module. </li>
+    <li> A summary of the classes defined by the module. </li>
+    <li> A summary of the functions defined by the module. </li>
+    <li> A summary of the variables defined by the module. </li>
+    <li> A detailed description of each function defined by the
+    module. </li>
+    <li> A detailed description of each variable defined by the
+    module. </li>
+  </ul>
+  
+  <p>Each <strong>Class Documentation</strong> page contains: </p>
+  <ul>
+    <li> A class inheritance diagram. </li>
+    <li> A list of known subclasses. </li>
+    <li> A description of the class. </li>
+    <li> A summary of the methods defined by the class. </li>
+    <li> A summary of the instance variables defined by the class. </li>
+    <li> A summary of the class (static) variables defined by the
+    class. </li> 
+    <li> A detailed description of each method defined by the
+    class. </li>
+    <li> A detailed description of each instance variable defined by the
+    class. </li> 
+    <li> A detailed description of each class (static) variable defined
+    by the class. </li> 
+  </ul>
+
+<h2> Project Documentation </h2>
+
+  <p> The <strong>Trees</strong> page contains the module and class hierarchies: </p>
+  <ul>
+    <li> The <em>module hierarchy</em> lists every package and module, with
+    modules grouped into packages.  At the top level, and within each
+    package, modules and sub-packages are listed alphabetically. </li>
+    <li> The <em>class hierarchy</em> lists every class, grouped by base
+    class.  If a class has more than one base class, then it will be
+    listed under each base class.  At the top level, and under each base
+    class, classes are listed alphabetically. </li>
+  </ul>
+  
+  <p> The <strong>Index</strong> page contains indices of terms and
+  identifiers: </p>
+  <ul>
+    <li> The <em>term index</em> lists every term indexed by any object's
+    documentation.  For each term, the index provides links to each
+    place where the term is indexed. </li>
+    <li> The <em>identifier index</em> lists the (short) name of every package,
+    module, class, method, function, variable, and parameter.  For each
+    identifier, the index provides a short description, and a link to
+    its documentation. </li>
+  </ul>
+
+<h2> The Table of Contents </h2>
+
+<p> The table of contents occupies the two frames on the left side of
+the window.  The upper-left frame displays the <em>project
+contents</em>, and the lower-left frame displays the <em>module
+contents</em>: </p>
+
+<table class="help summary" border="1" cellspacing="0" cellpadding="3">
+  <tr style="height: 30%">
+    <td align="center" style="font-size: small">
+       Project<br />Contents<hr />...</td>
+    <td align="center" style="font-size: small" rowspan="2" width="70%">
+      API<br />Documentation<br />Frame<br /><br /><br />
+    </td>
+  </tr>
+  <tr>
+    <td align="center" style="font-size: small">
+      Module<br />Contents<hr /> <br />...<br /> 
+    </td>
+  </tr>
+</table><br />
+
+<p> The <strong>project contents frame</strong> contains a list of all packages
+and modules that are defined by the project.  Clicking on an entry
+will display its contents in the module contents frame.  Clicking on a
+special entry, labeled "Everything," will display the contents of
+the entire project. </p>
+
+<p> The <strong>module contents frame</strong> contains a list of every
+submodule, class, type, exception, function, and variable defined by a
+module or package.  Clicking on an entry will display its
+documentation in the API documentation frame.  Clicking on the name of
+the module, at the top of the frame, will display the documentation
+for the module itself. </p>
+
+<p> The "<strong>frames</strong>" and "<strong>no frames</strong>" buttons below the top
+navigation bar can be used to control whether the table of contents is
+displayed or not. </p>
+
+<h2> The Navigation Bar </h2>
+
+<p> A navigation bar is located at the top and bottom of every page.
+It indicates what type of page you are currently viewing, and allows
+you to go to related pages.  The following table describes the labels
+on the navigation bar.  Note that not some labels (such as
+[Parent]) are not displayed on all pages. </p>
+
+<table class="summary" border="1" cellspacing="0" cellpadding="3" width="100%">
+<tr class="summary">
+  <th>Label</th>
+  <th>Highlighted when...</th>
+  <th>Links to...</th>
+</tr>
+  <tr><td valign="top"><strong>[Parent]</strong></td>
+      <td valign="top"><em>(never highlighted)</em></td>
+      <td valign="top"> the parent of the current package </td></tr>
+  <tr><td valign="top"><strong>[Package]</strong></td>
+      <td valign="top">viewing a package</td>
+      <td valign="top">the package containing the current object
+      </td></tr>
+  <tr><td valign="top"><strong>[Module]</strong></td>
+      <td valign="top">viewing a module</td>
+      <td valign="top">the module containing the current object
+      </td></tr> 
+  <tr><td valign="top"><strong>[Class]</strong></td>
+      <td valign="top">viewing a class </td>
+      <td valign="top">the class containing the current object</td></tr>
+  <tr><td valign="top"><strong>[Trees]</strong></td>
+      <td valign="top">viewing the trees page</td>
+      <td valign="top"> the trees page </td></tr>
+  <tr><td valign="top"><strong>[Index]</strong></td>
+      <td valign="top">viewing the index page</td>
+      <td valign="top"> the index page </td></tr>
+  <tr><td valign="top"><strong>[Help]</strong></td>
+      <td valign="top">viewing the help page</td>
+      <td valign="top"> the help page </td></tr>
+</table>
+
+<p> The "<strong>show private</strong>" and "<strong>hide private</strong>" buttons below
+the top navigation bar can be used to control whether documentation
+for private objects is displayed.  Private objects are usually defined
+as objects whose (short) names begin with a single underscore, but do
+not end with an underscore.  For example, "<code>_x</code>",
+"<code>__pprint</code>", and "<code>epydoc.epytext._tokenize</code>"
+are private objects; but "<code>re.sub</code>",
+"<code>__init__</code>", and "<code>type_</code>" are not.  However,
+if a module defines the "<code>__all__</code>" variable, then its
+contents are used to decide which objects are private. </p>
+
+<p> A timestamp below the bottom navigation bar indicates when each
+page was last updated. </p>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epytext_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >   Help   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0.1 on Wed Jan 30 14:10:06 2008
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/examples/identifier-index.html b/doc/examples/identifier-index.html
new file mode 100644
index 0000000..a9234bb
--- /dev/null
+++ b/doc/examples/identifier-index.html
@@ -0,0 +1,369 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Identifier Index</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epytext_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >   Indices   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%"> </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="identifier-index.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<center><b>[
+ <a href="identifier-index.html">Identifiers</a>
+| <a href="term-index.html">Term Definitions</a>
+]</b></center><br />
+<table border="0" width="100%">
+<tr valign="bottom"><td>
+<h1 class="epydoc">Identifier Index</h1>
+</td><td>
+[
+  A
+  B
+ <a href="#C">C</a>
+ <a href="#D">D</a>
+ <a href="#E">E</a>
+ <a href="#F">F</a>
+  G
+  H
+ <a href="#I">I</a>
+  J
+  K
+ <a href="#L">L</a>
+ <a href="#M">M</a>
+  N
+  O
+ <a href="#P">P</a>
+  Q
+  R
+ <a href="#S">S</a>
+ <a href="#T">T</a>
+ <a href="#U">U</a>
+ <a href="#V">V</a>
+  W
+ <a href="#X">X</a>
+  Y
+ <a href="#Z">Z</a>
+ <a href="#_">_</a>
+]
+</td></table>
+<table border="0" width="100%">
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="C">C</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="sre-module.html#compile">compile()</a><br />
+<span class="index-where">(in <a href="sre-module.html">sre</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+<td width="33%" class="link-index"> </td>
+</tr>
+<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="D">D</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="sre-module.html#DEBUG">DEBUG</a><br />
+<span class="index-where">(in <a href="sre-module.html">sre</a>)</span></td>
+<td width="33%" class="link-index"><a href="sre-module.html#DOTALL">DOTALL</a><br />
+<span class="index-where">(in <a href="sre-module.html">sre</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+</tr>
+<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="E">E</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="epytext_example-module.html">epytext_example</a></td>
+<td width="33%" class="link-index"><a href="sre_constants.error-class.html">error</a></td>
+<td width="33%" class="link-index"><a href="sre-module.html#escape">escape()</a><br />
+<span class="index-where">(in <a href="sre-module.html">sre</a>)</span></td>
+</tr>
+<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="F">F</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="sre-module.html#findall">findall()</a><br />
+<span class="index-where">(in <a href="sre-module.html">sre</a>)</span></td>
+<td width="33%" class="link-index"><a href="sre-module.html#finditer">finditer()</a><br />
+<span class="index-where">(in <a href="sre-module.html">sre</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+</tr>
+<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="I">I</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="sre-module.html#I">I</a><br />
+<span class="index-where">(in <a href="sre-module.html">sre</a>)</span></td>
+<td width="33%" class="link-index"><a href="sre-module.html#IGNORECASE">IGNORECASE</a><br />
+<span class="index-where">(in <a href="sre-module.html">sre</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+</tr>
+<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="L">L</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="sre-module.html#L">L</a><br />
+<span class="index-where">(in <a href="sre-module.html">sre</a>)</span></td>
+<td width="33%" class="link-index"><a href="sre-module.html#LOCALE">LOCALE</a><br />
+<span class="index-where">(in <a href="sre-module.html">sre</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+</tr>
+<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="M">M</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="sre-module.html#M">M</a><br />
+<span class="index-where">(in <a href="sre-module.html">sre</a>)</span></td>
+<td width="33%" class="link-index"><a href="sre-module.html#match">match()</a><br />
+<span class="index-where">(in <a href="sre-module.html">sre</a>)</span></td>
+<td width="33%" class="link-index"><a href="sre-module.html#MULTILINE">MULTILINE</a><br />
+<span class="index-where">(in <a href="sre-module.html">sre</a>)</span></td>
+</tr>
+<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="P">P</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="sre-module.html#purge">purge()</a><br />
+<span class="index-where">(in <a href="sre-module.html">sre</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+<td width="33%" class="link-index"> </td>
+</tr>
+<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="S">S</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="sre-module.html#S">S</a><br />
+<span class="index-where">(in <a href="sre-module.html">sre</a>)</span></td>
+<td width="33%" class="link-index"><a href="sre-module.html#search">search()</a><br />
+<span class="index-where">(in <a href="sre-module.html">sre</a>)</span></td>
+<td width="33%" class="link-index"><a href="sre-module.html#sub">sub()</a><br />
+<span class="index-where">(in <a href="sre-module.html">sre</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="sre.Scanner-class.html#scan">scan()</a><br />
+<span class="index-where">(in <a href="sre.Scanner-class.html" onclick="show_private();">Scanner</a>)</span></td>
+<td width="33%" class="link-index"><a href="sre-module.html#split">split()</a><br />
+<span class="index-where">(in <a href="sre-module.html">sre</a>)</span></td>
+<td width="33%" class="link-index"><a href="sre-module.html#subn">subn()</a><br />
+<span class="index-where">(in <a href="sre-module.html">sre</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="sre.Scanner-class.html">Scanner</a><br />
+<span class="index-where">(in <a href="sre-module.html">sre</a>)</span></td>
+<td width="33%" class="link-index"><a href="sre-module.html">sre</a></td>
+<td width="33%" class="link-index"> </td>
+</tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="T">T</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="sre-module.html#T">T</a><br />
+<span class="index-where">(in <a href="sre-module.html">sre</a>)</span></td>
+<td width="33%" class="link-index"><a href="sre-module.html#TEMPLATE">TEMPLATE</a><br />
+<span class="index-where">(in <a href="sre-module.html">sre</a>)</span></td>
+<td width="33%" class="link-index"><a href="sre-module.html#template">template()</a><br />
+<span class="index-where">(in <a href="sre-module.html">sre</a>)</span></td>
+</tr>
+<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="U">U</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="sre-module.html#U">U</a><br />
+<span class="index-where">(in <a href="sre-module.html">sre</a>)</span></td>
+<td width="33%" class="link-index"><a href="sre-module.html#UNICODE">UNICODE</a><br />
+<span class="index-where">(in <a href="sre-module.html">sre</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+</tr>
+<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="V">V</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="sre-module.html#VERBOSE">VERBOSE</a><br />
+<span class="index-where">(in <a href="sre-module.html">sre</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+<td width="33%" class="link-index"> </td>
+</tr>
+<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="X">X</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="sre-module.html#X">X</a><br />
+<span class="index-where">(in <a href="sre-module.html">sre</a>)</span></td>
+<td width="33%" class="link-index"><a href="epytext_example-module.html#x_intercept">x_intercept()</a><br />
+<span class="index-where">(in <a href="epytext_example-module.html">epytext_example</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+</tr>
+<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="Z">Z</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="epytext_example-module.html#z_transform">z_transform()</a><br />
+<span class="index-where">(in <a href="epytext_example-module.html">epytext_example</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+<td width="33%" class="link-index"> </td>
+</tr>
+<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="_">_</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="sre.Scanner-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="sre.Scanner-class.html" onclick="show_private();">Scanner</a>)</span></td>
+<td width="33%" class="link-index"><a href="sre-module.html#_compile">_compile()</a><br />
+<span class="index-where">(in <a href="sre-module.html">sre</a>)</span></td>
+<td width="33%" class="link-index"><a href="sre-module.html#_MAXCACHE">_MAXCACHE</a><br />
+<span class="index-where">(in <a href="sre-module.html">sre</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="sre-module.html#_cache">_cache</a><br />
+<span class="index-where">(in <a href="sre-module.html">sre</a>)</span></td>
+<td width="33%" class="link-index"><a href="sre-module.html#_compile_repl">_compile_repl()</a><br />
+<span class="index-where">(in <a href="sre-module.html">sre</a>)</span></td>
+<td width="33%" class="link-index"><a href="sre-module.html#_pickle">_pickle()</a><br />
+<span class="index-where">(in <a href="sre-module.html">sre</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="sre-module.html#_cache_repl">_cache_repl</a><br />
+<span class="index-where">(in <a href="sre-module.html">sre</a>)</span></td>
+<td width="33%" class="link-index"><a href="sre-module.html#_expand">_expand()</a><br />
+<span class="index-where">(in <a href="sre-module.html">sre</a>)</span></td>
+<td width="33%" class="link-index"><a href="sre-module.html#_subx">_subx()</a><br />
+<span class="index-where">(in <a href="sre-module.html">sre</a>)</span></td>
+</tr>
+</table>
+</td></tr>
+</table>
+<br /><br /><!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epytext_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >   Indices   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0.1 on Wed Jan 30 14:10:06 2008
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/examples/included/class-tree.html b/doc/examples/included/class-tree.html
new file mode 100644
index 0000000..d56e6fe
--- /dev/null
+++ b/doc/examples/included/class-tree.html
@@ -0,0 +1,138 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Class Hierarchy</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="inh_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >   Trees   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%"> </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="class-tree.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<center><b>
+ [ <a href="module-tree.html">Module Hierarchy</a>
+ | <a href="class-tree.html">Class Hierarchy</a> ]
+</b></center><br />
+<h1 class="epydoc">Class Hierarchy</h1>
+<ul class="nomargin-top">
+    <li> <strong class="uidlink"><a href="inh_example.Animal-class.html">inh_example.Animal</a></strong>
+    <ul>
+    <li> <strong class="uidlink"><a href="inh_example.Bird-class.html">inh_example.Bird</a></strong>
+    </li>
+    <li> <strong class="uidlink"><a href="inh_example.Bug-class.html">inh_example.Bug</a></strong>
+    </li>
+    <li> <strong class="uidlink"><a href="inh_example.Fish-class.html">inh_example.Fish</a></strong>
+    </li>
+    <li> <strong class="uidlink"><a href="inh_example.Mammal-class.html">inh_example.Mammal</a></strong>
+    <ul>
+    <li> <strong class="uidlink"><a href="inh_example.Primate-class.html">inh_example.Primate</a></strong>
+    <ul>
+    <li> <strong class="uidlink"><a href="inh_example.Human-class.html">inh_example.Human</a></strong>
+    <ul>
+    <li> <strong class="uidlink"><a href="inh_example.Programmer-class.html">inh_example.Programmer</a></strong>
+    </li>
+    </ul>
+    </li>
+    </ul>
+    </li>
+    </ul>
+    </li>
+    </ul>
+    </li>
+</ul>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="inh_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >   Trees   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0.1 on Wed Jan 30 14:10:20 2008
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/examples/included/crarr.png b/doc/examples/included/crarr.png
new file mode 100644
index 0000000..26b43c5
Binary files /dev/null and b/doc/examples/included/crarr.png differ
diff --git a/doc/examples/included/epydoc.css b/doc/examples/included/epydoc.css
new file mode 100644
index 0000000..86d4170
--- /dev/null
+++ b/doc/examples/included/epydoc.css
@@ -0,0 +1,322 @@
+
+
+/* Epydoc CSS Stylesheet
+ *
+ * This stylesheet can be used to customize the appearance of epydoc's
+ * HTML output.
+ *
+ */
+
+/* Default Colors & Styles
+ *   - Set the default foreground & background color with 'body'; and 
+ *     link colors with 'a:link' and 'a:visited'.
+ *   - Use bold for decision list terms.
+ *   - The heading styles defined here are used for headings *within*
+ *     docstring descriptions.  All headings used by epydoc itself use
+ *     either class='epydoc' or class='toc' (CSS styles for both
+ *     defined below).
+ */
+body                        { background: #ffffff; color: #000000; }
+p                           { margin-top: 0.5em; margin-bottom: 0.5em; }
+a:link                      { color: #0000ff; }
+a:visited                   { color: #204080; }
+dt                          { font-weight: bold; }
+h1                          { font-size: +140%; font-style: italic;
+                              font-weight: bold; }
+h2                          { font-size: +125%; font-style: italic;
+                              font-weight: bold; }
+h3                          { font-size: +110%; font-style: italic;
+                              font-weight: normal; }
+code                        { font-size: 100%; }
+/* N.B.: class, not pseudoclass */
+a.link                      { font-family: monospace; }
+ 
+/* Page Header & Footer
+ *   - The standard page header consists of a navigation bar (with
+ *     pointers to standard pages such as 'home' and 'trees'); a
+ *     breadcrumbs list, which can be used to navigate to containing
+ *     classes or modules; options links, to show/hide private
+ *     variables and to show/hide frames; and a page title (using
+ *     <h1>).  The page title may be followed by a link to the
+ *     corresponding source code (using 'span.codelink').
+ *   - The footer consists of a navigation bar, a timestamp, and a
+ *     pointer to epydoc's homepage.
+ */ 
+h1.epydoc                   { margin: 0; font-size: +140%; font-weight: bold; }
+h2.epydoc                   { font-size: +130%; font-weight: bold; }
+h3.epydoc                   { font-size: +115%; font-weight: bold;
+                              margin-top: 0.2em; }
+td h3.epydoc                { font-size: +115%; font-weight: bold;
+                              margin-bottom: 0; }
+table.navbar                { background: #a0c0ff; color: #000000;
+                              border: 2px groove #c0d0d0; }
+table.navbar table          { color: #000000; }
+th.navbar-select            { background: #70b0ff;
+                              color: #000000; } 
+table.navbar a              { text-decoration: none; }  
+table.navbar a:link         { color: #0000ff; }
+table.navbar a:visited      { color: #204080; }
+span.breadcrumbs            { font-size: 85%; font-weight: bold; }
+span.options                { font-size: 70%; }
+span.codelink               { font-size: 85%; }
+td.footer                   { font-size: 85%; }
+
+/* Table Headers
+ *   - Each summary table and details section begins with a 'header'
+ *     row.  This row contains a section title (marked by
+ *     'span.table-header') as well as a show/hide private link
+ *     (marked by 'span.options', defined above).
+ *   - Summary tables that contain user-defined groups mark those
+ *     groups using 'group header' rows.
+ */
+td.table-header             { background: #70b0ff; color: #000000;
+                              border: 1px solid #608090; }
+td.table-header table       { color: #000000; }
+td.table-header table a:link      { color: #0000ff; }
+td.table-header table a:visited   { color: #204080; }
+span.table-header           { font-size: 120%; font-weight: bold; }
+th.group-header             { background: #c0e0f8; color: #000000;
+                              text-align: left; font-style: italic; 
+                              font-size: 115%; 
+                              border: 1px solid #608090; }
+
+/* Summary Tables (functions, variables, etc)
+ *   - Each object is described by a single row of the table with
+ *     two cells.  The left cell gives the object's type, and is
+ *     marked with 'code.summary-type'.  The right cell gives the
+ *     object's name and a summary description.
+ *   - CSS styles for the table's header and group headers are
+ *     defined above, under 'Table Headers'
+ */
+table.summary               { border-collapse: collapse;
+                              background: #e8f0f8; color: #000000;
+                              border: 1px solid #608090;
+                              margin-bottom: 0.5em; }
+td.summary                  { border: 1px solid #608090; }
+code.summary-type           { font-size: 85%; }
+table.summary a:link        { color: #0000ff; }
+table.summary a:visited     { color: #204080; }
+
+
+/* Details Tables (functions, variables, etc)
+ *   - Each object is described in its own div.
+ *   - A single-row summary table w/ table-header is used as
+ *     a header for each details section (CSS style for table-header
+ *     is defined above, under 'Table Headers').
+ */
+table.details               { border-collapse: collapse;
+                              background: #e8f0f8; color: #000000;
+                              border: 1px solid #608090;
+                              margin: .2em 0 0 0; }
+table.details table         { color: #000000; }
+table.details a:link        { color: #0000ff; }
+table.details a:visited     { color: #204080; }
+
+/* Fields */
+dl.fields                   { margin-left: 2em; margin-top: 1em;
+                              margin-bottom: 1em; }
+dl.fields dd ul             { margin-left: 0em; padding-left: 0em; }
+dl.fields dd ul li ul       { margin-left: 2em; padding-left: 0em; }
+div.fields                  { margin-left: 2em; }
+div.fields p                { margin-bottom: 0.5em; }
+
+/* Index tables (identifier index, term index, etc)
+ *   - link-index is used for indices containing lists of links
+ *     (namely, the identifier index & term index).
+ *   - index-where is used in link indices for the text indicating
+ *     the container/source for each link.
+ *   - metadata-index is used for indices containing metadata
+ *     extracted from fields (namely, the bug index & todo index).
+ */
+table.link-index            { border-collapse: collapse;
+                              background: #e8f0f8; color: #000000;
+                              border: 1px solid #608090; }
+td.link-index               { border-width: 0px; }
+table.link-index a:link     { color: #0000ff; }
+table.link-index a:visited  { color: #204080; }
+span.index-where            { font-size: 70%; }
+table.metadata-index        { border-collapse: collapse;
+                              background: #e8f0f8; color: #000000;
+                              border: 1px solid #608090; 
+                              margin: .2em 0 0 0; }
+td.metadata-index           { border-width: 1px; border-style: solid; }
+table.metadata-index a:link { color: #0000ff; }
+table.metadata-index a:visited  { color: #204080; }
+
+/* Function signatures
+ *   - sig* is used for the signature in the details section.
+ *   - .summary-sig* is used for the signature in the summary 
+ *     table, and when listing property accessor functions.
+ * */
+.sig-name                   { color: #006080; }
+.sig-arg                    { color: #008060; }
+.sig-default                { color: #602000; }
+.summary-sig                { font-family: monospace; }
+.summary-sig-name           { color: #006080; font-weight: bold; }
+table.summary a.summary-sig-name:link
+                            { color: #006080; font-weight: bold; }
+table.summary a.summary-sig-name:visited
+                            { color: #006080; font-weight: bold; }
+.summary-sig-arg            { color: #006040; }
+.summary-sig-default        { color: #501800; }
+
+/* Subclass list
+ */
+ul.subclass-list { display: inline; }
+ul.subclass-list li { display: inline; }
+
+/* To render variables, classes etc. like functions */
+table.summary .summary-name { color: #006080; font-weight: bold;
+                              font-family: monospace; }
+table.summary
+     a.summary-name:link    { color: #006080; font-weight: bold;
+                              font-family: monospace; }
+table.summary
+    a.summary-name:visited  { color: #006080; font-weight: bold;
+                              font-family: monospace; }
+
+/* Variable values
+ *   - In the 'variable details' sections, each varaible's value is
+ *     listed in a 'pre.variable' box.  The width of this box is
+ *     restricted to 80 chars; if the value's repr is longer than
+ *     this it will be wrapped, using a backslash marked with
+ *     class 'variable-linewrap'.  If the value's repr is longer
+ *     than 3 lines, the rest will be ellided; and an ellipsis
+ *     marker ('...' marked with 'variable-ellipsis') will be used.
+ *   - If the value is a string, its quote marks will be marked
+ *     with 'variable-quote'.
+ *   - If the variable is a regexp, it is syntax-highlighted using
+ *     the re* CSS classes.
+ */
+pre.variable                { padding: .5em; margin: 0;
+                              background: #dce4ec; color: #000000;
+                              border: 1px solid #708890; }
+.variable-linewrap          { color: #604000; font-weight: bold; }
+.variable-ellipsis          { color: #604000; font-weight: bold; }
+.variable-quote             { color: #604000; font-weight: bold; }
+.variable-group             { color: #008000; font-weight: bold; }
+.variable-op                { color: #604000; font-weight: bold; }
+.variable-string            { color: #006030; }
+.variable-unknown           { color: #a00000; font-weight: bold; }
+.re                         { color: #000000; }
+.re-char                    { color: #006030; }
+.re-op                      { color: #600000; }
+.re-group                   { color: #003060; }
+.re-ref                     { color: #404040; }
+
+/* Base tree
+ *   - Used by class pages to display the base class hierarchy.
+ */
+pre.base-tree               { font-size: 80%; margin: 0; }
+
+/* Frames-based table of contents headers
+ *   - Consists of two frames: one for selecting modules; and
+ *     the other listing the contents of the selected module.
+ *   - h1.toc is used for each frame's heading
+ *   - h2.toc is used for subheadings within each frame.
+ */
+h1.toc                      { text-align: center; font-size: 105%;
+                              margin: 0; font-weight: bold;
+                              padding: 0; }
+h2.toc                      { font-size: 100%; font-weight: bold; 
+                              margin: 0.5em 0 0 -0.3em; }
+
+/* Syntax Highlighting for Source Code
+ *   - doctest examples are displayed in a 'pre.py-doctest' block.
+ *     If the example is in a details table entry, then it will use
+ *     the colors specified by the 'table pre.py-doctest' line.
+ *   - Source code listings are displayed in a 'pre.py-src' block.
+ *     Each line is marked with 'span.py-line' (used to draw a line
+ *     down the left margin, separating the code from the line
+ *     numbers).  Line numbers are displayed with 'span.py-lineno'.
+ *     The expand/collapse block toggle button is displayed with
+ *     'a.py-toggle' (Note: the CSS style for 'a.py-toggle' should not
+ *     modify the font size of the text.)
+ *   - If a source code page is opened with an anchor, then the
+ *     corresponding code block will be highlighted.  The code
+ *     block's header is highlighted with 'py-highlight-hdr'; and
+ *     the code block's body is highlighted with 'py-highlight'.
+ *   - The remaining py-* classes are used to perform syntax
+ *     highlighting (py-string for string literals, py-name for names,
+ *     etc.)
+ */
+pre.py-doctest              { padding: .5em; margin: 1em;
+                              background: #e8f0f8; color: #000000;
+                              border: 1px solid #708890; }
+table pre.py-doctest        { background: #dce4ec;
+                              color: #000000; }
+pre.py-src                  { border: 2px solid #000000; 
+                              background: #f0f0f0; color: #000000; }
+.py-line                    { border-left: 2px solid #000000; 
+                              margin-left: .2em; padding-left: .4em; }
+.py-lineno                  { font-style: italic; font-size: 90%;
+                              padding-left: .5em; }
+a.py-toggle                 { text-decoration: none; }
+div.py-highlight-hdr        { border-top: 2px solid #000000;
+                              border-bottom: 2px solid #000000;
+                              background: #d8e8e8; }
+div.py-highlight            { border-bottom: 2px solid #000000;
+                              background: #d0e0e0; }
+.py-prompt                  { color: #005050; font-weight: bold;}
+.py-more                    { color: #005050; font-weight: bold;}
+.py-string                  { color: #006030; }
+.py-comment                 { color: #003060; }
+.py-keyword                 { color: #600000; }
+.py-output                  { color: #404040; }
+.py-name                    { color: #000050; }
+.py-name:link               { color: #000050 !important; }
+.py-name:visited            { color: #000050 !important; }
+.py-number                  { color: #005000; }
+.py-defname                 { color: #000060; font-weight: bold; }
+.py-def-name                { color: #000060; font-weight: bold; }
+.py-base-class              { color: #000060; }
+.py-param                   { color: #000060; }
+.py-docstring               { color: #006030; }
+.py-decorator               { color: #804020; }
+/* Use this if you don't want links to names underlined: */
+/*a.py-name                   { text-decoration: none; }*/
+
+/* Graphs & Diagrams
+ *   - These CSS styles are used for graphs & diagrams generated using
+ *     Graphviz dot.  'img.graph-without-title' is used for bare
+ *     diagrams (to remove the border created by making the image
+ *     clickable).
+ */
+img.graph-without-title     { border: none; }
+img.graph-with-title        { border: 1px solid #000000; }
+span.graph-title            { font-weight: bold; }
+span.graph-caption          { }
+
+/* General-purpose classes
+ *   - 'p.indent-wrapped-lines' defines a paragraph whose first line
+ *     is not indented, but whose subsequent lines are.
+ *   - The 'nomargin-top' class is used to remove the top margin (e.g.
+ *     from lists).  The 'nomargin' class is used to remove both the
+ *     top and bottom margin (but not the left or right margin --
+ *     for lists, that would cause the bullets to disappear.)
+ */
+p.indent-wrapped-lines      { padding: 0 0 0 7em; text-indent: -7em; 
+                              margin: 0; }
+.nomargin-top               { margin-top: 0; }
+.nomargin                   { margin-top: 0; margin-bottom: 0; }
+
+/* HTML Log */
+div.log-block               { padding: 0; margin: .5em 0 .5em 0;
+                              background: #e8f0f8; color: #000000;
+                              border: 1px solid #000000; }
+div.log-error               { padding: .1em .3em .1em .3em; margin: 4px;
+                              background: #ffb0b0; color: #000000;
+                              border: 1px solid #000000; }
+div.log-warning             { padding: .1em .3em .1em .3em; margin: 4px;
+                              background: #ffffb0; color: #000000;
+                              border: 1px solid #000000; }
+div.log-info               { padding: .1em .3em .1em .3em; margin: 4px;
+                              background: #b0ffb0; color: #000000;
+                              border: 1px solid #000000; }
+h2.log-hdr                  { background: #70b0ff; color: #000000;
+                              margin: 0; padding: 0em 0.5em 0em 0.5em;
+                              border-bottom: 1px solid #000000; font-size: 110%; }
+p.log                       { font-weight: bold; margin: .5em 0 .5em 0; }
+tr.opt-changed              { color: #000000; font-weight: bold; }
+tr.opt-default              { color: #606060; }
+pre.log                     { margin: 0; padding: 0; padding-left: 1em; }
diff --git a/doc/examples/included/frames.html b/doc/examples/included/frames.html
new file mode 100644
index 0000000..fa977a6
--- /dev/null
+++ b/doc/examples/included/frames.html
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
+          "DTD/xhtml1-frameset.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title> epydoc </title>
+</head>
+<frameset cols="20%,80%">
+  <frameset rows="30%,70%">
+    <frame src="toc.html" name="moduleListFrame"
+           id="moduleListFrame" />
+    <frame src="toc-everything.html" name="moduleFrame"
+           id="moduleFrame" />
+  </frameset>
+  <frame src="inh_example-module.html" name="mainFrame" id="mainFrame" />
+</frameset>
+</html>
diff --git a/doc/examples/included/help.html b/doc/examples/included/help.html
new file mode 100644
index 0000000..a1c0bb0
--- /dev/null
+++ b/doc/examples/included/help.html
@@ -0,0 +1,278 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Help</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="inh_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >   Help   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%"> </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="help.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+
+<h1 class="epydoc"> API Documentation </h1>
+
+<p> This document contains the API (Application Programming Interface)
+documentation for epydoc.  Documentation for the Python
+objects defined by the project is divided into separate pages for each
+package, module, and class.  The API documentation also includes two
+pages containing information about the project as a whole: a trees
+page, and an index page.  </p>
+
+<h2> Object Documentation </h2>
+
+  <p>Each <strong>Package Documentation</strong> page contains: </p>
+  <ul>
+    <li> A description of the package. </li>
+    <li> A list of the modules and sub-packages contained by the
+    package.  </li>
+    <li> A summary of the classes defined by the package. </li>
+    <li> A summary of the functions defined by the package. </li>
+    <li> A summary of the variables defined by the package. </li>
+    <li> A detailed description of each function defined by the
+    package. </li>
+    <li> A detailed description of each variable defined by the
+    package. </li>
+  </ul>
+  
+  <p>Each <strong>Module Documentation</strong> page contains:</p>
+  <ul>
+    <li> A description of the module. </li>
+    <li> A summary of the classes defined by the module. </li>
+    <li> A summary of the functions defined by the module. </li>
+    <li> A summary of the variables defined by the module. </li>
+    <li> A detailed description of each function defined by the
+    module. </li>
+    <li> A detailed description of each variable defined by the
+    module. </li>
+  </ul>
+  
+  <p>Each <strong>Class Documentation</strong> page contains: </p>
+  <ul>
+    <li> A class inheritance diagram. </li>
+    <li> A list of known subclasses. </li>
+    <li> A description of the class. </li>
+    <li> A summary of the methods defined by the class. </li>
+    <li> A summary of the instance variables defined by the class. </li>
+    <li> A summary of the class (static) variables defined by the
+    class. </li> 
+    <li> A detailed description of each method defined by the
+    class. </li>
+    <li> A detailed description of each instance variable defined by the
+    class. </li> 
+    <li> A detailed description of each class (static) variable defined
+    by the class. </li> 
+  </ul>
+
+<h2> Project Documentation </h2>
+
+  <p> The <strong>Trees</strong> page contains the module and class hierarchies: </p>
+  <ul>
+    <li> The <em>module hierarchy</em> lists every package and module, with
+    modules grouped into packages.  At the top level, and within each
+    package, modules and sub-packages are listed alphabetically. </li>
+    <li> The <em>class hierarchy</em> lists every class, grouped by base
+    class.  If a class has more than one base class, then it will be
+    listed under each base class.  At the top level, and under each base
+    class, classes are listed alphabetically. </li>
+  </ul>
+  
+  <p> The <strong>Index</strong> page contains indices of terms and
+  identifiers: </p>
+  <ul>
+    <li> The <em>term index</em> lists every term indexed by any object's
+    documentation.  For each term, the index provides links to each
+    place where the term is indexed. </li>
+    <li> The <em>identifier index</em> lists the (short) name of every package,
+    module, class, method, function, variable, and parameter.  For each
+    identifier, the index provides a short description, and a link to
+    its documentation. </li>
+  </ul>
+
+<h2> The Table of Contents </h2>
+
+<p> The table of contents occupies the two frames on the left side of
+the window.  The upper-left frame displays the <em>project
+contents</em>, and the lower-left frame displays the <em>module
+contents</em>: </p>
+
+<table class="help summary" border="1" cellspacing="0" cellpadding="3">
+  <tr style="height: 30%">
+    <td align="center" style="font-size: small">
+       Project<br />Contents<hr />...</td>
+    <td align="center" style="font-size: small" rowspan="2" width="70%">
+      API<br />Documentation<br />Frame<br /><br /><br />
+    </td>
+  </tr>
+  <tr>
+    <td align="center" style="font-size: small">
+      Module<br />Contents<hr /> <br />...<br /> 
+    </td>
+  </tr>
+</table><br />
+
+<p> The <strong>project contents frame</strong> contains a list of all packages
+and modules that are defined by the project.  Clicking on an entry
+will display its contents in the module contents frame.  Clicking on a
+special entry, labeled "Everything," will display the contents of
+the entire project. </p>
+
+<p> The <strong>module contents frame</strong> contains a list of every
+submodule, class, type, exception, function, and variable defined by a
+module or package.  Clicking on an entry will display its
+documentation in the API documentation frame.  Clicking on the name of
+the module, at the top of the frame, will display the documentation
+for the module itself. </p>
+
+<p> The "<strong>frames</strong>" and "<strong>no frames</strong>" buttons below the top
+navigation bar can be used to control whether the table of contents is
+displayed or not. </p>
+
+<h2> The Navigation Bar </h2>
+
+<p> A navigation bar is located at the top and bottom of every page.
+It indicates what type of page you are currently viewing, and allows
+you to go to related pages.  The following table describes the labels
+on the navigation bar.  Note that not some labels (such as
+[Parent]) are not displayed on all pages. </p>
+
+<table class="summary" border="1" cellspacing="0" cellpadding="3" width="100%">
+<tr class="summary">
+  <th>Label</th>
+  <th>Highlighted when...</th>
+  <th>Links to...</th>
+</tr>
+  <tr><td valign="top"><strong>[Parent]</strong></td>
+      <td valign="top"><em>(never highlighted)</em></td>
+      <td valign="top"> the parent of the current package </td></tr>
+  <tr><td valign="top"><strong>[Package]</strong></td>
+      <td valign="top">viewing a package</td>
+      <td valign="top">the package containing the current object
+      </td></tr>
+  <tr><td valign="top"><strong>[Module]</strong></td>
+      <td valign="top">viewing a module</td>
+      <td valign="top">the module containing the current object
+      </td></tr> 
+  <tr><td valign="top"><strong>[Class]</strong></td>
+      <td valign="top">viewing a class </td>
+      <td valign="top">the class containing the current object</td></tr>
+  <tr><td valign="top"><strong>[Trees]</strong></td>
+      <td valign="top">viewing the trees page</td>
+      <td valign="top"> the trees page </td></tr>
+  <tr><td valign="top"><strong>[Index]</strong></td>
+      <td valign="top">viewing the index page</td>
+      <td valign="top"> the index page </td></tr>
+  <tr><td valign="top"><strong>[Help]</strong></td>
+      <td valign="top">viewing the help page</td>
+      <td valign="top"> the help page </td></tr>
+</table>
+
+<p> The "<strong>show private</strong>" and "<strong>hide private</strong>" buttons below
+the top navigation bar can be used to control whether documentation
+for private objects is displayed.  Private objects are usually defined
+as objects whose (short) names begin with a single underscore, but do
+not end with an underscore.  For example, "<code>_x</code>",
+"<code>__pprint</code>", and "<code>epydoc.epytext._tokenize</code>"
+are private objects; but "<code>re.sub</code>",
+"<code>__init__</code>", and "<code>type_</code>" are not.  However,
+if a module defines the "<code>__all__</code>" variable, then its
+contents are used to decide which objects are private. </p>
+
+<p> A timestamp below the bottom navigation bar indicates when each
+page was last updated. </p>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="inh_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >   Help   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0.1 on Wed Jan 30 14:10:20 2008
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/examples/included/identifier-index.html b/doc/examples/included/identifier-index.html
new file mode 100644
index 0000000..26c03d1
--- /dev/null
+++ b/doc/examples/included/identifier-index.html
@@ -0,0 +1,306 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Identifier Index</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="inh_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >   Indices   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%"> </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="identifier-index.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<table border="0" width="100%">
+<tr valign="bottom"><td>
+<h1 class="epydoc">Identifier Index</h1>
+</td><td>
+[
+ <a href="#A">A</a>
+ <a href="#B">B</a>
+ <a href="#C">C</a>
+  D
+ <a href="#E">E</a>
+ <a href="#F">F</a>
+ <a href="#G">G</a>
+ <a href="#H">H</a>
+ <a href="#I">I</a>
+  J
+  K
+  L
+ <a href="#M">M</a>
+  N
+  O
+ <a href="#P">P</a>
+  Q
+ <a href="#R">R</a>
+ <a href="#S">S</a>
+ <a href="#T">T</a>
+  U
+  V
+  W
+  X
+  Y
+  Z
+  _
+]
+</td></table>
+<table border="0" width="100%">
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="A">A</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="inh_example.Animal-class.html">Animal</a><br />
+<span class="index-where">(in <a href="inh_example-module.html">inh_example</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+<td width="33%" class="link-index"> </td>
+</tr>
+<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="B">B</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="inh_example.Bird-class.html">Bird</a><br />
+<span class="index-where">(in <a href="inh_example-module.html">inh_example</a>)</span></td>
+<td width="33%" class="link-index"><a href="inh_example.Bug-class.html">Bug</a><br />
+<span class="index-where">(in <a href="inh_example-module.html">inh_example</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+</tr>
+<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="C">C</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="inh_example.Primate-class.html#climb">climb()</a><br />
+<span class="index-where">(in <a href="inh_example.Primate-class.html">Primate</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+<td width="33%" class="link-index"> </td>
+</tr>
+<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="E">E</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="inh_example.Animal-class.html#eat">eat()</a><br />
+<span class="index-where">(in <a href="inh_example.Animal-class.html">Animal</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+<td width="33%" class="link-index"> </td>
+</tr>
+<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="F">F</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="inh_example.Fish-class.html">Fish</a><br />
+<span class="index-where">(in <a href="inh_example-module.html">inh_example</a>)</span></td>
+<td width="33%" class="link-index"><a href="inh_example.Bird-class.html#fly">fly()</a><br />
+<span class="index-where">(in <a href="inh_example.Bird-class.html">Bird</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+</tr>
+<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="G">G</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="inh_example.Primate-class.html#grab">grab()</a><br />
+<span class="index-where">(in <a href="inh_example.Primate-class.html">Primate</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+<td width="33%" class="link-index"> </td>
+</tr>
+<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="H">H</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="inh_example.Programmer-class.html#hack">hack()</a><br />
+<span class="index-where">(in <a href="inh_example.Programmer-class.html">Programmer</a>)</span></td>
+<td width="33%" class="link-index"><a href="inh_example.Bug-class.html#hide">hide()</a><br />
+<span class="index-where">(in <a href="inh_example.Bug-class.html">Bug</a>)</span></td>
+<td width="33%" class="link-index"><a href="inh_example.Human-class.html">Human</a><br />
+<span class="index-where">(in <a href="inh_example-module.html">inh_example</a>)</span></td>
+</tr>
+<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="I">I</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="inh_example.Bug-class.html#infest">infest()</a><br />
+<span class="index-where">(in <a href="inh_example.Bug-class.html">Bug</a>)</span></td>
+<td width="33%" class="link-index"><a href="inh_example-module.html">inh_example</a></td>
+<td width="33%" class="link-index"> </td>
+</tr>
+<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="M">M</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="inh_example.Mammal-class.html">Mammal</a><br />
+<span class="index-where">(in <a href="inh_example-module.html">inh_example</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+<td width="33%" class="link-index"> </td>
+</tr>
+<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="P">P</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="inh_example.Primate-class.html">Primate</a><br />
+<span class="index-where">(in <a href="inh_example-module.html">inh_example</a>)</span></td>
+<td width="33%" class="link-index"><a href="inh_example.Programmer-class.html">Programmer</a><br />
+<span class="index-where">(in <a href="inh_example-module.html">inh_example</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+</tr>
+<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="R">R</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="inh_example.Mammal-class.html#run">run()</a><br />
+<span class="index-where">(in <a href="inh_example.Mammal-class.html">Mammal</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+<td width="33%" class="link-index"> </td>
+</tr>
+<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="S">S</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="inh_example.Animal-class.html#sleep">sleep()</a><br />
+<span class="index-where">(in <a href="inh_example.Animal-class.html">Animal</a>)</span></td>
+<td width="33%" class="link-index"><a href="inh_example.Programmer-class.html#squish">squish()</a><br />
+<span class="index-where">(in <a href="inh_example.Programmer-class.html">Programmer</a>)</span></td>
+<td width="33%" class="link-index"><a href="inh_example.Fish-class.html#swim">swim()</a><br />
+<span class="index-where">(in <a href="inh_example.Fish-class.html">Fish</a>)</span></td>
+</tr>
+<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="T">T</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="inh_example.Human-class.html#talk">talk()</a><br />
+<span class="index-where">(in <a href="inh_example.Human-class.html">Human</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+<td width="33%" class="link-index"> </td>
+</tr>
+<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
+</table>
+</td></tr>
+</table>
+<br /><br /><!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="inh_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >   Indices   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0.1 on Wed Jan 30 14:10:20 2008
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/examples/included/index.html b/doc/examples/included/index.html
new file mode 100644
index 0000000..fa977a6
--- /dev/null
+++ b/doc/examples/included/index.html
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
+          "DTD/xhtml1-frameset.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title> epydoc </title>
+</head>
+<frameset cols="20%,80%">
+  <frameset rows="30%,70%">
+    <frame src="toc.html" name="moduleListFrame"
+           id="moduleListFrame" />
+    <frame src="toc-everything.html" name="moduleFrame"
+           id="moduleFrame" />
+  </frameset>
+  <frame src="inh_example-module.html" name="mainFrame" id="mainFrame" />
+</frameset>
+</html>
diff --git a/doc/examples/included/inh_example-module.html b/doc/examples/included/inh_example-module.html
new file mode 100644
index 0000000..5e23d27
--- /dev/null
+++ b/doc/examples/included/inh_example-module.html
@@ -0,0 +1,189 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>inh_example</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >   Home   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        Module inh_example
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="inh_example-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module inh_example</h1><p class="nomargin-top"><span class="codelink"><a href="inh_example-pysrc.html">source code</a></span></p>
+<p>Examples for the epytext manual.</p>
+
+<!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Classes</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Classes"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="inh_example.Animal-class.html" class="summary-name">Animal</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="inh_example.Bug-class.html" class="summary-name">Bug</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="inh_example.Bird-class.html" class="summary-name">Bird</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="inh_example.Fish-class.html" class="summary-name">Fish</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="inh_example.Mammal-class.html" class="summary-name">Mammal</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="inh_example.Primate-class.html" class="summary-name">Primate</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="inh_example.Human-class.html" class="summary-name">Human</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="inh_example.Programmer-class.html" class="summary-name">Programmer</a>
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >   Home   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0.1 on Wed Jan 30 14:10:20 2008
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/examples/included/inh_example-pysrc.html b/doc/examples/included/inh_example-pysrc.html
new file mode 100644
index 0000000..7008735
--- /dev/null
+++ b/doc/examples/included/inh_example-pysrc.html
@@ -0,0 +1,172 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>inh_example</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >   Home   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        Module inh_example
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="inh_example-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="inh_example-module.html">Module inh_example</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno"> 1</tt>  <tt class="py-line"><tt class="py-comment">#</tt> </tt>
+<a name="L2"></a><tt class="py-lineno"> 2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># inh_example.py</tt> </tt>
+<a name="L3"></a><tt class="py-lineno"> 3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L4"></a><tt class="py-lineno"> 4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Example code used by the epytext manual.</tt> </tt>
+<a name="L5"></a><tt class="py-lineno"> 5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L6"></a><tt class="py-lineno"> 6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># These classes are used to illustrate the different inheritance</tt> </tt>
+<a name="L7"></a><tt class="py-lineno"> 7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># styles. (grouped, listed, and included).</tt> </tt>
+<a name="L8"></a><tt class="py-lineno"> 8</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L9"></a><tt class="py-lineno"> 9</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-docstring">"""</tt> </tt>
+<a name="L10"></a><tt class="py-lineno">10</tt>  <tt class="py-line"><tt class="py-docstring">Examples for the epytext manual.</tt> </tt>
+<a name="L11"></a><tt class="py-lineno">11</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L12"></a><tt class="py-lineno">12</tt>  <tt class="py-line"><tt class="py-name">__docformat__</tt><tt class="py-op">=</tt><tt class="py-string">'epytext'</tt> </tt>
+<a name="L13"></a><tt class="py-lineno">13</tt>  <tt class="py-line"> </tt>
+<a name="Animal"></a><div id="Animal-def"><a name="L14"></a><tt class="py-lineno">14</tt> <a class="py-toggle" href="#" id="Animal-toggle" onclick="return toggle('Animal');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="inh_example.Animal-class.html">Animal</a><tt class="py-op">:</tt> </tt>
+</div><div id="Animal-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="Animal-expanded"><a name="Animal.eat"></a><div id="Animal.eat-def"><a name="L15"></a><tt class="py-lineno">15</tt> <a class="py-toggle" href="#" id="Animal.eat-toggle" onclick="return toggle('Animal.eat');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="inh_example.Animal-class.html#eat">eat</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt cl [...]
+</div><a name="Animal.sleep"></a><div id="Animal.sleep-def"><a name="L16"></a><tt class="py-lineno">16</tt> <a class="py-toggle" href="#" id="Animal.sleep-toggle" onclick="return toggle('Animal.sleep');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="inh_example.Animal-class.html#sleep">sleep</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">time</tt><tt class="py-op">)</tt><tt class="py-op">: [...]
+</div></div><a name="L17"></a><tt class="py-lineno">17</tt>  <tt class="py-line"> </tt>
+<a name="Bug"></a><div id="Bug-def"><a name="L18"></a><tt class="py-lineno">18</tt> <a class="py-toggle" href="#" id="Bug-toggle" onclick="return toggle('Bug');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="inh_example.Bug-class.html">Bug</a><tt class="py-op">(</tt><tt class="py-base-class">Animal</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Bug-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="Bug-expanded"><a name="Bug.infest"></a><div id="Bug.infest-def"><a name="L19"></a><tt class="py-lineno">19</tt> <a class="py-toggle" href="#" id="Bug.infest-toggle" onclick="return toggle('Bug.infest');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="inh_example.Bug-class.html#infest">infest</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class [...]
+</div><a name="Bug.hide"></a><div id="Bug.hide-def"><a name="L20"></a><tt class="py-lineno">20</tt> <a class="py-toggle" href="#" id="Bug.hide-toggle" onclick="return toggle('Bug.hide');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="inh_example.Bug-class.html#hide">hide</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Bug.hide-collapsed" style="display:none;" pad="++" indent="++++++++"></div><div id="Bug.hide-expanded"><a name="L21"></a><tt class="py-lineno">21</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L22"></a><tt class="py-lineno">22</tt>  <tt class="py-line"><tt class="py-docstring">        Temporarily stop breaking a program, in order to evade</tt> </tt>
+<a name="L23"></a><tt class="py-lineno">23</tt>  <tt class="py-line"><tt class="py-docstring">        capture.</tt> </tt>
+<a name="L24"></a><tt class="py-lineno">24</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+</div></div><a name="Bird"></a><div id="Bird-def"><a name="L25"></a><tt class="py-lineno">25</tt> <a class="py-toggle" href="#" id="Bird-toggle" onclick="return toggle('Bird');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="inh_example.Bird-class.html">Bird</a><tt class="py-op">(</tt><tt class="py-base-class">Animal</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Bird-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="Bird-expanded"><a name="Bird.fly"></a><div id="Bird.fly-def"><a name="L26"></a><tt class="py-lineno">26</tt> <a class="py-toggle" href="#" id="Bird.fly-toggle" onclick="return toggle('Bird.fly');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="inh_example.Bird-class.html#fly">fly</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,< [...]
+</div></div><a name="L27"></a><tt class="py-lineno">27</tt>  <tt class="py-line"> </tt>
+<a name="Fish"></a><div id="Fish-def"><a name="L28"></a><tt class="py-lineno">28</tt> <a class="py-toggle" href="#" id="Fish-toggle" onclick="return toggle('Fish');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="inh_example.Fish-class.html">Fish</a><tt class="py-op">(</tt><tt class="py-base-class">Animal</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Fish-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="Fish-expanded"><a name="Fish.swim"></a><div id="Fish.swim-def"><a name="L29"></a><tt class="py-lineno">29</tt> <a class="py-toggle" href="#" id="Fish.swim-toggle" onclick="return toggle('Fish.swim');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="inh_example.Fish-class.html#swim">swim</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py- [...]
+</div></div><a name="L30"></a><tt class="py-lineno">30</tt>  <tt class="py-line">     </tt>
+<a name="Mammal"></a><div id="Mammal-def"><a name="L31"></a><tt class="py-lineno">31</tt> <a class="py-toggle" href="#" id="Mammal-toggle" onclick="return toggle('Mammal');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="inh_example.Mammal-class.html">Mammal</a><tt class="py-op">(</tt><tt class="py-base-class">Animal</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Mammal-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="Mammal-expanded"><a name="Mammal.run"></a><div id="Mammal.run-def"><a name="L32"></a><tt class="py-lineno">32</tt> <a class="py-toggle" href="#" id="Mammal.run-toggle" onclick="return toggle('Mammal.run');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="inh_example.Mammal-class.html#run">run</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt cl [...]
+</div></div><a name="L33"></a><tt class="py-lineno">33</tt>  <tt class="py-line"> </tt>
+<a name="Primate"></a><div id="Primate-def"><a name="L34"></a><tt class="py-lineno">34</tt> <a class="py-toggle" href="#" id="Primate-toggle" onclick="return toggle('Primate');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="inh_example.Primate-class.html">Primate</a><tt class="py-op">(</tt><tt class="py-base-class">Mammal</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Primate-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="Primate-expanded"><a name="Primate.climb"></a><div id="Primate.climb-def"><a name="L35"></a><tt class="py-lineno">35</tt> <a class="py-toggle" href="#" id="Primate.climb-toggle" onclick="return toggle('Primate.climb');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="inh_example.Primate-class.html#climb">climb</a><tt class="py-op">(</tt><tt class="py-par [...]
+</div><a name="Primate.grab"></a><div id="Primate.grab-def"><a name="L36"></a><tt class="py-lineno">36</tt> <a class="py-toggle" href="#" id="Primate.grab-toggle" onclick="return toggle('Primate.grab');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="inh_example.Primate-class.html#grab">grab</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">object</tt><tt class="py-op">)</tt><tt class="py-op"> [...]
+</div></div><a name="L37"></a><tt class="py-lineno">37</tt>  <tt class="py-line"> </tt>
+<a name="Human"></a><div id="Human-def"><a name="L38"></a><tt class="py-lineno">38</tt> <a class="py-toggle" href="#" id="Human-toggle" onclick="return toggle('Human');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="inh_example.Human-class.html">Human</a><tt class="py-op">(</tt><tt class="py-base-class">Primate</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Human-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="Human-expanded"><a name="Human.talk"></a><div id="Human.talk-def"><a name="L39"></a><tt class="py-lineno">39</tt> <a class="py-toggle" href="#" id="Human.talk-toggle" onclick="return toggle('Human.talk');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="inh_example.Human-class.html#talk">talk</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt cla [...]
+</div><div id="Human.talk-collapsed" style="display:none;" pad="++" indent="++++++++"></div><div id="Human.talk-expanded"><a name="L40"></a><tt class="py-lineno">40</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L41"></a><tt class="py-lineno">41</tt>  <tt class="py-line"><tt class="py-docstring">        Talk to the given animal.  Depending on what kind of creature</tt> </tt>
+<a name="L42"></a><tt class="py-lineno">42</tt>  <tt class="py-line"><tt class="py-docstring">        C{animal} is, it may or may not be responsive.</tt> </tt>
+<a name="L43"></a><tt class="py-lineno">43</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+</div></div><a name="L44"></a><tt class="py-lineno">44</tt>  <tt class="py-line"> </tt>
+<a name="Programmer"></a><div id="Programmer-def"><a name="L45"></a><tt class="py-lineno">45</tt> <a class="py-toggle" href="#" id="Programmer-toggle" onclick="return toggle('Programmer');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="inh_example.Programmer-class.html">Programmer</a><tt class="py-op">(</tt><tt class="py-base-class">Human</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Programmer-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="Programmer-expanded"><a name="Programmer.hack"></a><div id="Programmer.hack-def"><a name="L46"></a><tt class="py-lineno">46</tt> <a class="py-toggle" href="#" id="Programmer.hack-toggle" onclick="return toggle('Programmer.hack');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="inh_example.Programmer-class.html#hack">hack</a><tt class="py-op">(</tt><t [...]
+</div><a name="Programmer.squish"></a><div id="Programmer.squish-def"><a name="L47"></a><tt class="py-lineno">47</tt> <a class="py-toggle" href="#" id="Programmer.squish-toggle" onclick="return toggle('Programmer.squish');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="inh_example.Programmer-class.html#squish">squish</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">bug</tt><tt class="py-op"> [...]
+</div><div id="Programmer.squish-collapsed" style="display:none;" pad="++" indent="++++++++"></div><div id="Programmer.squish-expanded"><a name="L48"></a><tt class="py-lineno">48</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L49"></a><tt class="py-lineno">49</tt>  <tt class="py-line"><tt class="py-docstring">        Remove the given bug from the given program.</tt> </tt>
+<a name="L50"></a><tt class="py-lineno">50</tt>  <tt class="py-line"><tt class="py-docstring">        @type bug: L{Bug}</tt> </tt>
+<a name="L51"></a><tt class="py-lineno">51</tt>  <tt class="py-line"><tt class="py-docstring">        @param bug: The bug that should be removed from C{code}.</tt> </tt>
+<a name="L52"></a><tt class="py-lineno">52</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+</div></div><a name="L53"></a><tt class="py-lineno">53</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >   Home   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0.1 on Wed Jan 30 14:10:21 2008
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/examples/included/inh_example.Animal-class.html b/doc/examples/included/inh_example.Animal-class.html
new file mode 100644
index 0000000..3291f8c
--- /dev/null
+++ b/doc/examples/included/inh_example.Animal-class.html
@@ -0,0 +1,175 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>inh_example.Animal</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="inh_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="inh_example-module.html">Module inh_example</a> ::
+        Class Animal
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="inh_example.Animal-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Animal</h1><p class="nomargin-top"><span class="codelink"><a href="inh_example-pysrc.html#Animal">source code</a></span></p>
+<dl><dt>Known Subclasses:</dt>
+<dd>
+      <ul class="subclass-list">
+<li><a href="inh_example.Bird-class.html">Bird</a></li><li>, <a href="inh_example.Bug-class.html">Bug</a></li><li>, <a href="inh_example.Fish-class.html">Fish</a></li><li>, <a href="inh_example.Mammal-class.html">Mammal</a></li>  </ul>
+</dd></dl>
+
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="eat"></a><span class="summary-sig-name">eat</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">food</span>)</span><br />
+      Consume the given food object.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="inh_example-pysrc.html#Animal.eat">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="sleep"></a><span class="summary-sig-name">sleep</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">time</span>)</span><br />
+      Sleep for the given period of time.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="inh_example-pysrc.html#Animal.sleep">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="inh_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0.1 on Wed Jan 30 14:10:20 2008
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/examples/included/inh_example.Bird-class.html b/doc/examples/included/inh_example.Bird-class.html
new file mode 100644
index 0000000..ee8d462
--- /dev/null
+++ b/doc/examples/included/inh_example.Bird-class.html
@@ -0,0 +1,195 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>inh_example.Bird</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="inh_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="inh_example-module.html">Module inh_example</a> ::
+        Class Bird
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="inh_example.Bird-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Bird</h1><p class="nomargin-top"><span class="codelink"><a href="inh_example-pysrc.html#Bird">source code</a></span></p>
+<pre class="base-tree">
+<a href="inh_example.Animal-class.html">Animal</a> --+
+         |
+        <strong class="uidshort">Bird</strong>
+</pre>
+
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="fly"></a><span class="summary-sig-name">fly</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">dest</span>)</span><br />
+      Fly to the given destination.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="inh_example-pysrc.html#Bird.fly">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="eat"></a><span class="summary-sig-name">eat</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">food</span>)</span><br />
+      Consume the given food object.
+      <em>(Inherited from <a href="inh_example.Animal-class.html">inh_example.Animal</a>)</em></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="inh_example-pysrc.html#Animal.eat">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="sleep"></a><span class="summary-sig-name">sleep</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">time</span>)</span><br />
+      Sleep for the given period of time.
+      <em>(Inherited from <a href="inh_example.Animal-class.html">inh_example.Animal</a>)</em></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="inh_example-pysrc.html#Animal.sleep">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="inh_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0.1 on Wed Jan 30 14:10:20 2008
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/examples/included/inh_example.Bug-class.html b/doc/examples/included/inh_example.Bug-class.html
new file mode 100644
index 0000000..e3a16e2
--- /dev/null
+++ b/doc/examples/included/inh_example.Bug-class.html
@@ -0,0 +1,212 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>inh_example.Bug</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="inh_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="inh_example-module.html">Module inh_example</a> ::
+        Class Bug
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="inh_example.Bug-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Bug</h1><p class="nomargin-top"><span class="codelink"><a href="inh_example-pysrc.html#Bug">source code</a></span></p>
+<pre class="base-tree">
+<a href="inh_example.Animal-class.html">Animal</a> --+
+         |
+        <strong class="uidshort">Bug</strong>
+</pre>
+
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="infest"></a><span class="summary-sig-name">infest</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">code</span>)</span><br />
+      Add new bugs to the given program.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="inh_example-pysrc.html#Bug.infest">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="hide"></a><span class="summary-sig-name">hide</span>(<span class="summary-sig-arg">self</span>)</span><br />
+      Temporarily stop breaking a program, in order to evade capture.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="inh_example-pysrc.html#Bug.hide">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="eat"></a><span class="summary-sig-name">eat</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">food</span>)</span><br />
+      Consume the given food object.
+      <em>(Inherited from <a href="inh_example.Animal-class.html">inh_example.Animal</a>)</em></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="inh_example-pysrc.html#Animal.eat">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="sleep"></a><span class="summary-sig-name">sleep</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">time</span>)</span><br />
+      Sleep for the given period of time.
+      <em>(Inherited from <a href="inh_example.Animal-class.html">inh_example.Animal</a>)</em></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="inh_example-pysrc.html#Animal.sleep">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="inh_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0.1 on Wed Jan 30 14:10:20 2008
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/examples/included/inh_example.Fish-class.html b/doc/examples/included/inh_example.Fish-class.html
new file mode 100644
index 0000000..ee49846
--- /dev/null
+++ b/doc/examples/included/inh_example.Fish-class.html
@@ -0,0 +1,195 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>inh_example.Fish</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="inh_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="inh_example-module.html">Module inh_example</a> ::
+        Class Fish
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="inh_example.Fish-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Fish</h1><p class="nomargin-top"><span class="codelink"><a href="inh_example-pysrc.html#Fish">source code</a></span></p>
+<pre class="base-tree">
+<a href="inh_example.Animal-class.html">Animal</a> --+
+         |
+        <strong class="uidshort">Fish</strong>
+</pre>
+
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="swim"></a><span class="summary-sig-name">swim</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">dest</span>)</span><br />
+      Swim to the given destination.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="inh_example-pysrc.html#Fish.swim">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="eat"></a><span class="summary-sig-name">eat</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">food</span>)</span><br />
+      Consume the given food object.
+      <em>(Inherited from <a href="inh_example.Animal-class.html">inh_example.Animal</a>)</em></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="inh_example-pysrc.html#Animal.eat">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="sleep"></a><span class="summary-sig-name">sleep</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">time</span>)</span><br />
+      Sleep for the given period of time.
+      <em>(Inherited from <a href="inh_example.Animal-class.html">inh_example.Animal</a>)</em></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="inh_example-pysrc.html#Animal.sleep">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="inh_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0.1 on Wed Jan 30 14:10:20 2008
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/examples/included/inh_example.Human-class.html b/doc/examples/included/inh_example.Human-class.html
new file mode 100644
index 0000000..79fd97f
--- /dev/null
+++ b/doc/examples/included/inh_example.Human-class.html
@@ -0,0 +1,302 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>inh_example.Human</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="inh_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="inh_example-module.html">Module inh_example</a> ::
+        Class Human
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="inh_example.Human-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Human</h1><p class="nomargin-top"><span class="codelink"><a href="inh_example-pysrc.html#Human">source code</a></span></p>
+<pre class="base-tree">
+<a href="inh_example.Animal-class.html">Animal</a> --+        
+         |        
+    <a href="inh_example.Mammal-class.html">Mammal</a> --+    
+             |    
+       <a href="inh_example.Primate-class.html">Primate</a> --+
+                 |
+                <strong class="uidshort">Human</strong>
+</pre>
+
+<dl><dt>Known Subclasses:</dt>
+<dd>
+      <ul class="subclass-list">
+<li><a href="inh_example.Programmer-class.html">Programmer</a></li>  </ul>
+</dd></dl>
+
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="inh_example.Human-class.html#talk" class="summary-sig-name">talk</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">animal</span>)</span><br />
+      Talk to the given animal.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="inh_example-pysrc.html#Human.talk">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="climb"></a><span class="summary-sig-name">climb</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">tree</span>)</span><br />
+      Climb up the given tree.
+      <em>(Inherited from <a href="inh_example.Primate-class.html">inh_example.Primate</a>)</em></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="inh_example-pysrc.html#Primate.climb">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="eat"></a><span class="summary-sig-name">eat</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">food</span>)</span><br />
+      Consume the given food object.
+      <em>(Inherited from <a href="inh_example.Animal-class.html">inh_example.Animal</a>)</em></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="inh_example-pysrc.html#Animal.eat">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="grab"></a><span class="summary-sig-name">grab</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">object</span>)</span><br />
+      Grab hold of the given object.
+      <em>(Inherited from <a href="inh_example.Primate-class.html">inh_example.Primate</a>)</em></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="inh_example-pysrc.html#Primate.grab">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="run"></a><span class="summary-sig-name">run</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">dest</span>)</span><br />
+      Run to the given destination.
+      <em>(Inherited from <a href="inh_example.Mammal-class.html">inh_example.Mammal</a>)</em></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="inh_example-pysrc.html#Mammal.run">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="sleep"></a><span class="summary-sig-name">sleep</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">time</span>)</span><br />
+      Sleep for the given period of time.
+      <em>(Inherited from <a href="inh_example.Animal-class.html">inh_example.Animal</a>)</em></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="inh_example-pysrc.html#Animal.sleep">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Method Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-MethodDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="talk"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">talk</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">animal</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="inh_example-pysrc.html#Human.talk">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Talk to the given animal.  Depending on what kind of creature 
+  <code>animal</code> is, it may or may not be responsive.</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="inh_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0.1 on Wed Jan 30 14:10:20 2008
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/examples/included/inh_example.Mammal-class.html b/doc/examples/included/inh_example.Mammal-class.html
new file mode 100644
index 0000000..454ab36
--- /dev/null
+++ b/doc/examples/included/inh_example.Mammal-class.html
@@ -0,0 +1,201 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>inh_example.Mammal</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="inh_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="inh_example-module.html">Module inh_example</a> ::
+        Class Mammal
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="inh_example.Mammal-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Mammal</h1><p class="nomargin-top"><span class="codelink"><a href="inh_example-pysrc.html#Mammal">source code</a></span></p>
+<pre class="base-tree">
+<a href="inh_example.Animal-class.html">Animal</a> --+
+         |
+        <strong class="uidshort">Mammal</strong>
+</pre>
+
+<dl><dt>Known Subclasses:</dt>
+<dd>
+      <ul class="subclass-list">
+<li><a href="inh_example.Primate-class.html">Primate</a></li>  </ul>
+</dd></dl>
+
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="run"></a><span class="summary-sig-name">run</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">dest</span>)</span><br />
+      Run to the given destination.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="inh_example-pysrc.html#Mammal.run">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="eat"></a><span class="summary-sig-name">eat</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">food</span>)</span><br />
+      Consume the given food object.
+      <em>(Inherited from <a href="inh_example.Animal-class.html">inh_example.Animal</a>)</em></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="inh_example-pysrc.html#Animal.eat">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="sleep"></a><span class="summary-sig-name">sleep</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">time</span>)</span><br />
+      Sleep for the given period of time.
+      <em>(Inherited from <a href="inh_example.Animal-class.html">inh_example.Animal</a>)</em></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="inh_example-pysrc.html#Animal.sleep">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="inh_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0.1 on Wed Jan 30 14:10:20 2008
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/examples/included/inh_example.Primate-class.html b/doc/examples/included/inh_example.Primate-class.html
new file mode 100644
index 0000000..d27e53e
--- /dev/null
+++ b/doc/examples/included/inh_example.Primate-class.html
@@ -0,0 +1,240 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>inh_example.Primate</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="inh_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="inh_example-module.html">Module inh_example</a> ::
+        Class Primate
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="inh_example.Primate-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Primate</h1><p class="nomargin-top"><span class="codelink"><a href="inh_example-pysrc.html#Primate">source code</a></span></p>
+<pre class="base-tree">
+<a href="inh_example.Animal-class.html">Animal</a> --+    
+         |    
+    <a href="inh_example.Mammal-class.html">Mammal</a> --+
+             |
+            <strong class="uidshort">Primate</strong>
+</pre>
+
+<dl><dt>Known Subclasses:</dt>
+<dd>
+      <ul class="subclass-list">
+<li><a href="inh_example.Human-class.html">Human</a></li>  </ul>
+</dd></dl>
+
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="climb"></a><span class="summary-sig-name">climb</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">tree</span>)</span><br />
+      Climb up the given tree.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="inh_example-pysrc.html#Primate.climb">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="grab"></a><span class="summary-sig-name">grab</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">object</span>)</span><br />
+      Grab hold of the given object.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="inh_example-pysrc.html#Primate.grab">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="eat"></a><span class="summary-sig-name">eat</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">food</span>)</span><br />
+      Consume the given food object.
+      <em>(Inherited from <a href="inh_example.Animal-class.html">inh_example.Animal</a>)</em></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="inh_example-pysrc.html#Animal.eat">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="run"></a><span class="summary-sig-name">run</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">dest</span>)</span><br />
+      Run to the given destination.
+      <em>(Inherited from <a href="inh_example.Mammal-class.html">inh_example.Mammal</a>)</em></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="inh_example-pysrc.html#Mammal.run">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="sleep"></a><span class="summary-sig-name">sleep</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">time</span>)</span><br />
+      Sleep for the given period of time.
+      <em>(Inherited from <a href="inh_example.Animal-class.html">inh_example.Animal</a>)</em></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="inh_example-pysrc.html#Animal.sleep">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="inh_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0.1 on Wed Jan 30 14:10:20 2008
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/examples/included/inh_example.Programmer-class.html b/doc/examples/included/inh_example.Programmer-class.html
new file mode 100644
index 0000000..b8208ed
--- /dev/null
+++ b/doc/examples/included/inh_example.Programmer-class.html
@@ -0,0 +1,340 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>inh_example.Programmer</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="inh_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="inh_example-module.html">Module inh_example</a> ::
+        Class Programmer
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="inh_example.Programmer-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Programmer</h1><p class="nomargin-top"><span class="codelink"><a href="inh_example-pysrc.html#Programmer">source code</a></span></p>
+<pre class="base-tree">
+<a href="inh_example.Animal-class.html">Animal</a> --+            
+         |            
+    <a href="inh_example.Mammal-class.html">Mammal</a> --+        
+             |        
+       <a href="inh_example.Primate-class.html">Primate</a> --+    
+                 |    
+             <a href="inh_example.Human-class.html">Human</a> --+
+                     |
+                    <strong class="uidshort">Programmer</strong>
+</pre>
+
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="hack"></a><span class="summary-sig-name">hack</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">code</span>)</span><br />
+      Improve the given program.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="inh_example-pysrc.html#Programmer.hack">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="inh_example.Programmer-class.html#squish" class="summary-sig-name">squish</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">bug</span>,
+        <span class="summary-sig-arg">code</span>)</span><br />
+      Remove the given bug from the given program.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="inh_example-pysrc.html#Programmer.squish">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="climb"></a><span class="summary-sig-name">climb</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">tree</span>)</span><br />
+      Climb up the given tree.
+      <em>(Inherited from <a href="inh_example.Primate-class.html">inh_example.Primate</a>)</em></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="inh_example-pysrc.html#Primate.climb">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="eat"></a><span class="summary-sig-name">eat</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">food</span>)</span><br />
+      Consume the given food object.
+      <em>(Inherited from <a href="inh_example.Animal-class.html">inh_example.Animal</a>)</em></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="inh_example-pysrc.html#Animal.eat">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="grab"></a><span class="summary-sig-name">grab</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">object</span>)</span><br />
+      Grab hold of the given object.
+      <em>(Inherited from <a href="inh_example.Primate-class.html">inh_example.Primate</a>)</em></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="inh_example-pysrc.html#Primate.grab">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="run"></a><span class="summary-sig-name">run</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">dest</span>)</span><br />
+      Run to the given destination.
+      <em>(Inherited from <a href="inh_example.Mammal-class.html">inh_example.Mammal</a>)</em></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="inh_example-pysrc.html#Mammal.run">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="sleep"></a><span class="summary-sig-name">sleep</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">time</span>)</span><br />
+      Sleep for the given period of time.
+      <em>(Inherited from <a href="inh_example.Animal-class.html">inh_example.Animal</a>)</em></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="inh_example-pysrc.html#Animal.sleep">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="inh_example.Human-class.html#talk" class="summary-sig-name">talk</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">animal</span>)</span><br />
+      Talk to the given animal.
+      <em>(Inherited from <a href="inh_example.Human-class.html">inh_example.Human</a>)</em></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="inh_example-pysrc.html#Human.talk">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Method Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-MethodDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="squish"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">squish</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">bug</span>,
+        <span class="sig-arg">code</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="inh_example-pysrc.html#Programmer.squish">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Remove the given bug from the given program.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>bug</code></strong> (<a href="inh_example.Bug-class.html" class="link">Bug</a>) - The bug that should be removed from <code>code</code>.</li>
+    </ul></dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="inh_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0.1 on Wed Jan 30 14:10:20 2008
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/examples/included/module-tree.html b/doc/examples/included/module-tree.html
new file mode 100644
index 0000000..6271400
--- /dev/null
+++ b/doc/examples/included/module-tree.html
@@ -0,0 +1,115 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Module Hierarchy</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="inh_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >   Trees   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%"> </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="module-tree.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<center><b>
+ [ <a href="module-tree.html">Module Hierarchy</a>
+ | <a href="class-tree.html">Class Hierarchy</a> ]
+</b></center><br />
+<h1 class="epydoc">Module Hierarchy</h1>
+<ul class="nomargin-top">
+    <li> <strong class="uidlink"><a href="inh_example-module.html">inh_example</a></strong>: <em class="summary">Examples for the epytext manual.</em>    </li>
+</ul>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="inh_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >   Trees   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0.1 on Wed Jan 30 14:10:20 2008
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/examples/included/redirect.html b/doc/examples/included/redirect.html
new file mode 100644
index 0000000..9303a53
--- /dev/null
+++ b/doc/examples/included/redirect.html
@@ -0,0 +1,38 @@
+<html><head><title>Epydoc Redirect Page</title>
+<meta http-equiv="cache-control" content="no-cache" />
+<meta http-equiv="expires" content="0" />
+<meta http-equiv="pragma" content="no-cache" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+<body>
+<script type="text/javascript">
+<!--
+var pages = ["inh_example.Programmer-c", "inh_example.Primate-c", "inh_example.Animal-c", "inh_example.Mammal-c", "inh_example.Human-c", "inh_example.Bird-c", "inh_example.Fish-c", "inh_example.Bug-c", "inh_example-m"];
+var dottedName = get_anchor();
+if (dottedName) {
+    var target = redirect_url(dottedName);
+    if (target) window.location.replace(target);
+}
+// -->
+</script>
+
+<h3>Epydoc Auto-redirect page</h3>
+
+<p>When javascript is enabled, this page will redirect URLs of
+the form <tt>redirect.html#<i>dotted.name</i></tt> to the
+documentation for the object with the given fully-qualified
+dotted name.</p>
+<p><a id="message">   </a></p>
+
+<script type="text/javascript">
+<!--
+if (dottedName) {
+    var msg = document.getElementById("message");
+    msg.innerHTML = "No documentation found for <tt>"+
+                    dottedName+"</tt>";
+}
+// -->
+</script>
+
+</body>
+</html>
diff --git a/doc/examples/included/toc-everything.html b/doc/examples/included/toc-everything.html
new file mode 100644
index 0000000..dcd1ee2
--- /dev/null
+++ b/doc/examples/included/toc-everything.html
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Everything</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Everything</h1>
+<hr />
+  <h2 class="toc">All Classes</h2>
+    <a target="mainFrame" href="inh_example.Animal-class.html"
+     >inh_example.Animal</a><br />    <a target="mainFrame" href="inh_example.Bird-class.html"
+     >inh_example.Bird</a><br />    <a target="mainFrame" href="inh_example.Bug-class.html"
+     >inh_example.Bug</a><br />    <a target="mainFrame" href="inh_example.Fish-class.html"
+     >inh_example.Fish</a><br />    <a target="mainFrame" href="inh_example.Human-class.html"
+     >inh_example.Human</a><br />    <a target="mainFrame" href="inh_example.Mammal-class.html"
+     >inh_example.Mammal</a><br />    <a target="mainFrame" href="inh_example.Primate-class.html"
+     >inh_example.Primate</a><br />    <a target="mainFrame" href="inh_example.Programmer-class.html"
+     >inh_example.Programmer</a><br /><hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/examples/included/toc-inh_example-module.html b/doc/examples/included/toc-inh_example-module.html
new file mode 100644
index 0000000..d902f98
--- /dev/null
+++ b/doc/examples/included/toc-inh_example-module.html
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>inh_example</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module inh_example</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="inh_example.Animal-class.html"
+     >Animal</a><br />    <a target="mainFrame" href="inh_example.Bird-class.html"
+     >Bird</a><br />    <a target="mainFrame" href="inh_example.Bug-class.html"
+     >Bug</a><br />    <a target="mainFrame" href="inh_example.Fish-class.html"
+     >Fish</a><br />    <a target="mainFrame" href="inh_example.Human-class.html"
+     >Human</a><br />    <a target="mainFrame" href="inh_example.Mammal-class.html"
+     >Mammal</a><br />    <a target="mainFrame" href="inh_example.Primate-class.html"
+     >Primate</a><br />    <a target="mainFrame" href="inh_example.Programmer-class.html"
+     >Programmer</a><br /><hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/examples/included/toc.html b/doc/examples/included/toc.html
new file mode 100644
index 0000000..f4fe997
--- /dev/null
+++ b/doc/examples/included/toc.html
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Table of Contents</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Table of Contents</h1>
+<hr />
+  <a target="moduleFrame" href="toc-everything.html">Everything</a>
+  <br />
+  <h2 class="toc">Modules</h2>
+    <a target="moduleFrame" href="toc-inh_example-module.html"
+     onclick="setFrame('toc-inh_example-module.html','inh_example-module.html');"     >inh_example</a><br /><hr />
+  <span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/examples/index.html b/doc/examples/index.html
new file mode 100644
index 0000000..c316111
--- /dev/null
+++ b/doc/examples/index.html
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
+          "DTD/xhtml1-frameset.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title> epydoc </title>
+</head>
+<frameset cols="20%,80%">
+  <frameset rows="30%,70%">
+    <frame src="toc.html" name="moduleListFrame"
+           id="moduleListFrame" />
+    <frame src="toc-everything.html" name="moduleFrame"
+           id="moduleFrame" />
+  </frameset>
+  <frame src="epytext_example-module.html" name="mainFrame" id="mainFrame" />
+</frameset>
+</html>
diff --git a/doc/examples/listed/class-tree.html b/doc/examples/listed/class-tree.html
new file mode 100644
index 0000000..01756b3
--- /dev/null
+++ b/doc/examples/listed/class-tree.html
@@ -0,0 +1,138 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Class Hierarchy</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="inh_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >   Trees   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%"> </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="class-tree.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<center><b>
+ [ <a href="module-tree.html">Module Hierarchy</a>
+ | <a href="class-tree.html">Class Hierarchy</a> ]
+</b></center><br />
+<h1 class="epydoc">Class Hierarchy</h1>
+<ul class="nomargin-top">
+    <li> <strong class="uidlink"><a href="inh_example.Animal-class.html">inh_example.Animal</a></strong>
+    <ul>
+    <li> <strong class="uidlink"><a href="inh_example.Bird-class.html">inh_example.Bird</a></strong>
+    </li>
+    <li> <strong class="uidlink"><a href="inh_example.Bug-class.html">inh_example.Bug</a></strong>
+    </li>
+    <li> <strong class="uidlink"><a href="inh_example.Fish-class.html">inh_example.Fish</a></strong>
+    </li>
+    <li> <strong class="uidlink"><a href="inh_example.Mammal-class.html">inh_example.Mammal</a></strong>
+    <ul>
+    <li> <strong class="uidlink"><a href="inh_example.Primate-class.html">inh_example.Primate</a></strong>
+    <ul>
+    <li> <strong class="uidlink"><a href="inh_example.Human-class.html">inh_example.Human</a></strong>
+    <ul>
+    <li> <strong class="uidlink"><a href="inh_example.Programmer-class.html">inh_example.Programmer</a></strong>
+    </li>
+    </ul>
+    </li>
+    </ul>
+    </li>
+    </ul>
+    </li>
+    </ul>
+    </li>
+</ul>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="inh_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >   Trees   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0.1 on Wed Jan 30 14:10:16 2008
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/examples/listed/crarr.png b/doc/examples/listed/crarr.png
new file mode 100644
index 0000000..26b43c5
Binary files /dev/null and b/doc/examples/listed/crarr.png differ
diff --git a/doc/examples/listed/epydoc.css b/doc/examples/listed/epydoc.css
new file mode 100644
index 0000000..86d4170
--- /dev/null
+++ b/doc/examples/listed/epydoc.css
@@ -0,0 +1,322 @@
+
+
+/* Epydoc CSS Stylesheet
+ *
+ * This stylesheet can be used to customize the appearance of epydoc's
+ * HTML output.
+ *
+ */
+
+/* Default Colors & Styles
+ *   - Set the default foreground & background color with 'body'; and 
+ *     link colors with 'a:link' and 'a:visited'.
+ *   - Use bold for decision list terms.
+ *   - The heading styles defined here are used for headings *within*
+ *     docstring descriptions.  All headings used by epydoc itself use
+ *     either class='epydoc' or class='toc' (CSS styles for both
+ *     defined below).
+ */
+body                        { background: #ffffff; color: #000000; }
+p                           { margin-top: 0.5em; margin-bottom: 0.5em; }
+a:link                      { color: #0000ff; }
+a:visited                   { color: #204080; }
+dt                          { font-weight: bold; }
+h1                          { font-size: +140%; font-style: italic;
+                              font-weight: bold; }
+h2                          { font-size: +125%; font-style: italic;
+                              font-weight: bold; }
+h3                          { font-size: +110%; font-style: italic;
+                              font-weight: normal; }
+code                        { font-size: 100%; }
+/* N.B.: class, not pseudoclass */
+a.link                      { font-family: monospace; }
+ 
+/* Page Header & Footer
+ *   - The standard page header consists of a navigation bar (with
+ *     pointers to standard pages such as 'home' and 'trees'); a
+ *     breadcrumbs list, which can be used to navigate to containing
+ *     classes or modules; options links, to show/hide private
+ *     variables and to show/hide frames; and a page title (using
+ *     <h1>).  The page title may be followed by a link to the
+ *     corresponding source code (using 'span.codelink').
+ *   - The footer consists of a navigation bar, a timestamp, and a
+ *     pointer to epydoc's homepage.
+ */ 
+h1.epydoc                   { margin: 0; font-size: +140%; font-weight: bold; }
+h2.epydoc                   { font-size: +130%; font-weight: bold; }
+h3.epydoc                   { font-size: +115%; font-weight: bold;
+                              margin-top: 0.2em; }
+td h3.epydoc                { font-size: +115%; font-weight: bold;
+                              margin-bottom: 0; }
+table.navbar                { background: #a0c0ff; color: #000000;
+                              border: 2px groove #c0d0d0; }
+table.navbar table          { color: #000000; }
+th.navbar-select            { background: #70b0ff;
+                              color: #000000; } 
+table.navbar a              { text-decoration: none; }  
+table.navbar a:link         { color: #0000ff; }
+table.navbar a:visited      { color: #204080; }
+span.breadcrumbs            { font-size: 85%; font-weight: bold; }
+span.options                { font-size: 70%; }
+span.codelink               { font-size: 85%; }
+td.footer                   { font-size: 85%; }
+
+/* Table Headers
+ *   - Each summary table and details section begins with a 'header'
+ *     row.  This row contains a section title (marked by
+ *     'span.table-header') as well as a show/hide private link
+ *     (marked by 'span.options', defined above).
+ *   - Summary tables that contain user-defined groups mark those
+ *     groups using 'group header' rows.
+ */
+td.table-header             { background: #70b0ff; color: #000000;
+                              border: 1px solid #608090; }
+td.table-header table       { color: #000000; }
+td.table-header table a:link      { color: #0000ff; }
+td.table-header table a:visited   { color: #204080; }
+span.table-header           { font-size: 120%; font-weight: bold; }
+th.group-header             { background: #c0e0f8; color: #000000;
+                              text-align: left; font-style: italic; 
+                              font-size: 115%; 
+                              border: 1px solid #608090; }
+
+/* Summary Tables (functions, variables, etc)
+ *   - Each object is described by a single row of the table with
+ *     two cells.  The left cell gives the object's type, and is
+ *     marked with 'code.summary-type'.  The right cell gives the
+ *     object's name and a summary description.
+ *   - CSS styles for the table's header and group headers are
+ *     defined above, under 'Table Headers'
+ */
+table.summary               { border-collapse: collapse;
+                              background: #e8f0f8; color: #000000;
+                              border: 1px solid #608090;
+                              margin-bottom: 0.5em; }
+td.summary                  { border: 1px solid #608090; }
+code.summary-type           { font-size: 85%; }
+table.summary a:link        { color: #0000ff; }
+table.summary a:visited     { color: #204080; }
+
+
+/* Details Tables (functions, variables, etc)
+ *   - Each object is described in its own div.
+ *   - A single-row summary table w/ table-header is used as
+ *     a header for each details section (CSS style for table-header
+ *     is defined above, under 'Table Headers').
+ */
+table.details               { border-collapse: collapse;
+                              background: #e8f0f8; color: #000000;
+                              border: 1px solid #608090;
+                              margin: .2em 0 0 0; }
+table.details table         { color: #000000; }
+table.details a:link        { color: #0000ff; }
+table.details a:visited     { color: #204080; }
+
+/* Fields */
+dl.fields                   { margin-left: 2em; margin-top: 1em;
+                              margin-bottom: 1em; }
+dl.fields dd ul             { margin-left: 0em; padding-left: 0em; }
+dl.fields dd ul li ul       { margin-left: 2em; padding-left: 0em; }
+div.fields                  { margin-left: 2em; }
+div.fields p                { margin-bottom: 0.5em; }
+
+/* Index tables (identifier index, term index, etc)
+ *   - link-index is used for indices containing lists of links
+ *     (namely, the identifier index & term index).
+ *   - index-where is used in link indices for the text indicating
+ *     the container/source for each link.
+ *   - metadata-index is used for indices containing metadata
+ *     extracted from fields (namely, the bug index & todo index).
+ */
+table.link-index            { border-collapse: collapse;
+                              background: #e8f0f8; color: #000000;
+                              border: 1px solid #608090; }
+td.link-index               { border-width: 0px; }
+table.link-index a:link     { color: #0000ff; }
+table.link-index a:visited  { color: #204080; }
+span.index-where            { font-size: 70%; }
+table.metadata-index        { border-collapse: collapse;
+                              background: #e8f0f8; color: #000000;
+                              border: 1px solid #608090; 
+                              margin: .2em 0 0 0; }
+td.metadata-index           { border-width: 1px; border-style: solid; }
+table.metadata-index a:link { color: #0000ff; }
+table.metadata-index a:visited  { color: #204080; }
+
+/* Function signatures
+ *   - sig* is used for the signature in the details section.
+ *   - .summary-sig* is used for the signature in the summary 
+ *     table, and when listing property accessor functions.
+ * */
+.sig-name                   { color: #006080; }
+.sig-arg                    { color: #008060; }
+.sig-default                { color: #602000; }
+.summary-sig                { font-family: monospace; }
+.summary-sig-name           { color: #006080; font-weight: bold; }
+table.summary a.summary-sig-name:link
+                            { color: #006080; font-weight: bold; }
+table.summary a.summary-sig-name:visited
+                            { color: #006080; font-weight: bold; }
+.summary-sig-arg            { color: #006040; }
+.summary-sig-default        { color: #501800; }
+
+/* Subclass list
+ */
+ul.subclass-list { display: inline; }
+ul.subclass-list li { display: inline; }
+
+/* To render variables, classes etc. like functions */
+table.summary .summary-name { color: #006080; font-weight: bold;
+                              font-family: monospace; }
+table.summary
+     a.summary-name:link    { color: #006080; font-weight: bold;
+                              font-family: monospace; }
+table.summary
+    a.summary-name:visited  { color: #006080; font-weight: bold;
+                              font-family: monospace; }
+
+/* Variable values
+ *   - In the 'variable details' sections, each varaible's value is
+ *     listed in a 'pre.variable' box.  The width of this box is
+ *     restricted to 80 chars; if the value's repr is longer than
+ *     this it will be wrapped, using a backslash marked with
+ *     class 'variable-linewrap'.  If the value's repr is longer
+ *     than 3 lines, the rest will be ellided; and an ellipsis
+ *     marker ('...' marked with 'variable-ellipsis') will be used.
+ *   - If the value is a string, its quote marks will be marked
+ *     with 'variable-quote'.
+ *   - If the variable is a regexp, it is syntax-highlighted using
+ *     the re* CSS classes.
+ */
+pre.variable                { padding: .5em; margin: 0;
+                              background: #dce4ec; color: #000000;
+                              border: 1px solid #708890; }
+.variable-linewrap          { color: #604000; font-weight: bold; }
+.variable-ellipsis          { color: #604000; font-weight: bold; }
+.variable-quote             { color: #604000; font-weight: bold; }
+.variable-group             { color: #008000; font-weight: bold; }
+.variable-op                { color: #604000; font-weight: bold; }
+.variable-string            { color: #006030; }
+.variable-unknown           { color: #a00000; font-weight: bold; }
+.re                         { color: #000000; }
+.re-char                    { color: #006030; }
+.re-op                      { color: #600000; }
+.re-group                   { color: #003060; }
+.re-ref                     { color: #404040; }
+
+/* Base tree
+ *   - Used by class pages to display the base class hierarchy.
+ */
+pre.base-tree               { font-size: 80%; margin: 0; }
+
+/* Frames-based table of contents headers
+ *   - Consists of two frames: one for selecting modules; and
+ *     the other listing the contents of the selected module.
+ *   - h1.toc is used for each frame's heading
+ *   - h2.toc is used for subheadings within each frame.
+ */
+h1.toc                      { text-align: center; font-size: 105%;
+                              margin: 0; font-weight: bold;
+                              padding: 0; }
+h2.toc                      { font-size: 100%; font-weight: bold; 
+                              margin: 0.5em 0 0 -0.3em; }
+
+/* Syntax Highlighting for Source Code
+ *   - doctest examples are displayed in a 'pre.py-doctest' block.
+ *     If the example is in a details table entry, then it will use
+ *     the colors specified by the 'table pre.py-doctest' line.
+ *   - Source code listings are displayed in a 'pre.py-src' block.
+ *     Each line is marked with 'span.py-line' (used to draw a line
+ *     down the left margin, separating the code from the line
+ *     numbers).  Line numbers are displayed with 'span.py-lineno'.
+ *     The expand/collapse block toggle button is displayed with
+ *     'a.py-toggle' (Note: the CSS style for 'a.py-toggle' should not
+ *     modify the font size of the text.)
+ *   - If a source code page is opened with an anchor, then the
+ *     corresponding code block will be highlighted.  The code
+ *     block's header is highlighted with 'py-highlight-hdr'; and
+ *     the code block's body is highlighted with 'py-highlight'.
+ *   - The remaining py-* classes are used to perform syntax
+ *     highlighting (py-string for string literals, py-name for names,
+ *     etc.)
+ */
+pre.py-doctest              { padding: .5em; margin: 1em;
+                              background: #e8f0f8; color: #000000;
+                              border: 1px solid #708890; }
+table pre.py-doctest        { background: #dce4ec;
+                              color: #000000; }
+pre.py-src                  { border: 2px solid #000000; 
+                              background: #f0f0f0; color: #000000; }
+.py-line                    { border-left: 2px solid #000000; 
+                              margin-left: .2em; padding-left: .4em; }
+.py-lineno                  { font-style: italic; font-size: 90%;
+                              padding-left: .5em; }
+a.py-toggle                 { text-decoration: none; }
+div.py-highlight-hdr        { border-top: 2px solid #000000;
+                              border-bottom: 2px solid #000000;
+                              background: #d8e8e8; }
+div.py-highlight            { border-bottom: 2px solid #000000;
+                              background: #d0e0e0; }
+.py-prompt                  { color: #005050; font-weight: bold;}
+.py-more                    { color: #005050; font-weight: bold;}
+.py-string                  { color: #006030; }
+.py-comment                 { color: #003060; }
+.py-keyword                 { color: #600000; }
+.py-output                  { color: #404040; }
+.py-name                    { color: #000050; }
+.py-name:link               { color: #000050 !important; }
+.py-name:visited            { color: #000050 !important; }
+.py-number                  { color: #005000; }
+.py-defname                 { color: #000060; font-weight: bold; }
+.py-def-name                { color: #000060; font-weight: bold; }
+.py-base-class              { color: #000060; }
+.py-param                   { color: #000060; }
+.py-docstring               { color: #006030; }
+.py-decorator               { color: #804020; }
+/* Use this if you don't want links to names underlined: */
+/*a.py-name                   { text-decoration: none; }*/
+
+/* Graphs & Diagrams
+ *   - These CSS styles are used for graphs & diagrams generated using
+ *     Graphviz dot.  'img.graph-without-title' is used for bare
+ *     diagrams (to remove the border created by making the image
+ *     clickable).
+ */
+img.graph-without-title     { border: none; }
+img.graph-with-title        { border: 1px solid #000000; }
+span.graph-title            { font-weight: bold; }
+span.graph-caption          { }
+
+/* General-purpose classes
+ *   - 'p.indent-wrapped-lines' defines a paragraph whose first line
+ *     is not indented, but whose subsequent lines are.
+ *   - The 'nomargin-top' class is used to remove the top margin (e.g.
+ *     from lists).  The 'nomargin' class is used to remove both the
+ *     top and bottom margin (but not the left or right margin --
+ *     for lists, that would cause the bullets to disappear.)
+ */
+p.indent-wrapped-lines      { padding: 0 0 0 7em; text-indent: -7em; 
+                              margin: 0; }
+.nomargin-top               { margin-top: 0; }
+.nomargin                   { margin-top: 0; margin-bottom: 0; }
+
+/* HTML Log */
+div.log-block               { padding: 0; margin: .5em 0 .5em 0;
+                              background: #e8f0f8; color: #000000;
+                              border: 1px solid #000000; }
+div.log-error               { padding: .1em .3em .1em .3em; margin: 4px;
+                              background: #ffb0b0; color: #000000;
+                              border: 1px solid #000000; }
+div.log-warning             { padding: .1em .3em .1em .3em; margin: 4px;
+                              background: #ffffb0; color: #000000;
+                              border: 1px solid #000000; }
+div.log-info               { padding: .1em .3em .1em .3em; margin: 4px;
+                              background: #b0ffb0; color: #000000;
+                              border: 1px solid #000000; }
+h2.log-hdr                  { background: #70b0ff; color: #000000;
+                              margin: 0; padding: 0em 0.5em 0em 0.5em;
+                              border-bottom: 1px solid #000000; font-size: 110%; }
+p.log                       { font-weight: bold; margin: .5em 0 .5em 0; }
+tr.opt-changed              { color: #000000; font-weight: bold; }
+tr.opt-default              { color: #606060; }
+pre.log                     { margin: 0; padding: 0; padding-left: 1em; }
diff --git a/doc/examples/listed/frames.html b/doc/examples/listed/frames.html
new file mode 100644
index 0000000..fa977a6
--- /dev/null
+++ b/doc/examples/listed/frames.html
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
+          "DTD/xhtml1-frameset.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title> epydoc </title>
+</head>
+<frameset cols="20%,80%">
+  <frameset rows="30%,70%">
+    <frame src="toc.html" name="moduleListFrame"
+           id="moduleListFrame" />
+    <frame src="toc-everything.html" name="moduleFrame"
+           id="moduleFrame" />
+  </frameset>
+  <frame src="inh_example-module.html" name="mainFrame" id="mainFrame" />
+</frameset>
+</html>
diff --git a/doc/examples/listed/help.html b/doc/examples/listed/help.html
new file mode 100644
index 0000000..77846f4
--- /dev/null
+++ b/doc/examples/listed/help.html
@@ -0,0 +1,278 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Help</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="inh_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >   Help   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%"> </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="help.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+
+<h1 class="epydoc"> API Documentation </h1>
+
+<p> This document contains the API (Application Programming Interface)
+documentation for epydoc.  Documentation for the Python
+objects defined by the project is divided into separate pages for each
+package, module, and class.  The API documentation also includes two
+pages containing information about the project as a whole: a trees
+page, and an index page.  </p>
+
+<h2> Object Documentation </h2>
+
+  <p>Each <strong>Package Documentation</strong> page contains: </p>
+  <ul>
+    <li> A description of the package. </li>
+    <li> A list of the modules and sub-packages contained by the
+    package.  </li>
+    <li> A summary of the classes defined by the package. </li>
+    <li> A summary of the functions defined by the package. </li>
+    <li> A summary of the variables defined by the package. </li>
+    <li> A detailed description of each function defined by the
+    package. </li>
+    <li> A detailed description of each variable defined by the
+    package. </li>
+  </ul>
+  
+  <p>Each <strong>Module Documentation</strong> page contains:</p>
+  <ul>
+    <li> A description of the module. </li>
+    <li> A summary of the classes defined by the module. </li>
+    <li> A summary of the functions defined by the module. </li>
+    <li> A summary of the variables defined by the module. </li>
+    <li> A detailed description of each function defined by the
+    module. </li>
+    <li> A detailed description of each variable defined by the
+    module. </li>
+  </ul>
+  
+  <p>Each <strong>Class Documentation</strong> page contains: </p>
+  <ul>
+    <li> A class inheritance diagram. </li>
+    <li> A list of known subclasses. </li>
+    <li> A description of the class. </li>
+    <li> A summary of the methods defined by the class. </li>
+    <li> A summary of the instance variables defined by the class. </li>
+    <li> A summary of the class (static) variables defined by the
+    class. </li> 
+    <li> A detailed description of each method defined by the
+    class. </li>
+    <li> A detailed description of each instance variable defined by the
+    class. </li> 
+    <li> A detailed description of each class (static) variable defined
+    by the class. </li> 
+  </ul>
+
+<h2> Project Documentation </h2>
+
+  <p> The <strong>Trees</strong> page contains the module and class hierarchies: </p>
+  <ul>
+    <li> The <em>module hierarchy</em> lists every package and module, with
+    modules grouped into packages.  At the top level, and within each
+    package, modules and sub-packages are listed alphabetically. </li>
+    <li> The <em>class hierarchy</em> lists every class, grouped by base
+    class.  If a class has more than one base class, then it will be
+    listed under each base class.  At the top level, and under each base
+    class, classes are listed alphabetically. </li>
+  </ul>
+  
+  <p> The <strong>Index</strong> page contains indices of terms and
+  identifiers: </p>
+  <ul>
+    <li> The <em>term index</em> lists every term indexed by any object's
+    documentation.  For each term, the index provides links to each
+    place where the term is indexed. </li>
+    <li> The <em>identifier index</em> lists the (short) name of every package,
+    module, class, method, function, variable, and parameter.  For each
+    identifier, the index provides a short description, and a link to
+    its documentation. </li>
+  </ul>
+
+<h2> The Table of Contents </h2>
+
+<p> The table of contents occupies the two frames on the left side of
+the window.  The upper-left frame displays the <em>project
+contents</em>, and the lower-left frame displays the <em>module
+contents</em>: </p>
+
+<table class="help summary" border="1" cellspacing="0" cellpadding="3">
+  <tr style="height: 30%">
+    <td align="center" style="font-size: small">
+       Project<br />Contents<hr />...</td>
+    <td align="center" style="font-size: small" rowspan="2" width="70%">
+      API<br />Documentation<br />Frame<br /><br /><br />
+    </td>
+  </tr>
+  <tr>
+    <td align="center" style="font-size: small">
+      Module<br />Contents<hr /> <br />...<br /> 
+    </td>
+  </tr>
+</table><br />
+
+<p> The <strong>project contents frame</strong> contains a list of all packages
+and modules that are defined by the project.  Clicking on an entry
+will display its contents in the module contents frame.  Clicking on a
+special entry, labeled "Everything," will display the contents of
+the entire project. </p>
+
+<p> The <strong>module contents frame</strong> contains a list of every
+submodule, class, type, exception, function, and variable defined by a
+module or package.  Clicking on an entry will display its
+documentation in the API documentation frame.  Clicking on the name of
+the module, at the top of the frame, will display the documentation
+for the module itself. </p>
+
+<p> The "<strong>frames</strong>" and "<strong>no frames</strong>" buttons below the top
+navigation bar can be used to control whether the table of contents is
+displayed or not. </p>
+
+<h2> The Navigation Bar </h2>
+
+<p> A navigation bar is located at the top and bottom of every page.
+It indicates what type of page you are currently viewing, and allows
+you to go to related pages.  The following table describes the labels
+on the navigation bar.  Note that not some labels (such as
+[Parent]) are not displayed on all pages. </p>
+
+<table class="summary" border="1" cellspacing="0" cellpadding="3" width="100%">
+<tr class="summary">
+  <th>Label</th>
+  <th>Highlighted when...</th>
+  <th>Links to...</th>
+</tr>
+  <tr><td valign="top"><strong>[Parent]</strong></td>
+      <td valign="top"><em>(never highlighted)</em></td>
+      <td valign="top"> the parent of the current package </td></tr>
+  <tr><td valign="top"><strong>[Package]</strong></td>
+      <td valign="top">viewing a package</td>
+      <td valign="top">the package containing the current object
+      </td></tr>
+  <tr><td valign="top"><strong>[Module]</strong></td>
+      <td valign="top">viewing a module</td>
+      <td valign="top">the module containing the current object
+      </td></tr> 
+  <tr><td valign="top"><strong>[Class]</strong></td>
+      <td valign="top">viewing a class </td>
+      <td valign="top">the class containing the current object</td></tr>
+  <tr><td valign="top"><strong>[Trees]</strong></td>
+      <td valign="top">viewing the trees page</td>
+      <td valign="top"> the trees page </td></tr>
+  <tr><td valign="top"><strong>[Index]</strong></td>
+      <td valign="top">viewing the index page</td>
+      <td valign="top"> the index page </td></tr>
+  <tr><td valign="top"><strong>[Help]</strong></td>
+      <td valign="top">viewing the help page</td>
+      <td valign="top"> the help page </td></tr>
+</table>
+
+<p> The "<strong>show private</strong>" and "<strong>hide private</strong>" buttons below
+the top navigation bar can be used to control whether documentation
+for private objects is displayed.  Private objects are usually defined
+as objects whose (short) names begin with a single underscore, but do
+not end with an underscore.  For example, "<code>_x</code>",
+"<code>__pprint</code>", and "<code>epydoc.epytext._tokenize</code>"
+are private objects; but "<code>re.sub</code>",
+"<code>__init__</code>", and "<code>type_</code>" are not.  However,
+if a module defines the "<code>__all__</code>" variable, then its
+contents are used to decide which objects are private. </p>
+
+<p> A timestamp below the bottom navigation bar indicates when each
+page was last updated. </p>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="inh_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >   Help   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0.1 on Wed Jan 30 14:10:16 2008
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/examples/listed/identifier-index.html b/doc/examples/listed/identifier-index.html
new file mode 100644
index 0000000..5b57215
--- /dev/null
+++ b/doc/examples/listed/identifier-index.html
@@ -0,0 +1,306 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Identifier Index</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="inh_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >   Indices   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%"> </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="identifier-index.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<table border="0" width="100%">
+<tr valign="bottom"><td>
+<h1 class="epydoc">Identifier Index</h1>
+</td><td>
+[
+ <a href="#A">A</a>
+ <a href="#B">B</a>
+ <a href="#C">C</a>
+  D
+ <a href="#E">E</a>
+ <a href="#F">F</a>
+ <a href="#G">G</a>
+ <a href="#H">H</a>
+ <a href="#I">I</a>
+  J
+  K
+  L
+ <a href="#M">M</a>
+  N
+  O
+ <a href="#P">P</a>
+  Q
+ <a href="#R">R</a>
+ <a href="#S">S</a>
+ <a href="#T">T</a>
+  U
+  V
+  W
+  X
+  Y
+  Z
+  _
+]
+</td></table>
+<table border="0" width="100%">
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="A">A</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="inh_example.Animal-class.html">Animal</a><br />
+<span class="index-where">(in <a href="inh_example-module.html">inh_example</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+<td width="33%" class="link-index"> </td>
+</tr>
+<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="B">B</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="inh_example.Bird-class.html">Bird</a><br />
+<span class="index-where">(in <a href="inh_example-module.html">inh_example</a>)</span></td>
+<td width="33%" class="link-index"><a href="inh_example.Bug-class.html">Bug</a><br />
+<span class="index-where">(in <a href="inh_example-module.html">inh_example</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+</tr>
+<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="C">C</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="inh_example.Primate-class.html#climb">climb()</a><br />
+<span class="index-where">(in <a href="inh_example.Primate-class.html">Primate</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+<td width="33%" class="link-index"> </td>
+</tr>
+<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="E">E</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="inh_example.Animal-class.html#eat">eat()</a><br />
+<span class="index-where">(in <a href="inh_example.Animal-class.html">Animal</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+<td width="33%" class="link-index"> </td>
+</tr>
+<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="F">F</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="inh_example.Fish-class.html">Fish</a><br />
+<span class="index-where">(in <a href="inh_example-module.html">inh_example</a>)</span></td>
+<td width="33%" class="link-index"><a href="inh_example.Bird-class.html#fly">fly()</a><br />
+<span class="index-where">(in <a href="inh_example.Bird-class.html">Bird</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+</tr>
+<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="G">G</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="inh_example.Primate-class.html#grab">grab()</a><br />
+<span class="index-where">(in <a href="inh_example.Primate-class.html">Primate</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+<td width="33%" class="link-index"> </td>
+</tr>
+<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="H">H</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="inh_example.Programmer-class.html#hack">hack()</a><br />
+<span class="index-where">(in <a href="inh_example.Programmer-class.html">Programmer</a>)</span></td>
+<td width="33%" class="link-index"><a href="inh_example.Bug-class.html#hide">hide()</a><br />
+<span class="index-where">(in <a href="inh_example.Bug-class.html">Bug</a>)</span></td>
+<td width="33%" class="link-index"><a href="inh_example.Human-class.html">Human</a><br />
+<span class="index-where">(in <a href="inh_example-module.html">inh_example</a>)</span></td>
+</tr>
+<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="I">I</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="inh_example.Bug-class.html#infest">infest()</a><br />
+<span class="index-where">(in <a href="inh_example.Bug-class.html">Bug</a>)</span></td>
+<td width="33%" class="link-index"><a href="inh_example-module.html">inh_example</a></td>
+<td width="33%" class="link-index"> </td>
+</tr>
+<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="M">M</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="inh_example.Mammal-class.html">Mammal</a><br />
+<span class="index-where">(in <a href="inh_example-module.html">inh_example</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+<td width="33%" class="link-index"> </td>
+</tr>
+<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="P">P</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="inh_example.Primate-class.html">Primate</a><br />
+<span class="index-where">(in <a href="inh_example-module.html">inh_example</a>)</span></td>
+<td width="33%" class="link-index"><a href="inh_example.Programmer-class.html">Programmer</a><br />
+<span class="index-where">(in <a href="inh_example-module.html">inh_example</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+</tr>
+<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="R">R</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="inh_example.Mammal-class.html#run">run()</a><br />
+<span class="index-where">(in <a href="inh_example.Mammal-class.html">Mammal</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+<td width="33%" class="link-index"> </td>
+</tr>
+<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="S">S</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="inh_example.Animal-class.html#sleep">sleep()</a><br />
+<span class="index-where">(in <a href="inh_example.Animal-class.html">Animal</a>)</span></td>
+<td width="33%" class="link-index"><a href="inh_example.Programmer-class.html#squish">squish()</a><br />
+<span class="index-where">(in <a href="inh_example.Programmer-class.html">Programmer</a>)</span></td>
+<td width="33%" class="link-index"><a href="inh_example.Fish-class.html#swim">swim()</a><br />
+<span class="index-where">(in <a href="inh_example.Fish-class.html">Fish</a>)</span></td>
+</tr>
+<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="T">T</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="inh_example.Human-class.html#talk">talk()</a><br />
+<span class="index-where">(in <a href="inh_example.Human-class.html">Human</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+<td width="33%" class="link-index"> </td>
+</tr>
+<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
+</table>
+</td></tr>
+</table>
+<br /><br /><!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="inh_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >   Indices   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0.1 on Wed Jan 30 14:10:16 2008
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/examples/listed/index.html b/doc/examples/listed/index.html
new file mode 100644
index 0000000..fa977a6
--- /dev/null
+++ b/doc/examples/listed/index.html
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
+          "DTD/xhtml1-frameset.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title> epydoc </title>
+</head>
+<frameset cols="20%,80%">
+  <frameset rows="30%,70%">
+    <frame src="toc.html" name="moduleListFrame"
+           id="moduleListFrame" />
+    <frame src="toc-everything.html" name="moduleFrame"
+           id="moduleFrame" />
+  </frameset>
+  <frame src="inh_example-module.html" name="mainFrame" id="mainFrame" />
+</frameset>
+</html>
diff --git a/doc/examples/listed/inh_example-module.html b/doc/examples/listed/inh_example-module.html
new file mode 100644
index 0000000..dd7719a
--- /dev/null
+++ b/doc/examples/listed/inh_example-module.html
@@ -0,0 +1,189 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>inh_example</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >   Home   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        Module inh_example
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="inh_example-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module inh_example</h1><p class="nomargin-top"><span class="codelink"><a href="inh_example-pysrc.html">source code</a></span></p>
+<p>Examples for the epytext manual.</p>
+
+<!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Classes</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Classes"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="inh_example.Animal-class.html" class="summary-name">Animal</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="inh_example.Bug-class.html" class="summary-name">Bug</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="inh_example.Bird-class.html" class="summary-name">Bird</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="inh_example.Fish-class.html" class="summary-name">Fish</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="inh_example.Mammal-class.html" class="summary-name">Mammal</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="inh_example.Primate-class.html" class="summary-name">Primate</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="inh_example.Human-class.html" class="summary-name">Human</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="inh_example.Programmer-class.html" class="summary-name">Programmer</a>
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >   Home   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0.1 on Wed Jan 30 14:10:16 2008
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/examples/listed/inh_example-pysrc.html b/doc/examples/listed/inh_example-pysrc.html
new file mode 100644
index 0000000..ff60cd3
--- /dev/null
+++ b/doc/examples/listed/inh_example-pysrc.html
@@ -0,0 +1,172 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>inh_example</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >   Home   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        Module inh_example
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="inh_example-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="inh_example-module.html">Module inh_example</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno"> 1</tt>  <tt class="py-line"><tt class="py-comment">#</tt> </tt>
+<a name="L2"></a><tt class="py-lineno"> 2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># inh_example.py</tt> </tt>
+<a name="L3"></a><tt class="py-lineno"> 3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L4"></a><tt class="py-lineno"> 4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Example code used by the epytext manual.</tt> </tt>
+<a name="L5"></a><tt class="py-lineno"> 5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L6"></a><tt class="py-lineno"> 6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># These classes are used to illustrate the different inheritance</tt> </tt>
+<a name="L7"></a><tt class="py-lineno"> 7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># styles. (grouped, listed, and included).</tt> </tt>
+<a name="L8"></a><tt class="py-lineno"> 8</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L9"></a><tt class="py-lineno"> 9</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-docstring">"""</tt> </tt>
+<a name="L10"></a><tt class="py-lineno">10</tt>  <tt class="py-line"><tt class="py-docstring">Examples for the epytext manual.</tt> </tt>
+<a name="L11"></a><tt class="py-lineno">11</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L12"></a><tt class="py-lineno">12</tt>  <tt class="py-line"><tt class="py-name">__docformat__</tt><tt class="py-op">=</tt><tt class="py-string">'epytext'</tt> </tt>
+<a name="L13"></a><tt class="py-lineno">13</tt>  <tt class="py-line"> </tt>
+<a name="Animal"></a><div id="Animal-def"><a name="L14"></a><tt class="py-lineno">14</tt> <a class="py-toggle" href="#" id="Animal-toggle" onclick="return toggle('Animal');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="inh_example.Animal-class.html">Animal</a><tt class="py-op">:</tt> </tt>
+</div><div id="Animal-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="Animal-expanded"><a name="Animal.eat"></a><div id="Animal.eat-def"><a name="L15"></a><tt class="py-lineno">15</tt> <a class="py-toggle" href="#" id="Animal.eat-toggle" onclick="return toggle('Animal.eat');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="inh_example.Animal-class.html#eat">eat</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt cl [...]
+</div><a name="Animal.sleep"></a><div id="Animal.sleep-def"><a name="L16"></a><tt class="py-lineno">16</tt> <a class="py-toggle" href="#" id="Animal.sleep-toggle" onclick="return toggle('Animal.sleep');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="inh_example.Animal-class.html#sleep">sleep</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">time</tt><tt class="py-op">)</tt><tt class="py-op">: [...]
+</div></div><a name="L17"></a><tt class="py-lineno">17</tt>  <tt class="py-line"> </tt>
+<a name="Bug"></a><div id="Bug-def"><a name="L18"></a><tt class="py-lineno">18</tt> <a class="py-toggle" href="#" id="Bug-toggle" onclick="return toggle('Bug');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="inh_example.Bug-class.html">Bug</a><tt class="py-op">(</tt><tt class="py-base-class">Animal</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Bug-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="Bug-expanded"><a name="Bug.infest"></a><div id="Bug.infest-def"><a name="L19"></a><tt class="py-lineno">19</tt> <a class="py-toggle" href="#" id="Bug.infest-toggle" onclick="return toggle('Bug.infest');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="inh_example.Bug-class.html#infest">infest</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class [...]
+</div><a name="Bug.hide"></a><div id="Bug.hide-def"><a name="L20"></a><tt class="py-lineno">20</tt> <a class="py-toggle" href="#" id="Bug.hide-toggle" onclick="return toggle('Bug.hide');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="inh_example.Bug-class.html#hide">hide</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Bug.hide-collapsed" style="display:none;" pad="++" indent="++++++++"></div><div id="Bug.hide-expanded"><a name="L21"></a><tt class="py-lineno">21</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L22"></a><tt class="py-lineno">22</tt>  <tt class="py-line"><tt class="py-docstring">        Temporarily stop breaking a program, in order to evade</tt> </tt>
+<a name="L23"></a><tt class="py-lineno">23</tt>  <tt class="py-line"><tt class="py-docstring">        capture.</tt> </tt>
+<a name="L24"></a><tt class="py-lineno">24</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+</div></div><a name="Bird"></a><div id="Bird-def"><a name="L25"></a><tt class="py-lineno">25</tt> <a class="py-toggle" href="#" id="Bird-toggle" onclick="return toggle('Bird');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="inh_example.Bird-class.html">Bird</a><tt class="py-op">(</tt><tt class="py-base-class">Animal</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Bird-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="Bird-expanded"><a name="Bird.fly"></a><div id="Bird.fly-def"><a name="L26"></a><tt class="py-lineno">26</tt> <a class="py-toggle" href="#" id="Bird.fly-toggle" onclick="return toggle('Bird.fly');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="inh_example.Bird-class.html#fly">fly</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,< [...]
+</div></div><a name="L27"></a><tt class="py-lineno">27</tt>  <tt class="py-line"> </tt>
+<a name="Fish"></a><div id="Fish-def"><a name="L28"></a><tt class="py-lineno">28</tt> <a class="py-toggle" href="#" id="Fish-toggle" onclick="return toggle('Fish');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="inh_example.Fish-class.html">Fish</a><tt class="py-op">(</tt><tt class="py-base-class">Animal</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Fish-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="Fish-expanded"><a name="Fish.swim"></a><div id="Fish.swim-def"><a name="L29"></a><tt class="py-lineno">29</tt> <a class="py-toggle" href="#" id="Fish.swim-toggle" onclick="return toggle('Fish.swim');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="inh_example.Fish-class.html#swim">swim</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py- [...]
+</div></div><a name="L30"></a><tt class="py-lineno">30</tt>  <tt class="py-line">     </tt>
+<a name="Mammal"></a><div id="Mammal-def"><a name="L31"></a><tt class="py-lineno">31</tt> <a class="py-toggle" href="#" id="Mammal-toggle" onclick="return toggle('Mammal');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="inh_example.Mammal-class.html">Mammal</a><tt class="py-op">(</tt><tt class="py-base-class">Animal</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Mammal-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="Mammal-expanded"><a name="Mammal.run"></a><div id="Mammal.run-def"><a name="L32"></a><tt class="py-lineno">32</tt> <a class="py-toggle" href="#" id="Mammal.run-toggle" onclick="return toggle('Mammal.run');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="inh_example.Mammal-class.html#run">run</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt cl [...]
+</div></div><a name="L33"></a><tt class="py-lineno">33</tt>  <tt class="py-line"> </tt>
+<a name="Primate"></a><div id="Primate-def"><a name="L34"></a><tt class="py-lineno">34</tt> <a class="py-toggle" href="#" id="Primate-toggle" onclick="return toggle('Primate');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="inh_example.Primate-class.html">Primate</a><tt class="py-op">(</tt><tt class="py-base-class">Mammal</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Primate-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="Primate-expanded"><a name="Primate.climb"></a><div id="Primate.climb-def"><a name="L35"></a><tt class="py-lineno">35</tt> <a class="py-toggle" href="#" id="Primate.climb-toggle" onclick="return toggle('Primate.climb');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="inh_example.Primate-class.html#climb">climb</a><tt class="py-op">(</tt><tt class="py-par [...]
+</div><a name="Primate.grab"></a><div id="Primate.grab-def"><a name="L36"></a><tt class="py-lineno">36</tt> <a class="py-toggle" href="#" id="Primate.grab-toggle" onclick="return toggle('Primate.grab');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="inh_example.Primate-class.html#grab">grab</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">object</tt><tt class="py-op">)</tt><tt class="py-op"> [...]
+</div></div><a name="L37"></a><tt class="py-lineno">37</tt>  <tt class="py-line"> </tt>
+<a name="Human"></a><div id="Human-def"><a name="L38"></a><tt class="py-lineno">38</tt> <a class="py-toggle" href="#" id="Human-toggle" onclick="return toggle('Human');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="inh_example.Human-class.html">Human</a><tt class="py-op">(</tt><tt class="py-base-class">Primate</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Human-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="Human-expanded"><a name="Human.talk"></a><div id="Human.talk-def"><a name="L39"></a><tt class="py-lineno">39</tt> <a class="py-toggle" href="#" id="Human.talk-toggle" onclick="return toggle('Human.talk');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="inh_example.Human-class.html#talk">talk</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt cla [...]
+</div><div id="Human.talk-collapsed" style="display:none;" pad="++" indent="++++++++"></div><div id="Human.talk-expanded"><a name="L40"></a><tt class="py-lineno">40</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L41"></a><tt class="py-lineno">41</tt>  <tt class="py-line"><tt class="py-docstring">        Talk to the given animal.  Depending on what kind of creature</tt> </tt>
+<a name="L42"></a><tt class="py-lineno">42</tt>  <tt class="py-line"><tt class="py-docstring">        C{animal} is, it may or may not be responsive.</tt> </tt>
+<a name="L43"></a><tt class="py-lineno">43</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+</div></div><a name="L44"></a><tt class="py-lineno">44</tt>  <tt class="py-line"> </tt>
+<a name="Programmer"></a><div id="Programmer-def"><a name="L45"></a><tt class="py-lineno">45</tt> <a class="py-toggle" href="#" id="Programmer-toggle" onclick="return toggle('Programmer');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="inh_example.Programmer-class.html">Programmer</a><tt class="py-op">(</tt><tt class="py-base-class">Human</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Programmer-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="Programmer-expanded"><a name="Programmer.hack"></a><div id="Programmer.hack-def"><a name="L46"></a><tt class="py-lineno">46</tt> <a class="py-toggle" href="#" id="Programmer.hack-toggle" onclick="return toggle('Programmer.hack');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="inh_example.Programmer-class.html#hack">hack</a><tt class="py-op">(</tt><t [...]
+</div><a name="Programmer.squish"></a><div id="Programmer.squish-def"><a name="L47"></a><tt class="py-lineno">47</tt> <a class="py-toggle" href="#" id="Programmer.squish-toggle" onclick="return toggle('Programmer.squish');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="inh_example.Programmer-class.html#squish">squish</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">bug</tt><tt class="py-op"> [...]
+</div><div id="Programmer.squish-collapsed" style="display:none;" pad="++" indent="++++++++"></div><div id="Programmer.squish-expanded"><a name="L48"></a><tt class="py-lineno">48</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt>
+<a name="L49"></a><tt class="py-lineno">49</tt>  <tt class="py-line"><tt class="py-docstring">        Remove the given bug from the given program.</tt> </tt>
+<a name="L50"></a><tt class="py-lineno">50</tt>  <tt class="py-line"><tt class="py-docstring">        @type bug: L{Bug}</tt> </tt>
+<a name="L51"></a><tt class="py-lineno">51</tt>  <tt class="py-line"><tt class="py-docstring">        @param bug: The bug that should be removed from C{code}.</tt> </tt>
+<a name="L52"></a><tt class="py-lineno">52</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+</div></div><a name="L53"></a><tt class="py-lineno">53</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >   Home   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0.1 on Wed Jan 30 14:10:16 2008
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/examples/listed/inh_example.Animal-class.html b/doc/examples/listed/inh_example.Animal-class.html
new file mode 100644
index 0000000..a6dc2fc
--- /dev/null
+++ b/doc/examples/listed/inh_example.Animal-class.html
@@ -0,0 +1,175 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>inh_example.Animal</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="inh_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="inh_example-module.html">Module inh_example</a> ::
+        Class Animal
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="inh_example.Animal-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Animal</h1><p class="nomargin-top"><span class="codelink"><a href="inh_example-pysrc.html#Animal">source code</a></span></p>
+<dl><dt>Known Subclasses:</dt>
+<dd>
+      <ul class="subclass-list">
+<li><a href="inh_example.Bird-class.html">Bird</a></li><li>, <a href="inh_example.Bug-class.html">Bug</a></li><li>, <a href="inh_example.Fish-class.html">Fish</a></li><li>, <a href="inh_example.Mammal-class.html">Mammal</a></li>  </ul>
+</dd></dl>
+
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="eat"></a><span class="summary-sig-name">eat</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">food</span>)</span><br />
+      Consume the given food object.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="inh_example-pysrc.html#Animal.eat">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="sleep"></a><span class="summary-sig-name">sleep</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">time</span>)</span><br />
+      Sleep for the given period of time.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="inh_example-pysrc.html#Animal.sleep">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="inh_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0.1 on Wed Jan 30 14:10:16 2008
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/examples/listed/inh_example.Bird-class.html b/doc/examples/listed/inh_example.Bird-class.html
new file mode 100644
index 0000000..831e4ac
--- /dev/null
+++ b/doc/examples/listed/inh_example.Bird-class.html
@@ -0,0 +1,165 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>inh_example.Bird</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="inh_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="inh_example-module.html">Module inh_example</a> ::
+        Class Bird
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="inh_example.Bird-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Bird</h1><p class="nomargin-top"><span class="codelink"><a href="inh_example-pysrc.html#Bird">source code</a></span></p>
+<pre class="base-tree">
+<a href="inh_example.Animal-class.html">Animal</a> --+
+         |
+        <strong class="uidshort">Bird</strong>
+</pre>
+
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="fly"></a><span class="summary-sig-name">fly</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">dest</span>)</span><br />
+      Fly to the given destination.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="inh_example-pysrc.html#Bird.fly">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="inh_example.Animal-class.html">Animal</a></code></b>:
+      <code><a href="inh_example.Animal-class.html#eat">eat</a></code>,
+      <code><a href="inh_example.Animal-class.html#sleep">sleep</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="inh_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0.1 on Wed Jan 30 14:10:16 2008
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/examples/listed/inh_example.Bug-class.html b/doc/examples/listed/inh_example.Bug-class.html
new file mode 100644
index 0000000..a08fa91
--- /dev/null
+++ b/doc/examples/listed/inh_example.Bug-class.html
@@ -0,0 +1,182 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>inh_example.Bug</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="inh_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="inh_example-module.html">Module inh_example</a> ::
+        Class Bug
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="inh_example.Bug-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Bug</h1><p class="nomargin-top"><span class="codelink"><a href="inh_example-pysrc.html#Bug">source code</a></span></p>
+<pre class="base-tree">
+<a href="inh_example.Animal-class.html">Animal</a> --+
+         |
+        <strong class="uidshort">Bug</strong>
+</pre>
+
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="infest"></a><span class="summary-sig-name">infest</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">code</span>)</span><br />
+      Add new bugs to the given program.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="inh_example-pysrc.html#Bug.infest">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="hide"></a><span class="summary-sig-name">hide</span>(<span class="summary-sig-arg">self</span>)</span><br />
+      Temporarily stop breaking a program, in order to evade capture.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="inh_example-pysrc.html#Bug.hide">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="inh_example.Animal-class.html">Animal</a></code></b>:
+      <code><a href="inh_example.Animal-class.html#eat">eat</a></code>,
+      <code><a href="inh_example.Animal-class.html#sleep">sleep</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="inh_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0.1 on Wed Jan 30 14:10:16 2008
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/examples/listed/inh_example.Fish-class.html b/doc/examples/listed/inh_example.Fish-class.html
new file mode 100644
index 0000000..76fc883
--- /dev/null
+++ b/doc/examples/listed/inh_example.Fish-class.html
@@ -0,0 +1,165 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>inh_example.Fish</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="inh_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="inh_example-module.html">Module inh_example</a> ::
+        Class Fish
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="inh_example.Fish-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Fish</h1><p class="nomargin-top"><span class="codelink"><a href="inh_example-pysrc.html#Fish">source code</a></span></p>
+<pre class="base-tree">
+<a href="inh_example.Animal-class.html">Animal</a> --+
+         |
+        <strong class="uidshort">Fish</strong>
+</pre>
+
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="swim"></a><span class="summary-sig-name">swim</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">dest</span>)</span><br />
+      Swim to the given destination.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="inh_example-pysrc.html#Fish.swim">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="inh_example.Animal-class.html">Animal</a></code></b>:
+      <code><a href="inh_example.Animal-class.html#eat">eat</a></code>,
+      <code><a href="inh_example.Animal-class.html#sleep">sleep</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="inh_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0.1 on Wed Jan 30 14:10:16 2008
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/examples/listed/inh_example.Human-class.html b/doc/examples/listed/inh_example.Human-class.html
new file mode 100644
index 0000000..9c4500e
--- /dev/null
+++ b/doc/examples/listed/inh_example.Human-class.html
@@ -0,0 +1,222 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>inh_example.Human</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="inh_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="inh_example-module.html">Module inh_example</a> ::
+        Class Human
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="inh_example.Human-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Human</h1><p class="nomargin-top"><span class="codelink"><a href="inh_example-pysrc.html#Human">source code</a></span></p>
+<pre class="base-tree">
+<a href="inh_example.Animal-class.html">Animal</a> --+        
+         |        
+    <a href="inh_example.Mammal-class.html">Mammal</a> --+    
+             |    
+       <a href="inh_example.Primate-class.html">Primate</a> --+
+                 |
+                <strong class="uidshort">Human</strong>
+</pre>
+
+<dl><dt>Known Subclasses:</dt>
+<dd>
+      <ul class="subclass-list">
+<li><a href="inh_example.Programmer-class.html">Programmer</a></li>  </ul>
+</dd></dl>
+
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="inh_example.Human-class.html#talk" class="summary-sig-name">talk</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">animal</span>)</span><br />
+      Talk to the given animal.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="inh_example-pysrc.html#Human.talk">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="inh_example.Primate-class.html">Primate</a></code></b>:
+      <code><a href="inh_example.Primate-class.html#climb">climb</a></code>,
+      <code><a href="inh_example.Primate-class.html#grab">grab</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="inh_example.Mammal-class.html">Mammal</a></code></b>:
+      <code><a href="inh_example.Mammal-class.html#run">run</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="inh_example.Animal-class.html">Animal</a></code></b>:
+      <code><a href="inh_example.Animal-class.html#eat">eat</a></code>,
+      <code><a href="inh_example.Animal-class.html#sleep">sleep</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Method Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-MethodDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="talk"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">talk</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">animal</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="inh_example-pysrc.html#Human.talk">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Talk to the given animal.  Depending on what kind of creature 
+  <code>animal</code> is, it may or may not be responsive.</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="inh_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0.1 on Wed Jan 30 14:10:16 2008
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/examples/listed/inh_example.Mammal-class.html b/doc/examples/listed/inh_example.Mammal-class.html
new file mode 100644
index 0000000..b0c0966
--- /dev/null
+++ b/doc/examples/listed/inh_example.Mammal-class.html
@@ -0,0 +1,171 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>inh_example.Mammal</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="inh_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="inh_example-module.html">Module inh_example</a> ::
+        Class Mammal
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="inh_example.Mammal-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Mammal</h1><p class="nomargin-top"><span class="codelink"><a href="inh_example-pysrc.html#Mammal">source code</a></span></p>
+<pre class="base-tree">
+<a href="inh_example.Animal-class.html">Animal</a> --+
+         |
+        <strong class="uidshort">Mammal</strong>
+</pre>
+
+<dl><dt>Known Subclasses:</dt>
+<dd>
+      <ul class="subclass-list">
+<li><a href="inh_example.Primate-class.html">Primate</a></li>  </ul>
+</dd></dl>
+
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="run"></a><span class="summary-sig-name">run</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">dest</span>)</span><br />
+      Run to the given destination.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="inh_example-pysrc.html#Mammal.run">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="inh_example.Animal-class.html">Animal</a></code></b>:
+      <code><a href="inh_example.Animal-class.html#eat">eat</a></code>,
+      <code><a href="inh_example.Animal-class.html#sleep">sleep</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="inh_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0.1 on Wed Jan 30 14:10:16 2008
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/examples/listed/inh_example.Primate-class.html b/doc/examples/listed/inh_example.Primate-class.html
new file mode 100644
index 0000000..7c60b01
--- /dev/null
+++ b/doc/examples/listed/inh_example.Primate-class.html
@@ -0,0 +1,194 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>inh_example.Primate</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="inh_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="inh_example-module.html">Module inh_example</a> ::
+        Class Primate
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="inh_example.Primate-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Primate</h1><p class="nomargin-top"><span class="codelink"><a href="inh_example-pysrc.html#Primate">source code</a></span></p>
+<pre class="base-tree">
+<a href="inh_example.Animal-class.html">Animal</a> --+    
+         |    
+    <a href="inh_example.Mammal-class.html">Mammal</a> --+
+             |
+            <strong class="uidshort">Primate</strong>
+</pre>
+
+<dl><dt>Known Subclasses:</dt>
+<dd>
+      <ul class="subclass-list">
+<li><a href="inh_example.Human-class.html">Human</a></li>  </ul>
+</dd></dl>
+
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="climb"></a><span class="summary-sig-name">climb</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">tree</span>)</span><br />
+      Climb up the given tree.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="inh_example-pysrc.html#Primate.climb">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="grab"></a><span class="summary-sig-name">grab</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">object</span>)</span><br />
+      Grab hold of the given object.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="inh_example-pysrc.html#Primate.grab">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="inh_example.Mammal-class.html">Mammal</a></code></b>:
+      <code><a href="inh_example.Mammal-class.html#run">run</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="inh_example.Animal-class.html">Animal</a></code></b>:
+      <code><a href="inh_example.Animal-class.html#eat">eat</a></code>,
+      <code><a href="inh_example.Animal-class.html#sleep">sleep</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="inh_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0.1 on Wed Jan 30 14:10:16 2008
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/examples/listed/inh_example.Programmer-class.html b/doc/examples/listed/inh_example.Programmer-class.html
new file mode 100644
index 0000000..ad5c9b8
--- /dev/null
+++ b/doc/examples/listed/inh_example.Programmer-class.html
@@ -0,0 +1,244 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>inh_example.Programmer</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="inh_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="inh_example-module.html">Module inh_example</a> ::
+        Class Programmer
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="inh_example.Programmer-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Programmer</h1><p class="nomargin-top"><span class="codelink"><a href="inh_example-pysrc.html#Programmer">source code</a></span></p>
+<pre class="base-tree">
+<a href="inh_example.Animal-class.html">Animal</a> --+            
+         |            
+    <a href="inh_example.Mammal-class.html">Mammal</a> --+        
+             |        
+       <a href="inh_example.Primate-class.html">Primate</a> --+    
+                 |    
+             <a href="inh_example.Human-class.html">Human</a> --+
+                     |
+                    <strong class="uidshort">Programmer</strong>
+</pre>
+
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="hack"></a><span class="summary-sig-name">hack</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">code</span>)</span><br />
+      Improve the given program.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="inh_example-pysrc.html#Programmer.hack">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="inh_example.Programmer-class.html#squish" class="summary-sig-name">squish</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">bug</span>,
+        <span class="summary-sig-arg">code</span>)</span><br />
+      Remove the given bug from the given program.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="inh_example-pysrc.html#Programmer.squish">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="inh_example.Human-class.html">Human</a></code></b>:
+      <code><a href="inh_example.Human-class.html#talk">talk</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="inh_example.Primate-class.html">Primate</a></code></b>:
+      <code><a href="inh_example.Primate-class.html#climb">climb</a></code>,
+      <code><a href="inh_example.Primate-class.html#grab">grab</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="inh_example.Mammal-class.html">Mammal</a></code></b>:
+      <code><a href="inh_example.Mammal-class.html#run">run</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="inh_example.Animal-class.html">Animal</a></code></b>:
+      <code><a href="inh_example.Animal-class.html#eat">eat</a></code>,
+      <code><a href="inh_example.Animal-class.html#sleep">sleep</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Method Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-MethodDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="squish"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">squish</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">bug</span>,
+        <span class="sig-arg">code</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="inh_example-pysrc.html#Programmer.squish">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <p>Remove the given bug from the given program.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>bug</code></strong> (<a href="inh_example.Bug-class.html" class="link">Bug</a>) - The bug that should be removed from <code>code</code>.</li>
+    </ul></dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="inh_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0.1 on Wed Jan 30 14:10:16 2008
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/examples/listed/module-tree.html b/doc/examples/listed/module-tree.html
new file mode 100644
index 0000000..101f73c
--- /dev/null
+++ b/doc/examples/listed/module-tree.html
@@ -0,0 +1,115 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Module Hierarchy</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="inh_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >   Trees   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%"> </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="module-tree.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<center><b>
+ [ <a href="module-tree.html">Module Hierarchy</a>
+ | <a href="class-tree.html">Class Hierarchy</a> ]
+</b></center><br />
+<h1 class="epydoc">Module Hierarchy</h1>
+<ul class="nomargin-top">
+    <li> <strong class="uidlink"><a href="inh_example-module.html">inh_example</a></strong>: <em class="summary">Examples for the epytext manual.</em>    </li>
+</ul>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="inh_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >   Trees   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0.1 on Wed Jan 30 14:10:16 2008
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/examples/listed/redirect.html b/doc/examples/listed/redirect.html
new file mode 100644
index 0000000..9303a53
--- /dev/null
+++ b/doc/examples/listed/redirect.html
@@ -0,0 +1,38 @@
+<html><head><title>Epydoc Redirect Page</title>
+<meta http-equiv="cache-control" content="no-cache" />
+<meta http-equiv="expires" content="0" />
+<meta http-equiv="pragma" content="no-cache" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+<body>
+<script type="text/javascript">
+<!--
+var pages = ["inh_example.Programmer-c", "inh_example.Primate-c", "inh_example.Animal-c", "inh_example.Mammal-c", "inh_example.Human-c", "inh_example.Bird-c", "inh_example.Fish-c", "inh_example.Bug-c", "inh_example-m"];
+var dottedName = get_anchor();
+if (dottedName) {
+    var target = redirect_url(dottedName);
+    if (target) window.location.replace(target);
+}
+// -->
+</script>
+
+<h3>Epydoc Auto-redirect page</h3>
+
+<p>When javascript is enabled, this page will redirect URLs of
+the form <tt>redirect.html#<i>dotted.name</i></tt> to the
+documentation for the object with the given fully-qualified
+dotted name.</p>
+<p><a id="message">   </a></p>
+
+<script type="text/javascript">
+<!--
+if (dottedName) {
+    var msg = document.getElementById("message");
+    msg.innerHTML = "No documentation found for <tt>"+
+                    dottedName+"</tt>";
+}
+// -->
+</script>
+
+</body>
+</html>
diff --git a/doc/examples/listed/toc-everything.html b/doc/examples/listed/toc-everything.html
new file mode 100644
index 0000000..dcd1ee2
--- /dev/null
+++ b/doc/examples/listed/toc-everything.html
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Everything</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Everything</h1>
+<hr />
+  <h2 class="toc">All Classes</h2>
+    <a target="mainFrame" href="inh_example.Animal-class.html"
+     >inh_example.Animal</a><br />    <a target="mainFrame" href="inh_example.Bird-class.html"
+     >inh_example.Bird</a><br />    <a target="mainFrame" href="inh_example.Bug-class.html"
+     >inh_example.Bug</a><br />    <a target="mainFrame" href="inh_example.Fish-class.html"
+     >inh_example.Fish</a><br />    <a target="mainFrame" href="inh_example.Human-class.html"
+     >inh_example.Human</a><br />    <a target="mainFrame" href="inh_example.Mammal-class.html"
+     >inh_example.Mammal</a><br />    <a target="mainFrame" href="inh_example.Primate-class.html"
+     >inh_example.Primate</a><br />    <a target="mainFrame" href="inh_example.Programmer-class.html"
+     >inh_example.Programmer</a><br /><hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/examples/listed/toc-inh_example-module.html b/doc/examples/listed/toc-inh_example-module.html
new file mode 100644
index 0000000..d902f98
--- /dev/null
+++ b/doc/examples/listed/toc-inh_example-module.html
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>inh_example</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module inh_example</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="inh_example.Animal-class.html"
+     >Animal</a><br />    <a target="mainFrame" href="inh_example.Bird-class.html"
+     >Bird</a><br />    <a target="mainFrame" href="inh_example.Bug-class.html"
+     >Bug</a><br />    <a target="mainFrame" href="inh_example.Fish-class.html"
+     >Fish</a><br />    <a target="mainFrame" href="inh_example.Human-class.html"
+     >Human</a><br />    <a target="mainFrame" href="inh_example.Mammal-class.html"
+     >Mammal</a><br />    <a target="mainFrame" href="inh_example.Primate-class.html"
+     >Primate</a><br />    <a target="mainFrame" href="inh_example.Programmer-class.html"
+     >Programmer</a><br /><hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/examples/listed/toc.html b/doc/examples/listed/toc.html
new file mode 100644
index 0000000..f4fe997
--- /dev/null
+++ b/doc/examples/listed/toc.html
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Table of Contents</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Table of Contents</h1>
+<hr />
+  <a target="moduleFrame" href="toc-everything.html">Everything</a>
+  <br />
+  <h2 class="toc">Modules</h2>
+    <a target="moduleFrame" href="toc-inh_example-module.html"
+     onclick="setFrame('toc-inh_example-module.html','inh_example-module.html');"     >inh_example</a><br /><hr />
+  <span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/examples/module-tree.html b/doc/examples/module-tree.html
new file mode 100644
index 0000000..ebd1516
--- /dev/null
+++ b/doc/examples/module-tree.html
@@ -0,0 +1,116 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Module Hierarchy</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epytext_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >   Trees   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%"> </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="module-tree.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<center><b>
+ [ <a href="module-tree.html">Module Hierarchy</a>
+ | <a href="class-tree.html">Class Hierarchy</a> ]
+</b></center><br />
+<h1 class="epydoc">Module Hierarchy</h1>
+<ul class="nomargin-top">
+    <li> <strong class="uidlink"><a href="epytext_example-module.html">epytext_example</a></strong>: <em class="summary">Examples for the epytext manual.</em>    </li>
+    <li> <strong class="uidlink"><a href="sre-module.html">sre</a></strong>: <em class="summary">Support for regular expressions (RE).</em>    </li>
+</ul>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epytext_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >   Trees   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0.1 on Wed Jan 30 14:10:06 2008
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/examples/redirect.html b/doc/examples/redirect.html
new file mode 100644
index 0000000..85a7fa4
--- /dev/null
+++ b/doc/examples/redirect.html
@@ -0,0 +1,38 @@
+<html><head><title>Epydoc Redirect Page</title>
+<meta http-equiv="cache-control" content="no-cache" />
+<meta http-equiv="expires" content="0" />
+<meta http-equiv="pragma" content="no-cache" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+<body>
+<script type="text/javascript">
+<!--
+var pages = ["sre_constants.error-c", "epytext_example-m", "sre.Scanner-c", "sre-m"];
+var dottedName = get_anchor();
+if (dottedName) {
+    var target = redirect_url(dottedName);
+    if (target) window.location.replace(target);
+}
+// -->
+</script>
+
+<h3>Epydoc Auto-redirect page</h3>
+
+<p>When javascript is enabled, this page will redirect URLs of
+the form <tt>redirect.html#<i>dotted.name</i></tt> to the
+documentation for the object with the given fully-qualified
+dotted name.</p>
+<p><a id="message">   </a></p>
+
+<script type="text/javascript">
+<!--
+if (dottedName) {
+    var msg = document.getElementById("message");
+    msg.innerHTML = "No documentation found for <tt>"+
+                    dottedName+"</tt>";
+}
+// -->
+</script>
+
+</body>
+</html>
diff --git a/doc/examples/sre-module.html b/doc/examples/sre-module.html
new file mode 100644
index 0000000..0a2fbbf
--- /dev/null
+++ b/doc/examples/sre-module.html
@@ -0,0 +1,908 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>sre</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epytext_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        Module sre
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="sre-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module sre</h1><p class="nomargin-top"><span class="codelink"><a href="sre-pysrc.html">source code</a></span></p>
+<pre class="literalblock">
+Support for regular expressions (RE).
+
+This module provides regular expression matching operations similar to
+those found in Perl.  It supports both 8-bit and Unicode strings; both
+the pattern and the strings being processed can contain null bytes and
+characters outside the US ASCII range.
+
+Regular expressions can contain both special and ordinary characters.
+Most ordinary characters, like "A", "a", or "0", are the simplest
+regular expressions; they simply match themselves.  You can
+concatenate ordinary characters, so last matches the string 'last'.
+
+The special characters are:
+    "."      Matches any character except a newline.
+    "^"      Matches the start of the string.
+    "$"      Matches the end of the string.
+    "*"      Matches 0 or more (greedy) repetitions of the preceding RE.
+             Greedy means that it will match as many repetitions as possible.
+    "+"      Matches 1 or more (greedy) repetitions of the preceding RE.
+    "?"      Matches 0 or 1 (greedy) of the preceding RE.
+    *?,+?,?? Non-greedy versions of the previous three special characters.
+    {m,n}    Matches from m to n repetitions of the preceding RE.
+    {m,n}?   Non-greedy version of the above.
+    "\\"      Either escapes special characters or signals a special sequence.
+    []       Indicates a set of characters.
+             A "^" as the first character indicates a complementing set.
+    "|"      A|B, creates an RE that will match either A or B.
+    (...)    Matches the RE inside the parentheses.
+             The contents can be retrieved or matched later in the string.
+    (?iLmsux) Set the I, L, M, S, U, or X flag for the RE (see below).
+    (?:...)  Non-grouping version of regular parentheses.
+    (?P<name>...) The substring matched by the group is accessible by name.
+    (?P=name)     Matches the text matched earlier by the group named name.
+    (?#...)  A comment; ignored.
+    (?=...)  Matches if ... matches next, but doesn't consume the string.
+    (?!...)  Matches if ... doesn't match next.
+
+The special sequences consist of "\\" and a character from the list
+below.  If the ordinary character is not on the list, then the
+resulting RE will match the second character.
+    \number  Matches the contents of the group of the same number.
+    \A       Matches only at the start of the string.
+    \Z       Matches only at the end of the string.
+    \b       Matches the empty string, but only at the start or end of a word.
+    \B       Matches the empty string, but not at the start or end of a word.
+    \d       Matches any decimal digit; equivalent to the set [0-9].
+    \D       Matches any non-digit character; equivalent to the set [^0-9].
+    \s       Matches any whitespace character; equivalent to [ \t\n\r\f\v].
+    \S       Matches any non-whitespace character; equiv. to [^ \t\n\r\f\v].
+    \w       Matches any alphanumeric character; equivalent to [a-zA-Z0-9_].
+             With LOCALE, it will match the set [0-9_] plus characters defined
+             as letters for the current locale.
+    \W       Matches the complement of \w.
+    \\       Matches a literal backslash.
+
+This module exports the following functions:
+    match    Match a regular expression pattern to the beginning of a string.
+    search   Search a string for the presence of a pattern.
+    sub      Substitute occurrences of a pattern found in a string.
+    subn     Same as sub, but also return the number of substitutions made.
+    split    Split a string by the occurrences of a pattern.
+    findall  Find all occurrences of a pattern in a string.
+    compile  Compile a pattern into a RegexObject.
+    purge    Clear the regular expression cache.
+    escape   Backslash all non-alphanumerics in a string.
+
+Some of the functions in this module takes flags as optional parameters:
+    I  IGNORECASE  Perform case-insensitive matching.
+    L  LOCALE      Make \w, \W, \b, \B, dependent on the current locale.
+    M  MULTILINE   "^" matches the beginning of lines as well as the string.
+                   "$" matches the end of lines as well as the string.
+    S  DOTALL      "." matches any character at all, including the newline.
+    X  VERBOSE     Ignore whitespace and comments for nicer looking RE's.
+    U  UNICODE     Make \w, \W, \b, \B, dependent on the Unicode locale.
+
+This module also defines an exception 'error'.
+
+</pre>
+
+<hr />
+<div class="fields">      <p><strong>Version:</strong>
+        2.2.1
+      </p>
+</div><!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Classes</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Classes"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="sre_constants.error-class.html" class="summary-name">error</a>
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="sre.Scanner-class.html" class="summary-name" onclick="show_private();">Scanner</a>
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTIONS ==================== -->
+<a name="section-Functions"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Functions</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Functions"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="match"></a><span class="summary-sig-name">match</span>(<span class="summary-sig-arg">pattern</span>,
+        <span class="summary-sig-arg">string</span>,
+        <span class="summary-sig-arg">flags</span>=<span class="summary-sig-default">0</span>)</span><br />
+      Try to apply the pattern at the start of the string, returning
+a match object, or None if no match was found.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="sre-pysrc.html#match">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="search"></a><span class="summary-sig-name">search</span>(<span class="summary-sig-arg">pattern</span>,
+        <span class="summary-sig-arg">string</span>,
+        <span class="summary-sig-arg">flags</span>=<span class="summary-sig-default">0</span>)</span><br />
+      Scan through string looking for a match to the pattern, returning
+a match object, or None if no match was found.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="sre-pysrc.html#search">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="sre-module.html#sub" class="summary-sig-name">sub</a>(<span class="summary-sig-arg">pattern</span>,
+        <span class="summary-sig-arg">repl</span>,
+        <span class="summary-sig-arg">string</span>,
+        <span class="summary-sig-arg">count</span>=<span class="summary-sig-default">0</span>)</span><br />
+      Return the string obtained by replacing the leftmost
+non-overlapping occurrences of the pattern in string by the
+replacement repl.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="sre-pysrc.html#sub">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="sre-module.html#subn" class="summary-sig-name">subn</a>(<span class="summary-sig-arg">pattern</span>,
+        <span class="summary-sig-arg">repl</span>,
+        <span class="summary-sig-arg">string</span>,
+        <span class="summary-sig-arg">count</span>=<span class="summary-sig-default">0</span>)</span><br />
+      Return a 2-tuple containing (new_string, number).</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="sre-pysrc.html#subn">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="split"></a><span class="summary-sig-name">split</span>(<span class="summary-sig-arg">pattern</span>,
+        <span class="summary-sig-arg">string</span>,
+        <span class="summary-sig-arg">maxsplit</span>=<span class="summary-sig-default">0</span>)</span><br />
+      Split the source string by the occurrences of the pattern,
+returning a list containing the resulting substrings.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="sre-pysrc.html#split">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="sre-module.html#findall" class="summary-sig-name">findall</a>(<span class="summary-sig-arg">pattern</span>,
+        <span class="summary-sig-arg">string</span>,
+        <span class="summary-sig-arg">flags</span>=<span class="summary-sig-default">0</span>)</span><br />
+      Return a list of all non-overlapping matches in the string.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="sre-pysrc.html#findall">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="sre-module.html#finditer" class="summary-sig-name">finditer</a>(<span class="summary-sig-arg">pattern</span>,
+        <span class="summary-sig-arg">string</span>,
+        <span class="summary-sig-arg">flags</span>=<span class="summary-sig-default">0</span>)</span><br />
+      Return an iterator over all non-overlapping matches in the
+string.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="sre-pysrc.html#finditer">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="compile"></a><span class="summary-sig-name">compile</span>(<span class="summary-sig-arg">pattern</span>,
+        <span class="summary-sig-arg">flags</span>=<span class="summary-sig-default">0</span>)</span><br />
+      Compile a regular expression pattern, returning a pattern object.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="sre-pysrc.html#compile">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="purge"></a><span class="summary-sig-name">purge</span>()</span><br />
+      Clear the regular expression cache</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="sre-pysrc.html#purge">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="template"></a><span class="summary-sig-name">template</span>(<span class="summary-sig-arg">pattern</span>,
+        <span class="summary-sig-arg">flags</span>=<span class="summary-sig-default">0</span>)</span><br />
+      Compile a template pattern, returning a pattern object</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="sre-pysrc.html#template">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="escape"></a><span class="summary-sig-name">escape</span>(<span class="summary-sig-arg">pattern</span>)</span><br />
+      Escape all non-alphanumeric characters in pattern.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="sre-pysrc.html#escape">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_compile"></a><span class="summary-sig-name">_compile</span>(<span class="summary-sig-arg">*key</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="sre-pysrc.html#_compile">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_compile_repl"></a><span class="summary-sig-name">_compile_repl</span>(<span class="summary-sig-arg">*key</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="sre-pysrc.html#_compile_repl">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_expand"></a><span class="summary-sig-name">_expand</span>(<span class="summary-sig-arg">pattern</span>,
+        <span class="summary-sig-arg">match</span>,
+        <span class="summary-sig-arg">template</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="sre-pysrc.html#_expand">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_subx"></a><span class="summary-sig-name">_subx</span>(<span class="summary-sig-arg">pattern</span>,
+        <span class="summary-sig-arg">template</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="sre-pysrc.html#_subx">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="_pickle"></a><span class="summary-sig-name">_pickle</span>(<span class="summary-sig-arg">p</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="sre-pysrc.html#_pickle">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Variables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="IGNORECASE"></a><span class="summary-name">IGNORECASE</span> = <code title="2">2</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="I"></a><span class="summary-name">I</span> = <code title="2">2</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="LOCALE"></a><span class="summary-name">LOCALE</span> = <code title="4">4</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="L"></a><span class="summary-name">L</span> = <code title="4">4</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="UNICODE"></a><span class="summary-name">UNICODE</span> = <code title="32">32</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="U"></a><span class="summary-name">U</span> = <code title="32">32</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="MULTILINE"></a><span class="summary-name">MULTILINE</span> = <code title="8">8</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="M"></a><span class="summary-name">M</span> = <code title="8">8</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="DOTALL"></a><span class="summary-name">DOTALL</span> = <code title="16">16</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="S"></a><span class="summary-name">S</span> = <code title="16">16</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="VERBOSE"></a><span class="summary-name">VERBOSE</span> = <code title="64">64</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="X"></a><span class="summary-name">X</span> = <code title="64">64</code>
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="TEMPLATE"></a><span class="summary-name">TEMPLATE</span> = <code title="1">1</code>
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="T"></a><span class="summary-name">T</span> = <code title="1">1</code>
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="DEBUG"></a><span class="summary-name">DEBUG</span> = <code title="128">128</code>
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="sre-module.html#_cache" class="summary-name" onclick="show_private();">_cache</a> = <code title="{(<type 'str'>, '#.*', 0): re.compile(r'#.*'),
+ (<type 'str'>, '( +|\\n)', 0): re.compile(r'( +|\n)'),
+ (<type 'str'>, '(^>>>.*)\\n?', 8): re.compile(r'(?m)(^>>>.*)\n?'),
+ (<type 'str'>, '<a[^>]*\\shref', 0): re.compile(r'<a[^>]*\shref'),
+ (<type 'str'>, '["\'](.+-div)[\'"]', 0): re.compile(r'["\'](.+-div)[\\
+'"]'),
+ (<type 'str'>, '[^a-zA-Z0-9]', 0): re.compile(r'[^a-zA-Z0-9]'),
+ (<type 'str'>, '\\$([^\\$]+)\\$', 0): re.compile(r'\$([^\$]+)\$'),
+..."><code class="variable-group">{</code><code class="variable-group">(</code><type 'str'><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">#.*</code><code class="variable-quote">'</code><code class="variable-op">, </code>0<code class="variable-group">)</code><code class="variable-op">: </code>re.compile(r'#.<code class="re-op">*</code>')<code class="variable-op">, </code><code class="variable-group">(</code><type<code class=" [...]
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="sre-module.html#_cache_repl" class="summary-name" onclick="show_private();">_cache_repl</a> = <code title="{('#\\1\\3\\2', re.compile(r'#(..)(..)(..)')): ([(1, 1),
+                                                 (2, 3),
+                                                 (3, 2)],
+                                                ['#',
+                                                 None,
+                                                 None,
+                                                 None]),
+ ('#\\2\\2\\2', re.compile(r'#(..)(..)(..)')): ([(1, 2), (2, 2), (3, 2\
+..."><code class="variable-group">{</code><code class="variable-group">(</code><code class="variable-quote">'</code><code class="variable-string">#\\1\\3\\2</code><code class="variable-quote">'</code><code class="variable-op">, </code>re.compile(r'#<code class="re-group">(</code>..<code class="re-group">)</code><code class="re-group">(</code>..<code class="re-group">)</code><code class="re-group">(</code>..<code class="re-group">)</code>')<code class="variable-group">)</code><code class= [...]
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="_MAXCACHE"></a><span class="summary-name">_MAXCACHE</span> = <code title="100">100</code>
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTION DETAILS ==================== -->
+<a name="section-FunctionDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Function Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-FunctionDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="sub"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">sub</span>(<span class="sig-arg">pattern</span>,
+        <span class="sig-arg">repl</span>,
+        <span class="sig-arg">string</span>,
+        <span class="sig-arg">count</span>=<span class="sig-default">0</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="sre-pysrc.html#sub">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <pre class="literalblock">
+Return the string obtained by replacing the leftmost
+non-overlapping occurrences of the pattern in string by the
+replacement repl.  repl can be either a string or a callable;
+if a callable, it's passed the match object and must return
+a replacement string to be used.
+
+</pre>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="subn"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">subn</span>(<span class="sig-arg">pattern</span>,
+        <span class="sig-arg">repl</span>,
+        <span class="sig-arg">string</span>,
+        <span class="sig-arg">count</span>=<span class="sig-default">0</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="sre-pysrc.html#subn">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <pre class="literalblock">
+Return a 2-tuple containing (new_string, number).
+new_string is the string obtained by replacing the leftmost
+non-overlapping occurrences of the pattern in the source
+string by the replacement repl.  number is the number of
+substitutions that were made. repl can be either a string or a
+callable; if a callable, it's passed the match object and must
+return a replacement string to be used.
+
+</pre>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="findall"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">findall</span>(<span class="sig-arg">pattern</span>,
+        <span class="sig-arg">string</span>,
+        <span class="sig-arg">flags</span>=<span class="sig-default">0</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="sre-pysrc.html#findall">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <pre class="literalblock">
+Return a list of all non-overlapping matches in the string.
+
+If one or more groups are present in the pattern, return a
+list of groups; this will be a list of tuples if the pattern
+has more than one group.
+
+Empty matches are included in the result.
+
+</pre>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="finditer"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">finditer</span>(<span class="sig-arg">pattern</span>,
+        <span class="sig-arg">string</span>,
+        <span class="sig-arg">flags</span>=<span class="sig-default">0</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="sre-pysrc.html#finditer">source code</a></span> 
+    </td>
+  </tr></table>
+  
+  <pre class="literalblock">
+Return an iterator over all non-overlapping matches in the
+string.  For each match, the iterator returns a match object.
+
+Empty matches are included in the result.
+
+</pre>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== VARIABLES DETAILS ==================== -->
+<a name="section-VariablesDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Variables Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-VariablesDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="_cache"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">_cache</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-group">{</code><code class="variable-group">(</code><type 'str'><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">#.*</code><code class="variable-quote">'</code><code class="variable-op">, </code>0<code class="variable-group">)</code><code class="variable-op">: </code>re.compile(r'#.<code class="re-op">*</code>')<code class="variable-op">,</code>
+ <code class="variable-group">(</code><type 'str'><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">( +|\\n)</code><code class="variable-quote">'</code><code class="variable-op">, </code>0<code class="variable-group">)</code><code class="variable-op">: </code>re.compile(r'<code class="re-group">(</code> <code class="re-op">+</code><code class="re-op">|</code>\n<code class="re-group">)</code>')<code class="variable-op">,</code>
+ <code class="variable-group">(</code><type 'str'><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">(^>>>.*)\\n?</code><code class="variable-quote">'</code><code class="variable-op">, </code>8<code class="variable-group">)</code><code class="variable-op">: </code>re.compile(r'<code class="re-flags">(?m)</code><code class="re-group">(</code>^>>>.<code class="re-op">*</code><code class="re-group">)</code>\n<code cl [...]
+ <code class="variable-group">(</code><type 'str'><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string"><a[^>]*\\shref</code><code class="variable-quote">'</code><code class="variable-op">, </code>0<code class="variable-group">)</code><code class="variable-op">: </code>re.compile(r'<a<code class="re-group">[^</code>><code class="re-group">]</code><code class="re-op">*</code>\shref')<code class="variable-op">,</code>
+ <code class="variable-group">(</code><type 'str'><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">["\'](.+-div)[\'"]</code><code class="variable-quote">'</code><code class="variable-op">, </code>0<code class="variable-group">)</code><code class="variable-op">: </code>re.compile(r'<code class="re-group">[</code>"\'<code class="re-group">]</code><code class="re-group">(</code>.<code class="re-op">+</code>-div<code c [...]
+'"<code class="re-group">]</code>')<code class="variable-op">,</code>
+ <code class="variable-group">(</code><type 'str'><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">[^a-zA-Z0-9]</code><code class="variable-quote">'</code><code class="variable-op">, </code>0<code class="variable-group">)</code><code class="variable-op">: </code>re.compile(r'<code class="re-group">[</code><code class="re-op">^</code>a<code class="re-op">-</code>zA<code class="re-op">-</code>Z0<code class="re-op">-</code>9<code cl [...]
+ <code class="variable-group">(</code><type 'str'><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">\\$([^\\$]+)\\$</code><code class="variable-quote">'</code><code class="variable-op">, </code>0<code class="variable-group">)</code><code class="variable-op">: </code>re.compile(r'\$<code class="re-group">(</code><code class="re-group">[^</code>\$<code class="re-group">]</code><code class="re-op">+</code><code class="re-group">)</co [...]
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="_cache_repl"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">_cache_repl</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-group">{</code><code class="variable-group">(</code><code class="variable-quote">'</code><code class="variable-string">#\\1\\3\\2</code><code class="variable-quote">'</code><code class="variable-op">, </code>re.compile(r'#<code class="re-group">(</code>..<code class="re-group">)</code><code class="re-group">(</code>..<code class="re-group">)</code><code class="re-group">(</code>..<code class="re-group">)</code>')<code class="variable-group">)</code><code class="vari [...]
+                                                 <code class="variable-group">(</code>2<code class="variable-op">, </code>3<code class="variable-group">)</code><code class="variable-op">,</code>
+                                                 <code class="variable-group">(</code>3<code class="variable-op">, </code>2<code class="variable-group">)</code><code class="variable-group">]</code><code class="variable-op">,</code>
+                                                <code class="variable-group">[</code><code class="variable-quote">'</code><code class="variable-string">#</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+                                                 None<code class="variable-op">,</code>
+                                                 None<code class="variable-op">,</code>
+                                                 None<code class="variable-group">]</code><code class="variable-group">)</code><code class="variable-op">,</code>
+ <code class="variable-group">(</code><code class="variable-quote">'</code><code class="variable-string">#\\2\\2\\2</code><code class="variable-quote">'</code><code class="variable-op">, </code>re.compile(r'#<code class="re-group">(</code>..<code class="re-group">)</code><code class="re-group">(</code>..<code class="re-group">)</code><code class="re-group">(</code>..<code class="re-group">)</code>')<code class="variable-group">)</code><code class="variable-op">: </code><code class="varia [...]
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epytext_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0.1 on Wed Jan 30 14:10:06 2008
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/examples/sre-pysrc.html b/doc/examples/sre-pysrc.html
new file mode 100644
index 0000000..84bad37
--- /dev/null
+++ b/doc/examples/sre-pysrc.html
@@ -0,0 +1,429 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>sre</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epytext_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        Module sre
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="sre-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="sre-module.html">Module sre</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno">  1</tt>  <tt class="py-line"><tt class="py-comment">#</tt> </tt>
+<a name="L2"></a><tt class="py-lineno">  2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Secret Labs' Regular Expression Engine</tt> </tt>
+<a name="L3"></a><tt class="py-lineno">  3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L4"></a><tt class="py-lineno">  4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># re-compatible interface for the sre matching engine</tt> </tt>
+<a name="L5"></a><tt class="py-lineno">  5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L6"></a><tt class="py-lineno">  6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (c) 1998-2001 by Secret Labs AB.  All rights reserved.</tt> </tt>
+<a name="L7"></a><tt class="py-lineno">  7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L8"></a><tt class="py-lineno">  8</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># This version of the SRE library can be redistributed under CNRI's</tt> </tt>
+<a name="L9"></a><tt class="py-lineno">  9</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Python 1.6 license.  For any other use, please contact Secret Labs</tt> </tt>
+<a name="L10"></a><tt class="py-lineno"> 10</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># AB (info at pythonware.com).</tt> </tt>
+<a name="L11"></a><tt class="py-lineno"> 11</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L12"></a><tt class="py-lineno"> 12</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Portions of this engine have been developed in cooperation with</tt> </tt>
+<a name="L13"></a><tt class="py-lineno"> 13</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># CNRI.  Hewlett-Packard provided funding for 1.6 integration and</tt> </tt>
+<a name="L14"></a><tt class="py-lineno"> 14</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># other compatibility work.</tt> </tt>
+<a name="L15"></a><tt class="py-lineno"> 15</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L16"></a><tt class="py-lineno"> 16</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L17"></a><tt class="py-lineno"> 17</tt>  <tt class="py-line"><tt class="py-docstring">r"""Support for regular expressions (RE).</tt> </tt>
+<a name="L18"></a><tt class="py-lineno"> 18</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L19"></a><tt class="py-lineno"> 19</tt>  <tt class="py-line"><tt class="py-docstring">This module provides regular expression matching operations similar to</tt> </tt>
+<a name="L20"></a><tt class="py-lineno"> 20</tt>  <tt class="py-line"><tt class="py-docstring">those found in Perl.  It supports both 8-bit and Unicode strings; both</tt> </tt>
+<a name="L21"></a><tt class="py-lineno"> 21</tt>  <tt class="py-line"><tt class="py-docstring">the pattern and the strings being processed can contain null bytes and</tt> </tt>
+<a name="L22"></a><tt class="py-lineno"> 22</tt>  <tt class="py-line"><tt class="py-docstring">characters outside the US ASCII range.</tt> </tt>
+<a name="L23"></a><tt class="py-lineno"> 23</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L24"></a><tt class="py-lineno"> 24</tt>  <tt class="py-line"><tt class="py-docstring">Regular expressions can contain both special and ordinary characters.</tt> </tt>
+<a name="L25"></a><tt class="py-lineno"> 25</tt>  <tt class="py-line"><tt class="py-docstring">Most ordinary characters, like "A", "a", or "0", are the simplest</tt> </tt>
+<a name="L26"></a><tt class="py-lineno"> 26</tt>  <tt class="py-line"><tt class="py-docstring">regular expressions; they simply match themselves.  You can</tt> </tt>
+<a name="L27"></a><tt class="py-lineno"> 27</tt>  <tt class="py-line"><tt class="py-docstring">concatenate ordinary characters, so last matches the string 'last'.</tt> </tt>
+<a name="L28"></a><tt class="py-lineno"> 28</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L29"></a><tt class="py-lineno"> 29</tt>  <tt class="py-line"><tt class="py-docstring">The special characters are:</tt> </tt>
+<a name="L30"></a><tt class="py-lineno"> 30</tt>  <tt class="py-line"><tt class="py-docstring">    "."      Matches any character except a newline.</tt> </tt>
+<a name="L31"></a><tt class="py-lineno"> 31</tt>  <tt class="py-line"><tt class="py-docstring">    "^"      Matches the start of the string.</tt> </tt>
+<a name="L32"></a><tt class="py-lineno"> 32</tt>  <tt class="py-line"><tt class="py-docstring">    "$"      Matches the end of the string.</tt> </tt>
+<a name="L33"></a><tt class="py-lineno"> 33</tt>  <tt class="py-line"><tt class="py-docstring">    "*"      Matches 0 or more (greedy) repetitions of the preceding RE.</tt> </tt>
+<a name="L34"></a><tt class="py-lineno"> 34</tt>  <tt class="py-line"><tt class="py-docstring">             Greedy means that it will match as many repetitions as possible.</tt> </tt>
+<a name="L35"></a><tt class="py-lineno"> 35</tt>  <tt class="py-line"><tt class="py-docstring">    "+"      Matches 1 or more (greedy) repetitions of the preceding RE.</tt> </tt>
+<a name="L36"></a><tt class="py-lineno"> 36</tt>  <tt class="py-line"><tt class="py-docstring">    "?"      Matches 0 or 1 (greedy) of the preceding RE.</tt> </tt>
+<a name="L37"></a><tt class="py-lineno"> 37</tt>  <tt class="py-line"><tt class="py-docstring">    *?,+?,?? Non-greedy versions of the previous three special characters.</tt> </tt>
+<a name="L38"></a><tt class="py-lineno"> 38</tt>  <tt class="py-line"><tt class="py-docstring">    {m,n}    Matches from m to n repetitions of the preceding RE.</tt> </tt>
+<a name="L39"></a><tt class="py-lineno"> 39</tt>  <tt class="py-line"><tt class="py-docstring">    {m,n}?   Non-greedy version of the above.</tt> </tt>
+<a name="L40"></a><tt class="py-lineno"> 40</tt>  <tt class="py-line"><tt class="py-docstring">    "\\"      Either escapes special characters or signals a special sequence.</tt> </tt>
+<a name="L41"></a><tt class="py-lineno"> 41</tt>  <tt class="py-line"><tt class="py-docstring">    []       Indicates a set of characters.</tt> </tt>
+<a name="L42"></a><tt class="py-lineno"> 42</tt>  <tt class="py-line"><tt class="py-docstring">             A "^" as the first character indicates a complementing set.</tt> </tt>
+<a name="L43"></a><tt class="py-lineno"> 43</tt>  <tt class="py-line"><tt class="py-docstring">    "|"      A|B, creates an RE that will match either A or B.</tt> </tt>
+<a name="L44"></a><tt class="py-lineno"> 44</tt>  <tt class="py-line"><tt class="py-docstring">    (...)    Matches the RE inside the parentheses.</tt> </tt>
+<a name="L45"></a><tt class="py-lineno"> 45</tt>  <tt class="py-line"><tt class="py-docstring">             The contents can be retrieved or matched later in the string.</tt> </tt>
+<a name="L46"></a><tt class="py-lineno"> 46</tt>  <tt class="py-line"><tt class="py-docstring">    (?iLmsux) Set the I, L, M, S, U, or X flag for the RE (see below).</tt> </tt>
+<a name="L47"></a><tt class="py-lineno"> 47</tt>  <tt class="py-line"><tt class="py-docstring">    (?:...)  Non-grouping version of regular parentheses.</tt> </tt>
+<a name="L48"></a><tt class="py-lineno"> 48</tt>  <tt class="py-line"><tt class="py-docstring">    (?P<name>...) The substring matched by the group is accessible by name.</tt> </tt>
+<a name="L49"></a><tt class="py-lineno"> 49</tt>  <tt class="py-line"><tt class="py-docstring">    (?P=name)     Matches the text matched earlier by the group named name.</tt> </tt>
+<a name="L50"></a><tt class="py-lineno"> 50</tt>  <tt class="py-line"><tt class="py-docstring">    (?#...)  A comment; ignored.</tt> </tt>
+<a name="L51"></a><tt class="py-lineno"> 51</tt>  <tt class="py-line"><tt class="py-docstring">    (?=...)  Matches if ... matches next, but doesn't consume the string.</tt> </tt>
+<a name="L52"></a><tt class="py-lineno"> 52</tt>  <tt class="py-line"><tt class="py-docstring">    (?!...)  Matches if ... doesn't match next.</tt> </tt>
+<a name="L53"></a><tt class="py-lineno"> 53</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L54"></a><tt class="py-lineno"> 54</tt>  <tt class="py-line"><tt class="py-docstring">The special sequences consist of "\\" and a character from the list</tt> </tt>
+<a name="L55"></a><tt class="py-lineno"> 55</tt>  <tt class="py-line"><tt class="py-docstring">below.  If the ordinary character is not on the list, then the</tt> </tt>
+<a name="L56"></a><tt class="py-lineno"> 56</tt>  <tt class="py-line"><tt class="py-docstring">resulting RE will match the second character.</tt> </tt>
+<a name="L57"></a><tt class="py-lineno"> 57</tt>  <tt class="py-line"><tt class="py-docstring">    \number  Matches the contents of the group of the same number.</tt> </tt>
+<a name="L58"></a><tt class="py-lineno"> 58</tt>  <tt class="py-line"><tt class="py-docstring">    \A       Matches only at the start of the string.</tt> </tt>
+<a name="L59"></a><tt class="py-lineno"> 59</tt>  <tt class="py-line"><tt class="py-docstring">    \Z       Matches only at the end of the string.</tt> </tt>
+<a name="L60"></a><tt class="py-lineno"> 60</tt>  <tt class="py-line"><tt class="py-docstring">    \b       Matches the empty string, but only at the start or end of a word.</tt> </tt>
+<a name="L61"></a><tt class="py-lineno"> 61</tt>  <tt class="py-line"><tt class="py-docstring">    \B       Matches the empty string, but not at the start or end of a word.</tt> </tt>
+<a name="L62"></a><tt class="py-lineno"> 62</tt>  <tt class="py-line"><tt class="py-docstring">    \d       Matches any decimal digit; equivalent to the set [0-9].</tt> </tt>
+<a name="L63"></a><tt class="py-lineno"> 63</tt>  <tt class="py-line"><tt class="py-docstring">    \D       Matches any non-digit character; equivalent to the set [^0-9].</tt> </tt>
+<a name="L64"></a><tt class="py-lineno"> 64</tt>  <tt class="py-line"><tt class="py-docstring">    \s       Matches any whitespace character; equivalent to [ \t\n\r\f\v].</tt> </tt>
+<a name="L65"></a><tt class="py-lineno"> 65</tt>  <tt class="py-line"><tt class="py-docstring">    \S       Matches any non-whitespace character; equiv. to [^ \t\n\r\f\v].</tt> </tt>
+<a name="L66"></a><tt class="py-lineno"> 66</tt>  <tt class="py-line"><tt class="py-docstring">    \w       Matches any alphanumeric character; equivalent to [a-zA-Z0-9_].</tt> </tt>
+<a name="L67"></a><tt class="py-lineno"> 67</tt>  <tt class="py-line"><tt class="py-docstring">             With LOCALE, it will match the set [0-9_] plus characters defined</tt> </tt>
+<a name="L68"></a><tt class="py-lineno"> 68</tt>  <tt class="py-line"><tt class="py-docstring">             as letters for the current locale.</tt> </tt>
+<a name="L69"></a><tt class="py-lineno"> 69</tt>  <tt class="py-line"><tt class="py-docstring">    \W       Matches the complement of \w.</tt> </tt>
+<a name="L70"></a><tt class="py-lineno"> 70</tt>  <tt class="py-line"><tt class="py-docstring">    \\       Matches a literal backslash.</tt> </tt>
+<a name="L71"></a><tt class="py-lineno"> 71</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L72"></a><tt class="py-lineno"> 72</tt>  <tt class="py-line"><tt class="py-docstring">This module exports the following functions:</tt> </tt>
+<a name="L73"></a><tt class="py-lineno"> 73</tt>  <tt class="py-line"><tt class="py-docstring">    match    Match a regular expression pattern to the beginning of a string.</tt> </tt>
+<a name="L74"></a><tt class="py-lineno"> 74</tt>  <tt class="py-line"><tt class="py-docstring">    search   Search a string for the presence of a pattern.</tt> </tt>
+<a name="L75"></a><tt class="py-lineno"> 75</tt>  <tt class="py-line"><tt class="py-docstring">    sub      Substitute occurrences of a pattern found in a string.</tt> </tt>
+<a name="L76"></a><tt class="py-lineno"> 76</tt>  <tt class="py-line"><tt class="py-docstring">    subn     Same as sub, but also return the number of substitutions made.</tt> </tt>
+<a name="L77"></a><tt class="py-lineno"> 77</tt>  <tt class="py-line"><tt class="py-docstring">    split    Split a string by the occurrences of a pattern.</tt> </tt>
+<a name="L78"></a><tt class="py-lineno"> 78</tt>  <tt class="py-line"><tt class="py-docstring">    findall  Find all occurrences of a pattern in a string.</tt> </tt>
+<a name="L79"></a><tt class="py-lineno"> 79</tt>  <tt class="py-line"><tt class="py-docstring">    compile  Compile a pattern into a RegexObject.</tt> </tt>
+<a name="L80"></a><tt class="py-lineno"> 80</tt>  <tt class="py-line"><tt class="py-docstring">    purge    Clear the regular expression cache.</tt> </tt>
+<a name="L81"></a><tt class="py-lineno"> 81</tt>  <tt class="py-line"><tt class="py-docstring">    escape   Backslash all non-alphanumerics in a string.</tt> </tt>
+<a name="L82"></a><tt class="py-lineno"> 82</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L83"></a><tt class="py-lineno"> 83</tt>  <tt class="py-line"><tt class="py-docstring">Some of the functions in this module takes flags as optional parameters:</tt> </tt>
+<a name="L84"></a><tt class="py-lineno"> 84</tt>  <tt class="py-line"><tt class="py-docstring">    I  IGNORECASE  Perform case-insensitive matching.</tt> </tt>
+<a name="L85"></a><tt class="py-lineno"> 85</tt>  <tt class="py-line"><tt class="py-docstring">    L  LOCALE      Make \w, \W, \b, \B, dependent on the current locale.</tt> </tt>
+<a name="L86"></a><tt class="py-lineno"> 86</tt>  <tt class="py-line"><tt class="py-docstring">    M  MULTILINE   "^" matches the beginning of lines as well as the string.</tt> </tt>
+<a name="L87"></a><tt class="py-lineno"> 87</tt>  <tt class="py-line"><tt class="py-docstring">                   "$" matches the end of lines as well as the string.</tt> </tt>
+<a name="L88"></a><tt class="py-lineno"> 88</tt>  <tt class="py-line"><tt class="py-docstring">    S  DOTALL      "." matches any character at all, including the newline.</tt> </tt>
+<a name="L89"></a><tt class="py-lineno"> 89</tt>  <tt class="py-line"><tt class="py-docstring">    X  VERBOSE     Ignore whitespace and comments for nicer looking RE's.</tt> </tt>
+<a name="L90"></a><tt class="py-lineno"> 90</tt>  <tt class="py-line"><tt class="py-docstring">    U  UNICODE     Make \w, \W, \b, \B, dependent on the Unicode locale.</tt> </tt>
+<a name="L91"></a><tt class="py-lineno"> 91</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L92"></a><tt class="py-lineno"> 92</tt>  <tt class="py-line"><tt class="py-docstring">This module also defines an exception 'error'.</tt> </tt>
+<a name="L93"></a><tt class="py-lineno"> 93</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L94"></a><tt class="py-lineno"> 94</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L95"></a><tt class="py-lineno"> 95</tt>  <tt class="py-line"> </tt>
+<a name="L96"></a><tt class="py-lineno"> 96</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">sys</tt> </tt>
+<a name="L97"></a><tt class="py-lineno"> 97</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">sre_compile</tt> </tt>
+<a name="L98"></a><tt class="py-lineno"> 98</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">sre_parse</tt> </tt>
+<a name="L99"></a><tt class="py-lineno"> 99</tt>  <tt class="py-line"> </tt>
+<a name="L100"></a><tt class="py-lineno">100</tt>  <tt class="py-line"><tt class="py-comment"># public symbols</tt> </tt>
+<a name="L101"></a><tt class="py-lineno">101</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-name">__all__</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> <tt class="py-string">"match"</tt><tt class="py-op">,</tt> <tt class="py-string">"search"</tt><tt class="py-op">,</tt> <tt class="py-string">"sub"</tt><tt class="py-op">,</tt> <tt class="py-string">"subn"</tt><tt class="py-op">,</tt> <tt class="py-string">"split"</tt><tt class="py-op">,</tt> <tt class="py-str [...]
+<a name="L102"></a><tt class="py-lineno">102</tt>  <tt class="py-line">    <tt class="py-string">"compile"</tt><tt class="py-op">,</tt> <tt class="py-string">"purge"</tt><tt class="py-op">,</tt> <tt class="py-string">"template"</tt><tt class="py-op">,</tt> <tt class="py-string">"escape"</tt><tt class="py-op">,</tt> <tt class="py-string">"I"</tt><tt class="py-op">,</tt> <tt class="py-string">"L"</tt><tt class="py-op">,</tt> <tt class="py-string">"M"</tt><tt class="py-op">,</tt> <tt class= [...]
+<a name="L103"></a><tt class="py-lineno">103</tt>  <tt class="py-line">    <tt class="py-string">"U"</tt><tt class="py-op">,</tt> <tt class="py-string">"IGNORECASE"</tt><tt class="py-op">,</tt> <tt class="py-string">"LOCALE"</tt><tt class="py-op">,</tt> <tt class="py-string">"MULTILINE"</tt><tt class="py-op">,</tt> <tt class="py-string">"DOTALL"</tt><tt class="py-op">,</tt> <tt class="py-string">"VERBOSE"</tt><tt class="py-op">,</tt> </tt>
+<a name="L104"></a><tt class="py-lineno">104</tt>  <tt class="py-line">    <tt class="py-string">"UNICODE"</tt><tt class="py-op">,</tt> <tt class="py-string">"error"</tt> <tt class="py-op">]</tt> </tt>
+<a name="L105"></a><tt class="py-lineno">105</tt>  <tt class="py-line"> </tt>
+<a name="L106"></a><tt class="py-lineno">106</tt>  <tt class="py-line"><tt class="py-name">__version__</tt> <tt class="py-op">=</tt> <tt class="py-string">"2.2.1"</tt> </tt>
+<a name="L107"></a><tt class="py-lineno">107</tt>  <tt class="py-line"> </tt>
+<a name="L108"></a><tt class="py-lineno">108</tt>  <tt class="py-line"><tt class="py-comment"># flags</tt> </tt>
+<a name="L109"></a><tt class="py-lineno">109</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt id="link-0" class="py-name" targets="Variable sre.I=sre-module.html#I"><a title="sre.I" class="py-name" href="#" onclick="return doclink('link-0', 'I', 'link-0');">I</a></tt> <tt class="py-op">=</tt> <tt id="link-1" class="py-name" targets="Variable sre.IGNORECASE=sre-module.html#IGNORECASE"><a title="sre.IGNORECASE" class="py-name" href="#" onclick="return doclink('link-1', 'IGNORECASE [...]
+<a name="L110"></a><tt class="py-lineno">110</tt>  <tt class="py-line"><tt id="link-2" class="py-name" targets="Variable sre.L=sre-module.html#L"><a title="sre.L" class="py-name" href="#" onclick="return doclink('link-2', 'L', 'link-2');">L</a></tt> <tt class="py-op">=</tt> <tt id="link-3" class="py-name" targets="Variable sre.LOCALE=sre-module.html#LOCALE"><a title="sre.LOCALE" class="py-name" href="#" onclick="return doclink('link-3', 'LOCALE', 'link-3');">LOCALE</a></tt> <tt class="py [...]
+<a name="L111"></a><tt class="py-lineno">111</tt>  <tt class="py-line"><tt id="link-4" class="py-name" targets="Variable sre.U=sre-module.html#U"><a title="sre.U" class="py-name" href="#" onclick="return doclink('link-4', 'U', 'link-4');">U</a></tt> <tt class="py-op">=</tt> <tt id="link-5" class="py-name" targets="Variable sre.UNICODE=sre-module.html#UNICODE"><a title="sre.UNICODE" class="py-name" href="#" onclick="return doclink('link-5', 'UNICODE', 'link-5');">UNICODE</a></tt> <tt clas [...]
+<a name="L112"></a><tt class="py-lineno">112</tt>  <tt class="py-line"><tt id="link-6" class="py-name" targets="Variable sre.M=sre-module.html#M"><a title="sre.M" class="py-name" href="#" onclick="return doclink('link-6', 'M', 'link-6');">M</a></tt> <tt class="py-op">=</tt> <tt id="link-7" class="py-name" targets="Variable sre.MULTILINE=sre-module.html#MULTILINE"><a title="sre.MULTILINE" class="py-name" href="#" onclick="return doclink('link-7', 'MULTILINE', 'link-7');">MULTILINE</a></tt [...]
+<a name="L113"></a><tt class="py-lineno">113</tt>  <tt class="py-line"><tt id="link-8" class="py-name" targets="Variable sre.S=sre-module.html#S"><a title="sre.S" class="py-name" href="#" onclick="return doclink('link-8', 'S', 'link-8');">S</a></tt> <tt class="py-op">=</tt> <tt id="link-9" class="py-name" targets="Variable sre.DOTALL=sre-module.html#DOTALL"><a title="sre.DOTALL" class="py-name" href="#" onclick="return doclink('link-9', 'DOTALL', 'link-9');">DOTALL</a></tt> <tt class="py [...]
+<a name="L114"></a><tt class="py-lineno">114</tt>  <tt class="py-line"><tt id="link-10" class="py-name" targets="Variable sre.X=sre-module.html#X"><a title="sre.X" class="py-name" href="#" onclick="return doclink('link-10', 'X', 'link-10');">X</a></tt> <tt class="py-op">=</tt> <tt id="link-11" class="py-name" targets="Variable sre.VERBOSE=sre-module.html#VERBOSE"><a title="sre.VERBOSE" class="py-name" href="#" onclick="return doclink('link-11', 'VERBOSE', 'link-11');">VERBOSE</a></tt> <t [...]
+<a name="L115"></a><tt class="py-lineno">115</tt>  <tt class="py-line"> </tt>
+<a name="L116"></a><tt class="py-lineno">116</tt>  <tt class="py-line"><tt class="py-comment"># sre extensions (experimental, don't rely on these)</tt> </tt>
+<a name="L117"></a><tt class="py-lineno">117</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt id="link-12" class="py-name" targets="Variable sre.T=sre-module.html#T"><a title="sre.T" class="py-name" href="#" onclick="return doclink('link-12', 'T', 'link-12');">T</a></tt> <tt class="py-op">=</tt> <tt id="link-13" class="py-name" targets="Variable sre.TEMPLATE=sre-module.html#TEMPLATE"><a title="sre.TEMPLATE" class="py-name" href="#" onclick="return doclink('link-13', 'TEMPLATE',  [...]
+<a name="L118"></a><tt class="py-lineno">118</tt>  <tt class="py-line"><tt id="link-14" class="py-name" targets="Variable sre.DEBUG=sre-module.html#DEBUG"><a title="sre.DEBUG" class="py-name" href="#" onclick="return doclink('link-14', 'DEBUG', 'link-14');">DEBUG</a></tt> <tt class="py-op">=</tt> <tt class="py-name">sre_compile</tt><tt class="py-op">.</tt><tt class="py-name">SRE_FLAG_DEBUG</tt> <tt class="py-comment"># dump pattern after compilation</tt> </tt>
+<a name="L119"></a><tt class="py-lineno">119</tt>  <tt class="py-line"> </tt>
+<a name="L120"></a><tt class="py-lineno">120</tt>  <tt class="py-line"><tt class="py-comment"># sre exception</tt> </tt>
+<a name="L121"></a><tt class="py-lineno">121</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt id="link-15" class="py-name" targets="Class sre_constants.error=sre_constants.error-class.html"><a title="sre_constants.error" class="py-name" href="#" onclick="return doclink('link-15', 'error', 'link-15');">error</a></tt> <tt class="py-op">=</tt> <tt class="py-name">sre_compile</tt><tt class="py-op">.</tt><tt id="link-16" class="py-name"><a title="sre_constants.error" class="py-name"  [...]
+<a name="L122"></a><tt class="py-lineno">122</tt>  <tt class="py-line"> </tt>
+<a name="L123"></a><tt class="py-lineno">123</tt>  <tt class="py-line"><tt class="py-comment"># --------------------------------------------------------------------</tt> </tt>
+<a name="L124"></a><tt class="py-lineno">124</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># public interface</tt> </tt>
+<a name="L125"></a><tt class="py-lineno">125</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="match"></a><div id="match-def"><a name="L126"></a><tt class="py-lineno">126</tt> <a class="py-toggle" href="#" id="match-toggle" onclick="return toggle('match');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="sre-module.html#match">match</a><tt class="py-op">(</tt><tt class="py-param">pattern</tt><tt class="py-op">,</tt> <tt class="py-param">string</tt><tt class="py-op">,</tt> <tt class="py-param">flags</tt><tt class="py-op">=</tt><tt clas [...]
+</div><div id="match-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="match-expanded"><a name="L127"></a><tt class="py-lineno">127</tt>  <tt class="py-line">    <tt class="py-docstring">"""Try to apply the pattern at the start of the string, returning</tt> </tt>
+<a name="L128"></a><tt class="py-lineno">128</tt>  <tt class="py-line"><tt class="py-docstring">    a match object, or None if no match was found."""</tt> </tt>
+<a name="L129"></a><tt class="py-lineno">129</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-17" class="py-name" targets="Function sre._compile()=sre-module.html#_compile"><a title="sre._compile" class="py-name" href="#" onclick="return doclink('link-17', '_compile', 'link-17');">_compile</a></tt><tt class="py-op">(</tt><tt class="py-name">pattern</tt><tt class="py-op">,</tt> <tt class="py-name">flags</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt i [...]
+</div><a name="L130"></a><tt class="py-lineno">130</tt>  <tt class="py-line"> </tt>
+<a name="search"></a><div id="search-def"><a name="L131"></a><tt class="py-lineno">131</tt> <a class="py-toggle" href="#" id="search-toggle" onclick="return toggle('search');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="sre-module.html#search">search</a><tt class="py-op">(</tt><tt class="py-param">pattern</tt><tt class="py-op">,</tt> <tt class="py-param">string</tt><tt class="py-op">,</tt> <tt class="py-param">flags</tt><tt class="py-op">=</tt><t [...]
+</div><div id="search-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="search-expanded"><a name="L132"></a><tt class="py-lineno">132</tt>  <tt class="py-line">    <tt class="py-docstring">"""Scan through string looking for a match to the pattern, returning</tt> </tt>
+<a name="L133"></a><tt class="py-lineno">133</tt>  <tt class="py-line"><tt class="py-docstring">    a match object, or None if no match was found."""</tt> </tt>
+<a name="L134"></a><tt class="py-lineno">134</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-19" class="py-name"><a title="sre._compile" class="py-name" href="#" onclick="return doclink('link-19', '_compile', 'link-17');">_compile</a></tt><tt class="py-op">(</tt><tt class="py-name">pattern</tt><tt class="py-op">,</tt> <tt class="py-name">flags</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-20" class="py-name" targets="Function sre.search()= [...]
+</div><a name="L135"></a><tt class="py-lineno">135</tt>  <tt class="py-line"> </tt>
+<a name="sub"></a><div id="sub-def"><a name="L136"></a><tt class="py-lineno">136</tt> <a class="py-toggle" href="#" id="sub-toggle" onclick="return toggle('sub');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="sre-module.html#sub">sub</a><tt class="py-op">(</tt><tt class="py-param">pattern</tt><tt class="py-op">,</tt> <tt class="py-param">repl</tt><tt class="py-op">,</tt> <tt class="py-param">string</tt><tt class="py-op">,</tt> <tt class="py-param" [...]
+</div><div id="sub-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="sub-expanded"><a name="L137"></a><tt class="py-lineno">137</tt>  <tt class="py-line">    <tt class="py-docstring">"""Return the string obtained by replacing the leftmost</tt> </tt>
+<a name="L138"></a><tt class="py-lineno">138</tt>  <tt class="py-line"><tt class="py-docstring">    non-overlapping occurrences of the pattern in string by the</tt> </tt>
+<a name="L139"></a><tt class="py-lineno">139</tt>  <tt class="py-line"><tt class="py-docstring">    replacement repl.  repl can be either a string or a callable;</tt> </tt>
+<a name="L140"></a><tt class="py-lineno">140</tt>  <tt class="py-line"><tt class="py-docstring">    if a callable, it's passed the match object and must return</tt> </tt>
+<a name="L141"></a><tt class="py-lineno">141</tt>  <tt class="py-line"><tt class="py-docstring">    a replacement string to be used."""</tt> </tt>
+<a name="L142"></a><tt class="py-lineno">142</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-21" class="py-name"><a title="sre._compile" class="py-name" href="#" onclick="return doclink('link-21', '_compile', 'link-17');">_compile</a></tt><tt class="py-op">(</tt><tt class="py-name">pattern</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-22" class="py-name" targets="Function sre.sub()=sre-m [...]
+</div><a name="L143"></a><tt class="py-lineno">143</tt>  <tt class="py-line"> </tt>
+<a name="subn"></a><div id="subn-def"><a name="L144"></a><tt class="py-lineno">144</tt> <a class="py-toggle" href="#" id="subn-toggle" onclick="return toggle('subn');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="sre-module.html#subn">subn</a><tt class="py-op">(</tt><tt class="py-param">pattern</tt><tt class="py-op">,</tt> <tt class="py-param">repl</tt><tt class="py-op">,</tt> <tt class="py-param">string</tt><tt class="py-op">,</tt> <tt class="py- [...]
+</div><div id="subn-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="subn-expanded"><a name="L145"></a><tt class="py-lineno">145</tt>  <tt class="py-line">    <tt class="py-docstring">"""Return a 2-tuple containing (new_string, number).</tt> </tt>
+<a name="L146"></a><tt class="py-lineno">146</tt>  <tt class="py-line"><tt class="py-docstring">    new_string is the string obtained by replacing the leftmost</tt> </tt>
+<a name="L147"></a><tt class="py-lineno">147</tt>  <tt class="py-line"><tt class="py-docstring">    non-overlapping occurrences of the pattern in the source</tt> </tt>
+<a name="L148"></a><tt class="py-lineno">148</tt>  <tt class="py-line"><tt class="py-docstring">    string by the replacement repl.  number is the number of</tt> </tt>
+<a name="L149"></a><tt class="py-lineno">149</tt>  <tt class="py-line"><tt class="py-docstring">    substitutions that were made. repl can be either a string or a</tt> </tt>
+<a name="L150"></a><tt class="py-lineno">150</tt>  <tt class="py-line"><tt class="py-docstring">    callable; if a callable, it's passed the match object and must</tt> </tt>
+<a name="L151"></a><tt class="py-lineno">151</tt>  <tt class="py-line"><tt class="py-docstring">    return a replacement string to be used."""</tt> </tt>
+<a name="L152"></a><tt class="py-lineno">152</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-23" class="py-name"><a title="sre._compile" class="py-name" href="#" onclick="return doclink('link-23', '_compile', 'link-17');">_compile</a></tt><tt class="py-op">(</tt><tt class="py-name">pattern</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-24" class="py-name" targets="Function sre.subn()=sre- [...]
+</div><a name="L153"></a><tt class="py-lineno">153</tt>  <tt class="py-line"> </tt>
+<a name="split"></a><div id="split-def"><a name="L154"></a><tt class="py-lineno">154</tt> <a class="py-toggle" href="#" id="split-toggle" onclick="return toggle('split');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="sre-module.html#split">split</a><tt class="py-op">(</tt><tt class="py-param">pattern</tt><tt class="py-op">,</tt> <tt class="py-param">string</tt><tt class="py-op">,</tt> <tt class="py-param">maxsplit</tt><tt class="py-op">=</tt><tt c [...]
+</div><div id="split-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="split-expanded"><a name="L155"></a><tt class="py-lineno">155</tt>  <tt class="py-line">    <tt class="py-docstring">"""Split the source string by the occurrences of the pattern,</tt> </tt>
+<a name="L156"></a><tt class="py-lineno">156</tt>  <tt class="py-line"><tt class="py-docstring">    returning a list containing the resulting substrings."""</tt> </tt>
+<a name="L157"></a><tt class="py-lineno">157</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-25" class="py-name"><a title="sre._compile" class="py-name" href="#" onclick="return doclink('link-25', '_compile', 'link-17');">_compile</a></tt><tt class="py-op">(</tt><tt class="py-name">pattern</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-26" class="py-name" targets="Function sre.split()=sre [...]
+</div><a name="L158"></a><tt class="py-lineno">158</tt>  <tt class="py-line"> </tt>
+<a name="findall"></a><div id="findall-def"><a name="L159"></a><tt class="py-lineno">159</tt> <a class="py-toggle" href="#" id="findall-toggle" onclick="return toggle('findall');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="sre-module.html#findall">findall</a><tt class="py-op">(</tt><tt class="py-param">pattern</tt><tt class="py-op">,</tt> <tt class="py-param">string</tt><tt class="py-op">,</tt> <tt class="py-param">flags</tt><tt class="py-op">=< [...]
+</div><div id="findall-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="findall-expanded"><a name="L160"></a><tt class="py-lineno">160</tt>  <tt class="py-line">    <tt class="py-docstring">"""Return a list of all non-overlapping matches in the string.</tt> </tt>
+<a name="L161"></a><tt class="py-lineno">161</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L162"></a><tt class="py-lineno">162</tt>  <tt class="py-line"><tt class="py-docstring">    If one or more groups are present in the pattern, return a</tt> </tt>
+<a name="L163"></a><tt class="py-lineno">163</tt>  <tt class="py-line"><tt class="py-docstring">    list of groups; this will be a list of tuples if the pattern</tt> </tt>
+<a name="L164"></a><tt class="py-lineno">164</tt>  <tt class="py-line"><tt class="py-docstring">    has more than one group.</tt> </tt>
+<a name="L165"></a><tt class="py-lineno">165</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L166"></a><tt class="py-lineno">166</tt>  <tt class="py-line"><tt class="py-docstring">    Empty matches are included in the result."""</tt> </tt>
+<a name="L167"></a><tt class="py-lineno">167</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-27" class="py-name"><a title="sre._compile" class="py-name" href="#" onclick="return doclink('link-27', '_compile', 'link-17');">_compile</a></tt><tt class="py-op">(</tt><tt class="py-name">pattern</tt><tt class="py-op">,</tt> <tt class="py-name">flags</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-28" class="py-name" targets="Function sre.findall() [...]
+</div><a name="L168"></a><tt class="py-lineno">168</tt>  <tt class="py-line"> </tt>
+<a name="L169"></a><tt class="py-lineno">169</tt>  <tt class="py-line"><tt class="py-keyword">if</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">hexversion</tt> <tt class="py-op">>=</tt> <tt class="py-number">0x02020000</tt><tt class="py-op">:</tt> </tt>
+<a name="L170"></a><tt class="py-lineno">170</tt>  <tt class="py-line">    <tt class="py-name">__all__</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">"finditer"</tt><tt class="py-op">)</tt> </tt>
+<a name="finditer"></a><div id="finditer-def"><a name="L171"></a><tt class="py-lineno">171</tt> <a class="py-toggle" href="#" id="finditer-toggle" onclick="return toggle('finditer');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="sre-module.html#finditer">finditer</a><tt class="py-op">(</tt><tt class="py-param">pattern</tt><tt class="py-op">,</tt> <tt class="py-param">string</tt><tt class="py-op">,</tt> <tt class="py-param">flags</tt><tt class= [...]
+</div><div id="finditer-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="finditer-expanded"><a name="L172"></a><tt class="py-lineno">172</tt>  <tt class="py-line">        <tt class="py-docstring">"""Return an iterator over all non-overlapping matches in the</tt> </tt>
+<a name="L173"></a><tt class="py-lineno">173</tt>  <tt class="py-line"><tt class="py-docstring">        string.  For each match, the iterator returns a match object.</tt> </tt>
+<a name="L174"></a><tt class="py-lineno">174</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L175"></a><tt class="py-lineno">175</tt>  <tt class="py-line"><tt class="py-docstring">        Empty matches are included in the result."""</tt> </tt>
+<a name="L176"></a><tt class="py-lineno">176</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-29" class="py-name"><a title="sre._compile" class="py-name" href="#" onclick="return doclink('link-29', '_compile', 'link-17');">_compile</a></tt><tt class="py-op">(</tt><tt class="py-name">pattern</tt><tt class="py-op">,</tt> <tt class="py-name">flags</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-30" class="py-name" targets="Function sre.findi [...]
+</div><a name="L177"></a><tt class="py-lineno">177</tt>  <tt class="py-line"> </tt>
+<a name="compile"></a><div id="compile-def"><a name="L178"></a><tt class="py-lineno">178</tt> <a class="py-toggle" href="#" id="compile-toggle" onclick="return toggle('compile');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="sre-module.html#compile">compile</a><tt class="py-op">(</tt><tt class="py-param">pattern</tt><tt class="py-op">,</tt> <tt class="py-param">flags</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">)</tt>< [...]
+</div><div id="compile-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="compile-expanded"><a name="L179"></a><tt class="py-lineno">179</tt>  <tt class="py-line">    <tt class="py-docstring">"Compile a regular expression pattern, returning a pattern object."</tt> </tt>
+<a name="L180"></a><tt class="py-lineno">180</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-31" class="py-name"><a title="sre._compile" class="py-name" href="#" onclick="return doclink('link-31', '_compile', 'link-17');">_compile</a></tt><tt class="py-op">(</tt><tt class="py-name">pattern</tt><tt class="py-op">,</tt> <tt class="py-name">flags</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L181"></a><tt class="py-lineno">181</tt>  <tt class="py-line"> </tt>
+<a name="purge"></a><div id="purge-def"><a name="L182"></a><tt class="py-lineno">182</tt> <a class="py-toggle" href="#" id="purge-toggle" onclick="return toggle('purge');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="sre-module.html#purge">purge</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="purge-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="purge-expanded"><a name="L183"></a><tt class="py-lineno">183</tt>  <tt class="py-line">    <tt class="py-docstring">"Clear the regular expression cache"</tt> </tt>
+<a name="L184"></a><tt class="py-lineno">184</tt>  <tt class="py-line">    <tt id="link-32" class="py-name" targets="Variable sre._cache=sre-module.html#_cache"><a title="sre._cache" class="py-name" href="#" onclick="return doclink('link-32', '_cache', 'link-32');">_cache</a></tt><tt class="py-op">.</tt><tt class="py-name">clear</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L185"></a><tt class="py-lineno">185</tt>  <tt class="py-line">    <tt id="link-33" class="py-name" targets="Variable sre._cache_repl=sre-module.html#_cache_repl"><a title="sre._cache_repl" class="py-name" href="#" onclick="return doclink('link-33', '_cache_repl', 'link-33');">_cache_repl</a></tt><tt class="py-op">.</tt><tt class="py-name">clear</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L186"></a><tt class="py-lineno">186</tt>  <tt class="py-line"> </tt>
+<a name="template"></a><div id="template-def"><a name="L187"></a><tt class="py-lineno">187</tt> <a class="py-toggle" href="#" id="template-toggle" onclick="return toggle('template');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="sre-module.html#template">template</a><tt class="py-op">(</tt><tt class="py-param">pattern</tt><tt class="py-op">,</tt> <tt class="py-param">flags</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">) [...]
+</div><div id="template-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="template-expanded"><a name="L188"></a><tt class="py-lineno">188</tt>  <tt class="py-line">    <tt class="py-docstring">"Compile a template pattern, returning a pattern object"</tt> </tt>
+<a name="L189"></a><tt class="py-lineno">189</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-34" class="py-name"><a title="sre._compile" class="py-name" href="#" onclick="return doclink('link-34', '_compile', 'link-17');">_compile</a></tt><tt class="py-op">(</tt><tt class="py-name">pattern</tt><tt class="py-op">,</tt> <tt class="py-name">flags</tt><tt class="py-op">|</tt><tt id="link-35" class="py-name"><a title="sre.T" class="py-name" href="#" onclick="retu [...]
+</div><a name="L190"></a><tt class="py-lineno">190</tt>  <tt class="py-line"> </tt>
+<a name="escape"></a><div id="escape-def"><a name="L191"></a><tt class="py-lineno">191</tt> <a class="py-toggle" href="#" id="escape-toggle" onclick="return toggle('escape');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="sre-module.html#escape">escape</a><tt class="py-op">(</tt><tt class="py-param">pattern</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="escape-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="escape-expanded"><a name="L192"></a><tt class="py-lineno">192</tt>  <tt class="py-line">    <tt class="py-docstring">"Escape all non-alphanumeric characters in pattern."</tt> </tt>
+<a name="L193"></a><tt class="py-lineno">193</tt>  <tt class="py-line">    <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">pattern</tt><tt class="py-op">)</tt> </tt>
+<a name="L194"></a><tt class="py-lineno">194</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">pattern</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L195"></a><tt class="py-lineno">195</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt class="py-name">pattern</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt> </tt>
+<a name="L196"></a><tt class="py-lineno">196</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-op">(</tt><tt class="py-string">"a"</tt> <tt class="py-op"><=</tt> <tt class="py-name">c</tt> <tt class="py-op"><=</tt> <tt class="py-string">"z"</tt> <tt class="py-keyword">or</tt> <tt class="py-string">"A"</tt> <tt class="py-op"><=</tt> <tt class="py-name">c</tt> <tt class="py-op"><=</tt> <tt class="py-string">"Z"</tt> < [...]
+<a name="L197"></a><tt class="py-lineno">197</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">c</tt> <tt class="py-op">==</tt> <tt class="py-string">"\000"</tt><tt class="py-op">:</tt> </tt>
+<a name="L198"></a><tt class="py-lineno">198</tt>  <tt class="py-line">                <tt class="py-name">s</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">"\\000"</tt> </tt>
+<a name="L199"></a><tt class="py-lineno">199</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L200"></a><tt class="py-lineno">200</tt>  <tt class="py-line">                <tt class="py-name">s</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">"\\"</tt> <tt class="py-op">+</tt> <tt class="py-name">c</tt> </tt>
+<a name="L201"></a><tt class="py-lineno">201</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">pattern</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L202"></a><tt class="py-lineno">202</tt>  <tt class="py-line"> </tt>
+<a name="L203"></a><tt class="py-lineno">203</tt>  <tt class="py-line"><tt class="py-comment"># --------------------------------------------------------------------</tt> </tt>
+<a name="L204"></a><tt class="py-lineno">204</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># internals</tt> </tt>
+<a name="L205"></a><tt class="py-lineno">205</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L206"></a><tt class="py-lineno">206</tt>  <tt class="py-line"><tt id="link-36" class="py-name"><a title="sre._cache" class="py-name" href="#" onclick="return doclink('link-36', '_cache', 'link-32');">_cache</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L207"></a><tt class="py-lineno">207</tt>  <tt class="py-line"><tt id="link-37" class="py-name"><a title="sre._cache_repl" class="py-name" href="#" onclick="return doclink('link-37', '_cache_repl', 'link-33');">_cache_repl</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L208"></a><tt class="py-lineno">208</tt>  <tt class="py-line"> </tt>
+<a name="L209"></a><tt class="py-lineno">209</tt>  <tt class="py-line"><tt class="py-name">_pattern_type</tt> <tt class="py-op">=</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">sre_compile</tt><tt class="py-op">.</tt><tt id="link-38" class="py-name" targets="Function sre.compile()=sre-module.html#compile"><a title="sre.compile" class="py-name" href="#" onclick="return doclink('link-38', 'compile', 'link-38');">compile</a></tt><tt class="py-op">(</tt><tt cla [...]
+<a name="L210"></a><tt class="py-lineno">210</tt>  <tt class="py-line"> </tt>
+<a name="L211"></a><tt class="py-lineno">211</tt>  <tt class="py-line"><tt id="link-39" class="py-name" targets="Variable sre._MAXCACHE=sre-module.html#_MAXCACHE"><a title="sre._MAXCACHE" class="py-name" href="#" onclick="return doclink('link-39', '_MAXCACHE', 'link-39');">_MAXCACHE</a></tt> <tt class="py-op">=</tt> <tt class="py-number">100</tt> </tt>
+<a name="L212"></a><tt class="py-lineno">212</tt>  <tt class="py-line"> </tt>
+<a name="_compile"></a><div id="_compile-def"><a name="L213"></a><tt class="py-lineno">213</tt> <a class="py-toggle" href="#" id="_compile-toggle" onclick="return toggle('_compile');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="sre-module.html#_compile">_compile</a><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-param">key</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_compile-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_compile-expanded"><a name="L214"></a><tt class="py-lineno">214</tt>  <tt class="py-line">    <tt class="py-comment"># internal: compile pattern</tt> </tt>
+<a name="L215"></a><tt class="py-lineno">215</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">cachekey</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">,</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-name">key</tt> </tt>
+<a name="L216"></a><tt class="py-lineno">216</tt>  <tt class="py-line">    <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt id="link-40" class="py-name"><a title="sre._cache" class="py-name" href="#" onclick="return doclink('link-40', '_cache', 'link-32');">_cache</a></tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-name">cachekey</tt><tt class="py-op">)</tt> </tt>
+<a name="L217"></a><tt class="py-lineno">217</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">p</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L218"></a><tt class="py-lineno">218</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">p</tt> </tt>
+<a name="L219"></a><tt class="py-lineno">219</tt>  <tt class="py-line">    <tt class="py-name">pattern</tt><tt class="py-op">,</tt> <tt class="py-name">flags</tt> <tt class="py-op">=</tt> <tt class="py-name">key</tt> </tt>
+<a name="L220"></a><tt class="py-lineno">220</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">pattern</tt><tt class="py-op">,</tt> <tt class="py-name">_pattern_type</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L221"></a><tt class="py-lineno">221</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">pattern</tt> </tt>
+<a name="L222"></a><tt class="py-lineno">222</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">sre_compile</tt><tt class="py-op">.</tt><tt class="py-name">isstring</tt><tt class="py-op">(</tt><tt class="py-name">pattern</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L223"></a><tt class="py-lineno">223</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">TypeError</tt><tt class="py-op">,</tt> <tt class="py-string">"first argument must be string or compiled pattern"</tt> </tt>
+<a name="L224"></a><tt class="py-lineno">224</tt>  <tt class="py-line">    <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L225"></a><tt class="py-lineno">225</tt>  <tt class="py-line">        <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt class="py-name">sre_compile</tt><tt class="py-op">.</tt><tt id="link-41" class="py-name"><a title="sre.compile" class="py-name" href="#" onclick="return doclink('link-41', 'compile', 'link-38');">compile</a></tt><tt class="py-op">(</tt><tt class="py-name">pattern</tt><tt class="py-op">,</tt> <tt class="py-name">flags</tt><tt class="py-op">)</tt> </tt>
+<a name="L226"></a><tt class="py-lineno">226</tt>  <tt class="py-line">    <tt class="py-keyword">except</tt> <tt id="link-42" class="py-name"><a title="sre_constants.error" class="py-name" href="#" onclick="return doclink('link-42', 'error', 'link-15');">error</a></tt><tt class="py-op">,</tt> <tt class="py-name">v</tt><tt class="py-op">:</tt> </tt>
+<a name="L227"></a><tt class="py-lineno">227</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt id="link-43" class="py-name"><a title="sre_constants.error" class="py-name" href="#" onclick="return doclink('link-43', 'error', 'link-15');">error</a></tt><tt class="py-op">,</tt> <tt class="py-name">v</tt> <tt class="py-comment"># invalid expression</tt> </tt>
+<a name="L228"></a><tt class="py-lineno">228</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-44" class="py-name"><a title="sre._cache" class="py-name" href="#" onclick="return doclink('link-44', '_cache', 'link-32');">_cache</a></tt><tt class="py-op">)</tt> <tt class="py-op">>=</tt> <tt id="link-45" class="py-name"><a title="sre._MAXCACHE" class="py-name" href="#" onclick="return doclink('link-45', '_MAXCACH [...]
+<a name="L229"></a><tt class="py-lineno">229</tt>  <tt class="py-line">        <tt id="link-46" class="py-name"><a title="sre._cache" class="py-name" href="#" onclick="return doclink('link-46', '_cache', 'link-32');">_cache</a></tt><tt class="py-op">.</tt><tt class="py-name">clear</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L230"></a><tt class="py-lineno">230</tt>  <tt class="py-line">    <tt id="link-47" class="py-name"><a title="sre._cache" class="py-name" href="#" onclick="return doclink('link-47', '_cache', 'link-32');">_cache</a></tt><tt class="py-op">[</tt><tt class="py-name">cachekey</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt> </tt>
+<a name="L231"></a><tt class="py-lineno">231</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">p</tt> </tt>
+</div><a name="L232"></a><tt class="py-lineno">232</tt>  <tt class="py-line"> </tt>
+<a name="_compile_repl"></a><div id="_compile_repl-def"><a name="L233"></a><tt class="py-lineno">233</tt> <a class="py-toggle" href="#" id="_compile_repl-toggle" onclick="return toggle('_compile_repl');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="sre-module.html#_compile_repl">_compile_repl</a><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-param">key</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_compile_repl-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_compile_repl-expanded"><a name="L234"></a><tt class="py-lineno">234</tt>  <tt class="py-line">    <tt class="py-comment"># internal: compile replacement pattern</tt> </tt>
+<a name="L235"></a><tt class="py-lineno">235</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt id="link-48" class="py-name"><a title="sre._cache_repl" class="py-name" href="#" onclick="return doclink('link-48', '_cache_repl', 'link-33');">_cache_repl</a></tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">)</tt> </tt>
+<a name="L236"></a><tt class="py-lineno">236</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">p</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L237"></a><tt class="py-lineno">237</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">p</tt> </tt>
+<a name="L238"></a><tt class="py-lineno">238</tt>  <tt class="py-line">    <tt class="py-name">repl</tt><tt class="py-op">,</tt> <tt class="py-name">pattern</tt> <tt class="py-op">=</tt> <tt class="py-name">key</tt> </tt>
+<a name="L239"></a><tt class="py-lineno">239</tt>  <tt class="py-line">    <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L240"></a><tt class="py-lineno">240</tt>  <tt class="py-line">        <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt class="py-name">sre_parse</tt><tt class="py-op">.</tt><tt class="py-name">parse_template</tt><tt class="py-op">(</tt><tt class="py-name">repl</tt><tt class="py-op">,</tt> <tt class="py-name">pattern</tt><tt class="py-op">)</tt> </tt>
+<a name="L241"></a><tt class="py-lineno">241</tt>  <tt class="py-line">    <tt class="py-keyword">except</tt> <tt id="link-49" class="py-name"><a title="sre_constants.error" class="py-name" href="#" onclick="return doclink('link-49', 'error', 'link-15');">error</a></tt><tt class="py-op">,</tt> <tt class="py-name">v</tt><tt class="py-op">:</tt> </tt>
+<a name="L242"></a><tt class="py-lineno">242</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt id="link-50" class="py-name"><a title="sre_constants.error" class="py-name" href="#" onclick="return doclink('link-50', 'error', 'link-15');">error</a></tt><tt class="py-op">,</tt> <tt class="py-name">v</tt> <tt class="py-comment"># invalid expression</tt> </tt>
+<a name="L243"></a><tt class="py-lineno">243</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-51" class="py-name"><a title="sre._cache_repl" class="py-name" href="#" onclick="return doclink('link-51', '_cache_repl', 'link-33');">_cache_repl</a></tt><tt class="py-op">)</tt> <tt class="py-op">>=</tt> <tt id="link-52" class="py-name"><a title="sre._MAXCACHE" class="py-name" href="#" onclick="return doclink('link [...]
+<a name="L244"></a><tt class="py-lineno">244</tt>  <tt class="py-line">        <tt id="link-53" class="py-name"><a title="sre._cache_repl" class="py-name" href="#" onclick="return doclink('link-53', '_cache_repl', 'link-33');">_cache_repl</a></tt><tt class="py-op">.</tt><tt class="py-name">clear</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L245"></a><tt class="py-lineno">245</tt>  <tt class="py-line">    <tt id="link-54" class="py-name"><a title="sre._cache_repl" class="py-name" href="#" onclick="return doclink('link-54', '_cache_repl', 'link-33');">_cache_repl</a></tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt> </tt>
+<a name="L246"></a><tt class="py-lineno">246</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">p</tt> </tt>
+</div><a name="L247"></a><tt class="py-lineno">247</tt>  <tt class="py-line"> </tt>
+<a name="_expand"></a><div id="_expand-def"><a name="L248"></a><tt class="py-lineno">248</tt> <a class="py-toggle" href="#" id="_expand-toggle" onclick="return toggle('_expand');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="sre-module.html#_expand">_expand</a><tt class="py-op">(</tt><tt class="py-param">pattern</tt><tt class="py-op">,</tt> <tt class="py-param">match</tt><tt class="py-op">,</tt> <tt class="py-param">template</tt><tt class="py-op"> [...]
+</div><div id="_expand-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_expand-expanded"><a name="L249"></a><tt class="py-lineno">249</tt>  <tt class="py-line">    <tt class="py-comment"># internal: match.expand implementation hook</tt> </tt>
+<a name="L250"></a><tt class="py-lineno">250</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-55" class="py-name" targets="Function sre.template()=sre-module.html#template"><a title="sre.template" class="py-name" href="#" onclick="return doclink('link-55', 'template', 'link-55');">template</a></tt> <tt class="py-op">=</tt> <tt class="py-name">sre_parse</tt><tt class="py-op">.</tt><tt class="py-name">parse_template</tt><tt class="py-op">(</tt><tt id="link-56" class=" [...]
+<a name="L251"></a><tt class="py-lineno">251</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">sre_parse</tt><tt class="py-op">.</tt><tt class="py-name">expand_template</tt><tt class="py-op">(</tt><tt id="link-57" class="py-name"><a title="sre.template" class="py-name" href="#" onclick="return doclink('link-57', 'template', 'link-55');">template</a></tt><tt class="py-op">,</tt> <tt id="link-58" class="py-name"><a title="sre.match" class="py-name" href=" [...]
+</div><a name="L252"></a><tt class="py-lineno">252</tt>  <tt class="py-line"> </tt>
+<a name="_subx"></a><div id="_subx-def"><a name="L253"></a><tt class="py-lineno">253</tt> <a class="py-toggle" href="#" id="_subx-toggle" onclick="return toggle('_subx');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="sre-module.html#_subx">_subx</a><tt class="py-op">(</tt><tt class="py-param">pattern</tt><tt class="py-op">,</tt> <tt class="py-param">template</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_subx-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_subx-expanded"><a name="L254"></a><tt class="py-lineno">254</tt>  <tt class="py-line">    <tt class="py-comment"># internal: pattern.sub/subn implementation helper</tt> </tt>
+<a name="L255"></a><tt class="py-lineno">255</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-59" class="py-name"><a title="sre.template" class="py-name" href="#" onclick="return doclink('link-59', 'template', 'link-55');">template</a></tt> <tt class="py-op">=</tt> <tt id="link-60" class="py-name" targets="Function sre._compile_repl()=sre-module.html#_compile_repl"><a title="sre._compile_repl" class="py-name" href="#" onclick="return doclink('link-60', '_compile_rep [...]
+<a name="L256"></a><tt class="py-lineno">256</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-62" class="py-name"><a title="sre.template" class="py-name" href="#" onclick="return doclink('link-62', 'template', 'link-55');">template</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-keyword">and</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-63" class="py-name">< [...]
+<a name="L257"></a><tt class="py-lineno">257</tt>  <tt class="py-line">        <tt class="py-comment"># literal replacement</tt> </tt>
+<a name="L258"></a><tt class="py-lineno">258</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">return</tt> <tt id="link-64" class="py-name"><a title="sre.template" class="py-name" href="#" onclick="return doclink('link-64', 'template', 'link-55');">template</a></tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L259"></a><tt class="py-lineno">259</tt>  <tt class="py-line">    <tt class="py-keyword">def</tt> <tt class="py-def-name">filter</tt><tt class="py-op">(</tt><tt class="py-param">match</tt><tt class="py-op">,</tt> <tt class="py-param">template</tt><tt class="py-op">=</tt><tt id="link-65" class="py-name"><a title="sre.template" class="py-name" href="#" onclick="return doclink('link-65', 'template', 'link-55');">template</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L260"></a><tt class="py-lineno">260</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">sre_parse</tt><tt class="py-op">.</tt><tt class="py-name">expand_template</tt><tt class="py-op">(</tt><tt id="link-66" class="py-name"><a title="sre.template" class="py-name" href="#" onclick="return doclink('link-66', 'template', 'link-55');">template</a></tt><tt class="py-op">,</tt> <tt id="link-67" class="py-name"><a title="sre.match" class="py-name" hr [...]
+</div><a name="L261"></a><tt class="py-lineno">261</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">filter</tt> </tt>
+</div><a name="L262"></a><tt class="py-lineno">262</tt>  <tt class="py-line"> </tt>
+<a name="L263"></a><tt class="py-lineno">263</tt>  <tt class="py-line"><tt class="py-comment"># register myself for pickling</tt> </tt>
+<a name="L264"></a><tt class="py-lineno">264</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L265"></a><tt class="py-lineno">265</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">copy_reg</tt> </tt>
+<a name="L266"></a><tt class="py-lineno">266</tt>  <tt class="py-line"> </tt>
+<a name="_pickle"></a><div id="_pickle-def"><a name="L267"></a><tt class="py-lineno">267</tt> <a class="py-toggle" href="#" id="_pickle-toggle" onclick="return toggle('_pickle');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="sre-module.html#_pickle">_pickle</a><tt class="py-op">(</tt><tt class="py-param">p</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_pickle-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_pickle-expanded"><a name="L268"></a><tt class="py-lineno">268</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-68" class="py-name"><a title="sre._compile" class="py-name" href="#" onclick="return doclink('link-68', '_compile', 'link-17');">_compile</a></tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class=" [...]
+</div><a name="L269"></a><tt class="py-lineno">269</tt>  <tt class="py-line"> </tt>
+<a name="L270"></a><tt class="py-lineno">270</tt>  <tt class="py-line"><tt class="py-name">copy_reg</tt><tt class="py-op">.</tt><tt class="py-name">pickle</tt><tt class="py-op">(</tt><tt class="py-name">_pattern_type</tt><tt class="py-op">,</tt> <tt id="link-69" class="py-name" targets="Function sre._pickle()=sre-module.html#_pickle"><a title="sre._pickle" class="py-name" href="#" onclick="return doclink('link-69', '_pickle', 'link-69');">_pickle</a></tt><tt class="py-op">,</tt> <tt id=" [...]
+<a name="L271"></a><tt class="py-lineno">271</tt>  <tt class="py-line"> </tt>
+<a name="L272"></a><tt class="py-lineno">272</tt>  <tt class="py-line"><tt class="py-comment"># --------------------------------------------------------------------</tt> </tt>
+<a name="L273"></a><tt class="py-lineno">273</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># experimental stuff (see python-dev discussions for details)</tt> </tt>
+<a name="L274"></a><tt class="py-lineno">274</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="Scanner"></a><div id="Scanner-def"><a name="L275"></a><tt class="py-lineno">275</tt> <a class="py-toggle" href="#" id="Scanner-toggle" onclick="return toggle('Scanner');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="sre.Scanner-class.html">Scanner</a><tt class="py-op">:</tt> </tt>
+</div><div id="Scanner-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="Scanner-expanded"><a name="Scanner.__init__"></a><div id="Scanner.__init__-def"><a name="L276"></a><tt class="py-lineno">276</tt> <a class="py-toggle" href="#" id="Scanner.__init__-toggle" onclick="return toggle('Scanner.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="sre.Scanner-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt  [...]
+</div><div id="Scanner.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Scanner.__init__-expanded"><a name="L277"></a><tt class="py-lineno">277</tt>  <tt class="py-line">        <tt class="py-keyword">from</tt> <tt class="py-name">sre_constants</tt> <tt class="py-keyword">import</tt> <tt class="py-name">BRANCH</tt><tt class="py-op">,</tt> <tt class="py-name">SUBPATTERN</tt> </tt>
+<a name="L278"></a><tt class="py-lineno">278</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lexicon</tt> <tt class="py-op">=</tt> <tt class="py-name">lexicon</tt> </tt>
+<a name="L279"></a><tt class="py-lineno">279</tt>  <tt class="py-line">        <tt class="py-comment"># combine phrases into a compound pattern</tt> </tt>
+<a name="L280"></a><tt class="py-lineno">280</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L281"></a><tt class="py-lineno">281</tt>  <tt class="py-line">        <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">sre_parse</tt><tt class="py-op">.</tt><tt class="py-name">Pattern</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L282"></a><tt class="py-lineno">282</tt>  <tt class="py-line">        <tt class="py-name">s</tt><tt class="py-op">.</tt><tt class="py-name">flags</tt> <tt class="py-op">=</tt> <tt class="py-name">flags</tt> </tt>
+<a name="L283"></a><tt class="py-lineno">283</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">phrase</tt><tt class="py-op">,</tt> <tt class="py-name">action</tt> <tt class="py-keyword">in</tt> <tt class="py-name">lexicon</tt><tt class="py-op">:</tt> </tt>
+<a name="L284"></a><tt class="py-lineno">284</tt>  <tt class="py-line">            <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">sre_parse</tt><tt class="py-op">.</tt><tt class="py-name">SubPattern</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt> </tt>
+<a name="L285"></a><tt class="py-lineno">285</tt>  <tt class="py-line">                <tt class="py-op">(</tt><tt class="py-name">SUBPATTERN</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">)</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-name">sre_parse</tt><tt class="py-op">.</tt><tt class="py-name">parse</tt><tt class="py-op">(</tt><tt cl [...]
+<a name="L286"></a><tt class="py-lineno">286</tt>  <tt class="py-line">                <tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L287"></a><tt class="py-lineno">287</tt>  <tt class="py-line">        <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt class="py-name">sre_parse</tt><tt class="py-op">.</tt><tt class="py-name">SubPattern</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-name">BRANCH</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class=" [...]
+<a name="L288"></a><tt class="py-lineno">288</tt>  <tt class="py-line">        <tt class="py-name">s</tt><tt class="py-op">.</tt><tt class="py-name">groups</tt> <tt class="py-op">=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">)</tt> </tt>
+<a name="L289"></a><tt class="py-lineno">289</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">scanner</tt> <tt class="py-op">=</tt> <tt class="py-name">sre_compile</tt><tt class="py-op">.</tt><tt id="link-71" class="py-name"><a title="sre.compile" class="py-name" href="#" onclick="return doclink('link-71', 'compile', 'link-38');">compile</a></tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">)</tt> </tt>
+</div><a name="Scanner.scan"></a><div id="Scanner.scan-def"><a name="L290"></a><tt class="py-lineno">290</tt> <a class="py-toggle" href="#" id="Scanner.scan-toggle" onclick="return toggle('Scanner.scan');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="sre.Scanner-class.html#scan">scan</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">string</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Scanner.scan-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Scanner.scan-expanded"><a name="L291"></a><tt class="py-lineno">291</tt>  <tt class="py-line">        <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L292"></a><tt class="py-lineno">292</tt>  <tt class="py-line">        <tt class="py-name">append</tt> <tt class="py-op">=</tt> <tt class="py-name">result</tt><tt class="py-op">.</tt><tt class="py-name">append</tt> </tt>
+<a name="L293"></a><tt class="py-lineno">293</tt>  <tt class="py-line">        <tt id="link-72" class="py-name"><a title="sre.match" class="py-name" href="#" onclick="return doclink('link-72', 'match', 'link-18');">match</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">scanner</tt><tt class="py-op">.</tt><tt class="py-name">scanner</tt><tt class="py-op">(</tt><tt class="py-name">string</tt><tt class="py-op">)</tt><tt class="py-op" [...]
+<a name="L294"></a><tt class="py-lineno">294</tt>  <tt class="py-line">        <tt class="py-name">i</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L295"></a><tt class="py-lineno">295</tt>  <tt class="py-line">        <tt class="py-keyword">while</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L296"></a><tt class="py-lineno">296</tt>  <tt class="py-line">            <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt id="link-74" class="py-name"><a title="sre.match" class="py-name" href="#" onclick="return doclink('link-74', 'match', 'link-18');">match</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L297"></a><tt class="py-lineno">297</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">m</tt><tt class="py-op">:</tt> </tt>
+<a name="L298"></a><tt class="py-lineno">298</tt>  <tt class="py-line">                <tt class="py-keyword">break</tt> </tt>
+<a name="L299"></a><tt class="py-lineno">299</tt>  <tt class="py-line">            <tt class="py-name">j</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt class="py-name">end</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L300"></a><tt class="py-lineno">300</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">i</tt> <tt class="py-op">==</tt> <tt class="py-name">j</tt><tt class="py-op">:</tt> </tt>
+<a name="L301"></a><tt class="py-lineno">301</tt>  <tt class="py-line">                <tt class="py-keyword">break</tt> </tt>
+<a name="L302"></a><tt class="py-lineno">302</tt>  <tt class="py-line">            <tt class="py-name">action</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lexicon</tt><tt class="py-op">[</tt><tt class="py-name">m</tt><tt class="py-op">.</tt><tt class="py-name">lastindex</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L303"></a><tt class="py-lineno">303</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">callable</tt><tt class="py-op">(</tt><tt class="py-name">action</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L304"></a><tt class="py-lineno">304</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-75" class="py-name"><a title="sre.match" class="py-name" href="#" onclick="return doclink('link-75', 'match', 'link-18');">match</a></tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt> </tt>
+<a name="L305"></a><tt class="py-lineno">305</tt>  <tt class="py-line">                <tt class="py-name">action</tt> <tt class="py-op">=</tt> <tt class="py-name">action</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt class="py-name">group</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L306"></a><tt class="py-lineno">306</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">action</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L307"></a><tt class="py-lineno">307</tt>  <tt class="py-line">                <tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">action</tt><tt class="py-op">)</tt> </tt>
+<a name="L308"></a><tt class="py-lineno">308</tt>  <tt class="py-line">            <tt class="py-name">i</tt> <tt class="py-op">=</tt> <tt class="py-name">j</tt> </tt>
+<a name="L309"></a><tt class="py-lineno">309</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">result</tt><tt class="py-op">,</tt> <tt class="py-name">string</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt>
+</div></div><a name="L310"></a><tt class="py-lineno">310</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epytext_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0.1 on Wed Jan 30 14:10:07 2008
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/examples/sre.Scanner-class.html b/doc/examples/sre.Scanner-class.html
new file mode 100644
index 0000000..d1b163a
--- /dev/null
+++ b/doc/examples/sre.Scanner-class.html
@@ -0,0 +1,167 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>sre.Scanner</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epytext_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="sre-module.html">Module sre</a> ::
+        Class Scanner
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="sre.Scanner-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Scanner</h1><p class="nomargin-top"><span class="codelink"><a href="sre-pysrc.html#Scanner">source code</a></span></p>
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__init__"></a><span class="summary-sig-name">__init__</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">lexicon</span>,
+        <span class="summary-sig-arg">flags</span>=<span class="summary-sig-default">0</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="sre-pysrc.html#Scanner.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="scan"></a><span class="summary-sig-name">scan</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">string</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="sre-pysrc.html#Scanner.scan">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epytext_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0.1 on Wed Jan 30 14:10:06 2008
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/examples/sre_constants.error-class.html b/doc/examples/sre_constants.error-class.html
new file mode 100644
index 0000000..b469b30
--- /dev/null
+++ b/doc/examples/sre_constants.error-class.html
@@ -0,0 +1,149 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>sre_constants.error</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epytext_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        sre_constants ::
+        error ::
+        Class error
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="sre_constants.error-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class error</h1><p class="nomargin-top"></p>
+<pre class="base-tree">
+exceptions.Exception --+
+                       |
+                      <strong class="uidshort">error</strong>
+</pre>
+
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.Exception</code></b>:
+      <code>__getitem__</code>,
+      <code>__init__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epytext_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0.1 on Wed Jan 30 14:10:06 2008
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/examples/term-index.html b/doc/examples/term-index.html
new file mode 100644
index 0000000..19743ee
--- /dev/null
+++ b/doc/examples/term-index.html
@@ -0,0 +1,159 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Term Definition Index</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epytext_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >   Indices   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%"> </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="term-index.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<center><b>[
+ <a href="identifier-index.html">Identifiers</a>
+| <a href="term-index.html">Term Definitions</a>
+]</b></center><br />
+<table border="0" width="100%">
+<tr valign="bottom"><td>
+<h1 class="epydoc">Term Definition Index</h1>
+</td><td>
+[
+  A
+  B
+  C
+  D
+  E
+  F
+  G
+  H
+  I
+  J
+  K
+  L
+  M
+  N
+  O
+  P
+  Q
+  R
+  S
+  T
+  U
+  V
+  W
+ <a href="#X">X</a>
+  Y
+  Z
+  _
+]
+</td></table>
+<table border="0" width="100%">
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="X">X</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="epytext_example-module.html#index-x_intercept">x intercept</a><br />
+<span class="index-where">(in <a href="epytext_example-module.html#x_intercept">x_intercept</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+<td width="33%" class="link-index"> </td>
+</tr>
+<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
+</table>
+</td></tr>
+</table>
+<br /><br /><!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="epytext_example-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >   Indices   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0.1 on Wed Jan 30 14:10:06 2008
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/examples/toc-epytext_example-module.html b/doc/examples/toc-epytext_example-module.html
new file mode 100644
index 0000000..fc97ce3
--- /dev/null
+++ b/doc/examples/toc-epytext_example-module.html
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>epytext_example</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module epytext_example</h1>
+<hr />
+  <h2 class="toc">Functions</h2>
+    <a target="mainFrame" href="epytext_example-module.html#x_intercept"
+     >x_intercept</a><br />    <a target="mainFrame" href="epytext_example-module.html#z_transform"
+     >z_transform</a><br /><hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/examples/toc-everything.html b/doc/examples/toc-everything.html
new file mode 100644
index 0000000..0933a25
--- /dev/null
+++ b/doc/examples/toc-everything.html
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Everything</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Everything</h1>
+<hr />
+  <h2 class="toc">All Classes</h2>
+  <div class="private">
+    <a target="mainFrame" href="sre.Scanner-class.html"
+     >sre.Scanner</a><br />  </div>
+    <a target="mainFrame" href="sre_constants.error-class.html"
+     >sre_constants.error</a><br />  <h2 class="toc">All Functions</h2>
+    <a target="mainFrame" href="epytext_example-module.html#x_intercept"
+     >epytext_example.x_intercept</a><br />    <a target="mainFrame" href="epytext_example-module.html#z_transform"
+     >epytext_example.z_transform</a><br />  <div class="private">
+    <a target="mainFrame" href="sre-module.html#_compile"
+     >sre._compile</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="sre-module.html#_compile_repl"
+     >sre._compile_repl</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="sre-module.html#_expand"
+     >sre._expand</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="sre-module.html#_pickle"
+     >sre._pickle</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="sre-module.html#_subx"
+     >sre._subx</a><br />  </div>
+    <a target="mainFrame" href="sre-module.html#compile"
+     >sre.compile</a><br />    <a target="mainFrame" href="sre-module.html#escape"
+     >sre.escape</a><br />    <a target="mainFrame" href="sre-module.html#findall"
+     >sre.findall</a><br />    <a target="mainFrame" href="sre-module.html#finditer"
+     >sre.finditer</a><br />    <a target="mainFrame" href="sre-module.html#match"
+     >sre.match</a><br />    <a target="mainFrame" href="sre-module.html#purge"
+     >sre.purge</a><br />    <a target="mainFrame" href="sre-module.html#search"
+     >sre.search</a><br />    <a target="mainFrame" href="sre-module.html#split"
+     >sre.split</a><br />    <a target="mainFrame" href="sre-module.html#sub"
+     >sre.sub</a><br />    <a target="mainFrame" href="sre-module.html#subn"
+     >sre.subn</a><br />    <a target="mainFrame" href="sre-module.html#template"
+     >sre.template</a><br />  <h2 class="toc">All Variables</h2>
+  <div class="private">
+    <a target="mainFrame" href="sre-module.html#DEBUG"
+     >sre.DEBUG</a><br />  </div>
+    <a target="mainFrame" href="sre-module.html#DOTALL"
+     >sre.DOTALL</a><br />    <a target="mainFrame" href="sre-module.html#I"
+     >sre.I</a><br />    <a target="mainFrame" href="sre-module.html#IGNORECASE"
+     >sre.IGNORECASE</a><br />    <a target="mainFrame" href="sre-module.html#L"
+     >sre.L</a><br />    <a target="mainFrame" href="sre-module.html#LOCALE"
+     >sre.LOCALE</a><br />    <a target="mainFrame" href="sre-module.html#M"
+     >sre.M</a><br />    <a target="mainFrame" href="sre-module.html#MULTILINE"
+     >sre.MULTILINE</a><br />    <a target="mainFrame" href="sre-module.html#S"
+     >sre.S</a><br />  <div class="private">
+    <a target="mainFrame" href="sre-module.html#T"
+     >sre.T</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="sre-module.html#TEMPLATE"
+     >sre.TEMPLATE</a><br />  </div>
+    <a target="mainFrame" href="sre-module.html#U"
+     >sre.U</a><br />    <a target="mainFrame" href="sre-module.html#UNICODE"
+     >sre.UNICODE</a><br />    <a target="mainFrame" href="sre-module.html#VERBOSE"
+     >sre.VERBOSE</a><br />    <a target="mainFrame" href="sre-module.html#X"
+     >sre.X</a><br />  <div class="private">
+    <a target="mainFrame" href="sre-module.html#_MAXCACHE"
+     >sre._MAXCACHE</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="sre-module.html#_cache"
+     >sre._cache</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="sre-module.html#_cache_repl"
+     >sre._cache_repl</a><br />  </div>
+<hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/examples/toc-sre-module.html b/doc/examples/toc-sre-module.html
new file mode 100644
index 0000000..34c7b2b
--- /dev/null
+++ b/doc/examples/toc-sre-module.html
@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>sre</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module sre</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+  <div class="private">
+    <a target="mainFrame" href="sre.Scanner-class.html"
+     >Scanner</a><br />  </div>
+    <a target="mainFrame" href="sre_constants.error-class.html"
+     >error</a><br />  <h2 class="toc">Functions</h2>
+  <div class="private">
+    <a target="mainFrame" href="sre-module.html#_compile"
+     >_compile</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="sre-module.html#_compile_repl"
+     >_compile_repl</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="sre-module.html#_expand"
+     >_expand</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="sre-module.html#_pickle"
+     >_pickle</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="sre-module.html#_subx"
+     >_subx</a><br />  </div>
+    <a target="mainFrame" href="sre-module.html#compile"
+     >compile</a><br />    <a target="mainFrame" href="sre-module.html#escape"
+     >escape</a><br />    <a target="mainFrame" href="sre-module.html#findall"
+     >findall</a><br />    <a target="mainFrame" href="sre-module.html#finditer"
+     >finditer</a><br />    <a target="mainFrame" href="sre-module.html#match"
+     >match</a><br />    <a target="mainFrame" href="sre-module.html#purge"
+     >purge</a><br />    <a target="mainFrame" href="sre-module.html#search"
+     >search</a><br />    <a target="mainFrame" href="sre-module.html#split"
+     >split</a><br />    <a target="mainFrame" href="sre-module.html#sub"
+     >sub</a><br />    <a target="mainFrame" href="sre-module.html#subn"
+     >subn</a><br />    <a target="mainFrame" href="sre-module.html#template"
+     >template</a><br />  <h2 class="toc">Variables</h2>
+  <div class="private">
+    <a target="mainFrame" href="sre-module.html#DEBUG"
+     >DEBUG</a><br />  </div>
+    <a target="mainFrame" href="sre-module.html#DOTALL"
+     >DOTALL</a><br />    <a target="mainFrame" href="sre-module.html#I"
+     >I</a><br />    <a target="mainFrame" href="sre-module.html#IGNORECASE"
+     >IGNORECASE</a><br />    <a target="mainFrame" href="sre-module.html#L"
+     >L</a><br />    <a target="mainFrame" href="sre-module.html#LOCALE"
+     >LOCALE</a><br />    <a target="mainFrame" href="sre-module.html#M"
+     >M</a><br />    <a target="mainFrame" href="sre-module.html#MULTILINE"
+     >MULTILINE</a><br />    <a target="mainFrame" href="sre-module.html#S"
+     >S</a><br />  <div class="private">
+    <a target="mainFrame" href="sre-module.html#T"
+     >T</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="sre-module.html#TEMPLATE"
+     >TEMPLATE</a><br />  </div>
+    <a target="mainFrame" href="sre-module.html#U"
+     >U</a><br />    <a target="mainFrame" href="sre-module.html#UNICODE"
+     >UNICODE</a><br />    <a target="mainFrame" href="sre-module.html#VERBOSE"
+     >VERBOSE</a><br />    <a target="mainFrame" href="sre-module.html#X"
+     >X</a><br />  <div class="private">
+    <a target="mainFrame" href="sre-module.html#_MAXCACHE"
+     >_MAXCACHE</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="sre-module.html#_cache"
+     >_cache</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="sre-module.html#_cache_repl"
+     >_cache_repl</a><br />  </div>
+<hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/examples/toc.html b/doc/examples/toc.html
new file mode 100644
index 0000000..65d48d8
--- /dev/null
+++ b/doc/examples/toc.html
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Table of Contents</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Table of Contents</h1>
+<hr />
+  <a target="moduleFrame" href="toc-everything.html">Everything</a>
+  <br />
+  <h2 class="toc">Modules</h2>
+    <a target="moduleFrame" href="toc-epytext_example-module.html"
+     onclick="setFrame('toc-epytext_example-module.html','epytext_example-module.html');"     >epytext_example</a><br />    <a target="moduleFrame" href="toc-sre-module.html"
+     onclick="setFrame('toc-sre-module.html','sre-module.html');"     >sre</a><br /><hr />
+  <span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/doc/faq.html b/doc/faq.html
new file mode 100644
index 0000000..adc9fb4
--- /dev/null
+++ b/doc/faq.html
@@ -0,0 +1,455 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html> <head>
+<title>Epydoc: Frequently Asked Questions</title>
+<link rel="stylesheet" href="epydoc.css" type="text/css"/>
+</head>
+<!-- $Id: faq.html 1658 2007-09-26 19:25:35Z edloper $ -->
+<body>
+
+<body>
+<div class="body">
+<h1>Frequently Asked Questions</h1>
+<!-- <center><i>(Average question asking frequency: 0.03)</i></center> -->
+
+<div class="box">
+<h2 class="box-title">Contents</h2>
+<p><b>Docstrings & Docstring Markup</b>
+<ul class="nomargin">
+  <li><a href="#backslash">Why does epydoc get confused when I include a
+  backslash in a docstring?</a></li>
+  <li><a href="#which_markup">Which markup language do you recommend?</a></li>
+  <li><a href="#new_markup">Will you
+  add support for my favorite markup language <i>xyz</i>?</a></li>
+  <li><a href="#new_field">Is there a way to define a new field?</a></li>
+  <li><a href="#epytext_fail">Why does epydoc render one of my epytext-formatted
+  docstrings as plaintext?</a></li>
+</ul></p>
+<p><b>Extracting Documentation</b>
+<ul class="nomargin">
+  <li><a href="#introspect_vs_parse">Why does epydoc use both
+  introspection and parsing?</a></li>
+  <li><a href="#parse_only">When should I use <code>--parse-only</code>?
+  </a></li>
+  <li><a href="#is_epydoc_running">How can I test whether
+  epydoc is currently running?</a></li>
+  <li><a href="#speed">I'm documenting a large project.  How can I make
+    epydoc go faster?</a></li>
+</ul></p>
+<p><b>Generated Output</b>
+<ul class="nomargin">
+  <li><a href="#change_html">How can I change the appearance of the HTML
+  output?</a></li>
+  <li><a href="#change_latex">How can I change the appearance of the LaTeX,
+    Postscript, or PDF output?</a></li>
+  <li><a href="#exclude">How can I exclude a specific object from the
+    generated documentation?</a></li>
+  <li><a href="#graphs">How can I include graphs in the generated output?
+    </a></li>
+  <li><a href="#urls">Why does epydoc add "<tt>-module</tt>" and
+    "<tt>-class</tt>" to the names of the HTML pages it generates?
+    </a></li>
+  <li><a href="#redirect">Is there a way to link to the API documentation
+    for objects using a simple URL based on the object's dotted name?
+    </a></li>
+  <li><a href="#redundant-details">Why are some values listed in the details
+    section, but not others?</a></li>
+</ul></p>
+<p><b>Development of Epydoc</b>
+<ul class="nomargin">
+  <li><a href="#bug">I've found a bug in epydoc!  Where should I report it?</a></li>
+  <li><a href="#help">I'd like to help!  What can I do?</a></li>
+<!--  <li><a href="#"></a></li>-->
+</ul></p>
+<p><b><a href="mailto:edloper at gradient.cis.upenn.edu">Ask a new question...</a></b></p>
+</div>
+
+<!-- ==================== DOCSTRINGS ========================= -->
+<h2>Docstrings & Docstring Markup</h2>
+
+
+<dl class="faq">
+  <!-- QUESTION --><a name="backslash" />
+  <dt><p><b>Q:</b> Why does epydoc get confused when I include a
+  backslash in a docstring?</p></dt>
+
+  <dd><p>A Python docstring is a string, and is interpreted like any
+  other string.  In particular, Python interprets "\n" as a newline,
+  "\t" as a tab, etc.  If you want to include backslashes in your
+  docstring (e.g. because you want to talk about file paths, regular
+  expressions, or escaped characters), you should use a raw string.
+  E.g.:</p>
+
+    <div class="screen"><pre>
+<code class="prompt">>>></code> <code class="keyword">f</code>(x):
+<code class="prompt">...</code>     r<code class="string">"""</code>
+<code class="prompt">...</code>     <code class="string">Return true if x matches the regexp '\w+\s*\w+'.</code>
+<code class="prompt">...</code>     <code class="string">"""</code>
+    </pre></div>
+  </dd>
+  <!-- QUESTION --><a name="which_markup" />
+  <dt><p><b>Q:</b> Which markup language do you recommend? </p></dt>
+
+   <dd><p>For many modules, <a href="epytextintro.html">epytext</a>
+   works well: it is very lightweight, so it won't get in the way; but
+   it lets you mark important information about objects.  If you would
+   like to use a more expressive markup language, then we recommend
+   using <a href="othermarkup.html">reStructuredText</a>, which is
+   easy to write, easy to read, and has support for a very wide array
+   of constructs.</p></dd>
+
+  <!-- QUESTION --><a name="new_markup" />
+  <dt> <p><b>Q:</b> reStructuredText is capitalized weirdly; Javadoc
+  has too much caffeine; and Epydoc just isn't cool enough.  Will you
+  add support for my favorite markup language <i>xyz</i>?</p>
+
+  <dd> <p>No, but you can!  See the documentation for the function <a
+  href="epydoc.markup-module.html#register_markup_language"
+  ><code>register_markup_language()</code></a>, which can be used to
+  register new markup languages.  If you add support for a new markup
+  language, and believe that others might like to use it, please
+  contribute it back to epydoc!</p> </dd>
+
+  <!-- QUESTION --><a name="new_field" />
+  <dt><p><b>Q:</b> Is there a way to define a new field?  </p></dt>
+
+  <dd><p>You can add new fields that describe simple metadata using
+  the <code>@newfield</code> field.  See the documentation for <a
+  href="fields.html#newfield">fields</a>
+  for more information. </p></dd>
+
+  <!-- QUESTION --><a name="epytext_fail" />
+  <dt><p><b>Q:</b> Why does epydoc render one of my
+  epytext-formatted docstrings as plaintext? </p></dt>
+
+  <dd><p>Since epytext is used as the default markup language for
+  epydoc, it needs to be very conservative -- it will be used to
+  display many docstrings that are not explicitly written using
+  epytext, and it needs to display those docstrings in a readable way.
+  Therefore, whenever epytext encounters a docstring that doesn't
+  strictly conform to the epytext markup language, it renders it as
+  plaintext. </p>
+
+  <p>If you expect one of your docstrings to be processed using
+  epytext, but it gets rendered as plaintext, then the docstring most
+  likely contains one or more markup errors.  Run epydoc with the
+  <code>-v</code> option to see markup errors, and check for an error
+  in the docstring in question.  Once you fix the markup errors, the
+  docstring will be processed as expected.</p></dd>
+
+</dl>
+
+<!-- ================ EXTRACTING DOCUMENTATION ===================== -->
+<h2>Extracting Documentation</h2>
+<dl class="faq">
+
+  <!-- QUESTION --><a name="introspect_vs_parse" />
+  <dt> <p><b>Q:</b> Why does epydoc use both introspection <i>and</i>
+  parsing?  Wouldn't one or the other be sufficient?</p> </dt>
+
+  <dd><p>Epydoc can extract documentation about objects from two
+  different sources: <i>inspection</i> (importing the objects and
+  examining them programmatically) and <i>parsing</i>(reading and
+  extracting information from the objects' Python source code).
+  Furthermore, epydoc can combine documentation information obtained
+  from these two sources.  This is important because each source has
+  its own advantages and disadvantages with respect to the other.  In
+  particular: </p>
+
+  <ul>
+    <li> Introspection gives epydoc an accurate picture of what modules
+    will look like programmatically.  In particular, some modules
+    actively modify the namespace they define, or use various "magic"
+    techniques to alter their public interface.  Using introspection
+    gives epydoc an accurate picture of what these modified interfaces
+    look like. </li>
+
+    <li> If a module has dependencies that are not met on the current system,
+    then it may not be possible to import and introspect it; but the
+    parser can still examine its contents. </li>
+
+    <li> If importing a module has significant side effects, then 
+    introspecting it might not be desirable; but the parser can
+    still examine its contents. </li>
+
+    <li> If a module is not trusted, then it might not be desirable to
+    import it; but the parser can still examine its contents. </li>
+
+    <li> By parsing a module, we can find "pseudo-docstrings" and
+    "docstring comments," which are unavailable via introspection.
+    In particular, this makes it possible to associate API
+    documentation with variables. </li>
+
+    <li> Introspection can give information about builtin and extension
+    modules, which would be unavailable to a python source code
+    parser.  This includes builtin or extension bases for pure Python
+    classes. </li>
+
+    <li> By parsing a module, we can easily determine which values were
+    imported, and where they were imported from.  This information
+    is not available via introspection. </li>
+
+  </ul></dd>
+
+  <!-- QUESTION --><a name="parse_only" />
+  <dt> <p><b>Q:</b> When should I use <code>--parse-only</code>?
+  </p></dt>
+
+  <dd> <p>The <code>--parse-only</code> option instructs epydoc to
+  only get documentation information from parsing (and not from
+  introspection.)  You should use this option if:</p>
+
+  <ul>
+    <li>The project you are documenting contains untrusted source
+    code.</li>
+    <li>The project you are documenting has dependencies which are
+    not met (e.g., documenting windows-specific code on a
+    non-windows machine). </li>
+    <li>You wish to document a module where importing the module
+    would have undesired side effects.</li>
+  </ul></dd>
+
+  <!-- QUESTION --><a name="is_epydoc_running" />
+  <dt> <p><b>Q:</b> How can I test whether my program is
+  being documented by epydoc?
+  </p></dt>
+
+  <dd> <p>Some programs or libraries need to take special actions when
+  being documented by epydoc.  E.g., you might want your code to skip
+  certain set-up actions if it's just being imported to be documented.
+  You can test whether epydoc is currently running by testing whether
+  <code>'epydoc'</code> is in <code>sys.modules</code>:</p>
+
+<div class="screen"><pre>
+  >>> import sys.modules
+  >>> if 'epydoc' in sys.modules:
+  ...     print 'Epydoc is running'
+</pre></div>
+  </dd>
+
+  <!-- QUESTION --><a name="speed" />
+  <dt><p><b>Q:</b> I'm documenting a large project.  How can I make
+    epydoc go faster? </p></dt>
+  <dd><p>Try the following options: </p>
+    <table border="1" cellspacing="0" cellpadding="3">
+
+      <tr>
+      <th align="left"><code>−−no-sourcecode</code></th>
+      <td>Don't generate pages containing source code with syntax
+      highlighting.</td></tr>
+
+      <tr>
+      <th align="left"><code>−−no−private</code></th>
+      <td> Don't generate documentation for private objects.</td></tr>
+
+      <tr>
+      <th align="left"><code>−−introspect−only</code> or
+                       <code>−−parse−only</code></th>
+      <td> Extract information about objects using introspection
+      <i>or</i> parsing (but not both).  This may decrease the amount
+      of information that epydoc can extract from your
+      project.</td></tr>
+
+      <tr>
+      <th align="left"><code>−−docformat=plaintext</code></th>
+      <td> Format docstrings as plaintext, instead of epytext.
+      (Docstrings will be rendered verbatim).</td></tr>
+
+    </table>
+
+    <p>Also, note that including graphs in the output can
+    slow epydoc down significantly. </p></dd></dl>
+
+</dl>
+
+<!-- ==================== GENERATED OUTPUT ========================= -->
+<h2>Generated Output</h2>
+<dl class="faq">
+
+  <!-- QUESTION --><a name="change_html" />
+  <dt> <p><b>Q:</b> How can I change the appearance of the HTML
+  output?</p> </dt>
+
+  <dd><p>The CSS stylesheet can be used to modify the colors, fonts,
+  and styles that are used by epydoc.  You can specify your own CSS
+  stylesheet using the <code>--css</code> option.  (To generate the
+  default stylesheet, simply run epydoc on a small module.)</p>
+
+  <p>If your objections have to do with the actual layout of the
+  pages, then I'd be happy to hear your suggestions for improving it;
+  but I'm fairly happy with the layout, and probably won't make
+  changes unless I agree that they improve the appearance
+  significantly.</p></dd>
+
+  <!-- QUESTION --><a name="change_latex" />
+  <dt><p><b>Q:</b> How can I change the appearance of the LaTeX,
+    Postscript, or PDF output? </p></dt>
+  <dd><p>Currently, the LaTeX output, and derived output formats,
+    are not very customizable.  If you have suggestions for
+    improving the appearance of the generated output, please let
+    me know.</p></dd>
+
+  <!-- QUESTION --><a name="graphs" />
+  <dt><p><b>Q:</b> How can I include graphs in the generated output? 
+  </p></dt>
+
+  <dd><p>Epydoc can automatically generate a variety of graphs,
+  including class tress, package trees, uml class graphs, and import
+  graphs.  These graphs can be included in one of two ways:</p>
+
+  <ul>
+     <li> Use the <code>--graph</code> option to automatically
+     generate a given type of graph for all applicable modules,
+     classes, or functions.  For example, using
+     <code>--graph classtree</code> will replace the text-based
+     class tree with a graphical class tree on all module pages.
+     See the <a href="using.html#cli">command line usage</a> 
+     documentation for more information.</li>
+
+     <li> Graphs may be explicitly created by docstrings, using
+     appropriate markup.  In epytext, graphs are created using the
+     "<code>G</code>" colorization marker (i.e.,
+     "<code>G{<i>graphname</i>}</code>", or "<code>G{<i>graphname</i>
+     <i>options...</i>}</code>" for graphs with options).  In
+     reStructuredText, graphs are created using custom <a
+     href="http://docutils.sourceforge.net/docs/user/rst/quickref.html#directives">directives</a>.
+     For more information, see the <a
+     href="epytext.html#graphs">epytext manual</a> or the notes on <a
+     href="othermarkup.html#restructuredtext">using reStructuredText
+     with epydoc. </a>.</li>
+  </ul>
+    
+
+  <p> Graph generation requires the <a
+  href="http://www.graphviz.org/">Graphviz package</a>.  If the
+  <code>dot</code> executable is not on the path, then its location
+  should be specified using the <code>--dotptah</code> option.</p>
+
+
+
+  <!-- QUESTION --><a name="exclude" />
+  <dt><p><b>Q:</b> How can I exclude a specific object from the
+    generated documentation? </p></dt>
+  <dd><p>Use the <code>@undocumented</code> field.  See the
+  documentation for <a
+  href="fields.html">fields</a> for
+  more information. </p></dd>
+
+  <!-- QUESTION --><a name="urls" />
+  <dt><p><b>Q:</b> Why does epydoc add "<tt>-module</tt>" and
+    "<tt>-class</tt>" to the names of the HTML pages it generates?
+    </p></dt>
+  <dd><p>There are two reasons.  First, this ensures that the names of
+  module and class pages do not conflict with the names of existing
+  special pages.  For example, if a module were named
+  "<tt>index</tt>", then naming its documentation page
+  "<tt>index.html</tt>" would interfere with the use of that name for
+  the documentation's main page.  Second, it is possible to define a
+  package where a module and a class share the same name.  In those
+  cases, this naming scheme ensures that the two object's pages do not
+  conflict.</p></dd>
+
+  <!-- QUESTION --><a name="redirect" />
+  <dt><p><b>Q:</b> Is there a way to link to the API documentation
+    for objects using a simple URL based on the object's dotted name?
+    </p></dt>
+
+  <dd><p>Epydoc creates a page named "<tt>redirect.html</tt>" that
+  uses javascript to automatically convert dotted names to the
+  corresponding URLs.  In particular, loading the page
+  "<tt>redirect.html#<i>dotted.name</i></tt>" will automatically
+  redirect the user's browser to the URL for the object whose dotted
+  name is <tt><i>dotted.name</i></tt>.  For example, a link to
+  <tt><<a href="api/redirect.html#epydoc.cli.HELP_TOPICS"
+  >redirect.html#epydoc.cli.HELP_TOPICS</a>></tt> automatically
+  redirects the browser to <tt><<a
+  href="api/epydoc.cli-module.html#HELP_TOPICS"
+  >epydoc.cli-module.html#HELP_TOPICS</a>></tt>.  The redirect page can
+  be used for any object documented by epydoc, including modules,
+  classes, functions, varaibles, properties, etc. </p></dd>
+
+  <!-- QUESTION --><a name="redundant-details" />
+  <dt><p><b>Q:</b> Why are some values listed in the details
+    section, but not others?
+    </p></dt>
+
+  <dd><p>By default, epydoc will only list a value in the details
+  section if there's additional information beyond what's listed in
+  the summary section.  For example, if you define a function but
+  don't give it a docstring, then all API information about that
+  function can be shown in the summary table, so no details entry will
+  be created for it.  This helps keep the generated documentation
+  consise, and the information density high.  However if you prefer,
+  the command-line option "<code>--redundant-details</code>" can be
+  used to tell epydoc to display all values in the details lists, even
+  if all info about them is already provided by the summary table.
+  The corresponding config file option is
+  <code>redundant-details</code>.  <i>This option was added in svn
+  revision 1613, and is not yet available in the most recent
+  release.</i>
+  </p></dd>
+</dl>
+
+<!-- ==================== DEVELOPMENT ========================= -->
+<h2>Development of Epydoc</h2>
+<dl class="faq">
+  <!-- QUESTION --><a name="bug" />
+  <dt><p><b>Q:</b> I've found a bug in epydoc!  Where should I report it?
+    </p></dt>
+  <dd><p> Use the <a
+  href="http://sourceforge.net/tracker/?func=add&group_id=32455&atid=405618">Sourceforge
+  bug tracker</a> to report bugs.  If you want to hear back when we fix
+  it, be sure to either log in to Sourceforge, or include your email
+  address in the bug report.
+    </p></dd>
+  <!-- QUESTION --><a name="help" />
+  <dt><p><b>Q:</b> I'd like to help!  What can I do?
+    </p></dt>
+  <dd><p> If there are any features that you want to add to Epydoc,
+    we'd be happy to accept patches.  Patches should be submitted with
+    the <a
+    href="http://sourceforge.net/tracker/?func=add&group_id=32455&atid=405620">Sourceforge
+    patch tracker</a> (be sure to describe what your patch does!).  If
+    you plan to make several changes, we could also add you as a
+    developer on Sourceforge.  Email me if you're interested. </p>
+
+    <p> For a list of additions that we'd like to make to Epydoc, see
+    the todo list in the <a href="api/">Epydoc reference
+    documentation</a>; or the SourceForge <a
+    href="http://sourceforge.net/tracker/?group_id=32455&atid=405621">feature
+    request tracker</a> and <a
+    href="http://sourceforge.net/tracker/?group_id=32455&atid=405618">bug
+    tracker</a> </p></dd>
+
+  <!-- QUESTION TEMPLATE
+  <dt><p><b>Q: </b> ...</p></dt>
+  <dd><p> ... </p></dd> -->
+
+</div>
+<table width="100%" class="navbox" cellpadding="1" cellspacing="0">
+  <tr>
+  <a class="nav" href="index.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="index.html">
+    Home</a></td></a>
+  <a class="nav" href="installing.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="installing.html">
+    Installing Epydoc</a></td></a>
+  <a class="nav" href="using.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="using.html">
+    Using Epydoc</a></td></a>
+  <a class="nav" href="epytext.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="epytext.html">
+    Epytext</a></td></a>
+  <td align="center" width="20%" class="nav">
+    
+    <A href="http://sourceforge.net/projects/epydoc"> 
+    <IMG src="sflogo.png" 
+    width="88" height="26" border="0" alt="SourceForge"
+    align="top"/></A></td>
+    </tr>
+</table>
+</body>
+</html>
diff --git a/doc/fields.html b/doc/fields.html
new file mode 100644
index 0000000..481edeb
--- /dev/null
+++ b/doc/fields.html
@@ -0,0 +1,775 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html> <head>
+<title>Epydoc Fields</title>
+<link rel="stylesheet" href="epydoc.css" type="text/css"/>
+</head>
+<!-- $Id: fields.html 1575 2007-03-08 21:28:07Z edloper $ -->
+<body>
+<div class="body">
+<h1>Epydoc Fields</h1>
+
+<p> Fields are used to describe specific properties of a documented
+object.  For example, fields can be used to define the parameters and
+return value of a function; the instance variables of a class; and the
+author of a module.  Each field consists of a <i>tag</i>, an optional
+<i>argument</i>, and a <i>body</i>. </p>
+
+<ul>
+  <li> The <i>tag</i> is a case-insensitive word that indicates what
+  kind of documentaiton is given by the field. </li>
+  <li> The optional <i>argument</i> specifies what object, parameter,
+  or group is documented by the field. </li>
+  <li> The <i>body</i> contains the main contents of the field. </li>
+  </ul>
+
+<h2> 1. Field Markup </h2>
+
+<p> Each docstring markup langauge marks fields differently.  The
+following table shows the basic fields syntax for each markup
+language.  For more information, see the definition of field syntax
+for each markup language. </p>
+
+<center>
+<table border="1" cellspacing="0" cellpadding="3">
+  <tr>
+    <th width="33%">Epytext</th>
+    <th width="33%">reStructuredText</th>
+    <th width="33%">Javadoc</th>
+  </tr>
+  <tr>
+    <td>
+      <code>@<i>tag</i>: <i>body</i></code>...<br/>
+      <code>@<i>tag</i> <i>arg</i>: <i>body</i></code>...<br/>
+    </td>
+    <td>
+      <code>:<i>tag</i>: <i>body</i></code>...<br/>
+      <code>:<i>tag</i> <i>arg</i>: <i>body</i></code>...<br/>
+    </td>
+    <td>
+      <code>@<i>tag</i> <i>body</i></code>...<br/>
+      <code>@<i>tag</i> <i>arg</i> <i>body</i></code>...<br/>
+    </td>
+  </tr>
+<tr>
+<td align="center"><a
+href="epytext.html#fieldlist">Definition of<br/>epytext fields</a></td>
+<td align="center"><a
+href="http://docutils.sourceforge.net/spec/rst/reStructuredText.html#field-lists">Definition of<br/>reStructuredText fields</a></td>
+<td align="center"><a
+href="http://java.sun.com/j2se/1.4.2/docs/tooldocs/solaris/javadoc.html#javadoctags">Definition of<br/>Javadoc fields</a></td>
+</tr>
+</table>
+</center>
+
+
+<a name="fields"></a>
+<h2> 2. Supported Fields</h2>
+
+<p> The following table lists the fields that epydoc currently
+recognizes.  Field tags are written using epytext markup; if you are
+using a different markup language, then you should adjust the markup
+accordingly. </p>
+
+
+<table border="1" cellspacing="0" cellpadding="3" width="95%">
+  <!-- ========== Functions & Methods ========== -->
+  <tr><th colspan="2" align="left">Functions and Methods
+  <i>(function or method docstrings)</i></th></tr>
+  <tr><td width="10%" align="left" valign="top">
+  <code>@<b>param</b> <i>p</i>:</code> ... </td><td>
+    A description of the parameter <code><i>p</i></code> for a
+    function or method.  It may appear in the class docstring to describe
+    a costructor parameter: mostly useful for C extensions.</td></tr>
+  
+  <tr><td width="10%" align="left" valign="top">
+  <code>@<b>type</b> <i>p</i>:</code> ... </td><td>
+    The expected type for the parameter.
+    <code><i>p</i></code>. </td></tr>
+  
+  <tr><td width="10%" align="left" valign="top">
+  <code>@<b>return</b>:</code> ... </td><td>
+    The return value for a function or method. </td></tr>
+  
+  <tr><td width="10%" align="left" valign="top">
+  <code>@<b>rtype</b>:</code> ... </td><td>
+    The type of the return value for a function or method. </td></tr>
+
+  <tr><td width="10%" align="left" valign="top">
+  <code>@<b>keyword</b> <i>p</i>:</code> ... </td><td>
+    A description of the keyword parameter <code><i>p</i></code>.
+    It may appear in the class docstring to describe
+    a costructor keyword parameter.</td></tr>
+  
+  <tr><td width="10%" align="left" valign="top">
+  <code>@<b>raise</b> <i>e</i>:</code> ... </td><td>
+    A description of the circumstances under which a function or
+    method raises exception <code><i>e</i></code>.
+    It may appear in the class docstring to describe
+    an exception that can be raised by the costructor.</td></tr>
+
+  <!-- ========== Variables ========== -->
+  <tr><th colspan="2" align="left">Variables
+  <i>(module, class or <a href="#variable-docstring">variable</a> docstrings)</i></th></tr>
+  <tr><td width="10%" align="left" valign="top">
+  <code>@<b>ivar</b> <i>v</i>:</code> ... </td><td>
+    A description of the class instance variable
+    <code><i>v</i></code>. </td></tr>
+  
+  <tr><td width="10%" align="left" valign="top">
+  <code>@<b>cvar</b> <i>v</i>:</code> ... </td><td>
+    A description of the static class variable
+    <code><i>v</i></code>. </td></tr>
+  
+  <tr><td width="10%" align="left" valign="top">
+  <code>@<b>var</b> <i>v</i>:</code> ... </td><td>
+    A description of the module variable
+    <code><i>v</i></code>. </td></tr>
+  
+  <tr><td width="10%" align="left" valign="top">
+  <code>@<b>type</b> <i>v</i>:</code> ... </td><td>
+    The type of the variable
+    <code><i>v</i></code>. </td></tr>
+
+    <!-- This does exist, but leave it out to avoid confusion: -->
+    <!-- 
+  <tr><td width="10%" align="left" valign="top">
+  <code>@<b>type</b> <i>p</i>:</code> ... </td><td>
+    The type of the property
+    <code><i>p</i></code>. </td></tr>
+    -->
+  
+  <!-- ========== Properties ========== -->
+  <tr><th colspan="2" align="left">Properties
+  <i>(property docstrings)</i></th></tr>
+  
+  <tr><td width="10%" align="left" valign="top">
+  <code>@<b>type</b>:</code> ... </td><td>
+    The type of the property. </td></tr>
+  
+  <!-- ========== Grouping & Sorting ========== -->
+  <tr><th colspan="2" align="left">Grouping and Sorting
+  <i>(module, class, function, or method docstrings)</i></th></tr>
+  <tr><td width="10%" align="left" valign="top">
+  <code>@<b>group</b> <i>g</i>: <i>c<sub>1</sub
+    >,...,c<sub>n</sub></i></code> </td><td>
+    Organizes a set of related children of a module or class into a group.
+    <code><i>g</i></code> is the name of the group; and
+    <code><i>c<sub>1</sub>,...,c<sub>n</sub></i></code> are the names
+    of the children in the group.  To define multiple groups, use
+    multiple <code>group</code> fields.</td></tr>
+    
+  <tr><td width="10%" align="left" valign="top">
+  <code>@<b>sort</b>: <i>c<sub>1</sub
+    >,...,c<sub>n</sub></i></code> </td><td>
+    Specifies the sort order for the children of a module or class.
+    <code><i>c<sub>1</sub>,...,c<sub>n</sub></i></code> are the names
+    of the children, in the order in which they should appear.  Any
+    children that are not included in this list will appear after
+    the children from this list, in alphabetical order.
+    </td></tr>
+        
+  <!-- ========== Related Topics ========== -->
+  <tr><th colspan="2" align="left">Related Topics</th></tr>
+  <tr><td width="10%" align="left" valign="top"> <code>@<b>see</b>:</code> ... </td><td>
+    A description of a related topic.  <code>see</code> fields
+    typically use documentation crossreference links or external
+    hyperlinks that link to the related topic. </td></tr>
+    
+  <!-- ========== Notes & Warnings ========== -->
+  <tr><th colspan="2" align="left">Notes and Warnings</th></tr>
+  <tr><td width="10%" align="left" valign="top">
+  <code>@<b>note</b>:</code> ... </td><td> 
+    A note about an object.  Multiple
+    <code>note</code> fields may be used to list separate
+    notes.</td></tr>
+    
+  <tr><td width="10%" align="left" valign="top">
+  <code>@<b>attention</b>:</code> ... </td><td> 
+    An important note about an object.  Multiple
+    <code>attention</code> fields may be used to list separate
+    notes.</td></tr>
+    
+  <tr><td width="10%" align="left" valign="top">
+  <code>@<b>bug</b>:</code> ... </td><td> 
+    A description of a bug in an object.
+    Multiple <code>bug</code> fields may be used to report separate
+    bugs.</td></tr>
+    
+  <tr><td width="10%" align="left" valign="top">
+  <code>@<b>warning</b>:</code> ... </td><td> 
+    A warning about an object.  Multiple
+    <code>warning</code> fields may be used to report separate
+    warnings.</td></tr>
+
+  <!-- ========== Status ========== -->
+  <tr><th colspan="2" align="left">Status</th></tr>
+  <tr><td width="10%" align="left" valign="top">
+  <code>@<b>version</b>:</code> ... </td><td>
+    The current version of an object. </td></tr>
+
+  <tr><td width="10%" align="left" valign="top">
+  <code>@<b>todo</b> [<i>ver</i>]:</code> ... </td><td> A planned
+  change to an object.  If the optional argument <code><i>ver</i></code>
+  is given, then it specifies the version for which the change will be
+  made.  Multiple <code>todo</code> fields may be used if multiple
+  changes are planned. </td></tr>
+
+  <tr><td width="10%" align="left" valign="top">
+  <code>@<b>deprecated</b>:</code> ... </td><td> 
+    Indicates that an object is
+    deprecated.  The body of the field describe the reason why
+    the object is deprecated.</td></tr>
+
+  <tr><td width="10%" align="left" valign="top">
+  <code>@<b>since</b>:</code> ... </td><td> 
+    The date or version when an object was
+    first introduced.</td></tr>
+    
+  <tr><td width="10%" align="left" valign="top">
+  <code>@<b>status</b>:</code> ... </td><td> 
+    The current status of an object.</td></tr>
+    
+  <tr><td width="10%" align="left" valign="top">
+  <code>@<b>change</b>:</code> ... </td><td> 
+    A change log entry for this object.</td></tr>
+    
+  <tr><td width="10%" align="left" valign="top">
+  <code>@<b>permission</b>:</code> ... </td><td>
+    The object access permission, for systems such Zope/Plone supporting
+    this concept. It may be used more than once to specify multiple
+    permissions.</td></tr>
+    
+  <!-- ========== Formal Conditions ========== -->
+  <tr><th colspan="2" align="left">Formal Conditions</th></tr>
+  <tr><td width="10%" align="left" valign="top">
+  <code>@<b>requires</b>:</code> ... </td><td> 
+    A requirement for using an object.  Multiple <code>requires</code>
+    fields may be used if an object has multiple
+    requirements.</td></tr>
+    
+  <tr><td width="10%" align="left" valign="top">
+  <code>@<b>precondition</b>:</code> ... </td><td> 
+    A condition that must be true before an object is used.  Multiple
+    <code>precondition</code> fields may be used if an object has
+    multiple preconditions.</td></tr>
+
+  <tr><td width="10%" align="left" valign="top">
+  <code>@<b>postcondition</b>:</code> ... </td><td> 
+    A condition that is guaranteed to be true after an object is used.
+    Multiple <code>postcondition</code> fields may be used if an
+    object has multiple postconditions.</td></tr>
+
+  <tr><td width="10%" align="left" valign="top">
+  <code>@<b>invariant</b>:</code> ... </td><td> 
+    A condition which should always be true for an object.  Multiple
+    <code>invariant</code> fields may be used if an object has
+    multiple invariants.</td></tr>
+
+  <!-- ========== Bibliographic Info ========== -->
+  <tr><th colspan="2" align="left">Bibliographic Information</th></tr>
+  <tr><td width="10%" align="left" valign="top">
+  <code>@<b>author</b>:</code> ... </td><td> The author(s) of an
+    object.  Multiple <code>author</code>
+    fields may be used if an object has multiple authors.</td></tr>
+  
+  <tr><td width="10%" align="left" valign="top">
+  <code>@<b>organization</b>:</code> ... </td><td> The
+    organization that created or maintains an
+    object. </td></tr>
+  
+  <tr><td width="10%" align="left" valign="top">
+  <code>@<b>copyright</b>:</code> ... </td><td> The copyright
+      information for an object. </td></tr>
+  
+  <tr><td width="10%" align="left" valign="top">
+  <code>@<b>license</b>:</code> ... </td><td> The licensing
+    information for an object. </td></tr>
+  
+  <tr><td width="10%" align="left" valign="top">
+  <code>@<b>contact</b>:</code> ... </td><td> Contact information
+    for the author or maintainer of a module, class, function, or
+    method.  Multiple <code>contact</code> fields may be used if an
+    object has multiple contacts.</td></tr>
+
+  <!-- ========== Summarization ========== -->
+  <tr><th colspan="2" align="left">Summarization</th></tr>
+  <tr><td width="10%" align="left" valign="top">
+  <code>@<b>summary</b>:</code> ... </td><td> A summary
+  description for an object.  This description overrides the default
+  summary (which is constructed from the first sentence of the
+  object's description). </td></tr>
+  
+</table>
+
+<h3> 2.1. Notes on Supported Fields</h3>
+
+<ul>
+
+<li> <p> <code>@param</code> fields should be used to document any
+explicit parameter (including the keyword parameter).
+<code>@keyword</code> fields should only be used for non-explicit
+keyword parameters: </p>
+
+<div class="screen"><pre>
+<code class="keyword">def</code> <code class="function">plant</code>(seed, *tools, **options):
+    <code class="string">"""</code>
+    <code class="field">@param seed:</code> The seed that should be planted.
+    <code class="field">@param tools:</code> Tools that should be used to plant the seed.
+    <code class="field">@param options:</code> Any extra options for the planting.
+
+    <code class="field">@keyword dig_deep:</code> Plant the seed deep under ground.
+    <code class="field">@keyword soak:</code> Soak the seed before planting it.
+    <code class="string">"""</code>
+    <i>[...]</i>
+</pre></div>
+</li>
+
+<li> <p> For the <code>@group</code> and <code>@sort</code> tags,
+asterisks (<code>*</code>) can be used to specify multiple children at
+once.  An asterisk in a child name will match any substring: </p>
+
+<div class="screen"><pre>
+<code class="keyword">class</code> <code class="function">widget</code>(size, weight, age):
+    <code class="string">"""</code>
+    <code class="field">@group Tools:</code> zip, zap, *_tool
+    <code class="field">@group Accessors:</code> get_*
+    <code class="field">@sort:</code> get_*, set_*, unpack_*, cut
+    <code class="string">"""</code>
+    <i>[...]</i>
+</pre></div>
+</li>
+
+<li> <p> Since the <code>@type</code> field allows for arbitrary text,
+it does not automatically create a crossreference link to the
+specified type, and is not written in fixed-width font by default.  If
+you want to create a crossreference link to the type, or to write the
+type in a fixed-width font, then you must use inline markup: </p>
+
+<div class="screen"><pre>
+<code class="keyword">def</code> <code class="function">ponder</code>(person, time):
+    <code class="string">"""</code>
+    <code class="field">@param person:</code> Who should think.
+    <code class="field">@type person:</code> L{Person} or L{Animal}
+    <code class="field">@param time:</code> How long they should think.
+    <code class="field">@type time:</code> C{int} or C{float}
+    <code class="string">"""</code>
+    <i>[...]</i>
+</pre></div>
+
+</li>
+</ul>
+
+
+<a name="locations"></a>
+<h2> 3. Where to Write Fields</h2>
+
+<p> Normally the fields are written in the docstring of the documented
+objects: this allows you to add fields to modules, classes, function, properties.
+Where a docstring is not allowed, usually alternative options do exist.
+</p>
+
+<a name="variable-docstring"></a>
+<h3> 3.1. Variable docstrings </h3>
+
+<p> Python variables don't support docstrings. The variable can be described
+in the module or class where it is defined using the tags <code>@var</code>,
+<code>@ivar</code>, <code>@cvar</code>; but this only allows for a textual
+description: no further metadata can be added to the variable (except for the
+type, using the <code>@type</code> tag. </p>
+
+<p> Epydoc supports <i>variable docstrings</i>:  if a variable
+assignment statement is immediately followed by a bare string literal,
+then that assignment is treated as a docstring for that variable.  In
+classes, variable assignments at the class definition level are
+considered class variables; and assignments to instance variables in
+the constructor (<code>__init__</code>) are considered instance variables:<p>
+
+<div class="screen2"><pre>
+<code class="prompt">>>></code> <code class="keyword">class</code> A:
+<code class="prompt">...</code>     x = 22
+<code class="prompt">...</code>     <code class="string">"""Docstring for class variable A.x"""</code>
+<code class="prompt">...</code>
+<code class="prompt">...</code>     <code class="keyword">def</code> <code class="function">__init__</code>(self, a):
+<code class="prompt">...</code>         self.y = a
+<code class="prompt">...</code>         <code class="string">"""Docstring for instance variable A.y</code>
+</pre></div>
+
+<p> Variables may also be documented using <i>comment docstrings</i>.
+If a variable assignment is immediately preceeded by a comment whose
+lines begin with the special marker "<code><b>#:</b></code>", or is
+followed on the same line by such a comment, then it is treated as a
+docstring for that variable: </p>
+
+<div class="screen2"><pre>
+<code class="prompt">>>></code> <code class="comment">#: docstring for x</code>
+<code class="prompt">...</code> x = 22
+<code class="prompt">>>></code> x = 22 <code class="comment">#: docstring for x</code>
+</pre></div>
+
+<p> A common Python idiom is to create instance variables settings their
+default value in the class instead of the constructor (hopefully if the default
+is immutable...). To avoid Epydoc to interpret such variable as a class
+variable, you can describe it using the tag <code>@ivar</code> in the
+context of a variable docstring:</p>
+
+<div class="screen2"><pre>
+<code class="prompt">>>></code> <code class="keyword">class</code> B:
+<code class="prompt">...</code>     y = 42
+<code class="prompt">...</code>     <code class="string">"""@ivar: This is an instance variable."""</code>
+</pre></div>
+
+<p> Notice that variable docstrings are only available for documentation
+when the source code is available for parsing: it is not possible to retrieve
+variable docstrings from introspection informations only. </p>
+
+
+<h3> 3.2. C Extensions </h3>
+
+<p> In a C extension module, extension classes cannot have a docstring attached
+to the <code>__init__</code> function; consequently it is not possible to
+document parameters and exceptions raised by the class constructor. To overcome
+this shortcoming, the tags <code>@param</code>, <code>@keyword</code>,
+<code>@type</code>, <code>@exception</code> are allowed to appear in the class
+docstring to refer to constructor parameters.
+</p>
+
+
+<h2>4. Field Synonyms</h2>
+
+<p> Several fields have "synonyms," or alternate tags.  The following
+table lists all field synonyms.  Field tags are written using epytext
+markup; if you are using a different markup language, then you should
+adjust the markup accordingly. </p>
+
+<center>
+<table class="transparent">
+<tr valign="top"><td class="transparent">
+  <table border="1" cellspacing="0" cellpadding="3">
+    <tr><th width="50%">Name</th><th width="50%">Synonyms</th></tr>
+    <tr><td align="left" valign="top">
+      <b><code>@param <i>p</i>:</code> ...</b> </td>
+      <td><code>@parameter <i>p</i>:</code> ...<br/>
+      <code>@arg <i>p</i>:</code> ...<br/>
+      <code>@argument <i>p</i>:</code> ...</td></tr>
+    
+    <tr><td align="left" valign="top">
+      <b><code>@return:</code> ...</b> </td><td>
+      <code>@returns:</code> ... </td></tr>
+    
+    <tr><td align="left" valign="top">
+      <b><code>@rtype:</code> ...</b> </td><td>
+      <code>@returntype:</code> ... </td></tr>
+    
+    <tr><td align="left" valign="top">
+      <b><code>@raise <i>e</i>:</code> ...</b> </td>
+      <td><code>@raises <i>e</i>:</code> ...<br/>
+      <code>@except <i>e</i>:</code> ...<br/>
+      <code>@exception <i>e</i>:</code> ...</td></tr>
+    
+    <tr><td align="left" valign="top">
+      <b><code>@keyword <i>p</i>:</code> ...</b> </td><td>
+      <code>@kwarg <i>p</i>:</code> ... <br/>
+      <code>@kwparam <i>p</i>:</code> ... <br/></td></tr>
+      
+    <tr><td align="left" valign="top">
+      <b><code>@ivar <i>v</i>:</code> ...</b> </td><td>
+      <code>@ivariable <i>v</i>:</code> ... </td></tr>
+    
+    <tr><td align="left" valign="top">
+      <b><code>@cvar <i>v</i>:</code> ...</b> </td><td>
+      <code>@cvariable <i>v</i>:</code> ... </td></tr>
+    
+  </table></td>
+  <td width="20" class="transparent"></td>
+  <td class="transparent">
+  <table border="1" cellspacing="0" cellpadding="3">
+    <tr><th width="50%">Name</th><th width="50%">Synonyms</th></tr>
+    <tr><td align="left" valign="top">
+      <b><code>@var <i>v</i>:</code> ...</b> </td><td>
+      <code>@variable <i>v</i>:</code> ... </td></tr>
+  
+    <tr><td align="left" valign="top">
+      <b><code>@see:</code> ...</b> </td><td>
+      <code>@seealso:</code> ... </td></tr>
+  
+    <tr><td align="left" valign="top">
+      <b><code>@warning:</code> ...</b> </td><td>
+      <code>@warn:</code> ... </td></tr>
+    
+    <tr><td align="left" valign="top">
+      <b><code>@requires:</code> ...</b> </td><td>
+      <code>@require:</code> ... <br/>
+      <code>@requirement:</code> ... </td></tr>
+    
+    <tr><td align="left" valign="top">
+      <b><code>@precondition:</code> ...</b> </td><td>
+      <code>@precond:</code> ... </td></tr>
+    
+    <tr><td align="left" valign="top">
+      <b><code>@postcondition:</code> ...</b> </td><td>
+      <code>@postcod:</code> ... </td></tr>
+    
+    <tr><td align="left" valign="top">
+      <b><code>@organization:</code> ...</b> </td><td>
+      <code>@org:</code> ... </td></tr>
+    
+    <tr><td align="left" valign="top">
+      <b><code>@copyright:</code> ...</b> </td><td>
+      <code>@(c):</code> ... </td></tr>
+    
+    <tr><td align="left" valign="top">
+      <b><code>@change:</code> ...</b> </td><td>
+      <code>@changed:</code> ... </td></tr>
+  </table>
+</td></tr></table>
+</center>
+
+
+<a name="metadata-variable"></a>
+<h3> 4.1. Metadata variables </h3>
+
+<p> Some module variables are commonly used as module metadata. Epydoc can
+use the value provided by these variables as alternate form for tags. The
+following table lists the recognized variables and the tag they replace.
+Customized metadata variables can be added using the method described
+in <a href="newfield">Adding New Fields</a>.</p>
+
+<center>
+  <table border="1" cellspacing="0" cellpadding="3">
+    <tr><th width="50%">Tag</th><th width="50%">Variable</th></tr>
+    <tr><td align="left" valign="top">
+      <b><code>@deprecated</code></b></td>
+      <td><code>__deprecated__</code></td></tr>
+      
+    <tr><td align="left" valign="top">
+      <b><code>@version</code></b></td>
+      <td><code>__version__</code></td></tr>
+    
+    <tr><td align="left" valign="top">
+      <b><code>@date</code></b></td>
+      <td><code>__date__</code></td></tr>
+      
+    <tr><td align="left" valign="top">
+      <b><code>@author</code></b><br/>
+      <b><code>@authors</code></b></td>
+      <td><code>__author__</code><br/>
+      <code>__authors__</code></td></tr>
+      
+    <tr><td align="left" valign="top">
+      <b><code>@contact</code></b></td>
+      <td><code>__contact__</code></td></tr>
+      
+    <tr><td align="left" valign="top">
+      <b><code>@copyright</code></b></td>
+      <td><code>__copyright__</code></td></tr>
+      
+    <tr><td align="left" valign="top">
+      <b><code>@license</code></b></td>
+      <td><code>__license__</code></td></tr>
+
+  </table>
+</center>
+
+
+<a name="newfield"></a>
+<h2> 5. Adding New Fields</h2>
+
+<p> New fields can be defined for the docstrings in a module using the
+special <code>@newfield</code> tag (or its synonym,
+<code>@deffield</code>).  This tag has the following syntax:</p>
+
+<div class="screen"><pre>
+<b>@newfield <i>tag</i>:</b> <i>label</i> [, <i>plural</i>]
+</pre></div>
+
+<p>Where <code><i>tag</i></code> is the new tag that's being defined;
+<code><i>label</i></code> is a string that will be used to mark this
+field in the generated output; and <code><i>plural</i></code> is the
+plural form of <code><i>label</i></code>, if different.</p>
+
+<p>It will also be possibile to use the module variable
+<code>__<i>tag</i>__</code> to set the value for the newly defined tag.</p>
+
+<p>The following
+example illustrates how the <code>@newfield</code> can be used: </p>
+
+<table border="1" cellspacing="0" cellpadding="3" width="95%">
+  <tr><th width="50%">Docstring Input</th><th width="50%">Rendered Output</th>
+  <tr valign="top"><td>
+<pre>
+"""
+ at newfield corpus: Corpus, Corpora
+"""
+
+<code class="keyword">def</code> <code class="function">example</code>():
+    <code class="string">"""</code>
+    <code class="field">@corpus:</code> Bob's wordlist.
+    <code class="field">@corpus:</code> The British National Corpus.
+    <code class="string">"""</code>
+    <i>[...]</i>
+</pre>
+</td><td>
+    <p><b>Corpora:</b>
+      <ul>
+        <li> Bob's wordlist. </li>
+        <li> The British National Corpus. </li>
+      </ul>
+    </p>
+</td></tr>
+</table>
+
+<p><b>Note:</b> The module-level variable
+<code>__extra_epydoc_fields__</code> is deprecated; use
+<code>@newfield</code> instead.</p>
+
+<h2> 6. Markup-Specific Notes </h2>
+
+<p> For the most part, fields are treated identically, regardless of
+what markup language is used to encode them.  However, there are a few
+minor differences, which are intended to accomodate existing standards
+for each markup language.  In particular: </p>
+
+<ul>
+  <li> reStructuredText supports an extra group of fields, called
+  <i>consolidated fields</i>, which combine the documentation for
+  several objects into a single field. </li>
+  <li> Javadoc uses a special syntax for the body of the
+  <code>@see</code> fields. </li>
+  <li> Javadoc does not support multi-word arguments. </li>
+</ul>
+
+<p> For more information about these differences, read the subsections
+below. </p>
+
+<a name="rst"></a>
+<h3> 6.1. reStructuredText Fields </h3>
+
+<p> In reStructuredText, a single field can be used to encode the
+documentation for a group of related items.  For example, a single
+<code>:Parameters:</code> field is often used to describe all of the
+parameters for a function or method: </p>
+
+<div class="screen"><pre>
+<code class="keyword">def</code> <code class="function">fox_speed</code>(size, weight, age):
+    <code class="string">"""
+    Return the maximum speed for a fox.
+
+    <code class="field">:Parameters:</code>
+      - `size`: The size of the fox (in meters)
+      - `weight`: The weight of the fox (in stones)
+      - `age`: The age of the fox (in years)
+    """</code>
+    <i>[...]</i>
+</pre></div>
+
+<p> Epydoc will automatically extract information about each parameter
+from this list.  These <i>consolidated fields</i> may be written using
+either a bulleted list or a <a
+href="http://docutils.sourceforge.net/docs/user/rst/quickref.html#definition-lists">definition
+list</a>.  If a consolidated field is written as a bulleted list, then
+each list item must begin with the field's argument, marked as <a
+href="http://docutils.sourceforge.net/docs/user/rst/quickref.html#inline-markup">interpreted
+text</a>, and followed by a colon or dash.  If a consolidated field is
+written as a definition list, then each definition item's term should
+contain the field's argument, (it is not mandatory for it being marked as interpreted text).  The term
+classifier, if present, is used to specify the associated type.  The
+following example shows the use of a definition list to define a
+consolidated field.  (Note that docutils requires a space before and
+after the ":" used to mark classifiers.)
+</p>
+
+<div class="screen"><pre>
+<code class="keyword">def</code> <code class="function">fox_speed</code>(size, weight, age):
+    <code class="string">"""
+    Return the maximum speed for a fox.
+
+    <code class="field">:Parameters:</code>
+      size
+          The size of the fox (in meters)
+      weight : float
+          The weight of the fox (in stones)
+      age : int
+          The age of the fox (in years)
+    """</code>
+    <i>[...]</i>
+</pre></div>
+
+<p> The following consolidated
+fields are currently supported by epydoc: </p>
+
+<center>
+<table class="transparent">
+<tr valign="top"><td class="transparent">
+  <table border="1" cellspacing="0" cellpadding="3">
+  <tr><th>Consolidated<br />Field Tag</th>
+    <th>Corresponding<br />Base Field Tag</th></tr>
+  <tr><td><code>:Parameters:</code></td>
+    <td><code>:param:</code></td>
+  <tr><td><code>:Exceptions:</code></td>
+    <td><code>:except:</code></td>
+  <tr><td><code>:Groups:</code></td>
+    <td><code>:group:</code></td>
+  <tr><td><code>:Keywords:</code></td>
+    <td><code>:keyword:</code></td>
+  </table></td>
+  <td class="transparent" width="20"></td>
+  <td class="transparent">
+  <table border="1" cellspacing="0" cellpadding="3">
+  <tr><th>Consolidated<br />Field Tag</th>
+    <th>Corresponding<br />Base Field Tag</th></tr>
+  <tr><td><code>:Variables:</code></td>
+    <td><code>:var:</code></td>
+  <tr><td><code>:Ivariables:</code></td>
+    <td><code>:ivar:</code></td>
+  <tr><td><code>:Cvariables:</code></td>
+    <td><code>:cvar:</code></td>
+  <tr><td><code>:Types:</code></td>
+    <td><code>:type:</code></td>
+</table>
+</td></tr></table>
+</center>
+
+
+<h3> 6.2. Javadoc Fields </h3>
+
+<p> For compatibility with Javadoc, every <code>@see</code> field is
+assumed to contain a single crossreference link, unless its body
+is quoted, or it starts with an HTML tag.  See <a
+href="http://java.sun.com/j2se/1.4.2/docs/tooldocs/solaris/javadoc.html#@see">the
+Javadoc reference manual</a> for more information about how the
+<code>@see</code> field is encoded in Javadoc. </p>
+
+<p> Because Javadoc does not mark end of the optional argument, field
+arguments must contain exactly one word.  Thus, multi-word arguments
+are not available in Javadoc.  In particular, all group names must
+be single words. </p>
+
+</div>
+<table width="100%" class="navbox" cellpadding="1" cellspacing="0">
+  <tr>
+  <a class="nav" href="index.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="index.html">
+    Home</a></td></a>
+  <a class="nav" href="installing.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="installing.html">
+    Installing Epydoc</a></td></a>
+  <a class="nav" href="using.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="using.html">
+    Using Epydoc</a></td></a>
+  <a class="nav" href="epytext.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="epytext.html">
+    Epytext</a></td></a>
+  <td align="center" width="20%" class="nav">
+    
+    <A href="http://sourceforge.net/projects/epydoc"> 
+    <IMG src="sflogo.png" 
+    width="88" height="26" border="0" alt="SourceForge"
+    align="top"/></A></td>
+    </tr>
+</table>
+</body>
+</html>
diff --git a/doc/future.html b/doc/future.html
new file mode 100644
index 0000000..6e76da2
--- /dev/null
+++ b/doc/future.html
@@ -0,0 +1,65 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html> <head>
+<title>Epydoc: Future Directions</title>
+<link rel="stylesheet" href="epydoc.css" type="text/css"/>
+</head>
+<!-- $Id: future.html 1211 2006-04-10 19:38:37Z edloper $ -->
+
+<body>
+<div class="body">
+<h1> Epydoc: Future Directions </h1>
+
+<h2> Short Term </h2>
+<p> Epydoc version 3.0 is currently in alpha release.  My current
+plans for the near future include: </p>
+
+<ul>
+  <li> Improve support for graph generation. </li>
+  <li> Work on plaintext output. </li>
+  <li> Profiling </li>
+  <li> More regression tests </li>
+  <li> Add support for generating indices of bugs, todo items,
+       etc. </li>
+  <li> Add an <code>@ingroup</code> tag.
+  <li> Release epydoc 3.0. </li>
+</ul>
+
+<h2> Long Term </h2>
+<p> Things I'd eventually like to see in epydoc include: </p>
+          
+<ul>
+  <li> Change the epytext parser to use simple classes instead
+       of DOM. </li>
+  <li> Output to man (troff)? </li>
+  <li> Output to docbook or directly to pdf? </li>
+</ul>
+
+</div>
+<table width="100%" class="navbox" cellpadding="1" cellspacing="0">
+  <tr>
+  <a class="nav" href="index.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="index.html">
+    Home</a></td></a>
+  <a class="nav" href="installing.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="installing.html">
+    Installing Epydoc</a></td></a>
+  <a class="nav" href="using.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="using.html">
+    Using Epydoc</a></td></a>
+  <a class="nav" href="epytext.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="epytext.html">
+    Epytext</a></td></a>
+  <td align="center" width="20%" class="nav">
+    
+    <A href="http://sourceforge.net/projects/epydoc"> 
+    <IMG src="sflogo.png" 
+    width="88" height="26" border="0" alt="SourceForge"
+    align="top"/></A></td>
+    </tr>
+</table>
+</body>
+</html>
diff --git a/doc/history.html b/doc/history.html
new file mode 100644
index 0000000..0e7b9fe
--- /dev/null
+++ b/doc/history.html
@@ -0,0 +1,81 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html> <head>
+<title>Epydoc History</title>
+<link rel="stylesheet" href="epydoc.css" type="text/css"/>
+</head>
+<!-- $Id: history.html 1211 2006-04-10 19:38:37Z edloper $ -->
+
+<body>
+<div class="body">
+<h1> Epydoc History </h1>
+
+<p> I originally became interested in automatic API documentation
+extraction tools for Python in March 2002.  At the time, there were
+several such tools available, including <a
+href="http://web.lfw.org/python/pydoc.html">pydoc</a> and <a
+href="http://happydoc.sourceforge.net/">HappyDoc</a>.  However, none
+were widely used.  I joined the <a
+href="http://mail.python.org/pipermail/doc-sig/">doc-sig mailing
+list</a>, and started working with its members on creating standards
+for API documentation tools in Python. </p>
+
+<p> I created epydoc as a tool for exploring the issues involved in
+writing an automatic API documentation extraction tool.  I also
+decided to use epydoc to document the <a
+href="http://nltk.sourceforge.net/">Natural Language Toolkit</a>, so
+that I would have a fairly large project with which to test out my
+system.  The markup language and the output of epydoc have changed
+many times, and epydoc itself has undergone at least 3 complete
+rewrites.  But eventually epydoc matured into a more stable
+system. </p>
+
+<!--
+<p> Over the past year, I haven't had much time to participate in the
+discussion of API documentation tool standards on the doc-sig mailing
+list.  However, I've been adding features to epydoc as I need them for
+the Natural Language Toolkit.  If there are any features that you're
+interested in seeing added to epydoc, please let me know. </p>
+-->
+
+<p> Significant portions of epydoc were written for version 3.0.  This
+has allowed me to increase epydoc's functionality in several
+significant ways.  The most significant change has to do with the way
+that epydoc extracts documentation information about python modules.
+In previous versions, epydoc extracted information about each module
+by importing it, and using introspection to examine its contents.  The
+new version of epydoc still supports introspection, but is also
+capable of extracting information about python modules by parsing
+their source code.  Furthermore, the new version of epydoc can combine
+these two sources of information (introspection & parsing).  This is
+important because each source has its own advantages and disadvantages
+with respect to the other.  
+
+</div>
+<table width="100%" class="navbox" cellpadding="1" cellspacing="0">
+  <tr>
+  <a class="nav" href="index.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="index.html">
+    Home</a></td></a>
+  <a class="nav" href="installing.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="installing.html">
+    Installing Epydoc</a></td></a>
+  <a class="nav" href="using.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="using.html">
+    Using Epydoc</a></td></a>
+  <a class="nav" href="epytext.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="epytext.html">
+    Epytext</a></td></a>
+  <td align="center" width="20%" class="nav">
+    
+    <A href="http://sourceforge.net/projects/epydoc"> 
+    <IMG src="sflogo.png" 
+    width="88" height="26" border="0" alt="SourceForge"
+    align="top"/></A></td>
+    </tr>
+</table>
+</body>
+</html>
diff --git a/doc/home.thumbnail.png b/doc/home.thumbnail.png
new file mode 100644
index 0000000..4818663
Binary files /dev/null and b/doc/home.thumbnail.png differ
diff --git a/doc/index.html b/doc/index.html
new file mode 100644
index 0000000..c705429
--- /dev/null
+++ b/doc/index.html
@@ -0,0 +1,181 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html> <head>
+<title>Epydoc</title>
+<link rel="stylesheet" href="epydoc.css" type="text/css"/>
+</head>
+<!-- $Id: index.html 1687 2008-01-30 03:39:22Z edloper $ -->
+<body>
+
+<div class="body">
+<h1>Epydoc</h1>
+<center><i>Automatic API Documentation Generation for Python</i></center>
+
+<table class="transparent" cellpadding="10">
+<tr valign="top"><td width="50%" class="transparent">
+
+<!-- ================= Overview ================= -->
+<div class="box">
+<h2 class="box-title">Overview</h2> <p> Epydoc is a tool for
+generating API documentation for Python modules, based on their
+docstrings.  For an example of epydoc's output, see the API
+documentation for epydoc itself (<a href="api/">html</a>, <a
+href="epydoc.pdf">pdf</a>).  A lightweight markup language called <a
+href="epytextintro.html">epytext</a> can be used to format docstrings, and
+to add information about specific fields, such as parameters and
+instance variables.  Epydoc also understands docstrings written in
+<a href="http://docutils.sourceforge.net/rst.html">reStructuredText</a>,
+Javadoc, and plaintext. For a more extensive example
+of epydoc's output, see the API documentation for <a
+href="http://epydoc.sourceforge.net/stdlib/">Python 2.5</a>. </p>
+</div>
+
+<!-- ================= Documentation ================= -->
+<div class="box" id="documentation-box">
+<h2 class="box-title">Documentation</h2>
+
+<table class="transparent" cellpadding="0">
+<tr valign="top"><td class="transparent">
+
+<p class="small-top-margin no-bot-margin"
+><b><a href="epydoc.html">Epydoc manual</a></b></p>
+<ul id="epydoc-manual">
+  <li> <a href="manual-install.html">Installing Epydoc</a> </li>
+  <li> <a href="manual-usage.html">Using Epydoc</a> </li>
+  <li> <a href="manual-docstring.html">Python Docstrings</a> </li>
+  <li> <a href="manual-epytext.html">The Epytext Markup Language</a> </li>
+  <li> <a href="manual-fields.html">Epydoc Fields</a> </li>
+  <li> <a href="manual-othermarkup.html">reStructuredText and
+       Javadoc</a> </li>
+  <li><a href="manual-reference.html">Reference Documentation</a></li>
+</ul>
+
+</td><td class="transparent">
+
+<p class="small-top-margin no-bot-margin"><b>Related Information</b></p>
+<ul id="related-information">
+  <li> <a href="license.html">Open Source License</a></li>
+  <li> <a href="whatsnew.html">Change Log</a></li>
+  <li> <a href="history.html">History</a> </li>
+  <li> <a href="future.html">Future Directions</a> </li>
+  <li> <a href="relatedprojects.html">Related Projects</a> </li>
+  <li> <a href="doctest/index.html">Regression Tests</a> </li>
+</ul>
+
+</td></tr><tr valign="top"><td class="transparent">
+<p><b><a href="api/">API
+Documentation</a></b></p>
+</td><td class="transparent">
+<p><b><a href="faq.html">Frequently Asked
+Questions</a></b></p>
+</td></tr></table>
+
+
+</div>
+
+<!-- ================= Documentation ================= -->
+<div class="box" id="feedback-box">
+<h2 class="box-title">Feedback</h2>
+<ul>
+  <li> <a
+  href="http://sourceforge.net/tracker/?func=add&group_id=32455&atid=405618">Report a bug</a> </li>
+  <li> <a
+    href="http://sourceforge.net/tracker/?func=add&group_id=32455&atid=405621">Suggest
+    a feature</a> </li>
+
+</ul>
+
+</div>
+
+<!-- NEXT COLUMN -->
+</td><td width="50%" class="transparent">
+
+<!-- ================= Latest Release ================= -->
+<div class="box">
+<h2 class="box-title">Latest Release</h2>
+
+<p> The latest stable release is <a
+href="http://sourceforge.net/project/platformdownload.php?group_id=32455"
+>Epydoc 3.0</a>.  If you wish to keep up on the latest developments,
+you can also get epydoc from the <a
+href="installing.html#subversion">subversion repository</a>.  See <a
+href="installing.html">Installing Epydoc</a> for more
+information. </p>
+</div>
+
+<!-- ================= Screenshots ================= -->
+<div class="box">
+<h2 class="box-title">Screenshots</h2>
+<center>
+<table class="transparent" cellspacing="10">
+  <tr>
+    <td class="transparent" valign="top"><a href="api/"><img src="home.thumbnail.png" alt="Generated HTML documentation for epydoc" border="0" height="75"/></a><br />
+         <!-- Generated HTML documentation for epydoc --> </td>
+    <td class="transparent" valign="top"><a href="api/epydoc.apidoc.VariableDoc-class.html"><img src="uml.thumbnail.png" alt="Example of a UML graph generated by epydoc" border="0" height="75"/></a><br />
+         <!-- Example of a UML graph generated by epydoc --> </td>
+    <td class="transparent" valign="top"><a href="api/epydoc.apidoc-pysrc.html"><img src="pysrc.thumbnail.png" alt="Example of syntax highlighted source, w/ links to API docs" border="0" height="75"/></a><br />
+         <!-- Example of syntax highlighted source, w/ links to API docs --> </td>
+    <td class="transparent" valign="top"><a href="http://epydoc.sourceforge.net/stdlib/identifier-index.html"><img src="index.thumbnail.png" alt="Identifier index page for generated Python 2.4 docs" border="0" height="75"/></a><br />
+         <!-- Identifier index page for generated Python 2.4 docs --> </td>
+  </tr>
+</table>
+</center>
+</div>
+
+<!-- ================= News ================= -->
+<div class="box">
+<h2 class="box-title">News</h2>
+
+<p><b>Epydoc 3.0 released [January 2008]</b><br /> Epydoc version 3.0 is now
+available on the <a
+href="http://sourceforge.net/project/platformdownload.php?group_id=32455"
+>SourceForge download page</a>.  See the <a
+href="whatsnew.html">What's New</a> page for details.  Epydoc is under
+active development; if you wish to keep up on the latest developments,
+you can get epydoc from the <a
+href="installing.html#subversion">subversion repository</a>. If you
+find any bugs, or have suggestions for improving it, please report
+them on sourceforge.</p>
+
+<p><b>Presentation at PyCon [March 2004]</b><br /> Epydoc was
+presented at <a href="http://www.python.org/pycon/">PyCon</a> by
+Edward Loper.  <a href="pycon-epydoc.html">Video and audio from the
+presentation</a> are available for download. </p>
+</div>
+
+</td></tr></table>
+
+
+
+</div>
+
+
+
+<table width="100%" class="navbox" cellpadding="1" cellspacing="0">
+  <tr>
+  <a class="nav" href="index.html">
+    <td align="center" width="20%" class="navselect" class="nav">
+    <a class="nav" href="index.html">
+    Home</a></td></a>
+  <a class="nav" href="installing.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="installing.html">
+    Installing Epydoc</a></td></a>
+  <a class="nav" href="using.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="using.html">
+    Using Epydoc</a></td></a>
+  <a class="nav" href="epytext.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="epytext.html">
+    Epytext</a></td></a>
+  <td align="center" width="20%" class="nav">
+    
+    <A href="http://sourceforge.net/projects/epydoc"> 
+    <IMG src="http://sourceforge.net/sflogo.php?group_id=32455&type=1" 
+    width="88" height="26" border="0" alt="SourceForge"
+    align="top"/></A></td>
+    </tr>
+</table>
+
+</body>
+</html>
diff --git a/doc/index.thumbnail.png b/doc/index.thumbnail.png
new file mode 100644
index 0000000..a458942
Binary files /dev/null and b/doc/index.thumbnail.png differ
diff --git a/doc/installing.html b/doc/installing.html
new file mode 100644
index 0000000..46569eb
--- /dev/null
+++ b/doc/installing.html
@@ -0,0 +1,250 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html> <head>
+<title>Installing Epydoc</title>
+<link rel="stylesheet" href="epydoc.css" type="text/css"/>
+</head>
+<!-- $Id: installing.html 1692 2008-01-30 17:11:29Z edloper $ -->
+
+<body>
+<div class="body">
+<h1>Installing Epydoc</h1>
+
+<div class="box"><h2 class="box-title">Contents</h2>
+<ol>
+  <li> <a href="#download">Downloading Epydoc</a> </li>
+  <li> <a href="#subversion">Getting Epydoc from Subversion</a></li>
+  <li> <a href="#rpm">Installing from the RPM File</a> </li>
+  <li> <a href="#win">Installing from the Windows Installer</a> </li>
+  <li> <a href="#src">Installing from the Source Distribution</a> </li>
+  <li> <a href="#nomake">Installing from the Source Distribution (without
+        make)</a> </li>
+  <li> <a href="#debian">Installing on Debian</a> </li>
+</ol>
+</div>
+
+<a name="download"></a>
+<h2> Downloading Epydoc </h2>
+
+<p> Epydoc can be downloaded from the <a 
+href="http://sourceforge.net/project/showfiles.php?group_id=32455">SourceForge
+download page</a>.  Epydoc is available in five formats: </p>
+<ul>
+  <li> RPM (<code>.noarch.rpm</code>) </li>
+  <li> Windows installer (<code>.win32.exe</code>) </li>
+  <li> Source install (<code>.tar.gz</code>) </li>
+  <li> Source install (<code>.zip</code>) </li>
+  <li> Source RPM (<code>.src.rpm</code>) </li>
+</ul>
+
+<p> If you are installing on RedHat, I recommend that you use the RPM
+file.  If you are installing on Windows, I recommended that you use
+the windows installer.  Otherwise, you should use one of the source
+install files. </p>
+
+<a name="subversion"></a>
+<h2> Getting Epydoc from Subversion </h2>
+
+<p> If you wish to keep up on the latest developments, you can get the
+latest version of epydoc from the <a
+href="http://sourceforge.net/svn/?group_id=32455">subversion
+repository</a>:</p>
+
+<div class="screen"><pre>
+<code class="prompt">[/home/edloper]$</code> <code class="user">svn co https://epydoc.svn.sourceforge.net/svnroot/epydoc/trunk/epydoc epydoc</code>
+<code class="prompt">[/home/edloper]$</code> <code class="user">ls epydoc</code>
+Makefile  doc  man  sandbox  src
+</pre>
+</div>
+
+<p> This will create a directory named <code>epydoc</code> containing
+the latest version of epydoc.  The epydoc package itself is in
+<code>epydoc/src/epydoc</code> (so adding <code>epydoc/src</code> to
+your PYTHONPATH will let you use it).  You should periodically update
+your copy of the subversion repository, to make sure you have all the
+latest changes:
+
+<div class="screen"><pre>
+<code class="prompt">[/home/edloper/epydoc]$</code> <code class="user">svn up</code>
+</pre>
+</div>
+
+<p>You can browse the subversion repository <a
+href="http://epydoc.svn.sourceforge.net/viewcvs.cgi/epydoc/trunk/epydoc/">here</a>.</p>
+
+
+<a name="rpm"></a>
+<h2> Installing from the RPM File </h2>
+
+<ol>
+  <li> Download the RPM file to a directory of your choice.
+
+  <li> Use <code>rpm</code> to install the new package.
+
+<div class="screen"><pre>
+<code class="prompt">[/tmp]$</code> <code class="user">su</code>
+Password:
+<code class="prompt">[/tmp]#</code> <code class="user">rpm -i epydoc-3.0.1.noarch.rpm</code>
+</pre></div></li>
+
+<li> Once epydoc is installed, you can delete the RPM file.
+
+<div class="screen"><pre>
+<code class="prompt">[/tmp]#</code> <code class="user">rm epydoc-3.0.1.rpm</code>
+</pre></div> </li>
+</ol>
+
+<a name="win"></a>
+<h2> Installing from the Windows Installer </h2>
+
+<ol>
+  <li> Download and run <code>epydoc-3.0.1.win32.exe</code>. </li>
+  <li> Follow the on-screen instructions.  Epydoc will be installed in
+  the <code>epydoc</code> subdirectory of your Python installation
+  directory (typically <code>C:\Python23\</code>). </li>
+  <li> The windows installer creates two scripts in the
+  <code>Scripts</code> subdirectory of your Python installation
+  directory: <code>epydoc.pyw</code> opens the graphical user
+  interface, and <code>epydoc.py</code> calls the command line
+  interface.  If you'd like, you can create shortcuts from these
+  scripts to more convenient locations (such as your desktop or start
+  menu). </li>
+  <li> Once epydoc is installed, you can delete
+  <code>epydoc-3.0.1.win32.exe</code>. </li>
+</ol>
+
+<a name="src"></a>
+<h2> Installing from the Source Distribution (using make)</h2>
+
+<ol>
+  <li> Download an epydoc source distribution
+  to a directory of your choice, and uncompress it.
+
+<div class="screen"><pre>
+<code class="prompt">[/tmp]$</code> <code class="user">wget -q http://prdownloads.sourceforge.net/epydoc/epydoc-3.0.1.tar.gz</code>
+<code class="prompt">[/tmp]$</code> <code class="user">gunzip epydoc-3.0.1.tar.gz</code>
+<code class="prompt">[/tmp]$</code> <code class="user">tar -xvf epydoc-3.0.1.tar</code>
+</pre></div></li>
+
+  <li> Use "<code>make install</code>" in the <code>eydoc-3.0.1/</code>
+  directory to install epydoc.
+
+<div class="screen"><pre>
+<code class="prompt">[/tmp]$</code> <code class="user">cd epydoc-3.0.1/</code>
+<code class="prompt">[/tmp/epydoc-3.0.1]$</code> <code class="user">su</code>
+Password:
+<code class="prompt">[/tmp/epydoc-3.0.1]#</code> <code class="user">make install</code>
+running install
+running build
+<i>[...]</i>
+copying build/scripts/epydoc -> /usr/bin
+changing mode of /usr/bin/epydoc to 100775
+</pre></div></li>
+
+<li> If you'd like to keep a local copy of the documentation, then use
+"<code>make installdocs</code>".  By default, this will install the
+documentation to <code>/usr/share/doc/</code> and the man pages to
+<code>/usr/share/man/</code>.  If you would prefer to install
+documentation to different directories (such as
+<code>/usr/lib/doc</code>), then edit the <code>MAN</code> and
+<code>DOC</code> variables at the top of <code>Makefile</code> before
+running "<code>make installdocs</code>".
+
+<div class="screen"><pre>
+<code class="prompt">[/tmp/epydoc-3.0.1]#</code> <code class="user">make installdocs</code>
+</pre></div></li>
+
+<li> Once epydoc is installed, you can delete the installation
+directory and the source distribution file.
+
+<div class="screen"><pre>
+<code class="prompt">[/tmp/epydoc-3.0.1]#</code> <code class="user">cd ..</code>
+<code class="prompt">[/tmp]#</code> <code class="user">rm -r epydoc-3.0.1</code>
+<code class="prompt">[/tmp]#</code> <code class="user">rm epydoc-3.0.1.tar</code>
+</pre></div> </li>
+</ol>
+
+<a name="nomake"></a>
+<h2> Installing from the Source Distribution (without make)</h2>
+
+<ol>
+  <li> Download an epydoc source distribution
+  to a directory of your choice, and uncompress it.
+
+<div class="screen"><pre>
+<code class="prompt">[/tmp]$</code> <code class="user">wget -q http://prdownloads.sourceforge.net/epydoc/epydoc-3.0.1.tar.gz</code>
+<code class="prompt">[/tmp]$</code> <code class="user">gunzip epydoc-3.0.1.tar.gz</code>
+<code class="prompt">[/tmp]$</code> <code class="user">tar -xvf epydoc-3.0.1.tar</code>
+</pre></div></li>
+
+  <li> Use the <code>setup.py</code> script in the
+  <code>eydoc-3.0.1/</code> directory to install epydoc. 
+
+<div class="screen"><pre>
+<code class="prompt">[/tmp]$</code> <code class="user">cd epydoc-3.0.1/</code>
+<code class="prompt">[/tmp/epydoc-3.0.1]$</code> <code class="user">su</code>
+Password:
+<code class="prompt">[/tmp/epydoc-3.0.1]#</code> <code class="user">python setup.py install</code>
+running install
+running build
+<i>[...]</i>
+copying build/scripts/epydoc -> /usr/bin
+changing mode of /usr/bin/epydoc to 100775
+<code class="prompt">[/tmp/epydoc-3.0.1]#</code> <code class="user">cd ..</code>
+<code class="prompt">[/tmp]#</code>
+</pre></div></li>
+
+<li> If you'd like to keep a local copy of the documentation, then
+copy it to a permanant location, such as <code>/usr/share/doc/</code>.
+You may also want to copy the man pages to a permanant location, such
+as <code>/usr/share/man/</code>.
+
+<div class="screen"><pre>
+<code class="prompt">[/tmp]#</code> <code class="user">cp -r epydoc-3.0.1/doc/ /usr/share/doc/epydoc/</code>
+<code class="prompt">[/tmp]#</code> <code class="user">cp epydoc-3.0.1/man/* /usr/share/man/</code>
+</pre></div> </li>
+
+<li> Once epydoc is installed, you can delete the installation
+directory and the source distribution file.
+
+<div class="screen"><pre>
+<code class="prompt">[/tmp]#</code> <code class="user">rm -r epydoc-3.0.1</code>
+<code class="prompt">[/tmp]#</code> <code class="user">rm epydoc-3.0.1.tar</code>
+</pre></div> </li>
+</ol>
+
+<a name="debian"></a>
+<h2> Installing on Debian </h2>
+
+<p> Epydoc 2.1 is available as a <i>testing</i> debian package
+(<code>python-epydoc</code>).  The epydoc documentation is also
+available as a package (<code>epydoc-doc</code>). </p>
+
+</div>
+<table width="100%" class="navbox" cellpadding="1" cellspacing="0">
+  <tr>
+  <a class="nav" href="index.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="index.html">
+    Home</a></td></a>
+  <a class="nav" href="installing.html">
+    <td align="center" width="20%" class="navselect" class="nav">
+    <a class="nav" href="installing.html">
+    Installing Epydoc</a></td></a>
+  <a class="nav" href="using.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="using.html">
+    Using Epydoc</a></td></a>
+  <a class="nav" href="epytext.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="epytext.html">
+    Epytext</a></td></a>
+  <td align="center" width="20%" class="nav">
+    
+    <A href="http://sourceforge.net/projects/epydoc"> 
+    <IMG src="sflogo.png" 
+    width="88" height="26" border="0" alt="SourceForge"
+    align="top"/></A></td>
+    </tr>
+</table>
+</body>
+</html>
diff --git a/doc/license.html b/doc/license.html
new file mode 100644
index 0000000..fa7c557
--- /dev/null
+++ b/doc/license.html
@@ -0,0 +1,65 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html> <head>
+<title>Epydoc License</title>
+<link rel="stylesheet" href="epydoc.css" type="text/css"/>
+</head>
+<!-- $Id: license.html 1211 2006-04-10 19:38:37Z edloper $ -->
+<body>
+<div class="body">
+<h1> Epydoc License </h1>
+
+<p>Epydoc is governed by the MIT open-source license:</p>
+
+<div class="box">
+<p>Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and any associated
+documentation files (the "Software"), to deal in the Software
+without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense,
+and/or sell copies of the Software, and to permit persons to
+whom the Software is furnished to do so, subject to the
+following conditions:</p>
+
+<p> The above copyright notice and this permission notice
+shall be included in all copies or substantial portions of the
+Software. </p>
+
+<p> The software is provided "as is", without warranty of any
+kind, express or implied, including but not limited to the
+warranties of merchantability, fitness for a particular
+purpose and noninfringement. In no event shall the authors or
+copyright holders be liable for any claim, damages or other
+liability, whether in an action of contract, tort or
+otherwise, arising from, out of or in connection with the
+software or the use or other dealings in the software. </p>
+</div>
+
+</div>
+<table width="100%" class="navbox" cellpadding="1" cellspacing="0">
+  <tr>
+  <a class="nav" href="index.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="index.html">
+    Home</a></td></a>
+  <a class="nav" href="installing.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="installing.html">
+    Installing Epydoc</a></td></a>
+  <a class="nav" href="using.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="using.html">
+    Using Epydoc</a></td></a>
+  <a class="nav" href="epytext.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="epytext.html">
+    Epytext</a></td></a>
+  <td align="center" width="20%" class="nav">
+    
+    <A href="http://sourceforge.net/projects/epydoc"> 
+    <IMG src="sflogo.png" 
+    width="88" height="26" border="0" alt="SourceForge"
+    align="top"/></A></td>
+    </tr>
+</table>
+</body>
+</html>
diff --git a/doc/manual-docstring.html b/doc/manual-docstring.html
new file mode 100644
index 0000000..f2369ec
--- /dev/null
+++ b/doc/manual-docstring.html
@@ -0,0 +1,122 @@
+<?xml version="1.0" encoding="ascii" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ascii" />
+<meta name="generator" content="Docutils 0.5: http://docutils.sourceforge.net/" />
+<title>Python Docstrings</title>
+<link rel="stylesheet" href="custom.css" type="text/css" />
+</head>
+<body>
+<div class="document" id="python-docstrings">
+<h1 class="title">Python Docstrings</h1>
+
+<!-- $Id: manual-docstring.txt 1575 2007-03-08 21:28:07Z edloper $ -->
+<p>Python documentation strings (or <em>docstrings</em>) provide a convenient way of
+associating documentation with Python modules, functions, classes, and methods.
+An object's docsting is defined by including a string constant as the first
+statement in the object's definition. For example, the following function
+defines a docstring:</p>
+<pre class="py-doctest">
+<span class="py-keyword">def</span> <span class="py-defname">x_intercept</span>(m, b):
+    <span class="py-string">"""</span>
+<span class="py-string">    Return the x intercept of the line y=m*x+b.  The x intercept of a</span>
+<span class="py-string">    line is the point at which it crosses the x axis (y=0).</span>
+<span class="py-string">    """</span>
+    return -b/m</pre>
+<p>Docstrings can be accessed from the interpreter and from Python programs
+using the "<tt class="docutils literal"><span class="pre">__doc__</span></tt>" attribute:</p>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">print</span> x_intercept.__doc__
+    Return the x intercept of the line y=m*x+b.  The x intercept of a
+    line <span class="py-keyword">is</span> the point at which it crosses the x axis (y=0).</pre>
+<p>The <a class="reference external" href="http://web.lfw.org/python/pydoc.html">pydoc</a> module, which became part of <a class="reference external" href="http://www.python.org/doc/current/lib/module-pydoc.html">the standard library</a> in Python 2.1,
+can be used to display information about a Python object, including its
+docstring:</p>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">from</span> pydoc <span class="py-keyword">import</span> help
+
+<span class="py-prompt">>>> </span>help(x_intercept)
+Help on function x_intercept <span class="py-keyword">in</span> module __main__:
+
+x_intercept(m, b)
+    Return the x intercept of the line y=m*x+b.  The x intercept of a
+    line <span class="py-keyword">is</span> the point at which it crosses the x axis (y=0).</pre>
+<p>For more information about Python docstrings, see the <a class="reference external" href="http://www.python.org/doc/current/tut/node6.html#docstrings">Python Tutorial</a> or
+the O'Reilly Network article <a class="reference external" href="http://www.onlamp.com/lpt/a/python/2001/05/17/docstrings.html">Python Documentation Tips and Tricks</a>.</p>
+<div class="section" id="variable-docstrings">
+<h1>Variable docstrings</h1>
+<!-- [xx] this should be somewhere else, i guess... -->
+<p>Python don't support directly docstrings on variables: there is no attribute
+that can be attached to variables and retrieved interactively like the
+<tt class="docutils literal"><span class="pre">__doc__</span></tt> attribute on modules, classes and functions.</p>
+<p>While the language doesn't directly provides for them, Epydoc supports
+<em>variable docstrings</em>: if a variable assignment statement is immediately
+followed by a bare string literal, then that assignment is treated as a
+docstring for that variable. In classes, variable assignments at the class
+definition level are considered class variables; and assignments to instance
+variables in the constructor (<tt class="docutils literal"><span class="pre">__init__</span></tt>) are considered instance variables:</p>
+<pre class="py-doctest">
+<span class="py-keyword">class</span> <span class="py-defname">A</span>:
+    x = 22
+    <span class="py-string">"""Docstring for class variable A.x"""</span>
+
+    <span class="py-keyword">def</span> <span class="py-defname">__init__</span>(self, a):
+        self.y = a
+        <span class="py-string">""</span>"Docstring <span class="py-keyword">for</span> instance variable A.y</pre>
+<p>Variables may also be documented using <em>comment docstrings</em>. If a variable
+assignment is immediately preceeded by a comment whose lines begin with the
+special marker '<tt class="docutils literal"><span class="pre">#:</span></tt>', or is followed on the same line by such a comment,
+then it is treated as a docstring for that variable:</p>
+<pre class="py-doctest">
+<span class="py-comment">#: docstring for x</span>
+x = 22
+x = 22 <span class="py-comment">#: docstring for x</span></pre>
+<p>Notice that variable docstrings are only available for documentation when the
+source code is available for <em>parsing</em>: it is not possible to retrieve variable</p>
+</div>
+<div class="section" id="items-visibility">
+<h1>Items visibility</h1>
+<p>Any Python object (modules, classes, functions, variables...) can be <em>public</em>
+or <em>private</em>. Usually the object name decides the object visibility: objects
+whose name starts with an underscore and doesn't end with an underscore are
+considered private. All the other objects (including the "magic functions" such
+as <tt class="docutils literal"><span class="pre">__add__</span></tt>) are public.</p>
+<p>For each module and class, Epydoc generates pages with both public and private
+methods. A Javascript snippet allows you to toggle the visibility of private
+objects.</p>
+<p>If a module wants to hide some of the objects it contains (either defined in
+the module itself or imported from other modules), it can explicitly list the
+names if its <a class="reference external" href="http://www.python.org/doc/2.4.3/ref/import.html">public names</a> in the <tt class="docutils literal"><span class="pre">__all__</span></tt> variable.</p>
+<p>If a module defines the <tt class="docutils literal"><span class="pre">__all__</span></tt> variable, Epydoc uses its content to decide
+if the module objects are public or private.</p>
+</div>
+</div>
+<table width="100%" class="navbox" cellpadding="1" cellspacing="0">
+  <tr>
+  <a class="nav" href="index.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="index.html">
+    Home</a></td></a>
+  <a class="nav" href="installing.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="installing.html">
+    Installing Epydoc</a></td></a>
+  <a class="nav" href="using.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="using.html">
+    Using Epydoc</a></td></a>
+  <a class="nav" href="epytext.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="epytext.html">
+    Epytext</a></td></a>
+  <td align="center" width="20%" class="nav">
+    
+    <A href="http://sourceforge.net/projects/epydoc"> 
+    <IMG src="sflogo.png" 
+    width="88" height="26" border="0" alt="SourceForge"
+    align="top"/></A></td>
+    </tr>
+</table>
+</body>
+</html>
diff --git a/doc/manual-epytext.html b/doc/manual-epytext.html
new file mode 100644
index 0000000..7650f1f
--- /dev/null
+++ b/doc/manual-epytext.html
@@ -0,0 +1,1035 @@
+<?xml version="1.0" encoding="ascii" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ascii" />
+<meta name="generator" content="Docutils 0.5: http://docutils.sourceforge.net/" />
+<title>The Epytext Markup Language</title>
+<link rel="stylesheet" href="custom.css" type="text/css" />
+</head>
+<body>
+<div class="document" id="the-epytext-markup-language">
+<h1 class="title">The Epytext Markup Language</h1>
+
+<!-- $Id: manual-epytext.txt 1547 2007-02-21 17:34:54Z dvarrazzo $ -->
+<div class="section" id="a-brief-introduction">
+<h1>A Brief Introduction</h1>
+<p>Epytext is a simple lightweight markup language that lets you add formatting
+and structue to docstrings. Epydoc uses that formatting and structure to
+produce nicely formatted API documentation. The following example (which has
+an unusually high ratio of documentaiton to code) illustrates some of the
+basic features of epytext:</p>
+<pre class="py-doctest">
+<span class="py-keyword">def</span> <span class="py-defname">x_intercept</span>(m, b):
+    <span class="py-string">"""</span>
+<span class="py-string">    Return the x intercept of the line M{y=m*x+b}.  The X{x intercept}</span>
+<span class="py-string">    of a line is the point at which it crosses the x axis (M{y=0}).</span>
+
+<span class="py-string">    This function can be used in conjuction with L{z_transform} to</span>
+<span class="py-string">    find an arbitrary function's zeros.</span>
+
+<span class="py-string">    @type  m: number</span>
+<span class="py-string">    @param m: The slope of the line.</span>
+<span class="py-string">    @type  b: number</span>
+<span class="py-string">    @param b: The y intercept of the line.  The X{y intercept} of a</span>
+<span class="py-string">              line is the point at which it crosses the y axis (M{x=0}).</span>
+<span class="py-string">    @rtype:   number</span>
+<span class="py-string">    @return:  the x intercept of the line M{y=m*x+b}.</span>
+<span class="py-string">    """</span>
+    return -b/m</pre>
+<p>You can compare this function definition with the <a class="reference external" href="http://epydoc.sourceforge.net/examples/epytext_example-module.html#x_intercept">API documentation</a>
+generated by epydoc. Note that:</p>
+<ul class="simple">
+<li>Paragraphs are separated by blank lines.</li>
+<li>Inline markup has the form "<em>x</em><tt class="docutils literal"><span class="pre">{</span></tt>...<tt class="docutils literal"><span class="pre">}</span></tt>", where "<em>x</em>" is a
+single capital letter. This example uses inline markup to mark mathematical
+expressions ("<tt class="docutils literal"><span class="pre">M{...}</span></tt>"); terms that should be indexed ("<tt class="docutils literal"><span class="pre">X{...}</span></tt>");
+and links to the documentation of other objects ("<tt class="docutils literal"><span class="pre">L{...}</span></tt>").</li>
+<li>Descriptions of parameters, return values, and types are marked with
+"<tt class="docutils literal"><span class="pre">@</span></tt><em>field</em><tt class="docutils literal"><span class="pre">:</span></tt>" or "<tt class="docutils literal"><span class="pre">@</span></tt><em>field arg</em><tt class="docutils literal"><span class="pre">:</span></tt>", where "<em>field</em>"
+identifies the kind of description, and "<em>arg</em>" specifies what object is
+described.</li>
+</ul>
+<p>Epytext is intentionally very lightweight. If you wish to use a more
+expressive markup language, I recommend <a class="reference external" href="manual-othermarkup.html#restructuredtext">reStructuredText</a>.</p>
+</div>
+<div class="section" id="epytext-language-overview">
+<h1>Epytext Language Overview</h1>
+<p>Epytext is a lightweight markup language for Python docstrings. The epytext
+markup language is used by epydoc to parse docstrings and create structured API
+documentation. Epytext markup is broken up into the following categories:</p>
+<ul>
+<li><p class="first"><strong>Block Structure</strong> divides the docstring into nested blocks of text, such
+as <em>paragraphs</em> and <em>lists</em>.</p>
+<blockquote>
+<p>o <strong>Basic Blocks</strong> are the basic unit of block structure.</p>
+<p>o <strong>Hierarchical blocks</strong> represent the nesting structure of the docstring.</p>
+</blockquote>
+</li>
+<li><p class="first"><strong>Inline Markup</strong> marks regions of text within a basic block with properties,
+such as italics and hyperlinks.</p>
+</li>
+</ul>
+</div>
+<div class="section" id="block-structure">
+<h1>Block Structure</h1>
+<p>Block structure is encoded using indentation, blank lines, and a handful of
+special character sequences.</p>
+<ul class="simple">
+<li>Indentation is used to encode the nesting structure of hierarchical blocks.
+The indentation of a line is defined as the number of leading spaces on that
+line; and the indentation of a block is typically the indentation of its
+first line.</li>
+<li>Blank lines are used to separate blocks. A blank line is a line that only
+contains whitespace.</li>
+<li>Special character sequences are used to mark the beginnings of some blocks.
+For example, '<tt class="docutils literal"><span class="pre">-</span></tt>' is used as a bullet for unordered list items, and
+'<tt class="docutils literal"><span class="pre">>>></span></tt>' is used to mark <a class="reference external" href="manual-epytext.html#doctest-blocks">doctest blocks</a>.</li>
+</ul>
+<p>The following sections describe how to use each type of block structure.</p>
+<div class="section" id="paragraphs">
+<h2>Paragraphs</h2>
+<p>A paragraph is the simplest type of basic block. It consists of one or more
+lines of text. Paragraphs must be left justified (i.e., every line must have
+the same indentation). The following example illustrates how paragraphs can be
+used:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="50%" />
+<col width="50%" />
+</colgroup>
+<thead valign="bottom">
+<tr><th class="head">Docstring Input</th>
+<th class="head">Rendered Output</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr><td><pre class="py-doctest">
+<span class="py-keyword">def</span> <span class="py-defname">example</span>():
+    <span class="py-string">"""</span>
+<span class="py-string">    This is a paragraph.  Paragraphs can</span>
+<span class="py-string">    span multiple lines, and can contain</span>
+<span class="py-string">    I{inline markup}.</span>
+
+<span class="py-string">    This is another paragraph.  Paragraphs</span>
+<span class="py-string">    are separated by blank lines.</span>
+<span class="py-string">    """</span>
+    *[...]*</pre>
+</td>
+<td><p class="first">This is a paragraph. Paragraphs can span multiple lines,
+and contain <em>inline markup</em>.</p>
+<p class="last">This is another paragraph. Paragraphs are separated from each
+other by blank lines.</p>
+</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="lists">
+<h2>Lists</h2>
+<p>Epytext supports both ordered and unordered lists. A list consists of one or
+more consecutive <em>list items</em> of the same type (ordered or unordered), with the
+same indentation. Each list item is marked by a <em>bullet</em>. The bullet for
+unordered list items is a single dash character (<tt class="docutils literal"><span class="pre">-</span></tt>). Bullets for ordered
+list items consist of a series of numbers followed by periods, such as
+<tt class="docutils literal"><span class="pre">12.</span></tt> or <tt class="docutils literal"><span class="pre">1.2.8.</span></tt>.</p>
+<p>List items typically consist of a bullet followed by a space and a single
+paragraph. The paragraph may be indented more than the list item's bullet;
+often, the paragraph is intended two or three characters, so that its left
+margin lines up with the right side of the bullet. The following example
+illustrates a simple ordered list.</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="50%" />
+<col width="50%" />
+</colgroup>
+<thead valign="bottom">
+<tr><th class="head">Docstring Input</th>
+<th class="head">Rendered Output</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr><td><pre class="py-doctest">
+<span class="py-keyword">def</span> <span class="py-defname">example</span>():
+    <span class="py-string">"""</span>
+<span class="py-string">    1. This is an ordered list item.</span>
+
+<span class="py-string">    2. This is a another ordered list</span>
+<span class="py-string">    item.</span>
+
+<span class="py-string">    3. This is a third list item.  Note that</span>
+<span class="py-string">       the paragraph may be indented more</span>
+<span class="py-string">       than the bullet.</span>
+<span class="py-string">    """</span>
+    *[...]*</pre>
+</td>
+<td><ol class="first last arabic simple">
+<li>This is an ordered list item.</li>
+<li>This is another ordered list item.</li>
+<li>This is a third list item. Note that the paragraph may be
+indented more than the bullet.</li>
+</ol>
+</td>
+</tr>
+</tbody>
+</table>
+<p>List items can contain more than one paragraph; and they can also contain
+sublists, <cite>literal blocks</cite>, and <cite>doctest blocks</cite>. All of the blocks contained
+by a list item must all have equal indentation, and that indentation must be
+greater than or equal to the indentation of the list item's bullet. If the
+first contained block is a paragraph, it may appear on the same line as the
+bullet, separated from the bullet by one or more spaces, as shown in the
+previous example. All other block types must follow on separate lines.</p>
+<p>Every list must be separated from surrounding blocks by indentation:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="50%" />
+<col width="50%" />
+</colgroup>
+<thead valign="bottom">
+<tr><th class="head">Docstring Input</th>
+<th class="head">Rendered Output</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr><td><pre class="py-doctest">
+<span class="py-keyword">def</span> <span class="py-defname">example</span>():
+    <span class="py-string">"""</span>
+<span class="py-string">    This is a paragraph.</span>
+<span class="py-string">      1. This is a list item.</span>
+<span class="py-string">      2. This a second list</span>
+<span class="py-string">         item.</span>
+<span class="py-string">           - This is a sublist</span>
+<span class="py-string">    """</span>
+    [...]</pre>
+</td>
+<td><p class="first">This is a paragraph.</p>
+<ol class="last arabic simple">
+<li>This is a list item.</li>
+<li>This is a second list item.<ul>
+<li>This is a sublist.</li>
+</ul>
+</li>
+</ol>
+</td>
+</tr>
+</tbody>
+</table>
+<p>Note that sublists must be separated from the blocks in their parent list
+item by indentation. In particular, the following docstring generates an error,
+since the sublist is not separated from the paragraph in its parent list item
+by indentation:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="50%" />
+<col width="50%" />
+</colgroup>
+<thead valign="bottom">
+<tr><th class="head">Docstring Input</th>
+<th class="head">Rendered Output</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr><td><pre class="py-doctest">
+<span class="py-keyword">def</span> <span class="py-defname">example</span>():
+    <span class="py-string">"""</span>
+<span class="py-string">    1. This is a list item.  Its</span>
+<span class="py-string">    paragraph is indented 7 spaces.</span>
+<span class="py-string">    - This is a sublist.  It is</span>
+<span class="py-string">      indented 7 spaces.</span>
+<span class="py-string">    """</span>
+    <span class="py-comment">#[...]</span></pre>
+</td>
+<td><strong>L5: Error: Lists must be indented.</strong></td>
+</tr>
+</tbody>
+</table>
+<p>The following example illustrates how lists can be used:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="50%" />
+<col width="50%" />
+</colgroup>
+<thead valign="bottom">
+<tr><th class="head">Docstring Input</th>
+<th class="head">Rendered Output</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr><td><pre class="py-doctest">
+<span class="py-keyword">def</span> <span class="py-defname">example</span>():
+    <span class="py-string">"""</span>
+<span class="py-string">    This is a paragraph.</span>
+<span class="py-string">      1. This is a list item.</span>
+<span class="py-string">        - This is a sublist.</span>
+<span class="py-string">        - The sublist contains two</span>
+<span class="py-string">          items.</span>
+<span class="py-string">            - The second item of the</span>
+<span class="py-string">              sublist has its own sublist.</span>
+
+<span class="py-string">      2. This list item contains two</span>
+<span class="py-string">         paragraphs and a doctest block.</span>
+
+<span class="py-string">         >>> print 'This is a doctest block'</span>
+<span class="py-string">         This is a doctest block</span>
+
+<span class="py-string">         This is the second paragraph.</span>
+<span class="py-string">    """</span>
+    <span class="py-comment">#[...]</span></pre>
+</td>
+<td><p class="first">This is a paragraph.</p>
+<ol class="last arabic">
+<li><p class="first">This is a list item.</p>
+<ul class="simple">
+<li>This is a sublist.</li>
+<li>The sublist contains two items.<ul>
+<li>The second item of the sublist has its own own sublist.</li>
+</ul>
+</li>
+</ul>
+</li>
+<li><p class="first">This list item contains two paragraphs and a doctest block.</p>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">print</span> <span class="py-string">'This is a doctest block'</span>
+<span class="py-output">This is a doctest block</span></pre>
+<p>This is the second paragraph.</p>
+</li>
+</ol>
+</td>
+</tr>
+</tbody>
+</table>
+<p>Epytext will treat any line that begins with a bullet as a list item. If you
+want to include bullet-like text in a paragraph, then you must either ensure
+that it is not at the beginning of the line, or use <a class="reference external" href="manual-epytext.html#escaping">escaping</a> to prevent
+epytext from treating it as markup:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="50%" />
+<col width="50%" />
+</colgroup>
+<thead valign="bottom">
+<tr><th class="head">Docstring Input</th>
+<th class="head">Rendered Output</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr><td><pre class="py-doctest">
+<span class="py-keyword">def</span> <span class="py-defname">example</span>():
+    <span class="py-string">"""</span>
+<span class="py-string">    This sentence ends with the number</span>
+<span class="py-string">    1.  Epytext can't tell if the "1."</span>
+<span class="py-string">    is a bullet or part of the paragraph,</span>
+<span class="py-string">    so it generates an error.</span>
+<span class="py-string">    """</span>
+    <span class="py-comment">#[...]</span></pre>
+</td>
+<td><strong>L4: Error: Lists must be indented.</strong></td>
+</tr>
+<tr><td><pre class="py-doctest">
+<span class="py-keyword">def</span> <span class="py-defname">example</span>():
+    <span class="py-string">"""</span>
+<span class="py-string">    This sentence ends with the number 1.</span>
+
+<span class="py-string">    This sentence ends with the number</span>
+<span class="py-string">    E{1}.</span>
+<span class="py-string">    """</span>
+    <span class="py-comment">#[...]</span></pre>
+</td>
+<td><p class="first">This sentence ends with the number 1.</p>
+<p class="last">This sentence ends with the number 1.</p>
+</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="sections">
+<h2>Sections</h2>
+<p>A section consists of a heading followed by one or more child blocks.</p>
+<ul class="simple">
+<li>The heading is a single underlined line of text. Top-level section headings
+are underlined with the '<tt class="docutils literal"><span class="pre">=</span></tt>' character; subsection headings are
+underlined with the '<tt class="docutils literal"><span class="pre">-</span></tt>' character; and subsubsection headings are
+underlined with the '<tt class="docutils literal"><span class="pre">~</span></tt>' character. The length of the underline must
+exactly match the length of the heading.</li>
+<li>The child blocks can be paragraphs, lists, literal blocks, doctest blocks,
+or sections. Each child must have equal indentation, and that indentation
+must be greater than or equal to the heading's indentation.</li>
+</ul>
+<p>The following example illustrates how sections can be used:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="50%" />
+<col width="50%" />
+</colgroup>
+<thead valign="bottom">
+<tr><th class="head">Docstring Input</th>
+<th class="head">Rendered Output</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr><td><pre class="py-doctest">
+<span class="py-keyword">def</span> <span class="py-defname">example</span>():
+    <span class="py-string">"""</span>
+<span class="py-string">    This paragraph is not in any section.</span>
+
+<span class="py-string">    Section 1</span>
+<span class="py-string">    =========</span>
+<span class="py-string">      This is a paragraph in section 1.</span>
+
+<span class="py-string">      Section 1.1</span>
+<span class="py-string">      -----------</span>
+<span class="py-string">      This is a paragraph in section 1.1.</span>
+
+<span class="py-string">    Section 2</span>
+<span class="py-string">    =========</span>
+<span class="py-string">      This is a paragraph in section 2.</span>
+<span class="py-string">    """</span>
+    <span class="py-comment">#[...]</span></pre>
+</td>
+<td><p class="h1 first">Section 1</p>
+<p>This is a paragraph in section 1.</p>
+<p class="h2">Section 1.1</p>
+<p>This is a paragraph in section 1.1.</p>
+<p class="h1">Section 2</p>
+<p class="last">This is a paragraph in section 2.</p>
+</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="literal-blocks">
+<h2>Literal Blocks</h2>
+<p>Literal blocks are used to represent "preformatted" text. Everything within a
+literal block should be displayed exactly as it appears in plaintext. In
+particular:</p>
+<ul class="simple">
+<li>Spaces and newlines are preserved.</li>
+<li>Text is shown in a monospaced font.</li>
+<li>Inline markup is not detected.</li>
+</ul>
+<p>Literal blocks are introduced by paragraphs ending in the special sequence
+"<tt class="docutils literal"><span class="pre">::</span></tt>". Literal blocks end at the first line whose indentation is equal to
+or less than that of the paragraph that introduces them. The following example
+shows how literal blocks can be used:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="50%" />
+<col width="50%" />
+</colgroup>
+<thead valign="bottom">
+<tr><th class="head">Docstring Input</th>
+<th class="head">Rendered Output</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr><td><pre class="py-doctest">
+<span class="py-keyword">def</span> <span class="py-defname">example</span>():
+    <span class="py-string">"""</span>
+<span class="py-string">    The following is a literal block::</span>
+
+<span class="py-string">        Literal /</span>
+<span class="py-string">               / Block</span>
+
+<span class="py-string">    This is a paragraph following the</span>
+<span class="py-string">    literal block.</span>
+<span class="py-string">    """</span>
+    <span class="py-comment">#[...]</span></pre>
+</td>
+<td><p class="first">The following is a literal block:</p>
+<pre class="literal-block">
+Literal /
+       / Block
+</pre>
+<p class="last">This is a paragraph following the literal block.</p>
+</td>
+</tr>
+</tbody>
+</table>
+<p>Literal blocks are indented relative to the paragraphs that introduce them;
+for example, in the previous example, the word "Literal" is displayed with four
+leading spaces, not eight. Also, note that the double colon ("<tt class="docutils literal"><span class="pre">::</span></tt>") that
+introduces the literal block is rendered as a single colon.</p>
+</div>
+<div class="section" id="doctest-blocks">
+<h2>Doctest Blocks</h2>
+<p>Doctest blocks contain examples consisting of Python expressions and their
+output. Doctest blocks can be used by the doctest module to test the
+documented object. Doctest blocks begin with the special sequence
+"<tt class="docutils literal"><span class="pre">>>></span></tt>". Doctest blocks are delimited from surrounding blocks by blank lines.
+Doctest blocks may not contain blank lines. The following example shows how
+doctest blocks can be used:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="50%" />
+<col width="50%" />
+</colgroup>
+<thead valign="bottom">
+<tr><th class="head">Docstring Input</th>
+<th class="head">Rendered Output</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr><td><pre class="py-doctest">
+<span class="py-keyword">def</span> <span class="py-defname">example</span>():
+    <span class="py-string">"""</span>
+<span class="py-string">    The following is a doctest block:</span>
+
+<span class="py-string">        >>> print (1+3,</span>
+<span class="py-more">    </span><span class="py-string">    ...        3+5)</span>
+<span class="py-string">        (4, 8)</span>
+<span class="py-string">        >>> 'a-b-c-d-e'.split('-')</span>
+<span class="py-string">        ['a', 'b', 'c', 'd', 'e']</span>
+
+<span class="py-string">    This is a paragraph following the</span>
+<span class="py-string">    doctest block.</span>
+<span class="py-string">    """</span>
+    <span class="py-comment">#[...]</span></pre>
+</td>
+<td><p class="first">The following is a doctest block:</p>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">print</span> (1+3,
+<span class="py-more">... </span>       3+5)
+<span class="py-output">(4, 8)</span>
+<span class="py-output"></span><span class="py-prompt">>>> </span><span class="py-string">'a-b-c-d-e'</span>.split(<span class="py-string">'-'</span>)
+<span class="py-output">['a', 'b', 'c', 'd', 'e']</span></pre>
+<p class="last">This is a paragraph following the doctest block.</p>
+</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="fields">
+<h2>Fields</h2>
+<p>Fields are used to describe specific properties of a documented object. For
+example, fields can be used to define the parameters and return value of a
+function; the instance variables of a class; and the author of a module. Each
+field is marked by a <em>field tag</em>, which consist of an at sign ('<tt class="docutils literal"><span class="pre">@</span></tt>')
+followed by a <em>field name</em>, optionally followed by a space and a <em>field
+argument</em>, followed by a colon ('<tt class="docutils literal"><span class="pre">:</span></tt>'). For example, '<tt class="docutils literal"><span class="pre">@return:</span></tt>' and
+'<tt class="docutils literal"><span class="pre">@param</span> <span class="pre">x:</span></tt>' are field tags.</p>
+<p>Fields can contain paragraphs, lists, literal blocks, and doctest blocks.
+All of the blocks contained by a field must all have equal indentation, and
+that indentation must be greater than or equal to the indentation of the
+field's tag. If the first contained block is a paragraph, it may appear on the
+same line as the field tag, separated from the field tag by one or more spaces.
+All other block types must follow on separate lines.</p>
+<p>Fields must be placed at the end of the docstring, after the description of
+the object. Fields may be included in any order.</p>
+<p>Fields do not need to be separated from other blocks by a blank line. Any line
+that begins with a field tag followed by a space or newline is considered a
+field.</p>
+<p>The following example illustrates how fields can be used:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="50%" />
+<col width="50%" />
+</colgroup>
+<thead valign="bottom">
+<tr><th class="head">Docstring Input</th>
+<th class="head">Rendered Output</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr><td><pre class="py-doctest">
+<span class="py-keyword">def</span> <span class="py-defname">example</span>():
+    <span class="py-string">"""</span>
+<span class="py-string">    @param x: This is a description of</span>
+<span class="py-string">        the parameter x to a function.</span>
+<span class="py-string">        Note that the description is</span>
+<span class="py-string">        indented four spaces.</span>
+<span class="py-string">    @type x: This is a description of</span>
+<span class="py-string">        x's type.</span>
+<span class="py-string">    @return: This is a description of</span>
+<span class="py-string">        the function's return value.</span>
+
+<span class="py-string">        It contains two paragraphs.</span>
+<span class="py-string">    """</span>
+    <span class="py-comment">#[...]</span></pre>
+</td>
+<td><dl class="first last docutils">
+<dt><strong>Parameters:</strong></dt>
+<dd><p class="first"><strong>x</strong> - This is a description of the parameter x to a function.
+Note that the description is indented four spaces.</p>
+<blockquote class="last">
+<em>(type=This is a description of x's type.)</em></blockquote>
+</dd>
+<dt><strong>Returns:</strong></dt>
+<dd><p class="first">This is a description of the function's return value.</p>
+<p class="last">It contains two paragraphs.</p>
+</dd>
+</dl>
+</td>
+</tr>
+</tbody>
+</table>
+<p>For a list of the fields that are supported by epydoc, see the <cite>epydoc fields</cite>
+chapter.</p>
+</div>
+</div>
+<div class="section" id="inline-markup">
+<h1>Inline Markup</h1>
+<p>Inline markup has the form '<tt class="docutils literal"><span class="pre">x{...}</span></tt>', where <tt class="docutils literal"><span class="pre">x</span></tt> is a single capital letter
+that specifies how the text between the braces should be rendered. Inline
+markup is recognized within paragraphs and section headings. It is <em>not</em>
+recognized within literal and doctest blocks. Inline markup can contain
+multiple words, and can span multiple lines. Inline markup may be nested.</p>
+<p>A matching pair of curly braces is only interpreted as inline markup if the
+left brace is immediately preceeded by a capital letter. So in most cases, you
+can use curly braces in your text without any form of escaping. However, you do
+need to escape curly braces when:</p>
+<ol class="arabic simple">
+<li>You want to include a single (un-matched) curly brace.</li>
+<li>You want to preceed a matched pair of curly braces with a capital letter.</li>
+</ol>
+<p>Note that there is no valid Python expression where a pair of matched curly
+braces is immediately preceeded by a capital letter (except within string
+literals). In particular, you never need to escape braces when writing Python
+dictionaries. See also <a class="reference external" href="manual-epytext.html#escaping">escaping</a>.</p>
+<div class="section" id="basic-inline-markup">
+<h2>Basic Inline Markup</h2>
+<blockquote>
+Epytext defines four types of inline markup that specify how text should be
+displayed:</blockquote>
+<ul class="simple">
+<li><tt class="docutils literal"><span class="pre">I{...}</span></tt>: Italicized text.</li>
+<li><tt class="docutils literal"><span class="pre">B{...}</span></tt>: Bold-faced text.</li>
+<li><tt class="docutils literal"><span class="pre">C{...}</span></tt>: Source code or a Python identifier.</li>
+<li><tt class="docutils literal"><span class="pre">M{...}</span></tt>: A mathematical expression.</li>
+</ul>
+<p>By default, source code is rendered in a fixed width font; and mathematical
+expressions are rendered in italics. But those defaults may be changed by
+modifying the CSS stylesheet. The following example illustrates how the four
+basic markup types can be used:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="50%" />
+<col width="50%" />
+</colgroup>
+<thead valign="bottom">
+<tr><th class="head">Docstring Input</th>
+<th class="head">Rendered Output</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr><td><pre class="py-doctest">
+<span class="py-keyword">def</span> <span class="py-defname">example</span>():
+    <span class="py-string">"""</span>
+<span class="py-string">    I{B{Inline markup} may be nested; and</span>
+<span class="py-string">    it may span} multiple lines.</span>
+
+<span class="py-string">      - I{Italicized text}</span>
+<span class="py-string">      - B{Bold-faced text}</span>
+<span class="py-string">      - C{Source code}</span>
+<span class="py-string">      - M{Math}</span>
+
+<span class="py-string">    Without the capital letter, matching</span>
+<span class="py-string">    braces are not interpreted as markup:</span>
+<span class="py-string">    C{my_dict={1:2, 3:4}}.</span>
+<span class="py-string">    """</span>
+    <span class="py-comment">#[...]</span></pre>
+</td>
+<td><p class="first"><strong>Inline markup</strong> <em>may be nested</em>; and it may span  multiple lines.</p>
+<ul class="simple">
+<li><em>Italicized text</em></li>
+<li><strong>Bold-faced text</strong></li>
+<li><tt class="docutils literal"><span class="pre">Source</span> <span class="pre">code</span></tt></li>
+<li>Math: <em>m*x+b</em></li>
+</ul>
+<p class="last">Without the capital letter, matching braces are not interpreted as
+markup: <tt class="docutils literal"><span class="pre">my_dict={1:2,</span> <span class="pre">3:4}</span></tt>.</p>
+</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="urls">
+<h2>URLs</h2>
+<p>The inline markup construct <tt class="docutils literal"><span class="pre">U{</span></tt><em>text<url></em><tt class="docutils literal"><span class="pre">}</span></tt> is used to create links
+to external URLs and URIs. '<em>text</em>' is the text that should be displayed for
+the link, and '<em>url</em>' is the target of the link. If you wish to use the URL as
+the text for the link, you can simply write "<tt class="docutils literal"><span class="pre">U{</span></tt><em>url</em><tt class="docutils literal"><span class="pre">}</span></tt>". Whitespace
+within URL targets is ignored. In particular, URL targets may be split over
+multiple lines. The following example illustrates how URLs can be used:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="50%" />
+<col width="50%" />
+</colgroup>
+<thead valign="bottom">
+<tr><th class="head">Docstring Input</th>
+<th class="head">Rendered Output</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr><td><pre class="py-doctest">
+<span class="py-keyword">def</span> <span class="py-defname">example</span>():
+    <span class="py-string">"""</span>
+<span class="py-string">    - U{www.python.org}</span>
+<span class="py-string">    - U{http://www.python.org}</span>
+<span class="py-string">    - U{The epydoc homepage<http://</span>
+<span class="py-string">    epydoc.sourceforge.net>}</span>
+<span class="py-string">    - U{The B{Python} homepage</span>
+<span class="py-string">    <www.python.org>}</span>
+<span class="py-string">    - U{Edward Loper<mailto:edloper@</span>
+<span class="py-string">    gradient.cis.upenn.edu>}</span>
+<span class="py-string">    """</span>
+    <span class="py-comment">#[...]</span></pre>
+</td>
+<td><ul class="first last simple">
+<li><a class="reference external" href="http://www.python.org">www.python.org</a></li>
+<li><a class="reference external" href="http://www.python.org">http://www.python.org</a></li>
+<li><a class="reference external" href="http://epydoc.sourceforge.net">The epydoc homepage</a></li>
+<li><a class="reference external" href="http://www.python.org">The <strong>Python</strong> homepage</a></li>
+<li><a class="reference external" href="mailto:edloper@gradient.cis.upenn.edu">Edward Loper</a></li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="documentation-crossreference-links">
+<h2>Documentation Crossreference Links</h2>
+<p>The inline markup construct '<tt class="docutils literal"><span class="pre">L{</span></tt><em>text<object></em><tt class="docutils literal"><span class="pre">}</span></tt>' is used to create
+links to the documentation for other Python objects. '<em>text</em>' is the text that
+should be displayed for the link, and '<em>object</em>' is the name of the Python
+object that should be linked to. If you wish to use the name of the Python
+object as the text for the link, you can simply write <tt class="docutils literal"><span class="pre">L{</span></tt><em>object</em>}``.
+Whitespace within object names is ignored. In particular, object names may be
+split over multiple lines. The following example illustrates how documentation
+crossreference links can be used:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="50%" />
+<col width="50%" />
+</colgroup>
+<thead valign="bottom">
+<tr><th class="head">Docstring Input</th>
+<th class="head">Rendered Output</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr><td><pre class="py-doctest">
+<span class="py-keyword">def</span> <span class="py-defname">example</span>():
+    <span class="py-string">"""</span>
+<span class="py-string">    - L{x_transform}</span>
+<span class="py-string">    - L{search<re.search>}</span>
+<span class="py-string">    - L{The I{x-transform} function</span>
+<span class="py-string">    <x_transform>}</span>
+<span class="py-string">    """</span>
+    <span class="py-comment">#[...]</span></pre>
+</td>
+<td><ul class="first last simple">
+<li><a class="reference external" href="http://www.example.com">x_transform</a></li>
+<li><a class="reference external" href="http://www.example.com">search</a></li>
+<li><a class="reference external" href="http://www.example.com">The x-transform function</a></li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+<p>In order to find the object that corresponds to a given name, epydoc checks the
+following locations, in order:</p>
+<ol class="arabic simple">
+<li>If the link is made from a class or method docstring, then epydoc checks for
+a method, instance variable, or class variable with the given name.</li>
+<li>Next, epydoc looks for an object with the given name in the current module.</li>
+<li>Epydoc then tries to import the given name as a module. If the current
+module is contained in a package, then epydoc will also try importing the
+given name from all packages containing the current module.</li>
+<li>Epydoc then tries to divide the given name into a module name and an
+object name, and to import the object from the module. If the current module
+is contained in a package, then epydoc will also try importing the module
+name from all packages containing the current module.</li>
+<li>Finally, epydoc looks for a class name in any module with the given name.
+This is only returned if there is a single class with such name.</li>
+</ol>
+<p>If no object is found that corresponds with the given name, then epydoc
+issues a warning.</p>
+</div>
+<div class="section" id="indexed-terms">
+<h2>Indexed Terms</h2>
+<p>Epydoc automatically creates an index of term definitions for the API
+documentation. The inline markup construct '<tt class="docutils literal"><span class="pre">X{...}</span></tt>' is used to mark terms
+for inclusion in the index. The term itself will be italicized; and a link will
+be created from the index page to the location of the term in the text. The
+following example illustrates how index terms can be used:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="50%" />
+<col width="50%" />
+</colgroup>
+<thead valign="bottom">
+<tr><th class="head">Docstring Input</th>
+<th class="head">Rendered Output</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr><td><pre class="py-doctest">
+<span class="py-keyword">def</span> <span class="py-defname">example</span>():
+    <span class="py-string">"""</span>
+<span class="py-string">    An X{index term} is a term that</span>
+<span class="py-string">    should be included in the index.</span>
+<span class="py-string">    """</span>
+    <span class="py-comment">#[...]</span></pre>
+</td>
+<td><p class="first">An <em>index term</em> is a term that should be included in the index.</p>
+<blockquote class="last">
+<table border="1" class="docutils">
+<colgroup>
+<col width="46%" />
+<col width="54%" />
+</colgroup>
+<thead valign="bottom">
+<tr><th class="head" colspan="2">Index</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr><td>index term</td>
+<td><em>example</em></td>
+</tr>
+<tr><td>x intercept</td>
+<td><em>x_intercept</em></td>
+</tr>
+<tr><td>y intercept</td>
+<td><em>x_intercept</em></td>
+</tr>
+</tbody>
+</table>
+</blockquote>
+</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="symbols">
+<h2>Symbols</h2>
+<p>Symbols are used to insert special characters in your documentation. A symbol
+has the form '<tt class="docutils literal"><span class="pre">S{code}</span></tt>', where code is a symbol code that specifies what
+character should be produced. The following example illustrates how symbols can
+be used to generate special characters:</p>
+<!-- This data file has been placed in the public domain. -->
+<!-- Derived from the Unicode character mappings available from
+<http://www.w3.org/2003/entities/xml/>.
+Processed by unicode2rstsubs.py, part of Docutils:
+<http://docutils.sourceforge.net>. -->
+<table border="1" class="docutils">
+<colgroup>
+<col width="50%" />
+<col width="50%" />
+</colgroup>
+<thead valign="bottom">
+<tr><th class="head">Docstring Input</th>
+<th class="head">Rendered Output</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr><td><pre class="py-doctest">
+<span class="py-keyword">def</span> <span class="py-defname">example</span>():
+    <span class="py-string">"""</span>
+<span class="py-string">    Symbols can be used in equations:</span>
+
+<span class="py-string">      - S{sum}S{alpha}/x S{<=} S{beta}</span>
+
+<span class="py-string">    S{<-} and S{larr} both give left</span>
+<span class="py-string">    arrows.  Some other arrows are</span>
+<span class="py-string">    S{rarr}, S{uarr}, and S{darr}.</span>
+<span class="py-string">    """</span>
+    <span class="py-comment">#[...]</span></pre>
+</td>
+<td><p class="first">Symbols can be used in equations:</p>
+<ul class="simple">
+<li>∑ α/<em>x</em> ≤ β</li>
+</ul>
+<p class="last">← and ← both give left
+arrows.  Some other arrows are
+→, ↑, and ↓.</p>
+</td>
+</tr>
+</tbody>
+</table>
+<p>Although symbols can be quite useful, you should keep in mind that they can
+make it harder to read your docstring in plaintext. In general, symbols should
+be used sparingly. For a complete list of the symbols that are currently
+supported, see the reference documentation for <a class="reference external" href="http://epydoc.sourceforge.net/api/epydoc.markup.epytext-module.html#SYMBOLS"><tt class="docutils literal"><span class="pre">epytext.SYMBOLS</span></tt></a>.</p>
+</div>
+<div class="section" id="escaping">
+<h2>Escaping</h2>
+<p>Escaping is used to write text that would otherwise be interpreted as epytext
+markup. Epytext was carefully constructed to minimize the need for this type
+of escaping; but sometimes, it is unavoidable. Escaped text has the form
+'<tt class="docutils literal"><span class="pre">E{</span></tt><em>code</em><tt class="docutils literal"><span class="pre">}</span></tt>', where code is an escape code that specifies what
+character should be produced. If the escape code is a single character (other
+than '<tt class="docutils literal"><span class="pre">{</span></tt>' or '<tt class="docutils literal"><span class="pre">}</span></tt>'), then that character is produced. For example, to
+begin a paragraph with a dash (which would normally signal a list item), write
+'<tt class="docutils literal"><span class="pre">E{-}</span></tt>'. In addition, two special escape codes are defined: '<tt class="docutils literal"><span class="pre">E{lb}</span></tt>'
+produces a left curly brace ('<tt class="docutils literal"><span class="pre">{</span></tt>'); and '<tt class="docutils literal"><span class="pre">E{rb}</span></tt>' produces a right curly
+brace ('<tt class="docutils literal"><span class="pre">}</span></tt>'). The following example illustrates how escaping can be used:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="50%" />
+<col width="50%" />
+</colgroup>
+<thead valign="bottom">
+<tr><th class="head">Docstring Input</th>
+<th class="head">Rendered Output</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr><td><pre class="py-doctest">
+<span class="py-keyword">def</span> <span class="py-defname">example</span>():
+    <span class="py-string">"""</span>
+<span class="py-string">    This paragraph ends with two</span>
+<span class="py-string">    colons, but does not introduce</span>
+<span class="py-string">    a literal blockE{:}E{:}</span>
+
+<span class="py-string">    E{-} This is not a list item.</span>
+
+<span class="py-string">    Escapes can be used to write</span>
+<span class="py-string">    unmatched curly braces:</span>
+<span class="py-string">    E{rb}E{lb}</span>
+<span class="py-string">    """</span>
+    <span class="py-comment">#[...]</span></pre>
+</td>
+<td><p class="first">This paragraph ends with two colons, but does not introduce a literal
+block::</p>
+<p>- This is not a list item.</p>
+<p class="last">Escapes can be used to write unmatched curly braces: }{</p>
+</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="graphs">
+<h2>Graphs</h2>
+<p>The inline markup construct '<tt class="docutils literal"><span class="pre">G{</span></tt><em>graphtype args...</em><tt class="docutils literal"><span class="pre">}</span></tt>' is used to
+insert automatically generated graphs. The following graphs generation
+constructions are currently defines:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="50%" />
+<col width="50%" />
+</colgroup>
+<thead valign="bottom">
+<tr><th class="head">Markup</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr><td><tt class="docutils literal"><span class="pre">G{classtree</span></tt>  <em>classes...</em><tt class="docutils literal"><span class="pre">}</span></tt></td>
+<td>Display a class hierarchy for the given
+class or classes (including all
+superclasses & subclasses). If no class
+is specified, and the directive is used
+in a class's docstring, then that
+class's class hierarchy will be
+displayed.</td>
+</tr>
+<tr><td><tt class="docutils literal"><span class="pre">G{packagetree</span></tt>  <em>modules...</em><tt class="docutils literal"><span class="pre">}</span></tt></td>
+<td>Display a package hierarchy for the
+given module or modules (including all
+subpackages and submodules). If no
+module is specified, and the directive
+is used in a module's docstring, then
+that module's package hierarchy will be
+displayed.</td>
+</tr>
+<tr><td><tt class="docutils literal"><span class="pre">G{importgraph</span></tt>  <em>modules...</em><tt class="docutils literal"><span class="pre">}</span></tt></td>
+<td>Display an import graph for the given
+module or modules. If no module is
+specified, and the directive is used in
+a module's docstring, then that
+module's import graph will be
+displayed.</td>
+</tr>
+<tr><td><tt class="docutils literal"><span class="pre">G{callgraph</span></tt>  <em>functions...</em><tt class="docutils literal"><span class="pre">}</span></tt></td>
+<td>Display a call graph for the given
+function or functions. If no function
+is specified, and the directive is used
+in a function's docstring, then that
+function's call graph will be
+displayed.</td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+<div class="section" id="characters">
+<h1>Characters</h1>
+<div class="section" id="valid-characters">
+<h2>Valid Characters</h2>
+<p>Valid characters for an epytext docstring are space (<tt class="docutils literal"><span class="pre">\040</span></tt>); newline
+(<tt class="docutils literal"><span class="pre">\012</span></tt>); and any letter, digit, or punctuation, as defined by the current
+locale. Control characters (<tt class="docutils literal"><span class="pre">\000</span></tt>-<tt class="docutils literal"><span class="pre">\010`</span> <span class="pre">and</span> <span class="pre">``\013</span></tt>-<tt class="docutils literal"><span class="pre">\037</span></tt>) are not
+valid content characters. Tabs (<tt class="docutils literal"><span class="pre">\011</span></tt>) are expanded to spaces, using the
+same algorithm used by the Python parser. Carridge-return/newline pairs
+(<tt class="docutils literal"><span class="pre">\015\012</span></tt>) are converted to newlines.</p>
+</div>
+<div class="section" id="content-characters">
+<h2>Content Characters</h2>
+<p>Characters in a docstring that are not involved in markup are called <em>content characters</em>. Content characters are always displayed as-is. In particular, HTML
+codes are not passed through. For example, consider the following example:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="50%" />
+<col width="50%" />
+</colgroup>
+<thead valign="bottom">
+<tr><th class="head">Docstring Input</th>
+<th class="head">Rendered Output</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr><td><pre class="py-doctest">
+<span class="py-keyword">def</span> <span class="py-defname">example</span>():
+    <span class="py-string">"""</span>
+<span class="py-string">    <B>test</B></span>
+<span class="py-string">    """</span>
+    <span class="py-comment">#[...]</span></pre>
+</td>
+<td><B>test</B></td>
+</tr>
+</tbody>
+</table>
+<p>The docstring is rendered as <tt class="docutils literal"><span class="pre"><B>test</B></span></tt>, and not as the word "test" in
+bold face.</p>
+</div>
+<div class="section" id="spaces-and-newlines">
+<h2>Spaces and Newlines</h2>
+<p>In general, spaces and newlines within docstrings are treated as soft spaces.
+In other words, sequences of spaces and newlines (that do not contain a blank
+line) are rendered as a single space, and words may wrapped at spaces. However,
+within literal blocks and doctest blocks, spaces and newlines are preserved,
+and no word-wrapping occurs; and within URL targets and documentation link
+targets, whitespace is ignored.</p>
+</div>
+</div>
+</div>
+<table width="100%" class="navbox" cellpadding="1" cellspacing="0">
+  <tr>
+  <a class="nav" href="index.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="index.html">
+    Home</a></td></a>
+  <a class="nav" href="installing.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="installing.html">
+    Installing Epydoc</a></td></a>
+  <a class="nav" href="using.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="using.html">
+    Using Epydoc</a></td></a>
+  <a class="nav" href="epytext.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="epytext.html">
+    Epytext</a></td></a>
+  <td align="center" width="20%" class="nav">
+    
+    <A href="http://sourceforge.net/projects/epydoc"> 
+    <IMG src="sflogo.png" 
+    width="88" height="26" border="0" alt="SourceForge"
+    align="top"/></A></td>
+    </tr>
+</table>
+</body>
+</html>
diff --git a/doc/manual-fields.html b/doc/manual-fields.html
new file mode 100644
index 0000000..adcb32e
--- /dev/null
+++ b/doc/manual-fields.html
@@ -0,0 +1,553 @@
+<?xml version="1.0" encoding="ascii" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ascii" />
+<meta name="generator" content="Docutils 0.5: http://docutils.sourceforge.net/" />
+<title>Epydoc Fields</title>
+<link rel="stylesheet" href="custom.css" type="text/css" />
+</head>
+<body>
+<div class="document" id="epydoc-fields">
+<h1 class="title">Epydoc Fields</h1>
+
+<!-- $Id: manual-fields.txt 1554 2007-02-27 03:31:56Z edloper $ -->
+<p>Fields are used to describe specific properties of a documented object. For
+example, fields can be used to define the parameters and return value of a
+function; the instance variables of a class; and the author of a module. Each
+field consists of a <em>tag</em>, an optional <em>argument</em>, and a <em>body</em>.</p>
+<ul class="simple">
+<li>The <em>tag</em> is a case-insensitive word that indicates what kind of
+documentation is given by the field.</li>
+<li>The optional <em>argument</em> specifies what object, parameter, or group is
+documented by the field.</li>
+<li>The <em>body</em> contains the main contents of the field.</li>
+</ul>
+<div class="section" id="field-markup">
+<h1>Field Markup</h1>
+<p>Each docstring markup langauge marks fields differently. The following table
+shows the basic fields syntax for each markup language. For more information,
+see the definition of field syntax for each markup language.</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="33%" />
+<col width="33%" />
+<col width="33%" />
+</colgroup>
+<thead valign="bottom">
+<tr><th class="head">Epytext</th>
+<th class="head">reStructuredText</th>
+<th class="head">Javadoc</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr><td><pre class="first last literal-block">
+@<em>tag</em>: <em>body</em>...
+@<em>tag</em> <em>arg</em>: <em>body</em>...
+</pre>
+</td>
+<td><pre class="first last literal-block">
+:<em>tag</em>: <em>body</em>...
+:<em>tag</em> <em>arg</em>: <em>body</em>...
+</pre>
+</td>
+<td><pre class="first last literal-block">
+@<em>tag</em> <em>body</em>...
+@<em>tag</em> <em>arg</em> <em>body</em>...
+</pre>
+</td>
+</tr>
+<tr><td><a class="reference external" href="manual-epytext.html#fields">Definition of epytext fields</a></td>
+<td><a class="reference external" href="http://docutils.sourceforge.net/spec/rst/reStructuredText.html#field-lists">Definition of ReStructuredText fields</a></td>
+<td><a class="reference external" href="http://java.sun.com/j2se/1.4.2/docs/tooldocs/solaris/javadoc.html#javadoctags">Definition of Javadoc fields</a></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="supported-fields">
+<h1>Supported Fields</h1>
+<p>The following table lists the fields that epydoc currently recognizes. Field
+tags are written using epytext markup; if you are using a different markup
+language, then you should adjust the markup accordingly.</p>
+<div class="section" id="functions-and-methods-parameters">
+<h2>Functions and Methods parameters</h2>
+<dl class="docutils">
+<dt><tt class="docutils literal"><span class="pre">@param</span></tt> <em>p</em>: ...</dt>
+<dd>A description of the parameter <em>p</em> for a function or method.</dd>
+<dt><tt class="docutils literal"><span class="pre">@type</span></tt> <em>p</em>: ...</dt>
+<dd>The expected type for the parameter <em>p</em>.</dd>
+<dt><tt class="docutils literal"><span class="pre">@return</span></tt>: ...</dt>
+<dd>The return value for a function or method.</dd>
+<dt><tt class="docutils literal"><span class="pre">@rtype</span></tt>: ...</dt>
+<dd>The type of the return value for a function or method.</dd>
+<dt><tt class="docutils literal"><span class="pre">@keyword</span></tt> <em>p</em>: ...</dt>
+<dd>A description of the keyword parameter <em>p</em>.</dd>
+<dt><tt class="docutils literal"><span class="pre">@raise</span></tt> <em>e</em>: ...</dt>
+<dd>A description of the circumstances under which a function or method
+raises exception <em>e</em>.</dd>
+</dl>
+<p>These tags can be used to specify attributes of parameters and return value
+of function and methods. These tags are usually put in the the docstring of the
+function to be documented.</p>
+<div class="note">
+<p class="first admonition-title">Note</p>
+<p><strong>constructor parameters</strong></p>
+<p class="last">In C extension modules, extension classes cannot have a docstring attached
+to the <tt class="docutils literal"><span class="pre">__init__</span></tt> function; consequently it is not possible to document
+parameters and exceptions raised by the class constructor. To overcome this
+shortcoming, the tags <tt class="docutils literal"><span class="pre">@param</span></tt>, <tt class="docutils literal"><span class="pre">@keyword</span></tt>, <tt class="docutils literal"><span class="pre">@type</span></tt>, <tt class="docutils literal"><span class="pre">@exception</span></tt>
+are also allowed to appear in the class docstring. In this case they refer
+to constructor parameters.</p>
+</div>
+<p><tt class="docutils literal"><span class="pre">@param</span></tt> fields should be used to document any explicit parameter
+(including the keyword parameter). <tt class="docutils literal"><span class="pre">@keyword</span></tt> fields should only be used
+for non-explicit keyword parameters:</p>
+<pre class="py-doctest">
+<span class="py-keyword">def</span> <span class="py-defname">plant</span>(seed, *tools, **options):
+    <span class="py-string">"""</span>
+<span class="py-string">    @param seed: The seed that should be planted.</span>
+<span class="py-string">    @param tools: Tools that should be used to plant the seed.</span>
+<span class="py-string">    @param options: Any extra options for the planting.</span>
+
+<span class="py-string">    @keyword dig_deep: Plant the seed deep under ground.</span>
+<span class="py-string">    @keyword soak: Soak the seed before planting it.</span>
+<span class="py-string">    """</span>
+    <span class="py-comment">#[...]</span></pre>
+<p>Since the <tt class="docutils literal"><span class="pre">@type</span></tt> field allows for arbitrary text, it does not
+automatically create a crossreference link to the specified type, and is
+not written in fixed-width font by default. If you want to create a
+crossreference link to the type, or to write the type in a fixed-width
+font, then you must use inline markup:</p>
+<pre class="py-doctest">
+<span class="py-keyword">def</span> <span class="py-defname">ponder</span>(person, time):
+    <span class="py-string">"""</span>
+<span class="py-string">    @param person: Who should think.</span>
+<span class="py-string">    @type person: L{Person} or L{Animal}</span>
+<span class="py-string">    @param time: How long they should think.</span>
+<span class="py-string">    @type time: C{int} or C{float}</span>
+<span class="py-string">    """</span>
+    <span class="py-comment">#[...]</span></pre>
+</div>
+<div class="section" id="variables-parameters">
+<h2>Variables parameters</h2>
+<dl class="docutils">
+<dt><tt class="docutils literal"><span class="pre">@ivar</span></tt> <em>v</em>: ...</dt>
+<dd>A description of the class instance variable <em>v</em>.</dd>
+<dt><tt class="docutils literal"><span class="pre">@cvar</span></tt> <em>v</em>: ...</dt>
+<dd>A description of the static class variable <em>v</em>.</dd>
+<dt><tt class="docutils literal"><span class="pre">@var</span></tt> <em>v</em>: ...</dt>
+<dd>A description of the module variable <em>v</em>.</dd>
+<dt><tt class="docutils literal"><span class="pre">@type</span></tt> <em>v</em>: ...</dt>
+<dd>The type of the variable <em>v</em>.</dd>
+</dl>
+<p>These tags are usually put in a module or class docstring. If the sources can
+be parsed by Epydoc it is also possible to document the variable in their own
+docstrings: see <a class="reference external" href="manual-docstring.html#variable-docstrings">variable docstrings</a></p>
+<p>Epydoc considers class variables the ones defined directly defined in the
+class body. A common Python idiom is to create instance variables settings
+their default value in the class instead of the constructor (hopefully if the
+default is immutable...).</p>
+<p>If you want to force Epydoc to classify as instance variable one whose default
+value is set at class level, you can describe it using the tag <tt class="docutils literal"><span class="pre">@ivar</span></tt> in the
+context of a variable docstring:</p>
+<pre class="py-doctest">
+<span class="py-keyword">class</span> <span class="py-defname">B</span>:
+    y = 42
+    <span class="py-string">"""@ivar: This is an instance variable."""</span></pre>
+</div>
+<div class="section" id="properties-parameters">
+<h2>Properties parameters</h2>
+<dl class="docutils">
+<dt><tt class="docutils literal"><span class="pre">@type</span></tt>: ...</dt>
+<dd>The type of the property.</dd>
+</dl>
+<p>The <tt class="docutils literal"><span class="pre">@type</span></tt> tag can be attached toa property docstring to specify its type.</p>
+</div>
+<div class="section" id="grouping-and-sorting">
+<h2>Grouping and Sorting</h2>
+<dl class="docutils">
+<dt><tt class="docutils literal"><span class="pre">@group</span></tt> <em>g</em>: <em>c1,...,cn</em></dt>
+<dd>Organizes a set of related children of a module or class into a group.
+<em>g</em> is the name of the group; and <em>c1,...,cn</em> are the names of the
+children in the group. To define multiple groups, use multiple group
+fields.</dd>
+<dt><tt class="docutils literal"><span class="pre">@sort</span></tt>: <em>c1,...,cn</em></dt>
+<dd>Specifies the sort order for the children of a module or class.
+<em>c1,...,cn</em> are the names of the children, in the order in which they
+should appear. Any children that are not included in this list will
+appear after the children from this list, in alphabetical order.</dd>
+</dl>
+<p>These tags can be used to present groups of related items in a logical way.
+They apply to modules and classes docstrings.</p>
+<p>For the <tt class="docutils literal"><span class="pre">@group</span></tt> and <tt class="docutils literal"><span class="pre">@sort</span></tt> tags, asterisks (<tt class="docutils literal"><span class="pre">*</span></tt>) can be used to
+specify multiple children at once. An asterisk in a child name will match
+any substring:</p>
+<pre class="py-doctest">
+<span class="py-keyword">class</span> <span class="py-defname">widget</span>(size, weight, age):
+    <span class="py-string">"""</span>
+<span class="py-string">    @group Tools: zip, zap, *_tool</span>
+<span class="py-string">    @group Accessors: get_*</span>
+<span class="py-string">    @sort: get_*, set_*, unpack_*, cut</span>
+<span class="py-string">    """</span>
+    <span class="py-comment">#[...]</span></pre>
+<div class="note">
+<p class="first admonition-title">Note</p>
+<p><strong>group markers</strong></p>
+<p>It is also possible to group set of related items enclosing them
+into special comment starting with the <em>group markers</em> '<tt class="docutils literal"><span class="pre">#{</span></tt>' and '<tt class="docutils literal"><span class="pre">#}</span></tt>'
+The group title can be specified after the opening group marker. Example:</p>
+<pre class="py-doctest">
+<span class="py-comment">#{ Database access functions</span>
+
+<span class="py-keyword">def</span> <span class="py-defname">read</span>(id):
+    <span class="py-comment">#[...]</span>
+
+<span class="py-keyword">def</span> <span class="py-defname">store</span>(item):
+    <span class="py-comment">#[...]</span>
+
+<span class="py-keyword">def</span> <span class="py-defname">delete</span>(id):
+    <span class="py-comment">#[...]</span>
+
+<span class="py-comment"># groups can't be nested, so a closing marker is not required here.</span>
+
+<span class="py-comment">#{ Web publish functions</span>
+
+<span class="py-keyword">def</span> <span class="py-defname">get</span>(request):
+    <span class="py-comment">#[...]</span>
+
+<span class="py-keyword">def</span> <span class="py-defname">post</span>(request):
+    <span class="py-comment">#[...]</span>
+
+<span class="py-comment">#}</span></pre>
+</div>
+</div>
+<div class="section" id="notes-and-warnings">
+<h2>Notes and Warnings</h2>
+<dl class="docutils">
+<dt><tt class="docutils literal"><span class="pre">@note</span></tt>: ...</dt>
+<dd>A note about an object. Multiple note fields may be used to list
+separate notes.</dd>
+<dt><tt class="docutils literal"><span class="pre">@attention</span></tt>: ...</dt>
+<dd>An important note about an object. Multiple attention fields may be
+used to list separate notes.</dd>
+<dt><tt class="docutils literal"><span class="pre">@bug</span></tt>: ...</dt>
+<dd><p class="first">A description of a bug in an object. Multiple bug fields may be used to
+report separate bugs.</p>
+<div class="note last">
+<p class="first admonition-title">Note</p>
+<p class="last">If any <tt class="docutils literal"><span class="pre">@bug</span></tt> field is used, the HTML writer will generate a the page
+<tt class="docutils literal"><span class="pre">bug-index.html</span></tt>, containing links to all the items tagged with
+the field.</p>
+</div>
+</dd>
+<dt><tt class="docutils literal"><span class="pre">@warning</span></tt>: ...</dt>
+<dd>A warning about an object. Multiple warning fields may be used to
+report separate warnings.</dd>
+</dl>
+</div>
+<div class="section" id="status">
+<h2>Status</h2>
+<dl class="docutils">
+<dt><tt class="docutils literal"><span class="pre">@version</span></tt>: ...</dt>
+<dd>The current version of an object.</dd>
+<dt><tt class="docutils literal"><span class="pre">@todo</span></tt> [<em>ver</em>]: ...</dt>
+<dd><p class="first">A planned change to an object. If the optional argument ver is given,
+then it specifies the version for which the change will be made.
+Multiple todo fields may be used if multiple changes are planned.</p>
+<div class="note last">
+<p class="first admonition-title">Note</p>
+<p class="last">If any <tt class="docutils literal"><span class="pre">@todo</span></tt> field is used, the HTML writer will generate a the
+page <tt class="docutils literal"><span class="pre">todo-index.html</span></tt>, containing links to all the items tagged
+with the field.</p>
+</div>
+</dd>
+<dt><tt class="docutils literal"><span class="pre">@deprecated</span></tt>: ...</dt>
+<dd>Indicates that an object is deprecated. The body of the field describe
+the reason why the object is deprecated.</dd>
+<dt><tt class="docutils literal"><span class="pre">@since</span></tt>: ...</dt>
+<dd>The date or version when an object was first introduced.</dd>
+<dt><tt class="docutils literal"><span class="pre">@status</span></tt>: ...</dt>
+<dd>The current status of an object.</dd>
+<dt><tt class="docutils literal"><span class="pre">@change</span></tt>: ...</dt>
+<dd>A change log entry for this object.</dd>
+<dt><tt class="docutils literal"><span class="pre">@permission</span></tt>: ...</dt>
+<dd>The object access permission, for systems such Zope/Plone supporting
+this concept. It may be used more than once to specify multiple
+permissions.</dd>
+</dl>
+</div>
+<div class="section" id="formal-conditions">
+<h2>Formal Conditions</h2>
+<dl class="docutils">
+<dt><tt class="docutils literal"><span class="pre">@requires</span></tt>: ...</dt>
+<dd>A requirement for using an object. Multiple requires fields may be
+used if an object has multiple requirements.</dd>
+<dt><tt class="docutils literal"><span class="pre">@precondition</span></tt>: ...</dt>
+<dd>A condition that must be true before an object is used. Multiple
+precondition fields may be used if an object has multiple preconditions.</dd>
+<dt><tt class="docutils literal"><span class="pre">@postcondition</span></tt>: ...</dt>
+<dd>A condition that is guaranteed to be true after an object is used.
+Multiple postcondition fields may be used if an object has multiple
+postconditions.</dd>
+<dt><tt class="docutils literal"><span class="pre">@invariant</span></tt>: ...</dt>
+<dd>A condition which should always be true for an object. Multiple
+invariant fields may be used if an object has multiple invariants.</dd>
+</dl>
+</div>
+<div class="section" id="bibliographic-information">
+<h2>Bibliographic Information</h2>
+<dl class="docutils">
+<dt><tt class="docutils literal"><span class="pre">@author</span></tt>: ...</dt>
+<dd>The author(s) of an object. Multiple author fields may be used if an
+object has multiple authors.</dd>
+<dt><tt class="docutils literal"><span class="pre">@organization</span></tt>: ...</dt>
+<dd>The organization that created or maintains an object.</dd>
+<dt><tt class="docutils literal"><span class="pre">@copyright</span></tt>: ...</dt>
+<dd>The copyright information for an object.</dd>
+<dt><tt class="docutils literal"><span class="pre">@license</span></tt>: ...</dt>
+<dd>The licensing information for an object.</dd>
+<dt><tt class="docutils literal"><span class="pre">@contact</span></tt>: ...</dt>
+<dd>Contact information for the author or maintainer of a module, class,
+function, or method. Multiple contact fields may be used if an object
+has multiple contacts.</dd>
+</dl>
+</div>
+<div class="section" id="other-fields">
+<h2>Other fields</h2>
+<dl class="docutils">
+<dt><tt class="docutils literal"><span class="pre">@summary</span></tt>: ...</dt>
+<dd>A summary description for an object. This description overrides the
+default summary (which is constructed from the first sentence of the
+object's description).</dd>
+<dt><tt class="docutils literal"><span class="pre">@see</span></tt>: ...</dt>
+<dd>A description of a related topic. see fields typically use
+documentation crossreference links or external hyperlinks that link to
+the related topic.</dd>
+</dl>
+</div>
+</div>
+<div class="section" id="fields-synonyms">
+<h1>Fields synonyms</h1>
+<p>Several fields have <em>synonyms</em>, or alternate tags. The following table lists
+all field synonyms. Field tags are written using epytext markup; if you are
+using a different markup language, then you should adjust the markup
+accordingly.</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="50%" />
+<col width="50%" />
+</colgroup>
+<thead valign="bottom">
+<tr><th class="head">Name</th>
+<th class="head">Synonims</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr><td><tt class="docutils literal"><span class="pre">@param</span></tt> <em>p</em>: ...</td>
+<td><div class="first last line-block">
+<div class="line"><tt class="docutils literal"><span class="pre">@parameter</span></tt> <em>p</em>: ...</div>
+<div class="line"><tt class="docutils literal"><span class="pre">@arg</span></tt> <em>p</em>: ...</div>
+<div class="line"><tt class="docutils literal"><span class="pre">@argument</span></tt> <em>p</em>: ...</div>
+</div>
+</td>
+</tr>
+<tr><td><tt class="docutils literal"><span class="pre">@return</span></tt>: ...</td>
+<td><tt class="docutils literal"><span class="pre">@returns</span></tt>: ...</td>
+</tr>
+<tr><td><tt class="docutils literal"><span class="pre">@rtype</span></tt>: ...</td>
+<td><tt class="docutils literal"><span class="pre">@returntype</span></tt>: ...</td>
+</tr>
+<tr><td><tt class="docutils literal"><span class="pre">@raise</span></tt> <em>e</em>: ...</td>
+<td><div class="first last line-block">
+<div class="line"><tt class="docutils literal"><span class="pre">@raises</span></tt> <em>e</em>: ...</div>
+<div class="line"><tt class="docutils literal"><span class="pre">@except</span></tt> <em>e</em>: ...</div>
+<div class="line"><tt class="docutils literal"><span class="pre">@exception</span></tt> <em>e</em>: ...</div>
+</div>
+</td>
+</tr>
+<tr><td><tt class="docutils literal"><span class="pre">@keyword</span></tt> <em>p</em>: ...</td>
+<td><div class="first last line-block">
+<div class="line"><tt class="docutils literal"><span class="pre">@kwarg</span></tt> <em>p</em>: ...</div>
+<div class="line"><tt class="docutils literal"><span class="pre">@kwparam</span></tt> <em>p</em>: ...</div>
+</div>
+</td>
+</tr>
+<tr><td><tt class="docutils literal"><span class="pre">@ivar</span></tt> <em>v</em>: ...</td>
+<td><tt class="docutils literal"><span class="pre">@ivariable</span></tt> <em>v</em>: ...</td>
+</tr>
+<tr><td><tt class="docutils literal"><span class="pre">@cvar</span></tt> <em>v</em>: ...</td>
+<td><tt class="docutils literal"><span class="pre">@cvariable</span></tt> <em>v</em>: ...</td>
+</tr>
+<tr><td><tt class="docutils literal"><span class="pre">@var</span></tt> <em>v</em>: ...</td>
+<td><tt class="docutils literal"><span class="pre">@variable</span></tt> <em>v</em>: ...</td>
+</tr>
+<tr><td><tt class="docutils literal"><span class="pre">@see</span></tt>: ...</td>
+<td><tt class="docutils literal"><span class="pre">@seealso</span></tt>: ...</td>
+</tr>
+<tr><td><tt class="docutils literal"><span class="pre">@warning</span></tt>: ...</td>
+<td><tt class="docutils literal"><span class="pre">@warn</span></tt>: ...</td>
+</tr>
+<tr><td><tt class="docutils literal"><span class="pre">@requires</span></tt>: ...</td>
+<td><div class="first last line-block">
+<div class="line"><tt class="docutils literal"><span class="pre">@require</span></tt>: ...</div>
+<div class="line"><tt class="docutils literal"><span class="pre">@requirement</span></tt>: ...</div>
+</div>
+</td>
+</tr>
+<tr><td><tt class="docutils literal"><span class="pre">@precondition</span></tt>: ...</td>
+<td><tt class="docutils literal"><span class="pre">@precond</span></tt>: ...</td>
+</tr>
+<tr><td><tt class="docutils literal"><span class="pre">@postcondition</span></tt>: ...</td>
+<td><tt class="docutils literal"><span class="pre">@postcond</span></tt>: ...</td>
+</tr>
+<tr><td><tt class="docutils literal"><span class="pre">@organization</span></tt>: ...</td>
+<td><tt class="docutils literal"><span class="pre">@org</span></tt>: ...</td>
+</tr>
+<tr><td><tt class="docutils literal"><span class="pre">@copyright</span></tt>: ...</td>
+<td><tt class="docutils literal"><span class="pre">@(c)</span></tt>: ...</td>
+</tr>
+<tr><td><tt class="docutils literal"><span class="pre">@change</span></tt>: ...</td>
+<td><tt class="docutils literal"><span class="pre">@changed</span></tt>: ...</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="module-metadata-variables">
+<h1>Module metadata variables</h1>
+<p>Some module variables are commonly used as module metadata. Epydoc can use the
+value provided by these variables as alternate form for tags. The following
+table lists the recognized variables and the tag they replace. Customized
+metadata variables can be added using the method described in <a class="reference external" href="manual-fields.html#adding-new-fields">Adding New
+Fields</a>.</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="50%" />
+<col width="50%" />
+</colgroup>
+<thead valign="bottom">
+<tr><th class="head">Tag</th>
+<th class="head">Variable</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr><td><tt class="docutils literal"><span class="pre">@author</span></tt></td>
+<td><tt class="docutils literal"><span class="pre">__author__</span></tt></td>
+</tr>
+<tr><td><tt class="docutils literal"><span class="pre">@authors</span></tt></td>
+<td><tt class="docutils literal"><span class="pre">__authors__</span></tt></td>
+</tr>
+<tr><td><tt class="docutils literal"><span class="pre">@contact</span></tt></td>
+<td><tt class="docutils literal"><span class="pre">__contact__</span></tt></td>
+</tr>
+<tr><td><tt class="docutils literal"><span class="pre">@copyright</span></tt></td>
+<td><tt class="docutils literal"><span class="pre">__copyright__</span></tt></td>
+</tr>
+<tr><td><tt class="docutils literal"><span class="pre">@license</span></tt></td>
+<td><tt class="docutils literal"><span class="pre">__license__</span></tt></td>
+</tr>
+<tr><td><tt class="docutils literal"><span class="pre">@deprecated</span></tt></td>
+<td><tt class="docutils literal"><span class="pre">__deprecated__</span></tt></td>
+</tr>
+<tr><td><tt class="docutils literal"><span class="pre">@date</span></tt></td>
+<td><tt class="docutils literal"><span class="pre">__date__</span></tt></td>
+</tr>
+<tr><td><tt class="docutils literal"><span class="pre">@version</span></tt></td>
+<td><tt class="docutils literal"><span class="pre">__version__</span></tt></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="adding-new-fields">
+<h1>Adding New Fields</h1>
+<p>New fields can be defined for the docstrings in a module using the special
+<tt class="docutils literal"><span class="pre">@newfield</span></tt> tag (or its synonym, <tt class="docutils literal"><span class="pre">@deffield</span></tt>). This tag has the following
+syntax:</p>
+<blockquote>
+<pre class="literal-block">
+@newfield <em>tag</em>: <em>label</em> [, <em>plural</em> ]
+</pre>
+</blockquote>
+<p>Where <em>tag</em> is the new tag that's being defined; <em>label</em> is a string that will
+be used to mark this field in the generated output; and plural is the plural form
+of label, if different.</p>
+<p>New fields can be defined in any Python module. If they are defined in a
+package, it will be possible to use the newly defined tag from every package
+submodule.</p>
+<p>Each new field will also define a <a class="reference external" href="manual-fields.html#module-metadata-variables">metadata variable</a> which can be used
+to set the field value instead of the tag. For example, if a <em>revision</em>
+tag has been defined with:</p>
+<pre class="literal-block">
+@newfield revision: Revision
+</pre>
+<p>then it will be possible to set a value for the field using a module variable:</p>
+<pre class="py-doctest">
+__revision__ = <span class="py-string">"1234"</span></pre>
+<p>The following example illustrates how the @newfield can be used:
+Docstring Input Rendered Output</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="50%" />
+<col width="50%" />
+</colgroup>
+<thead valign="bottom">
+<tr><th class="head">Docstring Input</th>
+<th class="head">Rendered Output</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr><td><pre class="py-doctest">
+<span class="py-string">"""</span>
+<span class="py-string">@newfield corpus: Corpus, Corpora</span>
+<span class="py-string">"""</span>
+
+<span class="py-keyword">def</span> <span class="py-defname">example</span>():
+    <span class="py-string">"""</span>
+<span class="py-string">    @corpus: Bob's wordlist.</span>
+<span class="py-string">    @corpus: The British National Corpus.</span>
+<span class="py-string">    """</span>
+    [...]</pre>
+</td>
+<td><p class="first"><strong>Corpora:</strong></p>
+<ul class="last simple">
+<li>Bob's wordlist.</li>
+<li>The British National Corpus.</li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+<div class="note">
+<p class="first admonition-title">Note</p>
+<p class="last">The module-level variable <tt class="docutils literal"><span class="pre">__extra_epydoc_fields__</span></tt> is deprecated;
+use <tt class="docutils literal"><span class="pre">@newfield</span></tt> instead.</p>
+</div>
+</div>
+</div>
+<table width="100%" class="navbox" cellpadding="1" cellspacing="0">
+  <tr>
+  <a class="nav" href="index.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="index.html">
+    Home</a></td></a>
+  <a class="nav" href="installing.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="installing.html">
+    Installing Epydoc</a></td></a>
+  <a class="nav" href="using.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="using.html">
+    Using Epydoc</a></td></a>
+  <a class="nav" href="epytext.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="epytext.html">
+    Epytext</a></td></a>
+  <td align="center" width="20%" class="nav">
+    
+    <A href="http://sourceforge.net/projects/epydoc"> 
+    <IMG src="sflogo.png" 
+    width="88" height="26" border="0" alt="SourceForge"
+    align="top"/></A></td>
+    </tr>
+</table>
+</body>
+</html>
diff --git a/doc/manual-install.html b/doc/manual-install.html
new file mode 100644
index 0000000..46cd263
--- /dev/null
+++ b/doc/manual-install.html
@@ -0,0 +1,205 @@
+<?xml version="1.0" encoding="ascii" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ascii" />
+<meta name="generator" content="Docutils 0.5: http://docutils.sourceforge.net/" />
+<title>Installing Epydoc</title>
+<link rel="stylesheet" href="custom.css" type="text/css" />
+</head>
+<body>
+<div class="document" id="installing-epydoc">
+<h1 class="title">Installing Epydoc</h1>
+
+<!-- $Id: manual-install.txt 1692 2008-01-30 17:11:29Z edloper $ -->
+<div class="section" id="downloading-epydoc">
+<h1>Downloading Epydoc</h1>
+<p>Epydoc can be downloaded from the <a class="reference external" href="http://sourceforge.net/project/showfiles.php?group_id=32455">SourceForge download page</a>. Epydoc is
+available in five formats:</p>
+<ul class="simple">
+<li>RPM (<tt class="docutils literal"><span class="pre">.noarch.rpm</span></tt>)</li>
+<li>Windows installer (<tt class="docutils literal"><span class="pre">.win32.exe</span></tt>)</li>
+<li>Source install (<tt class="docutils literal"><span class="pre">.tar.gz</span></tt>)</li>
+<li>Source install (<tt class="docutils literal"><span class="pre">.zip</span></tt>)</li>
+<li>Source RPM (<tt class="docutils literal"><span class="pre">.src.rpm</span></tt>)</li>
+</ul>
+<p>If you are installing on RedHat, I recommend that you use the RPM file. If you
+are installing on Windows, I recommended that you use the windows installer.
+Otherwise, you should use one of the source install files.</p>
+</div>
+<div class="section" id="getting-epydoc-from-subversion">
+<h1>Getting Epydoc from Subversion</h1>
+<p>If you wish to keep up on the latest developments, you can get the latest
+version of epydoc from the <a class="reference external" href="http://sourceforge.net/svn/?group_id=32455">subversion repository</a>:</p>
+<pre class="literal-block">
+[/home/edloper]$ svn co https://epydoc.svn.sourceforge.net/svnroot/epydoc/trunk/epydoc epydoc
+[/home/edloper]$ ls epydoc
+Makefile  doc  man  sandbox  src
+</pre>
+<p>This will create a directory named <tt class="docutils literal"><span class="pre">epydoc</span></tt> containing the latest version of
+epydoc. The <tt class="docutils literal"><span class="pre">epydoc</span></tt> package itself is in <tt class="docutils literal"><span class="pre">epydoc/src/epydoc</span></tt> (so adding
+<tt class="docutils literal"><span class="pre">epydoc/src</span></tt> to your <tt class="docutils literal"><span class="pre">PYTHONPATH</span></tt> will let you use it). You should
+periodically update your copy of the subversion repository, to make sure you
+have all the latest changes:</p>
+<pre class="literal-block">
+[/home/edloper/epydoc]$ svn up
+</pre>
+<p>You can browse the subversion repository <a class="reference external" href="http://epydoc.svn.sourceforge.net/viewcvs.cgi/epydoc/trunk/epydoc/">here</a>.</p>
+</div>
+<div class="section" id="installing-from-the-rpm-file">
+<h1>Installing from the RPM File</h1>
+<ol class="arabic">
+<li><p class="first">Download the RPM file to a directory of your choice.</p>
+</li>
+<li><p class="first">Use rpm to install the new package.</p>
+<pre class="literal-block">
+[/tmp]$ su
+Password:
+[/tmp]# rpm -i epydoc-3.0.1.noarch.rpm
+</pre>
+</li>
+<li><p class="first">Once epydoc is installed, you can delete the RPM file.</p>
+<pre class="literal-block">
+[/tmp]# rm epydoc-3.0.1.rpm
+</pre>
+</li>
+</ol>
+</div>
+<div class="section" id="installing-from-the-windows-installer">
+<h1>Installing from the Windows Installer</h1>
+<ol class="arabic simple">
+<li>Download and run <tt class="docutils literal"><span class="pre">epydoc-3.0.1.win32.exe</span></tt>.</li>
+<li>Follow the on-screen instructions. Epydoc will be installed in the epydoc
+subdirectory of your Python installation directory (typically
+<tt class="docutils literal"><span class="pre">C:\Python24\</span></tt>).</li>
+<li>The Windows installer creates two scripts in the <tt class="docutils literal"><span class="pre">Scripts</span></tt> subdirectory of
+your Python installation directory: <tt class="docutils literal"><span class="pre">epydoc.pyw</span></tt> opens the graphical user
+interface, and <tt class="docutils literal"><span class="pre">epydoc.py</span></tt> calls the command line interface. If you'd
+like, you can create shortcuts from these scripts to more convenient
+locations (such as your desktop or start menu).</li>
+<li>Once epydoc is installed, you can delete <tt class="docutils literal"><span class="pre">epydoc-3.0.1.win32.exe</span></tt>.</li>
+</ol>
+</div>
+<div class="section" id="installing-from-the-source-distribution-using-make">
+<h1>Installing from the Source Distribution (using make)</h1>
+<ol class="arabic">
+<li><p class="first">Download an epydoc source distribution to a directory of your choice, and
+uncompress it.</p>
+<pre class="literal-block">
+[/tmp]$ wget -q http://prdownloads.sourceforge.net/epydoc/epydoc-3.0.1.tar.gz
+[/tmp]$ gunzip epydoc-3.0.1.tar.gz
+[/tmp]$ tar -xvf epydoc-3.0.1.tar
+</pre>
+</li>
+<li><p class="first">Use <tt class="docutils literal"><span class="pre">make</span> <span class="pre">install</span></tt> in the <tt class="docutils literal"><span class="pre">eydoc-3.0.1/</span></tt> directory to install
+epydoc.</p>
+<pre class="literal-block">
+[/tmp]$ cd epydoc-3.0.1/
+[/tmp/epydoc-3.0.1]$ su
+Password:
+[/tmp/epydoc-3.0.1]# make install
+running install
+running build
+[...]
+copying build/scripts/epydoc -> /usr/bin
+changing mode of /usr/bin/epydoc to 100775
+</pre>
+</li>
+<li><p class="first">If you'd like to keep a local copy of the documentation, then use <tt class="docutils literal"><span class="pre">make</span>
+<span class="pre">installdocs</span></tt>. By default, this will install the documentation to
+<tt class="docutils literal"><span class="pre">/usr/share/doc/</span></tt> and the man pages to <tt class="docutils literal"><span class="pre">/usr/share/man/</span></tt>. If you would
+prefer to install documentation to different directories (such as
+<tt class="docutils literal"><span class="pre">/usr/lib/doc</span></tt>), then edit the <tt class="docutils literal"><span class="pre">MAN</span></tt> and <tt class="docutils literal"><span class="pre">DOC</span></tt> variables at the top of
+<tt class="docutils literal"><span class="pre">Makefile</span></tt> before running <tt class="docutils literal"><span class="pre">make</span> <span class="pre">installdocs</span></tt>.</p>
+<pre class="literal-block">
+[/tmp/epydoc-3.0.1]# make installdocs
+</pre>
+</li>
+<li><p class="first">Once epydoc is installed, you can delete the installation directory and the
+source distribution file.</p>
+<pre class="literal-block">
+[/tmp/epydoc-3.0.1]# cd ..
+[/tmp]# rm -r epydoc-3.0.1
+[/tmp]# rm epydoc-3.0.1.tar
+</pre>
+</li>
+</ol>
+</div>
+<div class="section" id="installing-from-the-source-distribution-without-make">
+<h1>Installing from the Source Distribution (without make)</h1>
+<ol class="arabic">
+<li><p class="first">Download an epydoc source distribution to a directory of your choice, and
+uncompress it.</p>
+<pre class="literal-block">
+[/tmp]$ wget -q http://prdownloads.sourceforge.net/epydoc/epydoc-3.0.1.tar.gz
+[/tmp]$ gunzip epydoc-3.0.1.tar.gz
+[/tmp]$ tar -xvf epydoc-3.0.1.tar
+</pre>
+</li>
+<li><p class="first">Use the <tt class="docutils literal"><span class="pre">setup.py</span></tt> script in the <tt class="docutils literal"><span class="pre">eydoc-3.0.1/</span></tt> directory to install
+epydoc.</p>
+<pre class="literal-block">
+[/tmp]$ cd epydoc-3.0.1/
+[/tmp/epydoc-3.0.1]$ su
+Password:
+[/tmp/epydoc-3.0.1]# python setup.py install
+running install
+running build
+[...]
+copying build/scripts/epydoc -> /usr/bin
+changing mode of /usr/bin/epydoc to 100775
+[/tmp/epydoc-3.0.1]# cd ..
+[/tmp]#
+</pre>
+</li>
+<li><p class="first">If you'd like to keep a local copy of the documentation, then copy it to a
+permanant location, such as <tt class="docutils literal"><span class="pre">/usr/share/doc/</span></tt>. You may also want to copy
+the man pages to a permanant location, such as <tt class="docutils literal"><span class="pre">/usr/share/man/</span></tt>.</p>
+<pre class="literal-block">
+[/tmp]# cp -r epydoc-3.0.1/doc/ /usr/share/doc/epydoc/
+[/tmp]# cp epydoc-3.0.1/man/* /usr/share/man/
+</pre>
+</li>
+<li><p class="first">Once epydoc is installed, you can delete the installation directory and the
+source distribution file.</p>
+<pre class="literal-block">
+[/tmp]# rm -r epydoc-3.0.1
+[/tmp]# rm epydoc-3.0.1.tar
+</pre>
+</li>
+</ol>
+</div>
+<div class="section" id="installing-on-debian">
+<h1>Installing on Debian</h1>
+<p>Epydoc 2.1 is available as a testing debian package (<tt class="docutils literal"><span class="pre">python-epydoc</span></tt>). The
+epydoc documentation is also available as a package (<tt class="docutils literal"><span class="pre">epydoc-doc</span></tt>).</p>
+</div>
+</div>
+<table width="100%" class="navbox" cellpadding="1" cellspacing="0">
+  <tr>
+  <a class="nav" href="index.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="index.html">
+    Home</a></td></a>
+  <a class="nav" href="installing.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="installing.html">
+    Installing Epydoc</a></td></a>
+  <a class="nav" href="using.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="using.html">
+    Using Epydoc</a></td></a>
+  <a class="nav" href="epytext.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="epytext.html">
+    Epytext</a></td></a>
+  <td align="center" width="20%" class="nav">
+    
+    <A href="http://sourceforge.net/projects/epydoc"> 
+    <IMG src="sflogo.png" 
+    width="88" height="26" border="0" alt="SourceForge"
+    align="top"/></A></td>
+    </tr>
+</table>
+</body>
+</html>
diff --git a/doc/manual-othermarkup.html b/doc/manual-othermarkup.html
new file mode 100644
index 0000000..6ad114c
--- /dev/null
+++ b/doc/manual-othermarkup.html
@@ -0,0 +1,468 @@
+<?xml version="1.0" encoding="ascii" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ascii" />
+<meta name="generator" content="Docutils 0.5: http://docutils.sourceforge.net/" />
+<title>Alternate Markup Languages</title>
+<link rel="stylesheet" href="custom.css" type="text/css" />
+</head>
+<body>
+<div class="document" id="alternate-markup-languages">
+<h1 class="title">Alternate Markup Languages</h1>
+
+<!-- $Id: manual-othermarkup.txt 1598 2007-09-06 13:02:50Z dvarrazzo $ -->
+<p>Epydoc's default markup language is <a class="reference external" href="manual-epytext.html#the-epytext-markup-language">epytext</a>, a lightweight markup language
+that's easy to write and to understand. But if epytext is not powerful enough
+for you, or doesn't suit your needs, epydoc also supports three alternate
+markup languages:</p>
+<dl class="docutils">
+<dt><a class="reference external" href="http://docutils.sourceforge.net/rst.html">reStructuredText</a></dt>
+<dd>is an "easy-to-read, what-you-see-is-what-you-get plaintext markup syntax".
+It is more powerful than epytext (e.g., it includes markup for tables and
+footnotes); but it is also more complex, and sometimes harder to read.</dd>
+<dt><a class="reference external" href="http://java.sun.com/j2se/javadoc/">Javadoc</a></dt>
+<dd>is a documentation markup language that was developed for Java. It consists
+of HTML, augmented by a set of special tagged fields.</dd>
+<dt>Plaintext docstrings</dt>
+<dd>are rendered verbatim (preserving whitespace).</dd>
+</dl>
+<p>To specify the markup language for a module, you should define a module-level
+string variable <tt class="docutils literal"><span class="pre">__docformat__</span></tt>, containing the name of the module's markup
+language. The name of the markup language may optionally be followed by a
+language code (such as <tt class="docutils literal"><span class="pre">en</span></tt> for English). Conventionally, the definition of
+the <tt class="docutils literal"><span class="pre">__docformat__</span></tt> variable immediately follows the module's docstring:</p>
+<pre class="py-doctest">
+<span class="py-comment"># widget.py</span>
+<span class="py-string">"""</span>
+<span class="py-string">Graphical support for `gizmos` and `widgets`.</span>
+<span class="py-string">"""</span>
+__docformat__ = <span class="py-string">"restructuredtext en"</span>
+<span class="py-comment">#[...]</span></pre>
+<p>To change the default markup language from the command line, use the
+<tt class="docutils literal"><span class="pre">--docformat</span></tt> option. For example, the following command generates API
+documentation for the existing regular expression package <tt class="docutils literal"><span class="pre">re</span></tt>, which uses
+plaintext markup:</p>
+<pre class="literal-block">
+[epydoc]$ epydoc --docformat plaintext re
+</pre>
+<div class="section" id="restructuredtext">
+<h1>reStructuredText</h1>
+<p>reStructuredText is a markup language that was developed in conjunction with
+<a class="reference external" href="http://docutils.sourceforge.net/">Docutils</a>. In order to parse reStructuredText docstrings, Docutils 0.3 or
+higher must be installed. If Docutils is not installed, then reStructuredText
+docstrings will be rendered as plaintext. Docutils can be downloaded from the
+<a class="reference external" href="http://sourceforge.net/project/showfiles.php?group_id=38414">Docutils SourceForge page</a>.</p>
+<div class="section" id="default-role">
+<h2>Default role</h2>
+<p>Epydoc replaces the Docutils' default <a class="reference external" href="http://docutils.sourceforge.net/docs/ref/rst/roles.html">interpreted text role</a> with
+the creation of  <a class="reference external" href="manual-epytext.html#documentation-crossreference-links">documentation crossreference links</a>. If you want to create
+a crossreference link to the <tt class="docutils literal"><span class="pre">somemod.Example</span></tt> class, you can put backquotes
+around your test, typing:</p>
+<pre class="literal-block">
+`somemod.Example`
+</pre>
+</div>
+<div class="section" id="consolidated-fields">
+<h2>Consolidated Fields</h2>
+<p>In addition to the <a class="reference external" href="manual-fields.html#epydoc-fields">standard set of fields</a>, the reStructruedText parser also
+supports <em>consolidated fields</em>, which combine the documentation for several
+objects into a single field. For example, a single <tt class="docutils literal"><span class="pre">:Parameters:</span></tt> field is
+often used to describe all of the parameters for a function or method:</p>
+<pre class="py-doctest">
+<span class="py-keyword">def</span> <span class="py-defname">fox_speed</span>(size, weight, age):
+    <span class="py-string">"""</span>
+<span class="py-string">    Return the maximum speed for a fox.</span>
+
+<span class="py-string">    :Parameters:</span>
+<span class="py-string">    - `size`: The size of the fox (in meters)</span>
+<span class="py-string">    - `weight`: The weight of the fox (in stones)</span>
+<span class="py-string">    - `age`: The age of the fox (in years)</span>
+<span class="py-string">    """</span>
+    <span class="py-comment">#[...]</span></pre>
+<p>Epydoc will automatically extract information about each parameter from this
+list. These <em>consolidated fields</em> may be written using either a <a class="reference external" href="http://docutils.sourceforge.net/docs/user/rst/quickref.html#bullet-lists">bulleted
+list</a> or a <a class="reference external" href="http://docutils.sourceforge.net/docs/user/rst/quickref.html#definition-lists">definition list</a>.</p>
+<ul class="simple">
+<li>If a consolidated field is written as a <em>bulleted list</em>, then each list item
+must begin with the field's argument, marked as <a class="reference external" href="http://docutils.sourceforge.net/docs/user/rst/quickref.html#inline-markup">interpreted text</a>, and
+followed by a colon or dash.</li>
+<li>If a consolidated field is written as a <em>definition list</em>, then each
+definition item's term should contain the field's argument, (it is not
+mandatory for it being marked as interpreted text).</li>
+</ul>
+<p>The term classifier, if present, is used to specify the associated type. The
+following example shows the use of a definition list to define a consolidated
+field (note that docutils requires a space before and after the '<tt class="docutils literal"><span class="pre">:</span></tt>' used
+to mark classifiers).</p>
+<pre class="py-doctest">
+<span class="py-keyword">def</span> <span class="py-defname">fox_speed</span>(size, weight, age):
+    <span class="py-string">"""</span>
+<span class="py-string">    Return the maximum speed for a fox.</span>
+
+<span class="py-string">    :Parameters:</span>
+<span class="py-string">      size</span>
+<span class="py-string">        The size of the fox (in meters)</span>
+<span class="py-string">      weight : float</span>
+<span class="py-string">        The weight of the fox (in stones)</span>
+<span class="py-string">      age : int</span>
+<span class="py-string">        The age of the fox (in years)</span>
+<span class="py-string">    """</span>
+    <span class="py-comment">#[...]</span></pre>
+<p>The following consolidated fields are currently supported by epydoc:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="50%" />
+<col width="50%" />
+</colgroup>
+<thead valign="bottom">
+<tr><th class="head">Consolidated Field Tag</th>
+<th class="head">Corresponding Base Field Tag</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr><td><tt class="docutils literal"><span class="pre">:Parameters:</span></tt></td>
+<td><tt class="docutils literal"><span class="pre">:param:</span></tt></td>
+</tr>
+<tr><td><tt class="docutils literal"><span class="pre">:Exceptions:</span></tt></td>
+<td><tt class="docutils literal"><span class="pre">:except:</span></tt></td>
+</tr>
+<tr><td><tt class="docutils literal"><span class="pre">:Groups:</span></tt></td>
+<td><tt class="docutils literal"><span class="pre">:group:</span></tt></td>
+</tr>
+<tr><td><tt class="docutils literal"><span class="pre">:Keywords:</span></tt></td>
+<td><tt class="docutils literal"><span class="pre">:keyword:</span></tt></td>
+</tr>
+<tr><td><tt class="docutils literal"><span class="pre">:Variables:</span></tt></td>
+<td><tt class="docutils literal"><span class="pre">:var:</span></tt></td>
+</tr>
+<tr><td><tt class="docutils literal"><span class="pre">:IVariables:</span></tt></td>
+<td><tt class="docutils literal"><span class="pre">:ivar:</span></tt></td>
+</tr>
+<tr><td><tt class="docutils literal"><span class="pre">:CVariables:</span></tt></td>
+<td><tt class="docutils literal"><span class="pre">:cvar:</span></tt></td>
+</tr>
+<tr><td><tt class="docutils literal"><span class="pre">:Types:</span></tt></td>
+<td><tt class="docutils literal"><span class="pre">:type:</span></tt></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="graph-directives">
+<h2>Graph directives</h2>
+<p>The epydoc reStructuredText reader defines several custom <cite>directives</cite>, which
+can be used to automatically generate a variety of graphs. The following custom
+directives are currently defined:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="30%" />
+<col width="70%" />
+</colgroup>
+<thead valign="bottom">
+<tr><th class="head">Directive</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr><td><pre class="first last literal-block">
+.. classtree:: [<em>classes...</em>]
+    :dir: <em>up|down|left|right</em>
+</pre>
+</td>
+<td>Display a class hierarchy for the given class or classes (including all
+superclasses & subclasses). If no class is specified, and the directive
+is used in a class's docstring, then that class's class hierarchy will
+be displayed. The <tt class="docutils literal"><span class="pre">dir</span></tt> option specifies the orientation for the graph
+(default=<tt class="docutils literal"><span class="pre">down</span></tt>).</td>
+</tr>
+<tr><td><pre class="first last literal-block">
+.. packagetree:: [<em>modules...</em>]
+    :dir: <em>up|down|left|right</em>
+    :style: <em>uml|tree</em>
+</pre>
+</td>
+<td>Display a package hierarchy for the given module or modules (including
+all subpackages and submodules). If no module is specified, and the
+directive is used in a module's docstring, then that module's package
+hierarchy will be displayed. The <tt class="docutils literal"><span class="pre">dir</span></tt> option specifies the
+orientation for the graph (default=<tt class="docutils literal"><span class="pre">down</span></tt>). The <tt class="docutils literal"><span class="pre">style</span></tt> option
+specifies whether packages should be displayed in a tree, or using
+nested UML symbols.</td>
+</tr>
+<tr><td><pre class="first last literal-block">
+.. importgraph:: [<em>modules...</em>]
+    :dir: <em>up|down|left|right</em>
+</pre>
+</td>
+<td>Display an import graph for the given module or modules. If no module
+is specified, and the directive is used in a module's docstring, then
+that module's import graph will be displayed. The <tt class="docutils literal"><span class="pre">dir</span></tt> option
+specifies the orientation for the graph (default=<tt class="docutils literal"><span class="pre">left</span></tt>).</td>
+</tr>
+<tr><td><pre class="first last literal-block">
+.. callgraph:: [<em>functions...</em>]
+    :dir: <em>up|down|left|right</em>
+</pre>
+</td>
+<td>Display a call graph for the given function or functions. If no
+function is specified, and the directive is used in a function's
+docstring, then that function's call graph will be displayed. The
+<tt class="docutils literal"><span class="pre">dir</span></tt> option specifies the orientation for the graph (default=<tt class="docutils literal"><span class="pre">right</span></tt>).</td>
+</tr>
+<tr><td><pre class="first last literal-block">
+.. dotgraph:: [<em>title...</em>]
+    :caption: <em>text...</em>
+    <em>graph...</em>
+</pre>
+</td>
+<td>Display a custom Graphviz dot graph. The body of the directive
+(<tt class="docutils literal"><span class="pre">graph...</span></tt>) should contain the body of a dot graph. The optional
+<tt class="docutils literal"><span class="pre">title</span></tt> argument, if specified, is used as the title of the graph.
+The optional <tt class="docutils literal"><span class="pre">caption</span></tt> option can be used to provide a caption for
+the graph.</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="colorized-snippets-directive">
+<h2>Colorized snippets directive</h2>
+<p>Using reStructuredText markup it is possible to specify Python snippets in a
+<a class="reference external" href="http://docutils.sourceforge.net/docs/user/rst/quickref.html#bullet-lists">doctest block</a>. SUch block will be colorized as in epytext <a class="reference external" href="manual-epytext.html#doctest-blocks">Doctest Blocks</a>.</p>
+<pre class="py-doctest">
+<span class="py-prompt">>>> </span><span class="py-keyword">def</span> <span class="py-defname">double</span>(x):
+<span class="py-more">... </span>    return x * 2
+<span class="py-more">...</span>
+<span class="py-prompt">>>> </span><span class="py-keyword">print</span> double(8)
+<span class="py-output">16</span></pre>
+<p>Doctest block are mostly useful to be run as a part of automatized test suite
+using the <a class="reference external" href="http://docs.python.org/lib/module-doctest.html">doctest</a> module. If the Python prompt gets in your way when you try
+to copy and paste and you are not interested in self-testing docstrings, the
+<tt class="docutils literal"><span class="pre">python</span></tt> directive will let you obtain a simple block of colorized text:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="50%" />
+<col width="50%" />
+</colgroup>
+<thead valign="bottom">
+<tr><th class="head">Docstring Input</th>
+<th class="head">Rendered Output</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr><td><pre class="first last literal-block">
+.. python::
+
+    def fib(n):
+        """Print a Fibonacci series."""
+        a, b = 0, 1
+        while b < n:
+            print b,
+            a, b = b, a+b
+</pre>
+</td>
+<td><pre class="py-doctest">
+<span class="py-keyword">def</span> <span class="py-defname">fib</span>(n):
+    <span class="py-string">"""Print a Fibonacci series."""</span>
+    a, b = 0, 1
+    while b < n:
+        <span class="py-keyword">print</span> b,
+        a, b = b, a+b</pre>
+</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="external-api-links">
+<h2>External API links</h2>
+<p>Epydoc can be used to create hyperlinks from your package documentation towards
+objects defined in the API of other packages. Such links are similar to
+ordinary <a class="reference external" href="manual-epytext.html#documentation-crossreference-links">documentation crossreference links</a>, but it is required to configure
+Epydoc setting up a new <a class="reference external" href="http://docutils.sourceforge.net/docs/ref/rst/roles.html">interpreted text role</a>, binding it to an external API.</p>
+<p>To create a new role, the command line option <tt class="docutils literal"><span class="pre">--external-api=</span></tt><em>NAME</em> must
+be used. This option introduces a new interpreted text role called <tt class="docutils literal"><span class="pre">NAME</span></tt>,
+which can be used to refer to objects defined in an external API.</p>
+<p>You can alternatively use a configuration file for this and all the other
+options: see the <a class="reference external" href="manual-reference.html#sample-configuration-file">sample configuration file</a> for a comprehensive example.</p>
+<p>For example, if your program needs to programmatically use the Epydoc package
+itself, your docstrings may refer to functions described by Epydoc API:</p>
+<pre class="literal-block">
+If you want to print a value, you can use
+the :epydoc:`apidoc.pp_apidoc()` function.
+</pre>
+<p>When you will generate the API documentation for such program, you will
+need the option <tt class="docutils literal"><span class="pre">--external-api=epydoc</span></tt> or you will get parsing errors due
+to the unknown role.</p>
+<p>Of course this doesn't help to really create cross references: the
+<tt class="docutils literal"><span class="pre">--external-api</span></tt> option suffices to stop Epydoc complaining about unknown
+roles, but the text is simply rendered in a monotype font and no link is
+created.</p>
+<p>What Epydoc requires to create external API links is a mapping from the names
+of the objects exposed by the API and the URL where such objects are actually
+described. Such mapping must be provided as a text file, with an object name
+and its URL on each line, separated by a <tt class="docutils literal"><span class="pre">tab</span></tt> character. For example the
+Epydoc API documentation may be represented by a file names <tt class="docutils literal"><span class="pre">api-objects.txt</span></tt>
+containing:</p>
+<pre class="literal-block">
+epydoc                          ->  epydoc-module.html
+epydoc.apidoc                   ->  epydoc.apidoc-module.html
+epydoc.apidoc.UNKNOWN           ->  epydoc.apidoc-module.html#UNKNOWN
+epydoc.apidoc._pp_val           ->  epydoc.apidoc-module.html#_pp_val
+epydoc.apidoc.py_src_filename   ->  epydoc.util-module.html#py_src_filename
+epydoc.apidoc.pp_apidoc         ->  epydoc.apidoc-module.html#pp_apidoc
+epydoc.apidoc._pp_list          ->  epydoc.apidoc-module.html#_pp_list
+...                                 ...
+...                                 ...
+</pre>
+<p>Epydoc's HTML writer indeed includes such file in its output: see <a class="reference external" href="manual-usage.html#html-files">HTML
+Files</a> for details.</p>
+<p>You can bind the definition file to the interpreted text role name using
+the command line option <tt class="docutils literal"><span class="pre">--external-api-file=</span></tt><em>NAME:FILENAME</em>.In the
+previous example you can use:</p>
+<pre class="literal-block">
+--external-api-file=epydoc:api-objects.txt
+</pre>
+<p>This helps Epydoc to create relative urls: in the previous example the
+<tt class="docutils literal"><span class="pre">apidoc.pp_apidoc()</span></tt> label will be linked with the
+<tt class="docutils literal"><span class="pre">epydoc.apidoc-module.html#_pp_val</span></tt> URL.</p>
+<p>You can specify a new root for the generated links using the last command line
+option: <tt class="docutils literal"><span class="pre">--external-api-root=</span></tt><em>NAME:STRING</em>. <em>STRING</em> will be attached
+in front of any URL returned by the <em>NAME</em> text role. For example, to let your
+program refer to Epydoc API whose documentation is published at
+<a class="reference external" href="http://epydoc.sourceforge.net/api/">http://epydoc.sourceforge.net/api/</a> you can use the options:</p>
+<pre class="literal-block">
+--external-api-root=epydoc:http://epydoc.sourceforge.net/api/
+</pre>
+<p>this will let your reference <a class="reference external" href="http://epydoc.sourceforge.net/api/epydoc.apidoc-module.html#pp_apidoc"><tt class="docutils literal"><span class="pre">apidoc.pp_apidoc()</span></tt></a> point at the
+right documentation.</p>
+<p>The three options can be used any number of time, effectively allowing to link
+towards all the required external packages.</p>
+<div class="section" id="names-resolution">
+<h3>Names resolution</h3>
+<p>When an external API link is to be created, the required name is split along
+any separator ('<tt class="docutils literal"><span class="pre">.</span></tt>', '<tt class="docutils literal"><span class="pre">::</span></tt>', '<tt class="docutils literal"><span class="pre">-></span></tt>'). Everything after the first noise
+character (for example after an '<tt class="docutils literal"><span class="pre">(</span></tt>') is discarded.</p>
+<p>The name fragment is looked for in the names defined in the description file:
+first an exact match is attempted; if no name exactly matches the required
+name, a partial match is attempted: the required name is compared with the
+<em>trailing parts</em> of the names in the file.</p>
+<p>If a single name is found in this lookup, then its URL is returned. If the
+name is not found, or if it matches with the trailing part of many defined
+names, a warning is raised and the name is rendered as literal text.</p>
+</div>
+<div class="section" id="linking-from-standalone-documents">
+<h3>Linking from standalone documents</h3>
+<p>Epydoc provides the script <tt class="docutils literal"><span class="pre">apirst2html.py</span></tt> which allows you to use the
+previously described interpreted text roles from any reST document. The script
+exposes the same interface of the standard Docutils script <tt class="docutils literal"><span class="pre">rst2html.py</span></tt> but
+provides the extra command line options described in <a class="reference external" href="manual-othermarkup.html#external-api-links">External API links</a>.</p>
+<p>With such tool you will be able to create hypertextual documentation of your
+package with direct links to its API.</p>
+</div>
+</div>
+<div class="section" id="indexed-terms-in-restructuredtext">
+<h2>Indexed Terms in reStructuredText</h2>
+<p>Epydoc uses <a class="reference external" href="manual-epytext.html#indexed-terms">indexed terms</a> to create a table of terms definitions. Indexed
+terms are created using the epytext markup <tt class="docutils literal"><span class="pre">X{...}</span></tt>.</p>
+<p>If you want to create indexed terms in reStructuredText modules,
+you can use the <tt class="docutils literal"><span class="pre">term</span></tt> <a class="reference external" href="http://docutils.sourceforge.net/docs/ref/rst/roles.html">interpreted text role</a>. For example:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="50%" />
+<col width="50%" />
+</colgroup>
+<thead valign="bottom">
+<tr><th class="head">Docstring Input</th>
+<th class="head">Rendered Output</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr><td><pre class="py-doctest">
+<span class="py-keyword">def</span> <span class="py-defname">example</span>():
+    <span class="py-string">"""</span>
+<span class="py-string">    An :term:`index term` is a term that</span>
+<span class="py-string">    should be included in the index.</span>
+<span class="py-string">    """</span>
+    <span class="py-comment">#[...]</span></pre>
+</td>
+<td><p class="first">An <em>index term</em> is a term that should be included in the index.</p>
+<blockquote class="last">
+<table border="1" class="docutils">
+<colgroup>
+<col width="46%" />
+<col width="54%" />
+</colgroup>
+<thead valign="bottom">
+<tr><th class="head" colspan="2">Index</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr><td>index term</td>
+<td><em>example</em></td>
+</tr>
+<tr><td>x intercept</td>
+<td><em>x_intercept</em></td>
+</tr>
+<tr><td>y intercept</td>
+<td><em>x_intercept</em></td>
+</tr>
+</tbody>
+</table>
+</blockquote>
+</td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+<div class="section" id="javadoc">
+<h1>Javadoc</h1>
+<p><a class="reference external" href="manual-othermarkup.html#javadoc">Javadoc</a> is a markup language developed by Sun Microsystems for documenting
+Java APIs. The epydoc implementation of Javadoc is based on the <a class="reference external" href="http://java.sun.com/j2se/1.4.2/docs/tooldocs/solaris/javadoc.html">Javadoc 1.4.2
+reference documentation</a>. However, there are likely to be some minor incompatibilities between Sun's implementation and epydoc's. Known incompatibilities include:</p>
+<ul class="simple">
+<li>Epydoc does not support the Javadoc block tag <tt class="docutils literal"><span class="pre">@serial</span></tt>.</li>
+<li>Epydoc does not support the following Javadoc inline tags: <tt class="docutils literal"><span class="pre">{@docroot}</span></tt>,
+<tt class="docutils literal"><span class="pre">{@inheritdoc}</span></tt>, <tt class="docutils literal"><span class="pre">{@value}</span></tt>.</li>
+<li>Epydoc adds many field tags that Sun does not include, such as <tt class="docutils literal"><span class="pre">@var</span></tt>,
+<tt class="docutils literal"><span class="pre">@type</span></tt>, and <tt class="docutils literal"><span class="pre">@group</span></tt>.</li>
+</ul>
+<div class="section" id="javadoc-fields">
+<h2>Javadoc Fields</h2>
+<p>For compatibility with Javadoc, every <tt class="docutils literal"><span class="pre">@see</span></tt> field is assumed to contain a
+single crossreference link, unless its body is quoted, or it starts with an
+HTML tag. See the <a class="reference external" href="http://java.sun.com/j2se/1.4.2/docs/tooldocs/solaris/javadoc.html#@see">Javadoc reference manual</a> for more information about how the
+<tt class="docutils literal"><span class="pre">@see</span></tt> field is encoded in Javadoc.</p>
+<p>Because Javadoc does not mark end of the optional argument, field arguments
+must contain exactly one word. Thus, multi-word arguments are not available
+in Javadoc. In particular, all group names must be single words.</p>
+</div>
+</div>
+</div>
+<table width="100%" class="navbox" cellpadding="1" cellspacing="0">
+  <tr>
+  <a class="nav" href="index.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="index.html">
+    Home</a></td></a>
+  <a class="nav" href="installing.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="installing.html">
+    Installing Epydoc</a></td></a>
+  <a class="nav" href="using.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="using.html">
+    Using Epydoc</a></td></a>
+  <a class="nav" href="epytext.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="epytext.html">
+    Epytext</a></td></a>
+  <td align="center" width="20%" class="nav">
+    
+    <A href="http://sourceforge.net/projects/epydoc"> 
+    <IMG src="sflogo.png" 
+    width="88" height="26" border="0" alt="SourceForge"
+    align="top"/></A></td>
+    </tr>
+</table>
+</body>
+</html>
diff --git a/doc/manual-reference.html b/doc/manual-reference.html
new file mode 100644
index 0000000..aa516eb
--- /dev/null
+++ b/doc/manual-reference.html
@@ -0,0 +1,443 @@
+<?xml version="1.0" encoding="ascii" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ascii" />
+<meta name="generator" content="Docutils 0.5: http://docutils.sourceforge.net/" />
+<title>References</title>
+<link rel="stylesheet" href="custom.css" type="text/css" />
+</head>
+<body>
+<div class="document" id="references">
+<h1 class="title">References</h1>
+
+<!-- $Id: manual-reference.txt 1549 2007-02-24 16:23:49Z dvarrazzo $ -->
+<div class="section" id="command-line-usage">
+<h1>Command Line Usage</h1>
+<p>Usage: <tt class="docutils literal"><span class="pre">epydoc.py</span></tt> [<em>ACTION</em>] [<em>options</em>] <em>NAMES...</em></p>
+<dl class="docutils">
+<dt>NAMES...</dt>
+<dd>A list of the Python objects that should be documented. Objects can be
+specified using dotted names (such as <tt class="docutils literal"><span class="pre">os.path</span></tt>), module filenames (such
+as <tt class="docutils literal"><span class="pre">epydoc/epytext.py</span></tt>), or package directory names (such as
+<tt class="docutils literal"><span class="pre">epydoc/</span></tt>). Packages are expanded to include all sub-modules and
+sub-packages.</dd>
+<dt>options</dt>
+<dd><pre class="first last literal-block">
+--config=FILE         A configuration file, specifying additional OPTIONS
+                      and/or NAMES.  This option may be repeated.
+-o PATH, --output=PATH
+                      The output directory.  If PATH does not exist, then it
+                      will be created.
+-q, --quiet           Decrease the verbosity.
+-v, --verbose         Increase the verbosity.
+--debug               Show full tracebacks for internal errors.
+--simple-term         Do not try to use color or cursor control when
+                      displaying the progress bar, warnings, or errors.
+
+Actions:
+  --html              Write HTML output.
+  --text              Write plaintext output. (not implemented yet)
+  --latex             Write LaTeX output.
+  --dvi               Write DVI output.
+  --ps                Write Postscript output.
+  --pdf               Write PDF output.
+  --check             Check completeness of docs.
+  --pickle            Write the documentation to a pickle file.
+  --version           Show epydoc's version number and exit.
+  -h, --help          Show this message and exit.  For help on specific
+                      topics, use "--help TOPIC".  Use "--help topics" for a
+                      list of available help topics
+
+Generation Options:
+  --docformat=NAME    The default markup language for docstrings.  Defaults
+                      to "epytext".
+  --parse-only        Get all information from parsing (don't introspect)
+  --introspect-only   Get all information from introspecting (don't parse)
+  --exclude=PATTERN   Exclude modules whose dotted name matches the regular
+                      expression PATTERN
+  --exclude-introspect=PATTERN
+                      Exclude introspection of modules whose dotted name
+                      matches the regular expression PATTERN
+  --exclude-parse=PATTERN
+                      Exclude parsing of modules whose dotted name matches
+                      the regular expression PATTERN
+  --inheritance=STYLE
+                      The format for showing inheritance objects.  STYLE
+                      should be one of: grouped, listed, included.
+  --show-private      Include private variables in the output. (default)
+  --no-private        Do not include private variables in the output.
+  --show-imports      List each module's imports.
+  --no-imports        Do not list each module's imports. (default)
+  --show-sourcecode   Include source code with syntax highlighting in the
+                      HTML output. (default)
+  --no-sourcecode     Do not include source code with syntax highlighting in
+                      the HTML output.
+  --include-log       Include a page with the process log (epydoc-log.html)
+
+Output Options:
+  --name=NAME         The documented project's name (for the navigation
+                      bar).
+  --css=STYLESHEET    The CSS stylesheet.  STYLESHEET can be either a
+                      builtin stylesheet or the name of a CSS file.
+  --url=URL           The documented project's URL (for the navigation bar).
+  --navlink=HTML      HTML code for a navigation link to place in the
+                      navigation bar.
+  --top=PAGE          The "top" page for the HTML documentation.  PAGE can
+                      be a URL, the name of a module or class, or one of the
+                      special names "trees.html", "indices.html", or
+                      "help.html"
+  --help-file=FILE    An alternate help file.  FILE should contain the body
+                      of an HTML file -- navigation bars will be added to
+                      it.
+  --show-frames       Include frames in the HTML output. (default)
+  --no-frames         Do not include frames in the HTML output.
+  --separate-classes  When generating LaTeX or PDF output, list each class
+                      in its own section, instead of listing them under
+                      their containing module.
+
+API Linking Options:
+  --external-api=NAME
+                      Define a new API document.  A new interpreted text
+                      role NAME will be added.
+  --external-api-file=NAME:FILENAME
+                      Use records in FILENAME to resolve objects in the API
+                      named NAME.
+  --external-api-root=NAME:STRING
+                      Use STRING as prefix for the URL generated from the
+                      API NAME.
+
+Graph Options:
+  --graph=GRAPHTYPE   Include graphs of type GRAPHTYPE in the generated
+                      output.  Graphs are generated using the Graphviz dot
+                      executable.  If this executable is not on the path,
+                      then use --dotpath to specify its location.  This
+                      option may be repeated to include multiple graph types
+                      in the output.  GRAPHTYPE should be one of: all,
+                      classtree, callgraph, umlclasstree.
+  --dotpath=PATH      The path to the Graphviz 'dot' executable.
+  --graph-font=FONT   Specify the font used to generate Graphviz graphs.
+                      (e.g., helvetica or times).
+  --graph-font-size=SIZE
+                      Specify the font size used to generate Graphviz
+                      graphs, in points.
+  --pstat=FILE        A pstat output file, to be used in generating call
+                      graphs.
+
+Return Value Options:
+  --fail-on-error     Return a non-zero exit status, indicating failure, if
+                      any errors are encountered.
+  --fail-on-warning   Return a non-zero exit status, indicating failure, if
+                      any errors or warnings are encountered (not including
+                      docstring warnings).
+  --fail-on-docstring-warning
+                      Return a non-zero exit status, indicating failure, if
+                      any errors or warnings are encountered (including
+                      docstring warnings).
+</pre>
+</dd>
+</dl>
+</div>
+<div class="section" id="sample-configuration-file">
+<h1>Sample Configuration File</h1>
+<p>Configuration files, specified using the <tt class="docutils literal"><span class="pre">--config</span></tt> option, may be used to
+specify both the list of objects to document, and the options that should be
+used to document them. Configuration files are read using the standard
+<a class="reference external" href="http://docs.python.org/lib/module-ConfigParser.html">ConfigParser</a> module. The following example configuration file demonstrates the
+various options that you can set. Lines beginning with <tt class="docutils literal"><span class="pre">#</span></tt> or <tt class="docutils literal"><span class="pre">;</span></tt> are
+treated as comments.</p>
+<pre class="literal-block">
+<strong>[epydoc]</strong> <em># Epydoc section marker (required by ConfigParser)</em>
+
+<em># The list of objects to document.  Objects can be named using</em>
+<em># dotted names, module filenames, or package directory names.</em>
+<em># Alases for this option include "objects" and "values".</em>
+<strong>modules: sys, os.path, re</strong>
+
+<em># The type of output that should be generated.  Should be one</em>
+<em># of: html, text, latex, dvi, ps, pdf.</em>
+<strong>output: html</strong>
+
+<em># The path to the output directory.  May be relative or absolute.</em>
+<strong>target: html/</strong>
+
+<em># An integer indicating how verbose epydoc should be.  The default</em>
+<em># value is 0; negative values will supress warnings and errors;</em>
+<em># positive values will give more verbose output.</em>
+<strong>verbosity: 0</strong>
+
+<em># A boolean value indicating that Epydoc should show a tracaback</em>
+<em># in case of unexpected error. By default don't show tracebacks</em>
+<strong>debug: 0</strong>
+
+<em># If True, don't try to use colors or cursor control when doing</em>
+<em># textual output. The default False assumes a rich text prompt</em>
+<strong>simple-term: 0</strong>
+
+
+<strong>### Generation options</strong>
+
+<em># The default markup language for docstrings, for modules that do</em>
+<em># not define __docformat__.  Defaults to epytext.</em>
+<strong>docformat: epytext</strong>
+
+<em># Whether or not parsing should be used to examine objects.</em>
+<strong>parse: yes</strong>
+
+<em># Whether or not introspection should be used to examine objects.</em>
+<strong>introspect: yes</strong>
+
+<em># Don't examine in any way the modules whose dotted name match this</em>
+<em># regular expression pattern.</em>
+<strong>#exclude</strong>
+
+<em># Don't perform introspection on the modules whose dotted name match this</em>
+<em># regular expression pattern.</em>
+<strong>#exclude-introspect</strong>
+
+<em># Don't perform parsing on the modules whose dotted name match this</em>
+<em># regular expression pattern.</em>
+<strong>#exclude-parse</strong>
+
+<em># The format for showing inheritance objects.</em>
+<em># It should be one of: 'grouped', 'listed', 'included'.</em>
+<strong>inheritance: listed</strong>
+
+<em># Whether or not to inclue private variables.  (Even if included,</em>
+<em># private variables will be hidden by default.)</em>
+<strong>private: yes</strong>
+
+<em># Whether or not to list each module's imports.</em>
+<strong>imports: no</strong>
+
+<em># Whether or not to include syntax highlighted source code in</em>
+<em># the output (HTML only).</em>
+<strong>sourcecode: yes</strong>
+
+<em># Whether or not to includea a page with Epydoc log, containing</em>
+<em># effective option at the time of generation and the reported logs.</em>
+<strong>include-log: no</strong>
+
+
+<strong>### Output options</strong>
+
+<em># The documented project's name.</em>
+<strong>#name: Example</strong>
+
+<em># The CSS stylesheet for HTML output.  Can be the name of a builtin</em>
+<em># stylesheet, or the name of a file.</em>
+<strong>css: white</strong>
+
+<em># The documented project's URL.</em>
+<strong>#url: http://some.project/</strong>
+
+<em># HTML code for the project link in the navigation bar.  If left</em>
+<em># unspecified, the project link will be generated based on the</em>
+<em># project's name and URL.</em>
+<strong>#link: <a href="somewhere">My Cool Project</a></strong>
+
+<em># The "top" page for the documentation.  Can be a URL, the name</em>
+<em># of a module or class, or one of the special names "trees.html",</em>
+<em># "indices.html", or "help.html"</em>
+<strong>#top: os.path</strong>
+
+<em># An alternative help file.  The named file should contain the</em>
+<em># body of an HTML file; navigation bars will be added to it.</em>
+<strong>#help: my_helpfile.html</strong>
+
+<em># Whether or not to include a frames-based table of contents.</em>
+<strong>frames: yes</strong>
+
+<em># Whether each class should be listed in its own section when</em>
+<em># generating LaTeX or PDF output.</em>
+<strong>separate-classes: no</strong>
+
+
+<strong>### API linking options</strong>
+
+<em># Define a new API document.  A new interpreted text role</em>
+<em># will be created</em>
+<strong>#external-api: epydoc</strong>
+
+<em># Use the records in this file to resolve objects in the API named NAME.</em>
+<strong>#external-api-file: epydoc:api-objects.txt</strong>
+
+<em># Use this URL prefix to configure the string returned for external API.</em>
+<strong>#external-api-root: epydoc:http://epydoc.sourceforge.net/api</strong>
+
+
+<strong>### Graph options</strong>
+
+<em># The list of graph types that should be automatically included</em>
+<em># in the output.  Graphs are generated using the Graphviz "dot"</em>
+<em># executable.  Graph types include: "classtree", "callgraph",</em>
+<em># "umlclass".  Use "all" to include all graph types</em>
+<strong>graph: all</strong>
+
+<em># The path to the Graphviz "dot" executable, used to generate</em>
+<em># graphs.</em>
+<strong>dotpath: /usr/local/bin/dot</strong>
+
+<em># The name of one or more pstat files (generated by the profile</em>
+<em># or hotshot module).  These are used to generate call graphs.</em>
+<strong>pstat: profile.out</strong>
+
+<em># Specify the font used to generate Graphviz graphs.</em>
+<em># (e.g., helvetica or times).</em>
+<strong>graph-font: Helvetica</strong>
+
+<em># Specify the font size used to generate Graphviz graphs.</em>
+<strong>graph-font-size: 10</strong>
+
+
+<strong>### Return value options</strong>
+
+<em># The condition upon which Epydoc should exit with a non-zero</em>
+<em># exit status. Possible values are error, warning, docstring_warning</em>
+<strong>#fail-on: error</strong>
+</pre>
+</div>
+<div class="section" id="warnings-and-errors">
+<h1>Warnings and Errors</h1>
+<p>If epydoc encounters an error while processing a docstring, it issues a warning
+message that describes the error, and attempts to continue generating
+documentation. Errors related to epytext are divided into three categories:</p>
+<dl class="docutils">
+<dt>Epytext Warnings</dt>
+<dd>are caused by epytext docstrings that contain questionable or suspicious
+markup. Epytext warnings do not prevent the docstring in question from
+being parsed.</dd>
+<dt>Field Warnings</dt>
+<dd>are caused by epytext docstrings containing invalid fields. The contents of
+the invalid field are generally ignored.</dd>
+<dt>Epytext Errors</dt>
+<dd>are caused by epytext docstrings that contain invalid markup. Whenever an
+epytext error is detected, the docstring in question is treated as a
+plaintext docstring.</dd>
+</dl>
+<p>The following sections list and describe the warning messages that epydoc can
+generate. They are intended as a reference resource, which you can search for
+more information and possible causes if you encounter an error and do not
+understand it. These descriptions are also available in the <tt class="docutils literal"><span class="pre">epydoc(1)</span></tt> man
+page.</p>
+<div class="section" id="epytext-warnings">
+<h2>Epytext Warnings</h2>
+<dl class="docutils">
+<dt>Possible mal-formatted field item.</dt>
+<dd>Epytext detected a line that looks like a field item, but is not correctly
+formatted. This typically occurs when the trailing colon (<tt class="docutils literal"><span class="pre">:</span></tt>) is not
+included in the field tag.</dd>
+<dt>Possible heading typo.</dt>
+<dd>Epytext detected a pair of lines that looks like a heading, but the number
+of underline characters does not match the number of characters in the
+heading. The number of characters in these two lines must match exactly for
+them to be considered a heading.</dd>
+</dl>
+</div>
+<div class="section" id="field-warnings">
+<h2>Field Warnings</h2>
+<dl class="docutils">
+<dt><tt class="docutils literal"><span class="pre">@param</span></tt> for unknown parameter <em>param</em>.</dt>
+<dd>A <tt class="docutils literal"><span class="pre">@param</span></tt> field was used to specify the type for a parameter that is not
+included in the function's signature. This is typically caused by a typo in
+the parameter name.</dd>
+<dt><em>tag</em> did not expect an argument.</dt>
+<dd>The field tag <em>tag</em> was used with an argument, but it does not take one.</dd>
+<dt><em>tag</em> expected an argument.</dt>
+<dd>The field tag <em>tag</em> was used without an argument, but it requires one.</dd>
+<dt><tt class="docutils literal"><span class="pre">@type</span></tt> for unknown parameter <em>param</em>.</dt>
+<dd>A <tt class="docutils literal"><span class="pre">@type</span></tt> field was used to specify the type for a parameter that is not
+included in the function's signature. This is typically caused by a typo in
+the parameter name.</dd>
+<dt><tt class="docutils literal"><span class="pre">@type</span></tt> for unknown variable <em>var</em>.</dt>
+<dd>A <tt class="docutils literal"><span class="pre">@type</span></tt> field was used to specify the type for a variable, but no
+other information is known about the variable. This is typically caused
+by a typo in the variable name.</dd>
+<dt>Unknown field tag <em>tag</em>.</dt>
+<dd>A docstring contains a field with the unknown tag <em>tag</em>.</dd>
+<dt>Redefinition of <em>field</em>.</dt>
+<dd>Multiple field tags define the value of field in the same docstring, but
+field can only take a single value.</dd>
+</dl>
+</div>
+<div class="section" id="epytext-errors">
+<h2>Epytext Errors</h2>
+<dl class="docutils">
+<dt>Bad link target.</dt>
+<dd>The target specified for an inline link contruction (L{...}) is not
+well-formed. Link targets must be valid Python identifiers.</dd>
+<dt>Bad uri target.</dt>
+<dd>The target specified for an inline uri contruction (<tt class="docutils literal"><span class="pre">U{...}</span></tt>) is not
+well-formed. This typically occurs if inline markup is nested inside the
+URI target.</dd>
+<dt>Fields must be at the top level.</dt>
+<dd>The list of fields (<tt class="docutils literal"><span class="pre">@param</span></tt>, etc.) is contained by some other block
+structure (such as a list or a section).</dd>
+<dt>Fields must be the final elements in an epytext string.</dt>
+<dd>The list of fields (<tt class="docutils literal"><span class="pre">@param</span></tt>, etc.) is not at the end of a docstring.</dd>
+<dt>Headings must occur at top level.</dt>
+<dd>The heading is contianed in some other block structure (such as a list).</dd>
+<dt>Improper doctest block indentation.</dt>
+<dd>The doctest block dedents past the indentation of its initial prompt line.</dd>
+<dt>Improper heading indentation.</dt>
+<dd>The heading for a section is not left-aligned with the paragraphs in the
+section that contains it.</dd>
+<dt>Improper paragraph indentation.</dt>
+<dd>The paragraphs within a block are not left-aligned. This error is often
+generated when plaintext docstrings are parsed using epytext.</dd>
+<dt>Invalid escape.</dt>
+<dd>An unknown escape sequence was used with the inline escape construction
+(<tt class="docutils literal"><span class="pre">E{...}</span></tt>).</dd>
+<dt>Lists must be indented.</dt>
+<dd>An unindented line immediately following a paragraph starts with a list
+bullet. Epydoc is not sure whether you meant to start a new list item, or
+meant for a paragraph to include a word that looks like a bullet. If you
+intended the former, then indent the list. If you intended the latter, then
+change the word-wrapping of the paragraph, or escape the first character of
+the word that looks like a bullet.</dd>
+<dt>Unbalanced '<tt class="docutils literal"><span class="pre">{</span></tt>'.</dt>
+<dd>The docstring contains unbalanced braces. Epytext requires that all braces
+must be balanced. To include a single unbalanced brace, use the escape
+sequences <tt class="docutils literal"><span class="pre">E{lb}</span></tt> (left brace) and <tt class="docutils literal"><span class="pre">E{rb}</span></tt> (right brace).</dd>
+<dt>Unbalanced '<tt class="docutils literal"><span class="pre">}</span></tt>'.</dt>
+<dd>The docstring contains unbalanced braces. Epytext requires that all braces
+must be balanced. To include a single unbalanced brace, use the escape
+sequences <tt class="docutils literal"><span class="pre">E{lb}</span></tt> (left brace) and <tt class="docutils literal"><span class="pre">E{rb}</span></tt> (right brace).</dd>
+<dt>Unknown inline markup tag.</dt>
+<dd>An unknown tag was used with the inline markup construction (<tt class="docutils literal"><span class="pre">x{...}</span></tt>).</dd>
+<dt>Wrong underline character for heading.</dt>
+<dd>The underline character used for this section heading does not indicate an
+appopriate section level. The '<tt class="docutils literal"><span class="pre">=</span></tt>' character should be used to underline
+sections; '<tt class="docutils literal"><span class="pre">-</span></tt>' for subsections; and '<tt class="docutils literal"><span class="pre">~</span></tt>' for subsubsections.</dd>
+</dl>
+</div>
+</div>
+</div>
+<table width="100%" class="navbox" cellpadding="1" cellspacing="0">
+  <tr>
+  <a class="nav" href="index.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="index.html">
+    Home</a></td></a>
+  <a class="nav" href="installing.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="installing.html">
+    Installing Epydoc</a></td></a>
+  <a class="nav" href="using.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="using.html">
+    Using Epydoc</a></td></a>
+  <a class="nav" href="epytext.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="epytext.html">
+    Epytext</a></td></a>
+  <td align="center" width="20%" class="nav">
+    
+    <A href="http://sourceforge.net/projects/epydoc"> 
+    <IMG src="sflogo.png" 
+    width="88" height="26" border="0" alt="SourceForge"
+    align="top"/></A></td>
+    </tr>
+</table>
+</body>
+</html>
diff --git a/doc/manual-usage.html b/doc/manual-usage.html
new file mode 100644
index 0000000..454bde7
--- /dev/null
+++ b/doc/manual-usage.html
@@ -0,0 +1,369 @@
+<?xml version="1.0" encoding="ascii" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ascii" />
+<meta name="generator" content="Docutils 0.5: http://docutils.sourceforge.net/" />
+<title>Using Epydoc</title>
+<link rel="stylesheet" href="custom.css" type="text/css" />
+</head>
+<body>
+<div class="document" id="using-epydoc">
+<h1 class="title">Using Epydoc</h1>
+
+<!-- $Id: manual-usage.txt 1554 2007-02-27 03:31:56Z edloper $ -->
+<p>Epydoc provides two user interfaces:</p>
+<ul class="simple">
+<li>The command line interface, which is accessed via a script named <tt class="docutils literal"><span class="pre">epydoc</span></tt>
+(or <tt class="docutils literal"><span class="pre">epydoc.py</span></tt> on Windows)</li>
+<li>The graphical interface, which is accessed via a script named <tt class="docutils literal"><span class="pre">epydocgui</span></tt>
+(or <tt class="docutils literal"><span class="pre">epydoc.pyw</span></tt> on Windows).</li>
+</ul>
+<p>Epydoc can also be accessed programmatically; see <tt class="docutils literal"><span class="pre">epydoc's</span> <span class="pre">API</span>
+<span class="pre">documentation</span></tt> for more information.</p>
+<div class="section" id="the-command-line-interface">
+<h1>The Command Line Interface</h1>
+<p>The <tt class="docutils literal"><span class="pre">epydoc</span></tt> script extracts API documentation for a set of Python objects,
+and writes it using a selected output format. Objects can be named using dotted
+names, module filenames, or package directory names. (On Windows, this script
+is named <tt class="docutils literal"><span class="pre">epydoc.py</span></tt>.)</p>
+<div class="section" id="command-line-usage-abbreviated">
+<h2>Command Line Usage (Abbreviated)</h2>
+<pre class="literal-block">
+epydoc [--html|--pdf] [-o <em>DIR</em>] [--parse-only|--introspect-only] [-v|-q]
+       [--name <em>NAME</em>] [--url <em>URL</em>] [--docformat <em>NAME</em>] [--graph <em>GRAPHTYPE</em>]
+       [--inheritance <em>STYLE</em>] [--config <em>FILE</em>] <em>OBJECTS...</em>
+</pre>
+<dl class="docutils">
+<dt><em>OBJECTS...</em></dt>
+<dd>A list of the Python objects that should be documented. Objects can be
+specified using dotted names (such as <tt class="docutils literal"><span class="pre">os.path</span></tt>), module filenames (such
+as <tt class="docutils literal"><span class="pre">epydoc/epytext.py</span></tt>), or package directory names (such as <tt class="docutils literal"><span class="pre">epydoc/</span></tt>).
+Packages are expanded to include all sub-modules and sub-packages.</dd>
+</dl>
+<div class="epydoc-usage container">
+<table class="docutils option-list" frame="void" rules="none">
+<col class="option" />
+<col class="description" />
+<tbody valign="top">
+<tr><td class="option-group">
+<kbd><span class="option">--html</span></kbd></td>
+<td>Generate HTML output. (default)</td></tr>
+<tr><td class="option-group">
+<kbd><span class="option">--pdf</span></kbd></td>
+<td>Generate Adobe Acrobat (PDF) output, using LaTeX.</td></tr>
+<tr><td class="option-group" colspan="2">
+<kbd><span class="option">-o <var>DIR</var></span>, <span class="option">--output <var>DIR</var></span>, <span class="option">--target <var>DIR</var></span></kbd></td>
+</tr>
+<tr><td> </td><td>The output directory.</td></tr>
+<tr><td class="option-group" colspan="2">
+<kbd><span class="option">--parse-only</span>, <span class="option">--introspect-only</span></kbd></td>
+</tr>
+<tr><td> </td><td>By default, epydoc will gather information about each Python object using
+two methods: parsing the object's source code; and importing the object and
+directly introspecting it. Epydoc combines the information obtained from
+these two methods to provide more complete and accurate documentation.
+However, if you wish, you can tell epydoc to use only one or the other of
+these methods. For example, if you are running epydoc on untrusted code,
+you should use the <tt class="docutils literal"><span class="pre">--parse-only</span></tt> option.</td></tr>
+<tr><td class="option-group">
+<kbd><span class="option">-v</span>, <span class="option">-q</span></kbd></td>
+<td>Increase (<tt class="docutils literal"><span class="pre">-v</span></tt>) or decrease (<tt class="docutils literal"><span class="pre">-q</span></tt>) the verbosity of the output. These
+options may be repeated to further increase or decrease verbosity.
+Docstring markup warnings are supressed unless <tt class="docutils literal"><span class="pre">-v</span></tt> is used at least once.</td></tr>
+<tr><td class="option-group">
+<kbd><span class="option">--name <var>NAME</var></span></kbd></td>
+<td>The documented project's name.</td></tr>
+<tr><td class="option-group">
+<kbd><span class="option">--url <var>URL</var></span></kbd></td>
+<td>The documented project's URL.</td></tr>
+<tr><td class="option-group" colspan="2">
+<kbd><span class="option">--docformat <var>NAME</var></span></kbd></td>
+</tr>
+<tr><td> </td><td>The markup language that should be used by default to process modules'
+docstrings. This is only used for modules that do not define the special
+<tt class="docutils literal"><span class="pre">__docformat__</span></tt> variable; it is recommended that you explicitly specify
+<tt class="docutils literal"><span class="pre">__docformat__</span></tt> in all your modules.</td></tr>
+<tr><td class="option-group" colspan="2">
+<kbd><span class="option">--graph <var>GRAPHTYPE</var></span></kbd></td>
+</tr>
+<tr><td> </td><td><p class="first">Include graphs of type <em>GRAPHTYPE</em> in the generated output. Graphs are
+generated using the Graphviz <tt class="docutils literal"><span class="pre">dot</span></tt> executable. If this executable is not
+on the path, then use <tt class="docutils literal"><span class="pre">--dotpath</span></tt> to specify its location. This option
+may be repeated to include multiple graph types in the output. To include
+all graphs, use <tt class="docutils literal"><span class="pre">--graph</span> <span class="pre">all</span></tt>. The available graph types are:</p>
+<ul class="last simple">
+<li><strong>classtree</strong>: displays each class's base classes and subclasses;</li>
+<li><strong>callgraph</strong>: displays the callers and callees of each function or
+method. These graphs are based on profiling information, which must be
+specified using the <tt class="docutils literal"><span class="pre">--pstate</span></tt> option.</li>
+<li><strong>umlclass</strong>: displays each class's base classes and subclasses, using
+UML style. Methods and attributes are listed in the classes where they
+are defined. If type information is available about attributes (via the
+<tt class="docutils literal"><span class="pre">@type</span></tt> field), then those types are displayed as separate classes, and
+the attributes are displayed as associations.</li>
+</ul>
+</td></tr>
+<tr><td class="option-group" colspan="2">
+<kbd><span class="option">--inheritance <var>STYLE</var></span></kbd></td>
+</tr>
+<tr><td> </td><td><p class="first">The format that should be used to display inherited methods, variables, and
+properties. Currently, three styles are supported. To see an example of each style,
+click on it:</p>
+<ul class="last simple">
+<li><a class="reference external" href="http://epydoc.sourceforge.net/examples/grouped/inh_example.Programmer-class.html">grouped</a>: Inherited objects are gathered into groups, based on which
+class they are inherited from.</li>
+<li><a class="reference external" href="http://epydoc.sourceforge.net/examples/listed/inh_example.Programmer-class.html">listed</a>: Inherited objects are listed in a short list at the end of the
+summary table.</li>
+<li><a class="reference external" href="http://epydoc.sourceforge.net/examples/included/inh_example.Programmer-class.html">included</a>: Inherited objects are mixed in with non-inherited objects.</li>
+</ul>
+</td></tr>
+<tr><td class="option-group">
+<kbd><span class="option">--config <var>FILE</var></span></kbd></td>
+<td>Read the given configuration file, which can contain both options and
+Python object names. This option may be used multiple times, if you wish
+to use multiple configuration files. See <a class="reference external" href="manual-usage.html#configuration-files">Configuration Files</a> for more
+information.</td></tr>
+</tbody>
+</table>
+</div>
+<p>The complete list of command line options is available in the <a class="reference external" href="manual-reference.html#command-line-usage">Command Line
+Usage</a> section.</p>
+</div>
+<div class="section" id="examples">
+<h2>Examples</h2>
+<p>The following command will generate HTML documentation for the <tt class="docutils literal"><span class="pre">sys</span></tt> module,
+and write it to the directory <tt class="docutils literal"><span class="pre">sys_docs</span></tt>:</p>
+<pre class="literal-block">
+[epydoc]$ epydoc --html sys -o sys_docs
+</pre>
+<p>The following commands are used to produce the API documentation for epydoc
+itself. The first command writes html output to the directory <tt class="docutils literal"><span class="pre">html/api</span></tt>,
+using <tt class="docutils literal"><span class="pre">epydoc</span></tt> as the project name and <tt class="docutils literal"><span class="pre">http://epydoc.sourcforge.net</span></tt> as
+the project URL. The <tt class="docutils literal"><span class="pre">white</span></tt> CSS style is used; inheritance is displayed
+using the listed style; and all graphs are included in the output. The second
+command writes pdf output to the file <tt class="docutils literal"><span class="pre">api.pdf</span></tt> in the directory
+<tt class="docutils literal"><span class="pre">latex/api</span></tt>, using <tt class="docutils literal"><span class="pre">Epydoc</span></tt> as the project name.</p>
+<pre class="literal-block">
+[epydoc]$ epydoc -v -o html/api --name epydoc --css white \
+                 --url http://epydoc.sourceforge.net \
+                 --inheritance listed --graph all src/epydoc
+[epydoc]$ epydoc -v -o latex/api --pdf --name "Epydoc" src/epydoc
+</pre>
+</div>
+<div class="section" id="configuration-files">
+<h2>Configuration Files</h2>
+<p>Configuration files, specified using the <tt class="docutils literal"><span class="pre">--config</span></tt> option, may be used to
+specify both the list of objects to document, and the options that should be
+used to document them. Configuration files are read using the standard
+<a class="reference external" href="http://docs.python.org/lib/module-ConfigParser.html">ConfigParser</a> module. The following is a simple example of a configuration
+file.</p>
+<pre class="literal-block">
+<strong>[epydoc]</strong> <em># Epydoc section marker (required by ConfigParser)</em>
+
+<em># Information about the project.</em>
+<strong>name: My Cool Project</strong>
+<strong>url: http://cool.project/</strong>
+
+<em># The list of modules to document.  Modules can be named using</em>
+<em># dotted names, module filenames, or package directory names.</em>
+<em># This option may be repeated.</em>
+<strong>modules: sys, os.path, re</strong>
+<strong>modules: my/project/driver.py</strong>
+
+<em># Write html output to the directory "apidocs"</em>
+<strong>output: html</strong>
+<strong>target: apidocs/</strong>
+
+<em># Include all automatically generated graphs.  These graphs are</em>
+<em># generated using Graphviz dot.</em>
+<strong>graph: all</strong>
+<strong>dotpath: /usr/local/bin/dot</strong>
+</pre>
+<p>A <a class="reference external" href="manual-reference.html#sample-configuration-file">more complete example</a>, including all of the supported options, is also
+available.</p>
+</div>
+</div>
+<div class="section" id="the-graphical-interface">
+<h1>The Graphical Interface</h1>
+<p>Epydoc also includes a graphical interface, for systems where command line
+interfaces are not convenient (such as Windows). The graphical interface can
+be invoked with the <tt class="docutils literal"><span class="pre">epydocgui</span></tt> command, or with <tt class="docutils literal"><span class="pre">epydoc.pyw</span></tt> in the
+<tt class="docutils literal"><span class="pre">Scripts</span></tt> subdirectory of the Python installation directory under Windows.
+Currently, the graphical interface can only generate HTML output.</p>
+<div align="center" class="align-center"><img alt="epydoc_gui.png" class="align-center" src="epydoc_gui.png" /></div>
+<p>Use the <strong>Add</strong> box to specify what objects you wish to document. Objects can
+be specified using dotted names (such as <tt class="docutils literal"><span class="pre">os.path</span></tt>), module filenames (such
+as <tt class="docutils literal"><span class="pre">epydoc/epytext.py</span></tt>), or package directory names (such as <tt class="docutils literal"><span class="pre">epydoc/</span></tt>).
+Packages are expanded to include all sub-modules and sub-packages. Once you
+have added all of the modules that you wish to document, press the <strong>Start</strong>
+button. Epydoc's progress will be displayed on the progress bar.</p>
+<p>To customize the output, click on the <strong>Options</strong> arrow at the bottom of the
+window. This opens the options pane, which contains fields corresponding to
+each command line option.</p>
+<div align="center" class="align-center"><img alt="epydoc_guiconfig.png" class="align-center" src="epydoc_guiconfig.png" /></div>
+<p>The epydoc graphical interface can save and load <em>project files</em>, which record
+the set of modules and the options that you have selected. Select
+<strong>File->Save</strong> to save the current modules and options to a project file; and
+<strong>File->Open</strong> to open a previously saved project file. (These project files do
+not currently use the same format as the configuration files used by the
+command line interface.)</p>
+<p>For more information, see the <tt class="docutils literal"><span class="pre">epydocgui(1)</span></tt> man page.</p>
+</div>
+<div class="section" id="documentation-completeness-checks">
+<h1>Documentation Completeness Checks</h1>
+<p>The <tt class="docutils literal"><span class="pre">epydoc</span></tt> script can be used to check the completeness of the reference
+documentation. In particular, it will check that every module, class, method,
+and function has a description; that every parameter has a description and a
+type; and that every variable has a type. If the <tt class="docutils literal"><span class="pre">-p</span></tt> option is used, then
+these checks are run on both public and private objects; otherwise, the checks
+are only run on public objects.</p>
+<p><tt class="docutils literal"><span class="pre">epydoc</span></tt> <tt class="docutils literal"><span class="pre">--check</span></tt> [<tt class="docutils literal"><span class="pre">-p</span></tt>] <em>MODULES...</em></p>
+<dl class="docutils">
+<dt><em>MODULES...</em></dt>
+<dd>A list of the modules that should be checked. Modules may be specified
+using either filenames (such as <tt class="docutils literal"><span class="pre">epydoc/epytext.py</span></tt>) or module names
+(such as <tt class="docutils literal"><span class="pre">os.path</span></tt>). The filename for a package is its <tt class="docutils literal"><span class="pre">__init__.py</span></tt>
+file.</dd>
+</dl>
+<table class="docutils option-list" frame="void" rules="none">
+<col class="option" />
+<col class="description" />
+<tbody valign="top">
+<tr><td class="option-group">
+<kbd><span class="option">-p</span></kbd></td>
+<td>Run documentation completeness checks on private objects.</td></tr>
+</tbody>
+</table>
+<p>For each object that fails a check, epydoc will print a warning. For example,
+some of the warnings generated when checking the completeness of the
+documentation for epydoc's private objects are:</p>
+<pre class="literal-block">
+epydoc.html.HTML_Doc._dom_link_to_html........No docs
+epydoc.html.HTML_Doc._module..................No type
+epydoc.html.HTML_Doc._link_to_html.link.......No descr
+epydoc.html.HTML_Doc._author.return...........No type
+epydoc.html.HTML_Doc._author.authors..........No descr, No type
+epydoc.html.HTML_Doc._author.container........No descr, No type
+epydoc.html.HTML_Doc._base_tree.uid...........No descr, No type
+epydoc.html.HTML_Doc._base_tree.width.........No descr, No type
+epydoc.html.HTML_Doc._base_tree.postfix.......No descr, No type
+</pre>
+<p>If you'd like more fine-grained control over what gets checked, or you would
+like to check other fields (such as the author or version), then you should
+use the <a class="reference external" href="http://epydoc.sourceforge.net/api/epydoc.checker.DocChecker-class.html"><tt class="docutils literal"><span class="pre">DocChecker</span></tt></a> class directly.</p>
+</div>
+<div class="section" id="html-files">
+<h1>HTML Files</h1>
+<p>Every Python module and class is documented in its own file. Index files, tree
+files, a help file, and a frames-based table of contents are also created.
+The following list describes each of the files generated by epydoc:</p>
+<dl class="docutils">
+<dt><tt class="docutils literal"><span class="pre">index.html</span></tt></dt>
+<dd>The standard entry point for the documentation. Normally, <tt class="docutils literal"><span class="pre">index.html</span></tt>
+is a copy of the frames file (<tt class="docutils literal"><span class="pre">frames.html</span></tt>). But if the <tt class="docutils literal"><span class="pre">--no-frames</span></tt>
+option is used, then <tt class="docutils literal"><span class="pre">index.html</span></tt> is a copy of the API documentation home
+page, which is normally the documentation page for the top-level package or
+module (or the trees page if there is no top-level package or module).</dd>
+<dt><em>module</em><tt class="docutils literal"><span class="pre">-module.html</span></tt></dt>
+<dd>The API documentation for a module. <em>module</em> is the complete dotted name of
+the module, such as <cite>sys</cite> or <cite>epydoc.epytext</cite>.</dd>
+<dt><em>class</em><tt class="docutils literal"><span class="pre">-class.html</span></tt></dt>
+<dd>The API documentation for a class, exception, or type. <em>class</em> is the
+complete dotted name of the class, such as <tt class="docutils literal"><span class="pre">epydoc.epytext.Token</span></tt> or
+<tt class="docutils literal"><span class="pre">array.ArrayType</span></tt>.</dd>
+<dt><em>module</em><tt class="docutils literal"><span class="pre">-pysrc.html</span></tt></dt>
+<dd>A page with the module colorized source code, with links back to the
+objects main documentation pages. The creation of the colorized source
+pages can be controlled using the <a class="reference external" href="CommandLineUsage_">options</a> <tt class="docutils literal"><span class="pre">--show-sourcecode</span></tt> and
+<tt class="docutils literal"><span class="pre">--no-sourcecode</span></tt>.</dd>
+<dt><tt class="docutils literal"><span class="pre">module-tree.html</span></tt></dt>
+<dd>The documented module hierarchy.</dd>
+<dt><tt class="docutils literal"><span class="pre">class-tree.html</span></tt></dt>
+<dd>The documented classes hierarchy.</dd>
+<dt><tt class="docutils literal"><span class="pre">identifier-index.html</span></tt></dt>
+<dd>The index of all the identifiers found in the documented items.</dd>
+<dt><tt class="docutils literal"><span class="pre">term-index.html</span></tt></dt>
+<dd>The index of all the term definition found in the docstrings. Term
+definitions are created using the <a class="reference external" href="manual-epytext.html#indexed-terms">Indexed Terms</a> markup.</dd>
+<dt><tt class="docutils literal"><span class="pre">bug-index.html</span></tt></dt>
+<dd>The index of all the known bug in the documented sources. Bugs are marked
+using the <tt class="docutils literal"><span class="pre">@bug</span></tt> tag.</dd>
+<dt><tt class="docutils literal"><span class="pre">todo-index.html</span></tt></dt>
+<dd>The index of all the to-do items in the documented sources. They are
+marked using the <tt class="docutils literal"><span class="pre">@todo</span></tt> tag.</dd>
+<dt><tt class="docutils literal"><span class="pre">help.html</span></tt></dt>
+<dd>The help page for the project. This page explains how to use and navigate
+the webpage produced by epydoc.</dd>
+<dt><tt class="docutils literal"><span class="pre">epydoc-log.html</span></tt></dt>
+<dd>A page with the log of the epydoc execution. It is available clicking on
+the timestamp below each page, if the documentation was created using the
+<tt class="docutils literal"><span class="pre">--include-log</span></tt> option. The page also contains the list of the options
+enabled when the documentation was created.</dd>
+<dt><tt class="docutils literal"><span class="pre">api-objects.txt</span></tt></dt>
+<dd>A text file containing each available item and the URL where it is
+documented. Each item takes a file line and it is separated by the URL by
+a <tt class="docutils literal"><span class="pre">tab</span></tt> charecter. Such file can be used to create <a class="reference external" href="manual-othermarkup.html#external-api-links">external API links</a>.</dd>
+<dt><tt class="docutils literal"><span class="pre">redirect.html</span></tt></dt>
+<dd>A page containing Javascript code that redirect the browser to the
+documentation page indicated by the accessed fragment. For example
+opening the page <tt class="docutils literal"><span class="pre">redirect.html#epydoc.apidoc.DottedName</span></tt> the browser
+will be redirected to the page <tt class="docutils literal"><span class="pre">epydoc.apidoc.DottedName-class.html</span></tt>.</dd>
+<dt><tt class="docutils literal"><span class="pre">frames.html</span></tt></dt>
+<dd>The main frames file. Two frames on the left side of the window contain a
+table of contents, and the main frame on the right side of the window
+contains API documentation pages.</dd>
+<dt><tt class="docutils literal"><span class="pre">toc.html</span></tt></dt>
+<dd>The top-level table of contents page. This page is displayed in the
+upper-left frame of frames.html, and provides links to the
+<tt class="docutils literal"><span class="pre">toc-everything.html</span></tt> and <tt class="docutils literal"><span class="pre">toc-module-module.html</span></tt> pages.</dd>
+<dt><tt class="docutils literal"><span class="pre">toc-everything.html</span></tt></dt>
+<dd>The table of contents for the entire project. This page is displayed in
+the lower-left frame of frames.html, and provides links to every class,
+type, exception, function, and variable defined by the project.</dd>
+<dt><tt class="docutils literal"><span class="pre">toc-</span></tt><em>module</em><tt class="docutils literal"><span class="pre">-module.html</span></tt></dt>
+<dd>The table of contents for a module. This page is displayed in the
+lower-left frame of frames.html, and provides links to every class, type,
+exception, function, and variable defined by the module. module is the
+complete dotted name of the module, such as <tt class="docutils literal"><span class="pre">sys</span></tt> or <tt class="docutils literal"><span class="pre">epydoc.epytext</span></tt>.</dd>
+<dt><tt class="docutils literal"><span class="pre">epydoc.css</span></tt></dt>
+<dd>The CSS stylesheet used to display all HTML pages.</dd>
+</dl>
+</div>
+<div class="section" id="css-stylesheets">
+<h1>CSS Stylesheets</h1>
+<p>Epydoc creates a CSS stylesheet (<tt class="docutils literal"><span class="pre">epydoc.css</span></tt>) when it builds the API
+documentation for a project. You can specify which stylesheet should be used
+using the <tt class="docutils literal"><span class="pre">--css</span></tt> command-line option. If you do not specify a stylesheet,
+and one is already present, epydoc will use that stylesheet; otherwise, it will
+use the default stylesheet.</p>
+</div>
+</div>
+<table width="100%" class="navbox" cellpadding="1" cellspacing="0">
+  <tr>
+  <a class="nav" href="index.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="index.html">
+    Home</a></td></a>
+  <a class="nav" href="installing.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="installing.html">
+    Installing Epydoc</a></td></a>
+  <a class="nav" href="using.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="using.html">
+    Using Epydoc</a></td></a>
+  <a class="nav" href="epytext.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="epytext.html">
+    Epytext</a></td></a>
+  <td align="center" width="20%" class="nav">
+    
+    <A href="http://sourceforge.net/projects/epydoc"> 
+    <IMG src="sflogo.png" 
+    width="88" height="26" border="0" alt="SourceForge"
+    align="top"/></A></td>
+    </tr>
+</table>
+</body>
+</html>
diff --git a/doc/othermarkup.html b/doc/othermarkup.html
new file mode 100644
index 0000000..5fe1ca3
--- /dev/null
+++ b/doc/othermarkup.html
@@ -0,0 +1,214 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html> <head>
+<title>Alternate Markup Languages</title>
+<link rel="stylesheet" href="epydoc.css" type="text/css"/>
+</head>
+<!-- $Id: othermarkup.html 1526 2007-02-17 04:30:49Z dvarrazzo $ -->
+<body>
+<div class="body">
+<h1>Alternate Markup Languages</h1>
+
+<p> Epydoc's default markup language is <a
+href="epytext.html">epytext</a>, a lightweight markup language that's
+easy to write and to understand. But if epytext is not powerful enough
+for you, or doesn't suit your needs, epydoc also supports three
+alternate markup languages: </p>
+
+<ul>
+  <li><b><a href="http://docutils.sourceforge.net/rst.html"
+  >reStructuredText</a></b> is an "easy-to-read,
+  what-you-see-is-what-you-get plaintext markup syntax."  It is more
+  powerful than epytext (e.g., it includes markup for tables and
+  footnotes); but it is also more complex, and sometimes harder to
+  read.</li>
+  
+  <li><b><a href="http://java.sun.com/j2se/javadoc/"
+  >Javadoc</a></b> is a documentation markup language that was
+  developed for Java.  It consists of HTML, augmented by a set of
+  special tagged fields. </li>
+  
+  <li><b>Plaintext</b> docstrings are rendered verbatim (preserving
+  whitespace).</li>
+</ul>
+
+<p> To specify the markup language for a module, you should define a
+module-level string variable <code>__docformat__</code>, containing
+the name of the module's markup language.  The name of the markup
+language may optionally be followed by a language code (such as
+<code>en</code> for English).  Conventionally, the definition of the
+<code>__docformat__</code> variable immediately follows the module's
+docstring: </p>
+
+<div class="screen">
+<pre>
+<code class="comment"># widget.py</code>
+<code class="string">"""
+Graphical support for `gizmos` and `widgets`.
+"""</code>
+__docformat__ = <code class="string">"restructuredtext en"</code>
+<i>[...]</i>
+</pre></div>
+
+<p> To change the default markup language from the command line, use
+the <code>--docformat</code> option.  For example, the following
+command generates API documentation for the existing regular
+expression package <code>re</code>, which uses plaintext markup: </p>
+
+<div class="screen"><pre>
+<code class="prompt">[epydoc]$</code> epydoc --docformat plaintext re
+</pre></div>
+
+<a name="restructuredtext">
+<h2>reStructuredText</h2></a>
+
+<p> reStructuredText is a markup language that was developed in
+conjunction with <a
+href="http://docutils.sourceforge.net">Docutils</a>.  In order to
+parse reStructuredText docstrings, Docutils 0.3 or higher must be
+installed.  If Docutils is not installed, then reStructuredText
+docstrings will be rendered as plaintext.  Docutils can be downloaded
+from the <a
+href="http://sourceforge.net/project/showfiles.php?group_id=38414">Docutils
+SourceForge page</a>. </p>
+
+<p> In addition to the <a href="fields.html#fields">standard set of
+fields</a>, the reStructruedText parser also supports
+<i>consolidated</i> fields, which combine the documentation for
+several objects into a single field.  For more information, see the
+markup-specific notes for <a href="fields.html#rst">reStructuredText
+fields</a>. </p>
+
+<p> The epydoc reStructuredText reader also defines several custom <a
+href="http://docutils.sourceforge.net/docs/user/rst/quickref.html#directives">directives</a>,
+which can be used to automatically generate a variety of graphs.  The
+following custom directives are currently defined:</p>
+
+<table border="1" cellspacing="0" cellpadding="3" width="95%">
+<tr><th width="10%">Directive</th><th width="90%">Description</th></tr>
+
+<tr valign="top"><td><pre>
+.. classtree:: [<code class="user">classes...</code>]
+    :dir: <code class="user">up|down|left|right</code>
+</pre></td>
+<td>
+Display a class hierarchy for the given class or classes (including
+all superclasses & subclasses).  If no class is specified, and the
+directive is used in a class's docstring, then that class's class
+hierarchy will be displayed.  The <code>dir</code> option specifies
+the orientation for the graph (default=<code>down</code>).
+</td></tr>
+
+<tr valign="top"><td><pre>
+.. packagetree:: [<code class="user">modules...</code>]
+    :dir: <code class="user">up|down|left|right</code>
+    :style: <code class="user">uml|tree</code>
+</pre></td>
+<td>
+Display a package hierarchy for the given module or modules (including
+all subpackages and submodules).  If no module is specified, and the
+directive is used in a module's docstring, then that module's package
+hierarchy will be displayed.  The <code>dir</code> option specifies
+the orientation for the graph (default=<code>down</code>).  The
+<code>style</code> option specifies whether packages should be
+displayed in a tree, or using nested UML symbols.
+</td></tr>
+
+<tr valign="top"><td><pre>
+.. importgraph:: [<code class="user">modules...</code>]
+    :dir: <code class="user">up|down|left|right</code>
+</pre></td>
+<td>
+Display an import graph for the given module or modules.  If no module
+is specified, and the directive is used in a module's docstring, then
+that module's import graph will be displayed.  The <code>dir</code>
+option specifies the orientation for the graph
+(default=<code>left</code>).
+</td></tr>
+
+<tr valign="top"><td><pre>
+.. callgraph:: [<code class="user">functions...</code>]
+    :dir: <code class="user">up|down|left|right</code>
+</pre></td>
+<td>
+Display a call graph for the given function or functions.  If no function
+is specified, and the directive is used in a function's docstring, then
+that function's call graph will be displayed.  The
+<code>dir</code> option specifies the orientation for the graph
+(default=<code>right</code>).
+</td></tr>
+
+<tr valign="top"><td><pre>
+.. dotgraph:: [<code class="user">title...</code>]
+    :caption: <code class="user">text...</code>
+    <code class="user">graph...</code>
+</pre></td>
+<td>
+
+Display a custom Graphviz dot graph.  The body of the directive
+(<code>graph...</code>) should contain the body of a dot graph.  The
+optional <code>title</code> argument, if specified, is used as the
+title of the graph.  The optional <code>caption</code> option can be
+used to provide a caption for the graph.
+
+
+</td></tr>
+
+
+</table>
+
+
+
+
+<h2>Javadoc</h2>
+
+<p><a href="http://java.sun.com/j2se/javadoc/"
+  >Javadoc</a> is a markup language developed by Sun Microsystems
+  for documenting Java APIs.  The epydoc implementation of Javadoc is
+  based on the <a
+  href="http://java.sun.com/j2se/1.4.2/docs/tooldocs/solaris/javadoc.html">Javadoc
+  1.4.2 reference documentation</a>.  However, there are likely to be
+  some minor incompatibilities between Sun's implementation and
+  epydoc's.  Known incompatibilities include: </p>
+
+<ul>
+ <li> Epydoc does not support the Javadoc block tag
+ <code>@serial</code>.</li>
+
+ <li> Epydoc does not support the following Javadoc inline tags:
+ <code>{@docroot}</code>, <code>{@inheritdoc}</code>,
+ <code>{@value}</code>.
+ 
+  <li> Epydoc adds many field tags that Sun does not include, such as
+  <code>@var</code>, <code>@type</code>, and
+  <code>@group</code>. </li>
+</ul>
+
+</div>
+<table width="100%" class="navbox" cellpadding="1" cellspacing="0">
+  <tr>
+  <a class="nav" href="index.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="index.html">
+    Home</a></td></a>
+  <a class="nav" href="installing.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="installing.html">
+    Installing Epydoc</a></td></a>
+  <a class="nav" href="using.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="using.html">
+    Using Epydoc</a></td></a>
+  <a class="nav" href="epytext.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="epytext.html">
+    Epytext</a></td></a>
+  <td align="center" width="20%" class="nav">
+    
+    <A href="http://sourceforge.net/projects/epydoc"> 
+    <IMG src="sflogo.png" 
+    width="88" height="26" border="0" alt="SourceForge"
+    align="top"/></A></td>
+    </tr>
+</table>
+</body>
+</html>
diff --git a/doc/pysrc.thumbnail.png b/doc/pysrc.thumbnail.png
new file mode 100644
index 0000000..80123f5
Binary files /dev/null and b/doc/pysrc.thumbnail.png differ
diff --git a/doc/relatedprojects.html b/doc/relatedprojects.html
new file mode 100644
index 0000000..51fa3c7
--- /dev/null
+++ b/doc/relatedprojects.html
@@ -0,0 +1,319 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html> <head>
+<title>Related Projects</title>
+<link rel="stylesheet" href="epydoc.css" type="text/css"/>
+</head>
+<!-- $Id: relatedprojects.html 1211 2006-04-10 19:38:37Z edloper $ -->
+
+<body>
+<div class="body">
+<h1> Related Projects</h1>
+
+<h2> 1. Doc-sig </h2>
+
+<p> <a href="http://www.python.org/sigs/doc-sig/">Doc-sig</a> is a
+Python special interest group dedicated to producing documentation and
+documentation tools for Python.  Much of my work on epydoc was
+influenced by conversations on the <a
+href="http://mail.python.org/pipermail/doc-sig/">doc-sig mailing
+list</a>.
+
+<h2> 2. Python API Extraction Tools </h2>
+
+<p> Several tools have been created to extract API documentation from
+Python.  This section describes the tools that I have looked at, and
+compares them to epydoc.  If I left out any tools, please let me know.
+
+<h3> 2.1. Pydoc </h3>
+
+<p> <a href="http://web.lfw.org/python/pydoc.html">Pydoc</a> is the
+only widely accepted API documentation tool for Python.  It became
+part of the standard library in Python 2.1.  Pydoc defines three basic
+modes of operation: </p>
+
+<ul>
+  <li> The a command line interface that creates output that is
+  similar to the manual pages shown by the unix man command.
+  It can also be used to search for keywords, like the unix
+  apropos command. </li>
+
+  <li> Pydoc can be used to create formatted HTML pages.  For an
+  example of the html output of pydoc, see the <a
+  href="http://web.lfw.org/python/pydoc.html">pydoc homepage</a>,
+  which was created using pydoc. </li>
+
+  <li> Pydoc provides interactive help from the Python interpreter,
+  via the <code>help</code> function:
+  
+  <div class="screen"><pre>
+<code class="prompt">>>></code> <code class="user"><code class="keyword">from</code> pydoc <code class="keyword">import</code> help</code>
+
+<code class="prompt">>>></code> <code class="user">help(x_intercept)</code>
+<code class="output">Help on function x_intercept in module __main__:
+
+<b>x_intercept</b>(m, b)
+    Return the x intercept of the line y=m*x+b.  The x intercept of a
+    line is the point at which it crosses the x axis (y=0).</code>
+</pre></div>
+  </li>
+</ul>
+
+<p> One limitation of pydoc (and perhaps one of the reasons that it
+was able to become widely accepted) is that it does make any
+assumptions about how docstrings are formatted; it simply displays
+them as they are, with a fixed-width font.  As a result, no special
+formatting can be applied to the text; and there is no way to let
+pydoc know what parts of the docstring describe specific fields, like
+parameters or variables.  On the other hand, this lack of assumptions
+about formatting guarantees that pydoc can be used with any Python
+code. </p>
+
+<p> Like epydoc, pydoc derives information about Python objects by
+using introspection.  This allows pydoc to be used on both Python and
+builtin (C) modules; but it also means that pydoc does not have access
+to some types of information (such as where objects are imported
+from), and it means that pydoc can only document modules that can be
+safely imported. </p>
+
+<p> Pydoc fills a very useful niche, and I use it on a regular basis
+to check the documentation of Python objects.  But for documenting my
+own projects, I prefer to use a tool that can make use of formatting
+conventions in the docstrings. </p>
+
+<h3> 2.2. HappyDoc </h3>
+
+<p> Aside from pydoc, <a
+href="http://happydoc.sourceforge.net/">HappyDoc</a> is probably the
+most widely used API documentation tool for Python.  It is used by at
+least 5 major projects, including Numerical Python.  For an example of
+the HTML output produced by happydoc, see the <a
+href="http://happydoc.sourceforge.net/">HappyDoc homepage</a>, which
+was created using HappyDoc. </p>
+
+<p> HappyDoc is the most flexible API documentation tool currently
+available.  It supports several different docstring markup languages,
+including StructuredText; StructuredTextNG; plain text; raw text; and
+MML.  It can produce a wide variety of output formats, including HTML,
+text files, DocBook, and Dia. </p>
+
+<p> Unlike epydoc, HappyDoc derives information about Python objects
+by parsing the Python source files.  This means that HappyDoc can be
+used to document modules that cannot be safely imported, and that it
+has access to some types of information that are difficult to retrieve
+via introspection.  This also allows HappyDoc objects to be documented
+using comments as well as docstrings.  However, since HappyDoc gets
+information about Python objects by parsing Python source files, it
+cannot be used on builtin (C) modules. </p>
+
+<p> I considered integrating epydoc with HappyDoc (as a docstring
+converter for epytext and a formatter for epydoc's html output), but I
+decided that it would be too difficult.  In particular, it would
+require signifigant work to port epydoc's html output code, because of
+the differences in how epydoc and HappyDoc derive and store
+information about Python objects.  Also, HappyDoc does not appear to
+have a mechanism for associating descriptions with specific fields
+(such as paremeters of a function).  However, I may decided at some
+point to implement a docstring converter for epytext, since that would
+at least allow me to use HappyDoc to generate DocBook and pdf versions
+of API documentation. </p>
+
+<h3> 2.3. Docutils </h3>
+
+<p> <a href="http://docutils.sourceforge.net/">Docutils</a> is a
+project to create a modular framework for Python API documentation
+generation.  The project looks promising, but it is still under
+construction.  Once it is completed, it may become the standard
+framework for Python API documentation tools.  If it does, then I may
+decide to integrate epydoc with it. </p>
+
+<p> The markup language of choice for Docutils is reStructuredText.
+reStructuredText is a fairly powerful markup language, with some of
+the same goals as epytext.  However, it is designed to be used for a
+wide variety of tasks, and some of its features may not be very useful
+for API documentation.  The markup language itself is too complicated
+for my taste, using a wide variety of context-dependant rules to try
+to "guess" what you mean.  In comparison, epytext is much simpler,
+with six simple block structure constructs, and one inline markup
+construct.  If Docutils becomes the standard framework for API
+documentation generation, epytext might provide a simpler markup
+language for people who find reStructuredText too complex. </p>
+
+<p> Porting the epydoc HTML output system to Docutils may prove
+difficult, for some of the same reasons mentioned above for HappyDoc.
+However, if Docutils becomes the standard framework for API
+documentation tools, then I may try to port it. </p>
+
+<h3> 2.4. Pythondoc </h3>
+
+<p> <a
+href="http://starship.python.net/crew/danilo/pythondoc/">Pythondoc</a>
+is a Python API documentation tool that uses StructuredText for
+markup, and can produce HTML and XML output.  It uses XML as an
+intermediate representation, to simplify the addition of new output
+formats. </a>
+
+<h3> 2.5. Crystal </h3>
+
+<p> <a
+href="http://www.btinternet.com/~tratt/comp/python/crystal/">Crystal</a>
+is a Python API documentation tool that produces output that is
+similar to Javadoc.  Its homepage includes <a
+href="http://www.btinternet.com/~tratt/comp/python/crystal/sample/index.html">a
+sample of the output it generates</a>. </p>
+
+<h3> 2.6. Easydoc </h3>
+
+<p> <a href="http://htmltmpl.sourceforge.net/easydoc.html">Easydoc</a>
+is a Python API documentation tool based on <a
+href="http://htmltmpl.sourceforge.net/">htmltmpl</a>.  It uses an
+HTML-like markup language, similar to the language used by Javadoc;
+and produces HTML output. </p>
+
+<h3> 2.7. Teud </h3>
+
+<p> <a
+href="http://twistedmatrix.com/users/jh.twistd/python/moin.cgi/TeudProject">Teud</a>
+is a Python API documentation tool that does not apply any formatting
+to docstrings (like pydoc).  It produces XML output, which can then be
+transformed to HTML using an XSLT stylesheet.  Its homepage includes
+<a
+href="http://twistedmatrix.com/users/jh/teud/Twisted/twisted.html">a
+sample of the output it generates</a>. </p>
+
+<h3> 2.8. XIST </h3>
+
+<p> <a href="http://www.livinglogic.de/Python/xist/index.html">XIST</a>
+is an XML based extensible HTML generator written in Python.  It can
+be used to produce API documentation in HTML. </p>
+
+<h3> 2.9. HTMLgen </h3>
+
+<p> <a
+href="http://starship.python.net/crew/friedrich/HTMLgen/html/main.html">HTMLgen</a>
+is a Python library for generating HTML documents.  It can be used to
+produce API documentation; for an example of its output, see the <a
+href="http://starship.python.net/crew/friedrich/HTMLgen/html/index.html">HTMLgen
+Manual</a> </p>
+
+<h3> 2.10. doc.py </h3>
+
+<a
+href="http://www.lemburg.com/files/python/SoftwareDescriptions.html#doc.py">doc.py</a>
+is a Python API documentation tool that is no longer under active
+development.  It uses an unspecified markup langauge, and produces
+HTML output.  For an example of its output, see its <a
+href="http://www.lemburg.com/files/python/PythonStuff.html">API
+documentation</a>. </p>
+
+<h2> 3. API Extraction Tools for Other Languages </h2>
+
+<h3> 3.1. Javadoc </h3>
+
+<p> <a href="http://java.sun.com/j2se/javadoc/">Javadoc</a> is the
+standard API documentation tool for Java.  It uses special comments to
+document classes, interfaces, methods, and variables.  Its markup
+language consists of HTML, extended with a few special constructs such
+as fields.  The javadoc program extracts the API documentation, and
+converts it into a set of HTML pages.  For an example of the HTML
+output produced by javadoc, see the <a
+href="http://java.sun.com/j2se/1.4/docs/api/index.html">j2se 1.4 API
+specification</a>. </p>
+
+<p> The use of HTML as a markup language for API documentation has two
+major disadvantages.  First, HTML is quite verbose, which makes it
+inconvenient to write and read the documentation.  Second, it means
+that the only supported output format is HTML; API documentation
+cannot be rendered in other formats, such as pdf.  </p>
+
+<p> On the other hand, the use of HTML has some significant
+advantages.  First, HTML is widely used and widely known, so most
+programmers don't need to learn a new markup language.  Second, the
+use of HTML simplifies the construction of documentation formatting
+tools.  And finally, HTML provides a great deal of freedom for
+including complex constructs in the API documentation, such as tables,
+charts, and images.  </p>
+
+<p> Javadoc was the original inspiration for epydoc, and I adopted its
+use of fields.  However, I decided that HTML was too verbose and
+complex of a markup language, and decided to create a simpler markup
+language instead. </p>
+
+<h3> 3.2. Doxygen </h3>
+
+<p> <a href="http://www.doxygen.org/">Doxygen</a> is an API
+documentation tool for for C++, C, Java, and IDL.  It is the most
+commonly used API documentation tool for C and C++.  It uses a fairly
+complex markup language, which can handle everything from lists to
+crossreferences to mathematical formulas.  It can output the API
+documentation as HTML, LaTeX, Postscript, PDF, RTF, and Unix man
+pages.  It also has a number of advanced features that are not
+supported by any other API documentation tools that I know of, such as
+producing call graphs using dot; and rendering LaTeX-style
+mathematical formulas. </p>
+
+<h3> 3.3. POD </h3>
+
+<p> <a
+href="http://www.perldoc.com/perl5.8.0/pod/perlpod.html">POD</a>
+(Plain Old Documentation) is the standard API documentation tool for
+Perl.  POD defines a simple low-level markup language that integrates
+well with the Perl parser.  Tools exist to convert POD documentation
+into a variety of formats, including HTML and man pages.  For an
+example of the HTML output produced for POD, see the <a
+href="http://www.perldoc.com/perl5.6.1/pod.html">Perldoc POD Page</a>
+</p>
+
+<p> The inline markup construct (<code>x{...}</code>) used by epydoc
+was partially inspired by the POD inline markup construct
+(<code>x<...></code>).  However, I decided to use curly braces
+instead of angle braces, because it significantly reduces the need for
+escaping.  A matching pair of curly braces is only interpreted as
+markup if the left brace is immediately preceeded by a capital letter;
+thus, you only need to use escaping if: </p>
+
+<ol>
+  <li> You want to include a single (un-matched) curly brace.
+  <li> You want to preceed a matched pair of curly braces with a
+  capital letter. </li>
+</ol>
+
+<p> Note that there is no valid Python expression where a pair of
+matched curly braces is immediately preceeded by a capital letter
+(except within string literals); so case (2) is unlikely to cause any
+problems. </p>
+
+<h3> 3.4. Other Tools </h3>
+
+<p> The Doxygen page includes a fairly extensive list of <a
+href="http://www.stack.nl/~dimitri/doxygen/links.html">API
+documentation extraction tools</a>. </p>
+
+</div>
+<table width="100%" class="navbox" cellpadding="1" cellspacing="0">
+  <tr>
+  <a class="nav" href="index.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="index.html">
+    Home</a></td></a>
+  <a class="nav" href="installing.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="installing.html">
+    Installing Epydoc</a></td></a>
+  <a class="nav" href="using.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="using.html">
+    Using Epydoc</a></td></a>
+  <a class="nav" href="epytext.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="epytext.html">
+    Epytext</a></td></a>
+  <td align="center" width="20%" class="nav">
+    
+    <A href="http://sourceforge.net/projects/epydoc"> 
+    <IMG src="sflogo.png" 
+    width="88" height="26" border="0" alt="SourceForge"
+    align="top"/></A></td>
+    </tr>
+</table>
+</body>
+</html>
diff --git a/doc/sflogo.png b/doc/sflogo.png
new file mode 100644
index 0000000..b2a9e99
Binary files /dev/null and b/doc/sflogo.png differ
diff --git a/doc/stylesheet.html b/doc/stylesheet.html
new file mode 100644
index 0000000..2489444
--- /dev/null
+++ b/doc/stylesheet.html
@@ -0,0 +1,113 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html> <head>
+<title>Default Epydoc CSS Stylesheet</title>
+<link rel="stylesheet" href="epydoc.css" type="text/css"/>
+</head>
+<!-- $Id: stylesheet.html 1211 2006-04-10 19:38:37Z edloper $ -->
+
+<body>
+<div class="body">
+<h1>Default Epydoc CSS Stylesheet</h1>
+
+<p> Note: this is not up-to-date. </p>
+
+<div class="screen"><pre>
+<code class="comment">/* Body color */</code> 
+<code class="function">body               </code>{ <code class="field">background</code>: #ffffff; <code class="field">color</code>: #000000; } 
+ 
+<code class="comment">/* Tables */</code> 
+<code class="function">table.summary, table.details, table.index
+                   </code>{ <code class="field">background</code>: #e8f0f8; <code class="field">color</code>: #000000; } 
+<code class="function">tr.summary, tr.details, tr.index 
+                   </code>{ <code class="field">background</code>: #70b0f0; <code class="field">color</code>: #000000;  
+                     <code class="field">text-align</code>: left; <code class="field">font-size</code>: 120%; } 
+ 
+<code class="comment">/* Headings */</code>
+<code class="function">h1.heading         </code>{ <code class="field">font-size</code>: +140%; <code class="field">font-style</code>: italic;
+                     <code class="field">font-weight</code>: bold; }
+<code class="function">h2.heading         </code>{ <code class="field">font-size</code>: +125%; <code class="field">font-style</code>: italic;
+                     <code class="field">font-weight</code>: bold; }
+<code class="function">h3.heading         </code>{ <code class="field">font-size</code>: +110%; <code class="field">font-style</code>: italic;
+                     <code class="field">font-weight</code>: normal; }
+                     
+<code class="comment">/* Base tree */</code>
+<code class="function">pre.base-tree      </code>{ <code class="field">font-size</code>: 80%; }
+
+<code class="comment">/* Details Sections */</code>
+<code class="function">table.func-details </code>{ <code class="field">background</code>: #e8f0f8; <code class="field">color</code>: #000000;
+                     <code class="field">border</code>: 2px groove #c0d0d0;
+                     <code class="field">padding</code>: 0 1em 0 1em; <code class="field">margin</code>: 0.4em 0 0 0; }
+<code class="function">h3.func-detail     </code>{ <code class="field">background</code>: transparent; <code class="field">color</code>: #000000;
+                     <code class="field">margin</code>: 0 0 1em 0; }
+
+<code class="function">table.var-details  </code>{ <code class="field">background</code>: #e8f0f8; <code class="field">color</code>: #000000;
+                     <code class="field">border</code>: 2px groove #c0d0d0;
+                     <code class="field">padding</code>: 0 1em 0 1em; <code class="field">margin</code>: 0.4em 0 0 0; }
+<code class="function">h3.var-details     </code>{ <code class="field">background</code>: transparent; <code class="field">color</code>: #000000;
+                     <code class="field">margin</code>: 0 0 1em 0; }
+
+<code class="comment">/* Function signatures */</code>
+<code class="function">.sig               </code>{ <code class="field">background</code>: transparent; <code class="field">color</code>: #000000;
+                     <code class="field">font-weight</code>: bold; }  
+<code class="function">.sig-name          </code>{ <code class="field">background</code>: transparent; <code class="field">color</code>: #006080; }  
+<code class="function">.sig-arg, .sig-kwarg, .sig-vararg
+                   </code>{ <code class="field">background</code>: transparent; <code class="field">color</code>: #008060; }  
+<code class="function">.sig-default       </code>{ <code class="field">background</code>: transparent; <code class="field">color</code>: #602000; }  
+<code class="function">.summary-sig       </code>{ <code class="field">background</code>: transparent; <code class="field">color</code>: #000000; }  
+<code class="function">.summary-sig-name  </code>{ <code class="field">background</code>: transparent; <code class="field">font-weight</code>: bold; }  
+<code class="function">.summary-sig-arg, .summary-sig-kwarg, .summary-sig-vararg
+                   </code>{ <code class="field">background</code>: transparent; <code class="field">color</code>: #008060; }  
+
+<code class="comment">/* Doctest blocks */</code>
+<code class="function">.pysrc             </code>{ <code class="field">background</code>: transparent; <code class="field">color</code>: #000000; }
+<code class="function">.pyprompt          </code>{ <code class="field">background</code>: transparent; <code class="field">color</code>: #003030;
+                     <code class="field">font-weight</code>: bold;}
+<code class="function">.pystring          </code>{ <code class="field">background</code>: transparent; <code class="field">color</code>: #006030; }
+<code class="function">.pycomment         </code>{ <code class="field">background</code>: transparent; <code class="field">color</code>: #003060; }
+<code class="function">.pykeyword         </code>{ <code class="field">background</code>: transparent; <code class="field">color</code>: #402000; }
+<code class="function">.pyoutput          </code>{ <code class="field">background</code>: transparent; <code class="field">color</code>: #404040; }
+ 
+<code class="comment">/* Navigation bar */</code> 
+<code class="function">table.navbar       </code>{ <code class="field">background</code>: #a0c0ff; <code class="field">color</code>: #000000;
+                     <code class="field">border</code>: 2px groove #c0d0d0; }
+<code class="function">th.navbar          </code>{ <code class="field">background</code>: #a0c0ff; <code class="field">color</code>: #6090d0; <code class="field">font-size</code>: 110% } 
+<code class="function">th.navselect       </code>{ <code class="field">background</code>: #70b0ff; <code class="field">color</code>: #000000; <code class="field">font-size</code>: 110% } 
+
+<code class="comment">/* Links */</code> 
+<code class="function">a:link             </code>{ <code class="field">background</code>: transparent; <code class="field">color</code>: #0000ff; }  
+<code class="function">a:visited          </code>{ <code class="field">background</code>: transparent; <code class="field">color</code>: #204080; }  
+<code class="function">a.navbar:link      </code>{ <code class="field">background</code>: transparent; <code class="field">color</code>: #0000ff; 
+                     <code class="field">text-decoration</code>: none; }  
+<code class="function">a.navbar:visited   </code>{ <code class="field">background</code>: transparent; <code class="field">color</code>: #204080; 
+                     <code class="field">text-decoration</code>: none; }  
+</pre></div>
+
+</div>
+<table width="100%" class="navbox" cellpadding="1" cellspacing="0">
+  <tr>
+  <a class="nav" href="index.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="index.html">
+    Home</a></td></a>
+  <a class="nav" href="installing.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="installing.html">
+    Installing Epydoc</a></td></a>
+  <a class="nav" href="using.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="using.html">
+    Using Epydoc</a></td></a>
+  <a class="nav" href="epytext.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="epytext.html">
+    Epytext</a></td></a>
+  <td align="center" width="20%" class="nav">
+    
+    <A href="http://sourceforge.net/projects/epydoc"> 
+    <IMG src="sflogo.png" 
+    width="88" height="26" border="0" alt="SourceForge"
+    align="top"/></A></td>
+    </tr>
+</table>
+</body>
+</html>
diff --git a/doc/uml.thumbnail.png b/doc/uml.thumbnail.png
new file mode 100644
index 0000000..9bedf56
Binary files /dev/null and b/doc/uml.thumbnail.png differ
diff --git a/doc/using.html b/doc/using.html
new file mode 100644
index 0000000..148cc2f
--- /dev/null
+++ b/doc/using.html
@@ -0,0 +1,476 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html> <head>
+<title>Using Epydoc</title>
+<link rel="stylesheet" href="epydoc.css" type="text/css"/>
+</head>
+<!-- $Id: using.html 1538 2007-02-20 09:39:50Z dvarrazzo $ -->
+
+<body>
+<div class="body">
+<h1>Using Epydoc</h1>
+
+<p>Epydoc provides two user interfaces:</p>
+<ul>
+  <li> The <a href="#cli">command line interface</a>, which is
+  accessed via a script named <code>epydoc</code> (or
+  <code>epydoc.py</code> on Windows)</li>
+
+  <li> The <a href="#gui">graphical interface</a>, which is accessed
+  via a script named <code>epydocgui</code> (or
+  <code>epydoc.pyw</code> on Windows).</li>
+</ul>
+
+<p>Epydoc can also be accessed programmatically; see epydoc's <a
+href="api/">API documentation</a> for more information. </p>
+
+<a name="cli"></a><h2> The Command Line Interface </h2>
+
+<p> The <code>epydoc</code> script extracts API documentation for a
+set of python objects, and writes it using a selected output format.
+Objects can be named using dotted names, module filenames, or package
+directory names.  (On Windows, this script is named
+<code>epydoc.py</code>.) </p>
+
+<div class="box">
+<h2 class="box-title">Command Line Usage (Abbreviated)</h2>
+<pre>
+<b>epydoc</b> [<b>--html</b>|<b>--pdf</b>] [<b>-o</b> <code class="user">DIR</code>] [<b>--parse-only</b>|<b>--introspect-only</b>] [<b>-v</b>|<b>-q</b>]
+<b>       </b>[<b>--name</b> <code class="user">NAME</code>] [<b>--url</b> <code class="user">URL</code>] [<b>--docformat</b> <code class="user">NAME</code>] [<b>--graph</b> <code class="user">GRAPHTYPE</code>]
+<b>       </b>[<b>--inheritance</b> <code class="user">STYLE</code>] [<b>--config</b> <code class="user">FILE</code>] <code class="user">OBJECTS...</code>
+</pre>
+
+<dl>
+  <dt><code><code class="user">OBJECTS...</code></code></dt>
+  <dd>
+    A list of the Python objects that should be documented.  Objects
+    can be specified using dotted names (such as
+    "<code>os.path</code>"), module filenames (such as
+    "<code>epydoc/epytext.py</code>"), or package directory names
+    (such as "<code>epydoc/</code>").  Packages are expanded to
+    include all sub-modules and sub-packages.
+  </dd>
+  
+  <dt><code><b>--html</b></code></dt>
+  <dd>Generate HTML output. (default)
+  </dd>
+
+  <dt><code><b>--pdf</b></code></dt>
+  <dd>Generate Adobe Acrobat (PDF) output, using LaTeX.
+  </dd>
+
+  <dt><code><b>-o</b> <code class="user">DIR</code></code>, <code><b>--output</b> <code class="user">DIR</code></code>, <code><b>--target</b> <code class="user">DIR</code></code></dt>
+  <dd>The output directory.
+  </dd>
+
+  <dt><code><b>--parse-only</b></code>,
+      <code><b>--introspect-only</b></code></dt>
+  <dd>By default, epydoc will gather information about each Python
+  object using two methods: parsing the object's source code; and
+  importing the object and directly introspecting it.  Epydoc combines
+  the information obtained from these two methods to provide more
+  complete and accurate documentation.  However, if you wish, you can
+  tell epydoc to use only one or the other of these methods.  For
+  example, if you are running epydoc on untrusted code, you should use
+  the <code>--parse-only</code> option. </dd>
+          
+  <dt><code><b>-v</b></code>, <code><b>-q</b></code></dt>
+  <dd>Increase (<code>-v</code>) or decrease (<code>-q</code>) the
+  verbosity of the output.  These options may be repeated to further
+  increase or decrease verbosity.  Docstring markup warnings
+  are supressed unless <code>-v</code> is used at least once.
+  </dd>
+  
+  <dt><code><b>--name</b> <code class="user">NAME</code></code></dt>
+  <dd>The documented project's name.
+  </dd>
+
+  <dt><code><b>--url</b> <code class="user">URL</code></code></dt>
+  <dd>The documented project's URL.
+  </dd>
+
+  <dt><code><b>--docformat</b> <code class="user">NAME</code></code></dt>
+  <dd>The markup language that should be used by default to process
+  modules' docstrings.  This is only used for modules that do not 
+  define the special <code>__docformat__</code> variable; it is recommended
+  that you explicitly specify <code>__docformat__</code> in all your
+  modules.
+  </dd>
+          
+  <dt><code><b>--graph</b> <code class="user">GRAPHTYPE</code></code></dt>
+          
+  <dd>Include graphs of type <code>GRAPHTYPE</code> in the generated
+  output.  Graphs are generated using the Graphviz dot executable.  If
+  this executable is not on the path, then use <code>--dotpath</code>
+  to specify its location.  This option may be repeated to include
+  multiple graph types in the output.  To include all graphs, use
+  <code>--graph all</code>.  To see an example of each graph
+  type, click on it:
+  <ul>
+    <li><a href="notyet" target="epydoc_graph">
+    <code>classtree</code></a>: Displays each class's base classes and
+    subclasses.
+    </li>
+    <li><a href="notyet" target="epydoc_graph">
+    <code>callgraph</code></a>: Displays the callers and callees of each
+    function or method.  These graphs are based on profiling information,
+    which must be specified using the <code>--pstate</code> option.
+    </li>
+    <li><a href="notyet" target="epydoc_graph">
+    <code>umlclass</code></a>: Displays each class's base classes and
+    subclasses, using UML style.  Methods and attributes are listed in
+    the classes where they are defined.  If type information is
+    available about attributes (via the <code>@type</code> field),
+    then those types are displayed as separate classes, and the
+    attributes are displayed as associations.
+    </li>
+  </ul>
+  </dd>
+
+  <dt><code><b>--inheritance</b> <code class="user">STYLE</code></code></dt>
+  <dd>The format that should be used to display inherited methods,
+  variables, and properties.  Currently, three styles are supported.
+  To see an example of each style, click on it:
+    <ul>
+      <li> <a
+      href="examples/grouped/inh_example.Programmer-class.html"
+      target="epydoc_inh"><code>grouped</code></a>: Inherited objects are
+      gathered into groups, based on which class they are inherited
+      from.</li> <li> <a
+      href="examples/listed/inh_example.Programmer-class.html"
+      target="epydoc_inh"><code>listed</code></a>: Inherited objects are
+      listed in a short list at the end of the summary
+      table.</li>
+      <li> <a
+      href="examples/included/inh_example.Programmer-class.html"
+      target="epydoc_inh"><code>included</code></a>: Inherited objects
+      are mixed in with non-inherited objects. </li>
+    </ul>
+  </dd>
+
+  <dt><code><b>--config</b> <code class="user">FILE</code></code></dt>
+  <dd>Read the given configuration file, which can contain both
+  options and Python object names.  This option may be used multiple
+  times, if you wish to use multiple configuration files.  See <a
+  href="#configfile">Configuration Files</a> for more information.
+  </dd>
+
+
+</dl>
+
+<p>For a complete description of the command line usage for epydoc,
+see the <a href="epydoc-man.html"><code>epydoc(1)</code> man
+page</a></p>
+
+</div>
+
+<h3> Examples </h3>
+
+<p>The following command will generate
+HTML documentation for the <code>sys</code> module, and write it to
+the directory <code>sys_docs</code>:</p>
+
+<div class="screen"><pre>
+<code class="prompt">[epydoc]$</code> epydoc --html sys -o sys_docs 
+</pre></div>
+
+<p> The following commands are used to produce the API documentation
+for epydoc itself.  The first command writes html output to the
+directory <code>html/api</code>, using <code>epydoc</code> as the
+project name and <code>http://epydoc.sourcforge.net</code> as the
+project URL.  The <code>white</code> CSS style is used; inheritance is
+displayed using the <code>listed</code> style; and all graphs are
+included in the output.  The second command writes pdf output to the
+file <code>api.pdf</code> in the directory <code>latex/api</code>,
+using <code>Epydoc</code> as the project name.</p>
+
+<div class="screen"><pre>
+<code class="prompt">[epydoc]$</code> epydoc -v -o html/api --name epydoc --css white \
+                 --url http://epydoc.sourceforge.net \
+                 --inheritance listed --graph all src/epydoc
+<code class="prompt">[epydoc]$</code> epydoc -v -o latex/api --pdf --name "Epydoc" src/epydoc
+</pre></div>
+
+<a name="configfile"><h3> Configuration Files </h3></a>
+
+Configuration files, specified using the <code>--config</code> option,
+may be used to specify both the list of objects to document, and the
+options that should be used to document them.  Configuration files are
+read using the standard <a
+href="http://docs.python.org/lib/module-ConfigParser.html">ConfigParser</a>
+module.  The following is a simple example of a configuration file.
+
+<div class="box">
+<h2 class="box-title">Example Configuration File</h2>
+<pre>
+<b>[epydoc]</b> <i># Epydoc section marker (required by ConfigParser)</i>
+
+<i># Information about the project.</i>
+<b>name: My Cool Project</b>
+<b>url: http://cool.project/</b>
+
+<i># The list of modules to document.  Modules can be named using</i>
+<i># dotted names, module filenames, or package directory names.</i>
+<i># This option may be repeated.</i>
+<b>modules: sys, os.path, re</b>
+<b>modules: my/project/driver.py</b>
+
+<i># Write html output to the directory "apidocs"</i>
+<b>output: html</b>
+<b>target: apidocs/</b>
+
+<i># Include all automatically generated graphs.  These graphs are</i>
+<i># generated using Graphviz dot.</i>
+<b>graph: all</b>
+<b>dotpath: /usr/local/bin/dot</b>
+</pre></div>
+
+<p>A <a href="configfile.html">more complete example</a>, including
+all of the supported options, is also available.</p>
+
+<a name="gui"><h2> The Graphical Interface </h2></a>
+
+<p> Epydoc also includes a graphical interface, for systems where
+command line interfaces are not convenient (such as Windows).  The
+graphical interface can be invoked with the <code>epydocgui</code>
+command, or with <code>epydoc.pyw</code> in the <code>Scripts</code>
+subdirectory of the Python installation directory under Windows.
+Currently, the graphical interface can only generate HTML output.</p>
+
+<a name="gui"/>
+<center><p><img src="epydoc_gui.png"></p>
+</center>
+
+<p> Use the "Add" box to specify what objects you wish to document.
+Objects can be specified using dotted names (such as
+"<code>os.path</code>"), module filenames (such as
+"<code>epydoc/epytext.py</code>"), or package directory names (such as
+"<code>epydoc/</code>").  Packages are expanded to include all
+sub-modules and sub-packages.  Once you have added all of the modules
+that you wish to document, press the "Start" button.  Epydoc's
+progress will be displayed on the progress bar. </p>
+
+<p> To customize the output, click on the "Options" arrow at the
+bottom of the window.  This opens the options pane, which contains
+fields corresponding to each command line option. </p>
+
+<a name="guiconfig"/>
+<center><p><img src="epydoc_guiconfig.png"></p>
+</center>
+
+<p> The epydoc graphical interface can save and load "project files",
+which record the set of modules and the options that you have
+selected.  Select "<code>File→Save</code>" to save the current
+modules and options to a project file; and
+"<code>File→Open</code>" to open a previously saved project file.
+(These project files do not currently use the same format as the
+configuration files used by the command line interface.) </p>
+
+<p> For more information, see the <a
+href="epydocgui-man.html"><code>epydocgui(1)</code> man page</a>. </p>
+
+<a name="checker"><h2> Documentation Completeness Checks </h2></a>
+
+<p> The <code>epydoc</code> script can be used to check the
+completeness of the reference documentation.  In particular, it will
+check that every module, class, method, and function has a
+description; that every parameter has a description and a type; and
+that every variable has a type.  If the "<code>-p</code>" option is
+used, then these checks are run on both public and private objects;
+otherwise, the checks are only run on public objects. </p>
+
+<div class="box">
+<pre>
+<b>epydoc</b> <b>--check</b> [<b>-p</b>] <code class="user">MODULES...</code>
+</pre>
+
+<dl>
+  <dt><code><code class="user">MODULES...</code></code></dt>
+  <dd>
+    A list of the modules that should be checked.  Modules may be
+    specified using either filenames (such as
+    "<code>epydoc/epytext.py</code>") or module names (such as
+    "<code>os.path</code>").  The filename for a package is its
+    "<code>__init__.py</code>" file.
+  </dd>
+  
+  <dt><code><b>-p</b></code></dt>
+  <dd>Run documentation completeness checks on private objects.
+  </dd>
+</dl>
+</div>
+
+<p> For each object that fails a check, epydoc will print a warning.
+For example, some of the warnings generated when checking the
+completeness of the documentation for epydoc's private objects are:
+</p>
+
+<div class="screen"><pre>
+epydoc.html.HTML_Doc._dom_link_to_html........No docs
+epydoc.html.HTML_Doc._module..................No type
+epydoc.html.HTML_Doc._link_to_html.link.......No descr
+epydoc.html.HTML_Doc._author.return...........No type
+epydoc.html.HTML_Doc._author.authors..........No descr, No type
+epydoc.html.HTML_Doc._author.container........No descr, No type
+epydoc.html.HTML_Doc._base_tree.uid...........No descr, No type
+epydoc.html.HTML_Doc._base_tree.width.........No descr, No type
+epydoc.html.HTML_Doc._base_tree.postfix.......No descr, No type
+</pre></div>
+
+<p> If you'd like more fine-grained control over what gets checked, or
+you would like to check other fields (such as the author or version),
+then you should use the <a
+href="api/public/epydoc.checker.DocChecker.html"><code>DocChecker</code></a>
+class directly. </p>
+
+<a name="files"><h2> HTML Files </h2></a>
+
+<p> Every Python module and class
+    is documented in its own file.  Index files, tree files, a
+    help file, and a frames-based table of contents are also created.
+    The following list describes each of the files generated by
+    epydoc: </p>
+
+<ul>
+  <li><b><code>index.html</code></b>
+  The standard entry point for the documentation.  Normally,
+  <code>index.html</code> is a copy of the frames file
+  (<code>frames.html</code>).  But if the <code>--no-frames</code>
+  option is used, then <code>index.html</code> is a copy of the API
+  documentation home page, which is normally the documentation page
+  for the top-level package or module (or the trees page if there is
+  no top-level package or module).  </li>
+
+  <li><b><code><code class="user">module</code>-module.html</code></b>
+  The API documentation for a module.  module is the complete dotted
+  name of the module, such as sys or epydoc.epytext.  </li>
+
+  <li><b><code><code class="user">class</code>-class.html</code></b>
+  The API documentation for a class, exception, or type.  class is the
+  complete dotted name of the class, such as epydoc.epytext.Token or
+  array.ArrayType.  </li>
+
+  <li><b><code><code class="user">module</code>-pysrc.html</code></b>
+  A page with the module colourized source code, with links back to the
+  objects main documentation pages. The creation of the colourized source
+  pages can be controlled using the options <code>--show-sourcecode</code> and
+  <code>--no-sourcecode</code>.</li>
+
+  <li><b><code>module-tree.html</code></b>
+  The documented module hierarchy.  </li>
+
+  <li><b><code>class-tree.html</code></b>
+  The documented classes hierarchy.  </li>
+
+  <li><b><code>identifier-index.html</code></b>
+  The index of all the identifiers found in the documented items.  </li>
+
+  <li><b><code>term-index.html</code></b>
+  The index of all the term definition found in the docstrings.
+  Term definitions are created using the <a href="epytext.html#indexed">Indexed
+  Term</a> markup. </li>
+
+  <li><b><code>bug-index.html</code></b>
+  The index of all the known bug in the documented sources.
+  Bugs are marked using the <code>@bug</code> tag. </li>
+
+  <li><b><code>todo-index.html</code></b>
+  The index of all the <i>to-do</i> items in the documented sources.
+  They are marked using the <code>@todo</code> tag. </li>
+
+  <li><b><code>help.html</code></b>
+  The help page for the project.  This page explains how to use and
+  navigate the webpage produced by epydoc.  </li>
+
+  <li><b><code>epydoc-log.html</code></b>
+  A page with the log of the epydoc execution. It is available clicking on the
+  timestamp below each page, if the documentation was created using the
+  <code>--include-log</code> option. The page also contains the list of the
+  options enabled when the documentation was created. </li>
+
+  <li><b><code>api-objects.txt</code></b>
+  A text file containing each available item and the URL where it is
+  documented. Each item dotted name takes a file line and it is separated by
+  the URL by a <code>tab</code> charecter. Such file can be used to create
+  documents linkig to the API: see the <code>--external-api</code>
+  documentation for details.</li>
+
+  <li><b><code>redirect.html</code></b>
+  A page containing Javascript code that redirect the browser to the
+  documentation page indicated by the accessed fragment. For example opening
+  the page <code>redirect.html#epydoc.apidoc.DottedName</code> the browser
+  will be redirected to the page
+  <code>epydoc.apidoc.DottedName-class.html</code>.</li>
+
+  <li><b><code>frames.html</code></b>
+  The main frames file.  Two frames on the left side of the window
+  contain a table of contents, and the main frame on the right side of
+  the window contains API documentation pages.  </li>
+
+  <li><b><code>toc.html</code></b>
+  The top-level table of contents page.  This page is displayed in the
+  upper-left frame of <code>frames.html</code>, and provides links to
+  the <code>toc-everything.html</code> and
+  <code>toc-<code class="user">module</code>-module.html</code> pages.  </li>
+  
+  <li><b><code>toc-everything.html</code></b>
+  The table of contents for the entire project.  This page is
+  displayed in the lower-left frame of <code>frames.html</code>, and
+  provides links to every class, type, exception, function, and
+  variable defined by the project.  </li>
+
+  <li><b><code>toc-<code class="user">module</code>-module.html</code></b>
+  The table of contents for a module.  This page is displayed in the
+  lower-left frame of <code>frames.html</code>, and provides links to
+  every class, type, exception, function, and variable defined by the
+  module.  module is the complete dotted name of the module, such as
+  sys or epydoc.epytext.  </li>
+
+  <li><b><code>epydoc.css</code></b>
+  The CSS stylesheet used to display all HTML pages.  </li>
+</ul>
+
+<a name="css"><h2> CSS Stylesheets </h2></a>
+
+<p> Epydoc creates a CSS stylesheet (<code>epydoc.css</code>) when it
+builds the API documentation for a project.  You can specify which
+stylesheet should be used using the <code>--css</code> command-line
+option.  If you do not specify a stylesheet, and one is already
+present, epydoc will use that stylesheet; otherwise, it will use the
+default stylesheet.  For a list of the CSS classes used by epydoc, see
+the <a href="stylesheet.html">default stylesheet</a>. </p>
+
+<a name="errors"><h2> Errors </h2></a>
+
+<p> For a description of the errors that can be generated by epydoc,
+see the <a href="epydoc-man.html#lbAH"><code>epydoc(1)</code> man
+page</a>. </p>
+
+</div>
+<table width="100%" class="navbox" cellpadding="1" cellspacing="0">
+  <tr>
+  <a class="nav" href="index.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="index.html">
+    Home</a></td></a>
+  <a class="nav" href="installing.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="installing.html">
+    Installing Epydoc</a></td></a>
+  <a class="nav" href="using.html">
+    <td align="center" width="20%" class="navselect" class="nav">
+    <a class="nav" href="using.html">
+    Using Epydoc</a></td></a>
+  <a class="nav" href="epytext.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="epytext.html">
+    Epytext</a></td></a>
+  <td align="center" width="20%" class="nav">
+    
+    <A href="http://sourceforge.net/projects/epydoc"> 
+    <IMG src="sflogo.png" 
+    width="88" height="26" border="0" alt="SourceForge"
+    align="top"/></A></td>
+    </tr>
+</table>
+</body>
+</html>
diff --git a/doc/whatsnew.html b/doc/whatsnew.html
new file mode 100644
index 0000000..11d38df
--- /dev/null
+++ b/doc/whatsnew.html
@@ -0,0 +1,301 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html> <head>
+<title>Epydoc: What's New</title>
+<link rel="stylesheet" href="epydoc.css" type="text/css"/>
+</head>
+<!-- $Id: faq.html 602 2003-09-07 23:49:56Z edloper $ -->
+
+<body>
+<div class="body">
+<h1> What's New in Epydoc </h1>
+
+<div class="box">
+<h2 class="box-title">Epydoc 3.0</h2>
+<center><i>Released January, 2008</i></center>
+
+<h3>Support for Parsing & Introspection</h3>
+
+<p> In previous versions, epydoc extracted information about each
+module by importing it, and using introspection to examine its
+contents.  Epydoc 3.0 still supports introspection, but is also
+capable of extracting information about python modules by parsing
+their source code.  Furthermore, the new version of epydoc can combine
+these two sources of information (introspection & parsing).  This is
+important because each source has its own advantages and disadvantages
+with respect to the other.  See the <a
+href="faq.html#introspect_vs_parse">FAQ</a> for more information about
+the relative benefits of introspection and parsing, and why it's good
+to merge information from both sources. </p>
+
+<h3>Docstrings for variables</h3>
+
+<p>Epydoc now supports <i>variable docstrings</i>.  If a variable
+assignment statement is immediately followed by a bare string literal,
+then that assignment is treated as a docstring for that variable.  In
+classes, variable assignments at the class definition level are
+considered class variables; and assignments to instance variables in
+the constructor (__init__) are considered instance variables:<p>
+
+<div class="screen2"><pre>
+<code class="prompt">>>></code> <code class="keyword">class</code> A:
+<code class="prompt">...</code>     x = 22
+<code class="prompt">...</code>     <code class="string">"""Docstring for class variable A.x"""</code>
+<code class="prompt">...</code>
+<code class="prompt">...</code>     <code class="keyword">def</code> <code class="function">__init__</code>(self, a):
+<code class="prompt">...</code>         self.y = a
+<code class="prompt">...</code>         <code class="string">"""Docstring for instance variable A.y</code>
+</pre></div>
+
+<p>Variables may also be documented using <i>comment docstrings</i>.
+If a variable assignment is immediately preceeded by a comment whose
+lines begin with the special marker "<code><b>#:</b></code>", or is
+followed on the same line by such a comment, then it is treated as a
+docstring for that variable: </p>
+
+<div class="screen2"><pre>
+<code class="prompt">>>></code> <code class="comment">#: docstring for x</code>
+<code class="prompt">...</code> x = 22
+<code class="prompt">>>></code> x = 22 <code class="comment">#: docstring for x</code>
+</pre></div> <!-- " -->
+
+<h3> Graphs & Diagrams </h3>
+
+<p>Epydoc can automatically generate a variety of graphs, including
+class tress, package trees, uml class graphs, and import graphs.
+These graphs may be included in the generated output in one of two
+ways: </p>
+
+  <ul>
+     <li> The <code>--graph</code> option causes epydoc to
+     automatically generate a given type of graph for all applicable
+     modules, classes, or functions.  For example, using
+     <code>--graph classtree</code> will replace the text-based
+     class tree with a graphical class tree on all module pages.  See
+     the <a href="using.html#cli">command line interface</a>
+     documentation for more information.</li>
+
+     <li> Graphs may be explicitly created by docstrings, using
+     appropriate markup.  In epytext, graphs are created using the
+     "<code>G</code>" colorization marker (i.e.,
+     "<code>G{<i>graphname</i>}</code>", or "<code>G{<i>graphname</i>
+     <i>options...</i>}</code>" for graphs with options).  In
+     reStructuredText, graphs are created using custom <a
+     href="http://docutils.sourceforge.net/docs/user/rst/quickref.html#directives">directives</a>.
+     For more information, see the <a
+     href="epytext.html#graphs">epytext manual</a> or the notes on <a
+     href="othermarkup.html#restructuredtext">using reStructuredText
+     with epydoc. </a>.</li>
+  </ul>
+
+  <p> Epydoc can also generate <i>function call graphs</i>, showing the callers
+  and the callees for each function. To generate call graphs, Epydoc uses
+  data produced by a <a href="http://docs.python.org/lib/profile.html">Python
+  profiler</a> such <code>Profile</code> or <code>hotshot</code>. </p>
+
+  <p> For some examples of automatically generated graphs, see the <a
+  href="api/">API Documentation</a> for epydoc (including the page
+  for the <a href="api/epydoc.docwriter.dotgraph-module.html"
+  ><code>epydoc.docwriter.dotgraph</code> module</a>). </p>
+
+  <p> Graph generation requires the <a
+  href="http://www.graphviz.org/">Graphviz package</a>
+  [<a href="http://www.graphviz.org/Download..php">download</a>]. </p>
+
+<h3> Syntax Highlighted Source Code </h3>
+
+<p> The HTML output now includes source code listings with syntax
+higlighting, including links from identifiers back into the
+documentation.  For examples of source code pages, see the <a
+href="api/">API Documentation</a> for epydoc (follow the <i>show
+source</i> link from any documented module, class, or function).
+</p>
+
+<h3> Improved Output </h3>
+
+<ul>
+  <li> Methods that are inherited from "external" base classes are
+  listed, but no longer described in detail.  E.g., if "object" is
+  used as a base class, then the methods inherited from "object" will
+  be listed at the bottom of the method summary table, but not
+  described in detail. Furthermore methods and variables not very detailed
+  (with at most a short docstring) are only shown in the summary, while
+  most detailed items also appear in a full detailed box. </li>
+
+  <li> The HTML output no longer contains separate pages for including
+  and excluding private variables.  Instead, it uses CSS to
+  dynamically hide or display private variables.  A cookie is used to
+  record the user's preference.  (By default, private variables are
+  hidden.) </li>
+
+  <li> Additional pages are created, listing identifiers, documented
+  definitions, bugs and to-do items. An optional log page can also be
+  generated, reporting all the errors and warning raised during documentation
+  generation. </li>
+
+  <li> Improved variable values representation, using the parsed
+  values if the standard representation is not informative (such
+  as <code><Foo instance at 0x...></code>).  Syntax highlighting
+  is used for introspected values, including colorization for regular
+  expressions. </li>
+
+  <li> Improved support for adding links into the generated
+  documentation.  A new API,
+  <a href="api/epydoc.docwriter.xlink-module.html"
+  ><code>epydoc.docwriter.xlink</code></a>, can be used to determine
+  the correct URL for any object name; and a new redirect page named 
+  named "<code>redirect.html"</code> uses javascript to automatically
+  redirect the user to the correct URL for any given object name.  See
+  the <a href="faq.html#redirect">FAQ</a> for more information.
+</ul>
+
+<h3>Improved Documentation Extraction</h3>
+
+<ul>
+  <li> Proper support for nested classes.</li>
+  <li> Full unicode support, including support for the <a href="http://www.python.org/peps/pep-0263.html">encoding directive</a>.</li>
+  <li> Variables conventionally used for modules metadata such as
+  <code>__version__</code> are recognized as modules fields.</li>
+  <li>The <code>__all__</code> attribute is used to decide whether objects
+  are public or private. If an object is listed in an <code>__all__</code>
+  list, it will appear defined in that module even if imported from elsewhere,
+  keeping the API safe from implementation changes.</li>
+  <li> Increased robustness in the face of a variety of "magic"
+  manipulations of namespaces.</li>
+  <li> Fine-grained control over exactly which modules should be parsed,
+  introspected, or both. </li>
+  <li> Support for Zope 3.x InterfaceClass and Zope 2.x ExtensionClass
+  objects. </li>
+</ul>
+
+</div>
+
+<div class="box">
+<h2 class="box-title">Epydoc 2.1</h2>
+<center><i>Released March 20, 2004</i></center>
+
+<h3>New Features</h3>
+<ul>
+  <li> Support for Zope ExtensionClasses 
+  <li> Updated graphical user interface 
+  <li> Added support for modules that define __path__. 
+  <li> New documentation fields: 
+  <ul> 
+    <li> @include: Imports the documentation from another object. 
+    <li> @undocumented: Don't document the given object(s) 
+  </ul> 
+  <li> Various bug fixes 
+</ul>
+</div>
+
+<div class="box">
+<h2 class="box-title">Epydoc 2.0</h2>
+<center><i>Released July 22, 2003</i></center>
+
+<h3>New Features</h3>
+
+<b>Improvements to Docstring processing</b>
+<ul> 
+  <li> Support for ReStructuredText docstrings.</li> 
+  <li> Support for Javadoc docstrings.</li> 
+  <li> Many new documentation fields for docstrings.</li> 
+  <li> More robust crossreference link resolving.</li>
+</ul>
+
+<b>Improvements to Output Generation</b> 
+<ul> 
+  <li> New output formats: LaTeX, DVI, PostScript, and PDF.</li> 
+  <li> Three new formats for displaying inherited methods and variables: listed, grouped, and included.</li> 
+</ul> 
+
+<b>Improvements to Inspection</b> <ul> 
+  <li> Support for new Python 2.2+ objects, including class methods, static methods, properties, and metaclasses.</li> 
+  <li> Automatic detection of imported variables.</li> 
+  <li> Documentation inheritance for inherited methods and variables.</li> 
+</ul> 
+
+<b>Improvements to Efficiency</b> <ul> 
+  <li> Epydoc 2.0 runs 50%-200% faster than epydoc 1.1. (e.g., it runs 160% faster when documenting the Python standard library).</li> 
+</ul>
+
+<h3>Changes</h3>
+
+<ul> 
+  <li> Support for ReStructuredText docstrings.</li> 
+  <li> Support for Javadoc docstrings.</li> 
+  <li> Many new documentation fields for docstrings.</li> 
+  <li> More robust crossreference link resolving.</li> 
+  <li> New output formats: LaTeX, DVI, PostScript, and PDF.</li> 
+  <li> Three new formats for displaying inherited methods and variables: listed, grouped, and included.</li> 
+  <li> Support for new Python 2.2+ objects, including class methods, static methods, properties, and metaclasses.</li> 
+  <li> Automatic detection of imported variables.</li> 
+  <li> Documentation inheritance for inherited methods and variables.</li> 
+  <li> Epydoc 2.0 runs 50%-200% faster than epydoc 1.1. (e.g., it runs 160% faster when documenting the Python standard library).</li> 
+  <li> The new "markup" package provides a simple interface makes it easy to add support for additional markup languages. </li> 
+  <li> __extra_epydoc_fields__ and @newfield can be used to define new fields. </li> 
+  <li> If the directory for a package is specified, then automatically document all of its contents. </li> 
+  <li> Increased contrast of "blue" and "green" stylesheet </li> 
+  <li> Added --test option, to control what tests are run for --check. </li> 
+  <li> Consolidated error reporting for failed crossreference links and overridden parameter mismatches. </li> 
+  <li> Added --ignore-param-mismatch option, which supresses warnings about parameter mismatches </li> 
+  <li> Fixed bug in path magic for epydoc.py and epydoc.pyw scripts </li> 
+  <li> Replaced __epydoc_sort__ with @sort </li> 
+  <li> Changes to epytext:
+  <ul> 
+    <li> Epytext now supports symbols (S{...}) </li> 
+    <li> Epydoc allows multi-word values for field arguments (eg for group names) </li> 
+    <li> Fixeded several minor bugs</li> 
+  </ul>
+  </li> 
+  <li> --show-imports now lists imported vars & modules </li>
+  <li> Improvements to error reporting </li> 
+  <li> Improved sorting </li> 
+  <li> Many bug fixes </li> 
+  <li> General code clean-up </li> 
+  <li> Added preliminary and partial implementation for man-style output (like pydoc) </li> 
+  <li> Changed the definition of the --navlink parameter, to allow for more flexible encoding of the homepage link. </li> 
+  <li> Improvements to HTML output. 
+  <ul> 
+    <li> Display variable values in variable summary table </li> 
+    <li> Added tooltips for variable values, that show a more complete value (up to 600 characters) </li> 
+    <li> Minor tweaks & improvements </li>
+    <li> In the table of contents, only list objects from modules that were explicitly documented (don't list base classes from imported modules, etc)</li>
+  </ul>
+</li>
+</ul>
+</div>
+
+<div class="box"><h2 class="box-title">Older Releases</h2>
+<p>See the <a
+href="http://sourceforge.net/project/showfiles.php?group_id=32455&package_id=24617">Release
+Notes</a> on SourceForge.</p>
+</div>
+
+</div>
+<table width="100%" class="navbox" cellpadding="1" cellspacing="0">
+  <tr>
+  <a class="nav" href="index.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="index.html">
+    Home</a></td></a>
+  <a class="nav" href="installing.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="installing.html">
+    Installing Epydoc</a></td></a>
+  <a class="nav" href="using.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="using.html">
+    Using Epydoc</a></td></a>
+  <a class="nav" href="epytext.html">
+    <td align="center" width="20%" class="nav">
+    <a class="nav" href="epytext.html">
+    Epytext</a></td></a>
+  <td align="center" width="20%" class="nav">
+    
+    <A href="http://sourceforge.net/projects/epydoc"> 
+    <IMG src="sflogo.png" 
+    width="88" height="26" border="0" alt="SourceForge"
+    align="top"/></A></td>
+    </tr>
+</table>
+</body>
+</html>
diff --git a/epydoc/__init__.py b/epydoc/__init__.py
new file mode 100644
index 0000000..212054e
--- /dev/null
+++ b/epydoc/__init__.py
@@ -0,0 +1,227 @@
+# epydoc
+#
+# Copyright (C) 2005 Edward Loper
+# Author: Edward Loper <edloper at loper.org>
+# URL: <http://epydoc.sf.net>
+#
+# $Id: __init__.py 1691 2008-01-30 17:11:09Z edloper $
+
+"""
+Automatic Python reference documentation generator.  Epydoc processes
+Python modules and docstrings to generate formatted API documentation,
+in the form of HTML pages.  Epydoc can be used via a command-line
+interface (`epydoc.cli`) and a graphical interface (`epydoc.gui`).
+Both interfaces let the user specify a set of modules or other objects
+to document, and produce API documentation using the following steps:
+
+1. Extract basic information about the specified objects, and objects
+   that are related to them (such as the values defined by a module).
+   This can be done via introspection, parsing, or both:
+
+   * *Introspection* imports the objects, and examines them directly
+     using Python's introspection mechanisms.
+  
+   * *Parsing* reads the Python source files that define the objects,
+     and extracts information from those files.
+
+2. Combine and process that information.
+
+   * **Merging**: Merge the information obtained from introspection &
+     parsing each object into a single structure.
+     
+   * **Linking**: Replace any \"pointers\" that were created for
+     imported variables with the documentation that they point to.
+     
+   * **Naming**: Assign unique *canonical names* to each of the
+     specified objects, and any related objects.
+     
+   * **Docstrings**: Parse the docstrings of each of the specified
+     objects.
+     
+   * **Inheritance**: Add variables to classes for any values that
+     they inherit from their base classes.
+
+3. Generate output.  Output can be generated in a variety of formats:
+
+   * An HTML webpage.
+  
+   * A LaTeX document (which can be rendered as a PDF file)
+
+   * A plaintext description.
+
+.. digraph:: Overview of epydoc's architecture
+   :caption: The boxes represent steps in epydoc's processing chain.
+             Arrows are annotated with the data classes used to
+             communicate between steps.  The lines along the right
+             side mark what portions of the processing chain are
+             initiated by build_doc_index() and cli().  Click on
+             any item to see its documentation.
+             
+   /*
+                  Python module or value                 *       *
+                      /           \                      |       |
+                     V             V                     |       |
+            introspect_docs()  parse_docs()              |       |
+                        \        /                       |       |
+                         V      V                        |       |
+                        merge_docs()                     |       |
+                             |              build_doc_index()  cli()
+                             V                           |       |
+                       link_imports()                    |       |
+                             |                           |       |
+                             V                           |       |
+                    assign_canonical_names()             |       |
+                             |                           |       |
+                             V                           |       |
+                      parse_docstrings()                 |       |
+                             |                           |       |
+                             V                           |       |
+                       inherit_docs()                    *       |
+                      /      |        \                          |
+                     V       V         V                         |
+                HTMLWriter LaTeXWriter PlaintextWriter           *
+   */
+
+   ranksep = 0.1;
+   node [shape="box", height="0", width="0"]
+   
+   { /* Task nodes */
+     node [fontcolor=\"#000060\"]
+     introspect  [label="Introspect value:\\nintrospect_docs()",
+                  href="<docintrospecter.introspect_docs>"]
+     parse       [label="Parse source code:\\nparse_docs()",
+                  href="<docparser.parse_docs>"]
+     merge       [label="Merge introspected & parsed docs:\\nmerge_docs()",
+                  href="<docbuilder.merge_docs>", width="2.5"]
+     link        [label="Link imports:\\nlink_imports()",
+                  href="<docbuilder.link_imports>", width="2.5"]
+     name        [label="Assign names:\\nassign_canonical_names()",
+                  href="<docbuilder.assign_canonical_names>", width="2.5"]
+     docstrings  [label="Parse docstrings:\\nparse_docstring()",
+                  href="<docstringparser.parse_docstring>", width="2.5"]
+     inheritance [label="Inherit docs from bases:\\ninherit_docs()",
+                  href="<docbuilder.inherit_docs>", width="2.5"]
+     write_html  [label="Write HTML output:\\nHTMLWriter",
+                 href="<docwriter.html>"]
+     write_latex  [label="Write LaTeX output:\\nLaTeXWriter",
+                 href="<docwriter.latex>"]
+     write_text  [label="Write text output:\\nPlaintextWriter",
+                 href="<docwriter.plaintext>"]
+   }
+
+   { /* Input & Output nodes */
+     node [fontcolor=\"#602000\", shape="plaintext"]
+     input [label="Python module or value"]
+     output [label="DocIndex", href="<apidoc.DocIndex>"]
+   }
+
+   { /* Graph edges */
+     edge [fontcolor=\"#602000\"]
+     input -> introspect
+     introspect -> merge [label="APIDoc", href="<apidoc.APIDoc>"]
+     input -> parse
+     parse -> merge [label="APIDoc", href="<apidoc.APIDoc>"]
+     merge -> link [label=" DocIndex", href="<apidoc.DocIndex>"]
+     link -> name [label=" DocIndex", href="<apidoc.DocIndex>"]
+     name -> docstrings [label=" DocIndex", href="<apidoc.DocIndex>"]
+     docstrings -> inheritance [label=" DocIndex", href="<apidoc.DocIndex>"]
+     inheritance -> output
+     output -> write_html
+     output -> write_latex
+     output -> write_text
+   }
+
+   { /* Task collections */
+     node [shape="circle",label="",width=.1,height=.1]
+     edge [fontcolor="black", dir="none", fontcolor=\"#000060\"]
+     l3 -> l4 [label=" epydoc.\\l docbuilder.\\l build_doc_index()",
+               href="<docbuilder.build_doc_index>"]
+     l1 -> l2 [label=" epydoc.\\l cli()", href="<cli>"]
+   }
+   { rank=same; l1 l3 input }
+   { rank=same; l2 write_html }
+   { rank=same; l4 output }
+
+Package Organization
+====================
+The epydoc package contains the following subpackages and modules:
+
+.. packagetree::
+   :style: UML
+
+The user interfaces are provided by the `gui` and `cli` modules.
+The `apidoc` module defines the basic data types used to record
+information about Python objects.  The programmatic interface to
+epydoc is provided by `docbuilder`.  Docstring markup parsing is
+handled by the `markup` package, and output generation is handled by
+the `docwriter` package.  See the submodule list for more
+information about the submodules and subpackages.
+
+:group User Interface: gui, cli
+:group Basic Data Types: apidoc
+:group Documentation Generation: docbuilder, docintrospecter, docparser
+:group Docstring Processing: docstringparser, markup
+:group Output Generation: docwriter
+:group Completeness Checking: checker
+:group Miscellaneous: log, util, test, compat
+
+:author: `Edward Loper <edloper at gradient.cis.upenn.edu>`__
+:requires: Python 2.3+
+:version: 3.0.1
+:see: `The epydoc webpage <http://epydoc.sourceforge.net>`__
+:see: `The epytext markup language
+    manual <http://epydoc.sourceforge.net/epytext.html>`__
+
+:todo: Create a better default top_page than trees.html.
+:todo: Fix trees.html to work when documenting non-top-level
+       modules/packages
+:todo: Implement @include
+:todo: Optimize epytext
+:todo: More doctests
+:todo: When introspecting, limit how much introspection you do (eg,
+       don't construct docs for imported modules' vars if it's
+       not necessary)
+
+:bug: UserDict.* is interpreted as imported .. why??
+
+:license: IBM Open Source License
+:copyright: |copy| 2006 Edward Loper
+
+:newfield contributor: Contributor, Contributors (Alphabetical Order)
+:contributor: `Glyph Lefkowitz  <mailto:glyph at twistedmatrix.com>`__
+:contributor: `Edward Loper  <mailto:edloper at gradient.cis.upenn.edu>`__
+:contributor: `Bruce Mitchener  <mailto:bruce at cubik.org>`__
+:contributor: `Jeff O'Halloran  <mailto:jeff at ohalloran.ca>`__
+:contributor: `Simon Pamies  <mailto:spamies at bipbap.de>`__
+:contributor: `Christian Reis  <mailto:kiko at async.com.br>`__
+:contributor: `Daniele Varrazzo  <mailto:daniele.varrazzo at gmail.com>`__
+
+.. |copy| unicode:: 0xA9 .. copyright sign
+"""
+__docformat__ = 'restructuredtext en'
+
+__version__ = '3.0.1'
+"""The version of epydoc"""
+
+__author__ = 'Edward Loper <edloper at gradient.cis.upenn.edu>'
+"""The primary author of eypdoc"""
+
+__url__ = 'http://epydoc.sourceforge.net'
+"""The URL for epydoc's homepage"""
+
+__license__ = 'IBM Open Source License'
+"""The license governing the use and distribution of epydoc"""
+
+# [xx] this should probably be a private variable:
+DEBUG = False
+"""True if debugging is turned on."""
+
+# Changes needed for docs:
+#   - document the method for deciding what's public/private
+#   - epytext: fields are defined slightly differently (@group)
+#   - new fields
+#   - document __extra_epydoc_fields__ and @newfield
+#   - Add a faq?
+#   - @type a,b,c: ...
+#   - new command line option: --command-line-order
+
diff --git a/epydoc/apidoc.py b/epydoc/apidoc.py
new file mode 100644
index 0000000..7eac120
--- /dev/null
+++ b/epydoc/apidoc.py
@@ -0,0 +1,2203 @@
+# epydoc -- API Documentation Classes
+#
+# Copyright (C) 2005 Edward Loper
+# Author: Edward Loper <edloper at loper.org>
+# URL: <http://epydoc.sf.net>
+#
+# $Id: apidoc.py 1675 2008-01-29 17:12:56Z edloper $
+
+"""
+Classes for encoding API documentation about Python programs.
+These classes are used as a common representation for combining
+information derived from introspection and from parsing.
+
+The API documentation for a Python program is encoded using a graph of
+L{APIDoc} objects, each of which encodes information about a single
+Python variable or value.  C{APIDoc} has two direct subclasses:
+L{VariableDoc}, for documenting variables; and L{ValueDoc}, for
+documenting values.  The C{ValueDoc} class is subclassed further, to
+define the different pieces of information that should be recorded
+about each value type:
+
+G{classtree: APIDoc}
+
+The distinction between variables and values is intentionally made
+explicit.  This allows us to distinguish information about a variable
+itself (such as whether it should be considered 'public' in its
+containing namespace) from information about the value it contains
+(such as what type the value has).  This distinction is also important
+because several variables can contain the same value: each variable
+should be described by a separate C{VariableDoc}; but we only need one
+C{ValueDoc}, since they share a single value.
+
+ at todo: Add a cache to canonical name lookup?
+"""
+__docformat__ = 'epytext en'
+
+######################################################################
+## Imports
+######################################################################
+
+import types, re, os.path, pickle
+from epydoc import log
+import epydoc
+import __builtin__
+from epydoc.compat import * # Backwards compatibility
+from epydoc.util import decode_with_backslashreplace, py_src_filename
+import epydoc.markup.pyval_repr
+
+######################################################################
+# Dotted Names
+######################################################################
+
+class DottedName:
+    """
+    A sequence of identifiers, separated by periods, used to name a
+    Python variable, value, or argument.  The identifiers that make up
+    a dotted name can be accessed using the indexing operator:
+
+        >>> name = DottedName('epydoc', 'api_doc', 'DottedName')
+        >>> print name
+        epydoc.apidoc.DottedName
+        >>> name[1]
+        'api_doc'
+    """
+    UNREACHABLE = "??"
+    _IDENTIFIER_RE = re.compile("""(?x)
+        (%s |             # UNREACHABLE marker, or..
+         (script-)?       #   Prefix: script (not a module)
+         \w+              #   Identifier (yes, identifiers starting with a
+                          #   digit are allowed. See SF bug #1649347)
+         '?)              #   Suffix: submodule that is shadowed by a var
+        (-\d+)?           # Suffix: unreachable vals with the same name
+        $"""
+        % re.escape(UNREACHABLE))
+
+    class InvalidDottedName(ValueError):
+        """
+        An exception raised by the DottedName constructor when one of
+        its arguments is not a valid dotted name.
+        """
+
+    _ok_identifiers = set()
+    """A cache of identifier strings that have been checked against
+    _IDENTIFIER_RE and found to be acceptable."""
+    
+    def __init__(self, *pieces, **options):
+        """
+        Construct a new dotted name from the given sequence of pieces,
+        each of which can be either a C{string} or a C{DottedName}.
+        Each piece is divided into a sequence of identifiers, and
+        these sequences are combined together (in order) to form the
+        identifier sequence for the new C{DottedName}.  If a piece
+        contains a string, then it is divided into substrings by
+        splitting on periods, and each substring is checked to see if
+        it is a valid identifier.
+
+        As an optimization, C{pieces} may also contain a single tuple
+        of values.  In that case, that tuple will be used as the
+        C{DottedName}'s identifiers; it will I{not} be checked to
+        see if it's valid.
+
+        @kwparam strict: if true, then raise an L{InvalidDottedName}
+        if the given name is invalid.
+        """
+        if len(pieces) == 1 and isinstance(pieces[0], tuple):
+            self._identifiers = pieces[0] # Optimization
+            return
+        if len(pieces) == 0:
+            raise DottedName.InvalidDottedName('Empty DottedName')
+        self._identifiers = []
+        for piece in pieces:
+            if isinstance(piece, DottedName):
+                self._identifiers += piece._identifiers
+            elif isinstance(piece, basestring):
+                for subpiece in piece.split('.'):
+                    if piece not in self._ok_identifiers:
+                        if not self._IDENTIFIER_RE.match(subpiece):
+                            if options.get('strict'):
+                                raise DottedName.InvalidDottedName(
+                                    'Bad identifier %r' % (piece,))
+                            else:
+                                log.warning("Identifier %r looks suspicious; "
+                                            "using it anyway." % piece)
+                        self._ok_identifiers.add(piece)
+                    self._identifiers.append(subpiece)
+            else:
+                raise TypeError('Bad identifier %r: expected '
+                                'DottedName or str' % (piece,))
+        self._identifiers = tuple(self._identifiers)
+
+    def __repr__(self):
+        idents = [`ident` for ident in self._identifiers]
+        return 'DottedName(' + ', '.join(idents) + ')'
+
+    def __str__(self):
+        """
+        Return the dotted name as a string formed by joining its
+        identifiers with periods:
+
+            >>> print DottedName('epydoc', 'api_doc', DottedName')
+            epydoc.apidoc.DottedName
+        """
+        return '.'.join(self._identifiers)
+
+    def __add__(self, other):
+        """
+        Return a new C{DottedName} whose identifier sequence is formed
+        by adding C{other}'s identifier sequence to C{self}'s.
+        """
+        if isinstance(other, (basestring, DottedName)):
+            return DottedName(self, other)
+        else:
+            return DottedName(self, *other)
+
+    def __radd__(self, other):
+        """
+        Return a new C{DottedName} whose identifier sequence is formed
+        by adding C{self}'s identifier sequence to C{other}'s.
+        """
+        if isinstance(other, (basestring, DottedName)):
+            return DottedName(other, self)
+        else:
+            return DottedName(*(list(other)+[self]))
+
+    def __getitem__(self, i):
+        """
+        Return the C{i}th identifier in this C{DottedName}.  If C{i} is
+        a non-empty slice, then return a C{DottedName} built from the
+        identifiers selected by the slice.  If C{i} is an empty slice,
+        return an empty list (since empty C{DottedName}s are not valid).
+        """
+        if isinstance(i, types.SliceType):
+            pieces = self._identifiers[i.start:i.stop]
+            if pieces: return DottedName(pieces)
+            else: return []
+        else:
+            return self._identifiers[i]
+
+    def __hash__(self):
+        return hash(self._identifiers)
+
+    def __cmp__(self, other):
+        """
+        Compare this dotted name to C{other}.  Two dotted names are
+        considered equal if their identifier subsequences are equal.
+        Ordering between dotted names is lexicographic, in order of
+        identifier from left to right.
+        """
+        if not isinstance(other, DottedName):
+            return -1
+        return cmp(self._identifiers, other._identifiers)
+
+    def __len__(self):
+        """
+        Return the number of identifiers in this dotted name.
+        """
+        return len(self._identifiers)
+
+    def container(self):
+        """
+        Return the DottedName formed by removing the last identifier
+        from this dotted name's identifier sequence.  If this dotted
+        name only has one name in its identifier sequence, return
+        C{None} instead.
+        """
+        if len(self._identifiers) == 1:
+            return None
+        else:
+            return DottedName(*self._identifiers[:-1])
+
+    def dominates(self, name, strict=False):
+        """
+        Return true if this dotted name is equal to a prefix of
+        C{name}.  If C{strict} is true, then also require that
+        C{self!=name}.
+
+            >>> DottedName('a.b').dominates(DottedName('a.b.c.d'))
+            True
+        """
+        len_self = len(self._identifiers)
+        len_name = len(name._identifiers)
+
+        if (len_self > len_name) or (strict and len_self == len_name):
+            return False
+        # The following is redundant (the first clause is implied by
+        # the second), but is done as an optimization.
+        return ((self._identifiers[0] == name._identifiers[0]) and
+                self._identifiers == name._identifiers[:len_self])
+
+    def contextualize(self, context):
+        """
+        If C{self} and C{context} share a common ancestor, then return
+        a name for C{self}, relative to that ancestor.  If they do not
+        share a common ancestor (or if C{context} is C{UNKNOWN}), then
+        simply return C{self}.
+
+        This is used to generate shorter versions of dotted names in
+        cases where users can infer the intended target from the
+        context.
+        
+        @type context: L{DottedName}
+        @rtype: L{DottedName}
+        """
+        if context is UNKNOWN or not context or len(self) <= 1:
+            return self
+        if self[0] == context[0]:
+            return self[1:].contextualize(context[1:])
+        else:
+            return self
+
+        # Find the first index where self & context differ.
+        for i in range(min(len(context), len(self))):
+            if self._identifiers[i] != context._identifiers[i]:
+                first_difference = i
+                break
+        else:
+            first_difference = i+1
+            
+        # Strip off anything before that index.
+        if first_difference == 0:
+            return self
+        elif first_difference == len(self):
+            return self[-1:]
+        else:
+            return self[first_difference:]
+
+######################################################################
+# UNKNOWN Value
+######################################################################
+
+class _Sentinel:
+    """
+    A unique value that won't compare equal to any other value.  This
+    class is used to create L{UNKNOWN}.
+    """
+    def __init__(self, name):
+        self.name = name
+    def __repr__(self):
+        return '<%s>' % self.name
+    def __nonzero__(self):
+        raise ValueError('Sentinel value <%s> can not be used as a boolean' %
+                         self.name)
+
+UNKNOWN = _Sentinel('UNKNOWN')
+"""A special value used to indicate that a given piece of
+information about an object is unknown.  This is used as the
+default value for all instance variables."""
+
+######################################################################
+# API Documentation Objects: Abstract Base Classes
+######################################################################
+
+class APIDoc(object):
+    """
+    API documentation information for a single element of a Python
+    program.  C{APIDoc} itself is an abstract base class; subclasses
+    are used to specify what information should be recorded about each
+    type of program element.  In particular, C{APIDoc} has two direct
+    subclasses, C{VariableDoc} for documenting variables and
+    C{ValueDoc} for documenting values; and the C{ValueDoc} class is
+    subclassed further for different value types.
+
+    Each C{APIDoc} subclass specifies the set of attributes that
+    should be used to record information about the corresponding
+    program element type.  The default value for each attribute is
+    stored in the class; these default values can then be overridden
+    with instance variables.  Most attributes use the special value
+    L{UNKNOWN} as their default value, to indicate that the correct
+    value for that attribute has not yet been determined.  This makes
+    it easier to merge two C{APIDoc} objects that are documenting the
+    same element (in particular, to merge information about an element
+    that was derived from parsing with information that was derived
+    from introspection).
+
+    For all attributes with boolean values, use only the constants
+    C{True} and C{False} to designate true and false.  In particular,
+    do I{not} use other values that evaluate as true or false, such as
+    C{2} or C{()}.  This restriction makes it easier to handle
+    C{UNKNOWN} values.  For example, to test if a boolean attribute is
+    C{True} or C{UNKNOWN}, use 'C{attrib in (True, UNKNOWN)}' or
+    'C{attrib is not False}'.
+
+    Two C{APIDoc} objects describing the same object can be X{merged},
+    using the method L{merge_and_overwrite(other)}.  After two
+    C{APIDoc}s are merged, any changes to one will be reflected in the
+    other.  This is accomplished by setting the two C{APIDoc} objects
+    to use a shared instance dictionary.  See the documentation for
+    L{merge_and_overwrite} for more information, and some important
+    caveats about hashing.
+    """
+    #{ Docstrings
+    docstring = UNKNOWN
+    """@ivar: The documented item's docstring.
+       @type: C{string} or C{None}"""
+    
+    docstring_lineno = UNKNOWN
+    """@ivar: The line number on which the documented item's docstring
+       begins.
+       @type: C{int}"""
+    #} end of "docstrings" group
+
+    #{ Information Extracted from Docstrings
+    descr = UNKNOWN
+    """@ivar: A description of the documented item, extracted from its
+       docstring.
+       @type: L{ParsedDocstring<epydoc.markup.ParsedDocstring>}"""
+    
+    summary = UNKNOWN
+    """@ivar: A summary description of the documented item, extracted from
+       its docstring.
+       @type: L{ParsedDocstring<epydoc.markup.ParsedDocstring>}"""
+    
+    other_docs = UNKNOWN
+    """@ivar: A flag indicating if the entire L{docstring} body (except tags
+       if any) is entirely included in the L{summary}.
+       @type: C{bool}"""
+    
+    metadata = UNKNOWN
+    """@ivar: Metadata about the documented item, extracted from fields in
+       its docstring.  I{Currently} this is encoded as a list of tuples
+       C{(field, arg, descr)}.  But that may change.
+       @type: C{(str, str, L{ParsedDocstring<markup.ParsedDocstring>})}"""
+    
+    extra_docstring_fields = UNKNOWN
+    """@ivar: A list of new docstring fields tags that are defined by the
+       documented item's docstring.  These new field tags can be used by
+       this item or by any item it contains.
+       @type: L{DocstringField <epydoc.docstringparser.DocstringField>}"""
+    #} end of "information extracted from docstrings" group
+
+    #{ Source Information
+    docs_extracted_by = UNKNOWN # 'parser' or 'introspecter' or 'both'
+    """@ivar: Information about where the information contained by this
+       C{APIDoc} came from.  Can be one of C{'parser'},
+       C{'introspector'}, or C{'both'}.
+       @type: C{str}"""
+    #} end of "source information" group
+
+    def __init__(self, **kwargs):
+        """
+        Construct a new C{APIDoc} object.  Keyword arguments may be
+        used to initialize the new C{APIDoc}'s attributes.
+        
+        @raise TypeError: If a keyword argument is specified that does
+            not correspond to a valid attribute for this (sub)class of
+            C{APIDoc}.
+        """
+        if epydoc.DEBUG:
+            for key in kwargs:
+                if key[0] != '_' and not hasattr(self.__class__, key):
+                    raise TypeError('%s got unexpected arg %r' %
+                                    (self.__class__.__name__, key))
+        self.__dict__.update(kwargs)
+
+    def _debug_setattr(self, attr, val):
+        """
+        Modify an C{APIDoc}'s attribute.  This is used when
+        L{epydoc.DEBUG} is true, to make sure we don't accidentally
+        set any inappropriate attributes on C{APIDoc} objects.
+
+        @raise AttributeError: If C{attr} is not a valid attribute for
+            this (sub)class of C{APIDoc}.  (C{attr} is considered a
+            valid attribute iff C{self.__class__} defines an attribute
+            with that name.)
+        """
+        # Don't intercept special assignments like __class__, or
+        # assignments to private variables.
+        if attr.startswith('_'):
+            return object.__setattr__(self, attr, val)
+        if not hasattr(self, attr):
+            raise AttributeError('%s does not define attribute %r' %
+                            (self.__class__.__name__, attr))
+        self.__dict__[attr] = val
+
+    if epydoc.DEBUG:
+        __setattr__ = _debug_setattr
+
+    def __repr__(self):
+       return '<%s>' % self.__class__.__name__
+    
+    def pp(self, doublespace=0, depth=5, exclude=(), include=()):
+        """
+        Return a pretty-printed string representation for the
+        information contained in this C{APIDoc}.
+        """
+        return pp_apidoc(self, doublespace, depth, exclude, include)
+    __str__ = pp
+
+    def specialize_to(self, cls):
+        """
+        Change C{self}'s class to C{cls}.  C{cls} must be a subclass
+        of C{self}'s current class.  For example, if a generic
+        C{ValueDoc} was created for a value, and it is determined that
+        the value is a routine, you can update its class with:
+        
+            >>> valdoc.specialize_to(RoutineDoc)
+        """
+        if not issubclass(cls, self.__class__):
+            raise ValueError('Can not specialize to %r' % cls)
+        # Update the class.
+        self.__class__ = cls
+        # Update the class of any other apidoc's in the mergeset.
+        if self.__mergeset is not None:
+            for apidoc in self.__mergeset:
+                apidoc.__class__ = cls
+        # Re-initialize self, in case the subclass constructor does
+        # any special processing on its arguments.
+        self.__init__(**self.__dict__)
+
+    __has_been_hashed = False
+    """True iff L{self.__hash__()} has ever been called."""
+    
+    def __hash__(self):
+        self.__has_been_hashed = True
+        return id(self.__dict__)
+
+    def __cmp__(self, other):
+        if not isinstance(other, APIDoc): return -1
+        if self.__dict__ is other.__dict__: return 0
+        name_cmp = cmp(self.canonical_name, other.canonical_name)
+        if name_cmp == 0: return -1
+        else: return name_cmp
+
+    def is_detailed(self):
+        """
+        Does this object deserve a box with extra details?
+
+        @return: True if the object needs extra details, else False.
+        @rtype: C{bool}
+        """
+        if self.other_docs is True:
+            return True
+
+        if self.metadata is not UNKNOWN:
+            return bool(self.metadata)
+
+    __mergeset = None
+    """The set of all C{APIDoc} objects that have been merged with
+    this C{APIDoc} (using L{merge_and_overwrite()}).  Each C{APIDoc}
+    in this set shares a common instance dictionary (C{__dict__})."""
+    
+    def merge_and_overwrite(self, other, ignore_hash_conflict=False):
+        """
+        Combine C{self} and C{other} into a X{merged object}, such
+        that any changes made to one will affect the other.  Any
+        attributes that C{other} had before merging will be discarded.
+        This is accomplished by copying C{self.__dict__} over
+        C{other.__dict__} and C{self.__class__} over C{other.__class__}.
+
+        Care must be taken with this method, since it modifies the
+        hash value of C{other}.  To help avoid the problems that this
+        can cause, C{merge_and_overwrite} will raise an exception if
+        C{other} has ever been hashed, unless C{ignore_hash_conflict}
+        is True.  Note that adding C{other} to a dictionary, set, or
+        similar data structure will implicitly cause it to be hashed.
+        If you do set C{ignore_hash_conflict} to True, then any
+        existing data structures that rely on C{other}'s hash staying
+        constant may become corrupted.
+
+        @return: C{self}
+        @raise ValueError: If C{other} has ever been hashed.
+        """
+        # If we're already merged, then there's nothing to do.
+        if (self.__dict__ is other.__dict__ and
+            self.__class__ is other.__class__): return self
+            
+        if other.__has_been_hashed and not ignore_hash_conflict:
+            raise ValueError("%r has already been hashed!  Merging it "
+                             "would cause its has value to change." % other)
+
+        # If other was itself already merged with anything,
+        # then we need to merge those too.
+        a,b = (self.__mergeset, other.__mergeset)
+        mergeset = (self.__mergeset or [self]) + (other.__mergeset or [other])
+        other.__dict__.clear()
+        for apidoc in mergeset:
+            #if apidoc is self: pass
+            apidoc.__class__ = self.__class__
+            apidoc.__dict__ = self.__dict__
+        self.__mergeset = mergeset
+        # Sanity chacks.
+        assert self in mergeset and other in mergeset
+        for apidoc in mergeset:
+            assert apidoc.__dict__ is self.__dict__
+        # Return self.
+        return self
+
+    def apidoc_links(self, **filters):
+        """
+        Return a list of all C{APIDoc}s that are directly linked from
+        this C{APIDoc} (i.e., are contained or pointed to by one or
+        more of this C{APIDoc}'s attributes.)
+
+        Keyword argument C{filters} can be used to selectively exclude
+        certain categories of attribute value.  For example, using
+        C{includes=False} will exclude variables that were imported
+        from other modules; and C{subclasses=False} will exclude
+        subclasses.  The filter categories currently supported by
+        epydoc are:
+          - C{imports}: Imported variables.
+          - C{packages}: Containing packages for modules.
+          - C{submodules}: Contained submodules for packages.
+          - C{bases}: Bases for classes.
+          - C{subclasses}: Subclasses for classes.
+          - C{variables}: All variables.
+          - C{private}: Private variables.
+          - C{overrides}: Points from class variables to the variables
+            they override.  This filter is False by default.
+        """
+        return []
+
+def reachable_valdocs(root, **filters):
+    """
+    Return a list of all C{ValueDoc}s that can be reached, directly or
+    indirectly from the given root list of C{ValueDoc}s.
+
+    @param filters: A set of filters that can be used to prevent
+        C{reachable_valdocs} from following specific link types when
+        looking for C{ValueDoc}s that can be reached from the root
+        set.  See C{APIDoc.apidoc_links} for a more complete
+        description.
+    """
+    apidoc_queue = list(root)
+    val_set = set()
+    var_set = set()
+    while apidoc_queue:
+        api_doc = apidoc_queue.pop()
+        if isinstance(api_doc, ValueDoc):
+            val_set.add(api_doc)
+        else:
+            var_set.add(api_doc)
+        apidoc_queue.extend([v for v in api_doc.apidoc_links(**filters)
+                             if v not in val_set and v not in var_set])
+    return val_set
+
+######################################################################
+# Variable Documentation Objects
+######################################################################
+
+class VariableDoc(APIDoc):
+    """
+    API documentation information about a single Python variable.
+
+    @note: The only time a C{VariableDoc} will have its own docstring
+    is if that variable was created using an assignment statement, and
+    that assignment statement had a docstring-comment or was followed
+    by a pseudo-docstring.
+    """
+    #{ Basic Variable Information
+    name = UNKNOWN
+    """@ivar: The name of this variable in its containing namespace.
+       @type: C{str}"""
+    
+    container = UNKNOWN
+    """@ivar: API documentation for the namespace that contains this
+       variable.
+       @type: L{ValueDoc}"""
+    
+    canonical_name = UNKNOWN
+    """@ivar: A dotted name that serves as a unique identifier for
+       this C{VariableDoc}.  It should be formed by concatenating
+       the C{VariableDoc}'s C{container} with its C{name}.
+       @type: L{DottedName}"""
+
+    value = UNKNOWN
+    """@ivar: The API documentation for this variable's value.
+       @type: L{ValueDoc}"""
+    #}
+
+    #{ Information Extracted from Docstrings
+    type_descr = UNKNOWN 
+    """@ivar: A description of the variable's expected type, extracted from
+       its docstring.
+       @type: L{ParsedDocstring<epydoc.markup.ParsedDocstring>}"""
+    #} end of "information extracted from docstrings" group
+    
+    #{ Information about Imported Variables
+    imported_from = UNKNOWN
+    """@ivar: The fully qualified dotted name of the variable that this
+       variable's value was imported from.  This attribute should only
+       be defined if C{is_instvar} is true.
+       @type: L{DottedName}"""
+
+    is_imported = UNKNOWN
+    """@ivar: Was this variable's value imported from another module?
+       (Exception: variables that are explicitly included in __all__ have
+       C{is_imported} set to C{False}, even if they are in fact
+       imported.)
+       @type: C{bool}"""
+    #} end of "information about imported variables" group
+
+    #{ Information about Variables in Classes
+    is_instvar = UNKNOWN
+    """@ivar: If true, then this variable is an instance variable; if false,
+       then this variable is a class variable.  This attribute should
+       only be defined if the containing namespace is a class    
+       @type: C{bool}"""
+    
+    overrides = UNKNOWN # [XXX] rename -- don't use a verb.
+    """@ivar: The API documentation for the variable that is overridden by
+       this variable.  This attribute should only be defined if the
+       containing namespace is a class.
+       @type: L{VariableDoc}"""
+    #} end of "information about variables in classes" group
+
+    #{ Flags
+    is_alias = UNKNOWN
+    """@ivar: Is this variable an alias for another variable with the same
+       value?  If so, then this variable will be dispreferred when
+       assigning canonical names.
+       @type: C{bool}"""
+    
+    is_public = UNKNOWN
+    """@ivar: Is this variable part of its container's public API?
+       @type: C{bool}"""
+    #} end of "flags" group
+
+    def __init__(self, **kwargs):
+        APIDoc.__init__(self, **kwargs)
+        if self.is_public is UNKNOWN and self.name is not UNKNOWN:
+            self.is_public = (not self.name.startswith('_') or
+                              self.name.endswith('_'))
+        
+    def __repr__(self):
+        if self.canonical_name is not UNKNOWN:
+            return '<%s %s>' % (self.__class__.__name__, self.canonical_name)
+        if self.name is not UNKNOWN:
+            return '<%s %s>' % (self.__class__.__name__, self.name)
+        else:                     
+            return '<%s>' % self.__class__.__name__
+
+    def _get_defining_module(self):
+        if self.container is UNKNOWN:
+            return UNKNOWN
+        return self.container.defining_module
+    defining_module = property(_get_defining_module, doc="""
+    A read-only property that can be used to get the variable's
+    defining module.  This is defined as the defining module
+    of the variable's container.""")
+
+    def apidoc_links(self, **filters):
+        # nb: overrides filter is *False* by default.
+        if (filters.get('overrides', False) and
+            (self.overrides not in (None, UNKNOWN))):
+            overrides = [self.overrides]
+        else:
+            overrides = []
+        if self.value in (None, UNKNOWN):
+            return []+overrides
+        else:
+            return [self.value]+overrides
+
+    def is_detailed(self):
+        pval = super(VariableDoc, self).is_detailed()
+        if pval or self.value in (None, UNKNOWN):
+            return pval
+
+        if (self.overrides not in (None, UNKNOWN) and
+            isinstance(self.value, RoutineDoc)):
+            return True
+
+        if isinstance(self.value, GenericValueDoc):
+            # [XX] This is a little hackish -- we assume that the
+            # summary lines will have SUMMARY_REPR_LINELEN chars,
+            # that len(name) of those will be taken up by the name,
+            # and that 3 of those will be taken up by " = " between
+            # the name & val.  Note that if any docwriter uses a
+            # different formula for maxlen for this, then it will
+            # not get the right value for is_detailed().
+            maxlen = self.value.SUMMARY_REPR_LINELEN-3-len(self.name)
+            return (not self.value.summary_pyval_repr(maxlen).is_complete)
+        else:
+            return self.value.is_detailed()
+
+######################################################################
+# Value Documentation Objects
+######################################################################
+
+class ValueDoc(APIDoc):
+    """
+    API documentation information about a single Python value.
+    """
+    canonical_name = UNKNOWN
+    """@ivar: A dotted name that serves as a unique identifier for
+       this C{ValueDoc}'s value.  If the value can be reached using a
+       single sequence of identifiers (given the appropriate imports),
+       then that sequence of identifiers is used as its canonical name.
+       If the value can be reached by multiple sequences of identifiers
+       (i.e., if it has multiple aliases), then one of those sequences of
+       identifiers is used.  If the value cannot be reached by any
+       sequence of identifiers (e.g., if it was used as a base class but
+       then its variable was deleted), then its canonical name will start
+       with C{'??'}.  If necessary, a dash followed by a number will be
+       appended to the end of a non-reachable identifier to make its
+       canonical name unique.
+
+       When possible, canonical names are chosen when new C{ValueDoc}s
+       are created.  However, this is sometimes not possible.  If a
+       canonical name can not be chosen when the C{ValueDoc} is created,
+       then one will be assigned by L{assign_canonical_names()
+       <docbuilder.assign_canonical_names>}.
+       
+       @type: L{DottedName}"""
+
+    #{ Value Representation
+    pyval = UNKNOWN
+    """@ivar: A pointer to the actual Python object described by this
+       C{ValueDoc}.  This is used to display the value (e.g., when
+       describing a variable.)  Use L{pyval_repr()} to generate a
+       plaintext string representation of this value.
+       @type: Python object"""
+
+    parse_repr = UNKNOWN
+    """@ivar: A text representation of this value, extracted from 
+       parsing its source code.  This representation may not accurately
+       reflect the actual value (e.g., if the value was modified after
+       the initial assignment).
+       @type: C{unicode}"""
+
+    REPR_MAXLINES = 5
+    """@cvar: The maximum number of lines of text that should be
+    generated by L{pyval_repr()}.  If the string representation does
+    not fit in this number of lines, an ellpsis marker (...) will
+    be placed at the end of the formatted representation."""
+
+    REPR_LINELEN = 75
+    """@cvar: The maximum number of characters for lines of text that
+    should be generated by L{pyval_repr()}.  Any lines that exceed
+    this number of characters will be line-wrappped; The S{crarr}
+    symbol will be used to indicate that the line was wrapped."""
+
+    SUMMARY_REPR_LINELEN = 75
+    """@cvar: The maximum number of characters for the single-line
+    text representation generated by L{summary_pyval_repr()}.  If
+    the value's representation does not fit in this number of
+    characters, an ellipsis marker (...) will be placed at the end
+    of the formatted representation."""
+
+    REPR_MIN_SCORE = 0
+    """@cvar: The minimum score that a value representation based on
+    L{pyval} should have in order to be used instead of L{parse_repr}
+    as the canonical representation for this C{ValueDoc}'s value.
+    @see: L{epydoc.markup.pyval_repr}"""
+    #} end of "value representation" group
+
+    #{ Context
+    defining_module = UNKNOWN
+    """@ivar: The documentation for the module that defines this
+       value.  This is used, e.g., to lookup the appropriate markup
+       language for docstrings.  For a C{ModuleDoc},
+       C{defining_module} should be C{self}.
+       @type: L{ModuleDoc}"""
+    #} end of "context group"
+
+    #{ Information about Imported Variables
+    proxy_for = None # [xx] in progress.
+    """@ivar: If C{proxy_for} is not None, then this value was
+       imported from another file.  C{proxy_for} is the dotted name of
+       the variable that this value was imported from.  If that
+       variable is documented, then its C{value} may contain more
+       complete API documentation about this value.  The C{proxy_for}
+       attribute is used by the source code parser to link imported
+       values to their source values (in particular, for base
+       classes).  When possible, these proxy C{ValueDoc}s are replaced
+       by the imported value's C{ValueDoc} by
+       L{link_imports()<docbuilder.link_imports>}.
+       @type: L{DottedName}"""
+    #} end of "information about imported variables" group
+
+    #: @ivar:
+    #: This is currently used to extract values from __all__, etc, in
+    #: the docparser module; maybe I should specialize
+    #: process_assignment and extract it there?  Although, for __all__,
+    #: it's not clear where I'd put the value, since I just use it to
+    #: set private/public/imported attribs on other vars (that might not
+    #: exist yet at the time.)
+    toktree = UNKNOWN
+
+    def __repr__(self):
+        if self.canonical_name is not UNKNOWN:
+            return '<%s %s>' % (self.__class__.__name__, self.canonical_name)
+        else:
+            return '<%s %s>' % (self.__class__.__name__,
+                                self.summary_pyval_repr().to_plaintext(None))
+
+    def __setstate__(self, state):
+        self.__dict__ = state
+
+    def __getstate__(self):
+        """
+        State serializer for the pickle module.  This is necessary
+        because sometimes the C{pyval} attribute contains an
+        un-pickleable value.
+        """
+        # Construct our pickled dictionary.  Maintain this dictionary
+        # as a private attribute, so we can reuse it later, since
+        # merged objects need to share a single dictionary.
+        if not hasattr(self, '_ValueDoc__pickle_state'):
+            # Make sure __pyval_repr & __summary_pyval_repr are cached:
+            self.pyval_repr(), self.summary_pyval_repr()
+            # Construct the dictionary; leave out 'pyval'.
+            self.__pickle_state = self.__dict__.copy()
+            self.__pickle_state['pyval'] = UNKNOWN
+
+        if not isinstance(self, GenericValueDoc):
+            assert self.__pickle_state != {}
+        # Return the pickle state.
+        return self.__pickle_state
+
+    #{ Value Representation
+    def pyval_repr(self):
+        """
+        Return a formatted representation of the Python object
+        described by this C{ValueDoc}.  This representation may
+        include data from introspection or parsing, and is authorative
+        as 'the best way to represent a Python value.'  Any lines that
+        go beyond L{REPR_LINELEN} characters will be wrapped; and if
+        the representation as a whole takes more than L{REPR_MAXLINES}
+        lines, then it will be truncated (with an ellipsis marker).
+        This function will never return L{UNKNOWN} or C{None}.
+    
+        @rtype: L{ColorizedPyvalRepr}
+        """
+        # Use self.__pyval_repr to cache the result.
+        if not hasattr(self, '_ValueDoc__pyval_repr'):
+            self.__pyval_repr = epydoc.markup.pyval_repr.colorize_pyval(
+                self.pyval, self.parse_repr, self.REPR_MIN_SCORE,
+                self.REPR_LINELEN, self.REPR_MAXLINES, linebreakok=True)
+        return self.__pyval_repr
+
+    def summary_pyval_repr(self, max_len=None):
+        """
+        Return a single-line formatted representation of the Python
+        object described by this C{ValueDoc}.  This representation may
+        include data from introspection or parsing, and is authorative
+        as 'the best way to summarize a Python value.'  If the
+        representation takes more then L{SUMMARY_REPR_LINELEN}
+        characters, then it will be truncated (with an ellipsis
+        marker).  This function will never return L{UNKNOWN} or
+        C{None}.
+    
+        @rtype: L{ColorizedPyvalRepr}
+        """
+        # If max_len is specified, then do *not* cache the result.
+        if max_len is not None:
+            return epydoc.markup.pyval_repr.colorize_pyval(
+                self.pyval, self.parse_repr, self.REPR_MIN_SCORE,
+                max_len, maxlines=1, linebreakok=False)
+            
+        # Use self.__summary_pyval_repr to cache the result.
+        if not hasattr(self, '_ValueDoc__summary_pyval_repr'):
+            self.__summary_pyval_repr = epydoc.markup.pyval_repr.colorize_pyval(
+                self.pyval, self.parse_repr, self.REPR_MIN_SCORE,
+                self.SUMMARY_REPR_LINELEN, maxlines=1, linebreakok=False)
+        return self.__summary_pyval_repr
+    #} end of "value representation" group
+
+    def apidoc_links(self, **filters):
+        return []
+
+class GenericValueDoc(ValueDoc):
+    """
+    API documentation about a 'generic' value, i.e., one that does not
+    have its own docstring or any information other than its value and
+    parse representation.  C{GenericValueDoc}s do not get assigned
+    cannonical names.
+    """
+    canonical_name = None
+    
+    def is_detailed(self):
+        return (not self.summary_pyval_repr().is_complete)
+
+class NamespaceDoc(ValueDoc):
+    """
+    API documentation information about a singe Python namespace
+    value.  (I.e., a module or a class).
+    """
+    #{ Information about Variables
+    variables = UNKNOWN
+    """@ivar: The contents of the namespace, encoded as a
+        dictionary mapping from identifiers to C{VariableDoc}s.  This
+        dictionary contains all names defined by the namespace,
+        including imported variables, aliased variables, and variables
+        inherited from base classes (once L{inherit_docs()
+        <epydoc.docbuilder.inherit_docs>} has added them).
+       @type: C{dict} from C{string} to L{VariableDoc}"""
+    sorted_variables = UNKNOWN
+    """@ivar: A list of all variables defined by this
+       namespace, in sorted order.  The elements of this list should
+       exactly match the values of L{variables}.  The sort order for
+       this list is defined as follows:
+          - Any variables listed in a C{@sort} docstring field are
+            listed in the order given by that field.
+          - These are followed by any variables that were found while
+            parsing the source code, in the order in which they were
+            defined in the source file.
+          - Finally, any remaining variables are listed in
+            alphabetical order.
+       @type: C{list} of L{VariableDoc}"""
+    sort_spec = UNKNOWN
+    """@ivar: The order in which variables should be listed,
+       encoded as a list of names.  Any variables whose names are not
+       included in this list should be listed alphabetically,
+       following the variables that are included.
+       @type: C{list} of C{str}"""
+    group_specs = UNKNOWN
+    """@ivar: The groups that are defined by this namespace's
+       docstrings.  C{group_specs} is encoded as an ordered list of
+       tuples C{(group_name, elt_names)}, where C{group_name} is the
+        
+       name of a group and C{elt_names} is a list of element names in
+       that group.  (An element can be a variable or a submodule.)  A
+       '*' in an element name will match any string of characters.
+       @type: C{list} of C{(str,list)}"""
+    variable_groups = UNKNOWN
+    """@ivar: A dictionary specifying what group each
+       variable belongs to.  The keys of the dictionary are group
+       names, and the values are lists of C{VariableDoc}s.  The order
+       that groups should be listed in should be taken from
+       L{group_specs}.
+       @type: C{dict} from C{str} to C{list} of L{VariableDoc}"""
+    #} end of group "information about variables"
+
+    def __init__(self, **kwargs):
+        kwargs.setdefault('variables', {})
+        APIDoc.__init__(self, **kwargs)
+        assert self.variables is not UNKNOWN
+
+    def is_detailed(self):
+        return True
+
+    def apidoc_links(self, **filters):
+        variables = filters.get('variables', True)
+        imports = filters.get('imports', True)
+        private = filters.get('private', True)
+        if variables and imports and private:
+            return self.variables.values() # list the common case first.
+        elif not variables:
+            return []
+        elif not imports and not private:
+            return [v for v in self.variables.values() if
+                    v.is_imported != True and v.is_public != False]
+        elif not private:
+            return [v for v in self.variables.values() if
+                    v.is_public != False]
+        elif not imports:
+            return [v for v in self.variables.values() if
+                    v.is_imported != True]
+        assert 0, 'this line should be unreachable'
+
+    def init_sorted_variables(self):
+        """
+        Initialize the L{sorted_variables} attribute, based on the
+        L{variables} and L{sort_spec} attributes.  This should usually
+        be called after all variables have been added to C{variables}
+        (including any inherited variables for classes).  
+        """
+        unsorted = self.variables.copy()
+        self.sorted_variables = []
+    
+        # Add any variables that are listed in sort_spec
+        if self.sort_spec is not UNKNOWN:
+            unused_idents = set(self.sort_spec)
+            for ident in self.sort_spec:
+                if ident in unsorted:
+                    self.sorted_variables.append(unsorted.pop(ident))
+                    unused_idents.discard(ident)
+                elif '*' in ident:
+                    regexp = re.compile('^%s$' % ident.replace('*', '(.*)'))
+                    # sort within matching group?
+                    for name, var_doc in unsorted.items():
+                        if regexp.match(name):
+                            self.sorted_variables.append(unsorted.pop(name))
+                            unused_idents.discard(ident)
+            for ident in unused_idents:
+                if ident not in ['__all__', '__docformat__', '__path__']:
+                    log.warning("@sort: %s.%s not found" %
+                                (self.canonical_name, ident))
+                    
+    
+        # Add any remaining variables in alphabetical order.
+        var_docs = unsorted.items()
+        var_docs.sort()
+        for name, var_doc in var_docs:
+            self.sorted_variables.append(var_doc)
+
+    def init_variable_groups(self):
+        """
+        Initialize the L{variable_groups} attribute, based on the
+        L{sorted_variables} and L{group_specs} attributes.
+        """
+        if self.sorted_variables is UNKNOWN:
+            self.init_sorted_variables()
+        assert len(self.sorted_variables) == len(self.variables)
+
+        elts = [(v.name, v) for v in self.sorted_variables]
+        self._unused_groups = dict([(n,set(i)) for (n,i) in self.group_specs])
+        self.variable_groups = self._init_grouping(elts)
+
+    def group_names(self):
+        """
+        Return a list of the group names defined by this namespace, in
+        the order in which they should be listed, with no duplicates.
+        """
+        name_list = ['']
+        name_set = set()
+        for name, spec in self.group_specs:
+            if name not in name_set:
+                name_set.add(name)
+                name_list.append(name)
+        return name_list
+
+    def _init_grouping(self, elts):
+        """
+        Divide a given a list of APIDoc objects into groups, as
+        specified by L{self.group_specs}.
+
+        @param elts: A list of tuples C{(name, apidoc)}.
+        
+        @return: A list of tuples C{(groupname, elts)}, where
+        C{groupname} is the name of a group and C{elts} is a list of
+        C{APIDoc}s in that group.  The first tuple has name C{''}, and
+        is used for ungrouped elements.  The remaining tuples are
+        listed in the order that they appear in C{self.group_specs}.
+        Within each tuple, the elements are listed in the order that
+        they appear in C{api_docs}.
+        """
+        # Make the common case fast.
+        if len(self.group_specs) == 0:
+            return {'': [elt[1] for elt in elts]}
+
+        ungrouped = set([elt_doc for (elt_name, elt_doc) in elts])
+
+        ungrouped = dict(elts)
+        groups = {}
+        for elt_name, elt_doc in elts:
+            for (group_name, idents) in self.group_specs:
+                group = groups.setdefault(group_name, [])
+                unused_groups = self._unused_groups[group_name]
+                for ident in idents:
+                    if re.match('^%s$' % ident.replace('*', '(.*)'), elt_name):
+                        unused_groups.discard(ident)
+                        if elt_name in ungrouped:
+                            group.append(ungrouped.pop(elt_name))
+                        else:
+                            log.warning("%s.%s in multiple groups" %
+                                        (self.canonical_name, elt_name))
+
+        # Convert ungrouped from an unordered set to an ordered list.
+        groups[''] = [elt_doc for (elt_name, elt_doc) in elts
+                      if elt_name in ungrouped]
+        return groups
+    
+    def report_unused_groups(self):
+        """
+        Issue a warning for any @group items that were not used by
+        L{_init_grouping()}.
+        """
+        for (group, unused_idents) in self._unused_groups.items():
+            for ident in unused_idents:
+                log.warning("@group %s: %s.%s not found" %
+                            (group, self.canonical_name, ident))
+                        
+class ModuleDoc(NamespaceDoc):
+    """
+    API documentation information about a single module.
+    """
+    #{ Information about the Module
+    filename = UNKNOWN
+    """@ivar: The name of the file that defines the module.
+       @type: C{string}"""
+    docformat = UNKNOWN
+    """@ivar: The markup language used by docstrings in this module.
+       @type: C{string}"""
+    #{ Information about Submodules
+    submodules = UNKNOWN
+    """@ivar: Modules contained by this module (if this module
+       is a package).  (Note: on rare occasions, a module may have a
+       submodule that is shadowed by a variable with the same name.)
+       @type: C{list} of L{ModuleDoc}"""
+    submodule_groups = UNKNOWN
+    """@ivar: A dictionary specifying what group each
+       submodule belongs to.  The keys of the dictionary are group
+       names, and the values are lists of C{ModuleDoc}s.  The order
+       that groups should be listed in should be taken from
+       L{group_specs}.
+       @type: C{dict} from C{str} to C{list} of L{ModuleDoc}"""
+    #{ Information about Packages
+    package = UNKNOWN
+    """@ivar: API documentation for the module's containing package.
+       @type: L{ModuleDoc}"""
+    is_package = UNKNOWN
+    """@ivar: True if this C{ModuleDoc} describes a package.
+       @type: C{bool}"""
+    path = UNKNOWN
+    """@ivar: If this C{ModuleDoc} describes a package, then C{path}
+       contains a list of directories that constitute its path (i.e.,
+       the value of its C{__path__} variable).
+       @type: C{list} of C{str}"""
+    #{ Information about Imported Variables
+    imports = UNKNOWN
+    """@ivar: A list of the source names of variables imported into
+       this module.  This is used to construct import graphs.
+       @type: C{list} of L{DottedName}"""
+    #}
+
+    def apidoc_links(self, **filters):
+        val_docs = NamespaceDoc.apidoc_links(self, **filters)
+        if (filters.get('packages', True) and
+            self.package not in (None, UNKNOWN)):
+            val_docs.append(self.package)
+        if (filters.get('submodules', True) and
+            self.submodules not in (None, UNKNOWN)):
+            val_docs += self.submodules
+        return val_docs
+
+    def init_submodule_groups(self):
+        """
+        Initialize the L{submodule_groups} attribute, based on the
+        L{submodules} and L{group_specs} attributes.
+        """
+        if self.submodules in (None, UNKNOWN):
+            return
+        self.submodules = sorted(self.submodules,
+                                 key=lambda m:m.canonical_name)
+        elts = [(m.canonical_name[-1], m) for m in self.submodules]
+        self.submodule_groups = self._init_grouping(elts)
+
+    def select_variables(self, group=None, value_type=None, public=None,
+                         imported=None, detailed=None):
+        """
+        Return a specified subset of this module's L{sorted_variables}
+        list.  If C{value_type} is given, then only return variables
+        whose values have the specified type.  If C{group} is given,
+        then only return variables that belong to the specified group.
+
+        @require: The L{sorted_variables}, L{variable_groups}, and
+            L{submodule_groups} attributes must be initialized before
+            this method can be used.  See L{init_sorted_variables()},
+            L{init_variable_groups()}, and L{init_submodule_groups()}.
+
+        @param value_type: A string specifying the value type for
+            which variables should be returned.  Valid values are:
+              - 'class' - variables whose values are classes or types.
+              - 'function' - variables whose values are functions.
+              - 'other' - variables whose values are not classes,
+                 exceptions, types, or functions.
+        @type value_type: C{string}
+        
+        @param group: The name of the group for which variables should
+            be returned.  A complete list of the groups defined by
+            this C{ModuleDoc} is available in the L{group_names}
+            instance variable.  The first element of this list is
+            always the special group name C{''}, which is used for
+            variables that do not belong to any group.
+        @type group: C{string}
+
+        @param detailed: If True (False), return only the variables
+            deserving (not deserving) a detailed informative box.
+            If C{None}, don't care.
+        @type detailed: C{bool}
+        """
+        if (self.sorted_variables is UNKNOWN or 
+            self.variable_groups is UNKNOWN):
+            raise ValueError('sorted_variables and variable_groups '
+                             'must be initialized first.')
+        
+        if group is None: var_list = self.sorted_variables
+        else:
+            var_list = self.variable_groups.get(group, self.sorted_variables)
+
+        # Public/private filter (Count UNKNOWN as public)
+        if public is True:
+            var_list = [v for v in var_list if v.is_public is not False]
+        elif public is False:
+            var_list = [v for v in var_list if v.is_public is False]
+
+        # Imported filter (Count UNKNOWN as non-imported)
+        if imported is True:
+            var_list = [v for v in var_list if v.is_imported is True]
+        elif imported is False:
+            var_list = [v for v in var_list if v.is_imported is not True]
+
+        # Detailed filter
+        if detailed is True:
+            var_list = [v for v in var_list if v.is_detailed() is True]
+        elif detailed is False:
+            var_list = [v for v in var_list if v.is_detailed() is not True]
+
+        # [xx] Modules are not currently included in any of these
+        # value types.
+        if value_type is None:
+            return var_list
+        elif value_type == 'class':
+            return [var_doc for var_doc in var_list
+                    if (isinstance(var_doc.value, ClassDoc))]
+        elif value_type == 'function':
+            return [var_doc for var_doc in var_list
+                    if isinstance(var_doc.value, RoutineDoc)]
+        elif value_type == 'other':
+            return [var_doc for var_doc in var_list
+                    if not isinstance(var_doc.value,
+                                      (ClassDoc, RoutineDoc, ModuleDoc))]
+        else:
+            raise ValueError('Bad value type %r' % value_type)
+
+class ClassDoc(NamespaceDoc):
+    """
+    API documentation information about a single class.
+    """
+    #{ Information about Base Classes
+    bases = UNKNOWN
+    """@ivar: API documentation for the class's base classes.
+    @type: C{list} of L{ClassDoc}"""
+    #{ Information about Subclasses
+    subclasses = UNKNOWN
+    """@ivar: API documentation for the class's known subclasses.
+    @type: C{list} of L{ClassDoc}"""
+    #}
+
+    def apidoc_links(self, **filters):
+        val_docs = NamespaceDoc.apidoc_links(self, **filters)
+        if (filters.get('bases', True) and 
+            self.bases not in (None, UNKNOWN)):
+            val_docs += self.bases
+        if (filters.get('subclasses', True) and
+            self.subclasses not in (None, UNKNOWN)):
+            val_docs += self.subclasses
+        return val_docs
+    
+    def is_type(self):
+        if self.canonical_name == DottedName('type'): return True
+        if self.bases is UNKNOWN: return False
+        for base in self.bases:
+            if isinstance(base, ClassDoc) and base.is_type():
+                return True
+        return False
+    
+    def is_exception(self):
+        if self.canonical_name == DottedName('Exception'): return True
+        if self.bases is UNKNOWN: return False
+        for base in self.bases:
+            if isinstance(base, ClassDoc) and base.is_exception():
+                return True
+        return False
+    
+    def is_newstyle_class(self):
+        if self.canonical_name == DottedName('object'): return True
+        if self.bases is UNKNOWN: return False
+        for base in self.bases:
+            if isinstance(base, ClassDoc) and base.is_newstyle_class():
+                return True
+        return False
+
+    def mro(self, warn_about_bad_bases=False):
+        if self.is_newstyle_class():
+            return self._c3_mro(warn_about_bad_bases)
+        else:
+            return self._dfs_bases([], set(), warn_about_bad_bases)
+                
+    def _dfs_bases(self, mro, seen, warn_about_bad_bases):
+        if self in seen: return mro
+        mro.append(self)
+        seen.add(self)
+        if self.bases is not UNKNOWN:
+            for base in self.bases:
+                if isinstance(base, ClassDoc) and base.proxy_for is None:
+                    base._dfs_bases(mro, seen, warn_about_bad_bases)
+                elif warn_about_bad_bases:
+                    self._report_bad_base(base)
+        return mro
+
+    def _c3_mro(self, warn_about_bad_bases):
+        """
+        Compute the class precedence list (mro) according to C3.
+        @seealso: U{http://www.python.org/2.3/mro.html}
+        """
+        bases = [base for base in self.bases if isinstance(base, ClassDoc)]
+        if len(bases) != len(self.bases) and warn_about_bad_bases:
+            for base in self.bases:
+                if (not isinstance(base, ClassDoc) or
+                    base.proxy_for is not None):
+                    self._report_bad_base(base)
+        w = [warn_about_bad_bases]*len(bases)
+        return self._c3_merge([[self]] + map(ClassDoc._c3_mro, bases, w) +
+                              [list(bases)])
+
+    def _report_bad_base(self, base):
+        if not isinstance(base, ClassDoc):
+            if not isinstance(base, GenericValueDoc):
+                base_name = base.canonical_name
+            elif base.parse_repr is not UNKNOWN:
+                base_name = base.parse_repr
+            else:
+                base_name = '%r' % base
+            log.warning("%s's base %s is not a class" %
+                        (self.canonical_name, base_name))
+        elif base.proxy_for is not None:
+            log.warning("No information available for %s's base %s" %
+                        (self.canonical_name, base.proxy_for))
+
+    def _c3_merge(self, seqs):
+        """
+        Helper function for L{_c3_mro}.
+        """
+        res = []
+        while 1:
+          nonemptyseqs=[seq for seq in seqs if seq]
+          if not nonemptyseqs: return res
+          for seq in nonemptyseqs: # find merge candidates among seq heads
+              cand = seq[0]
+              nothead=[s for s in nonemptyseqs if cand in s[1:]]
+              if nothead: cand=None #reject candidate
+              else: break
+          if not cand: raise "Inconsistent hierarchy"
+          res.append(cand)
+          for seq in nonemptyseqs: # remove cand
+              if seq[0] == cand: del seq[0]
+    
+    def select_variables(self, group=None, value_type=None, inherited=None,
+                         public=None, imported=None, detailed=None):
+        """
+        Return a specified subset of this class's L{sorted_variables}
+        list.  If C{value_type} is given, then only return variables
+        whose values have the specified type.  If C{group} is given,
+        then only return variables that belong to the specified group.
+        If C{inherited} is True, then only return inherited variables;
+        if C{inherited} is False, then only return local variables.
+
+        @require: The L{sorted_variables} and L{variable_groups}
+            attributes must be initialized before this method can be
+            used.  See L{init_sorted_variables()} and
+            L{init_variable_groups()}.
+
+        @param value_type: A string specifying the value type for
+            which variables should be returned.  Valid values are:
+              - 'instancemethod' - variables whose values are
+                instance methods.
+              - 'classmethod' - variables whose values are class
+                methods.
+              - 'staticmethod' - variables whose values are static
+                methods.
+              - 'properties' - variables whose values are properties.
+              - 'class' - variables whose values are nested classes
+                (including exceptions and types).
+              - 'instancevariable' - instance variables.  This includes
+                any variables that are explicitly marked as instance
+                variables with docstring fields; and variables with
+                docstrings that are initialized in the constructor.
+              - 'classvariable' - class variables.  This includes any
+                variables that are not included in any of the above
+                categories.
+        @type value_type: C{string}
+        
+        @param group: The name of the group for which variables should
+            be returned.  A complete list of the groups defined by
+            this C{ClassDoc} is available in the L{group_names}
+            instance variable.  The first element of this list is
+            always the special group name C{''}, which is used for
+            variables that do not belong to any group.
+        @type group: C{string}
+
+        @param inherited: If C{None}, then return both inherited and
+            local variables; if C{True}, then return only inherited
+            variables; if C{False}, then return only local variables.
+
+        @param detailed: If True (False), return only the variables
+            deserving (not deserving) a detailed informative box.
+            If C{None}, don't care.
+        @type detailed: C{bool}
+        """
+        if (self.sorted_variables is UNKNOWN or 
+            self.variable_groups is UNKNOWN):
+            raise ValueError('sorted_variables and variable_groups '
+                             'must be initialized first.')
+        
+        if group is None: var_list = self.sorted_variables
+        else: var_list = self.variable_groups[group]
+
+        # Public/private filter (Count UNKNOWN as public)
+        if public is True:
+            var_list = [v for v in var_list if v.is_public is not False]
+        elif public is False:
+            var_list = [v for v in var_list if v.is_public is False]
+
+        # Inherited filter (Count UNKNOWN as non-inherited)
+        if inherited is None: pass
+        elif inherited:
+            var_list = [v for v in var_list if v.container != self]
+        else:
+            var_list = [v for v in var_list if v.container == self ]
+
+        # Imported filter (Count UNKNOWN as non-imported)
+        if imported is True:
+            var_list = [v for v in var_list if v.is_imported is True]
+        elif imported is False:
+            var_list = [v for v in var_list if v.is_imported is not True]
+
+        # Detailed filter
+        if detailed is True:
+            var_list = [v for v in var_list if v.is_detailed() is True]
+        elif detailed is False:
+            var_list = [v for v in var_list if v.is_detailed() is not True]
+
+        if value_type is None:
+            return var_list
+        elif value_type == 'method':
+            return [var_doc for var_doc in var_list
+                    if (isinstance(var_doc.value, RoutineDoc) and
+                        var_doc.is_instvar in (False, UNKNOWN))]
+        elif value_type == 'instancemethod':
+            return [var_doc for var_doc in var_list
+                    if (isinstance(var_doc.value, RoutineDoc) and
+                        not isinstance(var_doc.value, ClassMethodDoc) and
+                        not isinstance(var_doc.value, StaticMethodDoc) and
+                        var_doc.is_instvar in (False, UNKNOWN))]
+        elif value_type == 'classmethod':
+            return [var_doc for var_doc in var_list
+                    if (isinstance(var_doc.value, ClassMethodDoc) and
+                        var_doc.is_instvar in (False, UNKNOWN))]
+        elif value_type == 'staticmethod':
+            return [var_doc for var_doc in var_list
+                    if (isinstance(var_doc.value, StaticMethodDoc) and
+                        var_doc.is_instvar in (False, UNKNOWN))]
+        elif value_type == 'property':
+            return [var_doc for var_doc in var_list
+                    if (isinstance(var_doc.value, PropertyDoc) and
+                        var_doc.is_instvar in (False, UNKNOWN))]
+        elif value_type == 'class':
+            return [var_doc for var_doc in var_list
+                    if (isinstance(var_doc.value, ClassDoc) and
+                        var_doc.is_instvar in (False, UNKNOWN))]
+        elif value_type == 'instancevariable':
+            return [var_doc for var_doc in var_list
+                    if var_doc.is_instvar is True]
+        elif value_type == 'classvariable':
+            return [var_doc for var_doc in var_list
+                    if (var_doc.is_instvar in (False, UNKNOWN) and
+                        not isinstance(var_doc.value,
+                                       (RoutineDoc, ClassDoc, PropertyDoc)))]
+        else:
+            raise ValueError('Bad value type %r' % value_type)
+
+class RoutineDoc(ValueDoc):
+    """
+    API documentation information about a single routine.
+    """
+    #{ Signature
+    posargs = UNKNOWN
+    """@ivar: The names of the routine's positional arguments.
+       If an argument list contains \"unpacking\" arguments, then
+       their names will be specified using nested lists.  E.g., if
+       a function's argument list is C{((x1,y1), (x2,y2))}, then
+       posargs will be C{[['x1','y1'], ['x2','y2']]}.
+       @type: C{list}"""
+    posarg_defaults = UNKNOWN
+    """@ivar: API documentation for the positional arguments'
+       default values.  This list has the same length as C{posargs}, and
+       each element of C{posarg_defaults} describes the corresponding
+       argument in C{posargs}.  For positional arguments with no default,
+       C{posargs_defaults} will contain None.
+       @type: C{list} of C{ValueDoc} or C{None}"""
+    vararg = UNKNOWN
+    """@ivar: The name of the routine's vararg argument, or C{None} if
+       it has no vararg argument.
+       @type: C{string} or C{None}"""
+    kwarg = UNKNOWN
+    """@ivar: The name of the routine's keyword argument, or C{None} if
+       it has no keyword argument.
+       @type: C{string} or C{None}"""
+    lineno = UNKNOWN # used to look up profiling info from pstats.
+    """@ivar: The line number of the first line of the function's
+       signature.  For Python functions, this is equal to
+       C{func.func_code.co_firstlineno}.  The first line of a file
+       is considered line 1.
+       @type: C{int}"""
+    #} end of "signature" group
+
+    #{ Decorators
+    decorators = UNKNOWN
+    """@ivar: A list of names of decorators that were applied to this
+       routine, in the order that they are listed in the source code.
+       (I.e., in the reverse of the order that they were applied in.)
+       @type: C{list} of C{string}"""
+    #} end of "decorators" group
+
+    #{ Information Extracted from Docstrings
+    arg_descrs = UNKNOWN
+    """@ivar: A list of descriptions of the routine's
+       arguments.  Each element of this list is a tuple C{(args,
+       descr)}, where C{args} is a list of argument names; and
+       C{descr} is a L{ParsedDocstring
+       <epydoc.markup.ParsedDocstring>} describing the argument(s)
+       specified by C{arg}.
+       @type: C{list}"""
+    arg_types = UNKNOWN
+    """@ivar: Descriptions of the expected types for the
+       routine's arguments, encoded as a dictionary mapping from
+       argument names to type descriptions.
+       @type: C{dict} from C{string} to L{ParsedDocstring
+       <epydoc.markup.ParsedDocstring>}"""
+    return_descr = UNKNOWN
+    """@ivar: A description of the value returned by this routine.
+       @type: L{ParsedDocstring<epydoc.markup.ParsedDocstring>}"""
+    return_type = UNKNOWN
+    """@ivar: A description of expected type for the value
+       returned by this routine.
+       @type: L{ParsedDocstring<epydoc.markup.ParsedDocstring>}"""
+    exception_descrs = UNKNOWN
+    """@ivar: A list of descriptions of exceptions
+       that the routine might raise.  Each element of this list is a
+       tuple C{(exc, descr)}, where C{exc} is a string contianing the
+       exception name; and C{descr} is a L{ParsedDocstring
+       <epydoc.markup.ParsedDocstring>} describing the circumstances
+       under which the exception specified by C{exc} is raised.
+       @type: C{list}"""
+    #} end of "information extracted from docstrings" group
+    callgraph_uid = None
+    """@ivar: L{DotGraph}.uid of the call graph for the function.
+       @type: C{str}"""
+
+    def is_detailed(self):
+        if super(RoutineDoc, self).is_detailed():
+            return True
+
+        if self.arg_descrs not in (None, UNKNOWN) and self.arg_descrs:
+            return True
+
+        if self.arg_types not in (None, UNKNOWN) and self.arg_types:
+            return True
+
+        if self.return_descr not in (None, UNKNOWN):
+            return True
+
+        if self.exception_descrs not in (None, UNKNOWN) and self.exception_descrs:
+            return True
+
+        if (self.decorators not in (None, UNKNOWN)
+            and [ d for d in self.decorators
+                 if d not in ('classmethod', 'staticmethod') ]):
+            return True
+
+        return False
+
+    def all_args(self):
+        """
+        @return: A list of the names of all arguments (positional,
+        vararg, and keyword), in order.  If a positional argument
+        consists of a tuple of names, then that tuple will be
+        flattened.
+        """
+        if self.posargs is UNKNOWN:
+            return UNKNOWN
+            
+        all_args = _flatten(self.posargs)
+        if self.vararg not in (None, UNKNOWN):
+            all_args.append(self.vararg)
+        if self.kwarg not in (None, UNKNOWN):
+            all_args.append(self.kwarg)
+        return all_args
+
+def _flatten(lst, out=None):
+    """
+    Return a flattened version of C{lst}.
+    """
+    if out is None: out = []
+    for elt in lst:
+        if isinstance(elt, (list,tuple)):
+            _flatten(elt, out)
+        else:
+            out.append(elt)
+    return out
+
+class ClassMethodDoc(RoutineDoc): pass
+class StaticMethodDoc(RoutineDoc): pass
+
+class PropertyDoc(ValueDoc):
+    """
+    API documentation information about a single property.
+    """
+    #{ Property Access Functions
+    fget = UNKNOWN
+    """@ivar: API documentation for the property's get function.
+       @type: L{RoutineDoc}"""
+    fset = UNKNOWN
+    """@ivar: API documentation for the property's set function.
+       @type: L{RoutineDoc}"""
+    fdel = UNKNOWN
+    """@ivar: API documentation for the property's delete function.
+       @type: L{RoutineDoc}"""
+    #}
+    #{ Information Extracted from Docstrings
+    type_descr = UNKNOWN
+    """@ivar: A description of the property's expected type, extracted
+       from its docstring.
+       @type: L{ParsedDocstring<epydoc.markup.ParsedDocstring>}"""
+    #} end of "information extracted from docstrings" group
+
+    def apidoc_links(self, **filters):
+        val_docs = []
+        if self.fget not in (None, UNKNOWN): val_docs.append(self.fget)
+        if self.fset not in (None, UNKNOWN): val_docs.append(self.fset)
+        if self.fdel not in (None, UNKNOWN): val_docs.append(self.fdel)
+        return val_docs
+
+    def is_detailed(self):
+        if super(PropertyDoc, self).is_detailed():
+            return True
+
+        if self.fget not in (None, UNKNOWN) and self.fget.pyval is not None:
+             return True
+        if self.fset not in (None, UNKNOWN) and self.fset.pyval is not None:
+             return True
+        if self.fdel not in (None, UNKNOWN) and self.fdel.pyval is not None:
+             return True
+
+        return False
+
+######################################################################
+## Index
+######################################################################
+
+class DocIndex:
+    """
+    [xx] out of date.
+    
+    An index that .. hmm...  it *can't* be used to access some things,
+    cuz they're not at the root level.  Do I want to add them or what?
+    And if so, then I have a sort of a new top level.  hmm..  so
+    basically the question is what to do with a name that's not in the
+    root var's name space.  2 types:
+      - entirely outside (eg os.path)
+      - inside but not known (eg a submodule that we didn't look at?)
+      - container of current thing not examined?
+    
+    An index of all the C{APIDoc} objects that can be reached from a
+    root set of C{ValueDoc}s.  
+    
+    The members of this index can be accessed by dotted name.  In
+    particular, C{DocIndex} defines two mappings, accessed via the
+    L{get_vardoc()} and L{get_valdoc()} methods, which can be used to
+    access C{VariableDoc}s or C{ValueDoc}s respectively by name.  (Two
+    separate mappings are necessary because a single name can be used
+    to refer to both a variable and to the value contained by that
+    variable.)
+
+    Additionally, the index defines two sets of C{ValueDoc}s:
+    \"reachable C{ValueDoc}s\" and \"contained C{ValueDoc}s\".  The
+    X{reachable C{ValueDoc}s} are defined as the set of all
+    C{ValueDoc}s that can be reached from the root set by following
+    I{any} sequence of pointers to C{ValueDoc}s or C{VariableDoc}s.
+    The X{contained C{ValueDoc}s} are defined as the set of all
+    C{ValueDoc}s that can be reached from the root set by following
+    only the C{ValueDoc} pointers defined by non-imported
+    C{VariableDoc}s.  For example, if the root set contains a module
+    C{m}, then the contained C{ValueDoc}s includes the C{ValueDoc}s
+    for any functions, variables, or classes defined in that module,
+    as well as methods and variables defined in classes defined in the
+    module.  The reachable C{ValueDoc}s includes all of those
+    C{ValueDoc}s, as well as C{ValueDoc}s for any values imported into
+    the module, and base classes for classes defined in the module.
+    """
+
+    def __init__(self, root):
+        """
+        Create a new documentation index, based on the given root set
+        of C{ValueDoc}s.  If any C{APIDoc}s reachable from the root
+        set does not have a canonical name, then it will be assigned
+        one.  etc.
+        
+        @param root: A list of C{ValueDoc}s.
+        """
+        for apidoc in root:
+            if apidoc.canonical_name in (None, UNKNOWN):
+                raise ValueError("All APIdocs passed to DocIndexer "
+                                 "must already have canonical names.")
+        
+        # Initialize the root items list.  We sort them by length in
+        # ascending order.  (This ensures that variables will shadow
+        # submodules when appropriate.)
+        # When the elements name is the same, list in alphabetical order:
+        # this is needed by the check for duplicates below.
+        self.root = sorted(root,
+            key=lambda d: (len(d.canonical_name), d.canonical_name))
+        """The list of C{ValueDoc}s to document.
+            @type: C{list}"""
+
+        # Drop duplicated modules
+        # [xx] maybe what causes duplicates should be fixed instead.
+        #      If fixed, adjust the sort here above: sorting by names will not
+        #      be required anymore
+        i = 1
+        while i < len(self.root):
+            if self.root[i-1] is self.root[i]:
+                del self.root[i]
+            else:
+                i += 1
+
+        self.mlclasses = self._get_module_classes(self.root)
+        """A mapping from class names to L{ClassDoc}. Contains
+           classes defined at module level for modules in L{root}
+           and which can be used as fallback by L{find()} if looking
+           in containing namespaces fails.
+           @type: C{dict} from C{str} to L{ClassDoc} or C{list}"""
+
+        self.callers = None
+        """A dictionary mapping from C{RoutineDoc}s in this index
+           to lists of C{RoutineDoc}s for the routine's callers.
+           This dictionary is initialized by calling
+           L{read_profiling_info()}.
+           @type: C{list} of L{RoutineDoc}"""
+        
+        self.callees = None
+        """A dictionary mapping from C{RoutineDoc}s in this index
+           to lists of C{RoutineDoc}s for the routine's callees.
+           This dictionary is initialized by calling
+           L{read_profiling_info()}.
+           @type: C{list} of L{RoutineDoc}"""
+
+        self._funcid_to_doc = {}
+        """A mapping from C{profile} function ids to corresponding
+           C{APIDoc} objects.  A function id is a tuple of the form
+           C{(filename, lineno, funcname)}.  This is used to update
+           the L{callers} and L{callees} variables."""
+
+        self._container_cache = {}
+        """A cache for the L{container()} method, to increase speed."""
+
+        self._get_cache = {}
+        """A cache for the L{get_vardoc()} and L{get_valdoc()} methods,
+        to increase speed."""
+
+    #////////////////////////////////////////////////////////////
+    # Lookup methods
+    #////////////////////////////////////////////////////////////
+    # [xx]
+    # Currently these only work for things reachable from the
+    # root... :-/  I might want to change this so that imported
+    # values can be accessed even if they're not contained.  
+    # Also, I might want canonical names to not start with ??
+    # if the thing is a top-level imported module..?
+
+    def get_vardoc(self, name):
+        """
+        Return the C{VariableDoc} with the given name, or C{None} if this
+        index does not contain a C{VariableDoc} with the given name.
+        """
+        var, val = self._get(name)
+        return var
+
+    def get_valdoc(self, name):
+        """
+        Return the C{ValueDoc} with the given name, or C{None} if this
+        index does not contain a C{ValueDoc} with the given name.
+        """
+        var, val = self._get(name)
+        return val
+
+    def _get(self, name):
+        """
+        A helper function that's used to implement L{get_vardoc()}
+        and L{get_valdoc()}.
+        """
+        # Convert name to a DottedName, if necessary.
+        if not isinstance(name, DottedName):
+            name = DottedName(name)
+
+        # Check if the result is cached.
+        val = self._get_cache.get(name)
+        if val is not None: return val
+
+        # Look for an element in the root set whose name is a prefix
+        # of `name`.  If we can't find one, then return None.
+        for root_valdoc in self.root:
+            if root_valdoc.canonical_name.dominates(name):
+                # Starting at the root valdoc, walk down the variable/
+                # submodule chain until we find the requested item.
+                var_doc = None
+                val_doc = root_valdoc
+                for identifier in name[len(root_valdoc.canonical_name):]:
+                    if val_doc is None: break
+                    var_doc, val_doc = self._get_from(val_doc, identifier)
+                else:
+                    # If we found it, then return.
+                    if var_doc is not None or val_doc is not None:
+                        self._get_cache[name] = (var_doc, val_doc)
+                        return var_doc, val_doc
+
+        # We didn't find it.
+        self._get_cache[name] = (None, None)
+        return None, None
+
+    def _get_from(self, val_doc, identifier):
+        if isinstance(val_doc, NamespaceDoc):
+            child_var = val_doc.variables.get(identifier)
+            if child_var is not None:
+                child_val = child_var.value
+                if child_val is UNKNOWN: child_val = None
+                return child_var, child_val
+
+        # If that fails, then see if it's a submodule.
+        if (isinstance(val_doc, ModuleDoc) and
+            val_doc.submodules is not UNKNOWN):
+            for submodule in val_doc.submodules:
+                if submodule.canonical_name[-1] == identifier:
+                    var_doc = None
+                    val_doc = submodule
+                    if val_doc is UNKNOWN: val_doc = None
+                    return var_doc, val_doc
+
+        return None, None
+
+    def find(self, name, context):
+        """
+        Look for an C{APIDoc} named C{name}, relative to C{context}.
+        Return the C{APIDoc} if one is found; otherwise, return
+        C{None}.  C{find} looks in the following places, in order:
+          - Function parameters (if one matches, return C{None})
+          - All enclosing namespaces, from closest to furthest.
+          - If C{name} starts with C{'self'}, then strip it off and
+            look for the remaining part of the name using C{find}
+          - Builtins
+          - Parameter attributes
+          - Classes at module level (if the name is not ambiguous)
+        
+        @type name: C{str} or L{DottedName}
+        @type context: L{APIDoc}
+        """
+        if isinstance(name, basestring):
+            name = re.sub(r'\(.*\)$', '', name.strip())
+            if re.match('^([a-zA-Z_]\w*)(\.[a-zA-Z_]\w*)*$', name):
+                name = DottedName(name)
+            else:
+                return None
+        elif not isinstance(name, DottedName):
+            raise TypeError("'name' should be a string or DottedName")
+        
+        if context is None or context.canonical_name is None:
+            container_name = []
+        else:
+            container_name = context.canonical_name
+
+        # Check for the name in all containing namespaces, starting
+        # with the closest one.
+        for i in range(len(container_name), -1, -1):
+            relative_name = container_name[:i]+name
+            # Is `name` the absolute name of a documented value?
+            # (excepting GenericValueDoc values.)
+            val_doc = self.get_valdoc(relative_name)
+            if (val_doc is not None and
+                not isinstance(val_doc, GenericValueDoc)):
+                return val_doc
+            # Is `name` the absolute name of a documented variable?
+            var_doc = self.get_vardoc(relative_name)
+            if var_doc is not None: return var_doc
+
+        # If the name begins with 'self', then try stripping that off
+        # and see if we can find the variable.
+        if name[0] == 'self':
+            doc = self.find('.'.join(name[1:]), context)
+            if doc is not None: return doc
+
+        # Is it the name of a builtin?
+        if len(name)==1 and hasattr(__builtin__, name[0]):
+            return None
+        
+        # Is it a parameter's name or an attribute of a parameter?
+        if isinstance(context, RoutineDoc):
+            all_args = context.all_args()
+            if all_args is not UNKNOWN and name[0] in all_args:
+                return None
+
+        # Is this an object directly contained by any module?
+        doc = self.mlclasses.get(name[-1])
+        if isinstance(doc, APIDoc):
+            return doc
+        elif isinstance(doc, list):
+            log.warning("%s is an ambiguous name: it may be %s" % (
+                name[-1],
+                ", ".join([ "'%s'" % d.canonical_name for d in doc ])))
+
+            # Drop this item so that the warning is reported only once.
+            # fail() will fail anyway.
+            del self.mlclasses[name[-1]]
+
+    def _get_module_classes(self, docs):
+        """
+        Gather all the classes defined in a list of modules.
+
+        Very often people refers to classes only by class name,
+        even if they are not imported in the namespace. Linking
+        to such classes will fail if we look for them only in nested
+        namespaces. Allow them to retrieve only by name.
+
+        @param docs: containers of the objects to collect
+        @type docs: C{list} of C{APIDoc}
+        @return: mapping from objects name to the object(s) with that name
+        @rtype: C{dict} from C{str} to L{ClassDoc} or C{list}
+        """
+        classes = {}
+        for doc in docs:
+            if not isinstance(doc, ModuleDoc):
+                continue
+
+            for var in doc.variables.values():
+                if not isinstance(var.value, ClassDoc):
+                    continue
+
+                val = var.value
+                if val in (None, UNKNOWN) or val.defining_module is not doc:
+                    continue
+                if val.canonical_name in (None, UNKNOWN):
+                    continue
+
+                name = val.canonical_name[-1]
+                vals = classes.get(name)
+                if vals is None:
+                    classes[name] = val
+                elif not isinstance(vals, list):
+                    classes[name] = [ vals, val ]
+                else:
+                    vals.append(val)
+
+        return classes
+
+    #////////////////////////////////////////////////////////////
+    # etc
+    #////////////////////////////////////////////////////////////
+
+    def reachable_valdocs(self, **filters):
+        """
+        Return a list of all C{ValueDoc}s that can be reached,
+        directly or indirectly from this C{DocIndex}'s root set.
+        
+        @param filters: A set of filters that can be used to prevent
+            C{reachable_valdocs} from following specific link types
+            when looking for C{ValueDoc}s that can be reached from the
+            root set.  See C{APIDoc.apidoc_links} for a more complete
+            description.
+        """
+        return reachable_valdocs(self.root, **filters)
+
+    def container(self, api_doc):
+        """
+        Return the C{ValueDoc} that contains the given C{APIDoc}, or
+        C{None} if its container is not in the index.
+        """
+        # Check if the result is cached.
+        val = self._container_cache.get(api_doc)
+        if val is not None: return val
+        
+        if isinstance(api_doc, GenericValueDoc):
+            self._container_cache[api_doc] = None
+            return None # [xx] unknown.
+        if isinstance(api_doc, VariableDoc):
+            self._container_cache[api_doc] = api_doc.container
+            return api_doc.container
+        if len(api_doc.canonical_name) == 1:
+            self._container_cache[api_doc] = None
+            return None
+        elif isinstance(api_doc, ModuleDoc) and api_doc.package is not UNKNOWN:
+            self._container_cache[api_doc] = api_doc.package
+            return api_doc.package
+        else:
+            parent = self.get_valdoc(api_doc.canonical_name.container())
+            self._container_cache[api_doc] = parent
+            return parent
+
+    #////////////////////////////////////////////////////////////
+    # Profiling information
+    #////////////////////////////////////////////////////////////
+
+    def read_profiling_info(self, profile_stats):
+        """
+        Initialize the L{callers} and L{callees} variables, given a
+        C{Stat} object from the C{pstats} module.
+        
+        @warning: This method uses undocumented data structures inside
+            of C{profile_stats}.
+        """
+        if self.callers is None: self.callers = {}
+        if self.callees is None: self.callees = {}
+        
+        # The Stat object encodes functions using `funcid`s, or
+        # tuples of (filename, lineno, funcname).  Create a mapping
+        # from these `funcid`s to `RoutineDoc`s.
+        self._update_funcid_to_doc(profile_stats)
+        
+        for callee, (cc, nc, tt, ct, callers) in profile_stats.stats.items():
+            callee = self._funcid_to_doc.get(callee)
+            if callee is None: continue
+            for caller in callers:
+                caller = self._funcid_to_doc.get(caller)
+                if caller is None: continue
+                self.callers.setdefault(callee, []).append(caller)
+                self.callees.setdefault(caller, []).append(callee)
+
+    def _update_funcid_to_doc(self, profile_stats):
+        """
+        Update the dictionary mapping from C{pstat.Stat} funciton ids to
+        C{RoutineDoc}s.  C{pstat.Stat} function ids are tuples of
+        C{(filename, lineno, funcname)}.
+        """
+        # Maps (filename, lineno, funcname) -> RoutineDoc
+        for val_doc in self.reachable_valdocs():
+            # We only care about routines.
+            if not isinstance(val_doc, RoutineDoc): continue
+            # Get the filename from the defining module.
+            module = val_doc.defining_module
+            if module is UNKNOWN or module.filename is UNKNOWN: continue
+            # Normalize the filename.
+            filename = os.path.abspath(module.filename)
+            try: filename = py_src_filename(filename)
+            except: pass
+            # Look up the stat_func_id
+            funcid = (filename, val_doc.lineno, val_doc.canonical_name[-1])
+            if funcid in profile_stats.stats:
+                self._funcid_to_doc[funcid] = val_doc
+
+######################################################################
+## Pretty Printing
+######################################################################
+
+def pp_apidoc(api_doc, doublespace=0, depth=5, exclude=(), include=(),
+              backpointers=None):
+    """
+    @return: A multiline pretty-printed string representation for the
+        given C{APIDoc}.
+    @param doublespace: If true, then extra lines will be
+        inserted to make the output more readable.
+    @param depth: The maximum depth that pp_apidoc will descend
+        into descendent VarDocs.  To put no limit on
+        depth, use C{depth=-1}.
+    @param exclude: A list of names of attributes whose values should
+        not be shown.
+    @param backpointers: For internal use.
+    """
+    pyid = id(api_doc.__dict__)
+    if backpointers is None: backpointers = {}
+    if (hasattr(api_doc, 'canonical_name') and
+        api_doc.canonical_name not in (None, UNKNOWN)):
+        name = '%s for %s' % (api_doc.__class__.__name__,
+                              api_doc.canonical_name)
+    elif getattr(api_doc, 'name', None) not in (UNKNOWN, None):
+        if (getattr(api_doc, 'container', None) not in (UNKNOWN, None) and
+            getattr(api_doc.container, 'canonical_name', None)
+            not in (UNKNOWN, None)):
+            name ='%s for %s' % (api_doc.__class__.__name__,
+                                 api_doc.container.canonical_name+
+                                 api_doc.name)
+        else:
+            name = '%s for %s' % (api_doc.__class__.__name__, api_doc.name)
+    else:
+        name = api_doc.__class__.__name__
+        
+    if pyid in backpointers:
+        return '%s [%s] (defined above)' % (name, backpointers[pyid])
+    
+    if depth == 0:
+        if hasattr(api_doc, 'name') and api_doc.name is not None:
+            return '%s...' % api_doc.name
+        else:
+            return '...'
+
+    backpointers[pyid] = len(backpointers)
+    s = '%s [%s]' % (name, backpointers[pyid])
+
+    # Only print non-empty fields:
+    fields = [field for field in api_doc.__dict__.keys()
+              if (field in include or
+                  (getattr(api_doc, field) is not UNKNOWN
+                   and field not in exclude))]
+    if include:
+        fields = [field for field in dir(api_doc)
+                  if field in include]
+    else:
+        fields = [field for field in api_doc.__dict__.keys()
+                  if (getattr(api_doc, field) is not UNKNOWN
+                      and field not in exclude)]
+    fields.sort()
+    
+    for field in fields:
+        fieldval = getattr(api_doc, field)
+        if doublespace: s += '\n |'
+        s += '\n +- %s' % field
+
+        if (isinstance(fieldval, types.ListType) and
+            len(fieldval)>0 and
+            isinstance(fieldval[0], APIDoc)):
+            s += _pp_list(api_doc, fieldval, doublespace, depth,
+                          exclude, include, backpointers,
+                          (field is fields[-1]))
+        elif (isinstance(fieldval, types.DictType) and
+              len(fieldval)>0 and 
+              isinstance(fieldval.values()[0], APIDoc)):
+            s += _pp_dict(api_doc, fieldval, doublespace, 
+                          depth, exclude, include, backpointers,
+                          (field is fields[-1]))
+        elif isinstance(fieldval, APIDoc):
+            s += _pp_apidoc(api_doc, fieldval, doublespace, depth,
+                            exclude, include, backpointers,
+                            (field is fields[-1]))
+        else:
+            s += ' = ' + _pp_val(api_doc, fieldval, doublespace,
+                                 depth, exclude, include, backpointers)
+                
+    return s
+
+def _pp_list(api_doc, items, doublespace, depth, exclude, include,
+              backpointers, is_last):
+    line1 = (is_last and ' ') or '|'
+    s = ''
+    for item in items:
+        line2 = ((item is items[-1]) and ' ') or '|'
+        joiner = '\n %s  %s ' % (line1, line2)
+        if doublespace: s += '\n %s  |' % line1
+        s += '\n %s  +- ' % line1
+        valstr = _pp_val(api_doc, item, doublespace, depth, exclude, include,
+                         backpointers)
+        s += joiner.join(valstr.split('\n'))
+    return s
+
+def _pp_dict(api_doc, dict, doublespace, depth, exclude, include,
+              backpointers, is_last):
+    items = dict.items()
+    items.sort()
+    line1 = (is_last and ' ') or '|'
+    s = ''
+    for item in items:
+        line2 = ((item is items[-1]) and ' ') or '|'
+        joiner = '\n %s  %s ' % (line1, line2)
+        if doublespace: s += '\n %s  |' % line1
+        s += '\n %s  +- ' % line1
+        valstr = _pp_val(api_doc, item[1], doublespace, depth, exclude,
+                         include, backpointers)
+        s += joiner.join(('%s => %s' % (item[0], valstr)).split('\n'))
+    return s
+
+def _pp_apidoc(api_doc, val, doublespace, depth, exclude, include,
+                backpointers, is_last):
+    line1 = (is_last and ' ') or '|'
+    s = ''
+    if doublespace: s += '\n %s  |  ' % line1
+    s += '\n %s  +- ' % line1
+    joiner = '\n %s    ' % line1
+    childstr = pp_apidoc(val, doublespace, depth-1, exclude,
+                         include, backpointers)
+    return s + joiner.join(childstr.split('\n'))
+    
+def _pp_val(api_doc, val, doublespace, depth, exclude, include, backpointers):
+    from epydoc import markup
+    if isinstance(val, APIDoc):
+        return pp_apidoc(val, doublespace, depth-1, exclude,
+                         include, backpointers)
+    elif isinstance(val, markup.ParsedDocstring):
+        valrepr = `val.to_plaintext(None)`
+        if len(valrepr) < 40: return valrepr
+        else: return valrepr[:37]+'...'
+    else:
+        valrepr = repr(val)
+        if len(valrepr) < 40: return valrepr
+        else: return valrepr[:37]+'...'
+
diff --git a/epydoc/checker.py b/epydoc/checker.py
new file mode 100644
index 0000000..3bc41d0
--- /dev/null
+++ b/epydoc/checker.py
@@ -0,0 +1,349 @@
+#
+# objdoc: epydoc documentation completeness checker
+# Edward Loper
+#
+# Created [01/30/01 05:18 PM]
+# $Id: checker.py 1366 2006-09-07 15:54:59Z edloper $
+#
+
+"""
+Documentation completeness checker.  This module defines a single
+class, C{DocChecker}, which can be used to check the that specified
+classes of objects are documented.
+"""
+__docformat__ = 'epytext en'
+
+##################################################
+## Imports
+##################################################
+
+import re, sys, os.path, string
+from xml.dom.minidom import Text as _Text
+from epydoc.apidoc import *
+
+# The following methods may be undocumented:
+_NO_DOCS = ['__hash__', '__repr__', '__str__', '__cmp__']
+
+# The following methods never need descriptions, authors, or
+# versions:
+_NO_BASIC = ['__hash__', '__repr__', '__str__', '__cmp__']
+
+# The following methods never need return value descriptions.
+_NO_RETURN = ['__init__', '__hash__', '__repr__', '__str__', '__cmp__']
+
+# The following methods don't need parameters documented:
+_NO_PARAM = ['__cmp__']
+
+class DocChecker:
+    """
+    Documentation completeness checker.  C{DocChecker} can be used to
+    check that specified classes of objects are documented.  To check
+    the documentation for a group of objects, you should create a
+    C{DocChecker} from a L{DocIndex<apidoc.DocIndex>} that documents
+    those objects; and then use the L{check} method to run specified
+    checks on the objects' documentation.
+
+    What checks are run, and what objects they are run on, are
+    specified by the constants defined by C{DocChecker}.  These
+    constants are divided into three groups.  
+
+      - Type specifiers indicate what type of objects should be
+        checked: L{MODULE}; L{CLASS}; L{FUNC}; L{VAR}; L{IVAR};
+        L{CVAR}; L{PARAM}; and L{RETURN}.
+      - Public/private specifiers indicate whether public or private
+        objects should be checked: L{PRIVATE}.
+      - Check specifiers indicate what checks should be run on the
+        objects: L{TYPE}; L{DESCR}; L{AUTHOR};
+        and L{VERSION}.
+
+    The L{check} method is used to perform a check on the
+    documentation.  Its parameter is formed by or-ing together at
+    least one value from each specifier group:
+
+        >>> checker.check(DocChecker.MODULE | DocChecker.DESCR)
+        
+    To specify multiple values from a single group, simply or their
+    values together:
+    
+        >>> checker.check(DocChecker.MODULE | DocChecker.CLASS |
+        ...               DocChecker.FUNC )
+
+    @group Types: MODULE, CLASS, FUNC, VAR, IVAR, CVAR, PARAM,
+        RETURN, ALL_T
+    @type MODULE: C{int}
+    @cvar MODULE: Type specifier that indicates that the documentation
+        of modules should be checked.
+    @type CLASS: C{int}
+    @cvar CLASS: Type specifier that indicates that the documentation
+        of classes should be checked.
+    @type FUNC: C{int}
+    @cvar FUNC: Type specifier that indicates that the documentation
+        of functions should be checked.
+    @type VAR: C{int}
+    @cvar VAR: Type specifier that indicates that the documentation
+        of module variables should be checked.
+    @type IVAR: C{int}
+    @cvar IVAR: Type specifier that indicates that the documentation
+        of instance variables should be checked.
+    @type CVAR: C{int}
+    @cvar CVAR: Type specifier that indicates that the documentation
+        of class variables should be checked.
+    @type PARAM: C{int}
+    @cvar PARAM: Type specifier that indicates that the documentation
+        of function and method parameters should be checked.
+    @type RETURN: C{int}
+    @cvar RETURN: Type specifier that indicates that the documentation
+        of return values should be checked.
+    @type ALL_T: C{int}
+    @cvar ALL_T: Type specifier that indicates that the documentation
+        of all objects should be checked.
+
+    @group Checks: TYPE, AUTHOR, VERSION, DESCR, ALL_C
+    @type TYPE: C{int}
+    @cvar TYPE: Check specifier that indicates that every variable and
+        parameter should have a C{@type} field.
+    @type AUTHOR: C{int}
+    @cvar AUTHOR: Check specifier that indicates that every object
+        should have an C{author} field.
+    @type VERSION: C{int}
+    @cvar VERSION: Check specifier that indicates that every object
+        should have a C{version} field.
+    @type DESCR: C{int}
+    @cvar DESCR: Check specifier that indicates that every object
+        should have a description.  
+    @type ALL_C: C{int}
+    @cvar ALL_C: Check specifier that indicates that  all checks
+        should be run.
+
+    @group Publicity: PRIVATE
+    @type PRIVATE: C{int}
+    @cvar PRIVATE: Specifier that indicates that private objects should
+        be checked.
+    """
+    # Types
+    MODULE = 1
+    CLASS  = 2
+    FUNC   = 4
+    VAR    = 8
+    #IVAR   = 16
+    #CVAR   = 32
+    PARAM  = 64
+    RETURN = 128
+    PROPERTY = 256
+    ALL_T  = 1+2+4+8+16+32+64+128+256
+
+    # Checks
+    TYPE = 256
+    AUTHOR = 1024
+    VERSION = 2048
+    DESCR = 4096
+    ALL_C = 256+512+1024+2048+4096
+
+    # Private/public
+    PRIVATE = 16384
+
+    ALL = ALL_T + ALL_C + PRIVATE
+
+    def __init__(self, docindex):
+        """
+        Create a new C{DocChecker} that can be used to run checks on
+        the documentation of the objects documented by C{docindex}
+
+        @param docindex: A documentation map containing the
+            documentation for the objects to be checked.
+        @type docindex: L{Docindex<apidoc.DocIndex>}
+        """
+        self._docindex = docindex
+
+        # Initialize instance variables
+        self._checks = 0
+        self._last_warn = None
+        self._out = sys.stdout
+        self._num_warnings = 0
+
+    def check(self, *check_sets):
+        """
+        Run the specified checks on the documentation of the objects
+        contained by this C{DocChecker}'s C{DocIndex}.  Any errors found
+        are printed to standard out.
+
+        @param check_sets: The checks that should be run on the
+            documentation.  This value is constructed by or-ing
+            together the specifiers that indicate which objects should
+            be checked, and which checks should be run.  See the
+            L{module description<checker>} for more information.
+            If no checks are specified, then a default set of checks
+            will be run.
+        @type check_sets: C{int}
+        @return: True if no problems were found.
+        @rtype: C{boolean}
+        """
+        if not check_sets:
+            check_sets = (DocChecker.MODULE | DocChecker.CLASS |
+                          DocChecker.FUNC | DocChecker.VAR | 
+                          DocChecker.DESCR,)
+            
+        self._warnings = {}
+        log.start_progress('Checking docs')
+        for j, checks in enumerate(check_sets):
+            self._check(checks)
+        log.end_progress()
+
+        for (warning, docs) in self._warnings.items():
+            docs = sorted(docs)
+            docnames = '\n'.join(['  - %s' % self._name(d) for d in docs])
+            log.warning('%s:\n%s' % (warning, docnames))
+
+    def _check(self, checks):
+        self._checks = checks
+        
+        # Get the list of objects to check.
+        valdocs = sorted(self._docindex.reachable_valdocs(
+            imports=False, packages=False, bases=False, submodules=False, 
+            subclasses=False, private = (checks & DocChecker.PRIVATE)))
+        docs = set()
+        for d in valdocs:
+            if not isinstance(d, GenericValueDoc): docs.add(d)
+        for doc in valdocs:
+            if isinstance(doc, NamespaceDoc):
+                for d in doc.variables.values():
+                    if isinstance(d.value, GenericValueDoc): docs.add(d)
+
+        for i, doc in enumerate(sorted(docs)):
+            if isinstance(doc, ModuleDoc):
+                self._check_module(doc)
+            elif isinstance(doc, ClassDoc):
+                self._check_class(doc)
+            elif isinstance(doc, RoutineDoc):
+                self._check_func(doc)
+            elif isinstance(doc, PropertyDoc):
+                self._check_property(doc)
+            elif isinstance(doc, VariableDoc):
+                self._check_var(doc)
+            else:
+                log.error("Don't know how to check %r" % doc)
+
+    def _name(self, doc):
+        name = str(doc.canonical_name)
+        if isinstance(doc, RoutineDoc): name += '()'
+        return name
+
+    def _check_basic(self, doc):
+        """
+        Check the description, author, version, and see-also fields of
+        C{doc}.  This is used as a helper function by L{_check_module},
+        L{_check_class}, and L{_check_func}.
+
+        @param doc: The documentation that should be checked.
+        @type doc: L{APIDoc}
+        @rtype: C{None}
+        """
+        if ((self._checks & DocChecker.DESCR) and
+            (doc.descr in (None, UNKNOWN))):
+            if doc.docstring in (None, UNKNOWN):
+                self.warning('Undocumented', doc)
+            else:
+                self.warning('No description', doc)
+        if self._checks & DocChecker.AUTHOR:
+            for tag, arg, descr in doc.metadata:
+                if 'author' == tag: break
+            else:
+                self.warning('No authors', doc)
+        if self._checks & DocChecker.VERSION:
+            for tag, arg, descr in doc.metadata:
+                if 'version' == tag: break
+            else:
+                self.warning('No version', doc)
+            
+    def _check_module(self, doc):
+        """
+        Run checks on the module whose APIDoc is C{doc}.
+        
+        @param doc: The APIDoc of the module to check.
+        @type doc: L{APIDoc}
+        @rtype: C{None}
+        """
+        if self._checks & DocChecker.MODULE:
+            self._check_basic(doc)
+        
+    def _check_class(self, doc):
+        """
+        Run checks on the class whose APIDoc is C{doc}.
+        
+        @param doc: The APIDoc of the class to check.
+        @type doc: L{APIDoc}
+        @rtype: C{None}
+        """
+        if self._checks & DocChecker.CLASS:
+            self._check_basic(doc)
+
+    def _check_property(self, doc):
+        if self._checks & DocChecker.PROPERTY:
+            self._check_basic(doc)
+
+    def _check_var(self, doc):
+        """
+        Run checks on the variable whose documentation is C{var} and
+        whose name is C{name}.
+        
+        @param doc: The documentation for the variable to check.
+        @type doc: L{APIDoc}
+        @rtype: C{None}
+        """
+        if self._checks & DocChecker.VAR:
+            if (self._checks & (DocChecker.DESCR|DocChecker.TYPE) and
+                doc.descr in (None, UNKNOWN) and
+                doc.type_descr in (None, UNKNOWN) and
+                doc.docstring in (None, UNKNOWN)):
+                self.warning('Undocumented', doc)
+            else:
+                if (self._checks & DocChecker.DESCR and
+                    doc.descr in (None, UNKNOWN)):
+                    self.warning('No description', doc)
+                if (self._checks & DocChecker.TYPE and
+                    doc.type_descr in (None, UNKNOWN)):
+                    self.warning('No type information', doc)
+            
+    def _check_func(self, doc):
+        """
+        Run checks on the function whose APIDoc is C{doc}.
+        
+        @param doc: The APIDoc of the function to check.
+        @type doc: L{APIDoc}
+        @rtype: C{None}
+        """
+        name = doc.canonical_name
+        if (self._checks & DocChecker.FUNC and
+            doc.docstring in (None, UNKNOWN) and
+            doc.canonical_name[-1] not in _NO_DOCS):
+            self.warning('Undocumented', doc)
+            return
+        if (self._checks & DocChecker.FUNC and
+            doc.canonical_name[-1] not in _NO_BASIC):
+                self._check_basic(doc)
+        if (self._checks & DocChecker.RETURN and
+            doc.canonical_name[-1] not in _NO_RETURN):
+            if (doc.return_type in (None, UNKNOWN) and
+                doc.return_descr in (None, UNKNOWN)):
+                self.warning('No return descr', doc)
+        if (self._checks & DocChecker.PARAM and
+            doc.canonical_name[-1] not in _NO_PARAM):
+            if doc.arg_descrs in (None, UNKNOWN):
+                self.warning('No argument info', doc)
+            else:
+                args_with_descr = []
+                for arg, descr in doc.arg_descrs:
+                    if isinstance(arg, basestring):
+                        args_with_descr.append(arg)
+                    else:
+                        args_with_descr += arg
+                for posarg in doc.posargs:
+                    if (self._checks & DocChecker.DESCR and
+                        posarg not in args_with_descr):
+                        self.warning('Argument(s) not described', doc)
+                    if (self._checks & DocChecker.TYPE and
+                        posarg not in doc.arg_types):
+                        self.warning('Argument type(s) not described', doc)
+
+    def warning(self, msg, doc):
+        self._warnings.setdefault(msg,set()).add(doc)
diff --git a/epydoc/cli.py b/epydoc/cli.py
new file mode 100644
index 0000000..fe2359a
--- /dev/null
+++ b/epydoc/cli.py
@@ -0,0 +1,1470 @@
+# epydoc -- Command line interface
+#
+# Copyright (C) 2005 Edward Loper
+# Author: Edward Loper <edloper at loper.org>
+# URL: <http://epydoc.sf.net>
+#
+# $Id: cli.py 1678 2008-01-29 17:21:29Z edloper $
+
+"""
+Command-line interface for epydoc.  Abbreviated Usage::
+
+ epydoc [options] NAMES...
+ 
+     NAMES...                  The Python modules to document.
+     --html                    Generate HTML output (default).
+     --latex                   Generate LaTeX output.
+     --pdf                     Generate pdf output, via LaTeX.
+     -o DIR, --output DIR      The output directory.
+     --inheritance STYLE       The format for showing inherited objects.
+     -V, --version             Print the version of epydoc.
+     -h, --help                Display a usage message.
+
+Run \"epydoc --help\" for a complete option list.  See the epydoc(1)
+man page for more information.
+
+Config Files
+============
+Configuration files can be specified with the C{--config} option.
+These files are read using U{ConfigParser
+<http://docs.python.org/lib/module-ConfigParser.html>}.  Configuration
+files may set options or add names of modules to document.  Option
+names are (usually) identical to the long names of command line
+options.  To specify names to document, use any of the following
+option names::
+
+  module modules value values object objects
+
+A simple example of a config file is::
+
+  [epydoc]
+  modules: sys, os, os.path, re, %(MYSANDBOXPATH)/utilities.py
+  name: Example
+  graph: classtree
+  introspect: no
+
+All ConfigParser interpolations are done using local values and the
+environment variables.
+
+
+Verbosity Levels
+================
+The C{-v} and C{-q} options increase and decrease verbosity,
+respectively.  The default verbosity level is zero.  The verbosity
+levels are currently defined as follows::
+
+                Progress    Markup warnings   Warnings   Errors
+ -3               none            no             no        no
+ -2               none            no             no        yes
+ -1               none            no             yes       yes
+  0 (default)     bar             no             yes       yes
+  1               bar             yes            yes       yes
+  2               list            yes            yes       yes
+"""
+__docformat__ = 'epytext en'
+
+import sys, os, time, re, pickle, textwrap
+from glob import glob
+from optparse import OptionParser, OptionGroup, SUPPRESS_HELP
+import optparse
+import epydoc
+from epydoc import log
+from epydoc.util import wordwrap, run_subprocess, RunSubprocessError
+from epydoc.util import plaintext_to_html
+from epydoc.apidoc import UNKNOWN
+from epydoc.compat import *
+import ConfigParser
+from epydoc.docwriter.html_css import STYLESHEETS as CSS_STYLESHEETS
+
+# This module is only available if Docutils are in the system
+try:
+    from epydoc.docwriter import xlink
+except:
+    xlink = None
+
+INHERITANCE_STYLES = ('grouped', 'listed', 'included')
+GRAPH_TYPES = ('classtree', 'callgraph', 'umlclasstree')
+ACTIONS = ('html', 'text', 'latex', 'dvi', 'ps', 'pdf', 'check')
+DEFAULT_DOCFORMAT = 'epytext'
+PROFILER = 'profile' #: Which profiler to use: 'hotshot' or 'profile'
+
+######################################################################
+#{ Help Topics
+######################################################################
+
+DOCFORMATS = ('epytext', 'plaintext', 'restructuredtext', 'javadoc')
+HELP_TOPICS = {
+    'docformat': textwrap.dedent('''\
+        __docformat__ is a module variable that specifies the markup
+        language for the docstrings in a module.  Its value is a 
+        string, consisting the name of a markup language, optionally 
+        followed by a language code (such as "en" for English).  Epydoc
+        currently recognizes the following markup language names:
+        ''' + ', '.join(DOCFORMATS)),
+    'inheritance': textwrap.dedent('''\
+        The following inheritance formats are currently supported:
+            - grouped: inherited objects are gathered into groups,
+              based on what class they were inherited from.
+            - listed: inherited objects are listed in a short list
+              at the end of their section.
+            - included: inherited objects are mixed in with 
+              non-inherited objects.'''),
+    'css': textwrap.dedent(
+        'The following built-in CSS stylesheets are available:\n' +
+        '\n'.join(['  %10s: %s' % (key, descr)
+                   for (key, (sheet, descr))
+                   in CSS_STYLESHEETS.items()])),
+    #'checks': textwrap.dedent('''\
+    #
+    #    '''),
+    }
+        
+
+HELP_TOPICS['topics'] = wordwrap(
+    'Epydoc can provide additional help for the following topics: ' +
+    ', '.join(['%r' % topic for topic in HELP_TOPICS.keys()]))
+    
+######################################################################
+#{ Argument & Config File Parsing
+######################################################################
+
+OPTION_DEFAULTS = dict(
+    action="html", show_frames=True, docformat=DEFAULT_DOCFORMAT, 
+    show_private=True, show_imports=False, inheritance="listed",
+    verbose=0, quiet=0, load_pickle=False, parse=True, introspect=True,
+    debug=epydoc.DEBUG, profile=False, graphs=[],
+    list_classes_separately=False, graph_font=None, graph_font_size=None,
+    include_source_code=True, pstat_files=[], simple_term=False, fail_on=None,
+    exclude=[], exclude_parse=[], exclude_introspect=[],
+    external_api=[], external_api_file=[], external_api_root=[],
+    redundant_details=False, src_code_tab_width=8)
+
+def parse_arguments():
+    # Construct the option parser.
+    usage = '%prog [ACTION] [options] NAMES...'
+    version = "Epydoc, version %s" % epydoc.__version__
+    optparser = OptionParser(usage=usage, add_help_option=False)
+
+    optparser.add_option('--config',
+        action='append', dest="configfiles", metavar='FILE',
+        help=("A configuration file, specifying additional OPTIONS "
+              "and/or NAMES.  This option may be repeated."))
+
+    optparser.add_option("--output", "-o",
+        dest="target", metavar="PATH",
+        help="The output directory.  If PATH does not exist, then "
+        "it will be created.")
+
+    optparser.add_option("--quiet", "-q",
+        action="count", dest="quiet",
+        help="Decrease the verbosity.")
+
+    optparser.add_option("--verbose", "-v",
+        action="count", dest="verbose",
+        help="Increase the verbosity.")
+
+    optparser.add_option("--debug",
+        action="store_true", dest="debug",
+        help="Show full tracebacks for internal errors.")
+
+    optparser.add_option("--simple-term",
+        action="store_true", dest="simple_term",
+        help="Do not try to use color or cursor control when displaying "
+        "the progress bar, warnings, or errors.")
+
+
+    action_group = OptionGroup(optparser, 'Actions')
+    optparser.add_option_group(action_group)
+
+    action_group.add_option("--html",
+        action="store_const", dest="action", const="html",
+        help="Write HTML output.")
+
+    action_group.add_option("--text",
+        action="store_const", dest="action", const="text",
+        help="Write plaintext output. (not implemented yet)")
+
+    action_group.add_option("--latex",
+        action="store_const", dest="action", const="latex",
+        help="Write LaTeX output.")
+
+    action_group.add_option("--dvi",
+        action="store_const", dest="action", const="dvi",
+        help="Write DVI output.")
+
+    action_group.add_option("--ps",
+        action="store_const", dest="action", const="ps",
+        help="Write Postscript output.")
+
+    action_group.add_option("--pdf",
+        action="store_const", dest="action", const="pdf",
+        help="Write PDF output.")
+
+    action_group.add_option("--check",
+        action="store_const", dest="action", const="check",
+        help="Check completeness of docs.")
+
+    action_group.add_option("--pickle",
+        action="store_const", dest="action", const="pickle",
+        help="Write the documentation to a pickle file.")
+
+    # Provide our own --help and --version options.
+    action_group.add_option("--version",
+        action="store_const", dest="action", const="version",
+        help="Show epydoc's version number and exit.")
+
+    action_group.add_option("-h", "--help",
+        action="store_const", dest="action", const="help",
+        help="Show this message and exit.  For help on specific "
+        "topics, use \"--help TOPIC\".  Use \"--help topics\" for a "
+        "list of available help topics")
+
+
+    generation_group = OptionGroup(optparser, 'Generation Options')
+    optparser.add_option_group(generation_group)
+
+    generation_group.add_option("--docformat",
+        dest="docformat", metavar="NAME",
+        help="The default markup language for docstrings.  Defaults "
+        "to \"%s\"." % DEFAULT_DOCFORMAT)
+
+    generation_group.add_option("--parse-only",
+        action="store_false", dest="introspect",
+        help="Get all information from parsing (don't introspect)")
+
+    generation_group.add_option("--introspect-only",
+        action="store_false", dest="parse",
+        help="Get all information from introspecting (don't parse)")
+
+    generation_group.add_option("--exclude",
+        dest="exclude", metavar="PATTERN", action="append",
+        help="Exclude modules whose dotted name matches "
+             "the regular expression PATTERN")
+
+    generation_group.add_option("--exclude-introspect",
+        dest="exclude_introspect", metavar="PATTERN", action="append",
+        help="Exclude introspection of modules whose dotted name matches "
+             "the regular expression PATTERN")
+
+    generation_group.add_option("--exclude-parse",
+        dest="exclude_parse", metavar="PATTERN", action="append",
+        help="Exclude parsing of modules whose dotted name matches "
+             "the regular expression PATTERN")
+
+    generation_group.add_option("--inheritance",
+        dest="inheritance", metavar="STYLE",
+        help="The format for showing inheritance objects.  STYLE "
+        "should be one of: %s." % ', '.join(INHERITANCE_STYLES))
+
+    generation_group.add_option("--show-private",
+        action="store_true", dest="show_private",
+        help="Include private variables in the output. (default)")
+
+    generation_group.add_option("--no-private",
+        action="store_false", dest="show_private",
+        help="Do not include private variables in the output.")
+
+    generation_group.add_option("--show-imports",
+        action="store_true", dest="show_imports",
+        help="List each module's imports.")
+
+    generation_group.add_option("--no-imports",
+        action="store_false", dest="show_imports",
+        help="Do not list each module's imports. (default)")
+
+    generation_group.add_option('--show-sourcecode',
+        action='store_true', dest='include_source_code',
+        help=("Include source code with syntax highlighting in the "
+              "HTML output. (default)"))
+
+    generation_group.add_option('--no-sourcecode',
+        action='store_false', dest='include_source_code',
+        help=("Do not include source code with syntax highlighting in the "
+              "HTML output."))
+
+    generation_group.add_option('--include-log',
+        action='store_true', dest='include_log',
+        help=("Include a page with the process log (epydoc-log.html)"))
+
+    generation_group.add_option(
+        '--redundant-details',
+        action='store_true', dest='redundant_details',
+        help=("Include values in the details lists even if all info "
+              "about them is already provided by the summary table."))
+
+    output_group = OptionGroup(optparser, 'Output Options')
+    optparser.add_option_group(output_group)
+
+    output_group.add_option("--name", "-n",
+        dest="prj_name", metavar="NAME",
+        help="The documented project's name (for the navigation bar).")
+
+    output_group.add_option("--css", "-c",
+        dest="css", metavar="STYLESHEET",
+        help="The CSS stylesheet.  STYLESHEET can be either a "
+        "builtin stylesheet or the name of a CSS file.")
+
+    output_group.add_option("--url", "-u",
+        dest="prj_url", metavar="URL",
+        help="The documented project's URL (for the navigation bar).")
+
+    output_group.add_option("--navlink",
+        dest="prj_link", metavar="HTML",
+        help="HTML code for a navigation link to place in the "
+        "navigation bar.")
+
+    output_group.add_option("--top",
+        dest="top_page", metavar="PAGE",
+        help="The \"top\" page for the HTML documentation.  PAGE can "
+        "be a URL, the name of a module or class, or one of the "
+        "special names \"trees.html\", \"indices.html\", or \"help.html\"")
+
+    output_group.add_option("--help-file",
+        dest="help_file", metavar="FILE",
+        help="An alternate help file.  FILE should contain the body "
+        "of an HTML file -- navigation bars will be added to it.")
+
+    output_group.add_option("--show-frames",
+        action="store_true", dest="show_frames",
+        help="Include frames in the HTML output. (default)")
+
+    output_group.add_option("--no-frames",
+        action="store_false", dest="show_frames",
+        help="Do not include frames in the HTML output.")
+
+    output_group.add_option('--separate-classes',
+        action='store_true', dest='list_classes_separately',
+        help=("When generating LaTeX or PDF output, list each class in "
+              "its own section, instead of listing them under their "
+              "containing module."))
+
+    output_group.add_option('--src-code-tab-width',
+        action='store', type='int', dest='src_code_tab_width',
+        help=("When generating HTML output, sets the number of spaces "
+              "each tab in source code listings is replaced with."))
+    
+    # The group of external API options.
+    # Skip if the module couldn't be imported (usually missing docutils)
+    if xlink is not None:
+        link_group = OptionGroup(optparser,
+                                 xlink.ApiLinkReader.settings_spec[0])
+        optparser.add_option_group(link_group)
+
+        for help, names, opts in xlink.ApiLinkReader.settings_spec[2]:
+            opts = opts.copy()
+            opts['help'] = help
+            link_group.add_option(*names, **opts)
+
+    graph_group = OptionGroup(optparser, 'Graph Options')
+    optparser.add_option_group(graph_group)
+
+    graph_group.add_option('--graph',
+        action='append', dest='graphs', metavar='GRAPHTYPE',
+        help=("Include graphs of type GRAPHTYPE in the generated output.  "
+              "Graphs are generated using the Graphviz dot executable.  "
+              "If this executable is not on the path, then use --dotpath "
+              "to specify its location.  This option may be repeated to "
+              "include multiple graph types in the output.  GRAPHTYPE "
+              "should be one of: all, %s." % ', '.join(GRAPH_TYPES)))
+
+    graph_group.add_option("--dotpath",
+        dest="dotpath", metavar='PATH',
+        help="The path to the Graphviz 'dot' executable.")
+
+    graph_group.add_option('--graph-font',
+        dest='graph_font', metavar='FONT',
+        help=("Specify the font used to generate Graphviz graphs.  (e.g., "
+              "helvetica or times)."))
+
+    graph_group.add_option('--graph-font-size',
+        dest='graph_font_size', metavar='SIZE',
+        help=("Specify the font size used to generate Graphviz graphs, "
+              "in points."))
+
+    graph_group.add_option('--pstat',
+        action='append', dest='pstat_files', metavar='FILE',
+        help="A pstat output file, to be used in generating call graphs.")
+
+    # this option is for developers, not users.
+    graph_group.add_option("--profile-epydoc",
+        action="store_true", dest="profile",
+        help=SUPPRESS_HELP or
+             ("Run the hotshot profiler on epydoc itself.  Output "
+              "will be written to profile.out."))
+
+
+    return_group = OptionGroup(optparser, 'Return Value Options')
+    optparser.add_option_group(return_group)
+
+    return_group.add_option("--fail-on-error",
+        action="store_const", dest="fail_on", const=log.ERROR,
+        help="Return a non-zero exit status, indicating failure, if any "
+        "errors are encountered.")
+
+    return_group.add_option("--fail-on-warning",
+        action="store_const", dest="fail_on", const=log.WARNING,
+        help="Return a non-zero exit status, indicating failure, if any "
+        "errors or warnings are encountered (not including docstring "
+        "warnings).")
+
+    return_group.add_option("--fail-on-docstring-warning",
+        action="store_const", dest="fail_on", const=log.DOCSTRING_WARNING,
+        help="Return a non-zero exit status, indicating failure, if any "
+        "errors or warnings are encountered (including docstring "
+        "warnings).")
+
+    # Set the option parser's defaults.
+    optparser.set_defaults(**OPTION_DEFAULTS)
+
+    # Parse the arguments.
+    options, names = optparser.parse_args()
+
+    # Print help message, if requested.  We also provide support for
+    # --help [topic]
+    if options.action == 'help':
+        names = set([n.lower() for n in names])
+        for (topic, msg) in HELP_TOPICS.items():
+            if topic.lower() in names:
+                print '\n' + msg.rstrip() + '\n'
+                sys.exit(0)
+        optparser.print_help()
+        sys.exit(0)
+
+    # Print version message, if requested.
+    if options.action == 'version':
+        print version
+        sys.exit(0)
+    
+    # Process any config files.
+    if options.configfiles:
+        try:
+            parse_configfiles(options.configfiles, options, names)
+        except (KeyboardInterrupt,SystemExit): raise
+        except Exception, e:
+            if len(options.configfiles) == 1:
+                cf_name = 'config file %s' % options.configfiles[0]
+            else:
+                cf_name = 'config files %s' % ', '.join(options.configfiles)
+            optparser.error('Error reading %s:\n    %s' % (cf_name, e))
+
+    # Check if the input file is a pickle file.
+    for name in names:
+        if name.endswith('.pickle'):
+            if len(names) != 1:
+                optparser.error("When a pickle file is specified, no other "
+                               "input files may be specified.")
+            options.load_pickle = True
+    
+    # Check to make sure all options are valid.
+    if len(names) == 0:
+        optparser.error("No names specified.")
+        
+    # perform shell expansion.
+    for i, name in reversed(list(enumerate(names[:]))):
+        if '?' in name or '*' in name:
+            names[i:i+1] = glob(name)
+        
+    if options.inheritance not in INHERITANCE_STYLES:
+        optparser.error("Bad inheritance style.  Valid options are " +
+                        ",".join(INHERITANCE_STYLES))
+    if not options.parse and not options.introspect:
+        optparser.error("Invalid option combination: --parse-only "
+                        "and --introspect-only.")
+    if options.action == 'text' and len(names) > 1:
+        optparser.error("--text option takes only one name.")
+
+    # Check the list of requested graph types to make sure they're
+    # acceptable.
+    options.graphs = [graph_type.lower() for graph_type in options.graphs]
+    for graph_type in options.graphs:
+        if graph_type == 'callgraph' and not options.pstat_files:
+            optparser.error('"callgraph" graph type may only be used if '
+                            'one or more pstat files are specified.')
+        # If it's 'all', then add everything (but don't add callgraph if
+        # we don't have any profiling info to base them on).
+        if graph_type == 'all':
+            if options.pstat_files:
+                options.graphs = GRAPH_TYPES
+            else:
+                options.graphs = [g for g in GRAPH_TYPES if g != 'callgraph']
+            break
+        elif graph_type not in GRAPH_TYPES:
+            optparser.error("Invalid graph type %s." % graph_type)
+
+    # Calculate verbosity.
+    verbosity = getattr(options, 'verbosity', 0)
+    options.verbosity = verbosity + options.verbose - options.quiet
+
+    # The target default depends on the action.
+    if options.target is None:
+        options.target = options.action
+    
+    # Return parsed args.
+    options.names = names
+    return options, names
+
+def parse_configfiles(configfiles, options, names):
+    configparser = ConfigParser.ConfigParser()
+    # ConfigParser.read() silently ignores errors, so open the files
+    # manually (since we want to notify the user of any errors).
+    for configfile in configfiles:
+        fp = open(configfile, 'r') # may raise IOError.
+        configparser.readfp(fp, configfile)
+        fp.close()
+    for optname in configparser.options('epydoc'):
+        val = configparser.get('epydoc', optname, vars=os.environ).strip()
+        optname = optname.lower().strip()
+
+        if optname in ('modules', 'objects', 'values',
+                       'module', 'object', 'value'):
+            names.extend(_str_to_list(val))
+        elif optname == 'target':
+            options.target = val
+        elif optname == 'output':
+            if val.lower() not in ACTIONS:
+                raise ValueError('"%s" expected one of: %s' %
+                                 (optname, ', '.join(ACTIONS)))
+            options.action = val.lower()
+        elif optname == 'verbosity':
+            options.verbosity = _str_to_int(val, optname)
+        elif optname == 'debug':
+            options.debug = _str_to_bool(val, optname)
+        elif optname in ('simple-term', 'simple_term'):
+            options.simple_term = _str_to_bool(val, optname)
+
+        # Generation options
+        elif optname == 'docformat':
+            options.docformat = val
+        elif optname == 'parse':
+            options.parse = _str_to_bool(val, optname)
+        elif optname == 'introspect':
+            options.introspect = _str_to_bool(val, optname)
+        elif optname == 'exclude':
+            options.exclude.extend(_str_to_list(val))
+        elif optname in ('exclude-parse', 'exclude_parse'):
+            options.exclude_parse.extend(_str_to_list(val))
+        elif optname in ('exclude-introspect', 'exclude_introspect'):
+            options.exclude_introspect.extend(_str_to_list(val))
+        elif optname == 'inheritance':
+            if val.lower() not in INHERITANCE_STYLES:
+                raise ValueError('"%s" expected one of: %s.' %
+                                 (optname, ', '.join(INHERITANCE_STYLES)))
+            options.inheritance = val.lower()
+        elif optname =='private':
+            options.show_private = _str_to_bool(val, optname)
+        elif optname =='imports':
+            options.show_imports = _str_to_bool(val, optname)
+        elif optname == 'sourcecode':
+            options.include_source_code = _str_to_bool(val, optname)
+        elif optname in ('include-log', 'include_log'):
+            options.include_log = _str_to_bool(val, optname)
+        elif optname in ('redundant-details', 'redundant_details'):
+            options.redundant_details = _str_to_bool(val, optname)
+
+        # Output options
+        elif optname == 'name':
+            options.prj_name = val
+        elif optname == 'css':
+            options.css = val
+        elif optname == 'url':
+            options.prj_url = val
+        elif optname == 'link':
+            options.prj_link = val
+        elif optname == 'top':
+            options.top_page = val
+        elif optname == 'help':
+            options.help_file = val
+        elif optname =='frames':
+            options.show_frames = _str_to_bool(val, optname)
+        elif optname in ('separate-classes', 'separate_classes'):
+            options.list_classes_separately = _str_to_bool(val, optname)
+        elif optname in ('src-code-tab-width', 'src_code_tab_width'):
+            options.src_code_tab_width = _str_to_int(val, optname)
+
+        # External API
+        elif optname in ('external-api', 'external_api'):
+            options.external_api.extend(_str_to_list(val))
+        elif optname in ('external-api-file', 'external_api_file'):
+            options.external_api_file.extend(_str_to_list(val))
+        elif optname in ('external-api-root', 'external_api_root'):
+            options.external_api_root.extend(_str_to_list(val))
+
+        # Graph options
+        elif optname == 'graph':
+            graphtypes = _str_to_list(val)
+            for graphtype in graphtypes:
+                if graphtype not in GRAPH_TYPES + ('all',):
+                    raise ValueError('"%s" expected one of: all, %s.' %
+                                     (optname, ', '.join(GRAPH_TYPES)))
+            options.graphs.extend(graphtypes)
+        elif optname == 'dotpath':
+            options.dotpath = val
+        elif optname in ('graph-font', 'graph_font'):
+            options.graph_font = val
+        elif optname in ('graph-font-size', 'graph_font_size'):
+            options.graph_font_size = _str_to_int(val, optname)
+        elif optname == 'pstat':
+            options.pstat_files.extend(_str_to_list(val))
+
+        # Return value options
+        elif optname in ('failon', 'fail-on', 'fail_on'):
+            if val.lower().strip() in ('error', 'errors'):
+                options.fail_on = log.ERROR
+            elif val.lower().strip() in ('warning', 'warnings'):
+                options.fail_on = log.WARNING
+            elif val.lower().strip() in ('docstring_warning',
+                                         'docstring_warnings'):
+                options.fail_on = log.DOCSTRING_WARNING
+            else:
+                raise ValueError("%r expected one of: error, warning, "
+                                 "docstring_warning" % optname)
+        else:
+            raise ValueError('Unknown option %s' % optname)
+
+def _str_to_bool(val, optname):
+    if val.lower() in ('0', 'no', 'false', 'n', 'f', 'hide'):
+        return False
+    elif val.lower() in ('1', 'yes', 'true', 'y', 't', 'show'):
+        return True
+    else:
+        raise ValueError('"%s" option expected a boolean' % optname)
+        
+def _str_to_int(val, optname):
+    try:
+        return int(val)
+    except ValueError:
+        raise ValueError('"%s" option expected an int' % optname)
+
+def _str_to_list(val):
+    return val.replace(',', ' ').split()
+
+######################################################################
+#{ Interface
+######################################################################
+
+def main(options, names):
+    # Set the debug flag, if '--debug' was specified.
+    if options.debug:
+        epydoc.DEBUG = True
+
+    ## [XX] Did this serve a purpose?  Commenting out for now:
+    #if options.action == 'text':
+    #    if options.parse and options.introspect:
+    #        options.parse = False
+
+    # Set up the logger
+    if options.simple_term:
+        TerminalController.FORCE_SIMPLE_TERM = True
+    if options.action == 'text':
+        logger = None # no logger for text output.
+    elif options.verbosity > 1:
+        logger = ConsoleLogger(options.verbosity)
+        log.register_logger(logger)
+    else:
+        # Each number is a rough approximation of how long we spend on
+        # that task, used to divide up the unified progress bar.
+        stages = [40,  # Building documentation
+                  7,   # Merging parsed & introspected information
+                  1,   # Linking imported variables
+                  3,   # Indexing documentation
+                  1,   # Checking for overridden methods
+                  30,  # Parsing Docstrings
+                  1,   # Inheriting documentation
+                  2]   # Sorting & Grouping
+        if options.load_pickle:
+            stages = [30] # Loading pickled documentation
+        if options.action == 'html': stages += [100]
+        elif options.action == 'text': stages += [30]
+        elif options.action == 'latex': stages += [60]
+        elif options.action == 'dvi': stages += [60,30]
+        elif options.action == 'ps': stages += [60,40]
+        elif options.action == 'pdf': stages += [60,50]
+        elif options.action == 'check': stages += [10]
+        elif options.action == 'pickle': stages += [10]
+        else: raise ValueError, '%r not supported' % options.action
+        if options.parse and not options.introspect:
+            del stages[1] # no merging
+        if options.introspect and not options.parse:
+            del stages[1:3] # no merging or linking
+        logger = UnifiedProgressConsoleLogger(options.verbosity, stages)
+        log.register_logger(logger)
+
+    # check the output directory.
+    if options.action not in ('text', 'check', 'pickle'):
+        if os.path.exists(options.target):
+            if not os.path.isdir(options.target):
+                log.error("%s is not a directory" % options.target)
+                sys.exit(1)
+
+    if options.include_log:
+        if options.action == 'html':
+            if not os.path.exists(options.target):
+                os.mkdir(options.target)
+            log.register_logger(HTMLLogger(options.target, options))
+        else:
+            log.warning("--include-log requires --html")
+
+    # Set the default docformat
+    from epydoc import docstringparser
+    docstringparser.DEFAULT_DOCFORMAT = options.docformat
+
+    # Configure the external API linking
+    if xlink is not None:
+        try:
+            xlink.ApiLinkReader.read_configuration(options, problematic=False)
+        except Exception, exc:
+            log.error("Error while configuring external API linking: %s: %s"
+                % (exc.__class__.__name__, exc))
+
+    # Set the dot path
+    if options.dotpath:
+        from epydoc.docwriter import dotgraph
+        dotgraph.DOT_COMMAND = options.dotpath
+
+    # Set the default graph font & size
+    if options.graph_font:
+        from epydoc.docwriter import dotgraph
+        fontname = options.graph_font
+        dotgraph.DotGraph.DEFAULT_NODE_DEFAULTS['fontname'] = fontname
+        dotgraph.DotGraph.DEFAULT_EDGE_DEFAULTS['fontname'] = fontname
+    if options.graph_font_size:
+        from epydoc.docwriter import dotgraph
+        fontsize = options.graph_font_size
+        dotgraph.DotGraph.DEFAULT_NODE_DEFAULTS['fontsize'] = fontsize
+        dotgraph.DotGraph.DEFAULT_EDGE_DEFAULTS['fontsize'] = fontsize
+
+    # If the input name is a pickle file, then read the docindex that
+    # it contains.  Otherwise, build the docs for the input names.
+    if options.load_pickle:
+        assert len(names) == 1
+        log.start_progress('Deserializing')
+        log.progress(0.1, 'Loading %r' % names[0])
+        t0 = time.time()
+        unpickler = pickle.Unpickler(open(names[0], 'rb'))
+        unpickler.persistent_load = pickle_persistent_load
+        docindex = unpickler.load()
+        log.debug('deserialization time: %.1f sec' % (time.time()-t0))
+        log.end_progress()
+    else:
+        # Build docs for the named values.
+        from epydoc.docbuilder import build_doc_index
+        exclude_parse = '|'.join(options.exclude_parse+options.exclude)
+        exclude_introspect = '|'.join(options.exclude_introspect+
+                                      options.exclude)
+        docindex = build_doc_index(names, options.introspect, options.parse,
+                                   add_submodules=(options.action!='text'),
+                                   exclude_introspect=exclude_introspect,
+                                   exclude_parse=exclude_parse)
+
+    if docindex is None:
+        if log.ERROR in logger.reported_message_levels:
+            sys.exit(1)
+        else:
+            return # docbuilder already logged an error.
+
+    # Load profile information, if it was given.
+    if options.pstat_files:
+        try: import pstats
+        except ImportError:
+            log.error("Could not import pstats -- ignoring pstat files.")
+        try:
+            profile_stats = pstats.Stats(options.pstat_files[0])
+            for filename in options.pstat_files[1:]:
+                profile_stats.add(filename)
+        except KeyboardInterrupt: raise
+        except Exception, e:
+            log.error("Error reading pstat file: %s" % e)
+            profile_stats = None
+        if profile_stats is not None:
+            docindex.read_profiling_info(profile_stats)
+
+    # Perform the specified action.
+    if options.action == 'html':
+        write_html(docindex, options)
+    elif options.action in ('latex', 'dvi', 'ps', 'pdf'):
+        write_latex(docindex, options, options.action)
+    elif options.action == 'text':
+        write_text(docindex, options)
+    elif options.action == 'check':
+        check_docs(docindex, options)
+    elif options.action == 'pickle':
+        write_pickle(docindex, options)
+    else:
+        print >>sys.stderr, '\nUnsupported action %s!' % options.action
+
+    # If we suppressed docstring warnings, then let the user know.
+    if logger is not None and logger.suppressed_docstring_warning:
+        if logger.suppressed_docstring_warning == 1:
+            prefix = '1 markup error was found'
+        else:
+            prefix = ('%d markup errors were found' %
+                      logger.suppressed_docstring_warning)
+        log.warning("%s while processing docstrings.  Use the verbose "
+                    "switch (-v) to display markup errors." % prefix)
+
+    # Basic timing breakdown:
+    if options.verbosity >= 2 and logger is not None:
+        logger.print_times()
+
+    # If we encountered any message types that we were requested to
+    # fail on, then exit with status 2.
+    if options.fail_on is not None:
+        max_reported_message_level = max(logger.reported_message_levels)
+        if max_reported_message_level >= options.fail_on:
+            sys.exit(2)
+
+def write_html(docindex, options):
+    from epydoc.docwriter.html import HTMLWriter
+    html_writer = HTMLWriter(docindex, **options.__dict__)
+    if options.verbose > 0:
+        log.start_progress('Writing HTML docs to %r' % options.target)
+    else:
+        log.start_progress('Writing HTML docs')
+    html_writer.write(options.target)
+    log.end_progress()
+
+def write_pickle(docindex, options):
+    """Helper for writing output to a pickle file, which can then be
+    read in at a later time.  But loading the pickle is only marginally
+    faster than building the docs from scratch, so this has pretty
+    limited application."""
+    if options.target == 'pickle':
+        options.target = 'api.pickle'
+    elif not options.target.endswith('.pickle'):
+        options.target += '.pickle'
+
+    log.start_progress('Serializing output')
+    log.progress(0.2, 'Writing %r' % options.target)
+    outfile = open(options.target, 'wb')
+    pickler = pickle.Pickler(outfile, protocol=0)
+    pickler.persistent_id = pickle_persistent_id
+    pickler.dump(docindex)
+    outfile.close()
+    log.end_progress()
+
+def pickle_persistent_id(obj):
+    """Helper for pickling, which allows us to save and restore UNKNOWN,
+    which is required to be identical to apidoc.UNKNOWN."""
+    if obj is UNKNOWN: return 'UNKNOWN'
+    else: return None
+
+def pickle_persistent_load(identifier):
+    """Helper for pickling, which allows us to save and restore UNKNOWN,
+    which is required to be identical to apidoc.UNKNOWN."""
+    if identifier == 'UNKNOWN': return UNKNOWN
+    else: raise pickle.UnpicklingError, 'Invalid persistent id'
+
+_RERUN_LATEX_RE = re.compile(r'(?im)^LaTeX\s+Warning:\s+Label\(s\)\s+may'
+                             r'\s+have\s+changed.\s+Rerun')
+
+def write_latex(docindex, options, format):
+    from epydoc.docwriter.latex import LatexWriter
+    latex_writer = LatexWriter(docindex, **options.__dict__)
+    log.start_progress('Writing LaTeX docs')
+    latex_writer.write(options.target)
+    log.end_progress()
+    # If we're just generating the latex, and not any output format,
+    # then we're done.
+    if format == 'latex': return
+    
+    if format == 'dvi': steps = 4
+    elif format == 'ps': steps = 5
+    elif format == 'pdf': steps = 6
+    
+    log.start_progress('Processing LaTeX docs')
+    oldpath = os.path.abspath(os.curdir)
+    running = None # keep track of what we're doing.
+    try:
+        try:
+            os.chdir(options.target)
+
+            # Clear any old files out of the way.
+            for ext in 'tex aux log out idx ilg toc ind'.split():
+                if os.path.exists('apidoc.%s' % ext):
+                    os.remove('apidoc.%s' % ext)
+
+            # The first pass generates index files.
+            running = 'latex'
+            log.progress(0./steps, 'LaTeX: First pass')
+            run_subprocess('latex api.tex')
+
+            # Build the index.
+            running = 'makeindex'
+            log.progress(1./steps, 'LaTeX: Build index')
+            run_subprocess('makeindex api.idx')
+
+            # The second pass generates our output.
+            running = 'latex'
+            log.progress(2./steps, 'LaTeX: Second pass')
+            out, err = run_subprocess('latex api.tex')
+            
+            # The third pass is only necessary if the second pass
+            # changed what page some things are on.
+            running = 'latex'
+            if _RERUN_LATEX_RE.match(out):
+                log.progress(3./steps, 'LaTeX: Third pass')
+                out, err = run_subprocess('latex api.tex')
+ 
+            # A fourth path should (almost?) never be necessary.
+            running = 'latex'
+            if _RERUN_LATEX_RE.match(out):
+                log.progress(3./steps, 'LaTeX: Fourth pass')
+                run_subprocess('latex api.tex')
+
+            # If requested, convert to postscript.
+            if format in ('ps', 'pdf'):
+                running = 'dvips'
+                log.progress(4./steps, 'dvips')
+                run_subprocess('dvips api.dvi -o api.ps -G0 -Ppdf')
+
+            # If requested, convert to pdf.
+            if format in ('pdf'):
+                running = 'ps2pdf'
+                log.progress(5./steps, 'ps2pdf')
+                run_subprocess(
+                    'ps2pdf -sPAPERSIZE#letter -dMaxSubsetPct#100 '
+                    '-dSubsetFonts#true -dCompatibilityLevel#1.2 '
+                    '-dEmbedAllFonts#true api.ps api.pdf')
+        except RunSubprocessError, e:
+            if running == 'latex':
+                e.out = re.sub(r'(?sm)\A.*?!( LaTeX Error:)?', r'', e.out)
+                e.out = re.sub(r'(?sm)\s*Type X to quit.*', '', e.out)
+                e.out = re.sub(r'(?sm)^! Emergency stop.*', '', e.out)
+            log.error("%s failed: %s" % (running, (e.out+e.err).lstrip()))
+        except OSError, e:
+            log.error("%s failed: %s" % (running, e))
+    finally:
+        os.chdir(oldpath)
+        log.end_progress()
+
+def write_text(docindex, options):
+    log.start_progress('Writing output')
+    from epydoc.docwriter.plaintext import PlaintextWriter
+    plaintext_writer = PlaintextWriter()
+    s = ''
+    for apidoc in docindex.root:
+        s += plaintext_writer.write(apidoc)
+    log.end_progress()
+    if isinstance(s, unicode):
+        s = s.encode('ascii', 'backslashreplace')
+    print s
+
+def check_docs(docindex, options):
+    from epydoc.checker import DocChecker
+    DocChecker(docindex).check()
+                
+def cli():
+    # Parse command-line arguments.
+    options, names = parse_arguments()
+
+    try:
+        try:
+            if options.profile:
+                _profile()
+            else:
+                main(options, names)
+        finally:
+            log.close()
+    except SystemExit:
+        raise
+    except KeyboardInterrupt:
+        print '\n\n'
+        print >>sys.stderr, 'Keyboard interrupt.'
+    except:
+        if options.debug: raise
+        print '\n\n'
+        exc_info = sys.exc_info()
+        if isinstance(exc_info[0], basestring): e = exc_info[0]
+        else: e = exc_info[1]
+        print >>sys.stderr, ('\nUNEXPECTED ERROR:\n'
+                             '%s\n' % (str(e) or e.__class__.__name__))
+        print >>sys.stderr, 'Use --debug to see trace information.'
+        sys.exit(3)
+    
+def _profile():
+    # Hotshot profiler.
+    if PROFILER == 'hotshot':
+        try: import hotshot, hotshot.stats
+        except ImportError:
+            print >>sys.stderr, "Could not import profile module!"
+            return
+        try:
+            prof = hotshot.Profile('hotshot.out')
+            prof = prof.runctx('main(*parse_arguments())', globals(), {})
+        except SystemExit:
+            pass
+        prof.close()
+        # Convert profile.hotshot -> profile.out
+        print 'Consolidating hotshot profiling info...'
+        hotshot.stats.load('hotshot.out').dump_stats('profile.out')
+
+    # Standard 'profile' profiler.
+    elif PROFILER == 'profile':
+        # cProfile module was added in Python 2.5 -- use it if its'
+        # available, since it's faster.
+        try: from cProfile import Profile
+        except ImportError:
+            try: from profile import Profile
+            except ImportError:
+                print >>sys.stderr, "Could not import profile module!"
+                return
+
+        # There was a bug in Python 2.4's profiler.  Check if it's
+        # present, and if so, fix it.  (Bug was fixed in 2.4maint:
+        # <http://mail.python.org/pipermail/python-checkins/
+        #                         2005-September/047099.html>)
+        if (hasattr(Profile, 'dispatch') and
+            Profile.dispatch['c_exception'] is
+            Profile.trace_dispatch_exception.im_func):
+            trace_dispatch_return = Profile.trace_dispatch_return.im_func
+            Profile.dispatch['c_exception'] = trace_dispatch_return
+        try:
+            prof = Profile()
+            prof = prof.runctx('main(*parse_arguments())', globals(), {})
+        except SystemExit:
+            pass
+        prof.dump_stats('profile.out')
+
+    else:
+        print >>sys.stderr, 'Unknown profiler %s' % PROFILER
+        return
+    
+######################################################################
+#{ Logging
+######################################################################
+    
+class TerminalController:
+    """
+    A class that can be used to portably generate formatted output to
+    a terminal.  See
+    U{http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/475116}
+    for documentation.  (This is a somewhat stripped-down version.)
+    """
+    BOL = ''             #: Move the cursor to the beginning of the line
+    UP = ''              #: Move the cursor up one line
+    DOWN = ''            #: Move the cursor down one line
+    LEFT = ''            #: Move the cursor left one char
+    RIGHT = ''           #: Move the cursor right one char
+    CLEAR_EOL = ''       #: Clear to the end of the line.
+    CLEAR_LINE = ''      #: Clear the current line; cursor to BOL.
+    BOLD = ''            #: Turn on bold mode
+    NORMAL = ''          #: Turn off all modes
+    COLS = 75            #: Width of the terminal (default to 75)
+    BLACK = BLUE = GREEN = CYAN = RED = MAGENTA = YELLOW = WHITE = ''
+    
+    _STRING_CAPABILITIES = """
+    BOL=cr UP=cuu1 DOWN=cud1 LEFT=cub1 RIGHT=cuf1
+    CLEAR_EOL=el BOLD=bold UNDERLINE=smul NORMAL=sgr0""".split()
+    _COLORS = """BLACK BLUE GREEN CYAN RED MAGENTA YELLOW WHITE""".split()
+    _ANSICOLORS = "BLACK RED GREEN YELLOW BLUE MAGENTA CYAN WHITE".split()
+
+    #: If this is set to true, then new TerminalControllers will
+    #: assume that the terminal is not capable of doing manipulation
+    #: of any kind.
+    FORCE_SIMPLE_TERM = False
+
+    def __init__(self, term_stream=sys.stdout):
+        # If the stream isn't a tty, then assume it has no capabilities.
+        if not term_stream.isatty(): return
+        if self.FORCE_SIMPLE_TERM: return
+
+        # Curses isn't available on all platforms
+        try: import curses
+        except:
+            # If it's not available, then try faking enough to get a
+            # simple progress bar.
+            self.BOL = '\r'
+            self.CLEAR_LINE = '\r' + ' '*self.COLS + '\r'
+            
+        # Check the terminal type.  If we fail, then assume that the
+        # terminal has no capabilities.
+        try: curses.setupterm()
+        except: return
+
+        # Look up numeric capabilities.
+        self.COLS = curses.tigetnum('cols')
+        
+        # Look up string capabilities.
+        for capability in self._STRING_CAPABILITIES:
+            (attrib, cap_name) = capability.split('=')
+            setattr(self, attrib, self._tigetstr(cap_name) or '')
+        if self.BOL and self.CLEAR_EOL:
+            self.CLEAR_LINE = self.BOL+self.CLEAR_EOL
+
+        # Colors
+        set_fg = self._tigetstr('setf')
+        if set_fg:
+            for i,color in zip(range(len(self._COLORS)), self._COLORS):
+                setattr(self, color, curses.tparm(set_fg, i) or '')
+        set_fg_ansi = self._tigetstr('setaf')
+        if set_fg_ansi:
+            for i,color in zip(range(len(self._ANSICOLORS)), self._ANSICOLORS):
+                setattr(self, color, curses.tparm(set_fg_ansi, i) or '')
+
+    def _tigetstr(self, cap_name):
+        # String capabilities can include "delays" of the form "$<2>".
+        # For any modern terminal, we should be able to just ignore
+        # these, so strip them out.
+        import curses
+        cap = curses.tigetstr(cap_name) or ''
+        return re.sub(r'\$<\d+>[/*]?', '', cap)
+
+class ConsoleLogger(log.Logger):
+    def __init__(self, verbosity, progress_mode=None):
+        self._verbosity = verbosity
+        self._progress = None
+        self._message_blocks = []
+        # For ETA display:
+        self._progress_start_time = None
+        # For per-task times:
+        self._task_times = []
+        self._progress_header = None
+
+        self.reported_message_levels = set()
+        """This set contains all the message levels (WARNING, ERROR,
+        etc) that have been reported.  It is used by the options
+        --fail-on-warning etc to determine the return value."""
+        
+        self.suppressed_docstring_warning = 0
+        """This variable will be incremented once every time a
+        docstring warning is reported tothe logger, but the verbosity
+        level is too low for it to be displayed."""
+
+        self.term = TerminalController()
+
+        # Set the progress bar mode.
+        if verbosity >= 2: self._progress_mode = 'list'
+        elif verbosity >= 0:
+            if progress_mode is not None:
+                self._progress_mode = progress_mode
+            elif self.term.COLS < 15:
+                self._progress_mode = 'simple-bar'
+            elif self.term.BOL and self.term.CLEAR_EOL and self.term.UP:
+                self._progress_mode = 'multiline-bar'
+            elif self.term.BOL and self.term.CLEAR_LINE:
+                self._progress_mode = 'bar'
+            else:
+                self._progress_mode = 'simple-bar'
+        else: self._progress_mode = 'hide'
+
+    def start_block(self, header):
+        self._message_blocks.append( (header, []) )
+
+    def end_block(self):
+        header, messages = self._message_blocks.pop()
+        if messages:
+            width = self.term.COLS - 5 - 2*len(self._message_blocks)
+            prefix = self.term.CYAN+self.term.BOLD+'| '+self.term.NORMAL
+            divider = (self.term.CYAN+self.term.BOLD+'+'+'-'*(width-1)+
+                       self.term.NORMAL)
+            # Mark up the header:
+            header = wordwrap(header, right=width-2, splitchars='\\/').rstrip()
+            header = '\n'.join([prefix+self.term.CYAN+l+self.term.NORMAL
+                                for l in header.split('\n')])
+            # Construct the body:
+            body = ''
+            for message in messages:
+                if message.endswith('\n'): body += message
+                else: body += message+'\n'
+            # Indent the body:
+            body = '\n'.join([prefix+'  '+l for l in body.split('\n')])
+            # Put it all together:
+            message = divider + '\n' + header + '\n' + body + '\n'
+            self._report(message)
+            
+    def _format(self, prefix, message, color):
+        """
+        Rewrap the message; but preserve newlines, and don't touch any
+        lines that begin with spaces.
+        """
+        lines = message.split('\n')
+        startindex = indent = len(prefix)
+        for i in range(len(lines)):
+            if lines[i].startswith(' '):
+                lines[i] = ' '*(indent-startindex) + lines[i] + '\n'
+            else:
+                width = self.term.COLS - 5 - 4*len(self._message_blocks)
+                lines[i] = wordwrap(lines[i], indent, width, startindex, '\\/')
+            startindex = 0
+        return color+prefix+self.term.NORMAL+''.join(lines)
+
+    def log(self, level, message):
+        self.reported_message_levels.add(level)
+        if self._verbosity >= -2 and level >= log.ERROR:
+            message = self._format('  Error: ', message, self.term.RED)
+        elif self._verbosity >= -1 and level >= log.WARNING:
+            message = self._format('Warning: ', message, self.term.YELLOW)
+        elif self._verbosity >= 1 and level >= log.DOCSTRING_WARNING:
+            message = self._format('Warning: ', message, self.term.YELLOW)
+        elif self._verbosity >= 3 and level >= log.INFO:
+            message = self._format('   Info: ', message, self.term.NORMAL)
+        elif epydoc.DEBUG and level == log.DEBUG:
+            message = self._format('  Debug: ', message, self.term.CYAN)
+        else:
+            if level >= log.DOCSTRING_WARNING:
+                self.suppressed_docstring_warning += 1
+            return
+            
+        self._report(message)
+
+    def _report(self, message):
+        if not message.endswith('\n'): message += '\n'
+        
+        if self._message_blocks:
+            self._message_blocks[-1][-1].append(message)
+        else:
+            # If we're in the middle of displaying a progress bar,
+            # then make room for the message.
+            if self._progress_mode == 'simple-bar':
+                if self._progress is not None:
+                    print
+                    self._progress = None
+            if self._progress_mode == 'bar':
+                sys.stdout.write(self.term.CLEAR_LINE)
+            if self._progress_mode == 'multiline-bar':
+                sys.stdout.write((self.term.CLEAR_EOL + '\n')*2 +
+                                 self.term.CLEAR_EOL + self.term.UP*2)
+
+            # Display the message message.
+            sys.stdout.write(message)
+            sys.stdout.flush()
+                
+    def progress(self, percent, message=''):
+        percent = min(1.0, percent)
+        message = '%s' % message
+        
+        if self._progress_mode == 'list':
+            if message:
+                print '[%3d%%] %s' % (100*percent, message)
+                sys.stdout.flush()
+                
+        elif self._progress_mode == 'bar':
+            dots = int((self.term.COLS/2-8)*percent)
+            background = '-'*(self.term.COLS/2-8)
+            if len(message) > self.term.COLS/2:
+                message = message[:self.term.COLS/2-3]+'...'
+            sys.stdout.write(self.term.CLEAR_LINE + '%3d%% '%(100*percent) +
+                             self.term.GREEN + '[' + self.term.BOLD +
+                             '='*dots + background[dots:] + self.term.NORMAL +
+                             self.term.GREEN + '] ' + self.term.NORMAL +
+                             message + self.term.BOL)
+            sys.stdout.flush()
+            self._progress = percent
+        elif self._progress_mode == 'multiline-bar':
+            dots = int((self.term.COLS-10)*percent)
+            background = '-'*(self.term.COLS-10)
+            
+            if len(message) > self.term.COLS-10:
+                message = message[:self.term.COLS-10-3]+'...'
+            else:
+                message = message.center(self.term.COLS-10)
+
+            time_elapsed = time.time()-self._progress_start_time
+            if percent > 0:
+                time_remain = (time_elapsed / percent) * (1-percent)
+            else:
+                time_remain = 0
+
+            sys.stdout.write(
+                # Line 1:
+                self.term.CLEAR_EOL + '      ' +
+                '%-8s' % self._timestr(time_elapsed) +
+                self.term.BOLD + 'Progress:'.center(self.term.COLS-26) +
+                self.term.NORMAL + '%8s' % self._timestr(time_remain) + '\n' +
+                # Line 2:
+                self.term.CLEAR_EOL + ('%3d%% ' % (100*percent)) +
+                self.term.GREEN + '[' +  self.term.BOLD + '='*dots +
+                background[dots:] + self.term.NORMAL + self.term.GREEN +
+                ']' + self.term.NORMAL + '\n' +
+                # Line 3:
+                self.term.CLEAR_EOL + '      ' + message + self.term.BOL +
+                self.term.UP + self.term.UP)
+            
+            sys.stdout.flush()
+            self._progress = percent
+        elif self._progress_mode == 'simple-bar':
+            if self._progress is None:
+                sys.stdout.write('  [')
+                self._progress = 0.0
+            dots = int((self.term.COLS-2)*percent)
+            progress_dots = int((self.term.COLS-2)*self._progress)
+            if dots > progress_dots:
+                sys.stdout.write('.'*(dots-progress_dots))
+                sys.stdout.flush()
+                self._progress = percent
+
+    def _timestr(self, dt):
+        dt = int(dt)
+        if dt >= 3600:
+            return '%d:%02d:%02d' % (dt/3600, dt%3600/60, dt%60)
+        else:
+            return '%02d:%02d' % (dt/60, dt%60)
+
+    def start_progress(self, header=None):
+        if self._progress is not None:
+            raise ValueError
+        self._progress = None
+        self._progress_start_time = time.time()
+        self._progress_header = header
+        if self._progress_mode != 'hide' and header:
+            print self.term.BOLD + header + self.term.NORMAL
+
+    def end_progress(self):
+        self.progress(1.)
+        if self._progress_mode == 'bar':
+            sys.stdout.write(self.term.CLEAR_LINE)
+        if self._progress_mode == 'multiline-bar':
+                sys.stdout.write((self.term.CLEAR_EOL + '\n')*2 +
+                                 self.term.CLEAR_EOL + self.term.UP*2)
+        if self._progress_mode == 'simple-bar':
+            print ']'
+        self._progress = None
+        self._task_times.append( (time.time()-self._progress_start_time,
+                                  self._progress_header) )
+
+    def print_times(self):
+        print
+        print 'Timing summary:'
+        total = sum([time for (time, task) in self._task_times])
+        max_t = max([time for (time, task) in self._task_times])
+        for (time, task) in self._task_times:
+            task = task[:31]
+            print '  %s%s %7.1fs' % (task, '.'*(35-len(task)), time),
+            if self.term.COLS > 55:
+                print '|'+'=' * int((self.term.COLS-53) * time / max_t)
+            else:
+                print
+        print
+
+class UnifiedProgressConsoleLogger(ConsoleLogger):
+    def __init__(self, verbosity, stages, progress_mode=None):
+        self.stage = 0
+        self.stages = stages
+        self.task = None
+        ConsoleLogger.__init__(self, verbosity, progress_mode)
+        
+    def progress(self, percent, message=''):
+        #p = float(self.stage-1+percent)/self.stages
+        i = self.stage-1
+        p = ((sum(self.stages[:i]) + percent*self.stages[i]) /
+             float(sum(self.stages)))
+
+        if message is UNKNOWN: message = None
+        if message: message = '%s: %s' % (self.task, message)
+        ConsoleLogger.progress(self, p, message)
+
+    def start_progress(self, header=None):
+        self.task = header
+        if self.stage == 0:
+            ConsoleLogger.start_progress(self)
+        self.stage += 1
+
+    def end_progress(self):
+        if self.stage == len(self.stages):
+            ConsoleLogger.end_progress(self)
+
+    def print_times(self):
+        pass
+
+class HTMLLogger(log.Logger):
+    """
+    A logger used to generate a log of all warnings and messages to an
+    HTML file.
+    """
+    
+    FILENAME = "epydoc-log.html"
+    HEADER = textwrap.dedent('''\
+        <?xml version="1.0" encoding="ascii"?>
+        <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+                  "DTD/xhtml1-transitional.dtd">
+        <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+        <head>
+          <title>Epydoc Log</title>
+          <link rel="stylesheet" href="epydoc.css" type="text/css" />
+        </head>
+        
+        <body bgcolor="white" text="black" link="blue" vlink="#204080"
+              alink="#204080">
+        <h1 class="epydoc">Epydoc Log</h1>
+        <p class="log">Epydoc started at %s</p>''')
+    START_BLOCK = '<div class="log-block"><h2 class="log-hdr">%s</h2>'
+    MESSAGE = ('<div class="log-%s"><b>%s</b>: \n'
+               '%s</div>\n')
+    END_BLOCK = '</div>'
+    FOOTER = "</body>\n</html>\n"
+    
+    def __init__(self, directory, options):
+        self.start_time = time.time()
+        self.out = open(os.path.join(directory, self.FILENAME), 'w')
+        self.out.write(self.HEADER % time.ctime(self.start_time))
+        self.is_empty = True
+        self.options = options
+
+    def write_options(self, options):
+        self.out.write(self.START_BLOCK % 'Epydoc Options')
+        msg = '<table border="0" cellpadding="0" cellspacing="0">\n'
+        opts = [(key, getattr(options, key)) for key in dir(options)
+                if key not in dir(optparse.Values)]
+        opts = [(val==OPTION_DEFAULTS.get(key), key, val)
+                for (key, val) in opts]
+        for is_default, key, val in sorted(opts):
+            css = is_default and 'opt-default' or 'opt-changed'
+            msg += ('<tr valign="top" class="%s"><td valign="top">%s</td>'
+                    '<td valign="top"><tt> = </tt></td>'
+                    '<td valign="top"><tt>%s</tt></td></tr>' %
+                    (css, key, plaintext_to_html(repr(val))))
+        msg += '</table>\n'
+        self.out.write('<div class="log-info">\n%s</div>\n' % msg)
+        self.out.write(self.END_BLOCK)
+
+    def start_block(self, header):
+        self.out.write(self.START_BLOCK % header)
+
+    def end_block(self):
+        self.out.write(self.END_BLOCK)
+
+    def log(self, level, message):
+        if message.endswith("(-v) to display markup errors."): return
+        if level >= log.ERROR:
+            self.out.write(self._message('error', message))
+        elif level >= log.WARNING:
+            self.out.write(self._message('warning', message))
+        elif level >= log.DOCSTRING_WARNING:
+            self.out.write(self._message('docstring warning', message))
+
+    def _message(self, level, message):
+        self.is_empty = False
+        message = plaintext_to_html(message)
+        if '\n' in message:
+            message = '<pre class="log">%s</pre>' % message
+        hdr = ' '.join([w.capitalize() for w in level.split()])
+        return self.MESSAGE % (level.split()[-1], hdr, message)
+
+    def close(self):
+        if self.is_empty:
+            self.out.write('<div class="log-info">'
+                           'No warnings or errors!</div>')
+        self.write_options(self.options)
+        self.out.write('<p class="log">Epydoc finished at %s</p>\n'
+                       '<p class="log">(Elapsed time: %s)</p>' %
+                       (time.ctime(), self._elapsed_time()))
+        self.out.write(self.FOOTER)
+        self.out.close()
+
+    def _elapsed_time(self):
+        secs = int(time.time()-self.start_time)
+        if secs < 60:
+            return '%d seconds' % secs
+        if secs < 3600:
+            return '%d minutes, %d seconds' % (secs/60, secs%60)
+        else:
+            return '%d hours, %d minutes' % (secs/3600, secs%3600)
+            
+
+######################################################################
+## main
+######################################################################
+
+if __name__ == '__main__':
+    cli()
+
diff --git a/epydoc/compat.py b/epydoc/compat.py
new file mode 100644
index 0000000..327d8b4
--- /dev/null
+++ b/epydoc/compat.py
@@ -0,0 +1,250 @@
+# epydoc -- Backwards compatibility
+#
+# Copyright (C) 2005 Edward Loper
+# Author: Edward Loper <edloper at loper.org>
+# URL: <http://epydoc.sf.net>
+#
+# $Id: util.py 956 2006-03-10 01:30:51Z edloper $
+
+"""
+Backwards compatibility with previous versions of Python.
+
+This module provides backwards compatibility by defining several
+functions and classes that were not available in earlier versions of
+Python.  Intented usage:
+
+    >>> from epydoc.compat import *
+
+Currently, epydoc requires Python 2.3+.
+"""
+__docformat__ = 'epytext'
+
+######################################################################
+#{ New in Python 2.4
+######################################################################
+
+# set
+try:
+    set
+except NameError:
+    try:
+        from sets import Set as set, ImmutableSet as frozenset
+    except ImportError:
+        pass # use fallback, in the next section.
+
+# sorted
+try: 
+    sorted
+except NameError:
+    def sorted(iterable, cmp=None, key=None, reverse=False):
+        if key is None:
+            elts = list(iterable)
+        else:
+            elts = [(key(v), v) for v in iterable]
+
+        if reverse: elts.reverse() # stable sort.
+        if cmp is None: elts.sort()
+        else: elts.sort(cmp)
+        if reverse: elts.reverse()
+    
+        if key is None:
+            return elts
+        else:
+            return [v for (k,v) in elts]
+
+# reversed
+try: 
+    reversed
+except NameError:
+    def reversed(iterable):
+        elts = list(iterable)
+        elts.reverse()
+        return elts
+
+######################################################################
+#{ New in Python 2.3
+######################################################################
+# Below is my initial attempt at backporting enough code that 
+# epydoc 3 would run under python 2.2.  However, I'm starting
+# to think that it's not worth the trouble.  At the very least,
+# epydoc's current unicode handling still doesn't work under
+# 2.2 (after the backports below), since the 'xmlcharrefreplace'
+# error handler was introduced in python 2.3.
+
+# # basestring
+# try:
+#     basestring
+# except NameError:
+#     basestring = (str, unicode)
+
+# # sum
+# try:
+#     sum
+# except NameError:
+#     def _add(a,b): return a+b
+#     def sum(vals): return reduce(_add, vals, 0)
+
+# # True & False
+# try:
+#     True
+# except NameError:
+#     True = 1
+#     False = 0
+
+# # enumerate
+# try:
+#     enumerate
+# except NameError:
+#     def enumerate(iterable):
+#         lst = list(iterable)
+#         return zip(range(len(lst)), lst)
+
+# # set
+# try:
+#     set
+# except NameError:
+#     class set(dict):
+#         def __init__(self, elts=()):
+#             dict.__init__(self, [(e,1) for e in elts])
+#         def __repr__(self):
+#             return 'set(%r)' % list(self)
+#         def add(self, key): self[key] = 1
+#         def copy(self):
+#             return set(dict.copy(self))
+#         def difference(self, other):
+#             return set([v for v in self if v not in other])
+#         def difference_udpate(self, other):
+#             newval = self.difference(other)
+#             self.clear(); self.update(newval)
+#         def discard(self, elt):
+#             try: del self[elt]
+#             except: pass
+#         def intersection(self, other):
+#             return self.copy().update(other)
+#         def intersection_update(self, other):
+#             newval = self.intersection(other)
+#             self.clear(); self.update(newval)
+#         def issubset(self, other):
+#             for elt in self:
+#                 if elt not in other: return False
+#             return True
+#         def issuperset(self, other):
+#             for elt in other:
+#                 if elt not in self: return False
+#             return True
+#         def pop(self): self.popitem()[0]
+#         def remove(self, elt): del self[elt]
+#         def symmetric_difference(self, other):
+#             return set([v for v in list(self)+list(other)
+#                         if (v in self)^(v in other)])
+#         def symmatric_difference_update(self, other):
+#             newval = self.symmetric_difference(other)
+#             self.clear(); self.update(newval)
+#         def union(self, other):
+#             return set([v for v in list(self)+list(other)
+#                         if (v in self) or (v in other)])
+#         def union_update(self, other):
+#             newval = self.union(other)
+#             self.clear(); self.update(newval)
+#         def update(self, other):
+#             dict.update(self, set(other))
+
+# # optparse module
+# try:
+#     import optparse
+# except ImportError:
+#     import new, sys, getopt
+#     class _OptionVals:
+#         def __init__(self, vals): self.__dict__.update(vals)
+#     class OptionParser:
+#         def __init__(self, usage=None, version=None):
+#             self.usage = usage
+#             self.version = version
+#             self.shortops = ['h']
+#             self.longops = []
+#             self.option_specs = {}
+#             self.defaults = {}
+#         def fail(self, message, exitval=1):
+#             print >>sys.stderr, message
+#             system.exit(exitval)
+#         def add_option_group(self, group): pass
+#         def set_defaults(self, **defaults):
+#             self.defaults = defaults.copy()
+#         def parse_args(self):
+#             try:
+#                 (opts, names) = getopt.getopt(sys.argv[1:],
+#                                               ''.join(self.shortops),
+#                                               self.longops)
+#             except getopt.GetoptError, e:
+#                 self.fail(e)
+
+#             options = self.defaults.copy()
+#             for (opt,val) in opts:
+#                 if opt == '-h':
+#                     self.fail('No help available')
+#                 if opt not in self.option_specs:
+#                     self.fail('Unknown option %s' % opt)
+#                 (action, dest, const) = self.option_specs[opt]
+#                 if action == 'store':
+#                     options[dest] = val
+#                 elif action == 'store_const':
+#                     options[dest] = const
+#                 elif action == 'count':
+#                     options[dest] = options.get(dest,0)+1
+#                 elif action == 'append':
+#                     options.setdefault(dest, []).append(val)
+#                 else:
+#                     self.fail('unsupported action: %s' % action)
+#             for (action,dest,const) in self.option_specs.values():
+#                 if dest not in options:
+#                     if action == 'count': options[dest] = 0
+#                     elif action == 'append': options[dest] = []
+#                     else: options[dest] = None
+#             for name in names:
+#                 if name.startswith('-'):
+#                     self.fail('names must follow options')
+#             return _OptionVals(options), names
+#     class OptionGroup:
+#         def __init__(self, optparser, name):
+#             self.optparser = optparser
+#             self.name = name
+
+#         def add_option(self, *args, **kwargs):
+#             action = 'store'
+#             dest = None
+#             const = None
+#             for (key,val) in kwargs.items():
+#                 if key == 'action': action = val
+#                 elif key == 'dest': dest = val
+#                 elif key == 'const': const = val
+#                 elif key in ('help', 'metavar'): pass
+#                 else: self.fail('unsupported: %s' % key)
+
+#             if action not in ('store_const', 'store_true', 'store_false',
+#                               'store', 'count', 'append'):
+#                 self.fail('unsupported action: %s' % action)
+
+#             optparser = self.optparser
+#             for arg in args:
+#                 if arg.startswith('--'):
+#                     optparser.longops.append(arg[2:])
+#                 elif arg.startswith('-') and len(arg)==2:
+#                     optparser.shortops += arg[1]
+#                     if action in ('store', 'append'):
+#                         optparser.shortops += ':'
+#                 else:
+#                     self.fail('bad option name %s' % arg)
+#                 if action == 'store_true':
+#                     (action, const) = ('store_const', True)
+#                 if action == 'store_false':
+#                     (action, const) = ('store_const', False)
+#                 optparser.option_specs[arg] = (action, dest, const)
+
+#     # Install a fake module.
+#     optparse = new.module('optparse')
+#     optparse.OptionParser = OptionParser
+#     optparse.OptionGroup = OptionGroup
+#     sys.modules['optparse'] = optparse
+#     # Clean up
+#     del OptionParser, OptionGroup
+
diff --git a/epydoc/docbuilder.py b/epydoc/docbuilder.py
new file mode 100644
index 0000000..1e6918d
--- /dev/null
+++ b/epydoc/docbuilder.py
@@ -0,0 +1,1358 @@
+# epydoc -- Documentation Builder
+#
+# Copyright (C) 2005 Edward Loper
+# Author: Edward Loper <edloper at loper.org>
+# URL: <http://epydoc.sf.net>
+#
+# $Id: docbuilder.py 1683 2008-01-29 22:17:39Z edloper $
+
+"""
+Construct data structures that encode the API documentation for Python
+objects.  These data structures are created using a series of steps:
+
+  1. B{Building docs}: Extract basic information about the objects,
+     and objects that are related to them.  This can be done by
+     introspecting the objects' values (with L{epydoc.docintrospecter}; or
+     by parsing their source code (with L{epydoc.docparser}.
+
+  2. B{Merging}: Combine the information obtained from introspection &
+     parsing each object into a single structure.
+
+  3. B{Linking}: Replace any 'pointers' that were created for imported
+     variables by their target (if it's available).
+  
+  4. B{Naming}: Chose a unique 'canonical name' for each
+     object.
+  
+  5. B{Docstring Parsing}: Parse the docstring of each object, and
+     extract any pertinant information.
+  
+  6. B{Inheritance}: Add information about variables that classes
+     inherit from their base classes.
+
+The documentation information for each individual object is
+represented using an L{APIDoc}; and the documentation for a collection
+of objects is represented using a L{DocIndex}.
+
+The main interface to C{epydoc.docbuilder} consists of two functions:
+
+  - L{build_doc()} -- Builds documentation for a single item, and
+    returns it as an L{APIDoc} object.
+  - L{build_doc_index()} -- Builds documentation for a collection of
+    items, and returns it as a L{DocIndex} object.
+
+The remaining functions are used by these two main functions to
+perform individual steps in the creation of the documentation.
+
+ at group Documentation Construction: build_doc, build_doc_index,
+    _get_docs_from_*, _report_valdoc_progress
+ at group Merging: *MERGE*, *merge*
+ at group Linking: link_imports
+ at group Naming: _name_scores, _unreachable_names, assign_canonical_names,
+    _var_shadows_self, _fix_self_shadowing_var, _unreachable_name_for
+ at group Inheritance: inherit_docs, _inherit_info
+"""
+__docformat__ = 'epytext en'
+
+######################################################################
+## Contents
+######################################################################
+## 1. build_doc() & build_doc_index() -- the main interface.
+## 2. merge_docs() -- helper, used to merge parse & introspect info
+## 3. link_imports() -- helper, used to connect imported vars w/ values
+## 4. assign_canonical_names() -- helper, used to set canonical names
+## 5. inherit_docs() -- helper, used to inherit docs from base classes
+
+######################################################################
+## Imports
+######################################################################
+
+import sys, os, os.path, __builtin__, imp, re, inspect
+from epydoc.apidoc import *
+from epydoc.docintrospecter import introspect_docs
+from epydoc.docparser import parse_docs, ParseError
+from epydoc.docstringparser import parse_docstring
+from epydoc import log
+from epydoc.util import *
+from epydoc.compat import * # Backwards compatibility
+
+######################################################################
+## 1. build_doc()
+######################################################################
+
+class BuildOptions:
+    """
+    Holds the parameters for a documentation building process.
+    """
+    def __init__(self, introspect=True, parse=True,
+                 exclude_introspect=None, exclude_parse=None,
+                 add_submodules=True):
+        self.introspect = introspect
+        self.parse = parse
+        self.exclude_introspect = exclude_introspect
+        self.exclude_parse = exclude_parse
+        self.add_submodules = add_submodules
+
+        # Test for pattern syntax and compile them into pattern objects.
+        try:
+            self._introspect_regexp = (exclude_introspect
+                and re.compile(exclude_introspect) or None)
+            self._parse_regexp = (exclude_parse
+                and re.compile(exclude_parse) or None)
+        except Exception, exc:
+            log.error('Error in regular expression pattern: %s' % exc)
+            raise
+
+    def must_introspect(self, name):
+        """
+        Return C{True} if a module is to be introsepcted with the current
+        settings.
+
+        @param name: The name of the module to test
+        @type name: L{DottedName} or C{str}
+        """
+        return self.introspect \
+            and not self._matches_filter(name, self._introspect_regexp)
+
+    def must_parse(self, name):
+        """
+        Return C{True} if a module is to be parsed with the current settings.
+
+        @param name: The name of the module to test
+        @type name: L{DottedName} or C{str}
+        """
+        return self.parse \
+            and not self._matches_filter(name, self._parse_regexp)
+
+    def _matches_filter(self, name, regexp):
+        """
+        Test if a module name matches a pattern.
+
+        @param name: The name of the module to test
+        @type name: L{DottedName} or C{str}
+        @param regexp: The pattern object to match C{name} against.
+            If C{None}, return C{False}
+        @type regexp: C{pattern}
+        @return: C{True} if C{name} in dotted format matches C{regexp},
+            else C{False}
+        @rtype: C{bool}
+        """
+        if regexp is None: return False
+
+        if isinstance(name, DottedName):
+            name = str(name)
+
+        return bool(regexp.search(name))
+
+
+def build_doc(item, introspect=True, parse=True, add_submodules=True,
+              exclude_introspect=None, exclude_parse=None):
+    """
+    Build API documentation for a given item, and return it as
+    an L{APIDoc} object.
+
+    @rtype: L{APIDoc}
+    @param item: The item to document, specified using any of the
+        following:
+          - A string, naming a python package directory
+            (e.g., C{'epydoc/markup'})
+          - A string, naming a python file
+            (e.g., C{'epydoc/docparser.py'})
+          - A string, naming a python object
+            (e.g., C{'epydoc.docparser.DocParser'})
+          - Any (non-string) python object
+            (e.g., C{list.append})
+    @param introspect: If true, then use introspection to examine the
+        specified items.  Otherwise, just use parsing.
+    @param parse: If true, then use parsing to examine the specified
+        items.  Otherwise, just use introspection.
+    """
+    docindex = build_doc_index([item], introspect, parse, add_submodules,
+                               exclude_introspect=exclude_introspect,
+                               exclude_parse=exclude_parse)
+    return docindex.root[0]
+
+def build_doc_index(items, introspect=True, parse=True, add_submodules=True,
+                    exclude_introspect=None, exclude_parse=None):
+    """
+    Build API documentation for the given list of items, and
+    return it in the form of a L{DocIndex}.
+
+    @rtype: L{DocIndex}
+    @param items: The items to document, specified using any of the
+        following:
+          - A string, naming a python package directory
+            (e.g., C{'epydoc/markup'})
+          - A string, naming a python file
+            (e.g., C{'epydoc/docparser.py'})
+          - A string, naming a python object
+            (e.g., C{'epydoc.docparser.DocParser'})
+          - Any (non-string) python object
+            (e.g., C{list.append})
+    @param introspect: If true, then use introspection to examine the
+        specified items.  Otherwise, just use parsing.
+    @param parse: If true, then use parsing to examine the specified
+        items.  Otherwise, just use introspection.
+    """
+    try:
+        options = BuildOptions(parse=parse, introspect=introspect,
+            exclude_introspect=exclude_introspect, exclude_parse=exclude_parse,
+            add_submodules=add_submodules)
+    except Exception, e:
+        # log.error already reported by constructor.
+        return None
+
+    # Get the basic docs for each item.
+    doc_pairs = _get_docs_from_items(items, options)
+
+    # Merge the introspection & parse docs.
+    if options.parse and options.introspect:
+        log.start_progress('Merging parsed & introspected information')
+        docs = []
+        for i, (introspect_doc, parse_doc) in enumerate(doc_pairs):
+            if introspect_doc is not None and parse_doc is not None:
+                if introspect_doc.canonical_name not in (None, UNKNOWN):
+                    name = introspect_doc.canonical_name
+                else:
+                    name = parse_doc.canonical_name
+                log.progress(float(i)/len(doc_pairs), name)
+                docs.append(merge_docs(introspect_doc, parse_doc))
+            elif introspect_doc is not None:
+                docs.append(introspect_doc)
+            elif parse_doc is not None:
+                docs.append(parse_doc)
+        log.end_progress()
+    elif options.introspect:
+        docs = [doc_pair[0] for doc_pair in doc_pairs if doc_pair[0]]
+    else:
+        docs = [doc_pair[1] for doc_pair in doc_pairs if doc_pair[1]]
+
+    if len(docs) == 0:
+        log.error('Nothing left to document!')
+        return None
+
+    # Collect the docs into a single index.
+    docindex = DocIndex(docs)
+
+    # Replace any proxy valuedocs that we got from importing with
+    # their targets.
+    if options.parse:
+        log.start_progress('Linking imported variables')
+        valdocs = sorted(docindex.reachable_valdocs(
+            imports=False, submodules=False, packages=False, subclasses=False))
+        for i, val_doc in enumerate(valdocs):
+            _report_valdoc_progress(i, val_doc, valdocs)
+            link_imports(val_doc, docindex)
+        log.end_progress()
+
+    # Assign canonical names.
+    log.start_progress('Indexing documentation')
+    for i, val_doc in enumerate(docindex.root):
+        log.progress(float(i)/len(docindex.root), val_doc.canonical_name)
+        assign_canonical_names(val_doc, val_doc.canonical_name, docindex)
+    log.end_progress()
+
+    # Set overrides pointers
+    log.start_progress('Checking for overridden methods')
+    valdocs = sorted(docindex.reachable_valdocs(
+        imports=False, submodules=False, packages=False, subclasses=False))
+    for i, val_doc in enumerate(valdocs):
+        if isinstance(val_doc, ClassDoc):
+            percent = float(i)/len(valdocs)
+            log.progress(percent, val_doc.canonical_name)
+            find_overrides(val_doc)
+    log.end_progress()
+    
+    # Parse the docstrings for each object.
+    log.start_progress('Parsing docstrings')
+    suppress_warnings = set(valdocs).difference(
+        docindex.reachable_valdocs(
+            imports=False, submodules=False, packages=False, subclasses=False,
+            bases=False, overrides=True))
+    for i, val_doc in enumerate(valdocs):
+        _report_valdoc_progress(i, val_doc, valdocs)
+        # the value's docstring
+        parse_docstring(val_doc, docindex, suppress_warnings)
+        # the value's variables' docstrings
+        if (isinstance(val_doc, NamespaceDoc) and
+            val_doc.variables not in (None, UNKNOWN)):
+            for var_doc in val_doc.variables.values():
+                # Now we have a chance to propagate the defining module
+                # to objects for which introspection is not possible,
+                # such as properties.
+                if (isinstance(var_doc.value, ValueDoc)
+                    and var_doc.value.defining_module is UNKNOWN):
+                    var_doc.value.defining_module = val_doc.defining_module
+                parse_docstring(var_doc, docindex, suppress_warnings)
+    log.end_progress()
+
+    # Take care of inheritance.
+    log.start_progress('Inheriting documentation')
+    for i, val_doc in enumerate(valdocs):
+        if isinstance(val_doc, ClassDoc):
+            percent = float(i)/len(valdocs)
+            log.progress(percent, val_doc.canonical_name)
+            inherit_docs(val_doc)
+    log.end_progress()
+
+    # Initialize the groups & sortedvars attributes.
+    log.start_progress('Sorting & Grouping')
+    for i, val_doc in enumerate(valdocs):
+        if isinstance(val_doc, NamespaceDoc):
+            percent = float(i)/len(valdocs)
+            log.progress(percent, val_doc.canonical_name)
+            val_doc.init_sorted_variables()
+            val_doc.init_variable_groups()
+            if isinstance(val_doc, ModuleDoc):
+                val_doc.init_submodule_groups()
+            val_doc.report_unused_groups()
+    log.end_progress()
+
+    return docindex
+
+def _report_valdoc_progress(i, val_doc, val_docs):
+    if (isinstance(val_doc, (ModuleDoc, ClassDoc)) and
+        val_doc.canonical_name is not UNKNOWN and
+        not val_doc.canonical_name[0].startswith('??')):
+        log.progress(float(i)/len(val_docs), val_doc.canonical_name)
+
+#/////////////////////////////////////////////////////////////////
+# Documentation Generation
+#/////////////////////////////////////////////////////////////////
+
+def _get_docs_from_items(items, options):
+
+    # Start the progress bar.
+    log.start_progress('Building documentation')
+    progress_estimator = _ProgressEstimator(items)
+
+    # Check for duplicate item names.
+    item_set = set()
+    for item in items[:]:
+        if item in item_set:
+            log.warning("Name %r given multiple times" % item)
+            items.remove(item)
+        item_set.add(item)
+
+    # Keep track of what top-level canonical names we've assigned, to
+    # make sure there are no naming conflicts.  This dict maps
+    # canonical names to the item names they came from (so we can print
+    # useful error messages).
+    canonical_names = {}
+
+    # Collect (introspectdoc, parsedoc) pairs for each item.
+    doc_pairs = []
+    for item in items:
+        if isinstance(item, basestring):
+            if is_module_file(item):
+                doc_pairs.append(_get_docs_from_module_file(
+                    item, options, progress_estimator))
+            elif is_package_dir(item):
+                pkgfile = os.path.abspath(os.path.join(item, '__init__'))
+                doc_pairs.append(_get_docs_from_module_file(
+                    pkgfile, options, progress_estimator))
+            elif os.path.isfile(item):
+                doc_pairs.append(_get_docs_from_pyscript(
+                    item, options, progress_estimator))
+            elif hasattr(__builtin__, item):
+                val = getattr(__builtin__, item)
+                doc_pairs.append(_get_docs_from_pyobject(
+                    val, options, progress_estimator))
+            elif is_pyname(item):
+                doc_pairs.append(_get_docs_from_pyname(
+                    item, options, progress_estimator))
+            elif os.path.isdir(item):
+                log.error("Directory %r is not a package" % item)
+                continue
+            elif os.path.isfile(item):
+                log.error("File %s is not a Python module" % item)
+                continue
+            else:
+                log.error("Could not find a file or object named %s" %
+                          item)
+                continue
+        else:
+            doc_pairs.append(_get_docs_from_pyobject(
+                item, options, progress_estimator))
+
+        # Make sure there are no naming conflicts.
+        name = (getattr(doc_pairs[-1][0], 'canonical_name', None) or
+                getattr(doc_pairs[-1][1], 'canonical_name', None))
+        if name in canonical_names:
+            log.error(
+                'Two of the specified items, %r and %r, have the same '
+                'canonical name ("%s").  This may mean that you specified '
+                'two different files that both use the same module name.  '
+                'Ignoring the second item (%r)' %
+                (canonical_names[name], item, name, canonical_names[name]))
+            doc_pairs.pop()
+        else:
+            canonical_names[name] = item                
+
+        # This will only have an effect if doc_pairs[-1] contains a
+        # package's docs.  The 'not is_module_file(item)' prevents
+        # us from adding subdirectories if they explicitly specify
+        # a package's __init__.py file.
+        if options.add_submodules and not is_module_file(item):
+            doc_pairs += _get_docs_from_submodules(
+                item, doc_pairs[-1], options, progress_estimator)
+
+    log.end_progress()
+    return doc_pairs
+
+def _get_docs_from_pyobject(obj, options, progress_estimator):
+    progress_estimator.complete += 1
+    log.progress(progress_estimator.progress(), repr(obj))
+    
+    if not options.introspect:
+        log.error("Cannot get docs for Python objects without "
+                  "introspecting them.")
+            
+    introspect_doc = parse_doc = None
+    introspect_error = parse_error = None
+    try:
+        introspect_doc = introspect_docs(value=obj)
+    except ImportError, e:
+        log.error(e)
+        return (None, None)
+    if options.parse:
+        if introspect_doc.canonical_name is not None:
+            prev_introspect = options.introspect
+            options.introspect = False
+            try:
+                _, parse_docs = _get_docs_from_pyname(
+                    str(introspect_doc.canonical_name), options,
+                    progress_estimator, suppress_warnings=True)
+            finally:
+                options.introspect = prev_introspect
+
+    # We need a name:
+    if introspect_doc.canonical_name in (None, UNKNOWN):
+        if hasattr(obj, '__name__'):
+            introspect_doc.canonical_name = DottedName(
+                DottedName.UNREACHABLE, obj.__name__)
+        else:
+            introspect_doc.canonical_name = DottedName(
+                DottedName.UNREACHABLE)
+    return (introspect_doc, parse_doc)
+
+def _get_docs_from_pyname(name, options, progress_estimator,
+                          suppress_warnings=False):
+    progress_estimator.complete += 1
+    if options.must_introspect(name) or options.must_parse(name):
+        log.progress(progress_estimator.progress(), name)
+    
+    introspect_doc = parse_doc = None
+    introspect_error = parse_error = None
+    if options.must_introspect(name):
+        try:
+            introspect_doc = introspect_docs(name=name)
+        except ImportError, e:
+            introspect_error = str(e)
+    if options.must_parse(name):
+        try:
+            parse_doc = parse_docs(name=name)
+        except ParseError, e:
+            parse_error = str(e)
+        except ImportError, e:
+            # If we get here, then there' probably no python source
+            # available; don't bother to generate a warnining.
+            pass
+        
+    # Report any errors we encountered.
+    if not suppress_warnings:
+        _report_errors(name, introspect_doc, parse_doc,
+                       introspect_error, parse_error)
+
+    # Return the docs we found.
+    return (introspect_doc, parse_doc)
+
+def _get_docs_from_pyscript(filename, options, progress_estimator):
+    # [xx] I should be careful about what names I allow as filenames,
+    # and maybe do some munging to prevent problems.
+
+    introspect_doc = parse_doc = None
+    introspect_error = parse_error = None
+    if options.introspect:
+        try:
+            introspect_doc = introspect_docs(filename=filename, is_script=True)
+            if introspect_doc.canonical_name is UNKNOWN:
+                introspect_doc.canonical_name = munge_script_name(filename)
+        except ImportError, e:
+            introspect_error = str(e)
+    if options.parse:
+        try:
+            parse_doc = parse_docs(filename=filename, is_script=True)
+        except ParseError, e:
+            parse_error = str(e)
+        except ImportError, e:
+            parse_error = str(e)
+                
+    # Report any errors we encountered.
+    _report_errors(filename, introspect_doc, parse_doc,
+                   introspect_error, parse_error)
+
+    # Return the docs we found.
+    return (introspect_doc, parse_doc)
+    
+def _get_docs_from_module_file(filename, options, progress_estimator,
+                               parent_docs=(None,None)):
+    """
+    Construct and return the API documentation for the python
+    module with the given filename.
+
+    @param parent_docs: The C{ModuleDoc} of the containing package.
+        If C{parent_docs} is not provided, then this method will
+        check if the given filename is contained in a package; and
+        if so, it will construct a stub C{ModuleDoc} for the
+        containing package(s).  C{parent_docs} is a tuple, where
+        the first element is the parent from introspection, and
+        the second element is the parent from parsing.
+    """
+    # Record our progress.
+    modulename = os.path.splitext(os.path.split(filename)[1])[0]
+    if modulename == '__init__':
+        modulename = os.path.split(os.path.split(filename)[0])[1]
+    if parent_docs[0]:
+        modulename = DottedName(parent_docs[0].canonical_name, modulename)
+    elif parent_docs[1]:
+        modulename = DottedName(parent_docs[1].canonical_name, modulename)
+    if options.must_introspect(modulename) or options.must_parse(modulename):
+        log.progress(progress_estimator.progress(),
+                     '%s (%s)' % (modulename, filename))
+    progress_estimator.complete += 1
+    
+    # Normalize the filename.
+    filename = os.path.normpath(os.path.abspath(filename))
+
+    # When possible, use the source version of the file.
+    try:
+        filename = py_src_filename(filename)
+        src_file_available = True
+    except ValueError:
+        src_file_available = False
+
+    # Get the introspected & parsed docs (as appropriate)
+    introspect_doc = parse_doc = None
+    introspect_error = parse_error = None
+    if options.must_introspect(modulename):
+        try:
+            introspect_doc = introspect_docs(
+                filename=filename, context=parent_docs[0])
+            if introspect_doc.canonical_name is UNKNOWN:
+                introspect_doc.canonical_name = modulename
+        except ImportError, e:
+            introspect_error = str(e)
+    if src_file_available and options.must_parse(modulename):
+        try:
+            parse_doc = parse_docs(
+                filename=filename, context=parent_docs[1])
+        except ParseError, e:
+            parse_error = str(e)
+        except ImportError, e:
+            parse_error = str(e)
+
+    # Report any errors we encountered.
+    _report_errors(filename, introspect_doc, parse_doc,
+                   introspect_error, parse_error)
+
+    # Return the docs we found.
+    return (introspect_doc, parse_doc)
+
+def _get_docs_from_submodules(item, pkg_docs, options, progress_estimator):
+    # Extract the package's __path__.
+    if isinstance(pkg_docs[0], ModuleDoc) and pkg_docs[0].is_package:
+        pkg_path = pkg_docs[0].path
+        package_dir = os.path.split(pkg_docs[0].filename)[0]
+    elif isinstance(pkg_docs[1], ModuleDoc) and pkg_docs[1].is_package:
+        pkg_path = pkg_docs[1].path
+        package_dir = os.path.split(pkg_docs[1].filename)[0]
+    else:
+        return []
+
+    module_filenames = {}
+    subpackage_dirs = set()
+    for subdir in pkg_path:
+        if os.path.isdir(subdir):
+            for name in os.listdir(subdir):
+                filename = os.path.join(subdir, name)
+                # Is it a valid module filename?
+                if is_module_file(filename):
+                    basename = os.path.splitext(filename)[0]
+                    if os.path.split(basename)[1] != '__init__':
+                        module_filenames[basename] = filename
+                # Is it a valid package filename?
+                if is_package_dir(filename):
+                    subpackage_dirs.add(filename)
+
+    # Update our estimate of the number of modules in this package.
+    progress_estimator.revise_estimate(item, module_filenames.items(),
+                                       subpackage_dirs)
+
+    docs = [pkg_docs]
+    for module_filename in module_filenames.values():
+        d = _get_docs_from_module_file(
+            module_filename, options, progress_estimator, pkg_docs)
+        docs.append(d)
+    for subpackage_dir in subpackage_dirs:
+        subpackage_file = os.path.join(subpackage_dir, '__init__')
+        docs.append(_get_docs_from_module_file(
+            subpackage_file, options, progress_estimator, pkg_docs))
+        docs += _get_docs_from_submodules(
+            subpackage_dir, docs[-1], options, progress_estimator)
+    return docs
+
+def _report_errors(name, introspect_doc, parse_doc,
+                   introspect_error, parse_error):
+    hdr = 'In %s:\n' % name
+    if introspect_doc == parse_doc == None:
+        log.start_block('%sNo documentation available!' % hdr)
+        if introspect_error:
+            log.error('Import failed:\n%s' % introspect_error)
+        if parse_error:
+            log.error('Source code parsing failed:\n%s' % parse_error)
+        log.end_block()
+    elif introspect_error:
+        log.start_block('%sImport failed (but source code parsing '
+                        'was successful).' % hdr)
+        log.error(introspect_error)
+        log.end_block()
+    elif parse_error:
+        log.start_block('%sSource code parsing failed (but '
+                        'introspection was successful).' % hdr)
+        log.error(parse_error)
+        log.end_block()
+
+
+#/////////////////////////////////////////////////////////////////
+# Progress Estimation (for Documentation Generation)
+#/////////////////////////////////////////////////////////////////
+
+class _ProgressEstimator:
+    """
+    Used to keep track of progress when generating the initial docs
+    for the given items.  (It is not known in advance how many items a
+    package directory will contain, since it might depend on those
+    packages' __path__ values.)
+    """
+    def __init__(self, items):
+        self.est_totals = {}
+        self.complete = 0
+        
+        for item in items:
+            if is_package_dir(item):
+                self.est_totals[item] = self._est_pkg_modules(item)
+            else:
+                self.est_totals[item] = 1
+
+    def progress(self):
+        total = sum(self.est_totals.values())
+        return float(self.complete) / total
+
+    def revise_estimate(self, pkg_item, modules, subpackages):
+        del self.est_totals[pkg_item]
+        for item in modules:
+            self.est_totals[item] = 1
+        for item in subpackages:
+            self.est_totals[item] = self._est_pkg_modules(item)
+
+    def _est_pkg_modules(self, package_dir):
+        num_items = 0
+        
+        if is_package_dir(package_dir):
+            for name in os.listdir(package_dir):
+                filename = os.path.join(package_dir, name)
+                if is_module_file(filename):
+                    num_items += 1
+                elif is_package_dir(filename):
+                    num_items += self._est_pkg_modules(filename)
+                    
+        return num_items
+        
+######################################################################
+## Doc Merger
+######################################################################
+
+MERGE_PRECEDENCE = {
+    'repr': 'parse',
+
+    # The names we get from introspection match the names that users
+    # can actually use -- i.e., they take magic into account.
+    'canonical_name': 'introspect',
+
+    # Only fall-back on the parser for is_imported if the introspecter
+    # isn't sure.  Otherwise, we can end up thinking that vars
+    # containing modules are not imported, which can cause external
+    # modules to show up in the docs (sf bug #1653486)
+    'is_imported': 'introspect',
+
+    # The parser can tell if an assignment creates an alias or not.
+    'is_alias': 'parse',
+
+    # The parser is better able to determine what text file something
+    # came from; e.g., it can't be fooled by 'covert' imports.
+    'docformat': 'parse',
+
+    # The parse should be able to tell definitively whether a module
+    # is a package or not.
+    'is_package': 'parse',
+
+    # Extract the sort spec from the order in which values are defined
+    # in the source file.
+    'sort_spec': 'parse',
+    
+    'submodules': 'introspect',
+
+    # The filename used by 'parse' is the source file.
+    'filename': 'parse',
+
+    # 'parse' is more likely to get the encoding right, but
+    # 'introspect' will handle programatically generated docstrings.
+    # Which is better?
+    'docstring': 'introspect',
+    }
+"""Indicates whether information from introspection or parsing should be
+given precedence, for specific attributes.  This dictionary maps from
+attribute names to either C{'introspect'} or C{'parse'}."""
+
+DEFAULT_MERGE_PRECEDENCE = 'introspect'
+"""Indicates whether information from introspection or parsing should be
+given precedence.  Should be either C{'introspect'} or C{'parse'}"""
+
+_attribute_mergefunc_registry = {}
+def register_attribute_mergefunc(attrib, mergefunc):
+    """
+    Register an attribute merge function.  This function will be
+    called by L{merge_docs()} when it needs to merge the attribute
+    values of two C{APIDoc}s.
+
+    @param attrib: The name of the attribute whose values are merged
+    by C{mergefunc}.
+
+    @param mergefunc: The merge function, whose sinature is:
+
+    >>> def mergefunc(introspect_val, parse_val, precedence, cyclecheck, path):
+    ...     return calculate_merged_value(introspect_val, parse_val)
+
+    Where C{introspect_val} and C{parse_val} are the two values to
+    combine; C{precedence} is a string indicating which value takes
+    precedence for this attribute (C{'introspect'} or C{'parse'});
+    C{cyclecheck} is a value used by C{merge_docs()} to make sure that
+    it only visits each pair of docs once; and C{path} is a string
+    describing the path that was taken from the root to this
+    attribute (used to generate log messages).
+
+    If the merge function needs to call C{merge_docs}, then it should
+    pass C{cyclecheck} and C{path} back in.  (When appropriate, a
+    suffix should be added to C{path} to describe the path taken to
+    the merged values.)
+    """
+    _attribute_mergefunc_registry[attrib] = mergefunc
+
+def merge_docs(introspect_doc, parse_doc, cyclecheck=None, path=None):
+    """
+    Merge the API documentation information that was obtained from
+    introspection with information that was obtained from parsing.
+    C{introspect_doc} and C{parse_doc} should be two C{APIDoc} instances
+    that describe the same object.  C{merge_docs} combines the
+    information from these two instances, and returns the merged
+    C{APIDoc}.
+
+    If C{introspect_doc} and C{parse_doc} are compatible, then they will
+    be I{merged} -- i.e., they will be coerced to a common class, and
+    their state will be stored in a shared dictionary.  Once they have
+    been merged, any change made to the attributes of one will affect
+    the other.  The value for the each of the merged C{APIDoc}'s
+    attributes is formed by combining the values of the source
+    C{APIDoc}s' attributes, as follows:
+
+      - If either of the source attributes' value is C{UNKNOWN}, then
+        use the other source attribute's value.
+      - Otherwise, if an attribute merge function has been registered
+        for the attribute, then use that function to calculate the
+        merged value from the two source attribute values.
+      - Otherwise, if L{MERGE_PRECEDENCE} is defined for the
+        attribute, then use the attribute value from the source that
+        it indicates.
+      - Otherwise, use the attribute value from the source indicated
+        by L{DEFAULT_MERGE_PRECEDENCE}.
+
+    If C{introspect_doc} and C{parse_doc} are I{not} compatible (e.g., if
+    their values have incompatible types), then C{merge_docs()} will
+    simply return either C{introspect_doc} or C{parse_doc}, depending on
+    the value of L{DEFAULT_MERGE_PRECEDENCE}.  The two input
+    C{APIDoc}s will not be merged or modified in any way.
+
+    @param cyclecheck, path: These arguments should only be provided
+        when C{merge_docs()} is called by an attribute merge
+        function.  See L{register_attribute_mergefunc()} for more
+        details.
+    """
+    assert isinstance(introspect_doc, APIDoc)
+    assert isinstance(parse_doc, APIDoc)
+
+    if cyclecheck is None:
+        cyclecheck = set()
+        if introspect_doc.canonical_name not in (None, UNKNOWN):
+            path = '%s' % introspect_doc.canonical_name
+        elif parse_doc.canonical_name not in (None, UNKNOWN):
+            path = '%s' % parse_doc.canonical_name
+        else:
+            path = '??'
+
+    # If we've already examined this pair, then there's nothing
+    # more to do.  The reason that we check id's here is that we
+    # want to avoid hashing the APIDoc objects for now, so we can
+    # use APIDoc.merge_and_overwrite() later.
+    if (id(introspect_doc), id(parse_doc)) in cyclecheck:
+        return introspect_doc
+    cyclecheck.add( (id(introspect_doc), id(parse_doc)) )
+
+    # If these two are already merged, then we're done.  (Two
+    # APIDoc's compare equal iff they are identical or have been
+    # merged.)
+    if introspect_doc == parse_doc:
+        return introspect_doc
+
+    # If both values are GenericValueDoc, then we don't want to merge
+    # them.  E.g., we don't want to merge 2+2 with 4.  So just copy
+    # the parse_doc's parse_repr to introspect_doc, & return it.
+    # (In particular, do *not* call merge_and_overwrite.)
+    if type(introspect_doc) == type(parse_doc) == GenericValueDoc:
+        if parse_doc.parse_repr is not UNKNOWN:
+            introspect_doc.parse_repr = parse_doc.parse_repr
+        introspect_doc.docs_extracted_by = 'both'
+        return introspect_doc
+
+    # Perform several sanity checks here -- if we accidentally
+    # merge values that shouldn't get merged, then bad things can
+    # happen.
+    mismatch = None
+    if (introspect_doc.__class__ != parse_doc.__class__ and
+        not (issubclass(introspect_doc.__class__, parse_doc.__class__) or
+             issubclass(parse_doc.__class__, introspect_doc.__class__))):
+        mismatch = ("value types don't match -- i=%r, p=%r." %
+                    (introspect_doc.__class__, parse_doc.__class__))
+    if (isinstance(introspect_doc, ValueDoc) and
+        isinstance(parse_doc, ValueDoc)):
+        if (introspect_doc.pyval is not UNKNOWN and
+            parse_doc.pyval is not UNKNOWN and
+            introspect_doc.pyval is not parse_doc.pyval):
+            mismatch = "values don't match."
+        elif (introspect_doc.canonical_name not in (None, UNKNOWN) and
+            parse_doc.canonical_name not in (None, UNKNOWN) and
+            introspect_doc.canonical_name != parse_doc.canonical_name):
+            mismatch = "canonical names don't match."
+    if mismatch is not None:
+        log.info("Not merging the parsed & introspected values of %s, "
+                 "since their %s" % (path, mismatch))
+        if DEFAULT_MERGE_PRECEDENCE == 'introspect':
+            return introspect_doc
+        else:
+            return parse_doc
+
+    # If one apidoc's class is a superclass of the other's, then
+    # specialize it to the more specific class.
+    if introspect_doc.__class__ is not parse_doc.__class__:
+        if issubclass(introspect_doc.__class__, parse_doc.__class__):
+            parse_doc.specialize_to(introspect_doc.__class__)
+        if issubclass(parse_doc.__class__, introspect_doc.__class__):
+            introspect_doc.specialize_to(parse_doc.__class__)
+    assert introspect_doc.__class__ is parse_doc.__class__
+
+    # The posargs and defaults are tied together -- if we merge
+    # the posargs one way, then we need to merge the defaults the
+    # same way.  So check them first.  (This is a minor hack)
+    if (isinstance(introspect_doc, RoutineDoc) and
+        isinstance(parse_doc, RoutineDoc)):
+        _merge_posargs_and_defaults(introspect_doc, parse_doc, path)
+    
+    # Merge the two api_doc's attributes.
+    for attrib in set(introspect_doc.__dict__.keys() +
+                      parse_doc.__dict__.keys()):
+        # Be sure not to merge any private attributes (especially
+        # __mergeset or __has_been_hashed!)
+        if attrib.startswith('_'): continue
+        merge_attribute(attrib, introspect_doc, parse_doc,
+                             cyclecheck, path)
+
+    # Set the dictionaries to be shared.
+    return introspect_doc.merge_and_overwrite(parse_doc)
+
+def _merge_posargs_and_defaults(introspect_doc, parse_doc, path):
+    # If either is unknown, then let merge_attrib handle it.
+    if introspect_doc.posargs is UNKNOWN or parse_doc.posargs is UNKNOWN:
+        return 
+        
+    # If the introspected doc just has '...', then trust the parsed doc.
+    if introspect_doc.posargs == ['...'] and parse_doc.posargs != ['...']:
+        introspect_doc.posargs = parse_doc.posargs
+        introspect_doc.posarg_defaults = parse_doc.posarg_defaults
+
+    # If they are incompatible, then check the precedence.
+    elif introspect_doc.posargs != parse_doc.posargs:
+        log.info("Not merging the parsed & introspected arg "
+                 "lists for %s, since they don't match (%s vs %s)"
+                  % (path, introspect_doc.posargs, parse_doc.posargs))
+        if (MERGE_PRECEDENCE.get('posargs', DEFAULT_MERGE_PRECEDENCE) ==
+            'introspect'):
+            parse_doc.posargs = introspect_doc.posargs
+            parse_doc.posarg_defaults = introspect_doc.posarg_defaults
+        else:
+            introspect_doc.posargs = parse_doc.posargs
+            introspect_doc.posarg_defaults = parse_doc.posarg_defaults
+
+def merge_attribute(attrib, introspect_doc, parse_doc, cyclecheck, path):
+    precedence = MERGE_PRECEDENCE.get(attrib, DEFAULT_MERGE_PRECEDENCE)
+    if precedence not in ('parse', 'introspect'):
+        raise ValueError('Bad precedence value %r' % precedence)
+    
+    if (getattr(introspect_doc, attrib) is UNKNOWN and
+        getattr(parse_doc, attrib) is not UNKNOWN):
+        setattr(introspect_doc, attrib, getattr(parse_doc, attrib))
+    elif (getattr(introspect_doc, attrib) is not UNKNOWN and
+          getattr(parse_doc, attrib) is UNKNOWN):
+        setattr(parse_doc, attrib, getattr(introspect_doc, attrib))
+    elif (getattr(introspect_doc, attrib) is UNKNOWN and
+          getattr(parse_doc, attrib) is UNKNOWN):
+        pass
+    else:
+        # Both APIDoc objects have values; we need to merge them.
+        introspect_val = getattr(introspect_doc, attrib)
+        parse_val = getattr(parse_doc, attrib)
+        if attrib in _attribute_mergefunc_registry:
+            handler = _attribute_mergefunc_registry[attrib]
+            merged_val = handler(introspect_val, parse_val, precedence,
+                                 cyclecheck, path)
+        elif precedence == 'introspect':
+            merged_val = introspect_val
+        elif precedence == 'parse':
+            merged_val = parse_val
+
+        setattr(introspect_doc, attrib, merged_val)
+        setattr(parse_doc, attrib, merged_val)
+
+def merge_variables(varlist1, varlist2, precedence, cyclecheck, path):
+    # Merge all variables that are in both sets.
+    for varname, var1 in varlist1.items():
+        var2 = varlist2.get(varname)
+        if var2 is not None:
+            var = merge_docs(var1, var2, cyclecheck, path+'.'+varname)
+            varlist1[varname] = var
+            varlist2[varname] = var
+
+    # Copy any variables that are not in varlist1 over.
+    for varname, var in varlist2.items():
+        varlist1.setdefault(varname, var)
+
+    return varlist1
+
+def merge_value(value1, value2, precedence, cyclecheck, path):
+    assert value1 is not None and value2 is not None
+    return merge_docs(value1, value2, cyclecheck, path)
+
+def merge_overrides(v1, v2, precedence, cyclecheck, path):
+    return merge_value(v1, v2, precedence, cyclecheck, path+'.<overrides>')
+def merge_fget(v1, v2, precedence, cyclecheck, path):
+    return merge_value(v1, v2, precedence, cyclecheck, path+'.fget')
+def merge_fset(v1, v2, precedence, cyclecheck, path):
+    return merge_value(v1, v2, precedence, cyclecheck, path+'.fset')
+def merge_fdel(v1, v2, precedence, cyclecheck, path):
+    return merge_value(v1, v2, precedence, cyclecheck, path+'.fdel')
+
+def merge_proxy_for(v1, v2, precedence, cyclecheck, path):
+    # Anything we got from introspection shouldn't have a proxy_for
+    # attribute -- it should be the actual object's documentation.
+    return v1
+
+def merge_bases(baselist1, baselist2, precedence, cyclecheck, path):
+    # Be careful here -- if we get it wrong, then we could end up
+    # merging two unrelated classes, which could lead to bad
+    # things (e.g., a class that's its own subclass).  So only
+    # merge two bases if we're quite sure they're the same class.
+    # (In particular, if they have the same canonical name.)
+
+    # If the lengths don't match up, then give up.  This is most
+    # often caused by __metaclass__.
+    if len(baselist1) != len(baselist2):
+        log.info("Not merging the introspected & parsed base lists "
+                 "for %s, since their lengths don't match (%s vs %s)" %
+                 (path, len(baselist1), len(baselist2)))
+        if precedence == 'introspect': return baselist1
+        else: return baselist2
+
+    # If any names disagree, then give up.
+    for base1, base2 in zip(baselist1, baselist2):
+        if ((base1.canonical_name not in (None, UNKNOWN) and
+             base2.canonical_name not in (None, UNKNOWN)) and
+            base1.canonical_name != base2.canonical_name):
+            log.info("Not merging the parsed & introspected base "
+                     "lists for %s, since the bases' names don't match "
+                     "(%s vs %s)" % (path, base1.canonical_name,
+                                     base2.canonical_name))
+            if precedence == 'introspect': return baselist1
+            else: return baselist2
+
+    for i, (base1, base2) in enumerate(zip(baselist1, baselist2)):
+        base = merge_docs(base1, base2, cyclecheck,
+                           '%s.__bases__[%d]' % (path, i))
+        baselist1[i] = baselist2[i] = base
+
+    return baselist1
+
+def merge_posarg_defaults(defaults1, defaults2, precedence, cyclecheck, path):
+    if len(defaults1) != len(defaults2):
+        if precedence == 'introspect': return defaults1
+        else: return defaults2
+    defaults = []
+    for i, (d1, d2) in enumerate(zip(defaults1, defaults2)):
+        if d1 is not None and d2 is not None:
+            d_path = '%s.<default-arg-val>[%d]' % (path, i)
+            defaults.append(merge_docs(d1, d2, cyclecheck, d_path))
+        elif precedence == 'introspect':
+            defaults.append(d1)
+        else:
+            defaults.append(d2)
+    return defaults
+
+def merge_docstring(docstring1, docstring2, precedence, cyclecheck, path):
+    if docstring1 is None or docstring1 is UNKNOWN or precedence=='parse':
+        return docstring2
+    else:
+        return docstring1
+
+def merge_docs_extracted_by(v1, v2, precedence, cyclecheck, path):
+    return 'both'
+
+def merge_submodules(v1, v2, precedence, cyclecheck, path):
+    n1 = sorted([m.canonical_name for m in v1])
+    n2 = sorted([m.canonical_name for m in v2])
+    if (n1 != n2) and (n2 != []):
+        log.info('Introspector & parser disagree about submodules '
+                 'for %s: (%s) vs (%s)' % (path,
+                                           ', '.join([str(n) for n in n1]),
+                                           ', '.join([str(n) for n in n2])))
+        return v1 + [m for m in v2 if m.canonical_name not in n1]
+                
+    return v1
+
+register_attribute_mergefunc('variables', merge_variables)
+register_attribute_mergefunc('value', merge_value)
+register_attribute_mergefunc('overrides', merge_overrides)
+register_attribute_mergefunc('fget', merge_fget)
+register_attribute_mergefunc('fset', merge_fset)
+register_attribute_mergefunc('fdel', merge_fdel)
+register_attribute_mergefunc('proxy_for', merge_proxy_for)
+register_attribute_mergefunc('bases', merge_bases)
+register_attribute_mergefunc('posarg_defaults', merge_posarg_defaults)
+register_attribute_mergefunc('docstring', merge_docstring)
+register_attribute_mergefunc('docs_extracted_by', merge_docs_extracted_by)
+register_attribute_mergefunc('submodules', merge_submodules)
+
+######################################################################
+## Import Linking
+######################################################################
+
+def link_imports(val_doc, docindex):
+    # Check if the ValueDoc has an unresolved proxy_for link.
+    # If so, then resolve it.
+    while val_doc.proxy_for not in (UNKNOWN, None):
+        # Find the valuedoc that the proxy_for name points to.
+        src_doc = docindex.get_valdoc(val_doc.proxy_for)
+
+        # If we don't have any valuedoc at that address, then
+        # set that address as its canonical name.
+        # [XXX] Do I really want to do this?
+        if src_doc is None:
+            val_doc.canonical_name = val_doc.proxy_for
+            return
+
+        # If we *do* have something at that address, then
+        # merge the proxy `val_doc` with it.
+        elif src_doc != val_doc:
+            # Copy any subclass information from val_doc->src_doc.
+            if (isinstance(val_doc, ClassDoc) and
+                isinstance(src_doc, ClassDoc)):
+                for subclass in val_doc.subclasses:
+                    if subclass not in src_doc.subclasses:
+                        src_doc.subclasses.append(subclass)
+            # Then overwrite val_doc with the contents of src_doc.
+            src_doc.merge_and_overwrite(val_doc, ignore_hash_conflict=True)
+
+        # If the proxy_for link points back at src_doc
+        # itself, then we most likely have a variable that's
+        # shadowing a submodule that it should be equal to.
+        # So just get rid of the variable.
+        elif src_doc == val_doc:
+            parent_name = val_doc.proxy_for[:-1]
+            var_name = val_doc.proxy_for[-1]
+            parent = docindex.get_valdoc(parent_name)
+            if parent is not None and var_name in parent.variables:
+                del parent.variables[var_name]
+            src_doc.proxy_for = None
+
+######################################################################
+## Canonical Name Assignment
+######################################################################
+
+_name_scores = {}
+"""A dictionary mapping from each C{ValueDoc} to the score that has
+been assigned to its current cannonical name.  If
+L{assign_canonical_names()} finds a canonical name with a better
+score, then it will replace the old name."""
+
+_unreachable_names = {DottedName(DottedName.UNREACHABLE):1}
+"""The set of names that have been used for unreachable objects.  This
+is used to ensure there are no duplicate cannonical names assigned.
+C{_unreachable_names} is a dictionary mapping from dotted names to
+integer ids, where the next unused unreachable name derived from
+dotted name C{n} is
+C{DottedName('%s-%s' % (n, str(_unreachable_names[n]+1))}"""
+
+def assign_canonical_names(val_doc, name, docindex, score=0):
+    """
+    Assign a canonical name to C{val_doc} (if it doesn't have one
+    already), and (recursively) to each variable in C{val_doc}.
+    In particular, C{val_doc} will be assigned the canonical name
+    C{name} iff either:
+      - C{val_doc}'s canonical name is C{UNKNOWN}; or
+      - C{val_doc}'s current canonical name was assigned by this
+        method; but the score of the new name (C{score}) is higher
+        than the score of the current name (C{score_dict[val_doc]}).
+        
+    Note that canonical names will even be assigned to values
+    like integers and C{None}; but these should be harmless.
+    """
+    # If we've already visited this node, and our new score
+    # doesn't beat our old score, then there's nothing more to do.
+    # Note that since score increases strictly monotonically, this
+    # also prevents us from going in cycles.
+    if val_doc in _name_scores and score <= _name_scores[val_doc]:
+        return
+
+    # Update val_doc's canonical name, if appropriate.
+    if (val_doc not in _name_scores and
+        val_doc.canonical_name is not UNKNOWN):
+        # If this is the first time we've seen val_doc, and it
+        # already has a name, then don't change that name.
+        _name_scores[val_doc] = sys.maxint
+        name = val_doc.canonical_name
+        score = 0
+    else:
+        # Otherwise, update the name iff the new score is better
+        # than the old one.
+        if (val_doc not in _name_scores or
+            score > _name_scores[val_doc]):
+            val_doc.canonical_name = name
+            _name_scores[val_doc] = score
+
+    # Recurse to any contained values.
+    if isinstance(val_doc, NamespaceDoc):
+        for var_doc in val_doc.variables.values():
+            # Set the variable's canonical name.
+            varname = DottedName(name, var_doc.name)
+            var_doc.canonical_name = varname
+
+            # If the value is unknown, or is a generic value doc, then
+            # the valuedoc doesn't get assigned a name; move on.
+            if (var_doc.value is UNKNOWN
+                or isinstance(var_doc.value, GenericValueDoc)):
+                continue
+            
+            # [XX] After svn commit 1644-1647, I'm not sure if this
+            # ever gets used:  This check is for cases like
+            # curses.wrapper, where an imported variable shadows its
+            # value's "real" location.
+            if _var_shadows_self(var_doc, varname):
+                _fix_self_shadowing_var(var_doc, varname, docindex)
+    
+            # Find the score for this new name.            
+            vardoc_score = score-1
+            if var_doc.is_imported is UNKNOWN: vardoc_score -= 10
+            elif var_doc.is_imported: vardoc_score -= 100
+            if var_doc.is_alias is UNKNOWN: vardoc_score -= 10
+            elif var_doc.is_alias: vardoc_score -= 1000
+            
+            assign_canonical_names(var_doc.value, varname,
+                                   docindex, vardoc_score)
+
+    # Recurse to any directly reachable values.
+    for val_doc_2 in val_doc.apidoc_links(variables=False):
+        val_name, val_score = _unreachable_name_for(val_doc_2, docindex)
+        assign_canonical_names(val_doc_2, val_name, docindex, val_score)
+
+def _var_shadows_self(var_doc, varname):
+    return (var_doc.value not in (None, UNKNOWN) and
+            var_doc.value.canonical_name not in (None, UNKNOWN) and
+            var_doc.value.canonical_name != varname and
+            varname.dominates(var_doc.value.canonical_name))
+
+def _fix_self_shadowing_var(var_doc, varname, docindex):
+    # If possible, find another name for the shadowed value.
+    cname = var_doc.value.canonical_name
+    for i in range(1, len(cname)-1):
+        new_name = cname[:i] + (cname[i]+"'") + cname[i+1:]
+        val_doc = docindex.get_valdoc(new_name)
+        if val_doc is not None:
+            log.warning("%s shadows its own value -- using %s instead" %
+                     (varname, new_name))
+            var_doc.value = val_doc
+            return
+
+    # If we couldn't find the actual value, use an unreachable name.
+    name, score = _unreachable_name_for(var_doc.value, docindex)
+    log.warning('%s shadows itself -- using %s instead' % (varname, name))
+    var_doc.value.canonical_name = name
+
+def _unreachable_name_for(val_doc, docindex):
+    assert isinstance(val_doc, ValueDoc)
+    
+    # [xx] (when) does this help?
+    if (isinstance(val_doc, ModuleDoc) and
+        len(val_doc.canonical_name)==1 and val_doc.package is None):
+        for root_val in docindex.root:
+            if root_val.canonical_name == val_doc.canonical_name:
+                if root_val != val_doc: 
+                    log.error("Name conflict: %r vs %r" %
+                              (val_doc, root_val))
+                break
+        else:
+            return val_doc.canonical_name, -1000
+
+    # Assign it an 'unreachable' name:
+    if (val_doc.pyval is not UNKNOWN and
+          hasattr(val_doc.pyval, '__name__')):
+        try:
+            name = DottedName(DottedName.UNREACHABLE,
+                              val_doc.pyval.__name__, strict=True)
+        except DottedName.InvalidDottedName:
+            name = DottedName(DottedName.UNREACHABLE)
+    else:
+        name = DottedName(DottedName.UNREACHABLE)
+
+    # Uniquify the name.
+    if name in _unreachable_names:
+        _unreachable_names[name] += 1
+        name = DottedName('%s-%s' % (name, _unreachable_names[name]-1))
+    else:
+        _unreachable_names[name] = 1
+    
+    return name, -10000
+
+######################################################################
+## Documentation Inheritance
+######################################################################
+
+def find_overrides(class_doc):
+    """
+    Set the C{overrides} attribute for all variables in C{class_doc}.
+    This needs to be done early (before docstring parsing), so we can
+    know which docstrings to suppress warnings for.
+    """
+    for base_class in list(class_doc.mro(warn_about_bad_bases=True)):
+        if base_class == class_doc: continue
+        if base_class.variables is UNKNOWN: continue
+        for name, var_doc in base_class.variables.items():
+            if ( not (name.startswith('__') and not name.endswith('__')) and
+                 base_class == var_doc.container and
+                 name in class_doc.variables and 
+                 class_doc.variables[name].container==class_doc and
+                 class_doc.variables[name].overrides is UNKNOWN ):
+                class_doc.variables[name].overrides = var_doc
+    
+    
+def inherit_docs(class_doc):
+    for base_class in list(class_doc.mro(warn_about_bad_bases=True)):
+        if base_class == class_doc: continue
+
+        # Inherit any groups.  Place them *after* this class's groups,
+        # so that any groups that are important to this class come
+        # first.
+        if base_class.group_specs not in (None, UNKNOWN):
+            class_doc.group_specs += [gs for gs in base_class.group_specs
+                                      if gs not in class_doc.group_specs]
+
+        # Inherit any variables.
+        if base_class.variables is UNKNOWN: continue
+        for name, var_doc in base_class.variables.items():
+            # If it's a __private variable, then don't inherit it.
+            if name.startswith('__') and not name.endswith('__'):
+                continue
+            
+            # Inhetit only from the defining class. Or else, in case of
+            # multiple inheritance, we may import from a grand-ancestor
+            # variables overridden by a class that follows in mro.
+            if base_class != var_doc.container:
+                continue
+            
+            # If class_doc doesn't have a variable with this name,
+            # then inherit it.
+            if name not in class_doc.variables:
+                class_doc.variables[name] = var_doc
+
+            # Otherwise, class_doc already contains a variable
+            # that shadows var_doc.  But if class_doc's var is
+            # local, then record the fact that it overrides
+            # var_doc.
+            elif class_doc.variables[name].container==class_doc:
+                class_doc.variables[name].overrides = var_doc
+                _inherit_info(class_doc.variables[name])
+
+_INHERITED_ATTRIBS = [
+    'descr', 'summary', 'metadata', 'extra_docstring_fields',
+    'type_descr', 'arg_descrs', 'arg_types', 'return_descr',
+    'return_type', 'exception_descrs']
+
+_method_descriptor = type(list.append)
+
+def _inherit_info(var_doc):
+    """
+    Copy any relevant documentation information from the variable that
+    C{var_doc} overrides into C{var_doc} itself.
+    """
+    src_var = var_doc.overrides
+    src_val = var_doc.overrides.value
+    val_doc = var_doc.value
+
+    # Special case: if the source value and target values are both c
+    # extension methods, and the target value's signature is not
+    # specified, then inherit the source value's signature.
+    if (isinstance(val_doc, RoutineDoc) and
+        isinstance(src_val, RoutineDoc) and
+        (inspect.isbuiltin(val_doc.pyval) or
+         isinstance(val_doc.pyval, _method_descriptor)) and
+        (inspect.isbuiltin(src_val.pyval) or
+         isinstance(src_val.pyval, _method_descriptor)) and
+        val_doc.all_args() in (['...'], UNKNOWN) and
+        src_val.all_args() not in (['...'], UNKNOWN)):
+        for attrib in ['posargs', 'posarg_defaults', 'vararg',
+                       'kwarg', 'return_type']:
+            setattr(val_doc, attrib, getattr(src_val, attrib))
+    
+    # If the new variable has a docstring, then don't inherit
+    # anything, even if the docstring is blank.
+    if var_doc.docstring not in (None, UNKNOWN):
+        return
+    # [xx] Do I want a check like this:?
+#     # If it's a method and the signature doesn't match well enough,
+#     # then give up.
+#     if (isinstance(src_val, RoutineDoc) and
+#         isinstance(val_doc, RoutineDoc)):
+#         if (src_val.posargs != val_doc.posargs[:len(src_val.posargs)] or
+#             src_val.vararg != None and src_val.vararg != val_doc.vararg):
+#             log.docstring_warning(
+#                 "The signature of %s does not match the signature of the "
+#                 "method it overrides (%s); not inheriting documentation." %
+#                 (var_doc.canonical_name, src_var.canonical_name))
+#             return
+
+    # Inherit attributes!
+    for attrib in _INHERITED_ATTRIBS:
+        if (hasattr(var_doc, attrib) and hasattr(src_var, attrib) and
+            getattr(src_var, attrib) not in (None, UNKNOWN)):
+            setattr(var_doc, attrib, getattr(src_var, attrib))
+        elif (src_val is not None and
+              hasattr(val_doc, attrib) and hasattr(src_val, attrib) and
+              getattr(src_val, attrib) not in (None, UNKNOWN) and
+              getattr(val_doc, attrib) in (None, UNKNOWN, [])):
+            setattr(val_doc, attrib, getattr(src_val, attrib))
diff --git a/epydoc/docintrospecter.py b/epydoc/docintrospecter.py
new file mode 100644
index 0000000..cbbbb56
--- /dev/null
+++ b/epydoc/docintrospecter.py
@@ -0,0 +1,1056 @@
+# epydoc -- Introspection
+#
+# Copyright (C) 2005 Edward Loper
+# Author: Edward Loper <edloper at loper.org>
+# URL: <http://epydoc.sf.net>
+#
+# $Id: docintrospecter.py 1678 2008-01-29 17:21:29Z edloper $
+
+"""
+Extract API documentation about python objects by directly introspecting
+their values.
+
+The function L{introspect_docs()}, which provides the main interface
+of this module, examines a Python objects via introspection, and uses
+the information it finds to create an L{APIDoc} objects containing the
+API documentation for that objects.
+
+The L{register_introspecter()} method can be used to extend the
+functionality of C{docintrospector}, by providing methods that handle
+special value types.
+"""
+__docformat__ = 'epytext en'
+
+######################################################################
+## Imports
+######################################################################
+
+import inspect, re, sys, os.path, imp
+# API documentation encoding:
+from epydoc.apidoc import *
+# Type comparisons:
+from types import *
+# Error reporting:
+from epydoc import log
+# Helper functions:
+from epydoc.util import *
+# For extracting encoding for docstrings:
+import epydoc.docparser
+# Builtin values
+import __builtin__
+# Backwards compatibility
+from epydoc.compat import * 
+
+######################################################################
+## Caches
+######################################################################
+
+_valuedoc_cache = {}
+"""A cache containing the API documentation for values that we've
+already seen.  This cache is implemented as a dictionary that maps a
+value's pyid to its L{ValueDoc}.
+
+Note that if we encounter a value but decide not to introspect it
+(because it's imported from another module), then C{_valuedoc_cache}
+will contain an entry for the value, but the value will not be listed
+in L{_introspected_values}."""
+
+_introspected_values = {}
+"""A record which values we've introspected, encoded as a dictionary from
+pyid to C{bool}."""
+
+def clear_cache():
+    """
+    Discard any cached C{APIDoc} values that have been computed for
+    introspected values.
+    """
+    _valuedoc_cache.clear()
+    _introspected_values.clear()
+
+######################################################################
+## Introspection
+######################################################################
+
+def introspect_docs(value=None, name=None, filename=None, context=None,
+                    is_script=False, module_name=None):
+    """
+    Generate the API documentation for a specified object by
+    introspecting Python values, and return it as a L{ValueDoc}.  The
+    object to generate documentation for may be specified using
+    the C{value} parameter, the C{filename} parameter, I{or} the
+    C{name} parameter.  (It is an error to specify more than one
+    of these three parameters, or to not specify any of them.)
+
+    @param value: The python object that should be documented.
+    @param filename: The name of the file that contains the python
+        source code for a package, module, or script.  If
+        C{filename} is specified, then C{introspect} will return a
+        C{ModuleDoc} describing its contents.
+    @param name: The fully-qualified python dotted name of any
+        value (including packages, modules, classes, and
+        functions).  C{DocParser} will automatically figure out
+        which module(s) it needs to import in order to find the
+        documentation for the specified object.
+    @param context: The API documentation for the class of module
+        that contains C{value} (if available).
+    @param module_name: The name of the module where the value is defined.
+        Useful to retrieve the docstring encoding if there is no way to
+        detect the module by introspection (such as in properties)
+    """
+    if value is None and name is not None and filename is None:
+        value = get_value_from_name(DottedName(name))
+    elif value is None and name is None and filename is not None:
+        if is_script:
+            value = get_value_from_scriptname(filename)
+        else:
+            value = get_value_from_filename(filename, context)
+    elif name is None and filename is None:
+        # it's ok if value is None -- that's a value, after all.
+        pass 
+    else:
+        raise ValueError("Expected exactly one of the following "
+                         "arguments: value, name, filename")
+    
+    pyid = id(value)
+
+    # If we've already introspected this value, then simply return
+    # its ValueDoc from our cache.
+    if pyid in _introspected_values:
+        # If the file is a script, then adjust its name.
+        if is_script and filename is not None:
+            _valuedoc_cache[pyid].canonical_name = DottedName(
+                munge_script_name(str(filename)))
+        return _valuedoc_cache[pyid]
+
+    # Create an initial value doc for this value & add it to the cache.
+    val_doc = _get_valuedoc(value)
+
+    # Introspect the value.
+    _introspected_values[pyid] = True
+    introspect_func = _get_introspecter(value)
+    introspect_func(value, val_doc, module_name=module_name)
+
+    # Set canonical name, if it was given
+    if val_doc.canonical_name is UNKNOWN and name is not None:
+        val_doc.canonical_name = DottedName(name)
+
+    # If the file is a script, then adjust its name.
+    if is_script and filename is not None:
+        val_doc.canonical_name = DottedName(munge_script_name(str(filename)))
+        
+    if val_doc.canonical_name is UNKNOWN and filename is not None:
+        shadowed_name = DottedName(value.__name__)
+        log.warning("Module %s is shadowed by a variable with "
+                    "the same name." % shadowed_name)
+        val_doc.canonical_name = DottedName(str(shadowed_name)+"'")
+
+    return val_doc
+
+def _get_valuedoc(value):
+    """
+    If a C{ValueDoc} for the given value exists in the valuedoc
+    cache, then return it; otherwise, create a new C{ValueDoc},
+    add it to the cache, and return it.  When possible, the new
+    C{ValueDoc}'s C{pyval}, C{repr}, and C{canonical_name}
+    attributes will be set appropriately.
+    """
+    pyid = id(value)
+    val_doc = _valuedoc_cache.get(pyid)
+    if val_doc is None:
+        try: canonical_name = get_canonical_name(value, strict=True)
+        except DottedName.InvalidDottedName: canonical_name = UNKNOWN
+        val_doc = ValueDoc(pyval=value, canonical_name = canonical_name,
+                           docs_extracted_by='introspecter')
+        _valuedoc_cache[pyid] = val_doc
+        
+        # If it's a module, then do some preliminary introspection.
+        # Otherwise, check what the containing module is (used e.g.
+        # to decide what markup language should be used for docstrings)
+        if inspect.ismodule(value):
+            introspect_module(value, val_doc, preliminary=True)
+            val_doc.defining_module = val_doc
+        else:
+            module_name = str(get_containing_module(value))
+            module = sys.modules.get(module_name)
+            if module is not None and inspect.ismodule(module):
+                val_doc.defining_module = _get_valuedoc(module)
+            
+    return val_doc
+
+#////////////////////////////////////////////////////////////
+# Module Introspection
+#////////////////////////////////////////////////////////////
+
+#: A list of module variables that should not be included in a
+#: module's API documentation.
+UNDOCUMENTED_MODULE_VARS = (
+    '__builtins__', '__doc__', '__all__', '__file__', '__path__',
+    '__name__', '__extra_epydoc_fields__', '__docformat__')
+
+def introspect_module(module, module_doc, module_name=None, preliminary=False):
+    """
+    Add API documentation information about the module C{module}
+    to C{module_doc}.
+    """
+    module_doc.specialize_to(ModuleDoc)
+
+    # Record the module's docformat
+    if hasattr(module, '__docformat__'):
+        module_doc.docformat = unicode(module.__docformat__)
+                                  
+    # Record the module's filename
+    if hasattr(module, '__file__'):
+        try: module_doc.filename = unicode(module.__file__)
+        except KeyboardInterrupt: raise
+        except: pass
+        if module_doc.filename is not UNKNOWN:
+            try: module_doc.filename = py_src_filename(module_doc.filename)
+            except ValueError: pass
+
+    # If this is just a preliminary introspection, then don't do
+    # anything else.  (Typically this is true if this module was
+    # imported, but is not included in the set of modules we're
+    # documenting.)
+    module_doc.variables = {}
+    if preliminary: return
+
+    # Record the module's docstring
+    if hasattr(module, '__doc__'):
+        module_doc.docstring = get_docstring(module)
+
+    # If the module has a __path__, then it's (probably) a
+    # package; so set is_package=True and record its __path__.
+    if hasattr(module, '__path__'):
+        module_doc.is_package = True
+        try: module_doc.path = [unicode(p) for p in module.__path__]
+        except KeyboardInterrupt: raise
+        except: pass
+    else:
+        module_doc.is_package = False
+
+    # Make sure we have a name for the package.
+    dotted_name = module_doc.canonical_name
+    if dotted_name is UNKNOWN:
+        dotted_name = DottedName(module.__name__)
+    name_without_primes = DottedName(str(dotted_name).replace("'", ""))
+        
+    # Record the module's parent package, if it has one.
+    if len(dotted_name) > 1:
+        package_name = str(dotted_name.container())
+        package = sys.modules.get(package_name)
+        if package is not None:
+            module_doc.package = introspect_docs(package)
+    else:
+        module_doc.package = None
+
+    # Initialize the submodules property
+    module_doc.submodules = []
+
+    # Add the module to its parent package's submodules list.
+    if module_doc.package not in (None, UNKNOWN):
+        module_doc.package.submodules.append(module_doc)
+
+    # Look up the module's __all__ attribute (public names).
+    public_names = None
+    if hasattr(module, '__all__'):
+        try:
+            public_names = set([str(name) for name in module.__all__])
+        except KeyboardInterrupt: raise
+        except: pass
+
+    # Record the module's variables.
+    module_doc.variables = {}
+    for child_name in dir(module):
+        if child_name in UNDOCUMENTED_MODULE_VARS: continue
+        child = getattr(module, child_name)
+
+        # Create a VariableDoc for the child, and introspect its
+        # value if it's defined in this module.
+        container = get_containing_module(child)
+        if ((container is not None and
+             container == name_without_primes) or
+            (public_names is not None and
+             child_name in public_names)):
+            # Local variable.
+            child_val_doc = introspect_docs(child, context=module_doc,
+                                            module_name=dotted_name)
+            child_var_doc = VariableDoc(name=child_name,
+                                        value=child_val_doc,
+                                        is_imported=False,
+                                        container=module_doc,
+                                        docs_extracted_by='introspecter')
+        elif container is None or module_doc.canonical_name is UNKNOWN:
+
+            # Don't introspect stuff "from __future__"
+            if is_future_feature(child): continue
+
+            # Possibly imported variable.
+            child_val_doc = introspect_docs(child, context=module_doc)
+            child_var_doc = VariableDoc(name=child_name,
+                                        value=child_val_doc,
+                                        container=module_doc,
+                                        docs_extracted_by='introspecter')
+        else:
+            # Imported variable.
+            child_val_doc = _get_valuedoc(child)
+            child_var_doc = VariableDoc(name=child_name,
+                                        value=child_val_doc,
+                                        is_imported=True,
+                                        container=module_doc,
+                                        docs_extracted_by='introspecter')
+
+        # If the module's __all__ attribute is set, use it to set the
+        # variables public/private status and imported status.
+        if public_names is not None:
+            if child_name in public_names:
+                child_var_doc.is_public = True
+                if not isinstance(child_var_doc, ModuleDoc):
+                    child_var_doc.is_imported = False
+            else:
+                child_var_doc.is_public = False
+
+        module_doc.variables[child_name] = child_var_doc
+
+    return module_doc
+
+#////////////////////////////////////////////////////////////
+# Class Introspection
+#////////////////////////////////////////////////////////////
+
+#: A list of class variables that should not be included in a
+#: class's API documentation.
+UNDOCUMENTED_CLASS_VARS = (
+    '__doc__', '__module__', '__dict__', '__weakref__', '__slots__',
+    '__pyx_vtable__')
+
+def introspect_class(cls, class_doc, module_name=None):
+    """
+    Add API documentation information about the class C{cls}
+    to C{class_doc}.
+    """
+    class_doc.specialize_to(ClassDoc)
+
+    # Record the class's docstring.
+    class_doc.docstring = get_docstring(cls)
+
+    # Record the class's __all__ attribute (public names).
+    public_names = None
+    if hasattr(cls, '__all__'):
+        try:
+            public_names = set([str(name) for name in cls.__all__])
+        except KeyboardInterrupt: raise
+        except: pass
+
+    # Start a list of subclasses.
+    class_doc.subclasses = []
+
+    # Sometimes users will define a __metaclass__ that copies all
+    # class attributes from bases directly into the derived class's
+    # __dict__ when the class is created.  (This saves the lookup time
+    # needed to search the base tree for an attribute.)  But for the
+    # docs, we only want to list these copied attributes in the
+    # parent.  So only add an attribute if it is not identical to an
+    # attribute of a base class.  (Unfortunately, this can sometimes
+    # cause an attribute to look like it was inherited, even though it
+    # wasn't, if it happens to have the exact same value as the
+    # corresponding base's attribute.)  An example of a case where
+    # this helps is PyQt -- subclasses of QWidget get about 300
+    # methods injected into them.
+    base_children = {}
+    
+    # Record the class's base classes; and add the class to its
+    # base class's subclass lists.
+    if hasattr(cls, '__bases__'):
+        try: bases = list(cls.__bases__)
+        except:
+            bases = None
+            log.warning("Class '%s' defines __bases__, but it does not "
+                        "contain an iterable; ignoring base list."
+                        % getattr(cls, '__name__', '??'))
+        if bases is not None:
+            class_doc.bases = []
+            for base in bases:
+                basedoc = introspect_docs(base)
+                class_doc.bases.append(basedoc)
+                basedoc.subclasses.append(class_doc)
+            
+            bases.reverse()
+            for base in bases:
+                if hasattr(base, '__dict__'):
+                    base_children.update(base.__dict__)
+
+    # The module name is not defined if the class is being introspected
+    # as another class base.
+    if module_name is None and class_doc.defining_module not in (None, UNKNOWN):
+        module_name = class_doc.defining_module.canonical_name
+        
+    # Record the class's local variables.
+    class_doc.variables = {}
+    if hasattr(cls, '__dict__'):
+        private_prefix = '_%s__' % getattr(cls, '__name__', '<none>')
+        for child_name, child in cls.__dict__.items():
+            if (child_name in base_children
+                and base_children[child_name] == child):
+                continue
+
+            if child_name.startswith(private_prefix):
+                child_name = child_name[len(private_prefix)-2:]
+            if child_name in UNDOCUMENTED_CLASS_VARS: continue
+            val_doc = introspect_docs(child, context=class_doc,
+                                      module_name=module_name)
+            var_doc = VariableDoc(name=child_name, value=val_doc,
+                                  container=class_doc,
+                                  docs_extracted_by='introspecter')
+            if public_names is not None:
+                var_doc.is_public = (child_name in public_names)
+            class_doc.variables[child_name] = var_doc
+
+    return class_doc
+
+#////////////////////////////////////////////////////////////
+# Routine Introspection
+#////////////////////////////////////////////////////////////
+
+def introspect_routine(routine, routine_doc, module_name=None):
+    """Add API documentation information about the function
+    C{routine} to C{routine_doc} (specializing it to C{Routine_doc})."""
+    routine_doc.specialize_to(RoutineDoc)
+    
+    # Extract the underying function
+    if isinstance(routine, MethodType):
+        func = routine.im_func
+    elif isinstance(routine, staticmethod):
+        func = routine.__get__(0)
+    elif isinstance(routine, classmethod):
+        func = routine.__get__(0).im_func
+    else:
+        func = routine
+
+    # Record the function's docstring.
+    routine_doc.docstring = get_docstring(func)
+
+    # Record the function's signature.
+    if isinstance(func, FunctionType):
+        (args, vararg, kwarg, defaults) = inspect.getargspec(func)
+
+        # Add the arguments.
+        routine_doc.posargs = args
+        routine_doc.vararg = vararg
+        routine_doc.kwarg = kwarg
+
+        # Set default values for positional arguments.
+        routine_doc.posarg_defaults = [None]*len(args)
+        if defaults is not None:
+            offset = len(args)-len(defaults)
+            for i in range(len(defaults)):
+                default_val = introspect_docs(defaults[i])
+                routine_doc.posarg_defaults[i+offset] = default_val
+
+        # If it's a bound method, then strip off the first argument.
+        if isinstance(routine, MethodType) and routine.im_self is not None:
+            routine_doc.posargs = routine_doc.posargs[1:]
+            routine_doc.posarg_defaults = routine_doc.posarg_defaults[1:]
+
+        # Set the routine's line number.
+        if hasattr(func, 'func_code'):
+            routine_doc.lineno = func.func_code.co_firstlineno
+
+    else:
+        # [XX] I should probably use UNKNOWN here??
+        # dvarrazzo: if '...' is to be changed, also check that
+        # `docstringparser.process_arg_field()` works correctly.
+        # See SF bug #1556024.
+        routine_doc.posargs = ['...']
+        routine_doc.posarg_defaults = [None]
+        routine_doc.kwarg = None
+        routine_doc.vararg = None
+
+    # Change type, if appropriate.
+    if isinstance(routine, staticmethod):
+        routine_doc.specialize_to(StaticMethodDoc)
+    if isinstance(routine, classmethod):
+        routine_doc.specialize_to(ClassMethodDoc)
+        
+    return routine_doc
+
+#////////////////////////////////////////////////////////////
+# Property Introspection
+#////////////////////////////////////////////////////////////
+
+def introspect_property(prop, prop_doc, module_name=None):
+    """Add API documentation information about the property
+    C{prop} to C{prop_doc} (specializing it to C{PropertyDoc})."""
+    prop_doc.specialize_to(PropertyDoc)
+
+    # Record the property's docstring.
+    prop_doc.docstring = get_docstring(prop, module_name=module_name)
+
+    # Record the property's access functions.
+    if hasattr(prop, 'fget'):
+        prop_doc.fget = introspect_docs(prop.fget)
+        prop_doc.fset = introspect_docs(prop.fset)
+        prop_doc.fdel = introspect_docs(prop.fdel)
+    
+    return prop_doc
+
+#////////////////////////////////////////////////////////////
+# Generic Value Introspection
+#////////////////////////////////////////////////////////////
+
+def introspect_other(val, val_doc, module_name=None):
+    """Specialize val_doc to a C{GenericValueDoc} and return it."""
+    val_doc.specialize_to(GenericValueDoc)
+    return val_doc
+
+#////////////////////////////////////////////////////////////
+# Helper functions
+#////////////////////////////////////////////////////////////
+
+def isclass(object):
+    """
+    Return true if the given object is a class.  In particular, return
+    true if object is an instance of C{types.TypeType} or of
+    C{types.ClassType}.  This is used instead of C{inspect.isclass()},
+    because the latter returns true for objects that are not classes
+    (in particular, it returns true for any object that has a
+    C{__bases__} attribute, including objects that define
+    C{__getattr__} to always return a value).
+    """
+    return isinstance(object, tuple(_CLASS_TYPES))
+
+_CLASS_TYPES = set([TypeType, ClassType])
+"""A list of types that should be treated as classes."""
+
+def register_class_type(typ):
+    """Add a type to the lists of types that should be treated as
+    classes.  By default, this list contains C{TypeType} and
+    C{ClassType}."""
+    _CLASS_TYPES.add(typ)
+
+__future_check_works = None
+
+def is_future_feature(object):
+    """
+    Return True if C{object} results from a C{from __future__ import feature}
+    statement.
+    """
+    # Guard from unexpected implementation changes of the __future__ module.
+    global __future_check_works
+    if __future_check_works is not None:
+        if __future_check_works:
+            import __future__
+            return isinstance(object, __future__._Feature)
+        else:
+            return False
+    else:
+        __future_check_works = True
+        try:
+            return is_future_feature(object)
+        except:
+            __future_check_works = False
+            log.warning("Troubles inspecting __future__. Python implementation"
+                        " may have been changed.")
+            return False
+
+def get_docstring(value, module_name=None):
+    """
+    Return the docstring for the given value; or C{None} if it
+    does not have a docstring.
+    @rtype: C{unicode}
+    """
+    docstring = getattr(value, '__doc__', None)
+    if docstring is None:
+        return None
+    elif isinstance(docstring, unicode):
+        return docstring
+    elif isinstance(docstring, str):
+        try: return unicode(docstring, 'ascii')
+        except UnicodeDecodeError:
+            if module_name is None:
+                module_name = get_containing_module(value)
+            if module_name is not None:
+                try:
+                    module = get_value_from_name(module_name)
+                    filename = py_src_filename(module.__file__)
+                    encoding = epydoc.docparser.get_module_encoding(filename)
+                    return unicode(docstring, encoding)
+                except KeyboardInterrupt: raise
+                except Exception: pass
+            if hasattr(value, '__name__'): name = value.__name__
+            else: name = repr(value)
+            log.warning("%s's docstring is not a unicode string, but it "
+                        "contains non-ascii data -- treating it as "
+                        "latin-1." % name)
+            return unicode(docstring, 'latin-1')
+        return None
+    elif value is BuiltinMethodType:
+        # Don't issue a warning for this special case.
+        return None
+    else:
+        if hasattr(value, '__name__'): name = value.__name__
+        else: name = repr(value)
+        log.warning("%s's docstring is not a string -- ignoring it." %
+                    name)
+        return None
+
+def get_canonical_name(value, strict=False):
+    """
+    @return: the canonical name for C{value}, or C{UNKNOWN} if no
+    canonical name can be found.  Currently, C{get_canonical_name}
+    can find canonical names for: modules; functions; non-nested
+    classes; methods of non-nested classes; and some class methods
+    of non-nested classes.
+    
+    @rtype: L{DottedName} or C{UNKNOWN}
+    """
+    if not hasattr(value, '__name__'): return UNKNOWN
+
+    # Get the name via introspection.
+    if isinstance(value, ModuleType):
+        try:
+            dotted_name = DottedName(value.__name__, strict=strict)
+            # If the module is shadowed by a variable in its parent
+            # package(s), then add a prime mark to the end, to
+            # differentiate it from the variable that shadows it.
+            if verify_name(value, dotted_name) is UNKNOWN:
+                log.warning("Module %s is shadowed by a variable with "
+                            "the same name." % dotted_name)
+                # Note -- this return bypasses verify_name check:
+                return DottedName(value.__name__+"'")
+        except DottedName.InvalidDottedName:
+            # Name is not a valid Python identifier -- treat as script.
+            if hasattr(value, '__file__'):
+                filename = '%s' % value.__str__
+                dotted_name = DottedName(munge_script_name(filename))
+        
+    elif isclass(value):
+        if value.__module__ == '__builtin__':
+            dotted_name = DottedName(value.__name__, strict=strict)
+        else:
+            dotted_name = DottedName(value.__module__, value.__name__,
+                                     strict=strict)
+            
+    elif (inspect.ismethod(value) and value.im_self is not None and
+          value.im_class is ClassType and
+          not value.__name__.startswith('<')): # class method.
+        class_name = get_canonical_name(value.im_self)
+        if class_name is UNKNOWN: return UNKNOWN
+        dotted_name = DottedName(class_name, value.__name__, strict=strict)
+    elif (inspect.ismethod(value) and
+          not value.__name__.startswith('<')):
+        class_name = get_canonical_name(value.im_class)
+        if class_name is UNKNOWN: return UNKNOWN
+        dotted_name = DottedName(class_name, value.__name__, strict=strict)
+    elif (isinstance(value, FunctionType) and
+          not value.__name__.startswith('<')):
+        module_name = _find_function_module(value)
+        if module_name is None: return UNKNOWN
+        dotted_name = DottedName(module_name, value.__name__, strict=strict)
+    else:
+        return UNKNOWN
+
+    return verify_name(value, dotted_name)
+
+def verify_name(value, dotted_name):
+    """
+    Verify the name.  E.g., if it's a nested class, then we won't be
+    able to find it with the name we constructed.
+    """
+    if dotted_name is UNKNOWN: return UNKNOWN
+    if len(dotted_name) == 1 and hasattr(__builtin__, dotted_name[0]):
+        return dotted_name
+    named_value = sys.modules.get(dotted_name[0])
+    if named_value is None: return UNKNOWN
+    for identifier in dotted_name[1:]:
+        try: named_value = getattr(named_value, identifier)
+        except: return UNKNOWN
+    if value is named_value:
+        return dotted_name
+    else:
+        return UNKNOWN
+
+# [xx] not used:
+def value_repr(value):
+    try:
+        s = '%r' % value
+        if isinstance(s, str):
+            s = decode_with_backslashreplace(s)
+        return s
+    except:
+        return UNKNOWN
+
+def get_containing_module(value):
+    """
+    Return the name of the module containing the given value, or
+    C{None} if the module name can't be determined.
+    @rtype: L{DottedName}
+    """
+    if inspect.ismodule(value):
+        return DottedName(value.__name__)
+    elif isclass(value):
+        return DottedName(value.__module__)
+    elif (inspect.ismethod(value) and value.im_self is not None and
+          value.im_class is ClassType): # class method.
+        return DottedName(value.im_self.__module__)
+    elif inspect.ismethod(value):
+        return DottedName(value.im_class.__module__)
+    elif inspect.isroutine(value):
+        module = _find_function_module(value)
+        if module is None: return None
+        return DottedName(module)
+    else:
+        return None
+
+def _find_function_module(func):
+    """
+    @return: The module that defines the given function.
+    @rtype: C{module}
+    @param func: The function whose module should be found.
+    @type func: C{function}
+    """
+    if hasattr(func, '__module__'):
+        return func.__module__
+    try:
+        module = inspect.getmodule(func)
+        if module: return module.__name__
+    except KeyboardInterrupt: raise
+    except: pass
+
+    # This fallback shouldn't usually be needed.  But it is needed in
+    # a couple special cases (including using epydoc to document
+    # itself).  In particular, if a module gets loaded twice, using
+    # two different names for the same file, then this helps.
+    for module in sys.modules.values():
+        if (hasattr(module, '__dict__') and
+            hasattr(func, 'func_globals') and
+            func.func_globals is module.__dict__):
+            return module.__name__
+    return None
+
+#////////////////////////////////////////////////////////////
+# Introspection Dispatch Table
+#////////////////////////////////////////////////////////////
+
+_introspecter_registry = []
+def register_introspecter(applicability_test, introspecter, priority=10):
+    """
+    Register an introspecter function.  Introspecter functions take
+    two arguments, a python value and a C{ValueDoc} object, and should
+    add information about the given value to the the C{ValueDoc}.
+    Usually, the first line of an inspecter function will specialize
+    it to a sublass of C{ValueDoc}, using L{ValueDoc.specialize_to()}:
+
+        >>> def typical_introspecter(value, value_doc):
+        ...     value_doc.specialize_to(SomeSubclassOfValueDoc)
+        ...     <add info to value_doc>
+
+    @param priority: The priority of this introspecter, which determines
+    the order in which introspecters are tried -- introspecters with lower
+    numbers are tried first.  The standard introspecters have priorities
+    ranging from 20 to 30.  The default priority (10) will place new
+    introspecters before standard introspecters.
+    """
+    _introspecter_registry.append( (priority, applicability_test,
+                                    introspecter) )
+    _introspecter_registry.sort()
+    
+def _get_introspecter(value):
+    for (priority, applicability_test, introspecter) in _introspecter_registry:
+        if applicability_test(value):
+            return introspecter
+    else:
+        return introspect_other
+
+# Register the standard introspecter functions.
+def is_classmethod(v): return isinstance(v, classmethod)
+def is_staticmethod(v): return isinstance(v, staticmethod)
+def is_property(v): return isinstance(v, property)
+register_introspecter(inspect.ismodule, introspect_module, priority=20)
+register_introspecter(isclass, introspect_class, priority=24)
+register_introspecter(inspect.isroutine, introspect_routine, priority=28)
+register_introspecter(is_property, introspect_property, priority=30)
+
+# Register getset_descriptor as a property
+try:
+    import array
+    getset_type = type(array.array.typecode)
+    del array
+    def is_getset(v): return isinstance(v, getset_type)
+    register_introspecter(is_getset, introspect_property, priority=32)
+except:
+    pass
+
+# Register member_descriptor as a property
+try:
+    import datetime
+    member_type = type(datetime.timedelta.days)
+    del datetime
+    def is_member(v): return isinstance(v, member_type)
+    register_introspecter(is_member, introspect_property, priority=34)
+except:
+    pass
+
+#////////////////////////////////////////////////////////////
+# Import support
+#////////////////////////////////////////////////////////////
+
+def get_value_from_filename(filename, context=None):
+    # Normalize the filename.
+    filename = os.path.normpath(os.path.abspath(filename))
+
+    # Divide the filename into a base directory and a name.  (For
+    # packages, use the package's parent directory as the base, and
+    # the directory name as its name).
+    basedir = os.path.split(filename)[0]
+    name = os.path.splitext(os.path.split(filename)[1])[0]
+    if name == '__init__':
+        basedir, name = os.path.split(basedir)
+    name = DottedName(name)
+
+    # If the context wasn't provided, then check if the file is in a
+    # package directory.  If so, then update basedir & name to contain
+    # the topmost package's directory and the fully qualified name for
+    # this file.  (This update assume the default value of __path__
+    # for the parent packages; if the parent packages override their
+    # __path__s, then this can cause us not to find the value.)
+    if context is None:
+        while is_package_dir(basedir):
+            basedir, pkg_name = os.path.split(basedir)
+            name = DottedName(pkg_name, name)
+            
+    # If a parent package was specified, then find the directory of
+    # the topmost package, and the fully qualified name for this file.
+    if context is not None:
+        # Combine the name.
+        name = DottedName(context.canonical_name, name)
+        # Find the directory of the base package.
+        while context not in (None, UNKNOWN):
+            pkg_dir = os.path.split(context.filename)[0]
+            basedir = os.path.split(pkg_dir)[0]
+            context = context.package
+
+    # Import the module.  (basedir is the directory of the module's
+    # topmost package, or its own directory if it's not in a package;
+    # and name is the fully qualified dotted name for the module.)
+    old_sys_path = sys.path[:]
+    try:
+        sys.path.insert(0, basedir)
+        # This will make sure that we get the module itself, even
+        # if it is shadowed by a variable.  (E.g., curses.wrapper):
+        _import(str(name))
+        if str(name) in sys.modules:
+            return sys.modules[str(name)]
+        else:
+            # Use this as a fallback -- it *shouldn't* ever be needed.
+            return get_value_from_name(name)
+    finally:
+        sys.path = old_sys_path
+
+def get_value_from_scriptname(filename):
+    name = munge_script_name(filename)
+    return _import(name, filename)
+
+def get_value_from_name(name, globs=None):
+    """
+    Given a name, return the corresponding value.
+    
+    @param globs: A namespace to check for the value, if there is no
+        module containing the named value.  Defaults to __builtin__.
+    """
+    name = DottedName(name)
+
+    # Import the topmost module/package.  If we fail, then check if
+    # the requested name refers to a builtin.
+    try:
+        module = _import(name[0])
+    except ImportError, e:
+        if globs is None: globs = __builtin__.__dict__
+        if name[0] in globs:
+            try: return _lookup(globs[name[0]], name[1:])
+            except: raise e
+        else:
+            raise
+
+    # Find the requested value in the module/package or its submodules.
+    for i in range(1, len(name)):
+        try: return _lookup(module, name[i:])
+        except ImportError: pass
+        module = _import('.'.join(name[:i+1]))
+        module = _lookup(module, name[1:i+1])
+    return module
+
+def _lookup(module, name):
+    val = module
+    for i, identifier in enumerate(name):
+        try: val = getattr(val, identifier)
+        except AttributeError:
+            exc_msg = ('no variable named %s in %s' %
+                       (identifier, '.'.join(name[:1+i])))
+            raise ImportError(exc_msg)
+    return val
+            
+def _import(name, filename=None):
+    """
+    Run the given callable in a 'sandboxed' environment.
+    Currently, this includes saving and restoring the contents of
+    sys and __builtins__; and suppressing stdin, stdout, and stderr.
+    """
+    # Note that we just do a shallow copy of sys.  In particular,
+    # any changes made to sys.modules will be kept.  But we do
+    # explicitly store sys.path.
+    old_sys = sys.__dict__.copy()
+    old_sys_path = sys.path[:]
+    old_builtins = __builtin__.__dict__.copy()
+
+    # Add the current directory to sys.path, in case they're trying to
+    # import a module by name that resides in the current directory.
+    # But add it to the end -- otherwise, the explicit directory added
+    # in get_value_from_filename might get overwritten
+    sys.path.append('')
+
+    # Suppress input and output.  (These get restored when we restore
+    # sys to old_sys).  
+    sys.stdin = sys.stdout = sys.stderr = _dev_null
+    sys.__stdin__ = sys.__stdout__ = sys.__stderr__ = _dev_null
+
+    # Remove any command-line arguments
+    sys.argv = ['(imported)']
+
+    try:
+        try:
+            if filename is None:
+                return __import__(name)
+            else:
+                # For importing scripts:
+                return imp.load_source(name, filename)
+        except KeyboardInterrupt: raise
+        except:
+            exc_typ, exc_val, exc_tb = sys.exc_info()
+            if exc_val is None:
+                estr = '%s' % (exc_typ,)
+            else:
+                estr = '%s: %s' % (exc_typ.__name__, exc_val)
+            if exc_tb.tb_next is not None:
+                estr += ' (line %d)' % (exc_tb.tb_next.tb_lineno,)
+            raise ImportError(estr)
+    finally:
+        # Restore the important values that we saved.
+        __builtin__.__dict__.clear()
+        __builtin__.__dict__.update(old_builtins)
+        sys.__dict__.clear()
+        sys.__dict__.update(old_sys)
+        sys.path = old_sys_path
+        
+def introspect_docstring_lineno(api_doc):
+    """
+    Try to determine the line number on which the given item's
+    docstring begins.  Return the line number, or C{None} if the line
+    number can't be determined.  The line number of the first line in
+    the file is 1.
+    """
+    if api_doc.docstring_lineno is not UNKNOWN:
+        return api_doc.docstring_lineno
+    if isinstance(api_doc, ValueDoc) and api_doc.pyval is not UNKNOWN:
+        try:
+            lines, lineno = inspect.findsource(api_doc.pyval)
+            if not isinstance(api_doc, ModuleDoc): lineno += 1
+            for lineno in range(lineno, len(lines)):
+                if lines[lineno].split('#', 1)[0].strip():
+                    api_doc.docstring_lineno = lineno + 1
+                    return lineno + 1
+        except IOError: pass
+        except TypeError: pass
+        except IndexError:
+            log.warning('inspect.findsource(%s) raised IndexError'
+                        % api_doc.canonical_name)
+    return None
+
+class _DevNull:
+    """
+    A "file-like" object that discards anything that is written and
+    always reports end-of-file when read.  C{_DevNull} is used by
+    L{_import()} to discard output when importing modules; and to
+    ensure that stdin appears closed.
+    """
+    def __init__(self):
+        self.closed = 1
+        self.mode = 'r+'
+        self.softspace = 0
+        self.name='</dev/null>'
+    def close(self): pass
+    def flush(self): pass
+    def read(self, size=0): return ''
+    def readline(self, size=0): return ''
+    def readlines(self, sizehint=0): return []
+    def seek(self, offset, whence=0): pass
+    def tell(self): return 0L
+    def truncate(self, size=0): pass
+    def write(self, str): pass
+    def writelines(self, sequence): pass
+    xreadlines = readlines
+_dev_null = _DevNull()
+    
+######################################################################
+## Zope InterfaceClass
+######################################################################
+
+try:
+    from zope.interface.interface import InterfaceClass as _ZopeInterfaceClass
+    register_class_type(_ZopeInterfaceClass)
+except:
+    pass
+
+######################################################################
+## Zope Extension classes
+######################################################################
+
+try:
+    # Register type(ExtensionClass.ExtensionClass)
+    from ExtensionClass import ExtensionClass as _ExtensionClass
+    _ZopeType = type(_ExtensionClass)
+    def _is_zope_type(val):
+        return isinstance(val, _ZopeType)
+    register_introspecter(_is_zope_type, introspect_class)
+
+    # Register ExtensionClass.*MethodType
+    from ExtensionClass import PythonMethodType as _ZopeMethodType
+    from ExtensionClass import ExtensionMethodType as _ZopeCMethodType
+    def _is_zope_method(val):
+        return isinstance(val, (_ZopeMethodType, _ZopeCMethodType))
+    register_introspecter(_is_zope_method, introspect_routine)
+except:
+    pass
+                         
+
+
+    
+# [xx]
+0 # hm..  otherwise the following gets treated as a docstring!  ouch!
+"""
+######################################################################
+## Zope Extension...
+######################################################################
+class ZopeIntrospecter(Introspecter):
+    VALUEDOC_CLASSES = Introspecter.VALUEDOC_CLASSES.copy()
+    VALUEDOC_CLASSES.update({
+        'module': ZopeModuleDoc,
+        'class': ZopeClassDoc,
+        'interface': ZopeInterfaceDoc,
+        'attribute': ZopeAttributeDoc,
+        })
+    
+    def add_module_child(self, child, child_name, module_doc):
+        if isinstance(child, zope.interfaces.Interface):
+            module_doc.add_zope_interface(child_name)
+        else:
+            Introspecter.add_module_child(self, child, child_name, module_doc)
+
+    def add_class_child(self, child, child_name, class_doc):
+        if isinstance(child, zope.interfaces.Interface):
+            class_doc.add_zope_interface(child_name)
+        else:
+            Introspecter.add_class_child(self, child, child_name, class_doc)
+
+    def introspect_zope_interface(self, interface, interfacename):
+        pass # etc...
+"""        
diff --git a/epydoc/docparser.py b/epydoc/docparser.py
new file mode 100644
index 0000000..b52e226
--- /dev/null
+++ b/epydoc/docparser.py
@@ -0,0 +1,2113 @@
+# epydoc -- Source code parsing
+#
+# Copyright (C) 2005 Edward Loper
+# Author: Edward Loper <edloper at loper.org>
+# URL: <http://epydoc.sf.net>
+#
+# $Id: docparser.py 1673 2008-01-29 05:42:58Z edloper $
+
+"""
+Extract API documentation about python objects by parsing their source
+code.
+
+The function L{parse_docs()}, which provides the main interface
+of this module, reads and parses the Python source code for a
+module, and uses it to create an L{APIDoc} object containing
+the API documentation for the variables and values defined in
+that modules.
+
+Currently, C{parse_docs()} extracts documentation from the following
+source code constructions:
+
+  - module docstring
+  - import statements
+  - class definition blocks
+  - function definition blocks
+  - assignment statements
+    - simple assignment statements
+    - assignment statements with multiple C{'='}s
+    - assignment statements with unpacked left-hand sides
+    - assignment statements that wrap a function in classmethod
+      or staticmethod.
+    - assignment to special variables __path__, __all__, and
+      __docformat__.
+  - delete statements
+
+C{parse_docs()} does not yet support the following source code
+constructions:
+
+  - assignment statements that create properties
+
+By default, C{parse_docs()} will expore the contents of top-level
+C{try} and C{if} blocks.  If desired, C{parse_docs()} can also
+be configured to explore the contents of C{while} and C{for} blocks.
+(See the configuration constants, below.)
+
+ at todo: Make it possible to extend the functionality of C{parse_docs()},
+       by replacing process_line with a dispatch table that can be
+       customized (similarly to C{docintrospector.register_introspector()}).
+"""
+__docformat__ = 'epytext en'
+
+######################################################################
+## Imports
+######################################################################
+
+# Python source code parsing:
+import token, tokenize
+# Finding modules:
+import imp
+# File services:
+import os, os.path, sys
+# Unicode:
+import codecs
+# API documentation encoding:
+from epydoc.apidoc import *
+# For looking up the docs of builtins:
+import __builtin__, exceptions
+import epydoc.docintrospecter 
+# Misc utility functions:
+from epydoc.util import *
+# Backwards compatibility
+from epydoc.compat import *
+
+######################################################################
+## Doc Parser
+######################################################################
+
+class ParseError(Exception):
+    """
+    An exception that is used to signify that C{docparser} encountered
+    syntactically invalid Python code while processing a Python source
+    file.
+    """
+
+_moduledoc_cache = {}
+"""A cache of C{ModuleDoc}s that we've already created.
+C{_moduledoc_cache} is a dictionary mapping from filenames to
+C{ValueDoc} objects.
+ at type: C{dict}"""
+
+#////////////////////////////////////////////////////////////
+# Configuration Constants
+#////////////////////////////////////////////////////////////
+
+#{ Configuration Constants: Control Flow 
+PARSE_TRY_BLOCKS = True
+"""Should the contents of C{try} blocks be examined?"""
+PARSE_EXCEPT_BLOCKS = True
+"""Should the contents of C{except} blocks be examined?"""
+PARSE_FINALLY_BLOCKS = True
+"""Should the contents of C{finally} blocks be examined?"""
+PARSE_IF_BLOCKS = True
+"""Should the contents of C{if} blocks be examined?"""
+PARSE_ELSE_BLOCKS = True
+"""Should the contents of C{else} and C{elif} blocks be examined?"""
+PARSE_WHILE_BLOCKS = False
+"""Should the contents of C{while} blocks be examined?"""
+PARSE_FOR_BLOCKS = False
+"""Should the contents of C{for} blocks be examined?"""
+
+#{ Configuration Constants: Imports
+IMPORT_HANDLING = 'link'
+"""What should C{docparser} do when it encounters an import
+statement?
+  - C{'link'}: Create variabledoc objects with imported_from pointers
+    to the source object.
+  - C{'parse'}: Parse the imported file, to find the actual
+    documentation for the imported object.  (This will fall back
+    to the 'link' behavior if the imported file can't be parsed,
+    e.g., if it's a builtin.)
+"""
+
+IMPORT_STAR_HANDLING = 'parse'
+"""When C{docparser} encounters a C{'from M{m} import *'}
+statement, and is unable to parse C{M{m}} (either because
+L{IMPORT_HANDLING}=C{'link'}, or because parsing failed), how
+should it determine the list of identifiers expored by C{M{m}}?
+  - C{'ignore'}: ignore the import statement, and don't create
+    any new variables.
+  - C{'parse'}: parse it to find a list of the identifiers that it
+    exports.  (This will fall back to the 'ignore' behavior if the
+    imported file can't be parsed, e.g., if it's a builtin.)
+  - C{'introspect'}: import the module and introspect it (using C{dir})
+    to find a list of the identifiers that it exports.  (This will
+    fall back to the 'ignore' behavior if the imported file can't
+    be parsed, e.g., if it's a builtin.)
+"""
+
+DEFAULT_DECORATOR_BEHAVIOR = 'transparent'
+"""When C{DocParse} encounters an unknown decorator, what should
+it do to the documentation of the decorated function?
+  - C{'transparent'}: leave the function's documentation as-is.
+  - C{'opaque'}: replace the function's documentation with an
+    empty C{ValueDoc} object, reflecting the fact that we have no
+    knowledge about what value the decorator returns.
+"""
+
+BASE_HANDLING = 'parse'#'link'
+"""What should C{docparser} do when it encounters a base class that
+was imported from another module?
+  - C{'link'}: Create a valuedoc with a C{proxy_for} pointer to the
+    base class.
+  - C{'parse'}: Parse the file containing the base class, to find
+    the actual documentation for it.  (This will fall back to the
+    'link' behavior if the imported file can't be parsed, e.g., if
+    it's a builtin.)
+"""
+
+#{ Configuration Constants: Comment docstrings
+COMMENT_DOCSTRING_MARKER = '#:'
+"""The prefix used to mark comments that contain attribute
+docstrings for variables."""
+
+#{ Configuration Constants: Grouping
+START_GROUP_MARKER = '#{'
+"""The prefix used to mark a comment that starts a group.  This marker
+should be followed (on the same line) by the name of the group.
+Following a start-group comment, all variables defined at the same
+indentation level will be assigned to this group name, until the
+parser reaches the end of the file, a matching end-group comment, or
+another start-group comment at the same indentation level.
+"""
+
+END_GROUP_MARKER = '#}'
+"""The prefix used to mark a comment that ends a group.  See
+L{START_GROUP_MARKER}."""
+
+#/////////////////////////////////////////////////////////////////
+#{ Module parser
+#/////////////////////////////////////////////////////////////////
+
+def parse_docs(filename=None, name=None, context=None, is_script=False):
+    """
+    Generate the API documentation for a specified object by
+    parsing Python source files, and return it as a L{ValueDoc}.
+    The object to generate documentation for may be specified
+    using the C{filename} parameter I{or} the C{name} parameter.
+    (It is an error to specify both a filename and a name; or to
+    specify neither a filename nor a name).
+
+    @param filename: The name of the file that contains the python
+        source code for a package, module, or script.  If
+        C{filename} is specified, then C{parse} will return a
+        C{ModuleDoc} describing its contents.
+    @param name: The fully-qualified python dotted name of any
+        value (including packages, modules, classes, and
+        functions).  C{parse_docs()} will automatically figure out
+        which module(s) it needs to parse in order to find the
+        documentation for the specified object.
+    @param context: The API documentation for the package that
+        contains C{filename}.  If no context is given, then
+        C{filename} is assumed to contain a top-level module or
+        package.  It is an error to specify a C{context} if the
+        C{name} argument is used.
+    @rtype: L{ValueDoc}
+    """
+    # Always introspect __builtins__ & exceptions (e.g., in case
+    # they're used as base classes.)
+    epydoc.docintrospecter.introspect_docs(__builtin__)
+    epydoc.docintrospecter.introspect_docs(exceptions)
+    
+    # If our input is a python object name, then delegate to
+    # _find().
+    if filename is None and name is not None:
+        if context:
+            raise ValueError("context should only be specified together "
+                             "with filename, not with name.")
+        name = DottedName(name)
+        val_doc = _find(name)
+        if val_doc.canonical_name is UNKNOWN:
+            val_doc.canonical_name = name
+        return val_doc
+
+    # If our input is a filename, then create a ModuleDoc for it,
+    # and use process_file() to populate its attributes.
+    elif filename is not None and name is None:
+        # Use a python source version, if possible.
+        if not is_script:
+            try: filename = py_src_filename(filename)
+            except ValueError, e: raise ImportError('%s' % e)
+
+        # Check the cache, first.
+        if filename in _moduledoc_cache:
+            return _moduledoc_cache[filename]
+        
+        log.info("Parsing %s" % filename)
+
+        # If the context wasn't provided, then check if the file is in
+        # a package directory.  If so, then update basedir & name to
+        # contain the topmost package's directory and the fully
+        # qualified name for this file.  (This update assume the
+        # default value of __path__ for the parent packages; if the
+        # parent packages override their __path__s, then this can
+        # cause us not to find the value.)
+        if context is None and not is_script:
+            basedir = os.path.split(filename)[0]
+            name = os.path.splitext(os.path.split(filename)[1])[0]
+            if name == '__init__':
+                basedir, name = os.path.split(basedir)
+            context = _parse_package(basedir)
+
+        # Figure out the canonical name of the module we're parsing.
+        if not is_script:
+            module_name, is_pkg = _get_module_name(filename, context)
+        else:
+            module_name = DottedName(munge_script_name(filename))
+            is_pkg = False
+
+        # Create a new ModuleDoc for the module, & add it to the cache.
+        module_doc = ModuleDoc(canonical_name=module_name, variables={},
+                               sort_spec=[], imports=[],
+                               filename=filename, package=context,
+                               is_package=is_pkg, submodules=[],
+                               docs_extracted_by='parser')
+        module_doc.defining_module = module_doc
+        _moduledoc_cache[filename] = module_doc
+
+        # Set the module's __path__ to its default value.
+        if is_pkg:
+            module_doc.path = [os.path.split(module_doc.filename)[0]]
+        
+        # Add this module to the parent package's list of submodules.
+        if context is not None:
+            context.submodules.append(module_doc)
+
+        # Tokenize & process the contents of the module's source file.
+        try:
+            process_file(module_doc)
+        except tokenize.TokenError, e:
+            msg, (srow, scol) = e.args
+            raise ParseError('Error during parsing: %s '
+                             '(%s, line %d, char %d)' %
+                             (msg, module_doc.filename, srow, scol))
+        except IndentationError, e:
+            raise ParseError('Error during parsing: %s (%s)' %
+                             (e, module_doc.filename))
+
+        # Handle any special variables (__path__, __docformat__, etc.)
+        handle_special_module_vars(module_doc)
+
+        # Return the completed ModuleDoc
+        return module_doc
+    else:
+        raise ValueError("Expected exactly one of the following "
+                         "arguments: name, filename")
+
+def _parse_package(package_dir):
+    """
+    If the given directory is a package directory, then parse its
+    __init__.py file (and the __init__.py files of all ancestor
+    packages); and return its C{ModuleDoc}.
+    """
+    if not is_package_dir(package_dir):
+        return None
+    parent_dir = os.path.split(package_dir)[0]
+    parent_doc = _parse_package(parent_dir)
+    package_file = os.path.join(package_dir, '__init__')
+    return parse_docs(filename=package_file, context=parent_doc)
+        
+# Special vars:
+# C{__docformat__}, C{__all__}, and C{__path__}.
+def handle_special_module_vars(module_doc):
+    # If __docformat__ is defined, parse its value.
+    toktree = _module_var_toktree(module_doc, '__docformat__')
+    if toktree is not None:
+        try: module_doc.docformat = parse_string(toktree)
+        except: pass
+        del module_doc.variables['__docformat__']
+            
+    # If __all__ is defined, parse its value.
+    toktree = _module_var_toktree(module_doc, '__all__')
+    if toktree is not None:
+        try:
+            public_names = set(parse_string_list(toktree))
+            for name, var_doc in module_doc.variables.items():
+                if name in public_names:
+                    var_doc.is_public = True
+                    if not isinstance(var_doc, ModuleDoc):
+                        var_doc.is_imported = False
+                else:
+                    var_doc.is_public = False
+        except ParseError:
+            # If we couldn't parse the list, give precedence to introspection.
+            for name, var_doc in module_doc.variables.items():
+                if not isinstance(var_doc, ModuleDoc):
+                    var_doc.is_imported = UNKNOWN
+        del module_doc.variables['__all__']
+
+    # If __path__ is defined, then extract its value (pkgs only)
+    if module_doc.is_package:
+        toktree = _module_var_toktree(module_doc, '__path__')
+        if toktree is not None:
+            try:
+                module_doc.path = parse_string_list(toktree)
+            except ParseError:
+                pass # [xx]
+            del module_doc.variables['__path__']
+
+def _module_var_toktree(module_doc, name):
+    var_doc = module_doc.variables.get(name)
+    if (var_doc is None or var_doc.value in (None, UNKNOWN) or
+        var_doc.value.toktree is UNKNOWN):
+        return None
+    else:
+        return var_doc.value.toktree
+
+#////////////////////////////////////////////////////////////
+#{ Module Lookup
+#////////////////////////////////////////////////////////////
+
+def _find(name, package_doc=None):
+    """
+    Return the API documentaiton for the object whose name is
+    C{name}.  C{package_doc}, if specified, is the API
+    documentation for the package containing the named object.
+    """
+    # If we're inside a package, then find the package's path.
+    if package_doc is None:
+        path = None
+    elif package_doc.path is not UNKNOWN:
+        path = package_doc.path
+    else:
+        path = [os.path.split(package_doc.filename)[0]]
+
+    # The leftmost identifier in `name` should be a module or
+    # package on the given path; find it and parse it.
+    filename = _get_filename(name[0], path)
+    module_doc = parse_docs(filename, context=package_doc)
+
+    # If the name just has one identifier, then the module we just
+    # parsed is the object we're looking for; return it.
+    if len(name) == 1: return module_doc
+
+    # Otherwise, we're looking for something inside the module.
+    # First, check to see if it's in a variable (but ignore
+    # variables that just contain imported submodules).
+    if not _is_submodule_import_var(module_doc, name[1]):
+        try: return _find_in_namespace(name[1:], module_doc)
+        except ImportError: pass
+
+    # If not, then check to see if it's in a subpackage.
+    if module_doc.is_package:
+        return _find(name[1:], module_doc)
+
+    # If it's not in a variable or a subpackage, then we can't
+    # find it.
+    raise ImportError('Could not find value')
+
+def _is_submodule_import_var(module_doc, var_name):
+    """
+    Return true if C{var_name} is the name of a variable in
+    C{module_doc} that just contains an C{imported_from} link to a
+    submodule of the same name.  (I.e., is a variable created when
+    a package imports one of its own submodules.)
+    """
+    var_doc = module_doc.variables.get(var_name)
+    full_var_name = DottedName(module_doc.canonical_name, var_name)
+    return (var_doc is not None and
+            var_doc.imported_from == full_var_name)
+    
+def _find_in_namespace(name, namespace_doc):
+    if name[0] not in namespace_doc.variables:
+        raise ImportError('Could not find value')
+    
+    # Look up the variable in the namespace.
+    var_doc = namespace_doc.variables[name[0]]
+    if var_doc.value is UNKNOWN:
+        raise ImportError('Could not find value')
+    val_doc = var_doc.value
+
+    # If the variable's value was imported, then follow its
+    # alias link.
+    if var_doc.imported_from not in (None, UNKNOWN):
+        return _find(var_doc.imported_from+name[1:])
+
+    # Otherwise, if the name has one identifier, then this is the
+    # value we're looking for; return it.
+    elif len(name) == 1:
+        return val_doc
+
+    # Otherwise, if this value is a namespace, look inside it.
+    elif isinstance(val_doc, NamespaceDoc):
+        return _find_in_namespace(name[1:], val_doc)
+
+    # Otherwise, we ran into a dead end.
+    else:
+        raise ImportError('Could not find value')
+    
+def _get_filename(identifier, path=None):
+    if path is UNKNOWN: path = None
+    try:
+        fp, filename, (s,m,typ) = imp.find_module(identifier, path)
+        if fp is not None: fp.close()
+    except ImportError:
+        raise ImportError, 'No Python source file found.'
+
+    if typ == imp.PY_SOURCE:
+        return filename
+    elif typ == imp.PY_COMPILED:
+        # See if we can find a corresponding non-compiled version.
+        filename = re.sub('.py\w$', '.py', filename)
+        if not os.path.exists(filename):
+            raise ImportError, 'No Python source file found.'
+        return filename
+    elif typ == imp.PKG_DIRECTORY:
+        filename = os.path.join(filename, '__init__.py')
+        if not os.path.exists(filename):
+            filename = os.path.join(filename, '__init__.pyw')
+            if not os.path.exists(filename):
+                raise ImportError, 'No package file found.'
+        return filename
+    elif typ == imp.C_BUILTIN:
+        raise ImportError, 'No Python source file for builtin modules.'
+    elif typ == imp.C_EXTENSION:
+        raise ImportError, 'No Python source file for c extensions.'
+    else:
+        raise ImportError, 'No Python source file found.'
+
+#/////////////////////////////////////////////////////////////////
+#{ File tokenization loop
+#/////////////////////////////////////////////////////////////////
+
+def process_file(module_doc):
+    """
+    Read the given C{ModuleDoc}'s file, and add variables
+    corresponding to any objects defined in that file.  In
+    particular, read and tokenize C{module_doc.filename}, and
+    process each logical line using L{process_line()}.
+    """
+    # Keep track of the current line number:
+    lineno = None
+    
+    # Use this list to collect the tokens on a single logical line:
+    line_toks = []
+    
+    # This list contains one APIDoc for each indentation level.
+    # The first element is the APIDoc for the module, and each
+    # subsequent element is the APIDoc for the object at that
+    # indentation level.  The final element of the list is the
+    # C{APIDoc} for the entity that we're currently processing.
+    parent_docs = [module_doc]
+
+    # The APIDoc for the object that was defined by the previous
+    # line, if any; or None otherwise.  This is used to update
+    # parent_docs when we encounter an indent; and to decide what
+    # object (if any) is described by a docstring.
+    prev_line_doc = module_doc
+
+    # A list of comments that occur before or on the current
+    # logical line, used to build the comment docstring.  Each
+    # element is a tuple (comment_text, comment_lineno).
+    comments = []
+
+    # A list of decorator lines that occur before the current
+    # logical line.  This is used so we can process a function
+    # declaration line and its decorators all at once.
+    decorators = []
+
+    # A list of group names, one for each indentation level.  This is
+    # used to keep track groups that are defined by comment markers
+    # START_GROUP_MARKER and END_GROUP_MARKER.
+    groups = [None]
+
+    # When we encounter a comment start group marker, set this to the
+    # name of the group; but wait until we're ready to process the
+    # next line before we actually set groups[-1] to this value.  This
+    # is necessary because at the top of a block, the tokenizer gives
+    # us comments before the INDENT token; but if we encounter a group
+    # start marker at the top of a block, then we want it to apply
+    # inside that block, not outside it.
+    start_group = None
+
+    # Check if the source file declares an encoding.
+    encoding = get_module_encoding(module_doc.filename)
+
+    # The token-eating loop:
+    try:
+        module_file = codecs.open(module_doc.filename, 'rU', encoding)
+    except LookupError:
+        log.warning("Unknown encoding %r for %s; using the default"
+                    "encoding instead (iso-8859-1)" %
+                    (encoding, module_doc.filename))
+        encoding = 'iso-8859-1'
+        module_file = codecs.open(module_doc.filename, 'rU', encoding)
+    tok_iter = tokenize.generate_tokens(module_file.readline)
+    for toktype, toktext, (srow,scol), (erow,ecol), line_str in tok_iter:
+        # BOM encoding marker: ignore.
+        if (toktype == token.ERRORTOKEN and
+            (toktext == u'\ufeff' or
+             toktext.encode(encoding) == '\xef\xbb\xbf')):
+            pass
+            
+        # Error token: abort
+        elif toktype == token.ERRORTOKEN:
+            raise ParseError('Error during parsing: invalid syntax '
+                             '(%s, line %d, char %d: %r)' %
+                             (module_doc.filename, srow, scol, toktext))
+        
+        # Indent token: update the parent_doc stack.
+        elif toktype == token.INDENT:
+            if prev_line_doc is None:
+                parent_docs.append(parent_docs[-1])
+            else:
+                parent_docs.append(prev_line_doc)
+            groups.append(None)
+                
+        # Dedent token: update the parent_doc stack.
+        elif toktype == token.DEDENT:
+            if line_toks == []:
+                parent_docs.pop()
+                groups.pop()
+            else:
+                # This *should* only happen if the file ends on an
+                # indented line, with no final newline.
+                # (otherwise, this is the wrong thing to do.)
+                pass
+            
+        # Line-internal newline token: if we're still at the start of
+        # the logical line, and we've seen one or more comment lines,
+        # then discard them: blank lines are not allowed between a
+        # comment block and the thing it describes.
+        elif toktype == tokenize.NL:
+            if comments and not line_toks:
+                log.warning('Ignoring docstring comment block followed by '
+                            'a blank line in %r on line %r' %
+                            (module_doc.filename, srow-1))
+                comments = []
+                
+        # Comment token: add to comments if appropriate.
+        elif toktype == tokenize.COMMENT:
+            if toktext.startswith(COMMENT_DOCSTRING_MARKER):
+                comment_line = toktext[len(COMMENT_DOCSTRING_MARKER):].rstrip()
+                if comment_line.startswith(" "):
+                    comment_line = comment_line[1:]
+                comments.append( [comment_line, srow])
+            elif toktext.startswith(START_GROUP_MARKER):
+                start_group = toktext[len(START_GROUP_MARKER):].strip()
+            elif toktext.startswith(END_GROUP_MARKER):
+                for i in range(len(groups)-1, -1, -1):
+                    if groups[i]:
+                        groups[i] = None
+                        break
+                else:
+                    log.warning("Got group end marker without a corresponding "
+                                "start marker in %r on line %r" % 
+                                (module_doc.filename, srow))
+            
+        # Normal token: Add it to line_toks.  (If it's a non-unicode
+        # string literal, then we need to re-encode using the file's
+        # encoding, to get back to the original 8-bit data; and then
+        # convert that string with 8-bit data to a 7-bit ascii
+        # representation.)
+        elif toktype != token.NEWLINE and toktype != token.ENDMARKER:
+            if lineno is None: lineno = srow
+            if toktype == token.STRING:
+                str_prefixes = re.match('[^\'"]*', toktext).group()
+                if 'u' not in str_prefixes:
+                    s = toktext.encode(encoding)
+                    toktext = decode_with_backslashreplace(s)
+            line_toks.append( (toktype, toktext) )
+            
+        # Decorator line: add it to the decorators list.
+        elif line_toks and line_toks[0] == (token.OP, '@'):
+            decorators.append(shallow_parse(line_toks))
+            line_toks = []
+
+        # End of line token, but nothing to do.
+        elif line_toks == []:
+            pass
+            
+        # End of line token: parse the logical line & process it.
+        else:
+            if start_group:
+                groups[-1] = start_group
+                start_group = None
+
+            if parent_docs[-1] != 'skip_block':
+                try:
+                    prev_line_doc = process_line(
+                        shallow_parse(line_toks), parent_docs, prev_line_doc, 
+                        lineno, comments, decorators, encoding)
+                except ParseError, e:
+                    raise ParseError('Error during parsing: invalid '
+                                     'syntax (%s, line %d) -- %s' %
+                                     (module_doc.filename, lineno, e))
+                except KeyboardInterrupt, e: raise
+                except Exception, e:
+                    log.error('Internal error during parsing (%s, line '
+                              '%s):\n%s' % (module_doc.filename, lineno, e))
+                    raise
+
+                # grouping...
+                if groups[-1] and prev_line_doc not in (None, 'skip_block'):
+                    if isinstance(prev_line_doc, VariableDoc):
+                        # prev_line_doc's container will only be
+                        # UNKNOWN if it's an instance variable that
+                        # didn't have a doc-comment, but might still
+                        # be followed by a docstring.  Since we
+                        # tokenize in order, we can't do lookahead to
+                        # see if the variable will have a comment; but
+                        # it should only be added to the container if
+                        # it does.  So we defer the grouping of that
+                        # to be handled by process_docstring instead.
+                        if prev_line_doc.container is not UNKNOWN:
+                            add_to_group(prev_line_doc.container,
+                                         prev_line_doc, groups[-1])
+                    elif isinstance(parent_docs[-1], NamespaceDoc):
+                        add_to_group(parent_docs[-1], prev_line_doc,
+                                     groups[-1])
+            else:
+                prev_line_doc = None
+
+            # Reset line contents.
+            line_toks = []
+            lineno = None
+            comments = []
+            decorators = []
+            
+def add_to_group(container, api_doc, group_name):
+    if container.group_specs is UNKNOWN:
+        container.group_specs = []
+
+    if isinstance(api_doc, VariableDoc):
+        var_name = api_doc.name
+    else:
+        if api_doc.canonical_name is UNKNOWN: log.debug('ouch', `api_doc`)
+        var_name = api_doc.canonical_name[-1]
+
+    for (name, group_vars) in container.group_specs:
+        if name == group_name:
+            group_vars.append(var_name)
+            return
+    else:
+        container.group_specs.append( (group_name, [var_name]) )
+
+def script_guard(line):
+    """Detect the idiomatic trick C{if __name__ == "__main__":}"""
+    return (len(line) == 5
+        and line[1][1] == '__name__' # this is the most selective
+        and line[0][1] == 'if'
+        and line[2][1] == '=='
+        and line[4][1] == ':'
+        and line[3][1][1:-1] == '__main__')
+
+#/////////////////////////////////////////////////////////////////
+#{ Shallow parser
+#/////////////////////////////////////////////////////////////////
+
+def shallow_parse(line_toks):
+    """
+    Given a flat list of tokens, return a nested tree structure
+    (called a X{token tree}), whose leaves are identical to the
+    original list, but whose structure reflects the structure
+    implied by the grouping tokens (i.e., parenthases, braces, and
+    brackets).  If the parenthases, braces, and brackets do not
+    match, or are not balanced, then raise a ParseError.
+    
+    Assign some structure to a sequence of structure (group parens).
+    """
+    stack = [[]]
+    parens = []
+    for tok in line_toks:
+        toktype, toktext = tok
+        if toktext in ('(','[','{'):
+            parens.append(tok)
+            stack.append([tok])
+        elif toktext in ('}',']',')'):
+            if not parens:
+                raise ParseError('Unbalanced parens')
+            left_paren = parens.pop()[1]
+            if left_paren+toktext not in ('()', '[]', '{}'):
+                raise ParseError('Mismatched parens')
+            lst = stack.pop()
+            lst.append(tok)
+            stack[-1].append(lst)
+        else:
+            stack[-1].append(tok)
+    if len(stack) != 1 or len(parens) != 0:
+        raise ParseError('Unbalanced parens')
+    return stack[0]
+
+#/////////////////////////////////////////////////////////////////
+#{ Line processing
+#/////////////////////////////////////////////////////////////////
+# The methods process_*() are used to handle lines.
+
+def process_line(line, parent_docs, prev_line_doc, lineno,
+                 comments, decorators, encoding):
+    """
+    @return: C{new-doc}, C{decorator}..?
+    """
+    args = (line, parent_docs, prev_line_doc, lineno,
+            comments, decorators, encoding)
+
+    if not line: # blank line.
+        return None
+    elif (token.OP, ':') in line[:-1]:
+        return process_one_line_block(*args)
+    elif (token.OP, ';') in line:
+        return process_multi_stmt(*args)
+    elif line[0] == (token.NAME, 'def'):
+        return process_funcdef(*args)
+    elif line[0] == (token.OP, '@'):
+        return process_funcdef(*args)
+    elif line[0] == (token.NAME, 'class'):
+        return process_classdef(*args)
+    elif line[0] == (token.NAME, 'import'):
+        return process_import(*args)
+    elif line[0] == (token.NAME, 'from'):
+        return process_from_import(*args)
+    elif line[0] == (token.NAME, 'del'):
+        return process_del(*args)
+    elif len(line)==1 and line[0][0] == token.STRING:
+        return process_docstring(*args)
+    elif (token.OP, '=') in line:
+        return process_assignment(*args)
+    elif (line[0][0] == token.NAME and
+          line[0][1] in CONTROL_FLOW_KEYWORDS):
+        return process_control_flow_line(*args)
+    else:
+        return None
+        # [xx] do something with control structures like for/if?
+
+#/////////////////////////////////////////////////////////////////
+# Line handler: control flow
+#/////////////////////////////////////////////////////////////////
+
+CONTROL_FLOW_KEYWORDS = [
+    #: A list of the control flow keywords.  If a line begins with
+    #: one of these keywords, then it should be handled by
+    #: C{process_control_flow_line}.
+    'if', 'elif', 'else', 'while', 'for', 'try', 'except', 'finally']
+
+def process_control_flow_line(line, parent_docs, prev_line_doc,
+                              lineno, comments, decorators, encoding):
+    keyword = line[0][1]
+
+    # If it's a 'for' block: create the loop variable.
+    if keyword == 'for' and PARSE_FOR_BLOCKS:
+        loopvar_name = parse_dotted_name(
+            split_on(line[1:], (token.NAME, 'in'))[0])
+        parent = get_lhs_parent(loopvar_name, parent_docs)
+        if parent is not None:
+            var_doc = VariableDoc(name=loopvar_name[-1], is_alias=False, 
+                                  is_imported=False, is_instvar=False,
+                                  docs_extracted_by='parser')
+            set_variable(parent, var_doc)
+    
+    if ((keyword == 'if' and PARSE_IF_BLOCKS and not script_guard(line)) or
+        (keyword == 'elif' and PARSE_ELSE_BLOCKS) or
+        (keyword == 'else' and PARSE_ELSE_BLOCKS) or
+        (keyword == 'while' and PARSE_WHILE_BLOCKS) or
+        (keyword == 'for' and PARSE_FOR_BLOCKS) or
+        (keyword == 'try' and PARSE_TRY_BLOCKS) or
+        (keyword == 'except' and PARSE_EXCEPT_BLOCKS) or
+        (keyword == 'finally' and PARSE_FINALLY_BLOCKS)):
+        # Return "None" to indicate that we should process the
+        # block using the same context that we were already in.
+        return None
+    else:
+        # Return 'skip_block' to indicate that we should ignore
+        # the contents of this block.
+        return 'skip_block'
+
+#/////////////////////////////////////////////////////////////////
+# Line handler: imports
+#/////////////////////////////////////////////////////////////////
+# [xx] I could optionally add ValueDoc's for the imported
+# variables with proxy_for set to the imported source; but
+# I don't think I gain much of anything by doing so.
+
+def process_import(line, parent_docs, prev_line_doc, lineno,
+                   comments, decorators, encoding):
+    if not isinstance(parent_docs[-1], NamespaceDoc): return
+    
+    names = split_on(line[1:], (token.OP, ','))
+    
+    for name in names:
+        name_pieces = split_on(name, (token.NAME, 'as'))
+        if len(name_pieces) == 1:
+            src_name = parse_dotted_name(name_pieces[0])
+            _import_var(src_name, parent_docs)
+        elif len(name_pieces) == 2:
+            if len(name_pieces[1]) != 1:
+                raise ParseError('Expected identifier after "as"')
+            src_name = parse_dotted_name(name_pieces[0])
+            var_name = parse_name(name_pieces[1][0])
+            _import_var_as(src_name, var_name, parent_docs)
+        else:
+            raise ParseError('Multiple "as" tokens in import')
+
+def process_from_import(line, parent_docs, prev_line_doc, lineno,
+                        comments, decorators, encoding):
+    if not isinstance(parent_docs[-1], NamespaceDoc): return
+    
+    pieces = split_on(line[1:], (token.NAME, 'import'))
+    if len(pieces) != 2 or not pieces[0] or not pieces[1]:
+        raise ParseError("Bad from-import")
+    lhs, rhs = pieces
+
+    # The RHS might be parenthasized, as specified by PEP 328:
+    # http://www.python.org/peps/pep-0328.html
+    if (len(rhs) == 1 and isinstance(rhs[0], list) and
+        rhs[0][0] == (token.OP, '(') and rhs[0][-1] == (token.OP, ')')):
+        rhs = rhs[0][1:-1]
+
+    # >>> from __future__ import nested_scopes
+    if lhs == [(token.NAME, '__future__')]:
+        return
+
+    # >>> from sys import *
+    elif rhs == [(token.OP, '*')]:
+        src_name = parse_dotted_name(lhs)
+        _process_fromstar_import(src_name, parent_docs)
+
+    # >>> from os.path import join, split
+    else:
+        # Allow relative imports in this case, as per PEP 328
+        src_name = parse_dotted_name(lhs, 
+            parent_name=parent_docs[-1].canonical_name)
+        parts = split_on(rhs, (token.OP, ','))
+        for part in parts:
+            # from m import x
+            if len(part) == 1:
+                var_name = parse_name(part[0])
+                _import_var_as(DottedName(src_name, var_name),
+                                    var_name, parent_docs)
+
+            # from m import x as y
+            elif len(part) == 3 and part[1] == (token.NAME, 'as'):
+                orig_name = parse_name(part[0])
+                var_name = parse_name(part[2])
+                _import_var_as(DottedName(src_name, orig_name),
+                                    var_name, parent_docs)
+
+            else:
+                ParseError("Bad from-import")
+
+def _process_fromstar_import(src, parent_docs):
+    """
+    Handle a statement of the form:
+        >>> from <src> import *
+
+    If L{IMPORT_HANDLING} is C{'parse'}, then first try to parse
+    the module C{M{<src>}}, and copy all of its exported variables
+    to C{parent_docs[-1]}.
+
+    Otherwise, try to determine the names of the variables exported by
+    C{M{<src>}}, and create a new variable for each export.  If
+    L{IMPORT_STAR_HANDLING} is C{'parse'}, then the list of exports if
+    found by parsing C{M{<src>}}; if it is C{'introspect'}, then the
+    list of exports is found by importing and introspecting
+    C{M{<src>}}.
+    """
+    # This is redundant: already checked by caller.
+    if not isinstance(parent_docs[-1], NamespaceDoc): return
+    
+    # If src is package-local, then convert it to a global name.
+    src = _global_name(src, parent_docs)
+
+    # Record the import
+    parent_docs[0].imports.append(src) # mark that it's .*??
+    
+    # [xx] add check for if we already have the source docs in our
+    # cache??
+
+    if (IMPORT_HANDLING == 'parse' or
+        IMPORT_STAR_HANDLING == 'parse'): # [xx] is this ok?
+        try: module_doc = _find(src)
+        except ImportError: module_doc = None
+        if isinstance(module_doc, ModuleDoc):
+            for name, imp_var in module_doc.variables.items():
+                # [xx] this is not exactly correct, but close.  It
+                # does the wrong thing if a __var__ is explicitly
+                # listed in __all__.
+                if (imp_var.is_public and
+                    not (name.startswith('__') and name.endswith('__'))):
+                    var_doc = _add_import_var(DottedName(src, name), name,
+                                              parent_docs[-1])
+                    if IMPORT_HANDLING == 'parse':
+                        var_doc.value = imp_var.value
+
+    # If we got here, then either IMPORT_HANDLING='link' or we
+    # failed to parse the `src` module.
+    if IMPORT_STAR_HANDLING == 'introspect':
+        try: module = __import__(str(src), {}, {}, [0])
+        except: return # We couldn't import it.
+        if module is None: return # We couldn't import it.
+        if hasattr(module, '__all__'):
+            names = list(module.__all__)
+        else:
+            names = [n for n in dir(module) if not n.startswith('_')]
+        for name in names:
+            _add_import_var(DottedName(src, name), name, parent_docs[-1])
+
+def _import_var(name, parent_docs):
+    """
+    Handle a statement of the form:
+        >>> import <name>
+
+    If L{IMPORT_HANDLING} is C{'parse'}, then first try to find
+    the value by parsing; and create an appropriate variable in
+    parentdoc.
+
+    Otherwise, add a variable for the imported variable.  (More than
+    one variable may be created for cases like C{'import a.b'}, where
+    we need to create a variable C{'a'} in parentdoc containing a
+    proxy module; and a variable C{'b'} in the proxy module.
+    """
+    # This is redundant: already checked by caller.
+    if not isinstance(parent_docs[-1], NamespaceDoc): return
+    
+    # If name is package-local, then convert it to a global name.
+    src = _global_name(name, parent_docs)
+    src_prefix = src[:len(src)-len(name)]
+
+    # Record the import
+    parent_docs[0].imports.append(name)
+    
+    # [xx] add check for if we already have the source docs in our
+    # cache??
+
+    if IMPORT_HANDLING == 'parse':
+        # Check to make sure that we can actually find the value.
+        try: val_doc = _find(src)
+        except ImportError: val_doc = None
+        if val_doc is not None:
+            # We found it; but it's not the value itself we want to
+            # import, but the module containing it; so import that
+            # module (=top_mod) and create a variable for it.
+            top_mod = src_prefix+name[0]
+            var_doc = _add_import_var(top_mod, name[0], parent_docs[-1])
+            var_doc.value = _find(DottedName(name[0]))
+            return
+
+    # If we got here, then either IMPORT_HANDLING='link', or we
+    # did not successfully find the value's docs by parsing; use
+    # a variable with an UNKNOWN value.
+    
+    # Create any necessary intermediate proxy module values.
+    container = parent_docs[-1]
+    for i, identifier in enumerate(name[:-1]):
+        if (identifier not in container.variables or
+            not isinstance(container.variables[identifier], ModuleDoc)):
+            var_doc = _add_import_var(name[:i+1], identifier, container)
+            var_doc.value = ModuleDoc(variables={}, sort_spec=[],
+                                      proxy_for=src_prefix+name[:i+1],
+                                      submodules={}, 
+                                      docs_extracted_by='parser')
+        container = container.variables[identifier].value
+
+    # Add the variable to the container.
+    _add_import_var(src, name[-1], container)
+
+def _import_var_as(src, name, parent_docs):
+    """
+    Handle a statement of the form:
+        >>> import src as name
+        
+    If L{IMPORT_HANDLING} is C{'parse'}, then first try to find
+    the value by parsing; and create an appropriate variable in
+    parentdoc.
+
+    Otherwise, create a variables with its C{imported_from} attribute
+    pointing to the imported object.
+    """
+    # This is redundant: already checked by caller.
+    if not isinstance(parent_docs[-1], NamespaceDoc): return
+    
+    # If src is package-local, then convert it to a global name.
+    src = _global_name(src, parent_docs)
+    
+    # Record the import
+    parent_docs[0].imports.append(src)
+    
+    if IMPORT_HANDLING == 'parse':
+        # Parse the value and create a variable for it.
+        try: val_doc = _find(src)
+        except ImportError: val_doc = None
+        if val_doc is not None:
+            var_doc = VariableDoc(name=name, value=val_doc,
+                                  is_imported=True, is_alias=False,
+                                  imported_from=src,
+                                  docs_extracted_by='parser')
+            set_variable(parent_docs[-1], var_doc)
+            return
+
+    # If we got here, then either IMPORT_HANDLING='link', or we
+    # did not successfully find the value's docs by parsing; use a
+    # variable with a proxy value.
+    _add_import_var(src, name, parent_docs[-1])
+
+def _add_import_var(src, name, container):
+    """
+    Add a new imported variable named C{name} to C{container}, with
+    C{imported_from=src}.
+    """
+    var_doc = VariableDoc(name=name, is_imported=True, is_alias=False,
+                          imported_from=src, docs_extracted_by='parser')
+    set_variable(container, var_doc)
+    return var_doc
+
+def _global_name(name, parent_docs):
+    """
+    If the given name is package-local (relative to the current
+    context, as determined by C{parent_docs}), then convert it
+    to a global name.
+    """
+    # Get the containing package from parent_docs.
+    if parent_docs[0].is_package:
+        package = parent_docs[0]
+    else:
+        package = parent_docs[0].package
+
+    # Check each package (from closest to furthest) to see if it
+    # contains a module named name[0]; if so, then treat `name` as
+    # relative to that package.
+    while package not in (None, UNKNOWN):
+        try:
+            fp = imp.find_module(name[0], package.path)[0]
+            if fp is not None: fp.close()
+        except ImportError:
+            # No submodule found here; try the next package up.
+            package = package.package
+            continue
+        # A submodule was found; return its name.
+        return package.canonical_name + name
+
+    # We didn't find any package containing `name`; so just return
+    # `name` as-is.
+    return name
+
+#/////////////////////////////////////////////////////////////////
+# Line handler: assignment
+#/////////////////////////////////////////////////////////////////
+
+def process_assignment(line, parent_docs, prev_line_doc, lineno,
+                       comments, decorators, encoding):
+    # Divide the assignment statement into its pieces.
+    pieces = split_on(line, (token.OP, '='))
+
+    lhs_pieces = pieces[:-1]
+    rhs = pieces[-1]
+
+    # Decide whether the variable is an instance variable or not.
+    # If it's an instance var, then discard the value.
+    is_instvar = lhs_is_instvar(lhs_pieces, parent_docs)
+    
+    # if it's not an instance var, and we're not in a namespace,
+    # then it's just a local var -- so ignore it.
+    if not (is_instvar or isinstance(parent_docs[-1], NamespaceDoc)):
+        return None
+    
+    # Evaluate the right hand side.
+    if not is_instvar:
+        rhs_val, is_alias = rhs_to_valuedoc(rhs, parent_docs)
+    else:
+        rhs_val, is_alias = UNKNOWN, False
+
+    # Assign the right hand side value to each left hand side.
+    # (Do the rightmost assignment first)
+    lhs_pieces.reverse()
+    for lhs in lhs_pieces:
+        # Try treating the LHS as a simple dotted name.
+        try: lhs_name = parse_dotted_name(lhs)
+        except: lhs_name = None
+        if lhs_name is not None:
+            lhs_parent = get_lhs_parent(lhs_name, parent_docs)
+            if lhs_parent is None: continue
+
+            # Skip a special class variable.
+            if lhs_name[-1] == '__slots__':
+                continue
+
+            # Create the VariableDoc.
+            var_doc = VariableDoc(name=lhs_name[-1], value=rhs_val,
+                                  is_imported=False, is_alias=is_alias,
+                                  is_instvar=is_instvar,
+                                  docs_extracted_by='parser')
+            # Extract a docstring from the comments, when present,
+            # but only if there's a single LHS.
+            if len(lhs_pieces) == 1:
+                add_docstring_from_comments(var_doc, comments)
+
+            # Assign the variable to the containing namespace,
+            # *unless* the variable is an instance variable
+            # without a comment docstring.  In that case, we'll
+            # only want to add it if we later discover that it's
+            # followed by a variable docstring.  If it is, then
+            # process_docstring will take care of adding it to the
+            # containing clas.  (This is a little hackish, but
+            # unfortunately is necessary because we won't know if
+            # this assignment line is followed by a docstring
+            # until later.)
+            if (not is_instvar) or comments:
+                set_variable(lhs_parent, var_doc, True)
+
+            # If it's the only var, then return the VarDoc for use
+            # as the new `prev_line_doc`.
+            if (len(lhs_pieces) == 1 and
+                (len(lhs_name) == 1 or is_instvar)):
+                return var_doc
+
+        # Otherwise, the LHS must be a complex expression; use
+        # dotted_names_in() to decide what variables it contains,
+        # and create VariableDoc's for all of them (with UNKNOWN
+        # value).
+        else:
+            for lhs_name in dotted_names_in(lhs_pieces):
+                lhs_parent = get_lhs_parent(lhs_name, parent_docs)
+                if lhs_parent is None: continue
+                var_doc = VariableDoc(name=lhs_name[-1],
+                                      is_imported=False,
+                                      is_alias=is_alias,
+                                      is_instvar=is_instvar,
+                                      docs_extracted_by='parser')
+                set_variable(lhs_parent, var_doc, True)
+
+        # If we have multiple left-hand-sides, then all but the
+        # rightmost one are considered aliases.
+        is_alias = True
+        
+
+def lhs_is_instvar(lhs_pieces, parent_docs):
+    if not isinstance(parent_docs[-1], RoutineDoc):
+        return False
+    # make sure that lhs_pieces is <self>.<name>, where <self> is
+    # the name of the first arg to the containing routinedoc, and
+    # <name> is a simple name.
+    posargs = parent_docs[-1].posargs
+    if posargs is UNKNOWN: return False
+    if not (len(lhs_pieces)==1 and len(posargs) > 0 and 
+            len(lhs_pieces[0]) == 3 and
+            lhs_pieces[0][0] == (token.NAME, posargs[0]) and
+            lhs_pieces[0][1] == (token.OP, '.') and
+            lhs_pieces[0][2][0] == token.NAME):
+        return False
+    # Make sure we're in an instance method, and not a
+    # module-level function.
+    for i in range(len(parent_docs)-1, -1, -1):
+        if isinstance(parent_docs[i], ClassDoc):
+            return True
+        elif parent_docs[i] != parent_docs[-1]:
+            return False
+    return False
+        
+def rhs_to_valuedoc(rhs, parent_docs):
+    # Dotted variable:
+    try:
+        rhs_name = parse_dotted_name(rhs)
+        rhs_val = lookup_value(rhs_name, parent_docs)
+        if rhs_val is not None and rhs_val is not UNKNOWN:
+            return rhs_val, True
+    except ParseError:
+        pass
+
+    # Decorators:
+    if (len(rhs)==2 and rhs[0][0] == token.NAME and
+        isinstance(rhs[1], list)):
+        arg_val, _ = rhs_to_valuedoc(rhs[1][1:-1], parent_docs)
+        if isinstance(arg_val, RoutineDoc):
+            doc = apply_decorator(DottedName(rhs[0][1]), arg_val)
+            doc.canonical_name = UNKNOWN
+            doc.parse_repr = pp_toktree(rhs)
+            return doc, False
+
+    # Nothing else to do: make a val with the source as its repr.
+    return GenericValueDoc(parse_repr=pp_toktree(rhs), toktree=rhs,
+                           defining_module=parent_docs[0],
+                           docs_extracted_by='parser'), False
+
+def get_lhs_parent(lhs_name, parent_docs):
+    assert isinstance(lhs_name, DottedName)
+
+    # For instance vars inside an __init__ method:
+    if isinstance(parent_docs[-1], RoutineDoc):
+        for i in range(len(parent_docs)-1, -1, -1):
+            if isinstance(parent_docs[i], ClassDoc):
+                return parent_docs[i]
+        else:
+            raise ValueError("%r is not a namespace or method" %
+                             parent_docs[-1])
+
+    # For local variables:
+    if len(lhs_name) == 1:
+        return parent_docs[-1]
+
+    # For non-local variables:
+    return lookup_value(lhs_name.container(), parent_docs)
+
+#/////////////////////////////////////////////////////////////////
+# Line handler: single-line blocks
+#/////////////////////////////////////////////////////////////////
+
+def process_one_line_block(line, parent_docs, prev_line_doc, lineno,
+                           comments, decorators, encoding):
+    """
+    The line handler for single-line blocks, such as:
+
+        >>> def f(x): return x*2
+
+    This handler calls L{process_line} twice: once for the tokens
+    up to and including the colon, and once for the remaining
+    tokens.  The comment docstring is applied to the first line
+    only.
+    @return: C{None}
+    """
+    i = line.index((token.OP, ':'))
+    doc1 = process_line(line[:i+1], parent_docs, prev_line_doc,
+                             lineno, comments, decorators, encoding)
+    doc2 = process_line(line[i+1:], parent_docs+[doc1],
+                             doc1, lineno, None, [], encoding)
+    return doc1
+
+#/////////////////////////////////////////////////////////////////
+# Line handler: semicolon-separated statements
+#/////////////////////////////////////////////////////////////////
+
+def process_multi_stmt(line, parent_docs, prev_line_doc, lineno,
+                       comments, decorators, encoding):
+    """
+    The line handler for semicolon-separated statements, such as:
+
+        >>> x=1; y=2; z=3
+
+    This handler calls L{process_line} once for each statement.
+    The comment docstring is not passed on to any of the
+    sub-statements.
+    @return: C{None}
+    """
+    for statement in split_on(line, (token.OP, ';')):
+        if not statement: continue
+        doc = process_line(statement, parent_docs, prev_line_doc, 
+                           lineno, None, decorators, encoding)
+        prev_line_doc = doc
+        decorators = []
+    return None
+
+#/////////////////////////////////////////////////////////////////
+# Line handler: delete statements
+#/////////////////////////////////////////////////////////////////
+
+def process_del(line, parent_docs, prev_line_doc, lineno,
+                comments, decorators, encoding):
+    """
+    The line handler for delete statements, such as:
+
+        >>> del x, y.z
+
+    This handler calls L{del_variable} for each dotted variable in
+    the variable list.  The variable list may be nested.  Complex
+    expressions in the variable list (such as C{x[3]}) are ignored.
+    @return: C{None}
+    """
+    # If we're not in a namespace, then ignore it.
+    parent_doc = parent_docs[-1]
+    if not isinstance(parent_doc, NamespaceDoc): return
+
+    var_list = split_on(line[1:], (token.OP, ','))
+    for var_name in dotted_names_in(var_list):
+        del_variable(parent_docs[-1], var_name)
+
+    return None
+
+#/////////////////////////////////////////////////////////////////
+# Line handler: docstrings
+#/////////////////////////////////////////////////////////////////
+
+def process_docstring(line, parent_docs, prev_line_doc, lineno,
+                      comments, decorators, encoding):
+    """
+    The line handler for bare string literals.  If
+    C{prev_line_doc} is not C{None}, then the string literal is
+    added to that C{APIDoc} as a docstring.  If it already has a
+    docstring (from comment docstrings), then the new docstring
+    will be appended to the old one.
+    """
+    if prev_line_doc is None: return
+    docstring = parse_string(line)
+
+    # If the docstring is a str, then convert it to unicode.
+    # According to a strict reading of PEP 263, this might not be the
+    # right thing to do; but it will almost always be what the
+    # module's author intended.
+    if isinstance(docstring, str):
+        try:
+            docstring = docstring.decode(encoding)
+        except UnicodeDecodeError:
+            # If decoding failed, then fall back on using
+            # decode_with_backslashreplace, which will map e.g.
+            # "\xe9" -> u"\\xe9".
+            docstring = decode_with_backslashreplace(docstring)
+            log.warning("While parsing %s: docstring is not a unicode "
+                        "string, but it contains non-ascii data." %
+                        prev_line_doc.canonical_name)
+
+    # If the modified APIDoc is an instance variable, and it has
+    # not yet been added to its class's C{variables} list,
+    # then add it now.  This is done here, rather than in the
+    # process_assignment() call that created the variable, because
+    # we only want to add instance variables if they have an
+    # associated docstring.  (For more info, see the comment above
+    # the set_variable() call in process_assignment().)
+    added_instvar = False
+    if (isinstance(prev_line_doc, VariableDoc) and
+         prev_line_doc.is_instvar and
+         prev_line_doc.docstring in (None, UNKNOWN)):
+        for i in range(len(parent_docs)-1, -1, -1):
+            if isinstance(parent_docs[i], ClassDoc):
+                set_variable(parent_docs[i], prev_line_doc, True)
+                added_instvar = True
+                break
+
+    if prev_line_doc.docstring not in (None, UNKNOWN):
+        log.warning("%s has both a comment-docstring and a normal "
+                    "(string) docstring; ignoring the comment-"
+                    "docstring." % prev_line_doc.canonical_name)
+        
+    prev_line_doc.docstring = docstring
+    prev_line_doc.docstring_lineno = lineno
+
+    # If the modified APIDoc is an instance variable, and we added it
+    # to the class's variables list here, then it still needs to be
+    # grouped too; so return it for use as the new "prev_line_doc."
+    if added_instvar:
+        return prev_line_doc
+
+    
+#/////////////////////////////////////////////////////////////////
+# Line handler: function declarations
+#/////////////////////////////////////////////////////////////////
+
+def process_funcdef(line, parent_docs, prev_line_doc, lineno,
+                    comments, decorators, encoding):
+    """
+    The line handler for function declaration lines, such as:
+
+        >>> def f(a, b=22, (c,d)):
+
+    This handler creates and initializes a new C{VariableDoc}
+    containing a C{RoutineDoc}, adds the C{VariableDoc} to the
+    containing namespace, and returns the C{RoutineDoc}.
+    """
+    # Check syntax.
+    if len(line) != 4 or line[3] != (token.OP, ':'):
+        raise ParseError("Bad function definition line")
+    
+    # If we're not in a namespace, then ignore it.
+    parent_doc = parent_docs[-1]
+    if not isinstance(parent_doc, NamespaceDoc): return
+
+    # Get the function's name
+    func_name = parse_name(line[1])
+    canonical_name = DottedName(parent_doc.canonical_name, func_name)
+
+    # Create the function's RoutineDoc.
+    func_doc = RoutineDoc(canonical_name=canonical_name,
+                          defining_module=parent_docs[0],
+                          lineno=lineno, docs_extracted_by='parser')
+
+    # Process the signature.
+    init_arglist(func_doc, line[2])
+
+    # If the preceeding comment includes a docstring, then add it.
+    add_docstring_from_comments(func_doc, comments)
+    
+    # Apply any decorators.
+    func_doc.decorators = [pp_toktree(deco[1:]) for deco in decorators]
+    decorators.reverse()
+    for decorator in decorators:
+        try:
+            deco_name = parse_dotted_name(decorator[1:])
+        except ParseError:
+            deco_name = None
+        if func_doc.canonical_name is not UNKNOWN:
+            deco_repr = '%s(%s)' % (pp_toktree(decorator[1:]),
+                                    func_doc.canonical_name)
+        elif func_doc.parse_repr not in (None, UNKNOWN):
+            # [xx] this case should be improved.. when will func_doc
+            # have a known parse_repr??
+            deco_repr = '%s(%s)' % (pp_toktree(decorator[1:]),
+                                    func_doc.parse_repr)
+        else:
+            deco_repr = UNKNOWN
+        func_doc = apply_decorator(deco_name, func_doc)
+        func_doc.parse_repr = deco_repr
+        # [XX] Is there a reson the following should be done?  It
+        # causes the grouping code to break.  Presumably the canonical
+        # name should remain valid if we're just applying a standard
+        # decorator.
+        #func_doc.canonical_name = UNKNOWN
+
+    # Add a variable to the containing namespace.
+    var_doc = VariableDoc(name=func_name, value=func_doc,
+                          is_imported=False, is_alias=False,
+                          docs_extracted_by='parser')
+    set_variable(parent_doc, var_doc)
+    
+    # Return the new ValueDoc.
+    return func_doc
+
+def apply_decorator(decorator_name, func_doc):
+    # [xx] what if func_doc is not a RoutineDoc?
+    if decorator_name == DottedName('staticmethod'):
+        return StaticMethodDoc(**func_doc.__dict__)
+    elif decorator_name == DottedName('classmethod'):
+        return ClassMethodDoc(**func_doc.__dict__)
+    elif DEFAULT_DECORATOR_BEHAVIOR == 'transparent':
+        return func_doc.__class__(**func_doc.__dict__) # make a copy.
+    elif DEFAULT_DECORATOR_BEHAVIOR == 'opaque':
+        return GenericValueDoc(docs_extracted_by='parser')
+    else:
+        raise ValueError, 'Bad value for DEFAULT_DECORATOR_BEHAVIOR'
+
+def init_arglist(func_doc, arglist):
+    if not isinstance(arglist, list) or arglist[0] != (token.OP, '('):
+        raise ParseError("Bad argument list")
+
+    # Initialize to defaults.
+    func_doc.posargs = []
+    func_doc.posarg_defaults = []
+    func_doc.vararg = None
+    func_doc.kwarg = None
+
+    # Divide the arglist into individual args.
+    args = split_on(arglist[1:-1], (token.OP, ','))
+
+    # Keyword argument.
+    if args and args[-1][0] == (token.OP, '**'):
+        if len(args[-1]) != 2 or args[-1][1][0] != token.NAME:
+            raise ParseError("Expected name after ** in argument list")
+        func_doc.kwarg = args[-1][1][1]
+        args.pop()
+
+    # Vararg argument.
+    if args and args[-1][0] == (token.OP, '*'):
+        if len(args[-1]) != 2 or args[-1][1][0] != token.NAME:
+            raise ParseError("Expected name after * in argument list")
+        func_doc.vararg = args[-1][1][1]
+        args.pop()
+
+    # Positional arguments.
+    for arg in args:
+        func_doc.posargs.append(parse_funcdef_arg(arg[0]))
+        if len(arg) == 1:
+            func_doc.posarg_defaults.append(None)
+        elif arg[1] != (token.OP, '=') or len(arg) == 2:
+            raise ParseError("Bad argument list")
+        else:
+            default_repr = pp_toktree(arg[2:], 'tight')
+            default_val = GenericValueDoc(parse_repr=default_repr,
+                                          docs_extracted_by='parser')
+            func_doc.posarg_defaults.append(default_val)
+
+#/////////////////////////////////////////////////////////////////
+# Line handler: class declarations
+#/////////////////////////////////////////////////////////////////
+
+def process_classdef(line, parent_docs, prev_line_doc, lineno,
+                     comments, decorators, encoding):
+    """
+    The line handler for class declaration lines, such as:
+    
+        >>> class Foo(Bar, Baz):
+
+    This handler creates and initializes a new C{VariableDoc}
+    containing a C{ClassDoc}, adds the C{VariableDoc} to the
+    containing namespace, and returns the C{ClassDoc}.
+    """
+    # Check syntax
+    if len(line)<3 or len(line)>4 or line[-1] != (token.OP, ':'):
+        raise ParseError("Bad class definition line")
+
+    # If we're not in a namespace, then ignore it.
+    parent_doc = parent_docs[-1]
+    if not isinstance(parent_doc, NamespaceDoc): return
+
+    # Get the class's name
+    class_name = parse_name(line[1])
+    canonical_name = DottedName(parent_doc.canonical_name, class_name)
+
+    # Create the class's ClassDoc & VariableDoc.
+    class_doc = ClassDoc(variables={}, sort_spec=[],
+                         bases=[], subclasses=[],
+                         canonical_name=canonical_name,
+                         defining_module=parent_docs[0],
+                         docs_extracted_by='parser')
+    var_doc = VariableDoc(name=class_name, value=class_doc,
+                          is_imported=False, is_alias=False,
+                          docs_extracted_by='parser')
+
+    # Add the bases.
+    if len(line) == 4:
+        if (not isinstance(line[2], list) or
+            line[2][0] != (token.OP, '(')):
+            raise ParseError("Expected base list")
+        try:
+            for base_name in parse_classdef_bases(line[2]):
+                class_doc.bases.append(find_base(base_name, parent_docs))
+        except ParseError, e:
+            log.warning("Unable to extract the base list for %s: %s" %
+                        (canonical_name, e))
+            class_doc.bases = UNKNOWN
+    else:
+        class_doc.bases = []
+
+    # Register ourselves as a subclass to our bases.
+    if class_doc.bases is not UNKNOWN:
+        for basedoc in class_doc.bases:
+            if isinstance(basedoc, ClassDoc):
+                # This test avoids that a subclass gets listed twice when
+                # both introspection and parsing.
+                # [XXX] This check only works because currently parsing is
+                # always performed just after introspection of the same
+                # class. A more complete fix shuld be independent from
+                # calling order; probably the subclasses list should be
+                # replaced by a ClassDoc set or a {name: ClassDoc} mapping.
+                if (basedoc.subclasses
+                    and basedoc.subclasses[-1].canonical_name
+                        != class_doc.canonical_name):
+                    basedoc.subclasses.append(class_doc)
+    
+    # If the preceeding comment includes a docstring, then add it.
+    add_docstring_from_comments(class_doc, comments)
+    
+    # Add the VariableDoc to our container.
+    set_variable(parent_doc, var_doc)
+
+    return class_doc
+
+def _proxy_base(**attribs):
+    return ClassDoc(variables={}, sort_spec=[], bases=[], subclasses=[], 
+                    docs_extracted_by='parser', **attribs)
+
+def find_base(name, parent_docs):
+    assert isinstance(name, DottedName)
+
+    # Find the variable containing the base.
+    base_var = lookup_variable(name, parent_docs)
+    if base_var is None:
+        # If we didn't find it, then it must have been imported.
+        # First, check if it looks like it's contained in any
+        # known imported variable:
+        if len(name) > 1:
+            src = lookup_name(name[0], parent_docs)
+            if (src is not None and
+                src.imported_from not in (None, UNKNOWN)):
+                base_src = DottedName(src.imported_from, name[1:])
+                base_var = VariableDoc(name=name[-1], is_imported=True,
+                                       is_alias=False, imported_from=base_src,
+                                       docs_extracted_by='parser')
+        # Otherwise, it must have come from an "import *" statement
+        # (or from magic, such as direct manipulation of the module's
+        # dictionary), so we don't know where it came from.  So
+        # there's nothing left but to use an empty proxy.
+        if base_var is None:
+            return _proxy_base(parse_repr=str(name))
+            #raise ParseError("Could not find %s" % name)
+
+    # If the variable has a value, return that value.
+    if base_var.value is not UNKNOWN:
+        return base_var.value
+
+    # Otherwise, if BASE_HANDLING is 'parse', try parsing the docs for
+    # the base class; if that fails, or if BASE_HANDLING is 'link',
+    # just make a proxy object.
+    if base_var.imported_from not in (None, UNKNOWN):
+        if BASE_HANDLING == 'parse':
+            old_sys_path = sys.path
+            try:
+                dirname = os.path.split(parent_docs[0].filename)[0]
+                sys.path = [dirname] + sys.path
+                try:
+                    return parse_docs(name=str(base_var.imported_from))
+                except ParseError:
+                    log.info('Unable to parse base', base_var.imported_from)
+                except ImportError:
+                    log.info('Unable to find base', base_var.imported_from)
+            finally:
+                sys.path = old_sys_path
+                
+        # Either BASE_HANDLING='link' or parsing the base class failed;
+        # return a proxy value for the base class.
+        return _proxy_base(proxy_for=base_var.imported_from)
+    else:
+        return _proxy_base(parse_repr=str(name))
+
+#/////////////////////////////////////////////////////////////////
+#{ Parsing
+#/////////////////////////////////////////////////////////////////
+
+def dotted_names_in(elt_list):
+    """
+    Return a list of all simple dotted names in the given
+    expression.
+    """
+    names = []
+    while elt_list:
+        elt = elt_list.pop()
+        if len(elt) == 1 and isinstance(elt[0], list):
+            # Nested list: process the contents
+            elt_list.extend(split_on(elt[0][1:-1], (token.OP, ',')))
+        else:
+            try:
+                names.append(parse_dotted_name(elt))
+            except ParseError:
+                pass # complex expression -- ignore
+    return names
+
+def parse_name(elt, strip_parens=False):
+    """
+    If the given token tree element is a name token, then return
+    that name as a string.  Otherwise, raise ParseError.
+    @param strip_parens: If true, then if elt is a single name
+        enclosed in parenthases, then return that name.
+    """
+    if strip_parens and isinstance(elt, list):
+        while (isinstance(elt, list) and len(elt) == 3 and
+               elt[0] == (token.OP, '(') and
+               elt[-1] == (token.OP, ')')):
+            elt = elt[1]
+    if isinstance(elt, list) or elt[0] != token.NAME:
+        raise ParseError("Bad name")
+    return elt[1]
+
+def parse_dotted_name(elt_list, strip_parens=True, parent_name=None):
+    """
+    @param parent_name: canonical name of referring module, to resolve
+        relative imports.
+    @type parent_name: L{DottedName}
+    @bug: does not handle 'x.(y).z'
+    """
+    if len(elt_list) == 0: raise ParseError("Bad dotted name")
+    
+    # Handle ((x.y).z).  (If the contents of the parens include
+    # anything other than dotted names, such as (x,y), then we'll
+    # catch it below and raise a ParseError.
+    while (isinstance(elt_list[0], list) and
+           len(elt_list[0]) >= 3 and
+           elt_list[0][0] == (token.OP, '(') and
+           elt_list[0][-1] == (token.OP, ')')):
+        elt_list[:1] = elt_list[0][1:-1]
+
+    # Convert a relative import into an absolute name.
+    prefix_name = None
+    if parent_name is not None and elt_list[0][-1] == '.':
+        items = 1
+        while len(elt_list) > items and elt_list[items][-1] == '.':
+            items += 1
+            
+        elt_list = elt_list[items:]
+        prefix_name = parent_name[:-items]
+            
+        # >>> from . import foo
+        if not elt_list:
+            if prefix_name == []:
+                raise ParseError("Attempted relative import in non-package, "
+                                 "or beyond toplevel package")
+            return prefix_name
+
+    if len(elt_list) % 2 != 1: raise ParseError("Bad dotted name")
+    name = DottedName(parse_name(elt_list[0], True))
+    if prefix_name is not None:
+        name = prefix_name + name
+        
+    for i in range(2, len(elt_list), 2):
+        dot, identifier = elt_list[i-1], elt_list[i]
+        if  dot != (token.OP, '.'):
+            raise ParseError("Bad dotted name")
+        name = DottedName(name, parse_name(identifier, True))
+    return name
+        
+def split_on(elt_list, split_tok):
+    # [xx] add code to guarantee each elt is non-empty.
+    result = [[]]
+    for elt in elt_list:
+        if elt == split_tok:
+            if result[-1] == []: raise ParseError("Empty element from split")
+            result.append([])
+        else:
+            result[-1].append(elt)
+    if result[-1] == []: result.pop()
+    return result
+
+def parse_funcdef_arg(elt):
+    """
+    If the given tree token element contains a valid function
+    definition argument (i.e., an identifier token or nested list
+    of identifiers), then return a corresponding string identifier
+    or nested list of string identifiers.  Otherwise, raise a
+    ParseError.
+    """
+    if isinstance(elt, list):
+        if elt[0] == (token.OP, '('):
+            if len(elt) == 3:
+                return parse_funcdef_arg(elt[1])
+            else:
+                return [parse_funcdef_arg(e)
+                        for e in elt[1:-1]
+                        if e != (token.OP, ',')]
+        else:
+            raise ParseError("Bad argument -- expected name or tuple")
+    elif elt[0] == token.NAME:
+        return elt[1]
+    else:
+        raise ParseError("Bad argument -- expected name or tuple")
+    
+def parse_classdef_bases(elt):
+    """
+    If the given tree token element contains a valid base list
+    (that contains only dotted names), then return a corresponding
+    list of L{DottedName}s.  Otherwise, raise a ParseError.
+    
+    @bug: Does not handle either of::
+        - class A( (base.in.parens) ): pass
+        - class B( (lambda:calculated.base)() ): pass
+    """
+    if (not isinstance(elt, list) or
+        elt[0] != (token.OP, '(')):
+        raise ParseError("Bad base list")
+
+    return [parse_dotted_name(n)
+            for n in split_on(elt[1:-1], (token.OP, ','))]
+
+# Used by: base list; 'del'; ...
+def parse_dotted_name_list(elt_list):
+    """
+    If the given list of tree token elements contains a
+    comma-separated list of dotted names, then return a
+    corresponding list of L{DottedName} objects.  Otherwise, raise
+    ParseError.
+    """
+    names = []
+    
+    state = 0
+    for elt in elt_list:
+        # State 0 -- Expecting a name, or end of arglist
+        if state == 0:
+            # Make sure it's a name
+            if isinstance(elt, tuple) and elt[0] == token.NAME:
+                names.append(DottedName(elt[1]))
+                state = 1
+            else:
+                raise ParseError("Expected a name")
+        # State 1 -- Expecting comma, period, or end of arglist
+        elif state == 1:
+            if elt == (token.OP, '.'):
+                state = 2
+            elif elt == (token.OP, ','):
+                state = 0
+            else:
+                raise ParseError("Expected '.' or ',' or end of list")
+        # State 2 -- Continuation of dotted name.
+        elif state == 2:
+            if isinstance(elt, tuple) and elt[0] == token.NAME:
+                names[-1] = DottedName(names[-1], elt[1])
+                state = 1
+            else:
+                raise ParseError("Expected a name")
+    if state == 2:
+        raise ParseError("Expected a name")
+    return names
+
+def parse_string(elt_list):
+    if len(elt_list) == 1 and elt_list[0][0] == token.STRING:
+        # [xx] use something safer here?  But it needs to deal with
+        # any string type (eg r"foo\bar" etc).
+        return eval(elt_list[0][1])
+    else:
+        raise ParseError("Expected a string")
+
+# ['1', 'b', 'c']
+def parse_string_list(elt_list):
+    if (len(elt_list) == 1 and isinstance(elt_list, list) and
+        elt_list[0][0][1] in ('(', '[')):
+        elt_list = elt_list[0][1:-1]
+
+    string_list = []
+    for string_elt in split_on(elt_list, (token.OP, ',')):
+        string_list.append(parse_string(string_elt))
+
+    return string_list
+
+#/////////////////////////////////////////////////////////////////
+#{ Variable Manipulation
+#/////////////////////////////////////////////////////////////////
+
+def set_variable(namespace, var_doc, preserve_docstring=False):
+    """
+    Add var_doc to namespace.  If namespace already contains a
+    variable with the same name, then discard the old variable.  If
+    C{preserve_docstring} is true, then keep the old variable's
+    docstring when overwriting a variable.
+    """
+    # Choose which dictionary we'll be storing the variable in.
+    if not isinstance(namespace, NamespaceDoc):
+        return
+
+    # This happens when the class definition has not been parsed, e.g. in
+    # sf bug #1693253 on ``Exception.x = y``
+    if namespace.sort_spec is UNKNOWN:
+        namespace.sort_spec = namespace.variables.keys()
+
+    # If we already have a variable with this name, then remove the
+    # old VariableDoc from the sort_spec list; and if we gave its
+    # value a canonical name, then delete it.
+    if var_doc.name in namespace.variables:
+        namespace.sort_spec.remove(var_doc.name)
+        old_var_doc = namespace.variables[var_doc.name]
+        if (old_var_doc.is_alias == False and
+            old_var_doc.value is not UNKNOWN):
+            old_var_doc.value.canonical_name = UNKNOWN
+        if (preserve_docstring and var_doc.docstring in (None, UNKNOWN) and
+            old_var_doc.docstring not in (None, UNKNOWN)):
+            var_doc.docstring = old_var_doc.docstring
+            var_doc.docstring_lineno = old_var_doc.docstring_lineno
+    # Add the variable to the namespace.
+    namespace.variables[var_doc.name] = var_doc
+    namespace.sort_spec.append(var_doc.name)
+    assert var_doc.container is UNKNOWN
+    var_doc.container = namespace
+
+def del_variable(namespace, name):
+    if not isinstance(namespace, NamespaceDoc):
+        return
+
+    if name[0] in namespace.variables:
+        if len(name) == 1:
+            var_doc = namespace.variables[name[0]]
+            namespace.sort_spec.remove(name[0])
+            del namespace.variables[name[0]]
+            if not var_doc.is_alias and var_doc.value is not UNKNOWN:
+                var_doc.value.canonical_name = UNKNOWN
+        else:
+            del_variable(namespace.variables[name[0]].value, name[1:])
+            
+#/////////////////////////////////////////////////////////////////
+#{ Name Lookup
+#/////////////////////////////////////////////////////////////////
+
+def lookup_name(identifier, parent_docs):
+    """
+    Find and return the documentation for the variable named by
+    the given identifier.
+    
+    @rtype: L{VariableDoc} or C{None}
+    """
+    # We need to check 3 namespaces: locals, globals, and builtins.
+    # Note that this is true even if we're in a version of python with
+    # nested scopes, because nested scope lookup does not apply to
+    # nested class definitions, and we're not worried about variables
+    # in nested functions.
+    if not isinstance(identifier, basestring):
+        raise TypeError('identifier must be a string')
+
+    # Locals
+    if isinstance(parent_docs[-1], NamespaceDoc):
+        if identifier in parent_docs[-1].variables:
+            return parent_docs[-1].variables[identifier]
+
+    # Globals (aka the containing module)
+    if isinstance(parent_docs[0], NamespaceDoc):
+        if identifier in parent_docs[0].variables:
+            return parent_docs[0].variables[identifier]
+
+    # Builtins
+    builtins = epydoc.docintrospecter.introspect_docs(__builtin__)
+    if isinstance(builtins, NamespaceDoc):
+        if identifier in builtins.variables:
+            return builtins.variables[identifier]
+
+    # We didn't find it; return None.
+    return None
+
+def lookup_variable(dotted_name, parent_docs):
+    assert isinstance(dotted_name, DottedName)
+    # If it's a simple identifier, use lookup_name.
+    if len(dotted_name) == 1:
+        return lookup_name(dotted_name[0], parent_docs)
+
+    # If it's a dotted name with multiple pieces, look up the
+    # namespace containing the var (=parent) first; and then
+    # look for the var in that namespace.
+    else:
+        parent = lookup_value(dotted_name[:-1], parent_docs)
+        if (isinstance(parent, NamespaceDoc) and
+            dotted_name[-1] in parent.variables):
+            return parent.variables[dotted_name[-1]]
+        else:
+            return None # var not found.
+
+def lookup_value(dotted_name, parent_docs):
+    """
+    Find and return the documentation for the value contained in
+    the variable with the given name in the current namespace.
+    """
+    assert isinstance(dotted_name, DottedName)
+    var_doc = lookup_name(dotted_name[0], parent_docs)
+
+    for i in range(1, len(dotted_name)):
+        if var_doc is None: return None
+
+        if isinstance(var_doc.value, NamespaceDoc):
+            var_dict = var_doc.value.variables
+        elif (var_doc.value is UNKNOWN and
+            var_doc.imported_from not in (None, UNKNOWN)):
+            src_name = var_doc.imported_from + dotted_name[i:]
+            # [xx] do I want to create a proxy here??
+            return GenericValueDoc(proxy_for=src_name,
+                                   parse_repr=str(dotted_name),
+                                   docs_extracted_by='parser')
+        else:
+            return None
+
+        var_doc = var_dict.get(dotted_name[i])
+
+    if var_doc is None: return None
+    return var_doc.value
+
+#/////////////////////////////////////////////////////////////////
+#{ Docstring Comments
+#/////////////////////////////////////////////////////////////////
+
+def add_docstring_from_comments(api_doc, comments):
+    if api_doc is None or not comments: return
+    api_doc.docstring = '\n'.join([line for (line, lineno) in comments])
+    api_doc.docstring_lineno = comments[0][1]
+
+#/////////////////////////////////////////////////////////////////
+#{ Tree tokens
+#/////////////////////////////////////////////////////////////////
+
+def _join_toktree(s1, s2):
+    # Join them.  s1 = left side; s2 = right side.
+    if (s2=='' or s1=='' or
+        s1 in ('-','`') or s2 in ('}',']',')','`',':') or
+        s2[0] in ('.',',') or s1[-1] in ('(','[','{','.','\n',' ') or
+        (s2[0] == '(' and s1[-1] not in (',','='))):
+        return '%s%s' % (s1,s2)
+    elif (spacing=='tight' and
+          s1[-1] in '+-*/=,' or s2[0] in '+-*/=,'):
+        return '%s%s' % (s1, s2)
+    else:
+        return '%s %s' % (s1, s2)
+
+def _pp_toktree_add_piece(spacing, pieces, piece):
+    s1 = pieces[-1]
+    s2 = piece
+    
+    if (s2=='' or s1=='' or
+        s1 in ('-','`') or s2 in ('}',']',')','`',':') or
+        s2[0] in ('.',',') or s1[-1] in ('(','[','{','.','\n',' ') or
+        (s2[0] == '(' and s1[-1] not in (',','='))):
+        pass
+    elif (spacing=='tight' and
+          s1[-1] in '+-*/=,' or s2[0] in '+-*/=,'):
+        pass
+    else:
+        pieces.append(' ')
+        
+    pieces.append(piece)
+
+def pp_toktree(elts, spacing='normal', indent=0):
+    pieces = ['']
+    _pp_toktree(elts, spacing, indent, pieces)
+    return ''.join(pieces)
+    
+def _pp_toktree(elts, spacing, indent, pieces):
+    add_piece = _pp_toktree_add_piece
+    
+    for elt in elts:
+        # Put a blank line before class & def statements.
+        if elt == (token.NAME, 'class') or elt == (token.NAME, 'def'):
+            add_piece(spacing, pieces, '\n%s' % ('    '*indent))
+
+        if isinstance(elt, tuple):
+            if elt[0] == token.NEWLINE:
+                add_piece(spacing, pieces, '    '+elt[1])
+                add_piece(spacing, pieces, '\n%s' % ('    '*indent))
+            elif elt[0] == token.INDENT:
+                add_piece(spacing, pieces, '    ')
+                indent += 1
+            elif elt[0] == token.DEDENT:
+                assert pieces[-1] == '    '
+                pieces.pop()
+                indent -= 1
+            elif elt[0] == tokenize.COMMENT:
+                add_piece(spacing, pieces, elt[1].rstrip() + '\n')
+                add_piece('    '*indent)
+            else:
+                add_piece(spacing, pieces, elt[1])
+        else:
+            _pp_toktree(elt, spacing, indent, pieces)
+        
+#/////////////////////////////////////////////////////////////////
+#{ Helper Functions
+#/////////////////////////////////////////////////////////////////
+
+def get_module_encoding(filename):
+    """
+    @see: U{PEP 263<http://www.python.org/peps/pep-0263.html>}
+    """
+    module_file = open(filename, 'rU')
+    try:
+        lines = [module_file.readline() for i in range(2)]
+        if lines[0].startswith('\xef\xbb\xbf'):
+            return 'utf-8'
+        else:
+            for line in lines:
+                m = re.search("coding[:=]\s*([-\w.]+)", line)
+                if m: return m.group(1)
+                
+        # Fall back on Python's default encoding.
+        return 'iso-8859-1' # aka 'latin-1'
+    finally:
+        module_file.close()
+        
+def _get_module_name(filename, package_doc):
+    """
+    Return (dotted_name, is_package)
+    """
+    name = re.sub(r'.py\w?$', '', os.path.split(filename)[1])
+    if name == '__init__':
+        is_package = True
+        name = os.path.split(os.path.split(filename)[0])[1]
+    else:
+        is_package = False
+
+    # [XX] if the module contains a script, then `name` may not
+    # necessarily be a valid identifier -- which will cause
+    # DottedName to raise an exception.  Is that what I want?
+    if package_doc is None:
+        dotted_name = DottedName(name)
+    else:
+        dotted_name = DottedName(package_doc.canonical_name, name)
+
+    # Check if the module looks like it's shadowed by a variable.
+    # If so, then add a "'" to the end of its canonical name, to
+    # distinguish it from the variable.
+    if package_doc is not None and name in package_doc.variables:
+        vardoc = package_doc.variables[name]
+        if (vardoc.value not in (None, UNKNOWN) and
+            vardoc.imported_from != dotted_name):
+            log.warning("Module %s might be shadowed by a variable with "
+                        "the same name." % dotted_name)
+            dotted_name = DottedName(str(dotted_name)+"'")
+
+    return dotted_name, is_package
+
+def flatten(lst, out=None):
+    """
+    @return: a flat list containing the leaves of the given nested
+        list.
+    @param lst: The nested list that should be flattened.
+    """
+    if out is None: out = []
+    for elt in lst:
+        if isinstance(elt, (list, tuple)):
+            flatten(elt, out)
+        else:
+            out.append(elt)
+    return out
+
diff --git a/epydoc/docstringparser.py b/epydoc/docstringparser.py
new file mode 100644
index 0000000..b609bc9
--- /dev/null
+++ b/epydoc/docstringparser.py
@@ -0,0 +1,1111 @@
+# epydoc -- Docstring processing
+#
+# Copyright (C) 2005 Edward Loper
+# Author: Edward Loper <edloper at loper.org>
+# URL: <http://epydoc.sf.net>
+#
+# $Id: docstringparser.py 1689 2008-01-30 17:01:02Z edloper $
+
+"""
+Parse docstrings and handle any fields it defines, such as C{@type}
+and C{@author}.  Fields are used to describe specific information
+about an object.  There are two classes of fields: X{simple fields}
+and X{special fields}.
+
+Simple fields are fields that get stored directly in an C{APIDoc}'s
+metadata dictionary, without any special processing.  The set of
+simple fields is defined by the list L{STANDARD_FIELDS}, whose
+elements are L{DocstringField}s.
+
+Special fields are fields that perform some sort of processing on the
+C{APIDoc}, or add information to attributes other than the metadata
+dictionary.  Special fields are are handled by field handler
+functions, which are registered using L{register_field_handler}.
+"""
+__docformat__ = 'epytext en'
+
+
+######################################################################
+## Imports
+######################################################################
+
+import re, sys
+from epydoc import markup
+from epydoc.markup import epytext
+from epydoc.apidoc import *
+from epydoc.docintrospecter import introspect_docstring_lineno
+from epydoc.util import py_src_filename
+from epydoc import log
+import epydoc.docparser
+import __builtin__, exceptions
+
+######################################################################
+# Docstring Fields
+######################################################################
+
+class DocstringField:
+    """
+    A simple docstring field, which can be used to describe specific
+    information about an object, such as its author or its version.
+    Simple docstring fields are fields that take no arguments, and
+    are displayed as simple sections.
+
+    @ivar tags: The set of tags that can be used to identify this
+        field.
+    @ivar singular: The label that should be used to identify this
+        field in the output, if the field contains one value.
+    @ivar plural: The label that should be used to identify this
+        field in the output, if the field contains multiple values.
+    @ivar short: If true, then multiple values should be combined
+        into a single comma-delimited list.  If false, then
+        multiple values should be listed separately in a bulleted
+        list.
+    @ivar multivalue: If true, then multiple values may be given
+        for this field; if false, then this field can only take a
+        single value, and a warning should be issued if it is
+        redefined.
+    @ivar takes_arg: If true, then this field expects an argument;
+        and a separate field section will be constructed for each
+        argument value.  The label (and plural label) should include
+        a '%s' to mark where the argument's string rep should be
+        added.
+    """
+    def __init__(self, tags, label, plural=None,
+                 short=0, multivalue=1, takes_arg=0,
+                 varnames=None):
+        if type(tags) in (list, tuple):
+            self.tags = tuple(tags)
+        elif type(tags) is str:
+            self.tags = (tags,)
+        else: raise TypeError('Bad tags: %s' % tags)
+        self.singular = label
+        if plural is None: self.plural = label
+        else: self.plural = plural
+        self.multivalue = multivalue
+        self.short = short
+        self.takes_arg = takes_arg
+        self.varnames = varnames or []
+
+    def __cmp__(self, other):
+        if not isinstance(other, DocstringField): return -1
+        return cmp(self.tags, other.tags)
+    
+    def __hash__(self):
+        return hash(self.tags)
+
+    def __repr__(self):
+        return '<Field: %s>' % self.tags[0]
+
+STANDARD_FIELDS = [
+    #: A list of the standard simple fields accepted by epydoc.  This
+    #: list can be augmented at run-time by a docstring with the special
+    #: C{@deffield} field.  The order in which fields are listed here
+    #: determines the order in which they will be displayed in the
+    #: output.
+    
+    # If it's deprecated, put that first.
+    DocstringField(['deprecated', 'depreciated'],
+             'Deprecated', multivalue=0, varnames=['__deprecated__']),
+
+    # Status info
+    DocstringField(['version'], 'Version', multivalue=0,
+                   varnames=['__version__']),
+    DocstringField(['date'], 'Date', multivalue=0,
+                   varnames=['__date__']),
+    DocstringField(['status'], 'Status', multivalue=0),
+    
+    # Bibliographic Info
+    DocstringField(['author', 'authors'], 'Author', 'Authors', short=1,
+                   varnames=['__author__', '__authors__']),
+    DocstringField(['contact'], 'Contact', 'Contacts', short=1,
+                   varnames=['__contact__']),
+    DocstringField(['organization', 'org'],
+                   'Organization', 'Organizations'),
+    DocstringField(['copyright', '(c)'], 'Copyright', multivalue=0,
+                   varnames=['__copyright__']),
+    DocstringField(['license'], 'License', multivalue=0,
+                   varnames=['__license__']),
+
+    # Various warnings etc.
+    DocstringField(['bug'], 'Bug', 'Bugs'),
+    DocstringField(['warning', 'warn'], 'Warning', 'Warnings'),
+    DocstringField(['attention'], 'Attention'),
+    DocstringField(['note'], 'Note', 'Notes'),
+
+    # Formal conditions
+    DocstringField(['requires', 'require', 'requirement'], 'Requires'),
+    DocstringField(['precondition', 'precond'],
+             'Precondition', 'Preconditions'),
+    DocstringField(['postcondition', 'postcond'],
+             'Postcondition', 'Postconditions'),
+    DocstringField(['invariant'], 'Invariant'),
+
+    # When was it introduced (version # or date)
+    DocstringField(['since'], 'Since', multivalue=0),
+
+    # Changes made
+    DocstringField(['change', 'changed'], 'Change Log'),
+                   
+    # Crossreferences
+    DocstringField(['see', 'seealso'], 'See Also', short=1),
+
+    # Future Work
+    DocstringField(['todo'], 'To Do', takes_arg=True),
+
+    # Permissions (used by zope-based projects)
+    DocstringField(['permission', 'permissions'], 'Permission', 'Permissions')
+    ]
+
+######################################################################
+#{ Docstring Parsing
+######################################################################
+
+DEFAULT_DOCFORMAT = 'epytext'
+"""The name of the default markup languge used to process docstrings."""
+
+# [xx] keep track of which ones we've already done, in case we're
+# asked to process one twice?  e.g., for @include we might have to
+# parse the included docstring earlier than we might otherwise..??
+
+def parse_docstring(api_doc, docindex, suppress_warnings=[]):
+    """
+    Process the given C{APIDoc}'s docstring.  In particular, populate
+    the C{APIDoc}'s C{descr} and C{summary} attributes, and add any
+    information provided by fields in the docstring.
+    
+    @param docindex: A DocIndex, used to find the containing
+        module (to look up the docformat); and to find any
+        user docfields defined by containing objects.
+    @param suppress_warnings: A set of objects for which docstring
+        warnings should be suppressed.
+    """
+    if api_doc.metadata is not UNKNOWN:
+        if not (isinstance(api_doc, RoutineDoc)
+                and api_doc.canonical_name[-1] == '__init__'):
+            log.debug("%s's docstring processed twice" %
+                      api_doc.canonical_name)
+        return
+        
+    initialize_api_doc(api_doc)
+
+    # If there's no docstring, then check for special variables (e.g.,
+    # __version__), and then return -- there's nothing else to do.
+    if (api_doc.docstring in (None, UNKNOWN)):
+        if isinstance(api_doc, NamespaceDoc):
+            for field in STANDARD_FIELDS + user_docfields(api_doc, docindex):
+                add_metadata_from_var(api_doc, field)
+        return
+
+    # Remove leading indentation from the docstring.
+    api_doc.docstring = unindent_docstring(api_doc.docstring)
+
+    # Decide which docformat is used by this module.
+    docformat = get_docformat(api_doc, docindex)
+
+    # A list of markup errors from parsing.
+    parse_errors = []
+    
+    # Extract a signature from the docstring, if it has one.  This
+    # overrides any signature we got via introspection/parsing.
+    if isinstance(api_doc, RoutineDoc):
+        parse_function_signature(api_doc, None, docformat, parse_errors)
+
+    # Parse the docstring.  Any errors encountered are stored as
+    # `ParseError` objects in the errors list.
+    parsed_docstring = markup.parse(api_doc.docstring, docformat,
+                                    parse_errors)
+        
+    # Divide the docstring into a description and a list of
+    # fields.
+    descr, fields = parsed_docstring.split_fields(parse_errors)
+    api_doc.descr = descr
+
+    field_warnings = []
+
+    # Handle the constructor fields that have been defined in the class
+    # docstring. This code assumes that a class docstring is parsed before
+    # the same class __init__ docstring.
+    if isinstance(api_doc, ClassDoc):
+
+        # Parse ahead the __init__ docstring for this class
+        initvar = api_doc.variables.get('__init__')
+        if initvar and isinstance(initvar.value, RoutineDoc):
+            init_api_doc = initvar.value
+            parse_docstring(init_api_doc, docindex, suppress_warnings)
+
+            parse_function_signature(init_api_doc, api_doc,
+                                     docformat, parse_errors)
+            init_fields = split_init_fields(fields, field_warnings)
+
+            # Process fields
+            for field in init_fields:
+                try:
+                    process_field(init_api_doc, docindex, field.tag(),
+                                    field.arg(), field.body())
+                except ValueError, e: field_warnings.append(str(e))
+
+    # Process fields
+    for field in fields:
+        try:
+            process_field(api_doc, docindex, field.tag(),
+                               field.arg(), field.body())
+        except ValueError, e: field_warnings.append(str(e))
+
+    # Check to make sure that all type parameters correspond to
+    # some documented parameter.
+    check_type_fields(api_doc, field_warnings)
+
+    # Check for special variables (e.g., __version__)
+    if isinstance(api_doc, NamespaceDoc):
+        for field in STANDARD_FIELDS + user_docfields(api_doc, docindex):
+            add_metadata_from_var(api_doc, field)
+
+    # Extract a summary
+    if api_doc.summary is None and api_doc.descr is not None:
+        api_doc.summary, api_doc.other_docs = api_doc.descr.summary()
+
+    # If the summary is empty, but the return field is not, then use
+    # the return field to generate a summary description.
+    if (isinstance(api_doc, RoutineDoc) and api_doc.summary is None and
+        api_doc.return_descr is not None):
+        s, o = api_doc.return_descr.summary()
+        api_doc.summary = RETURN_PDS + s
+        api_doc.other_docs = o
+
+    # [XX] Make sure we don't have types/param descrs for unknown
+    # vars/params?
+
+    # Report any errors that occured
+    if api_doc in suppress_warnings:
+        if parse_errors or field_warnings:
+            log.info("Suppressing docstring warnings for %s, since it "
+                     "is not included in the documented set." %
+                     api_doc.canonical_name)
+    else:
+        report_errors(api_doc, docindex, parse_errors, field_warnings)
+
+def add_metadata_from_var(api_doc, field):
+    for varname in field.varnames:
+        # Check if api_doc has a variable w/ the given name.
+        if varname not in api_doc.variables: continue
+
+        # Check moved here from before the for loop because we expect to
+        # reach rarely this point. The loop below is to be performed more than
+        # once only for fields with more than one varname, which currently is
+        # only 'author'.
+        for md in api_doc.metadata:
+            if field == md[0]:
+                return # We already have a value for this metadata.
+
+        var_doc = api_doc.variables[varname]
+        if var_doc.value is UNKNOWN: continue
+        val_doc = var_doc.value
+        value = []
+
+        # Try extracting the value from the pyval.
+        ok_types = (basestring, int, float, bool, type(None))
+        if val_doc.pyval is not UNKNOWN:
+            if isinstance(val_doc.pyval, ok_types):
+                value = [val_doc.pyval]
+            elif field.multivalue:
+                if isinstance(val_doc.pyval, (tuple, list)):
+                    for elt in val_doc.pyval:
+                        if not isinstance(elt, ok_types): break
+                    else:
+                        value = list(val_doc.pyval)
+
+        # Try extracting the value from the parse tree.
+        elif val_doc.toktree is not UNKNOWN:
+            try: value = [epydoc.docparser.parse_string(val_doc.toktree)]
+            except KeyboardInterrupt: raise
+            except: pass
+            if field.multivalue and not value:
+                try: value = epydoc.docparser.parse_string_list(val_doc.toktree)
+                except KeyboardInterrupt: raise
+                except: raise
+                
+        # Add any values that we found.
+        for elt in value:
+            if isinstance(elt, str):
+                elt = decode_with_backslashreplace(elt)
+            else:
+                elt = unicode(elt)
+            elt = epytext.ParsedEpytextDocstring(
+                epytext.parse_as_para(elt), inline=True)
+
+            # Add in the metadata and remove from the variables
+            api_doc.metadata.append( (field, varname, elt) )
+
+        # Remove the variable itself (unless it's documented)
+        if var_doc.docstring in (None, UNKNOWN):
+            del api_doc.variables[varname]
+            if api_doc.sort_spec is not UNKNOWN:
+                try: api_doc.sort_spec.remove(varname)
+                except ValueError: pass
+
+def initialize_api_doc(api_doc):
+    """A helper function for L{parse_docstring()} that initializes
+    the attributes that C{parse_docstring()} will write to."""
+    if api_doc.descr is UNKNOWN:
+        api_doc.descr = None
+    if api_doc.summary is UNKNOWN:
+        api_doc.summary = None
+    if api_doc.metadata is UNKNOWN:
+        api_doc.metadata = []
+    if isinstance(api_doc, RoutineDoc):
+        if api_doc.arg_descrs is UNKNOWN:
+            api_doc.arg_descrs = []
+        if api_doc.arg_types is UNKNOWN:
+            api_doc.arg_types = {}
+        if api_doc.return_descr is UNKNOWN:
+            api_doc.return_descr = None
+        if api_doc.return_type is UNKNOWN:
+            api_doc.return_type = None
+        if api_doc.exception_descrs is UNKNOWN:
+            api_doc.exception_descrs = []
+    if isinstance(api_doc, (VariableDoc, PropertyDoc)):
+        if api_doc.type_descr is UNKNOWN:
+            api_doc.type_descr = None
+    if isinstance(api_doc, NamespaceDoc):
+        if api_doc.group_specs is UNKNOWN:
+            api_doc.group_specs = []
+        if api_doc.sort_spec is UNKNOWN:
+            api_doc.sort_spec = []
+
+def split_init_fields(fields, warnings):
+    """
+    Remove the fields related to the constructor from a class docstring
+    fields list.
+
+    @param fields: The fields to process. The list will be modified in place
+    @type fields: C{list} of L{markup.Field}
+    @param warnings: A list to emit processing warnings
+    @type warnings: C{list}
+    @return: The C{fields} items to be applied to the C{__init__} method
+    @rtype: C{list} of L{markup.Field}
+    """
+    init_fields = []
+
+    # Split fields in lists according to their argument, keeping order.
+    arg_fields = {}
+    args_order = []
+    i = 0
+    while i < len(fields):
+        field = fields[i]
+
+        # gather together all the fields with the same arg
+        if field.arg() is not None:
+            arg_fields.setdefault(field.arg(), []).append(fields.pop(i))
+            args_order.append(field.arg())
+        else:
+            i += 1
+
+    # Now check that for each argument there is at most a single variable
+    # and a single parameter, and at most a single type for each of them.
+    for arg in args_order:
+        ff = arg_fields.pop(arg, None)
+        if ff is None:
+            continue
+
+        var = tvar = par = tpar = None
+        for field in ff:
+            if field.tag() in VARIABLE_TAGS:
+                if var is None:
+                    var = field
+                    fields.append(field)
+                else:
+                    warnings.append(
+                        "There is more than one variable named '%s'"
+                        % arg)
+            elif field.tag() in PARAMETER_TAGS:
+                if par is None:
+                    par = field
+                    init_fields.append(field)
+                else:
+                    warnings.append(
+                        "There is more than one parameter named '%s'"
+                        % arg)
+
+            elif field.tag() == 'type':
+                if var is None and par is None:
+                    # type before obj
+                    tvar = tpar = field
+                else:
+                    if var is not None and tvar is None:
+                        tvar = field
+                    if par is not None and tpar is None:
+                        tpar = field
+
+            elif field.tag() in EXCEPTION_TAGS:
+                init_fields.append(field)
+
+            else: # Unespected field
+                fields.append(field)
+
+        # Put selected types into the proper output lists
+        if tvar is not None:
+            if var is not None:
+                fields.append(tvar)
+            else:
+                pass # [xx] warn about type w/o object?
+
+        if tpar is not None:
+            if par is not None:
+                init_fields.append(tpar)
+            else:
+                pass # [xx] warn about type w/o object?
+
+    return init_fields
+
+def report_errors(api_doc, docindex, parse_errors, field_warnings):
+    """A helper function for L{parse_docstring()} that reports any
+    markup warnings and field warnings that we encountered while
+    processing C{api_doc}'s docstring."""
+    if not parse_errors and not field_warnings: return
+
+    # Get the name of the item containing the error, and the
+    # filename of its containing module.
+    name = api_doc.canonical_name
+    module = api_doc.defining_module
+    if module is not UNKNOWN and module.filename not in (None, UNKNOWN):
+        try: filename = py_src_filename(module.filename)
+        except: filename = module.filename
+    else:
+        filename = '??'
+
+    # [xx] Don't report markup errors for standard builtins.
+    # n.b. that we must use 'is' to compare pyvals here -- if we use
+    # 'in' or '==', then a user __cmp__ method might raise an
+    # exception, or lie.
+    if isinstance(api_doc, ValueDoc) and api_doc != module:
+        if module not in (None, UNKNOWN) and module.pyval is exceptions:
+            return
+        for builtin_val in __builtin__.__dict__.values():
+            if builtin_val is api_doc.pyval:
+                return
+        
+    # Get the start line of the docstring containing the error.
+    startline = api_doc.docstring_lineno
+    if startline in (None, UNKNOWN):
+        startline = introspect_docstring_lineno(api_doc)
+        if startline in (None, UNKNOWN):
+            startline = None
+
+    # Display a block header.
+    header = 'File %s, ' % filename
+    if startline is not None:
+        header += 'line %d, ' % startline
+    header += 'in %s' % name
+    log.start_block(header)
+    
+
+    # Display all parse errors.  But first, combine any errors
+    # with duplicate description messages.
+    if startline is None:
+        # remove dups, but keep original order:
+        dups = {}
+        for error in parse_errors:
+            message = error.descr()
+            if message not in dups:
+                log.docstring_warning(message)
+                dups[message] = 1
+    else:
+        # Combine line number fields for dup messages:
+        messages = {} # maps message -> list of linenum
+        for error in parse_errors:
+            error.set_linenum_offset(startline)
+            message = error.descr()
+            messages.setdefault(message, []).append(error.linenum())
+        message_items = messages.items()
+        message_items.sort(lambda a,b:cmp(min(a[1]), min(b[1])))
+        for message, linenums in message_items:
+            linenums = [n for n in linenums if n is not None]
+            if len(linenums) == 0:
+                log.docstring_warning(message)
+            elif len(linenums) == 1:
+                log.docstring_warning("Line %s: %s" % (linenums[0], message))
+            else:
+                linenums = ', '.join(['%s' % l for l in linenums])
+                log.docstring_warning("Lines %s: %s" % (linenums, message))
+
+    # Display all field warnings.
+    for warning in field_warnings:
+        log.docstring_warning(warning)
+
+    # End the message block.
+    log.end_block()
+
+RETURN_PDS = markup.parse('Returns:', markup='epytext')
+"""A ParsedDocstring containing the text 'Returns'.  This is used to
+construct summary descriptions for routines that have empty C{descr},
+but non-empty C{return_descr}."""
+RETURN_PDS._tree.children[0].attribs['inline'] = True
+
+######################################################################
+#{ Field Processing Error Messages
+######################################################################
+
+UNEXPECTED_ARG = '%r did not expect an argument'
+EXPECTED_ARG = '%r expected an argument'
+EXPECTED_SINGLE_ARG = '%r expected a single argument'
+BAD_CONTEXT = 'Invalid context for %r'
+REDEFINED = 'Redefinition of %s'
+UNKNOWN_TAG = 'Unknown field tag %r'
+BAD_PARAM = '@%s for unknown parameter %s'
+
+######################################################################
+#{ Field Processing
+######################################################################
+
+def process_field(api_doc, docindex, tag, arg, descr):
+    """
+    Process a single field, and use it to update C{api_doc}.  If
+    C{tag} is the name of a special field, then call its handler
+    function.  If C{tag} is the name of a simple field, then use
+    C{process_simple_field} to process it.  Otherwise, check if it's a
+    user-defined field, defined in this docstring or the docstring of
+    a containing object; and if so, process it with
+    C{process_simple_field}.
+
+    @param tag: The field's tag, such as C{'author'}
+    @param arg: The field's optional argument
+    @param descr: The description following the field tag and
+        argument.
+    @raise ValueError: If a problem was encountered while processing
+        the field.  The C{ValueError}'s string argument is an
+        explanation of the problem, which should be displayed as a
+        warning message.
+    """
+    # standard special fields
+    if tag in _field_dispatch_table:
+        handler = _field_dispatch_table[tag]
+        handler(api_doc, docindex, tag, arg, descr)
+        return
+
+    # standard simple fields & user-defined fields
+    for field in STANDARD_FIELDS + user_docfields(api_doc, docindex):
+        if tag in field.tags:
+            # [xx] check if it's redefined if it's not multivalue??
+            if not field.takes_arg:
+                _check(api_doc, tag, arg, expect_arg=False)
+            api_doc.metadata.append((field, arg, descr))
+            return
+
+    # If we didn't handle the field, then report a warning.
+    raise ValueError(UNKNOWN_TAG % tag)
+
+def user_docfields(api_doc, docindex):
+    """
+    Return a list of user defined fields that can be used for the
+    given object.  This list is taken from the given C{api_doc}, and
+    any of its containing C{NamepaceDoc}s.
+
+    @note: We assume here that a parent's docstring will always be
+        parsed before its childrens'.  This is indeed the case when we
+        are called via L{docbuilder.build_doc_index()}.  If a child's
+        docstring is parsed before its parents, then its parent won't
+        yet have had its C{extra_docstring_fields} attribute
+        initialized.
+    """
+    docfields = []
+    # Get any docfields from `api_doc` itself
+    if api_doc.extra_docstring_fields not in (None, UNKNOWN):
+        docfields += api_doc.extra_docstring_fields
+    # Get any docfields from `api_doc`'s ancestors
+    for i in range(len(api_doc.canonical_name)-1, 0, -1):
+        ancestor = docindex.get_valdoc(api_doc.canonical_name[:i])
+        if ancestor is not None \
+        and ancestor.extra_docstring_fields not in (None, UNKNOWN):
+            docfields += ancestor.extra_docstring_fields
+    return docfields
+
+_field_dispatch_table = {}
+def register_field_handler(handler, *field_tags):
+    """
+    Register the given field handler function for processing any
+    of the given field tags.  Field handler functions should
+    have the following signature:
+
+        >>> def field_handler(api_doc, docindex, tag, arg, descr):
+        ...     '''update api_doc in response to the field.'''
+
+    Where C{api_doc} is the documentation object to update;
+    C{docindex} is a L{DocIndex} that can be used to look up the
+    documentation for related objects; C{tag} is the field tag that
+    was used; C{arg} is the optional argument; and C{descr} is the
+    description following the field tag and argument.
+    """
+    for field_tag in field_tags:
+        _field_dispatch_table[field_tag] = handler
+
+######################################################################
+#{ Field Handler Functions
+######################################################################
+
+def process_summary_field(api_doc, docindex, tag, arg, descr):
+    """Store C{descr} in C{api_doc.summary}"""
+    _check(api_doc, tag, arg, expect_arg=False)
+    if api_doc.summary is not None:
+        raise ValueError(REDEFINED % tag)
+    api_doc.summary = descr
+
+def process_include_field(api_doc, docindex, tag, arg, descr):
+    """Copy the docstring contents from the object named in C{descr}"""
+    _check(api_doc, tag, arg, expect_arg=False)
+    # options:
+    #   a. just append the descr to our own
+    #   b. append descr and update metadata
+    #   c. append descr and process all fields.
+    # in any case, mark any errors we may find as coming from an
+    # imported docstring.
+    
+    # how does this interact with documentation inheritance??
+    raise ValueError('%s not implemented yet' % tag)
+
+def process_undocumented_field(api_doc, docindex, tag, arg, descr):
+    """Remove any documentation for the variables named in C{descr}"""
+    _check(api_doc, tag, arg, context=NamespaceDoc, expect_arg=False)
+    for ident in _descr_to_identifiers(descr):
+        var_name_re = re.compile('^%s$' % ident.replace('*', '(.*)'))
+        for var_name, var_doc in api_doc.variables.items():
+            if var_name_re.match(var_name):
+                # Remove the variable from `variables`.
+                api_doc.variables.pop(var_name, None)
+                if api_doc.sort_spec is not UNKNOWN:
+                    try: api_doc.sort_spec.remove(var_name)
+                    except ValueError: pass
+        # For modules, remove any submodules that match var_name_re.
+        if isinstance(api_doc, ModuleDoc):
+            removed = set([m for m in api_doc.submodules
+                           if var_name_re.match(m.canonical_name[-1])])
+            if removed:
+                # Remove the indicated submodules from this module.
+                api_doc.submodules = [m for m in api_doc.submodules
+                                      if m not in removed]
+                # Remove all ancestors of the indicated submodules
+                # from the docindex root.  E.g., if module x
+                # declares y to be undocumented, then x.y.z should
+                # also be undocumented.
+                for elt in docindex.root[:]:
+                    for m in removed:
+                        if m.canonical_name.dominates(elt.canonical_name):
+                            docindex.root.remove(elt)
+
+def process_group_field(api_doc, docindex, tag, arg, descr):
+    """Define a group named C{arg} containing the variables whose
+    names are listed in C{descr}."""
+    _check(api_doc, tag, arg, context=NamespaceDoc, expect_arg=True)
+    api_doc.group_specs.append( (arg, _descr_to_identifiers(descr)) )
+    # [xx] should this also set sort order?
+
+def process_deffield_field(api_doc, docindex, tag, arg, descr):
+    """Define a new custom field."""
+    _check(api_doc, tag, arg, expect_arg=True)
+    if api_doc.extra_docstring_fields is UNKNOWN:
+        api_doc.extra_docstring_fields = []
+    try:
+        docstring_field = _descr_to_docstring_field(arg, descr)
+        docstring_field.varnames.append("__%s__" % arg)
+        api_doc.extra_docstring_fields.append(docstring_field)
+    except ValueError, e:
+        raise ValueError('Bad %s: %s' % (tag, e))
+
+def process_raise_field(api_doc, docindex, tag, arg, descr):
+    """Record the fact that C{api_doc} can raise the exception named
+    C{tag} in C{api_doc.exception_descrs}."""
+    _check(api_doc, tag, arg, context=RoutineDoc, expect_arg='single')
+    try: name = DottedName(arg, strict=True)
+    except DottedName.InvalidDottedName: name = arg
+    api_doc.exception_descrs.append( (name, descr) )
+
+def process_sort_field(api_doc, docindex, tag, arg, descr):
+    _check(api_doc, tag, arg, context=NamespaceDoc, expect_arg=False)
+    api_doc.sort_spec = _descr_to_identifiers(descr) + api_doc.sort_spec
+
+# [xx] should I notice when they give a type for an unknown var?
+def process_type_field(api_doc, docindex, tag, arg, descr):
+    # In namespace, "@type var: ..." describes the type of a var.
+    if isinstance(api_doc, NamespaceDoc):
+        _check(api_doc, tag, arg, expect_arg='single')
+        set_var_type(api_doc, arg, descr)
+
+    # For variables & properties, "@type: ..." describes the variable.
+    elif isinstance(api_doc, (VariableDoc, PropertyDoc)):
+        _check(api_doc, tag, arg, expect_arg=False)
+        if api_doc.type_descr is not None:
+            raise ValueError(REDEFINED % tag)
+        api_doc.type_descr = descr
+
+    # For routines, "@type param: ..." describes a parameter.
+    elif isinstance(api_doc, RoutineDoc):
+        _check(api_doc, tag, arg, expect_arg='single')
+        if arg in api_doc.arg_types:
+            raise ValueError(REDEFINED % ('type for '+arg))
+        api_doc.arg_types[arg] = descr
+
+    else:
+        raise ValueError(BAD_CONTEXT % tag)
+        
+def process_var_field(api_doc, docindex, tag, arg, descr):
+    _check(api_doc, tag, arg, context=ModuleDoc, expect_arg=True)
+    for ident in re.split('[:;, ] *', arg):
+        set_var_descr(api_doc, ident, descr)
+        
+def process_cvar_field(api_doc, docindex, tag, arg, descr):
+    # If @cvar is used *within* a variable, then use it as the
+    # variable's description, and treat the variable as a class var.
+    if (isinstance(api_doc, VariableDoc) and
+        isinstance(api_doc.container, ClassDoc)):
+        _check(api_doc, tag, arg, expect_arg=False)
+        api_doc.is_instvar = False
+        api_doc.descr = markup.ConcatenatedDocstring(api_doc.descr, descr)
+        api_doc.summary, api_doc.other_docs = descr.summary()
+
+    # Otherwise, @cvar should be used in a class.
+    else:
+        _check(api_doc, tag, arg, context=ClassDoc, expect_arg=True)
+        for ident in re.split('[:;, ] *', arg):
+            set_var_descr(api_doc, ident, descr)
+            api_doc.variables[ident].is_instvar = False
+        
+def process_ivar_field(api_doc, docindex, tag, arg, descr):
+    # If @ivar is used *within* a variable, then use it as the
+    # variable's description, and treat the variable as an instvar.
+    if (isinstance(api_doc, VariableDoc) and
+        isinstance(api_doc.container, ClassDoc)):
+        _check(api_doc, tag, arg, expect_arg=False)
+        # require that there be no other descr?
+        api_doc.is_instvar = True
+        api_doc.descr = markup.ConcatenatedDocstring(api_doc.descr, descr)
+        api_doc.summary, api_doc.other_docs = descr.summary()
+
+    # Otherwise, @ivar should be used in a class.
+    else:
+        _check(api_doc, tag, arg, context=ClassDoc, expect_arg=True)
+        for ident in re.split('[:;, ] *', arg):
+            set_var_descr(api_doc, ident, descr)
+            api_doc.variables[ident].is_instvar = True
+
+# [xx] '@return: foo' used to get used as a descr if no other
+# descr was present.  is that still true?
+def process_return_field(api_doc, docindex, tag, arg, descr):
+    _check(api_doc, tag, arg, context=RoutineDoc, expect_arg=False)
+    if api_doc.return_descr is not None:
+        raise ValueError(REDEFINED % 'return value description')
+    api_doc.return_descr = descr
+
+def process_rtype_field(api_doc, docindex, tag, arg, descr):
+    _check(api_doc, tag, arg,
+           context=(RoutineDoc, PropertyDoc), expect_arg=False)
+    if isinstance(api_doc, RoutineDoc):
+        if api_doc.return_type is not None:
+            raise ValueError(REDEFINED % 'return value type')
+        api_doc.return_type = descr
+
+    elif isinstance(api_doc, PropertyDoc):
+        _check(api_doc, tag, arg, expect_arg=False)
+        if api_doc.type_descr is not None:
+            raise ValueError(REDEFINED % tag)
+        api_doc.type_descr = descr
+
+def process_arg_field(api_doc, docindex, tag, arg, descr):
+    _check(api_doc, tag, arg, context=RoutineDoc, expect_arg=True)
+    idents = re.split('[:;, ] *', arg)
+    api_doc.arg_descrs.append( (idents, descr) )
+    # Check to make sure that the documented parameter(s) are
+    # actually part of the function signature.
+    all_args = api_doc.all_args()
+    if all_args not in (['...'], UNKNOWN):
+        bad_params = ['"%s"' % i for i in idents if i not in all_args]
+        if bad_params:
+            raise ValueError(BAD_PARAM % (tag, ', '.join(bad_params)))
+
+def process_kwarg_field(api_doc, docindex, tag, arg, descr):
+    # [xx] these should -not- be checked if they exist..
+    # and listed separately or not??
+    _check(api_doc, tag, arg, context=RoutineDoc, expect_arg=True)
+    idents = re.split('[:;, ] *', arg)
+    api_doc.arg_descrs.append( (idents, descr) )
+
+register_field_handler(process_group_field, 'group')
+register_field_handler(process_deffield_field, 'deffield', 'newfield')
+register_field_handler(process_sort_field, 'sort')
+register_field_handler(process_summary_field, 'summary')
+register_field_handler(process_undocumented_field, 'undocumented')
+register_field_handler(process_include_field, 'include')
+register_field_handler(process_var_field, 'var', 'variable')
+register_field_handler(process_type_field, 'type')
+register_field_handler(process_cvar_field, 'cvar', 'cvariable')
+register_field_handler(process_ivar_field, 'ivar', 'ivariable')
+register_field_handler(process_return_field, 'return', 'returns')
+register_field_handler(process_rtype_field, 'rtype', 'returntype')
+register_field_handler(process_arg_field, 'arg', 'argument',
+                                          'parameter', 'param')
+register_field_handler(process_kwarg_field, 'kwarg', 'keyword', 'kwparam')
+register_field_handler(process_raise_field, 'raise', 'raises',
+                                            'except', 'exception')
+
+# Tags related to function parameters
+PARAMETER_TAGS = ('arg', 'argument', 'parameter', 'param',
+                  'kwarg', 'keyword', 'kwparam')
+
+# Tags related to variables in a class
+VARIABLE_TAGS = ('cvar', 'cvariable', 'ivar', 'ivariable')
+
+# Tags related to exceptions
+EXCEPTION_TAGS = ('raise', 'raises', 'except', 'exception')
+
+######################################################################
+#{ Helper Functions
+######################################################################
+
+def check_type_fields(api_doc, field_warnings):
+    """Check to make sure that all type fields correspond to some
+    documented parameter; if not, append a warning to field_warnings."""
+    if isinstance(api_doc, RoutineDoc):
+        for arg in api_doc.arg_types:
+            if arg not in api_doc.all_args():
+                for args, descr in api_doc.arg_descrs:
+                    if arg in args:
+                        break
+                else:
+                    field_warnings.append(BAD_PARAM % ('type', '"%s"' % arg))
+
+def set_var_descr(api_doc, ident, descr):
+    if ident not in api_doc.variables:
+        api_doc.variables[ident] = VariableDoc(
+            container=api_doc, name=ident,
+            canonical_name=api_doc.canonical_name+ident)
+                                      
+    var_doc = api_doc.variables[ident]
+    if var_doc.descr not in (None, UNKNOWN):
+        raise ValueError(REDEFINED % ('description for '+ident))
+    var_doc.descr = descr
+    if var_doc.summary in (None, UNKNOWN):
+        var_doc.summary, var_doc.other_docs = var_doc.descr.summary()
+
+def set_var_type(api_doc, ident, descr):
+    if ident not in api_doc.variables:
+        api_doc.variables[ident] = VariableDoc(
+            container=api_doc, name=ident,
+            canonical_name=api_doc.canonical_name+ident)
+        
+    var_doc = api_doc.variables[ident]
+    if var_doc.type_descr not in (None, UNKNOWN):
+        raise ValueError(REDEFINED % ('type for '+ident))
+    var_doc.type_descr = descr
+        
+def _check(api_doc, tag, arg, context=None, expect_arg=None):
+    if context is not None:
+        if not isinstance(api_doc, context):
+            raise ValueError(BAD_CONTEXT % tag)
+    if expect_arg is not None:
+        if expect_arg == True:
+            if arg is None:
+                raise ValueError(EXPECTED_ARG % tag)
+        elif expect_arg == False:
+            if arg is not None:
+                raise ValueError(UNEXPECTED_ARG % tag)
+        elif expect_arg == 'single':
+            if (arg is None or ' ' in arg):
+                raise ValueError(EXPECTED_SINGLE_ARG % tag)
+        else:
+            assert 0, 'bad value for expect_arg'
+
+def get_docformat(api_doc, docindex):
+    """
+    Return the name of the markup language that should be used to
+    parse the API documentation for the given object.
+    """
+    # Find the module that defines api_doc.
+    module = api_doc.defining_module
+    # Look up its docformat.
+    if module is not UNKNOWN and module.docformat not in (None, UNKNOWN):
+        docformat = module.docformat
+    else:
+        docformat = DEFAULT_DOCFORMAT
+    # Convert to lower case & strip region codes.
+    try: return docformat.lower().split()[0]
+    except: return DEFAULT_DOCFORMAT
+
+def unindent_docstring(docstring):
+    # [xx] copied from inspect.getdoc(); we can't use inspect.getdoc()
+    # itself, since it expects an object, not a string.
+    
+    if not docstring: return ''
+    lines = docstring.expandtabs().split('\n')
+
+    # Find minimum indentation of any non-blank lines after first line.
+    margin = sys.maxint
+    for line in lines[1:]:
+        content = len(line.lstrip())
+        if content:
+            indent = len(line) - content
+            margin = min(margin, indent)
+    # Remove indentation.
+    if lines:
+        lines[0] = lines[0].lstrip()
+    if margin < sys.maxint:
+        for i in range(1, len(lines)): lines[i] = lines[i][margin:]
+    # Remove any trailing (but not leading!) blank lines.
+    while lines and not lines[-1]:
+        lines.pop()
+    #while lines and not lines[0]:
+    #    lines.pop(0)
+    return '\n'.join(lines)
+                           
+_IDENTIFIER_LIST_REGEXP = re.compile(r'^[\w.\*]+([\s,:;]\s*[\w.\*]+)*$')
+def _descr_to_identifiers(descr):
+    """
+    Given a C{ParsedDocstring} that contains a list of identifiers,
+    return a list of those identifiers.  This is used by fields such
+    as C{@group} and C{@sort}, which expect lists of identifiers as
+    their values.  To extract the identifiers, the docstring is first
+    converted to plaintext, and then split.  The plaintext content of
+    the docstring must be a a list of identifiers, separated by
+    spaces, commas, colons, or semicolons.
+    
+    @rtype: C{list} of C{string}
+    @return: A list of the identifier names contained in C{descr}.
+    @type descr: L{markup.ParsedDocstring}
+    @param descr: A C{ParsedDocstring} containing a list of
+        identifiers.
+    @raise ValueError: If C{descr} does not contain a valid list of
+        identifiers.
+    """
+    idents = descr.to_plaintext(None).strip()
+    idents = re.sub(r'\s+', ' ', idents)
+    if not _IDENTIFIER_LIST_REGEXP.match(idents):
+        raise ValueError, 'Bad Identifier list: %r' % idents
+    rval = re.split('[:;, ] *', idents)
+    return rval
+    
+def _descr_to_docstring_field(arg, descr):
+    tags = [s.lower() for s in re.split('[:;, ] *', arg)]
+    descr = descr.to_plaintext(None).strip()
+    args = re.split('[:;,] *', descr)
+    if len(args) == 0 or len(args) > 3:
+        raise ValueError, 'Wrong number of arguments'
+    singular = args[0]
+    if len(args) >= 2: plural = args[1]
+    else: plural = None
+    short = 0
+    if len(args) >= 3:
+        if args[2] == 'short': short = 1
+        else: raise ValueError('Bad arg 2 (expected "short")')
+    return DocstringField(tags, singular, plural, short)
+
+######################################################################
+#{ Function Signature Extraction
+######################################################################
+
+# [XX] todo: add optional type modifiers?
+_SIGNATURE_RE = re.compile(
+    # Class name (for builtin methods)
+    r'^\s*((?P<self>\w+)\.)?' +
+    # The function name (must match exactly) [XX] not anymore!
+    r'(?P<func>\w+)' +
+    # The parameters
+    r'\((?P<params>(\s*\[?\s*\*{0,2}[\w\-\.]+(\s*=.+?)?'+
+    r'(\s*\[?\s*,\s*\]?\s*\*{0,2}[\w\-\.]+(\s*=.+?)?)*\]*)?)\s*\)' +
+    # The return value (optional)
+    r'(\s*(->)\s*(?P<return>\S.*?))?'+
+    # The end marker
+    r'\s*(\n|\s+(--|<=+>)\s+|$|\.\s+|\.\n)')
+"""A regular expression that is used to extract signatures from
+docstrings."""
+    
+def parse_function_signature(func_doc, doc_source, docformat, parse_errors):
+    """
+    Construct the signature for a builtin function or method from
+    its docstring.  If the docstring uses the standard convention
+    of including a signature in the first line of the docstring
+    (and formats that signature according to standard
+    conventions), then it will be used to extract a signature.
+    Otherwise, the signature will be set to a single varargs
+    variable named C{"..."}.
+
+    @param func_doc: The target object where to store parsed signature. Also
+        container of the docstring to parse if doc_source is C{None}
+    @type func_doc: L{RoutineDoc}
+    @param doc_source: Contains the docstring to parse. If C{None}, parse
+        L{func_doc} docstring instead
+    @type doc_source: L{APIDoc}
+    @rtype: C{None}
+    """
+    if doc_source is None:
+        doc_source = func_doc
+
+    # If there's no docstring, then don't do anything.
+    if not doc_source.docstring: return False
+
+    m = _SIGNATURE_RE.match(doc_source.docstring)
+    if m is None: return False
+
+    # Do I want to be this strict?
+    # Notice that __init__ must match the class name instead, if the signature
+    # comes from the class docstring
+#     if not (m.group('func') == func_doc.canonical_name[-1] or
+#             '_'+m.group('func') == func_doc.canonical_name[-1]):
+#         log.warning("Not extracting function signature from %s's "
+#                     "docstring, since the name doesn't match." %
+#                     func_doc.canonical_name)
+#         return False
+    
+    params = m.group('params')
+    rtype = m.group('return')
+    selfparam = m.group('self')
+    
+    # Extract the parameters from the signature.
+    func_doc.posargs = []
+    func_doc.vararg = None
+    func_doc.kwarg = None
+    if func_doc.posarg_defaults is UNKNOWN:
+        func_doc.posarg_defaults = []
+    if params:
+        # Figure out which parameters are optional.
+        while '[' in params or ']' in params:
+            m2 = re.match(r'(.*)\[([^\[\]]+)\](.*)', params)
+            if not m2: return False
+            (start, mid, end) = m2.groups()
+            mid = re.sub(r'((,|^)\s*[\w\-\.]+)', r'\1=...', mid)
+            params = start+mid+end
+
+        params = re.sub(r'=...=' , r'=', params)
+        for name in params.split(','):
+            if '=' in name:
+                (name, default_repr) = name.split('=',1)
+                default = GenericValueDoc(parse_repr=default_repr)
+            else:
+                default = None
+            name = name.strip()
+            if name == '...':
+                func_doc.vararg = '...'
+            elif name.startswith('**'):
+                func_doc.kwarg = name[2:]
+            elif name.startswith('*'):
+                func_doc.vararg = name[1:]
+            else:
+                func_doc.posargs.append(name)
+                if len(func_doc.posarg_defaults) < len(func_doc.posargs):
+                    func_doc.posarg_defaults.append(default)
+                elif default is not None:
+                    argnum = len(func_doc.posargs)-1
+                    func_doc.posarg_defaults[argnum] = default
+
+    # Extract the return type/value from the signature
+    if rtype:
+        func_doc.return_type = markup.parse(rtype, docformat, parse_errors,
+                                            inline=True)
+
+    # Add the self parameter, if it was specified.
+    if selfparam:
+        func_doc.posargs.insert(0, selfparam)
+        func_doc.posarg_defaults.insert(0, None)
+
+    # Remove the signature from the docstring.
+    doc_source.docstring = doc_source.docstring[m.end():]
+        
+    # We found a signature.
+    return True
+
diff --git a/epydoc/docwriter/__init__.py b/epydoc/docwriter/__init__.py
new file mode 100644
index 0000000..05af188
--- /dev/null
+++ b/epydoc/docwriter/__init__.py
@@ -0,0 +1,12 @@
+# epydoc -- Output generation
+#
+# Copyright (C) 2005 Edward Loper
+# Author: Edward Loper <edloper at loper.org>
+# URL: <http://epydoc.sf.net>
+#
+# $Id: __init__.py 956 2006-03-10 01:30:51Z edloper $
+
+"""
+Output generation.
+"""
+__docformat__ = 'epytext en'
diff --git a/epydoc/docwriter/dotgraph.py b/epydoc/docwriter/dotgraph.py
new file mode 100644
index 0000000..b7128d3
--- /dev/null
+++ b/epydoc/docwriter/dotgraph.py
@@ -0,0 +1,1351 @@
+# epydoc -- Graph generation
+#
+# Copyright (C) 2005 Edward Loper
+# Author: Edward Loper <edloper at loper.org>
+# URL: <http://epydoc.sf.net>
+#
+# $Id: dotgraph.py 1663 2007-11-07 15:29:47Z dvarrazzo $
+
+"""
+Render Graphviz directed graphs as images.  Below are some examples.
+
+.. importgraph::
+
+.. classtree:: epydoc.apidoc.APIDoc
+
+.. packagetree:: epydoc
+
+:see: `The Graphviz Homepage
+       <http://www.research.att.com/sw/tools/graphviz/>`__
+"""
+__docformat__ = 'restructuredtext'
+
+import re
+import sys
+from epydoc import log
+from epydoc.apidoc import *
+from epydoc.util import *
+from epydoc.compat import * # Backwards compatibility
+
+# colors for graphs of APIDocs
+MODULE_BG = '#d8e8ff'
+CLASS_BG = '#d8ffe8'
+SELECTED_BG = '#ffd0d0'
+BASECLASS_BG = '#e0b0a0'
+SUBCLASS_BG = '#e0b0a0'
+ROUTINE_BG = '#e8d0b0' # maybe?
+INH_LINK_COLOR = '#800000'
+
+######################################################################
+#{ Dot Graphs
+######################################################################
+
+DOT_COMMAND = 'dot'
+"""The command that should be used to spawn dot"""
+
+class DotGraph:
+    """
+    A ``dot`` directed graph.  The contents of the graph are
+    constructed from the following instance variables:
+
+      - `nodes`: A list of `DotGraphNode`\\s, encoding the nodes
+        that are present in the graph.  Each node is characterized
+        a set of attributes, including an optional label.
+      - `edges`: A list of `DotGraphEdge`\\s, encoding the edges
+        that are present in the graph.  Each edge is characterized
+        by a set of attributes, including an optional label.
+      - `node_defaults`: Default attributes for nodes.
+      - `edge_defaults`: Default attributes for edges.
+      - `body`: A string that is appended as-is in the body of
+        the graph.  This can be used to build more complex dot
+        graphs.
+
+    The `link()` method can be used to resolve crossreference links
+    within the graph.  In particular, if the 'href' attribute of any
+    node or edge is assigned a value of the form ``<name>``, then it
+    will be replaced by the URL of the object with that name.  This
+    applies to the `body` as well as the `nodes` and `edges`.
+
+    To render the graph, use the methods `write()` and `render()`.
+    Usually, you should call `link()` before you render the graph.
+    """
+    _uids = set()
+    """A set of all uids that that have been generated, used to ensure
+    that each new graph has a unique uid."""
+
+    DEFAULT_NODE_DEFAULTS={'fontsize':10, 'fontname': 'Helvetica'}
+    DEFAULT_EDGE_DEFAULTS={'fontsize':10, 'fontname': 'Helvetica'}
+    
+    def __init__(self, title, body='', node_defaults=None,
+                 edge_defaults=None, caption=None):
+        """
+        Create a new `DotGraph`.
+        """
+        self.title = title
+        """The title of the graph."""
+
+        self.caption = caption
+        """A caption for the graph."""
+        
+        self.nodes = []
+        """A list of the nodes that are present in the graph.
+        
+        :type: ``list`` of `DotGraphNode`"""
+        
+        self.edges = []
+        """A list of the edges that are present in the graph.
+        
+        :type: ``list`` of `DotGraphEdge`"""
+
+        self.body = body
+        """A string that should be included as-is in the body of the
+        graph.
+        
+        :type: ``str``"""
+        
+        self.node_defaults = node_defaults or self.DEFAULT_NODE_DEFAULTS
+        """Default attribute values for nodes."""
+        
+        self.edge_defaults = edge_defaults or self.DEFAULT_EDGE_DEFAULTS
+        """Default attribute values for edges."""
+
+        self.uid = re.sub(r'\W', '_', title).lower()
+        """A unique identifier for this graph.  This can be used as a
+        filename when rendering the graph.  No two `DotGraph`\s will
+        have the same uid."""
+
+        # Encode the title, if necessary.
+        if isinstance(self.title, unicode):
+            self.title = self.title.encode('ascii', 'xmlcharrefreplace')
+
+        # Make sure the UID isn't too long.
+        self.uid = self.uid[:30]
+        
+        # Make sure the UID is unique
+        if self.uid in self._uids:
+            n = 2
+            while ('%s_%s' % (self.uid, n)) in self._uids: n += 1
+            self.uid = '%s_%s' % (self.uid, n)
+        self._uids.add(self.uid)
+
+    def to_html(self, image_file, image_url, center=True):
+        """
+        Return the HTML code that should be uesd to display this graph
+        (including a client-side image map).
+        
+        :param image_url: The URL of the image file for this graph;
+            this should be generated separately with the `write()` method.
+        """
+        # If dotversion >1.8.10, then we can generate the image and
+        # the cmapx with a single call to dot.  Otherwise, we need to
+        # run dot twice.
+        if get_dot_version() > [1,8,10]:
+            cmapx = self._run_dot('-Tgif', '-o%s' % image_file, '-Tcmapx')
+            if cmapx is None: return '' # failed to render
+        else:
+            if not self.write(image_file):
+                return '' # failed to render
+            cmapx = self.render('cmapx') or ''
+
+        # Decode the cmapx (dot uses utf-8)
+        try:
+            cmapx = cmapx.decode('utf-8')
+        except UnicodeDecodeError:
+            log.debug('%s: unable to decode cmapx from dot; graph will '
+                      'not have clickable regions' % image_file)
+            cmapx = ''
+
+        title = plaintext_to_html(self.title or '')
+        caption = plaintext_to_html(self.caption or '')
+        if title or caption:
+            css_class = 'graph-with-title'
+        else:
+            css_class = 'graph-without-title'
+        if len(title)+len(caption) > 80:
+            title_align = 'left'
+            table_width = ' width="600"'
+        else:
+            title_align = 'center'
+            table_width = ''
+            
+        if center: s = '<center>'
+        if title or caption:
+            s += ('<table border="0" cellpadding="0" cellspacing="0" '
+                  'class="graph"%s>\n  <tr><td align="center">\n' %
+                  table_width)
+        s += ('  %s\n  <img src="%s" alt=%r usemap="#%s" '
+              'ismap="ismap" class="%s" />\n' %
+              (cmapx.strip(), image_url, title, self.uid, css_class))
+        if title or caption:
+            s += '  </td></tr>\n  <tr><td align=%r>\n' % title_align
+            if title:
+                s += '<span class="graph-title">%s</span>' % title
+            if title and caption:
+                s += ' -- '
+            if caption:
+                s += '<span class="graph-caption">%s</span>' % caption
+            s += '\n  </td></tr>\n</table><br />'
+        if center: s += '</center>'
+        return s
+
+    def link(self, docstring_linker):
+        """
+        Replace any href attributes whose value is ``<name>`` with 
+        the url of the object whose name is ``<name>``.
+        """
+        # Link xrefs in nodes
+        self._link_href(self.node_defaults, docstring_linker)
+        for node in self.nodes:
+            self._link_href(node.attribs, docstring_linker)
+
+        # Link xrefs in edges
+        self._link_href(self.edge_defaults, docstring_linker)
+        for edge in self.nodes:
+            self._link_href(edge.attribs, docstring_linker)
+
+        # Link xrefs in body
+        def subfunc(m):
+            url = docstring_linker.url_for(m.group(1))
+            if url: return 'href="%s"%s' % (url, m.group(2))
+            else: return ''
+        self.body = re.sub("href\s*=\s*['\"]?<([\w\.]+)>['\"]?\s*(,?)",
+                           subfunc, self.body)
+
+    def _link_href(self, attribs, docstring_linker):
+        """Helper for `link()`"""
+        if 'href' in attribs:
+            m = re.match(r'^<([\w\.]+)>$', attribs['href'])
+            if m:
+                url = docstring_linker.url_for(m.group(1))
+                if url: attribs['href'] = url
+                else: del attribs['href']
+                
+    def write(self, filename, language='gif'):
+        """
+        Render the graph using the output format `language`, and write
+        the result to `filename`.
+        
+        :return: True if rendering was successful.
+        """
+        result = self._run_dot('-T%s' % language,
+                               '-o%s' % filename)
+        # Decode into unicode, if necessary.
+        if language == 'cmapx' and result is not None:
+            result = result.decode('utf-8')
+        return (result is not None)
+
+    def render(self, language='gif'):
+        """
+        Use the ``dot`` command to render this graph, using the output
+        format `language`.  Return the result as a string, or ``None``
+        if the rendering failed.
+        """
+        return self._run_dot('-T%s' % language)
+
+    def _run_dot(self, *options):
+        try:
+            result, err = run_subprocess((DOT_COMMAND,)+options,
+                                         self.to_dotfile())
+            if err: log.warning("Graphviz dot warning(s):\n%s" % err)
+        except OSError, e:
+            log.warning("Unable to render Graphviz dot graph:\n%s" % e)
+            #log.debug(self.to_dotfile())
+            return None
+
+        return result
+
+    def to_dotfile(self):
+        """
+        Return the string contents of the dot file that should be used
+        to render this graph.
+        """
+        lines = ['digraph %s {' % self.uid,
+                 'node [%s]' % ','.join(['%s="%s"' % (k,v) for (k,v)
+                                         in self.node_defaults.items()]),
+                 'edge [%s]' % ','.join(['%s="%s"' % (k,v) for (k,v)
+                                         in self.edge_defaults.items()])]
+        if self.body:
+            lines.append(self.body)
+        lines.append('/* Nodes */')
+        for node in self.nodes:
+            lines.append(node.to_dotfile())
+        lines.append('/* Edges */')
+        for edge in self.edges:
+            lines.append(edge.to_dotfile())
+        lines.append('}')
+
+        # Default dot input encoding is UTF-8
+        return u'\n'.join(lines).encode('utf-8')
+
+class DotGraphNode:
+    _next_id = 0
+    def __init__(self, label=None, html_label=None, **attribs):
+        if label is not None and html_label is not None:
+            raise ValueError('Use label or html_label, not both.')
+        if label is not None: attribs['label'] = label
+        self._html_label = html_label
+        self._attribs = attribs
+        self.id = self.__class__._next_id
+        self.__class__._next_id += 1
+        self.port = None
+
+    def __getitem__(self, attr):
+        return self._attribs[attr]
+
+    def __setitem__(self, attr, val):
+        if attr == 'html_label':
+            self._attribs.pop('label')
+            self._html_label = val
+        else:
+            if attr == 'label': self._html_label = None
+            self._attribs[attr] = val
+
+    def to_dotfile(self):
+        """
+        Return the dot commands that should be used to render this node.
+        """
+        attribs = ['%s="%s"' % (k,v) for (k,v) in self._attribs.items()
+                   if v is not None]
+        if self._html_label:
+            attribs.insert(0, 'label=<%s>' % (self._html_label,))
+        if attribs: attribs = ' [%s]' % (','.join(attribs))
+        return 'node%d%s' % (self.id, attribs)
+
+class DotGraphEdge:
+    def __init__(self, start, end, label=None, **attribs):
+        """
+        :type start: `DotGraphNode`
+        :type end: `DotGraphNode`
+        """
+        assert isinstance(start, DotGraphNode)
+        assert isinstance(end, DotGraphNode)
+        if label is not None: attribs['label'] = label
+        self.start = start       #: :type: `DotGraphNode`
+        self.end = end           #: :type: `DotGraphNode`
+        self._attribs = attribs
+
+    def __getitem__(self, attr):
+        return self._attribs[attr]
+
+    def __setitem__(self, attr, val):
+        self._attribs[attr] = val
+
+    def to_dotfile(self):
+        """
+        Return the dot commands that should be used to render this edge.
+        """
+        # Set head & tail ports, if the nodes have preferred ports.
+        attribs = self._attribs.copy()
+        if (self.start.port is not None and 'headport' not in attribs):
+            attribs['headport'] = self.start.port
+        if (self.end.port is not None and 'tailport' not in attribs):
+            attribs['tailport'] = self.end.port
+        # Convert attribs to a string
+        attribs = ','.join(['%s="%s"' % (k,v) for (k,v) in attribs.items()
+                            if v is not None])
+        if attribs: attribs = ' [%s]' % attribs
+        # Return the dotfile edge.
+        return 'node%d -> node%d%s' % (self.start.id, self.end.id, attribs)
+
+######################################################################
+#{ Specialized Nodes for UML Graphs
+######################################################################
+
+class DotGraphUmlClassNode(DotGraphNode):
+    """
+    A specialized dot graph node used to display `ClassDoc`\s using
+    UML notation.  The node is rendered as a table with three cells:
+    the top cell contains the class name; the middle cell contains a
+    list of attributes; and the bottom cell contains a list of
+    operations::
+
+         +-------------+
+         |  ClassName  |
+         +-------------+
+         | x: int      |
+         |     ...     |
+         +-------------+
+         | f(self, x)  |
+         |     ...     |
+         +-------------+
+
+    `DotGraphUmlClassNode`\s may be *collapsed*, in which case they are
+    drawn as a simple box containing the class name::
+    
+         +-------------+
+         |  ClassName  |
+         +-------------+
+         
+    Attributes with types corresponding to documented classes can
+    optionally be converted into edges, using `link_attributes()`.
+
+    :todo: Add more options?
+      - show/hide operation signature
+      - show/hide operation signature types
+      - show/hide operation signature return type
+      - show/hide attribute types
+      - use qualifiers
+    """
+
+    def __init__(self, class_doc, linker, context, collapsed=False,
+                 bgcolor=CLASS_BG, **options):
+        """
+        Create a new `DotGraphUmlClassNode` based on the class
+        `class_doc`.
+
+        :Parameters:
+            `linker` : `markup.DocstringLinker`
+                Used to look up URLs for classes.
+            `context` : `APIDoc`
+                The context in which this node will be drawn; dotted
+                names will be contextualized to this context.
+            `collapsed` : ``bool``
+                If true, then display this node as a simple box.
+            `bgcolor` : ```str```
+                The background color for this node.
+            `options` : ``dict``
+                A set of options used to control how the node should
+                be displayed.
+
+        :Keywords:
+          - `show_private_vars`: If false, then private variables
+            are filtered out of the attributes & operations lists.
+            (Default: *False*)
+          - `show_magic_vars`: If false, then magic variables
+            (such as ``__init__`` and ``__add__``) are filtered out of
+            the attributes & operations lists. (Default: *True*)
+          - `show_inherited_vars`: If false, then inherited variables
+            are filtered out of the attributes & operations lists.
+            (Default: *False*)
+          - `max_attributes`: The maximum number of attributes that
+            should be listed in the attribute box.  If the class has
+            more than this number of attributes, some will be
+            ellided.  Ellipsis is marked with ``'...'``.
+          - `max_operations`: The maximum number of operations that
+            should be listed in the operation box.
+          - `add_nodes_for_linked_attributes`: If true, then
+            `link_attributes()` will create new a collapsed node for
+            the types of a linked attributes if no node yet exists for
+            that type.
+        """
+        if not isinstance(class_doc, ClassDoc):
+            raise TypeError('Expected a ClassDoc as 1st argument')
+        
+        self.class_doc = class_doc
+        """The class represented by this node."""
+        
+        self.linker = linker
+        """Used to look up URLs for classes."""
+        
+        self.context = context
+        """The context in which the node will be drawn."""
+        
+        self.bgcolor = bgcolor
+        """The background color of the node."""
+        
+        self.options = options
+        """Options used to control how the node is displayed."""
+
+        self.collapsed = collapsed
+        """If true, then draw this node as a simple box."""
+        
+        self.attributes = []
+        """The list of VariableDocs for attributes"""
+        
+        self.operations = []
+        """The list of VariableDocs for operations"""
+        
+        self.qualifiers = []
+        """List of (key_label, port) tuples."""
+
+        self.edges = []
+        """List of edges used to represent this node's attributes.
+        These should not be added to the `DotGraph`; this node will
+        generate their dotfile code directly."""
+
+        # Initialize operations & attributes lists.
+        show_private = options.get('show_private_vars', False)
+        show_magic = options.get('show_magic_vars', True)
+        show_inherited = options.get('show_inherited_vars', False)
+        for var in class_doc.sorted_variables:
+            name = var.canonical_name[-1]
+            if ((not show_private and var.is_public == False) or
+                (not show_magic and re.match('__\w+__$', name)) or
+                (not show_inherited and var.container != class_doc)):
+                pass
+            elif isinstance(var.value, RoutineDoc):
+                self.operations.append(var)
+            else:
+                self.attributes.append(var)
+
+        # Initialize our dot node settings.
+        tooltip = self._summary(class_doc)
+        if tooltip:
+            # dot chokes on a \n in the attribute...
+            tooltip = " ".join(tooltip.split())
+        else:
+            tooltip = class_doc.canonical_name
+        DotGraphNode.__init__(self, tooltip=tooltip,
+                              width=0, height=0, shape='plaintext',
+                              href=linker.url_for(class_doc) or NOOP_URL)
+
+    #/////////////////////////////////////////////////////////////////
+    #{ Attribute Linking
+    #/////////////////////////////////////////////////////////////////
+    
+    SIMPLE_TYPE_RE = re.compile(
+        r'^([\w\.]+)$')
+    """A regular expression that matches descriptions of simple types."""
+    
+    COLLECTION_TYPE_RE = re.compile(
+        r'^(list|set|sequence|tuple|collection) of ([\w\.]+)$')
+    """A regular expression that matches descriptions of collection types."""
+
+    MAPPING_TYPE_RE = re.compile(
+        r'^(dict|dictionary|map|mapping) from ([\w\.]+) to ([\w\.]+)$')
+    """A regular expression that matches descriptions of mapping types."""
+
+    MAPPING_TO_COLLECTION_TYPE_RE = re.compile(
+        r'^(dict|dictionary|map|mapping) from ([\w\.]+) to '
+        r'(list|set|sequence|tuple|collection) of ([\w\.]+)$')
+    """A regular expression that matches descriptions of mapping types
+    whose value type is a collection."""
+
+    OPTIONAL_TYPE_RE = re.compile(
+        r'^(None or|optional) ([\w\.]+)$|^([\w\.]+) or None$')
+    """A regular expression that matches descriptions of optional types."""
+    
+    def link_attributes(self, nodes):
+        """
+        Convert any attributes with type descriptions corresponding to
+        documented classes to edges.  The following type descriptions
+        are currently handled:
+
+          - Dotted names: Create an attribute edge to the named type,
+            labelled with the variable name.
+          - Collections: Create an attribute edge to the named type,
+            labelled with the variable name, and marked with '*' at the
+            type end of the edge.
+          - Mappings: Create an attribute edge to the named type,
+            labelled with the variable name, connected to the class by
+            a qualifier box that contains the key type description.
+          - Optional: Create an attribute edge to the named type,
+            labelled with the variable name, and marked with '0..1' at
+            the type end of the edge.
+
+        The edges created by `link_attributes()` are handled internally
+        by `DotGraphUmlClassNode`; they should *not* be added directly
+        to the `DotGraph`.
+
+        :param nodes: A dictionary mapping from `ClassDoc`\s to
+            `DotGraphUmlClassNode`\s, used to look up the nodes for
+            attribute types.  If the ``add_nodes_for_linked_attributes``
+            option is used, then new nodes will be added to this
+            dictionary for any types that are not already listed.
+            These added nodes must be added to the `DotGraph`.
+        """
+        # Try to convert each attribute var into a graph edge.  If
+        # _link_attribute returns true, then it succeeded, so remove
+        # that var from our attribute list; otherwise, leave that var
+        # in our attribute list.
+        self.attributes = [var for var in self.attributes
+                           if not self._link_attribute(var, nodes)]
+
+    def _link_attribute(self, var, nodes):
+        """
+        Helper for `link_attributes()`: try to convert the attribute
+        variable `var` into an edge, and add that edge to
+        `self.edges`.  Return ``True`` iff the variable was
+        successfully converted to an edge (in which case, it should be
+        removed from the attributes list).
+        """
+        type_descr = self._type_descr(var) or self._type_descr(var.value)
+        
+        # Simple type.
+        m = self.SIMPLE_TYPE_RE.match(type_descr)
+        if m and self._add_attribute_edge(var, nodes, m.group(1)):
+            return True
+
+        # Collection type.
+        m = self.COLLECTION_TYPE_RE.match(type_descr)
+        if m and self._add_attribute_edge(var, nodes, m.group(2),
+                                          headlabel='*'):
+            return True
+
+        # Optional type.
+        m = self.OPTIONAL_TYPE_RE.match(type_descr)
+        if m and self._add_attribute_edge(var, nodes, m.group(2) or m.group(3),
+                                          headlabel='0..1'):
+            return True
+                
+        # Mapping type.
+        m = self.MAPPING_TYPE_RE.match(type_descr)
+        if m:
+            port = 'qualifier_%s' % var.name
+            if self._add_attribute_edge(var, nodes, m.group(3),
+                                        tailport='%s:e' % port):
+                self.qualifiers.append( (m.group(2), port) )
+                return True
+
+        # Mapping to collection type.
+        m = self.MAPPING_TO_COLLECTION_TYPE_RE.match(type_descr)
+        if m:
+            port = 'qualifier_%s' % var.name
+            if self._add_attribute_edge(var, nodes, m.group(4), headlabel='*', 
+                                        tailport='%s:e' % port):
+                self.qualifiers.append( (m.group(2), port) )
+                return True
+
+        # We were unable to link this attribute.
+        return False
+
+    def _add_attribute_edge(self, var, nodes, type_str, **attribs):
+        """
+        Helper for `link_attributes()`: try to add an edge for the
+        given attribute variable `var`.  Return ``True`` if
+        successful.
+        """
+        # Use the type string to look up a corresponding ValueDoc.
+        type_doc = self.linker.docindex.find(type_str, var)
+        if not type_doc: return False
+
+        # Make sure the type is a class.
+        if not isinstance(type_doc, ClassDoc): return False
+
+        # Get the type ValueDoc's node.  If it doesn't have one (and
+        # add_nodes_for_linked_attributes=True), then create it.
+        type_node = nodes.get(type_doc)
+        if not type_node:
+            if self.options.get('add_nodes_for_linked_attributes', True):
+                type_node = DotGraphUmlClassNode(type_doc, self.linker,
+                                                 self.context, collapsed=True)
+                nodes[type_doc] = type_node
+            else:
+                return False
+
+        # Add an edge from self to the target type node.
+        # [xx] should I set constraint=false here?
+        attribs.setdefault('headport', 'body')
+        attribs.setdefault('tailport', 'body')
+        url = self.linker.url_for(var) or NOOP_URL
+        self.edges.append(DotGraphEdge(self, type_node, label=var.name,
+                        arrowhead='open', href=url,
+                        tooltip=var.canonical_name, labeldistance=1.5,
+                        **attribs))
+        return True
+                           
+    #/////////////////////////////////////////////////////////////////
+    #{ Helper Methods
+    #/////////////////////////////////////////////////////////////////
+    def _summary(self, api_doc):
+        """Return a plaintext summary for `api_doc`"""
+        if not isinstance(api_doc, APIDoc): return ''
+        if api_doc.summary in (None, UNKNOWN): return ''
+        summary = api_doc.summary.to_plaintext(None).strip()
+        return plaintext_to_html(summary)
+
+    _summary = classmethod(_summary)
+
+    def _type_descr(self, api_doc):
+        """Return a plaintext type description for `api_doc`"""
+        if not hasattr(api_doc, 'type_descr'): return ''
+        if api_doc.type_descr in (None, UNKNOWN): return ''
+        type_descr = api_doc.type_descr.to_plaintext(self.linker).strip()
+        return plaintext_to_html(type_descr)
+
+    def _tooltip(self, var_doc):
+        """Return a tooltip for `var_doc`."""
+        return (self._summary(var_doc) or
+                self._summary(var_doc.value) or
+                var_doc.canonical_name)
+    
+    #/////////////////////////////////////////////////////////////////
+    #{ Rendering
+    #/////////////////////////////////////////////////////////////////
+    
+    def _attribute_cell(self, var_doc):
+        # Construct the label
+        label = var_doc.name
+        type_descr = (self._type_descr(var_doc) or
+                      self._type_descr(var_doc.value))
+        if type_descr: label += ': %s' % type_descr
+        # Get the URL
+        url = self.linker.url_for(var_doc) or NOOP_URL
+        # Construct & return the pseudo-html code
+        return self._ATTRIBUTE_CELL % (url, self._tooltip(var_doc), label)
+
+    def _operation_cell(self, var_doc):
+        """
+        :todo: do 'word wrapping' on the signature, by starting a new
+               row in the table, if necessary.  How to indent the new
+               line?  Maybe use align=right?  I don't think dot has a
+                .
+        :todo: Optionally add return type info?
+        """
+        # Construct the label (aka function signature)
+        func_doc = var_doc.value
+        args = [self._operation_arg(n, d, func_doc) for (n, d)
+                in zip(func_doc.posargs, func_doc.posarg_defaults)]
+        args = [plaintext_to_html(arg) for arg in args]
+        if func_doc.vararg: args.append('*'+func_doc.vararg)
+        if func_doc.kwarg: args.append('**'+func_doc.kwarg)
+        label = '%s(%s)' % (var_doc.name, ', '.join(args))
+        # Get the URL
+        url = self.linker.url_for(var_doc) or NOOP_URL
+        # Construct & return the pseudo-html code
+        return self._OPERATION_CELL % (url, self._tooltip(var_doc), label)
+
+    def _operation_arg(self, name, default, func_doc):
+        """
+        :todo: Handle tuple args better
+        :todo: Optionally add type info?
+        """
+        if default is None:
+            return '%s' % name
+        else:
+            pyval_repr = default.summary_pyval_repr().to_plaintext(None)
+            return '%s=%s' % (name, pyval_repr)
+
+    def _qualifier_cell(self, key_label, port):
+        return self._QUALIFIER_CELL  % (port, self.bgcolor, key_label)
+
+    #: args: (url, tooltip, label)
+    _ATTRIBUTE_CELL = '''
+    <TR><TD ALIGN="LEFT" HREF="%s" TOOLTIP="%s">%s</TD></TR>
+    '''
+
+    #: args: (url, tooltip, label)
+    _OPERATION_CELL = '''
+    <TR><TD ALIGN="LEFT" HREF="%s" TOOLTIP="%s">%s</TD></TR>
+    '''
+
+    #: args: (port, bgcolor, label)
+    _QUALIFIER_CELL = '''
+    <TR><TD VALIGN="BOTTOM" PORT="%s" BGCOLOR="%s" BORDER="1">%s</TD></TR>
+    '''
+
+    _QUALIFIER_DIV = '''
+    <TR><TD VALIGN="BOTTOM" HEIGHT="10" WIDTH="10" FIXEDSIZE="TRUE"></TD></TR>
+    '''
+    
+    #: Args: (rowspan, bgcolor, classname, attributes, operations, qualifiers)
+    _LABEL = '''
+    <TABLE BORDER="0" CELLBORDER="0" CELLSPACING="0" CELLPADDING="0">
+      <TR><TD ROWSPAN="%s">
+        <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0"
+               CELLPADDING="0" PORT="body" BGCOLOR="%s">
+          <TR><TD>%s</TD></TR>
+          <TR><TD><TABLE BORDER="0" CELLBORDER="0" CELLSPACING="0">
+            %s</TABLE></TD></TR>
+          <TR><TD><TABLE BORDER="0" CELLBORDER="0" CELLSPACING="0">
+            %s</TABLE></TD></TR>
+        </TABLE>
+      </TD></TR>
+      %s
+    </TABLE>'''
+
+    _COLLAPSED_LABEL = '''
+    <TABLE CELLBORDER="0" BGCOLOR="%s" PORT="body">
+      <TR><TD>%s</TD></TR>
+    </TABLE>'''
+
+    def _get_html_label(self):
+        # Get the class name & contextualize it.
+        classname = self.class_doc.canonical_name
+        classname = classname.contextualize(self.context.canonical_name)
+        
+        # If we're collapsed, display the node as a single box.
+        if self.collapsed:
+            return self._COLLAPSED_LABEL % (self.bgcolor, classname)
+        
+        # Construct the attribute list.  (If it's too long, truncate)
+        attrib_cells = [self._attribute_cell(a) for a in self.attributes]
+        max_attributes = self.options.get('max_attributes', 15)
+        if len(attrib_cells) == 0:
+            attrib_cells = ['<TR><TD></TD></TR>']
+        elif len(attrib_cells) > max_attributes:
+            attrib_cells[max_attributes-2:-1] = ['<TR><TD>...</TD></TR>']
+        attributes = ''.join(attrib_cells)
+                      
+        # Construct the operation list.  (If it's too long, truncate)
+        oper_cells = [self._operation_cell(a) for a in self.operations]
+        max_operations = self.options.get('max_operations', 15)
+        if len(oper_cells) == 0:
+            oper_cells = ['<TR><TD></TD></TR>']
+        elif len(oper_cells) > max_operations:
+            oper_cells[max_operations-2:-1] = ['<TR><TD>...</TD></TR>']
+        operations = ''.join(oper_cells)
+
+        # Construct the qualifier list & determine the rowspan.
+        if self.qualifiers:
+            rowspan = len(self.qualifiers)*2+2
+            div = self._QUALIFIER_DIV
+            qualifiers = div+div.join([self._qualifier_cell(l,p) for
+                                     (l,p) in self.qualifiers])+div
+        else:
+            rowspan = 1
+            qualifiers = ''
+
+        # Put it all together.
+        return self._LABEL % (rowspan, self.bgcolor, classname,
+                              attributes, operations, qualifiers)
+
+    def to_dotfile(self):
+        attribs = ['%s="%s"' % (k,v) for (k,v) in self._attribs.items()]
+        attribs.append('label=<%s>' % self._get_html_label())
+        s = 'node%d%s' % (self.id, ' [%s]' % (','.join(attribs)))
+        if not self.collapsed:
+            for edge in self.edges:
+                s += '\n' + edge.to_dotfile()
+        return s
+
+class DotGraphUmlModuleNode(DotGraphNode):
+    """
+    A specialized dot grah node used to display `ModuleDoc`\s using
+    UML notation.  Simple module nodes look like::
+
+        .----.
+        +------------+
+        | modulename |
+        +------------+
+
+    Packages nodes are drawn with their modules & subpackages nested
+    inside::
+        
+        .----.
+        +----------------------------------------+
+        | packagename                            |
+        |                                        |
+        |  .----.       .----.       .----.      |
+        |  +---------+  +---------+  +---------+ |
+        |  | module1 |  | module2 |  | module3 | |
+        |  +---------+  +---------+  +---------+ |
+        |                                        |
+        +----------------------------------------+
+
+    """
+    def __init__(self, module_doc, linker, context, collapsed=False,
+                 excluded_submodules=(), **options):
+        self.module_doc = module_doc
+        self.linker = linker
+        self.context = context
+        self.collapsed = collapsed
+        self.options = options
+        self.excluded_submodules = excluded_submodules
+        DotGraphNode.__init__(self, shape='plaintext',
+                              href=linker.url_for(module_doc) or NOOP_URL,
+                              tooltip=module_doc.canonical_name)
+
+    #: Expects: (color, color, url, tooltip, body)
+    _MODULE_LABEL = ''' 
+    <TABLE BORDER="0" CELLBORDER="0" CELLSPACING="0" ALIGN="LEFT">
+    <TR><TD ALIGN="LEFT" VALIGN="BOTTOM" HEIGHT="8" WIDTH="16"
+            FIXEDSIZE="true" BGCOLOR="%s" BORDER="1" PORT="tab"></TD></TR>
+    <TR><TD ALIGN="LEFT" VALIGN="TOP" BGCOLOR="%s" BORDER="1" WIDTH="20"
+            PORT="body" HREF="%s" TOOLTIP="%s">%s</TD></TR>
+    </TABLE>'''
+
+    #: Expects: (name, body_rows)
+    _NESTED_BODY = '''
+    <TABLE BORDER="0" CELLBORDER="0" CELLPADDING="0" CELLSPACING="0">
+    <TR><TD ALIGN="LEFT">%s</TD></TR>
+    %s
+    </TABLE>'''
+
+    #: Expects: (cells,)
+    _NESTED_BODY_ROW = '''
+    <TR><TD>
+      <TABLE BORDER="0" CELLBORDER="0"><TR>%s</TR></TABLE>
+    </TD></TR>'''
+    
+    def _get_html_label(self, package):
+        """
+        :Return: (label, depth, width) where:
+        
+          - ``label`` is the HTML label
+          - ``depth`` is the depth of the package tree (for coloring)
+          - ``width`` is the max width of the HTML label, roughly in
+            units of characters.
+        """
+        MAX_ROW_WIDTH = 80 # unit is roughly characters.
+        pkg_name = package.canonical_name
+        pkg_url = self.linker.url_for(package) or NOOP_URL
+        
+        if (not package.is_package or len(package.submodules) == 0 or
+            self.collapsed):
+            pkg_color = self._color(package, 1)
+            label = self._MODULE_LABEL % (pkg_color, pkg_color,
+                                          pkg_url, pkg_name, pkg_name[-1])
+            return (label, 1, len(pkg_name[-1])+3)
+                
+        # Get the label for each submodule, and divide them into rows.
+        row_list = ['']
+        row_width = 0
+        max_depth = 0
+        max_row_width = len(pkg_name[-1])+3
+        for submodule in package.submodules:
+            if submodule in self.excluded_submodules: continue
+            # Get the submodule's label.
+            label, depth, width = self._get_html_label(submodule)
+            # Check if we should start a new row.
+            if row_width > 0 and width+row_width > MAX_ROW_WIDTH:
+                row_list.append('')
+                row_width = 0
+            # Add the submodule's label to the row.
+            row_width += width
+            row_list[-1] += '<TD ALIGN="LEFT">%s</TD>' % label
+            # Update our max's.
+            max_depth = max(depth, max_depth)
+            max_row_width = max(row_width, max_row_width)
+
+        # Figure out which color to use.
+        pkg_color = self._color(package, depth+1)
+        
+        # Assemble & return the label.
+        rows = ''.join([self._NESTED_BODY_ROW % r for r in row_list])
+        body = self._NESTED_BODY % (pkg_name, rows)
+        label = self._MODULE_LABEL % (pkg_color, pkg_color,
+                                      pkg_url, pkg_name, body)
+        return label, max_depth+1, max_row_width
+
+    _COLOR_DIFF = 24
+    def _color(self, package, depth):
+        if package == self.context: return SELECTED_BG
+        else: 
+            # Parse the base color.
+            if re.match(MODULE_BG, 'r#[0-9a-fA-F]{6}$'):
+                base = int(MODULE_BG[1:], 16)
+            else:
+                base = int('d8e8ff', 16)
+            red = (base & 0xff0000) >> 16
+            green = (base & 0x00ff00) >> 8
+            blue = (base & 0x0000ff)
+            # Make it darker with each level of depth. (but not *too*
+            # dark -- package name needs to be readable)
+            red = max(64, red-(depth-1)*self._COLOR_DIFF)
+            green = max(64, green-(depth-1)*self._COLOR_DIFF)
+            blue = max(64, blue-(depth-1)*self._COLOR_DIFF)
+            # Convert it back to a color string
+            return '#%06x' % ((red<<16)+(green<<8)+blue)
+        
+    def to_dotfile(self):
+        attribs = ['%s="%s"' % (k,v) for (k,v) in self._attribs.items()]
+        label, depth, width = self._get_html_label(self.module_doc)
+        attribs.append('label=<%s>' % label)
+        return 'node%d%s' % (self.id, ' [%s]' % (','.join(attribs)))
+
+
+    
+######################################################################
+#{ Graph Generation Functions
+######################################################################
+
+def package_tree_graph(packages, linker, context=None, **options):
+    """
+    Return a `DotGraph` that graphically displays the package
+    hierarchies for the given packages.
+    """
+    if options.get('style', 'uml') == 'uml': # default to uml style?
+        if get_dot_version() >= [2]:
+            return uml_package_tree_graph(packages, linker, context,
+                                             **options)
+        elif 'style' in options:
+            log.warning('UML style package trees require dot version 2.0+')
+
+    graph = DotGraph('Package Tree for %s' % name_list(packages, context),
+                     body='ranksep=.3\n;nodesep=.1\n',
+                     edge_defaults={'dir':'none'})
+    
+    # Options
+    if options.get('dir', 'TB') != 'TB': # default: top-to-bottom
+        graph.body += 'rankdir=%s\n' % options.get('dir', 'TB')
+
+    # Get a list of all modules in the package.
+    queue = list(packages)
+    modules = set(packages)
+    for module in queue:
+        queue.extend(module.submodules)
+        modules.update(module.submodules)
+
+    # Add a node for each module.
+    nodes = add_valdoc_nodes(graph, modules, linker, context)
+
+    # Add an edge for each package/submodule relationship.
+    for module in modules:
+        for submodule in module.submodules:
+            graph.edges.append(DotGraphEdge(nodes[module], nodes[submodule],
+                                            headport='tab'))
+
+    return graph
+
+def uml_package_tree_graph(packages, linker, context=None, **options):
+    """
+    Return a `DotGraph` that graphically displays the package
+    hierarchies for the given packages as a nested set of UML
+    symbols.
+    """
+    graph = DotGraph('Package Tree for %s' % name_list(packages, context))
+    # Remove any packages whose containers are also in the list.
+    root_packages = []
+    for package1 in packages:
+        for package2 in packages:
+            if (package1 is not package2 and
+                package2.canonical_name.dominates(package1.canonical_name)):
+                break
+        else:
+            root_packages.append(package1)
+    # If the context is a variable, then get its value.
+    if isinstance(context, VariableDoc) and context.value is not UNKNOWN:
+        context = context.value
+    # Return a graph with one node for each root package.
+    for package in root_packages:
+        graph.nodes.append(DotGraphUmlModuleNode(package, linker, context))
+    return graph
+
+######################################################################
+def class_tree_graph(bases, linker, context=None, **options):
+    """
+    Return a `DotGraph` that graphically displays the class
+    hierarchy for the given classes.  Options:
+
+      - exclude
+      - dir: LR|RL|BT requests a left-to-right, right-to-left, or
+        bottom-to- top, drawing.  (corresponds to the dot option
+        'rankdir'
+    """
+    if isinstance(bases, ClassDoc): bases = [bases]
+    graph = DotGraph('Class Hierarchy for %s' % name_list(bases, context),
+                     body='ranksep=0.3\n',
+                     edge_defaults={'sametail':True, 'dir':'none'})
+
+    # Options
+    if options.get('dir', 'TB') != 'TB': # default: top-down
+        graph.body += 'rankdir=%s\n' % options.get('dir', 'TB')
+    exclude = options.get('exclude', ())
+
+    # Find all superclasses & subclasses of the given classes.
+    classes = set(bases)
+    queue = list(bases)
+    for cls in queue:
+        if isinstance(cls, ClassDoc):
+            if cls.subclasses not in (None, UNKNOWN):
+                subclasses = cls.subclasses
+                if exclude:
+                    subclasses = [d for d in subclasses if d not in exclude]
+                queue.extend(subclasses)
+                classes.update(subclasses)
+    queue = list(bases)
+    for cls in queue:
+        if isinstance(cls, ClassDoc):
+            if cls.bases not in (None, UNKNOWN):
+                bases = cls.bases
+                if exclude:
+                    bases = [d for d in bases if d not in exclude]
+                queue.extend(bases)
+                classes.update(bases)
+
+    # Add a node for each cls.
+    classes = [d for d in classes if isinstance(d, ClassDoc)
+               if d.pyval is not object]
+    nodes = add_valdoc_nodes(graph, classes, linker, context)
+
+    # Add an edge for each package/subclass relationship.
+    edges = set()
+    for cls in classes:
+        for subcls in cls.subclasses:
+            if cls in nodes and subcls in nodes:
+                edges.add((nodes[cls], nodes[subcls]))
+    graph.edges = [DotGraphEdge(src,dst) for (src,dst) in edges]
+
+    return graph
+
+######################################################################
+def uml_class_tree_graph(class_doc, linker, context=None, **options):
+    """
+    Return a `DotGraph` that graphically displays the class hierarchy
+    for the given class, using UML notation.  Options:
+
+      - max_attributes
+      - max_operations
+      - show_private_vars
+      - show_magic_vars
+      - link_attributes
+    """
+    nodes = {} # ClassDoc -> DotGraphUmlClassNode
+    exclude = options.get('exclude', ())
+        
+    # Create nodes for class_doc and all its bases.
+    for cls in class_doc.mro():
+        if cls.pyval is object: continue # don't include `object`.
+        if cls in exclude: break # stop if we get to an excluded class.
+        if cls == class_doc: color = SELECTED_BG
+        else: color = BASECLASS_BG
+        nodes[cls] = DotGraphUmlClassNode(cls, linker, context,
+                                          show_inherited_vars=False,
+                                          collapsed=False, bgcolor=color)
+
+    # Create nodes for all class_doc's subclasses.
+    queue = [class_doc]
+    for cls in queue:
+        if (isinstance(cls, ClassDoc) and
+            cls.subclasses not in (None, UNKNOWN)):
+            for subcls in cls.subclasses:
+                subcls_name = subcls.canonical_name[-1]
+                if subcls not in nodes and subcls not in exclude:
+                    queue.append(subcls)
+                    nodes[subcls] = DotGraphUmlClassNode(
+                        subcls, linker, context, collapsed=True,
+                        bgcolor=SUBCLASS_BG)
+                    
+    # Only show variables in the class where they're defined for
+    # *class_doc*.
+    mro = class_doc.mro()
+    for name, var in class_doc.variables.items():
+        i = mro.index(var.container)
+        for base in mro[i+1:]:
+            if base.pyval is object: continue # don't include `object`.
+            overridden_var = base.variables.get(name)
+            if overridden_var and overridden_var.container == base:
+                try:
+                    if isinstance(overridden_var.value, RoutineDoc):
+                        nodes[base].operations.remove(overridden_var)
+                    else:
+                        nodes[base].attributes.remove(overridden_var)
+                except ValueError:
+                    pass # var is filtered (eg private or magic)
+
+    # Keep track of which nodes are part of the inheritance graph
+    # (since link_attributes might add new nodes)
+    inheritance_nodes = set(nodes.values())
+        
+    # Turn attributes into links.
+    if options.get('link_attributes', True):
+        for node in nodes.values():
+            node.link_attributes(nodes)
+            # Make sure that none of the new attribute edges break the
+            # rank ordering assigned by inheritance.
+            for edge in node.edges:
+                if edge.end in inheritance_nodes:
+                    edge['constraint'] = 'False'
+                
+    # Construct the graph.
+    graph = DotGraph('UML class diagram for %s' % class_doc.canonical_name,
+                     body='ranksep=.2\n;nodesep=.3\n')
+    graph.nodes = nodes.values()
+    
+    # Add inheritance edges.
+    for node in inheritance_nodes:
+        for base in node.class_doc.bases:
+            if base in nodes:
+                graph.edges.append(DotGraphEdge(nodes[base], node,
+                              dir='back', arrowtail='empty',
+                              headport='body', tailport='body',
+                              color=INH_LINK_COLOR, weight=100,
+                              style='bold'))
+
+    # And we're done!
+    return graph
+
+######################################################################
+def import_graph(modules, docindex, linker, context=None, **options):
+    graph = DotGraph('Import Graph', body='ranksep=.3\n;nodesep=.3\n')
+
+    # Options
+    if options.get('dir', 'RL') != 'TB': # default: right-to-left.
+        graph.body += 'rankdir=%s\n' % options.get('dir', 'RL')
+
+    # Add a node for each module.
+    nodes = add_valdoc_nodes(graph, modules, linker, context)
+
+    # Edges.
+    edges = set()
+    for dst in modules:
+        if dst.imports in (None, UNKNOWN): continue
+        for var_name in dst.imports:
+            for i in range(len(var_name), 0, -1):
+                val_doc = docindex.find(var_name[:i], context)
+                if isinstance(val_doc, ModuleDoc):
+                    if val_doc in nodes and dst in nodes:
+                        edges.add((nodes[val_doc], nodes[dst]))
+                    break
+    graph.edges = [DotGraphEdge(src,dst) for (src,dst) in edges]
+
+    return graph
+
+######################################################################
+def call_graph(api_docs, docindex, linker, context=None, **options):
+    """
+    :param options:
+        - ``dir``: rankdir for the graph.  (default=LR)
+        - ``add_callers``: also include callers for any of the
+          routines in ``api_docs``.  (default=False)
+        - ``add_callees``: also include callees for any of the
+          routines in ``api_docs``.  (default=False)
+    :todo: Add an ``exclude`` option?
+    """
+    if docindex.callers is None:
+        log.warning("No profiling information for call graph!")
+        return DotGraph('Call Graph') # return None instead?
+
+    if isinstance(context, VariableDoc):
+        context = context.value
+
+    # Get the set of requested functions.
+    functions = []
+    for api_doc in api_docs:
+        # If it's a variable, get its value.
+        if isinstance(api_doc, VariableDoc):
+            api_doc = api_doc.value
+        # Add the value to the functions list.
+        if isinstance(api_doc, RoutineDoc):
+            functions.append(api_doc)
+        elif isinstance(api_doc, NamespaceDoc):
+            for vardoc in api_doc.variables.values():
+                if isinstance(vardoc.value, RoutineDoc):
+                    functions.append(vardoc.value)
+
+    # Filter out functions with no callers/callees?
+    # [xx] this isnt' quite right, esp if add_callers or add_callees
+    # options are fales.
+    functions = [f for f in functions if
+                 (f in docindex.callers) or (f in docindex.callees)]
+        
+    # Add any callers/callees of the selected functions
+    func_set = set(functions)
+    if options.get('add_callers', False) or options.get('add_callees', False):
+        for func_doc in functions:
+            if options.get('add_callers', False):
+                func_set.update(docindex.callers.get(func_doc, ()))
+            if options.get('add_callees', False):
+                func_set.update(docindex.callees.get(func_doc, ()))
+
+    graph = DotGraph('Call Graph for %s' % name_list(api_docs, context),
+                     node_defaults={'shape':'box', 'width': 0, 'height': 0})
+    
+    # Options
+    if options.get('dir', 'LR') != 'TB': # default: left-to-right
+        graph.body += 'rankdir=%s\n' % options.get('dir', 'LR')
+
+    nodes = add_valdoc_nodes(graph, func_set, linker, context)
+    
+    # Find the edges.
+    edges = set()
+    for func_doc in functions:
+        for caller in docindex.callers.get(func_doc, ()):
+            if caller in nodes:
+                edges.add( (nodes[caller], nodes[func_doc]) )
+        for callee in docindex.callees.get(func_doc, ()):
+            if callee in nodes:
+                edges.add( (nodes[func_doc], nodes[callee]) )
+    graph.edges = [DotGraphEdge(src,dst) for (src,dst) in edges]
+    
+    return graph
+
+######################################################################
+#{ Dot Version
+######################################################################
+
+_dot_version = None
+_DOT_VERSION_RE = re.compile(r'dot version ([\d\.]+)')
+def get_dot_version():
+    global _dot_version
+    if _dot_version is None:
+        try:
+            out, err = run_subprocess([DOT_COMMAND, '-V'])
+            version_info = err or out
+            m = _DOT_VERSION_RE.match(version_info)
+            if m:
+                _dot_version = [int(x) for x in m.group(1).split('.')]
+            else:
+                _dot_version = (0,)
+        except OSError, e:
+            _dot_version = (0,)
+        log.info('Detected dot version %s' % _dot_version)
+    return _dot_version
+
+######################################################################
+#{ Helper Functions
+######################################################################
+
+def add_valdoc_nodes(graph, val_docs, linker, context):
+    """
+    :todo: Use different node styles for different subclasses of APIDoc
+    """
+    nodes = {}
+    val_docs = sorted(val_docs, key=lambda d:d.canonical_name)
+    for i, val_doc in enumerate(val_docs):
+        label = val_doc.canonical_name.contextualize(context.canonical_name)
+        node = nodes[val_doc] = DotGraphNode(label)
+        graph.nodes.append(node)
+        specialize_valdoc_node(node, val_doc, context, linker.url_for(val_doc))
+    return nodes
+
+NOOP_URL = 'javascript:void(0);'
+MODULE_NODE_HTML = '''
+  <TABLE BORDER="0" CELLBORDER="0" CELLSPACING="0"
+         CELLPADDING="0" PORT="table" ALIGN="LEFT">
+  <TR><TD ALIGN="LEFT" VALIGN="BOTTOM" HEIGHT="8" WIDTH="16" FIXEDSIZE="true"
+          BGCOLOR="%s" BORDER="1" PORT="tab"></TD></TR>
+  <TR><TD ALIGN="LEFT" VALIGN="TOP" BGCOLOR="%s" BORDER="1"
+          PORT="body" HREF="%s" TOOLTIP="%s">%s</TD></TR>
+  </TABLE>'''.strip()
+
+def specialize_valdoc_node(node, val_doc, context, url):
+    """
+    Update the style attributes of `node` to reflext its type
+    and context.
+    """
+    # We can only use html-style nodes if dot_version>2.
+    dot_version = get_dot_version()
+    
+    # If val_doc or context is a variable, get its value.
+    if isinstance(val_doc, VariableDoc) and val_doc.value is not UNKNOWN:
+        val_doc = val_doc.value
+    if isinstance(context, VariableDoc) and context.value is not UNKNOWN:
+        context = context.value
+
+    # Set the URL.  (Do this even if it points to the page we're
+    # currently on; otherwise, the tooltip is ignored.)
+    node['href'] = url or NOOP_URL
+
+    if isinstance(val_doc, ModuleDoc) and dot_version >= [2]:
+        node['shape'] = 'plaintext'
+        if val_doc == context: color = SELECTED_BG
+        else: color = MODULE_BG
+        node['tooltip'] = node['label']
+        node['html_label'] = MODULE_NODE_HTML % (color, color, url,
+                                                 val_doc.canonical_name,
+                                                 node['label'])
+        node['width'] = node['height'] = 0
+        node.port = 'body'
+
+    elif isinstance(val_doc, RoutineDoc):
+        node['shape'] = 'box'
+        node['style'] = 'rounded'
+        node['width'] = 0
+        node['height'] = 0
+        node['label'] = '%s()' % node['label']
+        node['tooltip'] = node['label']
+        if val_doc == context:
+            node['fillcolor'] = SELECTED_BG
+            node['style'] = 'filled,rounded,bold'
+            
+    else:
+        node['shape'] = 'box' 
+        node['width'] = 0
+        node['height'] = 0
+        node['tooltip'] = node['label']
+        if val_doc == context:
+            node['fillcolor'] = SELECTED_BG
+            node['style'] = 'filled,bold'
+
+def name_list(api_docs, context=None):
+    if context is not None:
+        context = context.canonical_name
+    names = [str(d.canonical_name.contextualize(context)) for d in api_docs]
+    if len(names) == 0: return ''
+    if len(names) == 1: return '%s' % names[0]
+    elif len(names) == 2: return '%s and %s' % (names[0], names[1])
+    else:
+        return '%s, and %s' % (', '.join(names[:-1]), names[-1])
+
diff --git a/epydoc/docwriter/html.py b/epydoc/docwriter/html.py
new file mode 100644
index 0000000..e7791ef
--- /dev/null
+++ b/epydoc/docwriter/html.py
@@ -0,0 +1,3491 @@
+#
+# epydoc -- HTML output generator
+# Edward Loper
+#
+# Created [01/30/01 05:18 PM]
+# $Id: html.py 1674 2008-01-29 06:03:36Z edloper $
+#
+
+"""
+The HTML output generator for epydoc.  The main interface provided by
+this module is the L{HTMLWriter} class.
+
+ at todo: Add a cache to L{HTMLWriter.url()}?
+"""
+__docformat__ = 'epytext en'
+
+import re, os, sys, codecs, sre_constants, pprint, base64
+import urllib
+import __builtin__
+from epydoc.apidoc import *
+import epydoc.docstringparser
+import time, epydoc, epydoc.markup, epydoc.markup.epytext
+from epydoc.docwriter.html_colorize import PythonSourceColorizer
+from epydoc.docwriter import html_colorize
+from epydoc.docwriter.html_css import STYLESHEETS
+from epydoc.docwriter.html_help import HTML_HELP
+from epydoc.docwriter.dotgraph import *
+from epydoc import log
+from epydoc.util import plaintext_to_html, is_src_filename
+from epydoc.compat import * # Backwards compatibility
+
+######################################################################
+## Template Compiler
+######################################################################
+# The compile_template() method defined in this section is used to
+# define several of HTMLWriter's methods.
+
+def compile_template(docstring, template_string,
+                     output_function='out', debug=epydoc.DEBUG):
+    """
+    Given a template string containing inline python source code,
+    return a python function that will fill in the template, and
+    output the result.  The signature for this function is taken from
+    the first line of C{docstring}.  Output is generated by making
+    repeated calls to the output function with the given name (which
+    is typically one of the function's parameters).
+
+    The templating language used by this function passes through all
+    text as-is, with three exceptions:
+
+      - If every line in the template string is indented by at least
+        M{x} spaces, then the first M{x} spaces are stripped from each
+        line.
+
+      - Any line that begins with '>>>' (with no indentation)
+        should contain python code, and will be inserted as-is into
+        the template-filling function.  If the line begins a control
+        block (such as 'if' or 'for'), then the control block will
+        be closed by the first '>>>'-marked line whose indentation is
+        less than or equal to the line's own indentation (including
+        lines that only contain comments.)
+
+      - In any other line, any expression between two '$' signs will
+        be evaluated and inserted into the line (using C{str()} to
+        convert the result to a string).
+
+    Here is a simple example:
+
+        >>> TEMPLATE = '''
+        ... <book>
+        ...   <title>$book.title$</title>
+        ...   <pages>$book.count_pages()$</pages>
+        ... >>> for chapter in book.chapters:
+        ...     <chaptername>$chapter.name$</chaptername>
+        ... >>> #endfor
+        ... </book>
+        >>> write_book = compile_template('write_book(out, book)', TEMPLATE)
+
+    @newfield acknowledgements: Acknowledgements
+    @acknowledgements: The syntax used by C{compile_template} is
+    loosely based on Cheetah.
+    """
+    # Extract signature from the docstring:
+    signature = docstring.lstrip().split('\n',1)[0].strip()
+    func_name = signature.split('(',1)[0].strip()
+
+    # Regexp to search for inline substitutions:
+    INLINE = re.compile(r'\$([^\$]+)\$')
+    # Regexp to search for python statements in the template:
+    COMMAND = re.compile(r'(^>>>.*)\n?', re.MULTILINE)
+
+    # Strip indentation from the template.
+    template_string = strip_indent(template_string)
+
+    # If we're debugging, then we'll store the generated function,
+    # so we can print it along with any tracebacks that depend on it.
+    if debug:
+        signature = re.sub(r'\)\s*$', ', __debug=__debug)', signature)
+
+    # Funciton declaration line
+    pysrc_lines = ['def %s:' % signature]
+    indents = [-1]
+
+    if debug:
+        pysrc_lines.append('    try:')
+        indents.append(-1)
+
+    commands = COMMAND.split(template_string.strip()+'\n')
+    for i, command in enumerate(commands):
+        if command == '': continue
+
+        # String literal segment:
+        if i%2 == 0:
+            pieces = INLINE.split(command)
+            for j, piece in enumerate(pieces):
+                if j%2 == 0:
+                    # String piece
+                    pysrc_lines.append('    '*len(indents)+
+                                 '%s(%r)' % (output_function, piece))
+                else:
+                    # Variable piece
+                    pysrc_lines.append('    '*len(indents)+
+                                 '%s(unicode(%s))' % (output_function, piece))
+
+        # Python command:
+        else:
+            srcline = command[3:].lstrip()
+            # Update indentation
+            indent = len(command)-len(srcline)
+            while indent <= indents[-1]: indents.pop()
+            # Add on the line.
+            srcline = srcline.rstrip()
+            pysrc_lines.append('    '*len(indents)+srcline)
+            if srcline.endswith(':'):
+                indents.append(indent)
+        
+    if debug:
+        pysrc_lines.append('    except Exception,e:')
+        pysrc_lines.append('        pysrc, func_name = __debug ')
+        pysrc_lines.append('        lineno = sys.exc_info()[2].tb_lineno')
+        pysrc_lines.append('        print ("Exception in template %s() on "')
+        pysrc_lines.append('               "line %d:" % (func_name, lineno))')
+        pysrc_lines.append('        print pysrc[lineno-1]')
+        pysrc_lines.append('        raise')
+        
+    pysrc = '\n'.join(pysrc_lines)+'\n'
+    #log.debug(pysrc)
+    if debug: localdict = {'__debug': (pysrc_lines, func_name)}
+    else: localdict = {}
+    try: exec pysrc in globals(), localdict
+    except SyntaxError:
+        log.error('Error in script:\n' + pysrc + '\n')
+        raise
+    template_func = localdict[func_name]
+    template_func.__doc__ = docstring
+    return template_func
+    
+def strip_indent(s):
+    """
+    Given a multiline string C{s}, find the minimum indentation for
+    all non-blank lines, and return a new string formed by stripping
+    that amount of indentation from all lines in C{s}.
+    """
+    # Strip indentation from the template.
+    minindent = sys.maxint
+    lines = s.split('\n')
+    for line in lines:
+        stripline = line.lstrip()
+        if stripline:
+            minindent = min(minindent, len(line)-len(stripline))
+    return '\n'.join([l[minindent:] for l in lines])
+
+######################################################################
+## HTML Writer
+######################################################################
+
+class HTMLWriter:
+    #////////////////////////////////////////////////////////////
+    # Table of Contents
+    #////////////////////////////////////////////////////////////
+    #
+    # 1. Interface Methods
+    #
+    # 2. Page Generation -- write complete web page files
+    #   2.1. Module Pages
+    #   2.2. Class Pages
+    #   2.3. Trees Page
+    #   2.4. Indices Page
+    #   2.5. Help Page
+    #   2.6. Frames-based table of contents pages
+    #   2.7. Homepage (index.html)
+    #   2.8. CSS Stylesheet
+    #   2.9. Javascript file
+    #   2.10. Graphs
+    #   2.11. Images
+    #
+    # 3. Page Element Generation -- write pieces of a web page file
+    #   3.1. Page Header
+    #   3.2. Page Footer
+    #   3.3. Navigation Bar
+    #   3.4. Breadcrumbs
+    #   3.5. Summary Tables
+    #
+    # 4. Helper functions
+
+    def __init__(self, docindex, **kwargs):
+        """
+        Construct a new HTML writer, using the given documentation
+        index.
+        
+        @param docindex: The documentation index.
+        
+        @type prj_name: C{string}
+        @keyword prj_name: The name of the project.  Defaults to
+              none.
+        @type prj_url: C{string}
+        @keyword prj_url: The target for the project hopeage link on
+              the navigation bar.  If C{prj_url} is not specified,
+              then no hyperlink is created.
+        @type prj_link: C{string}
+        @keyword prj_link: The label for the project link on the
+              navigation bar.  This link can contain arbitrary HTML
+              code (e.g. images).  By default, a label is constructed
+              from C{prj_name}.
+        @type top_page: C{string}
+        @keyword top_page: The top page for the documentation.  This
+              is the default page shown main frame, when frames are
+              enabled.  C{top} can be a URL, the name of a
+              module, the name of a class, or one of the special
+              strings C{"trees.html"}, C{"indices.html"}, or
+              C{"help.html"}.  By default, the top-level package or
+              module is used, if there is one; otherwise, C{"trees"}
+              is used.
+        @type css: C{string}
+        @keyword css: The CSS stylesheet file.  If C{css} is a file
+              name, then the specified file's conents will be used.
+              Otherwise, if C{css} is the name of a CSS stylesheet in
+              L{epydoc.docwriter.html_css}, then that stylesheet will
+              be used.  Otherwise, an error is reported.  If no stylesheet 
+              is specified, then the default stylesheet is used.
+        @type help_file: C{string}
+        @keyword help_file: The name of the help file.  If no help file is
+              specified, then the default help file will be used.
+        @type show_private: C{boolean}
+        @keyword show_private: Whether to create documentation for
+            private objects.  By default, private objects are documented.
+        @type show_frames: C{boolean})
+        @keyword show_frames: Whether to create a frames-based table of
+              contents.  By default, it is produced.
+        @type show_imports: C{boolean}
+        @keyword show_imports: Whether or not to display lists of
+              imported functions and classes.  By default, they are
+              not shown.
+        @type variable_maxlines: C{int}
+        @keyword variable_maxlines: The maximum number of lines that
+              should be displayed for the value of a variable in the
+              variable details section.  By default, 8 lines are
+              displayed.
+        @type variable_linelength: C{int}
+        @keyword variable_linelength: The maximum line length used for
+              displaying the values of variables in the variable
+              details sections.  If a line is longer than this length,
+              then it will be wrapped to the next line.  The default
+              line length is 70 characters.
+        @type variable_summary_linelength: C{int}
+        @keyword variable_summary_linelength: The maximum line length
+              used for displaying the values of variables in the summary
+              section.  If a line is longer than this length, then it
+              will be truncated.  The default is 40 characters.
+        @type variable_tooltip_linelength: C{int}
+        @keyword variable_tooltip_linelength: The maximum line length
+              used for tooltips for the values of variables.  If a
+              line is longer than this length, then it will be
+              truncated.  The default is 600 characters.
+        @type property_function_linelength: C{int}
+        @keyword property_function_linelength: The maximum line length
+              used to dispaly property functions (C{fget}, C{fset}, and
+              C{fdel}) that contain something other than a function
+              object.  The default length is 40 characters.
+        @type inheritance: C{string}
+        @keyword inheritance: How inherited objects should be displayed.
+              If C{inheritance='grouped'}, then inherited objects are
+              gathered into groups; if C{inheritance='listed'}, then
+              inherited objects are listed in a short list at the
+              end of their group; if C{inheritance='included'}, then
+              inherited objects are mixed in with non-inherited
+              objects.  The default is 'grouped'.
+        @type include_source_code: C{boolean}
+        @keyword include_source_code: If true, then generate colorized
+              source code files for each python module.
+        @type include_log: C{boolean}
+        @keyword include_log: If true, the the footer will include an
+              href to the page 'epydoc-log.html'.
+        @type src_code_tab_width: C{int}
+        @keyword src_code_tab_width: Number of spaces to replace each tab
+            with in source code listings.
+        """
+        self.docindex = docindex
+
+        # Process keyword arguments.
+        self._show_private = kwargs.get('show_private', 1)
+        """Should private docs be included?"""
+        
+        self._prj_name = kwargs.get('prj_name', None)
+        """The project's name (for the project link in the navbar)"""
+        
+        self._prj_url = kwargs.get('prj_url', None)
+        """URL for the project link in the navbar"""
+        
+        self._prj_link = kwargs.get('prj_link', None)
+        """HTML code for the project link in the navbar"""
+        
+        self._top_page = kwargs.get('top_page', None)
+        """The 'main' page"""
+
+        self._css = kwargs.get('css')
+        """CSS stylesheet to use"""
+        
+        self._helpfile = kwargs.get('help_file', None)
+        """Filename of file to extract help contents from"""
+        
+        self._frames_index = kwargs.get('show_frames', 1)
+        """Should a frames index be created?"""
+        
+        self._show_imports = kwargs.get('show_imports', False)
+        """Should imports be listed?"""
+        
+        self._propfunc_linelen = kwargs.get('property_function_linelength', 40)
+        """[XXX] Not used!"""
+        
+        self._variable_maxlines = kwargs.get('variable_maxlines', 8)
+        """Max lines for variable values"""
+        
+        self._variable_linelen = kwargs.get('variable_linelength', 70)
+        """Max line length for variable values"""
+        
+        self._variable_summary_linelen = \
+                         kwargs.get('variable_summary_linelength', 65)
+        """Max length for variable value summaries"""
+        
+        self._variable_tooltip_linelen = \
+                         kwargs.get('variable_tooltip_linelength', 600)
+        """Max length for variable tooltips"""
+        
+        self._inheritance = kwargs.get('inheritance', 'listed')
+        """How should inheritance be displayed?  'listed', 'included',
+        or 'grouped'"""
+
+        self._incl_sourcecode = kwargs.get('include_source_code', True)
+        """Should pages be generated for source code of modules?"""
+
+        self._mark_docstrings = kwargs.get('mark_docstrings', False)
+        """Wrap <span class='docstring'>...</span> around docstrings?"""
+
+        self._graph_types = kwargs.get('graphs', ()) or ()
+        """Graphs that we should include in our output."""
+
+        self._include_log = kwargs.get('include_log', False)
+        """Are we generating an HTML log page?"""
+
+        self._src_code_tab_width = kwargs.get('src_code_tab_width', 8)
+        """Number of spaces to replace each tab with in source code
+        listings."""
+        
+        self._callgraph_cache = {}
+        """Map the callgraph L{uid<DotGraph.uid>} to their HTML
+        representation."""
+
+        self._redundant_details = kwargs.get('redundant_details', False)
+        """If true, then include objects in the details list even if all
+        info about them is already provided by the summary table."""
+
+        # For use with select_variables():
+        if self._show_private:
+            self._public_filter = None
+        else:
+            self._public_filter = True
+        
+        # Make sure inheritance has a sane value.
+        if self._inheritance not in ('listed', 'included', 'grouped'):
+            raise ValueError, 'Bad value for inheritance'
+
+        # Create the project homepage link, if it was not specified.
+        if (self._prj_name or self._prj_url) and not self._prj_link:
+            self._prj_link = plaintext_to_html(self._prj_name or
+                                               'Project Homepage')
+
+        # Add a hyperlink to _prj_url, if _prj_link doesn't already
+        # contain any hyperlinks.
+        if (self._prj_link and self._prj_url and
+            not re.search(r'<a[^>]*\shref', self._prj_link)):
+            self._prj_link = ('<a class="navbar" target="_top" href="'+
+                              self._prj_url+'">'+self._prj_link+'</a>')
+
+        # Precompute lists & sets of APIDoc objects that we're
+        # interested in.
+        self.valdocs = valdocs = sorted(docindex.reachable_valdocs(
+            imports=False, packages=False, bases=False, submodules=False, 
+            subclasses=False, private=self._show_private))
+        self.module_list = [d for d in valdocs if isinstance(d, ModuleDoc)]
+        """The list of L{ModuleDoc}s for the documented modules."""
+        self.module_set = set(self.module_list)
+        """The set of L{ModuleDoc}s for the documented modules."""
+        self.class_list = [d for d in valdocs if isinstance(d, ClassDoc)]
+        """The list of L{ClassDoc}s for the documented classes."""
+        self.class_set = set(self.class_list)
+        """The set of L{ClassDoc}s for the documented classes."""
+        self.routine_list = [d for d in valdocs if isinstance(d, RoutineDoc)]
+        """The list of L{RoutineDoc}s for the documented routines."""
+        self.indexed_docs = []
+        """The list of L{APIDoc}s for variables and values that should
+        be included in the index."""
+
+        # URL for 'trees' page
+        if self.module_list: self._trees_url = 'module-tree.html'
+        else: self._trees_url = 'class-tree.html'
+
+        # Construct the value for self.indexed_docs.
+        self.indexed_docs += [d for d in valdocs
+                              if not isinstance(d, GenericValueDoc)]
+        for doc in valdocs:
+            if isinstance(doc, NamespaceDoc):
+                # add any vars with generic values; but don't include
+                # inherited vars.
+                self.indexed_docs += [d for d in doc.variables.values() if
+                                      isinstance(d.value, GenericValueDoc)
+                                      and d.container == doc]
+        self.indexed_docs.sort()
+
+        # Figure out the url for the top page.
+        self._top_page_url = self._find_top_page(self._top_page)
+
+        # Decide whether or not to split the identifier index.
+        self._split_ident_index = (len(self.indexed_docs) >=
+                                   self.SPLIT_IDENT_INDEX_SIZE)
+        
+        # Figure out how many output files there will be (for progress
+        # reporting).
+        self.modules_with_sourcecode = set()
+        for doc in self.module_list:
+            if isinstance(doc, ModuleDoc) and is_src_filename(doc.filename):
+                self.modules_with_sourcecode.add(doc)
+        self._num_files = (len(self.class_list) + len(self.module_list) +
+                           10 + len(self.METADATA_INDICES))
+        if self._frames_index:
+            self._num_files += len(self.module_list) + 3
+
+        if self._incl_sourcecode:
+            self._num_files += len(self.modules_with_sourcecode)
+        if self._split_ident_index:
+            self._num_files += len(self.LETTERS)
+            
+    def _find_top_page(self, pagename):
+        """
+        Find the top page for the API documentation.  This page is
+        used as the default page shown in the main frame, when frames
+        are used.  When frames are not used, this page is copied to 
+        C{index.html}.
+
+        @param pagename: The name of the page, as specified by the
+            keyword argument C{top} to the constructor.
+        @type pagename: C{string}
+        @return: The URL of the top page.
+        @rtype: C{string}
+        """
+        # If a page name was specified, then we need to figure out
+        # what it points to.
+        if pagename:
+            # If it's a URL, then use it directly.
+            if pagename.lower().startswith('http:'):
+                return pagename
+
+            # If it's an object, then use that object's page.
+            try:
+                doc = self.docindex.get_valdoc(pagename)
+                return self.url(doc)
+            except:
+                pass
+
+            # Otherwise, give up.
+            log.warning('Could not find top page %r; using %s '
+                        'instead' % (pagename, self._trees_url))
+            return self._trees_url
+
+        # If no page name was specified, then try to choose one
+        # automatically.
+        else:
+            root = [val_doc for val_doc in self.docindex.root
+                    if isinstance(val_doc, (ClassDoc, ModuleDoc))]
+            if len(root) == 0:
+                # No docs??  Try the trees page.
+                return self._trees_url
+            elif len(root) == 1:
+                # One item in the root; use that.
+                return self.url(root[0]) 
+            else:
+                # Multiple root items; if they're all in one package,
+                # then use that.  Otherwise, use self._trees_url
+                root = sorted(root, key=lambda v:len(v.canonical_name))
+                top = root[0]
+                for doc in root[1:]:
+                    if not top.canonical_name.dominates(doc.canonical_name):
+                        return self._trees_url
+                else:
+                    return self.url(top)
+    
+    #////////////////////////////////////////////////////////////
+    #{ 1. Interface Methods
+    #////////////////////////////////////////////////////////////
+
+    def write(self, directory=None):
+        """
+        Write the documentation to the given directory.
+
+        @type directory: C{string}
+        @param directory: The directory to which output should be
+            written.  If no directory is specified, output will be
+            written to the current directory.  If the directory does
+            not exist, it will be created.
+        @rtype: C{None}
+        @raise OSError: If C{directory} cannot be created.
+        @raise OSError: If any file cannot be created or written to.
+        """
+        # For progress reporting:
+        self._files_written = 0.
+        
+        # Set the default values for ValueDoc formatted representations.
+        orig_valdoc_defaults = (ValueDoc.SUMMARY_REPR_LINELEN,
+                                ValueDoc.REPR_LINELEN,
+                                ValueDoc.REPR_MAXLINES)
+        ValueDoc.SUMMARY_REPR_LINELEN = self._variable_summary_linelen
+        ValueDoc.REPR_LINELEN = self._variable_linelen
+        ValueDoc.REPR_MAXLINES = self._variable_maxlines
+
+        # Use an image for the crarr symbol.
+        from epydoc.markup.epytext import ParsedEpytextDocstring
+        orig_crarr_html = ParsedEpytextDocstring.SYMBOL_TO_HTML['crarr']
+        ParsedEpytextDocstring.SYMBOL_TO_HTML['crarr'] = (
+            r'<span class="variable-linewrap">'
+            r'<img src="crarr.png" alt="\" /></span>')
+
+        # Keep track of failed xrefs, and report them at the end.
+        self._failed_xrefs = {}
+
+        # Create destination directories, if necessary
+        if not directory: directory = os.curdir
+        self._mkdir(directory)
+        self._directory = directory
+
+        # Write the CSS file.
+        self._files_written += 1
+        log.progress(self._files_written/self._num_files, 'epydoc.css')
+        self.write_css(directory, self._css)
+
+        # Write the Javascript file.
+        self._files_written += 1
+        log.progress(self._files_written/self._num_files, 'epydoc.js')
+        self.write_javascript(directory)
+
+        # Write images
+        self.write_images(directory)
+
+        # Build the indices.
+        indices = {'ident': self.build_identifier_index(),
+                   'term': self.build_term_index()}
+        for (name, label, label2) in self.METADATA_INDICES:
+            indices[name] = self.build_metadata_index(name)
+
+        # Write the identifier index.  If requested, split it into
+        # separate pages for each letter.
+        ident_by_letter = self._group_by_letter(indices['ident'])
+        if not self._split_ident_index:
+            self._write(self.write_link_index, directory,
+                        'identifier-index.html', indices,
+                        'Identifier Index', 'identifier-index.html',
+                        ident_by_letter)
+        else:
+            # Write a page for each section.
+            for letter in self.LETTERS:
+                filename = 'identifier-index-%s.html' % letter
+                self._write(self.write_link_index, directory, filename,
+                            indices, 'Identifier Index', filename,
+                            ident_by_letter, [letter],
+                            'identifier-index-%s.html')
+            # Use the first non-empty section as the main index page.
+            for letter in self.LETTERS:
+                if letter in ident_by_letter:
+                    filename = 'identifier-index.html'
+                    self._write(self.write_link_index, directory, filename,
+                                indices, 'Identifier Index', filename,
+                                ident_by_letter, [letter], 
+                                'identifier-index-%s.html')
+                    break
+
+        # Write the term index.
+        if indices['term']:
+            term_by_letter = self._group_by_letter(indices['term'])
+            self._write(self.write_link_index, directory, 'term-index.html',
+                        indices, 'Term Definition Index',
+                        'term-index.html', term_by_letter)
+        else:
+            self._files_written += 1 # (skipped)
+
+        # Write the metadata indices.
+        for (name, label, label2) in self.METADATA_INDICES:
+            if indices[name]:
+                self._write(self.write_metadata_index, directory,
+                            '%s-index.html' % name, indices, name,
+                            label, label2)
+            else:
+                self._files_written += 1 # (skipped)
+
+        # Write the trees file (package & class hierarchies)
+        if self.module_list:
+            self._write(self.write_module_tree, directory, 'module-tree.html')
+        else:
+            self._files_written += 1 # (skipped)
+        if self.class_list:
+            self._write(self.write_class_tree, directory, 'class-tree.html')
+        else:
+            self._files_written += 1 # (skipped)
+        
+        # Write the help file.
+        self._write(self.write_help, directory,'help.html')
+        
+        # Write the frames-based table of contents.
+        if self._frames_index:
+            self._write(self.write_frames_index, directory, 'frames.html')
+            self._write(self.write_toc, directory, 'toc.html')
+            self._write(self.write_project_toc, directory, 'toc-everything.html')
+            for doc in self.module_list:
+                filename = 'toc-%s' % urllib.unquote(self.url(doc))
+                self._write(self.write_module_toc, directory, filename, doc)
+
+        # Write the object documentation.
+        for doc in self.module_list:
+            filename = urllib.unquote(self.url(doc))
+            self._write(self.write_module, directory, filename, doc)
+        for doc in self.class_list:
+            filename = urllib.unquote(self.url(doc))
+            self._write(self.write_class, directory, filename, doc)
+
+        # Write source code files.
+        if self._incl_sourcecode:
+            # Build a map from short names to APIDocs, used when
+            # linking names in the source code.
+            name_to_docs = {}
+            for api_doc in self.indexed_docs:
+                if (api_doc.canonical_name is not None and
+                    self.url(api_doc) is not None):
+                    name = api_doc.canonical_name[-1]
+                    name_to_docs.setdefault(name, []).append(api_doc)
+            # Sort each entry of the name_to_docs list.
+            for doc_list in name_to_docs.values():
+                doc_list.sort()
+            # Write the source code for each module.
+            for doc in self.modules_with_sourcecode:
+                filename = urllib.unquote(self.pysrc_url(doc))
+                self._write(self.write_sourcecode, directory, filename, doc,
+                            name_to_docs)
+
+        # Write the auto-redirect page.
+        self._write(self.write_redirect_page, directory, 'redirect.html')
+
+        # Write the mapping object name -> URL
+        self._write(self.write_api_list, directory, 'api-objects.txt')
+        
+        # Write the index.html files.
+        # (this must be done last, since it might copy another file)
+        self._files_written += 1
+        log.progress(self._files_written/self._num_files, 'index.html')
+        self.write_homepage(directory)
+
+        # Don't report references to builtins as missing
+        for k in self._failed_xrefs.keys(): # have a copy of keys
+            if hasattr(__builtin__, k):
+                del self._failed_xrefs[k]
+
+        # Report any failed crossreferences
+        if self._failed_xrefs:
+            estr = 'Failed identifier crossreference targets:\n'
+            failed_identifiers = self._failed_xrefs.keys()
+            failed_identifiers.sort()
+            for identifier in failed_identifiers:
+                names = self._failed_xrefs[identifier].keys()
+                names.sort()
+                estr += '- %s' % identifier
+                estr += '\n'
+                for name in names:
+                    estr += '      (from %s)\n' % name
+            log.docstring_warning(estr)
+
+        # [xx] testing:
+        if self._num_files != int(self._files_written):
+            log.debug("Expected to write %d files, but actually "
+                      "wrote %d files" %
+                      (self._num_files, int(self._files_written)))
+
+        # Restore defaults that we changed.
+        (ValueDoc.SUMMARY_REPR_LINELEN, ValueDoc.REPR_LINELEN,
+         ValueDoc.REPR_MAXLINES) = orig_valdoc_defaults
+        ParsedEpytextDocstring.SYMBOL_TO_HTML['crarr'] = orig_crarr_html
+
+    def _write(self, write_func, directory, filename, *args):
+        # Display our progress.
+        self._files_written += 1
+        log.progress(self._files_written/self._num_files, filename)
+        
+        path = os.path.join(directory, filename)
+        f = codecs.open(path, 'w', 'ascii', errors='xmlcharrefreplace')
+        write_func(f.write, *args)
+        f.close()
+
+    def _mkdir(self, directory):
+        """
+        If the given directory does not exist, then attempt to create it.
+        @rtype: C{None}
+        """
+        if not os.path.isdir(directory):
+            if os.path.exists(directory):
+                raise OSError('%r is not a directory' % directory)
+            os.mkdir(directory)
+        
+    #////////////////////////////////////////////////////////////
+    #{ 2.1. Module Pages
+    #////////////////////////////////////////////////////////////
+
+    def write_module(self, out, doc):
+        """
+        Write an HTML page containing the API documentation for the
+        given module to C{out}.
+        
+        @param doc: A L{ModuleDoc} containing the API documentation
+        for the module that should be described.
+        """
+        longname = doc.canonical_name
+        shortname = doc.canonical_name[-1]
+
+        # Write the page header (incl. navigation bar & breadcrumbs)
+        self.write_header(out, str(longname))
+        self.write_navbar(out, doc)
+        self.write_breadcrumbs(out, doc, self.url(doc))
+
+        # Write the name of the module we're describing.
+        if doc.is_package is True: typ = 'Package'
+        else: typ = 'Module'
+        if longname[0].startswith('script-'):
+            shortname = str(longname)[7:]
+            typ = 'Script'
+        out('<!-- ==================== %s ' % typ.upper() +
+            'DESCRIPTION ==================== -->\n')
+        out('<h1 class="epydoc">%s %s</h1>' % (typ, shortname))
+        out('<p class="nomargin-top">%s</p>\n' % self.pysrc_link(doc))
+        
+        # If the module has a description, then list it.
+        if doc.descr not in (None, UNKNOWN):
+            out(self.descr(doc, 2)+'\n\n')
+
+        # Write any standarad metadata (todo, author, etc.)
+        if doc.metadata is not UNKNOWN and doc.metadata:
+            out('<hr />\n')
+        self.write_standard_fields(out, doc)
+
+        # If it's a package, then list the modules it contains.
+        if doc.is_package is True:
+            self.write_module_list(out, doc)
+
+        # Write summary tables describing the variables that the
+        # module defines.
+        self.write_summary_table(out, "Classes", doc, "class")
+        self.write_summary_table(out, "Functions", doc, "function")
+        self.write_summary_table(out, "Variables", doc, "other")
+
+        # Write a list of all imported objects.
+        if self._show_imports:
+            self.write_imports(out, doc)
+
+        # Write detailed descriptions of functions & variables defined
+        # in this module.
+        self.write_details_list(out, "Function Details", doc, "function")
+        self.write_details_list(out, "Variables Details", doc, "other")
+
+        # Write the page footer (including navigation bar)
+        self.write_navbar(out, doc)
+        self.write_footer(out)
+
+    #////////////////////////////////////////////////////////////
+    #{ 2.??. Source Code Pages
+    #////////////////////////////////////////////////////////////
+
+    def write_sourcecode(self, out, doc, name_to_docs):
+        #t0 = time.time()
+        
+        filename = doc.filename
+        name = str(doc.canonical_name)
+        
+        # Header
+        self.write_header(out, name)
+        self.write_navbar(out, doc)
+        self.write_breadcrumbs(out, doc, self.pysrc_url(doc))
+
+        # Source code listing
+        out('<h1 class="epydoc">Source Code for %s</h1>\n' %
+            self.href(doc, label='%s %s' % (self.doc_kind(doc), name)))
+        out('<pre class="py-src">\n')
+        out(PythonSourceColorizer(filename, name, self.docindex,
+                                  self.url, name_to_docs,
+                                  self._src_code_tab_width).colorize())
+        out('</pre>\n<br />\n')
+
+        # Footer
+        self.write_navbar(out, doc)
+        self.write_footer(out)
+        
+        #log.debug('[%6.2f sec] Wrote pysrc for %s' %
+        #          (time.time()-t0, name))
+
+    #////////////////////////////////////////////////////////////
+    #{ 2.2. Class Pages
+    #////////////////////////////////////////////////////////////
+
+    def write_class(self, out, doc):
+        """
+        Write an HTML page containing the API documentation for the
+        given class to C{out}.
+        
+        @param doc: A L{ClassDoc} containing the API documentation
+        for the class that should be described.
+        """
+        longname = doc.canonical_name
+        shortname = doc.canonical_name[-1]
+
+        # Write the page header (incl. navigation bar & breadcrumbs)
+        self.write_header(out, str(longname))
+        self.write_navbar(out, doc)
+        self.write_breadcrumbs(out, doc, self.url(doc))
+
+        # Write the name of the class we're describing.
+        if doc.is_type(): typ = 'Type'
+        elif doc.is_exception(): typ = 'Exception'
+        else: typ = 'Class'
+        out('<!-- ==================== %s ' % typ.upper() +
+            'DESCRIPTION ==================== -->\n')
+        out('<h1 class="epydoc">%s %s</h1>' % (typ, shortname))
+        out('<p class="nomargin-top">%s</p>\n' % self.pysrc_link(doc))
+
+        if ((doc.bases not in (UNKNOWN, None) and len(doc.bases) > 0) or
+            (doc.subclasses not in (UNKNOWN,None) and len(doc.subclasses)>0)):
+            # Display bases graphically, if requested.
+            if 'umlclasstree' in self._graph_types:
+                self.write_class_tree_graph(out, doc, uml_class_tree_graph)
+            elif 'classtree' in self._graph_types:
+                self.write_class_tree_graph(out, doc, class_tree_graph)
+                
+            # Otherwise, use ascii-art.
+            else:
+                # Write the base class tree.
+                if doc.bases not in (UNKNOWN, None) and len(doc.bases) > 0:
+                    out('<pre class="base-tree">\n%s</pre>\n\n' %
+                        self.base_tree(doc))
+
+                # Write the known subclasses
+                if (doc.subclasses not in (UNKNOWN, None) and
+                    len(doc.subclasses) > 0):
+                    out('<dl><dt>Known Subclasses:</dt>\n<dd>\n    ')
+                    out('  <ul class="subclass-list">\n')
+                    for i, subclass in enumerate(doc.subclasses):
+                        href = self.href(subclass, context=doc)
+                        if self._val_is_public(subclass): css = ''
+                        else: css = ' class="private"'
+                        if i > 0: href = ', '+href
+                        out('<li%s>%s</li>' % (css, href))
+                    out('  </ul>\n')
+                    out('</dd></dl>\n\n')
+
+            out('<hr />\n')
+        
+        # If the class has a description, then list it.
+        if doc.descr not in (None, UNKNOWN):
+            out(self.descr(doc, 2)+'\n\n')
+
+        # Write any standarad metadata (todo, author, etc.)
+        if doc.metadata is not UNKNOWN and doc.metadata:
+            out('<hr />\n')
+        self.write_standard_fields(out, doc)
+
+        # Write summary tables describing the variables that the
+        # class defines.
+        self.write_summary_table(out, "Nested Classes", doc, "class")
+        self.write_summary_table(out, "Instance Methods", doc,
+                                 "instancemethod")
+        self.write_summary_table(out, "Class Methods", doc, "classmethod")
+        self.write_summary_table(out, "Static Methods", doc, "staticmethod")
+        self.write_summary_table(out, "Class Variables", doc,
+                                 "classvariable")
+        self.write_summary_table(out, "Instance Variables", doc,
+                                 "instancevariable")
+        self.write_summary_table(out, "Properties", doc, "property")
+
+        # Write a list of all imported objects.
+        if self._show_imports:
+            self.write_imports(out, doc)
+
+        # Write detailed descriptions of functions & variables defined
+        # in this class.
+        # [xx] why group methods into one section but split vars into two?
+        # seems like we should either group in both cases or split in both
+        # cases.
+        self.write_details_list(out, "Method Details", doc, "method")
+        self.write_details_list(out, "Class Variable Details", doc,
+                                "classvariable")
+        self.write_details_list(out, "Instance Variable Details", doc,
+                                "instancevariable")
+        self.write_details_list(out, "Property Details", doc, "property")
+
+        # Write the page footer (including navigation bar)
+        self.write_navbar(out, doc)
+        self.write_footer(out)
+
+    def write_class_tree_graph(self, out, doc, graphmaker):
+        """
+        Write HTML code for a class tree graph of C{doc} (a classdoc),
+        using C{graphmaker} to draw the actual graph.  C{graphmaker}
+        should be L{class_tree_graph()}, or L{uml_class_tree_graph()},
+        or any other function with a compatible signature.
+
+        If the given class has any private sublcasses (including
+        recursive subclasses), then two graph images will be generated
+        -- one to display when private values are shown, and the other
+        to display when private values are hidden.
+        """
+        linker = _HTMLDocstringLinker(self, doc)
+        private_subcls = self._private_subclasses(doc)
+        if private_subcls:
+            out('<center>\n'
+                '  <div class="private">%s</div>\n'
+                '  <div class="public" style="display:none">%s</div>\n'
+                '</center>\n' %
+                (self.render_graph(graphmaker(doc, linker, doc)),
+                 self.render_graph(graphmaker(doc, linker, doc,
+                                              exclude=private_subcls))))
+        else:
+            out('<center>\n%s\n</center>\n' %
+                self.render_graph(graphmaker(doc, linker, doc)))
+
+    #////////////////////////////////////////////////////////////
+    #{ 2.3. Trees pages
+    #////////////////////////////////////////////////////////////
+
+    def write_module_tree(self, out):
+        # Header material
+        self.write_treepage_header(out, 'Module Hierarchy', 'module-tree.html')
+        out('<h1 class="epydoc">Module Hierarchy</h1>\n')
+
+        # Write entries for all top-level modules/packages.
+        out('<ul class="nomargin-top">\n')
+        for doc in self.module_list:
+            if (doc.package in (None, UNKNOWN) or
+                doc.package not in self.module_set):
+                self.write_module_tree_item(out, doc)
+        out('</ul>\n')
+
+        # Footer material
+        self.write_navbar(out, 'trees')
+        self.write_footer(out)
+
+    def write_class_tree(self, out):
+        """
+        Write HTML code for a nested list showing the base/subclass
+        relationships between all documented classes.  Each element of
+        the top-level list is a class with no (documented) bases; and
+        under each class is listed all of its subclasses.  Note that
+        in the case of multiple inheritance, a class may appear
+        multiple times.  
+        
+        @todo: For multiple inheritance, don't repeat subclasses the
+            second time a class is mentioned; instead, link to the
+            first mention.
+        """
+        # [XX] backref for multiple inheritance?
+        # Header material
+        self.write_treepage_header(out, 'Class Hierarchy', 'class-tree.html')
+        out('<h1 class="epydoc">Class Hierarchy</h1>\n')
+
+        # Build a set containing all classes that we should list.
+        # This includes everything in class_list, plus any of those
+        # class' bases, but not undocumented subclasses.
+        class_set = self.class_set.copy()
+        for doc in self.class_list:
+            if doc.bases != UNKNOWN:
+                for base in doc.bases:
+                    if base not in class_set:
+                        if isinstance(base, ClassDoc):
+                            class_set.update(base.mro())
+                        else:
+                            # [XX] need to deal with this -- how?
+                            pass
+                            #class_set.add(base)
+ 
+        out('<ul class="nomargin-top">\n')
+        for doc in sorted(class_set, key=lambda c:c.canonical_name[-1]):
+            if doc.bases != UNKNOWN and len(doc.bases)==0:
+                self.write_class_tree_item(out, doc, class_set)
+        out('</ul>\n')
+        
+        # Footer material
+        self.write_navbar(out, 'trees')
+        self.write_footer(out)
+
+    def write_treepage_header(self, out, title, url):
+        # Header material.
+        self.write_header(out, title)
+        self.write_navbar(out, 'trees')
+        self.write_breadcrumbs(out, 'trees', url)
+        if self.class_list and self.module_list:
+            out('<center><b>\n')
+            out(' [ <a href="module-tree.html">Module Hierarchy</a>\n')
+            out(' | <a href="class-tree.html">Class Hierarchy</a> ]\n')
+            out('</b></center><br />\n')
+
+
+    #////////////////////////////////////////////////////////////
+    #{ 2.4. Index pages
+    #////////////////////////////////////////////////////////////
+
+    SPLIT_IDENT_INDEX_SIZE = 3000
+    """If the identifier index has more than this number of entries,
+    then it will be split into separate pages, one for each
+    alphabetical section."""
+
+    LETTERS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'
+    """The alphabetical sections that are used for link index pages."""
+    
+    def write_link_index(self, out, indices, title, url, index_by_section,
+                         sections=LETTERS, section_url='#%s'):
+        
+        # Header
+        self.write_indexpage_header(out, indices, title, url)
+
+        # Index title & links to alphabetical sections.
+        out('<table border="0" width="100%">\n'
+            '<tr valign="bottom"><td>\n')
+        out('<h1 class="epydoc">%s</h1>\n</td><td>\n[\n' % title)
+        for sec in self.LETTERS:
+            if sec in index_by_section:
+                out(' <a href="%s">%s</a>\n' % (section_url % sec, sec))
+            else:
+                out('  %s\n' % sec)
+        out(']\n')
+        out('</td></table>\n')
+
+        # Alphabetical sections.
+        sections = [s for s in sections if s in index_by_section]
+        if sections:
+            out('<table border="0" width="100%">\n')
+            for section in sorted(sections):
+                out('<tr valign="top"><td valign="top" width="1%">')
+                out('<h2 class="epydoc"><a name="%s">%s</a></h2></td>\n' %
+                    (section, section))
+                out('<td valign="top">\n')
+                self.write_index_section(out, index_by_section[section], True)
+                out('</td></tr>\n')
+            out('</table>\n<br />')
+
+        # Footer material.
+        out('<br />')
+        self.write_navbar(out, 'indices')
+        self.write_footer(out)
+                
+        
+    def write_metadata_index(self, out, indices, field, title, typ):
+        """
+        Write an HTML page containing a metadata index.
+        """
+        index = indices[field]
+        
+        # Header material.
+        self.write_indexpage_header(out, indices, title,
+                                    '%s-index.html' % field)
+
+        # Page title.
+        out('<h1 class="epydoc"><a name="%s">%s</a></h1>\n<br />\n' %
+            (field, title))
+
+        # Index (one section per arg)
+        for arg in sorted(index):
+            # Write a section title.
+            if arg is not None:
+                if len([1 for (doc, descrs) in index[arg] if
+                        not self._doc_or_ancestor_is_private(doc)]) == 0:
+                    out('<div class="private">')
+                else:
+                    out('<div>')
+                self.write_table_header(out, 'metadata-index', arg)
+                out('</table>')
+            # List every descr for this arg.
+            for (doc, descrs) in index[arg]:
+                if self._doc_or_ancestor_is_private(doc):
+                    out('<div class="private">\n')
+                else:
+                    out('<div>\n')
+                out('<table width="100%" class="metadata-index" '
+                    'bgcolor="#e0e0e0"><tr><td class="metadata-index">')
+                out('<b>%s in %s</b>' %
+                    (typ, self.href(doc, label=doc.canonical_name)))
+                out('    <ul class="nomargin">\n')
+                for descr in descrs:
+                    out('      <li>%s</li>\n' %
+                        self.docstring_to_html(descr,doc,4))
+                out('    </ul>\n')
+                out('</table></div>\n')
+
+        # Footer material.
+        out('<br />')
+        self.write_navbar(out, 'indices')
+        self.write_footer(out)
+
+    def write_indexpage_header(self, out, indices, title, url):
+        """
+        A helper for the index page generation functions, which
+        generates a header that can be used to navigate between the
+        different indices.
+        """
+        self.write_header(out, title)
+        self.write_navbar(out, 'indices')
+        self.write_breadcrumbs(out, 'indices', url)
+
+        if (indices['term'] or
+            [1 for (name,l,l2) in self.METADATA_INDICES if indices[name]]):
+            out('<center><b>[\n')
+            out(' <a href="identifier-index.html">Identifiers</a>\n')
+            if indices['term']:
+                out('| <a href="term-index.html">Term Definitions</a>\n')
+            for (name, label, label2) in self.METADATA_INDICES:
+                if indices[name]:
+                    out('| <a href="%s-index.html">%s</a>\n' %
+                        (name, label2))
+            out(']</b></center><br />\n')
+
+    def write_index_section(self, out, items, add_blankline=False):
+        out('<table class="link-index" width="100%" border="1">\n')
+        num_rows = (len(items)+2)/3
+        for row in range(num_rows):
+            out('<tr>\n')
+            for col in range(3):
+                out('<td width="33%" class="link-index">')
+                i = col*num_rows+row
+                if i < len(items):
+                    name, url, container = items[col*num_rows+row]
+                    out('<a href="%s">%s</a>' % (url, name))
+                    if container is not None:
+                        out('<br />\n')
+                        if isinstance(container, ModuleDoc):
+                            label = container.canonical_name
+                        else:
+                            label = container.canonical_name[-1]
+                        out('<span class="index-where">(in %s)'
+                            '</span>' % self.href(container, label))
+                else:
+                    out(' ')
+                out('</td>\n')
+            out('</tr>\n')
+            if add_blankline and num_rows == 1:
+                blank_cell = '<td class="link-index"> </td>'
+                out('<tr>'+3*blank_cell+'</tr>\n')
+        out('</table>\n')
+
+    #////////////////////////////////////////////////////////////
+    #{ 2.5. Help Page
+    #////////////////////////////////////////////////////////////
+
+    def write_help(self, out):
+        """
+        Write an HTML help file to the given stream.  If
+        C{self._helpfile} contains a help file, then use it;
+        otherwise, use the default helpfile from
+        L{epydoc.docwriter.html_help}.
+        """
+        # todo: optionally parse .rst etc help files?
+        
+        # Get the contents of the help file.
+        if self._helpfile:
+            if os.path.exists(self._helpfile):
+                try: help = open(self._helpfile).read()
+                except: raise IOError("Can't open help file: %r" %
+                                      self._helpfile)
+            else:
+                raise IOError("Can't find help file: %r" % self._helpfile)
+        else:
+            if self._prj_name: thisprj = self._prj_name
+            else: thisprj = 'this project'
+            help = HTML_HELP % {'this_project':thisprj}
+
+        # Insert the help contents into a webpage.
+        self.write_header(out, 'Help')
+        self.write_navbar(out, 'help')
+        self.write_breadcrumbs(out, 'help', 'help.html')
+        out(help)
+        self.write_navbar(out, 'help')
+        self.write_footer(out)
+
+    #////////////////////////////////////////////////////////////
+    #{ 2.6. Frames-based Table of Contents
+    #////////////////////////////////////////////////////////////
+    
+    write_frames_index = compile_template(
+        """
+        write_frames_index(self, out)
+
+        Write the frames index file for the frames-based table of
+        contents to the given streams.
+        """,
+        # /------------------------- Template -------------------------\
+        '''
+        <?xml version="1.0" encoding="iso-8859-1"?>
+        <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
+                  "DTD/xhtml1-frameset.dtd">
+        <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+        <head>
+          <title> $self._prj_name or "API Documentation"$ </title>
+        </head>
+        <frameset cols="20%,80%">
+          <frameset rows="30%,70%">
+            <frame src="toc.html" name="moduleListFrame"
+                   id="moduleListFrame" />
+            <frame src="toc-everything.html" name="moduleFrame"
+                   id="moduleFrame" />
+          </frameset>
+          <frame src="$self._top_page_url$" name="mainFrame" id="mainFrame" />
+        </frameset>
+        </html>
+        ''')
+        # \------------------------------------------------------------/
+    
+    write_toc = compile_template(
+        """
+        write_toc(self, out)
+        """,
+        # /------------------------- Template -------------------------\
+        '''
+        >>> self.write_header(out, "Table of Contents")
+        <h1 class="toc">Table of Contents</h1>
+        <hr />
+          <a target="moduleFrame" href="toc-everything.html">Everything</a>
+          <br />
+        >>> self.write_toc_section(out, "Modules", self.module_list)
+        <hr />
+        >>> if self._show_private:
+          $self.PRIVATE_LINK$
+        >>> #endif
+        >>> self.write_footer(out, short=True)
+        ''')
+        # \------------------------------------------------------------/
+
+    def write_toc_section(self, out, name, docs, fullname=True):
+        if not docs: return
+
+        # Assign names to each item, and sort by name.
+        if fullname:
+            docs = [(str(d.canonical_name), d) for d in docs]
+        else:
+            docs = [(str(d.canonical_name[-1]), d) for d in docs]
+        docs.sort()
+
+        out('  <h2 class="toc">%s</h2>\n' % name)
+        for label, doc in docs:
+            doc_url = self.url(doc)
+            toc_url = 'toc-%s' % doc_url
+            is_private = self._doc_or_ancestor_is_private(doc)
+            if is_private:
+                if not self._show_private: continue
+                out('  <div class="private">\n')
+                
+            if isinstance(doc, ModuleDoc):
+                out('    <a target="moduleFrame" href="%s"\n'
+                    '     onclick="setFrame(\'%s\',\'%s\');"'
+                    '     >%s</a><br />' % (toc_url, toc_url, doc_url, label))
+            else:
+                out('    <a target="mainFrame" href="%s"\n'
+                    '     >%s</a><br />' % (doc_url, label))
+            if is_private:
+                out('  </div>\n')
+
+    def write_project_toc(self, out):
+        self.write_header(out, "Everything")
+        out('<h1 class="toc">Everything</h1>\n')
+        out('<hr />\n')
+
+        # List the classes.
+        self.write_toc_section(out, "All Classes", self.class_list)
+
+        # List the functions.
+        funcs = [d for d in self.routine_list 
+                 if not isinstance(self.docindex.container(d), 
+                                   (ClassDoc, types.NoneType))]
+        self.write_toc_section(out, "All Functions", funcs)
+
+        # List the variables.
+        vars = []
+        for doc in self.module_list:
+            vars += doc.select_variables(value_type='other',
+                                         imported=False,
+                                         public=self._public_filter)
+        self.write_toc_section(out, "All Variables", vars)
+
+        # Footer material.
+        out('<hr />\n')
+        if self._show_private:
+            out(self.PRIVATE_LINK+'\n')
+        self.write_footer(out, short=True)
+
+    def write_module_toc(self, out, doc):
+        """
+        Write an HTML page containing the table of contents page for
+        the given module to the given streams.  This page lists the
+        modules, classes, exceptions, functions, and variables defined
+        by the module.
+        """
+        name = doc.canonical_name[-1]
+        self.write_header(out, name)
+        out('<h1 class="toc">Module %s</h1>\n' % name)
+        out('<hr />\n')
+
+
+        # List the classes.
+        classes = doc.select_variables(value_type='class', imported=False,
+                                       public=self._public_filter)
+        self.write_toc_section(out, "Classes", classes, fullname=False)
+
+        # List the functions.
+        funcs = doc.select_variables(value_type='function', imported=False,
+                                     public=self._public_filter)
+        self.write_toc_section(out, "Functions", funcs, fullname=False)
+
+        # List the variables.
+        variables = doc.select_variables(value_type='other', imported=False,
+                                         public=self._public_filter)
+        self.write_toc_section(out, "Variables", variables, fullname=False)
+        
+        # Footer material.
+        out('<hr />\n')
+        if self._show_private:
+            out(self.PRIVATE_LINK+'\n')
+        self.write_footer(out, short=True)
+
+    #////////////////////////////////////////////////////////////
+    #{ 2.7. Project homepage (index.html)
+    #////////////////////////////////////////////////////////////
+
+    def write_homepage(self, directory):
+        """
+        Write an C{index.html} file in the given directory.  The
+        contents of this file are copied or linked from an existing
+        page, so this method must be called after all pages have been
+        written.  The page used is determined by L{_frames_index} and
+        L{_top_page}:
+            - If L{_frames_index} is true, then C{frames.html} is
+              copied.
+            - Otherwise, the page specified by L{_top_page} is
+              copied.
+        """
+        filename = os.path.join(directory, 'index.html')
+        if self._frames_index: top = 'frames.html'
+        else: top = self._top_page_url
+
+        # Copy the non-frames index file from top, if it's internal.
+        if top[:5] != 'http:' and '/' not in top:
+            try:
+                # Read top into `s`.
+                topfile = os.path.join(directory, top)
+                s = open(topfile, 'r').read()
+
+                # Write the output file.
+                open(filename, 'w').write(s)
+                return
+            except:
+                log.error('Warning: error copying index; '
+                          'using a redirect page')
+
+        # Use a redirect if top is external, or if we faild to copy.
+        name = self._prj_name or 'this project'
+        f = open(filename, 'w')
+        self.write_redirect_index(f.write, top, name)
+        f.close()
+
+    write_redirect_index = compile_template(
+        """
+        write_redirect_index(self, out, top, name)
+        """,
+        # /------------------------- Template -------------------------\
+        '''
+        <?xml version="1.0" encoding="iso-8859-1"?>
+        <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+                  "DTD/xhtml1-strict.dtd">
+        <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+        <head>
+          <title> Redirect </title>
+          <meta http-equiv="refresh" content="1;url=$top$" />
+          <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+        </head>
+        <body>
+          <p>Redirecting to the API documentation for
+            <a href="$top$">$self._prj_name or "this project"$</a>...</p>
+        </body>
+        </html>
+        ''')
+        # \------------------------------------------------------------/
+
+    #////////////////////////////////////////////////////////////
+    #{ 2.8. Stylesheet (epydoc.css)
+    #////////////////////////////////////////////////////////////
+
+    def write_css(self, directory, cssname):
+        """
+        Write the CSS stylesheet in the given directory.  If
+        C{cssname} contains a stylesheet file or name (from
+        L{epydoc.docwriter.html_css}), then use that stylesheet;
+        otherwise, use the default stylesheet.
+
+        @rtype: C{None}
+        """
+        filename = os.path.join(directory, 'epydoc.css')
+        
+        # Get the contents for the stylesheet file.
+        if cssname is None:
+            css = STYLESHEETS['default'][0]
+        else:
+            if os.path.exists(cssname):
+                try: css = open(cssname).read()
+                except: raise IOError("Can't open CSS file: %r" % cssname)
+            elif cssname in STYLESHEETS:
+                css = STYLESHEETS[cssname][0]
+            else:
+                raise IOError("Can't find CSS file: %r" % cssname)
+
+        # Write the stylesheet.
+        cssfile = open(filename, 'w')
+        cssfile.write(css)
+        cssfile.close()
+
+    #////////////////////////////////////////////////////////////
+    #{ 2.9. Javascript (epydoc.js)
+    #////////////////////////////////////////////////////////////
+
+    def write_javascript(self, directory):
+        jsfile = open(os.path.join(directory, 'epydoc.js'), 'w')
+        print >> jsfile, self.TOGGLE_PRIVATE_JS
+        print >> jsfile, self.SHOW_PRIVATE_JS
+        print >> jsfile, self.GET_COOKIE_JS
+        print >> jsfile, self.SET_FRAME_JS
+        print >> jsfile, self.HIDE_PRIVATE_JS
+        print >> jsfile, self.TOGGLE_CALLGRAPH_JS
+        print >> jsfile, html_colorize.PYSRC_JAVASCRIPTS
+        print >> jsfile, self.GET_ANCHOR_JS
+        print >> jsfile, self.REDIRECT_URL_JS
+        jsfile.close()
+
+    #: A javascript that is used to show or hide the API documentation
+    #: for private objects.  In order for this to work correctly, all
+    #: documentation for private objects should be enclosed in 
+    #: C{<div class="private">...</div>} elements.
+    TOGGLE_PRIVATE_JS = '''
+      function toggle_private() {
+        // Search for any private/public links on this page.  Store
+        // their old text in "cmd," so we will know what action to
+        // take; and change their text to the opposite action.
+        var cmd = "?";
+        var elts = document.getElementsByTagName("a");
+        for(var i=0; i<elts.length; i++) {
+          if (elts[i].className == "privatelink") {
+            cmd = elts[i].innerHTML;
+            elts[i].innerHTML = ((cmd && cmd.substr(0,4)=="show")?
+                                    "hide private":"show private");
+          }
+        }
+        // Update all DIVs containing private objects.
+        var elts = document.getElementsByTagName("div");
+        for(var i=0; i<elts.length; i++) {
+          if (elts[i].className == "private") {
+            elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"none":"block");
+          }
+          else if (elts[i].className == "public") {
+            elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"block":"none");
+          }
+        }
+        // Update all table rows containing private objects.  Note, we
+        // use "" instead of "block" becaue IE & firefox disagree on what
+        // this should be (block vs table-row), and "" just gives the
+        // default for both browsers.
+        var elts = document.getElementsByTagName("tr");
+        for(var i=0; i<elts.length; i++) {
+          if (elts[i].className == "private") {
+            elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"none":"");
+          }
+        }
+        // Update all list items containing private objects.
+        var elts = document.getElementsByTagName("li");
+        for(var i=0; i<elts.length; i++) {
+          if (elts[i].className == "private") {
+            elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?
+                                        "none":"");
+          }
+        }
+        // Update all list items containing private objects.
+        var elts = document.getElementsByTagName("ul");
+        for(var i=0; i<elts.length; i++) {
+          if (elts[i].className == "private") {
+            elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"none":"block");
+          }
+        }
+        // Set a cookie to remember the current option.
+        document.cookie = "EpydocPrivate="+cmd;
+      }
+      '''.strip()
+
+    #: A javascript that is used to read the value of a cookie.  This
+    #: is used to remember whether private variables should be shown or
+    #: hidden.
+    GET_COOKIE_JS = '''
+      function getCookie(name) {
+        var dc = document.cookie;
+        var prefix = name + "=";
+        var begin = dc.indexOf("; " + prefix);
+        if (begin == -1) {
+          begin = dc.indexOf(prefix);
+          if (begin != 0) return null;
+        } else
+        { begin += 2; }
+        var end = document.cookie.indexOf(";", begin);
+        if (end == -1)
+        { end = dc.length; }
+        return unescape(dc.substring(begin + prefix.length, end));
+      }
+      '''.strip()
+
+    #: A javascript that is used to set the contents of two frames at
+    #: once.  This is used by the project table-of-contents frame to
+    #: set both the module table-of-contents frame and the main frame
+    #: when the user clicks on a module.
+    SET_FRAME_JS = '''
+      function setFrame(url1, url2) {
+          parent.frames[1].location.href = url1;
+          parent.frames[2].location.href = url2;
+      }
+    '''.strip()
+
+    #: A javascript that is used to hide private variables, unless
+    #: either: (a) the cookie says not to; or (b) we appear to be
+    #: linking to a private variable.
+    HIDE_PRIVATE_JS = '''
+      function checkCookie() {
+        var cmd=getCookie("EpydocPrivate");
+        if (cmd && cmd.substr(0,4)!="show" && location.href.indexOf("#_") < 0)
+            toggle_private();
+      }
+    '''.strip()
+
+    TOGGLE_CALLGRAPH_JS = '''
+      function toggleCallGraph(id) {
+        var elt = document.getElementById(id);
+        if (elt.style.display == "none")
+            elt.style.display = "block";
+        else
+            elt.style.display = "none";
+      }
+    '''.strip()
+
+    SHOW_PRIVATE_JS = '''
+      function show_private() {
+        var elts = document.getElementsByTagName("a");
+        for(var i=0; i<elts.length; i++) {
+          if (elts[i].className == "privatelink") {
+            cmd = elts[i].innerHTML;
+            if (cmd && cmd.substr(0,4)=="show")
+                toggle_private();
+          }
+        }
+      }
+    '''.strip()
+
+    GET_ANCHOR_JS = '''
+      function get_anchor() {
+          var href = location.href;
+          var start = href.indexOf("#")+1;
+          if ((start != 0) && (start != href.length))
+              return href.substring(start, href.length);
+      }
+    '''.strip()
+
+    #: A javascript that is used to implement the auto-redirect page.
+    #: When the user visits <redirect.html#dotted.name>, they will
+    #: automatically get redirected to the page for the object with
+    #: the given fully-qualified dotted name.  E.g., for epydoc,
+    #: <redirect.html#epydoc.apidoc.UNKNOWN> redirects the user to
+    #: <epydoc.apidoc-module.html#UNKNOWN>.
+    REDIRECT_URL_JS = '''
+      function redirect_url(dottedName) {
+          // Scan through each element of the "pages" list, and check
+          // if "name" matches with any of them.
+          for (var i=0; i<pages.length; i++) {
+
+              // Each page has the form "<pagename>-m" or "<pagename>-c";
+              // extract the <pagename> portion & compare it to dottedName.
+              var pagename = pages[i].substring(0, pages[i].length-2);
+              if (pagename == dottedName.substring(0,pagename.length)) {
+
+                  // We\'ve found a page that matches `dottedName`;
+                  // construct its URL, using leftover `dottedName`
+                  // content to form an anchor.
+                  var pagetype = pages[i].charAt(pages[i].length-1);
+                  var url = pagename + ((pagetype=="m")?"-module.html":
+                                                        "-class.html");
+                  if (dottedName.length > pagename.length)
+                      url += "#" + dottedName.substring(pagename.length+1,
+                                                        dottedName.length);
+                  return url;
+              }
+          }
+      }
+    '''.strip()
+          
+
+    #////////////////////////////////////////////////////////////
+    #{ 2.10. Graphs
+    #////////////////////////////////////////////////////////////
+
+    def render_graph(self, graph):
+        if graph is None: return ''
+        graph.caption = graph.title = None
+        image_url = '%s.gif' % graph.uid
+        image_file = os.path.join(self._directory, image_url)
+        return graph.to_html(image_file, image_url)
+    
+    RE_CALLGRAPH_ID = re.compile(r"""["'](.+-div)['"]""")
+    
+    def render_callgraph(self, callgraph, token=""):
+        """Render the HTML chunk of a callgraph.
+
+        If C{callgraph} is a string, use the L{_callgraph_cache} to return
+        a pre-rendered HTML chunk. This mostly avoids to run C{dot} twice for
+        the same callgraph. Else, run the graph and store its HTML output in
+        the cache.
+
+        @param callgraph: The graph to render or its L{uid<DotGraph.uid>}.
+        @type callgraph: L{DotGraph} or C{str}
+        @param token: A string that can be used to make the C{<div>} id
+            unambiguous, if the callgraph is used more than once in a page.
+        @type token: C{str}
+        @return: The HTML representation of the graph.
+        @rtype: C{str}
+        """
+        if callgraph is None: return ""
+        
+        if isinstance(callgraph, basestring):
+            uid = callgraph
+            rv = self._callgraph_cache.get(callgraph, "")
+
+        else:
+            uid = callgraph.uid
+            graph_html = self.render_graph(callgraph)
+            if graph_html == '':
+                rv = ""
+            else:
+                rv = ('<div style="display:none" id="%%s-div"><center>\n'
+                      '<table border="0" cellpadding="0" cellspacing="0">\n'
+                      '  <tr><td>%s</td></tr>\n'
+                      '  <tr><th>Call Graph</th></tr>\n'
+                      '</table><br />\n</center></div>\n' % graph_html)
+
+            # Store in the cache the complete HTML chunk without the
+            # div id, which may be made unambiguous by the token
+            self._callgraph_cache[uid] = rv
+
+        # Mangle with the graph
+        if rv: rv = rv % (uid + token)
+        return rv
+
+    def callgraph_link(self, callgraph, token=""):
+        """Render the HTML chunk of a callgraph link.
+
+        The link can toggles the visibility of the callgraph rendered using
+        L{render_callgraph} with matching parameters.
+
+        @param callgraph: The graph to render or its L{uid<DotGraph.uid>}.
+        @type callgraph: L{DotGraph} or C{str}
+        @param token: A string that can be used to make the C{<div>} id
+            unambiguous, if the callgraph is used more than once in a page.
+        @type token: C{str}
+        @return: The HTML representation of the graph link.
+        @rtype: C{str}
+        """
+        # Use class=codelink, to match style w/ the source code link.
+        if callgraph is None: return ''
+
+        if isinstance(callgraph, basestring):
+            uid = callgraph
+        else:
+            uid = callgraph.uid
+
+        return ('<br /><span class="codelink"><a href="javascript:void(0);" '
+                'onclick="toggleCallGraph(\'%s-div\');return false;">'
+                'call graph</a></span> ' % (uid + token))
+
+    #////////////////////////////////////////////////////////////
+    #{ 2.11. Images
+    #////////////////////////////////////////////////////////////
+
+    IMAGES = {'crarr.png': # Carriage-return arrow, used for LINEWRAP.
+              'iVBORw0KGgoAAAANSUhEUgAAABEAAAAKCAMAAABlokWQAAAALHRFWHRD'
+              'cmVhdGlvbiBUaW1lAFR1\nZSAyMiBBdWcgMjAwNiAwMDo0MzoxMCAtMD'
+              'UwMGAMEFgAAAAHdElNRQfWCBYFASkQ033WAAAACXBI\nWXMAAB7CAAAe'
+              'wgFu0HU+AAAABGdBTUEAALGPC/xhBQAAAEVQTFRF////zcOw18/AgGY0'
+              'c1cg4dvQ\ninJEYEAAYkME3NXI6eTcloFYe2Asr5+AbE4Uh29A9fPwqp'
+              'l4ZEUI8O3onopk0Ma0lH5U1nfFdgAA\nAAF0Uk5TAEDm2GYAAABNSURB'
+              'VHjaY2BAAbzsvDAmK5oIlxgfioiwCAe7KJKIgKAQOzsLLwTwA0VY\n+d'
+              'iRAT8T0AxuIIMHqoaXCWIPGzsHJ6orGJiYWRjQASOcBQAocgMSPKMTIg'
+              'AAAABJRU5ErkJggg==\n',
+              }
+
+    def write_images(self, directory):
+        for (name, data) in self.IMAGES.items():
+            f = open(os.path.join(directory, name), 'wb')
+            f.write(base64.decodestring(data))
+            f.close()
+
+    #////////////////////////////////////////////////////////////
+    #{ 3.1. Page Header
+    #////////////////////////////////////////////////////////////
+
+    write_header = compile_template(
+        """
+        write_header(self, out, title)
+
+        Generate HTML code for the standard page header, and write it
+        to C{out}.  C{title} is a string containing the page title.
+        It should be appropriately escaped/encoded.
+        """,
+        # /------------------------- Template -------------------------\
+        '''
+        <?xml version="1.0" encoding="ascii"?>
+        <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+                  "DTD/xhtml1-transitional.dtd">
+        <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+        <head>
+          <title>$title$</title>
+          <link rel="stylesheet" href="epydoc.css" type="text/css" />
+          <script type="text/javascript" src="epydoc.js"></script>
+        </head>
+        
+        <body bgcolor="white" text="black" link="blue" vlink="#204080"
+              alink="#204080">
+        ''')
+        # \------------------------------------------------------------/
+
+    #////////////////////////////////////////////////////////////
+    #{ 3.2. Page Footer
+    #////////////////////////////////////////////////////////////
+
+    write_footer = compile_template(
+        """
+        write_footer(self, out, short=False)
+
+        Generate HTML code for the standard page footer, and write it
+        to C{out}.
+        """,
+        # /------------------------- Template -------------------------\
+        '''
+        >>> if not short:
+        <table border="0" cellpadding="0" cellspacing="0" width="100%%">
+          <tr>
+            <td align="left" class="footer">
+        >>>   if self._include_log:
+            <a href="epydoc-log.html">Generated by Epydoc
+            $epydoc.__version__$ on $time.asctime()$</a>
+        >>>   else:
+            Generated by Epydoc $epydoc.__version__$ on $time.asctime()$
+        >>>   #endif
+            </td>
+            <td align="right" class="footer">
+              <a target="mainFrame" href="http://epydoc.sourceforge.net"
+                >http://epydoc.sourceforge.net</a>
+            </td>
+          </tr>
+        </table>
+        >>> #endif
+
+        <script type="text/javascript">
+          <!--
+          // Private objects are initially displayed (because if
+          // javascript is turned off then we want them to be
+          // visible); but by default, we want to hide them.  So hide
+          // them unless we have a cookie that says to show them.
+          checkCookie();
+          // -->
+        </script>
+        </body>
+        </html>
+        ''')
+        # \------------------------------------------------------------/
+
+    #////////////////////////////////////////////////////////////
+    #{ 3.3. Navigation Bar
+    #////////////////////////////////////////////////////////////
+
+    write_navbar = compile_template(
+        """
+        write_navbar(self, out, context)
+
+        Generate HTML code for the navigation bar, and write it to
+        C{out}.  The navigation bar typically looks like::
+
+             [ Home Trees Index Help             Project ]
+
+        @param context: A value indicating what page we're generating
+        a navigation bar for.  If we're generating an API
+        documentation page for an object, then C{context} is a
+        L{ValueDoc} containing the documentation for that object;
+        otherwise, C{context} is a string name for the page.  The
+        following string names are recognized: C{'tree'}, C{'index'},
+        and C{'help'}.
+        """,
+        # /------------------------- Template -------------------------\
+        '''
+        <!-- ==================== NAVIGATION BAR ==================== -->
+        <table class="navbar" border="0" width="100%" cellpadding="0"
+               bgcolor="#a0c0ff" cellspacing="0">
+          <tr valign="middle">
+        >>> if self._top_page_url not in (self._trees_url, "identifier-index.html", "help.html"):
+          <!-- Home link -->
+        >>>   if (isinstance(context, ValueDoc) and
+        >>>       self._top_page_url == self.url(context.canonical_name)):
+              <th bgcolor="#70b0f0" class="navbar-select"
+                  >   Home   </th>
+        >>>   else:
+              <th>   <a
+                href="$self._top_page_url$">Home</a>   </th>
+        >>> #endif
+        
+          <!-- Tree link -->
+        >>> if context == "trees":
+              <th bgcolor="#70b0f0" class="navbar-select"
+                  >   Trees   </th>
+        >>> else:
+              <th>   <a
+                href="$self._trees_url$">Trees</a>   </th>
+        >>> #endif
+        
+          <!-- Index link -->
+        >>> if context == "indices":
+              <th bgcolor="#70b0f0" class="navbar-select"
+                  >   Indices   </th>
+        >>> else:
+              <th>   <a
+                href="identifier-index.html">Indices</a>   </th>
+        >>> #endif
+        
+          <!-- Help link -->
+        >>> if context == "help":
+              <th bgcolor="#70b0f0" class="navbar-select"
+                  >   Help   </th>
+        >>> else:
+              <th>   <a
+                href="help.html">Help</a>   </th>
+        >>> #endif
+        
+        >>> if self._prj_link:
+          <!-- Project homepage -->
+              <th class="navbar" align="right" width="100%">
+                <table border="0" cellpadding="0" cellspacing="0">
+                  <tr><th class="navbar" align="center"
+                    >$self._prj_link.strip()$</th>
+                  </tr></table></th>
+        >>> else:
+              <th class="navbar" width="100%"></th>
+        >>> #endif
+          </tr>
+        </table>
+        ''')
+        # \------------------------------------------------------------/
+
+    #////////////////////////////////////////////////////////////
+    #{ 3.4. Breadcrumbs
+    #////////////////////////////////////////////////////////////
+
+    write_breadcrumbs = compile_template(
+        """
+        write_breadcrumbs(self, out, context, context_url)
+
+        Generate HTML for the breadcrumbs line, and write it to
+        C{out}.  The breadcrumbs line is an invisible table with a
+        list of pointers to the current object's ancestors on the
+        left; and the show/hide private selector and the
+        frames/noframes selector on the right.
+
+        @param context: The API documentation for the object whose
+        breadcrumbs we should generate.
+        @type context: L{ValueDoc}
+        """,
+        # /------------------------- Template -------------------------\
+        '''
+        <table width="100%" cellpadding="0" cellspacing="0">
+          <tr valign="top">
+        >>> if isinstance(context, APIDoc):
+            <td width="100%">
+              <span class="breadcrumbs">
+        >>>   crumbs = self.breadcrumbs(context)
+        >>>   for crumb in crumbs[:-1]:
+                $crumb$ ::
+        >>>   #endfor
+                $crumbs[-1]$
+              </span>
+            </td>
+        >>> else:
+            <td width="100%"> </td>
+        >>> #endif
+            <td>
+              <table cellpadding="0" cellspacing="0">
+                <!-- hide/show private -->
+        >>> if self._show_private:
+                <tr><td align="right">$self.PRIVATE_LINK$</td></tr>
+        >>> #endif
+        >>> if self._frames_index:
+                <tr><td align="right"><span class="options"
+                    >[<a href="frames.html" target="_top">frames</a
+                    >] | <a href="$context_url$"
+                    target="_top">no frames</a>]</span></td></tr>
+        >>> #endif
+              </table>
+            </td>
+          </tr>
+        </table>
+        ''')
+        # \------------------------------------------------------------/
+
+    def breadcrumbs(self, doc):
+        crumbs = [self._crumb(doc)]
+
+        # Generate the crumbs for uid's ancestors.
+        while True:
+            container = self.docindex.container(doc)
+            assert doc != container, 'object is its own container?'
+            if container is None:
+                if doc.canonical_name is UNKNOWN:
+                    return ['??']+crumbs
+                elif isinstance(doc, ModuleDoc):
+                    return ['Package %s' % ident
+                            for ident in doc.canonical_name[:-1]]+crumbs
+                else:
+                    return list(doc.canonical_name)+crumbs
+            else:
+                label = self._crumb(container)
+                name = container.canonical_name
+                crumbs.insert(0, self.href(container, label)) # [xx] code=0??
+                doc = container
+        
+    def _crumb(self, doc):
+        if (len(doc.canonical_name)==1 and
+            doc.canonical_name[0].startswith('script-')):
+            return 'Script %s' % doc.canonical_name[0][7:]
+        return '%s %s' % (self.doc_kind(doc), doc.canonical_name[-1])
+
+    #////////////////////////////////////////////////////////////
+    #{ 3.5. Summary Tables
+    #////////////////////////////////////////////////////////////
+
+    def write_summary_table(self, out, heading, doc, value_type):
+        """
+        Generate HTML code for a summary table, and write it to
+        C{out}.  A summary table is a table that includes a one-row
+        description for each variable (of a given type) in a module
+        or class.
+
+        @param heading: The heading for the summary table; typically,
+            this indicates what kind of value the table describes
+            (e.g., functions or classes).
+        @param doc: A L{ValueDoc} object containing the API
+            documentation for the module or class whose variables
+            we should summarize.
+        @param value_type: A string indicating what type of value
+            should be listed in this summary table.  This value
+            is passed on to C{doc}'s C{select_variables()} method.
+        """
+        # inh_var_groups is a dictionary used to hold "inheritance
+        # pseudo-groups", which are created when inheritance is
+        # 'grouped'.  It maps each base to a list of vars inherited
+        # from that base.
+        grouped_inh_vars = {}
+
+        # Divide all public variables of the given type into groups.
+        groups = [(plaintext_to_html(group_name),
+                   doc.select_variables(group=group_name, imported=False,
+                                        value_type=value_type,
+                                        public=self._public_filter))
+                  for group_name in doc.group_names()]
+                
+        # Discard any empty groups; and return if they're all empty.
+        groups = [(g,vars) for (g,vars) in groups if vars]
+        if not groups: return
+
+        # Write a header
+        self.write_table_header(out, "summary", heading)
+
+        # Write a section for each group.
+        for name, var_docs in groups:
+            self.write_summary_group(out, doc, name,
+                                     var_docs, grouped_inh_vars)
+
+        # Write a section for each inheritance pseudo-group (used if
+        # inheritance=='grouped')
+        if grouped_inh_vars:
+            for base in doc.mro():
+                if base in grouped_inh_vars:
+                    hdr = 'Inherited from %s' % self.href(base, context=doc)
+                    tr_class = ''
+                    if len([v for v in grouped_inh_vars[base]
+                            if v.is_public]) == 0:
+                        tr_class = ' class="private"'
+                    self.write_group_header(out, hdr, tr_class)
+                    for var_doc in grouped_inh_vars[base]:
+                        self.write_summary_line(out, var_doc, doc)
+
+        # Write a footer for the table.
+        out(self.TABLE_FOOTER)
+
+    def write_summary_group(self, out, doc, name, var_docs, grouped_inh_vars):
+        # Split up the var_docs list, according to the way each var
+        # should be displayed:
+        #   - listed_inh_vars -- for listed inherited variables.
+        #   - grouped_inh_vars -- for grouped inherited variables.
+        #   - normal_vars -- for all other variables.
+        listed_inh_vars = {}
+        normal_vars = []
+        for var_doc in var_docs:
+            if var_doc.container != doc:
+                base = var_doc.container
+                if not isinstance(base, ClassDoc):
+                    # This *should* never happen:
+                    log.warning("%s's container is not a class!" % var_doc)
+                    normal_vars.append(var_doc)
+                elif (base not in self.class_set or
+                    self._inheritance == 'listed'):
+                    listed_inh_vars.setdefault(base,[]).append(var_doc)
+                elif self._inheritance == 'grouped':
+                    grouped_inh_vars.setdefault(base,[]).append(var_doc)
+                else:
+                    normal_vars.append(var_doc)
+            else:
+                normal_vars.append(var_doc)
+            
+        # Write a header for the group.
+        if name != '':
+            tr_class = ''
+            if len([v for v in var_docs if v.is_public]) == 0:
+                tr_class = ' class="private"'
+            self.write_group_header(out, name, tr_class)
+
+        # Write a line for each normal var:
+        for var_doc in normal_vars:
+            self.write_summary_line(out, var_doc, doc)
+        # Write a subsection for inherited vars:
+        if listed_inh_vars:
+            self.write_inheritance_list(out, doc, listed_inh_vars)
+
+    def write_inheritance_list(self, out, doc, listed_inh_vars):
+        out('  <tr>\n    <td colspan="2" class="summary">\n')
+        for base in doc.mro():
+            if base not in listed_inh_vars: continue
+            public_vars = [v for v in listed_inh_vars[base]
+                           if v.is_public]
+            private_vars = [v for v in listed_inh_vars[base]
+                            if not v.is_public]
+            if public_vars:
+                out('    <p class="indent-wrapped-lines">'
+                    '<b>Inherited from <code>%s</code></b>:\n' %
+                    self.href(base, context=doc))
+                self.write_var_list(out, public_vars)
+                out('      </p>\n')
+            if private_vars and self._show_private:
+                out('    <div class="private">')
+                out('    <p class="indent-wrapped-lines">'
+                    '<b>Inherited from <code>%s</code></b> (private):\n' %
+                    self.href(base, context=doc))
+                self.write_var_list(out, private_vars)
+                out('      </p></div>\n')
+        out('    </td>\n  </tr>\n')
+    
+    def write_var_list(self, out, vardocs):
+        out('      ')
+        out(',\n      '.join(['<code>%s</code>' % self.href(v,v.name)
+                              for v in vardocs])+'\n')
+
+    def write_summary_line(self, out, var_doc, container):
+        """
+        Generate HTML code for a single line of a summary table, and
+        write it to C{out}.  See L{write_summary_table} for more
+        information.
+        
+        @param var_doc: The API documentation for the variable that
+            should be described by this line of the summary table.
+        @param container: The API documentation for the class or
+            module whose summary table we're writing.
+        """
+        pysrc_link = None
+        callgraph = None
+
+        # If it's a private variable, then mark its <tr>.
+        if var_doc.is_public: tr_class = ''
+        else: tr_class = ' class="private"'
+
+        # Decide an anchor or a link is to be generated.
+        link_name = self._redundant_details or var_doc.is_detailed()
+        anchor = not link_name
+
+        # Construct the HTML code for the type (cell 1) & description
+        # (cell 2).
+        if isinstance(var_doc.value, RoutineDoc):
+            typ = self.return_type(var_doc, indent=6)
+            description = self.function_signature(var_doc, is_summary=True,
+                link_name=link_name, anchor=anchor)
+            pysrc_link = self.pysrc_link(var_doc.value)
+
+            # Perpare the call-graph, if requested
+            if 'callgraph' in self._graph_types:
+                linker = _HTMLDocstringLinker(self, var_doc.value)
+                callgraph = call_graph([var_doc.value], self.docindex,
+                                       linker, var_doc, add_callers=True, 
+                                       add_callees=True)
+                if callgraph and callgraph.nodes:
+                    var_doc.value.callgraph_uid = callgraph.uid
+                else:
+                    callgraph = None
+        else:
+            typ = self.type_descr(var_doc, indent=6)
+            description = self.summary_name(var_doc,
+                link_name=link_name, anchor=anchor)
+            if isinstance(var_doc.value, GenericValueDoc):
+                # The summary max length has been chosen setting
+                # L{ValueDoc.SUMMARY_REPR_LINELEN} in the constructor
+                max_len=self._variable_summary_linelen-3-len(var_doc.name)
+                val_repr = var_doc.value.summary_pyval_repr(max_len)
+                tooltip = self.variable_tooltip(var_doc)
+                description += (' = <code%s>%s</code>' %
+                                (tooltip, val_repr.to_html(None)))
+
+        # Add the summary to the description (if there is one).
+        summary = self.summary(var_doc, indent=6)
+        if summary: description += '<br />\n      %s' % summary
+        
+        # If it's inherited, then add a note to the description.
+        if var_doc.container != container and self._inheritance=="included":
+            description += ("\n      <em>(Inherited from " +
+                        self.href(var_doc.container) + ")</em>")
+
+        # Write the summary line.
+        self._write_summary_line(out, typ, description, tr_class, pysrc_link,
+                                 callgraph)
+
+    _write_summary_line = compile_template(
+        "_write_summary_line(self, out, typ, description, tr_class, "
+                            "pysrc_link, callgraph)",
+        # /------------------------- Template -------------------------\
+        '''
+          <tr$tr_class$>
+            <td width="15%" align="right" valign="top" class="summary">
+              <span class="summary-type">$typ or " "$</span>
+            </td><td class="summary">
+        >>> if pysrc_link is not None or callgraph is not None:
+              <table width="100%" cellpadding="0" cellspacing="0" border="0">
+                <tr>
+                  <td>$description$</td>
+                  <td align="right" valign="top">
+                    $pysrc_link$
+                    $self.callgraph_link(callgraph, token='-summary')$
+                  </td>
+                </tr>
+              </table>
+              $self.render_callgraph(callgraph, token='-summary')$
+        >>> #endif
+        >>> if pysrc_link is None and callgraph is None:
+                $description$
+        >>> #endif
+            </td>
+          </tr>
+        ''')
+        # \------------------------------------------------------------/
+
+    #////////////////////////////////////////////////////////////
+    #{ 3.6. Details Lists
+    #////////////////////////////////////////////////////////////
+
+    def write_details_list(self, out, heading, doc, value_type):
+        # Get a list of the VarDocs we should describe.
+        if self._redundant_details:
+            detailed = None
+        else:
+            detailed = True
+        if isinstance(doc, ClassDoc):
+            var_docs = doc.select_variables(value_type=value_type,
+                                            imported=False, inherited=False,
+                                            public=self._public_filter,
+                                            detailed=detailed)
+        else:
+            var_docs = doc.select_variables(value_type=value_type,
+                                            imported=False,
+                                            public=self._public_filter,
+                                            detailed=detailed)
+        if not var_docs: return
+
+        # Write a header
+        self.write_table_header(out, "details", heading)
+        out(self.TABLE_FOOTER)
+
+        for var_doc in var_docs:
+            self.write_details_entry(out, var_doc)
+
+        out('<br />\n')
+
+    def write_details_entry(self, out, var_doc):
+        descr = self.descr(var_doc, indent=2) or ''
+        if var_doc.is_public: div_class = ''
+        else: div_class = ' class="private"'
+
+        # Functions
+        if isinstance(var_doc.value, RoutineDoc):
+            rtype = self.return_type(var_doc, indent=10)
+            rdescr = self.return_descr(var_doc, indent=10)
+            arg_descrs = []
+            args = set()
+            # Find the description for each arg.  (Leave them in the
+            # same order that they're listed in the docstring.)
+            for (arg_names, arg_descr) in var_doc.value.arg_descrs:
+                args.update(arg_names)
+                lhs = ', '.join([self.arg_name_to_html(var_doc.value, n)
+                                 for n in arg_names])
+                rhs = self.docstring_to_html(arg_descr, var_doc.value, 10)
+                arg_descrs.append( (lhs, rhs) )
+            # Check for arguments for which we have @type but not @param;
+            # and add them to the arg_descrs list.
+            for arg in var_doc.value.arg_types:
+                if arg not in args:
+                    argname = self.arg_name_to_html(var_doc.value, arg)
+                    arg_descrs.append( (argname,'') )
+
+            self.write_function_details_entry(out, var_doc, descr,
+                                              var_doc.value.callgraph_uid,
+                                              rtype, rdescr, arg_descrs,
+                                              div_class)
+
+        # Properties
+        elif isinstance(var_doc.value, PropertyDoc):
+            prop_doc = var_doc.value
+            accessors = [ (name,
+                           self.property_accessor_to_html(val_doc, prop_doc),
+                           self.summary(val_doc))
+                         for (name, val_doc) in
+                            [('Get', prop_doc.fget), ('Set', prop_doc.fset),
+                             ('Delete', prop_doc.fdel)]
+                            if val_doc not in (None, UNKNOWN)
+                            and val_doc.pyval is not None ]
+
+            self.write_property_details_entry(out, var_doc, descr,
+                                              accessors, div_class)
+        
+        # Variables
+        else:
+            self.write_variable_details_entry(out, var_doc, descr, div_class)
+
+    def labelled_list_item(self, lhs, rhs):
+        # If the RHS starts with a paragraph, then move the
+        # paragraph-start tag to the beginning of the lhs instead (so
+        # there won't be a line break after the '-').
+        m = re.match(r'^<p( [^>]+)?>', rhs)
+        if m:
+            lhs = m.group() + lhs
+            rhs = rhs[m.end():]
+
+        if rhs:
+            return '<li>%s - %s</li>' % (lhs, rhs)
+        else:
+            return '<li>%s</li>' % (lhs,)
+
+    def property_accessor_to_html(self, val_doc, context=None):
+        if val_doc not in (None, UNKNOWN):
+            if isinstance(val_doc, RoutineDoc):
+                return self.function_signature(val_doc, is_summary=True,
+                                               link_name=True, context=context)
+            elif isinstance(val_doc, GenericValueDoc):
+                return self.pprint_value(val_doc)
+            else:
+                return self.href(val_doc, context=context)
+        else:
+            return '??'
+        
+    def arg_name_to_html(self, func_doc, arg_name):
+        """
+        A helper function used to format an argument name, for use in
+        the argument description list under a routine's details entry.
+        This just wraps strong & code tags around the arg name; and if
+        the arg name is associated with a type, then adds it
+        parenthetically after the name.
+        """
+        s = '<strong class="pname"><code>%s</code></strong>' % arg_name
+        if arg_name in func_doc.arg_types:
+            typ = func_doc.arg_types[arg_name]
+            typ_html = self.docstring_to_html(typ, func_doc, 10)
+            s += " (%s)" % typ_html
+        return s
+
+    write_function_details_entry = compile_template(
+        '''
+        write_function_details_entry(self, out, var_doc, descr, callgraph, \
+                                     rtype, rdescr, arg_descrs, div_class)
+        ''',
+        # /------------------------- Template -------------------------\
+        '''
+        >>> func_doc = var_doc.value
+        <a name="$var_doc.name$"></a>
+        <div$div_class$>
+        >>> self.write_table_header(out, "details")
+        <tr><td>
+          <table width="100%" cellpadding="0" cellspacing="0" border="0">
+          <tr valign="top"><td>
+          <h3 class="epydoc">$self.function_signature(var_doc)$
+        >>> if var_doc.name in self.SPECIAL_METHODS:
+            <br /><em class="fname">($self.SPECIAL_METHODS[var_doc.name]$)</em>
+        >>> #endif
+        >>> if isinstance(func_doc, ClassMethodDoc):
+            <br /><em class="fname">Class Method</em>
+        >>> #endif
+        >>> if isinstance(func_doc, StaticMethodDoc):
+            <br /><em class="fname">Static Method</em>
+        >>> #endif
+          </h3>
+          </td><td align="right" valign="top"
+            >$self.pysrc_link(func_doc)$ 
+            $self.callgraph_link(callgraph)$</td>
+          </tr></table>
+          $self.render_callgraph(callgraph)$
+          $descr$
+          <dl class="fields">
+        >>> # === parameters ===
+        >>> if arg_descrs:
+            <dt>Parameters:</dt>
+            <dd><ul class="nomargin-top">
+        >>>   for lhs, rhs in arg_descrs:
+                $self.labelled_list_item(lhs, rhs)$
+        >>>   #endfor
+            </ul></dd>
+        >>> #endif
+        >>> # === return type ===
+        >>> if rdescr and rtype:
+            <dt>Returns: $rtype$</dt>
+                <dd>$rdescr$</dd>
+        >>> elif rdescr:
+            <dt>Returns:</dt>
+                <dd>$rdescr$</dd>
+        >>> elif rtype:
+            <dt>Returns: $rtype$</dt>
+        >>> #endif
+        >>> # === decorators ===
+        >>> if func_doc.decorators not in (None, UNKNOWN):
+        >>>   # (staticmethod & classmethod are already shown, above)
+        >>>   decos = filter(lambda deco:
+        >>>     not ((deco=="staticmethod" and
+        >>>            isinstance(func_doc, StaticMethodDoc)) or
+        >>>          (deco=="classmethod" and
+        >>>           isinstance(func_doc, ClassMethodDoc))),
+        >>>     func_doc.decorators)
+        >>> else:
+        >>>   decos = None
+        >>> #endif
+        >>> if decos:
+            <dt>Decorators:</dt>
+            <dd><ul class="nomargin-top">
+        >>>   for deco in decos:
+                <li><code>@$deco$</code></li>
+        >>>   #endfor
+            </ul></dd>
+        >>> #endif
+        >>> # === exceptions ===
+        >>> if func_doc.exception_descrs not in (None, UNKNOWN, (), []):
+            <dt>Raises:</dt>
+            <dd><ul class="nomargin-top">
+        >>>   for name, descr in func_doc.exception_descrs:
+        >>>     exc_name = self.docindex.find(name, func_doc)
+        >>>     if exc_name is not None:
+        >>>       name = self.href(exc_name, label=str(name))
+        >>>     #endif
+                $self.labelled_list_item(
+                    "<code><strong class=\'fraise\'>" +
+                    str(name) + "</strong></code>",
+                    self.docstring_to_html(descr, func_doc, 8))$
+        >>>   #endfor
+            </ul></dd>
+        >>> #endif
+        >>> # === overrides ===
+        >>> if var_doc.overrides not in (None, UNKNOWN):
+            <dt>Overrides:
+        >>>   # Avoid passing GenericValueDoc to href()
+        >>>   if isinstance(var_doc.overrides.value, RoutineDoc):
+                $self.href(var_doc.overrides.value, context=var_doc)$
+        >>>   else:
+        >>>     # In this case, a less interesting label is generated.
+                $self.href(var_doc.overrides, context=var_doc)$
+        >>>   #endif
+        >>>   if (func_doc.docstring in (None, UNKNOWN) and
+        >>>       var_doc.overrides.value.docstring not in (None, UNKNOWN)):
+                <dd><em class="note">(inherited documentation)</em></dd>
+        >>>   #endif
+            </dt>
+        >>> #endif
+          </dl>
+        >>> # === metadata ===
+        >>> self.write_standard_fields(out, func_doc)
+        </td></tr></table>
+        </div>
+        ''')
+        # \------------------------------------------------------------/
+
+    # Names for the __special__ methods.
+    SPECIAL_METHODS ={
+    '__init__': 'Constructor',
+    '__del__': 'Destructor',
+    '__add__': 'Addition operator',
+    '__sub__': 'Subtraction operator',
+    '__and__': 'And operator',
+    '__or__': 'Or operator',
+    '__xor__': 'Exclusive-Or operator',
+    '__repr__': 'Representation operator',
+    '__call__': 'Call operator',
+    '__getattr__': 'Qualification operator',
+    '__getitem__': 'Indexing operator',
+    '__setitem__': 'Index assignment operator',
+    '__delitem__': 'Index deletion operator',
+    '__delslice__': 'Slice deletion operator',
+    '__setslice__': 'Slice assignment operator',
+    '__getslice__': 'Slicling operator',
+    '__len__': 'Length operator',
+    '__cmp__': 'Comparison operator',
+    '__eq__': 'Equality operator',
+    '__in__': 'Containership operator',
+    '__gt__': 'Greater-than operator',
+    '__lt__': 'Less-than operator',
+    '__ge__': 'Greater-than-or-equals operator',
+    '__le__': 'Less-than-or-equals operator',
+    '__radd__': 'Right-side addition operator',
+    '__hash__': 'Hashing function',
+    '__contains__': 'In operator',
+    '__nonzero__': 'Boolean test operator',
+    '__str__': 'Informal representation operator',
+    }
+
+    write_property_details_entry = compile_template(
+        '''
+        write_property_details_entry(self, out, var_doc, descr, \
+                                     accessors, div_class)
+        ''',
+        # /------------------------- Template -------------------------\
+        '''
+        >>> prop_doc = var_doc.value
+        <a name="$var_doc.name$"></a>
+        <div$div_class$>
+        >>> self.write_table_header(out, "details")
+        <tr><td>
+          <h3 class="epydoc">$var_doc.name$</h3>
+          $descr$
+          <dl class="fields">
+        >>> for (name, val, summary) in accessors:
+            <dt>$name$ Method:</dt>
+            <dd class="value">$val$
+        >>>     if summary:
+                - $summary$
+        >>>     #endif
+            </dd>
+        >>> #endfor
+        >>> if prop_doc.type_descr not in (None, UNKNOWN):
+            <dt>Type:</dt>
+              <dd>$self.type_descr(var_doc, indent=6)$</dd>
+        >>> #endif
+          </dl>
+        >>> self.write_standard_fields(out, prop_doc)
+        </td></tr></table>
+        </div>
+        ''')
+        # \------------------------------------------------------------/
+        
+    write_variable_details_entry = compile_template(
+        '''
+        write_variable_details_entry(self, out, var_doc, descr, div_class)
+        ''',
+        # /------------------------- Template -------------------------\
+        '''
+        <a name="$var_doc.name$"></a>
+        <div$div_class$>
+        >>> self.write_table_header(out, "details")
+        <tr><td>
+          <h3 class="epydoc">$var_doc.name$</h3>
+          $descr$
+          <dl class="fields">
+        >>> if var_doc.type_descr not in (None, UNKNOWN):
+            <dt>Type:</dt>
+              <dd>$self.type_descr(var_doc, indent=6)$</dd>
+        >>> #endif
+          </dl>
+        >>> self.write_standard_fields(out, var_doc)
+        >>> if var_doc.value is not UNKNOWN:
+          <dl class="fields">
+            <dt>Value:</dt>
+              <dd>$self.pprint_value(var_doc.value)$</dd>
+          </dl>
+        >>> #endif
+        </td></tr></table>
+        </div>
+        ''')
+        # \------------------------------------------------------------/
+
+    def variable_tooltip(self, var_doc):
+        if var_doc.value in (None, UNKNOWN):
+            return ''
+        s = var_doc.value.pyval_repr().to_plaintext(None)
+        if len(s) > self._variable_tooltip_linelen:
+            s = s[:self._variable_tooltip_linelen-3]+'...'
+        return ' title="%s"' % plaintext_to_html(s)
+
+    def pprint_value(self, val_doc):
+        if val_doc is UNKNOWN:
+            return '??'
+        elif isinstance(val_doc, GenericValueDoc):
+            return ('<table><tr><td><pre class="variable">\n' +
+                    val_doc.pyval_repr().to_html(None) +
+                    '\n</pre></td></tr></table>\n')
+        else:
+            return self.href(val_doc)
+
+    #////////////////////////////////////////////////////////////
+    #{ Base Tree
+    #////////////////////////////////////////////////////////////
+
+    def base_tree(self, doc, width=None, postfix='', context=None):
+        """
+        @return: The HTML code for a class's base tree.  The tree is
+            drawn 'upside-down' and right justified, to allow for
+            multiple inheritance.
+        @rtype: C{string}
+        """
+        if context is None:
+            context = doc.defining_module
+        if width == None: width = self.find_tree_width(doc, context)
+        if isinstance(doc, ClassDoc) and doc.bases != UNKNOWN:
+            bases = doc.bases
+        else:
+            bases = []
+        
+        if postfix == '':
+            # [XX] use var name instead of canonical name?
+            s = (' '*(width-2) + '<strong class="uidshort">'+
+                   self.contextual_label(doc, context)+'</strong>\n')
+        else: s = ''
+        for i in range(len(bases)-1, -1, -1):
+            base = bases[i]
+            label = self.contextual_label(base, context)
+            s = (' '*(width-4-len(label)) + self.href(base, label)
+                   +' --+'+postfix+'\n' + 
+                   ' '*(width-4) +
+                   '   |'+postfix+'\n' +
+                   s)
+            if i != 0:
+                s = (self.base_tree(base, width-4, '   |'+postfix, context)+s)
+            else:
+                s = (self.base_tree(base, width-4, '    '+postfix, context)+s)
+        return s
+
+    def find_tree_width(self, doc, context):
+        """
+        Helper function for L{base_tree}.
+        @return: The width of a base tree, when drawn
+            right-justified.  This is used by L{base_tree} to
+            determine how far to indent lines of the base tree.
+        @rtype: C{int}
+        """
+        if not isinstance(doc, ClassDoc): return 2
+        if doc.bases == UNKNOWN: return 2
+        width = 2
+        for base in doc.bases:
+            width = max(width, len(self.contextual_label(base, context))+4,
+                        self.find_tree_width(base, context)+4)
+        return width
+
+    def contextual_label(self, doc, context):
+        """
+        Return the label for C{doc} to be shown in C{context}.
+        """
+        if doc.canonical_name is None:
+            if doc.parse_repr is not None:
+                return doc.parse_repr
+            else:
+                return '??'
+        else:
+            if context is UNKNOWN:
+                return str(doc.canonical_name)
+            else:
+                context_name = context.canonical_name
+                return str(doc.canonical_name.contextualize(context_name))
+        
+    #////////////////////////////////////////////////////////////
+    #{ Function Signatures
+    #////////////////////////////////////////////////////////////
+
+    def function_signature(self, api_doc, is_summary=False, 
+                           link_name=False, anchor=False, context=None):
+        """Render a function signature in HTML.
+
+        @param api_doc: The object whose name is to be rendered. If a
+            C{VariableDoc}, its C{value} should be a C{RoutineDoc}
+        @type api_doc: L{VariableDoc} or L{RoutineDoc}
+        @param is_summary: True if the fuction is to be rendered in the summary.
+        type css_class: C{bool}
+        @param link_name: If True, the name is a link to the object anchor.
+        @type link_name: C{bool}
+        @param anchor: If True, the name is the object anchor.
+        @type anchor: C{bool}
+        @param context: If set, represent the function name from this context.
+            Only useful when C{api_doc} is a L{RoutineDoc}.
+        @type context: L{DottedName}
+
+        @return: The HTML code for the object.
+        @rtype: C{str}
+        """
+        if is_summary: css_class = 'summary-sig'
+        else: css_class = 'sig'
+        
+        # [XX] clean this up!
+        if isinstance(api_doc, VariableDoc):
+            func_doc = api_doc.value
+            # This should never happen, but just in case:
+            if api_doc.value in (None, UNKNOWN):
+                return (('<span class="%s"><span class="%s-name">%s'+
+                         '</span>(...)</span>') %
+                        (css_class, css_class, api_doc.name))
+            # Get the function's name.
+            name = self.summary_name(api_doc, css_class=css_class+'-name',
+                                     link_name=link_name, anchor=anchor)
+        else:
+            func_doc = api_doc
+            name = self.href(api_doc, css_class=css_class+'-name',
+                             context=context)
+
+        if func_doc.posargs == UNKNOWN:
+            args = ['...']
+        else:
+            args = [self.func_arg(n, d, css_class) for (n, d)
+                    in zip(func_doc.posargs, func_doc.posarg_defaults)]
+        if func_doc.vararg not in (None, UNKNOWN):
+            if func_doc.vararg == '...':
+                args.append('<span class="%s-arg">...</span>' % css_class)
+            else:
+                args.append('<span class="%s-arg">*%s</span>' %
+                            (css_class, func_doc.vararg))
+        if func_doc.kwarg not in (None, UNKNOWN):
+            args.append('<span class="%s-arg">**%s</span>' %
+                        (css_class, func_doc.kwarg))
+
+        return ('<span class="%s">%s(%s)</span>' %
+                (css_class, name, ',\n        '.join(args)))
+
+    def summary_name(self, api_doc, css_class='summary-name',
+                     link_name=False, anchor=False):
+        """Render an object name in HTML.
+
+        @param api_doc: The object whose name is to be rendered
+        @type api_doc: L{APIDoc}
+        @param css_class: The CSS class to assign to the rendered name
+        type css_class: C{str}
+        @param link_name: If True, the name is a link to the object anchor.
+        @type link_name: C{bool}
+        @param anchor: If True, the name is the object anchor.
+        @type anchor: C{bool}
+
+        @return: The HTML code for the object.
+        @rtype: C{str}
+        """
+        if anchor:
+            rv = '<a name="%s"></a>' % api_doc.name
+        else:
+            rv = ''
+
+        if link_name:
+            rv += self.href(api_doc, css_class=css_class)
+        else:
+            rv += '<span class="%s">%s</span>' % (css_class, api_doc.name)
+
+        return rv
+
+    # [xx] tuple args???
+    def func_arg(self, name, default, css_class):
+        name = self._arg_name(name)
+        s = '<span class="%s-arg">%s</span>' % (css_class, name)
+        if default is not None:
+            s += ('=<span class="%s-default">%s</span>' %
+                    (css_class, default.summary_pyval_repr().to_html(None)))
+        return s
+
+    def _arg_name(self, arg):
+        if isinstance(arg, basestring):
+            return arg
+        elif len(arg) == 1:
+            return '(%s,)' % self._arg_name(arg[0])
+        else:
+            return '(%s)' % (', '.join([self._arg_name(a) for a in arg]))
+
+
+    
+
+    #////////////////////////////////////////////////////////////
+    #{ Import Lists
+    #////////////////////////////////////////////////////////////
+        
+    def write_imports(self, out, doc):
+        assert isinstance(doc, NamespaceDoc)
+        imports = doc.select_variables(imported=True,
+                                       public=self._public_filter)
+        if not imports: return
+
+        out('<p class="indent-wrapped-lines">')
+        out('<b>Imports:</b>\n  ')
+        out(',\n  '.join([self._import(v, doc) for v in imports]))
+        out('\n</p><br />\n')
+
+    def _import(self, var_doc, context):
+        if var_doc.imported_from not in (None, UNKNOWN):
+            return self.href(var_doc.imported_from,
+                             var_doc.name, context=context,
+                             tooltip='%s' % var_doc.imported_from)
+        elif (var_doc.value not in (None, UNKNOWN) and not
+              isinstance(var_doc.value, GenericValueDoc)):
+            return self.href(var_doc.value,
+                             var_doc.name, context=context,
+                             tooltip='%s' % var_doc.value.canonical_name)
+        else:
+            return plaintext_to_html(var_doc.name)
+            
+    #////////////////////////////////////////////////////////////
+    #{ Function Attributes
+    #////////////////////////////////////////////////////////////
+        
+    #////////////////////////////////////////////////////////////
+    #{ Module Trees
+    #////////////////////////////////////////////////////////////
+
+    def write_module_list(self, out, doc):
+        if len(doc.submodules) == 0: return
+        self.write_table_header(out, "summary", "Submodules")
+
+        for group_name in doc.group_names():
+            if not doc.submodule_groups[group_name]: continue
+            if group_name:
+                self.write_group_header(out, group_name)
+            out('  <tr><td class="summary">\n'
+                '  <ul class="nomargin">\n')
+            for submodule in doc.submodule_groups[group_name]:
+                self.write_module_tree_item(out, submodule, package=doc)
+            out('  </ul></td></tr>\n')
+                
+        out(self.TABLE_FOOTER+'\n<br />\n')
+
+    def write_module_tree_item(self, out, doc, package=None):
+        # If it's a private variable, then mark its <li>.
+        var = package and package.variables.get(doc.canonical_name[-1])
+        priv = ((var is not None and var.is_public is False) or
+                (var is None and doc.canonical_name[-1].startswith('_')))
+        out('    <li%s> <strong class="uidlink">%s</strong>'
+            % (priv and ' class="private"' or '', self.href(doc)))
+        if doc.summary not in (None, UNKNOWN):
+            out(': <em class="summary">'+
+                self.description(doc.summary, doc, 8)+'</em>')
+        if doc.submodules != UNKNOWN and doc.submodules:
+            if priv: out('\n    <ul class="private">\n')
+            else: out('\n    <ul>\n')
+            for submodule in doc.submodules:
+                self.write_module_tree_item(out, submodule, package=doc)
+            out('    </ul>\n')
+        out('    </li>\n')
+
+    #////////////////////////////////////////////////////////////
+    #{ Class trees
+    #////////////////////////////////////////////////////////////
+
+    write_class_tree_item = compile_template(
+        '''
+        write_class_tree_item(self, out, doc, class_set)
+        ''',
+        # /------------------------- Template -------------------------\
+        '''
+        >>> if doc.summary in (None, UNKNOWN):
+            <li> <strong class="uidlink">$self.href(doc)$</strong>
+        >>> else:
+            <li> <strong class="uidlink">$self.href(doc)$</strong>:
+              <em class="summary">$self.description(doc.summary, doc, 8)$</em>
+        >>> # endif
+        >>> if doc.subclasses:
+            <ul>
+        >>>   for subclass in sorted(set(doc.subclasses), key=lambda c:c.canonical_name[-1]):
+        >>>     if subclass in class_set:
+        >>>       self.write_class_tree_item(out, subclass, class_set)
+        >>>     #endif
+        >>>   #endfor
+            </ul>
+        >>> #endif
+            </li>
+        ''')
+        # \------------------------------------------------------------/
+    
+    #////////////////////////////////////////////////////////////
+    #{ Standard Fields
+    #////////////////////////////////////////////////////////////
+
+    def write_standard_fields(self, out, doc):
+        """
+        Write HTML code containing descriptions of any standard markup
+        fields that are defined by the given L{APIDoc} object (such as
+        C{@author} and C{@todo} fields).
+
+        @param doc: The L{APIDoc} object containing the API documentation
+            for the object whose standard markup fields should be
+            described.
+        """
+        fields = []
+        field_values = {}
+        
+        for (field, arg, descr) in doc.metadata:
+            if field not in field_values:
+                fields.append(field)
+            if field.takes_arg:
+                subfields = field_values.setdefault(field,{})
+                subfields.setdefault(arg,[]).append(descr)
+            else:
+                field_values.setdefault(field,[]).append(descr)
+
+        if not fields: return
+
+        out('<div class="fields">')
+        for field in fields:
+            if field.takes_arg:
+                for arg, descrs in field_values[field].items():
+                    self.write_standard_field(out, doc, field, descrs, arg)
+                                              
+            else:
+                self.write_standard_field(out, doc, field, field_values[field])
+
+        out('</div>')
+
+    write_standard_field = compile_template(
+        """
+        write_standard_field(self, out, doc, field, descrs, arg='')
+        
+        """,
+        # /------------------------- Template -------------------------\
+        '''
+        >>> if arg: arglabel = " (%s)" % arg
+        >>> else: arglabel = ""
+        >>>   if len(descrs) == 1:
+              <p><strong>$field.singular+arglabel$:</strong>
+                $self.description(descrs[0], doc, 8)$
+              </p>
+        >>>   elif field.short:
+              <dl><dt>$field.plural+arglabel$:</dt>
+                <dd>
+        >>>     for descr in descrs[:-1]:
+                  $self.description(descr, doc, 10)$,
+        >>>     # end for
+                  $self.description(descrs[-1], doc, 10)$
+                </dd>
+              </dl>
+        >>>   else:
+              <strong>$field.plural+arglabel$:</strong>
+              <ul class="nomargin-top">
+        >>>     for descr in descrs:
+                <li>
+                $self.description(descr, doc, 8)$
+                </li>
+        >>>     # end for
+              </ul>
+        >>>   # end else
+        >>> # end for
+        ''')
+        # \------------------------------------------------------------/
+
+    #////////////////////////////////////////////////////////////
+    #{ Index generation
+    #////////////////////////////////////////////////////////////
+
+    #: A list of metadata indices that should be generated.  Each
+    #: entry in this list is a tuple C{(tag, label, short_label)},
+    #: where C{tag} is the cannonical tag of a metadata field;
+    #: C{label} is a label for the index page; and C{short_label}
+    #: is a shorter label, used in the index selector.
+    METADATA_INDICES = [('bug', 'Bug List', 'Bugs'),
+                        ('todo', 'To Do List', 'To Do'),
+                        ('change', 'Change Log', 'Changes'),
+                        ('deprecated', 'Deprecation List', 'Deprecations'),
+                        ('since', 'Introductions List', 'Introductions'),
+                        ]
+    
+    def build_identifier_index(self):
+        items = []
+        for doc in self.indexed_docs:
+            name = plaintext_to_html(doc.canonical_name[-1])
+            if isinstance(doc, RoutineDoc): name += '()'
+            url = self.url(doc)
+            if not url: continue
+            container = self.docindex.container(doc)
+            items.append( (name, url, container) )
+        return sorted(items, key=lambda v:v[0].lower())
+
+    def _group_by_letter(self, items):
+        """Preserves sort order of the input."""
+        index = {}
+        for item in items:
+            first_letter = item[0][0].upper()
+            if not ("A" <= first_letter <= "Z"):
+                first_letter = '_'
+            index.setdefault(first_letter, []).append(item)
+        return index
+    
+    def build_term_index(self):
+        items = []
+        for doc in self.indexed_docs:
+            url = self.url(doc)
+            items += self._terms_from_docstring(url, doc, doc.descr)
+            for (field, arg, descr) in doc.metadata:
+                items += self._terms_from_docstring(url, doc, descr)
+                if hasattr(doc, 'type_descr'):
+                    items += self._terms_from_docstring(url, doc,
+                                                        doc.type_descr)
+                if hasattr(doc, 'return_descr'):
+                    items += self._terms_from_docstring(url, doc,
+                                                        doc.return_descr)
+                if hasattr(doc, 'return_type'):
+                    items += self._terms_from_docstring(url, doc,
+                                                        doc.return_type)
+        return sorted(items, key=lambda v:v[0].lower())
+
+    def _terms_from_docstring(self, base_url, container, parsed_docstring):
+        if parsed_docstring in (None, UNKNOWN): return []
+        terms = []
+        # Strip any existing anchor off:
+        base_url = re.sub('#.*', '', '%s' % (base_url,))
+        for term in parsed_docstring.index_terms():
+            anchor = self._term_index_to_anchor(term)
+            url = '%s#%s' % (base_url, anchor)
+            terms.append( (term.to_plaintext(None), url, container) )
+        return terms
+
+    def build_metadata_index(self, field_name):
+        # Build the index.
+        index = {}
+        for doc in self.indexed_docs:
+            if (not self._show_private and
+                self._doc_or_ancestor_is_private(doc)):
+                continue
+            descrs = {}
+            if doc.metadata is not UNKNOWN:
+                for (field, arg, descr) in doc.metadata:
+                    if field.tags[0] == field_name:
+                        descrs.setdefault(arg, []).append(descr)
+            for (arg, descr_list) in descrs.iteritems():
+                index.setdefault(arg, []).append( (doc, descr_list) )
+        return index
+
+    def _term_index_to_anchor(self, term):
+        """
+        Given the name of an inline index item, construct a URI anchor.
+        These anchors are used to create links from the index page to each
+        index item.
+        """
+        # Include "-" so we don't accidentally collide with the name
+        # of a python identifier.
+        s = re.sub(r'\s\s+', '-', term.to_plaintext(None))
+        return "index-"+re.sub("[^a-zA-Z0-9]", "_", s)
+
+    #////////////////////////////////////////////////////////////
+    #{ Redirect page
+    #////////////////////////////////////////////////////////////
+
+    def write_redirect_page(self, out):
+        """
+        Build the auto-redirect page, which translates dotted names to
+        URLs using javascript.  When the user visits
+        <redirect.html#dotted.name>, they will automatically get
+        redirected to the page for the object with the given
+        fully-qualified dotted name.  E.g., for epydoc,
+        <redirect.html#epydoc.apidoc.UNKNOWN> redirects the user to
+        <epydoc.apidoc-module.html#UNKNOWN>.
+        """
+        # Construct a list of all the module & class pages that we're
+        # documenting.  The redirect_url javascript will scan through
+        # this list, looking for a page name that matches the
+        # requested dotted name.
+        pages = (['%s-m' % val_doc.canonical_name
+                  for val_doc in self.module_list] +
+                 ['%s-c' % val_doc.canonical_name
+                  for val_doc in self.class_list])
+        # Sort the pages from longest to shortest.  This ensures that
+        # we find e.g. "x.y.z" in the list before "x.y".
+        pages = sorted(pages, key=lambda p:-len(p))
+
+        # Write the redirect page.
+        self._write_redirect_page(out, pages)
+
+    _write_redirect_page = compile_template(
+        '''
+        _write_redirect_page(self, out, pages)
+        ''',
+        # /------------------------- Template -------------------------\
+        '''
+        <html><head><title>Epydoc Redirect Page</title>
+        <meta http-equiv="cache-control" content="no-cache" />
+        <meta http-equiv="expires" content="0" />
+        <meta http-equiv="pragma" content="no-cache" />
+          <script type="text/javascript" src="epydoc.js"></script>
+        </head>
+        <body>
+        <script type="text/javascript">
+        <!--
+        var pages = $"[%s]" % ", ".join(['"%s"' % v for v in pages])$;
+        var dottedName = get_anchor();
+        if (dottedName) {
+            var target = redirect_url(dottedName);
+            if (target) window.location.replace(target);
+        }
+        // -->
+        </script>
+
+        <h3>Epydoc Auto-redirect page</h3>
+        
+        <p>When javascript is enabled, this page will redirect URLs of
+        the form <tt>redirect.html#<i>dotted.name</i></tt> to the
+        documentation for the object with the given fully-qualified
+        dotted name.</p>
+        <p><a id="message">   </a></p>
+        
+        <script type="text/javascript">
+        <!--
+        if (dottedName) {
+            var msg = document.getElementById("message");
+            msg.innerHTML = "No documentation found for <tt>"+
+                            dottedName+"</tt>";
+        }
+        // -->
+        </script>
+
+        </body>
+        </html>
+        ''')
+        # \------------------------------------------------------------/
+
+    #////////////////////////////////////////////////////////////
+    #{ URLs list
+    #////////////////////////////////////////////////////////////
+
+    def write_api_list(self, out):
+        """
+        Write a list of mapping name->url for all the documented objects.
+        """
+        # Construct a list of all the module & class pages that we're
+        # documenting.  The redirect_url javascript will scan through
+        # this list, looking for a page name that matches the
+        # requested dotted name.
+        skip = (ModuleDoc, ClassDoc, type(UNKNOWN))
+        for val_doc in self.module_list:
+            self.write_url_record(out, val_doc)
+            for var in val_doc.variables.itervalues():
+                if not isinstance(var.value, skip):
+                    self.write_url_record(out, var)
+
+        for val_doc in self.class_list:
+            self.write_url_record(out, val_doc)
+            for var in val_doc.variables.itervalues():
+                self.write_url_record(out, var)
+
+    def write_url_record(self, out, obj):
+        url = self.url(obj)
+        if url is not None:
+            out("%s\t%s\n" % (obj.canonical_name, url))
+
+    #////////////////////////////////////////////////////////////
+    #{ Helper functions
+    #////////////////////////////////////////////////////////////
+
+    def _val_is_public(self, valdoc):
+        """Make a best-guess as to whether the given class is public."""
+        container = self.docindex.container(valdoc)
+        if isinstance(container, NamespaceDoc):
+            for vardoc in container.variables.values():
+                if vardoc in (UNKNOWN, None): continue
+                if vardoc.value is valdoc:
+                    return vardoc.is_public
+        return True
+
+    # [XX] Is it worth-while to pull the anchor tricks that I do here?
+    # Or should I just live with the fact that show/hide private moves
+    # stuff around?
+    write_table_header = compile_template(
+        '''
+        write_table_header(self, out, css_class, heading=None, \
+                           private_link=True, colspan=2)
+        ''',
+        # /------------------------- Template -------------------------\
+        '''
+        >>> if heading is not None:
+        >>>     anchor = "section-%s" % re.sub("\W", "", heading)
+        <!-- ==================== $heading.upper()$ ==================== -->
+        <a name="$anchor$"></a>
+        >>> #endif
+        <table class="$css_class$" border="1" cellpadding="3"
+               cellspacing="0" width="100%" bgcolor="white">
+        >>> if heading is not None:
+        <tr bgcolor="#70b0f0" class="table-header">
+        >>>     if private_link and self._show_private:
+          <td colspan="$colspan$" class="table-header">
+            <table border="0" cellpadding="0" cellspacing="0" width="100%">
+              <tr valign="top">
+                <td align="left"><span class="table-header">$heading$</span></td>
+                <td align="right" valign="top"
+                 ><span class="options">[<a href="#$anchor$"
+                 class="privatelink" onclick="toggle_private();"
+                 >hide private</a>]</span></td>
+              </tr>
+            </table>
+          </td>
+        >>>     else:
+          <td align="left" colspan="2" class="table-header">
+            <span class="table-header">$heading$</span></td>
+        >>>     #endif
+        </tr>
+        >>> #endif
+        ''')
+        # \------------------------------------------------------------/
+
+    TABLE_FOOTER = '</table>\n'
+
+    PRIVATE_LINK = '''
+    <span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide private</a>]</span>
+    '''.strip()
+
+    write_group_header = compile_template(
+        '''
+        write_group_header(self, out, group, tr_class='')
+        ''',
+        # /------------------------- Template -------------------------\
+        '''
+        <tr bgcolor="#e8f0f8" $tr_class$>
+          <th colspan="2" class="group-header"
+            >    $group$</th></tr>
+        ''')
+        # \------------------------------------------------------------/
+
+    _url_cache = {}
+    def url(self, obj):
+        """
+        Return the URL for the given object, which can be a
+        C{VariableDoc}, a C{ValueDoc}, or a C{DottedName}.
+        """
+        cached_url = self._url_cache.get(id(obj))
+        if cached_url is not None:
+            return cached_url
+        else:
+            url = self._url_cache[id(obj)] = self._url(obj)
+            return url
+
+    def _url(self, obj):
+        """
+        Internal helper for L{url}.
+        """
+        # Module: <canonical_name>-module.html
+        if isinstance(obj, ModuleDoc):
+            if obj not in self.module_set: return None
+            return urllib.quote('%s'%obj.canonical_name) + '-module.html'
+        # Class: <canonical_name>-class.html
+        elif isinstance(obj, ClassDoc):
+            if obj not in self.class_set: return None
+            return urllib.quote('%s'%obj.canonical_name) + '-class.html'
+        # Variable
+        elif isinstance(obj, VariableDoc):
+            val_doc = obj.value
+            if isinstance(val_doc, (ModuleDoc, ClassDoc)):
+                return self.url(val_doc)
+            elif obj.container in (None, UNKNOWN):
+                if val_doc in (None, UNKNOWN): return None
+                return self.url(val_doc)
+            elif obj.is_imported == True:
+                if obj.imported_from is not UNKNOWN:
+                    return self.url(obj.imported_from)
+                else:
+                    return None
+            else:
+                container_url = self.url(obj.container)
+                if container_url is None: return None
+                return '%s#%s' % (container_url, urllib.quote('%s'%obj.name))
+        # Value (other than module or class)
+        elif isinstance(obj, ValueDoc):
+            container = self.docindex.container(obj)
+            if container is None:
+                return None # We couldn't find it!
+            else:
+                container_url = self.url(container)
+                if container_url is None: return None
+                anchor = urllib.quote('%s'%obj.canonical_name[-1])
+                return '%s#%s' % (container_url, anchor)
+        # Dotted name: look up the corresponding APIDoc
+        elif isinstance(obj, DottedName):
+            val_doc = self.docindex.get_valdoc(obj)
+            if val_doc is None: return None
+            return self.url(val_doc)
+        # Special pages:
+        elif obj == 'indices':
+            return 'identifier-index.html'
+        elif obj == 'help':
+            return 'help.html'
+        elif obj == 'trees':
+            return self._trees_url
+        else:
+            raise ValueError, "Don't know what to do with %r" % obj
+
+    def pysrc_link(self, api_doc):
+        if not self._incl_sourcecode:
+            return ''
+        url = self.pysrc_url(api_doc)
+        if url is not None: 
+            return ('<span class="codelink"><a href="%s">source '
+                    'code</a></span>' % url)
+        else:
+            return ''
+    
+    def pysrc_url(self, api_doc):
+        if isinstance(api_doc, VariableDoc):
+            if api_doc.value not in (None, UNKNOWN):
+                return pysrc_url(api_doc.value)
+            else:
+                return None
+        elif isinstance(api_doc, ModuleDoc):
+            if api_doc in self.modules_with_sourcecode:
+                return ('%s-pysrc.html' %
+                       urllib.quote('%s' % api_doc.canonical_name))
+            else:
+                return None
+        else:
+            module = api_doc.defining_module
+            if module == UNKNOWN: return None
+            module_pysrc_url = self.pysrc_url(module)
+            if module_pysrc_url is None: return None
+            module_name = module.canonical_name
+            if not module_name.dominates(api_doc.canonical_name, True):
+                log.debug('%r is in %r but name does not dominate' %
+                          (api_doc, module))
+                return module_pysrc_url
+            mname_len = len(module.canonical_name)
+            anchor = '%s' % api_doc.canonical_name[mname_len:]
+            return '%s#%s' % (module_pysrc_url, urllib.quote(anchor))
+        
+        # We didn't find it:
+        return None
+
+    # [xx] add code to automatically do <code> wrapping or the like?
+    def href(self, target, label=None, css_class=None, context=None,
+             tooltip=None):
+        """
+        Return the HTML code for an HREF link to the given target
+        (which can be a C{VariableDoc}, a C{ValueDoc}, or a
+        C{DottedName}.
+        If a C{NamespaceDoc} C{context} is specified, the target label is
+        contextualized to it.
+        """
+        assert isinstance(target, (APIDoc, DottedName))
+
+        # Pick a label, if none was given.
+        if label is None:
+            if isinstance(target, VariableDoc):
+                label = target.name
+            elif (isinstance(target, ValueDoc) and
+                  target.canonical_name is not UNKNOWN):
+                label = target.canonical_name
+            elif isinstance(target, DottedName):
+                label = target
+            elif isinstance(target, GenericValueDoc):
+                raise ValueError("href() should not be called with "
+                                 "GenericValueDoc objects (perhaps you "
+                                 "meant to use the containing variable?)")
+            else:
+                raise ValueError("Unable to find a label for %r" % target)
+                
+            if context is not None and isinstance(label, DottedName):
+                label = label.contextualize(context.canonical_name.container())
+                
+            label = plaintext_to_html(str(label))
+            
+            # Munge names for scripts & unreachable values
+            if label.startswith('script-'):
+                label = label[7:] + ' (script)'
+            if label.startswith('??'):
+                label = '<i>unreachable</i>' + label[2:]
+                label = re.sub(r'-\d+$', '', label)
+
+        # Get the url for the target.
+        url = self.url(target)
+        if url is None:
+            if tooltip: return '<span title="%s">%s</span>' % (tooltip, label)
+            else: return label
+
+        # Construct a string for the class attribute.
+        if css_class is None:
+            css = ''
+        else:
+            css = ' class="%s"' % css_class
+
+        onclick = ''
+        if ((isinstance(target, VariableDoc) and not target.is_public) or
+            (isinstance(target, ValueDoc) and
+             not isinstance(target, GenericValueDoc) and
+             not self._val_is_public(target))):
+            onclick = ' onclick="show_private();"'
+
+        if tooltip:
+            tooltip = ' title="%s"' % tooltip
+        else:
+            tooltip = ''
+
+        return '<a href="%s"%s%s%s>%s</a>' % (url, css, onclick, tooltip, label)
+
+    def _attr_to_html(self, attr, api_doc, indent):
+        if api_doc in (None, UNKNOWN):
+            return ''
+        pds = getattr(api_doc, attr, None) # pds = ParsedDocstring.
+        if pds not in (None, UNKNOWN):
+            return self.docstring_to_html(pds, api_doc, indent)
+        elif isinstance(api_doc, VariableDoc):
+            return self._attr_to_html(attr, api_doc.value, indent)
+        
+    def summary(self, api_doc, indent=0):
+        return self._attr_to_html('summary', api_doc, indent)
+        
+    def descr(self, api_doc, indent=0):
+        return self._attr_to_html('descr', api_doc, indent)
+
+    def type_descr(self, api_doc, indent=0):
+        return self._attr_to_html('type_descr', api_doc, indent)
+
+    def return_type(self, api_doc, indent=0):
+        return self._attr_to_html('return_type', api_doc, indent)
+
+    def return_descr(self, api_doc, indent=0):
+        return self._attr_to_html('return_descr', api_doc, indent)
+
+    def docstring_to_html(self, parsed_docstring, where=None, indent=0):
+        if parsed_docstring in (None, UNKNOWN): return ''
+        linker = _HTMLDocstringLinker(self, where)
+        s = parsed_docstring.to_html(linker, indent=indent,
+                                     directory=self._directory,
+                                     docindex=self.docindex,
+                                     context=where).strip()
+        if self._mark_docstrings:
+            s = '<span class="docstring">%s</span><!--end docstring-->' % s
+        return s
+
+    def description(self, parsed_docstring, where=None, indent=0):
+        assert isinstance(where, (APIDoc, type(None)))
+        if parsed_docstring in (None, UNKNOWN): return ''
+        linker = _HTMLDocstringLinker(self, where)
+        descr = parsed_docstring.to_html(linker, indent=indent,
+                                         directory=self._directory,
+                                         docindex=self.docindex,
+                                         context=where).strip()
+        if descr == '': return ' '
+        return descr
+
+    # [xx] Should this be defined by the APIDoc classes themselves??
+    def doc_kind(self, doc):
+        if isinstance(doc, ModuleDoc) and doc.is_package == True:
+            return 'Package'
+        elif (isinstance(doc, ModuleDoc) and
+              doc.canonical_name[0].startswith('script')):
+            return 'Script'
+        elif isinstance(doc, ModuleDoc):
+            return 'Module'
+        elif isinstance(doc, ClassDoc):
+            return 'Class'
+        elif isinstance(doc, ClassMethodDoc):
+            return 'Class Method'
+        elif isinstance(doc, StaticMethodDoc):
+            return 'Static Method'
+        elif isinstance(doc, RoutineDoc):
+            if isinstance(self.docindex.container(doc), ClassDoc):
+                return 'Method'
+            else:
+                return 'Function'
+        else:
+            return 'Variable'
+        
+    def _doc_or_ancestor_is_private(self, api_doc):
+        name = api_doc.canonical_name
+        for i in range(len(name), 0, -1):
+            # Is it (or an ancestor) a private var?
+            var_doc = self.docindex.get_vardoc(name[:i])
+            if var_doc is not None and var_doc.is_public == False:
+                return True
+            # Is it (or an ancestor) a private module?
+            val_doc = self.docindex.get_valdoc(name[:i])
+            if (val_doc is not None and isinstance(val_doc, ModuleDoc) and
+                val_doc.canonical_name[-1].startswith('_')):
+                return True
+        return False
+
+    def _private_subclasses(self, class_doc):
+        """Return a list of all subclasses of the given class that are
+        private, as determined by L{_val_is_private}.  Recursive
+        subclasses are included in this list."""
+        queue = [class_doc]
+        private = set()
+        for cls in queue:
+            if (isinstance(cls, ClassDoc) and
+                cls.subclasses not in (None, UNKNOWN)):
+                queue.extend(cls.subclasses)
+                private.update([c for c in cls.subclasses if
+                                not self._val_is_public(c)])
+        return private
+                
+class _HTMLDocstringLinker(epydoc.markup.DocstringLinker):
+    def __init__(self, htmlwriter, container):
+        self.htmlwriter = htmlwriter
+        self.docindex = htmlwriter.docindex
+        self.container = container
+        
+    def translate_indexterm(self, indexterm):
+        key = self.htmlwriter._term_index_to_anchor(indexterm)
+        return ('<a name="%s"></a><i class="indexterm">%s</i>' %
+                (key, indexterm.to_html(self)))
+    
+    def translate_identifier_xref(self, identifier, label=None):
+        # Pick a label for this xref.
+        if label is None: label = plaintext_to_html(identifier)
+
+        # Find the APIDoc for it (if it's available).
+        doc = self.docindex.find(identifier, self.container)
+
+        # If we didn't find a target, then try checking in the contexts
+        # of the ancestor classes. 
+        if doc is None and isinstance(self.container, RoutineDoc):
+            container = self.docindex.get_vardoc(
+                self.container.canonical_name)
+            while (doc is None and container not in (None, UNKNOWN)
+                   and container.overrides not in (None, UNKNOWN)):
+                container = container.overrides
+                doc = self.docindex.find(identifier, container)
+                
+        # Translate it into HTML.
+        if doc is None:
+            self._failed_xref(identifier)
+            return '<code class="link">%s</code>' % label
+        else:
+            return self.htmlwriter.href(doc, label, 'link')
+
+    # [xx] Should this be added to the DocstringLinker interface???
+    # Currently, this is *only* used by dotgraph.
+    def url_for(self, identifier):
+        if isinstance(identifier, (basestring, DottedName)):
+            doc = self.docindex.find(identifier, self.container)
+            if doc:
+                return self.htmlwriter.url(doc)
+            else:
+                return None
+            
+        elif isinstance(identifier, APIDoc):
+            return self.htmlwriter.url(identifier)
+            doc = identifier
+            
+        else:
+            raise TypeError('Expected string or APIDoc')
+
+    def _failed_xref(self, identifier):
+        """Add an identifier to the htmlwriter's failed crossreference
+        list."""
+        # Don't count it as a failed xref if it's a parameter of the
+        # current function.
+        if (isinstance(self.container, RoutineDoc) and
+            identifier in self.container.all_args()):
+            return
+        
+        failed_xrefs = self.htmlwriter._failed_xrefs
+        context = self.container.canonical_name
+        failed_xrefs.setdefault(identifier,{})[context] = 1
diff --git a/epydoc/docwriter/html_colorize.py b/epydoc/docwriter/html_colorize.py
new file mode 100644
index 0000000..38d0758
--- /dev/null
+++ b/epydoc/docwriter/html_colorize.py
@@ -0,0 +1,909 @@
+#
+# epydoc.html: HTML colorizers
+# Edward Loper
+#
+# Created [10/16/02 09:49 PM]
+# $Id: html_colorize.py 1674 2008-01-29 06:03:36Z edloper $
+#
+
+"""
+Functions to produce colorized HTML code for various objects.
+Currently, C{html_colorize} defines functions to colorize
+Python source code.
+"""
+__docformat__ = 'epytext en'
+
+import re, codecs
+from epydoc import log
+from epydoc.util import py_src_filename
+from epydoc.apidoc import *
+import tokenize, token, cgi, keyword
+try: from cStringIO import StringIO
+except: from StringIO import StringIO
+
+######################################################################
+## Python source colorizer
+######################################################################
+"""
+Goals:
+  - colorize tokens appropriately (using css)
+  - optionally add line numbers
+  - 
+"""
+
+#: Javascript code for the PythonSourceColorizer
+PYSRC_JAVASCRIPTS = '''\
+function expand(id) {
+  var elt = document.getElementById(id+"-expanded");
+  if (elt) elt.style.display = "block";
+  var elt = document.getElementById(id+"-expanded-linenums");
+  if (elt) elt.style.display = "block";
+  var elt = document.getElementById(id+"-collapsed");
+  if (elt) { elt.innerHTML = ""; elt.style.display = "none"; }
+  var elt = document.getElementById(id+"-collapsed-linenums");
+  if (elt) { elt.innerHTML = ""; elt.style.display = "none"; }
+  var elt = document.getElementById(id+"-toggle");
+  if (elt) { elt.innerHTML = "-"; }
+}
+
+function collapse(id) {
+  var elt = document.getElementById(id+"-expanded");
+  if (elt) elt.style.display = "none";
+  var elt = document.getElementById(id+"-expanded-linenums");
+  if (elt) elt.style.display = "none";
+  var elt = document.getElementById(id+"-collapsed-linenums");
+  if (elt) { elt.innerHTML = "<br />"; elt.style.display="block"; }
+  var elt = document.getElementById(id+"-toggle");
+  if (elt) { elt.innerHTML = "+"; }
+  var elt = document.getElementById(id+"-collapsed");
+  if (elt) {
+    elt.style.display = "block";
+    
+    var indent = elt.getAttribute("indent");
+    var pad = elt.getAttribute("pad");
+    var s = "<tt class=\'py-lineno\'>";
+    for (var i=0; i<pad.length; i++) { s += " " }
+    s += "</tt>";
+    s += "  <tt class=\'py-line\'>";
+    for (var i=0; i<indent.length; i++) { s += " " }
+    s += "<a href=\'#\' onclick=\'expand(\\"" + id;
+    s += "\\");return false\'>...</a></tt><br />";
+    elt.innerHTML = s;
+  }
+}
+
+function toggle(id) {
+  elt = document.getElementById(id+"-toggle");
+  if (elt.innerHTML == "-")
+      collapse(id); 
+  else
+      expand(id);
+  return false;
+}
+
+function highlight(id) {
+  var elt = document.getElementById(id+"-def");
+  if (elt) elt.className = "py-highlight-hdr";
+  var elt = document.getElementById(id+"-expanded");
+  if (elt) elt.className = "py-highlight";
+  var elt = document.getElementById(id+"-collapsed");
+  if (elt) elt.className = "py-highlight";
+}
+
+function num_lines(s) {
+  var n = 1;
+  var pos = s.indexOf("\\n");
+  while ( pos > 0) {
+    n += 1;
+    pos = s.indexOf("\\n", pos+1);
+  }
+  return n;
+}
+
+// Collapse all blocks that mave more than `min_lines` lines.
+function collapse_all(min_lines) {
+  var elts = document.getElementsByTagName("div");
+  for (var i=0; i<elts.length; i++) {
+    var elt = elts[i];
+    var split = elt.id.indexOf("-");
+    if (split > 0)
+      if (elt.id.substring(split, elt.id.length) == "-expanded")
+        if (num_lines(elt.innerHTML) > min_lines)
+          collapse(elt.id.substring(0, split));
+  }
+}
+
+function expandto(href) {
+  var start = href.indexOf("#")+1;
+  if (start != 0 && start != href.length) {
+    if (href.substring(start, href.length) != "-") {
+      collapse_all(4);
+      pos = href.indexOf(".", start);
+      while (pos != -1) {
+        var id = href.substring(start, pos);
+        expand(id);
+        pos = href.indexOf(".", pos+1);
+      }
+      var id = href.substring(start, href.length);
+      expand(id);
+      highlight(id);
+    }
+  }
+}
+
+function kill_doclink(id) {
+  var parent = document.getElementById(id);
+  parent.removeChild(parent.childNodes.item(0));
+}
+function auto_kill_doclink(ev) {
+  if (!ev) var ev = window.event;
+  if (!this.contains(ev.toElement)) {
+    var parent = document.getElementById(this.parentID);
+    parent.removeChild(parent.childNodes.item(0));
+  }
+}
+
+function doclink(id, name, targets_id) {
+  var elt = document.getElementById(id);
+
+  // If we already opened the box, then destroy it.
+  // (This case should never occur, but leave it in just in case.)
+  if (elt.childNodes.length > 1) {
+    elt.removeChild(elt.childNodes.item(0));
+  }
+  else {
+    // The outer box: relative + inline positioning.
+    var box1 = document.createElement("div");
+    box1.style.position = "relative";
+    box1.style.display = "inline";
+    box1.style.top = 0;
+    box1.style.left = 0;
+  
+    // A shadow for fun
+    var shadow = document.createElement("div");
+    shadow.style.position = "absolute";
+    shadow.style.left = "-1.3em";
+    shadow.style.top = "-1.3em";
+    shadow.style.background = "#404040";
+    
+    // The inner box: absolute positioning.
+    var box2 = document.createElement("div");
+    box2.style.position = "relative";
+    box2.style.border = "1px solid #a0a0a0";
+    box2.style.left = "-.2em";
+    box2.style.top = "-.2em";
+    box2.style.background = "white";
+    box2.style.padding = ".3em .4em .3em .4em";
+    box2.style.fontStyle = "normal";
+    box2.onmouseout=auto_kill_doclink;
+    box2.parentID = id;
+
+    // Get the targets
+    var targets_elt = document.getElementById(targets_id);
+    var targets = targets_elt.getAttribute("targets");
+    var links = "";
+    target_list = targets.split(",");
+    for (var i=0; i<target_list.length; i++) {
+        var target = target_list[i].split("=");
+        links += "<li><a href=\'" + target[1] + 
+               "\' style=\'text-decoration:none\'>" +
+               target[0] + "</a></li>";
+    }
+  
+    // Put it all together.
+    elt.insertBefore(box1, elt.childNodes.item(0));
+    //box1.appendChild(box2);
+    box1.appendChild(shadow);
+    shadow.appendChild(box2);
+    box2.innerHTML =
+        "Which <b>"+name+"</b> do you want to see documentation for?" +
+        "<ul style=\'margin-bottom: 0;\'>" +
+        links + 
+        "<li><a href=\'#\' style=\'text-decoration:none\' " +
+        "onclick=\'kill_doclink(\\""+id+"\\");return false;\'>"+
+        "<i>None of the above</i></a></li></ul>";
+  }
+  return false;
+}
+'''
+
+PYSRC_EXPANDTO_JAVASCRIPT = '''\
+<script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+'''
+
+class PythonSourceColorizer:
+    """
+    A class that renders a python module's source code into HTML
+    pages.  These HTML pages are intended to be provided along with
+    the API documentation for a module, in case a user wants to learn
+    more about a particular object by examining its source code.
+    Links are therefore generated from the API documentation to the
+    source code pages, and from the source code pages back into the
+    API documentation.
+
+    The HTML generated by C{PythonSourceColorizer} has several notable
+    features:
+
+      - CSS styles are used to color tokens according to their type.
+        (See L{CSS_CLASSES} for a list of the different token types
+        that are identified).
+        
+      - Line numbers are included to the left of each line.
+
+      - The first line of each class and function definition includes
+        a link to the API source documentation for that object.
+
+      - The first line of each class and function definition includes
+        an anchor that can be used to link directly to that class or
+        function.
+
+      - If javascript is enabled, and the page is loaded using the
+        anchor for a class or function (i.e., if the url ends in
+        C{'#I{<name>}'}), then that class or function will automatically
+        be highlighted; and all other classes and function definition
+        blocks will be 'collapsed'.  These collapsed blocks can be
+        expanded by clicking on them.
+
+      - Unicode input is supported (including automatic detection
+        of C{'coding:'} declarations).
+
+    """
+    #: A look-up table that is used to determine which CSS class
+    #: should be used to colorize a given token.  The following keys
+    #: may be used:
+    #:   - Any token name (e.g., C{'STRING'})
+    #:   - Any operator token (e.g., C{'='} or C{'@'}).
+    #:   - C{'KEYWORD'} -- Python keywords such as C{'for'} and C{'if'}
+    #:   - C{'DEFNAME'} -- the name of a class or function at the top
+    #:     of its definition statement.
+    #:   - C{'BASECLASS'} -- names of base classes at the top of a class
+    #:     definition statement.
+    #:   - C{'PARAM'} -- function parameters
+    #:   - C{'DOCSTRING'} -- docstrings
+    #:   - C{'DECORATOR'} -- decorator names
+    #: If no CSS class can be found for a given token, then it won't
+    #: be marked with any CSS class.
+    CSS_CLASSES = {
+        'NUMBER':       'py-number',
+        'STRING':       'py-string',
+        'COMMENT':      'py-comment',
+        'NAME':         'py-name',
+        'KEYWORD':      'py-keyword',
+        'DEFNAME':      'py-def-name',
+        'BASECLASS':    'py-base-class',
+        'PARAM':        'py-param',
+        'DOCSTRING':    'py-docstring',
+        'DECORATOR':    'py-decorator',
+        'OP':           'py-op',
+        '@':            'py-decorator',
+        }
+
+    #: HTML code for the beginning of a collapsable function or class
+    #: definition block.  The block contains two <div>...</div>
+    #: elements -- a collapsed version and an expanded version -- and
+    #: only one of these elements is visible at any given time.  By
+    #: default, all definition blocks are expanded.
+    #:
+    #: This string should be interpolated with the following values::
+    #:   (name, indentation, name)
+    #: Where C{name} is the anchor name for the function or class; and
+    #: indentation is a string of whitespace used to indent the
+    #: ellipsis marker in the collapsed version.
+    START_DEF_BLOCK = (
+        '<div id="%s-collapsed" style="display:none;" '
+        'pad="%s" indent="%s"></div>'
+        '<div id="%s-expanded">')
+
+    #: HTML code for the end of a collapsable function or class
+    #: definition block.
+    END_DEF_BLOCK = '</div>'
+
+    #: A regular expression used to pick out the unicode encoding for
+    #: the source file.
+    UNICODE_CODING_RE = re.compile(r'.*?\n?.*?coding[:=]\s*([-\w.]+)')
+
+    #: A configuration constant, used to determine whether or not to add
+    #: collapsable <div> elements for definition blocks.
+    ADD_DEF_BLOCKS = True
+
+    #: A configuration constant, used to determine whether or not to
+    #: add line numbers.
+    ADD_LINE_NUMBERS = True
+
+    #: A configuration constant, used to determine whether or not to
+    #: add tooltips for linked names.
+    ADD_TOOLTIPS = True
+
+    #: If true, then try to guess which target is appropriate for
+    #: linked names; if false, then always open a div asking the
+    #: user which one they want.
+    GUESS_LINK_TARGETS = False
+
+    def __init__(self, module_filename, module_name,
+                 docindex=None, url_func=None, name_to_docs=None,
+                 tab_width=8):
+        """
+        Create a new HTML colorizer for the specified module.
+
+        @param module_filename: The name of the file containing the
+            module; its text will be loaded from this file.
+        @param module_name: The dotted name of the module; this will
+            be used to create links back into the API source
+            documentation.
+        """
+        # Get the source version, if possible.
+        try: module_filename = py_src_filename(module_filename)
+        except: pass
+        
+        #: The filename of the module we're colorizing.
+        self.module_filename = module_filename
+        
+        #: The dotted name of the module we're colorizing.
+        self.module_name = module_name
+
+        #: A docindex, used to create href links from identifiers to
+        #: the API documentation for their values.
+        self.docindex = docindex
+
+        #: A mapping from short names to lists of ValueDoc, used to
+        #: decide which values an identifier might map to when creating
+        #: href links from identifiers to the API docs for their values.
+        self.name_to_docs = name_to_docs
+            
+        #: A function that maps APIDoc -> URL, used to create href
+        #: links from identifiers to the API documentation for their
+        #: values.
+        self.url_func = url_func
+
+        #: The index in C{text} of the last character of the last
+        #: token we've processed.
+        self.pos = 0
+
+        #: A list that maps line numbers to character offsets in
+        #: C{text}.  In particular, line C{M{i}} begins at character
+        #: C{line_offset[i]} in C{text}.  Since line numbers begin at
+        #: 1, the first element of C{line_offsets} is C{None}.
+        self.line_offsets = []
+
+        #: A list of C{(toktype, toktext)} for all tokens on the
+        #: logical line that we are currently processing.  Once a
+        #: complete line of tokens has been collected in C{cur_line},
+        #: it is sent to L{handle_line} for processing.
+        self.cur_line = []
+
+        #: A list of the names of the class or functions that include
+        #: the current block.  C{context} has one element for each
+        #: level of indentation; C{context[i]} is the name of the class
+        #: or function defined by the C{i}th level of indentation, or
+        #: C{None} if that level of indentation doesn't correspond to a
+        #: class or function definition.
+        self.context = []
+
+        #: A list, corresponding one-to-one with L{self.context},
+        #: indicating the type of each entry.  Each element of
+        #: C{context_types} is one of: C{'func'}, C{'class'}, C{None}.
+        self.context_types = []
+
+        #: A list of indentation strings for each of the current
+        #: block's indents.  I.e., the current total indentation can
+        #: be found by taking C{''.join(self.indents)}.
+        self.indents = []
+
+        #: The line number of the line we're currently processing.
+        self.lineno = 0
+
+        #: The name of the class or function whose definition started
+        #: on the previous logical line, or C{None} if the previous
+        #: logical line was not a class or function definition.
+        self.def_name = None
+
+        #: The type of the class or function whose definition started
+        #: on the previous logical line, or C{None} if the previous
+        #: logical line was not a class or function definition.
+        #: Can be C{'func'}, C{'class'}, C{None}.
+        self.def_type = None
+
+        #: The number of spaces to replace each tab in source code with
+        self.tab_width = tab_width
+
+        
+    def find_line_offsets(self):
+        """
+        Construct the L{line_offsets} table from C{self.text}.
+        """
+        # line 0 doesn't exist; line 1 starts at char offset 0.
+        self.line_offsets = [None, 0]
+        # Find all newlines in `text`, and add an entry to
+        # line_offsets for each one.
+        pos = self.text.find('\n')
+        while pos != -1:
+            self.line_offsets.append(pos+1)
+            pos = self.text.find('\n', pos+1)
+        # Add a final entry, marking the end of the string.
+        self.line_offsets.append(len(self.text))
+
+    def lineno_to_html(self):
+        template = '%%%ds' % self.linenum_size
+        n = template % self.lineno
+        return '<a name="L%s"></a><tt class="py-lineno">%s</tt>' \
+            % (self.lineno, n)
+
+    def colorize(self):
+        """
+        Return an HTML string that renders the source code for the
+        module that was specified in the constructor.
+        """
+        # Initialize all our state variables
+        self.pos = 0
+        self.cur_line = []
+        self.context = []
+        self.context_types = []
+        self.indents = []
+        self.lineno = 1
+        self.def_name = None
+        self.def_type = None
+        self.has_decorators = False
+
+        # Cache, used so we only need to list the target elements once
+        # for each variable.
+        self.doclink_targets_cache = {}
+
+        # Load the module's text.
+        self.text = open(self.module_filename).read()
+        self.text = self.text.expandtabs(self.tab_width).rstrip()+'\n'
+
+        # Construct the line_offsets table.
+        self.find_line_offsets()
+
+        num_lines = self.text.count('\n')+1
+        self.linenum_size = len(`num_lines+1`)
+        
+        # Call the tokenizer, and send tokens to our `tokeneater()`
+        # method.  If anything goes wrong, then fall-back to using
+        # the input text as-is (with no colorization).
+        try:
+            output = StringIO()
+            self.out = output.write
+            tokenize.tokenize(StringIO(self.text).readline, self.tokeneater)
+            html = output.getvalue()
+            if self.has_decorators:
+                html = self._FIX_DECORATOR_RE.sub(r'\2\1', html)
+        except tokenize.TokenError, ex:
+            html = self.text
+
+        # Check for a unicode encoding declaration.
+        m = self.UNICODE_CODING_RE.match(self.text)
+        if m: coding = m.group(1)
+        else: coding = 'iso-8859-1'
+
+        # Decode the html string into unicode, and then encode it back
+        # into ascii, replacing any non-ascii characters with xml
+        # character references.
+        try:
+            html = html.decode(coding).encode('ascii', 'xmlcharrefreplace')
+        except LookupError:
+            coding = 'iso-8859-1'
+            html = html.decode(coding).encode('ascii', 'xmlcharrefreplace')
+
+        # Call expandto.
+        html += PYSRC_EXPANDTO_JAVASCRIPT
+
+        return html
+
+    def tokeneater(self, toktype, toktext, (srow,scol), (erow,ecol), line):
+        """
+        A callback function used by C{tokenize.tokenize} to handle
+        each token in the module.  C{tokeneater} collects tokens into
+        the C{self.cur_line} list until a complete logical line has
+        been formed; and then calls L{handle_line} to process that line.
+        """
+        # If we encounter any errors, then just give up.
+        if toktype == token.ERRORTOKEN:
+            raise tokenize.TokenError, toktype
+
+        # Did we skip anything whitespace?  If so, add a pseudotoken
+        # for it, with toktype=None.  (Note -- this skipped string
+        # might also contain continuation slashes; but I won't bother
+        # to colorize them.)
+        startpos = self.line_offsets[srow] + scol
+        if startpos > self.pos:
+            skipped = self.text[self.pos:startpos]
+            self.cur_line.append( (None, skipped) )
+
+        # Update our position.
+        self.pos = startpos + len(toktext)
+
+        # Update our current line.
+        self.cur_line.append( (toktype, toktext) )
+
+        # When we reach the end of a line, process it.
+        if toktype == token.NEWLINE or toktype == token.ENDMARKER:
+            self.handle_line(self.cur_line)
+            self.cur_line = []
+
+    _next_uid = 0
+
+    # [xx] note -- this works with byte strings, not unicode strings!
+    # I may change it to use unicode eventually, but when I do it
+    # needs to be changed all at once.
+    def handle_line(self, line):
+        """
+        Render a single logical line from the module, and write the
+        generated HTML to C{self.out}.
+
+        @param line: A single logical line, encoded as a list of
+            C{(toktype,tokttext)} pairs corresponding to the tokens in
+            the line.
+        """
+        # def_name is the name of the function or class defined by
+        # this line; or None if no funciton or class is defined.
+        def_name = None
+
+        # def_type is the type of the function or class defined by
+        # this line; or None if no funciton or class is defined.
+        def_type = None
+
+        # does this line start a class/func def?
+        starting_def_block = False 
+
+        in_base_list = False
+        in_param_list = False
+        in_param_default = 0
+        at_module_top = (self.lineno == 1)
+
+        ended_def_blocks = 0
+
+        # The html output.
+        if self.ADD_LINE_NUMBERS:
+            s = self.lineno_to_html()
+            self.lineno += 1
+        else:
+            s = ''
+        s += '  <tt class="py-line">'
+
+        # Loop through each token, and colorize it appropriately.
+        for i, (toktype, toktext) in enumerate(line):
+            if type(s) is not str:
+                if type(s) is unicode:
+                    log.error('While colorizing %s -- got unexpected '
+                              'unicode string' % self.module_name)
+                    s = s.encode('ascii', 'xmlcharrefreplace')
+                else:
+                    raise ValueError('Unexpected value for s -- %s' % 
+                                     type(s).__name__)
+
+            # For each token, determine its css class and whether it
+            # should link to a url.
+            css_class = None
+            url = None
+            tooltip = None
+            onclick = uid = targets = None # these 3 are used together.
+
+            # Is this token the class name in a class definition?  If
+            # so, then make it a link back into the API docs.
+            if i>=2 and line[i-2][1] == 'class':
+                in_base_list = True
+                css_class = self.CSS_CLASSES['DEFNAME']
+                def_name = toktext
+                def_type = 'class'
+                if 'func' not in self.context_types:
+                    cls_name = self.context_name(def_name)
+                    url = self.name2url(cls_name)
+                    s = self.mark_def(s, cls_name)
+                    starting_def_block = True
+
+            # Is this token the function name in a function def?  If
+            # so, then make it a link back into the API docs.
+            elif i>=2 and line[i-2][1] == 'def':
+                in_param_list = True
+                css_class = self.CSS_CLASSES['DEFNAME']
+                def_name = toktext
+                def_type = 'func'
+                if 'func' not in self.context_types:
+                    cls_name = self.context_name()
+                    func_name = self.context_name(def_name)
+                    url = self.name2url(cls_name, def_name)
+                    s = self.mark_def(s, func_name)
+                    starting_def_block = True
+
+            # For each indent, update the indents list (which we use
+            # to keep track of indentation strings) and the context
+            # list.  If this indent is the start of a class or
+            # function def block, then self.def_name will be its name;
+            # otherwise, it will be None.
+            elif toktype == token.INDENT:
+                self.indents.append(toktext)
+                self.context.append(self.def_name)
+                self.context_types.append(self.def_type)
+
+            # When we dedent, pop the last elements off the indents
+            # list and the context list.  If the last context element
+            # is a name, then we're ending a class or function def
+            # block; so write an end-div tag.
+            elif toktype == token.DEDENT:
+                self.indents.pop()
+                self.context_types.pop()
+                if self.context.pop():
+                    ended_def_blocks += 1
+
+            # If this token contains whitespace, then don't bother to
+            # give it a css tag.
+            elif toktype in (None, tokenize.NL, token.NEWLINE,
+                             token.ENDMARKER):
+                css_class = None
+
+            # Check if the token is a keyword.
+            elif toktype == token.NAME and keyword.iskeyword(toktext):
+                css_class = self.CSS_CLASSES['KEYWORD']
+
+            elif in_base_list and toktype == token.NAME:
+                css_class = self.CSS_CLASSES['BASECLASS']
+
+            elif (in_param_list and toktype == token.NAME and
+                  not in_param_default):
+                css_class = self.CSS_CLASSES['PARAM']
+
+            # Class/function docstring.
+            elif (self.def_name and line[i-1][0] == token.INDENT and
+                  self.is_docstring(line, i)):
+                css_class = self.CSS_CLASSES['DOCSTRING']
+
+            # Module docstring.
+            elif at_module_top and self.is_docstring(line, i):
+                css_class = self.CSS_CLASSES['DOCSTRING']
+
+            # check for decorators??
+            elif (toktype == token.NAME and
+                  ((i>0 and line[i-1][1]=='@') or
+                   (i>1 and line[i-1][0]==None and line[i-2][1] == '@'))):
+                css_class = self.CSS_CLASSES['DECORATOR']
+                self.has_decorators = True
+
+            # If it's a name, try to link it.
+            elif toktype == token.NAME:
+                css_class = self.CSS_CLASSES['NAME']
+                # If we have a variable named `toktext` in the current
+                # context, then link to that.  Note that if we're inside
+                # a function, then that function is our context, not
+                # the namespace that contains it. [xx] this isn't always
+                # the right thing to do.
+                if (self.GUESS_LINK_TARGETS and self.docindex is not None
+                    and self.url_func is not None):
+                    context = [n for n in self.context if n is not None]
+                    container = self.docindex.get_vardoc(
+                        DottedName(self.module_name, *context))
+                    if isinstance(container, NamespaceDoc):
+                        doc = container.variables.get(toktext)
+                        if doc is not None:
+                            url = self.url_func(doc)
+                            tooltip = str(doc.canonical_name)
+                # Otherwise, check the name_to_docs index to see what
+                # else this name might refer to.
+                if (url is None and self.name_to_docs is not None
+                    and self.url_func is not None):
+                    docs = self.name_to_docs.get(toktext)
+                    if docs:
+                        tooltip='\n'.join([str(d.canonical_name)
+                                           for d in docs])
+                        if len(docs) == 1 and self.GUESS_LINK_TARGETS:
+                            url = self.url_func(docs[0])
+                        else:
+                            uid, onclick, targets = self.doclink(toktext, docs)
+
+            # For all other tokens, look up the CSS class to use
+            # based on the token's type.
+            else:
+                if toktype == token.OP and toktext in self.CSS_CLASSES:
+                    css_class = self.CSS_CLASSES[toktext]
+                elif token.tok_name[toktype] in self.CSS_CLASSES:
+                    css_class = self.CSS_CLASSES[token.tok_name[toktype]]
+                else:
+                    css_class = None
+
+            # update our status..
+            if toktext == ':':
+                in_base_list = False
+                in_param_list = False
+            if toktext == '=' and in_param_list:
+                in_param_default = True
+            if in_param_default:
+                if toktext in ('(','[','{'): in_param_default += 1
+                if toktext in (')',']','}'): in_param_default -= 1
+                if toktext == ',' and in_param_default == 1:
+                    in_param_default = 0
+                
+            # Write this token, with appropriate colorization.
+            if tooltip and self.ADD_TOOLTIPS:
+                tooltip_html = ' title="%s"' % tooltip
+            else: tooltip_html = ''
+            if css_class: css_class_html = ' class="%s"' % css_class
+            else: css_class_html = ''
+            if onclick:
+                if targets: targets_html = ' targets="%s"' % targets
+                else: targets_html = ''
+                s += ('<tt id="%s"%s%s><a%s%s href="#" onclick="%s">' %
+                      (uid, css_class_html, targets_html, tooltip_html,
+                       css_class_html, onclick))
+            elif url:
+                if isinstance(url, unicode):
+                    url = url.encode('ascii', 'xmlcharrefreplace')
+                s += ('<a%s%s href="%s">' %
+                      (tooltip_html, css_class_html, url))
+            elif css_class_html or tooltip_html:
+                s += '<tt%s%s>' % (tooltip_html, css_class_html)
+            if i == len(line)-1:
+                s += ' </tt>' # Closes <tt class="py-line">
+                s += cgi.escape(toktext)
+            else:
+                try:
+                    s += self.add_line_numbers(cgi.escape(toktext), css_class)
+                except Exception, e:
+                    print (toktext, css_class, toktext.encode('ascii'))
+                    raise
+
+            if onclick: s += "</a></tt>"
+            elif url: s += '</a>'
+            elif css_class_html or tooltip_html: s += '</tt>'
+
+        if self.ADD_DEF_BLOCKS:
+            for i in range(ended_def_blocks):
+                self.out(self.END_DEF_BLOCK)
+
+        # Strip any empty <tt>s.
+        s = re.sub(r'<tt class="[\w+]"></tt>', '', s)
+
+        # Write the line.
+        self.out(s)
+
+        if def_name and starting_def_block:
+            self.out('</div>')
+
+        # Add div's if we're starting a def block.
+        if (self.ADD_DEF_BLOCKS and def_name and starting_def_block and
+            (line[-2][1] == ':')):
+            indentation = (''.join(self.indents)+'    ').replace(' ', '+')
+            linenum_padding = '+'*self.linenum_size
+            name=self.context_name(def_name)
+            self.out(self.START_DEF_BLOCK % (name, linenum_padding,
+                                             indentation, name))
+            
+        self.def_name = def_name
+        self.def_type = def_type
+
+    def context_name(self, extra=None):
+        pieces = [n for n in self.context if n is not None]
+        if extra is not None: pieces.append(extra)
+        return '.'.join(pieces)
+
+    def doclink(self, name, docs):
+        uid = 'link-%s' % self._next_uid
+        self._next_uid += 1
+        context = [n for n in self.context if n is not None]
+        container = DottedName(self.module_name, *context)
+        #else:
+        #    container = None
+        targets = ','.join(['%s=%s' % (str(self.doc_descr(d,container)),
+                              str(self.url_func(d)))
+                            for d in docs])
+
+        if targets in self.doclink_targets_cache:
+            onclick = ("return doclink('%s', '%s', '%s');" %
+                       (uid, name, self.doclink_targets_cache[targets]))
+            return uid, onclick, None
+        else:
+            self.doclink_targets_cache[targets] = uid
+            onclick = ("return doclink('%s', '%s', '%s');" %
+                       (uid, name, uid))
+            return uid, onclick, targets
+            
+    def doc_descr(self, doc, context):
+        name = str(doc.canonical_name)
+        descr = '%s %s' % (self.doc_kind(doc), name)
+        if isinstance(doc, RoutineDoc):
+            descr += '()'
+        return descr
+
+    # [XX] copied streight from html.py; this should be consolidated,
+    # probably into apidoc.
+    def doc_kind(self, doc):
+        if isinstance(doc, ModuleDoc) and doc.is_package == True:
+            return 'Package'
+        elif (isinstance(doc, ModuleDoc) and
+              doc.canonical_name[0].startswith('script')):
+            return 'Script'
+        elif isinstance(doc, ModuleDoc):
+            return 'Module'
+        elif isinstance(doc, ClassDoc):
+            return 'Class'
+        elif isinstance(doc, ClassMethodDoc):
+            return 'Class Method'
+        elif isinstance(doc, StaticMethodDoc):
+            return 'Static Method'
+        elif isinstance(doc, RoutineDoc):
+            if (self.docindex is not None and
+                isinstance(self.docindex.container(doc), ClassDoc)):
+                return 'Method'
+            else:
+                return 'Function'
+        else:
+            return 'Variable'
+
+    def mark_def(self, s, name):
+        replacement = ('<a name="%s"></a><div id="%s-def">\\1'
+                       '<a class="py-toggle" href="#" id="%s-toggle" '
+                       'onclick="return toggle(\'%s\');">-</a>\\2' %
+                       (name, name, name, name))
+        return re.sub('(.*) (<tt class="py-line">.*)\Z', replacement, s)
+                    
+    def is_docstring(self, line, i):
+        if line[i][0] != token.STRING: return False
+        for toktype, toktext in line[i:]:
+            if toktype not in (token.NEWLINE, tokenize.COMMENT,
+                               tokenize.NL, token.STRING, None):
+                return False
+        return True
+                               
+    def add_line_numbers(self, s, css_class):
+        result = ''
+        start = 0
+        end = s.find('\n')+1
+        while end:
+            result += s[start:end-1]
+            if css_class: result += '</tt>'
+            result += ' </tt>' # py-line
+            result += '\n'
+            if self.ADD_LINE_NUMBERS:
+                result += self.lineno_to_html()
+            result += '  <tt class="py-line">'
+            if css_class: result += '<tt class="%s">' % css_class
+            start = end
+            end = s.find('\n', end)+1
+            self.lineno += 1
+        result += s[start:]
+        return result
+
+    def name2url(self, class_name, func_name=None):
+        if class_name:
+            class_name = '%s.%s' % (self.module_name, class_name)
+            if func_name:
+                return '%s-class.html#%s' % (class_name, func_name)
+            else:
+                return '%s-class.html' % class_name
+        else:
+            return '%s-module.html#%s' % (self.module_name, func_name)
+
+    #: A regexp used to move the <div> that marks the beginning of a
+    #: function or method to just before the decorators.
+    _FIX_DECORATOR_RE = re.compile(
+        r'((?:^<a name="L\d+"></a><tt class="py-lineno">\s*\d+</tt>'
+        r'\s*<tt class="py-line">(?:<tt class="py-decorator">.*|\s*</tt>|'
+        r'\s*<tt class="py-comment">.*)\n)+)'
+        r'(<a name="\w+"></a><div id="\w+-def">)', re.MULTILINE)
+    
+_HDR = '''\
+<?xml version="1.0" encoding="ascii"?>
+        <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+                  "DTD/xhtml1-transitional.dtd">
+        <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+        <head>
+          <title>$title$</title>
+          <link rel="stylesheet" href="epydoc.css" type="text/css" />
+          <script type="text/javascript" src="epydoc.js"></script>
+        </head>
+        
+        <body bgcolor="white" text="black" link="blue" vlink="#204080"
+              alink="#204080">
+'''
+_FOOT = '</body></html>'
+if __name__=='__main__':
+    #s = PythonSourceColorizer('../apidoc.py', 'epydoc.apidoc').colorize()
+    s = PythonSourceColorizer('/tmp/fo.py', 'epydoc.apidoc').colorize()
+    #print s
+    import codecs
+    f = codecs.open('/home/edloper/public_html/color3.html', 'w', 'ascii', 'xmlcharrefreplace')
+    f.write(_HDR+'<pre id="py-src-top" class="py-src">'+s+'</pre>'+_FOOT)
+    f.close()
diff --git a/epydoc/docwriter/html_css.py b/epydoc/docwriter/html_css.py
new file mode 100644
index 0000000..6b3746b
--- /dev/null
+++ b/epydoc/docwriter/html_css.py
@@ -0,0 +1,550 @@
+#
+# epydoc.css: default epydoc CSS stylesheets
+# Edward Loper
+#
+# Created [01/30/01 05:18 PM]
+# $Id: html_css.py 1634 2007-09-24 15:58:38Z dvarrazzo $
+#
+
+"""
+Predefined CSS stylesheets for the HTML outputter (L{epydoc.docwriter.html}).
+
+ at type STYLESHEETS: C{dictionary} from C{string} to C{(string, string)}
+ at var STYLESHEETS: A dictionary mapping from stylesheet names to CSS
+    stylesheets and descriptions.  A single stylesheet may have
+    multiple names.  Currently, the following stylesheets are defined:
+      - C{default}: The default stylesheet (synonym for C{white}).
+      - C{white}: Black on white, with blue highlights (similar to
+        javadoc).
+      - C{blue}: Black on steel blue.
+      - C{green}: Black on green.
+      - C{black}: White on black, with blue highlights
+      - C{grayscale}: Grayscale black on white.
+      - C{none}: An empty stylesheet.
+"""
+__docformat__ = 'epytext en'
+
+import re
+
+############################################################
+## Basic stylesheets
+############################################################
+
+# [xx] Should I do something like:
+#
+#    @import url(html4css1.css);
+#
+# But then where do I get that css file from?  Hm.
+# Also, in principle I'm mangling classes, but it looks like I'm
+# failing.
+#
+
+# Black on white, with blue highlights.  This is similar to how
+# javadoc looks.
+TEMPLATE = """
+
+/* Epydoc CSS Stylesheet
+ *
+ * This stylesheet can be used to customize the appearance of epydoc's
+ * HTML output.
+ *
+ */
+
+/* Default Colors & Styles
+ *   - Set the default foreground & background color with 'body'; and 
+ *     link colors with 'a:link' and 'a:visited'.
+ *   - Use bold for decision list terms.
+ *   - The heading styles defined here are used for headings *within*
+ *     docstring descriptions.  All headings used by epydoc itself use
+ *     either class='epydoc' or class='toc' (CSS styles for both
+ *     defined below).
+ */
+body                        { background: $body_bg; color: $body_fg; }
+p                           { margin-top: 0.5em; margin-bottom: 0.5em; }
+a:link                      { color: $body_link; }
+a:visited                   { color: $body_visited_link; }
+dt                          { font-weight: bold; }
+h1                          { font-size: +140%; font-style: italic;
+                              font-weight: bold; }
+h2                          { font-size: +125%; font-style: italic;
+                              font-weight: bold; }
+h3                          { font-size: +110%; font-style: italic;
+                              font-weight: normal; }
+code                        { font-size: 100%; }
+/* N.B.: class, not pseudoclass */
+a.link                      { font-family: monospace; }
+ 
+/* Page Header & Footer
+ *   - The standard page header consists of a navigation bar (with
+ *     pointers to standard pages such as 'home' and 'trees'); a
+ *     breadcrumbs list, which can be used to navigate to containing
+ *     classes or modules; options links, to show/hide private
+ *     variables and to show/hide frames; and a page title (using
+ *     <h1>).  The page title may be followed by a link to the
+ *     corresponding source code (using 'span.codelink').
+ *   - The footer consists of a navigation bar, a timestamp, and a
+ *     pointer to epydoc's homepage.
+ */ 
+h1.epydoc                   { margin: 0; font-size: +140%; font-weight: bold; }
+h2.epydoc                   { font-size: +130%; font-weight: bold; }
+h3.epydoc                   { font-size: +115%; font-weight: bold;
+                              margin-top: 0.2em; }
+td h3.epydoc                { font-size: +115%; font-weight: bold;
+                              margin-bottom: 0; }
+table.navbar                { background: $navbar_bg; color: $navbar_fg;
+                              border: $navbar_border; }
+table.navbar table          { color: $navbar_fg; }
+th.navbar-select            { background: $navbar_select_bg;
+                              color: $navbar_select_fg; } 
+table.navbar a              { text-decoration: none; }  
+table.navbar a:link         { color: $navbar_link; }
+table.navbar a:visited      { color: $navbar_visited_link; }
+span.breadcrumbs            { font-size: 85%; font-weight: bold; }
+span.options                { font-size: 70%; }
+span.codelink               { font-size: 85%; }
+td.footer                   { font-size: 85%; }
+
+/* Table Headers
+ *   - Each summary table and details section begins with a 'header'
+ *     row.  This row contains a section title (marked by
+ *     'span.table-header') as well as a show/hide private link
+ *     (marked by 'span.options', defined above).
+ *   - Summary tables that contain user-defined groups mark those
+ *     groups using 'group header' rows.
+ */
+td.table-header             { background: $table_hdr_bg; color: $table_hdr_fg;
+                              border: $table_border; }
+td.table-header table       { color: $table_hdr_fg; }
+td.table-header table a:link      { color: $table_hdr_link; }
+td.table-header table a:visited   { color: $table_hdr_visited_link; }
+span.table-header           { font-size: 120%; font-weight: bold; }
+th.group-header             { background: $group_hdr_bg; color: $group_hdr_fg;
+                              text-align: left; font-style: italic; 
+                              font-size: 115%; 
+                              border: $table_border; }
+
+/* Summary Tables (functions, variables, etc)
+ *   - Each object is described by a single row of the table with
+ *     two cells.  The left cell gives the object's type, and is
+ *     marked with 'code.summary-type'.  The right cell gives the
+ *     object's name and a summary description.
+ *   - CSS styles for the table's header and group headers are
+ *     defined above, under 'Table Headers'
+ */
+table.summary               { border-collapse: collapse;
+                              background: $table_bg; color: $table_fg;
+                              border: $table_border;
+                              margin-bottom: 0.5em; }
+td.summary                  { border: $table_border; }
+code.summary-type           { font-size: 85%; }
+table.summary a:link        { color: $table_link; }
+table.summary a:visited     { color: $table_visited_link; }
+
+
+/* Details Tables (functions, variables, etc)
+ *   - Each object is described in its own div.
+ *   - A single-row summary table w/ table-header is used as
+ *     a header for each details section (CSS style for table-header
+ *     is defined above, under 'Table Headers').
+ */
+table.details               { border-collapse: collapse;
+                              background: $table_bg; color: $table_fg;
+                              border: $table_border;
+                              margin: .2em 0 0 0; }
+table.details table         { color: $table_fg; }
+table.details a:link        { color: $table_link; }
+table.details a:visited     { color: $table_visited_link; }
+
+/* Fields */
+dl.fields                   { margin-left: 2em; margin-top: 1em;
+                              margin-bottom: 1em; }
+dl.fields dd ul             { margin-left: 0em; padding-left: 0em; }
+dl.fields dd ul li ul       { margin-left: 2em; padding-left: 0em; }
+div.fields                  { margin-left: 2em; }
+div.fields p                { margin-bottom: 0.5em; }
+
+/* Index tables (identifier index, term index, etc)
+ *   - link-index is used for indices containing lists of links
+ *     (namely, the identifier index & term index).
+ *   - index-where is used in link indices for the text indicating
+ *     the container/source for each link.
+ *   - metadata-index is used for indices containing metadata
+ *     extracted from fields (namely, the bug index & todo index).
+ */
+table.link-index            { border-collapse: collapse;
+                              background: $table_bg; color: $table_fg;
+                              border: $table_border; }
+td.link-index               { border-width: 0px; }
+table.link-index a:link     { color: $table_link; }
+table.link-index a:visited  { color: $table_visited_link; }
+span.index-where            { font-size: 70%; }
+table.metadata-index        { border-collapse: collapse;
+                              background: $table_bg; color: $table_fg;
+                              border: $table_border; 
+                              margin: .2em 0 0 0; }
+td.metadata-index           { border-width: 1px; border-style: solid; }
+table.metadata-index a:link { color: $table_link; }
+table.metadata-index a:visited  { color: $table_visited_link; }
+
+/* Function signatures
+ *   - sig* is used for the signature in the details section.
+ *   - .summary-sig* is used for the signature in the summary 
+ *     table, and when listing property accessor functions.
+ * */
+.sig-name                   { color: $sig_name; }
+.sig-arg                    { color: $sig_arg; }
+.sig-default                { color: $sig_default; }
+.summary-sig                { font-family: monospace; }
+.summary-sig-name           { color: $summary_sig_name; font-weight: bold; }
+table.summary a.summary-sig-name:link
+                            { color: $summary_sig_name; font-weight: bold; }
+table.summary a.summary-sig-name:visited
+                            { color: $summary_sig_name; font-weight: bold; }
+.summary-sig-arg            { color: $summary_sig_arg; }
+.summary-sig-default        { color: $summary_sig_default; }
+
+/* Subclass list
+ */
+ul.subclass-list { display: inline; }
+ul.subclass-list li { display: inline; }
+
+/* To render variables, classes etc. like functions */
+table.summary .summary-name { color: $summary_sig_name; font-weight: bold;
+                              font-family: monospace; }
+table.summary
+     a.summary-name:link    { color: $summary_sig_name; font-weight: bold;
+                              font-family: monospace; }
+table.summary
+    a.summary-name:visited  { color: $summary_sig_name; font-weight: bold;
+                              font-family: monospace; }
+
+/* Variable values
+ *   - In the 'variable details' sections, each varaible's value is
+ *     listed in a 'pre.variable' box.  The width of this box is
+ *     restricted to 80 chars; if the value's repr is longer than
+ *     this it will be wrapped, using a backslash marked with
+ *     class 'variable-linewrap'.  If the value's repr is longer
+ *     than 3 lines, the rest will be ellided; and an ellipsis
+ *     marker ('...' marked with 'variable-ellipsis') will be used.
+ *   - If the value is a string, its quote marks will be marked
+ *     with 'variable-quote'.
+ *   - If the variable is a regexp, it is syntax-highlighted using
+ *     the re* CSS classes.
+ */
+pre.variable                { padding: .5em; margin: 0;
+                              background: $variable_bg; color: $variable_fg;
+                              border: $variable_border; }
+.variable-linewrap          { color: $variable_linewrap; font-weight: bold; }
+.variable-ellipsis          { color: $variable_ellipsis; font-weight: bold; }
+.variable-quote             { color: $variable_quote; font-weight: bold; }
+.variable-group             { color: $variable_group; font-weight: bold; }
+.variable-op                { color: $variable_op; font-weight: bold; }
+.variable-string            { color: $variable_string; }
+.variable-unknown           { color: $variable_unknown; font-weight: bold; }
+.re                         { color: $re; }
+.re-char                    { color: $re_char; }
+.re-op                      { color: $re_op; }
+.re-group                   { color: $re_group; }
+.re-ref                     { color: $re_ref; }
+
+/* Base tree
+ *   - Used by class pages to display the base class hierarchy.
+ */
+pre.base-tree               { font-size: 80%; margin: 0; }
+
+/* Frames-based table of contents headers
+ *   - Consists of two frames: one for selecting modules; and
+ *     the other listing the contents of the selected module.
+ *   - h1.toc is used for each frame's heading
+ *   - h2.toc is used for subheadings within each frame.
+ */
+h1.toc                      { text-align: center; font-size: 105%;
+                              margin: 0; font-weight: bold;
+                              padding: 0; }
+h2.toc                      { font-size: 100%; font-weight: bold; 
+                              margin: 0.5em 0 0 -0.3em; }
+
+/* Syntax Highlighting for Source Code
+ *   - doctest examples are displayed in a 'pre.py-doctest' block.
+ *     If the example is in a details table entry, then it will use
+ *     the colors specified by the 'table pre.py-doctest' line.
+ *   - Source code listings are displayed in a 'pre.py-src' block.
+ *     Each line is marked with 'span.py-line' (used to draw a line
+ *     down the left margin, separating the code from the line
+ *     numbers).  Line numbers are displayed with 'span.py-lineno'.
+ *     The expand/collapse block toggle button is displayed with
+ *     'a.py-toggle' (Note: the CSS style for 'a.py-toggle' should not
+ *     modify the font size of the text.)
+ *   - If a source code page is opened with an anchor, then the
+ *     corresponding code block will be highlighted.  The code
+ *     block's header is highlighted with 'py-highlight-hdr'; and
+ *     the code block's body is highlighted with 'py-highlight'.
+ *   - The remaining py-* classes are used to perform syntax
+ *     highlighting (py-string for string literals, py-name for names,
+ *     etc.)
+ */
+pre.py-doctest              { padding: .5em; margin: 1em;
+                              background: $doctest_bg; color: $doctest_fg;
+                              border: $doctest_border; }
+table pre.py-doctest        { background: $doctest_in_table_bg;
+                              color: $doctest_in_table_fg; }
+pre.py-src                  { border: $pysrc_border; 
+                              background: $pysrc_bg; color: $pysrc_fg; }
+.py-line                    { border-left: $pysrc_sep_border; 
+                              margin-left: .2em; padding-left: .4em; }
+.py-lineno                  { font-style: italic; font-size: 90%;
+                              padding-left: .5em; }
+a.py-toggle                 { text-decoration: none; }
+div.py-highlight-hdr        { border-top: $pysrc_border;
+                              border-bottom: $pysrc_border;
+                              background: $pysrc_highlight_hdr_bg; }
+div.py-highlight            { border-bottom: $pysrc_border;
+                              background: $pysrc_highlight_bg; }
+.py-prompt                  { color: $py_prompt; font-weight: bold;}
+.py-more                    { color: $py_more; font-weight: bold;}
+.py-string                  { color: $py_string; }
+.py-comment                 { color: $py_comment; }
+.py-keyword                 { color: $py_keyword; }
+.py-output                  { color: $py_output; }
+.py-name                    { color: $py_name; }
+.py-name:link               { color: $py_name !important; }
+.py-name:visited            { color: $py_name !important; }
+.py-number                  { color: $py_number; }
+.py-defname                 { color: $py_def_name; font-weight: bold; }
+.py-def-name                { color: $py_def_name; font-weight: bold; }
+.py-base-class              { color: $py_base_class; }
+.py-param                   { color: $py_param; }
+.py-docstring               { color: $py_docstring; }
+.py-decorator               { color: $py_decorator; }
+/* Use this if you don't want links to names underlined: */
+/*a.py-name                   { text-decoration: none; }*/
+
+/* Graphs & Diagrams
+ *   - These CSS styles are used for graphs & diagrams generated using
+ *     Graphviz dot.  'img.graph-without-title' is used for bare
+ *     diagrams (to remove the border created by making the image
+ *     clickable).
+ */
+img.graph-without-title     { border: none; }
+img.graph-with-title        { border: $graph_border; }
+span.graph-title            { font-weight: bold; }
+span.graph-caption          { }
+
+/* General-purpose classes
+ *   - 'p.indent-wrapped-lines' defines a paragraph whose first line
+ *     is not indented, but whose subsequent lines are.
+ *   - The 'nomargin-top' class is used to remove the top margin (e.g.
+ *     from lists).  The 'nomargin' class is used to remove both the
+ *     top and bottom margin (but not the left or right margin --
+ *     for lists, that would cause the bullets to disappear.)
+ */
+p.indent-wrapped-lines      { padding: 0 0 0 7em; text-indent: -7em; 
+                              margin: 0; }
+.nomargin-top               { margin-top: 0; }
+.nomargin                   { margin-top: 0; margin-bottom: 0; }
+
+/* HTML Log */
+div.log-block               { padding: 0; margin: .5em 0 .5em 0;
+                              background: $log_bg; color: $log_fg;
+                              border: $log_border; }
+div.log-error               { padding: .1em .3em .1em .3em; margin: 4px;
+                              background: $log_error_bg; color: $log_error_fg;
+                              border: $log_error_border; }
+div.log-warning             { padding: .1em .3em .1em .3em; margin: 4px;
+                              background: $log_warn_bg; color: $log_warn_fg;
+                              border: $log_warn_border; }
+div.log-info               { padding: .1em .3em .1em .3em; margin: 4px;
+                              background: $log_info_bg; color: $log_info_fg;
+                              border: $log_info_border; }
+h2.log-hdr                  { background: $log_hdr_bg; color: $log_hdr_fg;
+                              margin: 0; padding: 0em 0.5em 0em 0.5em;
+                              border-bottom: $log_border; font-size: 110%; }
+p.log                       { font-weight: bold; margin: .5em 0 .5em 0; }
+tr.opt-changed              { color: $opt_changed_fg; font-weight: bold; }
+tr.opt-default              { color: $opt_default_fg; }
+pre.log                     { margin: 0; padding: 0; padding-left: 1em; }
+""" 
+
+############################################################
+## Derived stylesheets
+############################################################
+# Use some simple manipulations to produce a wide variety of color
+# schemes.  In particular, use th _COLOR_RE regular expression to
+# search for colors, and to transform them in various ways.
+
+_COLOR_RE = re.compile(r'#(..)(..)(..)')
+
+def _set_colors(template, *dicts):
+    colors = dicts[0].copy()
+    for d in dicts[1:]: colors.update(d)
+    return re.sub(r'\$(\w+)', lambda m:colors[m.group(1)], template)
+    
+def _rv(match):
+    """
+    Given a regexp match for a color, return the reverse-video version
+    of that color.
+
+    @param match: A regular expression match.
+    @type match: C{Match}
+    @return: The reverse-video color.
+    @rtype: C{string}
+    """
+    rgb = [int(grp, 16) for grp in match.groups()]
+    return '#' + ''.join(['%02x' % (255-c) for c in rgb])
+
+def _darken_darks(match):
+    rgb = [int(grp, 16) for grp in match.groups()]
+    return '#' + ''.join(['%02x' % (((c/255.)**2) * 255) for c in rgb])
+
+_WHITE_COLORS = dict(
+    # Defaults:
+    body_bg                 =  '#ffffff',
+    body_fg                 =  '#000000',
+    body_link               =  '#0000ff',
+    body_visited_link       =  '#204080',
+    # Navigation bar:
+    navbar_bg               =  '#a0c0ff',
+    navbar_fg               =  '#000000',
+    navbar_border           =  '2px groove #c0d0d0',
+    navbar_select_bg        =  '#70b0ff',
+    navbar_select_fg        =  '#000000',
+    navbar_link             =  '#0000ff',
+    navbar_visited_link     =  '#204080',
+    # Tables (summary tables, details tables, indices):
+    table_bg                =  '#e8f0f8',
+    table_fg                =  '#000000',
+    table_link              =  '#0000ff',
+    table_visited_link      =  '#204080',
+    table_border            =  '1px solid #608090',
+    table_hdr_bg            =  '#70b0ff',
+    table_hdr_fg            =  '#000000', 
+    table_hdr_link          =  '#0000ff',
+    table_hdr_visited_link  =  '#204080',
+    group_hdr_bg            =  '#c0e0f8',
+    group_hdr_fg            =  '#000000',
+    # Function signatures:
+    sig_name                =  '#006080',
+    sig_arg                 =  '#008060',
+    sig_default             =  '#602000',
+    summary_sig_name        =  '#006080',
+    summary_sig_arg         =  '#006040',
+    summary_sig_default     =  '#501800',
+    # Variable values:
+    variable_bg             =  '#dce4ec',
+    variable_fg             =  '#000000',
+    variable_border         =  '1px solid #708890',
+    variable_linewrap       =  '#604000',
+    variable_ellipsis       =  '#604000',
+    variable_quote          =  '#604000',
+    variable_group          =  '#008000',
+    variable_string         =  '#006030',
+    variable_op             =  '#604000',
+    variable_unknown        =  '#a00000',
+    re                      =  '#000000',
+    re_char                 =  '#006030',
+    re_op                   =  '#600000',
+    re_group                =  '#003060',
+    re_ref                  =  '#404040',
+    # Python source code:
+    doctest_bg              =  '#e8f0f8',
+    doctest_fg              =  '#000000',
+    doctest_border          =  '1px solid #708890',
+    doctest_in_table_bg     =  '#dce4ec',
+    doctest_in_table_fg     =  '#000000',
+    pysrc_border            =  '2px solid #000000',
+    pysrc_sep_border        =  '2px solid #000000',
+    pysrc_bg                =  '#f0f0f0',
+    pysrc_fg                =  '#000000',
+    pysrc_highlight_hdr_bg  =  '#d8e8e8',
+    pysrc_highlight_bg      =  '#d0e0e0',
+    py_prompt               =  '#005050',
+    py_more                 =  '#005050',
+    py_string               =  '#006030',
+    py_comment              =  '#003060',
+    py_keyword              =  '#600000',
+    py_output               =  '#404040',
+    py_name                 =  '#000050',
+    py_number               =  '#005000',
+    py_def_name             =  '#000060',
+    py_base_class           =  '#000060',
+    py_param                =  '#000060',
+    py_docstring            =  '#006030',
+    py_decorator            =  '#804020',
+    # Graphs
+    graph_border            =  '1px solid #000000',
+    # Log block
+    log_bg                  =  '#e8f0f8',
+    log_fg                  =  '#000000',
+    log_border              =  '1px solid #000000',
+    log_hdr_bg              =  '#70b0ff',
+    log_hdr_fg              =  '#000000',
+    log_error_bg            =  '#ffb0b0',
+    log_error_fg            =  '#000000',
+    log_error_border        =  '1px solid #000000',
+    log_warn_bg             =  '#ffffb0',
+    log_warn_fg             =  '#000000',
+    log_warn_border         =  '1px solid #000000',
+    log_info_bg             =  '#b0ffb0',
+    log_info_fg             =  '#000000',
+    log_info_border         =  '1px solid #000000',
+    opt_changed_fg          =  '#000000',
+    opt_default_fg          =  '#606060',
+    )
+
+_BLUE_COLORS = _WHITE_COLORS.copy()
+_BLUE_COLORS.update(dict(
+    # Body: white text on a dark blue background
+    body_bg                 =  '#000070',
+    body_fg                 =  '#ffffff',
+    body_link               =  '#ffffff',
+    body_visited_link       =  '#d0d0ff',
+    # Tables: cyan headers, black on white bodies
+    table_bg                =   '#ffffff',
+    table_fg                =  '#000000',
+    table_hdr_bg            =  '#70b0ff',
+    table_hdr_fg            =  '#000000',
+    table_hdr_link          =  '#000000',
+    table_hdr_visited_link  =  '#000000',
+    table_border            =  '1px solid #000000',
+    # Navigation bar: blue w/ cyan selection
+    navbar_bg               =  '#0000ff',
+    navbar_fg               =  '#ffffff',
+    navbar_link             =  '#ffffff',
+    navbar_visited_link     =  '#ffffff',
+    navbar_select_bg        =   '#70b0ff',
+    navbar_select_fg        =   '#000000',
+    navbar_border           =  '1px solid #70b0ff',
+    # Variable values & doctest blocks: cyan
+    variable_bg             =   '#c0e0f8',
+    variable_fg             =  '#000000',
+    doctest_bg              =   '#c0e0f8',
+    doctest_fg              =  '#000000',
+    doctest_in_table_bg     =   '#c0e0f8',
+    doctest_in_table_fg     =  '#000000',
+    ))
+
+_WHITE = _set_colors(TEMPLATE, _WHITE_COLORS)
+_BLUE = _set_colors(TEMPLATE, _BLUE_COLORS)
+
+    # Black-on-green
+_GREEN = _COLOR_RE.sub(_darken_darks, _COLOR_RE.sub(r'#\1\3\2', _BLUE))
+
+# White-on-black, with blue highlights.
+_BLACK = _COLOR_RE.sub(r'#\3\2\1', _COLOR_RE.sub(_rv, _WHITE))
+
+# Grayscale
+_GRAYSCALE = _COLOR_RE.sub(r'#\2\2\2', _WHITE)
+
+############################################################
+## Stylesheet table
+############################################################
+
+STYLESHEETS = {
+    'white': (_WHITE, "Black on white, with blue highlights"),
+    'blue': (_BLUE, "Black on steel blue"),
+    'green': (_GREEN, "Black on green"),
+    'black': (_BLACK, "White on black, with blue highlights"),
+    'grayscale': (_GRAYSCALE, "Grayscale black on white"),
+    'default': (_WHITE, "Default stylesheet (=white)"),
+#    'none': (_LAYOUT, "A base stylesheet (no color modifications)"),
+    }
diff --git a/epydoc/docwriter/html_help.py b/epydoc/docwriter/html_help.py
new file mode 100644
index 0000000..da24270
--- /dev/null
+++ b/epydoc/docwriter/html_help.py
@@ -0,0 +1,190 @@
+#
+# epydoc.css: default help page
+# Edward Loper
+#
+# Created [01/30/01 05:18 PM]
+# $Id: html_help.py 1239 2006-07-05 11:29:50Z edloper $
+#
+
+"""
+Default help file for the HTML outputter (L{epydoc.docwriter.html}).
+
+ at type HTML_HELP: C{string}
+ at var HTML_HELP: The contents of the HTML body for the default
+help page.
+"""
+__docformat__ = 'epytext en'
+
+# Expects: {'this_project': name}
+HTML_HELP = '''
+<h1 class="epydoc"> API Documentation </h1>
+
+<p> This document contains the API (Application Programming Interface)
+documentation for %(this_project)s.  Documentation for the Python
+objects defined by the project is divided into separate pages for each
+package, module, and class.  The API documentation also includes two
+pages containing information about the project as a whole: a trees
+page, and an index page.  </p>
+
+<h2> Object Documentation </h2>
+
+  <p>Each <strong>Package Documentation</strong> page contains: </p>
+  <ul>
+    <li> A description of the package. </li>
+    <li> A list of the modules and sub-packages contained by the
+    package.  </li>
+    <li> A summary of the classes defined by the package. </li>
+    <li> A summary of the functions defined by the package. </li>
+    <li> A summary of the variables defined by the package. </li>
+    <li> A detailed description of each function defined by the
+    package. </li>
+    <li> A detailed description of each variable defined by the
+    package. </li>
+  </ul>
+  
+  <p>Each <strong>Module Documentation</strong> page contains:</p>
+  <ul>
+    <li> A description of the module. </li>
+    <li> A summary of the classes defined by the module. </li>
+    <li> A summary of the functions defined by the module. </li>
+    <li> A summary of the variables defined by the module. </li>
+    <li> A detailed description of each function defined by the
+    module. </li>
+    <li> A detailed description of each variable defined by the
+    module. </li>
+  </ul>
+  
+  <p>Each <strong>Class Documentation</strong> page contains: </p>
+  <ul>
+    <li> A class inheritance diagram. </li>
+    <li> A list of known subclasses. </li>
+    <li> A description of the class. </li>
+    <li> A summary of the methods defined by the class. </li>
+    <li> A summary of the instance variables defined by the class. </li>
+    <li> A summary of the class (static) variables defined by the
+    class. </li> 
+    <li> A detailed description of each method defined by the
+    class. </li>
+    <li> A detailed description of each instance variable defined by the
+    class. </li> 
+    <li> A detailed description of each class (static) variable defined
+    by the class. </li> 
+  </ul>
+
+<h2> Project Documentation </h2>
+
+  <p> The <strong>Trees</strong> page contains the module and class hierarchies: </p>
+  <ul>
+    <li> The <em>module hierarchy</em> lists every package and module, with
+    modules grouped into packages.  At the top level, and within each
+    package, modules and sub-packages are listed alphabetically. </li>
+    <li> The <em>class hierarchy</em> lists every class, grouped by base
+    class.  If a class has more than one base class, then it will be
+    listed under each base class.  At the top level, and under each base
+    class, classes are listed alphabetically. </li>
+  </ul>
+  
+  <p> The <strong>Index</strong> page contains indices of terms and
+  identifiers: </p>
+  <ul>
+    <li> The <em>term index</em> lists every term indexed by any object\'s
+    documentation.  For each term, the index provides links to each
+    place where the term is indexed. </li>
+    <li> The <em>identifier index</em> lists the (short) name of every package,
+    module, class, method, function, variable, and parameter.  For each
+    identifier, the index provides a short description, and a link to
+    its documentation. </li>
+  </ul>
+
+<h2> The Table of Contents </h2>
+
+<p> The table of contents occupies the two frames on the left side of
+the window.  The upper-left frame displays the <em>project
+contents</em>, and the lower-left frame displays the <em>module
+contents</em>: </p>
+
+<table class="help summary" border="1" cellspacing="0" cellpadding="3">
+  <tr style="height: 30%%">
+    <td align="center" style="font-size: small">
+       Project<br />Contents<hr />...</td>
+    <td align="center" style="font-size: small" rowspan="2" width="70%%">
+      API<br />Documentation<br />Frame<br /><br /><br />
+    </td>
+  </tr>
+  <tr>
+    <td align="center" style="font-size: small">
+      Module<br />Contents<hr /> <br />...<br /> 
+    </td>
+  </tr>
+</table><br />
+
+<p> The <strong>project contents frame</strong> contains a list of all packages
+and modules that are defined by the project.  Clicking on an entry
+will display its contents in the module contents frame.  Clicking on a
+special entry, labeled "Everything," will display the contents of
+the entire project. </p>
+
+<p> The <strong>module contents frame</strong> contains a list of every
+submodule, class, type, exception, function, and variable defined by a
+module or package.  Clicking on an entry will display its
+documentation in the API documentation frame.  Clicking on the name of
+the module, at the top of the frame, will display the documentation
+for the module itself. </p>
+
+<p> The "<strong>frames</strong>" and "<strong>no frames</strong>" buttons below the top
+navigation bar can be used to control whether the table of contents is
+displayed or not. </p>
+
+<h2> The Navigation Bar </h2>
+
+<p> A navigation bar is located at the top and bottom of every page.
+It indicates what type of page you are currently viewing, and allows
+you to go to related pages.  The following table describes the labels
+on the navigation bar.  Note that not some labels (such as
+[Parent]) are not displayed on all pages. </p>
+
+<table class="summary" border="1" cellspacing="0" cellpadding="3" width="100%%">
+<tr class="summary">
+  <th>Label</th>
+  <th>Highlighted when...</th>
+  <th>Links to...</th>
+</tr>
+  <tr><td valign="top"><strong>[Parent]</strong></td>
+      <td valign="top"><em>(never highlighted)</em></td>
+      <td valign="top"> the parent of the current package </td></tr>
+  <tr><td valign="top"><strong>[Package]</strong></td>
+      <td valign="top">viewing a package</td>
+      <td valign="top">the package containing the current object
+      </td></tr>
+  <tr><td valign="top"><strong>[Module]</strong></td>
+      <td valign="top">viewing a module</td>
+      <td valign="top">the module containing the current object
+      </td></tr> 
+  <tr><td valign="top"><strong>[Class]</strong></td>
+      <td valign="top">viewing a class </td>
+      <td valign="top">the class containing the current object</td></tr>
+  <tr><td valign="top"><strong>[Trees]</strong></td>
+      <td valign="top">viewing the trees page</td>
+      <td valign="top"> the trees page </td></tr>
+  <tr><td valign="top"><strong>[Index]</strong></td>
+      <td valign="top">viewing the index page</td>
+      <td valign="top"> the index page </td></tr>
+  <tr><td valign="top"><strong>[Help]</strong></td>
+      <td valign="top">viewing the help page</td>
+      <td valign="top"> the help page </td></tr>
+</table>
+
+<p> The "<strong>show private</strong>" and "<strong>hide private</strong>" buttons below
+the top navigation bar can be used to control whether documentation
+for private objects is displayed.  Private objects are usually defined
+as objects whose (short) names begin with a single underscore, but do
+not end with an underscore.  For example, "<code>_x</code>",
+"<code>__pprint</code>", and "<code>epydoc.epytext._tokenize</code>"
+are private objects; but "<code>re.sub</code>",
+"<code>__init__</code>", and "<code>type_</code>" are not.  However,
+if a module defines the "<code>__all__</code>" variable, then its
+contents are used to decide which objects are private. </p>
+
+<p> A timestamp below the bottom navigation bar indicates when each
+page was last updated. </p>
+'''
diff --git a/epydoc/docwriter/latex.py b/epydoc/docwriter/latex.py
new file mode 100644
index 0000000..18a88cf
--- /dev/null
+++ b/epydoc/docwriter/latex.py
@@ -0,0 +1,1187 @@
+#
+# epydoc.py: epydoc LaTeX output generator
+# Edward Loper
+#
+# Created [01/30/01 05:18 PM]
+# $Id: latex.py 1621 2007-09-23 18:54:23Z edloper $
+#
+
+"""
+The LaTeX output generator for epydoc.  The main interface provided by
+this module is the L{LatexWriter} class.
+
+ at todo: Inheritance=listed
+"""
+__docformat__ = 'epytext en'
+
+import os.path, sys, time, re, textwrap, codecs
+
+from epydoc.apidoc import *
+from epydoc.compat import *
+import epydoc
+from epydoc import log
+from epydoc import markup
+from epydoc.util import plaintext_to_latex
+import epydoc.markup
+
+class LatexWriter:
+    PREAMBLE = [
+        "\\documentclass{article}",
+        "\\usepackage{alltt, parskip, fancyhdr, boxedminipage}",
+        "\\usepackage{makeidx, multirow, longtable, tocbibind, amssymb}",
+        "\\usepackage{fullpage}",
+        "\\usepackage[usenames]{color}",
+        # Fix the heading position -- without this, the headings generated
+        # by the fancyheadings package sometimes overlap the text.
+        "\\setlength{\\headheight}{16pt}",
+        "\\setlength{\\headsep}{24pt}",
+        "\\setlength{\\topmargin}{-\\headsep}",
+        # By default, do not indent paragraphs.
+        "\\setlength{\\parindent}{0ex}",
+        "\\setlength{\\parskip}{2ex}",
+        # Double the standard size boxedminipage outlines.
+        "\\setlength{\\fboxrule}{2\\fboxrule}",
+        # Create a 'base class' length named BCL for use in base trees.
+        "\\newlength{\\BCL} % base class length, for base trees.",
+        # Display the section & subsection names in a header.
+        "\\pagestyle{fancy}",
+        "\\renewcommand{\\sectionmark}[1]{\\markboth{#1}{}}",
+        "\\renewcommand{\\subsectionmark}[1]{\\markright{#1}}",
+        # Colorization for python source code
+        "\\definecolor{py at keywordcolour}{rgb}{1,0.45882,0}",
+        "\\definecolor{py at stringcolour}{rgb}{0,0.666666,0}",
+        "\\definecolor{py at commentcolour}{rgb}{1,0,0}",
+        "\\definecolor{py at ps1colour}{rgb}{0.60784,0,0}",
+        "\\definecolor{py at ps2colour}{rgb}{0.60784,0,1}",
+        "\\definecolor{py at inputcolour}{rgb}{0,0,0}",
+        "\\definecolor{py at outputcolour}{rgb}{0,0,1}",
+        "\\definecolor{py at exceptcolour}{rgb}{1,0,0}",
+        "\\definecolor{py at defnamecolour}{rgb}{1,0.5,0.5}",
+        "\\definecolor{py at builtincolour}{rgb}{0.58039,0,0.58039}",
+        "\\definecolor{py at identifiercolour}{rgb}{0,0,0}",
+        "\\definecolor{py at linenumcolour}{rgb}{0.4,0.4,0.4}",
+        "\\definecolor{py at inputcolour}{rgb}{0,0,0}",
+        "% Prompt",
+        "\\newcommand{\\pysrcprompt}[1]{\\textcolor{py at ps1colour}"
+            "{\\small\\textbf{#1}}}",
+        "\\newcommand{\\pysrcmore}[1]{\\textcolor{py at ps2colour}"
+            "{\\small\\textbf{#1}}}",
+        "% Source code",
+        "\\newcommand{\\pysrckeyword}[1]{\\textcolor{py at keywordcolour}"
+            "{\\small\\textbf{#1}}}",
+        "\\newcommand{\\pysrcbuiltin}[1]{\\textcolor{py at builtincolour}"
+            "{\\small\\textbf{#1}}}",
+        "\\newcommand{\\pysrcstring}[1]{\\textcolor{py at stringcolour}"
+            "{\\small\\textbf{#1}}}",
+        "\\newcommand{\\pysrcdefname}[1]{\\textcolor{py at defnamecolour}"
+            "{\\small\\textbf{#1}}}",
+        "\\newcommand{\\pysrcother}[1]{\\small\\textbf{#1}}",
+        "% Comments",
+        "\\newcommand{\\pysrccomment}[1]{\\textcolor{py at commentcolour}"
+            "{\\small\\textbf{#1}}}",
+        "% Output",
+        "\\newcommand{\\pysrcoutput}[1]{\\textcolor{py at outputcolour}"
+            "{\\small\\textbf{#1}}}",
+        "% Exceptions",
+        "\\newcommand{\\pysrcexcept}[1]{\\textcolor{py at exceptcolour}"
+            "{\\small\\textbf{#1}}}",
+        # Size of the function description boxes.
+        "\\newlength{\\funcindent}",
+        "\\newlength{\\funcwidth}",
+        "\\setlength{\\funcindent}{1cm}",
+        "\\setlength{\\funcwidth}{\\textwidth}",
+        "\\addtolength{\\funcwidth}{-2\\funcindent}",
+        # Size of the var description tables.
+        "\\newlength{\\varindent}",
+        "\\newlength{\\varnamewidth}",
+        "\\newlength{\\vardescrwidth}",
+        "\\newlength{\\varwidth}",
+        "\\setlength{\\varindent}{1cm}",
+        "\\setlength{\\varnamewidth}{.3\\textwidth}",
+        "\\setlength{\\varwidth}{\\textwidth}",
+        "\\addtolength{\\varwidth}{-4\\tabcolsep}",
+        "\\addtolength{\\varwidth}{-3\\arrayrulewidth}",
+        "\\addtolength{\\varwidth}{-2\\varindent}",
+        "\\setlength{\\vardescrwidth}{\\varwidth}",
+        "\\addtolength{\\vardescrwidth}{-\\varnamewidth}",
+        # Define new environment for displaying parameter lists.
+        textwrap.dedent("""\
+        \\newenvironment{Ventry}[1]%
+         {\\begin{list}{}{%
+           \\renewcommand{\\makelabel}[1]{\\texttt{##1:}\\hfil}%
+           \\settowidth{\\labelwidth}{\\texttt{#1:}}%
+           \\setlength{\\leftmargin}{\\labelsep}%
+           \\addtolength{\\leftmargin}{\\labelwidth}}}%
+         {\\end{list}}"""),
+        ]
+
+    HRULE = '\\rule{\\textwidth}{0.5\\fboxrule}\n\n'
+
+    SECTIONS = ['\\part{%s}', '\\chapter{%s}', '\\section{%s}',
+                '\\subsection{%s}', '\\subsubsection{%s}',
+                '\\textbf{%s}']
+
+    STAR_SECTIONS = ['\\part*{%s}', '\\chapter*{%s}', '\\section*{%s}',
+                     '\\subsection*{%s}', '\\subsubsection*{%s}',
+                     '\\textbf{%s}']
+
+    def __init__(self, docindex, **kwargs):
+        self.docindex = docindex
+        # Process keyword arguments
+        self._show_private = kwargs.get('private', 0)
+        self._prj_name = kwargs.get('prj_name', None) or 'API Documentation'
+        self._crossref = kwargs.get('crossref', 1)
+        self._index = kwargs.get('index', 1)
+        self._list_classes_separately=kwargs.get('list_classes_separately',0)
+        self._inheritance = kwargs.get('inheritance', 'listed')
+        self._exclude = kwargs.get('exclude', 1)
+        self._top_section = 2
+        self._index_functions = 1
+        self._hyperref = 1
+
+        #: The Python representation of the encoding.
+        #: Update L{latex_encodings} in case of mismatch between it and
+        #: the C{inputenc} LaTeX package.
+        self._encoding = kwargs.get('encoding', 'utf-8')
+
+        self.valdocs = valdocs = sorted(docindex.reachable_valdocs(
+            imports=False, packages=False, bases=False, submodules=False, 
+            subclasses=False, private=self._show_private))
+        self._num_files = self.num_files()
+        # For use with select_variables():
+        if self._show_private: self._public_filter = None
+        else: self._public_filter = True
+
+        self.class_list = [d for d in valdocs if isinstance(d, ClassDoc)]
+        """The list of L{ClassDoc}s for the documented classes."""
+        self.class_set = set(self.class_list)
+        """The set of L{ClassDoc}s for the documented classes."""
+        
+    def write(self, directory=None):
+        """
+        Write the API documentation for the entire project to the
+        given directory.
+
+        @type directory: C{string}
+        @param directory: The directory to which output should be
+            written.  If no directory is specified, output will be
+            written to the current directory.  If the directory does
+            not exist, it will be created.
+        @rtype: C{None}
+        @raise OSError: If C{directory} cannot be created,
+        @raise OSError: If any file cannot be created or written to.
+        """
+        # For progress reporting:
+        self._files_written = 0.
+        
+        # Set the default values for ValueDoc formatted representations.
+        orig_valdoc_defaults = (ValueDoc.SUMMARY_REPR_LINELEN,
+                                ValueDoc.REPR_LINELEN,
+                                ValueDoc.REPR_MAXLINES)
+        ValueDoc.SUMMARY_REPR_LINELEN = 60
+        ValueDoc.REPR_LINELEN = 52
+        ValueDoc.REPR_MAXLINES = 5
+
+        # Create destination directories, if necessary
+        if not directory: directory = os.curdir
+        self._mkdir(directory)
+        self._directory = directory
+        
+        # Write the top-level file.
+        self._write(self.write_topfile, directory, 'api.tex')
+
+        # Write the module & class files.
+        for val_doc in self.valdocs:
+            if isinstance(val_doc, ModuleDoc):
+                filename = '%s-module.tex' % val_doc.canonical_name
+                self._write(self.write_module, directory, filename, val_doc)
+            elif (isinstance(val_doc, ClassDoc) and 
+                  self._list_classes_separately):
+                filename = '%s-class.tex' % val_doc.canonical_name
+                self._write(self.write_class, directory, filename, val_doc)
+
+        # Restore defaults that we changed.
+        (ValueDoc.SUMMARY_REPR_LINELEN, ValueDoc.REPR_LINELEN,
+         ValueDoc.REPR_MAXLINES) = orig_valdoc_defaults
+        
+    def _write(self, write_func, directory, filename, *args):
+        # Display our progress.
+        self._files_written += 1
+        log.progress(self._files_written/self._num_files, filename)
+        
+        path = os.path.join(directory, filename)
+        if self._encoding == 'utf-8':
+            f = codecs.open(path, 'w', 'utf-8')
+            write_func(f.write, *args)
+            f.close()
+        else:
+            result = []
+            write_func(result.append, *args)
+            s = u''.join(result)
+            try:
+                s = s.encode(self._encoding)
+            except UnicodeError:
+                log.error("Output could not be represented with the "
+                          "given encoding (%r).  Unencodable characters "
+                          "will be displayed as '?'.  It is recommended "
+                          "that you use a different output encoding (utf-8, "
+                          "if it's supported by latex on your system)."
+                          % self._encoding)
+                s = s.encode(self._encoding, 'replace')
+            f = open(path, 'w')
+            f.write(s)
+            f.close()
+
+    def num_files(self):
+        """
+        @return: The number of files that this C{LatexFormatter} will
+            generate.
+        @rtype: C{int}
+        """
+        n = 1
+        for doc in self.valdocs:
+            if isinstance(doc, ModuleDoc): n += 1
+            if isinstance(doc, ClassDoc) and self._list_classes_separately:
+                n += 1
+        return n
+        
+    def _mkdir(self, directory):
+        """
+        If the given directory does not exist, then attempt to create it.
+        @rtype: C{None}
+        """
+        if not os.path.isdir(directory):
+            if os.path.exists(directory):
+                raise OSError('%r is not a directory' % directory)
+            os.mkdir(directory)
+            
+    #////////////////////////////////////////////////////////////
+    #{ Main Doc File
+    #////////////////////////////////////////////////////////////
+
+    def write_topfile(self, out):
+        self.write_header(out, 'Include File')
+        self.write_preamble(out)
+        out('\n\\begin{document}\n\n')
+        self.write_start_of(out, 'Header')
+
+        # Write the title.
+        self.write_start_of(out, 'Title')
+        out('\\title{%s}\n' % plaintext_to_latex(self._prj_name, 1))
+        out('\\author{API Documentation}\n')
+        out('\\maketitle\n')
+
+        # Add a table of contents.
+        self.write_start_of(out, 'Table of Contents')
+        out('\\addtolength{\\parskip}{-2ex}\n')
+        out('\\tableofcontents\n')
+        out('\\addtolength{\\parskip}{2ex}\n')
+
+        # Include documentation files.
+        self.write_start_of(out, 'Includes')
+        for val_doc in self.valdocs:
+            if isinstance(val_doc, ModuleDoc):
+                out('\\include{%s-module}\n' % val_doc.canonical_name)
+
+        # If we're listing classes separately, put them after all the
+        # modules.
+        if self._list_classes_separately:
+            for val_doc in self.valdocs:
+                if isinstance(val_doc, ClassDoc):
+                    out('\\include{%s-class}\n' % val_doc.canonical_name)
+
+        # Add the index, if requested.
+        if self._index:
+            self.write_start_of(out, 'Index')
+            out('\\printindex\n\n')
+
+        # Add the footer.
+        self.write_start_of(out, 'Footer')
+        out('\\end{document}\n\n')
+
+    def write_preamble(self, out):
+        out('\n'.join(self.PREAMBLE))
+        out('\n')
+        
+        # Set the encoding.
+        out('\\usepackage[%s]{inputenc}\n' % self.get_latex_encoding())
+
+        # If we're generating hyperrefs, add the appropriate packages.
+        if self._hyperref:
+            out('\\definecolor{UrlColor}{rgb}{0,0.08,0.45}\n')
+            out('\\usepackage[dvips, pagebackref, pdftitle={%s}, '
+                'pdfcreator={epydoc %s}, bookmarks=true, '
+                'bookmarksopen=false, pdfpagemode=UseOutlines, '
+                'colorlinks=true, linkcolor=black, anchorcolor=black, '
+                'citecolor=black, filecolor=black, menucolor=black, '
+                'pagecolor=black, urlcolor=UrlColor]{hyperref}\n' %
+                (self._prj_name or '', epydoc.__version__))
+            
+        # If we're generating an index, add it to the preamble.
+        if self._index:
+            out("\\makeindex\n")
+
+        # If restructuredtext was used, then we need to extend
+        # the prefix to include LatexTranslator.head_prefix.
+        if 'restructuredtext' in epydoc.markup.MARKUP_LANGUAGES_USED:
+            from epydoc.markup import restructuredtext
+            rst_head = restructuredtext.latex_head_prefix()
+            rst_head = ''.join(rst_head).split('\n')
+            for line in rst_head[1:]:
+                m = re.match(r'\\usepackage(\[.*?\])?{(.*?)}', line)
+                if m and m.group(2) in (
+                    'babel', 'hyperref', 'color', 'alltt', 'parskip',
+                    'fancyhdr', 'boxedminipage', 'makeidx',
+                    'multirow', 'longtable', 'tocbind', 'assymb',
+                    'fullpage', 'inputenc'):
+                    pass
+                else:
+                    out(line+'\n')
+
+        
+    #////////////////////////////////////////////////////////////
+    #{ Chapters
+    #////////////////////////////////////////////////////////////
+
+    def write_module(self, out, doc):
+        self.write_header(out, doc)
+        self.write_start_of(out, 'Module Description')
+
+        # Add this module to the index.
+        out('    ' + self.indexterm(doc, 'start'))
+
+        # Add a section marker.
+        out(self.section('%s %s' % (self.doc_kind(doc),
+                                    doc.canonical_name)))
+
+        # Label our current location.
+        out('    \\label{%s}\n' % self.label(doc))
+
+        # Add the module's description.
+        if doc.descr not in (None, UNKNOWN):
+            out(self.docstring_to_latex(doc.descr))
+
+        # Add version, author, warnings, requirements, notes, etc.
+        self.write_standard_fields(out, doc)
+
+        # If it's a package, list the sub-modules.
+        if doc.submodules != UNKNOWN and doc.submodules:
+            self.write_module_list(out, doc)
+
+        # Contents.
+        if self._list_classes_separately:
+            self.write_class_list(out, doc)
+        self.write_func_list(out, 'Functions', doc, 'function')
+        self.write_var_list(out, 'Variables', doc, 'other')
+
+        # Class list.
+        if not self._list_classes_separately:
+            classes = doc.select_variables(imported=False, value_type='class',
+                                           public=self._public_filter)
+            for var_doc in classes:
+                self.write_class(out, var_doc.value)
+
+        # Mark the end of the module (for the index)
+        out('    ' + self.indexterm(doc, 'end'))
+
+    def write_class(self, out, doc):
+        if self._list_classes_separately:
+            self.write_header(out, doc)
+        self.write_start_of(out, 'Class Description')
+
+        # Add this class to the index.
+        out('    ' + self.indexterm(doc, 'start'))
+
+        # Add a section marker.
+        if self._list_classes_separately:
+            seclevel = 0
+            out(self.section('%s %s' % (self.doc_kind(doc),
+                                        doc.canonical_name), seclevel))
+        else:
+            seclevel = 1
+            out(self.section('%s %s' % (self.doc_kind(doc),
+                                        doc.canonical_name[-1]), seclevel))
+
+        # Label our current location.
+        out('    \\label{%s}\n' % self.label(doc))
+
+        # Add our base list.
+        if doc.bases not in (UNKNOWN, None) and len(doc.bases) > 0:
+            out(self.base_tree(doc))
+
+        # The class's known subclasses
+        if doc.subclasses not in (UNKNOWN, None) and len(doc.subclasses) > 0:
+            sc_items = [plaintext_to_latex('%s' % sc.canonical_name)
+                        for sc in doc.subclasses]
+            out(self._descrlist(sc_items, 'Known Subclasses', short=1))
+
+        # The class's description.
+        if doc.descr not in (None, UNKNOWN):
+            out(self.docstring_to_latex(doc.descr))
+
+        # Version, author, warnings, requirements, notes, etc.
+        self.write_standard_fields(out, doc)
+
+        # Contents.
+        self.write_func_list(out, 'Methods', doc, 'method',
+                             seclevel+1)
+        self.write_var_list(out, 'Properties', doc,
+                            'property', seclevel+1)
+        self.write_var_list(out, 'Class Variables', doc, 
+                            'classvariable', seclevel+1)
+        self.write_var_list(out, 'Instance Variables', doc, 
+                            'instancevariable', seclevel+1)
+
+        # Mark the end of the class (for the index)
+        out('    ' + self.indexterm(doc, 'end'))
+
+    #////////////////////////////////////////////////////////////
+    #{ Module hierarchy trees
+    #////////////////////////////////////////////////////////////
+    
+    def write_module_tree(self, out):
+        modules = [doc for doc in self.valdocs
+                   if isinstance(doc, ModuleDoc)]
+        if not modules: return
+        
+        # Write entries for all top-level modules/packages.
+        out('\\begin{itemize}\n')
+        out('\\setlength{\\parskip}{0ex}\n')
+        for doc in modules:
+            if (doc.package in (None, UNKNOWN) or
+                doc.package not in self.valdocs):
+                self.write_module_tree_item(out, doc)
+        return s +'\\end{itemize}\n'
+
+    def write_module_list(self, out, doc):
+        if len(doc.submodules) == 0: return
+        self.write_start_of(out, 'Modules')
+        
+        out(self.section('Modules', 1))
+        out('\\begin{itemize}\n')
+        out('\\setlength{\\parskip}{0ex}\n')
+
+        for group_name in doc.group_names():
+            if not doc.submodule_groups[group_name]: continue
+            if group_name:
+                out('  \\item \\textbf{%s}\n' % group_name)
+                out('  \\begin{itemize}\n')
+            for submodule in doc.submodule_groups[group_name]:
+                self.write_module_tree_item(out, submodule)
+            if group_name:
+                out('  \end{itemize}\n')
+
+        out('\\end{itemize}\n\n')
+
+    def write_module_tree_item(self, out, doc, depth=0):
+        """
+        Helper function for L{write_module_tree} and L{write_module_list}.
+        
+        @rtype: C{string}
+        """
+        out(' '*depth + '\\item \\textbf{')
+        out(plaintext_to_latex(doc.canonical_name[-1]) +'}')
+        if doc.summary not in (None, UNKNOWN):
+            out(': %s\n' % self.docstring_to_latex(doc.summary))
+        if self._crossref:
+            out('\n  \\textit{(Section \\ref{%s}' % self.label(doc))
+            out(', p.~\\pageref{%s})}\n\n' % self.label(doc))
+        if doc.submodules != UNKNOWN and doc.submodules:
+            out(' '*depth + '  \\begin{itemize}\n')
+            out(' '*depth + '\\setlength{\\parskip}{0ex}\n')
+            for submodule in doc.submodules:
+                self.write_module_tree_item(out, submodule, depth+4)
+            out(' '*depth + '  \\end{itemize}\n')
+
+    #////////////////////////////////////////////////////////////
+    #{ Base class trees
+    #////////////////////////////////////////////////////////////
+
+    def base_tree(self, doc, width=None, linespec=None):
+        if width is None:
+            width = self._find_tree_width(doc)+2
+            linespec = []
+            s = ('&'*(width-4)+'\\multicolumn{2}{l}{\\textbf{%s}}\n' %
+                   plaintext_to_latex('%s'%self._base_name(doc)))
+            s += '\\end{tabular}\n\n'
+            top = 1
+        else:
+            s = self._base_tree_line(doc, width, linespec)
+            top = 0
+        
+        if isinstance(doc, ClassDoc):
+            for i in range(len(doc.bases)-1, -1, -1):
+                base = doc.bases[i]
+                spec = (i > 0)
+                s = self.base_tree(base, width, [spec]+linespec) + s
+
+        if top:
+            s = '\\begin{tabular}{%s}\n' % (width*'c') + s
+
+        return s
+
+    def _base_name(self, doc):
+        if doc.canonical_name is None:
+            if doc.parse_repr is not None:
+                return doc.parse_repr
+            else:
+                return '??'
+        else:
+            return '%s' % doc.canonical_name
+
+    def _find_tree_width(self, doc):
+        if not isinstance(doc, ClassDoc): return 2
+        width = 2
+        for base in doc.bases:
+            width = max(width, self._find_tree_width(base)+2)
+        return width
+
+    def _base_tree_line(self, doc, width, linespec):
+        base_name = plaintext_to_latex(self._base_name(doc))
+        
+        # linespec is a list of booleans.
+        s = '%% Line for %s, linespec=%s\n' % (base_name, linespec)
+
+        labelwidth = width-2*len(linespec)-2
+
+        # The base class name.
+        s += ('\\multicolumn{%s}{r}{' % labelwidth)
+        s += '\\settowidth{\\BCL}{%s}' % base_name
+        s += '\\multirow{2}{\\BCL}{%s}}\n' % base_name
+
+        # The vertical bars for other base classes (top half)
+        for vbar in linespec:
+            if vbar: s += '&&\\multicolumn{1}{|c}{}\n'
+            else: s += '&&\n'
+
+        # The horizontal line.
+        s += '  \\\\\\cline{%s-%s}\n' % (labelwidth+1, labelwidth+1)
+
+        # The vertical bar for this base class.
+        s += '  ' + '&'*labelwidth
+        s += '\\multicolumn{1}{c|}{}\n'
+
+        # The vertical bars for other base classes (bottom half)
+        for vbar in linespec:
+            if vbar: s += '&\\multicolumn{1}{|c}{}&\n'
+            else: s += '&&\n'
+        s += '  \\\\\n'
+
+        return s
+        
+    #////////////////////////////////////////////////////////////
+    #{ Class List
+    #////////////////////////////////////////////////////////////
+    
+    def write_class_list(self, out, doc):
+        groups = [(plaintext_to_latex(group_name),
+                   doc.select_variables(group=group_name, imported=False,
+                                        value_type='class',
+                                        public=self._public_filter))
+                  for group_name in doc.group_names()]
+
+        # Discard any empty groups; and return if they're all empty.
+        groups = [(g,vars) for (g,vars) in groups if vars]
+        if not groups: return
+
+        # Write a header.
+        self.write_start_of(out, 'Classes')
+        out(self.section('Classes', 1))
+        out('\\begin{itemize}')
+        out('  \\setlength{\\parskip}{0ex}\n')
+
+        for name, var_docs in groups:
+            if name:
+                out('  \\item \\textbf{%s}\n' % name)
+                out('  \\begin{itemize}\n')
+            # Add the lines for each class
+            for var_doc in var_docs:
+                self.write_class_list_line(out, var_doc)
+            if name:
+                out('  \\end{itemize}\n')
+
+        out('\\end{itemize}\n')
+
+    def write_class_list_line(self, out, var_doc):
+        if var_doc.value in (None, UNKNOWN): return # shouldn't happen
+        doc = var_doc.value
+        out('  ' + '\\item \\textbf{')
+        out(plaintext_to_latex(var_doc.name) + '}')
+        if doc.summary not in (None, UNKNOWN):
+            out(': %s\n' % self.docstring_to_latex(doc.summary))
+        if self._crossref:
+            out(('\n  \\textit{(Section \\ref{%s}' % self.label(doc)))
+            out((', p.~\\pageref{%s})}\n\n' % self.label(doc)))
+        
+    #////////////////////////////////////////////////////////////
+    #{ Function List
+    #////////////////////////////////////////////////////////////
+    _FUNC_GROUP_HEADER = '\n\\large{\\textbf{\\textit{%s}}}\n\n'
+    
+    def write_func_list(self, out, heading, doc, value_type, seclevel=1):
+        # Divide all public variables of the given type into groups.
+        groups = [(plaintext_to_latex(group_name),
+                   doc.select_variables(group=group_name, imported=False,
+                                        value_type=value_type,
+                                        public=self._public_filter))
+                  for group_name in doc.group_names()]
+
+        # Discard any empty groups; and return if they're all empty.
+        groups = [(g,vars) for (g,vars) in groups if vars]
+        if not groups: return
+
+        # Write a header.
+        self.write_start_of(out, heading)
+        out('  '+self.section(heading, seclevel))
+
+        # Write a section for each group.
+        grouped_inh_vars = {}
+        for name, var_docs in groups:
+            self.write_func_group(out, doc, name, var_docs, grouped_inh_vars)
+
+        # Write a section for each inheritance pseudo-group (used if
+        # inheritance=='grouped')
+        if grouped_inh_vars:
+            for base in doc.mro():
+                if base in grouped_inh_vars:
+                    hdr = ('Inherited from %s' %
+                           plaintext_to_latex('%s' % base.canonical_name))
+                    if self._crossref and base in self.class_set:
+                        hdr += ('\\textit{(Section \\ref{%s})}' %
+                                self.label(base))
+                    out(self._FUNC_GROUP_HEADER % (hdr))
+                    for var_doc in grouped_inh_vars[base]:
+                        self.write_func_list_box(out, var_doc)
+
+    def write_func_group(self, out, doc, name, var_docs, grouped_inh_vars):
+        # Split up the var_docs list, according to the way each var
+        # should be displayed:
+        #   - listed_inh_vars -- for listed inherited variables.
+        #   - grouped_inh_vars -- for grouped inherited variables.
+        #   - normal_vars -- for all other variables.
+        listed_inh_vars = {}
+        normal_vars = []
+        for var_doc in var_docs:
+            if var_doc.container != doc:
+                base = var_doc.container
+                if (base not in self.class_set or
+                    self._inheritance == 'listed'):
+                    listed_inh_vars.setdefault(base,[]).append(var_doc)
+                elif self._inheritance == 'grouped':
+                    grouped_inh_vars.setdefault(base,[]).append(var_doc)
+                else:
+                    normal_vars.append(var_doc)
+            else:
+                normal_vars.append(var_doc)
+            
+        # Write a header for the group.
+        if name:
+            out(self._FUNC_GROUP_HEADER % name)
+        # Write an entry for each normal var:
+        for var_doc in normal_vars:
+            self.write_func_list_box(out, var_doc)
+        # Write a subsection for inherited vars:
+        if listed_inh_vars:
+            self.write_func_inheritance_list(out, doc, listed_inh_vars)
+
+    def write_func_inheritance_list(self, out, doc, listed_inh_vars):
+        for base in doc.mro():
+            if base not in listed_inh_vars: continue
+            #if str(base.canonical_name) == 'object': continue
+            var_docs = listed_inh_vars[base]
+            if self._public_filter:
+                var_docs = [v for v in var_docs if v.is_public]
+            if var_docs:
+                hdr = ('Inherited from %s' %
+                       plaintext_to_latex('%s' % base.canonical_name))
+                if self._crossref and base in self.class_set:
+                    hdr += ('\\textit{(Section \\ref{%s})}' %
+                            self.label(base))
+                out(self._FUNC_GROUP_HEADER % hdr)
+                out('\\begin{quote}\n')
+                out('%s\n' % ', '.join(
+                    ['%s()' % plaintext_to_latex(var_doc.name)
+                     for var_doc in var_docs]))
+                out('\\end{quote}\n')
+            
+    def write_func_list_box(self, out, var_doc):
+        func_doc = var_doc.value
+        is_inherited = (var_doc.overrides not in (None, UNKNOWN))
+
+        # nb: this gives the containing section, not a reference
+        # directly to the function.
+        if not is_inherited:
+            out('    \\label{%s}\n' % self.label(func_doc))
+            out('    %s\n' % self.indexterm(func_doc))
+
+        # Start box for this function.
+        out('    \\vspace{0.5ex}\n\n')
+        out('\\hspace{.8\\funcindent}')
+        out('\\begin{boxedminipage}{\\funcwidth}\n\n')
+
+        # Function signature.
+        out('    %s\n\n' % self.function_signature(var_doc))
+
+        if (func_doc.docstring not in (None, UNKNOWN) and
+            func_doc.docstring.strip() != ''):
+            out('    \\vspace{-1.5ex}\n\n')
+            out('    \\rule{\\textwidth}{0.5\\fboxrule}\n')
+        
+        # Description
+        out("\\setlength{\\parskip}{2ex}\n")
+        if func_doc.descr not in (None, UNKNOWN):
+            out(self.docstring_to_latex(func_doc.descr, 4))
+
+        # Parameters
+        out("\\setlength{\\parskip}{1ex}\n")
+        if func_doc.arg_descrs or func_doc.arg_types:
+            # Find the longest name.
+            longest = max([0]+[len(n) for n in func_doc.arg_types])
+            for names, descrs in func_doc.arg_descrs:
+                longest = max([longest]+[len(n) for n in names])
+            # Table header.
+            out(' '*6+'\\textbf{Parameters}\n')
+            out('      \\vspace{-1ex}\n\n')
+            out(' '*6+'\\begin{quote}\n')
+            out('        \\begin{Ventry}{%s}\n\n' % (longest*'x'))
+            # Add params that have @type but not @param info:
+            arg_descrs = list(func_doc.arg_descrs)
+            args = set()
+            for arg_names, arg_descr in arg_descrs:
+                args.update(arg_names)
+            for arg in var_doc.value.arg_types:
+                if arg not in args:
+                    arg_descrs.append( ([arg],None) )
+            # Display params
+            for (arg_names, arg_descr) in arg_descrs:
+                arg_name = plaintext_to_latex(', '.join(arg_names))
+                out('%s\\item[%s]\n\n' % (' '*10, arg_name))
+                if arg_descr:
+                    out(self.docstring_to_latex(arg_descr, 10))
+                for arg_name in arg_names:
+                    arg_typ = func_doc.arg_types.get(arg_name)
+                    if arg_typ is not None:
+                        if len(arg_names) == 1:
+                            lhs = 'type'
+                        else:
+                            lhs = 'type of %s' % arg_name
+                        rhs = self.docstring_to_latex(arg_typ).strip()
+                        out('%s{\\it (%s=%s)}\n\n' % (' '*12, lhs, rhs))
+            out('        \\end{Ventry}\n\n')
+            out(' '*6+'\\end{quote}\n\n')
+                
+        # Returns
+        rdescr = func_doc.return_descr
+        rtype = func_doc.return_type
+        if rdescr not in (None, UNKNOWN) or rtype not in (None, UNKNOWN):
+            out(' '*6+'\\textbf{Return Value}\n')
+            out('    \\vspace{-1ex}\n\n')
+            out(' '*6+'\\begin{quote}\n')
+            if rdescr not in (None, UNKNOWN):
+                out(self.docstring_to_latex(rdescr, 6))
+                if rtype not in (None, UNKNOWN):
+                    out(' '*6+'{\\it (type=%s)}\n\n' %
+                        self.docstring_to_latex(rtype, 6).strip())
+            elif rtype not in (None, UNKNOWN):
+                out(self.docstring_to_latex(rtype, 6))
+            out(' '*6+'\\end{quote}\n\n')
+
+        # Raises
+        if func_doc.exception_descrs not in (None, UNKNOWN, [], ()):
+            out(' '*6+'\\textbf{Raises}\n')
+            out('    \\vspace{-1ex}\n\n')
+            out(' '*6+'\\begin{quote}\n')
+            out('        \\begin{description}\n\n')
+            for name, descr in func_doc.exception_descrs:
+                out(' '*10+'\\item[\\texttt{%s}]\n\n' %
+                    plaintext_to_latex('%s' % name))
+                out(self.docstring_to_latex(descr, 10))
+            out('        \\end{description}\n\n')
+            out(' '*6+'\\end{quote}\n\n')
+
+        ## Overrides
+        if var_doc.overrides not in (None, UNKNOWN):
+            out('      Overrides: ' +
+                plaintext_to_latex('%s'%var_doc.overrides.canonical_name))
+            if (func_doc.docstring in (None, UNKNOWN) and
+                var_doc.overrides.value.docstring not in (None, UNKNOWN)):
+                out(' \textit{(inherited documentation)}')
+            out('\n\n')
+
+        # Add version, author, warnings, requirements, notes, etc.
+        self.write_standard_fields(out, func_doc)
+
+        out('    \\end{boxedminipage}\n\n')
+
+    def function_signature(self, var_doc):
+        func_doc = var_doc.value
+        func_name = var_doc.name
+        
+        # This should never happen, but just in case:
+        if func_doc in (None, UNKNOWN):
+            return ('\\raggedright \\textbf{%s}(...)' %
+                    plaintext_to_latex(func_name))
+            
+        if func_doc.posargs == UNKNOWN:
+            args = ['...']
+        else:
+            args = [self.func_arg(name, default) for (name, default)
+                    in zip(func_doc.posargs, func_doc.posarg_defaults)]
+        if func_doc.vararg:
+            if func_doc.vararg == '...':
+                args.append('\\textit{...}')
+            else:
+                args.append('*\\textit{%s}' %
+                            plaintext_to_latex(func_doc.vararg))
+        if func_doc.kwarg:
+            args.append('**\\textit{%s}' %
+                        plaintext_to_latex(func_doc.kwarg))
+        return ('\\raggedright \\textbf{%s}(%s)' %
+                (plaintext_to_latex(func_name), ', '.join(args)))
+
+    def func_arg(self, name, default):
+        s = '\\textit{%s}' % plaintext_to_latex(self._arg_name(name))
+        if default is not None:
+            s += '={\\tt %s}' % default.summary_pyval_repr().to_latex(None)
+        return s
+    
+    def _arg_name(self, arg):
+        if isinstance(arg, basestring):
+            return arg
+        elif len(arg) == 1:
+            return '(%s,)' % self._arg_name(arg[0])
+        else:
+            return '(%s)' % (', '.join([self._arg_name(a) for a in arg]))
+
+    #////////////////////////////////////////////////////////////
+    #{ Variable List
+    #////////////////////////////////////////////////////////////
+    _VAR_GROUP_HEADER = '\\multicolumn{2}{|l|}{\\textit{%s}}\\\\\n'
+
+    # Also used for the property list.
+    def write_var_list(self, out, heading, doc, value_type, seclevel=1):
+        groups = [(plaintext_to_latex(group_name),
+                   doc.select_variables(group=group_name, imported=False,
+                                        value_type=value_type,
+                                        public=self._public_filter))
+                  for group_name in doc.group_names()]
+
+        # Discard any empty groups; and return if they're all empty.
+        groups = [(g,vars) for (g,vars) in groups if vars]
+        if not groups: return
+
+        # Write a header.
+        self.write_start_of(out, heading)
+        out('  '+self.section(heading, seclevel))
+
+        # [xx] without this, there's a huge gap before the table -- why??
+        out('    \\vspace{-1cm}\n')
+        
+        out('\\hspace{\\varindent}')
+        out('\\begin{longtable}')
+        out('{|p{\\varnamewidth}|')
+        out('p{\\vardescrwidth}|l}\n')
+        out('\\cline{1-2}\n')
+
+        # Set up the headers & footer (this makes the table span
+        # multiple pages in a happy way).
+        out('\\cline{1-2} ')
+        out('\\centering \\textbf{Name} & ')
+        out('\\centering \\textbf{Description}& \\\\\n')
+        out('\\cline{1-2}\n')
+        out('\\endhead')
+        out('\\cline{1-2}')
+        out('\\multicolumn{3}{r}{\\small\\textit{')
+        out('continued on next page}}\\\\')
+        out('\\endfoot')
+        out('\\cline{1-2}\n')
+        out('\\endlastfoot')
+
+        # Write a section for each group.
+        grouped_inh_vars = {}
+        for name, var_docs in groups:
+            self.write_var_group(out, doc, name, var_docs, grouped_inh_vars)
+
+        # Write a section for each inheritance pseudo-group (used if
+        # inheritance=='grouped')
+        if grouped_inh_vars:
+            for base in doc.mro():
+                if base in grouped_inh_vars:
+                    hdr = ('Inherited from %s' %
+                           plaintext_to_latex('%s' % base.canonical_name))
+                    if self._crossref and base in self.class_set:
+                        hdr += (' \\textit{(Section \\ref{%s})}' %
+                                self.label(base))
+                    out(self._VAR_GROUP_HEADER % (hdr))
+                    out('\\cline{1-2}\n')
+                    for var_doc in grouped_inh_vars[base]:
+                        if isinstance(var_doc.value3, PropertyDoc):
+                            self.write_property_list_line(out, var_doc)
+                        else:
+                            self.write_var_list_line(out, var_doc)
+    
+        out('\\end{longtable}\n\n')
+        
+    def write_var_group(self, out, doc, name, var_docs, grouped_inh_vars):
+        # Split up the var_docs list, according to the way each var
+        # should be displayed:
+        #   - listed_inh_vars -- for listed inherited variables.
+        #   - grouped_inh_vars -- for grouped inherited variables.
+        #   - normal_vars -- for all other variables.
+        listed_inh_vars = {}
+        normal_vars = []
+        for var_doc in var_docs:
+            if var_doc.container != doc:
+                base = var_doc.container
+                if (base not in self.class_set or
+                    self._inheritance == 'listed'):
+                    listed_inh_vars.setdefault(base,[]).append(var_doc)
+                elif self._inheritance == 'grouped':
+                    grouped_inh_vars.setdefault(base,[]).append(var_doc)
+                else:
+                    normal_vars.append(var_doc)
+            else:
+                normal_vars.append(var_doc)
+            
+        # Write a header for the group.
+        if name:
+            out(self._VAR_GROUP_HEADER % name)
+            out('\\cline{1-2}\n')
+        # Write an entry for each normal var:
+        for var_doc in normal_vars:
+            if isinstance(var_doc.value, PropertyDoc):
+                self.write_property_list_line(out, var_doc)
+            else:
+                self.write_var_list_line(out, var_doc)
+        # Write a subsection for inherited vars:
+        if listed_inh_vars:
+            self.write_var_inheritance_list(out, doc, listed_inh_vars)
+
+    def write_var_inheritance_list(self, out, doc, listed_inh_vars):
+        for base in doc.mro():
+            if base not in listed_inh_vars: continue
+            #if str(base.canonical_name) == 'object': continue
+            var_docs = listed_inh_vars[base]
+            if self._public_filter:
+                var_docs = [v for v in var_docs if v.is_public]
+            if var_docs:
+                hdr = ('Inherited from %s' %
+                       plaintext_to_latex('%s' % base.canonical_name))
+                if self._crossref and base in self.class_set:
+                    hdr += (' \\textit{(Section \\ref{%s})}' %
+                            self.label(base))
+                out(self._VAR_GROUP_HEADER % hdr)
+                out('\\multicolumn{2}{|p{\\varwidth}|}{'
+                    '\\raggedright %s}\\\\\n' %
+                    ', '.join(['%s' % plaintext_to_latex(var_doc.name)
+                               for var_doc in var_docs]))
+                out('\\cline{1-2}\n')
+
+        
+    def write_var_list_line(self, out, var_doc):
+        out('\\raggedright ')
+        out(plaintext_to_latex(var_doc.name, nbsp=True, breakany=True))
+        out(' & ')
+        has_descr = var_doc.descr not in (None, UNKNOWN)
+        has_type = var_doc.type_descr not in (None, UNKNOWN)
+        has_value = var_doc.value is not UNKNOWN
+        if has_type or has_value:
+            out('\\raggedright ')
+        if has_descr:
+            out(self.docstring_to_latex(var_doc.descr, 10).strip())
+            if has_type or has_value: out('\n\n')
+        if has_value:
+            out('\\textbf{Value:} \n{\\tt %s}' %
+                var_doc.value.summary_pyval_repr().to_latex(None))
+        if has_type:
+            ptype = self.docstring_to_latex(var_doc.type_descr, 12).strip()
+            out('%s{\\it (type=%s)}' % (' '*12, ptype))
+        out('&\\\\\n')
+        out('\\cline{1-2}\n')
+
+    def write_property_list_line(self, out, var_doc):
+        prop_doc = var_doc.value
+        out('\\raggedright ')
+        out(plaintext_to_latex(var_doc.name, nbsp=True, breakany=True))
+        out(' & ')
+        has_descr = prop_doc.descr not in (None, UNKNOWN)
+        has_type = prop_doc.type_descr not in (None, UNKNOWN)
+        if has_descr or has_type:
+            out('\\raggedright ')
+        if has_descr:
+            out(self.docstring_to_latex(prop_doc.descr, 10).strip())
+            if has_type: out('\n\n')
+        if has_type:
+            ptype = self.docstring_to_latex(prop_doc.type_descr, 12).strip()
+            out('%s{\\it (type=%s)}' % (' '*12, ptype))
+        # [xx] List the fget/fset/fdel functions?
+        out('&\\\\\n')
+        out('\\cline{1-2}\n')
+
+    #////////////////////////////////////////////////////////////
+    #{ Standard Fields
+    #////////////////////////////////////////////////////////////
+
+    # Copied from HTMLWriter:
+    def write_standard_fields(self, out, doc):
+        fields = []
+        field_values = {}
+        
+        #if _sort_fields: fields = STANDARD_FIELD_NAMES [XX]
+        
+        for (field, arg, descr) in doc.metadata:
+            if field not in field_values:
+                fields.append(field)
+            if field.takes_arg:
+                subfields = field_values.setdefault(field,{})
+                subfields.setdefault(arg,[]).append(descr)
+            else:
+                field_values.setdefault(field,[]).append(descr)
+
+        for field in fields:
+            if field.takes_arg:
+                for arg, descrs in field_values[field].items():
+                    self.write_standard_field(out, doc, field, descrs, arg)
+                                              
+            else:
+                self.write_standard_field(out, doc, field, field_values[field])
+
+    def write_standard_field(self, out, doc, field, descrs, arg=''):
+        singular = field.singular
+        plural = field.plural
+        if arg:
+            singular += ' (%s)' % arg
+            plural += ' (%s)' % arg
+        out(self._descrlist([self.docstring_to_latex(d) for d in descrs],
+                            field.singular, field.plural, field.short))
+            
+    def _descrlist(self, items, singular, plural=None, short=0):
+        if plural is None: plural = singular
+        if len(items) == 0: return ''
+        if len(items) == 1 and singular is not None:
+            return '\\textbf{%s:} %s\n\n' % (singular, items[0])
+        if short:
+            s = '\\textbf{%s:}\n' % plural
+            items = [item.strip() for item in items]
+            return s + ',\n    '.join(items) + '\n\n'
+        else:
+            s = '\\textbf{%s:}\n' % plural
+            s += '\\begin{quote}\n'
+            s += '  \\begin{itemize}\n\n  \item\n'
+            s += '    \\setlength{\\parskip}{0.6ex}\n'
+            s += '\n\n  \item '.join(items)
+            return s + '\n\n\\end{itemize}\n\n\\end{quote}\n\n'
+
+
+    #////////////////////////////////////////////////////////////
+    #{ Docstring -> LaTeX Conversion
+    #////////////////////////////////////////////////////////////
+
+    # We only need one linker, since we don't use context:
+    class _LatexDocstringLinker(markup.DocstringLinker):
+        def translate_indexterm(self, indexterm):
+            indexstr = re.sub(r'["!|@]', r'"\1', indexterm.to_latex(self))
+            return ('\\index{%s}\\textit{%s}' % (indexstr, indexstr))
+        def translate_identifier_xref(self, identifier, label=None):
+            if label is None: label = markup.plaintext_to_latex(identifier)
+            return '\\texttt{%s}' % label
+    _docstring_linker = _LatexDocstringLinker()
+    
+    def docstring_to_latex(self, docstring, indent=0, breakany=0):
+        if docstring is None: return ''
+        return docstring.to_latex(self._docstring_linker, indent=indent,
+                                  hyperref=self._hyperref)
+    
+    #////////////////////////////////////////////////////////////
+    #{ Helpers
+    #////////////////////////////////////////////////////////////
+
+    def write_header(self, out, where):
+        out('%\n% API Documentation')
+        if self._prj_name: out(' for %s' % self._prj_name)
+        if isinstance(where, APIDoc):
+            out('\n%% %s %s' % (self.doc_kind(where), where.canonical_name))
+        else:
+            out('\n%% %s' % where)
+        out('\n%%\n%% Generated by epydoc %s\n' % epydoc.__version__)
+        out('%% [%s]\n%%\n' % time.asctime(time.localtime(time.time())))
+
+    def write_start_of(self, out, section_name):
+        out('\n' + 75*'%' + '\n')
+        out('%%' + ((71-len(section_name))/2)*' ')
+        out(section_name)
+        out(((72-len(section_name))/2)*' ' + '%%\n')
+        out(75*'%' + '\n\n')
+
+    def section(self, title, depth=0):
+        sec = self.SECTIONS[depth+self._top_section]
+        return (('%s\n\n' % sec) % plaintext_to_latex(title))                
+    
+    def sectionstar(self, title, depth):
+        sec = self.STARSECTIONS[depth+self._top_section]
+        return (('%s\n\n' % sec) % plaintext_to_latex(title))
+
+    def doc_kind(self, doc):
+        if isinstance(doc, ModuleDoc) and doc.is_package == True:
+            return 'Package'
+        elif (isinstance(doc, ModuleDoc) and
+              doc.canonical_name[0].startswith('script')):
+            return 'Script'
+        elif isinstance(doc, ModuleDoc):
+            return 'Module'
+        elif isinstance(doc, ClassDoc):
+            return 'Class'
+        elif isinstance(doc, ClassMethodDoc):
+            return 'Class Method'
+        elif isinstance(doc, StaticMethodDoc):
+            return 'Static Method'
+        elif isinstance(doc, RoutineDoc):
+            if isinstance(self.docindex.container(doc), ClassDoc):
+                return 'Method'
+            else:
+                return 'Function'
+        else:
+            return 'Variable'
+
+    def indexterm(self, doc, pos='only'):
+        """Mark a term or section for inclusion in the index."""
+        if not self._index: return ''
+        if isinstance(doc, RoutineDoc) and not self._index_functions:
+            return ''
+
+        pieces = []
+        while doc is not None:
+            if doc.canonical_name == UNKNOWN:
+                return '' # Give up.
+            pieces.append('%s \\textit{(%s)}' %
+                          (plaintext_to_latex('%s'%doc.canonical_name),
+                           self.doc_kind(doc).lower()))
+            doc = self.docindex.container(doc)
+            if doc == UNKNOWN:
+                return '' # Give up.
+
+        pieces.reverse()
+        if pos == 'only':
+            return '\\index{%s}\n' % '!'.join(pieces)
+        elif pos == 'start':
+            return '\\index{%s|(}\n' % '!'.join(pieces)
+        elif pos == 'end':
+            return '\\index{%s|)}\n' % '!'.join(pieces)
+        else:
+            raise AssertionError('Bad index position %s' % pos)
+        
+    def label(self, doc):
+        return ':'.join(doc.canonical_name)
+
+    #: Map the Python encoding representation into mismatching LaTeX ones.
+    latex_encodings = {
+        'utf-8': 'utf8',
+    }
+
+    def get_latex_encoding(self):
+        """
+        @return: The LaTeX representation of the selected encoding.
+        @rtype: C{str}
+        """
+        enc = self._encoding.lower()
+        return self.latex_encodings.get(enc, enc)
diff --git a/epydoc/docwriter/plaintext.py b/epydoc/docwriter/plaintext.py
new file mode 100644
index 0000000..00baa70
--- /dev/null
+++ b/epydoc/docwriter/plaintext.py
@@ -0,0 +1,276 @@
+# epydoc -- Plaintext output generation
+#
+# Copyright (C) 2005 Edward Loper
+# Author: Edward Loper <edloper at loper.org>
+# URL: <http://epydoc.sf.net>
+#
+# $Id: plaintext.py 1473 2007-02-13 19:46:05Z edloper $
+
+"""
+Plaintext output generation.
+"""
+__docformat__ = 'epytext en'
+
+from epydoc.apidoc import *
+import re
+
+class PlaintextWriter:
+    def write(self, api_doc, **options):
+        result = []
+        out = result.append
+
+        self._cols = options.get('cols', 75)
+
+        try:
+            if isinstance(api_doc, ModuleDoc):
+                self.write_module(out, api_doc)
+            elif isinstance(api_doc, ClassDoc):
+                self.write_class(out, api_doc)
+            elif isinstance(api_doc, RoutineDoc):
+                self.write_function(out, api_doc)
+            else:
+                assert 0, ('%s not handled yet' % api_doc.__class__)
+        except Exception, e:
+            print '\n\n'
+            print ''.join(result)
+            raise
+
+        return ''.join(result)
+
+    def write_module(self, out, mod_doc):
+        #for n,v in mod_doc.variables.items():
+        #    print n, `v.value`, `v.value.value`
+        
+        # The cannonical name of the module.
+        out(self.section('Module Name'))
+        out('    %s\n\n' % mod_doc.canonical_name)
+
+        # The module's description.
+        if mod_doc.descr not in (None, '', UNKNOWN):
+            out(self.section('Description'))
+            out(mod_doc.descr.to_plaintext(None, indent=4))
+
+        #out('metadata: %s\n\n' % mod_doc.metadata) # [xx] testing
+
+        self.write_list(out, 'Classes', mod_doc, value_type='class')
+        self.write_list(out, 'Functions', mod_doc, value_type='function')
+        self.write_list(out, 'Variables', mod_doc, value_type='other')
+        # hmm.. do this as just a flat list??
+        #self.write_list(out, 'Imports', mod_doc, imported=True, verbose=False)
+
+    def baselist(self, class_doc):
+        if class_doc.bases is UNKNOWN:
+            return '(unknown bases)'
+        if len(class_doc.bases) == 0: return ''
+        s = '('
+        class_parent = class_doc.canonical_name.container()
+        for i, base in enumerate(class_doc.bases):
+            if base.canonical_name is None:
+                if base.parse_repr is not UNKNOWN:
+                    s += base.parse_repr
+                else:
+                    s += '??'
+            elif base.canonical_name.container() == class_parent:
+                s += str(base.canonical_name[-1])
+            else:
+                s += str(base.canonical_name)
+            if i < len(class_doc.bases)-1: out(', ')
+        return s+')'
+
+    def write_class(self, out, class_doc, name=None, prefix='', verbose=True):
+        baselist = self.baselist(class_doc)
+        
+        # If we're at the top level, then list the cannonical name of
+        # the class; otherwise, our parent will have already printed
+        # the name of the variable containing the class.
+        if prefix == '':
+            out(self.section('Class Name'))
+            out('    %s%s\n\n' % (class_doc.canonical_name, baselist))
+        else:
+            out(prefix + 'class %s' % self.bold(str(name)) + baselist+'\n')
+
+        if not verbose: return
+
+        # Indent the body
+        if prefix != '':
+            prefix += ' |  '
+
+        # The class's description.
+        if class_doc.descr not in (None, '', UNKNOWN):
+            if prefix == '':
+                out(self.section('Description', prefix))
+                out(self._descr(class_doc.descr, '    '))
+            else:
+                out(self._descr(class_doc.descr, prefix))
+
+        # List of nested classes in this class.
+        self.write_list(out, 'Methods', class_doc,
+                        value_type='instancemethod', prefix=prefix,
+                        noindent=len(prefix)>4)
+        self.write_list(out, 'Class Methods', class_doc,
+                        value_type='classmethod', prefix=prefix)
+        self.write_list(out, 'Static Methods', class_doc,
+                        value_type='staticmethod', prefix=prefix)
+        self.write_list(out, 'Nested Classes', class_doc,
+                        value_type='class', prefix=prefix)
+        self.write_list(out, 'Instance Variables', class_doc,
+                        value_type='instancevariable', prefix=prefix)
+        self.write_list(out, 'Class Variables', class_doc,
+                        value_type='classvariable', prefix=prefix)
+        
+        self.write_list(out, 'Inherited Methods', class_doc,
+                        value_type='method', prefix=prefix,
+                        inherited=True, verbose=False)
+        self.write_list(out, 'Inherited Instance Variables', class_doc,
+                        value_type='instancevariable', prefix=prefix,
+                        inherited=True, verbose=False)
+        self.write_list(out, 'Inherited Class Variables', class_doc,
+                        value_type='classvariable', prefix=prefix,
+                        inherited=True, verbose=False)
+        self.write_list(out, 'Inherited Nested Classes', class_doc,
+                        value_type='class', prefix=prefix,
+                        inherited=True, verbose=False)
+
+    def write_variable(self, out, var_doc, name=None, prefix='', verbose=True):
+        if name is None: name = var_doc.name
+        out(prefix+self.bold(str(name)))
+        if (var_doc.value not in (UNKNOWN, None) and
+            var_doc.is_alias is True and
+            var_doc.value.canonical_name not in (None, UNKNOWN)):
+            out(' = %s' % var_doc.value.canonical_name)
+        elif var_doc.value not in (UNKNOWN, None):
+            val_repr = var_doc.value.summary_pyval_repr(
+                max_len=self._cols-len(name)-len(prefix)-3)
+            out(' = %s' % val_repr.to_plaintext(None))
+        out('\n')
+        if not verbose: return
+        prefix += '    ' # indent the body.
+        if var_doc.descr not in (None, '', UNKNOWN):
+            out(self._descr(var_doc.descr, prefix))
+
+    def write_property(self, out, prop_doc, name=None, prefix='',
+                       verbose=True):
+        if name is None: name = prop_doc.canonical_name
+        out(prefix+self.bold(str(name)))
+        if not verbose: return
+        prefix += '    ' # indent the body.
+            
+        if prop_doc.descr not in (None, '', UNKNOWN):
+            out(self._descr(prop_doc.descr, prefix))
+
+
+    def write_function(self, out, func_doc, name=None, prefix='',
+                       verbose=True):
+        if name is None: name = func_doc.canonical_name
+        self.write_signature(out, func_doc, name, prefix)
+        if not verbose: return
+        
+        prefix += '    ' # indent the body.
+            
+        if func_doc.descr not in (None, '', UNKNOWN):
+            out(self._descr(func_doc.descr, prefix))
+
+        if func_doc.return_descr not in (None, '', UNKNOWN):
+            out(self.section('Returns:', prefix))
+            out(self._descr(func_doc.return_descr, prefix+'    '))
+
+        if func_doc.return_type not in (None, '', UNKNOWN):
+            out(self.section('Return Type:', prefix))
+            out(self._descr(func_doc.return_type, prefix+'    '))
+
+    def write_signature(self, out, func_doc, name, prefix):
+        args = [self.fmt_arg(argname, default) for (argname, default) 
+                in zip(func_doc.posargs, func_doc.posarg_defaults)]
+        if func_doc.vararg: args.append('*'+func_doc.vararg)
+        if func_doc.kwarg: args.append('**'+func_doc.kwarg)
+
+        out(prefix+self.bold(str(name))+'(')
+        x = left = len(prefix) + len(name) + 1
+        for i, arg in enumerate(args):
+            if x > left and x+len(arg) > 75:
+                out('\n'+prefix + ' '*len(name) + ' ')
+                x = left
+            out(arg)
+            x += len(arg)
+            if i < len(args)-1:
+                out(', ')
+                x += 2
+        out(')\n')
+
+    # [xx] tuple args!
+    def fmt_arg(self, name, default):
+        if default is None:
+            return '%s' % name
+        else:
+            default_repr = default.summary_pyval_repr()
+            return '%s=%s' % (name, default_repr.to_plaintext(None))
+
+    def write_list(self, out, heading, doc, value_type=None, imported=False,
+                   inherited=False, prefix='', noindent=False,
+                   verbose=True):
+        # Get a list of the VarDocs we should describe.
+        if isinstance(doc, ClassDoc):
+            var_docs = doc.select_variables(value_type=value_type,
+                                            imported=imported,
+                                            inherited=inherited)
+        else:
+            var_docs = doc.select_variables(value_type=value_type,
+                                            imported=imported)
+        if not var_docs: return
+
+        out(prefix+'\n')
+        if not noindent:
+            out(self.section(heading, prefix))
+            prefix += '    '
+
+        for i, var_doc in enumerate(var_docs):
+            val_doc, name = var_doc.value, var_doc.name
+
+            if verbose:
+                out(prefix+'\n')
+
+            # hmm:
+            if not verbose:
+                if isinstance(doc, ClassDoc):
+                    name = var_doc.canonical_name
+                elif val_doc not in (None, UNKNOWN):
+                    name = val_doc.canonical_name
+                    
+            if isinstance(val_doc, RoutineDoc):
+                self.write_function(out, val_doc, name, prefix, verbose)
+            elif isinstance(val_doc, PropertyDoc):
+                self.write_property(out, val_doc, name, prefix, verbose)
+            elif isinstance(val_doc, ClassDoc):
+                self.write_class(out, val_doc, name, prefix, verbose)
+            else:
+                self.write_variable(out, var_doc, name, prefix, verbose)
+
+    def _descr(self, descr, prefix):
+        s = descr.to_plaintext(None, indent=len(prefix)).rstrip()
+        s = '\n'.join([(prefix+l[len(prefix):]) for l in s.split('\n')])
+        return s+'\n'#+prefix+'\n'
+                               
+
+#    def drawline(self, s, x):
+#        s = re.sub(r'(?m)^(.{%s}) ' % x, r'\1|', s)
+#        return re.sub(r'(?m)^( {,%s})$(?=\n)' % x, x*' '+'|', s)
+
+        
+    #////////////////////////////////////////////////////////////
+    # Helpers
+    #////////////////////////////////////////////////////////////
+    
+    def bold(self, text):
+        """Write a string in bold by overstriking."""
+        return ''.join([ch+'\b'+ch for ch in text])
+
+    def title(self, text, indent):
+        return ' '*indent + self.bold(text.capitalize()) + '\n\n'
+
+    def section(self, text, indent=''):
+        if indent == '':
+            return indent + self.bold(text.upper()) + '\n'
+        else:
+            return indent + self.bold(text.capitalize()) + '\n'
+
+
diff --git a/epydoc/docwriter/xlink.py b/epydoc/docwriter/xlink.py
new file mode 100644
index 0000000..e15bb7f
--- /dev/null
+++ b/epydoc/docwriter/xlink.py
@@ -0,0 +1,505 @@
+"""
+A Docutils_ interpreted text role for cross-API reference support.
+
+This module allows a Docutils_ document to refer to elements defined in
+external API documentation. It is possible to refer to many external API
+from the same document.
+
+Each API documentation is assigned a new interpreted text role: using such
+interpreted text, an user can specify an object name inside an API
+documentation. The system will convert such text into an url and generate a
+reference to it. For example, if the API ``db`` is defined, being a database
+package, then a certain method may be referred as::
+
+    :db:`Connection.cursor()`
+
+To define a new API, an *index file* must be provided. This file contains
+a mapping from the object name to the URL part required to resolve such object.
+
+Index file
+----------
+
+Each line in the the index file describes an object.
+
+Each line contains the fully qualified name of the object and the URL at which
+the documentation is located. The fields are separated by a ``<tab>``
+character.
+
+The URL's in the file are relative from the documentation root: the system can
+be configured to add a prefix in front of each returned URL.
+
+Allowed names
+-------------
+
+When a name is used in an API text role, it is split over any *separator*.
+The separators defined are '``.``', '``::``', '``->``'. All the text from the
+first noise char (neither a separator nor alphanumeric or '``_``') is
+discarded. The same algorithm is applied when the index file is read.
+
+First the sequence of name parts is looked for in the provided index file.
+If no matching name is found, a partial match against the trailing part of the
+names in the index is performed. If no object is found, or if the trailing part
+of the name may refer to many objects, a warning is issued and no reference
+is created.
+
+Configuration
+-------------
+
+This module provides the class `ApiLinkReader` a replacement for the Docutils
+standalone reader. Such reader specifies the settings required for the
+API canonical roles configuration. The same command line options are exposed by
+Epydoc.
+
+The script ``apirst2html.py`` is a frontend for the `ApiLinkReader` reader.
+
+API Linking Options::
+
+    --external-api=NAME
+                        Define a new API document.  A new interpreted text
+                        role NAME will be added.
+    --external-api-file=NAME:FILENAME
+                        Use records in FILENAME to resolve objects in the API
+                        named NAME.
+    --external-api-root=NAME:STRING
+                        Use STRING as prefix for the URL generated from the
+                        API NAME.
+
+.. _Docutils: http://docutils.sourceforge.net/
+"""
+
+# $Id: xlink.py 1586 2007-03-14 01:53:42Z dvarrazzo $
+__version__ = "$Revision: 1586 $"[11:-2]
+__author__ = "Daniele Varrazzo"
+__copyright__ = "Copyright (C) 2007 by Daniele Varrazzo"
+__docformat__ = 'reStructuredText en'
+
+import re
+import sys
+from optparse import OptionValueError
+
+from epydoc import log
+
+class UrlGenerator:
+    """
+    Generate URL from an object name.
+    """
+    class IndexAmbiguous(IndexError):
+        """
+        The name looked for is ambiguous
+        """
+
+    def get_url(self, name):
+        """Look for a name and return the matching URL documentation.
+
+        First look for a fully qualified name. If not found, try with partial
+        name.
+
+        If no url exists for the given object, return `None`.
+
+        :Parameters:
+          `name` : `str`
+            the name to look for
+
+        :return: the URL that can be used to reach the `name` documentation.
+            `None` if no such URL exists.
+        :rtype: `str`
+
+        :Exceptions:
+          - `IndexError`: no object found with `name`
+          - `DocUrlGenerator.IndexAmbiguous` : more than one object found with
+            a non-fully qualified name; notice that this is an ``IndexError``
+            subclass
+        """
+        raise NotImplementedError
+
+    def get_canonical_name(self, name):
+        """
+        Convert an object name into a canonical name.
+
+        the canonical name of an object is a tuple of strings containing its
+        name fragments, splitted on any allowed separator ('``.``', '``::``',
+        '``->``').
+
+        Noise such parenthesis to indicate a function is discarded.
+
+        :Parameters:
+          `name` : `str`
+            an object name, such as ``os.path.prefix()`` or ``lib::foo::bar``
+
+        :return: the fully qualified name such ``('os', 'path', 'prefix')`` and
+            ``('lib', 'foo', 'bar')``
+        :rtype: `tuple` of `str`
+        """
+        rv = []
+        for m in self._SEP_RE.finditer(name):
+            groups = m.groups()
+            if groups[0] is not None:
+                rv.append(groups[0])
+            elif groups[2] is not None:
+                break
+
+        return tuple(rv)
+
+    _SEP_RE = re.compile(r"""(?x)
+        # Tokenize the input into keyword, separator, noise
+        ([a-zA-Z0-9_]+)         |   # A keyword is a alphanum word
+        ( \. | \:\: | \-\> )    |   # These are the allowed separators
+        (.)                         # If it doesn't fit, it's noise.
+            # Matching a single noise char is enough, because it
+            # is used to break the tokenization as soon as some noise
+            # is found.
+        """)
+
+
+class VoidUrlGenerator(UrlGenerator):
+    """
+    Don't actually know any url, but don't report any error.
+
+    Useful if an index file is not available, but a document linking to it
+    is to be generated, and warnings are to be avoided.
+
+    Don't report any object as missing, Don't return any url anyway.
+    """
+    def get_url(self, name):
+        return None
+
+
+class DocUrlGenerator(UrlGenerator):
+    """
+    Read a *documentation index* and generate URL's for it.
+    """
+    def __init__(self):
+        self._exact_matches = {}
+        """
+        A map from an object fully qualified name to its URL.
+
+        Values are both the name as tuple of fragments and as read from the
+        records (see `load_records()`), mostly to help `_partial_names` to
+        perform lookup for unambiguous names.
+        """
+
+        self._partial_names= {}
+        """
+        A map from partial names to the fully qualified names they may refer.
+
+        The keys are the possible left sub-tuples of fully qualified names,
+        the values are list of strings as provided by the index.
+
+        If the list for a given tuple contains a single item, the partial
+        match is not ambuguous. In this case the string can be looked up in
+        `_exact_matches`.
+
+        If the name fragment is ambiguous, a warning may be issued to the user.
+        The items can be used to provide an informative message to the user,
+        to help him qualifying the name in a unambiguous manner.
+        """
+
+        self.prefix = ''
+        """
+        Prefix portion for the URL's returned by `get_url()`.
+        """
+
+        self._filename = None
+        """
+        Not very important: only for logging.
+        """
+
+    def get_url(self, name):
+        cname = self.get_canonical_name(name)
+        url = self._exact_matches.get(cname, None)
+        if url is None:
+
+            # go for a partial match
+            vals = self._partial_names.get(cname)
+            if vals is None:
+                raise IndexError(
+                    "no object named '%s' found" % (name))
+
+            elif len(vals) == 1:
+                url = self._exact_matches[vals[0]]
+
+            else:
+                raise self.IndexAmbiguous(
+                    "found %d objects that '%s' may refer to: %s"
+                    % (len(vals), name, ", ".join(["'%s'" % n for n in vals])))
+
+        return self.prefix + url
+
+    #{ Content loading
+    #  ---------------
+
+    def clear(self):
+        """
+        Clear the current class content.
+        """
+        self._exact_matches.clear()
+        self._partial_names.clear()
+
+    def load_index(self, f):
+        """
+        Read the content of an index file.
+
+        Populate the internal maps with the file content using `load_records()`.
+
+        :Parameters:
+          f : `str` or file
+            a file name or file-like object fron which read the index.
+        """
+        self._filename = str(f)
+
+        if isinstance(f, basestring):
+            f = open(f)
+
+        self.load_records(self._iter_tuples(f))
+
+    def _iter_tuples(self, f):
+        """Iterate on a file returning 2-tuples."""
+        for nrow, row in enumerate(f):
+            # skip blank lines
+            row = row.rstrip()
+            if not row: continue
+
+            rec = row.split('\t', 2)
+            if len(rec) == 2:
+                yield rec
+            else:
+                log.warning("invalid row in '%s' row %d: '%s'"
+                            % (self._filename, nrow+1, row))
+
+    def load_records(self, records):
+        """
+        Read a sequence of pairs name -> url and populate the internal maps.
+
+        :Parameters:
+          records : iterable
+            the sequence of pairs (*name*, *url*) to add to the maps.
+        """
+        for name, url in records:
+            cname = self.get_canonical_name(name)
+            if not cname:
+                log.warning("invalid object name in '%s': '%s'"
+                    % (self._filename, name))
+                continue
+
+            # discard duplicates
+            if name in self._exact_matches:
+                continue
+
+            self._exact_matches[name] = url
+            self._exact_matches[cname] = url
+
+            # Link the different ambiguous fragments to the url
+            for i in range(1, len(cname)):
+                self._partial_names.setdefault(cname[i:], []).append(name)
+
+#{ API register
+#  ------------
+
+api_register = {}
+"""
+Mapping from the API name to the `UrlGenerator` to be used.
+
+Use `register_api()` to add new generators to the register.
+"""
+
+def register_api(name, generator=None):
+    """Register the API `name` into the `api_register`.
+
+    A registered API will be available to the markup as the interpreted text
+    role ``name``.
+
+    If a `generator` is not provided, register a `VoidUrlGenerator` instance:
+    in this case no warning will be issued for missing names, but no URL will
+    be generated and all the dotted names will simply be rendered as literals.
+
+    :Parameters:
+      `name` : `str`
+        the name of the generator to be registered
+      `generator` : `UrlGenerator`
+        the object to register to translate names into URLs.
+    """
+    if generator is None:
+        generator = VoidUrlGenerator()
+
+    api_register[name] = generator
+
+def set_api_file(name, file):
+    """Set an URL generator populated with data from `file`.
+
+    Use `file` to populate a new `DocUrlGenerator` instance and register it
+    as `name`.
+
+    :Parameters:
+      `name` : `str`
+        the name of the generator to be registered
+      `file` : `str` or file
+        the file to parse populate the URL generator
+    """
+    generator = DocUrlGenerator()
+    generator.load_index(file)
+    register_api(name, generator)
+
+def set_api_root(name, prefix):
+    """Set the root for the URLs returned by a registered URL generator.
+
+    :Parameters:
+      `name` : `str`
+        the name of the generator to be updated
+      `prefix` : `str`
+        the prefix for the generated URL's
+
+    :Exceptions:
+      - `IndexError`: `name` is not a registered generator
+    """
+    api_register[name].prefix = prefix
+
+######################################################################
+# Below this point requires docutils.
+try:
+    import docutils
+    from docutils.parsers.rst import roles
+    from docutils import nodes, utils
+    from docutils.readers.standalone import Reader
+except ImportError:
+    docutils = roles = nodes = utils = None
+    class Reader: settings_spec = ()
+
+def create_api_role(name, problematic):
+    """
+    Create and register a new role to create links for an API documentation.
+
+    Create a role called `name`, which will use the URL resolver registered as
+    ``name`` in `api_register` to create a link for an object.
+
+    :Parameters:
+      `name` : `str`
+        name of the role to create.
+      `problematic` : `bool`
+        if True, the registered role will create problematic nodes in
+        case of failed references. If False, a warning will be raised
+        anyway, but the output will appear as an ordinary literal.
+    """
+    def resolve_api_name(n, rawtext, text, lineno, inliner,
+                options={}, content=[]):
+        if docutils is None:
+            raise AssertionError('requires docutils')
+
+        # node in monotype font
+        text = utils.unescape(text)
+        node = nodes.literal(rawtext, text, **options)
+
+        # Get the resolver from the register and create an url from it.
+        try:
+            url = api_register[name].get_url(text)
+        except IndexError, exc:
+            msg = inliner.reporter.warning(str(exc), line=lineno)
+            if problematic:
+                prb = inliner.problematic(rawtext, text, msg)
+                return [prb], [msg]
+            else:
+                return [node], []
+
+        if url is not None:
+            node = nodes.reference(rawtext, '', node, refuri=url, **options)
+        return [node], []
+
+    roles.register_local_role(name, resolve_api_name)
+
+
+#{ Command line parsing
+#  --------------------
+
+
+def split_name(value):
+    """
+    Split an option in form ``NAME:VALUE`` and check if ``NAME`` exists.
+    """
+    parts = value.split(':', 1)
+    if len(parts) != 2:
+        raise OptionValueError(
+            "option value must be specified as NAME:VALUE; got '%s' instead"
+            % value)
+
+    name, val = parts
+
+    if name not in api_register:
+        raise OptionValueError(
+            "the name '%s' has not been registered; use --external-api"
+            % name)
+
+    return (name, val)
+
+
+class ApiLinkReader(Reader):
+    """
+    A Docutils standalone reader allowing external documentation links.
+
+    The reader configure the url resolvers at the time `read()` is invoked the
+    first time.
+    """
+    #: The option parser configuration.
+    settings_spec = (
+    'API Linking Options',
+    None,
+    ((
+        'Define a new API document.  A new interpreted text role NAME will be '
+        'added.',
+        ['--external-api'],
+        {'metavar': 'NAME', 'action': 'append'}
+    ), (
+        'Use records in FILENAME to resolve objects in the API named NAME.',
+        ['--external-api-file'],
+        {'metavar': 'NAME:FILENAME', 'action': 'append'}
+    ), (
+        'Use STRING as prefix for the URL generated from the API NAME.',
+        ['--external-api-root'],
+        {'metavar': 'NAME:STRING', 'action': 'append'}
+    ),)) + Reader.settings_spec
+
+    def __init__(self, *args, **kwargs):
+        if docutils is None:
+            raise AssertionError('requires docutils')
+        Reader.__init__(self, *args, **kwargs)
+
+    def read(self, source, parser, settings):
+        self.read_configuration(settings, problematic=True)
+        return Reader.read(self, source, parser, settings)
+
+    def read_configuration(self, settings, problematic=True):
+        """
+        Read the configuration for the configured URL resolver.
+
+        Register a new role for each configured API.
+
+        :Parameters:
+          `settings`
+            the settings structure containing the options to read.
+          `problematic` : `bool`
+            if True, the registered role will create problematic nodes in
+            case of failed references. If False, a warning will be raised
+            anyway, but the output will appear as an ordinary literal.
+        """
+        # Read config only once
+        if hasattr(self, '_conf'):
+            return
+        ApiLinkReader._conf = True
+
+        try:
+            if settings.external_api is not None:
+                for name in settings.external_api:
+                    register_api(name)
+                    create_api_role(name, problematic=problematic)
+
+            if settings.external_api_file is not None:
+                for name, file in map(split_name, settings.external_api_file):
+                    set_api_file(name, file)
+
+            if settings.external_api_root is not None:
+                for name, root in map(split_name, settings.external_api_root):
+                    set_api_root(name, root)
+
+        except OptionValueError, exc:
+            print >>sys.stderr, "%s: %s" % (exc.__class__.__name__, exc)
+            sys.exit(2)
+
+    read_configuration = classmethod(read_configuration)
diff --git a/epydoc/gui.py b/epydoc/gui.py
new file mode 100644
index 0000000..dbd388a
--- /dev/null
+++ b/epydoc/gui.py
@@ -0,0 +1,1148 @@
+#!/usr/bin/env python
+#
+# objdoc: epydoc command-line interface
+# Edward Loper
+#
+# Created [03/15/02 10:31 PM]
+# $Id: gui.py 646 2004-03-19 19:01:37Z edloper $
+#
+
+"""
+Graphical interface to epydoc.  This interface might be useful for
+systems where it's inconvenient to use the command-line interface
+(such as Windows).  It supports many (but not all) of the features
+that are supported by the command-line interface.  It also supports
+loading and saving of X{project files}, which store a set of related
+modules, and the options that should be used to generate the
+documentation for those modules.
+
+Usage::
+    epydocgui [OPTIONS] [FILE.prj | MODULES...]
+
+    FILE.prj                  An epydoc GUI project file.
+    MODULES...                A list of Python modules to document.
+    -V, --version             Print the version of epydoc.
+    -h, -?, --help, --usage   Display this usage message
+    --debug                   Do not suppress error messages
+
+ at todo: Use ini-style project files, rather than pickles (using the
+same format as the CLI).
+"""
+__docformat__ = 'epytext en'
+
+import sys, os.path, re, glob
+from Tkinter import *
+from tkFileDialog import askopenfilename, asksaveasfilename
+from thread import start_new_thread, exit_thread
+from pickle import dump, load
+
+# askdirectory is only defined in python 2.2+; fall back on
+# asksaveasfilename if it's not available.
+try: from tkFileDialog import askdirectory
+except: askdirectory = None
+
+# Include support for Zope, if it's available.
+try: import ZODB
+except: pass
+
+##/////////////////////////////////////////////////////////////////////////
+## CONSTANTS
+##/////////////////////////////////////////////////////////////////////////
+
+DEBUG = 0
+
+# Colors for tkinter display
+BG_COLOR='#e0e0e0'
+ACTIVEBG_COLOR='#e0e0e0'
+TEXT_COLOR='black'
+ENTRYSELECT_COLOR = ACTIVEBG_COLOR
+SELECT_COLOR = '#208070'
+MESSAGE_COLOR = '#000060'
+ERROR_COLOR = '#600000'
+GUIERROR_COLOR = '#600000'
+WARNING_COLOR = '#604000'
+HEADER_COLOR = '#000000'
+
+# Convenience dictionaries for specifying widget colors
+COLOR_CONFIG = {'background':BG_COLOR, 'highlightcolor': BG_COLOR,
+                'foreground':TEXT_COLOR, 'highlightbackground': BG_COLOR}
+ENTRY_CONFIG = {'background':BG_COLOR, 'highlightcolor': BG_COLOR,
+                'foreground':TEXT_COLOR, 'highlightbackground': BG_COLOR,
+                'selectbackground': ENTRYSELECT_COLOR,
+                'selectforeground': TEXT_COLOR}
+SB_CONFIG = {'troughcolor':BG_COLOR, 'activebackground':BG_COLOR,
+             'background':BG_COLOR, 'highlightbackground':BG_COLOR}
+LISTBOX_CONFIG = {'highlightcolor': BG_COLOR, 'highlightbackground': BG_COLOR,
+                  'foreground':TEXT_COLOR, 'selectforeground': TEXT_COLOR,
+                  'selectbackground': ACTIVEBG_COLOR, 'background':BG_COLOR}
+BUTTON_CONFIG = {'background':BG_COLOR, 'highlightthickness':0, 'padx':4, 
+                 'highlightbackground': BG_COLOR, 'foreground':TEXT_COLOR,
+                 'highlightcolor': BG_COLOR, 'activeforeground': TEXT_COLOR,
+                 'activebackground': ACTIVEBG_COLOR, 'pady':0}
+CBUTTON_CONFIG = {'background':BG_COLOR, 'highlightthickness':0, 'padx':4, 
+                  'highlightbackground': BG_COLOR, 'foreground':TEXT_COLOR,
+                  'highlightcolor': BG_COLOR, 'activeforeground': TEXT_COLOR,
+                  'activebackground': ACTIVEBG_COLOR, 'pady':0,
+                  'selectcolor': SELECT_COLOR}
+SHOWMSG_CONFIG = CBUTTON_CONFIG.copy()
+SHOWMSG_CONFIG['foreground'] = MESSAGE_COLOR
+SHOWWRN_CONFIG = CBUTTON_CONFIG.copy()
+SHOWWRN_CONFIG['foreground'] = WARNING_COLOR
+SHOWERR_CONFIG = CBUTTON_CONFIG.copy()
+SHOWERR_CONFIG['foreground'] = ERROR_COLOR
+
+# Colors for the progress bar
+PROGRESS_HEIGHT = 16
+PROGRESS_WIDTH = 200
+PROGRESS_BG='#305060'
+PROGRESS_COLOR1 = '#30c070'
+PROGRESS_COLOR2 = '#60ffa0'
+PROGRESS_COLOR3 = '#106030'
+
+# On tkinter canvases, where's the zero coordinate?
+if sys.platform.lower().startswith('win'):
+    DX = 3; DY = 3
+    DH = 0; DW = 7
+else:
+    DX = 1; DY = 1
+    DH = 1; DW = 3
+
+# How much of the progress is in each subtask?
+IMPORT_PROGRESS = 0.1
+BUILD_PROGRESS  = 0.2
+WRITE_PROGRESS  = 1.0 - BUILD_PROGRESS - IMPORT_PROGRESS
+
+##/////////////////////////////////////////////////////////////////////////
+## IMAGE CONSTANTS
+##/////////////////////////////////////////////////////////////////////////
+
+UP_GIF = '''\
+R0lGODlhCwAMALMAANnZ2QDMmQCZZgBmZgAAAAAzM////////wAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAACH5BAEAAAAALAAAAAALAAwAAAQjEMhJKxCW4gzCIJxXZIEwFGDlDadqsii1sq1U0nA64+ON
+5xEAOw==
+'''
+DOWN_GIF = '''\
+R0lGODlhCwAMALMAANnZ2QDMmQCZZgBmZgAAAAAzM////////wAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAACH5BAEAAAAALAAAAAALAAwAAAQmEIQxgLVUCsppsVPngVtXEFfIfWk5nBe4xuSL0tKLy/cu
+7JffJQIAOw==
+'''
+LEFT_GIF='''\
+R0lGODlhDAALAKIAANnZ2QDMmQCZZgBmZgAAAAAzM////////yH5BAEAAAAALAAAAAAMAAsAAAM4
+CLocgaCrESiDoBshOAoAgBEyMzgAEIGCowsiOLoLgEBVOLoIqlSFo4OgC1RYM4Ogq1RYg6DLVJgA
+Ow==
+'''
+RIGHT_GIF='''\
+R0lGODlhDAALAKIAANnZ2QDMmQBmZgCZZgAzMwAAAP///////yH5BAEAAAAALAAAAAAMAAsAAAM5
+GIGgyzIYgaCrIigTgaALIigyEQiqKLoTgaAoujuDgKJLVAgqIoJEBQAIIkKEhaArRFgIukqFoMsJ
+ADs=
+'''
+
+##/////////////////////////////////////////////////////////////////////////
+## MessageIO
+##/////////////////////////////////////////////////////////////////////////
+
+from epydoc import log
+from epydoc.util import wordwrap
+class GUILogger(log.Logger):
+    _STAGES = [40, 7, 1, 3, 1, 30, 1, 2, 100]
+    
+    def __init__(self, progress, cancel):
+        self._progress = progress
+        self._cancel = cancel
+        self.clear()
+
+    def clear(self):
+        self._messages = []
+        self._n = 0
+        self._stage = 0
+        self._message_blocks = []
+        
+    def log(self, level, message):
+        message = wordwrap(str(message)).rstrip() + '\n'
+        if self._message_blocks:
+            self._message_blocks[-1][-1].append( (level, message) )
+        else:
+            self._messages.append( (level, message) )
+
+    def start_block(self, header):
+        self._message_blocks.append( (header, []) )
+
+    def end_block(self):
+        header, messages = self._message_blocks.pop()
+        if messages:
+            self._messages.append( ('uline', ' '*75+'\n') )
+            self.log('header', header)
+            self._messages += messages
+            self._messages.append( ('uline', ' '*75+'\n') )
+        
+    def start_progress(self, header=None):
+        self.log(log.INFO, header)
+        self._stage += 1
+        
+    def end_progress(self):
+        pass
+    
+    def progress(self, percent, message=''):
+        if self._cancel[0]: exit_thread()
+        i = self._stage - 1
+        p = ((sum(self._STAGES[:i]) + percent*self._STAGES[i]) /
+             float(sum(self._STAGES)))
+        self._progress[0] = p
+        
+    def read(self):
+        if self._n >= len(self._messages):
+            return None, None
+        else:
+            self._n += 1
+            return self._messages[self._n-1]
+        
+##/////////////////////////////////////////////////////////////////////////
+## THREADED DOCUMENTER
+##/////////////////////////////////////////////////////////////////////////
+
+def document(options, cancel, done):
+    """
+    Create the documentation for C{modules}, using the options
+    specified by C{options}.  C{document} is designed to be started in
+    its own thread by L{EpydocGUI._go}.
+
+    @param options: The options to use for generating documentation.
+        This includes keyword options that can be given to
+        L{docwriter.html.HTMLWriter}, as well as the option C{target}, which
+        controls where the output is written to.
+    @type options: C{dictionary}
+    """
+    from epydoc.docwriter.html import HTMLWriter
+    from epydoc.docbuilder import build_doc_index
+    import epydoc.docstringparser
+
+    # Set the default docformat.
+    docformat = options.get('docformat', 'epytext')
+    epydoc.docstringparser.DEFAULT_DOCFORMAT = docformat
+
+    try:
+        parse = options['introspect_or_parse'] in ('parse', 'both')
+        introspect = options['introspect_or_parse'] in ('introspect', 'both')
+        docindex = build_doc_index(options['modules'], parse, introspect)
+        html_writer = HTMLWriter(docindex, **options)
+        log.start_progress('Writing HTML docs to %r' % options['target'])
+        html_writer.write(options['target'])
+        log.end_progress()
+    
+        # We're done.
+        log.warning('Finished!')
+        done[0] = 'done'
+
+    except SystemExit:
+        # Cancel.
+        log.error('Cancelled!')
+        done[0] ='cancel'
+        raise
+    except Exception, e:
+        # We failed.
+        log.error('Internal error: %s' % e)
+        done[0] ='cancel'
+        raise
+    except:
+        # We failed.
+        log.error('Internal error!')
+        done[0] ='cancel'
+        raise
+    
+##/////////////////////////////////////////////////////////////////////////
+## GUI
+##/////////////////////////////////////////////////////////////////////////
+
+class EpydocGUI:
+    """
+    A graphical user interace to epydoc.
+    """
+    def __init__(self):
+        self._afterid = 0
+        self._progress = [None]
+        self._cancel = [0]
+        self._filename = None
+        self._init_dir = None
+
+        # Store a copy of sys.modules, so that we can restore it
+        # later.  This is useful for making sure that we reload
+        # everything when we re-build its documentation.  This will
+        # *not* reload the modules that are present when the EpydocGUI
+        # is created, but that should only contain some builtins, some
+        # epydoc modules, Tkinter, pickle, and thread..
+        self._old_modules = sys.modules.keys()
+
+        # Create the main window.
+        self._root = Tk()
+        self._root['background']=BG_COLOR
+        self._root.bind('<Control-q>', self.destroy)
+        self._root.bind('<Alt-q>', self.destroy)
+        self._root.bind('<Alt-x>', self.destroy)
+        self._root.bind('<Control-x>', self.destroy)
+        #self._root.bind('<Control-d>', self.destroy)
+        self._root.title('Epydoc')
+        self._rootframe = Frame(self._root, background=BG_COLOR,
+                               border=2, relief='raised')
+        self._rootframe.pack(expand=1, fill='both', padx=2, pady=2)
+
+        # Set up the basic frames.  Do not pack the options frame or
+        # the messages frame; the GUI has buttons to expand them.
+        leftframe = Frame(self._rootframe, background=BG_COLOR)
+        leftframe.pack(expand=1, fill='both', side='left')
+        optsframe = Frame(self._rootframe, background=BG_COLOR)
+        mainframe = Frame(leftframe, background=BG_COLOR)
+        mainframe.pack(expand=1, fill='both', side='top')
+        ctrlframe = Frame(mainframe, background=BG_COLOR)
+        ctrlframe.pack(side="bottom", fill='x', expand=0)
+        msgsframe = Frame(leftframe, background=BG_COLOR)
+
+        self._optsframe = optsframe
+        self._msgsframe = msgsframe
+
+        # Initialize all the frames, etc.
+        self._init_menubar()
+        self._init_progress_bar(mainframe)
+        self._init_module_list(mainframe)
+        self._init_options(optsframe, ctrlframe)
+        self._init_messages(msgsframe, ctrlframe)
+        self._init_bindings()
+
+        # Set up logging
+        self._logger = GUILogger(self._progress, self._cancel)
+        log.register_logger(self._logger)
+
+        # Open the messages pane by default.
+        self._messages_toggle()
+
+        ## For testing options:
+        #self._options_toggle()
+        
+    def _init_menubar(self):
+        menubar = Menu(self._root, borderwidth=2,
+                       background=BG_COLOR,
+                       activebackground=BG_COLOR)
+        filemenu = Menu(menubar, tearoff=0)
+        filemenu.add_command(label='New Project', underline=0,
+                             command=self._new,
+                             accelerator='Ctrl-n')
+        filemenu.add_command(label='Open Project', underline=0,
+                             command=self._open,
+                             accelerator='Ctrl-o')
+        filemenu.add_command(label='Save Project', underline=0,
+                             command=self._save,
+                             accelerator='Ctrl-s')
+        filemenu.add_command(label='Save As..', underline=5,
+                             command=self._saveas,
+                             accelerator='Ctrl-a')
+        filemenu.add_separator()
+        filemenu.add_command(label='Exit', underline=1,
+                             command=self.destroy,
+                             accelerator='Ctrl-x')
+        menubar.add_cascade(label='File', underline=0, menu=filemenu)
+        gomenu = Menu(menubar, tearoff=0)
+        gomenu.add_command(label='Run Epydoc',  command=self._open,
+                           underline=0, accelerator='Alt-g')
+        menubar.add_cascade(label='Run', menu=gomenu, underline=0)
+        self._root.config(menu=menubar)
+        
+    def _init_module_list(self, mainframe):
+        mframe1 = Frame(mainframe, relief='groove', border=2,
+                        background=BG_COLOR)
+        mframe1.pack(side="top", fill='both', expand=1, padx=4, pady=3)
+        l = Label(mframe1, text="Modules to document:",
+                  justify='left', **COLOR_CONFIG) 
+        l.pack(side='top', fill='none', anchor='nw', expand=0)
+        mframe2 = Frame(mframe1, background=BG_COLOR)
+        mframe2.pack(side="top", fill='both', expand=1)
+        mframe3 = Frame(mframe1, background=BG_COLOR)
+        mframe3.pack(side="bottom", fill='x', expand=0)
+        self._module_list = Listbox(mframe2, width=80, height=10,
+                                    selectmode='multiple',
+                                    **LISTBOX_CONFIG)
+        self._module_list.pack(side="left", fill='both', expand=1)
+        sb = Scrollbar(mframe2, orient='vertical',**SB_CONFIG)
+        sb['command']=self._module_list.yview
+        sb.pack(side='right', fill='y')
+        self._module_list.config(yscrollcommand=sb.set)
+        Label(mframe3, text="Add:", **COLOR_CONFIG).pack(side='left')
+        self._module_entry = Entry(mframe3, **ENTRY_CONFIG)
+        self._module_entry.pack(side='left', fill='x', expand=1)
+        self._module_entry.bind('<Return>', self._entry_module)
+        self._module_delete = Button(mframe3, text="Remove",
+                                     command=self._delete_module,
+                                     **BUTTON_CONFIG) 
+        self._module_delete.pack(side='right', expand=0, padx=2)
+        self._module_browse = Button(mframe3, text="Browse",
+                                     command=self._browse_module,
+                                     **BUTTON_CONFIG) 
+        self._module_browse.pack(side='right', expand=0, padx=2)
+        
+    def _init_progress_bar(self, mainframe):
+        pframe1 = Frame(mainframe, background=BG_COLOR)
+        pframe1.pack(side="bottom", fill='x', expand=0)
+        self._go_button = Button(pframe1, width=4, text='Start',
+                                 underline=0, command=self._go,
+                                 **BUTTON_CONFIG)
+        self._go_button.pack(side='left', padx=4)
+        pframe2 = Frame(pframe1, relief='groove', border=2,
+                        background=BG_COLOR) 
+        pframe2.pack(side="top", fill='x', expand=1, padx=4, pady=3)
+        Label(pframe2, text='Progress:', **COLOR_CONFIG).pack(side='left')
+        H = self._H = PROGRESS_HEIGHT
+        W = self._W = PROGRESS_WIDTH
+        c = self._canvas = Canvas(pframe2, height=H+DH, width=W+DW, 
+                                  background=PROGRESS_BG, border=0,
+                                  selectborderwidth=0, relief='sunken',
+                                  insertwidth=0, insertborderwidth=0,
+                                  highlightbackground=BG_COLOR)
+        self._canvas.pack(side='left', fill='x', expand=1, padx=4)
+        self._r2 = c.create_rectangle(0,0,0,0, outline=PROGRESS_COLOR2)
+        self._r3 = c.create_rectangle(0,0,0,0, outline=PROGRESS_COLOR3)
+        self._r1 = c.create_rectangle(0,0,0,0, fill=PROGRESS_COLOR1,
+                                      outline='')
+        self._canvas.bind('<Configure>', self._configure)
+
+    def _init_messages(self, msgsframe, ctrlframe):
+        self._downImage = PhotoImage(master=self._root, data=DOWN_GIF)
+        self._upImage = PhotoImage(master=self._root, data=UP_GIF)
+
+        # Set up the messages control frame
+        b1 = Button(ctrlframe, text="Messages", justify='center',
+                    command=self._messages_toggle, underline=0, 
+                    highlightthickness=0, activebackground=BG_COLOR, 
+                    border=0, relief='flat', padx=2, pady=0, **COLOR_CONFIG) 
+        b2 = Button(ctrlframe, image=self._downImage, relief='flat', 
+                    border=0, command=self._messages_toggle,
+                    activebackground=BG_COLOR, **COLOR_CONFIG) 
+        self._message_button = b2
+        self._messages_visible = 0
+        b2.pack(side="left")
+        b1.pack(side="left")
+
+        f = Frame(msgsframe, background=BG_COLOR)
+        f.pack(side='top', expand=1, fill='both')
+        messages = Text(f, width=80, height=10, **ENTRY_CONFIG)
+        messages['state'] = 'disabled'
+        messages.pack(fill='both', expand=1, side='left')
+        self._messages = messages
+
+        # Add a scrollbar
+        sb = Scrollbar(f, orient='vertical', **SB_CONFIG)
+        sb.pack(fill='y', side='right')
+        sb['command'] = messages.yview
+        messages['yscrollcommand'] = sb.set
+
+        # Set up some colorization tags
+        messages.tag_config('error', foreground=ERROR_COLOR)
+        messages.tag_config('warning', foreground=WARNING_COLOR)
+        messages.tag_config('guierror', foreground=GUIERROR_COLOR)
+        messages.tag_config('message', foreground=MESSAGE_COLOR)
+        messages.tag_config('header', foreground=HEADER_COLOR)
+        messages.tag_config('uline', underline=1)
+
+        # Keep track of tag state..
+        self._in_header = 0
+        self._last_tag = 'error'
+
+        # Add some buttons
+        buttons = Frame(msgsframe, background=BG_COLOR)
+        buttons.pack(side='bottom', fill='x')
+        self._show_errors = IntVar(self._root)
+        self._show_errors.set(1)
+        self._show_warnings = IntVar(self._root)
+        self._show_warnings.set(1)
+        self._show_messages = IntVar(self._root)
+        self._show_messages.set(0)
+        Checkbutton(buttons, text='Show Messages', var=self._show_messages,
+                    command=self._update_msg_tags, 
+                    **SHOWMSG_CONFIG).pack(side='left')
+        Checkbutton(buttons, text='Show Warnings', var=self._show_warnings,
+                    command=self._update_msg_tags, 
+                    **SHOWWRN_CONFIG).pack(side='left')
+        Checkbutton(buttons, text='Show Errors', var=self._show_errors,
+                    command=self._update_msg_tags, 
+                    **SHOWERR_CONFIG).pack(side='left')
+        self._update_msg_tags()
+
+    def _update_msg_tags(self, *e):
+        elide_errors = not self._show_errors.get()
+        elide_warnings = not self._show_warnings.get()
+        elide_messages = not self._show_messages.get()
+        elide_headers = elide_errors and elide_warnings
+        self._messages.tag_config('error', elide=elide_errors)
+        self._messages.tag_config('guierror', elide=elide_errors)
+        self._messages.tag_config('warning', elide=elide_warnings)
+        self._messages.tag_config('message', elide=elide_messages)
+        self._messages.tag_config('header', elide=elide_headers)
+
+    def _init_options(self, optsframe, ctrlframe):
+        self._leftImage=PhotoImage(master=self._root, data=LEFT_GIF)
+        self._rightImage=PhotoImage(master=self._root, data=RIGHT_GIF)
+
+        # Set up the options control frame
+        b1 = Button(ctrlframe, text="Options", justify='center',
+                    border=0, relief='flat',
+                    command=self._options_toggle, padx=2,
+                    underline=0, pady=0, highlightthickness=0,
+                    activebackground=BG_COLOR, **COLOR_CONFIG) 
+        b2 = Button(ctrlframe, image=self._rightImage, relief='flat', 
+                    border=0, command=self._options_toggle,
+                    activebackground=BG_COLOR, **COLOR_CONFIG) 
+        self._option_button = b2
+        self._options_visible = 0
+        b2.pack(side="right")
+        b1.pack(side="right")
+
+        oframe2 = Frame(optsframe, relief='groove', border=2,
+                        background=BG_COLOR)
+        oframe2.pack(side="right", fill='both',
+                     expand=0, padx=4, pady=3, ipadx=4)
+        
+        Label(oframe2, text="Project Options", font='helvetica -16',
+              **COLOR_CONFIG).pack(anchor='w')
+        oframe3 = Frame(oframe2, background=BG_COLOR)
+        oframe3.pack(fill='x')
+        oframe4 = Frame(oframe2, background=BG_COLOR)
+        oframe4.pack(fill='x')
+        oframe7 = Frame(oframe2, background=BG_COLOR)
+        oframe7.pack(fill='x')
+        div = Frame(oframe2, background=BG_COLOR, border=1, relief='sunk')
+        div.pack(ipady=1, fill='x', padx=4, pady=2)
+
+        Label(oframe2, text="Help File", font='helvetica -16',
+              **COLOR_CONFIG).pack(anchor='w')
+        oframe5 = Frame(oframe2, background=BG_COLOR)
+        oframe5.pack(fill='x')
+        div = Frame(oframe2, background=BG_COLOR, border=1, relief='sunk')
+        div.pack(ipady=1, fill='x', padx=4, pady=2)
+
+        Label(oframe2, text="CSS Stylesheet", font='helvetica -16',
+              **COLOR_CONFIG).pack(anchor='w')
+        oframe6 = Frame(oframe2, background=BG_COLOR)
+        oframe6.pack(fill='x')
+
+        #==================== oframe3 ====================
+        # -n NAME, --name NAME
+        row = 0
+        l = Label(oframe3, text="Project Name:", **COLOR_CONFIG)
+        l.grid(row=row, column=0, sticky='e')
+        self._name_entry = Entry(oframe3, **ENTRY_CONFIG)
+        self._name_entry.grid(row=row, column=1, sticky='ew', columnspan=3)
+
+        # -u URL, --url URL
+        row += 1
+        l = Label(oframe3, text="Project URL:", **COLOR_CONFIG)
+        l.grid(row=row, column=0, sticky='e')
+        self._url_entry = Entry(oframe3, **ENTRY_CONFIG)
+        self._url_entry.grid(row=row, column=1, sticky='ew', columnspan=3)
+
+        # -o DIR, --output DIR
+        row += 1
+        l = Label(oframe3, text="Output Directory:", **COLOR_CONFIG)
+        l.grid(row=row, column=0, sticky='e')
+        self._out_entry = Entry(oframe3, **ENTRY_CONFIG)
+        self._out_entry.grid(row=row, column=1, sticky='ew', columnspan=2)
+        self._out_browse = Button(oframe3, text="Browse",
+                                  command=self._browse_out,
+                                  **BUTTON_CONFIG) 
+        self._out_browse.grid(row=row, column=3, sticky='ew', padx=2)
+
+        #==================== oframe4 ====================
+        # --no-frames
+        row = 0
+        self._frames_var = IntVar(self._root)
+        self._frames_var.set(1)
+        l = Label(oframe4, text="Generate a frame-based table of contents",
+                  **COLOR_CONFIG)
+        l.grid(row=row, column=1, sticky='w')
+        cb = Checkbutton(oframe4, var=self._frames_var, **CBUTTON_CONFIG)
+        cb.grid(row=row, column=0, sticky='e')
+
+        # --no-private
+        row += 1
+        self._private_var = IntVar(self._root)
+        self._private_var.set(1)
+        l = Label(oframe4, text="Generate documentation for private objects",
+                  **COLOR_CONFIG)
+        l.grid(row=row, column=1, sticky='w')
+        cb = Checkbutton(oframe4, var=self._private_var, **CBUTTON_CONFIG)
+        cb.grid(row=row, column=0, sticky='e')
+
+        # --show-imports
+        row += 1
+        self._imports_var = IntVar(self._root)
+        self._imports_var.set(0)
+        l = Label(oframe4, text="List imported classes and functions",
+                  **COLOR_CONFIG)
+        l.grid(row=row, column=1, sticky='w')
+        cb = Checkbutton(oframe4, var=self._imports_var, **CBUTTON_CONFIG)
+        cb.grid(row=row, column=0, sticky='e')
+
+        #==================== oframe7 ====================
+        # --docformat
+        row += 1
+        l = Label(oframe7, text="Default Docformat:", **COLOR_CONFIG)
+        l.grid(row=row, column=0, sticky='e')
+        df_var = self._docformat_var = StringVar(self._root)
+        self._docformat_var.set('epytext')
+        b = Radiobutton(oframe7, var=df_var, text='Epytext',
+                        value='epytext', **CBUTTON_CONFIG)
+        b.grid(row=row, column=1, sticky='w')
+        b = Radiobutton(oframe7, var=df_var, text='ReStructuredText',
+                        value='restructuredtext', **CBUTTON_CONFIG)
+        b.grid(row=row, column=2, columnspan=2, sticky='w')
+        row += 1
+        b = Radiobutton(oframe7, var=df_var, text='Plaintext',
+                        value='plaintext', **CBUTTON_CONFIG)
+        b.grid(row=row, column=1, sticky='w')
+        b = Radiobutton(oframe7, var=df_var, text='Javadoc',
+                        value='javadoc', **CBUTTON_CONFIG)
+        b.grid(row=row, column=2, columnspan=2, sticky='w')
+        row += 1
+
+        # Separater
+        Frame(oframe7, background=BG_COLOR).grid(row=row, column=1, pady=3)
+        row += 1
+
+        # --inheritance
+        l = Label(oframe7, text="Inheritance Style:", **COLOR_CONFIG)
+        l.grid(row=row, column=0, sticky='e')
+        inh_var = self._inheritance_var = StringVar(self._root)
+        self._inheritance_var.set('grouped')
+        b = Radiobutton(oframe7, var=inh_var, text='Grouped',
+                        value='grouped', **CBUTTON_CONFIG)
+        b.grid(row=row, column=1, sticky='w')
+        b = Radiobutton(oframe7, var=inh_var, text='Listed',
+                        value='listed', **CBUTTON_CONFIG)
+        b.grid(row=row, column=2, sticky='w')
+        b = Radiobutton(oframe7, var=inh_var, text='Included',
+                        value='included', **CBUTTON_CONFIG)
+        b.grid(row=row, column=3, sticky='w')
+        row += 1
+
+        # Separater
+        Frame(oframe7, background=BG_COLOR).grid(row=row, column=1, pady=3)
+        row += 1
+
+        # --parse-only, --introspect-only
+        l = Label(oframe7, text="Get docs from:", **COLOR_CONFIG)
+        l.grid(row=row, column=0, sticky='e')
+        iop_var = self._introspect_or_parse_var = StringVar(self._root)
+        self._introspect_or_parse_var.set('both')
+        b = Radiobutton(oframe7, var=iop_var, text='Parsing',
+                        value='parse', **CBUTTON_CONFIG)
+        b.grid(row=row, column=1, sticky='w')
+        b = Radiobutton(oframe7, var=iop_var, text='Introspecting',
+                        value='introspect', **CBUTTON_CONFIG)
+        b.grid(row=row, column=2, sticky='w')
+        b = Radiobutton(oframe7, var=iop_var, text='Both',
+                        value='both', **CBUTTON_CONFIG)
+        b.grid(row=row, column=3, sticky='w')
+        row += 1
+
+        #==================== oframe5 ====================
+        # --help-file FILE
+        row = 0
+        self._help_var = StringVar(self._root)
+        self._help_var.set('default')
+        b = Radiobutton(oframe5, var=self._help_var,
+                        text='Default',
+                        value='default', **CBUTTON_CONFIG)
+        b.grid(row=row, column=1, sticky='w')
+        row += 1
+        b = Radiobutton(oframe5, var=self._help_var,
+                        text='Select File',
+                        value='-other-', **CBUTTON_CONFIG)
+        b.grid(row=row, column=1, sticky='w')
+        self._help_entry = Entry(oframe5, **ENTRY_CONFIG)
+        self._help_entry.grid(row=row, column=2, sticky='ew')
+        self._help_browse = Button(oframe5, text='Browse',
+                                   command=self._browse_help,
+                                   **BUTTON_CONFIG)
+        self._help_browse.grid(row=row, column=3, sticky='ew', padx=2)
+        
+        from epydoc.docwriter.html_css import STYLESHEETS
+        items = STYLESHEETS.items()
+        def _css_sort(css1, css2):
+            if css1[0] == 'default': return -1
+            elif css2[0] == 'default': return 1
+            else: return cmp(css1[0], css2[0])
+        items.sort(_css_sort)
+
+        #==================== oframe6 ====================
+        # -c CSS, --css CSS
+        # --private-css CSS
+        row = 0
+        #l = Label(oframe6, text="Public", **COLOR_CONFIG)
+        #l.grid(row=row, column=0, sticky='e')
+        #l = Label(oframe6, text="Private", **COLOR_CONFIG)
+        #l.grid(row=row, column=1, sticky='w')
+        row += 1
+        css_var = self._css_var = StringVar(self._root)
+        css_var.set('default')
+        #private_css_var = self._private_css_var = StringVar(self._root)
+        #private_css_var.set('default')
+        for (name, (sheet, descr)) in items:
+            b = Radiobutton(oframe6, var=css_var, value=name, **CBUTTON_CONFIG)
+            b.grid(row=row, column=0, sticky='e')
+            #b = Radiobutton(oframe6, var=private_css_var, value=name, 
+            #                text=name, **CBUTTON_CONFIG)
+            #b.grid(row=row, column=1, sticky='w')
+            l = Label(oframe6, text=descr, **COLOR_CONFIG)
+            l.grid(row=row, column=1, sticky='w')
+            row += 1
+        b = Radiobutton(oframe6, var=css_var, value='-other-',
+                        **CBUTTON_CONFIG)
+        b.grid(row=row, column=0, sticky='e')
+        #b = Radiobutton(oframe6, text='Select File', var=private_css_var, 
+        #                value='-other-', **CBUTTON_CONFIG)
+        #b.grid(row=row, column=1, sticky='w')
+        #l = Label(oframe6, text='Select File', **COLOR_CONFIG)
+        #l.grid(row=row, column=1, sticky='w')
+        self._css_entry = Entry(oframe6, **ENTRY_CONFIG)
+        self._css_entry.grid(row=row, column=1, sticky='ew')
+        self._css_browse = Button(oframe6, text="Browse",
+                                  command=self._browse_css,
+                                  **BUTTON_CONFIG) 
+        self._css_browse.grid(row=row, column=2, sticky='ew', padx=2)
+
+    def _init_bindings(self):
+        self._root.bind('<Delete>', self._delete_module)
+        self._root.bind('<Alt-o>', self._options_toggle)
+        self._root.bind('<Alt-m>', self._messages_toggle)
+        self._root.bind('<F5>', self._go)
+        self._root.bind('<Alt-s>', self._go)
+        
+        self._root.bind('<Control-n>', self._new)
+        self._root.bind('<Control-o>', self._open)
+        self._root.bind('<Control-s>', self._save)
+        self._root.bind('<Control-a>', self._saveas)
+
+    def _options_toggle(self, *e):
+        if self._options_visible:
+            self._optsframe.forget()
+            self._option_button['image'] = self._rightImage
+            self._options_visible = 0
+        else:
+            self._optsframe.pack(fill='both', side='right')
+            self._option_button['image'] = self._leftImage
+            self._options_visible = 1
+
+    def _messages_toggle(self, *e):
+        if self._messages_visible:
+            self._msgsframe.forget()
+            self._message_button['image'] = self._rightImage
+            self._messages_visible = 0
+        else:
+            self._msgsframe.pack(fill='both', side='bottom', expand=1)
+            self._message_button['image'] = self._leftImage
+            self._messages_visible = 1
+
+    def _configure(self, event):
+        self._W = event.width-DW
+
+    def _delete_module(self, *e):
+        selection = self._module_list.curselection()
+        if len(selection) != 1: return
+        self._module_list.delete(selection[0])
+
+    def _entry_module(self, *e):
+        modules = [self._module_entry.get()]
+        if glob.has_magic(modules[0]):
+            modules = glob.glob(modules[0])
+        for name in modules:
+            self.add_module(name, check=1)
+        self._module_entry.delete(0, 'end')
+
+    def _browse_module(self, *e):
+        title = 'Select a module for documentation'
+        ftypes = [('Python module', '.py'),
+                  ('Python extension', '.so'),
+                  ('All files', '*')]
+        filename = askopenfilename(filetypes=ftypes, title=title,
+                                   defaultextension='.py',
+                                   initialdir=self._init_dir)
+        if not filename: return
+        self._init_dir = os.path.dirname(filename)
+        self.add_module(filename, check=1)
+        
+    def _browse_css(self, *e):
+        title = 'Select a CSS stylesheet'
+        ftypes = [('CSS Stylesheet', '.css'), ('All files', '*')]
+        filename = askopenfilename(filetypes=ftypes, title=title,
+                                   defaultextension='.css')
+        if not filename: return
+        self._css_entry.delete(0, 'end')
+        self._css_entry.insert(0, filename)
+
+    def _browse_help(self, *e):
+        title = 'Select a help file'
+        self._help_var.set('-other-')
+        ftypes = [('HTML file', '.html'), ('All files', '*')]
+        filename = askopenfilename(filetypes=ftypes, title=title,
+                                   defaultextension='.html')
+        if not filename: return
+        self._help_entry.delete(0, 'end')
+        self._help_entry.insert(0, filename)
+
+    def _browse_out(self, *e):
+        ftypes = [('All files', '*')]
+        title = 'Choose the output directory'
+        if askdirectory is not None:
+            filename = askdirectory(mustexist=0, title=title)
+            if not filename: return
+        else:
+            # Hack for Python 2.1 or earlier:
+            filename = asksaveasfilename(filetypes=ftypes, title=title,
+                                         initialfile='--this directory--')
+            if not filename: return
+            (f1, f2) = os.path.split(filename)
+            if f2 == '--this directory--': filename = f1
+        self._out_entry.delete(0, 'end')
+        self._out_entry.insert(0, filename)
+
+    def destroy(self, *e):
+        if self._root is None: return
+
+        # Unload any modules that we've imported
+        for m in sys.modules.keys():
+            if m not in self._old_modules: del sys.modules[m]
+        self._root.destroy()
+        self._root = None
+
+    def add_module(self, name, check=0):
+        from epydoc.util import is_package_dir, is_pyname, is_module_file
+        from epydoc.docintrospecter import get_value_from_name
+        from epydoc.docintrospecter import get_value_from_filename
+
+        if (os.path.isfile(name) or is_package_dir(name) or is_pyname(name)):
+            # Check that it's a good module, if requested.
+            if check:
+                try:
+                    if is_module_file(name) or is_package_dir(name):
+                        get_value_from_filename(name)
+                    elif os.path.isfile(name):
+                        get_value_from_scriptname(name)
+                    else:
+                        get_value_from_name(name)
+                except ImportError, e:
+                    log.error(e)
+                    self._update_messages()
+                    self._root.bell()
+                    return
+            
+            # Add the module to the list of modules.
+            self._module_list.insert('end', name)
+            self._module_list.yview('end')
+        else:
+            log.error("Couldn't find %r" % name)
+            self._update_messages()
+            self._root.bell()
+        
+    def mainloop(self, *args, **kwargs):
+        self._root.mainloop(*args, **kwargs)
+
+    def _getopts(self):
+        options = {}
+        options['modules'] = self._module_list.get(0, 'end')
+        options['prj_name'] = self._name_entry.get() or ''
+        options['prj_url'] = self._url_entry.get() or None
+        options['docformat'] = self._docformat_var.get()
+        options['inheritance'] = self._inheritance_var.get()
+        options['introspect_or_parse'] = self._introspect_or_parse_var.get()
+        options['target'] = self._out_entry.get() or 'html'
+        options['frames'] = self._frames_var.get()
+        options['private'] = self._private_var.get()
+        options['show_imports'] = self._imports_var.get()
+        if self._help_var.get() == '-other-':
+            options['help'] = self._help_entry.get() or None
+        else:
+            options['help'] = None
+        if self._css_var.get() == '-other-':
+            options['css'] = self._css_entry.get() or 'default'
+        else:
+            options['css'] = self._css_var.get() or 'default'
+        #if self._private_css_var.get() == '-other-':
+        #    options['private_css'] = self._css_entry.get() or 'default'
+        #else:
+        #    options['private_css'] = self._private_css_var.get() or 'default'
+        return options
+    
+    def _go(self, *e):
+        if len(self._module_list.get(0,'end')) == 0:
+            self._root.bell()
+            return
+
+        if self._progress[0] != None:
+            self._cancel[0] = 1
+            return
+
+        # Construct the argument list for document().
+        opts = self._getopts()
+        self._progress[0] = 0.0
+        self._cancel[0] = 0
+        args = (opts, self._cancel, self._progress)
+
+        # Clear the messages window.
+        self._messages['state'] = 'normal'
+        self._messages.delete('0.0', 'end')
+        self._messages['state'] = 'disabled'
+        self._logger.clear()
+
+        # Restore the module list.  This will force re-loading of
+        # anything that we're documenting.
+        for m in sys.modules.keys():
+            if m not in self._old_modules:
+                del sys.modules[m]
+
+        # [xx] Reset caches??
+    
+        # Start documenting
+        start_new_thread(document, args)
+
+        # Start the progress bar.
+        self._go_button['text'] = 'Stop'
+        self._afterid += 1
+        dt = 300 # How often to update, in milliseconds
+        self._update(dt, self._afterid)
+
+    def _update_messages(self):
+        while 1:
+            level, data = self._logger.read()
+            if data is None: break
+            self._messages['state'] = 'normal'
+            if level == 'header':
+                self._messages.insert('end', data, 'header')
+            elif level == 'uline':
+                self._messages.insert('end', data, 'uline header')
+            elif level >= log.ERROR:
+                data= data.rstrip()+'\n\n'
+                self._messages.insert('end', data, 'guierror')
+            elif level >= log.DOCSTRING_WARNING:
+                data= data.rstrip()+'\n\n'
+                self._messages.insert('end', data, 'warning')
+            elif log >= log.INFO:
+                data= data.rstrip()+'\n\n'
+                self._messages.insert('end', data, 'message')
+#                 if data == '\n':
+#                     if self._last_tag != 'header2':
+#                         self._messages.insert('end', '\n', self._last_tag)
+#                 elif data == '='*75:
+#                     if self._messages.get('end-3c', 'end') == '\n\n\n':
+#                         self._messages.delete('end-1c')
+#                     self._in_header = 1
+#                     self._messages.insert('end', ' '*75, 'uline header')
+#                     self._last_tag = 'header'
+#                 elif data == '-'*75:
+#                     self._in_header = 0
+#                     self._last_tag = 'header2'
+#                 elif self._in_header:
+#                     self._messages.insert('end', data, 'header')
+#                     self._last_tag = 'header'
+#                 elif re.match(r'\s*(L\d+:|-)?\s*Warning: ', data):
+#                     self._messages.insert('end', data, 'warning')
+#                     self._last_tag = 'warning'
+#                 else:
+#                     self._messages.insert('end', data, 'error')
+#                     self._last_tag = 'error'
+
+            self._messages['state'] = 'disabled'
+            self._messages.yview('end')
+
+    def _update(self, dt, id):
+        if self._root is None: return
+        if self._progress[0] is None: return
+        if id != self._afterid: return
+
+        # Update the messages box
+        self._update_messages()
+
+        # Update the progress bar.
+        if self._progress[0] == 'done': p = self._W + DX
+        elif self._progress[0] == 'cancel': p = -5
+        else: p = DX + self._W * self._progress[0]
+        self._canvas.coords(self._r1, DX+1, DY+1, p, self._H+1)
+        self._canvas.coords(self._r2, DX, DY, p-1, self._H)
+        self._canvas.coords(self._r3, DX+1, DY+1, p, self._H+1)
+
+        # Are we done?
+        if self._progress[0] in ('done', 'cancel'):
+            if self._progress[0] == 'cancel': self._root.bell()
+            self._go_button['text'] = 'Start'
+            self._progress[0] = None
+            return
+
+        self._root.after(dt, self._update, dt, id)
+
+    def _new(self, *e):
+        self._module_list.delete(0, 'end')
+        self._name_entry.delete(0, 'end')
+        self._url_entry.delete(0, 'end')
+        self._docformat_var.set('epytext')
+        self._inheritance_var.set('grouped')
+        self._introspect_or_parse_var.set('both')
+        self._out_entry.delete(0, 'end')
+        self._module_entry.delete(0, 'end')
+        self._css_entry.delete(0, 'end')
+        self._help_entry.delete(0, 'end')
+        self._frames_var.set(1)
+        self._private_var.set(1)
+        self._imports_var.set(0)
+        self._css_var.set('default')
+        #self._private_css_var.set('default')
+        self._help_var.set('default')
+        self._filename = None
+        self._init_dir = None
+
+    def _open(self, *e):
+        title = 'Open project'
+        ftypes = [('Project file', '.prj'),
+                  ('All files', '*')]
+        filename = askopenfilename(filetypes=ftypes, title=title,
+                                   defaultextension='.css')
+        if not filename: return
+        self.open(filename)
+
+    def open(self, prjfile):
+        from epydoc.docwriter.html_css import STYLESHEETS
+        self._filename = prjfile
+        try:
+            opts = load(open(prjfile, 'r'))
+            
+            modnames = list(opts.get('modules', []))
+            modnames.sort()
+            self._module_list.delete(0, 'end')
+            for name in modnames:
+                self.add_module(name)
+            self._module_entry.delete(0, 'end')
+                
+            self._name_entry.delete(0, 'end')
+            if opts.get('prj_name'):
+                self._name_entry.insert(0, opts['prj_name'])
+                
+            self._url_entry.delete(0, 'end')
+            if opts.get('prj_url'):
+                self._url_entry.insert(0, opts['prj_url'])
+
+            self._docformat_var.set(opts.get('docformat', 'epytext'))
+            self._inheritance_var.set(opts.get('inheritance', 'grouped'))
+            self._introspect_or_parse_var.set(
+                opts.get('introspect_or_parse', 'both'))
+
+            self._help_entry.delete(0, 'end')
+            if opts.get('help') is None:
+                self._help_var.set('default')
+            else:
+                self._help_var.set('-other-')
+                self._help_entry.insert(0, opts.get('help'))
+                
+            self._out_entry.delete(0, 'end')
+            self._out_entry.insert(0, opts.get('target', 'html'))
+
+            self._frames_var.set(opts.get('frames', 1))
+            self._private_var.set(opts.get('private', 1))
+            self._imports_var.set(opts.get('show_imports', 0))
+            
+            self._css_entry.delete(0, 'end')
+            if opts.get('css', 'default') in STYLESHEETS.keys():
+                self._css_var.set(opts.get('css', 'default'))
+            else:
+                self._css_var.set('-other-')
+                self._css_entry.insert(0, opts.get('css', 'default'))
+
+            #if opts.get('private_css', 'default') in STYLESHEETS.keys():
+            #    self._private_css_var.set(opts.get('private_css', 'default'))
+            #else:
+            #    self._private_css_var.set('-other-')
+            #    self._css_entry.insert(0, opts.get('private_css', 'default'))
+                                                   
+        except Exception, e:
+            log.error('Error opening %s: %s' % (prjfile, e))
+            self._root.bell()
+        
+    def _save(self, *e):
+        if self._filename is None: return self._saveas()
+        try:
+            opts = self._getopts()
+            dump(opts, open(self._filename, 'w'))
+        except Exception, e:
+            if self._filename is None:
+                log.error('Error saving: %s' %  e)
+            else:
+                log.error('Error saving %s: %s' % (self._filename, e))
+            self._root.bell()
+             
+    def _saveas(self, *e):
+        title = 'Save project as'
+        ftypes = [('Project file', '.prj'), ('All files', '*')]
+        filename = asksaveasfilename(filetypes=ftypes, title=title,
+                                     defaultextension='.prj')
+        if not filename: return
+        self._filename = filename
+        self._save()
+
+def _version():
+    """
+    Display the version information, and exit.
+    @rtype: C{None}
+    """
+    import epydoc
+    print "Epydoc version %s" % epydoc.__version__
+    sys.exit(0)
+
+# At some point I could add:
+#   --show-messages, --hide-messages
+#   --show-options, --hide-options
+def _usage():
+    print
+    print 'Usage: epydocgui [OPTIONS] [FILE.prj | MODULES...]'
+    print
+    print '    FILE.prj                  An epydoc GUI project file.'
+    print '    MODULES...                A list of Python modules to document.'
+    print '    -V, --version             Print the version of epydoc.'
+    print '    -h, -?, --help, --usage   Display this usage message'
+    print '    --debug                   Do not suppress error messages'
+    print
+    sys.exit(0)
+
+def _error(s):
+    s = '%s; run "%s -h" for usage' % (s, os.path.basename(sys.argv[0]))
+    if len(s) > 80:
+        i = s.rfind(' ', 0, 80)
+        if i>0: s = s[:i]+'\n'+s[i+1:]
+    print >>sys.stderr, s
+    sys.exit(1)
+    
+def gui():
+    global DEBUG
+    sys.stderr = sys.__stderr__
+    projects = []
+    modules = []
+    for arg in sys.argv[1:]:
+        if arg[0] == '-':
+            if arg != '-V': arg = arg.lower()
+            if arg in ('-h', '--help', '-?', '--usage'): _usage()
+            elif arg in ('-V', '--version'): _version()
+            elif arg in ('--debug',): DEBUG = 1
+            else:
+                _error('Unknown parameter %r' % arg)
+        elif arg[-4:] == '.prj': projects.append(arg)
+        else: modules.append(arg)
+
+    if len(projects) > 1:
+        _error('Too many projects')
+    if len(projects) == 1:
+        if len(modules) > 0:
+            _error('You must specify either a project or a list of modules')
+        if not os.path.exists(projects[0]):
+            _error('Cannot open project file %s' % projects[0])
+        gui = EpydocGUI()
+        gui.open(projects[0])
+        gui.mainloop()
+    else:
+        gui = EpydocGUI()
+        for module in modules: gui.add_module(module, check=1)
+        gui.mainloop()
+
+if __name__ == '__main__': gui()
+
diff --git a/epydoc/log.py b/epydoc/log.py
new file mode 100644
index 0000000..e6fae68
--- /dev/null
+++ b/epydoc/log.py
@@ -0,0 +1,204 @@
+# epydoc -- Logging
+#
+# Copyright (C) 2005 Edward Loper
+# Author: Edward Loper <edloper at loper.org>
+# URL: <http://epydoc.sf.net>
+#
+# $Id: log.py 1488 2007-02-14 00:34:27Z edloper $
+
+"""
+Functions used to report messages and progress updates to the user.
+These functions are delegated to zero or more registered L{Logger}
+objects, which are responsible for actually presenting the information
+to the user.  Different interfaces are free to create and register
+their own C{Logger}s, allowing them to present this information in the
+manner that is best suited to each interface.
+
+ at note: I considered using the standard C{logging} package to provide
+this functionality.  However, I found that it would be too difficult
+to get that package to provide the behavior I want (esp. with respect
+to progress displays; but also with respect to message blocks).
+
+ at group Message Severity Levels: DEBUG, INFO, WARNING, ERROR, FATAL
+"""
+__docformat__ = 'epytext en'
+
+import sys, os
+
+DEBUG = 10
+INFO = 20
+DOCSTRING_WARNING = 25
+WARNING = 30
+ERROR = 40
+FATAL = 40
+
+######################################################################
+# Logger Base Class
+######################################################################
+class Logger:
+    """
+    An abstract base class that defines the interface for X{loggers},
+    which are used by epydoc to report information back to the user.
+    Loggers are responsible for tracking two types of information:
+    
+        - Messages, such as warnings and errors.
+        - Progress on the current task.
+
+    This abstract class allows the command-line interface and the
+    graphical interface to each present this information to the user
+    in the way that's most natural for each interface.  To set up a
+    logger, create a subclass of C{Logger} that overrides all methods,
+    and register it using L{register_logger}.
+    """
+    #////////////////////////////////////////////////////////////
+    # Messages
+    #////////////////////////////////////////////////////////////
+
+    def log(self, level, message):
+        """
+        Display a message.
+
+        @param message: The message string to display.  C{message} may
+        contain newlines, but does not need to end in a newline.
+        @param level: An integer value indicating the severity of the
+        message.
+        """
+
+    def close(self):
+        """
+        Perform any tasks needed to close this logger.
+        """
+
+    #////////////////////////////////////////////////////////////
+    # Message blocks
+    #////////////////////////////////////////////////////////////
+    
+    def start_block(self, header):
+        """
+        Start a new message block.  Any calls to L{info()},
+        L{warning()}, or L{error()} that occur between a call to
+        C{start_block} and a corresponding call to C{end_block} will
+        be grouped together, and displayed with a common header.
+        C{start_block} can be called multiple times (to form nested
+        blocks), but every call to C{start_block} I{must} be balanced
+        by a call to C{end_block}.
+        """
+        
+    def end_block(self):
+        """
+        End a warning block.  See L{start_block} for details.
+        """
+
+    #////////////////////////////////////////////////////////////
+    # Progress bar
+    #////////////////////////////////////////////////////////////
+    
+    def start_progress(self, header=None):
+        """
+        Begin displaying progress for a new task.  C{header} is a
+        description of the task for which progress is being reported.
+        Each call to C{start_progress} must be followed by a call to
+        C{end_progress} (with no intervening calls to
+        C{start_progress}).
+        """
+
+    def end_progress(self):
+        """
+        Finish off the display of progress for the current task.  See
+        L{start_progress} for more information.
+        """
+
+    def progress(self, percent, message=''):
+        """
+        Update the progress display.
+        
+        @param percent: A float from 0.0 to 1.0, indicating how much
+            progress has been made.
+        @param message: A message indicating the most recent action
+            that contributed towards that progress.
+        """
+
+class SimpleLogger(Logger):
+    def __init__(self, threshold=WARNING):
+        self.threshold = threshold
+    def log(self, level, message):
+        if level >= self.threshold: print message
+        
+######################################################################
+# Logger Registry
+######################################################################
+
+_loggers = []
+"""
+The list of registered logging functions.
+"""
+
+def register_logger(logger):
+    """
+    Register a logger.  Each call to one of the logging functions
+    defined by this module will be delegated to each registered
+    logger.
+    """
+    _loggers.append(logger)
+
+def remove_logger(logger):
+    _loggers.remove(logger)
+
+######################################################################
+# Logging Functions
+######################################################################
+# The following methods all just delegate to the corresponding 
+# methods in the Logger class (above) for each registered logger.
+
+def fatal(*messages):
+    """Display the given fatal message."""
+    message = ' '.join(['%s' % (m,) for m in messages])
+    for logger in _loggers: logger.log(FATAL, message)
+    
+def error(*messages):
+    """Display the given error message."""
+    message = ' '.join(['%s' % (m,) for m in messages])
+    for logger in _loggers: logger.log(ERROR, message)
+    
+def warning(*messages):
+    """Display the given warning message."""
+    message = ' '.join(['%s' % (m,) for m in messages])
+    for logger in _loggers: logger.log(WARNING, message)
+    
+def docstring_warning(*messages):
+    """Display the given docstring warning message."""
+    message = ' '.join(['%s' % (m,) for m in messages])
+    for logger in _loggers: logger.log(DOCSTRING_WARNING, message)
+    
+def info(*messages):
+    """Display the given informational message."""
+    message = ' '.join(['%s' % (m,) for m in messages])
+    for logger in _loggers: logger.log(INFO, message)
+    
+def debug(*messages):
+    """Display the given debugging message."""
+    message = ' '.join(['%s' % (m,) for m in messages])
+    for logger in _loggers: logger.log(DEBUG, message)
+    
+def start_block(header):
+    for logger in _loggers: logger.start_block(header)
+start_block.__doc__ = Logger.start_block.__doc__
+    
+def end_block():
+    for logger in _loggers: logger.end_block()
+end_block.__doc__ = Logger.end_block.__doc__
+    
+def start_progress(header=None):
+    for logger in _loggers: logger.start_progress(header)
+start_progress.__doc__ = Logger.start_progress.__doc__
+    
+def end_progress():
+    for logger in _loggers: logger.end_progress()
+end_progress.__doc__ = Logger.end_progress.__doc__
+    
+def progress(percent, message=''):
+    for logger in _loggers: logger.progress(percent, '%s' % message)
+progress.__doc__ = Logger.progress.__doc__
+
+def close():
+    for logger in _loggers: logger.close()
diff --git a/epydoc/markup/__init__.py b/epydoc/markup/__init__.py
new file mode 100644
index 0000000..2b9565c
--- /dev/null
+++ b/epydoc/markup/__init__.py
@@ -0,0 +1,623 @@
+#
+# epydoc package file
+#
+# A python documentation Module
+# Edward Loper
+#
+# $Id: __init__.py 1577 2007-03-09 23:26:21Z dvarrazzo $
+#
+
+"""
+Markup language support for docstrings.  Each submodule defines a
+parser for a single markup language.  These parsers convert an
+object's docstring to a L{ParsedDocstring}, a standard intermediate
+representation that can be used to generate output.
+C{ParsedDocstring}s support the following operations:
+  - output generation (L{to_plaintext()<ParsedDocstring.to_plaintext>},
+    L{to_html()<ParsedDocstring.to_html>}, and
+    L{to_latex()<ParsedDocstring.to_latex>}).
+  - Summarization (L{summary()<ParsedDocstring.summary>}).
+  - Field extraction (L{split_fields()<ParsedDocstring.split_fields>}).
+  - Index term extraction (L{index_terms()<ParsedDocstring.index_terms>}.
+
+The L{parse()} function provides a single interface to the
+C{epydoc.markup} package: it takes a docstring and the name of a
+markup language; delegates to the appropriate parser; and returns the
+parsed docstring (along with any errors or warnings that were
+generated).
+
+The C{ParsedDocstring} output generation methods (C{to_M{format}()})
+use a L{DocstringLinker} to link the docstring output with the rest of
+the documentation that epydoc generates.  C{DocstringLinker}s are
+currently responsible for translating two kinds of crossreference:
+  - index terms (L{translate_indexterm()
+    <DocstringLinker.translate_indexterm>}).
+  - identifier crossreferences (L{translate_identifier_xref()
+    <DocstringLinker.translate_identifier_xref>}).
+
+A parsed docstring's fields can be extracted using the
+L{ParsedDocstring.split_fields()} method.  This method divides a
+docstring into its main body and a list of L{Field}s, each of which
+encodes a single field.  The field's bodies are encoded as
+C{ParsedDocstring}s.
+
+Markup errors are represented using L{ParseError}s.  These exception
+classes record information about the cause, location, and severity of
+each error.
+
+ at sort: parse, ParsedDocstring, Field, DocstringLinker
+ at group Errors and Warnings: ParseError
+ at group Utility Functions: parse_type_of
+ at var SCRWIDTH: The default width with which text will be wrapped
+      when formatting the output of the parser.
+ at type SCRWIDTH: C{int}
+ at var _parse_warnings: Used by L{_parse_warn}.
+"""
+__docformat__ = 'epytext en'
+
+import re, types, sys
+from epydoc import log
+from epydoc.util import plaintext_to_html, plaintext_to_latex
+import epydoc
+from epydoc.compat import *
+
+##################################################
+## Contents
+##################################################
+#
+# 1. parse() dispatcher
+# 2. ParsedDocstring abstract base class
+# 3. Field class
+# 4. Docstring Linker
+# 5. ParseError exceptions
+# 6. Misc helpers
+#
+
+##################################################
+## Dispatcher
+##################################################
+
+_markup_language_registry = {
+    'restructuredtext': 'epydoc.markup.restructuredtext',
+    'epytext': 'epydoc.markup.epytext',
+    'plaintext': 'epydoc.markup.plaintext',
+    'javadoc': 'epydoc.markup.javadoc',
+    }
+
+def register_markup_language(name, parse_function):
+    """
+    Register a new markup language named C{name}, which can be parsed
+    by the function C{parse_function}.
+
+    @param name: The name of the markup language.  C{name} should be a
+    simple identifier, such as C{'epytext'} or C{'restructuredtext'}.
+    Markup language names are case insensitive.
+
+    @param parse_function: A function which can be used to parse the
+        markup language, and returns a L{ParsedDocstring}.  It should
+        have the following signature:
+
+            >>> def parse(s, errors):
+            ...     'returns a ParsedDocstring'
+
+        Where:
+            - C{s} is the string to parse.  (C{s} will be a unicode
+              string.)
+            - C{errors} is a list; any errors that are generated
+              during docstring parsing should be appended to this
+              list (as L{ParseError} objects).
+    """
+    _markup_language_registry[name.lower()] = parse_function
+
+MARKUP_LANGUAGES_USED = set()
+
+def parse(docstring, markup='plaintext', errors=None, **options):
+    """
+    Parse the given docstring, and use it to construct a
+    C{ParsedDocstring}.  If any fatal C{ParseError}s are encountered
+    while parsing the docstring, then the docstring will be rendered
+    as plaintext, instead.
+
+    @type docstring: C{string}
+    @param docstring: The docstring to encode.
+    @type markup: C{string}
+    @param markup: The name of the markup language that is used by
+        the docstring.  If the markup language is not supported, then
+        the docstring will be treated as plaintext.  The markup name
+        is case-insensitive.
+    @param errors: A list where any errors generated during parsing
+        will be stored.  If no list is specified, then fatal errors
+        will generate exceptions, and non-fatal errors will be
+        ignored.
+    @type errors: C{list} of L{ParseError}
+    @rtype: L{ParsedDocstring}
+    @return: A L{ParsedDocstring} that encodes the contents of
+        C{docstring}.
+    @raise ParseError: If C{errors} is C{None} and an error is
+        encountered while parsing.
+    """
+    # Initialize errors list.
+    raise_on_error = (errors is None)
+    if errors == None: errors = []
+
+    # Normalize the markup language name.
+    markup = markup.lower()
+
+    # Is the markup language valid?
+    if not re.match(r'\w+', markup):
+        _parse_warn('Bad markup language name %r.  Treating '
+                    'docstrings as plaintext.' % markup)
+        import epydoc.markup.plaintext as plaintext
+        return plaintext.parse_docstring(docstring, errors, **options)
+
+    # Is the markup language supported?
+    if markup not in _markup_language_registry:
+        _parse_warn('Unsupported markup language %r.  Treating '
+                    'docstrings as plaintext.' % markup)
+        import epydoc.markup.plaintext as plaintext
+        return plaintext.parse_docstring(docstring, errors, **options)
+
+    # Get the parse function.
+    parse_docstring = _markup_language_registry[markup]
+
+    # If it's a string, then it names a function to import.
+    if isinstance(parse_docstring, basestring):
+        try: exec('from %s import parse_docstring' % parse_docstring)
+        except ImportError, e:
+            _parse_warn('Error importing %s for markup language %s: %s' %
+                        (parse_docstring, markup, e))
+            import epydoc.markup.plaintext as plaintext
+            return plaintext.parse_docstring(docstring, errors, **options)
+        _markup_language_registry[markup] = parse_docstring
+
+    # Keep track of which markup languages have been used so far.
+    MARKUP_LANGUAGES_USED.add(markup)
+
+    # Parse the docstring.
+    try: parsed_docstring = parse_docstring(docstring, errors, **options)
+    except KeyboardInterrupt: raise
+    except Exception, e:
+        if epydoc.DEBUG: raise
+        log.error('Internal error while parsing a docstring: %s; '
+                  'treating docstring as plaintext' % e)
+        import epydoc.markup.plaintext as plaintext
+        return plaintext.parse_docstring(docstring, errors, **options)
+
+    # Check for fatal errors.
+    fatal_errors = [e for e in errors if e.is_fatal()]
+    if fatal_errors and raise_on_error: raise fatal_errors[0]
+    if fatal_errors:
+        import epydoc.markup.plaintext as plaintext
+        return plaintext.parse_docstring(docstring, errors, **options)
+
+    return parsed_docstring
+
+# only issue each warning once:
+_parse_warnings = {}
+def _parse_warn(estr):
+    """
+    Print a warning message.  If the given error has already been
+    printed, then do nothing.
+    """
+    global _parse_warnings
+    if estr in _parse_warnings: return
+    _parse_warnings[estr] = 1
+    log.warning(estr)
+
+##################################################
+## ParsedDocstring
+##################################################
+class ParsedDocstring:
+    """
+    A standard intermediate representation for parsed docstrings that
+    can be used to generate output.  Parsed docstrings are produced by
+    markup parsers (such as L{epytext.parse} or L{javadoc.parse}).
+    C{ParsedDocstring}s support several kinds of operation:    
+      - output generation (L{to_plaintext()}, L{to_html()}, and
+        L{to_latex()}).
+      - Summarization (L{summary()}).
+      - Field extraction (L{split_fields()}).
+      - Index term extraction (L{index_terms()}.
+
+    The output generation methods (C{to_M{format}()}) use a
+    L{DocstringLinker} to link the docstring output with the rest
+    of the documentation that epydoc generates.
+
+    Subclassing
+    ===========
+    The only method that a subclass is I{required} to implement is
+    L{to_plaintext()}; but it is often useful to override the other
+    methods.  The default behavior of each method is described below:
+      - C{to_I{format}}: Calls C{to_plaintext}, and uses the string it
+        returns to generate verbatim output.
+      - C{summary}: Returns C{self} (i.e., the entire docstring).
+      - C{split_fields}: Returns C{(self, [])} (i.e., extracts no
+        fields).
+      - C{index_terms}: Returns C{[]} (i.e., extracts no index terms).
+
+    If and when epydoc adds more output formats, new C{to_I{format}}
+    methods will be added to this base class; but they will always
+    be given a default implementation.
+    """
+    def split_fields(self, errors=None):
+        """
+        Split this docstring into its body and its fields.
+        
+        @return: A tuple C{(M{body}, M{fields})}, where C{M{body}} is
+            the main body of this docstring, and C{M{fields}} is a list
+            of its fields.  If the resulting body is empty, return
+            C{None} for the body.
+        @rtype: C{(L{ParsedDocstring}, list of L{Field})}
+        @param errors: A list where any errors generated during
+            splitting will be stored.  If no list is specified, then
+            errors will be ignored.
+        @type errors: C{list} of L{ParseError}
+        """
+        # Default behavior:
+        return self, []
+
+    def summary(self):
+        """
+        @return: A pair consisting of a short summary of this docstring and a
+            boolean value indicating whether there is further documentation
+            in addition to the summary. Typically, the summary consists of the
+            first sentence of the docstring.
+        @rtype: (L{ParsedDocstring}, C{bool})
+        """
+        # Default behavior:
+        return self, False
+
+    def concatenate(self, other):
+        """
+        @return: A new parsed docstring containing the concatination
+            of this docstring and C{other}.
+        @raise ValueError: If the two parsed docstrings are
+            incompatible.
+        """
+        return ConcatenatedDocstring(self, other)
+
+    def __add__(self, other): return self.concatenate(other)
+
+    def to_html(self, docstring_linker, **options):
+        """
+        Translate this docstring to HTML.
+
+        @param docstring_linker: An HTML translator for crossreference
+            links into and out of the docstring.
+        @type docstring_linker: L{DocstringLinker}
+        @param options: Any extra options for the output.  Unknown
+            options are ignored.
+        @return: An HTML fragment that encodes this docstring.
+        @rtype: C{string}
+        """
+        # Default behavior:
+        plaintext = plaintext_to_html(self.to_plaintext(docstring_linker))
+        return '<pre class="literalblock">\n%s\n</pre>\n' % plaintext
+
+    def to_latex(self, docstring_linker, **options):
+        """
+        Translate this docstring to LaTeX.
+        
+        @param docstring_linker: A LaTeX translator for crossreference
+            links into and out of the docstring.
+        @type docstring_linker: L{DocstringLinker}
+        @param options: Any extra options for the output.  Unknown
+            options are ignored.
+        @return: A LaTeX fragment that encodes this docstring.
+        @rtype: C{string}
+        """
+        # Default behavior:
+        plaintext = plaintext_to_latex(self.to_plaintext(docstring_linker))
+        return '\\begin{alltt}\n%s\\end{alltt}\n\n' % plaintext
+
+    def to_plaintext(self, docstring_linker, **options):
+        """
+        Translate this docstring to plaintext.
+        
+        @param docstring_linker: A plaintext translator for
+            crossreference links into and out of the docstring.
+        @type docstring_linker: L{DocstringLinker}
+        @param options: Any extra options for the output.  Unknown
+            options are ignored.
+        @return: A plaintext fragment that encodes this docstring.
+        @rtype: C{string}
+        """
+        raise NotImplementedError, 'ParsedDocstring.to_plaintext()'
+
+    def index_terms(self):
+        """
+        @return: The list of index terms that are defined in this
+            docstring.  Each of these items will be added to the index
+            page of the documentation.
+        @rtype: C{list} of C{ParsedDocstring}
+        """
+        # Default behavior:
+        return []
+
+##################################################
+## Concatenated Docstring
+##################################################
+class ConcatenatedDocstring:
+    def __init__(self, *parsed_docstrings):
+        self._parsed_docstrings = [pds for pds in parsed_docstrings
+                                   if pds is not None]
+        
+    def split_fields(self, errors=None):
+        bodies = []
+        fields = []
+        for doc in self._parsed_docstrings:
+            b,f = doc.split_fields()
+            bodies.append(b)
+            fields.extend(f)
+
+        return ConcatenatedDocstring(*bodies), fields
+
+    def summary(self):
+        return self._parsed_docstrings[0].summary()
+
+    def to_html(self, docstring_linker, **options):
+        htmlstring = ''
+        for doc in self._parsed_docstrings:
+            htmlstring += doc.to_html(docstring_linker, **options)
+        return htmlstring
+
+    def to_latex(self, docstring_linker, **options):
+        latexstring = ''
+        for doc in self._parsed_docstrings:
+            latexstring += doc.to_latex(docstring_linker, **options)
+        return latexstring
+
+    def to_plaintext(self, docstring_linker, **options):
+        textstring = ''
+        for doc in self._parsed_docstrings:
+            textstring += doc.to_plaintext(docstring_linker, **options)
+        return textstring
+
+    def index_terms(self):
+        terms = []
+        for doc in self._parsed_docstrings:
+            terms += doc.index_terms()
+        return terms
+    
+##################################################
+## Fields
+##################################################
+class Field:
+    """
+    The contents of a docstring's field.  Docstring fields are used
+    to describe specific aspects of an object, such as a parameter of
+    a function or the author of a module.  Each field consists of a
+    tag, an optional argument, and a body:
+      - The tag specifies the type of information that the field
+        encodes.
+      - The argument specifies the object that the field describes.
+        The argument may be C{None} or a C{string}.
+      - The body contains the field's information.
+
+    Tags are automatically downcased and stripped; and arguments are
+    automatically stripped.
+    """
+    def __init__(self, tag, arg, body):
+        self._tag = tag.lower().strip()
+        if arg is None: self._arg = None
+        else: self._arg = arg.strip()
+        self._body = body
+
+    def tag(self):
+        """
+        @return: This field's tag.
+        @rtype: C{string}
+        """
+        return self._tag
+
+    def arg(self):
+        """
+        @return: This field's argument, or C{None} if this field has
+            no argument.
+        @rtype: C{string} or C{None}
+        """
+        return self._arg
+
+    def body(self):
+        """
+        @return: This field's body.
+        @rtype: L{ParsedDocstring}
+        """
+        return self._body
+
+    def __repr__(self):
+        if self._arg is None:
+            return '<Field @%s: ...>' % self._tag
+        else:
+            return '<Field @%s %s: ...>' % (self._tag, self._arg)
+
+##################################################
+## Docstring Linker (resolves crossreferences)
+##################################################
+class DocstringLinker: 
+    """
+    A translator for crossreference links into and out of a
+    C{ParsedDocstring}.  C{DocstringLinker} is used by
+    C{ParsedDocstring} to convert these crossreference links into
+    appropriate output formats.  For example,
+    C{DocstringLinker.to_html} expects a C{DocstringLinker} that
+    converts crossreference links to HTML.
+    """
+    def translate_indexterm(self, indexterm):
+        """
+        Translate an index term to the appropriate output format.  The
+        output will typically include a crossreference anchor.
+
+        @type indexterm: L{ParsedDocstring}
+        @param indexterm: The index term to translate.
+        @rtype: C{string}
+        @return: The translated index term.
+        """
+        raise NotImplementedError, 'DocstringLinker.translate_indexterm()'
+
+    def translate_identifier_xref(self, identifier, label=None):
+        """
+        Translate a crossreference link to a Python identifier to the
+        appropriate output format.  The output will typically include
+        a reference or pointer to the crossreference target.
+
+        @type identifier: C{string}
+        @param identifier: The name of the Python identifier that
+            should be linked to.
+        @type label: C{string} or C{None}
+        @param label: The label that should be used for the identifier,
+            if it's different from the name of the identifier.
+        @rtype: C{string}
+        @return: The translated crossreference link.
+        """
+        raise NotImplementedError, 'DocstringLinker.translate_xref()'
+
+##################################################
+## ParseError exceptions
+##################################################
+
+class ParseError(Exception):
+    """
+    The base class for errors generated while parsing docstrings.
+
+    @ivar _linenum: The line on which the error occured within the
+        docstring.  The linenum of the first line is 0.
+    @type _linenum: C{int}
+    @ivar _offset: The line number where the docstring begins.  This
+        offset is added to C{_linenum} when displaying the line number
+        of the error.  Default value: 1.
+    @type _offset: C{int}
+    @ivar _descr: A description of the error.
+    @type _descr: C{string}
+    @ivar _fatal: True if this is a fatal error.
+    @type _fatal: C{boolean}
+    """
+    def __init__(self, descr, linenum=None, is_fatal=1):
+        """
+        @type descr: C{string}
+        @param descr: A description of the error.
+        @type linenum: C{int}
+        @param linenum: The line on which the error occured within
+            the docstring.  The linenum of the first line is 0.
+        @type is_fatal: C{boolean}
+        @param is_fatal: True if this is a fatal error.
+        """
+        self._descr = descr
+        self._linenum = linenum
+        self._fatal = is_fatal
+        self._offset = 1
+                 
+    def is_fatal(self):
+        """
+        @return: true if this is a fatal error.  If an error is fatal,
+            then epydoc should ignore the output of the parser, and
+            parse the docstring as plaintext.
+        @rtype: C{boolean}
+        """
+        return self._fatal
+
+    def linenum(self):
+        """
+        @return: The line number on which the error occured (including
+        any offset).  If the line number is unknown, then return
+        C{None}.
+        @rtype: C{int} or C{None}
+        """
+        if self._linenum is None: return None
+        else: return self._offset + self._linenum
+
+    def set_linenum_offset(self, offset):
+        """
+        Set the line number offset for this error.  This offset is the
+        line number where the docstring begins.  This offset is added
+        to C{_linenum} when displaying the line number of the error.
+
+        @param offset: The new line number offset.
+        @type offset: C{int}
+        @rtype: C{None}
+        """
+        self._offset = offset
+
+    def descr(self):
+        return self._descr
+    
+    def __str__(self):
+        """
+        Return a string representation of this C{ParseError}.  This
+        multi-line string contains a description of the error, and
+        specifies where it occured.
+        
+        @return: the informal representation of this C{ParseError}.
+        @rtype: C{string}
+        """
+        if self._linenum is not None:
+            return 'Line %s: %s' % (self._linenum+self._offset, self.descr())
+        else:
+            return self.descr()
+    
+    def __repr__(self):
+        """
+        Return the formal representation of this C{ParseError}.
+        C{ParseError}s have formal representations of the form::
+           <ParseError on line 12>
+
+        @return: the formal representation of this C{ParseError}.
+        @rtype: C{string}
+        """
+        if self._linenum is None:
+            return '<ParseError on line %d' % self._offset
+        else:
+            return '<ParseError on line %d>' % (self._linenum+self._offset)
+
+    def __cmp__(self, other):
+        """
+        Compare two C{ParseError}s, based on their line number.
+          - Return -1 if C{self.linenum<other.linenum}
+          - Return +1 if C{self.linenum>other.linenum}
+          - Return 0 if C{self.linenum==other.linenum}.
+        The return value is undefined if C{other} is not a
+        ParseError.
+
+        @rtype: C{int}
+        """
+        if not isinstance(other, ParseError): return -1000
+        return cmp(self._linenum+self._offset,
+                   other._linenum+other._offset)
+
+##################################################
+## Misc helpers
+##################################################
+# These are used by multiple markup parsers
+
+def parse_type_of(obj):
+    """
+    @return: A C{ParsedDocstring} that encodes the type of the given
+    object.
+    @rtype: L{ParsedDocstring}
+    @param obj: The object whose type should be returned as DOM document.
+    @type obj: any
+    """
+    # This is a bit hackish; oh well. :)
+    from epydoc.markup.epytext import ParsedEpytextDocstring
+    from xml.dom.minidom import Document
+    doc = Document()
+    epytext = doc.createElement('epytext')
+    para = doc.createElement('para')
+    doc.appendChild(epytext)
+    epytext.appendChild(para)
+    
+    if type(obj) is types.InstanceType:
+        link = doc.createElement('link')
+        name = doc.createElement('name')
+        target = doc.createElement('target')
+        para.appendChild(link)
+        link.appendChild(name)
+        link.appendChild(target)
+        name.appendChild(doc.createTextNode(str(obj.__class__.__name__)))
+        target.appendChild(doc.createTextNode(str(obj.__class__)))        
+    else:
+        code = doc.createElement('code')
+        para.appendChild(code)
+        code.appendChild(doc.createTextNode(type(obj).__name__))
+    return ParsedEpytextDocstring(doc)
+
diff --git a/epydoc/markup/doctest.py b/epydoc/markup/doctest.py
new file mode 100644
index 0000000..987df40
--- /dev/null
+++ b/epydoc/markup/doctest.py
@@ -0,0 +1,311 @@
+#
+# doctest.py: Syntax Highlighting for doctest blocks
+# Edward Loper
+#
+# Created [06/28/03 02:52 AM]
+# $Id: restructuredtext.py 1210 2006-04-10 13:25:50Z edloper $
+#
+
+"""
+Syntax highlighting for doctest blocks.  This module defines two
+functions, L{doctest_to_html()} and L{doctest_to_latex()}, which can
+be used to perform syntax highlighting on doctest blocks.  It also
+defines the more general C{colorize_doctest()}, which could be used to
+do syntac highlighting on doctest blocks with other output formats.
+(Both C{doctest_to_html()} and C{doctest_to_latex()} are defined using
+C{colorize_doctest()}.)
+"""
+__docformat__ = 'epytext en'
+
+import re
+from epydoc.util import plaintext_to_html, plaintext_to_latex
+
+__all__ = ['doctest_to_html', 'doctest_to_latex',
+           'DoctestColorizer', 'XMLDoctestColorizer', 
+           'HTMLDoctestColorizer', 'LaTeXDoctestColorizer']
+
+def doctest_to_html(s):
+    """
+    Perform syntax highlighting on the given doctest string, and
+    return the resulting HTML code.  This code consists of a C{<pre>}
+    block with class=py-doctest.  Syntax highlighting is performed
+    using the following css classes:
+    
+      - C{py-prompt} -- the Python PS1 prompt (>>>)
+      - C{py-more} -- the Python PS2 prompt (...)
+      - C{py-keyword} -- a Python keyword (for, if, etc.)
+      - C{py-builtin} -- a Python builtin name (abs, dir, etc.)
+      - C{py-string} -- a string literal
+      - C{py-comment} -- a comment
+      - C{py-except} -- an exception traceback (up to the next >>>)
+      - C{py-output} -- the output from a doctest block.
+      - C{py-defname} -- the name of a function or class defined by
+        a C{def} or C{class} statement.
+    """
+    return HTMLDoctestColorizer().colorize_doctest(s)
+
+def doctest_to_latex(s):
+    """
+    Perform syntax highlighting on the given doctest string, and
+    return the resulting LaTeX code.  This code consists of an
+    C{alltt} environment.  Syntax highlighting is performed using 
+    the following new latex commands, which must be defined externally:
+      - C{\pysrcprompt} -- the Python PS1 prompt (>>>)
+      - C{\pysrcmore} -- the Python PS2 prompt (...)
+      - C{\pysrckeyword} -- a Python keyword (for, if, etc.)
+      - C{\pysrcbuiltin} -- a Python builtin name (abs, dir, etc.)
+      - C{\pysrcstring} -- a string literal
+      - C{\pysrccomment} -- a comment
+      - C{\pysrcexcept} -- an exception traceback (up to the next >>>)
+      - C{\pysrcoutput} -- the output from a doctest block.
+      - C{\pysrcdefname} -- the name of a function or class defined by
+        a C{def} or C{class} statement.
+    """
+    return LaTeXDoctestColorizer().colorize_doctest(s)
+
+class DoctestColorizer:
+    """
+    An abstract base class for performing syntax highlighting on
+    doctest blocks and other bits of Python code.  Subclasses should
+    provide definitions for:
+
+      - The L{markup()} method, which takes a substring and a tag, and
+        returns a colorized version of the substring.
+      - The L{PREFIX} and L{SUFFIX} variables, which will be added
+        to the beginning and end of the strings returned by
+        L{colorize_codeblock} and L{colorize_doctest}.  
+    """
+
+    #: A string that is added to the beginning of the strings
+    #: returned by L{colorize_codeblock} and L{colorize_doctest}.
+    #: Typically, this string begins a preformatted area.
+    PREFIX = None
+
+    #: A string that is added to the end of the strings
+    #: returned by L{colorize_codeblock} and L{colorize_doctest}.
+    #: Typically, this string ends a preformatted area.
+    SUFFIX = None
+
+    #: A list of the names of all Python keywords.  ('as' is included
+    #: even though it is technically not a keyword.)
+    _KEYWORDS = ("and       del       for       is        raise"
+                 "assert    elif      from      lambda    return"
+                 "break     else      global    not       try"
+                 "class     except    if        or        while"
+                 "continue  exec      import    pass      yield"
+                 "def       finally   in        print     as").split()
+
+    #: A list of all Python builtins.
+    _BUILTINS = [_BI for _BI in dir(__builtins__)
+                 if not _BI.startswith('__')]
+
+    #: A regexp group that matches keywords.
+    _KEYWORD_GRP = '|'.join([r'\b%s\b' % _KW for _KW in _KEYWORDS])
+
+    #: A regexp group that matches Python builtins.
+    _BUILTIN_GRP = (r'(?<!\.)(?:%s)' % '|'.join([r'\b%s\b' % _BI
+                                                 for _BI in _BUILTINS]))
+
+    #: A regexp group that matches Python strings.
+    _STRING_GRP = '|'.join(
+        [r'("""("""|.*?((?!").)"""))', r'("("|.*?((?!").)"))',
+         r"('''('''|.*?[^\\']'''))", r"('('|.*?[^\\']'))"])
+
+    #: A regexp group that matches Python comments.
+    _COMMENT_GRP = '(#.*?$)'
+
+    #: A regexp group that matches Python ">>>" prompts.
+    _PROMPT1_GRP = r'^[ \t]*>>>(?:[ \t]|$)'
+    
+    #: A regexp group that matches Python "..." prompts.
+    _PROMPT2_GRP = r'^[ \t]*\.\.\.(?:[ \t]|$)'
+
+    #: A regexp group that matches function and class definitions.
+    _DEFINE_GRP = r'\b(?:def|class)[ \t]+\w+'
+
+    #: A regexp that matches Python prompts
+    PROMPT_RE = re.compile('(%s|%s)' % (_PROMPT1_GRP, _PROMPT2_GRP),
+                           re.MULTILINE | re.DOTALL)
+
+    #: A regexp that matches Python "..." prompts.
+    PROMPT2_RE = re.compile('(%s)' % _PROMPT2_GRP,
+                            re.MULTILINE | re.DOTALL)
+
+    #: A regexp that matches doctest exception blocks.
+    EXCEPT_RE = re.compile(r'^[ \t]*Traceback \(most recent call last\):.*',
+                           re.DOTALL | re.MULTILINE)
+
+    #: A regexp that matches doctest directives.
+    DOCTEST_DIRECTIVE_RE = re.compile(r'#[ \t]*doctest:.*')
+
+    #: A regexp that matches all of the regions of a doctest block
+    #: that should be colored.
+    DOCTEST_RE = re.compile(
+        r'(.*?)((?P<STRING>%s)|(?P<COMMENT>%s)|(?P<DEFINE>%s)|'
+              r'(?P<KEYWORD>%s)|(?P<BUILTIN>%s)|'
+              r'(?P<PROMPT1>%s)|(?P<PROMPT2>%s)|(?P<EOS>\Z))' % (
+        _STRING_GRP, _COMMENT_GRP, _DEFINE_GRP, _KEYWORD_GRP, _BUILTIN_GRP,
+        _PROMPT1_GRP, _PROMPT2_GRP), re.MULTILINE | re.DOTALL)
+
+    #: This regular expression is used to find doctest examples in a
+    #: string.  This is copied from the standard Python doctest.py
+    #: module (after the refactoring in Python 2.4+).
+    DOCTEST_EXAMPLE_RE = re.compile(r'''
+        # Source consists of a PS1 line followed by zero or more PS2 lines.
+        (?P<source>
+            (?:^(?P<indent> [ ]*) >>>    .*)    # PS1 line
+            (?:\n           [ ]*  \.\.\. .*)*   # PS2 lines
+          \n?)
+        # Want consists of any non-blank lines that do not start with PS1.
+        (?P<want> (?:(?![ ]*$)    # Not a blank line
+                     (?![ ]*>>>)  # Not a line starting with PS1
+                     .*$\n?       # But any other line
+                  )*)
+        ''', re.MULTILINE | re.VERBOSE)
+
+    def colorize_inline(self, s):
+        """
+        Colorize a string containing Python code.  Do not add the
+        L{PREFIX} and L{SUFFIX} strings to the returned value.  This
+        method is intended for generating syntax-highlighted strings
+        that are appropriate for inclusion as inline expressions.
+        """
+        return self.DOCTEST_RE.sub(self.subfunc, s)
+
+    def colorize_codeblock(self, s):
+        """
+        Colorize a string containing only Python code.  This method
+        differs from L{colorize_doctest} in that it will not search
+        for doctest prompts when deciding how to colorize the string.
+        """
+        body = self.DOCTEST_RE.sub(self.subfunc, s)
+        return self.PREFIX + body + self.SUFFIX
+
+    def colorize_doctest(self, s, strip_directives=False):
+        """
+        Colorize a string containing one or more doctest examples.
+        """
+        output = []
+        charno = 0
+        for m in self.DOCTEST_EXAMPLE_RE.finditer(s):
+            # Parse the doctest example:
+            pysrc, want = m.group('source', 'want')
+            # Pre-example text:
+            output.append(s[charno:m.start()])
+            # Example source code:
+            output.append(self.DOCTEST_RE.sub(self.subfunc, pysrc))
+            # Example output:
+            if want:
+                if self.EXCEPT_RE.match(want):
+                    output += '\n'.join([self.markup(line, 'except')
+                                         for line in want.split('\n')])
+                else:
+                    output += '\n'.join([self.markup(line, 'output')
+                                         for line in want.split('\n')])
+            # Update charno
+            charno = m.end()
+        # Add any remaining post-example text.
+        output.append(s[charno:])
+        
+        return self.PREFIX + ''.join(output) + self.SUFFIX
+    
+    def subfunc(self, match):
+        other, text = match.group(1, 2)
+        #print 'M %20r %20r' % (other, text) # <- for debugging
+        if other:
+            other = '\n'.join([self.markup(line, 'other')
+                               for line in other.split('\n')])
+            
+        if match.group('PROMPT1'):
+            return other + self.markup(text, 'prompt')
+        elif match.group('PROMPT2'):
+            return other + self.markup(text, 'more')
+        elif match.group('KEYWORD'):
+            return other + self.markup(text, 'keyword')
+        elif match.group('BUILTIN'):
+            return other + self.markup(text, 'builtin')
+        elif match.group('COMMENT'):
+            return other + self.markup(text, 'comment')
+        elif match.group('STRING') and '\n' not in text:
+            return other + self.markup(text, 'string')
+        elif match.group('STRING'):
+            # It's a multiline string; colorize the string & prompt
+            # portion of each line.
+            pieces = []
+            for line in text.split('\n'):
+                if self.PROMPT2_RE.match(line):
+                    if len(line) > 4:
+                        pieces.append(self.markup(line[:4], 'more') +
+                                      self.markup(line[4:], 'string'))
+                    else:
+                        pieces.append(self.markup(line[:4], 'more'))
+                elif line:
+                    pieces.append(self.markup(line, 'string'))
+                else:
+                    pieces.append('')
+            return other + '\n'.join(pieces)
+        elif match.group('DEFINE'):
+            m = re.match('(?P<def>\w+)(?P<space>\s+)(?P<name>\w+)', text)
+            return other + (self.markup(m.group('def'), 'keyword') +
+                        self.markup(m.group('space'), 'other') +
+                        self.markup(m.group('name'), 'defname'))
+        elif match.group('EOS') is not None:
+            return other
+        else:
+            assert 0, 'Unexpected match!'
+
+    def markup(self, s, tag):
+        """
+        Apply syntax highlighting to a single substring from a doctest
+        block.  C{s} is the substring, and C{tag} is the tag that
+        should be applied to the substring.  C{tag} will be one of the
+        following strings:
+        
+          - C{prompt} -- the Python PS1 prompt (>>>)
+          - C{more} -- the Python PS2 prompt (...)
+          - C{keyword} -- a Python keyword (for, if, etc.)
+          - C{builtin} -- a Python builtin name (abs, dir, etc.)
+          - C{string} -- a string literal
+          - C{comment} -- a comment
+          - C{except} -- an exception traceback (up to the next >>>)
+          - C{output} -- the output from a doctest block.
+          - C{defname} -- the name of a function or class defined by
+            a C{def} or C{class} statement.
+          - C{other} -- anything else (does *not* include output.)
+        """
+        raise AssertionError("Abstract method")
+
+class XMLDoctestColorizer(DoctestColorizer):
+    """
+    A subclass of DoctestColorizer that generates XML-like output.
+    This class is mainly intended to be used for testing purposes.
+    """
+    PREFIX = '<colorized>\n'
+    SUFFIX = '</colorized>\n'
+    def markup(self, s, tag):
+        s = s.replace('&', '&').replace('<', '<').replace('>', '>')
+        if tag == 'other': return s
+        else: return '<%s>%s</%s>' % (tag, s, tag)
+
+class HTMLDoctestColorizer(DoctestColorizer):
+    """A subclass of DoctestColorizer that generates HTML output."""
+    PREFIX = '<pre class="py-doctest">\n'
+    SUFFIX = '</pre>\n'
+    def markup(self, s, tag):
+        if tag == 'other':
+            return plaintext_to_html(s)
+        else:
+            return ('<span class="py-%s">%s</span>' %
+                    (tag, plaintext_to_html(s)))
+
+class LaTeXDoctestColorizer(DoctestColorizer):
+    """A subclass of DoctestColorizer that generates LaTeX output."""
+    PREFIX = '\\begin{alltt}\n'
+    SUFFIX = '\\end{alltt}\n'
+    def markup(self, s, tag):
+        if tag == 'other':
+            return plaintext_to_latex(s)
+        else:
+            return '\\pysrc%s{%s}' % (tag, plaintext_to_latex(s))
+
+        
diff --git a/epydoc/markup/epytext.py b/epydoc/markup/epytext.py
new file mode 100644
index 0000000..058c5fa
--- /dev/null
+++ b/epydoc/markup/epytext.py
@@ -0,0 +1,2116 @@
+#
+# epytext.py: epydoc formatted docstring parsing
+# Edward Loper
+#
+# Created [04/10/01 12:00 AM]
+# $Id: epytext.py 1652 2007-09-26 04:45:34Z edloper $
+#
+
+"""
+Parser for epytext strings.  Epytext is a lightweight markup whose
+primary intended application is Python documentation strings.  This
+parser converts Epytext strings to a simple DOM-like representation
+(encoded as a tree of L{Element} objects and strings).  Epytext
+strings can contain the following X{structural blocks}:
+
+    - X{epytext}: The top-level element of the DOM tree.
+    - X{para}: A paragraph of text.  Paragraphs contain no newlines, 
+      and all spaces are soft.
+    - X{section}: A section or subsection.
+    - X{field}: A tagged field.  These fields provide information
+      about specific aspects of a Python object, such as the
+      description of a function's parameter, or the author of a
+      module.
+    - X{literalblock}: A block of literal text.  This text should be
+      displayed as it would be displayed in plaintext.  The
+      parser removes the appropriate amount of leading whitespace 
+      from each line in the literal block.
+    - X{doctestblock}: A block containing sample python code,
+      formatted according to the specifications of the C{doctest}
+      module.
+    - X{ulist}: An unordered list.
+    - X{olist}: An ordered list.
+    - X{li}: A list item.  This tag is used both for unordered list
+      items and for ordered list items.
+
+Additionally, the following X{inline regions} may be used within
+C{para} blocks:
+    
+    - X{code}:   Source code and identifiers.
+    - X{math}:   Mathematical expressions.
+    - X{index}:  A term which should be included in an index, if one
+                 is generated.
+    - X{italic}: Italicized text.
+    - X{bold}:   Bold-faced text.
+    - X{uri}:    A Universal Resource Indicator (URI) or Universal
+                 Resource Locator (URL)
+    - X{link}:   A Python identifier which should be hyperlinked to
+                 the named object's documentation, when possible.
+
+The returned DOM tree will conform to the the following Document Type
+Description::
+
+   <!ENTITY % colorized '(code | math | index | italic |
+                          bold | uri | link | symbol)*'>
+
+   <!ELEMENT epytext ((para | literalblock | doctestblock |
+                      section | ulist | olist)*, fieldlist?)>
+
+   <!ELEMENT para (#PCDATA | %colorized;)*>
+
+   <!ELEMENT section (para | listblock | doctestblock |
+                      section | ulist | olist)+>
+
+   <!ELEMENT fieldlist (field+)>
+   <!ELEMENT field (tag, arg?, (para | listblock | doctestblock)
+                                ulist | olist)+)>
+   <!ELEMENT tag (#PCDATA)>
+   <!ELEMENT arg (#PCDATA)>
+   
+   <!ELEMENT literalblock (#PCDATA | %colorized;)*>
+   <!ELEMENT doctestblock (#PCDATA)>
+
+   <!ELEMENT ulist (li+)>
+   <!ELEMENT olist (li+)>
+   <!ELEMENT li (para | literalblock | doctestblock | ulist | olist)+>
+   <!ATTLIST li bullet NMTOKEN #IMPLIED>
+   <!ATTLIST olist start NMTOKEN #IMPLIED>
+
+   <!ELEMENT uri     (name, target)>
+   <!ELEMENT link    (name, target)>
+   <!ELEMENT name    (#PCDATA | %colorized;)*>
+   <!ELEMENT target  (#PCDATA)>
+   
+   <!ELEMENT code    (#PCDATA | %colorized;)*>
+   <!ELEMENT math    (#PCDATA | %colorized;)*>
+   <!ELEMENT italic  (#PCDATA | %colorized;)*>
+   <!ELEMENT bold    (#PCDATA | %colorized;)*>
+   <!ELEMENT indexed (#PCDATA | %colorized;)>
+   <!ATTLIST code style CDATA #IMPLIED>
+
+   <!ELEMENT symbol (#PCDATA)>
+
+ at var SYMBOLS: A list of the of escape symbols that are supported
+      by epydoc.  Currently the following symbols are supported:
+<<<SYMBOLS>>>
+"""
+# Note: the symbol list is appended to the docstring automatically,
+# below.
+
+__docformat__ = 'epytext en'
+
+# Code organization..
+#   1. parse()
+#   2. tokenize()
+#   3. colorize()
+#   4. helpers
+#   5. testing
+
+import re, string, types, sys, os.path
+from epydoc.markup import *
+from epydoc.util import wordwrap, plaintext_to_html, plaintext_to_latex
+from epydoc.markup.doctest import doctest_to_html, doctest_to_latex
+
+##################################################
+## DOM-Like Encoding
+##################################################
+
+class Element:
+    """
+    A very simple DOM-like representation for parsed epytext
+    documents.  Each epytext document is encoded as a tree whose nodes
+    are L{Element} objects, and whose leaves are C{string}s.  Each
+    node is marked by a I{tag} and zero or more I{attributes}.  Each
+    attribute is a mapping from a string key to a string value.
+    """
+    def __init__(self, tag, *children, **attribs):
+        self.tag = tag
+        """A string tag indicating the type of this element.
+        @type: C{string}"""
+        
+        self.children = list(children)
+        """A list of the children of this element.
+        @type: C{list} of (C{string} or C{Element})"""
+        
+        self.attribs = attribs
+        """A dictionary mapping attribute names to attribute values
+        for this element.
+        @type: C{dict} from C{string} to C{string}"""
+
+    def __str__(self):
+        """
+        Return a string representation of this element, using XML
+        notation.
+        @bug: Doesn't escape '<' or '&' or '>'.
+        """
+        attribs = ''.join([' %s=%r' % t for t in self.attribs.items()])
+        return ('<%s%s>' % (self.tag, attribs) +
+                ''.join([str(child) for child in self.children]) +
+                '</%s>' % self.tag)
+
+    def __repr__(self):
+        attribs = ''.join([', %s=%r' % t for t in self.attribs.items()])
+        args = ''.join([', %r' % c for c in self.children])
+        return 'Element(%s%s%s)' % (self.tag, args, attribs)
+
+##################################################
+## Constants
+##################################################
+
+# The possible heading underline characters, listed in order of
+# heading depth. 
+_HEADING_CHARS = "=-~"
+
+# Escape codes.  These should be needed very rarely.
+_ESCAPES = {'lb':'{', 'rb': '}'}
+
+# Symbols.  These can be generated via S{...} escapes.
+SYMBOLS = [
+    # Arrows
+    '<-', '->', '^', 'v', 
+
+    # Greek letters
+    'alpha', 'beta', 'gamma', 'delta', 'epsilon', 'zeta',  
+    'eta', 'theta', 'iota', 'kappa', 'lambda', 'mu',  
+    'nu', 'xi', 'omicron', 'pi', 'rho', 'sigma',  
+    'tau', 'upsilon', 'phi', 'chi', 'psi', 'omega',
+    'Alpha', 'Beta', 'Gamma', 'Delta', 'Epsilon', 'Zeta',  
+    'Eta', 'Theta', 'Iota', 'Kappa', 'Lambda', 'Mu',  
+    'Nu', 'Xi', 'Omicron', 'Pi', 'Rho', 'Sigma',  
+    'Tau', 'Upsilon', 'Phi', 'Chi', 'Psi', 'Omega',
+    
+    # HTML character entities
+    'larr', 'rarr', 'uarr', 'darr', 'harr', 'crarr',
+    'lArr', 'rArr', 'uArr', 'dArr', 'hArr', 
+    'copy', 'times', 'forall', 'exist', 'part',
+    'empty', 'isin', 'notin', 'ni', 'prod', 'sum',
+    'prop', 'infin', 'ang', 'and', 'or', 'cap', 'cup',
+    'int', 'there4', 'sim', 'cong', 'asymp', 'ne',
+    'equiv', 'le', 'ge', 'sub', 'sup', 'nsub',
+    'sube', 'supe', 'oplus', 'otimes', 'perp',
+
+    # Alternate (long) names
+    'infinity', 'integral', 'product',
+    '>=', '<=', 
+    ]
+# Convert to a dictionary, for quick lookup
+_SYMBOLS = {}
+for symbol in SYMBOLS: _SYMBOLS[symbol] = 1
+
+# Add symbols to the docstring.
+symblist = '      '
+symblist += ';\n      '.join([' - C{E{S}{%s}}=S{%s}' % (symbol, symbol)
+                              for symbol in SYMBOLS])
+__doc__ = __doc__.replace('<<<SYMBOLS>>>', symblist)
+del symbol, symblist
+
+# Tags for colorizing text.
+_COLORIZING_TAGS = {
+    'C': 'code',
+    'M': 'math',
+    'X': 'indexed',
+    'I': 'italic', 
+    'B': 'bold',
+    'U': 'uri',
+    'L': 'link',       # A Python identifier that should be linked to 
+    'E': 'escape',     # escapes characters or creates symbols
+    'S': 'symbol',
+    'G': 'graph',
+    }
+
+# Which tags can use "link syntax" (e.g., U{Python<www.python.org>})?
+_LINK_COLORIZING_TAGS = ['link', 'uri']
+
+##################################################
+## Structuring (Top Level)
+##################################################
+
+def parse(str, errors = None):
+    """
+    Return a DOM tree encoding the contents of an epytext string.  Any
+    errors generated during parsing will be stored in C{errors}.
+
+    @param str: The epytext string to parse.
+    @type str: C{string}
+    @param errors: A list where any errors generated during parsing
+        will be stored.  If no list is specified, then fatal errors
+        will generate exceptions, and non-fatal errors will be
+        ignored.
+    @type errors: C{list} of L{ParseError}
+    @return: a DOM tree encoding the contents of an epytext string.
+    @rtype: C{Element}
+    @raise ParseError: If C{errors} is C{None} and an error is
+        encountered while parsing.
+    """
+    # Initialize errors list.
+    if errors == None:
+        errors = []
+        raise_on_error = 1
+    else:
+        raise_on_error = 0
+
+    # Preprocess the string.
+    str = re.sub('\015\012', '\012', str)
+    str = string.expandtabs(str)
+
+    # Tokenize the input string.
+    tokens = _tokenize(str, errors)
+
+    # Have we encountered a field yet?
+    encountered_field = 0
+
+    # Create an document to hold the epytext.
+    doc = Element('epytext')
+
+    # Maintain two parallel stacks: one contains DOM elements, and
+    # gives the ancestors of the current block.  The other contains
+    # indentation values, and gives the indentation of the
+    # corresponding DOM elements.  An indentation of "None" reflects
+    # an unknown indentation.  However, the indentation must be
+    # greater than, or greater than or equal to, the indentation of
+    # the prior element (depending on what type of DOM element it
+    # corresponds to).  No 2 consecutive indent_stack values will be
+    # ever be "None."  Use initial dummy elements in the stack, so we
+    # don't have to worry about bounds checking.
+    stack = [None, doc]
+    indent_stack = [-1, None]
+
+    for token in tokens:
+        # Uncomment this for debugging:
+        #print ('%s: %s\n%s: %s\n' % 
+        #       (''.join(['%-11s' % (t and t.tag) for t in stack]),
+        #        token.tag, ''.join(['%-11s' % i for i in indent_stack]),
+        #        token.indent))
+        
+        # Pop any completed blocks off the stack.
+        _pop_completed_blocks(token, stack, indent_stack)
+
+        # If Token has type PARA, colorize and add the new paragraph
+        if token.tag == Token.PARA:
+            _add_para(doc, token, stack, indent_stack, errors)
+                     
+        # If Token has type HEADING, add the new section
+        elif token.tag == Token.HEADING:
+            _add_section(doc, token, stack, indent_stack, errors)
+
+        # If Token has type LBLOCK, add the new literal block
+        elif token.tag == Token.LBLOCK:
+            stack[-1].children.append(token.to_dom(doc))
+
+        # If Token has type DTBLOCK, add the new doctest block
+        elif token.tag == Token.DTBLOCK:
+            stack[-1].children.append(token.to_dom(doc))
+
+        # If Token has type BULLET, add the new list/list item/field
+        elif token.tag == Token.BULLET:
+            _add_list(doc, token, stack, indent_stack, errors)
+        else:
+            assert 0, 'Unknown token type: '+token.tag
+
+        # Check if the DOM element we just added was a field..
+        if stack[-1].tag == 'field':
+            encountered_field = 1
+        elif encountered_field == 1:
+            if len(stack) <= 3:
+                estr = ("Fields must be the final elements in an "+
+                        "epytext string.")
+                errors.append(StructuringError(estr, token.startline))
+
+    # Graphs use inline markup (G{...}) but are really block-level
+    # elements; so "raise" any graphs we generated.  This is a bit of
+    # a hack, but the alternative is to define a new markup for
+    # block-level elements, which I'd rather not do.  (See sourceforge
+    # bug #1673017.)
+    for child in doc.children:
+        _raise_graphs(child, doc)
+
+    # If there was an error, then signal it!
+    if len([e for e in errors if e.is_fatal()]) > 0:
+        if raise_on_error:
+            raise errors[0]
+        else:
+            return None
+        
+    # Return the top-level epytext DOM element.
+    return doc
+
+def _raise_graphs(tree, parent):
+    # Recurse to children.
+    have_graph_child = False
+    for elt in tree.children:
+        if isinstance(elt, Element):
+            _raise_graphs(elt, tree)
+            if elt.tag == 'graph': have_graph_child = True
+
+    block = ('section', 'fieldlist', 'field', 'ulist', 'olist', 'li')
+    if have_graph_child and tree.tag not in block:
+        child_index = 0
+        for elt in tree.children:
+            if isinstance(elt, Element) and elt.tag == 'graph':
+                # We found a graph: splice it into the parent.
+                parent_index = parent.children.index(tree)
+                left = tree.children[:child_index]
+                right = tree.children[child_index+1:]
+                parent.children[parent_index:parent_index+1] = [
+                    Element(tree.tag, *left, **tree.attribs),
+                    elt,
+                    Element(tree.tag, *right, **tree.attribs)]
+                child_index = 0
+                parent_index += 2
+            else:
+                child_index += 1
+
+def _pop_completed_blocks(token, stack, indent_stack):
+    """
+    Pop any completed blocks off the stack.  This includes any
+    blocks that we have dedented past, as well as any list item
+    blocks that we've dedented to.  The top element on the stack 
+    should only be a list if we're about to start a new list
+    item (i.e., if the next token is a bullet).
+    """
+    indent = token.indent
+    if indent != None:
+        while (len(stack) > 2):
+            pop = 0
+            
+            # Dedent past a block
+            if indent_stack[-1]!=None and indent<indent_stack[-1]: pop=1
+            elif indent_stack[-1]==None and indent<indent_stack[-2]: pop=1
+
+            # Dedent to a list item, if it is follwed by another list
+            # item with the same indentation.
+            elif (token.tag == 'bullet' and indent==indent_stack[-2] and 
+                  stack[-1].tag in ('li', 'field')): pop=1
+
+            # End of a list (no more list items available)
+            elif (stack[-1].tag in ('ulist', 'olist') and
+                  (token.tag != 'bullet' or token.contents[-1] == ':')):
+                pop=1
+
+            # Pop the block, if it's complete.  Otherwise, we're done.
+            if pop == 0: return
+            stack.pop()
+            indent_stack.pop()
+
+def _add_para(doc, para_token, stack, indent_stack, errors):
+    """Colorize the given paragraph, and add it to the DOM tree."""
+    # Check indentation, and update the parent's indentation
+    # when appropriate.
+    if indent_stack[-1] == None:
+        indent_stack[-1] = para_token.indent
+    if para_token.indent == indent_stack[-1]:
+        # Colorize the paragraph and add it.
+        para = _colorize(doc, para_token, errors)
+        if para_token.inline:
+            para.attribs['inline'] = True
+        stack[-1].children.append(para)
+    else:
+        estr = "Improper paragraph indentation."
+        errors.append(StructuringError(estr, para_token.startline))
+
+def _add_section(doc, heading_token, stack, indent_stack, errors):
+    """Add a new section to the DOM tree, with the given heading."""
+    if indent_stack[-1] == None:
+        indent_stack[-1] = heading_token.indent
+    elif indent_stack[-1] != heading_token.indent:
+        estr = "Improper heading indentation."
+        errors.append(StructuringError(estr, heading_token.startline))
+
+    # Check for errors.
+    for tok in stack[2:]:
+        if tok.tag != "section":
+            estr = "Headings must occur at the top level."
+            errors.append(StructuringError(estr, heading_token.startline))
+            break
+    if (heading_token.level+2) > len(stack):
+        estr = "Wrong underline character for heading."
+        errors.append(StructuringError(estr, heading_token.startline))
+
+    # Pop the appropriate number of headings so we're at the
+    # correct level.
+    stack[heading_token.level+2:] = []
+    indent_stack[heading_token.level+2:] = []
+
+    # Colorize the heading
+    head = _colorize(doc, heading_token, errors, 'heading')
+
+    # Add the section's and heading's DOM elements.
+    sec = Element("section")
+    stack[-1].children.append(sec)
+    stack.append(sec)
+    sec.children.append(head)
+    indent_stack.append(None)
+        
+def _add_list(doc, bullet_token, stack, indent_stack, errors):
+    """
+    Add a new list item or field to the DOM tree, with the given
+    bullet or field tag.  When necessary, create the associated
+    list.
+    """
+    # Determine what type of bullet it is.
+    if bullet_token.contents[-1] == '-':
+        list_type = 'ulist'
+    elif bullet_token.contents[-1] == '.':
+        list_type = 'olist'
+    elif bullet_token.contents[-1] == ':':
+        list_type = 'fieldlist'
+    else:
+        raise AssertionError('Bad Bullet: %r' % bullet_token.contents)
+
+    # Is this a new list?
+    newlist = 0
+    if stack[-1].tag != list_type:
+        newlist = 1
+    elif list_type == 'olist' and stack[-1].tag == 'olist':
+        old_listitem = stack[-1].children[-1]
+        old_bullet = old_listitem.attribs.get("bullet").split('.')[:-1]
+        new_bullet = bullet_token.contents.split('.')[:-1]
+        if (new_bullet[:-1] != old_bullet[:-1] or
+            int(new_bullet[-1]) != int(old_bullet[-1])+1):
+            newlist = 1
+
+    # Create the new list.
+    if newlist:
+        if stack[-1].tag is 'fieldlist':
+            # The new list item is not a field list item (since this
+            # is a new list); but it's indented the same as the field
+            # list.  This either means that they forgot to indent the
+            # list, or they are trying to put something after the
+            # field list.  The first one seems more likely, so we'll
+            # just warn about that (to avoid confusion).
+            estr = "Lists must be indented."
+            errors.append(StructuringError(estr, bullet_token.startline))
+        if stack[-1].tag in ('ulist', 'olist', 'fieldlist'):
+            stack.pop()
+            indent_stack.pop()
+
+        if (list_type != 'fieldlist' and indent_stack[-1] is not None and
+            bullet_token.indent == indent_stack[-1]):
+            # Ignore this error if there's text on the same line as
+            # the comment-opening quote -- epydoc can't reliably
+            # determine the indentation for that line.
+            if bullet_token.startline != 1 or bullet_token.indent != 0:
+                estr = "Lists must be indented."
+                errors.append(StructuringError(estr, bullet_token.startline))
+
+        if list_type == 'fieldlist':
+            # Fieldlist should be at the top-level.
+            for tok in stack[2:]:
+                if tok.tag != "section":
+                    estr = "Fields must be at the top level."
+                    errors.append(
+                        StructuringError(estr, bullet_token.startline))
+                    break
+            stack[2:] = []
+            indent_stack[2:] = []
+
+        # Add the new list.
+        lst = Element(list_type)
+        stack[-1].children.append(lst)
+        stack.append(lst)
+        indent_stack.append(bullet_token.indent)
+        if list_type == 'olist':
+            start = bullet_token.contents.split('.')[:-1]
+            if start != '1':
+                lst.attribs["start"] = start[-1]
+
+    # Fields are treated somewhat specially: A "fieldlist"
+    # node is created to make the parsing simpler, but fields
+    # are adjoined directly into the "epytext" node, not into
+    # the "fieldlist" node.
+    if list_type == 'fieldlist':
+        li = Element("field")
+        token_words = bullet_token.contents[1:-1].split(None, 1)
+        tag_elt = Element("tag")
+        tag_elt.children.append(token_words[0])
+        li.children.append(tag_elt)
+
+        if len(token_words) > 1:
+            arg_elt = Element("arg")
+            arg_elt.children.append(token_words[1])
+            li.children.append(arg_elt)
+    else:
+        li = Element("li")
+        if list_type == 'olist':
+            li.attribs["bullet"] = bullet_token.contents
+
+    # Add the bullet.
+    stack[-1].children.append(li)
+    stack.append(li)
+    indent_stack.append(None)
+
+##################################################
+## Tokenization
+##################################################
+
+class Token:
+    """
+    C{Token}s are an intermediate data structure used while
+    constructing the structuring DOM tree for a formatted docstring.
+    There are five types of C{Token}:
+    
+        - Paragraphs
+        - Literal blocks
+        - Doctest blocks
+        - Headings
+        - Bullets
+
+    The text contained in each C{Token} is stored in the
+    C{contents} variable.  The string in this variable has been
+    normalized.  For paragraphs, this means that it has been converted 
+    into a single line of text, with newline/indentation replaced by
+    single spaces.  For literal blocks and doctest blocks, this means
+    that the appropriate amount of leading whitespace has been removed 
+    from each line.
+
+    Each C{Token} has an indentation level associated with it,
+    stored in the C{indent} variable.  This indentation level is used
+    by the structuring procedure to assemble hierarchical blocks.
+
+    @type tag: C{string}
+    @ivar tag: This C{Token}'s type.  Possible values are C{Token.PARA} 
+        (paragraph), C{Token.LBLOCK} (literal block), C{Token.DTBLOCK}
+        (doctest block), C{Token.HEADINGC}, and C{Token.BULLETC}.
+        
+    @type startline: C{int}
+    @ivar startline: The line on which this C{Token} begins.  This 
+        line number is only used for issuing errors.
+
+    @type contents: C{string}
+    @ivar contents: The normalized text contained in this C{Token}.
+    
+    @type indent: C{int} or C{None}
+    @ivar indent: The indentation level of this C{Token} (in
+        number of leading spaces).  A value of C{None} indicates an
+        unknown indentation; this is used for list items and fields
+        that begin with one-line paragraphs.
+        
+    @type level: C{int} or C{None}
+    @ivar level: The heading-level of this C{Token} if it is a
+        heading; C{None}, otherwise.  Valid heading levels are 0, 1,
+        and 2.
+
+    @type inline: C{bool}
+    @ivar inline: If True, the element is an inline level element, comparable
+        to an HTML C{<span>} tag. Else, it is a block level element, comparable
+        to an HTML C{<div>}.
+
+    @type PARA: C{string}
+    @cvar PARA: The C{tag} value for paragraph C{Token}s.
+    @type LBLOCK: C{string}
+    @cvar LBLOCK: The C{tag} value for literal C{Token}s.
+    @type DTBLOCK: C{string}
+    @cvar DTBLOCK: The C{tag} value for doctest C{Token}s.
+    @type HEADING: C{string}
+    @cvar HEADING: The C{tag} value for heading C{Token}s.
+    @type BULLET: C{string}
+    @cvar BULLET: The C{tag} value for bullet C{Token}s.  This C{tag}
+        value is also used for field tag C{Token}s, since fields
+        function syntactically the same as list items.
+    """
+    # The possible token types.
+    PARA = "para"
+    LBLOCK = "literalblock"
+    DTBLOCK = "doctestblock"
+    HEADING = "heading"
+    BULLET = "bullet"
+
+    def __init__(self, tag, startline, contents, indent, level=None,
+                 inline=False):
+        """
+        Create a new C{Token}.
+
+        @param tag: The type of the new C{Token}.
+        @type tag: C{string}
+        @param startline: The line on which the new C{Token} begins.
+        @type startline: C{int}
+        @param contents: The normalized contents of the new C{Token}.
+        @type contents: C{string}
+        @param indent: The indentation of the new C{Token} (in number
+            of leading spaces).  A value of C{None} indicates an
+            unknown indentation.
+        @type indent: C{int} or C{None}
+        @param level: The heading-level of this C{Token} if it is a
+            heading; C{None}, otherwise.
+        @type level: C{int} or C{None}
+        @param inline: Is this C{Token} inline as a C{<span>}?.
+        @type inline: C{bool}
+        """
+        self.tag = tag
+        self.startline = startline
+        self.contents = contents
+        self.indent = indent
+        self.level = level
+        self.inline = inline
+
+    def __repr__(self):
+        """
+        @rtype: C{string}
+        @return: the formal representation of this C{Token}.
+            C{Token}s have formal representaitons of the form:: 
+                <Token: para at line 12>
+        """
+        return '<Token: %s at line %s>' % (self.tag, self.startline)
+
+    def to_dom(self, doc):
+        """
+        @return: a DOM representation of this C{Token}.
+        @rtype: L{Element}
+        """
+        e = Element(self.tag)
+        e.children.append(self.contents)
+        return e
+
+# Construct regular expressions for recognizing bullets.  These are
+# global so they don't have to be reconstructed each time we tokenize
+# a docstring.
+_ULIST_BULLET = '[-]( +|$)'
+_OLIST_BULLET = '(\d+[.])+( +|$)'
+_FIELD_BULLET = '@\w+( [^{}:\n]+)?:'
+_BULLET_RE = re.compile(_ULIST_BULLET + '|' +
+                        _OLIST_BULLET + '|' +
+                        _FIELD_BULLET)
+_LIST_BULLET_RE = re.compile(_ULIST_BULLET + '|' + _OLIST_BULLET)
+_FIELD_BULLET_RE = re.compile(_FIELD_BULLET)
+del _ULIST_BULLET, _OLIST_BULLET, _FIELD_BULLET
+
+def _tokenize_doctest(lines, start, block_indent, tokens, errors):
+    """
+    Construct a L{Token} containing the doctest block starting at
+    C{lines[start]}, and append it to C{tokens}.  C{block_indent}
+    should be the indentation of the doctest block.  Any errors
+    generated while tokenizing the doctest block will be appended to
+    C{errors}.
+
+    @param lines: The list of lines to be tokenized
+    @param start: The index into C{lines} of the first line of the
+        doctest block to be tokenized.
+    @param block_indent: The indentation of C{lines[start]}.  This is
+        the indentation of the doctest block.
+    @param errors: A list where any errors generated during parsing
+        will be stored.  If no list is specified, then errors will 
+        generate exceptions.
+    @return: The line number of the first line following the doctest
+        block.
+        
+    @type lines: C{list} of C{string}
+    @type start: C{int}
+    @type block_indent: C{int}
+    @type tokens: C{list} of L{Token}
+    @type errors: C{list} of L{ParseError}
+    @rtype: C{int}
+    """
+    # If they dedent past block_indent, keep track of the minimum
+    # indentation.  This is used when removing leading indentation
+    # from the lines of the doctest block.
+    min_indent = block_indent
+
+    linenum = start + 1
+    while linenum < len(lines):
+        # Find the indentation of this line.
+        line = lines[linenum]
+        indent = len(line) - len(line.lstrip())
+        
+        # A blank line ends doctest block.
+        if indent == len(line): break
+        
+        # A Dedent past block_indent is an error.
+        if indent < block_indent:
+            min_indent = min(min_indent, indent)
+            estr = 'Improper doctest block indentation.'
+            errors.append(TokenizationError(estr, linenum))
+
+        # Go on to the next line.
+        linenum += 1
+
+    # Add the token, and return the linenum after the token ends.
+    contents = [line[min_indent:] for line in lines[start:linenum]]
+    contents = '\n'.join(contents)
+    tokens.append(Token(Token.DTBLOCK, start, contents, block_indent))
+    return linenum
+
+def _tokenize_literal(lines, start, block_indent, tokens, errors):
+    """
+    Construct a L{Token} containing the literal block starting at
+    C{lines[start]}, and append it to C{tokens}.  C{block_indent}
+    should be the indentation of the literal block.  Any errors
+    generated while tokenizing the literal block will be appended to
+    C{errors}.
+
+    @param lines: The list of lines to be tokenized
+    @param start: The index into C{lines} of the first line of the
+        literal block to be tokenized.
+    @param block_indent: The indentation of C{lines[start]}.  This is
+        the indentation of the literal block.
+    @param errors: A list of the errors generated by parsing.  Any
+        new errors generated while will tokenizing this paragraph
+        will be appended to this list.
+    @return: The line number of the first line following the literal
+        block. 
+        
+    @type lines: C{list} of C{string}
+    @type start: C{int}
+    @type block_indent: C{int}
+    @type tokens: C{list} of L{Token}
+    @type errors: C{list} of L{ParseError}
+    @rtype: C{int}
+    """
+    linenum = start + 1
+    while linenum < len(lines):
+        # Find the indentation of this line.
+        line = lines[linenum]
+        indent = len(line) - len(line.lstrip())
+
+        # A Dedent to block_indent ends the literal block.
+        # (Ignore blank likes, though)
+        if len(line) != indent and indent <= block_indent:
+            break
+        
+        # Go on to the next line.
+        linenum += 1
+
+    # Add the token, and return the linenum after the token ends.
+    contents = [line[block_indent+1:] for line in lines[start:linenum]]
+    contents = '\n'.join(contents)
+    contents = re.sub('(\A[ \n]*\n)|(\n[ \n]*\Z)', '', contents)
+    tokens.append(Token(Token.LBLOCK, start, contents, block_indent))
+    return linenum
+
+def _tokenize_listart(lines, start, bullet_indent, tokens, errors):
+    """
+    Construct L{Token}s for the bullet and the first paragraph of the
+    list item (or field) starting at C{lines[start]}, and append them
+    to C{tokens}.  C{bullet_indent} should be the indentation of the
+    list item.  Any errors generated while tokenizing will be
+    appended to C{errors}.
+
+    @param lines: The list of lines to be tokenized
+    @param start: The index into C{lines} of the first line of the
+        list item to be tokenized.
+    @param bullet_indent: The indentation of C{lines[start]}.  This is
+        the indentation of the list item.
+    @param errors: A list of the errors generated by parsing.  Any
+        new errors generated while will tokenizing this paragraph
+        will be appended to this list.
+    @return: The line number of the first line following the list
+        item's first paragraph.
+        
+    @type lines: C{list} of C{string}
+    @type start: C{int}
+    @type bullet_indent: C{int}
+    @type tokens: C{list} of L{Token}
+    @type errors: C{list} of L{ParseError}
+    @rtype: C{int}
+    """
+    linenum = start + 1
+    para_indent = None
+    doublecolon = lines[start].rstrip()[-2:] == '::'
+
+    # Get the contents of the bullet.
+    para_start = _BULLET_RE.match(lines[start], bullet_indent).end()
+    bcontents = lines[start][bullet_indent:para_start].strip()
+    
+    while linenum < len(lines):
+        # Find the indentation of this line.
+        line = lines[linenum]
+        indent = len(line) - len(line.lstrip())
+
+        # "::" markers end paragraphs.
+        if doublecolon: break
+        if line.rstrip()[-2:] == '::': doublecolon = 1
+
+        # A blank line ends the token
+        if indent == len(line): break
+
+        # Dedenting past bullet_indent ends the list item.
+        if indent < bullet_indent: break
+        
+        # A line beginning with a bullet ends the token.
+        if _BULLET_RE.match(line, indent): break
+        
+        # If this is the second line, set the paragraph indentation, or 
+        # end the token, as appropriate.
+        if para_indent == None: para_indent = indent
+
+        # A change in indentation ends the token
+        if indent != para_indent: break
+
+        # Go on to the next line.
+        linenum += 1
+
+    # Add the bullet token.
+    tokens.append(Token(Token.BULLET, start, bcontents, bullet_indent,
+                        inline=True))
+
+    # Add the paragraph token.
+    pcontents = ([lines[start][para_start:].strip()] + 
+                 [line.strip() for line in lines[start+1:linenum]])
+    pcontents = ' '.join(pcontents).strip()
+    if pcontents:
+        tokens.append(Token(Token.PARA, start, pcontents, para_indent,
+                            inline=True))
+
+    # Return the linenum after the paragraph token ends.
+    return linenum
+
+def _tokenize_para(lines, start, para_indent, tokens, errors):
+    """
+    Construct a L{Token} containing the paragraph starting at
+    C{lines[start]}, and append it to C{tokens}.  C{para_indent}
+    should be the indentation of the paragraph .  Any errors
+    generated while tokenizing the paragraph will be appended to
+    C{errors}.
+
+    @param lines: The list of lines to be tokenized
+    @param start: The index into C{lines} of the first line of the
+        paragraph to be tokenized.
+    @param para_indent: The indentation of C{lines[start]}.  This is
+        the indentation of the paragraph.
+    @param errors: A list of the errors generated by parsing.  Any
+        new errors generated while will tokenizing this paragraph
+        will be appended to this list.
+    @return: The line number of the first line following the
+        paragraph. 
+        
+    @type lines: C{list} of C{string}
+    @type start: C{int}
+    @type para_indent: C{int}
+    @type tokens: C{list} of L{Token}
+    @type errors: C{list} of L{ParseError}
+    @rtype: C{int}
+    """
+    linenum = start + 1
+    doublecolon = 0
+    while linenum < len(lines):
+        # Find the indentation of this line.
+        line = lines[linenum]
+        indent = len(line) - len(line.lstrip())
+
+        # "::" markers end paragraphs.
+        if doublecolon: break
+        if line.rstrip()[-2:] == '::': doublecolon = 1
+
+        # Blank lines end paragraphs
+        if indent == len(line): break
+
+        # Indentation changes end paragraphs
+        if indent != para_indent: break
+
+        # List bullets end paragraphs
+        if _BULLET_RE.match(line, indent): break
+
+        # Check for mal-formatted field items.
+        if line[indent] == '@':
+            estr = "Possible mal-formatted field item."
+            errors.append(TokenizationError(estr, linenum, is_fatal=0))
+            
+        # Go on to the next line.
+        linenum += 1
+
+    contents = [line.strip() for line in lines[start:linenum]]
+    
+    # Does this token look like a heading?
+    if ((len(contents) < 2) or
+        (contents[1][0] not in _HEADING_CHARS) or
+        (abs(len(contents[0])-len(contents[1])) > 5)):
+        looks_like_heading = 0
+    else:
+        looks_like_heading = 1
+        for char in contents[1]:
+            if char != contents[1][0]:
+                looks_like_heading = 0
+                break
+
+    if looks_like_heading:
+        if len(contents[0]) != len(contents[1]):
+            estr = ("Possible heading typo: the number of "+
+                    "underline characters must match the "+
+                    "number of heading characters.")
+            errors.append(TokenizationError(estr, start, is_fatal=0))
+        else:
+            level = _HEADING_CHARS.index(contents[1][0])
+            tokens.append(Token(Token.HEADING, start,
+                                contents[0], para_indent, level))
+            return start+2
+                 
+    # Add the paragraph token, and return the linenum after it ends.
+    contents = ' '.join(contents)
+    tokens.append(Token(Token.PARA, start, contents, para_indent))
+    return linenum
+        
+def _tokenize(str, errors):
+    """
+    Split a given formatted docstring into an ordered list of
+    C{Token}s, according to the epytext markup rules.
+
+    @param str: The epytext string
+    @type str: C{string}
+    @param errors: A list where any errors generated during parsing
+        will be stored.  If no list is specified, then errors will 
+        generate exceptions.
+    @type errors: C{list} of L{ParseError}
+    @return: a list of the C{Token}s that make up the given string.
+    @rtype: C{list} of L{Token}
+    """
+    tokens = []
+    lines = str.split('\n')
+
+    # Scan through the lines, determining what @type of token we're
+    # dealing with, and tokenizing it, as appropriate.
+    linenum = 0
+    while linenum < len(lines):
+        # Get the current line and its indentation.
+        line = lines[linenum]
+        indent = len(line)-len(line.lstrip())
+
+        if indent == len(line):
+            # Ignore blank lines.
+            linenum += 1
+            continue
+        elif line[indent:indent+4] == '>>> ':
+            # blocks starting with ">>> " are doctest block tokens.
+            linenum = _tokenize_doctest(lines, linenum, indent,
+                                        tokens, errors)
+        elif _BULLET_RE.match(line, indent):
+            # blocks starting with a bullet are LI start tokens.
+            linenum = _tokenize_listart(lines, linenum, indent,
+                                        tokens, errors)
+            if tokens[-1].indent != None:
+                indent = tokens[-1].indent
+        else:
+            # Check for mal-formatted field items.
+            if line[indent] == '@':
+                estr = "Possible mal-formatted field item."
+                errors.append(TokenizationError(estr, linenum, is_fatal=0))
+            
+            # anything else is either a paragraph or a heading.
+            linenum = _tokenize_para(lines, linenum, indent, tokens, errors)
+
+        # Paragraph tokens ending in '::' initiate literal blocks.
+        if (tokens[-1].tag == Token.PARA and
+            tokens[-1].contents[-2:] == '::'):
+            tokens[-1].contents = tokens[-1].contents[:-1]
+            linenum = _tokenize_literal(lines, linenum, indent, tokens, errors)
+
+    return tokens
+
+
+##################################################
+## Inline markup ("colorizing")
+##################################################
+
+# Assorted regular expressions used for colorizing.
+_BRACE_RE = re.compile('{|}')
+_TARGET_RE = re.compile('^(.*?)\s*<(?:URI:|URL:)?([^<>]+)>$')
+
+def _colorize(doc, token, errors, tagName='para'):
+    """
+    Given a string containing the contents of a paragraph, produce a
+    DOM C{Element} encoding that paragraph.  Colorized regions are
+    represented using DOM C{Element}s, and text is represented using
+    DOM C{Text}s.
+
+    @param errors: A list of errors.  Any newly generated errors will
+        be appended to this list.
+    @type errors: C{list} of C{string}
+    
+    @param tagName: The element tag for the DOM C{Element} that should
+        be generated.
+    @type tagName: C{string}
+    
+    @return: a DOM C{Element} encoding the given paragraph.
+    @returntype: C{Element}
+    """
+    str = token.contents
+    linenum = 0
+    
+    # Maintain a stack of DOM elements, containing the ancestors of
+    # the text currently being analyzed.  New elements are pushed when 
+    # "{" is encountered, and old elements are popped when "}" is
+    # encountered. 
+    stack = [Element(tagName)]
+
+    # This is just used to make error-reporting friendlier.  It's a
+    # stack parallel to "stack" containing the index of each element's 
+    # open brace.
+    openbrace_stack = [0]
+
+    # Process the string, scanning for '{' and '}'s.  start is the
+    # index of the first unprocessed character.  Each time through the
+    # loop, we process the text from the first unprocessed character
+    # to the next open or close brace.
+    start = 0
+    while 1:
+        match = _BRACE_RE.search(str, start)
+        if match == None: break
+        end = match.start()
+        
+        # Open braces start new colorizing elements.  When preceeded
+        # by a capital letter, they specify a colored region, as
+        # defined by the _COLORIZING_TAGS dictionary.  Otherwise, 
+        # use a special "literal braces" element (with tag "litbrace"),
+        # and convert them to literal braces once we find the matching 
+        # close-brace.
+        if match.group() == '{':
+            if (end>0) and 'A' <= str[end-1] <= 'Z':
+                if (end-1) > start:
+                    stack[-1].children.append(str[start:end-1])
+                if str[end-1] not in _COLORIZING_TAGS:
+                    estr = "Unknown inline markup tag."
+                    errors.append(ColorizingError(estr, token, end-1))
+                    stack.append(Element('unknown'))
+                else:
+                    tag = _COLORIZING_TAGS[str[end-1]]
+                    stack.append(Element(tag))
+            else:
+                if end > start:
+                    stack[-1].children.append(str[start:end])
+                stack.append(Element('litbrace'))
+            openbrace_stack.append(end)
+            stack[-2].children.append(stack[-1])
+            
+        # Close braces end colorizing elements.
+        elif match.group() == '}':
+            # Check for (and ignore) unbalanced braces.
+            if len(stack) <= 1:
+                estr = "Unbalanced '}'."
+                errors.append(ColorizingError(estr, token, end))
+                start = end + 1
+                continue
+
+            # Add any remaining text.
+            if end > start:
+                stack[-1].children.append(str[start:end])
+
+            # Special handling for symbols:
+            if stack[-1].tag == 'symbol':
+                if (len(stack[-1].children) != 1 or
+                    not isinstance(stack[-1].children[0], basestring)):
+                    estr = "Invalid symbol code."
+                    errors.append(ColorizingError(estr, token, end))
+                else:
+                    symb = stack[-1].children[0]
+                    if symb in _SYMBOLS:
+                        # It's a symbol
+                        stack[-2].children[-1] = Element('symbol', symb)
+                    else:
+                        estr = "Invalid symbol code."
+                        errors.append(ColorizingError(estr, token, end))
+                        
+            # Special handling for escape elements:
+            if stack[-1].tag == 'escape':
+                if (len(stack[-1].children) != 1 or
+                    not isinstance(stack[-1].children[0], basestring)):
+                    estr = "Invalid escape code."
+                    errors.append(ColorizingError(estr, token, end))
+                else:
+                    escp = stack[-1].children[0]
+                    if escp in _ESCAPES:
+                        # It's an escape from _ESCPAES
+                        stack[-2].children[-1] = _ESCAPES[escp]
+                    elif len(escp) == 1:
+                        # It's a single-character escape (eg E{.})
+                        stack[-2].children[-1] = escp
+                    else:
+                        estr = "Invalid escape code."
+                        errors.append(ColorizingError(estr, token, end))
+
+            # Special handling for literal braces elements:
+            if stack[-1].tag == 'litbrace':
+                stack[-2].children[-1:] = ['{'] + stack[-1].children + ['}']
+
+            # Special handling for graphs:
+            if stack[-1].tag == 'graph':
+                _colorize_graph(doc, stack[-1], token, end, errors)
+
+            # Special handling for link-type elements:
+            if stack[-1].tag in _LINK_COLORIZING_TAGS:
+                _colorize_link(doc, stack[-1], token, end, errors)
+
+            # Pop the completed element.
+            openbrace_stack.pop()
+            stack.pop()
+
+        start = end+1
+
+    # Add any final text.
+    if start < len(str):
+        stack[-1].children.append(str[start:])
+        
+    if len(stack) != 1: 
+        estr = "Unbalanced '{'."
+        errors.append(ColorizingError(estr, token, openbrace_stack[-1]))
+
+    return stack[0]
+
+GRAPH_TYPES = ['classtree', 'packagetree', 'importgraph', 'callgraph']
+
+def _colorize_graph(doc, graph, token, end, errors):
+    """
+    Eg::
+      G{classtree}
+      G{classtree x, y, z}
+      G{importgraph}
+    """
+    bad_graph_spec = False
+    
+    children = graph.children[:]
+    graph.children = []
+
+    if len(children) != 1 or not isinstance(children[0], basestring):
+        bad_graph_spec = "Bad graph specification"
+    else:
+        pieces = children[0].split(None, 1)
+        graphtype = pieces[0].replace(':','').strip().lower()
+        if graphtype in GRAPH_TYPES:
+            if len(pieces) == 2:
+                if re.match(r'\s*:?\s*([\w\.]+\s*,?\s*)*', pieces[1]):
+                    args = pieces[1].replace(',', ' ').replace(':','').split()
+                else:
+                    bad_graph_spec = "Bad graph arg list"
+            else:
+                args = []
+        else:
+            bad_graph_spec = ("Bad graph type %s -- use one of %s" %
+                              (pieces[0], ', '.join(GRAPH_TYPES)))
+
+    if bad_graph_spec:
+        errors.append(ColorizingError(bad_graph_spec, token, end))
+        graph.children.append('none')
+        graph.children.append('')
+        return
+
+    graph.children.append(graphtype)
+    for arg in args:
+        graph.children.append(arg)
+
+def _colorize_link(doc, link, token, end, errors):
+    variables = link.children[:]
+
+    # If the last child isn't text, we know it's bad.
+    if len(variables)==0 or not isinstance(variables[-1], basestring):
+        estr = "Bad %s target." % link.tag
+        errors.append(ColorizingError(estr, token, end))
+        return
+    
+    # Did they provide an explicit target?
+    match2 = _TARGET_RE.match(variables[-1])
+    if match2:
+        (text, target) = match2.groups()
+        variables[-1] = text
+    # Can we extract an implicit target?
+    elif len(variables) == 1:
+        target = variables[0]
+    else:
+        estr = "Bad %s target." % link.tag
+        errors.append(ColorizingError(estr, token, end))
+        return
+
+    # Construct the name element.
+    name_elt = Element('name', *variables)
+
+    # Clean up the target.  For URIs, assume http or mailto if they
+    # don't specify (no relative urls)
+    target = re.sub(r'\s', '', target)
+    if link.tag=='uri':
+        if not re.match(r'\w+:', target):
+            if re.match(r'\w+@(\w+)(\.\w+)*', target):
+                target = 'mailto:' + target
+            else:
+                target = 'http://'+target
+    elif link.tag=='link':
+        # Remove arg lists for functions (e.g., L{_colorize_link()})
+        target = re.sub(r'\(.*\)$', '', target)
+        if not re.match(r'^[a-zA-Z_]\w*(\.[a-zA-Z_]\w*)*$', target):
+            estr = "Bad link target."
+            errors.append(ColorizingError(estr, token, end))
+            return
+
+    # Construct the target element.
+    target_elt = Element('target', target)
+
+    # Add them to the link element.
+    link.children = [name_elt, target_elt]
+
+##################################################
+## Formatters
+##################################################
+
+def to_epytext(tree, indent=0, seclevel=0):
+    """
+    Convert a DOM document encoding epytext back to an epytext string.
+    This is the inverse operation from L{parse}.  I.e., assuming there
+    are no errors, the following is true:
+        - C{parse(to_epytext(tree)) == tree}
+
+    The inverse is true, except that whitespace, line wrapping, and
+    character escaping may be done differently.
+        - C{to_epytext(parse(str)) == str} (approximately)
+
+    @param tree: A DOM document encoding of an epytext string.
+    @type tree: C{Element}
+    @param indent: The indentation for the string representation of
+        C{tree}.  Each line of the returned string will begin with
+        C{indent} space characters.
+    @type indent: C{int}
+    @param seclevel: The section level that C{tree} appears at.  This
+        is used to generate section headings.
+    @type seclevel: C{int}
+    @return: The epytext string corresponding to C{tree}.
+    @rtype: C{string}
+    """
+    if isinstance(tree, basestring):
+        str = re.sub(r'\{', '\0', tree)
+        str = re.sub(r'\}', '\1', str)
+        return str
+
+    if tree.tag == 'epytext': indent -= 2
+    if tree.tag == 'section': seclevel += 1
+    variables = [to_epytext(c, indent+2, seclevel) for c in tree.children]
+    childstr = ''.join(variables)
+
+    # Clean up for literal blocks (add the double "::" back)
+    childstr = re.sub(':(\s*)\2', '::\\1', childstr)
+
+    if tree.tag == 'para':
+        str = wordwrap(childstr, indent)+'\n'
+        str = re.sub(r'((^|\n)\s*\d+)\.', r'\1E{.}', str)
+        str = re.sub(r'((^|\n)\s*)-', r'\1E{-}', str)
+        str = re.sub(r'((^|\n)\s*)@', r'\1E{@}', str)
+        str = re.sub(r'::(\s*($|\n))', r'E{:}E{:}\1', str)
+        str = re.sub('\0', 'E{lb}', str)
+        str = re.sub('\1', 'E{rb}', str)
+        return str
+    elif tree.tag == 'li':
+        bullet = tree.attribs.get('bullet') or '-'
+        return indent*' '+ bullet + ' ' + childstr.lstrip()
+    elif tree.tag == 'heading':
+        str = re.sub('\0', 'E{lb}',childstr)
+        str = re.sub('\1', 'E{rb}', str)
+        uline = len(childstr)*_HEADING_CHARS[seclevel-1]
+        return (indent-2)*' ' + str + '\n' + (indent-2)*' '+uline+'\n'
+    elif tree.tag == 'doctestblock':
+        str = re.sub('\0', '{', childstr)
+        str = re.sub('\1', '}', str)
+        lines = ['  '+indent*' '+line for line in str.split('\n')]
+        return '\n'.join(lines) + '\n\n'
+    elif tree.tag == 'literalblock':
+        str = re.sub('\0', '{', childstr)
+        str = re.sub('\1', '}', str)
+        lines = [(indent+1)*' '+line for line in str.split('\n')]
+        return '\2' + '\n'.join(lines) + '\n\n'
+    elif tree.tag == 'field':
+        numargs = 0
+        while tree.children[numargs+1].tag == 'arg': numargs += 1
+        tag = variables[0]
+        args = variables[1:1+numargs]
+        body = variables[1+numargs:]
+        str = (indent)*' '+'@'+variables[0]
+        if args: str += '(' + ', '.join(args) + ')'
+        return str + ':\n' + ''.join(body)
+    elif tree.tag == 'target':
+        return '<%s>' % childstr
+    elif tree.tag in ('fieldlist', 'tag', 'arg', 'epytext',
+                          'section', 'olist', 'ulist', 'name'):
+        return childstr
+    elif tree.tag == 'symbol':
+        return 'E{%s}' % childstr
+    elif tree.tag == 'graph':
+        return 'G{%s}' % ' '.join(variables)
+    else:
+        for (tag, name) in _COLORIZING_TAGS.items():
+            if name == tree.tag:
+                return '%s{%s}' % (tag, childstr)
+    raise ValueError('Unknown DOM element %r' % tree.tag)
+
+SYMBOL_TO_PLAINTEXT = {
+    'crarr': '\\',
+    }
+
+def to_plaintext(tree, indent=0, seclevel=0):
+    """    
+    Convert a DOM document encoding epytext to a string representation.
+    This representation is similar to the string generated by
+    C{to_epytext}, but C{to_plaintext} removes inline markup, prints
+    escaped characters in unescaped form, etc.
+
+    @param tree: A DOM document encoding of an epytext string.
+    @type tree: C{Element}
+    @param indent: The indentation for the string representation of
+        C{tree}.  Each line of the returned string will begin with
+        C{indent} space characters.
+    @type indent: C{int}
+    @param seclevel: The section level that C{tree} appears at.  This
+        is used to generate section headings.
+    @type seclevel: C{int}
+    @return: The epytext string corresponding to C{tree}.
+    @rtype: C{string}
+    """
+    if isinstance(tree, basestring): return tree
+
+    if tree.tag == 'section': seclevel += 1
+
+    # Figure out the child indent level.
+    if tree.tag == 'epytext': cindent = indent
+    elif tree.tag == 'li' and tree.attribs.get('bullet'):
+        cindent = indent + 1 + len(tree.attribs.get('bullet'))
+    else:
+        cindent = indent + 2
+    variables = [to_plaintext(c, cindent, seclevel) for c in tree.children]
+    childstr = ''.join(variables)
+
+    if tree.tag == 'para':
+        return wordwrap(childstr, indent)+'\n'
+    elif tree.tag == 'li':
+        # We should be able to use getAttribute here; but there's no
+        # convenient way to test if an element has an attribute..
+        bullet = tree.attribs.get('bullet') or '-'
+        return indent*' ' + bullet + ' ' + childstr.lstrip()
+    elif tree.tag == 'heading':
+        uline = len(childstr)*_HEADING_CHARS[seclevel-1]
+        return ((indent-2)*' ' + childstr + '\n' +
+                (indent-2)*' ' + uline + '\n')
+    elif tree.tag == 'doctestblock':
+        lines = [(indent+2)*' '+line for line in childstr.split('\n')]
+        return '\n'.join(lines) + '\n\n'
+    elif tree.tag == 'literalblock':
+        lines = [(indent+1)*' '+line for line in childstr.split('\n')]
+        return '\n'.join(lines) + '\n\n'
+    elif tree.tag == 'fieldlist':
+        return childstr
+    elif tree.tag == 'field':
+        numargs = 0
+        while tree.children[numargs+1].tag == 'arg': numargs += 1
+        tag = variables[0]
+        args = variables[1:1+numargs]
+        body = variables[1+numargs:]
+        str = (indent)*' '+'@'+variables[0]
+        if args: str += '(' + ', '.join(args) + ')'
+        return str + ':\n' + ''.join(body)
+    elif tree.tag == 'uri':
+        if len(variables) != 2: raise ValueError('Bad URI ')
+        elif variables[0] == variables[1]: return '<%s>' % variables[1]
+        else: return '%r<%s>' % (variables[0], variables[1])
+    elif tree.tag == 'link':
+        if len(variables) != 2: raise ValueError('Bad Link')
+        return '%s' % variables[0]
+    elif tree.tag in ('olist', 'ulist'):
+        # [xx] always use condensed lists.
+        ## Use a condensed list if each list item is 1 line long.
+        #for child in variables:
+        #    if child.count('\n') > 2: return childstr
+        return childstr.replace('\n\n', '\n')+'\n'
+    elif tree.tag == 'symbol':
+        return '%s' % SYMBOL_TO_PLAINTEXT.get(childstr, childstr)
+    elif tree.tag == 'graph':
+        return '<<%s graph: %s>>' % (variables[0], ', '.join(variables[1:]))
+    else:
+        # Assume that anything else can be passed through.
+        return childstr
+
+def to_debug(tree, indent=4, seclevel=0):
+    """    
+    Convert a DOM document encoding epytext back to an epytext string,
+    annotated with extra debugging information.  This function is
+    similar to L{to_epytext}, but it adds explicit information about
+    where different blocks begin, along the left margin.
+
+    @param tree: A DOM document encoding of an epytext string.
+    @type tree: C{Element}
+    @param indent: The indentation for the string representation of
+        C{tree}.  Each line of the returned string will begin with
+        C{indent} space characters.
+    @type indent: C{int}
+    @param seclevel: The section level that C{tree} appears at.  This
+        is used to generate section headings.
+    @type seclevel: C{int}
+    @return: The epytext string corresponding to C{tree}.
+    @rtype: C{string}
+    """
+    if isinstance(tree, basestring):
+        str = re.sub(r'\{', '\0', tree)
+        str = re.sub(r'\}', '\1', str)
+        return str
+
+    if tree.tag == 'section': seclevel += 1
+    variables = [to_debug(c, indent+2, seclevel) for c in tree.children]
+    childstr = ''.join(variables)
+
+    # Clean up for literal blocks (add the double "::" back)
+    childstr = re.sub(':( *\n     \|\n)\2', '::\\1', childstr)
+
+    if tree.tag == 'para':
+        str = wordwrap(childstr, indent-6, 69)+'\n'
+        str = re.sub(r'((^|\n)\s*\d+)\.', r'\1E{.}', str)
+        str = re.sub(r'((^|\n)\s*)-', r'\1E{-}', str)
+        str = re.sub(r'((^|\n)\s*)@', r'\1E{@}', str)
+        str = re.sub(r'::(\s*($|\n))', r'E{:}E{:}\1', str)
+        str = re.sub('\0', 'E{lb}', str)
+        str = re.sub('\1', 'E{rb}', str)
+        lines = str.rstrip().split('\n')
+        lines[0] = '   P>|' + lines[0]
+        lines[1:] = ['     |'+l for l in lines[1:]]
+        return '\n'.join(lines)+'\n     |\n'
+    elif tree.tag == 'li':
+        bullet = tree.attribs.get('bullet') or '-'
+        return '  LI>|'+ (indent-6)*' '+ bullet + ' ' + childstr[6:].lstrip()
+    elif tree.tag in ('olist', 'ulist'):
+        return 'LIST>|'+(indent-4)*' '+childstr[indent+2:]
+    elif tree.tag == 'heading':
+        str = re.sub('\0', 'E{lb}', childstr)
+        str = re.sub('\1', 'E{rb}', str)
+        uline = len(childstr)*_HEADING_CHARS[seclevel-1]
+        return ('SEC'+`seclevel`+'>|'+(indent-8)*' ' + str + '\n' +
+                '     |'+(indent-8)*' ' + uline + '\n')
+    elif tree.tag == 'doctestblock':
+        str = re.sub('\0', '{', childstr)
+        str = re.sub('\1', '}', str)
+        lines = ['     |'+(indent-4)*' '+line for line in str.split('\n')]
+        lines[0] = 'DTST>'+lines[0][5:]
+        return '\n'.join(lines) + '\n     |\n'
+    elif tree.tag == 'literalblock':
+        str = re.sub('\0', '{', childstr)
+        str = re.sub('\1', '}', str)
+        lines = ['     |'+(indent-5)*' '+line for line in str.split('\n')]
+        lines[0] = ' LIT>'+lines[0][5:]
+        return '\2' + '\n'.join(lines) + '\n     |\n'
+    elif tree.tag == 'field':
+        numargs = 0
+        while tree.children[numargs+1].tag == 'arg': numargs += 1
+        tag = variables[0]
+        args = variables[1:1+numargs]
+        body = variables[1+numargs:]
+        str = ' FLD>|'+(indent-6)*' '+'@'+variables[0]
+        if args: str += '(' + ', '.join(args) + ')'
+        return str + ':\n' + ''.join(body)
+    elif tree.tag == 'target':
+        return '<%s>' % childstr
+    elif tree.tag in ('fieldlist', 'tag', 'arg', 'epytext',
+                          'section', 'olist', 'ulist', 'name'):
+        return childstr
+    elif tree.tag == 'symbol':
+        return 'E{%s}' % childstr
+    elif tree.tag == 'graph':
+        return 'G{%s}' % ' '.join(variables)
+    else:
+        for (tag, name) in _COLORIZING_TAGS.items():
+            if name == tree.tag:
+                return '%s{%s}' % (tag, childstr)
+    raise ValueError('Unknown DOM element %r' % tree.tag)
+
+##################################################
+## Top-Level Wrapper function
+##################################################
+def pparse(str, show_warnings=1, show_errors=1, stream=sys.stderr):
+    """
+    Pretty-parse the string.  This parses the string, and catches any
+    warnings or errors produced.  Any warnings and errors are
+    displayed, and the resulting DOM parse structure is returned.
+
+    @param str: The string to parse.
+    @type str: C{string}
+    @param show_warnings: Whether or not to display non-fatal errors
+        generated by parsing C{str}.
+    @type show_warnings: C{boolean}
+    @param show_errors: Whether or not to display fatal errors 
+        generated by parsing C{str}.
+    @type show_errors: C{boolean}
+    @param stream: The stream that warnings and errors should be
+        written to.
+    @type stream: C{stream}
+    @return: a DOM document encoding the contents of C{str}.
+    @rtype: C{Element}
+    @raise SyntaxError: If any fatal errors were encountered.
+    """
+    errors = []
+    confused = 0
+    try:
+        val = parse(str, errors)
+        warnings = [e for e in errors if not e.is_fatal()]
+        errors = [e for e in errors if e.is_fatal()]
+    except:
+        confused = 1
+        
+    if not show_warnings: warnings = []
+    warnings.sort()
+    errors.sort()
+    if warnings:
+        print >>stream, '='*SCRWIDTH
+        print >>stream, "WARNINGS"
+        print >>stream, '-'*SCRWIDTH
+        for warning in warnings:
+            print >>stream, warning.as_warning()
+        print >>stream, '='*SCRWIDTH
+    if errors and show_errors:
+        if not warnings: print >>stream, '='*SCRWIDTH
+        print >>stream, "ERRORS"
+        print >>stream, '-'*SCRWIDTH
+        for error in errors:
+            print >>stream, error
+        print >>stream, '='*SCRWIDTH
+
+    if confused: raise
+    elif errors: raise SyntaxError('Encountered Errors')
+    else: return val
+
+##################################################
+## Parse Errors
+##################################################
+
+class TokenizationError(ParseError):
+    """
+    An error generated while tokenizing a formatted documentation
+    string.
+    """
+
+class StructuringError(ParseError):
+    """
+    An error generated while structuring a formatted documentation
+    string.
+    """
+
+class ColorizingError(ParseError):
+    """
+    An error generated while colorizing a paragraph.
+    """
+    def __init__(self, descr, token, charnum, is_fatal=1):
+        """
+        Construct a new colorizing exception.
+        
+        @param descr: A short description of the error.
+        @type descr: C{string}
+        @param token: The token where the error occured
+        @type token: L{Token}
+        @param charnum: The character index of the position in
+            C{token} where the error occured.
+        @type charnum: C{int}
+        """
+        ParseError.__init__(self, descr, token.startline, is_fatal)
+        self.token = token
+        self.charnum = charnum
+
+    CONTEXT_RANGE = 20
+    def descr(self):
+        RANGE = self.CONTEXT_RANGE
+        if self.charnum <= RANGE:
+            left = self.token.contents[0:self.charnum]
+        else:
+            left = '...'+self.token.contents[self.charnum-RANGE:self.charnum]
+        if (len(self.token.contents)-self.charnum) <= RANGE:
+            right = self.token.contents[self.charnum:]
+        else:
+            right = (self.token.contents[self.charnum:self.charnum+RANGE]
+                     + '...')
+        return ('%s\n\n%s%s\n%s^' % (self._descr, left, right, ' '*len(left)))
+                
+##################################################
+## Convenience parsers
+##################################################
+
+def parse_as_literal(str):
+    """
+    Return a DOM document matching the epytext DTD, containing a
+    single literal block.  That literal block will include the
+    contents of the given string.  This method is typically used as a
+    fall-back when the parser fails.
+
+    @param str: The string which should be enclosed in a literal
+        block.
+    @type str: C{string}
+    
+    @return: A DOM document containing C{str} in a single literal
+        block.
+    @rtype: C{Element}
+    """
+    return Element('epytext', Element('literalblock', str))
+
+def parse_as_para(str):
+    """
+    Return a DOM document matching the epytext DTD, containing a
+    single paragraph.  That paragraph will include the contents of the
+    given string.  This can be used to wrap some forms of
+    automatically generated information (such as type names) in
+    paragraphs.
+
+    @param str: The string which should be enclosed in a paragraph.
+    @type str: C{string}
+    
+    @return: A DOM document containing C{str} in a single paragraph.
+    @rtype: C{Element}
+    """
+    return Element('epytext', Element('para', str))
+
+#################################################################
+##                    SUPPORT FOR EPYDOC
+#################################################################
+
+def parse_docstring(docstring, errors, **options):
+    """
+    Parse the given docstring, which is formatted using epytext; and
+    return a C{ParsedDocstring} representation of its contents.
+    @param docstring: The docstring to parse
+    @type docstring: C{string}
+    @param errors: A list where any errors generated during parsing
+        will be stored.
+    @type errors: C{list} of L{ParseError}
+    @param options: Extra options.  Unknown options are ignored.
+        Currently, no extra options are defined.
+    @rtype: L{ParsedDocstring}
+    """
+    return ParsedEpytextDocstring(parse(docstring, errors), **options)
+    
+class ParsedEpytextDocstring(ParsedDocstring):
+    SYMBOL_TO_HTML = {
+        # Symbols
+        '<-': '←', '->': '→', '^': '↑', 'v': '↓',
+    
+        # Greek letters
+        'alpha': 'α', 'beta': 'β', 'gamma': 'γ',
+        'delta': 'δ', 'epsilon': 'ε', 'zeta': 'ζ',  
+        'eta': 'η', 'theta': 'θ', 'iota': 'ι', 
+        'kappa': 'κ', 'lambda': 'λ', 'mu': 'μ',  
+        'nu': 'ν', 'xi': 'ξ', 'omicron': 'ο',  
+        'pi': 'π', 'rho': 'ρ', 'sigma': 'σ',  
+        'tau': 'τ', 'upsilon': 'υ', 'phi': 'φ',  
+        'chi': 'χ', 'psi': 'ψ', 'omega': 'ω',
+        'Alpha': 'Α', 'Beta': 'Β', 'Gamma': 'Γ',
+        'Delta': 'Δ', 'Epsilon': 'Ε', 'Zeta': 'Ζ',  
+        'Eta': 'Η', 'Theta': 'Θ', 'Iota': 'Ι', 
+        'Kappa': 'Κ', 'Lambda': 'Λ', 'Mu': 'Μ',  
+        'Nu': 'Ν', 'Xi': 'Ξ', 'Omicron': 'Ο',  
+        'Pi': 'Π', 'Rho': 'Ρ', 'Sigma': 'Σ',  
+        'Tau': 'Τ', 'Upsilon': 'Υ', 'Phi': 'Φ',  
+        'Chi': 'Χ', 'Psi': 'Ψ', 'Omega': 'Ω',
+    
+        # HTML character entities
+        'larr': '←', 'rarr': '→', 'uarr': '↑',
+        'darr': '↓', 'harr': '↔', 'crarr': '↵',
+        'lArr': '⇐', 'rArr': '⇒', 'uArr': '⇑',
+        'dArr': '⇓', 'hArr': '⇔', 
+        'copy': '©', 'times': '×', 'forall': '∀',
+        'exist': '∃', 'part': '∂',
+        'empty': '∅', 'isin': '∈', 'notin': '∉',
+        'ni': '∋', 'prod': '∏', 'sum': '∑',
+        'prop': '∝', 'infin': '∞', 'ang': '∠',
+        'and': '∧', 'or': '∨', 'cap': '∩', 'cup': '∪',
+        'int': '∫', 'there4': '&there4;', 'sim': '∼',
+        'cong': '≅', 'asymp': '≈', 'ne': '≠',
+        'equiv': '≡', 'le': '≤', 'ge': '≥',
+        'sub': '⊂', 'sup': '⊃', 'nsub': '⊄',
+        'sube': '⊆', 'supe': '⊇', 'oplus': '⊕',
+        'otimes': '⊗', 'perp': '⊥',
+    
+        # Alternate (long) names
+        'infinity': '∞', 'integral': '∫', 'product': '∏',
+        '<=': '≤', '>=': '≥',
+        }
+    
+    SYMBOL_TO_LATEX = {
+        # Symbols
+        '<-': r'\(\leftarrow\)', '->': r'\(\rightarrow\)',
+        '^': r'\(\uparrow\)', 'v': r'\(\downarrow\)',
+    
+        # Greek letters (use lower case when upcase not available)
+
+        'alpha': r'\(\alpha\)', 'beta': r'\(\beta\)', 'gamma':
+        r'\(\gamma\)', 'delta': r'\(\delta\)', 'epsilon':
+        r'\(\epsilon\)', 'zeta': r'\(\zeta\)', 'eta': r'\(\eta\)',
+        'theta': r'\(\theta\)', 'iota': r'\(\iota\)', 'kappa':
+        r'\(\kappa\)', 'lambda': r'\(\lambda\)', 'mu': r'\(\mu\)',
+        'nu': r'\(\nu\)', 'xi': r'\(\xi\)', 'omicron': r'\(o\)', 'pi':
+        r'\(\pi\)', 'rho': r'\(\rho\)', 'sigma': r'\(\sigma\)', 'tau':
+        r'\(\tau\)', 'upsilon': r'\(\upsilon\)', 'phi': r'\(\phi\)',
+        'chi': r'\(\chi\)', 'psi': r'\(\psi\)', 'omega':
+        r'\(\omega\)',
+        
+        'Alpha': r'\(\alpha\)', 'Beta': r'\(\beta\)', 'Gamma':
+        r'\(\Gamma\)', 'Delta': r'\(\Delta\)', 'Epsilon':
+        r'\(\epsilon\)', 'Zeta': r'\(\zeta\)', 'Eta': r'\(\eta\)',
+        'Theta': r'\(\Theta\)', 'Iota': r'\(\iota\)', 'Kappa':
+        r'\(\kappa\)', 'Lambda': r'\(\Lambda\)', 'Mu': r'\(\mu\)',
+        'Nu': r'\(\nu\)', 'Xi': r'\(\Xi\)', 'Omicron': r'\(o\)', 'Pi':
+        r'\(\Pi\)', 'ho': r'\(\rho\)', 'Sigma': r'\(\Sigma\)', 'Tau':
+        r'\(\tau\)', 'Upsilon': r'\(\Upsilon\)', 'Phi': r'\(\Phi\)',
+        'Chi': r'\(\chi\)', 'Psi': r'\(\Psi\)', 'Omega':
+        r'\(\Omega\)',
+    
+        # HTML character entities
+        'larr': r'\(\leftarrow\)', 'rarr': r'\(\rightarrow\)', 'uarr':
+        r'\(\uparrow\)', 'darr': r'\(\downarrow\)', 'harr':
+        r'\(\leftrightarrow\)', 'crarr': r'\(\hookleftarrow\)',
+        'lArr': r'\(\Leftarrow\)', 'rArr': r'\(\Rightarrow\)', 'uArr':
+        r'\(\Uparrow\)', 'dArr': r'\(\Downarrow\)', 'hArr':
+        r'\(\Leftrightarrow\)', 'copy': r'{\textcopyright}',
+        'times': r'\(\times\)', 'forall': r'\(\forall\)', 'exist':
+        r'\(\exists\)', 'part': r'\(\partial\)', 'empty':
+        r'\(\emptyset\)', 'isin': r'\(\in\)', 'notin': r'\(\notin\)',
+        'ni': r'\(\ni\)', 'prod': r'\(\prod\)', 'sum': r'\(\sum\)',
+        'prop': r'\(\propto\)', 'infin': r'\(\infty\)', 'ang':
+        r'\(\angle\)', 'and': r'\(\wedge\)', 'or': r'\(\vee\)', 'cap':
+        r'\(\cap\)', 'cup': r'\(\cup\)', 'int': r'\(\int\)', 'there4':
+        r'\(\therefore\)', 'sim': r'\(\sim\)', 'cong': r'\(\cong\)',
+        'asymp': r'\(\approx\)', 'ne': r'\(\ne\)', 'equiv':
+        r'\(\equiv\)', 'le': r'\(\le\)', 'ge': r'\(\ge\)', 'sub':
+        r'\(\subset\)', 'sup': r'\(\supset\)', 'nsub': r'\(\supset\)',
+        'sube': r'\(\subseteq\)', 'supe': r'\(\supseteq\)', 'oplus':
+        r'\(\oplus\)', 'otimes': r'\(\otimes\)', 'perp': r'\(\perp\)',
+    
+        # Alternate (long) names
+        'infinity': r'\(\infty\)', 'integral': r'\(\int\)', 'product':
+        r'\(\prod\)', '<=': r'\(\le\)', '>=': r'\(\ge\)',
+        }
+    
+    def __init__(self, dom_tree, **options):
+        self._tree = dom_tree
+        # Caching:
+        self._html = self._latex = self._plaintext = None
+        self._terms = None
+        # inline option -- mark top-level children as inline.
+        if options.get('inline') and self._tree is not None:
+            for elt in self._tree.children:
+                elt.attribs['inline'] = True
+
+    def __str__(self):
+        return str(self._tree)
+        
+    def to_html(self, docstring_linker, directory=None, docindex=None,
+                context=None, **options):
+        if self._html is not None: return self._html
+        if self._tree is None: return ''
+        indent = options.get('indent', 0)
+        self._html = self._to_html(self._tree, docstring_linker, directory, 
+                                   docindex, context, indent)
+        return self._html
+
+    def to_latex(self, docstring_linker, **options):
+        if self._latex is not None: return self._latex
+        if self._tree is None: return ''
+        indent = options.get('indent', 0)
+        self._hyperref = options.get('hyperref', 1)
+        self._latex = self._to_latex(self._tree, docstring_linker, indent)
+        return self._latex
+
+    def to_plaintext(self, docstring_linker, **options):
+        # [XX] don't cache -- different options might be used!!
+        #if self._plaintext is not None: return self._plaintext
+        if self._tree is None: return ''
+        if 'indent' in options:
+            self._plaintext = to_plaintext(self._tree,
+                                           indent=options['indent'])
+        else:
+            self._plaintext = to_plaintext(self._tree)
+        return self._plaintext
+
+    def _index_term_key(self, tree):
+        str = to_plaintext(tree)
+        str = re.sub(r'\s\s+', '-', str)
+        return "index-"+re.sub("[^a-zA-Z0-9]", "_", str)
+
+    def _to_html(self, tree, linker, directory, docindex, context,
+                 indent=0, seclevel=0):
+        if isinstance(tree, basestring):
+            return plaintext_to_html(tree)
+
+        if tree.tag == 'epytext': indent -= 2
+        if tree.tag == 'section': seclevel += 1
+
+        # Process the variables first.
+        variables = [self._to_html(c, linker, directory, docindex, context,
+                                   indent+2, seclevel)
+                    for c in tree.children]
+    
+        # Construct the HTML string for the variables.
+        childstr = ''.join(variables)
+    
+        # Perform the approriate action for the DOM tree type.
+        if tree.tag == 'para':
+            return wordwrap(
+                (tree.attribs.get('inline') and '%s' or '<p>%s</p>') % childstr,
+                indent)
+        elif tree.tag == 'code':
+            style = tree.attribs.get('style')
+            if style:
+                return '<code class="%s">%s</code>' % (style, childstr)
+            else:
+                return '<code>%s</code>' % childstr
+        elif tree.tag == 'uri':
+            return ('<a href="%s" target="_top">%s</a>' %
+                    (variables[1], variables[0]))
+        elif tree.tag == 'link':
+            return linker.translate_identifier_xref(variables[1], variables[0])
+        elif tree.tag == 'italic':
+            return '<i>%s</i>' % childstr
+        elif tree.tag == 'math':
+            return '<i class="math">%s</i>' % childstr
+        elif tree.tag == 'indexed':
+            term = Element('epytext', *tree.children, **tree.attribs)
+            return linker.translate_indexterm(ParsedEpytextDocstring(term))
+            #term_key = self._index_term_key(tree)
+            #return linker.translate_indexterm(childstr, term_key)
+        elif tree.tag == 'bold':
+            return '<b>%s</b>' % childstr
+        elif tree.tag == 'ulist':
+            return '%s<ul>\n%s%s</ul>\n' % (indent*' ', childstr, indent*' ')
+        elif tree.tag == 'olist':
+            start = tree.attribs.get('start') or ''
+            return ('%s<ol start="%s">\n%s%s</ol>\n' %
+                    (indent*' ', start, childstr, indent*' '))
+        elif tree.tag == 'li':
+            return indent*' '+'<li>\n%s%s</li>\n' % (childstr, indent*' ')
+        elif tree.tag == 'heading':
+            return ('%s<h%s class="heading">%s</h%s>\n' %
+                    ((indent-2)*' ', seclevel, childstr, seclevel))
+        elif tree.tag == 'literalblock':
+            return '<pre class="literalblock">\n%s\n</pre>\n' % childstr
+        elif tree.tag == 'doctestblock':
+            return doctest_to_html(tree.children[0].strip())
+        elif tree.tag == 'fieldlist':
+            raise AssertionError("There should not be any field lists left")
+        elif tree.tag in ('epytext', 'section', 'tag', 'arg',
+                              'name', 'target', 'html'):
+            return childstr
+        elif tree.tag == 'symbol':
+            symbol = tree.children[0]
+            return self.SYMBOL_TO_HTML.get(symbol, '[%s]' % symbol)
+        elif tree.tag == 'graph':
+            # Generate the graph.
+            graph = self._build_graph(variables[0], variables[1:], linker,
+                                      docindex, context)
+            if not graph: return ''
+            # Write the graph.
+            image_url = '%s.gif' % graph.uid
+            image_file = os.path.join(directory, image_url)
+            return graph.to_html(image_file, image_url)
+        else:
+            raise ValueError('Unknown epytext DOM element %r' % tree.tag)
+
+    #GRAPH_TYPES = ['classtree', 'packagetree', 'importgraph']
+    def _build_graph(self, graph_type, graph_args, linker, 
+                     docindex, context):
+        # Generate the graph
+        if graph_type == 'classtree':
+            from epydoc.apidoc import ClassDoc
+            if graph_args:
+                bases = [docindex.find(name, context)
+                         for name in graph_args]
+            elif isinstance(context, ClassDoc):
+                bases = [context]
+            else:
+                log.warning("Could not construct class tree: you must "
+                            "specify one or more base classes.")
+                return None
+            from epydoc.docwriter.dotgraph import class_tree_graph
+            return class_tree_graph(bases, linker, context)
+        elif graph_type == 'packagetree':
+            from epydoc.apidoc import ModuleDoc
+            if graph_args:
+                packages = [docindex.find(name, context)
+                            for name in graph_args]
+            elif isinstance(context, ModuleDoc):
+                packages = [context]
+            else:
+                log.warning("Could not construct package tree: you must "
+                            "specify one or more root packages.")
+                return None
+            from epydoc.docwriter.dotgraph import package_tree_graph
+            return package_tree_graph(packages, linker, context)
+        elif graph_type == 'importgraph':
+            from epydoc.apidoc import ModuleDoc
+            modules = [d for d in docindex.root if isinstance(d, ModuleDoc)]
+            from epydoc.docwriter.dotgraph import import_graph
+            return import_graph(modules, docindex, linker, context)
+
+        elif graph_type == 'callgraph':
+            if graph_args:
+                docs = [docindex.find(name, context) for name in graph_args]
+                docs = [doc for doc in docs if doc is not None]
+            else:
+                docs = [context]
+            from epydoc.docwriter.dotgraph import call_graph
+            return call_graph(docs, docindex, linker, context)
+        else:
+            log.warning("Unknown graph type %s" % graph_type)
+            
+    
+    def _to_latex(self, tree, linker, indent=0, seclevel=0, breakany=0):
+        if isinstance(tree, basestring):
+            return plaintext_to_latex(tree, breakany=breakany)
+
+        if tree.tag == 'section': seclevel += 1
+    
+        # Figure out the child indent level.
+        if tree.tag == 'epytext': cindent = indent
+        else: cindent = indent + 2
+        variables = [self._to_latex(c, linker, cindent, seclevel, breakany)
+                    for c in tree.children]
+        childstr = ''.join(variables)
+    
+        if tree.tag == 'para':
+            return wordwrap(childstr, indent)+'\n'
+        elif tree.tag == 'code':
+            return '\\texttt{%s}' % childstr
+        elif tree.tag == 'uri':
+            if len(variables) != 2: raise ValueError('Bad URI ')
+            if self._hyperref:
+                # ~ and # should not be escaped in the URI.
+                uri = tree.children[1].children[0]
+                uri = uri.replace('{\\textasciitilde}', '~')
+                uri = uri.replace('\\#', '#')
+                if variables[0] == variables[1]:
+                    return '\\href{%s}{\\textit{%s}}' % (uri, variables[1])
+                else:
+                    return ('%s\\footnote{\\href{%s}{%s}}' %
+                            (variables[0], uri, variables[1]))
+            else:
+                if variables[0] == variables[1]:
+                    return '\\textit{%s}' % variables[1]
+                else:
+                    return '%s\\footnote{%s}' % (variables[0], variables[1])
+        elif tree.tag == 'link':
+            if len(variables) != 2: raise ValueError('Bad Link')
+            return linker.translate_identifier_xref(variables[1], variables[0])
+        elif tree.tag == 'italic':
+            return '\\textit{%s}' % childstr
+        elif tree.tag == 'math':
+            return '\\textit{%s}' % childstr
+        elif tree.tag == 'indexed':
+            term = Element('epytext', *tree.children, **tree.attribs)
+            return linker.translate_indexterm(ParsedEpytextDocstring(term))
+        elif tree.tag == 'bold':
+            return '\\textbf{%s}' % childstr
+        elif tree.tag == 'li':
+            return indent*' ' + '\\item ' + childstr.lstrip()
+        elif tree.tag == 'heading':
+            return ' '*(indent-2) + '(section) %s\n\n' % childstr
+        elif tree.tag == 'doctestblock':
+            return doctest_to_latex(tree.children[0].strip())
+        elif tree.tag == 'literalblock':
+            return '\\begin{alltt}\n%s\\end{alltt}\n\n' % childstr
+        elif tree.tag == 'fieldlist':
+            return indent*' '+'{omitted fieldlist}\n'
+        elif tree.tag == 'olist':
+            return (' '*indent + '\\begin{enumerate}\n\n' + 
+                    ' '*indent + '\\setlength{\\parskip}{0.5ex}\n' +
+                    childstr +
+                    ' '*indent + '\\end{enumerate}\n\n')
+        elif tree.tag == 'ulist':
+            return (' '*indent + '\\begin{itemize}\n' +
+                    ' '*indent + '\\setlength{\\parskip}{0.6ex}\n' +
+                    childstr +
+                    ' '*indent + '\\end{itemize}\n\n')
+        elif tree.tag == 'symbol':
+            symbol = tree.children[0]
+            return self.SYMBOL_TO_LATEX.get(symbol, '[%s]' % symbol)
+        elif tree.tag == 'graph':
+            return '(GRAPH)'
+            #raise ValueError, 'graph not implemented yet for latex'
+        else:
+            # Assume that anything else can be passed through.
+            return childstr
+
+    _SUMMARY_RE = re.compile(r'(\s*[\w\W]*?\.)(\s|$)')
+
+    def summary(self):
+        if self._tree is None: return self, False
+        tree = self._tree
+        doc = Element('epytext')
+    
+        # Find the first paragraph.
+        variables = tree.children
+        while (len(variables) > 0) and (variables[0].tag != 'para'):
+            if variables[0].tag in ('section', 'ulist', 'olist', 'li'):
+                variables = variables[0].children
+            else:
+                variables = variables[1:]
+    
+        # Special case: if the docstring contains a single literal block,
+        # then try extracting the summary from it.
+        if (len(variables) == 0 and len(tree.children) == 1 and
+            tree.children[0].tag == 'literalblock'):
+            str = re.split(r'\n\s*(\n|$).*',
+                           tree.children[0].children[0], 1)[0]
+            variables = [Element('para')]
+            variables[0].children.append(str)
+    
+        # If we didn't find a paragraph, return an empty epytext.
+        if len(variables) == 0: return ParsedEpytextDocstring(doc), False
+    
+        # Is there anything else, excluding tags, after the first variable?
+        long_docs = False
+        for var in variables[1:]:
+            if isinstance(var, Element) and var.tag == 'fieldlist':
+                continue
+            long_docs = True
+            break
+        
+        # Extract the first sentence.
+        parachildren = variables[0].children
+        para = Element('para', inline=True)
+        doc.children.append(para)
+        for parachild in parachildren:
+            if isinstance(parachild, basestring):
+                m = self._SUMMARY_RE.match(parachild)
+                if m:
+                    para.children.append(m.group(1))
+                    long_docs |= parachild is not parachildren[-1]
+                    if not long_docs:
+                        other = parachild[m.end():]
+                        if other and not other.isspace():
+                            long_docs = True
+                    return ParsedEpytextDocstring(doc), long_docs
+            para.children.append(parachild)
+
+        return ParsedEpytextDocstring(doc), long_docs
+
+    def split_fields(self, errors=None):
+        if self._tree is None: return (self, ())
+        tree = Element(self._tree.tag, *self._tree.children,
+                       **self._tree.attribs)
+        fields = []
+
+        if (tree.children and
+            tree.children[-1].tag == 'fieldlist' and
+            tree.children[-1].children):
+            field_nodes = tree.children[-1].children
+            del tree.children[-1]
+
+            for field in field_nodes:
+                # Get the tag
+                tag = field.children[0].children[0].lower()
+                del field.children[0]
+
+                # Get the argument.
+                if field.children and field.children[0].tag == 'arg':
+                    arg = field.children[0].children[0]
+                    del field.children[0]
+                else:
+                    arg = None
+
+                # Process the field.
+                field.tag = 'epytext'
+                fields.append(Field(tag, arg, ParsedEpytextDocstring(field)))
+
+        # Save the remaining docstring as the description..
+        if tree.children and tree.children[0].children:
+            return ParsedEpytextDocstring(tree), fields
+        else:
+            return None, fields
+
+    
+    def index_terms(self):
+        if self._terms is None:
+            self._terms = []
+            self._index_terms(self._tree, self._terms)
+        return self._terms
+
+    def _index_terms(self, tree, terms):
+        if tree is None or isinstance(tree, basestring):
+            return
+        
+        if tree.tag == 'indexed':
+            term = Element('epytext', *tree.children, **tree.attribs)
+            terms.append(ParsedEpytextDocstring(term))
+
+        # Look for index items in child nodes.
+        for child in tree.children:
+            self._index_terms(child, terms)
diff --git a/epydoc/markup/javadoc.py b/epydoc/markup/javadoc.py
new file mode 100644
index 0000000..6aa5a4a
--- /dev/null
+++ b/epydoc/markup/javadoc.py
@@ -0,0 +1,250 @@
+#
+# javadoc.py: javadoc docstring parsing
+# Edward Loper
+#
+# Created [07/03/03 12:37 PM]
+# $Id: javadoc.py 1574 2007-03-07 02:55:14Z dvarrazzo $
+#
+
+"""
+Epydoc parser for U{Javadoc<http://java.sun.com/j2se/javadoc/>}
+docstrings.  Javadoc is an HTML-based markup language that was
+developed for documenting Java APIs with inline comments.  It consists
+of raw HTML, augmented by Javadoc tags.  There are two types of
+Javadoc tag:
+
+  - X{Javadoc block tags} correspond to Epydoc fields.  They are
+    marked by starting a line with a string of the form \"C{@M{tag}
+    [M{arg}]}\", where C{M{tag}} indicates the type of block, and
+    C{M{arg}} is an optional argument.  (For fields that take
+    arguments, Javadoc assumes that the single word immediately
+    following the tag is an argument; multi-word arguments cannot be
+    used with javadoc.)  
+  
+  - X{inline Javadoc tags} are used for inline markup.  In particular,
+    epydoc uses them for crossreference links between documentation.
+    Inline tags may appear anywhere in the text, and have the form
+    \"C{{@M{tag} M{[args...]}}}\", where C{M{tag}} indicates the
+    type of inline markup, and C{M{args}} are optional arguments.
+
+Epydoc supports all Javadoc tags, I{except}:
+  - C{{@docRoot}}, which gives the (relative) URL of the generated
+    documentation's root.
+  - C{{@inheritDoc}}, which copies the documentation of the nearest
+    overridden object.  This can be used to combine the documentation
+    of the overridden object with the documentation of the
+    overridding object.
+  - C{@serial}, C{@serialField}, and C{@serialData} which describe the
+    serialization (pickling) of an object.
+  - C{{@value}}, which copies the value of a constant.
+
+ at warning: Epydoc only supports HTML output for Javadoc docstrings.
+"""
+__docformat__ = 'epytext en'
+
+# Imports
+import re
+from xml.dom.minidom import *
+from epydoc.markup import *
+
+def parse_docstring(docstring, errors, **options):
+    """
+    Parse the given docstring, which is formatted using Javadoc; and
+    return a C{ParsedDocstring} representation of its contents.
+    @param docstring: The docstring to parse
+    @type docstring: C{string}
+    @param errors: A list where any errors generated during parsing
+        will be stored.
+    @type errors: C{list} of L{ParseError}
+    @param options: Extra options.  Unknown options are ignored.
+        Currently, no extra options are defined.
+    @rtype: L{ParsedDocstring}
+    """
+    return ParsedJavadocDocstring(docstring, errors)
+
+class ParsedJavadocDocstring(ParsedDocstring):
+    """
+    An encoded version of a Javadoc docstring.  Since Javadoc is a
+    fairly simple markup language, we don't do any processing in
+    advance; instead, we wait to split fields or resolve
+    crossreference links until we need to.
+
+    @group Field Splitting: split_fields, _ARG_FIELDS, _FIELD_RE
+    @cvar _ARG_FIELDS: A list of the fields that take arguments.
+        Since Javadoc doesn't mark arguments in any special way, we
+        must consult this list to decide whether the first word of a
+        field is an argument or not.
+    @cvar _FIELD_RE: A regular expression used to search for Javadoc
+        block tags.
+
+    @group HTML Output: to_html, _LINK_SPLIT_RE, _LINK_RE
+    @cvar _LINK_SPLIT_RE: A regular expression used to search for
+        Javadoc inline tags.
+    @cvar _LINK_RE: A regular expression used to process Javadoc
+        inline tags.
+    """
+    def __init__(self, docstring, errors=None):
+        """
+        Create a new C{ParsedJavadocDocstring}.
+        
+        @param docstring: The docstring that should be used to
+            construct this C{ParsedJavadocDocstring}.
+        @type docstring: C{string}
+        @param errors: A list where any errors generated during
+            parsing will be stored.  If no list is given, then
+            all errors are ignored.
+        @type errors: C{list} of L{ParseError}
+        """
+        self._docstring = docstring
+        if errors is None: errors = []
+        self._check_links(errors)
+
+    #////////////////////////////////////////////////////////////
+    # Field Splitting
+    #////////////////////////////////////////////////////////////
+
+    _ARG_FIELDS = ('group variable var type cvariable cvar ivariable '+
+                   'ivar param '+
+                   'parameter arg argument raise raises exception '+
+                   'except deffield newfield keyword kwarg kwparam').split()
+    _FIELD_RE = re.compile(r'(^\s*\@\w+[\s$])', re.MULTILINE)
+    
+    # Inherit docs from ParsedDocstring.
+    def split_fields(self, errors=None):
+
+        # Split the docstring into an alternating list of field tags
+        # and text (odd pieces are field tags).
+        pieces = self._FIELD_RE.split(self._docstring)
+
+        # The first piece is the description.
+        descr = ParsedJavadocDocstring(pieces[0])
+
+        # The remaining pieces are the block fields (alternating tags
+        # and bodies; odd pieces are tags).
+        fields = []
+        for i in range(1, len(pieces)):
+            if i%2 == 1:
+                # Get the field tag.
+                tag = pieces[i].strip()[1:]
+            else:
+                # Get the field argument (if appropriate).
+                if tag in self._ARG_FIELDS:
+                    subpieces = pieces[i].strip().split(None, 1)+['','']
+                    (arg, body) = subpieces[:2]
+                else:
+                    (arg, body) = (None, pieces[i])
+
+                # Special processing for @see fields, since Epydoc
+                # allows unrestricted text in them, but Javadoc just
+                # uses them for xref links:
+                if tag == 'see' and body:
+                    if body[0] in '"\'':
+                        if body[-1] == body[0]: body = body[1:-1]
+                    elif body[0] == '<': pass
+                    else: body = '{@link %s}' % body
+
+                # Construct the field.
+                parsed_body = ParsedJavadocDocstring(body)
+                fields.append(Field(tag, arg, parsed_body))
+
+        if pieces[0].strip():
+            return (descr, fields)
+        else:
+            return (None, fields)
+
+    #////////////////////////////////////////////////////////////
+    # HTML Output.
+    #////////////////////////////////////////////////////////////
+
+    _LINK_SPLIT_RE = re.compile(r'({@link(?:plain)?\s[^}]+})')
+    _LINK_RE = re.compile(r'{@link(?:plain)?\s+' + r'([\w#.]+)' +
+                          r'(?:\([^\)]*\))?' + r'(\s+.*)?' + r'}')
+
+    # Inherit docs from ParsedDocstring.
+    def to_html(self, docstring_linker, **options):
+        # Split the docstring into an alternating list of HTML and
+        # links (odd pieces are links).
+        pieces = self._LINK_SPLIT_RE.split(self._docstring)
+
+        # This function is used to translate {@link ...}s to HTML.
+        translate_xref = docstring_linker.translate_identifier_xref
+        
+        # Build up the HTML string from the pieces.  For HTML pieces
+        # (even), just add it to html.  For link pieces (odd), use
+        # docstring_linker to translate the crossreference link to
+        # HTML for us.
+        html = ''
+        for i in range(len(pieces)):
+            if i%2 == 0:
+                html += pieces[i]
+            else:
+                # Decompose the link into pieces.
+                m = self._LINK_RE.match(pieces[i])
+                if m is None: continue # Error flagged by _check_links
+                (target, name) = m.groups()
+
+                # Normalize the target name.
+                if target[0] == '#': target = target[1:]
+                target = target.replace('#', '.')
+                target = re.sub(r'\(.*\)', '', target)
+
+                # Provide a name, if it wasn't specified.
+                if name is None: name = target
+                else: name = name.strip()
+
+                # Use docstring_linker to convert the name to html.
+                html += translate_xref(target, name)
+        return html
+
+    def _check_links(self, errors):
+        """
+        Make sure that all @{link}s are valid.  We need a separate
+        method for ths because we want to do this at parse time, not
+        html output time.  Any errors found are appended to C{errors}.
+        """
+        pieces = self._LINK_SPLIT_RE.split(self._docstring)
+        linenum = 0
+        for i in range(len(pieces)):
+            if i%2 == 1 and not self._LINK_RE.match(pieces[i]):
+                estr = 'Bad link %r' % pieces[i]
+                errors.append(ParseError(estr, linenum, is_fatal=0))
+            linenum += pieces[i].count('\n')
+
+    #////////////////////////////////////////////////////////////
+    # Plaintext Output.
+    #////////////////////////////////////////////////////////////
+
+    # Inherit docs from ParsedDocstring.  Since we don't define
+    # to_latex, this is used when generating latex output.
+    def to_plaintext(self, docstring_linker, **options):
+        return self._docstring
+
+    _SUMMARY_RE = re.compile(r'(\s*[\w\W]*?\.)(\s|$)')
+
+    # Jeff's hack to get summary working
+    def summary(self):
+        # Drop tags
+        doc = "\n".join([ row for row in self._docstring.split('\n')
+                          if not row.lstrip().startswith('@') ])
+
+        m = self._SUMMARY_RE.match(doc)
+        if m:
+            other = doc[m.end():]
+            return (ParsedJavadocDocstring(m.group(1)),
+                    other != '' and not other.isspace())
+            
+        else:
+            parts = doc.strip('\n').split('\n', 1)
+            if len(parts) == 1:
+                summary = parts[0]
+                other = False
+            else:
+                summary = parts[0] + '...'
+                other = True
+            
+            return ParsedJavadocDocstring(summary), other
+        
+#     def concatenate(self, other):
+#         if not isinstance(other, ParsedJavadocDocstring):
+#             raise ValueError, 'Could not concatenate docstrings'
+#         return ParsedJavadocDocstring(self._docstring+other._docstring)
diff --git a/epydoc/markup/plaintext.py b/epydoc/markup/plaintext.py
new file mode 100644
index 0000000..9825b34
--- /dev/null
+++ b/epydoc/markup/plaintext.py
@@ -0,0 +1,78 @@
+#
+# plaintext.py: plaintext docstring parsing
+# Edward Loper
+#
+# Created [04/10/01 12:00 AM]
+# $Id: plaintext.py 1574 2007-03-07 02:55:14Z dvarrazzo $
+#
+
+"""
+Parser for plaintext docstrings.  Plaintext docstrings are rendered as
+verbatim output, preserving all whitespace.
+"""
+__docformat__ = 'epytext en'
+
+from epydoc.markup import *
+from epydoc.util import plaintext_to_html, plaintext_to_latex
+
+def parse_docstring(docstring, errors, **options):
+    """
+    @return: A pair C{(M{d}, M{e})}, where C{M{d}} is a
+        C{ParsedDocstring} that encodes the contents of the given
+        plaintext docstring; and C{M{e}} is a list of errors that were
+        generated while parsing the docstring.
+    @rtype: C{L{ParsedPlaintextDocstring}, C{list} of L{ParseError}}
+    """
+    return ParsedPlaintextDocstring(docstring, **options)
+
+class ParsedPlaintextDocstring(ParsedDocstring):
+    def __init__(self, text, **options):
+        self._verbatim = options.get('verbatim', 1)
+        if text is None: raise ValueError, 'Bad text value (expected a str)'
+        self._text = text
+
+    def to_html(self, docstring_linker, **options):
+        if options.get('verbatim', self._verbatim) == 0:
+            return plaintext_to_html(self.to_plaintext(docstring_linker))
+        else:
+            return ParsedDocstring.to_html(self, docstring_linker, **options)
+
+    def to_latex(self, docstring_linker, **options):
+        if options.get('verbatim', self._verbatim) == 0:
+            return plaintext_to_latex(self.to_plaintext(docstring_linker))
+        else:
+            return ParsedDocstring.to_latex(self, docstring_linker, **options)
+
+    def to_plaintext(self, docstring_linker, **options):
+        if 'indent' in options:
+            indent = options['indent']
+            lines = self._text.split('\n')
+            return '\n'.join([' '*indent+l for l in lines])+'\n'
+        return self._text+'\n'
+    
+    _SUMMARY_RE = re.compile(r'(\s*[\w\W]*?(?:\.(\s|$)|[\n][\t ]*[\n]))')
+
+    def summary(self):
+        m = self._SUMMARY_RE.match(self._text)
+        if m:
+            other = self._text[m.end():]
+            return (ParsedPlaintextDocstring(m.group(1), verbatim=0),
+                    other != '' and not other.isspace())
+        else:
+            parts = self._text.strip('\n').split('\n', 1)
+            if len(parts) == 1:
+                summary = parts[0]
+                other = False
+            else:
+                summary = parts[0] + '...'
+                other = True
+                
+            return ParsedPlaintextDocstring(summary, verbatim=0), other
+        
+#     def concatenate(self, other):
+#         if not isinstance(other, ParsedPlaintextDocstring):
+#             raise ValueError, 'Could not concatenate docstrings'
+#         text = self._text+other._text
+#         options = self._options.copy()
+#         options.update(other._options)
+#         return ParsedPlaintextDocstring(text, options)
diff --git a/epydoc/markup/pyval_repr.py b/epydoc/markup/pyval_repr.py
new file mode 100644
index 0000000..c6d41e0
--- /dev/null
+++ b/epydoc/markup/pyval_repr.py
@@ -0,0 +1,532 @@
+# epydoc -- Marked-up Representations for Python Values
+#
+# Copyright (C) 2005 Edward Loper
+# Author: Edward Loper <edloper at loper.org>
+# URL: <http://epydoc.sf.net>
+#
+# $Id: apidoc.py 1448 2007-02-11 00:05:34Z dvarrazzo $
+
+"""
+Syntax highlighter for Python values.  Currently provides special
+colorization support for:
+
+  - lists, tuples, sets, frozensets, dicts
+  - numbers
+  - strings
+  - compiled regexps
+
+The highlighter also takes care of line-wrapping, and automatically
+stops generating repr output as soon as it has exceeded the specified
+number of lines (which should make it faster than pprint for large
+values).  It does I{not} bother to do automatic cycle detection,
+because maxlines is typically around 5, so it's really not worth it.
+
+The syntax-highlighted output is encoded using a
+L{ParsedEpytextDocstring}, which can then be used to generate output in
+a variety of formats.
+"""
+__docformat__ = 'epytext en'
+
+# Implementation note: we use exact tests for classes (list, etc)
+# rather than using isinstance, because subclasses might override
+# __repr__.
+
+import types, re
+import epydoc.apidoc
+from epydoc.util import decode_with_backslashreplace
+from epydoc.util import plaintext_to_html, plaintext_to_latex
+from epydoc.compat import *
+import sre_parse, sre_constants
+
+from epydoc.markup.epytext import Element, ParsedEpytextDocstring
+
+def is_re_pattern(pyval):
+    return type(pyval).__name__ == 'SRE_Pattern'
+
+class _ColorizerState:
+    """
+    An object uesd to keep track of the current state of the pyval
+    colorizer.  The L{mark()}/L{restore()} methods can be used to set
+    a backup point, and restore back to that backup point.  This is
+    used by several colorization methods that first try colorizing
+    their object on a single line (setting linebreakok=False); and
+    then fall back on a multi-line output if that fails.  The L{score}
+    variable is used to keep track of a 'score', reflecting how good
+    we think this repr is.  E.g., unhelpful values like '<Foo instance
+    at 0x12345>' get low scores.  If the score is too low, we'll use
+    the parse-derived repr instead.
+    """
+    def __init__(self):
+        self.result = []
+        self.charpos = 0
+        self.lineno = 1
+        self.linebreakok = True
+        
+        #: How good this represention is?
+        self.score = 0
+
+    def mark(self):
+        return (len(self.result), self.charpos,
+                self.lineno, self.linebreakok, self.score)
+
+    def restore(self, mark):
+        n, self.charpos, self.lineno, self.linebreakok, self.score = mark
+        del self.result[n:]
+
+class _Maxlines(Exception):
+    """A control-flow exception that is raised when PyvalColorizer
+    exeeds the maximum number of allowed lines."""
+    
+class _Linebreak(Exception):
+    """A control-flow exception that is raised when PyvalColorizer
+    generates a string containing a newline, but the state object's
+    linebreakok variable is False."""
+
+class ColorizedPyvalRepr(ParsedEpytextDocstring):
+    """
+    @ivar score: A score, evaluating how good this repr is.
+    @ivar is_complete: True if this colorized repr completely describes
+       the object.
+    """
+    def __init__(self, tree, score, is_complete):
+        ParsedEpytextDocstring.__init__(self, tree)
+        self.score = score
+        self.is_complete = is_complete
+
+def colorize_pyval(pyval, parse_repr=None, min_score=None,
+                   linelen=75, maxlines=5, linebreakok=True, sort=True):
+    return PyvalColorizer(linelen, maxlines, linebreakok, sort).colorize(
+        pyval, parse_repr, min_score)
+
+class PyvalColorizer:
+    """
+    Syntax highlighter for Python values.
+    """
+
+    def __init__(self, linelen=75, maxlines=5, linebreakok=True, sort=True):
+        self.linelen = linelen
+        self.maxlines = maxlines
+        self.linebreakok = linebreakok
+        self.sort = sort
+
+    #////////////////////////////////////////////////////////////
+    # Colorization Tags & other constants
+    #////////////////////////////////////////////////////////////
+
+    GROUP_TAG = 'variable-group'     # e.g., "[" and "]"
+    COMMA_TAG = 'variable-op'        # The "," that separates elements
+    COLON_TAG = 'variable-op'        # The ":" in dictionaries
+    CONST_TAG = None                 # None, True, False
+    NUMBER_TAG = None                # ints, floats, etc
+    QUOTE_TAG = 'variable-quote'     # Quotes around strings.
+    STRING_TAG = 'variable-string'   # Body of string literals
+
+    RE_CHAR_TAG = None
+    RE_GROUP_TAG = 're-group'
+    RE_REF_TAG = 're-ref'
+    RE_OP_TAG = 're-op'
+    RE_FLAGS_TAG = 're-flags'
+
+    ELLIPSIS = Element('code', u'...', style='variable-ellipsis')
+    LINEWRAP = Element('symbol', u'crarr')
+    UNKNOWN_REPR = Element('code', u'??', style='variable-unknown')
+    
+    GENERIC_OBJECT_RE = re.compile(r'^<.* at 0x[0-9a-f]+>$', re.IGNORECASE)
+
+    ESCAPE_UNICODE = False # should we escape non-ascii unicode chars?
+
+    #////////////////////////////////////////////////////////////
+    # Entry Point
+    #////////////////////////////////////////////////////////////
+
+    def colorize(self, pyval, parse_repr=None, min_score=None):
+        """
+        @return: A L{ColorizedPyvalRepr} describing the given pyval.
+        """
+        UNKNOWN = epydoc.apidoc.UNKNOWN
+        # Create an object to keep track of the colorization.
+        state = _ColorizerState()
+        state.linebreakok = self.linebreakok
+        # Colorize the value.  If we reach maxlines, then add on an
+        # ellipsis marker and call it a day.
+        try:
+            if pyval is not UNKNOWN:
+                self._colorize(pyval, state)
+            elif parse_repr not in (None, UNKNOWN):
+                self._output(parse_repr, None, state)
+            else:
+                state.result.append(PyvalColorizer.UNKNOWN_REPR)
+            is_complete = True
+        except (_Maxlines, _Linebreak):
+            if self.linebreakok:
+                state.result.append('\n')
+                state.result.append(self.ELLIPSIS)
+            else:
+                if state.result[-1] is self.LINEWRAP:
+                    state.result.pop()
+                self._trim_result(state.result, 3)
+                state.result.append(self.ELLIPSIS)
+            is_complete = False
+        # If we didn't score high enough, then try again.
+        if (pyval is not UNKNOWN and parse_repr not in (None, UNKNOWN)
+            and min_score is not None and state.score < min_score):
+            return self.colorize(UNKNOWN, parse_repr)
+        # Put it all together.
+        tree = Element('epytext', *state.result)
+        return ColorizedPyvalRepr(tree, state.score, is_complete)
+
+    def _colorize(self, pyval, state):
+        pyval_type = type(pyval)
+        state.score += 1
+        
+        if pyval is None or pyval is True or pyval is False:
+            self._output(unicode(pyval), self.CONST_TAG, state)
+        elif pyval_type in (int, float, long, types.ComplexType):
+            self._output(unicode(pyval), self.NUMBER_TAG, state)
+        elif pyval_type is str:
+            self._colorize_str(pyval, state, '', 'string-escape')
+        elif pyval_type is unicode:
+            if self.ESCAPE_UNICODE:
+                self._colorize_str(pyval, state, 'u', 'unicode-escape')
+            else:
+                self._colorize_str(pyval, state, 'u', None)
+        elif pyval_type is list:
+            self._multiline(self._colorize_iter, pyval, state, '[', ']')
+        elif pyval_type is tuple:
+            self._multiline(self._colorize_iter, pyval, state, '(', ')')
+        elif pyval_type is set:
+            self._multiline(self._colorize_iter, self._sort(pyval),
+                            state, 'set([', '])')
+        elif pyval_type is frozenset:
+            self._multiline(self._colorize_iter, self._sort(pyval),
+                            state, 'frozenset([', '])')
+        elif pyval_type is dict:
+            self._multiline(self._colorize_dict, self._sort(pyval.items()),
+                            state, '{', '}')
+        elif is_re_pattern(pyval):
+            self._colorize_re(pyval, state)
+        else:
+            try:
+                pyval_repr = repr(pyval)
+                if not isinstance(pyval_repr, (str, unicode)):
+                    pyval_repr = unicode(pyval_repr)
+                pyval_repr_ok = True
+            except KeyboardInterrupt:
+                raise
+            except:
+                pyval_repr_ok = False
+                state.score -= 100
+
+            if pyval_repr_ok:
+                if self.GENERIC_OBJECT_RE.match(pyval_repr):
+                    state.score -= 5
+                self._output(pyval_repr, None, state)
+            else:
+                state.result.append(self.UNKNOWN_REPR)
+
+    def _sort(self, items):
+        if not self.sort: return items
+        try: return sorted(items)
+        except KeyboardInterrupt: raise
+        except: return items
+        
+    def _trim_result(self, result, num_chars):
+        while num_chars > 0:
+            if not result: return 
+            if isinstance(result[-1], Element):
+                assert len(result[-1].children) == 1
+                trim = min(num_chars, len(result[-1].children[0]))
+                result[-1].children[0] = result[-1].children[0][:-trim]
+                if not result[-1].children[0]: result.pop()
+                num_chars -= trim
+            else:
+                trim = min(num_chars, len(result[-1]))
+                result[-1] = result[-1][:-trim]
+                if not result[-1]: result.pop()
+                num_chars -= trim
+
+    #////////////////////////////////////////////////////////////
+    # Object Colorization Functions
+    #////////////////////////////////////////////////////////////
+
+    def _multiline(self, func, pyval, state, *args):
+        """
+        Helper for container-type colorizers.  First, try calling
+        C{func(pyval, state, *args)} with linebreakok set to false;
+        and if that fails, then try again with it set to true.
+        """
+        linebreakok = state.linebreakok
+        mark = state.mark()
+        
+        try:
+            state.linebreakok = False
+            func(pyval, state, *args)
+            state.linebreakok = linebreakok
+
+        except _Linebreak:
+            if not linebreakok:
+                raise
+            state.restore(mark)
+            func(pyval, state, *args)
+            
+    def _colorize_iter(self, pyval, state, prefix, suffix):
+        self._output(prefix, self.GROUP_TAG, state)
+        indent = state.charpos
+        for i, elt in enumerate(pyval):
+            if i>=1:
+                if state.linebreakok:
+                    self._output(',', self.COMMA_TAG, state)
+                    self._output('\n'+' '*indent, None, state)
+                else:
+                    self._output(', ', self.COMMA_TAG, state)
+            self._colorize(elt, state)
+        self._output(suffix, self.GROUP_TAG, state)
+
+    def _colorize_dict(self, items, state, prefix, suffix):
+        self._output(prefix, self.GROUP_TAG, state)
+        indent = state.charpos
+        for i, (key, val) in enumerate(items):
+            if i>=1:
+                if state.linebreakok:
+                    self._output(',', self.COMMA_TAG, state)
+                    self._output('\n'+' '*indent, None, state)
+                else:
+                    self._output(', ', self.COMMA_TAG, state)
+            self._colorize(key, state)
+            self._output(': ', self.COLON_TAG, state)
+            self._colorize(val, state)
+        self._output(suffix, self.GROUP_TAG, state)
+
+    def _colorize_str(self, pyval, state, prefix, encoding):
+        # Decide which quote to use.
+        if '\n' in pyval and state.linebreakok: quote = "'''"
+        else: quote = "'"
+        # Divide the string into lines.
+        if state.linebreakok:
+            lines = pyval.split('\n')
+        else:
+            lines = [pyval]
+        # Open quote.
+        self._output(prefix+quote, self.QUOTE_TAG, state)
+        # Body
+        for i, line in enumerate(lines):
+            if i>0: self._output('\n', None, state)
+            if encoding: line = line.encode(encoding)
+            self._output(line, self.STRING_TAG, state)
+        # Close quote.
+        self._output(quote, self.QUOTE_TAG, state)
+
+    def _colorize_re(self, pyval, state):
+        # Extract the flag & pattern from the regexp.
+        pat, flags = pyval.pattern, pyval.flags
+        # If the pattern is a string, decode it to unicode.
+        if isinstance(pat, str):
+            pat = decode_with_backslashreplace(pat)
+        # Parse the regexp pattern.
+        tree = sre_parse.parse(pat, flags)
+        groups = dict([(num,name) for (name,num) in
+                       tree.pattern.groupdict.items()])
+        # Colorize it!
+        self._output("re.compile(r'", None, state)
+        self._colorize_re_flags(tree.pattern.flags, state)
+        self._colorize_re_tree(tree, state, True, groups)
+        self._output("')", None, state)
+
+    def _colorize_re_flags(self, flags, state):
+        if flags:
+            flags = [c for (c,n) in sorted(sre_parse.FLAGS.items())
+                     if (n&flags)]
+            flags = '(?%s)' % ''.join(flags)
+            self._output(flags, self.RE_FLAGS_TAG, state)
+
+    def _colorize_re_tree(self, tree, state, noparen, groups):
+        assert noparen in (True, False)
+        if len(tree) > 1 and not noparen:
+            self._output('(', self.RE_GROUP_TAG, state)
+        for elt in tree:
+            op = elt[0]
+            args = elt[1]
+    
+            if op == sre_constants.LITERAL:
+                c = unichr(args)
+                # Add any appropriate escaping.
+                if c in '.^$\\*+?{}[]|()\'': c = '\\'+c
+                elif c == '\t': c = '\\t'
+                elif c == '\r': c = '\\r'
+                elif c == '\n': c = '\\n'
+                elif c == '\f': c = '\\f'
+                elif c == '\v': c = '\\v'
+                elif ord(c) > 0xffff: c = r'\U%08x' % ord(c)
+                elif ord(c) > 0xff: c = r'\u%04x' % ord(c)
+                elif ord(c)<32 or ord(c)>=127: c = r'\x%02x' % ord(c)
+                self._output(c, self.RE_CHAR_TAG, state)
+            
+            elif op == sre_constants.ANY:
+                self._output('.', self.RE_CHAR_TAG, state)
+                
+            elif op == sre_constants.BRANCH:
+                if args[0] is not None:
+                    raise ValueError('Branch expected None arg but got %s'
+                                     % args[0])
+                for i, item in enumerate(args[1]):
+                    if i > 0:
+                        self._output('|', self.RE_OP_TAG, state)
+                    self._colorize_re_tree(item, state, True, groups)
+                
+            elif op == sre_constants.IN:
+                if (len(args) == 1 and args[0][0] == sre_constants.CATEGORY):
+                    self._colorize_re_tree(args, state, False, groups)
+                else:
+                    self._output('[', self.RE_GROUP_TAG, state)
+                    self._colorize_re_tree(args, state, True, groups)
+                    self._output(']', self.RE_GROUP_TAG, state)
+                    
+            elif op == sre_constants.CATEGORY:
+                if args == sre_constants.CATEGORY_DIGIT: val = r'\d'
+                elif args == sre_constants.CATEGORY_NOT_DIGIT: val = r'\D'
+                elif args == sre_constants.CATEGORY_SPACE: val = r'\s'
+                elif args == sre_constants.CATEGORY_NOT_SPACE: val = r'\S'
+                elif args == sre_constants.CATEGORY_WORD: val = r'\w'
+                elif args == sre_constants.CATEGORY_NOT_WORD: val = r'\W'
+                else: raise ValueError('Unknown category %s' % args)
+                self._output(val, self.RE_CHAR_TAG, state)
+                
+            elif op == sre_constants.AT:
+                if args == sre_constants.AT_BEGINNING_STRING: val = r'\A'
+                elif args == sre_constants.AT_BEGINNING: val = r'^'
+                elif args == sre_constants.AT_END: val = r'$'
+                elif args == sre_constants.AT_BOUNDARY: val = r'\b'
+                elif args == sre_constants.AT_NON_BOUNDARY: val = r'\B'
+                elif args == sre_constants.AT_END_STRING: val = r'\Z'
+                else: raise ValueError('Unknown position %s' % args)
+                self._output(val, self.RE_CHAR_TAG, state)
+                
+            elif op in (sre_constants.MAX_REPEAT, sre_constants.MIN_REPEAT):
+                minrpt = args[0]
+                maxrpt = args[1]
+                if maxrpt == sre_constants.MAXREPEAT:
+                    if minrpt == 0:   val = '*'
+                    elif minrpt == 1: val = '+'
+                    else: val = '{%d,}' % (minrpt)
+                elif minrpt == 0:
+                    if maxrpt == 1: val = '?'
+                    else: val = '{,%d}' % (maxrpt)
+                elif minrpt == maxrpt:
+                    val = '{%d}' % (maxrpt)
+                else:
+                    val = '{%d,%d}' % (minrpt, maxrpt)
+                if op == sre_constants.MIN_REPEAT:
+                    val += '?'
+                    
+                self._colorize_re_tree(args[2], state, False, groups)
+                self._output(val, self.RE_OP_TAG, state)
+                
+            elif op == sre_constants.SUBPATTERN:
+                if args[0] is None:
+                    self._output('(?:', self.RE_GROUP_TAG, state)
+                elif args[0] in groups:
+                    self._output('(?P<', self.RE_GROUP_TAG, state)
+                    self._output(groups[args[0]], self.RE_REF_TAG, state)
+                    self._output('>', self.RE_GROUP_TAG, state)
+                elif isinstance(args[0], (int, long)):
+                    # This is cheating:
+                    self._output('(', self.RE_GROUP_TAG, state)
+                else:
+                    self._output('(?P<', self.RE_GROUP_TAG, state)
+                    self._output(args[0], self.RE_REF_TAG, state)
+                    self._output('>', self.RE_GROUP_TAG, state)
+                self._colorize_re_tree(args[1], state, True, groups)
+                self._output(')', self.RE_GROUP_TAG, state)
+    
+            elif op == sre_constants.GROUPREF:
+                self._output('\\%d' % args, self.RE_REF_TAG, state)
+    
+            elif op == sre_constants.RANGE:
+                self._colorize_re_tree( ((sre_constants.LITERAL, args[0]),),
+                                        state, False, groups )
+                self._output('-', self.RE_OP_TAG, state)
+                self._colorize_re_tree( ((sre_constants.LITERAL, args[1]),),
+                                        state, False, groups )
+                
+            elif op == sre_constants.NEGATE:
+                self._output('^', self.RE_OP_TAG, state)
+    
+            elif op == sre_constants.ASSERT:
+                if args[0] > 0:
+                    self._output('(?=', self.RE_GROUP_TAG, state)
+                else:
+                    self._output('(?<=', self.RE_GROUP_TAG, state)
+                self._colorize_re_tree(args[1], state, True, groups)
+                self._output(')', self.RE_GROUP_TAG, state)
+                               
+            elif op == sre_constants.ASSERT_NOT:
+                if args[0] > 0:
+                    self._output('(?!', self.RE_GROUP_TAG, state)
+                else:
+                    self._output('(?<!', self.RE_GROUP_TAG, state)
+                self._colorize_re_tree(args[1], state, True, groups)
+                self._output(')', self.RE_GROUP_TAG, state)
+    
+            elif op == sre_constants.NOT_LITERAL:
+                self._output('[^', self.RE_GROUP_TAG, state)
+                self._colorize_re_tree( ((sre_constants.LITERAL, args),),
+                                        state, False, groups )
+                self._output(']', self.RE_GROUP_TAG, state)
+            else:
+                log.error("Error colorizing regexp: unknown elt %r" % elt)
+        if len(tree) > 1 and not noparen: 
+            self._output(')', self.RE_GROUP_TAG, state)
+                           
+    #////////////////////////////////////////////////////////////
+    # Output function
+    #////////////////////////////////////////////////////////////
+
+    def _output(self, s, tag, state):
+        """
+        Add the string `s` to the result list, tagging its contents
+        with tag `tag`.  Any lines that go beyond `self.linelen` will
+        be line-wrapped.  If the total number of lines exceeds
+        `self.maxlines`, then raise a `_Maxlines` exception.
+        """
+        # Make sure the string is unicode.
+        if isinstance(s, str):
+            s = decode_with_backslashreplace(s)
+        
+        # Split the string into segments.  The first segment is the
+        # content to add to the current line, and the remaining
+        # segments are new lines.
+        segments = s.split('\n')
+
+        for i, segment in enumerate(segments):
+            # If this isn't the first segment, then add a newline to
+            # split it from the previous segment.
+            if i > 0:
+                if (state.lineno+1) > self.maxlines:
+                    raise _Maxlines()
+                if not state.linebreakok:
+                    raise _Linebreak()
+                state.result.append(u'\n')
+                state.lineno += 1
+                state.charpos = 0
+
+            # If the segment fits on the current line, then just call
+            # markup to tag it, and store the result.
+            if state.charpos + len(segment) <= self.linelen:
+                state.charpos += len(segment)
+                if tag:
+                    segment = Element('code', segment, style=tag)
+                state.result.append(segment)
+
+            # If the segment doesn't fit on the current line, then
+            # line-wrap it, and insert the remainder of the line into
+            # the segments list that we're iterating over.  (We'll go
+            # the the beginning of the next line at the start of the
+            # next iteration through the loop.)
+            else:
+                split = self.linelen-state.charpos
+                segments.insert(i+1, segment[split:])
+                segment = segment[:split]
+                if tag:
+                    segment = Element('code', segment, style=tag)
+                state.result += [segment, self.LINEWRAP]
+
diff --git a/epydoc/markup/restructuredtext.py b/epydoc/markup/restructuredtext.py
new file mode 100644
index 0000000..b11b154
--- /dev/null
+++ b/epydoc/markup/restructuredtext.py
@@ -0,0 +1,906 @@
+#
+# rst.py: ReStructuredText docstring parsing
+# Edward Loper
+#
+# Created [06/28/03 02:52 AM]
+# $Id: restructuredtext.py 1661 2007-11-07 12:59:34Z dvarrazzo $
+#
+
+"""
+Epydoc parser for ReStructuredText strings.  ReStructuredText is the
+standard markup language used by the Docutils project.
+L{parse_docstring()} provides the primary interface to this module; it
+returns a L{ParsedRstDocstring}, which supports all of the methods
+defined by L{ParsedDocstring}.
+
+L{ParsedRstDocstring} is basically just a L{ParsedDocstring} wrapper
+for the C{docutils.nodes.document} class.
+
+Creating C{ParsedRstDocstring}s
+===============================
+
+C{ParsedRstDocstring}s are created by the C{parse_document} function,
+using the C{docutils.core.publish_string()} method, with the following
+helpers:
+
+  - An L{_EpydocReader} is used to capture all error messages as it
+    parses the docstring.
+  - A L{_DocumentPseudoWriter} is used to extract the document itself,
+    without actually writing any output.  The document is saved for
+    further processing.  The settings for the writer are copied from
+    C{docutils.writers.html4css1.Writer}, since those settings will
+    be used when we actually write the docstring to html.
+
+Using C{ParsedRstDocstring}s
+============================
+
+C{ParsedRstDocstring}s support all of the methods defined by
+C{ParsedDocstring}; but only the following four methods have
+non-default behavior:
+
+  - L{to_html()<ParsedRstDocstring.to_html>} uses an
+    L{_EpydocHTMLTranslator} to translate the C{ParsedRstDocstring}'s
+    document into an HTML segment.
+  - L{split_fields()<ParsedRstDocstring.split_fields>} uses a
+    L{_SplitFieldsTranslator} to divide the C{ParsedRstDocstring}'s
+    document into its main body and its fields.  Special handling
+    is done to account for consolidated fields.
+  - L{summary()<ParsedRstDocstring.summary>} uses a
+    L{_SummaryExtractor} to extract the first sentence from
+    the C{ParsedRstDocstring}'s document.
+  - L{to_plaintext()<ParsedRstDocstring.to_plaintext>} uses
+    C{document.astext()} to convert the C{ParsedRstDocstring}'s
+    document to plaintext.
+
+ at todo: Add ParsedRstDocstring.to_latex()
+ at var CONSOLIDATED_FIELDS: A dictionary encoding the set of
+'consolidated fields' that can be used.  Each consolidated field is
+marked by a single tag, and contains a single bulleted list, where
+each list item starts with an identifier, marked as interpreted text
+(C{`...`}).  This module automatically splits these consolidated
+fields into individual fields.  The keys of C{CONSOLIDATED_FIELDS} are
+the names of possible consolidated fields; and the values are the
+names of the field tags that should be used for individual entries in
+the list.
+"""
+__docformat__ = 'epytext en'
+
+# Imports
+import re, os, os.path
+from xml.dom.minidom import *
+
+from docutils.core import publish_string
+from docutils.writers import Writer
+from docutils.writers.html4css1 import HTMLTranslator, Writer as HTMLWriter
+from docutils.writers.latex2e import LaTeXTranslator, Writer as LaTeXWriter
+from docutils.readers.standalone import Reader as StandaloneReader
+from docutils.utils import new_document
+from docutils.nodes import NodeVisitor, Text, SkipChildren
+from docutils.nodes import SkipNode, TreeCopyVisitor
+from docutils.frontend import OptionParser
+from docutils.parsers.rst import directives, roles
+import docutils.nodes
+import docutils.transforms.frontmatter
+import docutils.transforms
+import docutils.utils
+
+from epydoc.compat import * # Backwards compatibility
+from epydoc.markup import *
+from epydoc.apidoc import ModuleDoc, ClassDoc
+from epydoc.docwriter.dotgraph import *
+from epydoc.docwriter.xlink import ApiLinkReader
+from epydoc.markup.doctest import doctest_to_html, doctest_to_latex, \
+                                  HTMLDoctestColorizer
+
+#: A dictionary whose keys are the "consolidated fields" that are
+#: recognized by epydoc; and whose values are the corresponding epydoc
+#: field names that should be used for the individual fields.
+CONSOLIDATED_FIELDS = {
+    'parameters': 'param',
+    'arguments': 'arg',
+    'exceptions': 'except',
+    'variables': 'var',
+    'ivariables': 'ivar',
+    'cvariables': 'cvar',
+    'groups': 'group',
+    'types': 'type',
+    'keywords': 'keyword',
+    }
+
+#: A list of consolidated fields whose bodies may be specified using a
+#: definition list, rather than a bulleted list.  For these fields, the
+#: 'classifier' for each term in the definition list is translated into
+#: a @type field.
+CONSOLIDATED_DEFLIST_FIELDS = ['param', 'arg', 'var', 'ivar', 'cvar', 'keyword']
+
+def parse_docstring(docstring, errors, **options):
+    """
+    Parse the given docstring, which is formatted using
+    ReStructuredText; and return a L{ParsedDocstring} representation
+    of its contents.
+    @param docstring: The docstring to parse
+    @type docstring: C{string}
+    @param errors: A list where any errors generated during parsing
+        will be stored.
+    @type errors: C{list} of L{ParseError}
+    @param options: Extra options.  Unknown options are ignored.
+        Currently, no extra options are defined.
+    @rtype: L{ParsedDocstring}
+    """
+    writer = _DocumentPseudoWriter()
+    reader = _EpydocReader(errors) # Outputs errors to the list.
+    publish_string(docstring, writer=writer, reader=reader,
+                   settings_overrides={'report_level':10000,
+                                       'halt_level':10000,
+                                       'warning_stream':None})
+    return ParsedRstDocstring(writer.document)
+
+class OptimizedReporter(docutils.utils.Reporter):
+    """A reporter that ignores all debug messages.  This is used to
+    shave a couple seconds off of epydoc's run time, since docutils
+    isn't very fast about processing its own debug messages."""
+    def debug(self, *args, **kwargs): pass
+
+class ParsedRstDocstring(ParsedDocstring):
+    """
+    An encoded version of a ReStructuredText docstring.  The contents
+    of the docstring are encoded in the L{_document} instance
+    variable.
+
+    @ivar _document: A ReStructuredText document, encoding the
+        docstring.
+    @type _document: C{docutils.nodes.document}
+    """
+    def __init__(self, document):
+        """
+        @type document: C{docutils.nodes.document}
+        """
+        self._document = document
+        
+        # The default document reporter and transformer are not
+        # pickle-able; so replace them with stubs that are.
+        document.reporter = OptimizedReporter(
+            document.reporter.source, 'SEVERE', 'SEVERE', '')
+        document.transformer = docutils.transforms.Transformer(document)
+
+    def split_fields(self, errors=None):
+        # Inherit docs
+        if errors is None: errors = []
+        visitor = _SplitFieldsTranslator(self._document, errors)
+        self._document.walk(visitor)
+        if len(self._document.children) > 0:
+            return self, visitor.fields
+        else:
+            return None, visitor.fields
+
+    def summary(self):
+        # Inherit docs
+        visitor = _SummaryExtractor(self._document)
+        try: self._document.walk(visitor)
+        except docutils.nodes.NodeFound: pass
+        return visitor.summary, bool(visitor.other_docs)
+
+#     def concatenate(self, other):
+#         result = self._document.copy()
+#         for child in (self._document.get_children() +
+#                       other._document.get_children()):
+#             visitor = TreeCopyVisitor(self._document)
+#             child.walkabout(visitor)
+#             result.append(visitor.get_tree_copy())
+#         return ParsedRstDocstring(result)
+        
+    def to_html(self, docstring_linker, directory=None,
+                docindex=None, context=None, **options):
+        # Inherit docs
+        visitor = _EpydocHTMLTranslator(self._document, docstring_linker,
+                                        directory, docindex, context)
+        self._document.walkabout(visitor)
+        return ''.join(visitor.body)
+
+    def to_latex(self, docstring_linker, **options):
+        # Inherit docs
+        visitor = _EpydocLaTeXTranslator(self._document, docstring_linker)
+        self._document.walkabout(visitor)
+        return ''.join(visitor.body)
+
+    def to_plaintext(self, docstring_linker, **options):
+        # This is should be replaced by something better:
+        return self._document.astext() 
+
+    def __repr__(self): return '<ParsedRstDocstring: ...>'
+
+    def index_terms(self):
+        visitor = _TermsExtractor(self._document)
+        self._document.walkabout(visitor)
+        return visitor.terms
+
+class _EpydocReader(ApiLinkReader):
+    """
+    A reader that captures all errors that are generated by parsing,
+    and appends them to a list.
+    """
+    # Remove the DocInfo transform, to ensure that :author: fields are
+    # correctly handled.  This needs to be handled differently
+    # depending on the version of docutils that's being used, because
+    # the default_transforms attribute was deprecated & replaced by
+    # get_transforms().
+    version = [int(v) for v in docutils.__version__.split('.')]
+    version += [ 0 ] * (3 - len(version))
+    if version < [0,4,0]:
+        default_transforms = list(ApiLinkReader.default_transforms)
+        try: default_transforms.remove(docutils.transforms.frontmatter.DocInfo)
+        except ValueError: pass
+    else:
+        def get_transforms(self):
+            return [t for t in ApiLinkReader.get_transforms(self)
+                    if t != docutils.transforms.frontmatter.DocInfo]
+    del version
+
+    def __init__(self, errors):
+        self._errors = errors
+        ApiLinkReader.__init__(self)
+        
+    def new_document(self):
+        document = new_document(self.source.source_path, self.settings)
+        # Capture all warning messages.
+        document.reporter.attach_observer(self.report)
+        # These are used so we know how to encode warning messages:
+        self._encoding = document.reporter.encoding
+        self._error_handler = document.reporter.error_handler
+        # Return the new document.
+        return document
+
+    def report(self, error):
+        try: is_fatal = int(error['level']) > 2
+        except: is_fatal = 1
+        try: linenum = int(error['line'])
+        except: linenum = None
+
+        msg = ''.join([c.astext().encode(self._encoding, self._error_handler)
+                       for c in error])
+
+        self._errors.append(ParseError(msg, linenum, is_fatal))
+        
+class _DocumentPseudoWriter(Writer):
+    """
+    A pseudo-writer for the docutils framework, that can be used to
+    access the document itself.  The output of C{_DocumentPseudoWriter}
+    is just an empty string; but after it has been used, the most
+    recently processed document is available as the instance variable
+    C{document}
+
+    @type document: C{docutils.nodes.document}
+    @ivar document: The most recently processed document.
+    """
+    def __init__(self):
+        self.document = None
+        Writer.__init__(self)
+        
+    def translate(self):
+        self.output = ''
+        
+class _SummaryExtractor(NodeVisitor):
+    """
+    A docutils node visitor that extracts the first sentence from
+    the first paragraph in a document.
+    """
+    def __init__(self, document):
+        NodeVisitor.__init__(self, document)
+        self.summary = None
+        self.other_docs = None
+        
+    def visit_document(self, node):
+        self.summary = None
+        
+    _SUMMARY_RE = re.compile(r'(\s*[\w\W]*?\.)(\s|$)')
+    def visit_paragraph(self, node):
+        if self.summary is not None:
+            # found a paragraph after the first one
+            self.other_docs = True
+            raise docutils.nodes.NodeFound('Found summary')
+
+        summary_pieces = []
+
+        # Extract the first sentence.
+        for child in node:
+            if isinstance(child, docutils.nodes.Text):
+                m = self._SUMMARY_RE.match(child.data)
+                if m:
+                    summary_pieces.append(docutils.nodes.Text(m.group(1)))
+                    other = child.data[m.end():]
+                    if other and not other.isspace():
+                        self.other_docs = True
+                    break
+            summary_pieces.append(child)
+
+        summary_doc = self.document.copy() # shallow copy
+        summary_para = node.copy() # shallow copy
+        summary_doc[:] = [summary_para]
+        summary_para[:] = summary_pieces
+        self.summary = ParsedRstDocstring(summary_doc)
+
+    def visit_field(self, node):
+        raise SkipNode
+
+    def unknown_visit(self, node):
+        'Ignore all unknown nodes'
+
+class _TermsExtractor(NodeVisitor):
+    """
+    A docutils node visitor that extracts the terms from documentation.
+
+    Terms are created using the C{:term:} interpreted text role.
+    """
+    def __init__(self, document):
+        NodeVisitor.__init__(self, document)
+        
+        self.terms = None
+        """
+        The terms currently found.
+        @type: C{list}
+        """
+        
+    def visit_document(self, node):
+        self.terms = []
+        self._in_term = False
+
+    def visit_emphasis(self, node):
+        if 'term' in node.get('classes'):
+            self._in_term = True
+
+    def depart_emphasis(self, node):
+        if 'term' in node.get('classes'):
+            self._in_term = False
+
+    def visit_Text(self, node):
+        if self._in_term:
+            doc = self.document.copy()
+            doc[:] = [node.copy()]
+            self.terms.append(ParsedRstDocstring(doc))
+
+    def unknown_visit(self, node):
+        'Ignore all unknown nodes'
+
+    def unknown_departure(self, node):
+        'Ignore all unknown nodes'
+
+class _SplitFieldsTranslator(NodeVisitor):
+    """
+    A docutils translator that removes all fields from a document, and
+    collects them into the instance variable C{fields}
+
+    @ivar fields: The fields of the most recently walked document.
+    @type fields: C{list} of L{Field<markup.Field>}
+    """
+    
+    ALLOW_UNMARKED_ARG_IN_CONSOLIDATED_FIELD = True
+    """If true, then consolidated fields are not required to mark
+    arguments with C{`backticks`}.  (This is currently only
+    implemented for consolidated fields expressed as definition lists;
+    consolidated fields expressed as unordered lists still require
+    backticks for now."""
+    
+    def __init__(self, document, errors):
+        NodeVisitor.__init__(self, document)
+        self._errors = errors
+        self.fields = []
+        self._newfields = {}
+
+    def visit_document(self, node):
+        self.fields = []
+
+    def visit_field(self, node):
+        # Remove the field from the tree.
+        node.parent.remove(node)
+
+        # Extract the field name & optional argument
+        tag = node[0].astext().split(None, 1)
+        tagname = tag[0]
+        if len(tag)>1: arg = tag[1]
+        else: arg = None
+
+        # Handle special fields:
+        fbody = node[1]
+        if arg is None:
+            for (list_tag, entry_tag) in CONSOLIDATED_FIELDS.items():
+                if tagname.lower() == list_tag:
+                    try:
+                        self.handle_consolidated_field(fbody, entry_tag)
+                        return
+                    except ValueError, e:
+                        estr = 'Unable to split consolidated field '
+                        estr += '"%s" - %s' % (tagname, e)
+                        self._errors.append(ParseError(estr, node.line,
+                                                       is_fatal=0))
+                        
+                        # Use a @newfield to let it be displayed as-is.
+                        if tagname.lower() not in self._newfields:
+                            newfield = Field('newfield', tagname.lower(),
+                                             parse(tagname, 'plaintext'))
+                            self.fields.append(newfield)
+                            self._newfields[tagname.lower()] = 1
+                        
+        self._add_field(tagname, arg, fbody)
+
+    def _add_field(self, tagname, arg, fbody):
+        field_doc = self.document.copy()
+        for child in fbody: field_doc.append(child)
+        field_pdoc = ParsedRstDocstring(field_doc)
+        self.fields.append(Field(tagname, arg, field_pdoc))
+            
+    def visit_field_list(self, node):
+        # Remove the field list from the tree.  The visitor will still walk
+        # over the node's children.
+        node.parent.remove(node)
+
+    def handle_consolidated_field(self, body, tagname):
+        """
+        Attempt to handle a consolidated section.
+        """
+        if len(body) != 1:
+            raise ValueError('does not contain a single list.')
+        elif body[0].tagname == 'bullet_list':
+            self.handle_consolidated_bullet_list(body[0], tagname)
+        elif (body[0].tagname == 'definition_list' and
+              tagname in CONSOLIDATED_DEFLIST_FIELDS):
+            self.handle_consolidated_definition_list(body[0], tagname)
+        elif tagname in CONSOLIDATED_DEFLIST_FIELDS:
+            raise ValueError('does not contain a bulleted list or '
+                             'definition list.')
+        else:
+            raise ValueError('does not contain a bulleted list.')
+
+    def handle_consolidated_bullet_list(self, items, tagname):
+        # Check the contents of the list.  In particular, each list
+        # item should have the form:
+        #   - `arg`: description...
+        n = 0
+        _BAD_ITEM = ("list item %d is not well formed.  Each item must "
+                     "consist of a single marked identifier (e.g., `x`), "
+                     "optionally followed by a colon or dash and a "
+                     "description.")
+        for item in items:
+            n += 1
+            if item.tagname != 'list_item' or len(item) == 0: 
+                raise ValueError('bad bulleted list (bad child %d).' % n)
+            if item[0].tagname != 'paragraph':
+                if item[0].tagname == 'definition_list':
+                    raise ValueError(('list item %d contains a definition '+
+                                      'list (it\'s probably indented '+
+                                      'wrong).') % n)
+                else:
+                    raise ValueError(_BAD_ITEM % n)
+            if len(item[0]) == 0: 
+                raise ValueError(_BAD_ITEM % n)
+            if item[0][0].tagname != 'title_reference':
+                raise ValueError(_BAD_ITEM % n)
+
+        # Everything looks good; convert to multiple fields.
+        for item in items:
+            # Extract the arg
+            arg = item[0][0].astext()
+
+            # Extract the field body, and remove the arg
+            fbody = item[:]
+            fbody[0] = fbody[0].copy()
+            fbody[0][:] = item[0][1:]
+
+            # Remove the separating ":", if present
+            if (len(fbody[0]) > 0 and
+                isinstance(fbody[0][0], docutils.nodes.Text)):
+                child = fbody[0][0]
+                if child.data[:1] in ':-':
+                    child.data = child.data[1:].lstrip()
+                elif child.data[:2] in (' -', ' :'):
+                    child.data = child.data[2:].lstrip()
+
+            # Wrap the field body, and add a new field
+            self._add_field(tagname, arg, fbody)
+        
+    def handle_consolidated_definition_list(self, items, tagname):
+        # Check the list contents.
+        n = 0
+        _BAD_ITEM = ("item %d is not well formed.  Each item's term must "
+                     "consist of a single marked identifier (e.g., `x`), "
+                     "optionally followed by a space, colon, space, and "
+                     "a type description.")
+        for item in items:
+            n += 1
+            if (item.tagname != 'definition_list_item' or len(item) < 2 or
+                item[0].tagname != 'term' or
+                item[-1].tagname != 'definition'):
+                raise ValueError('bad definition list (bad child %d).' % n)
+            if len(item) > 3:
+                raise ValueError(_BAD_ITEM % n)
+            if not ((item[0][0].tagname == 'title_reference') or
+                    (self.ALLOW_UNMARKED_ARG_IN_CONSOLIDATED_FIELD and
+                     isinstance(item[0][0], docutils.nodes.Text))):
+                raise ValueError(_BAD_ITEM % n)
+            for child in item[0][1:]:
+                if child.astext() != '':
+                    raise ValueError(_BAD_ITEM % n)
+
+        # Extract it.
+        for item in items:
+            # The basic field.
+            arg = item[0][0].astext()
+            fbody = item[-1]
+            self._add_field(tagname, arg, fbody)
+            # If there's a classifier, treat it as a type.
+            if len(item) == 3:
+                type_descr = item[1]
+                self._add_field('type', arg, type_descr)
+
+    def unknown_visit(self, node):
+        'Ignore all unknown nodes'
+
+def latex_head_prefix():
+    document = new_document('<fake>')
+    translator = _EpydocLaTeXTranslator(document, None)
+    return translator.head_prefix
+    
+class _EpydocLaTeXTranslator(LaTeXTranslator):
+    settings = None
+    def __init__(self, document, docstring_linker):
+        # Set the document's settings.
+        if self.settings is None:
+            settings = OptionParser([LaTeXWriter()]).get_default_values()
+            settings.output_encoding = 'utf-8'
+            self.__class__.settings = settings
+        document.settings = self.settings
+
+        LaTeXTranslator.__init__(self, document)
+        self._linker = docstring_linker
+
+        # Start at section level 3.  (Unfortunately, we now have to
+        # set a private variable to make this work; perhaps the standard
+        # latex translator should grow an official way to spell this?)
+        self.section_level = 3
+        self._section_number = [0]*self.section_level
+
+    # Handle interpreted text (crossreferences)
+    def visit_title_reference(self, node):
+        target = self.encode(node.astext())
+        xref = self._linker.translate_identifier_xref(target, target)
+        self.body.append(xref)
+        raise SkipNode()
+
+    def visit_document(self, node): pass
+    def depart_document(self, node): pass
+
+    # For now, just ignore dotgraphs. [XXX]
+    def visit_dotgraph(self, node):
+        log.warning("Ignoring dotgraph in latex output (dotgraph "
+                    "rendering for latex not implemented yet).")
+        raise SkipNode()
+    
+    def visit_doctest_block(self, node):
+        self.body.append(doctest_to_latex(node[0].astext()))
+        raise SkipNode()
+
+class _EpydocHTMLTranslator(HTMLTranslator):
+    settings = None
+    def __init__(self, document, docstring_linker, directory,
+                 docindex, context):
+        self._linker = docstring_linker
+        self._directory = directory
+        self._docindex = docindex
+        self._context = context
+        
+        # Set the document's settings.
+        if self.settings is None:
+            settings = OptionParser([HTMLWriter()]).get_default_values()
+            self.__class__.settings = settings
+        document.settings = self.settings
+
+        # Call the parent constructor.
+        HTMLTranslator.__init__(self, document)
+
+    # Handle interpreted text (crossreferences)
+    def visit_title_reference(self, node):
+        target = self.encode(node.astext())
+        xref = self._linker.translate_identifier_xref(target, target)
+        self.body.append(xref)
+        raise SkipNode()
+
+    def should_be_compact_paragraph(self, node):
+        if self.document.children == [node]:
+            return True
+        else:
+            return HTMLTranslator.should_be_compact_paragraph(self, node)
+
+    def visit_document(self, node): pass
+    def depart_document(self, node): pass
+        
+    def starttag(self, node, tagname, suffix='\n', **attributes):
+        """
+        This modified version of starttag makes a few changes to HTML
+        tags, to prevent them from conflicting with epydoc.  In particular:
+          - existing class attributes are prefixed with C{'rst-'}
+          - existing names are prefixed with C{'rst-'}
+          - hrefs starting with C{'#'} are prefixed with C{'rst-'}
+          - hrefs not starting with C{'#'} are given target='_top'
+          - all headings (C{<hM{n}>}) are given the css class C{'heading'}
+        """
+        # Get the list of all attribute dictionaries we need to munge.
+        attr_dicts = [attributes]
+        if isinstance(node, docutils.nodes.Node):
+            attr_dicts.append(node.attributes)
+        if isinstance(node, dict):
+            attr_dicts.append(node)
+        # Munge each attribute dictionary.  Unfortunately, we need to
+        # iterate through attributes one at a time because some
+        # versions of docutils don't case-normalize attributes.
+        for attr_dict in attr_dicts:
+            for (key, val) in attr_dict.items():
+                # Prefix all CSS classes with "rst-"; and prefix all
+                # names with "rst-" to avoid conflicts.
+                if key.lower() in ('class', 'id', 'name'):
+                    attr_dict[key] = 'rst-%s' % val
+                elif key.lower() in ('classes', 'ids', 'names'):
+                    attr_dict[key] = ['rst-%s' % cls for cls in val]
+                elif key.lower() == 'href':
+                    if attr_dict[key][:1]=='#':
+                        attr_dict[key] = '#rst-%s' % attr_dict[key][1:]
+                    else:
+                        # If it's an external link, open it in a new
+                        # page.
+                        attr_dict['target'] = '_top'
+
+        # For headings, use class="heading"
+        if re.match(r'^h\d+$', tagname):
+            attributes['class'] = ' '.join([attributes.get('class',''),
+                                            'heading']).strip()
+        
+        return HTMLTranslator.starttag(self, node, tagname, suffix,
+                                       **attributes)
+
+    def visit_dotgraph(self, node):
+        if self._directory is None: return # [xx] warning?
+        
+        # Generate the graph.
+        graph = node.graph(self._docindex, self._context, self._linker)
+        if graph is None: return
+        
+        # Write the graph.
+        image_url = '%s.gif' % graph.uid
+        image_file = os.path.join(self._directory, image_url)
+        self.body.append(graph.to_html(image_file, image_url))
+        raise SkipNode()
+
+    def visit_doctest_block(self, node):
+        pysrc = node[0].astext()
+        if node.get('codeblock'):
+            self.body.append(HTMLDoctestColorizer().colorize_codeblock(pysrc))
+        else:
+            self.body.append(doctest_to_html(pysrc))
+        raise SkipNode()
+
+    def visit_emphasis(self, node):
+        # Generate a corrent index term anchor
+        if 'term' in node.get('classes') and node.children:
+            doc = self.document.copy()
+            doc[:] = [node.children[0].copy()]
+            self.body.append(
+                self._linker.translate_indexterm(ParsedRstDocstring(doc)))
+            raise SkipNode()
+
+        HTMLTranslator.visit_emphasis(self, node)
+
+def python_code_directive(name, arguments, options, content, lineno,
+                          content_offset, block_text, state, state_machine):
+    """
+    A custom restructuredtext directive which can be used to display
+    syntax-highlighted Python code blocks.  This directive takes no
+    arguments, and the body should contain only Python code.  This
+    directive can be used instead of doctest blocks when it is
+    inconvenient to list prompts on each line, or when you would
+    prefer that the output not contain prompts (e.g., to make
+    copy/paste easier).
+    """
+    required_arguments = 0
+    optional_arguments = 0
+
+    text = '\n'.join(content)
+    node = docutils.nodes.doctest_block(text, text, codeblock=True)
+    return [ node ]
+    
+python_code_directive.arguments = (0, 0, 0)
+python_code_directive.content = True
+
+directives.register_directive('python', python_code_directive)
+
+def term_role(name, rawtext, text, lineno, inliner,
+            options={}, content=[]):
+
+    text = docutils.utils.unescape(text)
+    node = docutils.nodes.emphasis(rawtext, text, **options)
+    node.attributes['classes'].append('term')
+
+    return [node], []
+
+roles.register_local_role('term', term_role)
+
+######################################################################
+#{ Graph Generation Directives
+######################################################################
+# See http://docutils.sourceforge.net/docs/howto/rst-directives.html
+
+class dotgraph(docutils.nodes.image):
+    """
+    A custom docutils node that should be rendered using Graphviz dot.
+    This node does not directly store the graph; instead, it stores a
+    pointer to a function that can be used to generate the graph.
+    This allows the graph to be built based on information that might
+    not be available yet at parse time.  This graph generation
+    function has the following signature:
+
+        >>> def generate_graph(docindex, context, linker, *args):
+        ...     'generates and returns a new DotGraph'
+
+    Where C{docindex} is a docindex containing the documentation that
+    epydoc has built; C{context} is the C{APIDoc} whose docstring
+    contains this dotgraph node; C{linker} is a L{DocstringLinker}
+    that can be used to resolve crossreferences; and C{args} is any
+    extra arguments that are passed to the C{dotgraph} constructor.
+    """
+    def __init__(self, generate_graph_func, *generate_graph_args):
+        docutils.nodes.image.__init__(self)
+        self.graph_func = generate_graph_func
+        self.args = generate_graph_args
+    def graph(self, docindex, context, linker):
+        return self.graph_func(docindex, context, linker, *self.args)
+
+def _dir_option(argument):
+    """A directive option spec for the orientation of a graph."""
+    argument = argument.lower().strip()
+    if argument == 'right': return 'LR'
+    if argument == 'left': return 'RL'
+    if argument == 'down': return 'TB'
+    if argument == 'up': return 'BT'
+    raise ValueError('%r unknown; choose from left, right, up, down' %
+                     argument)
+ 
+def digraph_directive(name, arguments, options, content, lineno,
+                      content_offset, block_text, state, state_machine):
+    """
+    A custom restructuredtext directive which can be used to display
+    Graphviz dot graphs.  This directive takes a single argument,
+    which is used as the graph's name.  The contents of the directive
+    are used as the body of the graph.  Any href attributes whose
+    value has the form <name> will be replaced by the URL of the object
+    with that name.  Here's a simple example::
+
+     .. digraph:: example_digraph
+       a -> b -> c
+       c -> a [dir=\"none\"]
+    """
+    if arguments: title = arguments[0]
+    else: title = ''
+    return [ dotgraph(_construct_digraph, title, options.get('caption'),
+                    '\n'.join(content)) ]
+digraph_directive.arguments = (0, 1, True)
+digraph_directive.options = {'caption': directives.unchanged}
+digraph_directive.content = True
+directives.register_directive('digraph', digraph_directive)
+
+def _construct_digraph(docindex, context, linker, title, caption,
+                       body):
+    """Graph generator for L{digraph_directive}"""
+    graph = DotGraph(title, body, caption=caption)
+    graph.link(linker)
+    return graph
+
+def classtree_directive(name, arguments, options, content, lineno,
+                        content_offset, block_text, state, state_machine):
+    """
+    A custom restructuredtext directive which can be used to
+    graphically display a class hierarchy.  If one or more arguments
+    are given, then those classes and all their descendants will be
+    displayed.  If no arguments are given, and the directive is in a
+    class's docstring, then that class and all its descendants will be
+    displayed.  It is an error to use this directive with no arguments
+    in a non-class docstring.
+
+    Options:
+      - C{:dir:} -- Specifies the orientation of the graph.  One of
+        C{down}, C{right} (default), C{left}, C{up}.
+    """
+    return [ dotgraph(_construct_classtree, arguments, options) ]
+classtree_directive.arguments = (0, 1, True)
+classtree_directive.options = {'dir': _dir_option}
+classtree_directive.content = False
+directives.register_directive('classtree', classtree_directive)
+
+def _construct_classtree(docindex, context, linker, arguments, options):
+    """Graph generator for L{classtree_directive}"""
+    if len(arguments) == 1:
+        bases = [docindex.find(name, context) for name in
+                 arguments[0].replace(',',' ').split()]
+        bases = [d for d in bases if isinstance(d, ClassDoc)]
+    elif isinstance(context, ClassDoc):
+        bases = [context]
+    else:
+        log.warning("Could not construct class tree: you must "
+                    "specify one or more base classes.")
+        return None
+        
+    return class_tree_graph(bases, linker, context, **options)
+
+def packagetree_directive(name, arguments, options, content, lineno,
+                        content_offset, block_text, state, state_machine):
+    """
+    A custom restructuredtext directive which can be used to
+    graphically display a package hierarchy.  If one or more arguments
+    are given, then those packages and all their submodules will be
+    displayed.  If no arguments are given, and the directive is in a
+    package's docstring, then that package and all its submodules will
+    be displayed.  It is an error to use this directive with no
+    arguments in a non-package docstring.
+
+    Options:
+      - C{:dir:} -- Specifies the orientation of the graph.  One of
+        C{down}, C{right} (default), C{left}, C{up}.
+    """
+    return [ dotgraph(_construct_packagetree, arguments, options) ]
+packagetree_directive.arguments = (0, 1, True)
+packagetree_directive.options = {
+  'dir': _dir_option,
+  'style': lambda a:directives.choice(a.lower(), ('uml', 'tree'))}
+packagetree_directive.content = False
+directives.register_directive('packagetree', packagetree_directive)
+
+def _construct_packagetree(docindex, context, linker, arguments, options):
+    """Graph generator for L{packagetree_directive}"""
+    if len(arguments) == 1:
+        packages = [docindex.find(name, context) for name in
+                    arguments[0].replace(',',' ').split()]
+        packages = [d for d in packages if isinstance(d, ModuleDoc)]
+    elif isinstance(context, ModuleDoc):
+        packages = [context]
+    else:
+        log.warning("Could not construct package tree: you must "
+                    "specify one or more root packages.")
+        return None
+
+    return package_tree_graph(packages, linker, context, **options)
+
+def importgraph_directive(name, arguments, options, content, lineno,
+                        content_offset, block_text, state, state_machine):
+    return [ dotgraph(_construct_importgraph, arguments, options) ]
+importgraph_directive.arguments = (0, 1, True)
+importgraph_directive.options = {'dir': _dir_option}
+importgraph_directive.content = False
+directives.register_directive('importgraph', importgraph_directive)
+
+def _construct_importgraph(docindex, context, linker, arguments, options):
+    """Graph generator for L{importgraph_directive}"""
+    if len(arguments) == 1:
+        modules = [ docindex.find(name, context)
+                    for name in arguments[0].replace(',',' ').split() ]
+        modules = [d for d in modules if isinstance(d, ModuleDoc)]
+    else:
+        modules = [d for d in docindex.root if isinstance(d, ModuleDoc)]
+
+    return import_graph(modules, docindex, linker, context, **options)
+
+def callgraph_directive(name, arguments, options, content, lineno,
+                        content_offset, block_text, state, state_machine):
+    return [ dotgraph(_construct_callgraph, arguments, options) ]
+callgraph_directive.arguments = (0, 1, True)
+callgraph_directive.options = {'dir': _dir_option,
+                                 'add_callers': directives.flag,
+                                 'add_callees': directives.flag}
+callgraph_directive.content = False
+directives.register_directive('callgraph', callgraph_directive)
+
+def _construct_callgraph(docindex, context, linker, arguments, options):
+    """Graph generator for L{callgraph_directive}"""
+    if len(arguments) == 1:
+        docs = [docindex.find(name, context) for name in
+                 arguments[0].replace(',',' ').split()]
+        docs = [doc for doc in docs if doc is not None]
+    else:
+        docs = [context]
+    return call_graph(docs, docindex, linker, context, **options)
+  
diff --git a/epydoc/test/__init__.py b/epydoc/test/__init__.py
new file mode 100644
index 0000000..5095bc5
--- /dev/null
+++ b/epydoc/test/__init__.py
@@ -0,0 +1,97 @@
+# epydoc -- Regression testing
+#
+# Copyright (C) 2005 Edward Loper
+# Author: Edward Loper <edloper at loper.org>
+# URL: <http://epydoc.sf.net>
+#
+# $Id: __init__.py 1502 2007-02-14 08:38:44Z edloper $
+
+"""
+Regression testing.
+"""
+__docformat__ = 'epytext en'
+
+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
+    
+    # Options for doctest:
+    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])
+    if testdir == '': testdir = '.'
+    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,
+                                              parser=parser))
+            
+    # Run all test cases.
+    unittest.TextTestRunner(verbosity=2).run(unittest.TestSuite(tests))
+
+def check_requirements(filename):
+    """
+    Search for strings of the form::
+    
+        [Require: <module>]
+
+    If any are found, then try importing the module named <module>.
+    If the import fails, then return False.  If all required modules
+    are found, return True.  (This includes the case where no
+    requirements are listed.)
+    """
+    s = open(filename).read()
+    for m in re.finditer('(?mi)^[ ]*\:RequireModule:(.*)$', s):
+        module = m.group(1).strip()
+        try:
+            __import__(module)
+        except ImportError:
+            print ('Skipping %r (required module %r not found)' %
+                   (os.path.split(filename)[-1], module))
+            return False
+    return True
+            
+
+if __name__=='__main__':
+    main()
diff --git a/epydoc/test/util.py b/epydoc/test/util.py
new file mode 100644
index 0000000..a451103
--- /dev/null
+++ b/epydoc/test/util.py
@@ -0,0 +1,226 @@
+#
+# epydoc -- Utility functions used by regression tests (*.doctest)
+# Edward Loper
+#
+# Created [01/30/01 05:18 PM]
+# $Id: html.py 1420 2007-01-28 14:19:30Z dvarrazzo $
+#
+
+"""
+Utility functions used by the regression tests (C{*.doctest}).
+"""
+__docformat__ = 'epytext en'
+
+import tempfile, re, os, os.path, textwrap, sys
+from epydoc.docbuilder import build_doc, build_doc_index
+from epydoc.docparser import parse_docs
+from epydoc.docintrospecter import introspect_docs
+from epydoc.apidoc import ClassDoc, RoutineDoc
+from epydoc.markup import ParsedDocstring
+from epydoc.docwriter.html import HTMLWriter
+
+######################################################################
+#{ Test Functions
+######################################################################
+
+def buildvaluedoc(s):
+    """
+    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
+    returns it as a C{ValueDoc} object.
+    """
+    tmp_dir = write_pystring_to_tmp_dir(s)
+    val_doc = build_doc(os.path.join(tmp_dir, 'epydoc_test.py'))
+    cleanup_tmp_dir(tmp_dir)
+    return val_doc
+
+def runbuilder(s, attribs='', build=None, exclude=''):
+    """
+    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 C{attribs} argument
+    specifies which attributes of the C{APIDoc}s should be displayed.
+    The C{build} argument gives the name of a variable in the module
+    whose documentation should be built, instead of bilding docs for
+    the whole module.
+    """
+    # Write it to a temp file.
+    tmp_dir = write_pystring_to_tmp_dir(s)
+    # 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.
+    cleanup_tmp_dir(tmp_dir)
+
+def runparser(s, attribs='', show=None, exclude=''):
+    """
+    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 specifies which attributes of the `APIDoc`s should be
+    displayed.  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).
+    """
+    # Write it to a temp file.
+    tmp_dir = write_pystring_to_tmp_dir(s)
+    # Parse it.
+    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):
+                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.
+    cleanup_tmp_dir(tmp_dir)
+
+def runintrospecter(s, attribs='', introspect=None, exclude=''):
+    """
+    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 C{introspect_docs} to introspect it, and
+    pretty prints the resulting ModuleDoc object.  The C{attribs}
+    argument specifies which attributes of the C{APIDoc}s should be
+    displayed.  The C{introspect} argument gives the name of a variable
+    in the module whose value should be introspected, instead of
+    introspecting the whole module.
+    """
+    # Write it to a temp file.
+    tmp_dir = write_pystring_to_tmp_dir(s)
+    # 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.
+    cleanup_tmp_dir(tmp_dir)
+
+def print_warnings():
+    """
+    Register a logger that will print warnings & errors.
+    """
+    from epydoc import log
+    del log._loggers[:]
+    log.register_logger(log.SimpleLogger(log.DOCSTRING_WARNING))
+
+def testencoding(s, introspect=True, parse=True, debug=False):
+    """
+    An end-to-end test for unicode encodings.  This function 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 HTML
+    output, and displays them.  (In order to extract & display all
+    docstrings, it monkey-patches the HMTLwriter.docstring_to_html()
+    method.)"""
+    # Monkey-patch docstring_to_html
+    original_docstring_to_html = HTMLWriter.docstring_to_html
+    HTMLWriter.docstring_to_html = print_docstring_as_html
+    
+    # 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
+    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):
+        os.unlink(os.path.join(tmp_dir,file))
+    os.rmdir(tmp_dir)
+
+    # Restore the HTMLWriter class to its original state.
+    HTMLWriter.docstring_to_html = original_docstring_to_html
+
+######################################################################
+#{ Helper Functions
+######################################################################
+
+def write_pystring_to_tmp_dir(s):
+    tmp_dir = tempfile.mkdtemp()
+    out = open(os.path.join(tmp_dir, 'epydoc_test.py'), 'w')
+    out.write(textwrap.dedent(s))
+    out.close()
+    return tmp_dir
+
+def cleanup_tmp_dir(tmp_dir):
+    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)
+    sys.modules.pop('epydoc_test', None)
+
+def to_plain(docstring):
+    """Conver a parsed docstring into plain text"""
+    if isinstance(docstring, ParsedDocstring):
+        docstring = docstring.to_plaintext(None)
+    return docstring.rstrip()
+
+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 print_docstring_as_html(self, parsed_docstring, *varargs, **kwargs):
+    """
+    Convert the given parsed_docstring to HTML and print it.  Ignore
+    any other arguments.  This function is used by L{testencoding} to
+    monkey-patch the HTMLWriter class's docstring_to_html() method.
+    """
+    s = parsed_docstring.to_html(None).strip()
+    s = s.encode('ascii', 'xmlcharrefreplace')
+    s = remove_surrogates(s)
+    print s
+    return ''
+
+def remove_surrogates(s):
+    """
+    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.
+    """
+    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)
diff --git a/epydoc/util.py b/epydoc/util.py
new file mode 100644
index 0000000..85f3102
--- /dev/null
+++ b/epydoc/util.py
@@ -0,0 +1,289 @@
+# epydoc -- Utility functions
+#
+# Copyright (C) 2005 Edward Loper
+# Author: Edward Loper <edloper at loper.org>
+# URL: <http://epydoc.sf.net>
+#
+# $Id: util.py 1671 2008-01-29 02:55:49Z edloper $
+
+"""
+Miscellaneous utility functions that are used by multiple modules.
+
+ at group Python source types: is_module_file, is_package_dir, is_pyname,
+    py_src_filename
+ at group Text processing: wordwrap, decode_with_backslashreplace,
+    plaintext_to_html
+"""
+__docformat__ = 'epytext en'
+
+import os, os.path, re
+
+######################################################################
+## Python Source Types
+######################################################################
+
+PY_SRC_EXTENSIONS = ['.py', '.pyw']
+PY_BIN_EXTENSIONS = ['.pyc', '.so', '.pyd']
+
+def is_module_file(path):
+    # Make sure it's a file name.
+    if not isinstance(path, basestring):
+        return False
+    (dir, filename) = os.path.split(path)
+    (basename, extension) = os.path.splitext(filename)
+    return (os.path.isfile(path) and
+            re.match('[a-zA-Z_]\w*$', basename) and
+            extension in PY_SRC_EXTENSIONS+PY_BIN_EXTENSIONS)
+
+def is_src_filename(filename):
+    if not isinstance(filename, basestring): return False
+    if not os.path.exists(filename): return False
+    return os.path.splitext(filename)[1] in PY_SRC_EXTENSIONS
+    
+def is_package_dir(dirname):
+    """
+    Return true if the given directory is a valid package directory
+    (i.e., it names a directory that contains a valid __init__ file,
+    and its name is a valid identifier).
+    """
+    # Make sure it's a directory name.
+    if not isinstance(dirname, basestring):
+        return False
+    if not os.path.isdir(dirname):
+        return False
+    dirname = os.path.abspath(dirname)
+    # Make sure it's a valid identifier.  (Special case for
+    # "foo/", where os.path.split -> ("foo", "").)
+    (parent, dir) = os.path.split(dirname)
+    if dir == '': (parent, dir) = os.path.split(parent)
+    
+    # The following constraint was removed because of sourceforge
+    # bug #1787028 -- in some cases (eg eggs), it's too strict.
+    #if not re.match('\w+$', dir):
+    #    return False
+    
+    for name in os.listdir(dirname):
+        filename = os.path.join(dirname, name)
+        if name.startswith('__init__.') and is_module_file(filename):
+            return True
+    else:
+        return False
+
+def is_pyname(name):
+    return re.match(r"\w+(\.\w+)*$", name)
+
+def py_src_filename(filename):
+    basefile, extension = os.path.splitext(filename)
+    if extension in PY_SRC_EXTENSIONS:
+        return filename
+    else:
+        for ext in PY_SRC_EXTENSIONS:
+            if os.path.isfile('%s%s' % (basefile, ext)):
+                return '%s%s' % (basefile, ext)
+        else:
+            raise ValueError('Could not find a corresponding '
+                             'Python source file for %r.' % filename)
+
+def munge_script_name(filename):
+    name = os.path.split(filename)[1]
+    name = re.sub(r'\W', '_', name)
+    return 'script-'+name
+
+######################################################################
+## Text Processing
+######################################################################
+
+def decode_with_backslashreplace(s):
+    r"""
+    Convert the given 8-bit string into unicode, treating any
+    character c such that ord(c)<128 as an ascii character, and
+    converting any c such that ord(c)>128 into a backslashed escape
+    sequence.
+
+        >>> decode_with_backslashreplace('abc\xff\xe8')
+        u'abc\\xff\\xe8'
+    """
+    # s.encode('string-escape') is not appropriate here, since it
+    # also adds backslashes to some ascii chars (eg \ and ').
+    assert isinstance(s, str)
+    return (s
+            .decode('latin1')
+            .encode('ascii', 'backslashreplace')
+            .decode('ascii'))
+
+def wordwrap(str, indent=0, right=75, startindex=0, splitchars=''):
+    """
+    Word-wrap the given string.  I.e., add newlines to the string such
+    that any lines that are longer than C{right} are broken into
+    shorter lines (at the first whitespace sequence that occurs before
+    index C{right}).  If the given string contains newlines, they will
+    I{not} be removed.  Any lines that begin with whitespace will not
+    be wordwrapped.
+
+    @param indent: If specified, then indent each line by this number
+        of spaces.
+    @type indent: C{int}
+    @param right: The right margin for word wrapping.  Lines that are
+        longer than C{right} will be broken at the first whitespace
+        sequence before the right margin.
+    @type right: C{int}
+    @param startindex: If specified, then assume that the first line
+        is already preceeded by C{startindex} characters.
+    @type startindex: C{int}
+    @param splitchars: A list of non-whitespace characters which can
+        be used to split a line.  (E.g., use '/\\' to allow path names
+        to be split over multiple lines.)
+    @rtype: C{str}
+    """
+    if splitchars:
+        chunks = re.split(r'( +|\n|[^ \n%s]*[%s])' %
+                          (re.escape(splitchars), re.escape(splitchars)),
+                          str.expandtabs())
+    else:
+        chunks = re.split(r'( +|\n)', str.expandtabs())
+    result = [' '*(indent-startindex)]
+    charindex = max(indent, startindex)
+    for chunknum, chunk in enumerate(chunks):
+        if (charindex+len(chunk) > right and charindex > 0) or chunk == '\n':
+            result.append('\n' + ' '*indent)
+            charindex = indent
+            if chunk[:1] not in ('\n', ' '):
+                result.append(chunk)
+                charindex += len(chunk)
+        else:
+            result.append(chunk)
+            charindex += len(chunk)
+    return ''.join(result).rstrip()+'\n'
+
+def plaintext_to_html(s):
+    """
+    @return: An HTML string that encodes the given plaintext string.
+    In particular, special characters (such as C{'<'} and C{'&'})
+    are escaped.
+    @rtype: C{string}
+    """
+    s = s.replace('&', '&').replace('"', '"')
+    s = s.replace('<', '<').replace('>', '>')
+    return s
+        
+def plaintext_to_latex(str, nbsp=0, breakany=0):
+    """
+    @return: A LaTeX string that encodes the given plaintext string.
+    In particular, special characters (such as C{'$'} and C{'_'})
+    are escaped, and tabs are expanded.
+    @rtype: C{string}
+    @param breakany: Insert hyphenation marks, so that LaTeX can
+    break the resulting string at any point.  This is useful for
+    small boxes (e.g., the type box in the variable list table).
+    @param nbsp: Replace every space with a non-breaking space
+    (C{'~'}).
+    """
+    # These get converted to hyphenation points later
+    if breakany: str = re.sub('(.)', '\\1\1', str)
+
+    # These get converted to \textbackslash later.
+    str = str.replace('\\', '\0')
+
+    # Expand tabs
+    str = str.expandtabs()
+
+    # These elements need to be backslashed.
+    str = re.sub(r'([#$&%_\${}])', r'\\\1', str)
+
+    # These elements have special names.
+    str = str.replace('|', '{\\textbar}')
+    str = str.replace('<', '{\\textless}')
+    str = str.replace('>', '{\\textgreater}')
+    str = str.replace('^', '{\\textasciicircum}')
+    str = str.replace('~', '{\\textasciitilde}')
+    str = str.replace('\0', r'{\textbackslash}')
+
+    # replace spaces with non-breaking spaces
+    if nbsp: str = str.replace(' ', '~')
+
+    # Convert \1's to hyphenation points.
+    if breakany: str = str.replace('\1', r'\-')
+    
+    return str
+
+class RunSubprocessError(OSError):
+    def __init__(self, cmd, out, err):
+        OSError.__init__(self, '%s failed' % cmd[0])
+        self.out = out
+        self.err = err
+
+def run_subprocess(cmd, data=None):
+    """
+    Execute the command C{cmd} in a subprocess.
+    
+    @param cmd: The command to execute, specified as a list
+        of string.
+    @param data: A string containing data to send to the
+        subprocess.
+    @return: A tuple C{(out, err)}.
+    @raise OSError: If there is any problem executing the
+        command, or if its exitval is not 0.
+    """
+    if isinstance(cmd, basestring):
+        cmd = cmd.split()
+
+    # Under Python 2.4+, use subprocess
+    try:
+        from subprocess import Popen, PIPE
+        pipe = Popen(cmd, stdin=PIPE, stdout=PIPE, stderr=PIPE)
+        out, err = pipe.communicate(data)
+        if hasattr(pipe, 'returncode'):
+            if pipe.returncode == 0:
+                return out, err
+            else:
+                raise RunSubprocessError(cmd, out, err)
+        else:
+            # Assume that there was an error iff anything was written
+            # to the child's stderr.
+            if err == '':
+                return out, err
+            else:
+                raise RunSubprocessError(cmd, out, err)
+    except ImportError:
+        pass
+
+    # Under Python 2.3 or earlier, on unix, use popen2.Popen3 so we
+    # can access the return value.
+    import popen2
+    if hasattr(popen2, 'Popen3'):
+        pipe = popen2.Popen3(' '.join(cmd), True)
+        to_child = pipe.tochild
+        from_child = pipe.fromchild
+        child_err = pipe.childerr
+        if data:
+            to_child.write(data)
+        to_child.close()
+        out = err = ''
+        while pipe.poll() is None:
+            out += from_child.read()
+            err += child_err.read()
+        out += from_child.read()
+        err += child_err.read()
+        if pipe.wait() == 0:
+            return out, err
+        else:
+            raise RunSubprocessError(cmd, out, err)
+
+    # Under Python 2.3 or earlier, on non-unix, use os.popen3
+    else:
+        to_child, from_child, child_err = os.popen3(' '.join(cmd), 'b')
+        if data:
+            try:
+                to_child.write(data)
+            # Guard for a broken pipe error
+            except IOError, e:
+                raise OSError(e)
+        to_child.close()
+        out = from_child.read()
+        err = child_err.read()
+        # Assume that there was an error iff anything was written
+        # to the child's stderr.
+        if err == '':
+            return out, err
+        else:
+            raise RunSubprocessError(cmd, out, err)
diff --git a/man/epydoc.1 b/man/epydoc.1
new file mode 100644
index 0000000..9b56132
--- /dev/null
+++ b/man/epydoc.1
@@ -0,0 +1,762 @@
+.\"
+.\" Epydoc command line interface man page.
+.\" $Id: epydoc.1 1597 2007-07-25 04:59:18Z edloper $
+.\"
+.TH EPYDOC 1 
+.SH NAME
+epydoc \- generate API documentation from Python docstrings
+.\" ================== SYNOPSIS ====================
+.SH SYNOPSIS
+.HP 7
+.B epydoc
+.RB [ action ]
+.RB [ options ]
+.IB names...
+.\" ================== DESCRIPTION ====================
+.SH DESCRIPTION
+.B epydoc
+generates API documentation for Python modules and packages, based on
+their docstrings.  A lightweight markup language called
+.B epytext
+can be used to format docstrings, and to add information about
+specific fields, such as parameters and instance variables.  Epydoc
+also understands docstrings written in ReStructuredText, Javadoc, and
+plaintext.  Currently, epydoc supports two basic output formats: HTML
+and LaTeX.
+.PP
+The HTML API documentation produced by 
+.B epydoc
+consists of a set of HTML files, including: an API documentation page
+for each class and module; a syntax-highlighted source code page for
+each module; an identifier index page; a help page; and a frames-based
+table of contents.  When appropriate,
+.B epydoc
+will also generate
+index pages for bugs, defined terms, and to-do items; 
+a class hierarchy page; and a package hierarchy page.
+.PP
+The LaTeX API documentation produced by
+.B epydoc
+consists of a main LaTeX file, and a LaTeX file for each module.  If
+you use 
+.BR \-\-dvi ,
+.BR \-\-ps ,
+or
+.B \-\-pdf ,
+then
+.B epydoc
+will invoke external commands to convert the LaTeX output to the
+requested format.  Note that the LaTeX files containing the
+documentation for individual modules can be included as chapters or
+sections of other LaTeX documents, using the LaTeX
+.B \\\\include
+command.  If you wish to include individual classes in other LaTeX
+documents, then use the
+.B \-\-separate\-classes
+option to produce a separate LaTeX file for each class.
+.PP
+.B epydoc
+can also be used to check the completeness of the API documentation.
+By default, it checks that every public package, module, class,
+method, and function has a docstring description.  The
+.B \-\-tests
+option can be used to specify additional tests to perform.
+.PP
+.\" ================== OPTIONS ====================
+.SH OPTIONS
+Epydoc's options are divided into six categories: basic options,
+actions, generation options, output options, graph options, and return
+value options.
+.PP
+.\"--------------------------------------------------
+.B BASIC OPTIONS
+.RS 4
+.TP
+.IR names ...
+The list of objects that should be documented.  Objects can be
+specified using Python dotted names (such as
+.BR os.path ),
+filenames (such as
+.BR epydoc/epytext.py ),
+or directory names (such as
+.BR epydoc/ ).
+Directory names specify packages, and are expanded to include
+all sub-modules and sub-packages.  If you wish to exclude
+certain sub-modules or sub-packages, use the 
+.B --exclude
+option (described below).
+.\" --config
+.TP
+.BI "\-\-config " file
+A configuration file, specifying additional
+.BR options "and/or" names "."
+This option may be repeated.
+.\" --quiet
+.TP
+.B \-\-q, \-\-quiet, \-\-v, \-\-verbose
+Produce quite (or verbose) output.  If used multiple times, this
+option produces successively more quiet (or verbose) output.
+.\" --debug
+.TP
+.B \-\-debug
+Show full tracebacks for internal errors.
+.\" --simple-term
+.TP
+.B \-\-simple\-term
+Do not try to use color or cursor control when displaying the progress
+bar, warnings, or errors.
+.RE
+.PP
+.\"--------------------------------------------------
+.B ACTIONS
+.RS 4
+.TP 10
+.B \-\-html
+Write HTML output.
+.B [default]
+.TP 10
+.B \-\-latex
+Write LaTeX output.
+.TP 10
+.B \-\-dvi
+Write DVI output.
+.TP 10
+.B \-\-ps
+Write Postscript output.
+.TP 10
+.B \-\-pdf
+Write Adobe Acrobat (pdf) output. 
+.TP 10
+.B \-\-check
+Perform completeness checks on the documentation.
+.TP 10
+.B \-\-pickle
+Write the documentation to a pickle file.
+.RE
+.PP
+.\"--------------------------------------------------
+.B GENERATION OPTIONS
+.RS 4
+.\" --docformat
+.TP
+.BI "\-\-docformat " format
+Set the default value for
+.B __docformat__
+to
+.IR format .
+.B __docformat__
+is a module variable that specifies the markup language for the
+docstrings in a module.  Its value consists of the name of a markup
+language, optionally followed by a language code (such as
+.B en
+for English).  For a list of the markup languages currently recognized
+by epydoc, run
+.BR "epydoc \-\-help docformat" .
+.\" --parse-only
+.TP
+.BI "\-\-parse-only"
+Gather all information about the documented objects by parsing the
+relevant Python source code; in particular, do
+.I not
+use introspection to gather information about the documented objects.
+This option should be used when epydoc is run on untrusted code; or on
+code that can not be introspected because of missing dependencies, or
+because importing it would cause undesired side-effects.
+.\" --introspect-only
+.TP
+.BI "\-\-introspect-only"
+Gather all information about the documented objects by introspection;
+in particular, do
+.I not
+gather information by parsing the object's Python source code.
+.\" --exclude=PATTERN
+.TP
+.BI "\-\-exclude " PATTERN
+Do not document any object whose name matches the given regular
+expression pattern.
+.\" --exclude-introspect=PATTERN
+.TP
+.BI "\-\-exclude-introspect " PATTERN
+Do not use introspection to gather information about any object whose
+name matches the given regular expression.  
+.\" --exclude-parse=PATTERN
+.TP
+.BI "\-\-exclude-parse " PATTERN
+Do not use Python source code parsing to gather information about any
+object whose name matches the given regular expression.
+.\" --inheritance
+.TP
+.BI "\-\-inheritance " format
+The format that should be used to display inherited methods,
+variables, and properties in the generated "summary" tables.
+If
+.I format
+is "grouped," then inherited objects are gathered into groups, based
+on which class that they are inherited from.  If
+.I format
+is "listed," then inherited objects are listed in a short list at the
+end of the summary table.  If
+.I format
+is "included," then inherited objects are mixed in with non-inherited
+objects.  The default format for HTML output is "grouped."
+.\" --show-private, --no-private
+.TP
+.B \-\-show\-private, \-\-no\-private
+These options control whether documentation is generated for private
+objects.  By default, the generated documentation includes private
+objects, and users can choose whether to view private objects or not,
+by clicking on "show private" and "hide private" links.  But if you
+want to discourage users from directly accessing private objects, then
+you may prefer not to generate documentation for private objects.
+.\" --show-imports
+.TP
+.B \-\-show-imports, \-\-no\-imports
+These options control whether module imports are included in the
+generated documentation.  By default, imports are not included.
+.\" --show-sourcecode
+.TP
+.B \-\-show\-sourcecode, \-\-no\-sourcecode
+These options control whether or not epydoc should generate
+syntax-highlighted pages containing the souce code of each module in
+the HTML output.  By default, the sourcecode pages are generated.
+.\" --include-log
+.TP
+.B \-\-include\-log
+Generate an HTML page
+.B epydoc\-log.html
+containing all error and warning messages that are generated by
+epydoc, and include it in the generated output.
+.RE
+.PP
+.\"--------------------------------------------------
+.B OUTPUT OPTIONS
+.RS 4
+.\" --output
+.TP
+.BI "\-o " dir ", \-\-output " dir
+The output directory.  If
+.B dir
+does not exist, then it will be created.  If no output directory is
+specified, then the action name (e.g.,
+.BR html " or " pdf ).
+.B html
+.\" --css
+.TP
+.BI "\-c " sheet ", \-\-css " sheet
+CSS stylesheet for HTML output files.  If
+.I sheet
+is a file, then the stylesheet is copied from that file; otherwise,
+.I sheet
+is taken to be the name of a built\-in stylesheet.  For a list of
+the built\-in stylesheets, run
+.BR "epydoc \-\-help css" .
+If a CSS stylesheet is not specified, then the default stylesheet is
+used.
+.\" --name
+.TP
+.BI "\-n " name ", \-\-name " name
+The name of the project whose documentation is being generated.  
+.\" --url
+.TP
+.BI "\-u " url ", \-\-url " url
+The URL of the project's homepage.
+.TP
+.\" --navlink
+.TP
+.BI "\-\-navlink " html
+HTML code for the homepage link on the HTML navigation bar.  If this
+HTML code contains any hyperlinks
+.RB ( "<a href=...>" ),
+then it will be inserted verbatim.  If
+it does not contain any hyperlinks, and a project url is specified
+(with
+.BR \-\-url ),
+then a hyperlink to the specified URL is added to the link.
+.\" --help-file
+.TP
+.BI "\-\-help\-file " file
+An alternate help file.
+.B file
+should contain the body of an HTML file -- navigation bars will be
+added to it.
+.\" --show-frames, --no-frames
+.TP
+.B \-\-show\-frames, \-\-no\-frames
+These options control whether HMTL output will include a frames-base
+table of contents page.  By default, the frames-based table of
+contents is included.
+.\" --separate-classes
+.TP
+.B \-\-separate\-classes
+In the LaTeX output, describe each class in a separate section of the
+documentation, instead of including them in the documentation for
+their modules.  This creates a separate LaTeX file for each class, so
+it can also be useful if you want to include the documentation for one
+or two classes as sections of your own LaTeX document.
+.RE
+.PP
+.\"--------------------------------------------------
+.B GRAPH OPTIONS
+.RS 4
+.\" --graph
+.TP
+.BI "\-\-graph " graphtype
+Include graphs of type
+.B graphtype
+in the generated output.  Graphs are generated using the Graphviz dot
+executable.  If this executable is not on the path, then use
+.B \-\-dotpath
+to specify its location.  This option may be repeated to include
+multiple graph types in the output.
+.B graphtype
+should be one of:
+.BR all ", " classtree ", " callgraph ", or " umlclasstree .
+.\" --dotpath
+.TP
+.BI "\-\-dotpath " path
+The path to the Graphviz
+.BR dot
+executable.
+.\"--graph-font
+.TP
+.BI "--graph-font " font
+The name of the font used to generate Graphviz graphs.  (e.g.,
+helvetica or times).
+.\"--graph-font-size
+.TP
+.BI "--graph-font-size " size
+The size of the font used to generate Graphviz graphs, in points.
+.\"--pstat
+.TP
+.BI "--pstat " file
+A pstat output file, to be used in generating call graphs.
+.RE
+.PP
+.\"--------------------------------------------------
+.B RETURN VALUE OPTIONS
+.RS 4
+.\" --fail-on-error
+.TP
+.B \-\-fail\-on\-error
+Return a non\-zero exit status, indicating failure, if any errors are
+encountered.
+.\" --fail-on-warning
+.TP
+.B \-\-fail\-on\-warning
+Return a non\-zero exit status, indicating failure, if any errors or
+warnings are encountered (not including docstring warnings).
+.\" --fail-on-docstring-warning
+.TP
+.B \-\-fail\-on\-docstring\-warning
+Return a non\-zero exit status, indicating failure, if any errors or
+warnings are encountered (including docstring warnings).
+.RE
+.\" ================== HTML FILES ====================
+.SH HTML FILES
+The HTML API documentation produced by 
+.B epydoc
+consists of the following files:
+.PP
+.B OBJECT DOCUMENTATION PAGES
+.RS 4
+.TP
+.B index.html
+The standard entry point for the documentation.  Normally,
+.B index.html
+is a copy of the frames file
+.RB ( frames.html ).
+But if the
+.B \-\-no\-frames
+option is used, then
+.B index.html
+is a copy of the API documentation home page, which is normally the
+documentation page for the top-level package or module (or the trees
+page if there is no top-level package or module).
+.TP
+.IB module \-module.html
+The API documentation for a module.  
+.I module
+is the complete dotted name of the module, such as 
+.B sys
+or
+.BR epydoc.epytext .
+.TP
+.IB class \-class.html
+The API documentation for a class, exception, or type.
+.I class
+is the complete dotted name of the class, such as
+.B epydoc.epytext.Token
+or
+.BR array.ArrayType .
+.TP
+.IB module \-pysrc.html
+A syntax-highlighted page containing the Python source code for
+.IR module .
+This page includes links back to the API documentation pages.
+.TP
+.B module-tree.html
+The module hierarchy.
+.TP
+.B class-tree.html
+The class hierarchy.  This page is only generated if at least one
+class is documented.
+.PP
+.RE
+.B INDICES
+.RS 4
+.TP
+.B identifier-index.html
+An index of all documented identifiers.  If the identifier index
+contains more than 3,000 entries, then it will be split into separate
+pages for each letter, named
+.BR identifier-index-a.html ,
+.BR identifier-index-b.html ", etc."
+.TP
+.B term-index.html
+An index of all explicitly marked definitional terms.  This page is
+only generated if at least one definition term is marked in a
+formatted docstring.
+.TP
+.B bug-index.html
+An index of all explicitly marked
+.B @bug
+fields.  This page is only
+generated if at least one
+.B @bug
+field is listed in a formatted docstring.
+.TP
+.B todo-index.html
+An index of all explicitly marked
+.B @todo
+fields.  This page is only
+generated if at least one
+.B @todo
+field is listed in a formatted docstring.
+.TP
+.B changed-index.html
+An index of all explicitly marked
+.B @changed
+fields.  This page is only
+generated if at least one
+.B @changed
+field is listed in a formatted docstring.
+.TP
+.B deprecated-index.html
+An index of all explicitly marked
+.B @deprecated
+fields.  This page is only
+generated if at least one
+.B @deprecated
+field is listed in a formatted docstring.
+.TP
+.B since-index.html
+An index of all explicitly marked
+.B @since
+fields.  This page is only
+generated if at least one
+.B @since
+field is listed in a formatted docstring.
+.RE
+.PP
+.B FRAMES-BASED TABLE OF CONTENTS
+.RS 4
+.TP
+.B frames.html
+The main frames file.  Two frames on the left side of the window
+contain a table of contents, and the main frame on the right side of
+the window contains API documentation pages.
+.TP
+.B toc.html
+The top\-level table of contents page.  This page is displayed in the
+upper\-left frame of
+.BR frames.html ,
+and provides links to the
+.B toc\-everything.html
+and 
+.BI toc\- module \-module.html
+pages.
+.TP
+.B toc\-everything.html
+The table of contents for the entire project.  This page is displayed
+in the lower\-left frame of
+.BR frames.html ,
+and provides links to every class, type, exception, function, and
+variable defined by the project.
+.TP
+.BI toc\- module \-module.html
+The table of contents for a module.  This page is displayed in the
+lower\-left frame of
+.BR frames.html ,
+and provides links to every class, type, exception, function, and
+variable defined by the module.
+.I module
+is the complete dotted name of the module, such as 
+.B sys
+or
+.BR epydoc.epytext .
+.RE
+.PP
+.B OTHER PAGES
+.RS 4
+.TP
+.B help.html
+The help page for the project.  This page explains how to use and
+navigate the webpage produced by epydoc.
+.TP
+.B redirect.html
+This page uses javascript to translate dotted names to their
+corresponding URLs.  For example, in epydoc's documentation,
+loading the page
+.B <redirect.html#epydoc.apidoc.DottedName>
+will automatically redirect the browser to
+.BR <epydoc.apidoc-module.html#DottedName> .
+.TP
+.B epydoc.css
+The CSS stylesheet used to display all HTML pages.
+.TP
+.B epydoc.js
+A javascript file used to define javascript functions used by epydoc.
+.TP
+.B epydoc\-log.html
+A page containing a log of all warnings and errors that were generated
+by epydoc, along with a table listing all of the options that were
+used.
+.\" ================== LATEX FILES ====================
+.SH LATEX FILES
+The LaTeX API documentation produced by
+.B epydoc
+consists of the following files:
+.RS 4
+.TP
+.B api.pdf
+An Adobe Acrobat (pdf) file containing the complete API documentation.
+This file is only generated if you use the
+.B \-\-pdf
+option.
+.TP
+.B api.tex
+The top-level LaTeX file.  This file imports the other LaTeX files, to
+create a single unified document.
+.TP
+.B api.dvi
+A dvi file containing the complete API documentation.  This file is
+only generated if you use the 
+.B \-\-dvi
+option, the
+.B \-\-ps
+option, or the
+.B \-\-pdf
+option.
+.TP
+.B api.ps
+A postscript file containing the complete API documentation.  This
+file is only generated if you use the
+.B \-\-ps
+option or the
+.B \-\-pdf
+option.
+.TP
+.IB module -module.tex
+The API documentation for a module.
+.I module
+is the complete dotted name of the module, such as
+.B sys or
+.BR epydoc.epytext .
+.TP
+.IB class -class.tex
+The API documentation for a class, exception, or type.
+.I class
+is the complete dotted name of the class, such as
+.B epydoc.epytext.Token
+or array.ArrayType.  These class documentation files are only created
+if the
+.B \-\-separate\-classes
+option is used; otherwise, the documentation for each class is
+included in its module's documentation file.
+.RE
+.\" ================== DIAGNOSTICS ====================
+.SH DIAGNOSTICS
+.B EPYTEXT MARKUP WARNING MESSAGES
+.RS 4
+Epytext errors are caused by epytext docstrings that contain invalid
+markup.  Whenever an epytext error is detected, the docstring in
+question is treated as a plaintext docstring.  Epydoc can generate the
+following epytext errors:
+.TP
+.B Bad link target.
+The target specified for an inline link contruction
+.RB ( "L{...}" )
+is not well-formed.  Link targets must be valid python identifiers.
+.TP
+.B Bad uri target.
+The target specified for an inline uri contruction
+.RB ( "U{...}" )
+is not well-formed.  This typically occurs if inline markup is nested
+inside the URI target.  
+.TP
+.B Fields must be at the top level.
+The list of fields
+.RB "(" @param ", etc.)"
+is contained by some other
+block structure (such as a list or a section).
+.TP
+.B Fields must be the final elements.
+The list of fields
+.RB "(" @param ", etc.)"
+is not at the end of a docstring.
+.TP
+.B Headings must occur at top level.
+The heading is contianed in some other block structure (such as a
+list).
+.TP
+.B Improper doctest block indentation.
+The doctest block dedents past the indentation of its initial prompt
+line.
+.TP
+.B Improper heading indentation.
+The heading for a section is not left-aligned with the paragraphs in
+the section that contains it.
+.TP
+.B Improper paragraph indentation.
+The paragraphs within a block are not left-aligned.  This error is
+often generated when plaintext docstrings are parsed using epytext.
+.TP
+.B Invalid escape.
+An unknown escape sequence was used with the inline escape construction
+.RB ( "E{...}" ).
+.TP
+.B Lists must be indented.
+An unindented line immediately following a paragraph starts with a
+list bullet.  Epydoc is not sure whether you meant to start a new list
+item, or meant for a paragraph to include a word that looks like a
+bullet.  If you intended the former, then indent the list.  If you
+intended the latter, then change the word-wrapping of the paragraph,
+or escape the first character of the word that looks like a bullet.
+.TP
+.B Unbalanced '{'.
+The docstring contains unbalanced braces.  Epytext requires that all
+braces must be balanced.  To include a single unbalanced brace, use
+the escape sequences E{lb} (left brace) and E{rb} (right brace).
+.TP
+.B Unbalanced '}'.
+The docstring contains unbalanced braces.  Epytext requires that all
+braces must be balanced.  To include a single unbalanced brace, use
+the escape sequences E{lb} (left brace) and E{rb} (right brace).
+.TP
+.B Unknown inline markup tag.
+An unknown tag was used with the inline markup construction (
+.IB x {...}
+).
+.TP
+.B Wrong underline character for heading.
+The underline character used for this section heading does not
+indicate an appopriate section level.  The "=" character should be
+used to underline sections; "-" for subsections; and "~" for
+subsubsections.
+.TP
+.B Possible mal-formatted field item.
+Epytext detected a line that looks like a field item, but is not
+correctly formatted.  This typically occurs when the trailing colon
+(":") is not included in the field tag.
+.TP
+.B Possible heading typo.
+Epytext detected a pair of lines that looks like a heading, but the
+number of underline characters does not match the number of characters
+in the heading.  The number of characters in these two lines must
+match exactly for them to be considered a heading.
+.RE
+.PP
+.B FIELD WARNINGS
+.RS 4
+Field warnings are caused by docstrings containing invalid fields.
+The contents of the invalid field are generally ignored.  Epydoc can
+generate the following field warnings:
+.TP
+.BI "@param for unknown parameter " param .
+A @param field was used to specify the type for a parameter that is
+not included in the function's signature.  This is typically caused by
+a typo in the parameter name.
+.TP
+.IB tag " did not expect an argument."
+The field tag
+.I tag
+was used with an argument, but it does not take one.
+.TP
+.IB tag " expected an argument."
+The field tag
+.I tag
+was used without an argument, but it requires one.
+.TP
+.BI "@type for unknown parameter " param .
+A @type field was used to specify the type for a parameter that is not
+included in the function's signature.  This is typically
+caused by a typo in the parameter name.
+.TP
+.BI "@type for unknown variable " var .
+A @type field was used to specify the type for a variable, but no
+other information is known about the variable.  This is typically
+caused by a typo in the variable name.
+.TP
+.BI "Unknown field tag " tag .
+A docstring contains a field with the unknown tag
+.IR tag .
+.TP
+.BI "Redefinition of " field .
+Multiple field tags define the value of
+.I field
+in the same docstring, but
+.I field
+can only take a single value.
+.RE
+.\" ================== EXAMPLES ====================
+.SH EXAMPLES
+.TP
+.BR "epydoc \-n " epydoc " \-u " "http://epydoc.sf.net epydoc/"
+Generate the HTML API documentation for the epydoc package and all of
+its submodules, and write the output to the
+.B html
+directory.  In the headers and footers, use
+.B epydoc
+as the project name, and
+.B http://epydoc.sf.net
+as the project URL.
+.TP
+.BR "epydoc \-\-pdf \-n " epydoc " epydoc/"
+Generate the LaTeX API documentation for the epydoc package and all of
+its submodules, and write the output to the
+.B latex
+directory.
+.\" ================== EXIT STATUS ====================
+.SH EXIT STATUS
+.TP
+.B 0
+Successful program execution.
+.TP
+.B 1
+Usage error.
+.TP
+.B 2
+Epydoc generated an error or warning, and one of the options
+.BI \-\-fail\-on\-error ,
+.BI \-\-fail\-on\-warning ", or"
+.B \-\-fail\-on\-docstring\-warning
+was specified.
+.TP
+.B other
+Internal error (Python exception).
+.\" ================== AUTHOR ====================
+.SH AUTHOR
+Epydoc was written by Edward Loper.  This man page was originally
+written by Moshe Zadka, and is currently maintained by Edward Loper.
+.\" ================== BUGS ====================
+.SH BUGS
+Report bugs to <edloper at users.sourceforge.net>.
+.\" ================== SEE ALSO ====================
+.SH SEE ALSO
+.BR epydocgui (1)
+.TP
+.B The epydoc webpage
+<http://epydoc.sourceforge.net>
+.TP
+.B The epytext markup language manual
+<http://epydoc.sourceforge.net/epytext.html>
diff --git a/man/epydocgui.1 b/man/epydocgui.1
new file mode 100644
index 0000000..44a1aa8
--- /dev/null
+++ b/man/epydocgui.1
@@ -0,0 +1,420 @@
+.\"
+.\" Epydoc graphical interface man page.
+.\" $Id: epydocgui.1 405 2002-11-07 10:52:37Z edloper $
+.\"
+.TH EPYDOCGUI 1 
+.SH NAME
+epydocgui \- graphical interface to epydoc
+.\" ================== SYNOPSIS ====================
+.SH SYNOPSIS
+.PP
+.B epydocgui
+.RI [ project.prj " | " modules ...]
+.PP
+.B epydoc \-h
+.PP
+.B epydoc \-V
+.\" ================== DESCRIPTION ====================
+.SH DESCRIPTION
+.B epydocgui
+is a graphical interface to epydoc, which generates API documentation
+for Python modules and packages, based on their docstrings.  A
+lightweight markup language called
+.B epytext
+can be used to format docstrings, and to add information about
+specific fields, such as parameters and instance variables.
+.PP
+The API documentation produced by 
+.B epydocgui
+consists of a set of HTML files.  Two subdirectories are created for
+the public and private documentation.  Within each subdirectories,
+every class and module is documented in its own file.  An index file,
+a trees file, and a help file are also created.  If you select the
+.B frames
+option, then a frames\-based table of contents is also produced.
+.\" ================== OPTIONS ====================
+.SH OPTIONS
+.TP
+.I project.prj
+The name of a project file that was saved with
+.BR epydocgui .
+Project files record a list of related modules, and the options that
+should be used to generate the documentation for those modules.
+.TP
+.IR modules ...
+The list of the modules that should be documented.  Modules can be
+specified using module names (such as
+.BR os.path ),
+filenames (such as
+.BR epydoc/epytext.py ),
+or directory names (such as
+.BR epydoc/ ).
+Directory names specify packages, and are expanded to include
+all sub-modules and sub-packages.
+.TP
+.B \-h, \-\-help, \-\-usage, \-?
+Display a usage message.
+.TP
+.B \-V, \-\-version
+Print the version of Epydoc.
+.\" ================== HTML FILES ====================
+.\" (this was copied from epydoc.1)
+.SH HTML FILES
+The API documentation produced by 
+.B epydoc
+consists of the following files:
+.RS 4
+.TP
+.B index.html
+The standard entry point for the documentation.  Normally,
+.B index.html
+is a frame index file, which defines three frames: two frames on
+the left side of the browser contain a table of contents, and the main
+frame on the right side of the window contains documentation pages.
+But if the 
+.B \-\-no\-frames
+option is used, then
+.B index.html
+will redirect the user to the project's top page.
+.TP
+.BI m- module .html
+The API documentation for a module.  
+.I module
+is the complete dotted name of the module, such as 
+.B sys
+or
+.BR epydoc.epytext .
+.TP
+.BI c- class .html
+The API documentation for a class, exception, or type.
+.I class
+is the complete dotted name of the class, such as
+.B epydoc.epytext.Token
+or
+.BR array.ArrayType .
+.TP
+.B trees.html
+The module and class hierarchies.
+.TP
+.B indices.html
+The term  and identifier indices.
+.TP
+.B help.html
+The help page for the project.  This page explains how to use and
+navigate the webpage produced by epydoc.
+.TP
+.B toc.html
+The top\-level table of contents page.  This page is displayed in the
+upper\-left frame, and provides links to
+.B toc\-everything.html
+and the
+.BI toc\-m\- module .html
+files.
+.B toc.html
+is not generated if the
+.B \-\-no\-frames
+option is used.
+.TP
+.B toc\-everything.html
+The table of contents for the entire project.  This page is displayed
+in the lower\-left frame, and provides links to every class, type,
+exception, function, and variable defined by the project.
+.B toc\-everything.html
+is not generated if the
+.B \-\-no\-frames
+option is used.
+.TP
+.BI toc\-m\- module .html
+The table of contents for a module.  This page is displayed in the
+lower\-left frame, and provides links to every class, type, exception,
+function, and variable defined by the module.
+.I module
+is the complete dotted name of the module, such as 
+.B sys
+or
+.BR epydoc.epytext .
+.BI toc\-m\- module .html
+is not generated if the
+.B \-\-no\-frames
+option is used.
+.TP
+.B epydoc.css
+The CSS stylesheet used to display all HTML pages.
+.RE
+.PP
+By default,
+.B epydoc
+creates two subdirectories in the output directory:
+.B public
+and
+.BR private .
+Each directory contains all of the files specified above.
+But if the
+.B \-\-no\-private
+option is used, then no subdirectories are created, and the public
+documentation is written directly to the output directory.
+.\" ================== DIAGNOSTICS ====================
+.\" (this was copied from epydoc.1)
+ivided into five categories: import errors; epytext
+errors; epytext warnings; field warnings; and inspection errors.
+Whenver epydoc encounters an error, it issues a warning message that
+describes the error, and attempts to continue generating
+documentation.
+.PP
+Import errors indicate that epydoc was unable to import a module.
+Import errors typically prevent epydoc from generating documentation
+for the module in question.  Epydoc can generate the following import
+errors:
+.RS 4
+.TP
+.BI "Bad module name " module
+Epydoc attempted to import
+.IR module ,
+but
+.I module
+is not a valid name for a Python module.
+.TP
+.BI "Could not find a UID for " link-target
+Epydoc was unable to find the object referred to by an inline link
+construction
+.RB ( "L{...}" ).
+This is usually caused by a typo in the link.
+.TP
+.BI "Could not import " module
+Epydoc attempted to import
+.IR module ,
+but it failed.  This typically occurs when
+.I module
+raises an exception.
+.TP
+.IB file " does not exist"
+Epydoc attempted to import the module contained in
+.IR file ,
+but
+.I file
+does not exist.
+.RE
+.PP
+Epytext errors are caused by epytext docstrings that contain invalid
+markup.  Whenever an epytext error is detected, the docstring in
+question is treated as a plaintext docstring.  Epydoc can generate the
+following epytext errors:
+.RS 4
+.TP
+.B Bad link target.
+The target specified for an inline link contruction
+.RB ( "L{...}" )
+is not well-formed.  Link targets must be valid python identifiers.
+.TP
+.B Bad uri target.
+The target specified for an inline uri contruction
+.RB ( "U{...}" )
+is not well-formed.  This typically occurs if inline markup is nested
+inside the URI target.  
+.TP
+.B Fields must be at the top level.
+The list of fields
+.RB "(" @param ", etc.)"
+is contained by some other
+block structure (such as a list or a section).
+.TP
+.B Fields must be the final elements.
+The list of fields
+.RB "(" @param ", etc.)"
+is not at the end of a docstring.
+.TP
+.B Headings must occur at top level.
+The heading is contianed in some other block structure (such as a
+list).
+.TP
+.B Improper doctest block indentation.
+The doctest block dedents past the indentation of its initial prompt
+line.
+.TP
+.B Improper heading indentation.
+The heading for a section is not left-aligned with the paragraphs in
+the section that contains it.
+.TP
+.B Improper paragraph indentation.
+The paragraphs within a block are not left-aligned.  This error is
+often generated when plaintext docstrings are parsed using epytext.
+.TP
+.B Invalid escape.
+An unknown escape sequence was used with the inline escape construction
+.RB ( "E{...}" ).
+.TP
+.B Lists must be indented.
+An unindented line immediately following a paragraph starts with a
+list bullet.  Epydoc is not sure whether you meant to start a new list
+item, or meant for a paragraph to include a word that looks like a
+bullet.  If you intended the former, then indent the list.  If you
+intended the latter, then change the word-wrapping of the paragraph,
+or escape the first character of the word that looks like a bullet.
+.TP
+.B Unbalanced '{'.
+The docstring contains unbalanced braces.  Epytext requires that all
+braces must be balanced.  To include a single unbalanced brace, use
+the escape sequences E{lb} (left brace) and E{rb} (right brace).
+.TP
+.B Unbalanced '}'.
+The docstring contains unbalanced braces.  Epytext requires that all
+braces must be balanced.  To include a single unbalanced brace, use
+the escape sequences E{lb} (left brace) and E{rb} (right brace).
+.TP
+.B Unknown inline markup tag.
+An unknown tag was used with the inline markup construction (
+.IB x {...}
+).
+.TP
+.B Wrong underline character for heading.
+The underline character used for this section heading does not
+indicate an appopriate section level.  The "=" character should be
+used to underline sections; "-" for subsections; and "~" for
+subsubsections.
+.RE
+.PP
+Epytext warnings are caused by epytext docstrings that contain
+questionable or suspicious markup.  Epytext warnings do
+.B not
+prevent the docstring in question from being parsed.  Epydoc can
+generate the following epytext warnings:
+.RS 4
+.TP
+.B Possible mal-formatted field item.
+Epytext detected a line that looks like a field item, but is not
+correctly formatted.  This typically occurs when the trailing colon
+(":") is not included in the field tag.
+.TP
+.B Possible heading typo.
+Epytext detected a pair of lines that looks like a heading, but the
+number of underline characters does not match the number of characters
+in the heading.  The number of characters in these two lines must
+match exactly for them to be considered a heading.
+.RE
+.PP
+Field warnings are caused by epytext docstrings containing invalid
+fields.  The contents of the invalid field are generally ignored.  
+Epydoc can generate the following field warnings:
+.RS 4
+.TP
+.BI "@param for unknown parameter " param .
+A @param field was used to specify the type for a parameter that is
+not included in the function's signature.  This is typically caused by
+a typo in the parameter name.
+.TP
+.IB tag " did not expect an argument."
+The field tag
+.I tag
+was used with an argument, but it does not take one.
+.TP
+.IB tag " expected an argument."
+The field tag
+.I tag
+was used without an argument, but it requires one.
+.TP
+.BI "@type for unknown parameter " param .
+A @type field was used to specify the type for a parameter that is not
+included in the function's signature.  This is typically
+caused by a typo in the parameter name.
+.TP
+.BI "@type for unknown variable " var .
+A @type field was used to specify the type for a variable, but no
+other information is known about the variable.  This is typically
+caused by a typo in the variable name.
+.TP
+.BI "Unknown field tag " tag .
+A docstring contains a field with the unknown tag
+.IR tag .
+.TP
+.BI "Redefinition of " field .
+Multiple field tags define the value of
+.I field
+in the same docstring, but
+.I field
+can only take a single value.
+.RE
+.PP
+Inspection errors are generated if epydoc encounters problems while
+attempting to inspect the properties of a documented object.  Most of
+inspection errors do not prevent epydoc from documenting the object in
+question.  Epydoc can generate the following inspection errors:
+.RS 4
+.TP
+.BI "The parameters of " inhmethod " do not match " basemethod .
+The parameters of the undocumented method
+.I inhmethod 
+do not match the parameters of the base class method
+.I basemethod
+that it overrides.  As a result,
+.I inhmethod
+does not inherit documentation from
+.IR basemethod .
+If the difference in parameters is intentional, then you can eliminate
+the warning by adding a (possibly empty) docstring to
+.IR inhmethod .
+.TP
+.BI "Docmap cannot add a " type
+Epydoc attempted to document an object with an unknown type.  This
+error is typically generated by packages and modules that manipulate
+the import mechanism, such that importing a module produces some other
+type of object.
+.TP
+.BI "UID conflict detected: " uid
+Two different objects were assigned the same unique identifier by
+epydoc.  This can cause epydoc to substitute the documentation of one
+object with the documentation of another object that is assigned the
+same unique identifier.  However, this will usually only cause
+problems if the two objects with the same unique identifiers are both
+modules or classes, in which case the API documentation page for one
+object will overwrite the API documentation page for the other object.
+.TP
+.IB object " appears in multiple builtin modules"
+While attempting to determine which module defines the builtin object
+.IR object ,
+epydoc encountered multiple candidates, and was unable to decide which
+candidate was correct.  In this case, epydoc arbitrarily chooses the
+first candidate that it finds.
+.TP
+.IB object " appears in multiple .py modules"
+While attempting to determine which module defines the builtin object
+.IR object ,
+epydoc encountered multiple candidates, and was unable to decide which
+candidate was correct.  In this case, epydoc arbitrarily chooses the
+first candidate that it finds.
+.TP
+.IB object " appears in multiple .so modules"
+While attempting to determine which module defines the builtin object
+.IR object ,
+epydoc encountered multiple candidates, and was unable to decide which
+candidate was correct.  In this case, epydoc arbitrarily chooses the
+first candidate that it finds.
+.TP
+.BI "Could not find a module for " object
+Epydoc was unable to determine which module defines 
+.IR object .
+If
+.I object
+is a function, then this will prevent epydoc from generating any
+documentation for
+.IR object ,
+since it does not know what page to put the documentation on.
+Otherwise, this will prevent the documentation for
+.I object
+from including a link to its containing module.
+.RE
+.\" ================== AUTHOR ====================
+.SH AUTHOR
+Epydoc was written by Edward Loper.  This man page was originally
+written by Moshe Zadka, and is currently maintained by Edward Loper.
+.\" ================== BUGS ====================
+.SH BUGS
+Report bugs to <edloper at gradient.cis.upenn.edu>.
+.\" ================== SEE ALSO ====================
+.SH SEE ALSO
+.BR epydoc (1)
+.TP
+.B The epydoc webpage
+<http://epydoc.sourceforge.net>
+.TP
+.B The epytext markup language manual
+<http://epydoc.sourceforge.net/epytext.html>
diff --git a/scripts/.cvsignore b/scripts/.cvsignore
new file mode 100644
index 0000000..7e99e36
--- /dev/null
+++ b/scripts/.cvsignore
@@ -0,0 +1 @@
+*.pyc
\ No newline at end of file
diff --git a/scripts/apirst2html.py b/scripts/apirst2html.py
new file mode 100755
index 0000000..1149d1e
--- /dev/null
+++ b/scripts/apirst2html.py
@@ -0,0 +1,41 @@
+#!/usr/bin/env python
+# -*- coding: iso-8859-1 -*-
+
+"""An HTML writer supporting link to external documentation.
+
+This module is a frontend for the Docutils_ HTML writer. It allows a document
+to reference objects documented in the API documentation generated by
+extraction tools such as Doxygen_ or Epydoc_.
+
+.. _Docutils:   http://docutils.sourceforge.net/
+.. _Doxygen:    http://www.doxygen.org/
+.. _Epydoc:     http://epydoc.sourceforge.net/
+"""
+
+# $Id: apirst2html.py 1531 2007-02-18 23:07:25Z dvarrazzo $
+__version__ = "$Revision: 1531 $"[11:-2]
+__author__ = "Daniele Varrazzo"
+__copyright__ = "Copyright (C) 2007 by Daniele Varrazzo"
+__docformat__ = 'reStructuredText en'
+
+try:
+    import locale
+    locale.setlocale(locale.LC_ALL, '')
+except:
+    pass
+
+# We have to do some path magic to prevent Python from getting
+# confused about the difference between the ``epydoc.py`` script, and the
+# real ``epydoc`` package.  So remove ``sys.path[0]``, which contains the
+# directory of the script.
+import sys, os.path
+script_path = os.path.abspath(sys.path[0])
+sys.path = [p for p in sys.path if os.path.abspath(p) != script_path]
+
+import epydoc.docwriter.xlink as xlink
+
+from docutils.core import publish_cmdline, default_description
+description = ('Generates (X)HTML documents with API documentation links.  '
+                + default_description)
+publish_cmdline(reader=xlink.ApiLinkReader(), writer_name='html',
+                description=description)
diff --git a/scripts/epydoc b/scripts/epydoc
new file mode 100755
index 0000000..bc7a7b2
--- /dev/null
+++ b/scripts/epydoc
@@ -0,0 +1,14 @@
+#!/usr/bin/env python
+#
+# Call the command line interface for Epydoc.
+#
+
+# Make sure that we don't get confused between an epydoc.py script and
+# the real epydoc package.
+import sys, os.path
+if os.path.exists(os.path.join(sys.path[0], 'epydoc.py')):
+    del sys.path[0]
+
+from epydoc.cli import cli
+cli()
+
diff --git a/scripts/epydoc.py b/scripts/epydoc.py
new file mode 100644
index 0000000..d33fc65
--- /dev/null
+++ b/scripts/epydoc.py
@@ -0,0 +1,17 @@
+#!/usr/bin/env python
+#
+# Call the command line interface for Epydoc.
+#
+
+# We have to do some path magic to prevent Python from getting
+# confused about the difference between this epydoc module, and the
+# real epydoc package.  So remove sys.path[0], which contains the
+# directory of the script.
+import sys, os.path
+script_path = os.path.abspath(sys.path[0])
+sys.path = [p for p in sys.path if
+            os.path.abspath(p) != script_path]
+
+from epydoc.cli import cli
+cli()
+
diff --git a/scripts/epydoc.pyc b/scripts/epydoc.pyc
new file mode 100644
index 0000000..d66f73a
Binary files /dev/null and b/scripts/epydoc.pyc differ
diff --git a/scripts/epydoc.pyw b/scripts/epydoc.pyw
new file mode 100644
index 0000000..8842475
--- /dev/null
+++ b/scripts/epydoc.pyw
@@ -0,0 +1,17 @@
+#!/usr/bin/env python
+#
+# Call the graphical interface for Epydoc.
+#
+
+# We have to do some path magic to prevent Python from getting
+# confused about the difference between this epydoc module, and the
+# real epydoc package.  So sys.path[0], which contains the directory
+# of the script.
+import sys, os.path
+script_path = os.path.abspath(sys.path[0])
+sys.path = [p for p in sys.path if
+            os.path.abspath(p) != script_path]
+
+from epydoc.gui import gui
+gui()
+
diff --git a/scripts/epydocgui b/scripts/epydocgui
new file mode 100644
index 0000000..9af8f15
--- /dev/null
+++ b/scripts/epydocgui
@@ -0,0 +1,7 @@
+#!/usr/bin/env python
+#
+# Call the graphical interface for Epydoc.
+#
+
+from epydoc.gui import gui
+gui()
diff --git a/setup.py b/setup.py
new file mode 100755
index 0000000..c72b186
--- /dev/null
+++ b/setup.py
@@ -0,0 +1,33 @@
+#! /usr/bin/env python
+#
+# Edward Loper's API Documentation Generation Tool
+#
+# Created [05/27/01 09:04 PM]
+# Edward Loper
+#
+
+from distutils.core import setup
+import re, sys, epydoc
+
+VERSION = str(epydoc.__version__)
+(AUTHOR, EMAIL) = re.match('^(.*?)\s*<(.*)>$', epydoc.__author__).groups()
+URL = epydoc.__url__
+LICENSE = epydoc.__license__
+
+if '--format=wininst' in sys.argv:
+    SCRIPTS = ['scripts/epydoc.pyw', 'scripts/epydoc.py']
+else:
+    SCRIPTS = ['scripts/epydoc', 'scripts/epydocgui']
+
+SCRIPTS.append('scripts/apirst2html.py')
+
+setup(name="epydoc",
+      description="Edward Loper's API Documentation Generation Tool",
+      version=VERSION,
+      author=AUTHOR,
+      author_email=EMAIL,
+      license=LICENSE,
+      url=URL,
+      scripts=SCRIPTS,
+      packages=['epydoc', 'epydoc.markup', 'epydoc.test', 'epydoc.docwriter'])
+

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/reproducible/epydoc.git



More information about the Reproducible-commits mailing list